diff --git a/.obsidian/plugins/dataview/main.js b/.obsidian/plugins/dataview/main.js index fc88973..8207a45 100644 --- a/.obsidian/plugins/dataview/main.js +++ b/.obsidian/plugins/dataview/main.js @@ -9330,6 +9330,10 @@ function parseFrontmatter(value) { } return result; } + else if (value instanceof Date) { + let dateParse = DateTime.fromJSDate(value); + return dateParse; + } else { let object = value; let result = {}; @@ -12390,7 +12394,7 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) { }; } -var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gdGhlc2UgYXJlbid0IHJlYWxseSBwcml2YXRlLCBidXQgbm9yIGFyZSB0aGV5IHJlYWxseSB1c2VmdWwgdG8gZG9jdW1lbnQKCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBMdXhvbkVycm9yIGV4dGVuZHMgRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3IgewogICAgY29uc3RydWN0b3IocmVhc29uKSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHsKICAgIGNvbnN0cnVjdG9yKHJlYXNvbikgewogICAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24pIHsKICAgICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3Rvcih1bml0KSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIHVuaXQgJHt1bml0fWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBab25lSXNBYnN0cmFjdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgc3VwZXIoIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3MiKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNvbnN0IG4gPSAibnVtZXJpYyIsCiAgICBzID0gInNob3J0IiwKICAgIGwgPSAibG9uZyI7CgogIGNvbnN0IERBVEVfU0hPUlQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IG4sCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRURfV0lUSF9XRUVLREFZID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBzLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogcywKICB9OwoKICBjb25zdCBEQVRFX0ZVTEwgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IGwsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9IVUdFID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICB9OwoKICBjb25zdCBUSU1FX1NJTVBMRSA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgdGltZVpvbmVOYW1lOiBzLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgY29uc3QgVElNRV8yNF9TSU1QTEUgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICBob3VyQ3ljbGU6ICJoMjMiLAogIH07CgogIGNvbnN0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogbCwKICB9OwoKICBjb25zdCBEQVRFVElNRV9TSE9SVCA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbiwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBuLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHNlY29uZDogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICB3ZWVrZGF5OiBzLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IHMsCiAgfTsKCiAgY29uc3QgREFURVRJTUVfSFVHRSA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIHdlZWtkYXk6IGwsCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgdGltZVpvbmVOYW1lOiBsLAogIH07CgogIGNvbnN0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgLyoqCiAgICogQGludGVyZmFjZQogICAqLwogIGNsYXNzIFpvbmUgewogICAgLyoqCiAgICAgKiBUaGUgdHlwZSBvZiB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB0eXBlKCkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG9mZnNldCBpcyBrbm93biB0byBiZSBmaXhlZCBmb3IgdGhlIHdob2xlIHllYXIuCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmZvcm1hdCAtIFdoYXQgc3R5bGUgb2Ygb2Zmc2V0IHRvIHJldHVybi4gQWNjZXB0cyAnbG9uZycgb3IgJ3Nob3J0Jy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIG9mZnNldE5hbWUodHMsIG9wdHMpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBvZmZzZXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHkKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC4KICAgICAqIEBhYnN0cmFjdAogICAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBvZmZzZXQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgZXF1YWwgdG8gYW5vdGhlciB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7Wm9uZX0gb3RoZXJab25lIC0gdGhlIHpvbmUgdG8gY29tcGFyZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyWm9uZSkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIHZhbGlkLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uJDEgPSBudWxsOwoKICAvKioKICAgKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGxvY2FsIHpvbmUKICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24kMSA9PT0gbnVsbCkgewogICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gInN5c3RlbSI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVW5pdmVyc2FsKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkgewogICAgICByZXR1cm4gcGFyc2Vab25lSW5mbyh0cywgZm9ybWF0LCBsb2NhbGUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHJldHVybiAtbmV3IERhdGUodHMpLmdldFRpbWV6b25lT2Zmc2V0KCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAic3lzdGVtIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgbGV0IGR0ZkNhY2hlID0ge307CiAgZnVuY3Rpb24gbWFrZURURih6b25lKSB7CiAgICBpZiAoIWR0ZkNhY2hlW3pvbmVdKSB7CiAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgIGhvdXIxMjogZmFsc2UsCiAgICAgICAgdGltZVpvbmU6IHpvbmUsCiAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgZGF5OiAiMi1kaWdpdCIsCiAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgIG1pbnV0ZTogIjItZGlnaXQiLAogICAgICAgIHNlY29uZDogIjItZGlnaXQiLAogICAgICAgIGVyYTogInNob3J0IiwKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgfQoKICBjb25zdCB0eXBlVG9Qb3MgPSB7CiAgICB5ZWFyOiAwLAogICAgbW9udGg6IDEsCiAgICBkYXk6IDIsCiAgICBlcmE6IDMsCiAgICBob3VyOiA0LAogICAgbWludXRlOiA1LAogICAgc2Vjb25kOiA2LAogIH07CgogIGZ1bmN0aW9uIGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSkgewogICAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cdTIwMEUvZywgIiIpLAogICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSAoQUR8QkMpLD8gKFxkKyk6KFxkKyk6KFxkKykvLmV4ZWMoZm9ybWF0dGVkKSwKICAgICAgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZmFkT3JCYywgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkOwogICAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07CiAgfQoKICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpOwogICAgY29uc3QgZmlsbGVkID0gW107CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV07CiAgICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgIGlmICh0eXBlID09PSAiZXJhIikgewogICAgICAgIGZpbGxlZFtwb3NdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHsKICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaWxsZWQ7CiAgfQoKICBsZXQgaWFuYVpvbmVDYWNoZSA9IHt9OwogIC8qKgogICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSUFOQVpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWUKICAgICAqIEByZXR1cm4ge0lBTkFab25lfQogICAgICovCiAgICBzdGF0aWMgY3JlYXRlKG5hbWUpIHsKICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZVtuYW1lXSA9IG5ldyBJQU5BWm9uZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gaWFuYVpvbmVDYWNoZVtuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7CiAgICAgIGlhbmFab25lQ2FjaGUgPSB7fTsKICAgICAgZHRmQ2FjaGUgPSB7fTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0cmluZyB0byBjaGVjayB2YWxpZGl0eSBvbgogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiQW1lcmljYS9OZXdfWW9yayIpIC8vPT4gdHJ1ZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiU3BvcnR+fmJsb3JwIikgLy89PiBmYWxzZQogICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSBmb3Igc29tZSB2YWxpZCBJQU5BIG5hbWVzLiBVc2UgaXNWYWxpZFpvbmUgaW5zdGVhZC4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZFpvbmUocyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHN0cmluZyBpZGVudGlmaWVzIGEgcmVhbCB6b25lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKCJBbWVyaWNhL05ld19Zb3JrIikgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZSgiRmFudGFzaWEvQ2FzdGxlIikgLy89PiBmYWxzZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkWm9uZSh6b25lKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIsIHsgdGltZVpvbmU6IHpvbmUgfSkuZm9ybWF0KCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy56b25lTmFtZSA9IG5hbWU7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpYW5hIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7CiAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSwgdGhpcy5uYW1lKTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCh0cykgewogICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpOwoKICAgICAgaWYgKGlzTmFOKGRhdGUpKSByZXR1cm4gTmFOOwoKICAgICAgY29uc3QgZHRmID0gbWFrZURURih0aGlzLm5hbWUpOwogICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXksIGFkT3JCYywgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHMKICAgICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkKICAgICAgICA6IGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSk7CgogICAgICBpZiAoYWRPckJjID09PSAiQkMiKSB7CiAgICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7CiAgICAgIH0KCiAgICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0CiAgICAgIGNvbnN0IGFkanVzdGVkSG91ciA9IGhvdXIgPT09IDI0ID8gMCA6IGhvdXI7CgogICAgICBjb25zdCBhc1VUQyA9IG9ialRvTG9jYWxUUyh7CiAgICAgICAgeWVhciwKICAgICAgICBtb250aCwKICAgICAgICBkYXksCiAgICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLAogICAgICAgIG1pbnV0ZSwKICAgICAgICBzZWNvbmQsCiAgICAgICAgbWlsbGlzZWNvbmQ6IDAsCiAgICAgIH0pOwoKICAgICAgbGV0IGFzVFMgPSArZGF0ZTsKICAgICAgY29uc3Qgb3ZlciA9IGFzVFMgJSAxMDAwOwogICAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjsKICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiaWFuYSIgJiYgb3RoZXJab25lLm5hbWUgPT09IHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0aGlzLnZhbGlkOwogICAgfQogIH0KCiAgLy8gdG9kbyAtIHJlbWFwIGNhY2hpbmcKCiAgbGV0IGludGxMRkNhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkTEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBkdGYgPSBpbnRsTEZDYWNoZVtrZXldOwogICAgaWYgKCFkdGYpIHsKICAgICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTEZDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsRFRDYWNoZSA9IHt9OwogIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkgewogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgbGV0IGR0ZiA9IGludGxEVENhY2hlW2tleV07CiAgICBpZiAoIWR0ZikgewogICAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsRFRDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsTnVtQ2FjaGUgPSB7fTsKICBmdW5jdGlvbiBnZXRDYWNoZWRJTkYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBpbmYgPSBpbnRsTnVtQ2FjaGVba2V5XTsKICAgIGlmICghaW5mKSB7CiAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTnVtQ2FjaGVba2V5XSA9IGluZjsKICAgIH0KICAgIHJldHVybiBpbmY7CiAgfQoKICBsZXQgaW50bFJlbENhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkUlRGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7CiAgICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9ucwogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgY2FjaGVLZXlPcHRzXSk7CiAgICBsZXQgaW5mID0gaW50bFJlbENhY2hlW2tleV07CiAgICBpZiAoIWluZikgewogICAgICBpbmYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQobG9jU3RyaW5nLCBvcHRzKTsKICAgICAgaW50bFJlbENhY2hlW2tleV0gPSBpbmY7CiAgICB9CiAgICByZXR1cm4gaW5mOwogIH0KCiAgbGV0IHN5c0xvY2FsZUNhY2hlID0gbnVsbDsKICBmdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7CiAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfSBlbHNlIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VMb2NhbGVTdHJpbmcobG9jYWxlU3RyKSB7CiAgICAvLyBJIHJlYWxseSB3YW50IHRvIGF2b2lkIHdyaXRpbmcgYSBCQ1AgNDcgcGFyc2VyCiAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgIC8vIEluc3RlYWQsIHdlJ2xsIGRvIHRoaXM6CgogICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgLy8gYikgaWYgaXQgZG9lcywgdXNlIEludGwgdG8gcmVzb2x2ZSBldmVyeXRoaW5nCiAgICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXUKCiAgICAvLyBwcml2YXRlIHN1YnRhZ3MgYW5kIHVuaWNvZGUgc3VidGFncyBoYXZlIG9yZGVyaW5nIHJlcXVpcmVtZW50cywKICAgIC8vIGFuZCB3ZSdyZSBub3QgcHJvcGVybHkgcGFyc2luZyB0aGlzLCBzbyBqdXN0IHN0cmlwIG91dCB0aGUKICAgIC8vIHByaXZhdGUgb25lcyBpZiB0aGV5IGV4aXN0LgogICAgY29uc3QgeEluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoIi14LSIpOwogICAgaWYgKHhJbmRleCAhPT0gLTEpIHsKICAgICAgbG9jYWxlU3RyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB4SW5kZXgpOwogICAgfQoKICAgIGNvbnN0IHVJbmRleCA9IGxvY2FsZVN0ci5pbmRleE9mKCItdS0iKTsKICAgIGlmICh1SW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgIH0gZWxzZSB7CiAgICAgIGxldCBvcHRpb25zOwogICAgICBsZXQgc2VsZWN0ZWRTdHI7CiAgICAgIHRyeSB7CiAgICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gbG9jYWxlU3RyOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gc21hbGxlcjsKICAgICAgfQoKICAgICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zOwogICAgICByZXR1cm4gW3NlbGVjdGVkU3RyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICBpZiAob3V0cHV0Q2FsZW5kYXIgfHwgbnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgIGlmICghbG9jYWxlU3RyLmluY2x1ZGVzKCItdS0iKSkgewogICAgICAgIGxvY2FsZVN0ciArPSAiLXUiOwogICAgICB9CgogICAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1jYS0ke291dHB1dENhbGVuZGFyfWA7CiAgICAgIH0KCiAgICAgIGlmIChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gOwogICAgICB9CiAgICAgIHJldHVybiBsb2NhbGVTdHI7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMTYsIGksIDEpOwogICAgICBtcy5wdXNoKGYoZHQpKTsKICAgIH0KICAgIHJldHVybiBtczsKICB9CgogIGZ1bmN0aW9uIG1hcFdlZWtkYXlzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHsKICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzICsgaSk7CiAgICAgIG1zLnB1c2goZihkdCkpOwogICAgfQogICAgcmV0dXJuIG1zOwogIH0KCiAgZnVuY3Rpb24gbGlzdFN0dWZmKGxvYywgbGVuZ3RoLCBkZWZhdWx0T0ssIGVuZ2xpc2hGbiwgaW50bEZuKSB7CiAgICBjb25zdCBtb2RlID0gbG9jLmxpc3RpbmdNb2RlKGRlZmF1bHRPSyk7CgogICAgaWYgKG1vZGUgPT09ICJlcnJvciIpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICJlbiIpIHsKICAgICAgcmV0dXJuIGVuZ2xpc2hGbihsZW5ndGgpOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGludGxGbihsZW5ndGgpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gc3VwcG9ydHNGYXN0TnVtYmVycyhsb2MpIHsKICAgIGlmIChsb2MubnVtYmVyaW5nU3lzdGVtICYmIGxvYy5udW1iZXJpbmdTeXN0ZW0gIT09ICJsYXRuIikgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gKAogICAgICAgIGxvYy5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIiB8fAogICAgICAgICFsb2MubG9jYWxlIHx8CiAgICAgICAgbG9jLmxvY2FsZS5zdGFydHNXaXRoKCJlbiIpIHx8CiAgICAgICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jLmludGwpLnJlc29sdmVkT3B0aW9ucygpLm51bWJlcmluZ1N5c3RlbSA9PT0gImxhdG4iCiAgICAgICk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBQb2x5TnVtYmVyRm9ybWF0dGVyIHsKICAgIGNvbnN0cnVjdG9yKGludGwsIGZvcmNlU2ltcGxlLCBvcHRzKSB7CiAgICAgIHRoaXMucGFkVG8gPSBvcHRzLnBhZFRvIHx8IDA7CiAgICAgIHRoaXMuZmxvb3IgPSBvcHRzLmZsb29yIHx8IGZhbHNlOwoKICAgICAgY29uc3QgeyBwYWRUbywgZmxvb3IsIC4uLm90aGVyT3B0cyB9ID0gb3B0czsKCiAgICAgIGlmICghZm9yY2VTaW1wbGUgfHwgT2JqZWN0LmtleXMob3RoZXJPcHRzKS5sZW5ndGggPiAwKSB7CiAgICAgICAgY29uc3QgaW50bE9wdHMgPSB7IHVzZUdyb3VwaW5nOiBmYWxzZSwgLi4ub3B0cyB9OwogICAgICAgIGlmIChvcHRzLnBhZFRvID4gMCkgaW50bE9wdHMubWluaW11bUludGVnZXJEaWdpdHMgPSBvcHRzLnBhZFRvOwogICAgICAgIHRoaXMuaW5mID0gZ2V0Q2FjaGVkSU5GKGludGwsIGludGxPcHRzKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdChpKSB7CiAgICAgIGlmICh0aGlzLmluZikgewogICAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiBpOwogICAgICAgIHJldHVybiB0aGlzLmluZi5mb3JtYXQoZml4ZWQpOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIHRvIG1hdGNoIHRoZSBicm93c2VyJ3MgbnVtYmVyZm9ybWF0dGVyIGRlZmF1bHRzCiAgICAgICAgY29uc3QgZml4ZWQgPSB0aGlzLmZsb29yID8gTWF0aC5mbG9vcihpKSA6IHJvdW5kVG8oaSwgMyk7CiAgICAgICAgcmV0dXJuIHBhZFN0YXJ0KGZpeGVkLCB0aGlzLnBhZFRvKTsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgUG9seURhdGVGb3JtYXR0ZXIgewogICAgY29uc3RydWN0b3IoZHQsIGludGwsIG9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0gb3B0czsKCiAgICAgIGxldCB6ID0gdW5kZWZpbmVkOwogICAgICBpZiAoZHQuem9uZS5pc1VuaXZlcnNhbCkgewogICAgICAgIC8vIFVUQy04IG9yIEV0Yy9VVEMtOCBhcmUgbm90IHBhcnQgb2YgdHpkYXRhLCBvbmx5IEV0Yy9HTVQrOCBhbmQgdGhlIGxpa2UuCiAgICAgICAgLy8gVGhhdCBpcyB3aHkgZml4ZWQtb2Zmc2V0IFRaIGlzIHNldCB0byB0aGF0IHVubGVzcyBpdCBpczoKICAgICAgICAvLyAxLiBSZXByZXNlbnRpbmcgb2Zmc2V0IDAgd2hlbiBVVEMgaXMgdXNlZCB0byBtYWludGFpbiBwcmV2aW91cyBiZWhhdmlvciBhbmQgZG9lcyBub3QgYmVjb21lIEdNVC4KICAgICAgICAvLyAyLiBVbnN1cHBvcnRlZCBieSB0aGUgYnJvd3NlcjoKICAgICAgICAvLyAgICAtIHNvbWUgZG8gbm90IHN1cHBvcnQgRXRjLwogICAgICAgIC8vICAgIC0gPCBFdGMvR01ULTE0LCA+IEV0Yy9HTVQrMTIsIGFuZCAzMC1taW51dGUgb3IgNDUtbWludXRlIG9mZnNldHMgYXJlIG5vdCBwYXJ0IG9mIHR6ZGF0YQogICAgICAgIGNvbnN0IGdtdE9mZnNldCA9IC0xICogKGR0Lm9mZnNldCAvIDYwKTsKICAgICAgICBjb25zdCBvZmZzZXRaID0gZ210T2Zmc2V0ID49IDAgPyBgRXRjL0dNVCske2dtdE9mZnNldH1gIDogYEV0Yy9HTVQke2dtdE9mZnNldH1gOwogICAgICAgIGlmIChkdC5vZmZzZXQgIT09IDAgJiYgSUFOQVpvbmUuY3JlYXRlKG9mZnNldFopLnZhbGlkKSB7CiAgICAgICAgICB6ID0gb2Zmc2V0WjsKICAgICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gTm90IGFsbCBmaXhlZC1vZmZzZXQgem9uZXMgbGlrZSBFdGMvKzQ6MzAgYXJlIHByZXNlbnQgaW4gdHpkYXRhLgogICAgICAgICAgLy8gU28gd2UgaGF2ZSB0byBtYWtlIGRvLiBUd28gY2FzZXM6CiAgICAgICAgICAvLyAxLiBUaGUgZm9ybWF0IG9wdGlvbnMgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBXZSBjYW4ndCBkbyB0aGF0LCBzbyB0aGUgYmVzdAogICAgICAgICAgLy8gd2UgY2FuIGRvIGlzIGZvcm1hdCB0aGUgZGF0ZSBpbiBVVEMuCiAgICAgICAgICAvLyAyLiBUaGUgZm9ybWF0IG9wdGlvbnMgZG9uJ3QgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBUaGVuIHdlIGNhbiBhZGp1c3QgdGhlbQogICAgICAgICAgLy8gdGhlIHRpbWUgYW5kIHRlbGwgdGhlIGZvcm1hdHRlciB0byBzaG93IGl0IHRvIHVzIGluIFVUQywgc28gdGhhdCB0aGUgdGltZSBpcyByaWdodAogICAgICAgICAgLy8gYW5kIHRoZSBiYWQgem9uZSBkb2Vzbid0IHNob3cgdXAuCiAgICAgICAgICB6ID0gIlVUQyI7CiAgICAgICAgICBpZiAob3B0cy50aW1lWm9uZU5hbWUpIHsKICAgICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5kdCA9IGR0Lm9mZnNldCA9PT0gMCA/IGR0IDogRGF0ZVRpbWUuZnJvbU1pbGxpcyhkdC50cyArIGR0Lm9mZnNldCAqIDYwICogMTAwMCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGR0LnpvbmUudHlwZSA9PT0gInN5c3RlbSIpIHsKICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgIHogPSBkdC56b25lLm5hbWU7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludGxPcHRzID0geyAuLi50aGlzLm9wdHMgfTsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSBpbnRsT3B0cy50aW1lWm9uZSB8fCB6OwogICAgICB0aGlzLmR0ZiA9IGdldENhY2hlZERURihpbnRsLCBpbnRsT3B0cyk7CiAgICB9CgogICAgZm9ybWF0KCkgewogICAgICByZXR1cm4gdGhpcy5kdGYuZm9ybWF0KHRoaXMuZHQudG9KU0RhdGUoKSk7CiAgICB9CgogICAgZm9ybWF0VG9QYXJ0cygpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdFRvUGFydHModGhpcy5kdC50b0pTRGF0ZSgpKTsKICAgIH0KCiAgICByZXNvbHZlZE9wdGlvbnMoKSB7CiAgICAgIHJldHVybiB0aGlzLmR0Zi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgUG9seVJlbEZvcm1hdHRlciB7CiAgICBjb25zdHJ1Y3RvcihpbnRsLCBpc0VuZ2xpc2gsIG9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0geyBzdHlsZTogImxvbmciLCAuLi5vcHRzIH07CiAgICAgIGlmICghaXNFbmdsaXNoICYmIGhhc1JlbGF0aXZlKCkpIHsKICAgICAgICB0aGlzLnJ0ZiA9IGdldENhY2hlZFJURihpbnRsLCBvcHRzKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdChjb3VudCwgdW5pdCkgewogICAgICBpZiAodGhpcy5ydGYpIHsKICAgICAgICByZXR1cm4gdGhpcy5ydGYuZm9ybWF0KGNvdW50LCB1bml0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCB0aGlzLm9wdHMubnVtZXJpYywgdGhpcy5vcHRzLnN0eWxlICE9PSAibG9uZyIpOwogICAgICB9CiAgICB9CgogICAgZm9ybWF0VG9QYXJ0cyhjb3VudCwgdW5pdCkgewogICAgICBpZiAodGhpcy5ydGYpIHsKICAgICAgICByZXR1cm4gdGhpcy5ydGYuZm9ybWF0VG9QYXJ0cyhjb3VudCwgdW5pdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBMb2NhbGUgewogICAgc3RhdGljIGZyb21PcHRzKG9wdHMpIHsKICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUob3B0cy5sb2NhbGUsIG9wdHMubnVtYmVyaW5nU3lzdGVtLCBvcHRzLm91dHB1dENhbGVuZGFyLCBvcHRzLmRlZmF1bHRUb0VOKTsKICAgIH0KCiAgICBzdGF0aWMgY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciwgZGVmYXVsdFRvRU4gPSBmYWxzZSkgewogICAgICBjb25zdCBzcGVjaWZpZWRMb2NhbGUgPSBsb2NhbGUgfHwgU2V0dGluZ3MuZGVmYXVsdExvY2FsZTsKICAgICAgLy8gdGhlIHN5c3RlbSBsb2NhbGUgaXMgdXNlZnVsIGZvciBodW1hbiByZWFkYWJsZSBzdHJpbmdzIGJ1dCBhbm5veWluZyBmb3IgcGFyc2luZy9mb3JtYXR0aW5nIGtub3duIGZvcm1hdHMKICAgICAgY29uc3QgbG9jYWxlUiA9IHNwZWNpZmllZExvY2FsZSB8fCAoZGVmYXVsdFRvRU4gPyAiZW4tVVMiIDogc3lzdGVtTG9jYWxlKCkpOwogICAgICBjb25zdCBudW1iZXJpbmdTeXN0ZW1SID0gbnVtYmVyaW5nU3lzdGVtIHx8IFNldHRpbmdzLmRlZmF1bHROdW1iZXJpbmdTeXN0ZW07CiAgICAgIGNvbnN0IG91dHB1dENhbGVuZGFyUiA9IG91dHB1dENhbGVuZGFyIHx8IFNldHRpbmdzLmRlZmF1bHRPdXRwdXRDYWxlbmRhcjsKICAgICAgcmV0dXJuIG5ldyBMb2NhbGUobG9jYWxlUiwgbnVtYmVyaW5nU3lzdGVtUiwgb3V0cHV0Q2FsZW5kYXJSLCBzcGVjaWZpZWRMb2NhbGUpOwogICAgfQoKICAgIHN0YXRpYyByZXNldENhY2hlKCkgewogICAgICBzeXNMb2NhbGVDYWNoZSA9IG51bGw7CiAgICAgIGludGxEVENhY2hlID0ge307CiAgICAgIGludGxOdW1DYWNoZSA9IHt9OwogICAgICBpbnRsUmVsQ2FjaGUgPSB7fTsKICAgIH0KCiAgICBzdGF0aWMgZnJvbU9iamVjdCh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciB9ID0ge30pIHsKICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKTsKICAgIH0KCiAgICBjb25zdHJ1Y3Rvcihsb2NhbGUsIG51bWJlcmluZywgb3V0cHV0Q2FsZW5kYXIsIHNwZWNpZmllZExvY2FsZSkgewogICAgICBjb25zdCBbcGFyc2VkTG9jYWxlLCBwYXJzZWROdW1iZXJpbmdTeXN0ZW0sIHBhcnNlZE91dHB1dENhbGVuZGFyXSA9IHBhcnNlTG9jYWxlU3RyaW5nKGxvY2FsZSk7CgogICAgICB0aGlzLmxvY2FsZSA9IHBhcnNlZExvY2FsZTsKICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPSBudW1iZXJpbmcgfHwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtIHx8IG51bGw7CiAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPSBvdXRwdXRDYWxlbmRhciB8fCBwYXJzZWRPdXRwdXRDYWxlbmRhciB8fCBudWxsOwogICAgICB0aGlzLmludGwgPSBpbnRsQ29uZmlnU3RyaW5nKHRoaXMubG9jYWxlLCB0aGlzLm51bWJlcmluZ1N5c3RlbSwgdGhpcy5vdXRwdXRDYWxlbmRhcik7CgogICAgICB0aGlzLndlZWtkYXlzQ2FjaGUgPSB7IGZvcm1hdDoge30sIHN0YW5kYWxvbmU6IHt9IH07CiAgICAgIHRoaXMubW9udGhzQ2FjaGUgPSB7IGZvcm1hdDoge30sIHN0YW5kYWxvbmU6IHt9IH07CiAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IG51bGw7CiAgICAgIHRoaXMuZXJhQ2FjaGUgPSB7fTsKCiAgICAgIHRoaXMuc3BlY2lmaWVkTG9jYWxlID0gc3BlY2lmaWVkTG9jYWxlOwogICAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gbnVsbDsKICAgIH0KCiAgICBnZXQgZmFzdE51bWJlcnMoKSB7CiAgICAgIGlmICh0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID09IG51bGwpIHsKICAgICAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gc3VwcG9ydHNGYXN0TnVtYmVycyh0aGlzKTsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMuZmFzdE51bWJlcnNDYWNoZWQ7CiAgICB9CgogICAgbGlzdGluZ01vZGUoKSB7CiAgICAgIGNvbnN0IGlzQWN0dWFsbHlFbiA9IHRoaXMuaXNFbmdsaXNoKCk7CiAgICAgIGNvbnN0IGhhc05vV2VpcmRuZXNzID0KICAgICAgICAodGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG51bGwgfHwgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIikgJiYKICAgICAgICAodGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gbnVsbCB8fCB0aGlzLm91dHB1dENhbGVuZGFyID09PSAiZ3JlZ29yeSIpOwogICAgICByZXR1cm4gaXNBY3R1YWxseUVuICYmIGhhc05vV2VpcmRuZXNzID8gImVuIiA6ICJpbnRsIjsKICAgIH0KCiAgICBjbG9uZShhbHRzKSB7CiAgICAgIGlmICghYWx0cyB8fCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhbHRzKS5sZW5ndGggPT09IDApIHsKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZSgKICAgICAgICAgIGFsdHMubG9jYWxlIHx8IHRoaXMuc3BlY2lmaWVkTG9jYWxlLAogICAgICAgICAgYWx0cy5udW1iZXJpbmdTeXN0ZW0gfHwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICBhbHRzLm91dHB1dENhbGVuZGFyIHx8IHRoaXMub3V0cHV0Q2FsZW5kYXIsCiAgICAgICAgICBhbHRzLmRlZmF1bHRUb0VOIHx8IGZhbHNlCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIHJlZGVmYXVsdFRvRU4oYWx0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmNsb25lKHsgLi4uYWx0cywgZGVmYXVsdFRvRU46IHRydWUgfSk7CiAgICB9CgogICAgcmVkZWZhdWx0VG9TeXN0ZW0oYWx0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmNsb25lKHsgLi4uYWx0cywgZGVmYXVsdFRvRU46IGZhbHNlIH0pOwogICAgfQoKICAgIG1vbnRocyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlLCBkZWZhdWx0T0sgPSB0cnVlKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBkZWZhdWx0T0ssIG1vbnRocywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQgPyB7IG1vbnRoOiBsZW5ndGgsIGRheTogIm51bWVyaWMiIH0gOiB7IG1vbnRoOiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0pIHsKICAgICAgICAgIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdID0gbWFwTW9udGhzKChkdCkgPT4gdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAibW9udGgiKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgd2Vla2RheXMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSwgZGVmYXVsdE9LID0gdHJ1ZSkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgZGVmYXVsdE9LLCB3ZWVrZGF5cywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQKICAgICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogIm51bWVyaWMiLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9CiAgICAgICAgICAgIDogeyB3ZWVrZGF5OiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT4KICAgICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAid2Vla2RheSIpCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgbWVyaWRpZW1zKGRlZmF1bHRPSyA9IHRydWUpIHsKICAgICAgcmV0dXJuIGxpc3RTdHVmZigKICAgICAgICB0aGlzLAogICAgICAgIHVuZGVmaW5lZCwKICAgICAgICBkZWZhdWx0T0ssCiAgICAgICAgKCkgPT4gbWVyaWRpZW1zLAogICAgICAgICgpID0+IHsKICAgICAgICAgIC8vIEluIHRoZW9yeSB0aGVyZSBjb3VsZCBiZSBhcmliaXRyYXJ5IGRheSBwZXJpb2RzLiBXZSdyZSBnb25uYSBhc3N1bWUgdGhlcmUgYXJlIGV4YWN0bHkgdHdvCiAgICAgICAgICAvLyBmb3IgQU0gYW5kIFBNLiBUaGlzIGlzIHByb2JhYmx5IHdyb25nLCBidXQgaXQncyBtYWtlcyBwYXJzaW5nIHdheSBlYXNpZXIuCiAgICAgICAgICBpZiAoIXRoaXMubWVyaWRpZW1DYWNoZSkgewogICAgICAgICAgICBjb25zdCBpbnRsID0geyBob3VyOiAibnVtZXJpYyIsIGhvdXJDeWNsZTogImgxMiIgfTsKICAgICAgICAgICAgdGhpcy5tZXJpZGllbUNhY2hlID0gW0RhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMsIDkpLCBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCAxOSldLm1hcCgKICAgICAgICAgICAgICAoZHQpID0+IHRoaXMuZXh0cmFjdChkdCwgaW50bCwgImRheXBlcmlvZCIpCiAgICAgICAgICAgICk7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIHRoaXMubWVyaWRpZW1DYWNoZTsKICAgICAgICB9CiAgICAgICk7CiAgICB9CgogICAgZXJhcyhsZW5ndGgsIGRlZmF1bHRPSyA9IHRydWUpIHsKICAgICAgcmV0dXJuIGxpc3RTdHVmZih0aGlzLCBsZW5ndGgsIGRlZmF1bHRPSywgZXJhcywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSB7IGVyYTogbGVuZ3RoIH07CgogICAgICAgIC8vIFRoaXMgaXMgcHJvYmxlbWF0aWMuIERpZmZlcmVudCBjYWxlbmRhcnMgYXJlIGdvaW5nIHRvIGRlZmluZSBlcmFzIHRvdGFsbHkgZGlmZmVyZW50bHkuIFdoYXQgSSBuZWVkIGlzIHRoZSBtaW5pbXVtIHNldCBvZiBkYXRlcwogICAgICAgIC8vIHRvIGRlZmluaXRlbHkgZW51bWVyYXRlIHRoZW0uCiAgICAgICAgaWYgKCF0aGlzLmVyYUNhY2hlW2xlbmd0aF0pIHsKICAgICAgICAgIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSA9IFtEYXRlVGltZS51dGMoLTQwLCAxLCAxKSwgRGF0ZVRpbWUudXRjKDIwMTcsIDEsIDEpXS5tYXAoKGR0KSA9PgogICAgICAgICAgICB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJlcmEiKQogICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLmVyYUNhY2hlW2xlbmd0aF07CiAgICAgIH0pOwogICAgfQoKICAgIGV4dHJhY3QoZHQsIGludGxPcHRzLCBmaWVsZCkgewogICAgICBjb25zdCBkZiA9IHRoaXMuZHRGb3JtYXR0ZXIoZHQsIGludGxPcHRzKSwKICAgICAgICByZXN1bHRzID0gZGYuZm9ybWF0VG9QYXJ0cygpLAogICAgICAgIG1hdGNoaW5nID0gcmVzdWx0cy5maW5kKChtKSA9PiBtLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gZmllbGQpOwogICAgICByZXR1cm4gbWF0Y2hpbmcgPyBtYXRjaGluZy52YWx1ZSA6IG51bGw7CiAgICB9CgogICAgbnVtYmVyRm9ybWF0dGVyKG9wdHMgPSB7fSkgewogICAgICAvLyB0aGlzIGZvcmNlc2ltcGxlIG9wdGlvbiBpcyBuZXZlciB1c2VkICh0aGUgb25seSBjYWxsZXIgc2hvcnQtY2lyY3VpdHMgb24gaXQsIGJ1dCBpdCBzZWVtcyBzYWZlciB0byBsZWF2ZSkKICAgICAgLy8gKGluIGNvbnRyYXN0LCB0aGUgcmVzdCBvZiB0aGUgY29uZGl0aW9uIGlzIHVzZWQgaGVhdmlseSkKICAgICAgcmV0dXJuIG5ldyBQb2x5TnVtYmVyRm9ybWF0dGVyKHRoaXMuaW50bCwgb3B0cy5mb3JjZVNpbXBsZSB8fCB0aGlzLmZhc3ROdW1iZXJzLCBvcHRzKTsKICAgIH0KCiAgICBkdEZvcm1hdHRlcihkdCwgaW50bE9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IFBvbHlEYXRlRm9ybWF0dGVyKGR0LCB0aGlzLmludGwsIGludGxPcHRzKTsKICAgIH0KCiAgICByZWxGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBuZXcgUG9seVJlbEZvcm1hdHRlcih0aGlzLmludGwsIHRoaXMuaXNFbmdsaXNoKCksIG9wdHMpOwogICAgfQoKICAgIGxpc3RGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBnZXRDYWNoZWRMRih0aGlzLmludGwsIG9wdHMpOwogICAgfQoKICAgIGlzRW5nbGlzaCgpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmxvY2FsZSA9PT0gImVuIiB8fAogICAgICAgIHRoaXMubG9jYWxlLnRvTG93ZXJDYXNlKCkgPT09ICJlbi11cyIgfHwKICAgICAgICBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmludGwpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZS5zdGFydHNXaXRoKCJlbi11cyIpCiAgICAgICk7CiAgICB9CgogICAgZXF1YWxzKG90aGVyKSB7CiAgICAgIHJldHVybiAoCiAgICAgICAgdGhpcy5sb2NhbGUgPT09IG90aGVyLmxvY2FsZSAmJgogICAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBvdGhlci5udW1iZXJpbmdTeXN0ZW0gJiYKICAgICAgICB0aGlzLm91dHB1dENhbGVuZGFyID09PSBvdGhlci5vdXRwdXRDYWxlbmRhcgogICAgICApOwogICAgfQogIH0KCiAgbGV0IHNpbmdsZXRvbiA9IG51bGw7CgogIC8qKgogICAqIEEgem9uZSB3aXRoIGEgZml4ZWQgb2Zmc2V0IChtZWFuaW5nIG5vIERTVCkKICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgKi8KICBjbGFzcyBGaXhlZE9mZnNldFpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogR2V0IGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIFVUQwogICAgICogQHJldHVybiB7Rml4ZWRPZmZzZXRab25lfQogICAgICovCiAgICBzdGF0aWMgZ2V0IHV0Y0luc3RhbmNlKCkgewogICAgICBpZiAoc2luZ2xldG9uID09PSBudWxsKSB7CiAgICAgICAgc2luZ2xldG9uID0gbmV3IEZpeGVkT2Zmc2V0Wm9uZSgwKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIGluc3RhbmNlIHdpdGggYSBzcGVjaWZpZWQgb2Zmc2V0CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0IC0gVGhlIG9mZnNldCBpbiBtaW51dGVzCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBpbnN0YW5jZShvZmZzZXQpIHsKICAgICAgcmV0dXJuIG9mZnNldCA9PT0gMCA/IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZSA6IG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBhbiBpbnN0YW5jZSBvZiBGaXhlZE9mZnNldFpvbmUgZnJvbSBhIFVUQyBvZmZzZXQgc3RyaW5nLCBsaWtlICJVVEMrNiIKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIG9mZnNldCBzdHJpbmcgdG8gcGFyc2UKICAgICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcigiVVRDKzYiKQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMrMDYiKQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMtNjowMCIpCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBwYXJzZVNwZWNpZmllcihzKSB7CiAgICAgIGlmIChzKSB7CiAgICAgICAgY29uc3QgciA9IHMubWF0Y2goL151dGMoPzooWystXVxkezEsMn0pKD86OihcZHsyfSkpPyk/JC9pKTsKICAgICAgICBpZiAocikgewogICAgICAgICAgcmV0dXJuIG5ldyBGaXhlZE9mZnNldFpvbmUoc2lnbmVkT2Zmc2V0KHJbMV0sIHJbMl0pKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgY29uc3RydWN0b3Iob2Zmc2V0KSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy5maXhlZCA9IG9mZnNldDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IHR5cGUoKSB7CiAgICAgIHJldHVybiAiZml4ZWQiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuZml4ZWQgPT09IDAgPyAiVVRDIiA6IGBVVEMke2Zvcm1hdE9mZnNldCh0aGlzLmZpeGVkLCAibmFycm93Iil9YDsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIGlmICh0aGlzLmZpeGVkID09PSAwKSB7CiAgICAgICAgcmV0dXJuICJFdGMvVVRDIjsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gYEV0Yy9HTVQke2Zvcm1hdE9mZnNldCgtdGhpcy5maXhlZCwgIm5hcnJvdyIpfWA7CiAgICAgIH0KICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLmZpeGVkLCBmb3JtYXQpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLmZpeGVkOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBlcXVhbHMob3RoZXJab25lKSB7CiAgICAgIHJldHVybiBvdGhlclpvbmUudHlwZSA9PT0gImZpeGVkIiAmJiBvdGhlclpvbmUuZml4ZWQgPT09IHRoaXMuZml4ZWQ7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIC8qKgogICAqIEEgem9uZSB0aGF0IGZhaWxlZCB0byBwYXJzZS4gWW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSW52YWxpZFpvbmUgZXh0ZW5kcyBab25lIHsKICAgIGNvbnN0cnVjdG9yKHpvbmVOYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiAgQHByaXZhdGUgKi8KICAgICAgdGhpcy56b25lTmFtZSA9IHpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpbnZhbGlkIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSgpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGZvcm1hdE9mZnNldCgpIHsKICAgICAgcmV0dXJuICIiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXQoKSB7CiAgICAgIHJldHVybiBOYU47CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscygpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gbm9ybWFsaXplWm9uZShpbnB1dCwgZGVmYXVsdFpvbmUpIHsKICAgIGlmIChpc1VuZGVmaW5lZChpbnB1dCkgfHwgaW5wdXQgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIGRlZmF1bHRab25lOwogICAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFpvbmUpIHsKICAgICAgcmV0dXJuIGlucHV0OwogICAgfSBlbHNlIGlmIChpc1N0cmluZyhpbnB1dCkpIHsKICAgICAgY29uc3QgbG93ZXJlZCA9IGlucHV0LnRvTG93ZXJDYXNlKCk7CiAgICAgIGlmIChsb3dlcmVkID09PSAiZGVmYXVsdCIpIHJldHVybiBkZWZhdWx0Wm9uZTsKICAgICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gImxvY2FsIiB8fCBsb3dlcmVkID09PSAic3lzdGVtIikgcmV0dXJuIFN5c3RlbVpvbmUuaW5zdGFuY2U7CiAgICAgIGVsc2UgaWYgKGxvd2VyZWQgPT09ICJ1dGMiIHx8IGxvd2VyZWQgPT09ICJnbXQiKSByZXR1cm4gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlOwogICAgICBlbHNlIHJldHVybiBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIobG93ZXJlZCkgfHwgSUFOQVpvbmUuY3JlYXRlKGlucHV0KTsKICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7CiAgICAgIHJldHVybiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoaW5wdXQpOwogICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICJvYmplY3QiICYmIGlucHV0Lm9mZnNldCAmJiB0eXBlb2YgaW5wdXQub2Zmc2V0ID09PSAibnVtYmVyIikgewogICAgICAvLyBUaGlzIGlzIGR1bWIsIGJ1dCB0aGUgaW5zdGFuY2VvZiBjaGVjayBhYm92ZSBkb2Vzbid0IHNlZW0gdG8gcmVhbGx5IHdvcmsKICAgICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdAogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgIH0KICB9CgogIGxldCBub3cgPSAoKSA9PiBEYXRlLm5vdygpLAogICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgIGRlZmF1bHRMb2NhbGUgPSBudWxsLAogICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsCiAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgdHdvRGlnaXRDdXRvZmZZZWFyID0gNjAsCiAgICB0aHJvd09uSW52YWxpZDsKCiAgLyoqCiAgICogU2V0dGluZ3MgY29udGFpbnMgc3RhdGljIGdldHRlcnMgYW5kIHNldHRlcnMgdGhhdCBjb250cm9sIEx1eG9uJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gTHV4b24gaXMgYSBzaW1wbGUgbGlicmFyeSB3aXRoIGZldyBvcHRpb25zLCBidXQgdGhlIG9uZXMgaXQgZG9lcyBoYXZlIGxpdmUgaGVyZS4KICAgKi8KICBjbGFzcyBTZXR0aW5ncyB7CiAgICAvKioKICAgICAqIEdldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuCiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgbm93KCkgewogICAgICByZXR1cm4gbm93OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50CiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWUKICAgICAqLwogICAgc3RhdGljIHNldCBub3cobikgewogICAgICBub3cgPSBuOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSB0byBjcmVhdGUgRGF0ZVRpbWVzIGluLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogVXNlIHRoZSB2YWx1ZSAic3lzdGVtIiB0byByZXNldCB0aGlzIHZhbHVlIHRvIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgc2V0IGRlZmF1bHRab25lKHpvbmUpIHsKICAgICAgZGVmYXVsdFpvbmUgPSB6b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUgKHRoZSBvbmUgc2V0IG9uIHRoZSBtYWNoaW5lIHRoYXQgcnVucyB0aGlzIGNvZGUpLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TG9jYWxlKCkgewogICAgICByZXR1cm4gZGVmYXVsdExvY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHNldCBkZWZhdWx0TG9jYWxlKGxvY2FsZSkgewogICAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IG51bWJlcmluZyBzeXN0ZW0gdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbShudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKSB7CiAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjdXRvZmYgeWVhciBhZnRlciB3aGljaCBhIHN0cmluZyBlbmNvZGluZyBhIHllYXIgYXMgdHdvIGRpZ2l0cyBpcyBpbnRlcnByZXRlZCB0byBvY2N1ciBpbiB0aGUgY3VycmVudCBjZW50dXJ5LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgc3RhdGljIGdldCB0d29EaWdpdEN1dG9mZlllYXIoKSB7CiAgICAgIHJldHVybiB0d29EaWdpdEN1dG9mZlllYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGN1dG9mZiB5ZWFyIGFmdGVyIHdoaWNoIGEgc3RyaW5nIGVuY29kaW5nIGEgeWVhciBhcyB0d28gZGlnaXRzIGlzIGludGVycHJldGVkIHRvIG9jY3VyIGluIHRoZSBjdXJyZW50IGNlbnR1cnkuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMCAvLyBjdXQtb2ZmIHllYXIgaXMgMCwgc28gYWxsICd5eScgYXJlIGludGVycHJldHRlZCBhcyBjdXJyZW50IGNlbnR1cnkKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDUwIC8vICc0OScgLT4gMTk0OTsgJzUwJyAtPiAyMDUwCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPSAxOTUwIC8vIGludGVycHJldHRlZCBhcyA1MAogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMjA1MCAvLyBBTFNPIGludGVycHJldHRlZCBhcyA1MAogICAgICovCiAgICBzdGF0aWMgc2V0IHR3b0RpZ2l0Q3V0b2ZmWWVhcihjdXRvZmZZZWFyKSB7CiAgICAgIHR3b0RpZ2l0Q3V0b2ZmWWVhciA9IGN1dG9mZlllYXIgJSAxMDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCkgewogICAgICByZXR1cm4gdGhyb3dPbkludmFsaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgc2V0IHRocm93T25JbnZhbGlkKHQpIHsKICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgTHV4b24ncyBnbG9iYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzdGF0aWMgcmVzZXRDYWNoZXMoKSB7CiAgICAgIExvY2FsZS5yZXNldENhY2hlKCk7CiAgICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTsKICAgIH0KICB9CgogIC8qCiAgICBUaGlzIGlzIGp1c3QgYSBqdW5rIGRyYXdlciwgY29udGFpbmluZyBhbnl0aGluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBjbGFzc2VzLgogICAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmcKICAgIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS4KICAqLwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICAvLyBUWVBFUwoKICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJ1bmRlZmluZWQiOwogIH0KCiAgZnVuY3Rpb24gaXNOdW1iZXIobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICB9CgogIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJudW1iZXIiICYmIG8gJSAxID09PSAwOwogIH0KCiAgZnVuY3Rpb24gaXNTdHJpbmcobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAic3RyaW5nIjsKICB9CgogIGZ1bmN0aW9uIGlzRGF0ZShvKSB7CiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgfQoKICAvLyBDQVBBQklMSVRJRVMKCiAgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdHlwZW9mIEludGwgIT09ICJ1bmRlZmluZWQiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIC8vIE9CSkVDVFMgQU5EIEFSUkFZUwoKICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107CiAgfQoKICBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkgewogICAgaWYgKGFyci5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0KICAgIHJldHVybiBhcnIucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7CiAgICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdOwogICAgICBpZiAoIWJlc3QpIHsKICAgICAgICByZXR1cm4gcGFpcjsKICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgcmV0dXJuIGJlc3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgIH0KICAgIH0sIG51bGwpWzFdOwogIH0KCiAgZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHsKICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4gewogICAgICBhW2tdID0gb2JqW2tdOwogICAgICByZXR1cm4gYTsKICAgIH0sIHt9KTsKICB9CgogIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwogIH0KCiAgLy8gTlVNQkVSUyBBTkQgU1RSSU5HUwoKICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgIHJldHVybiBpc0ludGVnZXIodGhpbmcpICYmIHRoaW5nID49IGJvdHRvbSAmJiB0aGluZyA8PSB0b3A7CiAgfQoKICAvLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHgKICBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7CiAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICB9CgogIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikgewogICAgY29uc3QgaXNOZWcgPSBpbnB1dCA8IDA7CiAgICBsZXQgcGFkZGVkOwogICAgaWYgKGlzTmVnKSB7CiAgICAgIHBhZGRlZCA9ICItIiArICgiIiArIC1pbnB1dCkucGFkU3RhcnQobiwgIjAiKTsKICAgIH0gZWxzZSB7CiAgICAgIHBhZGRlZCA9ICgiIiArIGlucHV0KS5wYWRTdGFydChuLCAiMCIpOwogICAgfQogICAgcmV0dXJuIHBhZGRlZDsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSW50ZWdlcihzdHJpbmcpIHsKICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZUZsb2F0aW5nKHN0cmluZykgewogICAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZU1pbGxpcyhmcmFjdGlvbikgewogICAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldAogICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IGYgPSBwYXJzZUZsb2F0KCIwLiIgKyBmcmFjdGlvbikgKiAxMDAwOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJvdW5kVG8obnVtYmVyLCBkaWdpdHMsIHRvd2FyZFplcm8gPSBmYWxzZSkgewogICAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLAogICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgcmV0dXJuIHJvdW5kZXIobnVtYmVyICogZmFjdG9yKSAvIGZhY3RvcjsKICB9CgogIC8vIERBVEUgQkFTSUNTCgogIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApOwogIH0KCiAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7CiAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTsKICB9CgogIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICBjb25zdCBtb2RNb250aCA9IGZsb29yTW9kKG1vbnRoIC0gMSwgMTIpICsgMSwKICAgICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjsKCiAgICBpZiAobW9kTW9udGggPT09IDIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07CiAgICB9CiAgfQoKICAvLyBjb3ZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBsb2NhbCB0aW1lc3RhbXAgKGVwb2NoLCBidXQgd2l0aCB0aGUgb2Zmc2V0IGJha2VkIGluKQogIGZ1bmN0aW9uIG9ialRvTG9jYWxUUyhvYmopIHsKICAgIGxldCBkID0gRGF0ZS5VVEMoCiAgICAgIG9iai55ZWFyLAogICAgICBvYmoubW9udGggLSAxLAogICAgICBvYmouZGF5LAogICAgICBvYmouaG91ciwKICAgICAgb2JqLm1pbnV0ZSwKICAgICAgb2JqLnNlY29uZCwKICAgICAgb2JqLm1pbGxpc2Vjb25kCiAgICApOwoKICAgIC8vIGZvciBsZWdhY3kgcmVhc29ucywgeWVhcnMgYmV0d2VlbiAwIGFuZCA5OSBhcmUgaW50ZXJwcmV0ZWQgYXMgMTlYWDsgcmV2ZXJ0IHRoYXQKICAgIGlmIChvYmoueWVhciA8IDEwMCAmJiBvYmoueWVhciA+PSAwKSB7CiAgICAgIGQgPSBuZXcgRGF0ZShkKTsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KICAgIHJldHVybiArZDsKICB9CgogIGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikgewogICAgY29uc3QgcDEgPQogICAgICAgICh3ZWVrWWVhciArCiAgICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLQogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDEwMCkgKwogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUKICAgICAgICA3LAogICAgICBsYXN0ID0gd2Vla1llYXIgLSAxLAogICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1MjsKICB9CgogIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHsKICAgIGlmICh5ZWFyID4gOTkpIHsKICAgICAgcmV0dXJuIHllYXI7CiAgICB9IGVsc2UgcmV0dXJuIHllYXIgPiBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIH0KCiAgLy8gUEFSU0lORwoKICBmdW5jdGlvbiBwYXJzZVpvbmVJbmZvKHRzLCBvZmZzZXRGb3JtYXQsIGxvY2FsZSwgdGltZVpvbmUgPSBudWxsKSB7CiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLAogICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IiwKICAgICAgfTsKCiAgICBpZiAodGltZVpvbmUpIHsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgIH0KCiAgICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07CgogICAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZCkKICAgICAgLmZvcm1hdFRvUGFydHMoZGF0ZSkKICAgICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGltZXpvbmVuYW1lIik7CiAgICByZXR1cm4gcGFyc2VkID8gcGFyc2VkLnZhbHVlIDogbnVsbDsKICB9CgogIC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCiAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7CgogICAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgb2ZmSG91ciA9IDA7CiAgICB9CgogICAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCwKICAgICAgb2ZmTWluU2lnbmVkID0gb2ZmSG91ciA8IDAgfHwgT2JqZWN0LmlzKG9mZkhvdXIsIC0wKSA/IC1vZmZNaW4gOiBvZmZNaW47CiAgICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkOwogIH0KCiAgLy8gQ09FUkNJT04KCiAgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHsKICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7CiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIgfHwgdmFsdWUgPT09ICIiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKQogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEludmFsaWQgdW5pdCB2YWx1ZSAke3ZhbHVlfWApOwogICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICB9CgogIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTsKICAgIGZvciAoY29uc3QgdSBpbiBvYmopIHsKICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICBjb25zdCB2ID0gb2JqW3VdOwogICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkgewogICAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksCiAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/ICIrIiA6ICItIjsKCiAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9OiR7cGFkU3RhcnQobWludXRlcywgMil9YDsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke2hvdXJzfSR7bWludXRlcyA+IDAgPyBgOiR7bWludXRlc31gIDogIiJ9YDsKICAgICAgY2FzZSAidGVjaGllIjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFZhbHVlIGZvcm1hdCAke2Zvcm1hdH0gaXMgb3V0IG9mIHJhbmdlIGZvciBwcm9wZXJ0eSBmb3JtYXRgKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICByZXR1cm4gcGljayhvYmosIFsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0pOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY29uc3QgbW9udGhzTG9uZyA9IFsKICAgICJKYW51YXJ5IiwKICAgICJGZWJydWFyeSIsCiAgICAiTWFyY2giLAogICAgIkFwcmlsIiwKICAgICJNYXkiLAogICAgIkp1bmUiLAogICAgIkp1bHkiLAogICAgIkF1Z3VzdCIsCiAgICAiU2VwdGVtYmVyIiwKICAgICJPY3RvYmVyIiwKICAgICJOb3ZlbWJlciIsCiAgICAiRGVjZW1iZXIiLAogIF07CgogIGNvbnN0IG1vbnRoc1Nob3J0ID0gWwogICAgIkphbiIsCiAgICAiRmViIiwKICAgICJNYXIiLAogICAgIkFwciIsCiAgICAiTWF5IiwKICAgICJKdW4iLAogICAgIkp1bCIsCiAgICAiQXVnIiwKICAgICJTZXAiLAogICAgIk9jdCIsCiAgICAiTm92IiwKICAgICJEZWMiLAogIF07CgogIGNvbnN0IG1vbnRoc05hcnJvdyA9IFsiSiIsICJGIiwgIk0iLCAiQSIsICJNIiwgIkoiLCAiSiIsICJBIiwgIlMiLCAiTyIsICJOIiwgIkQiXTsKCiAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc05hcnJvd107CiAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc1Nob3J0XTsKICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgcmV0dXJuIFsuLi5tb250aHNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgcmV0dXJuIFsiMDEiLCAiMDIiLCAiMDMiLCAiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMDkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGNvbnN0IHdlZWtkYXlzTG9uZyA9IFsKICAgICJNb25kYXkiLAogICAgIlR1ZXNkYXkiLAogICAgIldlZG5lc2RheSIsCiAgICAiVGh1cnNkYXkiLAogICAgIkZyaWRheSIsCiAgICAiU2F0dXJkYXkiLAogICAgIlN1bmRheSIsCiAgXTsKCiAgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CgogIGNvbnN0IHdlZWtkYXlzTmFycm93ID0gWyJNIiwgIlQiLCAiVyIsICJUIiwgIkYiLCAiUyIsICJTIl07CgogIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLndlZWtkYXlzTmFycm93XTsKICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNTaG9ydF07CiAgICAgIGNhc2UgImxvbmciOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgY29uc3QgbWVyaWRpZW1zID0gWyJBTSIsICJQTSJdOwoKICBjb25zdCBlcmFzTG9uZyA9IFsiQmVmb3JlIENocmlzdCIsICJBbm5vIERvbWluaSJdOwoKICBjb25zdCBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CgogIGNvbnN0IGVyYXNOYXJyb3cgPSBbIkIiLCAiQSJdOwoKICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNOYXJyb3ddOwogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIFsuLi5lcmFzU2hvcnRdOwogICAgICBjYXNlICJsb25nIjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNMb25nXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpIHsKICAgIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICB9CgogIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgcmV0dXJuIG1vbnRocyhsZW5ndGgpW2R0Lm1vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gImFsd2F5cyIsIG5hcnJvdyA9IGZhbHNlKSB7CiAgICBjb25zdCB1bml0cyA9IHsKICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgcXVhcnRlcnM6IFsicXVhcnRlciIsICJxdHIuIl0sCiAgICAgIG1vbnRoczogWyJtb250aCIsICJtby4iXSwKICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgZGF5czogWyJkYXkiLCAiZGF5IiwgImRheXMiXSwKICAgICAgaG91cnM6IFsiaG91ciIsICJoci4iXSwKICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICBzZWNvbmRzOiBbInNlY29uZCIsICJzZWMuIl0sCiAgICB9OwoKICAgIGNvbnN0IGxhc3RhYmxlID0gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiXS5pbmRleE9mKHVuaXQpID09PSAtMTsKCiAgICBpZiAobnVtZXJpYyA9PT0gImF1dG8iICYmIGxhc3RhYmxlKSB7CiAgICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gImRheXMiOwogICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvbW9ycm93IiA6IGBuZXh0ICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgICBjYXNlIC0xOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInllc3RlcmRheSIgOiBgbGFzdCAke3VuaXRzW3VuaXRdWzBdfWA7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6IGB0aGlzICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgfQogICAgfQoKICAgIGNvbnN0IGlzSW5QYXN0ID0gT2JqZWN0LmlzKGNvdW50LCAtMCkgfHwgY291bnQgPCAwLAogICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSwKICAgICAgbGlsVW5pdHMgPSB1bml0c1t1bml0XSwKICAgICAgZm10VW5pdCA9IG5hcnJvdwogICAgICAgID8gc2luZ3VsYXIKICAgICAgICAgID8gbGlsVW5pdHNbMV0KICAgICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV0KICAgICAgICA6IHNpbmd1bGFyCiAgICAgICAgPyB1bml0c1t1bml0XVswXQogICAgICAgIDogdW5pdDsKICAgIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7CiAgfQoKICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICBsZXQgcyA9ICIiOwogICAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHsKICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzICs9IHRva2VuVG9TdHJpbmcodG9rZW4udmFsKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7CiAgfQoKICBjb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gewogICAgRDogREFURV9TSE9SVCwKICAgIEREOiBEQVRFX01FRCwKICAgIERERDogREFURV9GVUxMLAogICAgRERERDogREFURV9IVUdFLAogICAgdDogVElNRV9TSU1QTEUsCiAgICB0dDogVElNRV9XSVRIX1NFQ09ORFMsCiAgICB0dHQ6IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQsCiAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICBUOiBUSU1FXzI0X1NJTVBMRSwKICAgIFRUOiBUSU1FXzI0X1dJVEhfU0VDT05EUywKICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgIFRUVFQ6IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCwKICAgIGY6IERBVEVUSU1FX1NIT1JULAogICAgZmY6IERBVEVUSU1FX01FRCwKICAgIGZmZjogREFURVRJTUVfRlVMTCwKICAgIGZmZmY6IERBVEVUSU1FX0hVR0UsCiAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICBGRjogREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUywKICAgIEZGRjogREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMsCiAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUywKICB9OwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBGb3JtYXR0ZXIgewogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpOwogICAgfQoKICAgIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgbGV0IGN1cnJlbnQgPSBudWxsLAogICAgICAgIGN1cnJlbnRGdWxsID0gIiIsCiAgICAgICAgYnJhY2tldGVkID0gZmFsc2U7CiAgICAgIGNvbnN0IHNwbGl0cyA9IFtdOwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZtdC5sZW5ndGg7IGkrKykgewogICAgICAgIGNvbnN0IGMgPSBmbXQuY2hhckF0KGkpOwogICAgICAgIGlmIChjID09PSAiJyIpIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogYnJhY2tldGVkLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudCA9IG51bGw7CiAgICAgICAgICBjdXJyZW50RnVsbCA9ICIiOwogICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkgewogICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogZmFsc2UsIHZhbDogY3VycmVudEZ1bGwgfSk7CiAgICAgICAgICB9CiAgICAgICAgICBjdXJyZW50RnVsbCA9IGM7CiAgICAgICAgICBjdXJyZW50ID0gYzsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgc3BsaXRzLnB1c2goeyBsaXRlcmFsOiBicmFja2V0ZWQsIHZhbDogY3VycmVudEZ1bGwgfSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBzcGxpdHM7CiAgICB9CgogICAgc3RhdGljIG1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pIHsKICAgICAgcmV0dXJuIG1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHNbdG9rZW5dOwogICAgfQoKICAgIGNvbnN0cnVjdG9yKGxvY2FsZSwgZm9ybWF0T3B0cykgewogICAgICB0aGlzLm9wdHMgPSBmb3JtYXRPcHRzOwogICAgICB0aGlzLmxvYyA9IGxvY2FsZTsKICAgICAgdGhpcy5zeXN0ZW1Mb2MgPSBudWxsOwogICAgfQoKICAgIGZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0KGR0LCBvcHRzKSB7CiAgICAgIGlmICh0aGlzLnN5c3RlbUxvYyA9PT0gbnVsbCkgewogICAgICAgIHRoaXMuc3lzdGVtTG9jID0gdGhpcy5sb2MucmVkZWZhdWx0VG9TeXN0ZW0oKTsKICAgICAgfQogICAgICBjb25zdCBkZiA9IHRoaXMuc3lzdGVtTG9jLmR0Rm9ybWF0dGVyKGR0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTsKICAgICAgcmV0dXJuIGRmLmZvcm1hdCgpOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lKGR0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgIH0KCiAgICBmb3JtYXREYXRlVGltZVBhcnRzKGR0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXRUb1BhcnRzKCk7CiAgICB9CgogICAgZm9ybWF0SW50ZXJ2YWwoaW50ZXJ2YWwsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBkZiA9IHRoaXMubG9jLmR0Rm9ybWF0dGVyKGludGVydmFsLnN0YXJ0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTsKICAgICAgcmV0dXJuIGRmLmR0Zi5mb3JtYXRSYW5nZShpbnRlcnZhbC5zdGFydC50b0pTRGF0ZSgpLCBpbnRlcnZhbC5lbmQudG9KU0RhdGUoKSk7CiAgICB9CgogICAgcmVzb2x2ZWRPcHRpb25zKGR0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIH0KCiAgICBudW0obiwgcCA9IDApIHsKICAgICAgLy8gd2UgZ2V0IHNvbWUgcGVyZiBvdXQgb2YgZG9pbmcgdGhpcyBoZXJlLCBhbm5veWluZ2x5CiAgICAgIGlmICh0aGlzLm9wdHMuZm9yY2VTaW1wbGUpIHsKICAgICAgICByZXR1cm4gcGFkU3RhcnQobiwgcCk7CiAgICAgIH0KCiAgICAgIGNvbnN0IG9wdHMgPSB7IC4uLnRoaXMub3B0cyB9OwoKICAgICAgaWYgKHAgPiAwKSB7CiAgICAgICAgb3B0cy5wYWRUbyA9IHA7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLmxvYy5udW1iZXJGb3JtYXR0ZXIob3B0cykuZm9ybWF0KG4pOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm10KSB7CiAgICAgIGNvbnN0IGtub3duRW5nbGlzaCA9IHRoaXMubG9jLmxpc3RpbmdNb2RlKCkgPT09ICJlbiIsCiAgICAgICAgdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPSB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAmJiB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAhPT0gImdyZWdvcnkiLAogICAgICAgIHN0cmluZyA9IChvcHRzLCBleHRyYWN0KSA9PiB0aGlzLmxvYy5leHRyYWN0KGR0LCBvcHRzLCBleHRyYWN0KSwKICAgICAgICBmb3JtYXRPZmZzZXQgPSAob3B0cykgPT4gewogICAgICAgICAgaWYgKGR0LmlzT2Zmc2V0Rml4ZWQgJiYgZHQub2Zmc2V0ID09PSAwICYmIG9wdHMuYWxsb3daKSB7CiAgICAgICAgICAgIHJldHVybiAiWiI7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIGR0LmlzVmFsaWQgPyBkdC56b25lLmZvcm1hdE9mZnNldChkdC50cywgb3B0cy5mb3JtYXQpIDogIiI7CiAgICAgICAgfSwKICAgICAgICBtZXJpZGllbSA9ICgpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyBtZXJpZGllbUZvckRhdGVUaW1lKGR0KQogICAgICAgICAgICA6IHN0cmluZyh7IGhvdXI6ICJudW1lcmljIiwgaG91ckN5Y2xlOiAiaDEyIiB9LCAiZGF5cGVyaW9kIiksCiAgICAgICAgbW9udGggPSAobGVuZ3RoLCBzdGFuZGFsb25lKSA9PgogICAgICAgICAga25vd25FbmdsaXNoCiAgICAgICAgICAgID8gbW9udGhGb3JEYXRlVGltZShkdCwgbGVuZ3RoKQogICAgICAgICAgICA6IHN0cmluZyhzdGFuZGFsb25lID8geyBtb250aDogbGVuZ3RoIH0gOiB7IG1vbnRoOiBsZW5ndGgsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpLAogICAgICAgIHdlZWtkYXkgPSAobGVuZ3RoLCBzdGFuZGFsb25lKSA9PgogICAgICAgICAga25vd25FbmdsaXNoCiAgICAgICAgICAgID8gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpCiAgICAgICAgICAgIDogc3RyaW5nKAogICAgICAgICAgICAgICAgc3RhbmRhbG9uZSA/IHsgd2Vla2RheTogbGVuZ3RoIH0gOiB7IHdlZWtkYXk6IGxlbmd0aCwgbW9udGg6ICJsb25nIiwgZGF5OiAibnVtZXJpYyIgfSwKICAgICAgICAgICAgICAgICJ3ZWVrZGF5IgogICAgICAgICAgICAgICksCiAgICAgICAgbWF5YmVNYWNybyA9ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgZm9ybWF0T3B0cyA9IEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKTsKICAgICAgICAgIGlmIChmb3JtYXRPcHRzKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0KGR0LCBmb3JtYXRPcHRzKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGVyYSA9IChsZW5ndGgpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2ggPyBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSA6IHN0cmluZyh7IGVyYTogbGVuZ3RoIH0sICJlcmEiKSwKICAgICAgICB0b2tlblRvU3RyaW5nID0gKHRva2VuKSA9PiB7CiAgICAgICAgICAvLyBXaGVyZSBwb3NzaWJsZTogaHR0cDovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lLTEvZGF0ZS10aW1lI1RPQy1TdGFuZGFsb25lLXZzLi1Gb3JtYXQtU3R5bGVzCiAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgICAgIC8vIG1zCiAgICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7CiAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTsKICAgICAgICAgICAgLy8gc2Vjb25kcwogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTsKICAgICAgICAgICAgY2FzZSAic3MiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBmcmFjdGlvbmFsIHNlY29uZHMKICAgICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTApLCAyKTsKICAgICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwMCkpOwogICAgICAgICAgICAvLyBtaW51dGVzCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpOwogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7CiAgICAgICAgICAgIC8vIGhvdXJzCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CiAgICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpOwogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7CiAgICAgICAgICAgIGNhc2UgIkhIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAogICAgICAgICAgICBjYXNlICJaIjoKICAgICAgICAgICAgICAvLyBsaWtlICs2CiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogIm5hcnJvdyIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTsKICAgICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogInNob3J0IiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2MDAKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiAidGVjaGllIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVTVAogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiAic2hvcnQiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTsKICAgICAgICAgICAgY2FzZSAiWlpaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6ICJsb25nIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKICAgICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmVOYW1lOwogICAgICAgICAgICAvLyBtZXJpZGllbXMKICAgICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7CiAgICAgICAgICAgIC8vIGRhdGVzCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogIm51bWVyaWMiIH0sICJkYXkiKSA6IHRoaXMubnVtKGR0LmRheSk7CiAgICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6ICIyLWRpZ2l0IiB9LCAiZGF5IikgOiB0aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpOwogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgImNjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiY2NjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1QnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIGZvcm1hdAogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7CiAgICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVHVlcycKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJuYXJyb3ciLCBmYWxzZSk7CiAgICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTsKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAiMi1kaWdpdCIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKICAgICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIgfSwgIm1vbnRoIikKICAgICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpOwogICAgICAgICAgICBjYXNlICJNTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogIjItZGlnaXQiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIk1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeQogICAgICAgICAgICAgIHJldHVybiBtb250aCgibG9uZyIsIGZhbHNlKTsKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICAvLyBsaWtlIDIwMTQKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyB5ZWFyOiAibnVtZXJpYyIgfSwgInllYXIiKSA6IHRoaXMubnVtKGR0LnllYXIpOwogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiAiMi1kaWdpdCIgfSwgInllYXIiKQogICAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDQpOwogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpOwogICAgICAgICAgICAvLyBlcmFzCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwogICAgICAgICAgICBjYXNlICJHRyI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaQogICAgICAgICAgICAgIHJldHVybiBlcmEoImxvbmciKTsKICAgICAgICAgICAgY2FzZSAiR0dHR0ciOgogICAgICAgICAgICAgIHJldHVybiBlcmEoIm5hcnJvdyIpOwogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAia2trayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKICAgICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpOwogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpOwogICAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7CiAgICAgICAgICAgIGNhc2UgIm9vbyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpOwogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlcik7CiAgICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwogICAgICAgICAgICBjYXNlICJYIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTsKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gbWF5YmVNYWNybyh0b2tlbik7CiAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpOwogICAgfQoKICAgIGZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhkdXIsIGZtdCkgewogICAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHsKICAgICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHsKICAgICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaWxsaXNlY29uZCI7CiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgICAgICByZXR1cm4gImhvdXIiOwogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgICAgIGNhc2UgInciOgogICAgICAgICAgICAgIHJldHVybiAid2VlayI7CiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIHJldHVybiAibW9udGgiOwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKAogICAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLAogICAgICAgICAgW10KICAgICAgICApLAogICAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7CiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnModG9rZW5zLCB0b2tlblRvU3RyaW5nKGNvbGxhcHNlZCkpOwogICAgfQogIH0KCiAgY2xhc3MgSW52YWxpZCB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgIHRoaXMucmVhc29uID0gcmVhc29uOwogICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICB9CgogICAgdG9NZXNzYWdlKCkgewogICAgICBpZiAodGhpcy5leHBsYW5hdGlvbikgewogICAgICAgIHJldHVybiBgJHt0aGlzLnJlYXNvbn06ICR7dGhpcy5leHBsYW5hdGlvbn1gOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnJlYXNvbjsKICAgICAgfQogICAgfQogIH0KCiAgLyoKICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLgogICAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3QKICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgImN1cnNvciIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuCiAgICogY29tYmluZUV4dHJhY3RvcnMoKSBkb2VzIHRoZSB3b3JrIG9mIGNvbWJpbmluZyB0aGVtLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgdGhyb3VnaCBtdWx0aXBsZSBleHRyYWN0aW9ucy4KICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgKi8KCiAgY29uc3QgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg/Ojo/XC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcL1tBLVphLXowLTlfKy1dezEsMjU2fSk/KT8vOwoKICBmdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7CiAgICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgIiIpOwogICAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7CiAgfQoKICBmdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7CiAgICByZXR1cm4gKG0pID0+CiAgICAgIGV4dHJhY3RvcnMKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFttZXJnZWRWYWxzLCBtZXJnZWRab25lLCBjdXJzb3JdLCBleCkgPT4gewogICAgICAgICAgICBjb25zdCBbdmFsLCB6b25lLCBuZXh0XSA9IGV4KG0sIGN1cnNvcik7CiAgICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTsKICAgICAgICAgIH0sCiAgICAgICAgICBbe30sIG51bGwsIDFdCiAgICAgICAgKQogICAgICAgIC5zbGljZSgwLCAyKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlKHMsIC4uLnBhdHRlcm5zKSB7CiAgICBpZiAocyA9PSBudWxsKSB7CiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZm9yIChjb25zdCBbcmVnZXgsIGV4dHJhY3Rvcl0gb2YgcGF0dGVybnMpIHsKICAgICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7CiAgICAgIGlmIChtKSB7CiAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIFtudWxsLCBudWxsXTsKICB9CgogIGZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHsKICAgIHJldHVybiAobWF0Y2gsIGN1cnNvcikgPT4gewogICAgICBjb25zdCByZXQgPSB7fTsKICAgICAgbGV0IGk7CgogICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgIHJldFtrZXlzW2ldXSA9IHBhcnNlSW50ZWdlcihtYXRjaFtjdXJzb3IgKyBpXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldOwogICAgfTsKICB9CgogIC8vIElTTyBhbmQgU1FMIHBhcnNpbmcKICBjb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8pLzsKICBjb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcWygke2lhbmFSZWdleC5zb3VyY2V9KVxcXSk/KT9gOwogIGNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlsuLF0oXGR7MSwzMH0pKT8pPyk/LzsKICBjb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7CiAgY29uc3QgaXNvVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzpUJHtpc29UaW1lUmVnZXguc291cmNlfSk/YCk7CiAgY29uc3QgaXNvWW1kUmVnZXggPSAvKFsrLV1cZHs2fXxcZHs0fSkoPzotPyhcZFxkKSg/Oi0/KFxkXGQpKT8pPy87CiAgY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcZHs0fSktP1coXGRcZCkoPzotPyhcZCkpPy87CiAgY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcZHs0fSktPyhcZHszfSkvOwogIGNvbnN0IGV4dHJhY3RJU09XZWVrRGF0YSA9IHNpbXBsZVBhcnNlKCJ3ZWVrWWVhciIsICJ3ZWVrTnVtYmVyIiwgIndlZWtEYXkiKTsKICBjb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZSgieWVhciIsICJvcmRpbmFsIik7CiAgY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxkezR9KS0oXGRcZCktKFxkXGQpLzsgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogIGNvbnN0IHNxbFRpbWVSZWdleCA9IFJlZ0V4cCgKICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YAogICk7CiAgY29uc3Qgc3FsVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzogJHtzcWxUaW1lUmVnZXguc291cmNlfSk/YCk7CgogIGZ1bmN0aW9uIGludChtYXRjaCwgcG9zLCBmYWxsYmFjaykgewogICAgY29uc3QgbSA9IG1hdGNoW3Bvc107CiAgICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJU09ZbWQobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLAogICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpLAogICAgfTsKCiAgICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSwKICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgc2Vjb25kczogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAwKSwKICAgICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksCiAgICB9OwoKICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgfQoKICBmdW5jdGlvbiBleHRyYWN0SVNPT2Zmc2V0KG1hdGNoLCBjdXJzb3IpIHsKICAgIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLAogICAgICBmdWxsT2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG1hdGNoW2N1cnNvciArIDFdLCBtYXRjaFtjdXJzb3IgKyAyXSksCiAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICBjb25zdCB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTsKICB9CgogIC8vIElTTyB0aW1lIHBhcnNpbmcKCiAgY29uc3QgaXNvVGltZU9ubHkgPSBSZWdFeHAoYF5UPyR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JGApOwoKICAvLyBJU08gZHVyYXRpb24gcGFyc2luZwoKICBjb25zdCBpc29EdXJhdGlvbiA9CiAgICAvXi0/UCg/Oig/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVkpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KU0pPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVcpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KUQpPyg/OlQoPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylIKT8oPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSwyMH0pKT9TKT8pPykkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7CiAgICBjb25zdCBbcywgeWVhclN0ciwgbW9udGhTdHIsIHdlZWtTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIG1pbGxpc2Vjb25kc1N0cl0gPQogICAgICBtYXRjaDsKCiAgICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09ICItIjsKICAgIGNvbnN0IG5lZ2F0aXZlU2Vjb25kcyA9IHNlY29uZFN0ciAmJiBzZWNvbmRTdHJbMF0gPT09ICItIjsKCiAgICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+CiAgICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtOwoKICAgIHJldHVybiBbCiAgICAgIHsKICAgICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksCiAgICAgICAgd2Vla3M6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcod2Vla1N0cikpLAogICAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLAogICAgICAgIG1pbnV0ZXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobWludXRlU3RyKSksCiAgICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKSwKICAgICAgfSwKICAgIF07CiAgfQoKICAvLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmsKICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXQKICBjb25zdCBvYnNPZmZzZXRzID0gewogICAgR01UOiAwLAogICAgRURUOiAtNCAqIDYwLAogICAgRVNUOiAtNSAqIDYwLAogICAgQ0RUOiAtNSAqIDYwLAogICAgQ1NUOiAtNiAqIDYwLAogICAgTURUOiAtNiAqIDYwLAogICAgTVNUOiAtNyAqIDYwLAogICAgUERUOiAtNyAqIDYwLAogICAgUFNUOiAtOCAqIDYwLAogIH07CgogIGZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7CiAgICBjb25zdCByZXN1bHQgPSB7CiAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgbW9udGg6IG1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSwKICAgICAgZGF5OiBwYXJzZUludGVnZXIoZGF5U3RyKSwKICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpLAogICAgfTsKCiAgICBpZiAoc2Vjb25kU3RyKSByZXN1bHQuc2Vjb25kID0gcGFyc2VJbnRlZ2VyKHNlY29uZFN0cik7CiAgICBpZiAod2Vla2RheVN0cikgewogICAgICByZXN1bHQud2Vla2RheSA9CiAgICAgICAgd2Vla2RheVN0ci5sZW5ndGggPiAzCiAgICAgICAgICA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMQogICAgICAgICAgOiB3ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvLyBSRkMgMjgyMi81MzIyCiAgY29uc3QgcmZjMjgyMiA9CiAgICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICBmdW5jdGlvbiBleHRyYWN0UkZDMjgyMihtYXRjaCkgewogICAgY29uc3QgWwogICAgICAgICwKICAgICAgICB3ZWVrZGF5U3RyLAogICAgICAgIGRheVN0ciwKICAgICAgICBtb250aFN0ciwKICAgICAgICB5ZWFyU3RyLAogICAgICAgIGhvdXJTdHIsCiAgICAgICAgbWludXRlU3RyLAogICAgICAgIHNlY29uZFN0ciwKICAgICAgICBvYnNPZmZzZXQsCiAgICAgICAgbWlsT2Zmc2V0LAogICAgICAgIG9mZkhvdXJTdHIsCiAgICAgICAgb2ZmTWludXRlU3RyLAogICAgICBdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKCiAgICBsZXQgb2Zmc2V0OwogICAgaWYgKG9ic09mZnNldCkgewogICAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07CiAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICBvZmZzZXQgPSAwOwogICAgfSBlbHNlIHsKICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICB9CgogICAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07CiAgfQoKICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7CiAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQogICAgcmV0dXJuIHMKICAgICAgLnJlcGxhY2UoL1woW14oKV0qXCl8W1xuXHRdL2csICIgIikKICAgICAgLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKQogICAgICAudHJpbSgpOwogIH0KCiAgLy8gaHR0cCBkYXRlCgogIGNvbnN0IHJmYzExMjMgPQogICAgICAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLCAoXGRcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXGR7NH0pIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgcmZjODUwID0KICAgICAgL14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXGRcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICBhc2NpaSA9CiAgICAgIC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxkfFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIChcZHs0fSkkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkgewogICAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7CiAgICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCwKICAgICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpOwogICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgfQoKICBjb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpOwoKICBjb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1ltZCwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoCiAgICBleHRyYWN0SVNPV2Vla0RhdGEsCiAgICBleHRyYWN0SVNPVGltZSwKICAgIGV4dHJhY3RJU09PZmZzZXQsCiAgICBleHRyYWN0SUFOQVpvbmUKICApOwogIGNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09PcmRpbmFsRGF0YSwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CgogIC8qCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgIHJldHVybiBwYXJzZSgKICAgICAgcywKICAgICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSwKICAgICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLAogICAgICBbaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWVdLAogICAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XQogICAgKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykgewogICAgcmV0dXJuIHBhcnNlKHByZXByb2Nlc3NSRkMyODIyKHMpLCBbcmZjMjgyMiwgZXh0cmFjdFJGQzI4MjJdKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSFRUUERhdGUocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbcmZjMTEyMywgZXh0cmFjdFJGQzExMjNPcjg1MF0sCiAgICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLAogICAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV0KICAgICk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pOwogIH0KCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwoKICBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogIH0KCiAgY29uc3Qgc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFltZFJlZ2V4LCBzcWxUaW1lRXh0ZW5zaW9uUmVnZXgpOwogIGNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTsKCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1RpbWUsCiAgICBleHRyYWN0SVNPT2Zmc2V0LAogICAgZXh0cmFjdElBTkFab25lCiAgKTsKCiAgZnVuY3Rpb24gcGFyc2VTUUwocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLAogICAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdCiAgICApOwogIH0KCiAgY29uc3QgSU5WQUxJRCQyID0gIkludmFsaWQgRHVyYXRpb24iOwoKICAvLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzCiAgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7CiAgICAgIHdlZWtzOiB7CiAgICAgICAgZGF5czogNywKICAgICAgICBob3VyczogNyAqIDI0LAogICAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgZGF5czogewogICAgICAgIGhvdXJzOiAyNCwKICAgICAgICBtaW51dGVzOiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sCiAgICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sCiAgICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sCiAgICB9LAogICAgY2FzdWFsTWF0cml4ID0gewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogMTMsCiAgICAgICAgZGF5czogOTEsCiAgICAgICAgaG91cnM6IDkxICogMjQsCiAgICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogNCwKICAgICAgICBkYXlzOiAzMCwKICAgICAgICBob3VyczogMzAgKiAyNCwKICAgICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCgogICAgICAuLi5sb3dPcmRlck1hdHJpeCwKICAgIH0sCiAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsCiAgICBhY2N1cmF0ZU1hdHJpeCA9IHsKICAgICAgeWVhcnM6IHsKICAgICAgICBxdWFydGVyczogNCwKICAgICAgICBtb250aHM6IDEyLAogICAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsCiAgICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCwKICAgICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsCiAgICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCwKICAgICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LAogICAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgLi4ubG93T3JkZXJNYXRyaXgsCiAgICB9OwoKICAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKICBjb25zdCBvcmRlcmVkVW5pdHMkMSA9IFsKICAgICJ5ZWFycyIsCiAgICAicXVhcnRlcnMiLAogICAgIm1vbnRocyIsCiAgICAid2Vla3MiLAogICAgImRheXMiLAogICAgImhvdXJzIiwKICAgICJtaW51dGVzIiwKICAgICJzZWNvbmRzIiwKICAgICJtaWxsaXNlY29uZHMiLAogIF07CgogIGNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cyQxLnNsaWNlKDApLnJldmVyc2UoKTsKCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zICJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXMiCiAgZnVuY3Rpb24gY2xvbmUkMShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHsKICAgIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHMKICAgIGNvbnN0IGNvbmYgPSB7CiAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LAogICAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLAogICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksCiAgICAgIG1hdHJpeDogYWx0cy5tYXRyaXggfHwgZHVyLm1hdHJpeCwKICAgIH07CiAgICByZXR1cm4gbmV3IER1cmF0aW9uKGNvbmYpOwogIH0KCiAgZnVuY3Rpb24gYW50aVRydW5jKG4pIHsKICAgIHJldHVybiBuIDwgMCA/IE1hdGguZmxvb3IobikgOiBNYXRoLmNlaWwobik7CiAgfQoKICAvLyBOQjogbXV0YXRlcyBwYXJhbWV0ZXJzCiAgZnVuY3Rpb24gY29udmVydChtYXRyaXgsIGZyb21NYXAsIGZyb21Vbml0LCB0b01hcCwgdG9Vbml0KSB7CiAgICBjb25zdCBjb252ID0gbWF0cml4W3RvVW5pdF1bZnJvbVVuaXRdLAogICAgICByYXcgPSBmcm9tTWFwW2Zyb21Vbml0XSAvIGNvbnYsCiAgICAgIHNhbWVTaWduID0gTWF0aC5zaWduKHJhdykgPT09IE1hdGguc2lnbih0b01hcFt0b1VuaXRdKSwKICAgICAgLy8gb2ssIHNvIHRoaXMgaXMgd2lsZCwgYnV0IHNlZSB0aGUgbWF0cml4IGluIHRoZSB0ZXN0cwogICAgICBhZGRlZCA9CiAgICAgICAgIXNhbWVTaWduICYmIHRvTWFwW3RvVW5pdF0gIT09IDAgJiYgTWF0aC5hYnMocmF3KSA8PSAxID8gYW50aVRydW5jKHJhdykgOiBNYXRoLnRydW5jKHJhdyk7CiAgICB0b01hcFt0b1VuaXRdICs9IGFkZGVkOwogICAgZnJvbU1hcFtmcm9tVW5pdF0gLT0gYWRkZWQgKiBjb252OwogIH0KCiAgLy8gTkI6IG11dGF0ZXMgcGFyYW1ldGVycwogIGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlcyhtYXRyaXgsIHZhbHMpIHsKICAgIHJldmVyc2VVbml0cy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7CiAgICAgIGlmICghaXNVbmRlZmluZWQodmFsc1tjdXJyZW50XSkpIHsKICAgICAgICBpZiAocHJldmlvdXMpIHsKICAgICAgICAgIGNvbnZlcnQobWF0cml4LCB2YWxzLCBwcmV2aW91cywgdmFscywgY3VycmVudCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwcmV2aW91czsKICAgICAgfQogICAgfSwgbnVsbCk7CiAgfQoKICAvLyBSZW1vdmUgYWxsIHByb3BlcnRpZXMgd2l0aCBhIHZhbHVlIG9mIDAgZnJvbSBhbiBvYmplY3QKICBmdW5jdGlvbiByZW1vdmVaZXJvZXModmFscykgewogICAgY29uc3QgbmV3VmFscyA9IHt9OwogICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFscykpIHsKICAgICAgaWYgKHZhbHVlICE9PSAwKSB7CiAgICAgICAgbmV3VmFsc1trZXldID0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZXdWYWxzOwogIH0KCiAgLyoqCiAgICogQSBEdXJhdGlvbiBvYmplY3QgcmVwcmVzZW50cyBhIHBlcmlvZCBvZiB0aW1lLCBsaWtlICIyIG1vbnRocyIgb3IgIjEgZGF5LCAxIGhvdXIiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy4KICAgKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy4KICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn0KICAgKgogICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgKi8KICBjbGFzcyBEdXJhdGlvbiB7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgIGxldCBtYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwoKICAgICAgaWYgKGNvbmZpZy5tYXRyaXgpIHsKICAgICAgICBtYXRyaXggPSBjb25maWcubWF0cml4OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuY29udmVyc2lvbkFjY3VyYWN5ID0gYWNjdXJhdGUgPyAibG9uZ3Rlcm0iIDogImNhc3VhbCI7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubWF0cml4ID0gbWF0cml4OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5cwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBjdXN0b20gY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHsKICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICJvYmplY3QiKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7CiAgICAgICAgICBvYmogPT09IG51bGwgPyAibnVsbCIgOiB0eXBlb2Ygb2JqCiAgICAgICAgfWAKICAgICAgICApOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsKICAgICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5OiBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSwKICAgICAgICBtYXRyaXg6IG9wdHMubWF0cml4LAogICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZQogICAgICogT25lIG9mOgogICAgICogLSBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHMKICAgICAqIC0gRHVyYXRpb24gaW5zdGFuY2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uTGlrZSkpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbkxpa2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBVbmtub3duIGR1cmF0aW9uIGFyZ3VtZW50ICR7ZHVyYXRpb25MaWtlfSBvZiB0eXBlICR7dHlwZW9mIGR1cmF0aW9uTGlrZX1gCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBwcmVzZXQgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9ucwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm1hdHJpeD1PYmplY3RdIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgeWVhcjogInllYXJzIiwKICAgICAgICB5ZWFyczogInllYXJzIiwKICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlcnMiLAogICAgICAgIG1vbnRoOiAibW9udGhzIiwKICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgIHdlZWs6ICJ3ZWVrcyIsCiAgICAgICAgd2Vla3M6ICJ3ZWVrcyIsCiAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgZGF5czogImRheXMiLAogICAgICAgIGhvdXI6ICJob3VycyIsCiAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgbWludXRlOiAibWludXRlcyIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZXMiLAogICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgIHNlY29uZHM6ICJzZWNvbmRzIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kcyIsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIiwKICAgICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07CgogICAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpOwoKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb24KICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOgogICAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kcwogICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAqICogYG1gIGZvciBtaW51dGVzCiAgICAgKiAqIGBoYCBmb3IgaG91cnMKICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgKiAqIGB3YCBmb3Igd2Vla3MKICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAqICogYHlgIGZvciB5ZWFycwogICAgICogTm90ZXM6CiAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgKiAqIFRva2VucyBjYW4gYmUgZXNjYXBlZCBieSB3cmFwcGluZyB3aXRoIHNpbmdsZSBxdW90ZXMuCiAgICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5IGQgcyIpIC8vPT4gIjEgNiAyIgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoIk0gUyIpIC8vPT4gIjEyIDUxODQwMjAwMCIKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHsKICAgICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdAogICAgICBjb25zdCBmbXRPcHRzID0gewogICAgICAgIC4uLm9wdHMsCiAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLAogICAgICB9OwogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KQogICAgICAgIDogSU5WQUxJRCQyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLgogICAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL051bWJlckZvcm1hdAogICAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLgogICAgICogQGV4YW1wbGUKICAgICAqIGBgYGpzCiAgICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pCiAgICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnCiAgICAgKiBkdXIudG9IdW1hbih7IGxpc3RTdHlsZTogImxvbmciIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJwogICAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogInNob3J0IiB9KSAvLz0+ICcxIGRheSwgNSBociwgNiBtaW4nCiAgICAgKiBgYGAKICAgICAqLwogICAgdG9IdW1hbihvcHRzID0ge30pIHsKICAgICAgY29uc3QgbCA9IG9yZGVyZWRVbml0cyQxCiAgICAgICAgLm1hcCgodW5pdCkgPT4gewogICAgICAgICAgY29uc3QgdmFsID0gdGhpcy52YWx1ZXNbdW5pdF07CiAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB0aGlzLmxvYwogICAgICAgICAgICAubnVtYmVyRm9ybWF0dGVyKHsgc3R5bGU6ICJ1bml0IiwgdW5pdERpc3BsYXk6ICJsb25nIiwgLi4ub3B0cywgdW5pdDogdW5pdC5zbGljZSgwLCAtMSkgfSkKICAgICAgICAgICAgLmZvcm1hdCh2YWwpOwogICAgICAgIH0pCiAgICAgICAgLmZpbHRlcigobikgPT4gbik7CgogICAgICByZXR1cm4gdGhpcy5sb2MKICAgICAgICAubGlzdEZvcm1hdHRlcih7IHR5cGU6ICJjb25qdW5jdGlvbiIsIHN0eWxlOiBvcHRzLmxpc3RTdHlsZSB8fCAibmFycm93IiwgLi4ub3B0cyB9KQogICAgICAgIC5mb3JtYXQobCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGlzIER1cmF0aW9uJ3MgdmFsdWVzLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgdG9PYmplY3QoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4ge307CiAgICAgIHJldHVybiB7IC4uLnRoaXMudmFsdWVzIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbi4KICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDMsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDNZVDQ1UycKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDQsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDRNVDQ1UycKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDUgfSkudG9JU08oKSAvLz0+ICdQNU0nCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogNSB9KS50b0lTTygpIC8vPT4gJ1BUNU0nCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWlsbGlzZWNvbmRzOiA2IH0pLnRvSVNPKCkgLy89PiAnUFQwLjAwNlMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPKCkgewogICAgICAvLyB3ZSBjb3VsZCB1c2UgdGhlIGZvcm1hdHRlciwgYnV0IHRoaXMgaXMgYW4gZWFzaWVyIHdheSB0byBnZXQgdGhlIG1pbmltdW0gc3RyaW5nCiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIGxldCBzID0gIlAiOwogICAgICBpZiAodGhpcy55ZWFycyAhPT0gMCkgcyArPSB0aGlzLnllYXJzICsgIlkiOwogICAgICBpZiAodGhpcy5tb250aHMgIT09IDAgfHwgdGhpcy5xdWFydGVycyAhPT0gMCkgcyArPSB0aGlzLm1vbnRocyArIHRoaXMucXVhcnRlcnMgKiAzICsgIk0iOwogICAgICBpZiAodGhpcy53ZWVrcyAhPT0gMCkgcyArPSB0aGlzLndlZWtzICsgIlciOwogICAgICBpZiAodGhpcy5kYXlzICE9PSAwKSBzICs9IHRoaXMuZGF5cyArICJEIjsKICAgICAgaWYgKHRoaXMuaG91cnMgIT09IDAgfHwgdGhpcy5taW51dGVzICE9PSAwIHx8IHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkKICAgICAgICBzICs9ICJUIjsKICAgICAgaWYgKHRoaXMuaG91cnMgIT09IDApIHMgKz0gdGhpcy5ob3VycyArICJIIjsKICAgICAgaWYgKHRoaXMubWludXRlcyAhPT0gMCkgcyArPSB0aGlzLm1pbnV0ZXMgKyAiTSI7CiAgICAgIGlmICh0aGlzLnNlY29uZHMgIT09IDAgfHwgdGhpcy5taWxsaXNlY29uZHMgIT09IDApCiAgICAgICAgLy8gdGhpcyB3aWxsIGhhbmRsZSAiZmxvYXRpbmcgcG9pbnQgbWFkbmVzcyIgYnkgcmVtb3ZpbmcgZXh0cmEgZGVjaW1hbCBwbGFjZXMKICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81ODgwMDQvaXMtZmxvYXRpbmctcG9pbnQtbWF0aC1icm9rZW4KICAgICAgICBzICs9IHJvdW5kVG8odGhpcy5zZWNvbmRzICsgdGhpcy5taWxsaXNlY29uZHMgLyAxMDAwLCAzKSArICJTIjsKICAgICAgaWYgKHMgPT09ICJQIikgcyArPSAiVDBTIjsKICAgICAgcmV0dXJuIHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiwgZm9ybWF0dGVkIGFzIGEgdGltZSBvZiBkYXkuCiAgICAgKiBOb3RlIHRoYXQgdGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoZSBkdXJhdGlvbiBpcyBpbnZhbGlkLCBuZWdhdGl2ZSwgb3IgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDI0IGhvdXJzLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVQcmVmaXg9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgYFRgIHByZWZpeAogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSgpIC8vPT4gJzExOjAwOjAwLjAwMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NNaWxsaXNlY29uZHM6IHRydWUgfSkgLy89PiAnMTE6MDA6MDAnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMTE6MDA6MDAuMDAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMTEwMDAwLjAwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09UaW1lKG9wdHMgPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIG51bGw7CgogICAgICBjb25zdCBtaWxsaXMgPSB0aGlzLnRvTWlsbGlzKCk7CiAgICAgIGlmIChtaWxsaXMgPCAwIHx8IG1pbGxpcyA+PSA4NjQwMDAwMCkgcmV0dXJuIG51bGw7CgogICAgICBvcHRzID0gewogICAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzOiBmYWxzZSwKICAgICAgICBzdXBwcmVzc1NlY29uZHM6IGZhbHNlLAogICAgICAgIGluY2x1ZGVQcmVmaXg6IGZhbHNlLAogICAgICAgIGZvcm1hdDogImV4dGVuZGVkIiwKICAgICAgICAuLi5vcHRzLAogICAgICB9OwoKICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnNoaWZ0VG8oImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiKTsKCiAgICAgIGxldCBmbXQgPSBvcHRzLmZvcm1hdCA9PT0gImJhc2ljIiA/ICJoaG1tIiA6ICJoaDptbSI7CgogICAgICBpZiAoIW9wdHMuc3VwcHJlc3NTZWNvbmRzIHx8IHZhbHVlLnNlY29uZHMgIT09IDAgfHwgdmFsdWUubWlsbGlzZWNvbmRzICE9PSAwKSB7CiAgICAgICAgZm10ICs9IG9wdHMuZm9ybWF0ID09PSAiYmFzaWMiID8gInNzIiA6ICI6c3MiOwogICAgICAgIGlmICghb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcyB8fCB2YWx1ZS5taWxsaXNlY29uZHMgIT09IDApIHsKICAgICAgICAgIGZtdCArPSAiLlNTUyI7CiAgICAgICAgfQogICAgICB9CgogICAgICBsZXQgc3RyID0gdmFsdWUudG9Gb3JtYXQoZm10KTsKCiAgICAgIGlmIChvcHRzLmluY2x1ZGVQcmVmaXgpIHsKICAgICAgICBzdHIgPSAiVCIgKyBzdHI7CiAgICAgIH0KCiAgICAgIHJldHVybiBzdHI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0pTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSVNPKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBkZWJ1Z2dpbmcuCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU3RyaW5nKCkgewogICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBtaWxsaXNlY29uZHMgdmFsdWUgb2YgdGhpcyBEdXJhdGlvbi4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdG9NaWxsaXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmFzKCJtaWxsaXNlY29uZHMiKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uIEFsaWFzIG9mIHtAbGluayB0b01pbGxpc30KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdmFsdWVPZigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBsb25nZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHBsdXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksCiAgICAgICAgcmVzdWx0ID0ge307CgogICAgICBmb3IgKGNvbnN0IGsgb2Ygb3JkZXJlZFVuaXRzJDEpIHsKICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkoZHVyLnZhbHVlcywgaykgfHwgaGFzT3duUHJvcGVydHkodGhpcy52YWx1ZXMsIGspKSB7CiAgICAgICAgICByZXN1bHRba10gPSBkdXIuZ2V0KGspICsgdGhpcy5nZXQoayk7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogTWFrZSB0aGlzIER1cmF0aW9uIHNob3J0ZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgbWludXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CiAgICAgIHJldHVybiB0aGlzLnBsdXMoZHVyLm5lZ2F0ZSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNjYWxlIHRoaXMgRHVyYXRpb24gYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCB1bml0LiBBcml0eSBpcyAxIG9yIDI6IHRoZSB2YWx1ZSBvZiB0aGUgdW5pdCBhbmQsIG9wdGlvbmFsbHksIHRoZSB1bml0IG5hbWUuIE11c3QgcmV0dXJuIGEgbnVtYmVyLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBtaW51dGVzOiAzMCB9KS5tYXBVbml0cyh4ID0+IHggKiAyKSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDYwIH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgbWludXRlczogMzAgfSkubWFwVW5pdHMoKHgsIHUpID0+IHUgPT09ICJob3VycyIgPyB4ICogMiA6IHgpIC8vPT4geyBob3VyczogMiwgbWludXRlczogMzAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG1hcFVuaXRzKGZuKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgY29uc3QgcmVzdWx0ID0ge307CiAgICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpIHsKICAgICAgICByZXN1bHRba10gPSBhc051bWJlcihmbih0aGlzLnZhbHVlc1trXSwgaykpOwogICAgICB9CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiByZXN1bHQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHZhbHVlIG9mIHVuaXQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGUnIG9yICdkYXknCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgneWVhcnMnKSAvLz0+IDIKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCdtb250aHMnKSAvLz0+IDAKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCdkYXlzJykgLy89PiAzCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCh1bml0KSB7CiAgICAgIHJldHVybiB0aGlzW0R1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCldOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IHZhbHVlcyAtIGEgbWFwcGluZyBvZiB1bml0cyB0byBudW1iZXJzCiAgICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgeWVhcnM6IDIwMTcgfSkKICAgICAqIEBleGFtcGxlIGR1ci5zZXQoeyBob3VyczogOCwgbWludXRlczogMzAgfSkKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzZXQodmFsdWVzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IG1peGVkID0geyAuLi50aGlzLnZhbHVlcywgLi4ubm9ybWFsaXplT2JqZWN0KHZhbHVlcywgRHVyYXRpb24ubm9ybWFsaXplVW5pdCkgfTsKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IG1peGVkIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIGxvY2FsZSBhbmQvb3IgbnVtYmVyaW5nU3lzdGVtLiAgUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQGV4YW1wbGUgZHVyLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgY29udmVyc2lvbkFjY3VyYWN5LCBtYXRyaXggfSA9IHt9KSB7CiAgICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0gfSk7CiAgICAgIGNvbnN0IG9wdHMgPSB7IGxvYywgbWF0cml4LCBjb252ZXJzaW9uQWNjdXJhY3kgfTsKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgZHVyYXRpb24gaW4gdGhlIHNwZWNpZmllZCB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlcycgb3IgJ2RheXMnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdkYXlzJykgLy89PiAzNjUKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAxfSkuYXMoJ21vbnRocycpIC8vPT4gMTIKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe2hvdXJzOiA2MH0pLmFzKCdkYXlzJykgLy89PiAyLjUKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgYXModW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5zaGlmdFRvKHVuaXQpLmdldCh1bml0KSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJlZHVjZSB0aGlzIER1cmF0aW9uIHRvIGl0cyBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gaW4gaXRzIGN1cnJlbnQgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDIsIGRheXM6IDUwMDAgfSkubm9ybWFsaXplKCkudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDE1LCBkYXlzOiAyNTUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMiwgbWludXRlczogLTQ1IH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMTUgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5vcm1hbGl6ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2NhbGUgdW5pdHMgdG8gaXRzIGxhcmdlc3QgcmVwcmVzZW50YXRpb24KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDkwMDAwIH0pLnJlc2NhbGUoKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiAxLCBzZWNvbmRzOiAzMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVzY2FsZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gcmVtb3ZlWmVyb2VzKHRoaXMubm9ybWFsaXplKCkuc2hpZnRUb0FsbCgpLnRvT2JqZWN0KCkpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG8oLi4udW5pdHMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CgogICAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7CgogICAgICBjb25zdCBidWlsdCA9IHt9LAogICAgICAgIGFjY3VtdWxhdGVkID0ge30sCiAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgbGV0IGxhc3RVbml0OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkgewogICAgICAgICAgbGFzdFVuaXQgPSBrOwoKICAgICAgICAgIGxldCBvd24gPSAwOwoKICAgICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdAogICAgICAgICAgZm9yIChjb25zdCBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgdGhhdCdzIGFscmVhZHkgaW4gdGhpcyB1bml0CiAgICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHsKICAgICAgICAgICAgb3duICs9IHZhbHNba107CiAgICAgICAgICB9CgogICAgICAgICAgY29uc3QgaSA9IE1hdGgudHJ1bmMob3duKTsKICAgICAgICAgIGJ1aWx0W2tdID0gaTsKICAgICAgICAgIGFjY3VtdWxhdGVkW2tdID0gKG93biAqIDEwMDAgLSBpICogMTAwMCkgLyAxMDAwOwoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgZnVydGhlciBkb3duIHRoZSBjaGFpbiB0aGF0IHNob3VsZCBiZSByb2xsZWQgdXAgaW4gdG8gdGhpcwogICAgICAgICAgZm9yIChjb25zdCBkb3duIGluIHZhbHMpIHsKICAgICAgICAgICAgaWYgKG9yZGVyZWRVbml0cyQxLmluZGV4T2YoZG93bikgPiBvcmRlcmVkVW5pdHMkMS5pbmRleE9mKGspKSB7CiAgICAgICAgICAgICAgY29udmVydCh0aGlzLm1hdHJpeCwgdmFscywgZG93biwgYnVpbHQsIGspOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICAvLyBvdGhlcndpc2UsIGtlZXAgaXQgaW4gdGhlIHdpbmdzIHRvIGJvaWwgaXQgbGF0ZXIKICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKHZhbHNba10pKSB7CiAgICAgICAgICBhY2N1bXVsYXRlZFtrXSA9IHZhbHNba107CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBhbnl0aGluZyBsZWZ0b3ZlciBiZWNvbWVzIHRoZSBkZWNpbWFsIGZvciB0aGUgbGFzdCB1bml0CiAgICAgIC8vIGxhc3RVbml0IG11c3QgYmUgZGVmaW5lZCBzaW5jZSB1bml0cyBpcyBub3QgZW1wdHkKICAgICAgZm9yIChjb25zdCBrZXkgaW4gYWNjdW11bGF0ZWQpIHsKICAgICAgICBpZiAoYWNjdW11bGF0ZWRba2V5XSAhPT0gMCkgewogICAgICAgICAgYnVpbHRbbGFzdFVuaXRdICs9CiAgICAgICAgICAgIGtleSA9PT0gbGFzdFVuaXQgPyBhY2N1bXVsYXRlZFtrZXldIDogYWNjdW11bGF0ZWRba2V5XSAvIHRoaXMubWF0cml4W2xhc3RVbml0XVtrZXldOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IGJ1aWx0IH0sIHRydWUpLm5vcm1hbGl6ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogU2hpZnQgdGhpcyBEdXJhdGlvbiB0byBhbGwgYXZhaWxhYmxlIHVuaXRzLgogICAgICogU2FtZSBhcyBzaGlmdFRvKCJ5ZWFycyIsICJtb250aHMiLCAid2Vla3MiLCAiZGF5cyIsICJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiLCAibWlsbGlzZWNvbmRzIikKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzaGlmdFRvQWxsKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIHJldHVybiB0aGlzLnNoaWZ0VG8oCiAgICAgICAgInllYXJzIiwKICAgICAgICAibW9udGhzIiwKICAgICAgICAid2Vla3MiLAogICAgICAgICJkYXlzIiwKICAgICAgICAiaG91cnMiLAogICAgICAgICJtaW51dGVzIiwKICAgICAgICAic2Vjb25kcyIsCiAgICAgICAgIm1pbGxpc2Vjb25kcyIKICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbmVnYXRpdmUgb2YgdGhpcyBEdXJhdGlvbi4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgc2Vjb25kczogMzAgfSkubmVnYXRlKCkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IC0xLCBzZWNvbmRzOiAtMzAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5lZ2F0ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBuZWdhdGVkID0ge307CiAgICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpIHsKICAgICAgICBuZWdhdGVkW2tdID0gdGhpcy52YWx1ZXNba10gPT09IDAgPyAwIDogLXRoaXMudmFsdWVzW2tdOwogICAgICB9CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiBuZWdhdGVkIH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB5ZWFycy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB5ZWFycygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnllYXJzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHF1YXJ0ZXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHF1YXJ0ZXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMucXVhcnRlcnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbW9udGhzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1vbnRocygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1vbnRocyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB3ZWVrcwogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMud2Vla3MgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGF5cy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBkYXlzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuZGF5cyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBob3Vycy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBob3VycygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLmhvdXJzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbnV0ZXMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWludXRlcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbnV0ZXMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2Vjb25kcy4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgZ2V0IHNlY29uZHMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5zZWNvbmRzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbGxpc2Vjb25kcy4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1pbGxpc2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbGxpc2Vjb25kcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBEdXJhdGlvbiBpcyBpbnZhbGlkLiBJbnZhbGlkIGR1cmF0aW9ucyBhcmUgcmV0dXJuZWQgYnkgZGlmZiBvcGVyYXRpb25zCiAgICAgKiBvbiBpbnZhbGlkIERhdGVUaW1lcyBvciBJbnRlcnZhbHMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA9PT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICBnZXQgaW52YWxpZFJlYXNvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEdXJhdGlvbiBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRHVyYXRpb24gaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogRXF1YWxpdHkgY2hlY2sKICAgICAqIFR3byBEdXJhdGlvbnMgYXJlIGVxdWFsIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUgdW5pdHMgYW5kIHRoZSBzYW1lIHZhbHVlcyBmb3IgZWFjaCB1bml0LgogICAgICogQHBhcmFtIHtEdXJhdGlvbn0gb3RoZXIKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGVxdWFscyhvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhb3RoZXIuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQoKICAgICAgaWYgKCF0aGlzLmxvYy5lcXVhbHMob3RoZXIubG9jKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gZXEodjEsIHYyKSB7CiAgICAgICAgLy8gQ29uc2lkZXIgMCBhbmQgdW5kZWZpbmVkIGFzIGVxdWFsCiAgICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQgfHwgdjEgPT09IDApIHJldHVybiB2MiA9PT0gdW5kZWZpbmVkIHx8IHYyID09PSAwOwogICAgICAgIHJldHVybiB2MSA9PT0gdjI7CiAgICAgIH0KCiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMkMSkgewogICAgICAgIGlmICghZXEodGhpcy52YWx1ZXNbdV0sIG90aGVyLnZhbHVlc1t1XSkpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgfQoKICBjb25zdCBJTlZBTElEJDEgPSAiSW52YWxpZCBJbnRlcnZhbCI7CgogIC8vIGNoZWNrcyBpZiB0aGUgc3RhcnQgaXMgZXF1YWwgdG8gb3IgYmVmb3JlIHRoZSBlbmQKICBmdW5jdGlvbiB2YWxpZGF0ZVN0YXJ0RW5kKHN0YXJ0LCBlbmQpIHsKICAgIGlmICghc3RhcnQgfHwgIXN0YXJ0LmlzVmFsaWQpIHsKICAgICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoIm1pc3Npbmcgb3IgaW52YWxpZCBzdGFydCIpOwogICAgfSBlbHNlIGlmICghZW5kIHx8ICFlbmQuaXNWYWxpZCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIGVuZCIpOwogICAgfSBlbHNlIGlmIChlbmQgPCBzdGFydCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgKICAgICAgICAiZW5kIGJlZm9yZSBzdGFydCIsCiAgICAgICAgYFRoZSBlbmQgb2YgYW4gaW50ZXJ2YWwgbXVzdCBiZSBhZnRlciBpdHMgc3RhcnQsIGJ1dCB5b3UgaGFkIHN0YXJ0PSR7c3RhcnQudG9JU08oKX0gYW5kIGVuZD0ke2VuZC50b0lTTygpfWAKICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgLyoqCiAgICogQW4gSW50ZXJ2YWwgb2JqZWN0IHJlcHJlc2VudHMgYSBoYWxmLW9wZW4gaW50ZXJ2YWwgb2YgdGltZSwgd2hlcmUgZWFjaCBlbmRwb2ludCBpcyBhIHtAbGluayBEYXRlVGltZX0uIENvbmNlcHR1YWxseSwgaXQncyBhIGNvbnRhaW5lciBmb3IgdGhvc2UgdHdvIGVuZHBvaW50cywgYWNjb21wYW5pZWQgYnkgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIGNvbXBhcmluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBhbmQgZ2V0dGVycyBpbiBJbnRlcnZhbDoKICAgKgogICAqICogKipDcmVhdGlvbioqIFRvIGNyZWF0ZSBhbiBJbnRlcnZhbCwgdXNlIHtAbGluayBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzfSwge0BsaW5rIEludGVydmFsLmFmdGVyfSwge0BsaW5rIEludGVydmFsLmJlZm9yZX0sIG9yIHtAbGluayBJbnRlcnZhbC5mcm9tSVNPfS4KICAgKiAqICoqQWNjZXNzb3JzKiogVXNlIHtAbGluayBJbnRlcnZhbCNzdGFydH0gYW5kIHtAbGluayBJbnRlcnZhbCNlbmR9IHRvIGdldCB0aGUgc3RhcnQgYW5kIGVuZC4KICAgKiAqICoqSW50ZXJyb2dhdGlvbioqIFRvIGFuYWx5emUgdGhlIEludGVydmFsLCB1c2Uge0BsaW5rIEludGVydmFsI2NvdW50fSwge0BsaW5rIEludGVydmFsI2xlbmd0aH0sIHtAbGluayBJbnRlcnZhbCNoYXNTYW1lfSwge0BsaW5rIEludGVydmFsI2NvbnRhaW5zfSwge0BsaW5rIEludGVydmFsI2lzQWZ0ZXJ9LCBvciB7QGxpbmsgSW50ZXJ2YWwjaXNCZWZvcmV9LgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqIFRvIGNyZWF0ZSBvdGhlciBJbnRlcnZhbHMgb3V0IG9mIHRoaXMgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI3NldH0sIHtAbGluayBJbnRlcnZhbCNzcGxpdEF0fSwge0BsaW5rIEludGVydmFsI3NwbGl0Qnl9LCB7QGxpbmsgSW50ZXJ2YWwjZGl2aWRlRXF1YWxseX0sIHtAbGluayBJbnRlcnZhbC5tZXJnZX0sIHtAbGluayBJbnRlcnZhbC54b3J9LCB7QGxpbmsgSW50ZXJ2YWwjdW5pb259LCB7QGxpbmsgSW50ZXJ2YWwjaW50ZXJzZWN0aW9ufSwgb3Ige0BsaW5rIEludGVydmFsI2RpZmZlcmVuY2V9LgogICAqICogKipDb21wYXJpc29uKiogVG8gY29tcGFyZSB0aGlzIEludGVydmFsIHRvIGFub3RoZXIgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI2VxdWFsc30sIHtAbGluayBJbnRlcnZhbCNvdmVybGFwc30sIHtAbGluayBJbnRlcnZhbCNhYnV0c1N0YXJ0fSwge0BsaW5rIEludGVydmFsI2FidXRzRW5kfSwge0BsaW5rIEludGVydmFsI2VuZ3VsZnN9CiAgICogKiAqKk91dHB1dCoqIFRvIGNvbnZlcnQgdGhlIEludGVydmFsIGludG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCBzZWUge0BsaW5rIEludGVydmFsI3RvU3RyaW5nfSwge0BsaW5rIEludGVydmFsI3RvTG9jYWxlU3RyaW5nfSwge0BsaW5rIEludGVydmFsI3RvSVNPfSwge0BsaW5rIEludGVydmFsI3RvSVNPRGF0ZX0sIHtAbGluayBJbnRlcnZhbCN0b0lTT1RpbWV9LCB7QGxpbmsgSW50ZXJ2YWwjdG9Gb3JtYXR9LCBhbmQge0BsaW5rIEludGVydmFsI3RvRHVyYXRpb259LgogICAqLwogIGNsYXNzIEludGVydmFsIHsKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwogICAgY29uc3RydWN0b3IoY29uZmlnKSB7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMucyA9IGNvbmZpZy5zdGFydDsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5lID0gY29uZmlnLmVuZDsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5pbnZhbGlkID0gY29uZmlnLmludmFsaWQgfHwgbnVsbDsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5pc0x1eG9uSW50ZXJ2YWwgPSB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgSW50ZXJ2YWwuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBJbnRlcnZhbCBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgSW50ZXJ2YWwgaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRJbnRlcnZhbEVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwoeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhIHN0YXJ0IERhdGVUaW1lIGFuZCBhbiBlbmQgRGF0ZVRpbWUuIEluY2x1c2l2ZSBvZiB0aGUgc3RhcnQgYnV0IG5vdCB0aGUgZW5kLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IGVuZAogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpIHsKICAgICAgY29uc3QgYnVpbHRTdGFydCA9IGZyaWVuZGx5RGF0ZVRpbWUoc3RhcnQpLAogICAgICAgIGJ1aWx0RW5kID0gZnJpZW5kbHlEYXRlVGltZShlbmQpOwoKICAgICAgY29uc3QgdmFsaWRhdGVFcnJvciA9IHZhbGlkYXRlU3RhcnRFbmQoYnVpbHRTdGFydCwgYnVpbHRFbmQpOwoKICAgICAgaWYgKHZhbGlkYXRlRXJyb3IgPT0gbnVsbCkgewogICAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwoewogICAgICAgICAgc3RhcnQ6IGJ1aWx0U3RhcnQsCiAgICAgICAgICBlbmQ6IGJ1aWx0RW5kLAogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB2YWxpZGF0ZUVycm9yOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhIHN0YXJ0IERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCB0by4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IHN0YXJ0CiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGFmdGVyKHN0YXJ0LCBkdXJhdGlvbikgewogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKSwKICAgICAgICBkdCA9IGZyaWVuZGx5RGF0ZVRpbWUoc3RhcnQpOwogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdCwgZHQucGx1cyhkdXIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIGVuZCBEYXRlVGltZSBhbmQgYSBEdXJhdGlvbiB0byBleHRlbmQgYmFja3dhcmRzIHRvLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGJlZm9yZShlbmQsIGR1cmF0aW9uKSB7CiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShlbmQpOwogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdC5taW51cyhkdXIpLCBkdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhbiBJU08gODYwMSBzdHJpbmcuCiAgICAgKiBBY2NlcHRzIGA8c3RhcnQ+LzxlbmQ+YCwgYDxzdGFydD4vPGR1cmF0aW9uPmAsIGFuZCBgPGR1cmF0aW9uPi88ZW5kPmAgZm9ybWF0cy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIElTTyBzdHJpbmcgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBvcHRpb25zIHRvIHBhc3Mge0BsaW5rIERhdGVUaW1lI2Zyb21JU099IGFuZCBvcHRpb25hbGx5IHtAbGluayBEdXJhdGlvbiNmcm9tSVNPfQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMpIHsKICAgICAgY29uc3QgW3MsIGVdID0gKHRleHQgfHwgIiIpLnNwbGl0KCIvIiwgMik7CiAgICAgIGlmIChzICYmIGUpIHsKICAgICAgICBsZXQgc3RhcnQsIHN0YXJ0SXNWYWxpZDsKICAgICAgICB0cnkgewogICAgICAgICAgc3RhcnQgPSBEYXRlVGltZS5mcm9tSVNPKHMsIG9wdHMpOwogICAgICAgICAgc3RhcnRJc1ZhbGlkID0gc3RhcnQuaXNWYWxpZDsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBzdGFydElzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGxldCBlbmQsIGVuZElzVmFsaWQ7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGVuZCA9IERhdGVUaW1lLmZyb21JU08oZSwgb3B0cyk7CiAgICAgICAgICBlbmRJc1ZhbGlkID0gZW5kLmlzVmFsaWQ7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgZW5kSXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCAmJiBlbmRJc1ZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCwgZW5kKTsKICAgICAgICB9CgogICAgICAgIGlmIChzdGFydElzVmFsaWQpIHsKICAgICAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21JU08oZSwgb3B0cyk7CiAgICAgICAgICBpZiAoZHVyLmlzVmFsaWQpIHsKICAgICAgICAgICAgcmV0dXJuIEludGVydmFsLmFmdGVyKHN0YXJ0LCBkdXIpOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoZW5kSXNWYWxpZCkgewogICAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhzLCBvcHRzKTsKICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYmVmb3JlKGVuZCwgZHVyKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBJbnRlcnZhbC4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0ludGVydmFsKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkludGVydmFsKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHN0YXJ0IG9mIHRoZSBJbnRlcnZhbAogICAgICogQHR5cGUge0RhdGVUaW1lfQogICAgICovCiAgICBnZXQgc3RhcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnMgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZW5kIG9mIHRoZSBJbnRlcnZhbAogICAgICogQHR5cGUge0RhdGVUaW1lfQogICAgICovCiAgICBnZXQgZW5kKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5lIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGF0IGxlYXN0IGl0cyBzdGFydCwgbWVhbmluZyB0aGF0IHRoZSBJbnRlcnZhbCBpc24ndCAnYmFja3dhcmRzJy4KICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZFJlYXNvbiA9PT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIEludGVydmFsIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIEludGVydmFsIGlzIHZhbGlkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgaW52YWxpZFJlYXNvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBJbnRlcnZhbCBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbCBpbiB0aGUgc3BlY2lmaWVkIHVuaXQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byByZXR1cm4gdGhlIGxlbmd0aCBpbi4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgbGVuZ3RoKHVuaXQgPSAibWlsbGlzZWNvbmRzIikgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0R1cmF0aW9uKC4uLlt1bml0XSkuZ2V0KHVuaXQpIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY291bnQgb2YgbWludXRlcywgaG91cnMsIGRheXMsIG1vbnRocywgb3IgeWVhcnMgaW5jbHVkZWQgaW4gdGhlIEludGVydmFsLCBldmVuIGluIHBhcnQuCiAgICAgKiBVbmxpa2Uge0BsaW5rIEludGVydmFsI2xlbmd0aH0gdGhpcyBjb3VudHMgc2VjdGlvbnMgb2YgdGhlIGNhbGVuZGFyLCBub3QgcGVyaW9kcyBvZiB0aW1lLCBlLmcuIHNwZWNpZnlpbmcgJ2RheScKICAgICAqIGFza3MgJ3doYXQgZGF0ZXMgYXJlIGluY2x1ZGVkIGluIHRoaXMgaW50ZXJ2YWw/Jywgbm90ICdob3cgbWFueSBkYXlzIGxvbmcgaXMgdGhpcyBpbnRlcnZhbD8nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3VuaXQ9J21pbGxpc2Vjb25kcyddIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgY291bnQodW5pdCA9ICJtaWxsaXNlY29uZHMiKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gTmFOOwogICAgICBjb25zdCBzdGFydCA9IHRoaXMuc3RhcnQuc3RhcnRPZih1bml0KSwKICAgICAgICBlbmQgPSB0aGlzLmVuZC5zdGFydE9mKHVuaXQpOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihlbmQuZGlmZihzdGFydCwgdW5pdCkuZ2V0KHVuaXQpKSArIDE7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5pc0VtcHR5KCkgfHwgdGhpcy5lLm1pbnVzKDEpLmhhc1NhbWUodGhpcy5zLCB1bml0KSA6IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0VtcHR5KCkgewogICAgICByZXR1cm4gdGhpcy5zLnZhbHVlT2YoKSA9PT0gdGhpcy5lLnZhbHVlT2YoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGlzQWZ0ZXIoZGF0ZVRpbWUpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGNvbnRhaW5zKGRhdGVUaW1lKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0cyIgdGhlIHN0YXJ0IGFuZC9vciBlbmQgZGF0ZXMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldAogICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuZW5kIC0gdGhlIGVuZGluZyBEYXRlVGltZQogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHNldCh7IHN0YXJ0LCBlbmQgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzcGxpdEF0KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXMKICAgICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSkKICAgICAgICAgIC5maWx0ZXIoKGQpID0+IHRoaXMuY29udGFpbnMoZCkpCiAgICAgICAgICAuc29ydCgpLAogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpID0gMDsKCiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLAogICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaSArPSAxOwogICAgICB9CgogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLgogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CgogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhZHVyLmlzVmFsaWQgfHwgZHVyLmFzKCJtaWxsaXNlY29uZHMiKSA9PT0gMCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQoKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpZHggPSAxLAogICAgICAgIG5leHQ7CgogICAgICBjb25zdCByZXN1bHRzID0gW107CiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7CiAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaWR4ICs9IDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgZGl2aWRlRXF1YWxseShudW1iZXJPZlBhcnRzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBvdmVybGFwcyhvdGhlcikgewogICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgYWJ1dHNTdGFydChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBhYnV0c0VuZChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGVuZ3VsZnMgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlbmd1bGZzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gb3RoZXIucyAmJiB0aGlzLmUgPj0gb3RoZXIuZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLnMuZXF1YWxzKG90aGVyLnMpICYmIHRoaXMuZS5lcXVhbHMob3RoZXIuZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIGludGVyc2VjdGlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CgogICAgICBpZiAocyA+PSBlKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtaW5pbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtYXhpbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bmlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPCBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy4KICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHMKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzCiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucykKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHsKICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFtbXSwgbnVsbF0KICAgICAgICApOwogICAgICBpZiAoZmluYWwpIHsKICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgfQogICAgICByZXR1cm4gZm91bmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHN0YXRpYyB4b3IoaW50ZXJ2YWxzKSB7CiAgICAgIGxldCBzdGFydCA9IG51bGwsCiAgICAgICAgY3VycmVudENvdW50ID0gMDsKICAgICAgY29uc3QgcmVzdWx0cyA9IFtdLAogICAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbCiAgICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogInMiIH0sCiAgICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogImUiIH0sCiAgICAgICAgXSksCiAgICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSwKICAgICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTsKCiAgICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHsKICAgICAgICBjdXJyZW50Q291bnQgKz0gaS50eXBlID09PSAicyIgPyAxIDogLTE7CgogICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgIHN0YXJ0ID0gaS50aW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTsKICAgICAgICAgIH0KCiAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKQogICAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKQogICAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IOKAkyAke3RoaXMuZS50b0lTTygpfSlgOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgSW50ZXJ2YWwuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUKICAgICAqIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMKICAgICAqIHtAbGluayBEYXRlVGltZS5EQVRFX0ZVTEx9IG9yIHtAbGluayBEYXRlVGltZS5USU1FX1NJTVBMRX0uIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZAogICAgICogaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICAgKiBJbnRlcnZhbCBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbgogICAgICogc3BlY2lmaWVkLgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICogQHBhcmFtIHtPYmplY3R9IFtmb3JtYXRPcHRzPURhdGVUaW1lLkRBVEVfU0hPUlRdIC0gRWl0aGVyIGEgRGF0ZVRpbWUgcHJlc2V0IG9yCiAgICAgKiBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN0YXJ0IERhdGVUaW1lLgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDExLzcvMjAyMiDigJMgMTEvOC8yMDIyCiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDA5OjAwWi8yMDIyLTExLTA4VDA5OjAwWicpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gTm92ZW1iZXIgNyDigJMgOCwgMjAyMgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnItRlInIH0pOyAvLz0+IDfigJM4IG5vdmVtYnJlIDIwMjIKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+IDY6MDAg4oCTIDg6MDAgUE0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gTW9uLCBOb3YgMDcsIDY6MDAg4oCTIDg6MDAgcAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5zLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0SW50ZXJ2YWwodGhpcykKICAgICAgICA6IElOVkFMSUQkMTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT30KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08ob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRpbWUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQKICAgICAqIHN0cmluZy4gKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZQogICAgICogZm9ybWF0dGluZyB0b29sLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSBUaGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLgogICAgICogU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gQSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICogcmVwcmVzZW50YXRpb25zLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9ICIg4oCTICIgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvRm9ybWF0KGRhdGVGb3JtYXQpfSR7c2VwYXJhdG9yfSR7dGhpcy5lLnRvRm9ybWF0KGRhdGVGb3JtYXQpfWA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHRvRHVyYXRpb24odW5pdCwgb3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKHRoaXMuaW52YWxpZFJlYXNvbik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGbgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpCiAgICAgKi8KICAgIG1hcEVuZHBvaW50cyhtYXBGbikgewogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICovCiAgY2xhc3MgSW5mbyB7CiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7CiAgICAgIGNvbnN0IHByb3RvID0gRGF0ZVRpbWUubm93KCkuc2V0Wm9uZSh6b25lKS5zZXQoeyBtb250aDogMTIgfSk7CgogICAgICByZXR1cm4gIXpvbmUuaXNVbml2ZXJzYWwgJiYgcHJvdG8ub2Zmc2V0ICE9PSBwcm90by5zZXQoeyBtb250aDogNiB9KS5vZmZzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzVmFsaWRJQU5BWm9uZSh6b25lKSB7CiAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLgogICAgICoKICAgICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlCiAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lCiAgICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuCiAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC4KICAgICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy4KICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9mhJwogICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiacq7IEknCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1vbnRocygKICAgICAgbGVuZ3RoID0gImxvbmciLAogICAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gImdyZWdvcnkiIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IG1vbnRoIG5hbWVzLgogICAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jbW9udGhzfQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJudW1lcmljIiwgIjItZGlnaXQiLCAibmFycm93IiwgInNob3J0IiwgImxvbmciCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXIKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbW9udGhzRm9ybWF0KAogICAgICBsZW5ndGggPSAibG9uZyIsCiAgICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSAiZ3JlZ29yeSIgfSA9IHt9CiAgICApIHsKICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknCiAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2KfZhNin2KvZhtmK2YYnCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9ICJsb25nIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkgewogICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoCiAgICAgIGxlbmd0aCA9ICJsb25nIiwKICAgICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICfhgJThgLbhgJThgIDhgLonLCAn4YCK4YCU4YCxJyBdCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdCiAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IErDqXN1cy1DaHJpc3QnLCAnYXByw6hzIErDqXN1cy1DaHJpc3QnIF0KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgZXJhcyhsZW5ndGggPSAic2hvcnQiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgImdyZWdvcnkiKS5lcmFzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS4KICAgICAqIEtleXM6CiAgICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcKICAgICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZlYXR1cmVzKCkgewogICAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikgewogICAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksCiAgICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7CiAgICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcygiZGF5cyIpKTsKICB9CgogIGZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7CiAgICBjb25zdCBkaWZmZXJzID0gWwogICAgICBbInllYXJzIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sCiAgICAgIFsicXVhcnRlcnMiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyICsgKGIueWVhciAtIGEueWVhcikgKiA0XSwKICAgICAgWyJtb250aHMiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSwKICAgICAgWwogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgKGEsIGIpID0+IHsKICAgICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpOwogICAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3OwogICAgICAgIH0sCiAgICAgIF0sCiAgICAgIFsiZGF5cyIsIGRheURpZmZdLAogICAgXTsKCiAgICBjb25zdCByZXN1bHRzID0ge307CiAgICBjb25zdCBlYXJsaWVyID0gY3Vyc29yOwogICAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7CgogICAgZm9yIChjb25zdCBbdW5pdCwgZGlmZmVyXSBvZiBkaWZmZXJzKSB7CiAgICAgIGlmICh1bml0cy5pbmRleE9mKHVuaXQpID49IDApIHsKICAgICAgICBsb3dlc3RPcmRlciA9IHVuaXQ7CgogICAgICAgIHJlc3VsdHNbdW5pdF0gPSBkaWZmZXIoY3Vyc29yLCBsYXRlcik7CiAgICAgICAgaGlnaFdhdGVyID0gZWFybGllci5wbHVzKHJlc3VsdHMpOwoKICAgICAgICBpZiAoaGlnaFdhdGVyID4gbGF0ZXIpIHsKICAgICAgICAgIHJlc3VsdHNbdW5pdF0tLTsKICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3Vyc29yID0gaGlnaFdhdGVyOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTsKICB9CgogIGZ1bmN0aW9uIGRpZmYgKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykgewogICAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTsKCiAgICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjsKCiAgICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoCiAgICAgICh1KSA9PiBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiXS5pbmRleE9mKHUpID49IDAKICAgICk7CgogICAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHsKICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pOwogICAgICB9CgogICAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHsKICAgICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpOwogICAgICB9CiAgICB9CgogICAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpOwoKICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpCiAgICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKQogICAgICAgIC5wbHVzKGR1cmF0aW9uKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBkdXJhdGlvbjsKICAgIH0KICB9CgogIGNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICBhcmFiOiAiW1x1MDY2MC1cdTA2NjldIiwKICAgIGFyYWJleHQ6ICJbXHUwNkYwLVx1MDZGOV0iLAogICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICBiZW5nOiAiW1x1MDlFNi1cdTA5RUZdIiwKICAgIGRldmE6ICJbXHUwOTY2LVx1MDk2Rl0iLAogICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgZ3VqcjogIltcdTBBRTYtXHUwQUVGXSIsCiAgICBoYW5pZGVjOiAiW+OAh3zkuIB85LqMfOS4iXzlm5t85LqUfOWFrXzkuIN85YWrfOS5nV0iLAogICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICBrbmRhOiAiW1x1MENFNi1cdTBDRUZdIiwKICAgIGxhb286ICJbXHUwRUQwLVx1MEVEOV0iLAogICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICBtbHltOiAiW1x1MEQ2Ni1cdTBENkZdIiwKICAgIG1vbmc6ICJbXHUxODEwLVx1MTgxOV0iLAogICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICBvcnlhOiAiW1x1MEI2Ni1cdTBCNkZdIiwKICAgIHRhbWxkZWM6ICJbXHUwQkU2LVx1MEJFRl0iLAogICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICB0aGFpOiAiW1x1MEU1MC1cdTBFNTldIiwKICAgIHRpYnQ6ICJbXHUwRjIwLVx1MEYyOV0iLAogICAgbGF0bjogIlxcZCIsCiAgfTsKCiAgY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgYXJhYjogWzE2MzIsIDE2NDFdLAogICAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLAogICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgYmVuZzogWzI1MzQsIDI1NDNdLAogICAgZGV2YTogWzI0MDYsIDI0MTVdLAogICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgZ3VqcjogWzI3OTAsIDI3OTldLAogICAga2htcjogWzYxMTIsIDYxMjFdLAogICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgbGFvbzogWzM3OTIsIDM4MDFdLAogICAgbGltYjogWzY0NzAsIDY0NzldLAogICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgbW9uZzogWzYxNjAsIDYxNjldLAogICAgbXltcjogWzQxNjAsIDQxNjldLAogICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLAogICAgdGVsdTogWzMxNzQsIDMxODNdLAogICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgdGlidDogWzM4NzIsIDM4ODFdLAogIH07CgogIGNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFt8XF1dL2csICIiKS5zcGxpdCgiIik7CgogIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7CiAgICBpZiAoaXNOYU4odmFsdWUpKSB7CiAgICAgIHZhbHVlID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwoKICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7CiAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTsKICAgICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7CiAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gIiIpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8ICJsYXRuIl19JHthcHBlbmR9YCk7CiAgfQoKICBjb25zdCBNSVNTSU5HX0ZUUCA9ICJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0IjsKCiAgZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07CiAgfQoKICBjb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogIGNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gOwogIGNvbnN0IHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHsKICAgIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbAogICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgcmV0dXJuIHMucmVwbGFjZSgvXC4vZywgIlxcLj8iKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICByZXR1cm4gcwogICAgICAucmVwbGFjZSgvXC4vZywgIiIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsCiAgICAgIC5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCAiICIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwCiAgICAgIC50b0xvd2VyQ2FzZSgpOwogIH0KCiAgZnVuY3Rpb24gb25lT2Yoc3RyaW5ncywgc3RhcnRJbmRleCkgewogICAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgIGRlc2VyOiAoW3NdKSA9PgogICAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LAogICAgICB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFssIGgsIG1dKSA9PiBzaWduZWRPZmZzZXQoaCwgbSksIGdyb3VwcyB9OwogIH0KCiAgZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTsKICB9CgogIGZ1bmN0aW9uIGVzY2FwZVRva2VuKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgIlxcJCYiKTsKICB9CgogIGZ1bmN0aW9uIHVuaXRGb3JUb2tlbih0b2tlbiwgbG9jKSB7CiAgICBjb25zdCBvbmUgPSBkaWdpdFJlZ2V4KGxvYyksCiAgICAgIHR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezJ9IiksCiAgICAgIHRocmVlID0gZGlnaXRSZWdleChsb2MsICJ7M30iKSwKICAgICAgZm91ciA9IGRpZ2l0UmVnZXgobG9jLCAiezR9IiksCiAgICAgIHNpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezZ9IiksCiAgICAgIG9uZU9yVHdvID0gZGlnaXRSZWdleChsb2MsICJ7MSwyfSIpLAogICAgICBvbmVUb1RocmVlID0gZGlnaXRSZWdleChsb2MsICJ7MSwzfSIpLAogICAgICBvbmVUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezEsNn0iKSwKICAgICAgb25lVG9OaW5lID0gZGlnaXRSZWdleChsb2MsICJ7MSw5fSIpLAogICAgICB0d29Ub0ZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgInsyLDR9IiksCiAgICAgIGZvdXJUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezQsNn0iKSwKICAgICAgbGl0ZXJhbCA9ICh0KSA9PiAoeyByZWdleDogUmVnRXhwKGVzY2FwZVRva2VuKHQudmFsKSksIGRlc2VyOiAoW3NdKSA9PiBzLCBsaXRlcmFsOiB0cnVlIH0pLAogICAgICB1bml0YXRlID0gKHQpID0+IHsKICAgICAgICBpZiAodG9rZW4ubGl0ZXJhbCkgewogICAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7CiAgICAgICAgfQogICAgICAgIHN3aXRjaCAodC52YWwpIHsKICAgICAgICAgIC8vIGVyYQogICAgICAgICAgY2FzZSAiRyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcygic2hvcnQiLCBmYWxzZSksIDApOwogICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoImxvbmciLCBmYWxzZSksIDApOwogICAgICAgICAgLy8geWVhcnMKICAgICAgICAgIGNhc2UgInkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1NpeCk7CiAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwogICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXIpOwogICAgICAgICAgY2FzZSAieXl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyVG9TaXgpOwogICAgICAgICAgY2FzZSAieXl5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoc2l4KTsKICAgICAgICAgIC8vIG1vbnRocwogICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIk1NIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIk1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIHRydWUsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJNTU1NIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCB0cnVlLCBmYWxzZSksIDEpOwogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIGZhbHNlLCBmYWxzZSksIDEpOwogICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgZmFsc2UsIGZhbHNlKSwgMSk7CiAgICAgICAgICAvLyBkYXRlcwogICAgICAgICAgY2FzZSAiZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIC8vIG9yZGluYWxzCiAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7CiAgICAgICAgICBjYXNlICJvb28iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICAvLyB0aW1lCiAgICAgICAgICBjYXNlICJISCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAiaGgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiaCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIm1tIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAicXEiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAicyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInNzIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1RocmVlKTsKICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHRocmVlKTsKICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZVRvTmluZSk7CiAgICAgICAgICBjYXNlICJ1dSI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUob25lT3JUd28pOwogICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTsKICAgICAgICAgIC8vIG1lcmlkaWVtCiAgICAgICAgICBjYXNlICJhIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tZXJpZGllbXMoKSwgMCk7CiAgICAgICAgICAvLyB3ZWVrWWVhciAoaykKICAgICAgICAgIGNhc2UgImtra2siOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyKTsKICAgICAgICAgIGNhc2UgImtrIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7CiAgICAgICAgICAvLyB3ZWVrTnVtYmVyIChXKQogICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIldXIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIC8vIHdlZWtkYXlzCiAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgIGNhc2UgImMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmUpOwogICAgICAgICAgY2FzZSAiRUVFIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygic2hvcnQiLCBmYWxzZSwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJsb25nIiwgZmFsc2UsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJzaG9ydCIsIHRydWUsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJjY2NjIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygibG9uZyIsIHRydWUsIGZhbHNlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQogICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICBjYXNlICJaWiI6CiAgICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpOwogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpOwogICAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmcKICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2F5IHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGV5IGFyZQogICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUoL1thLXpfKy0vXXsxLDI1Nn0/L2kpOwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGNvbnN0IHVuaXQgPSB1bml0YXRlKHRva2VuKSB8fCB7CiAgICAgIGludmFsaWRSZWFzb246IE1JU1NJTkdfRlRQLAogICAgfTsKCiAgICB1bml0LnRva2VuID0gdG9rZW47CgogICAgcmV0dXJuIHVuaXQ7CiAgfQoKICBjb25zdCBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbCA9IHsKICAgIHllYXI6IHsKICAgICAgIjItZGlnaXQiOiAieXkiLAogICAgICBudW1lcmljOiAieXl5eXkiLAogICAgfSwKICAgIG1vbnRoOiB7CiAgICAgIG51bWVyaWM6ICJNIiwKICAgICAgIjItZGlnaXQiOiAiTU0iLAogICAgICBzaG9ydDogIk1NTSIsCiAgICAgIGxvbmc6ICJNTU1NIiwKICAgIH0sCiAgICBkYXk6IHsKICAgICAgbnVtZXJpYzogImQiLAogICAgICAiMi1kaWdpdCI6ICJkZCIsCiAgICB9LAogICAgd2Vla2RheTogewogICAgICBzaG9ydDogIkVFRSIsCiAgICAgIGxvbmc6ICJFRUVFIiwKICAgIH0sCiAgICBkYXlwZXJpb2Q6ICJhIiwKICAgIGRheVBlcmlvZDogImEiLAogICAgaG91cjogewogICAgICBudW1lcmljOiAiaCIsCiAgICAgICIyLWRpZ2l0IjogImhoIiwKICAgIH0sCiAgICBtaW51dGU6IHsKICAgICAgbnVtZXJpYzogIm0iLAogICAgICAiMi1kaWdpdCI6ICJtbSIsCiAgICB9LAogICAgc2Vjb25kOiB7CiAgICAgIG51bWVyaWM6ICJzIiwKICAgICAgIjItZGlnaXQiOiAic3MiLAogICAgfSwKICAgIHRpbWVab25lTmFtZTogewogICAgICBsb25nOiAiWlpaWloiLAogICAgICBzaG9ydDogIlpaWiIsCiAgICB9LAogIH07CgogIGZ1bmN0aW9uIHRva2VuRm9yUGFydChwYXJ0LCBmb3JtYXRPcHRzKSB7CiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0OwoKICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBsaXRlcmFsOiB0cnVlLAogICAgICAgIHZhbDogdmFsdWUsCiAgICAgIH07CiAgICB9CgogICAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwoKICAgIGxldCB2YWwgPSBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbFt0eXBlXTsKICAgIGlmICh0eXBlb2YgdmFsID09PSAib2JqZWN0IikgewogICAgICB2YWwgPSB2YWxbc3R5bGVdOwogICAgfQoKICAgIGlmICh2YWwpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBsaXRlcmFsOiBmYWxzZSwKICAgICAgICB2YWwsCiAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHVuZGVmaW5lZDsKICB9CgogIGZ1bmN0aW9uIGJ1aWxkUmVnZXgodW5pdHMpIHsKICAgIGNvbnN0IHJlID0gdW5pdHMubWFwKCh1KSA9PiB1LnJlZ2V4KS5yZWR1Y2UoKGYsIHIpID0+IGAke2Z9KCR7ci5zb3VyY2V9KWAsICIiKTsKICAgIHJldHVybiBbYF4ke3JlfSRgLCB1bml0c107CiAgfQoKICBmdW5jdGlvbiBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSB7CiAgICBjb25zdCBtYXRjaGVzID0gaW5wdXQubWF0Y2gocmVnZXgpOwoKICAgIGlmIChtYXRjaGVzKSB7CiAgICAgIGNvbnN0IGFsbCA9IHt9OwogICAgICBsZXQgbWF0Y2hJbmRleCA9IDE7CiAgICAgIGZvciAoY29uc3QgaSBpbiBoYW5kbGVycykgewogICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShoYW5kbGVycywgaSkpIHsKICAgICAgICAgIGNvbnN0IGggPSBoYW5kbGVyc1tpXSwKICAgICAgICAgICAgZ3JvdXBzID0gaC5ncm91cHMgPyBoLmdyb3VwcyArIDEgOiAxOwogICAgICAgICAgaWYgKCFoLmxpdGVyYWwgJiYgaC50b2tlbikgewogICAgICAgICAgICBhbGxbaC50b2tlbi52YWxbMF1dID0gaC5kZXNlcihtYXRjaGVzLnNsaWNlKG1hdGNoSW5kZXgsIG1hdGNoSW5kZXggKyBncm91cHMpKTsKICAgICAgICAgIH0KICAgICAgICAgIG1hdGNoSW5kZXggKz0gZ3JvdXBzOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gW21hdGNoZXMsIGFsbF07CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gW21hdGNoZXMsIHt9XTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykgewogICAgY29uc3QgdG9GaWVsZCA9ICh0b2tlbikgPT4gewogICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICByZXR1cm4gIm1pbGxpc2Vjb25kIjsKICAgICAgICBjYXNlICJzIjoKICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICBjYXNlICJtIjoKICAgICAgICAgIHJldHVybiAibWludXRlIjsKICAgICAgICBjYXNlICJoIjoKICAgICAgICBjYXNlICJIIjoKICAgICAgICAgIHJldHVybiAiaG91ciI7CiAgICAgICAgY2FzZSAiZCI6CiAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICByZXR1cm4gIm9yZGluYWwiOwogICAgICAgIGNhc2UgIkwiOgogICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgcmV0dXJuICJtb250aCI7CiAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgIGNhc2UgIkUiOgogICAgICAgIGNhc2UgImMiOgogICAgICAgICAgcmV0dXJuICJ3ZWVrZGF5IjsKICAgICAgICBjYXNlICJXIjoKICAgICAgICAgIHJldHVybiAid2Vla051bWJlciI7CiAgICAgICAgY2FzZSAiayI6CiAgICAgICAgICByZXR1cm4gIndlZWtZZWFyIjsKICAgICAgICBjYXNlICJxIjoKICAgICAgICAgIHJldHVybiAicXVhcnRlciI7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICB9OwoKICAgIGxldCB6b25lID0gbnVsbDsKICAgIGxldCBzcGVjaWZpY09mZnNldDsKICAgIGlmICghaXNVbmRlZmluZWQobWF0Y2hlcy56KSkgewogICAgICB6b25lID0gSUFOQVpvbmUuY3JlYXRlKG1hdGNoZXMueik7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLlopKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHpvbmUgPSBuZXcgRml4ZWRPZmZzZXRab25lKG1hdGNoZXMuWik7CiAgICAgIH0KICAgICAgc3BlY2lmaWNPZmZzZXQgPSBtYXRjaGVzLlo7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnEpKSB7CiAgICAgIG1hdGNoZXMuTSA9IChtYXRjaGVzLnEgLSAxKSAqIDMgKyAxOwogICAgfQoKICAgIGlmICghaXNVbmRlZmluZWQobWF0Y2hlcy5oKSkgewogICAgICBpZiAobWF0Y2hlcy5oIDwgMTIgJiYgbWF0Y2hlcy5hID09PSAxKSB7CiAgICAgICAgbWF0Y2hlcy5oICs9IDEyOwogICAgICB9IGVsc2UgaWYgKG1hdGNoZXMuaCA9PT0gMTIgJiYgbWF0Y2hlcy5hID09PSAwKSB7CiAgICAgICAgbWF0Y2hlcy5oID0gMDsKICAgICAgfQogICAgfQoKICAgIGlmIChtYXRjaGVzLkcgPT09IDAgJiYgbWF0Y2hlcy55KSB7CiAgICAgIG1hdGNoZXMueSA9IC1tYXRjaGVzLnk7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnUpKSB7CiAgICAgIG1hdGNoZXMuUyA9IHBhcnNlTWlsbGlzKG1hdGNoZXMudSk7CiAgICB9CgogICAgY29uc3QgdmFscyA9IE9iamVjdC5rZXlzKG1hdGNoZXMpLnJlZHVjZSgociwgaykgPT4gewogICAgICBjb25zdCBmID0gdG9GaWVsZChrKTsKICAgICAgaWYgKGYpIHsKICAgICAgICByW2ZdID0gbWF0Y2hlc1trXTsKICAgICAgfQoKICAgICAgcmV0dXJuIHI7CiAgICB9LCB7fSk7CgogICAgcmV0dXJuIFt2YWxzLCB6b25lLCBzcGVjaWZpY09mZnNldF07CiAgfQoKICBsZXQgZHVtbXlEYXRlVGltZUNhY2hlID0gbnVsbDsKCiAgZnVuY3Rpb24gZ2V0RHVtbXlEYXRlVGltZSgpIHsKICAgIGlmICghZHVtbXlEYXRlVGltZUNhY2hlKSB7CiAgICAgIGR1bW15RGF0ZVRpbWVDYWNoZSA9IERhdGVUaW1lLmZyb21NaWxsaXMoMTU1NTU1NTU1NTU1NSk7CiAgICB9CgogICAgcmV0dXJuIGR1bW15RGF0ZVRpbWVDYWNoZTsKICB9CgogIGZ1bmN0aW9uIG1heWJlRXhwYW5kTWFjcm9Ub2tlbih0b2tlbiwgbG9jYWxlKSB7CiAgICBpZiAodG9rZW4ubGl0ZXJhbCkgewogICAgICByZXR1cm4gdG9rZW47CiAgICB9CgogICAgY29uc3QgZm9ybWF0T3B0cyA9IEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuLnZhbCk7CiAgICBjb25zdCB0b2tlbnMgPSBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgbG9jYWxlKTsKCiAgICBpZiAodG9rZW5zID09IG51bGwgfHwgdG9rZW5zLmluY2x1ZGVzKHVuZGVmaW5lZCkpIHsKICAgICAgcmV0dXJuIHRva2VuOwogICAgfQoKICAgIHJldHVybiB0b2tlbnM7CiAgfQoKICBmdW5jdGlvbiBleHBhbmRNYWNyb1Rva2Vucyh0b2tlbnMsIGxvY2FsZSkgewogICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQoLi4udG9rZW5zLm1hcCgodCkgPT4gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHQsIGxvY2FsZSkpKTsKICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGZ1bmN0aW9uIGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkgewogICAgY29uc3QgdG9rZW5zID0gZXhwYW5kTWFjcm9Ub2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZvcm1hdCksIGxvY2FsZSksCiAgICAgIHVuaXRzID0gdG9rZW5zLm1hcCgodCkgPT4gdW5pdEZvclRva2VuKHQsIGxvY2FsZSkpLAogICAgICBkaXNxdWFsaWZ5aW5nVW5pdCA9IHVuaXRzLmZpbmQoKHQpID0+IHQuaW52YWxpZFJlYXNvbik7CgogICAgaWYgKGRpc3F1YWxpZnlpbmdVbml0KSB7CiAgICAgIHJldHVybiB7IGlucHV0LCB0b2tlbnMsIGludmFsaWRSZWFzb246IGRpc3F1YWxpZnlpbmdVbml0LmludmFsaWRSZWFzb24gfTsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IFtyZWdleFN0cmluZywgaGFuZGxlcnNdID0gYnVpbGRSZWdleCh1bml0cyksCiAgICAgICAgcmVnZXggPSBSZWdFeHAocmVnZXhTdHJpbmcsICJpIiksCiAgICAgICAgW3Jhd01hdGNoZXMsIG1hdGNoZXNdID0gbWF0Y2goaW5wdXQsIHJlZ2V4LCBoYW5kbGVycyksCiAgICAgICAgW3Jlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXRdID0gbWF0Y2hlcwogICAgICAgICAgPyBkYXRlVGltZUZyb21NYXRjaGVzKG1hdGNoZXMpCiAgICAgICAgICA6IFtudWxsLCBudWxsLCB1bmRlZmluZWRdOwogICAgICBpZiAoaGFzT3duUHJvcGVydHkobWF0Y2hlcywgImEiKSAmJiBoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCAiSCIpKSB7CiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKAogICAgICAgICAgIkNhbid0IGluY2x1ZGUgbWVyaWRpZW0gd2hlbiBzcGVjaWZ5aW5nIDI0LWhvdXIgZm9ybWF0IgogICAgICAgICk7CiAgICAgIH0KICAgICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgcmVnZXgsIHJhd01hdGNoZXMsIG1hdGNoZXMsIHJlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXQgfTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHBhcnNlRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpIHsKICAgIGNvbnN0IHsgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZFJlYXNvbiB9ID0gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KTsKICAgIHJldHVybiBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZFJlYXNvbl07CiAgfQoKICBmdW5jdGlvbiBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgbG9jYWxlKSB7CiAgICBpZiAoIWZvcm1hdE9wdHMpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgY29uc3QgZm9ybWF0dGVyID0gRm9ybWF0dGVyLmNyZWF0ZShsb2NhbGUsIGZvcm1hdE9wdHMpOwogICAgY29uc3QgcGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0RGF0ZVRpbWVQYXJ0cyhnZXREdW1teURhdGVUaW1lKCkpOwogICAgcmV0dXJuIHBhcnRzLm1hcCgocCkgPT4gdG9rZW5Gb3JQYXJ0KHAsIGZvcm1hdE9wdHMpKTsKICB9CgogIGNvbnN0IG5vbkxlYXBMYWRkZXIgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzRdLAogICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogIGZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7CiAgICByZXR1cm4gbmV3IEludmFsaWQoCiAgICAgICJ1bml0IG91dCBvZiByYW5nZSIsCiAgICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYAogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTsKCiAgICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KCiAgICBjb25zdCBqcyA9IGQuZ2V0VVRDRGF5KCk7CgogICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogIH0KCiAgZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkgewogICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHsKICAgIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLAogICAgICBtb250aDAgPSB0YWJsZS5maW5kSW5kZXgoKGkpID0+IGkgPCBvcmRpbmFsKSwKICAgICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07CiAgICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikgewogICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLAogICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7CgogICAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLAogICAgICB3ZWVrWWVhcjsKCiAgICBpZiAod2Vla051bWJlciA8IDEpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyIC0gMTsKICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyICsgMTsKICAgICAgd2Vla051bWJlciA9IDE7CiAgICB9IGVsc2UgewogICAgICB3ZWVrWWVhciA9IHllYXI7CiAgICB9CgogICAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTsKICB9CgogIGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkgewogICAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsCiAgICAgIHdlZWtkYXlPZkphbjQgPSBkYXlPZldlZWsod2Vla1llYXIsIDEsIDQpLAogICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CgogICAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMywKICAgICAgeWVhcjsKCiAgICBpZiAob3JkaW5hbCA8IDEpIHsKICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpOwogICAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykgewogICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpOwogICAgfSBlbHNlIHsKICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgfQoKICAgIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTsKICAgIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07CiAgfQoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHsKICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ0RhdGE7CiAgICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9OwogIH0KCiAgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7CiAgICBjb25zdCB7IHllYXIsIG9yZGluYWwgfSA9IG9yZGluYWxEYXRhOwogICAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpOwogICAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHsKICAgIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoud2Vla1llYXIpLAogICAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLAogICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrWWVhciIsIG9iai53ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrIiwgb2JqLndlZWspOwogICAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm9yZGluYWwiLCBvYmoub3JkaW5hbCk7CiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE1vbnRoID0gaW50ZWdlckJldHdlZW4ob2JqLm1vbnRoLCAxLCAxMiksCiAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtb250aCIsIG9iai5tb250aCk7CiAgICB9IGVsc2UgaWYgKCF2YWxpZERheSkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHsKICAgIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7CiAgICBjb25zdCB2YWxpZEhvdXIgPQogICAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fAogICAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSwKICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSwKICAgICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpOwoKICAgIGlmICghdmFsaWRIb3VyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtaW51dGUiLCBtaW51dGUpOwogICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJzZWNvbmQiLCBzZWNvbmQpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGNvbnN0IElOVkFMSUQgPSAiSW52YWxpZCBEYXRlVGltZSI7CiAgY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1OwoKICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bnN1cHBvcnRlZCB6b25lIiwgYHRoZSB6b25lICIke3pvbmUubmFtZX0iIGlzIG5vdCBzdXBwb3J0ZWRgKTsKICB9CgogIC8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlCiAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7CiAgICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpOwogICAgfQogICAgcmV0dXJuIGR0LndlZWtEYXRhOwogIH0KCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCAibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zIi4gYWxsICJzZXR0ZXJzIiByZWFsbHkgdXNlIHRoaXMKICAvLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllcwogIGZ1bmN0aW9uIGNsb25lKGluc3QsIGFsdHMpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSB7CiAgICAgIHRzOiBpbnN0LnRzLAogICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgIGM6IGluc3QuYywKICAgICAgbzogaW5zdC5vLAogICAgICBsb2M6IGluc3QubG9jLAogICAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsCiAgICB9OwogICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IC4uLmN1cnJlbnQsIC4uLmFsdHMsIG9sZDogY3VycmVudCB9KTsKICB9CgogIC8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaAogIC8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpCiAgZnVuY3Rpb24gZml4T2Zmc2V0KGxvY2FsVFMsIG8sIHR6KSB7CiAgICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3MKICAgIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOwoKICAgIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHMKICAgIGNvbnN0IG8yID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKICAgIGlmIChvID09PSBvMikgewogICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTsKICAgIH0KCiAgICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldAogICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7CgogICAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lCiAgICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7CiAgICBpZiAobzIgPT09IG8zKSB7CiAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTsKICAgIH0KCiAgICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lCiAgICByZXR1cm4gW2xvY2FsVFMgLSBNYXRoLm1pbihvMiwgbzMpICogNjAgKiAxMDAwLCBNYXRoLm1heChvMiwgbzMpXTsKICB9CgogIC8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0CiAgZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7CiAgICB0cyArPSBvZmZzZXQgKiA2MCAqIDEwMDA7CgogICAgY29uc3QgZCA9IG5ldyBEYXRlKHRzKTsKCiAgICByZXR1cm4gewogICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLAogICAgICBkYXk6IGQuZ2V0VVRDRGF0ZSgpLAogICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksCiAgICAgIHNlY29uZDogZC5nZXRVVENTZWNvbmRzKCksCiAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLAogICAgfTsKICB9CgogIC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKICBmdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7CiAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogIH0KCiAgLy8gY3JlYXRlIGEgbmV3IERUIGluc3RhbmNlIGJ5IGFkZGluZyBhIGR1cmF0aW9uLCBhZGp1c3RpbmcgZm9yIERTVHMKICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgY29uc3Qgb1ByZSA9IGluc3QubywKICAgICAgeWVhciA9IGluc3QuYy55ZWFyICsgTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLAogICAgICBjID0gewogICAgICAgIC4uLmluc3QuYywKICAgICAgICB5ZWFyLAogICAgICAgIG1vbnRoLAogICAgICAgIGRheToKICAgICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNywKICAgICAgfSwKICAgICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsKICAgICAgICB5ZWFyczogZHVyLnllYXJzIC0gTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksCiAgICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSwKICAgICAgICB3ZWVrczogZHVyLndlZWtzIC0gTWF0aC50cnVuYyhkdXIud2Vla3MpLAogICAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksCiAgICAgICAgaG91cnM6IGR1ci5ob3VycywKICAgICAgICBtaW51dGVzOiBkdXIubWludXRlcywKICAgICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcywKICAgICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTsKCiAgICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpOwoKICAgIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkgewogICAgICB0cyArPSBtaWxsaXNUb0FkZDsKICAgICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQogICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICB9CgogICAgcmV0dXJuIHsgdHMsIG8gfTsKICB9CgogIC8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlcwogIC8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnMKICBmdW5jdGlvbiBwYXJzZURhdGFUb0RhdGVUaW1lKHBhcnNlZCwgcGFyc2VkWm9uZSwgb3B0cywgZm9ybWF0LCB0ZXh0LCBzcGVjaWZpY09mZnNldCkgewogICAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzOwogICAgaWYgKHBhcnNlZCAmJiBPYmplY3Qua2V5cyhwYXJzZWQpLmxlbmd0aCAhPT0gMCkgewogICAgICBjb25zdCBpbnRlcnByZXRhdGlvblpvbmUgPSBwYXJzZWRab25lIHx8IHpvbmUsCiAgICAgICAgaW5zdCA9IERhdGVUaW1lLmZyb21PYmplY3QocGFyc2VkLCB7CiAgICAgICAgICAuLi5vcHRzLAogICAgICAgICAgem9uZTogaW50ZXJwcmV0YXRpb25ab25lLAogICAgICAgICAgc3BlY2lmaWNPZmZzZXQsCiAgICAgICAgfSk7CiAgICAgIHJldHVybiBzZXRab25lID8gaW5zdCA6IGluc3Quc2V0Wm9uZSh6b25lKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKAogICAgICAgIG5ldyBJbnZhbGlkKCJ1bnBhcnNhYmxlIiwgYHRoZSBpbnB1dCAiJHt0ZXh0fSIgY2FuJ3QgYmUgcGFyc2VkIGFzICR7Zm9ybWF0fWApCiAgICAgICk7CiAgICB9CiAgfQoKICAvLyBpZiB5b3Ugd2FudCB0byBvdXRwdXQgYSB0ZWNobmljYWwgZm9ybWF0IChlLmcuIFJGQyAyODIyKSwgdGhpcyBoZWxwZXIKICAvLyBoZWxwcyBoYW5kbGUgdGhlIGRldGFpbHMKICBmdW5jdGlvbiB0b1RlY2hGb3JtYXQoZHQsIGZvcm1hdCwgYWxsb3daID0gdHJ1ZSkgewogICAgcmV0dXJuIGR0LmlzVmFsaWQKICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKExvY2FsZS5jcmVhdGUoImVuLVVTIiksIHsKICAgICAgICAgIGFsbG93WiwKICAgICAgICAgIGZvcmNlU2ltcGxlOiB0cnVlLAogICAgICAgIH0pLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm9ybWF0KQogICAgICA6IG51bGw7CiAgfQoKICBmdW5jdGlvbiB0b0lTT0RhdGUobywgZXh0ZW5kZWQpIHsKICAgIGNvbnN0IGxvbmdGb3JtYXQgPSBvLmMueWVhciA+IDk5OTkgfHwgby5jLnllYXIgPCAwOwogICAgbGV0IGMgPSAiIjsKICAgIGlmIChsb25nRm9ybWF0ICYmIG8uYy55ZWFyID49IDApIGMgKz0gIisiOwogICAgYyArPSBwYWRTdGFydChvLmMueWVhciwgbG9uZ0Zvcm1hdCA/IDYgOiA0KTsKCiAgICBpZiAoZXh0ZW5kZWQpIHsKICAgICAgYyArPSAiLSI7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1vbnRoKTsKICAgICAgYyArPSAiLSI7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLmRheSk7CiAgICB9IGVsc2UgewogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLmRheSk7CiAgICB9CiAgICByZXR1cm4gYzsKICB9CgogIGZ1bmN0aW9uIHRvSVNPVGltZSgKICAgIG8sCiAgICBleHRlbmRlZCwKICAgIHN1cHByZXNzU2Vjb25kcywKICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzLAogICAgaW5jbHVkZU9mZnNldCwKICAgIGV4dGVuZGVkWm9uZQogICkgewogICAgbGV0IGMgPSBwYWRTdGFydChvLmMuaG91cik7CiAgICBpZiAoZXh0ZW5kZWQpIHsKICAgICAgYyArPSAiOiI7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbnV0ZSk7CiAgICAgIGlmIChvLmMuc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc1NlY29uZHMpIHsKICAgICAgICBjICs9ICI6IjsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgYyArPSBwYWRTdGFydChvLmMubWludXRlKTsKICAgIH0KCiAgICBpZiAoby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7CgogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykgewogICAgICAgIGMgKz0gIi4iOwogICAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTsKICAgICAgfQogICAgfQoKICAgIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkgewogICAgICAgIGMgKz0gIloiOwogICAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHsKICAgICAgICBjICs9ICItIjsKICAgICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7CiAgICAgICAgYyArPSAiOiI7CiAgICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpOwogICAgICB9IGVsc2UgewogICAgICAgIGMgKz0gIisiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpOwogICAgICAgIGMgKz0gIjoiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpOwogICAgICB9CiAgICB9CgogICAgaWYgKGV4dGVuZGVkWm9uZSkgewogICAgICBjICs9ICJbIiArIG8uem9uZS5pYW5hTmFtZSArICJdIjsKICAgIH0KICAgIHJldHVybiBjOwogIH0KCiAgLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzCiAgY29uc3QgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH07CgogIC8vIFVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzLCBzb3J0ZWQgYnkgYmlnbmVzcwogIGNvbnN0IG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICBvcmRlcmVkV2Vla1VuaXRzID0gWwogICAgICAid2Vla1llYXIiLAogICAgICAid2Vla051bWJlciIsCiAgICAgICJ3ZWVrZGF5IiwKICAgICAgImhvdXIiLAogICAgICAibWludXRlIiwKICAgICAgInNlY29uZCIsCiAgICAgICJtaWxsaXNlY29uZCIsCiAgICBdLAogICAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFsieWVhciIsICJvcmRpbmFsIiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdOwoKICAvLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHMKICBmdW5jdGlvbiBub3JtYWxpemVVbml0KHVuaXQpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgeWVhcnM6ICJ5ZWFyIiwKICAgICAgbW9udGg6ICJtb250aCIsCiAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgZGF5OiAiZGF5IiwKICAgICAgZGF5czogImRheSIsCiAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgaG91cnM6ICJob3VyIiwKICAgICAgbWludXRlOiAibWludXRlIiwKICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgIHF1YXJ0ZXI6ICJxdWFydGVyIiwKICAgICAgcXVhcnRlcnM6ICJxdWFydGVyIiwKICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgc2Vjb25kczogInNlY29uZCIsCiAgICAgIG1pbGxpc2Vjb25kOiAibWlsbGlzZWNvbmQiLAogICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgIHdlZWtkYXk6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla2RheXM6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrc251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrbnVtYmVyczogIndlZWtOdW1iZXIiLAogICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgd2Vla3llYXJzOiAid2Vla1llYXIiLAogICAgICBvcmRpbmFsOiAib3JkaW5hbCIsCiAgICB9W3VuaXQudG9Mb3dlckNhc2UoKV07CgogICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKCiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogIC8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHMKICAvLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLgogIGZ1bmN0aW9uIHF1aWNrRFQob2JqLCBvcHRzKSB7CiAgICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgIHRzTm93ID0gU2V0dGluZ3Mubm93KCk7CgogICAgbGV0IHRzLCBvOwoKICAgIC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHsKICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgY29uc3Qgb2Zmc2V0UHJvdmlzID0gem9uZS5vZmZzZXQodHNOb3cpOwogICAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CiAgICB9IGVsc2UgewogICAgICB0cyA9IHRzTm93OwogICAgfQoKICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pOwogIH0KCiAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgIGNvbnN0IHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHsKICAgICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTsKICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBlbmQubG9jLmNsb25lKG9wdHMpLnJlbEZvcm1hdHRlcihvcHRzKTsKICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTsKICAgICAgfSwKICAgICAgZGlmZmVyID0gKHVuaXQpID0+IHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGlmIChvcHRzLnVuaXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdChkaWZmZXIob3B0cy51bml0KSwgb3B0cy51bml0KTsKICAgIH0KCiAgICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykgewogICAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTsKICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgfQoKICBmdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7CiAgICBsZXQgb3B0cyA9IHt9LAogICAgICBhcmdzOwogICAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSAib2JqZWN0IikgewogICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpOwogICAgfSBlbHNlIHsKICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICB9CiAgICByZXR1cm4gW29wdHMsIGFyZ3NdOwogIH0KCiAgLyoqCiAgICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6CiAgICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC4KICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgKgogICAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZS5sb2NhbH0sIHtAbGluayBEYXRlVGltZS51dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZS5mcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lLmZyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZS5mcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lLmZyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSlNEYXRlfS4KICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy4KICAgKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLgogICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LgogICAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uCiAgICoKICAgKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLgogICAqLwogIGNsYXNzIERhdGVUaW1lIHsKICAgIC8qKgogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7CgogICAgICBsZXQgaW52YWxpZCA9CiAgICAgICAgY29uZmlnLmludmFsaWQgfHwKICAgICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbCkgfHwKICAgICAgICAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwoKICAgICAgbGV0IGMgPSBudWxsLAogICAgICAgIG8gPSBudWxsOwogICAgICBpZiAoIWludmFsaWQpIHsKICAgICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTsKCiAgICAgICAgaWYgKHVuY2hhbmdlZCkgewogICAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTsKICAgICAgICAgIGludmFsaWQgPSBOdW1iZXIuaXNOYU4oYy55ZWFyKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsOwogICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgIG8gPSBpbnZhbGlkID8gbnVsbCA6IG90OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmMgPSBjOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLm8gPSBvOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICB9CgogICAgLy8gQ09OU1RSVUNUCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAqCiAgICAgKiBVc2UgU2V0dGluZ3MgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdCB2YWx1ZXMgaWYgbmVlZGVkLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBub3coKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiBub3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiAidXRjIiB9KSAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMCwgaW4gVVRDCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSkgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBsb2NhbCgpIHsKICAgICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSwKICAgICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7CiAgICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3llYXJdIC0gVGhlIGNhbGVuZGFyIHllYXIuIElmIG9taXR0ZWQgKGFzIGluLCBjYWxsIGB1dGMoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6ICJmciIgfSkgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWiB3aXRoIGEgRnJlbmNoIGxvY2FsZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgdXRjKCkgewogICAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJnczsKCiAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgdHMgPSBpc0RhdGUoZGF0ZSkgPyBkYXRlLnZhbHVlT2YoKSA6IE5hTjsKICAgICAgaWYgKE51bWJlci5pc05hTih0cykpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICB9CgogICAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICB0czogdHMsCiAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVEMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnQKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiVGltZXN0YW1wIG91dCBvZiByYW5nZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IG1pbGxpc2Vjb25kcywKICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLAogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc3RhdGljIGZyb21TZWNvbmRzKHNlY29uZHMsIG9wdGlvbnMgPSB7fSkgewogICAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHNlY29uZHMgKiAxMDAwLAogICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcicgYW5kICdob3VyJyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoIC0gYSBtb250aCwgMS0xMgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtZZWFyIC0gYW4gSVNPIHdlZWsgeWVhcgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VyIC0gaG91ciBvZiB0aGUgZGF5LCAwLTIzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZCAtIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIDAtOTk5CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogMTk4MiwgbW9udGg6IDUsIGRheTogMjV9KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDYKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ3V0YycgfSksCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgd2Vla1llYXI6IDIwMTYsIHdlZWtOdW1iZXI6IDIsIHdlZWtkYXk6IDMgfSkudG9JU09EYXRlKCkgLy89PiAnMjAxNi0wMS0xMycKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmosIG9wdHMgPSB7fSkgewogICAgICBvYmogPSBvYmogfHwge307CiAgICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksCiAgICAgICAgb2Zmc2V0UHJvdmlzID0gIWlzVW5kZWZpbmVkKG9wdHMuc3BlY2lmaWNPZmZzZXQpCiAgICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXQKICAgICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSwKICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgIGxvYyA9IExvY2FsZS5mcm9tT2JqZWN0KG9wdHMpOwoKICAgICAgLy8gY2FzZXM6CiAgICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllcwogICAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3IKICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZAoKICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigKICAgICAgICAgICJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIgogICAgICAgICk7CiAgICAgIH0KCiAgICAgIGlmIChjb250YWluc0dyZWdvck1EICYmIGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgfQoKICAgICAgY29uc3QgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiAhY29udGFpbnNHcmVnb3IpOwoKICAgICAgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKICAgICAgbGV0IHVuaXRzLAogICAgICAgIGRlZmF1bHRWYWx1ZXMsCiAgICAgICAgb2JqTm93ID0gdHNUb09iaih0c05vdywgb2Zmc2V0UHJvdmlzKTsKICAgICAgaWYgKHVzZVdlZWtEYXRhKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7CiAgICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7CiAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzOwogICAgICB9CgogICAgICAvLyBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3Npbmcgc3R1ZmYKICAgICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTsKICAgICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7CiAgICAgICAgY29uc3QgdiA9IG5vcm1hbGl6ZWRbdV07CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZpcnN0KSB7CiAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9ybWFsaXplZFt1XSA9IG9iak5vd1t1XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlCiAgICAgIGNvbnN0IGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhCiAgICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKQogICAgICAgICAgOiBjb250YWluc09yZGluYWwKICAgICAgICAgID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLAogICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWUKICAgICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGEKICAgICAgICAgID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbAogICAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZCkKICAgICAgICAgIDogbm9ybWFsaXplZCwKICAgICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHsKICAgICAgICAgIHRzOiB0c0ZpbmFsLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbzogb2Zmc2V0RmluYWwsCiAgICAgICAgICBsb2MsCiAgICAgICAgfSk7CgogICAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGUKICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoCiAgICAgICAgICAibWlzbWF0Y2hlZCB3ZWVrZGF5IiwKICAgICAgICAgIGB5b3UgY2FuJ3Qgc3BlY2lmeSBib3RoIGEgd2Vla2RheSBvZiAke25vcm1hbGl6ZWQud2Vla2RheX0gYW5kIGEgZGF0ZSBvZiAke2luc3QudG9JU08oKX1gCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGluc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZwogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJywge3pvbmU6ICd1dGMnfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJJU08gODYwMSIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBSRkMgMjgyMiBzdHJpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgdGhlIG9mZnNldCBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJ0ZyaSwgMjUgTm92IDIwMTYgMTM6MjM6MTIgKzA2MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlJGQyAyODIyIiwgdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIEhUVFAgaGVhZGVyIGRhdGUKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSFRUUERhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJIVFRQIiwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXQiKTsKICAgICAgfQoKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pLAogICAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIGlmIChpbnZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgYGZvcm1hdCAke2ZtdH1gLCB0ZXh0LCBzcGVjaWZpY09mZnNldCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0IGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWUKICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JykKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcwOToxMjozNC4zNDInKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tU1FMKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlNRTCIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIERhdGVUaW1lIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkgewogICAgICBpZiAoIXJlYXNvbikgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEYXRlVGltZSBpcyBpbnZhbGlkIik7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZERhdGVUaW1lRXJyb3IoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IGludmFsaWQgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlVGltZS4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0RhdGVUaW1lKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkRhdGVUaW1lKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFByb2R1Y2UgdGhlIGZvcm1hdCBzdHJpbmcgZm9yIGEgc2V0IG9mIG9wdGlvbnMKICAgICAqIEBwYXJhbSBmb3JtYXRPcHRzCiAgICAgKiBAcGFyYW0gbG9jYWxlT3B0cwogICAgICogQHJldHVybnMge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHBhcnNlRm9ybWF0Rm9yT3B0cyhmb3JtYXRPcHRzLCBsb2NhbGVPcHRzID0ge30pIHsKICAgICAgY29uc3QgdG9rZW5MaXN0ID0gZm9ybWF0T3B0c1RvVG9rZW5zKGZvcm1hdE9wdHMsIExvY2FsZS5mcm9tT2JqZWN0KGxvY2FsZU9wdHMpKTsKICAgICAgcmV0dXJuICF0b2tlbkxpc3QgPyBudWxsIDogdG9rZW5MaXN0Lm1hcCgodCkgPT4gKHQgPyB0LnZhbCA6IG51bGwpKS5qb2luKCIiKTsKICAgIH0KCiAgICAvKioKICAgICAqIFByb2R1Y2UgdGhlIHRoZSBmdWxseSBleHBhbmRlZCBmb3JtYXQgdG9rZW4gZm9yIHRoZSBsb2NhbGUKICAgICAqIERvZXMgTk9UIHF1b3RlIGNoYXJhY3RlcnMsIHNvIHF1b3RlZCB0b2tlbnMgd2lsbCBub3Qgcm91bmQgdHJpcCBjb3JyZWN0bHkKICAgICAqIEBwYXJhbSBmbXQKICAgICAqIEBwYXJhbSBsb2NhbGVPcHRzCiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgZXhwYW5kRm9ybWF0KGZtdCwgbG9jYWxlT3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kTWFjcm9Ub2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIExvY2FsZS5mcm9tT2JqZWN0KGxvY2FsZU9wdHMpKTsKICAgICAgcmV0dXJuIGV4cGFuZGVkLm1hcCgodCkgPT4gdC52YWwpLmpvaW4oIiIpOwogICAgfQoKICAgIC8vIElORk8KCiAgICAvKioKICAgICAqIEdldCB0aGUgdmFsdWUgb2YgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZScgb3IgJ2RheScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnbW9udGgnKTsgLy89PiA3CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA3LCA0KS5nZXQoJ2RheScpOyAvLz0+IDQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgZ2V0KHVuaXQpIHsKICAgICAgcmV0dXJuIHRoaXNbdW5pdF07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIERhdGVUaW1lIGlzIHZhbGlkLiBJbnZhbGlkIERhdGVUaW1lcyBvY2N1ciB3aGVuOgogICAgICogKiBUaGUgRGF0ZVRpbWUgd2FzIGNyZWF0ZWQgZnJvbSBpbnZhbGlkIGNhbGVuZGFyIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSAxM3RoIG1vbnRoIG9yIEZlYnJ1YXJ5IDMwCiAgICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBieSBhbiBvcGVyYXRpb24gb24gYW5vdGhlciBpbnZhbGlkIGRhdGUKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA9PT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIERhdGVUaW1lIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIERhdGVUaW1lIGlzIHZhbGlkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgaW52YWxpZFJlYXNvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEYXRlVGltZSBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb2NhbGUgb2YgYSBEYXRlVGltZSwgc3VjaCAnZW4tR0InLiBUaGUgbG9jYWxlIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRGF0ZVRpbWUKICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgb3V0cHV0IGNhbGVuZGFyIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2lzbGFtaWMnLiBUaGUgb3V0cHV0IGNhbGVuZGFyIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBvdXRwdXRDYWxlbmRhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLm91dHB1dENhbGVuZGFyIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgdGltZSB6b25lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIERhdGVUaW1lLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIGdldCB6b25lKCkgewogICAgICByZXR1cm4gdGhpcy5fem9uZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbmFtZSBvZiB0aGUgdGltZSB6b25lLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IHpvbmVOYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy56b25lLm5hbWUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB5ZWFyCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkueWVhciAvLz0+IDIwMTcKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB5ZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnllYXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHF1YXJ0ZXIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5xdWFydGVyIC8vPT4gMgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHF1YXJ0ZXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmNlaWwodGhpcy5jLm1vbnRoIC8gMykgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1vbnRoICgxLTEyKS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5tb250aCAvLz0+IDUKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBtb250aCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5tb250aCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCAoMS0zMGlzaCkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkuZGF5IC8vPT4gMjUKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBkYXkoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuZGF5IDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBob3VyIG9mIHRoZSBkYXkgKDAtMjMpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDkpLmhvdXIgLy89PiA5CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgaG91cigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5ob3VyIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtaW51dGUgb2YgdGhlIGhvdXIgKDAtNTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwKS5taW51dGUgLy89PiAzMAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1pbnV0ZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5taW51dGUgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHNlY29uZCBvZiB0aGUgbWludXRlICgwLTU5KS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5LCAzMCwgNTIpLnNlY29uZCAvLz0+IDUyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgc2Vjb25kKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnNlY29uZCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCAoMC05OTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1MiwgNjU0KS5taWxsaXNlY29uZCAvLz0+IDY1NAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1pbGxpc2Vjb25kKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbGxpc2Vjb25kIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB3ZWVrIHllYXIKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTIsIDMxKS53ZWVrWWVhciAvLz0+IDIwMTUKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrWWVhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla1llYXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWsgbnVtYmVyIG9mIHRoZSB3ZWVrIHllYXIgKDEtNTJpc2gpLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkud2Vla051bWJlciAvLz0+IDIxCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla051bWJlcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla051bWJlciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrLgogICAgICogMSBpcyBNb25kYXkgYW5kIDcgaXMgU3VuZGF5CiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDExLCAzMSkud2Vla2RheSAvLz0+IDQKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrZGF5IDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBvcmRpbmFsIChtZWFuaW5nIHRoZSBkYXkgb2YgdGhlIHllYXIpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkub3JkaW5hbCAvLz0+IDE0NQogICAgICogQHR5cGUge251bWJlcnxEYXRlVGltZX0KICAgICAqLwogICAgZ2V0IG9yZGluYWwoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKS5vcmRpbmFsIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBzaG9ydCBtb250aCBuYW1lLCBzdWNoIGFzICdPY3QnLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLm1vbnRoU2hvcnQgLy89PiBPY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBtb250aFNob3J0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoInNob3J0IiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgbW9udGggbmFtZSwgc3VjaCBhcyAnT2N0b2JlcicuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhMb25nIC8vPT4gT2N0b2JlcgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG1vbnRoTG9uZygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ubW9udGhzKCJsb25nIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IHdlZWtkYXksIHN1Y2ggYXMgJ01vbicuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheVNob3J0IC8vPT4gTW9uCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgd2Vla2RheVNob3J0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygic2hvcnQiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBsb25nIHdlZWtkYXksIHN1Y2ggYXMgJ01vbmRheScuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheUxvbmcgLy89PiBNb25kYXkKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5TG9uZygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ud2Vla2RheXMoImxvbmciLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBVVEMgb2Zmc2V0IG9mIHRoaXMgRGF0ZVRpbWUgaW4gbWludXRlcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkub2Zmc2V0IC8vPT4gLTI0MAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkub2Zmc2V0IC8vPT4gMAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG9mZnNldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/ICt0aGlzLm8gOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHNob3J0IGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFU1QiIG9yICJFRFQiLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgb2Zmc2V0TmFtZVNob3J0KCkgewogICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuem9uZS5vZmZzZXROYW1lKHRoaXMudHMsIHsKICAgICAgICAgIGZvcm1hdDogInNob3J0IiwKICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbG9uZyBodW1hbiBuYW1lIGZvciB0aGUgem9uZSdzIGN1cnJlbnQgb2Zmc2V0LCBmb3IgZXhhbXBsZSAiRWFzdGVybiBTdGFuZGFyZCBUaW1lIiBvciAiRWFzdGVybiBEYXlsaWdodCBUaW1lIi4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG9mZnNldE5hbWVMb25nKCkgewogICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuem9uZS5vZmZzZXROYW1lKHRoaXMudHMsIHsKICAgICAgICAgIGZvcm1hdDogImxvbmciLAogICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSwKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHdoZXRoZXIgdGhpcyB6b25lJ3Mgb2Zmc2V0IGV2ZXIgY2hhbmdlcywgYXMgaW4gYSBEU1QuCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzT2Zmc2V0Rml4ZWQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUuaXNVbml2ZXJzYWwgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHdoZXRoZXIgdGhlIERhdGVUaW1lIGlzIGluIGEgRFNULgogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc0luRFNUKCkgewogICAgICBpZiAodGhpcy5pc09mZnNldEZpeGVkKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAoCiAgICAgICAgICB0aGlzLm9mZnNldCA+IHRoaXMuc2V0KHsgbW9udGg6IDEsIGRheTogMSB9KS5vZmZzZXQgfHwKICAgICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogNSB9KS5vZmZzZXQKICAgICAgICApOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBEYXRlVGltZSBpcyBpbiBhIGxlYXAgeWVhciwgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5pc0luTGVhcFllYXIgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5pc0luTGVhcFllYXIgLy89PiBmYWxzZQogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc0luTGVhcFllYXIoKSB7CiAgICAgIHJldHVybiBpc0xlYXBZZWFyKHRoaXMueWVhcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgbW9udGgKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYsIDIpLmRheXNJbk1vbnRoIC8vPT4gMjkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYsIDMpLmRheXNJbk1vbnRoIC8vPT4gMzEKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBkYXlzSW5Nb250aCgpIHsKICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhciwgdGhpcy5tb250aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhcgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNikuZGF5c0luWWVhciAvLz0+IDM2NgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykuZGF5c0luWWVhciAvLz0+IDM2NQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXNJblllYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBkYXlzSW5ZZWFyKHRoaXMueWVhcikgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygd2Vla3MgaW4gdGhpcyBEYXRlVGltZSdzIHllYXIKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAwNCkud2Vla3NJbldlZWtZZWFyIC8vPT4gNTMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLndlZWtzSW5XZWVrWWVhciAvLz0+IDUyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla3NJbldlZWtZZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gd2Vla3NJbldlZWtZZWFyKHRoaXMud2Vla1llYXIpIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVzb2x2ZWQgSW50bCBvcHRpb25zIGZvciB0aGlzIERhdGVUaW1lLgogICAgICogVGhpcyBpcyB1c2VmdWwgaW4gdW5kZXJzdGFuZGluZyB0aGUgYmVoYXZpb3Igb2YgZm9ybWF0dGluZyBtZXRob2RzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIHRoZSBzYW1lIG9wdGlvbnMgYXMgdG9Mb2NhbGVTdHJpbmcKICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgcmVzb2x2ZWRMb2NhbGVPcHRpb25zKG9wdHMgPSB7fSkgewogICAgICBjb25zdCB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBjYWxlbmRhciB9ID0gRm9ybWF0dGVyLmNyZWF0ZSgKICAgICAgICB0aGlzLmxvYy5jbG9uZShvcHRzKSwKICAgICAgICBvcHRzCiAgICAgICkucmVzb2x2ZWRPcHRpb25zKHRoaXMpOwogICAgICByZXR1cm4geyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXI6IGNhbGVuZGFyIH07CiAgICB9CgogICAgLy8gVFJBTlNGT1JNCgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgRGF0ZVRpbWUncyB6b25lIHRvIFVUQy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICoKICAgICAqIEVxdWl2YWxlbnQgdG8ge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9KCd1dGMnKQogICAgICogQHBhcmFtIHtudW1iZXJ9IFtvZmZzZXQ9MF0gLSBvcHRpb25hbGx5LCBhbiBvZmZzZXQgZnJvbSBVVEMgaW4gbWludXRlcwogICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzPXt9XSAtIG9wdGlvbnMgdG8gcGFzcyB0byBgc2V0Wm9uZSgpYAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHRvVVRDKG9mZnNldCA9IDAsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5zZXRab25lKEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShvZmZzZXQpLCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gdGhlIGhvc3QncyBsb2NhbCB6b25lLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKgogICAgICogRXF1aXZhbGVudCB0byBgc2V0Wm9uZSgnbG9jYWwnKWAKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICB0b0xvY2FsKCkgewogICAgICByZXR1cm4gdGhpcy5zZXRab25lKFNldHRpbmdzLmRlZmF1bHRab25lKTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gc3BlY2lmaWVkIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqCiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgc2V0dGVyIGtlZXBzIHRoZSB1bmRlcmx5aW5nIHRpbWUgdGhlIHNhbWUgKGFzIGluLCB0aGUgc2FtZSB0aW1lc3RhbXApLCBidXQgdGhlIG5ldyBpbnN0YW5jZSB3aWxsIHJlcG9ydCBkaWZmZXJlbnQgbG9jYWwgdGltZXMgYW5kIGNvbnNpZGVyIERTVHMgd2hlbiBtYWtpbmcgY29tcHV0YXRpb25zLCBhcyB3aXRoIHtAbGluayBEYXRlVGltZSNwbHVzfS4gWW91IG1heSB3aXNoIHRvIHVzZSB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbH0gYW5kIHtAbGluayBEYXRlVGltZSN0b1VUQ30gd2hpY2ggcHJvdmlkZSBzaW1wbGUgY29udmVuaWVuY2Ugd3JhcHBlcnMgZm9yIGNvbW1vbmx5IHVzZWQgem9uZXMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbem9uZT0nbG9jYWwnXSAtIGEgem9uZSBpZGVudGlmaWVyLiBBcyBhIHN0cmluZywgdGhhdCBjYW4gYmUgYW55IElBTkEgem9uZSBzdXBwb3J0ZWQgYnkgdGhlIGhvc3QgZW52aXJvbm1lbnQsIG9yIGEgZml4ZWQtb2Zmc2V0IG5hbWUgb2YgdGhlIGZvcm0gJ1VUQyszJywgb3IgdGhlIHN0cmluZ3MgJ2xvY2FsJyBvciAndXRjJy4gWW91IG1heSBhbHNvIHN1cHBseSBhbiBpbnN0YW5jZSBvZiBhIHtAbGluayBEYXRlVGltZSNab25lfSBjbGFzcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5rZWVwTG9jYWxUaW1lPWZhbHNlXSAtIElmIHRydWUsIGFkanVzdCB0aGUgdW5kZXJseWluZyB0aW1lIHNvIHRoYXQgdGhlIGxvY2FsIHRpbWUgc3RheXMgdGhlIHNhbWUsIGJ1dCBpbiB0aGUgdGFyZ2V0IHpvbmUuIFlvdSBzaG91bGQgcmFyZWx5IG5lZWQgdGhpcy4KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZSA9IGZhbHNlLCBrZWVwQ2FsZW5kYXJUaW1lID0gZmFsc2UgfSA9IHt9KSB7CiAgICAgIHpvbmUgPSBub3JtYWxpemVab25lKHpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTsKICAgICAgaWYgKHpvbmUuZXF1YWxzKHRoaXMuem9uZSkpIHsKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfSBlbHNlIGlmICghem9uZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmUpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgbmV3VFMgPSB0aGlzLnRzOwogICAgICAgIGlmIChrZWVwTG9jYWxUaW1lIHx8IGtlZXBDYWxlbmRhclRpbWUpIHsKICAgICAgICAgIGNvbnN0IG9mZnNldEd1ZXNzID0gem9uZS5vZmZzZXQodGhpcy50cyk7CiAgICAgICAgICBjb25zdCBhc09iaiA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgICAgIFtuZXdUU10gPSBvYmpUb1RTKGFzT2JqLCBvZmZzZXRHdWVzcywgem9uZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzOiBuZXdUUywgem9uZSB9KTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvciBvdXRwdXRDYWxlbmRhci4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSB0aGUgcHJvcGVydGllcyB0byBzZXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0gPSB7fSkgewogICAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciB9KTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgbG9jIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIGxvY2FsZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICogSnVzdCBhIGNvbnZlbmllbnQgYWxpYXMgZm9yIHJlY29uZmlndXJlKHsgbG9jYWxlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkuc2V0TG9jYWxlKCdlbi1HQicpCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc2V0TG9jYWxlKGxvY2FsZSkgewogICAgICByZXR1cm4gdGhpcy5yZWNvbmZpZ3VyZSh7IGxvY2FsZSB9KTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBZb3UgY2FuIG9ubHkgc2V0IHVuaXRzIHdpdGggdGhpcyBtZXRob2Q7IGZvciAic2V0dGluZyIgbWV0YWRhdGEsIHNlZSB7QGxpbmsgRGF0ZVRpbWUjcmVjb25maWd1cmV9IGFuZCB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0uCiAgICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYSBtYXBwaW5nIG9mIHVuaXRzIHRvIG51bWJlcnMKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMTcgfSkKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IGhvdXI6IDgsIG1pbnV0ZTogMzAgfSkKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHdlZWtkYXk6IDUgfSkKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMDUsIG9yZGluYWw6IDIzNCB9KQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHNldCh2YWx1ZXMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIHNldHRpbmdXZWVrU3R1ZmYgPQogICAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla1llYXIpIHx8CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrTnVtYmVyKSB8fAogICAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla2RheSksCiAgICAgICAgY29udGFpbnNPcmRpbmFsID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQub3JkaW5hbCksCiAgICAgICAgY29udGFpbnNHcmVnb3JZZWFyID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQueWVhciksCiAgICAgICAgY29udGFpbnNHcmVnb3JNRCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm1vbnRoKSB8fCAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yID0gY29udGFpbnNHcmVnb3JZZWFyIHx8IGNvbnRhaW5zR3JlZ29yTUQsCiAgICAgICAgZGVmaW5pdGVXZWVrRGVmID0gbm9ybWFsaXplZC53ZWVrWWVhciB8fCBub3JtYWxpemVkLndlZWtOdW1iZXI7CgogICAgICBpZiAoKGNvbnRhaW5zR3JlZ29yIHx8IGNvbnRhaW5zT3JkaW5hbCkgJiYgZGVmaW5pdGVXZWVrRGVmKSB7CiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKAogICAgICAgICAgIkNhbid0IG1peCB3ZWVrWWVhci93ZWVrTnVtYmVyIHVuaXRzIHdpdGggeWVhci9tb250aC9kYXkgb3Igb3JkaW5hbHMiCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgaWYgKGNvbnRhaW5zR3JlZ29yTUQgJiYgY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKCJDYW4ndCBtaXggb3JkaW5hbCBkYXRlcyB3aXRoIG1vbnRoL2RheSIpOwogICAgICB9CgogICAgICBsZXQgbWl4ZWQ7CiAgICAgIGlmIChzZXR0aW5nV2Vla1N0dWZmKSB7CiAgICAgICAgbWl4ZWQgPSB3ZWVrVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub1dlZWsodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTsKICAgICAgfSBlbHNlIGlmICghaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSkgewogICAgICAgIG1peGVkID0gb3JkaW5hbFRvR3JlZ29yaWFuKHsgLi4uZ3JlZ29yaWFuVG9PcmRpbmFsKHRoaXMuYyksIC4uLm5vcm1hbGl6ZWQgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWl4ZWQgPSB7IC4uLnRoaXMudG9PYmplY3QoKSwgLi4ubm9ybWFsaXplZCB9OwoKICAgICAgICAvLyBpZiB3ZSBkaWRuJ3Qgc2V0IHRoZSBkYXkgYnV0IHdlIGVuZGVkIHVwIG9uIGFuIG92ZXJmbG93IGRhdGUsCiAgICAgICAgLy8gdXNlIHRoZSBsYXN0IGRheSBvZiB0aGUgcmlnaHQgbW9udGgKICAgICAgICBpZiAoaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpKSB7CiAgICAgICAgICBtaXhlZC5kYXkgPSBNYXRoLm1pbihkYXlzSW5Nb250aChtaXhlZC55ZWFyLCBtaXhlZC5tb250aCksIG1peGVkLmRheSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBbdHMsIG9dID0gb2JqVG9UUyhtaXhlZCwgdGhpcy5vLCB0aGlzLnpvbmUpOwogICAgICByZXR1cm4gY2xvbmUodGhpcywgeyB0cywgbyB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgKgogICAgICogQWRkaW5nIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBvciBtaWxsaXNlY29uZHMgaW5jcmVhc2VzIHRoZSB0aW1lc3RhbXAgYnkgdGhlIHJpZ2h0IG51bWJlciBvZiBtaWxsaXNlY29uZHMuIEFkZGluZyBkYXlzLCBtb250aHMsIG9yIHllYXJzIHNoaWZ0cyB0aGUgY2FsZW5kYXIsIGFjY291bnRpbmcgZm9yIERTVHMgYW5kIGxlYXAgeWVhcnMgYWxvbmcgdGhlIHdheS4gVGh1cywgYGR0LnBsdXMoeyBob3VyczogMjQgfSlgIG1heSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdGltZSB0aGFuIGBkdC5wbHVzKHsgZGF5czogMSB9KWAgaWYgdGhlcmUncyBhIERTVCBzaGlmdCBpbiBiZXR3ZWVuLgogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cygxMjMpIC8vfj4gaW4gMTIzIG1pbGxpc2Vjb25kcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IG1pbnV0ZXM6IDE1IH0pIC8vfj4gaW4gMTUgbWludXRlcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkgLy9+PiB0aGlzIHRpbWUgdG9tb3Jyb3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAtMSB9KSAvL34+IHRoaXMgdGltZSB5ZXN0ZXJkYXkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBob3VyczogMywgbWludXRlczogMTMgfSkgLy9+PiBpbiAzIGhyLCAxMyBtaW4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSkgLy9+PiBpbiAzIGhyLCAxMyBtaW4KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBwbHVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogU3VidHJhY3QgYSBwZXJpb2Qgb2YgdGltZSB0byB0aGlzIERhdGVUaW1lIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBEYXRlVGltZQogICAgICogU2VlIHtAbGluayBEYXRlVGltZSNwbHVzfQogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIG1pbnVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbikubmVnYXRlKCk7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhpcyBEYXRlVGltZSB0byB0aGUgYmVnaW5uaW5nIG9mIGEgdW5pdCBvZiB0aW1lLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBUaGUgdW5pdCB0byBnbyB0byB0aGUgYmVnaW5uaW5nIG9mLiBDYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCBvciAnbWlsbGlzZWNvbmQnLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignbW9udGgnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLnN0YXJ0T2YoJ3llYXInKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLnN0YXJ0T2YoJ3dlZWsnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMycsIHdlZWtzIGFsd2F5cyBzdGFydCBvbiBNb25kYXlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuc3RhcnRPZignZGF5JykudG9JU09UaW1lKCk7IC8vPT4gJzAwOjAwLjAwMC0wNTowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdob3VyJykudG9JU09UaW1lKCk7IC8vPT4gJzA1OjAwOjAwLjAwMC0wNTowMCcKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGFydE9mKHVuaXQpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBvID0ge30sCiAgICAgICAgbm9ybWFsaXplZFVuaXQgPSBEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpOwogICAgICBzd2l0Y2ggKG5vcm1hbGl6ZWRVbml0KSB7CiAgICAgICAgY2FzZSAieWVhcnMiOgogICAgICAgICAgby5tb250aCA9IDE7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgInF1YXJ0ZXJzIjoKICAgICAgICBjYXNlICJtb250aHMiOgogICAgICAgICAgby5kYXkgPSAxOwogICAgICAgIC8vIGZhbGxzIHRocm91Z2gKICAgICAgICBjYXNlICJ3ZWVrcyI6CiAgICAgICAgY2FzZSAiZGF5cyI6CiAgICAgICAgICBvLmhvdXIgPSAwOwogICAgICAgIC8vIGZhbGxzIHRocm91Z2gKICAgICAgICBjYXNlICJob3VycyI6CiAgICAgICAgICBvLm1pbnV0ZSA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgIm1pbnV0ZXMiOgogICAgICAgICAgby5zZWNvbmQgPSAwOwogICAgICAgIC8vIGZhbGxzIHRocm91Z2gKICAgICAgICBjYXNlICJzZWNvbmRzIjoKICAgICAgICAgIG8ubWlsbGlzZWNvbmQgPSAwOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgLy8gbm8gZGVmYXVsdCwgaW52YWxpZCB1bml0cyB0aHJvdyBpbiBub3JtYWxpemVVbml0KCkKICAgICAgfQoKICAgICAgaWYgKG5vcm1hbGl6ZWRVbml0ID09PSAid2Vla3MiKSB7CiAgICAgICAgby53ZWVrZGF5ID0gMTsKICAgICAgfQoKICAgICAgaWYgKG5vcm1hbGl6ZWRVbml0ID09PSAicXVhcnRlcnMiKSB7CiAgICAgICAgY29uc3QgcSA9IE1hdGguY2VpbCh0aGlzLm1vbnRoIC8gMyk7CiAgICAgICAgby5tb250aCA9IChxIC0gMSkgKiAzICsgMTsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMuc2V0KG8pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhpcyBEYXRlVGltZSB0byB0aGUgZW5kIChtZWFuaW5nIHRoZSBsYXN0IG1pbGxpc2Vjb25kKSBvZiBhIHVuaXQgb2YgdGltZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBUaGUgdW5pdCB0byBnbyB0byB0aGUgZW5kIG9mLiBDYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCBvciAnbWlsbGlzZWNvbmQnLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ21vbnRoJykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0zMVQyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZigneWVhcicpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMTItMzFUMjM6NTk6NTkuOTk5LTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ3dlZWsnKS50b0lTTygpOyAvLyA9PiAnMjAxNC0wMy0wOVQyMzo1OTo1OS45OTktMDU6MDAnLCB3ZWVrcyBzdGFydCBvbiBNb25kYXlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2RheScpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMDMtMDNUMjM6NTk6NTkuOTk5LTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLmVuZE9mKCdob3VyJykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QwNTo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgZW5kT2YodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyB0aGlzLnBsdXMoeyBbdW5pdF06IDEgfSkKICAgICAgICAgICAgLnN0YXJ0T2YodW5pdCkKICAgICAgICAgICAgLm1pbnVzKDEpCiAgICAgICAgOiB0aGlzOwogICAgfQoKICAgIC8vIE9VVFBVVAoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLgogICAgICogKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZSBmb3JtYXR0aW5nIHRvb2wuIEZvciBhIHRhYmxlIG9mIHRva2VucyBhbmQgdGhlaXIgaW50ZXJwcmV0YXRpb25zLCBzZWUgW2hlcmVdKGh0dHBzOi8vbW9tZW50LmdpdGh1Yi5pby9sdXhvbi8jL2Zvcm1hdHRpbmc/aWQ9dGFibGUtb2YtdG9rZW5zKS4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRzIHRvIG92ZXJyaWRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb24gdGhpcyBEYXRlVGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBBcHIgMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2ZyJykudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBhdnIuIDIyJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJywgeyBsb2NhbGU6ICJmciIgfSkgLy89PiAnMjAxNyBhdnIuIDIyJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoIkhIICdob3VycyBhbmQnIG1tICdtaW51dGVzJyIpIC8vPT4gJzIwIGhvdXJzIGFuZCA1NSBtaW51dGVzJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChmbXQsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLnJlZGVmYXVsdFRvRU4ob3B0cykpLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyh0aGlzLCBmbXQpCiAgICAgICAgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgZGF0ZS4gQWNjZXB0cyB0aGUgc2FtZSBvcHRpb25zIGFzIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIGFuZCBhbnkgcHJlc2V0cyBkZWZpbmVkIGJ5IEx1eG9uLCBzdWNoIGFzIGBEYXRlVGltZS5EQVRFX0ZVTExgIG9yIGBEYXRlVGltZS5USU1FX1NJTVBMRWAuCiAgICAgKiBUaGUgZXhhY3QgYmVoYXZpb3Igb2YgdGhpcyBtZXRob2QgaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24KICAgICAqIG9mIHRoZSBEYXRlVGltZSBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0gZm9ybWF0T3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDQvMjAvMjAxNwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuc2V0TG9jYWxlKCdlbi1nYicpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gJzIwLzA0LzIwMTcnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwpOyAvLz0+ICdBcHJpbCAyMCwgMjAxNycKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCwgeyBsb2NhbGU6ICdmcicgfSk7IC8vPT4gJzI4IGFvw7t0IDIwMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5USU1FX1NJTVBMRSk7IC8vPT4gJzExOjMyIEFNJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURVRJTUVfU0hPUlQpOyAvLz0+ICc0LzIwLzIwMTcsIDExOjMyIEFNJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnbG9uZycsIG1vbnRoOiAnbG9uZycsIGRheTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHVyc2RheSwgQXByaWwgMjAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdzaG9ydCcsIG1vbnRoOiAnc2hvcnQnLCBkYXk6ICcyLWRpZ2l0JywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTsgLy89PiAnVGh1LCBBcHIgMjAsIDExOjI3IEFNJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnLCBob3VyQ3ljbGU6ICdoMjMnIH0pOyAvLz0+ICcxMTozMicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Mb2NhbGVTdHJpbmcoZm9ybWF0T3B0cyA9IERBVEVfU0hPUlQsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLmNsb25lKG9wdHMpLCBmb3JtYXRPcHRzKS5mb3JtYXREYXRlVGltZSh0aGlzKQogICAgICAgIDogSU5WQUxJRDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgZm9ybWF0ICJwYXJ0cyIsIG1lYW5pbmcgaW5kaXZpZHVhbCB0b2tlbnMgYWxvbmcgd2l0aCBtZXRhZGF0YS4gVGhpcyBpcyBhbGxvd3MgY2FsbGVycyB0byBwb3N0LXByb2Nlc3MgaW5kaXZpZHVhbCBzZWN0aW9ucyBvZiB0aGUgZm9ybWF0dGVkIG91dHB1dC4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdC9mb3JtYXRUb1BhcnRzCiAgICAgKiBAcGFyYW0gb3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucywgc2FtZSBhcyBgdG9Mb2NhbGVTdHJpbmdgLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVQYXJ0cygpOyAvLz0+IFsKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnZGF5JywgdmFsdWU6ICcyNScgfSwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnLycgfSwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbW9udGgnLCB2YWx1ZTogJzA1JyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICd5ZWFyJywgdmFsdWU6ICcxOTgyJyB9CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiBdCiAgICAgKi8KICAgIHRvTG9jYWxlUGFydHMob3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIG9wdHMpLmZvcm1hdERhdGVUaW1lUGFydHModGhpcykKICAgICAgICA6IFtdOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzU2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIHNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5leHRlbmRlZFpvbmU9ZmFsc2VdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MywgNSwgMjUpLnRvSVNPKCkgLy89PiAnMTk4Mi0wNS0yNVQwMDowMDowMC4wMDBaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNS0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMjAxNy0wNC0yMlQyMDo0NzowNS4zMzUnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTyh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcyMDE3MDQyMlQyMDQ3MDUuMzM1LTA0MDAnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPKHsKICAgICAgZm9ybWF0ID0gImV4dGVuZGVkIiwKICAgICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsCiAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gZmFsc2UsCiAgICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLAogICAgICBleHRlbmRlZFpvbmUgPSBmYWxzZSwKICAgIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICBjb25zdCBleHQgPSBmb3JtYXQgPT09ICJleHRlbmRlZCI7CgogICAgICBsZXQgYyA9IHRvSVNPRGF0ZSh0aGlzLCBleHQpOwogICAgICBjICs9ICJUIjsKICAgICAgYyArPSB0b0lTT1RpbWUodGhpcywgZXh0LCBzdXBwcmVzc1NlY29uZHMsIHN1cHByZXNzTWlsbGlzZWNvbmRzLCBpbmNsdWRlT2Zmc2V0LCBleHRlbmRlZFpvbmUpOwogICAgICByZXR1cm4gYzsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3MgZGF0ZSBjb21wb25lbnQKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDUtMjUnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxOTgyMDUyNScKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09EYXRlKHsgZm9ybWF0ID0gImV4dGVuZGVkIiB9ID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRvSVNPRGF0ZSh0aGlzLCBmb3JtYXQgPT09ICJleHRlbmRlZCIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyB3ZWVrIGRhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09XZWVrRGF0ZSgpIC8vPT4gJzE5ODItVzIxLTInCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPV2Vla0RhdGUoKSB7CiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgImtra2stJ1cnV1ctYyIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyB0aW1lIGNvbXBvbmVudAogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT10cnVlXSAtIGFkZCB0aGUgdGltZSB6b25lIGZvcm1hdCBleHRlbnNpb24KICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKCkgLy89PiAnMDc6MzQ6MTkuMzYxWicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQsIHNlY29uZHM6IDAsIG1pbGxpc2Vjb25kczogMCB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc1NlY29uZHM6IHRydWUgfSkgLy89PiAnMDc6MzRaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMDczNDE5LjM2MVonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGluY2x1ZGVQcmVmaXg6IHRydWUgfSkgLy89PiAnVDA3OjM0OjE5LjM2MVonCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPVGltZSh7CiAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gZmFsc2UsCiAgICAgIHN1cHByZXNzU2Vjb25kcyA9IGZhbHNlLAogICAgICBpbmNsdWRlT2Zmc2V0ID0gdHJ1ZSwKICAgICAgaW5jbHVkZVByZWZpeCA9IGZhbHNlLAogICAgICBleHRlbmRlZFpvbmUgPSBmYWxzZSwKICAgICAgZm9ybWF0ID0gImV4dGVuZGVkIiwKICAgIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICBsZXQgYyA9IGluY2x1ZGVQcmVmaXggPyAiVCIgOiAiIjsKICAgICAgcmV0dXJuICgKICAgICAgICBjICsKICAgICAgICB0b0lTT1RpbWUoCiAgICAgICAgICB0aGlzLAogICAgICAgICAgZm9ybWF0ID09PSAiZXh0ZW5kZWQiLAogICAgICAgICAgc3VwcHJlc3NTZWNvbmRzLAogICAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMsCiAgICAgICAgICBpbmNsdWRlT2Zmc2V0LAogICAgICAgICAgZXh0ZW5kZWRab25lCiAgICAgICAgKQogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBSRkMgMjgyMi1jb21wYXRpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvUkZDMjgyMigpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgKzAwMDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCAtMDQwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9SRkMyODIyKCkgewogICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsICJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzIFpaWiIsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEhUVFAgaGVhZGVycy4gVGhlIG91dHB1dCBpcyBhbHdheXMgZXhwcmVzc2VkIGluIEdNVC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHN0cmluZyBjb25mb3JtcyB0byBSRkMgMTEyMy4KICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvSFRUUCgpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgR01UJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzLCAxOSkudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAxOTowMDowMCBHTVQnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSFRUUCgpIHsKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLnRvVVRDKCksICJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzICdHTVQnIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgRGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTERhdGUoKSAvLz0+ICcyMDE0LTA3LTEzJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1NRTERhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgcmV0dXJuIHRvSVNPRGF0ZSh0aGlzLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBUaW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkudG9TUUwoKSAvLz0+ICcwNToxNToxNi4zNDUnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NSAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZVpvbmU6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NSBBbWVyaWNhL05ld19Zb3JrJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1NRTFRpbWUoeyBpbmNsdWRlT2Zmc2V0ID0gdHJ1ZSwgaW5jbHVkZVpvbmUgPSBmYWxzZSwgaW5jbHVkZU9mZnNldFNwYWNlID0gdHJ1ZSB9ID0ge30pIHsKICAgICAgbGV0IGZtdCA9ICJISDptbTpzcy5TU1MiOwoKICAgICAgaWYgKGluY2x1ZGVab25lIHx8IGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICBpZiAoaW5jbHVkZU9mZnNldFNwYWNlKSB7CiAgICAgICAgICBmbXQgKz0gIiAiOwogICAgICAgIH0KICAgICAgICBpZiAoaW5jbHVkZVpvbmUpIHsKICAgICAgICAgIGZtdCArPSAieiI7CiAgICAgICAgfSBlbHNlIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgICAgICBmbXQgKz0gIlpaIjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgZm10LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlVGltZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVab25lPWZhbHNlXSAtIGluY2x1ZGUgdGhlIHpvbmUsIHN1Y2ggYXMgJ0FtZXJpY2EvTmV3X1lvcmsnLiBPdmVycmlkZXMgaW5jbHVkZU9mZnNldC4KICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldFNwYWNlPXRydWVdIC0gaW5jbHVkZSB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgdGltZSBhbmQgdGhlIG9mZnNldCwgc3VjaCBhcyAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCBaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlWm9uZTogdHJ1ZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCBBbWVyaWNhL05ld19Zb3JrJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1NRTChvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQoKICAgICAgcmV0dXJuIGAke3RoaXMudG9TUUxEYXRlKCl9ICR7dGhpcy50b1NRTFRpbWUob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU3RyaW5nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0lTTygpIDogSU5WQUxJRDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLiBBbGlhcyBvZiB7QGxpbmsgRGF0ZVRpbWUjdG9NaWxsaXN9CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHZhbHVlT2YoKSB7CiAgICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBtaWxsaXNlY29uZHMgb2YgdGhpcyBEYXRlVGltZS4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdG9NaWxsaXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b1NlY29uZHMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIC8gMTAwMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIHNlY29uZHMgKGFzIGEgd2hvbGUgbnVtYmVyKSBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b1VuaXhJbnRlZ2VyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gTWF0aC5mbG9vcih0aGlzLnRzIC8gMTAwMCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0pTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSVNPKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgQlNPTiBzZXJpYWxpemFibGUgZXF1aXZhbGVudCB0byB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7RGF0ZX0KICAgICAqLwogICAgdG9CU09OKCkgewogICAgICByZXR1cm4gdGhpcy50b0pTRGF0ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggdGhpcyBEYXRlVGltZSdzIHllYXIsIG1vbnRoLCBkYXksIGFuZCBzbyBvbi4KICAgICAqIEBwYXJhbSBvcHRzIC0gb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyB0aGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVDb25maWc9ZmFsc2VdIC0gaW5jbHVkZSBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZXMgaW4gdGhlIG91dHB1dAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9PYmplY3QoKSAvLz0+IHsgeWVhcjogMjAxNywgbW9udGg6IDQsIGRheTogMjIsIGhvdXI6IDIwLCBtaW51dGU6IDQ5LCBzZWNvbmQ6IDQyLCBtaWxsaXNlY29uZDogMjY4IH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgdG9PYmplY3Qob3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4ge307CgogICAgICBjb25zdCBiYXNlID0geyAuLi50aGlzLmMgfTsKCiAgICAgIGlmIChvcHRzLmluY2x1ZGVDb25maWcpIHsKICAgICAgICBiYXNlLm91dHB1dENhbGVuZGFyID0gdGhpcy5vdXRwdXRDYWxlbmRhcjsKICAgICAgICBiYXNlLm51bWJlcmluZ1N5c3RlbSA9IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbTsKICAgICAgICBiYXNlLmxvY2FsZSA9IHRoaXMubG9jLmxvY2FsZTsKICAgICAgfQogICAgICByZXR1cm4gYmFzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IERhdGUgZXF1aXZhbGVudCB0byB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7RGF0ZX0KICAgICAqLwogICAgdG9KU0RhdGUoKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIDogTmFOKTsKICAgIH0KCiAgICAvLyBDT01QQVJFCgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gRGF0ZVRpbWVzIGFzIGEgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIERhdGVUaW1lIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8KICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIGFycmF5IG9mIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBleGFtcGxlCiAgICAgKiB2YXIgaTEgPSBEYXRlVGltZS5mcm9tSVNPKCcxOTgyLTA1LTI1VDA5OjQ1JyksCiAgICAgKiAgICAgaTIgPSBEYXRlVGltZS5mcm9tSVNPKCcxOTgzLTEwLTE0VDEwOjMwJyk7CiAgICAgKiBpMi5kaWZmKGkxKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDQzODA3NTAwMDAwIH0KICAgICAqIGkyLmRpZmYoaTEsICdob3VycycpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMjE2OC43NSB9CiAgICAgKiBpMi5kaWZmKGkxLCBbJ21vbnRocycsICdkYXlzJ10pLnRvT2JqZWN0KCkgLy89PiB7IG1vbnRoczogMTYsIGRheXM6IDE5LjAzMTI1IH0KICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnLCAnaG91cnMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTksIGhvdXJzOiAwLjc1IH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBkaWZmKG90aGVyRGF0ZVRpbWUsIHVuaXQgPSAibWlsbGlzZWNvbmRzIiwgb3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlckRhdGVUaW1lLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZCgiY3JlYXRlZCBieSBkaWZmaW5nIGFuIGludmFsaWQgRGF0ZVRpbWUiKTsKICAgICAgfQoKICAgICAgY29uc3QgZHVyT3B0cyA9IHsgbG9jYWxlOiB0aGlzLmxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtOiB0aGlzLm51bWJlcmluZ1N5c3RlbSwgLi4ub3B0cyB9OwoKICAgICAgY29uc3QgdW5pdHMgPSBtYXliZUFycmF5KHVuaXQpLm1hcChEdXJhdGlvbi5ub3JtYWxpemVVbml0KSwKICAgICAgICBvdGhlcklzTGF0ZXIgPSBvdGhlckRhdGVUaW1lLnZhbHVlT2YoKSA+IHRoaXMudmFsdWVPZigpLAogICAgICAgIGVhcmxpZXIgPSBvdGhlcklzTGF0ZXIgPyB0aGlzIDogb3RoZXJEYXRlVGltZSwKICAgICAgICBsYXRlciA9IG90aGVySXNMYXRlciA/IG90aGVyRGF0ZVRpbWUgOiB0aGlzLAogICAgICAgIGRpZmZlZCA9IGRpZmYoZWFybGllciwgbGF0ZXIsIHVuaXRzLCBkdXJPcHRzKTsKCiAgICAgIHJldHVybiBvdGhlcklzTGF0ZXIgPyBkaWZmZWQubmVnYXRlKCkgOiBkaWZmZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCByaWdodCBub3cuCiAgICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI2RpZmZ9CiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW3VuaXQ9WydtaWxsaXNlY29uZHMnXV0gLSB0aGUgdW5pdCBvciB1bml0cyB1bml0cyAoc3VjaCBhcyAnaG91cnMnIG9yICdkYXlzJykgdG8gaW5jbHVkZSBpbiB0aGUgZHVyYXRpb24KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBkaWZmTm93KHVuaXQgPSAibWlsbGlzZWNvbmRzIiwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmRpZmYoRGF0ZVRpbWUubm93KCksIHVuaXQsIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIEludGVydmFsIHNwYW5uaW5nIGJldHdlZW4gdGhpcyBEYXRlVGltZSBhbmQgYW5vdGhlciBEYXRlVGltZQogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBlbmQgcG9pbnQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgdW50aWwob3RoZXJEYXRlVGltZSkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyh0aGlzLCBvdGhlckRhdGVUaW1lKSA6IHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIERhdGVUaW1lIGlzIGluIHRoZSBzYW1lIHVuaXQgb2YgdGltZSBhcyBhbm90aGVyIERhdGVUaW1lLgogICAgICogSGlnaGVyLW9yZGVyIHVuaXRzIG11c3QgYWxzbyBiZSBpZGVudGljYWwgZm9yIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIGB0cnVlYC4KICAgICAqIE5vdGUgdGhhdCB0aW1lIHpvbmVzIGFyZSAqKmlnbm9yZWQqKiBpbiB0aGlzIGNvbXBhcmlzb24sIHdoaWNoIGNvbXBhcmVzIHRoZSAqKmxvY2FsKiogY2FsZW5kYXIgdGltZS4gVXNlIHtAbGluayBEYXRlVGltZSNzZXRab25lfSB0byBjb252ZXJ0IG9uZSBvZiB0aGUgZGF0ZXMgaWYgbmVlZGVkLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNoZWNrIHNhbWVuZXNzIG9uCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5oYXNTYW1lKG90aGVyRFQsICdkYXknKTsgLy9+PiB0cnVlIGlmIG90aGVyRFQgaXMgaW4gdGhlIHNhbWUgY3VycmVudCBjYWxlbmRhciBkYXkKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUob3RoZXJEYXRlVGltZSwgdW5pdCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwoKICAgICAgY29uc3QgaW5wdXRNcyA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpOwogICAgICBjb25zdCBhZGp1c3RlZFRvWm9uZSA9IHRoaXMuc2V0Wm9uZShvdGhlckRhdGVUaW1lLnpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KTsKICAgICAgcmV0dXJuIGFkanVzdGVkVG9ab25lLnN0YXJ0T2YodW5pdCkgPD0gaW5wdXRNcyAmJiBpbnB1dE1zIDw9IGFkanVzdGVkVG9ab25lLmVuZE9mKHVuaXQpOwogICAgfQoKICAgIC8qKgogICAgICogRXF1YWxpdHkgY2hlY2sKICAgICAqIFR3byBEYXRlVGltZXMgYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIG1pbGxpc2Vjb25kLCBoYXZlIHRoZSBzYW1lIHpvbmUgYW5kIGxvY2F0aW9uLCBhbmQgYXJlIGJvdGggdmFsaWQuCiAgICAgKiBUbyBjb21wYXJlIGp1c3QgdGhlIG1pbGxpc2Vjb25kIHZhbHVlcywgdXNlIGArZHQxID09PSArZHQyYC4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyIC0gdGhlIG90aGVyIERhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmlzVmFsaWQgJiYKICAgICAgICBvdGhlci5pc1ZhbGlkICYmCiAgICAgICAgdGhpcy52YWx1ZU9mKCkgPT09IG90aGVyLnZhbHVlT2YoKSAmJgogICAgICAgIHRoaXMuem9uZS5lcXVhbHMob3RoZXIuem9uZSkgJiYKICAgICAgICB0aGlzLmxvYy5lcXVhbHMob3RoZXIubG9jKQogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHRoaXMgdGltZSByZWxhdGl2ZSB0byBub3csIHN1Y2ggYXMgImluIHR3byBkYXlzIi4gQ2FuIG9ubHkgaW50ZXJuYXRpb25hbGl6ZSBpZiB5b3VyCiAgICAgKiBwbGF0Zm9ybSBzdXBwb3J0cyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC4gUm91bmRzIGRvd24gYnkgZGVmYXVsdC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0CiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBbb3B0aW9ucy5iYXNlPURhdGVUaW1lLm5vdygpXSAtIHRoZSBEYXRlVGltZSB0byB1c2UgYXMgdGhlIGJhc2lzIHRvIHdoaWNoIHRoaXMgdGltZSBpcyBjb21wYXJlZC4gRGVmYXVsdHMgdG8gbm93LgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnN0eWxlPSJsb25nIl0gLSB0aGUgc3R5bGUgb2YgdW5pdHMsIG11c3QgYmUgImxvbmciLCAic2hvcnQiLCBvciAibmFycm93IgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IG9wdGlvbnMudW5pdCAtIHVzZSBhIHNwZWNpZmljIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHM7IGlmIG9taXR0ZWQsIG9yIGFuIGFycmF5LCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgYmVzdCB1bml0LiBVc2UgYW4gYXJyYXkgb3Igb25lIG9mICJ5ZWFycyIsICJxdWFydGVycyIsICJtb250aHMiLCAid2Vla3MiLCAiZGF5cyIsICJob3VycyIsICJtaW51dGVzIiwgb3IgInNlY29uZHMiCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnJvdW5kPXRydWVdIC0gd2hldGhlciB0byByb3VuZCB0aGUgbnVtYmVycyBpbiB0aGUgb3V0cHV0LgogICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnBhZGRpbmc9MF0gLSBwYWRkaW5nIGluIG1pbGxpc2Vjb25kcy4gVGhpcyBhbGxvd3MgeW91IHRvIHJvdW5kIHVwIHRoZSByZXN1bHQgaWYgaXQgZml0cyBpbnNpZGUgdGhlIHRocmVzaG9sZC4gRG9uJ3QgdXNlIGluIGNvbWJpbmF0aW9uIHdpdGgge3JvdW5kOiBmYWxzZX0gYmVjYXVzZSB0aGUgZGVjaW1hbCBvdXRwdXQgd2lsbCBpbmNsdWRlIHRoZSBwYWRkaW5nLgogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubG9jYWxlIC0gb3ZlcnJpZGUgdGhlIGxvY2FsZSBvZiB0aGlzIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiaW4gMSBkYXkiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoImVzIikudG9SZWxhdGl2ZSh7IGRheXM6IDEgfSkgLy89PiAiZGVudHJvIGRlIDEgZMOtYSIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGFucyAyMyBoZXVyZXMiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSgpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSh7IHVuaXQ6ICJob3VycyIgfSkgLy89PiAiNDggaG91cnMgYWdvIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBob3VyczogMzYgfSkudG9SZWxhdGl2ZSh7IHJvdW5kOiBmYWxzZSB9KSAvLz0+ICIxLjUgZGF5cyBhZ28iCiAgICAgKi8KICAgIHRvUmVsYXRpdmUob3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKICAgICAgY29uc3QgYmFzZSA9IG9wdGlvbnMuYmFzZSB8fCBEYXRlVGltZS5mcm9tT2JqZWN0KHt9LCB7IHpvbmU6IHRoaXMuem9uZSB9KSwKICAgICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nID8gKHRoaXMgPCBiYXNlID8gLW9wdGlvbnMucGFkZGluZyA6IG9wdGlvbnMucGFkZGluZykgOiAwOwogICAgICBsZXQgdW5pdHMgPSBbInllYXJzIiwgIm1vbnRocyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyJdOwogICAgICBsZXQgdW5pdCA9IG9wdGlvbnMudW5pdDsKICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy51bml0KSkgewogICAgICAgIHVuaXRzID0gb3B0aW9ucy51bml0OwogICAgICAgIHVuaXQgPSB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShiYXNlLCB0aGlzLnBsdXMocGFkZGluZyksIHsKICAgICAgICAuLi5vcHRpb25zLAogICAgICAgIG51bWVyaWM6ICJhbHdheXMiLAogICAgICAgIHVuaXRzLAogICAgICAgIHVuaXQsCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGRhdGUgcmVsYXRpdmUgdG8gdG9kYXksIHN1Y2ggYXMgInllc3RlcmRheSIgb3IgIm5leHQgbW9udGgiLgogICAgICogT25seSBpbnRlcm5hdGlvbmFsaXplcyBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0CiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBbb3B0aW9ucy5iYXNlPURhdGVUaW1lLm5vdygpXSAtIHRoZSBEYXRlVGltZSB0byB1c2UgYXMgdGhlIGJhc2lzIHRvIHdoaWNoIHRoaXMgdGltZSBpcyBjb21wYXJlZC4gRGVmYXVsdHMgdG8gbm93LgogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubG9jYWxlIC0gb3ZlcnJpZGUgdGhlIGxvY2FsZSBvZiB0aGlzIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdDsgaWYgb21pdHRlZCwgdGhlIG1ldGhvZCB3aWxsIHBpY2sgdGhlIHVuaXQuIFVzZSBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsIG9yICJkYXlzIgogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gb3ZlcnJpZGUgdGhlIG51bWJlcmluZ1N5c3RlbSBvZiB0aGlzIERhdGVUaW1lLiBUaGUgSW50bCBzeXN0ZW0gbWF5IGNob29zZSBub3QgdG8gaG9ub3IgdGhpcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKCkgLy89PiAidG9tb3Jyb3ciCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoImVzIikucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSgpIC8vPT4gIiJtYcOxYW5hIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKHsgbG9jYWxlOiAiZnIiIH0pIC8vPT4gImRlbWFpbiIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+ICIyIGRheXMgYWdvIgogICAgICovCiAgICB0b1JlbGF0aXZlQ2FsZW5kYXIob3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIHJldHVybiBkaWZmUmVsYXRpdmUob3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLCB0aGlzLCB7CiAgICAgICAgLi4ub3B0aW9ucywKICAgICAgICBudW1lcmljOiAiYXV0byIsCiAgICAgICAgdW5pdHM6IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiXSwKICAgICAgICBjYWxlbmRhcnk6IHRydWUsCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBtaW4gb2Ygc2V2ZXJhbCBkYXRlIHRpbWVzCiAgICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgRGF0ZVRpbWVzIGZyb20gd2hpY2ggdG8gY2hvb3NlIHRoZSBtaW5pbXVtCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0gdGhlIG1pbiBEYXRlVGltZSwgb3IgdW5kZWZpbmVkIGlmIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50CiAgICAgKi8KICAgIHN0YXRpYyBtaW4oLi4uZGF0ZVRpbWVzKSB7CiAgICAgIGlmICghZGF0ZVRpbWVzLmV2ZXJ5KERhdGVUaW1lLmlzRGF0ZVRpbWUpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJtaW4gcmVxdWlyZXMgYWxsIGFyZ3VtZW50cyBiZSBEYXRlVGltZXMiKTsKICAgICAgfQogICAgICByZXR1cm4gYmVzdEJ5KGRhdGVUaW1lcywgKGkpID0+IGkudmFsdWVPZigpLCBNYXRoLm1pbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIG1heCBvZiBzZXZlcmFsIGRhdGUgdGltZXMKICAgICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1heGltdW0KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWF4IERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAqLwogICAgc3RhdGljIG1heCguLi5kYXRlVGltZXMpIHsKICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm1heCByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lcyIpOwogICAgICB9CiAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWF4KTsKICAgIH0KCiAgICAvLyBNSVNDCgogICAgLyoqCiAgICAgKiBFeHBsYWluIGhvdyBhIHN0cmluZyB3b3VsZCBiZSBwYXJzZWQgYnkgZnJvbUZvcm1hdCgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBzdHJpbmcgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHRoZSBzdHJpbmcgaXMgZXhwZWN0ZWQgdG8gYmUgaW4gKHNlZSBkZXNjcmlwdGlvbikKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0YWtlbiBieSBmcm9tRm9ybWF0KCkKICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGNvbnN0IHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCB9ID0gb3B0aW9ucywKICAgICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7CiAgICAgICAgICBsb2NhbGUsCiAgICAgICAgICBudW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICBkZWZhdWx0VG9FTjogdHJ1ZSwKICAgICAgICB9KTsKICAgICAgcmV0dXJuIGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZVRvVXNlLCB0ZXh0LCBmbXQpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21Gb3JtYXRFeHBsYWluIGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmdFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyA9IHt9KSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tRm9ybWF0RXhwbGFpbih0ZXh0LCBmbXQsIG9wdGlvbnMpOwogICAgfQoKICAgIC8vIEZPUk1BVCBQUkVTRVRTCgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlIDEwLzE0LzE5ODMKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9TSE9SVCgpIHsKICAgICAgcmV0dXJuIERBVEVfU0hPUlQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMnCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVfTUVEKCkgewogICAgICByZXR1cm4gREFURV9NRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIE9jdCAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9NRURfV0lUSF9XRUVLREFZKCkgewogICAgICByZXR1cm4gREFURV9NRURfV0lUSF9XRUVLREFZOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9GVUxMKCkgewogICAgICByZXR1cm4gREFURV9GVUxMOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnVHVlc2RheSwgT2N0b2JlciAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9IVUdFKCkgewogICAgICByZXR1cm4gREFURV9IVUdFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9TSU1QTEUoKSB7CiAgICAgIHJldHVybiBUSU1FX1NJTVBMRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IFRJTUVfV0lUSF9TRUNPTkRTKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NIT1JUX09GRlNFVCgpIHsKICAgICAgcmV0dXJuIFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX0xPTkdfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX0xPTkdfT0ZGU0VUOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzAnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9TSU1QTEUoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1NJTVBMRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzJywgYWx3YXlzIDI0LWhvdXIuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IFRJTUVfMjRfV0lUSF9TRUNPTkRTKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBFRFQnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCgpIHsKICAgICAgcmV0dXJuIFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMTAvMTQvMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9TSE9SVCgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMTAvMTQvMTk4MywgOTozMDozMyBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEKCkgewogICAgICByZXR1cm4gREFURVRJTUVfTUVEOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0IDE0LCAxOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpLCAxNCBPY3QgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZKCkgewogICAgICByZXR1cm4gREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdG9iZXIgMTQsIDE5ODMsIDk6MzAgQU0gRURUJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX0ZVTEwoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9GVUxMOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRSgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0hVR0U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmlkYXksIE9jdG9iZXIgMTQsIDE5ODMsIDk6MzA6MzMgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTKCkgewogICAgICByZXR1cm4gREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFM7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIGZyaWVuZGx5RGF0ZVRpbWUoZGF0ZVRpbWVpc2gpIHsKICAgIGlmIChEYXRlVGltZS5pc0RhdGVUaW1lKGRhdGVUaW1laXNoKSkgewogICAgICByZXR1cm4gZGF0ZVRpbWVpc2g7CiAgICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIGRhdGVUaW1laXNoLnZhbHVlT2YgJiYgaXNOdW1iZXIoZGF0ZVRpbWVpc2gudmFsdWVPZigpKSkgewogICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUpTRGF0ZShkYXRlVGltZWlzaCk7CiAgICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIHR5cGVvZiBkYXRlVGltZWlzaCA9PT0gIm9iamVjdCIpIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoZGF0ZVRpbWVpc2gpOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgIGBVbmtub3duIGRhdGV0aW1lIGFyZ3VtZW50OiAke2RhdGVUaW1laXNofSwgb2YgdHlwZSAke3R5cGVvZiBkYXRlVGltZWlzaH1gCiAgICAgICk7CiAgICB9CiAgfQoKICAvLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAvLyBRdWVyeSBTZXR0aW5ncyAvLw0KICAvLy8vLy8vLy8vLy8vLy8vLy8vLw0KICBjb25zdCBERUZBVUxUX1FVRVJZX1NFVFRJTkdTID0gew0KICAgICAgcmVuZGVyTnVsbEFzOiAiXFwtIiwNCiAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLA0KICAgICAgdGFza0NvbXBsZXRpb25Vc2VFbW9qaVNob3J0aGFuZDogZmFsc2UsDQogICAgICB0YXNrQ29tcGxldGlvblRleHQ6ICJjb21wbGV0aW9uIiwNCiAgICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogInl5eXktTU0tZGQiLA0KICAgICAgcmVjdXJzaXZlU3ViVGFza0NvbXBsZXRpb246IGZhbHNlLA0KICAgICAgd2Fybk9uRW1wdHlSZXN1bHQ6IHRydWUsDQogICAgICByZWZyZXNoRW5hYmxlZDogdHJ1ZSwNCiAgICAgIHJlZnJlc2hJbnRlcnZhbDogMjUwMCwNCiAgICAgIGRlZmF1bHREYXRlRm9ybWF0OiAiTU1NTSBkZCwgeXl5eSIsDQogICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6ICJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5IiwNCiAgICAgIG1heFJlY3Vyc2l2ZVJlbmRlckRlcHRoOiA0LA0KICAgICAgdGFibGVJZENvbHVtbk5hbWU6ICJGaWxlIiwNCiAgICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiAiR3JvdXAiLA0KICAgICAgc2hvd1Jlc3VsdENvdW50OiB0cnVlLA0KICB9Ow0KICBjb25zdCBERUZBVUxUX0VYUE9SVF9TRVRUSU5HUyA9IHsNCiAgICAgIGFsbG93SHRtbDogdHJ1ZSwNCiAgfTsNCiAgLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGRhdGF2aWV3IG9uIGluc3RhbGwuICovDQogICh7DQogICAgICAuLi5ERUZBVUxUX1FVRVJZX1NFVFRJTkdTLA0KICAgICAgLi4uREVGQVVMVF9FWFBPUlRfU0VUVElOR1MsDQogICAgICAuLi57DQogICAgICAgICAgaW5saW5lUXVlcnlQcmVmaXg6ICI9IiwNCiAgICAgICAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiAiJD0iLA0KICAgICAgICAgIGlubGluZVF1ZXJpZXNJbkNvZGVibG9ja3M6IHRydWUsDQogICAgICAgICAgZW5hYmxlSW5saW5lRGF0YXZpZXc6IHRydWUsDQogICAgICAgICAgZW5hYmxlRGF0YXZpZXdKczogZmFsc2UsDQogICAgICAgICAgZW5hYmxlSW5saW5lRGF0YXZpZXdKczogZmFsc2UsDQogICAgICAgICAgcHJldHR5UmVuZGVySW5saW5lRmllbGRzOiB0cnVlLA0KICAgICAgICAgIGRhdGF2aWV3SnNLZXl3b3JkOiAiZGF0YXZpZXdqcyIsDQogICAgICB9LA0KICB9KTsKCiAgLyoqIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLiAqLw0KICBjbGFzcyBTdWNjZXNzIHsNCiAgICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7DQogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOw0KICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IHRydWU7DQogICAgICB9DQogICAgICBtYXAoZikgew0KICAgICAgICAgIHJldHVybiBuZXcgU3VjY2VzcyhmKHRoaXMudmFsdWUpKTsNCiAgICAgIH0NCiAgICAgIGZsYXRNYXAoZikgew0KICAgICAgICAgIHJldHVybiBmKHRoaXMudmFsdWUpOw0KICAgICAgfQ0KICAgICAgbWFwRXJyKGYpIHsNCiAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgIH0NCiAgICAgIGJpbWFwKHN1Y2MsIF9mYWlsKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMubWFwKHN1Y2MpOw0KICAgICAgfQ0KICAgICAgb3JFbHNlKF92YWx1ZSkgew0KICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOw0KICAgICAgfQ0KICAgICAgY2FzdCgpIHsNCiAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgIH0NCiAgICAgIG9yRWxzZVRocm93KF9tZXNzYWdlKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7DQogICAgICB9DQogIH0NCiAgLyoqIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLiAqLw0KICBjbGFzcyBGYWlsdXJlIHsNCiAgICAgIGNvbnN0cnVjdG9yKGVycm9yKSB7DQogICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOw0KICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IGZhbHNlOw0KICAgICAgfQ0KICAgICAgbWFwKF9mKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXM7DQogICAgICB9DQogICAgICBmbGF0TWFwKF9mKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXM7DQogICAgICB9DQogICAgICBtYXBFcnIoZikgew0KICAgICAgICAgIHJldHVybiBuZXcgRmFpbHVyZShmKHRoaXMuZXJyb3IpKTsNCiAgICAgIH0NCiAgICAgIGJpbWFwKF9zdWNjLCBmYWlsKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMubWFwRXJyKGZhaWwpOw0KICAgICAgfQ0KICAgICAgb3JFbHNlKHZhbHVlKSB7DQogICAgICAgICAgcmV0dXJuIHZhbHVlOw0KICAgICAgfQ0KICAgICAgY2FzdCgpIHsNCiAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgIH0NCiAgICAgIG9yRWxzZVRocm93KG1lc3NhZ2UpIHsNCiAgICAgICAgICBpZiAobWVzc2FnZSkNCiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UodGhpcy5lcnJvcikpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCIiICsgdGhpcy5lcnJvcik7DQogICAgICB9DQogIH0NCiAgLyoqIE1vbmFkaWMgJ1Jlc3VsdCcgdHlwZSB3aGljaCBlbmNhcHN1bGF0ZXMgd2hldGhlciBhIHByb2NlZHVyZSBzdWNjZWVkZWQgb3IgZmFpbGVkLCBhcyB3ZWxsIGFzIGl0J3MgcmV0dXJuIHZhbHVlLiAqLw0KICB2YXIgUmVzdWx0Ow0KICAoZnVuY3Rpb24gKFJlc3VsdCkgew0KICAgICAgLyoqIENvbnN0cnVjdCBhIG5ldyBzdWNjZXNzIHJlc3VsdCB3cmFwcGluZyB0aGUgZ2l2ZW4gdmFsdWUuICovDQogICAgICBmdW5jdGlvbiBzdWNjZXNzKHZhbHVlKSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKHZhbHVlKTsNCiAgICAgIH0NCiAgICAgIFJlc3VsdC5zdWNjZXNzID0gc3VjY2VzczsNCiAgICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgZmFpbHVyZSB2YWx1ZSB3cmFwcGluZyB0aGUgZ2l2ZW4gZXJyb3IuICovDQogICAgICBmdW5jdGlvbiBmYWlsdXJlKGVycm9yKSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGVycm9yKTsNCiAgICAgIH0NCiAgICAgIFJlc3VsdC5mYWlsdXJlID0gZmFpbHVyZTsNCiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8NCiAgICAgIGZ1bmN0aW9uIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIGYpIHsNCiAgICAgICAgICBpZiAoZmlyc3Quc3VjY2Vzc2Z1bCkgew0KICAgICAgICAgICAgICBpZiAoc2Vjb25kLnN1Y2Nlc3NmdWwpDQogICAgICAgICAgICAgICAgICByZXR1cm4gZihmaXJzdC52YWx1ZSwgc2Vjb25kLnZhbHVlKTsNCiAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoc2Vjb25kLmVycm9yKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKGZpcnN0LmVycm9yKTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBSZXN1bHQuZmxhdE1hcDIgPSBmbGF0TWFwMjsNCiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8NCiAgICAgIGZ1bmN0aW9uIG1hcDIoZmlyc3QsIHNlY29uZCwgZikgew0KICAgICAgICAgIHJldHVybiBmbGF0TWFwMihmaXJzdCwgc2Vjb25kLCAoYSwgYikgPT4gc3VjY2VzcyhmKGEsIGIpKSk7DQogICAgICB9DQogICAgICBSZXN1bHQubWFwMiA9IG1hcDI7DQogIH0pKFJlc3VsdCB8fCAoUmVzdWx0ID0ge30pKTsKCiAgdmFyIGNvbW1vbmpzR2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyA6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge307CgogIHZhciBwYXJzaW1tb25fdW1kX21pbiA9IHtleHBvcnRzOiB7fX07CgogIChmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiAgIWZ1bmN0aW9uKG4sdCl7bW9kdWxlLmV4cG9ydHM9dCgpO30oInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6Y29tbW9uanNHbG9iYWwsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHQ9e307ZnVuY3Rpb24gcihlKXtpZih0W2VdKXJldHVybiB0W2VdLmV4cG9ydHM7dmFyIHU9dFtlXT17aTplLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIG5bZV0uY2FsbCh1LmV4cG9ydHMsdSx1LmV4cG9ydHMsciksdS5sPSEwLHUuZXhwb3J0c31yZXR1cm4gci5tPW4sci5jPXQsci5kPWZ1bmN0aW9uKG4sdCxlKXtyLm8obix0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sdCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OmV9KTt9LHIucj1mdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7fSxyLm49ZnVuY3Rpb24obil7dmFyIHQ9biYmbi5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIG4uZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gbn07cmV0dXJuIHIuZCh0LCJhIix0KSx0fSxyLm89ZnVuY3Rpb24obix0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sdCl9LHIucD0iIixyKHIucz0wKX0oW2Z1bmN0aW9uKG4sdCxyKXtmdW5jdGlvbiBlKG4pe2lmKCEodGhpcyBpbnN0YW5jZW9mIGUpKXJldHVybiBuZXcgZShuKTt0aGlzLl89bjt9dmFyIHU9ZS5wcm90b3R5cGU7ZnVuY3Rpb24gbyhuLHQpe2Zvcih2YXIgcj0wO3I8bjtyKyspdChyKTt9ZnVuY3Rpb24gaShuLHQscil7cmV0dXJuIGZ1bmN0aW9uKG4sdCl7byh0Lmxlbmd0aCxmdW5jdGlvbihyKXtuKHRbcl0scix0KTt9KTt9KGZ1bmN0aW9uKHIsZSx1KXt0PW4odCxyLGUsdSk7fSxyKSx0fWZ1bmN0aW9uIGEobix0KXtyZXR1cm4gaShmdW5jdGlvbih0LHIsZSx1KXtyZXR1cm4gdC5jb25jYXQoW24ocixlLHUpXSl9LFtdLHQpfWZ1bmN0aW9uIGYobix0KXt2YXIgcj17djowLGJ1Zjp0fTtyZXR1cm4gbyhuLGZ1bmN0aW9uKCl7dmFyIG47cj17djpyLnY8PDF8KG49ci5idWYsblswXT4+NyksYnVmOmZ1bmN0aW9uKG4pe3ZhciB0PWkoZnVuY3Rpb24obix0LHIsZSl7cmV0dXJuIG4uY29uY2F0KHI9PT1lLmxlbmd0aC0xP0J1ZmZlci5mcm9tKFt0LDBdKS5yZWFkVUludDE2QkUoMCk6ZS5yZWFkVUludDE2QkUocikpfSxbXSxuKTtyZXR1cm4gQnVmZmVyLmZyb20oYShmdW5jdGlvbihuKXtyZXR1cm4gKG48PDEmNjU1MzUpPj44fSx0KSl9KHIuYnVmKX07fSkscn1mdW5jdGlvbiBjKCl7cmV0dXJuICJ1bmRlZmluZWQiIT10eXBlb2YgQnVmZmVyfWZ1bmN0aW9uIHMoKXtpZighYygpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyIGdsb2JhbCBkb2VzIG5vdCBleGlzdDsgcGxlYXNlIHVzZSB3ZWJwYWNrIGlmIHlvdSBuZWVkIHRvIHBhcnNlIEJ1ZmZlcnMgaW4gdGhlIGJyb3dzZXIuIil9ZnVuY3Rpb24gbChuKXtzKCk7dmFyIHQ9aShmdW5jdGlvbihuLHQpe3JldHVybiBuK3R9LDAsbik7aWYodCU4IT0wKXRocm93IG5ldyBFcnJvcigiVGhlIGJpdHMgWyIrbi5qb2luKCIsICIpKyJdIGFkZCB1cCB0byAiK3QrIiB3aGljaCBpcyBub3QgYW4gZXZlbiBudW1iZXIgb2YgYnl0ZXM7IHRoZSB0b3RhbCBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IDgiKTt2YXIgcix1PXQvOCxvPShyPWZ1bmN0aW9uKG4pe3JldHVybiBuPjQ4fSxpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG58fChyKHQpP3Q6bil9LG51bGwsbikpO2lmKG8pdGhyb3cgbmV3IEVycm9yKG8rIiBiaXQgcmFuZ2UgcmVxdWVzdGVkIGV4Y2VlZHMgNDggYml0ICg2IGJ5dGUpIE51bWJlciBtYXguIik7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHQscil7dmFyIGU9dStyO3JldHVybiBlPnQubGVuZ3RoP3gocix1LnRvU3RyaW5nKCkrIiBieXRlcyIpOmIoZSxpKGZ1bmN0aW9uKG4sdCl7dmFyIHI9Zih0LG4uYnVmKTtyZXR1cm4ge2NvbGw6bi5jb2xsLmNvbmNhdChyLnYpLGJ1ZjpyLmJ1Zn19LHtjb2xsOltdLGJ1Zjp0LnNsaWNlKHIsZSl9LG4pLmNvbGwpfSl9ZnVuY3Rpb24gaChuLHQpe3JldHVybiBuZXcgZShmdW5jdGlvbihyLGUpe3JldHVybiBzKCksZSt0PnIubGVuZ3RoP3goZSx0KyIgYnl0ZXMgZm9yICIrbik6YihlK3Qsci5zbGljZShlLGUrdCkpfSl9ZnVuY3Rpb24gcChuLHQpe2lmKCJudW1iZXIiIT10eXBlb2Yocj10KXx8TWF0aC5mbG9vcihyKSE9PXJ8fHQ8MHx8dD42KXRocm93IG5ldyBFcnJvcihuKyIgcmVxdWlyZXMgaW50ZWdlciBsZW5ndGggaW4gcmFuZ2UgWzAsIDZdLiIpO3ZhciByO31mdW5jdGlvbiBkKG4pe3JldHVybiBwKCJ1aW50QkUiLG4pLGgoInVpbnRCRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludEJFKDAsbil9KX1mdW5jdGlvbiB2KG4pe3JldHVybiBwKCJ1aW50TEUiLG4pLGgoInVpbnRMRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludExFKDAsbil9KX1mdW5jdGlvbiBnKG4pe3JldHVybiBwKCJpbnRCRSIsbiksaCgiaW50QkUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludEJFKDAsbil9KX1mdW5jdGlvbiBtKG4pe3JldHVybiBwKCJpbnRMRSIsbiksaCgiaW50TEUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludExFKDAsbil9KX1mdW5jdGlvbiB5KG4pe3JldHVybiBuIGluc3RhbmNlb2YgZX1mdW5jdGlvbiBFKG4pe3JldHVybiAiW29iamVjdCBBcnJheV0iPT09e30udG9TdHJpbmcuY2FsbChuKX1mdW5jdGlvbiB3KG4pe3JldHVybiBjKCkmJkJ1ZmZlci5pc0J1ZmZlcihuKX1mdW5jdGlvbiBiKG4sdCl7cmV0dXJuIHtzdGF0dXM6ITAsaW5kZXg6bix2YWx1ZTp0LGZ1cnRoZXN0Oi0xLGV4cGVjdGVkOltdfX1mdW5jdGlvbiB4KG4sdCl7cmV0dXJuIEUodCl8fCh0PVt0XSkse3N0YXR1czohMSxpbmRleDotMSx2YWx1ZTpudWxsLGZ1cnRoZXN0Om4sZXhwZWN0ZWQ6dH19ZnVuY3Rpb24gQihuLHQpe2lmKCF0KXJldHVybiBuO2lmKG4uZnVydGhlc3Q+dC5mdXJ0aGVzdClyZXR1cm4gbjt2YXIgcj1uLmZ1cnRoZXN0PT09dC5mdXJ0aGVzdD9mdW5jdGlvbihuLHQpe2lmKGZ1bmN0aW9uKCl7aWYodm9pZCAwIT09ZS5fc3VwcG9ydHNTZXQpcmV0dXJuIGUuX3N1cHBvcnRzU2V0O3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU2V0O3JldHVybiBlLl9zdXBwb3J0c1NldD1uLG59KCkmJkFycmF5LmZyb20pe2Zvcih2YXIgcj1uZXcgU2V0KG4pLHU9MDt1PHQubGVuZ3RoO3UrKylyLmFkZCh0W3VdKTt2YXIgbz1BcnJheS5mcm9tKHIpO3JldHVybiBvLnNvcnQoKSxvfWZvcih2YXIgaT17fSxhPTA7YTxuLmxlbmd0aDthKyspaVtuW2FdXT0hMDtmb3IodmFyIGY9MDtmPHQubGVuZ3RoO2YrKylpW3RbZl1dPSEwO3ZhciBjPVtdO2Zvcih2YXIgcyBpbiBpKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpJiZjLnB1c2gocyk7cmV0dXJuIGMuc29ydCgpLGN9KG4uZXhwZWN0ZWQsdC5leHBlY3RlZCk6dC5leHBlY3RlZDtyZXR1cm4ge3N0YXR1czpuLnN0YXR1cyxpbmRleDpuLmluZGV4LHZhbHVlOm4udmFsdWUsZnVydGhlc3Q6dC5mdXJ0aGVzdCxleHBlY3RlZDpyfX12YXIgaj17fTtmdW5jdGlvbiBTKG4sdCl7aWYodyhuKSlyZXR1cm4ge29mZnNldDp0LGxpbmU6LTEsY29sdW1uOi0xfTtuIGluIGp8fChqW25dPXt9KTtmb3IodmFyIHI9altuXSxlPTAsdT0wLG89MCxpPXQ7aT49MDspe2lmKGkgaW4gcil7ZT1yW2ldLmxpbmUsMD09PW8mJihvPXJbaV0ubGluZVN0YXJ0KTticmVha30oIlxuIj09PW4uY2hhckF0KGkpfHwiXHIiPT09bi5jaGFyQXQoaSkmJiJcbiIhPT1uLmNoYXJBdChpKzEpKSYmKHUrKywwPT09byYmKG89aSsxKSksaS0tO312YXIgYT1lK3UsZj10LW87cmV0dXJuIHJbdF09e2xpbmU6YSxsaW5lU3RhcnQ6b30se29mZnNldDp0LGxpbmU6YSsxLGNvbHVtbjpmKzF9fWZ1bmN0aW9uIF8obil7aWYoIXkobikpdGhyb3cgbmV3IEVycm9yKCJub3QgYSBwYXJzZXI6ICIrbil9ZnVuY3Rpb24gTChuLHQpe3JldHVybiAic3RyaW5nIj09dHlwZW9mIG4/bi5jaGFyQXQodCk6blt0XX1mdW5jdGlvbiBPKG4pe2lmKCJudW1iZXIiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIG51bWJlcjogIituKX1mdW5jdGlvbiBrKG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgZnVuY3Rpb246ICIrbil9ZnVuY3Rpb24gUChuKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBzdHJpbmc6ICIrbil9dmFyIHE9MixBPTMsST04LEY9NSpJLE09NCpJLHo9IiAgIjtmdW5jdGlvbiBSKG4sdCl7cmV0dXJuIG5ldyBBcnJheSh0KzEpLmpvaW4obil9ZnVuY3Rpb24gVShuLHQscil7dmFyIGU9dC1uLmxlbmd0aDtyZXR1cm4gZTw9MD9uOlIocixlKStufWZ1bmN0aW9uIFcobix0LHIsZSl7cmV0dXJuIHtmcm9tOm4tdD4wP24tdDowLHRvOm4rcj5lP2U6bityfX1mdW5jdGlvbiBEKG4sdCl7dmFyIHIsZSx1LG8sZixjPXQuaW5kZXgscz1jLm9mZnNldCxsPTE7aWYocz09PW4ubGVuZ3RoKXJldHVybiAiR290IHRoZSBlbmQgb2YgdGhlIGlucHV0IjtpZih3KG4pKXt2YXIgaD1zLXMlSSxwPXMtaCxkPVcoaCxGLE0rSSxuLmxlbmd0aCksdj1hKGZ1bmN0aW9uKG4pe3JldHVybiBhKGZ1bmN0aW9uKG4pe3JldHVybiBVKG4udG9TdHJpbmcoMTYpLDIsIjAiKX0sbil9LGZ1bmN0aW9uKG4sdCl7dmFyIHI9bi5sZW5ndGgsZT1bXSx1PTA7aWYocjw9dClyZXR1cm4gW24uc2xpY2UoKV07Zm9yKHZhciBvPTA7bzxyO28rKyllW3VdfHxlLnB1c2goW10pLGVbdV0ucHVzaChuW29dKSwobysxKSV0PT0wJiZ1Kys7cmV0dXJuIGV9KG4uc2xpY2UoZC5mcm9tLGQudG8pLnRvSlNPTigpLmRhdGEsSSkpO289ZnVuY3Rpb24obil7cmV0dXJuIDA9PT1uLmZyb20mJjE9PT1uLnRvP3tmcm9tOm4uZnJvbSx0bzpuLnRvfTp7ZnJvbTpuLmZyb20vSSx0bzpNYXRoLmZsb29yKG4udG8vSSl9fShkKSxlPWgvSSxyPTMqcCxwPj00JiYocis9MSksbD0yLHU9YShmdW5jdGlvbihuKXtyZXR1cm4gbi5sZW5ndGg8PTQ/bi5qb2luKCIgIik6bi5zbGljZSgwLDQpLmpvaW4oIiAiKSsiICAiK24uc2xpY2UoNCkuam9pbigiICIpfSx2KSwoZj0oOCooby50bz4wP28udG8tMTpvLnRvKSkudG9TdHJpbmcoMTYpLmxlbmd0aCk8MiYmKGY9Mik7fWVsc2Uge3ZhciBnPW4uc3BsaXQoL1xyXG58W1xuXHJcdTIwMjhcdTIwMjldLyk7cj1jLmNvbHVtbi0xLGU9Yy5saW5lLTEsbz1XKGUscSxBLGcubGVuZ3RoKSx1PWcuc2xpY2Uoby5mcm9tLG8udG8pLGY9by50by50b1N0cmluZygpLmxlbmd0aDt9dmFyIG09ZS1vLmZyb207cmV0dXJuIHcobikmJihmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKSxpKGZ1bmN0aW9uKHQsZSx1KXt2YXIgaSxhPXU9PT1tLGM9YT8iPiAiOno7cmV0dXJuIGk9dyhuKT9VKCg4KihvLmZyb20rdSkpLnRvU3RyaW5nKDE2KSxmLCIwIik6VSgoby5mcm9tK3UrMSkudG9TdHJpbmcoKSxmLCIgIiksW10uY29uY2F0KHQsW2MraSsiIHwgIitlXSxhP1t6K1IoIiAiLGYpKyIgfCAiK1UoIiIsciwiICIpK1IoIl4iLGwpXTpbXSl9LFtdLHUpLmpvaW4oIlxuIil9ZnVuY3Rpb24gTihuLHQpe3JldHVybiBbIlxuIiwiLS0gUEFSU0lORyBGQUlMRUQgIitSKCItIiw1MCksIlxuXG4iLEQobix0KSwiXG5cbiIsKHI9dC5leHBlY3RlZCwxPT09ci5sZW5ndGg/IkV4cGVjdGVkOlxuXG4iK3JbMF06IkV4cGVjdGVkIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBcblxuIityLmpvaW4oIiwgIikpLCJcbiJdLmpvaW4oIiIpO3ZhciByO31mdW5jdGlvbiBHKG4pe3JldHVybiB2b2lkIDAhPT1uLmZsYWdzP24uZmxhZ3M6W24uZ2xvYmFsPyJnIjoiIixuLmlnbm9yZUNhc2U/ImkiOiIiLG4ubXVsdGlsaW5lPyJtIjoiIixuLnVuaWNvZGU/InUiOiIiLG4uc3RpY2t5PyJ5IjoiIl0uam9pbigiIil9ZnVuY3Rpb24gQygpe2Zvcih2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aCxyPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbihyLGUpe2Zvcih2YXIgdSxvPW5ldyBBcnJheSh0KSxpPTA7aTx0O2krPTEpe2lmKCEodT1CKG5baV0uXyhyLGUpLHUpKS5zdGF0dXMpcmV0dXJuIHU7b1tpXT11LnZhbHVlLGU9dS5pbmRleDt9cmV0dXJuIEIoYihlLG8pLHUpfSl9ZnVuY3Rpb24gSigpe3ZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZigwPT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJzZXFNYXAgbmVlZHMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7dmFyIHQ9bi5wb3AoKTtyZXR1cm4gayh0KSxDLmFwcGx5KG51bGwsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0LmFwcGx5KG51bGwsbil9KX1mdW5jdGlvbiBUKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLHQ9bi5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIFkoInplcm8gYWx0ZXJuYXRlcyIpO2Zvcih2YXIgcj0wO3I8dDtyKz0xKV8obltyXSk7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGUsdT0wO3U8bi5sZW5ndGg7dSs9MSlpZigoZT1CKG5bdV0uXyh0LHIpLGUpKS5zdGF0dXMpcmV0dXJuIGU7cmV0dXJuIGV9KX1mdW5jdGlvbiBWKG4sdCl7cmV0dXJuIEgobix0KS5vcihYKFtdKSl9ZnVuY3Rpb24gSChuLHQpe3JldHVybiBfKG4pLF8odCksSihuLHQudGhlbihuKS5tYW55KCksZnVuY3Rpb24obix0KXtyZXR1cm4gW25dLmNvbmNhdCh0KX0pfWZ1bmN0aW9uIEsobil7UChuKTt2YXIgdD0iJyIrbisiJyI7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT1lK24ubGVuZ3RoLG89ci5zbGljZShlLHUpO3JldHVybiBvPT09bj9iKHUsbyk6eChlLHQpfSl9ZnVuY3Rpb24gUShuLHQpeyFmdW5jdGlvbihuKXtpZighKG4gaW5zdGFuY2VvZiBSZWdFeHApKXRocm93IG5ldyBFcnJvcigibm90IGEgcmVnZXhwOiAiK24pO2Zvcih2YXIgdD1HKG4pLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGU9dC5jaGFyQXQocik7aWYoImkiIT09ZSYmIm0iIT09ZSYmInUiIT09ZSYmInMiIT09ZSl0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHJlZ2V4cCBmbGFnICInK2UrJyI6ICcrbil9fShuKSxhcmd1bWVudHMubGVuZ3RoPj0yP08odCk6dD0wO3ZhciByPWZ1bmN0aW9uKG4pe3JldHVybiBSZWdFeHAoIl4oPzoiK24uc291cmNlKyIpIixHKG4pKX0obiksdT0iIituO3JldHVybiBlKGZ1bmN0aW9uKG4sZSl7dmFyIG89ci5leGVjKG4uc2xpY2UoZSkpO2lmKG8pe2lmKDA8PXQmJnQ8PW8ubGVuZ3RoKXt2YXIgaT1vWzBdLGE9b1t0XTtyZXR1cm4gYihlK2kubGVuZ3RoLGEpfXJldHVybiB4KGUsInZhbGlkIG1hdGNoIGdyb3VwICgwIHRvICIrby5sZW5ndGgrIikgaW4gIit1KX1yZXR1cm4geChlLHUpfSl9ZnVuY3Rpb24gWChuKXtyZXR1cm4gZShmdW5jdGlvbih0LHIpe3JldHVybiBiKHIsbil9KX1mdW5jdGlvbiBZKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIHgocixuKX0pfWZ1bmN0aW9uIFoobil7aWYoeShuKSlyZXR1cm4gZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpO3JldHVybiBlLmluZGV4PXIsZS52YWx1ZT0iIixlfSk7aWYoInN0cmluZyI9PXR5cGVvZiBuKXJldHVybiBaKEsobikpO2lmKG4gaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuIFooUShuKSk7dGhyb3cgbmV3IEVycm9yKCJub3QgYSBzdHJpbmcsIHJlZ2V4cCwgb3IgcGFyc2VyOiAiK24pfWZ1bmN0aW9uICQobil7cmV0dXJuIF8obiksZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpLHU9dC5zbGljZShyLGUuaW5kZXgpO3JldHVybiBlLnN0YXR1cz94KHIsJ25vdCAiJyt1KyciJyk6YihyLG51bGwpfSl9ZnVuY3Rpb24gbm4obil7cmV0dXJuIGsobiksZShmdW5jdGlvbih0LHIpe3ZhciBlPUwodCxyKTtyZXR1cm4gcjx0Lmxlbmd0aCYmbihlKT9iKHIrMSxlKTp4KHIsImEgY2hhcmFjdGVyL2J5dGUgbWF0Y2hpbmcgIituKX0pfWZ1bmN0aW9uIHRuKG4sdCl7YXJndW1lbnRzLmxlbmd0aDwyJiYodD1uLG49dm9pZCAwKTt2YXIgcj1lKGZ1bmN0aW9uKG4sZSl7cmV0dXJuIHIuXz10KCkuXyxyLl8obixlKX0pO3JldHVybiBuP3IuZGVzYyhuKTpyfWZ1bmN0aW9uIHJuKCl7cmV0dXJuIFkoImZhbnRhc3ktbGFuZC9lbXB0eSIpfXUucGFyc2U9ZnVuY3Rpb24obil7aWYoInN0cmluZyIhPXR5cGVvZiBuJiYhdyhuKSl0aHJvdyBuZXcgRXJyb3IoIi5wYXJzZSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgc3RyaW5nIG9yIEJ1ZmZlciBhcyBpdHMgYXJndW1lbnQiKTt2YXIgdCxyPXRoaXMuc2tpcChhbikuXyhuLDApO3JldHVybiB0PXIuc3RhdHVzP3tzdGF0dXM6ITAsdmFsdWU6ci52YWx1ZX06e3N0YXR1czohMSxpbmRleDpTKG4sci5mdXJ0aGVzdCksZXhwZWN0ZWQ6ci5leHBlY3RlZH0sZGVsZXRlIGpbbl0sdH0sdS50cnlQYXJzZT1mdW5jdGlvbihuKXt2YXIgdD10aGlzLnBhcnNlKG4pO2lmKHQuc3RhdHVzKXJldHVybiB0LnZhbHVlO3ZhciByPU4obix0KSxlPW5ldyBFcnJvcihyKTt0aHJvdyBlLnR5cGU9IlBhcnNpbW1vbkVycm9yIixlLnJlc3VsdD10LGV9LHUuYXNzZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHRoaXMuY2hhaW4oZnVuY3Rpb24ocil7cmV0dXJuIG4ocik/WChyKTpZKHQpfSl9LHUub3I9ZnVuY3Rpb24obil7cmV0dXJuIFQodGhpcyxuKX0sdS50cmltPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLndyYXAobixuKX0sdS53cmFwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIEoobix0aGlzLHQsZnVuY3Rpb24obix0KXtyZXR1cm4gdH0pfSx1LnRocnU9ZnVuY3Rpb24obil7cmV0dXJuIG4odGhpcyl9LHUudGhlbj1mdW5jdGlvbihuKXtyZXR1cm4gXyhuKSxDKHRoaXMsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSl9LHUubWFueT1mdW5jdGlvbigpe3ZhciBuPXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9W10sdT12b2lkIDA7Oyl7aWYoISh1PUIobi5fKHQsciksdSkpLnN0YXR1cylyZXR1cm4gQihiKHIsZSksdSk7aWYocj09PXUuaW5kZXgpdGhyb3cgbmV3IEVycm9yKCJpbmZpbml0ZSBsb29wIGRldGVjdGVkIGluIC5tYW55KCkgcGFyc2VyIC0tLSBjYWxsaW5nIC5tYW55KCkgb24gYSBwYXJzZXIgd2hpY2ggY2FuIGFjY2VwdCB6ZXJvIGNoYXJhY3RlcnMgaXMgdXN1YWxseSB0aGUgY2F1c2UiKTtyPXUuaW5kZXgsZS5wdXNoKHUudmFsdWUpO319KX0sdS50aWVXaXRoPWZ1bmN0aW9uKG4pe3JldHVybiBQKG4pLHRoaXMubWFwKGZ1bmN0aW9uKHQpe2lmKGZ1bmN0aW9uKG4pe2lmKCFFKG4pKXRocm93IG5ldyBFcnJvcigibm90IGFuIGFycmF5OiAiK24pfSh0KSx0Lmxlbmd0aCl7UCh0WzBdKTtmb3IodmFyIHI9dFswXSxlPTE7ZTx0Lmxlbmd0aDtlKyspUCh0W2VdKSxyKz1uK3RbZV07cmV0dXJuIHJ9cmV0dXJuICIifSl9LHUudGllPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGllV2l0aCgiIil9LHUudGltZXM9ZnVuY3Rpb24obix0KXt2YXIgcj10aGlzO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PW4pLE8obiksTyh0KSxlKGZ1bmN0aW9uKGUsdSl7Zm9yKHZhciBvPVtdLGk9dm9pZCAwLGE9dm9pZCAwLGY9MDtmPG47Zis9MSl7aWYoYT1CKGk9ci5fKGUsdSksYSksIWkuc3RhdHVzKXJldHVybiBhO3U9aS5pbmRleCxvLnB1c2goaS52YWx1ZSk7fWZvcig7Zjx0JiYoYT1CKGk9ci5fKGUsdSksYSksaS5zdGF0dXMpO2YrPTEpdT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTtyZXR1cm4gQihiKHUsbyksYSl9KX0sdS5yZXN1bHQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIG59KX0sdS5hdE1vc3Q9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMudGltZXMoMCxuKX0sdS5hdExlYXN0PWZ1bmN0aW9uKG4pe3JldHVybiBKKHRoaXMudGltZXMobiksdGhpcy5tYW55KCksZnVuY3Rpb24obix0KXtyZXR1cm4gbi5jb25jYXQodCl9KX0sdS5tYXA9ZnVuY3Rpb24obil7ayhuKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzP0IoYih1LmluZGV4LG4odS52YWx1ZSkpLHUpOnV9KX0sdS5jb250cmFtYXA9ZnVuY3Rpb24obil7ayhuKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5wYXJzZShuKHIuc2xpY2UoZSkpKTtyZXR1cm4gdS5zdGF0dXM/YihlK3IubGVuZ3RoLHUudmFsdWUpOnV9KX0sdS5wcm9tYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gayhuKSxrKHQpLHRoaXMuY29udHJhbWFwKG4pLm1hcCh0KX0sdS5za2lwPWZ1bmN0aW9uKG4pe3JldHVybiBDKHRoaXMsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuWzBdfSl9LHUubWFyaz1mdW5jdGlvbigpe3JldHVybiBKKGVuLHRoaXMsZW4sZnVuY3Rpb24obix0LHIpe3JldHVybiB7c3RhcnQ6bix2YWx1ZTp0LGVuZDpyfX0pfSx1Lm5vZGU9ZnVuY3Rpb24obil7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbih0LHIsZSl7cmV0dXJuIHtuYW1lOm4sdmFsdWU6cixzdGFydDp0LGVuZDplfX0pfSx1LnNlcEJ5PWZ1bmN0aW9uKG4pe3JldHVybiBWKHRoaXMsbil9LHUuc2VwQnkxPWZ1bmN0aW9uKG4pe3JldHVybiBIKHRoaXMsbil9LHUubG9va2FoZWFkPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoWihuKSl9LHUubm90Rm9sbG93ZWRCeT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5za2lwKCQobikpfSx1LmRlc2M9ZnVuY3Rpb24obil7RShuKXx8KG49W25dKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzfHwodS5leHBlY3RlZD1uKSx1fSl9LHUuZmFsbGJhY2s9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMub3IoWChuKSl9LHUuYXA9ZnVuY3Rpb24obil7cmV0dXJuIEoobix0aGlzLGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4odCl9KX0sdS5jaGFpbj1mdW5jdGlvbihuKXt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzP0Iobih1LnZhbHVlKS5fKHIsdS5pbmRleCksdSk6dX0pfSx1LmNvbmNhdD11Lm9yLHUuZW1wdHk9cm4sdS5vZj1YLHVbImZhbnRhc3ktbGFuZC9hcCJdPXUuYXAsdVsiZmFudGFzeS1sYW5kL2NoYWluIl09dS5jaGFpbix1WyJmYW50YXN5LWxhbmQvY29uY2F0Il09dS5jb25jYXQsdVsiZmFudGFzeS1sYW5kL2VtcHR5Il09dS5lbXB0eSx1WyJmYW50YXN5LWxhbmQvb2YiXT11Lm9mLHVbImZhbnRhc3ktbGFuZC9tYXAiXT11Lm1hcDt2YXIgZW49ZShmdW5jdGlvbihuLHQpe3JldHVybiBiKHQsUyhuLHQpKX0pLHVuPWUoZnVuY3Rpb24obix0KXtyZXR1cm4gdD49bi5sZW5ndGg/eCh0LCJhbnkgY2hhcmFjdGVyL2J5dGUiKTpiKHQrMSxMKG4sdCkpfSksb249ZShmdW5jdGlvbihuLHQpe3JldHVybiBiKG4ubGVuZ3RoLG4uc2xpY2UodCkpfSksYW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0PG4ubGVuZ3RoP3godCwiRU9GIik6Yih0LG51bGwpfSksZm49USgvWzAtOV0vKS5kZXNjKCJhIGRpZ2l0IiksY249USgvWzAtOV0qLykuZGVzYygib3B0aW9uYWwgZGlnaXRzIiksc249USgvW2Etel0vaSkuZGVzYygiYSBsZXR0ZXIiKSxsbj1RKC9bYS16XSovaSkuZGVzYygib3B0aW9uYWwgbGV0dGVycyIpLGhuPVEoL1xzKi8pLmRlc2MoIm9wdGlvbmFsIHdoaXRlc3BhY2UiKSxwbj1RKC9ccysvKS5kZXNjKCJ3aGl0ZXNwYWNlIiksZG49SygiXHIiKSx2bj1LKCJcbiIpLGduPUsoIlxyXG4iKSxtbj1UKGduLHZuLGRuKS5kZXNjKCJuZXdsaW5lIikseW49VChtbixhbik7ZS5hbGw9b24sZS5hbHQ9VCxlLmFueT11bixlLmNyPWRuLGUuY3JlYXRlTGFuZ3VhZ2U9ZnVuY3Rpb24obil7dmFyIHQ9e307Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJmZ1bmN0aW9uKHIpe3Rbcl09dG4oZnVuY3Rpb24oKXtyZXR1cm4gbltyXSh0KX0pO30ocik7cmV0dXJuIHR9LGUuY3JsZj1nbixlLmN1c3RvbT1mdW5jdGlvbihuKXtyZXR1cm4gZShuKGIseCkpfSxlLmRpZ2l0PWZuLGUuZGlnaXRzPWNuLGUuZW1wdHk9cm4sZS5lbmQ9eW4sZS5lb2Y9YW4sZS5mYWlsPVksZS5mb3JtYXRFcnJvcj1OLGUuaW5kZXg9ZW4sZS5pc1BhcnNlcj15LGUubGF6eT10bixlLmxldHRlcj1zbixlLmxldHRlcnM9bG4sZS5sZj12bixlLmxvb2thaGVhZD1aLGUubWFrZUZhaWx1cmU9eCxlLm1ha2VTdWNjZXNzPWIsZS5uZXdsaW5lPW1uLGUubm9uZU9mPWZ1bmN0aW9uKG4pe3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPDB9KS5kZXNjKCJub25lIG9mICciK24rIiciKX0sZS5ub3RGb2xsb3dlZEJ5PSQsZS5vZj1YLGUub25lT2Y9ZnVuY3Rpb24obil7Zm9yKHZhciB0PW4uc3BsaXQoIiIpLHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPSInIit0W3JdKyInIjtyZXR1cm4gbm4oZnVuY3Rpb24odCl7cmV0dXJuIG4uaW5kZXhPZih0KT49MH0pLmRlc2ModCl9LGUub3B0V2hpdGVzcGFjZT1obixlLlBhcnNlcj1lLGUucmFuZ2U9ZnVuY3Rpb24obix0KXtyZXR1cm4gbm4oZnVuY3Rpb24ocil7cmV0dXJuIG48PXImJnI8PXR9KS5kZXNjKG4rIi0iK3QpfSxlLnJlZ2V4PVEsZS5yZWdleHA9USxlLnNlcEJ5PVYsZS5zZXBCeTE9SCxlLnNlcT1DLGUuc2VxTWFwPUosZS5zZXFPYmo9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD17fSxyPTAsdT0obj1hcmd1bWVudHMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobikpLG89dS5sZW5ndGgsaT0wO2k8bztpKz0xKXt2YXIgYT11W2ldO2lmKCF5KGEpKXtpZihFKGEpJiYyPT09YS5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgYVswXSYmeShhWzFdKSl7dmFyIGY9YVswXTtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxmKSl0aHJvdyBuZXcgRXJyb3IoInNlcU9iajogZHVwbGljYXRlIGtleSAiK2YpO3RbZl09ITAscisrO2NvbnRpbnVlfXRocm93IG5ldyBFcnJvcigic2VxT2JqIGFyZ3VtZW50cyBtdXN0IGJlIHBhcnNlcnMgb3IgW3N0cmluZywgcGFyc2VyXSBhcnJheSBwYWlycy4iKX19aWYoMD09PXIpdGhyb3cgbmV3IEVycm9yKCJzZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFyc2VyLCBmb3VuZCB6ZXJvIik7cmV0dXJuIGUoZnVuY3Rpb24obix0KXtmb3IodmFyIHIsZT17fSxpPTA7aTxvO2krPTEpe3ZhciBhLGY7aWYoRSh1W2ldKT8oYT11W2ldWzBdLGY9dVtpXVsxXSk6KGE9bnVsbCxmPXVbaV0pLCEocj1CKGYuXyhuLHQpLHIpKS5zdGF0dXMpcmV0dXJuIHI7YSYmKGVbYV09ci52YWx1ZSksdD1yLmluZGV4O31yZXR1cm4gQihiKHQsZSkscil9KX0sZS5zdHJpbmc9SyxlLnN1Y2NlZWQ9WCxlLnRha2VXaGlsZT1mdW5jdGlvbihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXI7ZTx0Lmxlbmd0aCYmbihMKHQsZSkpOyllKys7cmV0dXJuIGIoZSx0LnNsaWNlKHIsZSkpfSl9LGUudGVzdD1ubixlLndoaXRlc3BhY2U9cG4sZVsiZmFudGFzeS1sYW5kL2VtcHR5Il09cm4sZVsiZmFudGFzeS1sYW5kL29mIl09WCxlLkJpbmFyeT17Yml0U2VxOmwsYml0U2VxT2JqOmZ1bmN0aW9uKG4pe3MoKTt2YXIgdD17fSxyPTAsZT1hKGZ1bmN0aW9uKG4pe2lmKEUobikpe3ZhciBlPW47aWYoMiE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiWyIrZS5qb2luKCIsICIpKyJdIHNob3VsZCBiZSBsZW5ndGggMiwgZ290IGxlbmd0aCAiK2UubGVuZ3RoKTtpZihQKGVbMF0pLE8oZVsxXSksT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZVswXSkpdGhyb3cgbmV3IEVycm9yKCJkdXBsaWNhdGUga2V5IGluIGJpdFNlcU9iajogIitlWzBdKTtyZXR1cm4gdFtlWzBdXT0hMCxyKyssZX1yZXR1cm4gTyhuKSxbbnVsbCxuXX0sbik7aWYocjwxKXRocm93IG5ldyBFcnJvcigiYml0U2VxT2JqIGV4cGVjdHMgYXQgbGVhc3Qgb25lIG5hbWVkIHBhaXIsIGdvdCBbIituLmpvaW4oIiwgIikrIl0iKTt2YXIgdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuWzBdfSxlKTtyZXR1cm4gbChhKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSxlKSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG51bGwhPT10WzBdJiYoblt0WzBdXT10WzFdKSxufSx7fSxhKGZ1bmN0aW9uKHQscil7cmV0dXJuIFt0LG5bcl1dfSx1KSl9KX0sYnl0ZTpmdW5jdGlvbihuKXtpZihzKCksTyhuKSxuPjI1NSl0aHJvdyBuZXcgRXJyb3IoIlZhbHVlIHNwZWNpZmllZCB0byBieXRlIGNvbnN0cnVjdG9yICgiK24rIj0weCIrbi50b1N0cmluZygxNikrIikgaXMgbGFyZ2VyIGluIHZhbHVlIHRoYW4gYSBzaW5nbGUgYnl0ZS4iKTt2YXIgdD0obj4xNT8iMHgiOiIweDAiKStuLnRvU3RyaW5nKDE2KTtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PUwocixlKTtyZXR1cm4gdT09PW4/YihlKzEsdSk6eChlLHQpfSl9LGJ1ZmZlcjpmdW5jdGlvbihuKXtyZXR1cm4gaCgiYnVmZmVyIixuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIEJ1ZmZlci5mcm9tKG4pfSl9LGVuY29kZWRTdHJpbmc6ZnVuY3Rpb24obix0KXtyZXR1cm4gaCgic3RyaW5nIix0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudG9TdHJpbmcobil9KX0sdWludEJFOmQsdWludDhCRTpkKDEpLHVpbnQxNkJFOmQoMiksdWludDMyQkU6ZCg0KSx1aW50TEU6dix1aW50OExFOnYoMSksdWludDE2TEU6digyKSx1aW50MzJMRTp2KDQpLGludEJFOmcsaW50OEJFOmcoMSksaW50MTZCRTpnKDIpLGludDMyQkU6Zyg0KSxpbnRMRTptLGludDhMRTptKDEpLGludDE2TEU6bSgyKSxpbnQzMkxFOm0oNCksZmxvYXRCRTpoKCJmbG9hdEJFIiw0KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZEZsb2F0QkUoMCl9KSxmbG9hdExFOmgoImZsb2F0TEUiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRMRSgwKX0pLGRvdWJsZUJFOmgoImRvdWJsZUJFIiw4KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZERvdWJsZUJFKDApfSksZG91YmxlTEU6aCgiZG91YmxlTEUiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlTEUoMCl9KX0sbi5leHBvcnRzPWU7fV0pfSk7CiAgfShwYXJzaW1tb25fdW1kX21pbikpOwoKICB2YXIgZW1vamlSZWdleCA9ICgpID0+IHsKICAJLy8gaHR0cHM6Ly9tdGhzLmJlL2Vtb2ppCiAgCXJldHVybiAvKD86WyMqMC05XVx1RkUwRj9cdTIwRTN8W1x4QTlceEFFXHUyMDNDXHUyMDQ5XHUyMTIyXHUyMTM5XHUyMTk0LVx1MjE5OVx1MjFBOVx1MjFBQVx1MjMxQVx1MjMxQlx1MjMyOFx1MjNDRlx1MjNFRC1cdTIzRUZcdTIzRjFcdTIzRjJcdTIzRjgtXHUyM0ZBXHUyNEMyXHUyNUFBXHUyNUFCXHUyNUI2XHUyNUMwXHUyNUZCXHUyNUZDXHUyNUZFXHUyNjAwLVx1MjYwNFx1MjYwRVx1MjYxMVx1MjYxNFx1MjYxNVx1MjYxOFx1MjYyMFx1MjYyMlx1MjYyM1x1MjYyNlx1MjYyQVx1MjYyRVx1MjYyRlx1MjYzOC1cdTI2M0FcdTI2NDBcdTI2NDJcdTI2NDgtXHUyNjUzXHUyNjVGXHUyNjYwXHUyNjYzXHUyNjY1XHUyNjY2XHUyNjY4XHUyNjdCXHUyNjdFXHUyNjdGXHUyNjkyXHUyNjk0LVx1MjY5N1x1MjY5OVx1MjY5Qlx1MjY5Q1x1MjZBMFx1MjZBN1x1MjZBQVx1MjZCMFx1MjZCMVx1MjZCRFx1MjZCRVx1MjZDNFx1MjZDOFx1MjZDRlx1MjZEMVx1MjZEM1x1MjZFOVx1MjZGMC1cdTI2RjVcdTI2RjdcdTI2RjhcdTI2RkFcdTI3MDJcdTI3MDhcdTI3MDlcdTI3MEZcdTI3MTJcdTI3MTRcdTI3MTZcdTI3MURcdTI3MjFcdTI3MzNcdTI3MzRcdTI3NDRcdTI3NDdcdTI3NTdcdTI3NjNcdTI3QTFcdTI5MzRcdTI5MzVcdTJCMDUtXHUyQjA3XHUyQjFCXHUyQjFDXHUyQjU1XHUzMDMwXHUzMDNEXHUzMjk3XHUzMjk5XVx1RkUwRj98W1x1MjYxRFx1MjcwQ1x1MjcwRF0oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1MjcwQVx1MjcwQl0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHUyM0U5LVx1MjNFQ1x1MjNGMFx1MjNGM1x1MjVGRFx1MjY5M1x1MjZBMVx1MjZBQlx1MjZDNVx1MjZDRVx1MjZENFx1MjZFQVx1MjZGRFx1MjcwNVx1MjcyOFx1Mjc0Q1x1Mjc0RVx1Mjc1My1cdTI3NTVcdTI3OTUtXHUyNzk3XHUyN0IwXHUyN0JGXHUyQjUwXXxcdTI2RjkoPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xcdTI3NjRcdUZFMEY/KD86XHUyMDBEKD86XHVEODNEXHVERDI1fFx1RDgzRVx1REU3OSkpP3xcdUQ4M0MoPzpbXHVEQzA0XHVERDcwXHVERDcxXHVERDdFXHVERDdGXHVERTAyXHVERTM3XHVERjIxXHVERjI0LVx1REYyQ1x1REYzNlx1REY3RFx1REY5Nlx1REY5N1x1REY5OS1cdURGOUJcdURGOUVcdURGOUZcdURGQ0RcdURGQ0VcdURGRDQtXHVERkRGXHVERkY1XHVERkY3XVx1RkUwRj98W1x1REY4NVx1REZDMlx1REZDN10oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVERkMzXHVERkM0XHVERkNBXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REZDQlx1REZDQ10oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVEQ0NGXHVERDhFXHVERDkxLVx1REQ5QVx1REUwMVx1REUxQVx1REUyRlx1REUzMi1cdURFMzZcdURFMzgtXHVERTNBXHVERTUwXHVERTUxXHVERjAwLVx1REYyMFx1REYyRC1cdURGMzVcdURGMzctXHVERjdDXHVERjdFLVx1REY4NFx1REY4Ni1cdURGOTNcdURGQTAtXHVERkMxXHVERkM1XHVERkM2XHVERkM4XHVERkM5XHVERkNGLVx1REZEM1x1REZFMC1cdURGRjBcdURGRjgtXHVERkZGXXxcdURERTZcdUQ4M0NbXHVEREU4LVx1RERFQ1x1RERFRVx1RERGMVx1RERGMlx1RERGNFx1RERGNi1cdURERkFcdURERkNcdURERkRcdURERkZdfFx1RERFN1x1RDgzQ1tcdURERTZcdURERTdcdURERTktXHVEREVGXHVEREYxLVx1RERGNFx1RERGNi1cdURERjlcdURERkJcdURERkNcdURERkVcdURERkZdfFx1RERFOFx1RDgzQ1tcdURERTZcdURERThcdURERTlcdURERUItXHVEREVFXHVEREYwLVx1RERGNVx1RERGN1x1RERGQS1cdURERkZdfFx1RERFOVx1RDgzQ1tcdURERUFcdURERUNcdURERUZcdURERjBcdURERjJcdURERjRcdURERkZdfFx1RERFQVx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERURcdURERjctXHVEREZBXXxcdURERUJcdUQ4M0NbXHVEREVFLVx1RERGMFx1RERGMlx1RERGNFx1RERGN118XHVEREVDXHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUVcdURERjEtXHVEREYzXHVEREY1LVx1RERGQVx1RERGQ1x1RERGRV18XHVEREVEXHVEODNDW1x1RERGMFx1RERGMlx1RERGM1x1RERGN1x1RERGOVx1RERGQV18XHVEREVFXHVEODNDW1x1RERFOC1cdURERUFcdURERjEtXHVEREY0XHVEREY2LVx1RERGOV18XHVEREVGXHVEODNDW1x1RERFQVx1RERGMlx1RERGNFx1RERGNV18XHVEREYwXHVEODNDW1x1RERFQVx1RERFQy1cdURERUVcdURERjJcdURERjNcdURERjVcdURERjdcdURERkNcdURERkVcdURERkZdfFx1RERGMVx1RDgzQ1tcdURERTYtXHVEREU4XHVEREVFXHVEREYwXHVEREY3LVx1RERGQlx1RERGRV18XHVEREYyXHVEODNDW1x1RERFNlx1RERFOC1cdURERURcdURERjAtXHVEREZGXXxcdURERjNcdUQ4M0NbXHVEREU2XHVEREU4XHVEREVBLVx1RERFQ1x1RERFRVx1RERGMVx1RERGNFx1RERGNVx1RERGN1x1RERGQVx1RERGRl18XHVEREY0XHVEODNDXHVEREYyfFx1RERGNVx1RDgzQ1tcdURERTZcdURERUEtXHVEREVEXHVEREYwLVx1RERGM1x1RERGNy1cdURERjlcdURERkNcdURERkVdfFx1RERGNlx1RDgzQ1x1RERFNnxcdURERjdcdUQ4M0NbXHVEREVBXHVEREY0XHVEREY4XHVEREZBXHVEREZDXXxcdURERjhcdUQ4M0NbXHVEREU2LVx1RERFQVx1RERFQy1cdURERjRcdURERjctXHVEREY5XHVEREZCXHVEREZELVx1RERGRl18XHVEREY5XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERURcdURERUYtXHVEREY0XHVEREY3XHVEREY5XHVEREZCXHVEREZDXHVEREZGXXxcdURERkFcdUQ4M0NbXHVEREU2XHVEREVDXHVEREYyXHVEREYzXHVEREY4XHVEREZFXHVEREZGXXxcdURERkJcdUQ4M0NbXHVEREU2XHVEREU4XHVEREVBXHVEREVDXHVEREVFXHVEREYzXHVEREZBXXxcdURERkNcdUQ4M0NbXHVEREVCXHVEREY4XXxcdURERkRcdUQ4M0NcdURERjB8XHVEREZFXHVEODNDW1x1RERFQVx1RERGOV18XHVEREZGXHVEODNDW1x1RERFNlx1RERGMlx1RERGQ118XHVERkYzXHVGRTBGPyg/Olx1MjAwRCg/Olx1MjZBN1x1RkUwRj98XHVEODNDXHVERjA4KSk/fFx1REZGNCg/Olx1MjAwRFx1MjYyMFx1RkUwRj98XHVEQjQwXHVEQzY3XHVEQjQwXHVEQzYyXHVEQjQwKD86XHVEQzY1XHVEQjQwXHVEQzZFXHVEQjQwXHVEQzY3fFx1REM3M1x1REI0MFx1REM2M1x1REI0MFx1REM3NHxcdURDNzdcdURCNDBcdURDNkNcdURCNDBcdURDNzMpXHVEQjQwXHVEQzdGKT8pfFx1RDgzRCg/OltcdURDM0ZcdURDRkRcdURENDlcdURENEFcdURENkZcdURENzBcdURENzNcdURENzYtXHVERDc5XHVERDg3XHVERDhBLVx1REQ4RFx1RERBNVx1RERBOFx1RERCMVx1RERCMlx1RERCQ1x1RERDMi1cdUREQzRcdURERDEtXHVEREQzXHVERERDLVx1RERERVx1RERFMVx1RERFM1x1RERFOFx1RERFRlx1RERGM1x1RERGQVx1REVDQlx1REVDRC1cdURFQ0ZcdURFRTAtXHVERUU1XHVERUU5XHVERUYwXHVERUYzXVx1RkUwRj98W1x1REM0Mlx1REM0M1x1REM0Ni1cdURDNTBcdURDNjZcdURDNjdcdURDNkItXHVEQzZEXHVEQzcyXHVEQzc0LVx1REM3Nlx1REM3OFx1REM3Q1x1REM4M1x1REM4NVx1REM4Rlx1REM5MVx1RENBQVx1REQ3QVx1REQ5NVx1REQ5Nlx1REU0Q1x1REU0Rlx1REVDMFx1REVDQ10oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVEQzZFXHVEQzcwXHVEQzcxXHVEQzczXHVEQzc3XHVEQzgxXHVEQzgyXHVEQzg2XHVEQzg3XHVERTQ1LVx1REU0N1x1REU0Qlx1REU0RFx1REU0RVx1REVBM1x1REVCNC1cdURFQjZdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERDc0XHVERDkwXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVEQzAwLVx1REMwN1x1REMwOS1cdURDMTRcdURDMTYtXHVEQzNBXHVEQzNDLVx1REMzRVx1REM0MFx1REM0NFx1REM0NVx1REM1MS1cdURDNjVcdURDNkFcdURDNzktXHVEQzdCXHVEQzdELVx1REM4MFx1REM4NFx1REM4OC1cdURDOEVcdURDOTBcdURDOTItXHVEQ0E5XHVEQ0FCLVx1RENGQ1x1RENGRi1cdUREM0RcdURENEItXHVERDRFXHVERDUwLVx1REQ2N1x1RERBNFx1RERGQi1cdURFMkRcdURFMkYtXHVERTM0XHVERTM3LVx1REU0NFx1REU0OC1cdURFNEFcdURFODAtXHVERUEyXHVERUE0LVx1REVCM1x1REVCNy1cdURFQkZcdURFQzEtXHVERUM1XHVERUQwLVx1REVEMlx1REVENS1cdURFRDdcdURFREQtXHVERURGXHVERUVCXHVERUVDXHVERUY0LVx1REVGQ1x1REZFMC1cdURGRUJcdURGRjBdfFx1REMwOCg/Olx1MjAwRFx1MkIxQik/fFx1REMxNSg/Olx1MjAwRFx1RDgzRVx1RERCQSk/fFx1REMzQig/Olx1MjAwRFx1Mjc0NFx1RkUwRj8pP3xcdURDNDFcdUZFMEY/KD86XHUyMDBEXHVEODNEXHVEREU4XHVGRTBGPyk/fFx1REM2OCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjh8XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEKD86W1x1REM2OFx1REM2OV1cdTIwMERcdUQ4M0QoPzpcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/KXxbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/KXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkMtXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQlx1REZGRC1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCXHVERkZDXHVERkZFXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRV0pKSk/KSk/fFx1REM2OSg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9bXHVEQzY4XHVEQzY5XXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0QoPzpbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/fFx1REM2OVx1MjAwRFx1RDgzRCg/Olx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pKXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkMtXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQlx1REZGRC1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCXHVERkZDXHVERkZFXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCLVx1REZGRV0pKSk/KSk/fFx1REM2Rig/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1REQ3NSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1REUyRSg/Olx1MjAwRFx1RDgzRFx1RENBOCk/fFx1REUzNSg/Olx1MjAwRFx1RDgzRFx1RENBQik/fFx1REUzNig/Olx1MjAwRFx1RDgzQ1x1REYyQlx1RkUwRj8pPyl8XHVEODNFKD86W1x1REQwQ1x1REQwRlx1REQxOC1cdUREMUZcdUREMzAtXHVERDM0XHVERDM2XHVERDc3XHVEREI1XHVEREI2XHVEREJCXHVEREQyXHVEREQzXHVEREQ1XHVERUMzLVx1REVDNVx1REVGMFx1REVGMi1cdURFRjZdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REQyNlx1REQzNVx1REQzNy1cdUREMzlcdUREM0RcdUREM0VcdUREQjhcdUREQjlcdUREQ0QtXHVERENGXHVEREQ0XHVEREQ2LVx1RERERF0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFtcdUREREVcdUREREZdKD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REQwRFx1REQwRVx1REQxMC1cdUREMTdcdUREMjAtXHVERDI1XHVERDI3LVx1REQyRlx1REQzQVx1REQzRi1cdURENDVcdURENDctXHVERDc2XHVERDc4LVx1RERCNFx1RERCN1x1RERCQVx1RERCQy1cdUREQ0NcdURERDBcdURERTAtXHVEREZGXHVERTcwLVx1REU3NFx1REU3OC1cdURFN0NcdURFODAtXHVERTg2XHVERTkwLVx1REVBQ1x1REVCMC1cdURFQkFcdURFQzAtXHVERUMyXHVERUQwLVx1REVEOVx1REVFMC1cdURFRTddfFx1REQzQyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGP3xcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xcdURERDEoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMSkpfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT9cdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZDLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQlx1REZGQ1x1REZGRVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkVdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSk/KSk/fFx1REVGMSg/Olx1RDgzQyg/Olx1REZGQig/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkMtXHVERkZGXSk/fFx1REZGQyg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXSk/fFx1REZGRCg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKT98XHVERkZFKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKT98XHVERkZGKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkVdKT8pKT8pKS9nOwogIH07CgogIC8qKiBOb3JtYWxpemUgYSBkdXJhdGlvbiB0byBhbGwgb2YgdGhlIHByb3BlciB1bml0cy4gKi8NCiAgZnVuY3Rpb24gbm9ybWFsaXplRHVyYXRpb24oZHVyKSB7DQogICAgICBpZiAoZHVyID09PSB1bmRlZmluZWQgfHwgZHVyID09PSBudWxsKQ0KICAgICAgICAgIHJldHVybiBkdXI7DQogICAgICByZXR1cm4gZHVyLnNoaWZ0VG9BbGwoKS5ub3JtYWxpemUoKTsNCiAgfQ0KICAvKiogU3RyaXAgdGhlIHRpbWUgY29tcG9uZW50cyBvZiBhIGRhdGUgdGltZSBvYmplY3QuICovDQogIGZ1bmN0aW9uIHN0cmlwVGltZShkdCkgew0KICAgICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpDQogICAgICAgICAgcmV0dXJuIGR0Ow0KICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3Qoew0KICAgICAgICAgIHllYXI6IGR0LnllYXIsDQogICAgICAgICAgbW9udGg6IGR0Lm1vbnRoLA0KICAgICAgICAgIGRheTogZHQuZGF5LA0KICAgICAgfSk7DQogIH0NCiAgLyoqIFRyeSB0byBleHRyYWN0IGEgWVlZWU1NREQgZGF0ZSBmcm9tIGEgc3RyaW5nLiAqLw0KICBmdW5jdGlvbiBleHRyYWN0RGF0ZShzdHIpIHsNCiAgICAgIGxldCBkYXRlTWF0Y2ggPSAvKFxkezR9KS0oXGR7Mn0pLShcZHsyfSkvLmV4ZWMoc3RyKTsNCiAgICAgIGlmICghZGF0ZU1hdGNoKQ0KICAgICAgICAgIGRhdGVNYXRjaCA9IC8oXGR7NH0pKFxkezJ9KShcZHsyfSkvLmV4ZWMoc3RyKTsNCiAgICAgIGlmIChkYXRlTWF0Y2gpIHsNCiAgICAgICAgICBsZXQgeWVhciA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMV0pOw0KICAgICAgICAgIGxldCBtb250aCA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMl0pOw0KICAgICAgICAgIGxldCBkYXkgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzNdKTsNCiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXIsIG1vbnRoLCBkYXkgfSk7DQogICAgICB9DQogICAgICByZXR1cm4gdW5kZWZpbmVkOw0KICB9DQogIC8qKiBHZXQgdGhlIGZvbGRlciBjb250YWluaW5nIHRoZSBnaXZlbiBwYXRoIChpLmUuLCBsaWtlIGNvbXB1dGluZyAncGF0aC8uLicpLiAqLw0KICBmdW5jdGlvbiBnZXRQYXJlbnRGb2xkZXIocGF0aCkgew0KICAgICAgcmV0dXJuIHBhdGguc3BsaXQoIi8iKS5zbGljZSgwLCAtMSkuam9pbigiLyIpOw0KICB9DQogIC8qKiBHZXQgdGhlICJ0aXRsZSIgZm9yIGEgZmlsZSwgYnkgc3RyaXBwaW5nIG90aGVyIHBhcnRzIG9mIHRoZSBwYXRoIGFzIHdlbGwgYXMgdGhlIGV4dGVuc2lvbi4gKi8NCiAgZnVuY3Rpb24gZ2V0RmlsZVRpdGxlKHBhdGgpIHsNCiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCIvIikpDQogICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoIi8iKSArIDEpOw0KICAgICAgaWYgKHBhdGguZW5kc1dpdGgoIi5tZCIpKQ0KICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpOw0KICAgICAgcmV0dXJuIHBhdGg7DQogIH0NCiAgLyoqIEdldCB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIHRoZSBmaWxlIHBhdGguICovDQogIGZ1bmN0aW9uIGdldEV4dGVuc2lvbihwYXRoKSB7DQogICAgICBpZiAoIXBhdGguaW5jbHVkZXMoIi4iKSkNCiAgICAgICAgICByZXR1cm4gIiI7DQogICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZigiLiIpICsgMSk7DQogIH0NCiAgLyoqIFBhcnNlIGFsbCBzdWJ0YWdzIG91dCBvZiB0aGUgZ2l2ZW4gdGFnLiBJLmUuLCAjaGVsbG8vaS9hbSB3b3VsZCB5aWVsZCBbI2hlbGxvL2kvYW0sICNoZWxsby9pLCAjaGVsbG9dLiAqLw0KICBmdW5jdGlvbiBleHRyYWN0U3VidGFncyh0YWcpIHsNCiAgICAgIGxldCByZXN1bHQgPSBbdGFnXTsNCiAgICAgIHdoaWxlICh0YWcuaW5jbHVkZXMoIi8iKSkgew0KICAgICAgICAgIHRhZyA9IHRhZy5zdWJzdHJpbmcoMCwgdGFnLmxhc3RJbmRleE9mKCIvIikpOw0KICAgICAgICAgIHJlc3VsdC5wdXNoKHRhZyk7DQogICAgICB9DQogICAgICByZXR1cm4gcmVzdWx0Ow0KICB9DQogIC8qKiBBIHBhcnNpbW1vbiBwYXJzZXIgd2hpY2ggY2Fub25pY2FsaXplcyB2YXJpYWJsZSBuYW1lcyB3aGlsZSBwcm9wZXJseSByZXNwZWN0aW5nIGVtb2ppLiAqLw0KICBjb25zdCBWQVJfTkFNRV9DQU5PTklDQUxJWkVSID0gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleCgvWzAtOVxwe0xldHRlcn1fLV0rL3UpLm1hcChzdHIgPT4gc3RyLnRvTG9jYWxlTG93ZXJDYXNlKCkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLndoaXRlc3BhY2UubWFwKF8gPT4gIi0iKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbnkubWFwKF8gPT4gIiIpKQ0KICAgICAgLm1hbnkoKQ0KICAgICAgLm1hcChyZXN1bHQgPT4gcmVzdWx0LmpvaW4oIiIpKTsNCiAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhcmlhYmxlIG5hbWUgaW50byBzb21ldGhpbmcgSlMvcXVlcnkgZnJpZW5kbHkuICovDQogIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZVZhck5hbWUobmFtZSkgew0KICAgICAgcmV0dXJuIFZBUl9OQU1FX0NBTk9OSUNBTElaRVIudHJ5UGFyc2UobmFtZSk7DQogIH0NCiAgY29uc3QgSEVBREVSX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIikpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMud2hpdGVzcGFjZS5tYXAoXyA9PiAiICIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFueS5tYXAoXyA9PiAiICIpKQ0KICAgICAgLm1hbnkoKQ0KICAgICAgLm1hcChyZXN1bHQgPT4gew0KICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCIiKS5zcGxpdCgvXHMrLykuam9pbigiICIpLnRyaW0oKTsNCiAgfSk7DQogIC8qKg0KICAgKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljcw0KICAgKiBob3cgT2JzaWRpYW4gZG9lcyBpdCdzIG5vcm1hbGl6YXRpb24sIGNvbGxhcHNpbmcgcmVwZWF0ZWQgc3BhY2VzIGFuZCBzdHJpcHBpbmcgb3V0IGNvbnRyb2wgY2hhcmFjdGVycy4NCiAgICovDQogIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyKSB7DQogICAgICByZXR1cm4gSEVBREVSX0NBTk9OSUNBTElaRVIudHJ5UGFyc2UoaGVhZGVyKTsNCiAgfQ0KICAvKiogUmVuZGVyIGEgZHVyYXRpb24gaW4gYSBtaW5pbWFsIGZvcm1hdCB0byBzYXZlIHNwYWNlLiAqLw0KICBmdW5jdGlvbiByZW5kZXJNaW5pbWFsRHVyYXRpb24oZHVyKSB7DQogICAgICBkdXIgPSBub3JtYWxpemVEdXJhdGlvbihkdXIpOw0KICAgICAgLy8gdG9IdW1hbiBvdXRwdXRzIHplcm8gcXVhbnRpdGllcyBlLmcuICIwIHNlY29uZHMiDQogICAgICBkdXIgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhkdXIudG9PYmplY3QoKSkuZmlsdGVyKChbLCBxdWFudGl0eV0pID0+IHF1YW50aXR5ID4gMCkpKTsNCiAgICAgIHJldHVybiBkdXIudG9IdW1hbigpOw0KICB9CgogIHZhciBWYWx1ZXM7DQogIChmdW5jdGlvbiAoVmFsdWVzKSB7DQogICAgICAvKiogQ29udmVydCBhbiBhcmJpdHJhcnkgdmFsdWUgaW50byBhIHJlYXNvbmFibGUsIE1hcmtkb3duLWZyaWVuZGx5IHN0cmluZyBpZiBwb3NzaWJsZS4gKi8NCiAgICAgIGZ1bmN0aW9uIHRvU3RyaW5nKGZpZWxkLCBzZXR0aW5nID0gREVGQVVMVF9RVUVSWV9TRVRUSU5HUywgcmVjdXJzaXZlID0gZmFsc2UpIHsNCiAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7DQogICAgICAgICAgaWYgKCF3cmFwcGVkKQ0KICAgICAgICAgICAgICByZXR1cm4gc2V0dGluZy5yZW5kZXJOdWxsQXM7DQogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsNCiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gc2V0dGluZy5yZW5kZXJOdWxsQXM7DQogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsNCiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoNCiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gIiIgKyB3cmFwcGVkLnZhbHVlOw0KICAgICAgICAgICAgICBjYXNlICJodG1sIjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm91dGVySFRNTDsNCiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm1hcmtkb3duKCk7DQogICAgICAgICAgICAgIGNhc2UgImxpbmsiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFya2Rvd24oKTsNCiAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuICI8ZnVuY3Rpb24+IjsNCiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOg0KICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICIiOw0KICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkNCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIlsiOw0KICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdyYXBwZWQudmFsdWUubWFwKGYgPT4gdG9TdHJpbmcoZiwgc2V0dGluZywgdHJ1ZSkpLmpvaW4oIiwgIik7DQogICAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiXSI7DQogICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuICgieyAiICsNCiAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyh3cmFwcGVkLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZVswXSArICI6ICIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oIiwgIikgKw0KICAgICAgICAgICAgICAgICAgICAgICIgfSIpOw0KICAgICAgICAgICAgICBjYXNlICJkYXRlIjoNCiAgICAgICAgICAgICAgICAgIGlmICh3cmFwcGVkLnZhbHVlLnNlY29uZCA9PSAwICYmIHdyYXBwZWQudmFsdWUuaG91ciA9PSAwICYmIHdyYXBwZWQudmFsdWUubWludXRlID09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b0Zvcm1hdChzZXR0aW5nLmRlZmF1bHREYXRlRm9ybWF0KTsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLnRvRm9ybWF0KHNldHRpbmcuZGVmYXVsdERhdGVUaW1lRm9ybWF0KTsNCiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1pbmltYWxEdXJhdGlvbih3cmFwcGVkLnZhbHVlKTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBWYWx1ZXMudG9TdHJpbmcgPSB0b1N0cmluZzsNCiAgICAgIC8qKiBXcmFwIGEgbGl0ZXJhbCB2YWx1ZSBzbyB5b3UgY2FuIHN3aXRjaCBvbiBpdCBlYXNpbHkuICovDQogICAgICBmdW5jdGlvbiB3cmFwVmFsdWUodmFsKSB7DQogICAgICAgICAgaWYgKGlzTnVsbCh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVsbCIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc051bWJlcih2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKHZhbCkpDQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJzdHJpbmciLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuKHZhbCkpDQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJib29sZWFuIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzRHVyYXRpb24odmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImR1cmF0aW9uIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzRGF0ZSh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZGF0ZSIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc1dpZGdldCh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAid2lkZ2V0IiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImFycmF5IiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzTGluayh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGluayIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbCkpDQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmdW5jdGlvbiIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc0h0bWwodmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImh0bWwiLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QodmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICB9DQogICAgICBWYWx1ZXMud3JhcFZhbHVlID0gd3JhcFZhbHVlOw0KICAgICAgLyoqIFJlY3Vyc2l2ZWx5IG1hcCBjb21wbGV4IG9iamVjdHMgYXQgdGhlIGxlYXZlcy4gKi8NCiAgICAgIGZ1bmN0aW9uIG1hcExlYXZlcyh2YWwsIGZ1bmMpIHsNCiAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkgew0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWwpKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYXBMZWF2ZXModmFsdWUsIGZ1bmMpOw0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdOw0KICAgICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWwpDQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtYXBMZWF2ZXModmFsdWUsIGZ1bmMpKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJldHVybiBmdW5jKHZhbCk7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgVmFsdWVzLm1hcExlYXZlcyA9IG1hcExlYXZlczsNCiAgICAgIC8qKiBDb21wYXJlIHR3byBhcmJpdHJhcnkgSmF2YVNjcmlwdCB2YWx1ZXMuIFByb2R1Y2VzIGEgdG90YWwgb3JkZXJpbmcgb3ZlciBBTlkgcG9zc2libGUgZGF0YXZpZXcgdmFsdWUuICovDQogICAgICBmdW5jdGlvbiBjb21wYXJlVmFsdWUodmFsMSwgdmFsMiwgbGlua05vcm1hbGl6ZXIpIHsNCiAgICAgICAgICB2YXIgX2EsIF9iOw0KICAgICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQvbnVsbHMgZmlyc3QuDQogICAgICAgICAgaWYgKHZhbDEgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgdmFsMSA9IG51bGw7DQogICAgICAgICAgaWYgKHZhbDIgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgdmFsMiA9IG51bGw7DQogICAgICAgICAgaWYgKHZhbDEgPT09IG51bGwgJiYgdmFsMiA9PT0gbnVsbCkNCiAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgZWxzZSBpZiAodmFsMSA9PT0gbnVsbCkNCiAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAgICAgIGVsc2UgaWYgKHZhbDIgPT09IG51bGwpDQogICAgICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgIC8vIEEgbm9uLW51bGwgdmFsdWUgbm93IHdoaWNoIHdlIGNhbiB3cmFwICYgY29tcGFyZSBvbi4NCiAgICAgICAgICBsZXQgd3JhcDEgPSB3cmFwVmFsdWUodmFsMSk7DQogICAgICAgICAgbGV0IHdyYXAyID0gd3JhcFZhbHVlKHZhbDIpOw0KICAgICAgICAgIGlmICh3cmFwMSA9PT0gdW5kZWZpbmVkICYmIHdyYXAyID09PSB1bmRlZmluZWQpDQogICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgIGVsc2UgaWYgKHdyYXAxID09PSB1bmRlZmluZWQpDQogICAgICAgICAgICAgIHJldHVybiAtMTsNCiAgICAgICAgICBlbHNlIGlmICh3cmFwMiA9PT0gdW5kZWZpbmVkKQ0KICAgICAgICAgICAgICByZXR1cm4gMTsNCiAgICAgICAgICAvLyBTaG9ydC1jaXJjdWl0IG9uIGRpZmZlcmVudCB0eXBlcyBvciBvbiByZWZlcmVuY2UgZXF1YWxpdHkuDQogICAgICAgICAgaWYgKHdyYXAxLnR5cGUgIT0gd3JhcDIudHlwZSkNCiAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnR5cGUubG9jYWxlQ29tcGFyZSh3cmFwMi50eXBlKTsNCiAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPT09IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICBzd2l0Y2ggKHdyYXAxLnR5cGUpIHsNCiAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZS5sb2NhbGVDb21wYXJlKHdyYXAyLnZhbHVlKTsNCiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoNCiAgICAgICAgICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQogICAgICAgICAgICAgIGNhc2UgIm51bGwiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOg0KICAgICAgICAgICAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA/IDEgOiAtMTsNCiAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICBsZXQgbGluazEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgIGxldCBsaW5rMiA9IHdyYXAyLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZSA9IGxpbmtOb3JtYWxpemVyICE9PSBudWxsICYmIGxpbmtOb3JtYWxpemVyICE9PSB2b2lkIDAgPyBsaW5rTm9ybWFsaXplciA6ICgoeCkgPT4geCk7DQogICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBjb21wYXJlIGJ5IGZpbGUgbmFtZSBvciBkaXNwbGF5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmsgZXF1YWxpdHkuIENvbXBhcmUgYnkgcGF0aC4NCiAgICAgICAgICAgICAgICAgIGxldCBwYXRoQ29tcGFyZSA9IG5vcm1hbGl6ZShsaW5rMS5wYXRoKS5sb2NhbGVDb21wYXJlKG5vcm1hbGl6ZShsaW5rMi5wYXRoKSk7DQogICAgICAgICAgICAgICAgICBpZiAocGF0aENvbXBhcmUgIT0gMCkNCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aENvbXBhcmU7DQogICAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgdHlwZS4NCiAgICAgICAgICAgICAgICAgIGxldCB0eXBlQ29tcGFyZSA9IGxpbmsxLnR5cGUubG9jYWxlQ29tcGFyZShsaW5rMi50eXBlKTsNCiAgICAgICAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZSAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlQ29tcGFyZTsNCiAgICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSBzdWJwYXRoIGV4aXN0ZW5jZS4NCiAgICAgICAgICAgICAgICAgIGlmIChsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmIGxpbmsyLnN1YnBhdGgpDQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgLy8gU2luY2UgYm90aCBoYXZlIGEgc3VicGF0aCwgY29tcGFyZSBieSBzdWJwYXRoLg0KICAgICAgICAgICAgICAgICAgcmV0dXJuICgoX2EgPSBsaW5rMS5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAiIikubG9jYWxlQ29tcGFyZSgoX2IgPSBsaW5rMi5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAiIik7DQogICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlIDwgd3JhcDIudmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICA/IC0xDQogICAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgID8gMA0KICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7DQogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlDQogICAgICAgICAgICAgICAgICAgICAgPyAtMQ0KICAgICAgICAgICAgICAgICAgICAgIDogd3JhcDEudmFsdWUuZXF1YWxzKHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICA/IDANCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOw0KICAgICAgICAgICAgICBjYXNlICJhcnJheSI6DQogICAgICAgICAgICAgICAgICBsZXQgZjEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgIGxldCBmMiA9IHdyYXAyLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IE1hdGgubWluKGYxLmxlbmd0aCwgZjIubGVuZ3RoKTsgaW5kZXgrKykgew0KICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wID0gY29tcGFyZVZhbHVlKGYxW2luZGV4XSwgZjJbaW5kZXhdKTsNCiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcDsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIHJldHVybiBmMS5sZW5ndGggLSBmMi5sZW5ndGg7DQogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICBsZXQgbzEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgbGV0IGsxID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMSkpOw0KICAgICAgICAgICAgICAgICAgbGV0IGsyID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMikpOw0KICAgICAgICAgICAgICAgICAgazEuc29ydCgpOw0KICAgICAgICAgICAgICAgICAgazIuc29ydCgpOw0KICAgICAgICAgICAgICAgICAgbGV0IGtleUNvbXBhcmUgPSBjb21wYXJlVmFsdWUoazEsIGsyKTsNCiAgICAgICAgICAgICAgICAgIGlmIChrZXlDb21wYXJlICE9IDApDQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUNvbXBhcmU7DQogICAgICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgb2YgazEpIHsNCiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShvMVtrZXldLCBvMltrZXldKTsNCiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcDsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOg0KICAgICAgICAgICAgICBjYXNlICJodG1sIjoNCiAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgVmFsdWVzLmNvbXBhcmVWYWx1ZSA9IGNvbXBhcmVWYWx1ZTsNCiAgICAgIC8qKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIERhdGF2ZWl3IHR5cGUgZm9yIGFuIGFyYml0cmFyeSB2YWx1ZS4gKi8NCiAgICAgIGZ1bmN0aW9uIHR5cGVPZih2YWwpIHsNCiAgICAgICAgICB2YXIgX2E7DQogICAgICAgICAgcmV0dXJuIChfYSA9IHdyYXBWYWx1ZSh2YWwpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHlwZTsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy50eXBlT2YgPSB0eXBlT2Y7DQogICAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyAidHJ1dGh5IiAoaS5lLiwgaXMgbm9uLW51bGwgYW5kIGhhcyBkYXRhIGluIGl0KS4gKi8NCiAgICAgIGZ1bmN0aW9uIGlzVHJ1dGh5KGZpZWxkKSB7DQogICAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwVmFsdWUoZmllbGQpOw0KICAgICAgICAgIGlmICghd3JhcHBlZCkNCiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7DQogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZSAhPSAwOw0KICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsNCiAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gISF3cmFwcGVkLnZhbHVlLnBhdGg7DQogICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9NaWxsaXMoKSAhPSAwOw0KICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5hcygic2Vjb25kcyIpICE9IDA7DQogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMod3JhcHBlZC52YWx1ZSkubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgIGNhc2UgImh0bWwiOg0KICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOg0KICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBWYWx1ZXMuaXNUcnV0aHkgPSBpc1RydXRoeTsNCiAgICAgIC8qKiBEZWVwIGNvcHkgYSBmaWVsZC4gKi8NCiAgICAgIGZ1bmN0aW9uIGRlZXBDb3B5KGZpZWxkKSB7DQogICAgICAgICAgaWYgKGZpZWxkID09PSBudWxsIHx8IGZpZWxkID09PSB1bmRlZmluZWQpDQogICAgICAgICAgICAgIHJldHVybiBmaWVsZDsNCiAgICAgICAgICBpZiAoVmFsdWVzLmlzQXJyYXkoZmllbGQpKSB7DQogICAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoZmllbGQubWFwKHYgPT4gZGVlcENvcHkodikpKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzT2JqZWN0KGZpZWxkKSkgew0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmaWVsZCkpDQogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGRlZXBDb3B5KHZhbHVlKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJldHVybiBmaWVsZDsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBWYWx1ZXMuZGVlcENvcHkgPSBkZWVwQ29weTsNCiAgICAgIGZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkgew0KICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJzdHJpbmciOw0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzU3RyaW5nID0gaXNTdHJpbmc7DQogICAgICBmdW5jdGlvbiBpc051bWJlcih2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAibnVtYmVyIjsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc051bWJlciA9IGlzTnVtYmVyOw0KICAgICAgZnVuY3Rpb24gaXNEYXRlKHZhbCkgew0KICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEYXRlVGltZTsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0RhdGUgPSBpc0RhdGU7DQogICAgICBmdW5jdGlvbiBpc0R1cmF0aW9uKHZhbCkgew0KICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEdXJhdGlvbjsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0R1cmF0aW9uID0gaXNEdXJhdGlvbjsNCiAgICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkOw0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzTnVsbCA9IGlzTnVsbDsNCiAgICAgIGZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7DQogICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKTsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0FycmF5ID0gaXNBcnJheTsNCiAgICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gImJvb2xlYW4iOw0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjsNCiAgICAgIGZ1bmN0aW9uIGlzTGluayh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgTGluazsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0xpbmsgPSBpc0xpbms7DQogICAgICBmdW5jdGlvbiBpc1dpZGdldCh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgV2lkZ2V0Ow0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzV2lkZ2V0ID0gaXNXaWRnZXQ7DQogICAgICBmdW5jdGlvbiBpc0h0bWwodmFsKSB7DQogICAgICAgICAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCAhPT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50Ow0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0h0bWwgPSBpc0h0bWw7DQogICAgICAvKiogQ2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBvYmplY3QgKGFuZCBub3QgYW55IG90aGVyIGRhdGF2aWV3LXJlY29nbml6ZWQgb2JqZWN0LWxpa2UgdHlwZSkuICovDQogICAgICBmdW5jdGlvbiBpc09iamVjdCh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gKHR5cGVvZiB2YWwgPT0gIm9iamVjdCIgJiYNCiAgICAgICAgICAgICAgIWlzSHRtbCh2YWwpICYmDQogICAgICAgICAgICAgICFpc1dpZGdldCh2YWwpICYmDQogICAgICAgICAgICAgICFpc0FycmF5KHZhbCkgJiYNCiAgICAgICAgICAgICAgIWlzRHVyYXRpb24odmFsKSAmJg0KICAgICAgICAgICAgICAhaXNEYXRlKHZhbCkgJiYNCiAgICAgICAgICAgICAgIWlzTGluayh2YWwpICYmDQogICAgICAgICAgICAgIHZhbCAhPT0gdW5kZWZpbmVkICYmDQogICAgICAgICAgICAgICFpc051bGwodmFsKSk7DQogICAgICB9DQogICAgICBWYWx1ZXMuaXNPYmplY3QgPSBpc09iamVjdDsNCiAgICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7DQogICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gImZ1bmN0aW9uIjsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsNCiAgfSkoVmFsdWVzIHx8IChWYWx1ZXMgPSB7fSkpOw0KICAvLy8vLy8vLy8vLy8vLy8NCiAgLy8gR3JvdXBpbmdzIC8vDQogIC8vLy8vLy8vLy8vLy8vLw0KICB2YXIgR3JvdXBpbmdzOw0KICAoZnVuY3Rpb24gKEdyb3VwaW5ncykgew0KICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGdyb3VwIGVudHJ5IGlzIGEgc3RhbmRhbG9uZSB2YWx1ZSwgb3IgYSBncm91cGluZyBvZiBzdWItZW50cmllcy4gKi8NCiAgICAgIGZ1bmN0aW9uIGlzRWxlbWVudEdyb3VwKGVudHJ5KSB7DQogICAgICAgICAgcmV0dXJuIFZhbHVlcy5pc09iamVjdChlbnRyeSkgJiYgT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCA9PSAyICYmICJrZXkiIGluIGVudHJ5ICYmICJyb3dzIiBpbiBlbnRyeTsNCiAgICAgIH0NCiAgICAgIEdyb3VwaW5ncy5pc0VsZW1lbnRHcm91cCA9IGlzRWxlbWVudEdyb3VwOw0KICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgZ3JvdXBpbmcgYXJyYXkuICovDQogICAgICBmdW5jdGlvbiBpc0dyb3VwaW5nKGVudHJ5KSB7DQogICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBlbnRyeSkNCiAgICAgICAgICAgICAgaWYgKCFpc0VsZW1lbnRHcm91cChlbGVtZW50KSkNCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgIH0NCiAgICAgIEdyb3VwaW5ncy5pc0dyb3VwaW5nID0gaXNHcm91cGluZzsNCiAgICAgIC8qKiBDb3VudCB0aGUgdG90YWwgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgcmVjdXJzaXZlIGdyb3VwaW5nLiAqLw0KICAgICAgZnVuY3Rpb24gY291bnQoZWxlbWVudHMpIHsNCiAgICAgICAgICBpZiAoaXNHcm91cGluZyhlbGVtZW50cykpIHsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IDA7DQogICAgICAgICAgICAgIGZvciAobGV0IHN1Ymdyb3VwIG9mIGVsZW1lbnRzKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGNvdW50KHN1Ymdyb3VwLnJvd3MpOw0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzLmxlbmd0aDsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBHcm91cGluZ3MuY291bnQgPSBjb3VudDsNCiAgfSkoR3JvdXBpbmdzIHx8IChHcm91cGluZ3MgPSB7fSkpOw0KICAvLy8vLy8vLy8vDQogIC8vIExJTksgLy8NCiAgLy8vLy8vLy8vLw0KICAvKiogVGhlIE9ic2lkaWFuICdsaW5rJywgdXNlZCBmb3IgdW5pcXVlbHkgZGVzY3JpYmluZyBhIGZpbGUsIGhlYWRlciwgb3IgYmxvY2suICovDQogIGNsYXNzIExpbmsgew0KICAgICAgY29uc3RydWN0b3IoZmllbGRzKSB7DQogICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBmaWVsZHMpOw0KICAgICAgfQ0KICAgICAgLyoqIENyZWF0ZSBhIGxpbmsgdG8gYSBzcGVjaWZpYyBmaWxlLiAqLw0KICAgICAgc3RhdGljIGZpbGUocGF0aCwgZW1iZWQgPSBmYWxzZSwgZGlzcGxheSkgew0KICAgICAgICAgIHJldHVybiBuZXcgTGluayh7DQogICAgICAgICAgICAgIHBhdGgsDQogICAgICAgICAgICAgIGVtYmVkLA0KICAgICAgICAgICAgICBkaXNwbGF5LA0KICAgICAgICAgICAgICBzdWJwYXRoOiB1bmRlZmluZWQsDQogICAgICAgICAgICAgIHR5cGU6ICJmaWxlIiwNCiAgICAgICAgICB9KTsNCiAgICAgIH0NCiAgICAgIHN0YXRpYyBpbmZlcihsaW5rcGF0aCwgZW1iZWQgPSBmYWxzZSwgZGlzcGxheSkgew0KICAgICAgICAgIGlmIChsaW5rcGF0aC5pbmNsdWRlcygiI14iKSkgew0KICAgICAgICAgICAgICBsZXQgc3BsaXQgPSBsaW5rcGF0aC5zcGxpdCgiI14iKTsNCiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuYmxvY2soc3BsaXRbMF0sIHNwbGl0WzFdLCBlbWJlZCwgZGlzcGxheSk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKGxpbmtwYXRoLmluY2x1ZGVzKCIjIikpIHsNCiAgICAgICAgICAgICAgbGV0IHNwbGl0ID0gbGlua3BhdGguc3BsaXQoIiMiKTsNCiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgIHJldHVybiBMaW5rLmZpbGUobGlua3BhdGgsIGVtYmVkLCBkaXNwbGF5KTsNCiAgICAgIH0NCiAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZSBhbmQgaGVhZGVyIGluIHRoYXQgZmlsZS4gKi8NCiAgICAgIHN0YXRpYyBoZWFkZXIocGF0aCwgaGVhZGVyLCBlbWJlZCwgZGlzcGxheSkgew0KICAgICAgICAgIC8vIEhlYWRlcnMgbmVlZCB0byBiZSBub3JtYWxpemVkIHRvIGFscGhhLW51bWVyaWMgJiB3aXRoIGV4dHJhIHNwYWNpbmcgcmVtb3ZlZC4NCiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoew0KICAgICAgICAgICAgICBwYXRoLA0KICAgICAgICAgICAgICBlbWJlZCwNCiAgICAgICAgICAgICAgZGlzcGxheSwNCiAgICAgICAgICAgICAgc3VicGF0aDogbm9ybWFsaXplSGVhZGVyRm9yTGluayhoZWFkZXIpLA0KICAgICAgICAgICAgICB0eXBlOiAiaGVhZGVyIiwNCiAgICAgICAgICB9KTsNCiAgICAgIH0NCiAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZSBhbmQgYmxvY2sgaW4gdGhhdCBmaWxlLiAqLw0KICAgICAgc3RhdGljIGJsb2NrKHBhdGgsIGJsb2NrSWQsIGVtYmVkLCBkaXNwbGF5KSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsNCiAgICAgICAgICAgICAgcGF0aCwNCiAgICAgICAgICAgICAgZW1iZWQsDQogICAgICAgICAgICAgIGRpc3BsYXksDQogICAgICAgICAgICAgIHN1YnBhdGg6IGJsb2NrSWQsDQogICAgICAgICAgICAgIHR5cGU6ICJibG9jayIsDQogICAgICAgICAgfSk7DQogICAgICB9DQogICAgICBzdGF0aWMgZnJvbU9iamVjdChvYmplY3QpIHsNCiAgICAgICAgICByZXR1cm4gbmV3IExpbmsob2JqZWN0KTsNCiAgICAgIH0NCiAgICAgIC8qKiBDaGVja3MgZm9yIGxpbmsgZXF1YWxpdHkgKGkuZS4sIHRoYXQgdGhlIGxpbmtzIGFyZSBwb2ludGluZyB0byB0aGUgc2FtZSBleGFjdCBsb2NhdGlvbikuICovDQogICAgICBlcXVhbHMob3RoZXIpIHsNCiAgICAgICAgICBpZiAob3RoZXIgPT0gdW5kZWZpbmVkIHx8IG90aGVyID09IG51bGwpDQogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICByZXR1cm4gdGhpcy5wYXRoID09IG90aGVyLnBhdGggJiYgdGhpcy50eXBlID09IG90aGVyLnR5cGUgJiYgdGhpcy5zdWJwYXRoID09IG90aGVyLnN1YnBhdGg7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gaXQncyBtYXJrZG93biByZXByZXNlbnRhdGlvbi4gKi8NCiAgICAgIHRvU3RyaW5nKCkgew0KICAgICAgICAgIHJldHVybiB0aGlzLm1hcmtkb3duKCk7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoIGlzIHNlcmlhbGl6YXRpb24tZnJpZW5kbHkuICovDQogICAgICB0b09iamVjdCgpIHsNCiAgICAgICAgICByZXR1cm4geyBwYXRoOiB0aGlzLnBhdGgsIHR5cGU6IHRoaXMudHlwZSwgc3VicGF0aDogdGhpcy5zdWJwYXRoLCBkaXNwbGF5OiB0aGlzLmRpc3BsYXksIGVtYmVkOiB0aGlzLmVtYmVkIH07DQogICAgICB9DQogICAgICAvKiogVXBkYXRlIHRoaXMgbGluayB3aXRoIGEgbmV3IHBhdGguICovDQogICAgICAvL0B0cy1pZ25vcmU7IGVycm9yIGFwcGVhcmVkIGFmdGVyIHVwZGF0aW5nIE9ic2lkaWFuIHRvIDAuMTUuNDsgaXQgYWxzbyB1cGRhdGVkIG90aGVyIHBhY2thZ2VzIGJ1dCBkaWRuJ3Qgc2F5IHdoaWNoDQogICAgICB3aXRoUGF0aChwYXRoKSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgcGF0aCB9KSk7DQogICAgICB9DQogICAgICAvKiogUmV0dXJuIGEgbmV3IGxpbmsgd2hpY2ggcG9pbnRzIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJ1dCB3aXRoIGEgbmV3IGRpc3BsYXkgdmFsdWUuICovDQogICAgICB3aXRoRGlzcGxheShkaXNwbGF5KSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgZGlzcGxheSB9KSk7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCBhIGZpbGUgbGluayBpbnRvIGEgbGluayB0byBhIHNwZWNpZmljIGhlYWRlci4gKi8NCiAgICAgIHdpdGhIZWFkZXIoaGVhZGVyKSB7DQogICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpOw0KICAgICAgfQ0KICAgICAgLyoqIENvbnZlcnQgYW55IGxpbmsgaW50byBhIGxpbmsgdG8gaXRzIGZpbGUuICovDQogICAgICB0b0ZpbGUoKSB7DQogICAgICAgICAgcmV0dXJuIExpbmsuZmlsZSh0aGlzLnBhdGgsIHRoaXMuZW1iZWQsIHRoaXMuZGlzcGxheSk7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhbiBlbWJlZGRlZCBsaW5rLiAqLw0KICAgICAgdG9FbWJlZCgpIHsNCiAgICAgICAgICBpZiAodGhpcy5lbWJlZCkgew0KICAgICAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7DQogICAgICAgICAgICAgIGxpbmsuZW1iZWQgPSB0cnVlOw0KICAgICAgICAgICAgICByZXR1cm4gbGluazsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhIG5vbi1lbWJlZGRlZCBsaW5rLiAqLw0KICAgICAgZnJvbUVtYmVkKCkgew0KICAgICAgICAgIGlmICghdGhpcy5lbWJlZCkgew0KICAgICAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7DQogICAgICAgICAgICAgIGxpbmsuZW1iZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgcmV0dXJuIGxpbms7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIG1hcmtkb3duIHNvIGl0IGNhbiBiZSByZW5kZXJlZC4gKi8NCiAgICAgIG1hcmtkb3duKCkgew0KICAgICAgICAgIGxldCByZXN1bHQgPSAodGhpcy5lbWJlZCA/ICIhIiA6ICIiKSArICJbWyIgKyB0aGlzLm9ic2lkaWFuTGluaygpOw0KICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXkpIHsNCiAgICAgICAgICAgICAgcmVzdWx0ICs9ICJ8IiArIHRoaXMuZGlzcGxheTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyBnZXRGaWxlVGl0bGUodGhpcy5wYXRoKTsNCiAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIiB8fCB0aGlzLnR5cGUgPT0gImJsb2NrIikNCiAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiID4gIiArIHRoaXMuc3VicGF0aDsNCiAgICAgICAgICB9DQogICAgICAgICAgcmVzdWx0ICs9ICJdXSI7DQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgIH0NCiAgICAgIC8qKiBDb252ZXJ0IHRoZSBpbm5lciBwYXJ0IG9mIHRoZSBsaW5rIHRvIHNvbWV0aGluZyB0aGF0IE9ic2lkaWFuIGNhbiBvcGVuIC8gdW5kZXJzdGFuZC4gKi8NCiAgICAgIG9ic2lkaWFuTGluaygpIHsNCiAgICAgICAgICB2YXIgX2EsIF9iOw0KICAgICAgICAgIGNvbnN0IGVzY2FwZWQgPSB0aGlzLnBhdGgucmVwbGFjZSgifCIsICJcXHwiKTsNCiAgICAgICAgICBpZiAodGhpcy50eXBlID09ICJoZWFkZXIiKQ0KICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjIiArICgoX2EgPSB0aGlzLnN1YnBhdGgpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXBsYWNlKCJ8IiwgIlxcfCIpKTsNCiAgICAgICAgICBpZiAodGhpcy50eXBlID09ICJibG9jayIpDQogICAgICAgICAgICAgIHJldHVybiBlc2NhcGVkICsgIiNeIiArICgoX2IgPSB0aGlzLnN1YnBhdGgpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZXBsYWNlKCJ8IiwgIlxcfCIpKTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgIHJldHVybiBlc2NhcGVkOw0KICAgICAgfQ0KICAgICAgLyoqIFRoZSBzdHJpcHBlZCBuYW1lIG9mIHRoZSBmaWxlIHRoaXMgbGluayBwb2ludHMgdG8uICovDQogICAgICBmaWxlTmFtZSgpIHsNCiAgICAgICAgICByZXR1cm4gZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCkucmVwbGFjZSgiLm1kIiwgIiIpOw0KICAgICAgfQ0KICB9DQogIC8vLy8vLy8vLy8vLy8vLy8vDQogIC8vIFdJREdFVCBCQVNFIC8vDQogIC8vLy8vLy8vLy8vLy8vLy8vDQogIC8qKg0KICAgKiBBIHRyaXZpYWwgYmFzZSBjbGFzcyB3aGljaCBqdXN0IGRlZmluZXMgdGhlICckd2lkZ2V0JyBpZGVudGlmaWVyIHR5cGUuIFN1YnR5cGVzIG9mDQogICAqIHdpZGdldCBhcmUgcmVzcG9uc2libGUgZm9yIGFkZGluZyB3aGF0ZXZlciBtZXRhZGF0YSBpcyByZWxldmFudC4gSWYgeW91IHdhbnQgeW91ciB3aWRnZXQNCiAgICogdG8gaGF2ZSByZW5kZXJpbmcgZnVuY3Rpb25hbGl0eSAod2hpY2ggeW91IHByb2JhYmx5IGRvKSwgeW91IHNob3VsZCBleHRlbmQgYFJlbmRlcldpZGdldGAuDQogICAqLw0KICBjbGFzcyBXaWRnZXQgew0KICAgICAgY29uc3RydWN0b3IoJHdpZGdldCkgew0KICAgICAgICAgIHRoaXMuJHdpZGdldCA9ICR3aWRnZXQ7DQogICAgICB9DQogIH0NCiAgLyoqIEEgdHJpdmlhbCB3aWRnZXQgd2hpY2ggcmVuZGVycyBhIChrZXksIHZhbHVlKSBwYWlyLCBhbmQgYWxsb3dzIGFjY2Vzc2luZyB0aGUga2V5IGFuZCB2YWx1ZS4gKi8NCiAgY2xhc3MgTGlzdFBhaXJXaWRnZXQgZXh0ZW5kcyBXaWRnZXQgew0KICAgICAgY29uc3RydWN0b3Ioa2V5LCB2YWx1ZSkgew0KICAgICAgICAgIHN1cGVyKCJkYXRhdmlldzpsaXN0LXBhaXIiKTsNCiAgICAgICAgICB0aGlzLmtleSA9IGtleTsNCiAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7DQogICAgICB9DQogICAgICBtYXJrZG93bigpIHsNCiAgICAgICAgICByZXR1cm4gYCR7VmFsdWVzLnRvU3RyaW5nKHRoaXMua2V5KX06ICR7VmFsdWVzLnRvU3RyaW5nKHRoaXMudmFsdWUpfWA7DQogICAgICB9DQogIH0NCiAgLyoqIEEgc2ltcGxlIHdpZGdldCB3aGljaCByZW5kZXJzIGFuIGV4dGVybmFsIGxpbmsuICovDQogIGNsYXNzIEV4dGVybmFsTGlua1dpZGdldCBleHRlbmRzIFdpZGdldCB7DQogICAgICBjb25zdHJ1Y3Rvcih1cmwsIGRpc3BsYXkpIHsNCiAgICAgICAgICBzdXBlcigiZGF0YXZpZXc6ZXh0ZXJuYWwtbGluayIpOw0KICAgICAgICAgIHRoaXMudXJsID0gdXJsOw0KICAgICAgICAgIHRoaXMuZGlzcGxheSA9IGRpc3BsYXk7DQogICAgICB9DQogICAgICBtYXJrZG93bigpIHsNCiAgICAgICAgICB2YXIgX2E7DQogICAgICAgICAgcmV0dXJuIGBbJHsoX2EgPSB0aGlzLmRpc3BsYXkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMudXJsfV0oJHt0aGlzLnVybH0pYDsNCiAgICAgIH0NCiAgfQ0KICB2YXIgV2lkZ2V0czsNCiAgKGZ1bmN0aW9uIChXaWRnZXRzKSB7DQogICAgICAvKiogQ3JlYXRlIGEgbGlzdCBwYWlyIHdpZGdldCBtYXRjaGluZyB0aGUgZ2l2ZW4ga2V5IGFuZCB2YWx1ZS4gKi8NCiAgICAgIGZ1bmN0aW9uIGxpc3RQYWlyKGtleSwgdmFsdWUpIHsNCiAgICAgICAgICByZXR1cm4gbmV3IExpc3RQYWlyV2lkZ2V0KGtleSwgdmFsdWUpOw0KICAgICAgfQ0KICAgICAgV2lkZ2V0cy5saXN0UGFpciA9IGxpc3RQYWlyOw0KICAgICAgLyoqIENyZWF0ZSBhbiBleHRlcm5hbCBsaW5rIHdpZGdldCB3aGljaCByZW5kZXJzIGFuIGV4dGVybmFsIE9ic2lkaWFuIGxpbmsuICovDQogICAgICBmdW5jdGlvbiBleHRlcm5hbExpbmsodXJsLCBkaXNwbGF5KSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBFeHRlcm5hbExpbmtXaWRnZXQodXJsLCBkaXNwbGF5KTsNCiAgICAgIH0NCiAgICAgIFdpZGdldHMuZXh0ZXJuYWxMaW5rID0gZXh0ZXJuYWxMaW5rOw0KICAgICAgLyoqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gd2lkZ2V0IGlzIGEgbGlzdCBwYWlyIHdpZGdldC4gKi8NCiAgICAgIGZ1bmN0aW9uIGlzTGlzdFBhaXIod2lkZ2V0KSB7DQogICAgICAgICAgcmV0dXJuIHdpZGdldC4kd2lkZ2V0ID09PSAiZGF0YXZpZXc6bGlzdC1wYWlyIjsNCiAgICAgIH0NCiAgICAgIFdpZGdldHMuaXNMaXN0UGFpciA9IGlzTGlzdFBhaXI7DQogICAgICBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh3aWRnZXQpIHsNCiAgICAgICAgICByZXR1cm4gd2lkZ2V0LiR3aWRnZXQgPT09ICJkYXRhdmlldzpleHRlcm5hbC1saW5rIjsNCiAgICAgIH0NCiAgICAgIFdpZGdldHMuaXNFeHRlcm5hbExpbmsgPSBpc0V4dGVybmFsTGluazsNCiAgICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiB3aWRnZXQgaXMgYW55IGtpbmQgb2YgYnVpbHQtaW4gd2lkZ2V0IHdpdGggc3BlY2lhbCByZW5kZXJpbmcgaGFuZGxpbmcuICovDQogICAgICBmdW5jdGlvbiBpc0J1aWx0aW4od2lkZ2V0KSB7DQogICAgICAgICAgcmV0dXJuIGlzTGlzdFBhaXIod2lkZ2V0KSB8fCBpc0V4dGVybmFsTGluayh3aWRnZXQpOw0KICAgICAgfQ0KICAgICAgV2lkZ2V0cy5pc0J1aWx0aW4gPSBpc0J1aWx0aW47DQogIH0pKFdpZGdldHMgfHwgKFdpZGdldHMgPSB7fSkpOwoKICAvKiogVXRpbGl0eSBtZXRob2RzIGZvciBjcmVhdGluZyAmIGNvbXBhcmluZyBmaWVsZHMuICovDQogIHZhciBGaWVsZHM7DQogIChmdW5jdGlvbiAoRmllbGRzKSB7DQogICAgICBmdW5jdGlvbiB2YXJpYWJsZShuYW1lKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogInZhcmlhYmxlIiwgbmFtZSB9Ow0KICAgICAgfQ0KICAgICAgRmllbGRzLnZhcmlhYmxlID0gdmFyaWFibGU7DQogICAgICBmdW5jdGlvbiBsaXRlcmFsKHZhbHVlKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpdGVyYWwiLCB2YWx1ZSB9Ow0KICAgICAgfQ0KICAgICAgRmllbGRzLmxpdGVyYWwgPSBsaXRlcmFsOw0KICAgICAgZnVuY3Rpb24gYmluYXJ5T3AobGVmdCwgb3AsIHJpZ2h0KSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07DQogICAgICB9DQogICAgICBGaWVsZHMuYmluYXJ5T3AgPSBiaW5hcnlPcDsNCiAgICAgIGZ1bmN0aW9uIGluZGV4KG9iaiwgaW5kZXgpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaW5kZXgiLCBvYmplY3Q6IG9iaiwgaW5kZXggfTsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5pbmRleCA9IGluZGV4Ow0KICAgICAgLyoqIENvbnZlcnRzIGEgc3RyaW5nIGluIGRvdC1ub3RhdGlvbi1mb3JtYXQgaW50byBhIHZhcmlhYmxlIHdoaWNoIGluZGV4ZXMuICovDQogICAgICBmdW5jdGlvbiBpbmRleFZhcmlhYmxlKG5hbWUpIHsNCiAgICAgICAgICBsZXQgcGFydHMgPSBuYW1lLnNwbGl0KCIuIik7DQogICAgICAgICAgbGV0IHJlc3VsdCA9IEZpZWxkcy52YXJpYWJsZShwYXJ0c1swXSk7DQogICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHBhcnRzLmxlbmd0aDsgaW5kZXgrKykgew0KICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBGaWVsZHMubGl0ZXJhbChwYXJ0c1tpbmRleF0pKTsNCiAgICAgICAgICB9DQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5pbmRleFZhcmlhYmxlID0gaW5kZXhWYXJpYWJsZTsNCiAgICAgIGZ1bmN0aW9uIGxhbWJkYShhcmdzLCB2YWx1ZSkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGFyZ3MsIHZhbHVlIH07DQogICAgICB9DQogICAgICBGaWVsZHMubGFtYmRhID0gbGFtYmRhOw0KICAgICAgZnVuY3Rpb24gZnVuYyhmdW5jLCBhcmdzKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZ1bmN0aW9uIiwgZnVuYywgYXJndW1lbnRzOiBhcmdzIH07DQogICAgICB9DQogICAgICBGaWVsZHMuZnVuYyA9IGZ1bmM7DQogICAgICBmdW5jdGlvbiBsaXN0KHZhbHVlcykgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXN0IiwgdmFsdWVzIH07DQogICAgICB9DQogICAgICBGaWVsZHMubGlzdCA9IGxpc3Q7DQogICAgICBmdW5jdGlvbiBvYmplY3QodmFsdWVzKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlcyB9Ow0KICAgICAgfQ0KICAgICAgRmllbGRzLm9iamVjdCA9IG9iamVjdDsNCiAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJuZWdhdGVkIiwgY2hpbGQgfTsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5uZWdhdGUgPSBuZWdhdGU7DQogICAgICBmdW5jdGlvbiBpc0NvbXBhcmVPcChvcCkgew0KICAgICAgICAgIHJldHVybiBvcCA9PSAiPD0iIHx8IG9wID09ICI8IiB8fCBvcCA9PSAiPiIgfHwgb3AgPT0gIj49IiB8fCBvcCA9PSAiIT0iIHx8IG9wID09ICI9IjsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5pc0NvbXBhcmVPcCA9IGlzQ29tcGFyZU9wOw0KICAgICAgRmllbGRzLk5VTEwgPSBGaWVsZHMubGl0ZXJhbChudWxsKTsNCiAgfSkoRmllbGRzIHx8IChGaWVsZHMgPSB7fSkpOwoKICAvKiogQVNUIGltcGxlbWVudGF0aW9uIGZvciBxdWVyaWVzIG92ZXIgZGF0YSBzb3VyY2VzLiAqLw0KICAvKiogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nIGFuZCBtYW5pcHVsYXRpbmcgc291cmNlcy4gKi8NCiAgdmFyIFNvdXJjZXM7DQogIChmdW5jdGlvbiAoU291cmNlcykgew0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBzZWFyY2hlcyBmcm9tIGEgdGFnLiAqLw0KICAgICAgZnVuY3Rpb24gdGFnKHRhZykgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ0YWciLCB0YWcgfTsNCiAgICAgIH0NCiAgICAgIFNvdXJjZXMudGFnID0gdGFnOw0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBmZXRjaGVzIGZyb20gYSBDU1YgZmlsZS4gKi8NCiAgICAgIGZ1bmN0aW9uIGNzdihwYXRoKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImNzdiIsIHBhdGggfTsNCiAgICAgIH0NCiAgICAgIFNvdXJjZXMuY3N2ID0gY3N2Ow0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBzZWFyY2hlcyBmb3IgZmlsZXMgdW5kZXIgYSBmb2xkZXIgcHJlZml4LiAqLw0KICAgICAgZnVuY3Rpb24gZm9sZGVyKHByZWZpeCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmb2xkZXIiLCBmb2xkZXI6IHByZWZpeCB9Ow0KICAgICAgfQ0KICAgICAgU291cmNlcy5mb2xkZXIgPSBmb2xkZXI7DQogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHNlYXJjaGVzIGZvciBmaWxlcyB3aGljaCBsaW5rIHRvL2Zyb20gYSBnaXZlbiBmaWxlLiAqLw0KICAgICAgZnVuY3Rpb24gbGluayhmaWxlLCBpbmNvbWluZykgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaW5rIiwgZmlsZSwgZGlyZWN0aW9uOiBpbmNvbWluZyA/ICJpbmNvbWluZyIgOiAib3V0Z29pbmciIH07DQogICAgICB9DQogICAgICBTb3VyY2VzLmxpbmsgPSBsaW5rOw0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBqb2lucyB0d28gc291cmNlcyBieSBhIGxvZ2ljYWwgb3BlcmF0b3IgKGFuZC9vcikuICovDQogICAgICBmdW5jdGlvbiBiaW5hcnlPcChsZWZ0LCBvcCwgcmlnaHQpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcCwgcmlnaHQgfTsNCiAgICAgIH0NCiAgICAgIFNvdXJjZXMuYmluYXJ5T3AgPSBiaW5hcnlPcDsNCiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggdGFrZXMgdGhlIGludGVyc2VjdGlvbiBvZiB0d28gc291cmNlcy4gKi8NCiAgICAgIGZ1bmN0aW9uIGFuZChsZWZ0LCByaWdodCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJiaW5hcnlvcCIsIGxlZnQsIG9wOiAiJiIsIHJpZ2h0IH07DQogICAgICB9DQogICAgICBTb3VyY2VzLmFuZCA9IGFuZDsNCiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggdGFrZXMgdGhlIHVuaW9uIG9mIHR3byBzb3VyY2VzLiAqLw0KICAgICAgZnVuY3Rpb24gb3IobGVmdCwgcmlnaHQpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcDogInwiLCByaWdodCB9Ow0KICAgICAgfQ0KICAgICAgU291cmNlcy5vciA9IG9yOw0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBuZWdhdGVzIHRoZSB1bmRlcmx5aW5nIHNvdXJjZS4gKi8NCiAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJuZWdhdGUiLCBjaGlsZCB9Ow0KICAgICAgfQ0KICAgICAgU291cmNlcy5uZWdhdGUgPSBuZWdhdGU7DQogICAgICBmdW5jdGlvbiBlbXB0eSgpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZW1wdHkiIH07DQogICAgICB9DQogICAgICBTb3VyY2VzLmVtcHR5ID0gZW1wdHk7DQogIH0pKFNvdXJjZXMgfHwgKFNvdXJjZXMgPSB7fSkpOwoKICAvKiogRW1vamkgcmVnZXggd2l0aG91dCBhbnkgYWRkaXRpb25hbCBmbGFncy4gKi8NCiAgY29uc3QgRU1PSklfUkVHRVggPSBuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpOw0KICAvKiogUHJvdmlkZXMgYSBsb29rdXAgdGFibGUgZm9yIHVuaXQgZHVyYXRpb25zIG9mIHRoZSBnaXZlbiB0eXBlLiAqLw0KICBjb25zdCBEVVJBVElPTl9UWVBFUyA9IHsNCiAgICAgIHllYXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSwNCiAgICAgIHllYXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksDQogICAgICB5cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLA0KICAgICAgeXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksDQogICAgICBtb250aDogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwNCiAgICAgIG1vbnRoczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwNCiAgICAgIG1vOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLA0KICAgICAgbW9zOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLA0KICAgICAgd2VlazogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLA0KICAgICAgd2Vla3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgIHdrOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksDQogICAgICB3a3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgIHc6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgIGRheTogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksDQogICAgICBkYXlzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwNCiAgICAgIGQ6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLA0KICAgICAgaG91cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLA0KICAgICAgaG91cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgIGhyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksDQogICAgICBocnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgIGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgIG1pbnV0ZTogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksDQogICAgICBtaW51dGVzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwNCiAgICAgIG1pbjogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksDQogICAgICBtaW5zOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwNCiAgICAgIG06IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLA0KICAgICAgc2Vjb25kOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwNCiAgICAgIHNlY29uZHM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLA0KICAgICAgc2VjOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwNCiAgICAgIHNlY3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLA0KICAgICAgczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksDQogIH07DQogIC8qKiBTaG9ydGhhbmQgZm9yIGNvbW1vbiBkYXRlcyAocmVsYXRpdmUgdG8gcmlnaHQgbm93KS4gKi8NCiAgY29uc3QgREFURV9TSE9SVEhBTkRTID0gew0KICAgICAgbm93OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLA0KICAgICAgdG9kYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigiZGF5IiksDQogICAgICB5ZXN0ZXJkYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkNCiAgICAgICAgICAuc3RhcnRPZigiZGF5IikNCiAgICAgICAgICAubWludXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSkpLA0KICAgICAgdG9tb3Jyb3c6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkNCiAgICAgICAgICAuc3RhcnRPZigiZGF5IikNCiAgICAgICAgICAucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksDQogICAgICBzb3c6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigid2VlayIpLA0KICAgICAgInN0YXJ0LW9mLXdlZWsiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIndlZWsiKSwNCiAgICAgIGVvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigid2VlayIpLA0KICAgICAgImVuZC1vZi13ZWVrIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigid2VlayIpLA0KICAgICAgc295OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoInllYXIiKSwNCiAgICAgICJzdGFydC1vZi15ZWFyIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksDQogICAgICBlb3k6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoInllYXIiKSwNCiAgICAgICJlbmQtb2YteWVhciI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoInllYXIiKSwNCiAgICAgIHNvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJtb250aCIpLA0KICAgICAgInN0YXJ0LW9mLW1vbnRoIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJtb250aCIpLA0KICAgICAgZW9tOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJtb250aCIpLA0KICAgICAgImVuZC1vZi1tb250aCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoIm1vbnRoIiksDQogIH07DQogIC8qKg0KICAgKiBLZXl3b3JkcyB3aGljaCBjYW5ub3QgYmUgdXNlZCBhcyB2YXJpYWJsZXMgZGlyZWN0bHkuIFVzZSBgcm93Ljx0aGluZz5gIGlmIGl0IGlzIGEgdmFyaWFibGUgeW91IGhhdmUgZGVmaW5lZCBhbmQgd2FudA0KICAgKiB0byBhY2Nlc3MuDQogICAqLw0KICBjb25zdCBLRVlXT1JEUyA9IFsiRlJPTSIsICJXSEVSRSIsICJMSU1JVCIsICJHUk9VUCIsICJGTEFUVEVOIl07DQogIC8vLy8vLy8vLy8vLy8vLw0KICAvLyBVdGlsaXRpZXMgLy8NCiAgLy8vLy8vLy8vLy8vLy8vDQogIC8qKiBTcGxpdCBvbiB1bmVzY2FwZWQgcGlwZXMgaW4gYW4gaW5uZXIgbGluay4gKi8NCiAgZnVuY3Rpb24gc3BsaXRPblVuZXNjYXBlZFBpcGUobGluaykgew0KICAgICAgbGV0IHBpcGUgPSAtMTsNCiAgICAgIHdoaWxlICgocGlwZSA9IGxpbmsuaW5kZXhPZigifCIsIHBpcGUgKyAxKSkgPj0gMCkgew0KICAgICAgICAgIGlmIChwaXBlID4gMCAmJiBsaW5rW3BpcGUgLSAxXSA9PSAiXFwiKQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICByZXR1cm4gW2xpbmsuc3Vic3RyaW5nKDAsIHBpcGUpLnJlcGxhY2UoL1xcXHwvZywgInwiKSwgbGluay5zdWJzdHJpbmcocGlwZSArIDEpXTsNCiAgICAgIH0NCiAgICAgIHJldHVybiBbbGluay5yZXBsYWNlKC9cXFx8L2csICJ8IiksIHVuZGVmaW5lZF07DQogIH0NCiAgLyoqIEF0dGVtcHQgdG8gcGFyc2UgdGhlIGluc2lkZSBvZiBhIGxpbmsgdG8gcHVsbCBvdXQgZGlzcGxheSBuYW1lLCBzdWJwYXRoLCBldGMuICovDQogIGZ1bmN0aW9uIHBhcnNlSW5uZXJMaW5rKHJhd2xpbmspIHsNCiAgICAgIGxldCBbbGluaywgZGlzcGxheV0gPSBzcGxpdE9uVW5lc2NhcGVkUGlwZShyYXdsaW5rKTsNCiAgICAgIHJldHVybiBMaW5rLmluZmVyKGxpbmssIGZhbHNlLCBkaXNwbGF5KTsNCiAgfQ0KICAvKiogQ3JlYXRlIGEgbGVmdC1hc3NvY2lhdGl2ZSBiaW5hcnkgcGFyc2VyIHdoaWNoIHBhcnNlcyB0aGUgZ2l2ZW4gc3ViLWVsZW1lbnQgYW5kIHNlcGFyYXRvci4gSGFuZGxlcyB3aGl0ZXNwYWNlLiAqLw0KICBmdW5jdGlvbiBjcmVhdGVCaW5hcnlQYXJzZXIoY2hpbGQsIHNlcCwgY29tYmluZSkgew0KICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKGNoaWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHNlcCwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBjaGlsZCkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IHsNCiAgICAgICAgICBpZiAocmVzdC5sZW5ndGggPT0gMCkNCiAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0Ow0KICAgICAgICAgIGxldCBub2RlID0gY29tYmluZShmaXJzdCwgcmVzdFswXVsxXSwgcmVzdFswXVszXSk7DQogICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHJlc3QubGVuZ3RoOyBpbmRleCsrKSB7DQogICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5lKG5vZGUsIHJlc3RbaW5kZXhdWzFdLCByZXN0W2luZGV4XVszXSk7DQogICAgICAgICAgfQ0KICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgfSk7DQogIH0NCiAgZnVuY3Rpb24gY2hhaW5PcHQoYmFzZSwgLi4uZnVuY3MpIHsNCiAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmN1c3RvbSgoc3VjY2VzcywgZmFpbHVyZSkgPT4gew0KICAgICAgICAgIHJldHVybiAoaW5wdXQsIGkpID0+IHsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGJhc2UuXyhpbnB1dCwgaSk7DQogICAgICAgICAgICAgIGlmICghcmVzdWx0LnN0YXR1cykNCiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHsNCiAgICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gZnVuYyhyZXN1bHQudmFsdWUpLl8oaW5wdXQsIHJlc3VsdC5pbmRleCk7DQogICAgICAgICAgICAgICAgICBpZiAoIW5leHQuc3RhdHVzKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXh0Ow0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgfTsNCiAgICAgIH0pOw0KICB9DQogIGNvbnN0IEVYUFJFU1NJT04gPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmNyZWF0ZUxhbmd1YWdlKHsNCiAgICAgIC8vIEEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOyB0aGUgZGVjaW1hbCBwb2ludCBpcyBvcHRpb25hbC4NCiAgICAgIG51bWJlcjogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvLT9bMC05XSsoXC5bMC05XSspPy8pDQogICAgICAgICAgLm1hcChzdHIgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSkNCiAgICAgICAgICAuZGVzYygibnVtYmVyIiksDQogICAgICAvLyBBIHF1b3RlLXN1cnJvdW5kZWQgc3RyaW5nIHdoaWNoIHN1cHBvcnRzIGVzY2FwZSBjaGFyYWN0ZXJzICgnXCcpLg0KICAgICAgc3RyaW5nOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCciJykNCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmVzY2FwZUNoYXJhY3RlciwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5ub25lT2YoJyJcXCcpKQ0KICAgICAgICAgIC5hdExlYXN0KDApDQogICAgICAgICAgLm1hcChjaGFycyA9PiBjaGFycy5qb2luKCIiKSkpDQogICAgICAgICAgLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoJyInKSkNCiAgICAgICAgICAuZGVzYygic3RyaW5nIiksDQogICAgICBlc2NhcGVDaGFyYWN0ZXI6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIlxcIikNCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFueSkNCiAgICAgICAgICAubWFwKGVzY2FwZWQgPT4gew0KICAgICAgICAgIC8vIElmIHdlIGFyZSBlc2NhcGluZyBhIGJhY2tzbGFzaCBvciBhIHF1b3RlLCBwYXNzIGluIG9uIGluIGVzY2FwZWQgZm9ybQ0KICAgICAgICAgIGlmIChlc2NhcGVkID09PSAnIicpDQogICAgICAgICAgICAgIHJldHVybiAnIic7DQogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICJcXCIpDQogICAgICAgICAgICAgIHJldHVybiAiXFwiOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgcmV0dXJuICJcXCIgKyBlc2NhcGVkOw0KICAgICAgfSksDQogICAgICAvLyBBIGJvb2xlYW4gdHJ1ZS9mYWxzZSB2YWx1ZS4NCiAgICAgIGJvb2w6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL3RydWV8ZmFsc2V8VHJ1ZXxGYWxzZS8pDQogICAgICAgICAgLm1hcChzdHIgPT4gc3RyLnRvTG93ZXJDYXNlKCkgPT0gInRydWUiKQ0KICAgICAgICAgIC5kZXNjKCJib29sZWFuICgndHJ1ZScgb3IgJ2ZhbHNlJykiKSwNCiAgICAgIC8vIEEgdGFnIG9mIHRoZSBmb3JtICcjc3R1ZmYvaGVsbG8tdGhlcmUnLg0KICAgICAgdGFnOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIjIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9bXlx1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGJyEiIyQlJigpKissLjo7PD0+P0BeYHt8fX5cW1xdXFxcc10vKS5kZXNjKCJ0ZXh0IikpLm1hbnkoKSwgKHN0YXJ0LCByZXN0KSA9PiBzdGFydCArIHJlc3Quam9pbigiIikpLmRlc2MoInRhZyAoJyNoZWxsby9zdHVmZicpIiksDQogICAgICAvLyBBIHZhcmlhYmxlIGlkZW50aWZpZXIsIHdoaWNoIGlzIGFscGhhbnVtZXJpYyBhbmQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIG9yLi4uIGVtb2ppLg0KICAgICAgaWRlbnRpZmllcjogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXHB7TGV0dGVyfS91KSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9bMC05XHB7TGV0dGVyfV8tXS91KSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IGZpcnN0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidmFyaWFibGUgaWRlbnRpZmllciIpLA0KICAgICAgLy8gQW4gT2JzaWRpYW4gbGluayBvZiB0aGUgZm9ybSBbWzxsaW5rPl1dLg0KICAgICAgbGluazogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXFtcWyhbXlxbXF1dKj8pXF1cXS91LCAxKQ0KICAgICAgICAgIC5tYXAobGlua0lubmVyID0+IHBhcnNlSW5uZXJMaW5rKGxpbmtJbm5lcikpDQogICAgICAgICAgLmRlc2MoImZpbGUgbGluayIpLA0KICAgICAgLy8gQW4gZW1iZWRkYWJsZSBsaW5rIHdoaWNoIGNhbiBzdGFydCB3aXRoICchJy4gVGhpcyBvdmVybGFwcyB3aXRoIHRoZSBub3JtYWwgbmVnYXRpb24gb3BlcmF0b3IsIHNvIGl0IGlzIG9ubHkNCiAgICAgIC8vIHByb3ZpZGVkIGZvciBtZXRhZGF0YSBwYXJzaW5nLg0KICAgICAgZW1iZWRMaW5rOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIhIikuYXRNb3N0KDEpLCBxLmxpbmssIChwLCBsKSA9PiB7DQogICAgICAgICAgaWYgKHAubGVuZ3RoID4gMCkNCiAgICAgICAgICAgICAgbC5lbWJlZCA9IHRydWU7DQogICAgICAgICAgcmV0dXJuIGw7DQogICAgICB9KS5kZXNjKCJmaWxlIGxpbmsiKSwNCiAgICAgIC8vIEJpbmFyeSBwbHVzIG9yIG1pbnVzIG9wZXJhdG9yLg0KICAgICAgYmluYXJ5UGx1c01pbnVzOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cK3wtLykNCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpDQogICAgICAgICAgLmRlc2MoIicrJyBvciAnLSciKSwNCiAgICAgIC8vIEJpbmFyeSB0aW1lcyBvciBkaXZpZGUgb3BlcmF0b3IuDQogICAgICBiaW5hcnlNdWxEaXY6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1wqfFwvfCUvKQ0KICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikNCiAgICAgICAgICAuZGVzYygiJyonIG9yICcvJyBvciAnJSciKSwNCiAgICAgIC8vIEJpbmFyeSBjb21wYXJpc29uIG9wZXJhdG9yLg0KICAgICAgYmluYXJ5Q29tcGFyZU9wOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC8+PXw8PXwhPXw+fDx8PS8pDQogICAgICAgICAgLm1hcChzdHIgPT4gc3RyKQ0KICAgICAgICAgIC5kZXNjKCInPj0nIG9yICc8PScgb3IgJyE9JyBvciAnPScgb3IgJz4nIG9yICc8JyIpLA0KICAgICAgLy8gQmluYXJ5IGJvb2xlYW4gY29tYmluYXRpb24gb3BlcmF0b3IuDQogICAgICBiaW5hcnlCb29sZWFuT3A6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL2FuZHxvcnwmfFx8L2kpDQogICAgICAgICAgLm1hcChzdHIgPT4gew0KICAgICAgICAgIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAiYW5kIikNCiAgICAgICAgICAgICAgcmV0dXJuICImIjsNCiAgICAgICAgICBlbHNlIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAib3IiKQ0KICAgICAgICAgICAgICByZXR1cm4gInwiOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgcmV0dXJuIHN0cjsNCiAgICAgIH0pDQogICAgICAgICAgLmRlc2MoIidhbmQnIG9yICdvciciKSwNCiAgICAgIC8vIEEgZGF0ZSB3aGljaCBjYW4gYmUgWVlZWS1NTVstRERUSEg6bW06c3NdLg0KICAgICAgcm9vdERhdGU6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezR9LyksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoeWVhciwgXywgbW9udGgpID0+IHsNCiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IE51bWJlci5wYXJzZUludCh5ZWFyKSwgbW9udGg6IE51bWJlci5wYXJzZUludChtb250aCkgfSk7DQogICAgICB9KS5kZXNjKCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU10iKSwNCiAgICAgIGRhdGVTaG9ydGhhbmQ6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQoLi4uT2JqZWN0LmtleXMoREFURV9TSE9SVEhBTkRTKQ0KICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKQ0KICAgICAgICAgIC5tYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcpKSwNCiAgICAgIGRhdGU6IHEgPT4gY2hhaW5PcHQocS5yb290RGF0ZSwgKHltKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIGRheSkgPT4geW0uc2V0KHsgZGF5OiBOdW1iZXIucGFyc2VJbnQoZGF5KSB9KSksICh5bWQpID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJUIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgaG91cikgPT4geW1kLnNldCh7IGhvdXI6IE51bWJlci5wYXJzZUludChob3VyKSB9KSksICh5bWRoKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIG1pbnV0ZSkgPT4geW1kaC5zZXQoeyBtaW51dGU6IE51bWJlci5wYXJzZUludChtaW51dGUpIH0pKSwgKHltZGhtKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIHNlY29uZCkgPT4geW1kaG0uc2V0KHsgc2Vjb25kOiBOdW1iZXIucGFyc2VJbnQoc2Vjb25kKSB9KSksICh5bWRobXMpID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIuIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cZHszfS8pLCAoXywgbWlsbGlzZWNvbmQpID0+IHltZGhtcy5zZXQoeyBtaWxsaXNlY29uZDogTnVtYmVyLnBhcnNlSW50KG1pbGxpc2Vjb25kKSB9KSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3VjY2VlZCh5bWRobXMpIC8vIHBhc3MNCiAgICAgICksIChkdCkgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIisiKS5vcihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLSIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezEsMn0oOlxkezJ9KT8vKSwgKHBtLCBocikgPT4gZHQuc2V0Wm9uZSgiVVRDIiArIHBtICsgaHIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJaIiksICgpID0+IGR0LnNldFpvbmUoInV0YyIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJbIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9bMC05QS1aYS16Ky1cL10rL3UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiXSIpLCAoX2EsIHpvbmUsIF9iKSA9PiBkdC5zZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSkpKQ0KICAgICAgICAgIC5hc3NlcnQoKGR0KSA9PiBkdC5pc1ZhbGlkLCAidmFsaWQgZGF0ZSIpDQogICAgICAgICAgLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLA0KICAgICAgLy8gQSBkYXRlLCBwbHVzIHZhcmlvdXMgc2hvcnRoYW5kIHRpbWVzIG9mIGRheSBpdCBjb3VsZCBiZS4NCiAgICAgIGRhdGVQbHVzOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHEuZGF0ZVNob3J0aGFuZC5tYXAoZCA9PiBEQVRFX1NIT1JUSEFORFNbZF0oKSksIHEuZGF0ZSkuZGVzYygiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdIG9yIGluIHNob3J0aGFuZCIpLA0KICAgICAgLy8gQSBkdXJhdGlvbiBvZiB0aW1lLg0KICAgICAgZHVyYXRpb25UeXBlOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KC4uLk9iamVjdC5rZXlzKERVUkFUSU9OX1RZUEVTKQ0KICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKQ0KICAgICAgICAgIC5tYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcpKSwNCiAgICAgIGR1cmF0aW9uOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHEubnVtYmVyLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb25UeXBlLCAoY291bnQsIF8sIHQpID0+IERVUkFUSU9OX1RZUEVTW3RdLm1hcFVuaXRzKHggPT4geCAqIGNvdW50KSkNCiAgICAgICAgICAuc2VwQnkxKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLm9yKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkpDQogICAgICAgICAgLm1hcChkdXJhdGlvbnMgPT4gZHVyYXRpb25zLnJlZHVjZSgocCwgYykgPT4gcC5wbHVzKGMpKSkNCiAgICAgICAgICAuZGVzYygiZHVyYXRpb24gbGlrZSA0aHIybWluIiksDQogICAgICAvLyBBIHJhdyBudWxsIHZhbHVlLg0KICAgICAgcmF3TnVsbDogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygibnVsbCIpLA0KICAgICAgLy8gU291cmNlIHBhcnNpbmcuDQogICAgICB0YWdTb3VyY2U6IHEgPT4gcS50YWcubWFwKHRhZyA9PiBTb3VyY2VzLnRhZyh0YWcpKSwNCiAgICAgIGNzdlNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiY3N2KCIpLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5zdHJpbmcsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgcGF0aCwgXzIpID0+IFNvdXJjZXMuY3N2KHBhdGgpKSwNCiAgICAgIGxpbmtJbmNvbWluZ1NvdXJjZTogcSA9PiBxLmxpbmsubWFwKGxpbmsgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgdHJ1ZSkpLA0KICAgICAgbGlua091dGdvaW5nU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJvdXRnb2luZygiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEubGluaywgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBsaW5rLCBfMikgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgZmFsc2UpKSwNCiAgICAgIGZvbGRlclNvdXJjZTogcSA9PiBxLnN0cmluZy5tYXAoc3RyID0+IFNvdXJjZXMuZm9sZGVyKHN0cikpLA0KICAgICAgcGFyZW5zU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIoIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5zb3VyY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGQpLA0KICAgICAgbmVnYXRlU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIhIikpLCBxLmF0b21Tb3VyY2UsIChfLCBzb3VyY2UpID0+IFNvdXJjZXMubmVnYXRlKHNvdXJjZSkpLA0KICAgICAgYXRvbVNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLnBhcmVuc1NvdXJjZSwgcS5uZWdhdGVTb3VyY2UsIHEubGlua091dGdvaW5nU291cmNlLCBxLmxpbmtJbmNvbWluZ1NvdXJjZSwgcS5mb2xkZXJTb3VyY2UsIHEudGFnU291cmNlLCBxLmNzdlNvdXJjZSksDQogICAgICBiaW5hcnlPcFNvdXJjZTogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5hdG9tU291cmNlLCBxLmJpbmFyeUJvb2xlYW5PcC5tYXAocyA9PiBzKSwgU291cmNlcy5iaW5hcnlPcCksDQogICAgICBzb3VyY2U6IHEgPT4gcS5iaW5hcnlPcFNvdXJjZSwNCiAgICAgIC8vIEZpZWxkIHBhcnNpbmcuDQogICAgICB2YXJpYWJsZUZpZWxkOiBxID0+IHEuaWRlbnRpZmllcg0KICAgICAgICAgIC5jaGFpbihyID0+IHsNCiAgICAgICAgICBpZiAoS0VZV09SRFMuaW5jbHVkZXMoci50b1VwcGVyQ2FzZSgpKSkgew0KICAgICAgICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5mYWlsKCJWYXJpYWJsZSBmaWVsZHMgY2Fubm90IGJlIGEga2V5d29yZCAoIiArIEtFWVdPUkRTLmpvaW4oIiBvciAiKSArICIpIik7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdWNjZWVkKEZpZWxkcy52YXJpYWJsZShyKSk7DQogICAgICAgICAgfQ0KICAgICAgfSkNCiAgICAgICAgICAuZGVzYygidmFyaWFibGUiKSwNCiAgICAgIG51bWJlckZpZWxkOiBxID0+IHEubnVtYmVyLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygibnVtYmVyIiksDQogICAgICBzdHJpbmdGaWVsZDogcSA9PiBxLnN0cmluZy5tYXAodmFsID0+IEZpZWxkcy5saXRlcmFsKHZhbCkpLmRlc2MoInN0cmluZyIpLA0KICAgICAgYm9vbEZpZWxkOiBxID0+IHEuYm9vbC5tYXAodmFsID0+IEZpZWxkcy5saXRlcmFsKHZhbCkpLmRlc2MoImJvb2xlYW4iKSwNCiAgICAgIGRhdGVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiZGF0ZSgiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmRhdGVQbHVzLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkYXRlLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZGF0ZSkpLmRlc2MoImRhdGUiKSwNCiAgICAgIGR1cmF0aW9uRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoImR1cigiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkdXIsIF8yLCBwb3N0Zml4KSA9PiBGaWVsZHMubGl0ZXJhbChkdXIpKS5kZXNjKCJkdXJhdGlvbiIpLA0KICAgICAgbnVsbEZpZWxkOiBxID0+IHEucmF3TnVsbC5tYXAoXyA9PiBGaWVsZHMuTlVMTCksDQogICAgICBsaW5rRmllbGQ6IHEgPT4gcS5saW5rLm1hcChmID0+IEZpZWxkcy5saXRlcmFsKGYpKSwNCiAgICAgIGxpc3RGaWVsZDogcSA9PiBxLmZpZWxkDQogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpKQ0KICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJbIikuc2tpcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiXSIpKSkNCiAgICAgICAgICAubWFwKGwgPT4gRmllbGRzLmxpc3QobCkpDQogICAgICAgICAgLmRlc2MoImxpc3QgKCdbMSwgMiwgM10nKSIpLA0KICAgICAgb2JqZWN0RmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyLm9yKHEuc3RyaW5nKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIjoiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuZmllbGQsIChuYW1lLCBfc2VwLCB2YWx1ZSkgPT4gew0KICAgICAgICAgIHJldHVybiB7IG5hbWUsIHZhbHVlIH07DQogICAgICB9KQ0KICAgICAgICAgIC5zZXBCeShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkNCiAgICAgICAgICAud3JhcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygieyIpLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLnRoZW4ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIn0iKSkpDQogICAgICAgICAgLm1hcCh2YWxzID0+IHsNCiAgICAgICAgICBsZXQgcmVzID0ge307DQogICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgdmFscykNCiAgICAgICAgICAgICAgcmVzW2VudHJ5Lm5hbWVdID0gZW50cnkudmFsdWU7DQogICAgICAgICAgcmV0dXJuIEZpZWxkcy5vYmplY3QocmVzKTsNCiAgICAgIH0pDQogICAgICAgICAgLmRlc2MoIm9iamVjdCAoJ3sgYTogMSwgYjogMiB9JykiKSwNCiAgICAgIGF0b21JbmxpbmVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmRhdGUsIHEuZHVyYXRpb24ubWFwKGQgPT4gbm9ybWFsaXplRHVyYXRpb24oZCkpLCBxLnN0cmluZywgcS50YWcsIHEuZW1iZWRMaW5rLCBxLmJvb2wsIHEubnVtYmVyLCBxLnJhd051bGwpLA0KICAgICAgaW5saW5lRmllbGRMaXN0OiBxID0+IHEuYXRvbUlubGluZUZpZWxkLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLmxvb2thaGVhZChxLmF0b21JbmxpbmVGaWVsZCkpLA0KICAgICAgaW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5hdG9tSW5saW5lRmllbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmlubGluZUZpZWxkTGlzdCwgKGYsIF9zLCBsKSA9PiBbZl0uY29uY2F0KGwpKSwgcS5hdG9tSW5saW5lRmllbGQpLA0KICAgICAgYXRvbUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KA0KICAgICAgLy8gUGxhY2UgZW1iZWQgbGlua3MgYWJvdmUgbmVnYXRlZCBmaWVsZHMgYXMgdGhleSBhcmUgdGhlIHNwZWNpYWwgcGFyc2VyIGNhc2UgJyFbW3RoaW5nXV0nIGFuZCBhcmUgZ2VuZXJhbGx5IHVuYW1iaWdpb3VzLg0KICAgICAgcS5lbWJlZExpbmsubWFwKGwgPT4gRmllbGRzLmxpdGVyYWwobCkpLCBxLm5lZ2F0ZWRGaWVsZCwgcS5saW5rRmllbGQsIHEubGlzdEZpZWxkLCBxLm9iamVjdEZpZWxkLCBxLmxhbWJkYUZpZWxkLCBxLnBhcmVuc0ZpZWxkLCBxLmJvb2xGaWVsZCwgcS5udW1iZXJGaWVsZCwgcS5zdHJpbmdGaWVsZCwgcS5kYXRlRmllbGQsIHEuZHVyYXRpb25GaWVsZCwgcS5udWxsRmllbGQsIHEudmFyaWFibGVGaWVsZCksDQogICAgICBpbmRleEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHEuYXRvbUZpZWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmRvdFBvc3RmaXgsIHEuaW5kZXhQb3N0Zml4LCBxLmZ1bmN0aW9uUG9zdGZpeCkubWFueSgpLCAob2JqLCBwb3N0Zml4ZXMpID0+IHsNCiAgICAgICAgICBsZXQgcmVzdWx0ID0gb2JqOw0KICAgICAgICAgIGZvciAobGV0IHBvc3Qgb2YgcG9zdGZpeGVzKSB7DQogICAgICAgICAgICAgIHN3aXRjaCAocG9zdC50eXBlKSB7DQogICAgICAgICAgICAgICAgICBjYXNlICJkb3QiOg0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIEZpZWxkcy5saXRlcmFsKHBvc3QuZmllbGQpKTsNCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgIGNhc2UgImluZGV4IjoNCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBwb3N0LmZpZWxkKTsNCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuZnVuYyhyZXN1bHQsIHBvc3QuZmllbGRzKTsNCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgfSksDQogICAgICBuZWdhdGVkRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiEiKSwgcS5pbmRleEZpZWxkLCAoXywgZmllbGQpID0+IEZpZWxkcy5uZWdhdGUoZmllbGQpKS5kZXNjKCJuZWdhdGVkIGZpZWxkIiksDQogICAgICBwYXJlbnNGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZmllbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGQpLA0KICAgICAgbGFtYmRhRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyDQogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpKQ0KICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIoIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKSIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCI9PiIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKGlkZW50LCBfaWdub3JlLCB2YWx1ZSkgPT4gew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGlkZW50LCB2YWx1ZSB9Ow0KICAgICAgfSksDQogICAgICBkb3RQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIuIiksIHEuaWRlbnRpZmllciwgKF8sIGZpZWxkKSA9PiB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRvdCIsIGZpZWxkOiBmaWVsZCB9Ow0KICAgICAgfSksDQogICAgICBpbmRleFBvc3RmaXg6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIlsiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmZpZWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJdIiksIChfLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpbmRleCIsIGZpZWxkIH07DQogICAgICB9KSwNCiAgICAgIGZ1bmN0aW9uUG9zdGZpeDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZmllbGQuc2VwQnkocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChfLCBfMSwgZmllbGRzLCBfMiwgXzMpID0+IHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmaWVsZHMgfTsNCiAgICAgIH0pLA0KICAgICAgLy8gVGhlIHByZWNlZGVuY2UgaGllcmFyY2h5IG9mIG9wZXJhdG9ycyAtIG11bHRpcGx5L2RpdmlkZSwgYWRkL3N1YnRyYWN0LCBjb21wYXJlLCBhbmQgdGhlbiBib29sZWFuIG9wZXJhdGlvbnMuDQogICAgICBiaW5hcnlNdWxEaXZGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5pbmRleEZpZWxkLCBxLmJpbmFyeU11bERpdiwgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgIGJpbmFyeVBsdXNNaW51c0ZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeU11bERpdkZpZWxkLCBxLmJpbmFyeVBsdXNNaW51cywgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgIGJpbmFyeUNvbXBhcmVGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlQbHVzTWludXNGaWVsZCwgcS5iaW5hcnlDb21wYXJlT3AsIEZpZWxkcy5iaW5hcnlPcCksDQogICAgICBiaW5hcnlCb29sZWFuRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5Q29tcGFyZUZpZWxkLCBxLmJpbmFyeUJvb2xlYW5PcCwgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgIGJpbmFyeU9wRmllbGQ6IHEgPT4gcS5iaW5hcnlCb29sZWFuRmllbGQsDQogICAgICBmaWVsZDogcSA9PiBxLmJpbmFyeU9wRmllbGQsDQogIH0pOwoKICAvKiogUGFyc2UgaW5saW5lIGZpZWxkcyBhbmQgb3RoZXIgZW1iZWRkZWQgbWV0YWRhdGEgaW4gYSBsaW5lLiAqLw0KICAvKiogVGhlIHdyYXBwZXIgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbiBpbmxpbmUgZmllbGQuICovDQogIGNvbnN0IElOTElORV9GSUVMRF9XUkFQUEVSUyA9IE9iamVjdC5mcmVlemUoew0KICAgICAgIlsiOiAiXSIsDQogICAgICAiKCI6ICIpIiwNCiAgfSk7DQogIC8qKg0KICAgKiBGaW5kIGEgbWF0Y2hpbmcgY2xvc2luZyBicmFja2V0IHRoYXQgb2NjdXJzIGF0IG9yIGFmdGVyIGBzdGFydGAsIHJlc3BlY3RpbmcgbmVzdGluZyBhbmQgZXNjYXBlcy4gSWYgZm91bmQsDQogICAqIHJldHVybnMgdGhlIHZhbHVlIGNvbnRhaW5lZCB3aXRoaW4gYW5kIHRoZSBzdHJpbmcgaW5kZXggYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgdmFsdWUuDQogICAqLw0KICBmdW5jdGlvbiBmaW5kQ2xvc2luZyhsaW5lLCBzdGFydCwgb3BlbiwgY2xvc2UpIHsNCiAgICAgIGxldCBuZXN0aW5nID0gMDsNCiAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7DQogICAgICBmb3IgKGxldCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IGxpbmUubGVuZ3RoOyBpbmRleCsrKSB7DQogICAgICAgICAgbGV0IGNoYXIgPSBsaW5lLmNoYXJBdChpbmRleCk7DQogICAgICAgICAgLy8gQWxsb3dzIGZvciBkb3VibGUgZXNjYXBlcyBsaWtlICdcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuDQogICAgICAgICAgaWYgKGNoYXIgPT0gIlxcIikgew0KICAgICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWQ7DQogICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyBJZiBlc2NhcGVkLCBpZ25vcmUgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBjb21wdXRpbmcgbmVzdGluZywgcmVnYXJkbGVzcyBvZiB3aGF0IGl0IGlzLg0KICAgICAgICAgIGlmIChlc2NhcGVkKSB7DQogICAgICAgICAgICAgIGVzY2FwZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmIChjaGFyID09IG9wZW4pDQogICAgICAgICAgICAgIG5lc3RpbmcrKzsNCiAgICAgICAgICBlbHNlIGlmIChjaGFyID09IGNsb3NlKQ0KICAgICAgICAgICAgICBuZXN0aW5nLS07DQogICAgICAgICAgLy8gT25seSBvY2N1cnMgaWYgd2UgYXJlIG9uIGEgY2xvc2UgY2hhcmFjdGVyIGFuZCB0cmhlcmUgaXMgbm8gbW9yZSBuZXN0aW5nLg0KICAgICAgICAgIGlmIChuZXN0aW5nIDwgMCkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBpbmRleCkudHJpbSgpLCBlbmRJbmRleDogaW5kZXggKyAxIH07DQogICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgfQ0KICAvKiogRmluZCB0aGUgJzo6JyBzZXBhcmF0b3IgaW4gYW4gaW5saW5lIGZpZWxkLiAqLw0KICBmdW5jdGlvbiBmaW5kU2VwYXJhdG9yKGxpbmUsIHN0YXJ0KSB7DQogICAgICBsZXQgc2VwID0gbGluZS5pbmRleE9mKCI6OiIsIHN0YXJ0KTsNCiAgICAgIGlmIChzZXAgPCAwKQ0KICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICByZXR1cm4geyBrZXk6IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBzZXApLnRyaW0oKSwgdmFsdWVJbmRleDogc2VwICsgMiB9Ow0KICB9DQogIC8qKiBUcnkgdG8gY29tcGxldGVseSBwYXJzZSBhbiBpbmxpbmUgZmllbGQgc3RhcnRpbmcgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiBBc3N1ZW1zIGBzdGFydGAgaXMgb24gYSB3cmFwcGluZyBjaGFyYWN0ZXIuICovDQogIGZ1bmN0aW9uIGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIHN0YXJ0KSB7DQogICAgICBsZXQgb3BlbiA9IGxpbmUuY2hhckF0KHN0YXJ0KTsNCiAgICAgIGxldCBrZXkgPSBmaW5kU2VwYXJhdG9yKGxpbmUsIHN0YXJ0ICsgMSk7DQogICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpDQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIC8vIEZhaWwgdGhlIG1hdGNoIGlmIHdlIGZpbmQgYW55IHNlcGFyYXRvciBjaGFyYWN0ZXJzIChub3QgYWxsb3dlZCBpbiBrZXlzKS4NCiAgICAgIGZvciAobGV0IHNlcCBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpLmNvbmNhdChPYmplY3QudmFsdWVzKElOTElORV9GSUVMRF9XUkFQUEVSUykpKSB7DQogICAgICAgICAgaWYgKGtleS5rZXkuaW5jbHVkZXMoc2VwKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIH0NCiAgICAgIGxldCB2YWx1ZSA9IGZpbmRDbG9zaW5nKGxpbmUsIGtleS52YWx1ZUluZGV4LCBvcGVuLCBJTkxJTkVfRklFTERfV1JBUFBFUlNbb3Blbl0pOw0KICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpDQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIHJldHVybiB7DQogICAgICAgICAga2V5OiBrZXkua2V5LA0KICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSwNCiAgICAgICAgICBzdGFydDogc3RhcnQsDQogICAgICAgICAgc3RhcnRWYWx1ZToga2V5LnZhbHVlSW5kZXgsDQogICAgICAgICAgZW5kOiB2YWx1ZS5lbmRJbmRleCwNCiAgICAgICAgICB3cmFwcGluZzogb3BlbiwNCiAgICAgIH07DQogIH0NCiAgLyoqIFBhcnNlIGEgdGV4dHVhbCBpbmxpbmUgZmllbGQgdmFsdWUgaW50byBzb21ldGhpbmcgd2UgY2FuIHdvcmsgd2l0aC4gKi8NCiAgZnVuY3Rpb24gcGFyc2VJbmxpbmVWYWx1ZSh2YWx1ZSkgew0KICAgICAgLy8gRW1wdHkgaW5saW5lIHZhbHVlcyAoaS5lLiwgbm8gdGV4dCkgc2hvdWxkIG1hcCB0byBudWxsIHRvIG1hdGNoIGxvbmctdGVybSBEYXRhdmlldyBzZW1hbnRpY3MuDQogICAgICAvLyBOdWxsIGlzIGFsc28gYSBtb3JlIHVuaXZlcnNhbCB0eXBlIHRvIGRlYWwgd2l0aCB0aGFuIHN0cmluZ3MsIHNpbmNlIGFsbCBmdW5jdGlvbnMgYWNjZXB0IG51bGxzLg0KICAgICAgaWYgKHZhbHVlLnRyaW0oKSA9PSAiIikNCiAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgIC8vIFRoZSBzdHJpcHBlZCBsaXRlcmFsIGZpZWxkIHBhcnNlciB1bmRlcnN0YW5kcyBhbGwgb2YgdGhlIG5vbi1hcnJheS9ub24tb2JqZWN0IGZpZWxkcyBhbmQgY2FuIHBhcnNlIHRoZW0gZm9yIHVzLg0KICAgICAgLy8gSW5saW5lIGZpZWxkIG9iamVjdHMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkOyBpbmxpbmUgYXJyYXkgb2JqZWN0cyBoYXZlIHRvIGJlIGhhbmRsZWQgYnkgdGhlIHBhcnNlcg0KICAgICAgLy8gc2VwYXJhdGVseS4NCiAgICAgIGxldCBpbmxpbmUgPSBFWFBSRVNTSU9OLmlubGluZUZpZWxkLnBhcnNlKHZhbHVlKTsNCiAgICAgIGlmIChpbmxpbmUuc3RhdHVzKQ0KICAgICAgICAgIHJldHVybiBpbmxpbmUudmFsdWU7DQogICAgICBlbHNlDQogICAgICAgICAgcmV0dXJuIHZhbHVlOw0KICB9DQogIC8qKiBFeHRyYWN0cyBpbmxpbmUgZmllbGRzIG9mIHRoZSBmb3JtICdba2V5OjogdmFsdWVdJyBmcm9tIGEgbGluZSBvZiB0ZXh0LiBUaGlzIGlzIGRvbmUgaW4gYSByZWxhdGl2ZWx5DQogICAqICJyb2J1c3QiIHdheSB0byBhdm9pZCBmYWlsaW5nIGR1ZSB0byBiYWQgbmVzdGluZyBvciBvdGhlciBpbnRlcmZlcmluZyBNYXJrZG93biBzeW1ib2xzOg0KICAgKg0KICAgKiAtIExvb2sgZm9yIGFueSB3cmFwcGVycyAoJ1snIGFuZCAnKCcpIGluIHRoZSBsaW5lLCB0cnlpbmcgdG8gcGFyc2Ugd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgYXMgYW4gaW5saW5lIGtleTo6Lg0KICAgKiAtIElmIHN1Y2Nlc3NmdWwsIHNjYW4gdW50aWwgeW91IGZpbmQgYSBtYXRjaGluZyBlbmQgYnJhY2tldCwgYW5kIHBhcnNlIHdoYXRldmVyIHJlbWFpbnMgYXMgYW4gaW5saW5lIHZhbHVlLg0KICAgKi8NCiAgZnVuY3Rpb24gZXh0cmFjdElubGluZUZpZWxkcyhsaW5lLCBpbmNsdWRlVGFza0ZpZWxkcyA9IGZhbHNlKSB7DQogICAgICBsZXQgZmllbGRzID0gW107DQogICAgICBmb3IgKGxldCB3cmFwcGVyIG9mIE9iamVjdC5rZXlzKElOTElORV9GSUVMRF9XUkFQUEVSUykpIHsNCiAgICAgICAgICBsZXQgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyKTsNCiAgICAgICAgICB3aGlsZSAoZm91bmRJbmRleCA+PSAwKSB7DQogICAgICAgICAgICAgIGxldCBwYXJzZWRGaWVsZCA9IGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIGZvdW5kSW5kZXgpOw0KICAgICAgICAgICAgICBpZiAoIXBhcnNlZEZpZWxkKSB7DQogICAgICAgICAgICAgICAgICBmb3VuZEluZGV4ID0gbGluZS5pbmRleE9mKHdyYXBwZXIsIGZvdW5kSW5kZXggKyAxKTsNCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGZpZWxkcy5wdXNoKHBhcnNlZEZpZWxkKTsNCiAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBwYXJzZWRGaWVsZC5lbmQpOw0KICAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGlmIChpbmNsdWRlVGFza0ZpZWxkcykNCiAgICAgICAgICBmaWVsZHMgPSBmaWVsZHMuY29uY2F0KGV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyhsaW5lKSk7DQogICAgICBmaWVsZHMuc29ydCgoYSwgYikgPT4gYS5zdGFydCAtIGIuc3RhcnQpOw0KICAgICAgbGV0IGZpbHRlcmVkRmllbGRzID0gW107DQogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgIGlmIChpID09IDAgfHwgZmlsdGVyZWRGaWVsZHNbZmlsdGVyZWRGaWVsZHMubGVuZ3RoIC0gMV0uZW5kIDwgZmllbGRzW2ldLnN0YXJ0KSB7DQogICAgICAgICAgICAgIGZpbHRlcmVkRmllbGRzLnB1c2goZmllbGRzW2ldKTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gZmlsdGVyZWRGaWVsZHM7DQogIH0NCiAgLyoqIFZhbGlkYXRlcyB0aGF0IGEgcmF3IGZpZWxkIG5hbWUgaGFzIGEgdmFsaWQgZm9ybS4gKi8NCiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJUID0gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAobmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksICJ1IikpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1cd1xzXy8tXSsvdSkpDQogICAgICAubWFueSgpDQogICAgICAubWFwKHBhcnRzID0+IHBhcnRzLmpvaW4oIiIpKTsNCiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJTRVIgPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvW14wLTlcd1xwe0xldHRlcn1dKi91KQ0KICAgICAgLnRoZW4oRlVMTF9MSU5FX0tFWV9QQVJUKQ0KICAgICAgLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1tfXCp+YF0qL3UpKTsNCiAgLyoqIEF0dGVtcHQgdG8gZXh0cmFjdCBhIGZ1bGwtbGluZSBmaWVsZCAoS2V5OjogVmFsdWUgY29uc3VtaW5nIHRoZSBlbnRpcmUgY29udGVudCBsaW5lKS4gKi8NCiAgZnVuY3Rpb24gZXh0cmFjdEZ1bGxMaW5lRmllbGQodGV4dCkgew0KICAgICAgbGV0IHNlcCA9IGZpbmRTZXBhcmF0b3IodGV4dCwgMCk7DQogICAgICBpZiAoIXNlcCkNCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOw0KICAgICAgLy8gV2UgbmVlZCB0byBwb3N0LXByb2Nlc3MgdGhlIGtleSB0byBkcm9wIHVubmVjZXNzYXJ5IG9wZW5pbmcgYW5ub3RhdGlvbnMgYXMgd2VsbCBhcw0KICAgICAgLy8gZHJvcCBzdXJyb3VuZGluZyBNYXJrZG93bi4NCiAgICAgIGxldCByZWFsS2V5ID0gRlVMTF9MSU5FX0tFWV9QQVJTRVIucGFyc2Uoc2VwLmtleSk7DQogICAgICBpZiAoIXJlYWxLZXkuc3RhdHVzKQ0KICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICByZXR1cm4gew0KICAgICAgICAgIGtleTogcmVhbEtleS52YWx1ZSwNCiAgICAgICAgICB2YWx1ZTogdGV4dC5zdWJzdHJpbmcoc2VwLnZhbHVlSW5kZXgpLnRyaW0oKSwNCiAgICAgICAgICBzdGFydDogMCwNCiAgICAgICAgICBzdGFydFZhbHVlOiBzZXAudmFsdWVJbmRleCwNCiAgICAgICAgICBlbmQ6IHRleHQubGVuZ3RoLA0KICAgICAgfTsNCiAgfQ0KICBjb25zdCBDUkVBVEVEX0RBVEVfUkVHRVggPSAvXHV7Mjc5NX1ccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7DQogIGNvbnN0IERVRV9EQVRFX1JFR0VYID0gLyg/Olx1ezFGNEM1fXxcdXsxRjRDNn18XHV7MUY1RDN9XHV7RkUwRn0/KVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsNCiAgY29uc3QgRE9ORV9EQVRFX1JFR0VYID0gL1x1ezI3MDV9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91Ow0KICBjb25zdCBTQ0hFRFVMRURfREFURV9SRUdFWCA9IC9bXHV7MjNGM31cdXsyMzFCfV1ccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7DQogIGNvbnN0IFNUQVJUX0RBVEVfUkVHRVggPSAvXHV7MUY2RUJ9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91Ow0KICBjb25zdCBFTU9KSV9SRUdFWEVTID0gWw0KICAgICAgeyByZWdleDogQ1JFQVRFRF9EQVRFX1JFR0VYLCBrZXk6ICJjcmVhdGVkIiB9LA0KICAgICAgeyByZWdleDogU1RBUlRfREFURV9SRUdFWCwga2V5OiAic3RhcnQiIH0sDQogICAgICB7IHJlZ2V4OiBTQ0hFRFVMRURfREFURV9SRUdFWCwga2V5OiAic2NoZWR1bGVkIiB9LA0KICAgICAgeyByZWdleDogRFVFX0RBVEVfUkVHRVgsIGtleTogImR1ZSIgfSwNCiAgICAgIHsgcmVnZXg6IERPTkVfREFURV9SRUdFWCwga2V5OiAiY29tcGxldGlvbiIgfSwNCiAgXTsNCiAgLyoqIFBhcnNlIHNwZWNpYWwgY29tcGxldGVkL2R1ZS9kb25lIHRhc2sgZmllbGRzIHdoaWNoIGFyZSBtYXJrZWQgdmlhIGVtb2ppLiAqLw0KICBmdW5jdGlvbiBleHRyYWN0U3BlY2lhbFRhc2tGaWVsZHMobGluZSkgew0KICAgICAgbGV0IHJlc3VsdHMgPSBbXTsNCiAgICAgIGZvciAobGV0IHsgcmVnZXgsIGtleSB9IG9mIEVNT0pJX1JFR0VYRVMpIHsNCiAgICAgICAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMobGluZSk7DQogICAgICAgICAgaWYgKCFtYXRjaCkNCiAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgcmVzdWx0cy5wdXNoKHsNCiAgICAgICAgICAgICAga2V5LA0KICAgICAgICAgICAgICB2YWx1ZTogbWF0Y2hbMV0sDQogICAgICAgICAgICAgIHN0YXJ0OiBtYXRjaC5pbmRleCwNCiAgICAgICAgICAgICAgc3RhcnRWYWx1ZTogbWF0Y2guaW5kZXggKyAxLA0KICAgICAgICAgICAgICBlbmQ6IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoLA0KICAgICAgICAgICAgICB3cmFwcGluZzogImVtb2ppLXNob3J0aGFuZCIsDQogICAgICAgICAgfSk7DQogICAgICB9DQogICAgICByZXR1cm4gcmVzdWx0czsNCiAgfQoKICAvKiogQWxsIGV4dHJhY3RlZCBtYXJrZG93biBmaWxlIG1ldGFkYXRhIG9idGFpbmVkIGZyb20gYSBmaWxlLiAqLw0KICBjbGFzcyBQYWdlTWV0YWRhdGEgew0KICAgICAgY29uc3RydWN0b3IocGF0aCwgaW5pdCkgew0KICAgICAgICAgIHRoaXMucGF0aCA9IHBhdGg7DQogICAgICAgICAgdGhpcy5maWVsZHMgPSBuZXcgTWFwKCk7DQogICAgICAgICAgdGhpcy5mcm9udG1hdHRlciA9IHt9Ow0KICAgICAgICAgIHRoaXMudGFncyA9IG5ldyBTZXQoKTsNCiAgICAgICAgICB0aGlzLmFsaWFzZXMgPSBuZXcgU2V0KCk7DQogICAgICAgICAgdGhpcy5saW5rcyA9IFtdOw0KICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7DQogICAgICAgICAgdGhpcy5saXN0cyA9ICh0aGlzLmxpc3RzIHx8IFtdKS5tYXAobCA9PiBuZXcgTGlzdEl0ZW0obCkpOw0KICAgICAgfQ0KICAgICAgLyoqIENhbm9uaWNhbGl6ZSByYXcgbGlua3MgYW5kIG90aGVyIGRhdGEgaW4gcGFydGlhbCBkYXRhIHdpdGggbm9ybWFsaXplcnMsIHJldHVybmluZyBhIGNvbXBsZXRlZCBvYmplY3QuICovDQogICAgICBzdGF0aWMgY2Fub25pY2FsaXplKGRhdGEsIGxpbmtOb3JtYWxpemVyKSB7DQogICAgICAgICAgLy8gTXV0YXRlIHRoZSBkYXRhIGZvciBub3csIHdoaWNoIGlzIHByb2JhYmx5IGEgYmFkIGlkZWEgYnV0Li4uIGFsbCB3ZWxsLg0KICAgICAgICAgIGlmIChkYXRhLmZyb250bWF0dGVyKSB7DQogICAgICAgICAgICAgIGRhdGEuZnJvbnRtYXR0ZXIgPSBWYWx1ZXMubWFwTGVhdmVzKGRhdGEuZnJvbnRtYXR0ZXIsIHQgPT4gVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmIChkYXRhLmZpZWxkcykgew0KICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgZGF0YS5maWVsZHMuZW50cmllcygpKSB7DQogICAgICAgICAgICAgICAgICBkYXRhLmZpZWxkcy5zZXQoa2V5LCBWYWx1ZXMubWFwTGVhdmVzKHZhbHVlLCB0ID0+IChWYWx1ZXMuaXNMaW5rKHQpID8gbGlua05vcm1hbGl6ZXIodCkgOiB0KSkpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmIChkYXRhLmxpc3RzKSB7DQogICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgZGF0YS5saXN0cykgew0KICAgICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGl0ZW0uZmllbGRzLmVudHJpZXMoKSkgew0KICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZmllbGRzLnNldChrZXksIHZhbHVlLm1hcCh4ID0+IFZhbHVlcy5tYXBMZWF2ZXMoeCwgdCA9PiAoVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCkpKSk7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKGRhdGEubGlua3MpIHsNCiAgICAgICAgICAgICAgZGF0YS5saW5rcyA9IGRhdGEubGlua3MubWFwKGwgPT4gbGlua05vcm1hbGl6ZXIobCkpOw0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSB1Z2x5LCBidXQgaXQncyBub3QgcG9zc2libGUgdG8gbm9ybWFsaXplIG9uIHRoZSB3b3JrZXIgdGhyZWFkIHRoYXQgZG9lcyBwYXJzaW5nLg0KICAgICAgICAgIC8vIFRoZSBiZXN0IHdheSB0byBpbXByb3ZlIHRoaXMgaXMgdG8gaW5zdGVhZCBqdXN0IGNhbm9uaWNhbGl6ZSB0aGUgZW50aXJlIGRhdGEgb2JqZWN0OyBJIGNhbiB0cnkgdG8NCiAgICAgICAgICAvLyBvcHRpbWl6ZSBgVmFsdWVzLm1hcExlYXZlc2AgdG8gb25seSBtdXRhdGUgaWYgaXQgYWN0dWFsbHkgY2hhbmdlcyB0aGluZ3MuDQogICAgICAgICAgcmV0dXJuIG5ldyBQYWdlTWV0YWRhdGEoZGF0YS5wYXRoLCBkYXRhKTsNCiAgICAgIH0NCiAgICAgIC8qKiBUaGUgbmFtZSAoYmFzZWQgb24gcGF0aCkgb2YgdGhpcyBmaWxlLiAqLw0KICAgICAgbmFtZSgpIHsNCiAgICAgICAgICByZXR1cm4gZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7DQogICAgICB9DQogICAgICAvKiogVGhlIGNvbnRhaW5pbmcgZm9sZGVyIChiYXNlZCBvbiBwYXRoKSBvZiB0aGlzIGZpbGUuICovDQogICAgICBmb2xkZXIoKSB7DQogICAgICAgICAgcmV0dXJuIGdldFBhcmVudEZvbGRlcih0aGlzLnBhdGgpOw0KICAgICAgfQ0KICAgICAgLyoqIFRoZSBleHRlbnNpb24gb2YgdGhpcyBmaWxlIChsaWtlbHkgJ21kJykuICovDQogICAgICBleHRlbnNpb24oKSB7DQogICAgICAgICAgcmV0dXJuIGdldEV4dGVuc2lvbih0aGlzLnBhdGgpOw0KICAgICAgfQ0KICAgICAgLyoqIFJldHVybiBhIHNldCBvZiB0YWdzIEFORCBhbGwgb2YgdGhlaXIgcGFyZW50IHRhZ3MgKHNvICNoZWxsby95ZXMgd291bGQgYmVjb21lICNoZWxsbywgI2hlbGxvL3llcykuICovDQogICAgICBmdWxsVGFncygpIHsNCiAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOw0KICAgICAgICAgIGZvciAobGV0IHRhZyBvZiB0aGlzLnRhZ3MpIHsNCiAgICAgICAgICAgICAgZm9yIChsZXQgc3VidGFnIG9mIGV4dHJhY3RTdWJ0YWdzKHRhZykpDQogICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHN1YnRhZyk7DQogICAgICAgICAgfQ0KICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCBhbGwgbGlua3MgaW4gdGhpcyBmaWxlIHRvIGZpbGUgbGlua3MuICovDQogICAgICBmaWxlTGlua3MoKSB7DQogICAgICAgICAgLy8gV2Ugd2FudCB0byBtYWtlIHRoZW0gZGlzdGluY3QsIGJ1dCB3aGVyZSBsaW5rcyBhcmUgbm90IHJhdyBsaW5rcyB3ZQ0KICAgICAgICAgIC8vIG5vdyBrZWVwIHRoZSBhZGRpdGlvbmFsIG1ldGFkYXRhLg0KICAgICAgICAgIGxldCBkaXN0aW5jdExpbmtzID0gbmV3IFNldCh0aGlzLmxpbmtzKTsNCiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShkaXN0aW5jdExpbmtzKTsNCiAgICAgIH0NCiAgICAgIC8qKiBNYXAgdGhpcyBtZXRhZGF0YSB0byBhIGZ1bGwgb2JqZWN0OyB1c2VzIHRoZSBpbmRleCBmb3IgYWRkaXRpb25hbCBkYXRhIGxvb2t1cHMuICAqLw0KICAgICAgc2VyaWFsaXplKGluZGV4LCBjYWNoZSkgew0KICAgICAgICAgIC8vIENvbnZlcnQgbGlzdCBpdGVtcyB2aWEgdGhlIGNhbm9uaWNhbGl6YXRpb24gY2FjaGUuDQogICAgICAgICAgbGV0IHJlYWxDYWNoZSA9IGNhY2hlICE9PSBudWxsICYmIGNhY2hlICE9PSB2b2lkIDAgPyBjYWNoZSA6IG5ldyBMaXN0U2VyaWFsaXphdGlvbkNhY2hlKHRoaXMubGlzdHMpOw0KICAgICAgICAgIGxldCByZXN1bHQgPSB7DQogICAgICAgICAgICAgIGZpbGU6IHsNCiAgICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCwNCiAgICAgICAgICAgICAgICAgIGZvbGRlcjogdGhpcy5mb2xkZXIoKSwNCiAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSgpLA0KICAgICAgICAgICAgICAgICAgbGluazogTGluay5maWxlKHRoaXMucGF0aCksDQogICAgICAgICAgICAgICAgICBvdXRsaW5rczogdGhpcy5maWxlTGlua3MoKSwNCiAgICAgICAgICAgICAgICAgIGlubGlua3M6IEFycmF5LmZyb20oaW5kZXgubGlua3MuZ2V0SW52ZXJzZSh0aGlzLnBhdGgpKS5tYXAobCA9PiBMaW5rLmZpbGUobCkpLA0KICAgICAgICAgICAgICAgICAgZXRhZ3M6IEFycmF5LmZyb20odGhpcy50YWdzKSwNCiAgICAgICAgICAgICAgICAgIHRhZ3M6IEFycmF5LmZyb20odGhpcy5mdWxsVGFncygpKSwNCiAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IEFycmF5LmZyb20odGhpcy5hbGlhc2VzKSwNCiAgICAgICAgICAgICAgICAgIGxpc3RzOiB0aGlzLmxpc3RzLm1hcChsID0+IHJlYWxDYWNoZS5nZXQobC5saW5lKSksDQogICAgICAgICAgICAgICAgICB0YXNrczogdGhpcy5saXN0cy5maWx0ZXIobCA9PiAhIWwudGFzaykubWFwKGwgPT4gcmVhbENhY2hlLmdldChsLmxpbmUpKSwNCiAgICAgICAgICAgICAgICAgIGN0aW1lOiB0aGlzLmN0aW1lLA0KICAgICAgICAgICAgICAgICAgY2RheTogc3RyaXBUaW1lKHRoaXMuY3RpbWUpLA0KICAgICAgICAgICAgICAgICAgbXRpbWU6IHRoaXMubXRpbWUsDQogICAgICAgICAgICAgICAgICBtZGF5OiBzdHJpcFRpbWUodGhpcy5tdGltZSksDQogICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnNpemUsDQogICAgICAgICAgICAgICAgICBzdGFycmVkOiBpbmRleC5zdGFycmVkLnN0YXJyZWQodGhpcy5wYXRoKSwNCiAgICAgICAgICAgICAgICAgIGZyb250bWF0dGVyOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5mcm9udG1hdHRlciksDQogICAgICAgICAgICAgICAgICBleHQ6IHRoaXMuZXh0ZW5zaW9uKCksDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgfTsNCiAgICAgICAgICAvLyBBZGQgdGhlIGN1cnJlbnQgZGF5IGlmIHByZXNlbnQuDQogICAgICAgICAgaWYgKHRoaXMuZGF5KQ0KICAgICAgICAgICAgICByZXN1bHQuZmlsZS5kYXkgPSB0aGlzLmRheTsNCiAgICAgICAgICAvLyBUaGVuIGFwcGVuZCB0aGUgY29tcHV0ZWQgZmllbGRzLg0KICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmZpZWxkcy5lbnRyaWVzKCkpIHsNCiAgICAgICAgICAgICAgaWYgKGtleSBpbiByZXN1bHQpDQogICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gRG9uJ3QgYWxsb3cgZmllbGRzIHRvIG92ZXJyaWRlIGV4aXN0aW5nIGtleXMuDQogICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7DQogICAgICAgICAgfQ0KICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICB9DQogIH0NCiAgLyoqIEEgbGlzdCBpdGVtIGluc2lkZSBvZiBhIGxpc3QuICovDQogIGNsYXNzIExpc3RJdGVtIHsNCiAgICAgIGNvbnN0cnVjdG9yKGluaXQpIHsNCiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpOw0KICAgICAgICAgIHRoaXMuZmllbGRzID0gdGhpcy5maWVsZHMgfHwgbmV3IE1hcCgpOw0KICAgICAgICAgIHRoaXMudGFncyA9IHRoaXMudGFncyB8fCBuZXcgU2V0KCk7DQogICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4gfHwgW107DQogICAgICAgICAgdGhpcy5saW5rcyA9IHRoaXMubGlua3MgfHwgW107DQogICAgICB9DQogICAgICBpZCgpIHsNCiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5maWxlKCkucGF0aH0tJHt0aGlzLmxpbmV9YDsNCiAgICAgIH0NCiAgICAgIGZpbGUoKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMubGluay50b0ZpbGUoKTsNCiAgICAgIH0NCiAgICAgIG1hcmtkb3duKCkgew0KICAgICAgICAgIGlmICh0aGlzLnRhc2spDQogICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnN5bWJvbH0gWyR7dGhpcy50YXNrLmNvbXBsZXRlZCA/ICJ4IiA6ICIgIn1dICR7dGhpcy50ZXh0fWA7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5zeW1ib2x9ICR7dGhpcy50ZXh0fWA7DQogICAgICB9DQogICAgICBjcmVhdGVkKCkgew0KICAgICAgICAgIHZhciBfYSwgX2IsIF9jOw0KICAgICAgICAgIHJldHVybiAoX2MgPSAoKF9iID0gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJjcmVhdGVkIikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuZmllbGRzLmdldCgiY3RpbWUiKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJjZGF5IikpKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbMF07DQogICAgICB9DQogICAgICBkdWUoKSB7DQogICAgICAgICAgdmFyIF9hLCBfYiwgX2M7DQogICAgICAgICAgcmV0dXJuIChfYyA9ICgoX2IgPSAoX2EgPSB0aGlzLmZpZWxkcy5nZXQoImR1ZSIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmZpZWxkcy5nZXQoImR1ZXRpbWUiKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJkdWVkYXkiKSkpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1swXTsNCiAgICAgIH0NCiAgICAgIGNvbXBsZXRlZCgpIHsNCiAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7DQogICAgICAgICAgcmV0dXJuIChfZCA9ICgoX2MgPSAoX2IgPSAoX2EgPSB0aGlzLmZpZWxkcy5nZXQoImNvbXBsZXRlZCIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmZpZWxkcy5nZXQoImNvbXBsZXRpb24iKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJjb21wdGltZSIpKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiB0aGlzLmZpZWxkcy5nZXQoImNvbXBkYXkiKSkpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZFswXTsNCiAgICAgIH0NCiAgICAgIHN0YXJ0KCkgew0KICAgICAgICAgIHZhciBfYTsNCiAgICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJzdGFydCIpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF07DQogICAgICB9DQogICAgICBzY2hlZHVsZWQoKSB7DQogICAgICAgICAgdmFyIF9hOw0KICAgICAgICAgIHJldHVybiAoX2EgPSB0aGlzLmZpZWxkcy5nZXQoInNjaGVkdWxlZCIpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF07DQogICAgICB9DQogICAgICAvKiogQ3JlYXRlIGFuIEFQSS1mcmllbmRseSBjb3B5IG9mIHRoaXMgbGlzdCBpdGVtLiBEZS1kdXBsaWNhdGlvbiBpcyBkb25lIHZpYSB0aGUgcHJvdmlkZWQgY2FjaGUuICovDQogICAgICBzZXJpYWxpemUoY2FjaGUpIHsNCiAgICAgICAgICAvLyBNYXAgY2hpbGRyZW4gdG8gdGhlaXIgc2VyaWFsaXplZC9kZS1kdXBsaWNhdGVkIGVxdWl2YWxlbnRzIHJpZ2h0IGF3YXkuDQogICAgICAgICAgbGV0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5tYXAobCA9PiBjYWNoZS5nZXQobCkpLmZpbHRlcigobCkgPT4gbCAhPT0gdW5kZWZpbmVkKTsNCiAgICAgICAgICBsZXQgcmVzdWx0ID0gew0KICAgICAgICAgICAgICBzeW1ib2w6IHRoaXMuc3ltYm9sLA0KICAgICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmssDQogICAgICAgICAgICAgIHNlY3Rpb246IHRoaXMuc2VjdGlvbiwNCiAgICAgICAgICAgICAgdGV4dDogdGhpcy50ZXh0LA0KICAgICAgICAgICAgICB0YWdzOiBBcnJheS5mcm9tKHRoaXMudGFncyksDQogICAgICAgICAgICAgIGxpbmU6IHRoaXMubGluZSwNCiAgICAgICAgICAgICAgbGluZUNvdW50OiB0aGlzLmxpbmVDb3VudCwNCiAgICAgICAgICAgICAgbGlzdDogdGhpcy5saXN0LA0KICAgICAgICAgICAgICBvdXRsaW5rczogQXJyYXkuZnJvbSh0aGlzLmxpbmtzKSwNCiAgICAgICAgICAgICAgcGF0aDogdGhpcy5saW5rLnBhdGgsDQogICAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiwNCiAgICAgICAgICAgICAgdGFzazogISF0aGlzLnRhc2ssDQogICAgICAgICAgICAgIGFubm90YXRlZDogdGhpcy5maWVsZHMuc2l6ZSA+IDAsDQogICAgICAgICAgICAgIHBvc2l0aW9uOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5wb3NpdGlvbiksDQogICAgICAgICAgICAgIHN1YnRhc2tzOiBjaGlsZHJlbiwNCiAgICAgICAgICAgICAgcmVhbDogISF0aGlzLnRhc2ssDQogICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5zZWN0aW9uLCAvLyBAZGVwcmVjYXRlZCwgdXNlICdpdGVtLnNlY3Rpb24nIGluc3RlYWQuDQogICAgICAgICAgfTsNCiAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgfHwgdGhpcy5wYXJlbnQgPT09IDApDQogICAgICAgICAgICAgIHJlc3VsdC5wYXJlbnQgPSB0aGlzLnBhcmVudDsNCiAgICAgICAgICBpZiAodGhpcy5ibG9ja0lkKQ0KICAgICAgICAgICAgICByZXN1bHQuYmxvY2tJZCA9IHRoaXMuYmxvY2tJZDsNCiAgICAgICAgICBhZGRGaWVsZHModGhpcy5maWVsZHMsIHJlc3VsdCk7DQogICAgICAgICAgaWYgKHRoaXMudGFzaykgew0KICAgICAgICAgICAgICByZXN1bHQuc3RhdHVzID0gdGhpcy50YXNrLnN0YXR1czsNCiAgICAgICAgICAgICAgcmVzdWx0LmNoZWNrZWQgPSB0aGlzLnRhc2suY2hlY2tlZDsNCiAgICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRlZCA9IHRoaXMudGFzay5jb21wbGV0ZWQ7DQogICAgICAgICAgICAgIHJlc3VsdC5mdWxseUNvbXBsZXRlZCA9IHRoaXMudGFzay5mdWxseUNvbXBsZXRlZDsNCiAgICAgICAgICAgICAgbGV0IGNyZWF0ZWQgPSB0aGlzLmNyZWF0ZWQoKSwgZHVlID0gdGhpcy5kdWUoKSwgY29tcGxldGVkID0gdGhpcy5jb21wbGV0ZWQoKSwgc3RhcnQgPSB0aGlzLnN0YXJ0KCksIHNjaGVkdWxlZCA9IHRoaXMuc2NoZWR1bGVkKCk7DQogICAgICAgICAgICAgIGlmIChjcmVhdGVkKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0LmNyZWF0ZWQgPSBWYWx1ZXMuZGVlcENvcHkoY3JlYXRlZCk7DQogICAgICAgICAgICAgIGlmIChkdWUpDQogICAgICAgICAgICAgICAgICByZXN1bHQuZHVlID0gVmFsdWVzLmRlZXBDb3B5KGR1ZSk7DQogICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQpDQogICAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGlvbiA9IFZhbHVlcy5kZWVwQ29weShjb21wbGV0ZWQpOw0KICAgICAgICAgICAgICBpZiAoc3RhcnQpDQogICAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBWYWx1ZXMuZGVlcENvcHkoc3RhcnQpOw0KICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVkKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0LnNjaGVkdWxlZCA9IFZhbHVlcy5kZWVwQ29weShzY2hlZHVsZWQpOw0KICAgICAgICAgIH0NCiAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgfQ0KICB9DQogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAvLyBDb252ZXJzaW9uIC8gU2VyaWFsaXphdGlvbiBVdGlsaXRpZXMgLy8NCiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogIC8qKiBEZS1kdXBsaWNhdGVzIGxpc3QgaXRlbXMgYWNyb3NzIHNlY3Rpb24gbWV0YWRhdGEgYW5kIHBhZ2UgbWV0YWRhdGEuICovDQogIGNsYXNzIExpc3RTZXJpYWxpemF0aW9uQ2FjaGUgew0KICAgICAgY29uc3RydWN0b3IobGlzdEl0ZW1zKSB7DQogICAgICAgICAgdGhpcy5saXN0SXRlbXMgPSB7fTsNCiAgICAgICAgICB0aGlzLmNhY2hlID0ge307DQogICAgICAgICAgdGhpcy5zZWVuID0gbmV3IFNldCgpOw0KICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbGlzdEl0ZW1zKQ0KICAgICAgICAgICAgICB0aGlzLmxpc3RJdGVtc1tpdGVtLmxpbmVdID0gaXRlbTsNCiAgICAgIH0NCiAgICAgIGdldChsaW5lbm8pIHsNCiAgICAgICAgICBpZiAobGluZW5vIGluIHRoaXMuY2FjaGUpDQogICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlW2xpbmVub107DQogICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWVuLmhhcyhsaW5lbm8pKSB7DQogICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEYXRhdmlldzogRW5jb3VudGVyZWQgYSBjaXJjdWxhciBsaXN0IChsaW5lIG51bWJlciAke2xpbmVub307IGNoaWxkcmVuICR7dGhpcy5saXN0SXRlbXNbbGluZW5vXS5jaGlsZHJlbi5qb2luKCIsICIpfSlgKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgICB9DQogICAgICAgICAgdGhpcy5zZWVuLmFkZChsaW5lbm8pOw0KICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmxpc3RJdGVtc1tsaW5lbm9dLnNlcmlhbGl6ZSh0aGlzKTsNCiAgICAgICAgICB0aGlzLmNhY2hlW2xpbmVub10gPSByZXN1bHQ7DQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgIH0NCiAgfQ0KICBmdW5jdGlvbiBhZGRGaWVsZHMoZmllbGRzLCB0YXJnZXQpIHsNCiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlc10gb2YgZmllbGRzLmVudHJpZXMoKSkgew0KICAgICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0KQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlcy5sZW5ndGggPT0gMSA/IHZhbHVlc1swXSA6IHZhbHVlczsNCiAgICAgIH0NCiAgICAgIHJldHVybiB0YXJnZXQ7DQogIH0KCiAgLyoqIENvbW1vbiB1dGlsaXRpZXMgZm9yIGV4dHJhY3RpbmcgdGFncywgbGlua3MsIGFuZCBvdGhlciBidXNpbmVzcyBmcm9tIG1ldGFkYXRhLiAqLw0KICBjb25zdCBQT1RFTlRJQUxfVEFHX01BVENIRVIgPSAvI1teXHMsO1wuOiFcPyciYCgpXFtcXVx7XH1dKy9naXU7DQogIC8qKiBFeHRyYWN0IGFsbCB0YWdzIGZyb20gdGhlIGdpdmVuIHNvdXJjZSBzdHJpbmcuICovDQogIGZ1bmN0aW9uIGV4dHJhY3RUYWdzJDEoc291cmNlKSB7DQogICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOw0KICAgICAgbGV0IG1hdGNoZXMgPSBzb3VyY2UubWF0Y2hBbGwoUE9URU5USUFMX1RBR19NQVRDSEVSKTsNCiAgICAgIGZvciAobGV0IG1hdGNoIG9mIG1hdGNoZXMpIHsNCiAgICAgICAgICBsZXQgcGFyc2VkID0gRVhQUkVTU0lPTi50YWcucGFyc2UobWF0Y2hbMF0pOw0KICAgICAgICAgIGlmIChwYXJzZWQuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXN1bHQuYWRkKHBhcnNlZC52YWx1ZSk7DQogICAgICB9DQogICAgICByZXR1cm4gcmVzdWx0Ow0KICB9CgogIC8qKiBJbXBvcnRlciBmb3IgbWFya2Rvd24gZG9jdW1lbnRzLiAqLw0KICAvKiogRXh0cmFjdCBtYXJrZG93biBtZXRhZGF0YSBmcm9tIHRoZSBnaXZlbiBPYnNpZGlhbiBtYXJrZG93biBmaWxlLiAqLw0KICBmdW5jdGlvbiBwYXJzZVBhZ2UocGF0aCwgY29udGVudHMsIHN0YXQsIG1ldGFkYXRhKSB7DQogICAgICBsZXQgdGFncyA9IG5ldyBTZXQoKTsNCiAgICAgIGxldCBhbGlhc2VzID0gbmV3IFNldCgpOw0KICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsNCiAgICAgIGxldCBsaW5rcyA9IFtdOw0KICAgICAgLy8gRmlsZSB0YWdzLCBpbmNsdWRpbmcgZnJvbnQtbWF0dGVyIGFuZCBpbi1maWxlIHRhZ3MuDQogICAgICAobWV0YWRhdGEudGFncyB8fCBbXSkuZm9yRWFjaCh0ID0+IHRhZ3MuYWRkKHQudGFnLnN0YXJ0c1dpdGgoIiMiKSA/IHQudGFnIDogIiMiICsgdC50YWcpKTsNCiAgICAgIC8vIEZyb250LW1hdHRlciBmaWxlIHRhZ3MsIGFsaWFzZXMsIEFORCBmcm9udG1hdHRlciBwcm9wZXJ0aWVzLg0KICAgICAgaWYgKG1ldGFkYXRhLmZyb250bWF0dGVyKSB7DQogICAgICAgICAgZm9yIChsZXQgdGFnIG9mIGV4dHJhY3RUYWdzKG1ldGFkYXRhLmZyb250bWF0dGVyKSkgew0KICAgICAgICAgICAgICBpZiAoIXRhZy5zdGFydHNXaXRoKCIjIikpDQogICAgICAgICAgICAgICAgICB0YWcgPSAiIyIgKyB0YWc7DQogICAgICAgICAgICAgIHRhZ3MuYWRkKHRhZyk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGZvciAobGV0IGFsaWFzIG9mIGV4dHJhY3RBbGlhc2VzKG1ldGFkYXRhLmZyb250bWF0dGVyKSB8fCBbXSkNCiAgICAgICAgICAgICAgYWxpYXNlcy5hZGQoYWxpYXMpOw0KICAgICAgICAgIGxldCBmcm9udEZpZWxkcyA9IHBhcnNlRnJvbnRtYXR0ZXIobWV0YWRhdGEuZnJvbnRtYXR0ZXIpOw0KICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmcm9udEZpZWxkcykpIHsNCiAgICAgICAgICAgICAgaWYgKGtleSA9PSAicG9zaXRpb24iKQ0KICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgIGFkZElubGluZUZpZWxkKGtleSwgdmFsdWUsIGZpZWxkcyk7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgLy8gTGlua3MgaW4gbWV0YWRhdGEuDQogICAgICBjb25zdCBsaW5rc0J5TGluZSA9IHt9Ow0KICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5saW5rcyB8fCBbXSkgew0KICAgICAgICAgIGNvbnN0IGxpbmsgPSBMaW5rLmluZmVyKHJhd0xpbmsubGluaywgZmFsc2UsIHJhd0xpbmsuZGlzcGxheVRleHQpOw0KICAgICAgICAgIGNvbnN0IGxpbmUgPSByYXdMaW5rLnBvc2l0aW9uLnN0YXJ0LmxpbmU7DQogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsNCiAgICAgICAgICBpZiAoIShsaW5lIGluIGxpbmtzQnlMaW5lKSkNCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICBsaW5rc0J5TGluZVtsaW5lXS5wdXNoKGxpbmspOw0KICAgICAgfQ0KICAgICAgLy8gRW1iZWQgTGlua3MgaW4gbWV0YWRhdGEuDQogICAgICBmb3IgKGxldCByYXdFbWJlZCBvZiBtZXRhZGF0YS5lbWJlZHMgfHwgW10pIHsNCiAgICAgICAgICBjb25zdCBsaW5rID0gTGluay5pbmZlcihyYXdFbWJlZC5saW5rLCB0cnVlLCByYXdFbWJlZC5kaXNwbGF5VGV4dCk7DQogICAgICAgICAgY29uc3QgbGluZSA9IHJhd0VtYmVkLnBvc2l0aW9uLnN0YXJ0LmxpbmU7DQogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsNCiAgICAgICAgICBpZiAoIShsaW5lIGluIGxpbmtzQnlMaW5lKSkNCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICBsaW5rc0J5TGluZVtsaW5lXS5wdXNoKGxpbmspOw0KICAgICAgfQ0KICAgICAgLy8gTWVyZ2UgZnJvbnRtYXR0ZXIgZmllbGRzIHdpdGggcGFyc2VkIGZpZWxkcy4NCiAgICAgIGxldCBtYXJrZG93bkRhdGEgPSBwYXJzZU1hcmtkb3duKHBhdGgsIGNvbnRlbnRzLnNwbGl0KCJcbiIpLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpOw0KICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhmaWVsZHMsIG1hcmtkb3duRGF0YS5maWVsZHMpOw0KICAgICAgLy8gU3RyaXAgInBvc2l0aW9uIiBmcm9tIGZyb250bWF0dGVyIHNpbmNlIGl0IGlzIE9ic2lkaWFuIGRldGVybWluZWQuDQogICAgICBjb25zdCBmcm9udG1hdHRlciA9IG1ldGFkYXRhLmZyb250bWF0dGVyIHx8IHt9Ow0KICAgICAgaWYgKGZyb250bWF0dGVyICYmICJwb3NpdGlvbiIgaW4gZnJvbnRtYXR0ZXIpDQogICAgICAgICAgZGVsZXRlIGZyb250bWF0dGVyWyJwb3NpdGlvbiJdOw0KICAgICAgcmV0dXJuIG5ldyBQYWdlTWV0YWRhdGEocGF0aCwgew0KICAgICAgICAgIHRhZ3MsDQogICAgICAgICAgYWxpYXNlcywNCiAgICAgICAgICBsaW5rcywNCiAgICAgICAgICBsaXN0czogbWFya2Rvd25EYXRhLmxpc3RzLA0KICAgICAgICAgIGZpZWxkczogZmluYWxpemVJbmxpbmVGaWVsZHMoZmllbGRzKSwNCiAgICAgICAgICBmcm9udG1hdHRlcjogZnJvbnRtYXR0ZXIsDQogICAgICAgICAgY3RpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5jdGltZSksDQogICAgICAgICAgbXRpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5tdGltZSksDQogICAgICAgICAgc2l6ZTogc3RhdC5zaXplLA0KICAgICAgICAgIGRheTogZmluZERhdGUocGF0aCwgZmllbGRzKSwNCiAgICAgIH0pOw0KICB9DQogIC8qKiBFeHRyYWN0IHRhZ3MgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICovDQogIGZ1bmN0aW9uIGV4dHJhY3RUYWdzKG1ldGFkYXRhKSB7DQogICAgICBsZXQgdGFnS2V5cyA9IE9iamVjdC5rZXlzKG1ldGFkYXRhKS5maWx0ZXIodCA9PiB0LnRvTG93ZXJDYXNlKCkgPT0gInRhZ3MiIHx8IHQudG9Mb3dlckNhc2UoKSA9PSAidGFnIik7DQogICAgICByZXR1cm4gdGFnS2V5cw0KICAgICAgICAgIC5tYXAoayA9PiBzcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyhtZXRhZGF0YVtrXSwgL1ssXHNdKy8pKQ0KICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAuY29uY2F0KGMpLCBbXSkNCiAgICAgICAgICAubWFwKHN0ciA9PiAoc3RyLnN0YXJ0c1dpdGgoIiMiKSA/IHN0ciA6ICIjIiArIHN0cikpOw0KICB9DQogIC8qKiBFeHRyYWN0IGFsaWFzZXMgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICAqLw0KICBmdW5jdGlvbiBleHRyYWN0QWxpYXNlcyhtZXRhZGF0YSkgew0KICAgICAgbGV0IGFsaWFzS2V5cyA9IE9iamVjdC5rZXlzKG1ldGFkYXRhKS5maWx0ZXIodCA9PiB0LnRvTG93ZXJDYXNlKCkgPT0gImFsaWFzIiB8fCB0LnRvTG93ZXJDYXNlKCkgPT0gImFsaWFzZXMiKTsNCiAgICAgIGNvbnN0IHJlc3VsdCA9IFtdOw0KICAgICAgZm9yIChsZXQga2V5IG9mIGFsaWFzS2V5cykgew0KICAgICAgICAgIGNvbnN0IHZhbHVlID0gbWV0YWRhdGFba2V5XTsNCiAgICAgICAgICBpZiAoIXZhbHVlKQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpDQogICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnZhbHVlLm1hcCh2ID0+ICgiIiArIHYpLnRyaW0oKSkpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uc3BsaXRGcm9udG1hdHRlclRhZ09yQWxpYXModmFsdWUsIC8sLykpOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgfQ0KICAvKiogU3BsaXQgYSBmcm9udG1hdHRlciBsaXN0IGludG8gc2VwYXJhdGUgZWxlbWVudHM7IGhhbmRsZXMgYWN0dWFsIGxpc3RzLCBjb21tYSBzZXBhcmF0ZWQgbGlzdHMsIGFuZCBzaW5nbGUgZWxlbWVudHMuICovDQogIGZ1bmN0aW9uIHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKGRhdGEsIG9uKSB7DQogICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkKQ0KICAgICAgICAgIHJldHVybiBbXTsNCiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7DQogICAgICAgICAgcmV0dXJuIGRhdGENCiAgICAgICAgICAgICAgLmZpbHRlcihzID0+ICEhcykNCiAgICAgICAgICAgICAgLm1hcChzID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKHMsIG9uKSkNCiAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcC5jb25jYXQoYyksIFtdKTsNCiAgICAgIH0NCiAgICAgIC8vIEZvcmNlIHRvIGEgc3RyaW5nIHRvIGhhbmRsZSBudW1iZXJzIGFuZCBzbyBvbi4NCiAgICAgIHJldHVybiAoIiIgKyBkYXRhKQ0KICAgICAgICAgIC5zcGxpdChvbikNCiAgICAgICAgICAuZmlsdGVyKHQgPT4gISF0KQ0KICAgICAgICAgIC5tYXAodCA9PiB0LnRyaW0oKSkNCiAgICAgICAgICAuZmlsdGVyKHQgPT4gdC5sZW5ndGggPiAwKTsNCiAgfQ0KICAvKiogUGFyc2UgcmF3IChuZXdsaW5lLWRlbGltaXRlZCkgbWFya2Rvd24sIHJldHVybmluZyBpbmxpbmUgZmllbGRzLCBsaXN0IGl0ZW1zLCBhbmQgb3RoZXIgbWV0YWRhdGEuICovDQogIGZ1bmN0aW9uIHBhcnNlTWFya2Rvd24ocGF0aCwgY29udGVudHMsIG1ldGFkYXRhLCBsaW5rc0J5TGluZSkgew0KICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsNCiAgICAgIC8vIEV4dHJhY3QgdGFzayBkYXRhIGFuZCBhcHBlbmQgdGhlIGdsb2JhbCBkYXRhIGV4dHJhY3RlZCBmcm9tIHRoZW0gdG8gb3VyIGZpZWxkcy4NCiAgICAgIGxldCBbbGlzdHMsIGV4dHJhRGF0YV0gPSBwYXJzZUxpc3RzKHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpOw0KICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVzXSBvZiBleHRyYURhdGEuZW50cmllcygpKSB7DQogICAgICAgICAgaWYgKCFmaWVsZHMuaGFzKGtleSkpDQogICAgICAgICAgICAgIGZpZWxkcy5zZXQoa2V5LCB2YWx1ZXMpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgZmllbGRzLnNldChrZXksIGZpZWxkcy5nZXQoa2V5KS5jb25jYXQodmFsdWVzKSk7DQogICAgICB9DQogICAgICAvLyBUaGUgT2JzaWRpYW4gbWV0YWRhdGEgY2FjaGUgd2lsbCB0cmFjayBsaXN0IGVsZW1lbnRzIGluc2lkZSBvZiBvdGhlciBlbGVtZW50IGdyb3VwcyAobGlrZSBhbm5vdGF0aW9ucyBhbmQNCiAgICAgIC8vIGNhbGxvdXRzKS4uLiB0aGlzIG1lYW5zIHdlIG1pZ2h0IHNlZSBtZXRhZGF0YSB0d2ljZSwgc28gc2tpcCB0aGVtIG5vdy4gVmVyeSBhbm5veWluZy4NCiAgICAgIGNvbnN0IGxpc3RMaW5lc1RvU2tpcCA9IG5ldyBTZXQoKTsNCiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaXN0cykgew0KICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZS5saW5lQ291bnQ7IGkrKykNCiAgICAgICAgICAgICAgbGlzdExpbmVzVG9Ta2lwLmFkZChsaW5lLmxpbmUgKyBpKTsNCiAgICAgIH0NCiAgICAgIC8vIE9ubHkgcGFyc2UgaGVhZGluZyBhbmQgcGFyYWdyYXBoIGVsZW1lbnRzIGZvciBpbmxpbmUgZmllbGRzOyB3ZSB3aWxsIHBhcnNlIGxpc3QgbWV0YWRhdGEgc2VwYXJhdGVseS4NCiAgICAgIGZvciAobGV0IHNlY3Rpb24gb2YgbWV0YWRhdGEuc2VjdGlvbnMgfHwgW10pIHsNCiAgICAgICAgICBpZiAoc2VjdGlvbi50eXBlID09ICJsaXN0IiB8fCBzZWN0aW9uLnR5cGUgPT0gInJ1bGluZyIpDQogICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIGZvciAobGV0IGxpbmVubyA9IHNlY3Rpb24ucG9zaXRpb24uc3RhcnQubGluZTsgbGluZW5vIDw9IHNlY3Rpb24ucG9zaXRpb24uZW5kLmxpbmU7IGxpbmVubysrKSB7DQogICAgICAgICAgICAgIGxldCBsaW5lID0gY29udGVudHNbbGluZW5vXTsNCiAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gdW5kZWZpbmVkIHx8IGxpbmUgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICBpZiAobGlzdExpbmVzVG9Ta2lwLmhhcyhsaW5lbm8pKQ0KICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgIC8vIEZhc3QgYmFpbC1vdXQgZm9yIGxpbmVzIHRoYXQgYXJlIHRvbyBsb25nIG9yIGRvIG5vdCBjb250YWluICc6OicuDQogICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA+IDMyNzY4IHx8ICFsaW5lLmluY2x1ZGVzKCI6OiIpKQ0KICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnRyaW0oKTsNCiAgICAgICAgICAgICAgbGV0IGlubGluZUZpZWxkcyA9IGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZSk7DQogICAgICAgICAgICAgIGlmIChpbmxpbmVGaWVsZHMubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaWZpZWxkIG9mIGlubGluZUZpZWxkcykNCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChpZmllbGQsIGZpZWxkcyk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZChsaW5lKTsNCiAgICAgICAgICAgICAgICAgIGlmIChmdWxsTGluZSkNCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChmdWxsTGluZSwgZmllbGRzKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIHJldHVybiB7IGZpZWxkcywgbGlzdHMgfTsNCiAgfQ0KICAvLyBUT0RPOiBDb25zaWRlciB1c2luZyBhbiBhY3R1YWwgcGFyc2VyIGluIGxlaXUgb2YgYSBtb3JlIGV4cGVuc2l2ZSByZWdleC4NCiAgY29uc3QgTElTVF9JVEVNX1JFR0VYID0gL15bXHM+XSooXGQrXC58XGQrXCl8XCp8LXxcKylccyooXFsuezAsMX1cXSk/XHMqKC4qKSQvbXU7DQogIC8qKg0KICAgKiBQYXJzZSBsaXN0IGl0ZW1zIGZyb20gdGhlIHBhZ2UgKyBtZXRhZGF0YS4gVGhpcyByZXF1aXJlcyBzb21lIGFkZGl0aW9uYWwgcGFyc2luZyBhYm92ZSB3aGF0ZXZlciBPYnNpZGlhbiBwcm92aWRlcywNCiAgICogc2luY2UgT2JzaWRpYW4gb25seSBnaXZlcyBsaW5lIG51bWJlcnMuDQogICAqLw0KICBmdW5jdGlvbiBwYXJzZUxpc3RzKHBhdGgsIGNvbnRlbnQsIG1ldGFkYXRhLCBsaW5rc0J5TGluZSkgew0KICAgICAgdmFyIF9hOw0KICAgICAgbGV0IGNhY2hlID0ge307DQogICAgICAvLyBQbGFjZSBhbGwgb2YgdGhlIHZhbHVlcyBpbiB0aGUgY2FjaGUgYmVmb3JlIHJlc29sdmluZyBjaGlsZHJlbiAmIG1ldGFkYXRhIHJlbGF0aW9uc2hpcHMuDQogICAgICBmb3IgKGxldCByYXdFbGVtZW50IG9mIG1ldGFkYXRhLmxpc3RJdGVtcyB8fCBbXSkgew0KICAgICAgICAgIC8vIE1hdGNoIG9uIHRoZSBmaXJzdCBsaW5lIHRvIGdldCB0aGUgc3ltYm9sIGFuZCBmaXJzdCBsaW5lIG9mIHRleHQuDQogICAgICAgICAgbGV0IHJhd01hdGNoID0gTElTVF9JVEVNX1JFR0VYLmV4ZWMoY29udGVudFtyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmVdKTsNCiAgICAgICAgICBpZiAoIXJhd01hdGNoKQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAvLyBBbmQgdGhlbiBzdHJpcCB1bm5lY2Vzc2FyeSBzcGFjaW5nIGZyb20gdGhlIHJlbWFpbmluZyBsaW5lcy4NCiAgICAgICAgICBsZXQgdGV4dFBhcnRzID0gW3Jhd01hdGNoWzNdXQ0KICAgICAgICAgICAgICAuY29uY2F0KGNvbnRlbnQuc2xpY2UocmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwgcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSArIDEpKQ0KICAgICAgICAgICAgICAubWFwKHQgPT4gdC50cmltKCkpOw0KICAgICAgICAgIGxldCB0ZXh0V2l0aE5ld2xpbmUgPSB0ZXh0UGFydHMuam9pbigiXG4iKTsNCiAgICAgICAgICBsZXQgdGV4dE5vTmV3bGluZSA9IHRleHRQYXJ0cy5qb2luKCIgIik7DQogICAgICAgICAgLy8gRmluZCB0aGUgbGlzdCB0aGF0IHdlIGFyZSBhIHBhcnQgb2YgYnkgbGluZS4NCiAgICAgICAgICBsZXQgY29udGFpbmluZ0xpc3RJZCA9IChtZXRhZGF0YS5zZWN0aW9ucyB8fCBbXSkuZmluZEluZGV4KHMgPT4gcy50eXBlID09ICJsaXN0IiAmJg0KICAgICAgICAgICAgICBzLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPD0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICYmDQogICAgICAgICAgICAgIHMucG9zaXRpb24uZW5kLmxpbmUgPj0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lKTsNCiAgICAgICAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIHdlIGJlbG9uZyB0byBhcyB3ZWxsLg0KICAgICAgICAgIGxldCBzZWN0aW9uTmFtZSA9IGZpbmRQcmV2aW91c0hlYWRlcihyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsIG1ldGFkYXRhLmhlYWRpbmdzIHx8IFtdKTsNCiAgICAgICAgICBsZXQgc2VjdGlvbkxpbmsgPSBzZWN0aW9uTmFtZSA9PT0gdW5kZWZpbmVkID8gTGluay5maWxlKHBhdGgpIDogTGluay5oZWFkZXIocGF0aCwgc2VjdGlvbk5hbWUpOw0KICAgICAgICAgIGxldCBjbG9zZXN0TGluayA9IHJhd0VsZW1lbnQuaWQgPT09IHVuZGVmaW5lZCA/IHNlY3Rpb25MaW5rIDogTGluay5ibG9jayhwYXRoLCByYXdFbGVtZW50LmlkKTsNCiAgICAgICAgICAvLyBHYXRoZXIgYW55IGxpbmtzIHRoYXQgb2NjdXIgb24gdGhlIHNhbWUgbGluZXMgYXMgdGhlIHRhc2suDQogICAgICAgICAgY29uc3QgbGlua3MgPSBbXTsNCiAgICAgICAgICBmb3IgKGxldCBsaW5lID0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lOyBsaW5lIDw9IHJhd0VsZW1lbnQucG9zaXRpb24uZW5kLmxpbmU7IGxpbmUrKykgew0KICAgICAgICAgICAgICBpZiAobGlua3NCeUxpbmVbbGluZV0pDQogICAgICAgICAgICAgICAgICBsaW5rcy5wdXNoKC4uLmxpbmtzQnlMaW5lW2xpbmVdKTsNCiAgICAgICAgICB9DQogICAgICAgICAgLy8gQ29uc3RydWN0IHVuaXZlcnNhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVsZW1lbnQgKGJlZm9yZSB0YXNrcykuDQogICAgICAgICAgbGV0IGl0ZW0gPSBuZXcgTGlzdEl0ZW0oew0KICAgICAgICAgICAgICBzeW1ib2w6IHJhd01hdGNoWzFdLA0KICAgICAgICAgICAgICBsaW5rOiBjbG9zZXN0TGluaywNCiAgICAgICAgICAgICAgbGlua3M6IGxpbmtzLA0KICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uTGluaywNCiAgICAgICAgICAgICAgdGV4dDogdGV4dFdpdGhOZXdsaW5lLA0KICAgICAgICAgICAgICB0YWdzOiBleHRyYWN0VGFncyQxKHRleHROb05ld2xpbmUpLA0KICAgICAgICAgICAgICBsaW5lOiByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsDQogICAgICAgICAgICAgIGxpbmVDb3VudDogcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSAtIHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSArIDEsDQogICAgICAgICAgICAgIGxpc3Q6IGNvbnRhaW5pbmdMaXN0SWQgPT0gLTEgPyAtMSA6IChtZXRhZGF0YS5zZWN0aW9ucyB8fCBbXSlbY29udGFpbmluZ0xpc3RJZF0ucG9zaXRpb24uc3RhcnQubGluZSwNCiAgICAgICAgICAgICAgcG9zaXRpb246IHJhd0VsZW1lbnQucG9zaXRpb24sDQogICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSwNCiAgICAgICAgICAgICAgYmxvY2tJZDogcmF3RWxlbWVudC5pZCwNCiAgICAgICAgICB9KTsNCiAgICAgICAgICBpZiAocmF3RWxlbWVudC5wYXJlbnQgPj0gMCAmJiByYXdFbGVtZW50LnBhcmVudCAhPSBpdGVtLmxpbmUpDQogICAgICAgICAgICAgIGl0ZW0ucGFyZW50ID0gcmF3RWxlbWVudC5wYXJlbnQ7DQogICAgICAgICAgLy8gU2V0IHVwIHRoZSBiYXNpYyB0YXNrIGluZm9ybWF0aW9uIGZvciBub3csIHRob3VnaCB3ZSBoYXZlIHRvIHJlY29tcHV0ZSBgZnVsbHlDb21wdXRlZGAgbGF0ZXIuDQogICAgICAgICAgaWYgKHJhd0VsZW1lbnQudGFzaykgew0KICAgICAgICAgICAgICBpdGVtLnRhc2sgPSB7DQogICAgICAgICAgICAgICAgICBzdGF0dXM6IHJhd0VsZW1lbnQudGFzaywNCiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IHJhd0VsZW1lbnQudGFzayAhPSAiIiAmJiByYXdFbGVtZW50LnRhc2sgIT0gIiAiLA0KICAgICAgICAgICAgICAgICAgY29tcGxldGVkOiByYXdFbGVtZW50LnRhc2sgPT0gIlgiIHx8IHJhd0VsZW1lbnQudGFzayA9PSAieCIsDQogICAgICAgICAgICAgICAgICBmdWxseUNvbXBsZXRlZDogcmF3RWxlbWVudC50YXNrID09ICJYIiB8fCByYXdFbGVtZW50LnRhc2sgPT0gIngiLA0KICAgICAgICAgICAgICB9Ow0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyBFeHRyYWN0IGlubGluZSBmaWVsZHM7IGV4dHJhY3QgZnVsbC1saW5lIGZpZWxkcyBvbmx5IGlmIHdlIGFyZSBOT1QgYSB0YXNrLg0KICAgICAgICAgIGl0ZW0uZmllbGRzID0gbmV3IE1hcCgpOw0KICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZXh0cmFjdElubGluZUZpZWxkcyh0ZXh0Tm9OZXdsaW5lLCB0cnVlKSkNCiAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZWxlbWVudCwgaXRlbS5maWVsZHMpOw0KICAgICAgICAgIGlmICghcmF3RWxlbWVudC50YXNrICYmIGl0ZW0uZmllbGRzLnNpemUgPT0gMCkgew0KICAgICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZCh0ZXh0Tm9OZXdsaW5lKTsNCiAgICAgICAgICAgICAgaWYgKGZ1bGxMaW5lKQ0KICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGl0ZW0uZmllbGRzKTsNCiAgICAgICAgICB9DQogICAgICAgICAgY2FjaGVbaXRlbS5saW5lXSA9IGl0ZW07DQogICAgICB9DQogICAgICAvLyBUcmVlIHVwZGF0aW5nIHBhc3Nlcy4gVXBkYXRlIGNoaWxkIGxpc3RzLiBQcm9wb2dhdGUgbWV0YWRhdGEgdXAgdG8gcGFyZW50IHRhc2tzLiBVcGRhdGUgdGFzayBgZnVsbHlDb21wbGV0ZWRgLg0KICAgICAgbGV0IGxpdGVyYWxzID0gbmV3IE1hcCgpOw0KICAgICAgZm9yIChsZXQgbGlzdEl0ZW0gb2YgT2JqZWN0LnZhbHVlcyhjYWNoZSkpIHsNCiAgICAgICAgICAvLyBQYXNzIDE6IFVwZGF0ZSBjaGlsZCBsaXN0cy4NCiAgICAgICAgICBpZiAobGlzdEl0ZW0ucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgbGlzdEl0ZW0ucGFyZW50IGluIGNhY2hlKSB7DQogICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBjYWNoZVtsaXN0SXRlbS5wYXJlbnRdOw0KICAgICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChsaXN0SXRlbS5saW5lKTsNCiAgICAgICAgICB9DQogICAgICAgICAgLy8gUGFzcyAyOiBQcm9wb2dhdGUgbWV0YWRhdGEgdXAgdG8gdGhlIHBhcmVudCB0YXNrIG9yIHJvb3QgZWxlbWVudC4NCiAgICAgICAgICBpZiAoIWxpc3RJdGVtLnRhc2spIHsNCiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhsaXRlcmFscywgbGlzdEl0ZW0uZmllbGRzKTsNCiAgICAgICAgICAgICAgLy8gVE9ETyAoYmxhY2tzbWl0aGd1KTogVGhlIGJlbG93IGNvZGUgcHJvcGVybHkgcHJvcG9nYXRlcyBtZXRhZGF0YSB1cCB0byB0aGUgbmVhcmVzdCB0YXNrLCB3aGljaCBpcyB0aGUNCiAgICAgICAgICAgICAgLy8gbW9yZSBpbnR1aXRpdmUgYmVoYXZpb3IuIEZvciBub3csIHRob3VnaCwgd2Ugd2lsbCBrZWVwIHRoZSBleGlzdGluZyBsb2dpYy4NCiAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgbGV0IHJvb3Q6IExpc3RJdGVtIHwgdW5kZWZpbmVkID0gbGlzdEl0ZW07DQogICAgICAgICAgICAgIHdoaWxlICghIXJvb3QgJiYgIXJvb3QudGFzaykgcm9vdCA9IGNhY2hlW3Jvb3QucGFyZW50ID8/IC0xXTsNCgogICAgICAgICAgICAgIC8vIElmIHRoZSByb290IGlzIG51bGwsIGFwcGVuZCB0aGlzIG1ldGFkYXRhIHRvIHRoZSByb290OyBvdGhlcndpc2UsIGFwcGVuZCB0byB0aGUgdGFzay4NCiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3Vwcyhyb290ID09PSB1bmRlZmluZWQgfHwgcm9vdCA9PSBudWxsID8gbGl0ZXJhbHMgOiByb290LmZpZWxkcywgbGlzdEl0ZW0uZmllbGRzKTsNCiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICB9DQogICAgICAgICAgLy8gUGFzcyAzOiBQcm9wb2dhdGUgYGZ1bGx5Q29tcGxldGVkYCB1cCB0aGUgdGFzayB0cmVlLiBUaGlzIGlzIGEgbGl0dGxlIGxlc3MgZWZmaWNpZW50IHRoYW4ganVzdCBkb2luZyBhIHNpbXBsZQ0KICAgICAgICAgIC8vIERGUyB1c2luZyB0aGUgY2hpbGRyZW4gSURzLCBidXQgaXQncyBwcm9iYWJseSBmaW5lLg0KICAgICAgICAgIGlmIChsaXN0SXRlbS50YXNrKSB7DQogICAgICAgICAgICAgIGxldCBjdXJyID0gbGlzdEl0ZW07DQogICAgICAgICAgICAgIHdoaWxlICghIWN1cnIpIHsNCiAgICAgICAgICAgICAgICAgIGlmIChjdXJyLnRhc2spDQogICAgICAgICAgICAgICAgICAgICAgY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkID0gY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkICYmIGxpc3RJdGVtLnRhc2suY29tcGxldGVkOw0KICAgICAgICAgICAgICAgICAgY3VyciA9IGNhY2hlWyhfYSA9IGN1cnIucGFyZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAtMV07DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gW09iamVjdC52YWx1ZXMoY2FjaGUpLCBsaXRlcmFsc107DQogIH0NCiAgLyoqIEF0dGVtcHQgdG8gZmluZCBhIGRhdGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBwYWdlIGZyb20gbWV0YWRhdGEgb3IgZmlsZW5hbWVzLiAqLw0KICBmdW5jdGlvbiBmaW5kRGF0ZShmaWxlLCBmaWVsZHMpIHsNCiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDsNCiAgICAgIGZvciAobGV0IGtleSBvZiBmaWVsZHMua2V5cygpKSB7DQogICAgICAgICAgaWYgKCEoa2V5LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gImRhdGUiIHx8IGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09ICJkYXkiKSkNCiAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgbGV0IHZhbHVlID0gZmllbGRzLmdldChrZXkpOw0KICAgICAgICAgIGlmIChWYWx1ZXMuaXNEYXRlKHZhbHVlKSkgew0KICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwICYmIFZhbHVlcy5pc0RhdGUodmFsdWVbMF0pKSB7DQogICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzTGluayh2YWx1ZSkpIHsNCiAgICAgICAgICAgICAgbGV0IGRhdGUgPSAoX2MgPSAoX2EgPSBleHRyYWN0RGF0ZSh2YWx1ZS5wYXRoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZXh0cmFjdERhdGUoKF9iID0gdmFsdWUuc3VicGF0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogIiIpKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBleHRyYWN0RGF0ZSgoX2QgPSB2YWx1ZS5kaXNwbGF5KSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAiIik7DQogICAgICAgICAgICAgIGlmIChkYXRlKQ0KICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGU7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcmV0dXJuIGV4dHJhY3REYXRlKGdldEZpbGVUaXRsZShmaWxlKSk7DQogIH0NCiAgLyoqIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgZnJvbnRtYXR0ZXIgaW50byBmaWVsZHMuIFdlIGhhdmUgdG8gZGFuY2UgYXJvdW5kIFlBTUwgc3RydWN0dXJlLiAqLw0KICBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyKHZhbHVlKSB7DQogICAgICBpZiAodmFsdWUgPT0gbnVsbCkgew0KICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAib2JqZWN0Iikgew0KICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgew0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107DQogICAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIHZhbHVlKSB7DQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXJzZUZyb250bWF0dGVyKGNoaWxkKSk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIGxldCBvYmplY3QgPSB2YWx1ZTsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9Ow0KICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gb2JqZWN0KSB7DQogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHBhcnNlRnJvbnRtYXR0ZXIob2JqZWN0W2tleV0pOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAibnVtYmVyIikgew0KICAgICAgICAgIHJldHVybiB2YWx1ZTsNCiAgICAgIH0NCiAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImJvb2xlYW4iKSB7DQogICAgICAgICAgcmV0dXJuIHZhbHVlOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAic3RyaW5nIikgew0KICAgICAgICAgIGxldCBkYXRlUGFyc2UgPSBFWFBSRVNTSU9OLmRhdGUucGFyc2UodmFsdWUpOw0KICAgICAgICAgIGlmIChkYXRlUGFyc2Uuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXR1cm4gZGF0ZVBhcnNlLnZhbHVlOw0KICAgICAgICAgIGxldCBkdXJhdGlvblBhcnNlID0gRVhQUkVTU0lPTi5kdXJhdGlvbi5wYXJzZSh2YWx1ZSk7DQogICAgICAgICAgaWYgKGR1cmF0aW9uUGFyc2Uuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXR1cm4gZHVyYXRpb25QYXJzZS52YWx1ZTsNCiAgICAgICAgICBsZXQgbGlua1BhcnNlID0gRVhQUkVTU0lPTi5lbWJlZExpbmsucGFyc2UodmFsdWUpOw0KICAgICAgICAgIGlmIChsaW5rUGFyc2Uuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXR1cm4gbGlua1BhcnNlLnZhbHVlOw0KICAgICAgICAgIHJldHVybiB2YWx1ZTsNCiAgICAgIH0NCiAgICAgIC8vIEJhY2t1cCBpZiB3ZSBkb24ndCB1bmRlcnN0YW5kIHRoZSB0eXBlLg0KICAgICAgcmV0dXJuIG51bGw7DQogIH0NCiAgLyoqIEFkZCBhIHBhcnNlZCBpbmxpbmUgZmllbGQgdG8gdGhlIG91dHB1dCBtYXAuICovDQogIGZ1bmN0aW9uIGFkZFJhd0lubGluZUZpZWxkKGZpZWxkLCBvdXRwdXQpIHsNCiAgICAgIGFkZElubGluZUZpZWxkKGZpZWxkLmtleSwgcGFyc2VJbmxpbmVWYWx1ZShmaWVsZC52YWx1ZSksIG91dHB1dCk7DQogIH0NCiAgLyoqIEFkZCBhIHJhdyBpbmxpbmUgZmllbGQgdG8gYW4gb3V0cHV0IG1hcCwgY2Fub25pY2FsaXppbmcgYXMgbmVlZGVkLiAqLw0KICBmdW5jdGlvbiBhZGRJbmxpbmVGaWVsZChrZXksIHZhbHVlLCBvdXRwdXQpIHsNCiAgICAgIHZhciBfYTsNCiAgICAgIGlmICghb3V0cHV0LmhhcyhrZXkpKQ0KICAgICAgICAgIG91dHB1dC5zZXQoa2V5LCBbdmFsdWVdKTsNCiAgICAgIGVsc2UNCiAgICAgICAgICAoX2EgPSBvdXRwdXQuZ2V0KGtleSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdXNoKHZhbHVlKTsNCiAgfQ0KICAvKiogR2l2ZW4gYSByYXcgbGlzdCBvZiBpbmxpbmUgZmllbGQgdmFsdWVzLCBhZGQgbm9ybWFsaXplZCBrZXlzIGFuZCBzcXVhc2ggdGhlbS4gKi8NCiAgZnVuY3Rpb24gZmluYWxpemVJbmxpbmVGaWVsZHMoZmllbGRzKSB7DQogICAgICAvLyBDb21wdXRlIHVuaXF1ZSBub3JtYWxpemVkIGtleXMgKHRoYXQgZG8gbm90IG92ZXJsYXAgdy8gdGhlIGZpZWxkcykuDQogICAgICBsZXQgbm9ybWFsaXplZCA9IG5ldyBNYXAoKTsNCiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlc10gb2YgZmllbGRzLmVudHJpZXMoKSkgew0KICAgICAgICAgIGxldCBub3JtS2V5ID0gY2Fub25pY2FsaXplVmFyTmFtZShrZXkpOw0KICAgICAgICAgIGlmIChub3JtS2V5ID09ICIiIHx8IGZpZWxkcy5oYXMobm9ybUtleSkpDQogICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIGlmICghbm9ybWFsaXplZC5oYXMobm9ybUtleSkpDQogICAgICAgICAgICAgIG5vcm1hbGl6ZWQuc2V0KG5vcm1LZXksIHZhbHVlcyk7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICBub3JtYWxpemVkLnNldChub3JtS2V5LCBub3JtYWxpemVkLmdldChub3JtS2V5KS5jb25jYXQodmFsdWVzKSk7DQogICAgICB9DQogICAgICAvLyBDb21iaW5lIG5vcm1hbGl6ZWQgKyBub3JtYWwga2V5cy4NCiAgICAgIGxldCBpbnRlcmltID0gbmV3IE1hcCgpOw0KICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhpbnRlcmltLCBmaWVsZHMpOw0KICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhpbnRlcmltLCBub3JtYWxpemVkKTsNCiAgICAgIC8vIEFuZCB0aGVuIGZsYXR0ZW4gdGhlbS4NCiAgICAgIGxldCByZXN1bHQgPSBuZXcgTWFwKCk7DQogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgaW50ZXJpbS5lbnRyaWVzKCkpIHsNCiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDEpDQogICAgICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCB2YWx1ZVswXSk7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUpOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgfQ0KICAvKiogQ29weSBhbGwgZmllbGRzIG9mICdzb3VyY2UnIGludG8gJ3RhcmdldCcuICovDQogIGZ1bmN0aW9uIG1lcmdlRmllbGRHcm91cHModGFyZ2V0LCBzb3VyY2UpIHsNCiAgICAgIGZvciAobGV0IGtleSBvZiBzb3VyY2Uua2V5cygpKSB7DQogICAgICAgICAgaWYgKCF0YXJnZXQuaGFzKGtleSkpDQogICAgICAgICAgICAgIHRhcmdldC5zZXQoa2V5LCBzb3VyY2UuZ2V0KGtleSkpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgdGFyZ2V0LnNldChrZXksIHRhcmdldC5nZXQoa2V5KS5jb25jYXQoc291cmNlLmdldChrZXkpKSk7DQogICAgICB9DQogIH0NCiAgLyoqIEZpbmQgdGhlIGhlYWRlciB0aGF0IGlzIG1vc3QgaW1tZWRpYXRlbHkgYWJvdmUgdGhlIGdpdmVuIGxpbmUgbnVtYmVyLiAqLw0KICBmdW5jdGlvbiBmaW5kUHJldmlvdXNIZWFkZXIobGluZSwgaGVhZGVycykgew0KICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoID09IDApDQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIGlmIChoZWFkZXJzWzBdLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPiBsaW5lKQ0KICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICBsZXQgaW5kZXggPSBoZWFkZXJzLmxlbmd0aCAtIDE7DQogICAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBoZWFkZXJzW2luZGV4XS5wb3NpdGlvbi5zdGFydC5saW5lID4gbGluZSkNCiAgICAgICAgICBpbmRleC0tOw0KICAgICAgcmV0dXJuIGhlYWRlcnNbaW5kZXhdLmhlYWRpbmc7DQogIH0KCiAgLyoqIEFjdHVhbCBpbXBvcnQgaW1wbGVtZW50YXRpb24gYmFja2VuZC4gVGhpcyBtdXN0IHJlbWFpbiBzZXBhcmF0ZSBmcm9tIGBpbXBvcnQtZW50cnlgIHNpbmNlIGl0IGlzIHVzZWQgd2l0aG91dCB3ZWIgd29ya2Vycy4gKi8NCiAgZnVuY3Rpb24gcnVuSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0cywgbWV0YWRhdGEpIHsNCiAgICAgIHJldHVybiBwYXJzZVBhZ2UocGF0aCwgY29udGVudHMsIHN0YXRzLCBtZXRhZGF0YSk7DQogIH0KCiAgLyoqIFNpbXBsaWZpZXMgcGFzc2luZyBkYXRhdmlldyB2YWx1ZXMgYWNyb3NzIHRoZSBKUyB3ZWIgd29ya2VyIGJhcnJpZXIuICovDQogIHZhciBUcmFuc2ZlcmFibGU7DQogIChmdW5jdGlvbiAoVHJhbnNmZXJhYmxlKSB7DQogICAgICAvKiogQ29udmVydCBhIGxpdGVyYWwgdmFsdWUgdG8gYSBzZXJpYWxpemVyLWZyaWVuZGx5IHRyYW5zZmVyYWJsZSB2YWx1ZS4gKi8NCiAgICAgIGZ1bmN0aW9uIHRyYW5zZmVyYWJsZSh2YWx1ZSkgew0KICAgICAgICAgIC8vIEhhbmRsZSBzaW1wbGUgdW5pdmVyc2FsIHR5cGVzIGZpcnN0Lg0KICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkgew0KICAgICAgICAgICAgICBsZXQgY29waWVkID0gbmV3IE1hcCgpOw0KICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIHZhbHVlLmVudHJpZXMoKSkNCiAgICAgICAgICAgICAgICAgIGNvcGllZC5zZXQodHJhbnNmZXJhYmxlKGtleSksIHRyYW5zZmVyYWJsZSh2YWwpKTsNCiAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBTZXQpIHsNCiAgICAgICAgICAgICAgbGV0IGNvcGllZCA9IG5ldyBTZXQoKTsNCiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIHZhbHVlKQ0KICAgICAgICAgICAgICAgICAgY29waWVkLmFkZCh0cmFuc2ZlcmFibGUodmFsKSk7DQogICAgICAgICAgICAgIHJldHVybiBjb3BpZWQ7DQogICAgICAgICAgfQ0KICAgICAgICAgIGxldCB3cmFwcGVkID0gVmFsdWVzLndyYXBWYWx1ZSh2YWx1ZSk7DQogICAgICAgICAgaWYgKHdyYXBwZWQgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCB0cmFuc2ZlcmFibGUgdmFsdWU6ICIgKyB2YWx1ZSk7DQogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsNCiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6DQogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6DQogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7DQogICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgICAgICAgICAgICAiX19fdHJhbnNmZXItdHlwZSI6ICJkYXRlIiwNCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdHJhbnNmZXJhYmxlKHdyYXBwZWQudmFsdWUudG9PYmplY3QoKSksDQogICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogew0KICAgICAgICAgICAgICAgICAgICAgICAgICB6b25lOiB3cmFwcGVkLnZhbHVlLnpvbmUuZXF1YWxzKFN5c3RlbVpvbmUuaW5zdGFuY2UpID8gdW5kZWZpbmVkIDogd3JhcHBlZC52YWx1ZS56b25lTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgIl9fX3RyYW5zZmVyLXR5cGUiOiAiZHVyYXRpb24iLCB2YWx1ZTogdHJhbnNmZXJhYmxlKHdyYXBwZWQudmFsdWUudG9PYmplY3QoKSkgfTsNCiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFwKHYgPT4gdHJhbnNmZXJhYmxlKHYpKTsNCiAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJsaW5rIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07DQogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkpDQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0cmFuc2ZlcmFibGUodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBUcmFuc2ZlcmFibGUudHJhbnNmZXJhYmxlID0gdHJhbnNmZXJhYmxlOw0KICAgICAgLyoqIENvbnZlcnQgYSB0cmFuc2ZlcmFibGUgdmFsdWUgYmFjayB0byBhIGxpdGVyYWwgdmFsdWUgd2UgY2FuIHdvcmsgd2l0aC4gKi8NCiAgICAgIGZ1bmN0aW9uIHZhbHVlKHRyYW5zZmVyYWJsZSkgew0KICAgICAgICAgIGlmICh0cmFuc2ZlcmFibGUgPT09IG51bGwpIHsNCiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZmVyYWJsZSA9PT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZmVyYWJsZSBpbnN0YW5jZW9mIE1hcCkgew0KICAgICAgICAgICAgICBsZXQgcmVhbCA9IG5ldyBNYXAoKTsNCiAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiB0cmFuc2ZlcmFibGUuZW50cmllcygpKQ0KICAgICAgICAgICAgICAgICAgcmVhbC5zZXQodmFsdWUoa2V5KSwgdmFsdWUodmFsKSk7DQogICAgICAgICAgICAgIHJldHVybiByZWFsOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgaW5zdGFuY2VvZiBTZXQpIHsNCiAgICAgICAgICAgICAgbGV0IHJlYWwgPSBuZXcgU2V0KCk7DQogICAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiB0cmFuc2ZlcmFibGUpDQogICAgICAgICAgICAgICAgICByZWFsLmFkZCh2YWx1ZSh2YWwpKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlYWw7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodHJhbnNmZXJhYmxlKSkgew0KICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlLm1hcCh2ID0+IHZhbHVlKHYpKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHRyYW5zZmVyYWJsZSA9PT0gIm9iamVjdCIpIHsNCiAgICAgICAgICAgICAgaWYgKCJfX190cmFuc2Zlci10eXBlIiBpbiB0cmFuc2ZlcmFibGUpIHsNCiAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHJhbnNmZXJhYmxlWyJfX190cmFuc2Zlci10eXBlIl0pIHsNCiAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkYXRlIjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGVPcHRzID0gdmFsdWUodHJhbnNmZXJhYmxlLm9wdGlvbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0ZURhdGEgPSB2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlRGF0YSwgeyB6b25lOiBkYXRlT3B0cy56b25lIH0pOw0KICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMaW5rLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFVucmVjb2duaXplZCB0cmFuc2ZlciB0eXBlICcke3RyYW5zZmVyYWJsZVsiX19fdHJhbnNmZXItdHlwZSJdfSdgKTsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModHJhbnNmZXJhYmxlKSkNCiAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWUodmFsKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgcmV0dXJuIHRyYW5zZmVyYWJsZTsNCiAgICAgIH0NCiAgICAgIFRyYW5zZmVyYWJsZS52YWx1ZSA9IHZhbHVlOw0KICB9KShUcmFuc2ZlcmFibGUgfHwgKFRyYW5zZmVyYWJsZSA9IHt9KSk7CgogIC8qKiBFbnRyeS1wb2ludCBzY3JpcHQgdXNlZCBieSB0aGUgaW5kZXggYXMgYSB3ZWIgd29ya2VyLiAqLw0KICAvKiogQW4gaW1wb3J0IHdoaWNoIGNhbiBmYWlsIGFuZCByYWlzZSBhbiBleGNlcHRpb24sIHdoaWNoIHdpbGwgYmUgY2F1Z2h0IGJ5IHRoZSBoYW5kbGVyLiAqLw0KICBmdW5jdGlvbiBmYWlsYWJsZUltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsNCiAgICAgIGlmIChtZXRhZGF0YSA9PT0gdW5kZWZpbmVkIHx8IG1ldGFkYXRhID09PSBudWxsKSB7DQogICAgICAgICAgdGhyb3cgRXJyb3IoYENhbm5vdCBpbmRleCBmaWxlLCBzaW5jZSBpdCBoYXMgbm8gT2JzaWRpYW4gZmlsZSBtZXRhZGF0YS5gKTsNCiAgICAgIH0NCiAgICAgIHJldHVybiBydW5JbXBvcnQocGF0aCwgY29udGVudHMsIHN0YXQsIG1ldGFkYXRhKTsNCiAgfQ0KICBvbm1lc3NhZ2UgPSBhc3luYyAoZXZ0KSA9PiB7DQogICAgICB0cnkgew0KICAgICAgICAgIGxldCB7IHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSB9ID0gZXZ0LmRhdGE7DQogICAgICAgICAgbGV0IHJlc3VsdCA9IGZhaWxhYmxlSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSk7DQogICAgICAgICAgcG9zdE1lc3NhZ2UoeyBwYXRoOiBldnQuZGF0YS5wYXRoLCByZXN1bHQ6IFRyYW5zZmVyYWJsZS50cmFuc2ZlcmFibGUocmVzdWx0KSB9KTsNCiAgICAgIH0NCiAgICAgIGNhdGNoIChlcnJvcikgew0KICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTsNCiAgICAgICAgICBwb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgIHBhdGg6IGV2dC5kYXRhLnBhdGgsDQogICAgICAgICAgICAgIHJlc3VsdDogew0KICAgICAgICAgICAgICAgICAgJGVycm9yOiBgRmFpbGVkIHRvIGluZGV4IGZpbGU6ICR7ZXZ0LmRhdGEucGF0aH06ICR7ZXJyb3J9YCwNCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICB9KTsNCiAgICAgIH0NCiAgfTsKCn0pKCk7Cgo=', null, false); +var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gdGhlc2UgYXJlbid0IHJlYWxseSBwcml2YXRlLCBidXQgbm9yIGFyZSB0aGV5IHJlYWxseSB1c2VmdWwgdG8gZG9jdW1lbnQKCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBMdXhvbkVycm9yIGV4dGVuZHMgRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3IgewogICAgY29uc3RydWN0b3IocmVhc29uKSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHsKICAgIGNvbnN0cnVjdG9yKHJlYXNvbikgewogICAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24pIHsKICAgICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3Rvcih1bml0KSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIHVuaXQgJHt1bml0fWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBab25lSXNBYnN0cmFjdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgc3VwZXIoIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3MiKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNvbnN0IG4gPSAibnVtZXJpYyIsCiAgICBzID0gInNob3J0IiwKICAgIGwgPSAibG9uZyI7CgogIGNvbnN0IERBVEVfU0hPUlQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IG4sCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRURfV0lUSF9XRUVLREFZID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBzLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogcywKICB9OwoKICBjb25zdCBEQVRFX0ZVTEwgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IGwsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9IVUdFID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICB9OwoKICBjb25zdCBUSU1FX1NJTVBMRSA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgdGltZVpvbmVOYW1lOiBzLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgY29uc3QgVElNRV8yNF9TSU1QTEUgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICBob3VyQ3ljbGU6ICJoMjMiLAogIH07CgogIGNvbnN0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogbCwKICB9OwoKICBjb25zdCBEQVRFVElNRV9TSE9SVCA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbiwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBuLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHNlY29uZDogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICB3ZWVrZGF5OiBzLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IHMsCiAgfTsKCiAgY29uc3QgREFURVRJTUVfSFVHRSA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIHdlZWtkYXk6IGwsCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgdGltZVpvbmVOYW1lOiBsLAogIH07CgogIGNvbnN0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgLyoqCiAgICogQGludGVyZmFjZQogICAqLwogIGNsYXNzIFpvbmUgewogICAgLyoqCiAgICAgKiBUaGUgdHlwZSBvZiB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB0eXBlKCkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG9mZnNldCBpcyBrbm93biB0byBiZSBmaXhlZCBmb3IgdGhlIHdob2xlIHllYXIuCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmZvcm1hdCAtIFdoYXQgc3R5bGUgb2Ygb2Zmc2V0IHRvIHJldHVybi4gQWNjZXB0cyAnbG9uZycgb3IgJ3Nob3J0Jy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIG9mZnNldE5hbWUodHMsIG9wdHMpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBvZmZzZXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHkKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC4KICAgICAqIEBhYnN0cmFjdAogICAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBvZmZzZXQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgZXF1YWwgdG8gYW5vdGhlciB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7Wm9uZX0gb3RoZXJab25lIC0gdGhlIHpvbmUgdG8gY29tcGFyZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyWm9uZSkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIHZhbGlkLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uJDEgPSBudWxsOwoKICAvKioKICAgKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGxvY2FsIHpvbmUKICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24kMSA9PT0gbnVsbCkgewogICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gInN5c3RlbSI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVW5pdmVyc2FsKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkgewogICAgICByZXR1cm4gcGFyc2Vab25lSW5mbyh0cywgZm9ybWF0LCBsb2NhbGUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHJldHVybiAtbmV3IERhdGUodHMpLmdldFRpbWV6b25lT2Zmc2V0KCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAic3lzdGVtIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgbGV0IGR0ZkNhY2hlID0ge307CiAgZnVuY3Rpb24gbWFrZURURih6b25lKSB7CiAgICBpZiAoIWR0ZkNhY2hlW3pvbmVdKSB7CiAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgIGhvdXIxMjogZmFsc2UsCiAgICAgICAgdGltZVpvbmU6IHpvbmUsCiAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgZGF5OiAiMi1kaWdpdCIsCiAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgIG1pbnV0ZTogIjItZGlnaXQiLAogICAgICAgIHNlY29uZDogIjItZGlnaXQiLAogICAgICAgIGVyYTogInNob3J0IiwKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgfQoKICBjb25zdCB0eXBlVG9Qb3MgPSB7CiAgICB5ZWFyOiAwLAogICAgbW9udGg6IDEsCiAgICBkYXk6IDIsCiAgICBlcmE6IDMsCiAgICBob3VyOiA0LAogICAgbWludXRlOiA1LAogICAgc2Vjb25kOiA2LAogIH07CgogIGZ1bmN0aW9uIGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSkgewogICAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cdTIwMEUvZywgIiIpLAogICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSAoQUR8QkMpLD8gKFxkKyk6KFxkKyk6KFxkKykvLmV4ZWMoZm9ybWF0dGVkKSwKICAgICAgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZmFkT3JCYywgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkOwogICAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07CiAgfQoKICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpOwogICAgY29uc3QgZmlsbGVkID0gW107CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV07CiAgICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgIGlmICh0eXBlID09PSAiZXJhIikgewogICAgICAgIGZpbGxlZFtwb3NdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHsKICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaWxsZWQ7CiAgfQoKICBsZXQgaWFuYVpvbmVDYWNoZSA9IHt9OwogIC8qKgogICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSUFOQVpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWUKICAgICAqIEByZXR1cm4ge0lBTkFab25lfQogICAgICovCiAgICBzdGF0aWMgY3JlYXRlKG5hbWUpIHsKICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZVtuYW1lXSA9IG5ldyBJQU5BWm9uZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gaWFuYVpvbmVDYWNoZVtuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7CiAgICAgIGlhbmFab25lQ2FjaGUgPSB7fTsKICAgICAgZHRmQ2FjaGUgPSB7fTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0cmluZyB0byBjaGVjayB2YWxpZGl0eSBvbgogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiQW1lcmljYS9OZXdfWW9yayIpIC8vPT4gdHJ1ZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiU3BvcnR+fmJsb3JwIikgLy89PiBmYWxzZQogICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSBmb3Igc29tZSB2YWxpZCBJQU5BIG5hbWVzLiBVc2UgaXNWYWxpZFpvbmUgaW5zdGVhZC4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZFpvbmUocyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHN0cmluZyBpZGVudGlmaWVzIGEgcmVhbCB6b25lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKCJBbWVyaWNhL05ld19Zb3JrIikgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZSgiRmFudGFzaWEvQ2FzdGxlIikgLy89PiBmYWxzZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkWm9uZSh6b25lKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIsIHsgdGltZVpvbmU6IHpvbmUgfSkuZm9ybWF0KCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy56b25lTmFtZSA9IG5hbWU7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpYW5hIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7CiAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSwgdGhpcy5uYW1lKTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCh0cykgewogICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpOwoKICAgICAgaWYgKGlzTmFOKGRhdGUpKSByZXR1cm4gTmFOOwoKICAgICAgY29uc3QgZHRmID0gbWFrZURURih0aGlzLm5hbWUpOwogICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXksIGFkT3JCYywgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHMKICAgICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkKICAgICAgICA6IGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSk7CgogICAgICBpZiAoYWRPckJjID09PSAiQkMiKSB7CiAgICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7CiAgICAgIH0KCiAgICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0CiAgICAgIGNvbnN0IGFkanVzdGVkSG91ciA9IGhvdXIgPT09IDI0ID8gMCA6IGhvdXI7CgogICAgICBjb25zdCBhc1VUQyA9IG9ialRvTG9jYWxUUyh7CiAgICAgICAgeWVhciwKICAgICAgICBtb250aCwKICAgICAgICBkYXksCiAgICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLAogICAgICAgIG1pbnV0ZSwKICAgICAgICBzZWNvbmQsCiAgICAgICAgbWlsbGlzZWNvbmQ6IDAsCiAgICAgIH0pOwoKICAgICAgbGV0IGFzVFMgPSArZGF0ZTsKICAgICAgY29uc3Qgb3ZlciA9IGFzVFMgJSAxMDAwOwogICAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjsKICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiaWFuYSIgJiYgb3RoZXJab25lLm5hbWUgPT09IHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0aGlzLnZhbGlkOwogICAgfQogIH0KCiAgLy8gdG9kbyAtIHJlbWFwIGNhY2hpbmcKCiAgbGV0IGludGxMRkNhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkTEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBkdGYgPSBpbnRsTEZDYWNoZVtrZXldOwogICAgaWYgKCFkdGYpIHsKICAgICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTEZDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsRFRDYWNoZSA9IHt9OwogIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkgewogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgbGV0IGR0ZiA9IGludGxEVENhY2hlW2tleV07CiAgICBpZiAoIWR0ZikgewogICAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsRFRDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsTnVtQ2FjaGUgPSB7fTsKICBmdW5jdGlvbiBnZXRDYWNoZWRJTkYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBpbmYgPSBpbnRsTnVtQ2FjaGVba2V5XTsKICAgIGlmICghaW5mKSB7CiAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTnVtQ2FjaGVba2V5XSA9IGluZjsKICAgIH0KICAgIHJldHVybiBpbmY7CiAgfQoKICBsZXQgaW50bFJlbENhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkUlRGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7CiAgICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9ucwogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgY2FjaGVLZXlPcHRzXSk7CiAgICBsZXQgaW5mID0gaW50bFJlbENhY2hlW2tleV07CiAgICBpZiAoIWluZikgewogICAgICBpbmYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQobG9jU3RyaW5nLCBvcHRzKTsKICAgICAgaW50bFJlbENhY2hlW2tleV0gPSBpbmY7CiAgICB9CiAgICByZXR1cm4gaW5mOwogIH0KCiAgbGV0IHN5c0xvY2FsZUNhY2hlID0gbnVsbDsKICBmdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7CiAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfSBlbHNlIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VMb2NhbGVTdHJpbmcobG9jYWxlU3RyKSB7CiAgICAvLyBJIHJlYWxseSB3YW50IHRvIGF2b2lkIHdyaXRpbmcgYSBCQ1AgNDcgcGFyc2VyCiAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgIC8vIEluc3RlYWQsIHdlJ2xsIGRvIHRoaXM6CgogICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgLy8gYikgaWYgaXQgZG9lcywgdXNlIEludGwgdG8gcmVzb2x2ZSBldmVyeXRoaW5nCiAgICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXUKCiAgICAvLyBwcml2YXRlIHN1YnRhZ3MgYW5kIHVuaWNvZGUgc3VidGFncyBoYXZlIG9yZGVyaW5nIHJlcXVpcmVtZW50cywKICAgIC8vIGFuZCB3ZSdyZSBub3QgcHJvcGVybHkgcGFyc2luZyB0aGlzLCBzbyBqdXN0IHN0cmlwIG91dCB0aGUKICAgIC8vIHByaXZhdGUgb25lcyBpZiB0aGV5IGV4aXN0LgogICAgY29uc3QgeEluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoIi14LSIpOwogICAgaWYgKHhJbmRleCAhPT0gLTEpIHsKICAgICAgbG9jYWxlU3RyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB4SW5kZXgpOwogICAgfQoKICAgIGNvbnN0IHVJbmRleCA9IGxvY2FsZVN0ci5pbmRleE9mKCItdS0iKTsKICAgIGlmICh1SW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgIH0gZWxzZSB7CiAgICAgIGxldCBvcHRpb25zOwogICAgICBsZXQgc2VsZWN0ZWRTdHI7CiAgICAgIHRyeSB7CiAgICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gbG9jYWxlU3RyOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gc21hbGxlcjsKICAgICAgfQoKICAgICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zOwogICAgICByZXR1cm4gW3NlbGVjdGVkU3RyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICBpZiAob3V0cHV0Q2FsZW5kYXIgfHwgbnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgIGlmICghbG9jYWxlU3RyLmluY2x1ZGVzKCItdS0iKSkgewogICAgICAgIGxvY2FsZVN0ciArPSAiLXUiOwogICAgICB9CgogICAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1jYS0ke291dHB1dENhbGVuZGFyfWA7CiAgICAgIH0KCiAgICAgIGlmIChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gOwogICAgICB9CiAgICAgIHJldHVybiBsb2NhbGVTdHI7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMTYsIGksIDEpOwogICAgICBtcy5wdXNoKGYoZHQpKTsKICAgIH0KICAgIHJldHVybiBtczsKICB9CgogIGZ1bmN0aW9uIG1hcFdlZWtkYXlzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHsKICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzICsgaSk7CiAgICAgIG1zLnB1c2goZihkdCkpOwogICAgfQogICAgcmV0dXJuIG1zOwogIH0KCiAgZnVuY3Rpb24gbGlzdFN0dWZmKGxvYywgbGVuZ3RoLCBkZWZhdWx0T0ssIGVuZ2xpc2hGbiwgaW50bEZuKSB7CiAgICBjb25zdCBtb2RlID0gbG9jLmxpc3RpbmdNb2RlKGRlZmF1bHRPSyk7CgogICAgaWYgKG1vZGUgPT09ICJlcnJvciIpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICJlbiIpIHsKICAgICAgcmV0dXJuIGVuZ2xpc2hGbihsZW5ndGgpOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGludGxGbihsZW5ndGgpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gc3VwcG9ydHNGYXN0TnVtYmVycyhsb2MpIHsKICAgIGlmIChsb2MubnVtYmVyaW5nU3lzdGVtICYmIGxvYy5udW1iZXJpbmdTeXN0ZW0gIT09ICJsYXRuIikgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gKAogICAgICAgIGxvYy5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIiB8fAogICAgICAgICFsb2MubG9jYWxlIHx8CiAgICAgICAgbG9jLmxvY2FsZS5zdGFydHNXaXRoKCJlbiIpIHx8CiAgICAgICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jLmludGwpLnJlc29sdmVkT3B0aW9ucygpLm51bWJlcmluZ1N5c3RlbSA9PT0gImxhdG4iCiAgICAgICk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBQb2x5TnVtYmVyRm9ybWF0dGVyIHsKICAgIGNvbnN0cnVjdG9yKGludGwsIGZvcmNlU2ltcGxlLCBvcHRzKSB7CiAgICAgIHRoaXMucGFkVG8gPSBvcHRzLnBhZFRvIHx8IDA7CiAgICAgIHRoaXMuZmxvb3IgPSBvcHRzLmZsb29yIHx8IGZhbHNlOwoKICAgICAgY29uc3QgeyBwYWRUbywgZmxvb3IsIC4uLm90aGVyT3B0cyB9ID0gb3B0czsKCiAgICAgIGlmICghZm9yY2VTaW1wbGUgfHwgT2JqZWN0LmtleXMob3RoZXJPcHRzKS5sZW5ndGggPiAwKSB7CiAgICAgICAgY29uc3QgaW50bE9wdHMgPSB7IHVzZUdyb3VwaW5nOiBmYWxzZSwgLi4ub3B0cyB9OwogICAgICAgIGlmIChvcHRzLnBhZFRvID4gMCkgaW50bE9wdHMubWluaW11bUludGVnZXJEaWdpdHMgPSBvcHRzLnBhZFRvOwogICAgICAgIHRoaXMuaW5mID0gZ2V0Q2FjaGVkSU5GKGludGwsIGludGxPcHRzKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdChpKSB7CiAgICAgIGlmICh0aGlzLmluZikgewogICAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiBpOwogICAgICAgIHJldHVybiB0aGlzLmluZi5mb3JtYXQoZml4ZWQpOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIHRvIG1hdGNoIHRoZSBicm93c2VyJ3MgbnVtYmVyZm9ybWF0dGVyIGRlZmF1bHRzCiAgICAgICAgY29uc3QgZml4ZWQgPSB0aGlzLmZsb29yID8gTWF0aC5mbG9vcihpKSA6IHJvdW5kVG8oaSwgMyk7CiAgICAgICAgcmV0dXJuIHBhZFN0YXJ0KGZpeGVkLCB0aGlzLnBhZFRvKTsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgUG9seURhdGVGb3JtYXR0ZXIgewogICAgY29uc3RydWN0b3IoZHQsIGludGwsIG9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0gb3B0czsKCiAgICAgIGxldCB6ID0gdW5kZWZpbmVkOwogICAgICBpZiAoZHQuem9uZS5pc1VuaXZlcnNhbCkgewogICAgICAgIC8vIFVUQy04IG9yIEV0Yy9VVEMtOCBhcmUgbm90IHBhcnQgb2YgdHpkYXRhLCBvbmx5IEV0Yy9HTVQrOCBhbmQgdGhlIGxpa2UuCiAgICAgICAgLy8gVGhhdCBpcyB3aHkgZml4ZWQtb2Zmc2V0IFRaIGlzIHNldCB0byB0aGF0IHVubGVzcyBpdCBpczoKICAgICAgICAvLyAxLiBSZXByZXNlbnRpbmcgb2Zmc2V0IDAgd2hlbiBVVEMgaXMgdXNlZCB0byBtYWludGFpbiBwcmV2aW91cyBiZWhhdmlvciBhbmQgZG9lcyBub3QgYmVjb21lIEdNVC4KICAgICAgICAvLyAyLiBVbnN1cHBvcnRlZCBieSB0aGUgYnJvd3NlcjoKICAgICAgICAvLyAgICAtIHNvbWUgZG8gbm90IHN1cHBvcnQgRXRjLwogICAgICAgIC8vICAgIC0gPCBFdGMvR01ULTE0LCA+IEV0Yy9HTVQrMTIsIGFuZCAzMC1taW51dGUgb3IgNDUtbWludXRlIG9mZnNldHMgYXJlIG5vdCBwYXJ0IG9mIHR6ZGF0YQogICAgICAgIGNvbnN0IGdtdE9mZnNldCA9IC0xICogKGR0Lm9mZnNldCAvIDYwKTsKICAgICAgICBjb25zdCBvZmZzZXRaID0gZ210T2Zmc2V0ID49IDAgPyBgRXRjL0dNVCske2dtdE9mZnNldH1gIDogYEV0Yy9HTVQke2dtdE9mZnNldH1gOwogICAgICAgIGlmIChkdC5vZmZzZXQgIT09IDAgJiYgSUFOQVpvbmUuY3JlYXRlKG9mZnNldFopLnZhbGlkKSB7CiAgICAgICAgICB6ID0gb2Zmc2V0WjsKICAgICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gTm90IGFsbCBmaXhlZC1vZmZzZXQgem9uZXMgbGlrZSBFdGMvKzQ6MzAgYXJlIHByZXNlbnQgaW4gdHpkYXRhLgogICAgICAgICAgLy8gU28gd2UgaGF2ZSB0byBtYWtlIGRvLiBUd28gY2FzZXM6CiAgICAgICAgICAvLyAxLiBUaGUgZm9ybWF0IG9wdGlvbnMgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBXZSBjYW4ndCBkbyB0aGF0LCBzbyB0aGUgYmVzdAogICAgICAgICAgLy8gd2UgY2FuIGRvIGlzIGZvcm1hdCB0aGUgZGF0ZSBpbiBVVEMuCiAgICAgICAgICAvLyAyLiBUaGUgZm9ybWF0IG9wdGlvbnMgZG9uJ3QgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBUaGVuIHdlIGNhbiBhZGp1c3QgdGhlbQogICAgICAgICAgLy8gdGhlIHRpbWUgYW5kIHRlbGwgdGhlIGZvcm1hdHRlciB0byBzaG93IGl0IHRvIHVzIGluIFVUQywgc28gdGhhdCB0aGUgdGltZSBpcyByaWdodAogICAgICAgICAgLy8gYW5kIHRoZSBiYWQgem9uZSBkb2Vzbid0IHNob3cgdXAuCiAgICAgICAgICB6ID0gIlVUQyI7CiAgICAgICAgICBpZiAob3B0cy50aW1lWm9uZU5hbWUpIHsKICAgICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5kdCA9IGR0Lm9mZnNldCA9PT0gMCA/IGR0IDogRGF0ZVRpbWUuZnJvbU1pbGxpcyhkdC50cyArIGR0Lm9mZnNldCAqIDYwICogMTAwMCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGR0LnpvbmUudHlwZSA9PT0gInN5c3RlbSIpIHsKICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgIHogPSBkdC56b25lLm5hbWU7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludGxPcHRzID0geyAuLi50aGlzLm9wdHMgfTsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSBpbnRsT3B0cy50aW1lWm9uZSB8fCB6OwogICAgICB0aGlzLmR0ZiA9IGdldENhY2hlZERURihpbnRsLCBpbnRsT3B0cyk7CiAgICB9CgogICAgZm9ybWF0KCkgewogICAgICByZXR1cm4gdGhpcy5kdGYuZm9ybWF0KHRoaXMuZHQudG9KU0RhdGUoKSk7CiAgICB9CgogICAgZm9ybWF0VG9QYXJ0cygpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdFRvUGFydHModGhpcy5kdC50b0pTRGF0ZSgpKTsKICAgIH0KCiAgICByZXNvbHZlZE9wdGlvbnMoKSB7CiAgICAgIHJldHVybiB0aGlzLmR0Zi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgUG9seVJlbEZvcm1hdHRlciB7CiAgICBjb25zdHJ1Y3RvcihpbnRsLCBpc0VuZ2xpc2gsIG9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0geyBzdHlsZTogImxvbmciLCAuLi5vcHRzIH07CiAgICAgIGlmICghaXNFbmdsaXNoICYmIGhhc1JlbGF0aXZlKCkpIHsKICAgICAgICB0aGlzLnJ0ZiA9IGdldENhY2hlZFJURihpbnRsLCBvcHRzKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdChjb3VudCwgdW5pdCkgewogICAgICBpZiAodGhpcy5ydGYpIHsKICAgICAgICByZXR1cm4gdGhpcy5ydGYuZm9ybWF0KGNvdW50LCB1bml0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCB0aGlzLm9wdHMubnVtZXJpYywgdGhpcy5vcHRzLnN0eWxlICE9PSAibG9uZyIpOwogICAgICB9CiAgICB9CgogICAgZm9ybWF0VG9QYXJ0cyhjb3VudCwgdW5pdCkgewogICAgICBpZiAodGhpcy5ydGYpIHsKICAgICAgICByZXR1cm4gdGhpcy5ydGYuZm9ybWF0VG9QYXJ0cyhjb3VudCwgdW5pdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBMb2NhbGUgewogICAgc3RhdGljIGZyb21PcHRzKG9wdHMpIHsKICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUob3B0cy5sb2NhbGUsIG9wdHMubnVtYmVyaW5nU3lzdGVtLCBvcHRzLm91dHB1dENhbGVuZGFyLCBvcHRzLmRlZmF1bHRUb0VOKTsKICAgIH0KCiAgICBzdGF0aWMgY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciwgZGVmYXVsdFRvRU4gPSBmYWxzZSkgewogICAgICBjb25zdCBzcGVjaWZpZWRMb2NhbGUgPSBsb2NhbGUgfHwgU2V0dGluZ3MuZGVmYXVsdExvY2FsZTsKICAgICAgLy8gdGhlIHN5c3RlbSBsb2NhbGUgaXMgdXNlZnVsIGZvciBodW1hbiByZWFkYWJsZSBzdHJpbmdzIGJ1dCBhbm5veWluZyBmb3IgcGFyc2luZy9mb3JtYXR0aW5nIGtub3duIGZvcm1hdHMKICAgICAgY29uc3QgbG9jYWxlUiA9IHNwZWNpZmllZExvY2FsZSB8fCAoZGVmYXVsdFRvRU4gPyAiZW4tVVMiIDogc3lzdGVtTG9jYWxlKCkpOwogICAgICBjb25zdCBudW1iZXJpbmdTeXN0ZW1SID0gbnVtYmVyaW5nU3lzdGVtIHx8IFNldHRpbmdzLmRlZmF1bHROdW1iZXJpbmdTeXN0ZW07CiAgICAgIGNvbnN0IG91dHB1dENhbGVuZGFyUiA9IG91dHB1dENhbGVuZGFyIHx8IFNldHRpbmdzLmRlZmF1bHRPdXRwdXRDYWxlbmRhcjsKICAgICAgcmV0dXJuIG5ldyBMb2NhbGUobG9jYWxlUiwgbnVtYmVyaW5nU3lzdGVtUiwgb3V0cHV0Q2FsZW5kYXJSLCBzcGVjaWZpZWRMb2NhbGUpOwogICAgfQoKICAgIHN0YXRpYyByZXNldENhY2hlKCkgewogICAgICBzeXNMb2NhbGVDYWNoZSA9IG51bGw7CiAgICAgIGludGxEVENhY2hlID0ge307CiAgICAgIGludGxOdW1DYWNoZSA9IHt9OwogICAgICBpbnRsUmVsQ2FjaGUgPSB7fTsKICAgIH0KCiAgICBzdGF0aWMgZnJvbU9iamVjdCh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciB9ID0ge30pIHsKICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKTsKICAgIH0KCiAgICBjb25zdHJ1Y3Rvcihsb2NhbGUsIG51bWJlcmluZywgb3V0cHV0Q2FsZW5kYXIsIHNwZWNpZmllZExvY2FsZSkgewogICAgICBjb25zdCBbcGFyc2VkTG9jYWxlLCBwYXJzZWROdW1iZXJpbmdTeXN0ZW0sIHBhcnNlZE91dHB1dENhbGVuZGFyXSA9IHBhcnNlTG9jYWxlU3RyaW5nKGxvY2FsZSk7CgogICAgICB0aGlzLmxvY2FsZSA9IHBhcnNlZExvY2FsZTsKICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPSBudW1iZXJpbmcgfHwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtIHx8IG51bGw7CiAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPSBvdXRwdXRDYWxlbmRhciB8fCBwYXJzZWRPdXRwdXRDYWxlbmRhciB8fCBudWxsOwogICAgICB0aGlzLmludGwgPSBpbnRsQ29uZmlnU3RyaW5nKHRoaXMubG9jYWxlLCB0aGlzLm51bWJlcmluZ1N5c3RlbSwgdGhpcy5vdXRwdXRDYWxlbmRhcik7CgogICAgICB0aGlzLndlZWtkYXlzQ2FjaGUgPSB7IGZvcm1hdDoge30sIHN0YW5kYWxvbmU6IHt9IH07CiAgICAgIHRoaXMubW9udGhzQ2FjaGUgPSB7IGZvcm1hdDoge30sIHN0YW5kYWxvbmU6IHt9IH07CiAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IG51bGw7CiAgICAgIHRoaXMuZXJhQ2FjaGUgPSB7fTsKCiAgICAgIHRoaXMuc3BlY2lmaWVkTG9jYWxlID0gc3BlY2lmaWVkTG9jYWxlOwogICAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gbnVsbDsKICAgIH0KCiAgICBnZXQgZmFzdE51bWJlcnMoKSB7CiAgICAgIGlmICh0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID09IG51bGwpIHsKICAgICAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gc3VwcG9ydHNGYXN0TnVtYmVycyh0aGlzKTsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMuZmFzdE51bWJlcnNDYWNoZWQ7CiAgICB9CgogICAgbGlzdGluZ01vZGUoKSB7CiAgICAgIGNvbnN0IGlzQWN0dWFsbHlFbiA9IHRoaXMuaXNFbmdsaXNoKCk7CiAgICAgIGNvbnN0IGhhc05vV2VpcmRuZXNzID0KICAgICAgICAodGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG51bGwgfHwgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIikgJiYKICAgICAgICAodGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gbnVsbCB8fCB0aGlzLm91dHB1dENhbGVuZGFyID09PSAiZ3JlZ29yeSIpOwogICAgICByZXR1cm4gaXNBY3R1YWxseUVuICYmIGhhc05vV2VpcmRuZXNzID8gImVuIiA6ICJpbnRsIjsKICAgIH0KCiAgICBjbG9uZShhbHRzKSB7CiAgICAgIGlmICghYWx0cyB8fCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhbHRzKS5sZW5ndGggPT09IDApIHsKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZSgKICAgICAgICAgIGFsdHMubG9jYWxlIHx8IHRoaXMuc3BlY2lmaWVkTG9jYWxlLAogICAgICAgICAgYWx0cy5udW1iZXJpbmdTeXN0ZW0gfHwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICBhbHRzLm91dHB1dENhbGVuZGFyIHx8IHRoaXMub3V0cHV0Q2FsZW5kYXIsCiAgICAgICAgICBhbHRzLmRlZmF1bHRUb0VOIHx8IGZhbHNlCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIHJlZGVmYXVsdFRvRU4oYWx0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmNsb25lKHsgLi4uYWx0cywgZGVmYXVsdFRvRU46IHRydWUgfSk7CiAgICB9CgogICAgcmVkZWZhdWx0VG9TeXN0ZW0oYWx0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmNsb25lKHsgLi4uYWx0cywgZGVmYXVsdFRvRU46IGZhbHNlIH0pOwogICAgfQoKICAgIG1vbnRocyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlLCBkZWZhdWx0T0sgPSB0cnVlKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBkZWZhdWx0T0ssIG1vbnRocywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQgPyB7IG1vbnRoOiBsZW5ndGgsIGRheTogIm51bWVyaWMiIH0gOiB7IG1vbnRoOiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0pIHsKICAgICAgICAgIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdID0gbWFwTW9udGhzKChkdCkgPT4gdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAibW9udGgiKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgd2Vla2RheXMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSwgZGVmYXVsdE9LID0gdHJ1ZSkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgZGVmYXVsdE9LLCB3ZWVrZGF5cywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQKICAgICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogIm51bWVyaWMiLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9CiAgICAgICAgICAgIDogeyB3ZWVrZGF5OiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT4KICAgICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAid2Vla2RheSIpCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgbWVyaWRpZW1zKGRlZmF1bHRPSyA9IHRydWUpIHsKICAgICAgcmV0dXJuIGxpc3RTdHVmZigKICAgICAgICB0aGlzLAogICAgICAgIHVuZGVmaW5lZCwKICAgICAgICBkZWZhdWx0T0ssCiAgICAgICAgKCkgPT4gbWVyaWRpZW1zLAogICAgICAgICgpID0+IHsKICAgICAgICAgIC8vIEluIHRoZW9yeSB0aGVyZSBjb3VsZCBiZSBhcmliaXRyYXJ5IGRheSBwZXJpb2RzLiBXZSdyZSBnb25uYSBhc3N1bWUgdGhlcmUgYXJlIGV4YWN0bHkgdHdvCiAgICAgICAgICAvLyBmb3IgQU0gYW5kIFBNLiBUaGlzIGlzIHByb2JhYmx5IHdyb25nLCBidXQgaXQncyBtYWtlcyBwYXJzaW5nIHdheSBlYXNpZXIuCiAgICAgICAgICBpZiAoIXRoaXMubWVyaWRpZW1DYWNoZSkgewogICAgICAgICAgICBjb25zdCBpbnRsID0geyBob3VyOiAibnVtZXJpYyIsIGhvdXJDeWNsZTogImgxMiIgfTsKICAgICAgICAgICAgdGhpcy5tZXJpZGllbUNhY2hlID0gW0RhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMsIDkpLCBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCAxOSldLm1hcCgKICAgICAgICAgICAgICAoZHQpID0+IHRoaXMuZXh0cmFjdChkdCwgaW50bCwgImRheXBlcmlvZCIpCiAgICAgICAgICAgICk7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIHRoaXMubWVyaWRpZW1DYWNoZTsKICAgICAgICB9CiAgICAgICk7CiAgICB9CgogICAgZXJhcyhsZW5ndGgsIGRlZmF1bHRPSyA9IHRydWUpIHsKICAgICAgcmV0dXJuIGxpc3RTdHVmZih0aGlzLCBsZW5ndGgsIGRlZmF1bHRPSywgZXJhcywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSB7IGVyYTogbGVuZ3RoIH07CgogICAgICAgIC8vIFRoaXMgaXMgcHJvYmxlbWF0aWMuIERpZmZlcmVudCBjYWxlbmRhcnMgYXJlIGdvaW5nIHRvIGRlZmluZSBlcmFzIHRvdGFsbHkgZGlmZmVyZW50bHkuIFdoYXQgSSBuZWVkIGlzIHRoZSBtaW5pbXVtIHNldCBvZiBkYXRlcwogICAgICAgIC8vIHRvIGRlZmluaXRlbHkgZW51bWVyYXRlIHRoZW0uCiAgICAgICAgaWYgKCF0aGlzLmVyYUNhY2hlW2xlbmd0aF0pIHsKICAgICAgICAgIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSA9IFtEYXRlVGltZS51dGMoLTQwLCAxLCAxKSwgRGF0ZVRpbWUudXRjKDIwMTcsIDEsIDEpXS5tYXAoKGR0KSA9PgogICAgICAgICAgICB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJlcmEiKQogICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLmVyYUNhY2hlW2xlbmd0aF07CiAgICAgIH0pOwogICAgfQoKICAgIGV4dHJhY3QoZHQsIGludGxPcHRzLCBmaWVsZCkgewogICAgICBjb25zdCBkZiA9IHRoaXMuZHRGb3JtYXR0ZXIoZHQsIGludGxPcHRzKSwKICAgICAgICByZXN1bHRzID0gZGYuZm9ybWF0VG9QYXJ0cygpLAogICAgICAgIG1hdGNoaW5nID0gcmVzdWx0cy5maW5kKChtKSA9PiBtLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gZmllbGQpOwogICAgICByZXR1cm4gbWF0Y2hpbmcgPyBtYXRjaGluZy52YWx1ZSA6IG51bGw7CiAgICB9CgogICAgbnVtYmVyRm9ybWF0dGVyKG9wdHMgPSB7fSkgewogICAgICAvLyB0aGlzIGZvcmNlc2ltcGxlIG9wdGlvbiBpcyBuZXZlciB1c2VkICh0aGUgb25seSBjYWxsZXIgc2hvcnQtY2lyY3VpdHMgb24gaXQsIGJ1dCBpdCBzZWVtcyBzYWZlciB0byBsZWF2ZSkKICAgICAgLy8gKGluIGNvbnRyYXN0LCB0aGUgcmVzdCBvZiB0aGUgY29uZGl0aW9uIGlzIHVzZWQgaGVhdmlseSkKICAgICAgcmV0dXJuIG5ldyBQb2x5TnVtYmVyRm9ybWF0dGVyKHRoaXMuaW50bCwgb3B0cy5mb3JjZVNpbXBsZSB8fCB0aGlzLmZhc3ROdW1iZXJzLCBvcHRzKTsKICAgIH0KCiAgICBkdEZvcm1hdHRlcihkdCwgaW50bE9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IFBvbHlEYXRlRm9ybWF0dGVyKGR0LCB0aGlzLmludGwsIGludGxPcHRzKTsKICAgIH0KCiAgICByZWxGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBuZXcgUG9seVJlbEZvcm1hdHRlcih0aGlzLmludGwsIHRoaXMuaXNFbmdsaXNoKCksIG9wdHMpOwogICAgfQoKICAgIGxpc3RGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBnZXRDYWNoZWRMRih0aGlzLmludGwsIG9wdHMpOwogICAgfQoKICAgIGlzRW5nbGlzaCgpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmxvY2FsZSA9PT0gImVuIiB8fAogICAgICAgIHRoaXMubG9jYWxlLnRvTG93ZXJDYXNlKCkgPT09ICJlbi11cyIgfHwKICAgICAgICBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmludGwpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZS5zdGFydHNXaXRoKCJlbi11cyIpCiAgICAgICk7CiAgICB9CgogICAgZXF1YWxzKG90aGVyKSB7CiAgICAgIHJldHVybiAoCiAgICAgICAgdGhpcy5sb2NhbGUgPT09IG90aGVyLmxvY2FsZSAmJgogICAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBvdGhlci5udW1iZXJpbmdTeXN0ZW0gJiYKICAgICAgICB0aGlzLm91dHB1dENhbGVuZGFyID09PSBvdGhlci5vdXRwdXRDYWxlbmRhcgogICAgICApOwogICAgfQogIH0KCiAgbGV0IHNpbmdsZXRvbiA9IG51bGw7CgogIC8qKgogICAqIEEgem9uZSB3aXRoIGEgZml4ZWQgb2Zmc2V0IChtZWFuaW5nIG5vIERTVCkKICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgKi8KICBjbGFzcyBGaXhlZE9mZnNldFpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogR2V0IGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIFVUQwogICAgICogQHJldHVybiB7Rml4ZWRPZmZzZXRab25lfQogICAgICovCiAgICBzdGF0aWMgZ2V0IHV0Y0luc3RhbmNlKCkgewogICAgICBpZiAoc2luZ2xldG9uID09PSBudWxsKSB7CiAgICAgICAgc2luZ2xldG9uID0gbmV3IEZpeGVkT2Zmc2V0Wm9uZSgwKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIGluc3RhbmNlIHdpdGggYSBzcGVjaWZpZWQgb2Zmc2V0CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0IC0gVGhlIG9mZnNldCBpbiBtaW51dGVzCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBpbnN0YW5jZShvZmZzZXQpIHsKICAgICAgcmV0dXJuIG9mZnNldCA9PT0gMCA/IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZSA6IG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBhbiBpbnN0YW5jZSBvZiBGaXhlZE9mZnNldFpvbmUgZnJvbSBhIFVUQyBvZmZzZXQgc3RyaW5nLCBsaWtlICJVVEMrNiIKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIG9mZnNldCBzdHJpbmcgdG8gcGFyc2UKICAgICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcigiVVRDKzYiKQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMrMDYiKQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMtNjowMCIpCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBwYXJzZVNwZWNpZmllcihzKSB7CiAgICAgIGlmIChzKSB7CiAgICAgICAgY29uc3QgciA9IHMubWF0Y2goL151dGMoPzooWystXVxkezEsMn0pKD86OihcZHsyfSkpPyk/JC9pKTsKICAgICAgICBpZiAocikgewogICAgICAgICAgcmV0dXJuIG5ldyBGaXhlZE9mZnNldFpvbmUoc2lnbmVkT2Zmc2V0KHJbMV0sIHJbMl0pKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgY29uc3RydWN0b3Iob2Zmc2V0KSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy5maXhlZCA9IG9mZnNldDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IHR5cGUoKSB7CiAgICAgIHJldHVybiAiZml4ZWQiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuZml4ZWQgPT09IDAgPyAiVVRDIiA6IGBVVEMke2Zvcm1hdE9mZnNldCh0aGlzLmZpeGVkLCAibmFycm93Iil9YDsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIGlmICh0aGlzLmZpeGVkID09PSAwKSB7CiAgICAgICAgcmV0dXJuICJFdGMvVVRDIjsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gYEV0Yy9HTVQke2Zvcm1hdE9mZnNldCgtdGhpcy5maXhlZCwgIm5hcnJvdyIpfWA7CiAgICAgIH0KICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLmZpeGVkLCBmb3JtYXQpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLmZpeGVkOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBlcXVhbHMob3RoZXJab25lKSB7CiAgICAgIHJldHVybiBvdGhlclpvbmUudHlwZSA9PT0gImZpeGVkIiAmJiBvdGhlclpvbmUuZml4ZWQgPT09IHRoaXMuZml4ZWQ7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIC8qKgogICAqIEEgem9uZSB0aGF0IGZhaWxlZCB0byBwYXJzZS4gWW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSW52YWxpZFpvbmUgZXh0ZW5kcyBab25lIHsKICAgIGNvbnN0cnVjdG9yKHpvbmVOYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiAgQHByaXZhdGUgKi8KICAgICAgdGhpcy56b25lTmFtZSA9IHpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpbnZhbGlkIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSgpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGZvcm1hdE9mZnNldCgpIHsKICAgICAgcmV0dXJuICIiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXQoKSB7CiAgICAgIHJldHVybiBOYU47CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscygpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gbm9ybWFsaXplWm9uZShpbnB1dCwgZGVmYXVsdFpvbmUpIHsKICAgIGlmIChpc1VuZGVmaW5lZChpbnB1dCkgfHwgaW5wdXQgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIGRlZmF1bHRab25lOwogICAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFpvbmUpIHsKICAgICAgcmV0dXJuIGlucHV0OwogICAgfSBlbHNlIGlmIChpc1N0cmluZyhpbnB1dCkpIHsKICAgICAgY29uc3QgbG93ZXJlZCA9IGlucHV0LnRvTG93ZXJDYXNlKCk7CiAgICAgIGlmIChsb3dlcmVkID09PSAiZGVmYXVsdCIpIHJldHVybiBkZWZhdWx0Wm9uZTsKICAgICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gImxvY2FsIiB8fCBsb3dlcmVkID09PSAic3lzdGVtIikgcmV0dXJuIFN5c3RlbVpvbmUuaW5zdGFuY2U7CiAgICAgIGVsc2UgaWYgKGxvd2VyZWQgPT09ICJ1dGMiIHx8IGxvd2VyZWQgPT09ICJnbXQiKSByZXR1cm4gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlOwogICAgICBlbHNlIHJldHVybiBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIobG93ZXJlZCkgfHwgSUFOQVpvbmUuY3JlYXRlKGlucHV0KTsKICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7CiAgICAgIHJldHVybiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoaW5wdXQpOwogICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICJvYmplY3QiICYmIGlucHV0Lm9mZnNldCAmJiB0eXBlb2YgaW5wdXQub2Zmc2V0ID09PSAibnVtYmVyIikgewogICAgICAvLyBUaGlzIGlzIGR1bWIsIGJ1dCB0aGUgaW5zdGFuY2VvZiBjaGVjayBhYm92ZSBkb2Vzbid0IHNlZW0gdG8gcmVhbGx5IHdvcmsKICAgICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdAogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgIH0KICB9CgogIGxldCBub3cgPSAoKSA9PiBEYXRlLm5vdygpLAogICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgIGRlZmF1bHRMb2NhbGUgPSBudWxsLAogICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsCiAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgdHdvRGlnaXRDdXRvZmZZZWFyID0gNjAsCiAgICB0aHJvd09uSW52YWxpZDsKCiAgLyoqCiAgICogU2V0dGluZ3MgY29udGFpbnMgc3RhdGljIGdldHRlcnMgYW5kIHNldHRlcnMgdGhhdCBjb250cm9sIEx1eG9uJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gTHV4b24gaXMgYSBzaW1wbGUgbGlicmFyeSB3aXRoIGZldyBvcHRpb25zLCBidXQgdGhlIG9uZXMgaXQgZG9lcyBoYXZlIGxpdmUgaGVyZS4KICAgKi8KICBjbGFzcyBTZXR0aW5ncyB7CiAgICAvKioKICAgICAqIEdldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuCiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgbm93KCkgewogICAgICByZXR1cm4gbm93OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50CiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWUKICAgICAqLwogICAgc3RhdGljIHNldCBub3cobikgewogICAgICBub3cgPSBuOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSB0byBjcmVhdGUgRGF0ZVRpbWVzIGluLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogVXNlIHRoZSB2YWx1ZSAic3lzdGVtIiB0byByZXNldCB0aGlzIHZhbHVlIHRvIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgc2V0IGRlZmF1bHRab25lKHpvbmUpIHsKICAgICAgZGVmYXVsdFpvbmUgPSB6b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUgKHRoZSBvbmUgc2V0IG9uIHRoZSBtYWNoaW5lIHRoYXQgcnVucyB0aGlzIGNvZGUpLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TG9jYWxlKCkgewogICAgICByZXR1cm4gZGVmYXVsdExvY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHNldCBkZWZhdWx0TG9jYWxlKGxvY2FsZSkgewogICAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IG51bWJlcmluZyBzeXN0ZW0gdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbShudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKSB7CiAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjdXRvZmYgeWVhciBhZnRlciB3aGljaCBhIHN0cmluZyBlbmNvZGluZyBhIHllYXIgYXMgdHdvIGRpZ2l0cyBpcyBpbnRlcnByZXRlZCB0byBvY2N1ciBpbiB0aGUgY3VycmVudCBjZW50dXJ5LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgc3RhdGljIGdldCB0d29EaWdpdEN1dG9mZlllYXIoKSB7CiAgICAgIHJldHVybiB0d29EaWdpdEN1dG9mZlllYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGN1dG9mZiB5ZWFyIGFmdGVyIHdoaWNoIGEgc3RyaW5nIGVuY29kaW5nIGEgeWVhciBhcyB0d28gZGlnaXRzIGlzIGludGVycHJldGVkIHRvIG9jY3VyIGluIHRoZSBjdXJyZW50IGNlbnR1cnkuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMCAvLyBjdXQtb2ZmIHllYXIgaXMgMCwgc28gYWxsICd5eScgYXJlIGludGVycHJldHRlZCBhcyBjdXJyZW50IGNlbnR1cnkKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDUwIC8vICc0OScgLT4gMTk0OTsgJzUwJyAtPiAyMDUwCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPSAxOTUwIC8vIGludGVycHJldHRlZCBhcyA1MAogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMjA1MCAvLyBBTFNPIGludGVycHJldHRlZCBhcyA1MAogICAgICovCiAgICBzdGF0aWMgc2V0IHR3b0RpZ2l0Q3V0b2ZmWWVhcihjdXRvZmZZZWFyKSB7CiAgICAgIHR3b0RpZ2l0Q3V0b2ZmWWVhciA9IGN1dG9mZlllYXIgJSAxMDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCkgewogICAgICByZXR1cm4gdGhyb3dPbkludmFsaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgc2V0IHRocm93T25JbnZhbGlkKHQpIHsKICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgTHV4b24ncyBnbG9iYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzdGF0aWMgcmVzZXRDYWNoZXMoKSB7CiAgICAgIExvY2FsZS5yZXNldENhY2hlKCk7CiAgICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTsKICAgIH0KICB9CgogIC8qCiAgICBUaGlzIGlzIGp1c3QgYSBqdW5rIGRyYXdlciwgY29udGFpbmluZyBhbnl0aGluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBjbGFzc2VzLgogICAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmcKICAgIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS4KICAqLwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICAvLyBUWVBFUwoKICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJ1bmRlZmluZWQiOwogIH0KCiAgZnVuY3Rpb24gaXNOdW1iZXIobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICB9CgogIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJudW1iZXIiICYmIG8gJSAxID09PSAwOwogIH0KCiAgZnVuY3Rpb24gaXNTdHJpbmcobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAic3RyaW5nIjsKICB9CgogIGZ1bmN0aW9uIGlzRGF0ZShvKSB7CiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgfQoKICAvLyBDQVBBQklMSVRJRVMKCiAgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdHlwZW9mIEludGwgIT09ICJ1bmRlZmluZWQiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIC8vIE9CSkVDVFMgQU5EIEFSUkFZUwoKICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107CiAgfQoKICBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkgewogICAgaWYgKGFyci5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0KICAgIHJldHVybiBhcnIucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7CiAgICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdOwogICAgICBpZiAoIWJlc3QpIHsKICAgICAgICByZXR1cm4gcGFpcjsKICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgcmV0dXJuIGJlc3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgIH0KICAgIH0sIG51bGwpWzFdOwogIH0KCiAgZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHsKICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4gewogICAgICBhW2tdID0gb2JqW2tdOwogICAgICByZXR1cm4gYTsKICAgIH0sIHt9KTsKICB9CgogIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwogIH0KCiAgLy8gTlVNQkVSUyBBTkQgU1RSSU5HUwoKICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgIHJldHVybiBpc0ludGVnZXIodGhpbmcpICYmIHRoaW5nID49IGJvdHRvbSAmJiB0aGluZyA8PSB0b3A7CiAgfQoKICAvLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHgKICBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7CiAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICB9CgogIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikgewogICAgY29uc3QgaXNOZWcgPSBpbnB1dCA8IDA7CiAgICBsZXQgcGFkZGVkOwogICAgaWYgKGlzTmVnKSB7CiAgICAgIHBhZGRlZCA9ICItIiArICgiIiArIC1pbnB1dCkucGFkU3RhcnQobiwgIjAiKTsKICAgIH0gZWxzZSB7CiAgICAgIHBhZGRlZCA9ICgiIiArIGlucHV0KS5wYWRTdGFydChuLCAiMCIpOwogICAgfQogICAgcmV0dXJuIHBhZGRlZDsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSW50ZWdlcihzdHJpbmcpIHsKICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZUZsb2F0aW5nKHN0cmluZykgewogICAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZU1pbGxpcyhmcmFjdGlvbikgewogICAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldAogICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IGYgPSBwYXJzZUZsb2F0KCIwLiIgKyBmcmFjdGlvbikgKiAxMDAwOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJvdW5kVG8obnVtYmVyLCBkaWdpdHMsIHRvd2FyZFplcm8gPSBmYWxzZSkgewogICAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLAogICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgcmV0dXJuIHJvdW5kZXIobnVtYmVyICogZmFjdG9yKSAvIGZhY3RvcjsKICB9CgogIC8vIERBVEUgQkFTSUNTCgogIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApOwogIH0KCiAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7CiAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTsKICB9CgogIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICBjb25zdCBtb2RNb250aCA9IGZsb29yTW9kKG1vbnRoIC0gMSwgMTIpICsgMSwKICAgICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjsKCiAgICBpZiAobW9kTW9udGggPT09IDIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07CiAgICB9CiAgfQoKICAvLyBjb3ZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBsb2NhbCB0aW1lc3RhbXAgKGVwb2NoLCBidXQgd2l0aCB0aGUgb2Zmc2V0IGJha2VkIGluKQogIGZ1bmN0aW9uIG9ialRvTG9jYWxUUyhvYmopIHsKICAgIGxldCBkID0gRGF0ZS5VVEMoCiAgICAgIG9iai55ZWFyLAogICAgICBvYmoubW9udGggLSAxLAogICAgICBvYmouZGF5LAogICAgICBvYmouaG91ciwKICAgICAgb2JqLm1pbnV0ZSwKICAgICAgb2JqLnNlY29uZCwKICAgICAgb2JqLm1pbGxpc2Vjb25kCiAgICApOwoKICAgIC8vIGZvciBsZWdhY3kgcmVhc29ucywgeWVhcnMgYmV0d2VlbiAwIGFuZCA5OSBhcmUgaW50ZXJwcmV0ZWQgYXMgMTlYWDsgcmV2ZXJ0IHRoYXQKICAgIGlmIChvYmoueWVhciA8IDEwMCAmJiBvYmoueWVhciA+PSAwKSB7CiAgICAgIGQgPSBuZXcgRGF0ZShkKTsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KICAgIHJldHVybiArZDsKICB9CgogIGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikgewogICAgY29uc3QgcDEgPQogICAgICAgICh3ZWVrWWVhciArCiAgICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLQogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDEwMCkgKwogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUKICAgICAgICA3LAogICAgICBsYXN0ID0gd2Vla1llYXIgLSAxLAogICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1MjsKICB9CgogIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHsKICAgIGlmICh5ZWFyID4gOTkpIHsKICAgICAgcmV0dXJuIHllYXI7CiAgICB9IGVsc2UgcmV0dXJuIHllYXIgPiBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIH0KCiAgLy8gUEFSU0lORwoKICBmdW5jdGlvbiBwYXJzZVpvbmVJbmZvKHRzLCBvZmZzZXRGb3JtYXQsIGxvY2FsZSwgdGltZVpvbmUgPSBudWxsKSB7CiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLAogICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IiwKICAgICAgfTsKCiAgICBpZiAodGltZVpvbmUpIHsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgIH0KCiAgICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07CgogICAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZCkKICAgICAgLmZvcm1hdFRvUGFydHMoZGF0ZSkKICAgICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGltZXpvbmVuYW1lIik7CiAgICByZXR1cm4gcGFyc2VkID8gcGFyc2VkLnZhbHVlIDogbnVsbDsKICB9CgogIC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCiAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7CgogICAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgb2ZmSG91ciA9IDA7CiAgICB9CgogICAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCwKICAgICAgb2ZmTWluU2lnbmVkID0gb2ZmSG91ciA8IDAgfHwgT2JqZWN0LmlzKG9mZkhvdXIsIC0wKSA/IC1vZmZNaW4gOiBvZmZNaW47CiAgICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkOwogIH0KCiAgLy8gQ09FUkNJT04KCiAgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHsKICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7CiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIgfHwgdmFsdWUgPT09ICIiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKQogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEludmFsaWQgdW5pdCB2YWx1ZSAke3ZhbHVlfWApOwogICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICB9CgogIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTsKICAgIGZvciAoY29uc3QgdSBpbiBvYmopIHsKICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICBjb25zdCB2ID0gb2JqW3VdOwogICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkgewogICAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksCiAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/ICIrIiA6ICItIjsKCiAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9OiR7cGFkU3RhcnQobWludXRlcywgMil9YDsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke2hvdXJzfSR7bWludXRlcyA+IDAgPyBgOiR7bWludXRlc31gIDogIiJ9YDsKICAgICAgY2FzZSAidGVjaGllIjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFZhbHVlIGZvcm1hdCAke2Zvcm1hdH0gaXMgb3V0IG9mIHJhbmdlIGZvciBwcm9wZXJ0eSBmb3JtYXRgKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICByZXR1cm4gcGljayhvYmosIFsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0pOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY29uc3QgbW9udGhzTG9uZyA9IFsKICAgICJKYW51YXJ5IiwKICAgICJGZWJydWFyeSIsCiAgICAiTWFyY2giLAogICAgIkFwcmlsIiwKICAgICJNYXkiLAogICAgIkp1bmUiLAogICAgIkp1bHkiLAogICAgIkF1Z3VzdCIsCiAgICAiU2VwdGVtYmVyIiwKICAgICJPY3RvYmVyIiwKICAgICJOb3ZlbWJlciIsCiAgICAiRGVjZW1iZXIiLAogIF07CgogIGNvbnN0IG1vbnRoc1Nob3J0ID0gWwogICAgIkphbiIsCiAgICAiRmViIiwKICAgICJNYXIiLAogICAgIkFwciIsCiAgICAiTWF5IiwKICAgICJKdW4iLAogICAgIkp1bCIsCiAgICAiQXVnIiwKICAgICJTZXAiLAogICAgIk9jdCIsCiAgICAiTm92IiwKICAgICJEZWMiLAogIF07CgogIGNvbnN0IG1vbnRoc05hcnJvdyA9IFsiSiIsICJGIiwgIk0iLCAiQSIsICJNIiwgIkoiLCAiSiIsICJBIiwgIlMiLCAiTyIsICJOIiwgIkQiXTsKCiAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc05hcnJvd107CiAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc1Nob3J0XTsKICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgcmV0dXJuIFsuLi5tb250aHNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgcmV0dXJuIFsiMDEiLCAiMDIiLCAiMDMiLCAiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMDkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGNvbnN0IHdlZWtkYXlzTG9uZyA9IFsKICAgICJNb25kYXkiLAogICAgIlR1ZXNkYXkiLAogICAgIldlZG5lc2RheSIsCiAgICAiVGh1cnNkYXkiLAogICAgIkZyaWRheSIsCiAgICAiU2F0dXJkYXkiLAogICAgIlN1bmRheSIsCiAgXTsKCiAgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CgogIGNvbnN0IHdlZWtkYXlzTmFycm93ID0gWyJNIiwgIlQiLCAiVyIsICJUIiwgIkYiLCAiUyIsICJTIl07CgogIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLndlZWtkYXlzTmFycm93XTsKICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNTaG9ydF07CiAgICAgIGNhc2UgImxvbmciOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgY29uc3QgbWVyaWRpZW1zID0gWyJBTSIsICJQTSJdOwoKICBjb25zdCBlcmFzTG9uZyA9IFsiQmVmb3JlIENocmlzdCIsICJBbm5vIERvbWluaSJdOwoKICBjb25zdCBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CgogIGNvbnN0IGVyYXNOYXJyb3cgPSBbIkIiLCAiQSJdOwoKICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNOYXJyb3ddOwogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIFsuLi5lcmFzU2hvcnRdOwogICAgICBjYXNlICJsb25nIjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNMb25nXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpIHsKICAgIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICB9CgogIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgcmV0dXJuIG1vbnRocyhsZW5ndGgpW2R0Lm1vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gImFsd2F5cyIsIG5hcnJvdyA9IGZhbHNlKSB7CiAgICBjb25zdCB1bml0cyA9IHsKICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgcXVhcnRlcnM6IFsicXVhcnRlciIsICJxdHIuIl0sCiAgICAgIG1vbnRoczogWyJtb250aCIsICJtby4iXSwKICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgZGF5czogWyJkYXkiLCAiZGF5IiwgImRheXMiXSwKICAgICAgaG91cnM6IFsiaG91ciIsICJoci4iXSwKICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICBzZWNvbmRzOiBbInNlY29uZCIsICJzZWMuIl0sCiAgICB9OwoKICAgIGNvbnN0IGxhc3RhYmxlID0gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiXS5pbmRleE9mKHVuaXQpID09PSAtMTsKCiAgICBpZiAobnVtZXJpYyA9PT0gImF1dG8iICYmIGxhc3RhYmxlKSB7CiAgICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gImRheXMiOwogICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvbW9ycm93IiA6IGBuZXh0ICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgICBjYXNlIC0xOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInllc3RlcmRheSIgOiBgbGFzdCAke3VuaXRzW3VuaXRdWzBdfWA7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6IGB0aGlzICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgfQogICAgfQoKICAgIGNvbnN0IGlzSW5QYXN0ID0gT2JqZWN0LmlzKGNvdW50LCAtMCkgfHwgY291bnQgPCAwLAogICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSwKICAgICAgbGlsVW5pdHMgPSB1bml0c1t1bml0XSwKICAgICAgZm10VW5pdCA9IG5hcnJvdwogICAgICAgID8gc2luZ3VsYXIKICAgICAgICAgID8gbGlsVW5pdHNbMV0KICAgICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV0KICAgICAgICA6IHNpbmd1bGFyCiAgICAgICAgPyB1bml0c1t1bml0XVswXQogICAgICAgIDogdW5pdDsKICAgIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7CiAgfQoKICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICBsZXQgcyA9ICIiOwogICAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHsKICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzICs9IHRva2VuVG9TdHJpbmcodG9rZW4udmFsKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7CiAgfQoKICBjb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gewogICAgRDogREFURV9TSE9SVCwKICAgIEREOiBEQVRFX01FRCwKICAgIERERDogREFURV9GVUxMLAogICAgRERERDogREFURV9IVUdFLAogICAgdDogVElNRV9TSU1QTEUsCiAgICB0dDogVElNRV9XSVRIX1NFQ09ORFMsCiAgICB0dHQ6IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQsCiAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICBUOiBUSU1FXzI0X1NJTVBMRSwKICAgIFRUOiBUSU1FXzI0X1dJVEhfU0VDT05EUywKICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgIFRUVFQ6IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCwKICAgIGY6IERBVEVUSU1FX1NIT1JULAogICAgZmY6IERBVEVUSU1FX01FRCwKICAgIGZmZjogREFURVRJTUVfRlVMTCwKICAgIGZmZmY6IERBVEVUSU1FX0hVR0UsCiAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICBGRjogREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUywKICAgIEZGRjogREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMsCiAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUywKICB9OwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBGb3JtYXR0ZXIgewogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpOwogICAgfQoKICAgIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgbGV0IGN1cnJlbnQgPSBudWxsLAogICAgICAgIGN1cnJlbnRGdWxsID0gIiIsCiAgICAgICAgYnJhY2tldGVkID0gZmFsc2U7CiAgICAgIGNvbnN0IHNwbGl0cyA9IFtdOwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZtdC5sZW5ndGg7IGkrKykgewogICAgICAgIGNvbnN0IGMgPSBmbXQuY2hhckF0KGkpOwogICAgICAgIGlmIChjID09PSAiJyIpIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogYnJhY2tldGVkLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudCA9IG51bGw7CiAgICAgICAgICBjdXJyZW50RnVsbCA9ICIiOwogICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkgewogICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogZmFsc2UsIHZhbDogY3VycmVudEZ1bGwgfSk7CiAgICAgICAgICB9CiAgICAgICAgICBjdXJyZW50RnVsbCA9IGM7CiAgICAgICAgICBjdXJyZW50ID0gYzsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgc3BsaXRzLnB1c2goeyBsaXRlcmFsOiBicmFja2V0ZWQsIHZhbDogY3VycmVudEZ1bGwgfSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBzcGxpdHM7CiAgICB9CgogICAgc3RhdGljIG1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pIHsKICAgICAgcmV0dXJuIG1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHNbdG9rZW5dOwogICAgfQoKICAgIGNvbnN0cnVjdG9yKGxvY2FsZSwgZm9ybWF0T3B0cykgewogICAgICB0aGlzLm9wdHMgPSBmb3JtYXRPcHRzOwogICAgICB0aGlzLmxvYyA9IGxvY2FsZTsKICAgICAgdGhpcy5zeXN0ZW1Mb2MgPSBudWxsOwogICAgfQoKICAgIGZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0KGR0LCBvcHRzKSB7CiAgICAgIGlmICh0aGlzLnN5c3RlbUxvYyA9PT0gbnVsbCkgewogICAgICAgIHRoaXMuc3lzdGVtTG9jID0gdGhpcy5sb2MucmVkZWZhdWx0VG9TeXN0ZW0oKTsKICAgICAgfQogICAgICBjb25zdCBkZiA9IHRoaXMuc3lzdGVtTG9jLmR0Rm9ybWF0dGVyKGR0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTsKICAgICAgcmV0dXJuIGRmLmZvcm1hdCgpOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lKGR0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgIH0KCiAgICBmb3JtYXREYXRlVGltZVBhcnRzKGR0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXRUb1BhcnRzKCk7CiAgICB9CgogICAgZm9ybWF0SW50ZXJ2YWwoaW50ZXJ2YWwsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBkZiA9IHRoaXMubG9jLmR0Rm9ybWF0dGVyKGludGVydmFsLnN0YXJ0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTsKICAgICAgcmV0dXJuIGRmLmR0Zi5mb3JtYXRSYW5nZShpbnRlcnZhbC5zdGFydC50b0pTRGF0ZSgpLCBpbnRlcnZhbC5lbmQudG9KU0RhdGUoKSk7CiAgICB9CgogICAgcmVzb2x2ZWRPcHRpb25zKGR0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIH0KCiAgICBudW0obiwgcCA9IDApIHsKICAgICAgLy8gd2UgZ2V0IHNvbWUgcGVyZiBvdXQgb2YgZG9pbmcgdGhpcyBoZXJlLCBhbm5veWluZ2x5CiAgICAgIGlmICh0aGlzLm9wdHMuZm9yY2VTaW1wbGUpIHsKICAgICAgICByZXR1cm4gcGFkU3RhcnQobiwgcCk7CiAgICAgIH0KCiAgICAgIGNvbnN0IG9wdHMgPSB7IC4uLnRoaXMub3B0cyB9OwoKICAgICAgaWYgKHAgPiAwKSB7CiAgICAgICAgb3B0cy5wYWRUbyA9IHA7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLmxvYy5udW1iZXJGb3JtYXR0ZXIob3B0cykuZm9ybWF0KG4pOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm10KSB7CiAgICAgIGNvbnN0IGtub3duRW5nbGlzaCA9IHRoaXMubG9jLmxpc3RpbmdNb2RlKCkgPT09ICJlbiIsCiAgICAgICAgdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPSB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAmJiB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAhPT0gImdyZWdvcnkiLAogICAgICAgIHN0cmluZyA9IChvcHRzLCBleHRyYWN0KSA9PiB0aGlzLmxvYy5leHRyYWN0KGR0LCBvcHRzLCBleHRyYWN0KSwKICAgICAgICBmb3JtYXRPZmZzZXQgPSAob3B0cykgPT4gewogICAgICAgICAgaWYgKGR0LmlzT2Zmc2V0Rml4ZWQgJiYgZHQub2Zmc2V0ID09PSAwICYmIG9wdHMuYWxsb3daKSB7CiAgICAgICAgICAgIHJldHVybiAiWiI7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIGR0LmlzVmFsaWQgPyBkdC56b25lLmZvcm1hdE9mZnNldChkdC50cywgb3B0cy5mb3JtYXQpIDogIiI7CiAgICAgICAgfSwKICAgICAgICBtZXJpZGllbSA9ICgpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyBtZXJpZGllbUZvckRhdGVUaW1lKGR0KQogICAgICAgICAgICA6IHN0cmluZyh7IGhvdXI6ICJudW1lcmljIiwgaG91ckN5Y2xlOiAiaDEyIiB9LCAiZGF5cGVyaW9kIiksCiAgICAgICAgbW9udGggPSAobGVuZ3RoLCBzdGFuZGFsb25lKSA9PgogICAgICAgICAga25vd25FbmdsaXNoCiAgICAgICAgICAgID8gbW9udGhGb3JEYXRlVGltZShkdCwgbGVuZ3RoKQogICAgICAgICAgICA6IHN0cmluZyhzdGFuZGFsb25lID8geyBtb250aDogbGVuZ3RoIH0gOiB7IG1vbnRoOiBsZW5ndGgsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpLAogICAgICAgIHdlZWtkYXkgPSAobGVuZ3RoLCBzdGFuZGFsb25lKSA9PgogICAgICAgICAga25vd25FbmdsaXNoCiAgICAgICAgICAgID8gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpCiAgICAgICAgICAgIDogc3RyaW5nKAogICAgICAgICAgICAgICAgc3RhbmRhbG9uZSA/IHsgd2Vla2RheTogbGVuZ3RoIH0gOiB7IHdlZWtkYXk6IGxlbmd0aCwgbW9udGg6ICJsb25nIiwgZGF5OiAibnVtZXJpYyIgfSwKICAgICAgICAgICAgICAgICJ3ZWVrZGF5IgogICAgICAgICAgICAgICksCiAgICAgICAgbWF5YmVNYWNybyA9ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgZm9ybWF0T3B0cyA9IEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKTsKICAgICAgICAgIGlmIChmb3JtYXRPcHRzKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0KGR0LCBmb3JtYXRPcHRzKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGVyYSA9IChsZW5ndGgpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2ggPyBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSA6IHN0cmluZyh7IGVyYTogbGVuZ3RoIH0sICJlcmEiKSwKICAgICAgICB0b2tlblRvU3RyaW5nID0gKHRva2VuKSA9PiB7CiAgICAgICAgICAvLyBXaGVyZSBwb3NzaWJsZTogaHR0cDovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lLTEvZGF0ZS10aW1lI1RPQy1TdGFuZGFsb25lLXZzLi1Gb3JtYXQtU3R5bGVzCiAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgICAgIC8vIG1zCiAgICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7CiAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTsKICAgICAgICAgICAgLy8gc2Vjb25kcwogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTsKICAgICAgICAgICAgY2FzZSAic3MiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBmcmFjdGlvbmFsIHNlY29uZHMKICAgICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTApLCAyKTsKICAgICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwMCkpOwogICAgICAgICAgICAvLyBtaW51dGVzCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpOwogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7CiAgICAgICAgICAgIC8vIGhvdXJzCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CiAgICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpOwogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7CiAgICAgICAgICAgIGNhc2UgIkhIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAogICAgICAgICAgICBjYXNlICJaIjoKICAgICAgICAgICAgICAvLyBsaWtlICs2CiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogIm5hcnJvdyIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTsKICAgICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogInNob3J0IiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2MDAKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiAidGVjaGllIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVTVAogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiAic2hvcnQiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTsKICAgICAgICAgICAgY2FzZSAiWlpaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6ICJsb25nIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKICAgICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmVOYW1lOwogICAgICAgICAgICAvLyBtZXJpZGllbXMKICAgICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7CiAgICAgICAgICAgIC8vIGRhdGVzCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogIm51bWVyaWMiIH0sICJkYXkiKSA6IHRoaXMubnVtKGR0LmRheSk7CiAgICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6ICIyLWRpZ2l0IiB9LCAiZGF5IikgOiB0aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpOwogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgImNjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiY2NjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1QnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIGZvcm1hdAogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7CiAgICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVHVlcycKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJuYXJyb3ciLCBmYWxzZSk7CiAgICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTsKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAiMi1kaWdpdCIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKICAgICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIgfSwgIm1vbnRoIikKICAgICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpOwogICAgICAgICAgICBjYXNlICJNTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogIjItZGlnaXQiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIk1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeQogICAgICAgICAgICAgIHJldHVybiBtb250aCgibG9uZyIsIGZhbHNlKTsKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICAvLyBsaWtlIDIwMTQKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyB5ZWFyOiAibnVtZXJpYyIgfSwgInllYXIiKSA6IHRoaXMubnVtKGR0LnllYXIpOwogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiAiMi1kaWdpdCIgfSwgInllYXIiKQogICAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDQpOwogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpOwogICAgICAgICAgICAvLyBlcmFzCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwogICAgICAgICAgICBjYXNlICJHRyI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaQogICAgICAgICAgICAgIHJldHVybiBlcmEoImxvbmciKTsKICAgICAgICAgICAgY2FzZSAiR0dHR0ciOgogICAgICAgICAgICAgIHJldHVybiBlcmEoIm5hcnJvdyIpOwogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAia2trayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKICAgICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpOwogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpOwogICAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7CiAgICAgICAgICAgIGNhc2UgIm9vbyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpOwogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlcik7CiAgICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwogICAgICAgICAgICBjYXNlICJYIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTsKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gbWF5YmVNYWNybyh0b2tlbik7CiAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpOwogICAgfQoKICAgIGZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhkdXIsIGZtdCkgewogICAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHsKICAgICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHsKICAgICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaWxsaXNlY29uZCI7CiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgICAgICByZXR1cm4gImhvdXIiOwogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgICAgIGNhc2UgInciOgogICAgICAgICAgICAgIHJldHVybiAid2VlayI7CiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIHJldHVybiAibW9udGgiOwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKAogICAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLAogICAgICAgICAgW10KICAgICAgICApLAogICAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7CiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnModG9rZW5zLCB0b2tlblRvU3RyaW5nKGNvbGxhcHNlZCkpOwogICAgfQogIH0KCiAgY2xhc3MgSW52YWxpZCB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgIHRoaXMucmVhc29uID0gcmVhc29uOwogICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICB9CgogICAgdG9NZXNzYWdlKCkgewogICAgICBpZiAodGhpcy5leHBsYW5hdGlvbikgewogICAgICAgIHJldHVybiBgJHt0aGlzLnJlYXNvbn06ICR7dGhpcy5leHBsYW5hdGlvbn1gOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnJlYXNvbjsKICAgICAgfQogICAgfQogIH0KCiAgLyoKICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLgogICAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3QKICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgImN1cnNvciIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuCiAgICogY29tYmluZUV4dHJhY3RvcnMoKSBkb2VzIHRoZSB3b3JrIG9mIGNvbWJpbmluZyB0aGVtLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgdGhyb3VnaCBtdWx0aXBsZSBleHRyYWN0aW9ucy4KICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgKi8KCiAgY29uc3QgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg/Ojo/XC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcL1tBLVphLXowLTlfKy1dezEsMjU2fSk/KT8vOwoKICBmdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7CiAgICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgIiIpOwogICAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7CiAgfQoKICBmdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7CiAgICByZXR1cm4gKG0pID0+CiAgICAgIGV4dHJhY3RvcnMKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFttZXJnZWRWYWxzLCBtZXJnZWRab25lLCBjdXJzb3JdLCBleCkgPT4gewogICAgICAgICAgICBjb25zdCBbdmFsLCB6b25lLCBuZXh0XSA9IGV4KG0sIGN1cnNvcik7CiAgICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTsKICAgICAgICAgIH0sCiAgICAgICAgICBbe30sIG51bGwsIDFdCiAgICAgICAgKQogICAgICAgIC5zbGljZSgwLCAyKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlKHMsIC4uLnBhdHRlcm5zKSB7CiAgICBpZiAocyA9PSBudWxsKSB7CiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZm9yIChjb25zdCBbcmVnZXgsIGV4dHJhY3Rvcl0gb2YgcGF0dGVybnMpIHsKICAgICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7CiAgICAgIGlmIChtKSB7CiAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIFtudWxsLCBudWxsXTsKICB9CgogIGZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHsKICAgIHJldHVybiAobWF0Y2gsIGN1cnNvcikgPT4gewogICAgICBjb25zdCByZXQgPSB7fTsKICAgICAgbGV0IGk7CgogICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgIHJldFtrZXlzW2ldXSA9IHBhcnNlSW50ZWdlcihtYXRjaFtjdXJzb3IgKyBpXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldOwogICAgfTsKICB9CgogIC8vIElTTyBhbmQgU1FMIHBhcnNpbmcKICBjb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8pLzsKICBjb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcWygke2lhbmFSZWdleC5zb3VyY2V9KVxcXSk/KT9gOwogIGNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlsuLF0oXGR7MSwzMH0pKT8pPyk/LzsKICBjb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7CiAgY29uc3QgaXNvVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzpUJHtpc29UaW1lUmVnZXguc291cmNlfSk/YCk7CiAgY29uc3QgaXNvWW1kUmVnZXggPSAvKFsrLV1cZHs2fXxcZHs0fSkoPzotPyhcZFxkKSg/Oi0/KFxkXGQpKT8pPy87CiAgY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcZHs0fSktP1coXGRcZCkoPzotPyhcZCkpPy87CiAgY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcZHs0fSktPyhcZHszfSkvOwogIGNvbnN0IGV4dHJhY3RJU09XZWVrRGF0YSA9IHNpbXBsZVBhcnNlKCJ3ZWVrWWVhciIsICJ3ZWVrTnVtYmVyIiwgIndlZWtEYXkiKTsKICBjb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZSgieWVhciIsICJvcmRpbmFsIik7CiAgY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxkezR9KS0oXGRcZCktKFxkXGQpLzsgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogIGNvbnN0IHNxbFRpbWVSZWdleCA9IFJlZ0V4cCgKICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YAogICk7CiAgY29uc3Qgc3FsVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzogJHtzcWxUaW1lUmVnZXguc291cmNlfSk/YCk7CgogIGZ1bmN0aW9uIGludChtYXRjaCwgcG9zLCBmYWxsYmFjaykgewogICAgY29uc3QgbSA9IG1hdGNoW3Bvc107CiAgICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJU09ZbWQobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLAogICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpLAogICAgfTsKCiAgICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSwKICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgc2Vjb25kczogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAwKSwKICAgICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksCiAgICB9OwoKICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgfQoKICBmdW5jdGlvbiBleHRyYWN0SVNPT2Zmc2V0KG1hdGNoLCBjdXJzb3IpIHsKICAgIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLAogICAgICBmdWxsT2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG1hdGNoW2N1cnNvciArIDFdLCBtYXRjaFtjdXJzb3IgKyAyXSksCiAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICBjb25zdCB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTsKICB9CgogIC8vIElTTyB0aW1lIHBhcnNpbmcKCiAgY29uc3QgaXNvVGltZU9ubHkgPSBSZWdFeHAoYF5UPyR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JGApOwoKICAvLyBJU08gZHVyYXRpb24gcGFyc2luZwoKICBjb25zdCBpc29EdXJhdGlvbiA9CiAgICAvXi0/UCg/Oig/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVkpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KU0pPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVcpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KUQpPyg/OlQoPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylIKT8oPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSwyMH0pKT9TKT8pPykkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7CiAgICBjb25zdCBbcywgeWVhclN0ciwgbW9udGhTdHIsIHdlZWtTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIG1pbGxpc2Vjb25kc1N0cl0gPQogICAgICBtYXRjaDsKCiAgICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09ICItIjsKICAgIGNvbnN0IG5lZ2F0aXZlU2Vjb25kcyA9IHNlY29uZFN0ciAmJiBzZWNvbmRTdHJbMF0gPT09ICItIjsKCiAgICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+CiAgICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtOwoKICAgIHJldHVybiBbCiAgICAgIHsKICAgICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksCiAgICAgICAgd2Vla3M6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcod2Vla1N0cikpLAogICAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLAogICAgICAgIG1pbnV0ZXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobWludXRlU3RyKSksCiAgICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKSwKICAgICAgfSwKICAgIF07CiAgfQoKICAvLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmsKICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXQKICBjb25zdCBvYnNPZmZzZXRzID0gewogICAgR01UOiAwLAogICAgRURUOiAtNCAqIDYwLAogICAgRVNUOiAtNSAqIDYwLAogICAgQ0RUOiAtNSAqIDYwLAogICAgQ1NUOiAtNiAqIDYwLAogICAgTURUOiAtNiAqIDYwLAogICAgTVNUOiAtNyAqIDYwLAogICAgUERUOiAtNyAqIDYwLAogICAgUFNUOiAtOCAqIDYwLAogIH07CgogIGZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7CiAgICBjb25zdCByZXN1bHQgPSB7CiAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgbW9udGg6IG1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSwKICAgICAgZGF5OiBwYXJzZUludGVnZXIoZGF5U3RyKSwKICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpLAogICAgfTsKCiAgICBpZiAoc2Vjb25kU3RyKSByZXN1bHQuc2Vjb25kID0gcGFyc2VJbnRlZ2VyKHNlY29uZFN0cik7CiAgICBpZiAod2Vla2RheVN0cikgewogICAgICByZXN1bHQud2Vla2RheSA9CiAgICAgICAgd2Vla2RheVN0ci5sZW5ndGggPiAzCiAgICAgICAgICA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMQogICAgICAgICAgOiB3ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvLyBSRkMgMjgyMi81MzIyCiAgY29uc3QgcmZjMjgyMiA9CiAgICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICBmdW5jdGlvbiBleHRyYWN0UkZDMjgyMihtYXRjaCkgewogICAgY29uc3QgWwogICAgICAgICwKICAgICAgICB3ZWVrZGF5U3RyLAogICAgICAgIGRheVN0ciwKICAgICAgICBtb250aFN0ciwKICAgICAgICB5ZWFyU3RyLAogICAgICAgIGhvdXJTdHIsCiAgICAgICAgbWludXRlU3RyLAogICAgICAgIHNlY29uZFN0ciwKICAgICAgICBvYnNPZmZzZXQsCiAgICAgICAgbWlsT2Zmc2V0LAogICAgICAgIG9mZkhvdXJTdHIsCiAgICAgICAgb2ZmTWludXRlU3RyLAogICAgICBdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKCiAgICBsZXQgb2Zmc2V0OwogICAgaWYgKG9ic09mZnNldCkgewogICAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07CiAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICBvZmZzZXQgPSAwOwogICAgfSBlbHNlIHsKICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICB9CgogICAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07CiAgfQoKICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7CiAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQogICAgcmV0dXJuIHMKICAgICAgLnJlcGxhY2UoL1woW14oKV0qXCl8W1xuXHRdL2csICIgIikKICAgICAgLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKQogICAgICAudHJpbSgpOwogIH0KCiAgLy8gaHR0cCBkYXRlCgogIGNvbnN0IHJmYzExMjMgPQogICAgICAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLCAoXGRcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXGR7NH0pIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgcmZjODUwID0KICAgICAgL14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXGRcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICBhc2NpaSA9CiAgICAgIC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxkfFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIChcZHs0fSkkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkgewogICAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7CiAgICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCwKICAgICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpOwogICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgfQoKICBjb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpOwoKICBjb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1ltZCwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoCiAgICBleHRyYWN0SVNPV2Vla0RhdGEsCiAgICBleHRyYWN0SVNPVGltZSwKICAgIGV4dHJhY3RJU09PZmZzZXQsCiAgICBleHRyYWN0SUFOQVpvbmUKICApOwogIGNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09PcmRpbmFsRGF0YSwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CgogIC8qCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgIHJldHVybiBwYXJzZSgKICAgICAgcywKICAgICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSwKICAgICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLAogICAgICBbaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWVdLAogICAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XQogICAgKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykgewogICAgcmV0dXJuIHBhcnNlKHByZXByb2Nlc3NSRkMyODIyKHMpLCBbcmZjMjgyMiwgZXh0cmFjdFJGQzI4MjJdKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSFRUUERhdGUocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbcmZjMTEyMywgZXh0cmFjdFJGQzExMjNPcjg1MF0sCiAgICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLAogICAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV0KICAgICk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pOwogIH0KCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwoKICBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogIH0KCiAgY29uc3Qgc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFltZFJlZ2V4LCBzcWxUaW1lRXh0ZW5zaW9uUmVnZXgpOwogIGNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTsKCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1RpbWUsCiAgICBleHRyYWN0SVNPT2Zmc2V0LAogICAgZXh0cmFjdElBTkFab25lCiAgKTsKCiAgZnVuY3Rpb24gcGFyc2VTUUwocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLAogICAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdCiAgICApOwogIH0KCiAgY29uc3QgSU5WQUxJRCQyID0gIkludmFsaWQgRHVyYXRpb24iOwoKICAvLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzCiAgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7CiAgICAgIHdlZWtzOiB7CiAgICAgICAgZGF5czogNywKICAgICAgICBob3VyczogNyAqIDI0LAogICAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgZGF5czogewogICAgICAgIGhvdXJzOiAyNCwKICAgICAgICBtaW51dGVzOiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sCiAgICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sCiAgICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sCiAgICB9LAogICAgY2FzdWFsTWF0cml4ID0gewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogMTMsCiAgICAgICAgZGF5czogOTEsCiAgICAgICAgaG91cnM6IDkxICogMjQsCiAgICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogNCwKICAgICAgICBkYXlzOiAzMCwKICAgICAgICBob3VyczogMzAgKiAyNCwKICAgICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCgogICAgICAuLi5sb3dPcmRlck1hdHJpeCwKICAgIH0sCiAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsCiAgICBhY2N1cmF0ZU1hdHJpeCA9IHsKICAgICAgeWVhcnM6IHsKICAgICAgICBxdWFydGVyczogNCwKICAgICAgICBtb250aHM6IDEyLAogICAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsCiAgICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCwKICAgICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsCiAgICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCwKICAgICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LAogICAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgLi4ubG93T3JkZXJNYXRyaXgsCiAgICB9OwoKICAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKICBjb25zdCBvcmRlcmVkVW5pdHMkMSA9IFsKICAgICJ5ZWFycyIsCiAgICAicXVhcnRlcnMiLAogICAgIm1vbnRocyIsCiAgICAid2Vla3MiLAogICAgImRheXMiLAogICAgImhvdXJzIiwKICAgICJtaW51dGVzIiwKICAgICJzZWNvbmRzIiwKICAgICJtaWxsaXNlY29uZHMiLAogIF07CgogIGNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cyQxLnNsaWNlKDApLnJldmVyc2UoKTsKCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zICJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXMiCiAgZnVuY3Rpb24gY2xvbmUkMShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHsKICAgIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHMKICAgIGNvbnN0IGNvbmYgPSB7CiAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LAogICAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLAogICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksCiAgICAgIG1hdHJpeDogYWx0cy5tYXRyaXggfHwgZHVyLm1hdHJpeCwKICAgIH07CiAgICByZXR1cm4gbmV3IER1cmF0aW9uKGNvbmYpOwogIH0KCiAgZnVuY3Rpb24gYW50aVRydW5jKG4pIHsKICAgIHJldHVybiBuIDwgMCA/IE1hdGguZmxvb3IobikgOiBNYXRoLmNlaWwobik7CiAgfQoKICAvLyBOQjogbXV0YXRlcyBwYXJhbWV0ZXJzCiAgZnVuY3Rpb24gY29udmVydChtYXRyaXgsIGZyb21NYXAsIGZyb21Vbml0LCB0b01hcCwgdG9Vbml0KSB7CiAgICBjb25zdCBjb252ID0gbWF0cml4W3RvVW5pdF1bZnJvbVVuaXRdLAogICAgICByYXcgPSBmcm9tTWFwW2Zyb21Vbml0XSAvIGNvbnYsCiAgICAgIHNhbWVTaWduID0gTWF0aC5zaWduKHJhdykgPT09IE1hdGguc2lnbih0b01hcFt0b1VuaXRdKSwKICAgICAgLy8gb2ssIHNvIHRoaXMgaXMgd2lsZCwgYnV0IHNlZSB0aGUgbWF0cml4IGluIHRoZSB0ZXN0cwogICAgICBhZGRlZCA9CiAgICAgICAgIXNhbWVTaWduICYmIHRvTWFwW3RvVW5pdF0gIT09IDAgJiYgTWF0aC5hYnMocmF3KSA8PSAxID8gYW50aVRydW5jKHJhdykgOiBNYXRoLnRydW5jKHJhdyk7CiAgICB0b01hcFt0b1VuaXRdICs9IGFkZGVkOwogICAgZnJvbU1hcFtmcm9tVW5pdF0gLT0gYWRkZWQgKiBjb252OwogIH0KCiAgLy8gTkI6IG11dGF0ZXMgcGFyYW1ldGVycwogIGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlcyhtYXRyaXgsIHZhbHMpIHsKICAgIHJldmVyc2VVbml0cy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7CiAgICAgIGlmICghaXNVbmRlZmluZWQodmFsc1tjdXJyZW50XSkpIHsKICAgICAgICBpZiAocHJldmlvdXMpIHsKICAgICAgICAgIGNvbnZlcnQobWF0cml4LCB2YWxzLCBwcmV2aW91cywgdmFscywgY3VycmVudCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwcmV2aW91czsKICAgICAgfQogICAgfSwgbnVsbCk7CiAgfQoKICAvLyBSZW1vdmUgYWxsIHByb3BlcnRpZXMgd2l0aCBhIHZhbHVlIG9mIDAgZnJvbSBhbiBvYmplY3QKICBmdW5jdGlvbiByZW1vdmVaZXJvZXModmFscykgewogICAgY29uc3QgbmV3VmFscyA9IHt9OwogICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFscykpIHsKICAgICAgaWYgKHZhbHVlICE9PSAwKSB7CiAgICAgICAgbmV3VmFsc1trZXldID0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZXdWYWxzOwogIH0KCiAgLyoqCiAgICogQSBEdXJhdGlvbiBvYmplY3QgcmVwcmVzZW50cyBhIHBlcmlvZCBvZiB0aW1lLCBsaWtlICIyIG1vbnRocyIgb3IgIjEgZGF5LCAxIGhvdXIiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy4KICAgKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy4KICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn0KICAgKgogICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgKi8KICBjbGFzcyBEdXJhdGlvbiB7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgIGxldCBtYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwoKICAgICAgaWYgKGNvbmZpZy5tYXRyaXgpIHsKICAgICAgICBtYXRyaXggPSBjb25maWcubWF0cml4OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuY29udmVyc2lvbkFjY3VyYWN5ID0gYWNjdXJhdGUgPyAibG9uZ3Rlcm0iIDogImNhc3VhbCI7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubWF0cml4ID0gbWF0cml4OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5cwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBjdXN0b20gY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHsKICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICJvYmplY3QiKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7CiAgICAgICAgICBvYmogPT09IG51bGwgPyAibnVsbCIgOiB0eXBlb2Ygb2JqCiAgICAgICAgfWAKICAgICAgICApOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsKICAgICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5OiBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSwKICAgICAgICBtYXRyaXg6IG9wdHMubWF0cml4LAogICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZQogICAgICogT25lIG9mOgogICAgICogLSBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHMKICAgICAqIC0gRHVyYXRpb24gaW5zdGFuY2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uTGlrZSkpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbkxpa2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBVbmtub3duIGR1cmF0aW9uIGFyZ3VtZW50ICR7ZHVyYXRpb25MaWtlfSBvZiB0eXBlICR7dHlwZW9mIGR1cmF0aW9uTGlrZX1gCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBwcmVzZXQgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9ucwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm1hdHJpeD1PYmplY3RdIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgeWVhcjogInllYXJzIiwKICAgICAgICB5ZWFyczogInllYXJzIiwKICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlcnMiLAogICAgICAgIG1vbnRoOiAibW9udGhzIiwKICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgIHdlZWs6ICJ3ZWVrcyIsCiAgICAgICAgd2Vla3M6ICJ3ZWVrcyIsCiAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgZGF5czogImRheXMiLAogICAgICAgIGhvdXI6ICJob3VycyIsCiAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgbWludXRlOiAibWludXRlcyIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZXMiLAogICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgIHNlY29uZHM6ICJzZWNvbmRzIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kcyIsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIiwKICAgICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07CgogICAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpOwoKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb24KICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOgogICAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kcwogICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAqICogYG1gIGZvciBtaW51dGVzCiAgICAgKiAqIGBoYCBmb3IgaG91cnMKICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgKiAqIGB3YCBmb3Igd2Vla3MKICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAqICogYHlgIGZvciB5ZWFycwogICAgICogTm90ZXM6CiAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgKiAqIFRva2VucyBjYW4gYmUgZXNjYXBlZCBieSB3cmFwcGluZyB3aXRoIHNpbmdsZSBxdW90ZXMuCiAgICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5IGQgcyIpIC8vPT4gIjEgNiAyIgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoIk0gUyIpIC8vPT4gIjEyIDUxODQwMjAwMCIKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHsKICAgICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdAogICAgICBjb25zdCBmbXRPcHRzID0gewogICAgICAgIC4uLm9wdHMsCiAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLAogICAgICB9OwogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KQogICAgICAgIDogSU5WQUxJRCQyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLgogICAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL051bWJlckZvcm1hdAogICAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLgogICAgICogQGV4YW1wbGUKICAgICAqIGBgYGpzCiAgICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pCiAgICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnCiAgICAgKiBkdXIudG9IdW1hbih7IGxpc3RTdHlsZTogImxvbmciIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJwogICAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogInNob3J0IiB9KSAvLz0+ICcxIGRheSwgNSBociwgNiBtaW4nCiAgICAgKiBgYGAKICAgICAqLwogICAgdG9IdW1hbihvcHRzID0ge30pIHsKICAgICAgY29uc3QgbCA9IG9yZGVyZWRVbml0cyQxCiAgICAgICAgLm1hcCgodW5pdCkgPT4gewogICAgICAgICAgY29uc3QgdmFsID0gdGhpcy52YWx1ZXNbdW5pdF07CiAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB0aGlzLmxvYwogICAgICAgICAgICAubnVtYmVyRm9ybWF0dGVyKHsgc3R5bGU6ICJ1bml0IiwgdW5pdERpc3BsYXk6ICJsb25nIiwgLi4ub3B0cywgdW5pdDogdW5pdC5zbGljZSgwLCAtMSkgfSkKICAgICAgICAgICAgLmZvcm1hdCh2YWwpOwogICAgICAgIH0pCiAgICAgICAgLmZpbHRlcigobikgPT4gbik7CgogICAgICByZXR1cm4gdGhpcy5sb2MKICAgICAgICAubGlzdEZvcm1hdHRlcih7IHR5cGU6ICJjb25qdW5jdGlvbiIsIHN0eWxlOiBvcHRzLmxpc3RTdHlsZSB8fCAibmFycm93IiwgLi4ub3B0cyB9KQogICAgICAgIC5mb3JtYXQobCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGlzIER1cmF0aW9uJ3MgdmFsdWVzLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgdG9PYmplY3QoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4ge307CiAgICAgIHJldHVybiB7IC4uLnRoaXMudmFsdWVzIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbi4KICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDMsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDNZVDQ1UycKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDQsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDRNVDQ1UycKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDUgfSkudG9JU08oKSAvLz0+ICdQNU0nCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogNSB9KS50b0lTTygpIC8vPT4gJ1BUNU0nCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWlsbGlzZWNvbmRzOiA2IH0pLnRvSVNPKCkgLy89PiAnUFQwLjAwNlMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPKCkgewogICAgICAvLyB3ZSBjb3VsZCB1c2UgdGhlIGZvcm1hdHRlciwgYnV0IHRoaXMgaXMgYW4gZWFzaWVyIHdheSB0byBnZXQgdGhlIG1pbmltdW0gc3RyaW5nCiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIGxldCBzID0gIlAiOwogICAgICBpZiAodGhpcy55ZWFycyAhPT0gMCkgcyArPSB0aGlzLnllYXJzICsgIlkiOwogICAgICBpZiAodGhpcy5tb250aHMgIT09IDAgfHwgdGhpcy5xdWFydGVycyAhPT0gMCkgcyArPSB0aGlzLm1vbnRocyArIHRoaXMucXVhcnRlcnMgKiAzICsgIk0iOwogICAgICBpZiAodGhpcy53ZWVrcyAhPT0gMCkgcyArPSB0aGlzLndlZWtzICsgIlciOwogICAgICBpZiAodGhpcy5kYXlzICE9PSAwKSBzICs9IHRoaXMuZGF5cyArICJEIjsKICAgICAgaWYgKHRoaXMuaG91cnMgIT09IDAgfHwgdGhpcy5taW51dGVzICE9PSAwIHx8IHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkKICAgICAgICBzICs9ICJUIjsKICAgICAgaWYgKHRoaXMuaG91cnMgIT09IDApIHMgKz0gdGhpcy5ob3VycyArICJIIjsKICAgICAgaWYgKHRoaXMubWludXRlcyAhPT0gMCkgcyArPSB0aGlzLm1pbnV0ZXMgKyAiTSI7CiAgICAgIGlmICh0aGlzLnNlY29uZHMgIT09IDAgfHwgdGhpcy5taWxsaXNlY29uZHMgIT09IDApCiAgICAgICAgLy8gdGhpcyB3aWxsIGhhbmRsZSAiZmxvYXRpbmcgcG9pbnQgbWFkbmVzcyIgYnkgcmVtb3ZpbmcgZXh0cmEgZGVjaW1hbCBwbGFjZXMKICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81ODgwMDQvaXMtZmxvYXRpbmctcG9pbnQtbWF0aC1icm9rZW4KICAgICAgICBzICs9IHJvdW5kVG8odGhpcy5zZWNvbmRzICsgdGhpcy5taWxsaXNlY29uZHMgLyAxMDAwLCAzKSArICJTIjsKICAgICAgaWYgKHMgPT09ICJQIikgcyArPSAiVDBTIjsKICAgICAgcmV0dXJuIHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiwgZm9ybWF0dGVkIGFzIGEgdGltZSBvZiBkYXkuCiAgICAgKiBOb3RlIHRoYXQgdGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoZSBkdXJhdGlvbiBpcyBpbnZhbGlkLCBuZWdhdGl2ZSwgb3IgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDI0IGhvdXJzLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVQcmVmaXg9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgYFRgIHByZWZpeAogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSgpIC8vPT4gJzExOjAwOjAwLjAwMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NNaWxsaXNlY29uZHM6IHRydWUgfSkgLy89PiAnMTE6MDA6MDAnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMTE6MDA6MDAuMDAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMTEwMDAwLjAwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09UaW1lKG9wdHMgPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIG51bGw7CgogICAgICBjb25zdCBtaWxsaXMgPSB0aGlzLnRvTWlsbGlzKCk7CiAgICAgIGlmIChtaWxsaXMgPCAwIHx8IG1pbGxpcyA+PSA4NjQwMDAwMCkgcmV0dXJuIG51bGw7CgogICAgICBvcHRzID0gewogICAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzOiBmYWxzZSwKICAgICAgICBzdXBwcmVzc1NlY29uZHM6IGZhbHNlLAogICAgICAgIGluY2x1ZGVQcmVmaXg6IGZhbHNlLAogICAgICAgIGZvcm1hdDogImV4dGVuZGVkIiwKICAgICAgICAuLi5vcHRzLAogICAgICB9OwoKICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnNoaWZ0VG8oImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiKTsKCiAgICAgIGxldCBmbXQgPSBvcHRzLmZvcm1hdCA9PT0gImJhc2ljIiA/ICJoaG1tIiA6ICJoaDptbSI7CgogICAgICBpZiAoIW9wdHMuc3VwcHJlc3NTZWNvbmRzIHx8IHZhbHVlLnNlY29uZHMgIT09IDAgfHwgdmFsdWUubWlsbGlzZWNvbmRzICE9PSAwKSB7CiAgICAgICAgZm10ICs9IG9wdHMuZm9ybWF0ID09PSAiYmFzaWMiID8gInNzIiA6ICI6c3MiOwogICAgICAgIGlmICghb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcyB8fCB2YWx1ZS5taWxsaXNlY29uZHMgIT09IDApIHsKICAgICAgICAgIGZtdCArPSAiLlNTUyI7CiAgICAgICAgfQogICAgICB9CgogICAgICBsZXQgc3RyID0gdmFsdWUudG9Gb3JtYXQoZm10KTsKCiAgICAgIGlmIChvcHRzLmluY2x1ZGVQcmVmaXgpIHsKICAgICAgICBzdHIgPSAiVCIgKyBzdHI7CiAgICAgIH0KCiAgICAgIHJldHVybiBzdHI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0pTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSVNPKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBkZWJ1Z2dpbmcuCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU3RyaW5nKCkgewogICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBtaWxsaXNlY29uZHMgdmFsdWUgb2YgdGhpcyBEdXJhdGlvbi4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdG9NaWxsaXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmFzKCJtaWxsaXNlY29uZHMiKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uIEFsaWFzIG9mIHtAbGluayB0b01pbGxpc30KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdmFsdWVPZigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBsb25nZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHBsdXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksCiAgICAgICAgcmVzdWx0ID0ge307CgogICAgICBmb3IgKGNvbnN0IGsgb2Ygb3JkZXJlZFVuaXRzJDEpIHsKICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkoZHVyLnZhbHVlcywgaykgfHwgaGFzT3duUHJvcGVydHkodGhpcy52YWx1ZXMsIGspKSB7CiAgICAgICAgICByZXN1bHRba10gPSBkdXIuZ2V0KGspICsgdGhpcy5nZXQoayk7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogTWFrZSB0aGlzIER1cmF0aW9uIHNob3J0ZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgbWludXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CiAgICAgIHJldHVybiB0aGlzLnBsdXMoZHVyLm5lZ2F0ZSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNjYWxlIHRoaXMgRHVyYXRpb24gYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCB1bml0LiBBcml0eSBpcyAxIG9yIDI6IHRoZSB2YWx1ZSBvZiB0aGUgdW5pdCBhbmQsIG9wdGlvbmFsbHksIHRoZSB1bml0IG5hbWUuIE11c3QgcmV0dXJuIGEgbnVtYmVyLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBtaW51dGVzOiAzMCB9KS5tYXBVbml0cyh4ID0+IHggKiAyKSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDYwIH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgbWludXRlczogMzAgfSkubWFwVW5pdHMoKHgsIHUpID0+IHUgPT09ICJob3VycyIgPyB4ICogMiA6IHgpIC8vPT4geyBob3VyczogMiwgbWludXRlczogMzAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG1hcFVuaXRzKGZuKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgY29uc3QgcmVzdWx0ID0ge307CiAgICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpIHsKICAgICAgICByZXN1bHRba10gPSBhc051bWJlcihmbih0aGlzLnZhbHVlc1trXSwgaykpOwogICAgICB9CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiByZXN1bHQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHZhbHVlIG9mIHVuaXQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGUnIG9yICdkYXknCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgneWVhcnMnKSAvLz0+IDIKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCdtb250aHMnKSAvLz0+IDAKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCdkYXlzJykgLy89PiAzCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCh1bml0KSB7CiAgICAgIHJldHVybiB0aGlzW0R1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCldOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IHZhbHVlcyAtIGEgbWFwcGluZyBvZiB1bml0cyB0byBudW1iZXJzCiAgICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgeWVhcnM6IDIwMTcgfSkKICAgICAqIEBleGFtcGxlIGR1ci5zZXQoeyBob3VyczogOCwgbWludXRlczogMzAgfSkKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzZXQodmFsdWVzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IG1peGVkID0geyAuLi50aGlzLnZhbHVlcywgLi4ubm9ybWFsaXplT2JqZWN0KHZhbHVlcywgRHVyYXRpb24ubm9ybWFsaXplVW5pdCkgfTsKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IG1peGVkIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIGxvY2FsZSBhbmQvb3IgbnVtYmVyaW5nU3lzdGVtLiAgUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICogQGV4YW1wbGUgZHVyLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgY29udmVyc2lvbkFjY3VyYWN5LCBtYXRyaXggfSA9IHt9KSB7CiAgICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0gfSk7CiAgICAgIGNvbnN0IG9wdHMgPSB7IGxvYywgbWF0cml4LCBjb252ZXJzaW9uQWNjdXJhY3kgfTsKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgZHVyYXRpb24gaW4gdGhlIHNwZWNpZmllZCB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlcycgb3IgJ2RheXMnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdkYXlzJykgLy89PiAzNjUKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAxfSkuYXMoJ21vbnRocycpIC8vPT4gMTIKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe2hvdXJzOiA2MH0pLmFzKCdkYXlzJykgLy89PiAyLjUKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgYXModW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5zaGlmdFRvKHVuaXQpLmdldCh1bml0KSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJlZHVjZSB0aGlzIER1cmF0aW9uIHRvIGl0cyBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gaW4gaXRzIGN1cnJlbnQgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDIsIGRheXM6IDUwMDAgfSkubm9ybWFsaXplKCkudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDE1LCBkYXlzOiAyNTUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMiwgbWludXRlczogLTQ1IH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMTUgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5vcm1hbGl6ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2NhbGUgdW5pdHMgdG8gaXRzIGxhcmdlc3QgcmVwcmVzZW50YXRpb24KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDkwMDAwIH0pLnJlc2NhbGUoKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiAxLCBzZWNvbmRzOiAzMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVzY2FsZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gcmVtb3ZlWmVyb2VzKHRoaXMubm9ybWFsaXplKCkuc2hpZnRUb0FsbCgpLnRvT2JqZWN0KCkpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG8oLi4udW5pdHMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CgogICAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7CgogICAgICBjb25zdCBidWlsdCA9IHt9LAogICAgICAgIGFjY3VtdWxhdGVkID0ge30sCiAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgbGV0IGxhc3RVbml0OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkgewogICAgICAgICAgbGFzdFVuaXQgPSBrOwoKICAgICAgICAgIGxldCBvd24gPSAwOwoKICAgICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdAogICAgICAgICAgZm9yIChjb25zdCBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgdGhhdCdzIGFscmVhZHkgaW4gdGhpcyB1bml0CiAgICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHsKICAgICAgICAgICAgb3duICs9IHZhbHNba107CiAgICAgICAgICB9CgogICAgICAgICAgY29uc3QgaSA9IE1hdGgudHJ1bmMob3duKTsKICAgICAgICAgIGJ1aWx0W2tdID0gaTsKICAgICAgICAgIGFjY3VtdWxhdGVkW2tdID0gKG93biAqIDEwMDAgLSBpICogMTAwMCkgLyAxMDAwOwoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgZnVydGhlciBkb3duIHRoZSBjaGFpbiB0aGF0IHNob3VsZCBiZSByb2xsZWQgdXAgaW4gdG8gdGhpcwogICAgICAgICAgZm9yIChjb25zdCBkb3duIGluIHZhbHMpIHsKICAgICAgICAgICAgaWYgKG9yZGVyZWRVbml0cyQxLmluZGV4T2YoZG93bikgPiBvcmRlcmVkVW5pdHMkMS5pbmRleE9mKGspKSB7CiAgICAgICAgICAgICAgY29udmVydCh0aGlzLm1hdHJpeCwgdmFscywgZG93biwgYnVpbHQsIGspOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICAvLyBvdGhlcndpc2UsIGtlZXAgaXQgaW4gdGhlIHdpbmdzIHRvIGJvaWwgaXQgbGF0ZXIKICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKHZhbHNba10pKSB7CiAgICAgICAgICBhY2N1bXVsYXRlZFtrXSA9IHZhbHNba107CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBhbnl0aGluZyBsZWZ0b3ZlciBiZWNvbWVzIHRoZSBkZWNpbWFsIGZvciB0aGUgbGFzdCB1bml0CiAgICAgIC8vIGxhc3RVbml0IG11c3QgYmUgZGVmaW5lZCBzaW5jZSB1bml0cyBpcyBub3QgZW1wdHkKICAgICAgZm9yIChjb25zdCBrZXkgaW4gYWNjdW11bGF0ZWQpIHsKICAgICAgICBpZiAoYWNjdW11bGF0ZWRba2V5XSAhPT0gMCkgewogICAgICAgICAgYnVpbHRbbGFzdFVuaXRdICs9CiAgICAgICAgICAgIGtleSA9PT0gbGFzdFVuaXQgPyBhY2N1bXVsYXRlZFtrZXldIDogYWNjdW11bGF0ZWRba2V5XSAvIHRoaXMubWF0cml4W2xhc3RVbml0XVtrZXldOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IGJ1aWx0IH0sIHRydWUpLm5vcm1hbGl6ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogU2hpZnQgdGhpcyBEdXJhdGlvbiB0byBhbGwgYXZhaWxhYmxlIHVuaXRzLgogICAgICogU2FtZSBhcyBzaGlmdFRvKCJ5ZWFycyIsICJtb250aHMiLCAid2Vla3MiLCAiZGF5cyIsICJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiLCAibWlsbGlzZWNvbmRzIikKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzaGlmdFRvQWxsKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIHJldHVybiB0aGlzLnNoaWZ0VG8oCiAgICAgICAgInllYXJzIiwKICAgICAgICAibW9udGhzIiwKICAgICAgICAid2Vla3MiLAogICAgICAgICJkYXlzIiwKICAgICAgICAiaG91cnMiLAogICAgICAgICJtaW51dGVzIiwKICAgICAgICAic2Vjb25kcyIsCiAgICAgICAgIm1pbGxpc2Vjb25kcyIKICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbmVnYXRpdmUgb2YgdGhpcyBEdXJhdGlvbi4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgc2Vjb25kczogMzAgfSkubmVnYXRlKCkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IC0xLCBzZWNvbmRzOiAtMzAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5lZ2F0ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBuZWdhdGVkID0ge307CiAgICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpIHsKICAgICAgICBuZWdhdGVkW2tdID0gdGhpcy52YWx1ZXNba10gPT09IDAgPyAwIDogLXRoaXMudmFsdWVzW2tdOwogICAgICB9CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiBuZWdhdGVkIH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB5ZWFycy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB5ZWFycygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnllYXJzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHF1YXJ0ZXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHF1YXJ0ZXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMucXVhcnRlcnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbW9udGhzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1vbnRocygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1vbnRocyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB3ZWVrcwogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMud2Vla3MgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGF5cy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBkYXlzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuZGF5cyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBob3Vycy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBob3VycygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLmhvdXJzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbnV0ZXMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWludXRlcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbnV0ZXMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2Vjb25kcy4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgZ2V0IHNlY29uZHMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5zZWNvbmRzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbGxpc2Vjb25kcy4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1pbGxpc2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbGxpc2Vjb25kcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBEdXJhdGlvbiBpcyBpbnZhbGlkLiBJbnZhbGlkIGR1cmF0aW9ucyBhcmUgcmV0dXJuZWQgYnkgZGlmZiBvcGVyYXRpb25zCiAgICAgKiBvbiBpbnZhbGlkIERhdGVUaW1lcyBvciBJbnRlcnZhbHMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA9PT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICBnZXQgaW52YWxpZFJlYXNvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEdXJhdGlvbiBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRHVyYXRpb24gaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogRXF1YWxpdHkgY2hlY2sKICAgICAqIFR3byBEdXJhdGlvbnMgYXJlIGVxdWFsIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUgdW5pdHMgYW5kIHRoZSBzYW1lIHZhbHVlcyBmb3IgZWFjaCB1bml0LgogICAgICogQHBhcmFtIHtEdXJhdGlvbn0gb3RoZXIKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGVxdWFscyhvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhb3RoZXIuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQoKICAgICAgaWYgKCF0aGlzLmxvYy5lcXVhbHMob3RoZXIubG9jKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gZXEodjEsIHYyKSB7CiAgICAgICAgLy8gQ29uc2lkZXIgMCBhbmQgdW5kZWZpbmVkIGFzIGVxdWFsCiAgICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQgfHwgdjEgPT09IDApIHJldHVybiB2MiA9PT0gdW5kZWZpbmVkIHx8IHYyID09PSAwOwogICAgICAgIHJldHVybiB2MSA9PT0gdjI7CiAgICAgIH0KCiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMkMSkgewogICAgICAgIGlmICghZXEodGhpcy52YWx1ZXNbdV0sIG90aGVyLnZhbHVlc1t1XSkpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgfQoKICBjb25zdCBJTlZBTElEJDEgPSAiSW52YWxpZCBJbnRlcnZhbCI7CgogIC8vIGNoZWNrcyBpZiB0aGUgc3RhcnQgaXMgZXF1YWwgdG8gb3IgYmVmb3JlIHRoZSBlbmQKICBmdW5jdGlvbiB2YWxpZGF0ZVN0YXJ0RW5kKHN0YXJ0LCBlbmQpIHsKICAgIGlmICghc3RhcnQgfHwgIXN0YXJ0LmlzVmFsaWQpIHsKICAgICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoIm1pc3Npbmcgb3IgaW52YWxpZCBzdGFydCIpOwogICAgfSBlbHNlIGlmICghZW5kIHx8ICFlbmQuaXNWYWxpZCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIGVuZCIpOwogICAgfSBlbHNlIGlmIChlbmQgPCBzdGFydCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgKICAgICAgICAiZW5kIGJlZm9yZSBzdGFydCIsCiAgICAgICAgYFRoZSBlbmQgb2YgYW4gaW50ZXJ2YWwgbXVzdCBiZSBhZnRlciBpdHMgc3RhcnQsIGJ1dCB5b3UgaGFkIHN0YXJ0PSR7c3RhcnQudG9JU08oKX0gYW5kIGVuZD0ke2VuZC50b0lTTygpfWAKICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgLyoqCiAgICogQW4gSW50ZXJ2YWwgb2JqZWN0IHJlcHJlc2VudHMgYSBoYWxmLW9wZW4gaW50ZXJ2YWwgb2YgdGltZSwgd2hlcmUgZWFjaCBlbmRwb2ludCBpcyBhIHtAbGluayBEYXRlVGltZX0uIENvbmNlcHR1YWxseSwgaXQncyBhIGNvbnRhaW5lciBmb3IgdGhvc2UgdHdvIGVuZHBvaW50cywgYWNjb21wYW5pZWQgYnkgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIGNvbXBhcmluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBhbmQgZ2V0dGVycyBpbiBJbnRlcnZhbDoKICAgKgogICAqICogKipDcmVhdGlvbioqIFRvIGNyZWF0ZSBhbiBJbnRlcnZhbCwgdXNlIHtAbGluayBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzfSwge0BsaW5rIEludGVydmFsLmFmdGVyfSwge0BsaW5rIEludGVydmFsLmJlZm9yZX0sIG9yIHtAbGluayBJbnRlcnZhbC5mcm9tSVNPfS4KICAgKiAqICoqQWNjZXNzb3JzKiogVXNlIHtAbGluayBJbnRlcnZhbCNzdGFydH0gYW5kIHtAbGluayBJbnRlcnZhbCNlbmR9IHRvIGdldCB0aGUgc3RhcnQgYW5kIGVuZC4KICAgKiAqICoqSW50ZXJyb2dhdGlvbioqIFRvIGFuYWx5emUgdGhlIEludGVydmFsLCB1c2Uge0BsaW5rIEludGVydmFsI2NvdW50fSwge0BsaW5rIEludGVydmFsI2xlbmd0aH0sIHtAbGluayBJbnRlcnZhbCNoYXNTYW1lfSwge0BsaW5rIEludGVydmFsI2NvbnRhaW5zfSwge0BsaW5rIEludGVydmFsI2lzQWZ0ZXJ9LCBvciB7QGxpbmsgSW50ZXJ2YWwjaXNCZWZvcmV9LgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqIFRvIGNyZWF0ZSBvdGhlciBJbnRlcnZhbHMgb3V0IG9mIHRoaXMgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI3NldH0sIHtAbGluayBJbnRlcnZhbCNzcGxpdEF0fSwge0BsaW5rIEludGVydmFsI3NwbGl0Qnl9LCB7QGxpbmsgSW50ZXJ2YWwjZGl2aWRlRXF1YWxseX0sIHtAbGluayBJbnRlcnZhbC5tZXJnZX0sIHtAbGluayBJbnRlcnZhbC54b3J9LCB7QGxpbmsgSW50ZXJ2YWwjdW5pb259LCB7QGxpbmsgSW50ZXJ2YWwjaW50ZXJzZWN0aW9ufSwgb3Ige0BsaW5rIEludGVydmFsI2RpZmZlcmVuY2V9LgogICAqICogKipDb21wYXJpc29uKiogVG8gY29tcGFyZSB0aGlzIEludGVydmFsIHRvIGFub3RoZXIgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI2VxdWFsc30sIHtAbGluayBJbnRlcnZhbCNvdmVybGFwc30sIHtAbGluayBJbnRlcnZhbCNhYnV0c1N0YXJ0fSwge0BsaW5rIEludGVydmFsI2FidXRzRW5kfSwge0BsaW5rIEludGVydmFsI2VuZ3VsZnN9CiAgICogKiAqKk91dHB1dCoqIFRvIGNvbnZlcnQgdGhlIEludGVydmFsIGludG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCBzZWUge0BsaW5rIEludGVydmFsI3RvU3RyaW5nfSwge0BsaW5rIEludGVydmFsI3RvTG9jYWxlU3RyaW5nfSwge0BsaW5rIEludGVydmFsI3RvSVNPfSwge0BsaW5rIEludGVydmFsI3RvSVNPRGF0ZX0sIHtAbGluayBJbnRlcnZhbCN0b0lTT1RpbWV9LCB7QGxpbmsgSW50ZXJ2YWwjdG9Gb3JtYXR9LCBhbmQge0BsaW5rIEludGVydmFsI3RvRHVyYXRpb259LgogICAqLwogIGNsYXNzIEludGVydmFsIHsKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwogICAgY29uc3RydWN0b3IoY29uZmlnKSB7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMucyA9IGNvbmZpZy5zdGFydDsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5lID0gY29uZmlnLmVuZDsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5pbnZhbGlkID0gY29uZmlnLmludmFsaWQgfHwgbnVsbDsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5pc0x1eG9uSW50ZXJ2YWwgPSB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgSW50ZXJ2YWwuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBJbnRlcnZhbCBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgSW50ZXJ2YWwgaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRJbnRlcnZhbEVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwoeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhIHN0YXJ0IERhdGVUaW1lIGFuZCBhbiBlbmQgRGF0ZVRpbWUuIEluY2x1c2l2ZSBvZiB0aGUgc3RhcnQgYnV0IG5vdCB0aGUgZW5kLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IGVuZAogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpIHsKICAgICAgY29uc3QgYnVpbHRTdGFydCA9IGZyaWVuZGx5RGF0ZVRpbWUoc3RhcnQpLAogICAgICAgIGJ1aWx0RW5kID0gZnJpZW5kbHlEYXRlVGltZShlbmQpOwoKICAgICAgY29uc3QgdmFsaWRhdGVFcnJvciA9IHZhbGlkYXRlU3RhcnRFbmQoYnVpbHRTdGFydCwgYnVpbHRFbmQpOwoKICAgICAgaWYgKHZhbGlkYXRlRXJyb3IgPT0gbnVsbCkgewogICAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwoewogICAgICAgICAgc3RhcnQ6IGJ1aWx0U3RhcnQsCiAgICAgICAgICBlbmQ6IGJ1aWx0RW5kLAogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB2YWxpZGF0ZUVycm9yOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhIHN0YXJ0IERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCB0by4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IHN0YXJ0CiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGFmdGVyKHN0YXJ0LCBkdXJhdGlvbikgewogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKSwKICAgICAgICBkdCA9IGZyaWVuZGx5RGF0ZVRpbWUoc3RhcnQpOwogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdCwgZHQucGx1cyhkdXIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIGVuZCBEYXRlVGltZSBhbmQgYSBEdXJhdGlvbiB0byBleHRlbmQgYmFja3dhcmRzIHRvLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGJlZm9yZShlbmQsIGR1cmF0aW9uKSB7CiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShlbmQpOwogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdC5taW51cyhkdXIpLCBkdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhbiBJU08gODYwMSBzdHJpbmcuCiAgICAgKiBBY2NlcHRzIGA8c3RhcnQ+LzxlbmQ+YCwgYDxzdGFydD4vPGR1cmF0aW9uPmAsIGFuZCBgPGR1cmF0aW9uPi88ZW5kPmAgZm9ybWF0cy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIElTTyBzdHJpbmcgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBvcHRpb25zIHRvIHBhc3Mge0BsaW5rIERhdGVUaW1lI2Zyb21JU099IGFuZCBvcHRpb25hbGx5IHtAbGluayBEdXJhdGlvbiNmcm9tSVNPfQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMpIHsKICAgICAgY29uc3QgW3MsIGVdID0gKHRleHQgfHwgIiIpLnNwbGl0KCIvIiwgMik7CiAgICAgIGlmIChzICYmIGUpIHsKICAgICAgICBsZXQgc3RhcnQsIHN0YXJ0SXNWYWxpZDsKICAgICAgICB0cnkgewogICAgICAgICAgc3RhcnQgPSBEYXRlVGltZS5mcm9tSVNPKHMsIG9wdHMpOwogICAgICAgICAgc3RhcnRJc1ZhbGlkID0gc3RhcnQuaXNWYWxpZDsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBzdGFydElzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGxldCBlbmQsIGVuZElzVmFsaWQ7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGVuZCA9IERhdGVUaW1lLmZyb21JU08oZSwgb3B0cyk7CiAgICAgICAgICBlbmRJc1ZhbGlkID0gZW5kLmlzVmFsaWQ7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgZW5kSXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCAmJiBlbmRJc1ZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCwgZW5kKTsKICAgICAgICB9CgogICAgICAgIGlmIChzdGFydElzVmFsaWQpIHsKICAgICAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21JU08oZSwgb3B0cyk7CiAgICAgICAgICBpZiAoZHVyLmlzVmFsaWQpIHsKICAgICAgICAgICAgcmV0dXJuIEludGVydmFsLmFmdGVyKHN0YXJ0LCBkdXIpOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoZW5kSXNWYWxpZCkgewogICAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhzLCBvcHRzKTsKICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYmVmb3JlKGVuZCwgZHVyKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBJbnRlcnZhbC4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0ludGVydmFsKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkludGVydmFsKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHN0YXJ0IG9mIHRoZSBJbnRlcnZhbAogICAgICogQHR5cGUge0RhdGVUaW1lfQogICAgICovCiAgICBnZXQgc3RhcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnMgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZW5kIG9mIHRoZSBJbnRlcnZhbAogICAgICogQHR5cGUge0RhdGVUaW1lfQogICAgICovCiAgICBnZXQgZW5kKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5lIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGF0IGxlYXN0IGl0cyBzdGFydCwgbWVhbmluZyB0aGF0IHRoZSBJbnRlcnZhbCBpc24ndCAnYmFja3dhcmRzJy4KICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZFJlYXNvbiA9PT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIEludGVydmFsIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIEludGVydmFsIGlzIHZhbGlkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgaW52YWxpZFJlYXNvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBJbnRlcnZhbCBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbCBpbiB0aGUgc3BlY2lmaWVkIHVuaXQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byByZXR1cm4gdGhlIGxlbmd0aCBpbi4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgbGVuZ3RoKHVuaXQgPSAibWlsbGlzZWNvbmRzIikgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0R1cmF0aW9uKC4uLlt1bml0XSkuZ2V0KHVuaXQpIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY291bnQgb2YgbWludXRlcywgaG91cnMsIGRheXMsIG1vbnRocywgb3IgeWVhcnMgaW5jbHVkZWQgaW4gdGhlIEludGVydmFsLCBldmVuIGluIHBhcnQuCiAgICAgKiBVbmxpa2Uge0BsaW5rIEludGVydmFsI2xlbmd0aH0gdGhpcyBjb3VudHMgc2VjdGlvbnMgb2YgdGhlIGNhbGVuZGFyLCBub3QgcGVyaW9kcyBvZiB0aW1lLCBlLmcuIHNwZWNpZnlpbmcgJ2RheScKICAgICAqIGFza3MgJ3doYXQgZGF0ZXMgYXJlIGluY2x1ZGVkIGluIHRoaXMgaW50ZXJ2YWw/Jywgbm90ICdob3cgbWFueSBkYXlzIGxvbmcgaXMgdGhpcyBpbnRlcnZhbD8nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3VuaXQ9J21pbGxpc2Vjb25kcyddIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgY291bnQodW5pdCA9ICJtaWxsaXNlY29uZHMiKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gTmFOOwogICAgICBjb25zdCBzdGFydCA9IHRoaXMuc3RhcnQuc3RhcnRPZih1bml0KSwKICAgICAgICBlbmQgPSB0aGlzLmVuZC5zdGFydE9mKHVuaXQpOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihlbmQuZGlmZihzdGFydCwgdW5pdCkuZ2V0KHVuaXQpKSArIDE7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5pc0VtcHR5KCkgfHwgdGhpcy5lLm1pbnVzKDEpLmhhc1NhbWUodGhpcy5zLCB1bml0KSA6IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0VtcHR5KCkgewogICAgICByZXR1cm4gdGhpcy5zLnZhbHVlT2YoKSA9PT0gdGhpcy5lLnZhbHVlT2YoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGlzQWZ0ZXIoZGF0ZVRpbWUpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGNvbnRhaW5zKGRhdGVUaW1lKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0cyIgdGhlIHN0YXJ0IGFuZC9vciBlbmQgZGF0ZXMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldAogICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuZW5kIC0gdGhlIGVuZGluZyBEYXRlVGltZQogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHNldCh7IHN0YXJ0LCBlbmQgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzcGxpdEF0KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXMKICAgICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSkKICAgICAgICAgIC5maWx0ZXIoKGQpID0+IHRoaXMuY29udGFpbnMoZCkpCiAgICAgICAgICAuc29ydCgpLAogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpID0gMDsKCiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLAogICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaSArPSAxOwogICAgICB9CgogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLgogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CgogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhZHVyLmlzVmFsaWQgfHwgZHVyLmFzKCJtaWxsaXNlY29uZHMiKSA9PT0gMCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQoKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpZHggPSAxLAogICAgICAgIG5leHQ7CgogICAgICBjb25zdCByZXN1bHRzID0gW107CiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7CiAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaWR4ICs9IDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgZGl2aWRlRXF1YWxseShudW1iZXJPZlBhcnRzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBvdmVybGFwcyhvdGhlcikgewogICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgYWJ1dHNTdGFydChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBhYnV0c0VuZChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGVuZ3VsZnMgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlbmd1bGZzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gb3RoZXIucyAmJiB0aGlzLmUgPj0gb3RoZXIuZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLnMuZXF1YWxzKG90aGVyLnMpICYmIHRoaXMuZS5lcXVhbHMob3RoZXIuZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIGludGVyc2VjdGlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CgogICAgICBpZiAocyA+PSBlKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtaW5pbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtYXhpbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bmlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPCBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy4KICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHMKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzCiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucykKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHsKICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFtbXSwgbnVsbF0KICAgICAgICApOwogICAgICBpZiAoZmluYWwpIHsKICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgfQogICAgICByZXR1cm4gZm91bmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHN0YXRpYyB4b3IoaW50ZXJ2YWxzKSB7CiAgICAgIGxldCBzdGFydCA9IG51bGwsCiAgICAgICAgY3VycmVudENvdW50ID0gMDsKICAgICAgY29uc3QgcmVzdWx0cyA9IFtdLAogICAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbCiAgICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogInMiIH0sCiAgICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogImUiIH0sCiAgICAgICAgXSksCiAgICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSwKICAgICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTsKCiAgICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHsKICAgICAgICBjdXJyZW50Q291bnQgKz0gaS50eXBlID09PSAicyIgPyAxIDogLTE7CgogICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgIHN0YXJ0ID0gaS50aW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTsKICAgICAgICAgIH0KCiAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKQogICAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKQogICAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IOKAkyAke3RoaXMuZS50b0lTTygpfSlgOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgSW50ZXJ2YWwuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUKICAgICAqIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMKICAgICAqIHtAbGluayBEYXRlVGltZS5EQVRFX0ZVTEx9IG9yIHtAbGluayBEYXRlVGltZS5USU1FX1NJTVBMRX0uIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZAogICAgICogaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICAgKiBJbnRlcnZhbCBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbgogICAgICogc3BlY2lmaWVkLgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICogQHBhcmFtIHtPYmplY3R9IFtmb3JtYXRPcHRzPURhdGVUaW1lLkRBVEVfU0hPUlRdIC0gRWl0aGVyIGEgRGF0ZVRpbWUgcHJlc2V0IG9yCiAgICAgKiBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN0YXJ0IERhdGVUaW1lLgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDExLzcvMjAyMiDigJMgMTEvOC8yMDIyCiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDA5OjAwWi8yMDIyLTExLTA4VDA5OjAwWicpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gTm92ZW1iZXIgNyDigJMgOCwgMjAyMgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnItRlInIH0pOyAvLz0+IDfigJM4IG5vdmVtYnJlIDIwMjIKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+IDY6MDAg4oCTIDg6MDAgUE0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gTW9uLCBOb3YgMDcsIDY6MDAg4oCTIDg6MDAgcAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5zLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0SW50ZXJ2YWwodGhpcykKICAgICAgICA6IElOVkFMSUQkMTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT30KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08ob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRpbWUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQKICAgICAqIHN0cmluZy4gKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZQogICAgICogZm9ybWF0dGluZyB0b29sLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSBUaGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLgogICAgICogU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gQSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICogcmVwcmVzZW50YXRpb25zLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9ICIg4oCTICIgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvRm9ybWF0KGRhdGVGb3JtYXQpfSR7c2VwYXJhdG9yfSR7dGhpcy5lLnRvRm9ybWF0KGRhdGVGb3JtYXQpfWA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHRvRHVyYXRpb24odW5pdCwgb3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKHRoaXMuaW52YWxpZFJlYXNvbik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGbgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpCiAgICAgKi8KICAgIG1hcEVuZHBvaW50cyhtYXBGbikgewogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICovCiAgY2xhc3MgSW5mbyB7CiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7CiAgICAgIGNvbnN0IHByb3RvID0gRGF0ZVRpbWUubm93KCkuc2V0Wm9uZSh6b25lKS5zZXQoeyBtb250aDogMTIgfSk7CgogICAgICByZXR1cm4gIXpvbmUuaXNVbml2ZXJzYWwgJiYgcHJvdG8ub2Zmc2V0ICE9PSBwcm90by5zZXQoeyBtb250aDogNiB9KS5vZmZzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzVmFsaWRJQU5BWm9uZSh6b25lKSB7CiAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLgogICAgICoKICAgICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlCiAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lCiAgICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuCiAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC4KICAgICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy4KICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9mhJwogICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiacq7IEknCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1vbnRocygKICAgICAgbGVuZ3RoID0gImxvbmciLAogICAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gImdyZWdvcnkiIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IG1vbnRoIG5hbWVzLgogICAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jbW9udGhzfQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJudW1lcmljIiwgIjItZGlnaXQiLCAibmFycm93IiwgInNob3J0IiwgImxvbmciCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXIKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbW9udGhzRm9ybWF0KAogICAgICBsZW5ndGggPSAibG9uZyIsCiAgICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSAiZ3JlZ29yeSIgfSA9IHt9CiAgICApIHsKICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknCiAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2KfZhNin2KvZhtmK2YYnCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9ICJsb25nIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkgewogICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoCiAgICAgIGxlbmd0aCA9ICJsb25nIiwKICAgICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICfhgJThgLbhgJThgIDhgLonLCAn4YCK4YCU4YCxJyBdCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdCiAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IErDqXN1cy1DaHJpc3QnLCAnYXByw6hzIErDqXN1cy1DaHJpc3QnIF0KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgZXJhcyhsZW5ndGggPSAic2hvcnQiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgImdyZWdvcnkiKS5lcmFzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS4KICAgICAqIEtleXM6CiAgICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcKICAgICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZlYXR1cmVzKCkgewogICAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikgewogICAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksCiAgICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7CiAgICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcygiZGF5cyIpKTsKICB9CgogIGZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7CiAgICBjb25zdCBkaWZmZXJzID0gWwogICAgICBbInllYXJzIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sCiAgICAgIFsicXVhcnRlcnMiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyICsgKGIueWVhciAtIGEueWVhcikgKiA0XSwKICAgICAgWyJtb250aHMiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSwKICAgICAgWwogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgKGEsIGIpID0+IHsKICAgICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpOwogICAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3OwogICAgICAgIH0sCiAgICAgIF0sCiAgICAgIFsiZGF5cyIsIGRheURpZmZdLAogICAgXTsKCiAgICBjb25zdCByZXN1bHRzID0ge307CiAgICBjb25zdCBlYXJsaWVyID0gY3Vyc29yOwogICAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7CgogICAgZm9yIChjb25zdCBbdW5pdCwgZGlmZmVyXSBvZiBkaWZmZXJzKSB7CiAgICAgIGlmICh1bml0cy5pbmRleE9mKHVuaXQpID49IDApIHsKICAgICAgICBsb3dlc3RPcmRlciA9IHVuaXQ7CgogICAgICAgIHJlc3VsdHNbdW5pdF0gPSBkaWZmZXIoY3Vyc29yLCBsYXRlcik7CiAgICAgICAgaGlnaFdhdGVyID0gZWFybGllci5wbHVzKHJlc3VsdHMpOwoKICAgICAgICBpZiAoaGlnaFdhdGVyID4gbGF0ZXIpIHsKICAgICAgICAgIHJlc3VsdHNbdW5pdF0tLTsKICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3Vyc29yID0gaGlnaFdhdGVyOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTsKICB9CgogIGZ1bmN0aW9uIGRpZmYgKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykgewogICAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTsKCiAgICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjsKCiAgICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoCiAgICAgICh1KSA9PiBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiXS5pbmRleE9mKHUpID49IDAKICAgICk7CgogICAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHsKICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pOwogICAgICB9CgogICAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHsKICAgICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpOwogICAgICB9CiAgICB9CgogICAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpOwoKICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpCiAgICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKQogICAgICAgIC5wbHVzKGR1cmF0aW9uKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBkdXJhdGlvbjsKICAgIH0KICB9CgogIGNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICBhcmFiOiAiW1x1MDY2MC1cdTA2NjldIiwKICAgIGFyYWJleHQ6ICJbXHUwNkYwLVx1MDZGOV0iLAogICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICBiZW5nOiAiW1x1MDlFNi1cdTA5RUZdIiwKICAgIGRldmE6ICJbXHUwOTY2LVx1MDk2Rl0iLAogICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgZ3VqcjogIltcdTBBRTYtXHUwQUVGXSIsCiAgICBoYW5pZGVjOiAiW+OAh3zkuIB85LqMfOS4iXzlm5t85LqUfOWFrXzkuIN85YWrfOS5nV0iLAogICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICBrbmRhOiAiW1x1MENFNi1cdTBDRUZdIiwKICAgIGxhb286ICJbXHUwRUQwLVx1MEVEOV0iLAogICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICBtbHltOiAiW1x1MEQ2Ni1cdTBENkZdIiwKICAgIG1vbmc6ICJbXHUxODEwLVx1MTgxOV0iLAogICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICBvcnlhOiAiW1x1MEI2Ni1cdTBCNkZdIiwKICAgIHRhbWxkZWM6ICJbXHUwQkU2LVx1MEJFRl0iLAogICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICB0aGFpOiAiW1x1MEU1MC1cdTBFNTldIiwKICAgIHRpYnQ6ICJbXHUwRjIwLVx1MEYyOV0iLAogICAgbGF0bjogIlxcZCIsCiAgfTsKCiAgY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgYXJhYjogWzE2MzIsIDE2NDFdLAogICAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLAogICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgYmVuZzogWzI1MzQsIDI1NDNdLAogICAgZGV2YTogWzI0MDYsIDI0MTVdLAogICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgZ3VqcjogWzI3OTAsIDI3OTldLAogICAga2htcjogWzYxMTIsIDYxMjFdLAogICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgbGFvbzogWzM3OTIsIDM4MDFdLAogICAgbGltYjogWzY0NzAsIDY0NzldLAogICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgbW9uZzogWzYxNjAsIDYxNjldLAogICAgbXltcjogWzQxNjAsIDQxNjldLAogICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLAogICAgdGVsdTogWzMxNzQsIDMxODNdLAogICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgdGlidDogWzM4NzIsIDM4ODFdLAogIH07CgogIGNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFt8XF1dL2csICIiKS5zcGxpdCgiIik7CgogIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7CiAgICBpZiAoaXNOYU4odmFsdWUpKSB7CiAgICAgIHZhbHVlID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwoKICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7CiAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTsKICAgICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7CiAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gIiIpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8ICJsYXRuIl19JHthcHBlbmR9YCk7CiAgfQoKICBjb25zdCBNSVNTSU5HX0ZUUCA9ICJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0IjsKCiAgZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07CiAgfQoKICBjb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogIGNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gOwogIGNvbnN0IHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHsKICAgIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbAogICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgcmV0dXJuIHMucmVwbGFjZSgvXC4vZywgIlxcLj8iKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICByZXR1cm4gcwogICAgICAucmVwbGFjZSgvXC4vZywgIiIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsCiAgICAgIC5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCAiICIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwCiAgICAgIC50b0xvd2VyQ2FzZSgpOwogIH0KCiAgZnVuY3Rpb24gb25lT2Yoc3RyaW5ncywgc3RhcnRJbmRleCkgewogICAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgIGRlc2VyOiAoW3NdKSA9PgogICAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LAogICAgICB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFssIGgsIG1dKSA9PiBzaWduZWRPZmZzZXQoaCwgbSksIGdyb3VwcyB9OwogIH0KCiAgZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTsKICB9CgogIGZ1bmN0aW9uIGVzY2FwZVRva2VuKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgIlxcJCYiKTsKICB9CgogIGZ1bmN0aW9uIHVuaXRGb3JUb2tlbih0b2tlbiwgbG9jKSB7CiAgICBjb25zdCBvbmUgPSBkaWdpdFJlZ2V4KGxvYyksCiAgICAgIHR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezJ9IiksCiAgICAgIHRocmVlID0gZGlnaXRSZWdleChsb2MsICJ7M30iKSwKICAgICAgZm91ciA9IGRpZ2l0UmVnZXgobG9jLCAiezR9IiksCiAgICAgIHNpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezZ9IiksCiAgICAgIG9uZU9yVHdvID0gZGlnaXRSZWdleChsb2MsICJ7MSwyfSIpLAogICAgICBvbmVUb1RocmVlID0gZGlnaXRSZWdleChsb2MsICJ7MSwzfSIpLAogICAgICBvbmVUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezEsNn0iKSwKICAgICAgb25lVG9OaW5lID0gZGlnaXRSZWdleChsb2MsICJ7MSw5fSIpLAogICAgICB0d29Ub0ZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgInsyLDR9IiksCiAgICAgIGZvdXJUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezQsNn0iKSwKICAgICAgbGl0ZXJhbCA9ICh0KSA9PiAoeyByZWdleDogUmVnRXhwKGVzY2FwZVRva2VuKHQudmFsKSksIGRlc2VyOiAoW3NdKSA9PiBzLCBsaXRlcmFsOiB0cnVlIH0pLAogICAgICB1bml0YXRlID0gKHQpID0+IHsKICAgICAgICBpZiAodG9rZW4ubGl0ZXJhbCkgewogICAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7CiAgICAgICAgfQogICAgICAgIHN3aXRjaCAodC52YWwpIHsKICAgICAgICAgIC8vIGVyYQogICAgICAgICAgY2FzZSAiRyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcygic2hvcnQiLCBmYWxzZSksIDApOwogICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoImxvbmciLCBmYWxzZSksIDApOwogICAgICAgICAgLy8geWVhcnMKICAgICAgICAgIGNhc2UgInkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1NpeCk7CiAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwogICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXIpOwogICAgICAgICAgY2FzZSAieXl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyVG9TaXgpOwogICAgICAgICAgY2FzZSAieXl5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoc2l4KTsKICAgICAgICAgIC8vIG1vbnRocwogICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIk1NIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIk1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIHRydWUsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJNTU1NIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCB0cnVlLCBmYWxzZSksIDEpOwogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIGZhbHNlLCBmYWxzZSksIDEpOwogICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgZmFsc2UsIGZhbHNlKSwgMSk7CiAgICAgICAgICAvLyBkYXRlcwogICAgICAgICAgY2FzZSAiZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIC8vIG9yZGluYWxzCiAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7CiAgICAgICAgICBjYXNlICJvb28iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICAvLyB0aW1lCiAgICAgICAgICBjYXNlICJISCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAiaGgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiaCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIm1tIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAicXEiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAicyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInNzIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1RocmVlKTsKICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHRocmVlKTsKICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZVRvTmluZSk7CiAgICAgICAgICBjYXNlICJ1dSI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUob25lT3JUd28pOwogICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTsKICAgICAgICAgIC8vIG1lcmlkaWVtCiAgICAgICAgICBjYXNlICJhIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tZXJpZGllbXMoKSwgMCk7CiAgICAgICAgICAvLyB3ZWVrWWVhciAoaykKICAgICAgICAgIGNhc2UgImtra2siOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyKTsKICAgICAgICAgIGNhc2UgImtrIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7CiAgICAgICAgICAvLyB3ZWVrTnVtYmVyIChXKQogICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIldXIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIC8vIHdlZWtkYXlzCiAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgIGNhc2UgImMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmUpOwogICAgICAgICAgY2FzZSAiRUVFIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygic2hvcnQiLCBmYWxzZSwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJsb25nIiwgZmFsc2UsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJzaG9ydCIsIHRydWUsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJjY2NjIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygibG9uZyIsIHRydWUsIGZhbHNlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQogICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICBjYXNlICJaWiI6CiAgICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpOwogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpOwogICAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmcKICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2F5IHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGV5IGFyZQogICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUoL1thLXpfKy0vXXsxLDI1Nn0/L2kpOwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGNvbnN0IHVuaXQgPSB1bml0YXRlKHRva2VuKSB8fCB7CiAgICAgIGludmFsaWRSZWFzb246IE1JU1NJTkdfRlRQLAogICAgfTsKCiAgICB1bml0LnRva2VuID0gdG9rZW47CgogICAgcmV0dXJuIHVuaXQ7CiAgfQoKICBjb25zdCBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbCA9IHsKICAgIHllYXI6IHsKICAgICAgIjItZGlnaXQiOiAieXkiLAogICAgICBudW1lcmljOiAieXl5eXkiLAogICAgfSwKICAgIG1vbnRoOiB7CiAgICAgIG51bWVyaWM6ICJNIiwKICAgICAgIjItZGlnaXQiOiAiTU0iLAogICAgICBzaG9ydDogIk1NTSIsCiAgICAgIGxvbmc6ICJNTU1NIiwKICAgIH0sCiAgICBkYXk6IHsKICAgICAgbnVtZXJpYzogImQiLAogICAgICAiMi1kaWdpdCI6ICJkZCIsCiAgICB9LAogICAgd2Vla2RheTogewogICAgICBzaG9ydDogIkVFRSIsCiAgICAgIGxvbmc6ICJFRUVFIiwKICAgIH0sCiAgICBkYXlwZXJpb2Q6ICJhIiwKICAgIGRheVBlcmlvZDogImEiLAogICAgaG91cjogewogICAgICBudW1lcmljOiAiaCIsCiAgICAgICIyLWRpZ2l0IjogImhoIiwKICAgIH0sCiAgICBtaW51dGU6IHsKICAgICAgbnVtZXJpYzogIm0iLAogICAgICAiMi1kaWdpdCI6ICJtbSIsCiAgICB9LAogICAgc2Vjb25kOiB7CiAgICAgIG51bWVyaWM6ICJzIiwKICAgICAgIjItZGlnaXQiOiAic3MiLAogICAgfSwKICAgIHRpbWVab25lTmFtZTogewogICAgICBsb25nOiAiWlpaWloiLAogICAgICBzaG9ydDogIlpaWiIsCiAgICB9LAogIH07CgogIGZ1bmN0aW9uIHRva2VuRm9yUGFydChwYXJ0LCBmb3JtYXRPcHRzKSB7CiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0OwoKICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBsaXRlcmFsOiB0cnVlLAogICAgICAgIHZhbDogdmFsdWUsCiAgICAgIH07CiAgICB9CgogICAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwoKICAgIGxldCB2YWwgPSBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbFt0eXBlXTsKICAgIGlmICh0eXBlb2YgdmFsID09PSAib2JqZWN0IikgewogICAgICB2YWwgPSB2YWxbc3R5bGVdOwogICAgfQoKICAgIGlmICh2YWwpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBsaXRlcmFsOiBmYWxzZSwKICAgICAgICB2YWwsCiAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHVuZGVmaW5lZDsKICB9CgogIGZ1bmN0aW9uIGJ1aWxkUmVnZXgodW5pdHMpIHsKICAgIGNvbnN0IHJlID0gdW5pdHMubWFwKCh1KSA9PiB1LnJlZ2V4KS5yZWR1Y2UoKGYsIHIpID0+IGAke2Z9KCR7ci5zb3VyY2V9KWAsICIiKTsKICAgIHJldHVybiBbYF4ke3JlfSRgLCB1bml0c107CiAgfQoKICBmdW5jdGlvbiBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSB7CiAgICBjb25zdCBtYXRjaGVzID0gaW5wdXQubWF0Y2gocmVnZXgpOwoKICAgIGlmIChtYXRjaGVzKSB7CiAgICAgIGNvbnN0IGFsbCA9IHt9OwogICAgICBsZXQgbWF0Y2hJbmRleCA9IDE7CiAgICAgIGZvciAoY29uc3QgaSBpbiBoYW5kbGVycykgewogICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShoYW5kbGVycywgaSkpIHsKICAgICAgICAgIGNvbnN0IGggPSBoYW5kbGVyc1tpXSwKICAgICAgICAgICAgZ3JvdXBzID0gaC5ncm91cHMgPyBoLmdyb3VwcyArIDEgOiAxOwogICAgICAgICAgaWYgKCFoLmxpdGVyYWwgJiYgaC50b2tlbikgewogICAgICAgICAgICBhbGxbaC50b2tlbi52YWxbMF1dID0gaC5kZXNlcihtYXRjaGVzLnNsaWNlKG1hdGNoSW5kZXgsIG1hdGNoSW5kZXggKyBncm91cHMpKTsKICAgICAgICAgIH0KICAgICAgICAgIG1hdGNoSW5kZXggKz0gZ3JvdXBzOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gW21hdGNoZXMsIGFsbF07CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gW21hdGNoZXMsIHt9XTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykgewogICAgY29uc3QgdG9GaWVsZCA9ICh0b2tlbikgPT4gewogICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICByZXR1cm4gIm1pbGxpc2Vjb25kIjsKICAgICAgICBjYXNlICJzIjoKICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICBjYXNlICJtIjoKICAgICAgICAgIHJldHVybiAibWludXRlIjsKICAgICAgICBjYXNlICJoIjoKICAgICAgICBjYXNlICJIIjoKICAgICAgICAgIHJldHVybiAiaG91ciI7CiAgICAgICAgY2FzZSAiZCI6CiAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICByZXR1cm4gIm9yZGluYWwiOwogICAgICAgIGNhc2UgIkwiOgogICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgcmV0dXJuICJtb250aCI7CiAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgIGNhc2UgIkUiOgogICAgICAgIGNhc2UgImMiOgogICAgICAgICAgcmV0dXJuICJ3ZWVrZGF5IjsKICAgICAgICBjYXNlICJXIjoKICAgICAgICAgIHJldHVybiAid2Vla051bWJlciI7CiAgICAgICAgY2FzZSAiayI6CiAgICAgICAgICByZXR1cm4gIndlZWtZZWFyIjsKICAgICAgICBjYXNlICJxIjoKICAgICAgICAgIHJldHVybiAicXVhcnRlciI7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICB9OwoKICAgIGxldCB6b25lID0gbnVsbDsKICAgIGxldCBzcGVjaWZpY09mZnNldDsKICAgIGlmICghaXNVbmRlZmluZWQobWF0Y2hlcy56KSkgewogICAgICB6b25lID0gSUFOQVpvbmUuY3JlYXRlKG1hdGNoZXMueik7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLlopKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHpvbmUgPSBuZXcgRml4ZWRPZmZzZXRab25lKG1hdGNoZXMuWik7CiAgICAgIH0KICAgICAgc3BlY2lmaWNPZmZzZXQgPSBtYXRjaGVzLlo7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnEpKSB7CiAgICAgIG1hdGNoZXMuTSA9IChtYXRjaGVzLnEgLSAxKSAqIDMgKyAxOwogICAgfQoKICAgIGlmICghaXNVbmRlZmluZWQobWF0Y2hlcy5oKSkgewogICAgICBpZiAobWF0Y2hlcy5oIDwgMTIgJiYgbWF0Y2hlcy5hID09PSAxKSB7CiAgICAgICAgbWF0Y2hlcy5oICs9IDEyOwogICAgICB9IGVsc2UgaWYgKG1hdGNoZXMuaCA9PT0gMTIgJiYgbWF0Y2hlcy5hID09PSAwKSB7CiAgICAgICAgbWF0Y2hlcy5oID0gMDsKICAgICAgfQogICAgfQoKICAgIGlmIChtYXRjaGVzLkcgPT09IDAgJiYgbWF0Y2hlcy55KSB7CiAgICAgIG1hdGNoZXMueSA9IC1tYXRjaGVzLnk7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnUpKSB7CiAgICAgIG1hdGNoZXMuUyA9IHBhcnNlTWlsbGlzKG1hdGNoZXMudSk7CiAgICB9CgogICAgY29uc3QgdmFscyA9IE9iamVjdC5rZXlzKG1hdGNoZXMpLnJlZHVjZSgociwgaykgPT4gewogICAgICBjb25zdCBmID0gdG9GaWVsZChrKTsKICAgICAgaWYgKGYpIHsKICAgICAgICByW2ZdID0gbWF0Y2hlc1trXTsKICAgICAgfQoKICAgICAgcmV0dXJuIHI7CiAgICB9LCB7fSk7CgogICAgcmV0dXJuIFt2YWxzLCB6b25lLCBzcGVjaWZpY09mZnNldF07CiAgfQoKICBsZXQgZHVtbXlEYXRlVGltZUNhY2hlID0gbnVsbDsKCiAgZnVuY3Rpb24gZ2V0RHVtbXlEYXRlVGltZSgpIHsKICAgIGlmICghZHVtbXlEYXRlVGltZUNhY2hlKSB7CiAgICAgIGR1bW15RGF0ZVRpbWVDYWNoZSA9IERhdGVUaW1lLmZyb21NaWxsaXMoMTU1NTU1NTU1NTU1NSk7CiAgICB9CgogICAgcmV0dXJuIGR1bW15RGF0ZVRpbWVDYWNoZTsKICB9CgogIGZ1bmN0aW9uIG1heWJlRXhwYW5kTWFjcm9Ub2tlbih0b2tlbiwgbG9jYWxlKSB7CiAgICBpZiAodG9rZW4ubGl0ZXJhbCkgewogICAgICByZXR1cm4gdG9rZW47CiAgICB9CgogICAgY29uc3QgZm9ybWF0T3B0cyA9IEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuLnZhbCk7CiAgICBjb25zdCB0b2tlbnMgPSBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgbG9jYWxlKTsKCiAgICBpZiAodG9rZW5zID09IG51bGwgfHwgdG9rZW5zLmluY2x1ZGVzKHVuZGVmaW5lZCkpIHsKICAgICAgcmV0dXJuIHRva2VuOwogICAgfQoKICAgIHJldHVybiB0b2tlbnM7CiAgfQoKICBmdW5jdGlvbiBleHBhbmRNYWNyb1Rva2Vucyh0b2tlbnMsIGxvY2FsZSkgewogICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQoLi4udG9rZW5zLm1hcCgodCkgPT4gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHQsIGxvY2FsZSkpKTsKICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGZ1bmN0aW9uIGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkgewogICAgY29uc3QgdG9rZW5zID0gZXhwYW5kTWFjcm9Ub2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZvcm1hdCksIGxvY2FsZSksCiAgICAgIHVuaXRzID0gdG9rZW5zLm1hcCgodCkgPT4gdW5pdEZvclRva2VuKHQsIGxvY2FsZSkpLAogICAgICBkaXNxdWFsaWZ5aW5nVW5pdCA9IHVuaXRzLmZpbmQoKHQpID0+IHQuaW52YWxpZFJlYXNvbik7CgogICAgaWYgKGRpc3F1YWxpZnlpbmdVbml0KSB7CiAgICAgIHJldHVybiB7IGlucHV0LCB0b2tlbnMsIGludmFsaWRSZWFzb246IGRpc3F1YWxpZnlpbmdVbml0LmludmFsaWRSZWFzb24gfTsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IFtyZWdleFN0cmluZywgaGFuZGxlcnNdID0gYnVpbGRSZWdleCh1bml0cyksCiAgICAgICAgcmVnZXggPSBSZWdFeHAocmVnZXhTdHJpbmcsICJpIiksCiAgICAgICAgW3Jhd01hdGNoZXMsIG1hdGNoZXNdID0gbWF0Y2goaW5wdXQsIHJlZ2V4LCBoYW5kbGVycyksCiAgICAgICAgW3Jlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXRdID0gbWF0Y2hlcwogICAgICAgICAgPyBkYXRlVGltZUZyb21NYXRjaGVzKG1hdGNoZXMpCiAgICAgICAgICA6IFtudWxsLCBudWxsLCB1bmRlZmluZWRdOwogICAgICBpZiAoaGFzT3duUHJvcGVydHkobWF0Y2hlcywgImEiKSAmJiBoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCAiSCIpKSB7CiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKAogICAgICAgICAgIkNhbid0IGluY2x1ZGUgbWVyaWRpZW0gd2hlbiBzcGVjaWZ5aW5nIDI0LWhvdXIgZm9ybWF0IgogICAgICAgICk7CiAgICAgIH0KICAgICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgcmVnZXgsIHJhd01hdGNoZXMsIG1hdGNoZXMsIHJlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXQgfTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHBhcnNlRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpIHsKICAgIGNvbnN0IHsgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZFJlYXNvbiB9ID0gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KTsKICAgIHJldHVybiBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZFJlYXNvbl07CiAgfQoKICBmdW5jdGlvbiBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgbG9jYWxlKSB7CiAgICBpZiAoIWZvcm1hdE9wdHMpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgY29uc3QgZm9ybWF0dGVyID0gRm9ybWF0dGVyLmNyZWF0ZShsb2NhbGUsIGZvcm1hdE9wdHMpOwogICAgY29uc3QgcGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0RGF0ZVRpbWVQYXJ0cyhnZXREdW1teURhdGVUaW1lKCkpOwogICAgcmV0dXJuIHBhcnRzLm1hcCgocCkgPT4gdG9rZW5Gb3JQYXJ0KHAsIGZvcm1hdE9wdHMpKTsKICB9CgogIGNvbnN0IG5vbkxlYXBMYWRkZXIgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzRdLAogICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogIGZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7CiAgICByZXR1cm4gbmV3IEludmFsaWQoCiAgICAgICJ1bml0IG91dCBvZiByYW5nZSIsCiAgICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYAogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTsKCiAgICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KCiAgICBjb25zdCBqcyA9IGQuZ2V0VVRDRGF5KCk7CgogICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogIH0KCiAgZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkgewogICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHsKICAgIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLAogICAgICBtb250aDAgPSB0YWJsZS5maW5kSW5kZXgoKGkpID0+IGkgPCBvcmRpbmFsKSwKICAgICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07CiAgICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikgewogICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLAogICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7CgogICAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLAogICAgICB3ZWVrWWVhcjsKCiAgICBpZiAod2Vla051bWJlciA8IDEpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyIC0gMTsKICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyICsgMTsKICAgICAgd2Vla051bWJlciA9IDE7CiAgICB9IGVsc2UgewogICAgICB3ZWVrWWVhciA9IHllYXI7CiAgICB9CgogICAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTsKICB9CgogIGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkgewogICAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsCiAgICAgIHdlZWtkYXlPZkphbjQgPSBkYXlPZldlZWsod2Vla1llYXIsIDEsIDQpLAogICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CgogICAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMywKICAgICAgeWVhcjsKCiAgICBpZiAob3JkaW5hbCA8IDEpIHsKICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpOwogICAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykgewogICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpOwogICAgfSBlbHNlIHsKICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgfQoKICAgIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTsKICAgIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07CiAgfQoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHsKICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ0RhdGE7CiAgICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9OwogIH0KCiAgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7CiAgICBjb25zdCB7IHllYXIsIG9yZGluYWwgfSA9IG9yZGluYWxEYXRhOwogICAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpOwogICAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHsKICAgIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoud2Vla1llYXIpLAogICAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLAogICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrWWVhciIsIG9iai53ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrIiwgb2JqLndlZWspOwogICAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm9yZGluYWwiLCBvYmoub3JkaW5hbCk7CiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE1vbnRoID0gaW50ZWdlckJldHdlZW4ob2JqLm1vbnRoLCAxLCAxMiksCiAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtb250aCIsIG9iai5tb250aCk7CiAgICB9IGVsc2UgaWYgKCF2YWxpZERheSkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHsKICAgIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7CiAgICBjb25zdCB2YWxpZEhvdXIgPQogICAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fAogICAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSwKICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSwKICAgICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpOwoKICAgIGlmICghdmFsaWRIb3VyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtaW51dGUiLCBtaW51dGUpOwogICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJzZWNvbmQiLCBzZWNvbmQpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGNvbnN0IElOVkFMSUQgPSAiSW52YWxpZCBEYXRlVGltZSI7CiAgY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1OwoKICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bnN1cHBvcnRlZCB6b25lIiwgYHRoZSB6b25lICIke3pvbmUubmFtZX0iIGlzIG5vdCBzdXBwb3J0ZWRgKTsKICB9CgogIC8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlCiAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7CiAgICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpOwogICAgfQogICAgcmV0dXJuIGR0LndlZWtEYXRhOwogIH0KCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCAibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zIi4gYWxsICJzZXR0ZXJzIiByZWFsbHkgdXNlIHRoaXMKICAvLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllcwogIGZ1bmN0aW9uIGNsb25lKGluc3QsIGFsdHMpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSB7CiAgICAgIHRzOiBpbnN0LnRzLAogICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgIGM6IGluc3QuYywKICAgICAgbzogaW5zdC5vLAogICAgICBsb2M6IGluc3QubG9jLAogICAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsCiAgICB9OwogICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IC4uLmN1cnJlbnQsIC4uLmFsdHMsIG9sZDogY3VycmVudCB9KTsKICB9CgogIC8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaAogIC8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpCiAgZnVuY3Rpb24gZml4T2Zmc2V0KGxvY2FsVFMsIG8sIHR6KSB7CiAgICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3MKICAgIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOwoKICAgIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHMKICAgIGNvbnN0IG8yID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKICAgIGlmIChvID09PSBvMikgewogICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTsKICAgIH0KCiAgICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldAogICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7CgogICAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lCiAgICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7CiAgICBpZiAobzIgPT09IG8zKSB7CiAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTsKICAgIH0KCiAgICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lCiAgICByZXR1cm4gW2xvY2FsVFMgLSBNYXRoLm1pbihvMiwgbzMpICogNjAgKiAxMDAwLCBNYXRoLm1heChvMiwgbzMpXTsKICB9CgogIC8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0CiAgZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7CiAgICB0cyArPSBvZmZzZXQgKiA2MCAqIDEwMDA7CgogICAgY29uc3QgZCA9IG5ldyBEYXRlKHRzKTsKCiAgICByZXR1cm4gewogICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLAogICAgICBkYXk6IGQuZ2V0VVRDRGF0ZSgpLAogICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksCiAgICAgIHNlY29uZDogZC5nZXRVVENTZWNvbmRzKCksCiAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLAogICAgfTsKICB9CgogIC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKICBmdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7CiAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogIH0KCiAgLy8gY3JlYXRlIGEgbmV3IERUIGluc3RhbmNlIGJ5IGFkZGluZyBhIGR1cmF0aW9uLCBhZGp1c3RpbmcgZm9yIERTVHMKICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgY29uc3Qgb1ByZSA9IGluc3QubywKICAgICAgeWVhciA9IGluc3QuYy55ZWFyICsgTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLAogICAgICBjID0gewogICAgICAgIC4uLmluc3QuYywKICAgICAgICB5ZWFyLAogICAgICAgIG1vbnRoLAogICAgICAgIGRheToKICAgICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNywKICAgICAgfSwKICAgICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsKICAgICAgICB5ZWFyczogZHVyLnllYXJzIC0gTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksCiAgICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSwKICAgICAgICB3ZWVrczogZHVyLndlZWtzIC0gTWF0aC50cnVuYyhkdXIud2Vla3MpLAogICAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksCiAgICAgICAgaG91cnM6IGR1ci5ob3VycywKICAgICAgICBtaW51dGVzOiBkdXIubWludXRlcywKICAgICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcywKICAgICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTsKCiAgICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpOwoKICAgIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkgewogICAgICB0cyArPSBtaWxsaXNUb0FkZDsKICAgICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQogICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICB9CgogICAgcmV0dXJuIHsgdHMsIG8gfTsKICB9CgogIC8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlcwogIC8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnMKICBmdW5jdGlvbiBwYXJzZURhdGFUb0RhdGVUaW1lKHBhcnNlZCwgcGFyc2VkWm9uZSwgb3B0cywgZm9ybWF0LCB0ZXh0LCBzcGVjaWZpY09mZnNldCkgewogICAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzOwogICAgaWYgKHBhcnNlZCAmJiBPYmplY3Qua2V5cyhwYXJzZWQpLmxlbmd0aCAhPT0gMCkgewogICAgICBjb25zdCBpbnRlcnByZXRhdGlvblpvbmUgPSBwYXJzZWRab25lIHx8IHpvbmUsCiAgICAgICAgaW5zdCA9IERhdGVUaW1lLmZyb21PYmplY3QocGFyc2VkLCB7CiAgICAgICAgICAuLi5vcHRzLAogICAgICAgICAgem9uZTogaW50ZXJwcmV0YXRpb25ab25lLAogICAgICAgICAgc3BlY2lmaWNPZmZzZXQsCiAgICAgICAgfSk7CiAgICAgIHJldHVybiBzZXRab25lID8gaW5zdCA6IGluc3Quc2V0Wm9uZSh6b25lKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKAogICAgICAgIG5ldyBJbnZhbGlkKCJ1bnBhcnNhYmxlIiwgYHRoZSBpbnB1dCAiJHt0ZXh0fSIgY2FuJ3QgYmUgcGFyc2VkIGFzICR7Zm9ybWF0fWApCiAgICAgICk7CiAgICB9CiAgfQoKICAvLyBpZiB5b3Ugd2FudCB0byBvdXRwdXQgYSB0ZWNobmljYWwgZm9ybWF0IChlLmcuIFJGQyAyODIyKSwgdGhpcyBoZWxwZXIKICAvLyBoZWxwcyBoYW5kbGUgdGhlIGRldGFpbHMKICBmdW5jdGlvbiB0b1RlY2hGb3JtYXQoZHQsIGZvcm1hdCwgYWxsb3daID0gdHJ1ZSkgewogICAgcmV0dXJuIGR0LmlzVmFsaWQKICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKExvY2FsZS5jcmVhdGUoImVuLVVTIiksIHsKICAgICAgICAgIGFsbG93WiwKICAgICAgICAgIGZvcmNlU2ltcGxlOiB0cnVlLAogICAgICAgIH0pLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm9ybWF0KQogICAgICA6IG51bGw7CiAgfQoKICBmdW5jdGlvbiB0b0lTT0RhdGUobywgZXh0ZW5kZWQpIHsKICAgIGNvbnN0IGxvbmdGb3JtYXQgPSBvLmMueWVhciA+IDk5OTkgfHwgby5jLnllYXIgPCAwOwogICAgbGV0IGMgPSAiIjsKICAgIGlmIChsb25nRm9ybWF0ICYmIG8uYy55ZWFyID49IDApIGMgKz0gIisiOwogICAgYyArPSBwYWRTdGFydChvLmMueWVhciwgbG9uZ0Zvcm1hdCA/IDYgOiA0KTsKCiAgICBpZiAoZXh0ZW5kZWQpIHsKICAgICAgYyArPSAiLSI7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1vbnRoKTsKICAgICAgYyArPSAiLSI7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLmRheSk7CiAgICB9IGVsc2UgewogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLmRheSk7CiAgICB9CiAgICByZXR1cm4gYzsKICB9CgogIGZ1bmN0aW9uIHRvSVNPVGltZSgKICAgIG8sCiAgICBleHRlbmRlZCwKICAgIHN1cHByZXNzU2Vjb25kcywKICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzLAogICAgaW5jbHVkZU9mZnNldCwKICAgIGV4dGVuZGVkWm9uZQogICkgewogICAgbGV0IGMgPSBwYWRTdGFydChvLmMuaG91cik7CiAgICBpZiAoZXh0ZW5kZWQpIHsKICAgICAgYyArPSAiOiI7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbnV0ZSk7CiAgICAgIGlmIChvLmMuc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc1NlY29uZHMpIHsKICAgICAgICBjICs9ICI6IjsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgYyArPSBwYWRTdGFydChvLmMubWludXRlKTsKICAgIH0KCiAgICBpZiAoby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7CgogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykgewogICAgICAgIGMgKz0gIi4iOwogICAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTsKICAgICAgfQogICAgfQoKICAgIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkgewogICAgICAgIGMgKz0gIloiOwogICAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHsKICAgICAgICBjICs9ICItIjsKICAgICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7CiAgICAgICAgYyArPSAiOiI7CiAgICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpOwogICAgICB9IGVsc2UgewogICAgICAgIGMgKz0gIisiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpOwogICAgICAgIGMgKz0gIjoiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpOwogICAgICB9CiAgICB9CgogICAgaWYgKGV4dGVuZGVkWm9uZSkgewogICAgICBjICs9ICJbIiArIG8uem9uZS5pYW5hTmFtZSArICJdIjsKICAgIH0KICAgIHJldHVybiBjOwogIH0KCiAgLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzCiAgY29uc3QgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH07CgogIC8vIFVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzLCBzb3J0ZWQgYnkgYmlnbmVzcwogIGNvbnN0IG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICBvcmRlcmVkV2Vla1VuaXRzID0gWwogICAgICAid2Vla1llYXIiLAogICAgICAid2Vla051bWJlciIsCiAgICAgICJ3ZWVrZGF5IiwKICAgICAgImhvdXIiLAogICAgICAibWludXRlIiwKICAgICAgInNlY29uZCIsCiAgICAgICJtaWxsaXNlY29uZCIsCiAgICBdLAogICAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFsieWVhciIsICJvcmRpbmFsIiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdOwoKICAvLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHMKICBmdW5jdGlvbiBub3JtYWxpemVVbml0KHVuaXQpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgeWVhcnM6ICJ5ZWFyIiwKICAgICAgbW9udGg6ICJtb250aCIsCiAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgZGF5OiAiZGF5IiwKICAgICAgZGF5czogImRheSIsCiAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgaG91cnM6ICJob3VyIiwKICAgICAgbWludXRlOiAibWludXRlIiwKICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgIHF1YXJ0ZXI6ICJxdWFydGVyIiwKICAgICAgcXVhcnRlcnM6ICJxdWFydGVyIiwKICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgc2Vjb25kczogInNlY29uZCIsCiAgICAgIG1pbGxpc2Vjb25kOiAibWlsbGlzZWNvbmQiLAogICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgIHdlZWtkYXk6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla2RheXM6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrc251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrbnVtYmVyczogIndlZWtOdW1iZXIiLAogICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgd2Vla3llYXJzOiAid2Vla1llYXIiLAogICAgICBvcmRpbmFsOiAib3JkaW5hbCIsCiAgICB9W3VuaXQudG9Mb3dlckNhc2UoKV07CgogICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKCiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogIC8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHMKICAvLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLgogIGZ1bmN0aW9uIHF1aWNrRFQob2JqLCBvcHRzKSB7CiAgICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgIHRzTm93ID0gU2V0dGluZ3Mubm93KCk7CgogICAgbGV0IHRzLCBvOwoKICAgIC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHsKICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgY29uc3Qgb2Zmc2V0UHJvdmlzID0gem9uZS5vZmZzZXQodHNOb3cpOwogICAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CiAgICB9IGVsc2UgewogICAgICB0cyA9IHRzTm93OwogICAgfQoKICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pOwogIH0KCiAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgIGNvbnN0IHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHsKICAgICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTsKICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBlbmQubG9jLmNsb25lKG9wdHMpLnJlbEZvcm1hdHRlcihvcHRzKTsKICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTsKICAgICAgfSwKICAgICAgZGlmZmVyID0gKHVuaXQpID0+IHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGlmIChvcHRzLnVuaXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdChkaWZmZXIob3B0cy51bml0KSwgb3B0cy51bml0KTsKICAgIH0KCiAgICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykgewogICAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTsKICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgfQoKICBmdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7CiAgICBsZXQgb3B0cyA9IHt9LAogICAgICBhcmdzOwogICAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSAib2JqZWN0IikgewogICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpOwogICAgfSBlbHNlIHsKICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICB9CiAgICByZXR1cm4gW29wdHMsIGFyZ3NdOwogIH0KCiAgLyoqCiAgICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6CiAgICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC4KICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgKgogICAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZS5sb2NhbH0sIHtAbGluayBEYXRlVGltZS51dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZS5mcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lLmZyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZS5mcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lLmZyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSlNEYXRlfS4KICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy4KICAgKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLgogICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LgogICAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uCiAgICoKICAgKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLgogICAqLwogIGNsYXNzIERhdGVUaW1lIHsKICAgIC8qKgogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7CgogICAgICBsZXQgaW52YWxpZCA9CiAgICAgICAgY29uZmlnLmludmFsaWQgfHwKICAgICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbCkgfHwKICAgICAgICAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwoKICAgICAgbGV0IGMgPSBudWxsLAogICAgICAgIG8gPSBudWxsOwogICAgICBpZiAoIWludmFsaWQpIHsKICAgICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTsKCiAgICAgICAgaWYgKHVuY2hhbmdlZCkgewogICAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTsKICAgICAgICAgIGludmFsaWQgPSBOdW1iZXIuaXNOYU4oYy55ZWFyKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsOwogICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgIG8gPSBpbnZhbGlkID8gbnVsbCA6IG90OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmMgPSBjOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLm8gPSBvOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICB9CgogICAgLy8gQ09OU1RSVUNUCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAqCiAgICAgKiBVc2UgU2V0dGluZ3MgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdCB2YWx1ZXMgaWYgbmVlZGVkLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBub3coKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiBub3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiAidXRjIiB9KSAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMCwgaW4gVVRDCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSkgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBsb2NhbCgpIHsKICAgICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSwKICAgICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7CiAgICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3llYXJdIC0gVGhlIGNhbGVuZGFyIHllYXIuIElmIG9taXR0ZWQgKGFzIGluLCBjYWxsIGB1dGMoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6ICJmciIgfSkgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWiB3aXRoIGEgRnJlbmNoIGxvY2FsZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgdXRjKCkgewogICAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJnczsKCiAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgdHMgPSBpc0RhdGUoZGF0ZSkgPyBkYXRlLnZhbHVlT2YoKSA6IE5hTjsKICAgICAgaWYgKE51bWJlci5pc05hTih0cykpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICB9CgogICAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICB0czogdHMsCiAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVEMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnQKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiVGltZXN0YW1wIG91dCBvZiByYW5nZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IG1pbGxpc2Vjb25kcywKICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLAogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc3RhdGljIGZyb21TZWNvbmRzKHNlY29uZHMsIG9wdGlvbnMgPSB7fSkgewogICAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHNlY29uZHMgKiAxMDAwLAogICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcicgYW5kICdob3VyJyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoIC0gYSBtb250aCwgMS0xMgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtZZWFyIC0gYW4gSVNPIHdlZWsgeWVhcgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VyIC0gaG91ciBvZiB0aGUgZGF5LCAwLTIzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZCAtIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIDAtOTk5CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogMTk4MiwgbW9udGg6IDUsIGRheTogMjV9KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDYKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ3V0YycgfSksCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgd2Vla1llYXI6IDIwMTYsIHdlZWtOdW1iZXI6IDIsIHdlZWtkYXk6IDMgfSkudG9JU09EYXRlKCkgLy89PiAnMjAxNi0wMS0xMycKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmosIG9wdHMgPSB7fSkgewogICAgICBvYmogPSBvYmogfHwge307CiAgICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksCiAgICAgICAgb2Zmc2V0UHJvdmlzID0gIWlzVW5kZWZpbmVkKG9wdHMuc3BlY2lmaWNPZmZzZXQpCiAgICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXQKICAgICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSwKICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgIGxvYyA9IExvY2FsZS5mcm9tT2JqZWN0KG9wdHMpOwoKICAgICAgLy8gY2FzZXM6CiAgICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllcwogICAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3IKICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZAoKICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigKICAgICAgICAgICJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIgogICAgICAgICk7CiAgICAgIH0KCiAgICAgIGlmIChjb250YWluc0dyZWdvck1EICYmIGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgfQoKICAgICAgY29uc3QgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiAhY29udGFpbnNHcmVnb3IpOwoKICAgICAgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKICAgICAgbGV0IHVuaXRzLAogICAgICAgIGRlZmF1bHRWYWx1ZXMsCiAgICAgICAgb2JqTm93ID0gdHNUb09iaih0c05vdywgb2Zmc2V0UHJvdmlzKTsKICAgICAgaWYgKHVzZVdlZWtEYXRhKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7CiAgICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7CiAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzOwogICAgICB9CgogICAgICAvLyBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3Npbmcgc3R1ZmYKICAgICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTsKICAgICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7CiAgICAgICAgY29uc3QgdiA9IG5vcm1hbGl6ZWRbdV07CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZpcnN0KSB7CiAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9ybWFsaXplZFt1XSA9IG9iak5vd1t1XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlCiAgICAgIGNvbnN0IGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhCiAgICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKQogICAgICAgICAgOiBjb250YWluc09yZGluYWwKICAgICAgICAgID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLAogICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWUKICAgICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGEKICAgICAgICAgID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbAogICAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZCkKICAgICAgICAgIDogbm9ybWFsaXplZCwKICAgICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHsKICAgICAgICAgIHRzOiB0c0ZpbmFsLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbzogb2Zmc2V0RmluYWwsCiAgICAgICAgICBsb2MsCiAgICAgICAgfSk7CgogICAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGUKICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoCiAgICAgICAgICAibWlzbWF0Y2hlZCB3ZWVrZGF5IiwKICAgICAgICAgIGB5b3UgY2FuJ3Qgc3BlY2lmeSBib3RoIGEgd2Vla2RheSBvZiAke25vcm1hbGl6ZWQud2Vla2RheX0gYW5kIGEgZGF0ZSBvZiAke2luc3QudG9JU08oKX1gCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGluc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZwogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJywge3pvbmU6ICd1dGMnfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJJU08gODYwMSIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBSRkMgMjgyMiBzdHJpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgdGhlIG9mZnNldCBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJ0ZyaSwgMjUgTm92IDIwMTYgMTM6MjM6MTIgKzA2MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlJGQyAyODIyIiwgdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIEhUVFAgaGVhZGVyIGRhdGUKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSFRUUERhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJIVFRQIiwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXQiKTsKICAgICAgfQoKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pLAogICAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIGlmIChpbnZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgYGZvcm1hdCAke2ZtdH1gLCB0ZXh0LCBzcGVjaWZpY09mZnNldCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0IGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWUKICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JykKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcwOToxMjozNC4zNDInKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tU1FMKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlNRTCIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIERhdGVUaW1lIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkgewogICAgICBpZiAoIXJlYXNvbikgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEYXRlVGltZSBpcyBpbnZhbGlkIik7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZERhdGVUaW1lRXJyb3IoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IGludmFsaWQgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlVGltZS4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0RhdGVUaW1lKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkRhdGVUaW1lKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFByb2R1Y2UgdGhlIGZvcm1hdCBzdHJpbmcgZm9yIGEgc2V0IG9mIG9wdGlvbnMKICAgICAqIEBwYXJhbSBmb3JtYXRPcHRzCiAgICAgKiBAcGFyYW0gbG9jYWxlT3B0cwogICAgICogQHJldHVybnMge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHBhcnNlRm9ybWF0Rm9yT3B0cyhmb3JtYXRPcHRzLCBsb2NhbGVPcHRzID0ge30pIHsKICAgICAgY29uc3QgdG9rZW5MaXN0ID0gZm9ybWF0T3B0c1RvVG9rZW5zKGZvcm1hdE9wdHMsIExvY2FsZS5mcm9tT2JqZWN0KGxvY2FsZU9wdHMpKTsKICAgICAgcmV0dXJuICF0b2tlbkxpc3QgPyBudWxsIDogdG9rZW5MaXN0Lm1hcCgodCkgPT4gKHQgPyB0LnZhbCA6IG51bGwpKS5qb2luKCIiKTsKICAgIH0KCiAgICAvKioKICAgICAqIFByb2R1Y2UgdGhlIHRoZSBmdWxseSBleHBhbmRlZCBmb3JtYXQgdG9rZW4gZm9yIHRoZSBsb2NhbGUKICAgICAqIERvZXMgTk9UIHF1b3RlIGNoYXJhY3RlcnMsIHNvIHF1b3RlZCB0b2tlbnMgd2lsbCBub3Qgcm91bmQgdHJpcCBjb3JyZWN0bHkKICAgICAqIEBwYXJhbSBmbXQKICAgICAqIEBwYXJhbSBsb2NhbGVPcHRzCiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgZXhwYW5kRm9ybWF0KGZtdCwgbG9jYWxlT3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kTWFjcm9Ub2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIExvY2FsZS5mcm9tT2JqZWN0KGxvY2FsZU9wdHMpKTsKICAgICAgcmV0dXJuIGV4cGFuZGVkLm1hcCgodCkgPT4gdC52YWwpLmpvaW4oIiIpOwogICAgfQoKICAgIC8vIElORk8KCiAgICAvKioKICAgICAqIEdldCB0aGUgdmFsdWUgb2YgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZScgb3IgJ2RheScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnbW9udGgnKTsgLy89PiA3CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA3LCA0KS5nZXQoJ2RheScpOyAvLz0+IDQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgZ2V0KHVuaXQpIHsKICAgICAgcmV0dXJuIHRoaXNbdW5pdF07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIERhdGVUaW1lIGlzIHZhbGlkLiBJbnZhbGlkIERhdGVUaW1lcyBvY2N1ciB3aGVuOgogICAgICogKiBUaGUgRGF0ZVRpbWUgd2FzIGNyZWF0ZWQgZnJvbSBpbnZhbGlkIGNhbGVuZGFyIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSAxM3RoIG1vbnRoIG9yIEZlYnJ1YXJ5IDMwCiAgICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBieSBhbiBvcGVyYXRpb24gb24gYW5vdGhlciBpbnZhbGlkIGRhdGUKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNWYWxpZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA9PT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIERhdGVUaW1lIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIERhdGVUaW1lIGlzIHZhbGlkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgaW52YWxpZFJlYXNvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEYXRlVGltZSBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb2NhbGUgb2YgYSBEYXRlVGltZSwgc3VjaCAnZW4tR0InLiBUaGUgbG9jYWxlIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRGF0ZVRpbWUKICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgb3V0cHV0IGNhbGVuZGFyIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2lzbGFtaWMnLiBUaGUgb3V0cHV0IGNhbGVuZGFyIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBvdXRwdXRDYWxlbmRhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLm91dHB1dENhbGVuZGFyIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgdGltZSB6b25lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIERhdGVUaW1lLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIGdldCB6b25lKCkgewogICAgICByZXR1cm4gdGhpcy5fem9uZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbmFtZSBvZiB0aGUgdGltZSB6b25lLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IHpvbmVOYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy56b25lLm5hbWUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB5ZWFyCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkueWVhciAvLz0+IDIwMTcKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB5ZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnllYXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHF1YXJ0ZXIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5xdWFydGVyIC8vPT4gMgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHF1YXJ0ZXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmNlaWwodGhpcy5jLm1vbnRoIC8gMykgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1vbnRoICgxLTEyKS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5tb250aCAvLz0+IDUKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBtb250aCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5tb250aCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCAoMS0zMGlzaCkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkuZGF5IC8vPT4gMjUKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBkYXkoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuZGF5IDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBob3VyIG9mIHRoZSBkYXkgKDAtMjMpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDkpLmhvdXIgLy89PiA5CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgaG91cigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5ob3VyIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtaW51dGUgb2YgdGhlIGhvdXIgKDAtNTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwKS5taW51dGUgLy89PiAzMAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1pbnV0ZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5taW51dGUgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHNlY29uZCBvZiB0aGUgbWludXRlICgwLTU5KS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5LCAzMCwgNTIpLnNlY29uZCAvLz0+IDUyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgc2Vjb25kKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnNlY29uZCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCAoMC05OTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1MiwgNjU0KS5taWxsaXNlY29uZCAvLz0+IDY1NAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1pbGxpc2Vjb25kKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbGxpc2Vjb25kIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB3ZWVrIHllYXIKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTIsIDMxKS53ZWVrWWVhciAvLz0+IDIwMTUKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrWWVhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla1llYXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWsgbnVtYmVyIG9mIHRoZSB3ZWVrIHllYXIgKDEtNTJpc2gpLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkud2Vla051bWJlciAvLz0+IDIxCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla051bWJlcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla051bWJlciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrLgogICAgICogMSBpcyBNb25kYXkgYW5kIDcgaXMgU3VuZGF5CiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDExLCAzMSkud2Vla2RheSAvLz0+IDQKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrZGF5IDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBvcmRpbmFsIChtZWFuaW5nIHRoZSBkYXkgb2YgdGhlIHllYXIpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkub3JkaW5hbCAvLz0+IDE0NQogICAgICogQHR5cGUge251bWJlcnxEYXRlVGltZX0KICAgICAqLwogICAgZ2V0IG9yZGluYWwoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKS5vcmRpbmFsIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBzaG9ydCBtb250aCBuYW1lLCBzdWNoIGFzICdPY3QnLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLm1vbnRoU2hvcnQgLy89PiBPY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBtb250aFNob3J0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoInNob3J0IiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgbW9udGggbmFtZSwgc3VjaCBhcyAnT2N0b2JlcicuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhMb25nIC8vPT4gT2N0b2JlcgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG1vbnRoTG9uZygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ubW9udGhzKCJsb25nIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IHdlZWtkYXksIHN1Y2ggYXMgJ01vbicuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheVNob3J0IC8vPT4gTW9uCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgd2Vla2RheVNob3J0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygic2hvcnQiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBsb25nIHdlZWtkYXksIHN1Y2ggYXMgJ01vbmRheScuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheUxvbmcgLy89PiBNb25kYXkKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5TG9uZygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ud2Vla2RheXMoImxvbmciLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBVVEMgb2Zmc2V0IG9mIHRoaXMgRGF0ZVRpbWUgaW4gbWludXRlcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkub2Zmc2V0IC8vPT4gLTI0MAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkub2Zmc2V0IC8vPT4gMAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG9mZnNldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/ICt0aGlzLm8gOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHNob3J0IGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFU1QiIG9yICJFRFQiLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgb2Zmc2V0TmFtZVNob3J0KCkgewogICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuem9uZS5vZmZzZXROYW1lKHRoaXMudHMsIHsKICAgICAgICAgIGZvcm1hdDogInNob3J0IiwKICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbG9uZyBodW1hbiBuYW1lIGZvciB0aGUgem9uZSdzIGN1cnJlbnQgb2Zmc2V0LCBmb3IgZXhhbXBsZSAiRWFzdGVybiBTdGFuZGFyZCBUaW1lIiBvciAiRWFzdGVybiBEYXlsaWdodCBUaW1lIi4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG9mZnNldE5hbWVMb25nKCkgewogICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuem9uZS5vZmZzZXROYW1lKHRoaXMudHMsIHsKICAgICAgICAgIGZvcm1hdDogImxvbmciLAogICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSwKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHdoZXRoZXIgdGhpcyB6b25lJ3Mgb2Zmc2V0IGV2ZXIgY2hhbmdlcywgYXMgaW4gYSBEU1QuCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzT2Zmc2V0Rml4ZWQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUuaXNVbml2ZXJzYWwgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHdoZXRoZXIgdGhlIERhdGVUaW1lIGlzIGluIGEgRFNULgogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc0luRFNUKCkgewogICAgICBpZiAodGhpcy5pc09mZnNldEZpeGVkKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAoCiAgICAgICAgICB0aGlzLm9mZnNldCA+IHRoaXMuc2V0KHsgbW9udGg6IDEsIGRheTogMSB9KS5vZmZzZXQgfHwKICAgICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogNSB9KS5vZmZzZXQKICAgICAgICApOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBEYXRlVGltZSBpcyBpbiBhIGxlYXAgeWVhciwgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5pc0luTGVhcFllYXIgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5pc0luTGVhcFllYXIgLy89PiBmYWxzZQogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc0luTGVhcFllYXIoKSB7CiAgICAgIHJldHVybiBpc0xlYXBZZWFyKHRoaXMueWVhcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgbW9udGgKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYsIDIpLmRheXNJbk1vbnRoIC8vPT4gMjkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYsIDMpLmRheXNJbk1vbnRoIC8vPT4gMzEKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBkYXlzSW5Nb250aCgpIHsKICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhciwgdGhpcy5tb250aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhcgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNikuZGF5c0luWWVhciAvLz0+IDM2NgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykuZGF5c0luWWVhciAvLz0+IDM2NQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXNJblllYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBkYXlzSW5ZZWFyKHRoaXMueWVhcikgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygd2Vla3MgaW4gdGhpcyBEYXRlVGltZSdzIHllYXIKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAwNCkud2Vla3NJbldlZWtZZWFyIC8vPT4gNTMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLndlZWtzSW5XZWVrWWVhciAvLz0+IDUyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla3NJbldlZWtZZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gd2Vla3NJbldlZWtZZWFyKHRoaXMud2Vla1llYXIpIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVzb2x2ZWQgSW50bCBvcHRpb25zIGZvciB0aGlzIERhdGVUaW1lLgogICAgICogVGhpcyBpcyB1c2VmdWwgaW4gdW5kZXJzdGFuZGluZyB0aGUgYmVoYXZpb3Igb2YgZm9ybWF0dGluZyBtZXRob2RzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIHRoZSBzYW1lIG9wdGlvbnMgYXMgdG9Mb2NhbGVTdHJpbmcKICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgcmVzb2x2ZWRMb2NhbGVPcHRpb25zKG9wdHMgPSB7fSkgewogICAgICBjb25zdCB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBjYWxlbmRhciB9ID0gRm9ybWF0dGVyLmNyZWF0ZSgKICAgICAgICB0aGlzLmxvYy5jbG9uZShvcHRzKSwKICAgICAgICBvcHRzCiAgICAgICkucmVzb2x2ZWRPcHRpb25zKHRoaXMpOwogICAgICByZXR1cm4geyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXI6IGNhbGVuZGFyIH07CiAgICB9CgogICAgLy8gVFJBTlNGT1JNCgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgRGF0ZVRpbWUncyB6b25lIHRvIFVUQy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICoKICAgICAqIEVxdWl2YWxlbnQgdG8ge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9KCd1dGMnKQogICAgICogQHBhcmFtIHtudW1iZXJ9IFtvZmZzZXQ9MF0gLSBvcHRpb25hbGx5LCBhbiBvZmZzZXQgZnJvbSBVVEMgaW4gbWludXRlcwogICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzPXt9XSAtIG9wdGlvbnMgdG8gcGFzcyB0byBgc2V0Wm9uZSgpYAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHRvVVRDKG9mZnNldCA9IDAsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5zZXRab25lKEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShvZmZzZXQpLCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gdGhlIGhvc3QncyBsb2NhbCB6b25lLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKgogICAgICogRXF1aXZhbGVudCB0byBgc2V0Wm9uZSgnbG9jYWwnKWAKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICB0b0xvY2FsKCkgewogICAgICByZXR1cm4gdGhpcy5zZXRab25lKFNldHRpbmdzLmRlZmF1bHRab25lKTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gc3BlY2lmaWVkIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqCiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgc2V0dGVyIGtlZXBzIHRoZSB1bmRlcmx5aW5nIHRpbWUgdGhlIHNhbWUgKGFzIGluLCB0aGUgc2FtZSB0aW1lc3RhbXApLCBidXQgdGhlIG5ldyBpbnN0YW5jZSB3aWxsIHJlcG9ydCBkaWZmZXJlbnQgbG9jYWwgdGltZXMgYW5kIGNvbnNpZGVyIERTVHMgd2hlbiBtYWtpbmcgY29tcHV0YXRpb25zLCBhcyB3aXRoIHtAbGluayBEYXRlVGltZSNwbHVzfS4gWW91IG1heSB3aXNoIHRvIHVzZSB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbH0gYW5kIHtAbGluayBEYXRlVGltZSN0b1VUQ30gd2hpY2ggcHJvdmlkZSBzaW1wbGUgY29udmVuaWVuY2Ugd3JhcHBlcnMgZm9yIGNvbW1vbmx5IHVzZWQgem9uZXMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbem9uZT0nbG9jYWwnXSAtIGEgem9uZSBpZGVudGlmaWVyLiBBcyBhIHN0cmluZywgdGhhdCBjYW4gYmUgYW55IElBTkEgem9uZSBzdXBwb3J0ZWQgYnkgdGhlIGhvc3QgZW52aXJvbm1lbnQsIG9yIGEgZml4ZWQtb2Zmc2V0IG5hbWUgb2YgdGhlIGZvcm0gJ1VUQyszJywgb3IgdGhlIHN0cmluZ3MgJ2xvY2FsJyBvciAndXRjJy4gWW91IG1heSBhbHNvIHN1cHBseSBhbiBpbnN0YW5jZSBvZiBhIHtAbGluayBEYXRlVGltZSNab25lfSBjbGFzcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5rZWVwTG9jYWxUaW1lPWZhbHNlXSAtIElmIHRydWUsIGFkanVzdCB0aGUgdW5kZXJseWluZyB0aW1lIHNvIHRoYXQgdGhlIGxvY2FsIHRpbWUgc3RheXMgdGhlIHNhbWUsIGJ1dCBpbiB0aGUgdGFyZ2V0IHpvbmUuIFlvdSBzaG91bGQgcmFyZWx5IG5lZWQgdGhpcy4KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZSA9IGZhbHNlLCBrZWVwQ2FsZW5kYXJUaW1lID0gZmFsc2UgfSA9IHt9KSB7CiAgICAgIHpvbmUgPSBub3JtYWxpemVab25lKHpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTsKICAgICAgaWYgKHpvbmUuZXF1YWxzKHRoaXMuem9uZSkpIHsKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfSBlbHNlIGlmICghem9uZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmUpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgbmV3VFMgPSB0aGlzLnRzOwogICAgICAgIGlmIChrZWVwTG9jYWxUaW1lIHx8IGtlZXBDYWxlbmRhclRpbWUpIHsKICAgICAgICAgIGNvbnN0IG9mZnNldEd1ZXNzID0gem9uZS5vZmZzZXQodGhpcy50cyk7CiAgICAgICAgICBjb25zdCBhc09iaiA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgICAgIFtuZXdUU10gPSBvYmpUb1RTKGFzT2JqLCBvZmZzZXRHdWVzcywgem9uZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzOiBuZXdUUywgem9uZSB9KTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvciBvdXRwdXRDYWxlbmRhci4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSB0aGUgcHJvcGVydGllcyB0byBzZXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0gPSB7fSkgewogICAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciB9KTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgbG9jIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIGxvY2FsZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICogSnVzdCBhIGNvbnZlbmllbnQgYWxpYXMgZm9yIHJlY29uZmlndXJlKHsgbG9jYWxlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkuc2V0TG9jYWxlKCdlbi1HQicpCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc2V0TG9jYWxlKGxvY2FsZSkgewogICAgICByZXR1cm4gdGhpcy5yZWNvbmZpZ3VyZSh7IGxvY2FsZSB9KTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBZb3UgY2FuIG9ubHkgc2V0IHVuaXRzIHdpdGggdGhpcyBtZXRob2Q7IGZvciAic2V0dGluZyIgbWV0YWRhdGEsIHNlZSB7QGxpbmsgRGF0ZVRpbWUjcmVjb25maWd1cmV9IGFuZCB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0uCiAgICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYSBtYXBwaW5nIG9mIHVuaXRzIHRvIG51bWJlcnMKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMTcgfSkKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IGhvdXI6IDgsIG1pbnV0ZTogMzAgfSkKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHdlZWtkYXk6IDUgfSkKICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMDUsIG9yZGluYWw6IDIzNCB9KQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHNldCh2YWx1ZXMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIHNldHRpbmdXZWVrU3R1ZmYgPQogICAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla1llYXIpIHx8CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrTnVtYmVyKSB8fAogICAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla2RheSksCiAgICAgICAgY29udGFpbnNPcmRpbmFsID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQub3JkaW5hbCksCiAgICAgICAgY29udGFpbnNHcmVnb3JZZWFyID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQueWVhciksCiAgICAgICAgY29udGFpbnNHcmVnb3JNRCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm1vbnRoKSB8fCAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yID0gY29udGFpbnNHcmVnb3JZZWFyIHx8IGNvbnRhaW5zR3JlZ29yTUQsCiAgICAgICAgZGVmaW5pdGVXZWVrRGVmID0gbm9ybWFsaXplZC53ZWVrWWVhciB8fCBub3JtYWxpemVkLndlZWtOdW1iZXI7CgogICAgICBpZiAoKGNvbnRhaW5zR3JlZ29yIHx8IGNvbnRhaW5zT3JkaW5hbCkgJiYgZGVmaW5pdGVXZWVrRGVmKSB7CiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKAogICAgICAgICAgIkNhbid0IG1peCB3ZWVrWWVhci93ZWVrTnVtYmVyIHVuaXRzIHdpdGggeWVhci9tb250aC9kYXkgb3Igb3JkaW5hbHMiCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgaWYgKGNvbnRhaW5zR3JlZ29yTUQgJiYgY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKCJDYW4ndCBtaXggb3JkaW5hbCBkYXRlcyB3aXRoIG1vbnRoL2RheSIpOwogICAgICB9CgogICAgICBsZXQgbWl4ZWQ7CiAgICAgIGlmIChzZXR0aW5nV2Vla1N0dWZmKSB7CiAgICAgICAgbWl4ZWQgPSB3ZWVrVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub1dlZWsodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTsKICAgICAgfSBlbHNlIGlmICghaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSkgewogICAgICAgIG1peGVkID0gb3JkaW5hbFRvR3JlZ29yaWFuKHsgLi4uZ3JlZ29yaWFuVG9PcmRpbmFsKHRoaXMuYyksIC4uLm5vcm1hbGl6ZWQgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWl4ZWQgPSB7IC4uLnRoaXMudG9PYmplY3QoKSwgLi4ubm9ybWFsaXplZCB9OwoKICAgICAgICAvLyBpZiB3ZSBkaWRuJ3Qgc2V0IHRoZSBkYXkgYnV0IHdlIGVuZGVkIHVwIG9uIGFuIG92ZXJmbG93IGRhdGUsCiAgICAgICAgLy8gdXNlIHRoZSBsYXN0IGRheSBvZiB0aGUgcmlnaHQgbW9udGgKICAgICAgICBpZiAoaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpKSB7CiAgICAgICAgICBtaXhlZC5kYXkgPSBNYXRoLm1pbihkYXlzSW5Nb250aChtaXhlZC55ZWFyLCBtaXhlZC5tb250aCksIG1peGVkLmRheSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBbdHMsIG9dID0gb2JqVG9UUyhtaXhlZCwgdGhpcy5vLCB0aGlzLnpvbmUpOwogICAgICByZXR1cm4gY2xvbmUodGhpcywgeyB0cywgbyB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgKgogICAgICogQWRkaW5nIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBvciBtaWxsaXNlY29uZHMgaW5jcmVhc2VzIHRoZSB0aW1lc3RhbXAgYnkgdGhlIHJpZ2h0IG51bWJlciBvZiBtaWxsaXNlY29uZHMuIEFkZGluZyBkYXlzLCBtb250aHMsIG9yIHllYXJzIHNoaWZ0cyB0aGUgY2FsZW5kYXIsIGFjY291bnRpbmcgZm9yIERTVHMgYW5kIGxlYXAgeWVhcnMgYWxvbmcgdGhlIHdheS4gVGh1cywgYGR0LnBsdXMoeyBob3VyczogMjQgfSlgIG1heSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdGltZSB0aGFuIGBkdC5wbHVzKHsgZGF5czogMSB9KWAgaWYgdGhlcmUncyBhIERTVCBzaGlmdCBpbiBiZXR3ZWVuLgogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cygxMjMpIC8vfj4gaW4gMTIzIG1pbGxpc2Vjb25kcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IG1pbnV0ZXM6IDE1IH0pIC8vfj4gaW4gMTUgbWludXRlcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkgLy9+PiB0aGlzIHRpbWUgdG9tb3Jyb3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAtMSB9KSAvL34+IHRoaXMgdGltZSB5ZXN0ZXJkYXkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBob3VyczogMywgbWludXRlczogMTMgfSkgLy9+PiBpbiAzIGhyLCAxMyBtaW4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSkgLy9+PiBpbiAzIGhyLCAxMyBtaW4KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBwbHVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogU3VidHJhY3QgYSBwZXJpb2Qgb2YgdGltZSB0byB0aGlzIERhdGVUaW1lIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBEYXRlVGltZQogICAgICogU2VlIHtAbGluayBEYXRlVGltZSNwbHVzfQogICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIG1pbnVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbikubmVnYXRlKCk7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhpcyBEYXRlVGltZSB0byB0aGUgYmVnaW5uaW5nIG9mIGEgdW5pdCBvZiB0aW1lLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBUaGUgdW5pdCB0byBnbyB0byB0aGUgYmVnaW5uaW5nIG9mLiBDYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCBvciAnbWlsbGlzZWNvbmQnLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignbW9udGgnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLnN0YXJ0T2YoJ3llYXInKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLnN0YXJ0T2YoJ3dlZWsnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMycsIHdlZWtzIGFsd2F5cyBzdGFydCBvbiBNb25kYXlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuc3RhcnRPZignZGF5JykudG9JU09UaW1lKCk7IC8vPT4gJzAwOjAwLjAwMC0wNTowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdob3VyJykudG9JU09UaW1lKCk7IC8vPT4gJzA1OjAwOjAwLjAwMC0wNTowMCcKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGFydE9mKHVuaXQpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBvID0ge30sCiAgICAgICAgbm9ybWFsaXplZFVuaXQgPSBEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpOwogICAgICBzd2l0Y2ggKG5vcm1hbGl6ZWRVbml0KSB7CiAgICAgICAgY2FzZSAieWVhcnMiOgogICAgICAgICAgby5tb250aCA9IDE7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgInF1YXJ0ZXJzIjoKICAgICAgICBjYXNlICJtb250aHMiOgogICAgICAgICAgby5kYXkgPSAxOwogICAgICAgIC8vIGZhbGxzIHRocm91Z2gKICAgICAgICBjYXNlICJ3ZWVrcyI6CiAgICAgICAgY2FzZSAiZGF5cyI6CiAgICAgICAgICBvLmhvdXIgPSAwOwogICAgICAgIC8vIGZhbGxzIHRocm91Z2gKICAgICAgICBjYXNlICJob3VycyI6CiAgICAgICAgICBvLm1pbnV0ZSA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgIm1pbnV0ZXMiOgogICAgICAgICAgby5zZWNvbmQgPSAwOwogICAgICAgIC8vIGZhbGxzIHRocm91Z2gKICAgICAgICBjYXNlICJzZWNvbmRzIjoKICAgICAgICAgIG8ubWlsbGlzZWNvbmQgPSAwOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgLy8gbm8gZGVmYXVsdCwgaW52YWxpZCB1bml0cyB0aHJvdyBpbiBub3JtYWxpemVVbml0KCkKICAgICAgfQoKICAgICAgaWYgKG5vcm1hbGl6ZWRVbml0ID09PSAid2Vla3MiKSB7CiAgICAgICAgby53ZWVrZGF5ID0gMTsKICAgICAgfQoKICAgICAgaWYgKG5vcm1hbGl6ZWRVbml0ID09PSAicXVhcnRlcnMiKSB7CiAgICAgICAgY29uc3QgcSA9IE1hdGguY2VpbCh0aGlzLm1vbnRoIC8gMyk7CiAgICAgICAgby5tb250aCA9IChxIC0gMSkgKiAzICsgMTsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMuc2V0KG8pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhpcyBEYXRlVGltZSB0byB0aGUgZW5kIChtZWFuaW5nIHRoZSBsYXN0IG1pbGxpc2Vjb25kKSBvZiBhIHVuaXQgb2YgdGltZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBUaGUgdW5pdCB0byBnbyB0byB0aGUgZW5kIG9mLiBDYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCBvciAnbWlsbGlzZWNvbmQnLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ21vbnRoJykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0zMVQyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZigneWVhcicpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMTItMzFUMjM6NTk6NTkuOTk5LTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ3dlZWsnKS50b0lTTygpOyAvLyA9PiAnMjAxNC0wMy0wOVQyMzo1OTo1OS45OTktMDU6MDAnLCB3ZWVrcyBzdGFydCBvbiBNb25kYXlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2RheScpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMDMtMDNUMjM6NTk6NTkuOTk5LTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLmVuZE9mKCdob3VyJykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QwNTo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgZW5kT2YodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyB0aGlzLnBsdXMoeyBbdW5pdF06IDEgfSkKICAgICAgICAgICAgLnN0YXJ0T2YodW5pdCkKICAgICAgICAgICAgLm1pbnVzKDEpCiAgICAgICAgOiB0aGlzOwogICAgfQoKICAgIC8vIE9VVFBVVAoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLgogICAgICogKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZSBmb3JtYXR0aW5nIHRvb2wuIEZvciBhIHRhYmxlIG9mIHRva2VucyBhbmQgdGhlaXIgaW50ZXJwcmV0YXRpb25zLCBzZWUgW2hlcmVdKGh0dHBzOi8vbW9tZW50LmdpdGh1Yi5pby9sdXhvbi8jL2Zvcm1hdHRpbmc/aWQ9dGFibGUtb2YtdG9rZW5zKS4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRzIHRvIG92ZXJyaWRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb24gdGhpcyBEYXRlVGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBBcHIgMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2ZyJykudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBhdnIuIDIyJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJywgeyBsb2NhbGU6ICJmciIgfSkgLy89PiAnMjAxNyBhdnIuIDIyJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoIkhIICdob3VycyBhbmQnIG1tICdtaW51dGVzJyIpIC8vPT4gJzIwIGhvdXJzIGFuZCA1NSBtaW51dGVzJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChmbXQsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLnJlZGVmYXVsdFRvRU4ob3B0cykpLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyh0aGlzLCBmbXQpCiAgICAgICAgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgZGF0ZS4gQWNjZXB0cyB0aGUgc2FtZSBvcHRpb25zIGFzIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIGFuZCBhbnkgcHJlc2V0cyBkZWZpbmVkIGJ5IEx1eG9uLCBzdWNoIGFzIGBEYXRlVGltZS5EQVRFX0ZVTExgIG9yIGBEYXRlVGltZS5USU1FX1NJTVBMRWAuCiAgICAgKiBUaGUgZXhhY3QgYmVoYXZpb3Igb2YgdGhpcyBtZXRob2QgaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24KICAgICAqIG9mIHRoZSBEYXRlVGltZSBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0gZm9ybWF0T3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDQvMjAvMjAxNwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuc2V0TG9jYWxlKCdlbi1nYicpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gJzIwLzA0LzIwMTcnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwpOyAvLz0+ICdBcHJpbCAyMCwgMjAxNycKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCwgeyBsb2NhbGU6ICdmcicgfSk7IC8vPT4gJzI4IGFvw7t0IDIwMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5USU1FX1NJTVBMRSk7IC8vPT4gJzExOjMyIEFNJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURVRJTUVfU0hPUlQpOyAvLz0+ICc0LzIwLzIwMTcsIDExOjMyIEFNJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnbG9uZycsIG1vbnRoOiAnbG9uZycsIGRheTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHVyc2RheSwgQXByaWwgMjAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdzaG9ydCcsIG1vbnRoOiAnc2hvcnQnLCBkYXk6ICcyLWRpZ2l0JywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTsgLy89PiAnVGh1LCBBcHIgMjAsIDExOjI3IEFNJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnLCBob3VyQ3ljbGU6ICdoMjMnIH0pOyAvLz0+ICcxMTozMicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Mb2NhbGVTdHJpbmcoZm9ybWF0T3B0cyA9IERBVEVfU0hPUlQsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLmNsb25lKG9wdHMpLCBmb3JtYXRPcHRzKS5mb3JtYXREYXRlVGltZSh0aGlzKQogICAgICAgIDogSU5WQUxJRDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgZm9ybWF0ICJwYXJ0cyIsIG1lYW5pbmcgaW5kaXZpZHVhbCB0b2tlbnMgYWxvbmcgd2l0aCBtZXRhZGF0YS4gVGhpcyBpcyBhbGxvd3MgY2FsbGVycyB0byBwb3N0LXByb2Nlc3MgaW5kaXZpZHVhbCBzZWN0aW9ucyBvZiB0aGUgZm9ybWF0dGVkIG91dHB1dC4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdC9mb3JtYXRUb1BhcnRzCiAgICAgKiBAcGFyYW0gb3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucywgc2FtZSBhcyBgdG9Mb2NhbGVTdHJpbmdgLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVQYXJ0cygpOyAvLz0+IFsKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnZGF5JywgdmFsdWU6ICcyNScgfSwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnLycgfSwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbW9udGgnLCB2YWx1ZTogJzA1JyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICd5ZWFyJywgdmFsdWU6ICcxOTgyJyB9CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiBdCiAgICAgKi8KICAgIHRvTG9jYWxlUGFydHMob3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIG9wdHMpLmZvcm1hdERhdGVUaW1lUGFydHModGhpcykKICAgICAgICA6IFtdOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzU2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIHNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5leHRlbmRlZFpvbmU9ZmFsc2VdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MywgNSwgMjUpLnRvSVNPKCkgLy89PiAnMTk4Mi0wNS0yNVQwMDowMDowMC4wMDBaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNS0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMjAxNy0wNC0yMlQyMDo0NzowNS4zMzUnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTyh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcyMDE3MDQyMlQyMDQ3MDUuMzM1LTA0MDAnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPKHsKICAgICAgZm9ybWF0ID0gImV4dGVuZGVkIiwKICAgICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsCiAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gZmFsc2UsCiAgICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLAogICAgICBleHRlbmRlZFpvbmUgPSBmYWxzZSwKICAgIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICBjb25zdCBleHQgPSBmb3JtYXQgPT09ICJleHRlbmRlZCI7CgogICAgICBsZXQgYyA9IHRvSVNPRGF0ZSh0aGlzLCBleHQpOwogICAgICBjICs9ICJUIjsKICAgICAgYyArPSB0b0lTT1RpbWUodGhpcywgZXh0LCBzdXBwcmVzc1NlY29uZHMsIHN1cHByZXNzTWlsbGlzZWNvbmRzLCBpbmNsdWRlT2Zmc2V0LCBleHRlbmRlZFpvbmUpOwogICAgICByZXR1cm4gYzsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3MgZGF0ZSBjb21wb25lbnQKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDUtMjUnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxOTgyMDUyNScKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09EYXRlKHsgZm9ybWF0ID0gImV4dGVuZGVkIiB9ID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRvSVNPRGF0ZSh0aGlzLCBmb3JtYXQgPT09ICJleHRlbmRlZCIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyB3ZWVrIGRhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09XZWVrRGF0ZSgpIC8vPT4gJzE5ODItVzIxLTInCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPV2Vla0RhdGUoKSB7CiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgImtra2stJ1cnV1ctYyIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyB0aW1lIGNvbXBvbmVudAogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT10cnVlXSAtIGFkZCB0aGUgdGltZSB6b25lIGZvcm1hdCBleHRlbnNpb24KICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKCkgLy89PiAnMDc6MzQ6MTkuMzYxWicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQsIHNlY29uZHM6IDAsIG1pbGxpc2Vjb25kczogMCB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc1NlY29uZHM6IHRydWUgfSkgLy89PiAnMDc6MzRaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMDczNDE5LjM2MVonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGluY2x1ZGVQcmVmaXg6IHRydWUgfSkgLy89PiAnVDA3OjM0OjE5LjM2MVonCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSVNPVGltZSh7CiAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gZmFsc2UsCiAgICAgIHN1cHByZXNzU2Vjb25kcyA9IGZhbHNlLAogICAgICBpbmNsdWRlT2Zmc2V0ID0gdHJ1ZSwKICAgICAgaW5jbHVkZVByZWZpeCA9IGZhbHNlLAogICAgICBleHRlbmRlZFpvbmUgPSBmYWxzZSwKICAgICAgZm9ybWF0ID0gImV4dGVuZGVkIiwKICAgIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICBsZXQgYyA9IGluY2x1ZGVQcmVmaXggPyAiVCIgOiAiIjsKICAgICAgcmV0dXJuICgKICAgICAgICBjICsKICAgICAgICB0b0lTT1RpbWUoCiAgICAgICAgICB0aGlzLAogICAgICAgICAgZm9ybWF0ID09PSAiZXh0ZW5kZWQiLAogICAgICAgICAgc3VwcHJlc3NTZWNvbmRzLAogICAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMsCiAgICAgICAgICBpbmNsdWRlT2Zmc2V0LAogICAgICAgICAgZXh0ZW5kZWRab25lCiAgICAgICAgKQogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBSRkMgMjgyMi1jb21wYXRpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvUkZDMjgyMigpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgKzAwMDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCAtMDQwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9SRkMyODIyKCkgewogICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsICJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzIFpaWiIsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEhUVFAgaGVhZGVycy4gVGhlIG91dHB1dCBpcyBhbHdheXMgZXhwcmVzc2VkIGluIEdNVC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHN0cmluZyBjb25mb3JtcyB0byBSRkMgMTEyMy4KICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvSFRUUCgpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgR01UJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzLCAxOSkudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAxOTowMDowMCBHTVQnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSFRUUCgpIHsKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLnRvVVRDKCksICJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzICdHTVQnIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgRGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTERhdGUoKSAvLz0+ICcyMDE0LTA3LTEzJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1NRTERhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgcmV0dXJuIHRvSVNPRGF0ZSh0aGlzLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBUaW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkudG9TUUwoKSAvLz0+ICcwNToxNToxNi4zNDUnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NSAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZVpvbmU6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NSBBbWVyaWNhL05ld19Zb3JrJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1NRTFRpbWUoeyBpbmNsdWRlT2Zmc2V0ID0gdHJ1ZSwgaW5jbHVkZVpvbmUgPSBmYWxzZSwgaW5jbHVkZU9mZnNldFNwYWNlID0gdHJ1ZSB9ID0ge30pIHsKICAgICAgbGV0IGZtdCA9ICJISDptbTpzcy5TU1MiOwoKICAgICAgaWYgKGluY2x1ZGVab25lIHx8IGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICBpZiAoaW5jbHVkZU9mZnNldFNwYWNlKSB7CiAgICAgICAgICBmbXQgKz0gIiAiOwogICAgICAgIH0KICAgICAgICBpZiAoaW5jbHVkZVpvbmUpIHsKICAgICAgICAgIGZtdCArPSAieiI7CiAgICAgICAgfSBlbHNlIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgICAgICBmbXQgKz0gIlpaIjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgZm10LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlVGltZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVab25lPWZhbHNlXSAtIGluY2x1ZGUgdGhlIHpvbmUsIHN1Y2ggYXMgJ0FtZXJpY2EvTmV3X1lvcmsnLiBPdmVycmlkZXMgaW5jbHVkZU9mZnNldC4KICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldFNwYWNlPXRydWVdIC0gaW5jbHVkZSB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgdGltZSBhbmQgdGhlIG9mZnNldCwgc3VjaCBhcyAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCBaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlWm9uZTogdHJ1ZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCBBbWVyaWNhL05ld19Zb3JrJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1NRTChvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQoKICAgICAgcmV0dXJuIGAke3RoaXMudG9TUUxEYXRlKCl9ICR7dGhpcy50b1NRTFRpbWUob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU3RyaW5nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0lTTygpIDogSU5WQUxJRDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLiBBbGlhcyBvZiB7QGxpbmsgRGF0ZVRpbWUjdG9NaWxsaXN9CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHZhbHVlT2YoKSB7CiAgICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBtaWxsaXNlY29uZHMgb2YgdGhpcyBEYXRlVGltZS4KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdG9NaWxsaXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b1NlY29uZHMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIC8gMTAwMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIHNlY29uZHMgKGFzIGEgd2hvbGUgbnVtYmVyKSBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b1VuaXhJbnRlZ2VyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gTWF0aC5mbG9vcih0aGlzLnRzIC8gMTAwMCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0pTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSVNPKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgQlNPTiBzZXJpYWxpemFibGUgZXF1aXZhbGVudCB0byB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7RGF0ZX0KICAgICAqLwogICAgdG9CU09OKCkgewogICAgICByZXR1cm4gdGhpcy50b0pTRGF0ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggdGhpcyBEYXRlVGltZSdzIHllYXIsIG1vbnRoLCBkYXksIGFuZCBzbyBvbi4KICAgICAqIEBwYXJhbSBvcHRzIC0gb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyB0aGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVDb25maWc9ZmFsc2VdIC0gaW5jbHVkZSBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZXMgaW4gdGhlIG91dHB1dAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9PYmplY3QoKSAvLz0+IHsgeWVhcjogMjAxNywgbW9udGg6IDQsIGRheTogMjIsIGhvdXI6IDIwLCBtaW51dGU6IDQ5LCBzZWNvbmQ6IDQyLCBtaWxsaXNlY29uZDogMjY4IH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgdG9PYmplY3Qob3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4ge307CgogICAgICBjb25zdCBiYXNlID0geyAuLi50aGlzLmMgfTsKCiAgICAgIGlmIChvcHRzLmluY2x1ZGVDb25maWcpIHsKICAgICAgICBiYXNlLm91dHB1dENhbGVuZGFyID0gdGhpcy5vdXRwdXRDYWxlbmRhcjsKICAgICAgICBiYXNlLm51bWJlcmluZ1N5c3RlbSA9IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbTsKICAgICAgICBiYXNlLmxvY2FsZSA9IHRoaXMubG9jLmxvY2FsZTsKICAgICAgfQogICAgICByZXR1cm4gYmFzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IERhdGUgZXF1aXZhbGVudCB0byB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7RGF0ZX0KICAgICAqLwogICAgdG9KU0RhdGUoKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIDogTmFOKTsKICAgIH0KCiAgICAvLyBDT01QQVJFCgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gRGF0ZVRpbWVzIGFzIGEgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIERhdGVUaW1lIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8KICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIGFycmF5IG9mIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBleGFtcGxlCiAgICAgKiB2YXIgaTEgPSBEYXRlVGltZS5mcm9tSVNPKCcxOTgyLTA1LTI1VDA5OjQ1JyksCiAgICAgKiAgICAgaTIgPSBEYXRlVGltZS5mcm9tSVNPKCcxOTgzLTEwLTE0VDEwOjMwJyk7CiAgICAgKiBpMi5kaWZmKGkxKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDQzODA3NTAwMDAwIH0KICAgICAqIGkyLmRpZmYoaTEsICdob3VycycpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMjE2OC43NSB9CiAgICAgKiBpMi5kaWZmKGkxLCBbJ21vbnRocycsICdkYXlzJ10pLnRvT2JqZWN0KCkgLy89PiB7IG1vbnRoczogMTYsIGRheXM6IDE5LjAzMTI1IH0KICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnLCAnaG91cnMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTksIGhvdXJzOiAwLjc1IH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBkaWZmKG90aGVyRGF0ZVRpbWUsIHVuaXQgPSAibWlsbGlzZWNvbmRzIiwgb3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlckRhdGVUaW1lLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZCgiY3JlYXRlZCBieSBkaWZmaW5nIGFuIGludmFsaWQgRGF0ZVRpbWUiKTsKICAgICAgfQoKICAgICAgY29uc3QgZHVyT3B0cyA9IHsgbG9jYWxlOiB0aGlzLmxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtOiB0aGlzLm51bWJlcmluZ1N5c3RlbSwgLi4ub3B0cyB9OwoKICAgICAgY29uc3QgdW5pdHMgPSBtYXliZUFycmF5KHVuaXQpLm1hcChEdXJhdGlvbi5ub3JtYWxpemVVbml0KSwKICAgICAgICBvdGhlcklzTGF0ZXIgPSBvdGhlckRhdGVUaW1lLnZhbHVlT2YoKSA+IHRoaXMudmFsdWVPZigpLAogICAgICAgIGVhcmxpZXIgPSBvdGhlcklzTGF0ZXIgPyB0aGlzIDogb3RoZXJEYXRlVGltZSwKICAgICAgICBsYXRlciA9IG90aGVySXNMYXRlciA/IG90aGVyRGF0ZVRpbWUgOiB0aGlzLAogICAgICAgIGRpZmZlZCA9IGRpZmYoZWFybGllciwgbGF0ZXIsIHVuaXRzLCBkdXJPcHRzKTsKCiAgICAgIHJldHVybiBvdGhlcklzTGF0ZXIgPyBkaWZmZWQubmVnYXRlKCkgOiBkaWZmZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCByaWdodCBub3cuCiAgICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI2RpZmZ9CiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW3VuaXQ9WydtaWxsaXNlY29uZHMnXV0gLSB0aGUgdW5pdCBvciB1bml0cyB1bml0cyAoc3VjaCBhcyAnaG91cnMnIG9yICdkYXlzJykgdG8gaW5jbHVkZSBpbiB0aGUgZHVyYXRpb24KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBkaWZmTm93KHVuaXQgPSAibWlsbGlzZWNvbmRzIiwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmRpZmYoRGF0ZVRpbWUubm93KCksIHVuaXQsIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIEludGVydmFsIHNwYW5uaW5nIGJldHdlZW4gdGhpcyBEYXRlVGltZSBhbmQgYW5vdGhlciBEYXRlVGltZQogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBlbmQgcG9pbnQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgdW50aWwob3RoZXJEYXRlVGltZSkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyh0aGlzLCBvdGhlckRhdGVUaW1lKSA6IHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIERhdGVUaW1lIGlzIGluIHRoZSBzYW1lIHVuaXQgb2YgdGltZSBhcyBhbm90aGVyIERhdGVUaW1lLgogICAgICogSGlnaGVyLW9yZGVyIHVuaXRzIG11c3QgYWxzbyBiZSBpZGVudGljYWwgZm9yIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIGB0cnVlYC4KICAgICAqIE5vdGUgdGhhdCB0aW1lIHpvbmVzIGFyZSAqKmlnbm9yZWQqKiBpbiB0aGlzIGNvbXBhcmlzb24sIHdoaWNoIGNvbXBhcmVzIHRoZSAqKmxvY2FsKiogY2FsZW5kYXIgdGltZS4gVXNlIHtAbGluayBEYXRlVGltZSNzZXRab25lfSB0byBjb252ZXJ0IG9uZSBvZiB0aGUgZGF0ZXMgaWYgbmVlZGVkLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNoZWNrIHNhbWVuZXNzIG9uCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5oYXNTYW1lKG90aGVyRFQsICdkYXknKTsgLy9+PiB0cnVlIGlmIG90aGVyRFQgaXMgaW4gdGhlIHNhbWUgY3VycmVudCBjYWxlbmRhciBkYXkKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUob3RoZXJEYXRlVGltZSwgdW5pdCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwoKICAgICAgY29uc3QgaW5wdXRNcyA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpOwogICAgICBjb25zdCBhZGp1c3RlZFRvWm9uZSA9IHRoaXMuc2V0Wm9uZShvdGhlckRhdGVUaW1lLnpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KTsKICAgICAgcmV0dXJuIGFkanVzdGVkVG9ab25lLnN0YXJ0T2YodW5pdCkgPD0gaW5wdXRNcyAmJiBpbnB1dE1zIDw9IGFkanVzdGVkVG9ab25lLmVuZE9mKHVuaXQpOwogICAgfQoKICAgIC8qKgogICAgICogRXF1YWxpdHkgY2hlY2sKICAgICAqIFR3byBEYXRlVGltZXMgYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIG1pbGxpc2Vjb25kLCBoYXZlIHRoZSBzYW1lIHpvbmUgYW5kIGxvY2F0aW9uLCBhbmQgYXJlIGJvdGggdmFsaWQuCiAgICAgKiBUbyBjb21wYXJlIGp1c3QgdGhlIG1pbGxpc2Vjb25kIHZhbHVlcywgdXNlIGArZHQxID09PSArZHQyYC4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyIC0gdGhlIG90aGVyIERhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmlzVmFsaWQgJiYKICAgICAgICBvdGhlci5pc1ZhbGlkICYmCiAgICAgICAgdGhpcy52YWx1ZU9mKCkgPT09IG90aGVyLnZhbHVlT2YoKSAmJgogICAgICAgIHRoaXMuem9uZS5lcXVhbHMob3RoZXIuem9uZSkgJiYKICAgICAgICB0aGlzLmxvYy5lcXVhbHMob3RoZXIubG9jKQogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHRoaXMgdGltZSByZWxhdGl2ZSB0byBub3csIHN1Y2ggYXMgImluIHR3byBkYXlzIi4gQ2FuIG9ubHkgaW50ZXJuYXRpb25hbGl6ZSBpZiB5b3VyCiAgICAgKiBwbGF0Zm9ybSBzdXBwb3J0cyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC4gUm91bmRzIGRvd24gYnkgZGVmYXVsdC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0CiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBbb3B0aW9ucy5iYXNlPURhdGVUaW1lLm5vdygpXSAtIHRoZSBEYXRlVGltZSB0byB1c2UgYXMgdGhlIGJhc2lzIHRvIHdoaWNoIHRoaXMgdGltZSBpcyBjb21wYXJlZC4gRGVmYXVsdHMgdG8gbm93LgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnN0eWxlPSJsb25nIl0gLSB0aGUgc3R5bGUgb2YgdW5pdHMsIG11c3QgYmUgImxvbmciLCAic2hvcnQiLCBvciAibmFycm93IgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IG9wdGlvbnMudW5pdCAtIHVzZSBhIHNwZWNpZmljIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHM7IGlmIG9taXR0ZWQsIG9yIGFuIGFycmF5LCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgYmVzdCB1bml0LiBVc2UgYW4gYXJyYXkgb3Igb25lIG9mICJ5ZWFycyIsICJxdWFydGVycyIsICJtb250aHMiLCAid2Vla3MiLCAiZGF5cyIsICJob3VycyIsICJtaW51dGVzIiwgb3IgInNlY29uZHMiCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnJvdW5kPXRydWVdIC0gd2hldGhlciB0byByb3VuZCB0aGUgbnVtYmVycyBpbiB0aGUgb3V0cHV0LgogICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnBhZGRpbmc9MF0gLSBwYWRkaW5nIGluIG1pbGxpc2Vjb25kcy4gVGhpcyBhbGxvd3MgeW91IHRvIHJvdW5kIHVwIHRoZSByZXN1bHQgaWYgaXQgZml0cyBpbnNpZGUgdGhlIHRocmVzaG9sZC4gRG9uJ3QgdXNlIGluIGNvbWJpbmF0aW9uIHdpdGgge3JvdW5kOiBmYWxzZX0gYmVjYXVzZSB0aGUgZGVjaW1hbCBvdXRwdXQgd2lsbCBpbmNsdWRlIHRoZSBwYWRkaW5nLgogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubG9jYWxlIC0gb3ZlcnJpZGUgdGhlIGxvY2FsZSBvZiB0aGlzIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiaW4gMSBkYXkiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoImVzIikudG9SZWxhdGl2ZSh7IGRheXM6IDEgfSkgLy89PiAiZGVudHJvIGRlIDEgZMOtYSIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGFucyAyMyBoZXVyZXMiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSgpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSh7IHVuaXQ6ICJob3VycyIgfSkgLy89PiAiNDggaG91cnMgYWdvIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBob3VyczogMzYgfSkudG9SZWxhdGl2ZSh7IHJvdW5kOiBmYWxzZSB9KSAvLz0+ICIxLjUgZGF5cyBhZ28iCiAgICAgKi8KICAgIHRvUmVsYXRpdmUob3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKICAgICAgY29uc3QgYmFzZSA9IG9wdGlvbnMuYmFzZSB8fCBEYXRlVGltZS5mcm9tT2JqZWN0KHt9LCB7IHpvbmU6IHRoaXMuem9uZSB9KSwKICAgICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nID8gKHRoaXMgPCBiYXNlID8gLW9wdGlvbnMucGFkZGluZyA6IG9wdGlvbnMucGFkZGluZykgOiAwOwogICAgICBsZXQgdW5pdHMgPSBbInllYXJzIiwgIm1vbnRocyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyJdOwogICAgICBsZXQgdW5pdCA9IG9wdGlvbnMudW5pdDsKICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy51bml0KSkgewogICAgICAgIHVuaXRzID0gb3B0aW9ucy51bml0OwogICAgICAgIHVuaXQgPSB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShiYXNlLCB0aGlzLnBsdXMocGFkZGluZyksIHsKICAgICAgICAuLi5vcHRpb25zLAogICAgICAgIG51bWVyaWM6ICJhbHdheXMiLAogICAgICAgIHVuaXRzLAogICAgICAgIHVuaXQsCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGRhdGUgcmVsYXRpdmUgdG8gdG9kYXksIHN1Y2ggYXMgInllc3RlcmRheSIgb3IgIm5leHQgbW9udGgiLgogICAgICogT25seSBpbnRlcm5hdGlvbmFsaXplcyBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0CiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBbb3B0aW9ucy5iYXNlPURhdGVUaW1lLm5vdygpXSAtIHRoZSBEYXRlVGltZSB0byB1c2UgYXMgdGhlIGJhc2lzIHRvIHdoaWNoIHRoaXMgdGltZSBpcyBjb21wYXJlZC4gRGVmYXVsdHMgdG8gbm93LgogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubG9jYWxlIC0gb3ZlcnJpZGUgdGhlIGxvY2FsZSBvZiB0aGlzIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdDsgaWYgb21pdHRlZCwgdGhlIG1ldGhvZCB3aWxsIHBpY2sgdGhlIHVuaXQuIFVzZSBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsIG9yICJkYXlzIgogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gb3ZlcnJpZGUgdGhlIG51bWJlcmluZ1N5c3RlbSBvZiB0aGlzIERhdGVUaW1lLiBUaGUgSW50bCBzeXN0ZW0gbWF5IGNob29zZSBub3QgdG8gaG9ub3IgdGhpcwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKCkgLy89PiAidG9tb3Jyb3ciCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoImVzIikucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSgpIC8vPT4gIiJtYcOxYW5hIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKHsgbG9jYWxlOiAiZnIiIH0pIC8vPT4gImRlbWFpbiIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+ICIyIGRheXMgYWdvIgogICAgICovCiAgICB0b1JlbGF0aXZlQ2FsZW5kYXIob3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIHJldHVybiBkaWZmUmVsYXRpdmUob3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLCB0aGlzLCB7CiAgICAgICAgLi4ub3B0aW9ucywKICAgICAgICBudW1lcmljOiAiYXV0byIsCiAgICAgICAgdW5pdHM6IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiXSwKICAgICAgICBjYWxlbmRhcnk6IHRydWUsCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBtaW4gb2Ygc2V2ZXJhbCBkYXRlIHRpbWVzCiAgICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgRGF0ZVRpbWVzIGZyb20gd2hpY2ggdG8gY2hvb3NlIHRoZSBtaW5pbXVtCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0gdGhlIG1pbiBEYXRlVGltZSwgb3IgdW5kZWZpbmVkIGlmIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50CiAgICAgKi8KICAgIHN0YXRpYyBtaW4oLi4uZGF0ZVRpbWVzKSB7CiAgICAgIGlmICghZGF0ZVRpbWVzLmV2ZXJ5KERhdGVUaW1lLmlzRGF0ZVRpbWUpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJtaW4gcmVxdWlyZXMgYWxsIGFyZ3VtZW50cyBiZSBEYXRlVGltZXMiKTsKICAgICAgfQogICAgICByZXR1cm4gYmVzdEJ5KGRhdGVUaW1lcywgKGkpID0+IGkudmFsdWVPZigpLCBNYXRoLm1pbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIG1heCBvZiBzZXZlcmFsIGRhdGUgdGltZXMKICAgICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1heGltdW0KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWF4IERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAqLwogICAgc3RhdGljIG1heCguLi5kYXRlVGltZXMpIHsKICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm1heCByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lcyIpOwogICAgICB9CiAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWF4KTsKICAgIH0KCiAgICAvLyBNSVNDCgogICAgLyoqCiAgICAgKiBFeHBsYWluIGhvdyBhIHN0cmluZyB3b3VsZCBiZSBwYXJzZWQgYnkgZnJvbUZvcm1hdCgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBzdHJpbmcgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHRoZSBzdHJpbmcgaXMgZXhwZWN0ZWQgdG8gYmUgaW4gKHNlZSBkZXNjcmlwdGlvbikKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0YWtlbiBieSBmcm9tRm9ybWF0KCkKICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGNvbnN0IHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCB9ID0gb3B0aW9ucywKICAgICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7CiAgICAgICAgICBsb2NhbGUsCiAgICAgICAgICBudW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICBkZWZhdWx0VG9FTjogdHJ1ZSwKICAgICAgICB9KTsKICAgICAgcmV0dXJuIGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZVRvVXNlLCB0ZXh0LCBmbXQpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21Gb3JtYXRFeHBsYWluIGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmdFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyA9IHt9KSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tRm9ybWF0RXhwbGFpbih0ZXh0LCBmbXQsIG9wdGlvbnMpOwogICAgfQoKICAgIC8vIEZPUk1BVCBQUkVTRVRTCgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlIDEwLzE0LzE5ODMKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9TSE9SVCgpIHsKICAgICAgcmV0dXJuIERBVEVfU0hPUlQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMnCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVfTUVEKCkgewogICAgICByZXR1cm4gREFURV9NRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIE9jdCAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9NRURfV0lUSF9XRUVLREFZKCkgewogICAgICByZXR1cm4gREFURV9NRURfV0lUSF9XRUVLREFZOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9GVUxMKCkgewogICAgICByZXR1cm4gREFURV9GVUxMOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnVHVlc2RheSwgT2N0b2JlciAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9IVUdFKCkgewogICAgICByZXR1cm4gREFURV9IVUdFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9TSU1QTEUoKSB7CiAgICAgIHJldHVybiBUSU1FX1NJTVBMRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IFRJTUVfV0lUSF9TRUNPTkRTKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NIT1JUX09GRlNFVCgpIHsKICAgICAgcmV0dXJuIFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX0xPTkdfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX0xPTkdfT0ZGU0VUOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzAnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9TSU1QTEUoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1NJTVBMRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzJywgYWx3YXlzIDI0LWhvdXIuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IFRJTUVfMjRfV0lUSF9TRUNPTkRTKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBFRFQnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCgpIHsKICAgICAgcmV0dXJuIFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMTAvMTQvMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9TSE9SVCgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMTAvMTQvMTk4MywgOTozMDozMyBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEKCkgewogICAgICByZXR1cm4gREFURVRJTUVfTUVEOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0IDE0LCAxOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpLCAxNCBPY3QgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZKCkgewogICAgICByZXR1cm4gREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdG9iZXIgMTQsIDE5ODMsIDk6MzAgQU0gRURUJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX0ZVTEwoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9GVUxMOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRSgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0hVR0U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmlkYXksIE9jdG9iZXIgMTQsIDE5ODMsIDk6MzA6MzMgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTKCkgewogICAgICByZXR1cm4gREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFM7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIGZyaWVuZGx5RGF0ZVRpbWUoZGF0ZVRpbWVpc2gpIHsKICAgIGlmIChEYXRlVGltZS5pc0RhdGVUaW1lKGRhdGVUaW1laXNoKSkgewogICAgICByZXR1cm4gZGF0ZVRpbWVpc2g7CiAgICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIGRhdGVUaW1laXNoLnZhbHVlT2YgJiYgaXNOdW1iZXIoZGF0ZVRpbWVpc2gudmFsdWVPZigpKSkgewogICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUpTRGF0ZShkYXRlVGltZWlzaCk7CiAgICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIHR5cGVvZiBkYXRlVGltZWlzaCA9PT0gIm9iamVjdCIpIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoZGF0ZVRpbWVpc2gpOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgIGBVbmtub3duIGRhdGV0aW1lIGFyZ3VtZW50OiAke2RhdGVUaW1laXNofSwgb2YgdHlwZSAke3R5cGVvZiBkYXRlVGltZWlzaH1gCiAgICAgICk7CiAgICB9CiAgfQoKICAvLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAvLyBRdWVyeSBTZXR0aW5ncyAvLw0KICAvLy8vLy8vLy8vLy8vLy8vLy8vLw0KICBjb25zdCBERUZBVUxUX1FVRVJZX1NFVFRJTkdTID0gew0KICAgICAgcmVuZGVyTnVsbEFzOiAiXFwtIiwNCiAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLA0KICAgICAgdGFza0NvbXBsZXRpb25Vc2VFbW9qaVNob3J0aGFuZDogZmFsc2UsDQogICAgICB0YXNrQ29tcGxldGlvblRleHQ6ICJjb21wbGV0aW9uIiwNCiAgICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogInl5eXktTU0tZGQiLA0KICAgICAgcmVjdXJzaXZlU3ViVGFza0NvbXBsZXRpb246IGZhbHNlLA0KICAgICAgd2Fybk9uRW1wdHlSZXN1bHQ6IHRydWUsDQogICAgICByZWZyZXNoRW5hYmxlZDogdHJ1ZSwNCiAgICAgIHJlZnJlc2hJbnRlcnZhbDogMjUwMCwNCiAgICAgIGRlZmF1bHREYXRlRm9ybWF0OiAiTU1NTSBkZCwgeXl5eSIsDQogICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6ICJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5IiwNCiAgICAgIG1heFJlY3Vyc2l2ZVJlbmRlckRlcHRoOiA0LA0KICAgICAgdGFibGVJZENvbHVtbk5hbWU6ICJGaWxlIiwNCiAgICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiAiR3JvdXAiLA0KICAgICAgc2hvd1Jlc3VsdENvdW50OiB0cnVlLA0KICB9Ow0KICBjb25zdCBERUZBVUxUX0VYUE9SVF9TRVRUSU5HUyA9IHsNCiAgICAgIGFsbG93SHRtbDogdHJ1ZSwNCiAgfTsNCiAgLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGRhdGF2aWV3IG9uIGluc3RhbGwuICovDQogICh7DQogICAgICAuLi5ERUZBVUxUX1FVRVJZX1NFVFRJTkdTLA0KICAgICAgLi4uREVGQVVMVF9FWFBPUlRfU0VUVElOR1MsDQogICAgICAuLi57DQogICAgICAgICAgaW5saW5lUXVlcnlQcmVmaXg6ICI9IiwNCiAgICAgICAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiAiJD0iLA0KICAgICAgICAgIGlubGluZVF1ZXJpZXNJbkNvZGVibG9ja3M6IHRydWUsDQogICAgICAgICAgZW5hYmxlSW5saW5lRGF0YXZpZXc6IHRydWUsDQogICAgICAgICAgZW5hYmxlRGF0YXZpZXdKczogZmFsc2UsDQogICAgICAgICAgZW5hYmxlSW5saW5lRGF0YXZpZXdKczogZmFsc2UsDQogICAgICAgICAgcHJldHR5UmVuZGVySW5saW5lRmllbGRzOiB0cnVlLA0KICAgICAgICAgIGRhdGF2aWV3SnNLZXl3b3JkOiAiZGF0YXZpZXdqcyIsDQogICAgICB9LA0KICB9KTsKCiAgLyoqIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLiAqLw0KICBjbGFzcyBTdWNjZXNzIHsNCiAgICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7DQogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOw0KICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IHRydWU7DQogICAgICB9DQogICAgICBtYXAoZikgew0KICAgICAgICAgIHJldHVybiBuZXcgU3VjY2VzcyhmKHRoaXMudmFsdWUpKTsNCiAgICAgIH0NCiAgICAgIGZsYXRNYXAoZikgew0KICAgICAgICAgIHJldHVybiBmKHRoaXMudmFsdWUpOw0KICAgICAgfQ0KICAgICAgbWFwRXJyKGYpIHsNCiAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgIH0NCiAgICAgIGJpbWFwKHN1Y2MsIF9mYWlsKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMubWFwKHN1Y2MpOw0KICAgICAgfQ0KICAgICAgb3JFbHNlKF92YWx1ZSkgew0KICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOw0KICAgICAgfQ0KICAgICAgY2FzdCgpIHsNCiAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgIH0NCiAgICAgIG9yRWxzZVRocm93KF9tZXNzYWdlKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7DQogICAgICB9DQogIH0NCiAgLyoqIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLiAqLw0KICBjbGFzcyBGYWlsdXJlIHsNCiAgICAgIGNvbnN0cnVjdG9yKGVycm9yKSB7DQogICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOw0KICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IGZhbHNlOw0KICAgICAgfQ0KICAgICAgbWFwKF9mKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXM7DQogICAgICB9DQogICAgICBmbGF0TWFwKF9mKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXM7DQogICAgICB9DQogICAgICBtYXBFcnIoZikgew0KICAgICAgICAgIHJldHVybiBuZXcgRmFpbHVyZShmKHRoaXMuZXJyb3IpKTsNCiAgICAgIH0NCiAgICAgIGJpbWFwKF9zdWNjLCBmYWlsKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMubWFwRXJyKGZhaWwpOw0KICAgICAgfQ0KICAgICAgb3JFbHNlKHZhbHVlKSB7DQogICAgICAgICAgcmV0dXJuIHZhbHVlOw0KICAgICAgfQ0KICAgICAgY2FzdCgpIHsNCiAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgIH0NCiAgICAgIG9yRWxzZVRocm93KG1lc3NhZ2UpIHsNCiAgICAgICAgICBpZiAobWVzc2FnZSkNCiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UodGhpcy5lcnJvcikpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCIiICsgdGhpcy5lcnJvcik7DQogICAgICB9DQogIH0NCiAgLyoqIE1vbmFkaWMgJ1Jlc3VsdCcgdHlwZSB3aGljaCBlbmNhcHN1bGF0ZXMgd2hldGhlciBhIHByb2NlZHVyZSBzdWNjZWVkZWQgb3IgZmFpbGVkLCBhcyB3ZWxsIGFzIGl0J3MgcmV0dXJuIHZhbHVlLiAqLw0KICB2YXIgUmVzdWx0Ow0KICAoZnVuY3Rpb24gKFJlc3VsdCkgew0KICAgICAgLyoqIENvbnN0cnVjdCBhIG5ldyBzdWNjZXNzIHJlc3VsdCB3cmFwcGluZyB0aGUgZ2l2ZW4gdmFsdWUuICovDQogICAgICBmdW5jdGlvbiBzdWNjZXNzKHZhbHVlKSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKHZhbHVlKTsNCiAgICAgIH0NCiAgICAgIFJlc3VsdC5zdWNjZXNzID0gc3VjY2VzczsNCiAgICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgZmFpbHVyZSB2YWx1ZSB3cmFwcGluZyB0aGUgZ2l2ZW4gZXJyb3IuICovDQogICAgICBmdW5jdGlvbiBmYWlsdXJlKGVycm9yKSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGVycm9yKTsNCiAgICAgIH0NCiAgICAgIFJlc3VsdC5mYWlsdXJlID0gZmFpbHVyZTsNCiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8NCiAgICAgIGZ1bmN0aW9uIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIGYpIHsNCiAgICAgICAgICBpZiAoZmlyc3Quc3VjY2Vzc2Z1bCkgew0KICAgICAgICAgICAgICBpZiAoc2Vjb25kLnN1Y2Nlc3NmdWwpDQogICAgICAgICAgICAgICAgICByZXR1cm4gZihmaXJzdC52YWx1ZSwgc2Vjb25kLnZhbHVlKTsNCiAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoc2Vjb25kLmVycm9yKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKGZpcnN0LmVycm9yKTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBSZXN1bHQuZmxhdE1hcDIgPSBmbGF0TWFwMjsNCiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8NCiAgICAgIGZ1bmN0aW9uIG1hcDIoZmlyc3QsIHNlY29uZCwgZikgew0KICAgICAgICAgIHJldHVybiBmbGF0TWFwMihmaXJzdCwgc2Vjb25kLCAoYSwgYikgPT4gc3VjY2VzcyhmKGEsIGIpKSk7DQogICAgICB9DQogICAgICBSZXN1bHQubWFwMiA9IG1hcDI7DQogIH0pKFJlc3VsdCB8fCAoUmVzdWx0ID0ge30pKTsKCiAgdmFyIGNvbW1vbmpzR2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyA6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge307CgogIHZhciBwYXJzaW1tb25fdW1kX21pbiA9IHtleHBvcnRzOiB7fX07CgogIChmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiAgIWZ1bmN0aW9uKG4sdCl7bW9kdWxlLmV4cG9ydHM9dCgpO30oInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6Y29tbW9uanNHbG9iYWwsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHQ9e307ZnVuY3Rpb24gcihlKXtpZih0W2VdKXJldHVybiB0W2VdLmV4cG9ydHM7dmFyIHU9dFtlXT17aTplLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIG5bZV0uY2FsbCh1LmV4cG9ydHMsdSx1LmV4cG9ydHMsciksdS5sPSEwLHUuZXhwb3J0c31yZXR1cm4gci5tPW4sci5jPXQsci5kPWZ1bmN0aW9uKG4sdCxlKXtyLm8obix0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sdCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OmV9KTt9LHIucj1mdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7fSxyLm49ZnVuY3Rpb24obil7dmFyIHQ9biYmbi5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIG4uZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gbn07cmV0dXJuIHIuZCh0LCJhIix0KSx0fSxyLm89ZnVuY3Rpb24obix0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sdCl9LHIucD0iIixyKHIucz0wKX0oW2Z1bmN0aW9uKG4sdCxyKXtmdW5jdGlvbiBlKG4pe2lmKCEodGhpcyBpbnN0YW5jZW9mIGUpKXJldHVybiBuZXcgZShuKTt0aGlzLl89bjt9dmFyIHU9ZS5wcm90b3R5cGU7ZnVuY3Rpb24gbyhuLHQpe2Zvcih2YXIgcj0wO3I8bjtyKyspdChyKTt9ZnVuY3Rpb24gaShuLHQscil7cmV0dXJuIGZ1bmN0aW9uKG4sdCl7byh0Lmxlbmd0aCxmdW5jdGlvbihyKXtuKHRbcl0scix0KTt9KTt9KGZ1bmN0aW9uKHIsZSx1KXt0PW4odCxyLGUsdSk7fSxyKSx0fWZ1bmN0aW9uIGEobix0KXtyZXR1cm4gaShmdW5jdGlvbih0LHIsZSx1KXtyZXR1cm4gdC5jb25jYXQoW24ocixlLHUpXSl9LFtdLHQpfWZ1bmN0aW9uIGYobix0KXt2YXIgcj17djowLGJ1Zjp0fTtyZXR1cm4gbyhuLGZ1bmN0aW9uKCl7dmFyIG47cj17djpyLnY8PDF8KG49ci5idWYsblswXT4+NyksYnVmOmZ1bmN0aW9uKG4pe3ZhciB0PWkoZnVuY3Rpb24obix0LHIsZSl7cmV0dXJuIG4uY29uY2F0KHI9PT1lLmxlbmd0aC0xP0J1ZmZlci5mcm9tKFt0LDBdKS5yZWFkVUludDE2QkUoMCk6ZS5yZWFkVUludDE2QkUocikpfSxbXSxuKTtyZXR1cm4gQnVmZmVyLmZyb20oYShmdW5jdGlvbihuKXtyZXR1cm4gKG48PDEmNjU1MzUpPj44fSx0KSl9KHIuYnVmKX07fSkscn1mdW5jdGlvbiBjKCl7cmV0dXJuICJ1bmRlZmluZWQiIT10eXBlb2YgQnVmZmVyfWZ1bmN0aW9uIHMoKXtpZighYygpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyIGdsb2JhbCBkb2VzIG5vdCBleGlzdDsgcGxlYXNlIHVzZSB3ZWJwYWNrIGlmIHlvdSBuZWVkIHRvIHBhcnNlIEJ1ZmZlcnMgaW4gdGhlIGJyb3dzZXIuIil9ZnVuY3Rpb24gbChuKXtzKCk7dmFyIHQ9aShmdW5jdGlvbihuLHQpe3JldHVybiBuK3R9LDAsbik7aWYodCU4IT0wKXRocm93IG5ldyBFcnJvcigiVGhlIGJpdHMgWyIrbi5qb2luKCIsICIpKyJdIGFkZCB1cCB0byAiK3QrIiB3aGljaCBpcyBub3QgYW4gZXZlbiBudW1iZXIgb2YgYnl0ZXM7IHRoZSB0b3RhbCBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IDgiKTt2YXIgcix1PXQvOCxvPShyPWZ1bmN0aW9uKG4pe3JldHVybiBuPjQ4fSxpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG58fChyKHQpP3Q6bil9LG51bGwsbikpO2lmKG8pdGhyb3cgbmV3IEVycm9yKG8rIiBiaXQgcmFuZ2UgcmVxdWVzdGVkIGV4Y2VlZHMgNDggYml0ICg2IGJ5dGUpIE51bWJlciBtYXguIik7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHQscil7dmFyIGU9dStyO3JldHVybiBlPnQubGVuZ3RoP3gocix1LnRvU3RyaW5nKCkrIiBieXRlcyIpOmIoZSxpKGZ1bmN0aW9uKG4sdCl7dmFyIHI9Zih0LG4uYnVmKTtyZXR1cm4ge2NvbGw6bi5jb2xsLmNvbmNhdChyLnYpLGJ1ZjpyLmJ1Zn19LHtjb2xsOltdLGJ1Zjp0LnNsaWNlKHIsZSl9LG4pLmNvbGwpfSl9ZnVuY3Rpb24gaChuLHQpe3JldHVybiBuZXcgZShmdW5jdGlvbihyLGUpe3JldHVybiBzKCksZSt0PnIubGVuZ3RoP3goZSx0KyIgYnl0ZXMgZm9yICIrbik6YihlK3Qsci5zbGljZShlLGUrdCkpfSl9ZnVuY3Rpb24gcChuLHQpe2lmKCJudW1iZXIiIT10eXBlb2Yocj10KXx8TWF0aC5mbG9vcihyKSE9PXJ8fHQ8MHx8dD42KXRocm93IG5ldyBFcnJvcihuKyIgcmVxdWlyZXMgaW50ZWdlciBsZW5ndGggaW4gcmFuZ2UgWzAsIDZdLiIpO3ZhciByO31mdW5jdGlvbiBkKG4pe3JldHVybiBwKCJ1aW50QkUiLG4pLGgoInVpbnRCRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludEJFKDAsbil9KX1mdW5jdGlvbiB2KG4pe3JldHVybiBwKCJ1aW50TEUiLG4pLGgoInVpbnRMRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludExFKDAsbil9KX1mdW5jdGlvbiBnKG4pe3JldHVybiBwKCJpbnRCRSIsbiksaCgiaW50QkUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludEJFKDAsbil9KX1mdW5jdGlvbiBtKG4pe3JldHVybiBwKCJpbnRMRSIsbiksaCgiaW50TEUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludExFKDAsbil9KX1mdW5jdGlvbiB5KG4pe3JldHVybiBuIGluc3RhbmNlb2YgZX1mdW5jdGlvbiBFKG4pe3JldHVybiAiW29iamVjdCBBcnJheV0iPT09e30udG9TdHJpbmcuY2FsbChuKX1mdW5jdGlvbiB3KG4pe3JldHVybiBjKCkmJkJ1ZmZlci5pc0J1ZmZlcihuKX1mdW5jdGlvbiBiKG4sdCl7cmV0dXJuIHtzdGF0dXM6ITAsaW5kZXg6bix2YWx1ZTp0LGZ1cnRoZXN0Oi0xLGV4cGVjdGVkOltdfX1mdW5jdGlvbiB4KG4sdCl7cmV0dXJuIEUodCl8fCh0PVt0XSkse3N0YXR1czohMSxpbmRleDotMSx2YWx1ZTpudWxsLGZ1cnRoZXN0Om4sZXhwZWN0ZWQ6dH19ZnVuY3Rpb24gQihuLHQpe2lmKCF0KXJldHVybiBuO2lmKG4uZnVydGhlc3Q+dC5mdXJ0aGVzdClyZXR1cm4gbjt2YXIgcj1uLmZ1cnRoZXN0PT09dC5mdXJ0aGVzdD9mdW5jdGlvbihuLHQpe2lmKGZ1bmN0aW9uKCl7aWYodm9pZCAwIT09ZS5fc3VwcG9ydHNTZXQpcmV0dXJuIGUuX3N1cHBvcnRzU2V0O3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU2V0O3JldHVybiBlLl9zdXBwb3J0c1NldD1uLG59KCkmJkFycmF5LmZyb20pe2Zvcih2YXIgcj1uZXcgU2V0KG4pLHU9MDt1PHQubGVuZ3RoO3UrKylyLmFkZCh0W3VdKTt2YXIgbz1BcnJheS5mcm9tKHIpO3JldHVybiBvLnNvcnQoKSxvfWZvcih2YXIgaT17fSxhPTA7YTxuLmxlbmd0aDthKyspaVtuW2FdXT0hMDtmb3IodmFyIGY9MDtmPHQubGVuZ3RoO2YrKylpW3RbZl1dPSEwO3ZhciBjPVtdO2Zvcih2YXIgcyBpbiBpKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpJiZjLnB1c2gocyk7cmV0dXJuIGMuc29ydCgpLGN9KG4uZXhwZWN0ZWQsdC5leHBlY3RlZCk6dC5leHBlY3RlZDtyZXR1cm4ge3N0YXR1czpuLnN0YXR1cyxpbmRleDpuLmluZGV4LHZhbHVlOm4udmFsdWUsZnVydGhlc3Q6dC5mdXJ0aGVzdCxleHBlY3RlZDpyfX12YXIgaj17fTtmdW5jdGlvbiBTKG4sdCl7aWYodyhuKSlyZXR1cm4ge29mZnNldDp0LGxpbmU6LTEsY29sdW1uOi0xfTtuIGluIGp8fChqW25dPXt9KTtmb3IodmFyIHI9altuXSxlPTAsdT0wLG89MCxpPXQ7aT49MDspe2lmKGkgaW4gcil7ZT1yW2ldLmxpbmUsMD09PW8mJihvPXJbaV0ubGluZVN0YXJ0KTticmVha30oIlxuIj09PW4uY2hhckF0KGkpfHwiXHIiPT09bi5jaGFyQXQoaSkmJiJcbiIhPT1uLmNoYXJBdChpKzEpKSYmKHUrKywwPT09byYmKG89aSsxKSksaS0tO312YXIgYT1lK3UsZj10LW87cmV0dXJuIHJbdF09e2xpbmU6YSxsaW5lU3RhcnQ6b30se29mZnNldDp0LGxpbmU6YSsxLGNvbHVtbjpmKzF9fWZ1bmN0aW9uIF8obil7aWYoIXkobikpdGhyb3cgbmV3IEVycm9yKCJub3QgYSBwYXJzZXI6ICIrbil9ZnVuY3Rpb24gTChuLHQpe3JldHVybiAic3RyaW5nIj09dHlwZW9mIG4/bi5jaGFyQXQodCk6blt0XX1mdW5jdGlvbiBPKG4pe2lmKCJudW1iZXIiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIG51bWJlcjogIituKX1mdW5jdGlvbiBrKG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgZnVuY3Rpb246ICIrbil9ZnVuY3Rpb24gUChuKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBzdHJpbmc6ICIrbil9dmFyIHE9MixBPTMsST04LEY9NSpJLE09NCpJLHo9IiAgIjtmdW5jdGlvbiBSKG4sdCl7cmV0dXJuIG5ldyBBcnJheSh0KzEpLmpvaW4obil9ZnVuY3Rpb24gVShuLHQscil7dmFyIGU9dC1uLmxlbmd0aDtyZXR1cm4gZTw9MD9uOlIocixlKStufWZ1bmN0aW9uIFcobix0LHIsZSl7cmV0dXJuIHtmcm9tOm4tdD4wP24tdDowLHRvOm4rcj5lP2U6bityfX1mdW5jdGlvbiBEKG4sdCl7dmFyIHIsZSx1LG8sZixjPXQuaW5kZXgscz1jLm9mZnNldCxsPTE7aWYocz09PW4ubGVuZ3RoKXJldHVybiAiR290IHRoZSBlbmQgb2YgdGhlIGlucHV0IjtpZih3KG4pKXt2YXIgaD1zLXMlSSxwPXMtaCxkPVcoaCxGLE0rSSxuLmxlbmd0aCksdj1hKGZ1bmN0aW9uKG4pe3JldHVybiBhKGZ1bmN0aW9uKG4pe3JldHVybiBVKG4udG9TdHJpbmcoMTYpLDIsIjAiKX0sbil9LGZ1bmN0aW9uKG4sdCl7dmFyIHI9bi5sZW5ndGgsZT1bXSx1PTA7aWYocjw9dClyZXR1cm4gW24uc2xpY2UoKV07Zm9yKHZhciBvPTA7bzxyO28rKyllW3VdfHxlLnB1c2goW10pLGVbdV0ucHVzaChuW29dKSwobysxKSV0PT0wJiZ1Kys7cmV0dXJuIGV9KG4uc2xpY2UoZC5mcm9tLGQudG8pLnRvSlNPTigpLmRhdGEsSSkpO289ZnVuY3Rpb24obil7cmV0dXJuIDA9PT1uLmZyb20mJjE9PT1uLnRvP3tmcm9tOm4uZnJvbSx0bzpuLnRvfTp7ZnJvbTpuLmZyb20vSSx0bzpNYXRoLmZsb29yKG4udG8vSSl9fShkKSxlPWgvSSxyPTMqcCxwPj00JiYocis9MSksbD0yLHU9YShmdW5jdGlvbihuKXtyZXR1cm4gbi5sZW5ndGg8PTQ/bi5qb2luKCIgIik6bi5zbGljZSgwLDQpLmpvaW4oIiAiKSsiICAiK24uc2xpY2UoNCkuam9pbigiICIpfSx2KSwoZj0oOCooby50bz4wP28udG8tMTpvLnRvKSkudG9TdHJpbmcoMTYpLmxlbmd0aCk8MiYmKGY9Mik7fWVsc2Uge3ZhciBnPW4uc3BsaXQoL1xyXG58W1xuXHJcdTIwMjhcdTIwMjldLyk7cj1jLmNvbHVtbi0xLGU9Yy5saW5lLTEsbz1XKGUscSxBLGcubGVuZ3RoKSx1PWcuc2xpY2Uoby5mcm9tLG8udG8pLGY9by50by50b1N0cmluZygpLmxlbmd0aDt9dmFyIG09ZS1vLmZyb207cmV0dXJuIHcobikmJihmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKSxpKGZ1bmN0aW9uKHQsZSx1KXt2YXIgaSxhPXU9PT1tLGM9YT8iPiAiOno7cmV0dXJuIGk9dyhuKT9VKCg4KihvLmZyb20rdSkpLnRvU3RyaW5nKDE2KSxmLCIwIik6VSgoby5mcm9tK3UrMSkudG9TdHJpbmcoKSxmLCIgIiksW10uY29uY2F0KHQsW2MraSsiIHwgIitlXSxhP1t6K1IoIiAiLGYpKyIgfCAiK1UoIiIsciwiICIpK1IoIl4iLGwpXTpbXSl9LFtdLHUpLmpvaW4oIlxuIil9ZnVuY3Rpb24gTihuLHQpe3JldHVybiBbIlxuIiwiLS0gUEFSU0lORyBGQUlMRUQgIitSKCItIiw1MCksIlxuXG4iLEQobix0KSwiXG5cbiIsKHI9dC5leHBlY3RlZCwxPT09ci5sZW5ndGg/IkV4cGVjdGVkOlxuXG4iK3JbMF06IkV4cGVjdGVkIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBcblxuIityLmpvaW4oIiwgIikpLCJcbiJdLmpvaW4oIiIpO3ZhciByO31mdW5jdGlvbiBHKG4pe3JldHVybiB2b2lkIDAhPT1uLmZsYWdzP24uZmxhZ3M6W24uZ2xvYmFsPyJnIjoiIixuLmlnbm9yZUNhc2U/ImkiOiIiLG4ubXVsdGlsaW5lPyJtIjoiIixuLnVuaWNvZGU/InUiOiIiLG4uc3RpY2t5PyJ5IjoiIl0uam9pbigiIil9ZnVuY3Rpb24gQygpe2Zvcih2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aCxyPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbihyLGUpe2Zvcih2YXIgdSxvPW5ldyBBcnJheSh0KSxpPTA7aTx0O2krPTEpe2lmKCEodT1CKG5baV0uXyhyLGUpLHUpKS5zdGF0dXMpcmV0dXJuIHU7b1tpXT11LnZhbHVlLGU9dS5pbmRleDt9cmV0dXJuIEIoYihlLG8pLHUpfSl9ZnVuY3Rpb24gSigpe3ZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZigwPT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJzZXFNYXAgbmVlZHMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7dmFyIHQ9bi5wb3AoKTtyZXR1cm4gayh0KSxDLmFwcGx5KG51bGwsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0LmFwcGx5KG51bGwsbil9KX1mdW5jdGlvbiBUKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLHQ9bi5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIFkoInplcm8gYWx0ZXJuYXRlcyIpO2Zvcih2YXIgcj0wO3I8dDtyKz0xKV8obltyXSk7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGUsdT0wO3U8bi5sZW5ndGg7dSs9MSlpZigoZT1CKG5bdV0uXyh0LHIpLGUpKS5zdGF0dXMpcmV0dXJuIGU7cmV0dXJuIGV9KX1mdW5jdGlvbiBWKG4sdCl7cmV0dXJuIEgobix0KS5vcihYKFtdKSl9ZnVuY3Rpb24gSChuLHQpe3JldHVybiBfKG4pLF8odCksSihuLHQudGhlbihuKS5tYW55KCksZnVuY3Rpb24obix0KXtyZXR1cm4gW25dLmNvbmNhdCh0KX0pfWZ1bmN0aW9uIEsobil7UChuKTt2YXIgdD0iJyIrbisiJyI7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT1lK24ubGVuZ3RoLG89ci5zbGljZShlLHUpO3JldHVybiBvPT09bj9iKHUsbyk6eChlLHQpfSl9ZnVuY3Rpb24gUShuLHQpeyFmdW5jdGlvbihuKXtpZighKG4gaW5zdGFuY2VvZiBSZWdFeHApKXRocm93IG5ldyBFcnJvcigibm90IGEgcmVnZXhwOiAiK24pO2Zvcih2YXIgdD1HKG4pLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGU9dC5jaGFyQXQocik7aWYoImkiIT09ZSYmIm0iIT09ZSYmInUiIT09ZSYmInMiIT09ZSl0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHJlZ2V4cCBmbGFnICInK2UrJyI6ICcrbil9fShuKSxhcmd1bWVudHMubGVuZ3RoPj0yP08odCk6dD0wO3ZhciByPWZ1bmN0aW9uKG4pe3JldHVybiBSZWdFeHAoIl4oPzoiK24uc291cmNlKyIpIixHKG4pKX0obiksdT0iIituO3JldHVybiBlKGZ1bmN0aW9uKG4sZSl7dmFyIG89ci5leGVjKG4uc2xpY2UoZSkpO2lmKG8pe2lmKDA8PXQmJnQ8PW8ubGVuZ3RoKXt2YXIgaT1vWzBdLGE9b1t0XTtyZXR1cm4gYihlK2kubGVuZ3RoLGEpfXJldHVybiB4KGUsInZhbGlkIG1hdGNoIGdyb3VwICgwIHRvICIrby5sZW5ndGgrIikgaW4gIit1KX1yZXR1cm4geChlLHUpfSl9ZnVuY3Rpb24gWChuKXtyZXR1cm4gZShmdW5jdGlvbih0LHIpe3JldHVybiBiKHIsbil9KX1mdW5jdGlvbiBZKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIHgocixuKX0pfWZ1bmN0aW9uIFoobil7aWYoeShuKSlyZXR1cm4gZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpO3JldHVybiBlLmluZGV4PXIsZS52YWx1ZT0iIixlfSk7aWYoInN0cmluZyI9PXR5cGVvZiBuKXJldHVybiBaKEsobikpO2lmKG4gaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuIFooUShuKSk7dGhyb3cgbmV3IEVycm9yKCJub3QgYSBzdHJpbmcsIHJlZ2V4cCwgb3IgcGFyc2VyOiAiK24pfWZ1bmN0aW9uICQobil7cmV0dXJuIF8obiksZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpLHU9dC5zbGljZShyLGUuaW5kZXgpO3JldHVybiBlLnN0YXR1cz94KHIsJ25vdCAiJyt1KyciJyk6YihyLG51bGwpfSl9ZnVuY3Rpb24gbm4obil7cmV0dXJuIGsobiksZShmdW5jdGlvbih0LHIpe3ZhciBlPUwodCxyKTtyZXR1cm4gcjx0Lmxlbmd0aCYmbihlKT9iKHIrMSxlKTp4KHIsImEgY2hhcmFjdGVyL2J5dGUgbWF0Y2hpbmcgIituKX0pfWZ1bmN0aW9uIHRuKG4sdCl7YXJndW1lbnRzLmxlbmd0aDwyJiYodD1uLG49dm9pZCAwKTt2YXIgcj1lKGZ1bmN0aW9uKG4sZSl7cmV0dXJuIHIuXz10KCkuXyxyLl8obixlKX0pO3JldHVybiBuP3IuZGVzYyhuKTpyfWZ1bmN0aW9uIHJuKCl7cmV0dXJuIFkoImZhbnRhc3ktbGFuZC9lbXB0eSIpfXUucGFyc2U9ZnVuY3Rpb24obil7aWYoInN0cmluZyIhPXR5cGVvZiBuJiYhdyhuKSl0aHJvdyBuZXcgRXJyb3IoIi5wYXJzZSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgc3RyaW5nIG9yIEJ1ZmZlciBhcyBpdHMgYXJndW1lbnQiKTt2YXIgdCxyPXRoaXMuc2tpcChhbikuXyhuLDApO3JldHVybiB0PXIuc3RhdHVzP3tzdGF0dXM6ITAsdmFsdWU6ci52YWx1ZX06e3N0YXR1czohMSxpbmRleDpTKG4sci5mdXJ0aGVzdCksZXhwZWN0ZWQ6ci5leHBlY3RlZH0sZGVsZXRlIGpbbl0sdH0sdS50cnlQYXJzZT1mdW5jdGlvbihuKXt2YXIgdD10aGlzLnBhcnNlKG4pO2lmKHQuc3RhdHVzKXJldHVybiB0LnZhbHVlO3ZhciByPU4obix0KSxlPW5ldyBFcnJvcihyKTt0aHJvdyBlLnR5cGU9IlBhcnNpbW1vbkVycm9yIixlLnJlc3VsdD10LGV9LHUuYXNzZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHRoaXMuY2hhaW4oZnVuY3Rpb24ocil7cmV0dXJuIG4ocik/WChyKTpZKHQpfSl9LHUub3I9ZnVuY3Rpb24obil7cmV0dXJuIFQodGhpcyxuKX0sdS50cmltPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLndyYXAobixuKX0sdS53cmFwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIEoobix0aGlzLHQsZnVuY3Rpb24obix0KXtyZXR1cm4gdH0pfSx1LnRocnU9ZnVuY3Rpb24obil7cmV0dXJuIG4odGhpcyl9LHUudGhlbj1mdW5jdGlvbihuKXtyZXR1cm4gXyhuKSxDKHRoaXMsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSl9LHUubWFueT1mdW5jdGlvbigpe3ZhciBuPXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9W10sdT12b2lkIDA7Oyl7aWYoISh1PUIobi5fKHQsciksdSkpLnN0YXR1cylyZXR1cm4gQihiKHIsZSksdSk7aWYocj09PXUuaW5kZXgpdGhyb3cgbmV3IEVycm9yKCJpbmZpbml0ZSBsb29wIGRldGVjdGVkIGluIC5tYW55KCkgcGFyc2VyIC0tLSBjYWxsaW5nIC5tYW55KCkgb24gYSBwYXJzZXIgd2hpY2ggY2FuIGFjY2VwdCB6ZXJvIGNoYXJhY3RlcnMgaXMgdXN1YWxseSB0aGUgY2F1c2UiKTtyPXUuaW5kZXgsZS5wdXNoKHUudmFsdWUpO319KX0sdS50aWVXaXRoPWZ1bmN0aW9uKG4pe3JldHVybiBQKG4pLHRoaXMubWFwKGZ1bmN0aW9uKHQpe2lmKGZ1bmN0aW9uKG4pe2lmKCFFKG4pKXRocm93IG5ldyBFcnJvcigibm90IGFuIGFycmF5OiAiK24pfSh0KSx0Lmxlbmd0aCl7UCh0WzBdKTtmb3IodmFyIHI9dFswXSxlPTE7ZTx0Lmxlbmd0aDtlKyspUCh0W2VdKSxyKz1uK3RbZV07cmV0dXJuIHJ9cmV0dXJuICIifSl9LHUudGllPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGllV2l0aCgiIil9LHUudGltZXM9ZnVuY3Rpb24obix0KXt2YXIgcj10aGlzO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PW4pLE8obiksTyh0KSxlKGZ1bmN0aW9uKGUsdSl7Zm9yKHZhciBvPVtdLGk9dm9pZCAwLGE9dm9pZCAwLGY9MDtmPG47Zis9MSl7aWYoYT1CKGk9ci5fKGUsdSksYSksIWkuc3RhdHVzKXJldHVybiBhO3U9aS5pbmRleCxvLnB1c2goaS52YWx1ZSk7fWZvcig7Zjx0JiYoYT1CKGk9ci5fKGUsdSksYSksaS5zdGF0dXMpO2YrPTEpdT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTtyZXR1cm4gQihiKHUsbyksYSl9KX0sdS5yZXN1bHQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIG59KX0sdS5hdE1vc3Q9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMudGltZXMoMCxuKX0sdS5hdExlYXN0PWZ1bmN0aW9uKG4pe3JldHVybiBKKHRoaXMudGltZXMobiksdGhpcy5tYW55KCksZnVuY3Rpb24obix0KXtyZXR1cm4gbi5jb25jYXQodCl9KX0sdS5tYXA9ZnVuY3Rpb24obil7ayhuKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzP0IoYih1LmluZGV4LG4odS52YWx1ZSkpLHUpOnV9KX0sdS5jb250cmFtYXA9ZnVuY3Rpb24obil7ayhuKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5wYXJzZShuKHIuc2xpY2UoZSkpKTtyZXR1cm4gdS5zdGF0dXM/YihlK3IubGVuZ3RoLHUudmFsdWUpOnV9KX0sdS5wcm9tYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gayhuKSxrKHQpLHRoaXMuY29udHJhbWFwKG4pLm1hcCh0KX0sdS5za2lwPWZ1bmN0aW9uKG4pe3JldHVybiBDKHRoaXMsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuWzBdfSl9LHUubWFyaz1mdW5jdGlvbigpe3JldHVybiBKKGVuLHRoaXMsZW4sZnVuY3Rpb24obix0LHIpe3JldHVybiB7c3RhcnQ6bix2YWx1ZTp0LGVuZDpyfX0pfSx1Lm5vZGU9ZnVuY3Rpb24obil7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbih0LHIsZSl7cmV0dXJuIHtuYW1lOm4sdmFsdWU6cixzdGFydDp0LGVuZDplfX0pfSx1LnNlcEJ5PWZ1bmN0aW9uKG4pe3JldHVybiBWKHRoaXMsbil9LHUuc2VwQnkxPWZ1bmN0aW9uKG4pe3JldHVybiBIKHRoaXMsbil9LHUubG9va2FoZWFkPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoWihuKSl9LHUubm90Rm9sbG93ZWRCeT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5za2lwKCQobikpfSx1LmRlc2M9ZnVuY3Rpb24obil7RShuKXx8KG49W25dKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzfHwodS5leHBlY3RlZD1uKSx1fSl9LHUuZmFsbGJhY2s9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMub3IoWChuKSl9LHUuYXA9ZnVuY3Rpb24obil7cmV0dXJuIEoobix0aGlzLGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4odCl9KX0sdS5jaGFpbj1mdW5jdGlvbihuKXt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzP0Iobih1LnZhbHVlKS5fKHIsdS5pbmRleCksdSk6dX0pfSx1LmNvbmNhdD11Lm9yLHUuZW1wdHk9cm4sdS5vZj1YLHVbImZhbnRhc3ktbGFuZC9hcCJdPXUuYXAsdVsiZmFudGFzeS1sYW5kL2NoYWluIl09dS5jaGFpbix1WyJmYW50YXN5LWxhbmQvY29uY2F0Il09dS5jb25jYXQsdVsiZmFudGFzeS1sYW5kL2VtcHR5Il09dS5lbXB0eSx1WyJmYW50YXN5LWxhbmQvb2YiXT11Lm9mLHVbImZhbnRhc3ktbGFuZC9tYXAiXT11Lm1hcDt2YXIgZW49ZShmdW5jdGlvbihuLHQpe3JldHVybiBiKHQsUyhuLHQpKX0pLHVuPWUoZnVuY3Rpb24obix0KXtyZXR1cm4gdD49bi5sZW5ndGg/eCh0LCJhbnkgY2hhcmFjdGVyL2J5dGUiKTpiKHQrMSxMKG4sdCkpfSksb249ZShmdW5jdGlvbihuLHQpe3JldHVybiBiKG4ubGVuZ3RoLG4uc2xpY2UodCkpfSksYW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0PG4ubGVuZ3RoP3godCwiRU9GIik6Yih0LG51bGwpfSksZm49USgvWzAtOV0vKS5kZXNjKCJhIGRpZ2l0IiksY249USgvWzAtOV0qLykuZGVzYygib3B0aW9uYWwgZGlnaXRzIiksc249USgvW2Etel0vaSkuZGVzYygiYSBsZXR0ZXIiKSxsbj1RKC9bYS16XSovaSkuZGVzYygib3B0aW9uYWwgbGV0dGVycyIpLGhuPVEoL1xzKi8pLmRlc2MoIm9wdGlvbmFsIHdoaXRlc3BhY2UiKSxwbj1RKC9ccysvKS5kZXNjKCJ3aGl0ZXNwYWNlIiksZG49SygiXHIiKSx2bj1LKCJcbiIpLGduPUsoIlxyXG4iKSxtbj1UKGduLHZuLGRuKS5kZXNjKCJuZXdsaW5lIikseW49VChtbixhbik7ZS5hbGw9b24sZS5hbHQ9VCxlLmFueT11bixlLmNyPWRuLGUuY3JlYXRlTGFuZ3VhZ2U9ZnVuY3Rpb24obil7dmFyIHQ9e307Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJmZ1bmN0aW9uKHIpe3Rbcl09dG4oZnVuY3Rpb24oKXtyZXR1cm4gbltyXSh0KX0pO30ocik7cmV0dXJuIHR9LGUuY3JsZj1nbixlLmN1c3RvbT1mdW5jdGlvbihuKXtyZXR1cm4gZShuKGIseCkpfSxlLmRpZ2l0PWZuLGUuZGlnaXRzPWNuLGUuZW1wdHk9cm4sZS5lbmQ9eW4sZS5lb2Y9YW4sZS5mYWlsPVksZS5mb3JtYXRFcnJvcj1OLGUuaW5kZXg9ZW4sZS5pc1BhcnNlcj15LGUubGF6eT10bixlLmxldHRlcj1zbixlLmxldHRlcnM9bG4sZS5sZj12bixlLmxvb2thaGVhZD1aLGUubWFrZUZhaWx1cmU9eCxlLm1ha2VTdWNjZXNzPWIsZS5uZXdsaW5lPW1uLGUubm9uZU9mPWZ1bmN0aW9uKG4pe3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPDB9KS5kZXNjKCJub25lIG9mICciK24rIiciKX0sZS5ub3RGb2xsb3dlZEJ5PSQsZS5vZj1YLGUub25lT2Y9ZnVuY3Rpb24obil7Zm9yKHZhciB0PW4uc3BsaXQoIiIpLHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPSInIit0W3JdKyInIjtyZXR1cm4gbm4oZnVuY3Rpb24odCl7cmV0dXJuIG4uaW5kZXhPZih0KT49MH0pLmRlc2ModCl9LGUub3B0V2hpdGVzcGFjZT1obixlLlBhcnNlcj1lLGUucmFuZ2U9ZnVuY3Rpb24obix0KXtyZXR1cm4gbm4oZnVuY3Rpb24ocil7cmV0dXJuIG48PXImJnI8PXR9KS5kZXNjKG4rIi0iK3QpfSxlLnJlZ2V4PVEsZS5yZWdleHA9USxlLnNlcEJ5PVYsZS5zZXBCeTE9SCxlLnNlcT1DLGUuc2VxTWFwPUosZS5zZXFPYmo9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD17fSxyPTAsdT0obj1hcmd1bWVudHMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobikpLG89dS5sZW5ndGgsaT0wO2k8bztpKz0xKXt2YXIgYT11W2ldO2lmKCF5KGEpKXtpZihFKGEpJiYyPT09YS5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgYVswXSYmeShhWzFdKSl7dmFyIGY9YVswXTtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxmKSl0aHJvdyBuZXcgRXJyb3IoInNlcU9iajogZHVwbGljYXRlIGtleSAiK2YpO3RbZl09ITAscisrO2NvbnRpbnVlfXRocm93IG5ldyBFcnJvcigic2VxT2JqIGFyZ3VtZW50cyBtdXN0IGJlIHBhcnNlcnMgb3IgW3N0cmluZywgcGFyc2VyXSBhcnJheSBwYWlycy4iKX19aWYoMD09PXIpdGhyb3cgbmV3IEVycm9yKCJzZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFyc2VyLCBmb3VuZCB6ZXJvIik7cmV0dXJuIGUoZnVuY3Rpb24obix0KXtmb3IodmFyIHIsZT17fSxpPTA7aTxvO2krPTEpe3ZhciBhLGY7aWYoRSh1W2ldKT8oYT11W2ldWzBdLGY9dVtpXVsxXSk6KGE9bnVsbCxmPXVbaV0pLCEocj1CKGYuXyhuLHQpLHIpKS5zdGF0dXMpcmV0dXJuIHI7YSYmKGVbYV09ci52YWx1ZSksdD1yLmluZGV4O31yZXR1cm4gQihiKHQsZSkscil9KX0sZS5zdHJpbmc9SyxlLnN1Y2NlZWQ9WCxlLnRha2VXaGlsZT1mdW5jdGlvbihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXI7ZTx0Lmxlbmd0aCYmbihMKHQsZSkpOyllKys7cmV0dXJuIGIoZSx0LnNsaWNlKHIsZSkpfSl9LGUudGVzdD1ubixlLndoaXRlc3BhY2U9cG4sZVsiZmFudGFzeS1sYW5kL2VtcHR5Il09cm4sZVsiZmFudGFzeS1sYW5kL29mIl09WCxlLkJpbmFyeT17Yml0U2VxOmwsYml0U2VxT2JqOmZ1bmN0aW9uKG4pe3MoKTt2YXIgdD17fSxyPTAsZT1hKGZ1bmN0aW9uKG4pe2lmKEUobikpe3ZhciBlPW47aWYoMiE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiWyIrZS5qb2luKCIsICIpKyJdIHNob3VsZCBiZSBsZW5ndGggMiwgZ290IGxlbmd0aCAiK2UubGVuZ3RoKTtpZihQKGVbMF0pLE8oZVsxXSksT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZVswXSkpdGhyb3cgbmV3IEVycm9yKCJkdXBsaWNhdGUga2V5IGluIGJpdFNlcU9iajogIitlWzBdKTtyZXR1cm4gdFtlWzBdXT0hMCxyKyssZX1yZXR1cm4gTyhuKSxbbnVsbCxuXX0sbik7aWYocjwxKXRocm93IG5ldyBFcnJvcigiYml0U2VxT2JqIGV4cGVjdHMgYXQgbGVhc3Qgb25lIG5hbWVkIHBhaXIsIGdvdCBbIituLmpvaW4oIiwgIikrIl0iKTt2YXIgdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuWzBdfSxlKTtyZXR1cm4gbChhKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSxlKSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG51bGwhPT10WzBdJiYoblt0WzBdXT10WzFdKSxufSx7fSxhKGZ1bmN0aW9uKHQscil7cmV0dXJuIFt0LG5bcl1dfSx1KSl9KX0sYnl0ZTpmdW5jdGlvbihuKXtpZihzKCksTyhuKSxuPjI1NSl0aHJvdyBuZXcgRXJyb3IoIlZhbHVlIHNwZWNpZmllZCB0byBieXRlIGNvbnN0cnVjdG9yICgiK24rIj0weCIrbi50b1N0cmluZygxNikrIikgaXMgbGFyZ2VyIGluIHZhbHVlIHRoYW4gYSBzaW5nbGUgYnl0ZS4iKTt2YXIgdD0obj4xNT8iMHgiOiIweDAiKStuLnRvU3RyaW5nKDE2KTtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PUwocixlKTtyZXR1cm4gdT09PW4/YihlKzEsdSk6eChlLHQpfSl9LGJ1ZmZlcjpmdW5jdGlvbihuKXtyZXR1cm4gaCgiYnVmZmVyIixuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIEJ1ZmZlci5mcm9tKG4pfSl9LGVuY29kZWRTdHJpbmc6ZnVuY3Rpb24obix0KXtyZXR1cm4gaCgic3RyaW5nIix0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudG9TdHJpbmcobil9KX0sdWludEJFOmQsdWludDhCRTpkKDEpLHVpbnQxNkJFOmQoMiksdWludDMyQkU6ZCg0KSx1aW50TEU6dix1aW50OExFOnYoMSksdWludDE2TEU6digyKSx1aW50MzJMRTp2KDQpLGludEJFOmcsaW50OEJFOmcoMSksaW50MTZCRTpnKDIpLGludDMyQkU6Zyg0KSxpbnRMRTptLGludDhMRTptKDEpLGludDE2TEU6bSgyKSxpbnQzMkxFOm0oNCksZmxvYXRCRTpoKCJmbG9hdEJFIiw0KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZEZsb2F0QkUoMCl9KSxmbG9hdExFOmgoImZsb2F0TEUiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRMRSgwKX0pLGRvdWJsZUJFOmgoImRvdWJsZUJFIiw4KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZERvdWJsZUJFKDApfSksZG91YmxlTEU6aCgiZG91YmxlTEUiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlTEUoMCl9KX0sbi5leHBvcnRzPWU7fV0pfSk7CiAgfShwYXJzaW1tb25fdW1kX21pbikpOwoKICB2YXIgZW1vamlSZWdleCA9ICgpID0+IHsKICAJLy8gaHR0cHM6Ly9tdGhzLmJlL2Vtb2ppCiAgCXJldHVybiAvKD86WyMqMC05XVx1RkUwRj9cdTIwRTN8W1x4QTlceEFFXHUyMDNDXHUyMDQ5XHUyMTIyXHUyMTM5XHUyMTk0LVx1MjE5OVx1MjFBOVx1MjFBQVx1MjMxQVx1MjMxQlx1MjMyOFx1MjNDRlx1MjNFRC1cdTIzRUZcdTIzRjFcdTIzRjJcdTIzRjgtXHUyM0ZBXHUyNEMyXHUyNUFBXHUyNUFCXHUyNUI2XHUyNUMwXHUyNUZCXHUyNUZDXHUyNUZFXHUyNjAwLVx1MjYwNFx1MjYwRVx1MjYxMVx1MjYxNFx1MjYxNVx1MjYxOFx1MjYyMFx1MjYyMlx1MjYyM1x1MjYyNlx1MjYyQVx1MjYyRVx1MjYyRlx1MjYzOC1cdTI2M0FcdTI2NDBcdTI2NDJcdTI2NDgtXHUyNjUzXHUyNjVGXHUyNjYwXHUyNjYzXHUyNjY1XHUyNjY2XHUyNjY4XHUyNjdCXHUyNjdFXHUyNjdGXHUyNjkyXHUyNjk0LVx1MjY5N1x1MjY5OVx1MjY5Qlx1MjY5Q1x1MjZBMFx1MjZBN1x1MjZBQVx1MjZCMFx1MjZCMVx1MjZCRFx1MjZCRVx1MjZDNFx1MjZDOFx1MjZDRlx1MjZEMVx1MjZEM1x1MjZFOVx1MjZGMC1cdTI2RjVcdTI2RjdcdTI2RjhcdTI2RkFcdTI3MDJcdTI3MDhcdTI3MDlcdTI3MEZcdTI3MTJcdTI3MTRcdTI3MTZcdTI3MURcdTI3MjFcdTI3MzNcdTI3MzRcdTI3NDRcdTI3NDdcdTI3NTdcdTI3NjNcdTI3QTFcdTI5MzRcdTI5MzVcdTJCMDUtXHUyQjA3XHUyQjFCXHUyQjFDXHUyQjU1XHUzMDMwXHUzMDNEXHUzMjk3XHUzMjk5XVx1RkUwRj98W1x1MjYxRFx1MjcwQ1x1MjcwRF0oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1MjcwQVx1MjcwQl0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHUyM0U5LVx1MjNFQ1x1MjNGMFx1MjNGM1x1MjVGRFx1MjY5M1x1MjZBMVx1MjZBQlx1MjZDNVx1MjZDRVx1MjZENFx1MjZFQVx1MjZGRFx1MjcwNVx1MjcyOFx1Mjc0Q1x1Mjc0RVx1Mjc1My1cdTI3NTVcdTI3OTUtXHUyNzk3XHUyN0IwXHUyN0JGXHUyQjUwXXxcdTI2RjkoPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xcdTI3NjRcdUZFMEY/KD86XHUyMDBEKD86XHVEODNEXHVERDI1fFx1RDgzRVx1REU3OSkpP3xcdUQ4M0MoPzpbXHVEQzA0XHVERDcwXHVERDcxXHVERDdFXHVERDdGXHVERTAyXHVERTM3XHVERjIxXHVERjI0LVx1REYyQ1x1REYzNlx1REY3RFx1REY5Nlx1REY5N1x1REY5OS1cdURGOUJcdURGOUVcdURGOUZcdURGQ0RcdURGQ0VcdURGRDQtXHVERkRGXHVERkY1XHVERkY3XVx1RkUwRj98W1x1REY4NVx1REZDMlx1REZDN10oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVERkMzXHVERkM0XHVERkNBXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REZDQlx1REZDQ10oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVEQ0NGXHVERDhFXHVERDkxLVx1REQ5QVx1REUwMVx1REUxQVx1REUyRlx1REUzMi1cdURFMzZcdURFMzgtXHVERTNBXHVERTUwXHVERTUxXHVERjAwLVx1REYyMFx1REYyRC1cdURGMzVcdURGMzctXHVERjdDXHVERjdFLVx1REY4NFx1REY4Ni1cdURGOTNcdURGQTAtXHVERkMxXHVERkM1XHVERkM2XHVERkM4XHVERkM5XHVERkNGLVx1REZEM1x1REZFMC1cdURGRjBcdURGRjgtXHVERkZGXXxcdURERTZcdUQ4M0NbXHVEREU4LVx1RERFQ1x1RERFRVx1RERGMVx1RERGMlx1RERGNFx1RERGNi1cdURERkFcdURERkNcdURERkRcdURERkZdfFx1RERFN1x1RDgzQ1tcdURERTZcdURERTdcdURERTktXHVEREVGXHVEREYxLVx1RERGNFx1RERGNi1cdURERjlcdURERkJcdURERkNcdURERkVcdURERkZdfFx1RERFOFx1RDgzQ1tcdURERTZcdURERThcdURERTlcdURERUItXHVEREVFXHVEREYwLVx1RERGNVx1RERGN1x1RERGQS1cdURERkZdfFx1RERFOVx1RDgzQ1tcdURERUFcdURERUNcdURERUZcdURERjBcdURERjJcdURERjRcdURERkZdfFx1RERFQVx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERURcdURERjctXHVEREZBXXxcdURERUJcdUQ4M0NbXHVEREVFLVx1RERGMFx1RERGMlx1RERGNFx1RERGN118XHVEREVDXHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUVcdURERjEtXHVEREYzXHVEREY1LVx1RERGQVx1RERGQ1x1RERGRV18XHVEREVEXHVEODNDW1x1RERGMFx1RERGMlx1RERGM1x1RERGN1x1RERGOVx1RERGQV18XHVEREVFXHVEODNDW1x1RERFOC1cdURERUFcdURERjEtXHVEREY0XHVEREY2LVx1RERGOV18XHVEREVGXHVEODNDW1x1RERFQVx1RERGMlx1RERGNFx1RERGNV18XHVEREYwXHVEODNDW1x1RERFQVx1RERFQy1cdURERUVcdURERjJcdURERjNcdURERjVcdURERjdcdURERkNcdURERkVcdURERkZdfFx1RERGMVx1RDgzQ1tcdURERTYtXHVEREU4XHVEREVFXHVEREYwXHVEREY3LVx1RERGQlx1RERGRV18XHVEREYyXHVEODNDW1x1RERFNlx1RERFOC1cdURERURcdURERjAtXHVEREZGXXxcdURERjNcdUQ4M0NbXHVEREU2XHVEREU4XHVEREVBLVx1RERFQ1x1RERFRVx1RERGMVx1RERGNFx1RERGNVx1RERGN1x1RERGQVx1RERGRl18XHVEREY0XHVEODNDXHVEREYyfFx1RERGNVx1RDgzQ1tcdURERTZcdURERUEtXHVEREVEXHVEREYwLVx1RERGM1x1RERGNy1cdURERjlcdURERkNcdURERkVdfFx1RERGNlx1RDgzQ1x1RERFNnxcdURERjdcdUQ4M0NbXHVEREVBXHVEREY0XHVEREY4XHVEREZBXHVEREZDXXxcdURERjhcdUQ4M0NbXHVEREU2LVx1RERFQVx1RERFQy1cdURERjRcdURERjctXHVEREY5XHVEREZCXHVEREZELVx1RERGRl18XHVEREY5XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERURcdURERUYtXHVEREY0XHVEREY3XHVEREY5XHVEREZCXHVEREZDXHVEREZGXXxcdURERkFcdUQ4M0NbXHVEREU2XHVEREVDXHVEREYyXHVEREYzXHVEREY4XHVEREZFXHVEREZGXXxcdURERkJcdUQ4M0NbXHVEREU2XHVEREU4XHVEREVBXHVEREVDXHVEREVFXHVEREYzXHVEREZBXXxcdURERkNcdUQ4M0NbXHVEREVCXHVEREY4XXxcdURERkRcdUQ4M0NcdURERjB8XHVEREZFXHVEODNDW1x1RERFQVx1RERGOV18XHVEREZGXHVEODNDW1x1RERFNlx1RERGMlx1RERGQ118XHVERkYzXHVGRTBGPyg/Olx1MjAwRCg/Olx1MjZBN1x1RkUwRj98XHVEODNDXHVERjA4KSk/fFx1REZGNCg/Olx1MjAwRFx1MjYyMFx1RkUwRj98XHVEQjQwXHVEQzY3XHVEQjQwXHVEQzYyXHVEQjQwKD86XHVEQzY1XHVEQjQwXHVEQzZFXHVEQjQwXHVEQzY3fFx1REM3M1x1REI0MFx1REM2M1x1REI0MFx1REM3NHxcdURDNzdcdURCNDBcdURDNkNcdURCNDBcdURDNzMpXHVEQjQwXHVEQzdGKT8pfFx1RDgzRCg/OltcdURDM0ZcdURDRkRcdURENDlcdURENEFcdURENkZcdURENzBcdURENzNcdURENzYtXHVERDc5XHVERDg3XHVERDhBLVx1REQ4RFx1RERBNVx1RERBOFx1RERCMVx1RERCMlx1RERCQ1x1RERDMi1cdUREQzRcdURERDEtXHVEREQzXHVERERDLVx1RERERVx1RERFMVx1RERFM1x1RERFOFx1RERFRlx1RERGM1x1RERGQVx1REVDQlx1REVDRC1cdURFQ0ZcdURFRTAtXHVERUU1XHVERUU5XHVERUYwXHVERUYzXVx1RkUwRj98W1x1REM0Mlx1REM0M1x1REM0Ni1cdURDNTBcdURDNjZcdURDNjdcdURDNkItXHVEQzZEXHVEQzcyXHVEQzc0LVx1REM3Nlx1REM3OFx1REM3Q1x1REM4M1x1REM4NVx1REM4Rlx1REM5MVx1RENBQVx1REQ3QVx1REQ5NVx1REQ5Nlx1REU0Q1x1REU0Rlx1REVDMFx1REVDQ10oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVEQzZFXHVEQzcwXHVEQzcxXHVEQzczXHVEQzc3XHVEQzgxXHVEQzgyXHVEQzg2XHVEQzg3XHVERTQ1LVx1REU0N1x1REU0Qlx1REU0RFx1REU0RVx1REVBM1x1REVCNC1cdURFQjZdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERDc0XHVERDkwXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVEQzAwLVx1REMwN1x1REMwOS1cdURDMTRcdURDMTYtXHVEQzNBXHVEQzNDLVx1REMzRVx1REM0MFx1REM0NFx1REM0NVx1REM1MS1cdURDNjVcdURDNkFcdURDNzktXHVEQzdCXHVEQzdELVx1REM4MFx1REM4NFx1REM4OC1cdURDOEVcdURDOTBcdURDOTItXHVEQ0E5XHVEQ0FCLVx1RENGQ1x1RENGRi1cdUREM0RcdURENEItXHVERDRFXHVERDUwLVx1REQ2N1x1RERBNFx1RERGQi1cdURFMkRcdURFMkYtXHVERTM0XHVERTM3LVx1REU0NFx1REU0OC1cdURFNEFcdURFODAtXHVERUEyXHVERUE0LVx1REVCM1x1REVCNy1cdURFQkZcdURFQzEtXHVERUM1XHVERUQwLVx1REVEMlx1REVENS1cdURFRDdcdURFREQtXHVERURGXHVERUVCXHVERUVDXHVERUY0LVx1REVGQ1x1REZFMC1cdURGRUJcdURGRjBdfFx1REMwOCg/Olx1MjAwRFx1MkIxQik/fFx1REMxNSg/Olx1MjAwRFx1RDgzRVx1RERCQSk/fFx1REMzQig/Olx1MjAwRFx1Mjc0NFx1RkUwRj8pP3xcdURDNDFcdUZFMEY/KD86XHUyMDBEXHVEODNEXHVEREU4XHVGRTBGPyk/fFx1REM2OCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjh8XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEKD86W1x1REM2OFx1REM2OV1cdTIwMERcdUQ4M0QoPzpcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/KXxbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/KXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkMtXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQlx1REZGRC1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCXHVERkZDXHVERkZFXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRV0pKSk/KSk/fFx1REM2OSg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9bXHVEQzY4XHVEQzY5XXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0QoPzpbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/fFx1REM2OVx1MjAwRFx1RDgzRCg/Olx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pKXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkMtXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQlx1REZGRC1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCXHVERkZDXHVERkZFXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCLVx1REZGRV0pKSk/KSk/fFx1REM2Rig/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1REQ3NSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1REUyRSg/Olx1MjAwRFx1RDgzRFx1RENBOCk/fFx1REUzNSg/Olx1MjAwRFx1RDgzRFx1RENBQik/fFx1REUzNig/Olx1MjAwRFx1RDgzQ1x1REYyQlx1RkUwRj8pPyl8XHVEODNFKD86W1x1REQwQ1x1REQwRlx1REQxOC1cdUREMUZcdUREMzAtXHVERDM0XHVERDM2XHVERDc3XHVEREI1XHVEREI2XHVEREJCXHVEREQyXHVEREQzXHVEREQ1XHVERUMzLVx1REVDNVx1REVGMFx1REVGMi1cdURFRjZdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REQyNlx1REQzNVx1REQzNy1cdUREMzlcdUREM0RcdUREM0VcdUREQjhcdUREQjlcdUREQ0QtXHVERENGXHVEREQ0XHVEREQ2LVx1RERERF0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFtcdUREREVcdUREREZdKD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REQwRFx1REQwRVx1REQxMC1cdUREMTdcdUREMjAtXHVERDI1XHVERDI3LVx1REQyRlx1REQzQVx1REQzRi1cdURENDVcdURENDctXHVERDc2XHVERDc4LVx1RERCNFx1RERCN1x1RERCQVx1RERCQy1cdUREQ0NcdURERDBcdURERTAtXHVEREZGXHVERTcwLVx1REU3NFx1REU3OC1cdURFN0NcdURFODAtXHVERTg2XHVERTkwLVx1REVBQ1x1REVCMC1cdURFQkFcdURFQzAtXHVERUMyXHVERUQwLVx1REVEOVx1REVFMC1cdURFRTddfFx1REQzQyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGP3xcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xcdURERDEoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMSkpfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT9cdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZDLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQlx1REZGQ1x1REZGRVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkVdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSk/KSk/fFx1REVGMSg/Olx1RDgzQyg/Olx1REZGQig/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkMtXHVERkZGXSk/fFx1REZGQyg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXSk/fFx1REZGRCg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKT98XHVERkZFKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKT98XHVERkZGKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkVdKT8pKT8pKS9nOwogIH07CgogIC8qKiBOb3JtYWxpemUgYSBkdXJhdGlvbiB0byBhbGwgb2YgdGhlIHByb3BlciB1bml0cy4gKi8NCiAgZnVuY3Rpb24gbm9ybWFsaXplRHVyYXRpb24oZHVyKSB7DQogICAgICBpZiAoZHVyID09PSB1bmRlZmluZWQgfHwgZHVyID09PSBudWxsKQ0KICAgICAgICAgIHJldHVybiBkdXI7DQogICAgICByZXR1cm4gZHVyLnNoaWZ0VG9BbGwoKS5ub3JtYWxpemUoKTsNCiAgfQ0KICAvKiogU3RyaXAgdGhlIHRpbWUgY29tcG9uZW50cyBvZiBhIGRhdGUgdGltZSBvYmplY3QuICovDQogIGZ1bmN0aW9uIHN0cmlwVGltZShkdCkgew0KICAgICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpDQogICAgICAgICAgcmV0dXJuIGR0Ow0KICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3Qoew0KICAgICAgICAgIHllYXI6IGR0LnllYXIsDQogICAgICAgICAgbW9udGg6IGR0Lm1vbnRoLA0KICAgICAgICAgIGRheTogZHQuZGF5LA0KICAgICAgfSk7DQogIH0NCiAgLyoqIFRyeSB0byBleHRyYWN0IGEgWVlZWU1NREQgZGF0ZSBmcm9tIGEgc3RyaW5nLiAqLw0KICBmdW5jdGlvbiBleHRyYWN0RGF0ZShzdHIpIHsNCiAgICAgIGxldCBkYXRlTWF0Y2ggPSAvKFxkezR9KS0oXGR7Mn0pLShcZHsyfSkvLmV4ZWMoc3RyKTsNCiAgICAgIGlmICghZGF0ZU1hdGNoKQ0KICAgICAgICAgIGRhdGVNYXRjaCA9IC8oXGR7NH0pKFxkezJ9KShcZHsyfSkvLmV4ZWMoc3RyKTsNCiAgICAgIGlmIChkYXRlTWF0Y2gpIHsNCiAgICAgICAgICBsZXQgeWVhciA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMV0pOw0KICAgICAgICAgIGxldCBtb250aCA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMl0pOw0KICAgICAgICAgIGxldCBkYXkgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzNdKTsNCiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXIsIG1vbnRoLCBkYXkgfSk7DQogICAgICB9DQogICAgICByZXR1cm4gdW5kZWZpbmVkOw0KICB9DQogIC8qKiBHZXQgdGhlIGZvbGRlciBjb250YWluaW5nIHRoZSBnaXZlbiBwYXRoIChpLmUuLCBsaWtlIGNvbXB1dGluZyAncGF0aC8uLicpLiAqLw0KICBmdW5jdGlvbiBnZXRQYXJlbnRGb2xkZXIocGF0aCkgew0KICAgICAgcmV0dXJuIHBhdGguc3BsaXQoIi8iKS5zbGljZSgwLCAtMSkuam9pbigiLyIpOw0KICB9DQogIC8qKiBHZXQgdGhlICJ0aXRsZSIgZm9yIGEgZmlsZSwgYnkgc3RyaXBwaW5nIG90aGVyIHBhcnRzIG9mIHRoZSBwYXRoIGFzIHdlbGwgYXMgdGhlIGV4dGVuc2lvbi4gKi8NCiAgZnVuY3Rpb24gZ2V0RmlsZVRpdGxlKHBhdGgpIHsNCiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCIvIikpDQogICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoIi8iKSArIDEpOw0KICAgICAgaWYgKHBhdGguZW5kc1dpdGgoIi5tZCIpKQ0KICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpOw0KICAgICAgcmV0dXJuIHBhdGg7DQogIH0NCiAgLyoqIEdldCB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIHRoZSBmaWxlIHBhdGguICovDQogIGZ1bmN0aW9uIGdldEV4dGVuc2lvbihwYXRoKSB7DQogICAgICBpZiAoIXBhdGguaW5jbHVkZXMoIi4iKSkNCiAgICAgICAgICByZXR1cm4gIiI7DQogICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZigiLiIpICsgMSk7DQogIH0NCiAgLyoqIFBhcnNlIGFsbCBzdWJ0YWdzIG91dCBvZiB0aGUgZ2l2ZW4gdGFnLiBJLmUuLCAjaGVsbG8vaS9hbSB3b3VsZCB5aWVsZCBbI2hlbGxvL2kvYW0sICNoZWxsby9pLCAjaGVsbG9dLiAqLw0KICBmdW5jdGlvbiBleHRyYWN0U3VidGFncyh0YWcpIHsNCiAgICAgIGxldCByZXN1bHQgPSBbdGFnXTsNCiAgICAgIHdoaWxlICh0YWcuaW5jbHVkZXMoIi8iKSkgew0KICAgICAgICAgIHRhZyA9IHRhZy5zdWJzdHJpbmcoMCwgdGFnLmxhc3RJbmRleE9mKCIvIikpOw0KICAgICAgICAgIHJlc3VsdC5wdXNoKHRhZyk7DQogICAgICB9DQogICAgICByZXR1cm4gcmVzdWx0Ow0KICB9DQogIC8qKiBBIHBhcnNpbW1vbiBwYXJzZXIgd2hpY2ggY2Fub25pY2FsaXplcyB2YXJpYWJsZSBuYW1lcyB3aGlsZSBwcm9wZXJseSByZXNwZWN0aW5nIGVtb2ppLiAqLw0KICBjb25zdCBWQVJfTkFNRV9DQU5PTklDQUxJWkVSID0gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleCgvWzAtOVxwe0xldHRlcn1fLV0rL3UpLm1hcChzdHIgPT4gc3RyLnRvTG9jYWxlTG93ZXJDYXNlKCkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLndoaXRlc3BhY2UubWFwKF8gPT4gIi0iKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbnkubWFwKF8gPT4gIiIpKQ0KICAgICAgLm1hbnkoKQ0KICAgICAgLm1hcChyZXN1bHQgPT4gcmVzdWx0LmpvaW4oIiIpKTsNCiAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhcmlhYmxlIG5hbWUgaW50byBzb21ldGhpbmcgSlMvcXVlcnkgZnJpZW5kbHkuICovDQogIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZVZhck5hbWUobmFtZSkgew0KICAgICAgcmV0dXJuIFZBUl9OQU1FX0NBTk9OSUNBTElaRVIudHJ5UGFyc2UobmFtZSk7DQogIH0NCiAgY29uc3QgSEVBREVSX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIikpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMud2hpdGVzcGFjZS5tYXAoXyA9PiAiICIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFueS5tYXAoXyA9PiAiICIpKQ0KICAgICAgLm1hbnkoKQ0KICAgICAgLm1hcChyZXN1bHQgPT4gew0KICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCIiKS5zcGxpdCgvXHMrLykuam9pbigiICIpLnRyaW0oKTsNCiAgfSk7DQogIC8qKg0KICAgKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljcw0KICAgKiBob3cgT2JzaWRpYW4gZG9lcyBpdCdzIG5vcm1hbGl6YXRpb24sIGNvbGxhcHNpbmcgcmVwZWF0ZWQgc3BhY2VzIGFuZCBzdHJpcHBpbmcgb3V0IGNvbnRyb2wgY2hhcmFjdGVycy4NCiAgICovDQogIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyKSB7DQogICAgICByZXR1cm4gSEVBREVSX0NBTk9OSUNBTElaRVIudHJ5UGFyc2UoaGVhZGVyKTsNCiAgfQ0KICAvKiogUmVuZGVyIGEgZHVyYXRpb24gaW4gYSBtaW5pbWFsIGZvcm1hdCB0byBzYXZlIHNwYWNlLiAqLw0KICBmdW5jdGlvbiByZW5kZXJNaW5pbWFsRHVyYXRpb24oZHVyKSB7DQogICAgICBkdXIgPSBub3JtYWxpemVEdXJhdGlvbihkdXIpOw0KICAgICAgLy8gdG9IdW1hbiBvdXRwdXRzIHplcm8gcXVhbnRpdGllcyBlLmcuICIwIHNlY29uZHMiDQogICAgICBkdXIgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhkdXIudG9PYmplY3QoKSkuZmlsdGVyKChbLCBxdWFudGl0eV0pID0+IHF1YW50aXR5ID4gMCkpKTsNCiAgICAgIHJldHVybiBkdXIudG9IdW1hbigpOw0KICB9CgogIHZhciBWYWx1ZXM7DQogIChmdW5jdGlvbiAoVmFsdWVzKSB7DQogICAgICAvKiogQ29udmVydCBhbiBhcmJpdHJhcnkgdmFsdWUgaW50byBhIHJlYXNvbmFibGUsIE1hcmtkb3duLWZyaWVuZGx5IHN0cmluZyBpZiBwb3NzaWJsZS4gKi8NCiAgICAgIGZ1bmN0aW9uIHRvU3RyaW5nKGZpZWxkLCBzZXR0aW5nID0gREVGQVVMVF9RVUVSWV9TRVRUSU5HUywgcmVjdXJzaXZlID0gZmFsc2UpIHsNCiAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7DQogICAgICAgICAgaWYgKCF3cmFwcGVkKQ0KICAgICAgICAgICAgICByZXR1cm4gc2V0dGluZy5yZW5kZXJOdWxsQXM7DQogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsNCiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gc2V0dGluZy5yZW5kZXJOdWxsQXM7DQogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsNCiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoNCiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gIiIgKyB3cmFwcGVkLnZhbHVlOw0KICAgICAgICAgICAgICBjYXNlICJodG1sIjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm91dGVySFRNTDsNCiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm1hcmtkb3duKCk7DQogICAgICAgICAgICAgIGNhc2UgImxpbmsiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFya2Rvd24oKTsNCiAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuICI8ZnVuY3Rpb24+IjsNCiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOg0KICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICIiOw0KICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkNCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIlsiOw0KICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdyYXBwZWQudmFsdWUubWFwKGYgPT4gdG9TdHJpbmcoZiwgc2V0dGluZywgdHJ1ZSkpLmpvaW4oIiwgIik7DQogICAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiXSI7DQogICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuICgieyAiICsNCiAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyh3cmFwcGVkLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZVswXSArICI6ICIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oIiwgIikgKw0KICAgICAgICAgICAgICAgICAgICAgICIgfSIpOw0KICAgICAgICAgICAgICBjYXNlICJkYXRlIjoNCiAgICAgICAgICAgICAgICAgIGlmICh3cmFwcGVkLnZhbHVlLnNlY29uZCA9PSAwICYmIHdyYXBwZWQudmFsdWUuaG91ciA9PSAwICYmIHdyYXBwZWQudmFsdWUubWludXRlID09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b0Zvcm1hdChzZXR0aW5nLmRlZmF1bHREYXRlRm9ybWF0KTsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLnRvRm9ybWF0KHNldHRpbmcuZGVmYXVsdERhdGVUaW1lRm9ybWF0KTsNCiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1pbmltYWxEdXJhdGlvbih3cmFwcGVkLnZhbHVlKTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBWYWx1ZXMudG9TdHJpbmcgPSB0b1N0cmluZzsNCiAgICAgIC8qKiBXcmFwIGEgbGl0ZXJhbCB2YWx1ZSBzbyB5b3UgY2FuIHN3aXRjaCBvbiBpdCBlYXNpbHkuICovDQogICAgICBmdW5jdGlvbiB3cmFwVmFsdWUodmFsKSB7DQogICAgICAgICAgaWYgKGlzTnVsbCh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVsbCIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc051bWJlcih2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKHZhbCkpDQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJzdHJpbmciLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuKHZhbCkpDQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJib29sZWFuIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzRHVyYXRpb24odmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImR1cmF0aW9uIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzRGF0ZSh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZGF0ZSIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc1dpZGdldCh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAid2lkZ2V0IiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImFycmF5IiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgIGVsc2UgaWYgKGlzTGluayh2YWwpKQ0KICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGluayIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbCkpDQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmdW5jdGlvbiIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlIGlmIChpc0h0bWwodmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImh0bWwiLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QodmFsKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICB9DQogICAgICBWYWx1ZXMud3JhcFZhbHVlID0gd3JhcFZhbHVlOw0KICAgICAgLyoqIFJlY3Vyc2l2ZWx5IG1hcCBjb21wbGV4IG9iamVjdHMgYXQgdGhlIGxlYXZlcy4gKi8NCiAgICAgIGZ1bmN0aW9uIG1hcExlYXZlcyh2YWwsIGZ1bmMpIHsNCiAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkgew0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWwpKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYXBMZWF2ZXModmFsdWUsIGZ1bmMpOw0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdOw0KICAgICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWwpDQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtYXBMZWF2ZXModmFsdWUsIGZ1bmMpKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJldHVybiBmdW5jKHZhbCk7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgVmFsdWVzLm1hcExlYXZlcyA9IG1hcExlYXZlczsNCiAgICAgIC8qKiBDb21wYXJlIHR3byBhcmJpdHJhcnkgSmF2YVNjcmlwdCB2YWx1ZXMuIFByb2R1Y2VzIGEgdG90YWwgb3JkZXJpbmcgb3ZlciBBTlkgcG9zc2libGUgZGF0YXZpZXcgdmFsdWUuICovDQogICAgICBmdW5jdGlvbiBjb21wYXJlVmFsdWUodmFsMSwgdmFsMiwgbGlua05vcm1hbGl6ZXIpIHsNCiAgICAgICAgICB2YXIgX2EsIF9iOw0KICAgICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQvbnVsbHMgZmlyc3QuDQogICAgICAgICAgaWYgKHZhbDEgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgdmFsMSA9IG51bGw7DQogICAgICAgICAgaWYgKHZhbDIgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgdmFsMiA9IG51bGw7DQogICAgICAgICAgaWYgKHZhbDEgPT09IG51bGwgJiYgdmFsMiA9PT0gbnVsbCkNCiAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgZWxzZSBpZiAodmFsMSA9PT0gbnVsbCkNCiAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAgICAgIGVsc2UgaWYgKHZhbDIgPT09IG51bGwpDQogICAgICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgIC8vIEEgbm9uLW51bGwgdmFsdWUgbm93IHdoaWNoIHdlIGNhbiB3cmFwICYgY29tcGFyZSBvbi4NCiAgICAgICAgICBsZXQgd3JhcDEgPSB3cmFwVmFsdWUodmFsMSk7DQogICAgICAgICAgbGV0IHdyYXAyID0gd3JhcFZhbHVlKHZhbDIpOw0KICAgICAgICAgIGlmICh3cmFwMSA9PT0gdW5kZWZpbmVkICYmIHdyYXAyID09PSB1bmRlZmluZWQpDQogICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgIGVsc2UgaWYgKHdyYXAxID09PSB1bmRlZmluZWQpDQogICAgICAgICAgICAgIHJldHVybiAtMTsNCiAgICAgICAgICBlbHNlIGlmICh3cmFwMiA9PT0gdW5kZWZpbmVkKQ0KICAgICAgICAgICAgICByZXR1cm4gMTsNCiAgICAgICAgICAvLyBTaG9ydC1jaXJjdWl0IG9uIGRpZmZlcmVudCB0eXBlcyBvciBvbiByZWZlcmVuY2UgZXF1YWxpdHkuDQogICAgICAgICAgaWYgKHdyYXAxLnR5cGUgIT0gd3JhcDIudHlwZSkNCiAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnR5cGUubG9jYWxlQ29tcGFyZSh3cmFwMi50eXBlKTsNCiAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPT09IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICBzd2l0Y2ggKHdyYXAxLnR5cGUpIHsNCiAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZS5sb2NhbGVDb21wYXJlKHdyYXAyLnZhbHVlKTsNCiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoNCiAgICAgICAgICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQogICAgICAgICAgICAgIGNhc2UgIm51bGwiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOg0KICAgICAgICAgICAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA/IDEgOiAtMTsNCiAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICBsZXQgbGluazEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgIGxldCBsaW5rMiA9IHdyYXAyLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZSA9IGxpbmtOb3JtYWxpemVyICE9PSBudWxsICYmIGxpbmtOb3JtYWxpemVyICE9PSB2b2lkIDAgPyBsaW5rTm9ybWFsaXplciA6ICgoeCkgPT4geCk7DQogICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBjb21wYXJlIGJ5IGZpbGUgbmFtZSBvciBkaXNwbGF5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmsgZXF1YWxpdHkuIENvbXBhcmUgYnkgcGF0aC4NCiAgICAgICAgICAgICAgICAgIGxldCBwYXRoQ29tcGFyZSA9IG5vcm1hbGl6ZShsaW5rMS5wYXRoKS5sb2NhbGVDb21wYXJlKG5vcm1hbGl6ZShsaW5rMi5wYXRoKSk7DQogICAgICAgICAgICAgICAgICBpZiAocGF0aENvbXBhcmUgIT0gMCkNCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aENvbXBhcmU7DQogICAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgdHlwZS4NCiAgICAgICAgICAgICAgICAgIGxldCB0eXBlQ29tcGFyZSA9IGxpbmsxLnR5cGUubG9jYWxlQ29tcGFyZShsaW5rMi50eXBlKTsNCiAgICAgICAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZSAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlQ29tcGFyZTsNCiAgICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSBzdWJwYXRoIGV4aXN0ZW5jZS4NCiAgICAgICAgICAgICAgICAgIGlmIChsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmIGxpbmsyLnN1YnBhdGgpDQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgLy8gU2luY2UgYm90aCBoYXZlIGEgc3VicGF0aCwgY29tcGFyZSBieSBzdWJwYXRoLg0KICAgICAgICAgICAgICAgICAgcmV0dXJuICgoX2EgPSBsaW5rMS5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAiIikubG9jYWxlQ29tcGFyZSgoX2IgPSBsaW5rMi5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAiIik7DQogICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlIDwgd3JhcDIudmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICA/IC0xDQogICAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgID8gMA0KICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7DQogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoNCiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlDQogICAgICAgICAgICAgICAgICAgICAgPyAtMQ0KICAgICAgICAgICAgICAgICAgICAgIDogd3JhcDEudmFsdWUuZXF1YWxzKHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICA/IDANCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOw0KICAgICAgICAgICAgICBjYXNlICJhcnJheSI6DQogICAgICAgICAgICAgICAgICBsZXQgZjEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgIGxldCBmMiA9IHdyYXAyLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IE1hdGgubWluKGYxLmxlbmd0aCwgZjIubGVuZ3RoKTsgaW5kZXgrKykgew0KICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wID0gY29tcGFyZVZhbHVlKGYxW2luZGV4XSwgZjJbaW5kZXhdKTsNCiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcDsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIHJldHVybiBmMS5sZW5ndGggLSBmMi5sZW5ndGg7DQogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICBsZXQgbzEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgbGV0IGsxID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMSkpOw0KICAgICAgICAgICAgICAgICAgbGV0IGsyID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMikpOw0KICAgICAgICAgICAgICAgICAgazEuc29ydCgpOw0KICAgICAgICAgICAgICAgICAgazIuc29ydCgpOw0KICAgICAgICAgICAgICAgICAgbGV0IGtleUNvbXBhcmUgPSBjb21wYXJlVmFsdWUoazEsIGsyKTsNCiAgICAgICAgICAgICAgICAgIGlmIChrZXlDb21wYXJlICE9IDApDQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUNvbXBhcmU7DQogICAgICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgb2YgazEpIHsNCiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShvMVtrZXldLCBvMltrZXldKTsNCiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcDsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOg0KICAgICAgICAgICAgICBjYXNlICJodG1sIjoNCiAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgVmFsdWVzLmNvbXBhcmVWYWx1ZSA9IGNvbXBhcmVWYWx1ZTsNCiAgICAgIC8qKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIERhdGF2ZWl3IHR5cGUgZm9yIGFuIGFyYml0cmFyeSB2YWx1ZS4gKi8NCiAgICAgIGZ1bmN0aW9uIHR5cGVPZih2YWwpIHsNCiAgICAgICAgICB2YXIgX2E7DQogICAgICAgICAgcmV0dXJuIChfYSA9IHdyYXBWYWx1ZSh2YWwpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHlwZTsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy50eXBlT2YgPSB0eXBlT2Y7DQogICAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyAidHJ1dGh5IiAoaS5lLiwgaXMgbm9uLW51bGwgYW5kIGhhcyBkYXRhIGluIGl0KS4gKi8NCiAgICAgIGZ1bmN0aW9uIGlzVHJ1dGh5KGZpZWxkKSB7DQogICAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwVmFsdWUoZmllbGQpOw0KICAgICAgICAgIGlmICghd3JhcHBlZCkNCiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7DQogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZSAhPSAwOw0KICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsNCiAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gISF3cmFwcGVkLnZhbHVlLnBhdGg7DQogICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9NaWxsaXMoKSAhPSAwOw0KICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5hcygic2Vjb25kcyIpICE9IDA7DQogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMod3JhcHBlZC52YWx1ZSkubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgIGNhc2UgImh0bWwiOg0KICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOg0KICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6DQogICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBWYWx1ZXMuaXNUcnV0aHkgPSBpc1RydXRoeTsNCiAgICAgIC8qKiBEZWVwIGNvcHkgYSBmaWVsZC4gKi8NCiAgICAgIGZ1bmN0aW9uIGRlZXBDb3B5KGZpZWxkKSB7DQogICAgICAgICAgaWYgKGZpZWxkID09PSBudWxsIHx8IGZpZWxkID09PSB1bmRlZmluZWQpDQogICAgICAgICAgICAgIHJldHVybiBmaWVsZDsNCiAgICAgICAgICBpZiAoVmFsdWVzLmlzQXJyYXkoZmllbGQpKSB7DQogICAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoZmllbGQubWFwKHYgPT4gZGVlcENvcHkodikpKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzT2JqZWN0KGZpZWxkKSkgew0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmaWVsZCkpDQogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGRlZXBDb3B5KHZhbHVlKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJldHVybiBmaWVsZDsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBWYWx1ZXMuZGVlcENvcHkgPSBkZWVwQ29weTsNCiAgICAgIGZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkgew0KICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJzdHJpbmciOw0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzU3RyaW5nID0gaXNTdHJpbmc7DQogICAgICBmdW5jdGlvbiBpc051bWJlcih2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAibnVtYmVyIjsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc051bWJlciA9IGlzTnVtYmVyOw0KICAgICAgZnVuY3Rpb24gaXNEYXRlKHZhbCkgew0KICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEYXRlVGltZTsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0RhdGUgPSBpc0RhdGU7DQogICAgICBmdW5jdGlvbiBpc0R1cmF0aW9uKHZhbCkgew0KICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEdXJhdGlvbjsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0R1cmF0aW9uID0gaXNEdXJhdGlvbjsNCiAgICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkOw0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzTnVsbCA9IGlzTnVsbDsNCiAgICAgIGZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7DQogICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKTsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0FycmF5ID0gaXNBcnJheTsNCiAgICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gImJvb2xlYW4iOw0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjsNCiAgICAgIGZ1bmN0aW9uIGlzTGluayh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgTGluazsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0xpbmsgPSBpc0xpbms7DQogICAgICBmdW5jdGlvbiBpc1dpZGdldCh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgV2lkZ2V0Ow0KICAgICAgfQ0KICAgICAgVmFsdWVzLmlzV2lkZ2V0ID0gaXNXaWRnZXQ7DQogICAgICBmdW5jdGlvbiBpc0h0bWwodmFsKSB7DQogICAgICAgICAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCAhPT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50Ow0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0h0bWwgPSBpc0h0bWw7DQogICAgICAvKiogQ2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBvYmplY3QgKGFuZCBub3QgYW55IG90aGVyIGRhdGF2aWV3LXJlY29nbml6ZWQgb2JqZWN0LWxpa2UgdHlwZSkuICovDQogICAgICBmdW5jdGlvbiBpc09iamVjdCh2YWwpIHsNCiAgICAgICAgICByZXR1cm4gKHR5cGVvZiB2YWwgPT0gIm9iamVjdCIgJiYNCiAgICAgICAgICAgICAgIWlzSHRtbCh2YWwpICYmDQogICAgICAgICAgICAgICFpc1dpZGdldCh2YWwpICYmDQogICAgICAgICAgICAgICFpc0FycmF5KHZhbCkgJiYNCiAgICAgICAgICAgICAgIWlzRHVyYXRpb24odmFsKSAmJg0KICAgICAgICAgICAgICAhaXNEYXRlKHZhbCkgJiYNCiAgICAgICAgICAgICAgIWlzTGluayh2YWwpICYmDQogICAgICAgICAgICAgIHZhbCAhPT0gdW5kZWZpbmVkICYmDQogICAgICAgICAgICAgICFpc051bGwodmFsKSk7DQogICAgICB9DQogICAgICBWYWx1ZXMuaXNPYmplY3QgPSBpc09iamVjdDsNCiAgICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7DQogICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gImZ1bmN0aW9uIjsNCiAgICAgIH0NCiAgICAgIFZhbHVlcy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsNCiAgfSkoVmFsdWVzIHx8IChWYWx1ZXMgPSB7fSkpOw0KICAvLy8vLy8vLy8vLy8vLy8NCiAgLy8gR3JvdXBpbmdzIC8vDQogIC8vLy8vLy8vLy8vLy8vLw0KICB2YXIgR3JvdXBpbmdzOw0KICAoZnVuY3Rpb24gKEdyb3VwaW5ncykgew0KICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGdyb3VwIGVudHJ5IGlzIGEgc3RhbmRhbG9uZSB2YWx1ZSwgb3IgYSBncm91cGluZyBvZiBzdWItZW50cmllcy4gKi8NCiAgICAgIGZ1bmN0aW9uIGlzRWxlbWVudEdyb3VwKGVudHJ5KSB7DQogICAgICAgICAgcmV0dXJuIFZhbHVlcy5pc09iamVjdChlbnRyeSkgJiYgT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCA9PSAyICYmICJrZXkiIGluIGVudHJ5ICYmICJyb3dzIiBpbiBlbnRyeTsNCiAgICAgIH0NCiAgICAgIEdyb3VwaW5ncy5pc0VsZW1lbnRHcm91cCA9IGlzRWxlbWVudEdyb3VwOw0KICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgZ3JvdXBpbmcgYXJyYXkuICovDQogICAgICBmdW5jdGlvbiBpc0dyb3VwaW5nKGVudHJ5KSB7DQogICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBlbnRyeSkNCiAgICAgICAgICAgICAgaWYgKCFpc0VsZW1lbnRHcm91cChlbGVtZW50KSkNCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgIH0NCiAgICAgIEdyb3VwaW5ncy5pc0dyb3VwaW5nID0gaXNHcm91cGluZzsNCiAgICAgIC8qKiBDb3VudCB0aGUgdG90YWwgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgcmVjdXJzaXZlIGdyb3VwaW5nLiAqLw0KICAgICAgZnVuY3Rpb24gY291bnQoZWxlbWVudHMpIHsNCiAgICAgICAgICBpZiAoaXNHcm91cGluZyhlbGVtZW50cykpIHsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IDA7DQogICAgICAgICAgICAgIGZvciAobGV0IHN1Ymdyb3VwIG9mIGVsZW1lbnRzKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGNvdW50KHN1Ymdyb3VwLnJvd3MpOw0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzLmxlbmd0aDsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBHcm91cGluZ3MuY291bnQgPSBjb3VudDsNCiAgfSkoR3JvdXBpbmdzIHx8IChHcm91cGluZ3MgPSB7fSkpOw0KICAvLy8vLy8vLy8vDQogIC8vIExJTksgLy8NCiAgLy8vLy8vLy8vLw0KICAvKiogVGhlIE9ic2lkaWFuICdsaW5rJywgdXNlZCBmb3IgdW5pcXVlbHkgZGVzY3JpYmluZyBhIGZpbGUsIGhlYWRlciwgb3IgYmxvY2suICovDQogIGNsYXNzIExpbmsgew0KICAgICAgY29uc3RydWN0b3IoZmllbGRzKSB7DQogICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBmaWVsZHMpOw0KICAgICAgfQ0KICAgICAgLyoqIENyZWF0ZSBhIGxpbmsgdG8gYSBzcGVjaWZpYyBmaWxlLiAqLw0KICAgICAgc3RhdGljIGZpbGUocGF0aCwgZW1iZWQgPSBmYWxzZSwgZGlzcGxheSkgew0KICAgICAgICAgIHJldHVybiBuZXcgTGluayh7DQogICAgICAgICAgICAgIHBhdGgsDQogICAgICAgICAgICAgIGVtYmVkLA0KICAgICAgICAgICAgICBkaXNwbGF5LA0KICAgICAgICAgICAgICBzdWJwYXRoOiB1bmRlZmluZWQsDQogICAgICAgICAgICAgIHR5cGU6ICJmaWxlIiwNCiAgICAgICAgICB9KTsNCiAgICAgIH0NCiAgICAgIHN0YXRpYyBpbmZlcihsaW5rcGF0aCwgZW1iZWQgPSBmYWxzZSwgZGlzcGxheSkgew0KICAgICAgICAgIGlmIChsaW5rcGF0aC5pbmNsdWRlcygiI14iKSkgew0KICAgICAgICAgICAgICBsZXQgc3BsaXQgPSBsaW5rcGF0aC5zcGxpdCgiI14iKTsNCiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuYmxvY2soc3BsaXRbMF0sIHNwbGl0WzFdLCBlbWJlZCwgZGlzcGxheSk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKGxpbmtwYXRoLmluY2x1ZGVzKCIjIikpIHsNCiAgICAgICAgICAgICAgbGV0IHNwbGl0ID0gbGlua3BhdGguc3BsaXQoIiMiKTsNCiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgIHJldHVybiBMaW5rLmZpbGUobGlua3BhdGgsIGVtYmVkLCBkaXNwbGF5KTsNCiAgICAgIH0NCiAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZSBhbmQgaGVhZGVyIGluIHRoYXQgZmlsZS4gKi8NCiAgICAgIHN0YXRpYyBoZWFkZXIocGF0aCwgaGVhZGVyLCBlbWJlZCwgZGlzcGxheSkgew0KICAgICAgICAgIC8vIEhlYWRlcnMgbmVlZCB0byBiZSBub3JtYWxpemVkIHRvIGFscGhhLW51bWVyaWMgJiB3aXRoIGV4dHJhIHNwYWNpbmcgcmVtb3ZlZC4NCiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoew0KICAgICAgICAgICAgICBwYXRoLA0KICAgICAgICAgICAgICBlbWJlZCwNCiAgICAgICAgICAgICAgZGlzcGxheSwNCiAgICAgICAgICAgICAgc3VicGF0aDogbm9ybWFsaXplSGVhZGVyRm9yTGluayhoZWFkZXIpLA0KICAgICAgICAgICAgICB0eXBlOiAiaGVhZGVyIiwNCiAgICAgICAgICB9KTsNCiAgICAgIH0NCiAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZSBhbmQgYmxvY2sgaW4gdGhhdCBmaWxlLiAqLw0KICAgICAgc3RhdGljIGJsb2NrKHBhdGgsIGJsb2NrSWQsIGVtYmVkLCBkaXNwbGF5KSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsNCiAgICAgICAgICAgICAgcGF0aCwNCiAgICAgICAgICAgICAgZW1iZWQsDQogICAgICAgICAgICAgIGRpc3BsYXksDQogICAgICAgICAgICAgIHN1YnBhdGg6IGJsb2NrSWQsDQogICAgICAgICAgICAgIHR5cGU6ICJibG9jayIsDQogICAgICAgICAgfSk7DQogICAgICB9DQogICAgICBzdGF0aWMgZnJvbU9iamVjdChvYmplY3QpIHsNCiAgICAgICAgICByZXR1cm4gbmV3IExpbmsob2JqZWN0KTsNCiAgICAgIH0NCiAgICAgIC8qKiBDaGVja3MgZm9yIGxpbmsgZXF1YWxpdHkgKGkuZS4sIHRoYXQgdGhlIGxpbmtzIGFyZSBwb2ludGluZyB0byB0aGUgc2FtZSBleGFjdCBsb2NhdGlvbikuICovDQogICAgICBlcXVhbHMob3RoZXIpIHsNCiAgICAgICAgICBpZiAob3RoZXIgPT0gdW5kZWZpbmVkIHx8IG90aGVyID09IG51bGwpDQogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICByZXR1cm4gdGhpcy5wYXRoID09IG90aGVyLnBhdGggJiYgdGhpcy50eXBlID09IG90aGVyLnR5cGUgJiYgdGhpcy5zdWJwYXRoID09IG90aGVyLnN1YnBhdGg7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gaXQncyBtYXJrZG93biByZXByZXNlbnRhdGlvbi4gKi8NCiAgICAgIHRvU3RyaW5nKCkgew0KICAgICAgICAgIHJldHVybiB0aGlzLm1hcmtkb3duKCk7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoIGlzIHNlcmlhbGl6YXRpb24tZnJpZW5kbHkuICovDQogICAgICB0b09iamVjdCgpIHsNCiAgICAgICAgICByZXR1cm4geyBwYXRoOiB0aGlzLnBhdGgsIHR5cGU6IHRoaXMudHlwZSwgc3VicGF0aDogdGhpcy5zdWJwYXRoLCBkaXNwbGF5OiB0aGlzLmRpc3BsYXksIGVtYmVkOiB0aGlzLmVtYmVkIH07DQogICAgICB9DQogICAgICAvKiogVXBkYXRlIHRoaXMgbGluayB3aXRoIGEgbmV3IHBhdGguICovDQogICAgICAvL0B0cy1pZ25vcmU7IGVycm9yIGFwcGVhcmVkIGFmdGVyIHVwZGF0aW5nIE9ic2lkaWFuIHRvIDAuMTUuNDsgaXQgYWxzbyB1cGRhdGVkIG90aGVyIHBhY2thZ2VzIGJ1dCBkaWRuJ3Qgc2F5IHdoaWNoDQogICAgICB3aXRoUGF0aChwYXRoKSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgcGF0aCB9KSk7DQogICAgICB9DQogICAgICAvKiogUmV0dXJuIGEgbmV3IGxpbmsgd2hpY2ggcG9pbnRzIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJ1dCB3aXRoIGEgbmV3IGRpc3BsYXkgdmFsdWUuICovDQogICAgICB3aXRoRGlzcGxheShkaXNwbGF5KSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgZGlzcGxheSB9KSk7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCBhIGZpbGUgbGluayBpbnRvIGEgbGluayB0byBhIHNwZWNpZmljIGhlYWRlci4gKi8NCiAgICAgIHdpdGhIZWFkZXIoaGVhZGVyKSB7DQogICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpOw0KICAgICAgfQ0KICAgICAgLyoqIENvbnZlcnQgYW55IGxpbmsgaW50byBhIGxpbmsgdG8gaXRzIGZpbGUuICovDQogICAgICB0b0ZpbGUoKSB7DQogICAgICAgICAgcmV0dXJuIExpbmsuZmlsZSh0aGlzLnBhdGgsIHRoaXMuZW1iZWQsIHRoaXMuZGlzcGxheSk7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhbiBlbWJlZGRlZCBsaW5rLiAqLw0KICAgICAgdG9FbWJlZCgpIHsNCiAgICAgICAgICBpZiAodGhpcy5lbWJlZCkgew0KICAgICAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7DQogICAgICAgICAgICAgIGxpbmsuZW1iZWQgPSB0cnVlOw0KICAgICAgICAgICAgICByZXR1cm4gbGluazsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhIG5vbi1lbWJlZGRlZCBsaW5rLiAqLw0KICAgICAgZnJvbUVtYmVkKCkgew0KICAgICAgICAgIGlmICghdGhpcy5lbWJlZCkgew0KICAgICAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7DQogICAgICAgICAgICAgIGxpbmsuZW1iZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgcmV0dXJuIGxpbms7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIG1hcmtkb3duIHNvIGl0IGNhbiBiZSByZW5kZXJlZC4gKi8NCiAgICAgIG1hcmtkb3duKCkgew0KICAgICAgICAgIGxldCByZXN1bHQgPSAodGhpcy5lbWJlZCA/ICIhIiA6ICIiKSArICJbWyIgKyB0aGlzLm9ic2lkaWFuTGluaygpOw0KICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXkpIHsNCiAgICAgICAgICAgICAgcmVzdWx0ICs9ICJ8IiArIHRoaXMuZGlzcGxheTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyBnZXRGaWxlVGl0bGUodGhpcy5wYXRoKTsNCiAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIiB8fCB0aGlzLnR5cGUgPT0gImJsb2NrIikNCiAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiID4gIiArIHRoaXMuc3VicGF0aDsNCiAgICAgICAgICB9DQogICAgICAgICAgcmVzdWx0ICs9ICJdXSI7DQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgIH0NCiAgICAgIC8qKiBDb252ZXJ0IHRoZSBpbm5lciBwYXJ0IG9mIHRoZSBsaW5rIHRvIHNvbWV0aGluZyB0aGF0IE9ic2lkaWFuIGNhbiBvcGVuIC8gdW5kZXJzdGFuZC4gKi8NCiAgICAgIG9ic2lkaWFuTGluaygpIHsNCiAgICAgICAgICB2YXIgX2EsIF9iOw0KICAgICAgICAgIGNvbnN0IGVzY2FwZWQgPSB0aGlzLnBhdGgucmVwbGFjZSgifCIsICJcXHwiKTsNCiAgICAgICAgICBpZiAodGhpcy50eXBlID09ICJoZWFkZXIiKQ0KICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjIiArICgoX2EgPSB0aGlzLnN1YnBhdGgpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXBsYWNlKCJ8IiwgIlxcfCIpKTsNCiAgICAgICAgICBpZiAodGhpcy50eXBlID09ICJibG9jayIpDQogICAgICAgICAgICAgIHJldHVybiBlc2NhcGVkICsgIiNeIiArICgoX2IgPSB0aGlzLnN1YnBhdGgpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZXBsYWNlKCJ8IiwgIlxcfCIpKTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgIHJldHVybiBlc2NhcGVkOw0KICAgICAgfQ0KICAgICAgLyoqIFRoZSBzdHJpcHBlZCBuYW1lIG9mIHRoZSBmaWxlIHRoaXMgbGluayBwb2ludHMgdG8uICovDQogICAgICBmaWxlTmFtZSgpIHsNCiAgICAgICAgICByZXR1cm4gZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCkucmVwbGFjZSgiLm1kIiwgIiIpOw0KICAgICAgfQ0KICB9DQogIC8vLy8vLy8vLy8vLy8vLy8vDQogIC8vIFdJREdFVCBCQVNFIC8vDQogIC8vLy8vLy8vLy8vLy8vLy8vDQogIC8qKg0KICAgKiBBIHRyaXZpYWwgYmFzZSBjbGFzcyB3aGljaCBqdXN0IGRlZmluZXMgdGhlICckd2lkZ2V0JyBpZGVudGlmaWVyIHR5cGUuIFN1YnR5cGVzIG9mDQogICAqIHdpZGdldCBhcmUgcmVzcG9uc2libGUgZm9yIGFkZGluZyB3aGF0ZXZlciBtZXRhZGF0YSBpcyByZWxldmFudC4gSWYgeW91IHdhbnQgeW91ciB3aWRnZXQNCiAgICogdG8gaGF2ZSByZW5kZXJpbmcgZnVuY3Rpb25hbGl0eSAod2hpY2ggeW91IHByb2JhYmx5IGRvKSwgeW91IHNob3VsZCBleHRlbmQgYFJlbmRlcldpZGdldGAuDQogICAqLw0KICBjbGFzcyBXaWRnZXQgew0KICAgICAgY29uc3RydWN0b3IoJHdpZGdldCkgew0KICAgICAgICAgIHRoaXMuJHdpZGdldCA9ICR3aWRnZXQ7DQogICAgICB9DQogIH0NCiAgLyoqIEEgdHJpdmlhbCB3aWRnZXQgd2hpY2ggcmVuZGVycyBhIChrZXksIHZhbHVlKSBwYWlyLCBhbmQgYWxsb3dzIGFjY2Vzc2luZyB0aGUga2V5IGFuZCB2YWx1ZS4gKi8NCiAgY2xhc3MgTGlzdFBhaXJXaWRnZXQgZXh0ZW5kcyBXaWRnZXQgew0KICAgICAgY29uc3RydWN0b3Ioa2V5LCB2YWx1ZSkgew0KICAgICAgICAgIHN1cGVyKCJkYXRhdmlldzpsaXN0LXBhaXIiKTsNCiAgICAgICAgICB0aGlzLmtleSA9IGtleTsNCiAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7DQogICAgICB9DQogICAgICBtYXJrZG93bigpIHsNCiAgICAgICAgICByZXR1cm4gYCR7VmFsdWVzLnRvU3RyaW5nKHRoaXMua2V5KX06ICR7VmFsdWVzLnRvU3RyaW5nKHRoaXMudmFsdWUpfWA7DQogICAgICB9DQogIH0NCiAgLyoqIEEgc2ltcGxlIHdpZGdldCB3aGljaCByZW5kZXJzIGFuIGV4dGVybmFsIGxpbmsuICovDQogIGNsYXNzIEV4dGVybmFsTGlua1dpZGdldCBleHRlbmRzIFdpZGdldCB7DQogICAgICBjb25zdHJ1Y3Rvcih1cmwsIGRpc3BsYXkpIHsNCiAgICAgICAgICBzdXBlcigiZGF0YXZpZXc6ZXh0ZXJuYWwtbGluayIpOw0KICAgICAgICAgIHRoaXMudXJsID0gdXJsOw0KICAgICAgICAgIHRoaXMuZGlzcGxheSA9IGRpc3BsYXk7DQogICAgICB9DQogICAgICBtYXJrZG93bigpIHsNCiAgICAgICAgICB2YXIgX2E7DQogICAgICAgICAgcmV0dXJuIGBbJHsoX2EgPSB0aGlzLmRpc3BsYXkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMudXJsfV0oJHt0aGlzLnVybH0pYDsNCiAgICAgIH0NCiAgfQ0KICB2YXIgV2lkZ2V0czsNCiAgKGZ1bmN0aW9uIChXaWRnZXRzKSB7DQogICAgICAvKiogQ3JlYXRlIGEgbGlzdCBwYWlyIHdpZGdldCBtYXRjaGluZyB0aGUgZ2l2ZW4ga2V5IGFuZCB2YWx1ZS4gKi8NCiAgICAgIGZ1bmN0aW9uIGxpc3RQYWlyKGtleSwgdmFsdWUpIHsNCiAgICAgICAgICByZXR1cm4gbmV3IExpc3RQYWlyV2lkZ2V0KGtleSwgdmFsdWUpOw0KICAgICAgfQ0KICAgICAgV2lkZ2V0cy5saXN0UGFpciA9IGxpc3RQYWlyOw0KICAgICAgLyoqIENyZWF0ZSBhbiBleHRlcm5hbCBsaW5rIHdpZGdldCB3aGljaCByZW5kZXJzIGFuIGV4dGVybmFsIE9ic2lkaWFuIGxpbmsuICovDQogICAgICBmdW5jdGlvbiBleHRlcm5hbExpbmsodXJsLCBkaXNwbGF5KSB7DQogICAgICAgICAgcmV0dXJuIG5ldyBFeHRlcm5hbExpbmtXaWRnZXQodXJsLCBkaXNwbGF5KTsNCiAgICAgIH0NCiAgICAgIFdpZGdldHMuZXh0ZXJuYWxMaW5rID0gZXh0ZXJuYWxMaW5rOw0KICAgICAgLyoqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gd2lkZ2V0IGlzIGEgbGlzdCBwYWlyIHdpZGdldC4gKi8NCiAgICAgIGZ1bmN0aW9uIGlzTGlzdFBhaXIod2lkZ2V0KSB7DQogICAgICAgICAgcmV0dXJuIHdpZGdldC4kd2lkZ2V0ID09PSAiZGF0YXZpZXc6bGlzdC1wYWlyIjsNCiAgICAgIH0NCiAgICAgIFdpZGdldHMuaXNMaXN0UGFpciA9IGlzTGlzdFBhaXI7DQogICAgICBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh3aWRnZXQpIHsNCiAgICAgICAgICByZXR1cm4gd2lkZ2V0LiR3aWRnZXQgPT09ICJkYXRhdmlldzpleHRlcm5hbC1saW5rIjsNCiAgICAgIH0NCiAgICAgIFdpZGdldHMuaXNFeHRlcm5hbExpbmsgPSBpc0V4dGVybmFsTGluazsNCiAgICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiB3aWRnZXQgaXMgYW55IGtpbmQgb2YgYnVpbHQtaW4gd2lkZ2V0IHdpdGggc3BlY2lhbCByZW5kZXJpbmcgaGFuZGxpbmcuICovDQogICAgICBmdW5jdGlvbiBpc0J1aWx0aW4od2lkZ2V0KSB7DQogICAgICAgICAgcmV0dXJuIGlzTGlzdFBhaXIod2lkZ2V0KSB8fCBpc0V4dGVybmFsTGluayh3aWRnZXQpOw0KICAgICAgfQ0KICAgICAgV2lkZ2V0cy5pc0J1aWx0aW4gPSBpc0J1aWx0aW47DQogIH0pKFdpZGdldHMgfHwgKFdpZGdldHMgPSB7fSkpOwoKICAvKiogVXRpbGl0eSBtZXRob2RzIGZvciBjcmVhdGluZyAmIGNvbXBhcmluZyBmaWVsZHMuICovDQogIHZhciBGaWVsZHM7DQogIChmdW5jdGlvbiAoRmllbGRzKSB7DQogICAgICBmdW5jdGlvbiB2YXJpYWJsZShuYW1lKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogInZhcmlhYmxlIiwgbmFtZSB9Ow0KICAgICAgfQ0KICAgICAgRmllbGRzLnZhcmlhYmxlID0gdmFyaWFibGU7DQogICAgICBmdW5jdGlvbiBsaXRlcmFsKHZhbHVlKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpdGVyYWwiLCB2YWx1ZSB9Ow0KICAgICAgfQ0KICAgICAgRmllbGRzLmxpdGVyYWwgPSBsaXRlcmFsOw0KICAgICAgZnVuY3Rpb24gYmluYXJ5T3AobGVmdCwgb3AsIHJpZ2h0KSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07DQogICAgICB9DQogICAgICBGaWVsZHMuYmluYXJ5T3AgPSBiaW5hcnlPcDsNCiAgICAgIGZ1bmN0aW9uIGluZGV4KG9iaiwgaW5kZXgpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaW5kZXgiLCBvYmplY3Q6IG9iaiwgaW5kZXggfTsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5pbmRleCA9IGluZGV4Ow0KICAgICAgLyoqIENvbnZlcnRzIGEgc3RyaW5nIGluIGRvdC1ub3RhdGlvbi1mb3JtYXQgaW50byBhIHZhcmlhYmxlIHdoaWNoIGluZGV4ZXMuICovDQogICAgICBmdW5jdGlvbiBpbmRleFZhcmlhYmxlKG5hbWUpIHsNCiAgICAgICAgICBsZXQgcGFydHMgPSBuYW1lLnNwbGl0KCIuIik7DQogICAgICAgICAgbGV0IHJlc3VsdCA9IEZpZWxkcy52YXJpYWJsZShwYXJ0c1swXSk7DQogICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHBhcnRzLmxlbmd0aDsgaW5kZXgrKykgew0KICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBGaWVsZHMubGl0ZXJhbChwYXJ0c1tpbmRleF0pKTsNCiAgICAgICAgICB9DQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5pbmRleFZhcmlhYmxlID0gaW5kZXhWYXJpYWJsZTsNCiAgICAgIGZ1bmN0aW9uIGxhbWJkYShhcmdzLCB2YWx1ZSkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGFyZ3MsIHZhbHVlIH07DQogICAgICB9DQogICAgICBGaWVsZHMubGFtYmRhID0gbGFtYmRhOw0KICAgICAgZnVuY3Rpb24gZnVuYyhmdW5jLCBhcmdzKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZ1bmN0aW9uIiwgZnVuYywgYXJndW1lbnRzOiBhcmdzIH07DQogICAgICB9DQogICAgICBGaWVsZHMuZnVuYyA9IGZ1bmM7DQogICAgICBmdW5jdGlvbiBsaXN0KHZhbHVlcykgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXN0IiwgdmFsdWVzIH07DQogICAgICB9DQogICAgICBGaWVsZHMubGlzdCA9IGxpc3Q7DQogICAgICBmdW5jdGlvbiBvYmplY3QodmFsdWVzKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlcyB9Ow0KICAgICAgfQ0KICAgICAgRmllbGRzLm9iamVjdCA9IG9iamVjdDsNCiAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJuZWdhdGVkIiwgY2hpbGQgfTsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5uZWdhdGUgPSBuZWdhdGU7DQogICAgICBmdW5jdGlvbiBpc0NvbXBhcmVPcChvcCkgew0KICAgICAgICAgIHJldHVybiBvcCA9PSAiPD0iIHx8IG9wID09ICI8IiB8fCBvcCA9PSAiPiIgfHwgb3AgPT0gIj49IiB8fCBvcCA9PSAiIT0iIHx8IG9wID09ICI9IjsNCiAgICAgIH0NCiAgICAgIEZpZWxkcy5pc0NvbXBhcmVPcCA9IGlzQ29tcGFyZU9wOw0KICAgICAgRmllbGRzLk5VTEwgPSBGaWVsZHMubGl0ZXJhbChudWxsKTsNCiAgfSkoRmllbGRzIHx8IChGaWVsZHMgPSB7fSkpOwoKICAvKiogQVNUIGltcGxlbWVudGF0aW9uIGZvciBxdWVyaWVzIG92ZXIgZGF0YSBzb3VyY2VzLiAqLw0KICAvKiogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nIGFuZCBtYW5pcHVsYXRpbmcgc291cmNlcy4gKi8NCiAgdmFyIFNvdXJjZXM7DQogIChmdW5jdGlvbiAoU291cmNlcykgew0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBzZWFyY2hlcyBmcm9tIGEgdGFnLiAqLw0KICAgICAgZnVuY3Rpb24gdGFnKHRhZykgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ0YWciLCB0YWcgfTsNCiAgICAgIH0NCiAgICAgIFNvdXJjZXMudGFnID0gdGFnOw0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBmZXRjaGVzIGZyb20gYSBDU1YgZmlsZS4gKi8NCiAgICAgIGZ1bmN0aW9uIGNzdihwYXRoKSB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImNzdiIsIHBhdGggfTsNCiAgICAgIH0NCiAgICAgIFNvdXJjZXMuY3N2ID0gY3N2Ow0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBzZWFyY2hlcyBmb3IgZmlsZXMgdW5kZXIgYSBmb2xkZXIgcHJlZml4LiAqLw0KICAgICAgZnVuY3Rpb24gZm9sZGVyKHByZWZpeCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmb2xkZXIiLCBmb2xkZXI6IHByZWZpeCB9Ow0KICAgICAgfQ0KICAgICAgU291cmNlcy5mb2xkZXIgPSBmb2xkZXI7DQogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHNlYXJjaGVzIGZvciBmaWxlcyB3aGljaCBsaW5rIHRvL2Zyb20gYSBnaXZlbiBmaWxlLiAqLw0KICAgICAgZnVuY3Rpb24gbGluayhmaWxlLCBpbmNvbWluZykgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaW5rIiwgZmlsZSwgZGlyZWN0aW9uOiBpbmNvbWluZyA/ICJpbmNvbWluZyIgOiAib3V0Z29pbmciIH07DQogICAgICB9DQogICAgICBTb3VyY2VzLmxpbmsgPSBsaW5rOw0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBqb2lucyB0d28gc291cmNlcyBieSBhIGxvZ2ljYWwgb3BlcmF0b3IgKGFuZC9vcikuICovDQogICAgICBmdW5jdGlvbiBiaW5hcnlPcChsZWZ0LCBvcCwgcmlnaHQpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcCwgcmlnaHQgfTsNCiAgICAgIH0NCiAgICAgIFNvdXJjZXMuYmluYXJ5T3AgPSBiaW5hcnlPcDsNCiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggdGFrZXMgdGhlIGludGVyc2VjdGlvbiBvZiB0d28gc291cmNlcy4gKi8NCiAgICAgIGZ1bmN0aW9uIGFuZChsZWZ0LCByaWdodCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJiaW5hcnlvcCIsIGxlZnQsIG9wOiAiJiIsIHJpZ2h0IH07DQogICAgICB9DQogICAgICBTb3VyY2VzLmFuZCA9IGFuZDsNCiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggdGFrZXMgdGhlIHVuaW9uIG9mIHR3byBzb3VyY2VzLiAqLw0KICAgICAgZnVuY3Rpb24gb3IobGVmdCwgcmlnaHQpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcDogInwiLCByaWdodCB9Ow0KICAgICAgfQ0KICAgICAgU291cmNlcy5vciA9IG9yOw0KICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBuZWdhdGVzIHRoZSB1bmRlcmx5aW5nIHNvdXJjZS4gKi8NCiAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJuZWdhdGUiLCBjaGlsZCB9Ow0KICAgICAgfQ0KICAgICAgU291cmNlcy5uZWdhdGUgPSBuZWdhdGU7DQogICAgICBmdW5jdGlvbiBlbXB0eSgpIHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZW1wdHkiIH07DQogICAgICB9DQogICAgICBTb3VyY2VzLmVtcHR5ID0gZW1wdHk7DQogIH0pKFNvdXJjZXMgfHwgKFNvdXJjZXMgPSB7fSkpOwoKICAvKiogRW1vamkgcmVnZXggd2l0aG91dCBhbnkgYWRkaXRpb25hbCBmbGFncy4gKi8NCiAgY29uc3QgRU1PSklfUkVHRVggPSBuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpOw0KICAvKiogUHJvdmlkZXMgYSBsb29rdXAgdGFibGUgZm9yIHVuaXQgZHVyYXRpb25zIG9mIHRoZSBnaXZlbiB0eXBlLiAqLw0KICBjb25zdCBEVVJBVElPTl9UWVBFUyA9IHsNCiAgICAgIHllYXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSwNCiAgICAgIHllYXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksDQogICAgICB5cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLA0KICAgICAgeXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksDQogICAgICBtb250aDogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwNCiAgICAgIG1vbnRoczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwNCiAgICAgIG1vOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLA0KICAgICAgbW9zOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLA0KICAgICAgd2VlazogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLA0KICAgICAgd2Vla3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgIHdrOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksDQogICAgICB3a3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgIHc6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgIGRheTogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksDQogICAgICBkYXlzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwNCiAgICAgIGQ6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLA0KICAgICAgaG91cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLA0KICAgICAgaG91cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgIGhyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksDQogICAgICBocnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgIGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgIG1pbnV0ZTogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksDQogICAgICBtaW51dGVzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwNCiAgICAgIG1pbjogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksDQogICAgICBtaW5zOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwNCiAgICAgIG06IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLA0KICAgICAgc2Vjb25kOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwNCiAgICAgIHNlY29uZHM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLA0KICAgICAgc2VjOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwNCiAgICAgIHNlY3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLA0KICAgICAgczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksDQogIH07DQogIC8qKiBTaG9ydGhhbmQgZm9yIGNvbW1vbiBkYXRlcyAocmVsYXRpdmUgdG8gcmlnaHQgbm93KS4gKi8NCiAgY29uc3QgREFURV9TSE9SVEhBTkRTID0gew0KICAgICAgbm93OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLA0KICAgICAgdG9kYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigiZGF5IiksDQogICAgICB5ZXN0ZXJkYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkNCiAgICAgICAgICAuc3RhcnRPZigiZGF5IikNCiAgICAgICAgICAubWludXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSkpLA0KICAgICAgdG9tb3Jyb3c6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkNCiAgICAgICAgICAuc3RhcnRPZigiZGF5IikNCiAgICAgICAgICAucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksDQogICAgICBzb3c6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigid2VlayIpLA0KICAgICAgInN0YXJ0LW9mLXdlZWsiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIndlZWsiKSwNCiAgICAgIGVvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigid2VlayIpLA0KICAgICAgImVuZC1vZi13ZWVrIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigid2VlayIpLA0KICAgICAgc295OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoInllYXIiKSwNCiAgICAgICJzdGFydC1vZi15ZWFyIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksDQogICAgICBlb3k6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoInllYXIiKSwNCiAgICAgICJlbmQtb2YteWVhciI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoInllYXIiKSwNCiAgICAgIHNvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJtb250aCIpLA0KICAgICAgInN0YXJ0LW9mLW1vbnRoIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJtb250aCIpLA0KICAgICAgZW9tOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJtb250aCIpLA0KICAgICAgImVuZC1vZi1tb250aCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoIm1vbnRoIiksDQogIH07DQogIC8qKg0KICAgKiBLZXl3b3JkcyB3aGljaCBjYW5ub3QgYmUgdXNlZCBhcyB2YXJpYWJsZXMgZGlyZWN0bHkuIFVzZSBgcm93Ljx0aGluZz5gIGlmIGl0IGlzIGEgdmFyaWFibGUgeW91IGhhdmUgZGVmaW5lZCBhbmQgd2FudA0KICAgKiB0byBhY2Nlc3MuDQogICAqLw0KICBjb25zdCBLRVlXT1JEUyA9IFsiRlJPTSIsICJXSEVSRSIsICJMSU1JVCIsICJHUk9VUCIsICJGTEFUVEVOIl07DQogIC8vLy8vLy8vLy8vLy8vLw0KICAvLyBVdGlsaXRpZXMgLy8NCiAgLy8vLy8vLy8vLy8vLy8vDQogIC8qKiBTcGxpdCBvbiB1bmVzY2FwZWQgcGlwZXMgaW4gYW4gaW5uZXIgbGluay4gKi8NCiAgZnVuY3Rpb24gc3BsaXRPblVuZXNjYXBlZFBpcGUobGluaykgew0KICAgICAgbGV0IHBpcGUgPSAtMTsNCiAgICAgIHdoaWxlICgocGlwZSA9IGxpbmsuaW5kZXhPZigifCIsIHBpcGUgKyAxKSkgPj0gMCkgew0KICAgICAgICAgIGlmIChwaXBlID4gMCAmJiBsaW5rW3BpcGUgLSAxXSA9PSAiXFwiKQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICByZXR1cm4gW2xpbmsuc3Vic3RyaW5nKDAsIHBpcGUpLnJlcGxhY2UoL1xcXHwvZywgInwiKSwgbGluay5zdWJzdHJpbmcocGlwZSArIDEpXTsNCiAgICAgIH0NCiAgICAgIHJldHVybiBbbGluay5yZXBsYWNlKC9cXFx8L2csICJ8IiksIHVuZGVmaW5lZF07DQogIH0NCiAgLyoqIEF0dGVtcHQgdG8gcGFyc2UgdGhlIGluc2lkZSBvZiBhIGxpbmsgdG8gcHVsbCBvdXQgZGlzcGxheSBuYW1lLCBzdWJwYXRoLCBldGMuICovDQogIGZ1bmN0aW9uIHBhcnNlSW5uZXJMaW5rKHJhd2xpbmspIHsNCiAgICAgIGxldCBbbGluaywgZGlzcGxheV0gPSBzcGxpdE9uVW5lc2NhcGVkUGlwZShyYXdsaW5rKTsNCiAgICAgIHJldHVybiBMaW5rLmluZmVyKGxpbmssIGZhbHNlLCBkaXNwbGF5KTsNCiAgfQ0KICAvKiogQ3JlYXRlIGEgbGVmdC1hc3NvY2lhdGl2ZSBiaW5hcnkgcGFyc2VyIHdoaWNoIHBhcnNlcyB0aGUgZ2l2ZW4gc3ViLWVsZW1lbnQgYW5kIHNlcGFyYXRvci4gSGFuZGxlcyB3aGl0ZXNwYWNlLiAqLw0KICBmdW5jdGlvbiBjcmVhdGVCaW5hcnlQYXJzZXIoY2hpbGQsIHNlcCwgY29tYmluZSkgew0KICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKGNoaWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHNlcCwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBjaGlsZCkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IHsNCiAgICAgICAgICBpZiAocmVzdC5sZW5ndGggPT0gMCkNCiAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0Ow0KICAgICAgICAgIGxldCBub2RlID0gY29tYmluZShmaXJzdCwgcmVzdFswXVsxXSwgcmVzdFswXVszXSk7DQogICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHJlc3QubGVuZ3RoOyBpbmRleCsrKSB7DQogICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5lKG5vZGUsIHJlc3RbaW5kZXhdWzFdLCByZXN0W2luZGV4XVszXSk7DQogICAgICAgICAgfQ0KICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgfSk7DQogIH0NCiAgZnVuY3Rpb24gY2hhaW5PcHQoYmFzZSwgLi4uZnVuY3MpIHsNCiAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmN1c3RvbSgoc3VjY2VzcywgZmFpbHVyZSkgPT4gew0KICAgICAgICAgIHJldHVybiAoaW5wdXQsIGkpID0+IHsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGJhc2UuXyhpbnB1dCwgaSk7DQogICAgICAgICAgICAgIGlmICghcmVzdWx0LnN0YXR1cykNCiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHsNCiAgICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gZnVuYyhyZXN1bHQudmFsdWUpLl8oaW5wdXQsIHJlc3VsdC5pbmRleCk7DQogICAgICAgICAgICAgICAgICBpZiAoIW5leHQuc3RhdHVzKQ0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXh0Ow0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgfTsNCiAgICAgIH0pOw0KICB9DQogIGNvbnN0IEVYUFJFU1NJT04gPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmNyZWF0ZUxhbmd1YWdlKHsNCiAgICAgIC8vIEEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOyB0aGUgZGVjaW1hbCBwb2ludCBpcyBvcHRpb25hbC4NCiAgICAgIG51bWJlcjogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvLT9bMC05XSsoXC5bMC05XSspPy8pDQogICAgICAgICAgLm1hcChzdHIgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSkNCiAgICAgICAgICAuZGVzYygibnVtYmVyIiksDQogICAgICAvLyBBIHF1b3RlLXN1cnJvdW5kZWQgc3RyaW5nIHdoaWNoIHN1cHBvcnRzIGVzY2FwZSBjaGFyYWN0ZXJzICgnXCcpLg0KICAgICAgc3RyaW5nOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCciJykNCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmVzY2FwZUNoYXJhY3RlciwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5ub25lT2YoJyJcXCcpKQ0KICAgICAgICAgIC5hdExlYXN0KDApDQogICAgICAgICAgLm1hcChjaGFycyA9PiBjaGFycy5qb2luKCIiKSkpDQogICAgICAgICAgLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoJyInKSkNCiAgICAgICAgICAuZGVzYygic3RyaW5nIiksDQogICAgICBlc2NhcGVDaGFyYWN0ZXI6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIlxcIikNCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFueSkNCiAgICAgICAgICAubWFwKGVzY2FwZWQgPT4gew0KICAgICAgICAgIC8vIElmIHdlIGFyZSBlc2NhcGluZyBhIGJhY2tzbGFzaCBvciBhIHF1b3RlLCBwYXNzIGluIG9uIGluIGVzY2FwZWQgZm9ybQ0KICAgICAgICAgIGlmIChlc2NhcGVkID09PSAnIicpDQogICAgICAgICAgICAgIHJldHVybiAnIic7DQogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICJcXCIpDQogICAgICAgICAgICAgIHJldHVybiAiXFwiOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgcmV0dXJuICJcXCIgKyBlc2NhcGVkOw0KICAgICAgfSksDQogICAgICAvLyBBIGJvb2xlYW4gdHJ1ZS9mYWxzZSB2YWx1ZS4NCiAgICAgIGJvb2w6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL3RydWV8ZmFsc2V8VHJ1ZXxGYWxzZS8pDQogICAgICAgICAgLm1hcChzdHIgPT4gc3RyLnRvTG93ZXJDYXNlKCkgPT0gInRydWUiKQ0KICAgICAgICAgIC5kZXNjKCJib29sZWFuICgndHJ1ZScgb3IgJ2ZhbHNlJykiKSwNCiAgICAgIC8vIEEgdGFnIG9mIHRoZSBmb3JtICcjc3R1ZmYvaGVsbG8tdGhlcmUnLg0KICAgICAgdGFnOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIjIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9bXlx1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGJyEiIyQlJigpKissLjo7PD0+P0BeYHt8fX5cW1xdXFxcc10vKS5kZXNjKCJ0ZXh0IikpLm1hbnkoKSwgKHN0YXJ0LCByZXN0KSA9PiBzdGFydCArIHJlc3Quam9pbigiIikpLmRlc2MoInRhZyAoJyNoZWxsby9zdHVmZicpIiksDQogICAgICAvLyBBIHZhcmlhYmxlIGlkZW50aWZpZXIsIHdoaWNoIGlzIGFscGhhbnVtZXJpYyBhbmQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIG9yLi4uIGVtb2ppLg0KICAgICAgaWRlbnRpZmllcjogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXHB7TGV0dGVyfS91KSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9bMC05XHB7TGV0dGVyfV8tXS91KSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IGZpcnN0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidmFyaWFibGUgaWRlbnRpZmllciIpLA0KICAgICAgLy8gQW4gT2JzaWRpYW4gbGluayBvZiB0aGUgZm9ybSBbWzxsaW5rPl1dLg0KICAgICAgbGluazogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXFtcWyhbXlxbXF1dKj8pXF1cXS91LCAxKQ0KICAgICAgICAgIC5tYXAobGlua0lubmVyID0+IHBhcnNlSW5uZXJMaW5rKGxpbmtJbm5lcikpDQogICAgICAgICAgLmRlc2MoImZpbGUgbGluayIpLA0KICAgICAgLy8gQW4gZW1iZWRkYWJsZSBsaW5rIHdoaWNoIGNhbiBzdGFydCB3aXRoICchJy4gVGhpcyBvdmVybGFwcyB3aXRoIHRoZSBub3JtYWwgbmVnYXRpb24gb3BlcmF0b3IsIHNvIGl0IGlzIG9ubHkNCiAgICAgIC8vIHByb3ZpZGVkIGZvciBtZXRhZGF0YSBwYXJzaW5nLg0KICAgICAgZW1iZWRMaW5rOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIhIikuYXRNb3N0KDEpLCBxLmxpbmssIChwLCBsKSA9PiB7DQogICAgICAgICAgaWYgKHAubGVuZ3RoID4gMCkNCiAgICAgICAgICAgICAgbC5lbWJlZCA9IHRydWU7DQogICAgICAgICAgcmV0dXJuIGw7DQogICAgICB9KS5kZXNjKCJmaWxlIGxpbmsiKSwNCiAgICAgIC8vIEJpbmFyeSBwbHVzIG9yIG1pbnVzIG9wZXJhdG9yLg0KICAgICAgYmluYXJ5UGx1c01pbnVzOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cK3wtLykNCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpDQogICAgICAgICAgLmRlc2MoIicrJyBvciAnLSciKSwNCiAgICAgIC8vIEJpbmFyeSB0aW1lcyBvciBkaXZpZGUgb3BlcmF0b3IuDQogICAgICBiaW5hcnlNdWxEaXY6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1wqfFwvfCUvKQ0KICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikNCiAgICAgICAgICAuZGVzYygiJyonIG9yICcvJyBvciAnJSciKSwNCiAgICAgIC8vIEJpbmFyeSBjb21wYXJpc29uIG9wZXJhdG9yLg0KICAgICAgYmluYXJ5Q29tcGFyZU9wOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC8+PXw8PXwhPXw+fDx8PS8pDQogICAgICAgICAgLm1hcChzdHIgPT4gc3RyKQ0KICAgICAgICAgIC5kZXNjKCInPj0nIG9yICc8PScgb3IgJyE9JyBvciAnPScgb3IgJz4nIG9yICc8JyIpLA0KICAgICAgLy8gQmluYXJ5IGJvb2xlYW4gY29tYmluYXRpb24gb3BlcmF0b3IuDQogICAgICBiaW5hcnlCb29sZWFuT3A6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL2FuZHxvcnwmfFx8L2kpDQogICAgICAgICAgLm1hcChzdHIgPT4gew0KICAgICAgICAgIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAiYW5kIikNCiAgICAgICAgICAgICAgcmV0dXJuICImIjsNCiAgICAgICAgICBlbHNlIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAib3IiKQ0KICAgICAgICAgICAgICByZXR1cm4gInwiOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgcmV0dXJuIHN0cjsNCiAgICAgIH0pDQogICAgICAgICAgLmRlc2MoIidhbmQnIG9yICdvciciKSwNCiAgICAgIC8vIEEgZGF0ZSB3aGljaCBjYW4gYmUgWVlZWS1NTVstRERUSEg6bW06c3NdLg0KICAgICAgcm9vdERhdGU6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezR9LyksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoeWVhciwgXywgbW9udGgpID0+IHsNCiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IE51bWJlci5wYXJzZUludCh5ZWFyKSwgbW9udGg6IE51bWJlci5wYXJzZUludChtb250aCkgfSk7DQogICAgICB9KS5kZXNjKCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU10iKSwNCiAgICAgIGRhdGVTaG9ydGhhbmQ6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQoLi4uT2JqZWN0LmtleXMoREFURV9TSE9SVEhBTkRTKQ0KICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKQ0KICAgICAgICAgIC5tYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcpKSwNCiAgICAgIGRhdGU6IHEgPT4gY2hhaW5PcHQocS5yb290RGF0ZSwgKHltKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIGRheSkgPT4geW0uc2V0KHsgZGF5OiBOdW1iZXIucGFyc2VJbnQoZGF5KSB9KSksICh5bWQpID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJUIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgaG91cikgPT4geW1kLnNldCh7IGhvdXI6IE51bWJlci5wYXJzZUludChob3VyKSB9KSksICh5bWRoKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIG1pbnV0ZSkgPT4geW1kaC5zZXQoeyBtaW51dGU6IE51bWJlci5wYXJzZUludChtaW51dGUpIH0pKSwgKHltZGhtKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIHNlY29uZCkgPT4geW1kaG0uc2V0KHsgc2Vjb25kOiBOdW1iZXIucGFyc2VJbnQoc2Vjb25kKSB9KSksICh5bWRobXMpID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIuIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9cZHszfS8pLCAoXywgbWlsbGlzZWNvbmQpID0+IHltZGhtcy5zZXQoeyBtaWxsaXNlY29uZDogTnVtYmVyLnBhcnNlSW50KG1pbGxpc2Vjb25kKSB9KSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3VjY2VlZCh5bWRobXMpIC8vIHBhc3MNCiAgICAgICksIChkdCkgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIisiKS5vcihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLSIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezEsMn0oOlxkezJ9KT8vKSwgKHBtLCBocikgPT4gZHQuc2V0Wm9uZSgiVVRDIiArIHBtICsgaHIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJaIiksICgpID0+IGR0LnNldFpvbmUoInV0YyIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJbIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9bMC05QS1aYS16Ky1cL10rL3UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiXSIpLCAoX2EsIHpvbmUsIF9iKSA9PiBkdC5zZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSkpKQ0KICAgICAgICAgIC5hc3NlcnQoKGR0KSA9PiBkdC5pc1ZhbGlkLCAidmFsaWQgZGF0ZSIpDQogICAgICAgICAgLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLA0KICAgICAgLy8gQSBkYXRlLCBwbHVzIHZhcmlvdXMgc2hvcnRoYW5kIHRpbWVzIG9mIGRheSBpdCBjb3VsZCBiZS4NCiAgICAgIGRhdGVQbHVzOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHEuZGF0ZVNob3J0aGFuZC5tYXAoZCA9PiBEQVRFX1NIT1JUSEFORFNbZF0oKSksIHEuZGF0ZSkuZGVzYygiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdIG9yIGluIHNob3J0aGFuZCIpLA0KICAgICAgLy8gQSBkdXJhdGlvbiBvZiB0aW1lLg0KICAgICAgZHVyYXRpb25UeXBlOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KC4uLk9iamVjdC5rZXlzKERVUkFUSU9OX1RZUEVTKQ0KICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKQ0KICAgICAgICAgIC5tYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcpKSwNCiAgICAgIGR1cmF0aW9uOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHEubnVtYmVyLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb25UeXBlLCAoY291bnQsIF8sIHQpID0+IERVUkFUSU9OX1RZUEVTW3RdLm1hcFVuaXRzKHggPT4geCAqIGNvdW50KSkNCiAgICAgICAgICAuc2VwQnkxKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLm9yKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkpDQogICAgICAgICAgLm1hcChkdXJhdGlvbnMgPT4gZHVyYXRpb25zLnJlZHVjZSgocCwgYykgPT4gcC5wbHVzKGMpKSkNCiAgICAgICAgICAuZGVzYygiZHVyYXRpb24gbGlrZSA0aHIybWluIiksDQogICAgICAvLyBBIHJhdyBudWxsIHZhbHVlLg0KICAgICAgcmF3TnVsbDogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygibnVsbCIpLA0KICAgICAgLy8gU291cmNlIHBhcnNpbmcuDQogICAgICB0YWdTb3VyY2U6IHEgPT4gcS50YWcubWFwKHRhZyA9PiBTb3VyY2VzLnRhZyh0YWcpKSwNCiAgICAgIGNzdlNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiY3N2KCIpLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5zdHJpbmcsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgcGF0aCwgXzIpID0+IFNvdXJjZXMuY3N2KHBhdGgpKSwNCiAgICAgIGxpbmtJbmNvbWluZ1NvdXJjZTogcSA9PiBxLmxpbmsubWFwKGxpbmsgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgdHJ1ZSkpLA0KICAgICAgbGlua091dGdvaW5nU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJvdXRnb2luZygiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEubGluaywgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBsaW5rLCBfMikgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgZmFsc2UpKSwNCiAgICAgIGZvbGRlclNvdXJjZTogcSA9PiBxLnN0cmluZy5tYXAoc3RyID0+IFNvdXJjZXMuZm9sZGVyKHN0cikpLA0KICAgICAgcGFyZW5zU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIoIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5zb3VyY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGQpLA0KICAgICAgbmVnYXRlU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIhIikpLCBxLmF0b21Tb3VyY2UsIChfLCBzb3VyY2UpID0+IFNvdXJjZXMubmVnYXRlKHNvdXJjZSkpLA0KICAgICAgYXRvbVNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLnBhcmVuc1NvdXJjZSwgcS5uZWdhdGVTb3VyY2UsIHEubGlua091dGdvaW5nU291cmNlLCBxLmxpbmtJbmNvbWluZ1NvdXJjZSwgcS5mb2xkZXJTb3VyY2UsIHEudGFnU291cmNlLCBxLmNzdlNvdXJjZSksDQogICAgICBiaW5hcnlPcFNvdXJjZTogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5hdG9tU291cmNlLCBxLmJpbmFyeUJvb2xlYW5PcC5tYXAocyA9PiBzKSwgU291cmNlcy5iaW5hcnlPcCksDQogICAgICBzb3VyY2U6IHEgPT4gcS5iaW5hcnlPcFNvdXJjZSwNCiAgICAgIC8vIEZpZWxkIHBhcnNpbmcuDQogICAgICB2YXJpYWJsZUZpZWxkOiBxID0+IHEuaWRlbnRpZmllcg0KICAgICAgICAgIC5jaGFpbihyID0+IHsNCiAgICAgICAgICBpZiAoS0VZV09SRFMuaW5jbHVkZXMoci50b1VwcGVyQ2FzZSgpKSkgew0KICAgICAgICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5mYWlsKCJWYXJpYWJsZSBmaWVsZHMgY2Fubm90IGJlIGEga2V5d29yZCAoIiArIEtFWVdPUkRTLmpvaW4oIiBvciAiKSArICIpIik7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdWNjZWVkKEZpZWxkcy52YXJpYWJsZShyKSk7DQogICAgICAgICAgfQ0KICAgICAgfSkNCiAgICAgICAgICAuZGVzYygidmFyaWFibGUiKSwNCiAgICAgIG51bWJlckZpZWxkOiBxID0+IHEubnVtYmVyLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygibnVtYmVyIiksDQogICAgICBzdHJpbmdGaWVsZDogcSA9PiBxLnN0cmluZy5tYXAodmFsID0+IEZpZWxkcy5saXRlcmFsKHZhbCkpLmRlc2MoInN0cmluZyIpLA0KICAgICAgYm9vbEZpZWxkOiBxID0+IHEuYm9vbC5tYXAodmFsID0+IEZpZWxkcy5saXRlcmFsKHZhbCkpLmRlc2MoImJvb2xlYW4iKSwNCiAgICAgIGRhdGVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiZGF0ZSgiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmRhdGVQbHVzLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkYXRlLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZGF0ZSkpLmRlc2MoImRhdGUiKSwNCiAgICAgIGR1cmF0aW9uRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoImR1cigiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkdXIsIF8yLCBwb3N0Zml4KSA9PiBGaWVsZHMubGl0ZXJhbChkdXIpKS5kZXNjKCJkdXJhdGlvbiIpLA0KICAgICAgbnVsbEZpZWxkOiBxID0+IHEucmF3TnVsbC5tYXAoXyA9PiBGaWVsZHMuTlVMTCksDQogICAgICBsaW5rRmllbGQ6IHEgPT4gcS5saW5rLm1hcChmID0+IEZpZWxkcy5saXRlcmFsKGYpKSwNCiAgICAgIGxpc3RGaWVsZDogcSA9PiBxLmZpZWxkDQogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpKQ0KICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJbIikuc2tpcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiXSIpKSkNCiAgICAgICAgICAubWFwKGwgPT4gRmllbGRzLmxpc3QobCkpDQogICAgICAgICAgLmRlc2MoImxpc3QgKCdbMSwgMiwgM10nKSIpLA0KICAgICAgb2JqZWN0RmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyLm9yKHEuc3RyaW5nKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIjoiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuZmllbGQsIChuYW1lLCBfc2VwLCB2YWx1ZSkgPT4gew0KICAgICAgICAgIHJldHVybiB7IG5hbWUsIHZhbHVlIH07DQogICAgICB9KQ0KICAgICAgICAgIC5zZXBCeShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkNCiAgICAgICAgICAud3JhcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygieyIpLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLnRoZW4ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIn0iKSkpDQogICAgICAgICAgLm1hcCh2YWxzID0+IHsNCiAgICAgICAgICBsZXQgcmVzID0ge307DQogICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgdmFscykNCiAgICAgICAgICAgICAgcmVzW2VudHJ5Lm5hbWVdID0gZW50cnkudmFsdWU7DQogICAgICAgICAgcmV0dXJuIEZpZWxkcy5vYmplY3QocmVzKTsNCiAgICAgIH0pDQogICAgICAgICAgLmRlc2MoIm9iamVjdCAoJ3sgYTogMSwgYjogMiB9JykiKSwNCiAgICAgIGF0b21JbmxpbmVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmRhdGUsIHEuZHVyYXRpb24ubWFwKGQgPT4gbm9ybWFsaXplRHVyYXRpb24oZCkpLCBxLnN0cmluZywgcS50YWcsIHEuZW1iZWRMaW5rLCBxLmJvb2wsIHEubnVtYmVyLCBxLnJhd051bGwpLA0KICAgICAgaW5saW5lRmllbGRMaXN0OiBxID0+IHEuYXRvbUlubGluZUZpZWxkLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLmxvb2thaGVhZChxLmF0b21JbmxpbmVGaWVsZCkpLA0KICAgICAgaW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5hdG9tSW5saW5lRmllbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmlubGluZUZpZWxkTGlzdCwgKGYsIF9zLCBsKSA9PiBbZl0uY29uY2F0KGwpKSwgcS5hdG9tSW5saW5lRmllbGQpLA0KICAgICAgYXRvbUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KA0KICAgICAgLy8gUGxhY2UgZW1iZWQgbGlua3MgYWJvdmUgbmVnYXRlZCBmaWVsZHMgYXMgdGhleSBhcmUgdGhlIHNwZWNpYWwgcGFyc2VyIGNhc2UgJyFbW3RoaW5nXV0nIGFuZCBhcmUgZ2VuZXJhbGx5IHVuYW1iaWdpb3VzLg0KICAgICAgcS5lbWJlZExpbmsubWFwKGwgPT4gRmllbGRzLmxpdGVyYWwobCkpLCBxLm5lZ2F0ZWRGaWVsZCwgcS5saW5rRmllbGQsIHEubGlzdEZpZWxkLCBxLm9iamVjdEZpZWxkLCBxLmxhbWJkYUZpZWxkLCBxLnBhcmVuc0ZpZWxkLCBxLmJvb2xGaWVsZCwgcS5udW1iZXJGaWVsZCwgcS5zdHJpbmdGaWVsZCwgcS5kYXRlRmllbGQsIHEuZHVyYXRpb25GaWVsZCwgcS5udWxsRmllbGQsIHEudmFyaWFibGVGaWVsZCksDQogICAgICBpbmRleEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHEuYXRvbUZpZWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmRvdFBvc3RmaXgsIHEuaW5kZXhQb3N0Zml4LCBxLmZ1bmN0aW9uUG9zdGZpeCkubWFueSgpLCAob2JqLCBwb3N0Zml4ZXMpID0+IHsNCiAgICAgICAgICBsZXQgcmVzdWx0ID0gb2JqOw0KICAgICAgICAgIGZvciAobGV0IHBvc3Qgb2YgcG9zdGZpeGVzKSB7DQogICAgICAgICAgICAgIHN3aXRjaCAocG9zdC50eXBlKSB7DQogICAgICAgICAgICAgICAgICBjYXNlICJkb3QiOg0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIEZpZWxkcy5saXRlcmFsKHBvc3QuZmllbGQpKTsNCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgIGNhc2UgImluZGV4IjoNCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBwb3N0LmZpZWxkKTsNCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuZnVuYyhyZXN1bHQsIHBvc3QuZmllbGRzKTsNCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgfSksDQogICAgICBuZWdhdGVkRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiEiKSwgcS5pbmRleEZpZWxkLCAoXywgZmllbGQpID0+IEZpZWxkcy5uZWdhdGUoZmllbGQpKS5kZXNjKCJuZWdhdGVkIGZpZWxkIiksDQogICAgICBwYXJlbnNGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZmllbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGQpLA0KICAgICAgbGFtYmRhRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyDQogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpKQ0KICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIoIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKSIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCI9PiIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKGlkZW50LCBfaWdub3JlLCB2YWx1ZSkgPT4gew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGlkZW50LCB2YWx1ZSB9Ow0KICAgICAgfSksDQogICAgICBkb3RQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIuIiksIHEuaWRlbnRpZmllciwgKF8sIGZpZWxkKSA9PiB7DQogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRvdCIsIGZpZWxkOiBmaWVsZCB9Ow0KICAgICAgfSksDQogICAgICBpbmRleFBvc3RmaXg6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIlsiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmZpZWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJdIiksIChfLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gew0KICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpbmRleCIsIGZpZWxkIH07DQogICAgICB9KSwNCiAgICAgIGZ1bmN0aW9uUG9zdGZpeDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZmllbGQuc2VwQnkocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChfLCBfMSwgZmllbGRzLCBfMiwgXzMpID0+IHsNCiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmaWVsZHMgfTsNCiAgICAgIH0pLA0KICAgICAgLy8gVGhlIHByZWNlZGVuY2UgaGllcmFyY2h5IG9mIG9wZXJhdG9ycyAtIG11bHRpcGx5L2RpdmlkZSwgYWRkL3N1YnRyYWN0LCBjb21wYXJlLCBhbmQgdGhlbiBib29sZWFuIG9wZXJhdGlvbnMuDQogICAgICBiaW5hcnlNdWxEaXZGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5pbmRleEZpZWxkLCBxLmJpbmFyeU11bERpdiwgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgIGJpbmFyeVBsdXNNaW51c0ZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeU11bERpdkZpZWxkLCBxLmJpbmFyeVBsdXNNaW51cywgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgIGJpbmFyeUNvbXBhcmVGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlQbHVzTWludXNGaWVsZCwgcS5iaW5hcnlDb21wYXJlT3AsIEZpZWxkcy5iaW5hcnlPcCksDQogICAgICBiaW5hcnlCb29sZWFuRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5Q29tcGFyZUZpZWxkLCBxLmJpbmFyeUJvb2xlYW5PcCwgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgIGJpbmFyeU9wRmllbGQ6IHEgPT4gcS5iaW5hcnlCb29sZWFuRmllbGQsDQogICAgICBmaWVsZDogcSA9PiBxLmJpbmFyeU9wRmllbGQsDQogIH0pOwoKICAvKiogUGFyc2UgaW5saW5lIGZpZWxkcyBhbmQgb3RoZXIgZW1iZWRkZWQgbWV0YWRhdGEgaW4gYSBsaW5lLiAqLw0KICAvKiogVGhlIHdyYXBwZXIgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbiBpbmxpbmUgZmllbGQuICovDQogIGNvbnN0IElOTElORV9GSUVMRF9XUkFQUEVSUyA9IE9iamVjdC5mcmVlemUoew0KICAgICAgIlsiOiAiXSIsDQogICAgICAiKCI6ICIpIiwNCiAgfSk7DQogIC8qKg0KICAgKiBGaW5kIGEgbWF0Y2hpbmcgY2xvc2luZyBicmFja2V0IHRoYXQgb2NjdXJzIGF0IG9yIGFmdGVyIGBzdGFydGAsIHJlc3BlY3RpbmcgbmVzdGluZyBhbmQgZXNjYXBlcy4gSWYgZm91bmQsDQogICAqIHJldHVybnMgdGhlIHZhbHVlIGNvbnRhaW5lZCB3aXRoaW4gYW5kIHRoZSBzdHJpbmcgaW5kZXggYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgdmFsdWUuDQogICAqLw0KICBmdW5jdGlvbiBmaW5kQ2xvc2luZyhsaW5lLCBzdGFydCwgb3BlbiwgY2xvc2UpIHsNCiAgICAgIGxldCBuZXN0aW5nID0gMDsNCiAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7DQogICAgICBmb3IgKGxldCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IGxpbmUubGVuZ3RoOyBpbmRleCsrKSB7DQogICAgICAgICAgbGV0IGNoYXIgPSBsaW5lLmNoYXJBdChpbmRleCk7DQogICAgICAgICAgLy8gQWxsb3dzIGZvciBkb3VibGUgZXNjYXBlcyBsaWtlICdcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuDQogICAgICAgICAgaWYgKGNoYXIgPT0gIlxcIikgew0KICAgICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWQ7DQogICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyBJZiBlc2NhcGVkLCBpZ25vcmUgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBjb21wdXRpbmcgbmVzdGluZywgcmVnYXJkbGVzcyBvZiB3aGF0IGl0IGlzLg0KICAgICAgICAgIGlmIChlc2NhcGVkKSB7DQogICAgICAgICAgICAgIGVzY2FwZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmIChjaGFyID09IG9wZW4pDQogICAgICAgICAgICAgIG5lc3RpbmcrKzsNCiAgICAgICAgICBlbHNlIGlmIChjaGFyID09IGNsb3NlKQ0KICAgICAgICAgICAgICBuZXN0aW5nLS07DQogICAgICAgICAgLy8gT25seSBvY2N1cnMgaWYgd2UgYXJlIG9uIGEgY2xvc2UgY2hhcmFjdGVyIGFuZCB0cmhlcmUgaXMgbm8gbW9yZSBuZXN0aW5nLg0KICAgICAgICAgIGlmIChuZXN0aW5nIDwgMCkNCiAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBpbmRleCkudHJpbSgpLCBlbmRJbmRleDogaW5kZXggKyAxIH07DQogICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgfQ0KICAvKiogRmluZCB0aGUgJzo6JyBzZXBhcmF0b3IgaW4gYW4gaW5saW5lIGZpZWxkLiAqLw0KICBmdW5jdGlvbiBmaW5kU2VwYXJhdG9yKGxpbmUsIHN0YXJ0KSB7DQogICAgICBsZXQgc2VwID0gbGluZS5pbmRleE9mKCI6OiIsIHN0YXJ0KTsNCiAgICAgIGlmIChzZXAgPCAwKQ0KICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICByZXR1cm4geyBrZXk6IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBzZXApLnRyaW0oKSwgdmFsdWVJbmRleDogc2VwICsgMiB9Ow0KICB9DQogIC8qKiBUcnkgdG8gY29tcGxldGVseSBwYXJzZSBhbiBpbmxpbmUgZmllbGQgc3RhcnRpbmcgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiBBc3N1ZW1zIGBzdGFydGAgaXMgb24gYSB3cmFwcGluZyBjaGFyYWN0ZXIuICovDQogIGZ1bmN0aW9uIGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIHN0YXJ0KSB7DQogICAgICBsZXQgb3BlbiA9IGxpbmUuY2hhckF0KHN0YXJ0KTsNCiAgICAgIGxldCBrZXkgPSBmaW5kU2VwYXJhdG9yKGxpbmUsIHN0YXJ0ICsgMSk7DQogICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpDQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIC8vIEZhaWwgdGhlIG1hdGNoIGlmIHdlIGZpbmQgYW55IHNlcGFyYXRvciBjaGFyYWN0ZXJzIChub3QgYWxsb3dlZCBpbiBrZXlzKS4NCiAgICAgIGZvciAobGV0IHNlcCBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpLmNvbmNhdChPYmplY3QudmFsdWVzKElOTElORV9GSUVMRF9XUkFQUEVSUykpKSB7DQogICAgICAgICAgaWYgKGtleS5rZXkuaW5jbHVkZXMoc2VwKSkNCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIH0NCiAgICAgIGxldCB2YWx1ZSA9IGZpbmRDbG9zaW5nKGxpbmUsIGtleS52YWx1ZUluZGV4LCBvcGVuLCBJTkxJTkVfRklFTERfV1JBUFBFUlNbb3Blbl0pOw0KICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpDQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIHJldHVybiB7DQogICAgICAgICAga2V5OiBrZXkua2V5LA0KICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSwNCiAgICAgICAgICBzdGFydDogc3RhcnQsDQogICAgICAgICAgc3RhcnRWYWx1ZToga2V5LnZhbHVlSW5kZXgsDQogICAgICAgICAgZW5kOiB2YWx1ZS5lbmRJbmRleCwNCiAgICAgICAgICB3cmFwcGluZzogb3BlbiwNCiAgICAgIH07DQogIH0NCiAgLyoqIFBhcnNlIGEgdGV4dHVhbCBpbmxpbmUgZmllbGQgdmFsdWUgaW50byBzb21ldGhpbmcgd2UgY2FuIHdvcmsgd2l0aC4gKi8NCiAgZnVuY3Rpb24gcGFyc2VJbmxpbmVWYWx1ZSh2YWx1ZSkgew0KICAgICAgLy8gRW1wdHkgaW5saW5lIHZhbHVlcyAoaS5lLiwgbm8gdGV4dCkgc2hvdWxkIG1hcCB0byBudWxsIHRvIG1hdGNoIGxvbmctdGVybSBEYXRhdmlldyBzZW1hbnRpY3MuDQogICAgICAvLyBOdWxsIGlzIGFsc28gYSBtb3JlIHVuaXZlcnNhbCB0eXBlIHRvIGRlYWwgd2l0aCB0aGFuIHN0cmluZ3MsIHNpbmNlIGFsbCBmdW5jdGlvbnMgYWNjZXB0IG51bGxzLg0KICAgICAgaWYgKHZhbHVlLnRyaW0oKSA9PSAiIikNCiAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgIC8vIFRoZSBzdHJpcHBlZCBsaXRlcmFsIGZpZWxkIHBhcnNlciB1bmRlcnN0YW5kcyBhbGwgb2YgdGhlIG5vbi1hcnJheS9ub24tb2JqZWN0IGZpZWxkcyBhbmQgY2FuIHBhcnNlIHRoZW0gZm9yIHVzLg0KICAgICAgLy8gSW5saW5lIGZpZWxkIG9iamVjdHMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkOyBpbmxpbmUgYXJyYXkgb2JqZWN0cyBoYXZlIHRvIGJlIGhhbmRsZWQgYnkgdGhlIHBhcnNlcg0KICAgICAgLy8gc2VwYXJhdGVseS4NCiAgICAgIGxldCBpbmxpbmUgPSBFWFBSRVNTSU9OLmlubGluZUZpZWxkLnBhcnNlKHZhbHVlKTsNCiAgICAgIGlmIChpbmxpbmUuc3RhdHVzKQ0KICAgICAgICAgIHJldHVybiBpbmxpbmUudmFsdWU7DQogICAgICBlbHNlDQogICAgICAgICAgcmV0dXJuIHZhbHVlOw0KICB9DQogIC8qKiBFeHRyYWN0cyBpbmxpbmUgZmllbGRzIG9mIHRoZSBmb3JtICdba2V5OjogdmFsdWVdJyBmcm9tIGEgbGluZSBvZiB0ZXh0LiBUaGlzIGlzIGRvbmUgaW4gYSByZWxhdGl2ZWx5DQogICAqICJyb2J1c3QiIHdheSB0byBhdm9pZCBmYWlsaW5nIGR1ZSB0byBiYWQgbmVzdGluZyBvciBvdGhlciBpbnRlcmZlcmluZyBNYXJrZG93biBzeW1ib2xzOg0KICAgKg0KICAgKiAtIExvb2sgZm9yIGFueSB3cmFwcGVycyAoJ1snIGFuZCAnKCcpIGluIHRoZSBsaW5lLCB0cnlpbmcgdG8gcGFyc2Ugd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgYXMgYW4gaW5saW5lIGtleTo6Lg0KICAgKiAtIElmIHN1Y2Nlc3NmdWwsIHNjYW4gdW50aWwgeW91IGZpbmQgYSBtYXRjaGluZyBlbmQgYnJhY2tldCwgYW5kIHBhcnNlIHdoYXRldmVyIHJlbWFpbnMgYXMgYW4gaW5saW5lIHZhbHVlLg0KICAgKi8NCiAgZnVuY3Rpb24gZXh0cmFjdElubGluZUZpZWxkcyhsaW5lLCBpbmNsdWRlVGFza0ZpZWxkcyA9IGZhbHNlKSB7DQogICAgICBsZXQgZmllbGRzID0gW107DQogICAgICBmb3IgKGxldCB3cmFwcGVyIG9mIE9iamVjdC5rZXlzKElOTElORV9GSUVMRF9XUkFQUEVSUykpIHsNCiAgICAgICAgICBsZXQgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyKTsNCiAgICAgICAgICB3aGlsZSAoZm91bmRJbmRleCA+PSAwKSB7DQogICAgICAgICAgICAgIGxldCBwYXJzZWRGaWVsZCA9IGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIGZvdW5kSW5kZXgpOw0KICAgICAgICAgICAgICBpZiAoIXBhcnNlZEZpZWxkKSB7DQogICAgICAgICAgICAgICAgICBmb3VuZEluZGV4ID0gbGluZS5pbmRleE9mKHdyYXBwZXIsIGZvdW5kSW5kZXggKyAxKTsNCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGZpZWxkcy5wdXNoKHBhcnNlZEZpZWxkKTsNCiAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBwYXJzZWRGaWVsZC5lbmQpOw0KICAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGlmIChpbmNsdWRlVGFza0ZpZWxkcykNCiAgICAgICAgICBmaWVsZHMgPSBmaWVsZHMuY29uY2F0KGV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyhsaW5lKSk7DQogICAgICBmaWVsZHMuc29ydCgoYSwgYikgPT4gYS5zdGFydCAtIGIuc3RhcnQpOw0KICAgICAgbGV0IGZpbHRlcmVkRmllbGRzID0gW107DQogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgIGlmIChpID09IDAgfHwgZmlsdGVyZWRGaWVsZHNbZmlsdGVyZWRGaWVsZHMubGVuZ3RoIC0gMV0uZW5kIDwgZmllbGRzW2ldLnN0YXJ0KSB7DQogICAgICAgICAgICAgIGZpbHRlcmVkRmllbGRzLnB1c2goZmllbGRzW2ldKTsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gZmlsdGVyZWRGaWVsZHM7DQogIH0NCiAgLyoqIFZhbGlkYXRlcyB0aGF0IGEgcmF3IGZpZWxkIG5hbWUgaGFzIGEgdmFsaWQgZm9ybS4gKi8NCiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJUID0gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAobmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksICJ1IikpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1cd1xzXy8tXSsvdSkpDQogICAgICAubWFueSgpDQogICAgICAubWFwKHBhcnRzID0+IHBhcnRzLmpvaW4oIiIpKTsNCiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJTRVIgPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvW14wLTlcd1xwe0xldHRlcn1dKi91KQ0KICAgICAgLnRoZW4oRlVMTF9MSU5FX0tFWV9QQVJUKQ0KICAgICAgLnNraXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1tfXCp+YF0qL3UpKTsNCiAgLyoqIEF0dGVtcHQgdG8gZXh0cmFjdCBhIGZ1bGwtbGluZSBmaWVsZCAoS2V5OjogVmFsdWUgY29uc3VtaW5nIHRoZSBlbnRpcmUgY29udGVudCBsaW5lKS4gKi8NCiAgZnVuY3Rpb24gZXh0cmFjdEZ1bGxMaW5lRmllbGQodGV4dCkgew0KICAgICAgbGV0IHNlcCA9IGZpbmRTZXBhcmF0b3IodGV4dCwgMCk7DQogICAgICBpZiAoIXNlcCkNCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOw0KICAgICAgLy8gV2UgbmVlZCB0byBwb3N0LXByb2Nlc3MgdGhlIGtleSB0byBkcm9wIHVubmVjZXNzYXJ5IG9wZW5pbmcgYW5ub3RhdGlvbnMgYXMgd2VsbCBhcw0KICAgICAgLy8gZHJvcCBzdXJyb3VuZGluZyBNYXJrZG93bi4NCiAgICAgIGxldCByZWFsS2V5ID0gRlVMTF9MSU5FX0tFWV9QQVJTRVIucGFyc2Uoc2VwLmtleSk7DQogICAgICBpZiAoIXJlYWxLZXkuc3RhdHVzKQ0KICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICByZXR1cm4gew0KICAgICAgICAgIGtleTogcmVhbEtleS52YWx1ZSwNCiAgICAgICAgICB2YWx1ZTogdGV4dC5zdWJzdHJpbmcoc2VwLnZhbHVlSW5kZXgpLnRyaW0oKSwNCiAgICAgICAgICBzdGFydDogMCwNCiAgICAgICAgICBzdGFydFZhbHVlOiBzZXAudmFsdWVJbmRleCwNCiAgICAgICAgICBlbmQ6IHRleHQubGVuZ3RoLA0KICAgICAgfTsNCiAgfQ0KICBjb25zdCBDUkVBVEVEX0RBVEVfUkVHRVggPSAvXHV7Mjc5NX1ccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7DQogIGNvbnN0IERVRV9EQVRFX1JFR0VYID0gLyg/Olx1ezFGNEM1fXxcdXsxRjRDNn18XHV7MUY1RDN9XHV7RkUwRn0/KVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsNCiAgY29uc3QgRE9ORV9EQVRFX1JFR0VYID0gL1x1ezI3MDV9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91Ow0KICBjb25zdCBTQ0hFRFVMRURfREFURV9SRUdFWCA9IC9bXHV7MjNGM31cdXsyMzFCfV1ccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7DQogIGNvbnN0IFNUQVJUX0RBVEVfUkVHRVggPSAvXHV7MUY2RUJ9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91Ow0KICBjb25zdCBFTU9KSV9SRUdFWEVTID0gWw0KICAgICAgeyByZWdleDogQ1JFQVRFRF9EQVRFX1JFR0VYLCBrZXk6ICJjcmVhdGVkIiB9LA0KICAgICAgeyByZWdleDogU1RBUlRfREFURV9SRUdFWCwga2V5OiAic3RhcnQiIH0sDQogICAgICB7IHJlZ2V4OiBTQ0hFRFVMRURfREFURV9SRUdFWCwga2V5OiAic2NoZWR1bGVkIiB9LA0KICAgICAgeyByZWdleDogRFVFX0RBVEVfUkVHRVgsIGtleTogImR1ZSIgfSwNCiAgICAgIHsgcmVnZXg6IERPTkVfREFURV9SRUdFWCwga2V5OiAiY29tcGxldGlvbiIgfSwNCiAgXTsNCiAgLyoqIFBhcnNlIHNwZWNpYWwgY29tcGxldGVkL2R1ZS9kb25lIHRhc2sgZmllbGRzIHdoaWNoIGFyZSBtYXJrZWQgdmlhIGVtb2ppLiAqLw0KICBmdW5jdGlvbiBleHRyYWN0U3BlY2lhbFRhc2tGaWVsZHMobGluZSkgew0KICAgICAgbGV0IHJlc3VsdHMgPSBbXTsNCiAgICAgIGZvciAobGV0IHsgcmVnZXgsIGtleSB9IG9mIEVNT0pJX1JFR0VYRVMpIHsNCiAgICAgICAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMobGluZSk7DQogICAgICAgICAgaWYgKCFtYXRjaCkNCiAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgcmVzdWx0cy5wdXNoKHsNCiAgICAgICAgICAgICAga2V5LA0KICAgICAgICAgICAgICB2YWx1ZTogbWF0Y2hbMV0sDQogICAgICAgICAgICAgIHN0YXJ0OiBtYXRjaC5pbmRleCwNCiAgICAgICAgICAgICAgc3RhcnRWYWx1ZTogbWF0Y2guaW5kZXggKyAxLA0KICAgICAgICAgICAgICBlbmQ6IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoLA0KICAgICAgICAgICAgICB3cmFwcGluZzogImVtb2ppLXNob3J0aGFuZCIsDQogICAgICAgICAgfSk7DQogICAgICB9DQogICAgICByZXR1cm4gcmVzdWx0czsNCiAgfQoKICAvKiogQWxsIGV4dHJhY3RlZCBtYXJrZG93biBmaWxlIG1ldGFkYXRhIG9idGFpbmVkIGZyb20gYSBmaWxlLiAqLw0KICBjbGFzcyBQYWdlTWV0YWRhdGEgew0KICAgICAgY29uc3RydWN0b3IocGF0aCwgaW5pdCkgew0KICAgICAgICAgIHRoaXMucGF0aCA9IHBhdGg7DQogICAgICAgICAgdGhpcy5maWVsZHMgPSBuZXcgTWFwKCk7DQogICAgICAgICAgdGhpcy5mcm9udG1hdHRlciA9IHt9Ow0KICAgICAgICAgIHRoaXMudGFncyA9IG5ldyBTZXQoKTsNCiAgICAgICAgICB0aGlzLmFsaWFzZXMgPSBuZXcgU2V0KCk7DQogICAgICAgICAgdGhpcy5saW5rcyA9IFtdOw0KICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7DQogICAgICAgICAgdGhpcy5saXN0cyA9ICh0aGlzLmxpc3RzIHx8IFtdKS5tYXAobCA9PiBuZXcgTGlzdEl0ZW0obCkpOw0KICAgICAgfQ0KICAgICAgLyoqIENhbm9uaWNhbGl6ZSByYXcgbGlua3MgYW5kIG90aGVyIGRhdGEgaW4gcGFydGlhbCBkYXRhIHdpdGggbm9ybWFsaXplcnMsIHJldHVybmluZyBhIGNvbXBsZXRlZCBvYmplY3QuICovDQogICAgICBzdGF0aWMgY2Fub25pY2FsaXplKGRhdGEsIGxpbmtOb3JtYWxpemVyKSB7DQogICAgICAgICAgLy8gTXV0YXRlIHRoZSBkYXRhIGZvciBub3csIHdoaWNoIGlzIHByb2JhYmx5IGEgYmFkIGlkZWEgYnV0Li4uIGFsbCB3ZWxsLg0KICAgICAgICAgIGlmIChkYXRhLmZyb250bWF0dGVyKSB7DQogICAgICAgICAgICAgIGRhdGEuZnJvbnRtYXR0ZXIgPSBWYWx1ZXMubWFwTGVhdmVzKGRhdGEuZnJvbnRtYXR0ZXIsIHQgPT4gVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmIChkYXRhLmZpZWxkcykgew0KICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgZGF0YS5maWVsZHMuZW50cmllcygpKSB7DQogICAgICAgICAgICAgICAgICBkYXRhLmZpZWxkcy5zZXQoa2V5LCBWYWx1ZXMubWFwTGVhdmVzKHZhbHVlLCB0ID0+IChWYWx1ZXMuaXNMaW5rKHQpID8gbGlua05vcm1hbGl6ZXIodCkgOiB0KSkpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmIChkYXRhLmxpc3RzKSB7DQogICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgZGF0YS5saXN0cykgew0KICAgICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGl0ZW0uZmllbGRzLmVudHJpZXMoKSkgew0KICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZmllbGRzLnNldChrZXksIHZhbHVlLm1hcCh4ID0+IFZhbHVlcy5tYXBMZWF2ZXMoeCwgdCA9PiAoVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCkpKSk7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKGRhdGEubGlua3MpIHsNCiAgICAgICAgICAgICAgZGF0YS5saW5rcyA9IGRhdGEubGlua3MubWFwKGwgPT4gbGlua05vcm1hbGl6ZXIobCkpOw0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSB1Z2x5LCBidXQgaXQncyBub3QgcG9zc2libGUgdG8gbm9ybWFsaXplIG9uIHRoZSB3b3JrZXIgdGhyZWFkIHRoYXQgZG9lcyBwYXJzaW5nLg0KICAgICAgICAgIC8vIFRoZSBiZXN0IHdheSB0byBpbXByb3ZlIHRoaXMgaXMgdG8gaW5zdGVhZCBqdXN0IGNhbm9uaWNhbGl6ZSB0aGUgZW50aXJlIGRhdGEgb2JqZWN0OyBJIGNhbiB0cnkgdG8NCiAgICAgICAgICAvLyBvcHRpbWl6ZSBgVmFsdWVzLm1hcExlYXZlc2AgdG8gb25seSBtdXRhdGUgaWYgaXQgYWN0dWFsbHkgY2hhbmdlcyB0aGluZ3MuDQogICAgICAgICAgcmV0dXJuIG5ldyBQYWdlTWV0YWRhdGEoZGF0YS5wYXRoLCBkYXRhKTsNCiAgICAgIH0NCiAgICAgIC8qKiBUaGUgbmFtZSAoYmFzZWQgb24gcGF0aCkgb2YgdGhpcyBmaWxlLiAqLw0KICAgICAgbmFtZSgpIHsNCiAgICAgICAgICByZXR1cm4gZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7DQogICAgICB9DQogICAgICAvKiogVGhlIGNvbnRhaW5pbmcgZm9sZGVyIChiYXNlZCBvbiBwYXRoKSBvZiB0aGlzIGZpbGUuICovDQogICAgICBmb2xkZXIoKSB7DQogICAgICAgICAgcmV0dXJuIGdldFBhcmVudEZvbGRlcih0aGlzLnBhdGgpOw0KICAgICAgfQ0KICAgICAgLyoqIFRoZSBleHRlbnNpb24gb2YgdGhpcyBmaWxlIChsaWtlbHkgJ21kJykuICovDQogICAgICBleHRlbnNpb24oKSB7DQogICAgICAgICAgcmV0dXJuIGdldEV4dGVuc2lvbih0aGlzLnBhdGgpOw0KICAgICAgfQ0KICAgICAgLyoqIFJldHVybiBhIHNldCBvZiB0YWdzIEFORCBhbGwgb2YgdGhlaXIgcGFyZW50IHRhZ3MgKHNvICNoZWxsby95ZXMgd291bGQgYmVjb21lICNoZWxsbywgI2hlbGxvL3llcykuICovDQogICAgICBmdWxsVGFncygpIHsNCiAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOw0KICAgICAgICAgIGZvciAobGV0IHRhZyBvZiB0aGlzLnRhZ3MpIHsNCiAgICAgICAgICAgICAgZm9yIChsZXQgc3VidGFnIG9mIGV4dHJhY3RTdWJ0YWdzKHRhZykpDQogICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHN1YnRhZyk7DQogICAgICAgICAgfQ0KICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICB9DQogICAgICAvKiogQ29udmVydCBhbGwgbGlua3MgaW4gdGhpcyBmaWxlIHRvIGZpbGUgbGlua3MuICovDQogICAgICBmaWxlTGlua3MoKSB7DQogICAgICAgICAgLy8gV2Ugd2FudCB0byBtYWtlIHRoZW0gZGlzdGluY3QsIGJ1dCB3aGVyZSBsaW5rcyBhcmUgbm90IHJhdyBsaW5rcyB3ZQ0KICAgICAgICAgIC8vIG5vdyBrZWVwIHRoZSBhZGRpdGlvbmFsIG1ldGFkYXRhLg0KICAgICAgICAgIGxldCBkaXN0aW5jdExpbmtzID0gbmV3IFNldCh0aGlzLmxpbmtzKTsNCiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShkaXN0aW5jdExpbmtzKTsNCiAgICAgIH0NCiAgICAgIC8qKiBNYXAgdGhpcyBtZXRhZGF0YSB0byBhIGZ1bGwgb2JqZWN0OyB1c2VzIHRoZSBpbmRleCBmb3IgYWRkaXRpb25hbCBkYXRhIGxvb2t1cHMuICAqLw0KICAgICAgc2VyaWFsaXplKGluZGV4LCBjYWNoZSkgew0KICAgICAgICAgIC8vIENvbnZlcnQgbGlzdCBpdGVtcyB2aWEgdGhlIGNhbm9uaWNhbGl6YXRpb24gY2FjaGUuDQogICAgICAgICAgbGV0IHJlYWxDYWNoZSA9IGNhY2hlICE9PSBudWxsICYmIGNhY2hlICE9PSB2b2lkIDAgPyBjYWNoZSA6IG5ldyBMaXN0U2VyaWFsaXphdGlvbkNhY2hlKHRoaXMubGlzdHMpOw0KICAgICAgICAgIGxldCByZXN1bHQgPSB7DQogICAgICAgICAgICAgIGZpbGU6IHsNCiAgICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCwNCiAgICAgICAgICAgICAgICAgIGZvbGRlcjogdGhpcy5mb2xkZXIoKSwNCiAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSgpLA0KICAgICAgICAgICAgICAgICAgbGluazogTGluay5maWxlKHRoaXMucGF0aCksDQogICAgICAgICAgICAgICAgICBvdXRsaW5rczogdGhpcy5maWxlTGlua3MoKSwNCiAgICAgICAgICAgICAgICAgIGlubGlua3M6IEFycmF5LmZyb20oaW5kZXgubGlua3MuZ2V0SW52ZXJzZSh0aGlzLnBhdGgpKS5tYXAobCA9PiBMaW5rLmZpbGUobCkpLA0KICAgICAgICAgICAgICAgICAgZXRhZ3M6IEFycmF5LmZyb20odGhpcy50YWdzKSwNCiAgICAgICAgICAgICAgICAgIHRhZ3M6IEFycmF5LmZyb20odGhpcy5mdWxsVGFncygpKSwNCiAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IEFycmF5LmZyb20odGhpcy5hbGlhc2VzKSwNCiAgICAgICAgICAgICAgICAgIGxpc3RzOiB0aGlzLmxpc3RzLm1hcChsID0+IHJlYWxDYWNoZS5nZXQobC5saW5lKSksDQogICAgICAgICAgICAgICAgICB0YXNrczogdGhpcy5saXN0cy5maWx0ZXIobCA9PiAhIWwudGFzaykubWFwKGwgPT4gcmVhbENhY2hlLmdldChsLmxpbmUpKSwNCiAgICAgICAgICAgICAgICAgIGN0aW1lOiB0aGlzLmN0aW1lLA0KICAgICAgICAgICAgICAgICAgY2RheTogc3RyaXBUaW1lKHRoaXMuY3RpbWUpLA0KICAgICAgICAgICAgICAgICAgbXRpbWU6IHRoaXMubXRpbWUsDQogICAgICAgICAgICAgICAgICBtZGF5OiBzdHJpcFRpbWUodGhpcy5tdGltZSksDQogICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnNpemUsDQogICAgICAgICAgICAgICAgICBzdGFycmVkOiBpbmRleC5zdGFycmVkLnN0YXJyZWQodGhpcy5wYXRoKSwNCiAgICAgICAgICAgICAgICAgIGZyb250bWF0dGVyOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5mcm9udG1hdHRlciksDQogICAgICAgICAgICAgICAgICBleHQ6IHRoaXMuZXh0ZW5zaW9uKCksDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgfTsNCiAgICAgICAgICAvLyBBZGQgdGhlIGN1cnJlbnQgZGF5IGlmIHByZXNlbnQuDQogICAgICAgICAgaWYgKHRoaXMuZGF5KQ0KICAgICAgICAgICAgICByZXN1bHQuZmlsZS5kYXkgPSB0aGlzLmRheTsNCiAgICAgICAgICAvLyBUaGVuIGFwcGVuZCB0aGUgY29tcHV0ZWQgZmllbGRzLg0KICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmZpZWxkcy5lbnRyaWVzKCkpIHsNCiAgICAgICAgICAgICAgaWYgKGtleSBpbiByZXN1bHQpDQogICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gRG9uJ3QgYWxsb3cgZmllbGRzIHRvIG92ZXJyaWRlIGV4aXN0aW5nIGtleXMuDQogICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7DQogICAgICAgICAgfQ0KICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICB9DQogIH0NCiAgLyoqIEEgbGlzdCBpdGVtIGluc2lkZSBvZiBhIGxpc3QuICovDQogIGNsYXNzIExpc3RJdGVtIHsNCiAgICAgIGNvbnN0cnVjdG9yKGluaXQpIHsNCiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpOw0KICAgICAgICAgIHRoaXMuZmllbGRzID0gdGhpcy5maWVsZHMgfHwgbmV3IE1hcCgpOw0KICAgICAgICAgIHRoaXMudGFncyA9IHRoaXMudGFncyB8fCBuZXcgU2V0KCk7DQogICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4gfHwgW107DQogICAgICAgICAgdGhpcy5saW5rcyA9IHRoaXMubGlua3MgfHwgW107DQogICAgICB9DQogICAgICBpZCgpIHsNCiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5maWxlKCkucGF0aH0tJHt0aGlzLmxpbmV9YDsNCiAgICAgIH0NCiAgICAgIGZpbGUoKSB7DQogICAgICAgICAgcmV0dXJuIHRoaXMubGluay50b0ZpbGUoKTsNCiAgICAgIH0NCiAgICAgIG1hcmtkb3duKCkgew0KICAgICAgICAgIGlmICh0aGlzLnRhc2spDQogICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnN5bWJvbH0gWyR7dGhpcy50YXNrLmNvbXBsZXRlZCA/ICJ4IiA6ICIgIn1dICR7dGhpcy50ZXh0fWA7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5zeW1ib2x9ICR7dGhpcy50ZXh0fWA7DQogICAgICB9DQogICAgICBjcmVhdGVkKCkgew0KICAgICAgICAgIHZhciBfYSwgX2IsIF9jOw0KICAgICAgICAgIHJldHVybiAoX2MgPSAoKF9iID0gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJjcmVhdGVkIikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuZmllbGRzLmdldCgiY3RpbWUiKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJjZGF5IikpKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbMF07DQogICAgICB9DQogICAgICBkdWUoKSB7DQogICAgICAgICAgdmFyIF9hLCBfYiwgX2M7DQogICAgICAgICAgcmV0dXJuIChfYyA9ICgoX2IgPSAoX2EgPSB0aGlzLmZpZWxkcy5nZXQoImR1ZSIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmZpZWxkcy5nZXQoImR1ZXRpbWUiKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJkdWVkYXkiKSkpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1swXTsNCiAgICAgIH0NCiAgICAgIGNvbXBsZXRlZCgpIHsNCiAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7DQogICAgICAgICAgcmV0dXJuIChfZCA9ICgoX2MgPSAoX2IgPSAoX2EgPSB0aGlzLmZpZWxkcy5nZXQoImNvbXBsZXRlZCIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmZpZWxkcy5nZXQoImNvbXBsZXRpb24iKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJjb21wdGltZSIpKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiB0aGlzLmZpZWxkcy5nZXQoImNvbXBkYXkiKSkpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZFswXTsNCiAgICAgIH0NCiAgICAgIHN0YXJ0KCkgew0KICAgICAgICAgIHZhciBfYTsNCiAgICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJzdGFydCIpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF07DQogICAgICB9DQogICAgICBzY2hlZHVsZWQoKSB7DQogICAgICAgICAgdmFyIF9hOw0KICAgICAgICAgIHJldHVybiAoX2EgPSB0aGlzLmZpZWxkcy5nZXQoInNjaGVkdWxlZCIpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF07DQogICAgICB9DQogICAgICAvKiogQ3JlYXRlIGFuIEFQSS1mcmllbmRseSBjb3B5IG9mIHRoaXMgbGlzdCBpdGVtLiBEZS1kdXBsaWNhdGlvbiBpcyBkb25lIHZpYSB0aGUgcHJvdmlkZWQgY2FjaGUuICovDQogICAgICBzZXJpYWxpemUoY2FjaGUpIHsNCiAgICAgICAgICAvLyBNYXAgY2hpbGRyZW4gdG8gdGhlaXIgc2VyaWFsaXplZC9kZS1kdXBsaWNhdGVkIGVxdWl2YWxlbnRzIHJpZ2h0IGF3YXkuDQogICAgICAgICAgbGV0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5tYXAobCA9PiBjYWNoZS5nZXQobCkpLmZpbHRlcigobCkgPT4gbCAhPT0gdW5kZWZpbmVkKTsNCiAgICAgICAgICBsZXQgcmVzdWx0ID0gew0KICAgICAgICAgICAgICBzeW1ib2w6IHRoaXMuc3ltYm9sLA0KICAgICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmssDQogICAgICAgICAgICAgIHNlY3Rpb246IHRoaXMuc2VjdGlvbiwNCiAgICAgICAgICAgICAgdGV4dDogdGhpcy50ZXh0LA0KICAgICAgICAgICAgICB0YWdzOiBBcnJheS5mcm9tKHRoaXMudGFncyksDQogICAgICAgICAgICAgIGxpbmU6IHRoaXMubGluZSwNCiAgICAgICAgICAgICAgbGluZUNvdW50OiB0aGlzLmxpbmVDb3VudCwNCiAgICAgICAgICAgICAgbGlzdDogdGhpcy5saXN0LA0KICAgICAgICAgICAgICBvdXRsaW5rczogQXJyYXkuZnJvbSh0aGlzLmxpbmtzKSwNCiAgICAgICAgICAgICAgcGF0aDogdGhpcy5saW5rLnBhdGgsDQogICAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiwNCiAgICAgICAgICAgICAgdGFzazogISF0aGlzLnRhc2ssDQogICAgICAgICAgICAgIGFubm90YXRlZDogdGhpcy5maWVsZHMuc2l6ZSA+IDAsDQogICAgICAgICAgICAgIHBvc2l0aW9uOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5wb3NpdGlvbiksDQogICAgICAgICAgICAgIHN1YnRhc2tzOiBjaGlsZHJlbiwNCiAgICAgICAgICAgICAgcmVhbDogISF0aGlzLnRhc2ssDQogICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5zZWN0aW9uLCAvLyBAZGVwcmVjYXRlZCwgdXNlICdpdGVtLnNlY3Rpb24nIGluc3RlYWQuDQogICAgICAgICAgfTsNCiAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgfHwgdGhpcy5wYXJlbnQgPT09IDApDQogICAgICAgICAgICAgIHJlc3VsdC5wYXJlbnQgPSB0aGlzLnBhcmVudDsNCiAgICAgICAgICBpZiAodGhpcy5ibG9ja0lkKQ0KICAgICAgICAgICAgICByZXN1bHQuYmxvY2tJZCA9IHRoaXMuYmxvY2tJZDsNCiAgICAgICAgICBhZGRGaWVsZHModGhpcy5maWVsZHMsIHJlc3VsdCk7DQogICAgICAgICAgaWYgKHRoaXMudGFzaykgew0KICAgICAgICAgICAgICByZXN1bHQuc3RhdHVzID0gdGhpcy50YXNrLnN0YXR1czsNCiAgICAgICAgICAgICAgcmVzdWx0LmNoZWNrZWQgPSB0aGlzLnRhc2suY2hlY2tlZDsNCiAgICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRlZCA9IHRoaXMudGFzay5jb21wbGV0ZWQ7DQogICAgICAgICAgICAgIHJlc3VsdC5mdWxseUNvbXBsZXRlZCA9IHRoaXMudGFzay5mdWxseUNvbXBsZXRlZDsNCiAgICAgICAgICAgICAgbGV0IGNyZWF0ZWQgPSB0aGlzLmNyZWF0ZWQoKSwgZHVlID0gdGhpcy5kdWUoKSwgY29tcGxldGVkID0gdGhpcy5jb21wbGV0ZWQoKSwgc3RhcnQgPSB0aGlzLnN0YXJ0KCksIHNjaGVkdWxlZCA9IHRoaXMuc2NoZWR1bGVkKCk7DQogICAgICAgICAgICAgIGlmIChjcmVhdGVkKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0LmNyZWF0ZWQgPSBWYWx1ZXMuZGVlcENvcHkoY3JlYXRlZCk7DQogICAgICAgICAgICAgIGlmIChkdWUpDQogICAgICAgICAgICAgICAgICByZXN1bHQuZHVlID0gVmFsdWVzLmRlZXBDb3B5KGR1ZSk7DQogICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQpDQogICAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGlvbiA9IFZhbHVlcy5kZWVwQ29weShjb21wbGV0ZWQpOw0KICAgICAgICAgICAgICBpZiAoc3RhcnQpDQogICAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBWYWx1ZXMuZGVlcENvcHkoc3RhcnQpOw0KICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVkKQ0KICAgICAgICAgICAgICAgICAgcmVzdWx0LnNjaGVkdWxlZCA9IFZhbHVlcy5kZWVwQ29weShzY2hlZHVsZWQpOw0KICAgICAgICAgIH0NCiAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgfQ0KICB9DQogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAvLyBDb252ZXJzaW9uIC8gU2VyaWFsaXphdGlvbiBVdGlsaXRpZXMgLy8NCiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogIC8qKiBEZS1kdXBsaWNhdGVzIGxpc3QgaXRlbXMgYWNyb3NzIHNlY3Rpb24gbWV0YWRhdGEgYW5kIHBhZ2UgbWV0YWRhdGEuICovDQogIGNsYXNzIExpc3RTZXJpYWxpemF0aW9uQ2FjaGUgew0KICAgICAgY29uc3RydWN0b3IobGlzdEl0ZW1zKSB7DQogICAgICAgICAgdGhpcy5saXN0SXRlbXMgPSB7fTsNCiAgICAgICAgICB0aGlzLmNhY2hlID0ge307DQogICAgICAgICAgdGhpcy5zZWVuID0gbmV3IFNldCgpOw0KICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbGlzdEl0ZW1zKQ0KICAgICAgICAgICAgICB0aGlzLmxpc3RJdGVtc1tpdGVtLmxpbmVdID0gaXRlbTsNCiAgICAgIH0NCiAgICAgIGdldChsaW5lbm8pIHsNCiAgICAgICAgICBpZiAobGluZW5vIGluIHRoaXMuY2FjaGUpDQogICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlW2xpbmVub107DQogICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWVuLmhhcyhsaW5lbm8pKSB7DQogICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEYXRhdmlldzogRW5jb3VudGVyZWQgYSBjaXJjdWxhciBsaXN0IChsaW5lIG51bWJlciAke2xpbmVub307IGNoaWxkcmVuICR7dGhpcy5saXN0SXRlbXNbbGluZW5vXS5jaGlsZHJlbi5qb2luKCIsICIpfSlgKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgICB9DQogICAgICAgICAgdGhpcy5zZWVuLmFkZChsaW5lbm8pOw0KICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmxpc3RJdGVtc1tsaW5lbm9dLnNlcmlhbGl6ZSh0aGlzKTsNCiAgICAgICAgICB0aGlzLmNhY2hlW2xpbmVub10gPSByZXN1bHQ7DQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgIH0NCiAgfQ0KICBmdW5jdGlvbiBhZGRGaWVsZHMoZmllbGRzLCB0YXJnZXQpIHsNCiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlc10gb2YgZmllbGRzLmVudHJpZXMoKSkgew0KICAgICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0KQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlcy5sZW5ndGggPT0gMSA/IHZhbHVlc1swXSA6IHZhbHVlczsNCiAgICAgIH0NCiAgICAgIHJldHVybiB0YXJnZXQ7DQogIH0KCiAgLyoqIENvbW1vbiB1dGlsaXRpZXMgZm9yIGV4dHJhY3RpbmcgdGFncywgbGlua3MsIGFuZCBvdGhlciBidXNpbmVzcyBmcm9tIG1ldGFkYXRhLiAqLw0KICBjb25zdCBQT1RFTlRJQUxfVEFHX01BVENIRVIgPSAvI1teXHMsO1wuOiFcPyciYCgpXFtcXVx7XH1dKy9naXU7DQogIC8qKiBFeHRyYWN0IGFsbCB0YWdzIGZyb20gdGhlIGdpdmVuIHNvdXJjZSBzdHJpbmcuICovDQogIGZ1bmN0aW9uIGV4dHJhY3RUYWdzJDEoc291cmNlKSB7DQogICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOw0KICAgICAgbGV0IG1hdGNoZXMgPSBzb3VyY2UubWF0Y2hBbGwoUE9URU5USUFMX1RBR19NQVRDSEVSKTsNCiAgICAgIGZvciAobGV0IG1hdGNoIG9mIG1hdGNoZXMpIHsNCiAgICAgICAgICBsZXQgcGFyc2VkID0gRVhQUkVTU0lPTi50YWcucGFyc2UobWF0Y2hbMF0pOw0KICAgICAgICAgIGlmIChwYXJzZWQuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXN1bHQuYWRkKHBhcnNlZC52YWx1ZSk7DQogICAgICB9DQogICAgICByZXR1cm4gcmVzdWx0Ow0KICB9CgogIC8qKiBJbXBvcnRlciBmb3IgbWFya2Rvd24gZG9jdW1lbnRzLiAqLw0KICAvKiogRXh0cmFjdCBtYXJrZG93biBtZXRhZGF0YSBmcm9tIHRoZSBnaXZlbiBPYnNpZGlhbiBtYXJrZG93biBmaWxlLiAqLw0KICBmdW5jdGlvbiBwYXJzZVBhZ2UocGF0aCwgY29udGVudHMsIHN0YXQsIG1ldGFkYXRhKSB7DQogICAgICBsZXQgdGFncyA9IG5ldyBTZXQoKTsNCiAgICAgIGxldCBhbGlhc2VzID0gbmV3IFNldCgpOw0KICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsNCiAgICAgIGxldCBsaW5rcyA9IFtdOw0KICAgICAgLy8gRmlsZSB0YWdzLCBpbmNsdWRpbmcgZnJvbnQtbWF0dGVyIGFuZCBpbi1maWxlIHRhZ3MuDQogICAgICAobWV0YWRhdGEudGFncyB8fCBbXSkuZm9yRWFjaCh0ID0+IHRhZ3MuYWRkKHQudGFnLnN0YXJ0c1dpdGgoIiMiKSA/IHQudGFnIDogIiMiICsgdC50YWcpKTsNCiAgICAgIC8vIEZyb250LW1hdHRlciBmaWxlIHRhZ3MsIGFsaWFzZXMsIEFORCBmcm9udG1hdHRlciBwcm9wZXJ0aWVzLg0KICAgICAgaWYgKG1ldGFkYXRhLmZyb250bWF0dGVyKSB7DQogICAgICAgICAgZm9yIChsZXQgdGFnIG9mIGV4dHJhY3RUYWdzKG1ldGFkYXRhLmZyb250bWF0dGVyKSkgew0KICAgICAgICAgICAgICBpZiAoIXRhZy5zdGFydHNXaXRoKCIjIikpDQogICAgICAgICAgICAgICAgICB0YWcgPSAiIyIgKyB0YWc7DQogICAgICAgICAgICAgIHRhZ3MuYWRkKHRhZyk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGZvciAobGV0IGFsaWFzIG9mIGV4dHJhY3RBbGlhc2VzKG1ldGFkYXRhLmZyb250bWF0dGVyKSB8fCBbXSkNCiAgICAgICAgICAgICAgYWxpYXNlcy5hZGQoYWxpYXMpOw0KICAgICAgICAgIGxldCBmcm9udEZpZWxkcyA9IHBhcnNlRnJvbnRtYXR0ZXIobWV0YWRhdGEuZnJvbnRtYXR0ZXIpOw0KICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmcm9udEZpZWxkcykpIHsNCiAgICAgICAgICAgICAgaWYgKGtleSA9PSAicG9zaXRpb24iKQ0KICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgIGFkZElubGluZUZpZWxkKGtleSwgdmFsdWUsIGZpZWxkcyk7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgLy8gTGlua3MgaW4gbWV0YWRhdGEuDQogICAgICBjb25zdCBsaW5rc0J5TGluZSA9IHt9Ow0KICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5saW5rcyB8fCBbXSkgew0KICAgICAgICAgIGNvbnN0IGxpbmsgPSBMaW5rLmluZmVyKHJhd0xpbmsubGluaywgZmFsc2UsIHJhd0xpbmsuZGlzcGxheVRleHQpOw0KICAgICAgICAgIGNvbnN0IGxpbmUgPSByYXdMaW5rLnBvc2l0aW9uLnN0YXJ0LmxpbmU7DQogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsNCiAgICAgICAgICBpZiAoIShsaW5lIGluIGxpbmtzQnlMaW5lKSkNCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICBsaW5rc0J5TGluZVtsaW5lXS5wdXNoKGxpbmspOw0KICAgICAgfQ0KICAgICAgLy8gRW1iZWQgTGlua3MgaW4gbWV0YWRhdGEuDQogICAgICBmb3IgKGxldCByYXdFbWJlZCBvZiBtZXRhZGF0YS5lbWJlZHMgfHwgW10pIHsNCiAgICAgICAgICBjb25zdCBsaW5rID0gTGluay5pbmZlcihyYXdFbWJlZC5saW5rLCB0cnVlLCByYXdFbWJlZC5kaXNwbGF5VGV4dCk7DQogICAgICAgICAgY29uc3QgbGluZSA9IHJhd0VtYmVkLnBvc2l0aW9uLnN0YXJ0LmxpbmU7DQogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsNCiAgICAgICAgICBpZiAoIShsaW5lIGluIGxpbmtzQnlMaW5lKSkNCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICBsaW5rc0J5TGluZVtsaW5lXS5wdXNoKGxpbmspOw0KICAgICAgfQ0KICAgICAgLy8gTWVyZ2UgZnJvbnRtYXR0ZXIgZmllbGRzIHdpdGggcGFyc2VkIGZpZWxkcy4NCiAgICAgIGxldCBtYXJrZG93bkRhdGEgPSBwYXJzZU1hcmtkb3duKHBhdGgsIGNvbnRlbnRzLnNwbGl0KCJcbiIpLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpOw0KICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhmaWVsZHMsIG1hcmtkb3duRGF0YS5maWVsZHMpOw0KICAgICAgLy8gU3RyaXAgInBvc2l0aW9uIiBmcm9tIGZyb250bWF0dGVyIHNpbmNlIGl0IGlzIE9ic2lkaWFuIGRldGVybWluZWQuDQogICAgICBjb25zdCBmcm9udG1hdHRlciA9IG1ldGFkYXRhLmZyb250bWF0dGVyIHx8IHt9Ow0KICAgICAgaWYgKGZyb250bWF0dGVyICYmICJwb3NpdGlvbiIgaW4gZnJvbnRtYXR0ZXIpDQogICAgICAgICAgZGVsZXRlIGZyb250bWF0dGVyWyJwb3NpdGlvbiJdOw0KICAgICAgcmV0dXJuIG5ldyBQYWdlTWV0YWRhdGEocGF0aCwgew0KICAgICAgICAgIHRhZ3MsDQogICAgICAgICAgYWxpYXNlcywNCiAgICAgICAgICBsaW5rcywNCiAgICAgICAgICBsaXN0czogbWFya2Rvd25EYXRhLmxpc3RzLA0KICAgICAgICAgIGZpZWxkczogZmluYWxpemVJbmxpbmVGaWVsZHMoZmllbGRzKSwNCiAgICAgICAgICBmcm9udG1hdHRlcjogZnJvbnRtYXR0ZXIsDQogICAgICAgICAgY3RpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5jdGltZSksDQogICAgICAgICAgbXRpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5tdGltZSksDQogICAgICAgICAgc2l6ZTogc3RhdC5zaXplLA0KICAgICAgICAgIGRheTogZmluZERhdGUocGF0aCwgZmllbGRzKSwNCiAgICAgIH0pOw0KICB9DQogIC8qKiBFeHRyYWN0IHRhZ3MgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICovDQogIGZ1bmN0aW9uIGV4dHJhY3RUYWdzKG1ldGFkYXRhKSB7DQogICAgICBsZXQgdGFnS2V5cyA9IE9iamVjdC5rZXlzKG1ldGFkYXRhKS5maWx0ZXIodCA9PiB0LnRvTG93ZXJDYXNlKCkgPT0gInRhZ3MiIHx8IHQudG9Mb3dlckNhc2UoKSA9PSAidGFnIik7DQogICAgICByZXR1cm4gdGFnS2V5cw0KICAgICAgICAgIC5tYXAoayA9PiBzcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyhtZXRhZGF0YVtrXSwgL1ssXHNdKy8pKQ0KICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAuY29uY2F0KGMpLCBbXSkNCiAgICAgICAgICAubWFwKHN0ciA9PiAoc3RyLnN0YXJ0c1dpdGgoIiMiKSA/IHN0ciA6ICIjIiArIHN0cikpOw0KICB9DQogIC8qKiBFeHRyYWN0IGFsaWFzZXMgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICAqLw0KICBmdW5jdGlvbiBleHRyYWN0QWxpYXNlcyhtZXRhZGF0YSkgew0KICAgICAgbGV0IGFsaWFzS2V5cyA9IE9iamVjdC5rZXlzKG1ldGFkYXRhKS5maWx0ZXIodCA9PiB0LnRvTG93ZXJDYXNlKCkgPT0gImFsaWFzIiB8fCB0LnRvTG93ZXJDYXNlKCkgPT0gImFsaWFzZXMiKTsNCiAgICAgIGNvbnN0IHJlc3VsdCA9IFtdOw0KICAgICAgZm9yIChsZXQga2V5IG9mIGFsaWFzS2V5cykgew0KICAgICAgICAgIGNvbnN0IHZhbHVlID0gbWV0YWRhdGFba2V5XTsNCiAgICAgICAgICBpZiAoIXZhbHVlKQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpDQogICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnZhbHVlLm1hcCh2ID0+ICgiIiArIHYpLnRyaW0oKSkpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uc3BsaXRGcm9udG1hdHRlclRhZ09yQWxpYXModmFsdWUsIC8sLykpOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgfQ0KICAvKiogU3BsaXQgYSBmcm9udG1hdHRlciBsaXN0IGludG8gc2VwYXJhdGUgZWxlbWVudHM7IGhhbmRsZXMgYWN0dWFsIGxpc3RzLCBjb21tYSBzZXBhcmF0ZWQgbGlzdHMsIGFuZCBzaW5nbGUgZWxlbWVudHMuICovDQogIGZ1bmN0aW9uIHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKGRhdGEsIG9uKSB7DQogICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkKQ0KICAgICAgICAgIHJldHVybiBbXTsNCiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7DQogICAgICAgICAgcmV0dXJuIGRhdGENCiAgICAgICAgICAgICAgLmZpbHRlcihzID0+ICEhcykNCiAgICAgICAgICAgICAgLm1hcChzID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKHMsIG9uKSkNCiAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcC5jb25jYXQoYyksIFtdKTsNCiAgICAgIH0NCiAgICAgIC8vIEZvcmNlIHRvIGEgc3RyaW5nIHRvIGhhbmRsZSBudW1iZXJzIGFuZCBzbyBvbi4NCiAgICAgIHJldHVybiAoIiIgKyBkYXRhKQ0KICAgICAgICAgIC5zcGxpdChvbikNCiAgICAgICAgICAuZmlsdGVyKHQgPT4gISF0KQ0KICAgICAgICAgIC5tYXAodCA9PiB0LnRyaW0oKSkNCiAgICAgICAgICAuZmlsdGVyKHQgPT4gdC5sZW5ndGggPiAwKTsNCiAgfQ0KICAvKiogUGFyc2UgcmF3IChuZXdsaW5lLWRlbGltaXRlZCkgbWFya2Rvd24sIHJldHVybmluZyBpbmxpbmUgZmllbGRzLCBsaXN0IGl0ZW1zLCBhbmQgb3RoZXIgbWV0YWRhdGEuICovDQogIGZ1bmN0aW9uIHBhcnNlTWFya2Rvd24ocGF0aCwgY29udGVudHMsIG1ldGFkYXRhLCBsaW5rc0J5TGluZSkgew0KICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsNCiAgICAgIC8vIEV4dHJhY3QgdGFzayBkYXRhIGFuZCBhcHBlbmQgdGhlIGdsb2JhbCBkYXRhIGV4dHJhY3RlZCBmcm9tIHRoZW0gdG8gb3VyIGZpZWxkcy4NCiAgICAgIGxldCBbbGlzdHMsIGV4dHJhRGF0YV0gPSBwYXJzZUxpc3RzKHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpOw0KICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVzXSBvZiBleHRyYURhdGEuZW50cmllcygpKSB7DQogICAgICAgICAgaWYgKCFmaWVsZHMuaGFzKGtleSkpDQogICAgICAgICAgICAgIGZpZWxkcy5zZXQoa2V5LCB2YWx1ZXMpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgZmllbGRzLnNldChrZXksIGZpZWxkcy5nZXQoa2V5KS5jb25jYXQodmFsdWVzKSk7DQogICAgICB9DQogICAgICAvLyBUaGUgT2JzaWRpYW4gbWV0YWRhdGEgY2FjaGUgd2lsbCB0cmFjayBsaXN0IGVsZW1lbnRzIGluc2lkZSBvZiBvdGhlciBlbGVtZW50IGdyb3VwcyAobGlrZSBhbm5vdGF0aW9ucyBhbmQNCiAgICAgIC8vIGNhbGxvdXRzKS4uLiB0aGlzIG1lYW5zIHdlIG1pZ2h0IHNlZSBtZXRhZGF0YSB0d2ljZSwgc28gc2tpcCB0aGVtIG5vdy4gVmVyeSBhbm5veWluZy4NCiAgICAgIGNvbnN0IGxpc3RMaW5lc1RvU2tpcCA9IG5ldyBTZXQoKTsNCiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaXN0cykgew0KICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZS5saW5lQ291bnQ7IGkrKykNCiAgICAgICAgICAgICAgbGlzdExpbmVzVG9Ta2lwLmFkZChsaW5lLmxpbmUgKyBpKTsNCiAgICAgIH0NCiAgICAgIC8vIE9ubHkgcGFyc2UgaGVhZGluZyBhbmQgcGFyYWdyYXBoIGVsZW1lbnRzIGZvciBpbmxpbmUgZmllbGRzOyB3ZSB3aWxsIHBhcnNlIGxpc3QgbWV0YWRhdGEgc2VwYXJhdGVseS4NCiAgICAgIGZvciAobGV0IHNlY3Rpb24gb2YgbWV0YWRhdGEuc2VjdGlvbnMgfHwgW10pIHsNCiAgICAgICAgICBpZiAoc2VjdGlvbi50eXBlID09ICJsaXN0IiB8fCBzZWN0aW9uLnR5cGUgPT0gInJ1bGluZyIpDQogICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIGZvciAobGV0IGxpbmVubyA9IHNlY3Rpb24ucG9zaXRpb24uc3RhcnQubGluZTsgbGluZW5vIDw9IHNlY3Rpb24ucG9zaXRpb24uZW5kLmxpbmU7IGxpbmVubysrKSB7DQogICAgICAgICAgICAgIGxldCBsaW5lID0gY29udGVudHNbbGluZW5vXTsNCiAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gdW5kZWZpbmVkIHx8IGxpbmUgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICBpZiAobGlzdExpbmVzVG9Ta2lwLmhhcyhsaW5lbm8pKQ0KICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgIC8vIEZhc3QgYmFpbC1vdXQgZm9yIGxpbmVzIHRoYXQgYXJlIHRvbyBsb25nIG9yIGRvIG5vdCBjb250YWluICc6OicuDQogICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA+IDMyNzY4IHx8ICFsaW5lLmluY2x1ZGVzKCI6OiIpKQ0KICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnRyaW0oKTsNCiAgICAgICAgICAgICAgbGV0IGlubGluZUZpZWxkcyA9IGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZSk7DQogICAgICAgICAgICAgIGlmIChpbmxpbmVGaWVsZHMubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaWZpZWxkIG9mIGlubGluZUZpZWxkcykNCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChpZmllbGQsIGZpZWxkcyk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZChsaW5lKTsNCiAgICAgICAgICAgICAgICAgIGlmIChmdWxsTGluZSkNCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChmdWxsTGluZSwgZmllbGRzKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIHJldHVybiB7IGZpZWxkcywgbGlzdHMgfTsNCiAgfQ0KICAvLyBUT0RPOiBDb25zaWRlciB1c2luZyBhbiBhY3R1YWwgcGFyc2VyIGluIGxlaXUgb2YgYSBtb3JlIGV4cGVuc2l2ZSByZWdleC4NCiAgY29uc3QgTElTVF9JVEVNX1JFR0VYID0gL15bXHM+XSooXGQrXC58XGQrXCl8XCp8LXxcKylccyooXFsuezAsMX1cXSk/XHMqKC4qKSQvbXU7DQogIC8qKg0KICAgKiBQYXJzZSBsaXN0IGl0ZW1zIGZyb20gdGhlIHBhZ2UgKyBtZXRhZGF0YS4gVGhpcyByZXF1aXJlcyBzb21lIGFkZGl0aW9uYWwgcGFyc2luZyBhYm92ZSB3aGF0ZXZlciBPYnNpZGlhbiBwcm92aWRlcywNCiAgICogc2luY2UgT2JzaWRpYW4gb25seSBnaXZlcyBsaW5lIG51bWJlcnMuDQogICAqLw0KICBmdW5jdGlvbiBwYXJzZUxpc3RzKHBhdGgsIGNvbnRlbnQsIG1ldGFkYXRhLCBsaW5rc0J5TGluZSkgew0KICAgICAgdmFyIF9hOw0KICAgICAgbGV0IGNhY2hlID0ge307DQogICAgICAvLyBQbGFjZSBhbGwgb2YgdGhlIHZhbHVlcyBpbiB0aGUgY2FjaGUgYmVmb3JlIHJlc29sdmluZyBjaGlsZHJlbiAmIG1ldGFkYXRhIHJlbGF0aW9uc2hpcHMuDQogICAgICBmb3IgKGxldCByYXdFbGVtZW50IG9mIG1ldGFkYXRhLmxpc3RJdGVtcyB8fCBbXSkgew0KICAgICAgICAgIC8vIE1hdGNoIG9uIHRoZSBmaXJzdCBsaW5lIHRvIGdldCB0aGUgc3ltYm9sIGFuZCBmaXJzdCBsaW5lIG9mIHRleHQuDQogICAgICAgICAgbGV0IHJhd01hdGNoID0gTElTVF9JVEVNX1JFR0VYLmV4ZWMoY29udGVudFtyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmVdKTsNCiAgICAgICAgICBpZiAoIXJhd01hdGNoKQ0KICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAvLyBBbmQgdGhlbiBzdHJpcCB1bm5lY2Vzc2FyeSBzcGFjaW5nIGZyb20gdGhlIHJlbWFpbmluZyBsaW5lcy4NCiAgICAgICAgICBsZXQgdGV4dFBhcnRzID0gW3Jhd01hdGNoWzNdXQ0KICAgICAgICAgICAgICAuY29uY2F0KGNvbnRlbnQuc2xpY2UocmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwgcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSArIDEpKQ0KICAgICAgICAgICAgICAubWFwKHQgPT4gdC50cmltKCkpOw0KICAgICAgICAgIGxldCB0ZXh0V2l0aE5ld2xpbmUgPSB0ZXh0UGFydHMuam9pbigiXG4iKTsNCiAgICAgICAgICBsZXQgdGV4dE5vTmV3bGluZSA9IHRleHRQYXJ0cy5qb2luKCIgIik7DQogICAgICAgICAgLy8gRmluZCB0aGUgbGlzdCB0aGF0IHdlIGFyZSBhIHBhcnQgb2YgYnkgbGluZS4NCiAgICAgICAgICBsZXQgY29udGFpbmluZ0xpc3RJZCA9IChtZXRhZGF0YS5zZWN0aW9ucyB8fCBbXSkuZmluZEluZGV4KHMgPT4gcy50eXBlID09ICJsaXN0IiAmJg0KICAgICAgICAgICAgICBzLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPD0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICYmDQogICAgICAgICAgICAgIHMucG9zaXRpb24uZW5kLmxpbmUgPj0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lKTsNCiAgICAgICAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIHdlIGJlbG9uZyB0byBhcyB3ZWxsLg0KICAgICAgICAgIGxldCBzZWN0aW9uTmFtZSA9IGZpbmRQcmV2aW91c0hlYWRlcihyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsIG1ldGFkYXRhLmhlYWRpbmdzIHx8IFtdKTsNCiAgICAgICAgICBsZXQgc2VjdGlvbkxpbmsgPSBzZWN0aW9uTmFtZSA9PT0gdW5kZWZpbmVkID8gTGluay5maWxlKHBhdGgpIDogTGluay5oZWFkZXIocGF0aCwgc2VjdGlvbk5hbWUpOw0KICAgICAgICAgIGxldCBjbG9zZXN0TGluayA9IHJhd0VsZW1lbnQuaWQgPT09IHVuZGVmaW5lZCA/IHNlY3Rpb25MaW5rIDogTGluay5ibG9jayhwYXRoLCByYXdFbGVtZW50LmlkKTsNCiAgICAgICAgICAvLyBHYXRoZXIgYW55IGxpbmtzIHRoYXQgb2NjdXIgb24gdGhlIHNhbWUgbGluZXMgYXMgdGhlIHRhc2suDQogICAgICAgICAgY29uc3QgbGlua3MgPSBbXTsNCiAgICAgICAgICBmb3IgKGxldCBsaW5lID0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lOyBsaW5lIDw9IHJhd0VsZW1lbnQucG9zaXRpb24uZW5kLmxpbmU7IGxpbmUrKykgew0KICAgICAgICAgICAgICBpZiAobGlua3NCeUxpbmVbbGluZV0pDQogICAgICAgICAgICAgICAgICBsaW5rcy5wdXNoKC4uLmxpbmtzQnlMaW5lW2xpbmVdKTsNCiAgICAgICAgICB9DQogICAgICAgICAgLy8gQ29uc3RydWN0IHVuaXZlcnNhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVsZW1lbnQgKGJlZm9yZSB0YXNrcykuDQogICAgICAgICAgbGV0IGl0ZW0gPSBuZXcgTGlzdEl0ZW0oew0KICAgICAgICAgICAgICBzeW1ib2w6IHJhd01hdGNoWzFdLA0KICAgICAgICAgICAgICBsaW5rOiBjbG9zZXN0TGluaywNCiAgICAgICAgICAgICAgbGlua3M6IGxpbmtzLA0KICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uTGluaywNCiAgICAgICAgICAgICAgdGV4dDogdGV4dFdpdGhOZXdsaW5lLA0KICAgICAgICAgICAgICB0YWdzOiBleHRyYWN0VGFncyQxKHRleHROb05ld2xpbmUpLA0KICAgICAgICAgICAgICBsaW5lOiByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsDQogICAgICAgICAgICAgIGxpbmVDb3VudDogcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSAtIHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSArIDEsDQogICAgICAgICAgICAgIGxpc3Q6IGNvbnRhaW5pbmdMaXN0SWQgPT0gLTEgPyAtMSA6IChtZXRhZGF0YS5zZWN0aW9ucyB8fCBbXSlbY29udGFpbmluZ0xpc3RJZF0ucG9zaXRpb24uc3RhcnQubGluZSwNCiAgICAgICAgICAgICAgcG9zaXRpb246IHJhd0VsZW1lbnQucG9zaXRpb24sDQogICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSwNCiAgICAgICAgICAgICAgYmxvY2tJZDogcmF3RWxlbWVudC5pZCwNCiAgICAgICAgICB9KTsNCiAgICAgICAgICBpZiAocmF3RWxlbWVudC5wYXJlbnQgPj0gMCAmJiByYXdFbGVtZW50LnBhcmVudCAhPSBpdGVtLmxpbmUpDQogICAgICAgICAgICAgIGl0ZW0ucGFyZW50ID0gcmF3RWxlbWVudC5wYXJlbnQ7DQogICAgICAgICAgLy8gU2V0IHVwIHRoZSBiYXNpYyB0YXNrIGluZm9ybWF0aW9uIGZvciBub3csIHRob3VnaCB3ZSBoYXZlIHRvIHJlY29tcHV0ZSBgZnVsbHlDb21wdXRlZGAgbGF0ZXIuDQogICAgICAgICAgaWYgKHJhd0VsZW1lbnQudGFzaykgew0KICAgICAgICAgICAgICBpdGVtLnRhc2sgPSB7DQogICAgICAgICAgICAgICAgICBzdGF0dXM6IHJhd0VsZW1lbnQudGFzaywNCiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IHJhd0VsZW1lbnQudGFzayAhPSAiIiAmJiByYXdFbGVtZW50LnRhc2sgIT0gIiAiLA0KICAgICAgICAgICAgICAgICAgY29tcGxldGVkOiByYXdFbGVtZW50LnRhc2sgPT0gIlgiIHx8IHJhd0VsZW1lbnQudGFzayA9PSAieCIsDQogICAgICAgICAgICAgICAgICBmdWxseUNvbXBsZXRlZDogcmF3RWxlbWVudC50YXNrID09ICJYIiB8fCByYXdFbGVtZW50LnRhc2sgPT0gIngiLA0KICAgICAgICAgICAgICB9Ow0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyBFeHRyYWN0IGlubGluZSBmaWVsZHM7IGV4dHJhY3QgZnVsbC1saW5lIGZpZWxkcyBvbmx5IGlmIHdlIGFyZSBOT1QgYSB0YXNrLg0KICAgICAgICAgIGl0ZW0uZmllbGRzID0gbmV3IE1hcCgpOw0KICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZXh0cmFjdElubGluZUZpZWxkcyh0ZXh0Tm9OZXdsaW5lLCB0cnVlKSkNCiAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZWxlbWVudCwgaXRlbS5maWVsZHMpOw0KICAgICAgICAgIGlmICghcmF3RWxlbWVudC50YXNrICYmIGl0ZW0uZmllbGRzLnNpemUgPT0gMCkgew0KICAgICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZCh0ZXh0Tm9OZXdsaW5lKTsNCiAgICAgICAgICAgICAgaWYgKGZ1bGxMaW5lKQ0KICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGl0ZW0uZmllbGRzKTsNCiAgICAgICAgICB9DQogICAgICAgICAgY2FjaGVbaXRlbS5saW5lXSA9IGl0ZW07DQogICAgICB9DQogICAgICAvLyBUcmVlIHVwZGF0aW5nIHBhc3Nlcy4gVXBkYXRlIGNoaWxkIGxpc3RzLiBQcm9wb2dhdGUgbWV0YWRhdGEgdXAgdG8gcGFyZW50IHRhc2tzLiBVcGRhdGUgdGFzayBgZnVsbHlDb21wbGV0ZWRgLg0KICAgICAgbGV0IGxpdGVyYWxzID0gbmV3IE1hcCgpOw0KICAgICAgZm9yIChsZXQgbGlzdEl0ZW0gb2YgT2JqZWN0LnZhbHVlcyhjYWNoZSkpIHsNCiAgICAgICAgICAvLyBQYXNzIDE6IFVwZGF0ZSBjaGlsZCBsaXN0cy4NCiAgICAgICAgICBpZiAobGlzdEl0ZW0ucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgbGlzdEl0ZW0ucGFyZW50IGluIGNhY2hlKSB7DQogICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBjYWNoZVtsaXN0SXRlbS5wYXJlbnRdOw0KICAgICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChsaXN0SXRlbS5saW5lKTsNCiAgICAgICAgICB9DQogICAgICAgICAgLy8gUGFzcyAyOiBQcm9wb2dhdGUgbWV0YWRhdGEgdXAgdG8gdGhlIHBhcmVudCB0YXNrIG9yIHJvb3QgZWxlbWVudC4NCiAgICAgICAgICBpZiAoIWxpc3RJdGVtLnRhc2spIHsNCiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhsaXRlcmFscywgbGlzdEl0ZW0uZmllbGRzKTsNCiAgICAgICAgICAgICAgLy8gVE9ETyAoYmxhY2tzbWl0aGd1KTogVGhlIGJlbG93IGNvZGUgcHJvcGVybHkgcHJvcG9nYXRlcyBtZXRhZGF0YSB1cCB0byB0aGUgbmVhcmVzdCB0YXNrLCB3aGljaCBpcyB0aGUNCiAgICAgICAgICAgICAgLy8gbW9yZSBpbnR1aXRpdmUgYmVoYXZpb3IuIEZvciBub3csIHRob3VnaCwgd2Ugd2lsbCBrZWVwIHRoZSBleGlzdGluZyBsb2dpYy4NCiAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgbGV0IHJvb3Q6IExpc3RJdGVtIHwgdW5kZWZpbmVkID0gbGlzdEl0ZW07DQogICAgICAgICAgICAgIHdoaWxlICghIXJvb3QgJiYgIXJvb3QudGFzaykgcm9vdCA9IGNhY2hlW3Jvb3QucGFyZW50ID8/IC0xXTsNCgogICAgICAgICAgICAgIC8vIElmIHRoZSByb290IGlzIG51bGwsIGFwcGVuZCB0aGlzIG1ldGFkYXRhIHRvIHRoZSByb290OyBvdGhlcndpc2UsIGFwcGVuZCB0byB0aGUgdGFzay4NCiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3Vwcyhyb290ID09PSB1bmRlZmluZWQgfHwgcm9vdCA9PSBudWxsID8gbGl0ZXJhbHMgOiByb290LmZpZWxkcywgbGlzdEl0ZW0uZmllbGRzKTsNCiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICB9DQogICAgICAgICAgLy8gUGFzcyAzOiBQcm9wb2dhdGUgYGZ1bGx5Q29tcGxldGVkYCB1cCB0aGUgdGFzayB0cmVlLiBUaGlzIGlzIGEgbGl0dGxlIGxlc3MgZWZmaWNpZW50IHRoYW4ganVzdCBkb2luZyBhIHNpbXBsZQ0KICAgICAgICAgIC8vIERGUyB1c2luZyB0aGUgY2hpbGRyZW4gSURzLCBidXQgaXQncyBwcm9iYWJseSBmaW5lLg0KICAgICAgICAgIGlmIChsaXN0SXRlbS50YXNrKSB7DQogICAgICAgICAgICAgIGxldCBjdXJyID0gbGlzdEl0ZW07DQogICAgICAgICAgICAgIHdoaWxlICghIWN1cnIpIHsNCiAgICAgICAgICAgICAgICAgIGlmIChjdXJyLnRhc2spDQogICAgICAgICAgICAgICAgICAgICAgY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkID0gY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkICYmIGxpc3RJdGVtLnRhc2suY29tcGxldGVkOw0KICAgICAgICAgICAgICAgICAgY3VyciA9IGNhY2hlWyhfYSA9IGN1cnIucGFyZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAtMV07DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gW09iamVjdC52YWx1ZXMoY2FjaGUpLCBsaXRlcmFsc107DQogIH0NCiAgLyoqIEF0dGVtcHQgdG8gZmluZCBhIGRhdGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBwYWdlIGZyb20gbWV0YWRhdGEgb3IgZmlsZW5hbWVzLiAqLw0KICBmdW5jdGlvbiBmaW5kRGF0ZShmaWxlLCBmaWVsZHMpIHsNCiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDsNCiAgICAgIGZvciAobGV0IGtleSBvZiBmaWVsZHMua2V5cygpKSB7DQogICAgICAgICAgaWYgKCEoa2V5LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gImRhdGUiIHx8IGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09ICJkYXkiKSkNCiAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgbGV0IHZhbHVlID0gZmllbGRzLmdldChrZXkpOw0KICAgICAgICAgIGlmIChWYWx1ZXMuaXNEYXRlKHZhbHVlKSkgew0KICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwICYmIFZhbHVlcy5pc0RhdGUodmFsdWVbMF0pKSB7DQogICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzTGluayh2YWx1ZSkpIHsNCiAgICAgICAgICAgICAgbGV0IGRhdGUgPSAoX2MgPSAoX2EgPSBleHRyYWN0RGF0ZSh2YWx1ZS5wYXRoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZXh0cmFjdERhdGUoKF9iID0gdmFsdWUuc3VicGF0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogIiIpKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBleHRyYWN0RGF0ZSgoX2QgPSB2YWx1ZS5kaXNwbGF5KSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAiIik7DQogICAgICAgICAgICAgIGlmIChkYXRlKQ0KICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGU7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcmV0dXJuIGV4dHJhY3REYXRlKGdldEZpbGVUaXRsZShmaWxlKSk7DQogIH0NCiAgLyoqIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgZnJvbnRtYXR0ZXIgaW50byBmaWVsZHMuIFdlIGhhdmUgdG8gZGFuY2UgYXJvdW5kIFlBTUwgc3RydWN0dXJlLiAqLw0KICBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyKHZhbHVlKSB7DQogICAgICBpZiAodmFsdWUgPT0gbnVsbCkgew0KICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAib2JqZWN0Iikgew0KICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgew0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107DQogICAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIHZhbHVlKSB7DQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXJzZUZyb250bWF0dGVyKGNoaWxkKSk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7DQogICAgICAgICAgICAgIGxldCBkYXRlUGFyc2UgPSBEYXRlVGltZS5mcm9tSlNEYXRlKHZhbHVlKTsNCiAgICAgICAgICAgICAgcmV0dXJuIGRhdGVQYXJzZTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIGxldCBvYmplY3QgPSB2YWx1ZTsNCiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9Ow0KICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gb2JqZWN0KSB7DQogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHBhcnNlRnJvbnRtYXR0ZXIob2JqZWN0W2tleV0pOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAibnVtYmVyIikgew0KICAgICAgICAgIHJldHVybiB2YWx1ZTsNCiAgICAgIH0NCiAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImJvb2xlYW4iKSB7DQogICAgICAgICAgcmV0dXJuIHZhbHVlOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAic3RyaW5nIikgew0KICAgICAgICAgIGxldCBkYXRlUGFyc2UgPSBFWFBSRVNTSU9OLmRhdGUucGFyc2UodmFsdWUpOw0KICAgICAgICAgIGlmIChkYXRlUGFyc2Uuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXR1cm4gZGF0ZVBhcnNlLnZhbHVlOw0KICAgICAgICAgIGxldCBkdXJhdGlvblBhcnNlID0gRVhQUkVTU0lPTi5kdXJhdGlvbi5wYXJzZSh2YWx1ZSk7DQogICAgICAgICAgaWYgKGR1cmF0aW9uUGFyc2Uuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXR1cm4gZHVyYXRpb25QYXJzZS52YWx1ZTsNCiAgICAgICAgICBsZXQgbGlua1BhcnNlID0gRVhQUkVTU0lPTi5lbWJlZExpbmsucGFyc2UodmFsdWUpOw0KICAgICAgICAgIGlmIChsaW5rUGFyc2Uuc3RhdHVzKQ0KICAgICAgICAgICAgICByZXR1cm4gbGlua1BhcnNlLnZhbHVlOw0KICAgICAgICAgIHJldHVybiB2YWx1ZTsNCiAgICAgIH0NCiAgICAgIC8vIEJhY2t1cCBpZiB3ZSBkb24ndCB1bmRlcnN0YW5kIHRoZSB0eXBlLg0KICAgICAgcmV0dXJuIG51bGw7DQogIH0NCiAgLyoqIEFkZCBhIHBhcnNlZCBpbmxpbmUgZmllbGQgdG8gdGhlIG91dHB1dCBtYXAuICovDQogIGZ1bmN0aW9uIGFkZFJhd0lubGluZUZpZWxkKGZpZWxkLCBvdXRwdXQpIHsNCiAgICAgIGFkZElubGluZUZpZWxkKGZpZWxkLmtleSwgcGFyc2VJbmxpbmVWYWx1ZShmaWVsZC52YWx1ZSksIG91dHB1dCk7DQogIH0NCiAgLyoqIEFkZCBhIHJhdyBpbmxpbmUgZmllbGQgdG8gYW4gb3V0cHV0IG1hcCwgY2Fub25pY2FsaXppbmcgYXMgbmVlZGVkLiAqLw0KICBmdW5jdGlvbiBhZGRJbmxpbmVGaWVsZChrZXksIHZhbHVlLCBvdXRwdXQpIHsNCiAgICAgIHZhciBfYTsNCiAgICAgIGlmICghb3V0cHV0LmhhcyhrZXkpKQ0KICAgICAgICAgIG91dHB1dC5zZXQoa2V5LCBbdmFsdWVdKTsNCiAgICAgIGVsc2UNCiAgICAgICAgICAoX2EgPSBvdXRwdXQuZ2V0KGtleSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdXNoKHZhbHVlKTsNCiAgfQ0KICAvKiogR2l2ZW4gYSByYXcgbGlzdCBvZiBpbmxpbmUgZmllbGQgdmFsdWVzLCBhZGQgbm9ybWFsaXplZCBrZXlzIGFuZCBzcXVhc2ggdGhlbS4gKi8NCiAgZnVuY3Rpb24gZmluYWxpemVJbmxpbmVGaWVsZHMoZmllbGRzKSB7DQogICAgICAvLyBDb21wdXRlIHVuaXF1ZSBub3JtYWxpemVkIGtleXMgKHRoYXQgZG8gbm90IG92ZXJsYXAgdy8gdGhlIGZpZWxkcykuDQogICAgICBsZXQgbm9ybWFsaXplZCA9IG5ldyBNYXAoKTsNCiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlc10gb2YgZmllbGRzLmVudHJpZXMoKSkgew0KICAgICAgICAgIGxldCBub3JtS2V5ID0gY2Fub25pY2FsaXplVmFyTmFtZShrZXkpOw0KICAgICAgICAgIGlmIChub3JtS2V5ID09ICIiIHx8IGZpZWxkcy5oYXMobm9ybUtleSkpDQogICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIGlmICghbm9ybWFsaXplZC5oYXMobm9ybUtleSkpDQogICAgICAgICAgICAgIG5vcm1hbGl6ZWQuc2V0KG5vcm1LZXksIHZhbHVlcyk7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICBub3JtYWxpemVkLnNldChub3JtS2V5LCBub3JtYWxpemVkLmdldChub3JtS2V5KS5jb25jYXQodmFsdWVzKSk7DQogICAgICB9DQogICAgICAvLyBDb21iaW5lIG5vcm1hbGl6ZWQgKyBub3JtYWwga2V5cy4NCiAgICAgIGxldCBpbnRlcmltID0gbmV3IE1hcCgpOw0KICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhpbnRlcmltLCBmaWVsZHMpOw0KICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhpbnRlcmltLCBub3JtYWxpemVkKTsNCiAgICAgIC8vIEFuZCB0aGVuIGZsYXR0ZW4gdGhlbS4NCiAgICAgIGxldCByZXN1bHQgPSBuZXcgTWFwKCk7DQogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgaW50ZXJpbS5lbnRyaWVzKCkpIHsNCiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDEpDQogICAgICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCB2YWx1ZVswXSk7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUpOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgfQ0KICAvKiogQ29weSBhbGwgZmllbGRzIG9mICdzb3VyY2UnIGludG8gJ3RhcmdldCcuICovDQogIGZ1bmN0aW9uIG1lcmdlRmllbGRHcm91cHModGFyZ2V0LCBzb3VyY2UpIHsNCiAgICAgIGZvciAobGV0IGtleSBvZiBzb3VyY2Uua2V5cygpKSB7DQogICAgICAgICAgaWYgKCF0YXJnZXQuaGFzKGtleSkpDQogICAgICAgICAgICAgIHRhcmdldC5zZXQoa2V5LCBzb3VyY2UuZ2V0KGtleSkpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgdGFyZ2V0LnNldChrZXksIHRhcmdldC5nZXQoa2V5KS5jb25jYXQoc291cmNlLmdldChrZXkpKSk7DQogICAgICB9DQogIH0NCiAgLyoqIEZpbmQgdGhlIGhlYWRlciB0aGF0IGlzIG1vc3QgaW1tZWRpYXRlbHkgYWJvdmUgdGhlIGdpdmVuIGxpbmUgbnVtYmVyLiAqLw0KICBmdW5jdGlvbiBmaW5kUHJldmlvdXNIZWFkZXIobGluZSwgaGVhZGVycykgew0KICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoID09IDApDQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgIGlmIChoZWFkZXJzWzBdLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPiBsaW5lKQ0KICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICBsZXQgaW5kZXggPSBoZWFkZXJzLmxlbmd0aCAtIDE7DQogICAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBoZWFkZXJzW2luZGV4XS5wb3NpdGlvbi5zdGFydC5saW5lID4gbGluZSkNCiAgICAgICAgICBpbmRleC0tOw0KICAgICAgcmV0dXJuIGhlYWRlcnNbaW5kZXhdLmhlYWRpbmc7DQogIH0KCiAgLyoqIEFjdHVhbCBpbXBvcnQgaW1wbGVtZW50YXRpb24gYmFja2VuZC4gVGhpcyBtdXN0IHJlbWFpbiBzZXBhcmF0ZSBmcm9tIGBpbXBvcnQtZW50cnlgIHNpbmNlIGl0IGlzIHVzZWQgd2l0aG91dCB3ZWIgd29ya2Vycy4gKi8NCiAgZnVuY3Rpb24gcnVuSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0cywgbWV0YWRhdGEpIHsNCiAgICAgIHJldHVybiBwYXJzZVBhZ2UocGF0aCwgY29udGVudHMsIHN0YXRzLCBtZXRhZGF0YSk7DQogIH0KCiAgLyoqIFNpbXBsaWZpZXMgcGFzc2luZyBkYXRhdmlldyB2YWx1ZXMgYWNyb3NzIHRoZSBKUyB3ZWIgd29ya2VyIGJhcnJpZXIuICovDQogIHZhciBUcmFuc2ZlcmFibGU7DQogIChmdW5jdGlvbiAoVHJhbnNmZXJhYmxlKSB7DQogICAgICAvKiogQ29udmVydCBhIGxpdGVyYWwgdmFsdWUgdG8gYSBzZXJpYWxpemVyLWZyaWVuZGx5IHRyYW5zZmVyYWJsZSB2YWx1ZS4gKi8NCiAgICAgIGZ1bmN0aW9uIHRyYW5zZmVyYWJsZSh2YWx1ZSkgew0KICAgICAgICAgIC8vIEhhbmRsZSBzaW1wbGUgdW5pdmVyc2FsIHR5cGVzIGZpcnN0Lg0KICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkgew0KICAgICAgICAgICAgICBsZXQgY29waWVkID0gbmV3IE1hcCgpOw0KICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIHZhbHVlLmVudHJpZXMoKSkNCiAgICAgICAgICAgICAgICAgIGNvcGllZC5zZXQodHJhbnNmZXJhYmxlKGtleSksIHRyYW5zZmVyYWJsZSh2YWwpKTsNCiAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZDsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBTZXQpIHsNCiAgICAgICAgICAgICAgbGV0IGNvcGllZCA9IG5ldyBTZXQoKTsNCiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIHZhbHVlKQ0KICAgICAgICAgICAgICAgICAgY29waWVkLmFkZCh0cmFuc2ZlcmFibGUodmFsKSk7DQogICAgICAgICAgICAgIHJldHVybiBjb3BpZWQ7DQogICAgICAgICAgfQ0KICAgICAgICAgIGxldCB3cmFwcGVkID0gVmFsdWVzLndyYXBWYWx1ZSh2YWx1ZSk7DQogICAgICAgICAgaWYgKHdyYXBwZWQgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCB0cmFuc2ZlcmFibGUgdmFsdWU6ICIgKyB2YWx1ZSk7DQogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsNCiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6DQogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6DQogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7DQogICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgICAgICAgICAgICAiX19fdHJhbnNmZXItdHlwZSI6ICJkYXRlIiwNCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdHJhbnNmZXJhYmxlKHdyYXBwZWQudmFsdWUudG9PYmplY3QoKSksDQogICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogew0KICAgICAgICAgICAgICAgICAgICAgICAgICB6b25lOiB3cmFwcGVkLnZhbHVlLnpvbmUuZXF1YWxzKFN5c3RlbVpvbmUuaW5zdGFuY2UpID8gdW5kZWZpbmVkIDogd3JhcHBlZC52YWx1ZS56b25lTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgIl9fX3RyYW5zZmVyLXR5cGUiOiAiZHVyYXRpb24iLCB2YWx1ZTogdHJhbnNmZXJhYmxlKHdyYXBwZWQudmFsdWUudG9PYmplY3QoKSkgfTsNCiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOg0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFwKHYgPT4gdHJhbnNmZXJhYmxlKHYpKTsNCiAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJsaW5rIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07DQogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkpDQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0cmFuc2ZlcmFibGUodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICB9DQogICAgICBUcmFuc2ZlcmFibGUudHJhbnNmZXJhYmxlID0gdHJhbnNmZXJhYmxlOw0KICAgICAgLyoqIENvbnZlcnQgYSB0cmFuc2ZlcmFibGUgdmFsdWUgYmFjayB0byBhIGxpdGVyYWwgdmFsdWUgd2UgY2FuIHdvcmsgd2l0aC4gKi8NCiAgICAgIGZ1bmN0aW9uIHZhbHVlKHRyYW5zZmVyYWJsZSkgew0KICAgICAgICAgIGlmICh0cmFuc2ZlcmFibGUgPT09IG51bGwpIHsNCiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZmVyYWJsZSA9PT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZmVyYWJsZSBpbnN0YW5jZW9mIE1hcCkgew0KICAgICAgICAgICAgICBsZXQgcmVhbCA9IG5ldyBNYXAoKTsNCiAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiB0cmFuc2ZlcmFibGUuZW50cmllcygpKQ0KICAgICAgICAgICAgICAgICAgcmVhbC5zZXQodmFsdWUoa2V5KSwgdmFsdWUodmFsKSk7DQogICAgICAgICAgICAgIHJldHVybiByZWFsOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgaW5zdGFuY2VvZiBTZXQpIHsNCiAgICAgICAgICAgICAgbGV0IHJlYWwgPSBuZXcgU2V0KCk7DQogICAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiB0cmFuc2ZlcmFibGUpDQogICAgICAgICAgICAgICAgICByZWFsLmFkZCh2YWx1ZSh2YWwpKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlYWw7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodHJhbnNmZXJhYmxlKSkgew0KICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlLm1hcCh2ID0+IHZhbHVlKHYpKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHRyYW5zZmVyYWJsZSA9PT0gIm9iamVjdCIpIHsNCiAgICAgICAgICAgICAgaWYgKCJfX190cmFuc2Zlci10eXBlIiBpbiB0cmFuc2ZlcmFibGUpIHsNCiAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHJhbnNmZXJhYmxlWyJfX190cmFuc2Zlci10eXBlIl0pIHsNCiAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkYXRlIjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGVPcHRzID0gdmFsdWUodHJhbnNmZXJhYmxlLm9wdGlvbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0ZURhdGEgPSB2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlRGF0YSwgeyB6b25lOiBkYXRlT3B0cy56b25lIH0pOw0KICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMaW5rLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFVucmVjb2duaXplZCB0cmFuc2ZlciB0eXBlICcke3RyYW5zZmVyYWJsZVsiX19fdHJhbnNmZXItdHlwZSJdfSdgKTsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModHJhbnNmZXJhYmxlKSkNCiAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWUodmFsKTsNCiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICB9DQogICAgICAgICAgcmV0dXJuIHRyYW5zZmVyYWJsZTsNCiAgICAgIH0NCiAgICAgIFRyYW5zZmVyYWJsZS52YWx1ZSA9IHZhbHVlOw0KICB9KShUcmFuc2ZlcmFibGUgfHwgKFRyYW5zZmVyYWJsZSA9IHt9KSk7CgogIC8qKiBFbnRyeS1wb2ludCBzY3JpcHQgdXNlZCBieSB0aGUgaW5kZXggYXMgYSB3ZWIgd29ya2VyLiAqLw0KICAvKiogQW4gaW1wb3J0IHdoaWNoIGNhbiBmYWlsIGFuZCByYWlzZSBhbiBleGNlcHRpb24sIHdoaWNoIHdpbGwgYmUgY2F1Z2h0IGJ5IHRoZSBoYW5kbGVyLiAqLw0KICBmdW5jdGlvbiBmYWlsYWJsZUltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsNCiAgICAgIGlmIChtZXRhZGF0YSA9PT0gdW5kZWZpbmVkIHx8IG1ldGFkYXRhID09PSBudWxsKSB7DQogICAgICAgICAgdGhyb3cgRXJyb3IoYENhbm5vdCBpbmRleCBmaWxlLCBzaW5jZSBpdCBoYXMgbm8gT2JzaWRpYW4gZmlsZSBtZXRhZGF0YS5gKTsNCiAgICAgIH0NCiAgICAgIHJldHVybiBydW5JbXBvcnQocGF0aCwgY29udGVudHMsIHN0YXQsIG1ldGFkYXRhKTsNCiAgfQ0KICBvbm1lc3NhZ2UgPSBhc3luYyAoZXZ0KSA9PiB7DQogICAgICB0cnkgew0KICAgICAgICAgIGxldCB7IHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSB9ID0gZXZ0LmRhdGE7DQogICAgICAgICAgbGV0IHJlc3VsdCA9IGZhaWxhYmxlSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSk7DQogICAgICAgICAgcG9zdE1lc3NhZ2UoeyBwYXRoOiBldnQuZGF0YS5wYXRoLCByZXN1bHQ6IFRyYW5zZmVyYWJsZS50cmFuc2ZlcmFibGUocmVzdWx0KSB9KTsNCiAgICAgIH0NCiAgICAgIGNhdGNoIChlcnJvcikgew0KICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTsNCiAgICAgICAgICBwb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgIHBhdGg6IGV2dC5kYXRhLnBhdGgsDQogICAgICAgICAgICAgIHJlc3VsdDogew0KICAgICAgICAgICAgICAgICAgJGVycm9yOiBgRmFpbGVkIHRvIGluZGV4IGZpbGU6ICR7ZXZ0LmRhdGEucGF0aH06ICR7ZXJyb3J9YCwNCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICB9KTsNCiAgICAgIH0NCiAgfTsKCn0pKCk7Cgo=', null, false); /* eslint-enable */ /** Controls and creates Dataview file importers, allowing for asynchronous loading and parsing of files. */ @@ -13265,6 +13269,24 @@ var DefaultFunctions; return (_d = resolved === null || resolved === void 0 ? void 0 : resolved.file) === null || _d === void 0 ? void 0 : _d.day; } return null; + }) + .add2("string", "string", (d, f) => { + if (f === "x" || f === "X") { + let match = NUMBER_REGEX.exec(d); + if (match) + return DateTime.fromMillis(Number.parseInt(match[0]) * (f === "X" ? 1000 : 1)); + else { + throw Error("Not a number for format( (${ f }): ${ d }"); + } + } + else { + let parsedDate = DateTime.fromFormat(d, f); + if (parsedDate.isValid) + return parsedDate; + else { + throw Error(`Can't handle format (${f}) on date string (${d})`); + } + } }) .add1("null", () => null) .vectorize(1, [0]) @@ -13703,6 +13725,17 @@ var DefaultFunctions; }); }) .build(); + // Concatenates sub-array elements into a new array + DefaultFunctions.flat = new FunctionBuilder("flat") + .add1("array", a => { + return a.flat(); + }) + .add2("array", "number", (a, n) => { + // @ts-ignore + return a.flat(n); + }) + .add1("null", () => null) + .build(); })(DefaultFunctions || (DefaultFunctions = {})); /** Default function implementations for the expression evaluator. */ const DEFAULT_FUNCTIONS = { @@ -13750,6 +13783,7 @@ const DEFAULT_FUNCTIONS = { containsword: DefaultFunctions.containsword, reverse: DefaultFunctions.reverse, sort: DefaultFunctions.sort, + flat: DefaultFunctions.flat, // Aggregation operations like reduce. reduce: DefaultFunctions.reduce, join: DefaultFunctions.join, @@ -18906,7 +18940,6 @@ class DataviewApi { break; } childComponent.load(); - childComponent.onload(); } /** * Execute the given DataviewJS query, rendering results into the given container using the components lifecycle. @@ -19152,9 +19185,10 @@ class InlineWidget extends view.WidgetType { if (event.shiftKey) { // Set the cursor after the element so that it doesn't select starting from the last cursor position. if (currentPos) { - //@ts-ignore - const { editor } = this.view.state.field(obsidian.editorEditorField).state.field(obsidian.editorViewField); - editor.setCursor(editor.offsetToPos(currentPos)); + const { editor } = this.view.state.field(obsidian.editorInfoField); + if (editor) { + editor.setCursor(editor.offsetToPos(currentPos)); + } } return false; } @@ -19162,75 +19196,188 @@ class InlineWidget extends view.WidgetType { return true; } } -function getCssClasses(nodeName) { +function getCssClasses(props) { const classes = []; - if (nodeName.includes("strong")) { + if (props.has("strong")) { classes.push("cm-strong"); } - if (nodeName.includes("em")) { + if (props.has("em")) { classes.push("cm-em"); } - if (nodeName.includes("highlight")) { + if (props.has("highlight")) { classes.push("cm-highlight"); } - if (nodeName.includes("strikethrough")) { + if (props.has("strikethrough")) { classes.push("cm-strikethrough"); } - if (nodeName.includes("comment")) { + if (props.has("comment")) { classes.push("cm-comment"); } return classes; } -function inlineRender(view$1, index, dvSettings, api) { - // still doesn't work as expected for tables and callouts - if (!index.initialized) - return; - const currentFile = app.workspace.getActiveFile(); - if (!currentFile) - return; - const widgets = []; - const selection = view$1.state.selection; - /* before: - * em for italics - * highlight for highlight - * after: - * strong for bold - * strikethrough for strikethrough - */ - const regex = new RegExp(".*?_?inline-code_?.*"); - const PREAMBLE = "const dataview=this;const dv=this;"; - for (const { from, to } of view$1.visibleRanges) { - language.syntaxTree(view$1.state).iterate({ - from, - to, - enter: ({ node }) => { - const type = node.type; - // markdown formatting symbols - if (type.name.includes("formatting")) - return; - // current node is not inline code - if (!regex.test(type.name)) +function inlinePlugin(app, index, settings, api) { + return view.ViewPlugin.fromClass(class { + constructor(view$1) { + var _a; + this.component = new obsidian.Component(); + this.component.load(); + this.decorations = (_a = this.inlineRender(view$1)) !== null && _a !== void 0 ? _a : view.Decoration.none; + } + update(update) { + var _a; + // only activate in LP and not source mode + if (!update.state.field(obsidian.editorLivePreviewField)) { + this.decorations = view.Decoration.none; + return; + } + if (update.docChanged) { + this.decorations = this.decorations.map(update.changes); + this.updateTree(update.view); + } + else if (update.selectionSet) { + this.updateTree(update.view); + } + else if (update.viewportChanged /*|| update.selectionSet*/) { + this.decorations = (_a = this.inlineRender(update.view)) !== null && _a !== void 0 ? _a : view.Decoration.none; + } + } + updateTree(view) { + for (const { from, to } of view.visibleRanges) { + language.syntaxTree(view.state).iterate({ + from, + to, + enter: ({ node }) => { + const { render, isQuery } = this.renderNode(view, node); + if (!render && isQuery) { + this.removeDeco(node); + return; + } + else if (!render) { + return; + } + else if (render) { + this.addDeco(node, view); + } + }, + }); + } + } + removeDeco(node) { + this.decorations.between(node.from - 1, node.to + 1, (from, to, value) => { + this.decorations = this.decorations.update({ + filterFrom: from, + filterTo: to, + filter: (from, to, value) => false, + }); + }); + } + addDeco(node, view) { + var _a; + const from = node.from - 1; + const to = node.to + 1; + let exists = false; + this.decorations.between(from, to, (from, to, value) => { + exists = true; + }); + if (!exists) { + const currentFile = app.workspace.getActiveFile(); + if (!currentFile) return; + const newDeco = (_a = this.renderWidget(node, view, currentFile)) === null || _a === void 0 ? void 0 : _a.value; + if (newDeco) { + this.decorations = this.decorations.update({ + add: [{ from: from, to: to, value: newDeco }], + }); + } + } + } + // checks whether a node should get rendered/unrendered + renderNode(view, node) { + const type = node.type; + // current node is inline code + const tokenProps = type.prop(language.tokenClassNodeProp); + const props = new Set(tokenProps === null || tokenProps === void 0 ? void 0 : tokenProps.split(" ")); + if (props.has("inline-code") && !props.has("formatting")) { // contains the position of inline code const start = node.from; const end = node.to; // don't continue if current cursor position and inline code node (including formatting // symbols) overlap - if (selectionAndRangeOverlap(selection, start - 1, end + 1)) - return; - const text = view$1.state.doc.sliceString(start, end); - let code = ""; - let result = ""; - const el = createSpan({ - cls: ["dataview", "dataview-inline"], + const selection = view.state.selection; + if (selectionAndRangeOverlap(selection, start - 1, end + 1)) { + if (this.isInlineQuery(view, start, end)) { + return { render: false, isQuery: true }; + } + else { + return { render: false, isQuery: false }; + } + } + else if (this.isInlineQuery(view, start, end)) { + return { render: true, isQuery: true }; + } + } + return { render: false, isQuery: false }; + } + isInlineQuery(view, start, end) { + const text = view.state.doc.sliceString(start, end); + const isInlineQuery = text.startsWith(settings.inlineQueryPrefix) || text.startsWith(settings.inlineJsQueryPrefix); + return isInlineQuery; + } + inlineRender(view$1) { + // still doesn't work as expected for tables and callouts + if (!index.initialized) + return; + const currentFile = app.workspace.getActiveFile(); + if (!currentFile) + return; + const widgets = []; + /* before: + * em for italics + * highlight for highlight + * after: + * strong for bold + * strikethrough for strikethrough + */ + for (const { from, to } of view$1.visibleRanges) { + language.syntaxTree(view$1.state).iterate({ + from, + to, + enter: ({ node }) => { + if (!this.renderNode(view$1, node).render) + return; + const widget = this.renderWidget(node, view$1, currentFile); + if (widget) { + widgets.push(widget); + } + }, }); - /* If the query result is predefined text (e.g. in the case of errors), set innerText to it. - * Otherwise, pass on an empty element and fill it in later. - * This is necessary because {@link InlineWidget.toDOM} is synchronous but some rendering - * asynchronous. - */ - if (dvSettings.inlineQueryPrefix.length > 0 && text.startsWith(dvSettings.inlineQueryPrefix)) { - code = text.substring(dvSettings.inlineQueryPrefix.length).trim(); + } + return view.Decoration.set(widgets, true); + } + renderWidget(node, view$1, currentFile) { + const type = node.type; + // contains the position of inline code + const start = node.from; + const end = node.to; + // safety net against unclosed inline code + if (view$1.state.doc.sliceString(end, end + 1) === "\n") { + return; + } + const text = view$1.state.doc.sliceString(start, end); + let code = ""; + let result = ""; + const PREAMBLE = "const dataview=this;const dv=this;"; + const el = createSpan({ + cls: ["dataview", "dataview-inline"], + }); + /* If the query result is predefined text (e.g. in the case of errors), set innerText to it. + * Otherwise, pass on an empty element and fill it in later. + * This is necessary because {@link InlineWidget.toDOM} is synchronous but some rendering + * asynchronous. + */ + if (text.startsWith(settings.inlineQueryPrefix)) { + if (settings.enableInlineDataview) { + code = text.substring(settings.inlineQueryPrefix.length).trim(); const field = tryOrPropogate(() => parseField(code)); if (!field.successful) { result = `Dataview (inline field '${code}'): ${field.error}`; @@ -19238,7 +19385,7 @@ function inlineRender(view$1, index, dvSettings, api) { } else { const fieldValue = field.value; - const intermediateResult = tryOrPropogate(() => executeInline(fieldValue, currentFile.path, index, dvSettings)); + const intermediateResult = tryOrPropogate(() => executeInline(fieldValue, currentFile.path, index, settings)); if (!intermediateResult.successful) { result = `Dataview (for inline query '${fieldValue}'): ${intermediateResult.error}`; el.innerText = result; @@ -19246,74 +19393,61 @@ function inlineRender(view$1, index, dvSettings, api) { else { const { value } = intermediateResult; result = value; - renderValue(result, el, currentFile.path, null, dvSettings); + renderValue(result, el, currentFile.path, this.component, settings); } } } - else if (dvSettings.inlineJsQueryPrefix.length > 0 && - text.startsWith(dvSettings.inlineJsQueryPrefix)) { - if (dvSettings.enableInlineDataviewJs) { - code = text.substring(dvSettings.inlineJsQueryPrefix.length).trim(); - try { - // for setting the correct context for dv/dataview - const myEl = createDiv(); - const dvInlineApi = new DataviewInlineApi(api, null, myEl, currentFile.path); - if (code.includes("await")) { - evalInContext("(async () => { " + PREAMBLE + code + " })()").then((result) => { - renderValue(result, el, currentFile.path, null, dvSettings); - }); - } - else { - result = evalInContext(PREAMBLE + code); - renderValue(result, el, currentFile.path, null, dvSettings); - } - function evalInContext(script) { - return function () { - return eval(script); - }.call(dvInlineApi); - } + else { + result = "(disabled; enable in settings)"; + el.innerText = result; + } + } + else if (text.startsWith(settings.inlineJsQueryPrefix)) { + if (settings.enableInlineDataviewJs) { + code = text.substring(settings.inlineJsQueryPrefix.length).trim(); + try { + // for setting the correct context for dv/dataview + const myEl = createDiv(); + const dvInlineApi = new DataviewInlineApi(api, this.component, myEl, currentFile.path); + if (code.includes("await")) { + evalInContext("(async () => { " + PREAMBLE + code + " })()").then((result) => { + renderValue(result, el, currentFile.path, this.component, settings); + }); } - catch (e) { - result = `Dataview (for inline JS query '${code}'): ${e}`; - el.innerText = result; + else { + result = evalInContext(PREAMBLE + code); + renderValue(result, el, currentFile.path, this.component, settings); + } + function evalInContext(script) { + return function () { + return eval(script); + }.call(dvInlineApi); } } - else { - result = "(disabled; enable in settings)"; + catch (e) { + result = `Dataview (for inline JS query '${code}'): ${e}`; el.innerText = result; } } else { - return; + result = "(disabled; enable in settings)"; + el.innerText = result; } - const classes = getCssClasses(type.name); - widgets.push(view.Decoration.replace({ - widget: new InlineWidget(classes, code, el, view$1), - inclusive: false, - block: false, - }).range(start - 1, end + 1)); - }, - }); - } - return view.Decoration.set(widgets, true); -} -function inlinePlugin(index, settings, api) { - return view.ViewPlugin.fromClass(class { - constructor(view$1) { - var _a; - this.decorations = (_a = inlineRender(view$1, index, settings, api)) !== null && _a !== void 0 ? _a : view.Decoration.none; - } - update(update) { - var _a; - // only activate in LP and not source mode - //@ts-ignore - if (!update.state.field(obsidian.editorLivePreviewField)) { - this.decorations = view.Decoration.none; + } + else { return; } - if (update.docChanged || update.viewportChanged || update.selectionSet) { - this.decorations = (_a = inlineRender(update.view, index, settings, api)) !== null && _a !== void 0 ? _a : view.Decoration.none; - } + const tokenProps = type.prop(language.tokenClassNodeProp); + const props = new Set(tokenProps === null || tokenProps === void 0 ? void 0 : tokenProps.split(" ")); + const classes = getCssClasses(props); + return view.Decoration.replace({ + widget: new InlineWidget(classes, code, el, view$1), + inclusive: false, + block: false, + }).range(start - 1, end + 1); + } + destroy() { + this.component.unload(); } }, { decorations: v => v.decorations }); } @@ -19366,8 +19500,10 @@ class DataviewPlugin extends obsidian.Plugin { } }); // editor extension for inline queries - this.cmExtension = [inlinePlugin(this.index, this.settings, this.api)]; - this.registerEditorExtension(this.cmExtension); + if (this.settings.enableInlineDataview || this.settings.enableInlineDataviewJs) { + this.cmExtension = [inlinePlugin(this.app, this.index, this.settings, this.api)]; + this.registerEditorExtension(this.cmExtension); + } // Dataview "force refresh" operation. this.addCommand({ id: "dataview-force-refresh-views", @@ -19749,4 +19885,4 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { } module.exports = DataviewPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9lcnJvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvc3lzdGVtWm9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvbG9jYWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9maXhlZE9mZnNldFpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmVzL2ludmFsaWRab25lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3pvbmVVdGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9zZXR0aW5ncy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC91dGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2VuZ2xpc2guanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0dGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2ludmFsaWQuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvcmVnZXhQYXJzZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2R1cmF0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbnRlcnZhbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW5mby5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWZmLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2RpZ2l0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC90b2tlblBhcnNlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9jb252ZXJzaW9ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvZGF0ZXRpbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2x1eG9uLmpzIiwiLi4vc3JjL3NldHRpbmdzLnRzIiwiLi4vc3JjL2FwaS9yZXN1bHQudHMiLCIuLi9ub2RlX21vZHVsZXMvcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4LmpzIiwiLi4vc3JjL3V0aWwvbm9ybWFsaXplLnRzIiwiLi4vc3JjL2RhdGEtbW9kZWwvdmFsdWUudHMiLCIuLi9zcmMvYXBpL2RhdGEtYXJyYXkudHMiLCIuLi9zcmMvdXRpbC9sb2NhbGUudHMiLCIuLi9zcmMvdWkvcmVuZGVyLnRzIiwiLi4vbm9kZV9tb2R1bGVzL3BhcGFwYXJzZS9wYXBhcGFyc2UubWluLmpzIiwiLi4vc3JjL2V4cHJlc3Npb24vZmllbGQudHMiLCIuLi9zcmMvZGF0YS1pbmRleC9zb3VyY2UudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9wYXJzZS50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9pbmxpbmUtZmllbGQudHMiLCIuLi9zcmMvZGF0YS1tb2RlbC9tYXJrZG93bi50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9tYXJrZG93bi1maWxlLnRzIiwiLi4vc3JjL2RhdGEtaW1wb3J0L2Nzdi50cyIsIi4uL3NyYy9kYXRhLW1vZGVsL3RyYW5zZmVyYWJsZS50cyIsIi4uL25vZGVfbW9kdWxlcy9sb2NhbGZvcmFnZS9kaXN0L2xvY2FsZm9yYWdlLmpzIiwiLi4vc3JjL2RhdGEtaW1wb3J0L3BlcnNpc3Rlci50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC93ZWItd29ya2VyL2ltcG9ydC1tYW5hZ2VyLnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvaW5kZXgudHMiLCIuLi9zcmMvZGF0YS1pbmRleC9yZXNvbHZlci50cyIsIi4uL3NyYy9leHByZXNzaW9uL2Z1bmN0aW9ucy50cyIsIi4uL3NyYy9leHByZXNzaW9uL2JpbmFyeW9wLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vY29udGV4dC50cyIsIi4uL3NyYy9xdWVyeS9lbmdpbmUudHMiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFyZS12ZXJzaW9ucy9pbmRleC5tanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2Rpc3QvcHJlYWN0Lm1vZHVsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcmVhY3QvaG9va3MvZGlzdC9ob29rcy5tb2R1bGUuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9kaXN0L2NvbXBhdC5tb2R1bGUuanMiLCIuLi9zcmMvdXRpbC9tZWRpYS50cyIsIi4uL3NyYy91aS9tYXJrZG93bi50c3giLCIuLi9zcmMvdWkvdmlld3MvdGFzay12aWV3LnRzeCIsIi4uL3NyYy91aS92aWV3cy9saXN0LXZpZXcudHN4IiwiLi4vc3JjL3VpL3ZpZXdzL3RhYmxlLXZpZXcudHN4IiwiLi4vc3JjL3F1ZXJ5L3F1ZXJ5LnRzIiwiLi4vc3JjL3F1ZXJ5L3BhcnNlLnRzIiwiLi4vbm9kZV9tb2R1bGVzL29ic2lkaWFuLWNhbGVuZGFyLXVpL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL3VpL3JlZnJlc2hhYmxlLXZpZXcudHMiLCIuLi9zcmMvdWkvdmlld3MvY2FsZW5kYXItdmlldy50cyIsIi4uL3NyYy9hcGkvaW5saW5lLWFwaS50cyIsIi4uL3NyYy91aS92aWV3cy9qcy12aWV3LnRzIiwiLi4vc3JjL3VpL2V4cG9ydC9tYXJrZG93bi50cyIsIi4uL3NyYy9hcGkvcGx1Z2luLWFwaS50cyIsIi4uL3NyYy91aS92aWV3cy9pbmxpbmUtdmlldy50cyIsIi4uL3NyYy91aS92aWV3cy9pbmxpbmUtZmllbGQudHN4IiwiLi4vc3JjL3VpL2xwLXJlbmRlci50cyIsIi4uL3NyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpudWxsLCJuYW1lcyI6WyJuIiwicyIsImwiLCJzaW5nbGV0b24iLCJFbmdsaXNoLmZvcm1hdFJlbGF0aXZlVGltZSIsIkVuZ2xpc2gubW9udGhzIiwiRW5nbGlzaC53ZWVrZGF5cyIsIkVuZ2xpc2gubWVyaWRpZW1zIiwiRW5nbGlzaC5lcmFzIiwiRm9ybWF0cy5EQVRFX1NIT1JUIiwiRm9ybWF0cy5EQVRFX01FRCIsIkZvcm1hdHMuREFURV9GVUxMIiwiRm9ybWF0cy5EQVRFX0hVR0UiLCJGb3JtYXRzLlRJTUVfU0lNUExFIiwiRm9ybWF0cy5USU1FX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuVElNRV9XSVRIX1NIT1JUX09GRlNFVCIsIkZvcm1hdHMuVElNRV9XSVRIX0xPTkdfT0ZGU0VUIiwiRm9ybWF0cy5USU1FXzI0X1NJTVBMRSIsIkZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCIsIkZvcm1hdHMuREFURVRJTUVfU0hPUlQiLCJGb3JtYXRzLkRBVEVUSU1FX01FRCIsIkZvcm1hdHMuREFURVRJTUVfRlVMTCIsIkZvcm1hdHMuREFURVRJTUVfSFVHRSIsIkZvcm1hdHMuREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5EQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMiLCJFbmdsaXNoLm1lcmlkaWVtRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLm1vbnRoRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLndlZWtkYXlGb3JEYXRlVGltZSIsIkVuZ2xpc2guZXJhRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLm1vbnRoc1Nob3J0IiwiRW5nbGlzaC53ZWVrZGF5c0xvbmciLCJFbmdsaXNoLndlZWtkYXlzU2hvcnQiLCJJTlZBTElEIiwib3JkZXJlZFVuaXRzIiwiY2xvbmUiLCJGb3JtYXRzLkRBVEVfTUVEX1dJVEhfV0VFS0RBWSIsIkZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWSIsInRoaXMiLCJQLmFsdCIsIlAucmVnZXgiLCJQLndoaXRlc3BhY2UiLCJQLmFueSIsIk1hcmtkb3duUmVuZGVyZXIiLCJQLnNlcU1hcCIsIlAuc2VxIiwiUC5vcHRXaGl0ZXNwYWNlIiwiUC5jdXN0b20iLCJQLmNyZWF0ZUxhbmd1YWdlIiwiUC5yZWdleHAiLCJQLnN0cmluZyIsIlAubm9uZU9mIiwiUC5zdWNjZWVkIiwiUC5mYWlsIiwiTGlzdEl0ZW0iLCJQYXBhLnBhcnNlIiwicmVxdWlyZSIsImdsb2JhbCIsIkNvbXBvbmVudCIsIkRhdGF2aWV3SW1wb3J0V29ya2VyIiwiVEZpbGUiLCJURm9sZGVyIiwidSIsInQiLCJvIiwiciIsImYiLCJlIiwiYyIsImEiLCJoIiwidiIsInkiLCJwIiwiZCIsIl8iLCJrIiwiYiIsIm0iLCJnIiwiaiIsInoiLCJ3IiwieCIsIlAiLCJOIiwiTSIsIkEiLCJDIiwiSCIsIiQiLCJUIiwiSSIsIk8iLCJMIiwiUyIsInEiLCJCIiwiRCIsIkYiLCJpIiwiY3JlYXRlQ29udGV4dCIsInVzZVJlZiIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJGcmFnbWVudCIsInVzZVN0YXRlIiwiTWFya2Rvd25SZW5kZXJDaGlsZCIsInJlbmRlciIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJQbGF0Zm9ybSIsIlJlc3VsdENvdW50IiwiUC5zZXBCeSIsIldpZGdldFR5cGUiLCJlZGl0b3JFZGl0b3JGaWVsZCIsImVkaXRvclZpZXdGaWVsZCIsInZpZXciLCJzeW50YXhUcmVlIiwiRGVjb3JhdGlvbiIsIlZpZXdQbHVnaW4iLCJlZGl0b3JMaXZlUHJldmlld0ZpZWxkIiwiUGx1Z2luIiwiZGVib3VuY2UiLCJQbHVnaW5TZXR0aW5nVGFiIiwiU2V0dGluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FB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Q0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUM3RixJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ2hELElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7QUFDOUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQztBQUMvRixNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ2hELElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDcEQsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQztBQUNyRDtBQUNBO0FBQ0EsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3JFLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDOUIsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtB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QUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPQSxTQUFPLENBQUM7QUFDdEMsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxHQUFHO0FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPQSxTQUFPLENBQUM7QUFDdEMsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRTtBQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU9BLFNBQU8sQ0FBQztBQUN0QyxJQUFJLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakUsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsR0FBRyxLQUFLLEVBQUUsR0FBRyxF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SUFBSSxDQUFDLENBQUM7QUFDZixNQUFNLElBQUk7QUFDVixNQUFNLEtBQUs7QUFDWCxNQUFNLEdBQUc7QUFDVCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RCxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM1QixRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7QUFDakMsS0FBSztBQUNMLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7QUFDdEMsTUFBTSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDOUMsTUFBTSxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDdkQsTUFBTSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDakQsTUFBTSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDOUMsTUFBTSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDM0MsTUFBTSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7QUFDdEIsTUFBTSxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87QUFDMUIsTUFBTSxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87QUFDMUIsTUFBTSxZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7QUFDcEMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLGNB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RyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0MsR0FBRyxNQUFNO0FBQ1QsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQ2YsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtBQUN4QyxFQUFFLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLO0FBQzNELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksS0FBSztBQUMxQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUQsTUFBTSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0QsTUFBTSxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTCxJQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSztBQUN2QixNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtBQUN2QyxVQUFVLE9BQU8sR0FBRyxD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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTSxXQUFXLEVBQUUsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrRkFBK0YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsMkVBQTJFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywwREFBMEQsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFNLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdJQUFnSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FB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LENBQUMsRUFBRSxDQUFjLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxZQUFZLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGNBQWMsWUFBWSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFNLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0RBQWtELENBQUMsQ0FBQyxDQUFDLGtOQUFrTixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLDREQUE0RCxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssWUFBWSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFB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UUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVuQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2QyxLQUFLLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUV0QyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUN6QyxDQUFDO0FBRUY7QUFDTyxNQUFNLGVBQWUsR0FBRztBQUMzQixJQUFBLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDM0IsSUFBQSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUM1QyxJQUFBLFNBQVMsRUFBRSxNQUNQLFFBQVEsQ0FBQyxLQUFLLEVBQUU7U0FDWCxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRCxJQUFBLFFBQVEsRUFBRSxNQUNOLFFBQVEsQ0FBQyxLQUFLLEVBQUU7U0FDWCxPQUFPLENBQUMsS0FBSyxDQUFD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LEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUM7O1lBQ3BGLE9BQU8sQ0FBQSxFQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUM7S0FDN0M7SUFFTSxPQUFPLEdBQUE7O0FBQ1YsUUFBQSxPQUFPLENBQUEsRUFBQSxJQUFDLENBQUEsRUFBQSxHQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQUcsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsQ0FBQyxDQUFDLENBQUM7S0FDbkc7SUFFTSxHQUFHLEdBQUE7O0FBQ04sUUFBQSxPQUFPLENBQUEsRUFBQSxJQUFDLENBQUEsRUFBQSxHQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQUcsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsQ0FBQyxDQUFDLENBQUM7S0FDbkc7SUFFTSxTQUFTLEdB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QUFJLENBQUM7QUFDN0IsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxHQUFHLEdBQWlCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztBQUN0RCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0IsU0FBQSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLFNBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssZ0JBQUEsQ0FBQSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDekMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxNQUFNLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxnQkFBQSxDQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLEdBQUcsR0FBaUIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO0FBQ3RELFNBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxN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QUNyRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFpQixJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDaEUsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMvRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsT0FBTyxHQUFpQixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUM7U0FDOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3JGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxRQUFRLEdBQWlCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztTQUNoRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDNUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDbkYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFNBQVMsR0FBaUIsSUFBSSxlQUFlLENBQUMsV0FBVyxDQUFDO0FBQ2xFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbEYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBaUIsSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDO0FBQ2hFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEtBQUk7UUFDeEQsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ3JDLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6RSxTQUFBO0FBQU0sYUFBQTtBQUNILFlBQUEsT0FBTyxHQUFHLENBQUM7QUFDZCxTQUFBO0FBQ0wsS0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxnQkFBQSxDQUFBLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNqRixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQztBQUNqRCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0RCxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNsRCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUM7QUFDOUMsU0FBQSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQztBQUM1RSxTQUFBLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUM7QUFDOUMsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxD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QUFDLENBQUM7QUFDN0QsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxHQUFHLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlELFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztTQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxD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QUFJLENBQUEsQ0FBQSxFQUFJLEVBQUUsQ0FBSSxDQUFBLEVBQUEsS0FBSyxFQUFFLENBQUM7S0FDbkM7QUFDSixDQUFBO0FBRUQ7QUFDTSxTQUFVLGVBQWUsQ0FBQyxjQUFxQyxFQUFBO0FBQ2pFLElBQUEsUUFDSSxlQUFlLENBQUMsTUFBTSxFQUFFOztTQUVuQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7O1NBRWpFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUUzRSxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzs7QUFFbEQsU0FBQSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pGLFNBQUEsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqRixTQUFBLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUUzRSxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUk7UUFDcEMsT0FBTyxpQkFBaUIsQ0FDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUN4RixDQUFDO0FBQ04sS0FBQyxDQUFDO1NBQ0QsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZELFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7U0FFMUQsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0UsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUUsU0FBQSxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLFNBQUEsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7U0FFNUYsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBTSxFQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7O1NBRWhGLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztBQUVwRSxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUN0RDtBQUNOOztBQzdJQTtBQXNCQTs7O0FBR0c7TUFDVSxPQUFPLENBQUE7QUFDaEI7OztBQUdHO0FBQ0gsSUFBQSxXQUFBLENBQ1csV0FBd0IsRUFDeEIsUUFBdUIsRUFDdkIsT0FBQSxHQUFt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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9DLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFVixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRS9ELEdBQUMsQ0FBQyxLQUFLLEVBQUVBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMwRSxHQUFDLEVBQUUsQ0FBQyxPQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBT0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRWYsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDZ0IsR0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFZCxHQUFDLEdBQUdsRSxHQUFDLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDa0UsR0FBQyxDQUFDbEUsR0FBQyxDQUFDLGlCQUFpQixHQUFHaUUsR0FBQyxFQUFFZSxHQUFDLEVBQUMsQ0FBQyxTQUFTQSxHQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDaEIsR0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDTSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ1csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQ0osR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUNLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUVKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVkLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDSSxHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQ0UsR0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDUSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFYixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ2dCLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUNSLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNTLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFNUYsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTMkYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxDQUFDQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNELEdBQUMsQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyx5QkFBeUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDN0YsR0FBQyxDQUFDLEtBQUssQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTNEYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUYsR0FBQyxDQUFDLEtBQUssQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTaUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNqRixHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJNEUsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDa0IsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQ3hCLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUN0RSxHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQ3NFLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBR0ssR0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUNZLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDL0YsR0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTa0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2xGLEdBQUMsQ0FBQyxHQUFHLEVBQUVBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTK0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTNCLEdBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUdxQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDTixHQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDdkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTc0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUd0RixHQUFDLENBQUMsT0FBTyxFQUFFQSxHQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUV1RixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUN2RixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRXNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVmLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLFNBQVN1QixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNoRyxHQUFDLENBQUMsRUFBRSxFQUFFQSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNpRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDVCxHQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRVAsR0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUNjLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU2UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUMsRUFBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUIsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTMEIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDaEMsR0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUNZLEdBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ1YsR0FBQyxDQUFDLEtBQUssQ0FBQ3JFLEdBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMrRCxHQUFDLENBQUMsQ0FBQyxDQUF1RGEsR0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUNOLEdBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDUyxHQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDSCxHQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUNILEdBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDRCxHQUFDLENBQUNYLEdBQUMsQ0FBQyxFQUFFLENBQUNDLEdBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQ2UsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNiLEdBQUMsQ0FBQyxDQUFDOztBQ0FuaVQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDckUsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxFQUFFQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNxRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ3JGLEdBQUMsQ0FBQyxHQUFHLEVBQUUrRSxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMvRSxHQUFDLENBQUMsR0FBRyxFQUFFK0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9BLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTWSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVNSLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM5RixHQUFDLENBQUMsYUFBYSxFQUFFQSxHQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQWlLLFNBQVNzRixHQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDbkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNrRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDbkYsR0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQSxHQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFc0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUN0RixHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNrRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDbkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQ2tGLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFbEYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxxQkFBcUIsQ0FBQyxTQUFTa0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNNLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FDQWgvRCxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUNwRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUl1RSxHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNDLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQ0ksR0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQUssZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNKLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPeEUsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUN3RSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUlELEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFdkUsR0FBQyxDQUFDeUUsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDekUsR0FBQyxDQUFDeUUsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUNFLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMzRSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixHQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSXVFLEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQ0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQywyT0FBMk8sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDVCxHQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQ0EsR0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0MsR0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLGNBQWMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNJLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNKLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRyxDQUFDLENBQUksSUFBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFhLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU94RSxHQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMwRSxHQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBR0MsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFJLElB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9lcnJvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvc3lzdGVtWm9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvbG9jYWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9maXhlZE9mZnNldFpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmVzL2ludmFsaWRab25lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3pvbmVVdGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9zZXR0aW5ncy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC91dGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2VuZ2xpc2guanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0dGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2ludmFsaWQuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvcmVnZXhQYXJzZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2R1cmF0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbnRlcnZhbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW5mby5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWZmLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2RpZ2l0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC90b2tlblBhcnNlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9jb252ZXJzaW9ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvZGF0ZXRpbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2x1eG9uLmpzIiwiLi4vc3JjL3NldHRpbmdzLnRzIiwiLi4vc3JjL2FwaS9yZXN1bHQudHMiLCIuLi9ub2RlX21vZHVsZXMvcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4LmpzIiwiLi4vc3JjL3V0aWwvbm9ybWFsaXplLnRzIiwiLi4vc3JjL2RhdGEtbW9kZWwvdmFsdWUudHMiLCIuLi9zcmMvYXBpL2RhdGEtYXJyYXkudHMiLCIuLi9zcmMvdXRpbC9sb2NhbGUudHMiLCIuLi9zcmMvdWkvcmVuZGVyLnRzIiwiLi4vbm9kZV9tb2R1bGVzL3BhcGFwYXJzZS9wYXBhcGFyc2UubWluLmpzIiwiLi4vc3JjL2V4cHJlc3Npb24vZmllbGQudHMiLCIuLi9zcmMvZGF0YS1pbmRleC9zb3VyY2UudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9wYXJzZS50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9pbmxpbmUtZmllbGQudHMiLCIuLi9zcmMvZGF0YS1tb2RlbC9tYXJrZG93bi50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9tYXJrZG93bi1maWxlLnRzIiwiLi4vc3JjL2RhdGEtaW1wb3J0L2Nzdi50cyIsIi4uL3NyYy9kYXRhLW1vZGVsL3RyYW5zZmVyYWJsZS50cyIsIi4uL25vZGVfbW9kdWxlcy9sb2NhbGZvcmFnZS9kaXN0L2xvY2FsZm9yYWdlLmpzIiwiLi4vc3JjL2RhdGEtaW1wb3J0L3BlcnNpc3Rlci50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC93ZWItd29ya2VyL2ltcG9ydC1tYW5hZ2VyLnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvaW5kZXgudHMiLCIuLi9zcmMvZGF0YS1pbmRleC9yZXNvbHZlci50cyIsIi4uL3NyYy9leHByZXNzaW9uL2Z1bmN0aW9ucy50cyIsIi4uL3NyYy9leHByZXNzaW9uL2JpbmFyeW9wLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vY29udGV4dC50cyIsIi4uL3NyYy9xdWVyeS9lbmdpbmUudHMiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFyZS12ZXJzaW9ucy9pbmRleC5tanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2Rpc3QvcHJlYWN0Lm1vZHVsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcmVhY3QvaG9va3MvZGlzdC9ob29rcy5tb2R1bGUuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9kaXN0L2NvbXBhdC5tb2R1bGUuanMiLCIuLi9zcmMvdXRpbC9tZWRpYS50cyIsIi4uL3NyYy91aS9tYXJrZG93bi50c3giLCIuLi9zcmMvdWkvdmlld3MvdGFzay12aWV3LnRzeCIsIi4uL3NyYy91aS92aWV3cy9saXN0LXZpZXcudHN4IiwiLi4vc3JjL3VpL3ZpZXdzL3RhYmxlLXZpZXcudHN4IiwiLi4vc3JjL3F1ZXJ5L3F1ZXJ5LnRzIiwiLi4vc3JjL3F1ZXJ5L3BhcnNlLnRzIiwiLi4vbm9kZV9tb2R1bGVzL29ic2lkaWFuLWNhbGVuZGFyLXVpL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL3VpL3JlZnJlc2hhYmxlLXZpZXcudHMiLCIuLi9zcmMvdWkvdmlld3MvY2FsZW5kYXItdmlldy50cyIsIi4uL3NyYy9hcGkvaW5saW5lLWFwaS50cyIsIi4uL3NyYy91aS92aWV3cy9qcy12aWV3LnRzIiwiLi4vc3JjL3VpL2V4cG9ydC9tYXJrZG93bi50cyIsIi4uL3NyYy9hcGkvcGx1Z2luLWFwaS50cyIsIi4uL3NyYy91aS92aWV3cy9pbmxpbmUtdmlldy50cyIsIi4uL3NyYy91aS92aWV3cy9pbmxpbmUtZmllbGQudHN4IiwiLi4vc3JjL3VpL2xwLXJlbmRlci50cyIsIi4uL3NyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpudWxsLCJuYW1lcyI6WyJuIiwicyIsImwiLCJzaW5nbGV0b24iLCJFbmdsaXNoLmZvcm1hdFJlbGF0aXZlVGltZSIsIkVuZ2xpc2gubW9udGhzIiwiRW5nbGlzaC53ZWVrZGF5cyIsIkVuZ2xpc2gubWVyaWRpZW1zIiwiRW5nbGlzaC5lcmFzIiwiRm9ybWF0cy5EQVRFX1NIT1JUIiwiRm9ybWF0cy5EQVRFX01FRCIsIkZvcm1hdHMuREFURV9GVUxMIiwiRm9ybWF0cy5EQVRFX0hVR0UiLCJGb3JtYXRzLlRJTUVfU0lNUExFIiwiRm9ybWF0cy5USU1FX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuVElNRV9XSVRIX1NIT1JUX09GRlNFVCIsIkZvcm1hdHMuVElNRV9XSVRIX0xPTkdfT0ZGU0VUIiwiRm9ybWF0cy5USU1FXzI0X1NJTVBMRSIsIkZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCIsIkZvcm1hdHMuREFURVRJTUVfU0hPUlQiLCJGb3JtYXRzLkRBVEVUSU1FX01FRCIsIkZvcm1hdHMuREFURVRJTUVfRlVMTCIsIkZvcm1hdHMuREFURVRJTUVfSFVHRSIsIkZvcm1hdHMuREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5EQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMiLCJFbmdsaXNoLm1lcmlkaWVtRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLm1vbnRoRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLndlZWtkYXlGb3JEYXRlVGltZSIsIkVuZ2xpc2guZXJhRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLm1vbnRoc1Nob3J0IiwiRW5nbGlzaC53ZWVrZGF5c0xvbmciLCJFbmdsaXNoLndlZWtkYXlzU2hvcnQiLCJJTlZBTElEIiwib3JkZXJlZFVuaXRzIiwiY2xvbmUiLCJGb3JtYXRzLkRBVEVfTUVEX1dJVEhfV0VFS0RBWSIsIkZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWSIsInRoaXMiLCJQLmFsdCIsIlAucmVnZXgiLCJQLndoaXRlc3BhY2UiLCJQLmFueSIsIk1hcmtkb3duUmVuZGVyZXIiLCJQLnNlcU1hcCIsIlAuc2VxIiwiUC5vcHRXaGl0ZXNwYWNlIiwiUC5jdXN0b20iLCJQLmNyZWF0ZUxhbmd1YWdlIiwiUC5yZWdleHAiLCJQLnN0cmluZyIsIlAubm9uZU9mIiwiUC5zdWNjZWVkIiwiUC5mYWlsIiwiTGlzdEl0ZW0iLCJQYXBhLnBhcnNlIiwicmVxdWlyZSIsImdsb2JhbCIsIkNvbXBvbmVudCIsIkRhdGF2aWV3SW1wb3J0V29ya2VyIiwiVEZpbGUiLCJURm9sZGVyIiwidSIsInQiLCJvIiwiciIsImYiLCJlIiwiYyIsImEiLCJoIiwidiIsInkiLCJwIiwiZCIsIl8iLCJrIiwiYiIsIm0iLCJnIiwiaiIsInoiLCJ3IiwieCIsIlAiLCJOIiwiTSIsIkEiLCJDIiwiSCIsIiQiLCJUIiwiSSIsIk8iLCJMIiwiUyIsInEiLCJCIiwiRCIsIkYiLCJpIiwiY3JlYXRlQ29udGV4dCIsInVzZVJlZiIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJGcmFnbWVudCIsInVzZVN0YXRlIiwiTWFya2Rvd25SZW5kZXJDaGlsZCIsInJlbmRlciIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJQbGF0Zm9ybSIsIlJlc3VsdENvdW50IiwiUC5zZXBCeSIsIldpZGdldFR5cGUiLCJlZGl0b3JJbmZvRmllbGQiLCJWaWV3UGx1Z2luIiwidmlldyIsIkRlY29yYXRpb24iLCJlZGl0b3JMaXZlUHJldmlld0ZpZWxkIiwic3ludGF4VHJlZSIsInRva2VuQ2xhc3NOb2RlUHJvcCIsIlBsdWdpbiIsImRlYm91bmNlIiwiUGx1Z2luU2V0dGluZ1RhYiIsIlNldHRpbmciXSwibWFwcGluZ3MiOiI7Ozs7OztB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QVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDWixJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9DLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMzQixHQUFHO0FBQ0gsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFDRDtBQUNBLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUNyQixTQUFTLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRTtBQUM1QyxFQUFFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoRCxFQUFFLElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDWixJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMzQixHQUFHO0FBQ0gsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFDRDtBQUNBLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN0QixTQUFTLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRTtBQUM1QyxFQUFFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoRCxFQUFFLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDWixJQUFJLEdBQUcsR0FBRyxJQUFJ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QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtBQUNkLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBT0EsU0FBTyxDQUFDO0FBQ3RDLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRztBQUNkLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBT0EsU0FBTyxDQUFDO0FBQ3RDLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPQSxTQUFPLENBQUM7QUFDdEMsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEdBQUcsS0FBSyxFQUFFLEdBQUcs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LElBQUksQ0FBQyxDQUFDO0FBQ2YsTUFBTSxJQUFJO0FBQ1YsTUFBTSxLQUFLO0FBQ1gsTUFBTSxHQUFHO0FBQ1QsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEQsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDNUIsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQ2pDLEtBQUs7QUFDTCxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQzlDLE1BQU0sUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0FBQ3ZELE1BQU0sTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ2pELE1BQU0sS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQzlDLE1BQU0sSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQzNDLE1BQU0sS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO0FBQ3RCLE1BQU0sT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO0FBQzFCLE1BQU0sT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO0FBQzFCLE1BQU0sWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO0FBQ3BDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxj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SSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEYsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLEdBQUcsR0FBRztBQUNmLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQzVDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDbkU7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQztBQUM1QyxJQUFJLE9BQU8sT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEYsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFO0FBQ3hDLElBQUksTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDbkQsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDMUIsTUFBTSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDL0MsS0FBSztBQUNMO0FBQ0EsSUFBSSxNQUFNLFNBQVMsR0FBRyxhQUFh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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU0sV0FBVyxFQUFFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0ZBQStGLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLDJFQUEyRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsMERBQTBELENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsMkNBQTJDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTSwwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxNQUFNLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnSUFBZ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENB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UyxDQUFDLEVBQUUsQ0FBYyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsWUFBWSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxjQUFjLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQyxrTkFBa04sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVB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LFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFcEMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFbkMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdkMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFcEMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDM0MsT0FBTyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDNUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFdEMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDM0MsT0FBTyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDNUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Q0FDekMsQ0FBQztBQUVGO0FBQ08sTUFBTSxlQUFlLEdBQUc7QUFDM0IsSUFBQSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQzNCLElBQUEsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBQSxTQUFTLEVBQUUsTUFDUCxRQUFRLENBQUMsS0FBSyxFQUFFO1NBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNkLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQsSUFBQSxRQUFRLEVBQUUsTUFDTixRQUFRLENBQUMsS0FBSyxFQUFFO1NBQ1gsT0FBTyxDQUFDLEtBQUssQ0FB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RyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDOztZQUNwRixPQUFPLENBQUEsRUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDO0tBQzdDO0lBRU0sT0FBTyxHQUFBOztBQUNWLFFBQUEsT0FBTyxDQUFBLEVBQUEsSUFBQyxDQUFBLEVBQUEsR0FBQSxDQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFHLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLENBQUMsQ0FBQyxDQUFDO0tBQ25HO0lBRU0sR0FBRyxHQUFBOztBQUNOLFFBQUEsT0FBTyxDQUFBLEVBQUEsSUFBQyxDQUFBLEVBQUEsR0FBQSxDQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBSSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFHLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLENBQUMsQ0FBQyxDQUFDO0tBQ25HO0lBRU0sU0FBUyxH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QUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU9BLGVBQU8sRUFBRSxVQUFVLEVBQUVBLGVBQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDcjFCLENBQUMsVUFBVSxNQUFNLENBQUM7QUFFbEIsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztBQUN4RTtBQUNBLElBQUksYUFBYSxDQUFDO0FBQ2xCO0FBQ0E7QUFDQSxFQUFFLElBQUksUUFBUSxFQUFFO0FBQ2hCLElBQUksSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLElBQUksSUFBSSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUMsSUFBSSxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO0FBQzlCLE1BQU0sYUFBYSxFQUFFLElBQUk7QUFDekIsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLGFBQWEsR0FBRyxZQUFZO0FBQ2hDLE1BQU0sT0FBTyxDQUFDLElBQUksSUFBSSxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsS0FBSyxDQUFDO0FBQ04sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLE9BQU8sTUFBTSxDQUFDLGNBQWMsS0FBSyxXQUFXLEVBQUU7QUFDbkYsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUM5QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztBQUN2QyxJQUFJLGFBQWEsR0FBRyxZQUFZO0FBQ2hDLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsS0FBSyxDQUFDO0FBQ04sR0FBRyxNQUFNLElBQUksVUFBVSxJQUFJLE1BQU0sSUFBSSxvQkFBb0IsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUN0RyxJQUFJLGFBQWEsR0FBRyxZQUFZO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLE1BQU0sSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0QsTUFBTSxRQUFRLENBQUMsa0JBQWtCLEdBQUcsWUFBWTtBQUNoRCxRQUFRLFFBQVEsRUFBRSxDQUFDO0FBQ25CO0FBQ0EsUUFBUSxRQUFRLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBQzNDLFFBQVEsUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEQsUUFBUSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLE9BQU8sQ0FBQztBQUNSLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVELEtBQUssQ0FBQztBQUNOLEdBQUcsTUFBTTtBQUNULElBQUksYUFBYSxHQUFHLFlBQVk7QUFDaEMsTUFBTSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlCLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxJQUFJLFFBQVEsQ0FBQztBQUNiLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNmO0FBQ0EsU0FBUyxRQUFRLEdBQUc7QUFDcEIsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxDQUFDLEVBQUUsUUFBUSxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUN6QixFQUFFLE9BQU8sR0FBRyxFQUFFO0FBQ2QsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ1gsSUFBSSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRTtBQUN0QixNQUFNLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3ZCLEdBQUc7QUFDSCxFQUFFLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDbkIsQ0FBQztBQUNEO0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDM0IsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFO0FBQ3pCLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUMzQyxJQUFJLGFBQWEsRUFBRSxDQUFDO0FBQ3BCLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPQyxjQUFNLEtBQUssV0FBVyxHQUFHQSxjQUFNLEdBQUcsT0FBTyxJQUFJLEtBQUssV0FBVyxHQUFHLElBQUksR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLEdBQUcsTUFBTSxHQUFHLEVBQUUsRUFBQztBQUN2SSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUV6QyxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0I7QUFDQTtBQUNBLFNBQVMsUUFBUSxHQUFHLEVBQUU7QUFDdEI7QUFDQSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDbEI7QUFDQSxJQUFJLFFBQVEsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzVCLElBQUksU0FBUyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDOUIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMxQjtBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3pCO0FBQ0EsU0FBUyxPQUFPLENBQUMsUUFBUSxFQUFFO0FBQzNCLEVBQUUsSUFBSSxPQUFPLFFBQVEsS0FBSyxVQUFVLEVBQUU7QUFDdEMsSUFBSSxNQUFNLElBQUksU0FBUyxDQUFDLDZCQUE2QixDQUFDLENBQUM7QUFDdkQsR0FBRztBQUNILEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDdkIsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNsQixFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDeEIsRUFBRSxJQUFJLFFBQVEsS0FBSyxRQUFRLEVBQUU7QUFDN0IsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUMsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsVUFBVSxVQUFVLEVBQUU7QUFDbkQsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUNGLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsV0FBVyxFQUFFLFVBQVUsRUFBRTtBQUM1RCxFQUFFLElBQUksT0FBTyxXQUFXLEtBQUssVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUztBQUNuRSxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUNqRSxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLElBQUksT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxPQUFPLEVBQUU7QUFDOUIsSUFBSSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsR0FBRyxXQUFXLEdBQUcsVUFBVSxDQUFDO0FBQ3ZFLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVDLEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0YsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUU7QUFDckQsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUN6QixFQUFFLElBQUksT0FBTyxXQUFXLEtBQUssVUFBVSxFQUFFO0FBQ3pDLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7QUFDbkMsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztBQUNqRCxHQUFHO0FBQ0gsRUFBRSxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsRUFBRTtBQUN4QyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0FBQ2pDLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7QUFDL0MsR0FBRztBQUNILENBQUM7QUFDRCxTQUFTLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUFVLEtBQUssRUFBRTtBQUNyRCxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFDRixTQUFTLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFHLFVBQVUsS0FBSyxFQUFFO0FBQzFELEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUM7QUFDRixTQUFTLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUFVLEtBQUssRUFBRTtBQUNwRCxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUM7QUFDRixTQUFTLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLFVBQVUsS0FBSyxFQUFFO0FBQ3pELEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUM7QUFDRjtBQUNBLFNBQVMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ3RDLEVBQUUsU0FBUyxDQUFDLFlBQVk7QUFDeEIsSUFBSSxJQUFJLFdBQVcsQ0FBQztBQUNwQixJQUFJLElBQUk7QUFDUixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ2hCLE1BQU0sT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QyxLQUFLO0FBQ0wsSUFBSSxJQUFJLFdBQVcsS0FBSyxPQUFPLEVBQUU7QUFDakMsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLFNBQVMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUM7QUFDcEYsS0FBSyxNQUFNO0FBQ1gsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM3QyxLQUFLO0FBQ0wsR0FBRyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBQ0Q7QUFDQSxRQUFRLENBQUMsT0FBTyxHQUFHLFVBQVUsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUMxQyxFQUFFLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDeEMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFO0FBQ2pDLElBQUksT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0MsR0FBRztBQUNILEVBQUUsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUM5QjtBQUNBLEVBQUUsSUFBSSxRQUFRLEVBQUU7QUFDaEIsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUMsR0FBRyxNQUFNO0FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztBQUMzQixJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDZixJQUFJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDLElBQUksT0FBTyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUU7QUFDdEIsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxLQUFLO0FBQ0wsR0FBRztBQUNILEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFDRixRQUFRLENBQUMsTUFBTSxHQUFHLFVBQVUsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUN6QyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDdkIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNiLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDOUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRTtBQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLEdBQUc7QUFDSCxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDdEI7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQzdCLEVBQUUsSUFBSSxHQUFHLEtBQUssT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRTtBQUNuRyxJQUFJLE9BQU8sU0FBUyxRQUFRLEdBQUc7QUFDL0IsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNqQyxLQUFLLENBQUM7QUFDTixHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO0FBQy9DO0FBQ0EsRUFBRSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDckIsRUFBRSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDMUIsSUFBSSxJQUFJLE1BQU0sRUFBRTtBQUNoQixNQUFNLE9BQU87QUFDYixLQUFLO0FBQ0wsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDakMsR0FBRztBQUNIO0FBQ0EsRUFBRSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDNUIsSUFBSSxJQUFJLE1BQU0sRUFBRTtBQUNoQixNQUFNLE9BQU87QUFDYixLQUFLO0FBQ0wsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEMsR0FBRztBQUNIO0FBQ0EsRUFBRSxTQUFTLFdBQVcsR0FBRztBQUN6QixJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakMsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFO0FBQ2pDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQixHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUMvQixFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNmLEVBQUUsSUFBSTtBQUNOLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUIsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztBQUMzQixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDZCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBQ3pCLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBQ0Q7QUFDQSxPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUMxQixTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDeEIsRUFBRSxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUU7QUFDN0IsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0gsRUFBRSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUNEO0FBQ0EsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDeEIsU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQ3hCLEVBQUUsSUFBSSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkMsRUFBRSxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFDRDtBQUNBLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQVMsR0FBRyxDQUFDLFFBQVEsRUFBRTtBQUN2QixFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLGdCQUFnQixFQUFFO0FBQ3JFLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztBQUMxRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDNUIsRUFBRSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDckIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ1osSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixFQUFFLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNuQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2IsRUFBRSxJQUFJLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNuQztBQUNBLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUU7QUFDcEIsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLEdBQUc7QUFDSCxFQUFFLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLEVBQUUsU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtBQUNqQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEtBQUssRUFBRTtBQUM5RCxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDbkIsUUFBUSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLFFBQVEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDeEMsT0FBTztBQUNQLEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxTQUFTLGNBQWMsQ0FBQyxRQUFRLEVBQUU7QUFDdEMsTUFBTSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzNCLE1BQU0sSUFBSSxFQUFFLFFBQVEsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDekMsUUFBUSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLFFBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDMUMsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEIsU0FBUyxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3hCLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssZ0JBQWdCLEVBQUU7QUFDckUsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0FBQzFELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUM1QixFQUFFLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztBQUNyQixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDWixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM1QixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2IsRUFBRSxJQUFJLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNuQztBQUNBLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUU7QUFDcEIsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsR0FBRztBQUNILEVBQUUsT0FBTyxPQUFPLENBQUM7QUFDakIsRUFBRSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDM0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLFFBQVEsRUFBRTtBQUNqRCxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDbkIsUUFBUSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLFFBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUMsT0FBTztBQUNQLEtBQUssRUFBRSxVQUFVLEtBQUssRUFBRTtBQUN4QixNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDbkIsUUFBUSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLFFBQVEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDeEMsT0FBTztBQUNQLEtBQUssQ0FBQyxDQUFDO0FBQ1AsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDOUMsQ0FBQyxVQUFVLE1BQU0sQ0FBQztBQUVsQixJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7QUFDMUMsRUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0Q7QUFDQSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPQSxjQUFNLEtBQUssV0FBVyxHQUFHQSxjQUFNLEdBQUcsT0FBTyxJQUFJLEtBQUssV0FBVyxHQUFHLElBQUksR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLEdBQUcsTUFBTSxHQUFHLEVBQUUsRUFBQztBQUN2SSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBRTlDO0FBQ0EsSUFBSSxPQUFPLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE9BQU8sTUFBTSxDQUFDLFFBQVEsS0FBSyxRQUFRLEdBQUcsVUFBVSxHQUFHLEVBQUUsRUFBRSxPQUFPLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxVQUFVLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsV0FBVyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLFNBQVMsR0FBRyxRQUFRLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQzdRO0FBQ0EsU0FBUyxlQUFlLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLFlBQVksV0FBVyxDQUFDLEVBQUUsRUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ3pKO0FBQ0EsU0FBUyxNQUFNLEdBQUc7QUFDbEI7QUFDQSxJQUFJLElBQUk7QUFDUixRQUFRLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxFQUFFO0FBQzlDLFlBQVksT0FBTyxTQUFTLENBQUM7QUFDN0IsU0FBUztBQUNULFFBQVEsSUFBSSxPQUFPLGVBQWUsS0FBSyxXQUFXLEVBQUU7QUFDcEQsWUFBWSxPQUFPLGVBQWUsQ0FBQztBQUNuQyxTQUFTO0FBQ1QsUUFBUSxJQUFJLE9BQU8sWUFBWSxLQUFLLFdBQVcsRUFBRTtBQUNqRCxZQUFZLE9BQU8sWUFBWSxDQUFDO0FBQ2hDLFNBQVM7QUFDVCxRQUFRLElBQUksT0FBTyxVQUFVLEtBQUssV0FBVyxFQUFFO0FBQy9DLFlBQVksT0FBTyxVQUFVLENBQUM7QUFDOUIsU0FBUztBQUNULFFBQVEsSUFBSSxPQUFPLFdBQVcsS0FBSyxXQUFXLEVBQUU7QUFDaEQsWUFBWSxPQUFPLFdBQVcsQ0FBQztBQUMvQixTQUFTO0FBQ1QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ2hCLFFBQVEsT0FBTztBQUNmLEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQSxJQUFJLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNuQjtBQUNBLFNBQVMsZ0JBQWdCLEdBQUc7QUFDNUIsSUFBSSxJQUFJO0FBQ1I7QUFDQTtBQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7QUFDL0IsWUFBWSxPQUFPLEtBQUssQ0FBQztBQUN6QixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQUksUUFBUSxHQUFHLE9BQU8sWUFBWSxLQUFLLFdBQVcsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyTTtBQUNBLFFBQVEsSUFBSSxRQUFRLEdBQUcsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLE9BQU8sQ0FBQyxDQUFDLFFBQVEsSUFBSSxRQUFRLEtBQUssT0FBTyxTQUFTLEtBQUssV0FBVztBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsT0FBTyxXQUFXLEtBQUssV0FBVyxDQUFDO0FBQzNDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNoQixRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO0FBQ3ZDO0FBQ0EsSUFBSSxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUN4QixJQUFJLFVBQVUsR0FBRyxVQUFVLElBQUksRUFBRSxDQUFDO0FBQ2xDLElBQUksSUFBSTtBQUNSLFFBQVEsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDM0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ2hCLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtBQUNwQyxZQUFZLE1BQU0sQ0FBQyxDQUFDO0FBQ3BCLFNBQVM7QUFDVCxRQUFRLElBQUksT0FBTyxHQUFHLE9BQU8sV0FBVyxLQUFLLFdBQVcsR0FBRyxXQUFXLEdBQUcsT0FBTyxhQUFhLEtBQUssV0FBVyxHQUFHLGFBQWEsR0FBRyxPQUFPLGNBQWMsS0FBSyxXQUFXLEdBQUcsY0FBYyxHQUFHLGlCQUFpQixDQUFDO0FBQzNNLFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNwQyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbEQsWUFBWSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLFNBQVM7QUFDVCxRQUFRLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEQsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRTtBQUNwQztBQUNBO0FBQ0EsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZixDQUFDO0FBQ0QsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDO0FBQ3hCO0FBQ0EsU0FBUyxlQUFlLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtBQUM1QyxJQUFJLElBQUksUUFBUSxFQUFFO0FBQ2xCLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLE1BQU0sRUFBRTtBQUN2QyxZQUFZLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkMsU0FBUyxFQUFFLFVBQVUsS0FBSyxFQUFFO0FBQzVCLFlBQVksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBLFNBQVMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7QUFDL0QsSUFBSSxJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtBQUN4QyxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLE9BQU8sYUFBYSxLQUFLLFVBQVUsRUFBRTtBQUM3QyxRQUFRLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN4QyxLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0EsU0FBUyxZQUFZLENBQUMsR0FBRyxFQUFFO0FBQzNCO0FBQ0EsSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtBQUNqQyxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLHlDQUF5QyxDQUFDLENBQUM7QUFDdEUsUUFBUSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBQ0Q7QUFDQSxTQUFTLFdBQVcsR0FBRztBQUN2QixJQUFJLElBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUNuRixRQUFRLE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUkseUJBQXlCLEdBQUcsa0NBQWtDLENBQUM7QUFDbkUsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDM0IsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0FBQ3pDO0FBQ0E7QUFDQSxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUM7QUFDM0IsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsdUJBQXVCLENBQUMsR0FBRyxFQUFFO0FBQ3RDLElBQUksSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUM1QixJQUFJLElBQUksR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEMsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3JDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsS0FBSztBQUNMLElBQUksT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLCtCQUErQixDQUFDLEdBQUcsRUFBRTtBQUM5QyxJQUFJLE9BQU8sSUFBSSxTQUFTLENBQUMsVUFBVSxPQUFPLEVBQUU7QUFDNUMsUUFBUSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3pFLFFBQVEsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQyxRQUFRLEdBQUcsQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BFO0FBQ0EsUUFBUSxHQUFHLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ25DO0FBQ0E7QUFDQSxZQUFZLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUMvQixZQUFZLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUNoQyxZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixTQUFTLENBQUM7QUFDVjtBQUNBLFFBQVEsR0FBRyxDQUFDLFVBQVUsR0FBRyxZQUFZO0FBQ3JDLFlBQVksSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDM0UsWUFBWSxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRTtBQUNBO0FBQ0EsWUFBWSxPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsYUFBYSxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDM0YsU0FBUyxDQUFDO0FBQ1YsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWTtBQUM1QixRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsSUFBSSxJQUFJLE9BQU8sYUFBYSxLQUFLLFNBQVMsRUFBRTtBQUM1QyxRQUFRLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNoRCxLQUFLO0FBQ0wsSUFBSSxPQUFPLCtCQUErQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssRUFBRTtBQUN0RSxRQUFRLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFDOUIsUUFBUSxPQUFPLGFBQWEsQ0FBQztBQUM3QixLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRDtBQUNBLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRTtBQUNqQyxJQUFJLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUM7QUFDQTtBQUNBLElBQUksSUFBSSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFDL0I7QUFDQSxJQUFJLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDekUsUUFBUSxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQzVDLFFBQVEsaUJBQWlCLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUMxQyxLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQSxJQUFJLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN6RDtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUM1QixRQUFRLFNBQVMsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDO0FBQ3RELEtBQUssTUFBTTtBQUNYLFFBQVEsU0FBUyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZO0FBQy9ELFlBQVksT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7QUFDN0MsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7QUFDbkMsSUFBSSxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVDO0FBQ0E7QUFDQSxJQUFJLElBQUksaUJBQWlCLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQy9EO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxpQkFBaUIsRUFBRTtBQUMzQixRQUFRLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3BDLFFBQVEsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7QUFDekMsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtBQUN2QyxJQUFJLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUM7QUFDQTtBQUNBLElBQUksSUFBSSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLGlCQUFpQixFQUFFO0FBQzNCLFFBQVEsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLFFBQVEsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7QUFDekMsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBLFNBQVMsY0FBYyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUU7QUFDL0MsSUFBSSxPQUFPLElBQUksU0FBUyxDQUFDLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUNwRCxRQUFRLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUMvRTtBQUNBLFFBQVEsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFO0FBQ3ZCLFlBQVksSUFBSSxhQUFhLEVBQUU7QUFDL0IsZ0JBQWdCLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QyxnQkFBZ0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNsQyxhQUFhLE1BQU07QUFDbkIsZ0JBQWdCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxQyxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQztBQUNBLFFBQVEsSUFBSSxhQUFhLEVBQUU7QUFDM0IsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4QyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsRDtBQUNBLFFBQVEsSUFBSSxhQUFhLEVBQUU7QUFDM0IsWUFBWSxPQUFPLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ25ELGdCQUFnQixJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ3hDLGdCQUFnQixJQUFJO0FBQ3BCLG9CQUFvQixFQUFFLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNELG9CQUFvQixJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFO0FBQzNDO0FBQ0Esd0JBQXdCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBQ3hFLHFCQUFxQjtBQUNyQixpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsRUFBRTtBQUM3QixvQkFBb0IsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUFFO0FBQ3ZELHdCQUF3QixPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLGtDQUFrQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsY0FBYyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcscUJBQXFCLEdBQUcsTUFBTSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2hPLHFCQUFxQixNQUFNO0FBQzNCLHdCQUF3QixNQUFNLEVBQUUsQ0FBQztBQUNqQyxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGFBQWEsQ0FBQztBQUNkLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsRUFBRTtBQUN2QyxZQUFZLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUMvQixZQUFZLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEMsU0FBUyxDQUFDO0FBQ1Y7QUFDQSxRQUFRLE9BQU8sQ0FBQyxTQUFTLEdBQUcsWUFBWTtBQUN4QyxZQUFZLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDcEMsWUFBWSxFQUFFLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNqQyxhQUFhLENBQUM7QUFDZCxZQUFZLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4QixZQUFZLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLFNBQVMsQ0FBQztBQUNWLEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNEO0FBQ0EsU0FBUyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUU7QUFDeEMsSUFBSSxPQUFPLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUNEO0FBQ0EsU0FBUyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUU7QUFDeEMsSUFBSSxPQUFPLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUNEO0FBQ0EsU0FBUyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFO0FBQ2xELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUU7QUFDcEIsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVFLElBQUksSUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQztBQUN6RCxJQUFJLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7QUFDdkQ7QUFDQSxJQUFJLElBQUksV0FBVyxFQUFFO0FBQ3JCO0FBQ0E7QUFDQSxRQUFRLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxjQUFjLEVBQUU7QUFDL0MsWUFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLG9DQUFvQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLGNBQWMsR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2xLLFNBQVM7QUFDVDtBQUNBLFFBQVEsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQztBQUMzQyxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBRTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQUksVUFBVSxFQUFFO0FBQ3hCLFlBQVksSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELFlBQVksSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRTtBQUM3QyxnQkFBZ0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7QUFDNUMsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRTtBQUMzQixJQUFJLE9BQU8sSUFBSSxTQUFTLENBQUMsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQ3BELFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztBQUN0QyxRQUFRLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQ2hDLFFBQVEsTUFBTSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUN4QyxZQUFZLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNyRCxZQUFZLE9BQU8sQ0FBQztBQUNwQixnQkFBZ0IsMkJBQTJCLEVBQUUsSUFBSTtBQUNqRCxnQkFBZ0IsSUFBSSxFQUFFLE1BQU07QUFDNUIsZ0JBQWdCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtBQUMvQixhQUFhLENBQUMsQ0FBQztBQUNmLFNBQVMsQ0FBQztBQUNWLFFBQVEsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLFdBQVcsQ0FBQyxXQUFXLEVBQUU7QUFDbEMsSUFBSSxJQUFJLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDcEUsSUFBSSxPQUFPLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxjQUFjLENBQUMsS0FBSyxFQUFFO0FBQy9CLElBQUksT0FBTyxLQUFLLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDO0FBQ3RELENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxXQUFXLENBQUMsUUFBUSxFQUFFO0FBQy9CLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVk7QUFDckQsUUFBUSxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RDtBQUNBLFFBQVEsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUM1QyxZQUFZLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQztBQUNyQyxTQUFTO0FBQ1QsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBLElBQUksbUJBQW1CLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNyRCxJQUFJLE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRTtBQUMvQixJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QjtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxJQUFJLElBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7QUFDcEM7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzdDLFFBQVEsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLFFBQVEsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRTtBQUMvQixZQUFZLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3RDLFlBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNyQjtBQUNBLElBQUksT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7QUFDN0QsUUFBUSxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN2QixRQUFRLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDdEM7QUFDQSxZQUFZLE9BQU8sc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEQsU0FBUztBQUNULFFBQVEsT0FBTyxFQUFFLENBQUM7QUFDbEIsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO0FBQzFCO0FBQ0E7QUFDQSxRQUFRLE1BQU0sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDdEMsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNqRCxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN2QyxTQUFTO0FBQ1QsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDL0IsUUFBUSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEMsUUFBUSxNQUFNLEdBQUcsQ0FBQztBQUNsQixLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtBQUM1RCxJQUFJLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtBQUMvQixRQUFRLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJO0FBQ1IsUUFBUSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9ELFFBQVEsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMzQixLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUU7QUFDbEIsUUFBUSxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsRUFBRTtBQUM3RyxZQUFZLE9BQU8sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZO0FBQ3hELGdCQUFnQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLGVBQWUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFO0FBQ2pLO0FBQ0Esb0JBQW9CLElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRTtBQUNuQyx3QkFBd0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDL0QscUJBQXFCO0FBQ3JCO0FBQ0Esb0JBQW9CLE9BQU8sc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUQsaUJBQWlCO0FBQ2pCLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZO0FBQ2hDLGdCQUFnQixPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWTtBQUM5RCxvQkFBb0IsaUJBQWlCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNFLGlCQUFpQixDQUFDLENBQUM7QUFDbkIsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEMsU0FBUztBQUNUO0FBQ0EsUUFBUSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEIsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBLFNBQVMsZUFBZSxHQUFHO0FBQzNCLElBQUksT0FBTztBQUNYO0FBQ0EsUUFBUSxPQUFPLEVBQUUsRUFBRTtBQUNuQjtBQUNBLFFBQVEsRUFBRSxFQUFFLElBQUk7QUFDaEI7QUFDQSxRQUFRLE9BQU8sRUFBRSxJQUFJO0FBQ3JCO0FBQ0EsUUFBUSxrQkFBa0IsRUFBRSxFQUFFO0FBQzlCLEtBQUssQ0FBQztBQUNOLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLFlBQVksQ0FBQyxPQUFPLEVBQUU7QUFDL0IsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxJQUFJLE1BQU0sR0FBRztBQUNqQixRQUFRLEVBQUUsRUFBRSxJQUFJO0FBQ2hCLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxJQUFJLE9BQU8sRUFBRTtBQUNqQixRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksT0FBTyxFQUFFO0FBQy9CLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUM7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUNwQixRQUFRLFNBQVMsR0FBRyxlQUFlLEVBQUUsQ0FBQztBQUN0QztBQUNBLFFBQVEsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDNUMsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQzFCLFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3JDLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7QUFDakMsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUMxQjtBQUNBLElBQUksU0FBUyxZQUFZLEdBQUc7QUFDNUI7QUFDQTtBQUNBLFFBQVEsT0FBTyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDbkMsS0FBSztBQUNMO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdkQsUUFBUSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO0FBQzdCO0FBQ0EsWUFBWSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQzFFLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsSUFBSSxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVk7QUFDeEQsUUFBUSxNQUFNLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUM7QUFDakM7QUFDQSxRQUFRLE9BQU8sc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO0FBQzFCLFFBQVEsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDdkIsUUFBUSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ25FO0FBQ0EsWUFBWSxPQUFPLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xELFNBQVM7QUFDVCxRQUFRLE9BQU8sRUFBRSxDQUFDO0FBQ2xCLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRTtBQUMxQixRQUFRLE1BQU0sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDdEMsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztBQUM5QjtBQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDakQsWUFBWSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsWUFBWSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7QUFDakM7QUFDQSxnQkFBZ0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM5QyxnQkFBZ0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN4RCxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNEO0FBQ0EsU0FBUyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRTtBQUNoQyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNwQjtBQUNBLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QjtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsSUFBSSxTQUFTLENBQUMsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQzNELFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZO0FBQ3RDLFlBQVksaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxHQUFHLEVBQUUsV0FBVyxFQUFFO0FBQ25GLGdCQUFnQixJQUFJLEdBQUcsRUFBRTtBQUN6QixvQkFBb0IsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkMsaUJBQWlCO0FBQ2pCO0FBQ0EsZ0JBQWdCLElBQUk7QUFDcEIsb0JBQW9CLElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNoRixvQkFBb0IsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QztBQUNBLG9CQUFvQixHQUFHLENBQUMsU0FBUyxHQUFHLFlBQVk7QUFDaEQsd0JBQXdCLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDL0Msd0JBQXdCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtBQUNqRCw0QkFBNEIsS0FBSyxHQUFHLElBQUksQ0FBQztBQUN6Qyx5QkFBeUI7QUFDekIsd0JBQXdCLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ25ELDRCQUE0QixLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZELHlCQUF5QjtBQUN6Qix3QkFBd0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLHFCQUFxQixDQUFDO0FBQ3RCO0FBQ0Esb0JBQW9CLEdBQUcsQ0FBQyxPQUFPLEdBQUcsWUFBWTtBQUM5Qyx3QkFBd0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQyxxQkFBcUIsQ0FBQztBQUN0QixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUM1QixvQkFBb0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLGlCQUFpQjtBQUNqQixhQUFhLENBQUMsQ0FBQztBQUNmLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVCLEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQSxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdkMsSUFBSSxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUU7QUFDckMsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEI7QUFDQSxJQUFJLElBQUksT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMzRCxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWTtBQUN0QyxZQUFZLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsR0FBRyxFQUFFLFdBQVcsRUFBRTtBQUNuRixnQkFBZ0IsSUFBSSxHQUFHLEVBQUU7QUFDekIsb0JBQW9CLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLGlCQUFpQjtBQUNqQjtBQUNBLGdCQUFnQixJQUFJO0FBQ3BCLG9CQUFvQixJQUFJLEtBQUssR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEYsb0JBQW9CLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNqRCxvQkFBb0IsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBQzVDO0FBQ0Esb0JBQW9CLEdBQUcsQ0FBQyxTQUFTLEdBQUcsWUFBWTtBQUNoRCx3QkFBd0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUNoRDtBQUNBLHdCQUF3QixJQUFJLE1BQU0sRUFBRTtBQUNwQyw0QkFBNEIsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNyRCw0QkFBNEIsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDdkQsZ0NBQWdDLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0QsNkJBQTZCO0FBQzdCLDRCQUE0QixJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRTtBQUNuRCxnQ0FBZ0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hELDZCQUE2QixNQUFNO0FBQ25DLGdDQUFnQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztBQUNyRCw2QkFBNkI7QUFDN0IseUJBQXlCLE1BQU07QUFDL0IsNEJBQTRCLE9BQU8sRUFBRSxDQUFDO0FBQ3RDLHlCQUF5QjtBQUN6QixxQkFBcUIsQ0FBQztBQUN0QjtBQUNBLG9CQUFvQixHQUFHLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDOUMsd0JBQXdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMscUJBQXFCLENBQUM7QUFDdEIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDNUIsb0JBQW9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixpQkFBaUI7QUFDakIsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QixLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0EsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0EsSUFBSSxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUN2QyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNwQjtBQUNBLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QjtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsSUFBSSxTQUFTLENBQUMsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQzNELFFBQVEsSUFBSSxNQUFNLENBQUM7QUFDbkIsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVk7QUFDdEMsWUFBWSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUNsQyxZQUFZLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxlQUFlLEVBQUU7QUFDMUQsZ0JBQWdCLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLFdBQVcsRUFBRTtBQUNoRixvQkFBb0IsSUFBSSxXQUFXLEVBQUU7QUFDckMsd0JBQXdCLE9BQU8sS0FBSyxDQUFDO0FBQ3JDLHFCQUFxQjtBQUNyQixvQkFBb0IsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUMsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixhQUFhO0FBQ2IsWUFBWSxPQUFPLEtBQUssQ0FBQztBQUN6QixTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLEVBQUU7QUFDakMsWUFBWSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUcsRUFBRSxXQUFXLEVBQUU7QUFDcEYsZ0JBQWdCLElBQUksR0FBRyxFQUFFO0FBQ3pCLG9CQUFvQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsSUFBSTtBQUNwQixvQkFBb0IsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO0FBQ3hDLHdCQUF3QixLQUFLLEdBQUcsU0FBUyxDQUFDO0FBQzFDLHFCQUFxQjtBQUNyQjtBQUNBLG9CQUFvQixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwRDtBQUNBLG9CQUFvQixXQUFXLENBQUMsVUFBVSxHQUFHLFlBQVk7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtBQUNqRCw0QkFBNEIsS0FBSyxHQUFHLElBQUksQ0FBQztBQUN6Qyx5QkFBeUI7QUFDekI7QUFDQSx3QkFBd0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLHFCQUFxQixDQUFDO0FBQ3RCLG9CQUFvQixXQUFXLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLEdBQUcsWUFBWTtBQUM1RSx3QkFBd0IsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0FBQ2hGLHdCQUF3QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMscUJBQXFCLENBQUM7QUFDdEIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDNUIsb0JBQW9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixpQkFBaUI7QUFDakIsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QixLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0EsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLElBQUksT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRTtBQUNuQyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNwQjtBQUNBLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QjtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsSUFBSSxTQUFTLENBQUMsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQzNELFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZO0FBQ3RDLFlBQVksaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFHLEVBQUUsV0FBVyxFQUFFO0FBQ3BGLGdCQUFnQixJQUFJLEdBQUcsRUFBRTtBQUN6QixvQkFBb0IsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkMsaUJBQWlCO0FBQ2pCO0FBQ0EsZ0JBQWdCLElBQUk7QUFDcEIsb0JBQW9CLElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuRCxvQkFBb0IsV0FBVyxDQUFDLFVBQVUsR0FBRyxZQUFZO0FBQ3pELHdCQUF3QixPQUFPLEVBQUUsQ0FBQztBQUNsQyxxQkFBcUIsQ0FBQztBQUN0QjtBQUNBLG9CQUFvQixXQUFXLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDdEQsd0JBQXdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMscUJBQXFCLENBQUM7QUFDdEI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFdBQVcsQ0FBQyxPQUFPLEdBQUcsWUFBWTtBQUN0RCx3QkFBd0IsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0FBQ2hGLHdCQUF3QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMscUJBQXFCLENBQUM7QUFDdEIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDNUIsb0JBQW9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixpQkFBaUI7QUFDakIsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QixLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0EsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLElBQUksT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ3pCLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDM0QsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVk7QUFDdEMsWUFBWSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUcsRUFBRSxXQUFXLEVBQUU7QUFDcEYsZ0JBQWdCLElBQUksR0FBRyxFQUFFO0FBQ3pCLG9CQUFvQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsSUFBSTtBQUNwQixvQkFBb0IsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hGLG9CQUFvQixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDNUM7QUFDQSxvQkFBb0IsV0FBVyxDQUFDLFVBQVUsR0FBRyxZQUFZO0FBQ3pELHdCQUF3QixPQUFPLEVBQUUsQ0FBQztBQUNsQyxxQkFBcUIsQ0FBQztBQUN0QjtBQUNBLG9CQUFvQixXQUFXLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLEdBQUcsWUFBWTtBQUM1RSx3QkFBd0IsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0FBQ2hGLHdCQUF3QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMscUJBQXFCLENBQUM7QUFDdEIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDNUIsb0JBQW9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixpQkFBaUI7QUFDakIsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QixLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0EsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLElBQUksT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxNQUFNLENBQUMsUUFBUSxFQUFFO0FBQzFCLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDM0QsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVk7QUFDdEMsWUFBWSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEdBQUcsRUFBRSxXQUFXLEVBQUU7QUFDbkYsZ0JBQWdCLElBQUksR0FBRyxFQUFFO0FBQ3pCLG9CQUFvQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsSUFBSTtBQUNwQixvQkFBb0IsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hGLG9CQUFvQixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDNUM7QUFDQSxvQkFBb0IsR0FBRyxDQUFDLFNBQVMsR0FBRyxZQUFZO0FBQ2hELHdCQUF3QixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLHFCQUFxQixDQUFDO0FBQ3RCO0FBQ0Esb0JBQW9CLEdBQUcsQ0FBQyxPQUFPLEdBQUcsWUFBWTtBQUM5Qyx3QkFBd0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQyxxQkFBcUIsQ0FBQztBQUN0QixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUM1QixvQkFBb0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLGlCQUFpQjtBQUNqQixhQUFhLENBQUMsQ0FBQztBQUNmLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVCLEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQSxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdkMsSUFBSSxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFO0FBQzFCLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDM0QsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDbkIsWUFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUI7QUFDQSxZQUFZLE9BQU87QUFDbkIsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVk7QUFDdEMsWUFBWSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEdBQUcsRUFBRSxXQUFXLEVBQUU7QUFDbkYsZ0JBQWdCLElBQUksR0FBRyxFQUFFO0FBQ3pCLG9CQUFvQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsSUFBSTtBQUNwQixvQkFBb0IsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hGLG9CQUFvQixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDekMsb0JBQW9CLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztBQUNwRDtBQUNBLG9CQUFvQixHQUFHLENBQUMsU0FBUyxHQUFHLFlBQVk7QUFDaEQsd0JBQXdCLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDaEQsd0JBQXdCLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckM7QUFDQSw0QkFBNEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsNEJBQTRCLE9BQU87QUFDbkMseUJBQXlCO0FBQ3pCO0FBQ0Esd0JBQXdCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNyQztBQUNBO0FBQ0EsNEJBQTRCLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQseUJBQXlCLE1BQU07QUFDL0IsNEJBQTRCLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDM0M7QUFDQTtBQUNBLGdDQUFnQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ2hELGdDQUFnQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xELDZCQUE2QixNQUFNO0FBQ25DO0FBQ0EsZ0NBQWdDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsNkJBQTZCO0FBQzdCLHlCQUF5QjtBQUN6QixxQkFBcUIsQ0FBQztBQUN0QjtBQUNBLG9CQUFvQixHQUFHLENBQUMsT0FBTyxHQUFHLFlBQVk7QUFDOUMsd0JBQXdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMscUJBQXFCLENBQUM7QUFDdEIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDNUIsb0JBQW9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixpQkFBaUI7QUFDakIsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QixLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0EsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLElBQUksT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3hCLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDM0QsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVk7QUFDdEMsWUFBWSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEdBQUcsRUFBRSxXQUFXLEVBQUU7QUFDbkYsZ0JBQWdCLElBQUksR0FBRyxFQUFFO0FBQ3pCLG9CQUFvQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsSUFBSTtBQUNwQixvQkFBb0IsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hGLG9CQUFvQixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDcEQsb0JBQW9CLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNsQztBQUNBLG9CQUFvQixHQUFHLENBQUMsU0FBUyxHQUFHLFlBQVk7QUFDaEQsd0JBQXdCLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDaEQ7QUFDQSx3QkFBd0IsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNyQyw0QkFBNEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLDRCQUE0QixPQUFPO0FBQ25DLHlCQUF5QjtBQUN6QjtBQUNBLHdCQUF3QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5Qyx3QkFBd0IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7QUFDN0MscUJBQXFCLENBQUM7QUFDdEI7QUFDQSxvQkFBb0IsR0FBRyxDQUFDLE9BQU8sR0FBRyxZQUFZO0FBQzlDLHdCQUF3QixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFDLHFCQUFxQixDQUFDO0FBQ3RCLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzVCLG9CQUFvQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsaUJBQWlCO0FBQ2pCLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUIsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2QyxJQUFJLE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFDRDtBQUNBLFNBQVMsWUFBWSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDekMsSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbEQ7QUFDQSxJQUFJLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUN0QyxJQUFJLE9BQU8sR0FBRyxPQUFPLE9BQU8sS0FBSyxVQUFVLElBQUksT0FBTyxJQUFJLEVBQUUsQ0FBQztBQUM3RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ3ZCLFFBQVEsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUM7QUFDMUQsUUFBUSxPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQztBQUN6RSxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNwQixJQUFJLElBQUksT0FBTyxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDdkIsUUFBUSxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3hELEtBQUssTUFBTTtBQUNYLFFBQVEsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBQ2pGO0FBQ0EsUUFBUSxJQUFJLFNBQVMsR0FBRyxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRTtBQUM5SCxZQUFZLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckQsWUFBWSxJQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO0FBQzVDLFlBQVksU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDOUIsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNyRCxnQkFBZ0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQzNDLGFBQWE7QUFDYixZQUFZLE9BQU8sRUFBRSxDQUFDO0FBQ3RCLFNBQVMsQ0FBQyxDQUFDO0FBQ1g7QUFDQSxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO0FBQ2hDLFlBQVksT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7QUFDbkQsZ0JBQWdCLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6QztBQUNBLGdCQUFnQixJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pELGdCQUFnQixJQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO0FBQ2hEO0FBQ0EsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixnQkFBZ0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDekQsb0JBQW9CLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQzdDLGlCQUFpQjtBQUNqQjtBQUNBLGdCQUFnQixJQUFJLGFBQWEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDN0Usb0JBQW9CLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9EO0FBQ0Esb0JBQW9CLEdBQUcsQ0FBQyxPQUFPLEdBQUcsWUFBWTtBQUM5Qyx3QkFBd0IsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUM1Qyx3QkFBd0IsSUFBSSxFQUFFLEVBQUU7QUFDaEMsNEJBQTRCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN2Qyx5QkFBeUI7QUFDekIsd0JBQXdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMscUJBQXFCLENBQUM7QUFDdEI7QUFDQSxvQkFBb0IsR0FBRyxDQUFDLFNBQVMsR0FBRyxZQUFZO0FBQ2hEO0FBQ0E7QUFDQSx3QkFBd0IsT0FBTyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsR0FBRyxPQUFPLENBQUMsSUFBSSxHQUFHLHlDQUF5QyxDQUFDLENBQUM7QUFDdkkscUJBQXFCLENBQUM7QUFDdEI7QUFDQSxvQkFBb0IsR0FBRyxDQUFDLFNBQVMsR0FBRyxZQUFZO0FBQ2hELHdCQUF3QixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQzVDLHdCQUF3QixJQUFJLEVBQUUsRUFBRTtBQUNoQyw0QkFBNEIsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3ZDLHlCQUF5QjtBQUN6Qix3QkFBd0IsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLHFCQUFxQixDQUFDO0FBQ3RCLGlCQUFpQixDQUFDLENBQUM7QUFDbkI7QUFDQSxnQkFBZ0IsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO0FBQ3hELG9CQUFvQixTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN0QyxvQkFBb0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0Qsd0JBQXdCLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCx3QkFBd0IsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNELHFCQUFxQjtBQUNyQixpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQzNDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUNyRyxvQkFBb0IsTUFBTSxHQUFHLENBQUM7QUFDOUIsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixhQUFhLENBQUMsQ0FBQztBQUNmLFNBQVMsTUFBTTtBQUNmLFlBQVksT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7QUFDbkQsZ0JBQWdCLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtBQUN0RSxvQkFBb0IsT0FBTztBQUMzQixpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDaEQ7QUFDQSxnQkFBZ0IsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pDO0FBQ0EsZ0JBQWdCLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsZ0JBQWdCLElBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7QUFDaEQ7QUFDQSxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLGdCQUFnQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6RCxvQkFBb0IsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVDLG9CQUFvQixNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDN0Msb0JBQW9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztBQUN4RCxpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLFNBQVMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDakYsb0JBQW9CLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNqRTtBQUNBLG9CQUFvQixHQUFHLENBQUMsT0FBTyxHQUFHLFVBQVUsR0FBRyxFQUFFO0FBQ2pELHdCQUF3QixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQzVDLHdCQUF3QixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkMsd0JBQXdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxxQkFBcUIsQ0FBQztBQUN0QjtBQUNBLG9CQUFvQixHQUFHLENBQUMsZUFBZSxHQUFHLFlBQVk7QUFDdEQsd0JBQXdCLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDNUMsd0JBQXdCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEUscUJBQXFCLENBQUM7QUFDdEI7QUFDQSxvQkFBb0IsR0FBRyxDQUFDLFNBQVMsR0FBRyxZQUFZO0FBQ2hELHdCQUF3QixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQzVDLHdCQUF3QixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkMsd0JBQXdCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNwQyxxQkFBcUIsQ0FBQztBQUN0QixpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CO0FBQ0EsZ0JBQWdCLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO0FBQzVELG9CQUFvQixTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN0QyxvQkFBb0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0Qsd0JBQXdCLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCx3QkFBd0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2pELHdCQUF3QixpQkFBaUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUQscUJBQXFCO0FBQ3JCLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDM0Msb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBQ3JHLG9CQUFvQixNQUFNLEdBQUcsQ0FBQztBQUM5QixpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2QyxJQUFJLE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFDRDtBQUNBLElBQUksWUFBWSxHQUFHO0FBQ25CLElBQUksT0FBTyxFQUFFLGNBQWM7QUFDM0IsSUFBSSxZQUFZLEVBQUUsWUFBWTtBQUM5QixJQUFJLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRTtBQUNoQyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3BCLElBQUksT0FBTyxFQUFFLE9BQU87QUFDcEIsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUNwQixJQUFJLFVBQVUsRUFBRSxVQUFVO0FBQzFCLElBQUksS0FBSyxFQUFFLEtBQUs7QUFDaEIsSUFBSSxNQUFNLEVBQUUsTUFBTTtBQUNsQixJQUFJLEdBQUcsRUFBRSxHQUFHO0FBQ1osSUFBSSxJQUFJLEVBQUUsSUFBSTtBQUNkLElBQUksWUFBWSxFQUFFLFlBQVk7QUFDOUIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLGFBQWEsR0FBRztBQUN6QixJQUFJLE9BQU8sT0FBTyxZQUFZLEtBQUssVUFBVSxDQUFDO0FBQzlDLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksVUFBVSxHQUFHLGtFQUFrRSxDQUFDO0FBQ3BGO0FBQ0EsSUFBSSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQztBQUM5QyxJQUFJLHNCQUFzQixHQUFHLCtCQUErQixDQUFDO0FBQzdEO0FBQ0EsSUFBSSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7QUFDcEMsSUFBSSx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7QUFDeEQ7QUFDQTtBQUNBLElBQUksZ0JBQWdCLEdBQUcsTUFBTSxDQUFDO0FBQzlCLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUN2QixJQUFJLGNBQWMsR0FBRyxNQUFNLENBQUM7QUFDNUIsSUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDO0FBQzdCLElBQUksc0JBQXNCLEdBQUcsTUFBTSxDQUFDO0FBQ3BDLElBQUksZUFBZSxHQUFHLE1BQU0sQ0FBQztBQUM3QixJQUFJLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFDN0IsSUFBSSxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7QUFDOUIsSUFBSSxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7QUFDOUIsSUFBSSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFDL0IsSUFBSSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFDL0IsSUFBSSw2QkFBNkIsR0FBRyx3QkFBd0IsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7QUFDdkY7QUFDQSxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztBQUMzQztBQUNBLFNBQVMsY0FBYyxDQUFDLGdCQUFnQixFQUFFO0FBQzFDO0FBQ0EsSUFBSSxJQUFJLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3RELElBQUksSUFBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0FBQ3RDLElBQUksSUFBSSxDQUFDLENBQUM7QUFDVixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNkLElBQUksSUFBSSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7QUFDL0M7QUFDQSxJQUFJLElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUMvRCxRQUFRLFlBQVksRUFBRSxDQUFDO0FBQ3ZCLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQ25FLFlBQVksWUFBWSxFQUFFLENBQUM7QUFDM0IsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDL0MsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QztBQUNBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNqQyxRQUFRLFFBQVEsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsUUFBUSxRQUFRLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRCxRQUFRLFFBQVEsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9ELFFBQVEsUUFBUSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0Q7QUFDQTtBQUNBLFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxJQUFJLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDO0FBQ25ELFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDO0FBQzFELFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3pELEtBQUs7QUFDTCxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLGNBQWMsQ0FBQyxNQUFNLEVBQUU7QUFDaEM7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZDLElBQUksSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQzFCLElBQUksSUFBSSxDQUFDLENBQUM7QUFDVjtBQUNBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDMUM7QUFDQSxRQUFRLFlBQVksSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xELFFBQVEsWUFBWSxJQUFJLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDNUUsUUFBUSxZQUFZLElBQUksVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakYsUUFBUSxZQUFZLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDdEQsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNoQyxRQUFRLFlBQVksR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNoRixLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDdkMsUUFBUSxZQUFZLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDakYsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FB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RSxJQUFJLElBQUksQ0FBQztBQUN4QixTQUFBLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEYsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEcsU0FBQSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLGdCQUFBLENBQUEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7O0FBR0EsSUFBQSxnQkFBQSxDQUFBLEtBQUssR0FBaUIsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDO1NBQzFELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUM5QixTQUFB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RSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxTQUFTLEdBQWlCLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQztBQUNsRSxTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2xGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxRQUFRLEdBQWlCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNoRSxTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVB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LEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEYsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDekMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEs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QUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzs7QUFFbEQsU0FBQSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pGLFNBQUEsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqRixTQUFBLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUUzRSxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUk7UUFDcEMsT0FBTyxpQkFBaUIsQ0FDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUN4RixDQUFDO0FBQ04sS0FBQyxDQUFDO1NBQ0QsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZELFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7U0FFMUQsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0UsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUUsU0FBQSxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLFNBQUEsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7U0FFNUYsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBTSxFQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7O1NBRWhGLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztBQUVwRSxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFB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QyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9DLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFVixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRS9ELEdBQUMsQ0FBQyxLQUFLLEVBQUVBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMwRSxHQUFDLEVBQUUsQ0FBQyxPQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBT0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRWYsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDZ0IsR0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFZCxHQUFDLEdBQUdsRSxHQUFDLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDa0UsR0FBQyxDQUFDbEUsR0FBQyxDQUFDLGlCQUFpQixHQUFHaUUsR0FBQyxFQUFFZSxHQUFDLEVBQUMsQ0FBQyxTQUFTQSxHQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDaEIsR0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDTSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ1csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQ0osR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUNLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUVKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVkLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDSSxHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQ0UsR0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDUSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFYixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ2dCLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUNSLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNTLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFNUYsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTMkYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxDQUFDQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNELEdBQUMsQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyx5QkFBeUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDN0YsR0FBQyxDQUFDLEtBQUssQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTNEYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUYsR0FBQyxDQUFDLEtBQUssQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTaUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNqRixHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJNEUsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDa0IsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQ3hCLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUN0RSxHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQ3NFLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBR0ssR0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUNZLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDL0YsR0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTa0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2xGLEdBQUMsQ0FBQyxHQUFHLEVBQUVBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTK0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTNCLEdBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUdxQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDTixHQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTSCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDdkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTc0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUd0RixHQUFDLENBQUMsT0FBTyxFQUFFQSxHQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUV1RixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUN2RixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRXNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVmLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLFNBQVN1QixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNoRyxHQUFDLENBQUMsRUFBRSxFQUFFQSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNpRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDVCxHQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRVAsR0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUNjLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU2UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUMsRUFBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUIsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTMEIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDaEMsR0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUNZLEdBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ1YsR0FBQyxDQUFDLEtBQUssQ0FBQ3JFLEdBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMrRCxHQUFDLENBQUMsQ0FBQyxDQUF1RGEsR0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUNOLEdBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDUyxHQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDSCxHQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUNILEdBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDRCxHQUFDLENBQUNYLEdBQUMsQ0FBQyxFQUFFLENBQUNDLEdBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQ2UsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNiLEdBQUMsQ0FBQyxDQUFDOztBQ0FuaVQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDckUsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxFQUFFQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNxRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ3JGLEdBQUMsQ0FBQyxHQUFHLEVBQUUrRSxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMvRSxHQUFDLENBQUMsR0FBRyxFQUFFK0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9BLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTWSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVNSLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM5RixHQUFDLENBQUMsYUFBYSxFQUFFQSxHQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQWlLLFNBQVNzRixHQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDbkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNrRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDbkYsR0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQSxHQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFc0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUN0RixHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNrRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDbkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQ2tGLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFbEYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxxQkFBcUIsQ0FBQyxTQUFTa0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNNLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FDQWgvRCxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUNwRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUl1RSxHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNDLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQ0ksR0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQUssZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNKLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPeEUsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUN3RSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUlELEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFdkUsR0FBQyxDQUFDeUUsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDekUsR0FBQyxDQUFDeUUsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUNFLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMzRSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixHQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSXVFLEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQ0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQywyT0FBMk8sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDVCxHQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQ0EsR0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0MsR0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLGNBQWMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNJLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNKLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRyxDQUFDLENBQUksSUFBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFhLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU94RSxHQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMwRSxHQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FB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QUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDMUMsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO0FBQzdCLFFBQUEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDL0MsWUFBQSxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFMUUsWUFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25CLFlBQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1RCxTQUFBO0FBQ0QsUUFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pCLEtBQUE7OztBQUlELElBQUEsSUFBSSxLQUFLLEdBQUcsQ0FBSyxFQUFBLEVBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQzs7SUFFdkcsS0FBSyxJQUFJLENBQUssRUFBQSxFQUFBLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLElBQUEsQ0FBTSxDQUFDOztBQUUxRSxJQUFBLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFB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RyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzVCLFNBQUMsQ0FBQyxDQUFDO0tBQ047O0FBR08sSUFBQSxjQUFjLENBQUMsVUFBeUIsRUFBQTs7QUFFNUMsUUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdEQsWUFBQSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQUcsZ0JBQUEsVUFBVSxDQUFDLElBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFNLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkcsU0FBQTtBQUVELFFBQUEsT0FBTyxVQUFVLENBQUM7S0FDckI7Ozs7QUFNRDs7O0FBR0c7QUFDSSxJQUFBLEtBQUssQ0FBQyxHQUFZLEVBQUE7QUFDckIsUUFBQSxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO0FBQUUsWUFBQSxPQUFPLEdBQUcsQ0FBQztBQUMzQyxRQUFBLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRSxRQUFBLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUMvQzs7QUFHTSxJQUFBLE9BQU8sQ0FBQyxHQUFZLEVBQUE7QUFDdkIsUUFBQSxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMzRDs7QUFHTSxJQUFBLFdBQVcsQ0FBQyxHQUFZLEVBQUE7QUFDM0IsUUFBQSxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDckM7O0FBR00sSUFB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 diff --git a/.obsidian/plugins/dataview/manifest.json b/.obsidian/plugins/dataview/manifest.json index 82d5c91..76d9e26 100644 --- a/.obsidian/plugins/dataview/manifest.json +++ b/.obsidian/plugins/dataview/manifest.json @@ -1,7 +1,7 @@ { "id": "dataview", "name": "Dataview", - "version": "0.5.55", + "version": "0.5.56", "minAppVersion": "0.13.11", "description": "Complex data views for the data-obsessed.", "author": "Michael Brenan ", diff --git a/.obsidian/plugins/easy-typing-obsidian/main.js b/.obsidian/plugins/easy-typing-obsidian/main.js index ced4d95..0a1e842 100644 --- a/.obsidian/plugins/easy-typing-obsidian/main.js +++ b/.obsidian/plugins/easy-typing-obsidian/main.js @@ -827,8 +827,8 @@ function matchWithAbbr(text, type, inlineTypeArray, checkArray = false) { } function splitTextWithLinkAndUserDefined(text, regExps) { let retArray = []; - let regWikiLink = /\!?\[\[[^\[\]]*?\]\]/g; - let regMdLink = /\!?\[[^\[\]]*?\]\([^\s\)\(\[\]\{\}']*\)/g; + let regWikiLink = /\!{0,2}\[\[[^\[\]]*?\]\]/g; + let regMdLink = /\!{0,2}\[[^\[\]]*?\]\([^\s\)\(\[\]\{\}']*\)/g; retArray = matchWithReg(text, regWikiLink, "wikilink" /* wikilink */, retArray); retArray = matchWithReg(text, regMdLink, "mdlink" /* mdlink */, retArray); let regExpList = []; @@ -1015,7 +1015,8 @@ var DEFAULT_SETTINGS = { userDelRuleSettingsOpen: true, userCvtRuleSettingsOpen: true, EnterTwice: false, - TryFixChineseIM: false + TryFixChineseIM: false, + PuncRectify: false }; var EasyTypingSettingTab = class extends import_obsidian2.PluginSettingTab { constructor(app, plugin) { @@ -1223,6 +1224,12 @@ var EasyTypingSettingTab = class extends import_obsidian2.PluginSettingTab { await this.plugin.saveSettings(); }); }); + new import_obsidian2.Setting(containerEl).setName("Punc rectify").setDesc("\u4EC5\u5728\u8F93\u5165\u8FC7\u7A0B\u4E2D\uFF0C\u4E2D\u6587\u95F4\u7684\u82F1\u6587\u6807\u70B9\uFF08,.?!\uFF09\u81EA\u52A8\u8F6C\u6362\u4E3A\u5168\u89D2\uFF08\u53EF\u64A4\u9500\uFF09").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.PuncRectify).onChange(async (value) => { + this.plugin.settings.PuncRectify = value; + await this.plugin.saveSettings(); + }); + }); new import_obsidian2.Setting(containerEl).setName("Print debug info in console").setDesc("\u5728\u63A7\u5236\u53F0\u8F93\u51FA\u8C03\u8BD5\u4FE1\u606F").addToggle((toggle) => { toggle.setValue(this.plugin.settings.debug).onChange(async (value) => { this.plugin.settings.debug = value; @@ -1719,6 +1726,21 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { return; } } + if (this.settings.PuncRectify && chineseEndFlag && this.compose_begin_pos > 1 && /[,.?!]/.test(update.view.state.doc.sliceString(this.compose_begin_pos - 1, this.compose_begin_pos))) { + let punc = update.view.state.doc.sliceString(this.compose_begin_pos - 1, this.compose_begin_pos); + if (this.compose_begin_pos > 2 && /[\s\n\w]/.test(update.view.state.doc.sliceString(this.compose_begin_pos - 2, this.compose_begin_pos - 1))) { + } else { + update.view.dispatch({ + changes: { + from: this.compose_begin_pos - 1, + to: this.compose_begin_pos, + insert: this.halfToFullSymbolMap.get(punc) + }, + userEvent: "EasyTyping.change" + }); + return; + } + } if (this.settings.AutoFormat && notSelected && !isExcludeFile && (changeType != "none" || insertedStr.contains("\n")) && getPosLineType(update.view.state, fromB) == "text" /* text */) { let changes = this.Formater.formatLineOfDoc(update.state, this.settings, fromB, cursor.anchor, insertedStr); if (changes != null) { @@ -2019,6 +2041,12 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { let SymbolPairs = ["\u3010\u3011", "\uFF08\uFF09", "\u300A\u300B", "\u201C\u201D", "\u2018\u2019", "\u300C\u300D", "\u300E\u300F"]; for (let pairStr of SymbolPairs) this.SymbolPairsMap.set(pairStr.charAt(0), pairStr.charAt(1)); + this.halfToFullSymbolMap = /* @__PURE__ */ new Map([ + [".", "\u3002"], + [",", "\uFF0C"], + ["?", "\uFF1F"], + ["!", "\uFF01"] + ]); let BasicConvRuleStringList = [ ["\xB7\xB7|", "`|`"], ["`\xB7|`", "```|\n```"], @@ -2031,8 +2059,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { [">\u300B|", ">>|"], ["\n\u300B|", "\n>|"], [" \u300B|", " >|"], - ["\n\u3001|", "\n/|"], - [" \u3001|", " /|"] + ["\n\u3001|", "\n/|"] ]; this.BasicConvRules = ruleStringList2RuleList(BasicConvRuleStringList); let FW2HWSymbolRulesStrList = [ @@ -2042,7 +2069,6 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { ["\uFF0C\uFF0C|", ",|"], ["\uFF1A\uFF1A|", ":|"], ["\uFF1F\uFF1F|", "?|"], - ["\u3001\u3001|", "/|"], ["\uFF08\uFF08|\uFF09", "(|)"], ["\uFF08\uFF08|", "(|)"], ["\u201C\u201C|\u201D", '"|"'], @@ -2335,4 +2361,4 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { await this.saveData(this.settings); } }; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL2NvcmUudHMiLCAic3JjL3V0aWxzLnRzIiwgInNyYy9zZXR0aW5ncy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBFZGl0b3IsIE1hcmtkb3duVmlldywgTW9kYWwsIE5vdGljZSwgUGx1Z2luLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBXb3Jrc3BhY2UsIFdvcmtzcGFjZUxlYWYsIFRGaWxlIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dCB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IFNlbGVjdGlvblJhbmdlLCBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBFYXN5VHlwaW5nU2V0dGluZ1RhYiwgRWFzeVR5cGluZ1NldHRpbmdzLCBERUZBVUxUX1NFVFRJTkdTLCBQYWlyU3RyaW5nLCBDb252ZXJ0UnVsZSB9IGZyb20gXCIuL3NldHRpbmdzXCJcbmltcG9ydCB7IEVkaXRvclZpZXcsIGtleW1hcCwgVmlld1VwZGF0ZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHsgcG9zVG9PZmZzZXQsIG9mZnNldFRvUG9zLCBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdCwgZ2V0VHlwZVN0ck9mVHJhbnNhYyB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBMaW5lRm9ybWF0ZXIsIGdldFBvc0xpbmVUeXBlLCBnZXRQb3NMaW5lVHlwZTIsIExpbmVUeXBlIH0gZnJvbSAnLi9jb3JlJ1xuaW1wb3J0IHsgc3ludGF4VHJlZSB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lUeXBpbmdQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXHRzZXR0aW5nczogRWFzeVR5cGluZ1NldHRpbmdzO1xuXHRzZWxlY3Rpb25SZXBsYWNlTWFwSW5pdGFsRGF0YTogW3N0cmluZywgUGFpclN0cmluZ11bXTtcblx0U2VsZWN0aW9uUmVwbGFjZU1hcDogTWFwPHN0cmluZywgUGFpclN0cmluZz47XG5cdFN5bWJvbFBhaXJzTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRCYXNpY0NvbnZSdWxlczogQ29udmVydFJ1bGVbXTtcblx0RlcySFdTeW1ib2xSdWxlczogQ29udmVydFJ1bGVbXTtcblx0Rm9ybWF0ZXI6IExpbmVGb3JtYXRlcjtcblx0SW50cmluc2ljRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdEludHJpbnNpY0F1dG9QYWlyUnVsZXNQYXRjaDogQ29udmVydFJ1bGVbXTtcblx0Q3VyQWN0aXZlTWFya2Rvd246IHN0cmluZztcblxuXHRVc2VyRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdFVzZXJDb252ZXJ0UnVsZXM6IENvbnZlcnRSdWxlW107XG5cdGxhbmc6IHN0cmluZztcblxuXHRjb21wb3NlX2JlZ2luX3BvczogbnVtYmVyO1xuXHRjb21wb3NlX2VuZF9wb3M6IG51bWJlcjtcblx0Y29tcG9zZV9uZWVkX2hhbmRsZTogYm9vbGVhbjtcblxuXG5cdGFzeW5jIG9ubG9hZCgpIHtcblx0XHRhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuXHRcdHRoaXMuc2VsZWN0aW9uUmVwbGFjZU1hcEluaXRhbERhdGEgPSBbXG5cdFx0XHRbXCJcdTMwMTBcIiwgeyBsZWZ0OiBcIltcIiwgcmlnaHQ6IFwiXVwiIH1dLCBbXCJcdUZGRTVcIiwgeyBsZWZ0OiBcIiRcIiwgcmlnaHQ6IFwiJFwiIH1dLCBbXCJcdTAwQjdcIiwgeyBsZWZ0OiBcImBcIiwgcmlnaHQ6IFwiYFwiIH1dLFxuXHRcdFx0W1wiXHUzMDBBXCIsIHsgbGVmdDogXCJcdTMwMEFcIiwgcmlnaHQ6IFwiXHUzMDBCXCIgfV0sIFtcIlx1MjAxQ1wiLCB7IGxlZnQ6IFwiXHUyMDFDXCIsIHJpZ2h0OiBcIlx1MjAxRFwiIH1dLCBbXCJcdTIwMURcIiwgeyBsZWZ0OiBcIlx1MjAxQ1wiLCByaWdodDogXCJcdTIwMURcIiB9XSwgW1wiXHVGRjA4XCIsIHsgbGVmdDogXCJcdUZGMDhcIiwgcmlnaHQ6IFwiXHVGRjA5XCIgfV0sXG5cdFx0XHRbXCI8XCIsIHsgbGVmdDogXCI8XCIsIHJpZ2h0OiBcIj5cIiB9XVxuXHRcdF07XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0XHR0aGlzLlN5bWJvbFBhaXJzTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblx0XHRsZXQgU3ltYm9sUGFpcnMgPSBbXCJcdTMwMTBcdTMwMTFcIiwgXCJcdUZGMDhcdUZGMDlcIiwgXCJcdTMwMEFcdTMwMEJcIiwgXCJcdTIwMUNcdTIwMURcIiwgXCJcdTIwMThcdTIwMTlcIiwgXCJcdTMwMENcdTMwMERcIiwgXCJcdTMwMEVcdTMwMEZcIl1cblx0XHRmb3IgKGxldCBwYWlyU3RyIG9mIFN5bWJvbFBhaXJzKSB0aGlzLlN5bWJvbFBhaXJzTWFwLnNldChwYWlyU3RyLmNoYXJBdCgwKSwgcGFpclN0ci5jaGFyQXQoMSkpO1xuXHRcdGxldCBCYXNpY0NvbnZSdWxlU3RyaW5nTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbWydcdTAwQjdcdTAwQjd8JywgJ2B8YCddLCBbXCJgXHUwMEI3fGBcIiwgXCJgYGB8XFxuYGBgXCJdLFxuXHRcdFtcIlx1MzAxMFx1MzAxMHxcdTMwMTFcIiwgXCJbW3xdXVwiXSwgWydcdTMwMTBcdTMwMTB8JywgXCJbW3xdXVwiXSwgWydcdUZGRTVcdUZGRTV8JywgJyR8JCddLCBbJyRcdUZGRTV8JCcsIFwiJCRcXG58XFxuJCRcIl0sIFtcIiQkfCRcIiwgXCIkJFxcbnxcXG4kJFwiXSwgWyckJHwnLCBcIiR8JFwiXSxcblx0XHRbXCI+XHUzMDBCfFwiLCBcIj4+fFwiXSwgWydcXG5cdTMwMEJ8JywgXCJcXG4+fFwiXSwgW1wiIFx1MzAwQnxcIiwgXCIgPnxcIl0sIFtcIlxcblx1MzAwMXxcIiwgXCJcXG4vfFwiXSwgWycgXHUzMDAxfCcsIFwiIC98XCJdXTtcblx0XHR0aGlzLkJhc2ljQ29udlJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoQmFzaWNDb252UnVsZVN0cmluZ0xpc3QpO1xuXHRcdGxldCBGVzJIV1N5bWJvbFJ1bGVzU3RyTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbW1wiXHUzMDAyXHUzMDAyfFwiLCBcIi58XCJdLCBbXCJcdUZGMDFcdUZGMDF8XCIsIFwiIXxcIl0sIFtcIlx1RkYxQlx1RkYxQnxcIiwgXCI7fFwiXSwgW1wiXHVGRjBDXHVGRjBDfFwiLCBcIix8XCJdLFxuXHRcdFtcIlx1RkYxQVx1RkYxQXxcIiwgXCI6fFwiXSwgWydcdUZGMUZcdUZGMUZ8JywgJz98J10sIFsnXHUzMDAxXHUzMDAxfCcsICcvfCddLCBbJ1x1RkYwOFx1RkYwOHxcdUZGMDknLCBcIih8KVwiXSwgWydcdUZGMDhcdUZGMDh8JywgJyh8KSddLCBbXCJcdTIwMUNcdTIwMUN8XHUyMDFEXCIsIFwiXFxcInxcXFwiXCJdLCBbXCJcdTIwMUNcdTIwMUR8XHUyMDFEXCIsIFwiXFxcInxcXFwiXCJdLFxuXHRcdFtcIlx1MzAwQlx1MzAwQnxcIiwgXCI+fFwiXSwgW1wiXHUzMDBBXHUzMDBBfFx1MzAwQlwiLCBcIjx8XCJdLCBbJ1x1MzAwQVx1MzAwQXwnLCBcIjx8XCJdXTtcblx0XHR0aGlzLkZXMkhXU3ltYm9sUnVsZXMgPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdChGVzJIV1N5bWJvbFJ1bGVzU3RyTGlzdCk7XG5cblx0XHRsZXQgRGVsZXRlUnVsZXNTdHJMaXN0OiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtbXCIkfCRcIiwgXCJ8XCJdLCBbJ2BgYHxcXG5gYGAnLCAnfCddLCBbJz09fD09JywgJ3wnXSwgWyckJFxcbnxcXG4kJCcsIFwifFwiXV07XG5cdFx0dGhpcy5JbnRyaW5zaWNEZWxldGVSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KERlbGV0ZVJ1bGVzU3RyTGlzdCk7XG5cblx0XHQvLyBsZXRcblx0XHRsZXQgYXV0b1BhaXJSdWxlc1BhdGNoU3RyTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbW1wiXHUzMDEwXHUzMDExfFx1MzAxMVwiLCBcIlx1MzAxMFx1MzAxMXxcIl0sIFtcIlx1RkYwOFx1RkYwOXxcdUZGMDlcIiwgXCJcdUZGMDhcdUZGMDl8XCJdLFxuXHRcdFtcIjw+fD5cIiwgXCI8PnxcIl0sIFtcIlx1MzAwQVx1MzAwQnxcdTMwMEJcIiwgXCJcdTMwMEFcdTMwMEJ8XCJdLCBbXCJcdTMwMENcdTMwMER8XHUzMDBEXCIsIFwiXHUzMDBDXHUzMDBEfFwiXSwgW1wiXHUzMDBFXHUzMDBGfFx1MzAwRlwiLCBcIlx1MzAwRVx1MzAwRnxcIl1cblx0XHRdO1xuXHRcdHRoaXMuSW50cmluc2ljQXV0b1BhaXJSdWxlc1BhdGNoID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoYXV0b1BhaXJSdWxlc1BhdGNoU3RyTGlzdCk7XG5cblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpO1xuXG5cdFx0dGhpcy5DdXJBY3RpdmVNYXJrZG93biA9IFwiXCI7XG5cblx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSBmYWxzZTtcblxuXHRcdHRoaXMuRm9ybWF0ZXIgPSBuZXcgTGluZUZvcm1hdGVyKCk7XG5cblx0XHR0aGlzLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFtcblx0XHRcdEVkaXRvclN0YXRlLnRyYW5zYWN0aW9uRmlsdGVyLm9mKHRoaXMudHJhbnNhY3Rpb25GaWx0ZXJQbHVnaW4pLFxuXHRcdFx0RWRpdG9yVmlldy51cGRhdGVMaXN0ZW5lci5vZih0aGlzLnZpZXdVcGRhdGVQbHVnaW4pLFxuXHRcdFx0UHJlYy5oaWdoZXN0KEVkaXRvclZpZXcuZG9tRXZlbnRIYW5kbGVycyh7XG5cdFx0XHRcdFwia2V5dXBcIjogdGhpcy5vbktleXVwXG5cdFx0XHR9KSlcblx0XHRdKTtcblx0XHRcblxuXHRcdHRoaXMucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oUHJlYy5oaWdoZXN0KGtleW1hcC5vZihbXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJUYWJcIixcblx0XHRcdFx0cnVuOiAodmlldzogRWRpdG9yVmlldyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmhhbmRsZVRhYkRvd24odmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1Y2Nlc3M7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJFbnRlclwiLFxuXHRcdFx0XHRydW46ICh2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc3VjY2VzcyA9IHRoaXMuaGFuZGxlRW50ZXIodmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1Y2Nlc3M7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRdKSkpO1xuXG5cdFx0dGhpcy5sYW5nID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpO1xuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwID0gdGhpcy5nZXRDb21tYW5kTmFtZU1hcCgpO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1hcnRpY2xlXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImZvcm1hdF9hcnRpY2xlXCIpLFxuXHRcdFx0ZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KSA9PiB7XG5cdFx0XHRcdHRoaXMuZm9ybWF0QXJ0aWNsZShlZGl0b3IsIHZpZXcpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJzXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1zZWxlY3Rpb25cIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwiZm9ybWF0X3NlbGVjdGlvblwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmZvcm1hdFNlbGVjdGlvbk9yQ3VyTGluZShlZGl0b3IsIHZpZXcpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJsXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWRlbGV0ZS1ibGFuay1saW5lXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImRlbGV0ZV9ibGFua19saW5lXCIpLFxuXHRcdFx0ZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KSA9PiB7XG5cdFx0XHRcdHRoaXMuZGVsZXRlQmxhbmtMaW5lcyhlZGl0b3IpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJrXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWluc2VydC1jb2RlYmxvY2tcIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwiaW5zZXJ0X2NvZGVibG9ja1wiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmNvbnZlcnQyQ29kZUJsb2NrKGVkaXRvcik7XG5cdFx0XHR9LFxuXHRcdFx0aG90a2V5czogW3tcblx0XHRcdFx0bW9kaWZpZXJzOiBbJ0N0cmwnLCAnU2hpZnQnXSxcblx0XHRcdFx0a2V5OiBcIm5cIlxuXHRcdFx0fV0sXG5cdFx0fSk7XG5cblx0XHR0aGlzLmFkZENvbW1hbmQoe1xuXHRcdFx0aWQ6IFwiZWFzeS10eXBpbmctZm9ybWF0LXN3aXRjaFwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiKSxcblx0XHRcdGNhbGxiYWNrOiAoKSA9PiB0aGlzLnN3aXRjaEF1dG9Gb3JtYXR0aW5nKCksXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCddLFxuXHRcdFx0XHRrZXk6IFwidGFiXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0Ly8gVGhpcyBhZGRzIGEgc2V0dGluZ3MgdGFiIHNvIHRoZSB1c2VyIGNhbiBjb25maWd1cmUgdmFyaW91cyBhc3BlY3RzIG9mIHRoZSBwbHVnaW5cblx0XHR0aGlzLmFkZFNldHRpbmdUYWIobmV3IEVhc3lUeXBpbmdTZXR0aW5nVGFiKHRoaXMuYXBwLCB0aGlzKSk7XG5cblx0XHR0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy5hcHAud29ya3NwYWNlLm9uKCdhY3RpdmUtbGVhZi1jaGFuZ2UnLCAobGVhZjogV29ya3NwYWNlTGVhZikgPT4ge1xuXHRcdFx0aWYgKGxlYWYudmlldy5nZXRWaWV3VHlwZSgpPT0nbWFya2Rvd24nKXtcblx0XHRcdFx0bGV0IGZpbGUgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuXHRcdFx0XHRpZiAoZmlsZSE9bnVsbCAmJiB0aGlzLkN1ckFjdGl2ZU1hcmtkb3duICE9IGZpbGUucGF0aClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gPSBmaWxlLnBhdGg7XG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpXG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKCduZXcgbWQtZmlsZSBvcGVuOiAnK2ZpbGUucGF0aClcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pKTtcblxuXHRcdC8vIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2ZpbGUtb3BlbicsIChmaWxlOiBURmlsZSB8IG51bGwpID0+IHtcblx0XHQvLyBcdGlmIChmaWxlICE9IG51bGwpIHtcblx0XHQvLyBcdFx0bGV0IGVkaXRvciA9IHRoaXMuZ2V0RWRpdG9yKCk7XG5cdFx0Ly8gXHRcdGlmIChlZGl0b3IgPT09IG51bGwpIHJldHVybjtcblx0XHQvLyBcdFx0dGhpcy5Db250ZW50UGFyc2VyLnBhcnNlTmV3QXJ0aWNsZShlZGl0b3IuZ2V0VmFsdWUoKSk7XG5cdFx0Ly8gXHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSB7XG5cdFx0Ly8gXHRcdFx0bmV3IE5vdGljZShcIkVhc3lUeXBpbmc6IFBhcnNlIE5ldyBBcnRpY2xlOiBcIiArIGZpbGUudmF1bHQuZ2V0TmFtZSgpICsgJy8nICsgZmlsZS5wYXRoKTtcblx0XHQvLyBcdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgdGhpcy5Db250ZW50UGFyc2VyLnByaW50KCk7XG5cdFx0Ly8gXHRcdH1cblx0XHQvLyBcdH1cblx0XHQvLyB9KSk7XG5cdH1cblxuXHRvbnVubG9hZCgpIHtcblx0fVxuXG5cdHRyYW5zYWN0aW9uRmlsdGVyUGx1Z2luID0gKHRyOiBUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uU3BlYyB8IHJlYWRvbmx5IFRyYW5zYWN0aW9uU3BlY1tdID0+IHtcblx0XHRjb25zdCBjaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuXHRcdGlmICghdHIuZG9jQ2hhbmdlZCkgcmV0dXJuIHRyO1xuXHRcdGxldCBzZWxlY3RlZCA9IHRyLnN0YXJ0U3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbi5hbmNob3IhPXRyLnN0YXJ0U3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbi5oZWFkO1xuXG5cdFx0bGV0IGNoYW5nZVR5cGVTdHIgPSBnZXRUeXBlU3RyT2ZUcmFuc2FjKHRyKTtcblx0XHR0ci5jaGFuZ2VzLml0ZXJDaGFuZ2VzKChmcm9tQSwgdG9BLCBmcm9tQiwgdG9CLCBpbnNlcnRlZCkgPT4ge1xuXHRcdFx0bGV0IGNoYW5nZWRTdHIgPSB0ci5zdGFydFN0YXRlLnNsaWNlRG9jKGZyb21BLCB0b0EpO1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gaW5zZXJ0ZWQuc2xpY2VTdHJpbmcoMCk7XG5cdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1Zylcblx0XHRcdC8vIHtcblx0XHRcdC8vIFx0Y29uc29sZS5sb2coXCJUcmFuc2FjdGlvbkZpbHRlciBjYXRjaCBjaGFuZ2U6XCIsY2hhbmdlVHlwZVN0ciwgZnJvbUEsIHRvQSwgZnJvbUIsIHRvQiwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0Ly8gfVxuXHRcdFx0Ly8gPT09PT09PT09PSBTZWxlY3Rpb24gUmVwbGFjZSA9PT09PT09PT09PT1cblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLlNlbGVjdGlvbkVuaGFuY2UpIHtcblx0XHRcdFx0aWYgKChjaGFuZ2VUeXBlU3RyID09ICdpbnB1dC50eXBlJyB8fCBjaGFuZ2VUeXBlU3RyID09IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpICYmIGZyb21BICE9IHRvQSAmJiBmcm9tQiArIDEgPT09IHRvQikge1xuXHRcdFx0XHRcdGlmICh0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuaGFzKGluc2VydGVkU3RyKSkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHsgY2hhbmdlczogeyBmcm9tOiBmcm9tQSwgaW5zZXJ0OiB0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuZ2V0KGluc2VydGVkU3RyKT8ubGVmdCB9LCB1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIiB9KVxuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHsgY2hhbmdlczogeyBmcm9tOiB0b0EsIGluc2VydDogdGhpcy5TZWxlY3Rpb25SZXBsYWNlTWFwLmdldChpbnNlcnRlZFN0cik/LnJpZ2h0IH0sIHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiIH0pXG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc2VsZWN0ZWQpIHJldHVybiB0cjtcblxuXHRcdFx0Ly8gVXNlckRlZmluZWQgRGVsZXRlIFJ1bGVcblx0XHRcdGlmIChjaGFuZ2VUeXBlU3RyID09IFwiZGVsZXRlLmJhY2t3YXJkXCIpIHtcblx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLlVzZXJEZWxldGVSdWxlcykge1xuXHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQSk7XG5cdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BLCB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyA9PT09PT09PT09IGRlbGV0ZSBwYWlyIHN5bWJvbCA9PT09PT09PT09PT1cblx0XHRcdGlmIChjaGFuZ2VUeXBlU3RyID09PSBcImRlbGV0ZS5iYWNrd2FyZFwiICYmIHRoaXMuc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMpIHtcblx0XHRcdFx0aWYgKHRoaXMuU3ltYm9sUGFpcnNNYXAuaGFzKGNoYW5nZWRTdHIpICYmIHRoaXMuU3ltYm9sUGFpcnNNYXAuZ2V0KGNoYW5nZWRTdHIpID09PSB0ci5zdGFydFN0YXRlLnNsaWNlRG9jKHRvQSwgdG9BICsgMSkpIHtcblx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IGZyb21BLCB0bzogdG9BICsgMSB9LCB1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIiB9KTtcblx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuSW50cmluc2ljRGVsZXRlUnVsZXMpIHtcblx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0EpO1xuXHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQSwgdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gXHU5MDFBXHU1RTM4XHU1MzU1XHU1QjU3XHU4RjkzXHU1MTY1XG5cdFx0XHRpZiAoKGNoYW5nZVR5cGVTdHIgPT0gJ2lucHV0LnR5cGUnIHx8IGNoYW5nZVR5cGVTdHIgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIikgJiYgZnJvbUEgPT09IHRvQSAmJiBmcm9tQiArIDEgPT09IHRvQikge1xuXHRcdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCJJbnB1dC50eXBlID0+IFwiLCBpbnNlcnRlZFN0cilcblx0XHRcdFx0Ly8gPT09PT09PT09PT0gYmFzaWMgY29udmVydCBydWxlcyA9PT09PT09PT09PT1cblx0XHRcdFx0Ly8gbm90IHN1cHBvcnQgdW5kbyBhbmQgcmVkb1xuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5CYXNlT2JFZGl0RW5oYW5jZSkge1xuXHRcdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5CYXNpY0NvbnZSdWxlcykge1xuXHRcdFx0XHRcdFx0aWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuY2hhckF0KHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gMSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0Ly8gXHU1OTA0XHU3NDA2XHU2NTg3XHU2ODYzXHU3QjJDIDAgXHU4ODRDXG5cdFx0XHRcdFx0XHRpZiAocnVsZS5iZWZvcmUubGVmdC5jaGFyQXQoMCkgPT09ICdcXG4nICYmIG9mZnNldFRvUG9zKHRyLnN0YXRlLmRvYywgZnJvbUEpLmxpbmUgPT09IDAgJiYgdG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSwgdG9CKTtcblx0XHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQuc3Vic3RyaW5nKDEpICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQuc3Vic3RyaW5nKDEpICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIFx1OTAxQVx1NUUzOFx1NjBDNVx1NTFCNVx1NTkwNFx1NzQwNlxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0IpO1xuXHRcdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5GVzJIV0VuaGFuY2UpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuRlcySFdTeW1ib2xSdWxlcykge1xuXHRcdFx0XHRcdFx0aWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuY2hhckF0KHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gMSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQik7XG5cdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoICsgMSB9LFxuXHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gPT09PT09PT09PT09PT09PSBhdXRvIHBhaXIgPT09PT09PT09PT09PT09PT1cblx0XHRcdFx0Ly8gbGV0IFBhaXJWYWxpZFNldCA9IG5ldyBTZXQoW1wiXCIsIFwiIFwiLFwiXFxuXCJdKVxuXHRcdFx0XHQvLyBsZXQgY2hhckFmdGVyQ3Vyc29yID0gdHIuc3RhcnRTdGF0ZS5zbGljZURvYyh0b0EsIHRvQSsxKTtcblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuSW50cmluc2ljQXV0b1BhaXJSdWxlc1BhdGNoKSB7XG5cdFx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5jaGFyQXQocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSAxKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9CKTtcblx0XHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggKyAxIH0sXG5cdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAodGhpcy5TeW1ib2xQYWlyc01hcC5oYXMoaW5zZXJ0ZWRTdHIpKSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7IGZyb206IGZyb21BLCB0bzogdG9BLCBpbnNlcnQ6IGluc2VydGVkU3RyICsgdGhpcy5TeW1ib2xQYWlyc01hcC5nZXQoaW5zZXJ0ZWRTdHIpIH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IGZyb21BICsgMSB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBoYW5kbGUgYXV0b3BhaXIgZm9yIFwiXHUyMDFEXCIgYW5kIFwiXHUyMDE5XCJcblx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgPT09ICdcdTIwMUQnIHx8IGluc2VydGVkU3RyID09PSAnXHUyMDE5Jykge1xuXHRcdFx0XHRcdFx0bGV0IHRlbXBTdHIgPSBpbnNlcnRlZFN0ciA9PT0gXCJcdTIwMURcIiA/IFwiXHUyMDFDXHUyMDFEXCIgOiBcIlx1MjAxOFx1MjAxOVwiO1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczogeyBmcm9tOiBmcm9tQSwgdG86IHRvQSwgaW5zZXJ0OiB0ZW1wU3RyIH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IGZyb21BICsgMSB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pXG5cdFx0cmV0dXJuIHRyO1xuXHR9XG5cblx0dmlld1VwZGF0ZVBsdWdpbiA9ICh1cGRhdGU6IFZpZXdVcGRhdGUpID0+IHtcblxuXHRcdC8vIGNvbnNvbGUubG9nKHRyZWUpO1xuXG5cdFx0Ly8gaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiLS0tLS0tLVZpZXdVcGRhdGUtLS0tLS0tLS1cIik7XG5cdFx0bGV0IG5vdFNlbGVjdGVkID0gdHJ1ZTtcblx0XHRsZXQgbWFpblNlbGVjdGlvbiA9IHVwZGF0ZS52aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0aWYgKG1haW5TZWxlY3Rpb24uYW5jaG9yICE9IG1haW5TZWxlY3Rpb24uaGVhZCkgbm90U2VsZWN0ZWQgPSBmYWxzZTtcblx0XHQvLyAtLS0tLS0gRGVidWcgLS0tLS0tLS0tLS0tXG5cdFx0Ly8gaWYgKG5vdFNlbGVjdGVkKXtcblx0XHQvLyBcdC8vIHRoaXMuRm9ybWF0ZXIucGFyc2VMaW5lV2l0aFN5bnRheFRyZWUodXBkYXRlLnN0YXRlLCB1cGRhdGUuc3RhdGUuZG9jLmxpbmVBdChtYWluU2VsZWN0aW9uLmFuY2hvcikubnVtYmVyKTtcblx0XHQvLyBcdGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHVwZGF0ZS5zdGF0ZSk7XG5cdFx0Ly8gXHRsZXQgcG9zID0gbWFpblNlbGVjdGlvbi5hbmNob3I7XG5cdFx0Ly8gXHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShwb3MsIDEpO1xuXHRcdC8vIFx0Y29uc29sZS5sb2cobm9kZS5uYW1lLCBub2RlLmZyb20sIG5vZGUudG8sIHVwZGF0ZS5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcobm9kZS5mcm9tLCBub2RlLnRvKSk7XG5cdFx0Ly8gfVxuXG5cdFx0aWYgKCF1cGRhdGUuZG9jQ2hhbmdlZCkgcmV0dXJuO1xuXG5cdFx0bGV0IGlzRXhjbHVkZUZpbGUgPSB0aGlzLmlzQ3VycmVudEZpbGVFeGNsdWRlKCk7XG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5DdXJBY3RpdmVNYXJrZG93biwgaXNFeGNsdWRlRmlsZSlcblxuXHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIi0tLS0tVmlld1VwZGF0ZVdDaGFuZ2UtLS0tLVwiKTtcblx0XHRsZXQgdHIgPSB1cGRhdGUudHJhbnNhY3Rpb25zWzBdXG5cdFx0bGV0IGNoYW5nZVR5cGUgPSBnZXRUeXBlU3RyT2ZUcmFuc2FjKHRyKTtcblx0XHR0ci5jaGFuZ2VzLml0ZXJDaGFuZ2VzKChmcm9tQSwgdG9BLCBmcm9tQiwgdG9CLCBpbnNlcnRlZCkgPT4ge1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gaW5zZXJ0ZWQuc2xpY2VTdHJpbmcoMCk7XG5cdFx0XHRsZXQgY2hhbmdlZFN0ciA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKGZyb21BLCB0b0EpO1xuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpXG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiVmlld1VwZGF0ZSBDYXRjaCBDaGFuZ2UtPiBUeXBlOiBcIiArIGNoYW5nZVR5cGUgKyBcIiwgXCIsIGZyb21BLCB0b0EsIGNoYW5nZWRTdHIsIGZyb21CLCB0b0IsIGluc2VydGVkU3RyKTtcblxuXHRcdFx0Ly8gXHU2MjdFXHU1MjMwXHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU2QkQ0XHU4RjgzXHU1NDhDIHRvQiBcdTc2ODRcdTRGNERcdTdGNkVcdTY2MkZcdTU0MjZcdTc2RjhcdTU0MENcdUZGMENcdTc2RjhcdTU0MENcdTRFMTRcdTY3MDBcdTdFQzhcdTYzRDJcdTUxNjVcdTY1ODdcdTVCNTdcdTRFM0FcdTRFMkRcdTY1ODdcdUZGMENcdTUyMTlcdTRFM0FcdTRFMkRcdTY1ODdcdThGOTNcdTUxNjVcdTdFRDNcdTY3NUZcdTc2ODRcdTcyQjZcdTYwMDFcblx0XHRcdGxldCBjdXJzb3IgPSB1cGRhdGUudmlldy5zdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluO1xuXHRcdFx0bGV0IENoaW5lc2VSZWdFeHAgPSAvXltcXHU0ZTAwLVxcdTlmYTVcdTMwMTBcdTMwMTFcdTAwQjdcdUZGRTVcdTMwMEFcdTMwMEJcdUZGMUZcdUZGMUFcdTIwMTlcdTIwMThcdTIwMURcdTIwMUNcdTMwMENcdTMwMERcdTMwMDFcdTMwMDJcdUZGMENcdUZGMDhcdUZGMDlcdUZGMDFcdTIwMTRcdTIwMTRcdTIwMjZcdTIwMjYwLTldKyQvO1xuXHRcdFx0bGV0IGNoaW5lc2VFbmRGbGFnID0gY2hhbmdlVHlwZSA9PSBcImlucHV0LnR5cGUuY29tcG9zZVwiICYmXG5cdFx0XHRcdGN1cnNvci5hbmNob3IgPT0gY3Vyc29yLmhlYWQgJiYgY3Vyc29yLmFuY2hvciA9PT0gdG9CICYmXG5cdFx0XHRcdENoaW5lc2VSZWdFeHAudGVzdChpbnNlcnRlZFN0cik7XG5cblx0XHRcdGlmIChjaGFuZ2VUeXBlICE9IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZT1mYWxzZTtcblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgbm90U2VsZWN0ZWQgJiYgIWlzRXhjbHVkZUZpbGUgJiZcblx0XHRcdFx0Z2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIGZyb21CKSA9PSBMaW5lVHlwZS50ZXh0KXtcblx0XHRcdFx0aWYgKGNoYW5nZVR5cGUgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIil7XG5cdFx0XHRcdFx0aWYgKHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZT09ZmFsc2Upe1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2JlZ2luX3BvcyA9IGZyb21CO1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2VuZF9wb3MgPSB0b0I7XG5cdFx0XHRcdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2VuZF9wb3MgPSB0b0I7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmNvbXBvc2VfYmVnaW5fcG9zPT10aGlzLmNvbXBvc2VfZW5kX3Bvcyl7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY2hpbmVzZUVuZEZsYWcpIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZT1mYWxzZTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJDb21wb3NlXCIsIGNoaW5lc2VFbmRGbGFnLCB0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUpO1xuXHRcdFx0fVxuXHRcdFx0XG5cblx0XHRcdC8vIFx1NTIyNFx1NjVBRFx1NkJDRlx1NkIyMVx1OEY5M1x1NTE2NVx1N0VEM1x1Njc1RlxuXHRcdFx0aWYgKGNoYW5nZVR5cGUgPT0gJ2lucHV0LnR5cGUnIHx8IGNoYW5nZVR5cGUgPT0gXCJpbnB1dFwiIHx8IGNoaW5lc2VFbmRGbGFnIHx8IGNoYW5nZVR5cGUgPT0gJ25vbmUnKSB7XG5cdFx0XHRcdC8vIFx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1OEY2Q1x1NTMxNlx1ODlDNFx1NTIxOVxuXHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuVXNlckNvbnZlcnRSdWxlcykge1xuXHRcdFx0XHRcdC8vIGlmIChpbnNlcnRlZFN0ciAhPSBydWxlLmJlZm9yZS5sZWZ0LnN1YnN0cmluZyhydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCAtIGluc2VydGVkU3RyLmxlbmd0aCkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGxldCBsZWZ0ID0gdXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0IpO1xuXHRcdFx0XHRcdGxldCByaWdodCA9IHVwZGF0ZS52aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHR0bzogdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gXHU1MjI0XHU2NUFEXHU2ODNDXHU1RjBGXHU1MzE2XHU2NTg3XHU2NzJDXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwicmVhZHkgdG8gZm9ybWF0XCIpO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcImNoZWNrIGlzIGV4Y2x1ZSBmaWxlOlwiLCBpc0V4Y2x1ZGVGaWxlKVxuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ICYmIG5vdFNlbGVjdGVkICYmICFpc0V4Y2x1ZGVGaWxlICYmIChjaGFuZ2VUeXBlICE9ICdub25lJyB8fCBpbnNlcnRlZFN0ci5jb250YWlucyhcIlxcblwiKSkgJiZcblx0XHRcdFx0XHRnZXRQb3NMaW5lVHlwZSh1cGRhdGUudmlldy5zdGF0ZSwgZnJvbUIpID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdFx0XHRsZXQgY2hhbmdlcyA9IHRoaXMuRm9ybWF0ZXIuZm9ybWF0TGluZU9mRG9jKHVwZGF0ZS5zdGF0ZSwgdGhpcy5zZXR0aW5ncywgZnJvbUIsIGN1cnNvci5hbmNob3IsIGluc2VydGVkU3RyKTtcblx0XHRcdFx0XHRpZiAoY2hhbmdlcyAhPSBudWxsKSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCguLi5jaGFuZ2VzWzBdKTtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKGNoYW5nZXNbMV0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ICYmICFpc0V4Y2x1ZGVGaWxlICYmIGNoYW5nZVR5cGUgPT0gXCJpbnB1dC5wYXN0ZVwiICYmICFQbGF0Zm9ybS5pc0lvc0FwcCkge1xuXHRcdFx0XHRsZXQgdXBkYXRlTGluZVN0YXJ0ID0gdXBkYXRlLnN0YXRlLmRvYy5saW5lQXQoZnJvbUIpLm51bWJlcjtcblx0XHRcdFx0bGV0IHVwZGF0ZUxpbmVFbmQgPSB1cGRhdGUuc3RhdGUuZG9jLmxpbmVBdCh0b0IpLm51bWJlcjtcblx0XHRcdFx0aWYgKHVwZGF0ZUxpbmVTdGFydCA9PSB1cGRhdGVMaW5lRW5kICYmIGdldFBvc0xpbmVUeXBlKHVwZGF0ZS52aWV3LnN0YXRlLCB0b0IpID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdFx0XHRsZXQgY2hhbmdlcyA9IHRoaXMuRm9ybWF0ZXIuZm9ybWF0TGluZU9mRG9jKHVwZGF0ZS5zdGF0ZSwgdGhpcy5zZXR0aW5ncywgdG9CLCB0b0IsIGluc2VydGVkU3RyKTtcblx0XHRcdFx0XHRpZiAoY2hhbmdlcyAhPSBudWxsKSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCguLi5jaGFuZ2VzWzBdKTtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKGNoYW5nZXNbMV0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gdXBkYXRlTGluZVN0YXJ0OyBpIDw9IHVwZGF0ZUxpbmVFbmQ7IGkrKykge1xuXHRcdFx0XHRcdFx0dGhpcy5mb3JtYXRPbmVMaW5lKHRoaXMuZ2V0RWRpdG9yKCksIGkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1x0Ly8gaXRlcmNoYW5nZXMgZW5kXG5cdH1cblxuXHRwcml2YXRlIHJlYWRvbmx5IGhhbmRsZVRhYkRvd24gPSAodmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5UYWJvdXQpIHJldHVybiBmYWxzZTtcblxuXHRcdGxldCBzdGF0ZSA9IHZpZXcuc3RhdGU7XG5cdFx0bGV0IGRvYyA9IHN0YXRlLmRvY1xuXHRcdGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcblx0XHRjb25zdCBzID0gdmlldy5zdGF0ZS5zZWxlY3Rpb247XG5cdFx0aWYgKHMucmFuZ2VzLmxlbmd0aCA+IDEpIHJldHVybiBmYWxzZTtcblx0XHRjb25zdCBwb3MgPSBzLm1haW4udG87XG5cdFx0bGV0IGxpbmUgPSBkb2MubGluZUF0KHBvcylcblxuXHRcdC8vIERlYnVnIGluZm9cblx0XHQvLyBjb25zb2xlLmxvZyhsaW5lLnRleHQpXG5cdFx0Ly8gZm9yIChsZXQgcD1saW5lLmZyb207IHA8PWxpbmUudG87IHArPTEpe1xuXHRcdC8vIFx0Y29uc3QgdG9rZW4gPSB0cmVlLnJlc29sdmUocCwgMSkubmFtZVxuXHRcdC8vIFx0Y29uc29sZS5sb2cocC1saW5lLmZyb20sIHRva2VuKVxuXHRcdC8vIH1cblx0XHQvLyByZXR1cm4gdHJ1ZTtcblxuXHRcdC8vIFx1NUY1M1x1NTE0OVx1NjgwN1x1NTcyOFx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTE4NVx1OTBFOFxuXHRcdGlmIChwb3MgLSBsaW5lLmZyb20gIT0gMCAmJiB0cmVlLnJlc29sdmUocG9zIC0gMSwgMSkubmFtZS5jb250YWlucygnaW5saW5lLWNvZGUnKSkge1xuXHRcdFx0aWYgKHRyZWUucmVzb2x2ZShwb3MsIDEpLm5hbWUuY29udGFpbnMoJ2Zvcm1hdHRpbmctY29kZV9pbmxpbmUtY29kZScpKSB7XG5cdFx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHBvcyArIDEsIGhlYWQ6IHBvcyArIDEgfVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChsZXQgcCA9IHBvcyArIDE7IHAgPCBsaW5lLnRvICYmIHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdpbmxpbmUtY29kZScpOyBwICs9IDEpIHtcblx0XHRcdFx0Ly8gXHU1OTgyXHU2NzlDXHU2MjdFXHU1MjMwIGAgXHU1MjE5XHU1MTQ5XHU2ODA3XHU4REYzXHU1MjMwXHU1MTc2XHU1NDBFXG5cdFx0XHRcdGlmICh0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnZm9ybWF0dGluZy1jb2RlX2lubGluZS1jb2RlJykpIHtcblx0XHRcdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHAsIGhlYWQ6IHAgfVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gXHU1OTgyXHU2NzlDXHU2Q0ExXHU2MjdFXHU1MjMwIGAgXHU1MjE5XHU3NkY0XHU2M0E1XHU4REYzXHU1MjMwXHU4ODRDXHU1QzNFXG5cdFx0XHRcdGlmIChwID09IGxpbmUudG8gLSAxICYmIHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdpbmxpbmUtY29kZScpKSB7XG5cdFx0XHRcdFx0dmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBwICsgMSwgaGVhZDogcCArIDEgfVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwcml2YXRlIHJlYWRvbmx5IGhhbmRsZUVudGVyID0gKHZpZXc6IEVkaXRvclZpZXcpID0+IHtcblx0XHQvLyBjb25zb2xlLmxvZyhcInRoaXMuc2V0dGluZ3MuRW50ZXJUd2ljZVwiLCB0aGlzLnNldHRpbmdzLkVudGVyVHdpY2UpXG5cdFx0aWYgKCF0aGlzLnNldHRpbmdzLkVudGVyVHdpY2UpIHJldHVybiBmYWxzZTtcblxuXHRcdGNvbnN0IGJhc2VQYXRoID0gKHRoaXMuYXBwLnZhdWx0LmFkYXB0ZXIgYXMgYW55KS5iYXNlUGF0aFxuXHRcdGxldCBjb25maWdfcGF0aCA9IGJhc2VQYXRoICsgXCIvXCIrIHRoaXMuYXBwLnZhdWx0LmNvbmZpZ0RpcitcIi9hcHAuanNvblwiO1xuXHRcdGxldCBjb25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjb25maWdfcGF0aCwgJ3V0Zi04JykpXG5cdFx0bGV0IHN0cmljdExpbmVCcmVha3MgPSBjb25maWcuc3RyaWN0TGluZUJyZWFrcyB8fCBmYWxzZTtcblx0XHRpZighc3RyaWN0TGluZUJyZWFrcykgcmV0dXJuIGZhbHNlO1xuXG5cdFx0bGV0IHN0YXRlID0gdmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGNvbnN0IHMgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcblx0XHRpZiAocy5yYW5nZXMubGVuZ3RoID4gMSkgcmV0dXJuIGZhbHNlO1xuXHRcdGNvbnN0IHBvcyA9IHMubWFpbi50bztcblx0XHRsZXQgbGluZSA9IGRvYy5saW5lQXQocG9zKVxuXG5cdFx0Ly8gY29uc29sZS5sb2cobGluZS50ZXh0LCBnZXRQb3NMaW5lVHlwZTIoc3RhdGUsIHBvcykpXG5cdFx0Ly8gZm9yIChsZXQgcD1saW5lLmZyb207IHA8PWxpbmUudG87IHArPTEpe1xuXHRcdC8vIFx0Y29uc3QgdG9rZW4gPSB0cmVlLnJlc29sdmUocCwgMSkubmFtZVxuXHRcdC8vIFx0Y29uc29sZS5sb2cocC1saW5lLmZyb20sIHRva2VuKVxuXHRcdC8vIH1cblx0XHRpZiAoL15cXHMqJC8udGVzdChsaW5lLnRleHQpKSByZXR1cm4gZmFsc2U7XG5cdFx0ZWxzZSBpZihnZXRQb3NMaW5lVHlwZTIoc3RhdGUsIHBvcyk9PUxpbmVUeXBlLnRleHQpe1xuXHRcdFx0dmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRmcm9tOiBwb3MsXG5cdFx0XHRcdFx0dG86IHBvcyxcblx0XHRcdFx0XHRpbnNlcnQ6ICdcXG5cXG4nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHBvcysyIH0sXG5cdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHJpdmF0ZSByZWFkb25seSBvbktleXVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0aWYodGhpcy5zZXR0aW5ncy5kZWJ1Zyl7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcIktleXVwOlwiLCBldmVudC5rZXksIGV2ZW50LnNoaWZ0S2V5LCBldmVudC5jdHJsS2V5fHxldmVudC5tZXRhS2V5KTtcblx0XHRcdGNvbnNvbGUubG9nKFwiS2V5dXA6XCIsIGV2ZW50LmtleSk7XG5cdFx0fVxuXHRcdHRoaXMuaGFuZGxlRW5kQ29tcG9zZVR5cGVLZXkoZXZlbnQsIHZpZXcpO1xuXHR9XG5cblx0aGFuZGxlRW5kQ29tcG9zZVR5cGVLZXkgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHZpZXc6IEVkaXRvclZpZXcpID0+IHtcblx0XHRpZiAoIXRoaXMuc2V0dGluZ3MuVHJ5Rml4Q2hpbmVzZUlNKSByZXR1cm47XG5cdFx0aWYoWydFbnRlciddLmNvbnRhaW5zKGV2ZW50LmtleSkgJiYgdGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ICYmIFxuXHRcdFx0dGhpcy5jb21wb3NlX25lZWRfaGFuZGxlICYmICF0aGlzLmlzQ3VycmVudEZpbGVFeGNsdWRlKCkpe1xuXHRcdFx0XHRsZXQgY3Vyc29yID0gdmlldy5zdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluO1xuXHRcdFx0XHRpZihnZXRQb3NMaW5lVHlwZSh2aWV3LnN0YXRlLCBjdXJzb3IuYW5jaG9yKSAhPSBMaW5lVHlwZS50ZXh0KSByZXR1cm47XG5cdFx0XHRcdGlmIChjdXJzb3IuaGVhZCAhPSBjdXJzb3IuYW5jaG9yKSByZXR1cm47XG5cdFx0XHRcdGxldCBpbnNlcnRlZFN0ciA9IHZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRoaXMuY29tcG9zZV9iZWdpbl9wb3MsIGN1cnNvci5hbmNob3IpO1xuXHRcdFx0XHRjb25zb2xlLmxvZyhcImluc2VydGVkIHN0clwiLCBpbnNlcnRlZFN0cik7XG5cdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2Modmlldy5zdGF0ZSwgdGhpcy5zZXR0aW5ncywgXG5cdFx0XHRcdHRoaXMuY29tcG9zZV9iZWdpbl9wb3MsIGN1cnNvci5hbmNob3IsIGluc2VydGVkU3RyKTtcblx0XHRcdFx0dGhpcy5jb21wb3NlX25lZWRfaGFuZGxlID0gZmFsc2U7XG5cdFx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0XHR2aWV3LmRpc3BhdGNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goY2hhbmdlc1sxXSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Zm9ybWF0QXJ0aWNsZSA9IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KTogdm9pZCA9PiB7XG5cdFx0bGV0IGxpbmVDb3VudCA9IGVkaXRvci5saW5lQ291bnQoKTtcblx0XHRsZXQgbmV3X2FydGljbGUgPSBcIlwiO1xuXHRcdGxldCBjcyA9IGVkaXRvci5nZXRDdXJzb3IoKTtcblx0XHRsZXQgY2ggPSAwO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGluZUNvdW50OyBpKyspIHtcblx0XHRcdGlmKGkhPTApIG5ld19hcnRpY2xlKz0nXFxuJztcblx0XHRcdGlmKGkhPWNzLmxpbmUpe1xuXHRcdFx0XHRuZXdfYXJ0aWNsZSArPSB0aGlzLnByZUZvcm1hdE9uZUxpbmUoZWRpdG9yLCBpICsgMSlbMF07XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRsZXQgbmV3RGF0YSA9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGkgKyAxLCBjcy5jaCk7XG5cdFx0XHRcdG5ld19hcnRpY2xlICs9IG5ld0RhdGFbMF07XG5cdFx0XHRcdGNoID0gbmV3RGF0YVsxXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0ZWRpdG9yLnNldFZhbHVlKG5ld19hcnRpY2xlKTtcblx0XHRlZGl0b3Iuc2V0Q3Vyc29yKHtsaW5lOmNzLmxpbmUsIGNoOmNofSk7XG5cdFx0bmV3IE5vdGljZShcIkVhc3lUeXBpbmc6IEZvcm1hdCBBcnRpY2xlIERvbmUhXCIpO1xuXHR9XG5cblx0aXNDdXJyZW50RmlsZUV4Y2x1ZGUoKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gPT0gXCJcIil7XG5cdFx0XHRsZXQgZmlsZSA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XG5cdFx0XHRpZiAoZmlsZSE9bnVsbCAmJiB0aGlzLkN1ckFjdGl2ZU1hcmtkb3duICE9IGZpbGUucGF0aClcblx0XHRcdHtcblx0XHRcdFx0dGhpcy5DdXJBY3RpdmVNYXJrZG93biA9IGZpbGUucGF0aDtcblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRsZXQgZXhjbHVkZVBhdGhzID0gdGhpcy5zZXR0aW5ncy5FeGNsdWRlRmlsZXMuc3BsaXQoJ1xcbicpO1xuXHRcdGZvciAobGV0IGVwYXRoIG9mIGV4Y2x1ZGVQYXRocykge1xuXHRcdFx0aWYgKGVwYXRoLmNoYXJBdCgwKSA9PSAnLycpIGVwYXRoID0gZXBhdGguc3Vic3RyaW5nKDEpO1xuXHRcdFx0aWYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gPT0gZXBhdGgpIHJldHVybiB0cnVlO1xuXHRcdFx0bGV0IGxlbiA9IGVwYXRoLmxlbmd0aDtcblx0XHRcdGlmICh0aGlzLkN1ckFjdGl2ZU1hcmtkb3duLnN1YnN0cmluZygwLCBsZW4pID09IGVwYXRoICYmICh0aGlzLkN1ckFjdGl2ZU1hcmtkb3duLmNoYXJBdChsZW4pID09ICcvJyB8fCB0aGlzLkN1ckFjdGl2ZU1hcmtkb3duLmNoYXJBdChsZW4pID09ICdcXFxcJyB8fFxuXHRcdFx0XHRlcGF0aC5jaGFyQXQobGVuIC0gMSkgPT0gXCIvXCIgfHwgZXBhdGguY2hhckF0KGxlbiAtIDEpID09IFwiXFxcXFwiKSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Zm9ybWF0U2VsZWN0aW9uT3JDdXJMaW5lID0gKGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpOiB2b2lkID0+IHtcblx0XHRpZiAoIWVkaXRvci5zb21ldGhpbmdTZWxlY3RlZCgpIHx8IGVkaXRvci5nZXRTZWxlY3Rpb24oKSA9PT0gJycpIHtcblx0XHRcdGxldCBsaW5lTnVtYmVyID0gZWRpdG9yLmdldEN1cnNvcigpLmxpbmU7XG5cdFx0XHRsZXQgbmV3TGluZURhdGEgPSB0aGlzLnByZUZvcm1hdE9uZUxpbmUoZWRpdG9yLCBsaW5lTnVtYmVyICsgMSwgZWRpdG9yLmdldEN1cnNvcigpLmNoKTtcblx0XHRcdGVkaXRvci5yZXBsYWNlUmFuZ2UobmV3TGluZURhdGFbMF0sIHtsaW5lOiBsaW5lTnVtYmVyLCBjaDowfSwge2xpbmU6bGluZU51bWJlciwgY2g6ZWRpdG9yLmdldExpbmUobGluZU51bWJlcikubGVuZ3RofSk7XG5cdFx0XHRlZGl0b3Iuc2V0U2VsZWN0aW9uKHtsaW5lOmxpbmVOdW1iZXIsIGNoOm5ld0xpbmVEYXRhWzFdfSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGxldCBzZWxlY3Rpb24gPSBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKVswXTtcblx0XHRsZXQgYmVnaW4gPSBzZWxlY3Rpb24uYW5jaG9yLmxpbmU7XG5cdFx0bGV0IGVuZCA9IHNlbGVjdGlvbi5oZWFkLmxpbmU7XG5cdFx0aWYgKGJlZ2luID4gZW5kKSB7XG5cdFx0XHRsZXQgdGVtcCA9IGJlZ2luO1xuXHRcdFx0YmVnaW4gPSBlbmQ7XG5cdFx0XHRlbmQgPSB0ZW1wO1xuXHRcdH1cblx0XHQvLyBjb25zb2xlLmxvZyhiZWdpbiwgZW5kKVxuXHRcdGxldCBuZXdfbGluZXMgPSBcIlwiO1xuXHRcdGZvciAobGV0IGk9YmVnaW47IGkgPD0gZW5kOyBpKyspIHtcblx0XHRcdGlmKGkhPWJlZ2luKSBuZXdfbGluZXMrPSdcXG4nO1xuXHRcdFx0Y29uc29sZS5sb2coJ2krMScsIGkrMSlcblx0XHRcdG5ld19saW5lcys9dGhpcy5wcmVGb3JtYXRPbmVMaW5lKGVkaXRvciwgaSArIDEpWzBdO1xuXHRcdH1cblx0XHRlZGl0b3IucmVwbGFjZVJhbmdlKG5ld19saW5lcywge2xpbmU6IGJlZ2luLCBjaDowfSwge2xpbmU6ZW5kLCBjaDplZGl0b3IuZ2V0TGluZShlbmQpLmxlbmd0aH0pO1xuXHRcdGlmIChzZWxlY3Rpb24uYW5jaG9yLmxpbmUgPCBzZWxlY3Rpb24uaGVhZC5saW5lKSB7XG5cdFx0XHRlZGl0b3Iuc2V0U2VsZWN0aW9uKHsgbGluZTogc2VsZWN0aW9uLmFuY2hvci5saW5lLCBjaDogMCB9LCB7IGxpbmU6IHNlbGVjdGlvbi5oZWFkLmxpbmUsIGNoOiBlZGl0b3IuZ2V0TGluZShzZWxlY3Rpb24uaGVhZC5saW5lKS5sZW5ndGggfSk7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0ZWRpdG9yLnNldFNlbGVjdGlvbih7IGxpbmU6IHNlbGVjdGlvbi5hbmNob3IubGluZSwgY2g6IGVkaXRvci5nZXRMaW5lKHNlbGVjdGlvbi5hbmNob3IubGluZSkubGVuZ3RoIH0sIHsgbGluZTogc2VsZWN0aW9uLmhlYWQubGluZSwgY2g6IDAgfSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gcGFyYW06IGxpbmVOdW1iZXIgaXMgKDEtYmFzZWQpXG5cdGZvcm1hdE9uZUxpbmUgPSAoZWRpdG9yOiBFZGl0b3IsIGxpbmVOdW1iZXI6IG51bWJlcik6IHZvaWQgPT4ge1xuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IsIG5vdCB0eXBlZFxuXHRcdGNvbnN0IGVkaXRvclZpZXcgPSBlZGl0b3IuY20gYXMgRWRpdG9yVmlldztcblx0XHRsZXQgc3RhdGUgPSBlZGl0b3JWaWV3LnN0YXRlO1xuXHRcdGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bWJlcilcblxuXHRcdGlmIChnZXRQb3NMaW5lVHlwZShzdGF0ZSwgbGluZS5mcm9tKSA9PSBMaW5lVHlwZS50ZXh0KSB7XG5cdFx0XHRsZXQgb2xkTGluZSA9IGxpbmUudGV4dDtcblx0XHRcdGxldCBuZXdMaW5lID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lKHN0YXRlLCBsaW5lTnVtYmVyLCB0aGlzLnNldHRpbmdzLCBvbGRMaW5lLmxlbmd0aCwgMClbMF07XG5cdFx0XHRpZiAob2xkTGluZSAhPSBuZXdMaW5lKSB7XG5cdFx0XHRcdGVkaXRvci5yZXBsYWNlUmFuZ2UobmV3TGluZSwgeyBsaW5lOiBsaW5lTnVtYmVyIC0gMSwgY2g6IDAgfSwgeyBsaW5lOiBsaW5lTnVtYmVyIC0gMSwgY2g6IG9sZExpbmUubGVuZ3RoIH0pO1xuXHRcdFx0XHRlZGl0b3Iuc2V0Q3Vyc29yKHsgbGluZTogbGluZU51bWJlciAtIDEsIGNoOiBlZGl0b3IuZ2V0TGluZShsaW5lTnVtYmVyIC0gMSkubGVuZ3RoIH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBwYXJhbTogbGluZU51bWJlciBpcyAoMS1iYXNlZClcblx0cHJlRm9ybWF0T25lTGluZSA9IChlZGl0b3I6IEVkaXRvciwgbGluZU51bWJlcjogbnVtYmVyLCBjaDpudW1iZXI9LTEpOiBbc3RyaW5nLCBudW1iZXJdID0+IHtcblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yLCBub3QgdHlwZWRcblx0XHRjb25zdCBlZGl0b3JWaWV3ID0gZWRpdG9yLmNtIGFzIEVkaXRvclZpZXc7XG5cdFx0bGV0IHN0YXRlID0gZWRpdG9yVmlldy5zdGF0ZTtcblx0XHRsZXQgbGluZSA9IHN0YXRlLmRvYy5saW5lKGxpbmVOdW1iZXIpXG5cblx0XHRsZXQgbmV3TGluZSA9IGxpbmUudGV4dDtcblx0XHRsZXQgbmV3Q2ggPSAwO1xuXHRcdGxldCBjdXJDaCA9IGxpbmUudGV4dC5sZW5ndGg7XG5cdFx0aWYgKGNoIT0tMSl7XG5cdFx0XHRjdXJDaCA9IGNoO1xuXHRcdH1cblx0XHRpZiAoZ2V0UG9zTGluZVR5cGUoc3RhdGUsIGxpbmUuZnJvbSkgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0bGV0IG5ld0xpbmVEYXRhID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lKHN0YXRlLCBsaW5lTnVtYmVyLCB0aGlzLnNldHRpbmdzLCBjdXJDaCwgMCk7XG5cdFx0XHRuZXdMaW5lID0gbmV3TGluZURhdGFbMF07XG5cdFx0XHRuZXdDaCA9IG5ld0xpbmVEYXRhWzFdO1xuXHRcdH1cblxuXHRcdHJldHVybiBbbmV3TGluZSwgbmV3Q2hdO1xuXHR9XG5cblx0ZGVsZXRlQmxhbmtMaW5lcyA9IChlZGl0b3I6IEVkaXRvcik6IHZvaWQgPT4ge1xuXHRcdGNvbnN0IGJhc2VQYXRoID0gKHRoaXMuYXBwLnZhdWx0LmFkYXB0ZXIgYXMgYW55KS5iYXNlUGF0aFxuXHRcdGxldCBjb25maWdfcGF0aCA9IGJhc2VQYXRoICsgXCIvXCIrIHRoaXMuYXBwLnZhdWx0LmNvbmZpZ0RpcitcIi9hcHAuanNvblwiO1xuXHRcdGlmKHRoaXMuc2V0dGluZ3MuZGVidWcpe1xuXHRcdFx0Y29uc29sZS5sb2coY29uZmlnX3BhdGgpO1xuXHRcdFx0bGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNvbmZpZ19wYXRoLCAndXRmLTgnKSlcblx0XHRcdGNvbnNvbGUubG9nKGNvbmZpZyk7XG5cdFx0XHQvLyByZXR1cm47XG5cdFx0fVxuXHRcdC8vIGxldCBjb25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjb25maWdfcGF0aCwgJ3V0Zi04JykpXG5cdFx0Ly8gbGV0IHN0cmljdExpbmVCcmVha3MgPSBjb25maWcuc3RyaWN0TGluZUJyZWFrcztcblx0XHQvLyByZXR1cm4gO1xuXG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciwgbm90IHR5cGVkXG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBzdGF0ZSA9IGVkaXRvclZpZXcuc3RhdGU7XG5cdFx0bGV0IGRvYyA9IHN0YXRlLmRvY1xuXHRcdGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcblx0XHRsZXQgc3RhcnRfbGluZSA9IDE7XG5cdFx0bGV0IGVuZF9saW5lID0gZG9jLmxpbmVzO1xuXHRcdGxldCBsaW5lX251bSA9IGRvYy5saW5lcztcblx0XHRjb25zdCBzZWxlY3RlZCA9IGVkaXRvci5zb21ldGhpbmdTZWxlY3RlZCgpICYmIGVkaXRvci5nZXRTZWxlY3Rpb24oKSAhPSAnJztcblx0XHRpZiAoc2VsZWN0ZWQpIHtcblx0XHRcdGxldCBzZWxlY3Rpb24gPSBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKVswXTtcblx0XHRcdGxldCBiZWdpbiA9IHNlbGVjdGlvbi5hbmNob3IubGluZSArIDE7XG5cdFx0XHRsZXQgZW5kID0gc2VsZWN0aW9uLmhlYWQubGluZSArIDE7XG5cdFx0XHRpZiAoYmVnaW4gPiBlbmQpIHtcblx0XHRcdFx0bGV0IHRlbXAgPSBiZWdpbjtcblx0XHRcdFx0YmVnaW4gPSBlbmQ7XG5cdFx0XHRcdGVuZCA9IHRlbXA7XG5cdFx0XHR9XG5cdFx0XHRzdGFydF9saW5lID0gYmVnaW47XG5cdFx0XHRlbmRfbGluZSA9IGVuZFxuXHRcdH1cblxuXHRcdC8vIGlmKHRoaXMuc2V0dGluZ3MuZGVidWcpe1xuXHRcdC8vIFx0bGV0IGxpbmVfaW5kZXggPSBlZGl0b3IuZ2V0Q3Vyc29yKCkubGluZSArIDE7XG5cdFx0Ly8gXHRsZXQgY29udGVudCA9IGVkaXRvci5nZXRMaW5lKGVkaXRvci5nZXRDdXJzb3IoKS5saW5lKTtcblx0XHQvLyBcdGNvbnNvbGUubG9nKGNvbnRlbnQpO1xuXHRcdC8vIFx0Zm9yIChsZXQgaT0wO2k8Y29udGVudC5sZW5ndGg7aSsrKXtcblx0XHQvLyBcdFx0bGV0IG5vZGUgPSB0cmVlLnJlc29sdmUoZG9jLmxpbmUobGluZV9pbmRleCkuZnJvbStpLCAxKTtcblx0XHQvLyBcdFx0Y29uc29sZS5sb2coaSwgbm9kZS5uYW1lKVxuXHRcdC8vIFx0fVxuXHRcdC8vIFx0cmV0dXJuO1xuXHRcdC8vIH1cblx0XHRcblx0XHRcblx0XHRsZXQgZGVsZXRlX2luZGV4OiBudW1iZXJbXSA9IFtdO1xuXHRcdGxldCBibGFua19yZWcgPSAvXlxccyokLztcblx0XHRsZXQgcmVtYWluX25leHRfYmxhbmsgPSBmYWxzZTtcblxuXHRcdGlmIChzdGFydF9saW5lICE9IDEpIHtcblx0XHRcdGxldCBub2RlID0gdHJlZS5yZXNvbHZlKGRvYy5saW5lKHN0YXJ0X2xpbmUgLSAxKS5mcm9tLCAxKTtcblx0XHRcdGlmIChub2RlLm5hbWUuY29udGFpbnMoJ2xpc3QnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ3F1b3RlJykgfHwgbm9kZS5uYW1lLmNvbnRhaW5zKCdibG9ja2lkJykpIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoZW5kX2xpbmUgIT0gbGluZV9udW0gJiYgIWJsYW5rX3JlZy50ZXN0KGRvYy5saW5lKGVuZF9saW5lICsgMSkudGV4dCkpIHtcblx0XHRcdGVuZF9saW5lICs9IDE7XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgaSA9IHN0YXJ0X2xpbmU7IGkgPD0gZW5kX2xpbmU7IGkrKykge1xuXHRcdFx0bGV0IGxpbmUgPSBkb2MubGluZShpKTtcblx0XHRcdGxldCBwb3MgPSBsaW5lLmZyb207XG5cdFx0XHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShwb3MsIDEpO1xuXG5cdFx0XHQvLyBcdTVCRjlcdTRFOEVcdTdBN0FcdTc2N0RcdTg4NENcblx0XHRcdGlmIChibGFua19yZWcudGVzdChsaW5lLnRleHQpICYmICFyZW1haW5fbmV4dF9ibGFuaykge1xuXHRcdFx0XHRkZWxldGVfaW5kZXgucHVzaChpKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmIChibGFua19yZWcudGVzdChsaW5lLnRleHQpICYmIHJlbWFpbl9uZXh0X2JsYW5rKSB7XG5cdFx0XHRcdHJlbWFpbl9uZXh0X2JsYW5rID0gZmFsc2U7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobm9kZS5uYW1lLmNvbnRhaW5zKCdocicpICYmIGRlbGV0ZV9pbmRleFtkZWxldGVfaW5kZXgubGVuZ3RoIC0gMV0gPT0gaSAtIDEpIHtcblx0XHRcdFx0ZGVsZXRlX2luZGV4LnBvcCgpXG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmIChub2RlLm5hbWUuY29udGFpbnMoJ2xpc3QnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ3F1b3RlJykgfHwgbm9kZS5uYW1lLmNvbnRhaW5zKCdibG9ja2lkJykpIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdHJlbWFpbl9uZXh0X2JsYW5rID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGNvbnNvbGUubG9nKFwiZGVsZXRlX2luZGV4XCIsZGVsZXRlX2luZGV4KVxuXHRcdGxldCBuZXdDb250ZW50ID0gXCJcIjtcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8IGxpbmVfbnVtOyBpKyspIHtcblx0XHRcdGlmICghZGVsZXRlX2luZGV4LmNvbnRhaW5zKGkpKSB7XG5cdFx0XHRcdG5ld0NvbnRlbnQgKz0gZG9jLmxpbmUoaSkudGV4dCArICdcXG4nO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoIWRlbGV0ZV9pbmRleC5jb250YWlucyhsaW5lX251bSkpIHtcblx0XHRcdG5ld0NvbnRlbnQgKz0gZG9jLmxpbmUobGluZV9udW0pLnRleHRcblx0XHR9XG5cblx0XHRlZGl0b3Iuc2V0VmFsdWUobmV3Q29udGVudCk7XG5cdFx0Ly8gdGhpcy5Db250ZW50UGFyc2VyLnJlcGFyc2UoZWRpdG9yLmdldFZhbHVlKCksIDApO1xuXHR9XG5cblx0c3dpdGNoQXV0b0Zvcm1hdHRpbmcoKSB7XG5cdFx0dGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ID0gdGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ID8gZmFsc2UgOiB0cnVlO1xuXHRcdGxldCBzdGF0dXMgPSB0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgPyAnb24nIDogJ29mZic7XG5cdFx0bmV3IE5vdGljZSgnRWFzeVR5cGluZzogQXV0b2Zvcm1hdCBpcyAnICsgc3RhdHVzICsgJyEnKTtcblx0fVxuXG5cdGNvbnZlcnQyQ29kZUJsb2NrKGVkaXRvcjogRWRpdG9yKSB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiLS0tLS0gRWFzeVR5cGluZzogaW5zZXJ0IGNvZGUgYmxvY2stLS0tLVwiKTtcblx0XHRpZiAoZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkICYmIGVkaXRvci5nZXRTZWxlY3Rpb24oKSAhPSBcIlwiKSB7XG5cdFx0XHRsZXQgc2VsZWN0ZWQgPSBlZGl0b3IuZ2V0U2VsZWN0aW9uKCk7XG5cdFx0XHRsZXQgc2VsZWN0ZWRSYW5nZSA9IGVkaXRvci5saXN0U2VsZWN0aW9ucygpWzBdO1xuXHRcdFx0bGV0IGFuY2hvciA9IHNlbGVjdGVkUmFuZ2UuYW5jaG9yO1xuXHRcdFx0bGV0IGhlYWQgPSBzZWxlY3RlZFJhbmdlLmhlYWQ7XG5cblx0XHRcdGxldCByZXBsYWNlbWVudCA9IFwiYGBgXFxuXCIgKyBzZWxlY3RlZCArIFwiXFxuYGBgXCI7XG5cdFx0XHQvLyBtYWtlIHN1cmUgYW5jaG9yIDwgaGVhZFxuXHRcdFx0aWYgKGFuY2hvci5saW5lID4gaGVhZC5saW5lIHx8IChhbmNob3IubGluZSA9PSBoZWFkLmxpbmUgJiYgYW5jaG9yLmNoID4gaGVhZC5jaCkpIHtcblx0XHRcdFx0bGV0IHRlbXAgPSBhbmNob3I7XG5cdFx0XHRcdGFuY2hvciA9IGhlYWQ7XG5cdFx0XHRcdGhlYWQgPSB0ZW1wO1xuXHRcdFx0fVxuXHRcdFx0bGV0IGRzdExpbmUgPSBhbmNob3IubGluZTtcblx0XHRcdGlmIChhbmNob3IuY2ggIT0gMCkge1xuXHRcdFx0XHRyZXBsYWNlbWVudCA9ICdcXG4nICsgcmVwbGFjZW1lbnQ7XG5cdFx0XHRcdGRzdExpbmUgKz0gMTtcblx0XHRcdH1cblx0XHRcdGlmIChoZWFkLmNoICE9IGVkaXRvci5nZXRMaW5lKGhlYWQubGluZSkubGVuZ3RoKSB7XG5cdFx0XHRcdHJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQgKyAnXFxuJztcblx0XHRcdH1cblx0XHRcdGVkaXRvci5yZXBsYWNlU2VsZWN0aW9uKHJlcGxhY2VtZW50KTtcblx0XHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBkc3RMaW5lLCBjaDogMyB9KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRsZXQgY3MgPSBlZGl0b3IuZ2V0Q3Vyc29yKCk7XG5cdFx0XHRsZXQgcmVwbGFjZSA9IFwiYGBgXFxuYGBgXCI7XG5cdFx0XHRsZXQgZHN0TGluZSA9IGNzLmxpbmU7XG5cdFx0XHRpZiAoY3MuY2ggIT0gMCkge1xuXHRcdFx0XHRyZXBsYWNlID0gXCJcXG5cIiArIHJlcGxhY2U7XG5cdFx0XHRcdGRzdExpbmUgKz0gMTtcblx0XHRcdH1cblx0XHRcdGlmIChjcy5jaCAhPSBlZGl0b3IuZ2V0TGluZShjcy5saW5lKS5sZW5ndGgpIHtcblx0XHRcdFx0cmVwbGFjZSA9IHJlcGxhY2UgKyAnXFxuJztcblx0XHRcdH1cblx0XHRcdGVkaXRvci5yZXBsYWNlUmFuZ2UocmVwbGFjZSwgY3MpO1xuXHRcdFx0ZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGRzdExpbmUsIGNoOiAzIH0pO1xuXHRcdH1cblxuXHR9XG5cblx0cmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCkge1xuXHRcdHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcCA9IG5ldyBNYXAodGhpcy5zZWxlY3Rpb25SZXBsYWNlTWFwSW5pdGFsRGF0YSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHRyaWdnZXIgPSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlcltpXTtcblx0XHRcdGxldCBsZWZ0cyA9IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5sZWZ0O1xuXHRcdFx0bGV0IHJpZ2h0cyA9IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5yaWdodDtcblxuXHRcdFx0dGhpcy5TZWxlY3Rpb25SZXBsYWNlTWFwLnNldCh0cmlnZ2VyLCB7IGxlZnQ6IGxlZnRzLCByaWdodDogcmlnaHRzIH0pO1xuXHRcdH1cblx0fVxuXG5cdGFkZFVzZXJTZWxlY3Rpb25SZXBSdWxlKHRyaWdnZXI6IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmluY2x1ZGVzKHRyaWdnZXIpKSByZXR1cm4gZmFsc2U7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIucHVzaCh0cmlnZ2VyKVxuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZS5wdXNoKHsgbGVmdDogbGVmdCwgcmlnaHQ6IHJpZ2h0IH0pO1xuXHRcdHRoaXMucmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRkZWxldGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpZHg6IG51bWJlcik6IHZvaWQge1xuXHRcdGlmIChpZHggPCAwIHx8IGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGgpIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWUuc3BsaWNlKGlkeCwgMSk7XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0fVxuXG5cdHVwZGF0ZVVzZXJTZWxlY3Rpb25SZXBSdWxlKGlkeDogbnVtYmVyLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpIHtcblx0XHRpZiAoaWR4IDwgMCB8fCBpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIubGVuZ3RoKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2lkeF0ubGVmdCA9IGxlZnQ7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2lkeF0ucmlnaHQgPSByaWdodDtcblx0XHR0aGlzLnJlZnJlc2hTZWxlY3Rpb25SZXBsYWNlUnVsZSgpO1xuXHR9XG5cblx0cmVmcmVzaFVzZXJEZWxldGVSdWxlKCkge1xuXHRcdHRoaXMuVXNlckRlbGV0ZVJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QodGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0KTtcblx0fVxuXG5cdGFkZFVzZXJEZWxldGVSdWxlKGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0LnB1c2goW2JlZm9yZSwgYWZ0ZXJdKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHR9XG5cblx0ZGVsZXRlVXNlckRlbGV0ZVJ1bGUoaWR4OiBudW1iZXIpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHR9XG5cblx0dXBkYXRlVXNlckRlbGV0ZVJ1bGUoaWR4OiBudW1iZXIsIGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0aWYgKGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaWR4XVswXSA9IGJlZm9yZTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaWR4XVsxXSA9IGFmdGVyO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJEZWxldGVSdWxlKCk7XG5cdH1cblxuXHRyZWZyZXNoVXNlckNvbnZlcnRSdWxlKCkge1xuXHRcdHRoaXMuVXNlckNvbnZlcnRSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QpO1xuXHR9XG5cblx0YWRkVXNlckNvbnZlcnRSdWxlKGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5wdXNoKFtiZWZvcmUsIGFmdGVyXSk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cdH1cblxuXHRkZWxldGVVc2VyQ29udmVydFJ1bGUoaWR4OiBudW1iZXIpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0LnNwbGljZShpZHgsIDEpO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpO1xuXHR9XG5cblx0Z2V0Q29tbWFuZE5hbWVNYXAoKTogTWFwPHN0cmluZywgc3RyaW5nPlxuXHR7XG5cdFx0Y29uc3QgbGFuZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwX2VuID0gbmV3IE1hcChbXG5cdFx0XHRbXCJmb3JtYXRfYXJ0aWNsZVwiLCBcIkZvcm1hdCBjdXJyZW50IGFydGljbGVcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiRm9ybWF0IHNlbGVjdGVkIHRleHQgb3IgY3VycmVudCBsaW5lXCJdLFxuXHRcdFx0W1wiZGVsZXRlX2JsYW5rX2xpbmVcIiwgXCJEZWxldGUgYmxhbmsgbGluZXMgb2YgdGhlIHNlbGVjdGVkIG9yIHdob2xlIGFydGljbGVcIl0sXG5cdFx0XHRbXCJpbnNlcnRfY29kZWJsb2NrXCIsIFwiSW5zZXJ0IGNvZGUgYmxvY2sgdy93byBzZWxlY3Rpb25cIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlN3aXRjaCBhdXRvZm9ybWF0XCJdXG5cdFx0XSk7XG5cblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcF96aF9UVyA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiZm9ybWF0X2FydGljbGVcIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTUxNjhcdTY1ODdcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiXHU2ODNDXHU1RjBGXHU1MzE2XHU5MDc4XHU0RTJEXHU5MEU4XHU1MjA2L1x1NzU3Nlx1NTI0RFx1ODg0Q1wiXSxcblx0XHRcdFtcImRlbGV0ZV9ibGFua19saW5lXCIsIFwiXHU1MjJBXHU5NjY0XHU5MDc4XHU0RTJEXHU5MEU4XHU1MjA2L1x1NTE2OFx1NjU4N1x1NzY4NFx1NTkxQVx1OTkxOFx1N0E3QVx1NzY3RFx1ODg0Q1wiXSxcblx0XHRcdFtcImluc2VydF9jb2RlYmxvY2tcIiwgXCJcdTYzRDJcdTUxNjVcdTRFRTNcdTc4QkNcdTU4NEFcIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlx1NTIwN1x1NjNEQlx1ODFFQVx1NTJENVx1NjgzQ1x1NUYwRlx1NTMxNlx1OTU4Qlx1OTVEQ1wiXVxuXHRcdF0pO1xuXG5cdFx0bGV0IGNvbW1hbmRfbmFtZV9tYXBfemggPSBuZXcgTWFwKFtcblx0XHRcdFtcImZvcm1hdF9hcnRpY2xlXCIsIFwiXHU2ODNDXHU1RjBGXHU1MzE2XHU1MTY4XHU2NTg3XCJdLFxuXHRcdFx0W1wiZm9ybWF0X3NlbGVjdGlvblwiLCBcIlx1NjgzQ1x1NUYwRlx1NTMxNlx1OTAwOVx1NEUyRFx1OTBFOFx1NTIwNi9cdTVGNTNcdTUyNERcdTg4NENcIl0sXG5cdFx0XHRbXCJkZWxldGVfYmxhbmtfbGluZVwiLCBcIlx1NTIyQVx1OTY2NFx1OTAwOVx1NEUyRFx1OTBFOFx1NTIwNi9cdTUxNjhcdTY1ODdcdTc2ODRcdTU5MUFcdTRGNTlcdTdBN0FcdTc2N0RcdTg4NENcIl0sXG5cdFx0XHRbXCJpbnNlcnRfY29kZWJsb2NrXCIsIFwiXHU2M0QyXHU1MTY1XHU0RUUzXHU3ODAxXHU1NzU3XCJdLFxuXHRcdFx0W1wic3dpdGNoX2F1dG9mb3JtYXRcIiwgXCJcdTUyMDdcdTYzNjJcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdTVGMDBcdTUxNzNcIl1cblx0XHRdKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwID0gY29tbWFuZF9uYW1lX21hcF9lbjtcblx0XHRpZiAobGFuZyA9PSAnemgnKXtcblx0XHRcdGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX3poO1xuXHRcdH1cblx0XHRlbHNlIGlmKGxhbmcgPT0gJ3poLVRXJyl7XG5cdFx0XHRjb21tYW5kX25hbWVfbWFwID0gY29tbWFuZF9uYW1lX21hcF96aF9UVztcblx0XHR9XG5cblx0XHRyZXR1cm4gY29tbWFuZF9uYW1lX21hcDtcblx0fVxuXG5cdHVwZGF0ZVVzZXJDb252ZXJ0UnVsZShpZHg6IG51bWJlciwgYmVmb3JlOiBzdHJpbmcsIGFmdGVyOiBzdHJpbmcpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2lkeF1bMF0gPSBiZWZvcmU7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdFtpZHhdWzFdID0gYWZ0ZXI7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cdH1cblxuXHRnZXRFZGl0b3IgPSAoKTogRWRpdG9yIHwgbnVsbCA9PiB7XG5cdFx0bGV0IGVkaXRvciA9IG51bGw7XG5cdFx0bGV0IG1hcmtkb3duVmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG5cdFx0aWYgKG1hcmtkb3duVmlldykge1xuXHRcdFx0ZWRpdG9yID0gbWFya2Rvd25WaWV3LmVkaXRvcjtcblx0XHR9XG5cdFx0aWYgKGVkaXRvciA9PT0gbnVsbCkgY29uc29sZS5sb2coJ2NhblxcJ3QgZ2V0IGVkaXRvcicpO1xuXHRcdHJldHVybiBlZGl0b3I7XG5cdH1cblxuXHRhc3luYyBsb2FkU2V0dGluZ3MoKSB7XG5cdFx0dGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfU0VUVElOR1MsIGF3YWl0IHRoaXMubG9hZERhdGEoKSk7XG5cdH1cblxuXHRhc3luYyBzYXZlU2V0dGluZ3MoKSB7XG5cdFx0YXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcblx0fVxufSIsICJpbXBvcnQgeyBOb3RpY2V9IGZyb20gXCJvYnNpZGlhblwiXG5pbXBvcnQgeyBFYXN5VHlwaW5nU2V0dGluZ3MsIFdvcmtNb2RlIH0gZnJvbSAnLi9zZXR0aW5ncydcbmltcG9ydCB7IEFubm90YXRpb24sIEVkaXRvclN0YXRlLCBFeHRlbnNpb24sIFN0YXRlRmllbGQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblNwZWMsIFRleHQsIExpbmUgfSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XG5pbXBvcnQgeyBvZmZzZXRUb1BvcywgcG9zVG9PZmZzZXQsIHN0cmluZ0RlbGV0ZUF0LCBzdHJpbmdJbnNlcnRBdCwgaXNQYXJhbURlZmluZWR9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBzeW50YXhUcmVlIH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5cbmV4cG9ydCBlbnVtIExpbmVUeXBlIHsgdGV4dCA9ICd0ZXh0JywgY29kZWJsb2NrID0gJ2NvZGVibG9jaycsIGZvcm11bGEgPSAnZm9ybXVsYScsIFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSA9ICdub25lJywgZnJvbnRtYXR0ZXI9XCJmcm9udG1hdHRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGU9J3F1b3RlJywgY2FsbG91dF90aXRsZT0nY2FsbG91dF90aXRsZScsIGxpc3Q9J2xpc3QnIH1cblxuZXhwb3J0IGVudW0gU3BhY2VTdGF0ZSB7XG4gICAgbm9uZSxcbiAgICBzb2Z0LFxuICAgIHN0cmljdFxufVxuXG5leHBvcnQgZW51bSBJbmxpbmVUeXBlIHtcbiAgICB0ZXh0ID0gJ3RleHQnLCBjb2RlID0gJ2NvZGUnLCBmb3JtdWxhID0gJ2Zvcm11bGEnLFxuICAgIHdpa2lsaW5rID0gJ3dpa2lsaW5rJywgbWRsaW5rID0gXCJtZGxpbmtcIixcbiAgICB1c2VyID0gJ3VzZXItZGVmaW5lZCcsIG5vbmUgPSAnbm9uZSdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVDaGFuZ2Uge1xuICAgIHRleHQ6IHN0cmluZyxcbiAgICBiZWdpbjogbnVtYmVyLFxuICAgIGVuZDogbnVtYmVyLFxuICAgIG9yaWdpbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWNsZVBhcnQge1xuICAgIHR5cGU6IExpbmVUeXBlO1xuICAgIGJlZ2luOiBudW1iZXI7XG4gICAgZW5kOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVQYXJ0IHtcbiAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgdHlwZTogSW5saW5lVHlwZTtcbiAgICBiZWdpbjogbnVtYmVyO1xuICAgIGVuZDogbnVtYmVyO1xuICAgIGxlZnRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGU7XG4gICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGU7XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5lRm9ybWF0ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG4gICAgc3ludGF4VHJlZU5vZGVOYW1lVHlwZShuYW1lOnN0cmluZyk6SW5saW5lVHlwZXtcbiAgICAgICAgaWYobmFtZS5jb250YWlucygnY29kZScpICYmICFuYW1lLmNvbnRhaW5zKFwibGlua1wiKSl7XG4gICAgICAgICAgICByZXR1cm4gSW5saW5lVHlwZS5jb2RlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYobmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLmZvcm11bGE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBwYXJhbSBsaW5lTnVtOiAxLWJhc2VkIGxpbmUgbnVtYmVyXG4gICAgcGFyc2VMaW5lV2l0aFN5bnRheFRyZWUoc3RhdGU6IEVkaXRvclN0YXRlLCBsaW5lTnVtOm51bWJlciwgcmVnUmVnRXhwPzogc3RyaW5nKXtcbiAgICAgICAgbGV0IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGE6IElubGluZVBhcnRbXSA9IFtdO1xuICAgICAgICBsZXQgbGluZSA9IHN0YXRlLmRvYy5saW5lKGxpbmVOdW0pO1xuICAgICAgICBjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG4gICAgICAgIGxldCBwb3MgPSBsaW5lLmZyb207XG4gICAgICAgIGxldCBwcmV2Tm9kZVR5cGU6SW5saW5lVHlwZSA9IElubGluZVR5cGUubm9uZTtcbiAgICAgICAgbGV0IHByZXZCZWdpbklkeCA9IDA7XG4gICAgICAgIHdoaWxlKHBvczxsaW5lLnRvKXtcbiAgICAgICAgICAgIGxldCBub2RlID0gdHJlZS5yZXNvbHZlKHBvcywgMSk7XG4gICAgICAgICAgICBsZXQgY3VyTm9kZVR5cGUgPSB0aGlzLnN5bnRheFRyZWVOb2RlTmFtZVR5cGUobm9kZS5uYW1lKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZihwcmV2Tm9kZVR5cGU9PUlubGluZVR5cGUubm9uZSl7XG4gICAgICAgICAgICAgICAgcHJldk5vZGVUeXBlPWN1ck5vZGVUeXBlO1xuICAgICAgICAgICAgICAgIHByZXZCZWdpbklkeD0wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZihwcmV2Tm9kZVR5cGU9PWN1ck5vZGVUeXBlKXt9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGEucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6bGluZS50ZXh0LnN1YnN0cmluZyhwcmV2QmVnaW5JZHgsIHBvcy1saW5lLmZyb20pLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOnByZXZOb2RlVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46cHJldkJlZ2luSWR4LFxuICAgICAgICAgICAgICAgICAgICBlbmQ6cG9zLWxpbmUuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTpTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcHJldk5vZGVUeXBlID0gY3VyTm9kZVR5cGU7XG4gICAgICAgICAgICAgICAgcHJldkJlZ2luSWR4ID0gcG9zLWxpbmUuZnJvbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHVwZGF0ZSBuZXh0IHBvc1xuICAgICAgICAgICAgaWYgKGN1ck5vZGVUeXBlID09IElubGluZVR5cGUudGV4dCl7XG4gICAgICAgICAgICAgICAgcG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIHBvcyA9IG5vZGUudG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKHBvcz09bGluZS50byl7XG4gICAgICAgICAgICAgICAgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDpsaW5lLnRleHQuc3Vic3RyaW5nKHByZXZCZWdpbklkeCwgcG9zLWxpbmUuZnJvbSksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6cHJldk5vZGVUeXBlLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjpwcmV2QmVnaW5JZHgsXG4gICAgICAgICAgICAgICAgICAgIGVuZDpwb3MtbGluZS5mcm9tLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImxpbmUgcGFydHM6IFwiLCBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhKTtcbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIGxldCByZXRBcnJheTogSW5saW5lUGFydFtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0udHlwZSAhPSBJbmxpbmVUeXBlLnRleHQpIHtcbiAgICAgICAgICAgICAgICByZXRBcnJheS5wdXNoKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHRlbXBBcnJheTogSW5saW5lUGFydFtdO1xuICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChyZWdSZWdFeHApKVxuICAgICAgICAgICAgICAgICAgICB0ZW1wQXJyYXkgPSBzcGxpdFRleHRXaXRoTGlua0FuZFVzZXJEZWZpbmVkKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uY29udGVudCwgcmVnUmVnRXhwKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRlbXBBcnJheSA9IHNwbGl0VGV4dFdpdGhMaW5rQW5kVXNlckRlZmluZWQobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS5jb250ZW50KTtcbiAgICBcbiAgICAgICAgICAgICAgICB0ZW1wQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5iZWdpbiArPSBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmJlZ2luO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmVuZCArPSBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmJlZ2luO1xuICAgICAgICAgICAgICAgICAgICByZXRBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHJldEFycmF5KVxuICAgICAgICByZXR1cm4gcmV0QXJyYXk7XG4gICAgfVxuXG4gICAgZm9ybWF0TGluZU9mRG9jKHN0YXRlOiBFZGl0b3JTdGF0ZSwgc2V0dGluZ3M6IEVhc3lUeXBpbmdTZXR0aW5ncywgZnJvbUI6IG51bWJlciwgdG9COiBudW1iZXIsIGluc2VydGVkU3RyOiBzdHJpbmcpOiBbVHJhbnNhY3Rpb25TcGVjW10sIFRyYW5zYWN0aW9uU3BlY10gfCBudWxsIHtcbiAgICAgICAgbGV0IGRvYyA9IHN0YXRlLmRvYztcbiAgICAgICAgbGV0IGxpbmUgPSBkb2MubGluZUF0KGZyb21CKS50ZXh0O1xuICAgICAgICBsZXQgcmVzID0gbnVsbFxuICAgICAgICBpZiAoaW5zZXJ0ZWRTdHIuY29udGFpbnMoXCJcXG5cIikpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuZm9ybWF0TGluZShzdGF0ZSwgZG9jLmxpbmVBdChmcm9tQikubnVtYmVyLCBzZXR0aW5ncywgb2Zmc2V0VG9Qb3MoZG9jLCBmcm9tQikuY2gsIG9mZnNldFRvUG9zKGRvYywgZnJvbUIpLmNoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuZm9ybWF0TGluZShzdGF0ZSwgZG9jLmxpbmVBdChmcm9tQikubnVtYmVyLCBzZXR0aW5ncywgb2Zmc2V0VG9Qb3MoZG9jLCB0b0IpLmNoLCBvZmZzZXRUb1Bvcyhkb2MsIGZyb21CKS5jaCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcyA9PT1udWxsIHx8IHJlc1syXS5sZW5ndGg9PTApIHJldHVybiBudWxsO1xuICAgICAgICBcbiAgICAgICAgbGV0IG5ld2xpbmUgPSBzdHJpbmdJbnNlcnRBdChyZXNbMF0sIHJlc1sxXSwgXCJ8XCIpO1xuICAgICAgICAvLyBpZiAoc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiRWFzeVR5cGluZzogTmV3IExpbmUgU3RyaW5nOlwiLCBuZXdsaW5lKVxuXG4gICAgICAgIGxldCBjaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gZG9jLmxpbmVBdChmcm9tQikuZnJvbTtcblxuICAgICAgICBmb3IobGV0IGNoYW5nZUl0ZW0gb2YgcmVzWzJdKVxuICAgICAgICB7XG4gICAgICAgICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNoYW5nZXM6e2Zyb206IG9mZnNldCtjaGFuZ2VJdGVtLmJlZ2luLCB0bzpvZmZzZXQrY2hhbmdlSXRlbS5lbmQsIGluc2VydDpjaGFuZ2VJdGVtLnRleHR9LCB1c2VyRXZlbnQ6XCJFYXN5VHlwaW5nLmNoYW5nZVwiXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbnNlcnRlZFN0ci5jb250YWlucyhcIlxcblwiKSl7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImluc2VydFN0clwiLCBpbnNlcnRlZFN0cilcbiAgICAgICAgICAgIHJlc1sxXSs9IGluc2VydGVkU3RyLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2NoYW5nZXMsIHtzZWxlY3Rpb246e2FuY2hvcjpvZmZzZXQrcmVzWzFdfSwgdXNlckV2ZW50OlwiRWFzeVR5cGluZy5jaGFuZ2VcIn1dO1xuICAgIH1cblxuICAgIC8vIFx1OEZENFx1NTZERVx1NTAzQ1x1RkYxQSBbXHU2NzAwXHU3RUM4XHU3Njg0XHU4ODRDXHVGRjBDXHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU1MTg1XHU1QkI5XHU2NTM5XHU1M0Q4XVxuICAgIC8vIHBhcmFtIGxpbmVOdW06IDEtYmFzZWQgbGluZSBudW1iZXJcbiAgICBmb3JtYXRMaW5lKHN0YXRlOiBFZGl0b3JTdGF0ZSwgbGluZU51bTpudW1iZXIsIHNldHRpbmdzOiBFYXN5VHlwaW5nU2V0dGluZ3MsIGN1ckNoOiBudW1iZXIsIHByZXZDaD86IG51bWJlcik6IFtzdHJpbmcsIG51bWJlciwgSW5saW5lQ2hhbmdlW11dIHwgbnVsbCB7XG4gICAgICAgIC8vIG5ldyBOb3RpY2UoXCJmb3JtYXQtbm93XCIpO1xuICAgICAgICBsZXQgbGluZSA9IHN0YXRlLmRvYy5saW5lKGxpbmVOdW0pLnRleHQ7XG4gICAgICAgIGxldCByZWdOdWxsID0gL15cXHMqJC9nO1xuICAgICAgICBpZiAocmVnTnVsbC50ZXN0KGxpbmUpKSByZXR1cm4gW2xpbmUsIGN1ckNoLCBbXV07XG4gICAgICAgIC8vIDEuIFx1NTIxMlx1NTIwNlx1NEUwMFx1ODg0Q1x1NjU4N1x1NUI1N1x1NzY4NFx1NTE4NVx1OTBFOFx1NEUwRFx1NTQwQ1x1NkEyMVx1NTc1N1x1NTMzQVx1NTdERlxuICAgICAgICBsZXQgbGluZVBhcnRzOiBJbmxpbmVQYXJ0W107XG4gICAgICAgIGlmIChzZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ1N3aXRjaCkge1xuICAgICAgICAgICAgLy8gbGluZVBhcnRzID0gdGhpcy5wYXJzZUxpbmUobGluZSwgc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHApO1xuICAgICAgICAgICAgbGluZVBhcnRzID0gdGhpcy5wYXJzZUxpbmVXaXRoU3ludGF4VHJlZShzdGF0ZSwgbGluZU51bSwgc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gbGluZVBhcnRzID0gdGhpcy5wYXJzZUxpbmUobGluZSk7XG4gICAgICAgICAgICBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZVdpdGhTeW50YXhUcmVlKHN0YXRlLCBsaW5lTnVtKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAoc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwibGluZSBwYXJ0c1xcblwiLCBsaW5lUGFydHMpO1xuXG4gICAgICAgIC8vIFx1NTkwN1x1NEVGRFx1NTM5Rlx1Njc2NVx1NzY4NGxpbmVQYXJ0cywgXHU2REYxXHU2MkY3XHU4RDFEXG4gICAgICAgIGxldCBsaW5lUGFydHNPcmlnaW4gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGxpbmVQYXJ0cykpO1xuICAgICAgICBsZXQgaW5saW5lQ2hhbmdlTGlzdDogSW5saW5lQ2hhbmdlW10gPSBbXTtcblxuICAgICAgICBsZXQgY3Vyc29yTGluZVBhcnRJbmRleCA9IC0xO1xuICAgICAgICBsZXQgY3Vyc29yUmVsYXRpdmVJbmRleCA9IC0xO1xuICAgICAgICBsZXQgcmVzdWx0Q3Vyc29yQ2ggPSAwOyAgICAgLy8gXHU4RjkzXHU1MUZBXHU3Njg0XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG5cbiAgICAgICAgLy8gMi4gXHU2MjdFXHU1MjMwXHU1MTQ5XHU2ODA3XHU2MjQwXHU1NzI4XHU3Njg0XHU5MEU4XHU1MjA2XHVGRjBDXHU1OTgyXHU2NzlDXHU2NjJGIElubGluZVBhcnQudGV4dFx1RkYwQ1x1NTIxOVx1NTcyOFx1NTE0OVx1NjgwN1x1NTkwNFx1NjNEMlx1NTE2NSdcXDAnXHU2NzY1XHU2ODA3XHU4QkIwXHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZVBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoY3VyQ2ggPiBsaW5lUGFydHNbaV0uYmVnaW4gJiYgY3VyQ2ggPD0gbGluZVBhcnRzW2ldLmVuZCkge1xuICAgICAgICAgICAgICAgIGN1cnNvckxpbmVQYXJ0SW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGN1cnNvclJlbGF0aXZlSW5kZXggPSBjdXJDaCAtIGxpbmVQYXJ0c1tpXS5iZWdpbjtcbiAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLnR5cGUgPT09IElubGluZVR5cGUudGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IHN0cmluZ0luc2VydEF0KGxpbmVQYXJ0c1tpXS5jb250ZW50LCBjdXJzb3JSZWxhdGl2ZUluZGV4LCAnXFwwJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRMaW5lID0gJyc7XG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICAvLyBcdTRGRERcdTVCNThcdTUyNERcdTRFMDBcdTkwRThcdTUyMDZcdTc2ODRcdTUzM0FcdTU3NTdcdTdDN0JcdTU3OEJcdUZGMENJbmxpbmVUeXBlLm5vbmUgXHU0RUUzXHU4ODY4XHU0RTAwXHU4ODRDXHU3Njg0XHU1RjAwXHU1OUNCXG4gICAgICAgIGxldCBwcmV2UGFydFR5cGU6IHN0cmluZyA9IElubGluZVR5cGUubm9uZTtcbiAgICAgICAgbGV0IHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcblxuICAgICAgICAvLyAzLiBcdTkwNERcdTUzODZcdTZCQ0ZcdTRFMkFcdTg4NENcdTkwRThcdTUyMDZcdUZGMENcdThGREJcdTg4NENcdTY4M0NcdTVGMEZcdTUzMTZcdTU5MDRcdTc0MDZcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIC8vIDMuMSBcdTU5ODJcdTY3OUNcdTg4NENcdTUxODVcdTdCMkNcdTRFMDBcdTkwRThcdTUyMDZcdTRFM0FcdTY1ODdcdTY3MkNcdUZGMENcdTUyMTlcdTU5MDRcdTc0MDZcdTUzRTVcdTk5OTZcdTVCNTdcdTZCQ0RcdTU5MjdcdTUxOTlcdTc2ODRcdTkwRThcdTUyMDZcbiAgICAgICAgICAgIGlmIChpID09PSAwICYmIGxpbmVQYXJ0c1tpXS50eXBlID09PSBJbmxpbmVUeXBlLnRleHQgJiYgc2V0dGluZ3MuQXV0b0NhcGl0YWwpIHtcbiAgICAgICAgICAgICAgICAvLyAzLjEuMSBcdTU5ODJcdTY3OUMgcHJldkN1cnNvciBcdTRFMTRcdTUxNDlcdTY4MDdcdTRFMERcdTU3MjhcdTZCNjRcdTkwRThcdTUyMDZcdUZGMENcdTUyMTlcdThERjNcdThGQzdcbiAgICAgICAgICAgICAgICBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiBjdXJzb3JMaW5lUGFydEluZGV4ICE9IDApIHsgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnRmlyc3RTZW50ZW5jZSA9IC9eXFxzKihcXC0gKFxcW1t4IF1cXF0gKT8pP1x1MjAxQz9bYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdL2c7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdIZWFkZXJTZW50ZW5jZSA9IC9eKCMrIHw+KyA/fFx1MjAxQylbYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdL2c7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0Y29weSA9IGxpbmVQYXJ0c1swXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWdGaXJzdFNlbnRlbmNlLmV4ZWModGV4dGNvcHkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2hIZWFkZXIgPSByZWdIZWFkZXJTZW50ZW5jZS5leGVjKHRleHRjb3B5KTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRzdENoYXJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdENoYXJJbmRleCA9IHJlZ0ZpcnN0U2VudGVuY2UubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtYXRjaEhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHN0Q2hhckluZGV4ID0gcmVnSGVhZGVyU2VudGVuY2UubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUgPT0gV29ya01vZGUuR2xvYmFsbHkgfHwgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgZHN0Q2hhckluZGV4ID49IHByZXZDaCAmJiBkc3RDaGFySW5kZXggPCBjdXJDaCkpIHsgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdENoYXJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRzdENoYXJJbmRleCAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbMF0uY29udGVudCA9IHRleHRjb3B5LnN1YnN0cmluZygwLCBkc3RDaGFySW5kZXgpICsgdGV4dGNvcHkuY2hhckF0KGRzdENoYXJJbmRleCkudG9VcHBlckNhc2UoKSArIHRleHRjb3B5LnN1YnN0cmluZyhkc3RDaGFySW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoIChsaW5lUGFydHNbaV0udHlwZSkge1xuICAgICAgICAgICAgICAgIC8vIDMuMi4xIFx1NTkwNFx1NzQwNlx1NjU4N1x1NjcyQ1x1NTMzQVx1NTc1N1xuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjQgXHU1OTA0XHU3NDA2XHU1M0U1XHU5OTk2XHU1QjU3XHU2QkNEXHU1OTI3XHU1MTk5XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5BdXRvQ2FwaXRhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZyA9IC9bXFwuXFw/XFwhXHUzMDAyXHVGRjAxXHVGRjFGXShbXFxzXSopW2EtelxcdTA0MDFcXHUwNDUxXFx1MDQxMC1cXHUwNDRmXS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJwcmV2Q2gsIGN1ckNoLCBvZmZzZXQsIHRlbXBJbmRleFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHByZXZDaCwgY3VyQ2gsIG9mZnNldCwgdGVtcEluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc1NwYWNlRG90ID0gdGVtcEluZGV4LTI8MCB8fCBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgtMiwgdGVtcEluZGV4KT09JyAuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlID09IFdvcmtNb2RlLkdsb2JhbGx5ICYmICFpc1NwYWNlRG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleCkudG9VcHBlckNhc2UoKSArIGNvbnRlbnQuc3Vic3RyaW5nKHJlZy5sYXN0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCAmJiAhaXNTcGFjZURvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgpLnRvVXBwZXJDYXNlKCkgKyBjb250ZW50LnN1YnN0cmluZyhyZWcubGFzdEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSAgIFxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuMSBcdTU5MDRcdTc0MDZcdTRFMkRcdTgyRjFcdTY1ODdcdTRFNEJcdTk1RjRcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkNoaW5lc2VFbmdsaXNoU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcxID0gLyhbQS1aYS16XSkoW1xcdTRlMDAtXFx1OWZhNV0pL2dpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzIgPSAvKFtcXHU0ZTAwLVxcdTlmYTVdKShbQS1aYS16XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShyZWcxLCBcIiQxICQyXCIpLnJlcGxhY2UocmVnMiwgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5DaGluZXNlTnVtYmVyU3BhY2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oWzAtOV0pKFtcXHU0ZTAwLVxcdTlmYTVdKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMSA9IC8oW1xcdTRlMDAtXFx1OWZhNV0pKFswLTldKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcxLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZzEubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiB0ZW1wSW5kZXggPj0gcHJldkNoIC0gb2Zmc2V0ICYmIHRlbXBJbmRleCA8IGN1ckNoIC0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJDaCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5FbmdsaXNoTnVtYmVyU3BhY2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oW0EtWmEtel0pKFxcZCkvZztcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZy5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzEgPSAvKFxcZCkoW0EtWmEtel0pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZzEuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnMS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dC4yIFx1NTkwNFx1NzQwNlx1NEUyRFx1NjU4N1x1OTVGNFx1NjVFMFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQ2hpbmVzZU5vU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcgPSAvKFtcXHU0ZTAwLVxcdTlmYTVcdUZGMENcdTMwMDJcdTMwMDFcdUZGMUJcdTIwMThcdTIwMTlcdTMwMEFcdTMwMEJdKykoXFxzKykoW1xcdTRlMDAtXFx1OWZhNVx1RkYwQ1x1MzAwMlx1MzAwMVx1RkYxQlx1MjAxOFx1MjAxOVx1MzAwQVx1MzAwQl0rKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHJlZy5leGVjKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnLCBcIiQxJDNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gXHU2ODA3XHU3MEI5XHU0RTBFXHU2NTg3XHU2NzJDXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjMgXHU1OTA0XHU3NDA2XHU2ODA3XHU3MEI5XHU0RTBFXHU2NTg3XHU2NzJDXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZihzZXR0aW5ncy5FbmdsaXNoU3BhY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oWyxcXC47XFw/XFwhXFwpXSkoWzAtOUEtWmEtelxcdTA0MDFcXHUwNDUxXFx1MDQxMC1cXHUwNDRmXSl8KFtBLVphLXowLTlcXHU0ZTAwLVxcdTlmYTU6LFxcLlxcP1xcISdcIl0rKShcXCgpfFssXFwuO1xcPzohXVtcXHU0ZTAwLVxcdTlmYTVdL2dpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZy5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZy5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNTcGFjZURvdCA9ICchLj87LCcuY29udGFpbnMoY29udGVudC5jaGFyQXQodGVtcEluZGV4LTEpKSAmJiAodGVtcEluZGV4LTI8MCB8fCBjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgtMik9PScgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc051bVB1bmNOdW0gPSAvWywuXVxcZC8udGVzdChjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgtMSwgdGVtcEluZGV4KzEpKSAmJiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVtcEluZGV4LTI8MCB8fCAvXFxkLy50ZXN0KGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleC0yKSkpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlID09IFdvcmtNb2RlLkdsb2JhbGx5ICYmICFpc1NwYWNlRG90ICYmICFpc051bVB1bmNOdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhaXNTcGFjZURvdCAmJiAhaXNOdW1QdW5jTnVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBcdTUzNTVcdTcyRUNcdTU5MDRcdTc0MDZcdTUxOTJcdTUzRjdcdTU0MEVcdTY1ODdcdTY3MkNcdTc2ODRcdTgxRUFcdTUyQThcdTdBN0FcdTY4M0NcdUZGMENcdTRFM0FcdTRFODZcdTUxN0NcdTVCQjkgOmVtb2ppOiBcdTY4M0NcdTVGMEZcdTc2ODRcdThGOTNcdTUxNjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMiA9IC8oOikoW0EtWmEtejAtOV9dK1sgLFxcLlxcP1xcXFxcXC87J1wiXHVGRjBDXHUzMDAyXHVGRjFGXHVGRjFCXHUyMDE4XHUyMDFDXHUyMDFEXHUyMDE5XHUzMDAxXFxbXFxdXFwtXFx7XFx9XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnMiwgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMyA9IC8oOikoW1wiJ10pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnMywgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjcgXHU1Rjk3XHU1MjMwXHU2NTg3XHU2NzJDXHU5MEU4XHU1MjA2XHU2NjJGXHU1NDI2XHU0RUU1XHU3QTdBXHU3NjdEXHU3QjI2XHU1RjAwXHU1OUNCXHU2MjE2XHU3RUQzXHU2NzVGXHVGRjBDXHU3NTI4XHU2NzY1XHU1MjI0XHU2NUFEXHU1NDBFXHU3RUVEXHU2NTg3XHU2NzJDXHU1MjREXHU1NDBFXHU2NjJGXHU1NDI2XHU5NzAwXHU4OTgxXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdTdHJpY3RTcGFjZVN0YXJ0ID0gL15cXDA/XFxzLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0cmljdFNwYWNlRW5kID0gL1xcc1xcMD8kLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0YXJ0V2l0aFNwYWNlID0gL15cXDA/W1xccyxcXC47XFw/XFwhXHVGRjBDXHUzMDAyXHVGRjFCXHUzMDBCXHVGRjFGXHVGRjFBOlx1RkYwMX5cXCpcdTMwMDFcdUZGMDhcdUZGMDlcIlx1MjAxRFxcXVxcKVxcfV0vO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnRW5kV2l0aFNwYWNlID0gL1tcXHNcdUZGMENcdTMwMDJcdTMwMDFcdUZGMUFcdUZGMUJcdUZGMUZcdUZGMDFcdUZGMDhcdUZGMDl+XFwqXCJcdTMwMEFcdTIwMUNcXFtcXChcXHtdXFwwPyQvO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHh0U3RhcnRTcGFjZVNhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVnU3RhcnRXaXRoU3BhY2UudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ1N0cmljdFNwYWNlU3RhcnQudGVzdChjb250ZW50KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRTdGFydFNwYWNlU2F0ZSA9IFNwYWNlU3RhdGUuc3RyaWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0U3RhcnRTcGFjZVNhdGUgPSBTcGFjZVN0YXRlLnNvZnRcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdFbmRXaXRoU3BhY2UudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ1N0cmljdFNwYWNlRW5kLnRlc3QoY29udGVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLnNvZnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjggXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU5MEU4XHU1MjA2XHU3Njg0XHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1OTA0XHU3NDA2XHU3QTdBXHU2ODNDXHU2REZCXHU1MkEwXHU3Njg0XHU5NUVFXHU5ODk4XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJldlBhcnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlID4gdHh0U3RhcnRTcGFjZVNhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgJiYgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSA+IHR4dFN0YXJ0U3BhY2VTYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gJyAnICsgY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiB0eHRTdGFydFNwYWNlU2F0ZSA9PSBTcGFjZVN0YXRlLm5vbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdFRleHRCZWdpbiA9IGNvbnRlbnQuY2hhckF0KDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnTWRMaW5rRW5kID0gL1xcXS87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rRW5kSW5kZXggPSBsaW5lUGFydHNbaSAtIDFdLmNvbnRlbnQuc2VhcmNoKHJlZ01kTGlua0VuZCkgLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0TGlua0VuZCA9IGxpbmVQYXJ0c1tpIC0gMV0uY29udGVudC5jaGFyQXQoY2hhckF0TGlua0VuZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJBdExpbmtFbmQgPT09ICdbJykgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0d29OZWlnaGJvckNoYXJzID0gY2hhckF0TGlua0VuZCArIGNoYXJBdFRleHRCZWdpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ05vdE5lZWRTcGFjZSA9IC9bXFx1NGUwMC1cXHU5ZmE1XHVGRjBDXHUzMDAyXHVGRjFGXHVGRjFBXHVGRjFCXHUyMDFEXHUyMDFDXHUyMDE5XHUyMDE4LVx1RkYwOX1dW1xcdTRlMDAtXFx1OWZhNV0vZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdOb3ROZWVkU3BhY2UudGVzdCh0d29OZWlnaGJvckNoYXJzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpIC0gMV0ucmlnaHRTcGFjZVJlcXVpcmUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjkgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gJ1xcMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGNvbnRlbnQuc2VhcmNoKHJlZylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFx1NTIyMFx1OTY2NCBcXDBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gc3RyaW5nRGVsZXRlQXQoY29udGVudCwgbik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IHR4dEVuZFNwYWNlU3RhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDMuMi4yIFx1NTkwNFx1NzQwNlx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTc1N1x1OTBFOFx1NTIwNlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjEgXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1NDhDc2V0dGluZ3NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSA+IHByZXZUZXh0RW5kU3BhY2VTdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjIgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjMgXHU1M0Q4XHU5MUNGXHU2NkY0XHU2NUIwXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUuY29kZTtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyAzLjIuMyBcdTU5MDRcdTc0MDZcdTg4NENcdTUxODVcdTUxNkNcdTVGMEZcdTc2ODRcdTkwRThcdTUyMDZcbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4xIFx1NjgzOVx1NjM2RVx1NTI0RFx1NEUwMFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1NTQ4Q3NldHRpbmdzXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaChwcmV2UGFydFR5cGUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5ub25lOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+cHJldlRleHRFbmRTcGFjZVN0YXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0ucmlnaHRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4yIFx1NTk4Mlx1Njc5Q1x1NTE0OVx1NjgwN1x1NTcyOFx1OEJFNVx1NTMzQVx1NTc1N1x1RkYwQ1x1NTIxOVx1OEJBMVx1N0I5N1x1NjcwMFx1N0VDOFx1NTE0OVx1NjgwN1x1NzY4NFx1NEY0RFx1N0Y2RVxuICAgICAgICAgICAgICAgICAgICBpZihpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDdXJzb3JDaCA9IG9mZnNldCArIGN1cnNvclJlbGF0aXZlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4zIFx1NTNEOFx1OTFDRlx1NjZGNFx1NjVCMFxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLmZvcm11bGE7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldlRleHRFbmRTcGFjZVN0YXRlPnNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPT1TcGFjZVN0YXRlLnN0cmljdCAmJiBwcmV2VGV4dEVuZFNwYWNlU3RhdGU8U3BhY2VTdGF0ZS5zdHJpY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiBwcmV2VGV4dEVuZFNwYWNlU3RhdGU9PVNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdOb05lZWRTcGFjZSA9IC9bXFx1NGUwMC1cXHU5ZmE1XVtcXHU0ZTAwLVxcdTlmYTVdL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRUZXh0RW5kID0gbGluZVBhcnRzW2ktMV0uY29udGVudC5jaGFyQXQobGluZVBhcnRzW2ktMV0uY29udGVudC5sZW5ndGgtMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rQmVnaW46c3RyaW5nID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS50eXBlPT1JbmxpbmVUeXBlLndpa2lsaW5rKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnQWxpYXMgPSAvXFx8LztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyT2ZBbGlhc0JlZ2luID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuc2VhcmNoKHJlZ0FsaWFzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY2hhck9mQWxpYXNCZWdpblwiLGNoYXJPZkFsaWFzQmVnaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVnaW5JbmRleCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihsaW5lUGFydHNbaV0uY29udGVudC5jaGFyQXQoMCk9PT0nIScpIGJlZ2luSW5kZXg9MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyT2ZBbGlhc0JlZ2luIT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbkluZGV4ID0gY2hhck9mQWxpYXNCZWdpbisxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhckF0TGlua0JlZ2luID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuY2hhckF0KGJlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJiZWdpbkluZGV4XCIsIGJlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hhckF0TGlua0JlZ2luPT0nXScpIGJyZWFrOyAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ01kTGlua0JlZ2luID0gL1xcWy87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0TGlua0JlZ2luSW5kZXggPSBsaW5lUGFydHNbaV0uY29udGVudC5zZWFyY2gocmVnTWRMaW5rQmVnaW4pKzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQXRMaW5rQmVnaW4gPSBsaW5lUGFydHNbaV0uY29udGVudC5jaGFyQXQoY2hhckF0TGlua0JlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hhckF0TGlua0JlZ2luPT09J10nKSBicmVhazsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0d29OZWlnaGJvckNoYXJzID0gY2hhckF0VGV4dEVuZCtjaGFyQXRMaW5rQmVnaW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFyZWdOb05lZWRTcGFjZS50ZXN0KHR3b05laWdoYm9yQ2hhcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZighc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgJiYgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5wcmV2VGV4dEVuZFNwYWNlU3RhdGUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ktMV0ucmlnaHRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBMaW5rLjIgXHU1OTgyXHU2NzlDXHU4QkU1XHU1MzNBXHU1NzU3XHU2NzA5XHU1MTQ5XHU2ODA3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBMaW5rLjMgXHU2NkY0XHU2NUIwXHU1M0Q4XHU5MUNGXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IGxpbmVQYXJ0c1tpXS50eXBlO1xuICAgICAgICAgICAgICAgICAgICBwcmV2VGV4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDMuMi41IFx1NTkwNFx1NzQwNlx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NTMzQVx1NTc1N1x1NzY4NFx1OTBFOFx1NTIwNlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAvLyBVc2VyLjEgXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1NDhDc2V0dGluZ3NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+cHJldlRleHRFbmRTcGFjZVN0YXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBVc2VyLjIgXHU1OTgyXHU2NzlDXHU4QkU1XHU1MzNBXHU1NzU3XHU2NzA5XHU1MTQ5XHU2ODA3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBMaW5rLjMgXHU2NkY0XHU2NUIwXHU1M0Q4XHU5MUNGXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUudXNlcjtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvcihsZXQgaT0wO2k8bGluZVBhcnRzLmxlbmd0aDtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKGxpbmVQYXJ0c1tpXS50eXBlID09PSBJbmxpbmVUeXBlLnRleHQgJiYgbGluZVBhcnRzW2ldLmNvbnRlbnQhPWxpbmVQYXJ0c09yaWdpbltpXS5jb250ZW50KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbGluZVBhcnRzW2ldLmNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzT3JpZ2luW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNPcmlnaW5baV0uZW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBsaW5lUGFydHNPcmlnaW5baV0uY29udGVudFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIGlubGluZUNoYW5nZUxpc3QgPSBpbmxpbmVDaGFuZ2VMaXN0LnNvcnQoKGEsIGIpOm51bWJlcj0+YS5iZWdpbi1iLmJlZ2luKTtcbiAgICAgICAgcmV0dXJuIFtyZXN1bHRMaW5lLCByZXN1bHRDdXJzb3JDaCwgaW5saW5lQ2hhbmdlTGlzdF07XG4gICAgfVxuICAgIFxufVxuXG5cbmV4cG9ydCBjbGFzcyBNYXJrZG93blBhcnNlcntcbiAgICBjb25zdHJ1Y3Rvcigpe31cblxufVxuXG5mdW5jdGlvbiBtYXRjaFdpdGhSZWcodGV4dDogc3RyaW5nLCByZWdFeHA6IFJlZ0V4cCwgdHlwZTogSW5saW5lVHlwZSwgaW5saW5lVHlwZUFycmF5OiBJbmxpbmVQYXJ0W10sXG4gICAgY2hlY2tBcnJheSA9IGZhbHNlLCBsZWZ0U3BhY2VSZTogU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZSwgcmlnaHRTcGFjZVJlOiBTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lKTogSW5saW5lUGFydFtdIHtcbiAgICBsZXQgcmV0QXJyYXkgPSBpbmxpbmVUeXBlQXJyYXk7XG4gICAgbGV0IG1hdGNoQXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG4gICAgLy8gY29uc29sZS5sb2coJ2JlZm9yZS0tLS0tLS0tLS0tXFxuJyxyZXRBcnJheSlcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBsZXQgbWF0Y2ggPSByZWdFeHAuZXhlYyh0ZXh0KTtcbiAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgIC8vIFx1NjhDMFx1NjdFNVx1NTFCMlx1N0E4MVxuICAgICAgICBpZiAoY2hlY2tBcnJheSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmKHJlZ0V4cC5sYXN0SW5kZXg+cmV0QXJyYXlbaV0uYmVnaW4gJiYgcmV0QXJyYXlbaV0uZW5kPm1hdGNoLmluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsaWQpIGNvbnRpbnVlO1xuICAgICAgICBtYXRjaEFycmF5LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGVudDogbWF0Y2hbMF0sXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBiZWdpbjogbWF0Y2guaW5kZXgsXG4gICAgICAgICAgICAgICAgZW5kOiByZWdFeHAubGFzdEluZGV4LFxuICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6IGxlZnRTcGFjZVJlLFxuICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiByaWdodFNwYWNlUmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5jb25jYXQobWF0Y2hBcnJheSk7XG4gICAgLy8gY29uc29sZS5sb2coJ0FmdGVyPT09PT09PT09PT1cXG4nLCByZXRBcnJheSk7XG4gICAgcmV0dXJuIHJldEFycmF5O1xufVxuXG5mdW5jdGlvbiBtYXRjaFdpdGhBYmJyKHRleHQ6IHN0cmluZywgdHlwZTogSW5saW5lVHlwZSwgaW5saW5lVHlwZUFycmF5OiBJbmxpbmVQYXJ0W10sIGNoZWNrQXJyYXkgPSBmYWxzZSl7XG4gICAgbGV0IHJldEFycmF5ID0gaW5saW5lVHlwZUFycmF5O1xuICAgIGxldCBtYXRjaEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICByZXRBcnJheSA9IHJldEFycmF5LnNvcnQoKGEsIGIpOiBudW1iZXIgPT4gYS5iZWdpbiAtIGIuYmVnaW4pO1xuICAgIGxldCByZWdBYmJyID0gLyhbYS16QS1aXVxcLikrL2c7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgbGV0IG1hdGNoID0gcmVnQWJici5leGVjKHRleHQpO1xuICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICAgICAgbGV0IGlzSW5CbG9ja0JlZ2luOmJvb2xlYW4gPSAobWF0Y2guaW5kZXg9PTApO1xuICAgICAgICAvLyBcdTY4QzBcdTY3RTVcdTUxQjJcdTdBODFcbiAgICAgICAgaWYgKGNoZWNrQXJyYXkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZihtYXRjaC5pbmRleCA9PSByZXRBcnJheVtpXS5lbmQpe1xuICAgICAgICAgICAgICAgICAgICBpc0luQmxvY2tCZWdpbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHJlZ0FiYnIubGFzdEluZGV4PnJldEFycmF5W2ldLmJlZ2luICYmIHJldEFycmF5W2ldLmVuZD5tYXRjaC5pbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZighaXNJbkJsb2NrQmVnaW4gJiYgdmFsaWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCByZWdDaGFyID0gL1thLXpBLVowLTldLztcbiAgICAgICAgICAgIGlmKHJlZ0NoYXIudGVzdCh0ZXh0LmNoYXJBdChtYXRjaC5pbmRleC0xKSkpe1xuICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbGlkKSBjb250aW51ZTtcbiAgICAgICAgbWF0Y2hBcnJheS5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG1hdGNoWzBdLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgYmVnaW46IG1hdGNoLmluZGV4LFxuICAgICAgICAgICAgICAgIGVuZDogcmVnQWJici5sYXN0SW5kZXgsXG4gICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5jb25jYXQobWF0Y2hBcnJheSk7XG4gICAgLy8gY29uc29sZS5sb2coJ0FmdGVyPT09PT09PT09PT1cXG4nLCByZXRBcnJheSk7XG4gICAgcmV0dXJuIHJldEFycmF5O1xufVxuXG4vKipcbiAqIFx1NTIwNlx1NTI3Mlx1NEUwMFx1ODg0Q1x1NjU4N1x1NjcyQ1x1NEUyRFx1NzY4NFx1OTRGRVx1NjNBNVx1NTQ4Q1x1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NzY4NFx1NkI2M1x1NTIxOVx1OTBFOFx1NTIwNlx1RkYwQ1x1NUY5N1x1NTIzMCBJbmxpbmVQYXJ0IFx1NzY4NFx1NEUwRFx1NTQwQ1x1NTMzQVx1NTdERlxuICovXG5mdW5jdGlvbiBzcGxpdFRleHRXaXRoTGlua0FuZFVzZXJEZWZpbmVkKHRleHQ6IHN0cmluZywgcmVnRXhwcz86IHN0cmluZyk6IElubGluZVBhcnRbXSB7XG4gICAgbGV0IHJldEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICBsZXQgcmVnV2lraUxpbmsgPSAvXFwhP1xcW1xcW1teXFxbXFxdXSo/XFxdXFxdL2c7XG4gICAgbGV0IHJlZ01kTGluayA9IC9cXCE/XFxbW15cXFtcXF1dKj9cXF1cXChbXlxcc1xcKVxcKFxcW1xcXVxce1xcfSddKlxcKS9nO1xuICAgIC8vIGxldCByZWdCYXJlTGluayA9IC8oaHR0cHM/OlxcL1xcL3xmdHA6XFwvXFwvfG9ic2lkaWFuOlxcL1xcL3x6b3Rlcm86XFwvXFwvfHd3dy4pW15cXHNcdUZGMDhcdUZGMDlcdTMwMEFcdTMwMEJcdTMwMDJcdUZGMENcdUZGMDFcdUZGMUZcdUZGMUJcdUZGMUFcdTIwMUNcdTIwMURcdTIwMThcdTIwMTlcXClcXChcXFtcXF1cXHtcXH0nXSsvZztcblxuICAgIC8vIDEuIFx1NTMzOVx1OTE0RHdpa2lsaW5rXG4gICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhSZWcodGV4dCwgcmVnV2lraUxpbmssIElubGluZVR5cGUud2lraWxpbmssIHJldEFycmF5KTtcbiAgICAvLyAyLiBcdTUzMzlcdTkxNERtZGxpbmtcbiAgICByZXRBcnJheSA9IG1hdGNoV2l0aFJlZyh0ZXh0LCByZWdNZExpbmssIElubGluZVR5cGUubWRsaW5rLCByZXRBcnJheSk7XG5cbiAgICAvLyAzLiBcdTUzMzlcdTkxNERcdTc1MjhcdTYyMzdcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcbiAgICBsZXQgcmVnRXhwTGlzdDogUmVnRXhwW10gPSBbXTtcbiAgICBsZXQgbGVmdFNSZXF1aXJlTGlzdDogU3BhY2VTdGF0ZVtdID0gW107XG4gICAgbGV0IHJpZ2h0U1JlcXVpcmVMaXN0OiBTcGFjZVN0YXRlW10gPSBbXTtcbiAgICBsZXQgcmVnTnVsbCA9IC9eXFxzKiQvZztcbiAgICBsZXQgcmVnU1JlcXVpcmUgPSAvXFx8W1xcLT1cXCtdW1xcLT1cXCtdJC87XG4gICAgaWYgKHJlZ0V4cHMpIHtcbiAgICAgICAgbGV0IHJlZ3MgPSByZWdFeHBzLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWdzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgIGlmIChyZWdOdWxsLnRlc3QocmVnc1tpXSkpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBpZiAoKCFyZWdTUmVxdWlyZS50ZXN0KHJlZ3NbaV0pKSB8fCByZWdzW2ldLmxlbmd0aCA8PSAzKSB7XG4gICAgICAgICAgICAgICAgbmV3IE5vdGljZShcIkVhc3lUeXBpbmc6IFx1N0IyQ1wiICsgU3RyaW5nKGkpICsgXCJcdTg4NENcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcdTRFMERcdTdCMjZcdTU0MDhcdTg5QzRcdTgzMDNcXG5cIityZWdzW2ldKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCByZWdJdGVtID0gcmVnc1tpXS5zdWJzdHJpbmcoMCwgcmVnc1tpXS5sZW5ndGggLSAzKTtcbiAgICAgICAgICAgIGxldCBzcGFjZVJlcVN0cmluZyA9IHJlZ3NbaV0uc3Vic3RyaW5nKHJlZ3NbaV0ubGVuZ3RoIC0gMyk7XG5cbiAgICAgICAgICAgIGxldCBpc1ZhbGlkUmVnID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlZ1RlbXAgPSBuZXcgUmVnRXhwKHJlZ0l0ZW0sICdnJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlzVmFsaWRSZWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLnNldHRpbmdzLmRlYnVnKXtcbiAgICAgICAgICAgICAgICAgICAgbmV3IE5vdGljZShcIkVhc3VUeXBpbmc6IEJhZCBSZWdFeHA6XFxuXCIgKyByZWdJdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnKSB7XG4gICAgICAgICAgICAgICAgcmVnRXhwTGlzdC5wdXNoKG5ldyBSZWdFeHAocmVnSXRlbSwgJ2cnKSk7XG4gICAgICAgICAgICAgICAgbGVmdFNSZXF1aXJlTGlzdC5wdXNoKHN0cjJTcGFjZVN0YXRlKHNwYWNlUmVxU3RyaW5nLmNoYXJBdCgxKSkpO1xuICAgICAgICAgICAgICAgIHJpZ2h0U1JlcXVpcmVMaXN0LnB1c2goc3RyMlNwYWNlU3RhdGUoc3BhY2VSZXFTdHJpbmcuY2hhckF0KDIpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlZ0xlbiA9IHJlZ0V4cExpc3QubGVuZ3RoO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVnTGVuOyBpKyspIHtcbiAgICAgICAgICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoUmVnKHRleHQsIHJlZ0V4cExpc3RbaV0sIElubGluZVR5cGUudXNlciwgcmV0QXJyYXksIHRydWUsIGxlZnRTUmVxdWlyZUxpc3RbaV0sIHJpZ2h0U1JlcXVpcmVMaXN0W2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFx1NTMzOVx1OTE0RFx1NjVGNlx1OTVGNFx1NjIzM1xuICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoUmVnKHRleHQsIC9cXGR7MSwyfTpcXGR7MSwyfSg6XFxkezAsMn0pezAsMX0vZywgSW5saW5lVHlwZS51c2VyLCByZXRBcnJheSwgdHJ1ZSwgU3BhY2VTdGF0ZS5ub25lLCBTcGFjZVN0YXRlLm5vbmUpO1xuXG4gICAgLy8gNC4gXHU1MzM5XHU5MTREXHU3RjI5XHU1MTk5XHU1OTgyIGEubS5cbiAgICByZXRBcnJheSA9IG1hdGNoV2l0aEFiYnIodGV4dCwgSW5saW5lVHlwZS51c2VyLCByZXRBcnJheSwgdHJ1ZSk7XG5cbiAgICAvLyA1LiBcdTVGOTdcdTUyMzBcdTUyNjlcdTRGNTlcdTc2ODRcdTY1ODdcdTY3MkNcdTkwRThcdTUyMDZcbiAgICByZXRBcnJheSA9IHJldEFycmF5LnNvcnQoKGEsIGIpOiBudW1iZXIgPT4gYS5iZWdpbiAtIGIuYmVnaW4pO1xuXG4gICAgbGV0IHRleHRBcnJheTogSW5saW5lUGFydFtdID0gW107XG4gICAgbGV0IHRleHRCZWdpbiA9IDA7XG4gICAgbGV0IHRleHRFbmQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRleHRCZWdpbiA8IHJldEFycmF5W2ldLmJlZ2luKSB7XG4gICAgICAgICAgICB0ZXh0RW5kID0gcmV0QXJyYXlbaV0uYmVnaW47XG4gICAgICAgICAgICB0ZXh0QXJyYXkucHVzaChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRleHQuc3Vic3RyaW5nKHRleHRCZWdpbiwgdGV4dEVuZCksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IElubGluZVR5cGUudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IHRleHRCZWdpbixcbiAgICAgICAgICAgICAgICAgICAgZW5kOiB0ZXh0RW5kLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRleHRCZWdpbiA9IHJldEFycmF5W2ldLmVuZDtcbiAgICB9XG5cbiAgICBpZiAodGV4dEJlZ2luICE9IHRleHQubGVuZ3RoKSB7XG4gICAgICAgIHRleHRBcnJheS5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRleHQuc3Vic3RyaW5nKHRleHRCZWdpbiwgdGV4dC5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIHR5cGU6IElubGluZVR5cGUudGV4dCxcbiAgICAgICAgICAgICAgICBiZWdpbjogdGV4dEJlZ2luLFxuICAgICAgICAgICAgICAgIGVuZDogdGV4dC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyA2LiBcdTU0MDhcdTVFNzZcdTY1ODdcdTY3MkNcdTkwRThcdTUyMDZcdTU0OENcdTUxNzZcdTRFRDZcdTkwRThcdTUyMDZcbiAgICByZXRBcnJheSA9IHJldEFycmF5LmNvbmNhdCh0ZXh0QXJyYXkpO1xuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG4gICAgcmV0dXJuIHJldEFycmF5XG59XG5cbi8vIFx1NUI1N1x1N0IyNlx1OEY2Q1x1NTMxNlx1NjIxMFx1N0E3QVx1NjgzQ1x1NzJCNlx1NjAwMVx1ODk4MVx1NkM0MlxuZnVuY3Rpb24gc3RyMlNwYWNlU3RhdGUoczogc3RyaW5nKTogU3BhY2VTdGF0ZSB7XG4gICAgc3dpdGNoIChzKSB7XG4gICAgICAgIGNhc2UgXCIrXCI6XG4gICAgICAgICAgICByZXR1cm4gU3BhY2VTdGF0ZS5zdHJpY3Q7XG4gICAgICAgIGNhc2UgJz0nOlxuICAgICAgICAgICAgcmV0dXJuIFNwYWNlU3RhdGUuc29mdDtcbiAgICAgICAgY2FzZSAnLSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gU3BhY2VTdGF0ZS5ub25lO1xuICAgIH1cbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nMlNwYWNlU3RhdGUoczpzdHJpbmcpOlNwYWNlU3RhdGVcbntcbiAgICBpZihOdW1iZXIocyk9PVNwYWNlU3RhdGUubm9uZSkgcmV0dXJuIFNwYWNlU3RhdGUubm9uZTtcbiAgICBpZihOdW1iZXIocyk9PVNwYWNlU3RhdGUuc29mdCkgcmV0dXJuIFNwYWNlU3RhdGUuc29mdDtcbiAgICBpZihOdW1iZXIocyk9PVNwYWNlU3RhdGUuc3RyaWN0KSByZXR1cm4gU3BhY2VTdGF0ZS5zdHJpY3Q7XG4gICAgcmV0dXJuIFNwYWNlU3RhdGUubm9uZTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9zTGluZVR5cGUoc3RhdGU6IEVkaXRvclN0YXRlLCBwb3M6IG51bWJlcik6TGluZVR5cGUge1xuICAgIGNvbnN0IGxpbmUgPSBzdGF0ZS5kb2MubGluZUF0KHBvcylcbiAgICBjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG4gICAgY29uc3QgdG9rZW4gPSB0cmVlLnJlc29sdmUobGluZS5mcm9tLCAxKS5uYW1lXG4gICAgaWYgKHRva2VuLmNvbnRhaW5zKCdobWQtZnJvbnRtYXR0ZXInKSl7XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mcm9udG1hdHRlclxuICAgIH1cblxuICAgIGlmKHRva2VuLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICBmb3IobGV0IHA9bGluZS5mcm9tKzE7cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICAgICAgaWYoIXRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmZvcm11bGFcbiAgICB9XG4gICAgZWxzZSBpZih0b2tlbi5jb250YWlucygnY29kZScpICYmIHRva2VuLmNvbnRhaW5zKCdibG9jaycpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGxldCB0ID0gdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWVcbiAgICAgICAgICAgIGlmKCEodC5jb250YWlucygnY29kZScpICYmIHQuY29udGFpbnMoJ2Jsb2NrJykpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5jb2RlYmxvY2tcbiAgICB9XG4gICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9zTGluZVR5cGUyKHN0YXRlOiBFZGl0b3JTdGF0ZSwgcG9zOiBudW1iZXIpOkxpbmVUeXBlIHtcbiAgICBjb25zdCBsaW5lID0gc3RhdGUuZG9jLmxpbmVBdChwb3MpXG4gICAgY29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuICAgIGNvbnN0IHRva2VuID0gdHJlZS5yZXNvbHZlKGxpbmUuZnJvbSwgMSkubmFtZVxuICAgIGlmICh0b2tlbi5jb250YWlucygnaG1kLWZyb250bWF0dGVyJykpe1xuICAgICAgICByZXR1cm4gTGluZVR5cGUuZnJvbnRtYXR0ZXJcbiAgICB9XG5cbiAgICBpZih0b2tlbi5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGlmKCF0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mb3JtdWxhXG4gICAgfVxuICAgIGVsc2UgaWYodG9rZW4uY29udGFpbnMoJ2NvZGUnKSAmJiB0b2tlbi5jb250YWlucygnYmxvY2snKSl7XG4gICAgICAgIGZvcihsZXQgcD1saW5lLmZyb20rMTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgICAgICBsZXQgdCA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG4gICAgICAgICAgICBpZighKHQuY29udGFpbnMoJ2NvZGUnKSAmJiB0LmNvbnRhaW5zKCdibG9jaycpKSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTGluZVR5cGUuY29kZWJsb2NrXG4gICAgfVxuXG4gICAgZm9yKGxldCBwPWxpbmUuZnJvbTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgIGlmKHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdsaXN0Jykpe1xuICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLmxpc3RcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdjYWxsb3V0Jykpe1xuICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLmNhbGxvdXRfdGl0bGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZih0b2tlbi5jb250YWlucygncXVvdGUnKSl7XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5xdW90ZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbn0iLCAiaW1wb3J0IHsgQW5ub3RhdGlvbiwgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dH0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHsgRWFzeVR5cGluZ1NldHRpbmdUYWIsIEVhc3lUeXBpbmdTZXR0aW5ncywgUGFpclN0cmluZywgQ29udmVydFJ1bGV9IGZyb20gXCIuL3NldHRpbmdzXCJcblxuXG5leHBvcnQgZnVuY3Rpb24gcG9zVG9PZmZzZXQoZG9jOlRleHQsIHBvczp7bGluZTpudW1iZXIsIGNoOm51bWJlcn0pIHtcblx0cmV0dXJuIGRvYy5saW5lKHBvcy5saW5lICsgMSkuZnJvbSArIHBvcy5jaFxufVxuZXhwb3J0IGZ1bmN0aW9uIG9mZnNldFRvUG9zKGRvYzpUZXh0LCBvZmZzZXQ6bnVtYmVyKSB7XG5cdGxldCBsaW5lID0gZG9jLmxpbmVBdChvZmZzZXQpXG5cdHJldHVybiB7bGluZTogbGluZS5udW1iZXIgLSAxLCBjaDogb2Zmc2V0IC0gbGluZS5mcm9tfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZVN0ck9mVHJhbnNhYyh0cjogVHJhbnNhY3Rpb24pOiBzdHJpbmcge1xuXHRsZXQgVHJhbnNhY1R5cGVBcnJheTpzdHJpbmdbXSA9IFtcIkVhc3lUeXBpbmcuY2hhbmdlXCIsIFxuXHRcdFx0XHRcdFx0XHRcImlucHV0LnR5cGUuY29tcG9zZVwiLCBcImlucHV0LnR5cGVcIiwgXCJpbnB1dC5wYXN0ZVwiLCBcImlucHV0LmRyb3BcIiwgXCJpbnB1dC5jb21wbGV0ZVwiLCBcImlucHV0XCIsXG5cdFx0XHRcdFx0XHRcdFwiZGVsZXRlLnNlbGVjdGlvblwiLCBcImRlbGV0ZS5mb3J3YXJkXCIsIFwiZGVsZXRlLmJhY2t3YXJkXCIsIFwiZGVsZXRlLmN1dFwiLCBcImRlbGV0ZVwiLFxuXHRcdFx0XHRcdFx0XHRcIm1vdmUuZHJvcFwiLFxuXHRcdFx0XHRcdFx0XHRcInVuZG9cIiwgXCJyZWRvXCIsXG5cdFx0XHRcdFx0XHRcdFwic2VsZWN0LnBvaW50ZXJcIl07XG5cdGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBUcmFuc2FjVHlwZUFycmF5Lmxlbmd0aDsgaSsrKVxuXHR7XG5cdFx0aWYgKHRyLmlzVXNlckV2ZW50KFRyYW5zYWNUeXBlQXJyYXlbaV0pKVxuXHRcdFx0cmV0dXJuIFRyYW5zYWNUeXBlQXJyYXlbaV07XG5cdH1cblx0cmV0dXJuIFwibm9uZVwiXG59XG5cbmZ1bmN0aW9uIHN0cmluZzJwYWlyc3RyaW5nKHM6IHN0cmluZyk6UGFpclN0cmluZ3tcblx0bGV0IGN1cnNvcklkeCA9IHMuaW5kZXhPZihcInxcIik7XG5cdGxldCBsZWZ0ID0gcy5zdWJzdHJpbmcoMCwgY3Vyc29ySWR4KTtcblx0bGV0IHJpZ2h0ID0gcy5zdWJzdHJpbmcoY3Vyc29ySWR4KzEpO1xuXHRyZXR1cm4ge2xlZnQ6bGVmdCwgcmlnaHQ6cmlnaHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QobGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4pOkNvbnZlcnRSdWxlW10ge1xuXHRsZXQgcmVzOkNvbnZlcnRSdWxlW10gPSBbXTtcblx0Zm9yIChsZXQgaSBpbiBsaXN0KXtcblx0XHRyZXNbaV0gPSB7YmVmb3JlOiBzdHJpbmcycGFpcnN0cmluZyhsaXN0W2ldWzBdKSwgYWZ0ZXI6IHN0cmluZzJwYWlyc3RyaW5nKGxpc3RbaV1bMV0pfVxuXHR9XG5cdHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdEZWxldGVBdChzdHI6IHN0cmluZywgaW5kZXg6IG51bWJlcik6c3RyaW5nXG57XG4gICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgaW5kZXgpK3N0ci5zdWJzdHJpbmcoaW5kZXgrMSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdJbnNlcnRBdChzdHI6c3RyaW5nLCBpbmRleDogbnVtYmVyLCBzOiBzdHJpbmcpOnN0cmluZ1xue1xuICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIGluZGV4KStzK3N0ci5zdWJzdHJpbmcoaW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYXJhbURlZmluZWQocGFyYW06IGFueSk6Ym9vbGVhblxue1xuXHRyZXR1cm4gdHlwZW9mIHBhcmFtIT09XCJ1bmRlZmluZWRcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dTdHJpbmcoczogc3RyaW5nKTpzdHJpbmd7XG5cdHJldHVybiBzLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKTtcbn0iLCAiaW1wb3J0IHsgU3BhY2VTdGF0ZSwgc3RyaW5nMlNwYWNlU3RhdGUgfSBmcm9tICdzcmMvY29yZSc7XG5pbXBvcnQgeyBBcHAsIFRleHRDb21wb25lbnQsIE1hcmtkb3duVmlldywgTW9kYWwsIE5vdGljZSwgUGx1Z2luLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBXb3Jrc3BhY2UsIFdvcmtzcGFjZUxlYWYsIFRleHRBcmVhQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IEVhc3lUeXBpbmdQbHVnaW4gZnJvbSAnLi9tYWluJztcbmltcG9ydCB7IHNob3dTdHJpbmcgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWlyU3RyaW5nIHtcblx0bGVmdDogc3RyaW5nO1xuXHRyaWdodDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnRSdWxlIHtcblx0YmVmb3JlOiBQYWlyU3RyaW5nO1xuXHRhZnRlcjogUGFpclN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gUnVsZVR5cGUge2RlbGV0ZT0gXCJEZWxldGUgUnVsZVwiLCBjb252ZXJ0PSdDb252ZXJ0IFJ1bGUnfVxuZXhwb3J0IGVudW0gV29ya01vZGUgeyBPbmx5V2hlblR5cGluZyA9IFwidHlwaW5nXCIsIEdsb2JhbGx5ID0gXCJnbG9iYWxcIiB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWFzeVR5cGluZ1NldHRpbmdzIHtcblx0VGFib3V0OiBib29sZWFuO1xuXHRTZWxlY3Rpb25FbmhhbmNlOiBib29sZWFuO1xuXHRJbnRyaW5zaWNTeW1ib2xQYWlyczogYm9vbGVhbjtcblx0QmFzZU9iRWRpdEVuaGFuY2U6IGJvb2xlYW47XG5cdEZXMkhXRW5oYW5jZTogYm9vbGVhbjtcblx0QXV0b0Zvcm1hdDogYm9vbGVhbjtcblx0RXhjbHVkZUZpbGVzOiBzdHJpbmc7XG5cdEF1dG9DYXBpdGFsOiBib29sZWFuO1xuXHRBdXRvQ2FwaXRhbE1vZGU6IFdvcmtNb2RlO1xuXHRDaGluZXNlRW5nbGlzaFNwYWNlOiBib29sZWFuO1xuXHRFbmdsaXNoTnVtYmVyU3BhY2U6IGJvb2xlYW47XG5cdENoaW5lc2VOb1NwYWNlOiBib29sZWFuO1xuXHRDaGluZXNlTnVtYmVyU3BhY2U6IGJvb2xlYW47XG5cdFB1bmN0dWF0aW9uU3BhY2U6IGJvb2xlYW47XG5cdFB1bmN0dWF0aW9uU3BhY2VNb2RlOiBXb3JrTW9kZTtcblx0SW5saW5lQ29kZVNwYWNlTW9kZTogU3BhY2VTdGF0ZTtcblx0SW5saW5lRm9ybXVsYVNwYWNlTW9kZTogU3BhY2VTdGF0ZTtcblx0SW5saW5lTGlua1NwYWNlTW9kZTogU3BhY2VTdGF0ZTtcblx0SW5saW5lTGlua1NtYXJ0U3BhY2U6IGJvb2xlYW47XG5cdFVzZXJEZWZpbmVkUmVnU3dpdGNoOiBib29sZWFuO1xuXHRVc2VyRGVmaW5lZFJlZ0V4cDogc3RyaW5nO1xuXHRkZWJ1ZzogYm9vbGVhbjtcblxuXHR1c2VyU2VsUmVwUnVsZVRyaWdnZXI6IHN0cmluZ1tdO1xuXHR1c2VyU2VsUmVwUnVsZVZhbHVlOiBQYWlyU3RyaW5nW107XG5cdHVzZXJEZWxldGVSdWxlc1N0ckxpc3Q6IFtzdHJpbmcsIHN0cmluZ11bXTtcblx0dXNlckNvbnZlcnRSdWxlc1N0ckxpc3Q6IFtzdHJpbmcsIHN0cmluZ11bXTtcblx0dXNlclNlbFJ1bGVTZXR0aW5nc09wZW46IGJvb2xlYW47XG5cdHVzZXJEZWxSdWxlU2V0dGluZ3NPcGVuOiBib29sZWFuO1xuXHR1c2VyQ3Z0UnVsZVNldHRpbmdzT3BlbjogYm9vbGVhbjtcblxuXHRFbnRlclR3aWNlOiBib29sZWFuO1xuXHRUcnlGaXhDaGluZXNlSU06IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVFRJTkdTOiBFYXN5VHlwaW5nU2V0dGluZ3MgPSB7XG5cdFRhYm91dDogdHJ1ZSxcblx0U2VsZWN0aW9uRW5oYW5jZTogdHJ1ZSxcblx0SW50cmluc2ljU3ltYm9sUGFpcnM6IHRydWUsXG5cdEJhc2VPYkVkaXRFbmhhbmNlOiB0cnVlLFxuXHRGVzJIV0VuaGFuY2U6IHRydWUsXG5cblx0QXV0b0Zvcm1hdDogdHJ1ZSxcblx0RXhjbHVkZUZpbGVzOiBcIlwiLFxuXHRDaGluZXNlRW5nbGlzaFNwYWNlOiB0cnVlLFxuXHRDaGluZXNlTnVtYmVyU3BhY2U6IHRydWUsXG5cdEVuZ2xpc2hOdW1iZXJTcGFjZTogdHJ1ZSxcblx0Q2hpbmVzZU5vU3BhY2U6IHRydWUsXG5cdFB1bmN0dWF0aW9uU3BhY2U6IHRydWUsXG5cdEF1dG9DYXBpdGFsOiB0cnVlLFxuXHRBdXRvQ2FwaXRhbE1vZGU6IFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLFxuXHRQdW5jdHVhdGlvblNwYWNlTW9kZTogV29ya01vZGUuT25seVdoZW5UeXBpbmcsXG5cdElubGluZUNvZGVTcGFjZU1vZGU6IFNwYWNlU3RhdGUuc29mdCxcblx0SW5saW5lRm9ybXVsYVNwYWNlTW9kZTogU3BhY2VTdGF0ZS5zb2Z0LFxuXHRJbmxpbmVMaW5rU3BhY2VNb2RlOiBTcGFjZVN0YXRlLnNvZnQsXG5cdElubGluZUxpbmtTbWFydFNwYWNlOiB0cnVlLFxuXHRVc2VyRGVmaW5lZFJlZ1N3aXRjaDogdHJ1ZSxcblx0VXNlckRlZmluZWRSZWdFeHA6IFwie3suKj99fXwrK1xcblwiK1xuXHRcdFwiPC4qPz58LS1cXG5cIiArXG5cdFx0XCJcXFxcW1xcXFwhLio/XFxcXF1bLStdezAsMX18LStcXG5cIitcblx0XHRcIihmaWxlOi8vL3xodHRwcz86Ly98ZnRwOi8vfG9ic2lkaWFuOi8vfHpvdGVybzovL3x3d3cuKVteXFxcXHNcdUZGMDhcdUZGMDlcdTMwMEFcdTMwMEJcdTMwMDIsXHVGRjBDXHVGRjAxXHVGRjFGO1x1RkYxQlx1RkYxQVx1MjAxQ1x1MjAxRFx1MjAxOFx1MjAxOVxcXFwpXFxcXChcXFxcW1xcXFxdXFxcXHtcXFxcfSddK3wrK1xcblwiK1xuXHRcdFwiXFxuW2EtekEtWjAtOV9cXFxcLS5dK0BbYS16QS1aMC05X1xcXFwtLl0rfCsrXFxuXCIrXG5cdFx0XCIoPzwhIykjW1xcXFx1NGUwMC1cXFxcdTlmYTVcXFxcd1xcXFwvXSt8KytcIixcblx0ZGVidWc6IGZhbHNlLFxuXHR1c2VyU2VsUmVwUnVsZVRyaWdnZXI6IFtcIi1cIiwgXCIjXCJdLFxuXHR1c2VyU2VsUmVwUnVsZVZhbHVlOiBbe2xlZnQ6XCJ+flwiLCByaWdodDpcIn5+XCJ9LCB7bGVmdDpcIiNcIiwgcmlnaHQ6XCIgXCJ9XSxcblx0dXNlckRlbGV0ZVJ1bGVzU3RyTGlzdDogW1tcImRlbW98XCIsIFwifFwiXV0sXG5cdHVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0OiBbW1wiOil8XCIsXCJcdUQ4M0RcdURFMDB8XCJdXSxcblx0dXNlclNlbFJ1bGVTZXR0aW5nc09wZW46IHRydWUsXG5cdHVzZXJEZWxSdWxlU2V0dGluZ3NPcGVuOiB0cnVlLFxuXHR1c2VyQ3Z0UnVsZVNldHRpbmdzT3BlbjogdHJ1ZSxcblxuXHRFbnRlclR3aWNlOiBmYWxzZSxcblx0VHJ5Rml4Q2hpbmVzZUlNOiBmYWxzZSxcbn1cblxuZXhwb3J0IGNsYXNzIEVhc3lUeXBpbmdTZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG5cdHBsdWdpbjogRWFzeVR5cGluZ1BsdWdpbjtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBFYXN5VHlwaW5nUGx1Z2luKSB7XG5cdFx0c3VwZXIoYXBwLCBwbHVnaW4pO1xuXHRcdHRoaXMucGx1Z2luID0gcGx1Z2luO1xuXHR9XG5cblx0ZGlzcGxheSgpOiB2b2lkIHtcblx0XHRjb25zdCB7IGNvbnRhaW5lckVsIH0gPSB0aGlzO1xuXG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiaDFcIiwgeyB0ZXh0OiBcIk9ic2lkaWFuIEVhc3lUeXBpbmcgUGx1Z2luXCIgfSk7XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoXCJwXCIsIHsgdGV4dDogXCJNb3JlIGRldGFpbCBpcyBpbiBHaXRodWI6IFwiIH0pLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHR0ZXh0OiBcImVhc3ktdHlwaW5nLW9ic2lkaWFuXCIsXG5cdFx0XHRocmVmOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9ZYW96aHV3YS9lYXN5LXR5cGluZy1vYnNpZGlhblwiLFxuXHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU1ODlFXHU1RjNBXHU3RjE2XHU4RjkxXHU4QkJFXHU3RjZFIChFbmhhbmNlZCBFZGl0aW5nIFNldHRpbmcpJyB9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTeW1ib2wgYXV0byBwYWlyIGFuZCBkZWxldGUgd2l0aCBwYWlyXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTg5RVx1NTJBMFx1NTkxQVx1NzlDRFx1N0IyNlx1NTNGN1x1OTE0RFx1NUJGOVx1OEY5M1x1NTE2NVx1RkYwQ1x1OTE0RFx1NUJGOVx1NTIyMFx1OTY2NFx1RkYwQ1x1NTk4Mlx1MzAwQVx1MzAwQiwgXHUyMDFDXHUyMDFELCBcdTMwMENcdTMwMEQsIFx1MzAwRVx1MzAwRixcdTMwMTBcdTMwMTFcdTdCNDlcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU2VsZWN0aW9uIFJlcGxhY2UgRW5oYW5jZW1lbnRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU5MDA5XHU0RTJEXHU2NTg3XHU2NzJDXHU2MEM1XHU1MUI1XHU0RTBCXHU3Njg0XHU3RjE2XHU4RjkxXHU1ODlFXHU1RjNBXHVGRjBDXHU2MzA5XHVGRkU1XHUyMTkyJFx1OTAwOVx1NEUyRFx1NzY4NFx1NjU4N1x1NjcyQyQsIFx1NjMwOVx1MDBCN1x1MjE5MmBcdTkwMDlcdTRFMkRcdTc2ODRcdTY1ODdcdTY3MkNgXHVGRjBDXHUzMDBBIFx1MjE5MiBcdTMwMEFcdTkwMDlcdTRFMkRcdTc2ODRcdTY1ODdcdTY3MkNcdTMwMEJcdTdCNDlcdTdCNDlcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuU2VsZWN0aW9uRW5oYW5jZSlcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5TZWxlY3Rpb25FbmhhbmNlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkNvbnZlcnQgc3VjY2Vzc2l2ZSBmdWxsIHdpZHRoIHN5bWJvbCB0byBoYWxmIHdpZHRoIHN5bWJvbFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdThGREVcdTdFRURcdThGOTNcdTUxNjVcdTUxNjhcdTg5RDJcdTdCMjZcdTUzRjdcdThGNkNcdTUzNEFcdTg5RDJcdUZGMENcdTMwMDJcdTMwMDJcdTIxOTIgLlx1RkYwQ1x1RkYwMVx1RkYwMVx1MjE5MiAhXHVGRjBDIFx1MzAwQlx1MzAwQlx1MjE5MiA+XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkZXMkhXRW5oYW5jZSlcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5GVzJIV0VuaGFuY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiQmFzaWMgc3ltYm9sIGlucHV0IGVuaGFuY2UgZm9yIG9ic2lkaWFuXCIpXG5cdFx0XHQuc2V0RGVzYyhcIk9ic2lkaWFuIFx1NzY4NFx1NTdGQVx1Nzg0MFx1OEY5M1x1NTE2NVx1NTg5RVx1NUYzQVx1RkYwQ1x1NTk4Mlx1MzAxMFx1MzAxMHwgXHUyMTkyIFtbfF1dXHVGRjBDXHU1M0U1XHU5OTk2XHU3Njg0XHUzMDAxXHUyMTkyIC9cdUZGMENcdTUzRTVcdTk5OTZcdTc2ODRcdTMwMEJcdTIxOTIgPlx1RkYwQ1x1MDBCN1x1MDBCN3wgXHUyMTkyIGB8YFx1RkYwQyBgXHUwMEI3fGAgXHU1M0Q4XHU2MjEwXHU0RUUzXHRcdTc4MDFcdTU3NTdcdUZGMENcdUZGRTVcdUZGRTV8IFx1MjE5MiAkfCRcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQmFzZU9iRWRpdEVuaGFuY2UpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQmFzZU9iRWRpdEVuaGFuY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiVGFib3V0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlRhYm91dCBpbmxpbmUgY29kZS4gVGFiXHU4REYzXHU1MUZBXHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxXHU1NzU3XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlRhYm91dClcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5UYWJvdXQgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTgxRUFcdTVCOUFcdTRFNDlcdTdGMTZcdThGOTFcdThGNkNcdTYzNjJcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBFZGl0IENvbnZlcnRpb24gUnVsZSknIH0pO1xuXHRcdHRoaXMuYnVpbGRVc2VyU2VsUmVwUnVsZVNldHRpbmcodGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImRldGFpbHNcIiwge1xuXHRcdFx0Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCIsXG5cdFx0XHRhdHRyOiB7XG5cdFx0XHRcdC4uLih0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUnVsZVNldHRpbmdzT3Blbj97IG9wZW46IHRydWUgfTp7fSlcblx0XHRcdH1cblx0XHR9KSlcblxuXHRcdHRoaXMuYnVpbGRVc2VyRGVsZXRlUnVsZVNldHRpbmcodGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImRldGFpbHNcIiwge1xuXHRcdFx0Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCIsXG5cdFx0XHRhdHRyOiB7XG5cdFx0XHRcdC4uLih0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsUnVsZVNldHRpbmdzT3Blbj97IG9wZW46IHRydWUgfTp7fSlcblx0XHRcdH1cblx0XHR9KSlcblxuXHRcdHRoaXMuYnVpbGRVc2VyQ29udmVydFJ1bGVTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcblx0XHRcdGNsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wiLFxuXHRcdFx0YXR0cjoge1xuXHRcdFx0XHQuLi4odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckN2dFJ1bGVTZXR0aW5nc09wZW4/eyBvcGVuOiB0cnVlIH06e30pXG5cdFx0XHR9XG5cdFx0fSkpXG5cdFx0XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdThCQkVcdTdGNkUgKEF1dG9mb3JtYXQgU2V0dGluZyknIH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkF1dG8gZm9ybWF0dGluZyB3aGVuIHR5cGluZ1wiKVxuXHRcdFx0LnNldERlc2MoXCJcdTY2MkZcdTU0MjZcdTU3MjhcdTdGMTZcdThGOTFcdTY1ODdcdTY4NjNcdTY1RjZcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdTY1ODdcdTY3MkNcdUZGMENcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdTc2ODRcdTYwM0JcdTVGMDBcdTUxNzNcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0Zvcm1hdClcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvRm9ybWF0ID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJywgeyB0ZXh0OiAnRGV0YWlsZWQgU2V0dGluZyBCZWxvdycgfSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2UgYmV0d2VlbiBDaGluZXNlIGFuZCBFbmdsaXNoXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NEUyRFx1NjU4N1x1NTQ4Q1x1ODJGMVx1NjU4N1x1OTVGNFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlRW5nbGlzaFNwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlRW5nbGlzaFNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2UgYmV0d2VlbiBDaGluZXNlIGFuZCBOdW1iZXJcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU0RTJEXHU2NTg3XHU1NDhDXHU2NTcwXHU1QjU3XHU5NUY0XHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOdW1iZXJTcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZU51bWJlclNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIGJldHdlZW4gRW5naWxzaCBhbmQgTnVtYmVyXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1ODJGMVx1NjU4N1x1NTQ4Q1x1NjU3MFx1NUI1N1x1OTVGNFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbmdsaXNoTnVtYmVyU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkVuZ2xpc2hOdW1iZXJTcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkRlbGV0ZSB0aGUgU3BhY2UgYmV0d2VlbiBDaGluZXNlIGNoYXJhY3RlcnNcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU0RTJEXHU2NTg3XHU1QjU3XHU3QjI2XHU5NUY0XHU1M0JCXHU5NjY0XHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOb1NwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlTm9TcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBldmVyeSBzZW50ZW5jZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTgyRjFcdTY1ODdcdTZCQ0ZcdTRFMkFcdTUzRTVcdTk5OTZcdTVCNTdcdTZCQ0RcdTU5MjdcdTUxOTlcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLCBcIlx1OEY5M1x1NTE2NVx1NjVGNlx1NzUxRlx1NjU0OChPbmx5IFdoZW4gVHlwaW5nKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLkdsb2JhbGx5LCBcIlx1NTE2OFx1NUM0MFx1NzUxRlx1NjU0OChXb3JrIEdsb2JhbGx5KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nIHwgV29ya01vZGUuR2xvYmFsbHkpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUgPSB2O1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VG9vbHRpcChcIlx1NTI5Rlx1ODBGRFx1NUYwMFx1NTE3MyhTd2l0Y2gpXCIpO1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWwpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9DYXBpdGFsID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU21hcnRseSBpbnNlcnQgc3BhY2UgYmV0d2VlbiB0ZXh0IGFuZCBwdW5jdHVhdGlvblwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTY1ODdcdTY3MkNcdTU0OENcdTY4MDdcdTcwQjlcdTk1RjRcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLCBcIlx1OEY5M1x1NTE2NVx1NjVGNlx1NzUxRlx1NjU0OChPbmx5IFdoZW4gVHlwaW5nKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLkdsb2JhbGx5LCBcIlx1NTE2OFx1NUM0MFx1NzUxRlx1NjU0OChXb3JrIEdsb2JhbGx5KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuUHVuY3R1YXRpb25TcGFjZU1vZGUpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogV29ya01vZGUuT25seVdoZW5UeXBpbmcgfCBXb3JrTW9kZS5HbG9iYWxseSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlID0gdjtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBzdGF0ZWd5IGJldHdlZW4gaW5saW5lIGNvZGUgYW5kIHRleHRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4IGBcdTg4NENcdTUxODVcdTRFRTNcdTc4MDFgIFx1NTQ4Q1x1NjU4N1x1NjcyQ1x1OTVGNFx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1MzAwMlwiICtcblx0XHRcdFx0XCJcdTY1RTBcdTg5ODFcdTZDNDJcdUZGMUFcdTVCRjlcdTY3MkNcdTdDN0JcdTUyMkJcdTU3NTdcdTRFMEVcdTVERTZcdTUzRjNcdTY1ODdcdTY3MkNcdTZDQTFcdTY3MDlcdTdBN0FcdTY4M0NcdTc2ODRcdTg5ODFcdTZDNDJcdUZGMENcIiArXG5cdFx0XHRcdFwiXHU4RjZGXHU3QTdBXHU2ODNDXHVGRjFBXHU1QkY5XHU2NzJDXHU3QzdCXHU1MjJCXHU1NzU3XHU0RTBFXHU1NDY4XHU1NkY0XHU1MzNBXHU1NzU3XHU1M0VBXHU4OTgxXHU2QzQyXHU2NzA5XHU4RjZGXHU3QTdBXHU2ODNDXHVGRjBDXHU4RjZGXHU3QTdBXHU2ODNDXHU1OTgyXHU1RjUzXHU1MjREXHU1NzU3XHU1REU2XHU4RkI5XHU3Njg0XHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU0RTNBXHUzMDAyXHVGRjBDXHVGRjFCXHVGRjFGXHU3QjQ5XHU1MTY4XHU4OUQyXHU2ODA3XHU3MEI5XHVGRjBDXHU1RjUzXHU1MjREXHU1NzU3XHU1M0YzXHU4RkI5XHU3Njg0XHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU0RTNBXHU2MjQwXHU2NzA5XHU1MTY4XHU1MzRBXHU4OUQyXHU2ODA3XHU3MEI5XHVGRjBDXCIgK1xuXHRcdFx0XHRcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQ1x1RkYxQVx1NUY1M1x1NTI0RFx1NTc1N1x1NEUwRVx1NEUzNFx1OEZEMVx1NjU4N1x1NjcyQ1x1NEU0Qlx1OTVGNFx1NEUyNVx1NjgzQ1x1NkRGQlx1NTJBMFx1N0E3QVx1NjgzQ1x1MzAwMlwiXG5cdFx0XHQpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5ub25lKSwgXCJcdTY1RTBcdTg5ODFcdTZDNDIoTm8gUmVxdWlyZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zb2Z0KSwgXCJcdThGNkZcdTdBN0FcdTY4M0MoU29mdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zdHJpY3QpLCBcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQyhTdHJpY3QgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSkpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSA9IHN0cmluZzJTcGFjZVN0YXRlKHYpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2Ugc3RhdGVneSBiZXR3ZWVuIGlubGluZSBmb3JtdWxhIGFuZCB0ZXh0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOCAkXHU4ODRDXHU1MTg1XHU1MTZDXHU1RjBGJCBcdTU0OENcdTY1ODdcdTY3MkNcdTk1RjRcdTc2ODRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLm5vbmUpLCBcIlx1NjVFMFx1ODk4MVx1NkM0MihObyBSZXF1aXJlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnNvZnQpLCBcIlx1OEY2Rlx1N0E3QVx1NjgzQyhTb2Z0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnN0cmljdCksIFwiXHU0RTI1XHU2ODNDXHU3QTdBXHU2ODNDKFN0cmljdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKFN0cmluZyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlKSk7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlID0gc3RyaW5nMlNwYWNlU3RhdGUodik7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBzdHJhdGVneSBiZXR3ZWVuIGxpbmsgYW5kIHRleHRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4IFtbd2lraWxpbmtdXSBbbWRsaW5rXSguLi4pIFx1NTQ4Q1x1NjU4N1x1NjcyQ1x1OTVGNFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1MzAwMlx1NjY3QVx1ODBGRFx1N0E3QVx1NjgzQ1x1NkEyMVx1NUYwRlx1NEUwQlx1NTIxOVx1NEYxQVx1ODAwM1x1ODY1MVx1OEJFNVx1OTRGRVx1NjNBNVx1NTc1N1x1NzY4NFx1NjYzRVx1NzkzQVx1NTE4NVx1NUJCOVx1RkYwOFx1NTk4Mndpa2lcdTk0RkVcdTYzQTVcdTc2ODRcdTUyMkJcdTU0MERcdUZGMDlcdTY3NjVcdTRFMEVcdTRFMzRcdThGRDFcdTY1ODdcdTY3MkNcdThGREJcdTg4NENcdTdBN0FcdTY4M0NcdTMwMDJcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFwiZHVtbXlcIiwgXCJcdTU0NDZcdTdBN0FcdTY4M0MoZHVtbXkpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oXCJzbWFydFwiLCBcIlx1NjY3QVx1ODBGRFx1N0E3QVx1NjgzQyhTbWFydClcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlID8gXCJzbWFydFwiIDogXCJkdW1teVwiKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlID0gdiA9PSBcInNtYXJ0XCIgPyB0cnVlIDogZmFsc2U7XG5cdFx0XHRcdFx0Ly8gbmV3IE5vdGljZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UpKTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5ub25lKSwgXCJcdTY1RTBcdTg5ODFcdTZDNDIoTm8gUmVxdWlyZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zb2Z0KSwgXCJcdThGNkZcdTdBN0FcdTY4M0MoU29mdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zdHJpY3QpLCBcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQyhTdHJpY3QgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSkpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSA9IHN0cmluZzJTcGFjZVN0YXRlKHYpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1NTMzQVx1NTc1NyAoQ3VzdG9tIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYmxvY2spJyB9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiVXNlciBEZWZpbmVkIFJlZ0V4cCBTd2l0Y2hcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU1RjAwXHU1MTczXHVGRjBDXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU0RTBEXHU4RkRCXHU4ODRDXHU2ODNDXHU1RjBGXHU1MzE2XHVGRjBDXHU0RTE0XHU1M0VGXHU0RUU1XHU4QkJFXHU3RjZFXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU1NzU3XHU0RTBFXHU1MTc2XHU0RUQ2XHU1MTg1XHU1QkI5XHU0RTRCXHU5NUY0XHU3Njg0XHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnU3dpdGNoKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ1N3aXRjaCA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoXCJwXCIsIHsgdGV4dDogXCJcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTc2RjhcdTUxNzNcdTc3RTVcdThCQzZcdUZGMENcdTg5QzEgXCIgfSkuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdHRleHQ6IFwiXHUzMDBBXHU5NjJFXHU0RTAwXHU1Q0YwXHVGRjFBXHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU3QjgwXHU2NjBFXHU2NTU5XHU3QTBCXHUzMDBCXCIsXG5cdFx0XHRocmVmOiBcImh0dHBzOi8vamF2YXNjcmlwdC5ydWFueWlmZW5nLmNvbS9zdGRsaWIvcmVnZXhwLmh0bWwjXCIsXG5cdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbChcInBcIiwgeyB0ZXh0OiBcIlx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1ODlDNFx1NTIxOVx1NEY3Rlx1NzUyOFx1OEJGNFx1NjYwRVx1NEUwRVx1NzkzQVx1NEY4Qlx1RkYxQVwiIH0pLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHR0ZXh0OiBcIlx1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1ODlDNFx1NTIxOVwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL2dpdGh1Yi5jb20vWWFvemh1d2EvZWFzeS10eXBpbmctb2JzaWRpYW4vYmxvYi9tYXN0ZXIvVXNlckRlZmluZWRSZWdFeHAubWRcIixcblx0XHR9KTtcblxuXHRcdGNvbnN0IHJlZ0NvbnRlbnRBcmVhU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRyZWdDb250ZW50QXJlYVNldHRpbmcuc2V0dGluZ0VsLnNldEF0dHJpYnV0ZShcblx0XHRcdFwic3R5bGVcIixcblx0XHRcdFwiZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XCJcblx0XHQpO1xuXHRcdHJlZ0NvbnRlbnRBcmVhU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJVc2VyLWRlZmluZWQgUmVndWxhciBFeHByZXNzaW9uLCBvbmUgZXhwcmVzc2lvbiBwZXIgbGluZVwiKVxuXHRcdFx0LnNldERlc2MoXG5cdFx0XHRcdFwiXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHVGRjBDXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU0RTBEXHU4RkRCXHU4ODRDXHU2ODNDXHU1RjBGXHU1MzE2XHVGRjBDXHU2QkNGXHU4ODRDXHU0RTAwXHU0RTJBXHU4ODY4XHU4RkJFXHU1RjBGXHVGRjBDXHU4ODRDXHU1QzNFXHU0RTBEXHU4OTgxXHU5NjhGXHU2MTBGXHU1MkEwXHU3QTdBXHU2ODNDXHUzMDAyXCIgK1xuXHRcdFx0XHRcIlx1NkJDRlx1ODg0Q1x1NjcyQlx1NUMzRTNcdTRFMkFcdTVCNTdcdTdCMjZcdTc2ODRcdTU2RkFcdTVCOUFcdTRFM0F8XHU1NDhDXHU0RTI0XHU0RTJBXHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XHU3QjI2XHU1M0Y3XHVGRjBDXHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XHU3QjI2XHU1M0Y3XHU0RTNBLT0rXHVGRjBDXHU1MjA2XHU1MjJCXHU0RUUzXHU4ODY4XHU0RTBEXHU4OTgxXHU2QzQyXHU3QTdBXHU2ODNDKC0pXHVGRjBDXHU4RjZGXHU3QTdBXHU2ODNDKD0pXHVGRjBDXHU0RTI1XHU2ODNDXHU3QTdBXHU2ODNDKCspXHUzMDAyXCIgK1xuXHRcdFx0XHRcIlx1OEZEOVx1NEUyNFx1NEUyQVx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1N0IyNlx1NTNGN1x1NTIwNlx1NTIyQlx1NEUzQVx1NTMzOVx1OTE0RFx1NTMzQVx1NTc1N1x1NzY4NFx1NURFNlx1NTNGM1x1NEUyNFx1OEZCOVx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVwiXG5cdFx0XHQpO1xuXHRcdGNvbnN0IHJlZ0NvbnRlbnRBcmVhID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KFxuXHRcdFx0cmVnQ29udGVudEFyZWFTZXR0aW5nLmNvbnRyb2xFbFxuXHRcdCk7XG5cblx0XHRzZXRBdHRyaWJ1dGVzKHJlZ0NvbnRlbnRBcmVhLmlucHV0RWwsIHtcblx0XHRcdHN0eWxlOiBcIm1hcmdpbi10b3A6IDEycHg7IHdpZHRoOiAxMDAlOyAgaGVpZ2h0OiAzMHZoO1wiLFxuXHRcdFx0Ly8gY2xhc3M6IFwibXMtY3NzLWVkaXRvclwiLFxuXHRcdH0pO1xuXHRcdHJlZ0NvbnRlbnRBcmVhXG5cdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHApXG5cdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnRXhwID0gdmFsdWU7XG5cdFx0XHRcdHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTYzMDdcdTVCOUFcdTY1ODdcdTRFRjZcdTRFMERcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTYgKEV4Y2x1ZGUgRm9sZGVycy9GaWxlcyknIH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJFeGNsdWRlIEZvbGRlcnMvRmlsZXNcIilcblx0XHRcdC5zZXREZXNjKFwiVGhpcyBwbHVnaW4gd2lsbCBwYXJzZSBlYWNoIGxpbmUgYXMgYSBleGx1ZGUgZm9sZGVyIG9yIGZpbGUuIEZvciBleGFtcGxlOiBEYWlseU5vdGUvLCBEYWlseU5vdGUvV2Vla05vdGVzLywgRGFpbHlOb3RlL3Rlc3QubWRcIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT5cblx0XHRcdFx0dGV4dFxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5FeGNsdWRlRmlsZXMpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuRXhjbHVkZUZpbGVzID0gdmFsdWU7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ0V4cGVyaW1lbnRhbCBGZWF0dXJlcycgfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkVuaGFuY2UgQ2hpbmVzZSBJbnB1dCBNZXRob2RcIilcblx0XHRcdC5zZXREZXNjKFwiXHU0RTJEXHU2NTg3XHU4RjkzXHU1MTY1XHU2Q0Q1XHU0RTBCXHVGRjBDXHU1NkRFXHU4RjY2XHU4RjkzXHU1MTY1XHU4MkYxXHU2NTg3XHU2NUY2XHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlRyeUZpeENoaW5lc2VJTSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuVHJ5Rml4Q2hpbmVzZUlNID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3RyaWN0IExpbmUgYnJlYWtzIE1vZGUgRW50ZXIgVHdpY2VcIilcblx0XHRcdC5zZXREZXNjKFwiXHU0RTI1XHU2ODNDXHU2MzYyXHU4ODRDXHU3Njg0XHU4QkJFXHU3RjZFXHU0RTBCXHVGRjBDXHU1NzI4XHU2NjZFXHU5MDFBXHU2NTg3XHU2NzJDXHU4ODRDXHU4RkRCXHU4ODRDXHU0RTAwXHU2QjIxXHU1NkRFXHU4RjY2XHU0RjFBXHU0RUE3XHU3NTFGXHU0RTI0XHU0RTJBXHU2MzYyXHU4ODRDXHU3QjI2XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkVudGVyVHdpY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkVudGVyVHdpY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJQcmludCBkZWJ1ZyBpbmZvIGluIGNvbnNvbGVcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU2M0E3XHU1MjM2XHU1M0YwXHU4RjkzXHU1MUZBXHU4QzAzXHU4QkQ1XHU0RkUxXHU2MDZGXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRlYnVnKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWJ1ZyA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHR9XG5cblx0YnVpbGRVc2VyU2VsUmVwUnVsZVNldHRpbmcoY29udGFpbmVyRWw6IEhUTUxEZXRhaWxzRWxlbWVudCl7XG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcbiAgICAgICAgY29udGFpbmVyRWwub250b2dnbGUgPSBhc3luYyAoKSA9PiB7XG5cdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUnVsZVNldHRpbmdzT3BlbiA9IGNvbnRhaW5lckVsLm9wZW47XG5cdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgfTtcblx0XHRjb25zdCBzdW1tYXJ5ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoXCJzdW1tYXJ5XCIsIHtjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIn0pO1xuXHRcdHN1bW1hcnkuc2V0VGV4dChcIlx1ODFFQVx1NUI5QVx1NEU0OVx1OTAwOVx1NEUyRFx1NjU4N1x1NjcyQ1x1N0YxNlx1OEY5MVx1NTg5RVx1NUYzQVx1ODlDNFx1NTIxOSAoQ3VzdG9taXplIFNlbGVjdGlvbiBSZXBsYWNlIFJ1bGUpXCIpXG5cbiAgICAgICAgLy8gc3VtbWFyeS5zZXRIZWFkaW5nKCkuc2V0TmFtZShcIlVzZXIgZGVmaW5lZCBTZWxlY3Rpb24gUmVwbGFjZSBSdWxlXCIpO1xuICAgICAgICAvLyBzdW1tYXJ5LmNyZWF0ZURpdihcImNvbGxhcHNlclwiKS5jcmVhdGVEaXYoXCJoYW5kbGVcIik7XG5cblx0XHRjb25zdCBzZWxlY3Rpb25SdWxlU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRzZWxlY3Rpb25SdWxlU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJTZWxlY3Rpb24gUmVwbGVjZSBSdWxlXCIpXG5cblx0XHRjb25zdCByZXBsYWNlUnVsZVRyaWdnZXIgPSBuZXcgVGV4dENvbXBvbmVudChzZWxlY3Rpb25SdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHJlcGxhY2VSdWxlVHJpZ2dlci5zZXRQbGFjZWhvbGRlcihcIlRyaWdnciBTeW1ib2xcIik7XG5cblx0XHRjb25zdCByZXBsYWNlTGVmdFN0cmluZyA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChzZWxlY3Rpb25SdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHJlcGxhY2VMZWZ0U3RyaW5nLnNldFBsYWNlaG9sZGVyKFwiTmV3IExlZnQgU2lkZSBTdHJpbmdcIik7XG5cblx0XHRjb25zdCByZXBsYWNlUmlnaHRTdHJpbmcgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoc2VsZWN0aW9uUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRyZXBsYWNlUmlnaHRTdHJpbmcuc2V0UGxhY2Vob2xkZXIoXCJOZXcgUmlnaHQgU2lkZSBTdHJpbmdcIik7XG5cblx0XHRzZWxlY3Rpb25SdWxlU2V0dGluZ1xuXHRcdFx0LmFkZEJ1dHRvbigoYnV0dG9uKSA9PiB7XG5cdFx0XHRcdGJ1dHRvblxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiK1wiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiQWRkIFJ1bGVcIilcblx0XHRcdFx0XHQub25DbGljayhhc3luYyAoYnV0dG9uRWw6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IHRyaWdnZXIgPSByZXBsYWNlUnVsZVRyaWdnZXIuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gcmVwbGFjZUxlZnRTdHJpbmcuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGxldCByaWdodCA9IHJlcGxhY2VSaWdodFN0cmluZy5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKHRyaWdnZXIgJiYgKGxlZnQgfHwgcmlnaHQpKSB7XG5cdFx0XHRcdFx0XHRcdGlmKHRyaWdnZXIubGVuZ3RoPjEpe1xuXHRcdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJJbmx2YWxpZCB0cmlnZ2VyLCB0cmlnZ2VyIG11c3QgYmUgYSBzeW1ib2wgb2YgbGVuZ3RoIDFcIik7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLnBsdWdpbi5hZGRVc2VyU2VsZWN0aW9uUmVwUnVsZSh0cmlnZ2VyLCBsZWZ0LCByaWdodCkpe1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIndhcm5pbmchIFRyaWdnZXIgXCIgKyB0cmlnZ2VyICsgXCIgaXMgYWxyZWFkeSBleGlzdCFcIilcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJtaXNzaW5nIGlucHV0XCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHQvLyBjb25zdCBzZWxSZXBSdWxlQ29udGFpbmVyID0gY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkaXZcIik7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCB0cmlnZ2VyID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyW2ldO1xuXHRcdFx0bGV0IGxlZnRfcyA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaV0ubGVmdDtcblx0XHRcdGxldCByaWdodF9zID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5yaWdodDtcblx0XHRcdGxldCBzaG93U3RyID0gXCJUcmlnZ2VyOiBcIiArIHRyaWdnZXIgKyBcIiBcdTIxOTIgXCIgKyBzaG93U3RyaW5nKGxlZnRfcykgKyBcInNlbGVjdGVkXCIgKyBzaG93U3RyaW5nKHJpZ2h0X3MpO1xuXHRcdFx0Ly8gY29uc3Qgc2V0dGluZ0l0ZW0gPSBzZWxSZXBSdWxlQ29udGFpbmVyLmNyZWF0ZUVsKFwiZGl2XCIpO1xuXHRcdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHRcdC5zZXROYW1lKHNob3dTdHIpXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwiZ2VhclwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJFZGl0IHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0bmV3IFNlbGVjdFJ1bGVFZGl0TW9kYWwodGhpcy5hcHAsIHRyaWdnZXIsbGVmdF9zLCByaWdodF9zLCBhc3luYyAobmV3X2xlZnQsIG5ld19yaWdodCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnVwZGF0ZVVzZXJTZWxlY3Rpb25SZXBSdWxlKGksIG5ld19sZWZ0LCBuZXdfcmlnaHQpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9KS5vcGVuKCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcInRyYXNoXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIlJlbW92ZSBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmRlbGV0ZVVzZXJTZWxlY3Rpb25SZXBSdWxlKGkpO1xuXHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KTtcblx0XHR9XG5cblxuXHR9XG5cblx0YnVpbGRVc2VyRGVsZXRlUnVsZVNldHRpbmcoY29udGFpbmVyRWw6IEhUTUxEZXRhaWxzRWxlbWVudCl7XG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcbiAgICAgICAgY29udGFpbmVyRWwub250b2dnbGUgPSBhc3luYyAoKSA9PiB7XG5cdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsUnVsZVNldHRpbmdzT3BlbiA9IGNvbnRhaW5lckVsLm9wZW47XG5cdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgfTtcblx0XHRjb25zdCBzdW1tYXJ5ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoXCJzdW1tYXJ5XCIsIHtjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIn0pO1xuXHRcdHN1bW1hcnkuc2V0VGV4dChcIlx1ODFFQVx1NUI5QVx1NEU0OVx1NTIyMFx1OTY2NFx1N0YxNlx1OEY5MVx1NTg5RVx1NUYzQVx1ODlDNFx1NTIxOSAoQ3VzdG9taXplIERlbGV0ZSBSdWxlKVwiKVxuXG5cdFx0Y29uc3QgZGVsZXRlUnVsZVNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbCk7XG5cdFx0ZGVsZXRlUnVsZVNldHRpbmdcblx0XHRcdC5zZXROYW1lKFwiRGVsZXRlIFJ1bGVcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4OUM0XHU1MjE5XHVGRjFBXHU3NTI4fFx1NEVFM1x1ODg2OFx1NTE0OVx1NjgwN1x1NEY0RFx1N0Y2RVx1RkYwQ1x1NUZDNVx1OTg3Qlx1NTMwNVx1NTQyQlx1NTE0OVx1NjgwN1x1MzAwMiBUaXBzOiBVc2luZyB8IHRvIGluZGljYXRlIHRoZSBjdXJzb3IgcG9zaXRpb24uXCIpXG5cblx0XHRjb25zdCBwYXR0ZXJuQmVmb3JlID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KGRlbGV0ZVJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cGF0dGVybkJlZm9yZS5zZXRQbGFjZWhvbGRlcihcIkJlZm9yZSBEZWxldGVcIik7XG5cblx0XHRjb25zdCBwYXR0ZXJuQWZ0ZXIgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoZGVsZXRlUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRwYXR0ZXJuQWZ0ZXIuc2V0UGxhY2Vob2xkZXIoXCJOZXcgUGF0dGVyblwiKTtcblxuXHRcdGRlbGV0ZVJ1bGVTZXR0aW5nXG5cdFx0XHQuYWRkQnV0dG9uKChidXR0b24pID0+IHtcblx0XHRcdFx0YnV0dG9uXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCIrXCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJBZGQgUnVsZVwiKVxuXHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jIChidXR0b25FbDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRsZXQgYmVmb3JlID0gcGF0dGVybkJlZm9yZS5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0bGV0IGFmdGVyID0gcGF0dGVybkFmdGVyLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoYmVmb3JlICYmIGFmdGVyKSB7XG5cdFx0XHRcdFx0XHRcdGxldCByZWdSdWxlID0gL1xcfC9nO1xuXHRcdFx0XHRcdFx0XHRpZihiZWZvcmUuc2VhcmNoKHJlZ1J1bGUpPT0tMXx8YWZ0ZXIuc2VhcmNoKHJlZ1J1bGUpPT0tMSl7XG5cdFx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIklubHZhbGlkIHRyaWdnZXIsIHBhdHRlcm4gbXVzdCBjb250YWluIHN5bWJvbCBcXHwgd2hpY2ggaW5kaWNhdGUgY3Vyc29yIHBvc2l0aW9uXCIpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmFkZFVzZXJEZWxldGVSdWxlKGJlZm9yZSwgYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIm1pc3NpbmcgaW5wdXRcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5sZW5ndGg7IGkrKyl7XG5cdFx0XHRsZXQgYmVmb3JlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdFtpXVswXTtcblx0XHRcdGxldCBhZnRlciA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaV1bMV07XG5cdFx0XHRsZXQgc2hvd1N0ciA9IFwiXFxcIlwiICsgc2hvd1N0cmluZyhiZWZvcmUpICsgXCJcXFwiICBkZWxldGUuYmFja3dhcmRzICBcdTIxOTIgXFxcIlwiKyBzaG93U3RyaW5nKGFmdGVyKStcIlxcXCJcIjsgXG5cdFx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdFx0LnNldE5hbWUoc2hvd1N0cilcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJnZWFyXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkVkaXQgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRuZXcgRWRpdENvbnZlcnRSdWxlTW9kYWwodGhpcy5hcHAsIFJ1bGVUeXBlLmRlbGV0ZSwgYmVmb3JlLCBhZnRlciwgYXN5bmMgKG5ld19iZWZvcmUsIG5ld19hZnRlcikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnVwZGF0ZVVzZXJEZWxldGVSdWxlKGksIG5ld19iZWZvcmUsIG5ld19hZnRlcik7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH0pLm9wZW4oKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwidHJhc2hcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiUmVtb3ZlIHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uZGVsZXRlVXNlckRlbGV0ZVJ1bGUoaSk7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pO1xuXHRcdH1cblxuXHR9XG5cblx0YnVpbGRVc2VyQ29udmVydFJ1bGVTZXR0aW5nKGNvbnRhaW5lckVsOiBIVE1MRGV0YWlsc0VsZW1lbnQpe1xuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgICAgIGNvbnRhaW5lckVsLm9udG9nZ2xlID0gYXN5bmMgKCkgPT4ge1xuXHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckN2dFJ1bGVTZXR0aW5nc09wZW4gPSBjb250YWluZXJFbC5vcGVuO1xuXHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH07XG5cdFx0Y29uc3Qgc3VtbWFyeSA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwic3VtbWFyeVwiLCB7Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCJ9KTtcblx0XHRzdW1tYXJ5LnNldFRleHQoXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTdGMTZcdThGOTFcdThGNkNcdTYzNjJcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBDb252ZXJ0IFJ1bGUpXCIpXG5cblx0XHRjb25zdCBjb252ZXJ0UnVsZVNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbCk7XG5cdFx0Y29udmVydFJ1bGVTZXR0aW5nXG5cdFx0XHQuc2V0TmFtZShcIkNvbnZlcnQgUnVsZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTg5QzRcdTUyMTlcdUZGMUFcdTc1Mjh8XHU0RUUzXHU4ODY4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU1RkM1XHU5ODdCXHU1MzA1XHU1NDJCXHU1MTQ5XHU2ODA3XHUzMDAyIFRpcHM6IFVzaW5nIHwgdG8gaW5kaWNhdGUgdGhlIGN1cnNvciBwb3NpdGlvbi5cIilcblxuXHRcdGNvbnN0IHBhdHRlcm5CZWZvcmUgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoY29udmVydFJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cGF0dGVybkJlZm9yZS5zZXRQbGFjZWhvbGRlcihcIkJlZm9yZSBDb252ZXJ0XCIpO1xuXG5cdFx0Y29uc3QgcGF0dGVybkFmdGVyID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KGNvbnZlcnRSdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHBhdHRlcm5BZnRlci5zZXRQbGFjZWhvbGRlcihcIk5ldyBQYXR0ZXJuXCIpO1xuXG5cdFx0Y29udmVydFJ1bGVTZXR0aW5nXG5cdFx0XHQuYWRkQnV0dG9uKChidXR0b24pID0+IHtcblx0XHRcdFx0YnV0dG9uXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCIrXCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJBZGQgUnVsZVwiKVxuXHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jIChidXR0b25FbDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRsZXQgYmVmb3JlID0gcGF0dGVybkJlZm9yZS5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0bGV0IGFmdGVyID0gcGF0dGVybkFmdGVyLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoYmVmb3JlICYmIGFmdGVyKSB7XG5cdFx0XHRcdFx0XHRcdGxldCByZWdSdWxlID0gL1xcfC9nO1xuXHRcdFx0XHRcdFx0XHRpZihiZWZvcmUuc2VhcmNoKHJlZ1J1bGUpPT0tMXx8YWZ0ZXIuc2VhcmNoKHJlZ1J1bGUpPT0tMSl7XG5cdFx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIklubHZhbGlkIHRyaWdnZXIsIHBhdHRlcm4gbXVzdCBjb250YWluIHN5bWJvbCBcXHwgd2hpY2ggaW5kaWNhdGUgY3Vyc29yIHBvc2l0aW9uXCIpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmFkZFVzZXJDb252ZXJ0UnVsZShiZWZvcmUsIGFmdGVyKTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJtaXNzaW5nIGlucHV0XCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0Lmxlbmd0aDsgaSsrKXtcblx0XHRcdGxldCBiZWZvcmUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdFtpXVswXTtcblx0XHRcdGxldCBhZnRlciA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2ldWzFdO1xuXHRcdFx0bGV0IHNob3dTdHIgPSBcIlxcXCJcIiArIHNob3dTdHJpbmcoYmVmb3JlKSArIFwiXFxcIiAgYXV0byBjb252ZXJ0IHRvIFxcXCJcIisgc2hvd1N0cmluZyhhZnRlcikrXCJcXFwiXCI7IFxuXHRcdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHRcdC5zZXROYW1lKHNob3dTdHIpXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwiZ2VhclwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJFZGl0IHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0bmV3IEVkaXRDb252ZXJ0UnVsZU1vZGFsKHRoaXMuYXBwLCBSdWxlVHlwZS5jb252ZXJ0LCBiZWZvcmUsIGFmdGVyLCBhc3luYyAobmV3X2JlZm9yZSwgbmV3X2FmdGVyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4udXBkYXRlVXNlckNvbnZlcnRSdWxlKGksIG5ld19iZWZvcmUsIG5ld19hZnRlcik7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH0pLm9wZW4oKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwidHJhc2hcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiUmVtb3ZlIHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uZGVsZXRlVXNlckNvbnZlcnRSdWxlKGkpO1xuXHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cblxufVxuXG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXMoZWxlbWVudDogYW55LCBhdHRyaWJ1dGVzOiBhbnkpIHtcblx0Zm9yIChsZXQga2V5IGluIGF0dHJpYnV0ZXMpIHtcblx0XHRlbGVtZW50LnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG5cdH1cbn1cblxuXG5leHBvcnQgY2xhc3MgU2VsZWN0UnVsZUVkaXRNb2RhbCBleHRlbmRzIE1vZGFsIHtcblx0dHJpZ2dlcjogc3RyaW5nO1xuXHRvbGRfbGVmdDogc3RyaW5nO1xuXHRvbGRfcmlnaHQ6IHN0cmluZztcblx0bmV3X2xlZnQ6IHN0cmluZztcblx0bmV3X3JpZ2h0OiBzdHJpbmc7XG5cdG9uU3VibWl0OiAobmV3X2xlZnQ6IHN0cmluZywgbmV3X3JpZ2h0OnN0cmluZykgPT4gdm9pZDtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgdHJpZ2dlcjogc3RyaW5nLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcsIG9uU3VibWl0OiAobmV3X2xlZnQ6IHN0cmluZywgbmV3X3JpZ2h0OnN0cmluZykgPT4gdm9pZCkge1xuXHRcdHN1cGVyKGFwcCk7XG5cdFx0dGhpcy50cmlnZ2VyID0gdHJpZ2dlcjtcblx0XHR0aGlzLm9sZF9sZWZ0ID0gbGVmdDtcblx0XHR0aGlzLm9sZF9yaWdodCA9IHJpZ2h0O1xuXHRcdHRoaXMubmV3X2xlZnQgPSBsZWZ0O1xuXHRcdHRoaXMubmV3X3JpZ2h0ID0gcmlnaHQ7XG5cblx0XHR0aGlzLm9uU3VibWl0ID0gb25TdWJtaXQ7XG5cdH1cblxuXHRvbk9wZW4oKSB7XG5cdFx0Y29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cblx0XHRjb250ZW50RWwuY3JlYXRlRWwoXCJoMVwiLCB7IHRleHQ6IFwiRWRpdCBTZWxlY3Rpb24gUmVwbGFjZSBSdWxlXCIgfSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIlRyaWdnZXJcIilcblx0XHRcdC5hZGRUZXh0KCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy50cmlnZ2VyKTtcblx0XHRcdFx0dGV4dC5zZXREaXNhYmxlZCh0cnVlKTtcblx0XHRcdH0pXG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJMZWZ0XCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLm9sZF9sZWZ0KTtcblx0XHRcdFx0dGV4dC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ld19sZWZ0ID0gdmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJSaWdodFwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy5vbGRfcmlnaHQpO1xuXHRcdFx0XHR0ZXh0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubmV3X3JpZ2h0ID0gdmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH0pO1xuXG5cblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuYWRkQnV0dG9uKChidG4pID0+XG5cdFx0XHRcdGJ0blxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiVXBkYXRlXCIpXG5cdFx0XHRcdFx0LnNldEN0YSgpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0dGhpcy5vblN1Ym1pdCh0aGlzLm5ld19sZWZ0LCB0aGlzLm5ld19yaWdodCk7XG5cdFx0XHRcdFx0fSkpO1xuXHR9XG5cblx0b25DbG9zZSgpIHtcblx0XHRsZXQgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cdFx0Y29udGVudEVsLmVtcHR5KCk7XG5cdH1cbn1cblxuXG5cbmV4cG9ydCBjbGFzcyBFZGl0Q29udmVydFJ1bGVNb2RhbCBleHRlbmRzIE1vZGFsIHtcblx0dHlwZTogUnVsZVR5cGU7XG5cdG9sZF9iZWZvcmU6IHN0cmluZztcblx0b2xkX2FmdGVyOiBzdHJpbmc7XG5cdG5ld19iZWZvcmU6IHN0cmluZztcblx0bmV3X2FmdGVyOiBzdHJpbmc7XG5cdG9uU3VibWl0OiAobmV3X2JlZm9yZTogc3RyaW5nLCBuZXdfYWZ0ZXI6c3RyaW5nKSA9PiB2b2lkO1xuXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwLCB0eXBlOiBSdWxlVHlwZSwgYmVmb3JlOiBzdHJpbmcsIGFmdGVyOiBzdHJpbmcsIG9uU3VibWl0OiAobmV3X2JlZm9yZTogc3RyaW5nLCBuZXdfYWZ0ZXI6c3RyaW5nKSA9PiB2b2lkKSB7XG5cdFx0c3VwZXIoYXBwKTtcblx0XHR0aGlzLnR5cGUgPSB0eXBlO1xuXHRcdHRoaXMub2xkX2JlZm9yZSA9IGJlZm9yZTtcblx0XHR0aGlzLm9sZF9hZnRlciA9IGFmdGVyO1xuXHRcdHRoaXMubmV3X2JlZm9yZSA9IGJlZm9yZTtcblx0XHR0aGlzLm5ld19hZnRlciA9IGFmdGVyO1xuXG5cdFx0dGhpcy5vblN1Ym1pdCA9IG9uU3VibWl0O1xuXHR9XG5cblx0b25PcGVuKCkge1xuXHRcdGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXG5cdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwiaDFcIiwgeyB0ZXh0OiBcIkVkaXQgXCIgKyB0aGlzLnR5cGV9KTtcblx0XHRcblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIk9sZCBQYXR0ZXJuXCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLm9sZF9iZWZvcmUpO1xuXHRcdFx0XHR0ZXh0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubmV3X2JlZm9yZSA9IHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiTmV3IFBhdHRlcm5cIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMub2xkX2FmdGVyKTtcblx0XHRcdFx0dGV4dC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ld19hZnRlciA9IHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9KTtcblxuXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LmFkZEJ1dHRvbigoYnRuKSA9PlxuXHRcdFx0XHRidG5cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIlVwZGF0ZVwiKVxuXHRcdFx0XHRcdC5zZXRDdGEoKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmNoZWNrQ29udmVydFBhdHRlcm5TdHJpbmcodGhpcy5uZXdfYmVmb3JlLCB0aGlzLm5ld19hZnRlcikpXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5vblN1Ym1pdCh0aGlzLm5ld19iZWZvcmUsIHRoaXMubmV3X2FmdGVyKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJJbnZhbGlkIHBhdHRlcm4gc3RyaW5nIVwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdH0pKTtcblx0fVxuXG5cdGNoZWNrQ29udmVydFBhdHRlcm5TdHJpbmcoYmVmb3JlOiBzdHJpbmcsIGFmdGVyOnN0cmluZyk6Ym9vbGVhbntcblx0XHRsZXQgcmVnUnVsZSA9IC9cXHwvZztcblx0XHRpZihiZWZvcmUuc2VhcmNoKHJlZ1J1bGUpPT0tMSB8fCBhZnRlci5zZWFyY2gocmVnUnVsZSk9PS0xKSByZXR1cm4gZmFsc2U7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRvbkNsb3NlKCkge1xuXHRcdGxldCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcblx0XHRjb250ZW50RWwuZW1wdHkoKTtcblx0fVxufVxuXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQTZIO0FBQzdILG1CQUF1RjtBQUN2RixvQkFBcUM7OztBQ0ZyQyxzQkFBc0I7OztBQ09mLHFCQUFxQixLQUFVLFFBQWU7QUFDcEQsTUFBSSxPQUFPLElBQUksT0FBTyxNQUFNO0FBQzVCLFNBQU8sRUFBQyxNQUFNLEtBQUssU0FBUyxHQUFHLElBQUksU0FBUyxLQUFLLEtBQUk7QUFDdEQ7QUFFTyw2QkFBNkIsSUFBeUI7QUFDNUQsTUFB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 +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL2NvcmUudHMiLCAic3JjL3V0aWxzLnRzIiwgInNyYy9zZXR0aW5ncy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBFZGl0b3IsIE1hcmtkb3duVmlldywgTW9kYWwsIE5vdGljZSwgUGx1Z2luLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBXb3Jrc3BhY2UsIFdvcmtzcGFjZUxlYWYsIFRGaWxlIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dCB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IFNlbGVjdGlvblJhbmdlLCBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBFYXN5VHlwaW5nU2V0dGluZ1RhYiwgRWFzeVR5cGluZ1NldHRpbmdzLCBERUZBVUxUX1NFVFRJTkdTLCBQYWlyU3RyaW5nLCBDb252ZXJ0UnVsZSB9IGZyb20gXCIuL3NldHRpbmdzXCJcbmltcG9ydCB7IEVkaXRvclZpZXcsIGtleW1hcCwgVmlld1VwZGF0ZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHsgcG9zVG9PZmZzZXQsIG9mZnNldFRvUG9zLCBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdCwgZ2V0VHlwZVN0ck9mVHJhbnNhYyB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBMaW5lRm9ybWF0ZXIsIGdldFBvc0xpbmVUeXBlLCBnZXRQb3NMaW5lVHlwZTIsIExpbmVUeXBlIH0gZnJvbSAnLi9jb3JlJ1xuaW1wb3J0IHsgc3ludGF4VHJlZSB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lUeXBpbmdQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXHRzZXR0aW5nczogRWFzeVR5cGluZ1NldHRpbmdzO1xuXHRzZWxlY3Rpb25SZXBsYWNlTWFwSW5pdGFsRGF0YTogW3N0cmluZywgUGFpclN0cmluZ11bXTtcblx0U2VsZWN0aW9uUmVwbGFjZU1hcDogTWFwPHN0cmluZywgUGFpclN0cmluZz47XG5cdFN5bWJvbFBhaXJzTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRoYWxmVG9GdWxsU3ltYm9sTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRCYXNpY0NvbnZSdWxlczogQ29udmVydFJ1bGVbXTtcblx0RlcySFdTeW1ib2xSdWxlczogQ29udmVydFJ1bGVbXTtcblx0Rm9ybWF0ZXI6IExpbmVGb3JtYXRlcjtcblx0SW50cmluc2ljRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdEludHJpbnNpY0F1dG9QYWlyUnVsZXNQYXRjaDogQ29udmVydFJ1bGVbXTtcblx0Q3VyQWN0aXZlTWFya2Rvd246IHN0cmluZztcblxuXHRVc2VyRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdFVzZXJDb252ZXJ0UnVsZXM6IENvbnZlcnRSdWxlW107XG5cdGxhbmc6IHN0cmluZztcblxuXHRjb21wb3NlX2JlZ2luX3BvczogbnVtYmVyO1xuXHRjb21wb3NlX2VuZF9wb3M6IG51bWJlcjtcblx0Y29tcG9zZV9uZWVkX2hhbmRsZTogYm9vbGVhbjtcblxuXG5cdGFzeW5jIG9ubG9hZCgpIHtcblx0XHRhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuXHRcdHRoaXMuc2VsZWN0aW9uUmVwbGFjZU1hcEluaXRhbERhdGEgPSBbXG5cdFx0XHRbXCJcdTMwMTBcIiwgeyBsZWZ0OiBcIltcIiwgcmlnaHQ6IFwiXVwiIH1dLCBbXCJcdUZGRTVcIiwgeyBsZWZ0OiBcIiRcIiwgcmlnaHQ6IFwiJFwiIH1dLCBbXCJcdTAwQjdcIiwgeyBsZWZ0OiBcImBcIiwgcmlnaHQ6IFwiYFwiIH1dLFxuXHRcdFx0W1wiXHUzMDBBXCIsIHsgbGVmdDogXCJcdTMwMEFcIiwgcmlnaHQ6IFwiXHUzMDBCXCIgfV0sIFtcIlx1MjAxQ1wiLCB7IGxlZnQ6IFwiXHUyMDFDXCIsIHJpZ2h0OiBcIlx1MjAxRFwiIH1dLCBbXCJcdTIwMURcIiwgeyBsZWZ0OiBcIlx1MjAxQ1wiLCByaWdodDogXCJcdTIwMURcIiB9XSwgW1wiXHVGRjA4XCIsIHsgbGVmdDogXCJcdUZGMDhcIiwgcmlnaHQ6IFwiXHVGRjA5XCIgfV0sXG5cdFx0XHRbXCI8XCIsIHsgbGVmdDogXCI8XCIsIHJpZ2h0OiBcIj5cIiB9XVxuXHRcdF07XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0XHR0aGlzLlN5bWJvbFBhaXJzTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblx0XHRsZXQgU3ltYm9sUGFpcnMgPSBbXCJcdTMwMTBcdTMwMTFcIiwgXCJcdUZGMDhcdUZGMDlcIiwgXCJcdTMwMEFcdTMwMEJcIiwgXCJcdTIwMUNcdTIwMURcIiwgXCJcdTIwMThcdTIwMTlcIiwgXCJcdTMwMENcdTMwMERcIiwgXCJcdTMwMEVcdTMwMEZcIl1cblx0XHRmb3IgKGxldCBwYWlyU3RyIG9mIFN5bWJvbFBhaXJzKSB0aGlzLlN5bWJvbFBhaXJzTWFwLnNldChwYWlyU3RyLmNoYXJBdCgwKSwgcGFpclN0ci5jaGFyQXQoMSkpO1xuXG5cdFx0dGhpcy5oYWxmVG9GdWxsU3ltYm9sTWFwID0gbmV3IE1hcChbXG5cdFx0XHRbXCIuXCIsIFwiXHUzMDAyXCJdLFxuXHRcdFx0W1wiLFwiLCBcIlx1RkYwQ1wiXSxcblx0XHRcdFsnPycsICdcdUZGMUYnXSxcblx0XHRcdFsnIScsICdcdUZGMDEnXVxuXHRcdF0pOyBcblxuXHRcdGxldCBCYXNpY0NvbnZSdWxlU3RyaW5nTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbWydcdTAwQjdcdTAwQjd8JywgJ2B8YCddLCBbXCJgXHUwMEI3fGBcIiwgXCJgYGB8XFxuYGBgXCJdLFxuXHRcdFtcIlx1MzAxMFx1MzAxMHxcdTMwMTFcIiwgXCJbW3xdXVwiXSwgWydcdTMwMTBcdTMwMTB8JywgXCJbW3xdXVwiXSwgWydcdUZGRTVcdUZGRTV8JywgJyR8JCddLCBbJyRcdUZGRTV8JCcsIFwiJCRcXG58XFxuJCRcIl0sIFtcIiQkfCRcIiwgXCIkJFxcbnxcXG4kJFwiXSwgWyckJHwnLCBcIiR8JFwiXSxcblx0XHRbXCI+XHUzMDBCfFwiLCBcIj4+fFwiXSwgWydcXG5cdTMwMEJ8JywgXCJcXG4+fFwiXSwgW1wiIFx1MzAwQnxcIiwgXCIgPnxcIl0sIFtcIlxcblx1MzAwMXxcIiwgXCJcXG4vfFwiXV07XG5cdFx0dGhpcy5CYXNpY0NvbnZSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KEJhc2ljQ29udlJ1bGVTdHJpbmdMaXN0KTtcblx0XHRsZXQgRlcySFdTeW1ib2xSdWxlc1N0ckxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1tcIlx1MzAwMlx1MzAwMnxcIiwgXCIufFwiXSwgW1wiXHVGRjAxXHVGRjAxfFwiLCBcIiF8XCJdLCBbXCJcdUZGMUJcdUZGMUJ8XCIsIFwiO3xcIl0sIFtcIlx1RkYwQ1x1RkYwQ3xcIiwgXCIsfFwiXSxcblx0XHRbXCJcdUZGMUFcdUZGMUF8XCIsIFwiOnxcIl0sIFsnXHVGRjFGXHVGRjFGfCcsICc/fCddLCBbJ1x1RkYwOFx1RkYwOHxcdUZGMDknLCBcIih8KVwiXSwgWydcdUZGMDhcdUZGMDh8JywgJyh8KSddLCBbXCJcdTIwMUNcdTIwMUN8XHUyMDFEXCIsIFwiXFxcInxcXFwiXCJdLCBbXCJcdTIwMUNcdTIwMUR8XHUyMDFEXCIsIFwiXFxcInxcXFwiXCJdLFxuXHRcdFtcIlx1MzAwQlx1MzAwQnxcIiwgXCI+fFwiXSwgW1wiXHUzMDBBXHUzMDBBfFx1MzAwQlwiLCBcIjx8XCJdLCBbJ1x1MzAwQVx1MzAwQXwnLCBcIjx8XCJdXTtcblx0XHR0aGlzLkZXMkhXU3ltYm9sUnVsZXMgPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdChGVzJIV1N5bWJvbFJ1bGVzU3RyTGlzdCk7XG5cblx0XHRsZXQgRGVsZXRlUnVsZXNTdHJMaXN0OiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtbXCIkfCRcIiwgXCJ8XCJdLCBbJ2BgYHxcXG5gYGAnLCAnfCddLCBbJz09fD09JywgJ3wnXSwgWyckJFxcbnxcXG4kJCcsIFwifFwiXV07XG5cdFx0dGhpcy5JbnRyaW5zaWNEZWxldGVSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KERlbGV0ZVJ1bGVzU3RyTGlzdCk7XG5cblx0XHQvLyBsZXRcblx0XHRsZXQgYXV0b1BhaXJSdWxlc1BhdGNoU3RyTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbW1wiXHUzMDEwXHUzMDExfFx1MzAxMVwiLCBcIlx1MzAxMFx1MzAxMXxcIl0sIFtcIlx1RkYwOFx1RkYwOXxcdUZGMDlcIiwgXCJcdUZGMDhcdUZGMDl8XCJdLFxuXHRcdFtcIjw+fD5cIiwgXCI8PnxcIl0sIFtcIlx1MzAwQVx1MzAwQnxcdTMwMEJcIiwgXCJcdTMwMEFcdTMwMEJ8XCJdLCBbXCJcdTMwMENcdTMwMER8XHUzMDBEXCIsIFwiXHUzMDBDXHUzMDBEfFwiXSwgW1wiXHUzMDBFXHUzMDBGfFx1MzAwRlwiLCBcIlx1MzAwRVx1MzAwRnxcIl1cblx0XHRdO1xuXHRcdHRoaXMuSW50cmluc2ljQXV0b1BhaXJSdWxlc1BhdGNoID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoYXV0b1BhaXJSdWxlc1BhdGNoU3RyTGlzdCk7XG5cblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpO1xuXG5cdFx0dGhpcy5DdXJBY3RpdmVNYXJrZG93biA9IFwiXCI7XG5cblx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSBmYWxzZTtcblxuXHRcdHRoaXMuRm9ybWF0ZXIgPSBuZXcgTGluZUZvcm1hdGVyKCk7XG5cblx0XHR0aGlzLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFtcblx0XHRcdEVkaXRvclN0YXRlLnRyYW5zYWN0aW9uRmlsdGVyLm9mKHRoaXMudHJhbnNhY3Rpb25GaWx0ZXJQbHVnaW4pLFxuXHRcdFx0RWRpdG9yVmlldy51cGRhdGVMaXN0ZW5lci5vZih0aGlzLnZpZXdVcGRhdGVQbHVnaW4pLFxuXHRcdFx0UHJlYy5oaWdoZXN0KEVkaXRvclZpZXcuZG9tRXZlbnRIYW5kbGVycyh7XG5cdFx0XHRcdFwia2V5dXBcIjogdGhpcy5vbktleXVwXG5cdFx0XHR9KSlcblx0XHRdKTtcblx0XHRcblxuXHRcdHRoaXMucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oUHJlYy5oaWdoZXN0KGtleW1hcC5vZihbXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJUYWJcIixcblx0XHRcdFx0cnVuOiAodmlldzogRWRpdG9yVmlldyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmhhbmRsZVRhYkRvd24odmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1Y2Nlc3M7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJFbnRlclwiLFxuXHRcdFx0XHRydW46ICh2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc3VjY2VzcyA9IHRoaXMuaGFuZGxlRW50ZXIodmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1Y2Nlc3M7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRdKSkpO1xuXG5cdFx0dGhpcy5sYW5nID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpO1xuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwID0gdGhpcy5nZXRDb21tYW5kTmFtZU1hcCgpO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1hcnRpY2xlXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImZvcm1hdF9hcnRpY2xlXCIpLFxuXHRcdFx0ZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KSA9PiB7XG5cdFx0XHRcdHRoaXMuZm9ybWF0QXJ0aWNsZShlZGl0b3IsIHZpZXcpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJzXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1zZWxlY3Rpb25cIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwiZm9ybWF0X3NlbGVjdGlvblwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmZvcm1hdFNlbGVjdGlvbk9yQ3VyTGluZShlZGl0b3IsIHZpZXcpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJsXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWRlbGV0ZS1ibGFuay1saW5lXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImRlbGV0ZV9ibGFua19saW5lXCIpLFxuXHRcdFx0ZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KSA9PiB7XG5cdFx0XHRcdHRoaXMuZGVsZXRlQmxhbmtMaW5lcyhlZGl0b3IpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJrXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWluc2VydC1jb2RlYmxvY2tcIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwiaW5zZXJ0X2NvZGVibG9ja1wiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmNvbnZlcnQyQ29kZUJsb2NrKGVkaXRvcik7XG5cdFx0XHR9LFxuXHRcdFx0aG90a2V5czogW3tcblx0XHRcdFx0bW9kaWZpZXJzOiBbJ0N0cmwnLCAnU2hpZnQnXSxcblx0XHRcdFx0a2V5OiBcIm5cIlxuXHRcdFx0fV0sXG5cdFx0fSk7XG5cblx0XHR0aGlzLmFkZENvbW1hbmQoe1xuXHRcdFx0aWQ6IFwiZWFzeS10eXBpbmctZm9ybWF0LXN3aXRjaFwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiKSxcblx0XHRcdGNhbGxiYWNrOiAoKSA9PiB0aGlzLnN3aXRjaEF1dG9Gb3JtYXR0aW5nKCksXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCddLFxuXHRcdFx0XHRrZXk6IFwidGFiXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0Ly8gVGhpcyBhZGRzIGEgc2V0dGluZ3MgdGFiIHNvIHRoZSB1c2VyIGNhbiBjb25maWd1cmUgdmFyaW91cyBhc3BlY3RzIG9mIHRoZSBwbHVnaW5cblx0XHR0aGlzLmFkZFNldHRpbmdUYWIobmV3IEVhc3lUeXBpbmdTZXR0aW5nVGFiKHRoaXMuYXBwLCB0aGlzKSk7XG5cblx0XHR0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy5hcHAud29ya3NwYWNlLm9uKCdhY3RpdmUtbGVhZi1jaGFuZ2UnLCAobGVhZjogV29ya3NwYWNlTGVhZikgPT4ge1xuXHRcdFx0aWYgKGxlYWYudmlldy5nZXRWaWV3VHlwZSgpPT0nbWFya2Rvd24nKXtcblx0XHRcdFx0bGV0IGZpbGUgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuXHRcdFx0XHRpZiAoZmlsZSE9bnVsbCAmJiB0aGlzLkN1ckFjdGl2ZU1hcmtkb3duICE9IGZpbGUucGF0aClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gPSBmaWxlLnBhdGg7XG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpXG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKCduZXcgbWQtZmlsZSBvcGVuOiAnK2ZpbGUucGF0aClcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pKTtcblxuXHRcdC8vIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2ZpbGUtb3BlbicsIChmaWxlOiBURmlsZSB8IG51bGwpID0+IHtcblx0XHQvLyBcdGlmIChmaWxlICE9IG51bGwpIHtcblx0XHQvLyBcdFx0bGV0IGVkaXRvciA9IHRoaXMuZ2V0RWRpdG9yKCk7XG5cdFx0Ly8gXHRcdGlmIChlZGl0b3IgPT09IG51bGwpIHJldHVybjtcblx0XHQvLyBcdFx0dGhpcy5Db250ZW50UGFyc2VyLnBhcnNlTmV3QXJ0aWNsZShlZGl0b3IuZ2V0VmFsdWUoKSk7XG5cdFx0Ly8gXHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSB7XG5cdFx0Ly8gXHRcdFx0bmV3IE5vdGljZShcIkVhc3lUeXBpbmc6IFBhcnNlIE5ldyBBcnRpY2xlOiBcIiArIGZpbGUudmF1bHQuZ2V0TmFtZSgpICsgJy8nICsgZmlsZS5wYXRoKTtcblx0XHQvLyBcdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgdGhpcy5Db250ZW50UGFyc2VyLnByaW50KCk7XG5cdFx0Ly8gXHRcdH1cblx0XHQvLyBcdH1cblx0XHQvLyB9KSk7XG5cdH1cblxuXHRvbnVubG9hZCgpIHtcblx0fVxuXG5cdHRyYW5zYWN0aW9uRmlsdGVyUGx1Z2luID0gKHRyOiBUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uU3BlYyB8IHJlYWRvbmx5IFRyYW5zYWN0aW9uU3BlY1tdID0+IHtcblx0XHRjb25zdCBjaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuXHRcdGlmICghdHIuZG9jQ2hhbmdlZCkgcmV0dXJuIHRyO1xuXHRcdGxldCBzZWxlY3RlZCA9IHRyLnN0YXJ0U3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbi5hbmNob3IhPXRyLnN0YXJ0U3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbi5oZWFkO1xuXG5cdFx0bGV0IGNoYW5nZVR5cGVTdHIgPSBnZXRUeXBlU3RyT2ZUcmFuc2FjKHRyKTtcblx0XHR0ci5jaGFuZ2VzLml0ZXJDaGFuZ2VzKChmcm9tQSwgdG9BLCBmcm9tQiwgdG9CLCBpbnNlcnRlZCkgPT4ge1xuXHRcdFx0bGV0IGNoYW5nZWRTdHIgPSB0ci5zdGFydFN0YXRlLnNsaWNlRG9jKGZyb21BLCB0b0EpO1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gaW5zZXJ0ZWQuc2xpY2VTdHJpbmcoMCk7XG5cdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1Zylcblx0XHRcdC8vIHtcblx0XHRcdC8vIFx0Y29uc29sZS5sb2coXCJUcmFuc2FjdGlvbkZpbHRlciBjYXRjaCBjaGFuZ2U6XCIsY2hhbmdlVHlwZVN0ciwgZnJvbUEsIHRvQSwgZnJvbUIsIHRvQiwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0Ly8gfVxuXHRcdFx0Ly8gPT09PT09PT09PSBTZWxlY3Rpb24gUmVwbGFjZSA9PT09PT09PT09PT1cblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLlNlbGVjdGlvbkVuaGFuY2UpIHtcblx0XHRcdFx0aWYgKChjaGFuZ2VUeXBlU3RyID09ICdpbnB1dC50eXBlJyB8fCBjaGFuZ2VUeXBlU3RyID09IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpICYmIGZyb21BICE9IHRvQSAmJiBmcm9tQiArIDEgPT09IHRvQikge1xuXHRcdFx0XHRcdGlmICh0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuaGFzKGluc2VydGVkU3RyKSkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHsgY2hhbmdlczogeyBmcm9tOiBmcm9tQSwgaW5zZXJ0OiB0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuZ2V0KGluc2VydGVkU3RyKT8ubGVmdCB9LCB1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIiB9KVxuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHsgY2hhbmdlczogeyBmcm9tOiB0b0EsIGluc2VydDogdGhpcy5TZWxlY3Rpb25SZXBsYWNlTWFwLmdldChpbnNlcnRlZFN0cik/LnJpZ2h0IH0sIHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiIH0pXG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc2VsZWN0ZWQpIHJldHVybiB0cjtcblxuXHRcdFx0Ly8gVXNlckRlZmluZWQgRGVsZXRlIFJ1bGVcblx0XHRcdGlmIChjaGFuZ2VUeXBlU3RyID09IFwiZGVsZXRlLmJhY2t3YXJkXCIpIHtcblx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLlVzZXJEZWxldGVSdWxlcykge1xuXHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQSk7XG5cdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BLCB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyA9PT09PT09PT09IGRlbGV0ZSBwYWlyIHN5bWJvbCA9PT09PT09PT09PT1cblx0XHRcdGlmIChjaGFuZ2VUeXBlU3RyID09PSBcImRlbGV0ZS5iYWNrd2FyZFwiICYmIHRoaXMuc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMpIHtcblx0XHRcdFx0aWYgKHRoaXMuU3ltYm9sUGFpcnNNYXAuaGFzKGNoYW5nZWRTdHIpICYmIHRoaXMuU3ltYm9sUGFpcnNNYXAuZ2V0KGNoYW5nZWRTdHIpID09PSB0ci5zdGFydFN0YXRlLnNsaWNlRG9jKHRvQSwgdG9BICsgMSkpIHtcblx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IGZyb21BLCB0bzogdG9BICsgMSB9LCB1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIiB9KTtcblx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuSW50cmluc2ljRGVsZXRlUnVsZXMpIHtcblx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0EpO1xuXHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQSwgdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gXHU5MDFBXHU1RTM4XHU1MzU1XHU1QjU3XHU4RjkzXHU1MTY1XG5cdFx0XHRpZiAoKGNoYW5nZVR5cGVTdHIgPT0gJ2lucHV0LnR5cGUnIHx8IGNoYW5nZVR5cGVTdHIgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIikgJiYgZnJvbUEgPT09IHRvQSAmJiBmcm9tQiArIDEgPT09IHRvQikge1xuXHRcdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCJJbnB1dC50eXBlID0+IFwiLCBpbnNlcnRlZFN0cilcblx0XHRcdFx0Ly8gPT09PT09PT09PT0gYmFzaWMgY29udmVydCBydWxlcyA9PT09PT09PT09PT1cblx0XHRcdFx0Ly8gbm90IHN1cHBvcnQgdW5kbyBhbmQgcmVkb1xuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5CYXNlT2JFZGl0RW5oYW5jZSkge1xuXHRcdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5CYXNpY0NvbnZSdWxlcykge1xuXHRcdFx0XHRcdFx0aWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuY2hhckF0KHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gMSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0Ly8gXHU1OTA0XHU3NDA2XHU2NTg3XHU2ODYzXHU3QjJDIDAgXHU4ODRDXG5cdFx0XHRcdFx0XHRpZiAocnVsZS5iZWZvcmUubGVmdC5jaGFyQXQoMCkgPT09ICdcXG4nICYmIG9mZnNldFRvUG9zKHRyLnN0YXRlLmRvYywgZnJvbUEpLmxpbmUgPT09IDAgJiYgdG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSwgdG9CKTtcblx0XHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQuc3Vic3RyaW5nKDEpICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQuc3Vic3RyaW5nKDEpICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIFx1OTAxQVx1NUUzOFx1NjBDNVx1NTFCNVx1NTkwNFx1NzQwNlxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0IpO1xuXHRcdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5GVzJIV0VuaGFuY2UpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuRlcySFdTeW1ib2xSdWxlcykge1xuXHRcdFx0XHRcdFx0aWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuY2hhckF0KHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gMSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQik7XG5cdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoICsgMSB9LFxuXHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gPT09PT09PT09PT09PT09PSBhdXRvIHBhaXIgPT09PT09PT09PT09PT09PT1cblx0XHRcdFx0Ly8gbGV0IFBhaXJWYWxpZFNldCA9IG5ldyBTZXQoW1wiXCIsIFwiIFwiLFwiXFxuXCJdKVxuXHRcdFx0XHQvLyBsZXQgY2hhckFmdGVyQ3Vyc29yID0gdHIuc3RhcnRTdGF0ZS5zbGljZURvYyh0b0EsIHRvQSsxKTtcblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuSW50cmluc2ljQXV0b1BhaXJSdWxlc1BhdGNoKSB7XG5cdFx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5jaGFyQXQocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSAxKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9CKTtcblx0XHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggKyAxIH0sXG5cdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAodGhpcy5TeW1ib2xQYWlyc01hcC5oYXMoaW5zZXJ0ZWRTdHIpKSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7IGZyb206IGZyb21BLCB0bzogdG9BLCBpbnNlcnQ6IGluc2VydGVkU3RyICsgdGhpcy5TeW1ib2xQYWlyc01hcC5nZXQoaW5zZXJ0ZWRTdHIpIH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IGZyb21BICsgMSB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBoYW5kbGUgYXV0b3BhaXIgZm9yIFwiXHUyMDFEXCIgYW5kIFwiXHUyMDE5XCJcblx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgPT09ICdcdTIwMUQnIHx8IGluc2VydGVkU3RyID09PSAnXHUyMDE5Jykge1xuXHRcdFx0XHRcdFx0bGV0IHRlbXBTdHIgPSBpbnNlcnRlZFN0ciA9PT0gXCJcdTIwMURcIiA/IFwiXHUyMDFDXHUyMDFEXCIgOiBcIlx1MjAxOFx1MjAxOVwiO1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczogeyBmcm9tOiBmcm9tQSwgdG86IHRvQSwgaW5zZXJ0OiB0ZW1wU3RyIH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IGZyb21BICsgMSB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pXG5cdFx0cmV0dXJuIHRyO1xuXHR9XG5cblx0dmlld1VwZGF0ZVBsdWdpbiA9ICh1cGRhdGU6IFZpZXdVcGRhdGUpID0+IHtcblxuXHRcdC8vIGNvbnNvbGUubG9nKHRyZWUpO1xuXG5cdFx0Ly8gaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiLS0tLS0tLVZpZXdVcGRhdGUtLS0tLS0tLS1cIik7XG5cdFx0bGV0IG5vdFNlbGVjdGVkID0gdHJ1ZTtcblx0XHRsZXQgbWFpblNlbGVjdGlvbiA9IHVwZGF0ZS52aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0aWYgKG1haW5TZWxlY3Rpb24uYW5jaG9yICE9IG1haW5TZWxlY3Rpb24uaGVhZCkgbm90U2VsZWN0ZWQgPSBmYWxzZTtcblx0XHQvLyAtLS0tLS0gRGVidWcgLS0tLS0tLS0tLS0tXG5cdFx0Ly8gaWYgKG5vdFNlbGVjdGVkKXtcblx0XHQvLyBcdC8vIHRoaXMuRm9ybWF0ZXIucGFyc2VMaW5lV2l0aFN5bnRheFRyZWUodXBkYXRlLnN0YXRlLCB1cGRhdGUuc3RhdGUuZG9jLmxpbmVBdChtYWluU2VsZWN0aW9uLmFuY2hvcikubnVtYmVyKTtcblx0XHQvLyBcdGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHVwZGF0ZS5zdGF0ZSk7XG5cdFx0Ly8gXHRsZXQgcG9zID0gbWFpblNlbGVjdGlvbi5hbmNob3I7XG5cdFx0Ly8gXHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShwb3MsIDEpO1xuXHRcdC8vIFx0Y29uc29sZS5sb2cobm9kZS5uYW1lLCBub2RlLmZyb20sIG5vZGUudG8sIHVwZGF0ZS5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcobm9kZS5mcm9tLCBub2RlLnRvKSk7XG5cdFx0Ly8gfVxuXG5cdFx0aWYgKCF1cGRhdGUuZG9jQ2hhbmdlZCkgcmV0dXJuO1xuXG5cdFx0bGV0IGlzRXhjbHVkZUZpbGUgPSB0aGlzLmlzQ3VycmVudEZpbGVFeGNsdWRlKCk7XG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5DdXJBY3RpdmVNYXJrZG93biwgaXNFeGNsdWRlRmlsZSlcblxuXHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIi0tLS0tVmlld1VwZGF0ZVdDaGFuZ2UtLS0tLVwiKTtcblx0XHRsZXQgdHIgPSB1cGRhdGUudHJhbnNhY3Rpb25zWzBdXG5cdFx0bGV0IGNoYW5nZVR5cGUgPSBnZXRUeXBlU3RyT2ZUcmFuc2FjKHRyKTtcblx0XHR0ci5jaGFuZ2VzLml0ZXJDaGFuZ2VzKChmcm9tQSwgdG9BLCBmcm9tQiwgdG9CLCBpbnNlcnRlZCkgPT4ge1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gaW5zZXJ0ZWQuc2xpY2VTdHJpbmcoMCk7XG5cdFx0XHRsZXQgY2hhbmdlZFN0ciA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKGZyb21BLCB0b0EpO1xuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpXG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiVmlld1VwZGF0ZSBDYXRjaCBDaGFuZ2UtPiBUeXBlOiBcIiArIGNoYW5nZVR5cGUgKyBcIiwgXCIsIGZyb21BLCB0b0EsIGNoYW5nZWRTdHIsIGZyb21CLCB0b0IsIGluc2VydGVkU3RyKTtcblxuXHRcdFx0Ly8gXHU2MjdFXHU1MjMwXHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU2QkQ0XHU4RjgzXHU1NDhDIHRvQiBcdTc2ODRcdTRGNERcdTdGNkVcdTY2MkZcdTU0MjZcdTc2RjhcdTU0MENcdUZGMENcdTc2RjhcdTU0MENcdTRFMTRcdTY3MDBcdTdFQzhcdTYzRDJcdTUxNjVcdTY1ODdcdTVCNTdcdTRFM0FcdTRFMkRcdTY1ODdcdUZGMENcdTUyMTlcdTRFM0FcdTRFMkRcdTY1ODdcdThGOTNcdTUxNjVcdTdFRDNcdTY3NUZcdTc2ODRcdTcyQjZcdTYwMDFcblx0XHRcdGxldCBjdXJzb3IgPSB1cGRhdGUudmlldy5zdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluO1xuXHRcdFx0bGV0IENoaW5lc2VSZWdFeHAgPSAvXltcXHU0ZTAwLVxcdTlmYTVcdTMwMTBcdTMwMTFcdTAwQjdcdUZGRTVcdTMwMEFcdTMwMEJcdUZGMUZcdUZGMUFcdTIwMTlcdTIwMThcdTIwMURcdTIwMUNcdTMwMENcdTMwMERcdTMwMDFcdTMwMDJcdUZGMENcdUZGMDhcdUZGMDlcdUZGMDFcdTIwMTRcdTIwMTRcdTIwMjZcdTIwMjYwLTldKyQvO1xuXHRcdFx0bGV0IGNoaW5lc2VFbmRGbGFnID0gY2hhbmdlVHlwZSA9PSBcImlucHV0LnR5cGUuY29tcG9zZVwiICYmXG5cdFx0XHRcdGN1cnNvci5hbmNob3IgPT0gY3Vyc29yLmhlYWQgJiYgY3Vyc29yLmFuY2hvciA9PT0gdG9CICYmXG5cdFx0XHRcdENoaW5lc2VSZWdFeHAudGVzdChpbnNlcnRlZFN0cik7XG5cblx0XHRcdGlmIChjaGFuZ2VUeXBlICE9IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZT1mYWxzZTtcblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgbm90U2VsZWN0ZWQgJiYgIWlzRXhjbHVkZUZpbGUgJiZcblx0XHRcdFx0Z2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIGZyb21CKSA9PSBMaW5lVHlwZS50ZXh0KXtcblx0XHRcdFx0aWYgKGNoYW5nZVR5cGUgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIil7XG5cdFx0XHRcdFx0aWYgKHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZT09ZmFsc2Upe1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2JlZ2luX3BvcyA9IGZyb21CO1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2VuZF9wb3MgPSB0b0I7XG5cdFx0XHRcdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2VuZF9wb3MgPSB0b0I7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmNvbXBvc2VfYmVnaW5fcG9zPT10aGlzLmNvbXBvc2VfZW5kX3Bvcyl7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY2hpbmVzZUVuZEZsYWcpIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZT1mYWxzZTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJDb21wb3NlXCIsIGNoaW5lc2VFbmRGbGFnLCB0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUpO1xuXHRcdFx0fVxuXHRcdFx0XG5cblx0XHRcdC8vIFx1NTIyNFx1NjVBRFx1NkJDRlx1NkIyMVx1OEY5M1x1NTE2NVx1N0VEM1x1Njc1RlxuXHRcdFx0aWYgKGNoYW5nZVR5cGUgPT0gJ2lucHV0LnR5cGUnIHx8IGNoYW5nZVR5cGUgPT0gXCJpbnB1dFwiIHx8IGNoaW5lc2VFbmRGbGFnIHx8IGNoYW5nZVR5cGUgPT0gJ25vbmUnKSB7XG5cdFx0XHRcdC8vIFx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1OEY2Q1x1NTMxNlx1ODlDNFx1NTIxOVxuXHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuVXNlckNvbnZlcnRSdWxlcykge1xuXHRcdFx0XHRcdC8vIGlmIChpbnNlcnRlZFN0ciAhPSBydWxlLmJlZm9yZS5sZWZ0LnN1YnN0cmluZyhydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCAtIGluc2VydGVkU3RyLmxlbmd0aCkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGxldCBsZWZ0ID0gdXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0IpO1xuXHRcdFx0XHRcdGxldCByaWdodCA9IHVwZGF0ZS52aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHR0bzogdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuUHVuY1JlY3RpZnkgJiYgY2hpbmVzZUVuZEZsYWcgJiYgdGhpcy5jb21wb3NlX2JlZ2luX3Bvcz4xICYmIFxuXHRcdFx0XHRcdC9bLC4/IV0vLnRlc3QodXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRoaXMuY29tcG9zZV9iZWdpbl9wb3MtMSwgdGhpcy5jb21wb3NlX2JlZ2luX3BvcykpKXtcblx0XHRcdFx0XHRsZXQgcHVuYyA9IHVwZGF0ZS52aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyh0aGlzLmNvbXBvc2VfYmVnaW5fcG9zLTEsIHRoaXMuY29tcG9zZV9iZWdpbl9wb3MpXG5cdFx0XHRcdFx0aWYgKHRoaXMuY29tcG9zZV9iZWdpbl9wb3M+MiAmJiBcblx0XHRcdFx0XHRcdC9bXFxzXFxuXFx3XS8udGVzdCh1cGRhdGUudmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3Bvcy0yLCB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zLTEpKSl7fVxuXHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zLTEsXG5cdFx0XHRcdFx0XHRcdFx0dG86IHRoaXMuY29tcG9zZV9iZWdpbl9wb3MsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiB0aGlzLmhhbGZUb0Z1bGxTeW1ib2xNYXAuZ2V0KHB1bmMpXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdC8vIHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBcdTUyMjRcdTY1QURcdTY4M0NcdTVGMEZcdTUzMTZcdTY1ODdcdTY3MkNcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZWFkeSB0byBmb3JtYXRcIik7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwiY2hlY2sgaXMgZXhjbHVlIGZpbGU6XCIsIGlzRXhjbHVkZUZpbGUpXG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgbm90U2VsZWN0ZWQgJiYgIWlzRXhjbHVkZUZpbGUgJiYgKGNoYW5nZVR5cGUgIT0gJ25vbmUnIHx8IGluc2VydGVkU3RyLmNvbnRhaW5zKFwiXFxuXCIpKSAmJlxuXHRcdFx0XHRcdGdldFBvc0xpbmVUeXBlKHVwZGF0ZS52aWV3LnN0YXRlLCBmcm9tQikgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCBmcm9tQiwgY3Vyc29yLmFuY2hvciwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goY2hhbmdlc1sxXSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgIWlzRXhjbHVkZUZpbGUgJiYgY2hhbmdlVHlwZSA9PSBcImlucHV0LnBhc3RlXCIgJiYgIVBsYXRmb3JtLmlzSW9zQXBwKSB7XG5cdFx0XHRcdGxldCB1cGRhdGVMaW5lU3RhcnQgPSB1cGRhdGUuc3RhdGUuZG9jLmxpbmVBdChmcm9tQikubnVtYmVyO1xuXHRcdFx0XHRsZXQgdXBkYXRlTGluZUVuZCA9IHVwZGF0ZS5zdGF0ZS5kb2MubGluZUF0KHRvQikubnVtYmVyO1xuXHRcdFx0XHRpZiAodXBkYXRlTGluZVN0YXJ0ID09IHVwZGF0ZUxpbmVFbmQgJiYgZ2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIHRvQikgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCB0b0IsIHRvQiwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goY2hhbmdlc1sxXSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSB1cGRhdGVMaW5lU3RhcnQ7IGkgPD0gdXBkYXRlTGluZUVuZDsgaSsrKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmZvcm1hdE9uZUxpbmUodGhpcy5nZXRFZGl0b3IoKSwgaSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XHQvLyBpdGVyY2hhbmdlcyBlbmRcblx0fVxuXG5cdHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlVGFiRG93biA9ICh2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0aWYgKCF0aGlzLnNldHRpbmdzLlRhYm91dCkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0bGV0IHN0YXRlID0gdmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGNvbnN0IHMgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcblx0XHRpZiAocy5yYW5nZXMubGVuZ3RoID4gMSkgcmV0dXJuIGZhbHNlO1xuXHRcdGNvbnN0IHBvcyA9IHMubWFpbi50bztcblx0XHRsZXQgbGluZSA9IGRvYy5saW5lQXQocG9zKVxuXG5cdFx0Ly8gRGVidWcgaW5mb1xuXHRcdC8vIGNvbnNvbGUubG9nKGxpbmUudGV4dClcblx0XHQvLyBmb3IgKGxldCBwPWxpbmUuZnJvbTsgcDw9bGluZS50bzsgcCs9MSl7XG5cdFx0Ly8gXHRjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG5cdFx0Ly8gXHRjb25zb2xlLmxvZyhwLWxpbmUuZnJvbSwgdG9rZW4pXG5cdFx0Ly8gfVxuXHRcdC8vIHJldHVybiB0cnVlO1xuXG5cdFx0Ly8gXHU1RjUzXHU1MTQ5XHU2ODA3XHU1NzI4XHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxXHU1MTg1XHU5MEU4XG5cdFx0aWYgKHBvcyAtIGxpbmUuZnJvbSAhPSAwICYmIHRyZWUucmVzb2x2ZShwb3MgLSAxLCAxKS5uYW1lLmNvbnRhaW5zKCdpbmxpbmUtY29kZScpKSB7XG5cdFx0XHRpZiAodHJlZS5yZXNvbHZlKHBvcywgMSkubmFtZS5jb250YWlucygnZm9ybWF0dGluZy1jb2RlX2lubGluZS1jb2RlJykpIHtcblx0XHRcdFx0dmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcG9zICsgMSwgaGVhZDogcG9zICsgMSB9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGxldCBwID0gcG9zICsgMTsgcCA8IGxpbmUudG8gJiYgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJyk7IHAgKz0gMSkge1xuXHRcdFx0XHQvLyBcdTU5ODJcdTY3OUNcdTYyN0VcdTUyMzAgYCBcdTUyMTlcdTUxNDlcdTY4MDdcdThERjNcdTUyMzBcdTUxNzZcdTU0MEVcblx0XHRcdFx0aWYgKHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdmb3JtYXR0aW5nLWNvZGVfaW5saW5lLWNvZGUnKSkge1xuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcCwgaGVhZDogcCB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBcdTU5ODJcdTY3OUNcdTZDQTFcdTYyN0VcdTUyMzAgYCBcdTUyMTlcdTc2RjRcdTYzQTVcdThERjNcdTUyMzBcdTg4NENcdTVDM0Vcblx0XHRcdFx0aWYgKHAgPT0gbGluZS50byAtIDEgJiYgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJykpIHtcblx0XHRcdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHAgKyAxLCBoZWFkOiBwICsgMSB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlRW50ZXIgPSAodmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdC8vIGNvbnNvbGUubG9nKFwidGhpcy5zZXR0aW5ncy5FbnRlclR3aWNlXCIsIHRoaXMuc2V0dGluZ3MuRW50ZXJUd2ljZSlcblx0XHRpZiAoIXRoaXMuc2V0dGluZ3MuRW50ZXJUd2ljZSkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0Y29uc3QgYmFzZVBhdGggPSAodGhpcy5hcHAudmF1bHQuYWRhcHRlciBhcyBhbnkpLmJhc2VQYXRoXG5cdFx0bGV0IGNvbmZpZ19wYXRoID0gYmFzZVBhdGggKyBcIi9cIisgdGhpcy5hcHAudmF1bHQuY29uZmlnRGlyK1wiL2FwcC5qc29uXCI7XG5cdFx0bGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNvbmZpZ19wYXRoLCAndXRmLTgnKSlcblx0XHRsZXQgc3RyaWN0TGluZUJyZWFrcyA9IGNvbmZpZy5zdHJpY3RMaW5lQnJlYWtzIHx8IGZhbHNlO1xuXHRcdGlmKCFzdHJpY3RMaW5lQnJlYWtzKSByZXR1cm4gZmFsc2U7XG5cblx0XHRsZXQgc3RhdGUgPSB2aWV3LnN0YXRlO1xuXHRcdGxldCBkb2MgPSBzdGF0ZS5kb2Ncblx0XHRjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG5cdFx0Y29uc3QgcyA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuXHRcdGlmIChzLnJhbmdlcy5sZW5ndGggPiAxKSByZXR1cm4gZmFsc2U7XG5cdFx0Y29uc3QgcG9zID0gcy5tYWluLnRvO1xuXHRcdGxldCBsaW5lID0gZG9jLmxpbmVBdChwb3MpXG5cblx0XHQvLyBjb25zb2xlLmxvZyhsaW5lLnRleHQsIGdldFBvc0xpbmVUeXBlMihzdGF0ZSwgcG9zKSlcblx0XHQvLyBmb3IgKGxldCBwPWxpbmUuZnJvbTsgcDw9bGluZS50bzsgcCs9MSl7XG5cdFx0Ly8gXHRjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG5cdFx0Ly8gXHRjb25zb2xlLmxvZyhwLWxpbmUuZnJvbSwgdG9rZW4pXG5cdFx0Ly8gfVxuXHRcdGlmICgvXlxccyokLy50ZXN0KGxpbmUudGV4dCkpIHJldHVybiBmYWxzZTtcblx0XHRlbHNlIGlmKGdldFBvc0xpbmVUeXBlMihzdGF0ZSwgcG9zKT09TGluZVR5cGUudGV4dCl7XG5cdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdGZyb206IHBvcyxcblx0XHRcdFx0XHR0bzogcG9zLFxuXHRcdFx0XHRcdGluc2VydDogJ1xcblxcbidcblx0XHRcdFx0fSxcblx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcG9zKzIgfSxcblx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwcml2YXRlIHJlYWRvbmx5IG9uS2V5dXAgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHZpZXc6IEVkaXRvclZpZXcpID0+IHtcblx0XHRpZih0aGlzLnNldHRpbmdzLmRlYnVnKXtcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiS2V5dXA6XCIsIGV2ZW50LmtleSwgZXZlbnQuc2hpZnRLZXksIGV2ZW50LmN0cmxLZXl8fGV2ZW50Lm1ldGFLZXkpO1xuXHRcdFx0Y29uc29sZS5sb2coXCJLZXl1cDpcIiwgZXZlbnQua2V5KTtcblx0XHR9XG5cdFx0dGhpcy5oYW5kbGVFbmRDb21wb3NlVHlwZUtleShldmVudCwgdmlldyk7XG5cdH1cblxuXHRoYW5kbGVFbmRDb21wb3NlVHlwZUtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCwgdmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5UcnlGaXhDaGluZXNlSU0pIHJldHVybjtcblx0XHRpZihbJ0VudGVyJ10uY29udGFpbnMoZXZlbnQua2V5KSAmJiB0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgXG5cdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgJiYgIXRoaXMuaXNDdXJyZW50RmlsZUV4Y2x1ZGUoKSl7XG5cdFx0XHRcdGxldCBjdXJzb3IgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0XHRcdGlmKGdldFBvc0xpbmVUeXBlKHZpZXcuc3RhdGUsIGN1cnNvci5hbmNob3IpICE9IExpbmVUeXBlLnRleHQpIHJldHVybjtcblx0XHRcdFx0aWYgKGN1cnNvci5oZWFkICE9IGN1cnNvci5hbmNob3IpIHJldHVybjtcblx0XHRcdFx0bGV0IGluc2VydGVkU3RyID0gdmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3BvcywgY3Vyc29yLmFuY2hvcik7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiaW5zZXJ0ZWQgc3RyXCIsIGluc2VydGVkU3RyKTtcblx0XHRcdFx0bGV0IGNoYW5nZXMgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmVPZkRvYyh2aWV3LnN0YXRlLCB0aGlzLnNldHRpbmdzLCBcblx0XHRcdFx0dGhpcy5jb21wb3NlX2JlZ2luX3BvcywgY3Vyc29yLmFuY2hvciwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSBmYWxzZTtcblx0XHRcdFx0aWYgKGNoYW5nZXMgIT0gbnVsbCkge1xuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goLi4uY2hhbmdlc1swXSk7XG5cdFx0XHRcdFx0dmlldy5kaXNwYXRjaChjaGFuZ2VzWzFdKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRmb3JtYXRBcnRpY2xlID0gKGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpOiB2b2lkID0+IHtcblx0XHRsZXQgbGluZUNvdW50ID0gZWRpdG9yLmxpbmVDb3VudCgpO1xuXHRcdGxldCBuZXdfYXJ0aWNsZSA9IFwiXCI7XG5cdFx0bGV0IGNzID0gZWRpdG9yLmdldEN1cnNvcigpO1xuXHRcdGxldCBjaCA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lQ291bnQ7IGkrKykge1xuXHRcdFx0aWYoaSE9MCkgbmV3X2FydGljbGUrPSdcXG4nO1xuXHRcdFx0aWYoaSE9Y3MubGluZSl7XG5cdFx0XHRcdG5ld19hcnRpY2xlICs9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGkgKyAxKVswXTtcblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdGxldCBuZXdEYXRhID0gdGhpcy5wcmVGb3JtYXRPbmVMaW5lKGVkaXRvciwgaSArIDEsIGNzLmNoKTtcblx0XHRcdFx0bmV3X2FydGljbGUgKz0gbmV3RGF0YVswXTtcblx0XHRcdFx0Y2ggPSBuZXdEYXRhWzFdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRlZGl0b3Iuc2V0VmFsdWUobmV3X2FydGljbGUpO1xuXHRcdGVkaXRvci5zZXRDdXJzb3Ioe2xpbmU6Y3MubGluZSwgY2g6Y2h9KTtcblx0XHRuZXcgTm90aWNlKFwiRWFzeVR5cGluZzogRm9ybWF0IEFydGljbGUgRG9uZSFcIik7XG5cdH1cblxuXHRpc0N1cnJlbnRGaWxlRXhjbHVkZSgpOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5DdXJBY3RpdmVNYXJrZG93biA9PSBcIlwiKXtcblx0XHRcdGxldCBmaWxlID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcblx0XHRcdGlmIChmaWxlIT1udWxsICYmIHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gIT0gZmlsZS5wYXRoKVxuXHRcdFx0e1xuXHRcdFx0XHR0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID0gZmlsZS5wYXRoO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGxldCBleGNsdWRlUGF0aHMgPSB0aGlzLnNldHRpbmdzLkV4Y2x1ZGVGaWxlcy5zcGxpdCgnXFxuJyk7XG5cdFx0Zm9yIChsZXQgZXBhdGggb2YgZXhjbHVkZVBhdGhzKSB7XG5cdFx0XHRpZiAoZXBhdGguY2hhckF0KDApID09ICcvJykgZXBhdGggPSBlcGF0aC5zdWJzdHJpbmcoMSk7XG5cdFx0XHRpZiAodGhpcy5DdXJBY3RpdmVNYXJrZG93biA9PSBlcGF0aCkgcmV0dXJuIHRydWU7XG5cdFx0XHRsZXQgbGVuID0gZXBhdGgubGVuZ3RoO1xuXHRcdFx0aWYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uc3Vic3RyaW5nKDAsIGxlbikgPT0gZXBhdGggJiYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uY2hhckF0KGxlbikgPT0gJy8nIHx8IHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uY2hhckF0KGxlbikgPT0gJ1xcXFwnIHx8XG5cdFx0XHRcdGVwYXRoLmNoYXJBdChsZW4gLSAxKSA9PSBcIi9cIiB8fCBlcGF0aC5jaGFyQXQobGVuIC0gMSkgPT0gXCJcXFxcXCIpKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRmb3JtYXRTZWxlY3Rpb25PckN1ckxpbmUgPSAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldyk6IHZvaWQgPT4ge1xuXHRcdGlmICghZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkKCkgfHwgZWRpdG9yLmdldFNlbGVjdGlvbigpID09PSAnJykge1xuXHRcdFx0bGV0IGxpbmVOdW1iZXIgPSBlZGl0b3IuZ2V0Q3Vyc29yKCkubGluZTtcblx0XHRcdGxldCBuZXdMaW5lRGF0YSA9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGxpbmVOdW1iZXIgKyAxLCBlZGl0b3IuZ2V0Q3Vyc29yKCkuY2gpO1xuXHRcdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShuZXdMaW5lRGF0YVswXSwge2xpbmU6IGxpbmVOdW1iZXIsIGNoOjB9LCB7bGluZTpsaW5lTnVtYmVyLCBjaDplZGl0b3IuZ2V0TGluZShsaW5lTnVtYmVyKS5sZW5ndGh9KTtcblx0XHRcdGVkaXRvci5zZXRTZWxlY3Rpb24oe2xpbmU6bGluZU51bWJlciwgY2g6bmV3TGluZURhdGFbMV19KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bGV0IHNlbGVjdGlvbiA9IGVkaXRvci5saXN0U2VsZWN0aW9ucygpWzBdO1xuXHRcdGxldCBiZWdpbiA9IHNlbGVjdGlvbi5hbmNob3IubGluZTtcblx0XHRsZXQgZW5kID0gc2VsZWN0aW9uLmhlYWQubGluZTtcblx0XHRpZiAoYmVnaW4gPiBlbmQpIHtcblx0XHRcdGxldCB0ZW1wID0gYmVnaW47XG5cdFx0XHRiZWdpbiA9IGVuZDtcblx0XHRcdGVuZCA9IHRlbXA7XG5cdFx0fVxuXHRcdC8vIGNvbnNvbGUubG9nKGJlZ2luLCBlbmQpXG5cdFx0bGV0IG5ld19saW5lcyA9IFwiXCI7XG5cdFx0Zm9yIChsZXQgaT1iZWdpbjsgaSA8PSBlbmQ7IGkrKykge1xuXHRcdFx0aWYoaSE9YmVnaW4pIG5ld19saW5lcys9J1xcbic7XG5cdFx0XHRjb25zb2xlLmxvZygnaSsxJywgaSsxKVxuXHRcdFx0bmV3X2xpbmVzKz10aGlzLnByZUZvcm1hdE9uZUxpbmUoZWRpdG9yLCBpICsgMSlbMF07XG5cdFx0fVxuXHRcdGVkaXRvci5yZXBsYWNlUmFuZ2UobmV3X2xpbmVzLCB7bGluZTogYmVnaW4sIGNoOjB9LCB7bGluZTplbmQsIGNoOmVkaXRvci5nZXRMaW5lKGVuZCkubGVuZ3RofSk7XG5cdFx0aWYgKHNlbGVjdGlvbi5hbmNob3IubGluZSA8IHNlbGVjdGlvbi5oZWFkLmxpbmUpIHtcblx0XHRcdGVkaXRvci5zZXRTZWxlY3Rpb24oeyBsaW5lOiBzZWxlY3Rpb24uYW5jaG9yLmxpbmUsIGNoOiAwIH0sIHsgbGluZTogc2VsZWN0aW9uLmhlYWQubGluZSwgY2g6IGVkaXRvci5nZXRMaW5lKHNlbGVjdGlvbi5oZWFkLmxpbmUpLmxlbmd0aCB9KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRlZGl0b3Iuc2V0U2VsZWN0aW9uKHsgbGluZTogc2VsZWN0aW9uLmFuY2hvci5saW5lLCBjaDogZWRpdG9yLmdldExpbmUoc2VsZWN0aW9uLmFuY2hvci5saW5lKS5sZW5ndGggfSwgeyBsaW5lOiBzZWxlY3Rpb24uaGVhZC5saW5lLCBjaDogMCB9KTtcblx0XHR9XG5cdH1cblxuXHQvLyBwYXJhbTogbGluZU51bWJlciBpcyAoMS1iYXNlZClcblx0Zm9ybWF0T25lTGluZSA9IChlZGl0b3I6IEVkaXRvciwgbGluZU51bWJlcjogbnVtYmVyKTogdm9pZCA9PiB7XG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciwgbm90IHR5cGVkXG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBzdGF0ZSA9IGVkaXRvclZpZXcuc3RhdGU7XG5cdFx0bGV0IGxpbmUgPSBzdGF0ZS5kb2MubGluZShsaW5lTnVtYmVyKVxuXG5cdFx0aWYgKGdldFBvc0xpbmVUeXBlKHN0YXRlLCBsaW5lLmZyb20pID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdGxldCBvbGRMaW5lID0gbGluZS50ZXh0O1xuXHRcdFx0bGV0IG5ld0xpbmUgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmUoc3RhdGUsIGxpbmVOdW1iZXIsIHRoaXMuc2V0dGluZ3MsIG9sZExpbmUubGVuZ3RoLCAwKVswXTtcblx0XHRcdGlmIChvbGRMaW5lICE9IG5ld0xpbmUpIHtcblx0XHRcdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShuZXdMaW5lLCB7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogMCB9LCB7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogb2xkTGluZS5sZW5ndGggfSk7XG5cdFx0XHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBsaW5lTnVtYmVyIC0gMSwgY2g6IGVkaXRvci5nZXRMaW5lKGxpbmVOdW1iZXIgLSAxKS5sZW5ndGggfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIHBhcmFtOiBsaW5lTnVtYmVyIGlzICgxLWJhc2VkKVxuXHRwcmVGb3JtYXRPbmVMaW5lID0gKGVkaXRvcjogRWRpdG9yLCBsaW5lTnVtYmVyOiBudW1iZXIsIGNoOm51bWJlcj0tMSk6IFtzdHJpbmcsIG51bWJlcl0gPT4ge1xuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IsIG5vdCB0eXBlZFxuXHRcdGNvbnN0IGVkaXRvclZpZXcgPSBlZGl0b3IuY20gYXMgRWRpdG9yVmlldztcblx0XHRsZXQgc3RhdGUgPSBlZGl0b3JWaWV3LnN0YXRlO1xuXHRcdGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bWJlcilcblxuXHRcdGxldCBuZXdMaW5lID0gbGluZS50ZXh0O1xuXHRcdGxldCBuZXdDaCA9IDA7XG5cdFx0bGV0IGN1ckNoID0gbGluZS50ZXh0Lmxlbmd0aDtcblx0XHRpZiAoY2ghPS0xKXtcblx0XHRcdGN1ckNoID0gY2g7XG5cdFx0fVxuXHRcdGlmIChnZXRQb3NMaW5lVHlwZShzdGF0ZSwgbGluZS5mcm9tKSA9PSBMaW5lVHlwZS50ZXh0KSB7XG5cdFx0XHRsZXQgbmV3TGluZURhdGEgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmUoc3RhdGUsIGxpbmVOdW1iZXIsIHRoaXMuc2V0dGluZ3MsIGN1ckNoLCAwKTtcblx0XHRcdG5ld0xpbmUgPSBuZXdMaW5lRGF0YVswXTtcblx0XHRcdG5ld0NoID0gbmV3TGluZURhdGFbMV07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtuZXdMaW5lLCBuZXdDaF07XG5cdH1cblxuXHRkZWxldGVCbGFua0xpbmVzID0gKGVkaXRvcjogRWRpdG9yKTogdm9pZCA9PiB7XG5cdFx0Y29uc3QgYmFzZVBhdGggPSAodGhpcy5hcHAudmF1bHQuYWRhcHRlciBhcyBhbnkpLmJhc2VQYXRoXG5cdFx0bGV0IGNvbmZpZ19wYXRoID0gYmFzZVBhdGggKyBcIi9cIisgdGhpcy5hcHAudmF1bHQuY29uZmlnRGlyK1wiL2FwcC5qc29uXCI7XG5cdFx0aWYodGhpcy5zZXR0aW5ncy5kZWJ1Zyl7XG5cdFx0XHRjb25zb2xlLmxvZyhjb25maWdfcGF0aCk7XG5cdFx0XHRsZXQgY29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoY29uZmlnX3BhdGgsICd1dGYtOCcpKVxuXHRcdFx0Y29uc29sZS5sb2coY29uZmlnKTtcblx0XHRcdC8vIHJldHVybjtcblx0XHR9XG5cdFx0Ly8gbGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNvbmZpZ19wYXRoLCAndXRmLTgnKSlcblx0XHQvLyBsZXQgc3RyaWN0TGluZUJyZWFrcyA9IGNvbmZpZy5zdHJpY3RMaW5lQnJlYWtzO1xuXHRcdC8vIHJldHVybiA7XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yLCBub3QgdHlwZWRcblx0XHRjb25zdCBlZGl0b3JWaWV3ID0gZWRpdG9yLmNtIGFzIEVkaXRvclZpZXc7XG5cdFx0bGV0IHN0YXRlID0gZWRpdG9yVmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGxldCBzdGFydF9saW5lID0gMTtcblx0XHRsZXQgZW5kX2xpbmUgPSBkb2MubGluZXM7XG5cdFx0bGV0IGxpbmVfbnVtID0gZG9jLmxpbmVzO1xuXHRcdGNvbnN0IHNlbGVjdGVkID0gZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkKCkgJiYgZWRpdG9yLmdldFNlbGVjdGlvbigpICE9ICcnO1xuXHRcdGlmIChzZWxlY3RlZCkge1xuXHRcdFx0bGV0IHNlbGVjdGlvbiA9IGVkaXRvci5saXN0U2VsZWN0aW9ucygpWzBdO1xuXHRcdFx0bGV0IGJlZ2luID0gc2VsZWN0aW9uLmFuY2hvci5saW5lICsgMTtcblx0XHRcdGxldCBlbmQgPSBzZWxlY3Rpb24uaGVhZC5saW5lICsgMTtcblx0XHRcdGlmIChiZWdpbiA+IGVuZCkge1xuXHRcdFx0XHRsZXQgdGVtcCA9IGJlZ2luO1xuXHRcdFx0XHRiZWdpbiA9IGVuZDtcblx0XHRcdFx0ZW5kID0gdGVtcDtcblx0XHRcdH1cblx0XHRcdHN0YXJ0X2xpbmUgPSBiZWdpbjtcblx0XHRcdGVuZF9saW5lID0gZW5kXG5cdFx0fVxuXG5cdFx0Ly8gaWYodGhpcy5zZXR0aW5ncy5kZWJ1Zyl7XG5cdFx0Ly8gXHRsZXQgbGluZV9pbmRleCA9IGVkaXRvci5nZXRDdXJzb3IoKS5saW5lICsgMTtcblx0XHQvLyBcdGxldCBjb250ZW50ID0gZWRpdG9yLmdldExpbmUoZWRpdG9yLmdldEN1cnNvcigpLmxpbmUpO1xuXHRcdC8vIFx0Y29uc29sZS5sb2coY29udGVudCk7XG5cdFx0Ly8gXHRmb3IgKGxldCBpPTA7aTxjb250ZW50Lmxlbmd0aDtpKyspe1xuXHRcdC8vIFx0XHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShkb2MubGluZShsaW5lX2luZGV4KS5mcm9tK2ksIDEpO1xuXHRcdC8vIFx0XHRjb25zb2xlLmxvZyhpLCBub2RlLm5hbWUpXG5cdFx0Ly8gXHR9XG5cdFx0Ly8gXHRyZXR1cm47XG5cdFx0Ly8gfVxuXHRcdFxuXHRcdFxuXHRcdGxldCBkZWxldGVfaW5kZXg6IG51bWJlcltdID0gW107XG5cdFx0bGV0IGJsYW5rX3JlZyA9IC9eXFxzKiQvO1xuXHRcdGxldCByZW1haW5fbmV4dF9ibGFuayA9IGZhbHNlO1xuXG5cdFx0aWYgKHN0YXJ0X2xpbmUgIT0gMSkge1xuXHRcdFx0bGV0IG5vZGUgPSB0cmVlLnJlc29sdmUoZG9jLmxpbmUoc3RhcnRfbGluZSAtIDEpLmZyb20sIDEpO1xuXHRcdFx0aWYgKG5vZGUubmFtZS5jb250YWlucygnbGlzdCcpIHx8IG5vZGUubmFtZS5jb250YWlucygncXVvdGUnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ2Jsb2NraWQnKSkge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChlbmRfbGluZSAhPSBsaW5lX251bSAmJiAhYmxhbmtfcmVnLnRlc3QoZG9jLmxpbmUoZW5kX2xpbmUgKyAxKS50ZXh0KSkge1xuXHRcdFx0ZW5kX2xpbmUgKz0gMTtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gc3RhcnRfbGluZTsgaSA8PSBlbmRfbGluZTsgaSsrKSB7XG5cdFx0XHRsZXQgbGluZSA9IGRvYy5saW5lKGkpO1xuXHRcdFx0bGV0IHBvcyA9IGxpbmUuZnJvbTtcblx0XHRcdGxldCBub2RlID0gdHJlZS5yZXNvbHZlKHBvcywgMSk7XG5cblx0XHRcdC8vIFx1NUJGOVx1NEU4RVx1N0E3QVx1NzY3RFx1ODg0Q1xuXHRcdFx0aWYgKGJsYW5rX3JlZy50ZXN0KGxpbmUudGV4dCkgJiYgIXJlbWFpbl9uZXh0X2JsYW5rKSB7XG5cdFx0XHRcdGRlbGV0ZV9pbmRleC5wdXNoKGkpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKGJsYW5rX3JlZy50ZXN0KGxpbmUudGV4dCkgJiYgcmVtYWluX25leHRfYmxhbmspIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSBmYWxzZTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChub2RlLm5hbWUuY29udGFpbnMoJ2hyJykgJiYgZGVsZXRlX2luZGV4W2RlbGV0ZV9pbmRleC5sZW5ndGggLSAxXSA9PSBpIC0gMSkge1xuXHRcdFx0XHRkZWxldGVfaW5kZXgucG9wKClcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKG5vZGUubmFtZS5jb250YWlucygnbGlzdCcpIHx8IG5vZGUubmFtZS5jb250YWlucygncXVvdGUnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ2Jsb2NraWQnKSkge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gY29uc29sZS5sb2coXCJkZWxldGVfaW5kZXhcIixkZWxldGVfaW5kZXgpXG5cdFx0bGV0IG5ld0NvbnRlbnQgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSAxOyBpIDwgbGluZV9udW07IGkrKykge1xuXHRcdFx0aWYgKCFkZWxldGVfaW5kZXguY29udGFpbnMoaSkpIHtcblx0XHRcdFx0bmV3Q29udGVudCArPSBkb2MubGluZShpKS50ZXh0ICsgJ1xcbic7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghZGVsZXRlX2luZGV4LmNvbnRhaW5zKGxpbmVfbnVtKSkge1xuXHRcdFx0bmV3Q29udGVudCArPSBkb2MubGluZShsaW5lX251bSkudGV4dFxuXHRcdH1cblxuXHRcdGVkaXRvci5zZXRWYWx1ZShuZXdDb250ZW50KTtcblx0XHQvLyB0aGlzLkNvbnRlbnRQYXJzZXIucmVwYXJzZShlZGl0b3IuZ2V0VmFsdWUoKSwgMCk7XG5cdH1cblxuXHRzd2l0Y2hBdXRvRm9ybWF0dGluZygpIHtcblx0XHR0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgPSB0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgPyBmYWxzZSA6IHRydWU7XG5cdFx0bGV0IHN0YXR1cyA9IHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCA/ICdvbicgOiAnb2ZmJztcblx0XHRuZXcgTm90aWNlKCdFYXN5VHlwaW5nOiBBdXRvZm9ybWF0IGlzICcgKyBzdGF0dXMgKyAnIScpO1xuXHR9XG5cblx0Y29udmVydDJDb2RlQmxvY2soZWRpdG9yOiBFZGl0b3IpIHtcblx0XHRpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCItLS0tLSBFYXN5VHlwaW5nOiBpbnNlcnQgY29kZSBibG9jay0tLS0tXCIpO1xuXHRcdGlmIChlZGl0b3Iuc29tZXRoaW5nU2VsZWN0ZWQgJiYgZWRpdG9yLmdldFNlbGVjdGlvbigpICE9IFwiXCIpIHtcblx0XHRcdGxldCBzZWxlY3RlZCA9IGVkaXRvci5nZXRTZWxlY3Rpb24oKTtcblx0XHRcdGxldCBzZWxlY3RlZFJhbmdlID0gZWRpdG9yLmxpc3RTZWxlY3Rpb25zKClbMF07XG5cdFx0XHRsZXQgYW5jaG9yID0gc2VsZWN0ZWRSYW5nZS5hbmNob3I7XG5cdFx0XHRsZXQgaGVhZCA9IHNlbGVjdGVkUmFuZ2UuaGVhZDtcblxuXHRcdFx0bGV0IHJlcGxhY2VtZW50ID0gXCJgYGBcXG5cIiArIHNlbGVjdGVkICsgXCJcXG5gYGBcIjtcblx0XHRcdC8vIG1ha2Ugc3VyZSBhbmNob3IgPCBoZWFkXG5cdFx0XHRpZiAoYW5jaG9yLmxpbmUgPiBoZWFkLmxpbmUgfHwgKGFuY2hvci5saW5lID09IGhlYWQubGluZSAmJiBhbmNob3IuY2ggPiBoZWFkLmNoKSkge1xuXHRcdFx0XHRsZXQgdGVtcCA9IGFuY2hvcjtcblx0XHRcdFx0YW5jaG9yID0gaGVhZDtcblx0XHRcdFx0aGVhZCA9IHRlbXA7XG5cdFx0XHR9XG5cdFx0XHRsZXQgZHN0TGluZSA9IGFuY2hvci5saW5lO1xuXHRcdFx0aWYgKGFuY2hvci5jaCAhPSAwKSB7XG5cdFx0XHRcdHJlcGxhY2VtZW50ID0gJ1xcbicgKyByZXBsYWNlbWVudDtcblx0XHRcdFx0ZHN0TGluZSArPSAxO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGhlYWQuY2ggIT0gZWRpdG9yLmdldExpbmUoaGVhZC5saW5lKS5sZW5ndGgpIHtcblx0XHRcdFx0cmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudCArICdcXG4nO1xuXHRcdFx0fVxuXHRcdFx0ZWRpdG9yLnJlcGxhY2VTZWxlY3Rpb24ocmVwbGFjZW1lbnQpO1xuXHRcdFx0ZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGRzdExpbmUsIGNoOiAzIH0pO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdGxldCBjcyA9IGVkaXRvci5nZXRDdXJzb3IoKTtcblx0XHRcdGxldCByZXBsYWNlID0gXCJgYGBcXG5gYGBcIjtcblx0XHRcdGxldCBkc3RMaW5lID0gY3MubGluZTtcblx0XHRcdGlmIChjcy5jaCAhPSAwKSB7XG5cdFx0XHRcdHJlcGxhY2UgPSBcIlxcblwiICsgcmVwbGFjZTtcblx0XHRcdFx0ZHN0TGluZSArPSAxO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGNzLmNoICE9IGVkaXRvci5nZXRMaW5lKGNzLmxpbmUpLmxlbmd0aCkge1xuXHRcdFx0XHRyZXBsYWNlID0gcmVwbGFjZSArICdcXG4nO1xuXHRcdFx0fVxuXHRcdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShyZXBsYWNlLCBjcyk7XG5cdFx0XHRlZGl0b3Iuc2V0Q3Vyc29yKHsgbGluZTogZHN0TGluZSwgY2g6IDMgfSk7XG5cdFx0fVxuXG5cdH1cblxuXHRyZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKSB7XG5cdFx0dGhpcy5TZWxlY3Rpb25SZXBsYWNlTWFwID0gbmV3IE1hcCh0aGlzLnNlbGVjdGlvblJlcGxhY2VNYXBJbml0YWxEYXRhKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgdHJpZ2dlciA9IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyW2ldO1xuXHRcdFx0bGV0IGxlZnRzID0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2ldLmxlZnQ7XG5cdFx0XHRsZXQgcmlnaHRzID0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2ldLnJpZ2h0O1xuXG5cdFx0XHR0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuc2V0KHRyaWdnZXIsIHsgbGVmdDogbGVmdHMsIHJpZ2h0OiByaWdodHMgfSk7XG5cdFx0fVxuXHR9XG5cblx0YWRkVXNlclNlbGVjdGlvblJlcFJ1bGUodHJpZ2dlcjogc3RyaW5nLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIuaW5jbHVkZXModHJpZ2dlcikpIHJldHVybiBmYWxzZTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5wdXNoKHRyaWdnZXIpXG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlLnB1c2goeyBsZWZ0OiBsZWZ0LCByaWdodDogcmlnaHQgfSk7XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGRlbGV0ZVVzZXJTZWxlY3Rpb25SZXBSdWxlKGlkeDogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKGlkeCA8IDAgfHwgaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmxlbmd0aCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLnNwbGljZShpZHgsIDEpO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZS5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnJlZnJlc2hTZWxlY3Rpb25SZXBsYWNlUnVsZSgpO1xuXHR9XG5cblx0dXBkYXRlVXNlclNlbGVjdGlvblJlcFJ1bGUoaWR4OiBudW1iZXIsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZykge1xuXHRcdGlmIChpZHggPCAwIHx8IGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGgpIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaWR4XS5sZWZ0ID0gbGVmdDtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaWR4XS5yaWdodCA9IHJpZ2h0O1xuXHRcdHRoaXMucmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCk7XG5cdH1cblxuXHRyZWZyZXNoVXNlckRlbGV0ZVJ1bGUoKSB7XG5cdFx0dGhpcy5Vc2VyRGVsZXRlUnVsZXMgPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdCh0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QpO1xuXHR9XG5cblx0YWRkVXNlckRlbGV0ZVJ1bGUoYmVmb3JlOiBzdHJpbmcsIGFmdGVyOiBzdHJpbmcpIHtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QucHVzaChbYmVmb3JlLCBhZnRlcl0pO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJEZWxldGVSdWxlKCk7XG5cdH1cblxuXHRkZWxldGVVc2VyRGVsZXRlUnVsZShpZHg6IG51bWJlcikge1xuXHRcdGlmIChpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0Lmxlbmd0aCB8fCBpZHggPCAwKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0LnNwbGljZShpZHgsIDEpO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJEZWxldGVSdWxlKCk7XG5cdH1cblxuXHR1cGRhdGVVc2VyRGVsZXRlUnVsZShpZHg6IG51bWJlciwgYmVmb3JlOiBzdHJpbmcsIGFmdGVyOiBzdHJpbmcpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdFtpZHhdWzBdID0gYmVmb3JlO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdFtpZHhdWzFdID0gYWZ0ZXI7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckRlbGV0ZVJ1bGUoKTtcblx0fVxuXG5cdHJlZnJlc2hVc2VyQ29udmVydFJ1bGUoKSB7XG5cdFx0dGhpcy5Vc2VyQ29udmVydFJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QodGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdCk7XG5cdH1cblxuXHRhZGRVc2VyQ29udmVydFJ1bGUoYmVmb3JlOiBzdHJpbmcsIGFmdGVyOiBzdHJpbmcpIHtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0LnB1c2goW2JlZm9yZSwgYWZ0ZXJdKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyQ29udmVydFJ1bGUoKTtcblx0fVxuXG5cdGRlbGV0ZVVzZXJDb252ZXJ0UnVsZShpZHg6IG51bWJlcikge1xuXHRcdGlmIChpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3Quc3BsaWNlKGlkeCwgMSk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cdH1cblxuXHRnZXRDb21tYW5kTmFtZU1hcCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+XG5cdHtcblx0XHRjb25zdCBsYW5nID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpO1xuXG5cdFx0bGV0IGNvbW1hbmRfbmFtZV9tYXBfZW4gPSBuZXcgTWFwKFtcblx0XHRcdFtcImZvcm1hdF9hcnRpY2xlXCIsIFwiRm9ybWF0IGN1cnJlbnQgYXJ0aWNsZVwiXSxcblx0XHRcdFtcImZvcm1hdF9zZWxlY3Rpb25cIiwgXCJGb3JtYXQgc2VsZWN0ZWQgdGV4dCBvciBjdXJyZW50IGxpbmVcIl0sXG5cdFx0XHRbXCJkZWxldGVfYmxhbmtfbGluZVwiLCBcIkRlbGV0ZSBibGFuayBsaW5lcyBvZiB0aGUgc2VsZWN0ZWQgb3Igd2hvbGUgYXJ0aWNsZVwiXSxcblx0XHRcdFtcImluc2VydF9jb2RlYmxvY2tcIiwgXCJJbnNlcnQgY29kZSBibG9jayB3L3dvIHNlbGVjdGlvblwiXSxcblx0XHRcdFtcInN3aXRjaF9hdXRvZm9ybWF0XCIsIFwiU3dpdGNoIGF1dG9mb3JtYXRcIl1cblx0XHRdKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwX3poX1RXID0gbmV3IE1hcChbXG5cdFx0XHRbXCJmb3JtYXRfYXJ0aWNsZVwiLCBcIlx1NjgzQ1x1NUYwRlx1NTMxNlx1NTE2OFx1NjU4N1wiXSxcblx0XHRcdFtcImZvcm1hdF9zZWxlY3Rpb25cIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTkwNzhcdTRFMkRcdTkwRThcdTUyMDYvXHU3NTc2XHU1MjREXHU4ODRDXCJdLFxuXHRcdFx0W1wiZGVsZXRlX2JsYW5rX2xpbmVcIiwgXCJcdTUyMkFcdTk2NjRcdTkwNzhcdTRFMkRcdTkwRThcdTUyMDYvXHU1MTY4XHU2NTg3XHU3Njg0XHU1OTFBXHU5OTE4XHU3QTdBXHU3NjdEXHU4ODRDXCJdLFxuXHRcdFx0W1wiaW5zZXJ0X2NvZGVibG9ja1wiLCBcIlx1NjNEMlx1NTE2NVx1NEVFM1x1NzhCQ1x1NTg0QVwiXSxcblx0XHRcdFtcInN3aXRjaF9hdXRvZm9ybWF0XCIsIFwiXHU1MjA3XHU2M0RCXHU4MUVBXHU1MkQ1XHU2ODNDXHU1RjBGXHU1MzE2XHU5NThCXHU5NURDXCJdXG5cdFx0XSk7XG5cblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcF96aCA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiZm9ybWF0X2FydGljbGVcIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTUxNjhcdTY1ODdcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiXHU2ODNDXHU1RjBGXHU1MzE2XHU5MDA5XHU0RTJEXHU5MEU4XHU1MjA2L1x1NUY1M1x1NTI0RFx1ODg0Q1wiXSxcblx0XHRcdFtcImRlbGV0ZV9ibGFua19saW5lXCIsIFwiXHU1MjJBXHU5NjY0XHU5MDA5XHU0RTJEXHU5MEU4XHU1MjA2L1x1NTE2OFx1NjU4N1x1NzY4NFx1NTkxQVx1NEY1OVx1N0E3QVx1NzY3RFx1ODg0Q1wiXSxcblx0XHRcdFtcImluc2VydF9jb2RlYmxvY2tcIiwgXCJcdTYzRDJcdTUxNjVcdTRFRTNcdTc4MDFcdTU3NTdcIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlx1NTIwN1x1NjM2Mlx1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlx1NUYwMFx1NTE3M1wiXVxuXHRcdF0pO1xuXG5cdFx0bGV0IGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX2VuO1xuXHRcdGlmIChsYW5nID09ICd6aCcpe1xuXHRcdFx0Y29tbWFuZF9uYW1lX21hcCA9IGNvbW1hbmRfbmFtZV9tYXBfemg7XG5cdFx0fVxuXHRcdGVsc2UgaWYobGFuZyA9PSAnemgtVFcnKXtcblx0XHRcdGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX3poX1RXO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21tYW5kX25hbWVfbWFwO1xuXHR9XG5cblx0dXBkYXRlVXNlckNvbnZlcnRSdWxlKGlkeDogbnVtYmVyLCBiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZykge1xuXHRcdGlmIChpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3RbaWR4XVswXSA9IGJlZm9yZTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2lkeF1bMV0gPSBhZnRlcjtcblx0XHR0aGlzLnJlZnJlc2hVc2VyQ29udmVydFJ1bGUoKTtcblx0fVxuXG5cdGdldEVkaXRvciA9ICgpOiBFZGl0b3IgfCBudWxsID0+IHtcblx0XHRsZXQgZWRpdG9yID0gbnVsbDtcblx0XHRsZXQgbWFya2Rvd25WaWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcblx0XHRpZiAobWFya2Rvd25WaWV3KSB7XG5cdFx0XHRlZGl0b3IgPSBtYXJrZG93blZpZXcuZWRpdG9yO1xuXHRcdH1cblx0XHRpZiAoZWRpdG9yID09PSBudWxsKSBjb25zb2xlLmxvZygnY2FuXFwndCBnZXQgZWRpdG9yJyk7XG5cdFx0cmV0dXJuIGVkaXRvcjtcblx0fVxuXG5cdGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcblx0XHR0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcblx0fVxuXG5cdGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcblx0XHRhd2FpdCB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xuXHR9XG59IiwgImltcG9ydCB7IE5vdGljZX0gZnJvbSBcIm9ic2lkaWFuXCJcbmltcG9ydCB7IEVhc3lUeXBpbmdTZXR0aW5ncywgV29ya01vZGUgfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHsgQW5ub3RhdGlvbiwgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dCwgTGluZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IG9mZnNldFRvUG9zLCBwb3NUb09mZnNldCwgc3RyaW5nRGVsZXRlQXQsIHN0cmluZ0luc2VydEF0LCBpc1BhcmFtRGVmaW5lZH0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IHN5bnRheFRyZWUgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcblxuZXhwb3J0IGVudW0gTGluZVR5cGUgeyB0ZXh0ID0gJ3RleHQnLCBjb2RlYmxvY2sgPSAnY29kZWJsb2NrJywgZm9ybXVsYSA9ICdmb3JtdWxhJywgXG4gICAgICAgICAgICAgICAgICAgICAgICBub25lID0gJ25vbmUnLCBmcm9udG1hdHRlcj1cImZyb250bWF0dGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdW90ZT0ncXVvdGUnLCBjYWxsb3V0X3RpdGxlPSdjYWxsb3V0X3RpdGxlJywgbGlzdD0nbGlzdCcgfVxuXG5leHBvcnQgZW51bSBTcGFjZVN0YXRlIHtcbiAgICBub25lLFxuICAgIHNvZnQsXG4gICAgc3RyaWN0XG59XG5cbmV4cG9ydCBlbnVtIElubGluZVR5cGUge1xuICAgIHRleHQgPSAndGV4dCcsIGNvZGUgPSAnY29kZScsIGZvcm11bGEgPSAnZm9ybXVsYScsXG4gICAgd2lraWxpbmsgPSAnd2lraWxpbmsnLCBtZGxpbmsgPSBcIm1kbGlua1wiLFxuICAgIHVzZXIgPSAndXNlci1kZWZpbmVkJywgbm9uZSA9ICdub25lJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElubGluZUNoYW5nZSB7XG4gICAgdGV4dDogc3RyaW5nLFxuICAgIGJlZ2luOiBudW1iZXIsXG4gICAgZW5kOiBudW1iZXIsXG4gICAgb3JpZ2luOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcnRpY2xlUGFydCB7XG4gICAgdHlwZTogTGluZVR5cGU7XG4gICAgYmVnaW46IG51bWJlcjtcbiAgICBlbmQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElubGluZVBhcnQge1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICB0eXBlOiBJbmxpbmVUeXBlO1xuICAgIGJlZ2luOiBudW1iZXI7XG4gICAgZW5kOiBudW1iZXI7XG4gICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZTtcbiAgICByaWdodFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZTtcbn1cblxuZXhwb3J0IGNsYXNzIExpbmVGb3JtYXRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7IH1cbiAgICBzeW50YXhUcmVlTm9kZU5hbWVUeXBlKG5hbWU6c3RyaW5nKTpJbmxpbmVUeXBle1xuICAgICAgICBpZihuYW1lLmNvbnRhaW5zKCdjb2RlJykgJiYgIW5hbWUuY29udGFpbnMoXCJsaW5rXCIpKXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLmNvZGU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihuYW1lLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICAgICAgcmV0dXJuIElubGluZVR5cGUuZm9ybXVsYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgICAgcmV0dXJuIElubGluZVR5cGUudGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHBhcmFtIGxpbmVOdW06IDEtYmFzZWQgbGluZSBudW1iZXJcbiAgICBwYXJzZUxpbmVXaXRoU3ludGF4VHJlZShzdGF0ZTogRWRpdG9yU3RhdGUsIGxpbmVOdW06bnVtYmVyLCByZWdSZWdFeHA/OiBzdHJpbmcpe1xuICAgICAgICBsZXQgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYTogSW5saW5lUGFydFtdID0gW107XG4gICAgICAgIGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bSk7XG4gICAgICAgIGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcbiAgICAgICAgbGV0IHBvcyA9IGxpbmUuZnJvbTtcbiAgICAgICAgbGV0IHByZXZOb2RlVHlwZTpJbmxpbmVUeXBlID0gSW5saW5lVHlwZS5ub25lO1xuICAgICAgICBsZXQgcHJldkJlZ2luSWR4ID0gMDtcbiAgICAgICAgd2hpbGUocG9zPGxpbmUudG8pe1xuICAgICAgICAgICAgbGV0IG5vZGUgPSB0cmVlLnJlc29sdmUocG9zLCAxKTtcbiAgICAgICAgICAgIGxldCBjdXJOb2RlVHlwZSA9IHRoaXMuc3ludGF4VHJlZU5vZGVOYW1lVHlwZShub2RlLm5hbWUpXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKHByZXZOb2RlVHlwZT09SW5saW5lVHlwZS5ub25lKXtcbiAgICAgICAgICAgICAgICBwcmV2Tm9kZVR5cGU9Y3VyTm9kZVR5cGU7XG4gICAgICAgICAgICAgICAgcHJldkJlZ2luSWR4PTA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKHByZXZOb2RlVHlwZT09Y3VyTm9kZVR5cGUpe31cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDpsaW5lLnRleHQuc3Vic3RyaW5nKHByZXZCZWdpbklkeCwgcG9zLWxpbmUuZnJvbSksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6cHJldk5vZGVUeXBlLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjpwcmV2QmVnaW5JZHgsXG4gICAgICAgICAgICAgICAgICAgIGVuZDpwb3MtbGluZS5mcm9tLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBwcmV2Tm9kZVR5cGUgPSBjdXJOb2RlVHlwZTtcbiAgICAgICAgICAgICAgICBwcmV2QmVnaW5JZHggPSBwb3MtbGluZS5mcm9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdXBkYXRlIG5leHQgcG9zXG4gICAgICAgICAgICBpZiAoY3VyTm9kZVR5cGUgPT0gSW5saW5lVHlwZS50ZXh0KXtcbiAgICAgICAgICAgICAgICBwb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgcG9zID0gbm9kZS50bztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYocG9zPT1saW5lLnRvKXtcbiAgICAgICAgICAgICAgICBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OmxpbmUudGV4dC5zdWJzdHJpbmcocHJldkJlZ2luSWR4LCBwb3MtbGluZS5mcm9tKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTpwcmV2Tm9kZVR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOnByZXZCZWdpbklkeCxcbiAgICAgICAgICAgICAgICAgICAgZW5kOnBvcy1saW5lLmZyb20sXG4gICAgICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTpTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwibGluZSBwYXJ0czogXCIsIGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGEpO1xuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgbGV0IHJldEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS50eXBlICE9IElubGluZVR5cGUudGV4dCkge1xuICAgICAgICAgICAgICAgIHJldEFycmF5LnB1c2gobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgdGVtcEFycmF5OiBJbmxpbmVQYXJ0W107XG4gICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHJlZ1JlZ0V4cCkpXG4gICAgICAgICAgICAgICAgICAgIHRlbXBBcnJheSA9IHNwbGl0VGV4dFdpdGhMaW5rQW5kVXNlckRlZmluZWQobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS5jb250ZW50LCByZWdSZWdFeHApO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGVtcEFycmF5ID0gc3BsaXRUZXh0V2l0aExpbmtBbmRVc2VyRGVmaW5lZChsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmNvbnRlbnQpO1xuICAgIFxuICAgICAgICAgICAgICAgIHRlbXBBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmJlZ2luICs9IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uYmVnaW47XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZW5kICs9IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uYmVnaW47XG4gICAgICAgICAgICAgICAgICAgIHJldEFycmF5LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2cocmV0QXJyYXkpXG4gICAgICAgIHJldHVybiByZXRBcnJheTtcbiAgICB9XG5cbiAgICBmb3JtYXRMaW5lT2ZEb2Moc3RhdGU6IEVkaXRvclN0YXRlLCBzZXR0aW5nczogRWFzeVR5cGluZ1NldHRpbmdzLCBmcm9tQjogbnVtYmVyLCB0b0I6IG51bWJlciwgaW5zZXJ0ZWRTdHI6IHN0cmluZyk6IFtUcmFuc2FjdGlvblNwZWNbXSwgVHJhbnNhY3Rpb25TcGVjXSB8IG51bGwge1xuICAgICAgICBsZXQgZG9jID0gc3RhdGUuZG9jO1xuICAgICAgICBsZXQgbGluZSA9IGRvYy5saW5lQXQoZnJvbUIpLnRleHQ7XG4gICAgICAgIGxldCByZXMgPSBudWxsXG4gICAgICAgIGlmIChpbnNlcnRlZFN0ci5jb250YWlucyhcIlxcblwiKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVzID0gdGhpcy5mb3JtYXRMaW5lKHN0YXRlLCBkb2MubGluZUF0KGZyb21CKS5udW1iZXIsIHNldHRpbmdzLCBvZmZzZXRUb1Bvcyhkb2MsIGZyb21CKS5jaCwgb2Zmc2V0VG9Qb3MoZG9jLCBmcm9tQikuY2gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgcmVzID0gdGhpcy5mb3JtYXRMaW5lKHN0YXRlLCBkb2MubGluZUF0KGZyb21CKS5udW1iZXIsIHNldHRpbmdzLCBvZmZzZXRUb1Bvcyhkb2MsIHRvQikuY2gsIG9mZnNldFRvUG9zKGRvYywgZnJvbUIpLmNoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzID09PW51bGwgfHwgcmVzWzJdLmxlbmd0aD09MCkgcmV0dXJuIG51bGw7XG4gICAgICAgIFxuICAgICAgICBsZXQgbmV3bGluZSA9IHN0cmluZ0luc2VydEF0KHJlc1swXSwgcmVzWzFdLCBcInxcIik7XG4gICAgICAgIC8vIGlmIChzZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCJFYXN5VHlwaW5nOiBOZXcgTGluZSBTdHJpbmc6XCIsIG5ld2xpbmUpXG5cbiAgICAgICAgbGV0IGNoYW5nZXM6IFRyYW5zYWN0aW9uU3BlY1tdID0gW107XG4gICAgICAgIGxldCBvZmZzZXQgPSBkb2MubGluZUF0KGZyb21CKS5mcm9tO1xuXG4gICAgICAgIGZvcihsZXQgY2hhbmdlSXRlbSBvZiByZXNbMl0pXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgY2hhbmdlczp7ZnJvbTogb2Zmc2V0K2NoYW5nZUl0ZW0uYmVnaW4sIHRvOm9mZnNldCtjaGFuZ2VJdGVtLmVuZCwgaW5zZXJ0OmNoYW5nZUl0ZW0udGV4dH0sIHVzZXJFdmVudDpcIkVhc3lUeXBpbmcuY2hhbmdlXCJcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluc2VydGVkU3RyLmNvbnRhaW5zKFwiXFxuXCIpKXtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiaW5zZXJ0U3RyXCIsIGluc2VydGVkU3RyKVxuICAgICAgICAgICAgcmVzWzFdKz0gaW5zZXJ0ZWRTdHIubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbY2hhbmdlcywge3NlbGVjdGlvbjp7YW5jaG9yOm9mZnNldCtyZXNbMV19LCB1c2VyRXZlbnQ6XCJFYXN5VHlwaW5nLmNoYW5nZVwifV07XG4gICAgfVxuXG4gICAgLy8gXHU4RkQ0XHU1NkRFXHU1MDNDXHVGRjFBIFtcdTY3MDBcdTdFQzhcdTc2ODRcdTg4NENcdUZGMENcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTUxODVcdTVCQjlcdTY1MzlcdTUzRDhdXG4gICAgLy8gcGFyYW0gbGluZU51bTogMS1iYXNlZCBsaW5lIG51bWJlclxuICAgIGZvcm1hdExpbmUoc3RhdGU6IEVkaXRvclN0YXRlLCBsaW5lTnVtOm51bWJlciwgc2V0dGluZ3M6IEVhc3lUeXBpbmdTZXR0aW5ncywgY3VyQ2g6IG51bWJlciwgcHJldkNoPzogbnVtYmVyKTogW3N0cmluZywgbnVtYmVyLCBJbmxpbmVDaGFuZ2VbXV0gfCBudWxsIHtcbiAgICAgICAgLy8gbmV3IE5vdGljZShcImZvcm1hdC1ub3dcIik7XG4gICAgICAgIGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bSkudGV4dDtcbiAgICAgICAgbGV0IHJlZ051bGwgPSAvXlxccyokL2c7XG4gICAgICAgIGlmIChyZWdOdWxsLnRlc3QobGluZSkpIHJldHVybiBbbGluZSwgY3VyQ2gsIFtdXTtcbiAgICAgICAgLy8gMS4gXHU1MjEyXHU1MjA2XHU0RTAwXHU4ODRDXHU2NTg3XHU1QjU3XHU3Njg0XHU1MTg1XHU5MEU4XHU0RTBEXHU1NDBDXHU2QTIxXHU1NzU3XHU1MzNBXHU1N0RGXG4gICAgICAgIGxldCBsaW5lUGFydHM6IElubGluZVBhcnRbXTtcbiAgICAgICAgaWYgKHNldHRpbmdzLlVzZXJEZWZpbmVkUmVnU3dpdGNoKSB7XG4gICAgICAgICAgICAvLyBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZShsaW5lLCBzZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ0V4cCk7XG4gICAgICAgICAgICBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZVdpdGhTeW50YXhUcmVlKHN0YXRlLCBsaW5lTnVtLCBzZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ0V4cCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZShsaW5lKTtcbiAgICAgICAgICAgIGxpbmVQYXJ0cyA9IHRoaXMucGFyc2VMaW5lV2l0aFN5bnRheFRyZWUoc3RhdGUsIGxpbmVOdW0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIChzZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCJsaW5lIHBhcnRzXFxuXCIsIGxpbmVQYXJ0cyk7XG5cbiAgICAgICAgLy8gXHU1OTA3XHU0RUZEXHU1MzlGXHU2NzY1XHU3Njg0bGluZVBhcnRzLCBcdTZERjFcdTYyRjdcdThEMURcbiAgICAgICAgbGV0IGxpbmVQYXJ0c09yaWdpbiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGluZVBhcnRzKSk7XG4gICAgICAgIGxldCBpbmxpbmVDaGFuZ2VMaXN0OiBJbmxpbmVDaGFuZ2VbXSA9IFtdO1xuXG4gICAgICAgIGxldCBjdXJzb3JMaW5lUGFydEluZGV4ID0gLTE7XG4gICAgICAgIGxldCBjdXJzb3JSZWxhdGl2ZUluZGV4ID0gLTE7XG4gICAgICAgIGxldCByZXN1bHRDdXJzb3JDaCA9IDA7ICAgICAvLyBcdThGOTNcdTUxRkFcdTc2ODRcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcblxuICAgICAgICAvLyAyLiBcdTYyN0VcdTUyMzBcdTUxNDlcdTY4MDdcdTYyNDBcdTU3MjhcdTc2ODRcdTkwRThcdTUyMDZcdUZGMENcdTU5ODJcdTY3OUNcdTY2MkYgSW5saW5lUGFydC50ZXh0XHVGRjBDXHU1MjE5XHU1NzI4XHU1MTQ5XHU2ODA3XHU1OTA0XHU2M0QyXHU1MTY1J1xcMCdcdTY3NjVcdTY4MDdcdThCQjBcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChjdXJDaCA+IGxpbmVQYXJ0c1tpXS5iZWdpbiAmJiBjdXJDaCA8PSBsaW5lUGFydHNbaV0uZW5kKSB7XG4gICAgICAgICAgICAgICAgY3Vyc29yTGluZVBhcnRJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgY3Vyc29yUmVsYXRpdmVJbmRleCA9IGN1ckNoIC0gbGluZVBhcnRzW2ldLmJlZ2luO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0udHlwZSA9PT0gSW5saW5lVHlwZS50ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gc3RyaW5nSW5zZXJ0QXQobGluZVBhcnRzW2ldLmNvbnRlbnQsIGN1cnNvclJlbGF0aXZlSW5kZXgsICdcXDAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdExpbmUgPSAnJztcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIC8vIFx1NEZERFx1NUI1OFx1NTI0RFx1NEUwMFx1OTBFOFx1NTIwNlx1NzY4NFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1RkYwQ0lubGluZVR5cGUubm9uZSBcdTRFRTNcdTg4NjhcdTRFMDBcdTg4NENcdTc2ODRcdTVGMDBcdTU5Q0JcbiAgICAgICAgbGV0IHByZXZQYXJ0VHlwZTogc3RyaW5nID0gSW5saW5lVHlwZS5ub25lO1xuICAgICAgICBsZXQgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuXG4gICAgICAgIC8vIDMuIFx1OTA0RFx1NTM4Nlx1NkJDRlx1NEUyQVx1ODg0Q1x1OTBFOFx1NTIwNlx1RkYwQ1x1OEZEQlx1ODg0Q1x1NjgzQ1x1NUYwRlx1NTMxNlx1NTkwNFx1NzQwNlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgLy8gMy4xIFx1NTk4Mlx1Njc5Q1x1ODg0Q1x1NTE4NVx1N0IyQ1x1NEUwMFx1OTBFOFx1NTIwNlx1NEUzQVx1NjU4N1x1NjcyQ1x1RkYwQ1x1NTIxOVx1NTkwNFx1NzQwNlx1NTNFNVx1OTk5Nlx1NUI1N1x1NkJDRFx1NTkyN1x1NTE5OVx1NzY4NFx1OTBFOFx1NTIwNlxuICAgICAgICAgICAgaWYgKGkgPT09IDAgJiYgbGluZVBhcnRzW2ldLnR5cGUgPT09IElubGluZVR5cGUudGV4dCAmJiBzZXR0aW5ncy5BdXRvQ2FwaXRhbCkge1xuICAgICAgICAgICAgICAgIC8vIDMuMS4xIFx1NTk4Mlx1Njc5QyBwcmV2Q3Vyc29yIFx1NEUxNFx1NTE0OVx1NjgwN1x1NEUwRFx1NTcyOFx1NkI2NFx1OTBFOFx1NTIwNlx1RkYwQ1x1NTIxOVx1OERGM1x1OEZDN1xuICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIGN1cnNvckxpbmVQYXJ0SW5kZXggIT0gMCkgeyB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdGaXJzdFNlbnRlbmNlID0gL15cXHMqKFxcLSAoXFxbW3ggXVxcXSApPyk/XHUyMDFDP1thLXpcXHUwNDAxXFx1MDQ1MVxcdTA0MTAtXFx1MDQ0Zl0vZztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ0hlYWRlclNlbnRlbmNlID0gL14oIysgfD4rID98XHUyMDFDKVthLXpcXHUwNDAxXFx1MDQ1MVxcdTA0MTAtXFx1MDQ0Zl0vZztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRleHRjb3B5ID0gbGluZVBhcnRzWzBdLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZ0ZpcnN0U2VudGVuY2UuZXhlYyh0ZXh0Y29weSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaEhlYWRlciA9IHJlZ0hlYWRlclNlbnRlbmNlLmV4ZWModGV4dGNvcHkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZHN0Q2hhckluZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHN0Q2hhckluZGV4ID0gcmVnRmlyc3RTZW50ZW5jZS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkc3RDaGFySW5kZXggPSByZWdIZWFkZXJTZW50ZW5jZS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkF1dG9DYXBpdGFsTW9kZSA9PSBXb3JrTW9kZS5HbG9iYWxseSB8fCAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiBkc3RDaGFySW5kZXggPj0gcHJldkNoICYmIGRzdENoYXJJbmRleCA8IGN1ckNoKSkgeyB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHN0Q2hhckluZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZHN0Q2hhckluZGV4ICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1swXS5jb250ZW50ID0gdGV4dGNvcHkuc3Vic3RyaW5nKDAsIGRzdENoYXJJbmRleCkgKyB0ZXh0Y29weS5jaGFyQXQoZHN0Q2hhckluZGV4KS50b1VwcGVyQ2FzZSgpICsgdGV4dGNvcHkuc3Vic3RyaW5nKGRzdENoYXJJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGxpbmVQYXJ0c1tpXS50eXBlKSB7XG4gICAgICAgICAgICAgICAgLy8gMy4yLjEgXHU1OTA0XHU3NDA2XHU2NTg3XHU2NzJDXHU1MzNBXHU1NzU3XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuNCBcdTU5MDRcdTc0MDZcdTUzRTVcdTk5OTZcdTVCNTdcdTZCQ0RcdTU5MjdcdTUxOTlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkF1dG9DYXBpdGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVnID0gL1tcXC5cXD9cXCFcdTMwMDJcdUZGMDFcdUZGMUZdKFtcXHNdKilbYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZy5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wSW5kZXggPSByZWcubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInByZXZDaCwgY3VyQ2gsIG9mZnNldCwgdGVtcEluZGV4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocHJldkNoLCBjdXJDaCwgb2Zmc2V0LCB0ZW1wSW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlzU3BhY2VEb3QgPSB0ZW1wSW5kZXgtMjwwIHx8IGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleC0yLCB0ZW1wSW5kZXgpPT0nIC4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUgPT0gV29ya01vZGUuR2xvYmFsbHkgJiYgIWlzU3BhY2VEb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgY29udGVudC5jaGFyQXQodGVtcEluZGV4KS50b1VwcGVyQ2FzZSgpICsgY29udGVudC5zdWJzdHJpbmcocmVnLmxhc3RJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiB0ZW1wSW5kZXggPj0gcHJldkNoIC0gb2Zmc2V0ICYmIHRlbXBJbmRleCA8IGN1ckNoIC0gb2Zmc2V0ICYmICFpc1NwYWNlRG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleCkudG9VcHBlckNhc2UoKSArIGNvbnRlbnQuc3Vic3RyaW5nKHJlZy5sYXN0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9ICAgXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dC4xIFx1NTkwNFx1NzQwNlx1NEUyRFx1ODJGMVx1NjU4N1x1NEU0Qlx1OTVGNFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQ2hpbmVzZUVuZ2xpc2hTcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzEgPSAvKFtBLVphLXpdKShbXFx1NGUwMC1cXHU5ZmE1XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMiA9IC8oW1xcdTRlMDAtXFx1OWZhNV0pKFtBLVphLXpdKS9naTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5yZXBsYWNlKHJlZzEsIFwiJDEgJDJcIikucmVwbGFjZShyZWcyLCBcIiQxICQyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkNoaW5lc2VOdW1iZXJTcGFjZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbMC05XSkoW1xcdTRlMDAtXFx1OWZhNV0pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZy5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wSW5kZXggPSByZWcubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiB0ZW1wSW5kZXggPj0gcHJldkNoIC0gb2Zmc2V0ICYmIHRlbXBJbmRleCA8IGN1ckNoIC0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJDaCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcxID0gLyhbXFx1NGUwMC1cXHU5ZmE1XSkoWzAtOV0pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZzEuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnMS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkVuZ2xpc2hOdW1iZXJTcGFjZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbQS1aYS16XSkoXFxkKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMSA9IC8oXFxkKShbQS1aYS16XSkvZztcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnMS5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wSW5kZXggPSByZWcxLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjIgXHU1OTA0XHU3NDA2XHU0RTJEXHU2NTg3XHU5NUY0XHU2NUUwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5DaGluZXNlTm9TcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oW1xcdTRlMDAtXFx1OWZhNVx1RkYwQ1x1MzAwMlx1MzAwMVx1RkYxQlx1MjAxOFx1MjAxOVx1MzAwQVx1MzAwQl0rKShcXHMrKShbXFx1NGUwMC1cXHU5ZmE1XHVGRjBDXHUzMDAyXHUzMDAxXHVGRjFCXHUyMDE4XHUyMDE5XHUzMDBBXHUzMDBCXSspL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmVnLmV4ZWMoY29udGVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShyZWcsIFwiJDEkM1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBcdTY4MDdcdTcwQjlcdTRFMEVcdTY1ODdcdTY3MkNcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRleHQuMyBcdTU5MDRcdTc0MDZcdTY4MDdcdTcwQjlcdTRFMEVcdTY1ODdcdTY3MkNcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmKHNldHRpbmdzLkVuZ2xpc2hTcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbLFxcLjtcXD9cXCFcXCldKShbMC05QS1aYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdKXwoW0EtWmEtejAtOVxcdTRlMDAtXFx1OWZhNTosXFwuXFw/XFwhJ1wiXSspKFxcKCl8WyxcXC47XFw/OiFdW1xcdTRlMDAtXFx1OWZhNV0vZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc1NwYWNlRG90ID0gJyEuPzssJy5jb250YWlucyhjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgtMSkpICYmICh0ZW1wSW5kZXgtMjwwIHx8IGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleC0yKT09JyAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlzTnVtUHVuY051bSA9IC9bLC5dXFxkLy50ZXN0KGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleC0xLCB0ZW1wSW5kZXgrMSkpICYmIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZW1wSW5kZXgtMjwwIHx8IC9cXGQvLnRlc3QoY29udGVudC5jaGFyQXQodGVtcEluZGV4LTIpKSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuUHVuY3R1YXRpb25TcGFjZU1vZGUgPT0gV29ya01vZGUuR2xvYmFsbHkgJiYgIWlzU3BhY2VEb3QgJiYgIWlzTnVtUHVuY051bSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiB0ZW1wSW5kZXggPj0gcHJldkNoIC0gb2Zmc2V0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRlbXBJbmRleCA8IGN1ckNoIC0gb2Zmc2V0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFpc1NwYWNlRG90ICYmICFpc051bVB1bmNOdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFx1NTM1NVx1NzJFQ1x1NTkwNFx1NzQwNlx1NTE5Mlx1NTNGN1x1NTQwRVx1NjU4N1x1NjcyQ1x1NzY4NFx1ODFFQVx1NTJBOFx1N0E3QVx1NjgzQ1x1RkYwQ1x1NEUzQVx1NEU4Nlx1NTE3Q1x1NUJCOSA6ZW1vamk6IFx1NjgzQ1x1NUYwRlx1NzY4NFx1OEY5M1x1NTE2NVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcyID0gLyg6KShbQS1aYS16MC05X10rWyAsXFwuXFw/XFxcXFxcLzsnXCJcdUZGMENcdTMwMDJcdUZGMUZcdUZGMUJcdTIwMThcdTIwMUNcdTIwMURcdTIwMTlcdTMwMDFcXFtcXF1cXC1cXHtcXH1dKS9naTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShyZWcyLCBcIiQxICQyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWczID0gLyg6KShbXCInXSkvZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShyZWczLCBcIiQxICQyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuNyBcdTVGOTdcdTUyMzBcdTY1ODdcdTY3MkNcdTkwRThcdTUyMDZcdTY2MkZcdTU0MjZcdTRFRTVcdTdBN0FcdTc2N0RcdTdCMjZcdTVGMDBcdTU5Q0JcdTYyMTZcdTdFRDNcdTY3NUZcdUZGMENcdTc1MjhcdTY3NjVcdTUyMjRcdTY1QURcdTU0MEVcdTdFRURcdTY1ODdcdTY3MkNcdTUyNERcdTU0MEVcdTY2MkZcdTU0MjZcdTk3MDBcdTg5ODFcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0cmljdFNwYWNlU3RhcnQgPSAvXlxcMD9cXHMvO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnU3RyaWN0U3BhY2VFbmQgPSAvXFxzXFwwPyQvO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnU3RhcnRXaXRoU3BhY2UgPSAvXlxcMD9bXFxzLFxcLjtcXD9cXCFcdUZGMENcdTMwMDJcdUZGMUJcdTMwMEJcdUZGMUZcdUZGMUE6XHVGRjAxflxcKlx1MzAwMVx1RkYwOFx1RkYwOVwiXHUyMDFEXFxdXFwpXFx9XS87XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdFbmRXaXRoU3BhY2UgPSAvW1xcc1x1RkYwQ1x1MzAwMlx1MzAwMVx1RkYxQVx1RkYxQlx1RkYxRlx1RkYwMVx1RkYwOFx1RkYwOX5cXCpcIlx1MzAwQVx1MjAxQ1xcW1xcKFxce11cXDA/JC87XG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHRTdGFydFNwYWNlU2F0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHR4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdTdGFydFdpdGhTcGFjZS50ZXN0KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVnU3RyaWN0U3BhY2VTdGFydC50ZXN0KGNvbnRlbnQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dFN0YXJ0U3BhY2VTYXRlID0gU3BhY2VTdGF0ZS5zdHJpY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRTdGFydFNwYWNlU2F0ZSA9IFNwYWNlU3RhdGUuc29mdFxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ0VuZFdpdGhTcGFjZS50ZXN0KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVnU3RyaWN0U3BhY2VFbmQudGVzdChjb250ZW50KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5zdHJpY3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUuc29mdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuOCBcdTY4MzlcdTYzNkVcdTUyNERcdTRFMDBcdTkwRThcdTUyMDZcdTc2ODRcdTUzM0FcdTU3NTdcdTdDN0JcdTU3OEJcdTU5MDRcdTc0MDZcdTdBN0FcdTY4M0NcdTZERkJcdTUyQTBcdTc2ODRcdTk1RUVcdTk4OThcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwcmV2UGFydFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5ub25lOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZSA+IHR4dFN0YXJ0U3BhY2VTYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gJyAnICsgY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlID4gdHh0U3RhcnRTcGFjZVNhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlICYmIHR4dFN0YXJ0U3BhY2VTYXRlID09IFNwYWNlU3RhdGUubm9uZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0VGV4dEJlZ2luID0gY29udGVudC5jaGFyQXQoMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdNZExpbmtFbmQgPSAvXFxdLztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdExpbmtFbmRJbmRleCA9IGxpbmVQYXJ0c1tpIC0gMV0uY29udGVudC5zZWFyY2gocmVnTWRMaW5rRW5kKSAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rRW5kID0gbGluZVBhcnRzW2kgLSAxXS5jb250ZW50LmNoYXJBdChjaGFyQXRMaW5rRW5kSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hhckF0TGlua0VuZCA9PT0gJ1snKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR3b05laWdoYm9yQ2hhcnMgPSBjaGFyQXRMaW5rRW5kICsgY2hhckF0VGV4dEJlZ2luO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnTm90TmVlZFNwYWNlID0gL1tcXHU0ZTAwLVxcdTlmYTVcdUZGMENcdTMwMDJcdUZGMUZcdUZGMUFcdUZGMUJcdTIwMURcdTIwMUNcdTIwMTlcdTIwMTgtXHVGRjA5fV1bXFx1NGUwMC1cXHU5ZmE1XS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZ05vdE5lZWRTcGFjZS50ZXN0KHR3b05laWdoYm9yQ2hhcnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2kgLSAxXS5yaWdodFNwYWNlUmVxdWlyZSA+IHR4dFN0YXJ0U3BhY2VTYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gJyAnICsgY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuOSBcdTU5ODJcdTY3OUNcdTUxNDlcdTY4MDdcdTU3MjhcdThCRTVcdTUzM0FcdTU3NTdcdUZGMENcdTUyMTlcdThCQTFcdTdCOTdcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTc2ODRcdTRGNERcdTdGNkVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcgPSAnXFwwJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuID0gY29udGVudC5zZWFyY2gocmVnKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q3Vyc29yQ2ggPSBvZmZzZXQgKyBuO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gXHU1MjIwXHU5NjY0IFxcMFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBzdHJpbmdEZWxldGVBdChjb250ZW50LCBuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gdHh0RW5kU3BhY2VTdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8gMy4yLjIgXHU1OTA0XHU3NDA2XHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxXHU1NzU3XHU5MEU4XHU1MjA2XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgIC8vIENvZGUuMSBcdTY4MzlcdTYzNkVcdTUyNERcdTRFMDBcdTUzM0FcdTU3NTdcdTdDN0JcdTU3OEJcdTU0OENzZXR0aW5nc1x1NkRGQlx1NTJBMFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2gocHJldlBhcnRUeXBlKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlID4gcHJldlRleHRFbmRTcGFjZVN0YXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLnJpZ2h0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIENvZGUuMiBcdTU5ODJcdTY3OUNcdTUxNDlcdTY4MDdcdTU3MjhcdThCRTVcdTUzM0FcdTU3NTdcdUZGMENcdTUyMTlcdThCQTFcdTdCOTdcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTc2ODRcdTRGNERcdTdGNkVcbiAgICAgICAgICAgICAgICAgICAgaWYoaSA9PT0gY3Vyc29yTGluZVBhcnRJbmRleClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q3Vyc29yQ2ggPSBvZmZzZXQgKyBjdXJzb3JSZWxhdGl2ZUluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIENvZGUuMyBcdTUzRDhcdTkxQ0ZcdTY2RjRcdTY1QjBcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcHJldlBhcnRUeXBlID0gSW5saW5lVHlwZS5jb2RlO1xuICAgICAgICAgICAgICAgICAgICBwcmV2VGV4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDMuMi4zIFx1NTkwNFx1NzQwNlx1ODg0Q1x1NTE4NVx1NTE2Q1x1NUYwRlx1NzY4NFx1OTBFOFx1NTIwNlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JtdWxhLjEgXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1NDhDc2V0dGluZ3NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5wcmV2VGV4dEVuZFNwYWNlU3RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JtdWxhLjIgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JtdWxhLjMgXHU1M0Q4XHU5MUNGXHU2NkY0XHU2NUIwXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUuZm9ybXVsYTtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2gocHJldlBhcnRUeXBlKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2VGV4dEVuZFNwYWNlU3RhdGU+c2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU9PVNwYWNlU3RhdGUuc3RyaWN0ICYmIHByZXZUZXh0RW5kU3BhY2VTdGF0ZTxTcGFjZVN0YXRlLnN0cmljdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlICYmIHByZXZUZXh0RW5kU3BhY2VTdGF0ZT09U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ05vTmVlZFNwYWNlID0gL1tcXHU0ZTAwLVxcdTlmYTVdW1xcdTRlMDAtXFx1OWZhNV0vZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdFRleHRFbmQgPSBsaW5lUGFydHNbaS0xXS5jb250ZW50LmNoYXJBdChsaW5lUGFydHNbaS0xXS5jb250ZW50Lmxlbmd0aC0xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdExpbmtCZWdpbjpzdHJpbmcgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLnR5cGU9PUlubGluZVR5cGUud2lraWxpbmspXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdBbGlhcyA9IC9cXHwvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJPZkFsaWFzQmVnaW4gPSBsaW5lUGFydHNbaV0uY29udGVudC5zZWFyY2gocmVnQWxpYXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJjaGFyT2ZBbGlhc0JlZ2luXCIsY2hhck9mQWxpYXNCZWdpbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiZWdpbkluZGV4ID0gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxpbmVQYXJ0c1tpXS5jb250ZW50LmNoYXJBdCgwKT09PSchJykgYmVnaW5JbmRleD0zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJPZkFsaWFzQmVnaW4hPS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luSW5kZXggPSBjaGFyT2ZBbGlhc0JlZ2luKzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQXRMaW5rQmVnaW4gPSBsaW5lUGFydHNbaV0uY29udGVudC5jaGFyQXQoYmVnaW5JbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImJlZ2luSW5kZXhcIiwgYmVnaW5JbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjaGFyQXRMaW5rQmVnaW49PSddJykgYnJlYWs7ICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnTWRMaW5rQmVnaW4gPSAvXFxbLztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rQmVnaW5JbmRleCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50LnNlYXJjaChyZWdNZExpbmtCZWdpbikrMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJBdExpbmtCZWdpbiA9IGxpbmVQYXJ0c1tpXS5jb250ZW50LmNoYXJBdChjaGFyQXRMaW5rQmVnaW5JbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjaGFyQXRMaW5rQmVnaW49PT0nXScpIGJyZWFrOyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR3b05laWdoYm9yQ2hhcnMgPSBjaGFyQXRUZXh0RW5kK2NoYXJBdExpbmtCZWdpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIXJlZ05vTmVlZFNwYWNlLnRlc3QodHdvTmVpZ2hib3JDaGFycykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKCFzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPnByZXZUZXh0RW5kU3BhY2VTdGF0ZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIExpbmsuMiBcdTU5ODJcdTY3OUNcdThCRTVcdTUzM0FcdTU3NTdcdTY3MDlcdTUxNDlcdTY4MDdcdUZGMENcdTUyMTlcdThCQTFcdTdCOTdcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcbiAgICAgICAgICAgICAgICAgICAgaWYoaSA9PT0gY3Vyc29yTGluZVBhcnRJbmRleClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q3Vyc29yQ2ggPSBvZmZzZXQgKyBjdXJzb3JSZWxhdGl2ZUluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIExpbmsuMyBcdTY2RjRcdTY1QjBcdTUzRDhcdTkxQ0ZcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcHJldlBhcnRUeXBlID0gbGluZVBhcnRzW2ldLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8gMy4yLjUgXHU1OTA0XHU3NDA2XHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU1MzNBXHU1NzU3XHU3Njg0XHU5MEU4XHU1MjA2XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZXIuMSBcdTY4MzlcdTYzNkVcdTUyNERcdTRFMDBcdTUzM0FcdTU3NTdcdTdDN0JcdTU3OEJcdTU0OENzZXR0aW5nc1x1NkRGQlx1NTJBMFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2gocHJldlBhcnRUeXBlKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5wcmV2VGV4dEVuZFNwYWNlU3RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZXx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZXx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLnJpZ2h0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZXIuMiBcdTU5ODJcdTY3OUNcdThCRTVcdTUzM0FcdTU3NTdcdTY3MDlcdTUxNDlcdTY4MDdcdUZGMENcdTUyMTlcdThCQTFcdTdCOTdcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcbiAgICAgICAgICAgICAgICAgICAgaWYoaSA9PT0gY3Vyc29yTGluZVBhcnRJbmRleClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q3Vyc29yQ2ggPSBvZmZzZXQgKyBjdXJzb3JSZWxhdGl2ZUluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIExpbmsuMyBcdTY2RjRcdTY1QjBcdTUzRDhcdTkxQ0ZcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcHJldlBhcnRUeXBlID0gSW5saW5lVHlwZS51c2VyO1xuICAgICAgICAgICAgICAgICAgICBwcmV2VGV4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yKGxldCBpPTA7aTxsaW5lUGFydHMubGVuZ3RoO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYobGluZVBhcnRzW2ldLnR5cGUgPT09IElubGluZVR5cGUudGV4dCAmJiBsaW5lUGFydHNbaV0uY29udGVudCE9bGluZVBhcnRzT3JpZ2luW2ldLmNvbnRlbnQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBsaW5lUGFydHNbaV0uY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNPcmlnaW5baV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c09yaWdpbltpXS5lbmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46IGxpbmVQYXJ0c09yaWdpbltpXS5jb250ZW50XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgaW5saW5lQ2hhbmdlTGlzdCA9IGlubGluZUNoYW5nZUxpc3Quc29ydCgoYSwgYik6bnVtYmVyPT5hLmJlZ2luLWIuYmVnaW4pO1xuICAgICAgICByZXR1cm4gW3Jlc3VsdExpbmUsIHJlc3VsdEN1cnNvckNoLCBpbmxpbmVDaGFuZ2VMaXN0XTtcbiAgICB9XG4gICAgXG59XG5cblxuZXhwb3J0IGNsYXNzIE1hcmtkb3duUGFyc2Vye1xuICAgIGNvbnN0cnVjdG9yKCl7fVxuXG59XG5cbmZ1bmN0aW9uIG1hdGNoV2l0aFJlZyh0ZXh0OiBzdHJpbmcsIHJlZ0V4cDogUmVnRXhwLCB0eXBlOiBJbmxpbmVUeXBlLCBpbmxpbmVUeXBlQXJyYXk6IElubGluZVBhcnRbXSxcbiAgICBjaGVja0FycmF5ID0gZmFsc2UsIGxlZnRTcGFjZVJlOiBTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lLCByaWdodFNwYWNlUmU6IFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmUpOiBJbmxpbmVQYXJ0W10ge1xuICAgIGxldCByZXRBcnJheSA9IGlubGluZVR5cGVBcnJheTtcbiAgICBsZXQgbWF0Y2hBcnJheTogSW5saW5lUGFydFtdID0gW107XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5zb3J0KChhLCBiKTogbnVtYmVyID0+IGEuYmVnaW4gLSBiLmJlZ2luKTtcbiAgICAvLyBjb25zb2xlLmxvZygnYmVmb3JlLS0tLS0tLS0tLS1cXG4nLHJldEFycmF5KVxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGxldCBtYXRjaCA9IHJlZ0V4cC5leGVjKHRleHQpO1xuICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICAgICAgLy8gXHU2OEMwXHU2N0U1XHU1MUIyXHU3QTgxXG4gICAgICAgIGlmIChjaGVja0FycmF5KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYocmVnRXhwLmxhc3RJbmRleD5yZXRBcnJheVtpXS5iZWdpbiAmJiByZXRBcnJheVtpXS5lbmQ+bWF0Y2guaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWxpZCkgY29udGludWU7XG4gICAgICAgIG1hdGNoQXJyYXkucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBtYXRjaFswXSxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBtYXRjaC5pbmRleCxcbiAgICAgICAgICAgICAgICBlbmQ6IHJlZ0V4cC5sYXN0SW5kZXgsXG4gICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogbGVmdFNwYWNlUmUsXG4gICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IHJpZ2h0U3BhY2VSZVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgICByZXRBcnJheSA9IHJldEFycmF5LmNvbmNhdChtYXRjaEFycmF5KTtcbiAgICAvLyBjb25zb2xlLmxvZygnQWZ0ZXI9PT09PT09PT09PVxcbicsIHJldEFycmF5KTtcbiAgICByZXR1cm4gcmV0QXJyYXk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoV2l0aEFiYnIodGV4dDogc3RyaW5nLCB0eXBlOiBJbmxpbmVUeXBlLCBpbmxpbmVUeXBlQXJyYXk6IElubGluZVBhcnRbXSwgY2hlY2tBcnJheSA9IGZhbHNlKXtcbiAgICBsZXQgcmV0QXJyYXkgPSBpbmxpbmVUeXBlQXJyYXk7XG4gICAgbGV0IG1hdGNoQXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG4gICAgbGV0IHJlZ0FiYnIgPSAvKFthLXpBLVpdXFwuKSsvZztcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBsZXQgbWF0Y2ggPSByZWdBYmJyLmV4ZWModGV4dCk7XG4gICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgICAgICBsZXQgaXNJbkJsb2NrQmVnaW46Ym9vbGVhbiA9IChtYXRjaC5pbmRleD09MCk7XG4gICAgICAgIC8vIFx1NjhDMFx1NjdFNVx1NTFCMlx1N0E4MVxuICAgICAgICBpZiAoY2hlY2tBcnJheSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmKG1hdGNoLmluZGV4ID09IHJldEFycmF5W2ldLmVuZCl7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5CbG9ja0JlZ2luID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYocmVnQWJici5sYXN0SW5kZXg+cmV0QXJyYXlbaV0uYmVnaW4gJiYgcmV0QXJyYXlbaV0uZW5kPm1hdGNoLmluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmKCFpc0luQmxvY2tCZWdpbiAmJiB2YWxpZClcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlZ0NoYXIgPSAvW2EtekEtWjAtOV0vO1xuICAgICAgICAgICAgaWYocmVnQ2hhci50ZXN0KHRleHQuY2hhckF0KG1hdGNoLmluZGV4LTEpKSl7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsaWQpIGNvbnRpbnVlO1xuICAgICAgICBtYXRjaEFycmF5LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGVudDogbWF0Y2hbMF0sXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBiZWdpbjogbWF0Y2guaW5kZXgsXG4gICAgICAgICAgICAgICAgZW5kOiByZWdBYmJyLmxhc3RJbmRleCxcbiAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgICByZXRBcnJheSA9IHJldEFycmF5LmNvbmNhdChtYXRjaEFycmF5KTtcbiAgICAvLyBjb25zb2xlLmxvZygnQWZ0ZXI9PT09PT09PT09PVxcbicsIHJldEFycmF5KTtcbiAgICByZXR1cm4gcmV0QXJyYXk7XG59XG5cbi8qKlxuICogXHU1MjA2XHU1MjcyXHU0RTAwXHU4ODRDXHU2NTg3XHU2NzJDXHU0RTJEXHU3Njg0XHU5NEZFXHU2M0E1XHU1NDhDXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU3Njg0XHU2QjYzXHU1MjE5XHU5MEU4XHU1MjA2XHVGRjBDXHU1Rjk3XHU1MjMwIElubGluZVBhcnQgXHU3Njg0XHU0RTBEXHU1NDBDXHU1MzNBXHU1N0RGXG4gKi9cbmZ1bmN0aW9uIHNwbGl0VGV4dFdpdGhMaW5rQW5kVXNlckRlZmluZWQodGV4dDogc3RyaW5nLCByZWdFeHBzPzogc3RyaW5nKTogSW5saW5lUGFydFtdIHtcbiAgICBsZXQgcmV0QXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIGxldCByZWdXaWtpTGluayA9IC9cXCF7MCwyfVxcW1xcW1teXFxbXFxdXSo/XFxdXFxdL2c7XG4gICAgbGV0IHJlZ01kTGluayA9IC9cXCF7MCwyfVxcW1teXFxbXFxdXSo/XFxdXFwoW15cXHNcXClcXChcXFtcXF1cXHtcXH0nXSpcXCkvZztcbiAgICAvLyBsZXQgcmVnQmFyZUxpbmsgPSAvKGh0dHBzPzpcXC9cXC98ZnRwOlxcL1xcL3xvYnNpZGlhbjpcXC9cXC98em90ZXJvOlxcL1xcL3x3d3cuKVteXFxzXHVGRjA4XHVGRjA5XHUzMDBBXHUzMDBCXHUzMDAyXHVGRjBDXHVGRjAxXHVGRjFGXHVGRjFCXHVGRjFBXHUyMDFDXHUyMDFEXHUyMDE4XHUyMDE5XFwpXFwoXFxbXFxdXFx7XFx9J10rL2c7XG5cbiAgICAvLyAxLiBcdTUzMzlcdTkxNER3aWtpbGlua1xuICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoUmVnKHRleHQsIHJlZ1dpa2lMaW5rLCBJbmxpbmVUeXBlLndpa2lsaW5rLCByZXRBcnJheSk7XG4gICAgLy8gMi4gXHU1MzM5XHU5MTREbWRsaW5rXG4gICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhSZWcodGV4dCwgcmVnTWRMaW5rLCBJbmxpbmVUeXBlLm1kbGluaywgcmV0QXJyYXkpO1xuXG4gICAgLy8gMy4gXHU1MzM5XHU5MTREXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XG4gICAgbGV0IHJlZ0V4cExpc3Q6IFJlZ0V4cFtdID0gW107XG4gICAgbGV0IGxlZnRTUmVxdWlyZUxpc3Q6IFNwYWNlU3RhdGVbXSA9IFtdO1xuICAgIGxldCByaWdodFNSZXF1aXJlTGlzdDogU3BhY2VTdGF0ZVtdID0gW107XG4gICAgbGV0IHJlZ051bGwgPSAvXlxccyokL2c7XG4gICAgbGV0IHJlZ1NSZXF1aXJlID0gL1xcfFtcXC09XFwrXVtcXC09XFwrXSQvO1xuICAgIGlmIChyZWdFeHBzKSB7XG4gICAgICAgIGxldCByZWdzID0gcmVnRXhwcy5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVncy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICBpZiAocmVnTnVsbC50ZXN0KHJlZ3NbaV0pKSBjb250aW51ZTtcblxuICAgICAgICAgICAgaWYgKCghcmVnU1JlcXVpcmUudGVzdChyZWdzW2ldKSkgfHwgcmVnc1tpXS5sZW5ndGggPD0gMykge1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJFYXN5VHlwaW5nOiBcdTdCMkNcIiArIFN0cmluZyhpKSArIFwiXHU4ODRDXHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU0RTBEXHU3QjI2XHU1NDA4XHU4OUM0XHU4MzAzXFxuXCIrcmVnc1tpXSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcmVnSXRlbSA9IHJlZ3NbaV0uc3Vic3RyaW5nKDAsIHJlZ3NbaV0ubGVuZ3RoIC0gMyk7XG4gICAgICAgICAgICBsZXQgc3BhY2VSZXFTdHJpbmcgPSByZWdzW2ldLnN1YnN0cmluZyhyZWdzW2ldLmxlbmd0aCAtIDMpO1xuXG4gICAgICAgICAgICBsZXQgaXNWYWxpZFJlZyA9IHRydWU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCByZWdUZW1wID0gbmV3IFJlZ0V4cChyZWdJdGVtLCAnZycpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkUmVnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5zZXR0aW5ncy5kZWJ1Zyl7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJFYXN1VHlwaW5nOiBCYWQgUmVnRXhwOlxcblwiICsgcmVnSXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZykge1xuICAgICAgICAgICAgICAgIHJlZ0V4cExpc3QucHVzaChuZXcgUmVnRXhwKHJlZ0l0ZW0sICdnJykpO1xuICAgICAgICAgICAgICAgIGxlZnRTUmVxdWlyZUxpc3QucHVzaChzdHIyU3BhY2VTdGF0ZShzcGFjZVJlcVN0cmluZy5jaGFyQXQoMSkpKTtcbiAgICAgICAgICAgICAgICByaWdodFNSZXF1aXJlTGlzdC5wdXNoKHN0cjJTcGFjZVN0YXRlKHNwYWNlUmVxU3RyaW5nLmNoYXJBdCgyKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZWdMZW4gPSByZWdFeHBMaXN0Lmxlbmd0aDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlZ0xlbjsgaSsrKSB7XG4gICAgICAgICAgICByZXRBcnJheSA9IG1hdGNoV2l0aFJlZyh0ZXh0LCByZWdFeHBMaXN0W2ldLCBJbmxpbmVUeXBlLnVzZXIsIHJldEFycmF5LCB0cnVlLCBsZWZ0U1JlcXVpcmVMaXN0W2ldLCByaWdodFNSZXF1aXJlTGlzdFtpXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBcdTUzMzlcdTkxNERcdTY1RjZcdTk1RjRcdTYyMzNcbiAgICByZXRBcnJheSA9IG1hdGNoV2l0aFJlZyh0ZXh0LCAvXFxkezEsMn06XFxkezEsMn0oOlxcZHswLDJ9KXswLDF9L2csIElubGluZVR5cGUudXNlciwgcmV0QXJyYXksIHRydWUsIFNwYWNlU3RhdGUubm9uZSwgU3BhY2VTdGF0ZS5ub25lKTtcblxuICAgIC8vIDQuIFx1NTMzOVx1OTE0RFx1N0YyOVx1NTE5OVx1NTk4MiBhLm0uXG4gICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhBYmJyKHRleHQsIElubGluZVR5cGUudXNlciwgcmV0QXJyYXksIHRydWUpO1xuXG4gICAgLy8gNS4gXHU1Rjk3XHU1MjMwXHU1MjY5XHU0RjU5XHU3Njg0XHU2NTg3XHU2NzJDXHU5MEU4XHU1MjA2XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5zb3J0KChhLCBiKTogbnVtYmVyID0+IGEuYmVnaW4gLSBiLmJlZ2luKTtcblxuICAgIGxldCB0ZXh0QXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIGxldCB0ZXh0QmVnaW4gPSAwO1xuICAgIGxldCB0ZXh0RW5kID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0ZXh0QmVnaW4gPCByZXRBcnJheVtpXS5iZWdpbikge1xuICAgICAgICAgICAgdGV4dEVuZCA9IHJldEFycmF5W2ldLmJlZ2luO1xuICAgICAgICAgICAgdGV4dEFycmF5LnB1c2goXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0ZXh0LnN1YnN0cmluZyh0ZXh0QmVnaW4sIHRleHRFbmQpLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBJbmxpbmVUeXBlLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiB0ZXh0QmVnaW4sXG4gICAgICAgICAgICAgICAgICAgIGVuZDogdGV4dEVuZCxcbiAgICAgICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXh0QmVnaW4gPSByZXRBcnJheVtpXS5lbmQ7XG4gICAgfVxuXG4gICAgaWYgKHRleHRCZWdpbiAhPSB0ZXh0Lmxlbmd0aCkge1xuICAgICAgICB0ZXh0QXJyYXkucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0ZXh0LnN1YnN0cmluZyh0ZXh0QmVnaW4sIHRleHQubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBJbmxpbmVUeXBlLnRleHQsXG4gICAgICAgICAgICAgICAgYmVnaW46IHRleHRCZWdpbixcbiAgICAgICAgICAgICAgICBlbmQ6IHRleHQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gNi4gXHU1NDA4XHU1RTc2XHU2NTg3XHU2NzJDXHU5MEU4XHU1MjA2XHU1NDhDXHU1MTc2XHU0RUQ2XHU5MEU4XHU1MjA2XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5jb25jYXQodGV4dEFycmF5KTtcbiAgICByZXRBcnJheSA9IHJldEFycmF5LnNvcnQoKGEsIGIpOiBudW1iZXIgPT4gYS5iZWdpbiAtIGIuYmVnaW4pO1xuICAgIHJldHVybiByZXRBcnJheVxufVxuXG4vLyBcdTVCNTdcdTdCMjZcdThGNkNcdTUzMTZcdTYyMTBcdTdBN0FcdTY4M0NcdTcyQjZcdTYwMDFcdTg5ODFcdTZDNDJcbmZ1bmN0aW9uIHN0cjJTcGFjZVN0YXRlKHM6IHN0cmluZyk6IFNwYWNlU3RhdGUge1xuICAgIHN3aXRjaCAocykge1xuICAgICAgICBjYXNlIFwiK1wiOlxuICAgICAgICAgICAgcmV0dXJuIFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgICAgICBjYXNlICc9JzpcbiAgICAgICAgICAgIHJldHVybiBTcGFjZVN0YXRlLnNvZnQ7XG4gICAgICAgIGNhc2UgJy0nOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFNwYWNlU3RhdGUubm9uZTtcbiAgICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZzJTcGFjZVN0YXRlKHM6c3RyaW5nKTpTcGFjZVN0YXRlXG57XG4gICAgaWYoTnVtYmVyKHMpPT1TcGFjZVN0YXRlLm5vbmUpIHJldHVybiBTcGFjZVN0YXRlLm5vbmU7XG4gICAgaWYoTnVtYmVyKHMpPT1TcGFjZVN0YXRlLnNvZnQpIHJldHVybiBTcGFjZVN0YXRlLnNvZnQ7XG4gICAgaWYoTnVtYmVyKHMpPT1TcGFjZVN0YXRlLnN0cmljdCkgcmV0dXJuIFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgIHJldHVybiBTcGFjZVN0YXRlLm5vbmU7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc0xpbmVUeXBlKHN0YXRlOiBFZGl0b3JTdGF0ZSwgcG9zOiBudW1iZXIpOkxpbmVUeXBlIHtcbiAgICBjb25zdCBsaW5lID0gc3RhdGUuZG9jLmxpbmVBdChwb3MpXG4gICAgY29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuICAgIGNvbnN0IHRva2VuID0gdHJlZS5yZXNvbHZlKGxpbmUuZnJvbSwgMSkubmFtZVxuICAgIGlmICh0b2tlbi5jb250YWlucygnaG1kLWZyb250bWF0dGVyJykpe1xuICAgICAgICByZXR1cm4gTGluZVR5cGUuZnJvbnRtYXR0ZXJcbiAgICB9XG5cbiAgICBpZih0b2tlbi5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGlmKCF0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mb3JtdWxhXG4gICAgfVxuICAgIGVsc2UgaWYodG9rZW4uY29udGFpbnMoJ2NvZGUnKSAmJiB0b2tlbi5jb250YWlucygnYmxvY2snKSl7XG4gICAgICAgIGZvcihsZXQgcD1saW5lLmZyb20rMTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgICAgICBsZXQgdCA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG4gICAgICAgICAgICBpZighKHQuY29udGFpbnMoJ2NvZGUnKSAmJiB0LmNvbnRhaW5zKCdibG9jaycpKSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTGluZVR5cGUuY29kZWJsb2NrXG4gICAgfVxuICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc0xpbmVUeXBlMihzdGF0ZTogRWRpdG9yU3RhdGUsIHBvczogbnVtYmVyKTpMaW5lVHlwZSB7XG4gICAgY29uc3QgbGluZSA9IHN0YXRlLmRvYy5saW5lQXQocG9zKVxuICAgIGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcbiAgICBjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShsaW5lLmZyb20sIDEpLm5hbWVcbiAgICBpZiAodG9rZW4uY29udGFpbnMoJ2htZC1mcm9udG1hdHRlcicpKXtcbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmZyb250bWF0dGVyXG4gICAgfVxuXG4gICAgaWYodG9rZW4uY29udGFpbnMoJ21hdGgnKSl7XG4gICAgICAgIGZvcihsZXQgcD1saW5lLmZyb20rMTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgICAgICBpZighdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ21hdGgnKSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTGluZVR5cGUuZm9ybXVsYVxuICAgIH1cbiAgICBlbHNlIGlmKHRva2VuLmNvbnRhaW5zKCdjb2RlJykgJiYgdG9rZW4uY29udGFpbnMoJ2Jsb2NrJykpe1xuICAgICAgICBmb3IobGV0IHA9bGluZS5mcm9tKzE7cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICAgICAgbGV0IHQgPSB0cmVlLnJlc29sdmUocCwgMSkubmFtZVxuICAgICAgICAgICAgaWYoISh0LmNvbnRhaW5zKCdjb2RlJykgJiYgdC5jb250YWlucygnYmxvY2snKSkpe1xuICAgICAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmNvZGVibG9ja1xuICAgIH1cblxuICAgIGZvcihsZXQgcD1saW5lLmZyb207cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICBpZih0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnbGlzdCcpKXtcbiAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS5saXN0XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZih0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnY2FsbG91dCcpKXtcbiAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS5jYWxsb3V0X3RpdGxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYodG9rZW4uY29udGFpbnMoJ3F1b3RlJykpe1xuICAgICAgICByZXR1cm4gTGluZVR5cGUucXVvdGU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG59IiwgImltcG9ydCB7IEFubm90YXRpb24sIEVkaXRvclN0YXRlLCBFeHRlbnNpb24sIFN0YXRlRmllbGQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblNwZWMsIFRleHR9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IEVhc3lUeXBpbmdTZXR0aW5nVGFiLCBFYXN5VHlwaW5nU2V0dGluZ3MsIFBhaXJTdHJpbmcsIENvbnZlcnRSdWxlfSBmcm9tIFwiLi9zZXR0aW5nc1wiXG5cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc1RvT2Zmc2V0KGRvYzpUZXh0LCBwb3M6e2xpbmU6bnVtYmVyLCBjaDpudW1iZXJ9KSB7XG5cdHJldHVybiBkb2MubGluZShwb3MubGluZSArIDEpLmZyb20gKyBwb3MuY2hcbn1cbmV4cG9ydCBmdW5jdGlvbiBvZmZzZXRUb1Bvcyhkb2M6VGV4dCwgb2Zmc2V0Om51bWJlcikge1xuXHRsZXQgbGluZSA9IGRvYy5saW5lQXQob2Zmc2V0KVxuXHRyZXR1cm4ge2xpbmU6IGxpbmUubnVtYmVyIC0gMSwgY2g6IG9mZnNldCAtIGxpbmUuZnJvbX1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVTdHJPZlRyYW5zYWModHI6IFRyYW5zYWN0aW9uKTogc3RyaW5nIHtcblx0bGV0IFRyYW5zYWNUeXBlQXJyYXk6c3RyaW5nW10gPSBbXCJFYXN5VHlwaW5nLmNoYW5nZVwiLCBcblx0XHRcdFx0XHRcdFx0XCJpbnB1dC50eXBlLmNvbXBvc2VcIiwgXCJpbnB1dC50eXBlXCIsIFwiaW5wdXQucGFzdGVcIiwgXCJpbnB1dC5kcm9wXCIsIFwiaW5wdXQuY29tcGxldGVcIiwgXCJpbnB1dFwiLFxuXHRcdFx0XHRcdFx0XHRcImRlbGV0ZS5zZWxlY3Rpb25cIiwgXCJkZWxldGUuZm9yd2FyZFwiLCBcImRlbGV0ZS5iYWNrd2FyZFwiLCBcImRlbGV0ZS5jdXRcIiwgXCJkZWxldGVcIixcblx0XHRcdFx0XHRcdFx0XCJtb3ZlLmRyb3BcIixcblx0XHRcdFx0XHRcdFx0XCJ1bmRvXCIsIFwicmVkb1wiLFxuXHRcdFx0XHRcdFx0XHRcInNlbGVjdC5wb2ludGVyXCJdO1xuXHRmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgVHJhbnNhY1R5cGVBcnJheS5sZW5ndGg7IGkrKylcblx0e1xuXHRcdGlmICh0ci5pc1VzZXJFdmVudChUcmFuc2FjVHlwZUFycmF5W2ldKSlcblx0XHRcdHJldHVybiBUcmFuc2FjVHlwZUFycmF5W2ldO1xuXHR9XG5cdHJldHVybiBcIm5vbmVcIlxufVxuXG5mdW5jdGlvbiBzdHJpbmcycGFpcnN0cmluZyhzOiBzdHJpbmcpOlBhaXJTdHJpbmd7XG5cdGxldCBjdXJzb3JJZHggPSBzLmluZGV4T2YoXCJ8XCIpO1xuXHRsZXQgbGVmdCA9IHMuc3Vic3RyaW5nKDAsIGN1cnNvcklkeCk7XG5cdGxldCByaWdodCA9IHMuc3Vic3RyaW5nKGN1cnNvcklkeCsxKTtcblx0cmV0dXJuIHtsZWZ0OmxlZnQsIHJpZ2h0OnJpZ2h0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KGxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+KTpDb252ZXJ0UnVsZVtdIHtcblx0bGV0IHJlczpDb252ZXJ0UnVsZVtdID0gW107XG5cdGZvciAobGV0IGkgaW4gbGlzdCl7XG5cdFx0cmVzW2ldID0ge2JlZm9yZTogc3RyaW5nMnBhaXJzdHJpbmcobGlzdFtpXVswXSksIGFmdGVyOiBzdHJpbmcycGFpcnN0cmluZyhsaXN0W2ldWzFdKX1cblx0fVxuXHRyZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nRGVsZXRlQXQoc3RyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOnN0cmluZ1xue1xuICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIGluZGV4KStzdHIuc3Vic3RyaW5nKGluZGV4KzEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nSW5zZXJ0QXQoc3RyOnN0cmluZywgaW5kZXg6IG51bWJlciwgczogc3RyaW5nKTpzdHJpbmdcbntcbiAgICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBpbmRleCkrcytzdHIuc3Vic3RyaW5nKGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyYW1EZWZpbmVkKHBhcmFtOiBhbnkpOmJvb2xlYW5cbntcblx0cmV0dXJuIHR5cGVvZiBwYXJhbSE9PVwidW5kZWZpbmVkXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93U3RyaW5nKHM6IHN0cmluZyk6c3RyaW5ne1xuXHRyZXR1cm4gcy5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJyk7XG59IiwgImltcG9ydCB7IFNwYWNlU3RhdGUsIHN0cmluZzJTcGFjZVN0YXRlIH0gZnJvbSAnc3JjL2NvcmUnO1xuaW1wb3J0IHsgQXBwLCBUZXh0Q29tcG9uZW50LCBNYXJrZG93blZpZXcsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZywgV29ya3NwYWNlLCBXb3Jrc3BhY2VMZWFmLCBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCBFYXN5VHlwaW5nUGx1Z2luIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgeyBzaG93U3RyaW5nIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFpclN0cmluZyB7XG5cdGxlZnQ6IHN0cmluZztcblx0cmlnaHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJ0UnVsZSB7XG5cdGJlZm9yZTogUGFpclN0cmluZztcblx0YWZ0ZXI6IFBhaXJTdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFJ1bGVUeXBlIHtkZWxldGU9IFwiRGVsZXRlIFJ1bGVcIiwgY29udmVydD0nQ29udmVydCBSdWxlJ31cbmV4cG9ydCBlbnVtIFdvcmtNb2RlIHsgT25seVdoZW5UeXBpbmcgPSBcInR5cGluZ1wiLCBHbG9iYWxseSA9IFwiZ2xvYmFsXCIgfVxuXG5leHBvcnQgaW50ZXJmYWNlIEVhc3lUeXBpbmdTZXR0aW5ncyB7XG5cdFRhYm91dDogYm9vbGVhbjtcblx0U2VsZWN0aW9uRW5oYW5jZTogYm9vbGVhbjtcblx0SW50cmluc2ljU3ltYm9sUGFpcnM6IGJvb2xlYW47XG5cdEJhc2VPYkVkaXRFbmhhbmNlOiBib29sZWFuO1xuXHRGVzJIV0VuaGFuY2U6IGJvb2xlYW47XG5cdEF1dG9Gb3JtYXQ6IGJvb2xlYW47XG5cdEV4Y2x1ZGVGaWxlczogc3RyaW5nO1xuXHRBdXRvQ2FwaXRhbDogYm9vbGVhbjtcblx0QXV0b0NhcGl0YWxNb2RlOiBXb3JrTW9kZTtcblx0Q2hpbmVzZUVuZ2xpc2hTcGFjZTogYm9vbGVhbjtcblx0RW5nbGlzaE51bWJlclNwYWNlOiBib29sZWFuO1xuXHRDaGluZXNlTm9TcGFjZTogYm9vbGVhbjtcblx0Q2hpbmVzZU51bWJlclNwYWNlOiBib29sZWFuO1xuXHRQdW5jdHVhdGlvblNwYWNlOiBib29sZWFuO1xuXHRQdW5jdHVhdGlvblNwYWNlTW9kZTogV29ya01vZGU7XG5cdElubGluZUNvZGVTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUZvcm11bGFTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUxpbmtTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUxpbmtTbWFydFNwYWNlOiBib29sZWFuO1xuXHRVc2VyRGVmaW5lZFJlZ1N3aXRjaDogYm9vbGVhbjtcblx0VXNlckRlZmluZWRSZWdFeHA6IHN0cmluZztcblx0ZGVidWc6IGJvb2xlYW47XG5cblx0dXNlclNlbFJlcFJ1bGVUcmlnZ2VyOiBzdHJpbmdbXTtcblx0dXNlclNlbFJlcFJ1bGVWYWx1ZTogUGFpclN0cmluZ1tdO1xuXHR1c2VyRGVsZXRlUnVsZXNTdHJMaXN0OiBbc3RyaW5nLCBzdHJpbmddW107XG5cdHVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0OiBbc3RyaW5nLCBzdHJpbmddW107XG5cdHVzZXJTZWxSdWxlU2V0dGluZ3NPcGVuOiBib29sZWFuO1xuXHR1c2VyRGVsUnVsZVNldHRpbmdzT3BlbjogYm9vbGVhbjtcblx0dXNlckN2dFJ1bGVTZXR0aW5nc09wZW46IGJvb2xlYW47XG5cblx0RW50ZXJUd2ljZTogYm9vbGVhbjtcblx0UHVuY1JlY3RpZnk6IGJvb2xlYW47XG5cdFRyeUZpeENoaW5lc2VJTTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VUVElOR1M6IEVhc3lUeXBpbmdTZXR0aW5ncyA9IHtcblx0VGFib3V0OiB0cnVlLFxuXHRTZWxlY3Rpb25FbmhhbmNlOiB0cnVlLFxuXHRJbnRyaW5zaWNTeW1ib2xQYWlyczogdHJ1ZSxcblx0QmFzZU9iRWRpdEVuaGFuY2U6IHRydWUsXG5cdEZXMkhXRW5oYW5jZTogdHJ1ZSxcblxuXHRBdXRvRm9ybWF0OiB0cnVlLFxuXHRFeGNsdWRlRmlsZXM6IFwiXCIsXG5cdENoaW5lc2VFbmdsaXNoU3BhY2U6IHRydWUsXG5cdENoaW5lc2VOdW1iZXJTcGFjZTogdHJ1ZSxcblx0RW5nbGlzaE51bWJlclNwYWNlOiB0cnVlLFxuXHRDaGluZXNlTm9TcGFjZTogdHJ1ZSxcblx0UHVuY3R1YXRpb25TcGFjZTogdHJ1ZSxcblx0QXV0b0NhcGl0YWw6IHRydWUsXG5cdEF1dG9DYXBpdGFsTW9kZTogV29ya01vZGUuT25seVdoZW5UeXBpbmcsXG5cdFB1bmN0dWF0aW9uU3BhY2VNb2RlOiBXb3JrTW9kZS5Pbmx5V2hlblR5cGluZyxcblx0SW5saW5lQ29kZVNwYWNlTW9kZTogU3BhY2VTdGF0ZS5zb2Z0LFxuXHRJbmxpbmVGb3JtdWxhU3BhY2VNb2RlOiBTcGFjZVN0YXRlLnNvZnQsXG5cdElubGluZUxpbmtTcGFjZU1vZGU6IFNwYWNlU3RhdGUuc29mdCxcblx0SW5saW5lTGlua1NtYXJ0U3BhY2U6IHRydWUsXG5cdFVzZXJEZWZpbmVkUmVnU3dpdGNoOiB0cnVlLFxuXHRVc2VyRGVmaW5lZFJlZ0V4cDogXCJ7ey4qP319fCsrXFxuXCIrXG5cdFx0XCI8Lio/PnwtLVxcblwiICtcblx0XHRcIlxcXFxbXFxcXCEuKj9cXFxcXVstK117MCwxfXwtK1xcblwiK1xuXHRcdFwiKGZpbGU6Ly8vfGh0dHBzPzovL3xmdHA6Ly98b2JzaWRpYW46Ly98em90ZXJvOi8vfHd3dy4pW15cXFxcc1x1RkYwOFx1RkYwOVx1MzAwQVx1MzAwQlx1MzAwMixcdUZGMENcdUZGMDFcdUZGMUY7XHVGRjFCXHVGRjFBXHUyMDFDXHUyMDFEXHUyMDE4XHUyMDE5XFxcXClcXFxcKFxcXFxbXFxcXF1cXFxce1xcXFx9J10rfCsrXFxuXCIrXG5cdFx0XCJcXG5bYS16QS1aMC05X1xcXFwtLl0rQFthLXpBLVowLTlfXFxcXC0uXSt8KytcXG5cIitcblx0XHRcIig/PCEjKSNbXFxcXHU0ZTAwLVxcXFx1OWZhNVxcXFx3XFxcXC9dK3wrK1wiLFxuXHRkZWJ1ZzogZmFsc2UsXG5cdHVzZXJTZWxSZXBSdWxlVHJpZ2dlcjogW1wiLVwiLCBcIiNcIl0sXG5cdHVzZXJTZWxSZXBSdWxlVmFsdWU6IFt7bGVmdDpcIn5+XCIsIHJpZ2h0Olwifn5cIn0sIHtsZWZ0OlwiI1wiLCByaWdodDpcIiBcIn1dLFxuXHR1c2VyRGVsZXRlUnVsZXNTdHJMaXN0OiBbW1wiZGVtb3xcIiwgXCJ8XCJdXSxcblx0dXNlckNvbnZlcnRSdWxlc1N0ckxpc3Q6IFtbXCI6KXxcIixcIlx1RDgzRFx1REUwMHxcIl1dLFxuXHR1c2VyU2VsUnVsZVNldHRpbmdzT3BlbjogdHJ1ZSxcblx0dXNlckRlbFJ1bGVTZXR0aW5nc09wZW46IHRydWUsXG5cdHVzZXJDdnRSdWxlU2V0dGluZ3NPcGVuOiB0cnVlLFxuXG5cdEVudGVyVHdpY2U6IGZhbHNlLFxuXHRUcnlGaXhDaGluZXNlSU06IGZhbHNlLFxuXHRQdW5jUmVjdGlmeTogZmFsc2UsXG59XG5cbmV4cG9ydCBjbGFzcyBFYXN5VHlwaW5nU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuXHRwbHVnaW46IEVhc3lUeXBpbmdQbHVnaW47XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogRWFzeVR5cGluZ1BsdWdpbikge1xuXHRcdHN1cGVyKGFwcCwgcGx1Z2luKTtcblx0XHR0aGlzLnBsdWdpbiA9IHBsdWdpbjtcblx0fVxuXG5cdGRpc3BsYXkoKTogdm9pZCB7XG5cdFx0Y29uc3QgeyBjb250YWluZXJFbCB9ID0gdGhpcztcblxuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbChcImgxXCIsIHsgdGV4dDogXCJPYnNpZGlhbiBFYXN5VHlwaW5nIFBsdWdpblwiIH0pO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwicFwiLCB7IHRleHQ6IFwiTW9yZSBkZXRhaWwgaXMgaW4gR2l0aHViOiBcIiB9KS5jcmVhdGVFbChcImFcIiwge1xuXHRcdFx0dGV4dDogXCJlYXN5LXR5cGluZy1vYnNpZGlhblwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL2dpdGh1Yi5jb20vWWFvemh1d2EvZWFzeS10eXBpbmctb2JzaWRpYW5cIixcblx0XHR9KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ1x1NTg5RVx1NUYzQVx1N0YxNlx1OEY5MVx1OEJCRVx1N0Y2RSAoRW5oYW5jZWQgRWRpdGluZyBTZXR0aW5nKScgfSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3ltYm9sIGF1dG8gcGFpciBhbmQgZGVsZXRlIHdpdGggcGFpclwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU4OUVcdTUyQTBcdTU5MUFcdTc5Q0RcdTdCMjZcdTUzRjdcdTkxNERcdTVCRjlcdThGOTNcdTUxNjVcdUZGMENcdTkxNERcdTVCRjlcdTUyMjBcdTk2NjRcdUZGMENcdTU5ODJcdTMwMEFcdTMwMEIsIFx1MjAxQ1x1MjAxRCwgXHUzMDBDXHUzMDBELCBcdTMwMEVcdTMwMEYsXHUzMDEwXHUzMDExXHU3QjQ5XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkludHJpbnNpY1N5bWJvbFBhaXJzKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkludHJpbnNpY1N5bWJvbFBhaXJzID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNlbGVjdGlvbiBSZXBsYWNlIEVuaGFuY2VtZW50XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1OTAwOVx1NEUyRFx1NjU4N1x1NjcyQ1x1NjBDNVx1NTFCNVx1NEUwQlx1NzY4NFx1N0YxNlx1OEY5MVx1NTg5RVx1NUYzQVx1RkYwQ1x1NjMwOVx1RkZFNVx1MjE5MiRcdTkwMDlcdTRFMkRcdTc2ODRcdTY1ODdcdTY3MkMkLCBcdTYzMDlcdTAwQjdcdTIxOTJgXHU5MDA5XHU0RTJEXHU3Njg0XHU2NTg3XHU2NzJDYFx1RkYwQ1x1MzAwQSBcdTIxOTIgXHUzMDBBXHU5MDA5XHU0RTJEXHU3Njg0XHU2NTg3XHU2NzJDXHUzMDBCXHU3QjQ5XHU3QjQ5XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlNlbGVjdGlvbkVuaGFuY2UpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuU2VsZWN0aW9uRW5oYW5jZSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJDb252ZXJ0IHN1Y2Nlc3NpdmUgZnVsbCB3aWR0aCBzeW1ib2wgdG8gaGFsZiB3aWR0aCBzeW1ib2xcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4RkRFXHU3RUVEXHU4RjkzXHU1MTY1XHU1MTY4XHU4OUQyXHU3QjI2XHU1M0Y3XHU4RjZDXHU1MzRBXHU4OUQyXHVGRjBDXHUzMDAyXHUzMDAyXHUyMTkyIC5cdUZGMENcdUZGMDFcdUZGMDFcdTIxOTIgIVx1RkYwQyBcdTMwMEJcdTMwMEJcdTIxOTIgPlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5GVzJIV0VuaGFuY2UpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuRlcySFdFbmhhbmNlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkJhc2ljIHN5bWJvbCBpbnB1dCBlbmhhbmNlIGZvciBvYnNpZGlhblwiKVxuXHRcdFx0LnNldERlc2MoXCJPYnNpZGlhbiBcdTc2ODRcdTU3RkFcdTc4NDBcdThGOTNcdTUxNjVcdTU4OUVcdTVGM0FcdUZGMENcdTU5ODJcdTMwMTBcdTMwMTB8IFx1MjE5MiBbW3xdXVx1RkYwQ1x1NTNFNVx1OTk5Nlx1NzY4NFx1MzAwMVx1MjE5MiAvXHVGRjBDXHU1M0U1XHU5OTk2XHU3Njg0XHUzMDBCXHUyMTkyID5cdUZGMENcdTAwQjdcdTAwQjd8IFx1MjE5MiBgfGBcdUZGMEMgYFx1MDBCN3xgIFx1NTNEOFx1NjIxMFx1NEVFM1x0XHU3ODAxXHU1NzU3XHVGRjBDXHVGRkU1XHVGRkU1fCBcdTIxOTIgJHwkXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkJhc2VPYkVkaXRFbmhhbmNlKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkJhc2VPYkVkaXRFbmhhbmNlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlRhYm91dFwiKVxuXHRcdFx0LnNldERlc2MoXCJUYWJvdXQgaW5saW5lIGNvZGUuIFRhYlx1OERGM1x1NTFGQVx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTc1N1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5UYWJvdXQpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuVGFib3V0ID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU4MUVBXHU1QjlBXHU0RTQ5XHU3RjE2XHU4RjkxXHU4RjZDXHU2MzYyXHU4OUM0XHU1MjE5IChDdXN0b21pemUgRWRpdCBDb252ZXJ0aW9uIFJ1bGUpJyB9KTtcblx0XHR0aGlzLmJ1aWxkVXNlclNlbFJlcFJ1bGVTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcblx0XHRcdGNsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wiLFxuXHRcdFx0YXR0cjoge1xuXHRcdFx0XHQuLi4odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJ1bGVTZXR0aW5nc09wZW4/eyBvcGVuOiB0cnVlIH06e30pXG5cdFx0XHR9XG5cdFx0fSkpXG5cblx0XHR0aGlzLmJ1aWxkVXNlckRlbGV0ZVJ1bGVTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcblx0XHRcdGNsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wiLFxuXHRcdFx0YXR0cjoge1xuXHRcdFx0XHQuLi4odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbFJ1bGVTZXR0aW5nc09wZW4/eyBvcGVuOiB0cnVlIH06e30pXG5cdFx0XHR9XG5cdFx0fSkpXG5cblx0XHR0aGlzLmJ1aWxkVXNlckNvbnZlcnRSdWxlU2V0dGluZyh0aGlzLmNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGV0YWlsc1wiLCB7XG5cdFx0XHRjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIixcblx0XHRcdGF0dHI6IHtcblx0XHRcdFx0Li4uKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDdnRSdWxlU2V0dGluZ3NPcGVuP3sgb3BlbjogdHJ1ZSB9Ont9KVxuXHRcdFx0fVxuXHRcdH0pKVxuXHRcdFxuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU4QkJFXHU3RjZFIChBdXRvZm9ybWF0IFNldHRpbmcpJyB9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJBdXRvIGZvcm1hdHRpbmcgd2hlbiB0eXBpbmdcIilcblx0XHRcdC5zZXREZXNjKFwiXHU2NjJGXHU1NDI2XHU1NzI4XHU3RjE2XHU4RjkxXHU2NTg3XHU2ODYzXHU2NUY2XHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU2NTg3XHU2NzJDXHVGRjBDXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU3Njg0XHU2MDNCXHU1RjAwXHU1MTczXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9Gb3JtYXQpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0Zvcm1hdCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgncCcsIHsgdGV4dDogJ0RldGFpbGVkIFNldHRpbmcgQmVsb3cnIH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIGJldHdlZW4gQ2hpbmVzZSBhbmQgRW5nbGlzaFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTRFMkRcdTY1ODdcdTU0OENcdTgyRjFcdTY1ODdcdTk1RjRcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZUVuZ2xpc2hTcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZUVuZ2xpc2hTcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIGJldHdlZW4gQ2hpbmVzZSBhbmQgTnVtYmVyXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NEUyRFx1NjU4N1x1NTQ4Q1x1NjU3MFx1NUI1N1x1OTVGNFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlTnVtYmVyU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOdW1iZXJTcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBiZXR3ZWVuIEVuZ2lsc2ggYW5kIE51bWJlclwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTgyRjFcdTY1ODdcdTU0OENcdTY1NzBcdTVCNTdcdTk1RjRcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuRW5nbGlzaE51bWJlclNwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbmdsaXNoTnVtYmVyU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJEZWxldGUgdGhlIFNwYWNlIGJldHdlZW4gQ2hpbmVzZSBjaGFyYWN0ZXJzXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NEUyRFx1NjU4N1x1NUI1N1x1N0IyNlx1OTVGNFx1NTNCQlx1OTY2NFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlTm9TcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZU5vU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJDYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2YgZXZlcnkgc2VudGVuY2VcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4MkYxXHU2NTg3XHU2QkNGXHU0RTJBXHU1M0U1XHU5OTk2XHU1QjU3XHU2QkNEXHU1OTI3XHU1MTk5XCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5Pbmx5V2hlblR5cGluZywgXCJcdThGOTNcdTUxNjVcdTY1RjZcdTc1MUZcdTY1NDgoT25seSBXaGVuIFR5cGluZylcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5HbG9iYWxseSwgXCJcdTUxNjhcdTVDNDBcdTc1MUZcdTY1NDgoV29yayBHbG9iYWxseSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9DYXBpdGFsTW9kZSk7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBXb3JrTW9kZS5Pbmx5V2hlblR5cGluZyB8IFdvcmtNb2RlLkdsb2JhbGx5KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlID0gdjtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFRvb2x0aXAoXCJcdTUyOUZcdTgwRkRcdTVGMDBcdTUxNzMoU3dpdGNoKVwiKTtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9DYXBpdGFsKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvQ2FwaXRhbCA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNtYXJ0bHkgaW5zZXJ0IHNwYWNlIGJldHdlZW4gdGV4dCBhbmQgcHVuY3R1YXRpb25cIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU2NTg3XHU2NzJDXHU1NDhDXHU2ODA3XHU3MEI5XHU5NUY0XHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5Pbmx5V2hlblR5cGluZywgXCJcdThGOTNcdTUxNjVcdTY1RjZcdTc1MUZcdTY1NDgoT25seSBXaGVuIFR5cGluZylcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5HbG9iYWxseSwgXCJcdTUxNjhcdTVDNDBcdTc1MUZcdTY1NDgoV29yayBHbG9iYWxseSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nIHwgV29ya01vZGUuR2xvYmFsbHkpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlTW9kZSA9IHY7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2Ugc3RhdGVneSBiZXR3ZWVuIGlubGluZSBjb2RlIGFuZCB0ZXh0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOCBgXHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxYCBcdTU0OENcdTY1ODdcdTY3MkNcdTk1RjRcdTc2ODRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcdTMwMDJcIiArXG5cdFx0XHRcdFwiXHU2NUUwXHU4OTgxXHU2QzQyXHVGRjFBXHU1QkY5XHU2NzJDXHU3QzdCXHU1MjJCXHU1NzU3XHU0RTBFXHU1REU2XHU1M0YzXHU2NTg3XHU2NzJDXHU2Q0ExXHU2NzA5XHU3QTdBXHU2ODNDXHU3Njg0XHU4OTgxXHU2QzQyXHVGRjBDXCIgK1xuXHRcdFx0XHRcIlx1OEY2Rlx1N0E3QVx1NjgzQ1x1RkYxQVx1NUJGOVx1NjcyQ1x1N0M3Qlx1NTIyQlx1NTc1N1x1NEUwRVx1NTQ2OFx1NTZGNFx1NTMzQVx1NTc1N1x1NTNFQVx1ODk4MVx1NkM0Mlx1NjcwOVx1OEY2Rlx1N0E3QVx1NjgzQ1x1RkYwQ1x1OEY2Rlx1N0E3QVx1NjgzQ1x1NTk4Mlx1NUY1M1x1NTI0RFx1NTc1N1x1NURFNlx1OEZCOVx1NzY4NFx1NEUzNFx1OEZEMVx1NjU4N1x1NjcyQ1x1NEUzQVx1MzAwMlx1RkYwQ1x1RkYxQlx1RkYxRlx1N0I0OVx1NTE2OFx1ODlEMlx1NjgwN1x1NzBCOVx1RkYwQ1x1NUY1M1x1NTI0RFx1NTc1N1x1NTNGM1x1OEZCOVx1NzY4NFx1NEUzNFx1OEZEMVx1NjU4N1x1NjcyQ1x1NEUzQVx1NjI0MFx1NjcwOVx1NTE2OFx1NTM0QVx1ODlEMlx1NjgwN1x1NzBCOVx1RkYwQ1wiICtcblx0XHRcdFx0XCJcdTRFMjVcdTY4M0NcdTdBN0FcdTY4M0NcdUZGMUFcdTVGNTNcdTUyNERcdTU3NTdcdTRFMEVcdTRFMzRcdThGRDFcdTY1ODdcdTY3MkNcdTRFNEJcdTk1RjRcdTRFMjVcdTY4M0NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcdTMwMDJcIlxuXHRcdFx0KVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUubm9uZSksIFwiXHU2NUUwXHU4OTgxXHU2QzQyKE5vIFJlcXVpcmUpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc29mdCksIFwiXHU4RjZGXHU3QTdBXHU2ODNDKFNvZnQgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc3RyaWN0KSwgXCJcdTRFMjVcdTY4M0NcdTdBN0FcdTY4M0MoU3RyaWN0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUoU3RyaW5nKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGUpKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGUgPSBzdHJpbmcyU3BhY2VTdGF0ZSh2KTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIHN0YXRlZ3kgYmV0d2VlbiBpbmxpbmUgZm9ybXVsYSBhbmQgdGV4dFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjggJFx1ODg0Q1x1NTE4NVx1NTE2Q1x1NUYwRiQgXHU1NDhDXHU2NTg3XHU2NzJDXHU5NUY0XHU3Njg0XHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5ub25lKSwgXCJcdTY1RTBcdTg5ODFcdTZDNDIoTm8gUmVxdWlyZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zb2Z0KSwgXCJcdThGNkZcdTdBN0FcdTY4M0MoU29mdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zdHJpY3QpLCBcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQyhTdHJpY3QgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZSkpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZSA9IHN0cmluZzJTcGFjZVN0YXRlKHYpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2Ugc3RyYXRlZ3kgYmV0d2VlbiBsaW5rIGFuZCB0ZXh0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOCBbW3dpa2lsaW5rXV0gW21kbGlua10oLi4uKSBcdTU0OENcdTY1ODdcdTY3MkNcdTk1RjRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcdTMwMDJcdTY2N0FcdTgwRkRcdTdBN0FcdTY4M0NcdTZBMjFcdTVGMEZcdTRFMEJcdTUyMTlcdTRGMUFcdTgwMDNcdTg2NTFcdThCRTVcdTk0RkVcdTYzQTVcdTU3NTdcdTc2ODRcdTY2M0VcdTc5M0FcdTUxODVcdTVCQjlcdUZGMDhcdTU5ODJ3aWtpXHU5NEZFXHU2M0E1XHU3Njg0XHU1MjJCXHU1NDBEXHVGRjA5XHU2NzY1XHU0RTBFXHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU4RkRCXHU4ODRDXHU3QTdBXHU2ODNDXHUzMDAyXCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihcImR1bW15XCIsIFwiXHU1NDQ2XHU3QTdBXHU2ODNDKGR1bW15KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFwic21hcnRcIiwgXCJcdTY2N0FcdTgwRkRcdTdBN0FcdTY4M0MoU21hcnQpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSA/IFwic21hcnRcIiA6IFwiZHVtbXlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSA9IHYgPT0gXCJzbWFydFwiID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdFx0XHRcdC8vIG5ldyBOb3RpY2UoU3RyaW5nKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlKSk7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUubm9uZSksIFwiXHU2NUUwXHU4OTgxXHU2QzQyKE5vIFJlcXVpcmUpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc29mdCksIFwiXHU4RjZGXHU3QTdBXHU2ODNDKFNvZnQgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc3RyaWN0KSwgXCJcdTRFMjVcdTY4M0NcdTdBN0FcdTY4M0MoU3RyaWN0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUoU3RyaW5nKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUpKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUgPSBzdHJpbmcyU3BhY2VTdGF0ZSh2KTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcdTUzM0FcdTU3NTcgKEN1c3RvbSByZWd1bGFyIGV4cHJlc3Npb25zIGJsb2NrKScgfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlVzZXIgRGVmaW5lZCBSZWdFeHAgU3dpdGNoXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1NUYwMFx1NTE3M1x1RkYwQ1x1NTMzOVx1OTE0RFx1NTIzMFx1NzY4NFx1NTE4NVx1NUJCOVx1NEUwRFx1OEZEQlx1ODg0Q1x1NjgzQ1x1NUYwRlx1NTMxNlx1RkYwQ1x1NEUxNFx1NTNFRlx1NEVFNVx1OEJCRVx1N0Y2RVx1NTMzOVx1OTE0RFx1NTIzMFx1NzY4NFx1NTE4NVx1NUJCOVx1NTc1N1x1NEUwRVx1NTE3Nlx1NEVENlx1NTE4NVx1NUJCOVx1NEU0Qlx1OTVGNFx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ1N3aXRjaCkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuVXNlckRlZmluZWRSZWdTd2l0Y2ggPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwicFwiLCB7IHRleHQ6IFwiXHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU3NkY4XHU1MTczXHU3N0U1XHU4QkM2XHVGRjBDXHU4OUMxIFwiIH0pLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHR0ZXh0OiBcIlx1MzAwQVx1OTYyRVx1NEUwMFx1NUNGMFx1RkYxQVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1N0I4MFx1NjYwRVx1NjU1OVx1N0EwQlx1MzAwQlwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL2phdmFzY3JpcHQucnVhbnlpZmVuZy5jb20vc3RkbGliL3JlZ2V4cC5odG1sI1wiLFxuXHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoXCJwXCIsIHsgdGV4dDogXCJcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTg5QzRcdTUyMTlcdTRGN0ZcdTc1MjhcdThCRjRcdTY2MEVcdTRFMEVcdTc5M0FcdTRGOEJcdUZGMUFcIiB9KS5jcmVhdGVFbChcImFcIiwge1xuXHRcdFx0dGV4dDogXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTg5QzRcdTUyMTlcIixcblx0XHRcdGhyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL1lhb3podXdhL2Vhc3ktdHlwaW5nLW9ic2lkaWFuL2Jsb2IvbWFzdGVyL1VzZXJEZWZpbmVkUmVnRXhwLm1kXCIsXG5cdFx0fSk7XG5cblx0XHRjb25zdCByZWdDb250ZW50QXJlYVNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbCk7XG5cdFx0cmVnQ29udGVudEFyZWFTZXR0aW5nLnNldHRpbmdFbC5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcInN0eWxlXCIsXG5cdFx0XHRcImRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1wiXG5cdFx0KTtcblx0XHRyZWdDb250ZW50QXJlYVNldHRpbmdcblx0XHRcdC5zZXROYW1lKFwiVXNlci1kZWZpbmVkIFJlZ3VsYXIgRXhwcmVzc2lvbiwgb25lIGV4cHJlc3Npb24gcGVyIGxpbmVcIilcblx0XHRcdC5zZXREZXNjKFxuXHRcdFx0XHRcIlx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1RkYwQ1x1NTMzOVx1OTE0RFx1NTIzMFx1NzY4NFx1NTE4NVx1NUJCOVx1NEUwRFx1OEZEQlx1ODg0Q1x1NjgzQ1x1NUYwRlx1NTMxNlx1RkYwQ1x1NkJDRlx1ODg0Q1x1NEUwMFx1NEUyQVx1ODg2OFx1OEZCRVx1NUYwRlx1RkYwQ1x1ODg0Q1x1NUMzRVx1NEUwRFx1ODk4MVx1OTY4Rlx1NjEwRlx1NTJBMFx1N0E3QVx1NjgzQ1x1MzAwMlwiICtcblx0XHRcdFx0XCJcdTZCQ0ZcdTg4NENcdTY3MkJcdTVDM0UzXHU0RTJBXHU1QjU3XHU3QjI2XHU3Njg0XHU1NkZBXHU1QjlBXHU0RTNBfFx1NTQ4Q1x1NEUyNFx1NEUyQVx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1N0IyNlx1NTNGN1x1RkYwQ1x1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1N0IyNlx1NTNGN1x1NEUzQS09K1x1RkYwQ1x1NTIwNlx1NTIyQlx1NEVFM1x1ODg2OFx1NEUwRFx1ODk4MVx1NkM0Mlx1N0E3QVx1NjgzQygtKVx1RkYwQ1x1OEY2Rlx1N0E3QVx1NjgzQyg9KVx1RkYwQ1x1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQygrKVx1MzAwMlwiICtcblx0XHRcdFx0XCJcdThGRDlcdTRFMjRcdTRFMkFcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcdTdCMjZcdTUzRjdcdTUyMDZcdTUyMkJcdTRFM0FcdTUzMzlcdTkxNERcdTUzM0FcdTU3NTdcdTc2ODRcdTVERTZcdTUzRjNcdTRFMjRcdThGQjlcdTc2ODRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcIlxuXHRcdFx0KTtcblx0XHRjb25zdCByZWdDb250ZW50QXJlYSA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChcblx0XHRcdHJlZ0NvbnRlbnRBcmVhU2V0dGluZy5jb250cm9sRWxcblx0XHQpO1xuXG5cdFx0c2V0QXR0cmlidXRlcyhyZWdDb250ZW50QXJlYS5pbnB1dEVsLCB7XG5cdFx0XHRzdHlsZTogXCJtYXJnaW4tdG9wOiAxMnB4OyB3aWR0aDogMTAwJTsgIGhlaWdodDogMzB2aDtcIixcblx0XHRcdC8vIGNsYXNzOiBcIm1zLWNzcy1lZGl0b3JcIixcblx0XHR9KTtcblx0XHRyZWdDb250ZW50QXJlYVxuXHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnRXhwKVxuXHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ0V4cCA9IHZhbHVlO1xuXHRcdFx0XHR0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU2MzA3XHU1QjlBXHU2NTg3XHU0RUY2XHU0RTBEXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2IChFeGNsdWRlIEZvbGRlcnMvRmlsZXMpJyB9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiRXhjbHVkZSBGb2xkZXJzL0ZpbGVzXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlRoaXMgcGx1Z2luIHdpbGwgcGFyc2UgZWFjaCBsaW5lIGFzIGEgZXhsdWRlIGZvbGRlciBvciBmaWxlLiBGb3IgZXhhbXBsZTogRGFpbHlOb3RlLywgRGFpbHlOb3RlL1dlZWtOb3Rlcy8sIERhaWx5Tm90ZS90ZXN0Lm1kXCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+XG5cdFx0XHRcdHRleHRcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuRXhjbHVkZUZpbGVzKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkV4Y2x1ZGVGaWxlcyA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdCk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdFeHBlcmltZW50YWwgRmVhdHVyZXMnIH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJFbmhhbmNlIENoaW5lc2UgSW5wdXQgTWV0aG9kXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NEUyRFx1NjU4N1x1OEY5M1x1NTE2NVx1NkNENVx1NEUwQlx1RkYwQ1x1NTZERVx1OEY2Nlx1OEY5M1x1NTE2NVx1ODJGMVx1NjU4N1x1NjVGNlx1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5UcnlGaXhDaGluZXNlSU0pLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlRyeUZpeENoaW5lc2VJTSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlN0cmljdCBMaW5lIGJyZWFrcyBNb2RlIEVudGVyIFR3aWNlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NEUyNVx1NjgzQ1x1NjM2Mlx1ODg0Q1x1NzY4NFx1OEJCRVx1N0Y2RVx1NEUwQlx1RkYwQ1x1NTcyOFx1NjY2RVx1OTAxQVx1NjU4N1x1NjcyQ1x1ODg0Q1x1OEZEQlx1ODg0Q1x1NEUwMFx1NkIyMVx1NTZERVx1OEY2Nlx1NEYxQVx1NEVBN1x1NzUxRlx1NEUyNFx1NEUyQVx1NjM2Mlx1ODg0Q1x1N0IyNlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbnRlclR3aWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbnRlclR3aWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlB1bmMgcmVjdGlmeVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTRFQzVcdTU3MjhcdThGOTNcdTUxNjVcdThGQzdcdTdBMEJcdTRFMkRcdUZGMENcdTRFMkRcdTY1ODdcdTk1RjRcdTc2ODRcdTgyRjFcdTY1ODdcdTY4MDdcdTcwQjlcdUZGMDgsLj8hXHVGRjA5XHU4MUVBXHU1MkE4XHU4RjZDXHU2MzYyXHU0RTNBXHU1MTY4XHU4OUQyXHVGRjA4XHU1M0VGXHU2NEE0XHU5NTAwXHVGRjA5XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmNSZWN0aWZ5KS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jUmVjdGlmeSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlByaW50IGRlYnVnIGluZm8gaW4gY29uc29sZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTYzQTdcdTUyMzZcdTUzRjBcdThGOTNcdTUxRkFcdThDMDNcdThCRDVcdTRGRTFcdTYwNkZcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVidWcpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmRlYnVnID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRidWlsZFVzZXJTZWxSZXBSdWxlU2V0dGluZyhjb250YWluZXJFbDogSFRNTERldGFpbHNFbGVtZW50KXtcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuICAgICAgICBjb250YWluZXJFbC5vbnRvZ2dsZSA9IGFzeW5jICgpID0+IHtcblx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSdWxlU2V0dGluZ3NPcGVuID0gY29udGFpbmVyRWwub3Blbjtcblx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9O1xuXHRcdGNvbnN0IHN1bW1hcnkgPSBjb250YWluZXJFbC5jcmVhdGVFbChcInN1bW1hcnlcIiwge2NsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wifSk7XG5cdFx0c3VtbWFyeS5zZXRUZXh0KFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU5MDA5XHU0RTJEXHU2NTg3XHU2NzJDXHU3RjE2XHU4RjkxXHU1ODlFXHU1RjNBXHU4OUM0XHU1MjE5IChDdXN0b21pemUgU2VsZWN0aW9uIFJlcGxhY2UgUnVsZSlcIilcblxuICAgICAgICAvLyBzdW1tYXJ5LnNldEhlYWRpbmcoKS5zZXROYW1lKFwiVXNlciBkZWZpbmVkIFNlbGVjdGlvbiBSZXBsYWNlIFJ1bGVcIik7XG4gICAgICAgIC8vIHN1bW1hcnkuY3JlYXRlRGl2KFwiY29sbGFwc2VyXCIpLmNyZWF0ZURpdihcImhhbmRsZVwiKTtcblxuXHRcdGNvbnN0IHNlbGVjdGlvblJ1bGVTZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpO1xuXHRcdHNlbGVjdGlvblJ1bGVTZXR0aW5nXG5cdFx0XHQuc2V0TmFtZShcIlNlbGVjdGlvbiBSZXBsZWNlIFJ1bGVcIilcblxuXHRcdGNvbnN0IHJlcGxhY2VSdWxlVHJpZ2dlciA9IG5ldyBUZXh0Q29tcG9uZW50KHNlbGVjdGlvblJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cmVwbGFjZVJ1bGVUcmlnZ2VyLnNldFBsYWNlaG9sZGVyKFwiVHJpZ2dyIFN5bWJvbFwiKTtcblxuXHRcdGNvbnN0IHJlcGxhY2VMZWZ0U3RyaW5nID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KHNlbGVjdGlvblJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cmVwbGFjZUxlZnRTdHJpbmcuc2V0UGxhY2Vob2xkZXIoXCJOZXcgTGVmdCBTaWRlIFN0cmluZ1wiKTtcblxuXHRcdGNvbnN0IHJlcGxhY2VSaWdodFN0cmluZyA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChzZWxlY3Rpb25SdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHJlcGxhY2VSaWdodFN0cmluZy5zZXRQbGFjZWhvbGRlcihcIk5ldyBSaWdodCBTaWRlIFN0cmluZ1wiKTtcblxuXHRcdHNlbGVjdGlvblJ1bGVTZXR0aW5nXG5cdFx0XHQuYWRkQnV0dG9uKChidXR0b24pID0+IHtcblx0XHRcdFx0YnV0dG9uXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCIrXCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJBZGQgUnVsZVwiKVxuXHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jIChidXR0b25FbDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRsZXQgdHJpZ2dlciA9IHJlcGxhY2VSdWxlVHJpZ2dlci5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0bGV0IGxlZnQgPSByZXBsYWNlTGVmdFN0cmluZy5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gcmVwbGFjZVJpZ2h0U3RyaW5nLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAodHJpZ2dlciAmJiAobGVmdCB8fCByaWdodCkpIHtcblx0XHRcdFx0XHRcdFx0aWYodHJpZ2dlci5sZW5ndGg+MSl7XG5cdFx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIklubHZhbGlkIHRyaWdnZXIsIHRyaWdnZXIgbXVzdCBiZSBhIHN5bWJvbCBvZiBsZW5ndGggMVwiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLmFkZFVzZXJTZWxlY3Rpb25SZXBSdWxlKHRyaWdnZXIsIGxlZnQsIHJpZ2h0KSl7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwid2FybmluZyEgVHJpZ2dlciBcIiArIHRyaWdnZXIgKyBcIiBpcyBhbHJlYWR5IGV4aXN0IVwiKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIm1pc3NpbmcgaW5wdXRcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdC8vIGNvbnN0IHNlbFJlcFJ1bGVDb250YWluZXIgPSBjb250YWluZXJFbC5jcmVhdGVFbChcImRpdlwiKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHRyaWdnZXIgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXJbaV07XG5cdFx0XHRsZXQgbGVmdF9zID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5sZWZ0O1xuXHRcdFx0bGV0IHJpZ2h0X3MgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2ldLnJpZ2h0O1xuXHRcdFx0bGV0IHNob3dTdHIgPSBcIlRyaWdnZXI6IFwiICsgdHJpZ2dlciArIFwiIFx1MjE5MiBcIiArIHNob3dTdHJpbmcobGVmdF9zKSArIFwic2VsZWN0ZWRcIiArIHNob3dTdHJpbmcocmlnaHRfcyk7XG5cdFx0XHQvLyBjb25zdCBzZXR0aW5nSXRlbSA9IHNlbFJlcFJ1bGVDb250YWluZXIuY3JlYXRlRWwoXCJkaXZcIik7XG5cdFx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdFx0LnNldE5hbWUoc2hvd1N0cilcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJnZWFyXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkVkaXQgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRuZXcgU2VsZWN0UnVsZUVkaXRNb2RhbCh0aGlzLmFwcCwgdHJpZ2dlcixsZWZ0X3MsIHJpZ2h0X3MsIGFzeW5jIChuZXdfbGVmdCwgbmV3X3JpZ2h0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4udXBkYXRlVXNlclNlbGVjdGlvblJlcFJ1bGUoaSwgbmV3X2xlZnQsIG5ld19yaWdodCk7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH0pLm9wZW4oKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwidHJhc2hcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiUmVtb3ZlIHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uZGVsZXRlVXNlclNlbGVjdGlvblJlcFJ1bGUoaSk7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pO1xuXHRcdH1cblxuXG5cdH1cblxuXHRidWlsZFVzZXJEZWxldGVSdWxlU2V0dGluZyhjb250YWluZXJFbDogSFRNTERldGFpbHNFbGVtZW50KXtcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuICAgICAgICBjb250YWluZXJFbC5vbnRvZ2dsZSA9IGFzeW5jICgpID0+IHtcblx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxSdWxlU2V0dGluZ3NPcGVuID0gY29udGFpbmVyRWwub3Blbjtcblx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9O1xuXHRcdGNvbnN0IHN1bW1hcnkgPSBjb250YWluZXJFbC5jcmVhdGVFbChcInN1bW1hcnlcIiwge2NsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wifSk7XG5cdFx0c3VtbWFyeS5zZXRUZXh0KFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU1MjIwXHU5NjY0XHU3RjE2XHU4RjkxXHU1ODlFXHU1RjNBXHU4OUM0XHU1MjE5IChDdXN0b21pemUgRGVsZXRlIFJ1bGUpXCIpXG5cblx0XHRjb25zdCBkZWxldGVSdWxlU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRkZWxldGVSdWxlU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJEZWxldGUgUnVsZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTg5QzRcdTUyMTlcdUZGMUFcdTc1Mjh8XHU0RUUzXHU4ODY4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU1RkM1XHU5ODdCXHU1MzA1XHU1NDJCXHU1MTQ5XHU2ODA3XHUzMDAyIFRpcHM6IFVzaW5nIHwgdG8gaW5kaWNhdGUgdGhlIGN1cnNvciBwb3NpdGlvbi5cIilcblxuXHRcdGNvbnN0IHBhdHRlcm5CZWZvcmUgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoZGVsZXRlUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRwYXR0ZXJuQmVmb3JlLnNldFBsYWNlaG9sZGVyKFwiQmVmb3JlIERlbGV0ZVwiKTtcblxuXHRcdGNvbnN0IHBhdHRlcm5BZnRlciA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChkZWxldGVSdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHBhdHRlcm5BZnRlci5zZXRQbGFjZWhvbGRlcihcIk5ldyBQYXR0ZXJuXCIpO1xuXG5cdFx0ZGVsZXRlUnVsZVNldHRpbmdcblx0XHRcdC5hZGRCdXR0b24oKGJ1dHRvbikgPT4ge1xuXHRcdFx0XHRidXR0b25cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIitcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkFkZCBSdWxlXCIpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKGJ1dHRvbkVsOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdGxldCBiZWZvcmUgPSBwYXR0ZXJuQmVmb3JlLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgYWZ0ZXIgPSBwYXR0ZXJuQWZ0ZXIuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGlmIChiZWZvcmUgJiYgYWZ0ZXIpIHtcblx0XHRcdFx0XHRcdFx0bGV0IHJlZ1J1bGUgPSAvXFx8L2c7XG5cdFx0XHRcdFx0XHRcdGlmKGJlZm9yZS5zZWFyY2gocmVnUnVsZSk9PS0xfHxhZnRlci5zZWFyY2gocmVnUnVsZSk9PS0xKXtcblx0XHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiSW5sdmFsaWQgdHJpZ2dlciwgcGF0dGVybiBtdXN0IGNvbnRhaW4gc3ltYm9sIFxcfCB3aGljaCBpbmRpY2F0ZSBjdXJzb3IgcG9zaXRpb25cIik7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uYWRkVXNlckRlbGV0ZVJ1bGUoYmVmb3JlLCBhZnRlcik7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwibWlzc2luZyBpbnB1dFwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0Lmxlbmd0aDsgaSsrKXtcblx0XHRcdGxldCBiZWZvcmUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0W2ldWzBdO1xuXHRcdFx0bGV0IGFmdGVyID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdFtpXVsxXTtcblx0XHRcdGxldCBzaG93U3RyID0gXCJcXFwiXCIgKyBzaG93U3RyaW5nKGJlZm9yZSkgKyBcIlxcXCIgIGRlbGV0ZS5iYWNrd2FyZHMgIFx1MjE5MiBcXFwiXCIrIHNob3dTdHJpbmcoYWZ0ZXIpK1wiXFxcIlwiOyBcblx0XHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0XHQuc2V0TmFtZShzaG93U3RyKVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcImdlYXJcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiRWRpdCBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5ldyBFZGl0Q29udmVydFJ1bGVNb2RhbCh0aGlzLmFwcCwgUnVsZVR5cGUuZGVsZXRlLCBiZWZvcmUsIGFmdGVyLCBhc3luYyAobmV3X2JlZm9yZSwgbmV3X2FmdGVyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4udXBkYXRlVXNlckRlbGV0ZVJ1bGUoaSwgbmV3X2JlZm9yZSwgbmV3X2FmdGVyKTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fSkub3BlbigpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSlcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJ0cmFzaFwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJSZW1vdmUgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5kZWxldGVVc2VyRGVsZXRlUnVsZShpKTtcblx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0fVxuXG5cdH1cblxuXHRidWlsZFVzZXJDb252ZXJ0UnVsZVNldHRpbmcoY29udGFpbmVyRWw6IEhUTUxEZXRhaWxzRWxlbWVudCl7XG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcbiAgICAgICAgY29udGFpbmVyRWwub250b2dnbGUgPSBhc3luYyAoKSA9PiB7XG5cdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ3Z0UnVsZVNldHRpbmdzT3BlbiA9IGNvbnRhaW5lckVsLm9wZW47XG5cdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgfTtcblx0XHRjb25zdCBzdW1tYXJ5ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoXCJzdW1tYXJ5XCIsIHtjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIn0pO1xuXHRcdHN1bW1hcnkuc2V0VGV4dChcIlx1ODFFQVx1NUI5QVx1NEU0OVx1N0YxNlx1OEY5MVx1OEY2Q1x1NjM2Mlx1ODlDNFx1NTIxOSAoQ3VzdG9taXplIENvbnZlcnQgUnVsZSlcIilcblxuXHRcdGNvbnN0IGNvbnZlcnRSdWxlU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRjb252ZXJ0UnVsZVNldHRpbmdcblx0XHRcdC5zZXROYW1lKFwiQ29udmVydCBSdWxlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1ODlDNFx1NTIxOVx1RkYxQVx1NzUyOHxcdTRFRTNcdTg4NjhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTVGQzVcdTk4N0JcdTUzMDVcdTU0MkJcdTUxNDlcdTY4MDdcdTMwMDIgVGlwczogVXNpbmcgfCB0byBpbmRpY2F0ZSB0aGUgY3Vyc29yIHBvc2l0aW9uLlwiKVxuXG5cdFx0Y29uc3QgcGF0dGVybkJlZm9yZSA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChjb252ZXJ0UnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRwYXR0ZXJuQmVmb3JlLnNldFBsYWNlaG9sZGVyKFwiQmVmb3JlIENvbnZlcnRcIik7XG5cblx0XHRjb25zdCBwYXR0ZXJuQWZ0ZXIgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoY29udmVydFJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cGF0dGVybkFmdGVyLnNldFBsYWNlaG9sZGVyKFwiTmV3IFBhdHRlcm5cIik7XG5cblx0XHRjb252ZXJ0UnVsZVNldHRpbmdcblx0XHRcdC5hZGRCdXR0b24oKGJ1dHRvbikgPT4ge1xuXHRcdFx0XHRidXR0b25cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIitcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkFkZCBSdWxlXCIpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKGJ1dHRvbkVsOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdGxldCBiZWZvcmUgPSBwYXR0ZXJuQmVmb3JlLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgYWZ0ZXIgPSBwYXR0ZXJuQWZ0ZXIuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGlmIChiZWZvcmUgJiYgYWZ0ZXIpIHtcblx0XHRcdFx0XHRcdFx0bGV0IHJlZ1J1bGUgPSAvXFx8L2c7XG5cdFx0XHRcdFx0XHRcdGlmKGJlZm9yZS5zZWFyY2gocmVnUnVsZSk9PS0xfHxhZnRlci5zZWFyY2gocmVnUnVsZSk9PS0xKXtcblx0XHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiSW5sdmFsaWQgdHJpZ2dlciwgcGF0dGVybiBtdXN0IGNvbnRhaW4gc3ltYm9sIFxcfCB3aGljaCBpbmRpY2F0ZSBjdXJzb3IgcG9zaXRpb25cIik7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uYWRkVXNlckNvbnZlcnRSdWxlKGJlZm9yZSwgYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIm1pc3NpbmcgaW5wdXRcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QubGVuZ3RoOyBpKyspe1xuXHRcdFx0bGV0IGJlZm9yZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2ldWzBdO1xuXHRcdFx0bGV0IGFmdGVyID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3RbaV1bMV07XG5cdFx0XHRsZXQgc2hvd1N0ciA9IFwiXFxcIlwiICsgc2hvd1N0cmluZyhiZWZvcmUpICsgXCJcXFwiICBhdXRvIGNvbnZlcnQgdG8gXFxcIlwiKyBzaG93U3RyaW5nKGFmdGVyKStcIlxcXCJcIjsgXG5cdFx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdFx0LnNldE5hbWUoc2hvd1N0cilcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJnZWFyXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkVkaXQgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRuZXcgRWRpdENvbnZlcnRSdWxlTW9kYWwodGhpcy5hcHAsIFJ1bGVUeXBlLmNvbnZlcnQsIGJlZm9yZSwgYWZ0ZXIsIGFzeW5jIChuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi51cGRhdGVVc2VyQ29udmVydFJ1bGUoaSwgbmV3X2JlZm9yZSwgbmV3X2FmdGVyKTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fSkub3BlbigpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSlcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJ0cmFzaFwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJSZW1vdmUgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5kZWxldGVVc2VyQ29udmVydFJ1bGUoaSk7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG59XG5cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlcyhlbGVtZW50OiBhbnksIGF0dHJpYnV0ZXM6IGFueSkge1xuXHRmb3IgKGxldCBrZXkgaW4gYXR0cmlidXRlcykge1xuXHRcdGVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTtcblx0fVxufVxuXG5cbmV4cG9ydCBjbGFzcyBTZWxlY3RSdWxlRWRpdE1vZGFsIGV4dGVuZHMgTW9kYWwge1xuXHR0cmlnZ2VyOiBzdHJpbmc7XG5cdG9sZF9sZWZ0OiBzdHJpbmc7XG5cdG9sZF9yaWdodDogc3RyaW5nO1xuXHRuZXdfbGVmdDogc3RyaW5nO1xuXHRuZXdfcmlnaHQ6IHN0cmluZztcblx0b25TdWJtaXQ6IChuZXdfbGVmdDogc3RyaW5nLCBuZXdfcmlnaHQ6c3RyaW5nKSA9PiB2b2lkO1xuXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwLCB0cmlnZ2VyOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZywgb25TdWJtaXQ6IChuZXdfbGVmdDogc3RyaW5nLCBuZXdfcmlnaHQ6c3RyaW5nKSA9PiB2b2lkKSB7XG5cdFx0c3VwZXIoYXBwKTtcblx0XHR0aGlzLnRyaWdnZXIgPSB0cmlnZ2VyO1xuXHRcdHRoaXMub2xkX2xlZnQgPSBsZWZ0O1xuXHRcdHRoaXMub2xkX3JpZ2h0ID0gcmlnaHQ7XG5cdFx0dGhpcy5uZXdfbGVmdCA9IGxlZnQ7XG5cdFx0dGhpcy5uZXdfcmlnaHQgPSByaWdodDtcblxuXHRcdHRoaXMub25TdWJtaXQgPSBvblN1Ym1pdDtcblx0fVxuXG5cdG9uT3BlbigpIHtcblx0XHRjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcblxuXHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcImgxXCIsIHsgdGV4dDogXCJFZGl0IFNlbGVjdGlvbiBSZXBsYWNlIFJ1bGVcIiB9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiVHJpZ2dlclwiKVxuXHRcdFx0LmFkZFRleHQoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLnRyaWdnZXIpO1xuXHRcdFx0XHR0ZXh0LnNldERpc2FibGVkKHRydWUpO1xuXHRcdFx0fSlcblx0XHRcblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIkxlZnRcIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMub2xkX2xlZnQpO1xuXHRcdFx0XHR0ZXh0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubmV3X2xlZnQgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIlJpZ2h0XCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLm9sZF9yaWdodCk7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfcmlnaHQgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5hZGRCdXR0b24oKGJ0bikgPT5cblx0XHRcdFx0YnRuXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCJVcGRhdGVcIilcblx0XHRcdFx0XHQuc2V0Q3RhKClcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHR0aGlzLm9uU3VibWl0KHRoaXMubmV3X2xlZnQsIHRoaXMubmV3X3JpZ2h0KTtcblx0XHRcdFx0XHR9KSk7XG5cdH1cblxuXHRvbkNsb3NlKCkge1xuXHRcdGxldCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcblx0XHRjb250ZW50RWwuZW1wdHkoKTtcblx0fVxufVxuXG5cblxuZXhwb3J0IGNsYXNzIEVkaXRDb252ZXJ0UnVsZU1vZGFsIGV4dGVuZHMgTW9kYWwge1xuXHR0eXBlOiBSdWxlVHlwZTtcblx0b2xkX2JlZm9yZTogc3RyaW5nO1xuXHRvbGRfYWZ0ZXI6IHN0cmluZztcblx0bmV3X2JlZm9yZTogc3RyaW5nO1xuXHRuZXdfYWZ0ZXI6IHN0cmluZztcblx0b25TdWJtaXQ6IChuZXdfYmVmb3JlOiBzdHJpbmcsIG5ld19hZnRlcjpzdHJpbmcpID0+IHZvaWQ7XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHR5cGU6IFJ1bGVUeXBlLCBiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZywgb25TdWJtaXQ6IChuZXdfYmVmb3JlOiBzdHJpbmcsIG5ld19hZnRlcjpzdHJpbmcpID0+IHZvaWQpIHtcblx0XHRzdXBlcihhcHApO1xuXHRcdHRoaXMudHlwZSA9IHR5cGU7XG5cdFx0dGhpcy5vbGRfYmVmb3JlID0gYmVmb3JlO1xuXHRcdHRoaXMub2xkX2FmdGVyID0gYWZ0ZXI7XG5cdFx0dGhpcy5uZXdfYmVmb3JlID0gYmVmb3JlO1xuXHRcdHRoaXMubmV3X2FmdGVyID0gYWZ0ZXI7XG5cblx0XHR0aGlzLm9uU3VibWl0ID0gb25TdWJtaXQ7XG5cdH1cblxuXHRvbk9wZW4oKSB7XG5cdFx0Y29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cblx0XHRjb250ZW50RWwuY3JlYXRlRWwoXCJoMVwiLCB7IHRleHQ6IFwiRWRpdCBcIiArIHRoaXMudHlwZX0pO1xuXHRcdFxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiT2xkIFBhdHRlcm5cIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMub2xkX2JlZm9yZSk7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfYmVmb3JlID0gdmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJOZXcgUGF0dGVyblwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy5vbGRfYWZ0ZXIpO1xuXHRcdFx0XHR0ZXh0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubmV3X2FmdGVyID0gdmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH0pO1xuXG5cblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuYWRkQnV0dG9uKChidG4pID0+XG5cdFx0XHRcdGJ0blxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiVXBkYXRlXCIpXG5cdFx0XHRcdFx0LnNldEN0YSgpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuY2hlY2tDb252ZXJ0UGF0dGVyblN0cmluZyh0aGlzLm5ld19iZWZvcmUsIHRoaXMubmV3X2FmdGVyKSlcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGhpcy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9uU3VibWl0KHRoaXMubmV3X2JlZm9yZSwgdGhpcy5uZXdfYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIkludmFsaWQgcGF0dGVybiBzdHJpbmchXCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0fSkpO1xuXHR9XG5cblx0Y2hlY2tDb252ZXJ0UGF0dGVyblN0cmluZyhiZWZvcmU6IHN0cmluZywgYWZ0ZXI6c3RyaW5nKTpib29sZWFue1xuXHRcdGxldCByZWdSdWxlID0gL1xcfC9nO1xuXHRcdGlmKGJlZm9yZS5zZWFyY2gocmVnUnVsZSk9PS0xIHx8IGFmdGVyLnNlYXJjaChyZWdSdWxlKT09LTEpIHJldHVybiBmYWxzZTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdG9uQ2xvc2UoKSB7XG5cdFx0bGV0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXHRcdGNvbnRlbnRFbC5lbXB0eSgpO1xuXHR9XG59XG5cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBNkg7QUFDN0gsbUJBQXVGO0FBQ3ZGLG9CQUFxQzs7O0FDRnJDLHNCQUFzQjs7O0FDT2YscUJBQXFCLEtBQVUsUUFBZTtBQUNwRCxNQUFJLE9BQU8sSUFBSSxPQUFPLE1BQU07QUFDNUIsU0FBTyxFQUFDLE1BQU0sS0FBSyxTQUFTLEdBQUcsSUFBSSxTQUFTLEtBQUssS0FBSTtBQUN0RDtBQUVPLDZCQUE2QixJQUF5QjtBQUM1RCxNQUFJLG1CQUE0QjtBQUFBLElBQUM7QUFBQSxJQUMzQjtBQUFBLElBQXNCO0FBQUEsSUFBYztBQUFBLElBQWU7QUFBQSxJQUFjO0FBQUEsSUFBa0I7QUFBQSxJQUNuRjtBQUFBLElBQW9CO0FBQUEsSUFBa0I7QUFBQSxJQUFtQjtBQUFBLElBQWM7QUFB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 diff --git a/.obsidian/plugins/easy-typing-obsidian/manifest.json b/.obsidian/plugins/easy-typing-obsidian/manifest.json index c29315d..415d920 100644 --- a/.obsidian/plugins/easy-typing-obsidian/manifest.json +++ b/.obsidian/plugins/easy-typing-obsidian/manifest.json @@ -1,7 +1,7 @@ { "id": "easy-typing-obsidian", "name": "Easy Typing", - "version": "5.1.8", + "version": "5.1.9", "minAppVersion": "0.15.0", "description": "Autoformat your note as typing.(Auto captalize, autospace)", "author": "yaozhuwa", diff --git a/.obsidian/plugins/notion-like-tables/main.js b/.obsidian/plugins/notion-like-tables/main.js index a2ec5d8..2dbacbe 100644 --- a/.obsidian/plugins/notion-like-tables/main.js +++ b/.obsidian/plugins/notion-like-tables/main.js @@ -1,8 +1,4 @@ -/* -THIS IS A GENERATED/BUNDLED FILE BY ESBUILD -if you want to view the source, please visit the github repository of this plugin -*/ - +"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; @@ -26,6 +22,18 @@ var __spreadValues = (a2, b2) => { return a2; }; var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2)); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; @@ -46,6 +54,10 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { @@ -313,7 +325,7 @@ var require_react_development = __commonJS({ } } } - function getWrappedName2(outerType, innerType, wrapperName) { + function getWrappedName(outerType, innerType, wrapperName) { var displayName = outerType.displayName; if (displayName) { return displayName; @@ -362,7 +374,7 @@ var require_react_development = __commonJS({ var provider = type; return getContextName(provider._context) + ".Provider"; case REACT_FORWARD_REF_TYPE: - return getWrappedName2(type, type.render, "ForwardRef"); + return getWrappedName(type, type.render, "ForwardRef"); case REACT_MEMO_TYPE: var outerName = type.displayName || null; if (outerName !== null) { @@ -372,9 +384,9 @@ var require_react_development = __commonJS({ case REACT_LAZY_TYPE: { var lazyComponent = type; var payload = lazyComponent._payload; - var init = lazyComponent._init; + var init2 = lazyComponent._init; try { - return getComponentNameFromType(init(payload)); + return getComponentNameFromType(init2(payload)); } catch (x2) { return null; } @@ -493,7 +505,7 @@ var require_react_development = __commonJS({ } return element; }; - function createElement(type, config, children) { + function createElement2(type, config, children) { var propName; var props = {}; var key = null; @@ -760,7 +772,7 @@ var require_react_development = __commonJS({ } return children; } - function createContext3(defaultValue) { + function createContext2(defaultValue) { var context = { $$typeof: REACT_CONTEXT_TYPE, _currentValue: defaultValue, @@ -937,7 +949,7 @@ var require_react_development = __commonJS({ } return lazyType; } - function forwardRef3(render) { + function forwardRef(render) { { if (render != null && render.$$typeof === REACT_MEMO_TYPE) { error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."); @@ -994,7 +1006,7 @@ var require_react_development = __commonJS({ } return false; } - function memo2(type, compare) { + function memo(type, compare) { { if (!isValidElementType2(type)) { error("memo: The first argument must be a component. Instead received: %s", type === null ? "null" : typeof type); @@ -1032,7 +1044,7 @@ var require_react_development = __commonJS({ } return dispatcher; } - function useContext6(Context) { + function useContext5(Context) { var dispatcher = resolveDispatcher(); { if (Context._context !== void 0) { @@ -1046,19 +1058,19 @@ var require_react_development = __commonJS({ } return dispatcher.useContext(Context); } - function useState7(initialState3) { + function useState2(initialState2) { var dispatcher = resolveDispatcher(); - return dispatcher.useState(initialState3); + return dispatcher.useState(initialState2); } - function useReducer(reducer, initialArg, init) { + function useReducer(reducer, initialArg, init2) { var dispatcher = resolveDispatcher(); - return dispatcher.useReducer(reducer, initialArg, init); + return dispatcher.useReducer(reducer, initialArg, init2); } - function useRef7(initialValue) { + function useRef3(initialValue) { var dispatcher = resolveDispatcher(); return dispatcher.useRef(initialValue); } - function useEffect7(create, deps) { + function useEffect2(create, deps) { var dispatcher = resolveDispatcher(); return dispatcher.useEffect(create, deps); } @@ -1074,7 +1086,7 @@ var require_react_development = __commonJS({ var dispatcher = resolveDispatcher(); return dispatcher.useCallback(callback, deps); } - function useMemo4(create, deps) { + function useMemo3(create, deps) { var dispatcher = resolveDispatcher(); return dispatcher.useMemo(create, deps); } @@ -1082,7 +1094,7 @@ var require_react_development = __commonJS({ var dispatcher = resolveDispatcher(); return dispatcher.useImperativeHandle(ref, create, deps); } - function useDebugValue3(value, formatterFn) { + function useDebugValue2(value, formatterFn) { { var dispatcher = resolveDispatcher(); return dispatcher.useDebugValue(value, formatterFn); @@ -1100,9 +1112,9 @@ var require_react_development = __commonJS({ var dispatcher = resolveDispatcher(); return dispatcher.useId(); } - function useSyncExternalStore3(subscribe, getSnapshot, getServerSnapshot) { + function useSyncExternalStore3(subscribe2, getSnapshot, getServerSnapshot) { var dispatcher = resolveDispatcher(); - return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot); + return dispatcher.useSyncExternalStore(subscribe2, getSnapshot, getServerSnapshot); } var disabledDepth = 0; var prevLog; @@ -1342,9 +1354,9 @@ var require_react_development = __commonJS({ case REACT_LAZY_TYPE: { var lazyComponent = type; var payload = lazyComponent._payload; - var init = lazyComponent._init; + var init2 = lazyComponent._init; try { - return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); + return describeUnknownElementTypeFrameInDEV(init2(payload), source, ownerFn); } catch (x2) { } } @@ -1365,7 +1377,7 @@ var require_react_development = __commonJS({ } } } - function checkPropTypes(typeSpecs, values2, location, componentName, element) { + function checkPropTypes(typeSpecs, values, location, componentName, element) { { var has = Function.call.bind(hasOwnProperty); for (var typeSpecName in typeSpecs) { @@ -1377,7 +1389,7 @@ var require_react_development = __commonJS({ err.name = "Invariant Violation"; throw err; } - error$1 = typeSpecs[typeSpecName](values2, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); + error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); } catch (ex) { error$1 = ex; } @@ -1569,7 +1581,7 @@ var require_react_development = __commonJS({ error("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", typeString, info); } } - var element = createElement.apply(this, arguments); + var element = createElement2.apply(this, arguments); if (element == null) { return element; } @@ -1824,29 +1836,29 @@ var require_react_development = __commonJS({ exports.Suspense = REACT_SUSPENSE_TYPE; exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals; exports.cloneElement = cloneElement$1; - exports.createContext = createContext3; + exports.createContext = createContext2; exports.createElement = createElement$1; exports.createFactory = createFactory; exports.createRef = createRef; - exports.forwardRef = forwardRef3; + exports.forwardRef = forwardRef; exports.isValidElement = isValidElement; exports.lazy = lazy; - exports.memo = memo2; + exports.memo = memo; exports.startTransition = startTransition; exports.unstable_act = act; exports.useCallback = useCallback; - exports.useContext = useContext6; - exports.useDebugValue = useDebugValue3; + exports.useContext = useContext5; + exports.useDebugValue = useDebugValue2; exports.useDeferredValue = useDeferredValue; - exports.useEffect = useEffect7; + exports.useEffect = useEffect2; exports.useId = useId; exports.useImperativeHandle = useImperativeHandle; exports.useInsertionEffect = useInsertionEffect; exports.useLayoutEffect = useLayoutEffect2; - exports.useMemo = useMemo4; + exports.useMemo = useMemo3; exports.useReducer = useReducer; - exports.useRef = useRef7; - exports.useState = useState7; + exports.useRef = useRef3; + exports.useState = useState2; exports.useSyncExternalStore = useSyncExternalStore3; exports.useTransition = useTransition; exports.version = ReactVersion; @@ -1896,10 +1908,10 @@ var require_scheduler_development = __commonJS({ return null; } var first = heap[0]; - var last = heap.pop(); - if (last !== first) { - heap[0] = last; - siftDown(heap, last, 0); + var last2 = heap.pop(); + if (last2 !== first) { + heap[0] = last2; + siftDown(heap, last2, 0); } return first; } @@ -1923,21 +1935,21 @@ var require_scheduler_development = __commonJS({ var halfLength = length >>> 1; while (index < halfLength) { var leftIndex = (index + 1) * 2 - 1; - var left2 = heap[leftIndex]; + var left = heap[leftIndex]; var rightIndex = leftIndex + 1; - var right2 = heap[rightIndex]; - if (compare(left2, node) < 0) { - if (rightIndex < length && compare(right2, left2) < 0) { - heap[index] = right2; + var right = heap[rightIndex]; + if (compare(left, node) < 0) { + if (rightIndex < length && compare(right, left) < 0) { + heap[index] = right; heap[rightIndex] = node; index = rightIndex; } else { - heap[index] = left2; + heap[index] = left; heap[leftIndex] = node; index = leftIndex; } - } else if (rightIndex < length && compare(right2, node) < 0) { - heap[index] = right2; + } else if (rightIndex < length && compare(right, node) < 0) { + heap[index] = right; heap[rightIndex] = node; index = rightIndex; } else { @@ -2084,7 +2096,7 @@ var require_scheduler_development = __commonJS({ return false; } } - function unstable_runWithPriority(priorityLevel, eventHandler) { + function unstable_runWithPriority(priorityLevel, eventHandler2) { switch (priorityLevel) { case ImmediatePriority: case UserBlockingPriority: @@ -2098,12 +2110,12 @@ var require_scheduler_development = __commonJS({ var previousPriorityLevel = currentPriorityLevel; currentPriorityLevel = priorityLevel; try { - return eventHandler(); + return eventHandler2(); } finally { currentPriorityLevel = previousPriorityLevel; } } - function unstable_next(eventHandler) { + function unstable_next(eventHandler2) { var priorityLevel; switch (currentPriorityLevel) { case ImmediatePriority: @@ -2118,7 +2130,7 @@ var require_scheduler_development = __commonJS({ var previousPriorityLevel = currentPriorityLevel; currentPriorityLevel = priorityLevel; try { - return eventHandler(); + return eventHandler2(); } finally { currentPriorityLevel = previousPriorityLevel; } @@ -2342,9 +2354,9 @@ var require_react_dom_development = __commonJS({ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); } - var React11 = require_react(); + var React49 = require_react(); var Scheduler = require_scheduler(); - var ReactSharedInternals = React11.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactSharedInternals = React49.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; var suppressWarning = false; function setSuppressWarning(newSuppressWarning) { { @@ -2393,11 +2405,11 @@ var require_react_dom_development = __commonJS({ var HostPortal = 4; var HostComponent = 5; var HostText = 6; - var Fragment6 = 7; + var Fragment2 = 7; var Mode = 8; var ContextConsumer = 9; var ContextProvider = 10; - var ForwardRef2 = 11; + var ForwardRef = 11; var Profiler = 12; var SuspenseComponent = 13; var MemoComponent = 14; @@ -2606,7 +2618,7 @@ var require_react_dom_development = __commonJS({ return false; } function getPropertyInfo(name) { - return properties2.hasOwnProperty(name) ? properties2[name] : null; + return properties.hasOwnProperty(name) ? properties[name] : null; } function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL2, removeEmptyString) { this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN; @@ -2618,7 +2630,7 @@ var require_react_dom_development = __commonJS({ this.sanitizeURL = sanitizeURL2; this.removeEmptyString = removeEmptyString; } - var properties2 = {}; + var properties = {}; var reservedProps = [ "children", "dangerouslySetInnerHTML", @@ -2630,7 +2642,7 @@ var require_react_dom_development = __commonJS({ "style" ]; reservedProps.forEach(function(name) { - properties2[name] = new PropertyInfoRecord( + properties[name] = new PropertyInfoRecord( name, RESERVED, false, @@ -2642,7 +2654,7 @@ var require_react_dom_development = __commonJS({ }); [["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function(_ref) { var name = _ref[0], attributeName = _ref[1]; - properties2[name] = new PropertyInfoRecord( + properties[name] = new PropertyInfoRecord( name, STRING, false, @@ -2653,7 +2665,7 @@ var require_react_dom_development = __commonJS({ ); }); ["contentEditable", "draggable", "spellCheck", "value"].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( + properties[name] = new PropertyInfoRecord( name, BOOLEANISH_STRING, false, @@ -2664,7 +2676,7 @@ var require_react_dom_development = __commonJS({ ); }); ["autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha"].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( + properties[name] = new PropertyInfoRecord( name, BOOLEANISH_STRING, false, @@ -2699,7 +2711,7 @@ var require_react_dom_development = __commonJS({ "seamless", "itemScope" ].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( + properties[name] = new PropertyInfoRecord( name, BOOLEAN, false, @@ -2715,7 +2727,7 @@ var require_react_dom_development = __commonJS({ "muted", "selected" ].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( + properties[name] = new PropertyInfoRecord( name, BOOLEAN, true, @@ -2729,7 +2741,7 @@ var require_react_dom_development = __commonJS({ "capture", "download" ].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( + properties[name] = new PropertyInfoRecord( name, OVERLOADED_BOOLEAN, false, @@ -2745,7 +2757,7 @@ var require_react_dom_development = __commonJS({ "size", "span" ].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( + properties[name] = new PropertyInfoRecord( name, POSITIVE_NUMERIC, false, @@ -2756,7 +2768,7 @@ var require_react_dom_development = __commonJS({ ); }); ["rowSpan", "start"].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( + properties[name] = new PropertyInfoRecord( name, NUMERIC, false, @@ -2767,7 +2779,7 @@ var require_react_dom_development = __commonJS({ ); }); var CAMELIZE = /[\-\:]([a-z])/g; - var capitalize2 = function(token) { + var capitalize = function(token) { return token[1].toUpperCase(); }; [ @@ -2845,8 +2857,8 @@ var require_react_dom_development = __commonJS({ "xmlns:xlink", "x-height" ].forEach(function(attributeName) { - var name = attributeName.replace(CAMELIZE, capitalize2); - properties2[name] = new PropertyInfoRecord( + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord( name, STRING, false, @@ -2864,8 +2876,8 @@ var require_react_dom_development = __commonJS({ "xlink:title", "xlink:type" ].forEach(function(attributeName) { - var name = attributeName.replace(CAMELIZE, capitalize2); - properties2[name] = new PropertyInfoRecord( + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord( name, STRING, false, @@ -2880,8 +2892,8 @@ var require_react_dom_development = __commonJS({ "xml:lang", "xml:space" ].forEach(function(attributeName) { - var name = attributeName.replace(CAMELIZE, capitalize2); - properties2[name] = new PropertyInfoRecord( + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord( name, STRING, false, @@ -2892,7 +2904,7 @@ var require_react_dom_development = __commonJS({ ); }); ["tabIndex", "crossOrigin"].forEach(function(attributeName) { - properties2[attributeName] = new PropertyInfoRecord( + properties[attributeName] = new PropertyInfoRecord( attributeName, STRING, false, @@ -2903,7 +2915,7 @@ var require_react_dom_development = __commonJS({ ); }); var xlinkHref = "xlinkHref"; - properties2[xlinkHref] = new PropertyInfoRecord( + properties[xlinkHref] = new PropertyInfoRecord( "xlinkHref", STRING, false, @@ -2913,7 +2925,7 @@ var require_react_dom_development = __commonJS({ false ); ["src", "href", "action", "formAction"].forEach(function(attributeName) { - properties2[attributeName] = new PropertyInfoRecord( + properties[attributeName] = new PropertyInfoRecord( attributeName, STRING, false, @@ -3331,9 +3343,9 @@ var require_react_dom_development = __commonJS({ case REACT_LAZY_TYPE: { var lazyComponent = type; var payload = lazyComponent._payload; - var init = lazyComponent._init; + var init2 = lazyComponent._init; try { - return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); + return describeUnknownElementTypeFrameInDEV(init2(payload), source, ownerFn); } catch (x2) { } } @@ -3357,7 +3369,7 @@ var require_react_dom_development = __commonJS({ case IndeterminateComponent: case SimpleMemoComponent: return describeFunctionComponentFrame(fiber.type); - case ForwardRef2: + case ForwardRef: return describeFunctionComponentFrame(fiber.type.render); case ClassComponent: return describeClassComponentFrame(fiber.type); @@ -3378,7 +3390,7 @@ var require_react_dom_development = __commonJS({ return "\nError generating stack: " + x2.message + "\n" + x2.stack; } } - function getWrappedName2(outerType, innerType, wrapperName) { + function getWrappedName(outerType, innerType, wrapperName) { var displayName = outerType.displayName; if (displayName) { return displayName; @@ -3427,7 +3439,7 @@ var require_react_dom_development = __commonJS({ var provider = type; return getContextName(provider._context) + ".Provider"; case REACT_FORWARD_REF_TYPE: - return getWrappedName2(type, type.render, "ForwardRef"); + return getWrappedName(type, type.render, "ForwardRef"); case REACT_MEMO_TYPE: var outerName = type.displayName || null; if (outerName !== null) { @@ -3437,9 +3449,9 @@ var require_react_dom_development = __commonJS({ case REACT_LAZY_TYPE: { var lazyComponent = type; var payload = lazyComponent._payload; - var init = lazyComponent._init; + var init2 = lazyComponent._init; try { - return getComponentNameFromType(init(payload)); + return getComponentNameFromType(init2(payload)); } catch (x2) { return null; } @@ -3468,9 +3480,9 @@ var require_react_dom_development = __commonJS({ return getContextName$1(provider._context) + ".Provider"; case DehydratedFragment: return "DehydratedFragment"; - case ForwardRef2: + case ForwardRef: return getWrappedName$1(type, type.render, "ForwardRef"); - case Fragment6: + case Fragment2: return "Fragment"; case HostComponent: return type; @@ -3865,7 +3877,7 @@ var require_react_dom_development = __commonJS({ { if (props.value == null) { if (typeof props.children === "object" && props.children !== null) { - React11.Children.forEach(props.children, function(child) { + React49.Children.forEach(props.children, function(child) { if (child == null) { return; } @@ -4267,8 +4279,8 @@ var require_react_dom_development = __commonJS({ }); }); function dangerousStyleValue(name, value, isCustomProperty) { - var isEmpty3 = value == null || typeof value === "boolean" || value === ""; - if (isEmpty3) { + var isEmpty = value == null || typeof value === "boolean" || value === ""; + if (isEmpty) { return ""; } if (!isCustomProperty && typeof value === "number" && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) { @@ -4377,7 +4389,7 @@ var require_react_dom_development = __commonJS({ } } function setValueForStyles(node, styles) { - var style4 = node.style; + var style2 = node.style; for (var styleName in styles) { if (!styles.hasOwnProperty(styleName)) { continue; @@ -4393,9 +4405,9 @@ var require_react_dom_development = __commonJS({ styleName = "cssFloat"; } if (isCustomProperty) { - style4.setProperty(styleName, styleValue); + style2.setProperty(styleName, styleValue); } else { - style4[styleName] = styleValue; + style2[styleName] = styleValue; } } } @@ -5406,7 +5418,7 @@ var require_react_dom_development = __commonJS({ passiveBrowserEventsSupported = false; } } - function invokeGuardedCallbackProd(name, func, context, a2, b2, c2, d2, e, f2) { + function invokeGuardedCallbackProd(name, func, context, a2, b2, c2, d2, e, f3) { var funcArgs = Array.prototype.slice.call(arguments, 3); try { func.apply(context, funcArgs); @@ -5418,7 +5430,7 @@ var require_react_dom_development = __commonJS({ { if (typeof window !== "undefined" && typeof window.dispatchEvent === "function" && typeof document !== "undefined" && typeof document.createEvent === "function") { var fakeNode = document.createElement("react"); - invokeGuardedCallbackImpl = function invokeGuardedCallbackDev(name, func, context, a2, b2, c2, d2, e, f2) { + invokeGuardedCallbackImpl = function invokeGuardedCallbackDev(name, func, context, a2, b2, c2, d2, e, f3) { if (typeof document === "undefined" || document === null) { throw new Error("The `document` global was defined when React was initialized, but is not defined anymore. This can happen in a test environment if a component schedules an update from an asynchronous callback, but the test has already finished running. To solve this, you can either unmount the component at the end of your test (and ensure that any asynchronous operations get canceled in `componentWillUnmount`), or you can change the test itself to be asynchronous."); } @@ -5493,12 +5505,12 @@ var require_react_dom_development = __commonJS({ caughtError = error2; } }; - function invokeGuardedCallback(name, func, context, a2, b2, c2, d2, e, f2) { + function invokeGuardedCallback(name, func, context, a2, b2, c2, d2, e, f3) { hasError = false; caughtError = null; invokeGuardedCallbackImpl$1.apply(reporter, arguments); } - function invokeGuardedCallbackAndCatchFirstError(name, func, context, a2, b2, c2, d2, e, f2) { + function invokeGuardedCallbackAndCatchFirstError(name, func, context, a2, b2, c2, d2, e, f3) { invokeGuardedCallback.apply(this, arguments); if (hasError) { var error2 = clearCaughtError(); @@ -5928,14 +5940,14 @@ var require_react_dom_development = __commonJS({ } function getLaneLabelMap() { { - var map = /* @__PURE__ */ new Map(); + var map2 = /* @__PURE__ */ new Map(); var lane = 1; for (var index2 = 0; index2 < TotalLanes; index2++) { var label = getLabelForLane(lane); - map.set(lane, label); + map2.set(lane, label); lane *= 2; } - return map; + return map2; } } function markCommitStarted(lanes) { @@ -6112,14 +6124,14 @@ var require_react_dom_development = __commonJS({ var StrictLegacyMode = 8; var StrictEffectsMode = 16; var clz32 = Math.clz32 ? Math.clz32 : clz32Fallback; - var log = Math.log; + var log2 = Math.log; var LN2 = Math.LN2; function clz32Fallback(x2) { var asUint = x2 >>> 0; if (asUint === 0) { return 32; } - return 31 - (log(asUint) / LN2 | 0) | 0; + return 31 - (log2(asUint) / LN2 | 0) | 0; } var TotalLanes = 31; var NoLanes = 0; @@ -6895,9 +6907,9 @@ var require_react_dom_development = __commonJS({ } return true; } - function attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) { + function attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map2) { if (attemptReplayContinuousQueuedEvent(queuedEvent)) { - map.delete(key); + map2.delete(key); } } function replayUnblockedEvents() { @@ -7210,7 +7222,7 @@ var require_react_dom_development = __commonJS({ startText = getText(); return true; } - function reset() { + function reset2() { root = null; startText = null; fallbackText = null; @@ -7707,7 +7719,7 @@ var require_react_dom_development = __commonJS({ if (isComposing) { if (domEventName === "compositionend" || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent)) { var chars = getData(); - reset(); + reset2(); isComposing = false; return chars; } @@ -8362,9 +8374,9 @@ var require_react_dom_development = __commonJS({ transitionend: makePrefixMap("Transition", "TransitionEnd") }; var prefixedEventNames = {}; - var style3 = {}; + var style = {}; if (canUseDOM2) { - style3 = document.createElement("div").style; + style = document.createElement("div").style; if (!("AnimationEvent" in window)) { delete vendorPrefixes.animationend.animation; delete vendorPrefixes.animationiteration.animation; @@ -8382,7 +8394,7 @@ var require_react_dom_development = __commonJS({ } var prefixMap = vendorPrefixes[eventName]; for (var styleProp in prefixMap) { - if (prefixMap.hasOwnProperty(styleProp) && styleProp in style3) { + if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) { return prefixedEventNames[eventName] = prefixMap[styleProp]; } } @@ -8791,16 +8803,16 @@ var require_react_dom_development = __commonJS({ } return null; } - function accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common2, inCapturePhase) { + function accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common, inCapturePhase) { var registrationName = event._reactName; var listeners = []; var instance = target; while (instance !== null) { - if (instance === common2) { + if (instance === common) { break; } var _instance4 = instance, alternate = _instance4.alternate, stateNode = _instance4.stateNode, tag = _instance4.tag; - if (alternate !== null && alternate === common2) { + if (alternate !== null && alternate === common) { break; } if (tag === HostComponent && stateNode !== null) { @@ -8827,12 +8839,12 @@ var require_react_dom_development = __commonJS({ } } function accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leaveEvent, enterEvent, from, to) { - var common2 = from && to ? getLowestCommonAncestor(from, to) : null; + var common = from && to ? getLowestCommonAncestor(from, to) : null; if (from !== null) { - accumulateEnterLeaveListenersForEvent(dispatchQueue, leaveEvent, from, common2, false); + accumulateEnterLeaveListenersForEvent(dispatchQueue, leaveEvent, from, common, false); } if (to !== null && enterEvent !== null) { - accumulateEnterLeaveListenersForEvent(dispatchQueue, enterEvent, to, common2, true); + accumulateEnterLeaveListenersForEvent(dispatchQueue, enterEvent, to, common, true); } } function getListenerSetKey(domEventName, capture) { @@ -8933,10 +8945,10 @@ var require_react_dom_development = __commonJS({ function getOwnerDocumentFromRootContainer(rootContainerElement) { return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument; } - function noop() { + function noop2() { } function trapClickOnNonInteractiveElement(node) { - node.onclick = noop; + node.onclick = noop2; } function setInitialDOMProperties(tag, domElement, rootContainerElement, nextProps, isCustomComponentTag) { for (var propKey in nextProps) { @@ -8998,7 +9010,7 @@ var require_react_dom_development = __commonJS({ } } } - function createElement(type, props, rootContainerElement, parentNamespace) { + function createElement2(type, props, rootContainerElement, parentNamespace) { var isCustomComponentTag; var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement); var domElement; @@ -9850,7 +9862,7 @@ var require_react_dom_development = __commonJS({ } parentNamespace = hostContextDev.namespace; } - var domElement = createElement(type, props, rootContainerInstance, parentNamespace); + var domElement = createElement2(type, props, rootContainerInstance, parentNamespace); precacheFiberNode(internalInstanceHandle, domElement); updateFiberProps(domElement, props); return domElement; @@ -10013,11 +10025,11 @@ var require_react_dom_development = __commonJS({ } function hideInstance(instance) { instance = instance; - var style4 = instance.style; - if (typeof style4.setProperty === "function") { - style4.setProperty("display", "none", "important"); + var style2 = instance.style; + if (typeof style2.setProperty === "function") { + style2.setProperty("display", "none", "important"); } else { - style4.display = "none"; + style2.display = "none"; } } function hideTextInstance(textInstance) { @@ -10374,7 +10386,7 @@ var require_react_dom_development = __commonJS({ } } } - function checkPropTypes(typeSpecs, values2, location, componentName, element) { + function checkPropTypes(typeSpecs, values, location, componentName, element) { { var has2 = Function.call.bind(hasOwnProperty); for (var typeSpecName in typeSpecs) { @@ -10386,7 +10398,7 @@ var require_react_dom_development = __commonJS({ err.name = "Invariant Violation"; throw err; } - error$1 = typeSpecs[typeSpecName](values2, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); + error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); } catch (ex) { error$1 = ex; } @@ -10674,10 +10686,10 @@ var require_react_dom_development = __commonJS({ return treeForkCount; } function getTreeId() { - var overflow2 = treeContextOverflow; + var overflow = treeContextOverflow; var idWithLeadingBit = treeContextId; - var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit); - return id.toString(32) + overflow2; + var id2 = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit); + return id2.toString(32) + overflow; } function pushTreeFork(workInProgress2, totalChildren) { warnIfNotHydrating(); @@ -10706,10 +10718,10 @@ var require_react_dom_development = __commonJS({ var restOfBaseLength = baseLength - numberOfOverflowBits; var restOfLength = getBitLength(totalChildren) + restOfBaseLength; var restOfNewBits = slot << restOfBaseLength; - var id = restOfNewBits | restOfBaseId; - var overflow2 = newOverflow + baseOverflow; - treeContextId = 1 << restOfLength | id; - treeContextOverflow = overflow2; + var id2 = restOfNewBits | restOfBaseId; + var overflow = newOverflow + baseOverflow; + treeContextId = 1 << restOfLength | id2; + treeContextOverflow = overflow; } else { var newBits = slot << baseLength; var _id = newBits | baseId; @@ -10731,8 +10743,8 @@ var require_react_dom_development = __commonJS({ function getBitLength(number) { return 32 - clz32(number); } - function getLeadingBit(id) { - return 1 << getBitLength(id) - 1; + function getLeadingBit(id2) { + return 1 << getBitLength(id2) - 1; } function popTreeContext(workInProgress2) { while (workInProgress2 === treeForkProvider) { @@ -11698,14 +11710,14 @@ var require_react_dom_development = __commonJS({ var queue = workInProgress2.updateQueue; var currentQueue = current2.updateQueue; if (queue === currentQueue) { - var clone = { + var clone2 = { baseState: currentQueue.baseState, firstBaseUpdate: currentQueue.firstBaseUpdate, lastBaseUpdate: currentQueue.lastBaseUpdate, shared: currentQueue.shared, effects: currentQueue.effects }; - workInProgress2.updateQueue = clone; + workInProgress2.updateQueue = clone2; } } function createUpdate(eventTime, lane) { @@ -11771,7 +11783,7 @@ var require_react_dom_development = __commonJS({ if (firstBaseUpdate !== null) { var update = firstBaseUpdate; do { - var clone = { + var clone2 = { eventTime: update.eventTime, lane: update.lane, tag: update.tag, @@ -11780,10 +11792,10 @@ var require_react_dom_development = __commonJS({ next: null }; if (newLast === null) { - newFirst = newLast = clone; + newFirst = newLast = clone2; } else { - newLast.next = clone; - newLast = clone; + newLast.next = clone2; + newLast = clone2; } update = update.next; } while (update !== null); @@ -11921,7 +11933,7 @@ var require_react_dom_development = __commonJS({ var updateLane = update.lane; var updateEventTime = update.eventTime; if (!isSubsetOfLanes(renderLanes2, updateLane)) { - var clone = { + var clone2 = { eventTime: updateEventTime, lane: updateLane, tag: update.tag, @@ -11930,10 +11942,10 @@ var require_react_dom_development = __commonJS({ next: null }; if (newLastBaseUpdate === null) { - newFirstBaseUpdate = newLastBaseUpdate = clone; + newFirstBaseUpdate = newLastBaseUpdate = clone2; newBaseState = newState; } else { - newLastBaseUpdate = newLastBaseUpdate.next = clone; + newLastBaseUpdate = newLastBaseUpdate.next = clone2; } newLanes = mergeLanes(newLanes, updateLane); } else { @@ -12026,7 +12038,7 @@ var require_react_dom_development = __commonJS({ } } var fakeInternalInstance = {}; - var emptyRefsObject = new React11.Component().refs; + var emptyRefsObject = new React49.Component().refs; var didWarnAboutStateAssignmentForComponent; var didWarnAboutUninitializedState; var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate; @@ -12718,8 +12730,8 @@ var require_react_dom_development = __commonJS({ } function resolveLazy(lazyType) { var payload = lazyType._payload; - var init = lazyType._init; - return init(payload); + var init2 = lazyType._init; + return init2(payload); } function ChildReconciler(shouldTrackSideEffects) { function deleteChild(returnFiber, childToDelete) { @@ -12759,10 +12771,10 @@ var require_react_dom_development = __commonJS({ return existingChildren; } function useFiber(fiber, pendingProps) { - var clone = createWorkInProgress(fiber, pendingProps); - clone.index = 0; - clone.sibling = null; - return clone; + var clone2 = createWorkInProgress(fiber, pendingProps); + clone2.index = 0; + clone2.sibling = null; + return clone2; } function placeChild(newFiber, lastPlacedIndex, newIndex) { newFiber.index = newIndex; @@ -12835,7 +12847,7 @@ var require_react_dom_development = __commonJS({ } } function updateFragment2(returnFiber, current2, fragment, lanes, key) { - if (current2 === null || current2.tag !== Fragment6) { + if (current2 === null || current2.tag !== Fragment2) { var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key); created.return = returnFiber; return created; @@ -12866,8 +12878,8 @@ var require_react_dom_development = __commonJS({ } case REACT_LAZY_TYPE: { var payload = newChild._payload; - var init = newChild._init; - return createChild(returnFiber, init(payload), lanes); + var init2 = newChild._init; + return createChild(returnFiber, init2(payload), lanes); } } if (isArray(newChild) || getIteratorFn(newChild)) { @@ -12910,8 +12922,8 @@ var require_react_dom_development = __commonJS({ } case REACT_LAZY_TYPE: { var payload = newChild._payload; - var init = newChild._init; - return updateSlot(returnFiber, oldFiber, init(payload), lanes); + var init2 = newChild._init; + return updateSlot(returnFiber, oldFiber, init2(payload), lanes); } } if (isArray(newChild) || getIteratorFn(newChild)) { @@ -12946,8 +12958,8 @@ var require_react_dom_development = __commonJS({ } case REACT_LAZY_TYPE: var payload = newChild._payload; - var init = newChild._init; - return updateFromMap(existingChildren, returnFiber, newIdx, init(payload), lanes); + var init2 = newChild._init; + return updateFromMap(existingChildren, returnFiber, newIdx, init2(payload), lanes); } if (isArray(newChild) || getIteratorFn(newChild)) { var _matchedFiber3 = existingChildren.get(newIdx) || null; @@ -12988,8 +13000,8 @@ var require_react_dom_development = __commonJS({ break; case REACT_LAZY_TYPE: var payload = child._payload; - var init = child._init; - warnOnInvalidKey(init(payload), knownKeys, returnFiber); + var init2 = child._init; + warnOnInvalidKey(init2(payload), knownKeys, returnFiber); break; } } @@ -13237,7 +13249,7 @@ var require_react_dom_development = __commonJS({ if (child.key === key) { var elementType = element.type; if (elementType === REACT_FRAGMENT_TYPE) { - if (child.tag === Fragment6) { + if (child.tag === Fragment2) { deleteRemainingChildren(returnFiber, child.sibling); var existing = useFiber(child, element.props.children); existing.return = returnFiber; @@ -13314,8 +13326,8 @@ var require_react_dom_development = __commonJS({ return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, lanes)); case REACT_LAZY_TYPE: var payload = newChild._payload; - var init = newChild._init; - return reconcileChildFibers2(returnFiber, currentFirstChild, init(payload), lanes); + var init2 = newChild._init; + return reconcileChildFibers2(returnFiber, currentFirstChild, init2(payload), lanes); } if (isArray(newChild)) { return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, lanes); @@ -13777,28 +13789,28 @@ var require_react_dom_development = __commonJS({ function basicStateReducer(state, action) { return typeof action === "function" ? action(state) : action; } - function mountReducer(reducer, initialArg, init) { + function mountReducer(reducer, initialArg, init2) { var hook = mountWorkInProgressHook(); - var initialState3; - if (init !== void 0) { - initialState3 = init(initialArg); + var initialState2; + if (init2 !== void 0) { + initialState2 = init2(initialArg); } else { - initialState3 = initialArg; + initialState2 = initialArg; } - hook.memoizedState = hook.baseState = initialState3; + hook.memoizedState = hook.baseState = initialState2; var queue = { pending: null, interleaved: null, lanes: NoLanes, dispatch: null, lastRenderedReducer: reducer, - lastRenderedState: initialState3 + lastRenderedState: initialState2 }; hook.queue = queue; var dispatch = queue.dispatch = dispatchReducerAction.bind(null, currentlyRenderingFiber$1, queue); return [hook.memoizedState, dispatch]; } - function updateReducer(reducer, initialArg, init) { + function updateReducer(reducer, initialArg, init2) { var hook = updateWorkInProgressHook(); var queue = hook.queue; if (queue === null) { @@ -13833,7 +13845,7 @@ var require_react_dom_development = __commonJS({ do { var updateLane = update.lane; if (!isSubsetOfLanes(renderLanes, updateLane)) { - var clone = { + var clone2 = { lane: updateLane, action: update.action, hasEagerState: update.hasEagerState, @@ -13841,10 +13853,10 @@ var require_react_dom_development = __commonJS({ next: null }; if (newBaseQueueLast === null) { - newBaseQueueFirst = newBaseQueueLast = clone; + newBaseQueueFirst = newBaseQueueLast = clone2; newBaseState = newState; } else { - newBaseQueueLast = newBaseQueueLast.next = clone; + newBaseQueueLast = newBaseQueueLast.next = clone2; } currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, updateLane); markSkippedUpdateLanes(updateLane); @@ -13896,7 +13908,7 @@ var require_react_dom_development = __commonJS({ var dispatch = queue.dispatch; return [hook.memoizedState, dispatch]; } - function rerenderReducer(reducer, initialArg, init) { + function rerenderReducer(reducer, initialArg, init2) { var hook = updateWorkInProgressHook(); var queue = hook.queue; if (queue === null) { @@ -13926,17 +13938,17 @@ var require_react_dom_development = __commonJS({ } return [newState, dispatch]; } - function mountMutableSource(source, getSnapshot, subscribe) { + function mountMutableSource(source, getSnapshot, subscribe2) { { return void 0; } } - function updateMutableSource(source, getSnapshot, subscribe) { + function updateMutableSource(source, getSnapshot, subscribe2) { { return void 0; } } - function mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) { + function mountSyncExternalStore(subscribe2, getSnapshot, getServerSnapshot) { var fiber = currentlyRenderingFiber$1; var hook = mountWorkInProgressHook(); var nextSnapshot; @@ -13979,12 +13991,12 @@ var require_react_dom_development = __commonJS({ getSnapshot }; hook.queue = inst; - mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]); + mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe2), [subscribe2]); fiber.flags |= Passive; pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), void 0, null); return nextSnapshot; } - function updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) { + function updateSyncExternalStore(subscribe2, getSnapshot, getServerSnapshot) { var fiber = currentlyRenderingFiber$1; var hook = updateWorkInProgressHook(); var nextSnapshot = getSnapshot(); @@ -14004,7 +14016,7 @@ var require_react_dom_development = __commonJS({ markWorkInProgressReceivedUpdate(); } var inst = hook.queue; - updateEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]); + updateEffect(subscribeToStore.bind(null, fiber, inst, subscribe2), [subscribe2]); if (inst.getSnapshot !== getSnapshot || snapshotChanged || workInProgressHook !== null && workInProgressHook.memoizedState.tag & HasEffect) { fiber.flags |= Passive; pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), void 0, null); @@ -14045,13 +14057,13 @@ var require_react_dom_development = __commonJS({ forceStoreRerender(fiber); } } - function subscribeToStore(fiber, inst, subscribe) { + function subscribeToStore(fiber, inst, subscribe2) { var handleStoreChange = function() { if (checkIfSnapshotChanged(inst)) { forceStoreRerender(fiber); } }; - return subscribe(handleStoreChange); + return subscribe2(handleStoreChange); } function checkIfSnapshotChanged(inst) { var latestGetSnapshot = inst.getSnapshot; @@ -14069,28 +14081,28 @@ var require_react_dom_development = __commonJS({ scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp); } } - function mountState(initialState3) { + function mountState(initialState2) { var hook = mountWorkInProgressHook(); - if (typeof initialState3 === "function") { - initialState3 = initialState3(); + if (typeof initialState2 === "function") { + initialState2 = initialState2(); } - hook.memoizedState = hook.baseState = initialState3; + hook.memoizedState = hook.baseState = initialState2; var queue = { pending: null, interleaved: null, lanes: NoLanes, dispatch: null, lastRenderedReducer: basicStateReducer, - lastRenderedState: initialState3 + lastRenderedState: initialState2 }; hook.queue = queue; var dispatch = queue.dispatch = dispatchSetState.bind(null, currentlyRenderingFiber$1, queue); return [hook.memoizedState, dispatch]; } - function updateState(initialState3) { + function updateState(initialState2) { return updateReducer(basicStateReducer); } - function rerenderState(initialState3) { + function rerenderState(initialState2) { return rerenderReducer(basicStateReducer); } function pushEffect(tag, create, destroy, deps) { @@ -14376,26 +14388,26 @@ var require_react_dom_development = __commonJS({ var hook = mountWorkInProgressHook(); var root2 = getWorkInProgressRoot(); var identifierPrefix = root2.identifierPrefix; - var id; + var id2; if (getIsHydrating()) { var treeId = getTreeId(); - id = ":" + identifierPrefix + "R" + treeId; + id2 = ":" + identifierPrefix + "R" + treeId; var localId = localIdCounter++; if (localId > 0) { - id += "H" + localId.toString(32); + id2 += "H" + localId.toString(32); } - id += ":"; + id2 += ":"; } else { var globalClientId = globalClientIdCounter++; - id = ":" + identifierPrefix + "r" + globalClientId.toString(32) + ":"; + id2 = ":" + identifierPrefix + "r" + globalClientId.toString(32) + ":"; } - hook.memoizedState = id; - return id; + hook.memoizedState = id2; + return id2; } function updateId() { var hook = updateWorkInProgressHook(); - var id = hook.memoizedState; - return id; + var id2 = hook.memoizedState; + return id2; } function dispatchReducerAction(fiber, queue, action) { { @@ -14589,13 +14601,13 @@ var require_react_dom_development = __commonJS({ ReactCurrentDispatcher$1.current = prevDispatcher; } }, - useReducer: function(reducer, initialArg, init) { + useReducer: function(reducer, initialArg, init2) { currentHookNameInDev = "useReducer"; mountHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV; try { - return mountReducer(reducer, initialArg, init); + return mountReducer(reducer, initialArg, init2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14605,13 +14617,13 @@ var require_react_dom_development = __commonJS({ mountHookTypesDev(); return mountRef(initialValue); }, - useState: function(initialState3) { + useState: function(initialState2) { currentHookNameInDev = "useState"; mountHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV; try { - return mountState(initialState3); + return mountState(initialState2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14631,15 +14643,15 @@ var require_react_dom_development = __commonJS({ mountHookTypesDev(); return mountTransition(); }, - useMutableSource: function(source, getSnapshot, subscribe) { + useMutableSource: function(source, getSnapshot, subscribe2) { currentHookNameInDev = "useMutableSource"; mountHookTypesDev(); return mountMutableSource(); }, - useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) { + useSyncExternalStore: function(subscribe2, getSnapshot, getServerSnapshot) { currentHookNameInDev = "useSyncExternalStore"; mountHookTypesDev(); - return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot); + return mountSyncExternalStore(subscribe2, getSnapshot, getServerSnapshot); }, useId: function() { currentHookNameInDev = "useId"; @@ -14693,13 +14705,13 @@ var require_react_dom_development = __commonJS({ ReactCurrentDispatcher$1.current = prevDispatcher; } }, - useReducer: function(reducer, initialArg, init) { + useReducer: function(reducer, initialArg, init2) { currentHookNameInDev = "useReducer"; updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV; try { - return mountReducer(reducer, initialArg, init); + return mountReducer(reducer, initialArg, init2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14709,13 +14721,13 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return mountRef(initialValue); }, - useState: function(initialState3) { + useState: function(initialState2) { currentHookNameInDev = "useState"; updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV; try { - return mountState(initialState3); + return mountState(initialState2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14735,15 +14747,15 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return mountTransition(); }, - useMutableSource: function(source, getSnapshot, subscribe) { + useMutableSource: function(source, getSnapshot, subscribe2) { currentHookNameInDev = "useMutableSource"; updateHookTypesDev(); return mountMutableSource(); }, - useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) { + useSyncExternalStore: function(subscribe2, getSnapshot, getServerSnapshot) { currentHookNameInDev = "useSyncExternalStore"; updateHookTypesDev(); - return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot); + return mountSyncExternalStore(subscribe2, getSnapshot, getServerSnapshot); }, useId: function() { currentHookNameInDev = "useId"; @@ -14797,13 +14809,13 @@ var require_react_dom_development = __commonJS({ ReactCurrentDispatcher$1.current = prevDispatcher; } }, - useReducer: function(reducer, initialArg, init) { + useReducer: function(reducer, initialArg, init2) { currentHookNameInDev = "useReducer"; updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV; try { - return updateReducer(reducer, initialArg, init); + return updateReducer(reducer, initialArg, init2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14813,13 +14825,13 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return updateRef(); }, - useState: function(initialState3) { + useState: function(initialState2) { currentHookNameInDev = "useState"; updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV; try { - return updateState(initialState3); + return updateState(initialState2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14839,15 +14851,15 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return updateTransition(); }, - useMutableSource: function(source, getSnapshot, subscribe) { + useMutableSource: function(source, getSnapshot, subscribe2) { currentHookNameInDev = "useMutableSource"; updateHookTypesDev(); return updateMutableSource(); }, - useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) { + useSyncExternalStore: function(subscribe2, getSnapshot, getServerSnapshot) { currentHookNameInDev = "useSyncExternalStore"; updateHookTypesDev(); - return updateSyncExternalStore(subscribe, getSnapshot); + return updateSyncExternalStore(subscribe2, getSnapshot); }, useId: function() { currentHookNameInDev = "useId"; @@ -14901,13 +14913,13 @@ var require_react_dom_development = __commonJS({ ReactCurrentDispatcher$1.current = prevDispatcher; } }, - useReducer: function(reducer, initialArg, init) { + useReducer: function(reducer, initialArg, init2) { currentHookNameInDev = "useReducer"; updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV; try { - return rerenderReducer(reducer, initialArg, init); + return rerenderReducer(reducer, initialArg, init2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14917,13 +14929,13 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return updateRef(); }, - useState: function(initialState3) { + useState: function(initialState2) { currentHookNameInDev = "useState"; updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV; try { - return rerenderState(initialState3); + return rerenderState(initialState2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -14943,15 +14955,15 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return rerenderTransition(); }, - useMutableSource: function(source, getSnapshot, subscribe) { + useMutableSource: function(source, getSnapshot, subscribe2) { currentHookNameInDev = "useMutableSource"; updateHookTypesDev(); return updateMutableSource(); }, - useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) { + useSyncExternalStore: function(subscribe2, getSnapshot, getServerSnapshot) { currentHookNameInDev = "useSyncExternalStore"; updateHookTypesDev(); - return updateSyncExternalStore(subscribe, getSnapshot); + return updateSyncExternalStore(subscribe2, getSnapshot); }, useId: function() { currentHookNameInDev = "useId"; @@ -15013,14 +15025,14 @@ var require_react_dom_development = __commonJS({ ReactCurrentDispatcher$1.current = prevDispatcher; } }, - useReducer: function(reducer, initialArg, init) { + useReducer: function(reducer, initialArg, init2) { currentHookNameInDev = "useReducer"; warnInvalidHookAccess(); mountHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV; try { - return mountReducer(reducer, initialArg, init); + return mountReducer(reducer, initialArg, init2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -15031,14 +15043,14 @@ var require_react_dom_development = __commonJS({ mountHookTypesDev(); return mountRef(initialValue); }, - useState: function(initialState3) { + useState: function(initialState2) { currentHookNameInDev = "useState"; warnInvalidHookAccess(); mountHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV; try { - return mountState(initialState3); + return mountState(initialState2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -15061,17 +15073,17 @@ var require_react_dom_development = __commonJS({ mountHookTypesDev(); return mountTransition(); }, - useMutableSource: function(source, getSnapshot, subscribe) { + useMutableSource: function(source, getSnapshot, subscribe2) { currentHookNameInDev = "useMutableSource"; warnInvalidHookAccess(); mountHookTypesDev(); return mountMutableSource(); }, - useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) { + useSyncExternalStore: function(subscribe2, getSnapshot, getServerSnapshot) { currentHookNameInDev = "useSyncExternalStore"; warnInvalidHookAccess(); mountHookTypesDev(); - return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot); + return mountSyncExternalStore(subscribe2, getSnapshot, getServerSnapshot); }, useId: function() { currentHookNameInDev = "useId"; @@ -15134,14 +15146,14 @@ var require_react_dom_development = __commonJS({ ReactCurrentDispatcher$1.current = prevDispatcher; } }, - useReducer: function(reducer, initialArg, init) { + useReducer: function(reducer, initialArg, init2) { currentHookNameInDev = "useReducer"; warnInvalidHookAccess(); updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV; try { - return updateReducer(reducer, initialArg, init); + return updateReducer(reducer, initialArg, init2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -15152,14 +15164,14 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return updateRef(); }, - useState: function(initialState3) { + useState: function(initialState2) { currentHookNameInDev = "useState"; warnInvalidHookAccess(); updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV; try { - return updateState(initialState3); + return updateState(initialState2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -15182,17 +15194,17 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return updateTransition(); }, - useMutableSource: function(source, getSnapshot, subscribe) { + useMutableSource: function(source, getSnapshot, subscribe2) { currentHookNameInDev = "useMutableSource"; warnInvalidHookAccess(); updateHookTypesDev(); return updateMutableSource(); }, - useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) { + useSyncExternalStore: function(subscribe2, getSnapshot, getServerSnapshot) { currentHookNameInDev = "useSyncExternalStore"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateSyncExternalStore(subscribe, getSnapshot); + return updateSyncExternalStore(subscribe2, getSnapshot); }, useId: function() { currentHookNameInDev = "useId"; @@ -15255,14 +15267,14 @@ var require_react_dom_development = __commonJS({ ReactCurrentDispatcher$1.current = prevDispatcher; } }, - useReducer: function(reducer, initialArg, init) { + useReducer: function(reducer, initialArg, init2) { currentHookNameInDev = "useReducer"; warnInvalidHookAccess(); updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV; try { - return rerenderReducer(reducer, initialArg, init); + return rerenderReducer(reducer, initialArg, init2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -15273,14 +15285,14 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return updateRef(); }, - useState: function(initialState3) { + useState: function(initialState2) { currentHookNameInDev = "useState"; warnInvalidHookAccess(); updateHookTypesDev(); var prevDispatcher = ReactCurrentDispatcher$1.current; ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV; try { - return rerenderState(initialState3); + return rerenderState(initialState2); } finally { ReactCurrentDispatcher$1.current = prevDispatcher; } @@ -15303,17 +15315,17 @@ var require_react_dom_development = __commonJS({ updateHookTypesDev(); return rerenderTransition(); }, - useMutableSource: function(source, getSnapshot, subscribe) { + useMutableSource: function(source, getSnapshot, subscribe2) { currentHookNameInDev = "useMutableSource"; warnInvalidHookAccess(); updateHookTypesDev(); return updateMutableSource(); }, - useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) { + useSyncExternalStore: function(subscribe2, getSnapshot, getServerSnapshot) { currentHookNameInDev = "useSyncExternalStore"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateSyncExternalStore(subscribe, getSnapshot); + return updateSyncExternalStore(subscribe2, getSnapshot); }, useId: function() { currentHookNameInDev = "useId"; @@ -15582,7 +15594,7 @@ var require_react_dom_development = __commonJS({ } function resetSuspendedComponent(sourceFiber, rootRenderLanes) { var tag = sourceFiber.tag; - if ((sourceFiber.mode & ConcurrentMode) === NoMode && (tag === FunctionComponent || tag === ForwardRef2 || tag === SimpleMemoComponent)) { + if ((sourceFiber.mode & ConcurrentMode) === NoMode && (tag === FunctionComponent || tag === ForwardRef || tag === SimpleMemoComponent)) { var currentSource = sourceFiber.alternate; if (currentSource) { sourceFiber.updateQueue = currentSource.updateQueue; @@ -15864,9 +15876,9 @@ var require_react_dom_development = __commonJS({ if (outerMemoType.$$typeof === REACT_LAZY_TYPE) { var lazyComponent = outerMemoType; var payload = lazyComponent._payload; - var init = lazyComponent._init; + var init2 = lazyComponent._init; try { - outerMemoType = init(payload); + outerMemoType = init2(payload); } catch (x2) { outerMemoType = null; } @@ -16251,8 +16263,8 @@ var require_react_dom_development = __commonJS({ var props = workInProgress2.pendingProps; var lazyComponent = elementType; var payload = lazyComponent._payload; - var init = lazyComponent._init; - var Component = init(payload); + var init2 = lazyComponent._init; + var Component = init2(payload); workInProgress2.type = Component; var resolvedTag = workInProgress2.tag = resolveLazyComponentTag(Component); var resolvedProps = resolveDefaultProps(Component, props); @@ -16273,7 +16285,7 @@ var require_react_dom_development = __commonJS({ child = updateClassComponent(null, workInProgress2, Component, resolvedProps, renderLanes2); return child; } - case ForwardRef2: { + case ForwardRef: { { workInProgress2.type = Component = resolveForwardRefForHotReloading(Component); } @@ -17337,13 +17349,13 @@ var require_react_dom_development = __commonJS({ return updateSuspenseComponent(current2, workInProgress2, renderLanes2); case HostPortal: return updatePortalComponent(current2, workInProgress2, renderLanes2); - case ForwardRef2: { + case ForwardRef: { var type = workInProgress2.type; var _unresolvedProps2 = workInProgress2.pendingProps; var _resolvedProps2 = workInProgress2.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2); return updateForwardRef(current2, workInProgress2, type, _resolvedProps2, renderLanes2); } - case Fragment6: + case Fragment2: return updateFragment(current2, workInProgress2, renderLanes2); case Mode: return updateMode(current2, workInProgress2, renderLanes2); @@ -17614,8 +17626,8 @@ var require_react_dom_development = __commonJS({ case LazyComponent: case SimpleMemoComponent: case FunctionComponent: - case ForwardRef2: - case Fragment6: + case ForwardRef: + case Fragment2: case Mode: case Profiler: case ContextConsumer: @@ -18187,7 +18199,7 @@ var require_react_dom_development = __commonJS({ setCurrentFiber(finishedWork); switch (finishedWork.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case SimpleMemoComponent: { break; } @@ -18346,7 +18358,7 @@ var require_react_dom_development = __commonJS({ switch (finishedWork.tag) { case Profiler: { var passiveEffectDuration = finishedWork.stateNode.passiveEffectDuration; - var _finishedWork$memoize = finishedWork.memoizedProps, id = _finishedWork$memoize.id, onPostCommit = _finishedWork$memoize.onPostCommit; + var _finishedWork$memoize = finishedWork.memoizedProps, id2 = _finishedWork$memoize.id, onPostCommit = _finishedWork$memoize.onPostCommit; var commitTime2 = getCommitTime(); var phase = finishedWork.alternate === null ? "mount" : "update"; { @@ -18355,7 +18367,7 @@ var require_react_dom_development = __commonJS({ } } if (typeof onPostCommit === "function") { - onPostCommit(id, phase, passiveEffectDuration, commitTime2); + onPostCommit(id2, phase, passiveEffectDuration, commitTime2); } var parentFiber = finishedWork.return; outer: @@ -18382,7 +18394,7 @@ var require_react_dom_development = __commonJS({ if ((finishedWork.flags & LayoutMask) !== NoFlags) { switch (finishedWork.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case SimpleMemoComponent: { if (!offscreenSubtreeWasHidden) { if (finishedWork.mode & ProfileMode) { @@ -18563,7 +18575,7 @@ var require_react_dom_development = __commonJS({ function reappearLayoutEffectsOnFiber(node) { switch (node.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case SimpleMemoComponent: { if (node.mode & ProfileMode) { try { @@ -18933,7 +18945,7 @@ var require_react_dom_development = __commonJS({ return; } case FunctionComponent: - case ForwardRef2: + case ForwardRef: case MemoComponent: case SimpleMemoComponent: { if (!offscreenSubtreeWasHidden) { @@ -19085,7 +19097,7 @@ var require_react_dom_development = __commonJS({ var flags = finishedWork.flags; switch (finishedWork.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case MemoComponent: case SimpleMemoComponent: { recursivelyTraverseMutationEffects(root2, finishedWork); @@ -19390,7 +19402,7 @@ var require_react_dom_development = __commonJS({ var firstChild = fiber.child; switch (fiber.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case MemoComponent: case SimpleMemoComponent: { if (fiber.mode & ProfileMode) { @@ -19536,7 +19548,7 @@ var require_react_dom_development = __commonJS({ function commitPassiveMountOnFiber(finishedRoot, finishedWork, committedLanes, committedTransitions) { switch (finishedWork.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case SimpleMemoComponent: { if (finishedWork.mode & ProfileMode) { startPassiveEffectTimer(); @@ -19613,7 +19625,7 @@ var require_react_dom_development = __commonJS({ function commitPassiveUnmountOnFiber(finishedWork) { switch (finishedWork.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case SimpleMemoComponent: { if (finishedWork.mode & ProfileMode) { startPassiveEffectTimer(); @@ -19664,7 +19676,7 @@ var require_react_dom_development = __commonJS({ function commitPassiveUnmountInsideDeletedTreeOnFiber(current2, nearestMountedAncestor) { switch (current2.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case SimpleMemoComponent: { if (current2.mode & ProfileMode) { startPassiveEffectTimer(); @@ -19681,7 +19693,7 @@ var require_react_dom_development = __commonJS({ { switch (fiber.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case SimpleMemoComponent: { try { commitHookEffectListMount(Layout | HasEffect, fiber); @@ -19706,7 +19718,7 @@ var require_react_dom_development = __commonJS({ { switch (fiber.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case SimpleMemoComponent: { try { commitHookEffectListMount(Passive$1 | HasEffect, fiber); @@ -19722,7 +19734,7 @@ var require_react_dom_development = __commonJS({ { switch (fiber.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case SimpleMemoComponent: { try { commitHookEffectListUnmount(Layout | HasEffect, fiber, fiber.return); @@ -19745,7 +19757,7 @@ var require_react_dom_development = __commonJS({ { switch (fiber.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case SimpleMemoComponent: { try { commitHookEffectListUnmount(Passive$1 | HasEffect, fiber, fiber.return); @@ -19794,7 +19806,7 @@ var require_react_dom_development = __commonJS({ return isReactActEnvironmentGlobal; } } - var ceil = Math.ceil; + var ceil2 = Math.ceil; var ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher, ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner, ReactCurrentBatchConfig$3 = ReactSharedInternals.ReactCurrentBatchConfig, ReactCurrentActQueue$1 = ReactSharedInternals.ReactCurrentActQueue; var NoContext = 0; var BatchedContext = 1; @@ -21010,7 +21022,7 @@ var require_react_dom_development = __commonJS({ retryTimedOutBoundary(boundaryFiber, retryLane); } function jnd(timeElapsed) { - return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3e3 ? 3e3 : timeElapsed < 4320 ? 4320 : ceil(timeElapsed / 1960) * 1960; + return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3e3 ? 3e3 : timeElapsed < 4320 ? 4320 : ceil2(timeElapsed / 1960) * 1960; } function checkForNestedUpdates() { if (nestedUpdateCount > NESTED_UPDATE_LIMIT) { @@ -21079,7 +21091,7 @@ var require_react_dom_development = __commonJS({ return; } var tag = fiber.tag; - if (tag !== IndeterminateComponent && tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef2 && tag !== MemoComponent && tag !== SimpleMemoComponent) { + if (tag !== IndeterminateComponent && tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent) { return; } var componentName = getComponentNameFromFiber(fiber) || "ReactComponent"; @@ -21143,7 +21155,7 @@ var require_react_dom_development = __commonJS({ if (isRendering && !getIsUpdatingOpaqueValueInRenderPhaseInDEV()) { switch (fiber.tag) { case FunctionComponent: - case ForwardRef2: + case ForwardRef: case SimpleMemoComponent: { var renderingComponentName = workInProgress && getComponentNameFromFiber(workInProgress) || "Unknown"; var dedupeKey = renderingComponentName; @@ -21209,7 +21221,7 @@ var require_react_dom_development = __commonJS({ if (executionContext !== NoContext) { return; } - if (fiber.tag !== FunctionComponent && fiber.tag !== ForwardRef2 && fiber.tag !== SimpleMemoComponent) { + if (fiber.tag !== FunctionComponent && fiber.tag !== ForwardRef && fiber.tag !== SimpleMemoComponent) { return; } } @@ -21311,7 +21323,7 @@ var require_react_dom_development = __commonJS({ } break; } - case ForwardRef2: { + case ForwardRef: { if ($$typeofNextType === REACT_FORWARD_REF_TYPE) { needsCompareFamilies = true; } else if ($$typeofNextType === REACT_LAZY_TYPE) { @@ -21387,7 +21399,7 @@ var require_react_dom_development = __commonJS({ case ClassComponent: candidateType = type; break; - case ForwardRef2: + case ForwardRef: candidateType = type.render; break; } @@ -21452,7 +21464,7 @@ var require_react_dom_development = __commonJS({ case ClassComponent: candidateType = type; break; - case ForwardRef2: + case ForwardRef: candidateType = type.render; break; } @@ -21598,7 +21610,7 @@ var require_react_dom_development = __commonJS({ } else if (Component !== void 0 && Component !== null) { var $$typeof = Component.$$typeof; if ($$typeof === REACT_FORWARD_REF_TYPE) { - return ForwardRef2; + return ForwardRef; } if ($$typeof === REACT_MEMO_TYPE) { return MemoComponent; @@ -21661,7 +21673,7 @@ var require_react_dom_development = __commonJS({ case ClassComponent: workInProgress2.type = resolveClassForHotReloading(current2.type); break; - case ForwardRef2: + case ForwardRef: workInProgress2.type = resolveForwardRefForHotReloading(current2.type); break; } @@ -21776,7 +21788,7 @@ var require_react_dom_development = __commonJS({ fiberTag = ContextConsumer; break getTag; case REACT_FORWARD_REF_TYPE: - fiberTag = ForwardRef2; + fiberTag = ForwardRef; { resolvedType = resolveForwardRefForHotReloading(resolvedType); } @@ -21829,7 +21841,7 @@ var require_react_dom_development = __commonJS({ return fiber; } function createFiberFromFragment(elements, mode, lanes, key) { - var fiber = createFiber(Fragment6, elements, key, mode); + var fiber = createFiber(Fragment2, elements, key, mode); fiber.lanes = lanes; return fiber; } @@ -22302,16 +22314,16 @@ var require_react_dom_development = __commonJS({ var copyWithSet = function(obj, path, value) { return copyWithSetImpl(obj, path, 0, value); }; - var findHook = function(fiber, id) { + var findHook = function(fiber, id2) { var currentHook2 = fiber.memoizedState; - while (currentHook2 !== null && id > 0) { + while (currentHook2 !== null && id2 > 0) { currentHook2 = currentHook2.next; - id--; + id2--; } return currentHook2; }; - overrideHookState = function(fiber, id, path, value) { - var hook = findHook(fiber, id); + overrideHookState = function(fiber, id2, path, value) { + var hook = findHook(fiber, id2); if (hook !== null) { var newState = copyWithSet(hook.memoizedState, path, value); hook.memoizedState = newState; @@ -22323,8 +22335,8 @@ var require_react_dom_development = __commonJS({ } } }; - overrideHookStateDeletePath = function(fiber, id, path) { - var hook = findHook(fiber, id); + overrideHookStateDeletePath = function(fiber, id2, path) { + var hook = findHook(fiber, id2); if (hook !== null) { var newState = copyWithDelete(hook.memoizedState, path); hook.memoizedState = newState; @@ -22336,8 +22348,8 @@ var require_react_dom_development = __commonJS({ } } }; - overrideHookStateRenamePath = function(fiber, id, oldPath, newPath) { - var hook = findHook(fiber, id); + overrideHookStateRenamePath = function(fiber, id2, oldPath, newPath) { + var hook = findHook(fiber, id2); if (hook !== null) { var newState = copyWithRename(hook.memoizedState, oldPath, newPath); hook.memoizedState = newState; @@ -22485,7 +22497,7 @@ var require_react_dom_development = __commonJS({ unmarkContainerAsRoot(container); } }; - function createRoot2(container, options2) { + function createRoot4(container, options2) { if (!isValidContainer(container)) { throw new Error("createRoot(...): Target container is not a DOM element."); } @@ -22844,7 +22856,7 @@ var require_react_dom_development = __commonJS({ error('You are importing createRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client".'); } } - return createRoot2(container, options2); + return createRoot4(container, options2); } function hydrateRoot$1(container, initialChildren, options2) { { @@ -22942,8629 +22954,6 @@ var require_client = __commonJS({ } }); -// node_modules/lodash/lodash.js -var require_lodash = __commonJS({ - "node_modules/lodash/lodash.js"(exports, module2) { - (function() { - var undefined2; - var VERSION = "4.17.21"; - var LARGE_ARRAY_SIZE = 200; - var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`"; - var HASH_UNDEFINED = "__lodash_hash_undefined__"; - var MAX_MEMOIZE_SIZE = 500; - var PLACEHOLDER = "__lodash_placeholder__"; - var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4; - var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; - var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512; - var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "..."; - var HOT_COUNT = 800, HOT_SPAN = 16; - var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3; - var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0; - var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - var wrapFlags = [ - ["ary", WRAP_ARY_FLAG], - ["bind", WRAP_BIND_FLAG], - ["bindKey", WRAP_BIND_KEY_FLAG], - ["curry", WRAP_CURRY_FLAG], - ["curryRight", WRAP_CURRY_RIGHT_FLAG], - ["flip", WRAP_FLIP_FLAG], - ["partial", WRAP_PARTIAL_FLAG], - ["partialRight", WRAP_PARTIAL_RIGHT_FLAG], - ["rearg", WRAP_REARG_FLAG] - ]; - var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]"; - var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]"; - var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g; - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source); - var reTrimStart = /^\s+/; - var reWhitespace = /\s/; - var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /; - var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; - var reEscapeChar = /\\(\\)?/g; - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - var reFlags = /\w*$/; - var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - var reIsBinary = /^0b[01]+$/i; - var reIsHostCtor = /^\[object .+?Constructor\]$/; - var reIsOctal = /^0o[0-7]+$/i; - var reIsUint = /^(?:0|[1-9]\d*)$/; - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - var reNoMatch = /($^)/; - var reUnescapedString = /['\n\r\u2028\u2029\\]/g; - var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d"; - var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")"; - var reApos = RegExp(rsApos, "g"); - var reComboMark = RegExp(rsCombo, "g"); - var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"); - var reUnicodeWord = RegExp([ - rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")", - rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")", - rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower, - rsUpper + "+" + rsOptContrUpper, - rsOrdUpper, - rsOrdLower, - rsDigits, - rsEmoji - ].join("|"), "g"); - var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]"); - var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - var contextProps = [ - "Array", - "Buffer", - "DataView", - "Date", - "Error", - "Float32Array", - "Float64Array", - "Function", - "Int8Array", - "Int16Array", - "Int32Array", - "Map", - "Math", - "Object", - "Promise", - "RegExp", - "Set", - "String", - "Symbol", - "TypeError", - "Uint8Array", - "Uint8ClampedArray", - "Uint16Array", - "Uint32Array", - "WeakMap", - "_", - "clearTimeout", - "isFinite", - "parseInt", - "setTimeout" - ]; - var templateCounter = -1; - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; - var cloneableTags = {}; - cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; - cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false; - var deburredLetters = { - "\xC0": "A", - "\xC1": "A", - "\xC2": "A", - "\xC3": "A", - "\xC4": "A", - "\xC5": "A", - "\xE0": "a", - "\xE1": "a", - "\xE2": "a", - "\xE3": "a", - "\xE4": "a", - "\xE5": "a", - "\xC7": "C", - "\xE7": "c", - "\xD0": "D", - "\xF0": "d", - "\xC8": "E", - "\xC9": "E", - "\xCA": "E", - "\xCB": "E", - "\xE8": "e", - "\xE9": "e", - "\xEA": "e", - "\xEB": "e", - "\xCC": "I", - "\xCD": "I", - "\xCE": "I", - "\xCF": "I", - "\xEC": "i", - "\xED": "i", - "\xEE": "i", - "\xEF": "i", - "\xD1": "N", - "\xF1": "n", - "\xD2": "O", - "\xD3": "O", - "\xD4": "O", - "\xD5": "O", - "\xD6": "O", - "\xD8": "O", - "\xF2": "o", - "\xF3": "o", - "\xF4": "o", - "\xF5": "o", - "\xF6": "o", - "\xF8": "o", - "\xD9": "U", - "\xDA": "U", - "\xDB": "U", - "\xDC": "U", - "\xF9": "u", - "\xFA": "u", - "\xFB": "u", - "\xFC": "u", - "\xDD": "Y", - "\xFD": "y", - "\xFF": "y", - "\xC6": "Ae", - "\xE6": "ae", - "\xDE": "Th", - "\xFE": "th", - "\xDF": "ss", - "\u0100": "A", - "\u0102": "A", - "\u0104": "A", - "\u0101": "a", - "\u0103": "a", - "\u0105": "a", - "\u0106": "C", - "\u0108": "C", - "\u010A": "C", - "\u010C": "C", - "\u0107": "c", - "\u0109": "c", - "\u010B": "c", - "\u010D": "c", - "\u010E": "D", - "\u0110": "D", - "\u010F": "d", - "\u0111": "d", - "\u0112": "E", - "\u0114": "E", - "\u0116": "E", - "\u0118": "E", - "\u011A": "E", - "\u0113": "e", - "\u0115": "e", - "\u0117": "e", - "\u0119": "e", - "\u011B": "e", - "\u011C": "G", - "\u011E": "G", - "\u0120": "G", - "\u0122": "G", - "\u011D": "g", - "\u011F": "g", - "\u0121": "g", - "\u0123": "g", - "\u0124": "H", - "\u0126": "H", - "\u0125": "h", - "\u0127": "h", - "\u0128": "I", - "\u012A": "I", - "\u012C": "I", - "\u012E": "I", - "\u0130": "I", - "\u0129": "i", - "\u012B": "i", - "\u012D": "i", - "\u012F": "i", - "\u0131": "i", - "\u0134": "J", - "\u0135": "j", - "\u0136": "K", - "\u0137": "k", - "\u0138": "k", - "\u0139": "L", - "\u013B": "L", - "\u013D": "L", - "\u013F": "L", - "\u0141": "L", - "\u013A": "l", - "\u013C": "l", - "\u013E": "l", - "\u0140": "l", - "\u0142": "l", - "\u0143": "N", - "\u0145": "N", - "\u0147": "N", - "\u014A": "N", - "\u0144": "n", - "\u0146": "n", - "\u0148": "n", - "\u014B": "n", - "\u014C": "O", - "\u014E": "O", - "\u0150": "O", - "\u014D": "o", - "\u014F": "o", - "\u0151": "o", - "\u0154": "R", - "\u0156": "R", - "\u0158": "R", - "\u0155": "r", - "\u0157": "r", - "\u0159": "r", - "\u015A": "S", - "\u015C": "S", - "\u015E": "S", - "\u0160": "S", - "\u015B": "s", - "\u015D": "s", - "\u015F": "s", - "\u0161": "s", - "\u0162": "T", - "\u0164": "T", - "\u0166": "T", - "\u0163": "t", - "\u0165": "t", - "\u0167": "t", - "\u0168": "U", - "\u016A": "U", - "\u016C": "U", - "\u016E": "U", - "\u0170": "U", - "\u0172": "U", - "\u0169": "u", - "\u016B": "u", - "\u016D": "u", - "\u016F": "u", - "\u0171": "u", - "\u0173": "u", - "\u0174": "W", - "\u0175": "w", - "\u0176": "Y", - "\u0177": "y", - "\u0178": "Y", - "\u0179": "Z", - "\u017B": "Z", - "\u017D": "Z", - "\u017A": "z", - "\u017C": "z", - "\u017E": "z", - "\u0132": "IJ", - "\u0133": "ij", - "\u0152": "Oe", - "\u0153": "oe", - "\u0149": "'n", - "\u017F": "s" - }; - var htmlEscapes = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'" - }; - var htmlUnescapes = { - "&": "&", - "<": "<", - ">": ">", - """: '"', - "'": "'" - }; - var stringEscapes = { - "\\": "\\", - "'": "'", - "\n": "n", - "\r": "r", - "\u2028": "u2028", - "\u2029": "u2029" - }; - var freeParseFloat = parseFloat, freeParseInt = parseInt; - var freeGlobal = typeof global == "object" && global && global.Object === Object && global; - var freeSelf = typeof self == "object" && self && self.Object === Object && self; - var root = freeGlobal || freeSelf || Function("return this")(); - var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; - var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2; - var moduleExports = freeModule && freeModule.exports === freeExports; - var freeProcess = moduleExports && freeGlobal.process; - var nodeUtil = function() { - try { - var types = freeModule && freeModule.require && freeModule.require("util").types; - if (types) { - return types; - } - return freeProcess && freeProcess.binding && freeProcess.binding("util"); - } catch (e) { - } - }(); - var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - function apply(func, thisArg, args) { - switch (args.length) { - case 0: - return func.call(thisArg); - case 1: - return func.call(thisArg, args[0]); - case 2: - return func.call(thisArg, args[0], args[1]); - case 3: - return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); - } - function arrayAggregator(array, setter, iteratee, accumulator) { - var index = -1, length = array == null ? 0 : array.length; - while (++index < length) { - var value = array[index]; - setter(accumulator, value, iteratee(value), array); - } - return accumulator; - } - function arrayEach(array, iteratee) { - var index = -1, length = array == null ? 0 : array.length; - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; - } - function arrayEachRight(array, iteratee) { - var length = array == null ? 0 : array.length; - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } - } - return array; - } - function arrayEvery(array, predicate) { - var index = -1, length = array == null ? 0 : array.length; - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; - } - } - return true; - } - function arrayFilter(array, predicate) { - var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; - } - function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; - } - function arrayIncludesWith(array, value, comparator) { - var index = -1, length = array == null ? 0 : array.length; - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; - } - function arrayMap(array, iteratee) { - var index = -1, length = array == null ? 0 : array.length, result = Array(length); - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } - function arrayPush(array, values2) { - var index = -1, length = values2.length, offset = array.length; - while (++index < length) { - array[offset + index] = values2[index]; - } - return array; - } - function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, length = array == null ? 0 : array.length; - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } - function arrayReduceRight(array, iteratee, accumulator, initAccum) { - var length = array == null ? 0 : array.length; - if (initAccum && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; - } - function arraySome(array, predicate) { - var index = -1, length = array == null ? 0 : array.length; - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; - } - var asciiSize = baseProperty("length"); - function asciiToArray(string) { - return string.split(""); - } - function asciiWords(string) { - return string.match(reAsciiWord) || []; - } - function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection2) { - if (predicate(value, key, collection2)) { - result = key; - return false; - } - }); - return result; - } - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, index = fromIndex + (fromRight ? 1 : -1); - while (fromRight ? index-- : ++index < length) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - function baseIndexOf(array, value, fromIndex) { - return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex); - } - function baseIndexOfWith(array, value, fromIndex, comparator) { - var index = fromIndex - 1, length = array.length; - while (++index < length) { - if (comparator(array[index], value)) { - return index; - } - } - return -1; - } - function baseIsNaN(value) { - return value !== value; - } - function baseMean(array, iteratee) { - var length = array == null ? 0 : array.length; - return length ? baseSum(array, iteratee) / length : NAN; - } - function baseProperty(key) { - return function(object) { - return object == null ? undefined2 : object[key]; - }; - } - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined2 : object[key]; - }; - } - function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection2) { - accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2); - }); - return accumulator; - } - function baseSortBy(array, comparer) { - var length = array.length; - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; - } - function baseSum(array, iteratee) { - var result, index = -1, length = array.length; - while (++index < length) { - var current = iteratee(array[index]); - if (current !== undefined2) { - result = result === undefined2 ? current : result + current; - } - } - return result; - } - function baseTimes(n2, iteratee) { - var index = -1, result = Array(n2); - while (++index < n2) { - result[index] = iteratee(index); - } - return result; - } - function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); - } - function baseTrim(string) { - return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string; - } - function baseUnary(func) { - return function(value) { - return func(value); - }; - } - function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); - } - function cacheHas(cache, key) { - return cache.has(key); - } - function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, length = strSymbols.length; - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { - } - return index; - } - function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { - } - return index; - } - function countHolders(array, placeholder) { - var length = array.length, result = 0; - while (length--) { - if (array[length] === placeholder) { - ++result; - } - } - return result; - } - var deburrLetter = basePropertyOf(deburredLetters); - var escapeHtmlChar = basePropertyOf(htmlEscapes); - function escapeStringChar(chr) { - return "\\" + stringEscapes[chr]; - } - function getValue3(object, key) { - return object == null ? undefined2 : object[key]; - } - function hasUnicode(string) { - return reHasUnicode.test(string); - } - function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); - } - function iteratorToArray(iterator) { - var data, result = []; - while (!(data = iterator.next()).done) { - result.push(data.value); - } - return result; - } - function mapToArray(map) { - var index = -1, result = Array(map.size); - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; - } - function overArg(func, transform2) { - return function(arg) { - return func(transform2(arg)); - }; - } - function replaceHolders(array, placeholder) { - var index = -1, length = array.length, resIndex = 0, result = []; - while (++index < length) { - var value = array[index]; - if (value === placeholder || value === PLACEHOLDER) { - array[index] = PLACEHOLDER; - result[resIndex++] = index; - } - } - return result; - } - function setToArray(set) { - var index = -1, result = Array(set.size); - set.forEach(function(value) { - result[++index] = value; - }); - return result; - } - function setToPairs(set) { - var index = -1, result = Array(set.size); - set.forEach(function(value) { - result[++index] = [value, value]; - }); - return result; - } - function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, length = array.length; - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - function strictLastIndexOf(array, value, fromIndex) { - var index = fromIndex + 1; - while (index--) { - if (array[index] === value) { - return index; - } - } - return index; - } - function stringSize(string) { - return hasUnicode(string) ? unicodeSize(string) : asciiSize(string); - } - function stringToArray(string) { - return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string); - } - function trimmedEndIndex(string) { - var index = string.length; - while (index-- && reWhitespace.test(string.charAt(index))) { - } - return index; - } - var unescapeHtmlChar = basePropertyOf(htmlUnescapes); - function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - ++result; - } - return result; - } - function unicodeToArray(string) { - return string.match(reUnicode) || []; - } - function unicodeWords(string) { - return string.match(reUnicodeWord) || []; - } - var runInContext = function runInContext2(context) { - context = context == null ? root : _3.defaults(root.Object(), context, _3.pick(root, contextProps)); - var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError; - var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype; - var coreJsData = context["__core-js_shared__"]; - var funcToString = funcProto.toString; - var hasOwnProperty = objectProto.hasOwnProperty; - var idCounter = 0; - var maskSrcKey = function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); - return uid ? "Symbol(src)_1." + uid : ""; - }(); - var nativeObjectToString = objectProto.toString; - var objectCtorString = funcToString.call(Object2); - var oldDash = root._; - var reIsNative = RegExp2( - "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" - ); - var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2; - var defineProperty = function() { - try { - var func = getNative(Object2, "defineProperty"); - func({}, "", {}); - return func; - } catch (e) { - } - }(); - var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; - var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse; - var DataView = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create"); - var metaMap = WeakMap2 && new WeakMap2(); - var realNames = {}; - var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2); - var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2; - function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; - } - if (hasOwnProperty.call(value, "__wrapped__")) { - return wrapperClone(value); - } - } - return new LodashWrapper(value); - } - var baseCreate = function() { - function object() { - } - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result2 = new object(); - object.prototype = undefined2; - return result2; - }; - }(); - function baseLodash() { - } - function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = undefined2; - } - lodash.templateSettings = { - "escape": reEscape, - "evaluate": reEvaluate, - "interpolate": reInterpolate, - "variable": "", - "imports": { - "_": lodash - } - }; - lodash.prototype = baseLodash.prototype; - lodash.prototype.constructor = lodash; - LodashWrapper.prototype = baseCreate(baseLodash.prototype); - LodashWrapper.prototype.constructor = LodashWrapper; - function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; - } - function lazyClone() { - var result2 = new LazyWrapper(this.__wrapped__); - result2.__actions__ = copyArray(this.__actions__); - result2.__dir__ = this.__dir__; - result2.__filtered__ = this.__filtered__; - result2.__iteratees__ = copyArray(this.__iteratees__); - result2.__takeCount__ = this.__takeCount__; - result2.__views__ = copyArray(this.__views__); - return result2; - } - function lazyReverse() { - if (this.__filtered__) { - var result2 = new LazyWrapper(this); - result2.__dir__ = -1; - result2.__filtered__ = true; - } else { - result2 = this.clone(); - result2.__dir__ *= -1; - } - return result2; - } - function lazyValue() { - var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end = view.end, length = end - start, index = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__); - if (!isArr || !isRight && arrLength == length && takeCount == length) { - return baseWrapperValue(array, this.__actions__); - } - var result2 = []; - outer: - while (length-- && resIndex < takeCount) { - index += dir; - var iterIndex = -1, value = array[index]; - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], iteratee2 = data.iteratee, type = data.type, computed = iteratee2(value); - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result2[resIndex++] = value; - } - return result2; - } - LazyWrapper.prototype = baseCreate(baseLodash.prototype); - LazyWrapper.prototype.constructor = LazyWrapper; - function Hash(entries) { - var index = -1, length = entries == null ? 0 : entries.length; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; - } - function hashDelete(key) { - var result2 = this.has(key) && delete this.__data__[key]; - this.size -= result2 ? 1 : 0; - return result2; - } - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result2 = data[key]; - return result2 === HASH_UNDEFINED ? undefined2 : result2; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined2; - } - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== undefined2 : hasOwnProperty.call(data, key); - } - function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = nativeCreate && value === undefined2 ? HASH_UNDEFINED : value; - return this; - } - Hash.prototype.clear = hashClear; - Hash.prototype["delete"] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - function ListCache(entries) { - var index = -1, length = entries == null ? 0 : entries.length; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - function listCacheClear() { - this.__data__ = []; - this.size = 0; - } - function listCacheDelete(key) { - var data = this.__data__, index = assocIndexOf(data, key); - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; - } - function listCacheGet(key) { - var data = this.__data__, index = assocIndexOf(data, key); - return index < 0 ? undefined2 : data[index][1]; - } - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - function listCacheSet(key, value) { - var data = this.__data__, index = assocIndexOf(data, key); - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; - } - ListCache.prototype.clear = listCacheClear; - ListCache.prototype["delete"] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - function MapCache(entries) { - var index = -1, length = entries == null ? 0 : entries.length; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - function mapCacheClear() { - this.size = 0; - this.__data__ = { - "hash": new Hash(), - "map": new (Map2 || ListCache)(), - "string": new Hash() - }; - } - function mapCacheDelete(key) { - var result2 = getMapData(this, key)["delete"](key); - this.size -= result2 ? 1 : 0; - return result2; - } - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - function mapCacheSet(key, value) { - var data = getMapData(this, key), size2 = data.size; - data.set(key, value); - this.size += data.size == size2 ? 0 : 1; - return this; - } - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype["delete"] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - function SetCache(values3) { - var index = -1, length = values3 == null ? 0 : values3.length; - this.__data__ = new MapCache(); - while (++index < length) { - this.add(values3[index]); - } - } - function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; - } - function setCacheHas(value) { - return this.__data__.has(value); - } - SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; - SetCache.prototype.has = setCacheHas; - function Stack3(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; - } - function stackClear() { - this.__data__ = new ListCache(); - this.size = 0; - } - function stackDelete(key) { - var data = this.__data__, result2 = data["delete"](key); - this.size = data.size; - return result2; - } - function stackGet(key) { - return this.__data__.get(key); - } - function stackHas(key) { - return this.__data__.has(key); - } - function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; - } - Stack3.prototype.clear = stackClear; - Stack3.prototype["delete"] = stackDelete; - Stack3.prototype.get = stackGet; - Stack3.prototype.has = stackHas; - Stack3.prototype.set = stackSet; - function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length; - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) { - result2.push(key); - } - } - return result2; - } - function arraySample(array) { - var length = array.length; - return length ? array[baseRandom(0, length - 1)] : undefined2; - } - function arraySampleSize(array, n2) { - return shuffleSelf(copyArray(array), baseClamp(n2, 0, array.length)); - } - function arrayShuffle(array) { - return shuffleSelf(copyArray(array)); - } - function assignMergeValue(object, key, value) { - if (value !== undefined2 && !eq(object[key], value) || value === undefined2 && !(key in object)) { - baseAssignValue(object, key, value); - } - } - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined2 && !(key in object)) { - baseAssignValue(object, key, value); - } - } - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - function baseAggregator(collection, setter, iteratee2, accumulator) { - baseEach(collection, function(value, key, collection2) { - setter(accumulator, value, iteratee2(value), collection2); - }); - return accumulator; - } - function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); - } - function baseAssignIn(object, source) { - return object && copyObject(source, keysIn(source), object); - } - function baseAssignValue(object, key, value) { - if (key == "__proto__" && defineProperty) { - defineProperty(object, key, { - "configurable": true, - "enumerable": true, - "value": value, - "writable": true - }); - } else { - object[key] = value; - } - } - function baseAt(object, paths) { - var index = -1, length = paths.length, result2 = Array2(length), skip = object == null; - while (++index < length) { - result2[index] = skip ? undefined2 : get(object, paths[index]); - } - return result2; - } - function baseClamp(number, lower, upper) { - if (number === number) { - if (upper !== undefined2) { - number = number <= upper ? number : upper; - } - if (lower !== undefined2) { - number = number >= lower ? number : lower; - } - } - return number; - } - function baseClone(value, bitmask, customizer, key, object, stack) { - var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG; - if (customizer) { - result2 = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result2 !== undefined2) { - return result2; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result2 = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result2); - } - } else { - var tag = getTag(value), isFunc = tag == funcTag || tag == genTag; - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || isFunc && !object) { - result2 = isFlat || isFunc ? {} : initCloneObject(value); - if (!isDeep) { - return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result2 = initCloneByTag(value, tag, isDeep); - } - } - stack || (stack = new Stack3()); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result2); - if (isSet(value)) { - value.forEach(function(subValue) { - result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - } else if (isMap(value)) { - value.forEach(function(subValue, key2) { - result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); - }); - } - var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys; - var props = isArr ? undefined2 : keysFunc(value); - arrayEach(props || value, function(subValue, key2) { - if (props) { - key2 = subValue; - subValue = value[key2]; - } - assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); - }); - return result2; - } - function baseConforms(source) { - var props = keys(source); - return function(object) { - return baseConformsTo(object, source, props); - }; - } - function baseConformsTo(object, source, props) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object2(object); - while (length--) { - var key = props[length], predicate = source[key], value = object[key]; - if (value === undefined2 && !(key in object) || !predicate(value)) { - return false; - } - } - return true; - } - function baseDelay(func, wait, args) { - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - return setTimeout2(function() { - func.apply(undefined2, args); - }, wait); - } - function baseDifference(array, values3, iteratee2, comparator) { - var index = -1, includes2 = arrayIncludes, isCommon = true, length = array.length, result2 = [], valuesLength = values3.length; - if (!length) { - return result2; - } - if (iteratee2) { - values3 = arrayMap(values3, baseUnary(iteratee2)); - } - if (comparator) { - includes2 = arrayIncludesWith; - isCommon = false; - } else if (values3.length >= LARGE_ARRAY_SIZE) { - includes2 = cacheHas; - isCommon = false; - values3 = new SetCache(values3); - } - outer: - while (++index < length) { - var value = array[index], computed = iteratee2 == null ? value : iteratee2(value); - value = comparator || value !== 0 ? value : 0; - if (isCommon && computed === computed) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values3[valuesIndex] === computed) { - continue outer; - } - } - result2.push(value); - } else if (!includes2(values3, computed, comparator)) { - result2.push(value); - } - } - return result2; - } - var baseEach = createBaseEach(baseForOwn); - var baseEachRight = createBaseEach(baseForOwnRight, true); - function baseEvery(collection, predicate) { - var result2 = true; - baseEach(collection, function(value, index, collection2) { - result2 = !!predicate(value, index, collection2); - return result2; - }); - return result2; - } - function baseExtremum(array, iteratee2, comparator) { - var index = -1, length = array.length; - while (++index < length) { - var value = array[index], current = iteratee2(value); - if (current != null && (computed === undefined2 ? current === current && !isSymbol(current) : comparator(current, computed))) { - var computed = current, result2 = value; - } - } - return result2; - } - function baseFill(array, value, start, end) { - var length = array.length; - start = toInteger(start); - if (start < 0) { - start = -start > length ? 0 : length + start; - } - end = end === undefined2 || end > length ? length : toInteger(end); - if (end < 0) { - end += length; - } - end = start > end ? 0 : toLength(end); - while (start < end) { - array[start++] = value; - } - return array; - } - function baseFilter(collection, predicate) { - var result2 = []; - baseEach(collection, function(value, index, collection2) { - if (predicate(value, index, collection2)) { - result2.push(value); - } - }); - return result2; - } - function baseFlatten(array, depth, predicate, isStrict, result2) { - var index = -1, length = array.length; - predicate || (predicate = isFlattenable); - result2 || (result2 = []); - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - baseFlatten(value, depth - 1, predicate, isStrict, result2); - } else { - arrayPush(result2, value); - } - } else if (!isStrict) { - result2[result2.length] = value; - } - } - return result2; - } - var baseFor = createBaseFor(); - var baseForRight = createBaseFor(true); - function baseForOwn(object, iteratee2) { - return object && baseFor(object, iteratee2, keys); - } - function baseForOwnRight(object, iteratee2) { - return object && baseForRight(object, iteratee2, keys); - } - function baseFunctions(object, props) { - return arrayFilter(props, function(key) { - return isFunction(object[key]); - }); - } - function baseGet(object, path) { - path = castPath(path, object); - var index = 0, length = path.length; - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return index && index == length ? object : undefined2; - } - function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result2 = keysFunc(object); - return isArray(object) ? result2 : arrayPush(result2, symbolsFunc(object)); - } - function baseGetTag(value) { - if (value == null) { - return value === undefined2 ? undefinedTag : nullTag; - } - return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString(value); - } - function baseGt(value, other) { - return value > other; - } - function baseHas(object, key) { - return object != null && hasOwnProperty.call(object, key); - } - function baseHasIn(object, key) { - return object != null && key in Object2(object); - } - function baseInRange(number, start, end) { - return number >= nativeMin(start, end) && number < nativeMax(start, end); - } - function baseIntersection(arrays, iteratee2, comparator) { - var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = []; - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee2) { - array = arrayMap(array, baseUnary(iteratee2)); - } - maxLength = nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined2; - } - array = arrays[0]; - var index = -1, seen = caches[0]; - outer: - while (++index < length && result2.length < maxLength) { - var value = array[index], computed = iteratee2 ? iteratee2(value) : value; - value = comparator || value !== 0 ? value : 0; - if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache ? cacheHas(cache, computed) : includes2(arrays[othIndex], computed, comparator))) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result2.push(value); - } - } - return result2; - } - function baseInverter(object, setter, iteratee2, accumulator) { - baseForOwn(object, function(value, key, object2) { - setter(accumulator, iteratee2(value), key, object2); - }); - return accumulator; - } - function baseInvoke(object, path, args) { - path = castPath(path, object); - object = parent(object, path); - var func = object == null ? object : object[toKey(last(path))]; - return func == null ? undefined2 : apply(func, object, args); - } - function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; - } - function baseIsArrayBuffer(value) { - return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; - } - function baseIsDate(value) { - return isObjectLike(value) && baseGetTag(value) == dateTag; - } - function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); - } - function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other); - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; - var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag; - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack3()); - return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__"); - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other; - stack || (stack = new Stack3()); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack3()); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); - } - function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; - } - function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, length = index, noCustomizer = !customizer; - if (object == null) { - return !length; - } - object = Object2(object); - while (index--) { - var data = matchData[index]; - if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], objValue = object[key], srcValue = data[1]; - if (noCustomizer && data[2]) { - if (objValue === undefined2 && !(key in object)) { - return false; - } - } else { - var stack = new Stack3(); - if (customizer) { - var result2 = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result2 === undefined2 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) { - return false; - } - } - } - return true; - } - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - function baseIsRegExp(value) { - return isObjectLike(value) && baseGetTag(value) == regexpTag; - } - function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; - } - function baseIsTypedArray(value) { - return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; - } - function baseIteratee(value) { - if (typeof value == "function") { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == "object") { - return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value); - } - return property(value); - } - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result2 = []; - for (var key in Object2(object)) { - if (hasOwnProperty.call(object, key) && key != "constructor") { - result2.push(key); - } - } - return result2; - } - function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), result2 = []; - for (var key in object) { - if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) { - result2.push(key); - } - } - return result2; - } - function baseLt(value, other) { - return value < other; - } - function baseMap(collection, iteratee2) { - var index = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : []; - baseEach(collection, function(value, key, collection2) { - result2[++index] = iteratee2(value, key, collection2); - }); - return result2; - } - function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; - } - function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; - } - function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack3()); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } else { - var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined2; - if (newValue === undefined2) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); - } - function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue); - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined2; - var isCommon = newValue === undefined2; - if (isCommon) { - var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue); - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } else { - newValue = []; - } - } else if (isPlainObject5(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } else { - isCommon = false; - } - } - if (isCommon) { - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack["delete"](srcValue); - } - assignMergeValue(object, key, newValue); - } - function baseNth(array, n2) { - var length = array.length; - if (!length) { - return; - } - n2 += n2 < 0 ? length : 0; - return isIndex(n2, length) ? array[n2] : undefined2; - } - function baseOrderBy(collection, iteratees, orders) { - if (iteratees.length) { - iteratees = arrayMap(iteratees, function(iteratee2) { - if (isArray(iteratee2)) { - return function(value) { - return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2); - }; - } - return iteratee2; - }); - } else { - iteratees = [identity]; - } - var index = -1; - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - var result2 = baseMap(collection, function(value, key, collection2) { - var criteria = arrayMap(iteratees, function(iteratee2) { - return iteratee2(value); - }); - return { "criteria": criteria, "index": ++index, "value": value }; - }); - return baseSortBy(result2, function(object, other) { - return compareMultiple(object, other, orders); - }); - } - function basePick(object, paths) { - return basePickBy(object, paths, function(value, path) { - return hasIn(object, path); - }); - } - function basePickBy(object, paths, predicate) { - var index = -1, length = paths.length, result2 = {}; - while (++index < length) { - var path = paths[index], value = baseGet(object, path); - if (predicate(value, path)) { - baseSet(result2, castPath(path, object), value); - } - } - return result2; - } - function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; - } - function basePullAll(array, values3, iteratee2, comparator) { - var indexOf2 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values3.length, seen = array; - if (array === values3) { - values3 = copyArray(values3); - } - if (iteratee2) { - seen = arrayMap(array, baseUnary(iteratee2)); - } - while (++index < length) { - var fromIndex = 0, value = values3[index], computed = iteratee2 ? iteratee2(value) : value; - while ((fromIndex = indexOf2(seen, computed, fromIndex, comparator)) > -1) { - if (seen !== array) { - splice.call(seen, fromIndex, 1); - } - splice.call(array, fromIndex, 1); - } - } - return array; - } - function basePullAt(array, indexes) { - var length = array ? indexes.length : 0, lastIndex = length - 1; - while (length--) { - var index = indexes[length]; - if (length == lastIndex || index !== previous) { - var previous = index; - if (isIndex(index)) { - splice.call(array, index, 1); - } else { - baseUnset(array, index); - } - } - } - return array; - } - function baseRandom(lower, upper) { - return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); - } - function baseRange(start, end, step, fromRight) { - var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result2 = Array2(length); - while (length--) { - result2[fromRight ? length : ++index] = start; - start += step; - } - return result2; - } - function baseRepeat(string, n2) { - var result2 = ""; - if (!string || n2 < 1 || n2 > MAX_SAFE_INTEGER) { - return result2; - } - do { - if (n2 % 2) { - result2 += string; - } - n2 = nativeFloor(n2 / 2); - if (n2) { - string += string; - } - } while (n2); - return result2; - } - function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ""); - } - function baseSample(collection) { - return arraySample(values2(collection)); - } - function baseSampleSize(collection, n2) { - var array = values2(collection); - return shuffleSelf(array, baseClamp(n2, 0, array.length)); - } - function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = castPath(path, object); - var index = -1, length = path.length, lastIndex = length - 1, nested = object; - while (nested != null && ++index < length) { - var key = toKey(path[index]), newValue = value; - if (key === "__proto__" || key === "constructor" || key === "prototype") { - return object; - } - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined2; - if (newValue === undefined2) { - newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {}; - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; - } - var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; - }; - var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, "toString", { - "configurable": true, - "enumerable": false, - "value": constant(string), - "writable": true - }); - }; - function baseShuffle(collection) { - return shuffleSelf(values2(collection)); - } - function baseSlice(array, start, end) { - var index = -1, length = array.length; - if (start < 0) { - start = -start > length ? 0 : length + start; - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : end - start >>> 0; - start >>>= 0; - var result2 = Array2(length); - while (++index < length) { - result2[index] = array[index + start]; - } - return result2; - } - function baseSome(collection, predicate) { - var result2; - baseEach(collection, function(value, index, collection2) { - result2 = predicate(value, index, collection2); - return !result2; - }); - return !!result2; - } - function baseSortedIndex(array, value, retHighest) { - var low = 0, high = array == null ? low : array.length; - if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = low + high >>> 1, computed = array[mid]; - if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy(array, value, identity, retHighest); - } - function baseSortedIndexBy(array, value, iteratee2, retHighest) { - var low = 0, high = array == null ? 0 : array.length; - if (high === 0) { - return 0; - } - value = iteratee2(value); - var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined2; - while (low < high) { - var mid = nativeFloor((low + high) / 2), computed = iteratee2(array[mid]), othIsDefined = computed !== undefined2, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol(computed); - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? computed <= value : computed < value; - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); - } - function baseSortedUniq(array, iteratee2) { - var index = -1, length = array.length, resIndex = 0, result2 = []; - while (++index < length) { - var value = array[index], computed = iteratee2 ? iteratee2(value) : value; - if (!index || !eq(computed, seen)) { - var seen = computed; - result2[resIndex++] = value === 0 ? 0 : value; - } - } - return result2; - } - function baseToNumber(value) { - if (typeof value == "number") { - return value; - } - if (isSymbol(value)) { - return NAN; - } - return +value; - } - function baseToString(value) { - if (typeof value == "string") { - return value; - } - if (isArray(value)) { - return arrayMap(value, baseToString) + ""; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ""; - } - var result2 = value + ""; - return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; - } - function baseUniq(array, iteratee2, comparator) { - var index = -1, includes2 = arrayIncludes, length = array.length, isCommon = true, result2 = [], seen = result2; - if (comparator) { - isCommon = false; - includes2 = arrayIncludesWith; - } else if (length >= LARGE_ARRAY_SIZE) { - var set2 = iteratee2 ? null : createSet(array); - if (set2) { - return setToArray(set2); - } - isCommon = false; - includes2 = cacheHas; - seen = new SetCache(); - } else { - seen = iteratee2 ? [] : result2; - } - outer: - while (++index < length) { - var value = array[index], computed = iteratee2 ? iteratee2(value) : value; - value = comparator || value !== 0 ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee2) { - seen.push(computed); - } - result2.push(value); - } else if (!includes2(seen, computed, comparator)) { - if (seen !== result2) { - seen.push(computed); - } - result2.push(value); - } - } - return result2; - } - function baseUnset(object, path) { - path = castPath(path, object); - object = parent(object, path); - return object == null || delete object[toKey(last(path))]; - } - function baseUpdate(object, path, updater, customizer) { - return baseSet(object, path, updater(baseGet(object, path)), customizer); - } - function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, index = fromRight ? length : -1; - while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) { - } - return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index); - } - function baseWrapperValue(value, actions) { - var result2 = value; - if (result2 instanceof LazyWrapper) { - result2 = result2.value(); - } - return arrayReduce(actions, function(result3, action) { - return action.func.apply(action.thisArg, arrayPush([result3], action.args)); - }, result2); - } - function baseXor(arrays, iteratee2, comparator) { - var length = arrays.length; - if (length < 2) { - return length ? baseUniq(arrays[0]) : []; - } - var index = -1, result2 = Array2(length); - while (++index < length) { - var array = arrays[index], othIndex = -1; - while (++othIndex < length) { - if (othIndex != index) { - result2[index] = baseDifference(result2[index] || array, arrays[othIndex], iteratee2, comparator); - } - } - } - return baseUniq(baseFlatten(result2, 1), iteratee2, comparator); - } - function baseZipObject(props, values3, assignFunc) { - var index = -1, length = props.length, valsLength = values3.length, result2 = {}; - while (++index < length) { - var value = index < valsLength ? values3[index] : undefined2; - assignFunc(result2, props[index], value); - } - return result2; - } - function castArrayLikeObject(value) { - return isArrayLikeObject(value) ? value : []; - } - function castFunction(value) { - return typeof value == "function" ? value : identity; - } - function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); - } - var castRest = baseRest; - function castSlice(array, start, end) { - var length = array.length; - end = end === undefined2 ? length : end; - return !start && end >= length ? array : baseSlice(array, start, end); - } - var clearTimeout2 = ctxClearTimeout || function(id) { - return root.clearTimeout(id); - }; - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, result2 = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - buffer.copy(result2); - return result2; - } - function cloneArrayBuffer(arrayBuffer) { - var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer)); - return result2; - } - function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); - } - function cloneRegExp(regexp) { - var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result2.lastIndex = regexp.lastIndex; - return result2; - } - function cloneSymbol(symbol) { - return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {}; - } - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); - } - function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined2, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value); - var othIsDefined = other !== undefined2, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other); - if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) { - return 1; - } - if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) { - return -1; - } - } - return 0; - } - function compareMultiple(object, other, orders) { - var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length; - while (++index < length) { - var result2 = compareAscending(objCriteria[index], othCriteria[index]); - if (result2) { - if (index >= ordersLength) { - return result2; - } - var order2 = orders[index]; - return result2 * (order2 == "desc" ? -1 : 1); - } - } - return object.index - other.index; - } - function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried; - while (++leftIndex < leftLength) { - result2[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result2[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result2[leftIndex++] = args[argsIndex++]; - } - return result2; - } - function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried; - while (++argsIndex < rangeLength) { - result2[argsIndex] = args[argsIndex]; - } - var offset = argsIndex; - while (++rightIndex < rightLength) { - result2[offset + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result2[offset + holders[holdersIndex]] = args[argsIndex++]; - } - } - return result2; - } - function copyArray(source, array) { - var index = -1, length = source.length; - array || (array = Array2(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - var index = -1, length = props.length; - while (++index < length) { - var key = props[index]; - var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined2; - if (newValue === undefined2) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; - } - function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); - } - function copySymbolsIn(source, object) { - return copyObject(source, getSymbolsIn(source), object); - } - function createAggregator(setter, initializer) { - return function(collection, iteratee2) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {}; - return func(collection, setter, getIteratee(iteratee2, 2), accumulator); - }; - } - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined2, guard = length > 2 ? sources[2] : undefined2; - customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : undefined2; - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined2 : customizer; - length = 1; - } - object = Object2(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); - } - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee2) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee2); - } - var length = collection.length, index = fromRight ? length : -1, iterable = Object2(collection); - while (fromRight ? index-- : ++index < length) { - if (iteratee2(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; - } - function createBaseFor(fromRight) { - return function(object, iteratee2, keysFunc) { - var index = -1, iterable = Object2(object), props = keysFunc(object), length = props.length; - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee2(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - function createBind(func, bitmask, thisArg) { - var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); - function wrapper() { - var fn2 = this && this !== root && this instanceof wrapper ? Ctor : func; - return fn2.apply(isBind ? thisArg : this, arguments); - } - return wrapper; - } - function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined2; - var chr = strSymbols ? strSymbols[0] : string.charAt(0); - var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1); - return chr[methodName]() + trailing; - }; - } - function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, "")), callback, ""); - }; - } - function createCtor(Ctor) { - return function() { - var args = arguments; - switch (args.length) { - case 0: - return new Ctor(); - case 1: - return new Ctor(args[0]); - case 2: - return new Ctor(args[0], args[1]); - case 3: - return new Ctor(args[0], args[1], args[2]); - case 4: - return new Ctor(args[0], args[1], args[2], args[3]); - case 5: - return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: - return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: - return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args); - return isObject(result2) ? result2 : thisBinding; - }; - } - function createCurry(func, bitmask, arity) { - var Ctor = createCtor(func); - function wrapper() { - var length = arguments.length, args = Array2(length), index = length, placeholder = getHolder(wrapper); - while (index--) { - args[index] = arguments[index]; - } - var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder); - length -= holders.length; - if (length < arity) { - return createRecurry( - func, - bitmask, - createHybrid, - wrapper.placeholder, - undefined2, - args, - holders, - undefined2, - undefined2, - arity - length - ); - } - var fn2 = this && this !== root && this instanceof wrapper ? Ctor : func; - return apply(fn2, this, args); - } - return wrapper; - } - function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object2(collection); - if (!isArrayLike(collection)) { - var iteratee2 = getIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { - return iteratee2(iterable[key], key, iterable); - }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee2 ? collection[index] : index] : undefined2; - }; - } - function createFlow(fromRight) { - return flatRest(function(funcs) { - var length = funcs.length, index = length, prereq = LodashWrapper.prototype.thru; - if (fromRight) { - funcs.reverse(); - } - while (index--) { - var func = funcs[index]; - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - if (prereq && !wrapper && getFuncName(func) == "wrapper") { - var wrapper = new LodashWrapper([], true); - } - } - index = wrapper ? index : length; - while (++index < length) { - func = funcs[index]; - var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined2; - if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func); - } - } - return function() { - var args = arguments, value = args[0]; - if (wrapper && args.length == 1 && isArray(value)) { - return wrapper.plant(value).value(); - } - var index2 = 0, result2 = length ? funcs[index2].apply(this, args) : value; - while (++index2 < length) { - result2 = funcs[index2].call(this, result2); - } - return result2; - }; - }); - } - function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) { - var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined2 : createCtor(func); - function wrapper() { - var length = arguments.length, args = Array2(length), index = length; - while (index--) { - args[index] = arguments[index]; - } - if (isCurried) { - var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder); - } - if (partials) { - args = composeArgs(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight, isCurried); - } - length -= holdersCount; - if (isCurried && length < arity) { - var newHolders = replaceHolders(args, placeholder); - return createRecurry( - func, - bitmask, - createHybrid, - wrapper.placeholder, - thisArg, - args, - newHolders, - argPos, - ary2, - arity - length - ); - } - var thisBinding = isBind ? thisArg : this, fn2 = isBindKey ? thisBinding[func] : func; - length = args.length; - if (argPos) { - args = reorder(args, argPos); - } else if (isFlip && length > 1) { - args.reverse(); - } - if (isAry && ary2 < length) { - args.length = ary2; - } - if (this && this !== root && this instanceof wrapper) { - fn2 = Ctor || createCtor(fn2); - } - return fn2.apply(thisBinding, args); - } - return wrapper; - } - function createInverter(setter, toIteratee) { - return function(object, iteratee2) { - return baseInverter(object, setter, toIteratee(iteratee2), {}); - }; - } - function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result2; - if (value === undefined2 && other === undefined2) { - return defaultValue; - } - if (value !== undefined2) { - result2 = value; - } - if (other !== undefined2) { - if (result2 === undefined2) { - return other; - } - if (typeof value == "string" || typeof other == "string") { - value = baseToString(value); - other = baseToString(other); - } else { - value = baseToNumber(value); - other = baseToNumber(other); - } - result2 = operator(value, other); - } - return result2; - }; - } - function createOver(arrayFunc) { - return flatRest(function(iteratees) { - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - return baseRest(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee2) { - return apply(iteratee2, thisArg, args); - }); - }); - }); - } - function createPadding(length, chars) { - chars = chars === undefined2 ? " " : baseToString(chars); - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat(chars, length) : chars; - } - var result2 = baseRepeat(chars, nativeCeil(length / stringSize(chars))); - return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length).join("") : result2.slice(0, length); - } - function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); - function wrapper() { - var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn2 = this && this !== root && this instanceof wrapper ? Ctor : func; - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply(fn2, isBind ? thisArg : this, args); - } - return wrapper; - } - function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != "number" && isIterateeCall(start, end, step)) { - end = step = undefined2; - } - start = toFinite(start); - if (end === undefined2) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - step = step === undefined2 ? start < end ? 1 : -1 : toFinite(step); - return baseRange(start, end, step, fromRight); - }; - } - function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == "string" && typeof other == "string")) { - value = toNumber(value); - other = toNumber(other); - } - return operator(value, other); - }; - } - function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) { - var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined2, newHoldersRight = isCurry ? undefined2 : holders, newPartials = isCurry ? partials : undefined2, newPartialsRight = isCurry ? undefined2 : partials; - bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG; - bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); - if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { - bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); - } - var newData = [ - func, - bitmask, - thisArg, - newPartials, - newHolders, - newPartialsRight, - newHoldersRight, - argPos, - ary2, - arity - ]; - var result2 = wrapFunc.apply(undefined2, newData); - if (isLaziable(func)) { - setData(result2, newData); - } - result2.placeholder = placeholder; - return setWrapToString(result2, func, bitmask); - } - function createRound(methodName) { - var func = Math2[methodName]; - return function(number, precision) { - number = toNumber(number); - precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); - if (precision && nativeIsFinite(number)) { - var pair = (toString(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision)); - pair = (toString(value) + "e").split("e"); - return +(pair[0] + "e" + (+pair[1] - precision)); - } - return func(number); - }; - } - var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values3) { - return new Set2(values3); - }; - function createToPairs(keysFunc) { - return function(object) { - var tag = getTag(object); - if (tag == mapTag) { - return mapToArray(object); - } - if (tag == setTag) { - return setToPairs(object); - } - return baseToPairs(object, keysFunc(object)); - }; - } - function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) { - var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; - if (!isBindKey && typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); - partials = holders = undefined2; - } - ary2 = ary2 === undefined2 ? ary2 : nativeMax(toInteger(ary2), 0); - arity = arity === undefined2 ? arity : toInteger(arity); - length -= holders ? holders.length : 0; - if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, holdersRight = holders; - partials = holders = undefined2; - } - var data = isBindKey ? undefined2 : getData(func); - var newData = [ - func, - bitmask, - thisArg, - partials, - holders, - partialsRight, - holdersRight, - argPos, - ary2, - arity - ]; - if (data) { - mergeData(newData, data); - } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] === undefined2 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0); - if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { - bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); - } - if (!bitmask || bitmask == WRAP_BIND_FLAG) { - var result2 = createBind(func, bitmask, thisArg); - } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { - result2 = createCurry(func, bitmask, arity); - } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { - result2 = createPartial(func, bitmask, thisArg, partials); - } else { - result2 = createHybrid.apply(undefined2, newData); - } - var setter = data ? baseSetData : setData; - return setWrapToString(setter(result2, newData), func, bitmask); - } - function customDefaultsAssignIn(objValue, srcValue, key, object) { - if (objValue === undefined2 || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key)) { - return srcValue; - } - return objValue; - } - function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined2, customDefaultsMerge, stack); - stack["delete"](srcValue); - } - return objValue; - } - function customOmitClone(value) { - return isPlainObject5(value) ? undefined2 : value; - } - function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length; - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - var arrStacked = stack.get(array); - var othStacked = stack.get(other); - if (arrStacked && othStacked) { - return arrStacked == other && othStacked == array; - } - var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined2; - stack.set(array, other); - stack.set(other, array); - while (++index < arrLength) { - var arrValue = array[index], othValue = other[index]; - if (customizer) { - var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined2) { - if (compared) { - continue; - } - result2 = false; - break; - } - if (seen) { - if (!arraySome(other, function(othValue2, othIndex) { - if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result2 = false; - break; - } - } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - result2 = false; - break; - } - } - stack["delete"](array); - stack["delete"](other); - return result2; - } - function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) { - return false; - } - object = object.buffer; - other = other.buffer; - case arrayBufferTag: - if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) { - return false; - } - return true; - case boolTag: - case dateTag: - case numberTag: - return eq(+object, +other); - case errorTag: - return object.name == other.name && object.message == other.message; - case regexpTag: - case stringTag: - return object == other + ""; - case mapTag: - var convert = mapToArray; - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert || (convert = setToArray); - if (object.size != other.size && !isPartial) { - return false; - } - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; - stack.set(object, other); - var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack["delete"](object); - return result2; - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; - } - function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length; - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - var objStacked = stack.get(object); - var othStacked = stack.get(other); - if (objStacked && othStacked) { - return objStacked == other && othStacked == object; - } - var result2 = true; - stack.set(object, other); - stack.set(other, object); - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], othValue = other[key]; - if (customizer) { - var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack); - } - if (!(compared === undefined2 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { - result2 = false; - break; - } - skipCtor || (skipCtor = key == "constructor"); - } - if (result2 && !skipCtor) { - var objCtor = object.constructor, othCtor = other.constructor; - if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) { - result2 = false; - } - } - stack["delete"](object); - stack["delete"](other); - return result2; - } - function flatRest(func) { - return setToString(overRest(func, undefined2, flatten), func + ""); - } - function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); - } - function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); - } - var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); - }; - function getFuncName(func) { - var result2 = func.name + "", array = realNames[result2], length = hasOwnProperty.call(realNames, result2) ? array.length : 0; - while (length--) { - var data = array[length], otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result2; - } - function getHolder(func) { - var object = hasOwnProperty.call(lodash, "placeholder") ? lodash : func; - return object.placeholder; - } - function getIteratee() { - var result2 = lodash.iteratee || iteratee; - result2 = result2 === iteratee ? baseIteratee : result2; - return arguments.length ? result2(arguments[0], arguments[1]) : result2; - } - function getMapData(map2, key) { - var data = map2.__data__; - return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; - } - function getMatchData(object) { - var result2 = keys(object), length = result2.length; - while (length--) { - var key = result2[length], value = object[key]; - result2[length] = [key, value, isStrictComparable(value)]; - } - return result2; - } - function getNative(object, key) { - var value = getValue3(object, key); - return baseIsNative(value) ? value : undefined2; - } - function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; - try { - value[symToStringTag] = undefined2; - var unmasked = true; - } catch (e) { - } - var result2 = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result2; - } - var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object2(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); - }; - var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result2 = []; - while (object) { - arrayPush(result2, getSymbols(object)); - object = getPrototype(object); - } - return result2; - }; - var getTag = baseGetTag; - if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) { - getTag = function(value) { - var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined2, ctorString = Ctor ? toSource(Ctor) : ""; - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: - return dataViewTag; - case mapCtorString: - return mapTag; - case promiseCtorString: - return promiseTag; - case setCtorString: - return setTag; - case weakMapCtorString: - return weakMapTag; - } - } - return result2; - }; - } - function getView(start, end, transforms) { - var index = -1, length = transforms.length; - while (++index < length) { - var data = transforms[index], size2 = data.size; - switch (data.type) { - case "drop": - start += size2; - break; - case "dropRight": - end -= size2; - break; - case "take": - end = nativeMin(end, start + size2); - break; - case "takeRight": - start = nativeMax(start, end - size2); - break; - } - } - return { "start": start, "end": end }; - } - function getWrapDetails(source) { - var match = source.match(reWrapDetails); - return match ? match[1].split(reSplitDetails) : []; - } - function hasPath(object, path, hasFunc) { - path = castPath(path, object); - var index = -1, length = path.length, result2 = false; - while (++index < length) { - var key = toKey(path[index]); - if (!(result2 = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result2 || ++index != length) { - return result2; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object)); - } - function initCloneArray(array) { - var length = array.length, result2 = new array.constructor(length); - if (length && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) { - result2.index = array.index; - result2.input = array.input; - } - return result2; - } - function initCloneObject(object) { - return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {}; - } - function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - case boolTag: - case dateTag: - return new Ctor(+object); - case dataViewTag: - return cloneDataView(object, isDeep); - case float32Tag: - case float64Tag: - case int8Tag: - case int16Tag: - case int32Tag: - case uint8Tag: - case uint8ClampedTag: - case uint16Tag: - case uint32Tag: - return cloneTypedArray(object, isDeep); - case mapTag: - return new Ctor(); - case numberTag: - case stringTag: - return new Ctor(object); - case regexpTag: - return cloneRegExp(object); - case setTag: - return new Ctor(); - case symbolTag: - return cloneSymbol(object); - } - } - function insertWrapDetails(source, details) { - var length = details.length; - if (!length) { - return source; - } - var lastIndex = length - 1; - details[lastIndex] = (length > 1 ? "& " : "") + details[lastIndex]; - details = details.join(length > 2 ? ", " : " "); - return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n"); - } - function isFlattenable(value) { - return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]); - } - function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); - } - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) { - return eq(object[index], value); - } - return false; - } - function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object); - } - function isKeyable(value) { - var type = typeof value; - return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; - } - function isLaziable(func) { - var funcName = getFuncName(func), other = lodash[funcName]; - if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) { - return false; - } - if (func === other) { - return true; - } - var data = getData(other); - return !!data && func === data[0]; - } - function isMasked(func) { - return !!maskSrcKey && maskSrcKey in func; - } - var isMaskable = coreJsData ? isFunction : stubFalse; - function isPrototype(value) { - var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; - return value === proto; - } - function isStrictComparable(value) { - return value === value && !isObject(value); - } - function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && (srcValue !== undefined2 || key in Object2(object)); - }; - } - function memoizeCapped(func) { - var result2 = memoize2(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - var cache = result2.cache; - return result2; - } - function mergeData(data, source) { - var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); - var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG; - if (!(isCommon || isCombo)) { - return data; - } - if (srcBitmask & WRAP_BIND_FLAG) { - data[2] = source[2]; - newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; - } - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; - } - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; - } - value = source[7]; - if (value) { - data[7] = value; - } - if (srcBitmask & WRAP_ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); - } - if (data[9] == null) { - data[9] = source[9]; - } - data[0] = source[0]; - data[1] = newBitmask; - return data; - } - function nativeKeysIn(object) { - var result2 = []; - if (object != null) { - for (var key in Object2(object)) { - result2.push(key); - } - } - return result2; - } - function objectToString(value) { - return nativeObjectToString.call(value); - } - function overRest(func, start, transform3) { - start = nativeMax(start === undefined2 ? func.length - 1 : start, 0); - return function() { - var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array2(length); - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array2(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform3(array); - return apply(func, this, otherArgs); - }; - } - function parent(object, path) { - return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); - } - function reorder(array, indexes) { - var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array); - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined2; - } - return array; - } - function safeGet(object, key) { - if (key === "constructor" && typeof object[key] === "function") { - return; - } - if (key == "__proto__") { - return; - } - return object[key]; - } - var setData = shortOut(baseSetData); - var setTimeout2 = ctxSetTimeout || function(func, wait) { - return root.setTimeout(func, wait); - }; - var setToString = shortOut(baseSetToString); - function setWrapToString(wrapper, reference, bitmask) { - var source = reference + ""; - return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); - } - function shortOut(func) { - var count = 0, lastCalled = 0; - return function() { - var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined2, arguments); - }; - } - function shuffleSelf(array, size2) { - var index = -1, length = array.length, lastIndex = length - 1; - size2 = size2 === undefined2 ? length : size2; - while (++index < size2) { - var rand = baseRandom(index, lastIndex), value = array[rand]; - array[rand] = array[index]; - array[index] = value; - } - array.length = size2; - return array; - } - var stringToPath = memoizeCapped(function(string) { - var result2 = []; - if (string.charCodeAt(0) === 46) { - result2.push(""); - } - string.replace(rePropName, function(match, number, quote, subString) { - result2.push(quote ? subString.replace(reEscapeChar, "$1") : number || match); - }); - return result2; - }); - function toKey(value) { - if (typeof value == "string" || isSymbol(value)) { - return value; - } - var result2 = value + ""; - return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; - } - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) { - } - try { - return func + ""; - } catch (e) { - } - } - return ""; - } - function updateWrapDetails(details, bitmask) { - arrayEach(wrapFlags, function(pair) { - var value = "_." + pair[0]; - if (bitmask & pair[1] && !arrayIncludes(details, value)) { - details.push(value); - } - }); - return details.sort(); - } - function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper) { - return wrapper.clone(); - } - var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); - result2.__actions__ = copyArray(wrapper.__actions__); - result2.__index__ = wrapper.__index__; - result2.__values__ = wrapper.__values__; - return result2; - } - function chunk(array, size2, guard) { - if (guard ? isIterateeCall(array, size2, guard) : size2 === undefined2) { - size2 = 1; - } else { - size2 = nativeMax(toInteger(size2), 0); - } - var length = array == null ? 0 : array.length; - if (!length || size2 < 1) { - return []; - } - var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size2)); - while (index < length) { - result2[resIndex++] = baseSlice(array, index, index += size2); - } - return result2; - } - function compact(array) { - var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = []; - while (++index < length) { - var value = array[index]; - if (value) { - result2[resIndex++] = value; - } - } - return result2; - } - function concat() { - var length = arguments.length; - if (!length) { - return []; - } - var args = Array2(length - 1), array = arguments[0], index = length; - while (index--) { - args[index - 1] = arguments[index]; - } - return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); - } - var difference = baseRest(function(array, values3) { - return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values3, 1, isArrayLikeObject, true)) : []; - }); - var differenceBy = baseRest(function(array, values3) { - var iteratee2 = last(values3); - if (isArrayLikeObject(iteratee2)) { - iteratee2 = undefined2; - } - return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values3, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : []; - }); - var differenceWith = baseRest(function(array, values3) { - var comparator = last(values3); - if (isArrayLikeObject(comparator)) { - comparator = undefined2; - } - return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values3, 1, isArrayLikeObject, true), undefined2, comparator) : []; - }); - function drop(array, n2, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); - return baseSlice(array, n2 < 0 ? 0 : n2, length); - } - function dropRight(array, n2, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); - n2 = length - n2; - return baseSlice(array, 0, n2 < 0 ? 0 : n2); - } - function dropRightWhile(array, predicate) { - return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : []; - } - function dropWhile(array, predicate) { - return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : []; - } - function fill(array, value, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (start && typeof start != "number" && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); - } - function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, getIteratee(predicate, 3), index); - } - function findLastIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length - 1; - if (fromIndex !== undefined2) { - index = toInteger(fromIndex); - index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); - } - return baseFindIndex(array, getIteratee(predicate, 3), index, true); - } - function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, 1) : []; - } - function flattenDeep(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, INFINITY) : []; - } - function flattenDepth(array, depth) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - depth = depth === undefined2 ? 1 : toInteger(depth); - return baseFlatten(array, depth); - } - function fromPairs(pairs) { - var index = -1, length = pairs == null ? 0 : pairs.length, result2 = {}; - while (++index < length) { - var pair = pairs[index]; - result2[pair[0]] = pair[1]; - } - return result2; - } - function head(array) { - return array && array.length ? array[0] : undefined2; - } - function indexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseIndexOf(array, value, index); - } - function initial(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 0, -1) : []; - } - var intersection = baseRest(function(arrays) { - var mapped = arrayMap(arrays, castArrayLikeObject); - return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : []; - }); - var intersectionBy = baseRest(function(arrays) { - var iteratee2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject); - if (iteratee2 === last(mapped)) { - iteratee2 = undefined2; - } else { - mapped.pop(); - } - return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : []; - }); - var intersectionWith = baseRest(function(arrays) { - var comparator = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject); - comparator = typeof comparator == "function" ? comparator : undefined2; - if (comparator) { - mapped.pop(); - } - return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : []; - }); - function join(array, separator) { - return array == null ? "" : nativeJoin.call(array, separator); - } - function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined2; - } - function lastIndexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length; - if (fromIndex !== undefined2) { - index = toInteger(fromIndex); - index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); - } - return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true); - } - function nth(array, n2) { - return array && array.length ? baseNth(array, toInteger(n2)) : undefined2; - } - var pull = baseRest(pullAll); - function pullAll(array, values3) { - return array && array.length && values3 && values3.length ? basePullAll(array, values3) : array; - } - function pullAllBy(array, values3, iteratee2) { - return array && array.length && values3 && values3.length ? basePullAll(array, values3, getIteratee(iteratee2, 2)) : array; - } - function pullAllWith(array, values3, comparator) { - return array && array.length && values3 && values3.length ? basePullAll(array, values3, undefined2, comparator) : array; - } - var pullAt = flatRest(function(array, indexes) { - var length = array == null ? 0 : array.length, result2 = baseAt(array, indexes); - basePullAt(array, arrayMap(indexes, function(index) { - return isIndex(index, length) ? +index : index; - }).sort(compareAscending)); - return result2; - }); - function remove(array, predicate) { - var result2 = []; - if (!(array && array.length)) { - return result2; - } - var index = -1, indexes = [], length = array.length; - predicate = getIteratee(predicate, 3); - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result2.push(value); - indexes.push(index); - } - } - basePullAt(array, indexes); - return result2; - } - function reverse(array) { - return array == null ? array : nativeReverse.call(array); - } - function slice(array, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (end && typeof end != "number" && isIterateeCall(array, start, end)) { - start = 0; - end = length; - } else { - start = start == null ? 0 : toInteger(start); - end = end === undefined2 ? length : toInteger(end); - } - return baseSlice(array, start, end); - } - function sortedIndex(array, value) { - return baseSortedIndex(array, value); - } - function sortedIndexBy(array, value, iteratee2) { - return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2)); - } - function sortedIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value); - if (index < length && eq(array[index], value)) { - return index; - } - } - return -1; - } - function sortedLastIndex(array, value) { - return baseSortedIndex(array, value, true); - } - function sortedLastIndexBy(array, value, iteratee2) { - return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true); - } - function sortedLastIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value, true) - 1; - if (eq(array[index], value)) { - return index; - } - } - return -1; - } - function sortedUniq(array) { - return array && array.length ? baseSortedUniq(array) : []; - } - function sortedUniqBy(array, iteratee2) { - return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : []; - } - function tail(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 1, length) : []; - } - function take(array, n2, guard) { - if (!(array && array.length)) { - return []; - } - n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); - return baseSlice(array, 0, n2 < 0 ? 0 : n2); - } - function takeRight(array, n2, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); - n2 = length - n2; - return baseSlice(array, n2 < 0 ? 0 : n2, length); - } - function takeRightWhile(array, predicate) { - return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : []; - } - function takeWhile(array, predicate) { - return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : []; - } - var union = baseRest(function(arrays) { - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); - }); - var unionBy = baseRest(function(arrays) { - var iteratee2 = last(arrays); - if (isArrayLikeObject(iteratee2)) { - iteratee2 = undefined2; - } - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)); - }); - var unionWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == "function" ? comparator : undefined2; - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator); - }); - function uniq(array) { - return array && array.length ? baseUniq(array) : []; - } - function uniqBy(array, iteratee2) { - return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : []; - } - function uniqWith(array, comparator) { - comparator = typeof comparator == "function" ? comparator : undefined2; - return array && array.length ? baseUniq(array, undefined2, comparator) : []; - } - function unzip(array) { - if (!(array && array.length)) { - return []; - } - var length = 0; - array = arrayFilter(array, function(group) { - if (isArrayLikeObject(group)) { - length = nativeMax(group.length, length); - return true; - } - }); - return baseTimes(length, function(index) { - return arrayMap(array, baseProperty(index)); - }); - } - function unzipWith(array, iteratee2) { - if (!(array && array.length)) { - return []; - } - var result2 = unzip(array); - if (iteratee2 == null) { - return result2; - } - return arrayMap(result2, function(group) { - return apply(iteratee2, undefined2, group); - }); - } - var without = baseRest(function(array, values3) { - return isArrayLikeObject(array) ? baseDifference(array, values3) : []; - }); - var xor = baseRest(function(arrays) { - return baseXor(arrayFilter(arrays, isArrayLikeObject)); - }); - var xorBy = baseRest(function(arrays) { - var iteratee2 = last(arrays); - if (isArrayLikeObject(iteratee2)) { - iteratee2 = undefined2; - } - return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2)); - }); - var xorWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == "function" ? comparator : undefined2; - return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator); - }); - var zip = baseRest(unzip); - function zipObject(props, values3) { - return baseZipObject(props || [], values3 || [], assignValue); - } - function zipObjectDeep(props, values3) { - return baseZipObject(props || [], values3 || [], baseSet); - } - var zipWith = baseRest(function(arrays) { - var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined2; - iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined2; - return unzipWith(arrays, iteratee2); - }); - function chain(value) { - var result2 = lodash(value); - result2.__chain__ = true; - return result2; - } - function tap(value, interceptor) { - interceptor(value); - return value; - } - function thru(value, interceptor) { - return interceptor(value); - } - var wrapperAt = flatRest(function(paths) { - var length = paths.length, start = length ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) { - return baseAt(object, paths); - }; - if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start)) { - return this.thru(interceptor); - } - value = value.slice(start, +start + (length ? 1 : 0)); - value.__actions__.push({ - "func": thru, - "args": [interceptor], - "thisArg": undefined2 - }); - return new LodashWrapper(value, this.__chain__).thru(function(array) { - if (length && !array.length) { - array.push(undefined2); - } - return array; - }); - }); - function wrapperChain() { - return chain(this); - } - function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); - } - function wrapperNext() { - if (this.__values__ === undefined2) { - this.__values__ = toArray(this.value()); - } - var done = this.__index__ >= this.__values__.length, value = done ? undefined2 : this.__values__[this.__index__++]; - return { "done": done, "value": value }; - } - function wrapperToIterator() { - return this; - } - function wrapperPlant(value) { - var result2, parent2 = this; - while (parent2 instanceof baseLodash) { - var clone2 = wrapperClone(parent2); - clone2.__index__ = 0; - clone2.__values__ = undefined2; - if (result2) { - previous.__wrapped__ = clone2; - } else { - result2 = clone2; - } - var previous = clone2; - parent2 = parent2.__wrapped__; - } - previous.__wrapped__ = value; - return result2; - } - function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper) { - var wrapped = value; - if (this.__actions__.length) { - wrapped = new LazyWrapper(this); - } - wrapped = wrapped.reverse(); - wrapped.__actions__.push({ - "func": thru, - "args": [reverse], - "thisArg": undefined2 - }); - return new LodashWrapper(wrapped, this.__chain__); - } - return this.thru(reverse); - } - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } - var countBy = createAggregator(function(result2, value, key) { - if (hasOwnProperty.call(result2, key)) { - ++result2[key]; - } else { - baseAssignValue(result2, key, 1); - } - }); - function every(collection, predicate, guard) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined2; - } - return func(collection, getIteratee(predicate, 3)); - } - function filter(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, getIteratee(predicate, 3)); - } - var find = createFind(findIndex); - var findLast = createFind(findLastIndex); - function flatMap(collection, iteratee2) { - return baseFlatten(map(collection, iteratee2), 1); - } - function flatMapDeep(collection, iteratee2) { - return baseFlatten(map(collection, iteratee2), INFINITY); - } - function flatMapDepth(collection, iteratee2, depth) { - depth = depth === undefined2 ? 1 : toInteger(depth); - return baseFlatten(map(collection, iteratee2), depth); - } - function forEach(collection, iteratee2) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, getIteratee(iteratee2, 3)); - } - function forEachRight(collection, iteratee2) { - var func = isArray(collection) ? arrayEachRight : baseEachRight; - return func(collection, getIteratee(iteratee2, 3)); - } - var groupBy = createAggregator(function(result2, value, key) { - if (hasOwnProperty.call(result2, key)) { - result2[key].push(value); - } else { - baseAssignValue(result2, key, [value]); - } - }); - function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values2(collection); - fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0; - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); - } - return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1; - } - var invokeMap = baseRest(function(collection, path, args) { - var index = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : []; - baseEach(collection, function(value) { - result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); - }); - return result2; - }); - var keyBy = createAggregator(function(result2, value, key) { - baseAssignValue(result2, key, value); - }); - function map(collection, iteratee2) { - var func = isArray(collection) ? arrayMap : baseMap; - return func(collection, getIteratee(iteratee2, 3)); - } - function orderBy(collection, iteratees, orders, guard) { - if (collection == null) { - return []; - } - if (!isArray(iteratees)) { - iteratees = iteratees == null ? [] : [iteratees]; - } - orders = guard ? undefined2 : orders; - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseOrderBy(collection, iteratees, orders); - } - var partition = createAggregator(function(result2, value, key) { - result2[key ? 0 : 1].push(value); - }, function() { - return [[], []]; - }); - function reduce(collection, iteratee2, accumulator) { - var func = isArray(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3; - return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach); - } - function reduceRight(collection, iteratee2, accumulator) { - var func = isArray(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3; - return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight); - } - function reject(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, negate(getIteratee(predicate, 3))); - } - function sample(collection) { - var func = isArray(collection) ? arraySample : baseSample; - return func(collection); - } - function sampleSize(collection, n2, guard) { - if (guard ? isIterateeCall(collection, n2, guard) : n2 === undefined2) { - n2 = 1; - } else { - n2 = toInteger(n2); - } - var func = isArray(collection) ? arraySampleSize : baseSampleSize; - return func(collection, n2); - } - function shuffle(collection) { - var func = isArray(collection) ? arrayShuffle : baseShuffle; - return func(collection); - } - function size(collection) { - if (collection == null) { - return 0; - } - if (isArrayLike(collection)) { - return isString(collection) ? stringSize(collection) : collection.length; - } - var tag = getTag(collection); - if (tag == mapTag || tag == setTag) { - return collection.size; - } - return baseKeys(collection).length; - } - function some(collection, predicate, guard) { - var func = isArray(collection) ? arraySome : baseSome; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined2; - } - return func(collection, getIteratee(predicate, 3)); - } - var sortBy = baseRest(function(collection, iteratees) { - if (collection == null) { - return []; - } - var length = iteratees.length; - if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; - } - return baseOrderBy(collection, baseFlatten(iteratees, 1), []); - }); - var now = ctxNow || function() { - return root.Date.now(); - }; - function after(n2, func) { - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - n2 = toInteger(n2); - return function() { - if (--n2 < 1) { - return func.apply(this, arguments); - } - }; - } - function ary(func, n2, guard) { - n2 = guard ? undefined2 : n2; - n2 = func && n2 == null ? func.length : n2; - return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n2); - } - function before(n2, func) { - var result2; - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - n2 = toInteger(n2); - return function() { - if (--n2 > 0) { - result2 = func.apply(this, arguments); - } - if (n2 <= 1) { - func = undefined2; - } - return result2; - }; - } - var bind = baseRest(function(func, thisArg, partials) { - var bitmask = WRAP_BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bind)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(func, bitmask, thisArg, partials, holders); - }); - var bindKey = baseRest(function(object, key, partials) { - var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bindKey)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(key, bitmask, object, partials, holders); - }); - function curry(func, arity, guard) { - arity = guard ? undefined2 : arity; - var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); - result2.placeholder = curry.placeholder; - return result2; - } - function curryRight(func, arity, guard) { - arity = guard ? undefined2 : arity; - var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); - result2.placeholder = curryRight.placeholder; - return result2; - } - function debounce(func, wait, options) { - var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - wait = toNumber(wait) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = "maxWait" in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; - trailing = "trailing" in options ? !!options.trailing : trailing; - } - function invokeFunc(time) { - var args = lastArgs, thisArg = lastThis; - lastArgs = lastThis = undefined2; - lastInvokeTime = time; - result2 = func.apply(thisArg, args); - return result2; - } - function leadingEdge(time) { - lastInvokeTime = time; - timerId = setTimeout2(timerExpired, wait); - return leading ? invokeFunc(time) : result2; - } - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall; - return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; - } - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime; - return lastCallTime === undefined2 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; - } - function timerExpired() { - var time = now(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - timerId = setTimeout2(timerExpired, remainingWait(time)); - } - function trailingEdge(time) { - timerId = undefined2; - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined2; - return result2; - } - function cancel() { - if (timerId !== undefined2) { - clearTimeout2(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined2; - } - function flush() { - return timerId === undefined2 ? result2 : trailingEdge(now()); - } - function debounced() { - var time = now(), isInvoking = shouldInvoke(time); - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - if (isInvoking) { - if (timerId === undefined2) { - return leadingEdge(lastCallTime); - } - if (maxing) { - clearTimeout2(timerId); - timerId = setTimeout2(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined2) { - timerId = setTimeout2(timerExpired, wait); - } - return result2; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; - } - var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); - }); - var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); - }); - function flip(func) { - return createWrap(func, WRAP_FLIP_FLAG); - } - function memoize2(func, resolver) { - if (typeof func != "function" || resolver != null && typeof resolver != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache; - if (cache.has(key)) { - return cache.get(key); - } - var result2 = func.apply(this, args); - memoized.cache = cache.set(key, result2) || cache; - return result2; - }; - memoized.cache = new (memoize2.Cache || MapCache)(); - return memoized; - } - memoize2.Cache = MapCache; - function negate(predicate) { - if (typeof predicate != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - return function() { - var args = arguments; - switch (args.length) { - case 0: - return !predicate.call(this); - case 1: - return !predicate.call(this, args[0]); - case 2: - return !predicate.call(this, args[0], args[1]); - case 3: - return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; - } - function once(func) { - return before(2, func); - } - var overArgs = castRest(function(func, transforms) { - transforms = transforms.length == 1 && isArray(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); - var funcsLength = transforms.length; - return baseRest(function(args) { - var index = -1, length = nativeMin(args.length, funcsLength); - while (++index < length) { - args[index] = transforms[index].call(this, args[index]); - } - return apply(func, this, args); - }); - }); - var partial = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partial)); - return createWrap(func, WRAP_PARTIAL_FLAG, undefined2, partials, holders); - }); - var partialRight = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partialRight)); - return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined2, partials, holders); - }); - var rearg = flatRest(function(func, indexes) { - return createWrap(func, WRAP_REARG_FLAG, undefined2, undefined2, undefined2, indexes); - }); - function rest(func, start) { - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - start = start === undefined2 ? start : toInteger(start); - return baseRest(func, start); - } - function spread(func, start) { - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - start = start == null ? 0 : nativeMax(toInteger(start), 0); - return baseRest(function(args) { - var array = args[start], otherArgs = castSlice(args, 0, start); - if (array) { - arrayPush(otherArgs, array); - } - return apply(func, this, otherArgs); - }); - } - function throttle(func, wait, options) { - var leading = true, trailing = true; - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - if (isObject(options)) { - leading = "leading" in options ? !!options.leading : leading; - trailing = "trailing" in options ? !!options.trailing : trailing; - } - return debounce(func, wait, { - "leading": leading, - "maxWait": wait, - "trailing": trailing - }); - } - function unary(func) { - return ary(func, 1); - } - function wrap(value, wrapper) { - return partial(castFunction(wrapper), value); - } - function castArray() { - if (!arguments.length) { - return []; - } - var value = arguments[0]; - return isArray(value) ? value : [value]; - } - function clone(value) { - return baseClone(value, CLONE_SYMBOLS_FLAG); - } - function cloneWith(value, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); - } - function cloneDeep(value) { - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); - } - function cloneDeepWith(value, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); - } - function conformsTo(object, source) { - return source == null || baseConformsTo(object, source, keys(source)); - } - function eq(value, other) { - return value === other || value !== value && other !== other; - } - var gt = createRelationalOperation(baseGt); - var gte = createRelationalOperation(function(value, other) { - return value >= other; - }); - var isArguments = baseIsArguments(function() { - return arguments; - }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); - }; - var isArray = Array2.isArray; - var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - function isBoolean2(value) { - return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag; - } - var isBuffer = nativeIsBuffer || stubFalse; - var isDate3 = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; - function isElement(value) { - return isObjectLike(value) && value.nodeType === 1 && !isPlainObject5(value); - } - function isEmpty3(value) { - if (value == null) { - return true; - } - if (isArrayLike(value) && (isArray(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) { - return !value.length; - } - var tag = getTag(value); - if (tag == mapTag || tag == setTag) { - return !value.size; - } - if (isPrototype(value)) { - return !baseKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty.call(value, key)) { - return false; - } - } - return true; - } - function isEqual(value, other) { - return baseIsEqual(value, other); - } - function isEqualWith(value, other, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - var result2 = customizer ? customizer(value, other) : undefined2; - return result2 === undefined2 ? baseIsEqual(value, other, undefined2, customizer) : !!result2; - } - function isError2(value) { - if (!isObjectLike(value)) { - return false; - } - var tag = baseGetTag(value); - return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject5(value); - } - function isFinite2(value) { - return typeof value == "number" && nativeIsFinite(value); - } - function isFunction(value) { - if (!isObject(value)) { - return false; - } - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; - } - function isInteger(value) { - return typeof value == "number" && value == toInteger(value); - } - function isLength(value) { - return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - function isObject(value) { - var type = typeof value; - return value != null && (type == "object" || type == "function"); - } - function isObjectLike(value) { - return value != null && typeof value == "object"; - } - var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - function isMatch2(object, source) { - return object === source || baseIsMatch(object, source, getMatchData(source)); - } - function isMatchWith(object, source, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - return baseIsMatch(object, source, getMatchData(source), customizer); - } - function isNaN2(value) { - return isNumber2(value) && value != +value; - } - function isNative(value) { - if (isMaskable(value)) { - throw new Error2(CORE_ERROR_TEXT); - } - return baseIsNative(value); - } - function isNull(value) { - return value === null; - } - function isNil(value) { - return value == null; - } - function isNumber2(value) { - return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag; - } - function isPlainObject5(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor; - return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; - } - var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; - function isSafeInteger(value) { - return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; - } - var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - function isString(value) { - return typeof value == "string" || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag; - } - function isSymbol(value) { - return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag; - } - var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - function isUndefined(value) { - return value === undefined2; - } - function isWeakMap(value) { - return isObjectLike(value) && getTag(value) == weakMapTag; - } - function isWeakSet(value) { - return isObjectLike(value) && baseGetTag(value) == weakSetTag; - } - var lt = createRelationalOperation(baseLt); - var lte = createRelationalOperation(function(value, other) { - return value <= other; - }); - function toArray(value) { - if (!value) { - return []; - } - if (isArrayLike(value)) { - return isString(value) ? stringToArray(value) : copyArray(value); - } - if (symIterator && value[symIterator]) { - return iteratorToArray(value[symIterator]()); - } - var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values2; - return func(value); - } - function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = value < 0 ? -1 : 1; - return sign * MAX_INTEGER; - } - return value === value ? value : 0; - } - function toInteger(value) { - var result2 = toFinite(value), remainder = result2 % 1; - return result2 === result2 ? remainder ? result2 - remainder : result2 : 0; - } - function toLength(value) { - return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; - } - function toNumber(value) { - if (typeof value == "number") { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == "function" ? value.valueOf() : value; - value = isObject(other) ? other + "" : other; - } - if (typeof value != "string") { - return value === 0 ? value : +value; - } - value = baseTrim(value); - var isBinary = reIsBinary.test(value); - return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; - } - function toPlainObject(value) { - return copyObject(value, keysIn(value)); - } - function toSafeInteger(value) { - return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0; - } - function toString(value) { - return value == null ? "" : baseToString(value); - } - var assign = createAssigner(function(object, source) { - if (isPrototype(source) || isArrayLike(source)) { - copyObject(source, keys(source), object); - return; - } - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - assignValue(object, key, source[key]); - } - } - }); - var assignIn = createAssigner(function(object, source) { - copyObject(source, keysIn(source), object); - }); - var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keysIn(source), object, customizer); - }); - var assignWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keys(source), object, customizer); - }); - var at = flatRest(baseAt); - function create(prototype, properties2) { - var result2 = baseCreate(prototype); - return properties2 == null ? result2 : baseAssign(result2, properties2); - } - var defaults = baseRest(function(object, sources) { - object = Object2(object); - var index = -1; - var length = sources.length; - var guard = length > 2 ? sources[2] : undefined2; - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - while (++index < length) { - var source = sources[index]; - var props = keysIn(source); - var propsIndex = -1; - var propsLength = props.length; - while (++propsIndex < propsLength) { - var key = props[propsIndex]; - var value = object[key]; - if (value === undefined2 || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) { - object[key] = source[key]; - } - } - } - return object; - }); - var defaultsDeep = baseRest(function(args) { - args.push(undefined2, customDefaultsMerge); - return apply(mergeWith, undefined2, args); - }); - function findKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); - } - function findLastKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); - } - function forIn(object, iteratee2) { - return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn); - } - function forInRight(object, iteratee2) { - return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn); - } - function forOwn(object, iteratee2) { - return object && baseForOwn(object, getIteratee(iteratee2, 3)); - } - function forOwnRight(object, iteratee2) { - return object && baseForOwnRight(object, getIteratee(iteratee2, 3)); - } - function functions(object) { - return object == null ? [] : baseFunctions(object, keys(object)); - } - function functionsIn(object) { - return object == null ? [] : baseFunctions(object, keysIn(object)); - } - function get(object, path, defaultValue) { - var result2 = object == null ? undefined2 : baseGet(object, path); - return result2 === undefined2 ? defaultValue : result2; - } - function has(object, path) { - return object != null && hasPath(object, path, baseHas); - } - function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); - } - var invert = createInverter(function(result2, value, key) { - if (value != null && typeof value.toString != "function") { - value = nativeObjectToString.call(value); - } - result2[value] = key; - }, constant(identity)); - var invertBy = createInverter(function(result2, value, key) { - if (value != null && typeof value.toString != "function") { - value = nativeObjectToString.call(value); - } - if (hasOwnProperty.call(result2, value)) { - result2[value].push(key); - } else { - result2[value] = [key]; - } - }, getIteratee); - var invoke = baseRest(baseInvoke); - function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); - } - function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); - } - function mapKeys(object, iteratee2) { - var result2 = {}; - iteratee2 = getIteratee(iteratee2, 3); - baseForOwn(object, function(value, key, object2) { - baseAssignValue(result2, iteratee2(value, key, object2), value); - }); - return result2; - } - function mapValues(object, iteratee2) { - var result2 = {}; - iteratee2 = getIteratee(iteratee2, 3); - baseForOwn(object, function(value, key, object2) { - baseAssignValue(result2, key, iteratee2(value, key, object2)); - }); - return result2; - } - var merge2 = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); - }); - var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { - baseMerge(object, source, srcIndex, customizer); - }); - var omit = flatRest(function(object, paths) { - var result2 = {}; - if (object == null) { - return result2; - } - var isDeep = false; - paths = arrayMap(paths, function(path) { - path = castPath(path, object); - isDeep || (isDeep = path.length > 1); - return path; - }); - copyObject(object, getAllKeysIn(object), result2); - if (isDeep) { - result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); - } - var length = paths.length; - while (length--) { - baseUnset(result2, paths[length]); - } - return result2; - }); - function omitBy(object, predicate) { - return pickBy(object, negate(getIteratee(predicate))); - } - var pick = flatRest(function(object, paths) { - return object == null ? {} : basePick(object, paths); - }); - function pickBy(object, predicate) { - if (object == null) { - return {}; - } - var props = arrayMap(getAllKeysIn(object), function(prop) { - return [prop]; - }); - predicate = getIteratee(predicate); - return basePickBy(object, props, function(value, path) { - return predicate(value, path[0]); - }); - } - function result(object, path, defaultValue) { - path = castPath(path, object); - var index = -1, length = path.length; - if (!length) { - length = 1; - object = undefined2; - } - while (++index < length) { - var value = object == null ? undefined2 : object[toKey(path[index])]; - if (value === undefined2) { - index = length; - value = defaultValue; - } - object = isFunction(value) ? value.call(object) : value; - } - return object; - } - function set(object, path, value) { - return object == null ? object : baseSet(object, path, value); - } - function setWith(object, path, value, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - return object == null ? object : baseSet(object, path, value, customizer); - } - var toPairs = createToPairs(keys); - var toPairsIn = createToPairs(keysIn); - function transform2(object, iteratee2, accumulator) { - var isArr = isArray(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object); - iteratee2 = getIteratee(iteratee2, 4); - if (accumulator == null) { - var Ctor = object && object.constructor; - if (isArrLike) { - accumulator = isArr ? new Ctor() : []; - } else if (isObject(object)) { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } else { - accumulator = {}; - } - } - (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object2) { - return iteratee2(accumulator, value, index, object2); - }); - return accumulator; - } - function unset(object, path) { - return object == null ? true : baseUnset(object, path); - } - function update(object, path, updater) { - return object == null ? object : baseUpdate(object, path, castFunction(updater)); - } - function updateWith(object, path, updater, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); - } - function values2(object) { - return object == null ? [] : baseValues(object, keys(object)); - } - function valuesIn(object) { - return object == null ? [] : baseValues(object, keysIn(object)); - } - function clamp2(number, lower, upper) { - if (upper === undefined2) { - upper = lower; - lower = undefined2; - } - if (upper !== undefined2) { - upper = toNumber(upper); - upper = upper === upper ? upper : 0; - } - if (lower !== undefined2) { - lower = toNumber(lower); - lower = lower === lower ? lower : 0; - } - return baseClamp(toNumber(number), lower, upper); - } - function inRange(number, start, end) { - start = toFinite(start); - if (end === undefined2) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - number = toNumber(number); - return baseInRange(number, start, end); - } - function random(lower, upper, floating) { - if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) { - upper = floating = undefined2; - } - if (floating === undefined2) { - if (typeof upper == "boolean") { - floating = upper; - upper = undefined2; - } else if (typeof lower == "boolean") { - floating = lower; - lower = undefined2; - } - } - if (lower === undefined2 && upper === undefined2) { - lower = 0; - upper = 1; - } else { - lower = toFinite(lower); - if (upper === undefined2) { - upper = lower; - lower = 0; - } else { - upper = toFinite(upper); - } - } - if (lower > upper) { - var temp = lower; - lower = upper; - upper = temp; - } - if (floating || lower % 1 || upper % 1) { - var rand = nativeRandom(); - return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper); - } - return baseRandom(lower, upper); - } - var camelCase = createCompounder(function(result2, word, index) { - word = word.toLowerCase(); - return result2 + (index ? capitalize2(word) : word); - }); - function capitalize2(string) { - return upperFirst(toString(string).toLowerCase()); - } - function deburr(string) { - string = toString(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ""); - } - function endsWith(string, target, position2) { - string = toString(string); - target = baseToString(target); - var length = string.length; - position2 = position2 === undefined2 ? length : baseClamp(toInteger(position2), 0, length); - var end = position2; - position2 -= target.length; - return position2 >= 0 && string.slice(position2, end) == target; - } - function escape(string) { - string = toString(string); - return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string; - } - function escapeRegExp(string) { - string = toString(string); - return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string; - } - var kebabCase = createCompounder(function(result2, word, index) { - return result2 + (index ? "-" : "") + word.toLowerCase(); - }); - var lowerCase = createCompounder(function(result2, word, index) { - return result2 + (index ? " " : "") + word.toLowerCase(); - }); - var lowerFirst = createCaseFirst("toLowerCase"); - function pad(string, length, chars) { - string = toString(string); - length = toInteger(length); - var strLength = length ? stringSize(string) : 0; - if (!length || strLength >= length) { - return string; - } - var mid = (length - strLength) / 2; - return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars); - } - function padEnd(string, length, chars) { - string = toString(string); - length = toInteger(length); - var strLength = length ? stringSize(string) : 0; - return length && strLength < length ? string + createPadding(length - strLength, chars) : string; - } - function padStart(string, length, chars) { - string = toString(string); - length = toInteger(length); - var strLength = length ? stringSize(string) : 0; - return length && strLength < length ? createPadding(length - strLength, chars) + string : string; - } - function parseInt2(string, radix, guard) { - if (guard || radix == null) { - radix = 0; - } else if (radix) { - radix = +radix; - } - return nativeParseInt(toString(string).replace(reTrimStart, ""), radix || 0); - } - function repeat(string, n2, guard) { - if (guard ? isIterateeCall(string, n2, guard) : n2 === undefined2) { - n2 = 1; - } else { - n2 = toInteger(n2); - } - return baseRepeat(toString(string), n2); - } - function replace() { - var args = arguments, string = toString(args[0]); - return args.length < 3 ? string : string.replace(args[1], args[2]); - } - var snakeCase = createCompounder(function(result2, word, index) { - return result2 + (index ? "_" : "") + word.toLowerCase(); - }); - function split(string, separator, limit) { - if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) { - separator = limit = undefined2; - } - limit = limit === undefined2 ? MAX_ARRAY_LENGTH : limit >>> 0; - if (!limit) { - return []; - } - string = toString(string); - if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) { - separator = baseToString(separator); - if (!separator && hasUnicode(string)) { - return castSlice(stringToArray(string), 0, limit); - } - } - return string.split(separator, limit); - } - var startCase = createCompounder(function(result2, word, index) { - return result2 + (index ? " " : "") + upperFirst(word); - }); - function startsWith(string, target, position2) { - string = toString(string); - position2 = position2 == null ? 0 : baseClamp(toInteger(position2), 0, string.length); - target = baseToString(target); - return string.slice(position2, position2 + target.length) == target; - } - function template(string, options, guard) { - var settings = lodash.templateSettings; - if (guard && isIterateeCall(string, options, guard)) { - options = undefined2; - } - string = toString(string); - options = assignInWith({}, options, settings, customDefaultsAssignIn); - var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys); - var isEscaping, isEvaluating, index = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '"; - var reDelimiters = RegExp2( - (options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", - "g" - ); - var sourceURL = "//# sourceURL=" + (hasOwnProperty.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n"; - string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { - interpolateValue || (interpolateValue = esTemplateValue); - source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar); - if (escapeValue) { - isEscaping = true; - source += "' +\n__e(" + escapeValue + ") +\n'"; - } - if (evaluateValue) { - isEvaluating = true; - source += "';\n" + evaluateValue + ";\n__p += '"; - } - if (interpolateValue) { - source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; - } - index = offset + match.length; - return match; - }); - source += "';\n"; - var variable = hasOwnProperty.call(options, "variable") && options.variable; - if (!variable) { - source = "with (obj) {\n" + source + "\n}\n"; - } else if (reForbiddenIdentifierChars.test(variable)) { - throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT); - } - source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;"); - source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}"; - var result2 = attempt(function() { - return Function2(importsKeys, sourceURL + "return " + source).apply(undefined2, importsValues); - }); - result2.source = source; - if (isError2(result2)) { - throw result2; - } - return result2; - } - function toLower(value) { - return toString(value).toLowerCase(); - } - function toUpper(value) { - return toString(value).toUpperCase(); - } - function trim(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined2)) { - return baseTrim(string); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start = charsStartIndex(strSymbols, chrSymbols), end = charsEndIndex(strSymbols, chrSymbols) + 1; - return castSlice(strSymbols, start, end).join(""); - } - function trimEnd(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined2)) { - return string.slice(0, trimmedEndIndex(string) + 1); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), end = charsEndIndex(strSymbols, stringToArray(chars)) + 1; - return castSlice(strSymbols, 0, end).join(""); - } - function trimStart(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined2)) { - return string.replace(reTrimStart, ""); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), start = charsStartIndex(strSymbols, stringToArray(chars)); - return castSlice(strSymbols, start).join(""); - } - function truncate(string, options) { - var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION; - if (isObject(options)) { - var separator = "separator" in options ? options.separator : separator; - length = "length" in options ? toInteger(options.length) : length; - omission = "omission" in options ? baseToString(options.omission) : omission; - } - string = toString(string); - var strLength = string.length; - if (hasUnicode(string)) { - var strSymbols = stringToArray(string); - strLength = strSymbols.length; - } - if (length >= strLength) { - return string; - } - var end = length - stringSize(omission); - if (end < 1) { - return omission; - } - var result2 = strSymbols ? castSlice(strSymbols, 0, end).join("") : string.slice(0, end); - if (separator === undefined2) { - return result2 + omission; - } - if (strSymbols) { - end += result2.length - end; - } - if (isRegExp(separator)) { - if (string.slice(end).search(separator)) { - var match, substring = result2; - if (!separator.global) { - separator = RegExp2(separator.source, toString(reFlags.exec(separator)) + "g"); - } - separator.lastIndex = 0; - while (match = separator.exec(substring)) { - var newEnd = match.index; - } - result2 = result2.slice(0, newEnd === undefined2 ? end : newEnd); - } - } else if (string.indexOf(baseToString(separator), end) != end) { - var index = result2.lastIndexOf(separator); - if (index > -1) { - result2 = result2.slice(0, index); - } - } - return result2 + omission; - } - function unescape(string) { - string = toString(string); - return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string; - } - var upperCase = createCompounder(function(result2, word, index) { - return result2 + (index ? " " : "") + word.toUpperCase(); - }); - var upperFirst = createCaseFirst("toUpperCase"); - function words(string, pattern, guard) { - string = toString(string); - pattern = guard ? undefined2 : pattern; - if (pattern === undefined2) { - return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); - } - return string.match(pattern) || []; - } - var attempt = baseRest(function(func, args) { - try { - return apply(func, undefined2, args); - } catch (e) { - return isError2(e) ? e : new Error2(e); - } - }); - var bindAll = flatRest(function(object, methodNames) { - arrayEach(methodNames, function(key) { - key = toKey(key); - baseAssignValue(object, key, bind(object[key], object)); - }); - return object; - }); - function cond(pairs) { - var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee(); - pairs = !length ? [] : arrayMap(pairs, function(pair) { - if (typeof pair[1] != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - return [toIteratee(pair[0]), pair[1]]; - }); - return baseRest(function(args) { - var index = -1; - while (++index < length) { - var pair = pairs[index]; - if (apply(pair[0], this, args)) { - return apply(pair[1], this, args); - } - } - }); - } - function conforms(source) { - return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); - } - function constant(value) { - return function() { - return value; - }; - } - function defaultTo(value, defaultValue) { - return value == null || value !== value ? defaultValue : value; - } - var flow = createFlow(); - var flowRight = createFlow(true); - function identity(value) { - return value; - } - function iteratee(func) { - return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG)); - } - function matches(source) { - return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); - } - function matchesProperty(path, srcValue) { - return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); - } - var method = baseRest(function(path, args) { - return function(object) { - return baseInvoke(object, path, args); - }; - }); - var methodOf = baseRest(function(object, args) { - return function(path) { - return baseInvoke(object, path, args); - }; - }); - function mixin(object, source, options) { - var props = keys(source), methodNames = baseFunctions(source, props); - if (options == null && !(isObject(source) && (methodNames.length || !props.length))) { - options = source; - source = object; - object = this; - methodNames = baseFunctions(source, keys(source)); - } - var chain2 = !(isObject(options) && "chain" in options) || !!options.chain, isFunc = isFunction(object); - arrayEach(methodNames, function(methodName) { - var func = source[methodName]; - object[methodName] = func; - if (isFunc) { - object.prototype[methodName] = function() { - var chainAll = this.__chain__; - if (chain2 || chainAll) { - var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__); - actions.push({ "func": func, "args": arguments, "thisArg": object }); - result2.__chain__ = chainAll; - return result2; - } - return func.apply(object, arrayPush([this.value()], arguments)); - }; - } - }); - return object; - } - function noConflict() { - if (root._ === this) { - root._ = oldDash; - } - return this; - } - function noop() { - } - function nthArg(n2) { - n2 = toInteger(n2); - return baseRest(function(args) { - return baseNth(args, n2); - }); - } - var over = createOver(arrayMap); - var overEvery = createOver(arrayEvery); - var overSome = createOver(arraySome); - function property(path) { - return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); - } - function propertyOf(object) { - return function(path) { - return object == null ? undefined2 : baseGet(object, path); - }; - } - var range = createRange(); - var rangeRight = createRange(true); - function stubArray() { - return []; - } - function stubFalse() { - return false; - } - function stubObject() { - return {}; - } - function stubString() { - return ""; - } - function stubTrue() { - return true; - } - function times(n2, iteratee2) { - n2 = toInteger(n2); - if (n2 < 1 || n2 > MAX_SAFE_INTEGER) { - return []; - } - var index = MAX_ARRAY_LENGTH, length = nativeMin(n2, MAX_ARRAY_LENGTH); - iteratee2 = getIteratee(iteratee2); - n2 -= MAX_ARRAY_LENGTH; - var result2 = baseTimes(length, iteratee2); - while (++index < n2) { - iteratee2(index); - } - return result2; - } - function toPath(value) { - if (isArray(value)) { - return arrayMap(value, toKey); - } - return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value))); - } - function uniqueId(prefix2) { - var id = ++idCounter; - return toString(prefix2) + id; - } - var add = createMathOperation(function(augend, addend) { - return augend + addend; - }, 0); - var ceil = createRound("ceil"); - var divide = createMathOperation(function(dividend, divisor) { - return dividend / divisor; - }, 1); - var floor = createRound("floor"); - function max(array) { - return array && array.length ? baseExtremum(array, identity, baseGt) : undefined2; - } - function maxBy(array, iteratee2) { - return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2; - } - function mean(array) { - return baseMean(array, identity); - } - function meanBy(array, iteratee2) { - return baseMean(array, getIteratee(iteratee2, 2)); - } - function min(array) { - return array && array.length ? baseExtremum(array, identity, baseLt) : undefined2; - } - function minBy(array, iteratee2) { - return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined2; - } - var multiply = createMathOperation(function(multiplier, multiplicand) { - return multiplier * multiplicand; - }, 1); - var round2 = createRound("round"); - var subtract = createMathOperation(function(minuend, subtrahend) { - return minuend - subtrahend; - }, 0); - function sum(array) { - return array && array.length ? baseSum(array, identity) : 0; - } - function sumBy(array, iteratee2) { - return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0; - } - lodash.after = after; - lodash.ary = ary; - lodash.assign = assign; - lodash.assignIn = assignIn; - lodash.assignInWith = assignInWith; - lodash.assignWith = assignWith; - lodash.at = at; - lodash.before = before; - lodash.bind = bind; - lodash.bindAll = bindAll; - lodash.bindKey = bindKey; - lodash.castArray = castArray; - lodash.chain = chain; - lodash.chunk = chunk; - lodash.compact = compact; - lodash.concat = concat; - lodash.cond = cond; - lodash.conforms = conforms; - lodash.constant = constant; - lodash.countBy = countBy; - lodash.create = create; - lodash.curry = curry; - lodash.curryRight = curryRight; - lodash.debounce = debounce; - lodash.defaults = defaults; - lodash.defaultsDeep = defaultsDeep; - lodash.defer = defer; - lodash.delay = delay; - lodash.difference = difference; - lodash.differenceBy = differenceBy; - lodash.differenceWith = differenceWith; - lodash.drop = drop; - lodash.dropRight = dropRight; - lodash.dropRightWhile = dropRightWhile; - lodash.dropWhile = dropWhile; - lodash.fill = fill; - lodash.filter = filter; - lodash.flatMap = flatMap; - lodash.flatMapDeep = flatMapDeep; - lodash.flatMapDepth = flatMapDepth; - lodash.flatten = flatten; - lodash.flattenDeep = flattenDeep; - lodash.flattenDepth = flattenDepth; - lodash.flip = flip; - lodash.flow = flow; - lodash.flowRight = flowRight; - lodash.fromPairs = fromPairs; - lodash.functions = functions; - lodash.functionsIn = functionsIn; - lodash.groupBy = groupBy; - lodash.initial = initial; - lodash.intersection = intersection; - lodash.intersectionBy = intersectionBy; - lodash.intersectionWith = intersectionWith; - lodash.invert = invert; - lodash.invertBy = invertBy; - lodash.invokeMap = invokeMap; - lodash.iteratee = iteratee; - lodash.keyBy = keyBy; - lodash.keys = keys; - lodash.keysIn = keysIn; - lodash.map = map; - lodash.mapKeys = mapKeys; - lodash.mapValues = mapValues; - lodash.matches = matches; - lodash.matchesProperty = matchesProperty; - lodash.memoize = memoize2; - lodash.merge = merge2; - lodash.mergeWith = mergeWith; - lodash.method = method; - lodash.methodOf = methodOf; - lodash.mixin = mixin; - lodash.negate = negate; - lodash.nthArg = nthArg; - lodash.omit = omit; - lodash.omitBy = omitBy; - lodash.once = once; - lodash.orderBy = orderBy; - lodash.over = over; - lodash.overArgs = overArgs; - lodash.overEvery = overEvery; - lodash.overSome = overSome; - lodash.partial = partial; - lodash.partialRight = partialRight; - lodash.partition = partition; - lodash.pick = pick; - lodash.pickBy = pickBy; - lodash.property = property; - lodash.propertyOf = propertyOf; - lodash.pull = pull; - lodash.pullAll = pullAll; - lodash.pullAllBy = pullAllBy; - lodash.pullAllWith = pullAllWith; - lodash.pullAt = pullAt; - lodash.range = range; - lodash.rangeRight = rangeRight; - lodash.rearg = rearg; - lodash.reject = reject; - lodash.remove = remove; - lodash.rest = rest; - lodash.reverse = reverse; - lodash.sampleSize = sampleSize; - lodash.set = set; - lodash.setWith = setWith; - lodash.shuffle = shuffle; - lodash.slice = slice; - lodash.sortBy = sortBy; - lodash.sortedUniq = sortedUniq; - lodash.sortedUniqBy = sortedUniqBy; - lodash.split = split; - lodash.spread = spread; - lodash.tail = tail; - lodash.take = take; - lodash.takeRight = takeRight; - lodash.takeRightWhile = takeRightWhile; - lodash.takeWhile = takeWhile; - lodash.tap = tap; - lodash.throttle = throttle; - lodash.thru = thru; - lodash.toArray = toArray; - lodash.toPairs = toPairs; - lodash.toPairsIn = toPairsIn; - lodash.toPath = toPath; - lodash.toPlainObject = toPlainObject; - lodash.transform = transform2; - lodash.unary = unary; - lodash.union = union; - lodash.unionBy = unionBy; - lodash.unionWith = unionWith; - lodash.uniq = uniq; - lodash.uniqBy = uniqBy; - lodash.uniqWith = uniqWith; - lodash.unset = unset; - lodash.unzip = unzip; - lodash.unzipWith = unzipWith; - lodash.update = update; - lodash.updateWith = updateWith; - lodash.values = values2; - lodash.valuesIn = valuesIn; - lodash.without = without; - lodash.words = words; - lodash.wrap = wrap; - lodash.xor = xor; - lodash.xorBy = xorBy; - lodash.xorWith = xorWith; - lodash.zip = zip; - lodash.zipObject = zipObject; - lodash.zipObjectDeep = zipObjectDeep; - lodash.zipWith = zipWith; - lodash.entries = toPairs; - lodash.entriesIn = toPairsIn; - lodash.extend = assignIn; - lodash.extendWith = assignInWith; - mixin(lodash, lodash); - lodash.add = add; - lodash.attempt = attempt; - lodash.camelCase = camelCase; - lodash.capitalize = capitalize2; - lodash.ceil = ceil; - lodash.clamp = clamp2; - lodash.clone = clone; - lodash.cloneDeep = cloneDeep; - lodash.cloneDeepWith = cloneDeepWith; - lodash.cloneWith = cloneWith; - lodash.conformsTo = conformsTo; - lodash.deburr = deburr; - lodash.defaultTo = defaultTo; - lodash.divide = divide; - lodash.endsWith = endsWith; - lodash.eq = eq; - lodash.escape = escape; - lodash.escapeRegExp = escapeRegExp; - lodash.every = every; - lodash.find = find; - lodash.findIndex = findIndex; - lodash.findKey = findKey; - lodash.findLast = findLast; - lodash.findLastIndex = findLastIndex; - lodash.findLastKey = findLastKey; - lodash.floor = floor; - lodash.forEach = forEach; - lodash.forEachRight = forEachRight; - lodash.forIn = forIn; - lodash.forInRight = forInRight; - lodash.forOwn = forOwn; - lodash.forOwnRight = forOwnRight; - lodash.get = get; - lodash.gt = gt; - lodash.gte = gte; - lodash.has = has; - lodash.hasIn = hasIn; - lodash.head = head; - lodash.identity = identity; - lodash.includes = includes; - lodash.indexOf = indexOf; - lodash.inRange = inRange; - lodash.invoke = invoke; - lodash.isArguments = isArguments; - lodash.isArray = isArray; - lodash.isArrayBuffer = isArrayBuffer; - lodash.isArrayLike = isArrayLike; - lodash.isArrayLikeObject = isArrayLikeObject; - lodash.isBoolean = isBoolean2; - lodash.isBuffer = isBuffer; - lodash.isDate = isDate3; - lodash.isElement = isElement; - lodash.isEmpty = isEmpty3; - lodash.isEqual = isEqual; - lodash.isEqualWith = isEqualWith; - lodash.isError = isError2; - lodash.isFinite = isFinite2; - lodash.isFunction = isFunction; - lodash.isInteger = isInteger; - lodash.isLength = isLength; - lodash.isMap = isMap; - lodash.isMatch = isMatch2; - lodash.isMatchWith = isMatchWith; - lodash.isNaN = isNaN2; - lodash.isNative = isNative; - lodash.isNil = isNil; - lodash.isNull = isNull; - lodash.isNumber = isNumber2; - lodash.isObject = isObject; - lodash.isObjectLike = isObjectLike; - lodash.isPlainObject = isPlainObject5; - lodash.isRegExp = isRegExp; - lodash.isSafeInteger = isSafeInteger; - lodash.isSet = isSet; - lodash.isString = isString; - lodash.isSymbol = isSymbol; - lodash.isTypedArray = isTypedArray; - lodash.isUndefined = isUndefined; - lodash.isWeakMap = isWeakMap; - lodash.isWeakSet = isWeakSet; - lodash.join = join; - lodash.kebabCase = kebabCase; - lodash.last = last; - lodash.lastIndexOf = lastIndexOf; - lodash.lowerCase = lowerCase; - lodash.lowerFirst = lowerFirst; - lodash.lt = lt; - lodash.lte = lte; - lodash.max = max; - lodash.maxBy = maxBy; - lodash.mean = mean; - lodash.meanBy = meanBy; - lodash.min = min; - lodash.minBy = minBy; - lodash.stubArray = stubArray; - lodash.stubFalse = stubFalse; - lodash.stubObject = stubObject; - lodash.stubString = stubString; - lodash.stubTrue = stubTrue; - lodash.multiply = multiply; - lodash.nth = nth; - lodash.noConflict = noConflict; - lodash.noop = noop; - lodash.now = now; - lodash.pad = pad; - lodash.padEnd = padEnd; - lodash.padStart = padStart; - lodash.parseInt = parseInt2; - lodash.random = random; - lodash.reduce = reduce; - lodash.reduceRight = reduceRight; - lodash.repeat = repeat; - lodash.replace = replace; - lodash.result = result; - lodash.round = round2; - lodash.runInContext = runInContext2; - lodash.sample = sample; - lodash.size = size; - lodash.snakeCase = snakeCase; - lodash.some = some; - lodash.sortedIndex = sortedIndex; - lodash.sortedIndexBy = sortedIndexBy; - lodash.sortedIndexOf = sortedIndexOf; - lodash.sortedLastIndex = sortedLastIndex; - lodash.sortedLastIndexBy = sortedLastIndexBy; - lodash.sortedLastIndexOf = sortedLastIndexOf; - lodash.startCase = startCase; - lodash.startsWith = startsWith; - lodash.subtract = subtract; - lodash.sum = sum; - lodash.sumBy = sumBy; - lodash.template = template; - lodash.times = times; - lodash.toFinite = toFinite; - lodash.toInteger = toInteger; - lodash.toLength = toLength; - lodash.toLower = toLower; - lodash.toNumber = toNumber; - lodash.toSafeInteger = toSafeInteger; - lodash.toString = toString; - lodash.toUpper = toUpper; - lodash.trim = trim; - lodash.trimEnd = trimEnd; - lodash.trimStart = trimStart; - lodash.truncate = truncate; - lodash.unescape = unescape; - lodash.uniqueId = uniqueId; - lodash.upperCase = upperCase; - lodash.upperFirst = upperFirst; - lodash.each = forEach; - lodash.eachRight = forEachRight; - lodash.first = head; - mixin(lodash, function() { - var source = {}; - baseForOwn(lodash, function(func, methodName) { - if (!hasOwnProperty.call(lodash.prototype, methodName)) { - source[methodName] = func; - } - }); - return source; - }(), { "chain": false }); - lodash.VERSION = VERSION; - arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) { - lodash[methodName].placeholder = lodash; - }); - arrayEach(["drop", "take"], function(methodName, index) { - LazyWrapper.prototype[methodName] = function(n2) { - n2 = n2 === undefined2 ? 1 : nativeMax(toInteger(n2), 0); - var result2 = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone(); - if (result2.__filtered__) { - result2.__takeCount__ = nativeMin(n2, result2.__takeCount__); - } else { - result2.__views__.push({ - "size": nativeMin(n2, MAX_ARRAY_LENGTH), - "type": methodName + (result2.__dir__ < 0 ? "Right" : "") - }); - } - return result2; - }; - LazyWrapper.prototype[methodName + "Right"] = function(n2) { - return this.reverse()[methodName](n2).reverse(); - }; - }); - arrayEach(["filter", "map", "takeWhile"], function(methodName, index) { - var type = index + 1, isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; - LazyWrapper.prototype[methodName] = function(iteratee2) { - var result2 = this.clone(); - result2.__iteratees__.push({ - "iteratee": getIteratee(iteratee2, 3), - "type": type - }); - result2.__filtered__ = result2.__filtered__ || isFilter; - return result2; - }; - }); - arrayEach(["head", "last"], function(methodName, index) { - var takeName = "take" + (index ? "Right" : ""); - LazyWrapper.prototype[methodName] = function() { - return this[takeName](1).value()[0]; - }; - }); - arrayEach(["initial", "tail"], function(methodName, index) { - var dropName = "drop" + (index ? "" : "Right"); - LazyWrapper.prototype[methodName] = function() { - return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); - }; - }); - LazyWrapper.prototype.compact = function() { - return this.filter(identity); - }; - LazyWrapper.prototype.find = function(predicate) { - return this.filter(predicate).head(); - }; - LazyWrapper.prototype.findLast = function(predicate) { - return this.reverse().find(predicate); - }; - LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { - if (typeof path == "function") { - return new LazyWrapper(this); - } - return this.map(function(value) { - return baseInvoke(value, path, args); - }); - }); - LazyWrapper.prototype.reject = function(predicate) { - return this.filter(negate(getIteratee(predicate))); - }; - LazyWrapper.prototype.slice = function(start, end) { - start = toInteger(start); - var result2 = this; - if (result2.__filtered__ && (start > 0 || end < 0)) { - return new LazyWrapper(result2); - } - if (start < 0) { - result2 = result2.takeRight(-start); - } else if (start) { - result2 = result2.drop(start); - } - if (end !== undefined2) { - end = toInteger(end); - result2 = end < 0 ? result2.dropRight(-end) : result2.take(end - start); - } - return result2; - }; - LazyWrapper.prototype.takeRightWhile = function(predicate) { - return this.reverse().takeWhile(predicate).reverse(); - }; - LazyWrapper.prototype.toArray = function() { - return this.take(MAX_ARRAY_LENGTH); - }; - baseForOwn(LazyWrapper.prototype, function(func, methodName) { - var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName); - if (!lodashFunc) { - return; - } - lodash.prototype[methodName] = function() { - var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray(value); - var interceptor = function(value2) { - var result3 = lodashFunc.apply(lodash, arrayPush([value2], args)); - return isTaker && chainAll ? result3[0] : result3; - }; - if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) { - isLazy = useLazy = false; - } - var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid; - if (!retUnwrapped && useLazy) { - value = onlyLazy ? value : new LazyWrapper(this); - var result2 = func.apply(value, args); - result2.__actions__.push({ "func": thru, "args": [interceptor], "thisArg": undefined2 }); - return new LodashWrapper(result2, chainAll); - } - if (isUnwrapped && onlyLazy) { - return func.apply(this, args); - } - result2 = this.thru(interceptor); - return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2; - }; - }); - arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) { - var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName); - lodash.prototype[methodName] = function() { - var args = arguments; - if (retUnwrapped && !this.__chain__) { - var value = this.value(); - return func.apply(isArray(value) ? value : [], args); - } - return this[chainName](function(value2) { - return func.apply(isArray(value2) ? value2 : [], args); - }); - }; - }); - baseForOwn(LazyWrapper.prototype, function(func, methodName) { - var lodashFunc = lodash[methodName]; - if (lodashFunc) { - var key = lodashFunc.name + ""; - if (!hasOwnProperty.call(realNames, key)) { - realNames[key] = []; - } - realNames[key].push({ "name": methodName, "func": lodashFunc }); - } - }); - realNames[createHybrid(undefined2, WRAP_BIND_KEY_FLAG).name] = [{ - "name": "wrapper", - "func": undefined2 - }]; - LazyWrapper.prototype.clone = lazyClone; - LazyWrapper.prototype.reverse = lazyReverse; - LazyWrapper.prototype.value = lazyValue; - lodash.prototype.at = wrapperAt; - lodash.prototype.chain = wrapperChain; - lodash.prototype.commit = wrapperCommit; - lodash.prototype.next = wrapperNext; - lodash.prototype.plant = wrapperPlant; - lodash.prototype.reverse = wrapperReverse; - lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; - lodash.prototype.first = lodash.prototype.head; - if (symIterator) { - lodash.prototype[symIterator] = wrapperToIterator; - } - return lodash; - }; - var _3 = runInContext(); - if (typeof define == "function" && typeof define.amd == "object" && define.amd) { - root._ = _3; - define(function() { - return _3; - }); - } else if (freeModule) { - (freeModule.exports = _3)._ = _3; - freeExports._ = _3; - } else { - root._ = _3; - } - }).call(exports); - } -}); - -// node_modules/react-property/lib/possibleStandardNamesOptimized.js -var require_possibleStandardNamesOptimized = __commonJS({ - "node_modules/react-property/lib/possibleStandardNamesOptimized.js"(exports) { - var SAME = 0; - exports.SAME = SAME; - var CAMELCASE = 1; - exports.CAMELCASE = CAMELCASE; - exports.possibleStandardNames = { - accept: 0, - acceptCharset: 1, - "accept-charset": "acceptCharset", - accessKey: 1, - action: 0, - allowFullScreen: 1, - alt: 0, - as: 0, - async: 0, - autoCapitalize: 1, - autoComplete: 1, - autoCorrect: 1, - autoFocus: 1, - autoPlay: 1, - autoSave: 1, - capture: 0, - cellPadding: 1, - cellSpacing: 1, - challenge: 0, - charSet: 1, - checked: 0, - children: 0, - cite: 0, - class: "className", - classID: 1, - className: 1, - cols: 0, - colSpan: 1, - content: 0, - contentEditable: 1, - contextMenu: 1, - controls: 0, - controlsList: 1, - coords: 0, - crossOrigin: 1, - dangerouslySetInnerHTML: 1, - data: 0, - dateTime: 1, - default: 0, - defaultChecked: 1, - defaultValue: 1, - defer: 0, - dir: 0, - disabled: 0, - disablePictureInPicture: 1, - disableRemotePlayback: 1, - download: 0, - draggable: 0, - encType: 1, - enterKeyHint: 1, - for: "htmlFor", - form: 0, - formMethod: 1, - formAction: 1, - formEncType: 1, - formNoValidate: 1, - formTarget: 1, - frameBorder: 1, - headers: 0, - height: 0, - hidden: 0, - high: 0, - href: 0, - hrefLang: 1, - htmlFor: 1, - httpEquiv: 1, - "http-equiv": "httpEquiv", - icon: 0, - id: 0, - innerHTML: 1, - inputMode: 1, - integrity: 0, - is: 0, - itemID: 1, - itemProp: 1, - itemRef: 1, - itemScope: 1, - itemType: 1, - keyParams: 1, - keyType: 1, - kind: 0, - label: 0, - lang: 0, - list: 0, - loop: 0, - low: 0, - manifest: 0, - marginWidth: 1, - marginHeight: 1, - max: 0, - maxLength: 1, - media: 0, - mediaGroup: 1, - method: 0, - min: 0, - minLength: 1, - multiple: 0, - muted: 0, - name: 0, - noModule: 1, - nonce: 0, - noValidate: 1, - open: 0, - optimum: 0, - pattern: 0, - placeholder: 0, - playsInline: 1, - poster: 0, - preload: 0, - profile: 0, - radioGroup: 1, - readOnly: 1, - referrerPolicy: 1, - rel: 0, - required: 0, - reversed: 0, - role: 0, - rows: 0, - rowSpan: 1, - sandbox: 0, - scope: 0, - scoped: 0, - scrolling: 0, - seamless: 0, - selected: 0, - shape: 0, - size: 0, - sizes: 0, - span: 0, - spellCheck: 1, - src: 0, - srcDoc: 1, - srcLang: 1, - srcSet: 1, - start: 0, - step: 0, - style: 0, - summary: 0, - tabIndex: 1, - target: 0, - title: 0, - type: 0, - useMap: 1, - value: 0, - width: 0, - wmode: 0, - wrap: 0, - about: 0, - accentHeight: 1, - "accent-height": "accentHeight", - accumulate: 0, - additive: 0, - alignmentBaseline: 1, - "alignment-baseline": "alignmentBaseline", - allowReorder: 1, - alphabetic: 0, - amplitude: 0, - arabicForm: 1, - "arabic-form": "arabicForm", - ascent: 0, - attributeName: 1, - attributeType: 1, - autoReverse: 1, - azimuth: 0, - baseFrequency: 1, - baselineShift: 1, - "baseline-shift": "baselineShift", - baseProfile: 1, - bbox: 0, - begin: 0, - bias: 0, - by: 0, - calcMode: 1, - capHeight: 1, - "cap-height": "capHeight", - clip: 0, - clipPath: 1, - "clip-path": "clipPath", - clipPathUnits: 1, - clipRule: 1, - "clip-rule": "clipRule", - color: 0, - colorInterpolation: 1, - "color-interpolation": "colorInterpolation", - colorInterpolationFilters: 1, - "color-interpolation-filters": "colorInterpolationFilters", - colorProfile: 1, - "color-profile": "colorProfile", - colorRendering: 1, - "color-rendering": "colorRendering", - contentScriptType: 1, - contentStyleType: 1, - cursor: 0, - cx: 0, - cy: 0, - d: 0, - datatype: 0, - decelerate: 0, - descent: 0, - diffuseConstant: 1, - direction: 0, - display: 0, - divisor: 0, - dominantBaseline: 1, - "dominant-baseline": "dominantBaseline", - dur: 0, - dx: 0, - dy: 0, - edgeMode: 1, - elevation: 0, - enableBackground: 1, - "enable-background": "enableBackground", - end: 0, - exponent: 0, - externalResourcesRequired: 1, - fill: 0, - fillOpacity: 1, - "fill-opacity": "fillOpacity", - fillRule: 1, - "fill-rule": "fillRule", - filter: 0, - filterRes: 1, - filterUnits: 1, - floodOpacity: 1, - "flood-opacity": "floodOpacity", - floodColor: 1, - "flood-color": "floodColor", - focusable: 0, - fontFamily: 1, - "font-family": "fontFamily", - fontSize: 1, - "font-size": "fontSize", - fontSizeAdjust: 1, - "font-size-adjust": "fontSizeAdjust", - fontStretch: 1, - "font-stretch": "fontStretch", - fontStyle: 1, - "font-style": "fontStyle", - fontVariant: 1, - "font-variant": "fontVariant", - fontWeight: 1, - "font-weight": "fontWeight", - format: 0, - from: 0, - fx: 0, - fy: 0, - g1: 0, - g2: 0, - glyphName: 1, - "glyph-name": "glyphName", - glyphOrientationHorizontal: 1, - "glyph-orientation-horizontal": "glyphOrientationHorizontal", - glyphOrientationVertical: 1, - "glyph-orientation-vertical": "glyphOrientationVertical", - glyphRef: 1, - gradientTransform: 1, - gradientUnits: 1, - hanging: 0, - horizAdvX: 1, - "horiz-adv-x": "horizAdvX", - horizOriginX: 1, - "horiz-origin-x": "horizOriginX", - ideographic: 0, - imageRendering: 1, - "image-rendering": "imageRendering", - in2: 0, - in: 0, - inlist: 0, - intercept: 0, - k1: 0, - k2: 0, - k3: 0, - k4: 0, - k: 0, - kernelMatrix: 1, - kernelUnitLength: 1, - kerning: 0, - keyPoints: 1, - keySplines: 1, - keyTimes: 1, - lengthAdjust: 1, - letterSpacing: 1, - "letter-spacing": "letterSpacing", - lightingColor: 1, - "lighting-color": "lightingColor", - limitingConeAngle: 1, - local: 0, - markerEnd: 1, - "marker-end": "markerEnd", - markerHeight: 1, - markerMid: 1, - "marker-mid": "markerMid", - markerStart: 1, - "marker-start": "markerStart", - markerUnits: 1, - markerWidth: 1, - mask: 0, - maskContentUnits: 1, - maskUnits: 1, - mathematical: 0, - mode: 0, - numOctaves: 1, - offset: 0, - opacity: 0, - operator: 0, - order: 0, - orient: 0, - orientation: 0, - origin: 0, - overflow: 0, - overlinePosition: 1, - "overline-position": "overlinePosition", - overlineThickness: 1, - "overline-thickness": "overlineThickness", - paintOrder: 1, - "paint-order": "paintOrder", - panose1: 0, - "panose-1": "panose1", - pathLength: 1, - patternContentUnits: 1, - patternTransform: 1, - patternUnits: 1, - pointerEvents: 1, - "pointer-events": "pointerEvents", - points: 0, - pointsAtX: 1, - pointsAtY: 1, - pointsAtZ: 1, - prefix: 0, - preserveAlpha: 1, - preserveAspectRatio: 1, - primitiveUnits: 1, - property: 0, - r: 0, - radius: 0, - refX: 1, - refY: 1, - renderingIntent: 1, - "rendering-intent": "renderingIntent", - repeatCount: 1, - repeatDur: 1, - requiredExtensions: 1, - requiredFeatures: 1, - resource: 0, - restart: 0, - result: 0, - results: 0, - rotate: 0, - rx: 0, - ry: 0, - scale: 0, - security: 0, - seed: 0, - shapeRendering: 1, - "shape-rendering": "shapeRendering", - slope: 0, - spacing: 0, - specularConstant: 1, - specularExponent: 1, - speed: 0, - spreadMethod: 1, - startOffset: 1, - stdDeviation: 1, - stemh: 0, - stemv: 0, - stitchTiles: 1, - stopColor: 1, - "stop-color": "stopColor", - stopOpacity: 1, - "stop-opacity": "stopOpacity", - strikethroughPosition: 1, - "strikethrough-position": "strikethroughPosition", - strikethroughThickness: 1, - "strikethrough-thickness": "strikethroughThickness", - string: 0, - stroke: 0, - strokeDasharray: 1, - "stroke-dasharray": "strokeDasharray", - strokeDashoffset: 1, - "stroke-dashoffset": "strokeDashoffset", - strokeLinecap: 1, - "stroke-linecap": "strokeLinecap", - strokeLinejoin: 1, - "stroke-linejoin": "strokeLinejoin", - strokeMiterlimit: 1, - "stroke-miterlimit": "strokeMiterlimit", - strokeWidth: 1, - "stroke-width": "strokeWidth", - strokeOpacity: 1, - "stroke-opacity": "strokeOpacity", - suppressContentEditableWarning: 1, - suppressHydrationWarning: 1, - surfaceScale: 1, - systemLanguage: 1, - tableValues: 1, - targetX: 1, - targetY: 1, - textAnchor: 1, - "text-anchor": "textAnchor", - textDecoration: 1, - "text-decoration": "textDecoration", - textLength: 1, - textRendering: 1, - "text-rendering": "textRendering", - to: 0, - transform: 0, - typeof: 0, - u1: 0, - u2: 0, - underlinePosition: 1, - "underline-position": "underlinePosition", - underlineThickness: 1, - "underline-thickness": "underlineThickness", - unicode: 0, - unicodeBidi: 1, - "unicode-bidi": "unicodeBidi", - unicodeRange: 1, - "unicode-range": "unicodeRange", - unitsPerEm: 1, - "units-per-em": "unitsPerEm", - unselectable: 0, - vAlphabetic: 1, - "v-alphabetic": "vAlphabetic", - values: 0, - vectorEffect: 1, - "vector-effect": "vectorEffect", - version: 0, - vertAdvY: 1, - "vert-adv-y": "vertAdvY", - vertOriginX: 1, - "vert-origin-x": "vertOriginX", - vertOriginY: 1, - "vert-origin-y": "vertOriginY", - vHanging: 1, - "v-hanging": "vHanging", - vIdeographic: 1, - "v-ideographic": "vIdeographic", - viewBox: 1, - viewTarget: 1, - visibility: 0, - vMathematical: 1, - "v-mathematical": "vMathematical", - vocab: 0, - widths: 0, - wordSpacing: 1, - "word-spacing": "wordSpacing", - writingMode: 1, - "writing-mode": "writingMode", - x1: 0, - x2: 0, - x: 0, - xChannelSelector: 1, - xHeight: 1, - "x-height": "xHeight", - xlinkActuate: 1, - "xlink:actuate": "xlinkActuate", - xlinkArcrole: 1, - "xlink:arcrole": "xlinkArcrole", - xlinkHref: 1, - "xlink:href": "xlinkHref", - xlinkRole: 1, - "xlink:role": "xlinkRole", - xlinkShow: 1, - "xlink:show": "xlinkShow", - xlinkTitle: 1, - "xlink:title": "xlinkTitle", - xlinkType: 1, - "xlink:type": "xlinkType", - xmlBase: 1, - "xml:base": "xmlBase", - xmlLang: 1, - "xml:lang": "xmlLang", - xmlns: 0, - "xml:space": "xmlSpace", - xmlnsXlink: 1, - "xmlns:xlink": "xmlnsXlink", - xmlSpace: 1, - y1: 0, - y2: 0, - y: 0, - yChannelSelector: 1, - z: 0, - zoomAndPan: 1 - }; - } -}); - -// node_modules/react-property/lib/index.js -var require_lib = __commonJS({ - "node_modules/react-property/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - function _slicedToArray(arr, i2) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i2) || _unsupportedIterableToArray(arr, i2) || _nonIterableRest(); - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) - return arr; - } - function _iterableToArrayLimit(arr, i2) { - var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; - if (_i == null) - return; - var _arr = []; - var _n = true; - var _d = false; - var _s, _e; - try { - for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i2 && _arr.length === i2) - break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) - _i["return"](); - } finally { - if (_d) - throw _e; - } - } - return _arr; - } - function _unsupportedIterableToArray(o2, minLen) { - if (!o2) - return; - if (typeof o2 === "string") - return _arrayLikeToArray(o2, minLen); - var n2 = Object.prototype.toString.call(o2).slice(8, -1); - if (n2 === "Object" && o2.constructor) - n2 = o2.constructor.name; - if (n2 === "Map" || n2 === "Set") - return Array.from(o2); - if (n2 === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n2)) - return _arrayLikeToArray(o2, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) - len = arr.length; - for (var i2 = 0, arr2 = new Array(len); i2 < len; i2++) - arr2[i2] = arr[i2]; - return arr2; - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var RESERVED = 0; - var STRING = 1; - var BOOLEANISH_STRING = 2; - var BOOLEAN = 3; - var OVERLOADED_BOOLEAN = 4; - var NUMERIC = 5; - var POSITIVE_NUMERIC = 6; - function getPropertyInfo(name) { - return properties2.hasOwnProperty(name) ? properties2[name] : null; - } - function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) { - this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN; - this.attributeName = attributeName; - this.attributeNamespace = attributeNamespace; - this.mustUseProperty = mustUseProperty; - this.propertyName = name; - this.type = type; - this.sanitizeURL = sanitizeURL; - this.removeEmptyString = removeEmptyString; - } - var properties2 = {}; - var reservedProps = [ - "children", - "dangerouslySetInnerHTML", - "defaultValue", - "defaultChecked", - "innerHTML", - "suppressContentEditableWarning", - "suppressHydrationWarning", - "style" - ]; - reservedProps.forEach(function(name) { - properties2[name] = new PropertyInfoRecord( - name, - RESERVED, - false, - name, - null, - false, - false - ); - }); - [["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function(_ref) { - var _ref2 = _slicedToArray(_ref, 2), name = _ref2[0], attributeName = _ref2[1]; - properties2[name] = new PropertyInfoRecord( - name, - STRING, - false, - attributeName, - null, - false, - false - ); - }); - ["contentEditable", "draggable", "spellCheck", "value"].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( - name, - BOOLEANISH_STRING, - false, - name.toLowerCase(), - null, - false, - false - ); - }); - ["autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha"].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( - name, - BOOLEANISH_STRING, - false, - name, - null, - false, - false - ); - }); - [ - "allowFullScreen", - "async", - "autoFocus", - "autoPlay", - "controls", - "default", - "defer", - "disabled", - "disablePictureInPicture", - "disableRemotePlayback", - "formNoValidate", - "hidden", - "loop", - "noModule", - "noValidate", - "open", - "playsInline", - "readOnly", - "required", - "reversed", - "scoped", - "seamless", - "itemScope" - ].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( - name, - BOOLEAN, - false, - name.toLowerCase(), - null, - false, - false - ); - }); - [ - "checked", - "multiple", - "muted", - "selected" - ].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( - name, - BOOLEAN, - true, - name, - null, - false, - false - ); - }); - [ - "capture", - "download" - ].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( - name, - OVERLOADED_BOOLEAN, - false, - name, - null, - false, - false - ); - }); - [ - "cols", - "rows", - "size", - "span" - ].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( - name, - POSITIVE_NUMERIC, - false, - name, - null, - false, - false - ); - }); - ["rowSpan", "start"].forEach(function(name) { - properties2[name] = new PropertyInfoRecord( - name, - NUMERIC, - false, - name.toLowerCase(), - null, - false, - false - ); - }); - var CAMELIZE = /[\-\:]([a-z])/g; - var capitalize2 = function capitalize3(token) { - return token[1].toUpperCase(); - }; - [ - "accent-height", - "alignment-baseline", - "arabic-form", - "baseline-shift", - "cap-height", - "clip-path", - "clip-rule", - "color-interpolation", - "color-interpolation-filters", - "color-profile", - "color-rendering", - "dominant-baseline", - "enable-background", - "fill-opacity", - "fill-rule", - "flood-color", - "flood-opacity", - "font-family", - "font-size", - "font-size-adjust", - "font-stretch", - "font-style", - "font-variant", - "font-weight", - "glyph-name", - "glyph-orientation-horizontal", - "glyph-orientation-vertical", - "horiz-adv-x", - "horiz-origin-x", - "image-rendering", - "letter-spacing", - "lighting-color", - "marker-end", - "marker-mid", - "marker-start", - "overline-position", - "overline-thickness", - "paint-order", - "panose-1", - "pointer-events", - "rendering-intent", - "shape-rendering", - "stop-color", - "stop-opacity", - "strikethrough-position", - "strikethrough-thickness", - "stroke-dasharray", - "stroke-dashoffset", - "stroke-linecap", - "stroke-linejoin", - "stroke-miterlimit", - "stroke-opacity", - "stroke-width", - "text-anchor", - "text-decoration", - "text-rendering", - "underline-position", - "underline-thickness", - "unicode-bidi", - "unicode-range", - "units-per-em", - "v-alphabetic", - "v-hanging", - "v-ideographic", - "v-mathematical", - "vector-effect", - "vert-adv-y", - "vert-origin-x", - "vert-origin-y", - "word-spacing", - "writing-mode", - "xmlns:xlink", - "x-height" - ].forEach(function(attributeName) { - var name = attributeName.replace(CAMELIZE, capitalize2); - properties2[name] = new PropertyInfoRecord( - name, - STRING, - false, - attributeName, - null, - false, - false - ); - }); - [ - "xlink:actuate", - "xlink:arcrole", - "xlink:role", - "xlink:show", - "xlink:title", - "xlink:type" - ].forEach(function(attributeName) { - var name = attributeName.replace(CAMELIZE, capitalize2); - properties2[name] = new PropertyInfoRecord( - name, - STRING, - false, - attributeName, - "http://www.w3.org/1999/xlink", - false, - false - ); - }); - [ - "xml:base", - "xml:lang", - "xml:space" - ].forEach(function(attributeName) { - var name = attributeName.replace(CAMELIZE, capitalize2); - properties2[name] = new PropertyInfoRecord( - name, - STRING, - false, - attributeName, - "http://www.w3.org/XML/1998/namespace", - false, - false - ); - }); - ["tabIndex", "crossOrigin"].forEach(function(attributeName) { - properties2[attributeName] = new PropertyInfoRecord( - attributeName, - STRING, - false, - attributeName.toLowerCase(), - null, - false, - false - ); - }); - var xlinkHref = "xlinkHref"; - properties2[xlinkHref] = new PropertyInfoRecord( - "xlinkHref", - STRING, - false, - "xlink:href", - "http://www.w3.org/1999/xlink", - true, - false - ); - ["src", "href", "action", "formAction"].forEach(function(attributeName) { - properties2[attributeName] = new PropertyInfoRecord( - attributeName, - STRING, - false, - attributeName.toLowerCase(), - null, - true, - true - ); - }); - var _require = require_possibleStandardNamesOptimized(); - var CAMELCASE = _require.CAMELCASE; - var SAME = _require.SAME; - var possibleStandardNamesOptimized = _require.possibleStandardNames; - var ATTRIBUTE_NAME_START_CHAR = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD"; - var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040"; - var isCustomAttribute = RegExp.prototype.test.bind( - new RegExp("^(data|aria)-[" + ATTRIBUTE_NAME_CHAR + "]*$") - ); - var possibleStandardNames = Object.keys(possibleStandardNamesOptimized).reduce(function(accumulator, standardName) { - var propName = possibleStandardNamesOptimized[standardName]; - if (propName === SAME) { - accumulator[standardName] = standardName; - } else if (propName === CAMELCASE) { - accumulator[standardName.toLowerCase()] = standardName; - } else { - accumulator[standardName] = propName; - } - return accumulator; - }, {}); - exports.BOOLEAN = BOOLEAN; - exports.BOOLEANISH_STRING = BOOLEANISH_STRING; - exports.NUMERIC = NUMERIC; - exports.OVERLOADED_BOOLEAN = OVERLOADED_BOOLEAN; - exports.POSITIVE_NUMERIC = POSITIVE_NUMERIC; - exports.RESERVED = RESERVED; - exports.STRING = STRING; - exports.getPropertyInfo = getPropertyInfo; - exports.isCustomAttribute = isCustomAttribute; - exports.possibleStandardNames = possibleStandardNames; - } -}); - -// node_modules/inline-style-parser/index.js -var require_inline_style_parser = __commonJS({ - "node_modules/inline-style-parser/index.js"(exports, module2) { - var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g; - var NEWLINE_REGEX = /\n/g; - var WHITESPACE_REGEX = /^\s*/; - var PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/; - var COLON_REGEX = /^:\s*/; - var VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/; - var SEMICOLON_REGEX = /^[;\s]*/; - var TRIM_REGEX = /^\s+|\s+$/g; - var NEWLINE = "\n"; - var FORWARD_SLASH = "/"; - var ASTERISK = "*"; - var EMPTY_STRING = ""; - var TYPE_COMMENT = "comment"; - var TYPE_DECLARATION = "declaration"; - module2.exports = function(style3, options) { - if (typeof style3 !== "string") { - throw new TypeError("First argument must be a string"); - } - if (!style3) - return []; - options = options || {}; - var lineno = 1; - var column = 1; - function updatePosition(str) { - var lines = str.match(NEWLINE_REGEX); - if (lines) - lineno += lines.length; - var i2 = str.lastIndexOf(NEWLINE); - column = ~i2 ? str.length - i2 : column + str.length; - } - function position2() { - var start = { line: lineno, column }; - return function(node) { - node.position = new Position(start); - whitespace(); - return node; - }; - } - function Position(start) { - this.start = start; - this.end = { line: lineno, column }; - this.source = options.source; - } - Position.prototype.content = style3; - var errorsList = []; - function error(msg) { - var err = new Error( - options.source + ":" + lineno + ":" + column + ": " + msg - ); - err.reason = msg; - err.filename = options.source; - err.line = lineno; - err.column = column; - err.source = style3; - if (options.silent) { - errorsList.push(err); - } else { - throw err; - } - } - function match(re) { - var m2 = re.exec(style3); - if (!m2) - return; - var str = m2[0]; - updatePosition(str); - style3 = style3.slice(str.length); - return m2; - } - function whitespace() { - match(WHITESPACE_REGEX); - } - function comments(rules) { - var c2; - rules = rules || []; - while (c2 = comment()) { - if (c2 !== false) { - rules.push(c2); - } - } - return rules; - } - function comment() { - var pos = position2(); - if (FORWARD_SLASH != style3.charAt(0) || ASTERISK != style3.charAt(1)) - return; - var i2 = 2; - while (EMPTY_STRING != style3.charAt(i2) && (ASTERISK != style3.charAt(i2) || FORWARD_SLASH != style3.charAt(i2 + 1))) { - ++i2; - } - i2 += 2; - if (EMPTY_STRING === style3.charAt(i2 - 1)) { - return error("End of comment missing"); - } - var str = style3.slice(2, i2 - 2); - column += 2; - updatePosition(str); - style3 = style3.slice(i2); - column += 2; - return pos({ - type: TYPE_COMMENT, - comment: str - }); - } - function declaration() { - var pos = position2(); - var prop = match(PROPERTY_REGEX); - if (!prop) - return; - comment(); - if (!match(COLON_REGEX)) - return error("property missing ':'"); - var val = match(VALUE_REGEX); - var ret = pos({ - type: TYPE_DECLARATION, - property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)), - value: val ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING)) : EMPTY_STRING - }); - match(SEMICOLON_REGEX); - return ret; - } - function declarations() { - var decls = []; - comments(decls); - var decl; - while (decl = declaration()) { - if (decl !== false) { - decls.push(decl); - comments(decls); - } - } - return decls; - } - whitespace(); - return declarations(); - }; - function trim(str) { - return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING; - } - } -}); - -// node_modules/style-to-object/index.js -var require_style_to_object = __commonJS({ - "node_modules/style-to-object/index.js"(exports, module2) { - var parse = require_inline_style_parser(); - function StyleToObject(style3, iterator) { - var output = null; - if (!style3 || typeof style3 !== "string") { - return output; - } - var declaration; - var declarations = parse(style3); - var hasIterator = typeof iterator === "function"; - var property; - var value; - for (var i2 = 0, len = declarations.length; i2 < len; i2++) { - declaration = declarations[i2]; - property = declaration.property; - value = declaration.value; - if (hasIterator) { - iterator(property, value, declaration); - } else if (value) { - output || (output = {}); - output[property] = value; - } - } - return output; - } - module2.exports = StyleToObject; - } -}); - -// node_modules/style-to-js/cjs/utilities.js -var require_utilities = __commonJS({ - "node_modules/style-to-js/cjs/utilities.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.camelCase = void 0; - var CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9-]+$/; - var HYPHEN_REGEX = /-([a-z])/g; - var NO_HYPHEN_REGEX = /^[^-]+$/; - var VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/; - var MS_VENDOR_PREFIX_REGEX = /^-(ms)-/; - var skipCamelCase = function(property) { - return !property || NO_HYPHEN_REGEX.test(property) || CUSTOM_PROPERTY_REGEX.test(property); - }; - var capitalize2 = function(match, character) { - return character.toUpperCase(); - }; - var trimHyphen = function(match, prefix2) { - return "".concat(prefix2, "-"); - }; - var camelCase = function(property, options) { - if (options === void 0) { - options = {}; - } - if (skipCamelCase(property)) { - return property; - } - property = property.toLowerCase(); - if (options.reactCompat) { - property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen); - } else { - property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen); - } - return property.replace(HYPHEN_REGEX, capitalize2); - }; - exports.camelCase = camelCase; - } -}); - -// node_modules/style-to-js/cjs/index.js -var require_cjs = __commonJS({ - "node_modules/style-to-js/cjs/index.js"(exports) { - "use strict"; - var __importDefault = exports && exports.__importDefault || function(mod) { - return mod && mod.__esModule ? mod : { "default": mod }; - }; - exports.__esModule = true; - var style_to_object_1 = __importDefault(require_style_to_object()); - var utilities_1 = require_utilities(); - function StyleToJS(style3, options) { - var output = {}; - if (!style3 || typeof style3 !== "string") { - return output; - } - (0, style_to_object_1["default"])(style3, function(property, value) { - if (property && value) { - output[(0, utilities_1.camelCase)(property, options)] = value; - } - }); - return output; - } - exports["default"] = StyleToJS; - } -}); - -// node_modules/html-react-parser/lib/utilities.js -var require_utilities2 = __commonJS({ - "node_modules/html-react-parser/lib/utilities.js"(exports, module2) { - var React11 = require_react(); - var styleToJS = require_cjs().default; - function invertObject(obj, override) { - if (!obj || typeof obj !== "object") { - throw new TypeError("First argument must be an object"); - } - var key; - var value; - var isOverridePresent = typeof override === "function"; - var overrides = {}; - var result = {}; - for (key in obj) { - value = obj[key]; - if (isOverridePresent) { - overrides = override(key, value); - if (overrides && overrides.length === 2) { - result[overrides[0]] = overrides[1]; - continue; - } - } - if (typeof value === "string") { - result[value] = key; - } - } - return result; - } - function isCustomComponent(tagName, props) { - if (tagName.indexOf("-") === -1) { - return props && typeof props.is === "string"; - } - switch (tagName) { - case "annotation-xml": - case "color-profile": - case "font-face": - case "font-face-src": - case "font-face-uri": - case "font-face-format": - case "font-face-name": - case "missing-glyph": - return false; - default: - return true; - } - } - var styleToJSOptions = { reactCompat: true }; - function setStyleProp(style3, props) { - if (style3 === null || style3 === void 0) { - return; - } - try { - props.style = styleToJS(style3, styleToJSOptions); - } catch (err) { - props.style = {}; - } - } - var PRESERVE_CUSTOM_ATTRIBUTES = React11.version.split(".")[0] >= 16; - var elementsWithNoTextChildren = /* @__PURE__ */ new Set([ - "tr", - "tbody", - "thead", - "tfoot", - "colgroup", - "table", - "head", - "html", - "frameset" - ]); - function canTextBeChildOfNode(node) { - return !elementsWithNoTextChildren.has(node.name); - } - module2.exports = { - PRESERVE_CUSTOM_ATTRIBUTES, - invertObject, - isCustomComponent, - setStyleProp, - canTextBeChildOfNode, - elementsWithNoTextChildren - }; - } -}); - -// node_modules/html-react-parser/lib/attributes-to-props.js -var require_attributes_to_props = __commonJS({ - "node_modules/html-react-parser/lib/attributes-to-props.js"(exports, module2) { - var reactProperty = require_lib(); - var utilities = require_utilities2(); - module2.exports = function attributesToProps2(attributes) { - attributes = attributes || {}; - var valueOnlyInputs = { - reset: true, - submit: true - }; - var attributeName; - var attributeNameLowerCased; - var attributeValue; - var propName; - var propertyInfo; - var props = {}; - var inputIsValueOnly = attributes.type && valueOnlyInputs[attributes.type]; - for (attributeName in attributes) { - attributeValue = attributes[attributeName]; - if (reactProperty.isCustomAttribute(attributeName)) { - props[attributeName] = attributeValue; - continue; - } - attributeNameLowerCased = attributeName.toLowerCase(); - propName = getPropName(attributeNameLowerCased); - if (propName) { - propertyInfo = reactProperty.getPropertyInfo(propName); - if ((propName === "checked" || propName === "value") && !inputIsValueOnly) { - propName = getPropName("default" + attributeNameLowerCased); - } - props[propName] = attributeValue; - switch (propertyInfo && propertyInfo.type) { - case reactProperty.BOOLEAN: - props[propName] = true; - break; - case reactProperty.OVERLOADED_BOOLEAN: - if (attributeValue === "") { - props[propName] = true; - } - break; - } - continue; - } - if (utilities.PRESERVE_CUSTOM_ATTRIBUTES) { - props[attributeName] = attributeValue; - } - } - utilities.setStyleProp(attributes.style, props); - return props; - }; - function getPropName(attributeName) { - return reactProperty.possibleStandardNames[attributeName]; - } - } -}); - -// node_modules/html-react-parser/lib/dom-to-react.js -var require_dom_to_react = __commonJS({ - "node_modules/html-react-parser/lib/dom-to-react.js"(exports, module2) { - var React11 = require_react(); - var attributesToProps2 = require_attributes_to_props(); - var utilities = require_utilities2(); - var setStyleProp = utilities.setStyleProp; - var canTextBeChildOfNode = utilities.canTextBeChildOfNode; - function domToReact2(nodes, options) { - options = options || {}; - var library = options.library || React11; - var cloneElement = library.cloneElement; - var createElement = library.createElement; - var isValidElement = library.isValidElement; - var result = []; - var node; - var isWhitespace; - var hasReplace = typeof options.replace === "function"; - var replaceElement; - var props; - var children; - var trim = options.trim; - for (var i2 = 0, len = nodes.length; i2 < len; i2++) { - node = nodes[i2]; - if (hasReplace) { - replaceElement = options.replace(node); - if (isValidElement(replaceElement)) { - if (len > 1) { - replaceElement = cloneElement(replaceElement, { - key: replaceElement.key || i2 - }); - } - result.push(replaceElement); - continue; - } - } - if (node.type === "text") { - isWhitespace = !node.data.trim().length; - if (isWhitespace && node.parent && !canTextBeChildOfNode(node.parent)) { - continue; - } - if (trim && isWhitespace) { - continue; - } - result.push(node.data); - continue; - } - props = node.attribs; - if (skipAttributesToProps(node)) { - setStyleProp(props.style, props); - } else if (props) { - props = attributesToProps2(props); - } - children = null; - switch (node.type) { - case "script": - case "style": - if (node.children[0]) { - props.dangerouslySetInnerHTML = { - __html: node.children[0].data - }; - } - break; - case "tag": - if (node.name === "textarea" && node.children[0]) { - props.defaultValue = node.children[0].data; - } else if (node.children && node.children.length) { - children = domToReact2(node.children, options); - } - break; - default: - continue; - } - if (len > 1) { - props.key = i2; - } - result.push(createElement(node.name, props, children)); - } - return result.length === 1 ? result[0] : result; - } - function skipAttributesToProps(node) { - return utilities.PRESERVE_CUSTOM_ATTRIBUTES && node.type === "tag" && utilities.isCustomComponent(node.name, node.attribs); - } - module2.exports = domToReact2; - } -}); - -// node_modules/entities/lib/decode_codepoint.js -var require_decode_codepoint = __commonJS({ - "node_modules/entities/lib/decode_codepoint.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var decodeMap = /* @__PURE__ */ new Map([ - [0, 65533], - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] - ]); - var fromCodePoint = String.fromCodePoint || function(codePoint) { - var output = ""; - if (codePoint > 65535) { - codePoint -= 65536; - output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; - } - output += String.fromCharCode(codePoint); - return output; - }; - function decodeCodePoint(codePoint) { - var _a; - if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { - return "\uFFFD"; - } - return fromCodePoint((_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint); - } - exports.default = decodeCodePoint; - } -}); - -// node_modules/entities/lib/generated/decode-data-html.js -var require_decode_data_html = __commonJS({ - "node_modules/entities/lib/generated/decode-data-html.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.default = new Uint16Array([14866, 60, 237, 340, 721, 1312, 1562, 1654, 1838, 1957, 2183, 2239, 2301, 2958, 3037, 3893, 4123, 4298, 4330, 4801, 5191, 5395, 5752, 5903, 5943, 5972, 6050, 0, 0, 0, 0, 0, 0, 6135, 6565, 7422, 8183, 8738, 9242, 9503, 9938, 10189, 10573, 10637, 10715, 11950, 12246, 13539, 13950, 14445, 14533, 15364, 16514, 16980, 17390, 17763, 17849, 18036, 18125, 4096, 69, 77, 97, 98, 99, 102, 103, 108, 109, 110, 111, 112, 114, 115, 116, 117, 92, 100, 106, 115, 122, 137, 142, 151, 157, 163, 167, 182, 196, 204, 220, 229, 108, 105, 103, 33024, 198, 59, 32768, 198, 80, 33024, 38, 59, 32768, 38, 99, 117, 116, 101, 33024, 193, 59, 32768, 193, 114, 101, 118, 101, 59, 32768, 258, 512, 105, 121, 127, 134, 114, 99, 33024, 194, 59, 32768, 194, 59, 32768, 1040, 114, 59, 32896, 55349, 56580, 114, 97, 118, 101, 33024, 192, 59, 32768, 192, 112, 104, 97, 59, 32768, 913, 97, 99, 114, 59, 32768, 256, 100, 59, 32768, 10835, 512, 103, 112, 172, 177, 111, 110, 59, 32768, 260, 102, 59, 32896, 55349, 56632, 112, 108, 121, 70, 117, 110, 99, 116, 105, 111, 110, 59, 32768, 8289, 105, 110, 103, 33024, 197, 59, 32768, 197, 512, 99, 115, 209, 214, 114, 59, 32896, 55349, 56476, 105, 103, 110, 59, 32768, 8788, 105, 108, 100, 101, 33024, 195, 59, 32768, 195, 109, 108, 33024, 196, 59, 32768, 196, 2048, 97, 99, 101, 102, 111, 114, 115, 117, 253, 278, 282, 310, 315, 321, 327, 332, 512, 99, 114, 258, 267, 107, 115, 108, 97, 115, 104, 59, 32768, 8726, 583, 271, 274, 59, 32768, 10983, 101, 100, 59, 32768, 8966, 121, 59, 32768, 1041, 768, 99, 114, 116, 289, 296, 306, 97, 117, 115, 101, 59, 32768, 8757, 110, 111, 117, 108, 108, 105, 115, 59, 32768, 8492, 97, 59, 32768, 914, 114, 59, 32896, 55349, 56581, 112, 102, 59, 32896, 55349, 56633, 101, 118, 101, 59, 32768, 728, 99, 114, 59, 32768, 8492, 109, 112, 101, 113, 59, 32768, 8782, 3584, 72, 79, 97, 99, 100, 101, 102, 104, 105, 108, 111, 114, 115, 117, 368, 373, 380, 426, 461, 466, 487, 491, 495, 533, 593, 695, 701, 707, 99, 121, 59, 32768, 1063, 80, 89, 33024, 169, 59, 32768, 169, 768, 99, 112, 121, 387, 393, 419, 117, 116, 101, 59, 32768, 262, 512, 59, 105, 398, 400, 32768, 8914, 116, 97, 108, 68, 105, 102, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 32768, 8517, 108, 101, 121, 115, 59, 32768, 8493, 1024, 97, 101, 105, 111, 435, 441, 449, 454, 114, 111, 110, 59, 32768, 268, 100, 105, 108, 33024, 199, 59, 32768, 199, 114, 99, 59, 32768, 264, 110, 105, 110, 116, 59, 32768, 8752, 111, 116, 59, 32768, 266, 512, 100, 110, 471, 478, 105, 108, 108, 97, 59, 32768, 184, 116, 101, 114, 68, 111, 116, 59, 32768, 183, 114, 59, 32768, 8493, 105, 59, 32768, 935, 114, 99, 108, 101, 1024, 68, 77, 80, 84, 508, 513, 520, 526, 111, 116, 59, 32768, 8857, 105, 110, 117, 115, 59, 32768, 8854, 108, 117, 115, 59, 32768, 8853, 105, 109, 101, 115, 59, 32768, 8855, 111, 512, 99, 115, 539, 562, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8754, 101, 67, 117, 114, 108, 121, 512, 68, 81, 573, 586, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 32768, 8221, 117, 111, 116, 101, 59, 32768, 8217, 1024, 108, 110, 112, 117, 602, 614, 648, 664, 111, 110, 512, 59, 101, 609, 611, 32768, 8759, 59, 32768, 10868, 768, 103, 105, 116, 621, 629, 634, 114, 117, 101, 110, 116, 59, 32768, 8801, 110, 116, 59, 32768, 8751, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8750, 512, 102, 114, 653, 656, 59, 32768, 8450, 111, 100, 117, 99, 116, 59, 32768, 8720, 110, 116, 101, 114, 67, 108, 111, 99, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8755, 111, 115, 115, 59, 32768, 10799, 99, 114, 59, 32896, 55349, 56478, 112, 512, 59, 67, 713, 715, 32768, 8915, 97, 112, 59, 32768, 8781, 2816, 68, 74, 83, 90, 97, 99, 101, 102, 105, 111, 115, 743, 758, 763, 768, 773, 795, 809, 821, 826, 910, 1295, 512, 59, 111, 748, 750, 32768, 8517, 116, 114, 97, 104, 100, 59, 32768, 10513, 99, 121, 59, 32768, 1026, 99, 121, 59, 32768, 1029, 99, 121, 59, 32768, 1039, 768, 103, 114, 115, 780, 786, 790, 103, 101, 114, 59, 32768, 8225, 114, 59, 32768, 8609, 104, 118, 59, 32768, 10980, 512, 97, 121, 800, 806, 114, 111, 110, 59, 32768, 270, 59, 32768, 1044, 108, 512, 59, 116, 815, 817, 32768, 8711, 97, 59, 32768, 916, 114, 59, 32896, 55349, 56583, 512, 97, 102, 831, 897, 512, 99, 109, 836, 891, 114, 105, 116, 105, 99, 97, 108, 1024, 65, 68, 71, 84, 852, 859, 877, 884, 99, 117, 116, 101, 59, 32768, 180, 111, 581, 864, 867, 59, 32768, 729, 98, 108, 101, 65, 99, 117, 116, 101, 59, 32768, 733, 114, 97, 118, 101, 59, 32768, 96, 105, 108, 100, 101, 59, 32768, 732, 111, 110, 100, 59, 32768, 8900, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 32768, 8518, 2113, 920, 0, 0, 0, 925, 946, 0, 1139, 102, 59, 32896, 55349, 56635, 768, 59, 68, 69, 931, 933, 938, 32768, 168, 111, 116, 59, 32768, 8412, 113, 117, 97, 108, 59, 32768, 8784, 98, 108, 101, 1536, 67, 68, 76, 82, 85, 86, 961, 978, 996, 1080, 1101, 1125, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8751, 111, 1093, 985, 0, 0, 988, 59, 32768, 168, 110, 65, 114, 114, 111, 119, 59, 32768, 8659, 512, 101, 111, 1001, 1034, 102, 116, 768, 65, 82, 84, 1010, 1017, 1029, 114, 114, 111, 119, 59, 32768, 8656, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8660, 101, 101, 59, 32768, 10980, 110, 103, 512, 76, 82, 1041, 1068, 101, 102, 116, 512, 65, 82, 1049, 1056, 114, 114, 111, 119, 59, 32768, 10232, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10234, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10233, 105, 103, 104, 116, 512, 65, 84, 1089, 1096, 114, 114, 111, 119, 59, 32768, 8658, 101, 101, 59, 32768, 8872, 112, 1042, 1108, 0, 0, 1115, 114, 114, 111, 119, 59, 32768, 8657, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8661, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8741, 110, 1536, 65, 66, 76, 82, 84, 97, 1152, 1179, 1186, 1236, 1272, 1288, 114, 114, 111, 119, 768, 59, 66, 85, 1163, 1165, 1170, 32768, 8595, 97, 114, 59, 32768, 10515, 112, 65, 114, 114, 111, 119, 59, 32768, 8693, 114, 101, 118, 101, 59, 32768, 785, 101, 102, 116, 1315, 1196, 0, 1209, 0, 1220, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 59, 32768, 10576, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10590, 101, 99, 116, 111, 114, 512, 59, 66, 1229, 1231, 32768, 8637, 97, 114, 59, 32768, 10582, 105, 103, 104, 116, 805, 1245, 0, 1256, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10591, 101, 99, 116, 111, 114, 512, 59, 66, 1265, 1267, 32768, 8641, 97, 114, 59, 32768, 10583, 101, 101, 512, 59, 65, 1279, 1281, 32768, 8868, 114, 114, 111, 119, 59, 32768, 8615, 114, 114, 111, 119, 59, 32768, 8659, 512, 99, 116, 1300, 1305, 114, 59, 32896, 55349, 56479, 114, 111, 107, 59, 32768, 272, 4096, 78, 84, 97, 99, 100, 102, 103, 108, 109, 111, 112, 113, 115, 116, 117, 120, 1344, 1348, 1354, 1363, 1386, 1391, 1396, 1405, 1413, 1460, 1475, 1483, 1514, 1527, 1531, 1538, 71, 59, 32768, 330, 72, 33024, 208, 59, 32768, 208, 99, 117, 116, 101, 33024, 201, 59, 32768, 201, 768, 97, 105, 121, 1370, 1376, 1383, 114, 111, 110, 59, 32768, 282, 114, 99, 33024, 202, 59, 32768, 202, 59, 32768, 1069, 111, 116, 59, 32768, 278, 114, 59, 32896, 55349, 56584, 114, 97, 118, 101, 33024, 200, 59, 32768, 200, 101, 109, 101, 110, 116, 59, 32768, 8712, 512, 97, 112, 1418, 1423, 99, 114, 59, 32768, 274, 116, 121, 1060, 1431, 0, 0, 1444, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9723, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9643, 512, 103, 112, 1465, 1470, 111, 110, 59, 32768, 280, 102, 59, 32896, 55349, 56636, 115, 105, 108, 111, 110, 59, 32768, 917, 117, 512, 97, 105, 1489, 1504, 108, 512, 59, 84, 1495, 1497, 32768, 10869, 105, 108, 100, 101, 59, 32768, 8770, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 8652, 512, 99, 105, 1519, 1523, 114, 59, 32768, 8496, 109, 59, 32768, 10867, 97, 59, 32768, 919, 109, 108, 33024, 203, 59, 32768, 203, 512, 105, 112, 1543, 1549, 115, 116, 115, 59, 32768, 8707, 111, 110, 101, 110, 116, 105, 97, 108, 69, 59, 32768, 8519, 1280, 99, 102, 105, 111, 115, 1572, 1576, 1581, 1620, 1648, 121, 59, 32768, 1060, 114, 59, 32896, 55349, 56585, 108, 108, 101, 100, 1060, 1591, 0, 0, 1604, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9724, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9642, 1601, 1628, 0, 1633, 0, 0, 1639, 102, 59, 32896, 55349, 56637, 65, 108, 108, 59, 32768, 8704, 114, 105, 101, 114, 116, 114, 102, 59, 32768, 8497, 99, 114, 59, 32768, 8497, 3072, 74, 84, 97, 98, 99, 100, 102, 103, 111, 114, 115, 116, 1678, 1683, 1688, 1701, 1708, 1729, 1734, 1739, 1742, 1748, 1828, 1834, 99, 121, 59, 32768, 1027, 33024, 62, 59, 32768, 62, 109, 109, 97, 512, 59, 100, 1696, 1698, 32768, 915, 59, 32768, 988, 114, 101, 118, 101, 59, 32768, 286, 768, 101, 105, 121, 1715, 1721, 1726, 100, 105, 108, 59, 32768, 290, 114, 99, 59, 32768, 284, 59, 32768, 1043, 111, 116, 59, 32768, 288, 114, 59, 32896, 55349, 56586, 59, 32768, 8921, 112, 102, 59, 32896, 55349, 56638, 101, 97, 116, 101, 114, 1536, 69, 70, 71, 76, 83, 84, 1766, 1783, 1794, 1803, 1809, 1821, 113, 117, 97, 108, 512, 59, 76, 1775, 1777, 32768, 8805, 101, 115, 115, 59, 32768, 8923, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8807, 114, 101, 97, 116, 101, 114, 59, 32768, 10914, 101, 115, 115, 59, 32768, 8823, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 10878, 105, 108, 100, 101, 59, 32768, 8819, 99, 114, 59, 32896, 55349, 56482, 59, 32768, 8811, 2048, 65, 97, 99, 102, 105, 111, 115, 117, 1854, 1861, 1874, 1880, 1884, 1897, 1919, 1934, 82, 68, 99, 121, 59, 32768, 1066, 512, 99, 116, 1866, 1871, 101, 107, 59, 32768, 711, 59, 32768, 94, 105, 114, 99, 59, 32768, 292, 114, 59, 32768, 8460, 108, 98, 101, 114, 116, 83, 112, 97, 99, 101, 59, 32768, 8459, 833, 1902, 0, 1906, 102, 59, 32768, 8461, 105, 122, 111, 110, 116, 97, 108, 76, 105, 110, 101, 59, 32768, 9472, 512, 99, 116, 1924, 1928, 114, 59, 32768, 8459, 114, 111, 107, 59, 32768, 294, 109, 112, 533, 1940, 1950, 111, 119, 110, 72, 117, 109, 112, 59, 32768, 8782, 113, 117, 97, 108, 59, 32768, 8783, 3584, 69, 74, 79, 97, 99, 100, 102, 103, 109, 110, 111, 115, 116, 117, 1985, 1990, 1996, 2001, 2010, 2025, 2030, 2034, 2043, 2077, 2134, 2155, 2160, 2167, 99, 121, 59, 32768, 1045, 108, 105, 103, 59, 32768, 306, 99, 121, 59, 32768, 1025, 99, 117, 116, 101, 33024, 205, 59, 32768, 205, 512, 105, 121, 2015, 2022, 114, 99, 33024, 206, 59, 32768, 206, 59, 32768, 1048, 111, 116, 59, 32768, 304, 114, 59, 32768, 8465, 114, 97, 118, 101, 33024, 204, 59, 32768, 204, 768, 59, 97, 112, 2050, 2052, 2070, 32768, 8465, 512, 99, 103, 2057, 2061, 114, 59, 32768, 298, 105, 110, 97, 114, 121, 73, 59, 32768, 8520, 108, 105, 101, 115, 59, 32768, 8658, 837, 2082, 0, 2110, 512, 59, 101, 2086, 2088, 32768, 8748, 512, 103, 114, 2093, 2099, 114, 97, 108, 59, 32768, 8747, 115, 101, 99, 116, 105, 111, 110, 59, 32768, 8898, 105, 115, 105, 98, 108, 101, 512, 67, 84, 2120, 2127, 111, 109, 109, 97, 59, 32768, 8291, 105, 109, 101, 115, 59, 32768, 8290, 768, 103, 112, 116, 2141, 2146, 2151, 111, 110, 59, 32768, 302, 102, 59, 32896, 55349, 56640, 97, 59, 32768, 921, 99, 114, 59, 32768, 8464, 105, 108, 100, 101, 59, 32768, 296, 828, 2172, 0, 2177, 99, 121, 59, 32768, 1030, 108, 33024, 207, 59, 32768, 207, 1280, 99, 102, 111, 115, 117, 2193, 2206, 2211, 2217, 2232, 512, 105, 121, 2198, 2203, 114, 99, 59, 32768, 308, 59, 32768, 1049, 114, 59, 32896, 55349, 56589, 112, 102, 59, 32896, 55349, 56641, 820, 2222, 0, 2227, 114, 59, 32896, 55349, 56485, 114, 99, 121, 59, 32768, 1032, 107, 99, 121, 59, 32768, 1028, 1792, 72, 74, 97, 99, 102, 111, 115, 2253, 2258, 2263, 2269, 2283, 2288, 2294, 99, 121, 59, 32768, 1061, 99, 121, 59, 32768, 1036, 112, 112, 97, 59, 32768, 922, 512, 101, 121, 2274, 2280, 100, 105, 108, 59, 32768, 310, 59, 32768, 1050, 114, 59, 32896, 55349, 56590, 112, 102, 59, 32896, 55349, 56642, 99, 114, 59, 32896, 55349, 56486, 2816, 74, 84, 97, 99, 101, 102, 108, 109, 111, 115, 116, 2323, 2328, 2333, 2374, 2396, 2775, 2780, 2797, 2804, 2934, 2954, 99, 121, 59, 32768, 1033, 33024, 60, 59, 32768, 60, 1280, 99, 109, 110, 112, 114, 2344, 2350, 2356, 2360, 2370, 117, 116, 101, 59, 32768, 313, 98, 100, 97, 59, 32768, 923, 103, 59, 32768, 10218, 108, 97, 99, 101, 116, 114, 102, 59, 32768, 8466, 114, 59, 32768, 8606, 768, 97, 101, 121, 2381, 2387, 2393, 114, 111, 110, 59, 32768, 317, 100, 105, 108, 59, 32768, 315, 59, 32768, 1051, 512, 102, 115, 2401, 2702, 116, 2560, 65, 67, 68, 70, 82, 84, 85, 86, 97, 114, 2423, 2470, 2479, 2530, 2537, 2561, 2618, 2666, 2683, 2690, 512, 110, 114, 2428, 2441, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10216, 114, 111, 119, 768, 59, 66, 82, 2451, 2453, 2458, 32768, 8592, 97, 114, 59, 32768, 8676, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8646, 101, 105, 108, 105, 110, 103, 59, 32768, 8968, 111, 838, 2485, 0, 2498, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10214, 110, 805, 2503, 0, 2514, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10593, 101, 99, 116, 111, 114, 512, 59, 66, 2523, 2525, 32768, 8643, 97, 114, 59, 32768, 10585, 108, 111, 111, 114, 59, 32768, 8970, 105, 103, 104, 116, 512, 65, 86, 2546, 2553, 114, 114, 111, 119, 59, 32768, 8596, 101, 99, 116, 111, 114, 59, 32768, 10574, 512, 101, 114, 2566, 2591, 101, 768, 59, 65, 86, 2574, 2576, 2583, 32768, 8867, 114, 114, 111, 119, 59, 32768, 8612, 101, 99, 116, 111, 114, 59, 32768, 10586, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 2604, 2606, 2611, 32768, 8882, 97, 114, 59, 32768, 10703, 113, 117, 97, 108, 59, 32768, 8884, 112, 768, 68, 84, 86, 2626, 2638, 2649, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 32768, 10577, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10592, 101, 99, 116, 111, 114, 512, 59, 66, 2659, 2661, 32768, 8639, 97, 114, 59, 32768, 10584, 101, 99, 116, 111, 114, 512, 59, 66, 2676, 2678, 32768, 8636, 97, 114, 59, 32768, 10578, 114, 114, 111, 119, 59, 32768, 8656, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8660, 115, 1536, 69, 70, 71, 76, 83, 84, 2716, 2730, 2741, 2750, 2756, 2768, 113, 117, 97, 108, 71, 114, 101, 97, 116, 101, 114, 59, 32768, 8922, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8806, 114, 101, 97, 116, 101, 114, 59, 32768, 8822, 101, 115, 115, 59, 32768, 10913, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 10877, 105, 108, 100, 101, 59, 32768, 8818, 114, 59, 32896, 55349, 56591, 512, 59, 101, 2785, 2787, 32768, 8920, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8666, 105, 100, 111, 116, 59, 32768, 319, 768, 110, 112, 119, 2811, 2899, 2904, 103, 1024, 76, 82, 108, 114, 2821, 2848, 2860, 2887, 101, 102, 116, 512, 65, 82, 2829, 2836, 114, 114, 111, 119, 59, 32768, 10229, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10231, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10230, 101, 102, 116, 512, 97, 114, 2868, 2875, 114, 114, 111, 119, 59, 32768, 10232, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10234, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10233, 102, 59, 32896, 55349, 56643, 101, 114, 512, 76, 82, 2911, 2922, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8601, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8600, 768, 99, 104, 116, 2941, 2945, 2948, 114, 59, 32768, 8466, 59, 32768, 8624, 114, 111, 107, 59, 32768, 321, 59, 32768, 8810, 2048, 97, 99, 101, 102, 105, 111, 115, 117, 2974, 2978, 2982, 3007, 3012, 3022, 3028, 3033, 112, 59, 32768, 10501, 121, 59, 32768, 1052, 512, 100, 108, 2987, 2998, 105, 117, 109, 83, 112, 97, 99, 101, 59, 32768, 8287, 108, 105, 110, 116, 114, 102, 59, 32768, 8499, 114, 59, 32896, 55349, 56592, 110, 117, 115, 80, 108, 117, 115, 59, 32768, 8723, 112, 102, 59, 32896, 55349, 56644, 99, 114, 59, 32768, 8499, 59, 32768, 924, 2304, 74, 97, 99, 101, 102, 111, 115, 116, 117, 3055, 3060, 3067, 3089, 3201, 3206, 3874, 3880, 3889, 99, 121, 59, 32768, 1034, 99, 117, 116, 101, 59, 32768, 323, 768, 97, 101, 121, 3074, 3080, 3086, 114, 111, 110, 59, 32768, 327, 100, 105, 108, 59, 32768, 325, 59, 32768, 1053, 768, 103, 115, 119, 3096, 3160, 3194, 97, 116, 105, 118, 101, 768, 77, 84, 86, 3108, 3121, 3145, 101, 100, 105, 117, 109, 83, 112, 97, 99, 101, 59, 32768, 8203, 104, 105, 512, 99, 110, 3128, 3137, 107, 83, 112, 97, 99, 101, 59, 32768, 8203, 83, 112, 97, 99, 101, 59, 32768, 8203, 101, 114, 121, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 32768, 8203, 116, 101, 100, 512, 71, 76, 3168, 3184, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 32768, 8811, 101, 115, 115, 76, 101, 115, 115, 59, 32768, 8810, 76, 105, 110, 101, 59, 32768, 10, 114, 59, 32896, 55349, 56593, 1024, 66, 110, 112, 116, 3215, 3222, 3238, 3242, 114, 101, 97, 107, 59, 32768, 8288, 66, 114, 101, 97, 107, 105, 110, 103, 83, 112, 97, 99, 101, 59, 32768, 160, 102, 59, 32768, 8469, 3328, 59, 67, 68, 69, 71, 72, 76, 78, 80, 82, 83, 84, 86, 3269, 3271, 3293, 3312, 3352, 3430, 3455, 3551, 3589, 3625, 3678, 3821, 3861, 32768, 10988, 512, 111, 117, 3276, 3286, 110, 103, 114, 117, 101, 110, 116, 59, 32768, 8802, 112, 67, 97, 112, 59, 32768, 8813, 111, 117, 98, 108, 101, 86, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8742, 768, 108, 113, 120, 3319, 3327, 3345, 101, 109, 101, 110, 116, 59, 32768, 8713, 117, 97, 108, 512, 59, 84, 3335, 3337, 32768, 8800, 105, 108, 100, 101, 59, 32896, 8770, 824, 105, 115, 116, 115, 59, 32768, 8708, 114, 101, 97, 116, 101, 114, 1792, 59, 69, 70, 71, 76, 83, 84, 3373, 3375, 3382, 3394, 3404, 3410, 3423, 32768, 8815, 113, 117, 97, 108, 59, 32768, 8817, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32896, 8807, 824, 114, 101, 97, 116, 101, 114, 59, 32896, 8811, 824, 101, 115, 115, 59, 32768, 8825, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32896, 10878, 824, 105, 108, 100, 101, 59, 32768, 8821, 117, 109, 112, 533, 3437, 3448, 111, 119, 110, 72, 117, 109, 112, 59, 32896, 8782, 824, 113, 117, 97, 108, 59, 32896, 8783, 824, 101, 512, 102, 115, 3461, 3492, 116, 84, 114, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 3477, 3479, 3485, 32768, 8938, 97, 114, 59, 32896, 10703, 824, 113, 117, 97, 108, 59, 32768, 8940, 115, 1536, 59, 69, 71, 76, 83, 84, 3506, 3508, 3515, 3524, 3531, 3544, 32768, 8814, 113, 117, 97, 108, 59, 32768, 8816, 114, 101, 97, 116, 101, 114, 59, 32768, 8824, 101, 115, 115, 59, 32896, 8810, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32896, 10877, 824, 105, 108, 100, 101, 59, 32768, 8820, 101, 115, 116, 101, 100, 512, 71, 76, 3561, 3578, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 32896, 10914, 824, 101, 115, 115, 76, 101, 115, 115, 59, 32896, 10913, 824, 114, 101, 99, 101, 100, 101, 115, 768, 59, 69, 83, 3603, 3605, 3613, 32768, 8832, 113, 117, 97, 108, 59, 32896, 10927, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8928, 512, 101, 105, 3630, 3645, 118, 101, 114, 115, 101, 69, 108, 101, 109, 101, 110, 116, 59, 32768, 8716, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 3663, 3665, 3671, 32768, 8939, 97, 114, 59, 32896, 10704, 824, 113, 117, 97, 108, 59, 32768, 8941, 512, 113, 117, 3683, 3732, 117, 97, 114, 101, 83, 117, 512, 98, 112, 3694, 3712, 115, 101, 116, 512, 59, 69, 3702, 3705, 32896, 8847, 824, 113, 117, 97, 108, 59, 32768, 8930, 101, 114, 115, 101, 116, 512, 59, 69, 3722, 3725, 32896, 8848, 824, 113, 117, 97, 108, 59, 32768, 8931, 768, 98, 99, 112, 3739, 3757, 3801, 115, 101, 116, 512, 59, 69, 3747, 3750, 32896, 8834, 8402, 113, 117, 97, 108, 59, 32768, 8840, 99, 101, 101, 100, 115, 1024, 59, 69, 83, 84, 3771, 3773, 3781, 3793, 32768, 8833, 113, 117, 97, 108, 59, 32896, 10928, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8929, 105, 108, 100, 101, 59, 32896, 8831, 824, 101, 114, 115, 101, 116, 512, 59, 69, 3811, 3814, 32896, 8835, 8402, 113, 117, 97, 108, 59, 32768, 8841, 105, 108, 100, 101, 1024, 59, 69, 70, 84, 3834, 3836, 3843, 3854, 32768, 8769, 113, 117, 97, 108, 59, 32768, 8772, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8775, 105, 108, 100, 101, 59, 32768, 8777, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8740, 99, 114, 59, 32896, 55349, 56489, 105, 108, 100, 101, 33024, 209, 59, 32768, 209, 59, 32768, 925, 3584, 69, 97, 99, 100, 102, 103, 109, 111, 112, 114, 115, 116, 117, 118, 3921, 3927, 3936, 3951, 3958, 3963, 3972, 3996, 4002, 4034, 4037, 4055, 4071, 4078, 108, 105, 103, 59, 32768, 338, 99, 117, 116, 101, 33024, 211, 59, 32768, 211, 512, 105, 121, 3941, 3948, 114, 99, 33024, 212, 59, 32768, 212, 59, 32768, 1054, 98, 108, 97, 99, 59, 32768, 336, 114, 59, 32896, 55349, 56594, 114, 97, 118, 101, 33024, 210, 59, 32768, 210, 768, 97, 101, 105, 3979, 3984, 3989, 99, 114, 59, 32768, 332, 103, 97, 59, 32768, 937, 99, 114, 111, 110, 59, 32768, 927, 112, 102, 59, 32896, 55349, 56646, 101, 110, 67, 117, 114, 108, 121, 512, 68, 81, 4014, 4027, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 32768, 8220, 117, 111, 116, 101, 59, 32768, 8216, 59, 32768, 10836, 512, 99, 108, 4042, 4047, 114, 59, 32896, 55349, 56490, 97, 115, 104, 33024, 216, 59, 32768, 216, 105, 573, 4060, 4067, 100, 101, 33024, 213, 59, 32768, 213, 101, 115, 59, 32768, 10807, 109, 108, 33024, 214, 59, 32768, 214, 101, 114, 512, 66, 80, 4085, 4109, 512, 97, 114, 4090, 4094, 114, 59, 32768, 8254, 97, 99, 512, 101, 107, 4101, 4104, 59, 32768, 9182, 101, 116, 59, 32768, 9140, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 32768, 9180, 2304, 97, 99, 102, 104, 105, 108, 111, 114, 115, 4141, 4150, 4154, 4159, 4163, 4166, 4176, 4198, 4284, 114, 116, 105, 97, 108, 68, 59, 32768, 8706, 121, 59, 32768, 1055, 114, 59, 32896, 55349, 56595, 105, 59, 32768, 934, 59, 32768, 928, 117, 115, 77, 105, 110, 117, 115, 59, 32768, 177, 512, 105, 112, 4181, 4194, 110, 99, 97, 114, 101, 112, 108, 97, 110, 101, 59, 32768, 8460, 102, 59, 32768, 8473, 1024, 59, 101, 105, 111, 4207, 4209, 4251, 4256, 32768, 10939, 99, 101, 100, 101, 115, 1024, 59, 69, 83, 84, 4223, 4225, 4232, 4244, 32768, 8826, 113, 117, 97, 108, 59, 32768, 10927, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8828, 105, 108, 100, 101, 59, 32768, 8830, 109, 101, 59, 32768, 8243, 512, 100, 112, 4261, 4267, 117, 99, 116, 59, 32768, 8719, 111, 114, 116, 105, 111, 110, 512, 59, 97, 4278, 4280, 32768, 8759, 108, 59, 32768, 8733, 512, 99, 105, 4289, 4294, 114, 59, 32896, 55349, 56491, 59, 32768, 936, 1024, 85, 102, 111, 115, 4306, 4313, 4318, 4323, 79, 84, 33024, 34, 59, 32768, 34, 114, 59, 32896, 55349, 56596, 112, 102, 59, 32768, 8474, 99, 114, 59, 32896, 55349, 56492, 3072, 66, 69, 97, 99, 101, 102, 104, 105, 111, 114, 115, 117, 4354, 4360, 4366, 4395, 4417, 4473, 4477, 4481, 4743, 4764, 4776, 4788, 97, 114, 114, 59, 32768, 10512, 71, 33024, 174, 59, 32768, 174, 768, 99, 110, 114, 4373, 4379, 4383, 117, 116, 101, 59, 32768, 340, 103, 59, 32768, 10219, 114, 512, 59, 116, 4389, 4391, 32768, 8608, 108, 59, 32768, 10518, 768, 97, 101, 121, 4402, 4408, 4414, 114, 111, 110, 59, 32768, 344, 100, 105, 108, 59, 32768, 342, 59, 32768, 1056, 512, 59, 118, 4422, 4424, 32768, 8476, 101, 114, 115, 101, 512, 69, 85, 4433, 4458, 512, 108, 113, 4438, 4446, 101, 109, 101, 110, 116, 59, 32768, 8715, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 8651, 112, 69, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 10607, 114, 59, 32768, 8476, 111, 59, 32768, 929, 103, 104, 116, 2048, 65, 67, 68, 70, 84, 85, 86, 97, 4501, 4547, 4556, 4607, 4614, 4671, 4719, 4736, 512, 110, 114, 4506, 4519, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10217, 114, 111, 119, 768, 59, 66, 76, 4529, 4531, 4536, 32768, 8594, 97, 114, 59, 32768, 8677, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8644, 101, 105, 108, 105, 110, 103, 59, 32768, 8969, 111, 838, 4562, 0, 4575, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10215, 110, 805, 4580, 0, 4591, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10589, 101, 99, 116, 111, 114, 512, 59, 66, 4600, 4602, 32768, 8642, 97, 114, 59, 32768, 10581, 108, 111, 111, 114, 59, 32768, 8971, 512, 101, 114, 4619, 4644, 101, 768, 59, 65, 86, 4627, 4629, 4636, 32768, 8866, 114, 114, 111, 119, 59, 32768, 8614, 101, 99, 116, 111, 114, 59, 32768, 10587, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 4657, 4659, 4664, 32768, 8883, 97, 114, 59, 32768, 10704, 113, 117, 97, 108, 59, 32768, 8885, 112, 768, 68, 84, 86, 4679, 4691, 4702, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 32768, 10575, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10588, 101, 99, 116, 111, 114, 512, 59, 66, 4712, 4714, 32768, 8638, 97, 114, 59, 32768, 10580, 101, 99, 116, 111, 114, 512, 59, 66, 4729, 4731, 32768, 8640, 97, 114, 59, 32768, 10579, 114, 114, 111, 119, 59, 32768, 8658, 512, 112, 117, 4748, 4752, 102, 59, 32768, 8477, 110, 100, 73, 109, 112, 108, 105, 101, 115, 59, 32768, 10608, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8667, 512, 99, 104, 4781, 4785, 114, 59, 32768, 8475, 59, 32768, 8625, 108, 101, 68, 101, 108, 97, 121, 101, 100, 59, 32768, 10740, 3328, 72, 79, 97, 99, 102, 104, 105, 109, 111, 113, 115, 116, 117, 4827, 4842, 4849, 4856, 4889, 4894, 4949, 4955, 4967, 4973, 5059, 5065, 5070, 512, 67, 99, 4832, 4838, 72, 99, 121, 59, 32768, 1065, 121, 59, 32768, 1064, 70, 84, 99, 121, 59, 32768, 1068, 99, 117, 116, 101, 59, 32768, 346, 1280, 59, 97, 101, 105, 121, 4867, 4869, 4875, 4881, 4886, 32768, 10940, 114, 111, 110, 59, 32768, 352, 100, 105, 108, 59, 32768, 350, 114, 99, 59, 32768, 348, 59, 32768, 1057, 114, 59, 32896, 55349, 56598, 111, 114, 116, 1024, 68, 76, 82, 85, 4906, 4917, 4928, 4940, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8595, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8592, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8594, 112, 65, 114, 114, 111, 119, 59, 32768, 8593, 103, 109, 97, 59, 32768, 931, 97, 108, 108, 67, 105, 114, 99, 108, 101, 59, 32768, 8728, 112, 102, 59, 32896, 55349, 56650, 1091, 4979, 0, 0, 4983, 116, 59, 32768, 8730, 97, 114, 101, 1024, 59, 73, 83, 85, 4994, 4996, 5010, 5052, 32768, 9633, 110, 116, 101, 114, 115, 101, 99, 116, 105, 111, 110, 59, 32768, 8851, 117, 512, 98, 112, 5016, 5033, 115, 101, 116, 512, 59, 69, 5024, 5026, 32768, 8847, 113, 117, 97, 108, 59, 32768, 8849, 101, 114, 115, 101, 116, 512, 59, 69, 5043, 5045, 32768, 8848, 113, 117, 97, 108, 59, 32768, 8850, 110, 105, 111, 110, 59, 32768, 8852, 99, 114, 59, 32896, 55349, 56494, 97, 114, 59, 32768, 8902, 1024, 98, 99, 109, 112, 5079, 5102, 5155, 5158, 512, 59, 115, 5084, 5086, 32768, 8912, 101, 116, 512, 59, 69, 5093, 5095, 32768, 8912, 113, 117, 97, 108, 59, 32768, 8838, 512, 99, 104, 5107, 5148, 101, 101, 100, 115, 1024, 59, 69, 83, 84, 5120, 5122, 5129, 5141, 32768, 8827, 113, 117, 97, 108, 59, 32768, 10928, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8829, 105, 108, 100, 101, 59, 32768, 8831, 84, 104, 97, 116, 59, 32768, 8715, 59, 32768, 8721, 768, 59, 101, 115, 5165, 5167, 5185, 32768, 8913, 114, 115, 101, 116, 512, 59, 69, 5176, 5178, 32768, 8835, 113, 117, 97, 108, 59, 32768, 8839, 101, 116, 59, 32768, 8913, 2816, 72, 82, 83, 97, 99, 102, 104, 105, 111, 114, 115, 5213, 5221, 5227, 5241, 5252, 5274, 5279, 5323, 5362, 5368, 5378, 79, 82, 78, 33024, 222, 59, 32768, 222, 65, 68, 69, 59, 32768, 8482, 512, 72, 99, 5232, 5237, 99, 121, 59, 32768, 1035, 121, 59, 32768, 1062, 512, 98, 117, 5246, 5249, 59, 32768, 9, 59, 32768, 932, 768, 97, 101, 121, 5259, 5265, 5271, 114, 111, 110, 59, 32768, 356, 100, 105, 108, 59, 32768, 354, 59, 32768, 1058, 114, 59, 32896, 55349, 56599, 512, 101, 105, 5284, 5300, 835, 5289, 0, 5297, 101, 102, 111, 114, 101, 59, 32768, 8756, 97, 59, 32768, 920, 512, 99, 110, 5305, 5315, 107, 83, 112, 97, 99, 101, 59, 32896, 8287, 8202, 83, 112, 97, 99, 101, 59, 32768, 8201, 108, 100, 101, 1024, 59, 69, 70, 84, 5335, 5337, 5344, 5355, 32768, 8764, 113, 117, 97, 108, 59, 32768, 8771, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8773, 105, 108, 100, 101, 59, 32768, 8776, 112, 102, 59, 32896, 55349, 56651, 105, 112, 108, 101, 68, 111, 116, 59, 32768, 8411, 512, 99, 116, 5383, 5388, 114, 59, 32896, 55349, 56495, 114, 111, 107, 59, 32768, 358, 5426, 5417, 5444, 5458, 5473, 0, 5480, 5485, 0, 0, 0, 0, 0, 5494, 5500, 5564, 5579, 0, 5726, 5732, 5738, 5745, 512, 99, 114, 5421, 5429, 117, 116, 101, 33024, 218, 59, 32768, 218, 114, 512, 59, 111, 5435, 5437, 32768, 8607, 99, 105, 114, 59, 32768, 10569, 114, 820, 5449, 0, 5453, 121, 59, 32768, 1038, 118, 101, 59, 32768, 364, 512, 105, 121, 5462, 5469, 114, 99, 33024, 219, 59, 32768, 219, 59, 32768, 1059, 98, 108, 97, 99, 59, 32768, 368, 114, 59, 32896, 55349, 56600, 114, 97, 118, 101, 33024, 217, 59, 32768, 217, 97, 99, 114, 59, 32768, 362, 512, 100, 105, 5504, 5548, 101, 114, 512, 66, 80, 5511, 5535, 512, 97, 114, 5516, 5520, 114, 59, 32768, 95, 97, 99, 512, 101, 107, 5527, 5530, 59, 32768, 9183, 101, 116, 59, 32768, 9141, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 32768, 9181, 111, 110, 512, 59, 80, 5555, 5557, 32768, 8899, 108, 117, 115, 59, 32768, 8846, 512, 103, 112, 5568, 5573, 111, 110, 59, 32768, 370, 102, 59, 32896, 55349, 56652, 2048, 65, 68, 69, 84, 97, 100, 112, 115, 5595, 5624, 5635, 5648, 5664, 5671, 5682, 5712, 114, 114, 111, 119, 768, 59, 66, 68, 5606, 5608, 5613, 32768, 8593, 97, 114, 59, 32768, 10514, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8645, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8597, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 10606, 101, 101, 512, 59, 65, 5655, 5657, 32768, 8869, 114, 114, 111, 119, 59, 32768, 8613, 114, 114, 111, 119, 59, 32768, 8657, 111, 119, 110, 97, 114, 114, 111, 119, 59, 32768, 8661, 101, 114, 512, 76, 82, 5689, 5700, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8598, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8599, 105, 512, 59, 108, 5718, 5720, 32768, 978, 111, 110, 59, 32768, 933, 105, 110, 103, 59, 32768, 366, 99, 114, 59, 32896, 55349, 56496, 105, 108, 100, 101, 59, 32768, 360, 109, 108, 33024, 220, 59, 32768, 220, 2304, 68, 98, 99, 100, 101, 102, 111, 115, 118, 5770, 5776, 5781, 5785, 5798, 5878, 5883, 5889, 5895, 97, 115, 104, 59, 32768, 8875, 97, 114, 59, 32768, 10987, 121, 59, 32768, 1042, 97, 115, 104, 512, 59, 108, 5793, 5795, 32768, 8873, 59, 32768, 10982, 512, 101, 114, 5803, 5806, 59, 32768, 8897, 768, 98, 116, 121, 5813, 5818, 5866, 97, 114, 59, 32768, 8214, 512, 59, 105, 5823, 5825, 32768, 8214, 99, 97, 108, 1024, 66, 76, 83, 84, 5837, 5842, 5848, 5859, 97, 114, 59, 32768, 8739, 105, 110, 101, 59, 32768, 124, 101, 112, 97, 114, 97, 116, 111, 114, 59, 32768, 10072, 105, 108, 100, 101, 59, 32768, 8768, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 32768, 8202, 114, 59, 32896, 55349, 56601, 112, 102, 59, 32896, 55349, 56653, 99, 114, 59, 32896, 55349, 56497, 100, 97, 115, 104, 59, 32768, 8874, 1280, 99, 101, 102, 111, 115, 5913, 5919, 5925, 5930, 5936, 105, 114, 99, 59, 32768, 372, 100, 103, 101, 59, 32768, 8896, 114, 59, 32896, 55349, 56602, 112, 102, 59, 32896, 55349, 56654, 99, 114, 59, 32896, 55349, 56498, 1024, 102, 105, 111, 115, 5951, 5956, 5959, 5965, 114, 59, 32896, 55349, 56603, 59, 32768, 926, 112, 102, 59, 32896, 55349, 56655, 99, 114, 59, 32896, 55349, 56499, 2304, 65, 73, 85, 97, 99, 102, 111, 115, 117, 5990, 5995, 6e3, 6005, 6014, 6027, 6032, 6038, 6044, 99, 121, 59, 32768, 1071, 99, 121, 59, 32768, 1031, 99, 121, 59, 32768, 1070, 99, 117, 116, 101, 33024, 221, 59, 32768, 221, 512, 105, 121, 6019, 6024, 114, 99, 59, 32768, 374, 59, 32768, 1067, 114, 59, 32896, 55349, 56604, 112, 102, 59, 32896, 55349, 56656, 99, 114, 59, 32896, 55349, 56500, 109, 108, 59, 32768, 376, 2048, 72, 97, 99, 100, 101, 102, 111, 115, 6066, 6071, 6078, 6092, 6097, 6119, 6123, 6128, 99, 121, 59, 32768, 1046, 99, 117, 116, 101, 59, 32768, 377, 512, 97, 121, 6083, 6089, 114, 111, 110, 59, 32768, 381, 59, 32768, 1047, 111, 116, 59, 32768, 379, 835, 6102, 0, 6116, 111, 87, 105, 100, 116, 104, 83, 112, 97, 99, 101, 59, 32768, 8203, 97, 59, 32768, 918, 114, 59, 32768, 8488, 112, 102, 59, 32768, 8484, 99, 114, 59, 32896, 55349, 56501, 5938, 6159, 6168, 6175, 0, 6214, 6222, 6233, 0, 0, 0, 0, 6242, 6267, 6290, 6429, 6444, 0, 6495, 6503, 6531, 6540, 0, 6547, 99, 117, 116, 101, 33024, 225, 59, 32768, 225, 114, 101, 118, 101, 59, 32768, 259, 1536, 59, 69, 100, 105, 117, 121, 6187, 6189, 6193, 6196, 6203, 6210, 32768, 8766, 59, 32896, 8766, 819, 59, 32768, 8767, 114, 99, 33024, 226, 59, 32768, 226, 116, 101, 33024, 180, 59, 32768, 180, 59, 32768, 1072, 108, 105, 103, 33024, 230, 59, 32768, 230, 512, 59, 114, 6226, 6228, 32768, 8289, 59, 32896, 55349, 56606, 114, 97, 118, 101, 33024, 224, 59, 32768, 224, 512, 101, 112, 6246, 6261, 512, 102, 112, 6251, 6257, 115, 121, 109, 59, 32768, 8501, 104, 59, 32768, 8501, 104, 97, 59, 32768, 945, 512, 97, 112, 6271, 6284, 512, 99, 108, 6276, 6280, 114, 59, 32768, 257, 103, 59, 32768, 10815, 33024, 38, 59, 32768, 38, 1077, 6295, 0, 0, 6326, 1280, 59, 97, 100, 115, 118, 6305, 6307, 6312, 6315, 6322, 32768, 8743, 110, 100, 59, 32768, 10837, 59, 32768, 10844, 108, 111, 112, 101, 59, 32768, 10840, 59, 32768, 10842, 1792, 59, 101, 108, 109, 114, 115, 122, 6340, 6342, 6345, 6349, 6391, 6410, 6422, 32768, 8736, 59, 32768, 10660, 101, 59, 32768, 8736, 115, 100, 512, 59, 97, 6356, 6358, 32768, 8737, 2098, 6368, 6371, 6374, 6377, 6380, 6383, 6386, 6389, 59, 32768, 10664, 59, 32768, 10665, 59, 32768, 10666, 59, 32768, 10667, 59, 32768, 10668, 59, 32768, 10669, 59, 32768, 10670, 59, 32768, 10671, 116, 512, 59, 118, 6397, 6399, 32768, 8735, 98, 512, 59, 100, 6405, 6407, 32768, 8894, 59, 32768, 10653, 512, 112, 116, 6415, 6419, 104, 59, 32768, 8738, 59, 32768, 197, 97, 114, 114, 59, 32768, 9084, 512, 103, 112, 6433, 6438, 111, 110, 59, 32768, 261, 102, 59, 32896, 55349, 56658, 1792, 59, 69, 97, 101, 105, 111, 112, 6458, 6460, 6463, 6469, 6472, 6476, 6480, 32768, 8776, 59, 32768, 10864, 99, 105, 114, 59, 32768, 10863, 59, 32768, 8778, 100, 59, 32768, 8779, 115, 59, 32768, 39, 114, 111, 120, 512, 59, 101, 6488, 6490, 32768, 8776, 113, 59, 32768, 8778, 105, 110, 103, 33024, 229, 59, 32768, 229, 768, 99, 116, 121, 6509, 6514, 6517, 114, 59, 32896, 55349, 56502, 59, 32768, 42, 109, 112, 512, 59, 101, 6524, 6526, 32768, 8776, 113, 59, 32768, 8781, 105, 108, 100, 101, 33024, 227, 59, 32768, 227, 109, 108, 33024, 228, 59, 32768, 228, 512, 99, 105, 6551, 6559, 111, 110, 105, 110, 116, 59, 32768, 8755, 110, 116, 59, 32768, 10769, 4096, 78, 97, 98, 99, 100, 101, 102, 105, 107, 108, 110, 111, 112, 114, 115, 117, 6597, 6602, 6673, 6688, 6701, 6707, 6768, 6773, 6891, 6898, 6999, 7023, 7309, 7316, 7334, 7383, 111, 116, 59, 32768, 10989, 512, 99, 114, 6607, 6652, 107, 1024, 99, 101, 112, 115, 6617, 6623, 6632, 6639, 111, 110, 103, 59, 32768, 8780, 112, 115, 105, 108, 111, 110, 59, 32768, 1014, 114, 105, 109, 101, 59, 32768, 8245, 105, 109, 512, 59, 101, 6646, 6648, 32768, 8765, 113, 59, 32768, 8909, 583, 6656, 6661, 101, 101, 59, 32768, 8893, 101, 100, 512, 59, 103, 6667, 6669, 32768, 8965, 101, 59, 32768, 8965, 114, 107, 512, 59, 116, 6680, 6682, 32768, 9141, 98, 114, 107, 59, 32768, 9142, 512, 111, 121, 6693, 6698, 110, 103, 59, 32768, 8780, 59, 32768, 1073, 113, 117, 111, 59, 32768, 8222, 1280, 99, 109, 112, 114, 116, 6718, 6731, 6738, 6743, 6749, 97, 117, 115, 512, 59, 101, 6726, 6728, 32768, 8757, 59, 32768, 8757, 112, 116, 121, 118, 59, 32768, 10672, 115, 105, 59, 32768, 1014, 110, 111, 117, 59, 32768, 8492, 768, 97, 104, 119, 6756, 6759, 6762, 59, 32768, 946, 59, 32768, 8502, 101, 101, 110, 59, 32768, 8812, 114, 59, 32896, 55349, 56607, 103, 1792, 99, 111, 115, 116, 117, 118, 119, 6789, 6809, 6834, 6850, 6872, 6879, 6884, 768, 97, 105, 117, 6796, 6800, 6805, 112, 59, 32768, 8898, 114, 99, 59, 32768, 9711, 112, 59, 32768, 8899, 768, 100, 112, 116, 6816, 6821, 6827, 111, 116, 59, 32768, 10752, 108, 117, 115, 59, 32768, 10753, 105, 109, 101, 115, 59, 32768, 10754, 1090, 6840, 0, 0, 6846, 99, 117, 112, 59, 32768, 10758, 97, 114, 59, 32768, 9733, 114, 105, 97, 110, 103, 108, 101, 512, 100, 117, 6862, 6868, 111, 119, 110, 59, 32768, 9661, 112, 59, 32768, 9651, 112, 108, 117, 115, 59, 32768, 10756, 101, 101, 59, 32768, 8897, 101, 100, 103, 101, 59, 32768, 8896, 97, 114, 111, 119, 59, 32768, 10509, 768, 97, 107, 111, 6905, 6976, 6994, 512, 99, 110, 6910, 6972, 107, 768, 108, 115, 116, 6918, 6927, 6935, 111, 122, 101, 110, 103, 101, 59, 32768, 10731, 113, 117, 97, 114, 101, 59, 32768, 9642, 114, 105, 97, 110, 103, 108, 101, 1024, 59, 100, 108, 114, 6951, 6953, 6959, 6965, 32768, 9652, 111, 119, 110, 59, 32768, 9662, 101, 102, 116, 59, 32768, 9666, 105, 103, 104, 116, 59, 32768, 9656, 107, 59, 32768, 9251, 770, 6981, 0, 6991, 771, 6985, 0, 6988, 59, 32768, 9618, 59, 32768, 9617, 52, 59, 32768, 9619, 99, 107, 59, 32768, 9608, 512, 101, 111, 7004, 7019, 512, 59, 113, 7009, 7012, 32896, 61, 8421, 117, 105, 118, 59, 32896, 8801, 8421, 116, 59, 32768, 8976, 1024, 112, 116, 119, 120, 7032, 7037, 7049, 7055, 102, 59, 32896, 55349, 56659, 512, 59, 116, 7042, 7044, 32768, 8869, 111, 109, 59, 32768, 8869, 116, 105, 101, 59, 32768, 8904, 3072, 68, 72, 85, 86, 98, 100, 104, 109, 112, 116, 117, 118, 7080, 7101, 7126, 7147, 7182, 7187, 7208, 7233, 7240, 7246, 7253, 7274, 1024, 76, 82, 108, 114, 7089, 7092, 7095, 7098, 59, 32768, 9559, 59, 32768, 9556, 59, 32768, 9558, 59, 32768, 9555, 1280, 59, 68, 85, 100, 117, 7112, 7114, 7117, 7120, 7123, 32768, 9552, 59, 32768, 9574, 59, 32768, 9577, 59, 32768, 9572, 59, 32768, 9575, 1024, 76, 82, 108, 114, 7135, 7138, 7141, 7144, 59, 32768, 9565, 59, 32768, 9562, 59, 32768, 9564, 59, 32768, 9561, 1792, 59, 72, 76, 82, 104, 108, 114, 7162, 7164, 7167, 7170, 7173, 7176, 7179, 32768, 9553, 59, 32768, 9580, 59, 32768, 9571, 59, 32768, 9568, 59, 32768, 9579, 59, 32768, 9570, 59, 32768, 9567, 111, 120, 59, 32768, 10697, 1024, 76, 82, 108, 114, 7196, 7199, 7202, 7205, 59, 32768, 9557, 59, 32768, 9554, 59, 32768, 9488, 59, 32768, 9484, 1280, 59, 68, 85, 100, 117, 7219, 7221, 7224, 7227, 7230, 32768, 9472, 59, 32768, 9573, 59, 32768, 9576, 59, 32768, 9516, 59, 32768, 9524, 105, 110, 117, 115, 59, 32768, 8863, 108, 117, 115, 59, 32768, 8862, 105, 109, 101, 115, 59, 32768, 8864, 1024, 76, 82, 108, 114, 7262, 7265, 7268, 7271, 59, 32768, 9563, 59, 32768, 9560, 59, 32768, 9496, 59, 32768, 9492, 1792, 59, 72, 76, 82, 104, 108, 114, 7289, 7291, 7294, 7297, 7300, 7303, 7306, 32768, 9474, 59, 32768, 9578, 59, 32768, 9569, 59, 32768, 9566, 59, 32768, 9532, 59, 32768, 9508, 59, 32768, 9500, 114, 105, 109, 101, 59, 32768, 8245, 512, 101, 118, 7321, 7326, 118, 101, 59, 32768, 728, 98, 97, 114, 33024, 166, 59, 32768, 166, 1024, 99, 101, 105, 111, 7343, 7348, 7353, 7364, 114, 59, 32896, 55349, 56503, 109, 105, 59, 32768, 8271, 109, 512, 59, 101, 7359, 7361, 32768, 8765, 59, 32768, 8909, 108, 768, 59, 98, 104, 7372, 7374, 7377, 32768, 92, 59, 32768, 10693, 115, 117, 98, 59, 32768, 10184, 573, 7387, 7399, 108, 512, 59, 101, 7392, 7394, 32768, 8226, 116, 59, 32768, 8226, 112, 768, 59, 69, 101, 7406, 7408, 7411, 32768, 8782, 59, 32768, 10926, 512, 59, 113, 7416, 7418, 32768, 8783, 59, 32768, 8783, 6450, 7448, 0, 7523, 7571, 7576, 7613, 0, 7618, 7647, 0, 0, 7764, 0, 0, 7779, 0, 0, 7899, 7914, 7949, 7955, 0, 8158, 0, 8176, 768, 99, 112, 114, 7454, 7460, 7509, 117, 116, 101, 59, 32768, 263, 1536, 59, 97, 98, 99, 100, 115, 7473, 7475, 7480, 7487, 7500, 7505, 32768, 8745, 110, 100, 59, 32768, 10820, 114, 99, 117, 112, 59, 32768, 10825, 512, 97, 117, 7492, 7496, 112, 59, 32768, 10827, 112, 59, 32768, 10823, 111, 116, 59, 32768, 10816, 59, 32896, 8745, 65024, 512, 101, 111, 7514, 7518, 116, 59, 32768, 8257, 110, 59, 32768, 711, 1024, 97, 101, 105, 117, 7531, 7544, 7552, 7557, 833, 7536, 0, 7540, 115, 59, 32768, 10829, 111, 110, 59, 32768, 269, 100, 105, 108, 33024, 231, 59, 32768, 231, 114, 99, 59, 32768, 265, 112, 115, 512, 59, 115, 7564, 7566, 32768, 10828, 109, 59, 32768, 10832, 111, 116, 59, 32768, 267, 768, 100, 109, 110, 7582, 7589, 7596, 105, 108, 33024, 184, 59, 32768, 184, 112, 116, 121, 118, 59, 32768, 10674, 116, 33280, 162, 59, 101, 7603, 7605, 32768, 162, 114, 100, 111, 116, 59, 32768, 183, 114, 59, 32896, 55349, 56608, 768, 99, 101, 105, 7624, 7628, 7643, 121, 59, 32768, 1095, 99, 107, 512, 59, 109, 7635, 7637, 32768, 10003, 97, 114, 107, 59, 32768, 10003, 59, 32768, 967, 114, 1792, 59, 69, 99, 101, 102, 109, 115, 7662, 7664, 7667, 7742, 7745, 7752, 7757, 32768, 9675, 59, 32768, 10691, 768, 59, 101, 108, 7674, 7676, 7680, 32768, 710, 113, 59, 32768, 8791, 101, 1074, 7687, 0, 0, 7709, 114, 114, 111, 119, 512, 108, 114, 7695, 7701, 101, 102, 116, 59, 32768, 8634, 105, 103, 104, 116, 59, 32768, 8635, 1280, 82, 83, 97, 99, 100, 7719, 7722, 7725, 7730, 7736, 59, 32768, 174, 59, 32768, 9416, 115, 116, 59, 32768, 8859, 105, 114, 99, 59, 32768, 8858, 97, 115, 104, 59, 32768, 8861, 59, 32768, 8791, 110, 105, 110, 116, 59, 32768, 10768, 105, 100, 59, 32768, 10991, 99, 105, 114, 59, 32768, 10690, 117, 98, 115, 512, 59, 117, 7771, 7773, 32768, 9827, 105, 116, 59, 32768, 9827, 1341, 7785, 7804, 7850, 0, 7871, 111, 110, 512, 59, 101, 7791, 7793, 32768, 58, 512, 59, 113, 7798, 7800, 32768, 8788, 59, 32768, 8788, 1086, 7809, 0, 0, 7820, 97, 512, 59, 116, 7814, 7816, 32768, 44, 59, 32768, 64, 768, 59, 102, 108, 7826, 7828, 7832, 32768, 8705, 110, 59, 32768, 8728, 101, 512, 109, 120, 7838, 7844, 101, 110, 116, 59, 32768, 8705, 101, 115, 59, 32768, 8450, 824, 7854, 0, 7866, 512, 59, 100, 7858, 7860, 32768, 8773, 111, 116, 59, 32768, 10861, 110, 116, 59, 32768, 8750, 768, 102, 114, 121, 7877, 7881, 7886, 59, 32896, 55349, 56660, 111, 100, 59, 32768, 8720, 33280, 169, 59, 115, 7892, 7894, 32768, 169, 114, 59, 32768, 8471, 512, 97, 111, 7903, 7908, 114, 114, 59, 32768, 8629, 115, 115, 59, 32768, 10007, 512, 99, 117, 7918, 7923, 114, 59, 32896, 55349, 56504, 512, 98, 112, 7928, 7938, 512, 59, 101, 7933, 7935, 32768, 10959, 59, 32768, 10961, 512, 59, 101, 7943, 7945, 32768, 10960, 59, 32768, 10962, 100, 111, 116, 59, 32768, 8943, 1792, 100, 101, 108, 112, 114, 118, 119, 7969, 7983, 7996, 8009, 8057, 8147, 8152, 97, 114, 114, 512, 108, 114, 7977, 7980, 59, 32768, 10552, 59, 32768, 10549, 1089, 7989, 0, 0, 7993, 114, 59, 32768, 8926, 99, 59, 32768, 8927, 97, 114, 114, 512, 59, 112, 8004, 8006, 32768, 8630, 59, 32768, 10557, 1536, 59, 98, 99, 100, 111, 115, 8022, 8024, 8031, 8044, 8049, 8053, 32768, 8746, 114, 99, 97, 112, 59, 32768, 10824, 512, 97, 117, 8036, 8040, 112, 59, 32768, 10822, 112, 59, 32768, 10826, 111, 116, 59, 32768, 8845, 114, 59, 32768, 10821, 59, 32896, 8746, 65024, 1024, 97, 108, 114, 118, 8066, 8078, 8116, 8123, 114, 114, 512, 59, 109, 8073, 8075, 32768, 8631, 59, 32768, 10556, 121, 768, 101, 118, 119, 8086, 8104, 8109, 113, 1089, 8093, 0, 0, 8099, 114, 101, 99, 59, 32768, 8926, 117, 99, 99, 59, 32768, 8927, 101, 101, 59, 32768, 8910, 101, 100, 103, 101, 59, 32768, 8911, 101, 110, 33024, 164, 59, 32768, 164, 101, 97, 114, 114, 111, 119, 512, 108, 114, 8134, 8140, 101, 102, 116, 59, 32768, 8630, 105, 103, 104, 116, 59, 32768, 8631, 101, 101, 59, 32768, 8910, 101, 100, 59, 32768, 8911, 512, 99, 105, 8162, 8170, 111, 110, 105, 110, 116, 59, 32768, 8754, 110, 116, 59, 32768, 8753, 108, 99, 116, 121, 59, 32768, 9005, 4864, 65, 72, 97, 98, 99, 100, 101, 102, 104, 105, 106, 108, 111, 114, 115, 116, 117, 119, 122, 8221, 8226, 8231, 8267, 8282, 8296, 8327, 8351, 8366, 8379, 8466, 8471, 8487, 8621, 8647, 8676, 8697, 8712, 8720, 114, 114, 59, 32768, 8659, 97, 114, 59, 32768, 10597, 1024, 103, 108, 114, 115, 8240, 8246, 8252, 8256, 103, 101, 114, 59, 32768, 8224, 101, 116, 104, 59, 32768, 8504, 114, 59, 32768, 8595, 104, 512, 59, 118, 8262, 8264, 32768, 8208, 59, 32768, 8867, 572, 8271, 8278, 97, 114, 111, 119, 59, 32768, 10511, 97, 99, 59, 32768, 733, 512, 97, 121, 8287, 8293, 114, 111, 110, 59, 32768, 271, 59, 32768, 1076, 768, 59, 97, 111, 8303, 8305, 8320, 32768, 8518, 512, 103, 114, 8310, 8316, 103, 101, 114, 59, 32768, 8225, 114, 59, 32768, 8650, 116, 115, 101, 113, 59, 32768, 10871, 768, 103, 108, 109, 8334, 8339, 8344, 33024, 176, 59, 32768, 176, 116, 97, 59, 32768, 948, 112, 116, 121, 118, 59, 32768, 10673, 512, 105, 114, 8356, 8362, 115, 104, 116, 59, 32768, 10623, 59, 32896, 55349, 56609, 97, 114, 512, 108, 114, 8373, 8376, 59, 32768, 8643, 59, 32768, 8642, 1280, 97, 101, 103, 115, 118, 8390, 8418, 8421, 8428, 8433, 109, 768, 59, 111, 115, 8398, 8400, 8415, 32768, 8900, 110, 100, 512, 59, 115, 8407, 8409, 32768, 8900, 117, 105, 116, 59, 32768, 9830, 59, 32768, 9830, 59, 32768, 168, 97, 109, 109, 97, 59, 32768, 989, 105, 110, 59, 32768, 8946, 768, 59, 105, 111, 8440, 8442, 8461, 32768, 247, 100, 101, 33280, 247, 59, 111, 8450, 8452, 32768, 247, 110, 116, 105, 109, 101, 115, 59, 32768, 8903, 110, 120, 59, 32768, 8903, 99, 121, 59, 32768, 1106, 99, 1088, 8478, 0, 0, 8483, 114, 110, 59, 32768, 8990, 111, 112, 59, 32768, 8973, 1280, 108, 112, 116, 117, 119, 8498, 8504, 8509, 8556, 8570, 108, 97, 114, 59, 32768, 36, 102, 59, 32896, 55349, 56661, 1280, 59, 101, 109, 112, 115, 8520, 8522, 8535, 8542, 8548, 32768, 729, 113, 512, 59, 100, 8528, 8530, 32768, 8784, 111, 116, 59, 32768, 8785, 105, 110, 117, 115, 59, 32768, 8760, 108, 117, 115, 59, 32768, 8724, 113, 117, 97, 114, 101, 59, 32768, 8865, 98, 108, 101, 98, 97, 114, 119, 101, 100, 103, 101, 59, 32768, 8966, 110, 768, 97, 100, 104, 8578, 8585, 8597, 114, 114, 111, 119, 59, 32768, 8595, 111, 119, 110, 97, 114, 114, 111, 119, 115, 59, 32768, 8650, 97, 114, 112, 111, 111, 110, 512, 108, 114, 8608, 8614, 101, 102, 116, 59, 32768, 8643, 105, 103, 104, 116, 59, 32768, 8642, 563, 8625, 8633, 107, 97, 114, 111, 119, 59, 32768, 10512, 1088, 8638, 0, 0, 8643, 114, 110, 59, 32768, 8991, 111, 112, 59, 32768, 8972, 768, 99, 111, 116, 8654, 8666, 8670, 512, 114, 121, 8659, 8663, 59, 32896, 55349, 56505, 59, 32768, 1109, 108, 59, 32768, 10742, 114, 111, 107, 59, 32768, 273, 512, 100, 114, 8681, 8686, 111, 116, 59, 32768, 8945, 105, 512, 59, 102, 8692, 8694, 32768, 9663, 59, 32768, 9662, 512, 97, 104, 8702, 8707, 114, 114, 59, 32768, 8693, 97, 114, 59, 32768, 10607, 97, 110, 103, 108, 101, 59, 32768, 10662, 512, 99, 105, 8725, 8729, 121, 59, 32768, 1119, 103, 114, 97, 114, 114, 59, 32768, 10239, 4608, 68, 97, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 120, 8774, 8788, 8807, 8844, 8849, 8852, 8866, 8895, 8929, 8977, 8989, 9004, 9046, 9136, 9151, 9171, 9184, 9199, 512, 68, 111, 8779, 8784, 111, 116, 59, 32768, 10871, 116, 59, 32768, 8785, 512, 99, 115, 8793, 8801, 117, 116, 101, 33024, 233, 59, 32768, 233, 116, 101, 114, 59, 32768, 10862, 1024, 97, 105, 111, 121, 8816, 8822, 8835, 8841, 114, 111, 110, 59, 32768, 283, 114, 512, 59, 99, 8828, 8830, 32768, 8790, 33024, 234, 59, 32768, 234, 108, 111, 110, 59, 32768, 8789, 59, 32768, 1101, 111, 116, 59, 32768, 279, 59, 32768, 8519, 512, 68, 114, 8857, 8862, 111, 116, 59, 32768, 8786, 59, 32896, 55349, 56610, 768, 59, 114, 115, 8873, 8875, 8883, 32768, 10906, 97, 118, 101, 33024, 232, 59, 32768, 232, 512, 59, 100, 8888, 8890, 32768, 10902, 111, 116, 59, 32768, 10904, 1024, 59, 105, 108, 115, 8904, 8906, 8914, 8917, 32768, 10905, 110, 116, 101, 114, 115, 59, 32768, 9191, 59, 32768, 8467, 512, 59, 100, 8922, 8924, 32768, 10901, 111, 116, 59, 32768, 10903, 768, 97, 112, 115, 8936, 8941, 8960, 99, 114, 59, 32768, 275, 116, 121, 768, 59, 115, 118, 8950, 8952, 8957, 32768, 8709, 101, 116, 59, 32768, 8709, 59, 32768, 8709, 112, 512, 49, 59, 8966, 8975, 516, 8970, 8973, 59, 32768, 8196, 59, 32768, 8197, 32768, 8195, 512, 103, 115, 8982, 8985, 59, 32768, 331, 112, 59, 32768, 8194, 512, 103, 112, 8994, 8999, 111, 110, 59, 32768, 281, 102, 59, 32896, 55349, 56662, 768, 97, 108, 115, 9011, 9023, 9028, 114, 512, 59, 115, 9017, 9019, 32768, 8917, 108, 59, 32768, 10723, 117, 115, 59, 32768, 10865, 105, 768, 59, 108, 118, 9036, 9038, 9043, 32768, 949, 111, 110, 59, 32768, 949, 59, 32768, 1013, 1024, 99, 115, 117, 118, 9055, 9071, 9099, 9128, 512, 105, 111, 9060, 9065, 114, 99, 59, 32768, 8790, 108, 111, 110, 59, 32768, 8789, 1082, 9077, 0, 0, 9081, 109, 59, 32768, 8770, 97, 110, 116, 512, 103, 108, 9088, 9093, 116, 114, 59, 32768, 10902, 101, 115, 115, 59, 32768, 10901, 768, 97, 101, 105, 9106, 9111, 9116, 108, 115, 59, 32768, 61, 115, 116, 59, 32768, 8799, 118, 512, 59, 68, 9122, 9124, 32768, 8801, 68, 59, 32768, 10872, 112, 97, 114, 115, 108, 59, 32768, 10725, 512, 68, 97, 9141, 9146, 111, 116, 59, 32768, 8787, 114, 114, 59, 32768, 10609, 768, 99, 100, 105, 9158, 9162, 9167, 114, 59, 32768, 8495, 111, 116, 59, 32768, 8784, 109, 59, 32768, 8770, 512, 97, 104, 9176, 9179, 59, 32768, 951, 33024, 240, 59, 32768, 240, 512, 109, 114, 9189, 9195, 108, 33024, 235, 59, 32768, 235, 111, 59, 32768, 8364, 768, 99, 105, 112, 9206, 9210, 9215, 108, 59, 32768, 33, 115, 116, 59, 32768, 8707, 512, 101, 111, 9220, 9230, 99, 116, 97, 116, 105, 111, 110, 59, 32768, 8496, 110, 101, 110, 116, 105, 97, 108, 101, 59, 32768, 8519, 4914, 9262, 0, 9276, 0, 9280, 9287, 0, 0, 9318, 9324, 0, 9331, 0, 9352, 9357, 9386, 0, 9395, 9497, 108, 108, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 32768, 8786, 121, 59, 32768, 1092, 109, 97, 108, 101, 59, 32768, 9792, 768, 105, 108, 114, 9293, 9299, 9313, 108, 105, 103, 59, 32768, 64259, 1082, 9305, 0, 0, 9309, 103, 59, 32768, 64256, 105, 103, 59, 32768, 64260, 59, 32896, 55349, 56611, 108, 105, 103, 59, 32768, 64257, 108, 105, 103, 59, 32896, 102, 106, 768, 97, 108, 116, 9337, 9341, 9346, 116, 59, 32768, 9837, 105, 103, 59, 32768, 64258, 110, 115, 59, 32768, 9649, 111, 102, 59, 32768, 402, 833, 9361, 0, 9366, 102, 59, 32896, 55349, 56663, 512, 97, 107, 9370, 9375, 108, 108, 59, 32768, 8704, 512, 59, 118, 9380, 9382, 32768, 8916, 59, 32768, 10969, 97, 114, 116, 105, 110, 116, 59, 32768, 10765, 512, 97, 111, 9399, 9491, 512, 99, 115, 9404, 9487, 1794, 9413, 9443, 9453, 9470, 9474, 0, 9484, 1795, 9421, 9426, 9429, 9434, 9437, 0, 9440, 33024, 189, 59, 32768, 189, 59, 32768, 8531, 33024, 188, 59, 32768, 188, 59, 32768, 8533, 59, 32768, 8537, 59, 32768, 8539, 772, 9447, 0, 9450, 59, 32768, 8532, 59, 32768, 8534, 1285, 9459, 9464, 0, 0, 9467, 33024, 190, 59, 32768, 190, 59, 32768, 8535, 59, 32768, 8540, 53, 59, 32768, 8536, 775, 9478, 0, 9481, 59, 32768, 8538, 59, 32768, 8541, 56, 59, 32768, 8542, 108, 59, 32768, 8260, 119, 110, 59, 32768, 8994, 99, 114, 59, 32896, 55349, 56507, 4352, 69, 97, 98, 99, 100, 101, 102, 103, 105, 106, 108, 110, 111, 114, 115, 116, 118, 9537, 9547, 9575, 9582, 9595, 9600, 9679, 9684, 9694, 9700, 9705, 9725, 9773, 9779, 9785, 9810, 9917, 512, 59, 108, 9542, 9544, 32768, 8807, 59, 32768, 10892, 768, 99, 109, 112, 9554, 9560, 9572, 117, 116, 101, 59, 32768, 501, 109, 97, 512, 59, 100, 9567, 9569, 32768, 947, 59, 32768, 989, 59, 32768, 10886, 114, 101, 118, 101, 59, 32768, 287, 512, 105, 121, 9587, 9592, 114, 99, 59, 32768, 285, 59, 32768, 1075, 111, 116, 59, 32768, 289, 1024, 59, 108, 113, 115, 9609, 9611, 9614, 9633, 32768, 8805, 59, 32768, 8923, 768, 59, 113, 115, 9621, 9623, 9626, 32768, 8805, 59, 32768, 8807, 108, 97, 110, 116, 59, 32768, 10878, 1024, 59, 99, 100, 108, 9642, 9644, 9648, 9667, 32768, 10878, 99, 59, 32768, 10921, 111, 116, 512, 59, 111, 9655, 9657, 32768, 10880, 512, 59, 108, 9662, 9664, 32768, 10882, 59, 32768, 10884, 512, 59, 101, 9672, 9675, 32896, 8923, 65024, 115, 59, 32768, 10900, 114, 59, 32896, 55349, 56612, 512, 59, 103, 9689, 9691, 32768, 8811, 59, 32768, 8921, 109, 101, 108, 59, 32768, 8503, 99, 121, 59, 32768, 1107, 1024, 59, 69, 97, 106, 9714, 9716, 9719, 9722, 32768, 8823, 59, 32768, 10898, 59, 32768, 10917, 59, 32768, 10916, 1024, 69, 97, 101, 115, 9734, 9737, 9751, 9768, 59, 32768, 8809, 112, 512, 59, 112, 9743, 9745, 32768, 10890, 114, 111, 120, 59, 32768, 10890, 512, 59, 113, 9756, 9758, 32768, 10888, 512, 59, 113, 9763, 9765, 32768, 10888, 59, 32768, 8809, 105, 109, 59, 32768, 8935, 112, 102, 59, 32896, 55349, 56664, 97, 118, 101, 59, 32768, 96, 512, 99, 105, 9790, 9794, 114, 59, 32768, 8458, 109, 768, 59, 101, 108, 9802, 9804, 9807, 32768, 8819, 59, 32768, 10894, 59, 32768, 10896, 34304, 62, 59, 99, 100, 108, 113, 114, 9824, 9826, 9838, 9843, 9849, 9856, 32768, 62, 512, 99, 105, 9831, 9834, 59, 32768, 10919, 114, 59, 32768, 10874, 111, 116, 59, 32768, 8919, 80, 97, 114, 59, 32768, 10645, 117, 101, 115, 116, 59, 32768, 10876, 1280, 97, 100, 101, 108, 115, 9867, 9882, 9887, 9906, 9912, 833, 9872, 0, 9879, 112, 114, 111, 120, 59, 32768, 10886, 114, 59, 32768, 10616, 111, 116, 59, 32768, 8919, 113, 512, 108, 113, 9893, 9899, 101, 115, 115, 59, 32768, 8923, 108, 101, 115, 115, 59, 32768, 10892, 101, 115, 115, 59, 32768, 8823, 105, 109, 59, 32768, 8819, 512, 101, 110, 9922, 9932, 114, 116, 110, 101, 113, 113, 59, 32896, 8809, 65024, 69, 59, 32896, 8809, 65024, 2560, 65, 97, 98, 99, 101, 102, 107, 111, 115, 121, 9958, 9963, 10015, 10020, 10026, 10060, 10065, 10085, 10147, 10171, 114, 114, 59, 32768, 8660, 1024, 105, 108, 109, 114, 9972, 9978, 9982, 9988, 114, 115, 112, 59, 32768, 8202, 102, 59, 32768, 189, 105, 108, 116, 59, 32768, 8459, 512, 100, 114, 9993, 9998, 99, 121, 59, 32768, 1098, 768, 59, 99, 119, 10005, 10007, 10012, 32768, 8596, 105, 114, 59, 32768, 10568, 59, 32768, 8621, 97, 114, 59, 32768, 8463, 105, 114, 99, 59, 32768, 293, 768, 97, 108, 114, 10033, 10048, 10054, 114, 116, 115, 512, 59, 117, 10041, 10043, 32768, 9829, 105, 116, 59, 32768, 9829, 108, 105, 112, 59, 32768, 8230, 99, 111, 110, 59, 32768, 8889, 114, 59, 32896, 55349, 56613, 115, 512, 101, 119, 10071, 10078, 97, 114, 111, 119, 59, 32768, 10533, 97, 114, 111, 119, 59, 32768, 10534, 1280, 97, 109, 111, 112, 114, 10096, 10101, 10107, 10136, 10141, 114, 114, 59, 32768, 8703, 116, 104, 116, 59, 32768, 8763, 107, 512, 108, 114, 10113, 10124, 101, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8617, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8618, 102, 59, 32896, 55349, 56665, 98, 97, 114, 59, 32768, 8213, 768, 99, 108, 116, 10154, 10159, 10165, 114, 59, 32896, 55349, 56509, 97, 115, 104, 59, 32768, 8463, 114, 111, 107, 59, 32768, 295, 512, 98, 112, 10176, 10182, 117, 108, 108, 59, 32768, 8259, 104, 101, 110, 59, 32768, 8208, 5426, 10211, 0, 10220, 0, 10239, 10255, 10267, 0, 10276, 10312, 0, 0, 10318, 10371, 10458, 10485, 10491, 0, 10500, 10545, 10558, 99, 117, 116, 101, 33024, 237, 59, 32768, 237, 768, 59, 105, 121, 10226, 10228, 10235, 32768, 8291, 114, 99, 33024, 238, 59, 32768, 238, 59, 32768, 1080, 512, 99, 120, 10243, 10247, 121, 59, 32768, 1077, 99, 108, 33024, 161, 59, 32768, 161, 512, 102, 114, 10259, 10262, 59, 32768, 8660, 59, 32896, 55349, 56614, 114, 97, 118, 101, 33024, 236, 59, 32768, 236, 1024, 59, 105, 110, 111, 10284, 10286, 10300, 10306, 32768, 8520, 512, 105, 110, 10291, 10296, 110, 116, 59, 32768, 10764, 116, 59, 32768, 8749, 102, 105, 110, 59, 32768, 10716, 116, 97, 59, 32768, 8489, 108, 105, 103, 59, 32768, 307, 768, 97, 111, 112, 10324, 10361, 10365, 768, 99, 103, 116, 10331, 10335, 10357, 114, 59, 32768, 299, 768, 101, 108, 112, 10342, 10345, 10351, 59, 32768, 8465, 105, 110, 101, 59, 32768, 8464, 97, 114, 116, 59, 32768, 8465, 104, 59, 32768, 305, 102, 59, 32768, 8887, 101, 100, 59, 32768, 437, 1280, 59, 99, 102, 111, 116, 10381, 10383, 10389, 10403, 10409, 32768, 8712, 97, 114, 101, 59, 32768, 8453, 105, 110, 512, 59, 116, 10396, 10398, 32768, 8734, 105, 101, 59, 32768, 10717, 100, 111, 116, 59, 32768, 305, 1280, 59, 99, 101, 108, 112, 10420, 10422, 10427, 10444, 10451, 32768, 8747, 97, 108, 59, 32768, 8890, 512, 103, 114, 10432, 10438, 101, 114, 115, 59, 32768, 8484, 99, 97, 108, 59, 32768, 8890, 97, 114, 104, 107, 59, 32768, 10775, 114, 111, 100, 59, 32768, 10812, 1024, 99, 103, 112, 116, 10466, 10470, 10475, 10480, 121, 59, 32768, 1105, 111, 110, 59, 32768, 303, 102, 59, 32896, 55349, 56666, 97, 59, 32768, 953, 114, 111, 100, 59, 32768, 10812, 117, 101, 115, 116, 33024, 191, 59, 32768, 191, 512, 99, 105, 10504, 10509, 114, 59, 32896, 55349, 56510, 110, 1280, 59, 69, 100, 115, 118, 10521, 10523, 10526, 10531, 10541, 32768, 8712, 59, 32768, 8953, 111, 116, 59, 32768, 8949, 512, 59, 118, 10536, 10538, 32768, 8948, 59, 32768, 8947, 59, 32768, 8712, 512, 59, 105, 10549, 10551, 32768, 8290, 108, 100, 101, 59, 32768, 297, 828, 10562, 0, 10567, 99, 121, 59, 32768, 1110, 108, 33024, 239, 59, 32768, 239, 1536, 99, 102, 109, 111, 115, 117, 10585, 10598, 10603, 10609, 10615, 10630, 512, 105, 121, 10590, 10595, 114, 99, 59, 32768, 309, 59, 32768, 1081, 114, 59, 32896, 55349, 56615, 97, 116, 104, 59, 32768, 567, 112, 102, 59, 32896, 55349, 56667, 820, 10620, 0, 10625, 114, 59, 32896, 55349, 56511, 114, 99, 121, 59, 32768, 1112, 107, 99, 121, 59, 32768, 1108, 2048, 97, 99, 102, 103, 104, 106, 111, 115, 10653, 10666, 10680, 10685, 10692, 10697, 10702, 10708, 112, 112, 97, 512, 59, 118, 10661, 10663, 32768, 954, 59, 32768, 1008, 512, 101, 121, 10671, 10677, 100, 105, 108, 59, 32768, 311, 59, 32768, 1082, 114, 59, 32896, 55349, 56616, 114, 101, 101, 110, 59, 32768, 312, 99, 121, 59, 32768, 1093, 99, 121, 59, 32768, 1116, 112, 102, 59, 32896, 55349, 56668, 99, 114, 59, 32896, 55349, 56512, 5888, 65, 66, 69, 72, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 10761, 10783, 10789, 10799, 10804, 10957, 11011, 11047, 11094, 11349, 11372, 11382, 11409, 11414, 11451, 11478, 11526, 11698, 11711, 11755, 11823, 11910, 11929, 768, 97, 114, 116, 10768, 10773, 10777, 114, 114, 59, 32768, 8666, 114, 59, 32768, 8656, 97, 105, 108, 59, 32768, 10523, 97, 114, 114, 59, 32768, 10510, 512, 59, 103, 10794, 10796, 32768, 8806, 59, 32768, 10891, 97, 114, 59, 32768, 10594, 4660, 10824, 0, 10830, 0, 10838, 0, 0, 0, 0, 0, 10844, 10850, 0, 10867, 10870, 10877, 0, 10933, 117, 116, 101, 59, 32768, 314, 109, 112, 116, 121, 118, 59, 32768, 10676, 114, 97, 110, 59, 32768, 8466, 98, 100, 97, 59, 32768, 955, 103, 768, 59, 100, 108, 10857, 10859, 10862, 32768, 10216, 59, 32768, 10641, 101, 59, 32768, 10216, 59, 32768, 10885, 117, 111, 33024, 171, 59, 32768, 171, 114, 2048, 59, 98, 102, 104, 108, 112, 115, 116, 10894, 10896, 10907, 10911, 10915, 10919, 10923, 10928, 32768, 8592, 512, 59, 102, 10901, 10903, 32768, 8676, 115, 59, 32768, 10527, 115, 59, 32768, 10525, 107, 59, 32768, 8617, 112, 59, 32768, 8619, 108, 59, 32768, 10553, 105, 109, 59, 32768, 10611, 108, 59, 32768, 8610, 768, 59, 97, 101, 10939, 10941, 10946, 32768, 10923, 105, 108, 59, 32768, 10521, 512, 59, 115, 10951, 10953, 32768, 10925, 59, 32896, 10925, 65024, 768, 97, 98, 114, 10964, 10969, 10974, 114, 114, 59, 32768, 10508, 114, 107, 59, 32768, 10098, 512, 97, 107, 10979, 10991, 99, 512, 101, 107, 10985, 10988, 59, 32768, 123, 59, 32768, 91, 512, 101, 115, 10996, 10999, 59, 32768, 10635, 108, 512, 100, 117, 11005, 11008, 59, 32768, 10639, 59, 32768, 10637, 1024, 97, 101, 117, 121, 11020, 11026, 11040, 11044, 114, 111, 110, 59, 32768, 318, 512, 100, 105, 11031, 11036, 105, 108, 59, 32768, 316, 108, 59, 32768, 8968, 98, 59, 32768, 123, 59, 32768, 1083, 1024, 99, 113, 114, 115, 11056, 11060, 11072, 11090, 97, 59, 32768, 10550, 117, 111, 512, 59, 114, 11067, 11069, 32768, 8220, 59, 32768, 8222, 512, 100, 117, 11077, 11083, 104, 97, 114, 59, 32768, 10599, 115, 104, 97, 114, 59, 32768, 10571, 104, 59, 32768, 8626, 1280, 59, 102, 103, 113, 115, 11105, 11107, 11228, 11231, 11250, 32768, 8804, 116, 1280, 97, 104, 108, 114, 116, 11119, 11136, 11157, 11169, 11216, 114, 114, 111, 119, 512, 59, 116, 11128, 11130, 32768, 8592, 97, 105, 108, 59, 32768, 8610, 97, 114, 112, 111, 111, 110, 512, 100, 117, 11147, 11153, 111, 119, 110, 59, 32768, 8637, 112, 59, 32768, 8636, 101, 102, 116, 97, 114, 114, 111, 119, 115, 59, 32768, 8647, 105, 103, 104, 116, 768, 97, 104, 115, 11180, 11194, 11204, 114, 114, 111, 119, 512, 59, 115, 11189, 11191, 32768, 8596, 59, 32768, 8646, 97, 114, 112, 111, 111, 110, 115, 59, 32768, 8651, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 32768, 8621, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 32768, 8907, 59, 32768, 8922, 768, 59, 113, 115, 11238, 11240, 11243, 32768, 8804, 59, 32768, 8806, 108, 97, 110, 116, 59, 32768, 10877, 1280, 59, 99, 100, 103, 115, 11261, 11263, 11267, 11286, 11298, 32768, 10877, 99, 59, 32768, 10920, 111, 116, 512, 59, 111, 11274, 11276, 32768, 10879, 512, 59, 114, 11281, 11283, 32768, 10881, 59, 32768, 10883, 512, 59, 101, 11291, 11294, 32896, 8922, 65024, 115, 59, 32768, 10899, 1280, 97, 100, 101, 103, 115, 11309, 11317, 11322, 11339, 11344, 112, 112, 114, 111, 120, 59, 32768, 10885, 111, 116, 59, 32768, 8918, 113, 512, 103, 113, 11328, 11333, 116, 114, 59, 32768, 8922, 103, 116, 114, 59, 32768, 10891, 116, 114, 59, 32768, 8822, 105, 109, 59, 32768, 8818, 768, 105, 108, 114, 11356, 11362, 11368, 115, 104, 116, 59, 32768, 10620, 111, 111, 114, 59, 32768, 8970, 59, 32896, 55349, 56617, 512, 59, 69, 11377, 11379, 32768, 8822, 59, 32768, 10897, 562, 11386, 11405, 114, 512, 100, 117, 11391, 11394, 59, 32768, 8637, 512, 59, 108, 11399, 11401, 32768, 8636, 59, 32768, 10602, 108, 107, 59, 32768, 9604, 99, 121, 59, 32768, 1113, 1280, 59, 97, 99, 104, 116, 11425, 11427, 11432, 11440, 11446, 32768, 8810, 114, 114, 59, 32768, 8647, 111, 114, 110, 101, 114, 59, 32768, 8990, 97, 114, 100, 59, 32768, 10603, 114, 105, 59, 32768, 9722, 512, 105, 111, 11456, 11462, 100, 111, 116, 59, 32768, 320, 117, 115, 116, 512, 59, 97, 11470, 11472, 32768, 9136, 99, 104, 101, 59, 32768, 9136, 1024, 69, 97, 101, 115, 11487, 11490, 11504, 11521, 59, 32768, 8808, 112, 512, 59, 112, 11496, 11498, 32768, 10889, 114, 111, 120, 59, 32768, 10889, 512, 59, 113, 11509, 11511, 32768, 10887, 512, 59, 113, 11516, 11518, 32768, 10887, 59, 32768, 8808, 105, 109, 59, 32768, 8934, 2048, 97, 98, 110, 111, 112, 116, 119, 122, 11543, 11556, 11561, 11616, 11640, 11660, 11667, 11680, 512, 110, 114, 11548, 11552, 103, 59, 32768, 10220, 114, 59, 32768, 8701, 114, 107, 59, 32768, 10214, 103, 768, 108, 109, 114, 11569, 11596, 11604, 101, 102, 116, 512, 97, 114, 11577, 11584, 114, 114, 111, 119, 59, 32768, 10229, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10231, 97, 112, 115, 116, 111, 59, 32768, 10236, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10230, 112, 97, 114, 114, 111, 119, 512, 108, 114, 11627, 11633, 101, 102, 116, 59, 32768, 8619, 105, 103, 104, 116, 59, 32768, 8620, 768, 97, 102, 108, 11647, 11651, 11655, 114, 59, 32768, 10629, 59, 32896, 55349, 56669, 117, 115, 59, 32768, 10797, 105, 109, 101, 115, 59, 32768, 10804, 562, 11671, 11676, 115, 116, 59, 32768, 8727, 97, 114, 59, 32768, 95, 768, 59, 101, 102, 11687, 11689, 11695, 32768, 9674, 110, 103, 101, 59, 32768, 9674, 59, 32768, 10731, 97, 114, 512, 59, 108, 11705, 11707, 32768, 40, 116, 59, 32768, 10643, 1280, 97, 99, 104, 109, 116, 11722, 11727, 11735, 11747, 11750, 114, 114, 59, 32768, 8646, 111, 114, 110, 101, 114, 59, 32768, 8991, 97, 114, 512, 59, 100, 11742, 11744, 32768, 8651, 59, 32768, 10605, 59, 32768, 8206, 114, 105, 59, 32768, 8895, 1536, 97, 99, 104, 105, 113, 116, 11768, 11774, 11779, 11782, 11798, 11817, 113, 117, 111, 59, 32768, 8249, 114, 59, 32896, 55349, 56513, 59, 32768, 8624, 109, 768, 59, 101, 103, 11790, 11792, 11795, 32768, 8818, 59, 32768, 10893, 59, 32768, 10895, 512, 98, 117, 11803, 11806, 59, 32768, 91, 111, 512, 59, 114, 11812, 11814, 32768, 8216, 59, 32768, 8218, 114, 111, 107, 59, 32768, 322, 34816, 60, 59, 99, 100, 104, 105, 108, 113, 114, 11841, 11843, 11855, 11860, 11866, 11872, 11878, 11885, 32768, 60, 512, 99, 105, 11848, 11851, 59, 32768, 10918, 114, 59, 32768, 10873, 111, 116, 59, 32768, 8918, 114, 101, 101, 59, 32768, 8907, 109, 101, 115, 59, 32768, 8905, 97, 114, 114, 59, 32768, 10614, 117, 101, 115, 116, 59, 32768, 10875, 512, 80, 105, 11890, 11895, 97, 114, 59, 32768, 10646, 768, 59, 101, 102, 11902, 11904, 11907, 32768, 9667, 59, 32768, 8884, 59, 32768, 9666, 114, 512, 100, 117, 11916, 11923, 115, 104, 97, 114, 59, 32768, 10570, 104, 97, 114, 59, 32768, 10598, 512, 101, 110, 11934, 11944, 114, 116, 110, 101, 113, 113, 59, 32896, 8808, 65024, 69, 59, 32896, 8808, 65024, 3584, 68, 97, 99, 100, 101, 102, 104, 105, 108, 110, 111, 112, 115, 117, 11978, 11984, 12061, 12075, 12081, 12095, 12100, 12104, 12170, 12181, 12188, 12204, 12207, 12223, 68, 111, 116, 59, 32768, 8762, 1024, 99, 108, 112, 114, 11993, 11999, 12019, 12055, 114, 33024, 175, 59, 32768, 175, 512, 101, 116, 12004, 12007, 59, 32768, 9794, 512, 59, 101, 12012, 12014, 32768, 10016, 115, 101, 59, 32768, 10016, 512, 59, 115, 12024, 12026, 32768, 8614, 116, 111, 1024, 59, 100, 108, 117, 12037, 12039, 12045, 12051, 32768, 8614, 111, 119, 110, 59, 32768, 8615, 101, 102, 116, 59, 32768, 8612, 112, 59, 32768, 8613, 107, 101, 114, 59, 32768, 9646, 512, 111, 121, 12066, 12072, 109, 109, 97, 59, 32768, 10793, 59, 32768, 1084, 97, 115, 104, 59, 32768, 8212, 97, 115, 117, 114, 101, 100, 97, 110, 103, 108, 101, 59, 32768, 8737, 114, 59, 32896, 55349, 56618, 111, 59, 32768, 8487, 768, 99, 100, 110, 12111, 12118, 12146, 114, 111, 33024, 181, 59, 32768, 181, 1024, 59, 97, 99, 100, 12127, 12129, 12134, 12139, 32768, 8739, 115, 116, 59, 32768, 42, 105, 114, 59, 32768, 10992, 111, 116, 33024, 183, 59, 32768, 183, 117, 115, 768, 59, 98, 100, 12155, 12157, 12160, 32768, 8722, 59, 32768, 8863, 512, 59, 117, 12165, 12167, 32768, 8760, 59, 32768, 10794, 564, 12174, 12178, 112, 59, 32768, 10971, 114, 59, 32768, 8230, 112, 108, 117, 115, 59, 32768, 8723, 512, 100, 112, 12193, 12199, 101, 108, 115, 59, 32768, 8871, 102, 59, 32896, 55349, 56670, 59, 32768, 8723, 512, 99, 116, 12212, 12217, 114, 59, 32896, 55349, 56514, 112, 111, 115, 59, 32768, 8766, 768, 59, 108, 109, 12230, 12232, 12240, 32768, 956, 116, 105, 109, 97, 112, 59, 32768, 8888, 97, 112, 59, 32768, 8888, 6144, 71, 76, 82, 86, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 12294, 12315, 12364, 12376, 12393, 12472, 12496, 12547, 12553, 12636, 12641, 12703, 12725, 12747, 12752, 12876, 12881, 12957, 13033, 13089, 13294, 13359, 13384, 13499, 512, 103, 116, 12299, 12303, 59, 32896, 8921, 824, 512, 59, 118, 12308, 12311, 32896, 8811, 8402, 59, 32896, 8811, 824, 768, 101, 108, 116, 12322, 12348, 12352, 102, 116, 512, 97, 114, 12329, 12336, 114, 114, 111, 119, 59, 32768, 8653, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8654, 59, 32896, 8920, 824, 512, 59, 118, 12357, 12360, 32896, 8810, 8402, 59, 32896, 8810, 824, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8655, 512, 68, 100, 12381, 12387, 97, 115, 104, 59, 32768, 8879, 97, 115, 104, 59, 32768, 8878, 1280, 98, 99, 110, 112, 116, 12404, 12409, 12415, 12420, 12452, 108, 97, 59, 32768, 8711, 117, 116, 101, 59, 32768, 324, 103, 59, 32896, 8736, 8402, 1280, 59, 69, 105, 111, 112, 12431, 12433, 12437, 12442, 12446, 32768, 8777, 59, 32896, 10864, 824, 100, 59, 32896, 8779, 824, 115, 59, 32768, 329, 114, 111, 120, 59, 32768, 8777, 117, 114, 512, 59, 97, 12459, 12461, 32768, 9838, 108, 512, 59, 115, 12467, 12469, 32768, 9838, 59, 32768, 8469, 836, 12477, 0, 12483, 112, 33024, 160, 59, 32768, 160, 109, 112, 512, 59, 101, 12489, 12492, 32896, 8782, 824, 59, 32896, 8783, 824, 1280, 97, 101, 111, 117, 121, 12507, 12519, 12525, 12540, 12544, 833, 12512, 0, 12515, 59, 32768, 10819, 111, 110, 59, 32768, 328, 100, 105, 108, 59, 32768, 326, 110, 103, 512, 59, 100, 12532, 12534, 32768, 8775, 111, 116, 59, 32896, 10861, 824, 112, 59, 32768, 10818, 59, 32768, 1085, 97, 115, 104, 59, 32768, 8211, 1792, 59, 65, 97, 100, 113, 115, 120, 12568, 12570, 12575, 12596, 12602, 12608, 12623, 32768, 8800, 114, 114, 59, 32768, 8663, 114, 512, 104, 114, 12581, 12585, 107, 59, 32768, 10532, 512, 59, 111, 12590, 12592, 32768, 8599, 119, 59, 32768, 8599, 111, 116, 59, 32896, 8784, 824, 117, 105, 118, 59, 32768, 8802, 512, 101, 105, 12613, 12618, 97, 114, 59, 32768, 10536, 109, 59, 32896, 8770, 824, 105, 115, 116, 512, 59, 115, 12631, 12633, 32768, 8708, 59, 32768, 8708, 114, 59, 32896, 55349, 56619, 1024, 69, 101, 115, 116, 12650, 12654, 12688, 12693, 59, 32896, 8807, 824, 768, 59, 113, 115, 12661, 12663, 12684, 32768, 8817, 768, 59, 113, 115, 12670, 12672, 12676, 32768, 8817, 59, 32896, 8807, 824, 108, 97, 110, 116, 59, 32896, 10878, 824, 59, 32896, 10878, 824, 105, 109, 59, 32768, 8821, 512, 59, 114, 12698, 12700, 32768, 8815, 59, 32768, 8815, 768, 65, 97, 112, 12710, 12715, 12720, 114, 114, 59, 32768, 8654, 114, 114, 59, 32768, 8622, 97, 114, 59, 32768, 10994, 768, 59, 115, 118, 12732, 12734, 12744, 32768, 8715, 512, 59, 100, 12739, 12741, 32768, 8956, 59, 32768, 8954, 59, 32768, 8715, 99, 121, 59, 32768, 1114, 1792, 65, 69, 97, 100, 101, 115, 116, 12767, 12772, 12776, 12781, 12785, 12853, 12858, 114, 114, 59, 32768, 8653, 59, 32896, 8806, 824, 114, 114, 59, 32768, 8602, 114, 59, 32768, 8229, 1024, 59, 102, 113, 115, 12794, 12796, 12821, 12842, 32768, 8816, 116, 512, 97, 114, 12802, 12809, 114, 114, 111, 119, 59, 32768, 8602, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8622, 768, 59, 113, 115, 12828, 12830, 12834, 32768, 8816, 59, 32896, 8806, 824, 108, 97, 110, 116, 59, 32896, 10877, 824, 512, 59, 115, 12847, 12850, 32896, 10877, 824, 59, 32768, 8814, 105, 109, 59, 32768, 8820, 512, 59, 114, 12863, 12865, 32768, 8814, 105, 512, 59, 101, 12871, 12873, 32768, 8938, 59, 32768, 8940, 105, 100, 59, 32768, 8740, 512, 112, 116, 12886, 12891, 102, 59, 32896, 55349, 56671, 33536, 172, 59, 105, 110, 12899, 12901, 12936, 32768, 172, 110, 1024, 59, 69, 100, 118, 12911, 12913, 12917, 12923, 32768, 8713, 59, 32896, 8953, 824, 111, 116, 59, 32896, 8949, 824, 818, 12928, 12931, 12934, 59, 32768, 8713, 59, 32768, 8951, 59, 32768, 8950, 105, 512, 59, 118, 12942, 12944, 32768, 8716, 818, 12949, 12952, 12955, 59, 32768, 8716, 59, 32768, 8958, 59, 32768, 8957, 768, 97, 111, 114, 12964, 12992, 12999, 114, 1024, 59, 97, 115, 116, 12974, 12976, 12983, 12988, 32768, 8742, 108, 108, 101, 108, 59, 32768, 8742, 108, 59, 32896, 11005, 8421, 59, 32896, 8706, 824, 108, 105, 110, 116, 59, 32768, 10772, 768, 59, 99, 101, 13006, 13008, 13013, 32768, 8832, 117, 101, 59, 32768, 8928, 512, 59, 99, 13018, 13021, 32896, 10927, 824, 512, 59, 101, 13026, 13028, 32768, 8832, 113, 59, 32896, 10927, 824, 1024, 65, 97, 105, 116, 13042, 13047, 13066, 13077, 114, 114, 59, 32768, 8655, 114, 114, 768, 59, 99, 119, 13056, 13058, 13062, 32768, 8603, 59, 32896, 10547, 824, 59, 32896, 8605, 824, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8603, 114, 105, 512, 59, 101, 13084, 13086, 32768, 8939, 59, 32768, 8941, 1792, 99, 104, 105, 109, 112, 113, 117, 13104, 13128, 13151, 13169, 13174, 13179, 13194, 1024, 59, 99, 101, 114, 13113, 13115, 13120, 13124, 32768, 8833, 117, 101, 59, 32768, 8929, 59, 32896, 10928, 824, 59, 32896, 55349, 56515, 111, 114, 116, 1086, 13137, 0, 0, 13142, 105, 100, 59, 32768, 8740, 97, 114, 97, 108, 108, 101, 108, 59, 32768, 8742, 109, 512, 59, 101, 13157, 13159, 32768, 8769, 512, 59, 113, 13164, 13166, 32768, 8772, 59, 32768, 8772, 105, 100, 59, 32768, 8740, 97, 114, 59, 32768, 8742, 115, 117, 512, 98, 112, 13186, 13190, 101, 59, 32768, 8930, 101, 59, 32768, 8931, 768, 98, 99, 112, 13201, 13241, 13254, 1024, 59, 69, 101, 115, 13210, 13212, 13216, 13219, 32768, 8836, 59, 32896, 10949, 824, 59, 32768, 8840, 101, 116, 512, 59, 101, 13226, 13229, 32896, 8834, 8402, 113, 512, 59, 113, 13235, 13237, 32768, 8840, 59, 32896, 10949, 824, 99, 512, 59, 101, 13247, 13249, 32768, 8833, 113, 59, 32896, 10928, 824, 1024, 59, 69, 101, 115, 13263, 13265, 13269, 13272, 32768, 8837, 59, 32896, 10950, 824, 59, 32768, 8841, 101, 116, 512, 59, 101, 13279, 13282, 32896, 8835, 8402, 113, 512, 59, 113, 13288, 13290, 32768, 8841, 59, 32896, 10950, 824, 1024, 103, 105, 108, 114, 13303, 13307, 13315, 13319, 108, 59, 32768, 8825, 108, 100, 101, 33024, 241, 59, 32768, 241, 103, 59, 32768, 8824, 105, 97, 110, 103, 108, 101, 512, 108, 114, 13330, 13344, 101, 102, 116, 512, 59, 101, 13338, 13340, 32768, 8938, 113, 59, 32768, 8940, 105, 103, 104, 116, 512, 59, 101, 13353, 13355, 32768, 8939, 113, 59, 32768, 8941, 512, 59, 109, 13364, 13366, 32768, 957, 768, 59, 101, 115, 13373, 13375, 13380, 32768, 35, 114, 111, 59, 32768, 8470, 112, 59, 32768, 8199, 2304, 68, 72, 97, 100, 103, 105, 108, 114, 115, 13403, 13409, 13415, 13420, 13426, 13439, 13446, 13476, 13493, 97, 115, 104, 59, 32768, 8877, 97, 114, 114, 59, 32768, 10500, 112, 59, 32896, 8781, 8402, 97, 115, 104, 59, 32768, 8876, 512, 101, 116, 13431, 13435, 59, 32896, 8805, 8402, 59, 32896, 62, 8402, 110, 102, 105, 110, 59, 32768, 10718, 768, 65, 101, 116, 13453, 13458, 13462, 114, 114, 59, 32768, 10498, 59, 32896, 8804, 8402, 512, 59, 114, 13467, 13470, 32896, 60, 8402, 105, 101, 59, 32896, 8884, 8402, 512, 65, 116, 13481, 13486, 114, 114, 59, 32768, 10499, 114, 105, 101, 59, 32896, 8885, 8402, 105, 109, 59, 32896, 8764, 8402, 768, 65, 97, 110, 13506, 13511, 13532, 114, 114, 59, 32768, 8662, 114, 512, 104, 114, 13517, 13521, 107, 59, 32768, 10531, 512, 59, 111, 13526, 13528, 32768, 8598, 119, 59, 32768, 8598, 101, 97, 114, 59, 32768, 10535, 9252, 13576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13579, 0, 13596, 13617, 13653, 13659, 13673, 13695, 13708, 0, 0, 13713, 13750, 0, 13788, 13794, 0, 13815, 13890, 13913, 13937, 13944, 59, 32768, 9416, 512, 99, 115, 13583, 13591, 117, 116, 101, 33024, 243, 59, 32768, 243, 116, 59, 32768, 8859, 512, 105, 121, 13600, 13613, 114, 512, 59, 99, 13606, 13608, 32768, 8858, 33024, 244, 59, 32768, 244, 59, 32768, 1086, 1280, 97, 98, 105, 111, 115, 13627, 13632, 13638, 13642, 13646, 115, 104, 59, 32768, 8861, 108, 97, 99, 59, 32768, 337, 118, 59, 32768, 10808, 116, 59, 32768, 8857, 111, 108, 100, 59, 32768, 10684, 108, 105, 103, 59, 32768, 339, 512, 99, 114, 13663, 13668, 105, 114, 59, 32768, 10687, 59, 32896, 55349, 56620, 1600, 13680, 0, 0, 13684, 0, 13692, 110, 59, 32768, 731, 97, 118, 101, 33024, 242, 59, 32768, 242, 59, 32768, 10689, 512, 98, 109, 13699, 13704, 97, 114, 59, 32768, 10677, 59, 32768, 937, 110, 116, 59, 32768, 8750, 1024, 97, 99, 105, 116, 13721, 13726, 13741, 13746, 114, 114, 59, 32768, 8634, 512, 105, 114, 13731, 13735, 114, 59, 32768, 10686, 111, 115, 115, 59, 32768, 10683, 110, 101, 59, 32768, 8254, 59, 32768, 10688, 768, 97, 101, 105, 13756, 13761, 13766, 99, 114, 59, 32768, 333, 103, 97, 59, 32768, 969, 768, 99, 100, 110, 13773, 13779, 13782, 114, 111, 110, 59, 32768, 959, 59, 32768, 10678, 117, 115, 59, 32768, 8854, 112, 102, 59, 32896, 55349, 56672, 768, 97, 101, 108, 13800, 13804, 13809, 114, 59, 32768, 10679, 114, 112, 59, 32768, 10681, 117, 115, 59, 32768, 8853, 1792, 59, 97, 100, 105, 111, 115, 118, 13829, 13831, 13836, 13869, 13875, 13879, 13886, 32768, 8744, 114, 114, 59, 32768, 8635, 1024, 59, 101, 102, 109, 13845, 13847, 13859, 13864, 32768, 10845, 114, 512, 59, 111, 13853, 13855, 32768, 8500, 102, 59, 32768, 8500, 33024, 170, 59, 32768, 170, 33024, 186, 59, 32768, 186, 103, 111, 102, 59, 32768, 8886, 114, 59, 32768, 10838, 108, 111, 112, 101, 59, 32768, 10839, 59, 32768, 10843, 768, 99, 108, 111, 13896, 13900, 13908, 114, 59, 32768, 8500, 97, 115, 104, 33024, 248, 59, 32768, 248, 108, 59, 32768, 8856, 105, 573, 13917, 13924, 100, 101, 33024, 245, 59, 32768, 245, 101, 115, 512, 59, 97, 13930, 13932, 32768, 8855, 115, 59, 32768, 10806, 109, 108, 33024, 246, 59, 32768, 246, 98, 97, 114, 59, 32768, 9021, 5426, 13972, 0, 14013, 0, 14017, 14053, 0, 14058, 14086, 0, 0, 14107, 14199, 0, 14202, 0, 0, 14229, 14425, 0, 14438, 114, 1024, 59, 97, 115, 116, 13981, 13983, 13997, 14009, 32768, 8741, 33280, 182, 59, 108, 13989, 13991, 32768, 182, 108, 101, 108, 59, 32768, 8741, 1082, 14003, 0, 0, 14007, 109, 59, 32768, 10995, 59, 32768, 11005, 59, 32768, 8706, 121, 59, 32768, 1087, 114, 1280, 99, 105, 109, 112, 116, 14028, 14033, 14038, 14043, 14046, 110, 116, 59, 32768, 37, 111, 100, 59, 32768, 46, 105, 108, 59, 32768, 8240, 59, 32768, 8869, 101, 110, 107, 59, 32768, 8241, 114, 59, 32896, 55349, 56621, 768, 105, 109, 111, 14064, 14074, 14080, 512, 59, 118, 14069, 14071, 32768, 966, 59, 32768, 981, 109, 97, 116, 59, 32768, 8499, 110, 101, 59, 32768, 9742, 768, 59, 116, 118, 14092, 14094, 14103, 32768, 960, 99, 104, 102, 111, 114, 107, 59, 32768, 8916, 59, 32768, 982, 512, 97, 117, 14111, 14132, 110, 512, 99, 107, 14117, 14128, 107, 512, 59, 104, 14123, 14125, 32768, 8463, 59, 32768, 8462, 118, 59, 32768, 8463, 115, 2304, 59, 97, 98, 99, 100, 101, 109, 115, 116, 14152, 14154, 14160, 14163, 14168, 14179, 14182, 14188, 14193, 32768, 43, 99, 105, 114, 59, 32768, 10787, 59, 32768, 8862, 105, 114, 59, 32768, 10786, 512, 111, 117, 14173, 14176, 59, 32768, 8724, 59, 32768, 10789, 59, 32768, 10866, 110, 33024, 177, 59, 32768, 177, 105, 109, 59, 32768, 10790, 119, 111, 59, 32768, 10791, 59, 32768, 177, 768, 105, 112, 117, 14208, 14216, 14221, 110, 116, 105, 110, 116, 59, 32768, 10773, 102, 59, 32896, 55349, 56673, 110, 100, 33024, 163, 59, 32768, 163, 2560, 59, 69, 97, 99, 101, 105, 110, 111, 115, 117, 14249, 14251, 14254, 14258, 14263, 14336, 14348, 14367, 14413, 14418, 32768, 8826, 59, 32768, 10931, 112, 59, 32768, 10935, 117, 101, 59, 32768, 8828, 512, 59, 99, 14268, 14270, 32768, 10927, 1536, 59, 97, 99, 101, 110, 115, 14283, 14285, 14293, 14302, 14306, 14331, 32768, 8826, 112, 112, 114, 111, 120, 59, 32768, 10935, 117, 114, 108, 121, 101, 113, 59, 32768, 8828, 113, 59, 32768, 10927, 768, 97, 101, 115, 14313, 14321, 14326, 112, 112, 114, 111, 120, 59, 32768, 10937, 113, 113, 59, 32768, 10933, 105, 109, 59, 32768, 8936, 105, 109, 59, 32768, 8830, 109, 101, 512, 59, 115, 14343, 14345, 32768, 8242, 59, 32768, 8473, 768, 69, 97, 115, 14355, 14358, 14362, 59, 32768, 10933, 112, 59, 32768, 10937, 105, 109, 59, 32768, 8936, 768, 100, 102, 112, 14374, 14377, 14402, 59, 32768, 8719, 768, 97, 108, 115, 14384, 14390, 14396, 108, 97, 114, 59, 32768, 9006, 105, 110, 101, 59, 32768, 8978, 117, 114, 102, 59, 32768, 8979, 512, 59, 116, 14407, 14409, 32768, 8733, 111, 59, 32768, 8733, 105, 109, 59, 32768, 8830, 114, 101, 108, 59, 32768, 8880, 512, 99, 105, 14429, 14434, 114, 59, 32896, 55349, 56517, 59, 32768, 968, 110, 99, 115, 112, 59, 32768, 8200, 1536, 102, 105, 111, 112, 115, 117, 14457, 14462, 14467, 14473, 14480, 14486, 114, 59, 32896, 55349, 56622, 110, 116, 59, 32768, 10764, 112, 102, 59, 32896, 55349, 56674, 114, 105, 109, 101, 59, 32768, 8279, 99, 114, 59, 32896, 55349, 56518, 768, 97, 101, 111, 14493, 14513, 14526, 116, 512, 101, 105, 14499, 14508, 114, 110, 105, 111, 110, 115, 59, 32768, 8461, 110, 116, 59, 32768, 10774, 115, 116, 512, 59, 101, 14520, 14522, 32768, 63, 113, 59, 32768, 8799, 116, 33024, 34, 59, 32768, 34, 5376, 65, 66, 72, 97, 98, 99, 100, 101, 102, 104, 105, 108, 109, 110, 111, 112, 114, 115, 116, 117, 120, 14575, 14597, 14603, 14608, 14775, 14829, 14865, 14901, 14943, 14966, 15e3, 15139, 15159, 15176, 15182, 15236, 15261, 15267, 15309, 15352, 15360, 768, 97, 114, 116, 14582, 14587, 14591, 114, 114, 59, 32768, 8667, 114, 59, 32768, 8658, 97, 105, 108, 59, 32768, 10524, 97, 114, 114, 59, 32768, 10511, 97, 114, 59, 32768, 10596, 1792, 99, 100, 101, 110, 113, 114, 116, 14623, 14637, 14642, 14650, 14672, 14679, 14751, 512, 101, 117, 14628, 14632, 59, 32896, 8765, 817, 116, 101, 59, 32768, 341, 105, 99, 59, 32768, 8730, 109, 112, 116, 121, 118, 59, 32768, 10675, 103, 1024, 59, 100, 101, 108, 14660, 14662, 14665, 14668, 32768, 10217, 59, 32768, 10642, 59, 32768, 10661, 101, 59, 32768, 10217, 117, 111, 33024, 187, 59, 32768, 187, 114, 2816, 59, 97, 98, 99, 102, 104, 108, 112, 115, 116, 119, 14703, 14705, 14709, 14720, 14723, 14727, 14731, 14735, 14739, 14744, 14748, 32768, 8594, 112, 59, 32768, 10613, 512, 59, 102, 14714, 14716, 32768, 8677, 115, 59, 32768, 10528, 59, 32768, 10547, 115, 59, 32768, 10526, 107, 59, 32768, 8618, 112, 59, 32768, 8620, 108, 59, 32768, 10565, 105, 109, 59, 32768, 10612, 108, 59, 32768, 8611, 59, 32768, 8605, 512, 97, 105, 14756, 14761, 105, 108, 59, 32768, 10522, 111, 512, 59, 110, 14767, 14769, 32768, 8758, 97, 108, 115, 59, 32768, 8474, 768, 97, 98, 114, 14782, 14787, 14792, 114, 114, 59, 32768, 10509, 114, 107, 59, 32768, 10099, 512, 97, 107, 14797, 14809, 99, 512, 101, 107, 14803, 14806, 59, 32768, 125, 59, 32768, 93, 512, 101, 115, 14814, 14817, 59, 32768, 10636, 108, 512, 100, 117, 14823, 14826, 59, 32768, 10638, 59, 32768, 10640, 1024, 97, 101, 117, 121, 14838, 14844, 14858, 14862, 114, 111, 110, 59, 32768, 345, 512, 100, 105, 14849, 14854, 105, 108, 59, 32768, 343, 108, 59, 32768, 8969, 98, 59, 32768, 125, 59, 32768, 1088, 1024, 99, 108, 113, 115, 14874, 14878, 14885, 14897, 97, 59, 32768, 10551, 100, 104, 97, 114, 59, 32768, 10601, 117, 111, 512, 59, 114, 14892, 14894, 32768, 8221, 59, 32768, 8221, 104, 59, 32768, 8627, 768, 97, 99, 103, 14908, 14934, 14938, 108, 1024, 59, 105, 112, 115, 14918, 14920, 14925, 14931, 32768, 8476, 110, 101, 59, 32768, 8475, 97, 114, 116, 59, 32768, 8476, 59, 32768, 8477, 116, 59, 32768, 9645, 33024, 174, 59, 32768, 174, 768, 105, 108, 114, 14950, 14956, 14962, 115, 104, 116, 59, 32768, 10621, 111, 111, 114, 59, 32768, 8971, 59, 32896, 55349, 56623, 512, 97, 111, 14971, 14990, 114, 512, 100, 117, 14977, 14980, 59, 32768, 8641, 512, 59, 108, 14985, 14987, 32768, 8640, 59, 32768, 10604, 512, 59, 118, 14995, 14997, 32768, 961, 59, 32768, 1009, 768, 103, 110, 115, 15007, 15123, 15127, 104, 116, 1536, 97, 104, 108, 114, 115, 116, 15022, 15039, 15060, 15086, 15099, 15111, 114, 114, 111, 119, 512, 59, 116, 15031, 15033, 32768, 8594, 97, 105, 108, 59, 32768, 8611, 97, 114, 112, 111, 111, 110, 512, 100, 117, 15050, 15056, 111, 119, 110, 59, 32768, 8641, 112, 59, 32768, 8640, 101, 102, 116, 512, 97, 104, 15068, 15076, 114, 114, 111, 119, 115, 59, 32768, 8644, 97, 114, 112, 111, 111, 110, 115, 59, 32768, 8652, 105, 103, 104, 116, 97, 114, 114, 111, 119, 115, 59, 32768, 8649, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 32768, 8605, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 32768, 8908, 103, 59, 32768, 730, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 32768, 8787, 768, 97, 104, 109, 15146, 15151, 15156, 114, 114, 59, 32768, 8644, 97, 114, 59, 32768, 8652, 59, 32768, 8207, 111, 117, 115, 116, 512, 59, 97, 15168, 15170, 32768, 9137, 99, 104, 101, 59, 32768, 9137, 109, 105, 100, 59, 32768, 10990, 1024, 97, 98, 112, 116, 15191, 15204, 15209, 15229, 512, 110, 114, 15196, 15200, 103, 59, 32768, 10221, 114, 59, 32768, 8702, 114, 107, 59, 32768, 10215, 768, 97, 102, 108, 15216, 15220, 15224, 114, 59, 32768, 10630, 59, 32896, 55349, 56675, 117, 115, 59, 32768, 10798, 105, 109, 101, 115, 59, 32768, 10805, 512, 97, 112, 15241, 15253, 114, 512, 59, 103, 15247, 15249, 32768, 41, 116, 59, 32768, 10644, 111, 108, 105, 110, 116, 59, 32768, 10770, 97, 114, 114, 59, 32768, 8649, 1024, 97, 99, 104, 113, 15276, 15282, 15287, 15290, 113, 117, 111, 59, 32768, 8250, 114, 59, 32896, 55349, 56519, 59, 32768, 8625, 512, 98, 117, 15295, 15298, 59, 32768, 93, 111, 512, 59, 114, 15304, 15306, 32768, 8217, 59, 32768, 8217, 768, 104, 105, 114, 15316, 15322, 15328, 114, 101, 101, 59, 32768, 8908, 109, 101, 115, 59, 32768, 8906, 105, 1024, 59, 101, 102, 108, 15338, 15340, 15343, 15346, 32768, 9657, 59, 32768, 8885, 59, 32768, 9656, 116, 114, 105, 59, 32768, 10702, 108, 117, 104, 97, 114, 59, 32768, 10600, 59, 32768, 8478, 6706, 15391, 15398, 15404, 15499, 15516, 15592, 0, 15606, 15660, 0, 0, 15752, 15758, 0, 15827, 15863, 15886, 16e3, 16006, 16038, 16086, 0, 16467, 0, 0, 16506, 99, 117, 116, 101, 59, 32768, 347, 113, 117, 111, 59, 32768, 8218, 2560, 59, 69, 97, 99, 101, 105, 110, 112, 115, 121, 15424, 15426, 15429, 15441, 15446, 15458, 15463, 15482, 15490, 15495, 32768, 8827, 59, 32768, 10932, 833, 15434, 0, 15437, 59, 32768, 10936, 111, 110, 59, 32768, 353, 117, 101, 59, 32768, 8829, 512, 59, 100, 15451, 15453, 32768, 10928, 105, 108, 59, 32768, 351, 114, 99, 59, 32768, 349, 768, 69, 97, 115, 15470, 15473, 15477, 59, 32768, 10934, 112, 59, 32768, 10938, 105, 109, 59, 32768, 8937, 111, 108, 105, 110, 116, 59, 32768, 10771, 105, 109, 59, 32768, 8831, 59, 32768, 1089, 111, 116, 768, 59, 98, 101, 15507, 15509, 15512, 32768, 8901, 59, 32768, 8865, 59, 32768, 10854, 1792, 65, 97, 99, 109, 115, 116, 120, 15530, 15535, 15556, 15562, 15566, 15572, 15587, 114, 114, 59, 32768, 8664, 114, 512, 104, 114, 15541, 15545, 107, 59, 32768, 10533, 512, 59, 111, 15550, 15552, 32768, 8600, 119, 59, 32768, 8600, 116, 33024, 167, 59, 32768, 167, 105, 59, 32768, 59, 119, 97, 114, 59, 32768, 10537, 109, 512, 105, 110, 15578, 15584, 110, 117, 115, 59, 32768, 8726, 59, 32768, 8726, 116, 59, 32768, 10038, 114, 512, 59, 111, 15597, 15600, 32896, 55349, 56624, 119, 110, 59, 32768, 8994, 1024, 97, 99, 111, 121, 15614, 15619, 15632, 15654, 114, 112, 59, 32768, 9839, 512, 104, 121, 15624, 15629, 99, 121, 59, 32768, 1097, 59, 32768, 1096, 114, 116, 1086, 15640, 0, 0, 15645, 105, 100, 59, 32768, 8739, 97, 114, 97, 108, 108, 101, 108, 59, 32768, 8741, 33024, 173, 59, 32768, 173, 512, 103, 109, 15664, 15681, 109, 97, 768, 59, 102, 118, 15673, 15675, 15678, 32768, 963, 59, 32768, 962, 59, 32768, 962, 2048, 59, 100, 101, 103, 108, 110, 112, 114, 15698, 15700, 15705, 15715, 15725, 15735, 15739, 15745, 32768, 8764, 111, 116, 59, 32768, 10858, 512, 59, 113, 15710, 15712, 32768, 8771, 59, 32768, 8771, 512, 59, 69, 15720, 15722, 32768, 10910, 59, 32768, 10912, 512, 59, 69, 15730, 15732, 32768, 10909, 59, 32768, 10911, 101, 59, 32768, 8774, 108, 117, 115, 59, 32768, 10788, 97, 114, 114, 59, 32768, 10610, 97, 114, 114, 59, 32768, 8592, 1024, 97, 101, 105, 116, 15766, 15788, 15796, 15808, 512, 108, 115, 15771, 15783, 108, 115, 101, 116, 109, 105, 110, 117, 115, 59, 32768, 8726, 104, 112, 59, 32768, 10803, 112, 97, 114, 115, 108, 59, 32768, 10724, 512, 100, 108, 15801, 15804, 59, 32768, 8739, 101, 59, 32768, 8995, 512, 59, 101, 15813, 15815, 32768, 10922, 512, 59, 115, 15820, 15822, 32768, 10924, 59, 32896, 10924, 65024, 768, 102, 108, 112, 15833, 15839, 15857, 116, 99, 121, 59, 32768, 1100, 512, 59, 98, 15844, 15846, 32768, 47, 512, 59, 97, 15851, 15853, 32768, 10692, 114, 59, 32768, 9023, 102, 59, 32896, 55349, 56676, 97, 512, 100, 114, 15868, 15882, 101, 115, 512, 59, 117, 15875, 15877, 32768, 9824, 105, 116, 59, 32768, 9824, 59, 32768, 8741, 768, 99, 115, 117, 15892, 15921, 15977, 512, 97, 117, 15897, 15909, 112, 512, 59, 115, 15903, 15905, 32768, 8851, 59, 32896, 8851, 65024, 112, 512, 59, 115, 15915, 15917, 32768, 8852, 59, 32896, 8852, 65024, 117, 512, 98, 112, 15927, 15952, 768, 59, 101, 115, 15934, 15936, 15939, 32768, 8847, 59, 32768, 8849, 101, 116, 512, 59, 101, 15946, 15948, 32768, 8847, 113, 59, 32768, 8849, 768, 59, 101, 115, 15959, 15961, 15964, 32768, 8848, 59, 32768, 8850, 101, 116, 512, 59, 101, 15971, 15973, 32768, 8848, 113, 59, 32768, 8850, 768, 59, 97, 102, 15984, 15986, 15996, 32768, 9633, 114, 566, 15991, 15994, 59, 32768, 9633, 59, 32768, 9642, 59, 32768, 9642, 97, 114, 114, 59, 32768, 8594, 1024, 99, 101, 109, 116, 16014, 16019, 16025, 16031, 114, 59, 32896, 55349, 56520, 116, 109, 110, 59, 32768, 8726, 105, 108, 101, 59, 32768, 8995, 97, 114, 102, 59, 32768, 8902, 512, 97, 114, 16042, 16053, 114, 512, 59, 102, 16048, 16050, 32768, 9734, 59, 32768, 9733, 512, 97, 110, 16058, 16081, 105, 103, 104, 116, 512, 101, 112, 16067, 16076, 112, 115, 105, 108, 111, 110, 59, 32768, 1013, 104, 105, 59, 32768, 981, 115, 59, 32768, 175, 1280, 98, 99, 109, 110, 112, 16096, 16221, 16288, 16291, 16295, 2304, 59, 69, 100, 101, 109, 110, 112, 114, 115, 16115, 16117, 16120, 16125, 16137, 16143, 16154, 16160, 16166, 32768, 8834, 59, 32768, 10949, 111, 116, 59, 32768, 10941, 512, 59, 100, 16130, 16132, 32768, 8838, 111, 116, 59, 32768, 10947, 117, 108, 116, 59, 32768, 10945, 512, 69, 101, 16148, 16151, 59, 32768, 10955, 59, 32768, 8842, 108, 117, 115, 59, 32768, 10943, 97, 114, 114, 59, 32768, 10617, 768, 101, 105, 117, 16173, 16206, 16210, 116, 768, 59, 101, 110, 16181, 16183, 16194, 32768, 8834, 113, 512, 59, 113, 16189, 16191, 32768, 8838, 59, 32768, 10949, 101, 113, 512, 59, 113, 16201, 16203, 32768, 8842, 59, 32768, 10955, 109, 59, 32768, 10951, 512, 98, 112, 16215, 16218, 59, 32768, 10965, 59, 32768, 10963, 99, 1536, 59, 97, 99, 101, 110, 115, 16235, 16237, 16245, 16254, 16258, 16283, 32768, 8827, 112, 112, 114, 111, 120, 59, 32768, 10936, 117, 114, 108, 121, 101, 113, 59, 32768, 8829, 113, 59, 32768, 10928, 768, 97, 101, 115, 16265, 16273, 16278, 112, 112, 114, 111, 120, 59, 32768, 10938, 113, 113, 59, 32768, 10934, 105, 109, 59, 32768, 8937, 105, 109, 59, 32768, 8831, 59, 32768, 8721, 103, 59, 32768, 9834, 3328, 49, 50, 51, 59, 69, 100, 101, 104, 108, 109, 110, 112, 115, 16322, 16327, 16332, 16337, 16339, 16342, 16356, 16368, 16382, 16388, 16394, 16405, 16411, 33024, 185, 59, 32768, 185, 33024, 178, 59, 32768, 178, 33024, 179, 59, 32768, 179, 32768, 8835, 59, 32768, 10950, 512, 111, 115, 16347, 16351, 116, 59, 32768, 10942, 117, 98, 59, 32768, 10968, 512, 59, 100, 16361, 16363, 32768, 8839, 111, 116, 59, 32768, 10948, 115, 512, 111, 117, 16374, 16378, 108, 59, 32768, 10185, 98, 59, 32768, 10967, 97, 114, 114, 59, 32768, 10619, 117, 108, 116, 59, 32768, 10946, 512, 69, 101, 16399, 16402, 59, 32768, 10956, 59, 32768, 8843, 108, 117, 115, 59, 32768, 10944, 768, 101, 105, 117, 16418, 16451, 16455, 116, 768, 59, 101, 110, 16426, 16428, 16439, 32768, 8835, 113, 512, 59, 113, 16434, 16436, 32768, 8839, 59, 32768, 10950, 101, 113, 512, 59, 113, 16446, 16448, 32768, 8843, 59, 32768, 10956, 109, 59, 32768, 10952, 512, 98, 112, 16460, 16463, 59, 32768, 10964, 59, 32768, 10966, 768, 65, 97, 110, 16473, 16478, 16499, 114, 114, 59, 32768, 8665, 114, 512, 104, 114, 16484, 16488, 107, 59, 32768, 10534, 512, 59, 111, 16493, 16495, 32768, 8601, 119, 59, 32768, 8601, 119, 97, 114, 59, 32768, 10538, 108, 105, 103, 33024, 223, 59, 32768, 223, 5938, 16538, 16552, 16557, 16579, 16584, 16591, 0, 16596, 16692, 0, 0, 0, 0, 0, 16731, 16780, 0, 16787, 16908, 0, 0, 0, 16938, 1091, 16543, 0, 0, 16549, 103, 101, 116, 59, 32768, 8982, 59, 32768, 964, 114, 107, 59, 32768, 9140, 768, 97, 101, 121, 16563, 16569, 16575, 114, 111, 110, 59, 32768, 357, 100, 105, 108, 59, 32768, 355, 59, 32768, 1090, 111, 116, 59, 32768, 8411, 108, 114, 101, 99, 59, 32768, 8981, 114, 59, 32896, 55349, 56625, 1024, 101, 105, 107, 111, 16604, 16641, 16670, 16684, 835, 16609, 0, 16624, 101, 512, 52, 102, 16614, 16617, 59, 32768, 8756, 111, 114, 101, 59, 32768, 8756, 97, 768, 59, 115, 118, 16631, 16633, 16638, 32768, 952, 121, 109, 59, 32768, 977, 59, 32768, 977, 512, 99, 110, 16646, 16665, 107, 512, 97, 115, 16652, 16660, 112, 112, 114, 111, 120, 59, 32768, 8776, 105, 109, 59, 32768, 8764, 115, 112, 59, 32768, 8201, 512, 97, 115, 16675, 16679, 112, 59, 32768, 8776, 105, 109, 59, 32768, 8764, 114, 110, 33024, 254, 59, 32768, 254, 829, 16696, 16701, 16727, 100, 101, 59, 32768, 732, 101, 115, 33536, 215, 59, 98, 100, 16710, 16712, 16723, 32768, 215, 512, 59, 97, 16717, 16719, 32768, 8864, 114, 59, 32768, 10801, 59, 32768, 10800, 116, 59, 32768, 8749, 768, 101, 112, 115, 16737, 16741, 16775, 97, 59, 32768, 10536, 1024, 59, 98, 99, 102, 16750, 16752, 16757, 16762, 32768, 8868, 111, 116, 59, 32768, 9014, 105, 114, 59, 32768, 10993, 512, 59, 111, 16767, 16770, 32896, 55349, 56677, 114, 107, 59, 32768, 10970, 97, 59, 32768, 10537, 114, 105, 109, 101, 59, 32768, 8244, 768, 97, 105, 112, 16793, 16798, 16899, 100, 101, 59, 32768, 8482, 1792, 97, 100, 101, 109, 112, 115, 116, 16813, 16868, 16873, 16876, 16883, 16889, 16893, 110, 103, 108, 101, 1280, 59, 100, 108, 113, 114, 16828, 16830, 16836, 16850, 16853, 32768, 9653, 111, 119, 110, 59, 32768, 9663, 101, 102, 116, 512, 59, 101, 16844, 16846, 32768, 9667, 113, 59, 32768, 8884, 59, 32768, 8796, 105, 103, 104, 116, 512, 59, 101, 16862, 16864, 32768, 9657, 113, 59, 32768, 8885, 111, 116, 59, 32768, 9708, 59, 32768, 8796, 105, 110, 117, 115, 59, 32768, 10810, 108, 117, 115, 59, 32768, 10809, 98, 59, 32768, 10701, 105, 109, 101, 59, 32768, 10811, 101, 122, 105, 117, 109, 59, 32768, 9186, 768, 99, 104, 116, 16914, 16926, 16931, 512, 114, 121, 16919, 16923, 59, 32896, 55349, 56521, 59, 32768, 1094, 99, 121, 59, 32768, 1115, 114, 111, 107, 59, 32768, 359, 512, 105, 111, 16942, 16947, 120, 116, 59, 32768, 8812, 104, 101, 97, 100, 512, 108, 114, 16956, 16967, 101, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8606, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8608, 4608, 65, 72, 97, 98, 99, 100, 102, 103, 104, 108, 109, 111, 112, 114, 115, 116, 117, 119, 17016, 17021, 17026, 17043, 17057, 17072, 17095, 17110, 17119, 17139, 17172, 17187, 17202, 17290, 17330, 17336, 17365, 17381, 114, 114, 59, 32768, 8657, 97, 114, 59, 32768, 10595, 512, 99, 114, 17031, 17039, 117, 116, 101, 33024, 250, 59, 32768, 250, 114, 59, 32768, 8593, 114, 820, 17049, 0, 17053, 121, 59, 32768, 1118, 118, 101, 59, 32768, 365, 512, 105, 121, 17062, 17069, 114, 99, 33024, 251, 59, 32768, 251, 59, 32768, 1091, 768, 97, 98, 104, 17079, 17084, 17090, 114, 114, 59, 32768, 8645, 108, 97, 99, 59, 32768, 369, 97, 114, 59, 32768, 10606, 512, 105, 114, 17100, 17106, 115, 104, 116, 59, 32768, 10622, 59, 32896, 55349, 56626, 114, 97, 118, 101, 33024, 249, 59, 32768, 249, 562, 17123, 17135, 114, 512, 108, 114, 17128, 17131, 59, 32768, 8639, 59, 32768, 8638, 108, 107, 59, 32768, 9600, 512, 99, 116, 17144, 17167, 1088, 17150, 0, 0, 17163, 114, 110, 512, 59, 101, 17156, 17158, 32768, 8988, 114, 59, 32768, 8988, 111, 112, 59, 32768, 8975, 114, 105, 59, 32768, 9720, 512, 97, 108, 17177, 17182, 99, 114, 59, 32768, 363, 33024, 168, 59, 32768, 168, 512, 103, 112, 17192, 17197, 111, 110, 59, 32768, 371, 102, 59, 32896, 55349, 56678, 1536, 97, 100, 104, 108, 115, 117, 17215, 17222, 17233, 17257, 17262, 17280, 114, 114, 111, 119, 59, 32768, 8593, 111, 119, 110, 97, 114, 114, 111, 119, 59, 32768, 8597, 97, 114, 112, 111, 111, 110, 512, 108, 114, 17244, 17250, 101, 102, 116, 59, 32768, 8639, 105, 103, 104, 116, 59, 32768, 8638, 117, 115, 59, 32768, 8846, 105, 768, 59, 104, 108, 17270, 17272, 17275, 32768, 965, 59, 32768, 978, 111, 110, 59, 32768, 965, 112, 97, 114, 114, 111, 119, 115, 59, 32768, 8648, 768, 99, 105, 116, 17297, 17320, 17325, 1088, 17303, 0, 0, 17316, 114, 110, 512, 59, 101, 17309, 17311, 32768, 8989, 114, 59, 32768, 8989, 111, 112, 59, 32768, 8974, 110, 103, 59, 32768, 367, 114, 105, 59, 32768, 9721, 99, 114, 59, 32896, 55349, 56522, 768, 100, 105, 114, 17343, 17348, 17354, 111, 116, 59, 32768, 8944, 108, 100, 101, 59, 32768, 361, 105, 512, 59, 102, 17360, 17362, 32768, 9653, 59, 32768, 9652, 512, 97, 109, 17370, 17375, 114, 114, 59, 32768, 8648, 108, 33024, 252, 59, 32768, 252, 97, 110, 103, 108, 101, 59, 32768, 10663, 3840, 65, 66, 68, 97, 99, 100, 101, 102, 108, 110, 111, 112, 114, 115, 122, 17420, 17425, 17437, 17443, 17613, 17617, 17623, 17667, 17672, 17678, 17693, 17699, 17705, 17711, 17754, 114, 114, 59, 32768, 8661, 97, 114, 512, 59, 118, 17432, 17434, 32768, 10984, 59, 32768, 10985, 97, 115, 104, 59, 32768, 8872, 512, 110, 114, 17448, 17454, 103, 114, 116, 59, 32768, 10652, 1792, 101, 107, 110, 112, 114, 115, 116, 17469, 17478, 17485, 17494, 17515, 17526, 17578, 112, 115, 105, 108, 111, 110, 59, 32768, 1013, 97, 112, 112, 97, 59, 32768, 1008, 111, 116, 104, 105, 110, 103, 59, 32768, 8709, 768, 104, 105, 114, 17501, 17505, 17508, 105, 59, 32768, 981, 59, 32768, 982, 111, 112, 116, 111, 59, 32768, 8733, 512, 59, 104, 17520, 17522, 32768, 8597, 111, 59, 32768, 1009, 512, 105, 117, 17531, 17537, 103, 109, 97, 59, 32768, 962, 512, 98, 112, 17542, 17560, 115, 101, 116, 110, 101, 113, 512, 59, 113, 17553, 17556, 32896, 8842, 65024, 59, 32896, 10955, 65024, 115, 101, 116, 110, 101, 113, 512, 59, 113, 17571, 17574, 32896, 8843, 65024, 59, 32896, 10956, 65024, 512, 104, 114, 17583, 17589, 101, 116, 97, 59, 32768, 977, 105, 97, 110, 103, 108, 101, 512, 108, 114, 17600, 17606, 101, 102, 116, 59, 32768, 8882, 105, 103, 104, 116, 59, 32768, 8883, 121, 59, 32768, 1074, 97, 115, 104, 59, 32768, 8866, 768, 101, 108, 114, 17630, 17648, 17654, 768, 59, 98, 101, 17637, 17639, 17644, 32768, 8744, 97, 114, 59, 32768, 8891, 113, 59, 32768, 8794, 108, 105, 112, 59, 32768, 8942, 512, 98, 116, 17659, 17664, 97, 114, 59, 32768, 124, 59, 32768, 124, 114, 59, 32896, 55349, 56627, 116, 114, 105, 59, 32768, 8882, 115, 117, 512, 98, 112, 17685, 17689, 59, 32896, 8834, 8402, 59, 32896, 8835, 8402, 112, 102, 59, 32896, 55349, 56679, 114, 111, 112, 59, 32768, 8733, 116, 114, 105, 59, 32768, 8883, 512, 99, 117, 17716, 17721, 114, 59, 32896, 55349, 56523, 512, 98, 112, 17726, 17740, 110, 512, 69, 101, 17732, 17736, 59, 32896, 10955, 65024, 59, 32896, 8842, 65024, 110, 512, 69, 101, 17746, 17750, 59, 32896, 10956, 65024, 59, 32896, 8843, 65024, 105, 103, 122, 97, 103, 59, 32768, 10650, 1792, 99, 101, 102, 111, 112, 114, 115, 17777, 17783, 17815, 17820, 17826, 17829, 17842, 105, 114, 99, 59, 32768, 373, 512, 100, 105, 17788, 17809, 512, 98, 103, 17793, 17798, 97, 114, 59, 32768, 10847, 101, 512, 59, 113, 17804, 17806, 32768, 8743, 59, 32768, 8793, 101, 114, 112, 59, 32768, 8472, 114, 59, 32896, 55349, 56628, 112, 102, 59, 32896, 55349, 56680, 59, 32768, 8472, 512, 59, 101, 17834, 17836, 32768, 8768, 97, 116, 104, 59, 32768, 8768, 99, 114, 59, 32896, 55349, 56524, 5428, 17871, 17891, 0, 17897, 0, 17902, 17917, 0, 0, 17920, 17935, 17940, 17945, 0, 0, 17977, 17992, 0, 18008, 18024, 18029, 768, 97, 105, 117, 17877, 17881, 17886, 112, 59, 32768, 8898, 114, 99, 59, 32768, 9711, 112, 59, 32768, 8899, 116, 114, 105, 59, 32768, 9661, 114, 59, 32896, 55349, 56629, 512, 65, 97, 17906, 17911, 114, 114, 59, 32768, 10234, 114, 114, 59, 32768, 10231, 59, 32768, 958, 512, 65, 97, 17924, 17929, 114, 114, 59, 32768, 10232, 114, 114, 59, 32768, 10229, 97, 112, 59, 32768, 10236, 105, 115, 59, 32768, 8955, 768, 100, 112, 116, 17951, 17956, 17970, 111, 116, 59, 32768, 10752, 512, 102, 108, 17961, 17965, 59, 32896, 55349, 56681, 117, 115, 59, 32768, 10753, 105, 109, 101, 59, 32768, 10754, 512, 65, 97, 17981, 17986, 114, 114, 59, 32768, 10233, 114, 114, 59, 32768, 10230, 512, 99, 113, 17996, 18001, 114, 59, 32896, 55349, 56525, 99, 117, 112, 59, 32768, 10758, 512, 112, 116, 18012, 18018, 108, 117, 115, 59, 32768, 10756, 114, 105, 59, 32768, 9651, 101, 101, 59, 32768, 8897, 101, 100, 103, 101, 59, 32768, 8896, 2048, 97, 99, 101, 102, 105, 111, 115, 117, 18052, 18068, 18081, 18087, 18092, 18097, 18103, 18109, 99, 512, 117, 121, 18058, 18065, 116, 101, 33024, 253, 59, 32768, 253, 59, 32768, 1103, 512, 105, 121, 18073, 18078, 114, 99, 59, 32768, 375, 59, 32768, 1099, 110, 33024, 165, 59, 32768, 165, 114, 59, 32896, 55349, 56630, 99, 121, 59, 32768, 1111, 112, 102, 59, 32896, 55349, 56682, 99, 114, 59, 32896, 55349, 56526, 512, 99, 109, 18114, 18118, 121, 59, 32768, 1102, 108, 33024, 255, 59, 32768, 255, 2560, 97, 99, 100, 101, 102, 104, 105, 111, 115, 119, 18145, 18152, 18166, 18171, 18186, 18191, 18196, 18204, 18210, 18216, 99, 117, 116, 101, 59, 32768, 378, 512, 97, 121, 18157, 18163, 114, 111, 110, 59, 32768, 382, 59, 32768, 1079, 111, 116, 59, 32768, 380, 512, 101, 116, 18176, 18182, 116, 114, 102, 59, 32768, 8488, 97, 59, 32768, 950, 114, 59, 32896, 55349, 56631, 99, 121, 59, 32768, 1078, 103, 114, 97, 114, 114, 59, 32768, 8669, 112, 102, 59, 32896, 55349, 56683, 99, 114, 59, 32896, 55349, 56527, 512, 106, 110, 18221, 18224, 59, 32768, 8205, 106, 59, 32768, 8204]); - } -}); - -// node_modules/entities/lib/generated/decode-data-xml.js -var require_decode_data_xml = __commonJS({ - "node_modules/entities/lib/generated/decode-data-xml.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.default = new Uint16Array([1024, 97, 103, 108, 113, 9, 23, 27, 31, 1086, 15, 0, 0, 19, 112, 59, 32768, 38, 111, 115, 59, 32768, 39, 116, 59, 32768, 62, 116, 59, 32768, 60, 117, 111, 116, 59, 32768, 34]); - } -}); - -// node_modules/entities/lib/decode.js -var require_decode = __commonJS({ - "node_modules/entities/lib/decode.js"(exports) { - "use strict"; - var __importDefault = exports && exports.__importDefault || function(mod) { - return mod && mod.__esModule ? mod : { "default": mod }; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTML = exports.determineBranch = exports.JUMP_OFFSET_BASE = exports.BinTrieFlags = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0; - var decode_data_html_1 = __importDefault(require_decode_data_html()); - exports.htmlDecodeTree = decode_data_html_1.default; - var decode_data_xml_1 = __importDefault(require_decode_data_xml()); - exports.xmlDecodeTree = decode_data_xml_1.default; - var decode_codepoint_1 = __importDefault(require_decode_codepoint()); - var BinTrieFlags; - (function(BinTrieFlags2) { - BinTrieFlags2[BinTrieFlags2["HAS_VALUE"] = 32768] = "HAS_VALUE"; - BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 32512] = "BRANCH_LENGTH"; - BinTrieFlags2[BinTrieFlags2["MULTI_BYTE"] = 128] = "MULTI_BYTE"; - BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE"; - })(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {})); - exports.JUMP_OFFSET_BASE = 48 - 1; - function getDecoder(decodeTree) { - return function decodeHTMLBinary(str, strict) { - var ret = ""; - var lastIdx = 0; - var strIdx = 0; - while ((strIdx = str.indexOf("&", strIdx)) >= 0) { - ret += str.slice(lastIdx, strIdx); - lastIdx = strIdx; - strIdx += 1; - if (str.charCodeAt(strIdx) === 35) { - var start = strIdx + 1; - var base = 10; - var cp = str.charCodeAt(start); - if ((cp | 32) === 120) { - base = 16; - strIdx += 1; - start += 1; - } - while ((cp = str.charCodeAt(++strIdx)) >= 48 && cp <= 57 || base === 16 && (cp | 32) >= 97 && (cp | 32) <= 102) - ; - if (start !== strIdx) { - var entity = str.substring(start, strIdx); - var parsed = parseInt(entity, base); - if (str.charCodeAt(strIdx) === 59) { - strIdx += 1; - } else if (strict) { - continue; - } - ret += decode_codepoint_1.default(parsed); - lastIdx = strIdx; - } - continue; - } - var result = null; - var excess = 1; - var treeIdx = 0; - var current = decodeTree[treeIdx]; - for (; strIdx < str.length; strIdx++, excess++) { - treeIdx = determineBranch(decodeTree, current, treeIdx + 1, str.charCodeAt(strIdx)); - if (treeIdx < 0) - break; - current = decodeTree[treeIdx]; - if (current & BinTrieFlags.HAS_VALUE) { - if (strict && str.charCodeAt(strIdx) !== 59) { - treeIdx += 1; - } else { - result = current & BinTrieFlags.MULTI_BYTE ? String.fromCharCode(decodeTree[++treeIdx], decodeTree[++treeIdx]) : String.fromCharCode(decodeTree[++treeIdx]); - excess = 0; - } - } - } - if (result != null) { - ret += result; - lastIdx = strIdx - excess + 1; - } - } - return ret + str.slice(lastIdx); - }; - } - function determineBranch(decodeTree, current, nodeIdx, char) { - if (current <= 128) { - return char === current ? nodeIdx : -1; - } - var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 8; - if (branchCount === 0) { - return -1; - } - if (branchCount === 1) { - return char === decodeTree[nodeIdx] ? nodeIdx + 1 : -1; - } - var jumpOffset = current & BinTrieFlags.JUMP_TABLE; - if (jumpOffset) { - var value = char - exports.JUMP_OFFSET_BASE - jumpOffset; - return value < 0 || value > branchCount ? -1 : decodeTree[nodeIdx + value] - 1; - } - var lo = nodeIdx; - var hi = lo + branchCount - 1; - while (lo <= hi) { - var mid = lo + hi >>> 1; - var midVal = decodeTree[mid]; - if (midVal < char) { - lo = mid + 1; - } else if (midVal > char) { - hi = mid - 1; - } else { - return decodeTree[mid + branchCount]; - } - } - return -1; - } - exports.determineBranch = determineBranch; - var htmlDecoder = getDecoder(decode_data_html_1.default); - var xmlDecoder = getDecoder(decode_data_xml_1.default); - function decodeHTML(str) { - return htmlDecoder(str, false); - } - exports.decodeHTML = decodeHTML; - function decodeHTMLStrict(str) { - return htmlDecoder(str, true); - } - exports.decodeHTMLStrict = decodeHTMLStrict; - function decodeXML(str) { - return xmlDecoder(str, true); - } - exports.decodeXML = decodeXML; - } -}); - -// node_modules/htmlparser2/lib/Tokenizer.js -var require_Tokenizer = __commonJS({ - "node_modules/htmlparser2/lib/Tokenizer.js"(exports) { - "use strict"; - var __importDefault = exports && exports.__importDefault || function(mod) { - return mod && mod.__esModule ? mod : { "default": mod }; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - var decode_codepoint_1 = __importDefault(require_decode_codepoint()); - var decode_1 = require_decode(); - function isWhitespace(c2) { - return c2 === 32 || c2 === 10 || c2 === 9 || c2 === 12 || c2 === 13; - } - function isEndOfTagSection(c2) { - return c2 === 47 || c2 === 62 || isWhitespace(c2); - } - function isNumber2(c2) { - return c2 >= 48 && c2 <= 57; - } - function isASCIIAlpha(c2) { - return c2 >= 97 && c2 <= 122 || c2 >= 65 && c2 <= 90; - } - var Sequences = { - Cdata: new Uint16Array([67, 68, 65, 84, 65, 91]), - CdataEnd: new Uint16Array([93, 93, 62]), - CommentEnd: new Uint16Array([45, 45, 62]), - ScriptEnd: new Uint16Array([ - 60, - 47, - 115, - 99, - 114, - 105, - 112, - 116 - ]), - StyleEnd: new Uint16Array([60, 47, 115, 116, 121, 108, 101]), - TitleEnd: new Uint16Array([60, 47, 116, 105, 116, 108, 101]) - }; - var Tokenizer = function() { - function Tokenizer2(_a, cbs) { - var _b = _a.xmlMode, xmlMode = _b === void 0 ? false : _b, _c = _a.decodeEntities, decodeEntities = _c === void 0 ? true : _c; - this.cbs = cbs; - this._state = 1; - this.buffer = ""; - this.sectionStart = 0; - this._index = 0; - this.bufferOffset = 0; - this.baseState = 1; - this.isSpecial = false; - this.running = true; - this.ended = false; - this.sequenceIndex = 0; - this.trieIndex = 0; - this.trieCurrent = 0; - this.trieResult = null; - this.entityExcess = 0; - this.xmlMode = xmlMode; - this.decodeEntities = decodeEntities; - this.entityTrie = xmlMode ? decode_1.xmlDecodeTree : decode_1.htmlDecodeTree; - } - Tokenizer2.prototype.reset = function() { - this._state = 1; - this.buffer = ""; - this.sectionStart = 0; - this._index = 0; - this.bufferOffset = 0; - this.baseState = 1; - this.currentSequence = void 0; - this.running = true; - this.ended = false; - }; - Tokenizer2.prototype.write = function(chunk) { - if (this.ended) - return this.cbs.onerror(Error(".write() after done!")); - this.buffer += chunk; - this.parse(); - }; - Tokenizer2.prototype.end = function(chunk) { - if (this.ended) - return this.cbs.onerror(Error(".end() after done!")); - if (chunk) - this.write(chunk); - this.ended = true; - if (this.running) - this.finish(); - }; - Tokenizer2.prototype.pause = function() { - this.running = false; - }; - Tokenizer2.prototype.resume = function() { - this.running = true; - if (this._index < this.buffer.length) { - this.parse(); - } - if (this.ended) { - this.finish(); - } - }; - Tokenizer2.prototype.getAbsoluteSectionStart = function() { - return this.sectionStart + this.bufferOffset; - }; - Tokenizer2.prototype.getAbsoluteIndex = function() { - return this.bufferOffset + this._index; - }; - Tokenizer2.prototype.stateText = function(c2) { - if (c2 === 60 || !this.decodeEntities && this.fastForwardTo(60)) { - if (this._index > this.sectionStart) { - this.cbs.ontext(this.getSection()); - } - this._state = 2; - this.sectionStart = this._index; - } else if (this.decodeEntities && c2 === 38) { - this._state = 25; - } - }; - Tokenizer2.prototype.stateSpecialStartSequence = function(c2) { - var isEnd = this.sequenceIndex === this.currentSequence.length; - var isMatch2 = isEnd ? isEndOfTagSection(c2) : (c2 | 32) === this.currentSequence[this.sequenceIndex]; - if (!isMatch2) { - this.isSpecial = false; - } else if (!isEnd) { - this.sequenceIndex++; - return; - } - this.sequenceIndex = 0; - this._state = 3; - this.stateInTagName(c2); - }; - Tokenizer2.prototype.stateInSpecialTag = function(c2) { - if (this.sequenceIndex === this.currentSequence.length) { - if (c2 === 62 || isWhitespace(c2)) { - var endOfText = this._index - this.currentSequence.length; - if (this.sectionStart < endOfText) { - var actualIndex = this._index; - this._index = endOfText; - this.cbs.ontext(this.getSection()); - this._index = actualIndex; - } - this.isSpecial = false; - this.sectionStart = endOfText + 2; - this.stateInClosingTagName(c2); - return; - } - this.sequenceIndex = 0; - } - if ((c2 | 32) === this.currentSequence[this.sequenceIndex]) { - this.sequenceIndex += 1; - } else if (this.sequenceIndex === 0) { - if (this.currentSequence === Sequences.TitleEnd) { - if (this.decodeEntities && c2 === 38) { - this._state = 25; - } - } else if (this.fastForwardTo(60)) { - this.sequenceIndex = 1; - } - } else { - this.sequenceIndex = Number(c2 === 60); - } - }; - Tokenizer2.prototype.stateCDATASequence = function(c2) { - if (c2 === Sequences.Cdata[this.sequenceIndex]) { - if (++this.sequenceIndex === Sequences.Cdata.length) { - this._state = 21; - this.currentSequence = Sequences.CdataEnd; - this.sequenceIndex = 0; - this.sectionStart = this._index + 1; - } - } else { - this.sequenceIndex = 0; - this._state = 16; - this.stateInDeclaration(c2); - } - }; - Tokenizer2.prototype.fastForwardTo = function(c2) { - while (++this._index < this.buffer.length) { - if (this.buffer.charCodeAt(this._index) === c2) { - return true; - } - } - this._index = this.buffer.length - 1; - return false; - }; - Tokenizer2.prototype.stateInCommentLike = function(c2) { - if (c2 === this.currentSequence[this.sequenceIndex]) { - if (++this.sequenceIndex === this.currentSequence.length) { - var section = this.buffer.slice(this.sectionStart, this._index - 2); - if (this.currentSequence === Sequences.CdataEnd) { - this.cbs.oncdata(section); - } else { - this.cbs.oncomment(section); - } - this.sequenceIndex = 0; - this.sectionStart = this._index + 1; - this._state = 1; - } - } else if (this.sequenceIndex === 0) { - if (this.fastForwardTo(this.currentSequence[0])) { - this.sequenceIndex = 1; - } - } else if (c2 !== this.currentSequence[this.sequenceIndex - 1]) { - this.sequenceIndex = 0; - } - }; - Tokenizer2.prototype.isTagStartChar = function(c2) { - return this.xmlMode ? !isEndOfTagSection(c2) : isASCIIAlpha(c2); - }; - Tokenizer2.prototype.startSpecial = function(sequence, offset) { - this.isSpecial = true; - this.currentSequence = sequence; - this.sequenceIndex = offset; - this._state = 23; - }; - Tokenizer2.prototype.stateBeforeTagName = function(c2) { - if (c2 === 33) { - this._state = 15; - this.sectionStart = this._index + 1; - } else if (c2 === 63) { - this._state = 17; - this.sectionStart = this._index + 1; - } else if (this.isTagStartChar(c2)) { - var lower = c2 | 32; - this.sectionStart = this._index; - if (!this.xmlMode && lower === Sequences.TitleEnd[2]) { - this.startSpecial(Sequences.TitleEnd, 3); - } else { - this._state = !this.xmlMode && lower === Sequences.ScriptEnd[2] ? 22 : 3; - } - } else if (c2 === 47) { - this._state = 5; - } else { - this._state = 1; - this.stateText(c2); - } - }; - Tokenizer2.prototype.stateInTagName = function(c2) { - if (isEndOfTagSection(c2)) { - this.cbs.onopentagname(this.getSection()); - this.sectionStart = -1; - this._state = 8; - this.stateBeforeAttributeName(c2); - } - }; - Tokenizer2.prototype.stateBeforeClosingTagName = function(c2) { - if (isWhitespace(c2)) { - } else if (c2 === 62) { - this._state = 1; - } else { - this._state = this.isTagStartChar(c2) ? 6 : 20; - this.sectionStart = this._index; - } - }; - Tokenizer2.prototype.stateInClosingTagName = function(c2) { - if (c2 === 62 || isWhitespace(c2)) { - this.cbs.onclosetag(this.getSection()); - this.sectionStart = -1; - this._state = 7; - this.stateAfterClosingTagName(c2); - } - }; - Tokenizer2.prototype.stateAfterClosingTagName = function(c2) { - if (c2 === 62 || this.fastForwardTo(62)) { - this._state = 1; - this.sectionStart = this._index + 1; - } - }; - Tokenizer2.prototype.stateBeforeAttributeName = function(c2) { - if (c2 === 62) { - this.cbs.onopentagend(); - if (this.isSpecial) { - this._state = 24; - this.sequenceIndex = 0; - } else { - this._state = 1; - } - this.baseState = this._state; - this.sectionStart = this._index + 1; - } else if (c2 === 47) { - this._state = 4; - } else if (!isWhitespace(c2)) { - this._state = 9; - this.sectionStart = this._index; - } - }; - Tokenizer2.prototype.stateInSelfClosingTag = function(c2) { - if (c2 === 62) { - this.cbs.onselfclosingtag(); - this._state = 1; - this.baseState = 1; - this.sectionStart = this._index + 1; - this.isSpecial = false; - } else if (!isWhitespace(c2)) { - this._state = 8; - this.stateBeforeAttributeName(c2); - } - }; - Tokenizer2.prototype.stateInAttributeName = function(c2) { - if (c2 === 61 || isEndOfTagSection(c2)) { - this.cbs.onattribname(this.getSection()); - this.sectionStart = -1; - this._state = 10; - this.stateAfterAttributeName(c2); - } - }; - Tokenizer2.prototype.stateAfterAttributeName = function(c2) { - if (c2 === 61) { - this._state = 11; - } else if (c2 === 47 || c2 === 62) { - this.cbs.onattribend(void 0); - this._state = 8; - this.stateBeforeAttributeName(c2); - } else if (!isWhitespace(c2)) { - this.cbs.onattribend(void 0); - this._state = 9; - this.sectionStart = this._index; - } - }; - Tokenizer2.prototype.stateBeforeAttributeValue = function(c2) { - if (c2 === 34) { - this._state = 12; - this.sectionStart = this._index + 1; - } else if (c2 === 39) { - this._state = 13; - this.sectionStart = this._index + 1; - } else if (!isWhitespace(c2)) { - this.sectionStart = this._index; - this._state = 14; - this.stateInAttributeValueNoQuotes(c2); - } - }; - Tokenizer2.prototype.handleInAttributeValue = function(c2, quote) { - if (c2 === quote || !this.decodeEntities && this.fastForwardTo(quote)) { - this.cbs.onattribdata(this.getSection()); - this.sectionStart = -1; - this.cbs.onattribend(String.fromCharCode(quote)); - this._state = 8; - } else if (this.decodeEntities && c2 === 38) { - this.baseState = this._state; - this._state = 25; - } - }; - Tokenizer2.prototype.stateInAttributeValueDoubleQuotes = function(c2) { - this.handleInAttributeValue(c2, 34); - }; - Tokenizer2.prototype.stateInAttributeValueSingleQuotes = function(c2) { - this.handleInAttributeValue(c2, 39); - }; - Tokenizer2.prototype.stateInAttributeValueNoQuotes = function(c2) { - if (isWhitespace(c2) || c2 === 62) { - this.cbs.onattribdata(this.getSection()); - this.sectionStart = -1; - this.cbs.onattribend(null); - this._state = 8; - this.stateBeforeAttributeName(c2); - } else if (this.decodeEntities && c2 === 38) { - this.baseState = this._state; - this._state = 25; - } - }; - Tokenizer2.prototype.stateBeforeDeclaration = function(c2) { - if (c2 === 91) { - this._state = 19; - this.sequenceIndex = 0; - } else { - this._state = c2 === 45 ? 18 : 16; - } - }; - Tokenizer2.prototype.stateInDeclaration = function(c2) { - if (c2 === 62 || this.fastForwardTo(62)) { - this.cbs.ondeclaration(this.getSection()); - this._state = 1; - this.sectionStart = this._index + 1; - } - }; - Tokenizer2.prototype.stateInProcessingInstruction = function(c2) { - if (c2 === 62 || this.fastForwardTo(62)) { - this.cbs.onprocessinginstruction(this.getSection()); - this._state = 1; - this.sectionStart = this._index + 1; - } - }; - Tokenizer2.prototype.stateBeforeComment = function(c2) { - if (c2 === 45) { - this._state = 21; - this.currentSequence = Sequences.CommentEnd; - this.sequenceIndex = 2; - this.sectionStart = this._index + 1; - } else { - this._state = 16; - } - }; - Tokenizer2.prototype.stateInSpecialComment = function(c2) { - if (c2 === 62 || this.fastForwardTo(62)) { - this.cbs.oncomment(this.getSection()); - this._state = 1; - this.sectionStart = this._index + 1; - } - }; - Tokenizer2.prototype.stateBeforeSpecialS = function(c2) { - var lower = c2 | 32; - if (lower === Sequences.ScriptEnd[3]) { - this.startSpecial(Sequences.ScriptEnd, 4); - } else if (lower === Sequences.StyleEnd[3]) { - this.startSpecial(Sequences.StyleEnd, 4); - } else { - this._state = 3; - this.stateInTagName(c2); - } - }; - Tokenizer2.prototype.stateBeforeEntity = function(c2) { - this.entityExcess = 1; - if (c2 === 35) { - this._state = 26; - } else if (c2 === 38) { - } else { - this.trieIndex = 0; - this.trieCurrent = this.entityTrie[0]; - this.trieResult = null; - this._state = 27; - this.stateInNamedEntity(c2); - } - }; - Tokenizer2.prototype.stateInNamedEntity = function(c2) { - this.entityExcess += 1; - this.trieIndex = (0, decode_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c2); - if (this.trieIndex < 0) { - this.emitNamedEntity(); - this._index--; - return; - } - this.trieCurrent = this.entityTrie[this.trieIndex]; - if (this.trieCurrent & decode_1.BinTrieFlags.HAS_VALUE) { - if (!this.allowLegacyEntity() && c2 !== 59) { - this.trieIndex += 1; - } else { - var entityStart = this._index - this.entityExcess + 1; - if (entityStart > this.sectionStart) { - this.emitPartial(this.buffer.substring(this.sectionStart, entityStart)); - } - this.trieResult = this.trieCurrent & decode_1.BinTrieFlags.MULTI_BYTE ? String.fromCharCode(this.entityTrie[++this.trieIndex], this.entityTrie[++this.trieIndex]) : String.fromCharCode(this.entityTrie[++this.trieIndex]); - this.entityExcess = 0; - this.sectionStart = this._index + 1; - } - } - }; - Tokenizer2.prototype.emitNamedEntity = function() { - if (this.trieResult) { - this.emitPartial(this.trieResult); - } - this._state = this.baseState; - }; - Tokenizer2.prototype.stateBeforeNumericEntity = function(c2) { - if ((c2 | 32) === 120) { - this.entityExcess++; - this._state = 29; - } else { - this._state = 28; - this.stateInNumericEntity(c2); - } - }; - Tokenizer2.prototype.decodeNumericEntity = function(base, strict) { - var entityStart = this._index - this.entityExcess - 1; - var numberStart = entityStart + 2 + (base >> 4); - if (numberStart !== this._index) { - if (entityStart > this.sectionStart) { - this.emitPartial(this.buffer.substring(this.sectionStart, entityStart)); - } - var entity = this.buffer.substring(numberStart, this._index); - var parsed = parseInt(entity, base); - this.emitPartial((0, decode_codepoint_1.default)(parsed)); - this.sectionStart = this._index + Number(strict); - } - this._state = this.baseState; - }; - Tokenizer2.prototype.stateInNumericEntity = function(c2) { - if (c2 === 59) { - this.decodeNumericEntity(10, true); - } else if (!isNumber2(c2)) { - if (this.allowLegacyEntity()) { - this.decodeNumericEntity(10, false); - } else { - this._state = this.baseState; - } - this._index--; - } else { - this.entityExcess++; - } - }; - Tokenizer2.prototype.stateInHexEntity = function(c2) { - if (c2 === 59) { - this.decodeNumericEntity(16, true); - } else if ((c2 < 97 || c2 > 102) && (c2 < 65 || c2 > 70) && !isNumber2(c2)) { - if (this.allowLegacyEntity()) { - this.decodeNumericEntity(16, false); - } else { - this._state = this.baseState; - } - this._index--; - } else { - this.entityExcess++; - } - }; - Tokenizer2.prototype.allowLegacyEntity = function() { - return !this.xmlMode && (this.baseState === 1 || this.baseState === 24); - }; - Tokenizer2.prototype.cleanup = function() { - if (this.running && this.sectionStart !== this._index && (this._state === 1 || this._state === 24 && this.sequenceIndex === 0)) { - this.cbs.ontext(this.buffer.substr(this.sectionStart)); - this.sectionStart = this._index; - } - var start = this.sectionStart < 0 ? this._index : this.sectionStart; - this.buffer = start === this.buffer.length ? "" : this.buffer.substr(start); - this._index -= start; - this.bufferOffset += start; - if (this.sectionStart > 0) { - this.sectionStart = 0; - } - }; - Tokenizer2.prototype.shouldContinue = function() { - return this._index < this.buffer.length && this.running; - }; - Tokenizer2.prototype.parse = function() { - while (this.shouldContinue()) { - var c2 = this.buffer.charCodeAt(this._index); - if (this._state === 1) { - this.stateText(c2); - } else if (this._state === 23) { - this.stateSpecialStartSequence(c2); - } else if (this._state === 24) { - this.stateInSpecialTag(c2); - } else if (this._state === 19) { - this.stateCDATASequence(c2); - } else if (this._state === 12) { - this.stateInAttributeValueDoubleQuotes(c2); - } else if (this._state === 9) { - this.stateInAttributeName(c2); - } else if (this._state === 21) { - this.stateInCommentLike(c2); - } else if (this._state === 20) { - this.stateInSpecialComment(c2); - } else if (this._state === 8) { - this.stateBeforeAttributeName(c2); - } else if (this._state === 3) { - this.stateInTagName(c2); - } else if (this._state === 6) { - this.stateInClosingTagName(c2); - } else if (this._state === 2) { - this.stateBeforeTagName(c2); - } else if (this._state === 10) { - this.stateAfterAttributeName(c2); - } else if (this._state === 13) { - this.stateInAttributeValueSingleQuotes(c2); - } else if (this._state === 11) { - this.stateBeforeAttributeValue(c2); - } else if (this._state === 5) { - this.stateBeforeClosingTagName(c2); - } else if (this._state === 7) { - this.stateAfterClosingTagName(c2); - } else if (this._state === 22) { - this.stateBeforeSpecialS(c2); - } else if (this._state === 14) { - this.stateInAttributeValueNoQuotes(c2); - } else if (this._state === 4) { - this.stateInSelfClosingTag(c2); - } else if (this._state === 16) { - this.stateInDeclaration(c2); - } else if (this._state === 15) { - this.stateBeforeDeclaration(c2); - } else if (this._state === 18) { - this.stateBeforeComment(c2); - } else if (this._state === 17) { - this.stateInProcessingInstruction(c2); - } else if (this._state === 27) { - this.stateInNamedEntity(c2); - } else if (this._state === 25) { - this.stateBeforeEntity(c2); - } else if (this._state === 29) { - this.stateInHexEntity(c2); - } else if (this._state === 28) { - this.stateInNumericEntity(c2); - } else { - this.stateBeforeNumericEntity(c2); - } - this._index++; - } - this.cleanup(); - }; - Tokenizer2.prototype.finish = function() { - if (this._state === 27) { - this.emitNamedEntity(); - } - if (this.sectionStart < this._index) { - this.handleTrailingData(); - } - this.cbs.onend(); - }; - Tokenizer2.prototype.handleTrailingData = function() { - var data = this.buffer.substr(this.sectionStart); - if (this._state === 21) { - if (this.currentSequence === Sequences.CdataEnd) { - this.cbs.oncdata(data); - } else { - this.cbs.oncomment(data); - } - } else if (this._state === 28 && this.allowLegacyEntity()) { - this.decodeNumericEntity(10, false); - } else if (this._state === 29 && this.allowLegacyEntity()) { - this.decodeNumericEntity(16, false); - } else if (this._state === 3 || this._state === 8 || this._state === 11 || this._state === 10 || this._state === 9 || this._state === 13 || this._state === 12 || this._state === 14 || this._state === 6) { - } else { - this.cbs.ontext(data); - } - }; - Tokenizer2.prototype.getSection = function() { - return this.buffer.substring(this.sectionStart, this._index); - }; - Tokenizer2.prototype.emitPartial = function(value) { - if (this.baseState !== 1 && this.baseState !== 24) { - this.cbs.onattribdata(value); - } else { - this.cbs.ontext(value); - } - }; - return Tokenizer2; - }(); - exports.default = Tokenizer; - } -}); - -// node_modules/htmlparser2/lib/Parser.js -var require_Parser = __commonJS({ - "node_modules/htmlparser2/lib/Parser.js"(exports) { - "use strict"; - var __importDefault = exports && exports.__importDefault || function(mod) { - return mod && mod.__esModule ? mod : { "default": mod }; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.Parser = void 0; - var Tokenizer_1 = __importDefault(require_Tokenizer()); - var formTags = /* @__PURE__ */ new Set([ - "input", - "option", - "optgroup", - "select", - "button", - "datalist", - "textarea" - ]); - var pTag = /* @__PURE__ */ new Set(["p"]); - var tableSectionTags = /* @__PURE__ */ new Set(["thead", "tbody"]); - var ddtTags = /* @__PURE__ */ new Set(["dd", "dt"]); - var rtpTags = /* @__PURE__ */ new Set(["rt", "rp"]); - var openImpliesClose = /* @__PURE__ */ new Map([ - ["tr", /* @__PURE__ */ new Set(["tr", "th", "td"])], - ["th", /* @__PURE__ */ new Set(["th"])], - ["td", /* @__PURE__ */ new Set(["thead", "th", "td"])], - ["body", /* @__PURE__ */ new Set(["head", "link", "script"])], - ["li", /* @__PURE__ */ new Set(["li"])], - ["p", pTag], - ["h1", pTag], - ["h2", pTag], - ["h3", pTag], - ["h4", pTag], - ["h5", pTag], - ["h6", pTag], - ["select", formTags], - ["input", formTags], - ["output", formTags], - ["button", formTags], - ["datalist", formTags], - ["textarea", formTags], - ["option", /* @__PURE__ */ new Set(["option"])], - ["optgroup", /* @__PURE__ */ new Set(["optgroup", "option"])], - ["dd", ddtTags], - ["dt", ddtTags], - ["address", pTag], - ["article", pTag], - ["aside", pTag], - ["blockquote", pTag], - ["details", pTag], - ["div", pTag], - ["dl", pTag], - ["fieldset", pTag], - ["figcaption", pTag], - ["figure", pTag], - ["footer", pTag], - ["form", pTag], - ["header", pTag], - ["hr", pTag], - ["main", pTag], - ["nav", pTag], - ["ol", pTag], - ["pre", pTag], - ["section", pTag], - ["table", pTag], - ["ul", pTag], - ["rt", rtpTags], - ["rp", rtpTags], - ["tbody", tableSectionTags], - ["tfoot", tableSectionTags] - ]); - var voidElements = /* @__PURE__ */ new Set([ - "area", - "base", - "basefont", - "br", - "col", - "command", - "embed", - "frame", - "hr", - "img", - "input", - "isindex", - "keygen", - "link", - "meta", - "param", - "source", - "track", - "wbr" - ]); - var foreignContextElements = /* @__PURE__ */ new Set(["math", "svg"]); - var htmlIntegrationElements = /* @__PURE__ */ new Set([ - "mi", - "mo", - "mn", - "ms", - "mtext", - "annotation-xml", - "foreignobject", - "desc", - "title" - ]); - var reNameEnd = /\s|\//; - var Parser = function() { - function Parser2(cbs, options) { - if (options === void 0) { - options = {}; - } - var _a, _b, _c, _d, _e; - this.options = options; - this.startIndex = 0; - this.endIndex = 0; - this.openTagStart = 0; - this.tagname = ""; - this.attribname = ""; - this.attribvalue = ""; - this.attribs = null; - this.stack = []; - this.foreignContext = []; - this.cbs = cbs !== null && cbs !== void 0 ? cbs : {}; - this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode; - this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode; - this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_1.default)(this.options, this); - (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this); - } - Parser2.prototype.ontext = function(data) { - var _a, _b; - var idx = this.tokenizer.getAbsoluteIndex(); - this.endIndex = idx - 1; - (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data); - this.startIndex = idx; - }; - Parser2.prototype.isVoidElement = function(name) { - return !this.options.xmlMode && voidElements.has(name); - }; - Parser2.prototype.onopentagname = function(name) { - this.endIndex = this.tokenizer.getAbsoluteIndex(); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - this.emitOpenTag(name); - }; - Parser2.prototype.emitOpenTag = function(name) { - var _a, _b, _c, _d; - this.openTagStart = this.startIndex; - this.tagname = name; - var impliesClose = !this.options.xmlMode && openImpliesClose.get(name); - if (impliesClose) { - while (this.stack.length > 0 && impliesClose.has(this.stack[this.stack.length - 1])) { - var el = this.stack.pop(); - (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, el, true); - } - } - if (!this.isVoidElement(name)) { - this.stack.push(name); - if (foreignContextElements.has(name)) { - this.foreignContext.push(true); - } else if (htmlIntegrationElements.has(name)) { - this.foreignContext.push(false); - } - } - (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name); - if (this.cbs.onopentag) - this.attribs = {}; - }; - Parser2.prototype.endOpenTag = function(isImplied) { - var _a, _b; - this.startIndex = this.openTagStart; - this.endIndex = this.tokenizer.getAbsoluteIndex(); - if (this.attribs) { - (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied); - this.attribs = null; - } - if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) { - this.cbs.onclosetag(this.tagname, true); - } - this.tagname = ""; - }; - Parser2.prototype.onopentagend = function() { - this.endOpenTag(false); - this.startIndex = this.endIndex + 1; - }; - Parser2.prototype.onclosetag = function(name) { - var _a, _b, _c, _d, _e, _f; - this.endIndex = this.tokenizer.getAbsoluteIndex(); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - if (foreignContextElements.has(name) || htmlIntegrationElements.has(name)) { - this.foreignContext.pop(); - } - if (!this.isVoidElement(name)) { - var pos = this.stack.lastIndexOf(name); - if (pos !== -1) { - if (this.cbs.onclosetag) { - var count = this.stack.length - pos; - while (count--) { - this.cbs.onclosetag(this.stack.pop(), count !== 0); - } - } else - this.stack.length = pos; - } else if (!this.options.xmlMode && name === "p") { - this.emitOpenTag(name); - this.closeCurrentTag(true); - } - } else if (!this.options.xmlMode && name === "br") { - (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, name); - (_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, name, {}, true); - (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, name, false); - } - this.startIndex = this.endIndex + 1; - }; - Parser2.prototype.onselfclosingtag = function() { - if (this.options.xmlMode || this.options.recognizeSelfClosing || this.foreignContext[this.foreignContext.length - 1]) { - this.closeCurrentTag(false); - this.startIndex = this.endIndex + 1; - } else { - this.onopentagend(); - } - }; - Parser2.prototype.closeCurrentTag = function(isOpenImplied) { - var _a, _b; - var name = this.tagname; - this.endOpenTag(isOpenImplied); - if (this.stack[this.stack.length - 1] === name) { - (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied); - this.stack.pop(); - } - }; - Parser2.prototype.onattribname = function(name) { - this.startIndex = this.tokenizer.getAbsoluteSectionStart(); - if (this.lowerCaseAttributeNames) { - name = name.toLowerCase(); - } - this.attribname = name; - }; - Parser2.prototype.onattribdata = function(value) { - this.attribvalue += value; - }; - Parser2.prototype.onattribend = function(quote) { - var _a, _b; - this.endIndex = this.tokenizer.getAbsoluteIndex(); - (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote); - if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) { - this.attribs[this.attribname] = this.attribvalue; - } - this.attribname = ""; - this.attribvalue = ""; - }; - Parser2.prototype.getInstructionName = function(value) { - var idx = value.search(reNameEnd); - var name = idx < 0 ? value : value.substr(0, idx); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - return name; - }; - Parser2.prototype.ondeclaration = function(value) { - this.endIndex = this.tokenizer.getAbsoluteIndex(); - if (this.cbs.onprocessinginstruction) { - var name_1 = this.getInstructionName(value); - this.cbs.onprocessinginstruction("!" + name_1, "!" + value); - } - this.startIndex = this.endIndex + 1; - }; - Parser2.prototype.onprocessinginstruction = function(value) { - this.endIndex = this.tokenizer.getAbsoluteIndex(); - if (this.cbs.onprocessinginstruction) { - var name_2 = this.getInstructionName(value); - this.cbs.onprocessinginstruction("?" + name_2, "?" + value); - } - this.startIndex = this.endIndex + 1; - }; - Parser2.prototype.oncomment = function(value) { - var _a, _b, _c, _d; - this.endIndex = this.tokenizer.getAbsoluteIndex(); - (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, value); - (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c); - this.startIndex = this.endIndex + 1; - }; - Parser2.prototype.oncdata = function(value) { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; - this.endIndex = this.tokenizer.getAbsoluteIndex(); - if (this.options.xmlMode || this.options.recognizeCDATA) { - (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a); - (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value); - (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e); - } else { - (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, "[CDATA[" + value + "]]"); - (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j); - } - this.startIndex = this.endIndex + 1; - }; - Parser2.prototype.onerror = function(err) { - var _a, _b; - (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, err); - }; - Parser2.prototype.onend = function() { - var _a, _b; - if (this.cbs.onclosetag) { - this.endIndex = this.startIndex; - for (var i2 = this.stack.length; i2 > 0; this.cbs.onclosetag(this.stack[--i2], true)) - ; - } - (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a); - }; - Parser2.prototype.reset = function() { - var _a, _b, _c, _d; - (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a); - this.tokenizer.reset(); - this.tagname = ""; - this.attribname = ""; - this.attribs = null; - this.stack = []; - this.startIndex = 0; - this.endIndex = 0; - (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this); - }; - Parser2.prototype.parseComplete = function(data) { - this.reset(); - this.end(data); - }; - Parser2.prototype.write = function(chunk) { - this.tokenizer.write(chunk); - }; - Parser2.prototype.end = function(chunk) { - this.tokenizer.end(chunk); - }; - Parser2.prototype.pause = function() { - this.tokenizer.pause(); - }; - Parser2.prototype.resume = function() { - this.tokenizer.resume(); - }; - Parser2.prototype.parseChunk = function(chunk) { - this.write(chunk); - }; - Parser2.prototype.done = function(chunk) { - this.end(chunk); - }; - return Parser2; - }(); - exports.Parser = Parser; - } -}); - -// node_modules/domelementtype/lib/index.js -var require_lib2 = __commonJS({ - "node_modules/domelementtype/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0; - var ElementType; - (function(ElementType2) { - ElementType2["Root"] = "root"; - ElementType2["Text"] = "text"; - ElementType2["Directive"] = "directive"; - ElementType2["Comment"] = "comment"; - ElementType2["Script"] = "script"; - ElementType2["Style"] = "style"; - ElementType2["Tag"] = "tag"; - ElementType2["CDATA"] = "cdata"; - ElementType2["Doctype"] = "doctype"; - })(ElementType = exports.ElementType || (exports.ElementType = {})); - function isTag(elem) { - return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style; - } - exports.isTag = isTag; - exports.Root = ElementType.Root; - exports.Text = ElementType.Text; - exports.Directive = ElementType.Directive; - exports.Comment = ElementType.Comment; - exports.Script = ElementType.Script; - exports.Style = ElementType.Style; - exports.Tag = ElementType.Tag; - exports.CDATA = ElementType.CDATA; - exports.Doctype = ElementType.Doctype; - } -}); - -// node_modules/domhandler/lib/node.js -var require_node = __commonJS({ - "node_modules/domhandler/lib/node.js"(exports) { - "use strict"; - var __extends2 = exports && exports.__extends || function() { - var extendStatics = function(d2, b2) { - extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) { - d3.__proto__ = b3; - } || function(d3, b3) { - for (var p2 in b3) - if (Object.prototype.hasOwnProperty.call(b3, p2)) - d3[p2] = b3[p2]; - }; - return extendStatics(d2, b2); - }; - return function(d2, b2) { - if (typeof b2 !== "function" && b2 !== null) - throw new TypeError("Class extends value " + String(b2) + " is not a constructor or null"); - extendStatics(d2, b2); - function __() { - this.constructor = d2; - } - d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __()); - }; - }(); - var __assign = exports && exports.__assign || function() { - __assign = Object.assign || function(t2) { - for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) { - s2 = arguments[i2]; - for (var p2 in s2) - if (Object.prototype.hasOwnProperty.call(s2, p2)) - t2[p2] = s2[p2]; - } - return t2; - }; - return __assign.apply(this, arguments); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0; - var domelementtype_1 = require_lib2(); - var nodeTypes = /* @__PURE__ */ new Map([ - [domelementtype_1.ElementType.Tag, 1], - [domelementtype_1.ElementType.Script, 1], - [domelementtype_1.ElementType.Style, 1], - [domelementtype_1.ElementType.Directive, 1], - [domelementtype_1.ElementType.Text, 3], - [domelementtype_1.ElementType.CDATA, 4], - [domelementtype_1.ElementType.Comment, 8], - [domelementtype_1.ElementType.Root, 9] - ]); - var Node = function() { - function Node2(type) { - this.type = type; - this.parent = null; - this.prev = null; - this.next = null; - this.startIndex = null; - this.endIndex = null; - } - Object.defineProperty(Node2.prototype, "nodeType", { - get: function() { - var _a; - return (_a = nodeTypes.get(this.type)) !== null && _a !== void 0 ? _a : 1; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(Node2.prototype, "parentNode", { - get: function() { - return this.parent; - }, - set: function(parent) { - this.parent = parent; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(Node2.prototype, "previousSibling", { - get: function() { - return this.prev; - }, - set: function(prev) { - this.prev = prev; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(Node2.prototype, "nextSibling", { - get: function() { - return this.next; - }, - set: function(next) { - this.next = next; - }, - enumerable: false, - configurable: true - }); - Node2.prototype.cloneNode = function(recursive) { - if (recursive === void 0) { - recursive = false; - } - return cloneNode(this, recursive); - }; - return Node2; - }(); - exports.Node = Node; - var DataNode = function(_super) { - __extends2(DataNode2, _super); - function DataNode2(type, data) { - var _this = _super.call(this, type) || this; - _this.data = data; - return _this; - } - Object.defineProperty(DataNode2.prototype, "nodeValue", { - get: function() { - return this.data; - }, - set: function(data) { - this.data = data; - }, - enumerable: false, - configurable: true - }); - return DataNode2; - }(Node); - exports.DataNode = DataNode; - var Text = function(_super) { - __extends2(Text2, _super); - function Text2(data) { - return _super.call(this, domelementtype_1.ElementType.Text, data) || this; - } - return Text2; - }(DataNode); - exports.Text = Text; - var Comment = function(_super) { - __extends2(Comment2, _super); - function Comment2(data) { - return _super.call(this, domelementtype_1.ElementType.Comment, data) || this; - } - return Comment2; - }(DataNode); - exports.Comment = Comment; - var ProcessingInstruction = function(_super) { - __extends2(ProcessingInstruction2, _super); - function ProcessingInstruction2(name, data) { - var _this = _super.call(this, domelementtype_1.ElementType.Directive, data) || this; - _this.name = name; - return _this; - } - return ProcessingInstruction2; - }(DataNode); - exports.ProcessingInstruction = ProcessingInstruction; - var NodeWithChildren = function(_super) { - __extends2(NodeWithChildren2, _super); - function NodeWithChildren2(type, children) { - var _this = _super.call(this, type) || this; - _this.children = children; - return _this; - } - Object.defineProperty(NodeWithChildren2.prototype, "firstChild", { - get: function() { - var _a; - return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(NodeWithChildren2.prototype, "lastChild", { - get: function() { - return this.children.length > 0 ? this.children[this.children.length - 1] : null; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(NodeWithChildren2.prototype, "childNodes", { - get: function() { - return this.children; - }, - set: function(children) { - this.children = children; - }, - enumerable: false, - configurable: true - }); - return NodeWithChildren2; - }(Node); - exports.NodeWithChildren = NodeWithChildren; - var Document = function(_super) { - __extends2(Document2, _super); - function Document2(children) { - return _super.call(this, domelementtype_1.ElementType.Root, children) || this; - } - return Document2; - }(NodeWithChildren); - exports.Document = Document; - var Element3 = function(_super) { - __extends2(Element4, _super); - function Element4(name, attribs, children, type) { - if (children === void 0) { - children = []; - } - if (type === void 0) { - type = name === "script" ? domelementtype_1.ElementType.Script : name === "style" ? domelementtype_1.ElementType.Style : domelementtype_1.ElementType.Tag; - } - var _this = _super.call(this, type, children) || this; - _this.name = name; - _this.attribs = attribs; - return _this; - } - Object.defineProperty(Element4.prototype, "tagName", { - get: function() { - return this.name; - }, - set: function(name) { - this.name = name; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(Element4.prototype, "attributes", { - get: function() { - var _this = this; - return Object.keys(this.attribs).map(function(name) { - var _a, _b; - return { - name, - value: _this.attribs[name], - namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name], - prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name] - }; - }); - }, - enumerable: false, - configurable: true - }); - return Element4; - }(NodeWithChildren); - exports.Element = Element3; - function isTag(node) { - return (0, domelementtype_1.isTag)(node); - } - exports.isTag = isTag; - function isCDATA(node) { - return node.type === domelementtype_1.ElementType.CDATA; - } - exports.isCDATA = isCDATA; - function isText(node) { - return node.type === domelementtype_1.ElementType.Text; - } - exports.isText = isText; - function isComment(node) { - return node.type === domelementtype_1.ElementType.Comment; - } - exports.isComment = isComment; - function isDirective(node) { - return node.type === domelementtype_1.ElementType.Directive; - } - exports.isDirective = isDirective; - function isDocument(node) { - return node.type === domelementtype_1.ElementType.Root; - } - exports.isDocument = isDocument; - function hasChildren(node) { - return Object.prototype.hasOwnProperty.call(node, "children"); - } - exports.hasChildren = hasChildren; - function cloneNode(node, recursive) { - if (recursive === void 0) { - recursive = false; - } - var result; - if (isText(node)) { - result = new Text(node.data); - } else if (isComment(node)) { - result = new Comment(node.data); - } else if (isTag(node)) { - var children = recursive ? cloneChildren(node.children) : []; - var clone_1 = new Element3(node.name, __assign({}, node.attribs), children); - children.forEach(function(child) { - return child.parent = clone_1; - }); - if (node.namespace != null) { - clone_1.namespace = node.namespace; - } - if (node["x-attribsNamespace"]) { - clone_1["x-attribsNamespace"] = __assign({}, node["x-attribsNamespace"]); - } - if (node["x-attribsPrefix"]) { - clone_1["x-attribsPrefix"] = __assign({}, node["x-attribsPrefix"]); - } - result = clone_1; - } else if (isCDATA(node)) { - var children = recursive ? cloneChildren(node.children) : []; - var clone_2 = new NodeWithChildren(domelementtype_1.ElementType.CDATA, children); - children.forEach(function(child) { - return child.parent = clone_2; - }); - result = clone_2; - } else if (isDocument(node)) { - var children = recursive ? cloneChildren(node.children) : []; - var clone_3 = new Document(children); - children.forEach(function(child) { - return child.parent = clone_3; - }); - if (node["x-mode"]) { - clone_3["x-mode"] = node["x-mode"]; - } - result = clone_3; - } else if (isDirective(node)) { - var instruction = new ProcessingInstruction(node.name, node.data); - if (node["x-name"] != null) { - instruction["x-name"] = node["x-name"]; - instruction["x-publicId"] = node["x-publicId"]; - instruction["x-systemId"] = node["x-systemId"]; - } - result = instruction; - } else { - throw new Error("Not implemented yet: ".concat(node.type)); - } - result.startIndex = node.startIndex; - result.endIndex = node.endIndex; - if (node.sourceCodeLocation != null) { - result.sourceCodeLocation = node.sourceCodeLocation; - } - return result; - } - exports.cloneNode = cloneNode; - function cloneChildren(childs) { - var children = childs.map(function(child) { - return cloneNode(child, true); - }); - for (var i2 = 1; i2 < children.length; i2++) { - children[i2].prev = children[i2 - 1]; - children[i2 - 1].next = children[i2]; - } - return children; - } - } -}); - -// node_modules/domhandler/lib/index.js -var require_lib3 = __commonJS({ - "node_modules/domhandler/lib/index.js"(exports) { - "use strict"; - var __createBinding = exports && exports.__createBinding || (Object.create ? function(o2, m2, k2, k22) { - if (k22 === void 0) - k22 = k2; - var desc = Object.getOwnPropertyDescriptor(m2, k2); - if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { - return m2[k2]; - } }; - } - Object.defineProperty(o2, k22, desc); - } : function(o2, m2, k2, k22) { - if (k22 === void 0) - k22 = k2; - o2[k22] = m2[k2]; - }); - var __exportStar = exports && exports.__exportStar || function(m2, exports2) { - for (var p2 in m2) - if (p2 !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p2)) - __createBinding(exports2, m2, p2); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.DomHandler = void 0; - var domelementtype_1 = require_lib2(); - var node_1 = require_node(); - __exportStar(require_node(), exports); - var reWhitespace = /\s+/g; - var defaultOpts = { - normalizeWhitespace: false, - withStartIndices: false, - withEndIndices: false, - xmlMode: false - }; - var DomHandler = function() { - function DomHandler2(callback, options, elementCB) { - this.dom = []; - this.root = new node_1.Document(this.dom); - this.done = false; - this.tagStack = [this.root]; - this.lastNode = null; - this.parser = null; - if (typeof options === "function") { - elementCB = options; - options = defaultOpts; - } - if (typeof callback === "object") { - options = callback; - callback = void 0; - } - this.callback = callback !== null && callback !== void 0 ? callback : null; - this.options = options !== null && options !== void 0 ? options : defaultOpts; - this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null; - } - DomHandler2.prototype.onparserinit = function(parser) { - this.parser = parser; - }; - DomHandler2.prototype.onreset = function() { - this.dom = []; - this.root = new node_1.Document(this.dom); - this.done = false; - this.tagStack = [this.root]; - this.lastNode = null; - this.parser = null; - }; - DomHandler2.prototype.onend = function() { - if (this.done) - return; - this.done = true; - this.parser = null; - this.handleCallback(null); - }; - DomHandler2.prototype.onerror = function(error) { - this.handleCallback(error); - }; - DomHandler2.prototype.onclosetag = function() { - this.lastNode = null; - var elem = this.tagStack.pop(); - if (this.options.withEndIndices) { - elem.endIndex = this.parser.endIndex; - } - if (this.elementCB) - this.elementCB(elem); - }; - DomHandler2.prototype.onopentag = function(name, attribs) { - var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : void 0; - var element = new node_1.Element(name, attribs, void 0, type); - this.addNode(element); - this.tagStack.push(element); - }; - DomHandler2.prototype.ontext = function(data) { - var normalizeWhitespace = this.options.normalizeWhitespace; - var lastNode = this.lastNode; - if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) { - if (normalizeWhitespace) { - lastNode.data = (lastNode.data + data).replace(reWhitespace, " "); - } else { - lastNode.data += data; - } - if (this.options.withEndIndices) { - lastNode.endIndex = this.parser.endIndex; - } - } else { - if (normalizeWhitespace) { - data = data.replace(reWhitespace, " "); - } - var node = new node_1.Text(data); - this.addNode(node); - this.lastNode = node; - } - }; - DomHandler2.prototype.oncomment = function(data) { - if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) { - this.lastNode.data += data; - return; - } - var node = new node_1.Comment(data); - this.addNode(node); - this.lastNode = node; - }; - DomHandler2.prototype.oncommentend = function() { - this.lastNode = null; - }; - DomHandler2.prototype.oncdatastart = function() { - var text = new node_1.Text(""); - var node = new node_1.NodeWithChildren(domelementtype_1.ElementType.CDATA, [text]); - this.addNode(node); - text.parent = node; - this.lastNode = text; - }; - DomHandler2.prototype.oncdataend = function() { - this.lastNode = null; - }; - DomHandler2.prototype.onprocessinginstruction = function(name, data) { - var node = new node_1.ProcessingInstruction(name, data); - this.addNode(node); - }; - DomHandler2.prototype.handleCallback = function(error) { - if (typeof this.callback === "function") { - this.callback(error, this.dom); - } else if (error) { - throw error; - } - }; - DomHandler2.prototype.addNode = function(node) { - var parent = this.tagStack[this.tagStack.length - 1]; - var previousSibling = parent.children[parent.children.length - 1]; - if (this.options.withStartIndices) { - node.startIndex = this.parser.startIndex; - } - if (this.options.withEndIndices) { - node.endIndex = this.parser.endIndex; - } - parent.children.push(node); - if (previousSibling) { - node.prev = previousSibling; - previousSibling.next = node; - } - node.parent = parent; - this.lastNode = null; - }; - return DomHandler2; - }(); - exports.DomHandler = DomHandler; - exports.default = DomHandler; - } -}); - -// node_modules/html-dom-parser/lib/server/utilities.js -var require_utilities3 = __commonJS({ - "node_modules/html-dom-parser/lib/server/utilities.js"(exports, module2) { - function unsetRootParent(nodes) { - for (var index = 0, len = nodes.length; index < len; index++) { - var node = nodes[index]; - node.parent = null; - } - return nodes; - } - module2.exports = { - unsetRootParent - }; - } -}); - -// node_modules/html-dom-parser/lib/server/html-to-dom.js -var require_html_to_dom = __commonJS({ - "node_modules/html-dom-parser/lib/server/html-to-dom.js"(exports, module2) { - var Parser = require_Parser().Parser; - var DomHandler = require_lib3().DomHandler; - var unsetRootParent = require_utilities3().unsetRootParent; - function HTMLDOMParser(html, options) { - if (typeof html !== "string") { - throw new TypeError("First argument must be a string."); - } - if (html === "") { - return []; - } - var handler = new DomHandler(void 0, options); - new Parser(handler, options).end(html); - return unsetRootParent(handler.dom); - } - module2.exports = HTMLDOMParser; - } -}); - -// node_modules/html-dom-parser/index.js -var require_html_dom_parser = __commonJS({ - "node_modules/html-dom-parser/index.js"(exports, module2) { - module2.exports = require_html_to_dom(); - } -}); - -// node_modules/html-react-parser/index.js -var require_html_react_parser = __commonJS({ - "node_modules/html-react-parser/index.js"(exports, module2) { - var domToReact2 = require_dom_to_react(); - var attributesToProps2 = require_attributes_to_props(); - var htmlToDOM2 = require_html_dom_parser(); - htmlToDOM2 = typeof htmlToDOM2.default === "function" ? htmlToDOM2.default : htmlToDOM2; - var domParserOptions = { lowerCaseAttributeNames: false }; - function HTMLReactParser2(html, options) { - if (typeof html !== "string") { - throw new TypeError("First argument must be a string"); - } - if (html === "") { - return []; - } - options = options || {}; - return domToReact2( - htmlToDOM2(html, options.htmlparser2 || domParserOptions), - options - ); - } - HTMLReactParser2.domToReact = domToReact2; - HTMLReactParser2.htmlToDOM = htmlToDOM2; - HTMLReactParser2.attributesToProps = attributesToProps2; - HTMLReactParser2.Element = require_lib3().Element; - module2.exports = HTMLReactParser2; - module2.exports.default = HTMLReactParser2; - } -}); - // node_modules/react/cjs/react-jsx-runtime.development.js var require_react_jsx_runtime_development = __commonJS({ "node_modules/react/cjs/react-jsx-runtime.development.js"(exports) { @@ -31572,7 +22961,7 @@ var require_react_jsx_runtime_development = __commonJS({ if (true) { (function() { "use strict"; - var React11 = require_react(); + var React49 = require_react(); var REACT_ELEMENT_TYPE = Symbol.for("react.element"); var REACT_PORTAL_TYPE = Symbol.for("react.portal"); var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); @@ -31598,7 +22987,7 @@ var require_react_jsx_runtime_development = __commonJS({ } return null; } - var ReactSharedInternals = React11.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactSharedInternals = React49.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; function error(format) { { { @@ -31647,7 +23036,7 @@ var require_react_jsx_runtime_development = __commonJS({ } return false; } - function getWrappedName2(outerType, innerType, wrapperName) { + function getWrappedName(outerType, innerType, wrapperName) { var displayName = outerType.displayName; if (displayName) { return displayName; @@ -31696,7 +23085,7 @@ var require_react_jsx_runtime_development = __commonJS({ var provider = type; return getContextName(provider._context) + ".Provider"; case REACT_FORWARD_REF_TYPE: - return getWrappedName2(type, type.render, "ForwardRef"); + return getWrappedName(type, type.render, "ForwardRef"); case REACT_MEMO_TYPE: var outerName = type.displayName || null; if (outerName !== null) { @@ -31706,9 +23095,9 @@ var require_react_jsx_runtime_development = __commonJS({ case REACT_LAZY_TYPE: { var lazyComponent = type; var payload = lazyComponent._payload; - var init = lazyComponent._init; + var init2 = lazyComponent._init; try { - return getComponentNameFromType(init(payload)); + return getComponentNameFromType(init2(payload)); } catch (x2) { return null; } @@ -31956,9 +23345,9 @@ var require_react_jsx_runtime_development = __commonJS({ case REACT_LAZY_TYPE: { var lazyComponent = type; var payload = lazyComponent._payload; - var init = lazyComponent._init; + var init2 = lazyComponent._init; try { - return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); + return describeUnknownElementTypeFrameInDEV(init2(payload), source, ownerFn); } catch (x2) { } } @@ -31980,7 +23369,7 @@ var require_react_jsx_runtime_development = __commonJS({ } } } - function checkPropTypes(typeSpecs, values2, location, componentName, element) { + function checkPropTypes(typeSpecs, values, location, componentName, element) { { var has = Function.call.bind(hasOwnProperty); for (var typeSpecName in typeSpecs) { @@ -31992,7 +23381,7 @@ var require_react_jsx_runtime_development = __commonJS({ err.name = "Invariant Violation"; throw err; } - error$1 = typeSpecs[typeSpecName](values2, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); + error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); } catch (ex) { error$1 = ex; } @@ -32424,11 +23813,11 @@ var require_react_jsx_runtime_development = __commonJS({ return jsxWithValidation(type, props, key, false); } } - var jsx39 = jsxWithValidationDynamic; - var jsxs21 = jsxWithValidationStatic; + var jsx3 = jsxWithValidationDynamic; + var jsxs2 = jsxWithValidationStatic; exports.Fragment = REACT_FRAGMENT_TYPE; - exports.jsx = jsx39; - exports.jsxs = jsxs21; + exports.jsx = jsx3; + exports.jsxs = jsxs2; })(); } } @@ -32446,2536 +23835,6 @@ var require_jsx_runtime = __commonJS({ } }); -// node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js -var require_react_is_development = __commonJS({ - "node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js"(exports) { - "use strict"; - if (true) { - (function() { - "use strict"; - var hasSymbol = typeof Symbol === "function" && Symbol.for; - var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for("react.element") : 60103; - var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for("react.portal") : 60106; - var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for("react.fragment") : 60107; - var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for("react.strict_mode") : 60108; - var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for("react.profiler") : 60114; - var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for("react.provider") : 60109; - var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for("react.context") : 60110; - var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for("react.async_mode") : 60111; - var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for("react.concurrent_mode") : 60111; - var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for("react.forward_ref") : 60112; - var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for("react.suspense") : 60113; - var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for("react.suspense_list") : 60120; - var REACT_MEMO_TYPE = hasSymbol ? Symbol.for("react.memo") : 60115; - var REACT_LAZY_TYPE = hasSymbol ? Symbol.for("react.lazy") : 60116; - var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for("react.block") : 60121; - var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for("react.fundamental") : 60117; - var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for("react.responder") : 60118; - var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for("react.scope") : 60119; - function isValidElementType2(type) { - return typeof type === "string" || typeof type === "function" || type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === "object" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); - } - function typeOf(object) { - if (typeof object === "object" && object !== null) { - var $$typeof = object.$$typeof; - switch ($$typeof) { - case REACT_ELEMENT_TYPE: - var type = object.type; - switch (type) { - case REACT_ASYNC_MODE_TYPE: - case REACT_CONCURRENT_MODE_TYPE: - case REACT_FRAGMENT_TYPE: - case REACT_PROFILER_TYPE: - case REACT_STRICT_MODE_TYPE: - case REACT_SUSPENSE_TYPE: - return type; - default: - var $$typeofType = type && type.$$typeof; - switch ($$typeofType) { - case REACT_CONTEXT_TYPE: - case REACT_FORWARD_REF_TYPE: - case REACT_LAZY_TYPE: - case REACT_MEMO_TYPE: - case REACT_PROVIDER_TYPE: - return $$typeofType; - default: - return $$typeof; - } - } - case REACT_PORTAL_TYPE: - return $$typeof; - } - } - return void 0; - } - var AsyncMode = REACT_ASYNC_MODE_TYPE; - var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; - var ContextConsumer = REACT_CONTEXT_TYPE; - var ContextProvider = REACT_PROVIDER_TYPE; - var Element3 = REACT_ELEMENT_TYPE; - var ForwardRef2 = REACT_FORWARD_REF_TYPE; - var Fragment6 = REACT_FRAGMENT_TYPE; - var Lazy = REACT_LAZY_TYPE; - var Memo2 = REACT_MEMO_TYPE; - var Portal = REACT_PORTAL_TYPE; - var Profiler = REACT_PROFILER_TYPE; - var StrictMode = REACT_STRICT_MODE_TYPE; - var Suspense = REACT_SUSPENSE_TYPE; - var hasWarnedAboutDeprecatedIsAsyncMode = false; - function isAsyncMode(object) { - { - if (!hasWarnedAboutDeprecatedIsAsyncMode) { - hasWarnedAboutDeprecatedIsAsyncMode = true; - console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API."); - } - } - return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; - } - function isConcurrentMode(object) { - return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; - } - function isContextConsumer2(object) { - return typeOf(object) === REACT_CONTEXT_TYPE; - } - function isContextProvider(object) { - return typeOf(object) === REACT_PROVIDER_TYPE; - } - function isElement(object) { - return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; - } - function isForwardRef(object) { - return typeOf(object) === REACT_FORWARD_REF_TYPE; - } - function isFragment(object) { - return typeOf(object) === REACT_FRAGMENT_TYPE; - } - function isLazy(object) { - return typeOf(object) === REACT_LAZY_TYPE; - } - function isMemo(object) { - return typeOf(object) === REACT_MEMO_TYPE; - } - function isPortal(object) { - return typeOf(object) === REACT_PORTAL_TYPE; - } - function isProfiler(object) { - return typeOf(object) === REACT_PROFILER_TYPE; - } - function isStrictMode(object) { - return typeOf(object) === REACT_STRICT_MODE_TYPE; - } - function isSuspense(object) { - return typeOf(object) === REACT_SUSPENSE_TYPE; - } - exports.AsyncMode = AsyncMode; - exports.ConcurrentMode = ConcurrentMode; - exports.ContextConsumer = ContextConsumer; - exports.ContextProvider = ContextProvider; - exports.Element = Element3; - exports.ForwardRef = ForwardRef2; - exports.Fragment = Fragment6; - exports.Lazy = Lazy; - exports.Memo = Memo2; - exports.Portal = Portal; - exports.Profiler = Profiler; - exports.StrictMode = StrictMode; - exports.Suspense = Suspense; - exports.isAsyncMode = isAsyncMode; - exports.isConcurrentMode = isConcurrentMode; - exports.isContextConsumer = isContextConsumer2; - exports.isContextProvider = isContextProvider; - exports.isElement = isElement; - exports.isForwardRef = isForwardRef; - exports.isFragment = isFragment; - exports.isLazy = isLazy; - exports.isMemo = isMemo; - exports.isPortal = isPortal; - exports.isProfiler = isProfiler; - exports.isStrictMode = isStrictMode; - exports.isSuspense = isSuspense; - exports.isValidElementType = isValidElementType2; - exports.typeOf = typeOf; - })(); - } - } -}); - -// node_modules/prop-types/node_modules/react-is/index.js -var require_react_is = __commonJS({ - "node_modules/prop-types/node_modules/react-is/index.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_react_is_development(); - } - } -}); - -// node_modules/object-assign/index.js -var require_object_assign = __commonJS({ - "node_modules/object-assign/index.js"(exports, module2) { - "use strict"; - var getOwnPropertySymbols = Object.getOwnPropertySymbols; - var hasOwnProperty = Object.prototype.hasOwnProperty; - var propIsEnumerable = Object.prototype.propertyIsEnumerable; - function toObject(val) { - if (val === null || val === void 0) { - throw new TypeError("Object.assign cannot be called with null or undefined"); - } - return Object(val); - } - function shouldUseNative() { - try { - if (!Object.assign) { - return false; - } - var test1 = new String("abc"); - test1[5] = "de"; - if (Object.getOwnPropertyNames(test1)[0] === "5") { - return false; - } - var test2 = {}; - for (var i2 = 0; i2 < 10; i2++) { - test2["_" + String.fromCharCode(i2)] = i2; - } - var order2 = Object.getOwnPropertyNames(test2).map(function(n2) { - return test2[n2]; - }); - if (order2.join("") !== "0123456789") { - return false; - } - var test3 = {}; - "abcdefghijklmnopqrst".split("").forEach(function(letter) { - test3[letter] = letter; - }); - if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") { - return false; - } - return true; - } catch (err) { - return false; - } - } - module2.exports = shouldUseNative() ? Object.assign : function(target, source) { - var from; - var to = toObject(target); - var symbols; - for (var s2 = 1; s2 < arguments.length; s2++) { - from = Object(arguments[s2]); - for (var key in from) { - if (hasOwnProperty.call(from, key)) { - to[key] = from[key]; - } - } - if (getOwnPropertySymbols) { - symbols = getOwnPropertySymbols(from); - for (var i2 = 0; i2 < symbols.length; i2++) { - if (propIsEnumerable.call(from, symbols[i2])) { - to[symbols[i2]] = from[symbols[i2]]; - } - } - } - } - return to; - }; - } -}); - -// node_modules/prop-types/lib/ReactPropTypesSecret.js -var require_ReactPropTypesSecret = __commonJS({ - "node_modules/prop-types/lib/ReactPropTypesSecret.js"(exports, module2) { - "use strict"; - var ReactPropTypesSecret = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"; - module2.exports = ReactPropTypesSecret; - } -}); - -// node_modules/prop-types/lib/has.js -var require_has = __commonJS({ - "node_modules/prop-types/lib/has.js"(exports, module2) { - module2.exports = Function.call.bind(Object.prototype.hasOwnProperty); - } -}); - -// node_modules/prop-types/checkPropTypes.js -var require_checkPropTypes = __commonJS({ - "node_modules/prop-types/checkPropTypes.js"(exports, module2) { - "use strict"; - var printWarning = function() { - }; - if (true) { - ReactPropTypesSecret = require_ReactPropTypesSecret(); - loggedTypeFailures = {}; - has = require_has(); - printWarning = function(text) { - var message = "Warning: " + text; - if (typeof console !== "undefined") { - console.error(message); - } - try { - throw new Error(message); - } catch (x2) { - } - }; - } - var ReactPropTypesSecret; - var loggedTypeFailures; - var has; - function checkPropTypes(typeSpecs, values2, location, componentName, getStack) { - if (true) { - for (var typeSpecName in typeSpecs) { - if (has(typeSpecs, typeSpecName)) { - var error; - try { - if (typeof typeSpecs[typeSpecName] !== "function") { - var err = Error( - (componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`." - ); - err.name = "Invariant Violation"; - throw err; - } - error = typeSpecs[typeSpecName](values2, typeSpecName, componentName, location, null, ReactPropTypesSecret); - } catch (ex) { - error = ex; - } - if (error && !(error instanceof Error)) { - printWarning( - (componentName || "React class") + ": type specification of " + location + " `" + typeSpecName + "` is invalid; the type checker function must return `null` or an `Error` but returned a " + typeof error + ". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)." - ); - } - if (error instanceof Error && !(error.message in loggedTypeFailures)) { - loggedTypeFailures[error.message] = true; - var stack = getStack ? getStack() : ""; - printWarning( - "Failed " + location + " type: " + error.message + (stack != null ? stack : "") - ); - } - } - } - } - } - checkPropTypes.resetWarningCache = function() { - if (true) { - loggedTypeFailures = {}; - } - }; - module2.exports = checkPropTypes; - } -}); - -// node_modules/prop-types/factoryWithTypeCheckers.js -var require_factoryWithTypeCheckers = __commonJS({ - "node_modules/prop-types/factoryWithTypeCheckers.js"(exports, module2) { - "use strict"; - var ReactIs = require_react_is(); - var assign = require_object_assign(); - var ReactPropTypesSecret = require_ReactPropTypesSecret(); - var has = require_has(); - var checkPropTypes = require_checkPropTypes(); - var printWarning = function() { - }; - if (true) { - printWarning = function(text) { - var message = "Warning: " + text; - if (typeof console !== "undefined") { - console.error(message); - } - try { - throw new Error(message); - } catch (x2) { - } - }; - } - function emptyFunctionThatReturnsNull() { - return null; - } - module2.exports = function(isValidElement, throwOnDirectAccess) { - var ITERATOR_SYMBOL = typeof Symbol === "function" && Symbol.iterator; - var FAUX_ITERATOR_SYMBOL = "@@iterator"; - function getIteratorFn(maybeIterable) { - var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); - if (typeof iteratorFn === "function") { - return iteratorFn; - } - } - var ANONYMOUS = "<>"; - var ReactPropTypes = { - array: createPrimitiveTypeChecker("array"), - bigint: createPrimitiveTypeChecker("bigint"), - bool: createPrimitiveTypeChecker("boolean"), - func: createPrimitiveTypeChecker("function"), - number: createPrimitiveTypeChecker("number"), - object: createPrimitiveTypeChecker("object"), - string: createPrimitiveTypeChecker("string"), - symbol: createPrimitiveTypeChecker("symbol"), - any: createAnyTypeChecker(), - arrayOf: createArrayOfTypeChecker, - element: createElementTypeChecker(), - elementType: createElementTypeTypeChecker(), - instanceOf: createInstanceTypeChecker, - node: createNodeChecker(), - objectOf: createObjectOfTypeChecker, - oneOf: createEnumTypeChecker, - oneOfType: createUnionTypeChecker, - shape: createShapeTypeChecker, - exact: createStrictShapeTypeChecker - }; - function is(x2, y2) { - if (x2 === y2) { - return x2 !== 0 || 1 / x2 === 1 / y2; - } else { - return x2 !== x2 && y2 !== y2; - } - } - function PropTypeError(message, data) { - this.message = message; - this.data = data && typeof data === "object" ? data : {}; - this.stack = ""; - } - PropTypeError.prototype = Error.prototype; - function createChainableTypeChecker(validate) { - if (true) { - var manualPropTypeCallCache = {}; - var manualPropTypeWarningCount = 0; - } - function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { - componentName = componentName || ANONYMOUS; - propFullName = propFullName || propName; - if (secret !== ReactPropTypesSecret) { - if (throwOnDirectAccess) { - var err = new Error( - "Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types" - ); - err.name = "Invariant Violation"; - throw err; - } else if (typeof console !== "undefined") { - var cacheKey = componentName + ":" + propName; - if (!manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3) { - printWarning( - "You are manually calling a React.PropTypes validation function for the `" + propFullName + "` prop on `" + componentName + "`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details." - ); - manualPropTypeCallCache[cacheKey] = true; - manualPropTypeWarningCount++; - } - } - } - if (props[propName] == null) { - if (isRequired) { - if (props[propName] === null) { - return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required " + ("in `" + componentName + "`, but its value is `null`.")); - } - return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required in " + ("`" + componentName + "`, but its value is `undefined`.")); - } - return null; - } else { - return validate(props, propName, componentName, location, propFullName); - } - } - var chainedCheckType = checkType.bind(null, false); - chainedCheckType.isRequired = checkType.bind(null, true); - return chainedCheckType; - } - function createPrimitiveTypeChecker(expectedType) { - function validate(props, propName, componentName, location, propFullName, secret) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== expectedType) { - var preciseType = getPreciseType(propValue); - return new PropTypeError( - "Invalid " + location + " `" + propFullName + "` of type " + ("`" + preciseType + "` supplied to `" + componentName + "`, expected ") + ("`" + expectedType + "`."), - { expectedType } - ); - } - return null; - } - return createChainableTypeChecker(validate); - } - function createAnyTypeChecker() { - return createChainableTypeChecker(emptyFunctionThatReturnsNull); - } - function createArrayOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== "function") { - return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside arrayOf."); - } - var propValue = props[propName]; - if (!Array.isArray(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an array.")); - } - for (var i2 = 0; i2 < propValue.length; i2++) { - var error = typeChecker(propValue, i2, componentName, location, propFullName + "[" + i2 + "]", ReactPropTypesSecret); - if (error instanceof Error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - function createElementTypeChecker() { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - if (!isValidElement(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement.")); - } - return null; - } - return createChainableTypeChecker(validate); - } - function createElementTypeTypeChecker() { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - if (!ReactIs.isValidElementType(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement type.")); - } - return null; - } - return createChainableTypeChecker(validate); - } - function createInstanceTypeChecker(expectedClass) { - function validate(props, propName, componentName, location, propFullName) { - if (!(props[propName] instanceof expectedClass)) { - var expectedClassName = expectedClass.name || ANONYMOUS; - var actualClassName = getClassName(props[propName]); - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + actualClassName + "` supplied to `" + componentName + "`, expected ") + ("instance of `" + expectedClassName + "`.")); - } - return null; - } - return createChainableTypeChecker(validate); - } - function createEnumTypeChecker(expectedValues) { - if (!Array.isArray(expectedValues)) { - if (true) { - if (arguments.length > 1) { - printWarning( - "Invalid arguments supplied to oneOf, expected an array, got " + arguments.length + " arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])." - ); - } else { - printWarning("Invalid argument supplied to oneOf, expected an array."); - } - } - return emptyFunctionThatReturnsNull; - } - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - for (var i2 = 0; i2 < expectedValues.length; i2++) { - if (is(propValue, expectedValues[i2])) { - return null; - } - } - var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { - var type = getPreciseType(value); - if (type === "symbol") { - return String(value); - } - return value; - }); - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of value `" + String(propValue) + "` " + ("supplied to `" + componentName + "`, expected one of " + valuesString + ".")); - } - return createChainableTypeChecker(validate); - } - function createObjectOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== "function") { - return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside objectOf."); - } - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== "object") { - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an object.")); - } - for (var key in propValue) { - if (has(propValue, key)) { - var error = typeChecker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); - if (error instanceof Error) { - return error; - } - } - } - return null; - } - return createChainableTypeChecker(validate); - } - function createUnionTypeChecker(arrayOfTypeCheckers) { - if (!Array.isArray(arrayOfTypeCheckers)) { - true ? printWarning("Invalid argument supplied to oneOfType, expected an instance of array.") : void 0; - return emptyFunctionThatReturnsNull; - } - for (var i2 = 0; i2 < arrayOfTypeCheckers.length; i2++) { - var checker = arrayOfTypeCheckers[i2]; - if (typeof checker !== "function") { - printWarning( - "Invalid argument supplied to oneOfType. Expected an array of check functions, but received " + getPostfixForTypeWarning(checker) + " at index " + i2 + "." - ); - return emptyFunctionThatReturnsNull; - } - } - function validate(props, propName, componentName, location, propFullName) { - var expectedTypes = []; - for (var i3 = 0; i3 < arrayOfTypeCheckers.length; i3++) { - var checker2 = arrayOfTypeCheckers[i3]; - var checkerResult = checker2(props, propName, componentName, location, propFullName, ReactPropTypesSecret); - if (checkerResult == null) { - return null; - } - if (checkerResult.data && has(checkerResult.data, "expectedType")) { - expectedTypes.push(checkerResult.data.expectedType); - } - } - var expectedTypesMessage = expectedTypes.length > 0 ? ", expected one of type [" + expectedTypes.join(", ") + "]" : ""; - return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`" + expectedTypesMessage + ".")); - } - return createChainableTypeChecker(validate); - } - function createNodeChecker() { - function validate(props, propName, componentName, location, propFullName) { - if (!isNode(props[propName])) { - return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`, expected a ReactNode.")); - } - return null; - } - return createChainableTypeChecker(validate); - } - function invalidValidatorError(componentName, location, propFullName, key, type) { - return new PropTypeError( - (componentName || "React class") + ": " + location + " type `" + propFullName + "." + key + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + type + "`." - ); - } - function createShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== "object") { - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); - } - for (var key in shapeTypes) { - var checker = shapeTypes[key]; - if (typeof checker !== "function") { - return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); - } - var error = checker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); - if (error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - function createStrictShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== "object") { - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); - } - var allKeys = assign({}, props[propName], shapeTypes); - for (var key in allKeys) { - var checker = shapeTypes[key]; - if (has(shapeTypes, key) && typeof checker !== "function") { - return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); - } - if (!checker) { - return new PropTypeError( - "Invalid " + location + " `" + propFullName + "` key `" + key + "` supplied to `" + componentName + "`.\nBad object: " + JSON.stringify(props[propName], null, " ") + "\nValid keys: " + JSON.stringify(Object.keys(shapeTypes), null, " ") - ); - } - var error = checker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); - if (error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - function isNode(propValue) { - switch (typeof propValue) { - case "number": - case "string": - case "undefined": - return true; - case "boolean": - return !propValue; - case "object": - if (Array.isArray(propValue)) { - return propValue.every(isNode); - } - if (propValue === null || isValidElement(propValue)) { - return true; - } - var iteratorFn = getIteratorFn(propValue); - if (iteratorFn) { - var iterator = iteratorFn.call(propValue); - var step; - if (iteratorFn !== propValue.entries) { - while (!(step = iterator.next()).done) { - if (!isNode(step.value)) { - return false; - } - } - } else { - while (!(step = iterator.next()).done) { - var entry = step.value; - if (entry) { - if (!isNode(entry[1])) { - return false; - } - } - } - } - } else { - return false; - } - return true; - default: - return false; - } - } - function isSymbol(propType, propValue) { - if (propType === "symbol") { - return true; - } - if (!propValue) { - return false; - } - if (propValue["@@toStringTag"] === "Symbol") { - return true; - } - if (typeof Symbol === "function" && propValue instanceof Symbol) { - return true; - } - return false; - } - function getPropType(propValue) { - var propType = typeof propValue; - if (Array.isArray(propValue)) { - return "array"; - } - if (propValue instanceof RegExp) { - return "object"; - } - if (isSymbol(propType, propValue)) { - return "symbol"; - } - return propType; - } - function getPreciseType(propValue) { - if (typeof propValue === "undefined" || propValue === null) { - return "" + propValue; - } - var propType = getPropType(propValue); - if (propType === "object") { - if (propValue instanceof Date) { - return "date"; - } else if (propValue instanceof RegExp) { - return "regexp"; - } - } - return propType; - } - function getPostfixForTypeWarning(value) { - var type = getPreciseType(value); - switch (type) { - case "array": - case "object": - return "an " + type; - case "boolean": - case "date": - case "regexp": - return "a " + type; - default: - return type; - } - } - function getClassName(propValue) { - if (!propValue.constructor || !propValue.constructor.name) { - return ANONYMOUS; - } - return propValue.constructor.name; - } - ReactPropTypes.checkPropTypes = checkPropTypes; - ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; - ReactPropTypes.PropTypes = ReactPropTypes; - return ReactPropTypes; - }; - } -}); - -// node_modules/prop-types/index.js -var require_prop_types = __commonJS({ - "node_modules/prop-types/index.js"(exports, module2) { - if (true) { - ReactIs = require_react_is(); - throwOnDirectAccess = true; - module2.exports = require_factoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess); - } else { - module2.exports = null(); - } - var ReactIs; - var throwOnDirectAccess; - } -}); - -// node_modules/react-is/cjs/react-is.development.js -var require_react_is_development2 = __commonJS({ - "node_modules/react-is/cjs/react-is.development.js"(exports) { - "use strict"; - if (true) { - (function() { - "use strict"; - var REACT_ELEMENT_TYPE = Symbol.for("react.element"); - var REACT_PORTAL_TYPE = Symbol.for("react.portal"); - var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); - var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"); - var REACT_PROFILER_TYPE = Symbol.for("react.profiler"); - var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); - var REACT_CONTEXT_TYPE = Symbol.for("react.context"); - var REACT_SERVER_CONTEXT_TYPE = Symbol.for("react.server_context"); - var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"); - var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"); - var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"); - var REACT_MEMO_TYPE = Symbol.for("react.memo"); - var REACT_LAZY_TYPE = Symbol.for("react.lazy"); - var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"); - var enableScopeAPI = false; - var enableCacheElement = false; - var enableTransitionTracing = false; - var enableLegacyHidden = false; - var enableDebugTracing = false; - var REACT_MODULE_REFERENCE; - { - REACT_MODULE_REFERENCE = Symbol.for("react.module.reference"); - } - function isValidElementType2(type) { - if (typeof type === "string" || typeof type === "function") { - return true; - } - if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) { - return true; - } - if (typeof type === "object" && type !== null) { - if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { - return true; - } - } - return false; - } - function typeOf(object) { - if (typeof object === "object" && object !== null) { - var $$typeof = object.$$typeof; - switch ($$typeof) { - case REACT_ELEMENT_TYPE: - var type = object.type; - switch (type) { - case REACT_FRAGMENT_TYPE: - case REACT_PROFILER_TYPE: - case REACT_STRICT_MODE_TYPE: - case REACT_SUSPENSE_TYPE: - case REACT_SUSPENSE_LIST_TYPE: - return type; - default: - var $$typeofType = type && type.$$typeof; - switch ($$typeofType) { - case REACT_SERVER_CONTEXT_TYPE: - case REACT_CONTEXT_TYPE: - case REACT_FORWARD_REF_TYPE: - case REACT_LAZY_TYPE: - case REACT_MEMO_TYPE: - case REACT_PROVIDER_TYPE: - return $$typeofType; - default: - return $$typeof; - } - } - case REACT_PORTAL_TYPE: - return $$typeof; - } - } - return void 0; - } - var ContextConsumer = REACT_CONTEXT_TYPE; - var ContextProvider = REACT_PROVIDER_TYPE; - var Element3 = REACT_ELEMENT_TYPE; - var ForwardRef2 = REACT_FORWARD_REF_TYPE; - var Fragment6 = REACT_FRAGMENT_TYPE; - var Lazy = REACT_LAZY_TYPE; - var Memo2 = REACT_MEMO_TYPE; - var Portal = REACT_PORTAL_TYPE; - var Profiler = REACT_PROFILER_TYPE; - var StrictMode = REACT_STRICT_MODE_TYPE; - var Suspense = REACT_SUSPENSE_TYPE; - var SuspenseList = REACT_SUSPENSE_LIST_TYPE; - var hasWarnedAboutDeprecatedIsAsyncMode = false; - var hasWarnedAboutDeprecatedIsConcurrentMode = false; - function isAsyncMode(object) { - { - if (!hasWarnedAboutDeprecatedIsAsyncMode) { - hasWarnedAboutDeprecatedIsAsyncMode = true; - console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 18+."); - } - } - return false; - } - function isConcurrentMode(object) { - { - if (!hasWarnedAboutDeprecatedIsConcurrentMode) { - hasWarnedAboutDeprecatedIsConcurrentMode = true; - console["warn"]("The ReactIs.isConcurrentMode() alias has been deprecated, and will be removed in React 18+."); - } - } - return false; - } - function isContextConsumer2(object) { - return typeOf(object) === REACT_CONTEXT_TYPE; - } - function isContextProvider(object) { - return typeOf(object) === REACT_PROVIDER_TYPE; - } - function isElement(object) { - return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; - } - function isForwardRef(object) { - return typeOf(object) === REACT_FORWARD_REF_TYPE; - } - function isFragment(object) { - return typeOf(object) === REACT_FRAGMENT_TYPE; - } - function isLazy(object) { - return typeOf(object) === REACT_LAZY_TYPE; - } - function isMemo(object) { - return typeOf(object) === REACT_MEMO_TYPE; - } - function isPortal(object) { - return typeOf(object) === REACT_PORTAL_TYPE; - } - function isProfiler(object) { - return typeOf(object) === REACT_PROFILER_TYPE; - } - function isStrictMode(object) { - return typeOf(object) === REACT_STRICT_MODE_TYPE; - } - function isSuspense(object) { - return typeOf(object) === REACT_SUSPENSE_TYPE; - } - function isSuspenseList(object) { - return typeOf(object) === REACT_SUSPENSE_LIST_TYPE; - } - exports.ContextConsumer = ContextConsumer; - exports.ContextProvider = ContextProvider; - exports.Element = Element3; - exports.ForwardRef = ForwardRef2; - exports.Fragment = Fragment6; - exports.Lazy = Lazy; - exports.Memo = Memo2; - exports.Portal = Portal; - exports.Profiler = Profiler; - exports.StrictMode = StrictMode; - exports.Suspense = Suspense; - exports.SuspenseList = SuspenseList; - exports.isAsyncMode = isAsyncMode; - exports.isConcurrentMode = isConcurrentMode; - exports.isContextConsumer = isContextConsumer2; - exports.isContextProvider = isContextProvider; - exports.isElement = isElement; - exports.isForwardRef = isForwardRef; - exports.isFragment = isFragment; - exports.isLazy = isLazy; - exports.isMemo = isMemo; - exports.isPortal = isPortal; - exports.isProfiler = isProfiler; - exports.isStrictMode = isStrictMode; - exports.isSuspense = isSuspense; - exports.isSuspenseList = isSuspenseList; - exports.isValidElementType = isValidElementType2; - exports.typeOf = typeOf; - })(); - } - } -}); - -// node_modules/react-is/index.js -var require_react_is2 = __commonJS({ - "node_modules/react-is/index.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_react_is_development2(); - } - } -}); - -// node_modules/@popperjs/core/dist/cjs/popper.js -var require_popper = __commonJS({ - "node_modules/@popperjs/core/dist/cjs/popper.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - function getWindow(node) { - if (node == null) { - return window; - } - if (node.toString() !== "[object Window]") { - var ownerDocument = node.ownerDocument; - return ownerDocument ? ownerDocument.defaultView || window : window; - } - return node; - } - function isElement(node) { - var OwnElement = getWindow(node).Element; - return node instanceof OwnElement || node instanceof Element; - } - function isHTMLElement(node) { - var OwnElement = getWindow(node).HTMLElement; - return node instanceof OwnElement || node instanceof HTMLElement; - } - function isShadowRoot(node) { - if (typeof ShadowRoot === "undefined") { - return false; - } - var OwnElement = getWindow(node).ShadowRoot; - return node instanceof OwnElement || node instanceof ShadowRoot; - } - var max = Math.max; - var min = Math.min; - var round2 = Math.round; - function getUAString() { - var uaData = navigator.userAgentData; - if (uaData != null && uaData.brands) { - return uaData.brands.map(function(item) { - return item.brand + "/" + item.version; - }).join(" "); - } - return navigator.userAgent; - } - function isLayoutViewport() { - return !/^((?!chrome|android).)*safari/i.test(getUAString()); - } - function getBoundingClientRect(element, includeScale, isFixedStrategy) { - if (includeScale === void 0) { - includeScale = false; - } - if (isFixedStrategy === void 0) { - isFixedStrategy = false; - } - var clientRect = element.getBoundingClientRect(); - var scaleX = 1; - var scaleY = 1; - if (includeScale && isHTMLElement(element)) { - scaleX = element.offsetWidth > 0 ? round2(clientRect.width) / element.offsetWidth || 1 : 1; - scaleY = element.offsetHeight > 0 ? round2(clientRect.height) / element.offsetHeight || 1 : 1; - } - var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport; - var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; - var x2 = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; - var y2 = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; - var width2 = clientRect.width / scaleX; - var height2 = clientRect.height / scaleY; - return { - width: width2, - height: height2, - top: y2, - right: x2 + width2, - bottom: y2 + height2, - left: x2, - x: x2, - y: y2 - }; - } - function getWindowScroll(node) { - var win = getWindow(node); - var scrollLeft = win.pageXOffset; - var scrollTop = win.pageYOffset; - return { - scrollLeft, - scrollTop - }; - } - function getHTMLElementScroll(element) { - return { - scrollLeft: element.scrollLeft, - scrollTop: element.scrollTop - }; - } - function getNodeScroll(node) { - if (node === getWindow(node) || !isHTMLElement(node)) { - return getWindowScroll(node); - } else { - return getHTMLElementScroll(node); - } - } - function getNodeName(element) { - return element ? (element.nodeName || "").toLowerCase() : null; - } - function getDocumentElement(element) { - return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement; - } - function getWindowScrollBarX(element) { - return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; - } - function getComputedStyle(element) { - return getWindow(element).getComputedStyle(element); - } - function isScrollParent(element) { - var _getComputedStyle = getComputedStyle(element), overflow2 = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; - return /auto|scroll|overlay|hidden/.test(overflow2 + overflowY + overflowX); - } - function isElementScaled(element) { - var rect = element.getBoundingClientRect(); - var scaleX = round2(rect.width) / element.offsetWidth || 1; - var scaleY = round2(rect.height) / element.offsetHeight || 1; - return scaleX !== 1 || scaleY !== 1; - } - function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { - if (isFixed === void 0) { - isFixed = false; - } - var isOffsetParentAnElement = isHTMLElement(offsetParent); - var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); - var documentElement = getDocumentElement(offsetParent); - var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); - var scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - var offsets = { - x: 0, - y: 0 - }; - if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { - if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) { - scroll = getNodeScroll(offsetParent); - } - if (isHTMLElement(offsetParent)) { - offsets = getBoundingClientRect(offsetParent, true); - offsets.x += offsetParent.clientLeft; - offsets.y += offsetParent.clientTop; - } else if (documentElement) { - offsets.x = getWindowScrollBarX(documentElement); - } - } - return { - x: rect.left + scroll.scrollLeft - offsets.x, - y: rect.top + scroll.scrollTop - offsets.y, - width: rect.width, - height: rect.height - }; - } - function getLayoutRect(element) { - var clientRect = getBoundingClientRect(element); - var width2 = element.offsetWidth; - var height2 = element.offsetHeight; - if (Math.abs(clientRect.width - width2) <= 1) { - width2 = clientRect.width; - } - if (Math.abs(clientRect.height - height2) <= 1) { - height2 = clientRect.height; - } - return { - x: element.offsetLeft, - y: element.offsetTop, - width: width2, - height: height2 - }; - } - function getParentNode(element) { - if (getNodeName(element) === "html") { - return element; - } - return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element); - } - function getScrollParent(node) { - if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { - return node.ownerDocument.body; - } - if (isHTMLElement(node) && isScrollParent(node)) { - return node; - } - return getScrollParent(getParentNode(node)); - } - function listScrollParents(element, list) { - var _element$ownerDocumen; - if (list === void 0) { - list = []; - } - var scrollParent = getScrollParent(element); - var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); - var win = getWindow(scrollParent); - var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; - var updatedList = list.concat(target); - return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target))); - } - function isTableElement(element) { - return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; - } - function getTrueOffsetParent(element) { - if (!isHTMLElement(element) || getComputedStyle(element).position === "fixed") { - return null; - } - return element.offsetParent; - } - function getContainingBlock(element) { - var isFirefox = /firefox/i.test(getUAString()); - var isIE = /Trident/i.test(getUAString()); - if (isIE && isHTMLElement(element)) { - var elementCss = getComputedStyle(element); - if (elementCss.position === "fixed") { - return null; - } - } - var currentNode = getParentNode(element); - if (isShadowRoot(currentNode)) { - currentNode = currentNode.host; - } - while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { - var css = getComputedStyle(currentNode); - if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { - return currentNode; - } else { - currentNode = currentNode.parentNode; - } - } - return null; - } - function getOffsetParent(element) { - var window2 = getWindow(element); - var offsetParent = getTrueOffsetParent(element); - while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === "static") { - offsetParent = getTrueOffsetParent(offsetParent); - } - if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle(offsetParent).position === "static")) { - return window2; - } - return offsetParent || getContainingBlock(element) || window2; - } - var top2 = "top"; - var bottom2 = "bottom"; - var right2 = "right"; - var left2 = "left"; - var auto = "auto"; - var basePlacements = [top2, bottom2, right2, left2]; - var start = "start"; - var end = "end"; - var clippingParents = "clippingParents"; - var viewport = "viewport"; - var popper = "popper"; - var reference = "reference"; - var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { - return acc.concat([placement + "-" + start, placement + "-" + end]); - }, []); - var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { - return acc.concat([placement, placement + "-" + start, placement + "-" + end]); - }, []); - var beforeRead = "beforeRead"; - var read = "read"; - var afterRead = "afterRead"; - var beforeMain = "beforeMain"; - var main = "main"; - var afterMain = "afterMain"; - var beforeWrite = "beforeWrite"; - var write = "write"; - var afterWrite = "afterWrite"; - var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; - function order2(modifiers) { - var map = /* @__PURE__ */ new Map(); - var visited = /* @__PURE__ */ new Set(); - var result = []; - modifiers.forEach(function(modifier) { - map.set(modifier.name, modifier); - }); - function sort(modifier) { - visited.add(modifier.name); - var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); - requires.forEach(function(dep) { - if (!visited.has(dep)) { - var depModifier = map.get(dep); - if (depModifier) { - sort(depModifier); - } - } - }); - result.push(modifier); - } - modifiers.forEach(function(modifier) { - if (!visited.has(modifier.name)) { - sort(modifier); - } - }); - return result; - } - function orderModifiers(modifiers) { - var orderedModifiers = order2(modifiers); - return modifierPhases.reduce(function(acc, phase) { - return acc.concat(orderedModifiers.filter(function(modifier) { - return modifier.phase === phase; - })); - }, []); - } - function debounce(fn2) { - var pending; - return function() { - if (!pending) { - pending = new Promise(function(resolve) { - Promise.resolve().then(function() { - pending = void 0; - resolve(fn2()); - }); - }); - } - return pending; - }; - } - function format(str) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - return [].concat(args).reduce(function(p2, c2) { - return p2.replace(/%s/, c2); - }, str); - } - var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; - var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; - var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"]; - function validateModifiers(modifiers) { - modifiers.forEach(function(modifier) { - [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self2) { - return self2.indexOf(value) === index; - }).forEach(function(key) { - switch (key) { - case "name": - if (typeof modifier.name !== "string") { - console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"')); - } - break; - case "enabled": - if (typeof modifier.enabled !== "boolean") { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"')); - } - break; - case "phase": - if (modifierPhases.indexOf(modifier.phase) < 0) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"')); - } - break; - case "fn": - if (typeof modifier.fn !== "function") { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"')); - } - break; - case "effect": - if (modifier.effect != null && typeof modifier.effect !== "function") { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"')); - } - break; - case "requires": - if (modifier.requires != null && !Array.isArray(modifier.requires)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"')); - } - break; - case "requiresIfExists": - if (!Array.isArray(modifier.requiresIfExists)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"')); - } - break; - case "options": - case "data": - break; - default: - console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s2) { - return '"' + s2 + '"'; - }).join(", ") + '; but "' + key + '" was provided.'); - } - modifier.requires && modifier.requires.forEach(function(requirement) { - if (modifiers.find(function(mod) { - return mod.name === requirement; - }) == null) { - console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); - } - }); - }); - }); - } - function uniqueBy(arr, fn2) { - var identifiers = /* @__PURE__ */ new Set(); - return arr.filter(function(item) { - var identifier = fn2(item); - if (!identifiers.has(identifier)) { - identifiers.add(identifier); - return true; - } - }); - } - function getBasePlacement(placement) { - return placement.split("-")[0]; - } - function mergeByName(modifiers) { - var merged = modifiers.reduce(function(merged2, current) { - var existing = merged2[current.name]; - merged2[current.name] = existing ? Object.assign({}, existing, current, { - options: Object.assign({}, existing.options, current.options), - data: Object.assign({}, existing.data, current.data) - }) : current; - return merged2; - }, {}); - return Object.keys(merged).map(function(key) { - return merged[key]; - }); - } - function getViewportRect(element, strategy) { - var win = getWindow(element); - var html = getDocumentElement(element); - var visualViewport = win.visualViewport; - var width2 = html.clientWidth; - var height2 = html.clientHeight; - var x2 = 0; - var y2 = 0; - if (visualViewport) { - width2 = visualViewport.width; - height2 = visualViewport.height; - var layoutViewport = isLayoutViewport(); - if (layoutViewport || !layoutViewport && strategy === "fixed") { - x2 = visualViewport.offsetLeft; - y2 = visualViewport.offsetTop; - } - } - return { - width: width2, - height: height2, - x: x2 + getWindowScrollBarX(element), - y: y2 - }; - } - function getDocumentRect(element) { - var _element$ownerDocumen; - var html = getDocumentElement(element); - var winScroll = getWindowScroll(element); - var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; - var width2 = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); - var height2 = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); - var x2 = -winScroll.scrollLeft + getWindowScrollBarX(element); - var y2 = -winScroll.scrollTop; - if (getComputedStyle(body || html).direction === "rtl") { - x2 += max(html.clientWidth, body ? body.clientWidth : 0) - width2; - } - return { - width: width2, - height: height2, - x: x2, - y: y2 - }; - } - function contains(parent, child) { - var rootNode = child.getRootNode && child.getRootNode(); - if (parent.contains(child)) { - return true; - } else if (rootNode && isShadowRoot(rootNode)) { - var next = child; - do { - if (next && parent.isSameNode(next)) { - return true; - } - next = next.parentNode || next.host; - } while (next); - } - return false; - } - function rectToClientRect(rect) { - return Object.assign({}, rect, { - left: rect.x, - top: rect.y, - right: rect.x + rect.width, - bottom: rect.y + rect.height - }); - } - function getInnerBoundingClientRect(element, strategy) { - var rect = getBoundingClientRect(element, false, strategy === "fixed"); - rect.top = rect.top + element.clientTop; - rect.left = rect.left + element.clientLeft; - rect.bottom = rect.top + element.clientHeight; - rect.right = rect.left + element.clientWidth; - rect.width = element.clientWidth; - rect.height = element.clientHeight; - rect.x = rect.left; - rect.y = rect.top; - return rect; - } - function getClientRectFromMixedType(element, clippingParent, strategy) { - return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); - } - function getClippingParents(element) { - var clippingParents2 = listScrollParents(getParentNode(element)); - var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle(element).position) >= 0; - var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; - if (!isElement(clipperElement)) { - return []; - } - return clippingParents2.filter(function(clippingParent) { - return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body"; - }); - } - function getClippingRect(element, boundary, rootBoundary, strategy) { - var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); - var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); - var firstClippingParent = clippingParents2[0]; - var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { - var rect = getClientRectFromMixedType(element, clippingParent, strategy); - accRect.top = max(rect.top, accRect.top); - accRect.right = min(rect.right, accRect.right); - accRect.bottom = min(rect.bottom, accRect.bottom); - accRect.left = max(rect.left, accRect.left); - return accRect; - }, getClientRectFromMixedType(element, firstClippingParent, strategy)); - clippingRect.width = clippingRect.right - clippingRect.left; - clippingRect.height = clippingRect.bottom - clippingRect.top; - clippingRect.x = clippingRect.left; - clippingRect.y = clippingRect.top; - return clippingRect; - } - function getVariation(placement) { - return placement.split("-")[1]; - } - function getMainAxisFromPlacement(placement) { - return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; - } - function computeOffsets(_ref) { - var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement; - var basePlacement = placement ? getBasePlacement(placement) : null; - var variation = placement ? getVariation(placement) : null; - var commonX = reference2.x + reference2.width / 2 - element.width / 2; - var commonY = reference2.y + reference2.height / 2 - element.height / 2; - var offsets; - switch (basePlacement) { - case top2: - offsets = { - x: commonX, - y: reference2.y - element.height - }; - break; - case bottom2: - offsets = { - x: commonX, - y: reference2.y + reference2.height - }; - break; - case right2: - offsets = { - x: reference2.x + reference2.width, - y: commonY - }; - break; - case left2: - offsets = { - x: reference2.x - element.width, - y: commonY - }; - break; - default: - offsets = { - x: reference2.x, - y: reference2.y - }; - } - var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; - if (mainAxis != null) { - var len = mainAxis === "y" ? "height" : "width"; - switch (variation) { - case start: - offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); - break; - case end: - offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); - break; - } - } - return offsets; - } - function getFreshSideObject() { - return { - top: 0, - right: 0, - bottom: 0, - left: 0 - }; - } - function mergePaddingObject(paddingObject) { - return Object.assign({}, getFreshSideObject(), paddingObject); - } - function expandToHashMap(value, keys) { - return keys.reduce(function(hashMap, key) { - hashMap[key] = value; - return hashMap; - }, {}); - } - function detectOverflow(state, options) { - if (options === void 0) { - options = {}; - } - var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding2 = _options$padding === void 0 ? 0 : _options$padding; - var paddingObject = mergePaddingObject(typeof padding2 !== "number" ? padding2 : expandToHashMap(padding2, basePlacements)); - var altContext = elementContext === popper ? reference : popper; - var popperRect = state.rects.popper; - var element = state.elements[altBoundary ? altContext : elementContext]; - var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); - var referenceClientRect = getBoundingClientRect(state.elements.reference); - var popperOffsets2 = computeOffsets({ - reference: referenceClientRect, - element: popperRect, - strategy: "absolute", - placement - }); - var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); - var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; - var overflowOffsets = { - top: clippingClientRect.top - elementClientRect.top + paddingObject.top, - bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, - left: clippingClientRect.left - elementClientRect.left + paddingObject.left, - right: elementClientRect.right - clippingClientRect.right + paddingObject.right - }; - var offsetData = state.modifiersData.offset; - if (elementContext === popper && offsetData) { - var offset2 = offsetData[placement]; - Object.keys(overflowOffsets).forEach(function(key) { - var multiply = [right2, bottom2].indexOf(key) >= 0 ? 1 : -1; - var axis = [top2, bottom2].indexOf(key) >= 0 ? "y" : "x"; - overflowOffsets[key] += offset2[axis] * multiply; - }); - } - return overflowOffsets; - } - var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element."; - var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash."; - var DEFAULT_OPTIONS = { - placement: "bottom", - modifiers: [], - strategy: "absolute" - }; - function areValidElements() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return !args.some(function(element) { - return !(element && typeof element.getBoundingClientRect === "function"); - }); - } - function popperGenerator(generatorOptions) { - if (generatorOptions === void 0) { - generatorOptions = {}; - } - var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; - return function createPopper2(reference2, popper2, options) { - if (options === void 0) { - options = defaultOptions; - } - var state = { - placement: "bottom", - orderedModifiers: [], - options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), - modifiersData: {}, - elements: { - reference: reference2, - popper: popper2 - }, - attributes: {}, - styles: {} - }; - var effectCleanupFns = []; - var isDestroyed = false; - var instance = { - state, - setOptions: function setOptions(setOptionsAction) { - var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; - cleanupModifierEffects(); - state.options = Object.assign({}, defaultOptions, state.options, options2); - state.scrollParents = { - reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], - popper: listScrollParents(popper2) - }; - var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); - state.orderedModifiers = orderedModifiers.filter(function(m2) { - return m2.enabled; - }); - if (true) { - var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) { - var name = _ref.name; - return name; - }); - validateModifiers(modifiers); - if (getBasePlacement(state.options.placement) === auto) { - var flipModifier = state.orderedModifiers.find(function(_ref2) { - var name = _ref2.name; - return name === "flip"; - }); - if (!flipModifier) { - console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" ")); - } - } - var _getComputedStyle = getComputedStyle(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; - if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin2) { - return parseFloat(margin2); - })) { - console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" ")); - } - } - runModifierEffects(); - return instance.update(); - }, - forceUpdate: function forceUpdate() { - if (isDestroyed) { - return; - } - var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; - if (!areValidElements(reference3, popper3)) { - if (true) { - console.error(INVALID_ELEMENT_ERROR); - } - return; - } - state.rects = { - reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), - popper: getLayoutRect(popper3) - }; - state.reset = false; - state.placement = state.options.placement; - state.orderedModifiers.forEach(function(modifier) { - return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); - }); - var __debug_loops__ = 0; - for (var index = 0; index < state.orderedModifiers.length; index++) { - if (true) { - __debug_loops__ += 1; - if (__debug_loops__ > 100) { - console.error(INFINITE_LOOP_ERROR); - break; - } - } - if (state.reset === true) { - state.reset = false; - index = -1; - continue; - } - var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; - if (typeof fn2 === "function") { - state = fn2({ - state, - options: _options, - name, - instance - }) || state; - } - } - }, - update: debounce(function() { - return new Promise(function(resolve) { - instance.forceUpdate(); - resolve(state); - }); - }), - destroy: function destroy() { - cleanupModifierEffects(); - isDestroyed = true; - } - }; - if (!areValidElements(reference2, popper2)) { - if (true) { - console.error(INVALID_ELEMENT_ERROR); - } - return instance; - } - instance.setOptions(options).then(function(state2) { - if (!isDestroyed && options.onFirstUpdate) { - options.onFirstUpdate(state2); - } - }); - function runModifierEffects() { - state.orderedModifiers.forEach(function(_ref3) { - var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect; - if (typeof effect2 === "function") { - var cleanupFn = effect2({ - state, - name, - instance, - options: options2 - }); - var noopFn = function noopFn2() { - }; - effectCleanupFns.push(cleanupFn || noopFn); - } - }); - } - function cleanupModifierEffects() { - effectCleanupFns.forEach(function(fn2) { - return fn2(); - }); - effectCleanupFns = []; - } - return instance; - }; - } - var passive = { - passive: true - }; - function effect$2(_ref) { - var state = _ref.state, instance = _ref.instance, options = _ref.options; - var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; - var window2 = getWindow(state.elements.popper); - var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); - if (scroll) { - scrollParents.forEach(function(scrollParent) { - scrollParent.addEventListener("scroll", instance.update, passive); - }); - } - if (resize) { - window2.addEventListener("resize", instance.update, passive); - } - return function() { - if (scroll) { - scrollParents.forEach(function(scrollParent) { - scrollParent.removeEventListener("scroll", instance.update, passive); - }); - } - if (resize) { - window2.removeEventListener("resize", instance.update, passive); - } - }; - } - var eventListeners = { - name: "eventListeners", - enabled: true, - phase: "write", - fn: function fn2() { - }, - effect: effect$2, - data: {} - }; - function popperOffsets(_ref) { - var state = _ref.state, name = _ref.name; - state.modifiersData[name] = computeOffsets({ - reference: state.rects.reference, - element: state.rects.popper, - strategy: "absolute", - placement: state.placement - }); - } - var popperOffsets$1 = { - name: "popperOffsets", - enabled: true, - phase: "read", - fn: popperOffsets, - data: {} - }; - var unsetSides = { - top: "auto", - right: "auto", - bottom: "auto", - left: "auto" - }; - function roundOffsetsByDPR(_ref) { - var x2 = _ref.x, y2 = _ref.y; - var win = window; - var dpr = win.devicePixelRatio || 1; - return { - x: round2(x2 * dpr) / dpr || 0, - y: round2(y2 * dpr) / dpr || 0 - }; - } - function mapToStyles(_ref2) { - var _Object$assign2; - var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position2 = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; - var _offsets$x = offsets.x, x2 = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y2 = _offsets$y === void 0 ? 0 : _offsets$y; - var _ref3 = typeof roundOffsets === "function" ? roundOffsets({ - x: x2, - y: y2 - }) : { - x: x2, - y: y2 - }; - x2 = _ref3.x; - y2 = _ref3.y; - var hasX = offsets.hasOwnProperty("x"); - var hasY = offsets.hasOwnProperty("y"); - var sideX = left2; - var sideY = top2; - var win = window; - if (adaptive) { - var offsetParent = getOffsetParent(popper2); - var heightProp = "clientHeight"; - var widthProp = "clientWidth"; - if (offsetParent === getWindow(popper2)) { - offsetParent = getDocumentElement(popper2); - if (getComputedStyle(offsetParent).position !== "static" && position2 === "absolute") { - heightProp = "scrollHeight"; - widthProp = "scrollWidth"; - } - } - offsetParent = offsetParent; - if (placement === top2 || (placement === left2 || placement === right2) && variation === end) { - sideY = bottom2; - var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp]; - y2 -= offsetY - popperRect.height; - y2 *= gpuAcceleration ? 1 : -1; - } - if (placement === left2 || (placement === top2 || placement === bottom2) && variation === end) { - sideX = right2; - var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp]; - x2 -= offsetX - popperRect.width; - x2 *= gpuAcceleration ? 1 : -1; - } - } - var commonStyles = Object.assign({ - position: position2 - }, adaptive && unsetSides); - var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ - x: x2, - y: y2 - }) : { - x: x2, - y: y2 - }; - x2 = _ref4.x; - y2 = _ref4.y; - if (gpuAcceleration) { - var _Object$assign; - return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x2 + "px, " + y2 + "px)" : "translate3d(" + x2 + "px, " + y2 + "px, 0)", _Object$assign)); - } - return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y2 + "px" : "", _Object$assign2[sideX] = hasX ? x2 + "px" : "", _Object$assign2.transform = "", _Object$assign2)); - } - function computeStyles(_ref5) { - var state = _ref5.state, options = _ref5.options; - var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; - if (true) { - var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || ""; - if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) { - return transitionProperty.indexOf(property) >= 0; - })) { - console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" ")); - } - } - var commonStyles = { - placement: getBasePlacement(state.placement), - variation: getVariation(state.placement), - popper: state.elements.popper, - popperRect: state.rects.popper, - gpuAcceleration, - isFixed: state.options.strategy === "fixed" - }; - if (state.modifiersData.popperOffsets != null) { - state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.popperOffsets, - position: state.options.strategy, - adaptive, - roundOffsets - }))); - } - if (state.modifiersData.arrow != null) { - state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.arrow, - position: "absolute", - adaptive: false, - roundOffsets - }))); - } - state.attributes.popper = Object.assign({}, state.attributes.popper, { - "data-popper-placement": state.placement - }); - } - var computeStyles$1 = { - name: "computeStyles", - enabled: true, - phase: "beforeWrite", - fn: computeStyles, - data: {} - }; - function applyStyles(_ref) { - var state = _ref.state; - Object.keys(state.elements).forEach(function(name) { - var style3 = state.styles[name] || {}; - var attributes = state.attributes[name] || {}; - var element = state.elements[name]; - if (!isHTMLElement(element) || !getNodeName(element)) { - return; - } - Object.assign(element.style, style3); - Object.keys(attributes).forEach(function(name2) { - var value = attributes[name2]; - if (value === false) { - element.removeAttribute(name2); - } else { - element.setAttribute(name2, value === true ? "" : value); - } - }); - }); - } - function effect$1(_ref2) { - var state = _ref2.state; - var initialStyles = { - popper: { - position: state.options.strategy, - left: "0", - top: "0", - margin: "0" - }, - arrow: { - position: "absolute" - }, - reference: {} - }; - Object.assign(state.elements.popper.style, initialStyles.popper); - state.styles = initialStyles; - if (state.elements.arrow) { - Object.assign(state.elements.arrow.style, initialStyles.arrow); - } - return function() { - Object.keys(state.elements).forEach(function(name) { - var element = state.elements[name]; - var attributes = state.attributes[name] || {}; - var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); - var style3 = styleProperties.reduce(function(style4, property) { - style4[property] = ""; - return style4; - }, {}); - if (!isHTMLElement(element) || !getNodeName(element)) { - return; - } - Object.assign(element.style, style3); - Object.keys(attributes).forEach(function(attribute) { - element.removeAttribute(attribute); - }); - }); - }; - } - var applyStyles$1 = { - name: "applyStyles", - enabled: true, - phase: "write", - fn: applyStyles, - effect: effect$1, - requires: ["computeStyles"] - }; - function distanceAndSkiddingToXY(placement, rects, offset2) { - var basePlacement = getBasePlacement(placement); - var invertDistance = [left2, top2].indexOf(basePlacement) >= 0 ? -1 : 1; - var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { - placement - })) : offset2, skidding = _ref[0], distance = _ref[1]; - skidding = skidding || 0; - distance = (distance || 0) * invertDistance; - return [left2, right2].indexOf(basePlacement) >= 0 ? { - x: distance, - y: skidding - } : { - x: skidding, - y: distance - }; - } - function offset(_ref2) { - var state = _ref2.state, options = _ref2.options, name = _ref2.name; - var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; - var data = placements.reduce(function(acc, placement) { - acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); - return acc; - }, {}); - var _data$state$placement = data[state.placement], x2 = _data$state$placement.x, y2 = _data$state$placement.y; - if (state.modifiersData.popperOffsets != null) { - state.modifiersData.popperOffsets.x += x2; - state.modifiersData.popperOffsets.y += y2; - } - state.modifiersData[name] = data; - } - var offset$1 = { - name: "offset", - enabled: true, - phase: "main", - requires: ["popperOffsets"], - fn: offset - }; - var hash$1 = { - left: "right", - right: "left", - bottom: "top", - top: "bottom" - }; - function getOppositePlacement(placement) { - return placement.replace(/left|right|bottom|top/g, function(matched) { - return hash$1[matched]; - }); - } - var hash = { - start: "end", - end: "start" - }; - function getOppositeVariationPlacement(placement) { - return placement.replace(/start|end/g, function(matched) { - return hash[matched]; - }); - } - function computeAutoPlacement(state, options) { - if (options === void 0) { - options = {}; - } - var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding2 = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; - var variation = getVariation(placement); - var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { - return getVariation(placement2) === variation; - }) : basePlacements; - var allowedPlacements = placements$1.filter(function(placement2) { - return allowedAutoPlacements.indexOf(placement2) >= 0; - }); - if (allowedPlacements.length === 0) { - allowedPlacements = placements$1; - if (true) { - console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" ")); - } - } - var overflows = allowedPlacements.reduce(function(acc, placement2) { - acc[placement2] = detectOverflow(state, { - placement: placement2, - boundary, - rootBoundary, - padding: padding2 - })[getBasePlacement(placement2)]; - return acc; - }, {}); - return Object.keys(overflows).sort(function(a2, b2) { - return overflows[a2] - overflows[b2]; - }); - } - function getExpandedFallbackPlacements(placement) { - if (getBasePlacement(placement) === auto) { - return []; - } - var oppositePlacement = getOppositePlacement(placement); - return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; - } - function flip(_ref) { - var state = _ref.state, options = _ref.options, name = _ref.name; - if (state.modifiersData[name]._skip) { - return; - } - var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding2 = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; - var preferredPlacement = state.options.placement; - var basePlacement = getBasePlacement(preferredPlacement); - var isBasePlacement = basePlacement === preferredPlacement; - var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); - var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { - return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { - placement: placement2, - boundary, - rootBoundary, - padding: padding2, - flipVariations, - allowedAutoPlacements - }) : placement2); - }, []); - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var checksMap = /* @__PURE__ */ new Map(); - var makeFallbackChecks = true; - var firstFittingPlacement = placements2[0]; - for (var i2 = 0; i2 < placements2.length; i2++) { - var placement = placements2[i2]; - var _basePlacement = getBasePlacement(placement); - var isStartVariation = getVariation(placement) === start; - var isVertical = [top2, bottom2].indexOf(_basePlacement) >= 0; - var len = isVertical ? "width" : "height"; - var overflow2 = detectOverflow(state, { - placement, - boundary, - rootBoundary, - altBoundary, - padding: padding2 - }); - var mainVariationSide = isVertical ? isStartVariation ? right2 : left2 : isStartVariation ? bottom2 : top2; - if (referenceRect[len] > popperRect[len]) { - mainVariationSide = getOppositePlacement(mainVariationSide); - } - var altVariationSide = getOppositePlacement(mainVariationSide); - var checks = []; - if (checkMainAxis) { - checks.push(overflow2[_basePlacement] <= 0); - } - if (checkAltAxis) { - checks.push(overflow2[mainVariationSide] <= 0, overflow2[altVariationSide] <= 0); - } - if (checks.every(function(check) { - return check; - })) { - firstFittingPlacement = placement; - makeFallbackChecks = false; - break; - } - checksMap.set(placement, checks); - } - if (makeFallbackChecks) { - var numberOfChecks = flipVariations ? 3 : 1; - var _loop = function _loop2(_i2) { - var fittingPlacement = placements2.find(function(placement2) { - var checks2 = checksMap.get(placement2); - if (checks2) { - return checks2.slice(0, _i2).every(function(check) { - return check; - }); - } - }); - if (fittingPlacement) { - firstFittingPlacement = fittingPlacement; - return "break"; - } - }; - for (var _i = numberOfChecks; _i > 0; _i--) { - var _ret = _loop(_i); - if (_ret === "break") - break; - } - } - if (state.placement !== firstFittingPlacement) { - state.modifiersData[name]._skip = true; - state.placement = firstFittingPlacement; - state.reset = true; - } - } - var flip$1 = { - name: "flip", - enabled: true, - phase: "main", - fn: flip, - requiresIfExists: ["offset"], - data: { - _skip: false - } - }; - function getAltAxis(axis) { - return axis === "x" ? "y" : "x"; - } - function within(min$1, value, max$1) { - return max(min$1, min(value, max$1)); - } - function withinMaxClamp(min2, value, max2) { - var v2 = within(min2, value, max2); - return v2 > max2 ? max2 : v2; - } - function preventOverflow(_ref) { - var state = _ref.state, options = _ref.options, name = _ref.name; - var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding2 = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; - var overflow2 = detectOverflow(state, { - boundary, - rootBoundary, - padding: padding2, - altBoundary - }); - var basePlacement = getBasePlacement(state.placement); - var variation = getVariation(state.placement); - var isBasePlacement = !variation; - var mainAxis = getMainAxisFromPlacement(basePlacement); - var altAxis = getAltAxis(mainAxis); - var popperOffsets2 = state.modifiersData.popperOffsets; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { - placement: state.placement - })) : tetherOffset; - var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? { - mainAxis: tetherOffsetValue, - altAxis: tetherOffsetValue - } : Object.assign({ - mainAxis: 0, - altAxis: 0 - }, tetherOffsetValue); - var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; - var data = { - x: 0, - y: 0 - }; - if (!popperOffsets2) { - return; - } - if (checkMainAxis) { - var _offsetModifierState$; - var mainSide = mainAxis === "y" ? top2 : left2; - var altSide = mainAxis === "y" ? bottom2 : right2; - var len = mainAxis === "y" ? "height" : "width"; - var offset2 = popperOffsets2[mainAxis]; - var min$1 = offset2 + overflow2[mainSide]; - var max$1 = offset2 - overflow2[altSide]; - var additive = tether ? -popperRect[len] / 2 : 0; - var minLen = variation === start ? referenceRect[len] : popperRect[len]; - var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; - var arrowElement = state.elements.arrow; - var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { - width: 0, - height: 0 - }; - var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); - var arrowPaddingMin = arrowPaddingObject[mainSide]; - var arrowPaddingMax = arrowPaddingObject[altSide]; - var arrowLen = within(0, referenceRect[len], arrowRect[len]); - var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; - var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; - var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); - var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; - var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; - var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset; - var tetherMax = offset2 + maxOffset - offsetModifierValue; - var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1); - popperOffsets2[mainAxis] = preventedOffset; - data[mainAxis] = preventedOffset - offset2; - } - if (checkAltAxis) { - var _offsetModifierState$2; - var _mainSide = mainAxis === "x" ? top2 : left2; - var _altSide = mainAxis === "x" ? bottom2 : right2; - var _offset = popperOffsets2[altAxis]; - var _len = altAxis === "y" ? "height" : "width"; - var _min = _offset + overflow2[_mainSide]; - var _max = _offset - overflow2[_altSide]; - var isOriginSide = [top2, left2].indexOf(basePlacement) !== -1; - var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; - var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; - var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; - var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); - popperOffsets2[altAxis] = _preventedOffset; - data[altAxis] = _preventedOffset - _offset; - } - state.modifiersData[name] = data; - } - var preventOverflow$1 = { - name: "preventOverflow", - enabled: true, - phase: "main", - fn: preventOverflow, - requiresIfExists: ["offset"] - }; - var toPaddingObject = function toPaddingObject2(padding2, state) { - padding2 = typeof padding2 === "function" ? padding2(Object.assign({}, state.rects, { - placement: state.placement - })) : padding2; - return mergePaddingObject(typeof padding2 !== "number" ? padding2 : expandToHashMap(padding2, basePlacements)); - }; - function arrow(_ref) { - var _state$modifiersData$; - var state = _ref.state, name = _ref.name, options = _ref.options; - var arrowElement = state.elements.arrow; - var popperOffsets2 = state.modifiersData.popperOffsets; - var basePlacement = getBasePlacement(state.placement); - var axis = getMainAxisFromPlacement(basePlacement); - var isVertical = [left2, right2].indexOf(basePlacement) >= 0; - var len = isVertical ? "height" : "width"; - if (!arrowElement || !popperOffsets2) { - return; - } - var paddingObject = toPaddingObject(options.padding, state); - var arrowRect = getLayoutRect(arrowElement); - var minProp = axis === "y" ? top2 : left2; - var maxProp = axis === "y" ? bottom2 : right2; - var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; - var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; - var arrowOffsetParent = getOffsetParent(arrowElement); - var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; - var centerToReference = endDiff / 2 - startDiff / 2; - var min2 = paddingObject[minProp]; - var max2 = clientSize - arrowRect[len] - paddingObject[maxProp]; - var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; - var offset2 = within(min2, center, max2); - var axisProp = axis; - state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); - } - function effect(_ref2) { - var state = _ref2.state, options = _ref2.options; - var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; - if (arrowElement == null) { - return; - } - if (typeof arrowElement === "string") { - arrowElement = state.elements.popper.querySelector(arrowElement); - if (!arrowElement) { - return; - } - } - if (true) { - if (!isHTMLElement(arrowElement)) { - console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" ")); - } - } - if (!contains(state.elements.popper, arrowElement)) { - if (true) { - console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" ")); - } - return; - } - state.elements.arrow = arrowElement; - } - var arrow$1 = { - name: "arrow", - enabled: true, - phase: "main", - fn: arrow, - effect, - requires: ["popperOffsets"], - requiresIfExists: ["preventOverflow"] - }; - function getSideOffsets(overflow2, rect, preventedOffsets) { - if (preventedOffsets === void 0) { - preventedOffsets = { - x: 0, - y: 0 - }; - } - return { - top: overflow2.top - rect.height - preventedOffsets.y, - right: overflow2.right - rect.width + preventedOffsets.x, - bottom: overflow2.bottom - rect.height + preventedOffsets.y, - left: overflow2.left - rect.width - preventedOffsets.x - }; - } - function isAnySideFullyClipped(overflow2) { - return [top2, right2, bottom2, left2].some(function(side) { - return overflow2[side] >= 0; - }); - } - function hide(_ref) { - var state = _ref.state, name = _ref.name; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var preventedOffsets = state.modifiersData.preventOverflow; - var referenceOverflow = detectOverflow(state, { - elementContext: "reference" - }); - var popperAltOverflow = detectOverflow(state, { - altBoundary: true - }); - var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); - var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); - var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); - var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); - state.modifiersData[name] = { - referenceClippingOffsets, - popperEscapeOffsets, - isReferenceHidden, - hasPopperEscaped - }; - state.attributes.popper = Object.assign({}, state.attributes.popper, { - "data-popper-reference-hidden": isReferenceHidden, - "data-popper-escaped": hasPopperEscaped - }); - } - var hide$1 = { - name: "hide", - enabled: true, - phase: "main", - requiresIfExists: ["preventOverflow"], - fn: hide - }; - var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; - var createPopper$1 = /* @__PURE__ */ popperGenerator({ - defaultModifiers: defaultModifiers$1 - }); - var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; - var createPopper = /* @__PURE__ */ popperGenerator({ - defaultModifiers - }); - exports.applyStyles = applyStyles$1; - exports.arrow = arrow$1; - exports.computeStyles = computeStyles$1; - exports.createPopper = createPopper; - exports.createPopperLite = createPopper$1; - exports.defaultModifiers = defaultModifiers; - exports.detectOverflow = detectOverflow; - exports.eventListeners = eventListeners; - exports.flip = flip$1; - exports.hide = hide$1; - exports.offset = offset$1; - exports.popperGenerator = popperGenerator; - exports.popperOffsets = popperOffsets$1; - exports.preventOverflow = preventOverflow$1; - } -}); - -// node_modules/@babel/runtime/helpers/extends.js -var require_extends = __commonJS({ - "node_modules/@babel/runtime/helpers/extends.js"(exports, module2) { - function _extends2() { - module2.exports = _extends2 = Object.assign ? Object.assign.bind() : function(target) { - for (var i2 = 1; i2 < arguments.length; i2++) { - var source = arguments[i2]; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - return target; - }, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - return _extends2.apply(this, arguments); - } - module2.exports = _extends2, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; - } -}); - -// node_modules/@emotion/memoize/dist/emotion-memoize.cjs.dev.js -var require_emotion_memoize_cjs_dev = __commonJS({ - "node_modules/@emotion/memoize/dist/emotion-memoize.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - function memoize2(fn2) { - var cache = /* @__PURE__ */ Object.create(null); - return function(arg) { - if (cache[arg] === void 0) - cache[arg] = fn2(arg); - return cache[arg]; - }; - } - exports.default = memoize2; - } -}); - -// node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js -var require_emotion_memoize_cjs = __commonJS({ - "node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_memoize_cjs_dev(); - } - } -}); - -// node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.dev.js -var require_emotion_is_prop_valid_cjs_dev = __commonJS({ - "node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var memoize2 = require_emotion_memoize_cjs(); - function _interopDefault(e) { - return e && e.__esModule ? e : { "default": e }; - } - var memoize__default = /* @__PURE__ */ _interopDefault(memoize2); - var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; - var isPropValid = /* @__PURE__ */ memoize__default["default"]( - function(prop) { - return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91; - } - ); - exports.default = isPropValid; - } -}); - -// node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.js -var require_emotion_is_prop_valid_cjs = __commonJS({ - "node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_is_prop_valid_cjs_dev(); - } - } -}); - // node_modules/@emotion/sheet/dist/emotion-sheet.cjs.dev.js var require_emotion_sheet_cjs_dev = __commonJS({ "node_modules/@emotion/sheet/dist/emotion-sheet.cjs.dev.js"(exports) { @@ -35034,7 +23893,7 @@ var require_emotion_sheet_cjs_dev = __commonJS({ _proto.hydrate = function hydrate(nodes) { nodes.forEach(this._insertTag); }; - _proto.insert = function insert(rule) { + _proto.insert = function insert2(rule) { if (this.ctr % (this.isSpeedy ? 65e3 : 1) === 0) { this._insertTag(createStyleElement(this)); } @@ -35051,7 +23910,7 @@ var require_emotion_sheet_cjs_dev = __commonJS({ try { sheet.insertRule(rule, sheet.cssRules.length); } catch (e) { - if (!/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear){/.test(rule)) { + if (!/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) { console.error('There was a problem inserting the following rule: "' + rule + '"', e); } } @@ -35091,63 +23950,64 @@ var require_emotion_sheet_cjs = __commonJS({ // node_modules/stylis/dist/umd/stylis.js var require_stylis = __commonJS({ "node_modules/stylis/dist/umd/stylis.js"(exports, module2) { - (function(e, r3) { - typeof exports === "object" && typeof module2 !== "undefined" ? r3(exports) : typeof define === "function" && define.amd ? define(["exports"], r3) : (e = e || self, r3(e.stylis = {})); + (function(e, r2) { + typeof exports === "object" && typeof module2 !== "undefined" ? r2(exports) : typeof define === "function" && define.amd ? define(["exports"], r2) : (e = e || self, r2(e.stylis = {})); })(exports, function(e) { "use strict"; - var r3 = "-ms-"; + var r2 = "-ms-"; var a2 = "-moz-"; var c2 = "-webkit-"; - var t2 = "comm"; - var n2 = "rule"; + var n2 = "comm"; + var t2 = "rule"; var s2 = "decl"; var i2 = "@page"; var u2 = "@media"; var o2 = "@import"; - var f2 = "@charset"; + var f3 = "@charset"; var l2 = "@viewport"; - var h2 = "@supports"; - var p2 = "@document"; + var p2 = "@supports"; + var h2 = "@document"; var v2 = "@namespace"; - var b2 = "@keyframes"; - var d2 = "@font-face"; - var m2 = "@counter-style"; - var w2 = "@font-feature-values"; + var d2 = "@keyframes"; + var b2 = "@font-face"; + var w2 = "@counter-style"; + var m2 = "@font-feature-values"; + var g2 = "@layer"; var k2 = Math.abs; var $ = String.fromCharCode; - var g2 = Object.assign; - function x2(e2, r4) { - return (((r4 << 2 ^ O2(e2, 0)) << 2 ^ O2(e2, 1)) << 2 ^ O2(e2, 2)) << 2 ^ O2(e2, 3); + var x2 = Object.assign; + function E2(e2, r3) { + return M2(e2, 0) ^ 45 ? (((r3 << 2 ^ M2(e2, 0)) << 2 ^ M2(e2, 1)) << 2 ^ M2(e2, 2)) << 2 ^ M2(e2, 3) : 0; } - function E2(e2) { + function y2(e2) { return e2.trim(); } - function y2(e2, r4) { - return (e2 = r4.exec(e2)) ? e2[0] : e2; + function T(e2, r3) { + return (e2 = r3.exec(e2)) ? e2[0] : e2; } - function T(e2, r4, a3) { - return e2.replace(r4, a3); + function A2(e2, r3, a3) { + return e2.replace(r3, a3); } - function A2(e2, r4) { - return e2.indexOf(r4); + function O2(e2, r3) { + return e2.indexOf(r3); } - function O2(e2, r4) { - return e2.charCodeAt(r4) | 0; + function M2(e2, r3) { + return e2.charCodeAt(r3) | 0; } - function C(e2, r4, a3) { - return e2.slice(r4, a3); + function C(e2, r3, a3) { + return e2.slice(r3, a3); } - function M2(e2) { + function R2(e2) { return e2.length; } function S2(e2) { return e2.length; } - function R2(e2, r4) { - return r4.push(e2), e2; + function z2(e2, r3) { + return r3.push(e2), e2; } - function z2(e2, r4) { - return e2.map(r4).join(""); + function N2(e2, r3) { + return e2.map(r3).join(""); } e.line = 1; e.column = 1; @@ -35155,37 +24015,37 @@ var require_stylis = __commonJS({ e.position = 0; e.character = 0; e.characters = ""; - function N2(r4, a3, c3, t3, n3, s3, i3) { - return { value: r4, root: a3, parent: c3, type: t3, props: n3, children: s3, line: e.line, column: e.column, length: i3, return: "" }; + function P2(r3, a3, c3, n3, t3, s3, i3) { + return { value: r3, root: a3, parent: c3, type: n3, props: t3, children: s3, line: e.line, column: e.column, length: i3, return: "" }; } - function P2(e2, r4) { - return g2(N2("", null, null, "", null, null, 0), e2, { length: -e2.length }, r4); - } - function j2() { - return e.character; + function j2(e2, r3) { + return x2(P2("", null, null, "", null, null, 0), e2, { length: -e2.length }, r3); } function U2() { - e.character = e.position > 0 ? O2(e.characters, --e.position) : 0; + return e.character; + } + function _3() { + e.character = e.position > 0 ? M2(e.characters, --e.position) : 0; if (e.column--, e.character === 10) e.column = 1, e.line--; return e.character; } - function _3() { - e.character = e.position < e.length ? O2(e.characters, e.position++) : 0; + function F2() { + e.character = e.position < e.length ? M2(e.characters, e.position++) : 0; if (e.column++, e.character === 10) e.column = 1, e.line++; return e.character; } - function F2() { - return O2(e.characters, e.position); - } function I2() { + return M2(e.characters, e.position); + } + function L2() { return e.position; } - function L2(r4, a3) { - return C(e.characters, r4, a3); + function D2(r3, a3) { + return C(e.characters, r3, a3); } - function D2(e2) { + function Y2(e2) { switch (e2) { case 0: case 9: @@ -35217,209 +24077,212 @@ var require_stylis = __commonJS({ } return 0; } - function K(r4) { - return e.line = e.column = 1, e.length = M2(e.characters = r4), e.position = 0, []; + function K(r3) { + return e.line = e.column = 1, e.length = R2(e.characters = r3), e.position = 0, []; } - function V(r4) { - return e.characters = "", r4; + function V(r3) { + return e.characters = "", r3; } - function W2(r4) { - return E2(L2(e.position - 1, Z2(r4 === 91 ? r4 + 2 : r4 === 40 ? r4 + 1 : r4))); + function W2(r3) { + return y2(D2(e.position - 1, q2(r3 === 91 ? r3 + 2 : r3 === 40 ? r3 + 1 : r3))); } - function Y2(e2) { - return V(G2(K(e2))); + function B2(e2) { + return V(H2(K(e2))); } - function B2(r4) { - while (e.character = F2()) + function G2(r3) { + while (e.character = I2()) if (e.character < 33) - _3(); + F2(); else break; - return D2(r4) > 2 || D2(e.character) > 3 ? "" : " "; + return Y2(r3) > 2 || Y2(e.character) > 3 ? "" : " "; } - function G2(r4) { - while (_3()) - switch (D2(e.character)) { + function H2(r3) { + while (F2()) + switch (Y2(e.character)) { case 0: - R2(J(e.position - 1), r4); + z2(Q2(e.position - 1), r3); break; case 2: - R2(W2(e.character), r4); + z2(W2(e.character), r3); break; default: - R2($(e.character), r4); + z2($(e.character), r3); } - return r4; + return r3; } - function H2(r4, a3) { - while (--a3 && _3()) + function Z2(r3, a3) { + while (--a3 && F2()) if (e.character < 48 || e.character > 102 || e.character > 57 && e.character < 65 || e.character > 70 && e.character < 97) break; - return L2(r4, I2() + (a3 < 6 && F2() == 32 && _3() == 32)); + return D2(r3, L2() + (a3 < 6 && I2() == 32 && F2() == 32)); } - function Z2(r4) { - while (_3()) + function q2(r3) { + while (F2()) switch (e.character) { - case r4: + case r3: return e.position; case 34: case 39: - if (r4 !== 34 && r4 !== 39) - Z2(e.character); + if (r3 !== 34 && r3 !== 39) + q2(e.character); break; case 40: - if (r4 === 41) - Z2(r4); + if (r3 === 41) + q2(r3); break; case 92: - _3(); + F2(); break; } return e.position; } - function q2(r4, a3) { - while (_3()) - if (r4 + e.character === 47 + 10) + function J(r3, a3) { + while (F2()) + if (r3 + e.character === 47 + 10) break; - else if (r4 + e.character === 42 + 42 && F2() === 47) + else if (r3 + e.character === 42 + 42 && I2() === 47) break; - return "/*" + L2(a3, e.position - 1) + "*" + $(r4 === 47 ? r4 : _3()); + return "/*" + D2(a3, e.position - 1) + "*" + $(r3 === 47 ? r3 : F2()); } - function J(r4) { - while (!D2(F2())) - _3(); - return L2(r4, e.position); + function Q2(r3) { + while (!Y2(I2())) + F2(); + return D2(r3, e.position); } - function Q2(e2) { - return V(X2("", null, null, null, [""], e2 = K(e2), 0, [0], e2)); + function X2(e2) { + return V(ee("", null, null, null, [""], e2 = K(e2), 0, [0], e2)); } - function X2(e2, r4, a3, c3, t3, n3, s3, i3, u3) { + function ee(e2, r3, a3, c3, n3, t3, s3, i3, u3) { var o3 = 0; - var f3 = 0; + var f4 = 0; var l3 = s3; - var h3 = 0; var p3 = 0; + var h3 = 0; var v3 = 0; - var b3 = 1; var d3 = 1; - var m3 = 1; - var w3 = 0; - var k3 = ""; - var g3 = t3; - var x3 = n3; + var b3 = 1; + var w3 = 1; + var m3 = 0; + var g3 = ""; + var k3 = n3; + var x3 = t3; var E3 = c3; - var y3 = k3; - while (d3) - switch (v3 = w3, w3 = _3()) { + var y3 = g3; + while (b3) + switch (v3 = m3, m3 = F2()) { case 40: - if (v3 != 108 && y3.charCodeAt(l3 - 1) == 58) { - if (A2(y3 += T(W2(w3), "&", "&\f"), "&\f") != -1) - m3 = -1; + if (v3 != 108 && M2(y3, l3 - 1) == 58) { + if (O2(y3 += A2(W2(m3), "&", "&\f"), "&\f") != -1) + w3 = -1; break; } case 34: case 39: case 91: - y3 += W2(w3); + y3 += W2(m3); break; case 9: case 10: case 13: case 32: - y3 += B2(v3); + y3 += G2(v3); break; case 92: - y3 += H2(I2() - 1, 7); + y3 += Z2(L2() - 1, 7); continue; case 47: - switch (F2()) { + switch (I2()) { case 42: case 47: - R2(re(q2(_3(), I2()), r4, a3), u3); + z2(ae(J(F2(), L2()), r3, a3), u3); break; default: y3 += "/"; } break; - case 123 * b3: - i3[o3++] = M2(y3) * m3; - case 125 * b3: + case 123 * d3: + i3[o3++] = R2(y3) * w3; + case 125 * d3: case 59: case 0: - switch (w3) { + switch (m3) { case 0: case 125: - d3 = 0; - case 59 + f3: - if (p3 > 0 && M2(y3) - l3) - R2(p3 > 32 ? ae(y3 + ";", c3, a3, l3 - 1) : ae(T(y3, " ", "") + ";", c3, a3, l3 - 2), u3); + b3 = 0; + case 59 + f4: + if (w3 == -1) + y3 = A2(y3, /\f/g, ""); + if (h3 > 0 && R2(y3) - l3) + z2(h3 > 32 ? ce(y3 + ";", c3, a3, l3 - 1) : ce(A2(y3, " ", "") + ";", c3, a3, l3 - 2), u3); break; case 59: y3 += ";"; default: - R2(E3 = ee(y3, r4, a3, o3, f3, t3, i3, k3, g3 = [], x3 = [], l3), n3); - if (w3 === 123) - if (f3 === 0) - X2(y3, r4, E3, E3, g3, n3, l3, i3, x3); + z2(E3 = re(y3, r3, a3, o3, f4, n3, i3, g3, k3 = [], x3 = [], l3), t3); + if (m3 === 123) + if (f4 === 0) + ee(y3, r3, E3, E3, k3, t3, l3, i3, x3); else - switch (h3) { + switch (p3 === 99 && M2(y3, 3) === 110 ? 100 : p3) { case 100: + case 108: case 109: case 115: - X2(e2, E3, E3, c3 && R2(ee(e2, E3, E3, 0, 0, t3, i3, k3, t3, g3 = [], l3), x3), t3, x3, l3, i3, c3 ? g3 : x3); + ee(e2, E3, E3, c3 && z2(re(e2, E3, E3, 0, 0, n3, i3, g3, n3, k3 = [], l3), x3), n3, x3, l3, i3, c3 ? k3 : x3); break; default: - X2(y3, E3, E3, E3, [""], x3, 0, i3, x3); + ee(y3, E3, E3, E3, [""], x3, 0, i3, x3); } } - o3 = f3 = p3 = 0, b3 = m3 = 1, k3 = y3 = "", l3 = s3; + o3 = f4 = h3 = 0, d3 = w3 = 1, g3 = y3 = "", l3 = s3; break; case 58: - l3 = 1 + M2(y3), p3 = v3; + l3 = 1 + R2(y3), h3 = v3; default: - if (b3 < 1) { - if (w3 == 123) - --b3; - else if (w3 == 125 && b3++ == 0 && U2() == 125) + if (d3 < 1) { + if (m3 == 123) + --d3; + else if (m3 == 125 && d3++ == 0 && _3() == 125) continue; } - switch (y3 += $(w3), w3 * b3) { + switch (y3 += $(m3), m3 * d3) { case 38: - m3 = f3 > 0 ? 1 : (y3 += "\f", -1); + w3 = f4 > 0 ? 1 : (y3 += "\f", -1); break; case 44: - i3[o3++] = (M2(y3) - 1) * m3, m3 = 1; + i3[o3++] = (R2(y3) - 1) * w3, w3 = 1; break; case 64: - if (F2() === 45) - y3 += W2(_3()); - h3 = F2(), f3 = l3 = M2(k3 = y3 += J(I2())), w3++; + if (I2() === 45) + y3 += W2(F2()); + p3 = I2(), f4 = l3 = R2(g3 = y3 += Q2(L2())), m3++; break; case 45: - if (v3 === 45 && M2(y3) == 2) - b3 = 0; + if (v3 === 45 && R2(y3) == 2) + d3 = 0; } } - return n3; + return t3; } - function ee(e2, r4, a3, c3, t3, s3, i3, u3, o3, f3, l3) { - var h3 = t3 - 1; - var p3 = t3 === 0 ? s3 : [""]; - var v3 = S2(p3); - for (var b3 = 0, d3 = 0, m3 = 0; b3 < c3; ++b3) - for (var w3 = 0, $2 = C(e2, h3 + 1, h3 = k2(d3 = i3[b3])), g3 = e2; w3 < v3; ++w3) - if (g3 = E2(d3 > 0 ? p3[w3] + " " + $2 : T($2, /&\f/g, p3[w3]))) - o3[m3++] = g3; - return N2(e2, r4, a3, t3 === 0 ? n2 : u3, o3, f3, l3); + function re(e2, r3, a3, c3, n3, s3, i3, u3, o3, f4, l3) { + var p3 = n3 - 1; + var h3 = n3 === 0 ? s3 : [""]; + var v3 = S2(h3); + for (var d3 = 0, b3 = 0, w3 = 0; d3 < c3; ++d3) + for (var m3 = 0, g3 = C(e2, p3 + 1, p3 = k2(b3 = i3[d3])), $2 = e2; m3 < v3; ++m3) + if ($2 = y2(b3 > 0 ? h3[m3] + " " + g3 : A2(g3, /&\f/g, h3[m3]))) + o3[w3++] = $2; + return P2(e2, r3, a3, n3 === 0 ? t2 : u3, o3, f4, l3); } - function re(e2, r4, a3) { - return N2(e2, r4, a3, t2, $(j2()), C(e2, 2, -2), 0); + function ae(e2, r3, a3) { + return P2(e2, r3, a3, n2, $(U2()), C(e2, 2, -2), 0); } - function ae(e2, r4, a3, c3) { - return N2(e2, r4, a3, s2, C(e2, 0, c3), C(e2, c3 + 1, -1), c3); + function ce(e2, r3, a3, c3) { + return P2(e2, r3, a3, s2, C(e2, 0, c3), C(e2, c3 + 1, -1), c3); } - function ce(e2, t3) { - switch (x2(e2, t3)) { + function ne(e2, n3, t3) { + switch (E2(e2, n3)) { case 5103: return c2 + "print-" + e2 + e2; case 5737: @@ -35448,43 +24311,75 @@ var require_stylis = __commonJS({ case 5621: case 3829: return c2 + e2 + e2; + case 4789: + return a2 + e2 + e2; case 5349: case 4246: case 4810: case 6968: case 2756: - return c2 + e2 + a2 + e2 + r3 + e2 + e2; + return c2 + e2 + a2 + e2 + r2 + e2 + e2; + case 5936: + switch (M2(e2, n3 + 11)) { + case 114: + return c2 + e2 + r2 + A2(e2, /[svh]\w+-[tblr]{2}/, "tb") + e2; + case 108: + return c2 + e2 + r2 + A2(e2, /[svh]\w+-[tblr]{2}/, "tb-rl") + e2; + case 45: + return c2 + e2 + r2 + A2(e2, /[svh]\w+-[tblr]{2}/, "lr") + e2; + } case 6828: case 4268: - return c2 + e2 + r3 + e2 + e2; + case 2903: + return c2 + e2 + r2 + e2 + e2; case 6165: - return c2 + e2 + r3 + "flex-" + e2 + e2; + return c2 + e2 + r2 + "flex-" + e2 + e2; case 5187: - return c2 + e2 + T(e2, /(\w+).+(:[^]+)/, c2 + "box-$1$2" + r3 + "flex-$1$2") + e2; + return c2 + e2 + A2(e2, /(\w+).+(:[^]+)/, c2 + "box-$1$2" + r2 + "flex-$1$2") + e2; case 5443: - return c2 + e2 + r3 + "flex-item-" + T(e2, /flex-|-self/, "") + e2; + return c2 + e2 + r2 + "flex-item-" + A2(e2, /flex-|-self/g, "") + (!T(e2, /flex-|baseline/) ? r2 + "grid-row-" + A2(e2, /flex-|-self/g, "") : "") + e2; case 4675: - return c2 + e2 + r3 + "flex-line-pack" + T(e2, /align-content|flex-|-self/, "") + e2; + return c2 + e2 + r2 + "flex-line-pack" + A2(e2, /align-content|flex-|-self/g, "") + e2; case 5548: - return c2 + e2 + r3 + T(e2, "shrink", "negative") + e2; + return c2 + e2 + r2 + A2(e2, "shrink", "negative") + e2; case 5292: - return c2 + e2 + r3 + T(e2, "basis", "preferred-size") + e2; + return c2 + e2 + r2 + A2(e2, "basis", "preferred-size") + e2; case 6060: - return c2 + "box-" + T(e2, "-grow", "") + c2 + e2 + r3 + T(e2, "grow", "positive") + e2; + return c2 + "box-" + A2(e2, "-grow", "") + c2 + e2 + r2 + A2(e2, "grow", "positive") + e2; case 4554: - return c2 + T(e2, /([^-])(transform)/g, "$1" + c2 + "$2") + e2; + return c2 + A2(e2, /([^-])(transform)/g, "$1" + c2 + "$2") + e2; case 6187: - return T(T(T(e2, /(zoom-|grab)/, c2 + "$1"), /(image-set)/, c2 + "$1"), e2, "") + e2; + return A2(A2(A2(e2, /(zoom-|grab)/, c2 + "$1"), /(image-set)/, c2 + "$1"), e2, "") + e2; case 5495: case 3959: - return T(e2, /(image-set\([^]*)/, c2 + "$1$`$1"); + return A2(e2, /(image-set\([^]*)/, c2 + "$1$`$1"); case 4968: - return T(T(e2, /(.+:)(flex-)?(.*)/, c2 + "box-pack:$3" + r3 + "flex-pack:$3"), /s.+-b[^;]+/, "justify") + c2 + e2 + e2; + return A2(A2(e2, /(.+:)(flex-)?(.*)/, c2 + "box-pack:$3" + r2 + "flex-pack:$3"), /s.+-b[^;]+/, "justify") + c2 + e2 + e2; + case 4200: + if (!T(e2, /flex-|baseline/)) + return r2 + "grid-column-align" + C(e2, n3) + e2; + break; + case 2592: + case 3360: + return r2 + A2(e2, "template-", "") + e2; + case 4384: + case 3616: + if (t3 && t3.some(function(e3, r3) { + return n3 = r3, T(e3.props, /grid-\w+-end/); + })) { + return ~O2(e2 + (t3 = t3[n3].value), "span") ? e2 : r2 + A2(e2, "-start", "") + e2 + r2 + "grid-row-span:" + (~O2(t3, "span") ? T(t3, /\d+/) : +T(t3, /\d+/) - +T(e2, /\d+/)) + ";"; + } + return r2 + A2(e2, "-start", "") + e2; + case 4896: + case 4128: + return t3 && t3.some(function(e3) { + return T(e3.props, /grid-\w+-start/); + }) ? e2 : r2 + A2(A2(e2, "-end", "-span"), "span ", "") + e2; case 4095: case 3583: case 4068: case 2532: - return T(e2, /(.+)-inline(.+)/, c2 + "$1$2") + e2; + return A2(e2, /(.+)-inline(.+)/, c2 + "$1$2") + e2; case 8116: case 7059: case 5753: @@ -35497,201 +24392,207 @@ var require_stylis = __commonJS({ case 5789: case 5021: case 4765: - if (M2(e2) - 1 - t3 > 6) - switch (O2(e2, t3 + 1)) { + if (R2(e2) - 1 - n3 > 6) + switch (M2(e2, n3 + 1)) { case 109: - if (O2(e2, t3 + 4) !== 45) + if (M2(e2, n3 + 4) !== 45) break; case 102: - return T(e2, /(.+:)(.+)-([^]+)/, "$1" + c2 + "$2-$3$1" + a2 + (O2(e2, t3 + 3) == 108 ? "$3" : "$2-$3")) + e2; + return A2(e2, /(.+:)(.+)-([^]+)/, "$1" + c2 + "$2-$3$1" + a2 + (M2(e2, n3 + 3) == 108 ? "$3" : "$2-$3")) + e2; case 115: - return ~A2(e2, "stretch") ? ce(T(e2, "stretch", "fill-available"), t3) + e2 : e2; + return ~O2(e2, "stretch") ? ne(A2(e2, "stretch", "fill-available"), n3, t3) + e2 : e2; } break; + case 5152: + case 5920: + return A2(e2, /(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/, function(a3, c3, n4, t4, s3, i3, u3) { + return r2 + c3 + ":" + n4 + u3 + (t4 ? r2 + c3 + "-span:" + (s3 ? i3 : +i3 - +n4) + u3 : "") + e2; + }); case 4949: - if (O2(e2, t3 + 1) !== 115) - break; + if (M2(e2, n3 + 6) === 121) + return A2(e2, ":", ":" + c2) + e2; + break; case 6444: - switch (O2(e2, M2(e2) - 3 - (~A2(e2, "!important") && 10))) { - case 107: - return T(e2, ":", ":" + c2) + e2; - case 101: - return T(e2, /(.+:)([^;!]+)(;|!.+)?/, "$1" + c2 + (O2(e2, 14) === 45 ? "inline-" : "") + "box$3$1" + c2 + "$2$3$1" + r3 + "$2box$3") + e2; + switch (M2(e2, M2(e2, 14) === 45 ? 18 : 11)) { + case 120: + return A2(e2, /(.+:)([^;\s!]+)(;|(\s+)?!.+)?/, "$1" + c2 + (M2(e2, 14) === 45 ? "inline-" : "") + "box$3$1" + c2 + "$2$3$1" + r2 + "$2box$3") + e2; + case 100: + return A2(e2, ":", ":" + r2) + e2; } break; - case 5936: - switch (O2(e2, t3 + 11)) { - case 114: - return c2 + e2 + r3 + T(e2, /[svh]\w+-[tblr]{2}/, "tb") + e2; - case 108: - return c2 + e2 + r3 + T(e2, /[svh]\w+-[tblr]{2}/, "tb-rl") + e2; - case 45: - return c2 + e2 + r3 + T(e2, /[svh]\w+-[tblr]{2}/, "lr") + e2; - } - return c2 + e2 + r3 + e2 + e2; + case 5719: + case 2647: + case 2135: + case 3927: + case 2391: + return A2(e2, "scroll-", "scroll-snap-") + e2; } return e2; } - function te(e2, r4) { + function te(e2, r3) { var a3 = ""; var c3 = S2(e2); - for (var t3 = 0; t3 < c3; t3++) - a3 += r4(e2[t3], t3, e2, r4) || ""; + for (var n3 = 0; n3 < c3; n3++) + a3 += r3(e2[n3], n3, e2, r3) || ""; return a3; } - function ne(e2, r4, a3, c3) { + function se(e2, r3, a3, c3) { switch (e2.type) { + case g2: + if (e2.children.length) + break; case o2: case s2: return e2.return = e2.return || e2.value; - case t2: - return ""; - case b2: - return e2.return = e2.value + "{" + te(e2.children, c3) + "}"; case n2: + return ""; + case d2: + return e2.return = e2.value + "{" + te(e2.children, c3) + "}"; + case t2: e2.value = e2.props.join(","); } - return M2(a3 = te(e2.children, c3)) ? e2.return = e2.value + "{" + a3 + "}" : ""; + return R2(a3 = te(e2.children, c3)) ? e2.return = e2.value + "{" + a3 + "}" : ""; } - function se(e2) { - var r4 = S2(e2); - return function(a3, c3, t3, n3) { + function ie(e2) { + var r3 = S2(e2); + return function(a3, c3, n3, t3) { var s3 = ""; - for (var i3 = 0; i3 < r4; i3++) - s3 += e2[i3](a3, c3, t3, n3) || ""; + for (var i3 = 0; i3 < r3; i3++) + s3 += e2[i3](a3, c3, n3, t3) || ""; return s3; }; } - function ie(e2) { - return function(r4) { - if (!r4.root) { - if (r4 = r4.return) - e2(r4); + function ue(e2) { + return function(r3) { + if (!r3.root) { + if (r3 = r3.return) + e2(r3); } }; } - function ue(e2, t3, i3, u3) { + function oe(e2, n3, i3, u3) { if (e2.length > -1) { if (!e2.return) switch (e2.type) { case s2: - e2.return = ce(e2.value, e2.length); - break; - case b2: - return te([P2(e2, { value: T(e2.value, "@", "@" + c2) })], u3); - case n2: + e2.return = ne(e2.value, e2.length, i3); + return; + case d2: + return te([j2(e2, { value: A2(e2.value, "@", "@" + c2) })], u3); + case t2: if (e2.length) - return z2(e2.props, function(t4) { - switch (y2(t4, /(::plac\w+|:read-\w+)/)) { + return N2(e2.props, function(n4) { + switch (T(n4, /(::plac\w+|:read-\w+)/)) { case ":read-only": case ":read-write": - return te([P2(e2, { props: [T(t4, /:(read-\w+)/, ":" + a2 + "$1")] })], u3); + return te([j2(e2, { props: [A2(n4, /:(read-\w+)/, ":" + a2 + "$1")] })], u3); case "::placeholder": - return te([P2(e2, { props: [T(t4, /:(plac\w+)/, ":" + c2 + "input-$1")] }), P2(e2, { props: [T(t4, /:(plac\w+)/, ":" + a2 + "$1")] }), P2(e2, { props: [T(t4, /:(plac\w+)/, r3 + "input-$1")] })], u3); + return te([j2(e2, { props: [A2(n4, /:(plac\w+)/, ":" + c2 + "input-$1")] }), j2(e2, { props: [A2(n4, /:(plac\w+)/, ":" + a2 + "$1")] }), j2(e2, { props: [A2(n4, /:(plac\w+)/, r2 + "input-$1")] })], u3); } return ""; }); } } } - function oe(e2) { + function fe(e2) { switch (e2.type) { - case n2: - e2.props = e2.props.map(function(r4) { - return z2(Y2(r4), function(r5, a3, c3) { - switch (O2(r5, 0)) { + case t2: + e2.props = e2.props.map(function(r3) { + return N2(B2(r3), function(r4, a3, c3) { + switch (M2(r4, 0)) { case 12: - return C(r5, 1, M2(r5)); + return C(r4, 1, R2(r4)); case 0: case 40: case 43: case 62: case 126: - return r5; + return r4; case 58: if (c3[++a3] === "global") c3[a3] = "", c3[++a3] = "\f" + C(c3[a3], a3 = 1, -1); case 32: - return a3 === 1 ? "" : r5; + return a3 === 1 ? "" : r4; default: switch (a3) { case 0: - e2 = r5; - return S2(c3) > 1 ? "" : r5; + e2 = r4; + return S2(c3) > 1 ? "" : r4; case (a3 = S2(c3) - 1): case 2: - return a3 === 2 ? r5 + e2 + e2 : r5 + e2; + return a3 === 2 ? r4 + e2 + e2 : r4 + e2; default: - return r5; + return r4; } } }); }); } } - e.CHARSET = f2; - e.COMMENT = t2; - e.COUNTER_STYLE = m2; + e.CHARSET = f3; + e.COMMENT = n2; + e.COUNTER_STYLE = w2; e.DECLARATION = s2; - e.DOCUMENT = p2; - e.FONT_FACE = d2; - e.FONT_FEATURE_VALUES = w2; + e.DOCUMENT = h2; + e.FONT_FACE = b2; + e.FONT_FEATURE_VALUES = m2; e.IMPORT = o2; - e.KEYFRAMES = b2; + e.KEYFRAMES = d2; + e.LAYER = g2; e.MEDIA = u2; e.MOZ = a2; - e.MS = r3; + e.MS = r2; e.NAMESPACE = v2; e.PAGE = i2; - e.RULESET = n2; - e.SUPPORTS = h2; + e.RULESET = t2; + e.SUPPORTS = p2; e.VIEWPORT = l2; e.WEBKIT = c2; e.abs = k2; e.alloc = K; - e.append = R2; - e.assign = g2; - e.caret = I2; - e.char = j2; - e.charat = O2; - e.combine = z2; - e.comment = re; - e.commenter = q2; - e.compile = Q2; - e.copy = P2; + e.append = z2; + e.assign = x2; + e.caret = L2; + e.char = U2; + e.charat = M2; + e.combine = N2; + e.comment = ae; + e.commenter = J; + e.compile = X2; + e.copy = j2; e.dealloc = V; - e.declaration = ae; + e.declaration = ce; e.delimit = W2; - e.delimiter = Z2; - e.escaping = H2; + e.delimiter = q2; + e.escaping = Z2; e.from = $; - e.hash = x2; - e.identifier = J; - e.indexof = A2; - e.match = y2; - e.middleware = se; - e.namespace = oe; - e.next = _3; - e.node = N2; - e.parse = X2; - e.peek = F2; - e.prefix = ce; - e.prefixer = ue; - e.prev = U2; - e.replace = T; - e.ruleset = ee; - e.rulesheet = ie; + e.hash = E2; + e.identifier = Q2; + e.indexof = O2; + e.match = T; + e.middleware = ie; + e.namespace = fe; + e.next = F2; + e.node = P2; + e.parse = ee; + e.peek = I2; + e.prefix = ne; + e.prefixer = oe; + e.prev = _3; + e.replace = A2; + e.ruleset = re; + e.rulesheet = ue; e.serialize = te; e.sizeof = S2; - e.slice = L2; - e.stringify = ne; - e.strlen = M2; + e.slice = D2; + e.stringify = se; + e.strlen = R2; e.substr = C; - e.token = D2; - e.tokenize = Y2; - e.tokenizer = G2; - e.trim = E2; - e.whitespace = B2; + e.token = Y2; + e.tokenize = B2; + e.tokenizer = H2; + e.trim = y2; + e.whitespace = G2; Object.defineProperty(e, "__esModule", { value: true }); }); } @@ -35713,7 +24614,7 @@ var require_emotion_weak_memoize_cjs_dev = __commonJS({ return ret; }; }; - exports.default = weakMemoize; + exports["default"] = weakMemoize; } }); @@ -35729,6 +24630,35 @@ var require_emotion_weak_memoize_cjs = __commonJS({ } }); +// node_modules/@emotion/cache/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.dev.js +var require_emotion_memoize_cjs_dev = __commonJS({ + "node_modules/@emotion/cache/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.dev.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function memoize(fn2) { + var cache = /* @__PURE__ */ Object.create(null); + return function(arg) { + if (cache[arg] === void 0) + cache[arg] = fn2(arg); + return cache[arg]; + }; + } + exports["default"] = memoize; + } +}); + +// node_modules/@emotion/cache/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js +var require_emotion_memoize_cjs = __commonJS({ + "node_modules/@emotion/cache/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_emotion_memoize_cjs_dev(); + } + } +}); + // node_modules/@emotion/cache/dist/emotion-cache.cjs.dev.js var require_emotion_cache_cjs_dev = __commonJS({ "node_modules/@emotion/cache/dist/emotion-cache.cjs.dev.js"(exports) { @@ -35737,12 +24667,12 @@ var require_emotion_cache_cjs_dev = __commonJS({ var sheet = require_emotion_sheet_cjs(); var stylis = require_stylis(); var weakMemoize = require_emotion_weak_memoize_cjs(); - var memoize2 = require_emotion_memoize_cjs(); + var memoize = require_emotion_memoize_cjs(); function _interopDefault(e) { return e && e.__esModule ? e : { "default": e }; } var weakMemoize__default = /* @__PURE__ */ _interopDefault(weakMemoize); - var memoize__default = /* @__PURE__ */ _interopDefault(memoize2); + var memoize__default = /* @__PURE__ */ _interopDefault(memoize); var identifierWithPointTracking = function identifierWithPointTracking2(begin, points, index) { var previous = 0; var character = 0; @@ -35835,8 +24765,8 @@ var require_emotion_cache_cjs_dev = __commonJS({ return; var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g); if (unsafePseudoClasses) { - var isNested = element.parent === children[0]; - var commentContainer = isNested ? children[0].children : children; + var isNested = !!element.parent; + var commentContainer = isNested ? element.parent.children : children; for (var i2 = commentContainer.length - 1; i2 >= 0; i2--) { var node = commentContainer[i2]; if (node.line < element.line) { @@ -35885,6 +24815,154 @@ var require_emotion_cache_cjs_dev = __commonJS({ nullifyElement(element); } }; + function prefix2(value, length) { + switch (stylis.hash(value, length)) { + case 5103: + return stylis.WEBKIT + "print-" + value + value; + case 5737: + case 4201: + case 3177: + case 3433: + case 1641: + case 4457: + case 2921: + case 5572: + case 6356: + case 5844: + case 3191: + case 6645: + case 3005: + case 6391: + case 5879: + case 5623: + case 6135: + case 4599: + case 4855: + case 4215: + case 6389: + case 5109: + case 5365: + case 5621: + case 3829: + return stylis.WEBKIT + value + value; + case 5349: + case 4246: + case 4810: + case 6968: + case 2756: + return stylis.WEBKIT + value + stylis.MOZ + value + stylis.MS + value + value; + case 6828: + case 4268: + return stylis.WEBKIT + value + stylis.MS + value + value; + case 6165: + return stylis.WEBKIT + value + stylis.MS + "flex-" + value + value; + case 5187: + return stylis.WEBKIT + value + stylis.replace(value, /(\w+).+(:[^]+)/, stylis.WEBKIT + "box-$1$2" + stylis.MS + "flex-$1$2") + value; + case 5443: + return stylis.WEBKIT + value + stylis.MS + "flex-item-" + stylis.replace(value, /flex-|-self/, "") + value; + case 4675: + return stylis.WEBKIT + value + stylis.MS + "flex-line-pack" + stylis.replace(value, /align-content|flex-|-self/, "") + value; + case 5548: + return stylis.WEBKIT + value + stylis.MS + stylis.replace(value, "shrink", "negative") + value; + case 5292: + return stylis.WEBKIT + value + stylis.MS + stylis.replace(value, "basis", "preferred-size") + value; + case 6060: + return stylis.WEBKIT + "box-" + stylis.replace(value, "-grow", "") + stylis.WEBKIT + value + stylis.MS + stylis.replace(value, "grow", "positive") + value; + case 4554: + return stylis.WEBKIT + stylis.replace(value, /([^-])(transform)/g, "$1" + stylis.WEBKIT + "$2") + value; + case 6187: + return stylis.replace(stylis.replace(stylis.replace(value, /(zoom-|grab)/, stylis.WEBKIT + "$1"), /(image-set)/, stylis.WEBKIT + "$1"), value, "") + value; + case 5495: + case 3959: + return stylis.replace(value, /(image-set\([^]*)/, stylis.WEBKIT + "$1$`$1"); + case 4968: + return stylis.replace(stylis.replace(value, /(.+:)(flex-)?(.*)/, stylis.WEBKIT + "box-pack:$3" + stylis.MS + "flex-pack:$3"), /s.+-b[^;]+/, "justify") + stylis.WEBKIT + value + value; + case 4095: + case 3583: + case 4068: + case 2532: + return stylis.replace(value, /(.+)-inline(.+)/, stylis.WEBKIT + "$1$2") + value; + case 8116: + case 7059: + case 5753: + case 5535: + case 5445: + case 5701: + case 4933: + case 4677: + case 5533: + case 5789: + case 5021: + case 4765: + if (stylis.strlen(value) - 1 - length > 6) + switch (stylis.charat(value, length + 1)) { + case 109: + if (stylis.charat(value, length + 4) !== 45) + break; + case 102: + return stylis.replace(value, /(.+:)(.+)-([^]+)/, "$1" + stylis.WEBKIT + "$2-$3$1" + stylis.MOZ + (stylis.charat(value, length + 3) == 108 ? "$3" : "$2-$3")) + value; + case 115: + return ~stylis.indexof(value, "stretch") ? prefix2(stylis.replace(value, "stretch", "fill-available"), length) + value : value; + } + break; + case 4949: + if (stylis.charat(value, length + 1) !== 115) + break; + case 6444: + switch (stylis.charat(value, stylis.strlen(value) - 3 - (~stylis.indexof(value, "!important") && 10))) { + case 107: + return stylis.replace(value, ":", ":" + stylis.WEBKIT) + value; + case 101: + return stylis.replace(value, /(.+:)([^;!]+)(;|!.+)?/, "$1" + stylis.WEBKIT + (stylis.charat(value, 14) === 45 ? "inline-" : "") + "box$3$1" + stylis.WEBKIT + "$2$3$1" + stylis.MS + "$2box$3") + value; + } + break; + case 5936: + switch (stylis.charat(value, length + 11)) { + case 114: + return stylis.WEBKIT + value + stylis.MS + stylis.replace(value, /[svh]\w+-[tblr]{2}/, "tb") + value; + case 108: + return stylis.WEBKIT + value + stylis.MS + stylis.replace(value, /[svh]\w+-[tblr]{2}/, "tb-rl") + value; + case 45: + return stylis.WEBKIT + value + stylis.MS + stylis.replace(value, /[svh]\w+-[tblr]{2}/, "lr") + value; + } + return stylis.WEBKIT + value + stylis.MS + value + value; + } + return value; + } + var prefixer = function prefixer2(element, index, children, callback) { + if (element.length > -1) { + if (!element["return"]) + switch (element.type) { + case stylis.DECLARATION: + element["return"] = prefix2(element.value, element.length); + break; + case stylis.KEYFRAMES: + return stylis.serialize([stylis.copy(element, { + value: stylis.replace(element.value, "@", "@" + stylis.WEBKIT) + })], callback); + case stylis.RULESET: + if (element.length) + return stylis.combine(element.props, function(value) { + switch (stylis.match(value, /(::plac\w+|:read-\w+)/)) { + case ":read-only": + case ":read-write": + return stylis.serialize([stylis.copy(element, { + props: [stylis.replace(value, /:(read-\w+)/, ":" + stylis.MOZ + "$1")] + })], callback); + case "::placeholder": + return stylis.serialize([stylis.copy(element, { + props: [stylis.replace(value, /:(plac\w+)/, ":" + stylis.WEBKIT + "input-$1")] + }), stylis.copy(element, { + props: [stylis.replace(value, /:(plac\w+)/, ":" + stylis.MOZ + "$1")] + }), stylis.copy(element, { + props: [stylis.replace(value, /:(plac\w+)/, stylis.MS + "input-$1")] + })], callback); + } + return ""; + }); + } + } + }; var isBrowser = typeof document !== "undefined"; var getServerStylisCache = isBrowser ? void 0 : weakMemoize__default["default"](function() { return memoize__default["default"](function() { @@ -35894,7 +24972,7 @@ var require_emotion_cache_cjs_dev = __commonJS({ }; }); }); - var defaultStylisPlugins = [stylis.prefixer]; + var defaultStylisPlugins = [prefixer]; var createCache = function createCache2(options) { var key = options.key; if (!key) { @@ -35959,11 +25037,11 @@ var require_emotion_cache_cjs_dev = __commonJS({ var stylis$1 = function stylis$12(styles) { return stylis.serialize(stylis.compile(styles), serializer); }; - _insert = function insert(selector, serialized, sheet2, shouldCache) { + _insert = function insert2(selector, serialized, sheet2, shouldCache) { currentSheet = sheet2; if (serialized.map !== void 0) { currentSheet = { - insert: function insert2(rule) { + insert: function insert3(rule) { sheet2.insert(rule + serialized.map); } }; @@ -36025,7 +25103,7 @@ var require_emotion_cache_cjs_dev = __commonJS({ cache.sheet.hydrate(nodesToHydrate); return cache; }; - exports.default = createCache; + exports["default"] = createCache; } }); @@ -36041,8 +25119,29 @@ var require_emotion_cache_cjs = __commonJS({ } }); +// node_modules/@babel/runtime/helpers/extends.js +var require_extends = __commonJS({ + "node_modules/@babel/runtime/helpers/extends.js"(exports, module2) { + function _extends2() { + module2.exports = _extends2 = Object.assign ? Object.assign.bind() : function(target) { + for (var i2 = 1; i2 < arguments.length; i2++) { + var source = arguments[i2]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + return _extends2.apply(this, arguments); + } + module2.exports = _extends2, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + // node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js -var require_react_is_development3 = __commonJS({ +var require_react_is_development = __commonJS({ "node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js"(exports) { "use strict"; if (true) { @@ -36107,11 +25206,11 @@ var require_react_is_development3 = __commonJS({ var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; - var Element3 = REACT_ELEMENT_TYPE; - var ForwardRef2 = REACT_FORWARD_REF_TYPE; - var Fragment6 = REACT_FRAGMENT_TYPE; + var Element = REACT_ELEMENT_TYPE; + var ForwardRef = REACT_FORWARD_REF_TYPE; + var Fragment2 = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; - var Memo2 = REACT_MEMO_TYPE; + var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; @@ -36166,11 +25265,11 @@ var require_react_is_development3 = __commonJS({ exports.ConcurrentMode = ConcurrentMode; exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; - exports.Element = Element3; - exports.ForwardRef = ForwardRef2; - exports.Fragment = Fragment6; + exports.Element = Element; + exports.ForwardRef = ForwardRef; + exports.Fragment = Fragment2; exports.Lazy = Lazy; - exports.Memo = Memo2; + exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; @@ -36196,13 +25295,13 @@ var require_react_is_development3 = __commonJS({ }); // node_modules/hoist-non-react-statics/node_modules/react-is/index.js -var require_react_is3 = __commonJS({ +var require_react_is = __commonJS({ "node_modules/hoist-non-react-statics/node_modules/react-is/index.js"(exports, module2) { "use strict"; if (false) { module2.exports = null; } else { - module2.exports = require_react_is_development3(); + module2.exports = require_react_is_development(); } } }); @@ -36211,7 +25310,7 @@ var require_react_is3 = __commonJS({ var require_hoist_non_react_statics_cjs = __commonJS({ "node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"(exports, module2) { "use strict"; - var reactIs = require_react_is3(); + var reactIs = require_react_is(); var REACT_STATICS = { childContextTypes: true, contextType: true, @@ -36308,7 +25407,7 @@ var require_emotion_react_isolated_hnrs_cjs_dev = __commonJS({ var hoistNonReactStatics = function(targetComponent, sourceComponent) { return hoistNonReactStatics__default["default"](targetComponent, sourceComponent); }; - exports.default = hoistNonReactStatics; + exports["default"] = hoistNonReactStatics; } }); @@ -36329,14 +25428,14 @@ var require_emotion_utils_cjs_dev = __commonJS({ }); return rawClassName; } - var registerStyles = function registerStyles2(cache, serialized, isStringTag2) { + var registerStyles = function registerStyles2(cache, serialized, isStringTag) { var className = cache.key + "-" + serialized.name; - if ((isStringTag2 === false || isBrowser === false && cache.compat !== void 0) && cache.registered[className] === void 0) { + if ((isStringTag === false || isBrowser === false && cache.compat !== void 0) && cache.registered[className] === void 0) { cache.registered[className] = serialized.styles; } }; - var insertStyles = function insertStyles2(cache, serialized, isStringTag2) { - registerStyles(cache, serialized, isStringTag2); + var insertStyles = function insertStyles2(cache, serialized, isStringTag) { + registerStyles(cache, serialized, isStringTag); var className = cache.key + "-" + serialized.name; if (cache.inserted[serialized.name] === void 0) { var stylesForSSR = ""; @@ -36371,9 +25470,9 @@ var require_emotion_utils_cjs = __commonJS({ } }); -// node_modules/@emotion/hash/dist/emotion-hash.cjs.dev.js +// node_modules/@emotion/react/node_modules/@emotion/hash/dist/emotion-hash.cjs.dev.js var require_emotion_hash_cjs_dev = __commonJS({ - "node_modules/@emotion/hash/dist/emotion-hash.cjs.dev.js"(exports) { + "node_modules/@emotion/react/node_modules/@emotion/hash/dist/emotion-hash.cjs.dev.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function murmur2(str) { @@ -36398,13 +25497,13 @@ var require_emotion_hash_cjs_dev = __commonJS({ h2 = (h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16); return ((h2 ^ h2 >>> 15) >>> 0).toString(36); } - exports.default = murmur2; + exports["default"] = murmur2; } }); -// node_modules/@emotion/hash/dist/emotion-hash.cjs.js +// node_modules/@emotion/react/node_modules/@emotion/hash/dist/emotion-hash.cjs.js var require_emotion_hash_cjs = __commonJS({ - "node_modules/@emotion/hash/dist/emotion-hash.cjs.js"(exports, module2) { + "node_modules/@emotion/react/node_modules/@emotion/hash/dist/emotion-hash.cjs.js"(exports, module2) { "use strict"; if (false) { module2.exports = null; @@ -36414,13 +25513,14 @@ var require_emotion_hash_cjs = __commonJS({ } }); -// node_modules/@emotion/unitless/dist/emotion-unitless.cjs.dev.js +// node_modules/@emotion/react/node_modules/@emotion/unitless/dist/emotion-unitless.cjs.dev.js var require_emotion_unitless_cjs_dev = __commonJS({ - "node_modules/@emotion/unitless/dist/emotion-unitless.cjs.dev.js"(exports) { + "node_modules/@emotion/react/node_modules/@emotion/unitless/dist/emotion-unitless.cjs.dev.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var unitlessKeys = { animationIterationCount: 1, + aspectRatio: 1, borderImageOutset: 1, borderImageSlice: 1, borderImageWidth: 1, @@ -36466,13 +25566,13 @@ var require_emotion_unitless_cjs_dev = __commonJS({ strokeOpacity: 1, strokeWidth: 1 }; - exports.default = unitlessKeys; + exports["default"] = unitlessKeys; } }); -// node_modules/@emotion/unitless/dist/emotion-unitless.cjs.js +// node_modules/@emotion/react/node_modules/@emotion/unitless/dist/emotion-unitless.cjs.js var require_emotion_unitless_cjs = __commonJS({ - "node_modules/@emotion/unitless/dist/emotion-unitless.cjs.js"(exports, module2) { + "node_modules/@emotion/react/node_modules/@emotion/unitless/dist/emotion-unitless.cjs.js"(exports, module2) { "use strict"; if (false) { module2.exports = null; @@ -36482,20 +25582,49 @@ var require_emotion_unitless_cjs = __commonJS({ } }); -// node_modules/@emotion/serialize/dist/emotion-serialize.cjs.dev.js -var require_emotion_serialize_cjs_dev = __commonJS({ - "node_modules/@emotion/serialize/dist/emotion-serialize.cjs.dev.js"(exports) { +// node_modules/@emotion/react/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.dev.js +var require_emotion_memoize_cjs_dev2 = __commonJS({ + "node_modules/@emotion/react/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.dev.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - var hashString = require_emotion_hash_cjs(); + function memoize(fn2) { + var cache = /* @__PURE__ */ Object.create(null); + return function(arg) { + if (cache[arg] === void 0) + cache[arg] = fn2(arg); + return cache[arg]; + }; + } + exports["default"] = memoize; + } +}); + +// node_modules/@emotion/react/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js +var require_emotion_memoize_cjs2 = __commonJS({ + "node_modules/@emotion/react/node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_emotion_memoize_cjs_dev2(); + } + } +}); + +// node_modules/@emotion/react/node_modules/@emotion/serialize/dist/emotion-serialize.cjs.dev.js +var require_emotion_serialize_cjs_dev = __commonJS({ + "node_modules/@emotion/react/node_modules/@emotion/serialize/dist/emotion-serialize.cjs.dev.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var hashString2 = require_emotion_hash_cjs(); var unitless = require_emotion_unitless_cjs(); - var memoize2 = require_emotion_memoize_cjs(); + var memoize = require_emotion_memoize_cjs2(); function _interopDefault(e) { return e && e.__esModule ? e : { "default": e }; } - var hashString__default = /* @__PURE__ */ _interopDefault(hashString); + var hashString__default = /* @__PURE__ */ _interopDefault(hashString2); var unitless__default = /* @__PURE__ */ _interopDefault(unitless); - var memoize__default = /* @__PURE__ */ _interopDefault(memoize2); + var memoize__default = /* @__PURE__ */ _interopDefault(memoize); var ILLEGAL_ESCAPE_SEQUENCE_ERROR = `You have illegal escape sequence in your template literal, most likely inside content's property value. Because you write your CSS inside a JavaScript string you actually have to do double escaping, so for example "content: '\\00d7';" should become "content: '\\\\00d7';". You can read more about this here: @@ -36534,7 +25663,7 @@ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_liter return value; }; if (true) { - contentValuePattern = /(var|attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\(|(no-)?(open|close)-quote/; + contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\(|(no-)?(open|close)-quote/; contentValues = ["normal", "none", "initial", "inherit", "unset"]; oldProcessStyleValue = processStyleValue; msPattern = /^-ms-/; @@ -36750,9 +25879,9 @@ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_liter } }); -// node_modules/@emotion/serialize/dist/emotion-serialize.cjs.js +// node_modules/@emotion/react/node_modules/@emotion/serialize/dist/emotion-serialize.cjs.js var require_emotion_serialize_cjs = __commonJS({ - "node_modules/@emotion/serialize/dist/emotion-serialize.cjs.js"(exports, module2) { + "node_modules/@emotion/react/node_modules/@emotion/serialize/dist/emotion-serialize.cjs.js"(exports, module2) { "use strict"; if (false) { module2.exports = null; @@ -36762,12 +25891,12 @@ var require_emotion_serialize_cjs = __commonJS({ } }); -// node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.dev.js +// node_modules/@emotion/react/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.dev.js var require_emotion_use_insertion_effect_with_fallbacks_cjs_dev = __commonJS({ - "node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.dev.js"(exports) { + "node_modules/@emotion/react/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.dev.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - var React11 = require_react(); + var React49 = require_react(); function _interopNamespace(e) { if (e && e.__esModule) return e; @@ -36788,22 +25917,22 @@ var require_emotion_use_insertion_effect_with_fallbacks_cjs_dev = __commonJS({ n2["default"] = e; return Object.freeze(n2); } - var React__namespace = /* @__PURE__ */ _interopNamespace(React11); + var React__namespace = /* @__PURE__ */ _interopNamespace(React49); var isBrowser = typeof document !== "undefined"; var syncFallback = function syncFallback2(create) { return create(); }; var useInsertionEffect = React__namespace["useInsertionEffect"] ? React__namespace["useInsertionEffect"] : false; var useInsertionEffectAlwaysWithSyncFallback = !isBrowser ? syncFallback : useInsertionEffect || syncFallback; - var useInsertionEffectWithLayoutFallback = useInsertionEffect || React11.useLayoutEffect; + var useInsertionEffectWithLayoutFallback = useInsertionEffect || React__namespace.useLayoutEffect; exports.useInsertionEffectAlwaysWithSyncFallback = useInsertionEffectAlwaysWithSyncFallback; exports.useInsertionEffectWithLayoutFallback = useInsertionEffectWithLayoutFallback; } }); -// node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.js +// node_modules/@emotion/react/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.js var require_emotion_use_insertion_effect_with_fallbacks_cjs = __commonJS({ - "node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.js"(exports, module2) { + "node_modules/@emotion/react/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.cjs.js"(exports, module2) { "use strict"; if (false) { module2.exports = null; @@ -36813,26 +25942,47 @@ var require_emotion_use_insertion_effect_with_fallbacks_cjs = __commonJS({ } }); -// node_modules/@emotion/react/dist/emotion-element-b63ca7c6.cjs.dev.js -var require_emotion_element_b63ca7c6_cjs_dev = __commonJS({ - "node_modules/@emotion/react/dist/emotion-element-b63ca7c6.cjs.dev.js"(exports) { +// node_modules/@emotion/react/dist/emotion-element-48d2c2e4.cjs.dev.js +var require_emotion_element_48d2c2e4_cjs_dev = __commonJS({ + "node_modules/@emotion/react/dist/emotion-element-48d2c2e4.cjs.dev.js"(exports) { "use strict"; - var React11 = require_react(); + var React49 = require_react(); var createCache = require_emotion_cache_cjs(); var _extends2 = require_extends(); var weakMemoize = require_emotion_weak_memoize_cjs(); var _isolatedHnrs_dist_emotionReact_isolatedHnrs = require_emotion_react_isolated_hnrs_cjs_dev(); var utils = require_emotion_utils_cjs(); - var serialize = require_emotion_serialize_cjs(); + var serialize2 = require_emotion_serialize_cjs(); var useInsertionEffectWithFallbacks = require_emotion_use_insertion_effect_with_fallbacks_cjs(); function _interopDefault(e) { return e && e.__esModule ? e : { "default": e }; } + function _interopNamespace(e) { + if (e && e.__esModule) + return e; + var n2 = /* @__PURE__ */ Object.create(null); + if (e) { + Object.keys(e).forEach(function(k2) { + if (k2 !== "default") { + var d2 = Object.getOwnPropertyDescriptor(e, k2); + Object.defineProperty(n2, k2, d2.get ? d2 : { + enumerable: true, + get: function() { + return e[k2]; + } + }); + } + }); + } + n2["default"] = e; + return Object.freeze(n2); + } + var React__namespace = /* @__PURE__ */ _interopNamespace(React49); var createCache__default = /* @__PURE__ */ _interopDefault(createCache); var weakMemoize__default = /* @__PURE__ */ _interopDefault(weakMemoize); var isBrowser = typeof document !== "undefined"; var hasOwnProperty = {}.hasOwnProperty; - var EmotionCacheContext = /* @__PURE__ */ React11.createContext( + var EmotionCacheContext = /* @__PURE__ */ React__namespace.createContext( typeof HTMLElement !== "undefined" ? /* @__PURE__ */ createCache__default["default"]({ key: "css" }) : null @@ -36840,25 +25990,25 @@ var require_emotion_element_b63ca7c6_cjs_dev = __commonJS({ if (true) { EmotionCacheContext.displayName = "EmotionCacheContext"; } - var CacheProvider = EmotionCacheContext.Provider; - var __unsafe_useEmotionCache = function useEmotionCache() { - return React11.useContext(EmotionCacheContext); + var CacheProvider2 = EmotionCacheContext.Provider; + var __unsafe_useEmotionCache2 = function useEmotionCache() { + return React49.useContext(EmotionCacheContext); }; - exports.withEmotionCache = function withEmotionCache(func) { - return /* @__PURE__ */ React11.forwardRef(function(props, ref) { - var cache = React11.useContext(EmotionCacheContext); + exports.withEmotionCache = function withEmotionCache2(func) { + return /* @__PURE__ */ React49.forwardRef(function(props, ref) { + var cache = React49.useContext(EmotionCacheContext); return func(props, cache, ref); }); }; if (!isBrowser) { - exports.withEmotionCache = function withEmotionCache(func) { + exports.withEmotionCache = function withEmotionCache2(func) { return function(props) { - var cache = React11.useContext(EmotionCacheContext); + var cache = React49.useContext(EmotionCacheContext); if (cache === null) { cache = createCache__default["default"]({ key: "css" }); - return /* @__PURE__ */ React11.createElement(EmotionCacheContext.Provider, { + return /* @__PURE__ */ React__namespace.createElement(EmotionCacheContext.Provider, { value: cache }, func(props, cache)); } else { @@ -36867,12 +26017,12 @@ var require_emotion_element_b63ca7c6_cjs_dev = __commonJS({ }; }; } - var ThemeContext2 = /* @__PURE__ */ React11.createContext({}); + var ThemeContext2 = /* @__PURE__ */ React__namespace.createContext({}); if (true) { ThemeContext2.displayName = "EmotionThemeContext"; } - var useTheme4 = function useTheme5() { - return React11.useContext(ThemeContext2); + var useTheme2 = function useTheme3() { + return React__namespace.useContext(ThemeContext2); }; var getTheme = function getTheme2(outerTheme, theme) { if (typeof theme === "function") { @@ -36892,25 +26042,25 @@ var require_emotion_element_b63ca7c6_cjs_dev = __commonJS({ return getTheme(outerTheme, theme); }); }); - var ThemeProvider = function ThemeProvider2(props) { - var theme = React11.useContext(ThemeContext2); + var ThemeProvider2 = function ThemeProvider3(props) { + var theme = React__namespace.useContext(ThemeContext2); if (props.theme !== theme) { theme = createCacheWithTheme(theme)(props.theme); } - return /* @__PURE__ */ React11.createElement(ThemeContext2.Provider, { + return /* @__PURE__ */ React__namespace.createElement(ThemeContext2.Provider, { value: theme }, props.children); }; - function withTheme(Component) { + function withTheme2(Component) { var componentName = Component.displayName || Component.name || "Component"; var render = function render2(props, ref) { - var theme = React11.useContext(ThemeContext2); - return /* @__PURE__ */ React11.createElement(Component, _extends2({ + var theme = React__namespace.useContext(ThemeContext2); + return /* @__PURE__ */ React__namespace.createElement(Component, _extends2({ theme, ref }, props)); }; - var WithTheme = /* @__PURE__ */ React11.forwardRef(render); + var WithTheme = /* @__PURE__ */ React__namespace.forwardRef(render); WithTheme.displayName = "WithTheme(" + componentName + ")"; return _isolatedHnrs_dist_emotionReact_isolatedHnrs["default"](WithTheme, Component); } @@ -36967,10 +26117,10 @@ var require_emotion_element_b63ca7c6_cjs_dev = __commonJS({ return newProps; }; var Insertion = function Insertion2(_ref) { - var cache = _ref.cache, serialized = _ref.serialized, isStringTag2 = _ref.isStringTag; - utils.registerStyles(cache, serialized, isStringTag2); + var cache = _ref.cache, serialized = _ref.serialized, isStringTag = _ref.isStringTag; + utils.registerStyles(cache, serialized, isStringTag); var rules = useInsertionEffectWithFallbacks.useInsertionEffectAlwaysWithSyncFallback(function() { - return utils.insertStyles(cache, serialized, isStringTag2); + return utils.insertStyles(cache, serialized, isStringTag); }); if (!isBrowser && rules !== void 0) { var _ref2; @@ -36980,7 +26130,7 @@ var require_emotion_element_b63ca7c6_cjs_dev = __commonJS({ serializedNames += " " + next.name; next = next.next; } - return /* @__PURE__ */ React11.createElement("style", (_ref2 = {}, _ref2["data-emotion"] = cache.key + " " + serializedNames, _ref2.dangerouslySetInnerHTML = { + return /* @__PURE__ */ React__namespace.createElement("style", (_ref2 = {}, _ref2["data-emotion"] = cache.key + " " + serializedNames, _ref2.dangerouslySetInnerHTML = { __html: rules }, _ref2.nonce = cache.sheet.nonce, _ref2)); } @@ -36999,11 +26149,11 @@ var require_emotion_element_b63ca7c6_cjs_dev = __commonJS({ } else if (props.className != null) { className = props.className + " "; } - var serialized = serialize.serializeStyles(registeredStyles, void 0, React11.useContext(ThemeContext2)); + var serialized = serialize2.serializeStyles(registeredStyles, void 0, React__namespace.useContext(ThemeContext2)); if (serialized.name.indexOf("-") === -1) { var labelFromStack = props[labelPropName]; if (labelFromStack) { - serialized = serialize.serializeStyles([serialized, "label:" + labelFromStack + ";"]); + serialized = serialize2.serializeStyles([serialized, "label:" + labelFromStack + ";"]); } } className += cache.key + "-" + serialized.name; @@ -37015,25 +26165,520 @@ var require_emotion_element_b63ca7c6_cjs_dev = __commonJS({ } newProps.ref = ref; newProps.className = className; - return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(Insertion, { + return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(Insertion, { cache, serialized, isStringTag: typeof WrappedComponent === "string" - }), /* @__PURE__ */ React11.createElement(WrappedComponent, newProps)); + }), /* @__PURE__ */ React__namespace.createElement(WrappedComponent, newProps)); }); if (true) { Emotion.displayName = "EmotionCssPropInternal"; } - exports.CacheProvider = CacheProvider; - exports.Emotion = Emotion; + var Emotion$1 = Emotion; + exports.CacheProvider = CacheProvider2; + exports.Emotion = Emotion$1; exports.ThemeContext = ThemeContext2; - exports.ThemeProvider = ThemeProvider; - exports.__unsafe_useEmotionCache = __unsafe_useEmotionCache; + exports.ThemeProvider = ThemeProvider2; + exports.__unsafe_useEmotionCache = __unsafe_useEmotionCache2; exports.createEmotionProps = createEmotionProps; exports.hasOwnProperty = hasOwnProperty; exports.isBrowser = isBrowser; - exports.useTheme = useTheme4; - exports.withTheme = withTheme; + exports.useTheme = useTheme2; + exports.withTheme = withTheme2; + } +}); + +// node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.cjs.dev.js +var require_emotion_react_jsx_runtime_cjs_dev = __commonJS({ + "node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.cjs.dev.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var ReactJSXRuntime = require_jsx_runtime(); + var emotionElement = require_emotion_element_48d2c2e4_cjs_dev(); + require_react(); + require_emotion_cache_cjs(); + require_extends(); + require_emotion_weak_memoize_cjs(); + require_emotion_react_isolated_hnrs_cjs_dev(); + require_hoist_non_react_statics_cjs(); + require_emotion_utils_cjs(); + require_emotion_serialize_cjs(); + require_emotion_use_insertion_effect_with_fallbacks_cjs(); + function _interopNamespace(e) { + if (e && e.__esModule) + return e; + var n2 = /* @__PURE__ */ Object.create(null); + if (e) { + Object.keys(e).forEach(function(k2) { + if (k2 !== "default") { + var d2 = Object.getOwnPropertyDescriptor(e, k2); + Object.defineProperty(n2, k2, d2.get ? d2 : { + enumerable: true, + get: function() { + return e[k2]; + } + }); + } + }); + } + n2["default"] = e; + return Object.freeze(n2); + } + var ReactJSXRuntime__namespace = /* @__PURE__ */ _interopNamespace(ReactJSXRuntime); + var Fragment2 = ReactJSXRuntime__namespace.Fragment; + function jsx3(type, props, key) { + if (!emotionElement.hasOwnProperty.call(props, "css")) { + return ReactJSXRuntime__namespace.jsx(type, props, key); + } + return ReactJSXRuntime__namespace.jsx(emotionElement.Emotion, emotionElement.createEmotionProps(type, props), key); + } + function jsxs2(type, props, key) { + if (!emotionElement.hasOwnProperty.call(props, "css")) { + return ReactJSXRuntime__namespace.jsxs(type, props, key); + } + return ReactJSXRuntime__namespace.jsxs(emotionElement.Emotion, emotionElement.createEmotionProps(type, props), key); + } + exports.Fragment = Fragment2; + exports.jsx = jsx3; + exports.jsxs = jsxs2; + } +}); + +// node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js +var require_emotion_react_jsx_runtime_cjs = __commonJS({ + "node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_emotion_react_jsx_runtime_cjs_dev(); + } + } +}); + +// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +var require_use_sync_external_store_shim_development = __commonJS({ + "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) { + "use strict"; + if (true) { + (function() { + "use strict"; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); + } + var React49 = require_react(); + var ReactSharedInternals = React49.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + function error(format) { + { + { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + printWarning("error", format, args); + } + } + } + function printWarning(level, format, args) { + { + var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame.getStackAddendum(); + if (stack !== "") { + format += "%s"; + args = args.concat([stack]); + } + var argsWithFormat = args.map(function(item) { + return String(item); + }); + argsWithFormat.unshift("Warning: " + format); + Function.prototype.apply.call(console[level], console, argsWithFormat); + } + } + function is(x2, y2) { + return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; + } + var objectIs = typeof Object.is === "function" ? Object.is : is; + var useState2 = React49.useState, useEffect2 = React49.useEffect, useLayoutEffect2 = React49.useLayoutEffect, useDebugValue2 = React49.useDebugValue; + var didWarnOld18Alpha = false; + var didWarnUncachedGetSnapshot = false; + function useSyncExternalStore3(subscribe2, getSnapshot, getServerSnapshot) { + { + if (!didWarnOld18Alpha) { + if (React49.startTransition !== void 0) { + didWarnOld18Alpha = true; + error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."); + } + } + } + var value = getSnapshot(); + { + if (!didWarnUncachedGetSnapshot) { + var cachedValue = getSnapshot(); + if (!objectIs(value, cachedValue)) { + error("The result of getSnapshot should be cached to avoid an infinite loop"); + didWarnUncachedGetSnapshot = true; + } + } + } + var _useState = useState2({ + inst: { + value, + getSnapshot + } + }), inst = _useState[0].inst, forceUpdate = _useState[1]; + useLayoutEffect2(function() { + inst.value = value; + inst.getSnapshot = getSnapshot; + if (checkIfSnapshotChanged(inst)) { + forceUpdate({ + inst + }); + } + }, [subscribe2, value, getSnapshot]); + useEffect2(function() { + if (checkIfSnapshotChanged(inst)) { + forceUpdate({ + inst + }); + } + var handleStoreChange = function() { + if (checkIfSnapshotChanged(inst)) { + forceUpdate({ + inst + }); + } + }; + return subscribe2(handleStoreChange); + }, [subscribe2]); + useDebugValue2(value); + return value; + } + function checkIfSnapshotChanged(inst) { + var latestGetSnapshot = inst.getSnapshot; + var prevValue = inst.value; + try { + var nextValue = latestGetSnapshot(); + return !objectIs(prevValue, nextValue); + } catch (error2) { + return true; + } + } + function useSyncExternalStore$1(subscribe2, getSnapshot, getServerSnapshot) { + return getSnapshot(); + } + var canUseDOM2 = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); + var isServerEnvironment = !canUseDOM2; + var shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore3; + var useSyncExternalStore$2 = React49.useSyncExternalStore !== void 0 ? React49.useSyncExternalStore : shim; + exports.useSyncExternalStore = useSyncExternalStore$2; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); + } + })(); + } + } +}); + +// node_modules/use-sync-external-store/shim/index.js +var require_shim = __commonJS({ + "node_modules/use-sync-external-store/shim/index.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_use_sync_external_store_shim_development(); + } + } +}); + +// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +var require_with_selector_development = __commonJS({ + "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) { + "use strict"; + if (true) { + (function() { + "use strict"; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); + } + var React49 = require_react(); + var shim = require_shim(); + function is(x2, y2) { + return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; + } + var objectIs = typeof Object.is === "function" ? Object.is : is; + var useSyncExternalStore3 = shim.useSyncExternalStore; + var useRef3 = React49.useRef, useEffect2 = React49.useEffect, useMemo3 = React49.useMemo, useDebugValue2 = React49.useDebugValue; + function useSyncExternalStoreWithSelector3(subscribe2, getSnapshot, getServerSnapshot, selector, isEqual) { + var instRef = useRef3(null); + var inst; + if (instRef.current === null) { + inst = { + hasValue: false, + value: null + }; + instRef.current = inst; + } else { + inst = instRef.current; + } + var _useMemo = useMemo3(function() { + var hasMemo = false; + var memoizedSnapshot; + var memoizedSelection; + var memoizedSelector = function(nextSnapshot) { + if (!hasMemo) { + hasMemo = true; + memoizedSnapshot = nextSnapshot; + var _nextSelection = selector(nextSnapshot); + if (isEqual !== void 0) { + if (inst.hasValue) { + var currentSelection = inst.value; + if (isEqual(currentSelection, _nextSelection)) { + memoizedSelection = currentSelection; + return currentSelection; + } + } + } + memoizedSelection = _nextSelection; + return _nextSelection; + } + var prevSnapshot = memoizedSnapshot; + var prevSelection = memoizedSelection; + if (objectIs(prevSnapshot, nextSnapshot)) { + return prevSelection; + } + var nextSelection = selector(nextSnapshot); + if (isEqual !== void 0 && isEqual(prevSelection, nextSelection)) { + return prevSelection; + } + memoizedSnapshot = nextSnapshot; + memoizedSelection = nextSelection; + return nextSelection; + }; + var maybeGetServerSnapshot = getServerSnapshot === void 0 ? null : getServerSnapshot; + var getSnapshotWithSelector = function() { + return memoizedSelector(getSnapshot()); + }; + var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? void 0 : function() { + return memoizedSelector(maybeGetServerSnapshot()); + }; + return [getSnapshotWithSelector, getServerSnapshotWithSelector]; + }, [getSnapshot, getServerSnapshot, selector, isEqual]), getSelection = _useMemo[0], getServerSelection = _useMemo[1]; + var value = useSyncExternalStore3(subscribe2, getSelection, getServerSelection); + useEffect2(function() { + inst.hasValue = true; + inst.value = value; + }, [value]); + useDebugValue2(value); + return value; + } + exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector3; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); + } + })(); + } + } +}); + +// node_modules/use-sync-external-store/shim/with-selector.js +var require_with_selector = __commonJS({ + "node_modules/use-sync-external-store/shim/with-selector.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_with_selector_development(); + } + } +}); + +// node_modules/react-is/cjs/react-is.development.js +var require_react_is_development2 = __commonJS({ + "node_modules/react-is/cjs/react-is.development.js"(exports) { + "use strict"; + if (true) { + (function() { + "use strict"; + var REACT_ELEMENT_TYPE = Symbol.for("react.element"); + var REACT_PORTAL_TYPE = Symbol.for("react.portal"); + var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); + var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"); + var REACT_PROFILER_TYPE = Symbol.for("react.profiler"); + var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); + var REACT_CONTEXT_TYPE = Symbol.for("react.context"); + var REACT_SERVER_CONTEXT_TYPE = Symbol.for("react.server_context"); + var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"); + var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"); + var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"); + var REACT_MEMO_TYPE = Symbol.for("react.memo"); + var REACT_LAZY_TYPE = Symbol.for("react.lazy"); + var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"); + var enableScopeAPI = false; + var enableCacheElement = false; + var enableTransitionTracing = false; + var enableLegacyHidden = false; + var enableDebugTracing = false; + var REACT_MODULE_REFERENCE; + { + REACT_MODULE_REFERENCE = Symbol.for("react.module.reference"); + } + function isValidElementType2(type) { + if (typeof type === "string" || typeof type === "function") { + return true; + } + if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) { + return true; + } + if (typeof type === "object" && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { + return true; + } + } + return false; + } + function typeOf(object) { + if (typeof object === "object" && object !== null) { + var $$typeof = object.$$typeof; + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + switch (type) { + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + case REACT_SUSPENSE_LIST_TYPE: + return type; + default: + var $$typeofType = type && type.$$typeof; + switch ($$typeofType) { + case REACT_SERVER_CONTEXT_TYPE: + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + default: + return $$typeof; + } + } + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + return void 0; + } + var ContextConsumer = REACT_CONTEXT_TYPE; + var ContextProvider = REACT_PROVIDER_TYPE; + var Element = REACT_ELEMENT_TYPE; + var ForwardRef = REACT_FORWARD_REF_TYPE; + var Fragment2 = REACT_FRAGMENT_TYPE; + var Lazy = REACT_LAZY_TYPE; + var Memo = REACT_MEMO_TYPE; + var Portal = REACT_PORTAL_TYPE; + var Profiler = REACT_PROFILER_TYPE; + var StrictMode = REACT_STRICT_MODE_TYPE; + var Suspense = REACT_SUSPENSE_TYPE; + var SuspenseList = REACT_SUSPENSE_LIST_TYPE; + var hasWarnedAboutDeprecatedIsAsyncMode = false; + var hasWarnedAboutDeprecatedIsConcurrentMode = false; + function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; + console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 18+."); + } + } + return false; + } + function isConcurrentMode(object) { + { + if (!hasWarnedAboutDeprecatedIsConcurrentMode) { + hasWarnedAboutDeprecatedIsConcurrentMode = true; + console["warn"]("The ReactIs.isConcurrentMode() alias has been deprecated, and will be removed in React 18+."); + } + } + return false; + } + function isContextConsumer2(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; + } + function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; + } + function isElement(object) { + return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; + } + function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; + } + function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; + } + function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; + } + function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; + } + function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; + } + function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; + } + function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; + } + function isSuspenseList(object) { + return typeOf(object) === REACT_SUSPENSE_LIST_TYPE; + } + exports.ContextConsumer = ContextConsumer; + exports.ContextProvider = ContextProvider; + exports.Element = Element; + exports.ForwardRef = ForwardRef; + exports.Fragment = Fragment2; + exports.Lazy = Lazy; + exports.Memo = Memo; + exports.Portal = Portal; + exports.Profiler = Profiler; + exports.StrictMode = StrictMode; + exports.Suspense = Suspense; + exports.SuspenseList = SuspenseList; + exports.isAsyncMode = isAsyncMode; + exports.isConcurrentMode = isConcurrentMode; + exports.isContextConsumer = isContextConsumer2; + exports.isContextProvider = isContextProvider; + exports.isElement = isElement; + exports.isForwardRef = isForwardRef; + exports.isFragment = isFragment; + exports.isLazy = isLazy; + exports.isMemo = isMemo; + exports.isPortal = isPortal; + exports.isProfiler = isProfiler; + exports.isStrictMode = isStrictMode; + exports.isSuspense = isSuspense; + exports.isSuspenseList = isSuspenseList; + exports.isValidElementType = isValidElementType2; + exports.typeOf = typeOf; + })(); + } + } +}); + +// node_modules/react-is/index.js +var require_react_is2 = __commonJS({ + "node_modules/react-is/index.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_react_is_development2(); + } } }); @@ -37042,19 +26687,40 @@ var require_emotion_react_cjs_dev = __commonJS({ "node_modules/@emotion/react/dist/emotion-react.cjs.dev.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - var React11 = require_react(); + var emotionElement = require_emotion_element_48d2c2e4_cjs_dev(); + var React49 = require_react(); + var utils = require_emotion_utils_cjs(); + var useInsertionEffectWithFallbacks = require_emotion_use_insertion_effect_with_fallbacks_cjs(); + var serialize2 = require_emotion_serialize_cjs(); require_emotion_cache_cjs(); - var emotionElement = require_emotion_element_b63ca7c6_cjs_dev(); require_extends(); require_emotion_weak_memoize_cjs(); - require_hoist_non_react_statics_cjs(); require_emotion_react_isolated_hnrs_cjs_dev(); - var utils = require_emotion_utils_cjs(); - var serialize = require_emotion_serialize_cjs(); - var useInsertionEffectWithFallbacks = require_emotion_use_insertion_effect_with_fallbacks_cjs(); + require_hoist_non_react_statics_cjs(); + function _interopNamespace(e) { + if (e && e.__esModule) + return e; + var n2 = /* @__PURE__ */ Object.create(null); + if (e) { + Object.keys(e).forEach(function(k2) { + if (k2 !== "default") { + var d2 = Object.getOwnPropertyDescriptor(e, k2); + Object.defineProperty(n2, k2, d2.get ? d2 : { + enumerable: true, + get: function() { + return e[k2]; + } + }); + } + }); + } + n2["default"] = e; + return Object.freeze(n2); + } + var React__namespace = /* @__PURE__ */ _interopNamespace(React49); var pkg = { name: "@emotion/react", - version: "11.10.4", + version: "11.11.0", main: "dist/emotion-react.cjs.js", module: "dist/emotion-react.esm.js", browser: { @@ -37067,6 +26733,7 @@ var require_emotion_react_cjs_dev = __commonJS({ browser: "./dist/emotion-react.browser.esm.js", "default": "./dist/emotion-react.esm.js" }, + "import": "./dist/emotion-react.cjs.mjs", "default": "./dist/emotion-react.cjs.js" }, "./jsx-runtime": { @@ -37075,6 +26742,7 @@ var require_emotion_react_cjs_dev = __commonJS({ browser: "./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js", "default": "./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js" }, + "import": "./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs", "default": "./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js" }, "./_isolated-hnrs": { @@ -37083,6 +26751,7 @@ var require_emotion_react_cjs_dev = __commonJS({ browser: "./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js", "default": "./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js" }, + "import": "./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs", "default": "./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js" }, "./jsx-dev-runtime": { @@ -37091,11 +26760,18 @@ var require_emotion_react_cjs_dev = __commonJS({ browser: "./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js", "default": "./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js" }, + "import": "./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs", "default": "./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js" }, "./package.json": "./package.json", "./types/css-prop": "./types/css-prop.d.ts", - "./macro": "./macro.js" + "./macro": { + types: { + "import": "./macro.d.mts", + "default": "./macro.d.ts" + }, + "default": "./macro.js" + } }, types: "types/index.d.ts", files: [ @@ -37105,9 +26781,7 @@ var require_emotion_react_cjs_dev = __commonJS({ "jsx-dev-runtime", "_isolated-hnrs", "types/*.d.ts", - "macro.js", - "macro.d.ts", - "macro.js.flow" + "macro.*" ], sideEffects: false, author: "Emotion Contributors", @@ -37117,33 +26791,28 @@ var require_emotion_react_cjs_dev = __commonJS({ }, dependencies: { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.0", - "@emotion/cache": "^11.10.0", - "@emotion/serialize": "^1.1.0", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", "hoist-non-react-statics": "^3.3.1" }, peerDependencies: { - "@babel/core": "^7.0.0", react: ">=16.8.0" }, peerDependenciesMeta: { - "@babel/core": { - optional: true - }, "@types/react": { optional: true } }, devDependencies: { - "@babel/core": "^7.18.5", "@definitelytyped/dtslint": "0.0.112", - "@emotion/css": "11.10.0", - "@emotion/css-prettifier": "1.1.0", - "@emotion/server": "11.10.0", - "@emotion/styled": "11.10.4", + "@emotion/css": "11.11.0", + "@emotion/css-prettifier": "1.1.3", + "@emotion/server": "11.11.0", + "@emotion/styled": "11.11.0", "html-tag-names": "^1.1.2", react: "16.14.0", "svg-tag-names": "^1.1.1", @@ -37169,15 +26838,21 @@ var require_emotion_react_cjs_dev = __commonJS({ ], extra: { "./types/css-prop": "./types/css-prop.d.ts", - "./macro": "./macro.js" + "./macro": { + types: { + "import": "./macro.d.mts", + "default": "./macro.d.ts" + }, + "default": "./macro.js" + } } } } }; - var jsx39 = function jsx40(type, props) { + var jsx3 = function jsx4(type, props) { var args = arguments; if (props == null || !emotionElement.hasOwnProperty.call(props, "css")) { - return React11.createElement.apply(void 0, args); + return React__namespace.createElement.apply(void 0, args); } var argsLength = args.length; var createElementArgArray = new Array(argsLength); @@ -37186,16 +26861,16 @@ var require_emotion_react_cjs_dev = __commonJS({ for (var i2 = 2; i2 < argsLength; i2++) { createElementArgArray[i2] = args[i2]; } - return React11.createElement.apply(null, createElementArgArray); + return React__namespace.createElement.apply(null, createElementArgArray); }; var warnedAboutCssPropForGlobal = false; - var Global = /* @__PURE__ */ emotionElement.withEmotionCache(function(props, cache) { + var Global2 = /* @__PURE__ */ emotionElement.withEmotionCache(function(props, cache) { if (!warnedAboutCssPropForGlobal && (props.className || props.css)) { console.error("It looks like you're using the css prop on Global, did you mean to use the styles prop instead?"); warnedAboutCssPropForGlobal = true; } var styles = props.styles; - var serialized = serialize.serializeStyles([styles], void 0, React11.useContext(emotionElement.ThemeContext)); + var serialized = serialize2.serializeStyles([styles], void 0, React__namespace.useContext(emotionElement.ThemeContext)); if (!emotionElement.isBrowser) { var _ref; var serializedNames = serialized.name; @@ -37214,11 +26889,11 @@ var require_emotion_react_cjs_dev = __commonJS({ if (shouldCache) { return null; } - return /* @__PURE__ */ React11.createElement("style", (_ref = {}, _ref["data-emotion"] = cache.key + "-global " + serializedNames, _ref.dangerouslySetInnerHTML = { + return /* @__PURE__ */ React__namespace.createElement("style", (_ref = {}, _ref["data-emotion"] = cache.key + "-global " + serializedNames, _ref.dangerouslySetInnerHTML = { __html: rules }, _ref.nonce = cache.sheet.nonce, _ref)); } - var sheetRef = React11.useRef(); + var sheetRef = React__namespace.useRef(); useInsertionEffectWithFallbacks.useInsertionEffectWithLayoutFallback(function() { var key = cache.key + "-global"; var sheet = new cache.sheet.constructor({ @@ -37262,16 +26937,16 @@ var require_emotion_react_cjs_dev = __commonJS({ return null; }); if (true) { - Global.displayName = "EmotionGlobal"; + Global2.displayName = "EmotionGlobal"; } - function css() { + function css2() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - return serialize.serializeStyles(args); + return serialize2.serializeStyles(args); } - var keyframes = function keyframes2() { - var insertable = css.apply(void 0, arguments); + var keyframes2 = function keyframes3() { + var insertable = css2.apply(void 0, arguments); var name = "animation-" + insertable.name; return { name, @@ -37322,13 +26997,13 @@ var require_emotion_react_cjs_dev = __commonJS({ } return cls; }; - function merge2(registered, css2, className) { + function merge2(registered, css3, className) { var registeredStyles = []; var rawClassName = utils.getRegisteredStyles(registered, registeredStyles, className); if (registeredStyles.length < 2) { return className; } - return rawClassName + css2(registeredStyles); + return rawClassName + css3(registeredStyles); } var Insertion = function Insertion2(_ref) { var cache = _ref.cache, serializedArr = _ref.serializedArr; @@ -37346,7 +27021,7 @@ var require_emotion_react_cjs_dev = __commonJS({ }); if (!emotionElement.isBrowser && rules.length !== 0) { var _ref2; - return /* @__PURE__ */ React11.createElement("style", (_ref2 = {}, _ref2["data-emotion"] = cache.key + " " + serializedArr.map(function(serialized) { + return /* @__PURE__ */ React__namespace.createElement("style", (_ref2 = {}, _ref2["data-emotion"] = cache.key + " " + serializedArr.map(function(serialized) { return serialized.name; }).join(" "), _ref2.dangerouslySetInnerHTML = { __html: rules @@ -37354,17 +27029,17 @@ var require_emotion_react_cjs_dev = __commonJS({ } return null; }; - var ClassNames = /* @__PURE__ */ emotionElement.withEmotionCache(function(props, cache) { + var ClassNames2 = /* @__PURE__ */ emotionElement.withEmotionCache(function(props, cache) { var hasRendered = false; var serializedArr = []; - var css2 = function css3() { + var css3 = function css4() { if (hasRendered && true) { throw new Error("css can only be used during render"); } for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - var serialized = serialize.serializeStyles(args, cache.registered); + var serialized = serialize2.serializeStyles(args, cache.registered); serializedArr.push(serialized); utils.registerStyles(cache, serialized, false); return cache.key + "-" + serialized.name; @@ -37376,27 +27051,27 @@ var require_emotion_react_cjs_dev = __commonJS({ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } - return merge2(cache.registered, css2, classnames(args)); + return merge2(cache.registered, css3, classnames(args)); }; var content = { - css: css2, + css: css3, cx, - theme: React11.useContext(emotionElement.ThemeContext) + theme: React__namespace.useContext(emotionElement.ThemeContext) }; var ele = props.children(content); hasRendered = true; - return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(Insertion, { + return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(Insertion, { cache, serializedArr }), ele); }); if (true) { - ClassNames.displayName = "EmotionClassNames"; + ClassNames2.displayName = "EmotionClassNames"; } if (true) { isBrowser = typeof document !== "undefined"; - isJest = typeof jest !== "undefined"; - if (isBrowser && !isJest) { + isTestEnv = typeof jest !== "undefined" || typeof vi !== "undefined"; + if (isBrowser && !isTestEnv) { globalContext = typeof globalThis !== "undefined" ? globalThis : isBrowser ? window : global; globalKey = "__EMOTION_REACT_" + pkg.version.split(".")[0] + "__"; if (globalContext[globalKey]) { @@ -37406,7 +27081,7 @@ var require_emotion_react_cjs_dev = __commonJS({ } } var isBrowser; - var isJest; + var isTestEnv; var globalContext; var globalKey; exports.CacheProvider = emotionElement.CacheProvider; @@ -37421,12 +27096,12 @@ var require_emotion_react_cjs_dev = __commonJS({ } }); exports.withTheme = emotionElement.withTheme; - exports.ClassNames = ClassNames; - exports.Global = Global; - exports.createElement = jsx39; - exports.css = css; - exports.jsx = jsx39; - exports.keyframes = keyframes; + exports.ClassNames = ClassNames2; + exports.Global = Global2; + exports.createElement = jsx3; + exports.css = css2; + exports.jsx = jsx3; + exports.keyframes = keyframes2; } }); @@ -37442,15482 +27117,211 @@ var require_emotion_react_cjs = __commonJS({ } }); -// node_modules/@emotion/styled/base/dist/emotion-styled-base.cjs.dev.js -var require_emotion_styled_base_cjs_dev = __commonJS({ - "node_modules/@emotion/styled/base/dist/emotion-styled-base.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var _extends2 = require_extends(); - var React11 = require_react(); - var isPropValid = require_emotion_is_prop_valid_cjs(); - var react = require_emotion_react_cjs(); - var utils = require_emotion_utils_cjs(); - var serialize = require_emotion_serialize_cjs(); - var useInsertionEffectWithFallbacks = require_emotion_use_insertion_effect_with_fallbacks_cjs(); - function _interopDefault(e) { - return e && e.__esModule ? e : { "default": e }; - } - var isPropValid__default = /* @__PURE__ */ _interopDefault(isPropValid); - var testOmitPropsOnStringTag = isPropValid__default["default"]; - var testOmitPropsOnComponent = function testOmitPropsOnComponent2(key) { - return key !== "theme"; - }; - var getDefaultShouldForwardProp = function getDefaultShouldForwardProp2(tag) { - return typeof tag === "string" && tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent; - }; - var composeShouldForwardProps = function composeShouldForwardProps2(tag, options, isReal) { - var shouldForwardProp2; - if (options) { - var optionsShouldForwardProp = options.shouldForwardProp; - shouldForwardProp2 = tag.__emotion_forwardProp && optionsShouldForwardProp ? function(propName) { - return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName); - } : optionsShouldForwardProp; - } - if (typeof shouldForwardProp2 !== "function" && isReal) { - shouldForwardProp2 = tag.__emotion_forwardProp; - } - return shouldForwardProp2; - }; - var ILLEGAL_ESCAPE_SEQUENCE_ERROR = `You have illegal escape sequence in your template literal, most likely inside content's property value. -Because you write your CSS inside a JavaScript string you actually have to do double escaping, so for example "content: '\\00d7';" should become "content: '\\\\00d7';". -You can read more about this here: -https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences`; - var isBrowser = typeof document !== "undefined"; - var Insertion = function Insertion2(_ref) { - var cache = _ref.cache, serialized = _ref.serialized, isStringTag2 = _ref.isStringTag; - utils.registerStyles(cache, serialized, isStringTag2); - var rules = useInsertionEffectWithFallbacks.useInsertionEffectAlwaysWithSyncFallback(function() { - return utils.insertStyles(cache, serialized, isStringTag2); - }); - if (!isBrowser && rules !== void 0) { - var _ref2; - var serializedNames = serialized.name; - var next = serialized.next; - while (next !== void 0) { - serializedNames += " " + next.name; - next = next.next; - } - return /* @__PURE__ */ React11.createElement("style", (_ref2 = {}, _ref2["data-emotion"] = cache.key + " " + serializedNames, _ref2.dangerouslySetInnerHTML = { - __html: rules - }, _ref2.nonce = cache.sheet.nonce, _ref2)); - } - return null; - }; - var createStyled2 = function createStyled3(tag, options) { - if (true) { - if (tag === void 0) { - throw new Error("You are trying to create a styled element with an undefined component.\nYou may have forgotten to import it."); - } - } - var isReal = tag.__emotion_real === tag; - var baseTag = isReal && tag.__emotion_base || tag; - var identifierName; - var targetClassName; - if (options !== void 0) { - identifierName = options.label; - targetClassName = options.target; - } - var shouldForwardProp2 = composeShouldForwardProps(tag, options, isReal); - var defaultShouldForwardProp = shouldForwardProp2 || getDefaultShouldForwardProp(baseTag); - var shouldUseAs = !defaultShouldForwardProp("as"); - return function() { - var args = arguments; - var styles = isReal && tag.__emotion_styles !== void 0 ? tag.__emotion_styles.slice(0) : []; - if (identifierName !== void 0) { - styles.push("label:" + identifierName + ";"); - } - if (args[0] == null || args[0].raw === void 0) { - styles.push.apply(styles, args); - } else { - if (args[0][0] === void 0) { - console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR); - } - styles.push(args[0][0]); - var len = args.length; - var i2 = 1; - for (; i2 < len; i2++) { - if (args[0][i2] === void 0) { - console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR); - } - styles.push(args[i2], args[0][i2]); - } - } - var Styled = react.withEmotionCache(function(props, cache, ref) { - var FinalTag = shouldUseAs && props.as || baseTag; - var className = ""; - var classInterpolations = []; - var mergedProps = props; - if (props.theme == null) { - mergedProps = {}; - for (var key in props) { - mergedProps[key] = props[key]; - } - mergedProps.theme = React11.useContext(react.ThemeContext); - } - if (typeof props.className === "string") { - className = utils.getRegisteredStyles(cache.registered, classInterpolations, props.className); - } else if (props.className != null) { - className = props.className + " "; - } - var serialized = serialize.serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps); - className += cache.key + "-" + serialized.name; - if (targetClassName !== void 0) { - className += " " + targetClassName; - } - var finalShouldForwardProp = shouldUseAs && shouldForwardProp2 === void 0 ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp; - var newProps = {}; - for (var _key in props) { - if (shouldUseAs && _key === "as") - continue; - if (finalShouldForwardProp(_key)) { - newProps[_key] = props[_key]; - } - } - newProps.className = className; - newProps.ref = ref; - return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(Insertion, { - cache, - serialized, - isStringTag: typeof FinalTag === "string" - }), /* @__PURE__ */ React11.createElement(FinalTag, newProps)); - }); - Styled.displayName = identifierName !== void 0 ? identifierName : "Styled(" + (typeof baseTag === "string" ? baseTag : baseTag.displayName || baseTag.name || "Component") + ")"; - Styled.defaultProps = tag.defaultProps; - Styled.__emotion_real = Styled; - Styled.__emotion_base = baseTag; - Styled.__emotion_styles = styles; - Styled.__emotion_forwardProp = shouldForwardProp2; - Object.defineProperty(Styled, "toString", { - value: function value() { - if (targetClassName === void 0 && true) { - return "NO_COMPONENT_SELECTOR"; - } - return "." + targetClassName; - } - }); - Styled.withComponent = function(nextTag, nextOptions) { - return createStyled3(nextTag, _extends2({}, options, nextOptions, { - shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true) - })).apply(void 0, styles); - }; - return Styled; - }; - }; - exports.default = createStyled2; - } -}); - -// node_modules/@emotion/styled/dist/emotion-styled.cjs.dev.js -var require_emotion_styled_cjs_dev = __commonJS({ - "node_modules/@emotion/styled/dist/emotion-styled.cjs.dev.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - require_extends(); - require_react(); - require_emotion_is_prop_valid_cjs(); - var base_dist_emotionStyledBase = require_emotion_styled_base_cjs_dev(); - require_emotion_react_cjs(); - require_emotion_utils_cjs(); - require_emotion_serialize_cjs(); - require_emotion_use_insertion_effect_with_fallbacks_cjs(); - var tags = [ - "a", - "abbr", - "address", - "area", - "article", - "aside", - "audio", - "b", - "base", - "bdi", - "bdo", - "big", - "blockquote", - "body", - "br", - "button", - "canvas", - "caption", - "cite", - "code", - "col", - "colgroup", - "data", - "datalist", - "dd", - "del", - "details", - "dfn", - "dialog", - "div", - "dl", - "dt", - "em", - "embed", - "fieldset", - "figcaption", - "figure", - "footer", - "form", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "head", - "header", - "hgroup", - "hr", - "html", - "i", - "iframe", - "img", - "input", - "ins", - "kbd", - "keygen", - "label", - "legend", - "li", - "link", - "main", - "map", - "mark", - "marquee", - "menu", - "menuitem", - "meta", - "meter", - "nav", - "noscript", - "object", - "ol", - "optgroup", - "option", - "output", - "p", - "param", - "picture", - "pre", - "progress", - "q", - "rp", - "rt", - "ruby", - "s", - "samp", - "script", - "section", - "select", - "small", - "source", - "span", - "strong", - "style", - "sub", - "summary", - "sup", - "table", - "tbody", - "td", - "textarea", - "tfoot", - "th", - "thead", - "time", - "title", - "tr", - "track", - "u", - "ul", - "var", - "video", - "wbr", - "circle", - "clipPath", - "defs", - "ellipse", - "foreignObject", - "g", - "image", - "line", - "linearGradient", - "mask", - "path", - "pattern", - "polygon", - "polyline", - "radialGradient", - "rect", - "stop", - "svg", - "text", - "tspan" - ]; - var newStyled = base_dist_emotionStyledBase["default"].bind(); - tags.forEach(function(tagName) { - newStyled[tagName] = newStyled(tagName); - }); - exports.default = newStyled; - } -}); - -// node_modules/@emotion/styled/dist/emotion-styled.cjs.js -var require_emotion_styled_cjs = __commonJS({ - "node_modules/@emotion/styled/dist/emotion-styled.cjs.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_emotion_styled_cjs_dev(); - } - } -}); - -// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js -var require_use_sync_external_store_shim_development = __commonJS({ - "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) { - "use strict"; - if (true) { - (function() { - "use strict"; - if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { - __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); - } - var React11 = require_react(); - var ReactSharedInternals = React11.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; - function error(format) { - { - { - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - args[_key2 - 1] = arguments[_key2]; - } - printWarning("error", format, args); - } - } - } - function printWarning(level, format, args) { - { - var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; - var stack = ReactDebugCurrentFrame.getStackAddendum(); - if (stack !== "") { - format += "%s"; - args = args.concat([stack]); - } - var argsWithFormat = args.map(function(item) { - return String(item); - }); - argsWithFormat.unshift("Warning: " + format); - Function.prototype.apply.call(console[level], console, argsWithFormat); - } - } - function is(x2, y2) { - return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; - } - var objectIs = typeof Object.is === "function" ? Object.is : is; - var useState7 = React11.useState, useEffect7 = React11.useEffect, useLayoutEffect2 = React11.useLayoutEffect, useDebugValue3 = React11.useDebugValue; - var didWarnOld18Alpha = false; - var didWarnUncachedGetSnapshot = false; - function useSyncExternalStore3(subscribe, getSnapshot, getServerSnapshot) { - { - if (!didWarnOld18Alpha) { - if (React11.startTransition !== void 0) { - didWarnOld18Alpha = true; - error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."); - } - } - } - var value = getSnapshot(); - { - if (!didWarnUncachedGetSnapshot) { - var cachedValue = getSnapshot(); - if (!objectIs(value, cachedValue)) { - error("The result of getSnapshot should be cached to avoid an infinite loop"); - didWarnUncachedGetSnapshot = true; - } - } - } - var _useState = useState7({ - inst: { - value, - getSnapshot - } - }), inst = _useState[0].inst, forceUpdate = _useState[1]; - useLayoutEffect2(function() { - inst.value = value; - inst.getSnapshot = getSnapshot; - if (checkIfSnapshotChanged(inst)) { - forceUpdate({ - inst - }); - } - }, [subscribe, value, getSnapshot]); - useEffect7(function() { - if (checkIfSnapshotChanged(inst)) { - forceUpdate({ - inst - }); - } - var handleStoreChange = function() { - if (checkIfSnapshotChanged(inst)) { - forceUpdate({ - inst - }); - } - }; - return subscribe(handleStoreChange); - }, [subscribe]); - useDebugValue3(value); - return value; - } - function checkIfSnapshotChanged(inst) { - var latestGetSnapshot = inst.getSnapshot; - var prevValue = inst.value; - try { - var nextValue = latestGetSnapshot(); - return !objectIs(prevValue, nextValue); - } catch (error2) { - return true; - } - } - function useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) { - return getSnapshot(); - } - var canUseDOM2 = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); - var isServerEnvironment = !canUseDOM2; - var shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore3; - var useSyncExternalStore$2 = React11.useSyncExternalStore !== void 0 ? React11.useSyncExternalStore : shim; - exports.useSyncExternalStore = useSyncExternalStore$2; - if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { - __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); - } - })(); - } - } -}); - -// node_modules/use-sync-external-store/shim/index.js -var require_shim = __commonJS({ - "node_modules/use-sync-external-store/shim/index.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_use_sync_external_store_shim_development(); - } - } -}); - -// node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js -var require_with_selector_development = __commonJS({ - "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) { - "use strict"; - if (true) { - (function() { - "use strict"; - if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { - __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); - } - var React11 = require_react(); - var shim = require_shim(); - function is(x2, y2) { - return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; - } - var objectIs = typeof Object.is === "function" ? Object.is : is; - var useSyncExternalStore3 = shim.useSyncExternalStore; - var useRef7 = React11.useRef, useEffect7 = React11.useEffect, useMemo4 = React11.useMemo, useDebugValue3 = React11.useDebugValue; - function useSyncExternalStoreWithSelector3(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) { - var instRef = useRef7(null); - var inst; - if (instRef.current === null) { - inst = { - hasValue: false, - value: null - }; - instRef.current = inst; - } else { - inst = instRef.current; - } - var _useMemo = useMemo4(function() { - var hasMemo = false; - var memoizedSnapshot; - var memoizedSelection; - var memoizedSelector = function(nextSnapshot) { - if (!hasMemo) { - hasMemo = true; - memoizedSnapshot = nextSnapshot; - var _nextSelection = selector(nextSnapshot); - if (isEqual !== void 0) { - if (inst.hasValue) { - var currentSelection = inst.value; - if (isEqual(currentSelection, _nextSelection)) { - memoizedSelection = currentSelection; - return currentSelection; - } - } - } - memoizedSelection = _nextSelection; - return _nextSelection; - } - var prevSnapshot = memoizedSnapshot; - var prevSelection = memoizedSelection; - if (objectIs(prevSnapshot, nextSnapshot)) { - return prevSelection; - } - var nextSelection = selector(nextSnapshot); - if (isEqual !== void 0 && isEqual(prevSelection, nextSelection)) { - return prevSelection; - } - memoizedSnapshot = nextSnapshot; - memoizedSelection = nextSelection; - return nextSelection; - }; - var maybeGetServerSnapshot = getServerSnapshot === void 0 ? null : getServerSnapshot; - var getSnapshotWithSelector = function() { - return memoizedSelector(getSnapshot()); - }; - var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? void 0 : function() { - return memoizedSelector(maybeGetServerSnapshot()); - }; - return [getSnapshotWithSelector, getServerSnapshotWithSelector]; - }, [getSnapshot, getServerSnapshot, selector, isEqual]), getSelection = _useMemo[0], getServerSelection = _useMemo[1]; - var value = useSyncExternalStore3(subscribe, getSelection, getServerSelection); - useEffect7(function() { - inst.hasValue = true; - inst.value = value; - }, [value]); - useDebugValue3(value); - return value; - } - exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector3; - if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { - __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); - } - })(); - } - } -}); - -// node_modules/use-sync-external-store/shim/with-selector.js -var require_with_selector = __commonJS({ - "node_modules/use-sync-external-store/shim/with-selector.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_with_selector_development(); - } - } -}); - -// node_modules/entities/lib/maps/entities.json -var require_entities = __commonJS({ - "node_modules/entities/lib/maps/entities.json"(exports, module2) { - module2.exports = { Aacute: "\xC1", aacute: "\xE1", Abreve: "\u0102", abreve: "\u0103", ac: "\u223E", acd: "\u223F", acE: "\u223E\u0333", Acirc: "\xC2", acirc: "\xE2", acute: "\xB4", Acy: "\u0410", acy: "\u0430", AElig: "\xC6", aelig: "\xE6", af: "\u2061", Afr: "\u{1D504}", afr: "\u{1D51E}", Agrave: "\xC0", agrave: "\xE0", alefsym: "\u2135", aleph: "\u2135", Alpha: "\u0391", alpha: "\u03B1", Amacr: "\u0100", amacr: "\u0101", amalg: "\u2A3F", amp: "&", AMP: "&", andand: "\u2A55", And: "\u2A53", and: "\u2227", andd: "\u2A5C", andslope: "\u2A58", andv: "\u2A5A", ang: "\u2220", ange: "\u29A4", angle: "\u2220", angmsdaa: "\u29A8", angmsdab: "\u29A9", angmsdac: "\u29AA", angmsdad: "\u29AB", angmsdae: "\u29AC", angmsdaf: "\u29AD", angmsdag: "\u29AE", angmsdah: "\u29AF", angmsd: "\u2221", angrt: "\u221F", angrtvb: "\u22BE", angrtvbd: "\u299D", angsph: "\u2222", angst: "\xC5", angzarr: "\u237C", Aogon: "\u0104", aogon: "\u0105", Aopf: "\u{1D538}", aopf: "\u{1D552}", apacir: "\u2A6F", ap: "\u2248", apE: "\u2A70", ape: "\u224A", apid: "\u224B", apos: "'", ApplyFunction: "\u2061", approx: "\u2248", approxeq: "\u224A", Aring: "\xC5", aring: "\xE5", Ascr: "\u{1D49C}", ascr: "\u{1D4B6}", Assign: "\u2254", ast: "*", asymp: "\u2248", asympeq: "\u224D", Atilde: "\xC3", atilde: "\xE3", Auml: "\xC4", auml: "\xE4", awconint: "\u2233", awint: "\u2A11", backcong: "\u224C", backepsilon: "\u03F6", backprime: "\u2035", backsim: "\u223D", backsimeq: "\u22CD", Backslash: "\u2216", Barv: "\u2AE7", barvee: "\u22BD", barwed: "\u2305", Barwed: "\u2306", barwedge: "\u2305", bbrk: "\u23B5", bbrktbrk: "\u23B6", bcong: "\u224C", Bcy: "\u0411", bcy: "\u0431", bdquo: "\u201E", becaus: "\u2235", because: "\u2235", Because: "\u2235", bemptyv: "\u29B0", bepsi: "\u03F6", bernou: "\u212C", Bernoullis: "\u212C", Beta: "\u0392", beta: "\u03B2", beth: "\u2136", between: "\u226C", Bfr: "\u{1D505}", bfr: "\u{1D51F}", bigcap: "\u22C2", bigcirc: "\u25EF", bigcup: "\u22C3", bigodot: "\u2A00", bigoplus: "\u2A01", bigotimes: "\u2A02", bigsqcup: "\u2A06", bigstar: "\u2605", bigtriangledown: "\u25BD", bigtriangleup: "\u25B3", biguplus: "\u2A04", bigvee: "\u22C1", bigwedge: "\u22C0", bkarow: "\u290D", blacklozenge: "\u29EB", blacksquare: "\u25AA", blacktriangle: "\u25B4", blacktriangledown: "\u25BE", blacktriangleleft: "\u25C2", blacktriangleright: "\u25B8", blank: "\u2423", blk12: "\u2592", blk14: "\u2591", blk34: "\u2593", block: "\u2588", bne: "=\u20E5", bnequiv: "\u2261\u20E5", bNot: "\u2AED", bnot: "\u2310", Bopf: "\u{1D539}", bopf: "\u{1D553}", bot: "\u22A5", bottom: "\u22A5", bowtie: "\u22C8", boxbox: "\u29C9", boxdl: "\u2510", boxdL: "\u2555", boxDl: "\u2556", boxDL: "\u2557", boxdr: "\u250C", boxdR: "\u2552", boxDr: "\u2553", boxDR: "\u2554", boxh: "\u2500", boxH: "\u2550", boxhd: "\u252C", boxHd: "\u2564", boxhD: "\u2565", boxHD: "\u2566", boxhu: "\u2534", boxHu: "\u2567", boxhU: "\u2568", boxHU: "\u2569", boxminus: "\u229F", boxplus: "\u229E", boxtimes: "\u22A0", boxul: "\u2518", boxuL: "\u255B", boxUl: "\u255C", boxUL: "\u255D", boxur: "\u2514", boxuR: "\u2558", boxUr: "\u2559", boxUR: "\u255A", boxv: "\u2502", boxV: "\u2551", boxvh: "\u253C", boxvH: "\u256A", boxVh: "\u256B", boxVH: "\u256C", boxvl: "\u2524", boxvL: "\u2561", boxVl: "\u2562", boxVL: "\u2563", boxvr: "\u251C", boxvR: "\u255E", boxVr: "\u255F", boxVR: "\u2560", bprime: "\u2035", breve: "\u02D8", Breve: "\u02D8", brvbar: "\xA6", bscr: "\u{1D4B7}", Bscr: "\u212C", bsemi: "\u204F", bsim: "\u223D", bsime: "\u22CD", bsolb: "\u29C5", bsol: "\\", bsolhsub: "\u27C8", bull: "\u2022", bullet: "\u2022", bump: "\u224E", bumpE: "\u2AAE", bumpe: "\u224F", Bumpeq: "\u224E", bumpeq: "\u224F", Cacute: "\u0106", cacute: "\u0107", capand: "\u2A44", capbrcup: "\u2A49", capcap: "\u2A4B", cap: "\u2229", Cap: "\u22D2", capcup: "\u2A47", capdot: "\u2A40", CapitalDifferentialD: "\u2145", caps: "\u2229\uFE00", caret: "\u2041", caron: "\u02C7", Cayleys: "\u212D", ccaps: "\u2A4D", Ccaron: "\u010C", ccaron: "\u010D", Ccedil: "\xC7", ccedil: "\xE7", Ccirc: "\u0108", ccirc: "\u0109", Cconint: "\u2230", ccups: "\u2A4C", ccupssm: "\u2A50", Cdot: "\u010A", cdot: "\u010B", cedil: "\xB8", Cedilla: "\xB8", cemptyv: "\u29B2", cent: "\xA2", centerdot: "\xB7", CenterDot: "\xB7", cfr: "\u{1D520}", Cfr: "\u212D", CHcy: "\u0427", chcy: "\u0447", check: "\u2713", checkmark: "\u2713", Chi: "\u03A7", chi: "\u03C7", circ: "\u02C6", circeq: "\u2257", circlearrowleft: "\u21BA", circlearrowright: "\u21BB", circledast: "\u229B", circledcirc: "\u229A", circleddash: "\u229D", CircleDot: "\u2299", circledR: "\xAE", circledS: "\u24C8", CircleMinus: "\u2296", CirclePlus: "\u2295", CircleTimes: "\u2297", cir: "\u25CB", cirE: "\u29C3", cire: "\u2257", cirfnint: "\u2A10", cirmid: "\u2AEF", cirscir: "\u29C2", ClockwiseContourIntegral: "\u2232", CloseCurlyDoubleQuote: "\u201D", CloseCurlyQuote: "\u2019", clubs: "\u2663", clubsuit: "\u2663", colon: ":", Colon: "\u2237", Colone: "\u2A74", colone: "\u2254", coloneq: "\u2254", comma: ",", commat: "@", comp: "\u2201", compfn: "\u2218", complement: "\u2201", complexes: "\u2102", cong: "\u2245", congdot: "\u2A6D", Congruent: "\u2261", conint: "\u222E", Conint: "\u222F", ContourIntegral: "\u222E", copf: "\u{1D554}", Copf: "\u2102", coprod: "\u2210", Coproduct: "\u2210", copy: "\xA9", COPY: "\xA9", copysr: "\u2117", CounterClockwiseContourIntegral: "\u2233", crarr: "\u21B5", cross: "\u2717", Cross: "\u2A2F", Cscr: "\u{1D49E}", cscr: "\u{1D4B8}", csub: "\u2ACF", csube: "\u2AD1", csup: "\u2AD0", csupe: "\u2AD2", ctdot: "\u22EF", cudarrl: "\u2938", cudarrr: "\u2935", cuepr: "\u22DE", cuesc: "\u22DF", cularr: "\u21B6", cularrp: "\u293D", cupbrcap: "\u2A48", cupcap: "\u2A46", CupCap: "\u224D", cup: "\u222A", Cup: "\u22D3", cupcup: "\u2A4A", cupdot: "\u228D", cupor: "\u2A45", cups: "\u222A\uFE00", curarr: "\u21B7", curarrm: "\u293C", curlyeqprec: "\u22DE", curlyeqsucc: "\u22DF", curlyvee: "\u22CE", curlywedge: "\u22CF", curren: "\xA4", curvearrowleft: "\u21B6", curvearrowright: "\u21B7", cuvee: "\u22CE", cuwed: "\u22CF", cwconint: "\u2232", cwint: "\u2231", cylcty: "\u232D", dagger: "\u2020", Dagger: "\u2021", daleth: "\u2138", darr: "\u2193", Darr: "\u21A1", dArr: "\u21D3", dash: "\u2010", Dashv: "\u2AE4", dashv: "\u22A3", dbkarow: "\u290F", dblac: "\u02DD", Dcaron: "\u010E", dcaron: "\u010F", Dcy: "\u0414", dcy: "\u0434", ddagger: "\u2021", ddarr: "\u21CA", DD: "\u2145", dd: "\u2146", DDotrahd: "\u2911", ddotseq: "\u2A77", deg: "\xB0", Del: "\u2207", Delta: "\u0394", delta: "\u03B4", demptyv: "\u29B1", dfisht: "\u297F", Dfr: "\u{1D507}", dfr: "\u{1D521}", dHar: "\u2965", dharl: "\u21C3", dharr: "\u21C2", DiacriticalAcute: "\xB4", DiacriticalDot: "\u02D9", DiacriticalDoubleAcute: "\u02DD", DiacriticalGrave: "`", DiacriticalTilde: "\u02DC", diam: "\u22C4", diamond: "\u22C4", Diamond: "\u22C4", diamondsuit: "\u2666", diams: "\u2666", die: "\xA8", DifferentialD: "\u2146", digamma: "\u03DD", disin: "\u22F2", div: "\xF7", divide: "\xF7", divideontimes: "\u22C7", divonx: "\u22C7", DJcy: "\u0402", djcy: "\u0452", dlcorn: "\u231E", dlcrop: "\u230D", dollar: "$", Dopf: "\u{1D53B}", dopf: "\u{1D555}", Dot: "\xA8", dot: "\u02D9", DotDot: "\u20DC", doteq: "\u2250", doteqdot: "\u2251", DotEqual: "\u2250", dotminus: "\u2238", dotplus: "\u2214", dotsquare: "\u22A1", doublebarwedge: "\u2306", DoubleContourIntegral: "\u222F", DoubleDot: "\xA8", DoubleDownArrow: "\u21D3", DoubleLeftArrow: "\u21D0", DoubleLeftRightArrow: "\u21D4", DoubleLeftTee: "\u2AE4", DoubleLongLeftArrow: "\u27F8", DoubleLongLeftRightArrow: "\u27FA", DoubleLongRightArrow: "\u27F9", DoubleRightArrow: "\u21D2", DoubleRightTee: "\u22A8", DoubleUpArrow: "\u21D1", DoubleUpDownArrow: "\u21D5", DoubleVerticalBar: "\u2225", DownArrowBar: "\u2913", downarrow: "\u2193", DownArrow: "\u2193", Downarrow: "\u21D3", DownArrowUpArrow: "\u21F5", DownBreve: "\u0311", downdownarrows: "\u21CA", downharpoonleft: "\u21C3", downharpoonright: "\u21C2", DownLeftRightVector: "\u2950", DownLeftTeeVector: "\u295E", DownLeftVectorBar: "\u2956", DownLeftVector: "\u21BD", DownRightTeeVector: "\u295F", DownRightVectorBar: "\u2957", DownRightVector: "\u21C1", DownTeeArrow: "\u21A7", DownTee: "\u22A4", drbkarow: "\u2910", drcorn: "\u231F", drcrop: "\u230C", Dscr: "\u{1D49F}", dscr: "\u{1D4B9}", DScy: "\u0405", dscy: "\u0455", dsol: "\u29F6", Dstrok: "\u0110", dstrok: "\u0111", dtdot: "\u22F1", dtri: "\u25BF", dtrif: "\u25BE", duarr: "\u21F5", duhar: "\u296F", dwangle: "\u29A6", DZcy: "\u040F", dzcy: "\u045F", dzigrarr: "\u27FF", Eacute: "\xC9", eacute: "\xE9", easter: "\u2A6E", Ecaron: "\u011A", ecaron: "\u011B", Ecirc: "\xCA", ecirc: "\xEA", ecir: "\u2256", ecolon: "\u2255", Ecy: "\u042D", ecy: "\u044D", eDDot: "\u2A77", Edot: "\u0116", edot: "\u0117", eDot: "\u2251", ee: "\u2147", efDot: "\u2252", Efr: "\u{1D508}", efr: "\u{1D522}", eg: "\u2A9A", Egrave: "\xC8", egrave: "\xE8", egs: "\u2A96", egsdot: "\u2A98", el: "\u2A99", Element: "\u2208", elinters: "\u23E7", ell: "\u2113", els: "\u2A95", elsdot: "\u2A97", Emacr: "\u0112", emacr: "\u0113", empty: "\u2205", emptyset: "\u2205", EmptySmallSquare: "\u25FB", emptyv: "\u2205", EmptyVerySmallSquare: "\u25AB", emsp13: "\u2004", emsp14: "\u2005", emsp: "\u2003", ENG: "\u014A", eng: "\u014B", ensp: "\u2002", Eogon: "\u0118", eogon: "\u0119", Eopf: "\u{1D53C}", eopf: "\u{1D556}", epar: "\u22D5", eparsl: "\u29E3", eplus: "\u2A71", epsi: "\u03B5", Epsilon: "\u0395", epsilon: "\u03B5", epsiv: "\u03F5", eqcirc: "\u2256", eqcolon: "\u2255", eqsim: "\u2242", eqslantgtr: "\u2A96", eqslantless: "\u2A95", Equal: "\u2A75", equals: "=", EqualTilde: "\u2242", equest: "\u225F", Equilibrium: "\u21CC", equiv: "\u2261", equivDD: "\u2A78", eqvparsl: "\u29E5", erarr: "\u2971", erDot: "\u2253", escr: "\u212F", Escr: "\u2130", esdot: "\u2250", Esim: "\u2A73", esim: "\u2242", Eta: "\u0397", eta: "\u03B7", ETH: "\xD0", eth: "\xF0", Euml: "\xCB", euml: "\xEB", euro: "\u20AC", excl: "!", exist: "\u2203", Exists: "\u2203", expectation: "\u2130", exponentiale: "\u2147", ExponentialE: "\u2147", fallingdotseq: "\u2252", Fcy: "\u0424", fcy: "\u0444", female: "\u2640", ffilig: "\uFB03", fflig: "\uFB00", ffllig: "\uFB04", Ffr: "\u{1D509}", ffr: "\u{1D523}", filig: "\uFB01", FilledSmallSquare: "\u25FC", FilledVerySmallSquare: "\u25AA", fjlig: "fj", flat: "\u266D", fllig: "\uFB02", fltns: "\u25B1", fnof: "\u0192", Fopf: "\u{1D53D}", fopf: "\u{1D557}", forall: "\u2200", ForAll: "\u2200", fork: "\u22D4", forkv: "\u2AD9", Fouriertrf: "\u2131", fpartint: "\u2A0D", frac12: "\xBD", frac13: "\u2153", frac14: "\xBC", frac15: "\u2155", frac16: "\u2159", frac18: "\u215B", frac23: "\u2154", frac25: "\u2156", frac34: "\xBE", frac35: "\u2157", frac38: "\u215C", frac45: "\u2158", frac56: "\u215A", frac58: "\u215D", frac78: "\u215E", frasl: "\u2044", frown: "\u2322", fscr: "\u{1D4BB}", Fscr: "\u2131", gacute: "\u01F5", Gamma: "\u0393", gamma: "\u03B3", Gammad: "\u03DC", gammad: "\u03DD", gap: "\u2A86", Gbreve: "\u011E", gbreve: "\u011F", Gcedil: "\u0122", Gcirc: "\u011C", gcirc: "\u011D", Gcy: "\u0413", gcy: "\u0433", Gdot: "\u0120", gdot: "\u0121", ge: "\u2265", gE: "\u2267", gEl: "\u2A8C", gel: "\u22DB", geq: "\u2265", geqq: "\u2267", geqslant: "\u2A7E", gescc: "\u2AA9", ges: "\u2A7E", gesdot: "\u2A80", gesdoto: "\u2A82", gesdotol: "\u2A84", gesl: "\u22DB\uFE00", gesles: "\u2A94", Gfr: "\u{1D50A}", gfr: "\u{1D524}", gg: "\u226B", Gg: "\u22D9", ggg: "\u22D9", gimel: "\u2137", GJcy: "\u0403", gjcy: "\u0453", gla: "\u2AA5", gl: "\u2277", glE: "\u2A92", glj: "\u2AA4", gnap: "\u2A8A", gnapprox: "\u2A8A", gne: "\u2A88", gnE: "\u2269", gneq: "\u2A88", gneqq: "\u2269", gnsim: "\u22E7", Gopf: "\u{1D53E}", gopf: "\u{1D558}", grave: "`", GreaterEqual: "\u2265", GreaterEqualLess: "\u22DB", GreaterFullEqual: "\u2267", GreaterGreater: "\u2AA2", GreaterLess: "\u2277", GreaterSlantEqual: "\u2A7E", GreaterTilde: "\u2273", Gscr: "\u{1D4A2}", gscr: "\u210A", gsim: "\u2273", gsime: "\u2A8E", gsiml: "\u2A90", gtcc: "\u2AA7", gtcir: "\u2A7A", gt: ">", GT: ">", Gt: "\u226B", gtdot: "\u22D7", gtlPar: "\u2995", gtquest: "\u2A7C", gtrapprox: "\u2A86", gtrarr: "\u2978", gtrdot: "\u22D7", gtreqless: "\u22DB", gtreqqless: "\u2A8C", gtrless: "\u2277", gtrsim: "\u2273", gvertneqq: "\u2269\uFE00", gvnE: "\u2269\uFE00", Hacek: "\u02C7", hairsp: "\u200A", half: "\xBD", hamilt: "\u210B", HARDcy: "\u042A", hardcy: "\u044A", harrcir: "\u2948", harr: "\u2194", hArr: "\u21D4", harrw: "\u21AD", Hat: "^", hbar: "\u210F", Hcirc: "\u0124", hcirc: "\u0125", hearts: "\u2665", heartsuit: "\u2665", hellip: "\u2026", hercon: "\u22B9", hfr: "\u{1D525}", Hfr: "\u210C", HilbertSpace: "\u210B", hksearow: "\u2925", hkswarow: "\u2926", hoarr: "\u21FF", homtht: "\u223B", hookleftarrow: "\u21A9", hookrightarrow: "\u21AA", hopf: "\u{1D559}", Hopf: "\u210D", horbar: "\u2015", HorizontalLine: "\u2500", hscr: "\u{1D4BD}", Hscr: "\u210B", hslash: "\u210F", Hstrok: "\u0126", hstrok: "\u0127", HumpDownHump: "\u224E", HumpEqual: "\u224F", hybull: "\u2043", hyphen: "\u2010", Iacute: "\xCD", iacute: "\xED", ic: "\u2063", Icirc: "\xCE", icirc: "\xEE", Icy: "\u0418", icy: "\u0438", Idot: "\u0130", IEcy: "\u0415", iecy: "\u0435", iexcl: "\xA1", iff: "\u21D4", ifr: "\u{1D526}", Ifr: "\u2111", Igrave: "\xCC", igrave: "\xEC", ii: "\u2148", iiiint: "\u2A0C", iiint: "\u222D", iinfin: "\u29DC", iiota: "\u2129", IJlig: "\u0132", ijlig: "\u0133", Imacr: "\u012A", imacr: "\u012B", image: "\u2111", ImaginaryI: "\u2148", imagline: "\u2110", imagpart: "\u2111", imath: "\u0131", Im: "\u2111", imof: "\u22B7", imped: "\u01B5", Implies: "\u21D2", incare: "\u2105", in: "\u2208", infin: "\u221E", infintie: "\u29DD", inodot: "\u0131", intcal: "\u22BA", int: "\u222B", Int: "\u222C", integers: "\u2124", Integral: "\u222B", intercal: "\u22BA", Intersection: "\u22C2", intlarhk: "\u2A17", intprod: "\u2A3C", InvisibleComma: "\u2063", InvisibleTimes: "\u2062", IOcy: "\u0401", iocy: "\u0451", Iogon: "\u012E", iogon: "\u012F", Iopf: "\u{1D540}", iopf: "\u{1D55A}", Iota: "\u0399", iota: "\u03B9", iprod: "\u2A3C", iquest: "\xBF", iscr: "\u{1D4BE}", Iscr: "\u2110", isin: "\u2208", isindot: "\u22F5", isinE: "\u22F9", isins: "\u22F4", isinsv: "\u22F3", isinv: "\u2208", it: "\u2062", Itilde: "\u0128", itilde: "\u0129", Iukcy: "\u0406", iukcy: "\u0456", Iuml: "\xCF", iuml: "\xEF", Jcirc: "\u0134", jcirc: "\u0135", Jcy: "\u0419", jcy: "\u0439", Jfr: "\u{1D50D}", jfr: "\u{1D527}", jmath: "\u0237", Jopf: "\u{1D541}", jopf: "\u{1D55B}", Jscr: "\u{1D4A5}", jscr: "\u{1D4BF}", Jsercy: "\u0408", jsercy: "\u0458", Jukcy: "\u0404", jukcy: "\u0454", Kappa: "\u039A", kappa: "\u03BA", kappav: "\u03F0", Kcedil: "\u0136", kcedil: "\u0137", Kcy: "\u041A", kcy: "\u043A", Kfr: "\u{1D50E}", kfr: "\u{1D528}", kgreen: "\u0138", KHcy: "\u0425", khcy: "\u0445", KJcy: "\u040C", kjcy: "\u045C", Kopf: "\u{1D542}", kopf: "\u{1D55C}", Kscr: "\u{1D4A6}", kscr: "\u{1D4C0}", lAarr: "\u21DA", Lacute: "\u0139", lacute: "\u013A", laemptyv: "\u29B4", lagran: "\u2112", Lambda: "\u039B", lambda: "\u03BB", lang: "\u27E8", Lang: "\u27EA", langd: "\u2991", langle: "\u27E8", lap: "\u2A85", Laplacetrf: "\u2112", laquo: "\xAB", larrb: "\u21E4", larrbfs: "\u291F", larr: "\u2190", Larr: "\u219E", lArr: "\u21D0", larrfs: "\u291D", larrhk: "\u21A9", larrlp: "\u21AB", larrpl: "\u2939", larrsim: "\u2973", larrtl: "\u21A2", latail: "\u2919", lAtail: "\u291B", lat: "\u2AAB", late: "\u2AAD", lates: "\u2AAD\uFE00", lbarr: "\u290C", lBarr: "\u290E", lbbrk: "\u2772", lbrace: "{", lbrack: "[", lbrke: "\u298B", lbrksld: "\u298F", lbrkslu: "\u298D", Lcaron: "\u013D", lcaron: "\u013E", Lcedil: "\u013B", lcedil: "\u013C", lceil: "\u2308", lcub: "{", Lcy: "\u041B", lcy: "\u043B", ldca: "\u2936", ldquo: "\u201C", ldquor: "\u201E", ldrdhar: "\u2967", ldrushar: "\u294B", ldsh: "\u21B2", le: "\u2264", lE: "\u2266", LeftAngleBracket: "\u27E8", LeftArrowBar: "\u21E4", leftarrow: "\u2190", LeftArrow: "\u2190", Leftarrow: "\u21D0", LeftArrowRightArrow: "\u21C6", leftarrowtail: "\u21A2", LeftCeiling: "\u2308", LeftDoubleBracket: "\u27E6", LeftDownTeeVector: "\u2961", LeftDownVectorBar: "\u2959", LeftDownVector: "\u21C3", LeftFloor: "\u230A", leftharpoondown: "\u21BD", leftharpoonup: "\u21BC", leftleftarrows: "\u21C7", leftrightarrow: "\u2194", LeftRightArrow: "\u2194", Leftrightarrow: "\u21D4", leftrightarrows: "\u21C6", leftrightharpoons: "\u21CB", leftrightsquigarrow: "\u21AD", LeftRightVector: "\u294E", LeftTeeArrow: "\u21A4", LeftTee: "\u22A3", LeftTeeVector: "\u295A", leftthreetimes: "\u22CB", LeftTriangleBar: "\u29CF", LeftTriangle: "\u22B2", LeftTriangleEqual: "\u22B4", LeftUpDownVector: "\u2951", LeftUpTeeVector: "\u2960", LeftUpVectorBar: "\u2958", LeftUpVector: "\u21BF", LeftVectorBar: "\u2952", LeftVector: "\u21BC", lEg: "\u2A8B", leg: "\u22DA", leq: "\u2264", leqq: "\u2266", leqslant: "\u2A7D", lescc: "\u2AA8", les: "\u2A7D", lesdot: "\u2A7F", lesdoto: "\u2A81", lesdotor: "\u2A83", lesg: "\u22DA\uFE00", lesges: "\u2A93", lessapprox: "\u2A85", lessdot: "\u22D6", lesseqgtr: "\u22DA", lesseqqgtr: "\u2A8B", LessEqualGreater: "\u22DA", LessFullEqual: "\u2266", LessGreater: "\u2276", lessgtr: "\u2276", LessLess: "\u2AA1", lesssim: "\u2272", LessSlantEqual: "\u2A7D", LessTilde: "\u2272", lfisht: "\u297C", lfloor: "\u230A", Lfr: "\u{1D50F}", lfr: "\u{1D529}", lg: "\u2276", lgE: "\u2A91", lHar: "\u2962", lhard: "\u21BD", lharu: "\u21BC", lharul: "\u296A", lhblk: "\u2584", LJcy: "\u0409", ljcy: "\u0459", llarr: "\u21C7", ll: "\u226A", Ll: "\u22D8", llcorner: "\u231E", Lleftarrow: "\u21DA", llhard: "\u296B", lltri: "\u25FA", Lmidot: "\u013F", lmidot: "\u0140", lmoustache: "\u23B0", lmoust: "\u23B0", lnap: "\u2A89", lnapprox: "\u2A89", lne: "\u2A87", lnE: "\u2268", lneq: "\u2A87", lneqq: "\u2268", lnsim: "\u22E6", loang: "\u27EC", loarr: "\u21FD", lobrk: "\u27E6", longleftarrow: "\u27F5", LongLeftArrow: "\u27F5", Longleftarrow: "\u27F8", longleftrightarrow: "\u27F7", LongLeftRightArrow: "\u27F7", Longleftrightarrow: "\u27FA", longmapsto: "\u27FC", longrightarrow: "\u27F6", LongRightArrow: "\u27F6", Longrightarrow: "\u27F9", looparrowleft: "\u21AB", looparrowright: "\u21AC", lopar: "\u2985", Lopf: "\u{1D543}", lopf: "\u{1D55D}", loplus: "\u2A2D", lotimes: "\u2A34", lowast: "\u2217", lowbar: "_", LowerLeftArrow: "\u2199", LowerRightArrow: "\u2198", loz: "\u25CA", lozenge: "\u25CA", lozf: "\u29EB", lpar: "(", lparlt: "\u2993", lrarr: "\u21C6", lrcorner: "\u231F", lrhar: "\u21CB", lrhard: "\u296D", lrm: "\u200E", lrtri: "\u22BF", lsaquo: "\u2039", lscr: "\u{1D4C1}", Lscr: "\u2112", lsh: "\u21B0", Lsh: "\u21B0", lsim: "\u2272", lsime: "\u2A8D", lsimg: "\u2A8F", lsqb: "[", lsquo: "\u2018", lsquor: "\u201A", Lstrok: "\u0141", lstrok: "\u0142", ltcc: "\u2AA6", ltcir: "\u2A79", lt: "<", LT: "<", Lt: "\u226A", ltdot: "\u22D6", lthree: "\u22CB", ltimes: "\u22C9", ltlarr: "\u2976", ltquest: "\u2A7B", ltri: "\u25C3", ltrie: "\u22B4", ltrif: "\u25C2", ltrPar: "\u2996", lurdshar: "\u294A", luruhar: "\u2966", lvertneqq: "\u2268\uFE00", lvnE: "\u2268\uFE00", macr: "\xAF", male: "\u2642", malt: "\u2720", maltese: "\u2720", Map: "\u2905", map: "\u21A6", mapsto: "\u21A6", mapstodown: "\u21A7", mapstoleft: "\u21A4", mapstoup: "\u21A5", marker: "\u25AE", mcomma: "\u2A29", Mcy: "\u041C", mcy: "\u043C", mdash: "\u2014", mDDot: "\u223A", measuredangle: "\u2221", MediumSpace: "\u205F", Mellintrf: "\u2133", Mfr: "\u{1D510}", mfr: "\u{1D52A}", mho: "\u2127", micro: "\xB5", midast: "*", midcir: "\u2AF0", mid: "\u2223", middot: "\xB7", minusb: "\u229F", minus: "\u2212", minusd: "\u2238", minusdu: "\u2A2A", MinusPlus: "\u2213", mlcp: "\u2ADB", mldr: "\u2026", mnplus: "\u2213", models: "\u22A7", Mopf: "\u{1D544}", mopf: "\u{1D55E}", mp: "\u2213", mscr: "\u{1D4C2}", Mscr: "\u2133", mstpos: "\u223E", Mu: "\u039C", mu: "\u03BC", multimap: "\u22B8", mumap: "\u22B8", nabla: "\u2207", Nacute: "\u0143", nacute: "\u0144", nang: "\u2220\u20D2", nap: "\u2249", napE: "\u2A70\u0338", napid: "\u224B\u0338", napos: "\u0149", napprox: "\u2249", natural: "\u266E", naturals: "\u2115", natur: "\u266E", nbsp: "\xA0", nbump: "\u224E\u0338", nbumpe: "\u224F\u0338", ncap: "\u2A43", Ncaron: "\u0147", ncaron: "\u0148", Ncedil: "\u0145", ncedil: "\u0146", ncong: "\u2247", ncongdot: "\u2A6D\u0338", ncup: "\u2A42", Ncy: "\u041D", ncy: "\u043D", ndash: "\u2013", nearhk: "\u2924", nearr: "\u2197", neArr: "\u21D7", nearrow: "\u2197", ne: "\u2260", nedot: "\u2250\u0338", NegativeMediumSpace: "\u200B", NegativeThickSpace: "\u200B", NegativeThinSpace: "\u200B", NegativeVeryThinSpace: "\u200B", nequiv: "\u2262", nesear: "\u2928", nesim: "\u2242\u0338", NestedGreaterGreater: "\u226B", NestedLessLess: "\u226A", NewLine: "\n", nexist: "\u2204", nexists: "\u2204", Nfr: "\u{1D511}", nfr: "\u{1D52B}", ngE: "\u2267\u0338", nge: "\u2271", ngeq: "\u2271", ngeqq: "\u2267\u0338", ngeqslant: "\u2A7E\u0338", nges: "\u2A7E\u0338", nGg: "\u22D9\u0338", ngsim: "\u2275", nGt: "\u226B\u20D2", ngt: "\u226F", ngtr: "\u226F", nGtv: "\u226B\u0338", nharr: "\u21AE", nhArr: "\u21CE", nhpar: "\u2AF2", ni: "\u220B", nis: "\u22FC", nisd: "\u22FA", niv: "\u220B", NJcy: "\u040A", njcy: "\u045A", nlarr: "\u219A", nlArr: "\u21CD", nldr: "\u2025", nlE: "\u2266\u0338", nle: "\u2270", nleftarrow: "\u219A", nLeftarrow: "\u21CD", nleftrightarrow: "\u21AE", nLeftrightarrow: "\u21CE", nleq: "\u2270", nleqq: "\u2266\u0338", nleqslant: "\u2A7D\u0338", nles: "\u2A7D\u0338", nless: "\u226E", nLl: "\u22D8\u0338", nlsim: "\u2274", nLt: "\u226A\u20D2", nlt: "\u226E", nltri: "\u22EA", nltrie: "\u22EC", nLtv: "\u226A\u0338", nmid: "\u2224", NoBreak: "\u2060", NonBreakingSpace: "\xA0", nopf: "\u{1D55F}", Nopf: "\u2115", Not: "\u2AEC", not: "\xAC", NotCongruent: "\u2262", NotCupCap: "\u226D", NotDoubleVerticalBar: "\u2226", NotElement: "\u2209", NotEqual: "\u2260", NotEqualTilde: "\u2242\u0338", NotExists: "\u2204", NotGreater: "\u226F", NotGreaterEqual: "\u2271", NotGreaterFullEqual: "\u2267\u0338", NotGreaterGreater: "\u226B\u0338", NotGreaterLess: "\u2279", NotGreaterSlantEqual: "\u2A7E\u0338", NotGreaterTilde: "\u2275", NotHumpDownHump: "\u224E\u0338", NotHumpEqual: "\u224F\u0338", notin: "\u2209", notindot: "\u22F5\u0338", notinE: "\u22F9\u0338", notinva: "\u2209", notinvb: "\u22F7", notinvc: "\u22F6", NotLeftTriangleBar: "\u29CF\u0338", NotLeftTriangle: "\u22EA", NotLeftTriangleEqual: "\u22EC", NotLess: "\u226E", NotLessEqual: "\u2270", NotLessGreater: "\u2278", NotLessLess: "\u226A\u0338", NotLessSlantEqual: "\u2A7D\u0338", NotLessTilde: "\u2274", NotNestedGreaterGreater: "\u2AA2\u0338", NotNestedLessLess: "\u2AA1\u0338", notni: "\u220C", notniva: "\u220C", notnivb: "\u22FE", notnivc: "\u22FD", NotPrecedes: "\u2280", NotPrecedesEqual: "\u2AAF\u0338", NotPrecedesSlantEqual: "\u22E0", NotReverseElement: "\u220C", NotRightTriangleBar: "\u29D0\u0338", NotRightTriangle: "\u22EB", NotRightTriangleEqual: "\u22ED", NotSquareSubset: "\u228F\u0338", NotSquareSubsetEqual: "\u22E2", NotSquareSuperset: "\u2290\u0338", NotSquareSupersetEqual: "\u22E3", NotSubset: "\u2282\u20D2", NotSubsetEqual: "\u2288", NotSucceeds: "\u2281", NotSucceedsEqual: "\u2AB0\u0338", NotSucceedsSlantEqual: "\u22E1", NotSucceedsTilde: "\u227F\u0338", NotSuperset: "\u2283\u20D2", NotSupersetEqual: "\u2289", NotTilde: "\u2241", NotTildeEqual: "\u2244", NotTildeFullEqual: "\u2247", NotTildeTilde: "\u2249", NotVerticalBar: "\u2224", nparallel: "\u2226", npar: "\u2226", nparsl: "\u2AFD\u20E5", npart: "\u2202\u0338", npolint: "\u2A14", npr: "\u2280", nprcue: "\u22E0", nprec: "\u2280", npreceq: "\u2AAF\u0338", npre: "\u2AAF\u0338", nrarrc: "\u2933\u0338", nrarr: "\u219B", nrArr: "\u21CF", nrarrw: "\u219D\u0338", nrightarrow: "\u219B", nRightarrow: "\u21CF", nrtri: "\u22EB", nrtrie: "\u22ED", nsc: "\u2281", nsccue: "\u22E1", nsce: "\u2AB0\u0338", Nscr: "\u{1D4A9}", nscr: "\u{1D4C3}", nshortmid: "\u2224", nshortparallel: "\u2226", nsim: "\u2241", nsime: "\u2244", nsimeq: "\u2244", nsmid: "\u2224", nspar: "\u2226", nsqsube: "\u22E2", nsqsupe: "\u22E3", nsub: "\u2284", nsubE: "\u2AC5\u0338", nsube: "\u2288", nsubset: "\u2282\u20D2", nsubseteq: "\u2288", nsubseteqq: "\u2AC5\u0338", nsucc: "\u2281", nsucceq: "\u2AB0\u0338", nsup: "\u2285", nsupE: "\u2AC6\u0338", nsupe: "\u2289", nsupset: "\u2283\u20D2", nsupseteq: "\u2289", nsupseteqq: "\u2AC6\u0338", ntgl: "\u2279", Ntilde: "\xD1", ntilde: "\xF1", ntlg: "\u2278", ntriangleleft: "\u22EA", ntrianglelefteq: "\u22EC", ntriangleright: "\u22EB", ntrianglerighteq: "\u22ED", Nu: "\u039D", nu: "\u03BD", num: "#", numero: "\u2116", numsp: "\u2007", nvap: "\u224D\u20D2", nvdash: "\u22AC", nvDash: "\u22AD", nVdash: "\u22AE", nVDash: "\u22AF", nvge: "\u2265\u20D2", nvgt: ">\u20D2", nvHarr: "\u2904", nvinfin: "\u29DE", nvlArr: "\u2902", nvle: "\u2264\u20D2", nvlt: "<\u20D2", nvltrie: "\u22B4\u20D2", nvrArr: "\u2903", nvrtrie: "\u22B5\u20D2", nvsim: "\u223C\u20D2", nwarhk: "\u2923", nwarr: "\u2196", nwArr: "\u21D6", nwarrow: "\u2196", nwnear: "\u2927", Oacute: "\xD3", oacute: "\xF3", oast: "\u229B", Ocirc: "\xD4", ocirc: "\xF4", ocir: "\u229A", Ocy: "\u041E", ocy: "\u043E", odash: "\u229D", Odblac: "\u0150", odblac: "\u0151", odiv: "\u2A38", odot: "\u2299", odsold: "\u29BC", OElig: "\u0152", oelig: "\u0153", ofcir: "\u29BF", Ofr: "\u{1D512}", ofr: "\u{1D52C}", ogon: "\u02DB", Ograve: "\xD2", ograve: "\xF2", ogt: "\u29C1", ohbar: "\u29B5", ohm: "\u03A9", oint: "\u222E", olarr: "\u21BA", olcir: "\u29BE", olcross: "\u29BB", oline: "\u203E", olt: "\u29C0", Omacr: "\u014C", omacr: "\u014D", Omega: "\u03A9", omega: "\u03C9", Omicron: "\u039F", omicron: "\u03BF", omid: "\u29B6", ominus: "\u2296", Oopf: "\u{1D546}", oopf: "\u{1D560}", opar: "\u29B7", OpenCurlyDoubleQuote: "\u201C", OpenCurlyQuote: "\u2018", operp: "\u29B9", oplus: "\u2295", orarr: "\u21BB", Or: "\u2A54", or: "\u2228", ord: "\u2A5D", order: "\u2134", orderof: "\u2134", ordf: "\xAA", ordm: "\xBA", origof: "\u22B6", oror: "\u2A56", orslope: "\u2A57", orv: "\u2A5B", oS: "\u24C8", Oscr: "\u{1D4AA}", oscr: "\u2134", Oslash: "\xD8", oslash: "\xF8", osol: "\u2298", Otilde: "\xD5", otilde: "\xF5", otimesas: "\u2A36", Otimes: "\u2A37", otimes: "\u2297", Ouml: "\xD6", ouml: "\xF6", ovbar: "\u233D", OverBar: "\u203E", OverBrace: "\u23DE", OverBracket: "\u23B4", OverParenthesis: "\u23DC", para: "\xB6", parallel: "\u2225", par: "\u2225", parsim: "\u2AF3", parsl: "\u2AFD", part: "\u2202", PartialD: "\u2202", Pcy: "\u041F", pcy: "\u043F", percnt: "%", period: ".", permil: "\u2030", perp: "\u22A5", pertenk: "\u2031", Pfr: "\u{1D513}", pfr: "\u{1D52D}", Phi: "\u03A6", phi: "\u03C6", phiv: "\u03D5", phmmat: "\u2133", phone: "\u260E", Pi: "\u03A0", pi: "\u03C0", pitchfork: "\u22D4", piv: "\u03D6", planck: "\u210F", planckh: "\u210E", plankv: "\u210F", plusacir: "\u2A23", plusb: "\u229E", pluscir: "\u2A22", plus: "+", plusdo: "\u2214", plusdu: "\u2A25", pluse: "\u2A72", PlusMinus: "\xB1", plusmn: "\xB1", plussim: "\u2A26", plustwo: "\u2A27", pm: "\xB1", Poincareplane: "\u210C", pointint: "\u2A15", popf: "\u{1D561}", Popf: "\u2119", pound: "\xA3", prap: "\u2AB7", Pr: "\u2ABB", pr: "\u227A", prcue: "\u227C", precapprox: "\u2AB7", prec: "\u227A", preccurlyeq: "\u227C", Precedes: "\u227A", PrecedesEqual: "\u2AAF", PrecedesSlantEqual: "\u227C", PrecedesTilde: "\u227E", preceq: "\u2AAF", precnapprox: "\u2AB9", precneqq: "\u2AB5", precnsim: "\u22E8", pre: "\u2AAF", prE: "\u2AB3", precsim: "\u227E", prime: "\u2032", Prime: "\u2033", primes: "\u2119", prnap: "\u2AB9", prnE: "\u2AB5", prnsim: "\u22E8", prod: "\u220F", Product: "\u220F", profalar: "\u232E", profline: "\u2312", profsurf: "\u2313", prop: "\u221D", Proportional: "\u221D", Proportion: "\u2237", propto: "\u221D", prsim: "\u227E", prurel: "\u22B0", Pscr: "\u{1D4AB}", pscr: "\u{1D4C5}", Psi: "\u03A8", psi: "\u03C8", puncsp: "\u2008", Qfr: "\u{1D514}", qfr: "\u{1D52E}", qint: "\u2A0C", qopf: "\u{1D562}", Qopf: "\u211A", qprime: "\u2057", Qscr: "\u{1D4AC}", qscr: "\u{1D4C6}", quaternions: "\u210D", quatint: "\u2A16", quest: "?", questeq: "\u225F", quot: '"', QUOT: '"', rAarr: "\u21DB", race: "\u223D\u0331", Racute: "\u0154", racute: "\u0155", radic: "\u221A", raemptyv: "\u29B3", rang: "\u27E9", Rang: "\u27EB", rangd: "\u2992", range: "\u29A5", rangle: "\u27E9", raquo: "\xBB", rarrap: "\u2975", rarrb: "\u21E5", rarrbfs: "\u2920", rarrc: "\u2933", rarr: "\u2192", Rarr: "\u21A0", rArr: "\u21D2", rarrfs: "\u291E", rarrhk: "\u21AA", rarrlp: "\u21AC", rarrpl: "\u2945", rarrsim: "\u2974", Rarrtl: "\u2916", rarrtl: "\u21A3", rarrw: "\u219D", ratail: "\u291A", rAtail: "\u291C", ratio: "\u2236", rationals: "\u211A", rbarr: "\u290D", rBarr: "\u290F", RBarr: "\u2910", rbbrk: "\u2773", rbrace: "}", rbrack: "]", rbrke: "\u298C", rbrksld: "\u298E", rbrkslu: "\u2990", Rcaron: "\u0158", rcaron: "\u0159", Rcedil: "\u0156", rcedil: "\u0157", rceil: "\u2309", rcub: "}", Rcy: "\u0420", rcy: "\u0440", rdca: "\u2937", rdldhar: "\u2969", rdquo: "\u201D", rdquor: "\u201D", rdsh: "\u21B3", real: "\u211C", realine: "\u211B", realpart: "\u211C", reals: "\u211D", Re: "\u211C", rect: "\u25AD", reg: "\xAE", REG: "\xAE", ReverseElement: "\u220B", ReverseEquilibrium: "\u21CB", ReverseUpEquilibrium: "\u296F", rfisht: "\u297D", rfloor: "\u230B", rfr: "\u{1D52F}", Rfr: "\u211C", rHar: "\u2964", rhard: "\u21C1", rharu: "\u21C0", rharul: "\u296C", Rho: "\u03A1", rho: "\u03C1", rhov: "\u03F1", RightAngleBracket: "\u27E9", RightArrowBar: "\u21E5", rightarrow: "\u2192", RightArrow: "\u2192", Rightarrow: "\u21D2", RightArrowLeftArrow: "\u21C4", rightarrowtail: "\u21A3", RightCeiling: "\u2309", RightDoubleBracket: "\u27E7", RightDownTeeVector: "\u295D", RightDownVectorBar: "\u2955", RightDownVector: "\u21C2", RightFloor: "\u230B", rightharpoondown: "\u21C1", rightharpoonup: "\u21C0", rightleftarrows: "\u21C4", rightleftharpoons: "\u21CC", rightrightarrows: "\u21C9", rightsquigarrow: "\u219D", RightTeeArrow: "\u21A6", RightTee: "\u22A2", RightTeeVector: "\u295B", rightthreetimes: "\u22CC", RightTriangleBar: "\u29D0", RightTriangle: "\u22B3", RightTriangleEqual: "\u22B5", RightUpDownVector: "\u294F", RightUpTeeVector: "\u295C", RightUpVectorBar: "\u2954", RightUpVector: "\u21BE", RightVectorBar: "\u2953", RightVector: "\u21C0", ring: "\u02DA", risingdotseq: "\u2253", rlarr: "\u21C4", rlhar: "\u21CC", rlm: "\u200F", rmoustache: "\u23B1", rmoust: "\u23B1", rnmid: "\u2AEE", roang: "\u27ED", roarr: "\u21FE", robrk: "\u27E7", ropar: "\u2986", ropf: "\u{1D563}", Ropf: "\u211D", roplus: "\u2A2E", rotimes: "\u2A35", RoundImplies: "\u2970", rpar: ")", rpargt: "\u2994", rppolint: "\u2A12", rrarr: "\u21C9", Rrightarrow: "\u21DB", rsaquo: "\u203A", rscr: "\u{1D4C7}", Rscr: "\u211B", rsh: "\u21B1", Rsh: "\u21B1", rsqb: "]", rsquo: "\u2019", rsquor: "\u2019", rthree: "\u22CC", rtimes: "\u22CA", rtri: "\u25B9", rtrie: "\u22B5", rtrif: "\u25B8", rtriltri: "\u29CE", RuleDelayed: "\u29F4", ruluhar: "\u2968", rx: "\u211E", Sacute: "\u015A", sacute: "\u015B", sbquo: "\u201A", scap: "\u2AB8", Scaron: "\u0160", scaron: "\u0161", Sc: "\u2ABC", sc: "\u227B", sccue: "\u227D", sce: "\u2AB0", scE: "\u2AB4", Scedil: "\u015E", scedil: "\u015F", Scirc: "\u015C", scirc: "\u015D", scnap: "\u2ABA", scnE: "\u2AB6", scnsim: "\u22E9", scpolint: "\u2A13", scsim: "\u227F", Scy: "\u0421", scy: "\u0441", sdotb: "\u22A1", sdot: "\u22C5", sdote: "\u2A66", searhk: "\u2925", searr: "\u2198", seArr: "\u21D8", searrow: "\u2198", sect: "\xA7", semi: ";", seswar: "\u2929", setminus: "\u2216", setmn: "\u2216", sext: "\u2736", Sfr: "\u{1D516}", sfr: "\u{1D530}", sfrown: "\u2322", sharp: "\u266F", SHCHcy: "\u0429", shchcy: "\u0449", SHcy: "\u0428", shcy: "\u0448", ShortDownArrow: "\u2193", ShortLeftArrow: "\u2190", shortmid: "\u2223", shortparallel: "\u2225", ShortRightArrow: "\u2192", ShortUpArrow: "\u2191", shy: "\xAD", Sigma: "\u03A3", sigma: "\u03C3", sigmaf: "\u03C2", sigmav: "\u03C2", sim: "\u223C", simdot: "\u2A6A", sime: "\u2243", simeq: "\u2243", simg: "\u2A9E", simgE: "\u2AA0", siml: "\u2A9D", simlE: "\u2A9F", simne: "\u2246", simplus: "\u2A24", simrarr: "\u2972", slarr: "\u2190", SmallCircle: "\u2218", smallsetminus: "\u2216", smashp: "\u2A33", smeparsl: "\u29E4", smid: "\u2223", smile: "\u2323", smt: "\u2AAA", smte: "\u2AAC", smtes: "\u2AAC\uFE00", SOFTcy: "\u042C", softcy: "\u044C", solbar: "\u233F", solb: "\u29C4", sol: "/", Sopf: "\u{1D54A}", sopf: "\u{1D564}", spades: "\u2660", spadesuit: "\u2660", spar: "\u2225", sqcap: "\u2293", sqcaps: "\u2293\uFE00", sqcup: "\u2294", sqcups: "\u2294\uFE00", Sqrt: "\u221A", sqsub: "\u228F", sqsube: "\u2291", sqsubset: "\u228F", sqsubseteq: "\u2291", sqsup: "\u2290", sqsupe: "\u2292", sqsupset: "\u2290", sqsupseteq: "\u2292", square: "\u25A1", Square: "\u25A1", SquareIntersection: "\u2293", SquareSubset: "\u228F", SquareSubsetEqual: "\u2291", SquareSuperset: "\u2290", SquareSupersetEqual: "\u2292", SquareUnion: "\u2294", squarf: "\u25AA", squ: "\u25A1", squf: "\u25AA", srarr: "\u2192", Sscr: "\u{1D4AE}", sscr: "\u{1D4C8}", ssetmn: "\u2216", ssmile: "\u2323", sstarf: "\u22C6", Star: "\u22C6", star: "\u2606", starf: "\u2605", straightepsilon: "\u03F5", straightphi: "\u03D5", strns: "\xAF", sub: "\u2282", Sub: "\u22D0", subdot: "\u2ABD", subE: "\u2AC5", sube: "\u2286", subedot: "\u2AC3", submult: "\u2AC1", subnE: "\u2ACB", subne: "\u228A", subplus: "\u2ABF", subrarr: "\u2979", subset: "\u2282", Subset: "\u22D0", subseteq: "\u2286", subseteqq: "\u2AC5", SubsetEqual: "\u2286", subsetneq: "\u228A", subsetneqq: "\u2ACB", subsim: "\u2AC7", subsub: "\u2AD5", subsup: "\u2AD3", succapprox: "\u2AB8", succ: "\u227B", succcurlyeq: "\u227D", Succeeds: "\u227B", SucceedsEqual: "\u2AB0", SucceedsSlantEqual: "\u227D", SucceedsTilde: "\u227F", succeq: "\u2AB0", succnapprox: "\u2ABA", succneqq: "\u2AB6", succnsim: "\u22E9", succsim: "\u227F", SuchThat: "\u220B", sum: "\u2211", Sum: "\u2211", sung: "\u266A", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", sup: "\u2283", Sup: "\u22D1", supdot: "\u2ABE", supdsub: "\u2AD8", supE: "\u2AC6", supe: "\u2287", supedot: "\u2AC4", Superset: "\u2283", SupersetEqual: "\u2287", suphsol: "\u27C9", suphsub: "\u2AD7", suplarr: "\u297B", supmult: "\u2AC2", supnE: "\u2ACC", supne: "\u228B", supplus: "\u2AC0", supset: "\u2283", Supset: "\u22D1", supseteq: "\u2287", supseteqq: "\u2AC6", supsetneq: "\u228B", supsetneqq: "\u2ACC", supsim: "\u2AC8", supsub: "\u2AD4", supsup: "\u2AD6", swarhk: "\u2926", swarr: "\u2199", swArr: "\u21D9", swarrow: "\u2199", swnwar: "\u292A", szlig: "\xDF", Tab: " ", target: "\u2316", Tau: "\u03A4", tau: "\u03C4", tbrk: "\u23B4", Tcaron: "\u0164", tcaron: "\u0165", Tcedil: "\u0162", tcedil: "\u0163", Tcy: "\u0422", tcy: "\u0442", tdot: "\u20DB", telrec: "\u2315", Tfr: "\u{1D517}", tfr: "\u{1D531}", there4: "\u2234", therefore: "\u2234", Therefore: "\u2234", Theta: "\u0398", theta: "\u03B8", thetasym: "\u03D1", thetav: "\u03D1", thickapprox: "\u2248", thicksim: "\u223C", ThickSpace: "\u205F\u200A", ThinSpace: "\u2009", thinsp: "\u2009", thkap: "\u2248", thksim: "\u223C", THORN: "\xDE", thorn: "\xFE", tilde: "\u02DC", Tilde: "\u223C", TildeEqual: "\u2243", TildeFullEqual: "\u2245", TildeTilde: "\u2248", timesbar: "\u2A31", timesb: "\u22A0", times: "\xD7", timesd: "\u2A30", tint: "\u222D", toea: "\u2928", topbot: "\u2336", topcir: "\u2AF1", top: "\u22A4", Topf: "\u{1D54B}", topf: "\u{1D565}", topfork: "\u2ADA", tosa: "\u2929", tprime: "\u2034", trade: "\u2122", TRADE: "\u2122", triangle: "\u25B5", triangledown: "\u25BF", triangleleft: "\u25C3", trianglelefteq: "\u22B4", triangleq: "\u225C", triangleright: "\u25B9", trianglerighteq: "\u22B5", tridot: "\u25EC", trie: "\u225C", triminus: "\u2A3A", TripleDot: "\u20DB", triplus: "\u2A39", trisb: "\u29CD", tritime: "\u2A3B", trpezium: "\u23E2", Tscr: "\u{1D4AF}", tscr: "\u{1D4C9}", TScy: "\u0426", tscy: "\u0446", TSHcy: "\u040B", tshcy: "\u045B", Tstrok: "\u0166", tstrok: "\u0167", twixt: "\u226C", twoheadleftarrow: "\u219E", twoheadrightarrow: "\u21A0", Uacute: "\xDA", uacute: "\xFA", uarr: "\u2191", Uarr: "\u219F", uArr: "\u21D1", Uarrocir: "\u2949", Ubrcy: "\u040E", ubrcy: "\u045E", Ubreve: "\u016C", ubreve: "\u016D", Ucirc: "\xDB", ucirc: "\xFB", Ucy: "\u0423", ucy: "\u0443", udarr: "\u21C5", Udblac: "\u0170", udblac: "\u0171", udhar: "\u296E", ufisht: "\u297E", Ufr: "\u{1D518}", ufr: "\u{1D532}", Ugrave: "\xD9", ugrave: "\xF9", uHar: "\u2963", uharl: "\u21BF", uharr: "\u21BE", uhblk: "\u2580", ulcorn: "\u231C", ulcorner: "\u231C", ulcrop: "\u230F", ultri: "\u25F8", Umacr: "\u016A", umacr: "\u016B", uml: "\xA8", UnderBar: "_", UnderBrace: "\u23DF", UnderBracket: "\u23B5", UnderParenthesis: "\u23DD", Union: "\u22C3", UnionPlus: "\u228E", Uogon: "\u0172", uogon: "\u0173", Uopf: "\u{1D54C}", uopf: "\u{1D566}", UpArrowBar: "\u2912", uparrow: "\u2191", UpArrow: "\u2191", Uparrow: "\u21D1", UpArrowDownArrow: "\u21C5", updownarrow: "\u2195", UpDownArrow: "\u2195", Updownarrow: "\u21D5", UpEquilibrium: "\u296E", upharpoonleft: "\u21BF", upharpoonright: "\u21BE", uplus: "\u228E", UpperLeftArrow: "\u2196", UpperRightArrow: "\u2197", upsi: "\u03C5", Upsi: "\u03D2", upsih: "\u03D2", Upsilon: "\u03A5", upsilon: "\u03C5", UpTeeArrow: "\u21A5", UpTee: "\u22A5", upuparrows: "\u21C8", urcorn: "\u231D", urcorner: "\u231D", urcrop: "\u230E", Uring: "\u016E", uring: "\u016F", urtri: "\u25F9", Uscr: "\u{1D4B0}", uscr: "\u{1D4CA}", utdot: "\u22F0", Utilde: "\u0168", utilde: "\u0169", utri: "\u25B5", utrif: "\u25B4", uuarr: "\u21C8", Uuml: "\xDC", uuml: "\xFC", uwangle: "\u29A7", vangrt: "\u299C", varepsilon: "\u03F5", varkappa: "\u03F0", varnothing: "\u2205", varphi: "\u03D5", varpi: "\u03D6", varpropto: "\u221D", varr: "\u2195", vArr: "\u21D5", varrho: "\u03F1", varsigma: "\u03C2", varsubsetneq: "\u228A\uFE00", varsubsetneqq: "\u2ACB\uFE00", varsupsetneq: "\u228B\uFE00", varsupsetneqq: "\u2ACC\uFE00", vartheta: "\u03D1", vartriangleleft: "\u22B2", vartriangleright: "\u22B3", vBar: "\u2AE8", Vbar: "\u2AEB", vBarv: "\u2AE9", Vcy: "\u0412", vcy: "\u0432", vdash: "\u22A2", vDash: "\u22A8", Vdash: "\u22A9", VDash: "\u22AB", Vdashl: "\u2AE6", veebar: "\u22BB", vee: "\u2228", Vee: "\u22C1", veeeq: "\u225A", vellip: "\u22EE", verbar: "|", Verbar: "\u2016", vert: "|", Vert: "\u2016", VerticalBar: "\u2223", VerticalLine: "|", VerticalSeparator: "\u2758", VerticalTilde: "\u2240", VeryThinSpace: "\u200A", Vfr: "\u{1D519}", vfr: "\u{1D533}", vltri: "\u22B2", vnsub: "\u2282\u20D2", vnsup: "\u2283\u20D2", Vopf: "\u{1D54D}", vopf: "\u{1D567}", vprop: "\u221D", vrtri: "\u22B3", Vscr: "\u{1D4B1}", vscr: "\u{1D4CB}", vsubnE: "\u2ACB\uFE00", vsubne: "\u228A\uFE00", vsupnE: "\u2ACC\uFE00", vsupne: "\u228B\uFE00", Vvdash: "\u22AA", vzigzag: "\u299A", Wcirc: "\u0174", wcirc: "\u0175", wedbar: "\u2A5F", wedge: "\u2227", Wedge: "\u22C0", wedgeq: "\u2259", weierp: "\u2118", Wfr: "\u{1D51A}", wfr: "\u{1D534}", Wopf: "\u{1D54E}", wopf: "\u{1D568}", wp: "\u2118", wr: "\u2240", wreath: "\u2240", Wscr: "\u{1D4B2}", wscr: "\u{1D4CC}", xcap: "\u22C2", xcirc: "\u25EF", xcup: "\u22C3", xdtri: "\u25BD", Xfr: "\u{1D51B}", xfr: "\u{1D535}", xharr: "\u27F7", xhArr: "\u27FA", Xi: "\u039E", xi: "\u03BE", xlarr: "\u27F5", xlArr: "\u27F8", xmap: "\u27FC", xnis: "\u22FB", xodot: "\u2A00", Xopf: "\u{1D54F}", xopf: "\u{1D569}", xoplus: "\u2A01", xotime: "\u2A02", xrarr: "\u27F6", xrArr: "\u27F9", Xscr: "\u{1D4B3}", xscr: "\u{1D4CD}", xsqcup: "\u2A06", xuplus: "\u2A04", xutri: "\u25B3", xvee: "\u22C1", xwedge: "\u22C0", Yacute: "\xDD", yacute: "\xFD", YAcy: "\u042F", yacy: "\u044F", Ycirc: "\u0176", ycirc: "\u0177", Ycy: "\u042B", ycy: "\u044B", yen: "\xA5", Yfr: "\u{1D51C}", yfr: "\u{1D536}", YIcy: "\u0407", yicy: "\u0457", Yopf: "\u{1D550}", yopf: "\u{1D56A}", Yscr: "\u{1D4B4}", yscr: "\u{1D4CE}", YUcy: "\u042E", yucy: "\u044E", yuml: "\xFF", Yuml: "\u0178", Zacute: "\u0179", zacute: "\u017A", Zcaron: "\u017D", zcaron: "\u017E", Zcy: "\u0417", zcy: "\u0437", Zdot: "\u017B", zdot: "\u017C", zeetrf: "\u2128", ZeroWidthSpace: "\u200B", Zeta: "\u0396", zeta: "\u03B6", zfr: "\u{1D537}", Zfr: "\u2128", ZHcy: "\u0416", zhcy: "\u0436", zigrarr: "\u21DD", zopf: "\u{1D56B}", Zopf: "\u2124", Zscr: "\u{1D4B5}", zscr: "\u{1D4CF}", zwj: "\u200D", zwnj: "\u200C" }; - } -}); - -// node_modules/markdown-it/lib/common/entities.js -var require_entities2 = __commonJS({ - "node_modules/markdown-it/lib/common/entities.js"(exports, module2) { - "use strict"; - module2.exports = require_entities(); - } -}); - -// node_modules/uc.micro/categories/P/regex.js -var require_regex = __commonJS({ - "node_modules/uc.micro/categories/P/regex.js"(exports, module2) { - module2.exports = /[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/; - } -}); - -// node_modules/mdurl/encode.js -var require_encode = __commonJS({ - "node_modules/mdurl/encode.js"(exports, module2) { - "use strict"; - var encodeCache = {}; - function getEncodeCache(exclude) { - var i2, ch, cache = encodeCache[exclude]; - if (cache) { - return cache; - } - cache = encodeCache[exclude] = []; - for (i2 = 0; i2 < 128; i2++) { - ch = String.fromCharCode(i2); - if (/^[0-9a-z]$/i.test(ch)) { - cache.push(ch); - } else { - cache.push("%" + ("0" + i2.toString(16).toUpperCase()).slice(-2)); - } - } - for (i2 = 0; i2 < exclude.length; i2++) { - cache[exclude.charCodeAt(i2)] = exclude[i2]; - } - return cache; - } - function encode(string, exclude, keepEscaped) { - var i2, l2, code, nextCode, cache, result = ""; - if (typeof exclude !== "string") { - keepEscaped = exclude; - exclude = encode.defaultChars; - } - if (typeof keepEscaped === "undefined") { - keepEscaped = true; - } - cache = getEncodeCache(exclude); - for (i2 = 0, l2 = string.length; i2 < l2; i2++) { - code = string.charCodeAt(i2); - if (keepEscaped && code === 37 && i2 + 2 < l2) { - if (/^[0-9a-f]{2}$/i.test(string.slice(i2 + 1, i2 + 3))) { - result += string.slice(i2, i2 + 3); - i2 += 2; - continue; - } - } - if (code < 128) { - result += cache[code]; - continue; - } - if (code >= 55296 && code <= 57343) { - if (code >= 55296 && code <= 56319 && i2 + 1 < l2) { - nextCode = string.charCodeAt(i2 + 1); - if (nextCode >= 56320 && nextCode <= 57343) { - result += encodeURIComponent(string[i2] + string[i2 + 1]); - i2++; - continue; - } - } - result += "%EF%BF%BD"; - continue; - } - result += encodeURIComponent(string[i2]); - } - return result; - } - encode.defaultChars = ";/?:@&=+$,-_.!~*'()#"; - encode.componentChars = "-_.!~*'()"; - module2.exports = encode; - } -}); - -// node_modules/mdurl/decode.js -var require_decode2 = __commonJS({ - "node_modules/mdurl/decode.js"(exports, module2) { - "use strict"; - var decodeCache = {}; - function getDecodeCache(exclude) { - var i2, ch, cache = decodeCache[exclude]; - if (cache) { - return cache; - } - cache = decodeCache[exclude] = []; - for (i2 = 0; i2 < 128; i2++) { - ch = String.fromCharCode(i2); - cache.push(ch); - } - for (i2 = 0; i2 < exclude.length; i2++) { - ch = exclude.charCodeAt(i2); - cache[ch] = "%" + ("0" + ch.toString(16).toUpperCase()).slice(-2); - } - return cache; - } - function decode(string, exclude) { - var cache; - if (typeof exclude !== "string") { - exclude = decode.defaultChars; - } - cache = getDecodeCache(exclude); - return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) { - var i2, l2, b1, b2, b3, b4, chr, result = ""; - for (i2 = 0, l2 = seq.length; i2 < l2; i2 += 3) { - b1 = parseInt(seq.slice(i2 + 1, i2 + 3), 16); - if (b1 < 128) { - result += cache[b1]; - continue; - } - if ((b1 & 224) === 192 && i2 + 3 < l2) { - b2 = parseInt(seq.slice(i2 + 4, i2 + 6), 16); - if ((b2 & 192) === 128) { - chr = b1 << 6 & 1984 | b2 & 63; - if (chr < 128) { - result += "\uFFFD\uFFFD"; - } else { - result += String.fromCharCode(chr); - } - i2 += 3; - continue; - } - } - if ((b1 & 240) === 224 && i2 + 6 < l2) { - b2 = parseInt(seq.slice(i2 + 4, i2 + 6), 16); - b3 = parseInt(seq.slice(i2 + 7, i2 + 9), 16); - if ((b2 & 192) === 128 && (b3 & 192) === 128) { - chr = b1 << 12 & 61440 | b2 << 6 & 4032 | b3 & 63; - if (chr < 2048 || chr >= 55296 && chr <= 57343) { - result += "\uFFFD\uFFFD\uFFFD"; - } else { - result += String.fromCharCode(chr); - } - i2 += 6; - continue; - } - } - if ((b1 & 248) === 240 && i2 + 9 < l2) { - b2 = parseInt(seq.slice(i2 + 4, i2 + 6), 16); - b3 = parseInt(seq.slice(i2 + 7, i2 + 9), 16); - b4 = parseInt(seq.slice(i2 + 10, i2 + 12), 16); - if ((b2 & 192) === 128 && (b3 & 192) === 128 && (b4 & 192) === 128) { - chr = b1 << 18 & 1835008 | b2 << 12 & 258048 | b3 << 6 & 4032 | b4 & 63; - if (chr < 65536 || chr > 1114111) { - result += "\uFFFD\uFFFD\uFFFD\uFFFD"; - } else { - chr -= 65536; - result += String.fromCharCode(55296 + (chr >> 10), 56320 + (chr & 1023)); - } - i2 += 9; - continue; - } - } - result += "\uFFFD"; - } - return result; - }); - } - decode.defaultChars = ";/?:@&=+$,#"; - decode.componentChars = ""; - module2.exports = decode; - } -}); - -// node_modules/mdurl/format.js -var require_format = __commonJS({ - "node_modules/mdurl/format.js"(exports, module2) { - "use strict"; - module2.exports = function format(url) { - var result = ""; - result += url.protocol || ""; - result += url.slashes ? "//" : ""; - result += url.auth ? url.auth + "@" : ""; - if (url.hostname && url.hostname.indexOf(":") !== -1) { - result += "[" + url.hostname + "]"; - } else { - result += url.hostname || ""; - } - result += url.port ? ":" + url.port : ""; - result += url.pathname || ""; - result += url.search || ""; - result += url.hash || ""; - return result; - }; - } -}); - -// node_modules/mdurl/parse.js -var require_parse = __commonJS({ - "node_modules/mdurl/parse.js"(exports, module2) { - "use strict"; - function Url() { - this.protocol = null; - this.slashes = null; - this.auth = null; - this.port = null; - this.hostname = null; - this.hash = null; - this.search = null; - this.pathname = null; - } - var protocolPattern = /^([a-z0-9.+-]+:)/i; - var portPattern = /:[0-9]*$/; - var simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/; - var delims = ["<", ">", '"', "`", " ", "\r", "\n", " "]; - var unwise = ["{", "}", "|", "\\", "^", "`"].concat(delims); - var autoEscape = ["'"].concat(unwise); - var nonHostChars = ["%", "/", "?", ";", "#"].concat(autoEscape); - var hostEndingChars = ["/", "?", "#"]; - var hostnameMaxLen = 255; - var hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/; - var hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/; - var hostlessProtocol = { - "javascript": true, - "javascript:": true - }; - var slashedProtocol = { - "http": true, - "https": true, - "ftp": true, - "gopher": true, - "file": true, - "http:": true, - "https:": true, - "ftp:": true, - "gopher:": true, - "file:": true - }; - function urlParse(url, slashesDenoteHost) { - if (url && url instanceof Url) { - return url; - } - var u2 = new Url(); - u2.parse(url, slashesDenoteHost); - return u2; - } - Url.prototype.parse = function(url, slashesDenoteHost) { - var i2, l2, lowerProto, hec, slashes, rest = url; - rest = rest.trim(); - if (!slashesDenoteHost && url.split("#").length === 1) { - var simplePath = simplePathPattern.exec(rest); - if (simplePath) { - this.pathname = simplePath[1]; - if (simplePath[2]) { - this.search = simplePath[2]; - } - return this; - } - } - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - lowerProto = proto.toLowerCase(); - this.protocol = proto; - rest = rest.substr(proto.length); - } - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - slashes = rest.substr(0, 2) === "//"; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) { - var hostEnd = -1; - for (i2 = 0; i2 < hostEndingChars.length; i2++) { - hec = rest.indexOf(hostEndingChars[i2]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { - hostEnd = hec; - } - } - var auth, atSign; - if (hostEnd === -1) { - atSign = rest.lastIndexOf("@"); - } else { - atSign = rest.lastIndexOf("@", hostEnd); - } - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = auth; - } - hostEnd = -1; - for (i2 = 0; i2 < nonHostChars.length; i2++) { - hec = rest.indexOf(nonHostChars[i2]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { - hostEnd = hec; - } - } - if (hostEnd === -1) { - hostEnd = rest.length; - } - if (rest[hostEnd - 1] === ":") { - hostEnd--; - } - var host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - this.parseHost(host); - this.hostname = this.hostname || ""; - var ipv6Hostname = this.hostname[0] === "[" && this.hostname[this.hostname.length - 1] === "]"; - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (i2 = 0, l2 = hostparts.length; i2 < l2; i2++) { - var part = hostparts[i2]; - if (!part) { - continue; - } - if (!part.match(hostnamePartPattern)) { - var newpart = ""; - for (var j2 = 0, k2 = part.length; j2 < k2; j2++) { - if (part.charCodeAt(j2) > 127) { - newpart += "x"; - } else { - newpart += part[j2]; - } - } - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i2); - var notHost = hostparts.slice(i2 + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = notHost.join(".") + rest; - } - this.hostname = validParts.join("."); - break; - } - } - } - } - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ""; - } - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - } - } - var hash = rest.indexOf("#"); - if (hash !== -1) { - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf("?"); - if (qm !== -1) { - this.search = rest.substr(qm); - rest = rest.slice(0, qm); - } - if (rest) { - this.pathname = rest; - } - if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) { - this.pathname = ""; - } - return this; - }; - Url.prototype.parseHost = function(host) { - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ":") { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) { - this.hostname = host; - } - }; - module2.exports = urlParse; - } -}); - -// node_modules/mdurl/index.js -var require_mdurl = __commonJS({ - "node_modules/mdurl/index.js"(exports, module2) { - "use strict"; - module2.exports.encode = require_encode(); - module2.exports.decode = require_decode2(); - module2.exports.format = require_format(); - module2.exports.parse = require_parse(); - } -}); - -// node_modules/uc.micro/properties/Any/regex.js -var require_regex2 = __commonJS({ - "node_modules/uc.micro/properties/Any/regex.js"(exports, module2) { - module2.exports = /[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; - } -}); - -// node_modules/uc.micro/categories/Cc/regex.js -var require_regex3 = __commonJS({ - "node_modules/uc.micro/categories/Cc/regex.js"(exports, module2) { - module2.exports = /[\0-\x1F\x7F-\x9F]/; - } -}); - -// node_modules/uc.micro/categories/Cf/regex.js -var require_regex4 = __commonJS({ - "node_modules/uc.micro/categories/Cf/regex.js"(exports, module2) { - module2.exports = /[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/; - } -}); - -// node_modules/uc.micro/categories/Z/regex.js -var require_regex5 = __commonJS({ - "node_modules/uc.micro/categories/Z/regex.js"(exports, module2) { - module2.exports = /[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/; - } -}); - -// node_modules/uc.micro/index.js -var require_uc = __commonJS({ - "node_modules/uc.micro/index.js"(exports) { - "use strict"; - exports.Any = require_regex2(); - exports.Cc = require_regex3(); - exports.Cf = require_regex4(); - exports.P = require_regex(); - exports.Z = require_regex5(); - } -}); - -// node_modules/markdown-it/lib/common/utils.js -var require_utils = __commonJS({ - "node_modules/markdown-it/lib/common/utils.js"(exports) { - "use strict"; - function _class(obj) { - return Object.prototype.toString.call(obj); - } - function isString(obj) { - return _class(obj) === "[object String]"; - } - var _hasOwnProperty = Object.prototype.hasOwnProperty; - function has(object, key) { - return _hasOwnProperty.call(object, key); - } - function assign(obj) { - var sources = Array.prototype.slice.call(arguments, 1); - sources.forEach(function(source) { - if (!source) { - return; - } - if (typeof source !== "object") { - throw new TypeError(source + "must be object"); - } - Object.keys(source).forEach(function(key) { - obj[key] = source[key]; - }); - }); - return obj; - } - function arrayReplaceAt(src, pos, newElements) { - return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1)); - } - function isValidEntityCode(c2) { - if (c2 >= 55296 && c2 <= 57343) { - return false; - } - if (c2 >= 64976 && c2 <= 65007) { - return false; - } - if ((c2 & 65535) === 65535 || (c2 & 65535) === 65534) { - return false; - } - if (c2 >= 0 && c2 <= 8) { - return false; - } - if (c2 === 11) { - return false; - } - if (c2 >= 14 && c2 <= 31) { - return false; - } - if (c2 >= 127 && c2 <= 159) { - return false; - } - if (c2 > 1114111) { - return false; - } - return true; - } - function fromCodePoint(c2) { - if (c2 > 65535) { - c2 -= 65536; - var surrogate1 = 55296 + (c2 >> 10), surrogate2 = 56320 + (c2 & 1023); - return String.fromCharCode(surrogate1, surrogate2); - } - return String.fromCharCode(c2); - } - var UNESCAPE_MD_RE = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g; - var ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi; - var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + "|" + ENTITY_RE.source, "gi"); - var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i; - var entities = require_entities2(); - function replaceEntityPattern(match, name) { - var code = 0; - if (has(entities, name)) { - return entities[name]; - } - if (name.charCodeAt(0) === 35 && DIGITAL_ENTITY_TEST_RE.test(name)) { - code = name[1].toLowerCase() === "x" ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10); - if (isValidEntityCode(code)) { - return fromCodePoint(code); - } - } - return match; - } - function unescapeMd(str) { - if (str.indexOf("\\") < 0) { - return str; - } - return str.replace(UNESCAPE_MD_RE, "$1"); - } - function unescapeAll(str) { - if (str.indexOf("\\") < 0 && str.indexOf("&") < 0) { - return str; - } - return str.replace(UNESCAPE_ALL_RE, function(match, escaped, entity) { - if (escaped) { - return escaped; - } - return replaceEntityPattern(match, entity); - }); - } - var HTML_ESCAPE_TEST_RE = /[&<>"]/; - var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g; - var HTML_REPLACEMENTS = { - "&": "&", - "<": "<", - ">": ">", - '"': """ - }; - function replaceUnsafeChar(ch) { - return HTML_REPLACEMENTS[ch]; - } - function escapeHtml(str) { - if (HTML_ESCAPE_TEST_RE.test(str)) { - return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar); - } - return str; - } - var REGEXP_ESCAPE_RE = /[.?*+^$[\]\\(){}|-]/g; - function escapeRE(str) { - return str.replace(REGEXP_ESCAPE_RE, "\\$&"); - } - function isSpace(code) { - switch (code) { - case 9: - case 32: - return true; - } - return false; - } - function isWhiteSpace(code) { - if (code >= 8192 && code <= 8202) { - return true; - } - switch (code) { - case 9: - case 10: - case 11: - case 12: - case 13: - case 32: - case 160: - case 5760: - case 8239: - case 8287: - case 12288: - return true; - } - return false; - } - var UNICODE_PUNCT_RE = require_regex(); - function isPunctChar(ch) { - return UNICODE_PUNCT_RE.test(ch); - } - function isMdAsciiPunct(ch) { - switch (ch) { - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - case 58: - case 59: - case 60: - case 61: - case 62: - case 63: - case 64: - case 91: - case 92: - case 93: - case 94: - case 95: - case 96: - case 123: - case 124: - case 125: - case 126: - return true; - default: - return false; - } - } - function normalizeReference(str) { - str = str.trim().replace(/\s+/g, " "); - if ("\u1E9E".toLowerCase() === "\u1E7E") { - str = str.replace(/ẞ/g, "\xDF"); - } - return str.toLowerCase().toUpperCase(); - } - exports.lib = {}; - exports.lib.mdurl = require_mdurl(); - exports.lib.ucmicro = require_uc(); - exports.assign = assign; - exports.isString = isString; - exports.has = has; - exports.unescapeMd = unescapeMd; - exports.unescapeAll = unescapeAll; - exports.isValidEntityCode = isValidEntityCode; - exports.fromCodePoint = fromCodePoint; - exports.escapeHtml = escapeHtml; - exports.arrayReplaceAt = arrayReplaceAt; - exports.isSpace = isSpace; - exports.isWhiteSpace = isWhiteSpace; - exports.isMdAsciiPunct = isMdAsciiPunct; - exports.isPunctChar = isPunctChar; - exports.escapeRE = escapeRE; - exports.normalizeReference = normalizeReference; - } -}); - -// node_modules/markdown-it/lib/helpers/parse_link_label.js -var require_parse_link_label = __commonJS({ - "node_modules/markdown-it/lib/helpers/parse_link_label.js"(exports, module2) { - "use strict"; - module2.exports = function parseLinkLabel(state, start, disableNested) { - var level, found, marker, prevPos, labelEnd = -1, max = state.posMax, oldPos = state.pos; - state.pos = start + 1; - level = 1; - while (state.pos < max) { - marker = state.src.charCodeAt(state.pos); - if (marker === 93) { - level--; - if (level === 0) { - found = true; - break; - } - } - prevPos = state.pos; - state.md.inline.skipToken(state); - if (marker === 91) { - if (prevPos === state.pos - 1) { - level++; - } else if (disableNested) { - state.pos = oldPos; - return -1; - } - } - } - if (found) { - labelEnd = state.pos; - } - state.pos = oldPos; - return labelEnd; - }; - } -}); - -// node_modules/markdown-it/lib/helpers/parse_link_destination.js -var require_parse_link_destination = __commonJS({ - "node_modules/markdown-it/lib/helpers/parse_link_destination.js"(exports, module2) { - "use strict"; - var unescapeAll = require_utils().unescapeAll; - module2.exports = function parseLinkDestination(str, pos, max) { - var code, level, lines = 0, start = pos, result = { - ok: false, - pos: 0, - lines: 0, - str: "" - }; - if (str.charCodeAt(pos) === 60) { - pos++; - while (pos < max) { - code = str.charCodeAt(pos); - if (code === 10) { - return result; - } - if (code === 60) { - return result; - } - if (code === 62) { - result.pos = pos + 1; - result.str = unescapeAll(str.slice(start + 1, pos)); - result.ok = true; - return result; - } - if (code === 92 && pos + 1 < max) { - pos += 2; - continue; - } - pos++; - } - return result; - } - level = 0; - while (pos < max) { - code = str.charCodeAt(pos); - if (code === 32) { - break; - } - if (code < 32 || code === 127) { - break; - } - if (code === 92 && pos + 1 < max) { - if (str.charCodeAt(pos + 1) === 32) { - break; - } - pos += 2; - continue; - } - if (code === 40) { - level++; - if (level > 32) { - return result; - } - } - if (code === 41) { - if (level === 0) { - break; - } - level--; - } - pos++; - } - if (start === pos) { - return result; - } - if (level !== 0) { - return result; - } - result.str = unescapeAll(str.slice(start, pos)); - result.lines = lines; - result.pos = pos; - result.ok = true; - return result; - }; - } -}); - -// node_modules/markdown-it/lib/helpers/parse_link_title.js -var require_parse_link_title = __commonJS({ - "node_modules/markdown-it/lib/helpers/parse_link_title.js"(exports, module2) { - "use strict"; - var unescapeAll = require_utils().unescapeAll; - module2.exports = function parseLinkTitle(str, pos, max) { - var code, marker, lines = 0, start = pos, result = { - ok: false, - pos: 0, - lines: 0, - str: "" - }; - if (pos >= max) { - return result; - } - marker = str.charCodeAt(pos); - if (marker !== 34 && marker !== 39 && marker !== 40) { - return result; - } - pos++; - if (marker === 40) { - marker = 41; - } - while (pos < max) { - code = str.charCodeAt(pos); - if (code === marker) { - result.pos = pos + 1; - result.lines = lines; - result.str = unescapeAll(str.slice(start + 1, pos)); - result.ok = true; - return result; - } else if (code === 40 && marker === 41) { - return result; - } else if (code === 10) { - lines++; - } else if (code === 92 && pos + 1 < max) { - pos++; - if (str.charCodeAt(pos) === 10) { - lines++; - } - } - pos++; - } - return result; - }; - } -}); - -// node_modules/markdown-it/lib/helpers/index.js -var require_helpers = __commonJS({ - "node_modules/markdown-it/lib/helpers/index.js"(exports) { - "use strict"; - exports.parseLinkLabel = require_parse_link_label(); - exports.parseLinkDestination = require_parse_link_destination(); - exports.parseLinkTitle = require_parse_link_title(); - } -}); - -// node_modules/markdown-it/lib/renderer.js -var require_renderer = __commonJS({ - "node_modules/markdown-it/lib/renderer.js"(exports, module2) { - "use strict"; - var assign = require_utils().assign; - var unescapeAll = require_utils().unescapeAll; - var escapeHtml = require_utils().escapeHtml; - var default_rules = {}; - default_rules.code_inline = function(tokens, idx, options, env, slf) { - var token = tokens[idx]; - return "" + escapeHtml(tokens[idx].content) + ""; - }; - default_rules.code_block = function(tokens, idx, options, env, slf) { - var token = tokens[idx]; - return "" + escapeHtml(tokens[idx].content) + "\n"; - }; - default_rules.fence = function(tokens, idx, options, env, slf) { - var token = tokens[idx], info = token.info ? unescapeAll(token.info).trim() : "", langName = "", langAttrs = "", highlighted, i2, arr, tmpAttrs, tmpToken; - if (info) { - arr = info.split(/(\s+)/g); - langName = arr[0]; - langAttrs = arr.slice(2).join(""); - } - if (options.highlight) { - highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content); - } else { - highlighted = escapeHtml(token.content); - } - if (highlighted.indexOf("" + highlighted + "\n"; - } - return "
" + highlighted + "
\n"; - }; - default_rules.image = function(tokens, idx, options, env, slf) { - var token = tokens[idx]; - token.attrs[token.attrIndex("alt")][1] = slf.renderInlineAsText(token.children, options, env); - return slf.renderToken(tokens, idx, options); - }; - default_rules.hardbreak = function(tokens, idx, options) { - return options.xhtmlOut ? "
\n" : "
\n"; - }; - default_rules.softbreak = function(tokens, idx, options) { - return options.breaks ? options.xhtmlOut ? "
\n" : "
\n" : "\n"; - }; - default_rules.text = function(tokens, idx) { - return escapeHtml(tokens[idx].content); - }; - default_rules.html_block = function(tokens, idx) { - return tokens[idx].content; - }; - default_rules.html_inline = function(tokens, idx) { - return tokens[idx].content; - }; - function Renderer() { - this.rules = assign({}, default_rules); - } - Renderer.prototype.renderAttrs = function renderAttrs(token) { - var i2, l2, result; - if (!token.attrs) { - return ""; - } - result = ""; - for (i2 = 0, l2 = token.attrs.length; i2 < l2; i2++) { - result += " " + escapeHtml(token.attrs[i2][0]) + '="' + escapeHtml(token.attrs[i2][1]) + '"'; - } - return result; - }; - Renderer.prototype.renderToken = function renderToken(tokens, idx, options) { - var nextToken, result = "", needLf = false, token = tokens[idx]; - if (token.hidden) { - return ""; - } - if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) { - result += "\n"; - } - result += (token.nesting === -1 ? "\n" : ">"; - return result; - }; - Renderer.prototype.renderInline = function(tokens, options, env) { - var type, result = "", rules = this.rules; - for (var i2 = 0, len = tokens.length; i2 < len; i2++) { - type = tokens[i2].type; - if (typeof rules[type] !== "undefined") { - result += rules[type](tokens, i2, options, env, this); - } else { - result += this.renderToken(tokens, i2, options); - } - } - return result; - }; - Renderer.prototype.renderInlineAsText = function(tokens, options, env) { - var result = ""; - for (var i2 = 0, len = tokens.length; i2 < len; i2++) { - if (tokens[i2].type === "text") { - result += tokens[i2].content; - } else if (tokens[i2].type === "image") { - result += this.renderInlineAsText(tokens[i2].children, options, env); - } else if (tokens[i2].type === "softbreak") { - result += "\n"; - } - } - return result; - }; - Renderer.prototype.render = function(tokens, options, env) { - var i2, len, type, result = "", rules = this.rules; - for (i2 = 0, len = tokens.length; i2 < len; i2++) { - type = tokens[i2].type; - if (type === "inline") { - result += this.renderInline(tokens[i2].children, options, env); - } else if (typeof rules[type] !== "undefined") { - result += rules[tokens[i2].type](tokens, i2, options, env, this); - } else { - result += this.renderToken(tokens, i2, options, env); - } - } - return result; - }; - module2.exports = Renderer; - } -}); - -// node_modules/markdown-it/lib/ruler.js -var require_ruler = __commonJS({ - "node_modules/markdown-it/lib/ruler.js"(exports, module2) { - "use strict"; - function Ruler() { - this.__rules__ = []; - this.__cache__ = null; - } - Ruler.prototype.__find__ = function(name) { - for (var i2 = 0; i2 < this.__rules__.length; i2++) { - if (this.__rules__[i2].name === name) { - return i2; - } - } - return -1; - }; - Ruler.prototype.__compile__ = function() { - var self2 = this; - var chains = [""]; - self2.__rules__.forEach(function(rule) { - if (!rule.enabled) { - return; - } - rule.alt.forEach(function(altName) { - if (chains.indexOf(altName) < 0) { - chains.push(altName); - } - }); - }); - self2.__cache__ = {}; - chains.forEach(function(chain) { - self2.__cache__[chain] = []; - self2.__rules__.forEach(function(rule) { - if (!rule.enabled) { - return; - } - if (chain && rule.alt.indexOf(chain) < 0) { - return; - } - self2.__cache__[chain].push(rule.fn); - }); - }); - }; - Ruler.prototype.at = function(name, fn2, options) { - var index = this.__find__(name); - var opt = options || {}; - if (index === -1) { - throw new Error("Parser rule not found: " + name); - } - this.__rules__[index].fn = fn2; - this.__rules__[index].alt = opt.alt || []; - this.__cache__ = null; - }; - Ruler.prototype.before = function(beforeName, ruleName, fn2, options) { - var index = this.__find__(beforeName); - var opt = options || {}; - if (index === -1) { - throw new Error("Parser rule not found: " + beforeName); - } - this.__rules__.splice(index, 0, { - name: ruleName, - enabled: true, - fn: fn2, - alt: opt.alt || [] - }); - this.__cache__ = null; - }; - Ruler.prototype.after = function(afterName, ruleName, fn2, options) { - var index = this.__find__(afterName); - var opt = options || {}; - if (index === -1) { - throw new Error("Parser rule not found: " + afterName); - } - this.__rules__.splice(index + 1, 0, { - name: ruleName, - enabled: true, - fn: fn2, - alt: opt.alt || [] - }); - this.__cache__ = null; - }; - Ruler.prototype.push = function(ruleName, fn2, options) { - var opt = options || {}; - this.__rules__.push({ - name: ruleName, - enabled: true, - fn: fn2, - alt: opt.alt || [] - }); - this.__cache__ = null; - }; - Ruler.prototype.enable = function(list, ignoreInvalid) { - if (!Array.isArray(list)) { - list = [list]; - } - var result = []; - list.forEach(function(name) { - var idx = this.__find__(name); - if (idx < 0) { - if (ignoreInvalid) { - return; - } - throw new Error("Rules manager: invalid rule name " + name); - } - this.__rules__[idx].enabled = true; - result.push(name); - }, this); - this.__cache__ = null; - return result; - }; - Ruler.prototype.enableOnly = function(list, ignoreInvalid) { - if (!Array.isArray(list)) { - list = [list]; - } - this.__rules__.forEach(function(rule) { - rule.enabled = false; - }); - this.enable(list, ignoreInvalid); - }; - Ruler.prototype.disable = function(list, ignoreInvalid) { - if (!Array.isArray(list)) { - list = [list]; - } - var result = []; - list.forEach(function(name) { - var idx = this.__find__(name); - if (idx < 0) { - if (ignoreInvalid) { - return; - } - throw new Error("Rules manager: invalid rule name " + name); - } - this.__rules__[idx].enabled = false; - result.push(name); - }, this); - this.__cache__ = null; - return result; - }; - Ruler.prototype.getRules = function(chainName) { - if (this.__cache__ === null) { - this.__compile__(); - } - return this.__cache__[chainName] || []; - }; - module2.exports = Ruler; - } -}); - -// node_modules/markdown-it/lib/rules_core/normalize.js -var require_normalize = __commonJS({ - "node_modules/markdown-it/lib/rules_core/normalize.js"(exports, module2) { - "use strict"; - var NEWLINES_RE = /\r\n?|\n/g; - var NULL_RE = /\0/g; - module2.exports = function normalize(state) { - var str; - str = state.src.replace(NEWLINES_RE, "\n"); - str = str.replace(NULL_RE, "\uFFFD"); - state.src = str; - }; - } -}); - -// node_modules/markdown-it/lib/rules_core/block.js -var require_block = __commonJS({ - "node_modules/markdown-it/lib/rules_core/block.js"(exports, module2) { - "use strict"; - module2.exports = function block(state) { - var token; - if (state.inlineMode) { - token = new state.Token("inline", "", 0); - token.content = state.src; - token.map = [0, 1]; - token.children = []; - state.tokens.push(token); - } else { - state.md.block.parse(state.src, state.md, state.env, state.tokens); - } - }; - } -}); - -// node_modules/markdown-it/lib/rules_core/inline.js -var require_inline = __commonJS({ - "node_modules/markdown-it/lib/rules_core/inline.js"(exports, module2) { - "use strict"; - module2.exports = function inline(state) { - var tokens = state.tokens, tok, i2, l2; - for (i2 = 0, l2 = tokens.length; i2 < l2; i2++) { - tok = tokens[i2]; - if (tok.type === "inline") { - state.md.inline.parse(tok.content, state.md, state.env, tok.children); - } - } - }; - } -}); - -// node_modules/markdown-it/lib/rules_core/linkify.js -var require_linkify = __commonJS({ - "node_modules/markdown-it/lib/rules_core/linkify.js"(exports, module2) { - "use strict"; - var arrayReplaceAt = require_utils().arrayReplaceAt; - function isLinkOpen(str) { - return /^\s]/i.test(str); - } - function isLinkClose(str) { - return /^<\/a\s*>/i.test(str); - } - module2.exports = function linkify(state) { - var i2, j2, l2, tokens, token, currentToken, nodes, ln2, text, pos, lastPos, level, htmlLinkLevel, url, fullUrl, urlText, blockTokens = state.tokens, links; - if (!state.md.options.linkify) { - return; - } - for (j2 = 0, l2 = blockTokens.length; j2 < l2; j2++) { - if (blockTokens[j2].type !== "inline" || !state.md.linkify.pretest(blockTokens[j2].content)) { - continue; - } - tokens = blockTokens[j2].children; - htmlLinkLevel = 0; - for (i2 = tokens.length - 1; i2 >= 0; i2--) { - currentToken = tokens[i2]; - if (currentToken.type === "link_close") { - i2--; - while (tokens[i2].level !== currentToken.level && tokens[i2].type !== "link_open") { - i2--; - } - continue; - } - if (currentToken.type === "html_inline") { - if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) { - htmlLinkLevel--; - } - if (isLinkClose(currentToken.content)) { - htmlLinkLevel++; - } - } - if (htmlLinkLevel > 0) { - continue; - } - if (currentToken.type === "text" && state.md.linkify.test(currentToken.content)) { - text = currentToken.content; - links = state.md.linkify.match(text); - nodes = []; - level = currentToken.level; - lastPos = 0; - if (links.length > 0 && links[0].index === 0 && i2 > 0 && tokens[i2 - 1].type === "text_special") { - links = links.slice(1); - } - for (ln2 = 0; ln2 < links.length; ln2++) { - url = links[ln2].url; - fullUrl = state.md.normalizeLink(url); - if (!state.md.validateLink(fullUrl)) { - continue; - } - urlText = links[ln2].text; - if (!links[ln2].schema) { - urlText = state.md.normalizeLinkText("http://" + urlText).replace(/^http:\/\//, ""); - } else if (links[ln2].schema === "mailto:" && !/^mailto:/i.test(urlText)) { - urlText = state.md.normalizeLinkText("mailto:" + urlText).replace(/^mailto:/, ""); - } else { - urlText = state.md.normalizeLinkText(urlText); - } - pos = links[ln2].index; - if (pos > lastPos) { - token = new state.Token("text", "", 0); - token.content = text.slice(lastPos, pos); - token.level = level; - nodes.push(token); - } - token = new state.Token("link_open", "a", 1); - token.attrs = [["href", fullUrl]]; - token.level = level++; - token.markup = "linkify"; - token.info = "auto"; - nodes.push(token); - token = new state.Token("text", "", 0); - token.content = urlText; - token.level = level; - nodes.push(token); - token = new state.Token("link_close", "a", -1); - token.level = --level; - token.markup = "linkify"; - token.info = "auto"; - nodes.push(token); - lastPos = links[ln2].lastIndex; - } - if (lastPos < text.length) { - token = new state.Token("text", "", 0); - token.content = text.slice(lastPos); - token.level = level; - nodes.push(token); - } - blockTokens[j2].children = tokens = arrayReplaceAt(tokens, i2, nodes); - } - } - } - }; - } -}); - -// node_modules/markdown-it/lib/rules_core/replacements.js -var require_replacements = __commonJS({ - "node_modules/markdown-it/lib/rules_core/replacements.js"(exports, module2) { - "use strict"; - var RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/; - var SCOPED_ABBR_TEST_RE = /\((c|tm|r)\)/i; - var SCOPED_ABBR_RE = /\((c|tm|r)\)/ig; - var SCOPED_ABBR = { - c: "\xA9", - r: "\xAE", - tm: "\u2122" - }; - function replaceFn(match, name) { - return SCOPED_ABBR[name.toLowerCase()]; - } - function replace_scoped(inlineTokens) { - var i2, token, inside_autolink = 0; - for (i2 = inlineTokens.length - 1; i2 >= 0; i2--) { - token = inlineTokens[i2]; - if (token.type === "text" && !inside_autolink) { - token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn); - } - if (token.type === "link_open" && token.info === "auto") { - inside_autolink--; - } - if (token.type === "link_close" && token.info === "auto") { - inside_autolink++; - } - } - } - function replace_rare(inlineTokens) { - var i2, token, inside_autolink = 0; - for (i2 = inlineTokens.length - 1; i2 >= 0; i2--) { - token = inlineTokens[i2]; - if (token.type === "text" && !inside_autolink) { - if (RARE_RE.test(token.content)) { - token.content = token.content.replace(/\+-/g, "\xB1").replace(/\.{2,}/g, "\u2026").replace(/([?!])…/g, "$1..").replace(/([?!]){4,}/g, "$1$1$1").replace(/,{2,}/g, ",").replace(/(^|[^-])---(?=[^-]|$)/mg, "$1\u2014").replace(/(^|\s)--(?=\s|$)/mg, "$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/mg, "$1\u2013"); - } - } - if (token.type === "link_open" && token.info === "auto") { - inside_autolink--; - } - if (token.type === "link_close" && token.info === "auto") { - inside_autolink++; - } - } - } - module2.exports = function replace(state) { - var blkIdx; - if (!state.md.options.typographer) { - return; - } - for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { - if (state.tokens[blkIdx].type !== "inline") { - continue; - } - if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) { - replace_scoped(state.tokens[blkIdx].children); - } - if (RARE_RE.test(state.tokens[blkIdx].content)) { - replace_rare(state.tokens[blkIdx].children); - } - } - }; - } -}); - -// node_modules/markdown-it/lib/rules_core/smartquotes.js -var require_smartquotes = __commonJS({ - "node_modules/markdown-it/lib/rules_core/smartquotes.js"(exports, module2) { - "use strict"; - var isWhiteSpace = require_utils().isWhiteSpace; - var isPunctChar = require_utils().isPunctChar; - var isMdAsciiPunct = require_utils().isMdAsciiPunct; - var QUOTE_TEST_RE = /['"]/; - var QUOTE_RE = /['"]/g; - var APOSTROPHE = "\u2019"; - function replaceAt(str, index, ch) { - return str.slice(0, index) + ch + str.slice(index + 1); - } - function process_inlines(tokens, state) { - var i2, token, text, t2, pos, max, thisLevel, item, lastChar, nextChar, isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, canOpen, canClose, j2, isSingle, stack, openQuote, closeQuote; - stack = []; - for (i2 = 0; i2 < tokens.length; i2++) { - token = tokens[i2]; - thisLevel = tokens[i2].level; - for (j2 = stack.length - 1; j2 >= 0; j2--) { - if (stack[j2].level <= thisLevel) { - break; - } - } - stack.length = j2 + 1; - if (token.type !== "text") { - continue; - } - text = token.content; - pos = 0; - max = text.length; - OUTER: - while (pos < max) { - QUOTE_RE.lastIndex = pos; - t2 = QUOTE_RE.exec(text); - if (!t2) { - break; - } - canOpen = canClose = true; - pos = t2.index + 1; - isSingle = t2[0] === "'"; - lastChar = 32; - if (t2.index - 1 >= 0) { - lastChar = text.charCodeAt(t2.index - 1); - } else { - for (j2 = i2 - 1; j2 >= 0; j2--) { - if (tokens[j2].type === "softbreak" || tokens[j2].type === "hardbreak") - break; - if (!tokens[j2].content) - continue; - lastChar = tokens[j2].content.charCodeAt(tokens[j2].content.length - 1); - break; - } - } - nextChar = 32; - if (pos < max) { - nextChar = text.charCodeAt(pos); - } else { - for (j2 = i2 + 1; j2 < tokens.length; j2++) { - if (tokens[j2].type === "softbreak" || tokens[j2].type === "hardbreak") - break; - if (!tokens[j2].content) - continue; - nextChar = tokens[j2].content.charCodeAt(0); - break; - } - } - isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)); - isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)); - isLastWhiteSpace = isWhiteSpace(lastChar); - isNextWhiteSpace = isWhiteSpace(nextChar); - if (isNextWhiteSpace) { - canOpen = false; - } else if (isNextPunctChar) { - if (!(isLastWhiteSpace || isLastPunctChar)) { - canOpen = false; - } - } - if (isLastWhiteSpace) { - canClose = false; - } else if (isLastPunctChar) { - if (!(isNextWhiteSpace || isNextPunctChar)) { - canClose = false; - } - } - if (nextChar === 34 && t2[0] === '"') { - if (lastChar >= 48 && lastChar <= 57) { - canClose = canOpen = false; - } - } - if (canOpen && canClose) { - canOpen = isLastPunctChar; - canClose = isNextPunctChar; - } - if (!canOpen && !canClose) { - if (isSingle) { - token.content = replaceAt(token.content, t2.index, APOSTROPHE); - } - continue; - } - if (canClose) { - for (j2 = stack.length - 1; j2 >= 0; j2--) { - item = stack[j2]; - if (stack[j2].level < thisLevel) { - break; - } - if (item.single === isSingle && stack[j2].level === thisLevel) { - item = stack[j2]; - if (isSingle) { - openQuote = state.md.options.quotes[2]; - closeQuote = state.md.options.quotes[3]; - } else { - openQuote = state.md.options.quotes[0]; - closeQuote = state.md.options.quotes[1]; - } - token.content = replaceAt(token.content, t2.index, closeQuote); - tokens[item.token].content = replaceAt( - tokens[item.token].content, - item.pos, - openQuote - ); - pos += closeQuote.length - 1; - if (item.token === i2) { - pos += openQuote.length - 1; - } - text = token.content; - max = text.length; - stack.length = j2; - continue OUTER; - } - } - } - if (canOpen) { - stack.push({ - token: i2, - pos: t2.index, - single: isSingle, - level: thisLevel - }); - } else if (canClose && isSingle) { - token.content = replaceAt(token.content, t2.index, APOSTROPHE); - } - } - } - } - module2.exports = function smartquotes(state) { - var blkIdx; - if (!state.md.options.typographer) { - return; - } - for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { - if (state.tokens[blkIdx].type !== "inline" || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) { - continue; - } - process_inlines(state.tokens[blkIdx].children, state); - } - }; - } -}); - -// node_modules/markdown-it/lib/rules_core/text_join.js -var require_text_join = __commonJS({ - "node_modules/markdown-it/lib/rules_core/text_join.js"(exports, module2) { - "use strict"; - module2.exports = function text_join(state) { - var j2, l2, tokens, curr, max, last, blockTokens = state.tokens; - for (j2 = 0, l2 = blockTokens.length; j2 < l2; j2++) { - if (blockTokens[j2].type !== "inline") - continue; - tokens = blockTokens[j2].children; - max = tokens.length; - for (curr = 0; curr < max; curr++) { - if (tokens[curr].type === "text_special") { - tokens[curr].type = "text"; - } - } - for (curr = last = 0; curr < max; curr++) { - if (tokens[curr].type === "text" && curr + 1 < max && tokens[curr + 1].type === "text") { - tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content; - } else { - if (curr !== last) { - tokens[last] = tokens[curr]; - } - last++; - } - } - if (curr !== last) { - tokens.length = last; - } - } - }; - } -}); - -// node_modules/markdown-it/lib/token.js -var require_token = __commonJS({ - "node_modules/markdown-it/lib/token.js"(exports, module2) { - "use strict"; - function Token(type, tag, nesting) { - this.type = type; - this.tag = tag; - this.attrs = null; - this.map = null; - this.nesting = nesting; - this.level = 0; - this.children = null; - this.content = ""; - this.markup = ""; - this.info = ""; - this.meta = null; - this.block = false; - this.hidden = false; - } - Token.prototype.attrIndex = function attrIndex(name) { - var attrs, i2, len; - if (!this.attrs) { - return -1; - } - attrs = this.attrs; - for (i2 = 0, len = attrs.length; i2 < len; i2++) { - if (attrs[i2][0] === name) { - return i2; - } - } - return -1; - }; - Token.prototype.attrPush = function attrPush(attrData) { - if (this.attrs) { - this.attrs.push(attrData); - } else { - this.attrs = [attrData]; - } - }; - Token.prototype.attrSet = function attrSet(name, value) { - var idx = this.attrIndex(name), attrData = [name, value]; - if (idx < 0) { - this.attrPush(attrData); - } else { - this.attrs[idx] = attrData; - } - }; - Token.prototype.attrGet = function attrGet(name) { - var idx = this.attrIndex(name), value = null; - if (idx >= 0) { - value = this.attrs[idx][1]; - } - return value; - }; - Token.prototype.attrJoin = function attrJoin(name, value) { - var idx = this.attrIndex(name); - if (idx < 0) { - this.attrPush([name, value]); - } else { - this.attrs[idx][1] = this.attrs[idx][1] + " " + value; - } - }; - module2.exports = Token; - } -}); - -// node_modules/markdown-it/lib/rules_core/state_core.js -var require_state_core = __commonJS({ - "node_modules/markdown-it/lib/rules_core/state_core.js"(exports, module2) { - "use strict"; - var Token = require_token(); - function StateCore(src, md2, env) { - this.src = src; - this.env = env; - this.tokens = []; - this.inlineMode = false; - this.md = md2; - } - StateCore.prototype.Token = Token; - module2.exports = StateCore; - } -}); - -// node_modules/markdown-it/lib/parser_core.js -var require_parser_core = __commonJS({ - "node_modules/markdown-it/lib/parser_core.js"(exports, module2) { - "use strict"; - var Ruler = require_ruler(); - var _rules = [ - ["normalize", require_normalize()], - ["block", require_block()], - ["inline", require_inline()], - ["linkify", require_linkify()], - ["replacements", require_replacements()], - ["smartquotes", require_smartquotes()], - ["text_join", require_text_join()] - ]; - function Core() { - this.ruler = new Ruler(); - for (var i2 = 0; i2 < _rules.length; i2++) { - this.ruler.push(_rules[i2][0], _rules[i2][1]); - } - } - Core.prototype.process = function(state) { - var i2, l2, rules; - rules = this.ruler.getRules(""); - for (i2 = 0, l2 = rules.length; i2 < l2; i2++) { - rules[i2](state); - } - }; - Core.prototype.State = require_state_core(); - module2.exports = Core; - } -}); - -// node_modules/markdown-it/lib/rules_block/table.js -var require_table = __commonJS({ - "node_modules/markdown-it/lib/rules_block/table.js"(exports, module2) { - "use strict"; - var isSpace = require_utils().isSpace; - function getLine(state, line) { - var pos = state.bMarks[line] + state.tShift[line], max = state.eMarks[line]; - return state.src.slice(pos, max); - } - function escapedSplit(str) { - var result = [], pos = 0, max = str.length, ch, isEscaped = false, lastPos = 0, current = ""; - ch = str.charCodeAt(pos); - while (pos < max) { - if (ch === 124) { - if (!isEscaped) { - result.push(current + str.substring(lastPos, pos)); - current = ""; - lastPos = pos + 1; - } else { - current += str.substring(lastPos, pos - 1); - lastPos = pos; - } - } - isEscaped = ch === 92; - pos++; - ch = str.charCodeAt(pos); - } - result.push(current + str.substring(lastPos)); - return result; - } - module2.exports = function table(state, startLine, endLine, silent) { - var ch, lineText, pos, i2, l2, nextLine, columns, columnCount, token, aligns, t2, tableLines, tbodyLines, oldParentType, terminate, terminatorRules, firstCh, secondCh; - if (startLine + 2 > endLine) { - return false; - } - nextLine = startLine + 1; - if (state.sCount[nextLine] < state.blkIndent) { - return false; - } - if (state.sCount[nextLine] - state.blkIndent >= 4) { - return false; - } - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - if (pos >= state.eMarks[nextLine]) { - return false; - } - firstCh = state.src.charCodeAt(pos++); - if (firstCh !== 124 && firstCh !== 45 && firstCh !== 58) { - return false; - } - if (pos >= state.eMarks[nextLine]) { - return false; - } - secondCh = state.src.charCodeAt(pos++); - if (secondCh !== 124 && secondCh !== 45 && secondCh !== 58 && !isSpace(secondCh)) { - return false; - } - if (firstCh === 45 && isSpace(secondCh)) { - return false; - } - while (pos < state.eMarks[nextLine]) { - ch = state.src.charCodeAt(pos); - if (ch !== 124 && ch !== 45 && ch !== 58 && !isSpace(ch)) { - return false; - } - pos++; - } - lineText = getLine(state, startLine + 1); - columns = lineText.split("|"); - aligns = []; - for (i2 = 0; i2 < columns.length; i2++) { - t2 = columns[i2].trim(); - if (!t2) { - if (i2 === 0 || i2 === columns.length - 1) { - continue; - } else { - return false; - } - } - if (!/^:?-+:?$/.test(t2)) { - return false; - } - if (t2.charCodeAt(t2.length - 1) === 58) { - aligns.push(t2.charCodeAt(0) === 58 ? "center" : "right"); - } else if (t2.charCodeAt(0) === 58) { - aligns.push("left"); - } else { - aligns.push(""); - } - } - lineText = getLine(state, startLine).trim(); - if (lineText.indexOf("|") === -1) { - return false; - } - if (state.sCount[startLine] - state.blkIndent >= 4) { - return false; - } - columns = escapedSplit(lineText); - if (columns.length && columns[0] === "") - columns.shift(); - if (columns.length && columns[columns.length - 1] === "") - columns.pop(); - columnCount = columns.length; - if (columnCount === 0 || columnCount !== aligns.length) { - return false; - } - if (silent) { - return true; - } - oldParentType = state.parentType; - state.parentType = "table"; - terminatorRules = state.md.block.ruler.getRules("blockquote"); - token = state.push("table_open", "table", 1); - token.map = tableLines = [startLine, 0]; - token = state.push("thead_open", "thead", 1); - token.map = [startLine, startLine + 1]; - token = state.push("tr_open", "tr", 1); - token.map = [startLine, startLine + 1]; - for (i2 = 0; i2 < columns.length; i2++) { - token = state.push("th_open", "th", 1); - if (aligns[i2]) { - token.attrs = [["style", "text-align:" + aligns[i2]]]; - } - token = state.push("inline", "", 0); - token.content = columns[i2].trim(); - token.children = []; - token = state.push("th_close", "th", -1); - } - token = state.push("tr_close", "tr", -1); - token = state.push("thead_close", "thead", -1); - for (nextLine = startLine + 2; nextLine < endLine; nextLine++) { - if (state.sCount[nextLine] < state.blkIndent) { - break; - } - terminate = false; - for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { - if (terminatorRules[i2](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { - break; - } - lineText = getLine(state, nextLine).trim(); - if (!lineText) { - break; - } - if (state.sCount[nextLine] - state.blkIndent >= 4) { - break; - } - columns = escapedSplit(lineText); - if (columns.length && columns[0] === "") - columns.shift(); - if (columns.length && columns[columns.length - 1] === "") - columns.pop(); - if (nextLine === startLine + 2) { - token = state.push("tbody_open", "tbody", 1); - token.map = tbodyLines = [startLine + 2, 0]; - } - token = state.push("tr_open", "tr", 1); - token.map = [nextLine, nextLine + 1]; - for (i2 = 0; i2 < columnCount; i2++) { - token = state.push("td_open", "td", 1); - if (aligns[i2]) { - token.attrs = [["style", "text-align:" + aligns[i2]]]; - } - token = state.push("inline", "", 0); - token.content = columns[i2] ? columns[i2].trim() : ""; - token.children = []; - token = state.push("td_close", "td", -1); - } - token = state.push("tr_close", "tr", -1); - } - if (tbodyLines) { - token = state.push("tbody_close", "tbody", -1); - tbodyLines[1] = nextLine; - } - token = state.push("table_close", "table", -1); - tableLines[1] = nextLine; - state.parentType = oldParentType; - state.line = nextLine; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_block/code.js -var require_code = __commonJS({ - "node_modules/markdown-it/lib/rules_block/code.js"(exports, module2) { - "use strict"; - module2.exports = function code(state, startLine, endLine) { - var nextLine, last, token; - if (state.sCount[startLine] - state.blkIndent < 4) { - return false; - } - last = nextLine = startLine + 1; - while (nextLine < endLine) { - if (state.isEmpty(nextLine)) { - nextLine++; - continue; - } - if (state.sCount[nextLine] - state.blkIndent >= 4) { - nextLine++; - last = nextLine; - continue; - } - break; - } - state.line = last; - token = state.push("code_block", "code", 0); - token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + "\n"; - token.map = [startLine, state.line]; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_block/fence.js -var require_fence = __commonJS({ - "node_modules/markdown-it/lib/rules_block/fence.js"(exports, module2) { - "use strict"; - module2.exports = function fence(state, startLine, endLine, silent) { - var marker, len, params, nextLine, mem, token, markup, haveEndMarker = false, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine]; - if (state.sCount[startLine] - state.blkIndent >= 4) { - return false; - } - if (pos + 3 > max) { - return false; - } - marker = state.src.charCodeAt(pos); - if (marker !== 126 && marker !== 96) { - return false; - } - mem = pos; - pos = state.skipChars(pos, marker); - len = pos - mem; - if (len < 3) { - return false; - } - markup = state.src.slice(mem, pos); - params = state.src.slice(pos, max); - if (marker === 96) { - if (params.indexOf(String.fromCharCode(marker)) >= 0) { - return false; - } - } - if (silent) { - return true; - } - nextLine = startLine; - for (; ; ) { - nextLine++; - if (nextLine >= endLine) { - break; - } - pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - if (pos < max && state.sCount[nextLine] < state.blkIndent) { - break; - } - if (state.src.charCodeAt(pos) !== marker) { - continue; - } - if (state.sCount[nextLine] - state.blkIndent >= 4) { - continue; - } - pos = state.skipChars(pos, marker); - if (pos - mem < len) { - continue; - } - pos = state.skipSpaces(pos); - if (pos < max) { - continue; - } - haveEndMarker = true; - break; - } - len = state.sCount[startLine]; - state.line = nextLine + (haveEndMarker ? 1 : 0); - token = state.push("fence", "code", 0); - token.info = params; - token.content = state.getLines(startLine + 1, nextLine, len, true); - token.markup = markup; - token.map = [startLine, state.line]; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_block/blockquote.js -var require_blockquote = __commonJS({ - "node_modules/markdown-it/lib/rules_block/blockquote.js"(exports, module2) { - "use strict"; - var isSpace = require_utils().isSpace; - module2.exports = function blockquote(state, startLine, endLine, silent) { - var adjustTab, ch, i2, initial, l2, lastLineEmpty, lines, nextLine, offset, oldBMarks, oldBSCount, oldIndent, oldParentType, oldSCount, oldTShift, spaceAfterMarker, terminate, terminatorRules, token, isOutdented, oldLineMax = state.lineMax, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine]; - if (state.sCount[startLine] - state.blkIndent >= 4) { - return false; - } - if (state.src.charCodeAt(pos++) !== 62) { - return false; - } - if (silent) { - return true; - } - initial = offset = state.sCount[startLine] + 1; - if (state.src.charCodeAt(pos) === 32) { - pos++; - initial++; - offset++; - adjustTab = false; - spaceAfterMarker = true; - } else if (state.src.charCodeAt(pos) === 9) { - spaceAfterMarker = true; - if ((state.bsCount[startLine] + offset) % 4 === 3) { - pos++; - initial++; - offset++; - adjustTab = false; - } else { - adjustTab = true; - } - } else { - spaceAfterMarker = false; - } - oldBMarks = [state.bMarks[startLine]]; - state.bMarks[startLine] = pos; - while (pos < max) { - ch = state.src.charCodeAt(pos); - if (isSpace(ch)) { - if (ch === 9) { - offset += 4 - (offset + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4; - } else { - offset++; - } - } else { - break; - } - pos++; - } - oldBSCount = [state.bsCount[startLine]]; - state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0); - lastLineEmpty = pos >= max; - oldSCount = [state.sCount[startLine]]; - state.sCount[startLine] = offset - initial; - oldTShift = [state.tShift[startLine]]; - state.tShift[startLine] = pos - state.bMarks[startLine]; - terminatorRules = state.md.block.ruler.getRules("blockquote"); - oldParentType = state.parentType; - state.parentType = "blockquote"; - for (nextLine = startLine + 1; nextLine < endLine; nextLine++) { - isOutdented = state.sCount[nextLine] < state.blkIndent; - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - if (pos >= max) { - break; - } - if (state.src.charCodeAt(pos++) === 62 && !isOutdented) { - initial = offset = state.sCount[nextLine] + 1; - if (state.src.charCodeAt(pos) === 32) { - pos++; - initial++; - offset++; - adjustTab = false; - spaceAfterMarker = true; - } else if (state.src.charCodeAt(pos) === 9) { - spaceAfterMarker = true; - if ((state.bsCount[nextLine] + offset) % 4 === 3) { - pos++; - initial++; - offset++; - adjustTab = false; - } else { - adjustTab = true; - } - } else { - spaceAfterMarker = false; - } - oldBMarks.push(state.bMarks[nextLine]); - state.bMarks[nextLine] = pos; - while (pos < max) { - ch = state.src.charCodeAt(pos); - if (isSpace(ch)) { - if (ch === 9) { - offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4; - } else { - offset++; - } - } else { - break; - } - pos++; - } - lastLineEmpty = pos >= max; - oldBSCount.push(state.bsCount[nextLine]); - state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0); - oldSCount.push(state.sCount[nextLine]); - state.sCount[nextLine] = offset - initial; - oldTShift.push(state.tShift[nextLine]); - state.tShift[nextLine] = pos - state.bMarks[nextLine]; - continue; - } - if (lastLineEmpty) { - break; - } - terminate = false; - for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { - if (terminatorRules[i2](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { - state.lineMax = nextLine; - if (state.blkIndent !== 0) { - oldBMarks.push(state.bMarks[nextLine]); - oldBSCount.push(state.bsCount[nextLine]); - oldTShift.push(state.tShift[nextLine]); - oldSCount.push(state.sCount[nextLine]); - state.sCount[nextLine] -= state.blkIndent; - } - break; - } - oldBMarks.push(state.bMarks[nextLine]); - oldBSCount.push(state.bsCount[nextLine]); - oldTShift.push(state.tShift[nextLine]); - oldSCount.push(state.sCount[nextLine]); - state.sCount[nextLine] = -1; - } - oldIndent = state.blkIndent; - state.blkIndent = 0; - token = state.push("blockquote_open", "blockquote", 1); - token.markup = ">"; - token.map = lines = [startLine, 0]; - state.md.block.tokenize(state, startLine, nextLine); - token = state.push("blockquote_close", "blockquote", -1); - token.markup = ">"; - state.lineMax = oldLineMax; - state.parentType = oldParentType; - lines[1] = state.line; - for (i2 = 0; i2 < oldTShift.length; i2++) { - state.bMarks[i2 + startLine] = oldBMarks[i2]; - state.tShift[i2 + startLine] = oldTShift[i2]; - state.sCount[i2 + startLine] = oldSCount[i2]; - state.bsCount[i2 + startLine] = oldBSCount[i2]; - } - state.blkIndent = oldIndent; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_block/hr.js -var require_hr = __commonJS({ - "node_modules/markdown-it/lib/rules_block/hr.js"(exports, module2) { - "use strict"; - var isSpace = require_utils().isSpace; - module2.exports = function hr(state, startLine, endLine, silent) { - var marker, cnt, ch, token, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine]; - if (state.sCount[startLine] - state.blkIndent >= 4) { - return false; - } - marker = state.src.charCodeAt(pos++); - if (marker !== 42 && marker !== 45 && marker !== 95) { - return false; - } - cnt = 1; - while (pos < max) { - ch = state.src.charCodeAt(pos++); - if (ch !== marker && !isSpace(ch)) { - return false; - } - if (ch === marker) { - cnt++; - } - } - if (cnt < 3) { - return false; - } - if (silent) { - return true; - } - state.line = startLine + 1; - token = state.push("hr", "hr", 0); - token.map = [startLine, state.line]; - token.markup = Array(cnt + 1).join(String.fromCharCode(marker)); - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_block/list.js -var require_list = __commonJS({ - "node_modules/markdown-it/lib/rules_block/list.js"(exports, module2) { - "use strict"; - var isSpace = require_utils().isSpace; - function skipBulletListMarker(state, startLine) { - var marker, pos, max, ch; - pos = state.bMarks[startLine] + state.tShift[startLine]; - max = state.eMarks[startLine]; - marker = state.src.charCodeAt(pos++); - if (marker !== 42 && marker !== 45 && marker !== 43) { - return -1; - } - if (pos < max) { - ch = state.src.charCodeAt(pos); - if (!isSpace(ch)) { - return -1; - } - } - return pos; - } - function skipOrderedListMarker(state, startLine) { - var ch, start = state.bMarks[startLine] + state.tShift[startLine], pos = start, max = state.eMarks[startLine]; - if (pos + 1 >= max) { - return -1; - } - ch = state.src.charCodeAt(pos++); - if (ch < 48 || ch > 57) { - return -1; - } - for (; ; ) { - if (pos >= max) { - return -1; - } - ch = state.src.charCodeAt(pos++); - if (ch >= 48 && ch <= 57) { - if (pos - start >= 10) { - return -1; - } - continue; - } - if (ch === 41 || ch === 46) { - break; - } - return -1; - } - if (pos < max) { - ch = state.src.charCodeAt(pos); - if (!isSpace(ch)) { - return -1; - } - } - return pos; - } - function markTightParagraphs(state, idx) { - var i2, l2, level = state.level + 2; - for (i2 = idx + 2, l2 = state.tokens.length - 2; i2 < l2; i2++) { - if (state.tokens[i2].level === level && state.tokens[i2].type === "paragraph_open") { - state.tokens[i2 + 2].hidden = true; - state.tokens[i2].hidden = true; - i2 += 2; - } - } - } - module2.exports = function list(state, startLine, endLine, silent) { - var ch, contentStart, i2, indent, indentAfterMarker, initial, isOrdered, itemLines, l2, listLines, listTokIdx, markerCharCode, markerValue, max, nextLine, offset, oldListIndent, oldParentType, oldSCount, oldTShift, oldTight, pos, posAfterMarker, prevEmptyEnd, start, terminate, terminatorRules, token, isTerminatingParagraph = false, tight = true; - if (state.sCount[startLine] - state.blkIndent >= 4) { - return false; - } - if (state.listIndent >= 0 && state.sCount[startLine] - state.listIndent >= 4 && state.sCount[startLine] < state.blkIndent) { - return false; - } - if (silent && state.parentType === "paragraph") { - if (state.sCount[startLine] >= state.blkIndent) { - isTerminatingParagraph = true; - } - } - if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) { - isOrdered = true; - start = state.bMarks[startLine] + state.tShift[startLine]; - markerValue = Number(state.src.slice(start, posAfterMarker - 1)); - if (isTerminatingParagraph && markerValue !== 1) - return false; - } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) { - isOrdered = false; - } else { - return false; - } - if (isTerminatingParagraph) { - if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine]) - return false; - } - markerCharCode = state.src.charCodeAt(posAfterMarker - 1); - if (silent) { - return true; - } - listTokIdx = state.tokens.length; - if (isOrdered) { - token = state.push("ordered_list_open", "ol", 1); - if (markerValue !== 1) { - token.attrs = [["start", markerValue]]; - } - } else { - token = state.push("bullet_list_open", "ul", 1); - } - token.map = listLines = [startLine, 0]; - token.markup = String.fromCharCode(markerCharCode); - nextLine = startLine; - prevEmptyEnd = false; - terminatorRules = state.md.block.ruler.getRules("list"); - oldParentType = state.parentType; - state.parentType = "list"; - while (nextLine < endLine) { - pos = posAfterMarker; - max = state.eMarks[nextLine]; - initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]); - while (pos < max) { - ch = state.src.charCodeAt(pos); - if (ch === 9) { - offset += 4 - (offset + state.bsCount[nextLine]) % 4; - } else if (ch === 32) { - offset++; - } else { - break; - } - pos++; - } - contentStart = pos; - if (contentStart >= max) { - indentAfterMarker = 1; - } else { - indentAfterMarker = offset - initial; - } - if (indentAfterMarker > 4) { - indentAfterMarker = 1; - } - indent = initial + indentAfterMarker; - token = state.push("list_item_open", "li", 1); - token.markup = String.fromCharCode(markerCharCode); - token.map = itemLines = [startLine, 0]; - if (isOrdered) { - token.info = state.src.slice(start, posAfterMarker - 1); - } - oldTight = state.tight; - oldTShift = state.tShift[startLine]; - oldSCount = state.sCount[startLine]; - oldListIndent = state.listIndent; - state.listIndent = state.blkIndent; - state.blkIndent = indent; - state.tight = true; - state.tShift[startLine] = contentStart - state.bMarks[startLine]; - state.sCount[startLine] = offset; - if (contentStart >= max && state.isEmpty(startLine + 1)) { - state.line = Math.min(state.line + 2, endLine); - } else { - state.md.block.tokenize(state, startLine, endLine, true); - } - if (!state.tight || prevEmptyEnd) { - tight = false; - } - prevEmptyEnd = state.line - startLine > 1 && state.isEmpty(state.line - 1); - state.blkIndent = state.listIndent; - state.listIndent = oldListIndent; - state.tShift[startLine] = oldTShift; - state.sCount[startLine] = oldSCount; - state.tight = oldTight; - token = state.push("list_item_close", "li", -1); - token.markup = String.fromCharCode(markerCharCode); - nextLine = startLine = state.line; - itemLines[1] = nextLine; - contentStart = state.bMarks[startLine]; - if (nextLine >= endLine) { - break; - } - if (state.sCount[nextLine] < state.blkIndent) { - break; - } - if (state.sCount[startLine] - state.blkIndent >= 4) { - break; - } - terminate = false; - for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { - if (terminatorRules[i2](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { - break; - } - if (isOrdered) { - posAfterMarker = skipOrderedListMarker(state, nextLine); - if (posAfterMarker < 0) { - break; - } - start = state.bMarks[nextLine] + state.tShift[nextLine]; - } else { - posAfterMarker = skipBulletListMarker(state, nextLine); - if (posAfterMarker < 0) { - break; - } - } - if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { - break; - } - } - if (isOrdered) { - token = state.push("ordered_list_close", "ol", -1); - } else { - token = state.push("bullet_list_close", "ul", -1); - } - token.markup = String.fromCharCode(markerCharCode); - listLines[1] = nextLine; - state.line = nextLine; - state.parentType = oldParentType; - if (tight) { - markTightParagraphs(state, listTokIdx); - } - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_block/reference.js -var require_reference = __commonJS({ - "node_modules/markdown-it/lib/rules_block/reference.js"(exports, module2) { - "use strict"; - var normalizeReference = require_utils().normalizeReference; - var isSpace = require_utils().isSpace; - module2.exports = function reference(state, startLine, _endLine, silent) { - var ch, destEndPos, destEndLineNo, endLine, href, i2, l2, label, labelEnd, oldParentType, res, start, str, terminate, terminatorRules, title, lines = 0, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine], nextLine = startLine + 1; - if (state.sCount[startLine] - state.blkIndent >= 4) { - return false; - } - if (state.src.charCodeAt(pos) !== 91) { - return false; - } - while (++pos < max) { - if (state.src.charCodeAt(pos) === 93 && state.src.charCodeAt(pos - 1) !== 92) { - if (pos + 1 === max) { - return false; - } - if (state.src.charCodeAt(pos + 1) !== 58) { - return false; - } - break; - } - } - endLine = state.lineMax; - terminatorRules = state.md.block.ruler.getRules("reference"); - oldParentType = state.parentType; - state.parentType = "reference"; - for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { - if (state.sCount[nextLine] - state.blkIndent > 3) { - continue; - } - if (state.sCount[nextLine] < 0) { - continue; - } - terminate = false; - for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { - if (terminatorRules[i2](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { - break; - } - } - str = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); - max = str.length; - for (pos = 1; pos < max; pos++) { - ch = str.charCodeAt(pos); - if (ch === 91) { - return false; - } else if (ch === 93) { - labelEnd = pos; - break; - } else if (ch === 10) { - lines++; - } else if (ch === 92) { - pos++; - if (pos < max && str.charCodeAt(pos) === 10) { - lines++; - } - } - } - if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 58) { - return false; - } - for (pos = labelEnd + 2; pos < max; pos++) { - ch = str.charCodeAt(pos); - if (ch === 10) { - lines++; - } else if (isSpace(ch)) { - } else { - break; - } - } - res = state.md.helpers.parseLinkDestination(str, pos, max); - if (!res.ok) { - return false; - } - href = state.md.normalizeLink(res.str); - if (!state.md.validateLink(href)) { - return false; - } - pos = res.pos; - lines += res.lines; - destEndPos = pos; - destEndLineNo = lines; - start = pos; - for (; pos < max; pos++) { - ch = str.charCodeAt(pos); - if (ch === 10) { - lines++; - } else if (isSpace(ch)) { - } else { - break; - } - } - res = state.md.helpers.parseLinkTitle(str, pos, max); - if (pos < max && start !== pos && res.ok) { - title = res.str; - pos = res.pos; - lines += res.lines; - } else { - title = ""; - pos = destEndPos; - lines = destEndLineNo; - } - while (pos < max) { - ch = str.charCodeAt(pos); - if (!isSpace(ch)) { - break; - } - pos++; - } - if (pos < max && str.charCodeAt(pos) !== 10) { - if (title) { - title = ""; - pos = destEndPos; - lines = destEndLineNo; - while (pos < max) { - ch = str.charCodeAt(pos); - if (!isSpace(ch)) { - break; - } - pos++; - } - } - } - if (pos < max && str.charCodeAt(pos) !== 10) { - return false; - } - label = normalizeReference(str.slice(1, labelEnd)); - if (!label) { - return false; - } - if (silent) { - return true; - } - if (typeof state.env.references === "undefined") { - state.env.references = {}; - } - if (typeof state.env.references[label] === "undefined") { - state.env.references[label] = { title, href }; - } - state.parentType = oldParentType; - state.line = startLine + lines + 1; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/common/html_blocks.js -var require_html_blocks = __commonJS({ - "node_modules/markdown-it/lib/common/html_blocks.js"(exports, module2) { - "use strict"; - module2.exports = [ - "address", - "article", - "aside", - "base", - "basefont", - "blockquote", - "body", - "caption", - "center", - "col", - "colgroup", - "dd", - "details", - "dialog", - "dir", - "div", - "dl", - "dt", - "fieldset", - "figcaption", - "figure", - "footer", - "form", - "frame", - "frameset", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "head", - "header", - "hr", - "html", - "iframe", - "legend", - "li", - "link", - "main", - "menu", - "menuitem", - "nav", - "noframes", - "ol", - "optgroup", - "option", - "p", - "param", - "section", - "source", - "summary", - "table", - "tbody", - "td", - "tfoot", - "th", - "thead", - "title", - "tr", - "track", - "ul" - ]; - } -}); - -// node_modules/markdown-it/lib/common/html_re.js -var require_html_re = __commonJS({ - "node_modules/markdown-it/lib/common/html_re.js"(exports, module2) { - "use strict"; - var attr_name = "[a-zA-Z_:][a-zA-Z0-9:._-]*"; - var unquoted = "[^\"'=<>`\\x00-\\x20]+"; - var single_quoted = "'[^']*'"; - var double_quoted = '"[^"]*"'; - var attr_value = "(?:" + unquoted + "|" + single_quoted + "|" + double_quoted + ")"; - var attribute = "(?:\\s+" + attr_name + "(?:\\s*=\\s*" + attr_value + ")?)"; - var open_tag = "<[A-Za-z][A-Za-z0-9\\-]*" + attribute + "*\\s*\\/?>"; - var close_tag = "<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>"; - var comment = "|"; - var processing = "<[?][\\s\\S]*?[?]>"; - var declaration = "]*>"; - var cdata = ""; - var HTML_TAG_RE = new RegExp("^(?:" + open_tag + "|" + close_tag + "|" + comment + "|" + processing + "|" + declaration + "|" + cdata + ")"); - var HTML_OPEN_CLOSE_TAG_RE = new RegExp("^(?:" + open_tag + "|" + close_tag + ")"); - module2.exports.HTML_TAG_RE = HTML_TAG_RE; - module2.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE; - } -}); - -// node_modules/markdown-it/lib/rules_block/html_block.js -var require_html_block = __commonJS({ - "node_modules/markdown-it/lib/rules_block/html_block.js"(exports, module2) { - "use strict"; - var block_names = require_html_blocks(); - var HTML_OPEN_CLOSE_TAG_RE = require_html_re().HTML_OPEN_CLOSE_TAG_RE; - var HTML_SEQUENCES = [ - [/^<(script|pre|style|textarea)(?=(\s|>|$))/i, /<\/(script|pre|style|textarea)>/i, true], - [/^/, true], - [/^<\?/, /\?>/, true], - [/^/, true], - [/^/, true], - [new RegExp("^|$))", "i"), /^$/, true], - [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + "\\s*$"), /^$/, false] - ]; - module2.exports = function html_block(state, startLine, endLine, silent) { - var i2, nextLine, token, lineText, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine]; - if (state.sCount[startLine] - state.blkIndent >= 4) { - return false; - } - if (!state.md.options.html) { - return false; - } - if (state.src.charCodeAt(pos) !== 60) { - return false; - } - lineText = state.src.slice(pos, max); - for (i2 = 0; i2 < HTML_SEQUENCES.length; i2++) { - if (HTML_SEQUENCES[i2][0].test(lineText)) { - break; - } - } - if (i2 === HTML_SEQUENCES.length) { - return false; - } - if (silent) { - return HTML_SEQUENCES[i2][2]; - } - nextLine = startLine + 1; - if (!HTML_SEQUENCES[i2][1].test(lineText)) { - for (; nextLine < endLine; nextLine++) { - if (state.sCount[nextLine] < state.blkIndent) { - break; - } - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - lineText = state.src.slice(pos, max); - if (HTML_SEQUENCES[i2][1].test(lineText)) { - if (lineText.length !== 0) { - nextLine++; - } - break; - } - } - } - state.line = nextLine; - token = state.push("html_block", "", 0); - token.map = [startLine, nextLine]; - token.content = state.getLines(startLine, nextLine, state.blkIndent, true); - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_block/heading.js -var require_heading = __commonJS({ - "node_modules/markdown-it/lib/rules_block/heading.js"(exports, module2) { - "use strict"; - var isSpace = require_utils().isSpace; - module2.exports = function heading(state, startLine, endLine, silent) { - var ch, level, tmp, token, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine]; - if (state.sCount[startLine] - state.blkIndent >= 4) { - return false; - } - ch = state.src.charCodeAt(pos); - if (ch !== 35 || pos >= max) { - return false; - } - level = 1; - ch = state.src.charCodeAt(++pos); - while (ch === 35 && pos < max && level <= 6) { - level++; - ch = state.src.charCodeAt(++pos); - } - if (level > 6 || pos < max && !isSpace(ch)) { - return false; - } - if (silent) { - return true; - } - max = state.skipSpacesBack(max, pos); - tmp = state.skipCharsBack(max, 35, pos); - if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) { - max = tmp; - } - state.line = startLine + 1; - token = state.push("heading_open", "h" + String(level), 1); - token.markup = "########".slice(0, level); - token.map = [startLine, state.line]; - token = state.push("inline", "", 0); - token.content = state.src.slice(pos, max).trim(); - token.map = [startLine, state.line]; - token.children = []; - token = state.push("heading_close", "h" + String(level), -1); - token.markup = "########".slice(0, level); - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_block/lheading.js -var require_lheading = __commonJS({ - "node_modules/markdown-it/lib/rules_block/lheading.js"(exports, module2) { - "use strict"; - module2.exports = function lheading(state, startLine, endLine) { - var content, terminate, i2, l2, token, pos, max, level, marker, nextLine = startLine + 1, oldParentType, terminatorRules = state.md.block.ruler.getRules("paragraph"); - if (state.sCount[startLine] - state.blkIndent >= 4) { - return false; - } - oldParentType = state.parentType; - state.parentType = "paragraph"; - for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { - if (state.sCount[nextLine] - state.blkIndent > 3) { - continue; - } - if (state.sCount[nextLine] >= state.blkIndent) { - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - if (pos < max) { - marker = state.src.charCodeAt(pos); - if (marker === 45 || marker === 61) { - pos = state.skipChars(pos, marker); - pos = state.skipSpaces(pos); - if (pos >= max) { - level = marker === 61 ? 1 : 2; - break; - } - } - } - } - if (state.sCount[nextLine] < 0) { - continue; - } - terminate = false; - for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { - if (terminatorRules[i2](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { - break; - } - } - if (!level) { - return false; - } - content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); - state.line = nextLine + 1; - token = state.push("heading_open", "h" + String(level), 1); - token.markup = String.fromCharCode(marker); - token.map = [startLine, state.line]; - token = state.push("inline", "", 0); - token.content = content; - token.map = [startLine, state.line - 1]; - token.children = []; - token = state.push("heading_close", "h" + String(level), -1); - token.markup = String.fromCharCode(marker); - state.parentType = oldParentType; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_block/paragraph.js -var require_paragraph = __commonJS({ - "node_modules/markdown-it/lib/rules_block/paragraph.js"(exports, module2) { - "use strict"; - module2.exports = function paragraph(state, startLine) { - var content, terminate, i2, l2, token, oldParentType, nextLine = startLine + 1, terminatorRules = state.md.block.ruler.getRules("paragraph"), endLine = state.lineMax; - oldParentType = state.parentType; - state.parentType = "paragraph"; - for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { - if (state.sCount[nextLine] - state.blkIndent > 3) { - continue; - } - if (state.sCount[nextLine] < 0) { - continue; - } - terminate = false; - for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) { - if (terminatorRules[i2](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { - break; - } - } - content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); - state.line = nextLine; - token = state.push("paragraph_open", "p", 1); - token.map = [startLine, state.line]; - token = state.push("inline", "", 0); - token.content = content; - token.map = [startLine, state.line]; - token.children = []; - token = state.push("paragraph_close", "p", -1); - state.parentType = oldParentType; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_block/state_block.js -var require_state_block = __commonJS({ - "node_modules/markdown-it/lib/rules_block/state_block.js"(exports, module2) { - "use strict"; - var Token = require_token(); - var isSpace = require_utils().isSpace; - function StateBlock(src, md2, env, tokens) { - var ch, s2, start, pos, len, indent, offset, indent_found; - this.src = src; - this.md = md2; - this.env = env; - this.tokens = tokens; - this.bMarks = []; - this.eMarks = []; - this.tShift = []; - this.sCount = []; - this.bsCount = []; - this.blkIndent = 0; - this.line = 0; - this.lineMax = 0; - this.tight = false; - this.ddIndent = -1; - this.listIndent = -1; - this.parentType = "root"; - this.level = 0; - this.result = ""; - s2 = this.src; - indent_found = false; - for (start = pos = indent = offset = 0, len = s2.length; pos < len; pos++) { - ch = s2.charCodeAt(pos); - if (!indent_found) { - if (isSpace(ch)) { - indent++; - if (ch === 9) { - offset += 4 - offset % 4; - } else { - offset++; - } - continue; - } else { - indent_found = true; - } - } - if (ch === 10 || pos === len - 1) { - if (ch !== 10) { - pos++; - } - this.bMarks.push(start); - this.eMarks.push(pos); - this.tShift.push(indent); - this.sCount.push(offset); - this.bsCount.push(0); - indent_found = false; - indent = 0; - offset = 0; - start = pos + 1; - } - } - this.bMarks.push(s2.length); - this.eMarks.push(s2.length); - this.tShift.push(0); - this.sCount.push(0); - this.bsCount.push(0); - this.lineMax = this.bMarks.length - 1; - } - StateBlock.prototype.push = function(type, tag, nesting) { - var token = new Token(type, tag, nesting); - token.block = true; - if (nesting < 0) - this.level--; - token.level = this.level; - if (nesting > 0) - this.level++; - this.tokens.push(token); - return token; - }; - StateBlock.prototype.isEmpty = function isEmpty3(line) { - return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]; - }; - StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) { - for (var max = this.lineMax; from < max; from++) { - if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) { - break; - } - } - return from; - }; - StateBlock.prototype.skipSpaces = function skipSpaces(pos) { - var ch; - for (var max = this.src.length; pos < max; pos++) { - ch = this.src.charCodeAt(pos); - if (!isSpace(ch)) { - break; - } - } - return pos; - }; - StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) { - if (pos <= min) { - return pos; - } - while (pos > min) { - if (!isSpace(this.src.charCodeAt(--pos))) { - return pos + 1; - } - } - return pos; - }; - StateBlock.prototype.skipChars = function skipChars(pos, code) { - for (var max = this.src.length; pos < max; pos++) { - if (this.src.charCodeAt(pos) !== code) { - break; - } - } - return pos; - }; - StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) { - if (pos <= min) { - return pos; - } - while (pos > min) { - if (code !== this.src.charCodeAt(--pos)) { - return pos + 1; - } - } - return pos; - }; - StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) { - var i2, lineIndent, ch, first, last, queue, lineStart, line = begin; - if (begin >= end) { - return ""; - } - queue = new Array(end - begin); - for (i2 = 0; line < end; line++, i2++) { - lineIndent = 0; - lineStart = first = this.bMarks[line]; - if (line + 1 < end || keepLastLF) { - last = this.eMarks[line] + 1; - } else { - last = this.eMarks[line]; - } - while (first < last && lineIndent < indent) { - ch = this.src.charCodeAt(first); - if (isSpace(ch)) { - if (ch === 9) { - lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4; - } else { - lineIndent++; - } - } else if (first - lineStart < this.tShift[line]) { - lineIndent++; - } else { - break; - } - first++; - } - if (lineIndent > indent) { - queue[i2] = new Array(lineIndent - indent + 1).join(" ") + this.src.slice(first, last); - } else { - queue[i2] = this.src.slice(first, last); - } - } - return queue.join(""); - }; - StateBlock.prototype.Token = Token; - module2.exports = StateBlock; - } -}); - -// node_modules/markdown-it/lib/parser_block.js -var require_parser_block = __commonJS({ - "node_modules/markdown-it/lib/parser_block.js"(exports, module2) { - "use strict"; - var Ruler = require_ruler(); - var _rules = [ - ["table", require_table(), ["paragraph", "reference"]], - ["code", require_code()], - ["fence", require_fence(), ["paragraph", "reference", "blockquote", "list"]], - ["blockquote", require_blockquote(), ["paragraph", "reference", "blockquote", "list"]], - ["hr", require_hr(), ["paragraph", "reference", "blockquote", "list"]], - ["list", require_list(), ["paragraph", "reference", "blockquote"]], - ["reference", require_reference()], - ["html_block", require_html_block(), ["paragraph", "reference", "blockquote"]], - ["heading", require_heading(), ["paragraph", "reference", "blockquote"]], - ["lheading", require_lheading()], - ["paragraph", require_paragraph()] - ]; - function ParserBlock() { - this.ruler = new Ruler(); - for (var i2 = 0; i2 < _rules.length; i2++) { - this.ruler.push(_rules[i2][0], _rules[i2][1], { alt: (_rules[i2][2] || []).slice() }); - } - } - ParserBlock.prototype.tokenize = function(state, startLine, endLine) { - var ok, i2, rules = this.ruler.getRules(""), len = rules.length, line = startLine, hasEmptyLines = false, maxNesting = state.md.options.maxNesting; - while (line < endLine) { - state.line = line = state.skipEmptyLines(line); - if (line >= endLine) { - break; - } - if (state.sCount[line] < state.blkIndent) { - break; - } - if (state.level >= maxNesting) { - state.line = endLine; - break; - } - for (i2 = 0; i2 < len; i2++) { - ok = rules[i2](state, line, endLine, false); - if (ok) { - break; - } - } - state.tight = !hasEmptyLines; - if (state.isEmpty(state.line - 1)) { - hasEmptyLines = true; - } - line = state.line; - if (line < endLine && state.isEmpty(line)) { - hasEmptyLines = true; - line++; - state.line = line; - } - } - }; - ParserBlock.prototype.parse = function(src, md2, env, outTokens) { - var state; - if (!src) { - return; - } - state = new this.State(src, md2, env, outTokens); - this.tokenize(state, state.line, state.lineMax); - }; - ParserBlock.prototype.State = require_state_block(); - module2.exports = ParserBlock; - } -}); - -// node_modules/markdown-it/lib/rules_inline/text.js -var require_text = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/text.js"(exports, module2) { - "use strict"; - function isTerminatorChar(ch) { - switch (ch) { - case 10: - case 33: - case 35: - case 36: - case 37: - case 38: - case 42: - case 43: - case 45: - case 58: - case 60: - case 61: - case 62: - case 64: - case 91: - case 92: - case 93: - case 94: - case 95: - case 96: - case 123: - case 125: - case 126: - return true; - default: - return false; - } - } - module2.exports = function text(state, silent) { - var pos = state.pos; - while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) { - pos++; - } - if (pos === state.pos) { - return false; - } - if (!silent) { - state.pending += state.src.slice(state.pos, pos); - } - state.pos = pos; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/linkify.js -var require_linkify2 = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/linkify.js"(exports, module2) { - "use strict"; - var SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i; - module2.exports = function linkify(state, silent) { - var pos, max, match, proto, link, url, fullUrl, token; - if (!state.md.options.linkify) - return false; - if (state.linkLevel > 0) - return false; - pos = state.pos; - max = state.posMax; - if (pos + 3 > max) - return false; - if (state.src.charCodeAt(pos) !== 58) - return false; - if (state.src.charCodeAt(pos + 1) !== 47) - return false; - if (state.src.charCodeAt(pos + 2) !== 47) - return false; - match = state.pending.match(SCHEME_RE); - if (!match) - return false; - proto = match[1]; - link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length)); - if (!link) - return false; - url = link.url; - url = url.replace(/\*+$/, ""); - fullUrl = state.md.normalizeLink(url); - if (!state.md.validateLink(fullUrl)) - return false; - if (!silent) { - state.pending = state.pending.slice(0, -proto.length); - token = state.push("link_open", "a", 1); - token.attrs = [["href", fullUrl]]; - token.markup = "linkify"; - token.info = "auto"; - token = state.push("text", "", 0); - token.content = state.md.normalizeLinkText(url); - token = state.push("link_close", "a", -1); - token.markup = "linkify"; - token.info = "auto"; - } - state.pos += url.length - proto.length; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/newline.js -var require_newline = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/newline.js"(exports, module2) { - "use strict"; - var isSpace = require_utils().isSpace; - module2.exports = function newline(state, silent) { - var pmax, max, ws, pos = state.pos; - if (state.src.charCodeAt(pos) !== 10) { - return false; - } - pmax = state.pending.length - 1; - max = state.posMax; - if (!silent) { - if (pmax >= 0 && state.pending.charCodeAt(pmax) === 32) { - if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 32) { - ws = pmax - 1; - while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 32) - ws--; - state.pending = state.pending.slice(0, ws); - state.push("hardbreak", "br", 0); - } else { - state.pending = state.pending.slice(0, -1); - state.push("softbreak", "br", 0); - } - } else { - state.push("softbreak", "br", 0); - } - } - pos++; - while (pos < max && isSpace(state.src.charCodeAt(pos))) { - pos++; - } - state.pos = pos; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/escape.js -var require_escape = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/escape.js"(exports, module2) { - "use strict"; - var isSpace = require_utils().isSpace; - var ESCAPED = []; - for (i2 = 0; i2 < 256; i2++) { - ESCAPED.push(0); - } - var i2; - "\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(ch) { - ESCAPED[ch.charCodeAt(0)] = 1; - }); - module2.exports = function escape(state, silent) { - var ch1, ch2, origStr, escapedStr, token, pos = state.pos, max = state.posMax; - if (state.src.charCodeAt(pos) !== 92) - return false; - pos++; - if (pos >= max) - return false; - ch1 = state.src.charCodeAt(pos); - if (ch1 === 10) { - if (!silent) { - state.push("hardbreak", "br", 0); - } - pos++; - while (pos < max) { - ch1 = state.src.charCodeAt(pos); - if (!isSpace(ch1)) - break; - pos++; - } - state.pos = pos; - return true; - } - escapedStr = state.src[pos]; - if (ch1 >= 55296 && ch1 <= 56319 && pos + 1 < max) { - ch2 = state.src.charCodeAt(pos + 1); - if (ch2 >= 56320 && ch2 <= 57343) { - escapedStr += state.src[pos + 1]; - pos++; - } - } - origStr = "\\" + escapedStr; - if (!silent) { - token = state.push("text_special", "", 0); - if (ch1 < 256 && ESCAPED[ch1] !== 0) { - token.content = escapedStr; - } else { - token.content = origStr; - } - token.markup = origStr; - token.info = "escape"; - } - state.pos = pos + 1; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/backticks.js -var require_backticks = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/backticks.js"(exports, module2) { - "use strict"; - module2.exports = function backtick(state, silent) { - var start, max, marker, token, matchStart, matchEnd, openerLength, closerLength, pos = state.pos, ch = state.src.charCodeAt(pos); - if (ch !== 96) { - return false; - } - start = pos; - pos++; - max = state.posMax; - while (pos < max && state.src.charCodeAt(pos) === 96) { - pos++; - } - marker = state.src.slice(start, pos); - openerLength = marker.length; - if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) { - if (!silent) - state.pending += marker; - state.pos += openerLength; - return true; - } - matchStart = matchEnd = pos; - while ((matchStart = state.src.indexOf("`", matchEnd)) !== -1) { - matchEnd = matchStart + 1; - while (matchEnd < max && state.src.charCodeAt(matchEnd) === 96) { - matchEnd++; - } - closerLength = matchEnd - matchStart; - if (closerLength === openerLength) { - if (!silent) { - token = state.push("code_inline", "code", 0); - token.markup = marker; - token.content = state.src.slice(pos, matchStart).replace(/\n/g, " ").replace(/^ (.+) $/, "$1"); - } - state.pos = matchEnd; - return true; - } - state.backticks[closerLength] = matchStart; - } - state.backticksScanned = true; - if (!silent) - state.pending += marker; - state.pos += openerLength; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/strikethrough.js -var require_strikethrough = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/strikethrough.js"(exports, module2) { - "use strict"; - module2.exports.tokenize = function strikethrough(state, silent) { - var i2, scanned, token, len, ch, start = state.pos, marker = state.src.charCodeAt(start); - if (silent) { - return false; - } - if (marker !== 126) { - return false; - } - scanned = state.scanDelims(state.pos, true); - len = scanned.length; - ch = String.fromCharCode(marker); - if (len < 2) { - return false; - } - if (len % 2) { - token = state.push("text", "", 0); - token.content = ch; - len--; - } - for (i2 = 0; i2 < len; i2 += 2) { - token = state.push("text", "", 0); - token.content = ch + ch; - state.delimiters.push({ - marker, - length: 0, - token: state.tokens.length - 1, - end: -1, - open: scanned.can_open, - close: scanned.can_close - }); - } - state.pos += scanned.length; - return true; - }; - function postProcess(state, delimiters) { - var i2, j2, startDelim, endDelim, token, loneMarkers = [], max = delimiters.length; - for (i2 = 0; i2 < max; i2++) { - startDelim = delimiters[i2]; - if (startDelim.marker !== 126) { - continue; - } - if (startDelim.end === -1) { - continue; - } - endDelim = delimiters[startDelim.end]; - token = state.tokens[startDelim.token]; - token.type = "s_open"; - token.tag = "s"; - token.nesting = 1; - token.markup = "~~"; - token.content = ""; - token = state.tokens[endDelim.token]; - token.type = "s_close"; - token.tag = "s"; - token.nesting = -1; - token.markup = "~~"; - token.content = ""; - if (state.tokens[endDelim.token - 1].type === "text" && state.tokens[endDelim.token - 1].content === "~") { - loneMarkers.push(endDelim.token - 1); - } - } - while (loneMarkers.length) { - i2 = loneMarkers.pop(); - j2 = i2 + 1; - while (j2 < state.tokens.length && state.tokens[j2].type === "s_close") { - j2++; - } - j2--; - if (i2 !== j2) { - token = state.tokens[j2]; - state.tokens[j2] = state.tokens[i2]; - state.tokens[i2] = token; - } - } - } - module2.exports.postProcess = function strikethrough(state) { - var curr, tokens_meta = state.tokens_meta, max = state.tokens_meta.length; - postProcess(state, state.delimiters); - for (curr = 0; curr < max; curr++) { - if (tokens_meta[curr] && tokens_meta[curr].delimiters) { - postProcess(state, tokens_meta[curr].delimiters); - } - } - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/emphasis.js -var require_emphasis = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/emphasis.js"(exports, module2) { - "use strict"; - module2.exports.tokenize = function emphasis(state, silent) { - var i2, scanned, token, start = state.pos, marker = state.src.charCodeAt(start); - if (silent) { - return false; - } - if (marker !== 95 && marker !== 42) { - return false; - } - scanned = state.scanDelims(state.pos, marker === 42); - for (i2 = 0; i2 < scanned.length; i2++) { - token = state.push("text", "", 0); - token.content = String.fromCharCode(marker); - state.delimiters.push({ - marker, - length: scanned.length, - token: state.tokens.length - 1, - end: -1, - open: scanned.can_open, - close: scanned.can_close - }); - } - state.pos += scanned.length; - return true; - }; - function postProcess(state, delimiters) { - var i2, startDelim, endDelim, token, ch, isStrong, max = delimiters.length; - for (i2 = max - 1; i2 >= 0; i2--) { - startDelim = delimiters[i2]; - if (startDelim.marker !== 95 && startDelim.marker !== 42) { - continue; - } - if (startDelim.end === -1) { - continue; - } - endDelim = delimiters[startDelim.end]; - isStrong = i2 > 0 && delimiters[i2 - 1].end === startDelim.end + 1 && delimiters[i2 - 1].marker === startDelim.marker && delimiters[i2 - 1].token === startDelim.token - 1 && delimiters[startDelim.end + 1].token === endDelim.token + 1; - ch = String.fromCharCode(startDelim.marker); - token = state.tokens[startDelim.token]; - token.type = isStrong ? "strong_open" : "em_open"; - token.tag = isStrong ? "strong" : "em"; - token.nesting = 1; - token.markup = isStrong ? ch + ch : ch; - token.content = ""; - token = state.tokens[endDelim.token]; - token.type = isStrong ? "strong_close" : "em_close"; - token.tag = isStrong ? "strong" : "em"; - token.nesting = -1; - token.markup = isStrong ? ch + ch : ch; - token.content = ""; - if (isStrong) { - state.tokens[delimiters[i2 - 1].token].content = ""; - state.tokens[delimiters[startDelim.end + 1].token].content = ""; - i2--; - } - } - } - module2.exports.postProcess = function emphasis(state) { - var curr, tokens_meta = state.tokens_meta, max = state.tokens_meta.length; - postProcess(state, state.delimiters); - for (curr = 0; curr < max; curr++) { - if (tokens_meta[curr] && tokens_meta[curr].delimiters) { - postProcess(state, tokens_meta[curr].delimiters); - } - } - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/link.js -var require_link = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/link.js"(exports, module2) { - "use strict"; - var normalizeReference = require_utils().normalizeReference; - var isSpace = require_utils().isSpace; - module2.exports = function link(state, silent) { - var attrs, code, label, labelEnd, labelStart, pos, res, ref, token, href = "", title = "", oldPos = state.pos, max = state.posMax, start = state.pos, parseReference = true; - if (state.src.charCodeAt(state.pos) !== 91) { - return false; - } - labelStart = state.pos + 1; - labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true); - if (labelEnd < 0) { - return false; - } - pos = labelEnd + 1; - if (pos < max && state.src.charCodeAt(pos) === 40) { - parseReference = false; - pos++; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 10) { - break; - } - } - if (pos >= max) { - return false; - } - start = pos; - res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax); - if (res.ok) { - href = state.md.normalizeLink(res.str); - if (state.md.validateLink(href)) { - pos = res.pos; - } else { - href = ""; - } - start = pos; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 10) { - break; - } - } - res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax); - if (pos < max && start !== pos && res.ok) { - title = res.str; - pos = res.pos; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 10) { - break; - } - } - } - } - if (pos >= max || state.src.charCodeAt(pos) !== 41) { - parseReference = true; - } - pos++; - } - if (parseReference) { - if (typeof state.env.references === "undefined") { - return false; - } - if (pos < max && state.src.charCodeAt(pos) === 91) { - start = pos + 1; - pos = state.md.helpers.parseLinkLabel(state, pos); - if (pos >= 0) { - label = state.src.slice(start, pos++); - } else { - pos = labelEnd + 1; - } - } else { - pos = labelEnd + 1; - } - if (!label) { - label = state.src.slice(labelStart, labelEnd); - } - ref = state.env.references[normalizeReference(label)]; - if (!ref) { - state.pos = oldPos; - return false; - } - href = ref.href; - title = ref.title; - } - if (!silent) { - state.pos = labelStart; - state.posMax = labelEnd; - token = state.push("link_open", "a", 1); - token.attrs = attrs = [["href", href]]; - if (title) { - attrs.push(["title", title]); - } - state.linkLevel++; - state.md.inline.tokenize(state); - state.linkLevel--; - token = state.push("link_close", "a", -1); - } - state.pos = pos; - state.posMax = max; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/image.js -var require_image = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/image.js"(exports, module2) { - "use strict"; - var normalizeReference = require_utils().normalizeReference; - var isSpace = require_utils().isSpace; - module2.exports = function image(state, silent) { - var attrs, code, content, label, labelEnd, labelStart, pos, ref, res, title, token, tokens, start, href = "", oldPos = state.pos, max = state.posMax; - if (state.src.charCodeAt(state.pos) !== 33) { - return false; - } - if (state.src.charCodeAt(state.pos + 1) !== 91) { - return false; - } - labelStart = state.pos + 2; - labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false); - if (labelEnd < 0) { - return false; - } - pos = labelEnd + 1; - if (pos < max && state.src.charCodeAt(pos) === 40) { - pos++; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 10) { - break; - } - } - if (pos >= max) { - return false; - } - start = pos; - res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax); - if (res.ok) { - href = state.md.normalizeLink(res.str); - if (state.md.validateLink(href)) { - pos = res.pos; - } else { - href = ""; - } - } - start = pos; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 10) { - break; - } - } - res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax); - if (pos < max && start !== pos && res.ok) { - title = res.str; - pos = res.pos; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 10) { - break; - } - } - } else { - title = ""; - } - if (pos >= max || state.src.charCodeAt(pos) !== 41) { - state.pos = oldPos; - return false; - } - pos++; - } else { - if (typeof state.env.references === "undefined") { - return false; - } - if (pos < max && state.src.charCodeAt(pos) === 91) { - start = pos + 1; - pos = state.md.helpers.parseLinkLabel(state, pos); - if (pos >= 0) { - label = state.src.slice(start, pos++); - } else { - pos = labelEnd + 1; - } - } else { - pos = labelEnd + 1; - } - if (!label) { - label = state.src.slice(labelStart, labelEnd); - } - ref = state.env.references[normalizeReference(label)]; - if (!ref) { - state.pos = oldPos; - return false; - } - href = ref.href; - title = ref.title; - } - if (!silent) { - content = state.src.slice(labelStart, labelEnd); - state.md.inline.parse( - content, - state.md, - state.env, - tokens = [] - ); - token = state.push("image", "img", 0); - token.attrs = attrs = [["src", href], ["alt", ""]]; - token.children = tokens; - token.content = content; - if (title) { - attrs.push(["title", title]); - } - } - state.pos = pos; - state.posMax = max; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/autolink.js -var require_autolink = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/autolink.js"(exports, module2) { - "use strict"; - var EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/; - var AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/; - module2.exports = function autolink(state, silent) { - var url, fullUrl, token, ch, start, max, pos = state.pos; - if (state.src.charCodeAt(pos) !== 60) { - return false; - } - start = state.pos; - max = state.posMax; - for (; ; ) { - if (++pos >= max) - return false; - ch = state.src.charCodeAt(pos); - if (ch === 60) - return false; - if (ch === 62) - break; - } - url = state.src.slice(start + 1, pos); - if (AUTOLINK_RE.test(url)) { - fullUrl = state.md.normalizeLink(url); - if (!state.md.validateLink(fullUrl)) { - return false; - } - if (!silent) { - token = state.push("link_open", "a", 1); - token.attrs = [["href", fullUrl]]; - token.markup = "autolink"; - token.info = "auto"; - token = state.push("text", "", 0); - token.content = state.md.normalizeLinkText(url); - token = state.push("link_close", "a", -1); - token.markup = "autolink"; - token.info = "auto"; - } - state.pos += url.length + 2; - return true; - } - if (EMAIL_RE.test(url)) { - fullUrl = state.md.normalizeLink("mailto:" + url); - if (!state.md.validateLink(fullUrl)) { - return false; - } - if (!silent) { - token = state.push("link_open", "a", 1); - token.attrs = [["href", fullUrl]]; - token.markup = "autolink"; - token.info = "auto"; - token = state.push("text", "", 0); - token.content = state.md.normalizeLinkText(url); - token = state.push("link_close", "a", -1); - token.markup = "autolink"; - token.info = "auto"; - } - state.pos += url.length + 2; - return true; - } - return false; - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/html_inline.js -var require_html_inline = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/html_inline.js"(exports, module2) { - "use strict"; - var HTML_TAG_RE = require_html_re().HTML_TAG_RE; - function isLinkOpen(str) { - return /^\s]/i.test(str); - } - function isLinkClose(str) { - return /^<\/a\s*>/i.test(str); - } - function isLetter(ch) { - var lc = ch | 32; - return lc >= 97 && lc <= 122; - } - module2.exports = function html_inline(state, silent) { - var ch, match, max, token, pos = state.pos; - if (!state.md.options.html) { - return false; - } - max = state.posMax; - if (state.src.charCodeAt(pos) !== 60 || pos + 2 >= max) { - return false; - } - ch = state.src.charCodeAt(pos + 1); - if (ch !== 33 && ch !== 63 && ch !== 47 && !isLetter(ch)) { - return false; - } - match = state.src.slice(pos).match(HTML_TAG_RE); - if (!match) { - return false; - } - if (!silent) { - token = state.push("html_inline", "", 0); - token.content = state.src.slice(pos, pos + match[0].length); - if (isLinkOpen(token.content)) - state.linkLevel++; - if (isLinkClose(token.content)) - state.linkLevel--; - } - state.pos += match[0].length; - return true; - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/entity.js -var require_entity = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/entity.js"(exports, module2) { - "use strict"; - var entities = require_entities2(); - var has = require_utils().has; - var isValidEntityCode = require_utils().isValidEntityCode; - var fromCodePoint = require_utils().fromCodePoint; - var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i; - var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i; - module2.exports = function entity(state, silent) { - var ch, code, match, token, pos = state.pos, max = state.posMax; - if (state.src.charCodeAt(pos) !== 38) - return false; - if (pos + 1 >= max) - return false; - ch = state.src.charCodeAt(pos + 1); - if (ch === 35) { - match = state.src.slice(pos).match(DIGITAL_RE); - if (match) { - if (!silent) { - code = match[1][0].toLowerCase() === "x" ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10); - token = state.push("text_special", "", 0); - token.content = isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(65533); - token.markup = match[0]; - token.info = "entity"; - } - state.pos += match[0].length; - return true; - } - } else { - match = state.src.slice(pos).match(NAMED_RE); - if (match) { - if (has(entities, match[1])) { - if (!silent) { - token = state.push("text_special", "", 0); - token.content = entities[match[1]]; - token.markup = match[0]; - token.info = "entity"; - } - state.pos += match[0].length; - return true; - } - } - } - return false; - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/balance_pairs.js -var require_balance_pairs = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/balance_pairs.js"(exports, module2) { - "use strict"; - function processDelimiters(state, delimiters) { - var closerIdx, openerIdx, closer, opener, minOpenerIdx, newMinOpenerIdx, isOddMatch, lastJump, openersBottom = {}, max = delimiters.length; - if (!max) - return; - var headerIdx = 0; - var lastTokenIdx = -2; - var jumps = []; - for (closerIdx = 0; closerIdx < max; closerIdx++) { - closer = delimiters[closerIdx]; - jumps.push(0); - if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) { - headerIdx = closerIdx; - } - lastTokenIdx = closer.token; - closer.length = closer.length || 0; - if (!closer.close) - continue; - if (!openersBottom.hasOwnProperty(closer.marker)) { - openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1]; - } - minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3]; - openerIdx = headerIdx - jumps[headerIdx] - 1; - newMinOpenerIdx = openerIdx; - for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) { - opener = delimiters[openerIdx]; - if (opener.marker !== closer.marker) - continue; - if (opener.open && opener.end < 0) { - isOddMatch = false; - if (opener.close || closer.open) { - if ((opener.length + closer.length) % 3 === 0) { - if (opener.length % 3 !== 0 || closer.length % 3 !== 0) { - isOddMatch = true; - } - } - } - if (!isOddMatch) { - lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? jumps[openerIdx - 1] + 1 : 0; - jumps[closerIdx] = closerIdx - openerIdx + lastJump; - jumps[openerIdx] = lastJump; - closer.open = false; - opener.end = closerIdx; - opener.close = false; - newMinOpenerIdx = -1; - lastTokenIdx = -2; - break; - } - } - } - if (newMinOpenerIdx !== -1) { - openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx; - } - } - } - module2.exports = function link_pairs(state) { - var curr, tokens_meta = state.tokens_meta, max = state.tokens_meta.length; - processDelimiters(state, state.delimiters); - for (curr = 0; curr < max; curr++) { - if (tokens_meta[curr] && tokens_meta[curr].delimiters) { - processDelimiters(state, tokens_meta[curr].delimiters); - } - } - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/fragments_join.js -var require_fragments_join = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/fragments_join.js"(exports, module2) { - "use strict"; - module2.exports = function fragments_join(state) { - var curr, last, level = 0, tokens = state.tokens, max = state.tokens.length; - for (curr = last = 0; curr < max; curr++) { - if (tokens[curr].nesting < 0) - level--; - tokens[curr].level = level; - if (tokens[curr].nesting > 0) - level++; - if (tokens[curr].type === "text" && curr + 1 < max && tokens[curr + 1].type === "text") { - tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content; - } else { - if (curr !== last) { - tokens[last] = tokens[curr]; - } - last++; - } - } - if (curr !== last) { - tokens.length = last; - } - }; - } -}); - -// node_modules/markdown-it/lib/rules_inline/state_inline.js -var require_state_inline = __commonJS({ - "node_modules/markdown-it/lib/rules_inline/state_inline.js"(exports, module2) { - "use strict"; - var Token = require_token(); - var isWhiteSpace = require_utils().isWhiteSpace; - var isPunctChar = require_utils().isPunctChar; - var isMdAsciiPunct = require_utils().isMdAsciiPunct; - function StateInline(src, md2, env, outTokens) { - this.src = src; - this.env = env; - this.md = md2; - this.tokens = outTokens; - this.tokens_meta = Array(outTokens.length); - this.pos = 0; - this.posMax = this.src.length; - this.level = 0; - this.pending = ""; - this.pendingLevel = 0; - this.cache = {}; - this.delimiters = []; - this._prev_delimiters = []; - this.backticks = {}; - this.backticksScanned = false; - this.linkLevel = 0; - } - StateInline.prototype.pushPending = function() { - var token = new Token("text", "", 0); - token.content = this.pending; - token.level = this.pendingLevel; - this.tokens.push(token); - this.pending = ""; - return token; - }; - StateInline.prototype.push = function(type, tag, nesting) { - if (this.pending) { - this.pushPending(); - } - var token = new Token(type, tag, nesting); - var token_meta = null; - if (nesting < 0) { - this.level--; - this.delimiters = this._prev_delimiters.pop(); - } - token.level = this.level; - if (nesting > 0) { - this.level++; - this._prev_delimiters.push(this.delimiters); - this.delimiters = []; - token_meta = { delimiters: this.delimiters }; - } - this.pendingLevel = this.level; - this.tokens.push(token); - this.tokens_meta.push(token_meta); - return token; - }; - StateInline.prototype.scanDelims = function(start, canSplitWord) { - var pos = start, lastChar, nextChar, count, can_open, can_close, isLastWhiteSpace, isLastPunctChar, isNextWhiteSpace, isNextPunctChar, left_flanking = true, right_flanking = true, max = this.posMax, marker = this.src.charCodeAt(start); - lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 32; - while (pos < max && this.src.charCodeAt(pos) === marker) { - pos++; - } - count = pos - start; - nextChar = pos < max ? this.src.charCodeAt(pos) : 32; - isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)); - isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)); - isLastWhiteSpace = isWhiteSpace(lastChar); - isNextWhiteSpace = isWhiteSpace(nextChar); - if (isNextWhiteSpace) { - left_flanking = false; - } else if (isNextPunctChar) { - if (!(isLastWhiteSpace || isLastPunctChar)) { - left_flanking = false; - } - } - if (isLastWhiteSpace) { - right_flanking = false; - } else if (isLastPunctChar) { - if (!(isNextWhiteSpace || isNextPunctChar)) { - right_flanking = false; - } - } - if (!canSplitWord) { - can_open = left_flanking && (!right_flanking || isLastPunctChar); - can_close = right_flanking && (!left_flanking || isNextPunctChar); - } else { - can_open = left_flanking; - can_close = right_flanking; - } - return { - can_open, - can_close, - length: count - }; - }; - StateInline.prototype.Token = Token; - module2.exports = StateInline; - } -}); - -// node_modules/markdown-it/lib/parser_inline.js -var require_parser_inline = __commonJS({ - "node_modules/markdown-it/lib/parser_inline.js"(exports, module2) { - "use strict"; - var Ruler = require_ruler(); - var _rules = [ - ["text", require_text()], - ["linkify", require_linkify2()], - ["newline", require_newline()], - ["escape", require_escape()], - ["backticks", require_backticks()], - ["strikethrough", require_strikethrough().tokenize], - ["emphasis", require_emphasis().tokenize], - ["link", require_link()], - ["image", require_image()], - ["autolink", require_autolink()], - ["html_inline", require_html_inline()], - ["entity", require_entity()] - ]; - var _rules2 = [ - ["balance_pairs", require_balance_pairs()], - ["strikethrough", require_strikethrough().postProcess], - ["emphasis", require_emphasis().postProcess], - ["fragments_join", require_fragments_join()] - ]; - function ParserInline() { - var i2; - this.ruler = new Ruler(); - for (i2 = 0; i2 < _rules.length; i2++) { - this.ruler.push(_rules[i2][0], _rules[i2][1]); - } - this.ruler2 = new Ruler(); - for (i2 = 0; i2 < _rules2.length; i2++) { - this.ruler2.push(_rules2[i2][0], _rules2[i2][1]); - } - } - ParserInline.prototype.skipToken = function(state) { - var ok, i2, pos = state.pos, rules = this.ruler.getRules(""), len = rules.length, maxNesting = state.md.options.maxNesting, cache = state.cache; - if (typeof cache[pos] !== "undefined") { - state.pos = cache[pos]; - return; - } - if (state.level < maxNesting) { - for (i2 = 0; i2 < len; i2++) { - state.level++; - ok = rules[i2](state, true); - state.level--; - if (ok) { - break; - } - } - } else { - state.pos = state.posMax; - } - if (!ok) { - state.pos++; - } - cache[pos] = state.pos; - }; - ParserInline.prototype.tokenize = function(state) { - var ok, i2, rules = this.ruler.getRules(""), len = rules.length, end = state.posMax, maxNesting = state.md.options.maxNesting; - while (state.pos < end) { - if (state.level < maxNesting) { - for (i2 = 0; i2 < len; i2++) { - ok = rules[i2](state, false); - if (ok) { - break; - } - } - } - if (ok) { - if (state.pos >= end) { - break; - } - continue; - } - state.pending += state.src[state.pos++]; - } - if (state.pending) { - state.pushPending(); - } - }; - ParserInline.prototype.parse = function(str, md2, env, outTokens) { - var i2, rules, len; - var state = new this.State(str, md2, env, outTokens); - this.tokenize(state); - rules = this.ruler2.getRules(""); - len = rules.length; - for (i2 = 0; i2 < len; i2++) { - rules[i2](state); - } - }; - ParserInline.prototype.State = require_state_inline(); - module2.exports = ParserInline; - } -}); - -// node_modules/linkify-it/lib/re.js -var require_re = __commonJS({ - "node_modules/linkify-it/lib/re.js"(exports, module2) { - "use strict"; - module2.exports = function(opts) { - var re = {}; - opts = opts || {}; - re.src_Any = require_regex2().source; - re.src_Cc = require_regex3().source; - re.src_Z = require_regex5().source; - re.src_P = require_regex().source; - re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join("|"); - re.src_ZCc = [re.src_Z, re.src_Cc].join("|"); - var text_separators = "[><\uFF5C]"; - re.src_pseudo_letter = "(?:(?!" + text_separators + "|" + re.src_ZPCc + ")" + re.src_Any + ")"; - re.src_ip4 = "(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"; - re.src_auth = "(?:(?:(?!" + re.src_ZCc + "|[@/\\[\\]()]).)+@)?"; - re.src_port = "(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?"; - re.src_host_terminator = "(?=$|" + text_separators + "|" + re.src_ZPCc + ")(?!" + (opts["---"] ? "-(?!--)|" : "-|") + "_|:\\d|\\.-|\\.(?!$|" + re.src_ZPCc + "))"; - re.src_path = "(?:[/?#](?:(?!" + re.src_ZCc + "|" + text_separators + `|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!` + re.src_ZCc + "|\\]).)*\\]|\\((?:(?!" + re.src_ZCc + "|[)]).)*\\)|\\{(?:(?!" + re.src_ZCc + '|[}]).)*\\}|\\"(?:(?!' + re.src_ZCc + `|["]).)+\\"|\\'(?:(?!` + re.src_ZCc + "|[']).)+\\'|\\'(?=" + re.src_pseudo_letter + "|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!" + re.src_ZCc + "|[.]|$)|" + (opts["---"] ? "\\-(?!--(?:[^-]|$))(?:-*)|" : "\\-+|") + ",(?!" + re.src_ZCc + "|$)|;(?!" + re.src_ZCc + "|$)|\\!+(?!" + re.src_ZCc + "|[!]|$)|\\?(?!" + re.src_ZCc + "|[?]|$))+|\\/)?"; - re.src_email_name = '[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*'; - re.src_xn = "xn--[a-z0-9\\-]{1,59}"; - re.src_domain_root = "(?:" + re.src_xn + "|" + re.src_pseudo_letter + "{1,63})"; - re.src_domain = "(?:" + re.src_xn + "|(?:" + re.src_pseudo_letter + ")|(?:" + re.src_pseudo_letter + "(?:-|" + re.src_pseudo_letter + "){0,61}" + re.src_pseudo_letter + "))"; - re.src_host = "(?:(?:(?:(?:" + re.src_domain + ")\\.)*" + re.src_domain + "))"; - re.tpl_host_fuzzy = "(?:" + re.src_ip4 + "|(?:(?:(?:" + re.src_domain + ")\\.)+(?:%TLDS%)))"; - re.tpl_host_no_ip_fuzzy = "(?:(?:(?:" + re.src_domain + ")\\.)+(?:%TLDS%))"; - re.src_host_strict = re.src_host + re.src_host_terminator; - re.tpl_host_fuzzy_strict = re.tpl_host_fuzzy + re.src_host_terminator; - re.src_host_port_strict = re.src_host + re.src_port + re.src_host_terminator; - re.tpl_host_port_fuzzy_strict = re.tpl_host_fuzzy + re.src_port + re.src_host_terminator; - re.tpl_host_port_no_ip_fuzzy_strict = re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator; - re.tpl_host_fuzzy_test = "localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:" + re.src_ZPCc + "|>|$))"; - re.tpl_email_fuzzy = "(^|" + text_separators + '|"|\\(|' + re.src_ZCc + ")(" + re.src_email_name + "@" + re.tpl_host_fuzzy_strict + ")"; - re.tpl_link_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|" + re.src_ZPCc + "))((?![$+<=>^`|\uFF5C])" + re.tpl_host_port_fuzzy_strict + re.src_path + ")"; - re.tpl_link_no_ip_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|" + re.src_ZPCc + "))((?![$+<=>^`|\uFF5C])" + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ")"; - return re; - }; - } -}); - -// node_modules/linkify-it/index.js -var require_linkify_it = __commonJS({ - "node_modules/linkify-it/index.js"(exports, module2) { - "use strict"; - function assign(obj) { - var sources = Array.prototype.slice.call(arguments, 1); - sources.forEach(function(source) { - if (!source) { - return; - } - Object.keys(source).forEach(function(key) { - obj[key] = source[key]; - }); - }); - return obj; - } - function _class(obj) { - return Object.prototype.toString.call(obj); - } - function isString(obj) { - return _class(obj) === "[object String]"; - } - function isObject(obj) { - return _class(obj) === "[object Object]"; - } - function isRegExp(obj) { - return _class(obj) === "[object RegExp]"; - } - function isFunction(obj) { - return _class(obj) === "[object Function]"; - } - function escapeRE(str) { - return str.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&"); - } - var defaultOptions = { - fuzzyLink: true, - fuzzyEmail: true, - fuzzyIP: false - }; - function isOptionsObj(obj) { - return Object.keys(obj || {}).reduce(function(acc, k2) { - return acc || defaultOptions.hasOwnProperty(k2); - }, false); - } - var defaultSchemas = { - "http:": { - validate: function(text, pos, self2) { - var tail = text.slice(pos); - if (!self2.re.http) { - self2.re.http = new RegExp( - "^\\/\\/" + self2.re.src_auth + self2.re.src_host_port_strict + self2.re.src_path, - "i" - ); - } - if (self2.re.http.test(tail)) { - return tail.match(self2.re.http)[0].length; - } - return 0; - } - }, - "https:": "http:", - "ftp:": "http:", - "//": { - validate: function(text, pos, self2) { - var tail = text.slice(pos); - if (!self2.re.no_http) { - self2.re.no_http = new RegExp( - "^" + self2.re.src_auth + "(?:localhost|(?:(?:" + self2.re.src_domain + ")\\.)+" + self2.re.src_domain_root + ")" + self2.re.src_port + self2.re.src_host_terminator + self2.re.src_path, - "i" - ); - } - if (self2.re.no_http.test(tail)) { - if (pos >= 3 && text[pos - 3] === ":") { - return 0; - } - if (pos >= 3 && text[pos - 3] === "/") { - return 0; - } - return tail.match(self2.re.no_http)[0].length; - } - return 0; - } - }, - "mailto:": { - validate: function(text, pos, self2) { - var tail = text.slice(pos); - if (!self2.re.mailto) { - self2.re.mailto = new RegExp( - "^" + self2.re.src_email_name + "@" + self2.re.src_host_strict, - "i" - ); - } - if (self2.re.mailto.test(tail)) { - return tail.match(self2.re.mailto)[0].length; - } - return 0; - } - } - }; - var tlds_2ch_src_re = "a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"; - var tlds_default = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|"); - function resetScanCache(self2) { - self2.__index__ = -1; - self2.__text_cache__ = ""; - } - function createValidator(re) { - return function(text, pos) { - var tail = text.slice(pos); - if (re.test(tail)) { - return tail.match(re)[0].length; - } - return 0; - }; - } - function createNormalizer() { - return function(match, self2) { - self2.normalize(match); - }; - } - function compile(self2) { - var re = self2.re = require_re()(self2.__opts__); - var tlds = self2.__tlds__.slice(); - self2.onCompile(); - if (!self2.__tlds_replaced__) { - tlds.push(tlds_2ch_src_re); - } - tlds.push(re.src_xn); - re.src_tlds = tlds.join("|"); - function untpl(tpl) { - return tpl.replace("%TLDS%", re.src_tlds); - } - re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), "i"); - re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), "i"); - re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), "i"); - re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), "i"); - var aliases2 = []; - self2.__compiled__ = {}; - function schemaError(name, val) { - throw new Error('(LinkifyIt) Invalid schema "' + name + '": ' + val); - } - Object.keys(self2.__schemas__).forEach(function(name) { - var val = self2.__schemas__[name]; - if (val === null) { - return; - } - var compiled = { validate: null, link: null }; - self2.__compiled__[name] = compiled; - if (isObject(val)) { - if (isRegExp(val.validate)) { - compiled.validate = createValidator(val.validate); - } else if (isFunction(val.validate)) { - compiled.validate = val.validate; - } else { - schemaError(name, val); - } - if (isFunction(val.normalize)) { - compiled.normalize = val.normalize; - } else if (!val.normalize) { - compiled.normalize = createNormalizer(); - } else { - schemaError(name, val); - } - return; - } - if (isString(val)) { - aliases2.push(name); - return; - } - schemaError(name, val); - }); - aliases2.forEach(function(alias) { - if (!self2.__compiled__[self2.__schemas__[alias]]) { - return; - } - self2.__compiled__[alias].validate = self2.__compiled__[self2.__schemas__[alias]].validate; - self2.__compiled__[alias].normalize = self2.__compiled__[self2.__schemas__[alias]].normalize; - }); - self2.__compiled__[""] = { validate: null, normalize: createNormalizer() }; - var slist = Object.keys(self2.__compiled__).filter(function(name) { - return name.length > 0 && self2.__compiled__[name]; - }).map(escapeRE).join("|"); - self2.re.schema_test = RegExp("(^|(?!_)(?:[><\uFF5C]|" + re.src_ZPCc + "))(" + slist + ")", "i"); - self2.re.schema_search = RegExp("(^|(?!_)(?:[><\uFF5C]|" + re.src_ZPCc + "))(" + slist + ")", "ig"); - self2.re.schema_at_start = RegExp("^" + self2.re.schema_search.source, "i"); - self2.re.pretest = RegExp( - "(" + self2.re.schema_test.source + ")|(" + self2.re.host_fuzzy_test.source + ")|@", - "i" - ); - resetScanCache(self2); - } - function Match(self2, shift) { - var start = self2.__index__, end = self2.__last_index__, text = self2.__text_cache__.slice(start, end); - this.schema = self2.__schema__.toLowerCase(); - this.index = start + shift; - this.lastIndex = end + shift; - this.raw = text; - this.text = text; - this.url = text; - } - function createMatch(self2, shift) { - var match = new Match(self2, shift); - self2.__compiled__[match.schema].normalize(match, self2); - return match; - } - function LinkifyIt(schemas, options) { - if (!(this instanceof LinkifyIt)) { - return new LinkifyIt(schemas, options); - } - if (!options) { - if (isOptionsObj(schemas)) { - options = schemas; - schemas = {}; - } - } - this.__opts__ = assign({}, defaultOptions, options); - this.__index__ = -1; - this.__last_index__ = -1; - this.__schema__ = ""; - this.__text_cache__ = ""; - this.__schemas__ = assign({}, defaultSchemas, schemas); - this.__compiled__ = {}; - this.__tlds__ = tlds_default; - this.__tlds_replaced__ = false; - this.re = {}; - compile(this); - } - LinkifyIt.prototype.add = function add(schema, definition) { - this.__schemas__[schema] = definition; - compile(this); - return this; - }; - LinkifyIt.prototype.set = function set(options) { - this.__opts__ = assign(this.__opts__, options); - return this; - }; - LinkifyIt.prototype.test = function test(text) { - this.__text_cache__ = text; - this.__index__ = -1; - if (!text.length) { - return false; - } - var m2, ml, me, len, shift, next, re, tld_pos, at_pos; - if (this.re.schema_test.test(text)) { - re = this.re.schema_search; - re.lastIndex = 0; - while ((m2 = re.exec(text)) !== null) { - len = this.testSchemaAt(text, m2[2], re.lastIndex); - if (len) { - this.__schema__ = m2[2]; - this.__index__ = m2.index + m2[1].length; - this.__last_index__ = m2.index + m2[0].length + len; - break; - } - } - } - if (this.__opts__.fuzzyLink && this.__compiled__["http:"]) { - tld_pos = text.search(this.re.host_fuzzy_test); - if (tld_pos >= 0) { - if (this.__index__ < 0 || tld_pos < this.__index__) { - if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) { - shift = ml.index + ml[1].length; - if (this.__index__ < 0 || shift < this.__index__) { - this.__schema__ = ""; - this.__index__ = shift; - this.__last_index__ = ml.index + ml[0].length; - } - } - } - } - } - if (this.__opts__.fuzzyEmail && this.__compiled__["mailto:"]) { - at_pos = text.indexOf("@"); - if (at_pos >= 0) { - if ((me = text.match(this.re.email_fuzzy)) !== null) { - shift = me.index + me[1].length; - next = me.index + me[0].length; - if (this.__index__ < 0 || shift < this.__index__ || shift === this.__index__ && next > this.__last_index__) { - this.__schema__ = "mailto:"; - this.__index__ = shift; - this.__last_index__ = next; - } - } - } - } - return this.__index__ >= 0; - }; - LinkifyIt.prototype.pretest = function pretest(text) { - return this.re.pretest.test(text); - }; - LinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) { - if (!this.__compiled__[schema.toLowerCase()]) { - return 0; - } - return this.__compiled__[schema.toLowerCase()].validate(text, pos, this); - }; - LinkifyIt.prototype.match = function match(text) { - var shift = 0, result = []; - if (this.__index__ >= 0 && this.__text_cache__ === text) { - result.push(createMatch(this, shift)); - shift = this.__last_index__; - } - var tail = shift ? text.slice(shift) : text; - while (this.test(tail)) { - result.push(createMatch(this, shift)); - tail = tail.slice(this.__last_index__); - shift += this.__last_index__; - } - if (result.length) { - return result; - } - return null; - }; - LinkifyIt.prototype.matchAtStart = function matchAtStart(text) { - this.__text_cache__ = text; - this.__index__ = -1; - if (!text.length) - return null; - var m2 = this.re.schema_at_start.exec(text); - if (!m2) - return null; - var len = this.testSchemaAt(text, m2[2], m2[0].length); - if (!len) - return null; - this.__schema__ = m2[2]; - this.__index__ = m2.index + m2[1].length; - this.__last_index__ = m2.index + m2[0].length + len; - return createMatch(this, 0); - }; - LinkifyIt.prototype.tlds = function tlds(list, keepOld) { - list = Array.isArray(list) ? list : [list]; - if (!keepOld) { - this.__tlds__ = list.slice(); - this.__tlds_replaced__ = true; - compile(this); - return this; - } - this.__tlds__ = this.__tlds__.concat(list).sort().filter(function(el, idx, arr) { - return el !== arr[idx - 1]; - }).reverse(); - compile(this); - return this; - }; - LinkifyIt.prototype.normalize = function normalize(match) { - if (!match.schema) { - match.url = "http://" + match.url; - } - if (match.schema === "mailto:" && !/^mailto:/i.test(match.url)) { - match.url = "mailto:" + match.url; - } - }; - LinkifyIt.prototype.onCompile = function onCompile() { - }; - module2.exports = LinkifyIt; - } -}); - -// node_modules/markdown-it/lib/presets/default.js -var require_default = __commonJS({ - "node_modules/markdown-it/lib/presets/default.js"(exports, module2) { - "use strict"; - module2.exports = { - options: { - html: false, - xhtmlOut: false, - breaks: false, - langPrefix: "language-", - linkify: false, - typographer: false, - quotes: "\u201C\u201D\u2018\u2019", - highlight: null, - maxNesting: 100 - }, - components: { - core: {}, - block: {}, - inline: {} - } - }; - } -}); - -// node_modules/markdown-it/lib/presets/zero.js -var require_zero = __commonJS({ - "node_modules/markdown-it/lib/presets/zero.js"(exports, module2) { - "use strict"; - module2.exports = { - options: { - html: false, - xhtmlOut: false, - breaks: false, - langPrefix: "language-", - linkify: false, - typographer: false, - quotes: "\u201C\u201D\u2018\u2019", - highlight: null, - maxNesting: 20 - }, - components: { - core: { - rules: [ - "normalize", - "block", - "inline", - "text_join" - ] - }, - block: { - rules: [ - "paragraph" - ] - }, - inline: { - rules: [ - "text" - ], - rules2: [ - "balance_pairs", - "fragments_join" - ] - } - } - }; - } -}); - -// node_modules/markdown-it/lib/presets/commonmark.js -var require_commonmark = __commonJS({ - "node_modules/markdown-it/lib/presets/commonmark.js"(exports, module2) { - "use strict"; - module2.exports = { - options: { - html: true, - xhtmlOut: true, - breaks: false, - langPrefix: "language-", - linkify: false, - typographer: false, - quotes: "\u201C\u201D\u2018\u2019", - highlight: null, - maxNesting: 20 - }, - components: { - core: { - rules: [ - "normalize", - "block", - "inline", - "text_join" - ] - }, - block: { - rules: [ - "blockquote", - "code", - "fence", - "heading", - "hr", - "html_block", - "lheading", - "list", - "reference", - "paragraph" - ] - }, - inline: { - rules: [ - "autolink", - "backticks", - "emphasis", - "entity", - "escape", - "html_inline", - "image", - "link", - "newline", - "text" - ], - rules2: [ - "balance_pairs", - "emphasis", - "fragments_join" - ] - } - } - }; - } -}); - -// node_modules/markdown-it/lib/index.js -var require_lib4 = __commonJS({ - "node_modules/markdown-it/lib/index.js"(exports, module2) { - "use strict"; - var utils = require_utils(); - var helpers = require_helpers(); - var Renderer = require_renderer(); - var ParserCore = require_parser_core(); - var ParserBlock = require_parser_block(); - var ParserInline = require_parser_inline(); - var LinkifyIt = require_linkify_it(); - var mdurl = require_mdurl(); - var punycode = require("punycode"); - var config = { - default: require_default(), - zero: require_zero(), - commonmark: require_commonmark() - }; - var BAD_PROTO_RE = /^(vbscript|javascript|file|data):/; - var GOOD_DATA_RE = /^data:image\/(gif|png|jpeg|webp);/; - function validateLink(url) { - var str = url.trim().toLowerCase(); - return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) ? true : false : true; - } - var RECODE_HOSTNAME_FOR = ["http:", "https:", "mailto:"]; - function normalizeLink(url) { - var parsed = mdurl.parse(url, true); - if (parsed.hostname) { - if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) { - try { - parsed.hostname = punycode.toASCII(parsed.hostname); - } catch (er) { - } - } - } - return mdurl.encode(mdurl.format(parsed)); - } - function normalizeLinkText(url) { - var parsed = mdurl.parse(url, true); - if (parsed.hostname) { - if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) { - try { - parsed.hostname = punycode.toUnicode(parsed.hostname); - } catch (er) { - } - } - } - return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + "%"); - } - function MarkdownIt2(presetName, options) { - if (!(this instanceof MarkdownIt2)) { - return new MarkdownIt2(presetName, options); - } - if (!options) { - if (!utils.isString(presetName)) { - options = presetName || {}; - presetName = "default"; - } - } - this.inline = new ParserInline(); - this.block = new ParserBlock(); - this.core = new ParserCore(); - this.renderer = new Renderer(); - this.linkify = new LinkifyIt(); - this.validateLink = validateLink; - this.normalizeLink = normalizeLink; - this.normalizeLinkText = normalizeLinkText; - this.utils = utils; - this.helpers = utils.assign({}, helpers); - this.options = {}; - this.configure(presetName); - if (options) { - this.set(options); - } - } - MarkdownIt2.prototype.set = function(options) { - utils.assign(this.options, options); - return this; - }; - MarkdownIt2.prototype.configure = function(presets) { - var self2 = this, presetName; - if (utils.isString(presets)) { - presetName = presets; - presets = config[presetName]; - if (!presets) { - throw new Error('Wrong `markdown-it` preset "' + presetName + '", check name'); - } - } - if (!presets) { - throw new Error("Wrong `markdown-it` preset, can't be empty"); - } - if (presets.options) { - self2.set(presets.options); - } - if (presets.components) { - Object.keys(presets.components).forEach(function(name) { - if (presets.components[name].rules) { - self2[name].ruler.enableOnly(presets.components[name].rules); - } - if (presets.components[name].rules2) { - self2[name].ruler2.enableOnly(presets.components[name].rules2); - } - }); - } - return this; - }; - MarkdownIt2.prototype.enable = function(list, ignoreInvalid) { - var result = []; - if (!Array.isArray(list)) { - list = [list]; - } - ["core", "block", "inline"].forEach(function(chain) { - result = result.concat(this[chain].ruler.enable(list, true)); - }, this); - result = result.concat(this.inline.ruler2.enable(list, true)); - var missed = list.filter(function(name) { - return result.indexOf(name) < 0; - }); - if (missed.length && !ignoreInvalid) { - throw new Error("MarkdownIt. Failed to enable unknown rule(s): " + missed); - } - return this; - }; - MarkdownIt2.prototype.disable = function(list, ignoreInvalid) { - var result = []; - if (!Array.isArray(list)) { - list = [list]; - } - ["core", "block", "inline"].forEach(function(chain) { - result = result.concat(this[chain].ruler.disable(list, true)); - }, this); - result = result.concat(this.inline.ruler2.disable(list, true)); - var missed = list.filter(function(name) { - return result.indexOf(name) < 0; - }); - if (missed.length && !ignoreInvalid) { - throw new Error("MarkdownIt. Failed to disable unknown rule(s): " + missed); - } - return this; - }; - MarkdownIt2.prototype.use = function(plugin) { - var args = [this].concat(Array.prototype.slice.call(arguments, 1)); - plugin.apply(plugin, args); - return this; - }; - MarkdownIt2.prototype.parse = function(src, env) { - if (typeof src !== "string") { - throw new Error("Input data should be a String"); - } - var state = new this.core.State(src, this, env); - this.core.process(state); - return state.tokens; - }; - MarkdownIt2.prototype.render = function(src, env) { - env = env || {}; - return this.renderer.render(this.parse(src, env), this.options, env); - }; - MarkdownIt2.prototype.parseInline = function(src, env) { - var state = new this.core.State(src, this, env); - state.inlineMode = true; - this.core.process(state); - return state.tokens; - }; - MarkdownIt2.prototype.renderInline = function(src, env) { - env = env || {}; - return this.renderer.render(this.parseInline(src, env), this.options, env); - }; - module2.exports = MarkdownIt2; - } -}); - -// node_modules/markdown-it/index.js -var require_markdown_it = __commonJS({ - "node_modules/markdown-it/index.js"(exports, module2) { - "use strict"; - module2.exports = require_lib4(); - } -}); - -// node_modules/classnames/index.js -var require_classnames = __commonJS({ - "node_modules/classnames/index.js"(exports, module2) { - (function() { - "use strict"; - var hasOwn = {}.hasOwnProperty; - var nativeCodeString = "[native code]"; - function classNames() { - var classes = []; - for (var i2 = 0; i2 < arguments.length; i2++) { - var arg = arguments[i2]; - if (!arg) - continue; - var argType = typeof arg; - if (argType === "string" || argType === "number") { - classes.push(arg); - } else if (Array.isArray(arg)) { - if (arg.length) { - var inner = classNames.apply(null, arg); - if (inner) { - classes.push(inner); - } - } - } else if (argType === "object") { - if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) { - classes.push(arg.toString()); - continue; - } - for (var key in arg) { - if (hasOwn.call(arg, key) && arg[key]) { - classes.push(key); - } - } - } - } - return classes.join(" "); - } - if (typeof module2 !== "undefined" && module2.exports) { - classNames.default = classNames; - module2.exports = classNames; - } else if (typeof define === "function" && typeof define.amd === "object" && define.amd) { - define("classnames", [], function() { - return classNames; - }); - } else { - window.classNames = classNames; - } - })(); - } -}); - -// node_modules/date-fns/_lib/requiredArgs/index.js -var require_requiredArgs = __commonJS({ - "node_modules/date-fns/_lib/requiredArgs/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = requiredArgs; - function requiredArgs(required, args) { - if (args.length < required) { - throw new TypeError(required + " argument" + (required > 1 ? "s" : "") + " required, but only " + args.length + " present"); - } - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/isDate/index.js -var require_isDate = __commonJS({ - "node_modules/date-fns/isDate/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = isDate3; - var _index = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } +// node_modules/react-select/node_modules/@babel/runtime/helpers/typeof.js +var require_typeof = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/typeof.js"(exports, module2) { function _typeof(obj) { "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); + return module2.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) { + return typeof obj2; + } : function(obj2) { + return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }, module2.exports.__esModule = true, module2.exports["default"] = module2.exports, _typeof(obj); } - function isDate3(value) { - (0, _index.default)(1, arguments); - return value instanceof Date || _typeof(value) === "object" && Object.prototype.toString.call(value) === "[object Date]"; - } - module2.exports = exports.default; + module2.exports = _typeof, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; } }); -// node_modules/date-fns/toDate/index.js -var require_toDate = __commonJS({ - "node_modules/date-fns/toDate/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = toDate; - var _index = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - function toDate(argument) { - (0, _index.default)(1, arguments); - var argStr = Object.prototype.toString.call(argument); - if (argument instanceof Date || _typeof(argument) === "object" && argStr === "[object Date]") { - return new Date(argument.getTime()); - } else if (typeof argument === "number" || argStr === "[object Number]") { - return new Date(argument); - } else { - if ((typeof argument === "string" || argStr === "[object String]") && typeof console !== "undefined") { - console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"); - console.warn(new Error().stack); - } - return new Date(NaN); - } - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/isValid/index.js -var require_isValid = __commonJS({ - "node_modules/date-fns/isValid/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = isValid; - var _index = _interopRequireDefault(require_isDate()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function isValid(dirtyDate) { - (0, _index3.default)(1, arguments); - if (!(0, _index.default)(dirtyDate) && typeof dirtyDate !== "number") { - return false; - } - var date = (0, _index2.default)(dirtyDate); - return !isNaN(Number(date)); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/toInteger/index.js -var require_toInteger = __commonJS({ - "node_modules/date-fns/_lib/toInteger/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = toInteger; - function toInteger(dirtyNumber) { - if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) { - return NaN; - } - var number = Number(dirtyNumber); - if (isNaN(number)) { - return number; - } - return number < 0 ? Math.ceil(number) : Math.floor(number); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/addMilliseconds/index.js -var require_addMilliseconds = __commonJS({ - "node_modules/date-fns/addMilliseconds/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = addMilliseconds; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function addMilliseconds(dirtyDate, dirtyAmount) { - (0, _index3.default)(2, arguments); - var timestamp = (0, _index2.default)(dirtyDate).getTime(); - var amount = (0, _index.default)(dirtyAmount); - return new Date(timestamp + amount); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/subMilliseconds/index.js -var require_subMilliseconds = __commonJS({ - "node_modules/date-fns/subMilliseconds/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = subMilliseconds; - var _index = _interopRequireDefault(require_addMilliseconds()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - var _index3 = _interopRequireDefault(require_toInteger()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function subMilliseconds(dirtyDate, dirtyAmount) { - (0, _index2.default)(2, arguments); - var amount = (0, _index3.default)(dirtyAmount); - return (0, _index.default)(dirtyDate, -amount); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/getUTCDayOfYear/index.js -var require_getUTCDayOfYear = __commonJS({ - "node_modules/date-fns/_lib/getUTCDayOfYear/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getUTCDayOfYear; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var MILLISECONDS_IN_DAY = 864e5; - function getUTCDayOfYear(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var timestamp = date.getTime(); - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); - var startOfYearTimestamp = date.getTime(); - var difference = timestamp - startOfYearTimestamp; - return Math.floor(difference / MILLISECONDS_IN_DAY) + 1; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/startOfUTCISOWeek/index.js -var require_startOfUTCISOWeek = __commonJS({ - "node_modules/date-fns/_lib/startOfUTCISOWeek/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = startOfUTCISOWeek; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function startOfUTCISOWeek(dirtyDate) { - (0, _index2.default)(1, arguments); - var weekStartsOn = 1; - var date = (0, _index.default)(dirtyDate); - var day = date.getUTCDay(); - var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; - date.setUTCDate(date.getUTCDate() - diff); - date.setUTCHours(0, 0, 0, 0); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/getUTCISOWeekYear/index.js -var require_getUTCISOWeekYear = __commonJS({ - "node_modules/date-fns/_lib/getUTCISOWeekYear/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getUTCISOWeekYear; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - var _index3 = _interopRequireDefault(require_startOfUTCISOWeek()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getUTCISOWeekYear(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var year = date.getUTCFullYear(); - var fourthOfJanuaryOfNextYear = new Date(0); - fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4); - fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0); - var startOfNextYear = (0, _index3.default)(fourthOfJanuaryOfNextYear); - var fourthOfJanuaryOfThisYear = new Date(0); - fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4); - fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0); - var startOfThisYear = (0, _index3.default)(fourthOfJanuaryOfThisYear); - if (date.getTime() >= startOfNextYear.getTime()) { - return year + 1; - } else if (date.getTime() >= startOfThisYear.getTime()) { - return year; - } else { - return year - 1; - } - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/startOfUTCISOWeekYear/index.js -var require_startOfUTCISOWeekYear = __commonJS({ - "node_modules/date-fns/_lib/startOfUTCISOWeekYear/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = startOfUTCISOWeekYear; - var _index = _interopRequireDefault(require_getUTCISOWeekYear()); - var _index2 = _interopRequireDefault(require_startOfUTCISOWeek()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function startOfUTCISOWeekYear(dirtyDate) { - (0, _index3.default)(1, arguments); - var year = (0, _index.default)(dirtyDate); - var fourthOfJanuary = new Date(0); - fourthOfJanuary.setUTCFullYear(year, 0, 4); - fourthOfJanuary.setUTCHours(0, 0, 0, 0); - var date = (0, _index2.default)(fourthOfJanuary); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/getUTCISOWeek/index.js -var require_getUTCISOWeek = __commonJS({ - "node_modules/date-fns/_lib/getUTCISOWeek/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getUTCISOWeek; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_startOfUTCISOWeek()); - var _index3 = _interopRequireDefault(require_startOfUTCISOWeekYear()); - var _index4 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var MILLISECONDS_IN_WEEK = 6048e5; - function getUTCISOWeek(dirtyDate) { - (0, _index4.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime(); - return Math.round(diff / MILLISECONDS_IN_WEEK) + 1; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/defaultOptions/index.js -var require_defaultOptions = __commonJS({ - "node_modules/date-fns/_lib/defaultOptions/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.getDefaultOptions = getDefaultOptions; - exports.setDefaultOptions = setDefaultOptions; - var defaultOptions = {}; - function getDefaultOptions() { - return defaultOptions; - } - function setDefaultOptions(newOptions) { - defaultOptions = newOptions; - } - } -}); - -// node_modules/date-fns/_lib/startOfUTCWeek/index.js -var require_startOfUTCWeek = __commonJS({ - "node_modules/date-fns/_lib/startOfUTCWeek/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = startOfUTCWeek; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - var _index3 = _interopRequireDefault(require_toInteger()); - var _index4 = require_defaultOptions(); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function startOfUTCWeek(dirtyDate, options) { - var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - (0, _index2.default)(1, arguments); - var defaultOptions = (0, _index4.getDefaultOptions)(); - var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); - if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { - throw new RangeError("weekStartsOn must be between 0 and 6 inclusively"); - } - var date = (0, _index.default)(dirtyDate); - var day = date.getUTCDay(); - var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; - date.setUTCDate(date.getUTCDate() - diff); - date.setUTCHours(0, 0, 0, 0); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/getUTCWeekYear/index.js -var require_getUTCWeekYear = __commonJS({ - "node_modules/date-fns/_lib/getUTCWeekYear/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getUTCWeekYear; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - var _index3 = _interopRequireDefault(require_startOfUTCWeek()); - var _index4 = _interopRequireDefault(require_toInteger()); - var _index5 = require_defaultOptions(); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getUTCWeekYear(dirtyDate, options) { - var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var year = date.getUTCFullYear(); - var defaultOptions = (0, _index5.getDefaultOptions)(); - var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); - if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { - throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively"); - } - var firstWeekOfNextYear = new Date(0); - firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate); - firstWeekOfNextYear.setUTCHours(0, 0, 0, 0); - var startOfNextYear = (0, _index3.default)(firstWeekOfNextYear, options); - var firstWeekOfThisYear = new Date(0); - firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate); - firstWeekOfThisYear.setUTCHours(0, 0, 0, 0); - var startOfThisYear = (0, _index3.default)(firstWeekOfThisYear, options); - if (date.getTime() >= startOfNextYear.getTime()) { - return year + 1; - } else if (date.getTime() >= startOfThisYear.getTime()) { - return year; - } else { - return year - 1; - } - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/startOfUTCWeekYear/index.js -var require_startOfUTCWeekYear = __commonJS({ - "node_modules/date-fns/_lib/startOfUTCWeekYear/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = startOfUTCWeekYear; - var _index = _interopRequireDefault(require_getUTCWeekYear()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - var _index3 = _interopRequireDefault(require_startOfUTCWeek()); - var _index4 = _interopRequireDefault(require_toInteger()); - var _index5 = require_defaultOptions(); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function startOfUTCWeekYear(dirtyDate, options) { - var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - (0, _index2.default)(1, arguments); - var defaultOptions = (0, _index5.getDefaultOptions)(); - var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); - var year = (0, _index.default)(dirtyDate, options); - var firstWeek = new Date(0); - firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate); - firstWeek.setUTCHours(0, 0, 0, 0); - var date = (0, _index3.default)(firstWeek, options); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/getUTCWeek/index.js -var require_getUTCWeek = __commonJS({ - "node_modules/date-fns/_lib/getUTCWeek/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getUTCWeek; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_startOfUTCWeek()); - var _index3 = _interopRequireDefault(require_startOfUTCWeekYear()); - var _index4 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var MILLISECONDS_IN_WEEK = 6048e5; - function getUTCWeek(dirtyDate, options) { - (0, _index4.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var diff = (0, _index2.default)(date, options).getTime() - (0, _index3.default)(date, options).getTime(); - return Math.round(diff / MILLISECONDS_IN_WEEK) + 1; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/addLeadingZeros/index.js -var require_addLeadingZeros = __commonJS({ - "node_modules/date-fns/_lib/addLeadingZeros/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = addLeadingZeros; - function addLeadingZeros(number, targetLength) { - var sign = number < 0 ? "-" : ""; - var output = Math.abs(number).toString(); - while (output.length < targetLength) { - output = "0" + output; - } - return sign + output; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/format/lightFormatters/index.js -var require_lightFormatters = __commonJS({ - "node_modules/date-fns/_lib/format/lightFormatters/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _index = _interopRequireDefault(require_addLeadingZeros()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var formatters = { - y: function y2(date, token) { - var signedYear = date.getUTCFullYear(); - var year = signedYear > 0 ? signedYear : 1 - signedYear; - return (0, _index.default)(token === "yy" ? year % 100 : year, token.length); - }, - M: function M2(date, token) { - var month = date.getUTCMonth(); - return token === "M" ? String(month + 1) : (0, _index.default)(month + 1, 2); - }, - d: function d2(date, token) { - return (0, _index.default)(date.getUTCDate(), token.length); - }, - a: function a2(date, token) { - var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? "pm" : "am"; - switch (token) { - case "a": - case "aa": - return dayPeriodEnumValue.toUpperCase(); - case "aaa": - return dayPeriodEnumValue; - case "aaaaa": - return dayPeriodEnumValue[0]; - case "aaaa": - default: - return dayPeriodEnumValue === "am" ? "a.m." : "p.m."; - } - }, - h: function h2(date, token) { - return (0, _index.default)(date.getUTCHours() % 12 || 12, token.length); - }, - H: function H2(date, token) { - return (0, _index.default)(date.getUTCHours(), token.length); - }, - m: function m2(date, token) { - return (0, _index.default)(date.getUTCMinutes(), token.length); - }, - s: function s2(date, token) { - return (0, _index.default)(date.getUTCSeconds(), token.length); - }, - S: function S2(date, token) { - var numberOfDigits = token.length; - var milliseconds = date.getUTCMilliseconds(); - var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3)); - return (0, _index.default)(fractionalSeconds, token.length); - } - }; - var _default = formatters; - exports.default = _default; - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/format/formatters/index.js -var require_formatters = __commonJS({ - "node_modules/date-fns/_lib/format/formatters/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _index = _interopRequireDefault(require_getUTCDayOfYear()); - var _index2 = _interopRequireDefault(require_getUTCISOWeek()); - var _index3 = _interopRequireDefault(require_getUTCISOWeekYear()); - var _index4 = _interopRequireDefault(require_getUTCWeek()); - var _index5 = _interopRequireDefault(require_getUTCWeekYear()); - var _index6 = _interopRequireDefault(require_addLeadingZeros()); - var _index7 = _interopRequireDefault(require_lightFormatters()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var dayPeriodEnum = { - am: "am", - pm: "pm", - midnight: "midnight", - noon: "noon", - morning: "morning", - afternoon: "afternoon", - evening: "evening", - night: "night" - }; - var formatters = { - G: function G2(date, token, localize) { - var era = date.getUTCFullYear() > 0 ? 1 : 0; - switch (token) { - case "G": - case "GG": - case "GGG": - return localize.era(era, { - width: "abbreviated" - }); - case "GGGGG": - return localize.era(era, { - width: "narrow" - }); - case "GGGG": - default: - return localize.era(era, { - width: "wide" - }); - } - }, - y: function y2(date, token, localize) { - if (token === "yo") { - var signedYear = date.getUTCFullYear(); - var year = signedYear > 0 ? signedYear : 1 - signedYear; - return localize.ordinalNumber(year, { - unit: "year" - }); - } - return _index7.default.y(date, token); - }, - Y: function Y2(date, token, localize, options) { - var signedWeekYear = (0, _index5.default)(date, options); - var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; - if (token === "YY") { - var twoDigitYear = weekYear % 100; - return (0, _index6.default)(twoDigitYear, 2); - } - if (token === "Yo") { - return localize.ordinalNumber(weekYear, { - unit: "year" - }); - } - return (0, _index6.default)(weekYear, token.length); - }, - R: function R2(date, token) { - var isoWeekYear = (0, _index3.default)(date); - return (0, _index6.default)(isoWeekYear, token.length); - }, - u: function u2(date, token) { - var year = date.getUTCFullYear(); - return (0, _index6.default)(year, token.length); - }, - Q: function Q2(date, token, localize) { - var quarter = Math.ceil((date.getUTCMonth() + 1) / 3); - switch (token) { - case "Q": - return String(quarter); - case "QQ": - return (0, _index6.default)(quarter, 2); - case "Qo": - return localize.ordinalNumber(quarter, { - unit: "quarter" - }); - case "QQQ": - return localize.quarter(quarter, { - width: "abbreviated", - context: "formatting" - }); - case "QQQQQ": - return localize.quarter(quarter, { - width: "narrow", - context: "formatting" - }); - case "QQQQ": - default: - return localize.quarter(quarter, { - width: "wide", - context: "formatting" - }); - } - }, - q: function q2(date, token, localize) { - var quarter = Math.ceil((date.getUTCMonth() + 1) / 3); - switch (token) { - case "q": - return String(quarter); - case "qq": - return (0, _index6.default)(quarter, 2); - case "qo": - return localize.ordinalNumber(quarter, { - unit: "quarter" - }); - case "qqq": - return localize.quarter(quarter, { - width: "abbreviated", - context: "standalone" - }); - case "qqqqq": - return localize.quarter(quarter, { - width: "narrow", - context: "standalone" - }); - case "qqqq": - default: - return localize.quarter(quarter, { - width: "wide", - context: "standalone" - }); - } - }, - M: function M2(date, token, localize) { - var month = date.getUTCMonth(); - switch (token) { - case "M": - case "MM": - return _index7.default.M(date, token); - case "Mo": - return localize.ordinalNumber(month + 1, { - unit: "month" - }); - case "MMM": - return localize.month(month, { - width: "abbreviated", - context: "formatting" - }); - case "MMMMM": - return localize.month(month, { - width: "narrow", - context: "formatting" - }); - case "MMMM": - default: - return localize.month(month, { - width: "wide", - context: "formatting" - }); - } - }, - L: function L2(date, token, localize) { - var month = date.getUTCMonth(); - switch (token) { - case "L": - return String(month + 1); - case "LL": - return (0, _index6.default)(month + 1, 2); - case "Lo": - return localize.ordinalNumber(month + 1, { - unit: "month" - }); - case "LLL": - return localize.month(month, { - width: "abbreviated", - context: "standalone" - }); - case "LLLLL": - return localize.month(month, { - width: "narrow", - context: "standalone" - }); - case "LLLL": - default: - return localize.month(month, { - width: "wide", - context: "standalone" - }); - } - }, - w: function w2(date, token, localize, options) { - var week = (0, _index4.default)(date, options); - if (token === "wo") { - return localize.ordinalNumber(week, { - unit: "week" - }); - } - return (0, _index6.default)(week, token.length); - }, - I: function I2(date, token, localize) { - var isoWeek = (0, _index2.default)(date); - if (token === "Io") { - return localize.ordinalNumber(isoWeek, { - unit: "week" - }); - } - return (0, _index6.default)(isoWeek, token.length); - }, - d: function d2(date, token, localize) { - if (token === "do") { - return localize.ordinalNumber(date.getUTCDate(), { - unit: "date" - }); - } - return _index7.default.d(date, token); - }, - D: function D2(date, token, localize) { - var dayOfYear = (0, _index.default)(date); - if (token === "Do") { - return localize.ordinalNumber(dayOfYear, { - unit: "dayOfYear" - }); - } - return (0, _index6.default)(dayOfYear, token.length); - }, - E: function E2(date, token, localize) { - var dayOfWeek = date.getUTCDay(); - switch (token) { - case "E": - case "EE": - case "EEE": - return localize.day(dayOfWeek, { - width: "abbreviated", - context: "formatting" - }); - case "EEEEE": - return localize.day(dayOfWeek, { - width: "narrow", - context: "formatting" - }); - case "EEEEEE": - return localize.day(dayOfWeek, { - width: "short", - context: "formatting" - }); - case "EEEE": - default: - return localize.day(dayOfWeek, { - width: "wide", - context: "formatting" - }); - } - }, - e: function e(date, token, localize, options) { - var dayOfWeek = date.getUTCDay(); - var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; - switch (token) { - case "e": - return String(localDayOfWeek); - case "ee": - return (0, _index6.default)(localDayOfWeek, 2); - case "eo": - return localize.ordinalNumber(localDayOfWeek, { - unit: "day" - }); - case "eee": - return localize.day(dayOfWeek, { - width: "abbreviated", - context: "formatting" - }); - case "eeeee": - return localize.day(dayOfWeek, { - width: "narrow", - context: "formatting" - }); - case "eeeeee": - return localize.day(dayOfWeek, { - width: "short", - context: "formatting" - }); - case "eeee": - default: - return localize.day(dayOfWeek, { - width: "wide", - context: "formatting" - }); - } - }, - c: function c2(date, token, localize, options) { - var dayOfWeek = date.getUTCDay(); - var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; - switch (token) { - case "c": - return String(localDayOfWeek); - case "cc": - return (0, _index6.default)(localDayOfWeek, token.length); - case "co": - return localize.ordinalNumber(localDayOfWeek, { - unit: "day" - }); - case "ccc": - return localize.day(dayOfWeek, { - width: "abbreviated", - context: "standalone" - }); - case "ccccc": - return localize.day(dayOfWeek, { - width: "narrow", - context: "standalone" - }); - case "cccccc": - return localize.day(dayOfWeek, { - width: "short", - context: "standalone" - }); - case "cccc": - default: - return localize.day(dayOfWeek, { - width: "wide", - context: "standalone" - }); - } - }, - i: function i2(date, token, localize) { - var dayOfWeek = date.getUTCDay(); - var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; - switch (token) { - case "i": - return String(isoDayOfWeek); - case "ii": - return (0, _index6.default)(isoDayOfWeek, token.length); - case "io": - return localize.ordinalNumber(isoDayOfWeek, { - unit: "day" - }); - case "iii": - return localize.day(dayOfWeek, { - width: "abbreviated", - context: "formatting" - }); - case "iiiii": - return localize.day(dayOfWeek, { - width: "narrow", - context: "formatting" - }); - case "iiiiii": - return localize.day(dayOfWeek, { - width: "short", - context: "formatting" - }); - case "iiii": - default: - return localize.day(dayOfWeek, { - width: "wide", - context: "formatting" - }); - } - }, - a: function a2(date, token, localize) { - var hours = date.getUTCHours(); - var dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; - switch (token) { - case "a": - case "aa": - return localize.dayPeriod(dayPeriodEnumValue, { - width: "abbreviated", - context: "formatting" - }); - case "aaa": - return localize.dayPeriod(dayPeriodEnumValue, { - width: "abbreviated", - context: "formatting" - }).toLowerCase(); - case "aaaaa": - return localize.dayPeriod(dayPeriodEnumValue, { - width: "narrow", - context: "formatting" - }); - case "aaaa": - default: - return localize.dayPeriod(dayPeriodEnumValue, { - width: "wide", - context: "formatting" - }); - } - }, - b: function b2(date, token, localize) { - var hours = date.getUTCHours(); - var dayPeriodEnumValue; - if (hours === 12) { - dayPeriodEnumValue = dayPeriodEnum.noon; - } else if (hours === 0) { - dayPeriodEnumValue = dayPeriodEnum.midnight; - } else { - dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; - } - switch (token) { - case "b": - case "bb": - return localize.dayPeriod(dayPeriodEnumValue, { - width: "abbreviated", - context: "formatting" - }); - case "bbb": - return localize.dayPeriod(dayPeriodEnumValue, { - width: "abbreviated", - context: "formatting" - }).toLowerCase(); - case "bbbbb": - return localize.dayPeriod(dayPeriodEnumValue, { - width: "narrow", - context: "formatting" - }); - case "bbbb": - default: - return localize.dayPeriod(dayPeriodEnumValue, { - width: "wide", - context: "formatting" - }); - } - }, - B: function B2(date, token, localize) { - var hours = date.getUTCHours(); - var dayPeriodEnumValue; - if (hours >= 17) { - dayPeriodEnumValue = dayPeriodEnum.evening; - } else if (hours >= 12) { - dayPeriodEnumValue = dayPeriodEnum.afternoon; - } else if (hours >= 4) { - dayPeriodEnumValue = dayPeriodEnum.morning; - } else { - dayPeriodEnumValue = dayPeriodEnum.night; - } - switch (token) { - case "B": - case "BB": - case "BBB": - return localize.dayPeriod(dayPeriodEnumValue, { - width: "abbreviated", - context: "formatting" - }); - case "BBBBB": - return localize.dayPeriod(dayPeriodEnumValue, { - width: "narrow", - context: "formatting" - }); - case "BBBB": - default: - return localize.dayPeriod(dayPeriodEnumValue, { - width: "wide", - context: "formatting" - }); - } - }, - h: function h2(date, token, localize) { - if (token === "ho") { - var hours = date.getUTCHours() % 12; - if (hours === 0) - hours = 12; - return localize.ordinalNumber(hours, { - unit: "hour" - }); - } - return _index7.default.h(date, token); - }, - H: function H2(date, token, localize) { - if (token === "Ho") { - return localize.ordinalNumber(date.getUTCHours(), { - unit: "hour" - }); - } - return _index7.default.H(date, token); - }, - K: function K(date, token, localize) { - var hours = date.getUTCHours() % 12; - if (token === "Ko") { - return localize.ordinalNumber(hours, { - unit: "hour" - }); - } - return (0, _index6.default)(hours, token.length); - }, - k: function k2(date, token, localize) { - var hours = date.getUTCHours(); - if (hours === 0) - hours = 24; - if (token === "ko") { - return localize.ordinalNumber(hours, { - unit: "hour" - }); - } - return (0, _index6.default)(hours, token.length); - }, - m: function m2(date, token, localize) { - if (token === "mo") { - return localize.ordinalNumber(date.getUTCMinutes(), { - unit: "minute" - }); - } - return _index7.default.m(date, token); - }, - s: function s2(date, token, localize) { - if (token === "so") { - return localize.ordinalNumber(date.getUTCSeconds(), { - unit: "second" - }); - } - return _index7.default.s(date, token); - }, - S: function S2(date, token) { - return _index7.default.S(date, token); - }, - X: function X2(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - if (timezoneOffset === 0) { - return "Z"; - } - switch (token) { - case "X": - return formatTimezoneWithOptionalMinutes(timezoneOffset); - case "XXXX": - case "XX": - return formatTimezone(timezoneOffset); - case "XXXXX": - case "XXX": - default: - return formatTimezone(timezoneOffset, ":"); - } - }, - x: function x2(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - switch (token) { - case "x": - return formatTimezoneWithOptionalMinutes(timezoneOffset); - case "xxxx": - case "xx": - return formatTimezone(timezoneOffset); - case "xxxxx": - case "xxx": - default: - return formatTimezone(timezoneOffset, ":"); - } - }, - O: function O2(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - switch (token) { - case "O": - case "OO": - case "OOO": - return "GMT" + formatTimezoneShort(timezoneOffset, ":"); - case "OOOO": - default: - return "GMT" + formatTimezone(timezoneOffset, ":"); - } - }, - z: function z2(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - switch (token) { - case "z": - case "zz": - case "zzz": - return "GMT" + formatTimezoneShort(timezoneOffset, ":"); - case "zzzz": - default: - return "GMT" + formatTimezone(timezoneOffset, ":"); - } - }, - t: function t2(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timestamp = Math.floor(originalDate.getTime() / 1e3); - return (0, _index6.default)(timestamp, token.length); - }, - T: function T(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timestamp = originalDate.getTime(); - return (0, _index6.default)(timestamp, token.length); - } - }; - function formatTimezoneShort(offset, dirtyDelimiter) { - var sign = offset > 0 ? "-" : "+"; - var absOffset = Math.abs(offset); - var hours = Math.floor(absOffset / 60); - var minutes = absOffset % 60; - if (minutes === 0) { - return sign + String(hours); - } - var delimiter = dirtyDelimiter || ""; - return sign + String(hours) + delimiter + (0, _index6.default)(minutes, 2); - } - function formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) { - if (offset % 60 === 0) { - var sign = offset > 0 ? "-" : "+"; - return sign + (0, _index6.default)(Math.abs(offset) / 60, 2); - } - return formatTimezone(offset, dirtyDelimiter); - } - function formatTimezone(offset, dirtyDelimiter) { - var delimiter = dirtyDelimiter || ""; - var sign = offset > 0 ? "-" : "+"; - var absOffset = Math.abs(offset); - var hours = (0, _index6.default)(Math.floor(absOffset / 60), 2); - var minutes = (0, _index6.default)(absOffset % 60, 2); - return sign + hours + delimiter + minutes; - } - var _default = formatters; - exports.default = _default; - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/format/longFormatters/index.js -var require_longFormatters = __commonJS({ - "node_modules/date-fns/_lib/format/longFormatters/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var dateLongFormatter = function dateLongFormatter2(pattern, formatLong) { - switch (pattern) { - case "P": - return formatLong.date({ - width: "short" - }); - case "PP": - return formatLong.date({ - width: "medium" - }); - case "PPP": - return formatLong.date({ - width: "long" - }); - case "PPPP": - default: - return formatLong.date({ - width: "full" - }); - } - }; - var timeLongFormatter = function timeLongFormatter2(pattern, formatLong) { - switch (pattern) { - case "p": - return formatLong.time({ - width: "short" - }); - case "pp": - return formatLong.time({ - width: "medium" - }); - case "ppp": - return formatLong.time({ - width: "long" - }); - case "pppp": - default: - return formatLong.time({ - width: "full" - }); - } - }; - var dateTimeLongFormatter = function dateTimeLongFormatter2(pattern, formatLong) { - var matchResult = pattern.match(/(P+)(p+)?/) || []; - var datePattern = matchResult[1]; - var timePattern = matchResult[2]; - if (!timePattern) { - return dateLongFormatter(pattern, formatLong); - } - var dateTimeFormat; - switch (datePattern) { - case "P": - dateTimeFormat = formatLong.dateTime({ - width: "short" - }); - break; - case "PP": - dateTimeFormat = formatLong.dateTime({ - width: "medium" - }); - break; - case "PPP": - dateTimeFormat = formatLong.dateTime({ - width: "long" - }); - break; - case "PPPP": - default: - dateTimeFormat = formatLong.dateTime({ - width: "full" - }); - break; - } - return dateTimeFormat.replace("{{date}}", dateLongFormatter(datePattern, formatLong)).replace("{{time}}", timeLongFormatter(timePattern, formatLong)); - }; - var longFormatters = { - p: timeLongFormatter, - P: dateTimeLongFormatter - }; - var _default = longFormatters; - exports.default = _default; - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js -var require_getTimezoneOffsetInMilliseconds = __commonJS({ - "node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getTimezoneOffsetInMilliseconds; - function getTimezoneOffsetInMilliseconds(date) { - var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())); - utcDate.setUTCFullYear(date.getFullYear()); - return date.getTime() - utcDate.getTime(); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/protectedTokens/index.js -var require_protectedTokens = __commonJS({ - "node_modules/date-fns/_lib/protectedTokens/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.isProtectedDayOfYearToken = isProtectedDayOfYearToken; - exports.isProtectedWeekYearToken = isProtectedWeekYearToken; - exports.throwProtectedError = throwProtectedError; - var protectedDayOfYearTokens = ["D", "DD"]; - var protectedWeekYearTokens = ["YY", "YYYY"]; - function isProtectedDayOfYearToken(token) { - return protectedDayOfYearTokens.indexOf(token) !== -1; - } - function isProtectedWeekYearToken(token) { - return protectedWeekYearTokens.indexOf(token) !== -1; - } - function throwProtectedError(token, format, input) { - if (token === "YYYY") { - throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } else if (token === "YY") { - throw new RangeError("Use `yy` instead of `YY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } else if (token === "D") { - throw new RangeError("Use `d` instead of `D` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } else if (token === "DD") { - throw new RangeError("Use `dd` instead of `DD` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } - } - } -}); - -// node_modules/date-fns/locale/en-US/_lib/formatDistance/index.js -var require_formatDistance = __commonJS({ - "node_modules/date-fns/locale/en-US/_lib/formatDistance/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var formatDistanceLocale = { - lessThanXSeconds: { - one: "less than a second", - other: "less than {{count}} seconds" - }, - xSeconds: { - one: "1 second", - other: "{{count}} seconds" - }, - halfAMinute: "half a minute", - lessThanXMinutes: { - one: "less than a minute", - other: "less than {{count}} minutes" - }, - xMinutes: { - one: "1 minute", - other: "{{count}} minutes" - }, - aboutXHours: { - one: "about 1 hour", - other: "about {{count}} hours" - }, - xHours: { - one: "1 hour", - other: "{{count}} hours" - }, - xDays: { - one: "1 day", - other: "{{count}} days" - }, - aboutXWeeks: { - one: "about 1 week", - other: "about {{count}} weeks" - }, - xWeeks: { - one: "1 week", - other: "{{count}} weeks" - }, - aboutXMonths: { - one: "about 1 month", - other: "about {{count}} months" - }, - xMonths: { - one: "1 month", - other: "{{count}} months" - }, - aboutXYears: { - one: "about 1 year", - other: "about {{count}} years" - }, - xYears: { - one: "1 year", - other: "{{count}} years" - }, - overXYears: { - one: "over 1 year", - other: "over {{count}} years" - }, - almostXYears: { - one: "almost 1 year", - other: "almost {{count}} years" - } - }; - var formatDistance = function formatDistance2(token, count, options) { - var result; - var tokenValue = formatDistanceLocale[token]; - if (typeof tokenValue === "string") { - result = tokenValue; - } else if (count === 1) { - result = tokenValue.one; - } else { - result = tokenValue.other.replace("{{count}}", count.toString()); - } - if (options !== null && options !== void 0 && options.addSuffix) { - if (options.comparison && options.comparison > 0) { - return "in " + result; - } else { - return result + " ago"; - } - } - return result; - }; - var _default = formatDistance; - exports.default = _default; - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/locale/_lib/buildFormatLongFn/index.js -var require_buildFormatLongFn = __commonJS({ - "node_modules/date-fns/locale/_lib/buildFormatLongFn/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = buildFormatLongFn; - function buildFormatLongFn(args) { - return function() { - var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - var width2 = options.width ? String(options.width) : args.defaultWidth; - var format = args.formats[width2] || args.formats[args.defaultWidth]; - return format; - }; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/locale/en-US/_lib/formatLong/index.js -var require_formatLong = __commonJS({ - "node_modules/date-fns/locale/en-US/_lib/formatLong/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _index = _interopRequireDefault(require_buildFormatLongFn()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var dateFormats = { - full: "EEEE, MMMM do, y", - long: "MMMM do, y", - medium: "MMM d, y", - short: "MM/dd/yyyy" - }; - var timeFormats = { - full: "h:mm:ss a zzzz", - long: "h:mm:ss a z", - medium: "h:mm:ss a", - short: "h:mm a" - }; - var dateTimeFormats = { - full: "{{date}} 'at' {{time}}", - long: "{{date}} 'at' {{time}}", - medium: "{{date}}, {{time}}", - short: "{{date}}, {{time}}" - }; - var formatLong = { - date: (0, _index.default)({ - formats: dateFormats, - defaultWidth: "full" - }), - time: (0, _index.default)({ - formats: timeFormats, - defaultWidth: "full" - }), - dateTime: (0, _index.default)({ - formats: dateTimeFormats, - defaultWidth: "full" - }) - }; - var _default = formatLong; - exports.default = _default; - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/locale/en-US/_lib/formatRelative/index.js -var require_formatRelative = __commonJS({ - "node_modules/date-fns/locale/en-US/_lib/formatRelative/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var formatRelativeLocale = { - lastWeek: "'last' eeee 'at' p", - yesterday: "'yesterday at' p", - today: "'today at' p", - tomorrow: "'tomorrow at' p", - nextWeek: "eeee 'at' p", - other: "P" - }; - var formatRelative = function formatRelative2(token, _date, _baseDate, _options) { - return formatRelativeLocale[token]; - }; - var _default = formatRelative; - exports.default = _default; - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/locale/_lib/buildLocalizeFn/index.js -var require_buildLocalizeFn = __commonJS({ - "node_modules/date-fns/locale/_lib/buildLocalizeFn/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = buildLocalizeFn; - function buildLocalizeFn(args) { - return function(dirtyIndex, options) { - var context = options !== null && options !== void 0 && options.context ? String(options.context) : "standalone"; - var valuesArray; - if (context === "formatting" && args.formattingValues) { - var defaultWidth = args.defaultFormattingWidth || args.defaultWidth; - var width2 = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth; - valuesArray = args.formattingValues[width2] || args.formattingValues[defaultWidth]; - } else { - var _defaultWidth = args.defaultWidth; - var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth; - valuesArray = args.values[_width] || args.values[_defaultWidth]; - } - var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; - return valuesArray[index]; - }; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/locale/en-US/_lib/localize/index.js -var require_localize = __commonJS({ - "node_modules/date-fns/locale/en-US/_lib/localize/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _index = _interopRequireDefault(require_buildLocalizeFn()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var eraValues = { - narrow: ["B", "A"], - abbreviated: ["BC", "AD"], - wide: ["Before Christ", "Anno Domini"] - }; - var quarterValues = { - narrow: ["1", "2", "3", "4"], - abbreviated: ["Q1", "Q2", "Q3", "Q4"], - wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"] - }; - var monthValues = { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - abbreviated: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - wide: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] - }; - var dayValues = { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], - abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - wide: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] - }; - var dayPeriodValues = { - narrow: { - am: "a", - pm: "p", - midnight: "mi", - noon: "n", - morning: "morning", - afternoon: "afternoon", - evening: "evening", - night: "night" - }, - abbreviated: { - am: "AM", - pm: "PM", - midnight: "midnight", - noon: "noon", - morning: "morning", - afternoon: "afternoon", - evening: "evening", - night: "night" - }, - wide: { - am: "a.m.", - pm: "p.m.", - midnight: "midnight", - noon: "noon", - morning: "morning", - afternoon: "afternoon", - evening: "evening", - night: "night" - } - }; - var formattingDayPeriodValues = { - narrow: { - am: "a", - pm: "p", - midnight: "mi", - noon: "n", - morning: "in the morning", - afternoon: "in the afternoon", - evening: "in the evening", - night: "at night" - }, - abbreviated: { - am: "AM", - pm: "PM", - midnight: "midnight", - noon: "noon", - morning: "in the morning", - afternoon: "in the afternoon", - evening: "in the evening", - night: "at night" - }, - wide: { - am: "a.m.", - pm: "p.m.", - midnight: "midnight", - noon: "noon", - morning: "in the morning", - afternoon: "in the afternoon", - evening: "in the evening", - night: "at night" - } - }; - var ordinalNumber = function ordinalNumber2(dirtyNumber, _options) { - var number = Number(dirtyNumber); - var rem100 = number % 100; - if (rem100 > 20 || rem100 < 10) { - switch (rem100 % 10) { - case 1: - return number + "st"; - case 2: - return number + "nd"; - case 3: - return number + "rd"; - } - } - return number + "th"; - }; - var localize = { - ordinalNumber, - era: (0, _index.default)({ - values: eraValues, - defaultWidth: "wide" - }), - quarter: (0, _index.default)({ - values: quarterValues, - defaultWidth: "wide", - argumentCallback: function argumentCallback(quarter) { - return quarter - 1; - } - }), - month: (0, _index.default)({ - values: monthValues, - defaultWidth: "wide" - }), - day: (0, _index.default)({ - values: dayValues, - defaultWidth: "wide" - }), - dayPeriod: (0, _index.default)({ - values: dayPeriodValues, - defaultWidth: "wide", - formattingValues: formattingDayPeriodValues, - defaultFormattingWidth: "wide" - }) - }; - var _default = localize; - exports.default = _default; - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/locale/_lib/buildMatchFn/index.js -var require_buildMatchFn = __commonJS({ - "node_modules/date-fns/locale/_lib/buildMatchFn/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = buildMatchFn; - function buildMatchFn(args) { - return function(string) { - var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - var width2 = options.width; - var matchPattern = width2 && args.matchPatterns[width2] || args.matchPatterns[args.defaultMatchWidth]; - var matchResult = string.match(matchPattern); - if (!matchResult) { - return null; - } - var matchedString = matchResult[0]; - var parsePatterns = width2 && args.parsePatterns[width2] || args.parsePatterns[args.defaultParseWidth]; - var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function(pattern) { - return pattern.test(matchedString); - }) : findKey(parsePatterns, function(pattern) { - return pattern.test(matchedString); - }); - var value; - value = args.valueCallback ? args.valueCallback(key) : key; - value = options.valueCallback ? options.valueCallback(value) : value; - var rest = string.slice(matchedString.length); - return { - value, - rest - }; - }; - } - function findKey(object, predicate) { - for (var key in object) { - if (object.hasOwnProperty(key) && predicate(object[key])) { - return key; - } - } - return void 0; - } - function findIndex(array, predicate) { - for (var key = 0; key < array.length; key++) { - if (predicate(array[key])) { - return key; - } - } - return void 0; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/locale/_lib/buildMatchPatternFn/index.js -var require_buildMatchPatternFn = __commonJS({ - "node_modules/date-fns/locale/_lib/buildMatchPatternFn/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = buildMatchPatternFn; - function buildMatchPatternFn(args) { - return function(string) { - var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - var matchResult = string.match(args.matchPattern); - if (!matchResult) - return null; - var matchedString = matchResult[0]; - var parseResult = string.match(args.parsePattern); - if (!parseResult) - return null; - var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; - value = options.valueCallback ? options.valueCallback(value) : value; - var rest = string.slice(matchedString.length); - return { - value, - rest - }; - }; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/locale/en-US/_lib/match/index.js -var require_match = __commonJS({ - "node_modules/date-fns/locale/en-US/_lib/match/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _index = _interopRequireDefault(require_buildMatchFn()); - var _index2 = _interopRequireDefault(require_buildMatchPatternFn()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; - var parseOrdinalNumberPattern = /\d+/i; - var matchEraPatterns = { - narrow: /^(b|a)/i, - abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, - wide: /^(before christ|before common era|anno domini|common era)/i - }; - var parseEraPatterns = { - any: [/^b/i, /^(a|c)/i] - }; - var matchQuarterPatterns = { - narrow: /^[1234]/i, - abbreviated: /^q[1234]/i, - wide: /^[1234](th|st|nd|rd)? quarter/i - }; - var parseQuarterPatterns = { - any: [/1/i, /2/i, /3/i, /4/i] - }; - var matchMonthPatterns = { - narrow: /^[jfmasond]/i, - abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, - wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i - }; - var parseMonthPatterns = { - narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i], - any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i] - }; - var matchDayPatterns = { - narrow: /^[smtwf]/i, - short: /^(su|mo|tu|we|th|fr|sa)/i, - abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, - wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i - }; - var parseDayPatterns = { - narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], - any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] - }; - var matchDayPeriodPatterns = { - narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, - any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i - }; - var parseDayPeriodPatterns = { - any: { - am: /^a/i, - pm: /^p/i, - midnight: /^mi/i, - noon: /^no/i, - morning: /morning/i, - afternoon: /afternoon/i, - evening: /evening/i, - night: /night/i - } - }; - var match = { - ordinalNumber: (0, _index2.default)({ - matchPattern: matchOrdinalNumberPattern, - parsePattern: parseOrdinalNumberPattern, - valueCallback: function valueCallback(value) { - return parseInt(value, 10); - } - }), - era: (0, _index.default)({ - matchPatterns: matchEraPatterns, - defaultMatchWidth: "wide", - parsePatterns: parseEraPatterns, - defaultParseWidth: "any" - }), - quarter: (0, _index.default)({ - matchPatterns: matchQuarterPatterns, - defaultMatchWidth: "wide", - parsePatterns: parseQuarterPatterns, - defaultParseWidth: "any", - valueCallback: function valueCallback(index) { - return index + 1; - } - }), - month: (0, _index.default)({ - matchPatterns: matchMonthPatterns, - defaultMatchWidth: "wide", - parsePatterns: parseMonthPatterns, - defaultParseWidth: "any" - }), - day: (0, _index.default)({ - matchPatterns: matchDayPatterns, - defaultMatchWidth: "wide", - parsePatterns: parseDayPatterns, - defaultParseWidth: "any" - }), - dayPeriod: (0, _index.default)({ - matchPatterns: matchDayPeriodPatterns, - defaultMatchWidth: "any", - parsePatterns: parseDayPeriodPatterns, - defaultParseWidth: "any" - }) - }; - var _default = match; - exports.default = _default; - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/locale/en-US/index.js -var require_en_US = __commonJS({ - "node_modules/date-fns/locale/en-US/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _index = _interopRequireDefault(require_formatDistance()); - var _index2 = _interopRequireDefault(require_formatLong()); - var _index3 = _interopRequireDefault(require_formatRelative()); - var _index4 = _interopRequireDefault(require_localize()); - var _index5 = _interopRequireDefault(require_match()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var locale = { - code: "en-US", - formatDistance: _index.default, - formatLong: _index2.default, - formatRelative: _index3.default, - localize: _index4.default, - match: _index5.default, - options: { - weekStartsOn: 0, - firstWeekContainsDate: 1 - } - }; - var _default = locale; - exports.default = _default; - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/defaultLocale/index.js -var require_defaultLocale = __commonJS({ - "node_modules/date-fns/_lib/defaultLocale/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _index = _interopRequireDefault(require_en_US()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var _default = _index.default; - exports.default = _default; - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/format/index.js -var require_format2 = __commonJS({ - "node_modules/date-fns/format/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = format; - var _index = _interopRequireDefault(require_isValid()); - var _index2 = _interopRequireDefault(require_subMilliseconds()); - var _index3 = _interopRequireDefault(require_toDate()); - var _index4 = _interopRequireDefault(require_formatters()); - var _index5 = _interopRequireDefault(require_longFormatters()); - var _index6 = _interopRequireDefault(require_getTimezoneOffsetInMilliseconds()); - var _index7 = require_protectedTokens(); - var _index8 = _interopRequireDefault(require_toInteger()); - var _index9 = _interopRequireDefault(require_requiredArgs()); - var _index10 = require_defaultOptions(); - var _index11 = _interopRequireDefault(require_defaultLocale()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; - var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; - var escapedStringRegExp = /^'([^]*?)'?$/; - var doubleQuoteRegExp = /''/g; - var unescapedLatinCharacterRegExp = /[a-zA-Z]/; - function format(dirtyDate, dirtyFormatStr, options) { - var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4; - (0, _index9.default)(2, arguments); - var formatStr = String(dirtyFormatStr); - var defaultOptions = (0, _index10.getDefaultOptions)(); - var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : _index11.default; - var firstWeekContainsDate = (0, _index8.default)((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1); - if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { - throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively"); - } - var weekStartsOn = (0, _index8.default)((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0); - if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { - throw new RangeError("weekStartsOn must be between 0 and 6 inclusively"); - } - if (!locale.localize) { - throw new RangeError("locale must contain localize property"); - } - if (!locale.formatLong) { - throw new RangeError("locale must contain formatLong property"); - } - var originalDate = (0, _index3.default)(dirtyDate); - if (!(0, _index.default)(originalDate)) { - throw new RangeError("Invalid time value"); - } - var timezoneOffset = (0, _index6.default)(originalDate); - var utcDate = (0, _index2.default)(originalDate, timezoneOffset); - var formatterOptions = { - firstWeekContainsDate, - weekStartsOn, - locale, - _originalDate: originalDate - }; - var result = formatStr.match(longFormattingTokensRegExp).map(function(substring) { - var firstCharacter = substring[0]; - if (firstCharacter === "p" || firstCharacter === "P") { - var longFormatter = _index5.default[firstCharacter]; - return longFormatter(substring, locale.formatLong); - } - return substring; - }).join("").match(formattingTokensRegExp).map(function(substring) { - if (substring === "''") { - return "'"; - } - var firstCharacter = substring[0]; - if (firstCharacter === "'") { - return cleanEscapedString(substring); - } - var formatter = _index4.default[firstCharacter]; - if (formatter) { - if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && (0, _index7.isProtectedWeekYearToken)(substring)) { - (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate)); - } - if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && (0, _index7.isProtectedDayOfYearToken)(substring)) { - (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate)); - } - return formatter(utcDate, substring, locale.localize, formatterOptions); - } - if (firstCharacter.match(unescapedLatinCharacterRegExp)) { - throw new RangeError("Format string contains an unescaped latin alphabet character `" + firstCharacter + "`"); - } - return substring; - }).join(""); - return result; - } - function cleanEscapedString(input) { - var matched = input.match(escapedStringRegExp); - if (!matched) { +// node_modules/react-select/node_modules/@babel/runtime/helpers/toPrimitive.js +var require_toPrimitive = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/toPrimitive.js"(exports, module2) { + var _typeof = require_typeof()["default"]; + function _toPrimitive(input, hint) { + if (_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== void 0) { + var res = prim.call(input, hint || "default"); + if (_typeof(res) !== "object") + return res; + throw new TypeError("@@toPrimitive must return a primitive value."); } - return matched[1].replace(doubleQuoteRegExp, "'"); + return (hint === "string" ? String : Number)(input); } - module2.exports = exports.default; + module2.exports = _toPrimitive, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; } }); -// node_modules/date-fns/addMinutes/index.js -var require_addMinutes = __commonJS({ - "node_modules/date-fns/addMinutes/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = addMinutes; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_addMilliseconds()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; +// node_modules/react-select/node_modules/@babel/runtime/helpers/toPropertyKey.js +var require_toPropertyKey = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/toPropertyKey.js"(exports, module2) { + var _typeof = require_typeof()["default"]; + var toPrimitive = require_toPrimitive(); + function _toPropertyKey(arg) { + var key = toPrimitive(arg, "string"); + return _typeof(key) === "symbol" ? key : String(key); } - var MILLISECONDS_IN_MINUTE = 6e4; - function addMinutes(dirtyDate, dirtyAmount) { - (0, _index3.default)(2, arguments); - var amount = (0, _index.default)(dirtyAmount); - return (0, _index2.default)(dirtyDate, amount * MILLISECONDS_IN_MINUTE); - } - module2.exports = exports.default; + module2.exports = _toPropertyKey, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; } }); -// node_modules/date-fns/addHours/index.js -var require_addHours = __commonJS({ - "node_modules/date-fns/addHours/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = addHours; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_addMilliseconds()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var MILLISECONDS_IN_HOUR = 36e5; - function addHours(dirtyDate, dirtyAmount) { - (0, _index3.default)(2, arguments); - var amount = (0, _index.default)(dirtyAmount); - return (0, _index2.default)(dirtyDate, amount * MILLISECONDS_IN_HOUR); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/addDays/index.js -var require_addDays = __commonJS({ - "node_modules/date-fns/addDays/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = addDays; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function addDays(dirtyDate, dirtyAmount) { - (0, _index3.default)(2, arguments); - var date = (0, _index2.default)(dirtyDate); - var amount = (0, _index.default)(dirtyAmount); - if (isNaN(amount)) { - return new Date(NaN); - } - if (!amount) { - return date; - } - date.setDate(date.getDate() + amount); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/addWeeks/index.js -var require_addWeeks = __commonJS({ - "node_modules/date-fns/addWeeks/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = addWeeks; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_addDays()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function addWeeks(dirtyDate, dirtyAmount) { - (0, _index3.default)(2, arguments); - var amount = (0, _index.default)(dirtyAmount); - var days = amount * 7; - return (0, _index2.default)(dirtyDate, days); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/addMonths/index.js -var require_addMonths = __commonJS({ - "node_modules/date-fns/addMonths/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = addMonths; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function addMonths(dirtyDate, dirtyAmount) { - (0, _index3.default)(2, arguments); - var date = (0, _index2.default)(dirtyDate); - var amount = (0, _index.default)(dirtyAmount); - if (isNaN(amount)) { - return new Date(NaN); - } - if (!amount) { - return date; - } - var dayOfMonth = date.getDate(); - var endOfDesiredMonth = new Date(date.getTime()); - endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0); - var daysInMonth = endOfDesiredMonth.getDate(); - if (dayOfMonth >= daysInMonth) { - return endOfDesiredMonth; +// node_modules/react-select/node_modules/@babel/runtime/helpers/defineProperty.js +var require_defineProperty = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/defineProperty.js"(exports, module2) { + var toPropertyKey = require_toPropertyKey(); + function _defineProperty2(obj, key, value) { + key = toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { + value, + enumerable: true, + configurable: true, + writable: true + }); } else { - date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth); - return date; + obj[key] = value; } + return obj; } - module2.exports = exports.default; + module2.exports = _defineProperty2, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; } }); -// node_modules/date-fns/addYears/index.js -var require_addYears = __commonJS({ - "node_modules/date-fns/addYears/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = addYears; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_addMonths()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function addYears(dirtyDate, dirtyAmount) { - (0, _index3.default)(2, arguments); - var amount = (0, _index.default)(dirtyAmount); - return (0, _index2.default)(dirtyDate, amount * 12); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/subMinutes/index.js -var require_subMinutes = __commonJS({ - "node_modules/date-fns/subMinutes/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = subMinutes; - var _index = _interopRequireDefault(require_addMinutes()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - var _index3 = _interopRequireDefault(require_toInteger()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function subMinutes(dirtyDate, dirtyAmount) { - (0, _index2.default)(2, arguments); - var amount = (0, _index3.default)(dirtyAmount); - return (0, _index.default)(dirtyDate, -amount); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/subHours/index.js -var require_subHours = __commonJS({ - "node_modules/date-fns/subHours/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = subHours; - var _index = _interopRequireDefault(require_addHours()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - var _index3 = _interopRequireDefault(require_toInteger()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function subHours(dirtyDate, dirtyAmount) { - (0, _index2.default)(2, arguments); - var amount = (0, _index3.default)(dirtyAmount); - return (0, _index.default)(dirtyDate, -amount); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/subDays/index.js -var require_subDays = __commonJS({ - "node_modules/date-fns/subDays/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = subDays; - var _index = _interopRequireDefault(require_addDays()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - var _index3 = _interopRequireDefault(require_toInteger()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function subDays(dirtyDate, dirtyAmount) { - (0, _index2.default)(2, arguments); - var amount = (0, _index3.default)(dirtyAmount); - return (0, _index.default)(dirtyDate, -amount); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/subWeeks/index.js -var require_subWeeks = __commonJS({ - "node_modules/date-fns/subWeeks/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = subWeeks; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_addWeeks()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function subWeeks(dirtyDate, dirtyAmount) { - (0, _index3.default)(2, arguments); - var amount = (0, _index.default)(dirtyAmount); - return (0, _index2.default)(dirtyDate, -amount); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/subMonths/index.js -var require_subMonths = __commonJS({ - "node_modules/date-fns/subMonths/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = subMonths; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_addMonths()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function subMonths(dirtyDate, dirtyAmount) { - (0, _index3.default)(2, arguments); - var amount = (0, _index.default)(dirtyAmount); - return (0, _index2.default)(dirtyDate, -amount); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/subYears/index.js -var require_subYears = __commonJS({ - "node_modules/date-fns/subYears/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = subYears; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_addYears()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function subYears(dirtyDate, dirtyAmount) { - (0, _index3.default)(2, arguments); - var amount = (0, _index.default)(dirtyAmount); - return (0, _index2.default)(dirtyDate, -amount); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getSeconds/index.js -var require_getSeconds = __commonJS({ - "node_modules/date-fns/getSeconds/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getSeconds; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getSeconds(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var seconds = date.getSeconds(); - return seconds; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getMinutes/index.js -var require_getMinutes = __commonJS({ - "node_modules/date-fns/getMinutes/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getMinutes; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getMinutes(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var minutes = date.getMinutes(); - return minutes; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getHours/index.js -var require_getHours = __commonJS({ - "node_modules/date-fns/getHours/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getHours; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getHours(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var hours = date.getHours(); - return hours; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getDay/index.js -var require_getDay = __commonJS({ - "node_modules/date-fns/getDay/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getDay; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getDay(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var day = date.getDay(); - return day; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getDate/index.js -var require_getDate = __commonJS({ - "node_modules/date-fns/getDate/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getDate; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getDate(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var dayOfMonth = date.getDate(); - return dayOfMonth; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/startOfWeek/index.js -var require_startOfWeek = __commonJS({ - "node_modules/date-fns/startOfWeek/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = startOfWeek; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_toInteger()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - var _index4 = require_defaultOptions(); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function startOfWeek(dirtyDate, options) { - var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - (0, _index3.default)(1, arguments); - var defaultOptions = (0, _index4.getDefaultOptions)(); - var weekStartsOn = (0, _index2.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); - if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { - throw new RangeError("weekStartsOn must be between 0 and 6 inclusively"); +// node_modules/react-select/node_modules/@babel/runtime/helpers/objectSpread2.js +var require_objectSpread2 = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/objectSpread2.js"(exports, module2) { + var defineProperty = require_defineProperty(); + function ownKeys2(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); } - var date = (0, _index.default)(dirtyDate); - var day = date.getDay(); - var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; - date.setDate(date.getDate() - diff); - date.setHours(0, 0, 0, 0); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/startOfISOWeek/index.js -var require_startOfISOWeek = __commonJS({ - "node_modules/date-fns/startOfISOWeek/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = startOfISOWeek; - var _index = _interopRequireDefault(require_startOfWeek()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function startOfISOWeek(dirtyDate) { - (0, _index2.default)(1, arguments); - return (0, _index.default)(dirtyDate, { - weekStartsOn: 1 - }); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getISOWeekYear/index.js -var require_getISOWeekYear = __commonJS({ - "node_modules/date-fns/getISOWeekYear/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getISOWeekYear; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_startOfISOWeek()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getISOWeekYear(dirtyDate) { - (0, _index3.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var year = date.getFullYear(); - var fourthOfJanuaryOfNextYear = new Date(0); - fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); - fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); - var startOfNextYear = (0, _index2.default)(fourthOfJanuaryOfNextYear); - var fourthOfJanuaryOfThisYear = new Date(0); - fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4); - fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0); - var startOfThisYear = (0, _index2.default)(fourthOfJanuaryOfThisYear); - if (date.getTime() >= startOfNextYear.getTime()) { - return year + 1; - } else if (date.getTime() >= startOfThisYear.getTime()) { - return year; - } else { - return year - 1; - } - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/startOfISOWeekYear/index.js -var require_startOfISOWeekYear = __commonJS({ - "node_modules/date-fns/startOfISOWeekYear/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = startOfISOWeekYear; - var _index = _interopRequireDefault(require_getISOWeekYear()); - var _index2 = _interopRequireDefault(require_startOfISOWeek()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function startOfISOWeekYear(dirtyDate) { - (0, _index3.default)(1, arguments); - var year = (0, _index.default)(dirtyDate); - var fourthOfJanuary = new Date(0); - fourthOfJanuary.setFullYear(year, 0, 4); - fourthOfJanuary.setHours(0, 0, 0, 0); - var date = (0, _index2.default)(fourthOfJanuary); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getISOWeek/index.js -var require_getISOWeek = __commonJS({ - "node_modules/date-fns/getISOWeek/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getISOWeek; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_startOfISOWeek()); - var _index3 = _interopRequireDefault(require_startOfISOWeekYear()); - var _index4 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var MILLISECONDS_IN_WEEK = 6048e5; - function getISOWeek(dirtyDate) { - (0, _index4.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime(); - return Math.round(diff / MILLISECONDS_IN_WEEK) + 1; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getMonth/index.js -var require_getMonth = __commonJS({ - "node_modules/date-fns/getMonth/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getMonth; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getMonth(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var month = date.getMonth(); - return month; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getQuarter/index.js -var require_getQuarter = __commonJS({ - "node_modules/date-fns/getQuarter/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getQuarter; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getQuarter(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var quarter = Math.floor(date.getMonth() / 3) + 1; - return quarter; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getYear/index.js -var require_getYear = __commonJS({ - "node_modules/date-fns/getYear/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getYear; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getYear(dirtyDate) { - (0, _index2.default)(1, arguments); - return (0, _index.default)(dirtyDate).getFullYear(); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getTime/index.js -var require_getTime = __commonJS({ - "node_modules/date-fns/getTime/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getTime; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getTime(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var timestamp = date.getTime(); - return timestamp; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/setSeconds/index.js -var require_setSeconds = __commonJS({ - "node_modules/date-fns/setSeconds/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = setSeconds; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function setSeconds(dirtyDate, dirtySeconds) { - (0, _index3.default)(2, arguments); - var date = (0, _index2.default)(dirtyDate); - var seconds = (0, _index.default)(dirtySeconds); - date.setSeconds(seconds); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/setMinutes/index.js -var require_setMinutes = __commonJS({ - "node_modules/date-fns/setMinutes/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = setMinutes; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function setMinutes(dirtyDate, dirtyMinutes) { - (0, _index3.default)(2, arguments); - var date = (0, _index2.default)(dirtyDate); - var minutes = (0, _index.default)(dirtyMinutes); - date.setMinutes(minutes); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/setHours/index.js -var require_setHours = __commonJS({ - "node_modules/date-fns/setHours/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = setHours; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function setHours(dirtyDate, dirtyHours) { - (0, _index3.default)(2, arguments); - var date = (0, _index2.default)(dirtyDate); - var hours = (0, _index.default)(dirtyHours); - date.setHours(hours); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/getDaysInMonth/index.js -var require_getDaysInMonth = __commonJS({ - "node_modules/date-fns/getDaysInMonth/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = getDaysInMonth; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function getDaysInMonth(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var year = date.getFullYear(); - var monthIndex = date.getMonth(); - var lastDayOfMonth = new Date(0); - lastDayOfMonth.setFullYear(year, monthIndex + 1, 0); - lastDayOfMonth.setHours(0, 0, 0, 0); - return lastDayOfMonth.getDate(); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/setMonth/index.js -var require_setMonth = __commonJS({ - "node_modules/date-fns/setMonth/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = setMonth; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_getDaysInMonth()); - var _index4 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function setMonth(dirtyDate, dirtyMonth) { - (0, _index4.default)(2, arguments); - var date = (0, _index2.default)(dirtyDate); - var month = (0, _index.default)(dirtyMonth); - var year = date.getFullYear(); - var day = date.getDate(); - var dateWithDesiredMonth = new Date(0); - dateWithDesiredMonth.setFullYear(year, month, 15); - dateWithDesiredMonth.setHours(0, 0, 0, 0); - var daysInMonth = (0, _index3.default)(dateWithDesiredMonth); - date.setMonth(month, Math.min(day, daysInMonth)); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/setQuarter/index.js -var require_setQuarter = __commonJS({ - "node_modules/date-fns/setQuarter/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = setQuarter; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_setMonth()); - var _index4 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function setQuarter(dirtyDate, dirtyQuarter) { - (0, _index4.default)(2, arguments); - var date = (0, _index2.default)(dirtyDate); - var quarter = (0, _index.default)(dirtyQuarter); - var oldQuarter = Math.floor(date.getMonth() / 3) + 1; - var diff = quarter - oldQuarter; - return (0, _index3.default)(date, date.getMonth() + diff * 3); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/setYear/index.js -var require_setYear = __commonJS({ - "node_modules/date-fns/setYear/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = setYear; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function setYear(dirtyDate, dirtyYear) { - (0, _index3.default)(2, arguments); - var date = (0, _index2.default)(dirtyDate); - var year = (0, _index.default)(dirtyYear); - if (isNaN(date.getTime())) { - return new Date(NaN); - } - date.setFullYear(year); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/min/index.js -var require_min = __commonJS({ - "node_modules/date-fns/min/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = min; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - function min(dirtyDatesArray) { - (0, _index2.default)(1, arguments); - var datesArray; - if (dirtyDatesArray && typeof dirtyDatesArray.forEach === "function") { - datesArray = dirtyDatesArray; - } else if (_typeof(dirtyDatesArray) === "object" && dirtyDatesArray !== null) { - datesArray = Array.prototype.slice.call(dirtyDatesArray); - } else { - return new Date(NaN); - } - var result; - datesArray.forEach(function(dirtyDate) { - var currentDate = (0, _index.default)(dirtyDate); - if (result === void 0 || result > currentDate || isNaN(currentDate.getDate())) { - result = currentDate; - } - }); - return result || new Date(NaN); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/max/index.js -var require_max = __commonJS({ - "node_modules/date-fns/max/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = max; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - function max(dirtyDatesArray) { - (0, _index2.default)(1, arguments); - var datesArray; - if (dirtyDatesArray && typeof dirtyDatesArray.forEach === "function") { - datesArray = dirtyDatesArray; - } else if (_typeof(dirtyDatesArray) === "object" && dirtyDatesArray !== null) { - datesArray = Array.prototype.slice.call(dirtyDatesArray); - } else { - return new Date(NaN); - } - var result; - datesArray.forEach(function(dirtyDate) { - var currentDate = (0, _index.default)(dirtyDate); - if (result === void 0 || result < currentDate || isNaN(Number(currentDate))) { - result = currentDate; - } - }); - return result || new Date(NaN); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/startOfDay/index.js -var require_startOfDay = __commonJS({ - "node_modules/date-fns/startOfDay/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = startOfDay; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function startOfDay(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - date.setHours(0, 0, 0, 0); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/differenceInCalendarDays/index.js -var require_differenceInCalendarDays = __commonJS({ - "node_modules/date-fns/differenceInCalendarDays/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = differenceInCalendarDays; - var _index = _interopRequireDefault(require_getTimezoneOffsetInMilliseconds()); - var _index2 = _interopRequireDefault(require_startOfDay()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var MILLISECONDS_IN_DAY = 864e5; - function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) { - (0, _index3.default)(2, arguments); - var startOfDayLeft = (0, _index2.default)(dirtyDateLeft); - var startOfDayRight = (0, _index2.default)(dirtyDateRight); - var timestampLeft = startOfDayLeft.getTime() - (0, _index.default)(startOfDayLeft); - var timestampRight = startOfDayRight.getTime() - (0, _index.default)(startOfDayRight); - return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/differenceInCalendarMonths/index.js -var require_differenceInCalendarMonths = __commonJS({ - "node_modules/date-fns/differenceInCalendarMonths/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = differenceInCalendarMonths; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) { - (0, _index2.default)(2, arguments); - var dateLeft = (0, _index.default)(dirtyDateLeft); - var dateRight = (0, _index.default)(dirtyDateRight); - var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear(); - var monthDiff = dateLeft.getMonth() - dateRight.getMonth(); - return yearDiff * 12 + monthDiff; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/differenceInCalendarWeeks/index.js -var require_differenceInCalendarWeeks = __commonJS({ - "node_modules/date-fns/differenceInCalendarWeeks/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = differenceInCalendarWeeks; - var _index = _interopRequireDefault(require_startOfWeek()); - var _index2 = _interopRequireDefault(require_getTimezoneOffsetInMilliseconds()); - var _index3 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var MILLISECONDS_IN_WEEK = 6048e5; - function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) { - (0, _index3.default)(2, arguments); - var startOfWeekLeft = (0, _index.default)(dirtyDateLeft, options); - var startOfWeekRight = (0, _index.default)(dirtyDateRight, options); - var timestampLeft = startOfWeekLeft.getTime() - (0, _index2.default)(startOfWeekLeft); - var timestampRight = startOfWeekRight.getTime() - (0, _index2.default)(startOfWeekRight); - return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/differenceInCalendarYears/index.js -var require_differenceInCalendarYears = __commonJS({ - "node_modules/date-fns/differenceInCalendarYears/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = differenceInCalendarYears; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) { - (0, _index2.default)(2, arguments); - var dateLeft = (0, _index.default)(dirtyDateLeft); - var dateRight = (0, _index.default)(dirtyDateRight); - return dateLeft.getFullYear() - dateRight.getFullYear(); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/startOfMonth/index.js -var require_startOfMonth = __commonJS({ - "node_modules/date-fns/startOfMonth/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = startOfMonth; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function startOfMonth(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - date.setDate(1); - date.setHours(0, 0, 0, 0); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/startOfQuarter/index.js -var require_startOfQuarter = __commonJS({ - "node_modules/date-fns/startOfQuarter/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = startOfQuarter; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function startOfQuarter(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var currentMonth = date.getMonth(); - var month = currentMonth - currentMonth % 3; - date.setMonth(month, 1); - date.setHours(0, 0, 0, 0); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/startOfYear/index.js -var require_startOfYear = __commonJS({ - "node_modules/date-fns/startOfYear/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = startOfYear; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function startOfYear(dirtyDate) { - (0, _index2.default)(1, arguments); - var cleanDate = (0, _index.default)(dirtyDate); - var date = new Date(0); - date.setFullYear(cleanDate.getFullYear(), 0, 1); - date.setHours(0, 0, 0, 0); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/endOfDay/index.js -var require_endOfDay = __commonJS({ - "node_modules/date-fns/endOfDay/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = endOfDay; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function endOfDay(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - date.setHours(23, 59, 59, 999); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/endOfWeek/index.js -var require_endOfWeek = __commonJS({ - "node_modules/date-fns/endOfWeek/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = endOfWeek; - var _index = require_defaultOptions(); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_toInteger()); - var _index4 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function endOfWeek(dirtyDate, options) { - var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - (0, _index4.default)(1, arguments); - var defaultOptions = (0, _index.getDefaultOptions)(); - var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); - if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { - throw new RangeError("weekStartsOn must be between 0 and 6 inclusively"); - } - var date = (0, _index2.default)(dirtyDate); - var day = date.getDay(); - var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn); - date.setDate(date.getDate() + diff); - date.setHours(23, 59, 59, 999); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/endOfMonth/index.js -var require_endOfMonth = __commonJS({ - "node_modules/date-fns/endOfMonth/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = endOfMonth; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function endOfMonth(dirtyDate) { - (0, _index2.default)(1, arguments); - var date = (0, _index.default)(dirtyDate); - var month = date.getMonth(); - date.setFullYear(date.getFullYear(), month + 1, 0); - date.setHours(23, 59, 59, 999); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/isEqual/index.js -var require_isEqual = __commonJS({ - "node_modules/date-fns/isEqual/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = isEqual; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function isEqual(dirtyLeftDate, dirtyRightDate) { - (0, _index2.default)(2, arguments); - var dateLeft = (0, _index.default)(dirtyLeftDate); - var dateRight = (0, _index.default)(dirtyRightDate); - return dateLeft.getTime() === dateRight.getTime(); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/isSameDay/index.js -var require_isSameDay = __commonJS({ - "node_modules/date-fns/isSameDay/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = isSameDay; - var _index = _interopRequireDefault(require_startOfDay()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function isSameDay(dirtyDateLeft, dirtyDateRight) { - (0, _index2.default)(2, arguments); - var dateLeftStartOfDay = (0, _index.default)(dirtyDateLeft); - var dateRightStartOfDay = (0, _index.default)(dirtyDateRight); - return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime(); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/isSameMonth/index.js -var require_isSameMonth = __commonJS({ - "node_modules/date-fns/isSameMonth/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = isSameMonth; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function isSameMonth(dirtyDateLeft, dirtyDateRight) { - (0, _index2.default)(2, arguments); - var dateLeft = (0, _index.default)(dirtyDateLeft); - var dateRight = (0, _index.default)(dirtyDateRight); - return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth(); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/isSameYear/index.js -var require_isSameYear = __commonJS({ - "node_modules/date-fns/isSameYear/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = isSameYear; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function isSameYear(dirtyDateLeft, dirtyDateRight) { - (0, _index2.default)(2, arguments); - var dateLeft = (0, _index.default)(dirtyDateLeft); - var dateRight = (0, _index.default)(dirtyDateRight); - return dateLeft.getFullYear() === dateRight.getFullYear(); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/isSameQuarter/index.js -var require_isSameQuarter = __commonJS({ - "node_modules/date-fns/isSameQuarter/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = isSameQuarter; - var _index = _interopRequireDefault(require_startOfQuarter()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function isSameQuarter(dirtyDateLeft, dirtyDateRight) { - (0, _index2.default)(2, arguments); - var dateLeftStartOfQuarter = (0, _index.default)(dirtyDateLeft); - var dateRightStartOfQuarter = (0, _index.default)(dirtyDateRight); - return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime(); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/isAfter/index.js -var require_isAfter = __commonJS({ - "node_modules/date-fns/isAfter/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = isAfter; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function isAfter(dirtyDate, dirtyDateToCompare) { - (0, _index2.default)(2, arguments); - var date = (0, _index.default)(dirtyDate); - var dateToCompare = (0, _index.default)(dirtyDateToCompare); - return date.getTime() > dateToCompare.getTime(); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/isBefore/index.js -var require_isBefore = __commonJS({ - "node_modules/date-fns/isBefore/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = isBefore; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function isBefore(dirtyDate, dirtyDateToCompare) { - (0, _index2.default)(2, arguments); - var date = (0, _index.default)(dirtyDate); - var dateToCompare = (0, _index.default)(dirtyDateToCompare); - return date.getTime() < dateToCompare.getTime(); - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/isWithinInterval/index.js -var require_isWithinInterval = __commonJS({ - "node_modules/date-fns/isWithinInterval/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = isWithinInterval; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function isWithinInterval(dirtyDate, interval) { - (0, _index2.default)(2, arguments); - var time = (0, _index.default)(dirtyDate).getTime(); - var startTime = (0, _index.default)(interval.start).getTime(); - var endTime = (0, _index.default)(interval.end).getTime(); - if (!(startTime <= endTime)) { - throw new RangeError("Invalid interval"); - } - return time >= startTime && time <= endTime; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/_lib/assign/index.js -var require_assign = __commonJS({ - "node_modules/date-fns/_lib/assign/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = assign; - function assign(target, object) { - if (target == null) { - throw new TypeError("assign requires that input parameter not be null or undefined"); - } - for (var property in object) { - if (Object.prototype.hasOwnProperty.call(object, property)) { - ; - target[property] = object[property]; - } + return keys; + } + function _objectSpread22(target) { + for (var i2 = 1; i2 < arguments.length; i2++) { + var source = null != arguments[i2] ? arguments[i2] : {}; + i2 % 2 ? ownKeys2(Object(source), true).forEach(function(key) { + defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys2(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); } return target; } - module2.exports = exports.default; + module2.exports = _objectSpread22, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; } }); -// node_modules/date-fns/parse/_lib/Setter.js -var require_Setter = __commonJS({ - "node_modules/date-fns/parse/_lib/Setter.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); +// node_modules/react-select/node_modules/@babel/runtime/helpers/arrayWithHoles.js +var require_arrayWithHoles = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/arrayWithHoles.js"(exports, module2) { + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) + return arr; } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.ValueSetter = exports.Setter = exports.DateToSystemTimezoneSetter = void 0; - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var TIMEZONE_UNIT_PRIORITY = 10; - var Setter = /* @__PURE__ */ function() { - function Setter2() { - _classCallCheck(this, Setter2); - _defineProperty2(this, "subPriority", 0); - } - _createClass(Setter2, [{ - key: "validate", - value: function validate(_utcDate, _options) { - return true; - } - }]); - return Setter2; - }(); - exports.Setter = Setter; - var ValueSetter = /* @__PURE__ */ function(_Setter) { - _inherits(ValueSetter2, _Setter); - var _super = _createSuper(ValueSetter2); - function ValueSetter2(value, validateValue, setValue, priority, subPriority) { - var _this; - _classCallCheck(this, ValueSetter2); - _this = _super.call(this); - _this.value = value; - _this.validateValue = validateValue; - _this.setValue = setValue; - _this.priority = priority; - if (subPriority) { - _this.subPriority = subPriority; - } - return _this; - } - _createClass(ValueSetter2, [{ - key: "validate", - value: function validate(utcDate, options) { - return this.validateValue(utcDate, this.value, options); - } - }, { - key: "set", - value: function set(utcDate, flags, options) { - return this.setValue(utcDate, flags, this.value, options); - } - }]); - return ValueSetter2; - }(Setter); - exports.ValueSetter = ValueSetter; - var DateToSystemTimezoneSetter = /* @__PURE__ */ function(_Setter2) { - _inherits(DateToSystemTimezoneSetter2, _Setter2); - var _super2 = _createSuper(DateToSystemTimezoneSetter2); - function DateToSystemTimezoneSetter2() { - var _this2; - _classCallCheck(this, DateToSystemTimezoneSetter2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this2 = _super2.call.apply(_super2, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this2), "priority", TIMEZONE_UNIT_PRIORITY); - _defineProperty2(_assertThisInitialized(_this2), "subPriority", -1); - return _this2; - } - _createClass(DateToSystemTimezoneSetter2, [{ - key: "set", - value: function set(date, flags) { - if (flags.timestampIsSet) { - return date; - } - var convertedDate = new Date(0); - convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()); - convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds()); - return convertedDate; - } - }]); - return DateToSystemTimezoneSetter2; - }(Setter); - exports.DateToSystemTimezoneSetter = DateToSystemTimezoneSetter; + module2.exports = _arrayWithHoles, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; } }); -// node_modules/date-fns/parse/_lib/Parser.js -var require_Parser2 = __commonJS({ - "node_modules/date-fns/parse/_lib/Parser.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Parser = void 0; - var _Setter = require_Setter(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - var Parser = /* @__PURE__ */ function() { - function Parser2() { - _classCallCheck(this, Parser2); - } - _createClass(Parser2, [{ - key: "run", - value: function run(dateString, token, match, options) { - var result = this.parse(dateString, token, match, options); - if (!result) { - return null; - } - return { - setter: new _Setter.ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority), - rest: result.rest - }; - } - }, { - key: "validate", - value: function validate(_utcDate, _value, _options) { - return true; - } - }]); - return Parser2; - }(); - exports.Parser = Parser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/EraParser.js -var require_EraParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/EraParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.EraParser = void 0; - var _Parser2 = require_Parser2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var EraParser = /* @__PURE__ */ function(_Parser) { - _inherits(EraParser2, _Parser); - var _super = _createSuper(EraParser2); - function EraParser2() { - var _this; - _classCallCheck(this, EraParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 140); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["R", "u", "t", "T"]); - return _this; - } - _createClass(EraParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "G": - case "GG": - case "GGG": - return match.era(dateString, { - width: "abbreviated" - }) || match.era(dateString, { - width: "narrow" - }); - case "GGGGG": - return match.era(dateString, { - width: "narrow" - }); - case "GGGG": - default: - return match.era(dateString, { - width: "wide" - }) || match.era(dateString, { - width: "abbreviated" - }) || match.era(dateString, { - width: "narrow" - }); - } - } - }, { - key: "set", - value: function set(date, flags, value) { - flags.era = value; - date.setUTCFullYear(value, 0, 1); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return EraParser2; - }(_Parser2.Parser); - exports.EraParser = EraParser; - } -}); - -// node_modules/date-fns/constants/index.js -var require_constants = __commonJS({ - "node_modules/date-fns/constants/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.secondsInYear = exports.secondsInWeek = exports.secondsInQuarter = exports.secondsInMonth = exports.secondsInMinute = exports.secondsInHour = exports.secondsInDay = exports.quartersInYear = exports.monthsInYear = exports.monthsInQuarter = exports.minutesInHour = exports.minTime = exports.millisecondsInSecond = exports.millisecondsInMinute = exports.millisecondsInHour = exports.maxTime = exports.daysInYear = exports.daysInWeek = void 0; - var daysInWeek = 7; - exports.daysInWeek = daysInWeek; - var daysInYear = 365.2425; - exports.daysInYear = daysInYear; - var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1e3; - exports.maxTime = maxTime; - var millisecondsInMinute = 6e4; - exports.millisecondsInMinute = millisecondsInMinute; - var millisecondsInHour = 36e5; - exports.millisecondsInHour = millisecondsInHour; - var millisecondsInSecond = 1e3; - exports.millisecondsInSecond = millisecondsInSecond; - var minTime = -maxTime; - exports.minTime = minTime; - var minutesInHour = 60; - exports.minutesInHour = minutesInHour; - var monthsInQuarter = 3; - exports.monthsInQuarter = monthsInQuarter; - var monthsInYear = 12; - exports.monthsInYear = monthsInYear; - var quartersInYear = 4; - exports.quartersInYear = quartersInYear; - var secondsInHour = 3600; - exports.secondsInHour = secondsInHour; - var secondsInMinute = 60; - exports.secondsInMinute = secondsInMinute; - var secondsInDay = secondsInHour * 24; - exports.secondsInDay = secondsInDay; - var secondsInWeek = secondsInDay * 7; - exports.secondsInWeek = secondsInWeek; - var secondsInYear = secondsInDay * daysInYear; - exports.secondsInYear = secondsInYear; - var secondsInMonth = secondsInYear / 12; - exports.secondsInMonth = secondsInMonth; - var secondsInQuarter = secondsInMonth * 3; - exports.secondsInQuarter = secondsInQuarter; - } -}); - -// node_modules/date-fns/parse/_lib/constants.js -var require_constants2 = __commonJS({ - "node_modules/date-fns/parse/_lib/constants.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.timezonePatterns = exports.numericPatterns = void 0; - var numericPatterns = { - month: /^(1[0-2]|0?\d)/, - date: /^(3[0-1]|[0-2]?\d)/, - dayOfYear: /^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/, - week: /^(5[0-3]|[0-4]?\d)/, - hour23h: /^(2[0-3]|[0-1]?\d)/, - hour24h: /^(2[0-4]|[0-1]?\d)/, - hour11h: /^(1[0-1]|0?\d)/, - hour12h: /^(1[0-2]|0?\d)/, - minute: /^[0-5]?\d/, - second: /^[0-5]?\d/, - singleDigit: /^\d/, - twoDigits: /^\d{1,2}/, - threeDigits: /^\d{1,3}/, - fourDigits: /^\d{1,4}/, - anyDigitsSigned: /^-?\d+/, - singleDigitSigned: /^-?\d/, - twoDigitsSigned: /^-?\d{1,2}/, - threeDigitsSigned: /^-?\d{1,3}/, - fourDigitsSigned: /^-?\d{1,4}/ - }; - exports.numericPatterns = numericPatterns; - var timezonePatterns = { - basicOptionalMinutes: /^([+-])(\d{2})(\d{2})?|Z/, - basic: /^([+-])(\d{2})(\d{2})|Z/, - basicOptionalSeconds: /^([+-])(\d{2})(\d{2})((\d{2}))?|Z/, - extended: /^([+-])(\d{2}):(\d{2})|Z/, - extendedOptionalSeconds: /^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/ - }; - exports.timezonePatterns = timezonePatterns; - } -}); - -// node_modules/date-fns/parse/_lib/utils.js -var require_utils2 = __commonJS({ - "node_modules/date-fns/parse/_lib/utils.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.dayPeriodEnumToHours = dayPeriodEnumToHours; - exports.isLeapYearIndex = isLeapYearIndex; - exports.mapValue = mapValue; - exports.normalizeTwoDigitYear = normalizeTwoDigitYear; - exports.parseAnyDigitsSigned = parseAnyDigitsSigned; - exports.parseNDigits = parseNDigits; - exports.parseNDigitsSigned = parseNDigitsSigned; - exports.parseNumericPattern = parseNumericPattern; - exports.parseTimezonePattern = parseTimezonePattern; - var _index = require_constants(); - var _constants = require_constants2(); - function mapValue(parseFnResult, mapFn) { - if (!parseFnResult) { - return parseFnResult; - } - return { - value: mapFn(parseFnResult.value), - rest: parseFnResult.rest - }; - } - function parseNumericPattern(pattern, dateString) { - var matchResult = dateString.match(pattern); - if (!matchResult) { - return null; - } - return { - value: parseInt(matchResult[0], 10), - rest: dateString.slice(matchResult[0].length) - }; - } - function parseTimezonePattern(pattern, dateString) { - var matchResult = dateString.match(pattern); - if (!matchResult) { - return null; - } - if (matchResult[0] === "Z") { - return { - value: 0, - rest: dateString.slice(1) - }; - } - var sign = matchResult[1] === "+" ? 1 : -1; - var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0; - var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0; - var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0; - return { - value: sign * (hours * _index.millisecondsInHour + minutes * _index.millisecondsInMinute + seconds * _index.millisecondsInSecond), - rest: dateString.slice(matchResult[0].length) - }; - } - function parseAnyDigitsSigned(dateString) { - return parseNumericPattern(_constants.numericPatterns.anyDigitsSigned, dateString); - } - function parseNDigits(n2, dateString) { - switch (n2) { - case 1: - return parseNumericPattern(_constants.numericPatterns.singleDigit, dateString); - case 2: - return parseNumericPattern(_constants.numericPatterns.twoDigits, dateString); - case 3: - return parseNumericPattern(_constants.numericPatterns.threeDigits, dateString); - case 4: - return parseNumericPattern(_constants.numericPatterns.fourDigits, dateString); - default: - return parseNumericPattern(new RegExp("^\\d{1," + n2 + "}"), dateString); - } - } - function parseNDigitsSigned(n2, dateString) { - switch (n2) { - case 1: - return parseNumericPattern(_constants.numericPatterns.singleDigitSigned, dateString); - case 2: - return parseNumericPattern(_constants.numericPatterns.twoDigitsSigned, dateString); - case 3: - return parseNumericPattern(_constants.numericPatterns.threeDigitsSigned, dateString); - case 4: - return parseNumericPattern(_constants.numericPatterns.fourDigitsSigned, dateString); - default: - return parseNumericPattern(new RegExp("^-?\\d{1," + n2 + "}"), dateString); - } - } - function dayPeriodEnumToHours(dayPeriod) { - switch (dayPeriod) { - case "morning": - return 4; - case "evening": - return 17; - case "pm": - case "noon": - case "afternoon": - return 12; - case "am": - case "midnight": - case "night": - default: - return 0; - } - } - function normalizeTwoDigitYear(twoDigitYear, currentYear) { - var isCommonEra = currentYear > 0; - var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear; - var result; - if (absCurrentYear <= 50) { - result = twoDigitYear || 100; - } else { - var rangeEnd = absCurrentYear + 50; - var rangeEndCentury = Math.floor(rangeEnd / 100) * 100; - var isPreviousCentury = twoDigitYear >= rangeEnd % 100; - result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0); - } - return isCommonEra ? result : 1 - result; - } - function isLeapYearIndex(year) { - return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0; - } - } -}); - -// node_modules/date-fns/parse/_lib/parsers/YearParser.js -var require_YearParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/YearParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.YearParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var YearParser = /* @__PURE__ */ function(_Parser) { - _inherits(YearParser2, _Parser); - var _super = _createSuper(YearParser2); - function YearParser2() { - var _this; - _classCallCheck(this, YearParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 130); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["Y", "R", "u", "w", "I", "i", "e", "c", "t", "T"]); - return _this; - } - _createClass(YearParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - var valueCallback = function valueCallback2(year) { - return { - year, - isTwoDigitYear: token === "yy" - }; - }; - switch (token) { - case "y": - return (0, _utils.mapValue)((0, _utils.parseNDigits)(4, dateString), valueCallback); - case "yo": - return (0, _utils.mapValue)(match.ordinalNumber(dateString, { - unit: "year" - }), valueCallback); - default: - return (0, _utils.mapValue)((0, _utils.parseNDigits)(token.length, dateString), valueCallback); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value.isTwoDigitYear || value.year > 0; - } - }, { - key: "set", - value: function set(date, flags, value) { - var currentYear = date.getUTCFullYear(); - if (value.isTwoDigitYear) { - var normalizedTwoDigitYear = (0, _utils.normalizeTwoDigitYear)(value.year, currentYear); - date.setUTCFullYear(normalizedTwoDigitYear, 0, 1); - date.setUTCHours(0, 0, 0, 0); - return date; - } - var year = !("era" in flags) || flags.era === 1 ? value.year : 1 - value.year; - date.setUTCFullYear(year, 0, 1); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return YearParser2; - }(_Parser2.Parser); - exports.YearParser = YearParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js -var require_LocalWeekYearParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.LocalWeekYearParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - var _index = _interopRequireDefault(require_getUTCWeekYear()); - var _index2 = _interopRequireDefault(require_startOfUTCWeek()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var LocalWeekYearParser = /* @__PURE__ */ function(_Parser) { - _inherits(LocalWeekYearParser2, _Parser); - var _super = _createSuper(LocalWeekYearParser2); - function LocalWeekYearParser2() { - var _this; - _classCallCheck(this, LocalWeekYearParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 130); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["y", "R", "u", "Q", "q", "M", "L", "I", "d", "D", "i", "t", "T"]); - return _this; - } - _createClass(LocalWeekYearParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - var valueCallback = function valueCallback2(year) { - return { - year, - isTwoDigitYear: token === "YY" - }; - }; - switch (token) { - case "Y": - return (0, _utils.mapValue)((0, _utils.parseNDigits)(4, dateString), valueCallback); - case "Yo": - return (0, _utils.mapValue)(match.ordinalNumber(dateString, { - unit: "year" - }), valueCallback); - default: - return (0, _utils.mapValue)((0, _utils.parseNDigits)(token.length, dateString), valueCallback); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value.isTwoDigitYear || value.year > 0; - } - }, { - key: "set", - value: function set(date, flags, value, options) { - var currentYear = (0, _index.default)(date, options); - if (value.isTwoDigitYear) { - var normalizedTwoDigitYear = (0, _utils.normalizeTwoDigitYear)(value.year, currentYear); - date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate); - date.setUTCHours(0, 0, 0, 0); - return (0, _index2.default)(date, options); - } - var year = !("era" in flags) || flags.era === 1 ? value.year : 1 - value.year; - date.setUTCFullYear(year, 0, options.firstWeekContainsDate); - date.setUTCHours(0, 0, 0, 0); - return (0, _index2.default)(date, options); - } - }]); - return LocalWeekYearParser2; - }(_Parser2.Parser); - exports.LocalWeekYearParser = LocalWeekYearParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js -var require_ISOWeekYearParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.ISOWeekYearParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - var _index = _interopRequireDefault(require_startOfUTCISOWeek()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var ISOWeekYearParser = /* @__PURE__ */ function(_Parser) { - _inherits(ISOWeekYearParser2, _Parser); - var _super = _createSuper(ISOWeekYearParser2); - function ISOWeekYearParser2() { - var _this; - _classCallCheck(this, ISOWeekYearParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 130); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["G", "y", "Y", "u", "Q", "q", "M", "L", "w", "d", "D", "e", "c", "t", "T"]); - return _this; - } - _createClass(ISOWeekYearParser2, [{ - key: "parse", - value: function parse(dateString, token) { - if (token === "R") { - return (0, _utils.parseNDigitsSigned)(4, dateString); - } - return (0, _utils.parseNDigitsSigned)(token.length, dateString); - } - }, { - key: "set", - value: function set(_date, _flags, value) { - var firstWeekOfYear = new Date(0); - firstWeekOfYear.setUTCFullYear(value, 0, 4); - firstWeekOfYear.setUTCHours(0, 0, 0, 0); - return (0, _index.default)(firstWeekOfYear); - } - }]); - return ISOWeekYearParser2; - }(_Parser2.Parser); - exports.ISOWeekYearParser = ISOWeekYearParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js -var require_ExtendedYearParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.ExtendedYearParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var ExtendedYearParser = /* @__PURE__ */ function(_Parser) { - _inherits(ExtendedYearParser2, _Parser); - var _super = _createSuper(ExtendedYearParser2); - function ExtendedYearParser2() { - var _this; - _classCallCheck(this, ExtendedYearParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 130); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["G", "y", "Y", "R", "w", "I", "i", "e", "c", "t", "T"]); - return _this; - } - _createClass(ExtendedYearParser2, [{ - key: "parse", - value: function parse(dateString, token) { - if (token === "u") { - return (0, _utils.parseNDigitsSigned)(4, dateString); - } - return (0, _utils.parseNDigitsSigned)(token.length, dateString); - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCFullYear(value, 0, 1); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return ExtendedYearParser2; - }(_Parser2.Parser); - exports.ExtendedYearParser = ExtendedYearParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/QuarterParser.js -var require_QuarterParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/QuarterParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.QuarterParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var QuarterParser = /* @__PURE__ */ function(_Parser) { - _inherits(QuarterParser2, _Parser); - var _super = _createSuper(QuarterParser2); - function QuarterParser2() { - var _this; - _classCallCheck(this, QuarterParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 120); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["Y", "R", "q", "M", "L", "w", "I", "d", "D", "i", "e", "c", "t", "T"]); - return _this; - } - _createClass(QuarterParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "Q": - case "QQ": - return (0, _utils.parseNDigits)(token.length, dateString); - case "Qo": - return match.ordinalNumber(dateString, { - unit: "quarter" - }); - case "QQQ": - return match.quarter(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.quarter(dateString, { - width: "narrow", - context: "formatting" - }); - case "QQQQQ": - return match.quarter(dateString, { - width: "narrow", - context: "formatting" - }); - case "QQQQ": - default: - return match.quarter(dateString, { - width: "wide", - context: "formatting" - }) || match.quarter(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.quarter(dateString, { - width: "narrow", - context: "formatting" - }); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 1 && value <= 4; - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCMonth((value - 1) * 3, 1); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return QuarterParser2; - }(_Parser2.Parser); - exports.QuarterParser = QuarterParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js -var require_StandAloneQuarterParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.StandAloneQuarterParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var StandAloneQuarterParser = /* @__PURE__ */ function(_Parser) { - _inherits(StandAloneQuarterParser2, _Parser); - var _super = _createSuper(StandAloneQuarterParser2); - function StandAloneQuarterParser2() { - var _this; - _classCallCheck(this, StandAloneQuarterParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 120); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["Y", "R", "Q", "M", "L", "w", "I", "d", "D", "i", "e", "c", "t", "T"]); - return _this; - } - _createClass(StandAloneQuarterParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "q": - case "qq": - return (0, _utils.parseNDigits)(token.length, dateString); - case "qo": - return match.ordinalNumber(dateString, { - unit: "quarter" - }); - case "qqq": - return match.quarter(dateString, { - width: "abbreviated", - context: "standalone" - }) || match.quarter(dateString, { - width: "narrow", - context: "standalone" - }); - case "qqqqq": - return match.quarter(dateString, { - width: "narrow", - context: "standalone" - }); - case "qqqq": - default: - return match.quarter(dateString, { - width: "wide", - context: "standalone" - }) || match.quarter(dateString, { - width: "abbreviated", - context: "standalone" - }) || match.quarter(dateString, { - width: "narrow", - context: "standalone" - }); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 1 && value <= 4; - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCMonth((value - 1) * 3, 1); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return StandAloneQuarterParser2; - }(_Parser2.Parser); - exports.StandAloneQuarterParser = StandAloneQuarterParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/MonthParser.js -var require_MonthParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/MonthParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.MonthParser = void 0; - var _utils = require_utils2(); - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var MonthParser = /* @__PURE__ */ function(_Parser) { - _inherits(MonthParser2, _Parser); - var _super = _createSuper(MonthParser2); - function MonthParser2() { - var _this; - _classCallCheck(this, MonthParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["Y", "R", "q", "Q", "L", "w", "I", "D", "i", "e", "c", "t", "T"]); - _defineProperty2(_assertThisInitialized(_this), "priority", 110); - return _this; - } - _createClass(MonthParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - var valueCallback = function valueCallback2(value) { - return value - 1; - }; - switch (token) { - case "M": - return (0, _utils.mapValue)((0, _utils.parseNumericPattern)(_constants.numericPatterns.month, dateString), valueCallback); - case "MM": - return (0, _utils.mapValue)((0, _utils.parseNDigits)(2, dateString), valueCallback); - case "Mo": - return (0, _utils.mapValue)(match.ordinalNumber(dateString, { - unit: "month" - }), valueCallback); - case "MMM": - return match.month(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.month(dateString, { - width: "narrow", - context: "formatting" - }); - case "MMMMM": - return match.month(dateString, { - width: "narrow", - context: "formatting" - }); - case "MMMM": - default: - return match.month(dateString, { - width: "wide", - context: "formatting" - }) || match.month(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.month(dateString, { - width: "narrow", - context: "formatting" - }); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 0 && value <= 11; - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCMonth(value, 1); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return MonthParser2; - }(_Parser2.Parser); - exports.MonthParser = MonthParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js -var require_StandAloneMonthParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.StandAloneMonthParser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var StandAloneMonthParser = /* @__PURE__ */ function(_Parser) { - _inherits(StandAloneMonthParser2, _Parser); - var _super = _createSuper(StandAloneMonthParser2); - function StandAloneMonthParser2() { - var _this; - _classCallCheck(this, StandAloneMonthParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 110); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["Y", "R", "q", "Q", "M", "w", "I", "D", "i", "e", "c", "t", "T"]); - return _this; - } - _createClass(StandAloneMonthParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - var valueCallback = function valueCallback2(value) { - return value - 1; - }; - switch (token) { - case "L": - return (0, _utils.mapValue)((0, _utils.parseNumericPattern)(_constants.numericPatterns.month, dateString), valueCallback); - case "LL": - return (0, _utils.mapValue)((0, _utils.parseNDigits)(2, dateString), valueCallback); - case "Lo": - return (0, _utils.mapValue)(match.ordinalNumber(dateString, { - unit: "month" - }), valueCallback); - case "LLL": - return match.month(dateString, { - width: "abbreviated", - context: "standalone" - }) || match.month(dateString, { - width: "narrow", - context: "standalone" - }); - case "LLLLL": - return match.month(dateString, { - width: "narrow", - context: "standalone" - }); - case "LLLL": - default: - return match.month(dateString, { - width: "wide", - context: "standalone" - }) || match.month(dateString, { - width: "abbreviated", - context: "standalone" - }) || match.month(dateString, { - width: "narrow", - context: "standalone" - }); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 0 && value <= 11; - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCMonth(value, 1); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return StandAloneMonthParser2; - }(_Parser2.Parser); - exports.StandAloneMonthParser = StandAloneMonthParser; - } -}); - -// node_modules/date-fns/_lib/setUTCWeek/index.js -var require_setUTCWeek = __commonJS({ - "node_modules/date-fns/_lib/setUTCWeek/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = setUTCWeek; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_getUTCWeek()); - var _index4 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function setUTCWeek(dirtyDate, dirtyWeek, options) { - (0, _index4.default)(2, arguments); - var date = (0, _index2.default)(dirtyDate); - var week = (0, _index.default)(dirtyWeek); - var diff = (0, _index3.default)(date, options) - week; - date.setUTCDate(date.getUTCDate() - diff * 7); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js -var require_LocalWeekParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.LocalWeekParser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - var _index = _interopRequireDefault(require_setUTCWeek()); - var _index2 = _interopRequireDefault(require_startOfUTCWeek()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var LocalWeekParser = /* @__PURE__ */ function(_Parser) { - _inherits(LocalWeekParser2, _Parser); - var _super = _createSuper(LocalWeekParser2); - function LocalWeekParser2() { - var _this; - _classCallCheck(this, LocalWeekParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 100); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["y", "R", "u", "q", "Q", "M", "L", "I", "d", "D", "i", "t", "T"]); - return _this; - } - _createClass(LocalWeekParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "w": - return (0, _utils.parseNumericPattern)(_constants.numericPatterns.week, dateString); - case "wo": - return match.ordinalNumber(dateString, { - unit: "week" - }); - default: - return (0, _utils.parseNDigits)(token.length, dateString); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 1 && value <= 53; - } - }, { - key: "set", - value: function set(date, _flags, value, options) { - return (0, _index2.default)((0, _index.default)(date, value, options), options); - } - }]); - return LocalWeekParser2; - }(_Parser2.Parser); - exports.LocalWeekParser = LocalWeekParser; - } -}); - -// node_modules/date-fns/_lib/setUTCISOWeek/index.js -var require_setUTCISOWeek = __commonJS({ - "node_modules/date-fns/_lib/setUTCISOWeek/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = setUTCISOWeek; - var _index = _interopRequireDefault(require_toInteger()); - var _index2 = _interopRequireDefault(require_toDate()); - var _index3 = _interopRequireDefault(require_getUTCISOWeek()); - var _index4 = _interopRequireDefault(require_requiredArgs()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function setUTCISOWeek(dirtyDate, dirtyISOWeek) { - (0, _index4.default)(2, arguments); - var date = (0, _index2.default)(dirtyDate); - var isoWeek = (0, _index.default)(dirtyISOWeek); - var diff = (0, _index3.default)(date) - isoWeek; - date.setUTCDate(date.getUTCDate() - diff * 7); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js -var require_ISOWeekParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.ISOWeekParser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - var _index = _interopRequireDefault(require_setUTCISOWeek()); - var _index2 = _interopRequireDefault(require_startOfUTCISOWeek()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var ISOWeekParser = /* @__PURE__ */ function(_Parser) { - _inherits(ISOWeekParser2, _Parser); - var _super = _createSuper(ISOWeekParser2); - function ISOWeekParser2() { - var _this; - _classCallCheck(this, ISOWeekParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 100); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["y", "Y", "u", "q", "Q", "M", "L", "w", "d", "D", "e", "c", "t", "T"]); - return _this; - } - _createClass(ISOWeekParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "I": - return (0, _utils.parseNumericPattern)(_constants.numericPatterns.week, dateString); - case "Io": - return match.ordinalNumber(dateString, { - unit: "week" - }); - default: - return (0, _utils.parseNDigits)(token.length, dateString); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 1 && value <= 53; - } - }, { - key: "set", - value: function set(date, _flags, value) { - return (0, _index2.default)((0, _index.default)(date, value)); - } - }]); - return ISOWeekParser2; - }(_Parser2.Parser); - exports.ISOWeekParser = ISOWeekParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/DateParser.js -var require_DateParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/DateParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.DateParser = void 0; - var _utils = require_utils2(); - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - var DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - var DateParser = /* @__PURE__ */ function(_Parser) { - _inherits(DateParser2, _Parser); - var _super = _createSuper(DateParser2); - function DateParser2() { - var _this; - _classCallCheck(this, DateParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 90); - _defineProperty2(_assertThisInitialized(_this), "subPriority", 1); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["Y", "R", "q", "Q", "w", "I", "D", "i", "e", "c", "t", "T"]); - return _this; - } - _createClass(DateParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "d": - return (0, _utils.parseNumericPattern)(_constants.numericPatterns.date, dateString); - case "do": - return match.ordinalNumber(dateString, { - unit: "date" - }); - default: - return (0, _utils.parseNDigits)(token.length, dateString); - } - } - }, { - key: "validate", - value: function validate(date, value) { - var year = date.getUTCFullYear(); - var isLeapYear = (0, _utils.isLeapYearIndex)(year); - var month = date.getUTCMonth(); - if (isLeapYear) { - return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month]; - } else { - return value >= 1 && value <= DAYS_IN_MONTH[month]; - } - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCDate(value); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return DateParser2; - }(_Parser2.Parser); - exports.DateParser = DateParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js -var require_DayOfYearParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.DayOfYearParser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var DayOfYearParser = /* @__PURE__ */ function(_Parser) { - _inherits(DayOfYearParser2, _Parser); - var _super = _createSuper(DayOfYearParser2); - function DayOfYearParser2() { - var _this; - _classCallCheck(this, DayOfYearParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 90); - _defineProperty2(_assertThisInitialized(_this), "subpriority", 1); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["Y", "R", "q", "Q", "M", "L", "w", "I", "d", "E", "i", "e", "c", "t", "T"]); - return _this; - } - _createClass(DayOfYearParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "D": - case "DD": - return (0, _utils.parseNumericPattern)(_constants.numericPatterns.dayOfYear, dateString); - case "Do": - return match.ordinalNumber(dateString, { - unit: "date" - }); - default: - return (0, _utils.parseNDigits)(token.length, dateString); - } - } - }, { - key: "validate", - value: function validate(date, value) { - var year = date.getUTCFullYear(); - var isLeapYear = (0, _utils.isLeapYearIndex)(year); - if (isLeapYear) { - return value >= 1 && value <= 366; - } else { - return value >= 1 && value <= 365; - } - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCMonth(0, value); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return DayOfYearParser2; - }(_Parser2.Parser); - exports.DayOfYearParser = DayOfYearParser; - } -}); - -// node_modules/date-fns/_lib/setUTCDay/index.js -var require_setUTCDay = __commonJS({ - "node_modules/date-fns/_lib/setUTCDay/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = setUTCDay; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - var _index3 = _interopRequireDefault(require_toInteger()); - var _index4 = require_defaultOptions(); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function setUTCDay(dirtyDate, dirtyDay, options) { - var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - (0, _index2.default)(2, arguments); - var defaultOptions = (0, _index4.getDefaultOptions)(); - var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); - if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { - throw new RangeError("weekStartsOn must be between 0 and 6 inclusively"); - } - var date = (0, _index.default)(dirtyDate); - var day = (0, _index3.default)(dirtyDay); - var currentDay = date.getUTCDay(); - var remainder = day % 7; - var dayIndex = (remainder + 7) % 7; - var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay; - date.setUTCDate(date.getUTCDate() + diff); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/DayParser.js -var require_DayParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/DayParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.DayParser = void 0; - var _Parser2 = require_Parser2(); - var _index = _interopRequireDefault(require_setUTCDay()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var DayParser = /* @__PURE__ */ function(_Parser) { - _inherits(DayParser2, _Parser); - var _super = _createSuper(DayParser2); - function DayParser2() { - var _this; - _classCallCheck(this, DayParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 90); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["D", "i", "e", "c", "t", "T"]); - return _this; - } - _createClass(DayParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "E": - case "EE": - case "EEE": - return match.day(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.day(dateString, { - width: "short", - context: "formatting" - }) || match.day(dateString, { - width: "narrow", - context: "formatting" - }); - case "EEEEE": - return match.day(dateString, { - width: "narrow", - context: "formatting" - }); - case "EEEEEE": - return match.day(dateString, { - width: "short", - context: "formatting" - }) || match.day(dateString, { - width: "narrow", - context: "formatting" - }); - case "EEEE": - default: - return match.day(dateString, { - width: "wide", - context: "formatting" - }) || match.day(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.day(dateString, { - width: "short", - context: "formatting" - }) || match.day(dateString, { - width: "narrow", - context: "formatting" - }); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 0 && value <= 6; - } - }, { - key: "set", - value: function set(date, _flags, value, options) { - date = (0, _index.default)(date, value, options); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return DayParser2; - }(_Parser2.Parser); - exports.DayParser = DayParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js -var require_LocalDayParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.LocalDayParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - var _index = _interopRequireDefault(require_setUTCDay()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var LocalDayParser = /* @__PURE__ */ function(_Parser) { - _inherits(LocalDayParser2, _Parser); - var _super = _createSuper(LocalDayParser2); - function LocalDayParser2() { - var _this; - _classCallCheck(this, LocalDayParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 90); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["y", "R", "u", "q", "Q", "M", "L", "I", "d", "D", "E", "i", "c", "t", "T"]); - return _this; - } - _createClass(LocalDayParser2, [{ - key: "parse", - value: function parse(dateString, token, match, options) { - var valueCallback = function valueCallback2(value) { - var wholeWeekDays = Math.floor((value - 1) / 7) * 7; - return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays; - }; - switch (token) { - case "e": - case "ee": - return (0, _utils.mapValue)((0, _utils.parseNDigits)(token.length, dateString), valueCallback); - case "eo": - return (0, _utils.mapValue)(match.ordinalNumber(dateString, { - unit: "day" - }), valueCallback); - case "eee": - return match.day(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.day(dateString, { - width: "short", - context: "formatting" - }) || match.day(dateString, { - width: "narrow", - context: "formatting" - }); - case "eeeee": - return match.day(dateString, { - width: "narrow", - context: "formatting" - }); - case "eeeeee": - return match.day(dateString, { - width: "short", - context: "formatting" - }) || match.day(dateString, { - width: "narrow", - context: "formatting" - }); - case "eeee": - default: - return match.day(dateString, { - width: "wide", - context: "formatting" - }) || match.day(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.day(dateString, { - width: "short", - context: "formatting" - }) || match.day(dateString, { - width: "narrow", - context: "formatting" - }); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 0 && value <= 6; - } - }, { - key: "set", - value: function set(date, _flags, value, options) { - date = (0, _index.default)(date, value, options); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return LocalDayParser2; - }(_Parser2.Parser); - exports.LocalDayParser = LocalDayParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js -var require_StandAloneLocalDayParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.StandAloneLocalDayParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - var _index = _interopRequireDefault(require_setUTCDay()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var StandAloneLocalDayParser = /* @__PURE__ */ function(_Parser) { - _inherits(StandAloneLocalDayParser2, _Parser); - var _super = _createSuper(StandAloneLocalDayParser2); - function StandAloneLocalDayParser2() { - var _this; - _classCallCheck(this, StandAloneLocalDayParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 90); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["y", "R", "u", "q", "Q", "M", "L", "I", "d", "D", "E", "i", "e", "t", "T"]); - return _this; - } - _createClass(StandAloneLocalDayParser2, [{ - key: "parse", - value: function parse(dateString, token, match, options) { - var valueCallback = function valueCallback2(value) { - var wholeWeekDays = Math.floor((value - 1) / 7) * 7; - return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays; - }; - switch (token) { - case "c": - case "cc": - return (0, _utils.mapValue)((0, _utils.parseNDigits)(token.length, dateString), valueCallback); - case "co": - return (0, _utils.mapValue)(match.ordinalNumber(dateString, { - unit: "day" - }), valueCallback); - case "ccc": - return match.day(dateString, { - width: "abbreviated", - context: "standalone" - }) || match.day(dateString, { - width: "short", - context: "standalone" - }) || match.day(dateString, { - width: "narrow", - context: "standalone" - }); - case "ccccc": - return match.day(dateString, { - width: "narrow", - context: "standalone" - }); - case "cccccc": - return match.day(dateString, { - width: "short", - context: "standalone" - }) || match.day(dateString, { - width: "narrow", - context: "standalone" - }); - case "cccc": - default: - return match.day(dateString, { - width: "wide", - context: "standalone" - }) || match.day(dateString, { - width: "abbreviated", - context: "standalone" - }) || match.day(dateString, { - width: "short", - context: "standalone" - }) || match.day(dateString, { - width: "narrow", - context: "standalone" - }); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 0 && value <= 6; - } - }, { - key: "set", - value: function set(date, _flags, value, options) { - date = (0, _index.default)(date, value, options); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return StandAloneLocalDayParser2; - }(_Parser2.Parser); - exports.StandAloneLocalDayParser = StandAloneLocalDayParser; - } -}); - -// node_modules/date-fns/_lib/setUTCISODay/index.js -var require_setUTCISODay = __commonJS({ - "node_modules/date-fns/_lib/setUTCISODay/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = setUTCISODay; - var _index = _interopRequireDefault(require_toDate()); - var _index2 = _interopRequireDefault(require_requiredArgs()); - var _index3 = _interopRequireDefault(require_toInteger()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function setUTCISODay(dirtyDate, dirtyDay) { - (0, _index2.default)(2, arguments); - var day = (0, _index3.default)(dirtyDay); - if (day % 7 === 0) { - day = day - 7; - } - var weekStartsOn = 1; - var date = (0, _index.default)(dirtyDate); - var currentDay = date.getUTCDay(); - var remainder = day % 7; - var dayIndex = (remainder + 7) % 7; - var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay; - date.setUTCDate(date.getUTCDate() + diff); - return date; - } - module2.exports = exports.default; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/ISODayParser.js -var require_ISODayParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/ISODayParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.ISODayParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - var _index = _interopRequireDefault(require_setUTCISODay()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var ISODayParser = /* @__PURE__ */ function(_Parser) { - _inherits(ISODayParser2, _Parser); - var _super = _createSuper(ISODayParser2); - function ISODayParser2() { - var _this; - _classCallCheck(this, ISODayParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 90); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["y", "Y", "u", "q", "Q", "M", "L", "w", "d", "D", "E", "e", "c", "t", "T"]); - return _this; - } - _createClass(ISODayParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - var valueCallback = function valueCallback2(value) { - if (value === 0) { - return 7; - } - return value; - }; - switch (token) { - case "i": - case "ii": - return (0, _utils.parseNDigits)(token.length, dateString); - case "io": - return match.ordinalNumber(dateString, { - unit: "day" - }); - case "iii": - return (0, _utils.mapValue)(match.day(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.day(dateString, { - width: "short", - context: "formatting" - }) || match.day(dateString, { - width: "narrow", - context: "formatting" - }), valueCallback); - case "iiiii": - return (0, _utils.mapValue)(match.day(dateString, { - width: "narrow", - context: "formatting" - }), valueCallback); - case "iiiiii": - return (0, _utils.mapValue)(match.day(dateString, { - width: "short", - context: "formatting" - }) || match.day(dateString, { - width: "narrow", - context: "formatting" - }), valueCallback); - case "iiii": - default: - return (0, _utils.mapValue)(match.day(dateString, { - width: "wide", - context: "formatting" - }) || match.day(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.day(dateString, { - width: "short", - context: "formatting" - }) || match.day(dateString, { - width: "narrow", - context: "formatting" - }), valueCallback); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 1 && value <= 7; - } - }, { - key: "set", - value: function set(date, _flags, value) { - date = (0, _index.default)(date, value); - date.setUTCHours(0, 0, 0, 0); - return date; - } - }]); - return ISODayParser2; - }(_Parser2.Parser); - exports.ISODayParser = ISODayParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/AMPMParser.js -var require_AMPMParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/AMPMParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.AMPMParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var AMPMParser = /* @__PURE__ */ function(_Parser) { - _inherits(AMPMParser2, _Parser); - var _super = _createSuper(AMPMParser2); - function AMPMParser2() { - var _this; - _classCallCheck(this, AMPMParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 80); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["b", "B", "H", "k", "t", "T"]); - return _this; - } - _createClass(AMPMParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "a": - case "aa": - case "aaa": - return match.dayPeriod(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.dayPeriod(dateString, { - width: "narrow", - context: "formatting" - }); - case "aaaaa": - return match.dayPeriod(dateString, { - width: "narrow", - context: "formatting" - }); - case "aaaa": - default: - return match.dayPeriod(dateString, { - width: "wide", - context: "formatting" - }) || match.dayPeriod(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.dayPeriod(dateString, { - width: "narrow", - context: "formatting" - }); - } - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCHours((0, _utils.dayPeriodEnumToHours)(value), 0, 0, 0); - return date; - } - }]); - return AMPMParser2; - }(_Parser2.Parser); - exports.AMPMParser = AMPMParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js -var require_AMPMMidnightParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.AMPMMidnightParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var AMPMMidnightParser = /* @__PURE__ */ function(_Parser) { - _inherits(AMPMMidnightParser2, _Parser); - var _super = _createSuper(AMPMMidnightParser2); - function AMPMMidnightParser2() { - var _this; - _classCallCheck(this, AMPMMidnightParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 80); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["a", "B", "H", "k", "t", "T"]); - return _this; - } - _createClass(AMPMMidnightParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "b": - case "bb": - case "bbb": - return match.dayPeriod(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.dayPeriod(dateString, { - width: "narrow", - context: "formatting" - }); - case "bbbbb": - return match.dayPeriod(dateString, { - width: "narrow", - context: "formatting" - }); - case "bbbb": - default: - return match.dayPeriod(dateString, { - width: "wide", - context: "formatting" - }) || match.dayPeriod(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.dayPeriod(dateString, { - width: "narrow", - context: "formatting" - }); - } - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCHours((0, _utils.dayPeriodEnumToHours)(value), 0, 0, 0); - return date; - } - }]); - return AMPMMidnightParser2; - }(_Parser2.Parser); - exports.AMPMMidnightParser = AMPMMidnightParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js -var require_DayPeriodParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.DayPeriodParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var DayPeriodParser = /* @__PURE__ */ function(_Parser) { - _inherits(DayPeriodParser2, _Parser); - var _super = _createSuper(DayPeriodParser2); - function DayPeriodParser2() { - var _this; - _classCallCheck(this, DayPeriodParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 80); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["a", "b", "t", "T"]); - return _this; - } - _createClass(DayPeriodParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "B": - case "BB": - case "BBB": - return match.dayPeriod(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.dayPeriod(dateString, { - width: "narrow", - context: "formatting" - }); - case "BBBBB": - return match.dayPeriod(dateString, { - width: "narrow", - context: "formatting" - }); - case "BBBB": - default: - return match.dayPeriod(dateString, { - width: "wide", - context: "formatting" - }) || match.dayPeriod(dateString, { - width: "abbreviated", - context: "formatting" - }) || match.dayPeriod(dateString, { - width: "narrow", - context: "formatting" - }); - } - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCHours((0, _utils.dayPeriodEnumToHours)(value), 0, 0, 0); - return date; - } - }]); - return DayPeriodParser2; - }(_Parser2.Parser); - exports.DayPeriodParser = DayPeriodParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js -var require_Hour1to12Parser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Hour1to12Parser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var Hour1to12Parser = /* @__PURE__ */ function(_Parser) { - _inherits(Hour1to12Parser2, _Parser); - var _super = _createSuper(Hour1to12Parser2); - function Hour1to12Parser2() { - var _this; - _classCallCheck(this, Hour1to12Parser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 70); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["H", "K", "k", "t", "T"]); - return _this; - } - _createClass(Hour1to12Parser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "h": - return (0, _utils.parseNumericPattern)(_constants.numericPatterns.hour12h, dateString); - case "ho": - return match.ordinalNumber(dateString, { - unit: "hour" - }); - default: - return (0, _utils.parseNDigits)(token.length, dateString); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 1 && value <= 12; - } - }, { - key: "set", - value: function set(date, _flags, value) { - var isPM = date.getUTCHours() >= 12; - if (isPM && value < 12) { - date.setUTCHours(value + 12, 0, 0, 0); - } else if (!isPM && value === 12) { - date.setUTCHours(0, 0, 0, 0); - } else { - date.setUTCHours(value, 0, 0, 0); - } - return date; - } - }]); - return Hour1to12Parser2; - }(_Parser2.Parser); - exports.Hour1to12Parser = Hour1to12Parser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js -var require_Hour0to23Parser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Hour0to23Parser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var Hour0to23Parser = /* @__PURE__ */ function(_Parser) { - _inherits(Hour0to23Parser2, _Parser); - var _super = _createSuper(Hour0to23Parser2); - function Hour0to23Parser2() { - var _this; - _classCallCheck(this, Hour0to23Parser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 70); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["a", "b", "h", "K", "k", "t", "T"]); - return _this; - } - _createClass(Hour0to23Parser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "H": - return (0, _utils.parseNumericPattern)(_constants.numericPatterns.hour23h, dateString); - case "Ho": - return match.ordinalNumber(dateString, { - unit: "hour" - }); - default: - return (0, _utils.parseNDigits)(token.length, dateString); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 0 && value <= 23; - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCHours(value, 0, 0, 0); - return date; - } - }]); - return Hour0to23Parser2; - }(_Parser2.Parser); - exports.Hour0to23Parser = Hour0to23Parser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js -var require_Hour0To11Parser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Hour0To11Parser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var Hour0To11Parser = /* @__PURE__ */ function(_Parser) { - _inherits(Hour0To11Parser2, _Parser); - var _super = _createSuper(Hour0To11Parser2); - function Hour0To11Parser2() { - var _this; - _classCallCheck(this, Hour0To11Parser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 70); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["h", "H", "k", "t", "T"]); - return _this; - } - _createClass(Hour0To11Parser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "K": - return (0, _utils.parseNumericPattern)(_constants.numericPatterns.hour11h, dateString); - case "Ko": - return match.ordinalNumber(dateString, { - unit: "hour" - }); - default: - return (0, _utils.parseNDigits)(token.length, dateString); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 0 && value <= 11; - } - }, { - key: "set", - value: function set(date, _flags, value) { - var isPM = date.getUTCHours() >= 12; - if (isPM && value < 12) { - date.setUTCHours(value + 12, 0, 0, 0); - } else { - date.setUTCHours(value, 0, 0, 0); - } - return date; - } - }]); - return Hour0To11Parser2; - }(_Parser2.Parser); - exports.Hour0To11Parser = Hour0To11Parser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js -var require_Hour1To24Parser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Hour1To24Parser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var Hour1To24Parser = /* @__PURE__ */ function(_Parser) { - _inherits(Hour1To24Parser2, _Parser); - var _super = _createSuper(Hour1To24Parser2); - function Hour1To24Parser2() { - var _this; - _classCallCheck(this, Hour1To24Parser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 70); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["a", "b", "h", "H", "K", "t", "T"]); - return _this; - } - _createClass(Hour1To24Parser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "k": - return (0, _utils.parseNumericPattern)(_constants.numericPatterns.hour24h, dateString); - case "ko": - return match.ordinalNumber(dateString, { - unit: "hour" - }); - default: - return (0, _utils.parseNDigits)(token.length, dateString); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 1 && value <= 24; - } - }, { - key: "set", - value: function set(date, _flags, value) { - var hours = value <= 24 ? value % 24 : value; - date.setUTCHours(hours, 0, 0, 0); - return date; - } - }]); - return Hour1To24Parser2; - }(_Parser2.Parser); - exports.Hour1To24Parser = Hour1To24Parser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/MinuteParser.js -var require_MinuteParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/MinuteParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.MinuteParser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var MinuteParser = /* @__PURE__ */ function(_Parser) { - _inherits(MinuteParser2, _Parser); - var _super = _createSuper(MinuteParser2); - function MinuteParser2() { - var _this; - _classCallCheck(this, MinuteParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 60); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["t", "T"]); - return _this; - } - _createClass(MinuteParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "m": - return (0, _utils.parseNumericPattern)(_constants.numericPatterns.minute, dateString); - case "mo": - return match.ordinalNumber(dateString, { - unit: "minute" - }); - default: - return (0, _utils.parseNDigits)(token.length, dateString); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 0 && value <= 59; - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCMinutes(value, 0, 0); - return date; - } - }]); - return MinuteParser2; - }(_Parser2.Parser); - exports.MinuteParser = MinuteParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/SecondParser.js -var require_SecondParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/SecondParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.SecondParser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var SecondParser = /* @__PURE__ */ function(_Parser) { - _inherits(SecondParser2, _Parser); - var _super = _createSuper(SecondParser2); - function SecondParser2() { - var _this; - _classCallCheck(this, SecondParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 50); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["t", "T"]); - return _this; - } - _createClass(SecondParser2, [{ - key: "parse", - value: function parse(dateString, token, match) { - switch (token) { - case "s": - return (0, _utils.parseNumericPattern)(_constants.numericPatterns.second, dateString); - case "so": - return match.ordinalNumber(dateString, { - unit: "second" - }); - default: - return (0, _utils.parseNDigits)(token.length, dateString); - } - } - }, { - key: "validate", - value: function validate(_date, value) { - return value >= 0 && value <= 59; - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCSeconds(value, 0); - return date; - } - }]); - return SecondParser2; - }(_Parser2.Parser); - exports.SecondParser = SecondParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js -var require_FractionOfSecondParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.FractionOfSecondParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var FractionOfSecondParser = /* @__PURE__ */ function(_Parser) { - _inherits(FractionOfSecondParser2, _Parser); - var _super = _createSuper(FractionOfSecondParser2); - function FractionOfSecondParser2() { - var _this; - _classCallCheck(this, FractionOfSecondParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 30); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["t", "T"]); - return _this; - } - _createClass(FractionOfSecondParser2, [{ - key: "parse", - value: function parse(dateString, token) { - var valueCallback = function valueCallback2(value) { - return Math.floor(value * Math.pow(10, -token.length + 3)); - }; - return (0, _utils.mapValue)((0, _utils.parseNDigits)(token.length, dateString), valueCallback); - } - }, { - key: "set", - value: function set(date, _flags, value) { - date.setUTCMilliseconds(value); - return date; - } - }]); - return FractionOfSecondParser2; - }(_Parser2.Parser); - exports.FractionOfSecondParser = FractionOfSecondParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js -var require_ISOTimezoneWithZParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.ISOTimezoneWithZParser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var ISOTimezoneWithZParser = /* @__PURE__ */ function(_Parser) { - _inherits(ISOTimezoneWithZParser2, _Parser); - var _super = _createSuper(ISOTimezoneWithZParser2); - function ISOTimezoneWithZParser2() { - var _this; - _classCallCheck(this, ISOTimezoneWithZParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 10); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["t", "T", "x"]); - return _this; - } - _createClass(ISOTimezoneWithZParser2, [{ - key: "parse", - value: function parse(dateString, token) { - switch (token) { - case "X": - return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basicOptionalMinutes, dateString); - case "XX": - return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basic, dateString); - case "XXXX": - return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basicOptionalSeconds, dateString); - case "XXXXX": - return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.extendedOptionalSeconds, dateString); - case "XXX": - default: - return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.extended, dateString); - } - } - }, { - key: "set", - value: function set(date, flags, value) { - if (flags.timestampIsSet) { - return date; - } - return new Date(date.getTime() - value); - } - }]); - return ISOTimezoneWithZParser2; - }(_Parser2.Parser); - exports.ISOTimezoneWithZParser = ISOTimezoneWithZParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js -var require_ISOTimezoneParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.ISOTimezoneParser = void 0; - var _Parser2 = require_Parser2(); - var _constants = require_constants2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var ISOTimezoneParser = /* @__PURE__ */ function(_Parser) { - _inherits(ISOTimezoneParser2, _Parser); - var _super = _createSuper(ISOTimezoneParser2); - function ISOTimezoneParser2() { - var _this; - _classCallCheck(this, ISOTimezoneParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 10); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", ["t", "T", "X"]); - return _this; - } - _createClass(ISOTimezoneParser2, [{ - key: "parse", - value: function parse(dateString, token) { - switch (token) { - case "x": - return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basicOptionalMinutes, dateString); - case "xx": - return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basic, dateString); - case "xxxx": - return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basicOptionalSeconds, dateString); - case "xxxxx": - return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.extendedOptionalSeconds, dateString); - case "xxx": - default: - return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.extended, dateString); - } - } - }, { - key: "set", - value: function set(date, flags, value) { - if (flags.timestampIsSet) { - return date; - } - return new Date(date.getTime() - value); - } - }]); - return ISOTimezoneParser2; - }(_Parser2.Parser); - exports.ISOTimezoneParser = ISOTimezoneParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js -var require_TimestampSecondsParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.TimestampSecondsParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var TimestampSecondsParser = /* @__PURE__ */ function(_Parser) { - _inherits(TimestampSecondsParser2, _Parser); - var _super = _createSuper(TimestampSecondsParser2); - function TimestampSecondsParser2() { - var _this; - _classCallCheck(this, TimestampSecondsParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 40); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", "*"); - return _this; - } - _createClass(TimestampSecondsParser2, [{ - key: "parse", - value: function parse(dateString) { - return (0, _utils.parseAnyDigitsSigned)(dateString); - } - }, { - key: "set", - value: function set(_date, _flags, value) { - return [new Date(value * 1e3), { - timestampIsSet: true - }]; - } - }]); - return TimestampSecondsParser2; - }(_Parser2.Parser); - exports.TimestampSecondsParser = TimestampSecondsParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js -var require_TimestampMillisecondsParser = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js"(exports) { - "use strict"; - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.TimestampMillisecondsParser = void 0; - var _Parser2 = require_Parser2(); - var _utils = require_utils2(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i2 = 0; i2 < props.length; i2++) { - var descriptor = props[i2]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); - if (superClass) - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); - } - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return _possibleConstructorReturn(this, result); - }; - } - function _possibleConstructorReturn(self2, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } - return _assertThisInitialized(self2); - } - function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e) { - return false; - } - } - function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); - } - function _defineProperty2(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - } - return obj; - } - var TimestampMillisecondsParser = /* @__PURE__ */ function(_Parser) { - _inherits(TimestampMillisecondsParser2, _Parser); - var _super = _createSuper(TimestampMillisecondsParser2); - function TimestampMillisecondsParser2() { - var _this; - _classCallCheck(this, TimestampMillisecondsParser2); - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - _this = _super.call.apply(_super, [this].concat(args)); - _defineProperty2(_assertThisInitialized(_this), "priority", 20); - _defineProperty2(_assertThisInitialized(_this), "incompatibleTokens", "*"); - return _this; - } - _createClass(TimestampMillisecondsParser2, [{ - key: "parse", - value: function parse(dateString) { - return (0, _utils.parseAnyDigitsSigned)(dateString); - } - }, { - key: "set", - value: function set(_date, _flags, value) { - return [new Date(value), { - timestampIsSet: true - }]; - } - }]); - return TimestampMillisecondsParser2; - }(_Parser2.Parser); - exports.TimestampMillisecondsParser = TimestampMillisecondsParser; - } -}); - -// node_modules/date-fns/parse/_lib/parsers/index.js -var require_parsers = __commonJS({ - "node_modules/date-fns/parse/_lib/parsers/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.parsers = void 0; - var _EraParser = require_EraParser(); - var _YearParser = require_YearParser(); - var _LocalWeekYearParser = require_LocalWeekYearParser(); - var _ISOWeekYearParser = require_ISOWeekYearParser(); - var _ExtendedYearParser = require_ExtendedYearParser(); - var _QuarterParser = require_QuarterParser(); - var _StandAloneQuarterParser = require_StandAloneQuarterParser(); - var _MonthParser = require_MonthParser(); - var _StandAloneMonthParser = require_StandAloneMonthParser(); - var _LocalWeekParser = require_LocalWeekParser(); - var _ISOWeekParser = require_ISOWeekParser(); - var _DateParser = require_DateParser(); - var _DayOfYearParser = require_DayOfYearParser(); - var _DayParser = require_DayParser(); - var _LocalDayParser = require_LocalDayParser(); - var _StandAloneLocalDayParser = require_StandAloneLocalDayParser(); - var _ISODayParser = require_ISODayParser(); - var _AMPMParser = require_AMPMParser(); - var _AMPMMidnightParser = require_AMPMMidnightParser(); - var _DayPeriodParser = require_DayPeriodParser(); - var _Hour1to12Parser = require_Hour1to12Parser(); - var _Hour0to23Parser = require_Hour0to23Parser(); - var _Hour0To11Parser = require_Hour0To11Parser(); - var _Hour1To24Parser = require_Hour1To24Parser(); - var _MinuteParser = require_MinuteParser(); - var _SecondParser = require_SecondParser(); - var _FractionOfSecondParser = require_FractionOfSecondParser(); - var _ISOTimezoneWithZParser = require_ISOTimezoneWithZParser(); - var _ISOTimezoneParser = require_ISOTimezoneParser(); - var _TimestampSecondsParser = require_TimestampSecondsParser(); - var _TimestampMillisecondsParser = require_TimestampMillisecondsParser(); - var parsers = { - G: new _EraParser.EraParser(), - y: new _YearParser.YearParser(), - Y: new _LocalWeekYearParser.LocalWeekYearParser(), - R: new _ISOWeekYearParser.ISOWeekYearParser(), - u: new _ExtendedYearParser.ExtendedYearParser(), - Q: new _QuarterParser.QuarterParser(), - q: new _StandAloneQuarterParser.StandAloneQuarterParser(), - M: new _MonthParser.MonthParser(), - L: new _StandAloneMonthParser.StandAloneMonthParser(), - w: new _LocalWeekParser.LocalWeekParser(), - I: new _ISOWeekParser.ISOWeekParser(), - d: new _DateParser.DateParser(), - D: new _DayOfYearParser.DayOfYearParser(), - E: new _DayParser.DayParser(), - e: new _LocalDayParser.LocalDayParser(), - c: new _StandAloneLocalDayParser.StandAloneLocalDayParser(), - i: new _ISODayParser.ISODayParser(), - a: new _AMPMParser.AMPMParser(), - b: new _AMPMMidnightParser.AMPMMidnightParser(), - B: new _DayPeriodParser.DayPeriodParser(), - h: new _Hour1to12Parser.Hour1to12Parser(), - H: new _Hour0to23Parser.Hour0to23Parser(), - K: new _Hour0To11Parser.Hour0To11Parser(), - k: new _Hour1To24Parser.Hour1To24Parser(), - m: new _MinuteParser.MinuteParser(), - s: new _SecondParser.SecondParser(), - S: new _FractionOfSecondParser.FractionOfSecondParser(), - X: new _ISOTimezoneWithZParser.ISOTimezoneWithZParser(), - x: new _ISOTimezoneParser.ISOTimezoneParser(), - t: new _TimestampSecondsParser.TimestampSecondsParser(), - T: new _TimestampMillisecondsParser.TimestampMillisecondsParser() - }; - exports.parsers = parsers; - } -}); - -// node_modules/date-fns/parse/index.js -var require_parse2 = __commonJS({ - "node_modules/date-fns/parse/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = parse; - var _index = _interopRequireDefault(require_defaultLocale()); - var _index2 = _interopRequireDefault(require_subMilliseconds()); - var _index3 = _interopRequireDefault(require_toDate()); - var _index4 = _interopRequireDefault(require_assign()); - var _index5 = _interopRequireDefault(require_longFormatters()); - var _index6 = _interopRequireDefault(require_getTimezoneOffsetInMilliseconds()); - var _index7 = require_protectedTokens(); - var _index8 = _interopRequireDefault(require_toInteger()); - var _index9 = _interopRequireDefault(require_requiredArgs()); - var _Setter = require_Setter(); - var _index10 = require_parsers(); - var _index11 = require_defaultOptions(); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function _typeof2(obj2) { - return typeof obj2; - }; - } else { - _typeof = function _typeof2(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - function _createForOfIteratorHelper(o2, allowArrayLike) { - var it; - if (typeof Symbol === "undefined" || o2[Symbol.iterator] == null) { - if (Array.isArray(o2) || (it = _unsupportedIterableToArray(o2)) || allowArrayLike && o2 && typeof o2.length === "number") { - if (it) - o2 = it; - var i2 = 0; - var F2 = function F3() { - }; - return { s: F2, n: function n2() { - if (i2 >= o2.length) - return { done: true }; - return { done: false, value: o2[i2++] }; - }, e: function e(_e) { - throw _e; - }, f: F2 }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { s: function s2() { - it = o2[Symbol.iterator](); - }, n: function n2() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e2) { - didErr = true; - err = _e2; - }, f: function f2() { +// node_modules/react-select/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js +var require_iterableToArrayLimit = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js"(exports, module2) { + function _iterableToArrayLimit(arr, i2) { + var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; + if (null != _i) { + var _s, _e, _x, _r, _arr = [], _n = true, _d = false; try { - if (!normalCompletion && it.return != null) - it.return(); + if (_x = (_i = _i.call(arr)).next, 0 === i2) { + if (Object(_i) !== _i) + return; + _n = false; + } else + for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i2); _n = true) + ; + } catch (err) { + _d = true, _e = err; } finally { - if (didErr) - throw err; + try { + if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) + return; + } finally { + if (_d) + throw _e; + } } - } }; + return _arr; + } } + module2.exports = _iterableToArrayLimit, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +var require_arrayLikeToArray = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/arrayLikeToArray.js"(exports, module2) { + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) + len = arr.length; + for (var i2 = 0, arr2 = new Array(len); i2 < len; i2++) + arr2[i2] = arr[i2]; + return arr2; + } + module2.exports = _arrayLikeToArray, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +var require_unsupportedIterableToArray = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"(exports, module2) { + var arrayLikeToArray = require_arrayLikeToArray(); function _unsupportedIterableToArray(o2, minLen) { if (!o2) return; if (typeof o2 === "string") - return _arrayLikeToArray(o2, minLen); + return arrayLikeToArray(o2, minLen); var n2 = Object.prototype.toString.call(o2).slice(8, -1); if (n2 === "Object" && o2.constructor) n2 = o2.constructor.name; if (n2 === "Map" || n2 === "Set") return Array.from(o2); if (n2 === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n2)) - return _arrayLikeToArray(o2, minLen); + return arrayLikeToArray(o2, minLen); } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) - len = arr.length; - for (var i2 = 0, arr2 = new Array(len); i2 < len; i2++) { - arr2[i2] = arr[i2]; - } - return arr2; - } - var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; - var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; - var escapedStringRegExp = /^'([^]*?)'?$/; - var doubleQuoteRegExp = /''/g; - var notWhitespaceRegExp = /\S/; - var unescapedLatinCharacterRegExp = /[a-zA-Z]/; - function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) { - var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4; - (0, _index9.default)(3, arguments); - var dateString = String(dirtyDateString); - var formatString = String(dirtyFormatString); - var defaultOptions = (0, _index11.getDefaultOptions)(); - var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : _index.default; - if (!locale.match) { - throw new RangeError("locale must contain match property"); - } - var firstWeekContainsDate = (0, _index8.default)((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1); - if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { - throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively"); - } - var weekStartsOn = (0, _index8.default)((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0); - if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { - throw new RangeError("weekStartsOn must be between 0 and 6 inclusively"); - } - if (formatString === "") { - if (dateString === "") { - return (0, _index3.default)(dirtyReferenceDate); - } else { - return new Date(NaN); - } - } - var subFnOptions = { - firstWeekContainsDate, - weekStartsOn, - locale - }; - var setters = [new _Setter.DateToSystemTimezoneSetter()]; - var tokens = formatString.match(longFormattingTokensRegExp).map(function(substring) { - var firstCharacter = substring[0]; - if (firstCharacter in _index5.default) { - var longFormatter = _index5.default[firstCharacter]; - return longFormatter(substring, locale.formatLong); - } - return substring; - }).join("").match(formattingTokensRegExp); - var usedTokens = []; - var _iterator = _createForOfIteratorHelper(tokens), _step; - try { - var _loop = function _loop2() { - var token = _step.value; - if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && (0, _index7.isProtectedWeekYearToken)(token)) { - (0, _index7.throwProtectedError)(token, formatString, dirtyDateString); - } - if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && (0, _index7.isProtectedDayOfYearToken)(token)) { - (0, _index7.throwProtectedError)(token, formatString, dirtyDateString); - } - var firstCharacter = token[0]; - var parser = _index10.parsers[firstCharacter]; - if (parser) { - var incompatibleTokens = parser.incompatibleTokens; - if (Array.isArray(incompatibleTokens)) { - var incompatibleToken = usedTokens.find(function(usedToken) { - return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter; - }); - if (incompatibleToken) { - throw new RangeError("The format string mustn't contain `".concat(incompatibleToken.fullToken, "` and `").concat(token, "` at the same time")); - } - } else if (parser.incompatibleTokens === "*" && usedTokens.length > 0) { - throw new RangeError("The format string mustn't contain `".concat(token, "` and any other token at the same time")); - } - usedTokens.push({ - token: firstCharacter, - fullToken: token - }); - var parseResult = parser.run(dateString, token, locale.match, subFnOptions); - if (!parseResult) { - return { - v: new Date(NaN) - }; - } - setters.push(parseResult.setter); - dateString = parseResult.rest; - } else { - if (firstCharacter.match(unescapedLatinCharacterRegExp)) { - throw new RangeError("Format string contains an unescaped latin alphabet character `" + firstCharacter + "`"); - } - if (token === "''") { - token = "'"; - } else if (firstCharacter === "'") { - token = cleanEscapedString(token); - } - if (dateString.indexOf(token) === 0) { - dateString = dateString.slice(token.length); - } else { - return { - v: new Date(NaN) - }; - } - } - }; - for (_iterator.s(); !(_step = _iterator.n()).done; ) { - var _ret = _loop(); - if (_typeof(_ret) === "object") - return _ret.v; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) { - return new Date(NaN); - } - var uniquePrioritySetters = setters.map(function(setter2) { - return setter2.priority; - }).sort(function(a2, b2) { - return b2 - a2; - }).filter(function(priority, index, array) { - return array.indexOf(priority) === index; - }).map(function(priority) { - return setters.filter(function(setter2) { - return setter2.priority === priority; - }).sort(function(a2, b2) { - return b2.subPriority - a2.subPriority; - }); - }).map(function(setterArray) { - return setterArray[0]; - }); - var date = (0, _index3.default)(dirtyReferenceDate); - if (isNaN(date.getTime())) { - return new Date(NaN); - } - var utcDate = (0, _index2.default)(date, (0, _index6.default)(date)); - var flags = {}; - var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters), _step2; - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { - var setter = _step2.value; - if (!setter.validate(utcDate, subFnOptions)) { - return new Date(NaN); - } - var result = setter.set(utcDate, flags, subFnOptions); - if (Array.isArray(result)) { - utcDate = result[0]; - (0, _index4.default)(flags, result[1]); - } else { - utcDate = result; - } - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - return utcDate; - } - function cleanEscapedString(input) { - return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, "'"); - } - module2.exports = exports.default; + module2.exports = _unsupportedIterableToArray, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; } }); -// node_modules/date-fns/parseISO/index.js -var require_parseISO = __commonJS({ - "node_modules/date-fns/parseISO/index.js"(exports, module2) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = parseISO; - var _index = require_constants(); - var _index2 = _interopRequireDefault(require_requiredArgs()); - var _index3 = _interopRequireDefault(require_toInteger()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; +// node_modules/react-select/node_modules/@babel/runtime/helpers/nonIterableRest.js +var require_nonIterableRest = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/nonIterableRest.js"(exports, module2) { + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - function parseISO(argument, options) { - var _options$additionalDi; - (0, _index2.default)(1, arguments); - var additionalDigits = (0, _index3.default)((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2); - if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) { - throw new RangeError("additionalDigits must be 0, 1 or 2"); - } - if (!(typeof argument === "string" || Object.prototype.toString.call(argument) === "[object String]")) { - return new Date(NaN); - } - var dateStrings = splitDateString(argument); - var date; - if (dateStrings.date) { - var parseYearResult = parseYear(dateStrings.date, additionalDigits); - date = parseDate(parseYearResult.restDateString, parseYearResult.year); - } - if (!date || isNaN(date.getTime())) { - return new Date(NaN); - } - var timestamp = date.getTime(); - var time = 0; - var offset; - if (dateStrings.time) { - time = parseTime(dateStrings.time); - if (isNaN(time)) { - return new Date(NaN); - } - } - if (dateStrings.timezone) { - offset = parseTimezone(dateStrings.timezone); - if (isNaN(offset)) { - return new Date(NaN); - } - } else { - var dirtyDate = new Date(timestamp + time); - var result = new Date(0); - result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate()); - result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds()); - return result; - } - return new Date(timestamp + time + offset); - } - var patterns = { - dateTimeDelimiter: /[T ]/, - timeZoneDelimiter: /[Z ]/i, - timezone: /([Z+-].*)$/ - }; - var dateRegex = /^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/; - var timeRegex = /^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/; - var timezoneRegex = /^([+-])(\d{2})(?::?(\d{2}))?$/; - function splitDateString(dateString) { - var dateStrings = {}; - var array = dateString.split(patterns.dateTimeDelimiter); - var timeString; - if (array.length > 2) { - return dateStrings; - } - if (/:/.test(array[0])) { - timeString = array[0]; - } else { - dateStrings.date = array[0]; - timeString = array[1]; - if (patterns.timeZoneDelimiter.test(dateStrings.date)) { - dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0]; - timeString = dateString.substr(dateStrings.date.length, dateString.length); - } - } - if (timeString) { - var token = patterns.timezone.exec(timeString); - if (token) { - dateStrings.time = timeString.replace(token[1], ""); - dateStrings.timezone = token[1]; - } else { - dateStrings.time = timeString; - } - } - return dateStrings; - } - function parseYear(dateString, additionalDigits) { - var regex = new RegExp("^(?:(\\d{4}|[+-]\\d{" + (4 + additionalDigits) + "})|(\\d{2}|[+-]\\d{" + (2 + additionalDigits) + "})$)"); - var captures = dateString.match(regex); - if (!captures) - return { - year: NaN, - restDateString: "" - }; - var year = captures[1] ? parseInt(captures[1]) : null; - var century = captures[2] ? parseInt(captures[2]) : null; - return { - year: century === null ? year : century * 100, - restDateString: dateString.slice((captures[1] || captures[2]).length) - }; - } - function parseDate(dateString, year) { - if (year === null) - return new Date(NaN); - var captures = dateString.match(dateRegex); - if (!captures) - return new Date(NaN); - var isWeekDate = !!captures[4]; - var dayOfYear = parseDateUnit(captures[1]); - var month = parseDateUnit(captures[2]) - 1; - var day = parseDateUnit(captures[3]); - var week = parseDateUnit(captures[4]); - var dayOfWeek = parseDateUnit(captures[5]) - 1; - if (isWeekDate) { - if (!validateWeekDate(year, week, dayOfWeek)) { - return new Date(NaN); - } - return dayOfISOWeekYear(year, week, dayOfWeek); - } else { - var date = new Date(0); - if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) { - return new Date(NaN); - } - date.setUTCFullYear(year, month, Math.max(dayOfYear, day)); - return date; - } - } - function parseDateUnit(value) { - return value ? parseInt(value) : 1; - } - function parseTime(timeString) { - var captures = timeString.match(timeRegex); - if (!captures) - return NaN; - var hours = parseTimeUnit(captures[1]); - var minutes = parseTimeUnit(captures[2]); - var seconds = parseTimeUnit(captures[3]); - if (!validateTime(hours, minutes, seconds)) { - return NaN; - } - return hours * _index.millisecondsInHour + minutes * _index.millisecondsInMinute + seconds * 1e3; - } - function parseTimeUnit(value) { - return value && parseFloat(value.replace(",", ".")) || 0; - } - function parseTimezone(timezoneString) { - if (timezoneString === "Z") - return 0; - var captures = timezoneString.match(timezoneRegex); - if (!captures) - return 0; - var sign = captures[1] === "+" ? -1 : 1; - var hours = parseInt(captures[2]); - var minutes = captures[3] && parseInt(captures[3]) || 0; - if (!validateTimezone(hours, minutes)) { - return NaN; - } - return sign * (hours * _index.millisecondsInHour + minutes * _index.millisecondsInMinute); - } - function dayOfISOWeekYear(isoWeekYear, week, day) { - var date = new Date(0); - date.setUTCFullYear(isoWeekYear, 0, 4); - var fourthOfJanuaryDay = date.getUTCDay() || 7; - var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay; - date.setUTCDate(date.getUTCDate() + diff); - return date; - } - var daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - function isLeapYearIndex(year) { - return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0; - } - function validateDate(year, month, date) { - return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28)); - } - function validateDayOfYearDate(year, dayOfYear) { - return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365); - } - function validateWeekDate(_year, week, day) { - return week >= 1 && week <= 53 && day >= 0 && day <= 6; - } - function validateTime(hours, minutes, seconds) { - if (hours === 24) { - return minutes === 0 && seconds === 0; - } - return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25; - } - function validateTimezone(_hours, minutes) { - return minutes >= 0 && minutes <= 59; - } - module2.exports = exports.default; + module2.exports = _nonIterableRest, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; } }); -// node_modules/react-onclickoutside/dist/react-onclickoutside.cjs.js -var require_react_onclickoutside_cjs = __commonJS({ - "node_modules/react-onclickoutside/dist/react-onclickoutside.cjs.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var react = require_react(); - var reactDom = require_react_dom(); - function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o2, p2) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) { - o3.__proto__ = p3; - return o3; - }; - return _setPrototypeOf(o2, p2); +// node_modules/react-select/node_modules/@babel/runtime/helpers/slicedToArray.js +var require_slicedToArray = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/slicedToArray.js"(exports, module2) { + var arrayWithHoles = require_arrayWithHoles(); + var iterableToArrayLimit = require_iterableToArrayLimit(); + var unsupportedIterableToArray = require_unsupportedIterableToArray(); + var nonIterableRest = require_nonIterableRest(); + function _slicedToArray(arr, i2) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i2) || unsupportedIterableToArray(arr, i2) || nonIterableRest(); } + module2.exports = _slicedToArray, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js +var require_objectWithoutPropertiesLoose = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js"(exports, module2) { function _objectWithoutPropertiesLoose2(source, excluded) { if (source == null) return {}; @@ -52932,2447 +27336,12132 @@ var require_react_onclickoutside_cjs = __commonJS({ } return target; } + module2.exports = _objectWithoutPropertiesLoose2, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/objectWithoutProperties.js +var require_objectWithoutProperties = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/objectWithoutProperties.js"(exports, module2) { + var objectWithoutPropertiesLoose = require_objectWithoutPropertiesLoose(); + function _objectWithoutProperties(source, excluded) { + if (source == null) + return {}; + var target = objectWithoutPropertiesLoose(source, excluded); + var key, i2; + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source); + for (i2 = 0; i2 < sourceSymbolKeys.length; i2++) { + key = sourceSymbolKeys[i2]; + if (excluded.indexOf(key) >= 0) + continue; + if (!Object.prototype.propertyIsEnumerable.call(source, key)) + continue; + target[key] = source[key]; + } + } + return target; + } + module2.exports = _objectWithoutProperties, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/dist/useStateManager-7748b351.cjs.dev.js +var require_useStateManager_7748b351_cjs_dev = __commonJS({ + "node_modules/react-select/dist/useStateManager-7748b351.cjs.dev.js"(exports) { + "use strict"; + var _objectSpread = require_objectSpread2(); + var _slicedToArray = require_slicedToArray(); + var _objectWithoutProperties = require_objectWithoutProperties(); + var React49 = require_react(); + var _excluded = ["defaultInputValue", "defaultMenuIsOpen", "defaultValue", "inputValue", "menuIsOpen", "onChange", "onInputChange", "onMenuClose", "onMenuOpen", "value"]; + function useStateManager(_ref) { + var _ref$defaultInputValu = _ref.defaultInputValue, defaultInputValue = _ref$defaultInputValu === void 0 ? "" : _ref$defaultInputValu, _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen, defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe, _ref$defaultValue = _ref.defaultValue, defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue, propsInputValue = _ref.inputValue, propsMenuIsOpen = _ref.menuIsOpen, propsOnChange = _ref.onChange, propsOnInputChange = _ref.onInputChange, propsOnMenuClose = _ref.onMenuClose, propsOnMenuOpen = _ref.onMenuOpen, propsValue = _ref.value, restSelectProps = _objectWithoutProperties(_ref, _excluded); + var _useState = React49.useState(propsInputValue !== void 0 ? propsInputValue : defaultInputValue), _useState2 = _slicedToArray(_useState, 2), stateInputValue = _useState2[0], setStateInputValue = _useState2[1]; + var _useState3 = React49.useState(propsMenuIsOpen !== void 0 ? propsMenuIsOpen : defaultMenuIsOpen), _useState4 = _slicedToArray(_useState3, 2), stateMenuIsOpen = _useState4[0], setStateMenuIsOpen = _useState4[1]; + var _useState5 = React49.useState(propsValue !== void 0 ? propsValue : defaultValue), _useState6 = _slicedToArray(_useState5, 2), stateValue = _useState6[0], setStateValue = _useState6[1]; + var onChange = React49.useCallback(function(value2, actionMeta) { + if (typeof propsOnChange === "function") { + propsOnChange(value2, actionMeta); + } + setStateValue(value2); + }, [propsOnChange]); + var onInputChange = React49.useCallback(function(value2, actionMeta) { + var newValue; + if (typeof propsOnInputChange === "function") { + newValue = propsOnInputChange(value2, actionMeta); + } + setStateInputValue(newValue !== void 0 ? newValue : value2); + }, [propsOnInputChange]); + var onMenuOpen = React49.useCallback(function() { + if (typeof propsOnMenuOpen === "function") { + propsOnMenuOpen(); + } + setStateMenuIsOpen(true); + }, [propsOnMenuOpen]); + var onMenuClose = React49.useCallback(function() { + if (typeof propsOnMenuClose === "function") { + propsOnMenuClose(); + } + setStateMenuIsOpen(false); + }, [propsOnMenuClose]); + var inputValue = propsInputValue !== void 0 ? propsInputValue : stateInputValue; + var menuIsOpen = propsMenuIsOpen !== void 0 ? propsMenuIsOpen : stateMenuIsOpen; + var value = propsValue !== void 0 ? propsValue : stateValue; + return _objectSpread(_objectSpread({}, restSelectProps), {}, { + inputValue, + menuIsOpen, + onChange, + onInputChange, + onMenuClose, + onMenuOpen, + value + }); + } + exports.useStateManager = useStateManager; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/extends.js +var require_extends2 = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/extends.js"(exports, module2) { + function _extends2() { + module2.exports = _extends2 = Object.assign ? Object.assign.bind() : function(target) { + for (var i2 = 1; i2 < arguments.length; i2++) { + var source = arguments[i2]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + return _extends2.apply(this, arguments); + } + module2.exports = _extends2, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/classCallCheck.js +var require_classCallCheck = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/classCallCheck.js"(exports, module2) { + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + module2.exports = _classCallCheck, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/createClass.js +var require_createClass = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/createClass.js"(exports, module2) { + var toPropertyKey = require_toPropertyKey(); + function _defineProperties(target, props) { + for (var i2 = 0; i2 < props.length; i2++) { + var descriptor = props[i2]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) + _defineProperties(Constructor.prototype, protoProps); + if (staticProps) + _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; + } + module2.exports = _createClass, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/setPrototypeOf.js +var require_setPrototypeOf = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/setPrototypeOf.js"(exports, module2) { + function _setPrototypeOf(o2, p2) { + module2.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o3, p3) { + o3.__proto__ = p3; + return o3; + }, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + return _setPrototypeOf(o2, p2); + } + module2.exports = _setPrototypeOf, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/inherits.js +var require_inherits = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/inherits.js"(exports, module2) { + var setPrototypeOf = require_setPrototypeOf(); + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + Object.defineProperty(subClass, "prototype", { + writable: false + }); + if (superClass) + setPrototypeOf(subClass, superClass); + } + module2.exports = _inherits, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/getPrototypeOf.js +var require_getPrototypeOf = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/getPrototypeOf.js"(exports, module2) { + function _getPrototypeOf(o2) { + module2.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o3) { + return o3.__proto__ || Object.getPrototypeOf(o3); + }, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + return _getPrototypeOf(o2); + } + module2.exports = _getPrototypeOf, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js +var require_isNativeReflectConstruct = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js"(exports, module2) { + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) + return false; + if (Reflect.construct.sham) + return false; + if (typeof Proxy === "function") + return true; + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + return true; + } catch (e) { + return false; + } + } + module2.exports = _isNativeReflectConstruct, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/assertThisInitialized.js +var require_assertThisInitialized = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/assertThisInitialized.js"(exports, module2) { function _assertThisInitialized(self2) { if (self2 === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self2; } - function isNodeFound(current, componentNode, ignoreClass) { - if (current === componentNode) { - return true; + module2.exports = _assertThisInitialized, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js +var require_possibleConstructorReturn = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"(exports, module2) { + var _typeof = require_typeof()["default"]; + var assertThisInitialized = require_assertThisInitialized(); + function _possibleConstructorReturn(self2, call2) { + if (call2 && (_typeof(call2) === "object" || typeof call2 === "function")) { + return call2; + } else if (call2 !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); } - if (current.correspondingElement) { - return current.correspondingElement.classList.contains(ignoreClass); - } - return current.classList.contains(ignoreClass); + return assertThisInitialized(self2); } - function findHighest(current, componentNode, ignoreClass) { - if (current === componentNode) { - return true; - } - while (current.parentNode || current.host) { - if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) { - return true; + module2.exports = _possibleConstructorReturn, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/createSuper.js +var require_createSuper = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/createSuper.js"(exports, module2) { + var getPrototypeOf = require_getPrototypeOf(); + var isNativeReflectConstruct = require_isNativeReflectConstruct(); + var possibleConstructorReturn = require_possibleConstructorReturn(); + function _createSuper(Derived) { + var hasNativeReflectConstruct = isNativeReflectConstruct(); + return function _createSuperInternal() { + var Super = getPrototypeOf(Derived), result; + if (hasNativeReflectConstruct) { + var NewTarget = getPrototypeOf(this).constructor; + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); } - current = current.parentNode || current.host; - } - return current; - } - function clickedScrollbar(evt) { - return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY; - } - var testPassiveEventSupport = function testPassiveEventSupport2() { - if (typeof window === "undefined" || typeof window.addEventListener !== "function") { - return; - } - var passive = false; - var options = Object.defineProperty({}, "passive", { - get: function get() { - passive = true; - } - }); - var noop = function noop2() { - }; - window.addEventListener("testPassiveEventSupport", noop, options); - window.removeEventListener("testPassiveEventSupport", noop, options); - return passive; - }; - function autoInc(seed) { - if (seed === void 0) { - seed = 0; - } - return function() { - return ++seed; + return possibleConstructorReturn(this, result); }; } - var uid = autoInc(); - var passiveEventSupport; - var handlersMap = {}; - var enabledInstances = {}; - var touchEvents = ["touchstart", "touchmove"]; - var IGNORE_CLASS_NAME = "ignore-react-onclickoutside"; - function getEventHandlerOptions(instance, eventName) { - var handlerOptions = null; - var isTouchEvent = touchEvents.indexOf(eventName) !== -1; - if (isTouchEvent && passiveEventSupport) { - handlerOptions = { - passive: !instance.props.preventDefault - }; - } - return handlerOptions; + module2.exports = _createSuper, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +var require_arrayWithoutHoles = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js"(exports, module2) { + var arrayLikeToArray = require_arrayLikeToArray(); + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) + return arrayLikeToArray(arr); } - function onClickOutsideHOC(WrappedComponent, config) { - var _class, _temp; - var componentName = WrappedComponent.displayName || WrappedComponent.name || "Component"; - return _temp = _class = /* @__PURE__ */ function(_Component) { - _inheritsLoose(onClickOutside, _Component); - function onClickOutside(props) { - var _this; - _this = _Component.call(this, props) || this; - _this.__outsideClickHandler = function(event) { - if (typeof _this.__clickOutsideHandlerProp === "function") { - _this.__clickOutsideHandlerProp(event); - return; - } - var instance = _this.getInstance(); - if (typeof instance.props.handleClickOutside === "function") { - instance.props.handleClickOutside(event); - return; - } - if (typeof instance.handleClickOutside === "function") { - instance.handleClickOutside(event); - return; - } - throw new Error("WrappedComponent: " + componentName + " lacks a handleClickOutside(event) function for processing outside click events."); - }; - _this.__getComponentNode = function() { - var instance = _this.getInstance(); - if (config && typeof config.setClickOutsideRef === "function") { - return config.setClickOutsideRef()(instance); - } - if (typeof instance.setClickOutsideRef === "function") { - return instance.setClickOutsideRef(); - } - return reactDom.findDOMNode(instance); - }; - _this.enableOnClickOutside = function() { - if (typeof document === "undefined" || enabledInstances[_this._uid]) { - return; - } - if (typeof passiveEventSupport === "undefined") { - passiveEventSupport = testPassiveEventSupport(); - } - enabledInstances[_this._uid] = true; - var events = _this.props.eventTypes; - if (!events.forEach) { - events = [events]; - } - handlersMap[_this._uid] = function(event) { - if (_this.componentNode === null) - return; - if (_this.props.preventDefault) { - event.preventDefault(); - } - if (_this.props.stopPropagation) { - event.stopPropagation(); - } - if (_this.props.excludeScrollbar && clickedScrollbar(event)) - return; - var current = event.composed && event.composedPath && event.composedPath().shift() || event.target; - if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) { - return; - } - _this.__outsideClickHandler(event); + module2.exports = _arrayWithoutHoles, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/iterableToArray.js +var require_iterableToArray = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/iterableToArray.js"(exports, module2) { + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) + return Array.from(iter); + } + module2.exports = _iterableToArray, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/nonIterableSpread.js +var require_nonIterableSpread = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/nonIterableSpread.js"(exports, module2) { + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + module2.exports = _nonIterableSpread, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/toConsumableArray.js +var require_toConsumableArray = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/toConsumableArray.js"(exports, module2) { + var arrayWithoutHoles = require_arrayWithoutHoles(); + var iterableToArray = require_iterableToArray(); + var unsupportedIterableToArray = require_unsupportedIterableToArray(); + var nonIterableSpread = require_nonIterableSpread(); + function _toConsumableArray(arr) { + return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); + } + module2.exports = _toConsumableArray, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/react-select/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js +var require_taggedTemplateLiteral = __commonJS({ + "node_modules/react-select/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js"(exports, module2) { + function _taggedTemplateLiteral(strings, raw) { + if (!raw) { + raw = strings.slice(0); + } + return Object.freeze(Object.defineProperties(strings, { + raw: { + value: Object.freeze(raw) + } + })); + } + module2.exports = _taggedTemplateLiteral, module2.exports.__esModule = true, module2.exports["default"] = module2.exports; + } +}); + +// node_modules/@floating-ui/core/dist/floating-ui.core.umd.js +var require_floating_ui_core_umd = __commonJS({ + "node_modules/@floating-ui/core/dist/floating-ui.core.umd.js"(exports, module2) { + (function(global2, factory) { + typeof exports === "object" && typeof module2 !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.FloatingUICore = {})); + })(exports, function(exports2) { + "use strict"; + function getAlignment(placement) { + return placement.split("-")[1]; + } + function getLengthFromAxis(axis) { + return axis === "y" ? "height" : "width"; + } + function getSide(placement) { + return placement.split("-")[0]; + } + function getMainAxisFromPlacement(placement) { + return ["top", "bottom"].includes(getSide(placement)) ? "x" : "y"; + } + function computeCoordsFromPlacement(_ref, placement, rtl) { + let { + reference, + floating + } = _ref; + const commonX = reference.x + reference.width / 2 - floating.width / 2; + const commonY = reference.y + reference.height / 2 - floating.height / 2; + const mainAxis = getMainAxisFromPlacement(placement); + const length = getLengthFromAxis(mainAxis); + const commonAlign = reference[length] / 2 - floating[length] / 2; + const side = getSide(placement); + const isVertical = mainAxis === "x"; + let coords; + switch (side) { + case "top": + coords = { + x: commonX, + y: reference.y - floating.height }; - events.forEach(function(eventName) { - document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName)); - }); - }; - _this.disableOnClickOutside = function() { - delete enabledInstances[_this._uid]; - var fn2 = handlersMap[_this._uid]; - if (fn2 && typeof document !== "undefined") { - var events = _this.props.eventTypes; - if (!events.forEach) { - events = [events]; + break; + case "bottom": + coords = { + x: commonX, + y: reference.y + reference.height + }; + break; + case "right": + coords = { + x: reference.x + reference.width, + y: commonY + }; + break; + case "left": + coords = { + x: reference.x - floating.width, + y: commonY + }; + break; + default: + coords = { + x: reference.x, + y: reference.y + }; + } + switch (getAlignment(placement)) { + case "start": + coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1); + break; + case "end": + coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1); + break; + } + return coords; + } + const computePosition = (reference, floating, config) => __async(this, null, function* () { + const { + placement = "bottom", + strategy = "absolute", + middleware = [], + platform + } = config; + const validMiddleware = middleware.filter(Boolean); + const rtl = yield platform.isRTL == null ? void 0 : platform.isRTL(floating); + let rects = yield platform.getElementRects({ + reference, + floating, + strategy + }); + let { + x: x2, + y: y2 + } = computeCoordsFromPlacement(rects, placement, rtl); + let statefulPlacement = placement; + let middlewareData = {}; + let resetCount = 0; + for (let i2 = 0; i2 < validMiddleware.length; i2++) { + const { + name, + fn: fn2 + } = validMiddleware[i2]; + const { + x: nextX, + y: nextY, + data, + reset: reset2 + } = yield fn2({ + x: x2, + y: y2, + initialPlacement: placement, + placement: statefulPlacement, + strategy, + middlewareData, + rects, + platform, + elements: { + reference, + floating + } + }); + x2 = nextX != null ? nextX : x2; + y2 = nextY != null ? nextY : y2; + middlewareData = __spreadProps(__spreadValues({}, middlewareData), { + [name]: __spreadValues(__spreadValues({}, middlewareData[name]), data) + }); + if (reset2 && resetCount <= 50) { + resetCount++; + if (typeof reset2 === "object") { + if (reset2.placement) { + statefulPlacement = reset2.placement; } - events.forEach(function(eventName) { - return document.removeEventListener(eventName, fn2, getEventHandlerOptions(_assertThisInitialized(_this), eventName)); - }); - delete handlersMap[_this._uid]; + if (reset2.rects) { + rects = reset2.rects === true ? yield platform.getElementRects({ + reference, + floating, + strategy + }) : reset2.rects; + } + ({ + x: x2, + y: y2 + } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); } - }; - _this.getRef = function(ref) { - return _this.instanceRef = ref; - }; - _this._uid = uid(); - return _this; - } - var _proto = onClickOutside.prototype; - _proto.getInstance = function getInstance() { - if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) { - return this; - } - var ref = this.instanceRef; - return ref.getInstance ? ref.getInstance() : ref; - }; - _proto.componentDidMount = function componentDidMount() { - if (typeof document === "undefined" || !document.createElement) { - return; - } - var instance = this.getInstance(); - if (config && typeof config.handleClickOutside === "function") { - this.__clickOutsideHandlerProp = config.handleClickOutside(instance); - if (typeof this.__clickOutsideHandlerProp !== "function") { - throw new Error("WrappedComponent: " + componentName + " lacks a function for processing outside click events specified by the handleClickOutside config option."); - } - } - this.componentNode = this.__getComponentNode(); - if (this.props.disableOnClickOutside) - return; - this.enableOnClickOutside(); - }; - _proto.componentDidUpdate = function componentDidUpdate() { - this.componentNode = this.__getComponentNode(); - }; - _proto.componentWillUnmount = function componentWillUnmount() { - this.disableOnClickOutside(); - }; - _proto.render = function render() { - var _this$props = this.props; - _this$props.excludeScrollbar; - var props = _objectWithoutPropertiesLoose2(_this$props, ["excludeScrollbar"]); - if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) { - props.ref = this.getRef; - } else { - props.wrappedRef = this.getRef; - } - props.disableOnClickOutside = this.disableOnClickOutside; - props.enableOnClickOutside = this.enableOnClickOutside; - return react.createElement(WrappedComponent, props); - }; - return onClickOutside; - }(react.Component), _class.displayName = "OnClickOutside(" + componentName + ")", _class.defaultProps = { - eventTypes: ["mousedown", "touchstart"], - excludeScrollbar: config && config.excludeScrollbar || false, - outsideClickIgnoreClass: IGNORE_CLASS_NAME, - preventDefault: false, - stopPropagation: false - }, _class.getClass = function() { - return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent; - }, _temp; - } - exports.IGNORE_CLASS_NAME = IGNORE_CLASS_NAME; - exports.default = onClickOutsideHOC; - } -}); - -// node_modules/react-popper/lib/cjs/Manager.js -var require_Manager = __commonJS({ - "node_modules/react-popper/lib/cjs/Manager.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Manager = Manager; - exports.ManagerReferenceNodeSetterContext = exports.ManagerReferenceNodeContext = void 0; - var React11 = _interopRequireWildcard(require_react()); - function _getRequireWildcardCache() { - if (typeof WeakMap !== "function") - return null; - var cache = /* @__PURE__ */ new WeakMap(); - _getRequireWildcardCache = function _getRequireWildcardCache2() { - return cache; - }; - return cache; - } - function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { - return obj; - } - if (obj === null || typeof obj !== "object" && typeof obj !== "function") { - return { "default": obj }; - } - var cache = _getRequireWildcardCache(); - if (cache && cache.has(obj)) { - return cache.get(obj); - } - var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; - if (desc && (desc.get || desc.set)) { - Object.defineProperty(newObj, key, desc); - } else { - newObj[key] = obj[key]; - } - } - } - newObj["default"] = obj; - if (cache) { - cache.set(obj, newObj); - } - return newObj; - } - var ManagerReferenceNodeContext = React11.createContext(); - exports.ManagerReferenceNodeContext = ManagerReferenceNodeContext; - var ManagerReferenceNodeSetterContext = React11.createContext(); - exports.ManagerReferenceNodeSetterContext = ManagerReferenceNodeSetterContext; - function Manager(_ref) { - var children = _ref.children; - var _React$useState = React11.useState(null), referenceNode = _React$useState[0], setReferenceNode = _React$useState[1]; - var hasUnmounted = React11.useRef(false); - React11.useEffect(function() { - return function() { - hasUnmounted.current = true; - }; - }, []); - var handleSetReferenceNode = React11.useCallback(function(node) { - if (!hasUnmounted.current) { - setReferenceNode(node); - } - }, []); - return /* @__PURE__ */ React11.createElement(ManagerReferenceNodeContext.Provider, { - value: referenceNode - }, /* @__PURE__ */ React11.createElement(ManagerReferenceNodeSetterContext.Provider, { - value: handleSetReferenceNode - }, children)); - } - } -}); - -// node_modules/react-popper/lib/cjs/utils.js -var require_utils3 = __commonJS({ - "node_modules/react-popper/lib/cjs/utils.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.useIsomorphicLayoutEffect = exports.fromEntries = exports.setRef = exports.safeInvoke = exports.unwrapArray = void 0; - var React11 = _interopRequireWildcard(require_react()); - function _getRequireWildcardCache() { - if (typeof WeakMap !== "function") - return null; - var cache = /* @__PURE__ */ new WeakMap(); - _getRequireWildcardCache = function _getRequireWildcardCache2() { - return cache; - }; - return cache; - } - function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { - return obj; - } - if (obj === null || typeof obj !== "object" && typeof obj !== "function") { - return { "default": obj }; - } - var cache = _getRequireWildcardCache(); - if (cache && cache.has(obj)) { - return cache.get(obj); - } - var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; - if (desc && (desc.get || desc.set)) { - Object.defineProperty(newObj, key, desc); - } else { - newObj[key] = obj[key]; - } - } - } - newObj["default"] = obj; - if (cache) { - cache.set(obj, newObj); - } - return newObj; - } - var unwrapArray = function unwrapArray2(arg) { - return Array.isArray(arg) ? arg[0] : arg; - }; - exports.unwrapArray = unwrapArray; - var safeInvoke = function safeInvoke2(fn2) { - if (typeof fn2 === "function") { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - return fn2.apply(void 0, args); - } - }; - exports.safeInvoke = safeInvoke; - var setRef = function setRef2(ref, node) { - if (typeof ref === "function") { - return safeInvoke(ref, node); - } else if (ref != null) { - ref.current = node; - } - }; - exports.setRef = setRef; - var fromEntries = function fromEntries2(entries) { - return entries.reduce(function(acc, _ref) { - var key = _ref[0], value = _ref[1]; - acc[key] = value; - return acc; - }, {}); - }; - exports.fromEntries = fromEntries; - var useIsomorphicLayoutEffect2 = typeof window !== "undefined" && window.document && window.document.createElement ? React11.useLayoutEffect : React11.useEffect; - exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect2; - } -}); - -// node_modules/react-fast-compare/index.js -var require_react_fast_compare = __commonJS({ - "node_modules/react-fast-compare/index.js"(exports, module2) { - var hasElementType = typeof Element !== "undefined"; - var hasMap = typeof Map === "function"; - var hasSet = typeof Set === "function"; - var hasArrayBuffer = typeof ArrayBuffer === "function" && !!ArrayBuffer.isView; - function equal(a2, b2) { - if (a2 === b2) - return true; - if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") { - if (a2.constructor !== b2.constructor) - return false; - var length, i2, keys; - if (Array.isArray(a2)) { - length = a2.length; - if (length != b2.length) - return false; - for (i2 = length; i2-- !== 0; ) - if (!equal(a2[i2], b2[i2])) - return false; - return true; - } - var it; - if (hasMap && a2 instanceof Map && b2 instanceof Map) { - if (a2.size !== b2.size) - return false; - it = a2.entries(); - while (!(i2 = it.next()).done) - if (!b2.has(i2.value[0])) - return false; - it = a2.entries(); - while (!(i2 = it.next()).done) - if (!equal(i2.value[1], b2.get(i2.value[0]))) - return false; - return true; - } - if (hasSet && a2 instanceof Set && b2 instanceof Set) { - if (a2.size !== b2.size) - return false; - it = a2.entries(); - while (!(i2 = it.next()).done) - if (!b2.has(i2.value[0])) - return false; - return true; - } - if (hasArrayBuffer && ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) { - length = a2.length; - if (length != b2.length) - return false; - for (i2 = length; i2-- !== 0; ) - if (a2[i2] !== b2[i2]) - return false; - return true; - } - if (a2.constructor === RegExp) - return a2.source === b2.source && a2.flags === b2.flags; - if (a2.valueOf !== Object.prototype.valueOf) - return a2.valueOf() === b2.valueOf(); - if (a2.toString !== Object.prototype.toString) - return a2.toString() === b2.toString(); - keys = Object.keys(a2); - length = keys.length; - if (length !== Object.keys(b2).length) - return false; - for (i2 = length; i2-- !== 0; ) - if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) - return false; - if (hasElementType && a2 instanceof Element) - return false; - for (i2 = length; i2-- !== 0; ) { - if ((keys[i2] === "_owner" || keys[i2] === "__v" || keys[i2] === "__o") && a2.$$typeof) { + i2 = -1; continue; } - if (!equal(a2[keys[i2]], b2[keys[i2]])) + } + return { + x: x2, + y: y2, + placement: statefulPlacement, + strategy, + middlewareData + }; + }); + function expandPaddingObject(padding) { + return __spreadValues({ + top: 0, + right: 0, + bottom: 0, + left: 0 + }, padding); + } + function getSideObjectFromPadding(padding) { + return typeof padding !== "number" ? expandPaddingObject(padding) : { + top: padding, + right: padding, + bottom: padding, + left: padding + }; + } + function rectToClientRect(rect) { + return __spreadProps(__spreadValues({}, rect), { + top: rect.y, + left: rect.x, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); + } + function detectOverflow(state, options) { + return __async(this, null, function* () { + var _await$platform$isEle; + if (options === void 0) { + options = {}; + } + const { + x: x2, + y: y2, + platform, + rects, + elements, + strategy + } = state; + const { + boundary = "clippingAncestors", + rootBoundary = "viewport", + elementContext = "floating", + altBoundary = false, + padding = 0 + } = options; + const paddingObject = getSideObjectFromPadding(padding); + const altContext = elementContext === "floating" ? "reference" : "floating"; + const element = elements[altBoundary ? altContext : elementContext]; + const clippingClientRect = rectToClientRect(yield platform.getClippingRect({ + element: ((_await$platform$isEle = yield platform.isElement == null ? void 0 : platform.isElement(element)) != null ? _await$platform$isEle : true) ? element : element.contextElement || (yield platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating)), + boundary, + rootBoundary, + strategy + })); + const rect = elementContext === "floating" ? __spreadProps(__spreadValues({}, rects.floating), { + x: x2, + y: y2 + }) : rects.reference; + const offsetParent = yield platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating); + const offsetScale = (yield platform.isElement == null ? void 0 : platform.isElement(offsetParent)) ? (yield platform.getScale == null ? void 0 : platform.getScale(offsetParent)) || { + x: 1, + y: 1 + } : { + x: 1, + y: 1 + }; + const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? yield platform.convertOffsetParentRelativeRectToViewportRelativeRect({ + rect, + offsetParent, + strategy + }) : rect); + return { + top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, + bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, + left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, + right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x + }; + }); + } + const min2 = Math.min; + const max2 = Math.max; + function within(min$1, value, max$1) { + return max2(min$1, min2(value, max$1)); + } + const arrow = (options) => ({ + name: "arrow", + options, + fn(state) { + return __async(this, null, function* () { + const { + element, + padding = 0 + } = options || {}; + const { + x: x2, + y: y2, + placement, + rects, + platform, + elements + } = state; + if (element == null) { + return {}; + } + const paddingObject = getSideObjectFromPadding(padding); + const coords = { + x: x2, + y: y2 + }; + const axis = getMainAxisFromPlacement(placement); + const length = getLengthFromAxis(axis); + const arrowDimensions = yield platform.getDimensions(element); + const isYAxis = axis === "y"; + const minProp = isYAxis ? "top" : "left"; + const maxProp = isYAxis ? "bottom" : "right"; + const clientProp = isYAxis ? "clientHeight" : "clientWidth"; + const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; + const startDiff = coords[axis] - rects.reference[axis]; + const arrowOffsetParent = yield platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element); + let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0; + if (!clientSize || !(yield platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent))) { + clientSize = elements.floating[clientProp] || rects.floating[length]; + } + const centerToReference = endDiff / 2 - startDiff / 2; + const min3 = paddingObject[minProp]; + const max3 = clientSize - arrowDimensions[length] - paddingObject[maxProp]; + const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; + const offset2 = within(min3, center, max3); + const shouldAddOffset = getAlignment(placement) != null && center != offset2 && rects.reference[length] / 2 - (center < min3 ? paddingObject[minProp] : paddingObject[maxProp]) - arrowDimensions[length] / 2 < 0; + const alignmentOffset = shouldAddOffset ? center < min3 ? min3 - center : max3 - center : 0; + return { + [axis]: coords[axis] - alignmentOffset, + data: { + [axis]: offset2, + centerOffset: center - offset2 + } + }; + }); + } + }); + const sides = ["top", "right", "bottom", "left"]; + const allPlacements = /* @__PURE__ */ sides.reduce((acc, side) => acc.concat(side, side + "-start", side + "-end"), []); + const oppositeSideMap = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" + }; + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]); + } + function getAlignmentSides(placement, rects, rtl) { + if (rtl === void 0) { + rtl = false; + } + const alignment = getAlignment(placement); + const mainAxis = getMainAxisFromPlacement(placement); + const length = getLengthFromAxis(mainAxis); + let mainAlignmentSide = mainAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; + if (rects.reference[length] > rects.floating[length]) { + mainAlignmentSide = getOppositePlacement(mainAlignmentSide); + } + return { + main: mainAlignmentSide, + cross: getOppositePlacement(mainAlignmentSide) + }; + } + const oppositeAlignmentMap = { + start: "end", + end: "start" + }; + function getOppositeAlignmentPlacement(placement) { + return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]); + } + function getPlacementList(alignment, autoAlignment, allowedPlacements) { + const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter((placement) => getAlignment(placement) === alignment), ...allowedPlacements.filter((placement) => getAlignment(placement) !== alignment)] : allowedPlacements.filter((placement) => getSide(placement) === placement); + return allowedPlacementsSortedByAlignment.filter((placement) => { + if (alignment) { + return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false); + } + return true; + }); + } + const autoPlacement = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "autoPlacement", + options, + fn(state) { + return __async(this, null, function* () { + var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE; + const { + rects, + middlewareData, + placement, + platform, + elements + } = state; + const _a2 = options, { + crossAxis = false, + alignment, + allowedPlacements = allPlacements, + autoAlignment = true + } = _a2, detectOverflowOptions = __objRest(_a2, [ + "crossAxis", + "alignment", + "allowedPlacements", + "autoAlignment" + ]); + const placements = alignment !== void 0 || allowedPlacements === allPlacements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements; + const overflow = yield detectOverflow(state, detectOverflowOptions); + const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0; + const currentPlacement = placements[currentIndex]; + if (currentPlacement == null) { + return {}; + } + const { + main, + cross + } = getAlignmentSides(currentPlacement, rects, yield platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)); + if (placement !== currentPlacement) { + return { + reset: { + placement: placements[0] + } + }; + } + const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]]; + const allOverflows = [...((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || [], { + placement: currentPlacement, + overflows: currentOverflows + }]; + const nextPlacement = placements[currentIndex + 1]; + if (nextPlacement) { + return { + data: { + index: currentIndex + 1, + overflows: allOverflows + }, + reset: { + placement: nextPlacement + } + }; + } + const placementsSortedByMostSpace = allOverflows.map((d2) => { + const alignment2 = getAlignment(d2.placement); + return [d2.placement, alignment2 && crossAxis ? d2.overflows.slice(0, 2).reduce((acc, v2) => acc + v2, 0) : d2.overflows[0], d2.overflows]; + }).sort((a2, b2) => a2[1] - b2[1]); + const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter((d2) => d2[2].slice( + 0, + getAlignment(d2[0]) ? 2 : 3 + ).every((v2) => v2 <= 0)); + const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0]; + if (resetPlacement !== placement) { + return { + data: { + index: currentIndex + 1, + overflows: allOverflows + }, + reset: { + placement: resetPlacement + } + }; + } + return {}; + }); + } + }; + }; + function getExpandedPlacements(placement) { + const oppositePlacement = getOppositePlacement(placement); + return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; + } + function getSideList(side, isStart, rtl) { + const lr = ["left", "right"]; + const rl = ["right", "left"]; + const tb = ["top", "bottom"]; + const bt = ["bottom", "top"]; + switch (side) { + case "top": + case "bottom": + if (rtl) + return isStart ? rl : lr; + return isStart ? lr : rl; + case "left": + case "right": + return isStart ? tb : bt; + default: + return []; + } + } + function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { + const alignment = getAlignment(placement); + let list = getSideList(getSide(placement), direction === "start", rtl); + if (alignment) { + list = list.map((side) => side + "-" + alignment); + if (flipAlignment) { + list = list.concat(list.map(getOppositeAlignmentPlacement)); + } + } + return list; + } + const flip = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "flip", + options, + fn(state) { + return __async(this, null, function* () { + var _middlewareData$flip; + const { + placement, + middlewareData, + rects, + initialPlacement, + platform, + elements + } = state; + const _a2 = options, { + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = true, + fallbackPlacements: specifiedFallbackPlacements, + fallbackStrategy = "bestFit", + fallbackAxisSideDirection = "none", + flipAlignment = true + } = _a2, detectOverflowOptions = __objRest(_a2, [ + "mainAxis", + "crossAxis", + "fallbackPlacements", + "fallbackStrategy", + "fallbackAxisSideDirection", + "flipAlignment" + ]); + const side = getSide(placement); + const isBasePlacement = getSide(initialPlacement) === initialPlacement; + const rtl = yield platform.isRTL == null ? void 0 : platform.isRTL(elements.floating); + const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); + if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== "none") { + fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); + } + const placements = [initialPlacement, ...fallbackPlacements]; + const overflow = yield detectOverflow(state, detectOverflowOptions); + const overflows = []; + let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; + if (checkMainAxis) { + overflows.push(overflow[side]); + } + if (checkCrossAxis) { + const { + main, + cross + } = getAlignmentSides(placement, rects, rtl); + overflows.push(overflow[main], overflow[cross]); + } + overflowsData = [...overflowsData, { + placement, + overflows + }]; + if (!overflows.every((side2) => side2 <= 0)) { + var _middlewareData$flip2, _overflowsData$filter; + const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; + const nextPlacement = placements[nextIndex]; + if (nextPlacement) { + return { + data: { + index: nextIndex, + overflows: overflowsData + }, + reset: { + placement: nextPlacement + } + }; + } + let resetPlacement = (_overflowsData$filter = overflowsData.filter((d2) => d2.overflows[0] <= 0).sort((a2, b2) => a2.overflows[1] - b2.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement; + if (!resetPlacement) { + switch (fallbackStrategy) { + case "bestFit": { + var _overflowsData$map$so; + const placement2 = (_overflowsData$map$so = overflowsData.map((d2) => [d2.placement, d2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a2, b2) => a2[1] - b2[1])[0]) == null ? void 0 : _overflowsData$map$so[0]; + if (placement2) { + resetPlacement = placement2; + } + break; + } + case "initialPlacement": + resetPlacement = initialPlacement; + break; + } + } + if (placement !== resetPlacement) { + return { + reset: { + placement: resetPlacement + } + }; + } + } + return {}; + }); + } + }; + }; + function getSideOffsets(overflow, rect) { + return { + top: overflow.top - rect.height, + right: overflow.right - rect.width, + bottom: overflow.bottom - rect.height, + left: overflow.left - rect.width + }; + } + function isAnySideFullyClipped(overflow) { + return sides.some((side) => overflow[side] >= 0); + } + const hide = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "hide", + options, + fn(state) { + return __async(this, null, function* () { + const _a2 = options, { + strategy = "referenceHidden" + } = _a2, detectOverflowOptions = __objRest(_a2, [ + "strategy" + ]); + const { + rects + } = state; + switch (strategy) { + case "referenceHidden": { + const overflow = yield detectOverflow(state, __spreadProps(__spreadValues({}, detectOverflowOptions), { + elementContext: "reference" + })); + const offsets = getSideOffsets(overflow, rects.reference); + return { + data: { + referenceHiddenOffsets: offsets, + referenceHidden: isAnySideFullyClipped(offsets) + } + }; + } + case "escaped": { + const overflow = yield detectOverflow(state, __spreadProps(__spreadValues({}, detectOverflowOptions), { + altBoundary: true + })); + const offsets = getSideOffsets(overflow, rects.floating); + return { + data: { + escapedOffsets: offsets, + escaped: isAnySideFullyClipped(offsets) + } + }; + } + default: { + return {}; + } + } + }); + } + }; + }; + function getBoundingRect(rects) { + const minX = min2(...rects.map((rect) => rect.left)); + const minY = min2(...rects.map((rect) => rect.top)); + const maxX = max2(...rects.map((rect) => rect.right)); + const maxY = max2(...rects.map((rect) => rect.bottom)); + return { + x: minX, + y: minY, + width: maxX - minX, + height: maxY - minY + }; + } + function getRectsByLine(rects) { + const sortedRects = rects.slice().sort((a2, b2) => a2.y - b2.y); + const groups = []; + let prevRect = null; + for (let i2 = 0; i2 < sortedRects.length; i2++) { + const rect = sortedRects[i2]; + if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) { + groups.push([rect]); + } else { + groups[groups.length - 1].push(rect); + } + prevRect = rect; + } + return groups.map((rect) => rectToClientRect(getBoundingRect(rect))); + } + const inline = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "inline", + options, + fn(state) { + return __async(this, null, function* () { + const { + placement, + elements, + rects, + platform, + strategy + } = state; + const { + padding = 2, + x: x2, + y: y2 + } = options; + const nativeClientRects = Array.from((yield platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference)) || []); + const clientRects = getRectsByLine(nativeClientRects); + const fallback = rectToClientRect(getBoundingRect(nativeClientRects)); + const paddingObject = getSideObjectFromPadding(padding); + function getBoundingClientRect() { + if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x2 != null && y2 != null) { + return clientRects.find((rect) => x2 > rect.left - paddingObject.left && x2 < rect.right + paddingObject.right && y2 > rect.top - paddingObject.top && y2 < rect.bottom + paddingObject.bottom) || fallback; + } + if (clientRects.length >= 2) { + if (getMainAxisFromPlacement(placement) === "x") { + const firstRect = clientRects[0]; + const lastRect = clientRects[clientRects.length - 1]; + const isTop = getSide(placement) === "top"; + const top2 = firstRect.top; + const bottom2 = lastRect.bottom; + const left2 = isTop ? firstRect.left : lastRect.left; + const right2 = isTop ? firstRect.right : lastRect.right; + const width2 = right2 - left2; + const height2 = bottom2 - top2; + return { + top: top2, + bottom: bottom2, + left: left2, + right: right2, + width: width2, + height: height2, + x: left2, + y: top2 + }; + } + const isLeftSide = getSide(placement) === "left"; + const maxRight = max2(...clientRects.map((rect) => rect.right)); + const minLeft = min2(...clientRects.map((rect) => rect.left)); + const measureRects = clientRects.filter((rect) => isLeftSide ? rect.left === minLeft : rect.right === maxRight); + const top = measureRects[0].top; + const bottom = measureRects[measureRects.length - 1].bottom; + const left = minLeft; + const right = maxRight; + const width = right - left; + const height = bottom - top; + return { + top, + bottom, + left, + right, + width, + height, + x: left, + y: top + }; + } + return fallback; + } + const resetRects = yield platform.getElementRects({ + reference: { + getBoundingClientRect + }, + floating: elements.floating, + strategy + }); + if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) { + return { + reset: { + rects: resetRects + } + }; + } + return {}; + }); + } + }; + }; + function convertValueToCoords(state, value) { + return __async(this, null, function* () { + const { + placement, + platform, + elements + } = state; + const rtl = yield platform.isRTL == null ? void 0 : platform.isRTL(elements.floating); + const side = getSide(placement); + const alignment = getAlignment(placement); + const isVertical = getMainAxisFromPlacement(placement) === "x"; + const mainAxisMulti = ["left", "top"].includes(side) ? -1 : 1; + const crossAxisMulti = rtl && isVertical ? -1 : 1; + const rawValue = typeof value === "function" ? value(state) : value; + let { + mainAxis, + crossAxis, + alignmentAxis + } = typeof rawValue === "number" ? { + mainAxis: rawValue, + crossAxis: 0, + alignmentAxis: null + } : __spreadValues({ + mainAxis: 0, + crossAxis: 0, + alignmentAxis: null + }, rawValue); + if (alignment && typeof alignmentAxis === "number") { + crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; + } + return isVertical ? { + x: crossAxis * crossAxisMulti, + y: mainAxis * mainAxisMulti + } : { + x: mainAxis * mainAxisMulti, + y: crossAxis * crossAxisMulti + }; + }); + } + const offset = function(value) { + if (value === void 0) { + value = 0; + } + return { + name: "offset", + options: value, + fn(state) { + return __async(this, null, function* () { + const { + x: x2, + y: y2 + } = state; + const diffCoords = yield convertValueToCoords(state, value); + return { + x: x2 + diffCoords.x, + y: y2 + diffCoords.y, + data: diffCoords + }; + }); + } + }; + }; + function getCrossAxis(axis) { + return axis === "x" ? "y" : "x"; + } + const shift = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "shift", + options, + fn(state) { + return __async(this, null, function* () { + const { + x: x2, + y: y2, + placement + } = state; + const _a2 = options, { + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = false, + limiter = { + fn: (_ref) => { + let { + x: x3, + y: y3 + } = _ref; + return { + x: x3, + y: y3 + }; + } + } + } = _a2, detectOverflowOptions = __objRest(_a2, [ + "mainAxis", + "crossAxis", + "limiter" + ]); + const coords = { + x: x2, + y: y2 + }; + const overflow = yield detectOverflow(state, detectOverflowOptions); + const mainAxis = getMainAxisFromPlacement(getSide(placement)); + const crossAxis = getCrossAxis(mainAxis); + let mainAxisCoord = coords[mainAxis]; + let crossAxisCoord = coords[crossAxis]; + if (checkMainAxis) { + const minSide = mainAxis === "y" ? "top" : "left"; + const maxSide = mainAxis === "y" ? "bottom" : "right"; + const min3 = mainAxisCoord + overflow[minSide]; + const max3 = mainAxisCoord - overflow[maxSide]; + mainAxisCoord = within(min3, mainAxisCoord, max3); + } + if (checkCrossAxis) { + const minSide = crossAxis === "y" ? "top" : "left"; + const maxSide = crossAxis === "y" ? "bottom" : "right"; + const min3 = crossAxisCoord + overflow[minSide]; + const max3 = crossAxisCoord - overflow[maxSide]; + crossAxisCoord = within(min3, crossAxisCoord, max3); + } + const limitedCoords = limiter.fn(__spreadProps(__spreadValues({}, state), { + [mainAxis]: mainAxisCoord, + [crossAxis]: crossAxisCoord + })); + return __spreadProps(__spreadValues({}, limitedCoords), { + data: { + x: limitedCoords.x - x2, + y: limitedCoords.y - y2 + } + }); + }); + } + }; + }; + const limitShift = function(options) { + if (options === void 0) { + options = {}; + } + return { + options, + fn(state) { + const { + x: x2, + y: y2, + placement, + rects, + middlewareData + } = state; + const { + offset: offset2 = 0, + mainAxis: checkMainAxis = true, + crossAxis: checkCrossAxis = true + } = options; + const coords = { + x: x2, + y: y2 + }; + const mainAxis = getMainAxisFromPlacement(placement); + const crossAxis = getCrossAxis(mainAxis); + let mainAxisCoord = coords[mainAxis]; + let crossAxisCoord = coords[crossAxis]; + const rawOffset = typeof offset2 === "function" ? offset2(state) : offset2; + const computedOffset = typeof rawOffset === "number" ? { + mainAxis: rawOffset, + crossAxis: 0 + } : __spreadValues({ + mainAxis: 0, + crossAxis: 0 + }, rawOffset); + if (checkMainAxis) { + const len = mainAxis === "y" ? "height" : "width"; + const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; + const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; + if (mainAxisCoord < limitMin) { + mainAxisCoord = limitMin; + } else if (mainAxisCoord > limitMax) { + mainAxisCoord = limitMax; + } + } + if (checkCrossAxis) { + var _middlewareData$offse, _middlewareData$offse2; + const len = mainAxis === "y" ? "width" : "height"; + const isOriginSide = ["top", "left"].includes(getSide(placement)); + const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis); + const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0); + if (crossAxisCoord < limitMin) { + crossAxisCoord = limitMin; + } else if (crossAxisCoord > limitMax) { + crossAxisCoord = limitMax; + } + } + return { + [mainAxis]: mainAxisCoord, + [crossAxis]: crossAxisCoord + }; + } + }; + }; + const size = function(options) { + if (options === void 0) { + options = {}; + } + return { + name: "size", + options, + fn(state) { + return __async(this, null, function* () { + const { + placement, + rects, + platform, + elements + } = state; + const _a2 = options, { + apply = () => { + } + } = _a2, detectOverflowOptions = __objRest(_a2, [ + "apply" + ]); + const overflow = yield detectOverflow(state, detectOverflowOptions); + const side = getSide(placement); + const alignment = getAlignment(placement); + const axis = getMainAxisFromPlacement(placement); + const isXAxis = axis === "x"; + const { + width, + height + } = rects.floating; + let heightSide; + let widthSide; + if (side === "top" || side === "bottom") { + heightSide = side; + widthSide = alignment === ((yield platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right"; + } else { + widthSide = side; + heightSide = alignment === "end" ? "top" : "bottom"; + } + const overflowAvailableHeight = height - overflow[heightSide]; + const overflowAvailableWidth = width - overflow[widthSide]; + const noShift = !state.middlewareData.shift; + let availableHeight = overflowAvailableHeight; + let availableWidth = overflowAvailableWidth; + if (isXAxis) { + const maximumClippingWidth = width - overflow.left - overflow.right; + availableWidth = alignment || noShift ? min2(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth; + } else { + const maximumClippingHeight = height - overflow.top - overflow.bottom; + availableHeight = alignment || noShift ? min2(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight; + } + if (noShift && !alignment) { + const xMin = max2(overflow.left, 0); + const xMax = max2(overflow.right, 0); + const yMin = max2(overflow.top, 0); + const yMax = max2(overflow.bottom, 0); + if (isXAxis) { + availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max2(overflow.left, overflow.right)); + } else { + availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max2(overflow.top, overflow.bottom)); + } + } + yield apply(__spreadProps(__spreadValues({}, state), { + availableWidth, + availableHeight + })); + const nextDimensions = yield platform.getDimensions(elements.floating); + if (width !== nextDimensions.width || height !== nextDimensions.height) { + return { + reset: { + rects: true + } + }; + } + return {}; + }); + } + }; + }; + exports2.arrow = arrow; + exports2.autoPlacement = autoPlacement; + exports2.computePosition = computePosition; + exports2.detectOverflow = detectOverflow; + exports2.flip = flip; + exports2.hide = hide; + exports2.inline = inline; + exports2.limitShift = limitShift; + exports2.offset = offset; + exports2.rectToClientRect = rectToClientRect; + exports2.shift = shift; + exports2.size = size; + Object.defineProperty(exports2, "__esModule", { value: true }); + }); + } +}); + +// node_modules/@floating-ui/dom/dist/floating-ui.dom.umd.js +var require_floating_ui_dom_umd = __commonJS({ + "node_modules/@floating-ui/dom/dist/floating-ui.dom.umd.js"(exports, module2) { + (function(global2, factory) { + typeof exports === "object" && typeof module2 !== "undefined" ? factory(exports, require_floating_ui_core_umd()) : typeof define === "function" && define.amd ? define(["exports", "@floating-ui/core"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.FloatingUIDOM = {}, global2.FloatingUICore)); + })(exports, function(exports2, core) { + "use strict"; + function getWindow(node) { + var _node$ownerDocument; + return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; + } + function getComputedStyle$1(element) { + return getWindow(element).getComputedStyle(element); + } + function isNode(value) { + return value instanceof getWindow(value).Node; + } + function getNodeName(node) { + return isNode(node) ? (node.nodeName || "").toLowerCase() : ""; + } + let uaString; + function getUAString() { + if (uaString) { + return uaString; + } + const uaData = navigator.userAgentData; + if (uaData && Array.isArray(uaData.brands)) { + uaString = uaData.brands.map((item) => item.brand + "/" + item.version).join(" "); + return uaString; + } + return navigator.userAgent; + } + function isHTMLElement(value) { + return value instanceof getWindow(value).HTMLElement; + } + function isElement(value) { + return value instanceof getWindow(value).Element; + } + function isShadowRoot(node) { + if (typeof ShadowRoot === "undefined") { + return false; + } + const OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; + } + function isOverflowElement(element) { + const { + overflow, + overflowX, + overflowY, + display + } = getComputedStyle$1(element); + return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !["inline", "contents"].includes(display); + } + function isTableElement(element) { + return ["table", "td", "th"].includes(getNodeName(element)); + } + function isContainingBlock(element) { + const isFirefox = /firefox/i.test(getUAString()); + const css2 = getComputedStyle$1(element); + const backdropFilter = css2.backdropFilter || css2.WebkitBackdropFilter; + return css2.transform !== "none" || css2.perspective !== "none" || (backdropFilter ? backdropFilter !== "none" : false) || isFirefox && css2.willChange === "filter" || isFirefox && (css2.filter ? css2.filter !== "none" : false) || ["transform", "perspective"].some((value) => css2.willChange.includes(value)) || ["paint", "layout", "strict", "content"].some((value) => { + const contain = css2.contain; + return contain != null ? contain.includes(value) : false; + }); + } + function isClientRectVisualViewportBased() { + return /^((?!chrome|android).)*safari/i.test(getUAString()); + } + function isLastTraversableNode(node) { + return ["html", "body", "#document"].includes(getNodeName(node)); + } + const min2 = Math.min; + const max2 = Math.max; + const round2 = Math.round; + function getCssDimensions(element) { + const css2 = getComputedStyle$1(element); + let width = parseFloat(css2.width); + let height = parseFloat(css2.height); + const hasOffset = isHTMLElement(element); + const offsetWidth = hasOffset ? element.offsetWidth : width; + const offsetHeight = hasOffset ? element.offsetHeight : height; + const shouldFallback = round2(width) !== offsetWidth || round2(height) !== offsetHeight; + if (shouldFallback) { + width = offsetWidth; + height = offsetHeight; + } + return { + width, + height, + fallback: shouldFallback + }; + } + function unwrapElement(element) { + return !isElement(element) ? element.contextElement : element; + } + const FALLBACK_SCALE = { + x: 1, + y: 1 + }; + function getScale(element) { + const domElement = unwrapElement(element); + if (!isHTMLElement(domElement)) { + return FALLBACK_SCALE; + } + const rect = domElement.getBoundingClientRect(); + const { + width, + height, + fallback + } = getCssDimensions(domElement); + let x2 = (fallback ? round2(rect.width) : rect.width) / width; + let y2 = (fallback ? round2(rect.height) : rect.height) / height; + if (!x2 || !Number.isFinite(x2)) { + x2 = 1; + } + if (!y2 || !Number.isFinite(y2)) { + y2 = 1; + } + return { + x: x2, + y: y2 + }; + } + function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { + var _win$visualViewport, _win$visualViewport2; + if (includeScale === void 0) { + includeScale = false; + } + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } + const clientRect = element.getBoundingClientRect(); + const domElement = unwrapElement(element); + let scale = FALLBACK_SCALE; + if (includeScale) { + if (offsetParent) { + if (isElement(offsetParent)) { + scale = getScale(offsetParent); + } + } else { + scale = getScale(element); + } + } + const win = domElement ? getWindow(domElement) : window; + const addVisualOffsets = isClientRectVisualViewportBased() && isFixedStrategy; + let x2 = (clientRect.left + (addVisualOffsets ? ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0 : 0)) / scale.x; + let y2 = (clientRect.top + (addVisualOffsets ? ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0 : 0)) / scale.y; + let width = clientRect.width / scale.x; + let height = clientRect.height / scale.y; + if (domElement) { + const win2 = getWindow(domElement); + const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; + let currentIFrame = win2.frameElement; + while (currentIFrame && offsetParent && offsetWin !== win2) { + const iframeScale = getScale(currentIFrame); + const iframeRect = currentIFrame.getBoundingClientRect(); + const css2 = getComputedStyle(currentIFrame); + iframeRect.x += (currentIFrame.clientLeft + parseFloat(css2.paddingLeft)) * iframeScale.x; + iframeRect.y += (currentIFrame.clientTop + parseFloat(css2.paddingTop)) * iframeScale.y; + x2 *= iframeScale.x; + y2 *= iframeScale.y; + width *= iframeScale.x; + height *= iframeScale.y; + x2 += iframeRect.x; + y2 += iframeRect.y; + currentIFrame = getWindow(currentIFrame).frameElement; + } + } + return core.rectToClientRect({ + width, + height, + x: x2, + y: y2 + }); + } + function getDocumentElement(node) { + return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement; + } + function getNodeScroll(element) { + if (isElement(element)) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + return { + scrollLeft: element.pageXOffset, + scrollTop: element.pageYOffset + }; + } + function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { + let { + rect, + offsetParent, + strategy + } = _ref; + const isOffsetParentAnElement = isHTMLElement(offsetParent); + const documentElement = getDocumentElement(offsetParent); + if (offsetParent === documentElement) { + return rect; + } + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + let scale = { + x: 1, + y: 1 + }; + const offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== "fixed") { + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + const offsetRect = getBoundingClientRect(offsetParent); + scale = getScale(offsetParent); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } + } + return { + width: rect.width * scale.x, + height: rect.height * scale.y, + x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x, + y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + }; + } + function getWindowScrollBarX(element) { + return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft; + } + function getDocumentRect(element) { + const html = getDocumentElement(element); + const scroll = getNodeScroll(element); + const body = element.ownerDocument.body; + const width = max2(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); + const height = max2(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); + let x2 = -scroll.scrollLeft + getWindowScrollBarX(element); + const y2 = -scroll.scrollTop; + if (getComputedStyle$1(body).direction === "rtl") { + x2 += max2(html.clientWidth, body.clientWidth) - width; + } + return { + width, + height, + x: x2, + y: y2 + }; + } + function getParentNode(node) { + if (getNodeName(node) === "html") { + return node; + } + const result = node.assignedSlot || node.parentNode || isShadowRoot(node) && node.host || getDocumentElement(node); + return isShadowRoot(result) ? result.host : result; + } + function getNearestOverflowAncestor(node) { + const parentNode = getParentNode(node); + if (isLastTraversableNode(parentNode)) { + return parentNode.ownerDocument.body; + } + if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { + return parentNode; + } + return getNearestOverflowAncestor(parentNode); + } + function getOverflowAncestors(node, list) { + var _node$ownerDocument; + if (list === void 0) { + list = []; + } + const scrollableAncestor = getNearestOverflowAncestor(node); + const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body); + const win = getWindow(scrollableAncestor); + if (isBody) { + return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []); + } + return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor)); + } + function getViewportRect(element, strategy) { + const win = getWindow(element); + const html = getDocumentElement(element); + const visualViewport = win.visualViewport; + let width = html.clientWidth; + let height = html.clientHeight; + let x2 = 0; + let y2 = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + const visualViewportBased = isClientRectVisualViewportBased(); + if (!visualViewportBased || visualViewportBased && strategy === "fixed") { + x2 = visualViewport.offsetLeft; + y2 = visualViewport.offsetTop; + } + } + return { + width, + height, + x: x2, + y: y2 + }; + } + function getInnerBoundingClientRect(element, strategy) { + const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); + const top = clientRect.top + element.clientTop; + const left = clientRect.left + element.clientLeft; + const scale = isHTMLElement(element) ? getScale(element) : { + x: 1, + y: 1 + }; + const width = element.clientWidth * scale.x; + const height = element.clientHeight * scale.y; + const x2 = left * scale.x; + const y2 = top * scale.y; + return { + width, + height, + x: x2, + y: y2 + }; + } + function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { + let rect; + if (clippingAncestor === "viewport") { + rect = getViewportRect(element, strategy); + } else if (clippingAncestor === "document") { + rect = getDocumentRect(getDocumentElement(element)); + } else if (isElement(clippingAncestor)) { + rect = getInnerBoundingClientRect(clippingAncestor, strategy); + } else { + const mutableRect = __spreadValues({}, clippingAncestor); + if (isClientRectVisualViewportBased()) { + var _win$visualViewport, _win$visualViewport2; + const win = getWindow(element); + mutableRect.x -= ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0; + mutableRect.y -= ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0; + } + rect = mutableRect; + } + return core.rectToClientRect(rect); + } + function hasFixedPositionAncestor(element, stopNode) { + const parentNode = getParentNode(element); + if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) { + return false; + } + return getComputedStyle$1(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode); + } + function getClippingElementAncestors(element, cache) { + const cachedResult = cache.get(element); + if (cachedResult) { + return cachedResult; + } + let result = getOverflowAncestors(element).filter((el) => isElement(el) && getNodeName(el) !== "body"); + let currentContainingBlockComputedStyle = null; + const elementIsFixed = getComputedStyle$1(element).position === "fixed"; + let currentNode = elementIsFixed ? getParentNode(element) : element; + while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { + const computedStyle = getComputedStyle$1(currentNode); + const currentNodeIsContaining = isContainingBlock(currentNode); + if (!currentNodeIsContaining && computedStyle.position === "fixed") { + currentContainingBlockComputedStyle = null; + } + const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && ["absolute", "fixed"].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode); + if (shouldDropCurrentNode) { + result = result.filter((ancestor) => ancestor !== currentNode); + } else { + currentContainingBlockComputedStyle = computedStyle; + } + currentNode = getParentNode(currentNode); + } + cache.set(element, result); + return result; + } + function getClippingRect(_ref) { + let { + element, + boundary, + rootBoundary, + strategy + } = _ref; + const elementClippingAncestors = boundary === "clippingAncestors" ? getClippingElementAncestors(element, this._c) : [].concat(boundary); + const clippingAncestors = [...elementClippingAncestors, rootBoundary]; + const firstClippingAncestor = clippingAncestors[0]; + const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => { + const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy); + accRect.top = max2(rect.top, accRect.top); + accRect.right = min2(rect.right, accRect.right); + accRect.bottom = min2(rect.bottom, accRect.bottom); + accRect.left = max2(rect.left, accRect.left); + return accRect; + }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy)); + return { + width: clippingRect.right - clippingRect.left, + height: clippingRect.bottom - clippingRect.top, + x: clippingRect.left, + y: clippingRect.top + }; + } + function getDimensions(element) { + return getCssDimensions(element); + } + function getTrueOffsetParent(element, polyfill) { + if (!isHTMLElement(element) || getComputedStyle$1(element).position === "fixed") { + return null; + } + if (polyfill) { + return polyfill(element); + } + return element.offsetParent; + } + function getContainingBlock(element) { + let currentNode = getParentNode(element); + while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { + if (isContainingBlock(currentNode)) { + return currentNode; + } else { + currentNode = getParentNode(currentNode); + } + } + return null; + } + function getOffsetParent(element, polyfill) { + const window2 = getWindow(element); + if (!isHTMLElement(element)) { + return window2; + } + let offsetParent = getTrueOffsetParent(element, polyfill); + while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === "static") { + offsetParent = getTrueOffsetParent(offsetParent, polyfill); + } + if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle$1(offsetParent).position === "static" && !isContainingBlock(offsetParent))) { + return window2; + } + return offsetParent || getContainingBlock(element) || window2; + } + function getRectRelativeToOffsetParent(element, offsetParent, strategy) { + const isOffsetParentAnElement = isHTMLElement(offsetParent); + const documentElement = getDocumentElement(offsetParent); + const rect = getBoundingClientRect(element, true, strategy === "fixed", offsetParent); + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + const offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== "fixed") { + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + const offsetRect = getBoundingClientRect(offsetParent, true); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; + } + const platform = { + getClippingRect, + convertOffsetParentRelativeRectToViewportRelativeRect, + isElement, + getDimensions, + getOffsetParent, + getDocumentElement, + getScale, + getElementRects(_ref) { + return __async(this, null, function* () { + let { + reference, + floating, + strategy + } = _ref; + const getOffsetParentFn = this.getOffsetParent || getOffsetParent; + const getDimensionsFn = this.getDimensions; + return { + reference: getRectRelativeToOffsetParent(reference, yield getOffsetParentFn(floating), strategy), + floating: __spreadValues({ + x: 0, + y: 0 + }, yield getDimensionsFn(floating)) + }; + }); + }, + getClientRects: (element) => Array.from(element.getClientRects()), + isRTL: (element) => getComputedStyle$1(element).direction === "rtl" + }; + function autoUpdate(reference, floating, update, options) { + if (options === void 0) { + options = {}; + } + const { + ancestorScroll = true, + ancestorResize = true, + elementResize = true, + animationFrame = false + } = options; + const ancestors = ancestorScroll || ancestorResize ? [...isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : [], ...getOverflowAncestors(floating)] : []; + ancestors.forEach((ancestor) => { + const isVisualViewport = !isElement(ancestor) && ancestor.toString().includes("V"); + if (ancestorScroll && (animationFrame ? isVisualViewport : true)) { + ancestor.addEventListener("scroll", update, { + passive: true + }); + } + ancestorResize && ancestor.addEventListener("resize", update); + }); + let observer = null; + if (elementResize) { + observer = new ResizeObserver(() => { + update(); + }); + isElement(reference) && !animationFrame && observer.observe(reference); + if (!isElement(reference) && reference.contextElement && !animationFrame) { + observer.observe(reference.contextElement); + } + observer.observe(floating); + } + let frameId; + let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; + if (animationFrame) { + frameLoop(); + } + function frameLoop() { + const nextRefRect = getBoundingClientRect(reference); + if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) { + update(); + } + prevRefRect = nextRefRect; + frameId = requestAnimationFrame(frameLoop); + } + update(); + return () => { + var _observer; + ancestors.forEach((ancestor) => { + ancestorScroll && ancestor.removeEventListener("scroll", update); + ancestorResize && ancestor.removeEventListener("resize", update); + }); + (_observer = observer) == null ? void 0 : _observer.disconnect(); + observer = null; + if (animationFrame) { + cancelAnimationFrame(frameId); + } + }; + } + const computePosition = (reference, floating, options) => { + const cache = /* @__PURE__ */ new Map(); + const mergedOptions = __spreadValues({ + platform + }, options); + const platformWithCache = __spreadProps(__spreadValues({}, mergedOptions.platform), { + _c: cache + }); + return core.computePosition(reference, floating, __spreadProps(__spreadValues({}, mergedOptions), { + platform: platformWithCache + })); + }; + Object.defineProperty(exports2, "arrow", { + enumerable: true, + get: function() { + return core.arrow; + } + }); + Object.defineProperty(exports2, "autoPlacement", { + enumerable: true, + get: function() { + return core.autoPlacement; + } + }); + Object.defineProperty(exports2, "detectOverflow", { + enumerable: true, + get: function() { + return core.detectOverflow; + } + }); + Object.defineProperty(exports2, "flip", { + enumerable: true, + get: function() { + return core.flip; + } + }); + Object.defineProperty(exports2, "hide", { + enumerable: true, + get: function() { + return core.hide; + } + }); + Object.defineProperty(exports2, "inline", { + enumerable: true, + get: function() { + return core.inline; + } + }); + Object.defineProperty(exports2, "limitShift", { + enumerable: true, + get: function() { + return core.limitShift; + } + }); + Object.defineProperty(exports2, "offset", { + enumerable: true, + get: function() { + return core.offset; + } + }); + Object.defineProperty(exports2, "shift", { + enumerable: true, + get: function() { + return core.shift; + } + }); + Object.defineProperty(exports2, "size", { + enumerable: true, + get: function() { + return core.size; + } + }); + exports2.autoUpdate = autoUpdate; + exports2.computePosition = computePosition; + exports2.getOverflowAncestors = getOverflowAncestors; + exports2.platform = platform; + Object.defineProperty(exports2, "__esModule", { value: true }); + }); + } +}); + +// node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.cjs.js +var require_use_isomorphic_layout_effect_browser_cjs = __commonJS({ + "node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.cjs.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var react = require_react(); + var index = react.useLayoutEffect; + exports.default = index; + } +}); + +// node_modules/react-select/dist/index-2fe3dc33.cjs.dev.js +var require_index_2fe3dc33_cjs_dev = __commonJS({ + "node_modules/react-select/dist/index-2fe3dc33.cjs.dev.js"(exports) { + "use strict"; + var _objectSpread = require_objectSpread2(); + var _extends2 = require_extends2(); + var react = require_emotion_react_cjs(); + var _slicedToArray = require_slicedToArray(); + var _objectWithoutProperties = require_objectWithoutProperties(); + var _typeof = require_typeof(); + var _taggedTemplateLiteral = require_taggedTemplateLiteral(); + var _defineProperty2 = require_defineProperty(); + var React49 = require_react(); + var reactDom = require_react_dom(); + var dom = require_floating_ui_dom_umd(); + var useLayoutEffect2 = require_use_isomorphic_layout_effect_browser_cjs(); + function _interopDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + var useLayoutEffect__default = /* @__PURE__ */ _interopDefault(useLayoutEffect2); + var _excluded$3 = ["className", "clearValue", "cx", "getStyles", "getClassNames", "getValue", "hasValue", "isMulti", "isRtl", "options", "selectOption", "selectProps", "setValue", "theme"]; + var noop2 = function noop3() { + }; + function applyPrefixToName(prefix2, name) { + if (!name) { + return prefix2; + } else if (name[0] === "-") { + return prefix2 + name; + } else { + return prefix2 + "__" + name; + } + } + function classNames(prefix2, state) { + for (var _len = arguments.length, classNameList = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + classNameList[_key - 2] = arguments[_key]; + } + var arr = [].concat(classNameList); + if (state && prefix2) { + for (var key in state) { + if (state.hasOwnProperty(key) && state[key]) { + arr.push("".concat(applyPrefixToName(prefix2, key))); + } + } + } + return arr.filter(function(i2) { + return i2; + }).map(function(i2) { + return String(i2).trim(); + }).join(" "); + } + var cleanValue = function cleanValue2(value) { + if (isArray(value)) + return value.filter(Boolean); + if (_typeof(value) === "object" && value !== null) + return [value]; + return []; + }; + var cleanCommonProps = function cleanCommonProps2(props) { + props.className; + props.clearValue; + props.cx; + props.getStyles; + props.getClassNames; + props.getValue; + props.hasValue; + props.isMulti; + props.isRtl; + props.options; + props.selectOption; + props.selectProps; + props.setValue; + props.theme; + var innerProps = _objectWithoutProperties(props, _excluded$3); + return _objectSpread({}, innerProps); + }; + var getStyleProps = function getStyleProps2(props, name, classNamesState) { + var cx = props.cx, getStyles = props.getStyles, getClassNames = props.getClassNames, className = props.className; + return { + css: getStyles(name, props), + className: cx(classNamesState !== null && classNamesState !== void 0 ? classNamesState : {}, getClassNames(name, props), className) + }; + }; + function handleInputChange(inputValue, actionMeta, onInputChange) { + if (onInputChange) { + var _newValue = onInputChange(inputValue, actionMeta); + if (typeof _newValue === "string") + return _newValue; + } + return inputValue; + } + function isDocumentElement(el) { + return [document.documentElement, document.body, window].indexOf(el) > -1; + } + function normalizedHeight(el) { + if (isDocumentElement(el)) { + return window.innerHeight; + } + return el.clientHeight; + } + function getScrollTop(el) { + if (isDocumentElement(el)) { + return window.pageYOffset; + } + return el.scrollTop; + } + function scrollTo(el, top) { + if (isDocumentElement(el)) { + window.scrollTo(0, top); + return; + } + el.scrollTop = top; + } + function getScrollParent(element) { + var style = getComputedStyle(element); + var excludeStaticParent = style.position === "absolute"; + var overflowRx = /(auto|scroll)/; + if (style.position === "fixed") + return document.documentElement; + for (var parent = element; parent = parent.parentElement; ) { + style = getComputedStyle(parent); + if (excludeStaticParent && style.position === "static") { + continue; + } + if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) { + return parent; + } + } + return document.documentElement; + } + function easeOutCubic(t2, b2, c2, d2) { + return c2 * ((t2 = t2 / d2 - 1) * t2 * t2 + 1) + b2; + } + function animatedScrollTo(element, to) { + var duration = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 200; + var callback = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : noop2; + var start = getScrollTop(element); + var change = to - start; + var increment = 10; + var currentTime = 0; + function animateScroll() { + currentTime += increment; + var val = easeOutCubic(currentTime, start, change, duration); + scrollTo(element, val); + if (currentTime < duration) { + window.requestAnimationFrame(animateScroll); + } else { + callback(element); + } + } + animateScroll(); + } + function scrollIntoView(menuEl, focusedEl) { + var menuRect = menuEl.getBoundingClientRect(); + var focusedRect = focusedEl.getBoundingClientRect(); + var overScroll = focusedEl.offsetHeight / 3; + if (focusedRect.bottom + overScroll > menuRect.bottom) { + scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight)); + } else if (focusedRect.top - overScroll < menuRect.top) { + scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0)); + } + } + function getBoundingClientObj(element) { + var rect = element.getBoundingClientRect(); + return { + bottom: rect.bottom, + height: rect.height, + left: rect.left, + right: rect.right, + top: rect.top, + width: rect.width + }; + } + function isTouchCapable() { + try { + document.createEvent("TouchEvent"); + return true; + } catch (e) { + return false; + } + } + function isMobileDevice() { + try { + return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); + } catch (e) { + return false; + } + } + var passiveOptionAccessed = false; + var options = { + get passive() { + return passiveOptionAccessed = true; + } + }; + var w2 = typeof window !== "undefined" ? window : {}; + if (w2.addEventListener && w2.removeEventListener) { + w2.addEventListener("p", noop2, options); + w2.removeEventListener("p", noop2, false); + } + var supportsPassiveEvents = passiveOptionAccessed; + function notNullish(item) { + return item != null; + } + function isArray(arg) { + return Array.isArray(arg); + } + function valueTernary(isMulti, multiValue, singleValue) { + return isMulti ? multiValue : singleValue; + } + function singleValueAsValue(singleValue) { + return singleValue; + } + function multiValueAsValue(multiValue) { + return multiValue; + } + var removeProps = function removeProps2(propsObj) { + for (var _len2 = arguments.length, properties = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + properties[_key2 - 1] = arguments[_key2]; + } + var propsMap = Object.entries(propsObj).filter(function(_ref) { + var _ref22 = _slicedToArray(_ref, 1), key = _ref22[0]; + return !properties.includes(key); + }); + return propsMap.reduce(function(newProps, _ref3) { + var _ref4 = _slicedToArray(_ref3, 2), key = _ref4[0], val = _ref4[1]; + newProps[key] = val; + return newProps; + }, {}); + }; + function getMenuPlacement(_ref) { + var preferredMaxHeight = _ref.maxHeight, menuEl = _ref.menuEl, minHeight = _ref.minHeight, preferredPlacement = _ref.placement, shouldScroll = _ref.shouldScroll, isFixedPosition = _ref.isFixedPosition, controlHeight = _ref.controlHeight; + var scrollParent = getScrollParent(menuEl); + var defaultState = { + placement: "bottom", + maxHeight: preferredMaxHeight + }; + if (!menuEl || !menuEl.offsetParent) + return defaultState; + var _scrollParent$getBoun = scrollParent.getBoundingClientRect(), scrollHeight = _scrollParent$getBoun.height; + var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(), menuBottom = _menuEl$getBoundingCl.bottom, menuHeight = _menuEl$getBoundingCl.height, menuTop = _menuEl$getBoundingCl.top; + var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(), containerTop = _menuEl$offsetParent$.top; + var viewHeight = isFixedPosition ? window.innerHeight : normalizedHeight(scrollParent); + var scrollTop = getScrollTop(scrollParent); + var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10); + var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10); + var viewSpaceAbove = containerTop - marginTop; + var viewSpaceBelow = viewHeight - menuTop; + var scrollSpaceAbove = viewSpaceAbove + scrollTop; + var scrollSpaceBelow = scrollHeight - scrollTop - menuTop; + var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom; + var scrollUp = scrollTop + menuTop - marginTop; + var scrollDuration = 160; + switch (preferredPlacement) { + case "auto": + case "bottom": + if (viewSpaceBelow >= menuHeight) { + return { + placement: "bottom", + maxHeight: preferredMaxHeight + }; + } + if (scrollSpaceBelow >= menuHeight && !isFixedPosition) { + if (shouldScroll) { + animatedScrollTo(scrollParent, scrollDown, scrollDuration); + } + return { + placement: "bottom", + maxHeight: preferredMaxHeight + }; + } + if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) { + if (shouldScroll) { + animatedScrollTo(scrollParent, scrollDown, scrollDuration); + } + var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom; + return { + placement: "bottom", + maxHeight: constrainedHeight + }; + } + if (preferredPlacement === "auto" || isFixedPosition) { + var _constrainedHeight = preferredMaxHeight; + var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove; + if (spaceAbove >= minHeight) { + _constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight); + } + return { + placement: "top", + maxHeight: _constrainedHeight + }; + } + if (preferredPlacement === "bottom") { + if (shouldScroll) { + scrollTo(scrollParent, scrollDown); + } + return { + placement: "bottom", + maxHeight: preferredMaxHeight + }; + } + break; + case "top": + if (viewSpaceAbove >= menuHeight) { + return { + placement: "top", + maxHeight: preferredMaxHeight + }; + } + if (scrollSpaceAbove >= menuHeight && !isFixedPosition) { + if (shouldScroll) { + animatedScrollTo(scrollParent, scrollUp, scrollDuration); + } + return { + placement: "top", + maxHeight: preferredMaxHeight + }; + } + if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) { + var _constrainedHeight2 = preferredMaxHeight; + if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) { + _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop; + } + if (shouldScroll) { + animatedScrollTo(scrollParent, scrollUp, scrollDuration); + } + return { + placement: "top", + maxHeight: _constrainedHeight2 + }; + } + return { + placement: "bottom", + maxHeight: preferredMaxHeight + }; + default: + throw new Error('Invalid placement provided "'.concat(preferredPlacement, '".')); + } + return defaultState; + } + function alignToControl(placement) { + var placementToCSSProp = { + bottom: "top", + top: "bottom" + }; + return placement ? placementToCSSProp[placement] : "bottom"; + } + var coercePlacement = function coercePlacement2(p2) { + return p2 === "auto" ? "bottom" : p2; + }; + var menuCSS = function menuCSS2(_ref22, unstyled) { + var _objectSpread22; + var placement = _ref22.placement, _ref2$theme = _ref22.theme, borderRadius = _ref2$theme.borderRadius, spacing = _ref2$theme.spacing, colors = _ref2$theme.colors; + return _objectSpread((_objectSpread22 = { + label: "menu" + }, _defineProperty2(_objectSpread22, alignToControl(placement), "100%"), _defineProperty2(_objectSpread22, "position", "absolute"), _defineProperty2(_objectSpread22, "width", "100%"), _defineProperty2(_objectSpread22, "zIndex", 1), _objectSpread22), unstyled ? {} : { + backgroundColor: colors.neutral0, + borderRadius, + boxShadow: "0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)", + marginBottom: spacing.menuGutter, + marginTop: spacing.menuGutter + }); + }; + var PortalPlacementContext = /* @__PURE__ */ React49.createContext(null); + var MenuPlacer = function MenuPlacer2(props) { + var children = props.children, minMenuHeight = props.minMenuHeight, maxMenuHeight = props.maxMenuHeight, menuPlacement = props.menuPlacement, menuPosition = props.menuPosition, menuShouldScrollIntoView = props.menuShouldScrollIntoView, theme = props.theme; + var _ref3 = React49.useContext(PortalPlacementContext) || {}, setPortalPlacement = _ref3.setPortalPlacement; + var ref = React49.useRef(null); + var _useState = React49.useState(maxMenuHeight), _useState2 = _slicedToArray(_useState, 2), maxHeight = _useState2[0], setMaxHeight = _useState2[1]; + var _useState3 = React49.useState(null), _useState4 = _slicedToArray(_useState3, 2), placement = _useState4[0], setPlacement = _useState4[1]; + var controlHeight = theme.spacing.controlHeight; + useLayoutEffect__default["default"](function() { + var menuEl = ref.current; + if (!menuEl) + return; + var isFixedPosition = menuPosition === "fixed"; + var shouldScroll = menuShouldScrollIntoView && !isFixedPosition; + var state = getMenuPlacement({ + maxHeight: maxMenuHeight, + menuEl, + minHeight: minMenuHeight, + placement: menuPlacement, + shouldScroll, + isFixedPosition, + controlHeight + }); + setMaxHeight(state.maxHeight); + setPlacement(state.placement); + setPortalPlacement === null || setPortalPlacement === void 0 ? void 0 : setPortalPlacement(state.placement); + }, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]); + return children({ + ref, + placerProps: _objectSpread(_objectSpread({}, props), {}, { + placement: placement || coercePlacement(menuPlacement), + maxHeight + }) + }); + }; + var Menu3 = function Menu4(props) { + var children = props.children, innerRef = props.innerRef, innerProps = props.innerProps; + return react.jsx("div", _extends2({}, getStyleProps(props, "menu", { + menu: true + }), { + ref: innerRef + }, innerProps), children); + }; + var Menu$1 = Menu3; + var menuListCSS = function menuListCSS2(_ref4, unstyled) { + var maxHeight = _ref4.maxHeight, baseUnit = _ref4.theme.spacing.baseUnit; + return _objectSpread({ + maxHeight, + overflowY: "auto", + position: "relative", + WebkitOverflowScrolling: "touch" + }, unstyled ? {} : { + paddingBottom: baseUnit, + paddingTop: baseUnit + }); + }; + var MenuList = function MenuList2(props) { + var children = props.children, innerProps = props.innerProps, innerRef = props.innerRef, isMulti = props.isMulti; + return react.jsx("div", _extends2({}, getStyleProps(props, "menuList", { + "menu-list": true, + "menu-list--is-multi": isMulti + }), { + ref: innerRef + }, innerProps), children); + }; + var noticeCSS = function noticeCSS2(_ref5, unstyled) { + var _ref5$theme = _ref5.theme, baseUnit = _ref5$theme.spacing.baseUnit, colors = _ref5$theme.colors; + return _objectSpread({ + textAlign: "center" + }, unstyled ? {} : { + color: colors.neutral40, + padding: "".concat(baseUnit * 2, "px ").concat(baseUnit * 3, "px") + }); + }; + var noOptionsMessageCSS = noticeCSS; + var loadingMessageCSS = noticeCSS; + var NoOptionsMessage = function NoOptionsMessage2(props) { + var children = props.children, innerProps = props.innerProps; + return react.jsx("div", _extends2({}, getStyleProps(props, "noOptionsMessage", { + "menu-notice": true, + "menu-notice--no-options": true + }), innerProps), children); + }; + NoOptionsMessage.defaultProps = { + children: "No options" + }; + var LoadingMessage = function LoadingMessage2(props) { + var children = props.children, innerProps = props.innerProps; + return react.jsx("div", _extends2({}, getStyleProps(props, "loadingMessage", { + "menu-notice": true, + "menu-notice--loading": true + }), innerProps), children); + }; + LoadingMessage.defaultProps = { + children: "Loading..." + }; + var menuPortalCSS = function menuPortalCSS2(_ref6) { + var rect = _ref6.rect, offset = _ref6.offset, position = _ref6.position; + return { + left: rect.left, + position, + top: offset, + width: rect.width, + zIndex: 1 + }; + }; + var MenuPortal = function MenuPortal2(props) { + var appendTo = props.appendTo, children = props.children, controlElement = props.controlElement, innerProps = props.innerProps, menuPlacement = props.menuPlacement, menuPosition = props.menuPosition; + var menuPortalRef = React49.useRef(null); + var cleanupRef = React49.useRef(null); + var _useState5 = React49.useState(coercePlacement(menuPlacement)), _useState6 = _slicedToArray(_useState5, 2), placement = _useState6[0], setPortalPlacement = _useState6[1]; + var portalPlacementContext = React49.useMemo(function() { + return { + setPortalPlacement + }; + }, []); + var _useState7 = React49.useState(null), _useState8 = _slicedToArray(_useState7, 2), computedPosition = _useState8[0], setComputedPosition = _useState8[1]; + var updateComputedPosition = React49.useCallback(function() { + if (!controlElement) + return; + var rect = getBoundingClientObj(controlElement); + var scrollDistance = menuPosition === "fixed" ? 0 : window.pageYOffset; + var offset = rect[placement] + scrollDistance; + if (offset !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset) || rect.left !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left) || rect.width !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width)) { + setComputedPosition({ + offset, + rect + }); + } + }, [controlElement, menuPosition, placement, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width]); + useLayoutEffect__default["default"](function() { + updateComputedPosition(); + }, [updateComputedPosition]); + var runAutoUpdate = React49.useCallback(function() { + if (typeof cleanupRef.current === "function") { + cleanupRef.current(); + cleanupRef.current = null; + } + if (controlElement && menuPortalRef.current) { + cleanupRef.current = dom.autoUpdate(controlElement, menuPortalRef.current, updateComputedPosition, { + elementResize: "ResizeObserver" in window + }); + } + }, [controlElement, updateComputedPosition]); + useLayoutEffect__default["default"](function() { + runAutoUpdate(); + }, [runAutoUpdate]); + var setMenuPortalElement = React49.useCallback(function(menuPortalElement) { + menuPortalRef.current = menuPortalElement; + runAutoUpdate(); + }, [runAutoUpdate]); + if (!appendTo && menuPosition !== "fixed" || !computedPosition) + return null; + var menuWrapper = react.jsx("div", _extends2({ + ref: setMenuPortalElement + }, getStyleProps(_objectSpread(_objectSpread({}, props), {}, { + offset: computedPosition.offset, + position: menuPosition, + rect: computedPosition.rect + }), "menuPortal", { + "menu-portal": true + }), innerProps), children); + return react.jsx(PortalPlacementContext.Provider, { + value: portalPlacementContext + }, appendTo ? /* @__PURE__ */ reactDom.createPortal(menuWrapper, appendTo) : menuWrapper); + }; + var containerCSS = function containerCSS2(_ref) { + var isDisabled = _ref.isDisabled, isRtl = _ref.isRtl; + return { + label: "container", + direction: isRtl ? "rtl" : void 0, + pointerEvents: isDisabled ? "none" : void 0, + position: "relative" + }; + }; + var SelectContainer = function SelectContainer2(props) { + var children = props.children, innerProps = props.innerProps, isDisabled = props.isDisabled, isRtl = props.isRtl; + return react.jsx("div", _extends2({}, getStyleProps(props, "container", { + "--is-disabled": isDisabled, + "--is-rtl": isRtl + }), innerProps), children); + }; + var valueContainerCSS = function valueContainerCSS2(_ref22, unstyled) { + var spacing = _ref22.theme.spacing, isMulti = _ref22.isMulti, hasValue = _ref22.hasValue, controlShouldRenderValue = _ref22.selectProps.controlShouldRenderValue; + return _objectSpread({ + alignItems: "center", + display: isMulti && hasValue && controlShouldRenderValue ? "flex" : "grid", + flex: 1, + flexWrap: "wrap", + WebkitOverflowScrolling: "touch", + position: "relative", + overflow: "hidden" + }, unstyled ? {} : { + padding: "".concat(spacing.baseUnit / 2, "px ").concat(spacing.baseUnit * 2, "px") + }); + }; + var ValueContainer = function ValueContainer2(props) { + var children = props.children, innerProps = props.innerProps, isMulti = props.isMulti, hasValue = props.hasValue; + return react.jsx("div", _extends2({}, getStyleProps(props, "valueContainer", { + "value-container": true, + "value-container--is-multi": isMulti, + "value-container--has-value": hasValue + }), innerProps), children); + }; + var indicatorsContainerCSS = function indicatorsContainerCSS2() { + return { + alignItems: "center", + alignSelf: "stretch", + display: "flex", + flexShrink: 0 + }; + }; + var IndicatorsContainer = function IndicatorsContainer2(props) { + var children = props.children, innerProps = props.innerProps; + return react.jsx("div", _extends2({}, getStyleProps(props, "indicatorsContainer", { + indicators: true + }), innerProps), children); + }; + var _templateObject; + var _excluded$2 = ["size"]; + function _EMOTION_STRINGIFIED_CSS_ERROR__() { + return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; + } + var _ref2 = false ? { + name: "8mmkcg", + styles: "display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0" + } : { + name: "tj5bde-Svg", + styles: "display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;label:Svg;", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4LCBrZXlmcmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7XG4gIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lLFxuICBDU1NPYmplY3RXaXRoTGFiZWwsXG4gIEdyb3VwQmFzZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U3R5bGVQcm9wcyB9IGZyb20gJy4uL3V0aWxzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHtcbiAgc2l6ZSxcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU6IG51bWJlciB9KSA9PiAoXG4gIDxzdmdcbiAgICBoZWlnaHQ9e3NpemV9XG4gICAgd2lkdGg9e3NpemV9XG4gICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgY3NzPXt7XG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIGZpbGw6ICdjdXJyZW50Q29sb3InLFxuICAgICAgbGluZUhlaWdodDogMSxcbiAgICAgIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzdHJva2VXaWR0aDogMCxcbiAgICB9fVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIENyb3NzSWNvblByb3BzID0gSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZT86IG51bWJlciB9O1xuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogQ3Jvc3NJY29uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCB0eXBlIERvd25DaGV2cm9uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IERvd25DaGV2cm9uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTQuNTE2IDcuNTQ4YzAuNDM2LTAuNDQ2IDEuMDQzLTAuNDgxIDEuNTc2IDBsMy45MDggMy43NDcgMy45MDgtMy43NDdjMC41MzMtMC40ODEgMS4xNDEtMC40NDYgMS41NzQgMCAwLjQzNiAwLjQ0NSAwLjQwOCAxLjE5NyAwIDEuNjE1LTAuNDA2IDAuNDE4LTQuNjk1IDQuNTAyLTQuNjk1IDQuNTAyLTAuMjE3IDAuMjIzLTAuNTAyIDAuMzM1LTAuNzg3IDAuMzM1cy0wLjU3LTAuMTEyLTAuNzg5LTAuMzM1YzAgMC00LjI4Ny00LjA4NC00LjY5NS00LjUwMnMtMC40MzYtMS4xNyAwLTEuNjE1elwiIC8+XG4gIDwvU3ZnPlxuKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xufVxuXG5jb25zdCBiYXNlQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTpcbiAgICB8IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbiAgICB8IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgICAgICB9LFxuICAgICAgfSksXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2Ryb3Bkb3duSW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDbGVhckluZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NsZWFySW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaW5uZXJQcm9wcz86IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3BhbiddO1xufVxuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNEaXNhYmxlZCxcbiAgICB0aGVtZToge1xuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgICAgY29sb3JzLFxuICAgIH0sXG4gIH06IEluZGljYXRvclNlcGFyYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+LFxuICB1bnN0eWxlZDogYm9vbGVhblxuKTogQ1NTT2JqZWN0V2l0aExhYmVsID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yU2VwYXJhdG9yJyxcbiAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gIHdpZHRoOiAxLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBtYXJnaW5Cb3R0b206IGJhc2VVbml0ICogMixcbiAgICAgICAgbWFyZ2luVG9wOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yU2VwYXJhdG9yJywge1xuICAgICAgICAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHNpemUsXG4gICAgdGhlbWU6IHtcbiAgICAgIGNvbG9ycyxcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICB9LFxuICB9OiBMb2FkaW5nSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICAgICAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICAgICAgfSksXG59KTtcblxuaW50ZXJmYWNlIExvYWRpbmdEb3RQcm9wcyB7XG4gIGRlbGF5OiBudW1iZXI7XG4gIG9mZnNldDogYm9vbGVhbjtcbn1cbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IExvYWRpbmdEb3RQcm9wcykgPT4gKFxuICA8c3BhblxuICAgIGNzcz17e1xuICAgICAgYW5pbWF0aW9uOiBgJHtsb2FkaW5nRG90QW5pbWF0aW9uc30gMXMgZWFzZS1pbi1vdXQgJHtkZWxheX1tcyBpbmZpbml0ZTtgLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzFlbScsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIG1hcmdpbkxlZnQ6IG9mZnNldCA/ICcxZW0nIDogdW5kZWZpbmVkLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRpbmdJbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgLyoqIFNldCBzaXplIG9mIHRoZSBjb250YWluZXIuICovXG4gIHNpemU6IG51bWJlcjtcbn1cbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogTG9hZGluZ0luZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+XG4pID0+IHtcbiAgY29uc3QgeyBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2xvYWRpbmdJbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgIH0pfVxuICAgICAgey4uLmlubmVyUHJvcHN9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__ + }; + var Svg = function Svg2(_ref) { + var size = _ref.size, props = _objectWithoutProperties(_ref, _excluded$2); + return react.jsx("svg", _extends2({ + height: size, + width: size, + viewBox: "0 0 20 20", + "aria-hidden": "true", + focusable: "false", + css: _ref2 + }, props)); + }; + var CrossIcon = function CrossIcon2(props) { + return react.jsx(Svg, _extends2({ + size: 20 + }, props), react.jsx("path", { + d: "M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z" + })); + }; + var DownChevron = function DownChevron2(props) { + return react.jsx(Svg, _extends2({ + size: 20 + }, props), react.jsx("path", { + d: "M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z" + })); + }; + var baseCSS = function baseCSS2(_ref3, unstyled) { + var isFocused = _ref3.isFocused, _ref3$theme = _ref3.theme, baseUnit = _ref3$theme.spacing.baseUnit, colors = _ref3$theme.colors; + return _objectSpread({ + label: "indicatorContainer", + display: "flex", + transition: "color 150ms" + }, unstyled ? {} : { + color: isFocused ? colors.neutral60 : colors.neutral20, + padding: baseUnit * 2, + ":hover": { + color: isFocused ? colors.neutral80 : colors.neutral40 + } + }); + }; + var dropdownIndicatorCSS = baseCSS; + var DropdownIndicator = function DropdownIndicator2(props) { + var children = props.children, innerProps = props.innerProps; + return react.jsx("div", _extends2({}, getStyleProps(props, "dropdownIndicator", { + indicator: true, + "dropdown-indicator": true + }), innerProps), children || react.jsx(DownChevron, null)); + }; + var clearIndicatorCSS = baseCSS; + var ClearIndicator = function ClearIndicator2(props) { + var children = props.children, innerProps = props.innerProps; + return react.jsx("div", _extends2({}, getStyleProps(props, "clearIndicator", { + indicator: true, + "clear-indicator": true + }), innerProps), children || react.jsx(CrossIcon, null)); + }; + var indicatorSeparatorCSS = function indicatorSeparatorCSS2(_ref4, unstyled) { + var isDisabled = _ref4.isDisabled, _ref4$theme = _ref4.theme, baseUnit = _ref4$theme.spacing.baseUnit, colors = _ref4$theme.colors; + return _objectSpread({ + label: "indicatorSeparator", + alignSelf: "stretch", + width: 1 + }, unstyled ? {} : { + backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20, + marginBottom: baseUnit * 2, + marginTop: baseUnit * 2 + }); + }; + var IndicatorSeparator = function IndicatorSeparator2(props) { + var innerProps = props.innerProps; + return react.jsx("span", _extends2({}, innerProps, getStyleProps(props, "indicatorSeparator", { + "indicator-separator": true + }))); + }; + var loadingDotAnimations = react.keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n 0%, 80%, 100% { opacity: 0; }\n 40% { opacity: 1; }\n"]))); + var loadingIndicatorCSS = function loadingIndicatorCSS2(_ref5, unstyled) { + var isFocused = _ref5.isFocused, size = _ref5.size, _ref5$theme = _ref5.theme, colors = _ref5$theme.colors, baseUnit = _ref5$theme.spacing.baseUnit; + return _objectSpread({ + label: "loadingIndicator", + display: "flex", + transition: "color 150ms", + alignSelf: "center", + fontSize: size, + lineHeight: 1, + marginRight: size, + textAlign: "center", + verticalAlign: "middle" + }, unstyled ? {} : { + color: isFocused ? colors.neutral60 : colors.neutral20, + padding: baseUnit * 2 + }); + }; + var LoadingDot = function LoadingDot2(_ref6) { + var delay = _ref6.delay, offset = _ref6.offset; + return react.jsx("span", { + css: /* @__PURE__ */ react.css({ + animation: "".concat(loadingDotAnimations, " 1s ease-in-out ").concat(delay, "ms infinite;"), + backgroundColor: "currentColor", + borderRadius: "1em", + display: "inline-block", + marginLeft: offset ? "1em" : void 0, + height: "1em", + verticalAlign: "top", + width: "1em" + }, false ? "" : ";label:LoadingDot;", false ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1RSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4LCBrZXlmcmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7XG4gIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lLFxuICBDU1NPYmplY3RXaXRoTGFiZWwsXG4gIEdyb3VwQmFzZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U3R5bGVQcm9wcyB9IGZyb20gJy4uL3V0aWxzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHtcbiAgc2l6ZSxcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU6IG51bWJlciB9KSA9PiAoXG4gIDxzdmdcbiAgICBoZWlnaHQ9e3NpemV9XG4gICAgd2lkdGg9e3NpemV9XG4gICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgY3NzPXt7XG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIGZpbGw6ICdjdXJyZW50Q29sb3InLFxuICAgICAgbGluZUhlaWdodDogMSxcbiAgICAgIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzdHJva2VXaWR0aDogMCxcbiAgICB9fVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIENyb3NzSWNvblByb3BzID0gSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZT86IG51bWJlciB9O1xuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogQ3Jvc3NJY29uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCB0eXBlIERvd25DaGV2cm9uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IERvd25DaGV2cm9uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTQuNTE2IDcuNTQ4YzAuNDM2LTAuNDQ2IDEuMDQzLTAuNDgxIDEuNTc2IDBsMy45MDggMy43NDcgMy45MDgtMy43NDdjMC41MzMtMC40ODEgMS4xNDEtMC40NDYgMS41NzQgMCAwLjQzNiAwLjQ0NSAwLjQwOCAxLjE5NyAwIDEuNjE1LTAuNDA2IDAuNDE4LTQuNjk1IDQuNTAyLTQuNjk1IDQuNTAyLTAuMjE3IDAuMjIzLTAuNTAyIDAuMzM1LTAuNzg3IDAuMzM1cy0wLjU3LTAuMTEyLTAuNzg5LTAuMzM1YzAgMC00LjI4Ny00LjA4NC00LjY5NS00LjUwMnMtMC40MzYtMS4xNyAwLTEuNjE1elwiIC8+XG4gIDwvU3ZnPlxuKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xufVxuXG5jb25zdCBiYXNlQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTpcbiAgICB8IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbiAgICB8IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgICAgICB9LFxuICAgICAgfSksXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2Ryb3Bkb3duSW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDbGVhckluZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NsZWFySW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaW5uZXJQcm9wcz86IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3BhbiddO1xufVxuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNEaXNhYmxlZCxcbiAgICB0aGVtZToge1xuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgICAgY29sb3JzLFxuICAgIH0sXG4gIH06IEluZGljYXRvclNlcGFyYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+LFxuICB1bnN0eWxlZDogYm9vbGVhblxuKTogQ1NTT2JqZWN0V2l0aExhYmVsID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yU2VwYXJhdG9yJyxcbiAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gIHdpZHRoOiAxLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBtYXJnaW5Cb3R0b206IGJhc2VVbml0ICogMixcbiAgICAgICAgbWFyZ2luVG9wOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yU2VwYXJhdG9yJywge1xuICAgICAgICAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHNpemUsXG4gICAgdGhlbWU6IHtcbiAgICAgIGNvbG9ycyxcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICB9LFxuICB9OiBMb2FkaW5nSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICAgICAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICAgICAgfSksXG59KTtcblxuaW50ZXJmYWNlIExvYWRpbmdEb3RQcm9wcyB7XG4gIGRlbGF5OiBudW1iZXI7XG4gIG9mZnNldDogYm9vbGVhbjtcbn1cbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IExvYWRpbmdEb3RQcm9wcykgPT4gKFxuICA8c3BhblxuICAgIGNzcz17e1xuICAgICAgYW5pbWF0aW9uOiBgJHtsb2FkaW5nRG90QW5pbWF0aW9uc30gMXMgZWFzZS1pbi1vdXQgJHtkZWxheX1tcyBpbmZpbml0ZTtgLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzFlbScsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIG1hcmdpbkxlZnQ6IG9mZnNldCA/ICcxZW0nIDogdW5kZWZpbmVkLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRpbmdJbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgLyoqIFNldCBzaXplIG9mIHRoZSBjb250YWluZXIuICovXG4gIHNpemU6IG51bWJlcjtcbn1cbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogTG9hZGluZ0luZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+XG4pID0+IHtcbiAgY29uc3QgeyBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2xvYWRpbmdJbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgIH0pfVxuICAgICAgey4uLmlubmVyUHJvcHN9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */") + }); + }; + var LoadingIndicator = function LoadingIndicator2(props) { + var innerProps = props.innerProps, isRtl = props.isRtl; + return react.jsx("div", _extends2({}, getStyleProps(props, "loadingIndicator", { + indicator: true, + "loading-indicator": true + }), innerProps), react.jsx(LoadingDot, { + delay: 0, + offset: isRtl + }), react.jsx(LoadingDot, { + delay: 160, + offset: true + }), react.jsx(LoadingDot, { + delay: 320, + offset: !isRtl + })); + }; + LoadingIndicator.defaultProps = { + size: 4 + }; + var css$1 = function css3(_ref, unstyled) { + var isDisabled = _ref.isDisabled, isFocused = _ref.isFocused, _ref$theme = _ref.theme, colors = _ref$theme.colors, borderRadius = _ref$theme.borderRadius, spacing = _ref$theme.spacing; + return _objectSpread({ + label: "control", + alignItems: "center", + cursor: "default", + display: "flex", + flexWrap: "wrap", + justifyContent: "space-between", + minHeight: spacing.controlHeight, + outline: "0 !important", + position: "relative", + transition: "all 100ms" + }, unstyled ? {} : { + backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0, + borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20, + borderRadius, + borderStyle: "solid", + borderWidth: 1, + boxShadow: isFocused ? "0 0 0 1px ".concat(colors.primary) : void 0, + "&:hover": { + borderColor: isFocused ? colors.primary : colors.neutral30 + } + }); + }; + var Control = function Control2(props) { + var children = props.children, isDisabled = props.isDisabled, isFocused = props.isFocused, innerRef = props.innerRef, innerProps = props.innerProps, menuIsOpen = props.menuIsOpen; + return react.jsx("div", _extends2({ + ref: innerRef + }, getStyleProps(props, "control", { + control: true, + "control--is-disabled": isDisabled, + "control--is-focused": isFocused, + "control--menu-is-open": menuIsOpen + }), innerProps), children); + }; + var Control$1 = Control; + var _excluded$1 = ["data"]; + var groupCSS = function groupCSS2(_ref, unstyled) { + var spacing = _ref.theme.spacing; + return unstyled ? {} : { + paddingBottom: spacing.baseUnit * 2, + paddingTop: spacing.baseUnit * 2 + }; + }; + var Group = function Group2(props) { + var children = props.children, cx = props.cx, getStyles = props.getStyles, getClassNames = props.getClassNames, Heading = props.Heading, headingProps = props.headingProps, innerProps = props.innerProps, label = props.label, theme = props.theme, selectProps = props.selectProps; + return react.jsx("div", _extends2({}, getStyleProps(props, "group", { + group: true + }), innerProps), react.jsx(Heading, _extends2({}, headingProps, { + selectProps, + theme, + getStyles, + getClassNames, + cx + }), label), react.jsx("div", null, children)); + }; + var groupHeadingCSS = function groupHeadingCSS2(_ref22, unstyled) { + var _ref2$theme = _ref22.theme, colors = _ref2$theme.colors, spacing = _ref2$theme.spacing; + return _objectSpread({ + label: "group", + cursor: "default", + display: "block" + }, unstyled ? {} : { + color: colors.neutral40, + fontSize: "75%", + fontWeight: 500, + marginBottom: "0.25em", + paddingLeft: spacing.baseUnit * 3, + paddingRight: spacing.baseUnit * 3, + textTransform: "uppercase" + }); + }; + var GroupHeading = function GroupHeading2(props) { + var _cleanCommonProps = cleanCommonProps(props); + _cleanCommonProps.data; + var innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded$1); + return react.jsx("div", _extends2({}, getStyleProps(props, "groupHeading", { + "group-heading": true + }), innerProps)); + }; + var Group$1 = Group; + var _excluded = ["innerRef", "isDisabled", "isHidden", "inputClassName"]; + var inputCSS = function inputCSS2(_ref, unstyled) { + var isDisabled = _ref.isDisabled, value = _ref.value, _ref$theme = _ref.theme, spacing = _ref$theme.spacing, colors = _ref$theme.colors; + return _objectSpread(_objectSpread({ + visibility: isDisabled ? "hidden" : "visible", + transform: value ? "translateZ(0)" : "" + }, containerStyle2), unstyled ? {} : { + margin: spacing.baseUnit / 2, + paddingBottom: spacing.baseUnit / 2, + paddingTop: spacing.baseUnit / 2, + color: colors.neutral80 + }); + }; + var spacingStyle = { + gridArea: "1 / 2", + font: "inherit", + minWidth: "2px", + border: 0, + margin: 0, + outline: 0, + padding: 0 + }; + var containerStyle2 = { + flex: "1 1 auto", + display: "inline-grid", + gridArea: "1 / 1 / 2 / 3", + gridTemplateColumns: "0 min-content", + "&:after": _objectSpread({ + content: 'attr(data-value) " "', + visibility: "hidden", + whiteSpace: "pre" + }, spacingStyle) + }; + var inputStyle = function inputStyle2(isHidden) { + return _objectSpread({ + label: "input", + color: "inherit", + background: 0, + opacity: isHidden ? 0 : 1, + width: "100%" + }, spacingStyle); + }; + var Input = function Input2(props) { + var cx = props.cx, value = props.value; + var _cleanCommonProps = cleanCommonProps(props), innerRef = _cleanCommonProps.innerRef, isDisabled = _cleanCommonProps.isDisabled, isHidden = _cleanCommonProps.isHidden, inputClassName = _cleanCommonProps.inputClassName, innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded); + return react.jsx("div", _extends2({}, getStyleProps(props, "input", { + "input-container": true + }), { + "data-value": value || "" + }), react.jsx("input", _extends2({ + className: cx({ + input: true + }, inputClassName), + ref: innerRef, + style: inputStyle(isHidden), + disabled: isDisabled + }, innerProps))); + }; + var Input$1 = Input; + var multiValueCSS = function multiValueCSS2(_ref, unstyled) { + var _ref$theme = _ref.theme, spacing = _ref$theme.spacing, borderRadius = _ref$theme.borderRadius, colors = _ref$theme.colors; + return _objectSpread({ + label: "multiValue", + display: "flex", + minWidth: 0 + }, unstyled ? {} : { + backgroundColor: colors.neutral10, + borderRadius: borderRadius / 2, + margin: spacing.baseUnit / 2 + }); + }; + var multiValueLabelCSS = function multiValueLabelCSS2(_ref22, unstyled) { + var _ref2$theme = _ref22.theme, borderRadius = _ref2$theme.borderRadius, colors = _ref2$theme.colors, cropWithEllipsis = _ref22.cropWithEllipsis; + return _objectSpread({ + overflow: "hidden", + textOverflow: cropWithEllipsis || cropWithEllipsis === void 0 ? "ellipsis" : void 0, + whiteSpace: "nowrap" + }, unstyled ? {} : { + borderRadius: borderRadius / 2, + color: colors.neutral80, + fontSize: "85%", + padding: 3, + paddingLeft: 6 + }); + }; + var multiValueRemoveCSS = function multiValueRemoveCSS2(_ref3, unstyled) { + var _ref3$theme = _ref3.theme, spacing = _ref3$theme.spacing, borderRadius = _ref3$theme.borderRadius, colors = _ref3$theme.colors, isFocused = _ref3.isFocused; + return _objectSpread({ + alignItems: "center", + display: "flex" + }, unstyled ? {} : { + borderRadius: borderRadius / 2, + backgroundColor: isFocused ? colors.dangerLight : void 0, + paddingLeft: spacing.baseUnit, + paddingRight: spacing.baseUnit, + ":hover": { + backgroundColor: colors.dangerLight, + color: colors.danger + } + }); + }; + var MultiValueGeneric = function MultiValueGeneric2(_ref4) { + var children = _ref4.children, innerProps = _ref4.innerProps; + return react.jsx("div", innerProps, children); + }; + var MultiValueContainer = MultiValueGeneric; + var MultiValueLabel = MultiValueGeneric; + function MultiValueRemove(_ref5) { + var children = _ref5.children, innerProps = _ref5.innerProps; + return react.jsx("div", _extends2({ + role: "button" + }, innerProps), children || react.jsx(CrossIcon, { + size: 14 + })); + } + var MultiValue = function MultiValue2(props) { + var children = props.children, components2 = props.components, data = props.data, innerProps = props.innerProps, isDisabled = props.isDisabled, removeProps2 = props.removeProps, selectProps = props.selectProps; + var Container = components2.Container, Label = components2.Label, Remove = components2.Remove; + return react.jsx(Container, { + data, + innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, "multiValue", { + "multi-value": true, + "multi-value--is-disabled": isDisabled + })), innerProps), + selectProps + }, react.jsx(Label, { + data, + innerProps: _objectSpread({}, getStyleProps(props, "multiValueLabel", { + "multi-value__label": true + })), + selectProps + }, children), react.jsx(Remove, { + data, + innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, "multiValueRemove", { + "multi-value__remove": true + })), {}, { + "aria-label": "Remove ".concat(children || "option") + }, removeProps2), + selectProps + })); + }; + var MultiValue$1 = MultiValue; + var optionCSS = function optionCSS2(_ref, unstyled) { + var isDisabled = _ref.isDisabled, isFocused = _ref.isFocused, isSelected = _ref.isSelected, _ref$theme = _ref.theme, spacing = _ref$theme.spacing, colors = _ref$theme.colors; + return _objectSpread({ + label: "option", + cursor: "default", + display: "block", + fontSize: "inherit", + width: "100%", + userSelect: "none", + WebkitTapHighlightColor: "rgba(0, 0, 0, 0)" + }, unstyled ? {} : { + backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : "transparent", + color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : "inherit", + padding: "".concat(spacing.baseUnit * 2, "px ").concat(spacing.baseUnit * 3, "px"), + ":active": { + backgroundColor: !isDisabled ? isSelected ? colors.primary : colors.primary50 : void 0 + } + }); + }; + var Option = function Option2(props) { + var children = props.children, isDisabled = props.isDisabled, isFocused = props.isFocused, isSelected = props.isSelected, innerRef = props.innerRef, innerProps = props.innerProps; + return react.jsx("div", _extends2({}, getStyleProps(props, "option", { + option: true, + "option--is-disabled": isDisabled, + "option--is-focused": isFocused, + "option--is-selected": isSelected + }), { + ref: innerRef, + "aria-disabled": isDisabled + }, innerProps), children); + }; + var Option$1 = Option; + var placeholderCSS = function placeholderCSS2(_ref, unstyled) { + var _ref$theme = _ref.theme, spacing = _ref$theme.spacing, colors = _ref$theme.colors; + return _objectSpread({ + label: "placeholder", + gridArea: "1 / 1 / 2 / 3" + }, unstyled ? {} : { + color: colors.neutral50, + marginLeft: spacing.baseUnit / 2, + marginRight: spacing.baseUnit / 2 + }); + }; + var Placeholder = function Placeholder2(props) { + var children = props.children, innerProps = props.innerProps; + return react.jsx("div", _extends2({}, getStyleProps(props, "placeholder", { + placeholder: true + }), innerProps), children); + }; + var Placeholder$1 = Placeholder; + var css2 = function css3(_ref, unstyled) { + var isDisabled = _ref.isDisabled, _ref$theme = _ref.theme, spacing = _ref$theme.spacing, colors = _ref$theme.colors; + return _objectSpread({ + label: "singleValue", + gridArea: "1 / 1 / 2 / 3", + maxWidth: "100%", + overflow: "hidden", + textOverflow: "ellipsis", + whiteSpace: "nowrap" + }, unstyled ? {} : { + color: isDisabled ? colors.neutral40 : colors.neutral80, + marginLeft: spacing.baseUnit / 2, + marginRight: spacing.baseUnit / 2 + }); + }; + var SingleValue = function SingleValue2(props) { + var children = props.children, isDisabled = props.isDisabled, innerProps = props.innerProps; + return react.jsx("div", _extends2({}, getStyleProps(props, "singleValue", { + "single-value": true, + "single-value--is-disabled": isDisabled + }), innerProps), children); + }; + var SingleValue$1 = SingleValue; + var components = { + ClearIndicator, + Control: Control$1, + DropdownIndicator, + DownChevron, + CrossIcon, + Group: Group$1, + GroupHeading, + IndicatorsContainer, + IndicatorSeparator, + Input: Input$1, + LoadingIndicator, + Menu: Menu$1, + MenuList, + MenuPortal, + LoadingMessage, + NoOptionsMessage, + MultiValue: MultiValue$1, + MultiValueContainer, + MultiValueLabel, + MultiValueRemove, + Option: Option$1, + Placeholder: Placeholder$1, + SelectContainer, + SingleValue: SingleValue$1, + ValueContainer + }; + var defaultComponents = function defaultComponents2(props) { + return _objectSpread(_objectSpread({}, components), props.components); + }; + exports.MenuPlacer = MenuPlacer; + exports.classNames = classNames; + exports.cleanValue = cleanValue; + exports.clearIndicatorCSS = clearIndicatorCSS; + exports.components = components; + exports.containerCSS = containerCSS; + exports.css = css$1; + exports.css$1 = css2; + exports.defaultComponents = defaultComponents; + exports.dropdownIndicatorCSS = dropdownIndicatorCSS; + exports.groupCSS = groupCSS; + exports.groupHeadingCSS = groupHeadingCSS; + exports.handleInputChange = handleInputChange; + exports.indicatorSeparatorCSS = indicatorSeparatorCSS; + exports.indicatorsContainerCSS = indicatorsContainerCSS; + exports.inputCSS = inputCSS; + exports.isDocumentElement = isDocumentElement; + exports.isMobileDevice = isMobileDevice; + exports.isTouchCapable = isTouchCapable; + exports.loadingIndicatorCSS = loadingIndicatorCSS; + exports.loadingMessageCSS = loadingMessageCSS; + exports.menuCSS = menuCSS; + exports.menuListCSS = menuListCSS; + exports.menuPortalCSS = menuPortalCSS; + exports.multiValueAsValue = multiValueAsValue; + exports.multiValueCSS = multiValueCSS; + exports.multiValueLabelCSS = multiValueLabelCSS; + exports.multiValueRemoveCSS = multiValueRemoveCSS; + exports.noOptionsMessageCSS = noOptionsMessageCSS; + exports.noop = noop2; + exports.notNullish = notNullish; + exports.optionCSS = optionCSS; + exports.placeholderCSS = placeholderCSS; + exports.removeProps = removeProps; + exports.scrollIntoView = scrollIntoView; + exports.singleValueAsValue = singleValueAsValue; + exports.supportsPassiveEvents = supportsPassiveEvents; + exports.valueContainerCSS = valueContainerCSS; + exports.valueTernary = valueTernary; + } +}); + +// node_modules/memoize-one/dist/memoize-one.cjs.js +var require_memoize_one_cjs = __commonJS({ + "node_modules/memoize-one/dist/memoize-one.cjs.js"(exports, module2) { + "use strict"; + var safeIsNaN = Number.isNaN || function ponyfill(value) { + return typeof value === "number" && value !== value; + }; + function isEqual(first, second) { + if (first === second) { + return true; + } + if (safeIsNaN(first) && safeIsNaN(second)) { + return true; + } + return false; + } + function areInputsEqual(newInputs, lastInputs) { + if (newInputs.length !== lastInputs.length) { + return false; + } + for (var i2 = 0; i2 < newInputs.length; i2++) { + if (!isEqual(newInputs[i2], lastInputs[i2])) { + return false; + } + } + return true; + } + function memoizeOne(resultFn, isEqual2) { + if (isEqual2 === void 0) { + isEqual2 = areInputsEqual; + } + var cache = null; + function memoized() { + var newArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + newArgs[_i] = arguments[_i]; + } + if (cache && cache.lastThis === this && isEqual2(newArgs, cache.lastArgs)) { + return cache.lastResult; + } + var lastResult = resultFn.apply(this, newArgs); + cache = { + lastResult, + lastArgs: newArgs, + lastThis: this + }; + return lastResult; + } + memoized.clear = function clear() { + cache = null; + }; + return memoized; + } + module2.exports = memoizeOne; + } +}); + +// node_modules/react-select/dist/Select-5041a4f3.cjs.dev.js +var require_Select_5041a4f3_cjs_dev = __commonJS({ + "node_modules/react-select/dist/Select-5041a4f3.cjs.dev.js"(exports) { + "use strict"; + var _extends2 = require_extends2(); + var _objectSpread = require_objectSpread2(); + var _classCallCheck = require_classCallCheck(); + var _createClass = require_createClass(); + var _inherits = require_inherits(); + var _createSuper = require_createSuper(); + var _toConsumableArray = require_toConsumableArray(); + var React49 = require_react(); + var index = require_index_2fe3dc33_cjs_dev(); + var react = require_emotion_react_cjs(); + var memoizeOne = require_memoize_one_cjs(); + var _objectWithoutProperties = require_objectWithoutProperties(); + function _interopDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _interopNamespace(e) { + if (e && e.__esModule) + return e; + var n2 = /* @__PURE__ */ Object.create(null); + if (e) { + Object.keys(e).forEach(function(k2) { + if (k2 !== "default") { + var d2 = Object.getOwnPropertyDescriptor(e, k2); + Object.defineProperty(n2, k2, d2.get ? d2 : { + enumerable: true, + get: function() { + return e[k2]; + } + }); + } + }); + } + n2["default"] = e; + return Object.freeze(n2); + } + var React__namespace = /* @__PURE__ */ _interopNamespace(React49); + var memoizeOne__default = /* @__PURE__ */ _interopDefault(memoizeOne); + function _EMOTION_STRINGIFIED_CSS_ERROR__$2() { + return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; + } + var _ref = false ? { + name: "7pg0cj-a11yText", + styles: "label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap" + } : { + name: "1f43avz-a11yText-A11yText", + styles: "label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNSSIsImZpbGUiOiJBMTF5VGV4dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuLy8gQXNzaXN0aXZlIHRleHQgdG8gZGVzY3JpYmUgdmlzdWFsIGVsZW1lbnRzLiBIaWRkZW4gZm9yIHNpZ2h0ZWQgdXNlcnMuXG5jb25zdCBBMTF5VGV4dCA9IChwcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ10pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2 + }; + var A11yText = function A11yText2(props) { + return react.jsx("span", _extends2({ + css: _ref + }, props)); + }; + var A11yText$1 = A11yText; + var defaultAriaLiveMessages = { + guidance: function guidance(props) { + var isSearchable = props.isSearchable, isMulti = props.isMulti, isDisabled = props.isDisabled, tabSelectsValue = props.tabSelectsValue, context = props.context; + switch (context) { + case "menu": + return "Use Up and Down to choose options".concat(isDisabled ? "" : ", press Enter to select the currently focused option", ", press Escape to exit the menu").concat(tabSelectsValue ? ", press Tab to select the option and exit the menu" : "", "."); + case "input": + return "".concat(props["aria-label"] || "Select", " is focused ").concat(isSearchable ? ",type to refine list" : "", ", press Down to open the menu, ").concat(isMulti ? " press left to focus selected values" : ""); + case "value": + return "Use left and right to toggle between focused values, press Backspace to remove the currently focused value"; + default: + return ""; + } + }, + onChange: function onChange(props) { + var action = props.action, _props$label = props.label, label = _props$label === void 0 ? "" : _props$label, labels = props.labels, isDisabled = props.isDisabled; + switch (action) { + case "deselect-option": + case "pop-value": + case "remove-value": + return "option ".concat(label, ", deselected."); + case "clear": + return "All selected options have been cleared."; + case "initial-input-focus": + return "option".concat(labels.length > 1 ? "s" : "", " ").concat(labels.join(","), ", selected."); + case "select-option": + return isDisabled ? "option ".concat(label, " is disabled. Select another option.") : "option ".concat(label, ", selected."); + default: + return ""; + } + }, + onFocus: function onFocus(props) { + var context = props.context, focused = props.focused, options = props.options, _props$label2 = props.label, label = _props$label2 === void 0 ? "" : _props$label2, selectValue = props.selectValue, isDisabled = props.isDisabled, isSelected = props.isSelected; + var getArrayIndex = function getArrayIndex2(arr, item) { + return arr && arr.length ? "".concat(arr.indexOf(item) + 1, " of ").concat(arr.length) : ""; + }; + if (context === "value" && selectValue) { + return "value ".concat(label, " focused, ").concat(getArrayIndex(selectValue, focused), "."); + } + if (context === "menu") { + var disabled = isDisabled ? " disabled" : ""; + var status = "".concat(isSelected ? "selected" : "focused").concat(disabled); + return "option ".concat(label, " ").concat(status, ", ").concat(getArrayIndex(options, focused), "."); + } + return ""; + }, + onFilter: function onFilter(props) { + var inputValue = props.inputValue, resultsMessage = props.resultsMessage; + return "".concat(resultsMessage).concat(inputValue ? " for search term " + inputValue : "", "."); + } + }; + var LiveRegion = function LiveRegion2(props) { + var ariaSelection = props.ariaSelection, focusedOption = props.focusedOption, focusedValue = props.focusedValue, focusableOptions = props.focusableOptions, isFocused = props.isFocused, selectValue = props.selectValue, selectProps = props.selectProps, id2 = props.id; + var ariaLiveMessages = selectProps.ariaLiveMessages, getOptionLabel2 = selectProps.getOptionLabel, inputValue = selectProps.inputValue, isMulti = selectProps.isMulti, isOptionDisabled2 = selectProps.isOptionDisabled, isSearchable = selectProps.isSearchable, menuIsOpen = selectProps.menuIsOpen, options = selectProps.options, screenReaderStatus = selectProps.screenReaderStatus, tabSelectsValue = selectProps.tabSelectsValue; + var ariaLabel = selectProps["aria-label"]; + var ariaLive = selectProps["aria-live"]; + var messages = React49.useMemo(function() { + return _objectSpread(_objectSpread({}, defaultAriaLiveMessages), ariaLiveMessages || {}); + }, [ariaLiveMessages]); + var ariaSelected = React49.useMemo(function() { + var message = ""; + if (ariaSelection && messages.onChange) { + var option = ariaSelection.option, selectedOptions = ariaSelection.options, removedValue = ariaSelection.removedValue, removedValues = ariaSelection.removedValues, value = ariaSelection.value; + var asOption = function asOption2(val) { + return !Array.isArray(val) ? val : null; + }; + var selected = removedValue || option || asOption(value); + var label = selected ? getOptionLabel2(selected) : ""; + var multiSelected = selectedOptions || removedValues || void 0; + var labels = multiSelected ? multiSelected.map(getOptionLabel2) : []; + var onChangeProps = _objectSpread({ + isDisabled: selected && isOptionDisabled2(selected, selectValue), + label, + labels + }, ariaSelection); + message = messages.onChange(onChangeProps); + } + return message; + }, [ariaSelection, messages, isOptionDisabled2, selectValue, getOptionLabel2]); + var ariaFocused = React49.useMemo(function() { + var focusMsg = ""; + var focused = focusedOption || focusedValue; + var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption)); + if (focused && messages.onFocus) { + var onFocusProps = { + focused, + label: getOptionLabel2(focused), + isDisabled: isOptionDisabled2(focused, selectValue), + isSelected, + options: focusableOptions, + context: focused === focusedOption ? "menu" : "value", + selectValue + }; + focusMsg = messages.onFocus(onFocusProps); + } + return focusMsg; + }, [focusedOption, focusedValue, getOptionLabel2, isOptionDisabled2, messages, focusableOptions, selectValue]); + var ariaResults = React49.useMemo(function() { + var resultsMsg = ""; + if (menuIsOpen && options.length && messages.onFilter) { + var resultsMessage = screenReaderStatus({ + count: focusableOptions.length + }); + resultsMsg = messages.onFilter({ + inputValue, + resultsMessage + }); + } + return resultsMsg; + }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus]); + var ariaGuidance = React49.useMemo(function() { + var guidanceMsg = ""; + if (messages.guidance) { + var context = focusedValue ? "value" : menuIsOpen ? "menu" : "input"; + guidanceMsg = messages.guidance({ + "aria-label": ariaLabel, + context, + isDisabled: focusedOption && isOptionDisabled2(focusedOption, selectValue), + isMulti, + isSearchable, + tabSelectsValue + }); + } + return guidanceMsg; + }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled2, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue]); + var ariaContext = "".concat(ariaFocused, " ").concat(ariaResults, " ").concat(ariaGuidance); + var ScreenReaderText = react.jsx(React49.Fragment, null, react.jsx("span", { + id: "aria-selection" + }, ariaSelected), react.jsx("span", { + id: "aria-context" + }, ariaContext)); + var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === "initial-input-focus"; + return react.jsx(React49.Fragment, null, react.jsx(A11yText$1, { + id: id2 + }, isInitialFocus && ScreenReaderText), react.jsx(A11yText$1, { + "aria-live": ariaLive, + "aria-atomic": "false", + "aria-relevant": "additions text" + }, isFocused && !isInitialFocus && ScreenReaderText)); + }; + var LiveRegion$1 = LiveRegion; + var diacritics = [{ + base: "A", + letters: "A\u24B6\uFF21\xC0\xC1\xC2\u1EA6\u1EA4\u1EAA\u1EA8\xC3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\xC4\u01DE\u1EA2\xC5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F" + }, { + base: "AA", + letters: "\uA732" + }, { + base: "AE", + letters: "\xC6\u01FC\u01E2" + }, { + base: "AO", + letters: "\uA734" + }, { + base: "AU", + letters: "\uA736" + }, { + base: "AV", + letters: "\uA738\uA73A" + }, { + base: "AY", + letters: "\uA73C" + }, { + base: "B", + letters: "B\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181" + }, { + base: "C", + letters: "C\u24B8\uFF23\u0106\u0108\u010A\u010C\xC7\u1E08\u0187\u023B\uA73E" + }, { + base: "D", + letters: "D\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779" + }, { + base: "DZ", + letters: "\u01F1\u01C4" + }, { + base: "Dz", + letters: "\u01F2\u01C5" + }, { + base: "E", + letters: "E\u24BA\uFF25\xC8\xC9\xCA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\xCB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E" + }, { + base: "F", + letters: "F\u24BB\uFF26\u1E1E\u0191\uA77B" + }, { + base: "G", + letters: "G\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E" + }, { + base: "H", + letters: "H\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D" + }, { + base: "I", + letters: "I\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197" + }, { + base: "J", + letters: "J\u24BF\uFF2A\u0134\u0248" + }, { + base: "K", + letters: "K\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2" + }, { + base: "L", + letters: "L\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780" + }, { + base: "LJ", + letters: "\u01C7" + }, { + base: "Lj", + letters: "\u01C8" + }, { + base: "M", + letters: "M\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C" + }, { + base: "N", + letters: "N\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4" + }, { + base: "NJ", + letters: "\u01CA" + }, { + base: "Nj", + letters: "\u01CB" + }, { + base: "O", + letters: "O\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C" + }, { + base: "OI", + letters: "\u01A2" + }, { + base: "OO", + letters: "\uA74E" + }, { + base: "OU", + letters: "\u0222" + }, { + base: "P", + letters: "P\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754" + }, { + base: "Q", + letters: "Q\u24C6\uFF31\uA756\uA758\u024A" + }, { + base: "R", + letters: "R\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782" + }, { + base: "S", + letters: "S\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784" + }, { + base: "T", + letters: "T\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786" + }, { + base: "TZ", + letters: "\uA728" + }, { + base: "U", + letters: "U\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244" + }, { + base: "V", + letters: "V\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245" + }, { + base: "VY", + letters: "\uA760" + }, { + base: "W", + letters: "W\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72" + }, { + base: "X", + letters: "X\u24CD\uFF38\u1E8A\u1E8C" + }, { + base: "Y", + letters: "Y\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE" + }, { + base: "Z", + letters: "Z\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762" + }, { + base: "a", + letters: "a\u24D0\uFF41\u1E9A\xE0\xE1\xE2\u1EA7\u1EA5\u1EAB\u1EA9\xE3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\xE4\u01DF\u1EA3\xE5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250" + }, { + base: "aa", + letters: "\uA733" + }, { + base: "ae", + letters: "\xE6\u01FD\u01E3" + }, { + base: "ao", + letters: "\uA735" + }, { + base: "au", + letters: "\uA737" + }, { + base: "av", + letters: "\uA739\uA73B" + }, { + base: "ay", + letters: "\uA73D" + }, { + base: "b", + letters: "b\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253" + }, { + base: "c", + letters: "c\u24D2\uFF43\u0107\u0109\u010B\u010D\xE7\u1E09\u0188\u023C\uA73F\u2184" + }, { + base: "d", + letters: "d\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A" + }, { + base: "dz", + letters: "\u01F3\u01C6" + }, { + base: "e", + letters: "e\u24D4\uFF45\xE8\xE9\xEA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\xEB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD" + }, { + base: "f", + letters: "f\u24D5\uFF46\u1E1F\u0192\uA77C" + }, { + base: "g", + letters: "g\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F" + }, { + base: "h", + letters: "h\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265" + }, { + base: "hv", + letters: "\u0195" + }, { + base: "i", + letters: "i\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131" + }, { + base: "j", + letters: "j\u24D9\uFF4A\u0135\u01F0\u0249" + }, { + base: "k", + letters: "k\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3" + }, { + base: "l", + letters: "l\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747" + }, { + base: "lj", + letters: "\u01C9" + }, { + base: "m", + letters: "m\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F" + }, { + base: "n", + letters: "n\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5" + }, { + base: "nj", + letters: "\u01CC" + }, { + base: "o", + letters: "o\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\u0254\uA74B\uA74D\u0275" + }, { + base: "oi", + letters: "\u01A3" + }, { + base: "ou", + letters: "\u0223" + }, { + base: "oo", + letters: "\uA74F" + }, { + base: "p", + letters: "p\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755" + }, { + base: "q", + letters: "q\u24E0\uFF51\u024B\uA757\uA759" + }, { + base: "r", + letters: "r\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783" + }, { + base: "s", + letters: "s\u24E2\uFF53\xDF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B" + }, { + base: "t", + letters: "t\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787" + }, { + base: "tz", + letters: "\uA729" + }, { + base: "u", + letters: "u\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289" + }, { + base: "v", + letters: "v\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C" + }, { + base: "vy", + letters: "\uA761" + }, { + base: "w", + letters: "w\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73" + }, { + base: "x", + letters: "x\u24E7\uFF58\u1E8B\u1E8D" + }, { + base: "y", + letters: "y\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF" + }, { + base: "z", + letters: "z\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763" + }]; + var anyDiacritic = new RegExp("[" + diacritics.map(function(d2) { + return d2.letters; + }).join("") + "]", "g"); + var diacriticToBase = {}; + for (i2 = 0; i2 < diacritics.length; i2++) { + diacritic = diacritics[i2]; + for (j2 = 0; j2 < diacritic.letters.length; j2++) { + diacriticToBase[diacritic.letters[j2]] = diacritic.base; + } + } + var diacritic; + var j2; + var i2; + var stripDiacritics = function stripDiacritics2(str) { + return str.replace(anyDiacritic, function(match) { + return diacriticToBase[match]; + }); + }; + var memoizedStripDiacriticsForInput = memoizeOne__default["default"](stripDiacritics); + var trimString = function trimString2(str) { + return str.replace(/^\s+|\s+$/g, ""); + }; + var defaultStringify = function defaultStringify2(option) { + return "".concat(option.label, " ").concat(option.value); + }; + var createFilter = function createFilter2(config) { + return function(option, rawInput) { + if (option.data.__isNew__) + return true; + var _ignoreCase$ignoreAcc = _objectSpread({ + ignoreCase: true, + ignoreAccents: true, + stringify: defaultStringify, + trim: true, + matchFrom: "any" + }, config), ignoreCase = _ignoreCase$ignoreAcc.ignoreCase, ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents, stringify2 = _ignoreCase$ignoreAcc.stringify, trim = _ignoreCase$ignoreAcc.trim, matchFrom = _ignoreCase$ignoreAcc.matchFrom; + var input = trim ? trimString(rawInput) : rawInput; + var candidate = trim ? trimString(stringify2(option)) : stringify2(option); + if (ignoreCase) { + input = input.toLowerCase(); + candidate = candidate.toLowerCase(); + } + if (ignoreAccents) { + input = memoizedStripDiacriticsForInput(input); + candidate = stripDiacritics(candidate); + } + return matchFrom === "start" ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1; + }; + }; + var _excluded = ["innerRef"]; + function DummyInput(_ref3) { + var innerRef = _ref3.innerRef, props = _objectWithoutProperties(_ref3, _excluded); + var filteredProps = index.removeProps(props, "onExited", "in", "enter", "exit", "appear"); + return react.jsx("input", _extends2({ + ref: innerRef + }, filteredProps, { + css: /* @__PURE__ */ react.css({ + label: "dummyInput", + background: 0, + border: 0, + caretColor: "transparent", + fontSize: "inherit", + gridArea: "1 / 1 / 2 / 3", + outline: 0, + padding: 0, + width: 1, + color: "transparent", + left: -100, + opacity: 0, + position: "relative", + transform: "scale(.01)" + }, false ? "" : ";label:DummyInput;", false ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCTSIsImZpbGUiOiJEdW1teUlucHV0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgcmVtb3ZlUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIER1bW15SW5wdXQoe1xuICBpbm5lclJlZixcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snaW5wdXQnXSAmIHtcbiAgcmVhZG9ubHkgaW5uZXJSZWY6IFJlZjxIVE1MSW5wdXRFbGVtZW50Pjtcbn0pIHtcbiAgLy8gUmVtb3ZlIGFuaW1hdGlvbiBwcm9wcyBub3QgbWVhbnQgZm9yIEhUTUwgZWxlbWVudHNcbiAgY29uc3QgZmlsdGVyZWRQcm9wcyA9IHJlbW92ZVByb3BzKFxuICAgIHByb3BzLFxuICAgICdvbkV4aXRlZCcsXG4gICAgJ2luJyxcbiAgICAnZW50ZXInLFxuICAgICdleGl0JyxcbiAgICAnYXBwZWFyJ1xuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgey4uLmZpbHRlcmVkUHJvcHN9XG4gICAgICBjc3M9e3tcbiAgICAgICAgbGFiZWw6ICdkdW1teUlucHV0JyxcbiAgICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgICAgYmFja2dyb3VuZDogMCxcbiAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHRoaXMgaGlkZXMgdGhlIGZsYXNoaW5nIGN1cnNvclxuICAgICAgICBjYXJldENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgICAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgICAgICBvdXRsaW5lOiAwLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgICB3aWR0aDogMSxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIGRlc2t0b3BcbiAgICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG5cbiAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBtb2JpbGUgd2hpbHN0IG1haW50YWluaW5nIFwic2Nyb2xsIGludG8gdmlld1wiIGJlaGF2aW91clxuICAgICAgICBsZWZ0OiAtMTAwLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoLjAxKScsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG4iXX0= */") + })); + } + var cancelScroll = function cancelScroll2(event) { + event.preventDefault(); + event.stopPropagation(); + }; + function useScrollCapture(_ref3) { + var isEnabled = _ref3.isEnabled, onBottomArrive = _ref3.onBottomArrive, onBottomLeave = _ref3.onBottomLeave, onTopArrive = _ref3.onTopArrive, onTopLeave = _ref3.onTopLeave; + var isBottom = React49.useRef(false); + var isTop = React49.useRef(false); + var touchStart = React49.useRef(0); + var scrollTarget = React49.useRef(null); + var handleEventDelta = React49.useCallback(function(event, delta) { + if (scrollTarget.current === null) + return; + var _scrollTarget$current = scrollTarget.current, scrollTop = _scrollTarget$current.scrollTop, scrollHeight = _scrollTarget$current.scrollHeight, clientHeight = _scrollTarget$current.clientHeight; + var target = scrollTarget.current; + var isDeltaPositive = delta > 0; + var availableScroll = scrollHeight - clientHeight - scrollTop; + var shouldCancelScroll = false; + if (availableScroll > delta && isBottom.current) { + if (onBottomLeave) + onBottomLeave(event); + isBottom.current = false; + } + if (isDeltaPositive && isTop.current) { + if (onTopLeave) + onTopLeave(event); + isTop.current = false; + } + if (isDeltaPositive && delta > availableScroll) { + if (onBottomArrive && !isBottom.current) { + onBottomArrive(event); + } + target.scrollTop = scrollHeight; + shouldCancelScroll = true; + isBottom.current = true; + } else if (!isDeltaPositive && -delta > scrollTop) { + if (onTopArrive && !isTop.current) { + onTopArrive(event); + } + target.scrollTop = 0; + shouldCancelScroll = true; + isTop.current = true; + } + if (shouldCancelScroll) { + cancelScroll(event); + } + }, [onBottomArrive, onBottomLeave, onTopArrive, onTopLeave]); + var onWheel = React49.useCallback(function(event) { + handleEventDelta(event, event.deltaY); + }, [handleEventDelta]); + var onTouchStart = React49.useCallback(function(event) { + touchStart.current = event.changedTouches[0].clientY; + }, []); + var onTouchMove = React49.useCallback(function(event) { + var deltaY = touchStart.current - event.changedTouches[0].clientY; + handleEventDelta(event, deltaY); + }, [handleEventDelta]); + var startListening = React49.useCallback(function(el) { + if (!el) + return; + var notPassive = index.supportsPassiveEvents ? { + passive: false + } : false; + el.addEventListener("wheel", onWheel, notPassive); + el.addEventListener("touchstart", onTouchStart, notPassive); + el.addEventListener("touchmove", onTouchMove, notPassive); + }, [onTouchMove, onTouchStart, onWheel]); + var stopListening = React49.useCallback(function(el) { + if (!el) + return; + el.removeEventListener("wheel", onWheel, false); + el.removeEventListener("touchstart", onTouchStart, false); + el.removeEventListener("touchmove", onTouchMove, false); + }, [onTouchMove, onTouchStart, onWheel]); + React49.useEffect(function() { + if (!isEnabled) + return; + var element = scrollTarget.current; + startListening(element); + return function() { + stopListening(element); + }; + }, [isEnabled, startListening, stopListening]); + return function(element) { + scrollTarget.current = element; + }; + } + var STYLE_KEYS = ["boxSizing", "height", "overflow", "paddingRight", "position"]; + var LOCK_STYLES = { + boxSizing: "border-box", + overflow: "hidden", + position: "relative", + height: "100%" + }; + function preventTouchMove(e) { + e.preventDefault(); + } + function allowTouchMove(e) { + e.stopPropagation(); + } + function preventInertiaScroll() { + var top = this.scrollTop; + var totalScroll = this.scrollHeight; + var currentScroll = top + this.offsetHeight; + if (top === 0) { + this.scrollTop = 1; + } else if (currentScroll === totalScroll) { + this.scrollTop = top - 1; + } + } + function isTouchDevice() { + return "ontouchstart" in window || navigator.maxTouchPoints; + } + var canUseDOM2 = !!(typeof window !== "undefined" && window.document && window.document.createElement); + var activeScrollLocks = 0; + var listenerOptions = { + capture: false, + passive: false + }; + function useScrollLock(_ref3) { + var isEnabled = _ref3.isEnabled, _ref$accountForScroll = _ref3.accountForScrollbars, accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll; + var originalStyles = React49.useRef({}); + var scrollTarget = React49.useRef(null); + var addScrollLock = React49.useCallback(function(touchScrollTarget) { + if (!canUseDOM2) + return; + var target = document.body; + var targetStyle = target && target.style; + if (accountForScrollbars) { + STYLE_KEYS.forEach(function(key) { + var val = targetStyle && targetStyle[key]; + originalStyles.current[key] = val; + }); + } + if (accountForScrollbars && activeScrollLocks < 1) { + var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0; + var clientWidth = document.body ? document.body.clientWidth : 0; + var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0; + Object.keys(LOCK_STYLES).forEach(function(key) { + var val = LOCK_STYLES[key]; + if (targetStyle) { + targetStyle[key] = val; + } + }); + if (targetStyle) { + targetStyle.paddingRight = "".concat(adjustedPadding, "px"); + } + } + if (target && isTouchDevice()) { + target.addEventListener("touchmove", preventTouchMove, listenerOptions); + if (touchScrollTarget) { + touchScrollTarget.addEventListener("touchstart", preventInertiaScroll, listenerOptions); + touchScrollTarget.addEventListener("touchmove", allowTouchMove, listenerOptions); + } + } + activeScrollLocks += 1; + }, [accountForScrollbars]); + var removeScrollLock = React49.useCallback(function(touchScrollTarget) { + if (!canUseDOM2) + return; + var target = document.body; + var targetStyle = target && target.style; + activeScrollLocks = Math.max(activeScrollLocks - 1, 0); + if (accountForScrollbars && activeScrollLocks < 1) { + STYLE_KEYS.forEach(function(key) { + var val = originalStyles.current[key]; + if (targetStyle) { + targetStyle[key] = val; + } + }); + } + if (target && isTouchDevice()) { + target.removeEventListener("touchmove", preventTouchMove, listenerOptions); + if (touchScrollTarget) { + touchScrollTarget.removeEventListener("touchstart", preventInertiaScroll, listenerOptions); + touchScrollTarget.removeEventListener("touchmove", allowTouchMove, listenerOptions); + } + } + }, [accountForScrollbars]); + React49.useEffect(function() { + if (!isEnabled) + return; + var element = scrollTarget.current; + addScrollLock(element); + return function() { + removeScrollLock(element); + }; + }, [isEnabled, addScrollLock, removeScrollLock]); + return function(element) { + scrollTarget.current = element; + }; + } + function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { + return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; + } + var blurSelectInput = function blurSelectInput2() { + return document.activeElement && document.activeElement.blur(); + }; + var _ref2$1 = false ? { + name: "1kfdb0e", + styles: "position:fixed;left:0;bottom:0;right:0;top:0" + } : { + name: "bp8cua-ScrollManager", + styles: "position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDVSIsImZpbGUiOiJTY3JvbGxNYW5hZ2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgRnJhZ21lbnQsIFJlYWN0RWxlbWVudCwgUmVmQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlU2Nyb2xsQ2FwdHVyZSBmcm9tICcuL3VzZVNjcm9sbENhcHR1cmUnO1xuaW1wb3J0IHVzZVNjcm9sbExvY2sgZnJvbSAnLi91c2VTY3JvbGxMb2NrJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IChyZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PikgPT4gUmVhY3RFbGVtZW50O1xuICByZWFkb25seSBsb2NrRW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Cb3R0b21MZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG9uVG9wQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Ub3BMZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IGJsdXJTZWxlY3RJbnB1dCA9ICgpID0+XG4gIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcih7XG4gIGNoaWxkcmVuLFxuICBsb2NrRW5hYmxlZCxcbiAgY2FwdHVyZUVuYWJsZWQgPSB0cnVlLFxuICBvbkJvdHRvbUFycml2ZSxcbiAgb25Cb3R0b21MZWF2ZSxcbiAgb25Ub3BBcnJpdmUsXG4gIG9uVG9wTGVhdmUsXG59OiBQcm9wcykge1xuICBjb25zdCBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUsXG4gIH0pO1xuICBjb25zdCBzZXRTY3JvbGxMb2NrVGFyZ2V0ID0gdXNlU2Nyb2xsTG9jayh7IGlzRW5hYmxlZDogbG9ja0VuYWJsZWQgfSk7XG5cbiAgY29uc3QgdGFyZ2V0UmVmOiBSZWZDYWxsYmFjazxIVE1MRWxlbWVudD4gPSAoZWxlbWVudCkgPT4ge1xuICAgIHNldFNjcm9sbENhcHR1cmVUYXJnZXQoZWxlbWVudCk7XG4gICAgc2V0U2Nyb2xsTG9ja1RhcmdldChlbGVtZW50KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIHtsb2NrRW5hYmxlZCAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXtibHVyU2VsZWN0SW5wdXR9XG4gICAgICAgICAgY3NzPXt7IHBvc2l0aW9uOiAnZml4ZWQnLCBsZWZ0OiAwLCBib3R0b206IDAsIHJpZ2h0OiAwLCB0b3A6IDAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7Y2hpbGRyZW4odGFyZ2V0UmVmKX1cbiAgICA8L0ZyYWdtZW50PlxuICApO1xufVxuIl19 */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1 + }; + function ScrollManager(_ref3) { + var children = _ref3.children, lockEnabled = _ref3.lockEnabled, _ref$captureEnabled = _ref3.captureEnabled, captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled, onBottomArrive = _ref3.onBottomArrive, onBottomLeave = _ref3.onBottomLeave, onTopArrive = _ref3.onTopArrive, onTopLeave = _ref3.onTopLeave; + var setScrollCaptureTarget = useScrollCapture({ + isEnabled: captureEnabled, + onBottomArrive, + onBottomLeave, + onTopArrive, + onTopLeave + }); + var setScrollLockTarget = useScrollLock({ + isEnabled: lockEnabled + }); + var targetRef = function targetRef2(element) { + setScrollCaptureTarget(element); + setScrollLockTarget(element); + }; + return react.jsx(React49.Fragment, null, lockEnabled && react.jsx("div", { + onClick: blurSelectInput, + css: _ref2$1 + }), children(targetRef)); + } + function _EMOTION_STRINGIFIED_CSS_ERROR__() { + return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; + } + var _ref2 = false ? { + name: "1a0ro4n-requiredInput", + styles: "label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%" + } : { + name: "5kkxb2-requiredInput-RequiredInput", + styles: "label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%;label:RequiredInput;", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJlcXVpcmVkSW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNJIiwiZmlsZSI6IlJlcXVpcmVkSW5wdXQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBGb2N1c0V2ZW50SGFuZGxlciwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmNvbnN0IFJlcXVpcmVkSW5wdXQ6IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgb25Gb2N1czogRm9jdXNFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD47XG59PiA9ICh7IG5hbWUsIG9uRm9jdXMgfSkgPT4gKFxuICA8aW5wdXRcbiAgICByZXF1aXJlZFxuICAgIG5hbWU9e25hbWV9XG4gICAgdGFiSW5kZXg9ey0xfVxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAncmVxdWlyZWRJbnB1dCcsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH19XG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgdmFsdWU9XCJcIlxuICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cbiAgLz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFJlcXVpcmVkSW5wdXQ7XG4iXX0= */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__ + }; + var RequiredInput = function RequiredInput2(_ref3) { + var name = _ref3.name, onFocus = _ref3.onFocus; + return react.jsx("input", { + required: true, + name, + tabIndex: -1, + "aria-hidden": "true", + onFocus, + css: _ref2, + value: "", + onChange: function onChange() { + } + }); + }; + var RequiredInput$1 = RequiredInput; + var formatGroupLabel = function formatGroupLabel2(group) { + return group.label; + }; + var getOptionLabel$1 = function getOptionLabel2(option) { + return option.label; + }; + var getOptionValue$1 = function getOptionValue2(option) { + return option.value; + }; + var isOptionDisabled = function isOptionDisabled2(option) { + return !!option.isDisabled; + }; + var defaultStyles = { + clearIndicator: index.clearIndicatorCSS, + container: index.containerCSS, + control: index.css, + dropdownIndicator: index.dropdownIndicatorCSS, + group: index.groupCSS, + groupHeading: index.groupHeadingCSS, + indicatorsContainer: index.indicatorsContainerCSS, + indicatorSeparator: index.indicatorSeparatorCSS, + input: index.inputCSS, + loadingIndicator: index.loadingIndicatorCSS, + loadingMessage: index.loadingMessageCSS, + menu: index.menuCSS, + menuList: index.menuListCSS, + menuPortal: index.menuPortalCSS, + multiValue: index.multiValueCSS, + multiValueLabel: index.multiValueLabelCSS, + multiValueRemove: index.multiValueRemoveCSS, + noOptionsMessage: index.noOptionsMessageCSS, + option: index.optionCSS, + placeholder: index.placeholderCSS, + singleValue: index.css$1, + valueContainer: index.valueContainerCSS + }; + function mergeStyles(source) { + var target = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + var styles = _objectSpread({}, source); + Object.keys(target).forEach(function(keyAsString) { + var key = keyAsString; + if (source[key]) { + styles[key] = function(rsCss, props) { + return target[key](source[key](rsCss, props), props); + }; + } else { + styles[key] = target[key]; + } + }); + return styles; + } + var colors = { + primary: "#2684FF", + primary75: "#4C9AFF", + primary50: "#B2D4FF", + primary25: "#DEEBFF", + danger: "#DE350B", + dangerLight: "#FFBDAD", + neutral0: "hsl(0, 0%, 100%)", + neutral5: "hsl(0, 0%, 95%)", + neutral10: "hsl(0, 0%, 90%)", + neutral20: "hsl(0, 0%, 80%)", + neutral30: "hsl(0, 0%, 70%)", + neutral40: "hsl(0, 0%, 60%)", + neutral50: "hsl(0, 0%, 50%)", + neutral60: "hsl(0, 0%, 40%)", + neutral70: "hsl(0, 0%, 30%)", + neutral80: "hsl(0, 0%, 20%)", + neutral90: "hsl(0, 0%, 10%)" + }; + var borderRadius = 4; + var baseUnit = 4; + var controlHeight = 38; + var menuGutter = baseUnit * 2; + var spacing = { + baseUnit, + controlHeight, + menuGutter + }; + var defaultTheme = { + borderRadius, + colors, + spacing + }; + var defaultProps = { + "aria-live": "polite", + backspaceRemovesValue: true, + blurInputOnSelect: index.isTouchCapable(), + captureMenuScroll: !index.isTouchCapable(), + classNames: {}, + closeMenuOnSelect: true, + closeMenuOnScroll: false, + components: {}, + controlShouldRenderValue: true, + escapeClearsValue: false, + filterOption: createFilter(), + formatGroupLabel, + getOptionLabel: getOptionLabel$1, + getOptionValue: getOptionValue$1, + isDisabled: false, + isLoading: false, + isMulti: false, + isRtl: false, + isSearchable: true, + isOptionDisabled, + loadingMessage: function loadingMessage() { + return "Loading..."; + }, + maxMenuHeight: 300, + minMenuHeight: 140, + menuIsOpen: false, + menuPlacement: "bottom", + menuPosition: "absolute", + menuShouldBlockScroll: false, + menuShouldScrollIntoView: !index.isMobileDevice(), + noOptionsMessage: function noOptionsMessage() { + return "No options"; + }, + openMenuOnFocus: false, + openMenuOnClick: true, + options: [], + pageSize: 5, + placeholder: "Select...", + screenReaderStatus: function screenReaderStatus(_ref3) { + var count = _ref3.count; + return "".concat(count, " result").concat(count !== 1 ? "s" : "", " available"); + }, + styles: {}, + tabIndex: 0, + tabSelectsValue: true, + unstyled: false + }; + function toCategorizedOption(props, option, selectValue, index2) { + var isDisabled = _isOptionDisabled(props, option, selectValue); + var isSelected = _isOptionSelected(props, option, selectValue); + var label = getOptionLabel(props, option); + var value = getOptionValue(props, option); + return { + type: "option", + data: option, + isDisabled, + isSelected, + label, + value, + index: index2 + }; + } + function buildCategorizedOptions(props, selectValue) { + return props.options.map(function(groupOrOption, groupOrOptionIndex) { + if ("options" in groupOrOption) { + var categorizedOptions = groupOrOption.options.map(function(option, optionIndex) { + return toCategorizedOption(props, option, selectValue, optionIndex); + }).filter(function(categorizedOption2) { + return isFocusable(props, categorizedOption2); + }); + return categorizedOptions.length > 0 ? { + type: "group", + data: groupOrOption, + options: categorizedOptions, + index: groupOrOptionIndex + } : void 0; + } + var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex); + return isFocusable(props, categorizedOption) ? categorizedOption : void 0; + }).filter(index.notNullish); + } + function buildFocusableOptionsFromCategorizedOptions(categorizedOptions) { + return categorizedOptions.reduce(function(optionsAccumulator, categorizedOption) { + if (categorizedOption.type === "group") { + optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function(option) { + return option.data; + }))); + } else { + optionsAccumulator.push(categorizedOption.data); + } + return optionsAccumulator; + }, []); + } + function buildFocusableOptions(props, selectValue) { + return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue)); + } + function isFocusable(props, categorizedOption) { + var _props$inputValue = props.inputValue, inputValue = _props$inputValue === void 0 ? "" : _props$inputValue; + var data = categorizedOption.data, isSelected = categorizedOption.isSelected, label = categorizedOption.label, value = categorizedOption.value; + return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, { + label, + value, + data + }, inputValue); + } + function getNextFocusedValue(state, nextSelectValue) { + var focusedValue = state.focusedValue, lastSelectValue = state.selectValue; + var lastFocusedIndex = lastSelectValue.indexOf(focusedValue); + if (lastFocusedIndex > -1) { + var nextFocusedIndex = nextSelectValue.indexOf(focusedValue); + if (nextFocusedIndex > -1) { + return focusedValue; + } else if (lastFocusedIndex < nextSelectValue.length) { + return nextSelectValue[lastFocusedIndex]; + } + } + return null; + } + function getNextFocusedOption(state, options) { + var lastFocusedOption = state.focusedOption; + return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0]; + } + var getOptionLabel = function getOptionLabel2(props, data) { + return props.getOptionLabel(data); + }; + var getOptionValue = function getOptionValue2(props, data) { + return props.getOptionValue(data); + }; + function _isOptionDisabled(props, option, selectValue) { + return typeof props.isOptionDisabled === "function" ? props.isOptionDisabled(option, selectValue) : false; + } + function _isOptionSelected(props, option, selectValue) { + if (selectValue.indexOf(option) > -1) + return true; + if (typeof props.isOptionSelected === "function") { + return props.isOptionSelected(option, selectValue); + } + var candidate = getOptionValue(props, option); + return selectValue.some(function(i3) { + return getOptionValue(props, i3) === candidate; + }); + } + function _filterOption(props, option, inputValue) { + return props.filterOption ? props.filterOption(option, inputValue) : true; + } + var shouldHideSelectedOptions = function shouldHideSelectedOptions2(props) { + var hideSelectedOptions = props.hideSelectedOptions, isMulti = props.isMulti; + if (hideSelectedOptions === void 0) + return isMulti; + return hideSelectedOptions; + }; + var instanceId = 1; + var Select = /* @__PURE__ */ function(_Component) { + _inherits(Select2, _Component); + var _super = _createSuper(Select2); + function Select2(_props) { + var _this; + _classCallCheck(this, Select2); + _this = _super.call(this, _props); + _this.state = { + ariaSelection: null, + focusedOption: null, + focusedValue: null, + inputIsHidden: false, + isFocused: false, + selectValue: [], + clearFocusValueOnUpdate: false, + prevWasFocused: false, + inputIsHiddenAfterUpdate: void 0, + prevProps: void 0 + }; + _this.blockOptionHover = false; + _this.isComposing = false; + _this.commonProps = void 0; + _this.initialTouchX = 0; + _this.initialTouchY = 0; + _this.instancePrefix = ""; + _this.openAfterFocus = false; + _this.scrollToFocusedOptionOnUpdate = false; + _this.userIsDragging = void 0; + _this.controlRef = null; + _this.getControlRef = function(ref) { + _this.controlRef = ref; + }; + _this.focusedOptionRef = null; + _this.getFocusedOptionRef = function(ref) { + _this.focusedOptionRef = ref; + }; + _this.menuListRef = null; + _this.getMenuListRef = function(ref) { + _this.menuListRef = ref; + }; + _this.inputRef = null; + _this.getInputRef = function(ref) { + _this.inputRef = ref; + }; + _this.focus = _this.focusInput; + _this.blur = _this.blurInput; + _this.onChange = function(newValue, actionMeta) { + var _this$props = _this.props, onChange = _this$props.onChange, name = _this$props.name; + actionMeta.name = name; + _this.ariaOnChange(newValue, actionMeta); + onChange(newValue, actionMeta); + }; + _this.setValue = function(newValue, action, option) { + var _this$props2 = _this.props, closeMenuOnSelect = _this$props2.closeMenuOnSelect, isMulti = _this$props2.isMulti, inputValue = _this$props2.inputValue; + _this.onInputChange("", { + action: "set-value", + prevInputValue: inputValue + }); + if (closeMenuOnSelect) { + _this.setState({ + inputIsHiddenAfterUpdate: !isMulti + }); + _this.onMenuClose(); + } + _this.setState({ + clearFocusValueOnUpdate: true + }); + _this.onChange(newValue, { + action, + option + }); + }; + _this.selectOption = function(newValue) { + var _this$props3 = _this.props, blurInputOnSelect = _this$props3.blurInputOnSelect, isMulti = _this$props3.isMulti, name = _this$props3.name; + var selectValue = _this.state.selectValue; + var deselected = isMulti && _this.isOptionSelected(newValue, selectValue); + var isDisabled = _this.isOptionDisabled(newValue, selectValue); + if (deselected) { + var candidate = _this.getOptionValue(newValue); + _this.setValue(index.multiValueAsValue(selectValue.filter(function(i3) { + return _this.getOptionValue(i3) !== candidate; + })), "deselect-option", newValue); + } else if (!isDisabled) { + if (isMulti) { + _this.setValue(index.multiValueAsValue([].concat(_toConsumableArray(selectValue), [newValue])), "select-option", newValue); + } else { + _this.setValue(index.singleValueAsValue(newValue), "select-option"); + } + } else { + _this.ariaOnChange(index.singleValueAsValue(newValue), { + action: "select-option", + option: newValue, + name + }); + return; + } + if (blurInputOnSelect) { + _this.blurInput(); + } + }; + _this.removeValue = function(removedValue) { + var isMulti = _this.props.isMulti; + var selectValue = _this.state.selectValue; + var candidate = _this.getOptionValue(removedValue); + var newValueArray = selectValue.filter(function(i3) { + return _this.getOptionValue(i3) !== candidate; + }); + var newValue = index.valueTernary(isMulti, newValueArray, newValueArray[0] || null); + _this.onChange(newValue, { + action: "remove-value", + removedValue + }); + _this.focusInput(); + }; + _this.clearValue = function() { + var selectValue = _this.state.selectValue; + _this.onChange(index.valueTernary(_this.props.isMulti, [], null), { + action: "clear", + removedValues: selectValue + }); + }; + _this.popValue = function() { + var isMulti = _this.props.isMulti; + var selectValue = _this.state.selectValue; + var lastSelectedValue = selectValue[selectValue.length - 1]; + var newValueArray = selectValue.slice(0, selectValue.length - 1); + var newValue = index.valueTernary(isMulti, newValueArray, newValueArray[0] || null); + _this.onChange(newValue, { + action: "pop-value", + removedValue: lastSelectedValue + }); + }; + _this.getValue = function() { + return _this.state.selectValue; + }; + _this.cx = function() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return index.classNames.apply(void 0, [_this.props.classNamePrefix].concat(args)); + }; + _this.getOptionLabel = function(data) { + return getOptionLabel(_this.props, data); + }; + _this.getOptionValue = function(data) { + return getOptionValue(_this.props, data); + }; + _this.getStyles = function(key, props) { + var unstyled = _this.props.unstyled; + var base = defaultStyles[key](props, unstyled); + base.boxSizing = "border-box"; + var custom = _this.props.styles[key]; + return custom ? custom(base, props) : base; + }; + _this.getClassNames = function(key, props) { + var _this$props$className, _this$props$className2; + return (_this$props$className = (_this$props$className2 = _this.props.classNames)[key]) === null || _this$props$className === void 0 ? void 0 : _this$props$className.call(_this$props$className2, props); + }; + _this.getElementId = function(element) { + return "".concat(_this.instancePrefix, "-").concat(element); + }; + _this.getComponents = function() { + return index.defaultComponents(_this.props); + }; + _this.buildCategorizedOptions = function() { + return buildCategorizedOptions(_this.props, _this.state.selectValue); + }; + _this.getCategorizedOptions = function() { + return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : []; + }; + _this.buildFocusableOptions = function() { + return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions()); + }; + _this.getFocusableOptions = function() { + return _this.props.menuIsOpen ? _this.buildFocusableOptions() : []; + }; + _this.ariaOnChange = function(value, actionMeta) { + _this.setState({ + ariaSelection: _objectSpread({ + value + }, actionMeta) + }); + }; + _this.onMenuMouseDown = function(event) { + if (event.button !== 0) { + return; + } + event.stopPropagation(); + event.preventDefault(); + _this.focusInput(); + }; + _this.onMenuMouseMove = function(event) { + _this.blockOptionHover = false; + }; + _this.onControlMouseDown = function(event) { + if (event.defaultPrevented) { + return; + } + var openMenuOnClick = _this.props.openMenuOnClick; + if (!_this.state.isFocused) { + if (openMenuOnClick) { + _this.openAfterFocus = true; + } + _this.focusInput(); + } else if (!_this.props.menuIsOpen) { + if (openMenuOnClick) { + _this.openMenu("first"); + } + } else { + if (event.target.tagName !== "INPUT" && event.target.tagName !== "TEXTAREA") { + _this.onMenuClose(); + } + } + if (event.target.tagName !== "INPUT" && event.target.tagName !== "TEXTAREA") { + event.preventDefault(); + } + }; + _this.onDropdownIndicatorMouseDown = function(event) { + if (event && event.type === "mousedown" && event.button !== 0) { + return; + } + if (_this.props.isDisabled) + return; + var _this$props4 = _this.props, isMulti = _this$props4.isMulti, menuIsOpen = _this$props4.menuIsOpen; + _this.focusInput(); + if (menuIsOpen) { + _this.setState({ + inputIsHiddenAfterUpdate: !isMulti + }); + _this.onMenuClose(); + } else { + _this.openMenu("first"); + } + event.preventDefault(); + }; + _this.onClearIndicatorMouseDown = function(event) { + if (event && event.type === "mousedown" && event.button !== 0) { + return; + } + _this.clearValue(); + event.preventDefault(); + _this.openAfterFocus = false; + if (event.type === "touchend") { + _this.focusInput(); + } else { + setTimeout(function() { + return _this.focusInput(); + }); + } + }; + _this.onScroll = function(event) { + if (typeof _this.props.closeMenuOnScroll === "boolean") { + if (event.target instanceof HTMLElement && index.isDocumentElement(event.target)) { + _this.props.onMenuClose(); + } + } else if (typeof _this.props.closeMenuOnScroll === "function") { + if (_this.props.closeMenuOnScroll(event)) { + _this.props.onMenuClose(); + } + } + }; + _this.onCompositionStart = function() { + _this.isComposing = true; + }; + _this.onCompositionEnd = function() { + _this.isComposing = false; + }; + _this.onTouchStart = function(_ref22) { + var touches = _ref22.touches; + var touch = touches && touches.item(0); + if (!touch) { + return; + } + _this.initialTouchX = touch.clientX; + _this.initialTouchY = touch.clientY; + _this.userIsDragging = false; + }; + _this.onTouchMove = function(_ref3) { + var touches = _ref3.touches; + var touch = touches && touches.item(0); + if (!touch) { + return; + } + var deltaX = Math.abs(touch.clientX - _this.initialTouchX); + var deltaY = Math.abs(touch.clientY - _this.initialTouchY); + var moveThreshold = 5; + _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold; + }; + _this.onTouchEnd = function(event) { + if (_this.userIsDragging) + return; + if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) { + _this.blurInput(); + } + _this.initialTouchX = 0; + _this.initialTouchY = 0; + }; + _this.onControlTouchEnd = function(event) { + if (_this.userIsDragging) + return; + _this.onControlMouseDown(event); + }; + _this.onClearIndicatorTouchEnd = function(event) { + if (_this.userIsDragging) + return; + _this.onClearIndicatorMouseDown(event); + }; + _this.onDropdownIndicatorTouchEnd = function(event) { + if (_this.userIsDragging) + return; + _this.onDropdownIndicatorMouseDown(event); + }; + _this.handleInputChange = function(event) { + var prevInputValue = _this.props.inputValue; + var inputValue = event.currentTarget.value; + _this.setState({ + inputIsHiddenAfterUpdate: false + }); + _this.onInputChange(inputValue, { + action: "input-change", + prevInputValue + }); + if (!_this.props.menuIsOpen) { + _this.onMenuOpen(); + } + }; + _this.onInputFocus = function(event) { + if (_this.props.onFocus) { + _this.props.onFocus(event); + } + _this.setState({ + inputIsHiddenAfterUpdate: false, + isFocused: true + }); + if (_this.openAfterFocus || _this.props.openMenuOnFocus) { + _this.openMenu("first"); + } + _this.openAfterFocus = false; + }; + _this.onInputBlur = function(event) { + var prevInputValue = _this.props.inputValue; + if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) { + _this.inputRef.focus(); + return; + } + if (_this.props.onBlur) { + _this.props.onBlur(event); + } + _this.onInputChange("", { + action: "input-blur", + prevInputValue + }); + _this.onMenuClose(); + _this.setState({ + focusedValue: null, + isFocused: false + }); + }; + _this.onOptionHover = function(focusedOption) { + if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) { + return; + } + _this.setState({ + focusedOption + }); + }; + _this.shouldHideSelectedOptions = function() { + return shouldHideSelectedOptions(_this.props); + }; + _this.onValueInputFocus = function(e) { + e.preventDefault(); + e.stopPropagation(); + _this.focus(); + }; + _this.onKeyDown = function(event) { + var _this$props5 = _this.props, isMulti = _this$props5.isMulti, backspaceRemovesValue = _this$props5.backspaceRemovesValue, escapeClearsValue = _this$props5.escapeClearsValue, inputValue = _this$props5.inputValue, isClearable = _this$props5.isClearable, isDisabled = _this$props5.isDisabled, menuIsOpen = _this$props5.menuIsOpen, onKeyDown = _this$props5.onKeyDown, tabSelectsValue = _this$props5.tabSelectsValue, openMenuOnFocus = _this$props5.openMenuOnFocus; + var _this$state = _this.state, focusedOption = _this$state.focusedOption, focusedValue = _this$state.focusedValue, selectValue = _this$state.selectValue; + if (isDisabled) + return; + if (typeof onKeyDown === "function") { + onKeyDown(event); + if (event.defaultPrevented) { + return; + } + } + _this.blockOptionHover = true; + switch (event.key) { + case "ArrowLeft": + if (!isMulti || inputValue) + return; + _this.focusValue("previous"); + break; + case "ArrowRight": + if (!isMulti || inputValue) + return; + _this.focusValue("next"); + break; + case "Delete": + case "Backspace": + if (inputValue) + return; + if (focusedValue) { + _this.removeValue(focusedValue); + } else { + if (!backspaceRemovesValue) + return; + if (isMulti) { + _this.popValue(); + } else if (isClearable) { + _this.clearValue(); + } + } + break; + case "Tab": + if (_this.isComposing) + return; + if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) { + return; + } + _this.selectOption(focusedOption); + break; + case "Enter": + if (event.keyCode === 229) { + break; + } + if (menuIsOpen) { + if (!focusedOption) + return; + if (_this.isComposing) + return; + _this.selectOption(focusedOption); + break; + } + return; + case "Escape": + if (menuIsOpen) { + _this.setState({ + inputIsHiddenAfterUpdate: false + }); + _this.onInputChange("", { + action: "menu-close", + prevInputValue: inputValue + }); + _this.onMenuClose(); + } else if (isClearable && escapeClearsValue) { + _this.clearValue(); + } + break; + case " ": + if (inputValue) { + return; + } + if (!menuIsOpen) { + _this.openMenu("first"); + break; + } + if (!focusedOption) + return; + _this.selectOption(focusedOption); + break; + case "ArrowUp": + if (menuIsOpen) { + _this.focusOption("up"); + } else { + _this.openMenu("last"); + } + break; + case "ArrowDown": + if (menuIsOpen) { + _this.focusOption("down"); + } else { + _this.openMenu("first"); + } + break; + case "PageUp": + if (!menuIsOpen) + return; + _this.focusOption("pageup"); + break; + case "PageDown": + if (!menuIsOpen) + return; + _this.focusOption("pagedown"); + break; + case "Home": + if (!menuIsOpen) + return; + _this.focusOption("first"); + break; + case "End": + if (!menuIsOpen) + return; + _this.focusOption("last"); + break; + default: + return; + } + event.preventDefault(); + }; + _this.instancePrefix = "react-select-" + (_this.props.instanceId || ++instanceId); + _this.state.selectValue = index.cleanValue(_props.value); + if (_props.menuIsOpen && _this.state.selectValue.length) { + var focusableOptions = _this.buildFocusableOptions(); + var optionIndex = focusableOptions.indexOf(_this.state.selectValue[0]); + _this.state.focusedOption = focusableOptions[optionIndex]; + } + return _this; + } + _createClass(Select2, [{ + key: "componentDidMount", + value: function componentDidMount() { + this.startListeningComposition(); + this.startListeningToTouch(); + if (this.props.closeMenuOnScroll && document && document.addEventListener) { + document.addEventListener("scroll", this.onScroll, true); + } + if (this.props.autoFocus) { + this.focusInput(); + } + if (this.props.menuIsOpen && this.state.focusedOption && this.menuListRef && this.focusedOptionRef) { + index.scrollIntoView(this.menuListRef, this.focusedOptionRef); + } + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + var _this$props6 = this.props, isDisabled = _this$props6.isDisabled, menuIsOpen = _this$props6.menuIsOpen; + var isFocused = this.state.isFocused; + if (isFocused && !isDisabled && prevProps.isDisabled || isFocused && menuIsOpen && !prevProps.menuIsOpen) { + this.focusInput(); + } + if (isFocused && isDisabled && !prevProps.isDisabled) { + this.setState({ + isFocused: false + }, this.onMenuClose); + } else if (!isFocused && !isDisabled && prevProps.isDisabled && this.inputRef === document.activeElement) { + this.setState({ + isFocused: true + }); + } + if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) { + index.scrollIntoView(this.menuListRef, this.focusedOptionRef); + this.scrollToFocusedOptionOnUpdate = false; + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this.stopListeningComposition(); + this.stopListeningToTouch(); + document.removeEventListener("scroll", this.onScroll, true); + } + }, { + key: "onMenuOpen", + value: function onMenuOpen() { + this.props.onMenuOpen(); + } + }, { + key: "onMenuClose", + value: function onMenuClose() { + this.onInputChange("", { + action: "menu-close", + prevInputValue: this.props.inputValue + }); + this.props.onMenuClose(); + } + }, { + key: "onInputChange", + value: function onInputChange(newValue, actionMeta) { + this.props.onInputChange(newValue, actionMeta); + } + }, { + key: "focusInput", + value: function focusInput() { + if (!this.inputRef) + return; + this.inputRef.focus(); + } + }, { + key: "blurInput", + value: function blurInput() { + if (!this.inputRef) + return; + this.inputRef.blur(); + } + }, { + key: "openMenu", + value: function openMenu(focusOption) { + var _this2 = this; + var _this$state2 = this.state, selectValue = _this$state2.selectValue, isFocused = _this$state2.isFocused; + var focusableOptions = this.buildFocusableOptions(); + var openAtIndex = focusOption === "first" ? 0 : focusableOptions.length - 1; + if (!this.props.isMulti) { + var selectedIndex = focusableOptions.indexOf(selectValue[0]); + if (selectedIndex > -1) { + openAtIndex = selectedIndex; + } + } + this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef); + this.setState({ + inputIsHiddenAfterUpdate: false, + focusedValue: null, + focusedOption: focusableOptions[openAtIndex] + }, function() { + return _this2.onMenuOpen(); + }); + } + }, { + key: "focusValue", + value: function focusValue(direction) { + var _this$state3 = this.state, selectValue = _this$state3.selectValue, focusedValue = _this$state3.focusedValue; + if (!this.props.isMulti) + return; + this.setState({ + focusedOption: null + }); + var focusedIndex = selectValue.indexOf(focusedValue); + if (!focusedValue) { + focusedIndex = -1; + } + var lastIndex = selectValue.length - 1; + var nextFocus = -1; + if (!selectValue.length) + return; + switch (direction) { + case "previous": + if (focusedIndex === 0) { + nextFocus = 0; + } else if (focusedIndex === -1) { + nextFocus = lastIndex; + } else { + nextFocus = focusedIndex - 1; + } + break; + case "next": + if (focusedIndex > -1 && focusedIndex < lastIndex) { + nextFocus = focusedIndex + 1; + } + break; + } + this.setState({ + inputIsHidden: nextFocus !== -1, + focusedValue: selectValue[nextFocus] + }); + } + }, { + key: "focusOption", + value: function focusOption() { + var direction = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "first"; + var pageSize = this.props.pageSize; + var focusedOption = this.state.focusedOption; + var options = this.getFocusableOptions(); + if (!options.length) + return; + var nextFocus = 0; + var focusedIndex = options.indexOf(focusedOption); + if (!focusedOption) { + focusedIndex = -1; + } + if (direction === "up") { + nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1; + } else if (direction === "down") { + nextFocus = (focusedIndex + 1) % options.length; + } else if (direction === "pageup") { + nextFocus = focusedIndex - pageSize; + if (nextFocus < 0) + nextFocus = 0; + } else if (direction === "pagedown") { + nextFocus = focusedIndex + pageSize; + if (nextFocus > options.length - 1) + nextFocus = options.length - 1; + } else if (direction === "last") { + nextFocus = options.length - 1; + } + this.scrollToFocusedOptionOnUpdate = true; + this.setState({ + focusedOption: options[nextFocus], + focusedValue: null + }); + } + }, { + key: "getTheme", + value: function getTheme() { + if (!this.props.theme) { + return defaultTheme; + } + if (typeof this.props.theme === "function") { + return this.props.theme(defaultTheme); + } + return _objectSpread(_objectSpread({}, defaultTheme), this.props.theme); + } + }, { + key: "getCommonProps", + value: function getCommonProps() { + var clearValue = this.clearValue, cx = this.cx, getStyles = this.getStyles, getClassNames = this.getClassNames, getValue2 = this.getValue, selectOption = this.selectOption, setValue = this.setValue, props = this.props; + var isMulti = props.isMulti, isRtl = props.isRtl, options = props.options; + var hasValue = this.hasValue(); + return { + clearValue, + cx, + getStyles, + getClassNames, + getValue: getValue2, + hasValue, + isMulti, + isRtl, + options, + selectOption, + selectProps: props, + setValue, + theme: this.getTheme() + }; + } + }, { + key: "hasValue", + value: function hasValue() { + var selectValue = this.state.selectValue; + return selectValue.length > 0; + } + }, { + key: "hasOptions", + value: function hasOptions() { + return !!this.getFocusableOptions().length; + } + }, { + key: "isClearable", + value: function isClearable() { + var _this$props7 = this.props, isClearable2 = _this$props7.isClearable, isMulti = _this$props7.isMulti; + if (isClearable2 === void 0) + return isMulti; + return isClearable2; + } + }, { + key: "isOptionDisabled", + value: function isOptionDisabled2(option, selectValue) { + return _isOptionDisabled(this.props, option, selectValue); + } + }, { + key: "isOptionSelected", + value: function isOptionSelected(option, selectValue) { + return _isOptionSelected(this.props, option, selectValue); + } + }, { + key: "filterOption", + value: function filterOption(option, inputValue) { + return _filterOption(this.props, option, inputValue); + } + }, { + key: "formatOptionLabel", + value: function formatOptionLabel(data, context) { + if (typeof this.props.formatOptionLabel === "function") { + var _inputValue = this.props.inputValue; + var _selectValue = this.state.selectValue; + return this.props.formatOptionLabel(data, { + context, + inputValue: _inputValue, + selectValue: _selectValue + }); + } else { + return this.getOptionLabel(data); + } + } + }, { + key: "formatGroupLabel", + value: function formatGroupLabel2(data) { + return this.props.formatGroupLabel(data); + } + }, { + key: "startListeningComposition", + value: function startListeningComposition() { + if (document && document.addEventListener) { + document.addEventListener("compositionstart", this.onCompositionStart, false); + document.addEventListener("compositionend", this.onCompositionEnd, false); + } + } + }, { + key: "stopListeningComposition", + value: function stopListeningComposition() { + if (document && document.removeEventListener) { + document.removeEventListener("compositionstart", this.onCompositionStart); + document.removeEventListener("compositionend", this.onCompositionEnd); + } + } + }, { + key: "startListeningToTouch", + value: function startListeningToTouch() { + if (document && document.addEventListener) { + document.addEventListener("touchstart", this.onTouchStart, false); + document.addEventListener("touchmove", this.onTouchMove, false); + document.addEventListener("touchend", this.onTouchEnd, false); + } + } + }, { + key: "stopListeningToTouch", + value: function stopListeningToTouch() { + if (document && document.removeEventListener) { + document.removeEventListener("touchstart", this.onTouchStart); + document.removeEventListener("touchmove", this.onTouchMove); + document.removeEventListener("touchend", this.onTouchEnd); + } + } + }, { + key: "renderInput", + value: function renderInput() { + var _this$props8 = this.props, isDisabled = _this$props8.isDisabled, isSearchable = _this$props8.isSearchable, inputId = _this$props8.inputId, inputValue = _this$props8.inputValue, tabIndex = _this$props8.tabIndex, form = _this$props8.form, menuIsOpen = _this$props8.menuIsOpen, required = _this$props8.required; + var _this$getComponents = this.getComponents(), Input = _this$getComponents.Input; + var _this$state4 = this.state, inputIsHidden = _this$state4.inputIsHidden, ariaSelection = _this$state4.ariaSelection; + var commonProps = this.commonProps; + var id2 = inputId || this.getElementId("input"); + var ariaAttributes = _objectSpread(_objectSpread(_objectSpread({ + "aria-autocomplete": "list", + "aria-expanded": menuIsOpen, + "aria-haspopup": true, + "aria-errormessage": this.props["aria-errormessage"], + "aria-invalid": this.props["aria-invalid"], + "aria-label": this.props["aria-label"], + "aria-labelledby": this.props["aria-labelledby"], + "aria-required": required, + role: "combobox" + }, menuIsOpen && { + "aria-controls": this.getElementId("listbox"), + "aria-owns": this.getElementId("listbox") + }), !isSearchable && { + "aria-readonly": true + }), this.hasValue() ? (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === "initial-input-focus" && { + "aria-describedby": this.getElementId("live-region") + } : { + "aria-describedby": this.getElementId("placeholder") + }); + if (!isSearchable) { + return /* @__PURE__ */ React__namespace.createElement(DummyInput, _extends2({ + id: id2, + innerRef: this.getInputRef, + onBlur: this.onInputBlur, + onChange: index.noop, + onFocus: this.onInputFocus, + disabled: isDisabled, + tabIndex, + inputMode: "none", + form, + value: "" + }, ariaAttributes)); + } + return /* @__PURE__ */ React__namespace.createElement(Input, _extends2({}, commonProps, { + autoCapitalize: "none", + autoComplete: "off", + autoCorrect: "off", + id: id2, + innerRef: this.getInputRef, + isDisabled, + isHidden: inputIsHidden, + onBlur: this.onInputBlur, + onChange: this.handleInputChange, + onFocus: this.onInputFocus, + spellCheck: "false", + tabIndex, + form, + type: "text", + value: inputValue + }, ariaAttributes)); + } + }, { + key: "renderPlaceholderOrValue", + value: function renderPlaceholderOrValue() { + var _this3 = this; + var _this$getComponents2 = this.getComponents(), MultiValue = _this$getComponents2.MultiValue, MultiValueContainer = _this$getComponents2.MultiValueContainer, MultiValueLabel = _this$getComponents2.MultiValueLabel, MultiValueRemove = _this$getComponents2.MultiValueRemove, SingleValue = _this$getComponents2.SingleValue, Placeholder = _this$getComponents2.Placeholder; + var commonProps = this.commonProps; + var _this$props9 = this.props, controlShouldRenderValue = _this$props9.controlShouldRenderValue, isDisabled = _this$props9.isDisabled, isMulti = _this$props9.isMulti, inputValue = _this$props9.inputValue, placeholder = _this$props9.placeholder; + var _this$state5 = this.state, selectValue = _this$state5.selectValue, focusedValue = _this$state5.focusedValue, isFocused = _this$state5.isFocused; + if (!this.hasValue() || !controlShouldRenderValue) { + return inputValue ? null : /* @__PURE__ */ React__namespace.createElement(Placeholder, _extends2({}, commonProps, { + key: "placeholder", + isDisabled, + isFocused, + innerProps: { + id: this.getElementId("placeholder") + } + }), placeholder); + } + if (isMulti) { + return selectValue.map(function(opt, index2) { + var isOptionFocused = opt === focusedValue; + var key = "".concat(_this3.getOptionLabel(opt), "-").concat(_this3.getOptionValue(opt)); + return /* @__PURE__ */ React__namespace.createElement(MultiValue, _extends2({}, commonProps, { + components: { + Container: MultiValueContainer, + Label: MultiValueLabel, + Remove: MultiValueRemove + }, + isFocused: isOptionFocused, + isDisabled, + key, + index: index2, + removeProps: { + onClick: function onClick() { + return _this3.removeValue(opt); + }, + onTouchEnd: function onTouchEnd() { + return _this3.removeValue(opt); + }, + onMouseDown: function onMouseDown(e) { + e.preventDefault(); + } + }, + data: opt + }), _this3.formatOptionLabel(opt, "value")); + }); + } + if (inputValue) { + return null; + } + var singleValue = selectValue[0]; + return /* @__PURE__ */ React__namespace.createElement(SingleValue, _extends2({}, commonProps, { + data: singleValue, + isDisabled + }), this.formatOptionLabel(singleValue, "value")); + } + }, { + key: "renderClearIndicator", + value: function renderClearIndicator() { + var _this$getComponents3 = this.getComponents(), ClearIndicator = _this$getComponents3.ClearIndicator; + var commonProps = this.commonProps; + var _this$props10 = this.props, isDisabled = _this$props10.isDisabled, isLoading = _this$props10.isLoading; + var isFocused = this.state.isFocused; + if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) { + return null; + } + var innerProps = { + onMouseDown: this.onClearIndicatorMouseDown, + onTouchEnd: this.onClearIndicatorTouchEnd, + "aria-hidden": "true" + }; + return /* @__PURE__ */ React__namespace.createElement(ClearIndicator, _extends2({}, commonProps, { + innerProps, + isFocused + })); + } + }, { + key: "renderLoadingIndicator", + value: function renderLoadingIndicator() { + var _this$getComponents4 = this.getComponents(), LoadingIndicator = _this$getComponents4.LoadingIndicator; + var commonProps = this.commonProps; + var _this$props11 = this.props, isDisabled = _this$props11.isDisabled, isLoading = _this$props11.isLoading; + var isFocused = this.state.isFocused; + if (!LoadingIndicator || !isLoading) + return null; + var innerProps = { + "aria-hidden": "true" + }; + return /* @__PURE__ */ React__namespace.createElement(LoadingIndicator, _extends2({}, commonProps, { + innerProps, + isDisabled, + isFocused + })); + } + }, { + key: "renderIndicatorSeparator", + value: function renderIndicatorSeparator() { + var _this$getComponents5 = this.getComponents(), DropdownIndicator = _this$getComponents5.DropdownIndicator, IndicatorSeparator = _this$getComponents5.IndicatorSeparator; + if (!DropdownIndicator || !IndicatorSeparator) + return null; + var commonProps = this.commonProps; + var isDisabled = this.props.isDisabled; + var isFocused = this.state.isFocused; + return /* @__PURE__ */ React__namespace.createElement(IndicatorSeparator, _extends2({}, commonProps, { + isDisabled, + isFocused + })); + } + }, { + key: "renderDropdownIndicator", + value: function renderDropdownIndicator() { + var _this$getComponents6 = this.getComponents(), DropdownIndicator = _this$getComponents6.DropdownIndicator; + if (!DropdownIndicator) + return null; + var commonProps = this.commonProps; + var isDisabled = this.props.isDisabled; + var isFocused = this.state.isFocused; + var innerProps = { + onMouseDown: this.onDropdownIndicatorMouseDown, + onTouchEnd: this.onDropdownIndicatorTouchEnd, + "aria-hidden": "true" + }; + return /* @__PURE__ */ React__namespace.createElement(DropdownIndicator, _extends2({}, commonProps, { + innerProps, + isDisabled, + isFocused + })); + } + }, { + key: "renderMenu", + value: function renderMenu() { + var _this4 = this; + var _this$getComponents7 = this.getComponents(), Group = _this$getComponents7.Group, GroupHeading = _this$getComponents7.GroupHeading, Menu3 = _this$getComponents7.Menu, MenuList = _this$getComponents7.MenuList, MenuPortal = _this$getComponents7.MenuPortal, LoadingMessage = _this$getComponents7.LoadingMessage, NoOptionsMessage = _this$getComponents7.NoOptionsMessage, Option = _this$getComponents7.Option; + var commonProps = this.commonProps; + var focusedOption = this.state.focusedOption; + var _this$props12 = this.props, captureMenuScroll = _this$props12.captureMenuScroll, inputValue = _this$props12.inputValue, isLoading = _this$props12.isLoading, loadingMessage = _this$props12.loadingMessage, minMenuHeight = _this$props12.minMenuHeight, maxMenuHeight = _this$props12.maxMenuHeight, menuIsOpen = _this$props12.menuIsOpen, menuPlacement = _this$props12.menuPlacement, menuPosition = _this$props12.menuPosition, menuPortalTarget = _this$props12.menuPortalTarget, menuShouldBlockScroll = _this$props12.menuShouldBlockScroll, menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView, noOptionsMessage = _this$props12.noOptionsMessage, onMenuScrollToTop = _this$props12.onMenuScrollToTop, onMenuScrollToBottom = _this$props12.onMenuScrollToBottom; + if (!menuIsOpen) + return null; + var render = function render2(props, id2) { + var type = props.type, data = props.data, isDisabled = props.isDisabled, isSelected = props.isSelected, label = props.label, value = props.value; + var isFocused = focusedOption === data; + var onHover = isDisabled ? void 0 : function() { + return _this4.onOptionHover(data); + }; + var onSelect = isDisabled ? void 0 : function() { + return _this4.selectOption(data); + }; + var optionId = "".concat(_this4.getElementId("option"), "-").concat(id2); + var innerProps = { + id: optionId, + onClick: onSelect, + onMouseMove: onHover, + onMouseOver: onHover, + tabIndex: -1 + }; + return /* @__PURE__ */ React__namespace.createElement(Option, _extends2({}, commonProps, { + innerProps, + data, + isDisabled, + isSelected, + key: optionId, + label, + type, + value, + isFocused, + innerRef: isFocused ? _this4.getFocusedOptionRef : void 0 + }), _this4.formatOptionLabel(props.data, "menu")); + }; + var menuUI; + if (this.hasOptions()) { + menuUI = this.getCategorizedOptions().map(function(item) { + if (item.type === "group") { + var _data = item.data, options = item.options, groupIndex = item.index; + var groupId = "".concat(_this4.getElementId("group"), "-").concat(groupIndex); + var headingId = "".concat(groupId, "-heading"); + return /* @__PURE__ */ React__namespace.createElement(Group, _extends2({}, commonProps, { + key: groupId, + data: _data, + options, + Heading: GroupHeading, + headingProps: { + id: headingId, + data: item.data + }, + label: _this4.formatGroupLabel(item.data) + }), item.options.map(function(option) { + return render(option, "".concat(groupIndex, "-").concat(option.index)); + })); + } else if (item.type === "option") { + return render(item, "".concat(item.index)); + } + }); + } else if (isLoading) { + var message = loadingMessage({ + inputValue + }); + if (message === null) + return null; + menuUI = /* @__PURE__ */ React__namespace.createElement(LoadingMessage, commonProps, message); + } else { + var _message = noOptionsMessage({ + inputValue + }); + if (_message === null) + return null; + menuUI = /* @__PURE__ */ React__namespace.createElement(NoOptionsMessage, commonProps, _message); + } + var menuPlacementProps = { + minMenuHeight, + maxMenuHeight, + menuPlacement, + menuPosition, + menuShouldScrollIntoView + }; + var menuElement = /* @__PURE__ */ React__namespace.createElement(index.MenuPlacer, _extends2({}, commonProps, menuPlacementProps), function(_ref4) { + var ref = _ref4.ref, _ref4$placerProps = _ref4.placerProps, placement = _ref4$placerProps.placement, maxHeight = _ref4$placerProps.maxHeight; + return /* @__PURE__ */ React__namespace.createElement(Menu3, _extends2({}, commonProps, menuPlacementProps, { + innerRef: ref, + innerProps: { + onMouseDown: _this4.onMenuMouseDown, + onMouseMove: _this4.onMenuMouseMove, + id: _this4.getElementId("listbox") + }, + isLoading, + placement + }), /* @__PURE__ */ React__namespace.createElement(ScrollManager, { + captureEnabled: captureMenuScroll, + onTopArrive: onMenuScrollToTop, + onBottomArrive: onMenuScrollToBottom, + lockEnabled: menuShouldBlockScroll + }, function(scrollTargetRef) { + return /* @__PURE__ */ React__namespace.createElement(MenuList, _extends2({}, commonProps, { + innerRef: function innerRef(instance) { + _this4.getMenuListRef(instance); + scrollTargetRef(instance); + }, + isLoading, + maxHeight, + focusedOption + }), menuUI); + })); + }); + return menuPortalTarget || menuPosition === "fixed" ? /* @__PURE__ */ React__namespace.createElement(MenuPortal, _extends2({}, commonProps, { + appendTo: menuPortalTarget, + controlElement: this.controlRef, + menuPlacement, + menuPosition + }), menuElement) : menuElement; + } + }, { + key: "renderFormField", + value: function renderFormField() { + var _this5 = this; + var _this$props13 = this.props, delimiter = _this$props13.delimiter, isDisabled = _this$props13.isDisabled, isMulti = _this$props13.isMulti, name = _this$props13.name, required = _this$props13.required; + var selectValue = this.state.selectValue; + if (required && !this.hasValue() && !isDisabled) { + return /* @__PURE__ */ React__namespace.createElement(RequiredInput$1, { + name, + onFocus: this.onValueInputFocus + }); + } + if (!name || isDisabled) + return; + if (isMulti) { + if (delimiter) { + var value = selectValue.map(function(opt) { + return _this5.getOptionValue(opt); + }).join(delimiter); + return /* @__PURE__ */ React__namespace.createElement("input", { + name, + type: "hidden", + value + }); + } else { + var input = selectValue.length > 0 ? selectValue.map(function(opt, i3) { + return /* @__PURE__ */ React__namespace.createElement("input", { + key: "i-".concat(i3), + name, + type: "hidden", + value: _this5.getOptionValue(opt) + }); + }) : /* @__PURE__ */ React__namespace.createElement("input", { + name, + type: "hidden", + value: "" + }); + return /* @__PURE__ */ React__namespace.createElement("div", null, input); + } + } else { + var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : ""; + return /* @__PURE__ */ React__namespace.createElement("input", { + name, + type: "hidden", + value: _value + }); + } + } + }, { + key: "renderLiveRegion", + value: function renderLiveRegion() { + var commonProps = this.commonProps; + var _this$state6 = this.state, ariaSelection = _this$state6.ariaSelection, focusedOption = _this$state6.focusedOption, focusedValue = _this$state6.focusedValue, isFocused = _this$state6.isFocused, selectValue = _this$state6.selectValue; + var focusableOptions = this.getFocusableOptions(); + return /* @__PURE__ */ React__namespace.createElement(LiveRegion$1, _extends2({}, commonProps, { + id: this.getElementId("live-region"), + ariaSelection, + focusedOption, + focusedValue, + isFocused, + selectValue, + focusableOptions + })); + } + }, { + key: "render", + value: function render() { + var _this$getComponents8 = this.getComponents(), Control = _this$getComponents8.Control, IndicatorsContainer = _this$getComponents8.IndicatorsContainer, SelectContainer = _this$getComponents8.SelectContainer, ValueContainer = _this$getComponents8.ValueContainer; + var _this$props14 = this.props, className = _this$props14.className, id2 = _this$props14.id, isDisabled = _this$props14.isDisabled, menuIsOpen = _this$props14.menuIsOpen; + var isFocused = this.state.isFocused; + var commonProps = this.commonProps = this.getCommonProps(); + return /* @__PURE__ */ React__namespace.createElement(SelectContainer, _extends2({}, commonProps, { + className, + innerProps: { + id: id2, + onKeyDown: this.onKeyDown + }, + isDisabled, + isFocused + }), this.renderLiveRegion(), /* @__PURE__ */ React__namespace.createElement(Control, _extends2({}, commonProps, { + innerRef: this.getControlRef, + innerProps: { + onMouseDown: this.onControlMouseDown, + onTouchEnd: this.onControlTouchEnd + }, + isDisabled, + isFocused, + menuIsOpen + }), /* @__PURE__ */ React__namespace.createElement(ValueContainer, _extends2({}, commonProps, { + isDisabled + }), this.renderPlaceholderOrValue(), this.renderInput()), /* @__PURE__ */ React__namespace.createElement(IndicatorsContainer, _extends2({}, commonProps, { + isDisabled + }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField()); + } + }], [{ + key: "getDerivedStateFromProps", + value: function getDerivedStateFromProps(props, state) { + var prevProps = state.prevProps, clearFocusValueOnUpdate = state.clearFocusValueOnUpdate, inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate, ariaSelection = state.ariaSelection, isFocused = state.isFocused, prevWasFocused = state.prevWasFocused; + var options = props.options, value = props.value, menuIsOpen = props.menuIsOpen, inputValue = props.inputValue, isMulti = props.isMulti; + var selectValue = index.cleanValue(value); + var newMenuOptionsState = {}; + if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) { + var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : []; + var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null; + var focusedOption = getNextFocusedOption(state, focusableOptions); + newMenuOptionsState = { + selectValue, + focusedOption, + focusedValue, + clearFocusValueOnUpdate: false + }; + } + var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? { + inputIsHidden: inputIsHiddenAfterUpdate, + inputIsHiddenAfterUpdate: void 0 + } : {}; + var newAriaSelection = ariaSelection; + var hasKeptFocus = isFocused && prevWasFocused; + if (isFocused && !hasKeptFocus) { + newAriaSelection = { + value: index.valueTernary(isMulti, selectValue, selectValue[0] || null), + options: selectValue, + action: "initial-input-focus" + }; + hasKeptFocus = !prevWasFocused; + } + if ((ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === "initial-input-focus") { + newAriaSelection = null; + } + return _objectSpread(_objectSpread(_objectSpread({}, newMenuOptionsState), newInputIsHiddenState), {}, { + prevProps: props, + ariaSelection: newAriaSelection, + prevWasFocused: hasKeptFocus + }); + } + }]); + return Select2; + }(React49.Component); + Select.defaultProps = defaultProps; + exports.Select = Select; + exports.createFilter = createFilter; + exports.defaultProps = defaultProps; + exports.defaultTheme = defaultTheme; + exports.getOptionLabel = getOptionLabel$1; + exports.getOptionValue = getOptionValue$1; + exports.mergeStyles = mergeStyles; + } +}); + +// node_modules/react-select/dist/react-select.cjs.dev.js +var require_react_select_cjs_dev = __commonJS({ + "node_modules/react-select/dist/react-select.cjs.dev.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var useStateManager = require_useStateManager_7748b351_cjs_dev(); + var _extends2 = require_extends2(); + var React49 = require_react(); + var Select = require_Select_5041a4f3_cjs_dev(); + var react = require_emotion_react_cjs(); + var createCache = require_emotion_cache_cjs(); + var index = require_index_2fe3dc33_cjs_dev(); + require_objectSpread2(); + require_slicedToArray(); + require_objectWithoutProperties(); + require_classCallCheck(); + require_createClass(); + require_inherits(); + require_createSuper(); + require_toConsumableArray(); + require_memoize_one_cjs(); + require_typeof(); + require_taggedTemplateLiteral(); + require_defineProperty(); + require_react_dom(); + require_floating_ui_dom_umd(); + require_use_isomorphic_layout_effect_browser_cjs(); + function _interopDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _interopNamespace(e) { + if (e && e.__esModule) + return e; + var n2 = /* @__PURE__ */ Object.create(null); + if (e) { + Object.keys(e).forEach(function(k2) { + if (k2 !== "default") { + var d2 = Object.getOwnPropertyDescriptor(e, k2); + Object.defineProperty(n2, k2, d2.get ? d2 : { + enumerable: true, + get: function() { + return e[k2]; + } + }); + } + }); + } + n2["default"] = e; + return Object.freeze(n2); + } + var React__namespace = /* @__PURE__ */ _interopNamespace(React49); + var createCache__default = /* @__PURE__ */ _interopDefault(createCache); + var StateManagedSelect = /* @__PURE__ */ React49.forwardRef(function(props, ref) { + var baseSelectProps = useStateManager.useStateManager(props); + return /* @__PURE__ */ React__namespace.createElement(Select.Select, _extends2({ + ref + }, baseSelectProps)); + }); + var StateManagedSelect$1 = StateManagedSelect; + var NonceProvider = function(_ref) { + var nonce = _ref.nonce, children = _ref.children, cacheKey = _ref.cacheKey; + var emotionCache = React49.useMemo(function() { + return createCache__default["default"]({ + key: cacheKey, + nonce + }); + }, [cacheKey, nonce]); + return /* @__PURE__ */ React__namespace.createElement(react.CacheProvider, { + value: emotionCache + }, children); + }; + exports.useStateManager = useStateManager.useStateManager; + exports.createFilter = Select.createFilter; + exports.defaultTheme = Select.defaultTheme; + exports.mergeStyles = Select.mergeStyles; + exports.components = index.components; + exports.NonceProvider = NonceProvider; + exports["default"] = StateManagedSelect$1; + } +}); + +// node_modules/react-select/dist/react-select.cjs.js +var require_react_select_cjs = __commonJS({ + "node_modules/react-select/dist/react-select.cjs.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_react_select_cjs_dev(); + } + } +}); + +// node_modules/react-select/dist/react-select.cjs.default.js +var require_react_select_cjs_default = __commonJS({ + "node_modules/react-select/dist/react-select.cjs.default.js"(exports) { + exports._default = require_react_select_cjs().default; + } +}); + +// node_modules/fuzzysort/fuzzysort.js +var require_fuzzysort = __commonJS({ + "node_modules/fuzzysort/fuzzysort.js"(exports, module2) { + ((root, UMD) => { + if (typeof define === "function" && define.amd) + define([], UMD); + else if (typeof module2 === "object" && module2.exports) + module2.exports = UMD(); + else + root["fuzzysort"] = UMD(); + })(exports, (_3) => { + "use strict"; + var single = (search, target) => { + if (search == "farzher") + return { target: "farzher was here (^-^*)/", score: 0, _indexes: [0] }; + if (!search || !target) + return NULL; + var preparedSearch = getPreparedSearch(search); + if (!isObj(target)) + target = getPrepared(target); + var searchBitflags = preparedSearch.bitflags; + if ((searchBitflags & target._bitflags) !== searchBitflags) + return NULL; + return algorithm(preparedSearch, target); + }; + var go = (search, targets, options) => { + if (search == "farzher") + return [{ target: "farzher was here (^-^*)/", score: 0, _indexes: [0], obj: targets ? targets[0] : NULL }]; + if (!search) + return options && options.all ? all(search, targets, options) : noResults; + var preparedSearch = getPreparedSearch(search); + var searchBitflags = preparedSearch.bitflags; + var containsSpace = preparedSearch.containsSpace; + var threshold = options && options.threshold || INT_MIN; + var limit = options && options["limit"] || INT_MAX; + var resultsLen = 0; + var limitedCount = 0; + var targetsLen = targets.length; + if (options && options.key) { + var key = options.key; + for (var i2 = 0; i2 < targetsLen; ++i2) { + var obj = targets[i2]; + var target = getValue2(obj, key); + if (!target) + continue; + if (!isObj(target)) + target = getPrepared(target); + if ((searchBitflags & target._bitflags) !== searchBitflags) + continue; + var result = algorithm(preparedSearch, target); + if (result === NULL) + continue; + if (result.score < threshold) + continue; + result = { target: result.target, _targetLower: "", _targetLowerCodes: NULL, _nextBeginningIndexes: NULL, _bitflags: 0, score: result.score, _indexes: result._indexes, obj }; + if (resultsLen < limit) { + q2.add(result); + ++resultsLen; + } else { + ++limitedCount; + if (result.score > q2.peek().score) + q2.replaceTop(result); + } + } + } else if (options && options.keys) { + var scoreFn = options["scoreFn"] || defaultScoreFn; + var keys = options.keys; + var keysLen = keys.length; + for (var i2 = 0; i2 < targetsLen; ++i2) { + var obj = targets[i2]; + var objResults = new Array(keysLen); + for (var keyI = 0; keyI < keysLen; ++keyI) { + var key = keys[keyI]; + var target = getValue2(obj, key); + if (!target) { + objResults[keyI] = NULL; + continue; + } + if (!isObj(target)) + target = getPrepared(target); + if ((searchBitflags & target._bitflags) !== searchBitflags) + objResults[keyI] = NULL; + else + objResults[keyI] = algorithm(preparedSearch, target); + } + objResults.obj = obj; + var score = scoreFn(objResults); + if (score === NULL) + continue; + if (score < threshold) + continue; + objResults.score = score; + if (resultsLen < limit) { + q2.add(objResults); + ++resultsLen; + } else { + ++limitedCount; + if (score > q2.peek().score) + q2.replaceTop(objResults); + } + } + } else { + for (var i2 = 0; i2 < targetsLen; ++i2) { + var target = targets[i2]; + if (!target) + continue; + if (!isObj(target)) + target = getPrepared(target); + if ((searchBitflags & target._bitflags) !== searchBitflags) + continue; + var result = algorithm(preparedSearch, target); + if (result === NULL) + continue; + if (result.score < threshold) + continue; + if (resultsLen < limit) { + q2.add(result); + ++resultsLen; + } else { + ++limitedCount; + if (result.score > q2.peek().score) + q2.replaceTop(result); + } + } + } + if (resultsLen === 0) + return noResults; + var results = new Array(resultsLen); + for (var i2 = resultsLen - 1; i2 >= 0; --i2) + results[i2] = q2.poll(); + results.total = resultsLen + limitedCount; + return results; + }; + var highlight = (result, hOpen, hClose) => { + if (typeof hOpen === "function") + return highlightCallback(result, hOpen); + if (result === NULL) + return NULL; + if (hOpen === void 0) + hOpen = ""; + if (hClose === void 0) + hClose = ""; + var highlighted = ""; + var matchesIndex = 0; + var opened = false; + var target = result.target; + var targetLen = target.length; + var indexes2 = result._indexes; + indexes2 = indexes2.slice(0, indexes2.len).sort((a2, b2) => a2 - b2); + for (var i2 = 0; i2 < targetLen; ++i2) { + var char = target[i2]; + if (indexes2[matchesIndex] === i2) { + ++matchesIndex; + if (!opened) { + opened = true; + highlighted += hOpen; + } + if (matchesIndex === indexes2.length) { + highlighted += char + hClose + target.substr(i2 + 1); + break; + } + } else { + if (opened) { + opened = false; + highlighted += hClose; + } + } + highlighted += char; + } + return highlighted; + }; + var highlightCallback = (result, cb) => { + if (result === NULL) + return NULL; + var target = result.target; + var targetLen = target.length; + var indexes2 = result._indexes; + indexes2 = indexes2.slice(0, indexes2.len).sort((a2, b2) => a2 - b2); + var highlighted = ""; + var matchI = 0; + var indexesI = 0; + var opened = false; + var result = []; + for (var i2 = 0; i2 < targetLen; ++i2) { + var char = target[i2]; + if (indexes2[indexesI] === i2) { + ++indexesI; + if (!opened) { + opened = true; + result.push(highlighted); + highlighted = ""; + } + if (indexesI === indexes2.length) { + highlighted += char; + result.push(cb(highlighted, matchI++)); + highlighted = ""; + result.push(target.substr(i2 + 1)); + break; + } + } else { + if (opened) { + opened = false; + result.push(cb(highlighted, matchI++)); + highlighted = ""; + } + } + highlighted += char; + } + return result; + }; + var indexes = (result) => result._indexes.slice(0, result._indexes.len).sort((a2, b2) => a2 - b2); + var prepare = (target) => { + if (typeof target !== "string") + target = ""; + var info = prepareLowerInfo(target); + return { "target": target, _targetLower: info._lower, _targetLowerCodes: info.lowerCodes, _nextBeginningIndexes: NULL, _bitflags: info.bitflags, "score": NULL, _indexes: [0], "obj": NULL }; + }; + var prepareSearch = (search) => { + if (typeof search !== "string") + search = ""; + search = search.trim(); + var info = prepareLowerInfo(search); + var spaceSearches = []; + if (info.containsSpace) { + var searches = search.split(/\s+/); + searches = [...new Set(searches)]; + for (var i2 = 0; i2 < searches.length; i2++) { + if (searches[i2] === "") + continue; + var _info = prepareLowerInfo(searches[i2]); + spaceSearches.push({ lowerCodes: _info.lowerCodes, _lower: searches[i2].toLowerCase(), containsSpace: false }); + } + } + return { lowerCodes: info.lowerCodes, bitflags: info.bitflags, containsSpace: info.containsSpace, _lower: info._lower, spaceSearches }; + }; + var getPrepared = (target) => { + if (target.length > 999) + return prepare(target); + var targetPrepared = preparedCache.get(target); + if (targetPrepared !== void 0) + return targetPrepared; + targetPrepared = prepare(target); + preparedCache.set(target, targetPrepared); + return targetPrepared; + }; + var getPreparedSearch = (search) => { + if (search.length > 999) + return prepareSearch(search); + var searchPrepared = preparedSearchCache.get(search); + if (searchPrepared !== void 0) + return searchPrepared; + searchPrepared = prepareSearch(search); + preparedSearchCache.set(search, searchPrepared); + return searchPrepared; + }; + var all = (search, targets, options) => { + var results = []; + results.total = targets.length; + var limit = options && options.limit || INT_MAX; + if (options && options.key) { + for (var i2 = 0; i2 < targets.length; i2++) { + var obj = targets[i2]; + var target = getValue2(obj, options.key); + if (!target) + continue; + if (!isObj(target)) + target = getPrepared(target); + target.score = INT_MIN; + target._indexes.len = 0; + var result = target; + result = { target: result.target, _targetLower: "", _targetLowerCodes: NULL, _nextBeginningIndexes: NULL, _bitflags: 0, score: target.score, _indexes: NULL, obj }; + results.push(result); + if (results.length >= limit) + return results; + } + } else if (options && options.keys) { + for (var i2 = 0; i2 < targets.length; i2++) { + var obj = targets[i2]; + var objResults = new Array(options.keys.length); + for (var keyI = options.keys.length - 1; keyI >= 0; --keyI) { + var target = getValue2(obj, options.keys[keyI]); + if (!target) { + objResults[keyI] = NULL; + continue; + } + if (!isObj(target)) + target = getPrepared(target); + target.score = INT_MIN; + target._indexes.len = 0; + objResults[keyI] = target; + } + objResults.obj = obj; + objResults.score = INT_MIN; + results.push(objResults); + if (results.length >= limit) + return results; + } + } else { + for (var i2 = 0; i2 < targets.length; i2++) { + var target = targets[i2]; + if (!target) + continue; + if (!isObj(target)) + target = getPrepared(target); + target.score = INT_MIN; + target._indexes.len = 0; + results.push(target); + if (results.length >= limit) + return results; + } + } + return results; + }; + var algorithm = (preparedSearch, prepared, allowSpaces = false) => { + if (allowSpaces === false && preparedSearch.containsSpace) + return algorithmSpaces(preparedSearch, prepared); + var searchLower = preparedSearch._lower; + var searchLowerCodes = preparedSearch.lowerCodes; + var searchLowerCode = searchLowerCodes[0]; + var targetLowerCodes = prepared._targetLowerCodes; + var searchLen = searchLowerCodes.length; + var targetLen = targetLowerCodes.length; + var searchI = 0; + var targetI = 0; + var matchesSimpleLen = 0; + for (; ; ) { + var isMatch = searchLowerCode === targetLowerCodes[targetI]; + if (isMatch) { + matchesSimple[matchesSimpleLen++] = targetI; + ++searchI; + if (searchI === searchLen) + break; + searchLowerCode = searchLowerCodes[searchI]; + } + ++targetI; + if (targetI >= targetLen) + return NULL; + } + var searchI = 0; + var successStrict = false; + var matchesStrictLen = 0; + var nextBeginningIndexes = prepared._nextBeginningIndexes; + if (nextBeginningIndexes === NULL) + nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target); + var firstPossibleI = targetI = matchesSimple[0] === 0 ? 0 : nextBeginningIndexes[matchesSimple[0] - 1]; + var backtrackCount = 0; + if (targetI !== targetLen) + for (; ; ) { + if (targetI >= targetLen) { + if (searchI <= 0) + break; + ++backtrackCount; + if (backtrackCount > 200) + break; + --searchI; + var lastMatch = matchesStrict[--matchesStrictLen]; + targetI = nextBeginningIndexes[lastMatch]; + } else { + var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]; + if (isMatch) { + matchesStrict[matchesStrictLen++] = targetI; + ++searchI; + if (searchI === searchLen) { + successStrict = true; + break; + } + ++targetI; + } else { + targetI = nextBeginningIndexes[targetI]; + } + } + } + var substringIndex = prepared._targetLower.indexOf(searchLower, matchesSimple[0]); + var isSubstring = ~substringIndex; + if (isSubstring && !successStrict) { + for (var i2 = 0; i2 < matchesSimpleLen; ++i2) + matchesSimple[i2] = substringIndex + i2; + } + var isSubstringBeginning = false; + if (isSubstring) { + isSubstringBeginning = prepared._nextBeginningIndexes[substringIndex - 1] === substringIndex; + } + { + if (successStrict) { + var matchesBest = matchesStrict; + var matchesBestLen = matchesStrictLen; + } else { + var matchesBest = matchesSimple; + var matchesBestLen = matchesSimpleLen; + } + var score = 0; + var extraMatchGroupCount = 0; + for (var i2 = 1; i2 < searchLen; ++i2) { + if (matchesBest[i2] - matchesBest[i2 - 1] !== 1) { + score -= matchesBest[i2]; + ++extraMatchGroupCount; + } + } + var unmatchedDistance = matchesBest[searchLen - 1] - matchesBest[0] - (searchLen - 1); + score -= (12 + unmatchedDistance) * extraMatchGroupCount; + if (matchesBest[0] !== 0) + score -= matchesBest[0] * matchesBest[0] * 0.2; + if (!successStrict) { + score *= 1e3; + } else { + var uniqueBeginningIndexes = 1; + for (var i2 = nextBeginningIndexes[0]; i2 < targetLen; i2 = nextBeginningIndexes[i2]) + ++uniqueBeginningIndexes; + if (uniqueBeginningIndexes > 24) + score *= (uniqueBeginningIndexes - 24) * 10; + } + if (isSubstring) + score /= 1 + searchLen * searchLen * 1; + if (isSubstringBeginning) + score /= 1 + searchLen * searchLen * 1; + score -= targetLen - searchLen; + prepared.score = score; + for (var i2 = 0; i2 < matchesBestLen; ++i2) + prepared._indexes[i2] = matchesBest[i2]; + prepared._indexes.len = matchesBestLen; + return prepared; + } + }; + var algorithmSpaces = (preparedSearch, target) => { + var seen_indexes = /* @__PURE__ */ new Set(); + var score = 0; + var result = NULL; + var first_seen_index_last_search = 0; + var searches = preparedSearch.spaceSearches; + for (var i2 = 0; i2 < searches.length; ++i2) { + var search = searches[i2]; + result = algorithm(search, target); + if (result === NULL) + return NULL; + score += result.score; + if (result._indexes[0] < first_seen_index_last_search) { + score -= first_seen_index_last_search - result._indexes[0]; + } + first_seen_index_last_search = result._indexes[0]; + for (var j2 = 0; j2 < result._indexes.len; ++j2) + seen_indexes.add(result._indexes[j2]); + } + var allowSpacesResult = algorithm(preparedSearch, target, true); + if (allowSpacesResult !== NULL && allowSpacesResult.score > score) { + return allowSpacesResult; + } + result.score = score; + var i2 = 0; + for (let index of seen_indexes) + result._indexes[i2++] = index; + result._indexes.len = i2; + return result; + }; + var prepareLowerInfo = (str) => { + var strLen = str.length; + var lower = str.toLowerCase(); + var lowerCodes = []; + var bitflags = 0; + var containsSpace = false; + for (var i2 = 0; i2 < strLen; ++i2) { + var lowerCode = lowerCodes[i2] = lower.charCodeAt(i2); + if (lowerCode === 32) { + containsSpace = true; + continue; + } + var bit = lowerCode >= 97 && lowerCode <= 122 ? lowerCode - 97 : lowerCode >= 48 && lowerCode <= 57 ? 26 : lowerCode <= 127 ? 30 : 31; + bitflags |= 1 << bit; + } + return { lowerCodes, bitflags, containsSpace, _lower: lower }; + }; + var prepareBeginningIndexes = (target) => { + var targetLen = target.length; + var beginningIndexes = []; + var beginningIndexesLen = 0; + var wasUpper = false; + var wasAlphanum = false; + for (var i2 = 0; i2 < targetLen; ++i2) { + var targetCode = target.charCodeAt(i2); + var isUpper = targetCode >= 65 && targetCode <= 90; + var isAlphanum = isUpper || targetCode >= 97 && targetCode <= 122 || targetCode >= 48 && targetCode <= 57; + var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum; + wasUpper = isUpper; + wasAlphanum = isAlphanum; + if (isBeginning) + beginningIndexes[beginningIndexesLen++] = i2; + } + return beginningIndexes; + }; + var prepareNextBeginningIndexes = (target) => { + var targetLen = target.length; + var beginningIndexes = prepareBeginningIndexes(target); + var nextBeginningIndexes = []; + var lastIsBeginning = beginningIndexes[0]; + var lastIsBeginningI = 0; + for (var i2 = 0; i2 < targetLen; ++i2) { + if (lastIsBeginning > i2) { + nextBeginningIndexes[i2] = lastIsBeginning; + } else { + lastIsBeginning = beginningIndexes[++lastIsBeginningI]; + nextBeginningIndexes[i2] = lastIsBeginning === void 0 ? targetLen : lastIsBeginning; + } + } + return nextBeginningIndexes; + }; + var cleanup = () => { + preparedCache.clear(); + preparedSearchCache.clear(); + matchesSimple = []; + matchesStrict = []; + }; + var preparedCache = /* @__PURE__ */ new Map(); + var preparedSearchCache = /* @__PURE__ */ new Map(); + var matchesSimple = []; + var matchesStrict = []; + var defaultScoreFn = (a2) => { + var max2 = INT_MIN; + var len = a2.length; + for (var i2 = 0; i2 < len; ++i2) { + var result = a2[i2]; + if (result === NULL) + continue; + var score = result.score; + if (score > max2) + max2 = score; + } + if (max2 === INT_MIN) + return NULL; + return max2; + }; + var getValue2 = (obj, prop) => { + var tmp = obj[prop]; + if (tmp !== void 0) + return tmp; + var segs = prop; + if (!Array.isArray(prop)) + segs = prop.split("."); + var len = segs.length; + var i2 = -1; + while (obj && ++i2 < len) + obj = obj[segs[i2]]; + return obj; + }; + var isObj = (x2) => { + return typeof x2 === "object"; + }; + var INT_MAX = Infinity; + var INT_MIN = -INT_MAX; + var noResults = []; + noResults.total = 0; + var NULL = null; + var fastpriorityqueue = (r2) => { + var e = [], o2 = 0, a2 = {}, v2 = (r3) => { + for (var a3 = 0, v3 = e[a3], c2 = 1; c2 < o2; ) { + var s2 = c2 + 1; + a3 = c2, s2 < o2 && e[s2].score < e[c2].score && (a3 = s2), e[a3 - 1 >> 1] = e[a3], c2 = 1 + (a3 << 1); + } + for (var f3 = a3 - 1 >> 1; a3 > 0 && v3.score < e[f3].score; f3 = (a3 = f3) - 1 >> 1) + e[a3] = e[f3]; + e[a3] = v3; + }; + return a2.add = (r3) => { + var a3 = o2; + e[o2++] = r3; + for (var v3 = a3 - 1 >> 1; a3 > 0 && r3.score < e[v3].score; v3 = (a3 = v3) - 1 >> 1) + e[a3] = e[v3]; + e[a3] = r3; + }, a2.poll = (r3) => { + if (0 !== o2) { + var a3 = e[0]; + return e[0] = e[--o2], v2(), a3; + } + }, a2.peek = (r3) => { + if (0 !== o2) + return e[0]; + }, a2.replaceTop = (r3) => { + e[0] = r3, v2(); + }, a2; + }; + var q2 = fastpriorityqueue(); + return { "single": single, "go": go, "highlight": highlight, "prepare": prepare, "indexes": indexes, "cleanup": cleanup }; + }); + } +}); + +// node_modules/papaparse/papaparse.min.js +var require_papaparse_min = __commonJS({ + "node_modules/papaparse/papaparse.min.js"(exports, module2) { + !function(e, t2) { + "function" == typeof define && define.amd ? define([], t2) : "object" == typeof module2 && "undefined" != typeof exports ? module2.exports = t2() : e.Papa = t2(); + }(exports, function s2() { + "use strict"; + var f3 = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== f3 ? f3 : {}; + var n2 = !f3.document && !!f3.postMessage, o2 = f3.IS_PAPA_WORKER || false, a2 = {}, u2 = 0, b2 = { parse: function(e, t2) { + var r3 = (t2 = t2 || {}).dynamicTyping || false; + J(r3) && (t2.dynamicTypingFunction = r3, r3 = {}); + if (t2.dynamicTyping = r3, t2.transform = !!J(t2.transform) && t2.transform, t2.worker && b2.WORKERS_SUPPORTED) { + var i2 = function() { + if (!b2.WORKERS_SUPPORTED) + return false; + var e2 = (r4 = f3.URL || f3.webkitURL || null, i3 = s2.toString(), b2.BLOB_URL || (b2.BLOB_URL = r4.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ", "(", i3, ")();"], { type: "text/javascript" })))), t3 = new f3.Worker(e2); + var r4, i3; + return t3.onmessage = _3, t3.id = u2++, a2[t3.id] = t3; + }(); + return i2.userStep = t2.step, i2.userChunk = t2.chunk, i2.userComplete = t2.complete, i2.userError = t2.error, t2.step = J(t2.step), t2.chunk = J(t2.chunk), t2.complete = J(t2.complete), t2.error = J(t2.error), delete t2.worker, void i2.postMessage({ input: e, config: t2, workerId: i2.id }); + } + var n3 = null; + b2.NODE_STREAM_INPUT, "string" == typeof e ? (e = function(e2) { + if (65279 === e2.charCodeAt(0)) + return e2.slice(1); + return e2; + }(e), n3 = t2.download ? new l2(t2) : new p2(t2)) : true === e.readable && J(e.read) && J(e.on) ? n3 = new g2(t2) : (f3.File && e instanceof File || e instanceof Object) && (n3 = new c2(t2)); + return n3.stream(e); + }, unparse: function(e, t2) { + var n3 = false, _4 = true, m3 = ",", y3 = "\r\n", s3 = '"', a3 = s3 + s3, r3 = false, i2 = null, o3 = false; + !function() { + if ("object" != typeof t2) + return; + "string" != typeof t2.delimiter || b2.BAD_DELIMITERS.filter(function(e2) { + return -1 !== t2.delimiter.indexOf(e2); + }).length || (m3 = t2.delimiter); + ("boolean" == typeof t2.quotes || "function" == typeof t2.quotes || Array.isArray(t2.quotes)) && (n3 = t2.quotes); + "boolean" != typeof t2.skipEmptyLines && "string" != typeof t2.skipEmptyLines || (r3 = t2.skipEmptyLines); + "string" == typeof t2.newline && (y3 = t2.newline); + "string" == typeof t2.quoteChar && (s3 = t2.quoteChar); + "boolean" == typeof t2.header && (_4 = t2.header); + if (Array.isArray(t2.columns)) { + if (0 === t2.columns.length) + throw new Error("Option columns is empty"); + i2 = t2.columns; + } + void 0 !== t2.escapeChar && (a3 = t2.escapeChar + s3); + ("boolean" == typeof t2.escapeFormulae || t2.escapeFormulae instanceof RegExp) && (o3 = t2.escapeFormulae instanceof RegExp ? t2.escapeFormulae : /^[=+\-@\t\r].*$/); + }(); + var u3 = new RegExp(Q2(s3), "g"); + "string" == typeof e && (e = JSON.parse(e)); + if (Array.isArray(e)) { + if (!e.length || Array.isArray(e[0])) + return h3(null, e, r3); + if ("object" == typeof e[0]) + return h3(i2 || Object.keys(e[0]), e, r3); + } else if ("object" == typeof e) + return "string" == typeof e.data && (e.data = JSON.parse(e.data)), Array.isArray(e.data) && (e.fields || (e.fields = e.meta && e.meta.fields || i2), e.fields || (e.fields = Array.isArray(e.data[0]) ? e.fields : "object" == typeof e.data[0] ? Object.keys(e.data[0]) : []), Array.isArray(e.data[0]) || "object" == typeof e.data[0] || (e.data = [e.data])), h3(e.fields || [], e.data || [], r3); + throw new Error("Unable to serialize unrecognized input"); + function h3(e2, t3, r4) { + var i3 = ""; + "string" == typeof e2 && (e2 = JSON.parse(e2)), "string" == typeof t3 && (t3 = JSON.parse(t3)); + var n4 = Array.isArray(e2) && 0 < e2.length, s4 = !Array.isArray(t3[0]); + if (n4 && _4) { + for (var a4 = 0; a4 < e2.length; a4++) + 0 < a4 && (i3 += m3), i3 += v3(e2[a4], a4); + 0 < t3.length && (i3 += y3); + } + for (var o4 = 0; o4 < t3.length; o4++) { + var u4 = n4 ? e2.length : t3[o4].length, h4 = false, f4 = n4 ? 0 === Object.keys(t3[o4]).length : 0 === t3[o4].length; + if (r4 && !n4 && (h4 = "greedy" === r4 ? "" === t3[o4].join("").trim() : 1 === t3[o4].length && 0 === t3[o4][0].length), "greedy" === r4 && n4) { + for (var d3 = [], l3 = 0; l3 < u4; l3++) { + var c3 = s4 ? e2[l3] : l3; + d3.push(t3[o4][c3]); + } + h4 = "" === d3.join("").trim(); + } + if (!h4) { + for (var p3 = 0; p3 < u4; p3++) { + 0 < p3 && !f4 && (i3 += m3); + var g3 = n4 && s4 ? e2[p3] : p3; + i3 += v3(t3[o4][g3], p3); + } + o4 < t3.length - 1 && (!r4 || 0 < u4 && !f4) && (i3 += y3); + } + } + return i3; + } + function v3(e2, t3) { + if (null == e2) + return ""; + if (e2.constructor === Date) + return JSON.stringify(e2).slice(1, 25); + var r4 = false; + o3 && "string" == typeof e2 && o3.test(e2) && (e2 = "'" + e2, r4 = true); + var i3 = e2.toString().replace(u3, a3); + return (r4 = r4 || true === n3 || "function" == typeof n3 && n3(e2, t3) || Array.isArray(n3) && n3[t3] || function(e3, t4) { + for (var r5 = 0; r5 < t4.length; r5++) + if (-1 < e3.indexOf(t4[r5])) + return true; return false; + }(i3, b2.BAD_DELIMITERS) || -1 < i3.indexOf(m3) || " " === i3.charAt(0) || " " === i3.charAt(i3.length - 1)) ? s3 + i3 + s3 : i3; + } + } }; + if (b2.RECORD_SEP = String.fromCharCode(30), b2.UNIT_SEP = String.fromCharCode(31), b2.BYTE_ORDER_MARK = "\uFEFF", b2.BAD_DELIMITERS = ["\r", "\n", '"', b2.BYTE_ORDER_MARK], b2.WORKERS_SUPPORTED = !n2 && !!f3.Worker, b2.NODE_STREAM_INPUT = 1, b2.LocalChunkSize = 10485760, b2.RemoteChunkSize = 5242880, b2.DefaultDelimiter = ",", b2.Parser = E2, b2.ParserHandle = r2, b2.NetworkStreamer = l2, b2.FileStreamer = c2, b2.StringStreamer = p2, b2.ReadableStreamStreamer = g2, f3.jQuery) { + var d2 = f3.jQuery; + d2.fn.parse = function(o3) { + var r3 = o3.config || {}, u3 = []; + return this.each(function(e2) { + if (!("INPUT" === d2(this).prop("tagName").toUpperCase() && "file" === d2(this).attr("type").toLowerCase() && f3.FileReader) || !this.files || 0 === this.files.length) + return true; + for (var t2 = 0; t2 < this.files.length; t2++) + u3.push({ file: this.files[t2], inputElem: this, instanceConfig: d2.extend({}, r3) }); + }), e(), this; + function e() { + if (0 !== u3.length) { + var e2, t2, r4, i2, n3 = u3[0]; + if (J(o3.before)) { + var s3 = o3.before(n3.file, n3.inputElem); + if ("object" == typeof s3) { + if ("abort" === s3.action) + return e2 = "AbortError", t2 = n3.file, r4 = n3.inputElem, i2 = s3.reason, void (J(o3.error) && o3.error({ name: e2 }, t2, r4, i2)); + if ("skip" === s3.action) + return void h3(); + "object" == typeof s3.config && (n3.instanceConfig = d2.extend(n3.instanceConfig, s3.config)); + } else if ("skip" === s3) + return void h3(); + } + var a3 = n3.instanceConfig.complete; + n3.instanceConfig.complete = function(e3) { + J(a3) && a3(e3, n3.file, n3.inputElem), h3(); + }, b2.parse(n3.file, n3.instanceConfig); + } else + J(o3.complete) && o3.complete(); + } + function h3() { + u3.splice(0, 1), e(); + } + }; + } + function h2(e) { + this._handle = null, this._finished = false, this._completed = false, this._halted = false, this._input = null, this._baseIndex = 0, this._partialLine = "", this._rowCount = 0, this._start = 0, this._nextChunk = null, this.isFirstChunk = true, this._completeResults = { data: [], errors: [], meta: {} }, function(e2) { + var t2 = w2(e2); + t2.chunkSize = parseInt(t2.chunkSize), e2.step || e2.chunk || (t2.chunkSize = null); + this._handle = new r2(t2), (this._handle.streamer = this)._config = t2; + }.call(this, e), this.parseChunk = function(e2, t2) { + if (this.isFirstChunk && J(this._config.beforeFirstChunk)) { + var r3 = this._config.beforeFirstChunk(e2); + void 0 !== r3 && (e2 = r3); + } + this.isFirstChunk = false, this._halted = false; + var i2 = this._partialLine + e2; + this._partialLine = ""; + var n3 = this._handle.parse(i2, this._baseIndex, !this._finished); + if (!this._handle.paused() && !this._handle.aborted()) { + var s3 = n3.meta.cursor; + this._finished || (this._partialLine = i2.substring(s3 - this._baseIndex), this._baseIndex = s3), n3 && n3.data && (this._rowCount += n3.data.length); + var a3 = this._finished || this._config.preview && this._rowCount >= this._config.preview; + if (o2) + f3.postMessage({ results: n3, workerId: b2.WORKER_ID, finished: a3 }); + else if (J(this._config.chunk) && !t2) { + if (this._config.chunk(n3, this._handle), this._handle.paused() || this._handle.aborted()) + return void (this._halted = true); + n3 = void 0, this._completeResults = void 0; + } + return this._config.step || this._config.chunk || (this._completeResults.data = this._completeResults.data.concat(n3.data), this._completeResults.errors = this._completeResults.errors.concat(n3.errors), this._completeResults.meta = n3.meta), this._completed || !a3 || !J(this._config.complete) || n3 && n3.meta.aborted || (this._config.complete(this._completeResults, this._input), this._completed = true), a3 || n3 && n3.meta.paused || this._nextChunk(), n3; + } + this._halted = true; + }, this._sendError = function(e2) { + J(this._config.error) ? this._config.error(e2) : o2 && this._config.error && f3.postMessage({ workerId: b2.WORKER_ID, error: e2, finished: false }); + }; + } + function l2(e) { + var i2; + (e = e || {}).chunkSize || (e.chunkSize = b2.RemoteChunkSize), h2.call(this, e), this._nextChunk = n2 ? function() { + this._readChunk(), this._chunkLoaded(); + } : function() { + this._readChunk(); + }, this.stream = function(e2) { + this._input = e2, this._nextChunk(); + }, this._readChunk = function() { + if (this._finished) + this._chunkLoaded(); + else { + if (i2 = new XMLHttpRequest(), this._config.withCredentials && (i2.withCredentials = this._config.withCredentials), n2 || (i2.onload = v2(this._chunkLoaded, this), i2.onerror = v2(this._chunkError, this)), i2.open(this._config.downloadRequestBody ? "POST" : "GET", this._input, !n2), this._config.downloadRequestHeaders) { + var e2 = this._config.downloadRequestHeaders; + for (var t2 in e2) + i2.setRequestHeader(t2, e2[t2]); + } + if (this._config.chunkSize) { + var r3 = this._start + this._config.chunkSize - 1; + i2.setRequestHeader("Range", "bytes=" + this._start + "-" + r3); + } + try { + i2.send(this._config.downloadRequestBody); + } catch (e3) { + this._chunkError(e3.message); + } + n2 && 0 === i2.status && this._chunkError(); + } + }, this._chunkLoaded = function() { + 4 === i2.readyState && (i2.status < 200 || 400 <= i2.status ? this._chunkError() : (this._start += this._config.chunkSize ? this._config.chunkSize : i2.responseText.length, this._finished = !this._config.chunkSize || this._start >= function(e2) { + var t2 = e2.getResponseHeader("Content-Range"); + if (null === t2) + return -1; + return parseInt(t2.substring(t2.lastIndexOf("/") + 1)); + }(i2), this.parseChunk(i2.responseText))); + }, this._chunkError = function(e2) { + var t2 = i2.statusText || e2; + this._sendError(new Error(t2)); + }; + } + function c2(e) { + var i2, n3; + (e = e || {}).chunkSize || (e.chunkSize = b2.LocalChunkSize), h2.call(this, e); + var s3 = "undefined" != typeof FileReader; + this.stream = function(e2) { + this._input = e2, n3 = e2.slice || e2.webkitSlice || e2.mozSlice, s3 ? ((i2 = new FileReader()).onload = v2(this._chunkLoaded, this), i2.onerror = v2(this._chunkError, this)) : i2 = new FileReaderSync(), this._nextChunk(); + }, this._nextChunk = function() { + this._finished || this._config.preview && !(this._rowCount < this._config.preview) || this._readChunk(); + }, this._readChunk = function() { + var e2 = this._input; + if (this._config.chunkSize) { + var t2 = Math.min(this._start + this._config.chunkSize, this._input.size); + e2 = n3.call(e2, this._start, t2); + } + var r3 = i2.readAsText(e2, this._config.encoding); + s3 || this._chunkLoaded({ target: { result: r3 } }); + }, this._chunkLoaded = function(e2) { + this._start += this._config.chunkSize, this._finished = !this._config.chunkSize || this._start >= this._input.size, this.parseChunk(e2.target.result); + }, this._chunkError = function() { + this._sendError(i2.error); + }; + } + function p2(e) { + var r3; + h2.call(this, e = e || {}), this.stream = function(e2) { + return r3 = e2, this._nextChunk(); + }, this._nextChunk = function() { + if (!this._finished) { + var e2, t2 = this._config.chunkSize; + return t2 ? (e2 = r3.substring(0, t2), r3 = r3.substring(t2)) : (e2 = r3, r3 = ""), this._finished = !r3, this.parseChunk(e2); + } + }; + } + function g2(e) { + h2.call(this, e = e || {}); + var t2 = [], r3 = true, i2 = false; + this.pause = function() { + h2.prototype.pause.apply(this, arguments), this._input.pause(); + }, this.resume = function() { + h2.prototype.resume.apply(this, arguments), this._input.resume(); + }, this.stream = function(e2) { + this._input = e2, this._input.on("data", this._streamData), this._input.on("end", this._streamEnd), this._input.on("error", this._streamError); + }, this._checkIsFinished = function() { + i2 && 1 === t2.length && (this._finished = true); + }, this._nextChunk = function() { + this._checkIsFinished(), t2.length ? this.parseChunk(t2.shift()) : r3 = true; + }, this._streamData = v2(function(e2) { + try { + t2.push("string" == typeof e2 ? e2 : e2.toString(this._config.encoding)), r3 && (r3 = false, this._checkIsFinished(), this.parseChunk(t2.shift())); + } catch (e3) { + this._streamError(e3); + } + }, this), this._streamError = v2(function(e2) { + this._streamCleanUp(), this._sendError(e2); + }, this), this._streamEnd = v2(function() { + this._streamCleanUp(), i2 = true, this._streamData(""); + }, this), this._streamCleanUp = v2(function() { + this._input.removeListener("data", this._streamData), this._input.removeListener("end", this._streamEnd), this._input.removeListener("error", this._streamError); + }, this); + } + function r2(m3) { + var a3, o3, u3, i2 = Math.pow(2, 53), n3 = -i2, s3 = /^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/, h3 = /^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/, t2 = this, r3 = 0, f4 = 0, d3 = false, e = false, l3 = [], c3 = { data: [], errors: [], meta: {} }; + if (J(m3.step)) { + var p3 = m3.step; + m3.step = function(e2) { + if (c3 = e2, _4()) + g3(); + else { + if (g3(), 0 === c3.data.length) + return; + r3 += e2.data.length, m3.preview && r3 > m3.preview ? o3.abort() : (c3.data = c3.data[0], p3(c3, t2)); + } + }; + } + function y3(e2) { + return "greedy" === m3.skipEmptyLines ? "" === e2.join("").trim() : 1 === e2.length && 0 === e2[0].length; + } + function g3() { + return c3 && u3 && (k2("Delimiter", "UndetectableDelimiter", "Unable to auto-detect delimiting character; defaulted to '" + b2.DefaultDelimiter + "'"), u3 = false), m3.skipEmptyLines && (c3.data = c3.data.filter(function(e2) { + return !y3(e2); + })), _4() && function() { + if (!c3) + return; + function e2(e3, t4) { + J(m3.transformHeader) && (e3 = m3.transformHeader(e3, t4)), l3.push(e3); + } + if (Array.isArray(c3.data[0])) { + for (var t3 = 0; _4() && t3 < c3.data.length; t3++) + c3.data[t3].forEach(e2); + c3.data.splice(0, 1); + } else + c3.data.forEach(e2); + }(), function() { + if (!c3 || !m3.header && !m3.dynamicTyping && !m3.transform) + return c3; + function e2(e3, t4) { + var r4, i3 = m3.header ? {} : []; + for (r4 = 0; r4 < e3.length; r4++) { + var n4 = r4, s4 = e3[r4]; + m3.header && (n4 = r4 >= l3.length ? "__parsed_extra" : l3[r4]), m3.transform && (s4 = m3.transform(s4, n4)), s4 = v3(n4, s4), "__parsed_extra" === n4 ? (i3[n4] = i3[n4] || [], i3[n4].push(s4)) : i3[n4] = s4; + } + return m3.header && (r4 > l3.length ? k2("FieldMismatch", "TooManyFields", "Too many fields: expected " + l3.length + " fields but parsed " + r4, f4 + t4) : r4 < l3.length && k2("FieldMismatch", "TooFewFields", "Too few fields: expected " + l3.length + " fields but parsed " + r4, f4 + t4)), i3; + } + var t3 = 1; + !c3.data.length || Array.isArray(c3.data[0]) ? (c3.data = c3.data.map(e2), t3 = c3.data.length) : c3.data = e2(c3.data, 0); + m3.header && c3.meta && (c3.meta.fields = l3); + return f4 += t3, c3; + }(); + } + function _4() { + return m3.header && 0 === l3.length; + } + function v3(e2, t3) { + return r4 = e2, m3.dynamicTypingFunction && void 0 === m3.dynamicTyping[r4] && (m3.dynamicTyping[r4] = m3.dynamicTypingFunction(r4)), true === (m3.dynamicTyping[r4] || m3.dynamicTyping) ? "true" === t3 || "TRUE" === t3 || "false" !== t3 && "FALSE" !== t3 && (function(e3) { + if (s3.test(e3)) { + var t4 = parseFloat(e3); + if (n3 < t4 && t4 < i2) + return true; + } + return false; + }(t3) ? parseFloat(t3) : h3.test(t3) ? new Date(t3) : "" === t3 ? null : t3) : t3; + var r4; + } + function k2(e2, t3, r4, i3) { + var n4 = { type: e2, code: t3, message: r4 }; + void 0 !== i3 && (n4.row = i3), c3.errors.push(n4); + } + this.parse = function(e2, t3, r4) { + var i3 = m3.quoteChar || '"'; + if (m3.newline || (m3.newline = function(e3, t4) { + e3 = e3.substring(0, 1048576); + var r5 = new RegExp(Q2(t4) + "([^]*?)" + Q2(t4), "gm"), i4 = (e3 = e3.replace(r5, "")).split("\r"), n5 = e3.split("\n"), s5 = 1 < n5.length && n5[0].length < i4[0].length; + if (1 === i4.length || s5) + return "\n"; + for (var a4 = 0, o4 = 0; o4 < i4.length; o4++) + "\n" === i4[o4][0] && a4++; + return a4 >= i4.length / 2 ? "\r\n" : "\r"; + }(e2, i3)), u3 = false, m3.delimiter) + J(m3.delimiter) && (m3.delimiter = m3.delimiter(e2), c3.meta.delimiter = m3.delimiter); + else { + var n4 = function(e3, t4, r5, i4, n5) { + var s5, a4, o4, u4; + n5 = n5 || [",", " ", "|", ";", b2.RECORD_SEP, b2.UNIT_SEP]; + for (var h4 = 0; h4 < n5.length; h4++) { + var f5 = n5[h4], d4 = 0, l4 = 0, c4 = 0; + o4 = void 0; + for (var p4 = new E2({ comments: i4, delimiter: f5, newline: t4, preview: 10 }).parse(e3), g4 = 0; g4 < p4.data.length; g4++) + if (r5 && y3(p4.data[g4])) + c4++; + else { + var _5 = p4.data[g4].length; + l4 += _5, void 0 !== o4 ? 0 < _5 && (d4 += Math.abs(_5 - o4), o4 = _5) : o4 = _5; + } + 0 < p4.data.length && (l4 /= p4.data.length - c4), (void 0 === a4 || d4 <= a4) && (void 0 === u4 || u4 < l4) && 1.99 < l4 && (a4 = d4, s5 = f5, u4 = l4); + } + return { successful: !!(m3.delimiter = s5), bestDelimiter: s5 }; + }(e2, m3.newline, m3.skipEmptyLines, m3.comments, m3.delimitersToGuess); + n4.successful ? m3.delimiter = n4.bestDelimiter : (u3 = true, m3.delimiter = b2.DefaultDelimiter), c3.meta.delimiter = m3.delimiter; + } + var s4 = w2(m3); + return m3.preview && m3.header && s4.preview++, a3 = e2, o3 = new E2(s4), c3 = o3.parse(a3, t3, r4), g3(), d3 ? { meta: { paused: true } } : c3 || { meta: { paused: false } }; + }, this.paused = function() { + return d3; + }, this.pause = function() { + d3 = true, o3.abort(), a3 = J(m3.chunk) ? "" : a3.substring(o3.getCharIndex()); + }, this.resume = function() { + t2.streamer._halted ? (d3 = false, t2.streamer.parseChunk(a3, true)) : setTimeout(t2.resume, 3); + }, this.aborted = function() { + return e; + }, this.abort = function() { + e = true, o3.abort(), c3.meta.aborted = true, J(m3.complete) && m3.complete(c3), a3 = ""; + }; + } + function Q2(e) { + return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + } + function E2(j2) { + var z2, M2 = (j2 = j2 || {}).delimiter, P2 = j2.newline, U2 = j2.comments, q2 = j2.step, N2 = j2.preview, B2 = j2.fastMode, K = z2 = void 0 === j2.quoteChar || null === j2.quoteChar ? '"' : j2.quoteChar; + if (void 0 !== j2.escapeChar && (K = j2.escapeChar), ("string" != typeof M2 || -1 < b2.BAD_DELIMITERS.indexOf(M2)) && (M2 = ","), U2 === M2) + throw new Error("Comment character same as delimiter"); + true === U2 ? U2 = "#" : ("string" != typeof U2 || -1 < b2.BAD_DELIMITERS.indexOf(U2)) && (U2 = false), "\n" !== P2 && "\r" !== P2 && "\r\n" !== P2 && (P2 = "\n"); + var W2 = 0, H2 = false; + this.parse = function(i2, t2, r3) { + if ("string" != typeof i2) + throw new Error("Input must be a string"); + var n3 = i2.length, e = M2.length, s3 = P2.length, a3 = U2.length, o3 = J(q2), u3 = [], h3 = [], f4 = [], d3 = W2 = 0; + if (!i2) + return L2(); + if (j2.header && !t2) { + var l3 = i2.split(P2)[0].split(M2), c3 = [], p3 = {}, g3 = false; + for (var _4 in l3) { + var m3 = l3[_4]; + J(j2.transformHeader) && (m3 = j2.transformHeader(m3, _4)); + var y3 = m3, v3 = p3[m3] || 0; + for (0 < v3 && (g3 = true, y3 = m3 + "_" + v3), p3[m3] = v3 + 1; c3.includes(y3); ) + y3 = y3 + "_" + v3; + c3.push(y3); + } + if (g3) { + var k2 = i2.split(P2); + k2[0] = c3.join(M2), i2 = k2.join(P2); + } + } + if (B2 || false !== B2 && -1 === i2.indexOf(z2)) { + for (var b3 = i2.split(P2), E3 = 0; E3 < b3.length; E3++) { + if (f4 = b3[E3], W2 += f4.length, E3 !== b3.length - 1) + W2 += P2.length; + else if (r3) + return L2(); + if (!U2 || f4.substring(0, a3) !== U2) { + if (o3) { + if (u3 = [], I2(f4.split(M2)), F2(), H2) + return L2(); + } else + I2(f4.split(M2)); + if (N2 && N2 <= E3) + return u3 = u3.slice(0, N2), L2(true); + } + } + return L2(); + } + for (var w3 = i2.indexOf(M2, W2), R2 = i2.indexOf(P2, W2), C = new RegExp(Q2(K) + Q2(z2), "g"), S2 = i2.indexOf(z2, W2); ; ) + if (i2[W2] !== z2) + if (U2 && 0 === f4.length && i2.substring(W2, W2 + a3) === U2) { + if (-1 === R2) + return L2(); + W2 = R2 + s3, R2 = i2.indexOf(P2, W2), w3 = i2.indexOf(M2, W2); + } else if (-1 !== w3 && (w3 < R2 || -1 === R2)) + f4.push(i2.substring(W2, w3)), W2 = w3 + e, w3 = i2.indexOf(M2, W2); + else { + if (-1 === R2) + break; + if (f4.push(i2.substring(W2, R2)), D2(R2 + s3), o3 && (F2(), H2)) + return L2(); + if (N2 && u3.length >= N2) + return L2(true); + } + else + for (S2 = W2, W2++; ; ) { + if (-1 === (S2 = i2.indexOf(z2, S2 + 1))) + return r3 || h3.push({ type: "Quotes", code: "MissingQuotes", message: "Quoted field unterminated", row: u3.length, index: W2 }), T(); + if (S2 === n3 - 1) + return T(i2.substring(W2, S2).replace(C, z2)); + if (z2 !== K || i2[S2 + 1] !== K) { + if (z2 === K || 0 === S2 || i2[S2 - 1] !== K) { + -1 !== w3 && w3 < S2 + 1 && (w3 = i2.indexOf(M2, S2 + 1)), -1 !== R2 && R2 < S2 + 1 && (R2 = i2.indexOf(P2, S2 + 1)); + var O2 = A2(-1 === R2 ? w3 : Math.min(w3, R2)); + if (i2.substr(S2 + 1 + O2, e) === M2) { + f4.push(i2.substring(W2, S2).replace(C, z2)), i2[W2 = S2 + 1 + O2 + e] !== z2 && (S2 = i2.indexOf(z2, W2)), w3 = i2.indexOf(M2, W2), R2 = i2.indexOf(P2, W2); + break; + } + var x2 = A2(R2); + if (i2.substring(S2 + 1 + x2, S2 + 1 + x2 + s3) === P2) { + if (f4.push(i2.substring(W2, S2).replace(C, z2)), D2(S2 + 1 + x2 + s3), w3 = i2.indexOf(M2, W2), S2 = i2.indexOf(z2, W2), o3 && (F2(), H2)) + return L2(); + if (N2 && u3.length >= N2) + return L2(true); + break; + } + h3.push({ type: "Quotes", code: "InvalidQuotes", message: "Trailing quote on quoted field is malformed", row: u3.length, index: W2 }), S2++; + } + } else + S2++; + } + return T(); + function I2(e2) { + u3.push(e2), d3 = W2; + } + function A2(e2) { + var t3 = 0; + if (-1 !== e2) { + var r4 = i2.substring(S2 + 1, e2); + r4 && "" === r4.trim() && (t3 = r4.length); + } + return t3; + } + function T(e2) { + return r3 || (void 0 === e2 && (e2 = i2.substring(W2)), f4.push(e2), W2 = n3, I2(f4), o3 && F2()), L2(); + } + function D2(e2) { + W2 = e2, I2(f4), f4 = [], R2 = i2.indexOf(P2, W2); + } + function L2(e2) { + return { data: u3, errors: h3, meta: { delimiter: M2, linebreak: P2, aborted: H2, truncated: !!e2, cursor: d3 + (t2 || 0) } }; + } + function F2() { + q2(L2()), u3 = [], h3 = []; + } + }, this.abort = function() { + H2 = true; + }, this.getCharIndex = function() { + return W2; + }; + } + function _3(e) { + var t2 = e.data, r3 = a2[t2.workerId], i2 = false; + if (t2.error) + r3.userError(t2.error, t2.file); + else if (t2.results && t2.results.data) { + var n3 = { abort: function() { + i2 = true, m2(t2.workerId, { data: [], errors: [], meta: { aborted: true } }); + }, pause: y2, resume: y2 }; + if (J(r3.userStep)) { + for (var s3 = 0; s3 < t2.results.data.length && (r3.userStep({ data: t2.results.data[s3], errors: t2.results.errors, meta: t2.results.meta }, n3), !i2); s3++) + ; + delete t2.results; + } else + J(r3.userChunk) && (r3.userChunk(t2.results, n3, t2.file), delete t2.results); + } + t2.finished && !i2 && m2(t2.workerId, t2.results); + } + function m2(e, t2) { + var r3 = a2[e]; + J(r3.userComplete) && r3.userComplete(t2), r3.terminate(), delete a2[e]; + } + function y2() { + throw new Error("Not implemented."); + } + function w2(e) { + if ("object" != typeof e || null === e) + return e; + var t2 = Array.isArray(e) ? [] : {}; + for (var r3 in e) + t2[r3] = w2(e[r3]); + return t2; + } + function v2(e, t2) { + return function() { + e.apply(t2, arguments); + }; + } + function J(e) { + return "function" == typeof e; + } + return o2 && (f3.onmessage = function(e) { + var t2 = e.data; + void 0 === b2.WORKER_ID && t2 && (b2.WORKER_ID = t2.workerId); + if ("string" == typeof t2.input) + f3.postMessage({ workerId: b2.WORKER_ID, results: b2.parse(t2.input, t2.config), finished: true }); + else if (f3.File && t2.input instanceof File || t2.input instanceof Object) { + var r3 = b2.parse(t2.input, t2.config); + r3 && f3.postMessage({ workerId: b2.WORKER_ID, results: r3, finished: true }); + } + }), (l2.prototype = Object.create(h2.prototype)).constructor = l2, (c2.prototype = Object.create(h2.prototype)).constructor = c2, (p2.prototype = Object.create(p2.prototype)).constructor = p2, (g2.prototype = Object.create(h2.prototype)).constructor = g2, b2; + }); + } +}); + +// node_modules/lodash/lodash.js +var require_lodash = __commonJS({ + "node_modules/lodash/lodash.js"(exports, module2) { + (function() { + var undefined2; + var VERSION = "4.17.21"; + var LARGE_ARRAY_SIZE = 200; + var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`"; + var HASH_UNDEFINED = "__lodash_hash_undefined__"; + var MAX_MEMOIZE_SIZE = 500; + var PLACEHOLDER = "__lodash_placeholder__"; + var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4; + var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; + var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512; + var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "..."; + var HOT_COUNT = 800, HOT_SPAN = 16; + var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3; + var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0; + var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + var wrapFlags = [ + ["ary", WRAP_ARY_FLAG], + ["bind", WRAP_BIND_FLAG], + ["bindKey", WRAP_BIND_KEY_FLAG], + ["curry", WRAP_CURRY_FLAG], + ["curryRight", WRAP_CURRY_RIGHT_FLAG], + ["flip", WRAP_FLIP_FLAG], + ["partial", WRAP_PARTIAL_FLAG], + ["partialRight", WRAP_PARTIAL_RIGHT_FLAG], + ["rearg", WRAP_REARG_FLAG] + ]; + var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]"; + var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]"; + var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g; + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source); + var reTrimStart = /^\s+/; + var reWhitespace = /\s/; + var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /; + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; + var reEscapeChar = /\\(\\)?/g; + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + var reFlags = /\w*$/; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var reIsOctal = /^0o[0-7]+$/i; + var reIsUint = /^(?:0|[1-9]\d*)$/; + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + var reNoMatch = /($^)/; + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d"; + var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")"; + var reApos = RegExp(rsApos, "g"); + var reComboMark = RegExp(rsCombo, "g"); + var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"); + var reUnicodeWord = RegExp([ + rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")", + rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")", + rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower, + rsUpper + "+" + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji + ].join("|"), "g"); + var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]"); + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + var contextProps = [ + "Array", + "Buffer", + "DataView", + "Date", + "Error", + "Float32Array", + "Float64Array", + "Function", + "Int8Array", + "Int16Array", + "Int32Array", + "Map", + "Math", + "Object", + "Promise", + "RegExp", + "Set", + "String", + "Symbol", + "TypeError", + "Uint8Array", + "Uint8ClampedArray", + "Uint16Array", + "Uint32Array", + "WeakMap", + "_", + "clearTimeout", + "isFinite", + "parseInt", + "setTimeout" + ]; + var templateCounter = -1; + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false; + var deburredLetters = { + "\xC0": "A", + "\xC1": "A", + "\xC2": "A", + "\xC3": "A", + "\xC4": "A", + "\xC5": "A", + "\xE0": "a", + "\xE1": "a", + "\xE2": "a", + "\xE3": "a", + "\xE4": "a", + "\xE5": "a", + "\xC7": "C", + "\xE7": "c", + "\xD0": "D", + "\xF0": "d", + "\xC8": "E", + "\xC9": "E", + "\xCA": "E", + "\xCB": "E", + "\xE8": "e", + "\xE9": "e", + "\xEA": "e", + "\xEB": "e", + "\xCC": "I", + "\xCD": "I", + "\xCE": "I", + "\xCF": "I", + "\xEC": "i", + "\xED": "i", + "\xEE": "i", + "\xEF": "i", + "\xD1": "N", + "\xF1": "n", + "\xD2": "O", + "\xD3": "O", + "\xD4": "O", + "\xD5": "O", + "\xD6": "O", + "\xD8": "O", + "\xF2": "o", + "\xF3": "o", + "\xF4": "o", + "\xF5": "o", + "\xF6": "o", + "\xF8": "o", + "\xD9": "U", + "\xDA": "U", + "\xDB": "U", + "\xDC": "U", + "\xF9": "u", + "\xFA": "u", + "\xFB": "u", + "\xFC": "u", + "\xDD": "Y", + "\xFD": "y", + "\xFF": "y", + "\xC6": "Ae", + "\xE6": "ae", + "\xDE": "Th", + "\xFE": "th", + "\xDF": "ss", + "\u0100": "A", + "\u0102": "A", + "\u0104": "A", + "\u0101": "a", + "\u0103": "a", + "\u0105": "a", + "\u0106": "C", + "\u0108": "C", + "\u010A": "C", + "\u010C": "C", + "\u0107": "c", + "\u0109": "c", + "\u010B": "c", + "\u010D": "c", + "\u010E": "D", + "\u0110": "D", + "\u010F": "d", + "\u0111": "d", + "\u0112": "E", + "\u0114": "E", + "\u0116": "E", + "\u0118": "E", + "\u011A": "E", + "\u0113": "e", + "\u0115": "e", + "\u0117": "e", + "\u0119": "e", + "\u011B": "e", + "\u011C": "G", + "\u011E": "G", + "\u0120": "G", + "\u0122": "G", + "\u011D": "g", + "\u011F": "g", + "\u0121": "g", + "\u0123": "g", + "\u0124": "H", + "\u0126": "H", + "\u0125": "h", + "\u0127": "h", + "\u0128": "I", + "\u012A": "I", + "\u012C": "I", + "\u012E": "I", + "\u0130": "I", + "\u0129": "i", + "\u012B": "i", + "\u012D": "i", + "\u012F": "i", + "\u0131": "i", + "\u0134": "J", + "\u0135": "j", + "\u0136": "K", + "\u0137": "k", + "\u0138": "k", + "\u0139": "L", + "\u013B": "L", + "\u013D": "L", + "\u013F": "L", + "\u0141": "L", + "\u013A": "l", + "\u013C": "l", + "\u013E": "l", + "\u0140": "l", + "\u0142": "l", + "\u0143": "N", + "\u0145": "N", + "\u0147": "N", + "\u014A": "N", + "\u0144": "n", + "\u0146": "n", + "\u0148": "n", + "\u014B": "n", + "\u014C": "O", + "\u014E": "O", + "\u0150": "O", + "\u014D": "o", + "\u014F": "o", + "\u0151": "o", + "\u0154": "R", + "\u0156": "R", + "\u0158": "R", + "\u0155": "r", + "\u0157": "r", + "\u0159": "r", + "\u015A": "S", + "\u015C": "S", + "\u015E": "S", + "\u0160": "S", + "\u015B": "s", + "\u015D": "s", + "\u015F": "s", + "\u0161": "s", + "\u0162": "T", + "\u0164": "T", + "\u0166": "T", + "\u0163": "t", + "\u0165": "t", + "\u0167": "t", + "\u0168": "U", + "\u016A": "U", + "\u016C": "U", + "\u016E": "U", + "\u0170": "U", + "\u0172": "U", + "\u0169": "u", + "\u016B": "u", + "\u016D": "u", + "\u016F": "u", + "\u0171": "u", + "\u0173": "u", + "\u0174": "W", + "\u0175": "w", + "\u0176": "Y", + "\u0177": "y", + "\u0178": "Y", + "\u0179": "Z", + "\u017B": "Z", + "\u017D": "Z", + "\u017A": "z", + "\u017C": "z", + "\u017E": "z", + "\u0132": "IJ", + "\u0133": "ij", + "\u0152": "Oe", + "\u0153": "oe", + "\u0149": "'n", + "\u017F": "s" + }; + var htmlEscapes = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" + }; + var htmlUnescapes = { + "&": "&", + "<": "<", + ">": ">", + """: '"', + "'": "'" + }; + var stringEscapes = { + "\\": "\\", + "'": "'", + "\n": "n", + "\r": "r", + "\u2028": "u2028", + "\u2029": "u2029" + }; + var freeParseFloat = parseFloat, freeParseInt = parseInt; + var freeGlobal = typeof global == "object" && global && global.Object === Object && global; + var freeSelf = typeof self == "object" && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function("return this")(); + var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; + var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2; + var moduleExports = freeModule && freeModule.exports === freeExports; + var freeProcess = moduleExports && freeGlobal.process; + var nodeUtil = function() { + try { + var types = freeModule && freeModule.require && freeModule.require("util").types; + if (types) { + return types; + } + return freeProcess && freeProcess.binding && freeProcess.binding("util"); + } catch (e) { + } + }(); + var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + function apply(func, thisArg, args) { + switch (args.length) { + case 0: + return func.call(thisArg); + case 1: + return func.call(thisArg, args[0]); + case 2: + return func.call(thisArg, args[0], args[1]); + case 3: + return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; + } + function arrayEach(array, iteratee) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + function arrayEvery(array, predicate) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } } return true; } - return a2 !== a2 && b2 !== b2; - } - module2.exports = function isEqual(a2, b2) { - try { - return equal(a2, b2); - } catch (error) { - if ((error.message || "").match(/stack|recursion/i)) { - console.warn("react-fast-compare cannot handle circular refs"); + function arrayFilter(array, predicate) { + var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } + function arrayIncludesWith(array, value, comparator) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } + function arrayMap(array, iteratee) { + var index = -1, length = array == null ? 0 : array.length, result = Array(length); + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + function arrayPush(array, values) { + var index = -1, length = values.length, offset = array.length; + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + function arraySome(array, predicate) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + var asciiSize = baseProperty("length"); + function asciiToArray(string) { + return string.split(""); + } + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection2) { + if (predicate(value, key, collection2)) { + result = key; + return false; + } + }); + return result; + } + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, index = fromIndex + (fromRight ? 1 : -1); + while (fromRight ? index-- : ++index < length) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + function baseIndexOf(array, value, fromIndex) { + return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex); + } + function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, length = array.length; + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; + } + function baseIsNaN(value) { + return value !== value; + } + function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? baseSum(array, iteratee) / length : NAN; + } + function baseProperty(key) { + return function(object) { + return object == null ? undefined2 : object[key]; + }; + } + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined2 : object[key]; + }; + } + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection2) { + accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2); + }); + return accumulator; + } + function baseSortBy(array, comparer) { + var length = array.length; + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + function baseSum(array, iteratee) { + var result, index = -1, length = array.length; + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined2) { + result = result === undefined2 ? current : result + current; + } + } + return result; + } + function baseTimes(n2, iteratee) { + var index = -1, result = Array(n2); + while (++index < n2) { + result[index] = iteratee(index); + } + return result; + } + function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); + } + function baseTrim(string) { + return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string; + } + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + function cacheHas(cache, key) { + return cache.has(key); + } + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, length = strSymbols.length; + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { + } + return index; + } + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { + } + return index; + } + function countHolders(array, placeholder) { + var length = array.length, result = 0; + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; + } + var deburrLetter = basePropertyOf(deburredLetters); + var escapeHtmlChar = basePropertyOf(htmlEscapes); + function escapeStringChar(chr) { + return "\\" + stringEscapes[chr]; + } + function getValue2(object, key) { + return object == null ? undefined2 : object[key]; + } + function hasUnicode(string) { + return reHasUnicode.test(string); + } + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } + function iteratorToArray(iterator) { + var data, result = []; + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; + } + function mapToArray(map2) { + var index = -1, result = Array(map2.size); + map2.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + function replaceHolders(array, placeholder) { + var index = -1, length = array.length, resIndex = 0, result = []; + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; + } + } + return result; + } + function setToArray(set) { + var index = -1, result = Array(set.size); + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + function setToPairs(set) { + var index = -1, result = Array(set.size); + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; + } + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, length = array.length; + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; + } + function stringSize(string) { + return hasUnicode(string) ? unicodeSize(string) : asciiSize(string); + } + function stringToArray(string) { + return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string); + } + function trimmedEndIndex(string) { + var index = string.length; + while (index-- && reWhitespace.test(string.charAt(index))) { + } + return index; + } + var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; + } + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } + var runInContext = function runInContext2(context) { + context = context == null ? root : _3.defaults(root.Object(), context, _3.pick(root, contextProps)); + var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError; + var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype; + var coreJsData = context["__core-js_shared__"]; + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var idCounter = 0; + var maskSrcKey = function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); + return uid ? "Symbol(src)_1." + uid : ""; + }(); + var nativeObjectToString = objectProto.toString; + var objectCtorString = funcToString.call(Object2); + var oldDash = root._; + var reIsNative = RegExp2( + "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" + ); + var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2; + var defineProperty = function() { + try { + var func = getNative(Object2, "defineProperty"); + func({}, "", {}); + return func; + } catch (e) { + } + }(); + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; + var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse; + var DataView = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create"); + var metaMap = WeakMap2 && new WeakMap2(); + var realNames = {}; + var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2); + var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2; + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, "__wrapped__")) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + var baseCreate = function() { + function object() { + } + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result2 = new object(); + object.prototype = undefined2; + return result2; + }; + }(); + function baseLodash() { + } + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined2; + } + lodash.templateSettings = { + "escape": reEscape, + "evaluate": reEvaluate, + "interpolate": reInterpolate, + "variable": "", + "imports": { + "_": lodash + } + }; + lodash.prototype = baseLodash.prototype; + lodash.prototype.constructor = lodash; + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; + } + function lazyClone() { + var result2 = new LazyWrapper(this.__wrapped__); + result2.__actions__ = copyArray(this.__actions__); + result2.__dir__ = this.__dir__; + result2.__filtered__ = this.__filtered__; + result2.__iteratees__ = copyArray(this.__iteratees__); + result2.__takeCount__ = this.__takeCount__; + result2.__views__ = copyArray(this.__views__); + return result2; + } + function lazyReverse() { + if (this.__filtered__) { + var result2 = new LazyWrapper(this); + result2.__dir__ = -1; + result2.__filtered__ = true; + } else { + result2 = this.clone(); + result2.__dir__ *= -1; + } + return result2; + } + function lazyValue() { + var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end = view.end, length = end - start, index = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__); + if (!isArr || !isRight && arrLength == length && takeCount == length) { + return baseWrapperValue(array, this.__actions__); + } + var result2 = []; + outer: + while (length-- && resIndex < takeCount) { + index += dir; + var iterIndex = -1, value = array[index]; + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], iteratee2 = data.iteratee, type = data.type, computed = iteratee2(value); + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result2[resIndex++] = value; + } + return result2; + } + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; + function Hash(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + function hashDelete(key) { + var result2 = this.has(key) && delete this.__data__[key]; + this.size -= result2 ? 1 : 0; + return result2; + } + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result2 = data[key]; + return result2 === HASH_UNDEFINED ? undefined2 : result2; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined2; + } + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined2 : hasOwnProperty.call(data, key); + } + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = nativeCreate && value === undefined2 ? HASH_UNDEFINED : value; + return this; + } + Hash.prototype.clear = hashClear; + Hash.prototype["delete"] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + function ListCache(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + function listCacheDelete(key) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } + function listCacheGet(key) { + var data = this.__data__, index = assocIndexOf(data, key); + return index < 0 ? undefined2 : data[index][1]; + } + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + function listCacheSet(key, value) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + ListCache.prototype.clear = listCacheClear; + ListCache.prototype["delete"] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + function MapCache(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function mapCacheClear() { + this.size = 0; + this.__data__ = { + "hash": new Hash(), + "map": new (Map2 || ListCache)(), + "string": new Hash() + }; + } + function mapCacheDelete(key) { + var result2 = getMapData(this, key)["delete"](key); + this.size -= result2 ? 1 : 0; + return result2; + } + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + function mapCacheSet(key, value) { + var data = getMapData(this, key), size2 = data.size; + data.set(key, value); + this.size += data.size == size2 ? 0 : 1; + return this; + } + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype["delete"] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + function SetCache(values2) { + var index = -1, length = values2 == null ? 0 : values2.length; + this.__data__ = new MapCache(); + while (++index < length) { + this.add(values2[index]); + } + } + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + function setCacheHas(value) { + return this.__data__.has(value); + } + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + function Stack2(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + function stackClear() { + this.__data__ = new ListCache(); + this.size = 0; + } + function stackDelete(key) { + var data = this.__data__, result2 = data["delete"](key); + this.size = data.size; + return result2; + } + function stackGet(key) { + return this.__data__.get(key); + } + function stackHas(key) { + return this.__data__.has(key); + } + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + Stack2.prototype.clear = stackClear; + Stack2.prototype["delete"] = stackDelete; + Stack2.prototype.get = stackGet; + Stack2.prototype.has = stackHas; + Stack2.prototype.set = stackSet; + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length; + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) { + result2.push(key); + } + } + return result2; + } + function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined2; + } + function arraySampleSize(array, n2) { + return shuffleSelf(copyArray(array), baseClamp(n2, 0, array.length)); + } + function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); + } + function assignMergeValue(object, key, value) { + if (value !== undefined2 && !eq(object[key], value) || value === undefined2 && !(key in object)) { + baseAssignValue(object, key, value); + } + } + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined2 && !(key in object)) { + baseAssignValue(object, key, value); + } + } + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + function baseAggregator(collection, setter, iteratee2, accumulator) { + baseEach(collection, function(value, key, collection2) { + setter(accumulator, value, iteratee2(value), collection2); + }); + return accumulator; + } + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } + function baseAssignValue(object, key, value) { + if (key == "__proto__" && defineProperty) { + defineProperty(object, key, { + "configurable": true, + "enumerable": true, + "value": value, + "writable": true + }); + } else { + object[key] = value; + } + } + function baseAt(object, paths) { + var index = -1, length = paths.length, result2 = Array2(length), skip2 = object == null; + while (++index < length) { + result2[index] = skip2 ? undefined2 : get(object, paths[index]); + } + return result2; + } + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined2) { + number = number <= upper ? number : upper; + } + if (lower !== undefined2) { + number = number >= lower ? number : lower; + } + } + return number; + } + function baseClone(value, bitmask, customizer, key, object, stack) { + var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG; + if (customizer) { + result2 = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result2 !== undefined2) { + return result2; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result2 = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result2); + } + } else { + var tag = getTag(value), isFunc = tag == funcTag || tag == genTag; + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || isFunc && !object) { + result2 = isFlat || isFunc ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result2 = initCloneByTag(value, tag, isDeep); + } + } + stack || (stack = new Stack2()); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result2); + if (isSet(value)) { + value.forEach(function(subValue) { + result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key2) { + result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); + }); + } + var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys; + var props = isArr ? undefined2 : keysFunc(value); + arrayEach(props || value, function(subValue, key2) { + if (props) { + key2 = subValue; + subValue = value[key2]; + } + assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); + }); + return result2; + } + function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); + }; + } + function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object2(object); + while (length--) { + var key = props[length], predicate = source[key], value = object[key]; + if (value === undefined2 && !(key in object) || !predicate(value)) { + return false; + } + } + return true; + } + function baseDelay(func, wait, args) { + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + return setTimeout2(function() { + func.apply(undefined2, args); + }, wait); + } + function baseDifference(array, values2, iteratee2, comparator) { + var index = -1, includes2 = arrayIncludes, isCommon = true, length = array.length, result2 = [], valuesLength = values2.length; + if (!length) { + return result2; + } + if (iteratee2) { + values2 = arrayMap(values2, baseUnary(iteratee2)); + } + if (comparator) { + includes2 = arrayIncludesWith; + isCommon = false; + } else if (values2.length >= LARGE_ARRAY_SIZE) { + includes2 = cacheHas; + isCommon = false; + values2 = new SetCache(values2); + } + outer: + while (++index < length) { + var value = array[index], computed = iteratee2 == null ? value : iteratee2(value); + value = comparator || value !== 0 ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values2[valuesIndex] === computed) { + continue outer; + } + } + result2.push(value); + } else if (!includes2(values2, computed, comparator)) { + result2.push(value); + } + } + return result2; + } + var baseEach = createBaseEach(baseForOwn); + var baseEachRight = createBaseEach(baseForOwnRight, true); + function baseEvery(collection, predicate) { + var result2 = true; + baseEach(collection, function(value, index, collection2) { + result2 = !!predicate(value, index, collection2); + return result2; + }); + return result2; + } + function baseExtremum(array, iteratee2, comparator) { + var index = -1, length = array.length; + while (++index < length) { + var value = array[index], current = iteratee2(value); + if (current != null && (computed === undefined2 ? current === current && !isSymbol(current) : comparator(current, computed))) { + var computed = current, result2 = value; + } + } + return result2; + } + function baseFill(array, value, start, end) { + var length = array.length; + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : length + start; + } + end = end === undefined2 || end > length ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; + } + return array; + } + function baseFilter(collection, predicate) { + var result2 = []; + baseEach(collection, function(value, index, collection2) { + if (predicate(value, index, collection2)) { + result2.push(value); + } + }); + return result2; + } + function baseFlatten(array, depth, predicate, isStrict, result2) { + var index = -1, length = array.length; + predicate || (predicate = isFlattenable); + result2 || (result2 = []); + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + baseFlatten(value, depth - 1, predicate, isStrict, result2); + } else { + arrayPush(result2, value); + } + } else if (!isStrict) { + result2[result2.length] = value; + } + } + return result2; + } + var baseFor = createBaseFor(); + var baseForRight = createBaseFor(true); + function baseForOwn(object, iteratee2) { + return object && baseFor(object, iteratee2, keys); + } + function baseForOwnRight(object, iteratee2) { + return object && baseForRight(object, iteratee2, keys); + } + function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); + } + function baseGet(object, path) { + path = castPath(path, object); + var index = 0, length = path.length; + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return index && index == length ? object : undefined2; + } + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result2 = keysFunc(object); + return isArray(object) ? result2 : arrayPush(result2, symbolsFunc(object)); + } + function baseGetTag(value) { + if (value == null) { + return value === undefined2 ? undefinedTag : nullTag; + } + return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString(value); + } + function baseGt(value, other) { + return value > other; + } + function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); + } + function baseHasIn(object, key) { + return object != null && key in Object2(object); + } + function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); + } + function baseIntersection(arrays, iteratee2, comparator) { + var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = []; + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee2) { + array = arrayMap(array, baseUnary(iteratee2)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined2; + } + array = arrays[0]; + var index = -1, seen = caches[0]; + outer: + while (++index < length && result2.length < maxLength) { + var value = array[index], computed = iteratee2 ? iteratee2(value) : value; + value = comparator || value !== 0 ? value : 0; + if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache ? cacheHas(cache, computed) : includes2(arrays[othIndex], computed, comparator))) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result2.push(value); + } + } + return result2; + } + function baseInverter(object, setter, iteratee2, accumulator) { + baseForOwn(object, function(value, key, object2) { + setter(accumulator, iteratee2(value), key, object2); + }); + return accumulator; + } + function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last2(path))]; + return func == null ? undefined2 : apply(func, object, args); + } + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; + } + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; + } + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other); + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag; + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack2()); + return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__"); + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other; + stack || (stack = new Stack2()); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack2()); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, length = index, noCustomizer = !customizer; + if (object == null) { + return !length; + } + object = Object2(object); + while (index--) { + var data = matchData[index]; + if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], objValue = object[key], srcValue = data[1]; + if (noCustomizer && data[2]) { + if (objValue === undefined2 && !(key in object)) { + return false; + } + } else { + var stack = new Stack2(); + if (customizer) { + var result2 = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result2 === undefined2 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) { + return false; + } + } + } + return true; + } + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; + } + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; + } + function baseIsTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + function baseIteratee(value) { + if (typeof value == "function") { + return value; + } + if (value == null) { + return identity2; + } + if (typeof value == "object") { + return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value); + } + return property(value); + } + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result2 = []; + for (var key in Object2(object)) { + if (hasOwnProperty.call(object, key) && key != "constructor") { + result2.push(key); + } + } + return result2; + } + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), result2 = []; + for (var key in object) { + if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) { + result2.push(key); + } + } + return result2; + } + function baseLt(value, other) { + return value < other; + } + function baseMap(collection, iteratee2) { + var index = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : []; + baseEach(collection, function(value, key, collection2) { + result2[++index] = iteratee2(value, key, collection2); + }); + return result2; + } + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; + } + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack2()); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } else { + var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined2; + if (newValue === undefined2) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue); + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined2; + var isCommon = newValue === undefined2; + if (isCommon) { + var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue); + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } else { + newValue = []; + } + } else if (isPlainObject4(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } else { + isCommon = false; + } + } + if (isCommon) { + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack["delete"](srcValue); + } + assignMergeValue(object, key, newValue); + } + function baseNth(array, n2) { + var length = array.length; + if (!length) { + return; + } + n2 += n2 < 0 ? length : 0; + return isIndex(n2, length) ? array[n2] : undefined2; + } + function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee2) { + if (isArray(iteratee2)) { + return function(value) { + return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2); + }; + } + return iteratee2; + }); + } else { + iteratees = [identity2]; + } + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + var result2 = baseMap(collection, function(value, key, collection2) { + var criteria = arrayMap(iteratees, function(iteratee2) { + return iteratee2(value); + }); + return { "criteria": criteria, "index": ++index, "value": value }; + }); + return baseSortBy(result2, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } + function basePickBy(object, paths, predicate) { + var index = -1, length = paths.length, result2 = {}; + while (++index < length) { + var path = paths[index], value = baseGet(object, path); + if (predicate(value, path)) { + baseSet(result2, castPath(path, object), value); + } + } + return result2; + } + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + function basePullAll(array, values2, iteratee2, comparator) { + var indexOf2 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values2.length, seen = array; + if (array === values2) { + values2 = copyArray(values2); + } + if (iteratee2) { + seen = arrayMap(array, baseUnary(iteratee2)); + } + while (++index < length) { + var fromIndex = 0, value = values2[index], computed = iteratee2 ? iteratee2(value) : value; + while ((fromIndex = indexOf2(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; + } + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, lastIndex = length - 1; + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; + } + function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); + } + function baseRange(start, end, step, fromRight) { + var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result2 = Array2(length); + while (length--) { + result2[fromRight ? length : ++index] = start; + start += step; + } + return result2; + } + function baseRepeat(string, n2) { + var result2 = ""; + if (!string || n2 < 1 || n2 > MAX_SAFE_INTEGER) { + return result2; + } + do { + if (n2 % 2) { + result2 += string; + } + n2 = nativeFloor(n2 / 2); + if (n2) { + string += string; + } + } while (n2); + return result2; + } + function baseRest(func, start) { + return setToString(overRest(func, start, identity2), func + ""); + } + function baseSample(collection) { + return arraySample(values(collection)); + } + function baseSampleSize(collection, n2) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n2, 0, array.length)); + } + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + var index = -1, length = path.length, lastIndex = length - 1, nested = object; + while (nested != null && ++index < length) { + var key = toKey(path[index]), newValue = value; + if (key === "__proto__" || key === "constructor" || key === "prototype") { + return object; + } + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined2; + if (newValue === undefined2) { + newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {}; + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } + var baseSetData = !metaMap ? identity2 : function(func, data) { + metaMap.set(func, data); + return func; + }; + var baseSetToString = !defineProperty ? identity2 : function(func, string) { + return defineProperty(func, "toString", { + "configurable": true, + "enumerable": false, + "value": constant(string), + "writable": true + }); + }; + function baseShuffle(collection) { + return shuffleSelf(values(collection)); + } + function baseSlice(array, start, end) { + var index = -1, length = array.length; + if (start < 0) { + start = -start > length ? 0 : length + start; + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : end - start >>> 0; + start >>>= 0; + var result2 = Array2(length); + while (++index < length) { + result2[index] = array[index + start]; + } + return result2; + } + function baseSome(collection, predicate) { + var result2; + baseEach(collection, function(value, index, collection2) { + result2 = predicate(value, index, collection2); + return !result2; + }); + return !!result2; + } + function baseSortedIndex(array, value, retHighest) { + var low = 0, high = array == null ? low : array.length; + if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = low + high >>> 1, computed = array[mid]; + if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity2, retHighest); + } + function baseSortedIndexBy(array, value, iteratee2, retHighest) { + var low = 0, high = array == null ? 0 : array.length; + if (high === 0) { + return 0; + } + value = iteratee2(value); + var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined2; + while (low < high) { + var mid = nativeFloor((low + high) / 2), computed = iteratee2(array[mid]), othIsDefined = computed !== undefined2, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol(computed); + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? computed <= value : computed < value; + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + function baseSortedUniq(array, iteratee2) { + var index = -1, length = array.length, resIndex = 0, result2 = []; + while (++index < length) { + var value = array[index], computed = iteratee2 ? iteratee2(value) : value; + if (!index || !eq(computed, seen)) { + var seen = computed; + result2[resIndex++] = value === 0 ? 0 : value; + } + } + return result2; + } + function baseToNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; + } + function baseToString(value) { + if (typeof value == "string") { + return value; + } + if (isArray(value)) { + return arrayMap(value, baseToString) + ""; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ""; + } + var result2 = value + ""; + return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; + } + function baseUniq(array, iteratee2, comparator) { + var index = -1, includes2 = arrayIncludes, length = array.length, isCommon = true, result2 = [], seen = result2; + if (comparator) { + isCommon = false; + includes2 = arrayIncludesWith; + } else if (length >= LARGE_ARRAY_SIZE) { + var set2 = iteratee2 ? null : createSet(array); + if (set2) { + return setToArray(set2); + } + isCommon = false; + includes2 = cacheHas; + seen = new SetCache(); + } else { + seen = iteratee2 ? [] : result2; + } + outer: + while (++index < length) { + var value = array[index], computed = iteratee2 ? iteratee2(value) : value; + value = comparator || value !== 0 ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee2) { + seen.push(computed); + } + result2.push(value); + } else if (!includes2(seen, computed, comparator)) { + if (seen !== result2) { + seen.push(computed); + } + result2.push(value); + } + } + return result2; + } + function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last2(path))]; + } + function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); + } + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, index = fromRight ? length : -1; + while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) { + } + return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index); + } + function baseWrapperValue(value, actions) { + var result2 = value; + if (result2 instanceof LazyWrapper) { + result2 = result2.value(); + } + return arrayReduce(actions, function(result3, action) { + return action.func.apply(action.thisArg, arrayPush([result3], action.args)); + }, result2); + } + function baseXor(arrays, iteratee2, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, result2 = Array2(length); + while (++index < length) { + var array = arrays[index], othIndex = -1; + while (++othIndex < length) { + if (othIndex != index) { + result2[index] = baseDifference(result2[index] || array, arrays[othIndex], iteratee2, comparator); + } + } + } + return baseUniq(baseFlatten(result2, 1), iteratee2, comparator); + } + function baseZipObject(props, values2, assignFunc) { + var index = -1, length = props.length, valsLength = values2.length, result2 = {}; + while (++index < length) { + var value = index < valsLength ? values2[index] : undefined2; + assignFunc(result2, props[index], value); + } + return result2; + } + function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; + } + function castFunction(value) { + return typeof value == "function" ? value : identity2; + } + function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + var castRest = baseRest; + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined2 ? length : end; + return !start && end >= length ? array : baseSlice(array, start, end); + } + var clearTimeout2 = ctxClearTimeout || function(id2) { + return root.clearTimeout(id2); + }; + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, result2 = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + buffer.copy(result2); + return result2; + } + function cloneArrayBuffer(arrayBuffer) { + var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer)); + return result2; + } + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + function cloneRegExp(regexp) { + var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result2.lastIndex = regexp.lastIndex; + return result2; + } + function cloneSymbol(symbol) { + return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {}; + } + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined2, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value); + var othIsDefined = other !== undefined2, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other); + if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) { + return 1; + } + if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) { + return -1; + } + } + return 0; + } + function compareMultiple(object, other, orders) { + var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length; + while (++index < length) { + var result2 = compareAscending(objCriteria[index], othCriteria[index]); + if (result2) { + if (index >= ordersLength) { + return result2; + } + var order = orders[index]; + return result2 * (order == "desc" ? -1 : 1); + } + } + return object.index - other.index; + } + function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried; + while (++leftIndex < leftLength) { + result2[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result2[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result2[leftIndex++] = args[argsIndex++]; + } + return result2; + } + function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried; + while (++argsIndex < rangeLength) { + result2[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result2[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result2[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result2; + } + function copyArray(source, array) { + var index = -1, length = source.length; + array || (array = Array2(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + var index = -1, length = props.length; + while (++index < length) { + var key = props[index]; + var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined2; + if (newValue === undefined2) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } + function createAggregator(setter, initializer) { + return function(collection, iteratee2) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {}; + return func(collection, setter, getIteratee(iteratee2, 2), accumulator); + }; + } + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined2, guard = length > 2 ? sources[2] : undefined2; + customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : undefined2; + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined2 : customizer; + length = 1; + } + object = Object2(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee2) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee2); + } + var length = collection.length, index = fromRight ? length : -1, iterable = Object2(collection); + while (fromRight ? index-- : ++index < length) { + if (iteratee2(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + function createBaseFor(fromRight) { + return function(object, iteratee2, keysFunc) { + var index = -1, iterable = Object2(object), props = keysFunc(object), length = props.length; + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee2(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); + function wrapper() { + var fn2 = this && this !== root && this instanceof wrapper ? Ctor : func; + return fn2.apply(isBind ? thisArg : this, arguments); + } + return wrapper; + } + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined2; + var chr = strSymbols ? strSymbols[0] : string.charAt(0); + var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1); + return chr[methodName]() + trailing; + }; + } + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, "")), callback, ""); + }; + } + function createCtor(Ctor) { + return function() { + var args = arguments; + switch (args.length) { + case 0: + return new Ctor(); + case 1: + return new Ctor(args[0]); + case 2: + return new Ctor(args[0], args[1]); + case 3: + return new Ctor(args[0], args[1], args[2]); + case 4: + return new Ctor(args[0], args[1], args[2], args[3]); + case 5: + return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: + return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: + return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args); + return isObject(result2) ? result2 : thisBinding; + }; + } + function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + function wrapper() { + var length = arguments.length, args = Array2(length), index = length, placeholder = getHolder(wrapper); + while (index--) { + args[index] = arguments[index]; + } + var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder); + length -= holders.length; + if (length < arity) { + return createRecurry( + func, + bitmask, + createHybrid, + wrapper.placeholder, + undefined2, + args, + holders, + undefined2, + undefined2, + arity - length + ); + } + var fn2 = this && this !== root && this instanceof wrapper ? Ctor : func; + return apply(fn2, this, args); + } + return wrapper; + } + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object2(collection); + if (!isArrayLike(collection)) { + var iteratee2 = getIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { + return iteratee2(iterable[key], key, iterable); + }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee2 ? collection[index] : index] : undefined2; + }; + } + function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, index = length, prereq = LodashWrapper.prototype.thru; + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == "wrapper") { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined2; + if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func); + } + } + return function() { + var args = arguments, value = args[0]; + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index2 = 0, result2 = length ? funcs[index2].apply(this, args) : value; + while (++index2 < length) { + result2 = funcs[index2].call(this, result2); + } + return result2; + }; + }); + } + function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined2 : createCtor(func); + function wrapper() { + var length = arguments.length, args = Array2(length), index = length; + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, + bitmask, + createHybrid, + wrapper.placeholder, + thisArg, + args, + newHolders, + argPos, + ary2, + arity - length + ); + } + var thisBinding = isBind ? thisArg : this, fn2 = isBindKey ? thisBinding[func] : func; + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary2 < length) { + args.length = ary2; + } + if (this && this !== root && this instanceof wrapper) { + fn2 = Ctor || createCtor(fn2); + } + return fn2.apply(thisBinding, args); + } + return wrapper; + } + function createInverter(setter, toIteratee) { + return function(object, iteratee2) { + return baseInverter(object, setter, toIteratee(iteratee2), {}); + }; + } + function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result2; + if (value === undefined2 && other === undefined2) { + return defaultValue; + } + if (value !== undefined2) { + result2 = value; + } + if (other !== undefined2) { + if (result2 === undefined2) { + return other; + } + if (typeof value == "string" || typeof other == "string") { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result2 = operator(value, other); + } + return result2; + }; + } + function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee2) { + return apply(iteratee2, thisArg, args); + }); + }); + }); + } + function createPadding(length, chars) { + chars = chars === undefined2 ? " " : baseToString(chars); + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result2 = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length).join("") : result2.slice(0, length); + } + function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); + function wrapper() { + var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn2 = this && this !== root && this instanceof wrapper ? Ctor : func; + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn2, isBind ? thisArg : this, args); + } + return wrapper; + } + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != "number" && isIterateeCall(start, end, step)) { + end = step = undefined2; + } + start = toFinite(start); + if (end === undefined2) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined2 ? start < end ? 1 : -1 : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } + function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == "string" && typeof other == "string")) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; + } + function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined2, newHoldersRight = isCurry ? undefined2 : holders, newPartials = isCurry ? partials : undefined2, newPartialsRight = isCurry ? undefined2 : partials; + bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG; + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, + bitmask, + thisArg, + newPartials, + newHolders, + newPartialsRight, + newHoldersRight, + argPos, + ary2, + arity + ]; + var result2 = wrapFunc.apply(undefined2, newData); + if (isLaziable(func)) { + setData(result2, newData); + } + result2.placeholder = placeholder; + return setWrapToString(result2, func, bitmask); + } + function createRound(methodName) { + var func = Math2[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision && nativeIsFinite(number)) { + var pair = (toString(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision)); + pair = (toString(value) + "e").split("e"); + return +(pair[0] + "e" + (+pair[1] - precision)); + } + return func(number); + }; + } + var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop2 : function(values2) { + return new Set2(values2); + }; + function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; + } + function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined2; + } + ary2 = ary2 === undefined2 ? ary2 : nativeMax(toInteger(ary2), 0); + arity = arity === undefined2 ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, holdersRight = holders; + partials = holders = undefined2; + } + var data = isBindKey ? undefined2 : getData(func); + var newData = [ + func, + bitmask, + thisArg, + partials, + holders, + partialsRight, + holdersRight, + argPos, + ary2, + arity + ]; + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined2 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0); + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result2 = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result2 = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result2 = createPartial(func, bitmask, thisArg, partials); + } else { + result2 = createHybrid.apply(undefined2, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result2, newData), func, bitmask); + } + function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined2 || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key)) { + return srcValue; + } + return objValue; + } + function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined2, customDefaultsMerge, stack); + stack["delete"](srcValue); + } + return objValue; + } + function customOmitClone(value) { + return isPlainObject4(value) ? undefined2 : value; + } + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length; + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined2; + stack.set(array, other); + stack.set(other, array); + while (++index < arrLength) { + var arrValue = array[index], othValue = other[index]; + if (customizer) { + var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined2) { + if (compared) { + continue; + } + result2 = false; + break; + } + if (seen) { + if (!arraySome(other, function(othValue2, othIndex) { + if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result2 = false; + break; + } + } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + result2 = false; + break; + } + } + stack["delete"](array); + stack["delete"](other); + return result2; + } + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) { + return false; + } + object = object.buffer; + other = other.buffer; + case arrayBufferTag: + if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) { + return false; + } + return true; + case boolTag: + case dateTag: + case numberTag: + return eq(+object, +other); + case errorTag: + return object.name == other.name && object.message == other.message; + case regexpTag: + case stringTag: + return object == other + ""; + case mapTag: + var convert = mapToArray; + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + if (object.size != other.size && !isPartial) { + return false; + } + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + stack.set(object, other); + var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack["delete"](object); + return result2; + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } return false; } - throw error; - } - }; - } -}); - -// node_modules/react-popper/lib/cjs/usePopper.js -var require_usePopper = __commonJS({ - "node_modules/react-popper/lib/cjs/usePopper.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.usePopper = void 0; - var React11 = _interopRequireWildcard(require_react()); - var ReactDOM2 = _interopRequireWildcard(require_react_dom()); - var _core = require_popper(); - var _reactFastCompare = _interopRequireDefault(require_react_fast_compare()); - var _utils = require_utils3(); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - function _getRequireWildcardCache() { - if (typeof WeakMap !== "function") - return null; - var cache = /* @__PURE__ */ new WeakMap(); - _getRequireWildcardCache = function _getRequireWildcardCache2() { - return cache; - }; - return cache; - } - function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { - return obj; - } - if (obj === null || typeof obj !== "object" && typeof obj !== "function") { - return { "default": obj }; - } - var cache = _getRequireWildcardCache(); - if (cache && cache.has(obj)) { - return cache.get(obj); - } - var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; - if (desc && (desc.get || desc.set)) { - Object.defineProperty(newObj, key, desc); - } else { - newObj[key] = obj[key]; + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length; + if (objLength != othLength && !isPartial) { + return false; } - } - } - newObj["default"] = obj; - if (cache) { - cache.set(obj, newObj); - } - return newObj; - } - var EMPTY_MODIFIERS = []; - var usePopper = function usePopper2(referenceElement, popperElement, options) { - if (options === void 0) { - options = {}; - } - var prevOptions = React11.useRef(null); - var optionsWithDefaults = { - onFirstUpdate: options.onFirstUpdate, - placement: options.placement || "bottom", - strategy: options.strategy || "absolute", - modifiers: options.modifiers || EMPTY_MODIFIERS - }; - var _React$useState = React11.useState({ - styles: { - popper: { - position: optionsWithDefaults.strategy, - left: "0", - top: "0" - }, - arrow: { - position: "absolute" - } - }, - attributes: {} - }), state = _React$useState[0], setState = _React$useState[1]; - var updateStateModifier = React11.useMemo(function() { - return { - name: "updateState", - enabled: true, - phase: "write", - fn: function fn2(_ref) { - var state2 = _ref.state; - var elements = Object.keys(state2.elements); - ReactDOM2.flushSync(function() { - setState({ - styles: (0, _utils.fromEntries)(elements.map(function(element) { - return [element, state2.styles[element] || {}]; - })), - attributes: (0, _utils.fromEntries)(elements.map(function(element) { - return [element, state2.attributes[element]]; - })) - }); - }); - }, - requires: ["computeStyles"] - }; - }, []); - var popperOptions = React11.useMemo(function() { - var newOptions = { - onFirstUpdate: optionsWithDefaults.onFirstUpdate, - placement: optionsWithDefaults.placement, - strategy: optionsWithDefaults.strategy, - modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, { - name: "applyStyles", - enabled: false - }]) - }; - if ((0, _reactFastCompare["default"])(prevOptions.current, newOptions)) { - return prevOptions.current || newOptions; - } else { - prevOptions.current = newOptions; - return newOptions; - } - }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]); - var popperInstanceRef = React11.useRef(); - (0, _utils.useIsomorphicLayoutEffect)(function() { - if (popperInstanceRef.current) { - popperInstanceRef.current.setOptions(popperOptions); - } - }, [popperOptions]); - (0, _utils.useIsomorphicLayoutEffect)(function() { - if (referenceElement == null || popperElement == null) { - return; - } - var createPopper = options.createPopper || _core.createPopper; - var popperInstance = createPopper(referenceElement, popperElement, popperOptions); - popperInstanceRef.current = popperInstance; - return function() { - popperInstance.destroy(); - popperInstanceRef.current = null; - }; - }, [referenceElement, popperElement, options.createPopper]); - return { - state: popperInstanceRef.current ? popperInstanceRef.current.state : null, - styles: state.styles, - attributes: state.attributes, - update: popperInstanceRef.current ? popperInstanceRef.current.update : null, - forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null - }; - }; - exports.usePopper = usePopper; - } -}); - -// node_modules/react-popper/lib/cjs/Popper.js -var require_Popper = __commonJS({ - "node_modules/react-popper/lib/cjs/Popper.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Popper = Popper; - var React11 = _interopRequireWildcard(require_react()); - var _Manager = require_Manager(); - var _utils = require_utils3(); - var _usePopper2 = require_usePopper(); - function _getRequireWildcardCache() { - if (typeof WeakMap !== "function") - return null; - var cache = /* @__PURE__ */ new WeakMap(); - _getRequireWildcardCache = function _getRequireWildcardCache2() { - return cache; - }; - return cache; - } - function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { - return obj; - } - if (obj === null || typeof obj !== "object" && typeof obj !== "function") { - return { "default": obj }; - } - var cache = _getRequireWildcardCache(); - if (cache && cache.has(obj)) { - return cache.get(obj); - } - var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; - if (desc && (desc.get || desc.set)) { - Object.defineProperty(newObj, key, desc); - } else { - newObj[key] = obj[key]; - } - } - } - newObj["default"] = obj; - if (cache) { - cache.set(obj, newObj); - } - return newObj; - } - var NOOP = function NOOP2() { - return void 0; - }; - var NOOP_PROMISE = function NOOP_PROMISE2() { - return Promise.resolve(null); - }; - var EMPTY_MODIFIERS = []; - function Popper(_ref) { - var _ref$placement = _ref.placement, placement = _ref$placement === void 0 ? "bottom" : _ref$placement, _ref$strategy = _ref.strategy, strategy = _ref$strategy === void 0 ? "absolute" : _ref$strategy, _ref$modifiers = _ref.modifiers, modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS : _ref$modifiers, referenceElement = _ref.referenceElement, onFirstUpdate = _ref.onFirstUpdate, innerRef = _ref.innerRef, children = _ref.children; - var referenceNode = React11.useContext(_Manager.ManagerReferenceNodeContext); - var _React$useState = React11.useState(null), popperElement = _React$useState[0], setPopperElement = _React$useState[1]; - var _React$useState2 = React11.useState(null), arrowElement = _React$useState2[0], setArrowElement = _React$useState2[1]; - React11.useEffect(function() { - (0, _utils.setRef)(innerRef, popperElement); - }, [innerRef, popperElement]); - var options = React11.useMemo(function() { - return { - placement, - strategy, - onFirstUpdate, - modifiers: [].concat(modifiers, [{ - name: "arrow", - enabled: arrowElement != null, - options: { - element: arrowElement + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; } - }]) - }; - }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]); - var _usePopper = (0, _usePopper2.usePopper)(referenceElement || referenceNode, popperElement, options), state = _usePopper.state, styles = _usePopper.styles, forceUpdate = _usePopper.forceUpdate, update = _usePopper.update; - var childrenProps = React11.useMemo(function() { - return { - ref: setPopperElement, - style: styles.popper, - placement: state ? state.placement : placement, - hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null, - isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null, - arrowProps: { - style: styles.arrow, - ref: setArrowElement - }, - forceUpdate: forceUpdate || NOOP, - update: update || NOOP_PROMISE - }; - }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]); - return (0, _utils.unwrapArray)(children)(childrenProps); - } - } -}); - -// node_modules/warning/warning.js -var require_warning = __commonJS({ - "node_modules/warning/warning.js"(exports, module2) { - "use strict"; - var __DEV__ = true; - var warning3 = function() { - }; - if (__DEV__) { - printWarning = function printWarning2(format, args) { - var len = arguments.length; - args = new Array(len > 1 ? len - 1 : 0); - for (var key = 1; key < len; key++) { - args[key - 1] = arguments[key]; - } - var argIndex = 0; - var message = "Warning: " + format.replace(/%s/g, function() { - return args[argIndex++]; - }); - if (typeof console !== "undefined") { - console.error(message); - } - try { - throw new Error(message); - } catch (x2) { - } - }; - warning3 = function(condition, format, args) { - var len = arguments.length; - args = new Array(len > 2 ? len - 2 : 0); - for (var key = 2; key < len; key++) { - args[key - 2] = arguments[key]; - } - if (format === void 0) { - throw new Error( - "`warning(condition, format, ...args)` requires a warning message argument" - ); - } - if (!condition) { - printWarning.apply(null, [format].concat(args)); - } - }; - } - var printWarning; - module2.exports = warning3; - } -}); - -// node_modules/react-popper/lib/cjs/Reference.js -var require_Reference = __commonJS({ - "node_modules/react-popper/lib/cjs/Reference.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.Reference = Reference; - var React11 = _interopRequireWildcard(require_react()); - var _warning = _interopRequireDefault(require_warning()); - var _Manager = require_Manager(); - var _utils = require_utils3(); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - function _getRequireWildcardCache() { - if (typeof WeakMap !== "function") - return null; - var cache = /* @__PURE__ */ new WeakMap(); - _getRequireWildcardCache = function _getRequireWildcardCache2() { - return cache; - }; - return cache; - } - function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { - return obj; - } - if (obj === null || typeof obj !== "object" && typeof obj !== "function") { - return { "default": obj }; - } - var cache = _getRequireWildcardCache(); - if (cache && cache.has(obj)) { - return cache.get(obj); - } - var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; - if (desc && (desc.get || desc.set)) { - Object.defineProperty(newObj, key, desc); - } else { - newObj[key] = obj[key]; } - } - } - newObj["default"] = obj; - if (cache) { - cache.set(obj, newObj); - } - return newObj; - } - function Reference(_ref) { - var children = _ref.children, innerRef = _ref.innerRef; - var setReferenceNode = React11.useContext(_Manager.ManagerReferenceNodeSetterContext); - var refHandler = React11.useCallback(function(node) { - (0, _utils.setRef)(innerRef, node); - (0, _utils.safeInvoke)(setReferenceNode, node); - }, [innerRef, setReferenceNode]); - React11.useEffect(function() { - return function() { - return (0, _utils.setRef)(innerRef, null); - }; - }, []); - React11.useEffect(function() { - (0, _warning["default"])(Boolean(setReferenceNode), "`Reference` should not be used outside of a `Manager` component."); - }, [setReferenceNode]); - return (0, _utils.unwrapArray)(children)({ - ref: refHandler - }); - } - } -}); - -// node_modules/react-popper/lib/cjs/index.js -var require_cjs2 = __commonJS({ - "node_modules/react-popper/lib/cjs/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - Object.defineProperty(exports, "Popper", { - enumerable: true, - get: function get() { - return _Popper.Popper; - } - }); - Object.defineProperty(exports, "Manager", { - enumerable: true, - get: function get() { - return _Manager.Manager; - } - }); - Object.defineProperty(exports, "Reference", { - enumerable: true, - get: function get() { - return _Reference.Reference; - } - }); - Object.defineProperty(exports, "usePopper", { - enumerable: true, - get: function get() { - return _usePopper.usePopper; - } - }); - var _Popper = require_Popper(); - var _Manager = require_Manager(); - var _Reference = require_Reference(); - var _usePopper = require_usePopper(); - } -}); - -// node_modules/react-datepicker/dist/react-datepicker.min.js -var require_react_datepicker_min = __commonJS({ - "node_modules/react-datepicker/dist/react-datepicker.min.js"(exports, module2) { - !function(e, t2) { - "object" == typeof exports && "undefined" != typeof module2 ? t2(exports, require_react(), require_prop_types(), require_classnames(), require_isDate(), require_isValid(), require_format2(), require_addMinutes(), require_addHours(), require_addDays(), require_addWeeks(), require_addMonths(), require_addYears(), require_subMinutes(), require_subHours(), require_subDays(), require_subWeeks(), require_subMonths(), require_subYears(), require_getSeconds(), require_getMinutes(), require_getHours(), require_getDay(), require_getDate(), require_getISOWeek(), require_getMonth(), require_getQuarter(), require_getYear(), require_getTime(), require_setSeconds(), require_setMinutes(), require_setHours(), require_setMonth(), require_setQuarter(), require_setYear(), require_min(), require_max(), require_differenceInCalendarDays(), require_differenceInCalendarMonths(), require_differenceInCalendarWeeks(), require_differenceInCalendarYears(), require_startOfDay(), require_startOfWeek(), require_startOfMonth(), require_startOfQuarter(), require_startOfYear(), require_endOfDay(), require_endOfWeek(), require_endOfMonth(), require_isEqual(), require_isSameDay(), require_isSameMonth(), require_isSameYear(), require_isSameQuarter(), require_isAfter(), require_isBefore(), require_isWithinInterval(), require_toDate(), require_parse2(), require_parseISO(), require_react_onclickoutside_cjs(), require_react_dom(), require_cjs2()) : "function" == typeof define && define.amd ? define(["exports", "react", "prop-types", "classnames", "date-fns/isDate", "date-fns/isValid", "date-fns/format", "date-fns/addMinutes", "date-fns/addHours", "date-fns/addDays", "date-fns/addWeeks", "date-fns/addMonths", "date-fns/addYears", "date-fns/subMinutes", "date-fns/subHours", "date-fns/subDays", "date-fns/subWeeks", "date-fns/subMonths", "date-fns/subYears", "date-fns/getSeconds", "date-fns/getMinutes", "date-fns/getHours", "date-fns/getDay", "date-fns/getDate", "date-fns/getISOWeek", "date-fns/getMonth", "date-fns/getQuarter", "date-fns/getYear", "date-fns/getTime", "date-fns/setSeconds", "date-fns/setMinutes", "date-fns/setHours", "date-fns/setMonth", "date-fns/setQuarter", "date-fns/setYear", "date-fns/min", "date-fns/max", "date-fns/differenceInCalendarDays", "date-fns/differenceInCalendarMonths", "date-fns/differenceInCalendarWeeks", "date-fns/differenceInCalendarYears", "date-fns/startOfDay", "date-fns/startOfWeek", "date-fns/startOfMonth", "date-fns/startOfQuarter", "date-fns/startOfYear", "date-fns/endOfDay", "date-fns/endOfWeek", "date-fns/endOfMonth", "date-fns/isEqual", "date-fns/isSameDay", "date-fns/isSameMonth", "date-fns/isSameYear", "date-fns/isSameQuarter", "date-fns/isAfter", "date-fns/isBefore", "date-fns/isWithinInterval", "date-fns/toDate", "date-fns/parse", "date-fns/parseISO", "react-onclickoutside", "react-dom", "react-popper"], t2) : t2((e = "undefined" != typeof globalThis ? globalThis : e || self).DatePicker = {}, e.React, e.PropTypes, e.classNames, e.isDate, e.isValidDate, e.format, e.addMinutes, e.addHours, e.addDays, e.addWeeks, e.addMonths, e.addYears, null, null, e.subDays, e.subWeeks, e.subMonths, e.subYears, e.getSeconds, e.getMinutes, e.getHours, e.getDay, e.getDate, e.getISOWeek, e.getMonth, e.getQuarter, e.getYear, e.getTime, e.setSeconds, e.setMinutes, e.setHours, e.setMonth, e.setQuarter, e.setYear, e.min, e.max, e.differenceInCalendarDays, e.differenceInCalendarMonths, null, e.differenceInCalendarYears, e.startOfDay, e.startOfWeek, e.startOfMonth, e.startOfQuarter, e.startOfYear, e.endOfDay, null, null, e.dfIsEqual, e.dfIsSameDay, e.dfIsSameMonth, e.dfIsSameYear, e.dfIsSameQuarter, e.isAfter, e.isBefore, e.isWithinInterval, e.toDate, e.parse, e.parseISO, e.onClickOutside, e.ReactDOM, e.ReactPopper); - }(exports, function(e, t2, r3, a2, n2, o2, s2, i2, p2, l2, d2, c2, u2, f2, h2, m2, y2, D2, v2, w2, g2, k2, b2, S2, C, _3, M2, P2, E2, N2, x2, O2, Y2, I2, T, L2, R2, F2, A2, q2, W2, B2, K, H2, j2, Q2, V, U2, $, z2, G2, J, X2, Z2, ee, te, re, ae, ne, oe, se, ie, pe) { - "use strict"; - function le(e2) { - return e2 && "object" == typeof e2 && "default" in e2 ? e2 : { default: e2 }; - } - var de = le(t2), ce = le(a2), ue = le(n2), fe = le(o2), he = le(s2), me = le(i2), ye = le(p2), De = le(l2), ve = le(d2), we = le(c2), ge = le(u2), ke = le(m2), be = le(y2), Se = le(D2), Ce = le(v2), _e = le(w2), Me = le(g2), Pe = le(k2), Ee = le(b2), Ne = le(S2), xe = le(C), Oe = le(_3), Ye = le(M2), Ie = le(P2), Te = le(E2), Le = le(N2), Re = le(x2), Fe = le(O2), Ae = le(Y2), qe = le(I2), We = le(T), Be = le(L2), Ke = le(R2), He = le(F2), je = le(A2), Qe = le(W2), Ve = le(B2), Ue = le(K), $e = le(H2), ze = le(j2), Ge = le(Q2), Je = le(V), Xe = le(z2), Ze = le(G2), et = le(J), tt = le(X2), rt = le(Z2), at = le(ee), nt = le(te), ot = le(re), st = le(ae), it = le(ne), pt = le(oe), lt = le(se), dt = le(ie); - function ct(e2, t3) { - var r4 = Object.keys(e2); - if (Object.getOwnPropertySymbols) { - var a3 = Object.getOwnPropertySymbols(e2); - t3 && (a3 = a3.filter(function(t4) { - return Object.getOwnPropertyDescriptor(e2, t4).enumerable; - })), r4.push.apply(r4, a3); - } - return r4; - } - function ut(e2) { - for (var t3 = 1; t3 < arguments.length; t3++) { - var r4 = null != arguments[t3] ? arguments[t3] : {}; - t3 % 2 ? ct(Object(r4), true).forEach(function(t4) { - Dt(e2, t4, r4[t4]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(r4)) : ct(Object(r4)).forEach(function(t4) { - Object.defineProperty(e2, t4, Object.getOwnPropertyDescriptor(r4, t4)); - }); - } - return e2; - } - function ft(e2) { - return (ft = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e3) { - return typeof e3; - } : function(e3) { - return e3 && "function" == typeof Symbol && e3.constructor === Symbol && e3 !== Symbol.prototype ? "symbol" : typeof e3; - })(e2); - } - function ht(e2, t3) { - if (!(e2 instanceof t3)) - throw new TypeError("Cannot call a class as a function"); - } - function mt(e2, t3) { - for (var r4 = 0; r4 < t3.length; r4++) { - var a3 = t3[r4]; - a3.enumerable = a3.enumerable || false, a3.configurable = true, "value" in a3 && (a3.writable = true), Object.defineProperty(e2, a3.key, a3); - } - } - function yt(e2, t3, r4) { - return t3 && mt(e2.prototype, t3), r4 && mt(e2, r4), Object.defineProperty(e2, "prototype", { writable: false }), e2; - } - function Dt(e2, t3, r4) { - return t3 in e2 ? Object.defineProperty(e2, t3, { value: r4, enumerable: true, configurable: true, writable: true }) : e2[t3] = r4, e2; - } - function vt() { - return (vt = Object.assign || function(e2) { - for (var t3 = 1; t3 < arguments.length; t3++) { - var r4 = arguments[t3]; - for (var a3 in r4) - Object.prototype.hasOwnProperty.call(r4, a3) && (e2[a3] = r4[a3]); + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; } - return e2; - }).apply(this, arguments); - } - function wt(e2, t3) { - if ("function" != typeof t3 && null !== t3) - throw new TypeError("Super expression must either be null or a function"); - Object.defineProperty(e2, "prototype", { value: Object.create(t3 && t3.prototype, { constructor: { value: e2, writable: true, configurable: true } }), writable: false }), t3 && kt(e2, t3); - } - function gt(e2) { - return (gt = Object.setPrototypeOf ? Object.getPrototypeOf : function(e3) { - return e3.__proto__ || Object.getPrototypeOf(e3); - })(e2); - } - function kt(e2, t3) { - return (kt = Object.setPrototypeOf || function(e3, t4) { - return e3.__proto__ = t4, e3; - })(e2, t3); - } - function bt(e2) { - if (void 0 === e2) - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - return e2; - } - function St(e2, t3) { - if (t3 && ("object" == typeof t3 || "function" == typeof t3)) - return t3; - if (void 0 !== t3) - throw new TypeError("Derived constructors may only return object or undefined"); - return bt(e2); - } - function Ct(e2) { - var t3 = function() { - if ("undefined" == typeof Reflect || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if ("function" == typeof Proxy) - return true; + var result2 = true; + stack.set(object, other); + stack.set(other, object); + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], othValue = other[key]; + if (customizer) { + var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack); + } + if (!(compared === undefined2 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { + result2 = false; + break; + } + skipCtor || (skipCtor = key == "constructor"); + } + if (result2 && !skipCtor) { + var objCtor = object.constructor, othCtor = other.constructor; + if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) { + result2 = false; + } + } + stack["delete"](object); + stack["delete"](other); + return result2; + } + function flatRest(func) { + return setToString(overRest(func, undefined2, flatten), func + ""); + } + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + var getData = !metaMap ? noop2 : function(func) { + return metaMap.get(func); + }; + function getFuncName(func) { + var result2 = func.name + "", array = realNames[result2], length = hasOwnProperty.call(realNames, result2) ? array.length : 0; + while (length--) { + var data = array[length], otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result2; + } + function getHolder(func) { + var object = hasOwnProperty.call(lodash, "placeholder") ? lodash : func; + return object.placeholder; + } + function getIteratee() { + var result2 = lodash.iteratee || iteratee; + result2 = result2 === iteratee ? baseIteratee : result2; + return arguments.length ? result2(arguments[0], arguments[1]) : result2; + } + function getMapData(map3, key) { + var data = map3.__data__; + return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; + } + function getMatchData(object) { + var result2 = keys(object), length = result2.length; + while (length--) { + var key = result2[length], value = object[key]; + result2[length] = [key, value, isStrictComparable(value)]; + } + return result2; + } + function getNative(object, key) { + var value = getValue2(object, key); + return baseIsNative(value) ? value : undefined2; + } + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; try { - return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })), true; - } catch (e3) { + value[symToStringTag] = undefined2; + var unmasked = true; + } catch (e) { + } + var result2 = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result2; + } + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object2(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result2 = []; + while (object) { + arrayPush(result2, getSymbols(object)); + object = getPrototype(object); + } + return result2; + }; + var getTag = baseGetTag; + if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) { + getTag = function(value) { + var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined2, ctorString = Ctor ? toSource(Ctor) : ""; + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: + return dataViewTag; + case mapCtorString: + return mapTag; + case promiseCtorString: + return promiseTag; + case setCtorString: + return setTag; + case weakMapCtorString: + return weakMapTag; + } + } + return result2; + }; + } + function getView(start, end, transforms) { + var index = -1, length = transforms.length; + while (++index < length) { + var data = transforms[index], size2 = data.size; + switch (data.type) { + case "drop": + start += size2; + break; + case "dropRight": + end -= size2; + break; + case "take": + end = nativeMin(end, start + size2); + break; + case "takeRight": + start = nativeMax(start, end - size2); + break; + } + } + return { "start": start, "end": end }; + } + function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; + } + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + var index = -1, length = path.length, result2 = false; + while (++index < length) { + var key = toKey(path[index]); + if (!(result2 = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result2 || ++index != length) { + return result2; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object)); + } + function initCloneArray(array) { + var length = array.length, result2 = new array.constructor(length); + if (length && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) { + result2.index = array.index; + result2.input = array.input; + } + return result2; + } + function initCloneObject(object) { + return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {}; + } + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + case boolTag: + case dateTag: + return new Ctor(+object); + case dataViewTag: + return cloneDataView(object, isDeep); + case float32Tag: + case float64Tag: + case int8Tag: + case int16Tag: + case int32Tag: + case uint8Tag: + case uint8ClampedTag: + case uint16Tag: + case uint32Tag: + return cloneTypedArray(object, isDeep); + case mapTag: + return new Ctor(); + case numberTag: + case stringTag: + return new Ctor(object); + case regexpTag: + return cloneRegExp(object); + case setTag: + return new Ctor(); + case symbolTag: + return cloneSymbol(object); + } + } + function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? "& " : "") + details[lastIndex]; + details = details.join(length > 2 ? ", " : " "); + return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n"); + } + function isFlattenable(value) { + return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]); + } + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); + } + function isIterateeCall(value, index, object) { + if (!isObject(object)) { return false; } - }(); - return function() { - var r4, a3 = gt(e2); - if (t3) { - var n3 = gt(this).constructor; - r4 = Reflect.construct(a3, arguments, n3); - } else - r4 = a3.apply(this, arguments); - return St(this, r4); - }; - } - function _t(e2) { - return function(e3) { - if (Array.isArray(e3)) - return Mt(e3); - }(e2) || function(e3) { - if ("undefined" != typeof Symbol && null != e3[Symbol.iterator] || null != e3["@@iterator"]) - return Array.from(e3); - }(e2) || function(e3, t3) { - if (!e3) + var type = typeof index; + if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) { + return eq(object[index], value); + } + return false; + } + function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object); + } + function isKeyable(value) { + var type = typeof value; + return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; + } + function isLaziable(func) { + var funcName = getFuncName(func), other = lodash[funcName]; + if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) { + return false; + } + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; + } + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + var isMaskable = coreJsData ? isFunction : stubFalse; + function isPrototype(value) { + var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; + return value === proto; + } + function isStrictComparable(value) { + return value === value && !isObject(value); + } + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && (srcValue !== undefined2 || key in Object2(object)); + }; + } + function memoizeCapped(func) { + var result2 = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + var cache = result2.cache; + return result2; + } + function mergeData(data, source) { + var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG; + if (!(isCommon || isCombo)) { + return data; + } + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + value = source[7]; + if (value) { + data[7] = value; + } + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + if (data[9] == null) { + data[9] = source[9]; + } + data[0] = source[0]; + data[1] = newBitmask; + return data; + } + function nativeKeysIn(object) { + var result2 = []; + if (object != null) { + for (var key in Object2(object)) { + result2.push(key); + } + } + return result2; + } + function objectToString(value) { + return nativeObjectToString.call(value); + } + function overRest(func, start, transform2) { + start = nativeMax(start === undefined2 ? func.length - 1 : start, 0); + return function() { + var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array2(length); + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array2(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform2(array); + return apply(func, this, otherArgs); + }; + } + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + function reorder(array, indexes) { + var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array); + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined2; + } + return array; + } + function safeGet(object, key) { + if (key === "constructor" && typeof object[key] === "function") { return; - if ("string" == typeof e3) - return Mt(e3, t3); - var r4 = Object.prototype.toString.call(e3).slice(8, -1); - "Object" === r4 && e3.constructor && (r4 = e3.constructor.name); - if ("Map" === r4 || "Set" === r4) - return Array.from(e3); - if ("Arguments" === r4 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r4)) - return Mt(e3, t3); - }(e2) || function() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - }(); - } - function Mt(e2, t3) { - (null == t3 || t3 > e2.length) && (t3 = e2.length); - for (var r4 = 0, a3 = new Array(t3); r4 < t3; r4++) - a3[r4] = e2[r4]; - return a3; - } - function Pt(e2, t3) { - switch (e2) { - case "P": - return t3.date({ width: "short" }); - case "PP": - return t3.date({ width: "medium" }); - case "PPP": - return t3.date({ width: "long" }); - case "PPPP": - default: - return t3.date({ width: "full" }); + } + if (key == "__proto__") { + return; + } + return object[key]; } - } - function Et(e2, t3) { - switch (e2) { - case "p": - return t3.time({ width: "short" }); - case "pp": - return t3.time({ width: "medium" }); - case "ppp": - return t3.time({ width: "long" }); - case "pppp": - default: - return t3.time({ width: "full" }); + var setData = shortOut(baseSetData); + var setTimeout2 = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; + var setToString = shortOut(baseSetToString); + function setWrapToString(wrapper, reference, bitmask) { + var source = reference + ""; + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); } - } - var Nt = { p: Et, P: function(e2, t3) { - var r4, a3 = e2.match(/(P+)(p+)?/) || [], n3 = a3[1], o3 = a3[2]; - if (!o3) - return Pt(e2, t3); - switch (n3) { - case "P": - r4 = t3.dateTime({ width: "short" }); - break; - case "PP": - r4 = t3.dateTime({ width: "medium" }); - break; - case "PPP": - r4 = t3.dateTime({ width: "long" }); - break; - case "PPPP": - default: - r4 = t3.dateTime({ width: "full" }); + function shortOut(func) { + var count = 0, lastCalled = 0; + return function() { + var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined2, arguments); + }; } - return r4.replace("{{date}}", Pt(n3, t3)).replace("{{time}}", Et(o3, t3)); - } }, xt = 12, Ot = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; - function Yt(e2) { - var t3 = e2 ? "string" == typeof e2 || e2 instanceof String ? pt.default(e2) : st.default(e2) : new Date(); - return Tt(t3) ? t3 : null; - } - function It(e2, t3, r4, a3, n3) { - var o3 = null, s3 = Xt(r4) || Xt(Jt()), i3 = true; - return Array.isArray(t3) ? (t3.forEach(function(t4) { - var p3 = it.default(e2, t4, new Date(), { locale: s3 }); - a3 && (i3 = Tt(p3, n3) && e2 === Lt(p3, t4, r4)), Tt(p3, n3) && i3 && (o3 = p3); - }), o3) : (o3 = it.default(e2, t3, new Date(), { locale: s3 }), a3 ? i3 = Tt(o3) && e2 === Lt(o3, t3, r4) : Tt(o3) || (t3 = t3.match(Ot).map(function(e3) { - var t4 = e3[0]; - return "p" === t4 || "P" === t4 ? s3 ? (0, Nt[t4])(e3, s3.formatLong) : t4 : e3; - }).join(""), e2.length > 0 && (o3 = it.default(e2, t3.slice(0, e2.length), new Date())), Tt(o3) || (o3 = new Date(e2))), Tt(o3) && i3 ? o3 : null); - } - function Tt(e2, t3) { - return t3 = t3 || new Date("1/1/1000"), fe.default(e2) && !nt.default(e2, t3); - } - function Lt(e2, t3, r4) { - if ("en" === r4) - return he.default(e2, t3, { awareOfUnicodeTokens: true }); - var a3 = Xt(r4); - return r4 && !a3 && console.warn('A locale object was not found for the provided string ["'.concat(r4, '"].')), !a3 && Jt() && Xt(Jt()) && (a3 = Xt(Jt())), he.default(e2, t3, { locale: a3 || null, awareOfUnicodeTokens: true }); - } - function Rt(e2, t3) { - var r4 = t3.dateFormat, a3 = t3.locale; - return e2 && Lt(e2, Array.isArray(r4) ? r4[0] : r4, a3) || ""; - } - function Ft(e2, t3) { - var r4 = t3.hour, a3 = void 0 === r4 ? 0 : r4, n3 = t3.minute, o3 = void 0 === n3 ? 0 : n3, s3 = t3.second, i3 = void 0 === s3 ? 0 : s3; - return Fe.default(Re.default(Le.default(e2, i3), o3), a3); - } - function At(e2, t3) { - var r4 = t3 && Xt(t3) || Jt() && Xt(Jt()); - return xe.default(e2, r4 ? { locale: r4 } : null); - } - function qt(e2, t3) { - return Lt(e2, "ddd", t3); - } - function Wt(e2) { - return Ve.default(e2); - } - function Bt(e2, t3, r4) { - var a3 = Xt(t3 || Jt()); - return Ue.default(e2, { locale: a3, weekStartsOn: r4 }); - } - function Kt(e2) { - return $e.default(e2); - } - function Ht(e2) { - return Ge.default(e2); - } - function jt(e2) { - return ze.default(e2); - } - function Qt(e2, t3) { - return e2 && t3 ? tt.default(e2, t3) : !e2 && !t3; - } - function Vt(e2, t3) { - return e2 && t3 ? et.default(e2, t3) : !e2 && !t3; - } - function Ut(e2, t3) { - return e2 && t3 ? rt.default(e2, t3) : !e2 && !t3; - } - function $t(e2, t3) { - return e2 && t3 ? Ze.default(e2, t3) : !e2 && !t3; - } - function zt(e2, t3) { - return e2 && t3 ? Xe.default(e2, t3) : !e2 && !t3; - } - function Gt(e2, t3, r4) { - var a3, n3 = Ve.default(t3), o3 = Je.default(r4); - try { - a3 = ot.default(e2, { start: n3, end: o3 }); - } catch (e3) { - a3 = false; + function shuffleSelf(array, size2) { + var index = -1, length = array.length, lastIndex = length - 1; + size2 = size2 === undefined2 ? length : size2; + while (++index < size2) { + var rand = baseRandom(index, lastIndex), value = array[rand]; + array[rand] = array[index]; + array[index] = value; + } + array.length = size2; + return array; } - return a3; - } - function Jt() { - return ("undefined" != typeof window ? window : globalThis).__localeId__; - } - function Xt(e2) { - if ("string" == typeof e2) { - var t3 = "undefined" != typeof window ? window : globalThis; - return t3.__localeData__ ? t3.__localeData__[e2] : null; - } - return e2; - } - function Zt(e2, t3) { - return Lt(Ae.default(Yt(), e2), "LLLL", t3); - } - function er(e2, t3) { - return Lt(Ae.default(Yt(), e2), "LLL", t3); - } - function tr(e2, t3) { - return Lt(qe.default(Yt(), e2), "QQQ", t3); - } - function rr(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r4 = t3.minDate, a3 = t3.maxDate, n3 = t3.excludeDates, o3 = t3.excludeDateIntervals, s3 = t3.includeDates, i3 = t3.includeDateIntervals, p3 = t3.filterDate; - return lr(e2, { minDate: r4, maxDate: a3 }) || n3 && n3.some(function(t4) { - return $t(e2, t4); - }) || o3 && o3.some(function(t4) { - var r5 = t4.start, a4 = t4.end; - return ot.default(e2, { start: r5, end: a4 }); - }) || s3 && !s3.some(function(t4) { - return $t(e2, t4); - }) || i3 && !i3.some(function(t4) { - var r5 = t4.start, a4 = t4.end; - return ot.default(e2, { start: r5, end: a4 }); - }) || p3 && !p3(Yt(e2)) || false; - } - function ar(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r4 = t3.excludeDates, a3 = t3.excludeDateIntervals; - return a3 && a3.length > 0 ? a3.some(function(t4) { - var r5 = t4.start, a4 = t4.end; - return ot.default(e2, { start: r5, end: a4 }); - }) : r4 && r4.some(function(t4) { - return $t(e2, t4); - }) || false; - } - function nr(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r4 = t3.minDate, a3 = t3.maxDate, n3 = t3.excludeDates, o3 = t3.includeDates, s3 = t3.filterDate; - return lr(e2, { minDate: r4, maxDate: a3 }) || n3 && n3.some(function(t4) { - return Vt(e2, t4); - }) || o3 && !o3.some(function(t4) { - return Vt(e2, t4); - }) || s3 && !s3(Yt(e2)) || false; - } - function or(e2, t3, r4, a3) { - var n3 = Ie.default(e2), o3 = Oe.default(e2), s3 = Ie.default(t3), i3 = Oe.default(t3), p3 = Ie.default(a3); - return n3 === s3 && n3 === p3 ? o3 <= r4 && r4 <= i3 : n3 < s3 ? p3 === n3 && o3 <= r4 || p3 === s3 && i3 >= r4 || p3 < s3 && p3 > n3 : void 0; - } - function sr(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r4 = t3.minDate, a3 = t3.maxDate, n3 = t3.excludeDates, o3 = t3.includeDates, s3 = t3.filterDate; - return lr(e2, { minDate: r4, maxDate: a3 }) || n3 && n3.some(function(t4) { - return Ut(e2, t4); - }) || o3 && !o3.some(function(t4) { - return Ut(e2, t4); - }) || s3 && !s3(Yt(e2)) || false; - } - function ir(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r4 = t3.minDate, a3 = t3.maxDate, n3 = new Date(e2, 0, 1); - return lr(n3, { minDate: r4, maxDate: a3 }) || false; - } - function pr(e2, t3, r4, a3) { - var n3 = Ie.default(e2), o3 = Ye.default(e2), s3 = Ie.default(t3), i3 = Ye.default(t3), p3 = Ie.default(a3); - return n3 === s3 && n3 === p3 ? o3 <= r4 && r4 <= i3 : n3 < s3 ? p3 === n3 && o3 <= r4 || p3 === s3 && i3 >= r4 || p3 < s3 && p3 > n3 : void 0; - } - function lr(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r4 = t3.minDate, a3 = t3.maxDate; - return r4 && He.default(e2, r4) < 0 || a3 && He.default(e2, a3) > 0; - } - function dr(e2, t3) { - return t3.some(function(t4) { - return Pe.default(t4) === Pe.default(e2) && Me.default(t4) === Me.default(e2); + var stringToPath = memoizeCapped(function(string) { + var result2 = []; + if (string.charCodeAt(0) === 46) { + result2.push(""); + } + string.replace(rePropName, function(match, number, quote, subString) { + result2.push(quote ? subString.replace(reEscapeChar, "$1") : number || match); + }); + return result2; }); - } - function cr(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r4 = t3.excludeTimes, a3 = t3.includeTimes, n3 = t3.filterTime; - return r4 && dr(e2, r4) || a3 && !dr(e2, a3) || n3 && !n3(e2) || false; - } - function ur(e2, t3) { - var r4 = t3.minTime, a3 = t3.maxTime; - if (!r4 || !a3) - throw new Error("Both minTime and maxTime props required"); - var n3, o3 = Yt(), s3 = Fe.default(Re.default(o3, Me.default(e2)), Pe.default(e2)), i3 = Fe.default(Re.default(o3, Me.default(r4)), Pe.default(r4)), p3 = Fe.default(Re.default(o3, Me.default(a3)), Pe.default(a3)); - try { - n3 = !ot.default(s3, { start: i3, end: p3 }); - } catch (e3) { - n3 = false; - } - return n3; - } - function fr(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r4 = t3.minDate, a3 = t3.includeDates, n3 = Se.default(e2, 1); - return r4 && je.default(r4, n3) > 0 || a3 && a3.every(function(e3) { - return je.default(e3, n3) > 0; - }) || false; - } - function hr(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r4 = t3.maxDate, a3 = t3.includeDates, n3 = we.default(e2, 1); - return r4 && je.default(n3, r4) > 0 || a3 && a3.every(function(e3) { - return je.default(n3, e3) > 0; - }) || false; - } - function mr(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r4 = t3.minDate, a3 = t3.includeDates, n3 = Ce.default(e2, 1); - return r4 && Qe.default(r4, n3) > 0 || a3 && a3.every(function(e3) { - return Qe.default(e3, n3) > 0; - }) || false; - } - function yr(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r4 = t3.maxDate, a3 = t3.includeDates, n3 = ge.default(e2, 1); - return r4 && Qe.default(n3, r4) > 0 || a3 && a3.every(function(e3) { - return Qe.default(n3, e3) > 0; - }) || false; - } - function Dr(e2) { - var t3 = e2.minDate, r4 = e2.includeDates; - if (r4 && t3) { - var a3 = r4.filter(function(e3) { - return He.default(e3, t3) >= 0; - }); - return Be.default(a3); - } - return r4 ? Be.default(r4) : t3; - } - function vr(e2) { - var t3 = e2.maxDate, r4 = e2.includeDates; - if (r4 && t3) { - var a3 = r4.filter(function(e3) { - return He.default(e3, t3) <= 0; - }); - return Ke.default(a3); - } - return r4 ? Ke.default(r4) : t3; - } - function wr() { - for (var e2 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "react-datepicker__day--highlighted", r4 = /* @__PURE__ */ new Map(), a3 = 0, n3 = e2.length; a3 < n3; a3++) { - var o3 = e2[a3]; - if (ue.default(o3)) { - var s3 = Lt(o3, "MM.dd.yyyy"), i3 = r4.get(s3) || []; - i3.includes(t3) || (i3.push(t3), r4.set(s3, i3)); - } else if ("object" === ft(o3)) { - var p3 = Object.keys(o3), l3 = p3[0], d3 = o3[p3[0]]; - if ("string" == typeof l3 && d3.constructor === Array) - for (var c3 = 0, u3 = d3.length; c3 < u3; c3++) { - var f3 = Lt(d3[c3], "MM.dd.yyyy"), h3 = r4.get(f3) || []; - h3.includes(l3) || (h3.push(l3), r4.set(f3, h3)); - } + function toKey(value) { + if (typeof value == "string" || isSymbol(value)) { + return value; } + var result2 = value + ""; + return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; } - return r4; - } - function gr(e2, t3, r4, a3, n3) { - for (var o3 = n3.length, s3 = [], i3 = 0; i3 < o3; i3++) { - var p3 = me.default(ye.default(e2, Pe.default(n3[i3])), Me.default(n3[i3])), l3 = me.default(e2, (r4 + 1) * a3); - at.default(p3, t3) && nt.default(p3, l3) && s3.push(n3[i3]); - } - return s3; - } - function kr(e2) { - return e2 < 10 ? "0".concat(e2) : "".concat(e2); - } - function br(e2) { - var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : xt, r4 = Math.ceil(Ie.default(e2) / t3) * t3, a3 = r4 - (t3 - 1); - return { startPeriod: a3, endPeriod: r4 }; - } - function Sr(e2, t3, r4, a3) { - for (var n3 = [], o3 = 0; o3 < 2 * t3 + 1; o3++) { - var s3 = e2 + t3 - o3, i3 = true; - r4 && (i3 = Ie.default(r4) <= s3), a3 && i3 && (i3 = Ie.default(a3) >= s3), i3 && n3.push(s3); - } - return n3; - } - var Cr = function(e2) { - wt(a3, e2); - var r4 = Ct(a3); - function a3(e3) { - var n3; - ht(this, a3), Dt(bt(n3 = r4.call(this, e3)), "renderOptions", function() { - var e4 = n3.props.year, t3 = n3.state.yearsList.map(function(t4) { - return de.default.createElement("div", { className: e4 === t4 ? "react-datepicker__year-option react-datepicker__year-option--selected_year" : "react-datepicker__year-option", key: t4, onClick: n3.onChange.bind(bt(n3), t4), "aria-selected": e4 === t4 ? "true" : void 0 }, e4 === t4 ? de.default.createElement("span", { className: "react-datepicker__year-option--selected" }, "\u2713") : "", t4); - }), r5 = n3.props.minDate ? Ie.default(n3.props.minDate) : null, a4 = n3.props.maxDate ? Ie.default(n3.props.maxDate) : null; - return a4 && n3.state.yearsList.find(function(e5) { - return e5 === a4; - }) || t3.unshift(de.default.createElement("div", { className: "react-datepicker__year-option", key: "upcoming", onClick: n3.incrementYears }, de.default.createElement("a", { className: "react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming" }))), r5 && n3.state.yearsList.find(function(e5) { - return e5 === r5; - }) || t3.push(de.default.createElement("div", { className: "react-datepicker__year-option", key: "previous", onClick: n3.decrementYears }, de.default.createElement("a", { className: "react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous" }))), t3; - }), Dt(bt(n3), "onChange", function(e4) { - n3.props.onChange(e4); - }), Dt(bt(n3), "handleClickOutside", function() { - n3.props.onCancel(); - }), Dt(bt(n3), "shiftYears", function(e4) { - var t3 = n3.state.yearsList.map(function(t4) { - return t4 + e4; - }); - n3.setState({ yearsList: t3 }); - }), Dt(bt(n3), "incrementYears", function() { - return n3.shiftYears(1); - }), Dt(bt(n3), "decrementYears", function() { - return n3.shiftYears(-1); - }); - var o3 = e3.yearDropdownItemNumber, s3 = e3.scrollableYearDropdown, i3 = o3 || (s3 ? 10 : 5); - return n3.state = { yearsList: Sr(n3.props.year, i3, n3.props.minDate, n3.props.maxDate) }, n3.dropdownRef = t2.createRef(), n3; - } - return yt(a3, [{ key: "componentDidMount", value: function() { - var e3 = this.dropdownRef.current; - e3 && (e3.scrollTop = e3.scrollHeight / 2 - e3.clientHeight / 2); - } }, { key: "render", value: function() { - var e3 = ce.default({ "react-datepicker__year-dropdown": true, "react-datepicker__year-dropdown--scrollable": this.props.scrollableYearDropdown }); - return de.default.createElement("div", { className: e3, ref: this.dropdownRef }, this.renderOptions()); - } }]), a3; - }(de.default.Component), _r = lt.default(Cr), Mr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4() { - var e3; - ht(this, r4); - for (var a3 = arguments.length, n3 = new Array(a3), o3 = 0; o3 < a3; o3++) - n3[o3] = arguments[o3]; - return Dt(bt(e3 = t3.call.apply(t3, [this].concat(n3))), "state", { dropdownVisible: false }), Dt(bt(e3), "renderSelectOptions", function() { - for (var t4 = e3.props.minDate ? Ie.default(e3.props.minDate) : 1900, r5 = e3.props.maxDate ? Ie.default(e3.props.maxDate) : 2100, a4 = [], n4 = t4; n4 <= r5; n4++) - a4.push(de.default.createElement("option", { key: n4, value: n4 }, n4)); - return a4; - }), Dt(bt(e3), "onSelectChange", function(t4) { - e3.onChange(t4.target.value); - }), Dt(bt(e3), "renderSelectMode", function() { - return de.default.createElement("select", { value: e3.props.year, className: "react-datepicker__year-select", onChange: e3.onSelectChange }, e3.renderSelectOptions()); - }), Dt(bt(e3), "renderReadView", function(t4) { - return de.default.createElement("div", { key: "read", style: { visibility: t4 ? "visible" : "hidden" }, className: "react-datepicker__year-read-view", onClick: function(t5) { - return e3.toggleDropdown(t5); - } }, de.default.createElement("span", { className: "react-datepicker__year-read-view--down-arrow" }), de.default.createElement("span", { className: "react-datepicker__year-read-view--selected-year" }, e3.props.year)); - }), Dt(bt(e3), "renderDropdown", function() { - return de.default.createElement(_r, { key: "dropdown", year: e3.props.year, onChange: e3.onChange, onCancel: e3.toggleDropdown, minDate: e3.props.minDate, maxDate: e3.props.maxDate, scrollableYearDropdown: e3.props.scrollableYearDropdown, yearDropdownItemNumber: e3.props.yearDropdownItemNumber }); - }), Dt(bt(e3), "renderScrollMode", function() { - var t4 = e3.state.dropdownVisible, r5 = [e3.renderReadView(!t4)]; - return t4 && r5.unshift(e3.renderDropdown()), r5; - }), Dt(bt(e3), "onChange", function(t4) { - e3.toggleDropdown(), t4 !== e3.props.year && e3.props.onChange(t4); - }), Dt(bt(e3), "toggleDropdown", function(t4) { - e3.setState({ dropdownVisible: !e3.state.dropdownVisible }, function() { - e3.props.adjustDateOnChange && e3.handleYearChange(e3.props.date, t4); - }); - }), Dt(bt(e3), "handleYearChange", function(t4, r5) { - e3.onSelect(t4, r5), e3.setOpen(); - }), Dt(bt(e3), "onSelect", function(t4, r5) { - e3.props.onSelect && e3.props.onSelect(t4, r5); - }), Dt(bt(e3), "setOpen", function() { - e3.props.setOpen && e3.props.setOpen(true); - }), e3; - } - return yt(r4, [{ key: "render", value: function() { - var e3; - switch (this.props.dropdownMode) { - case "scroll": - e3 = this.renderScrollMode(); - break; - case "select": - e3 = this.renderSelectMode(); - } - return de.default.createElement("div", { className: "react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--".concat(this.props.dropdownMode) }, e3); - } }]), r4; - }(de.default.Component), Pr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4() { - var e3; - ht(this, r4); - for (var a3 = arguments.length, n3 = new Array(a3), o3 = 0; o3 < a3; o3++) - n3[o3] = arguments[o3]; - return Dt(bt(e3 = t3.call.apply(t3, [this].concat(n3))), "isSelectedMonth", function(t4) { - return e3.props.month === t4; - }), Dt(bt(e3), "renderOptions", function() { - return e3.props.monthNames.map(function(t4, r5) { - return de.default.createElement("div", { className: e3.isSelectedMonth(r5) ? "react-datepicker__month-option react-datepicker__month-option--selected_month" : "react-datepicker__month-option", key: t4, onClick: e3.onChange.bind(bt(e3), r5), "aria-selected": e3.isSelectedMonth(r5) ? "true" : void 0 }, e3.isSelectedMonth(r5) ? de.default.createElement("span", { className: "react-datepicker__month-option--selected" }, "\u2713") : "", t4); - }); - }), Dt(bt(e3), "onChange", function(t4) { - return e3.props.onChange(t4); - }), Dt(bt(e3), "handleClickOutside", function() { - return e3.props.onCancel(); - }), e3; - } - return yt(r4, [{ key: "render", value: function() { - return de.default.createElement("div", { className: "react-datepicker__month-dropdown" }, this.renderOptions()); - } }]), r4; - }(de.default.Component), Er = lt.default(Pr), Nr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4() { - var e3; - ht(this, r4); - for (var a3 = arguments.length, n3 = new Array(a3), o3 = 0; o3 < a3; o3++) - n3[o3] = arguments[o3]; - return Dt(bt(e3 = t3.call.apply(t3, [this].concat(n3))), "state", { dropdownVisible: false }), Dt(bt(e3), "renderSelectOptions", function(e4) { - return e4.map(function(e5, t4) { - return de.default.createElement("option", { key: t4, value: t4 }, e5); - }); - }), Dt(bt(e3), "renderSelectMode", function(t4) { - return de.default.createElement("select", { value: e3.props.month, className: "react-datepicker__month-select", onChange: function(t5) { - return e3.onChange(t5.target.value); - } }, e3.renderSelectOptions(t4)); - }), Dt(bt(e3), "renderReadView", function(t4, r5) { - return de.default.createElement("div", { key: "read", style: { visibility: t4 ? "visible" : "hidden" }, className: "react-datepicker__month-read-view", onClick: e3.toggleDropdown }, de.default.createElement("span", { className: "react-datepicker__month-read-view--down-arrow" }), de.default.createElement("span", { className: "react-datepicker__month-read-view--selected-month" }, r5[e3.props.month])); - }), Dt(bt(e3), "renderDropdown", function(t4) { - return de.default.createElement(Er, { key: "dropdown", month: e3.props.month, monthNames: t4, onChange: e3.onChange, onCancel: e3.toggleDropdown }); - }), Dt(bt(e3), "renderScrollMode", function(t4) { - var r5 = e3.state.dropdownVisible, a4 = [e3.renderReadView(!r5, t4)]; - return r5 && a4.unshift(e3.renderDropdown(t4)), a4; - }), Dt(bt(e3), "onChange", function(t4) { - e3.toggleDropdown(), t4 !== e3.props.month && e3.props.onChange(t4); - }), Dt(bt(e3), "toggleDropdown", function() { - return e3.setState({ dropdownVisible: !e3.state.dropdownVisible }); - }), e3; - } - return yt(r4, [{ key: "render", value: function() { - var e3, t4 = this, r5 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map(this.props.useShortMonthInDropdown ? function(e4) { - return er(e4, t4.props.locale); - } : function(e4) { - return Zt(e4, t4.props.locale); - }); - switch (this.props.dropdownMode) { - case "scroll": - e3 = this.renderScrollMode(r5); - break; - case "select": - e3 = this.renderSelectMode(r5); - } - return de.default.createElement("div", { className: "react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--".concat(this.props.dropdownMode) }, e3); - } }]), r4; - }(de.default.Component); - function xr(e2, t3) { - for (var r4 = [], a3 = Kt(e2), n3 = Kt(t3); !at.default(a3, n3); ) - r4.push(Yt(a3)), a3 = we.default(a3, 1); - return r4; - } - var Or = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4(e3) { - var a3; - return ht(this, r4), Dt(bt(a3 = t3.call(this, e3)), "renderOptions", function() { - return a3.state.monthYearsList.map(function(e4) { - var t4 = Te.default(e4), r5 = Qt(a3.props.date, e4) && Vt(a3.props.date, e4); - return de.default.createElement("div", { className: r5 ? "react-datepicker__month-year-option--selected_month-year" : "react-datepicker__month-year-option", key: t4, onClick: a3.onChange.bind(bt(a3), t4), "aria-selected": r5 ? "true" : void 0 }, r5 ? de.default.createElement("span", { className: "react-datepicker__month-year-option--selected" }, "\u2713") : "", Lt(e4, a3.props.dateFormat, a3.props.locale)); - }); - }), Dt(bt(a3), "onChange", function(e4) { - return a3.props.onChange(e4); - }), Dt(bt(a3), "handleClickOutside", function() { - a3.props.onCancel(); - }), a3.state = { monthYearsList: xr(a3.props.minDate, a3.props.maxDate) }, a3; - } - return yt(r4, [{ key: "render", value: function() { - var e3 = ce.default({ "react-datepicker__month-year-dropdown": true, "react-datepicker__month-year-dropdown--scrollable": this.props.scrollableMonthYearDropdown }); - return de.default.createElement("div", { className: e3 }, this.renderOptions()); - } }]), r4; - }(de.default.Component), Yr = lt.default(Or), Ir = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4() { - var e3; - ht(this, r4); - for (var a3 = arguments.length, n3 = new Array(a3), o3 = 0; o3 < a3; o3++) - n3[o3] = arguments[o3]; - return Dt(bt(e3 = t3.call.apply(t3, [this].concat(n3))), "state", { dropdownVisible: false }), Dt(bt(e3), "renderSelectOptions", function() { - for (var t4 = Kt(e3.props.minDate), r5 = Kt(e3.props.maxDate), a4 = []; !at.default(t4, r5); ) { - var n4 = Te.default(t4); - a4.push(de.default.createElement("option", { key: n4, value: n4 }, Lt(t4, e3.props.dateFormat, e3.props.locale))), t4 = we.default(t4, 1); + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) { + } + try { + return func + ""; + } catch (e) { } - return a4; - }), Dt(bt(e3), "onSelectChange", function(t4) { - e3.onChange(t4.target.value); - }), Dt(bt(e3), "renderSelectMode", function() { - return de.default.createElement("select", { value: Te.default(Kt(e3.props.date)), className: "react-datepicker__month-year-select", onChange: e3.onSelectChange }, e3.renderSelectOptions()); - }), Dt(bt(e3), "renderReadView", function(t4) { - var r5 = Lt(e3.props.date, e3.props.dateFormat, e3.props.locale); - return de.default.createElement("div", { key: "read", style: { visibility: t4 ? "visible" : "hidden" }, className: "react-datepicker__month-year-read-view", onClick: function(t5) { - return e3.toggleDropdown(t5); - } }, de.default.createElement("span", { className: "react-datepicker__month-year-read-view--down-arrow" }), de.default.createElement("span", { className: "react-datepicker__month-year-read-view--selected-month-year" }, r5)); - }), Dt(bt(e3), "renderDropdown", function() { - return de.default.createElement(Yr, { key: "dropdown", date: e3.props.date, dateFormat: e3.props.dateFormat, onChange: e3.onChange, onCancel: e3.toggleDropdown, minDate: e3.props.minDate, maxDate: e3.props.maxDate, scrollableMonthYearDropdown: e3.props.scrollableMonthYearDropdown, locale: e3.props.locale }); - }), Dt(bt(e3), "renderScrollMode", function() { - var t4 = e3.state.dropdownVisible, r5 = [e3.renderReadView(!t4)]; - return t4 && r5.unshift(e3.renderDropdown()), r5; - }), Dt(bt(e3), "onChange", function(t4) { - e3.toggleDropdown(); - var r5 = Yt(parseInt(t4)); - Qt(e3.props.date, r5) && Vt(e3.props.date, r5) || e3.props.onChange(r5); - }), Dt(bt(e3), "toggleDropdown", function() { - return e3.setState({ dropdownVisible: !e3.state.dropdownVisible }); - }), e3; - } - return yt(r4, [{ key: "render", value: function() { - var e3; - switch (this.props.dropdownMode) { - case "scroll": - e3 = this.renderScrollMode(); - break; - case "select": - e3 = this.renderSelectMode(); } - return de.default.createElement("div", { className: "react-datepicker__month-year-dropdown-container react-datepicker__month-year-dropdown-container--".concat(this.props.dropdownMode) }, e3); - } }]), r4; - }(de.default.Component), Tr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4() { - var e3; - ht(this, r4); - for (var a3 = arguments.length, n3 = new Array(a3), o3 = 0; o3 < a3; o3++) - n3[o3] = arguments[o3]; - return Dt(bt(e3 = t3.call.apply(t3, [this].concat(n3))), "dayEl", de.default.createRef()), Dt(bt(e3), "handleClick", function(t4) { - !e3.isDisabled() && e3.props.onClick && e3.props.onClick(t4); - }), Dt(bt(e3), "handleMouseEnter", function(t4) { - !e3.isDisabled() && e3.props.onMouseEnter && e3.props.onMouseEnter(t4); - }), Dt(bt(e3), "handleOnKeyDown", function(t4) { - " " === t4.key && (t4.preventDefault(), t4.key = "Enter"), e3.props.handleOnKeyDown(t4); - }), Dt(bt(e3), "isSameDay", function(t4) { - return $t(e3.props.day, t4); - }), Dt(bt(e3), "isKeyboardSelected", function() { - return !e3.props.disabledKeyboardNavigation && !e3.isSameDay(e3.props.selected) && e3.isSameDay(e3.props.preSelection); - }), Dt(bt(e3), "isDisabled", function() { - return rr(e3.props.day, e3.props); - }), Dt(bt(e3), "isExcluded", function() { - return ar(e3.props.day, e3.props); - }), Dt(bt(e3), "getHighLightedClass", function(t4) { - var r5 = e3.props, a4 = r5.day, n4 = r5.highlightDates; - if (!n4) + return ""; + } + function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = "_." + pair[0]; + if (bitmask & pair[1] && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); + } + function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result2.__actions__ = copyArray(wrapper.__actions__); + result2.__index__ = wrapper.__index__; + result2.__values__ = wrapper.__values__; + return result2; + } + function chunk(array, size2, guard) { + if (guard ? isIterateeCall(array, size2, guard) : size2 === undefined2) { + size2 = 1; + } else { + size2 = nativeMax(toInteger(size2), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size2 < 1) { + return []; + } + var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size2)); + while (index < length) { + result2[resIndex++] = baseSlice(array, index, index += size2); + } + return result2; + } + function compact(array) { + var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = []; + while (++index < length) { + var value = array[index]; + if (value) { + result2[resIndex++] = value; + } + } + return result2; + } + function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array2(length - 1), array = arguments[0], index = length; + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + } + var difference = baseRest(function(array, values2) { + return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : []; + }); + var differenceBy = baseRest(function(array, values2) { + var iteratee2 = last2(values2); + if (isArrayLikeObject(iteratee2)) { + iteratee2 = undefined2; + } + return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : []; + }); + var differenceWith = baseRest(function(array, values2) { + var comparator = last2(values2); + if (isArrayLikeObject(comparator)) { + comparator = undefined2; + } + return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined2, comparator) : []; + }); + function drop(array, n2, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); + return baseSlice(array, n2 < 0 ? 0 : n2, length); + } + function dropRight(array, n2, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); + n2 = length - n2; + return baseSlice(array, 0, n2 < 0 ? 0 : n2); + } + function dropRightWhile(array, predicate) { + return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : []; + } + function dropWhile(array, predicate) { + return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : []; + } + function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != "number" && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, getIteratee(predicate, 3), index); + } + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length - 1; + if (fromIndex !== undefined2) { + index = toInteger(fromIndex); + index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return baseFindIndex(array, getIteratee(predicate, 3), index, true); + } + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; + } + function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + depth = depth === undefined2 ? 1 : toInteger(depth); + return baseFlatten(array, depth); + } + function fromPairs(pairs) { + var index = -1, length = pairs == null ? 0 : pairs.length, result2 = {}; + while (++index < length) { + var pair = pairs[index]; + result2[pair[0]] = pair[1]; + } + return result2; + } + function head(array) { + return array && array.length ? array[0] : undefined2; + } + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); + } + function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; + } + var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : []; + }); + var intersectionBy = baseRest(function(arrays) { + var iteratee2 = last2(arrays), mapped = arrayMap(arrays, castArrayLikeObject); + if (iteratee2 === last2(mapped)) { + iteratee2 = undefined2; + } else { + mapped.pop(); + } + return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : []; + }); + var intersectionWith = baseRest(function(arrays) { + var comparator = last2(arrays), mapped = arrayMap(arrays, castArrayLikeObject); + comparator = typeof comparator == "function" ? comparator : undefined2; + if (comparator) { + mapped.pop(); + } + return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : []; + }); + function join(array, separator) { + return array == null ? "" : nativeJoin.call(array, separator); + } + function last2(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined2; + } + function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined2) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true); + } + function nth(array, n2) { + return array && array.length ? baseNth(array, toInteger(n2)) : undefined2; + } + var pull = baseRest(pullAll); + function pullAll(array, values2) { + return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array; + } + function pullAllBy(array, values2, iteratee2) { + return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array; + } + function pullAllWith(array, values2, comparator) { + return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined2, comparator) : array; + } + var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, result2 = baseAt(array, indexes); + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); + return result2; + }); + function remove2(array, predicate) { + var result2 = []; + if (!(array && array.length)) { + return result2; + } + var index = -1, indexes = [], length = array.length; + predicate = getIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result2.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result2; + } + function reverse(array) { + return array == null ? array : nativeReverse.call(array); + } + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != "number" && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } else { + start = start == null ? 0 : toInteger(start); + end = end === undefined2 ? length : toInteger(end); + } + return baseSlice(array, start, end); + } + function sortedIndex(array, value) { + return baseSortedIndex(array, value); + } + function sortedIndexBy(array, value, iteratee2) { + return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2)); + } + function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; + } + } + return -1; + } + function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); + } + function sortedLastIndexBy(array, value, iteratee2) { + return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true); + } + function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; + } + } + return -1; + } + function sortedUniq(array) { + return array && array.length ? baseSortedUniq(array) : []; + } + function sortedUniqBy(array, iteratee2) { + return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : []; + } + function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; + } + function take(array, n2, guard) { + if (!(array && array.length)) { + return []; + } + n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); + return baseSlice(array, 0, n2 < 0 ? 0 : n2); + } + function takeRight(array, n2, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); + n2 = length - n2; + return baseSlice(array, n2 < 0 ? 0 : n2, length); + } + function takeRightWhile(array, predicate) { + return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : []; + } + function takeWhile(array, predicate) { + return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : []; + } + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); + var unionBy = baseRest(function(arrays) { + var iteratee2 = last2(arrays); + if (isArrayLikeObject(iteratee2)) { + iteratee2 = undefined2; + } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)); + }); + var unionWith = baseRest(function(arrays) { + var comparator = last2(arrays); + comparator = typeof comparator == "function" ? comparator : undefined2; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator); + }); + function uniq(array) { + return array && array.length ? baseUniq(array) : []; + } + function uniqBy(array, iteratee2) { + return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : []; + } + function uniqWith(array, comparator) { + comparator = typeof comparator == "function" ? comparator : undefined2; + return array && array.length ? baseUniq(array, undefined2, comparator) : []; + } + function unzip(array) { + if (!(array && array.length)) { + return []; + } + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); + }); + } + function unzipWith(array, iteratee2) { + if (!(array && array.length)) { + return []; + } + var result2 = unzip(array); + if (iteratee2 == null) { + return result2; + } + return arrayMap(result2, function(group) { + return apply(iteratee2, undefined2, group); + }); + } + var without = baseRest(function(array, values2) { + return isArrayLikeObject(array) ? baseDifference(array, values2) : []; + }); + var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); + }); + var xorBy = baseRest(function(arrays) { + var iteratee2 = last2(arrays); + if (isArrayLikeObject(iteratee2)) { + iteratee2 = undefined2; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2)); + }); + var xorWith = baseRest(function(arrays) { + var comparator = last2(arrays); + comparator = typeof comparator == "function" ? comparator : undefined2; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator); + }); + var zip = baseRest(unzip); + function zipObject(props, values2) { + return baseZipObject(props || [], values2 || [], assignValue); + } + function zipObjectDeep(props, values2) { + return baseZipObject(props || [], values2 || [], baseSet); + } + var zipWith = baseRest(function(arrays) { + var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined2; + iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined2; + return unzipWith(arrays, iteratee2); + }); + function chain(value) { + var result2 = lodash(value); + result2.__chain__ = true; + return result2; + } + function tap2(value, interceptor) { + interceptor(value); + return value; + } + function thru(value, interceptor) { + return interceptor(value); + } + var wrapperAt = flatRest(function(paths) { + var length = paths.length, start = length ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) { + return baseAt(object, paths); + }; + if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); + } + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + "func": thru, + "args": [interceptor], + "thisArg": undefined2 + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined2); + } + return array; + }); + }); + function wrapperChain() { + return chain(this); + } + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + function wrapperNext() { + if (this.__values__ === undefined2) { + this.__values__ = toArray(this.value()); + } + var done = this.__index__ >= this.__values__.length, value = done ? undefined2 : this.__values__[this.__index__++]; + return { "done": done, "value": value }; + } + function wrapperToIterator() { + return this; + } + function wrapperPlant(value) { + var result2, parent2 = this; + while (parent2 instanceof baseLodash) { + var clone3 = wrapperClone(parent2); + clone3.__index__ = 0; + clone3.__values__ = undefined2; + if (result2) { + previous.__wrapped__ = clone3; + } else { + result2 = clone3; + } + var previous = clone3; + parent2 = parent2.__wrapped__; + } + previous.__wrapped__ = value; + return result2; + } + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ + "func": thru, + "args": [reverse], + "thisArg": undefined2 + }); + return new LodashWrapper(wrapped, this.__chain__); + } + return this.thru(reverse); + } + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + var countBy = createAggregator(function(result2, value, key) { + if (hasOwnProperty.call(result2, key)) { + ++result2[key]; + } else { + baseAssignValue(result2, key, 1); + } + }); + function every(collection, predicate, guard) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined2; + } + return func(collection, getIteratee(predicate, 3)); + } + function filter2(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, getIteratee(predicate, 3)); + } + var find2 = createFind(findIndex); + var findLast = createFind(findLastIndex); + function flatMap(collection, iteratee2) { + return baseFlatten(map2(collection, iteratee2), 1); + } + function flatMapDeep(collection, iteratee2) { + return baseFlatten(map2(collection, iteratee2), INFINITY); + } + function flatMapDepth(collection, iteratee2, depth) { + depth = depth === undefined2 ? 1 : toInteger(depth); + return baseFlatten(map2(collection, iteratee2), depth); + } + function forEach(collection, iteratee2) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, getIteratee(iteratee2, 3)); + } + function forEachRight(collection, iteratee2) { + var func = isArray(collection) ? arrayEachRight : baseEachRight; + return func(collection, getIteratee(iteratee2, 3)); + } + var groupBy = createAggregator(function(result2, value, key) { + if (hasOwnProperty.call(result2, key)) { + result2[key].push(value); + } else { + baseAssignValue(result2, key, [value]); + } + }); + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0; + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1; + } + var invokeMap = baseRest(function(collection, path, args) { + var index = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : []; + baseEach(collection, function(value) { + result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); + }); + return result2; + }); + var keyBy = createAggregator(function(result2, value, key) { + baseAssignValue(result2, key, value); + }); + function map2(collection, iteratee2) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, getIteratee(iteratee2, 3)); + } + function orderBy(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + orders = guard ? undefined2 : orders; + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseOrderBy(collection, iteratees, orders); + } + var partition = createAggregator(function(result2, value, key) { + result2[key ? 0 : 1].push(value); + }, function() { + return [[], []]; + }); + function reduce(collection, iteratee2, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3; + return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach); + } + function reduceRight(collection, iteratee2, accumulator) { + var func = isArray(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3; + return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight); + } + function reject(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, negate(getIteratee(predicate, 3))); + } + function sample(collection) { + var func = isArray(collection) ? arraySample : baseSample; + return func(collection); + } + function sampleSize(collection, n2, guard) { + if (guard ? isIterateeCall(collection, n2, guard) : n2 === undefined2) { + n2 = 1; + } else { + n2 = toInteger(n2); + } + var func = isArray(collection) ? arraySampleSize : baseSampleSize; + return func(collection, n2); + } + function shuffle(collection) { + var func = isArray(collection) ? arrayShuffle : baseShuffle; + return func(collection); + } + function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; + } + function some(collection, predicate, guard) { + var func = isArray(collection) ? arraySome : baseSome; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined2; + } + return func(collection, getIteratee(predicate, 3)); + } + var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); + }); + var now = ctxNow || function() { + return root.Date.now(); + }; + function after(n2, func) { + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + n2 = toInteger(n2); + return function() { + if (--n2 < 1) { + return func.apply(this, arguments); + } + }; + } + function ary(func, n2, guard) { + n2 = guard ? undefined2 : n2; + n2 = func && n2 == null ? func.length : n2; + return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n2); + } + function before(n2, func) { + var result2; + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + n2 = toInteger(n2); + return function() { + if (--n2 > 0) { + result2 = func.apply(this, arguments); + } + if (n2 <= 1) { + func = undefined2; + } + return result2; + }; + } + var bind = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); + }); + var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); + }); + function curry(func, arity, guard) { + arity = guard ? undefined2 : arity; + var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); + result2.placeholder = curry.placeholder; + return result2; + } + function curryRight(func, arity, guard) { + arity = guard ? undefined2 : arity; + var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); + result2.placeholder = curryRight.placeholder; + return result2; + } + function debounce(func, wait, options) { + var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = "maxWait" in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = "trailing" in options ? !!options.trailing : trailing; + } + function invokeFunc(time) { + var args = lastArgs, thisArg = lastThis; + lastArgs = lastThis = undefined2; + lastInvokeTime = time; + result2 = func.apply(thisArg, args); + return result2; + } + function leadingEdge(time) { + lastInvokeTime = time; + timerId = setTimeout2(timerExpired, wait); + return leading ? invokeFunc(time) : result2; + } + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall; + return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; + } + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime; + return lastCallTime === undefined2 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; + } + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + timerId = setTimeout2(timerExpired, remainingWait(time)); + } + function trailingEdge(time) { + timerId = undefined2; + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined2; + return result2; + } + function cancel() { + if (timerId !== undefined2) { + clearTimeout2(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined2; + } + function flush() { + return timerId === undefined2 ? result2 : trailingEdge(now()); + } + function debounced() { + var time = now(), isInvoking = shouldInvoke(time); + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + if (isInvoking) { + if (timerId === undefined2) { + return leadingEdge(lastCallTime); + } + if (maxing) { + clearTimeout2(timerId); + timerId = setTimeout2(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined2) { + timerId = setTimeout2(timerExpired, wait); + } + return result2; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; + } + var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); + }); + var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); + }); + function flip(func) { + return createWrap(func, WRAP_FLIP_FLAG); + } + function memoize(func, resolver) { + if (typeof func != "function" || resolver != null && typeof resolver != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache; + if (cache.has(key)) { + return cache.get(key); + } + var result2 = func.apply(this, args); + memoized.cache = cache.set(key, result2) || cache; + return result2; + }; + memoized.cache = new (memoize.Cache || MapCache)(); + return memoized; + } + memoize.Cache = MapCache; + function negate(predicate) { + if (typeof predicate != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: + return !predicate.call(this); + case 1: + return !predicate.call(this, args[0]); + case 2: + return !predicate.call(this, args[0], args[1]); + case 3: + return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; + } + function once(func) { + return before(2, func); + } + var overArgs = castRest(function(func, transforms) { + transforms = transforms.length == 1 && isArray(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); + var funcsLength = transforms.length; + return baseRest(function(args) { + var index = -1, length = nativeMin(args.length, funcsLength); + while (++index < length) { + args[index] = transforms[index].call(this, args[index]); + } + return apply(func, this, args); + }); + }); + var partial = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partial)); + return createWrap(func, WRAP_PARTIAL_FLAG, undefined2, partials, holders); + }); + var partialRight = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partialRight)); + return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined2, partials, holders); + }); + var rearg = flatRest(function(func, indexes) { + return createWrap(func, WRAP_REARG_FLAG, undefined2, undefined2, undefined2, indexes); + }); + function rest(func, start) { + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + start = start === undefined2 ? start : toInteger(start); + return baseRest(func, start); + } + function spread(func, start) { + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + start = start == null ? 0 : nativeMax(toInteger(start), 0); + return baseRest(function(args) { + var array = args[start], otherArgs = castSlice(args, 0, start); + if (array) { + arrayPush(otherArgs, array); + } + return apply(func, this, otherArgs); + }); + } + function throttle(func, wait, options) { + var leading = true, trailing = true; + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = "leading" in options ? !!options.leading : leading; + trailing = "trailing" in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + "leading": leading, + "maxWait": wait, + "trailing": trailing + }); + } + function unary(func) { + return ary(func, 1); + } + function wrap(value, wrapper) { + return partial(castFunction(wrapper), value); + } + function castArray() { + if (!arguments.length) { + return []; + } + var value = arguments[0]; + return isArray(value) ? value : [value]; + } + function clone2(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); + } + function cloneWith(value, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); + } + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); + } + function cloneDeepWith(value, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); + } + function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys(source)); + } + function eq(value, other) { + return value === other || value !== value && other !== other; + } + var gt = createRelationalOperation(baseGt); + var gte = createRelationalOperation(function(value, other) { + return value >= other; + }); + var isArguments = baseIsArguments(function() { + return arguments; + }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); + }; + var isArray = Array2.isArray; + var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + function isBoolean2(value) { + return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag; + } + var isBuffer = nativeIsBuffer || stubFalse; + var isDate2 = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject4(value); + } + function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && (isArray(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { return false; - var o4 = Lt(a4, "MM.dd.yyyy"); - return n4.get(o4); - }), Dt(bt(e3), "isInRange", function() { - var t4 = e3.props, r5 = t4.day, a4 = t4.startDate, n4 = t4.endDate; - return !(!a4 || !n4) && Gt(r5, a4, n4); - }), Dt(bt(e3), "isInSelectingRange", function() { - var t4, r5 = e3.props, a4 = r5.day, n4 = r5.selectsStart, o4 = r5.selectsEnd, s3 = r5.selectsRange, i3 = r5.selectsDisabledDaysInRange, p3 = r5.startDate, l3 = r5.endDate, d3 = null !== (t4 = e3.props.selectingDate) && void 0 !== t4 ? t4 : e3.props.preSelection; - return !(!(n4 || o4 || s3) || !d3 || !i3 && e3.isDisabled()) && (n4 && l3 && (nt.default(d3, l3) || zt(d3, l3)) ? Gt(a4, d3, l3) : (o4 && p3 && (at.default(d3, p3) || zt(d3, p3)) || !(!s3 || !p3 || l3 || !at.default(d3, p3) && !zt(d3, p3))) && Gt(a4, p3, d3)); - }), Dt(bt(e3), "isSelectingRangeStart", function() { - var t4; - if (!e3.isInSelectingRange()) - return false; - var r5 = e3.props, a4 = r5.day, n4 = r5.startDate, o4 = r5.selectsStart, s3 = null !== (t4 = e3.props.selectingDate) && void 0 !== t4 ? t4 : e3.props.preSelection; - return $t(a4, o4 ? s3 : n4); - }), Dt(bt(e3), "isSelectingRangeEnd", function() { - var t4; - if (!e3.isInSelectingRange()) - return false; - var r5 = e3.props, a4 = r5.day, n4 = r5.endDate, o4 = r5.selectsEnd, s3 = null !== (t4 = e3.props.selectingDate) && void 0 !== t4 ? t4 : e3.props.preSelection; - return $t(a4, o4 ? s3 : n4); - }), Dt(bt(e3), "isRangeStart", function() { - var t4 = e3.props, r5 = t4.day, a4 = t4.startDate, n4 = t4.endDate; - return !(!a4 || !n4) && $t(a4, r5); - }), Dt(bt(e3), "isRangeEnd", function() { - var t4 = e3.props, r5 = t4.day, a4 = t4.startDate, n4 = t4.endDate; - return !(!a4 || !n4) && $t(n4, r5); - }), Dt(bt(e3), "isWeekend", function() { - var t4 = Ee.default(e3.props.day); - return 0 === t4 || 6 === t4; - }), Dt(bt(e3), "isAfterMonth", function() { - return void 0 !== e3.props.month && (e3.props.month + 1) % 12 === Oe.default(e3.props.day); - }), Dt(bt(e3), "isBeforeMonth", function() { - return void 0 !== e3.props.month && (Oe.default(e3.props.day) + 1) % 12 === e3.props.month; - }), Dt(bt(e3), "isCurrentDay", function() { - return e3.isSameDay(Yt()); - }), Dt(bt(e3), "isSelected", function() { - return e3.isSameDay(e3.props.selected); - }), Dt(bt(e3), "getClassNames", function(t4) { - var r5 = e3.props.dayClassName ? e3.props.dayClassName(t4) : void 0; - return ce.default("react-datepicker__day", r5, "react-datepicker__day--" + qt(e3.props.day), { "react-datepicker__day--disabled": e3.isDisabled(), "react-datepicker__day--excluded": e3.isExcluded(), "react-datepicker__day--selected": e3.isSelected(), "react-datepicker__day--keyboard-selected": e3.isKeyboardSelected(), "react-datepicker__day--range-start": e3.isRangeStart(), "react-datepicker__day--range-end": e3.isRangeEnd(), "react-datepicker__day--in-range": e3.isInRange(), "react-datepicker__day--in-selecting-range": e3.isInSelectingRange(), "react-datepicker__day--selecting-range-start": e3.isSelectingRangeStart(), "react-datepicker__day--selecting-range-end": e3.isSelectingRangeEnd(), "react-datepicker__day--today": e3.isCurrentDay(), "react-datepicker__day--weekend": e3.isWeekend(), "react-datepicker__day--outside-month": e3.isAfterMonth() || e3.isBeforeMonth() }, e3.getHighLightedClass("react-datepicker__day--highlighted")); - }), Dt(bt(e3), "getAriaLabel", function() { - var t4 = e3.props, r5 = t4.day, a4 = t4.ariaLabelPrefixWhenEnabled, n4 = void 0 === a4 ? "Choose" : a4, o4 = t4.ariaLabelPrefixWhenDisabled, s3 = void 0 === o4 ? "Not available" : o4, i3 = e3.isDisabled() || e3.isExcluded() ? s3 : n4; - return "".concat(i3, " ").concat(Lt(r5, "PPPP", e3.props.locale)); - }), Dt(bt(e3), "getTabIndex", function(t4, r5) { - var a4 = t4 || e3.props.selected, n4 = r5 || e3.props.preSelection; - return e3.isKeyboardSelected() || e3.isSameDay(a4) && $t(n4, a4) ? 0 : -1; - }), Dt(bt(e3), "handleFocusDay", function() { - var t4 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, r5 = false; - 0 === e3.getTabIndex() && !t4.isInputFocused && e3.isSameDay(e3.props.preSelection) && (document.activeElement && document.activeElement !== document.body || (r5 = true), e3.props.inline && !e3.props.shouldFocusDayInline && (r5 = false), e3.props.containerRef && e3.props.containerRef.current && e3.props.containerRef.current.contains(document.activeElement) && document.activeElement.classList.contains("react-datepicker__day") && (r5 = true)), r5 && e3.dayEl.current.focus({ preventScroll: true }); - }), Dt(bt(e3), "renderDayContents", function() { - return e3.props.monthShowsDuplicateDaysEnd && e3.isAfterMonth() || e3.props.monthShowsDuplicateDaysStart && e3.isBeforeMonth() ? null : e3.props.renderDayContents ? e3.props.renderDayContents(Ne.default(e3.props.day), e3.props.day) : Ne.default(e3.props.day); - }), Dt(bt(e3), "render", function() { - return de.default.createElement("div", { ref: e3.dayEl, className: e3.getClassNames(e3.props.day), onKeyDown: e3.handleOnKeyDown, onClick: e3.handleClick, onMouseEnter: e3.handleMouseEnter, tabIndex: e3.getTabIndex(), "aria-label": e3.getAriaLabel(), role: "option", "aria-disabled": e3.isDisabled(), "aria-current": e3.isCurrentDay() ? "date" : void 0, "aria-selected": e3.isSelected() }, e3.renderDayContents()); - }), e3; - } - return yt(r4, [{ key: "componentDidMount", value: function() { - this.handleFocusDay(); - } }, { key: "componentDidUpdate", value: function(e3) { - this.handleFocusDay(e3); - } }]), r4; - }(de.default.Component), Lr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4() { - var e3; - ht(this, r4); - for (var a3 = arguments.length, n3 = new Array(a3), o3 = 0; o3 < a3; o3++) - n3[o3] = arguments[o3]; - return Dt(bt(e3 = t3.call.apply(t3, [this].concat(n3))), "handleClick", function(t4) { - e3.props.onClick && e3.props.onClick(t4); - }), e3; - } - return yt(r4, [{ key: "render", value: function() { - var e3 = this.props, t4 = e3.weekNumber, r5 = e3.ariaLabelPrefix, a3 = void 0 === r5 ? "week " : r5, n3 = { "react-datepicker__week-number": true, "react-datepicker__week-number--clickable": !!e3.onClick }; - return de.default.createElement("div", { className: ce.default(n3), "aria-label": "".concat(a3, " ").concat(this.props.weekNumber), onClick: this.handleClick }, t4); - } }]), r4; - }(de.default.Component), Rr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4() { - var e3; - ht(this, r4); - for (var a3 = arguments.length, n3 = new Array(a3), o3 = 0; o3 < a3; o3++) - n3[o3] = arguments[o3]; - return Dt(bt(e3 = t3.call.apply(t3, [this].concat(n3))), "handleDayClick", function(t4, r5) { - e3.props.onDayClick && e3.props.onDayClick(t4, r5); - }), Dt(bt(e3), "handleDayMouseEnter", function(t4) { - e3.props.onDayMouseEnter && e3.props.onDayMouseEnter(t4); - }), Dt(bt(e3), "handleWeekClick", function(t4, r5, a4) { - "function" == typeof e3.props.onWeekSelect && e3.props.onWeekSelect(t4, r5, a4), e3.props.shouldCloseOnSelect && e3.props.setOpen(false); - }), Dt(bt(e3), "formatWeekNumber", function(t4) { - return e3.props.formatWeekNumber ? e3.props.formatWeekNumber(t4) : At(t4); - }), Dt(bt(e3), "renderDays", function() { - var t4 = Bt(e3.props.day, e3.props.locale, e3.props.calendarStartDay), r5 = [], a4 = e3.formatWeekNumber(t4); - if (e3.props.showWeekNumber) { - var n4 = e3.props.onWeekSelect ? e3.handleWeekClick.bind(bt(e3), t4, a4) : void 0; - r5.push(de.default.createElement(Lr, { key: "W", weekNumber: a4, onClick: n4, ariaLabelPrefix: e3.props.ariaLabelPrefix })); } - return r5.concat([0, 1, 2, 3, 4, 5, 6].map(function(r6) { - var a5 = De.default(t4, r6); - return de.default.createElement(Tr, { ariaLabelPrefixWhenEnabled: e3.props.chooseDayAriaLabelPrefix, ariaLabelPrefixWhenDisabled: e3.props.disabledDayAriaLabelPrefix, key: a5.valueOf(), day: a5, month: e3.props.month, onClick: e3.handleDayClick.bind(bt(e3), a5), onMouseEnter: e3.handleDayMouseEnter.bind(bt(e3), a5), minDate: e3.props.minDate, maxDate: e3.props.maxDate, excludeDates: e3.props.excludeDates, excludeDateIntervals: e3.props.excludeDateIntervals, includeDates: e3.props.includeDates, includeDateIntervals: e3.props.includeDateIntervals, highlightDates: e3.props.highlightDates, selectingDate: e3.props.selectingDate, filterDate: e3.props.filterDate, preSelection: e3.props.preSelection, selected: e3.props.selected, selectsStart: e3.props.selectsStart, selectsEnd: e3.props.selectsEnd, selectsRange: e3.props.selectsRange, selectsDisabledDaysInRange: e3.props.selectsDisabledDaysInRange, startDate: e3.props.startDate, endDate: e3.props.endDate, dayClassName: e3.props.dayClassName, renderDayContents: e3.props.renderDayContents, disabledKeyboardNavigation: e3.props.disabledKeyboardNavigation, handleOnKeyDown: e3.props.handleOnKeyDown, isInputFocused: e3.props.isInputFocused, containerRef: e3.props.containerRef, inline: e3.props.inline, shouldFocusDayInline: e3.props.shouldFocusDayInline, monthShowsDuplicateDaysEnd: e3.props.monthShowsDuplicateDaysEnd, monthShowsDuplicateDaysStart: e3.props.monthShowsDuplicateDaysStart, locale: e3.props.locale }); - })); - }), e3; - } - return yt(r4, [{ key: "render", value: function() { - return de.default.createElement("div", { className: "react-datepicker__week" }, this.renderDays()); - } }], [{ key: "defaultProps", get: function() { - return { shouldCloseOnSelect: true }; - } }]), r4; - }(de.default.Component), Fr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4() { - var e3; - ht(this, r4); - for (var a3 = arguments.length, n3 = new Array(a3), o3 = 0; o3 < a3; o3++) - n3[o3] = arguments[o3]; - return Dt(bt(e3 = t3.call.apply(t3, [this].concat(n3))), "MONTH_REFS", _t(Array(12)).map(function() { - return de.default.createRef(); - })), Dt(bt(e3), "isDisabled", function(t4) { - return rr(t4, e3.props); - }), Dt(bt(e3), "isExcluded", function(t4) { - return ar(t4, e3.props); - }), Dt(bt(e3), "handleDayClick", function(t4, r5) { - e3.props.onDayClick && e3.props.onDayClick(t4, r5, e3.props.orderInDisplay); - }), Dt(bt(e3), "handleDayMouseEnter", function(t4) { - e3.props.onDayMouseEnter && e3.props.onDayMouseEnter(t4); - }), Dt(bt(e3), "handleMouseLeave", function() { - e3.props.onMouseLeave && e3.props.onMouseLeave(); - }), Dt(bt(e3), "isRangeStartMonth", function(t4) { - var r5 = e3.props, a4 = r5.day, n4 = r5.startDate, o4 = r5.endDate; - return !(!n4 || !o4) && Vt(Ae.default(a4, t4), n4); - }), Dt(bt(e3), "isRangeStartQuarter", function(t4) { - var r5 = e3.props, a4 = r5.day, n4 = r5.startDate, o4 = r5.endDate; - return !(!n4 || !o4) && Ut(qe.default(a4, t4), n4); - }), Dt(bt(e3), "isRangeEndMonth", function(t4) { - var r5 = e3.props, a4 = r5.day, n4 = r5.startDate, o4 = r5.endDate; - return !(!n4 || !o4) && Vt(Ae.default(a4, t4), o4); - }), Dt(bt(e3), "isRangeEndQuarter", function(t4) { - var r5 = e3.props, a4 = r5.day, n4 = r5.startDate, o4 = r5.endDate; - return !(!n4 || !o4) && Ut(qe.default(a4, t4), o4); - }), Dt(bt(e3), "isWeekInMonth", function(t4) { - var r5 = e3.props.day, a4 = De.default(t4, 6); - return Vt(t4, r5) || Vt(a4, r5); - }), Dt(bt(e3), "isCurrentMonth", function(e4, t4) { - return Ie.default(e4) === Ie.default(Yt()) && t4 === Oe.default(Yt()); - }), Dt(bt(e3), "isSelectedMonth", function(e4, t4, r5) { - return Oe.default(e4) === t4 && Ie.default(e4) === Ie.default(r5); - }), Dt(bt(e3), "isSelectedQuarter", function(e4, t4, r5) { - return Ye.default(e4) === t4 && Ie.default(e4) === Ie.default(r5); - }), Dt(bt(e3), "renderWeeks", function() { - for (var t4 = [], r5 = e3.props.fixedHeight, a4 = 0, n4 = false, o4 = Bt(Kt(e3.props.day), e3.props.locale, e3.props.calendarStartDay); t4.push(de.default.createElement(Rr, { ariaLabelPrefix: e3.props.weekAriaLabelPrefix, chooseDayAriaLabelPrefix: e3.props.chooseDayAriaLabelPrefix, disabledDayAriaLabelPrefix: e3.props.disabledDayAriaLabelPrefix, key: a4, day: o4, month: Oe.default(e3.props.day), onDayClick: e3.handleDayClick, onDayMouseEnter: e3.handleDayMouseEnter, onWeekSelect: e3.props.onWeekSelect, formatWeekNumber: e3.props.formatWeekNumber, locale: e3.props.locale, minDate: e3.props.minDate, maxDate: e3.props.maxDate, excludeDates: e3.props.excludeDates, excludeDateIntervals: e3.props.excludeDateIntervals, includeDates: e3.props.includeDates, includeDateIntervals: e3.props.includeDateIntervals, inline: e3.props.inline, shouldFocusDayInline: e3.props.shouldFocusDayInline, highlightDates: e3.props.highlightDates, selectingDate: e3.props.selectingDate, filterDate: e3.props.filterDate, preSelection: e3.props.preSelection, selected: e3.props.selected, selectsStart: e3.props.selectsStart, selectsEnd: e3.props.selectsEnd, selectsRange: e3.props.selectsRange, selectsDisabledDaysInRange: e3.props.selectsDisabledDaysInRange, showWeekNumber: e3.props.showWeekNumbers, startDate: e3.props.startDate, endDate: e3.props.endDate, dayClassName: e3.props.dayClassName, setOpen: e3.props.setOpen, shouldCloseOnSelect: e3.props.shouldCloseOnSelect, disabledKeyboardNavigation: e3.props.disabledKeyboardNavigation, renderDayContents: e3.props.renderDayContents, handleOnKeyDown: e3.props.handleOnKeyDown, isInputFocused: e3.props.isInputFocused, containerRef: e3.props.containerRef, calendarStartDay: e3.props.calendarStartDay, monthShowsDuplicateDaysEnd: e3.props.monthShowsDuplicateDaysEnd, monthShowsDuplicateDaysStart: e3.props.monthShowsDuplicateDaysStart })), !n4; ) { - a4++, o4 = ve.default(o4, 1); - var s3 = r5 && a4 >= 6, i3 = !r5 && !e3.isWeekInMonth(o4); - if (s3 || i3) { - if (!e3.props.peekNextMonth) - break; - n4 = true; - } - } - return t4; - }), Dt(bt(e3), "onMonthClick", function(t4, r5) { - e3.handleDayClick(Kt(Ae.default(e3.props.day, r5)), t4); - }), Dt(bt(e3), "handleMonthNavigation", function(t4, r5) { - e3.isDisabled(r5) || e3.isExcluded(r5) || (e3.props.setPreSelection(r5), e3.MONTH_REFS[t4].current && e3.MONTH_REFS[t4].current.focus()); - }), Dt(bt(e3), "onMonthKeyDown", function(t4, r5) { - var a4 = t4.key; - if (!e3.props.disabledKeyboardNavigation) - switch (a4) { - case "Enter": - e3.onMonthClick(t4, r5), e3.props.setPreSelection(e3.props.selected); - break; - case "ArrowRight": - e3.handleMonthNavigation(11 === r5 ? 0 : r5 + 1, we.default(e3.props.preSelection, 1)); - break; - case "ArrowLeft": - e3.handleMonthNavigation(0 === r5 ? 11 : r5 - 1, Se.default(e3.props.preSelection, 1)); - } - }), Dt(bt(e3), "onQuarterClick", function(t4, r5) { - e3.handleDayClick(jt(qe.default(e3.props.day, r5)), t4); - }), Dt(bt(e3), "getMonthClassNames", function(t4) { - var r5 = e3.props, a4 = r5.day, n4 = r5.startDate, o4 = r5.endDate, s3 = r5.selected, i3 = r5.minDate, p3 = r5.maxDate, l3 = r5.preSelection, d3 = r5.monthClassName, c3 = d3 ? d3(a4) : void 0; - return ce.default("react-datepicker__month-text", "react-datepicker__month-".concat(t4), c3, { "react-datepicker__month--disabled": (i3 || p3) && nr(Ae.default(a4, t4), e3.props), "react-datepicker__month--selected": e3.isSelectedMonth(a4, t4, s3), "react-datepicker__month-text--keyboard-selected": Oe.default(l3) === t4, "react-datepicker__month--in-range": or(n4, o4, t4, a4), "react-datepicker__month--range-start": e3.isRangeStartMonth(t4), "react-datepicker__month--range-end": e3.isRangeEndMonth(t4), "react-datepicker__month-text--today": e3.isCurrentMonth(a4, t4) }); - }), Dt(bt(e3), "getTabIndex", function(t4) { - var r5 = Oe.default(e3.props.preSelection); - return e3.props.disabledKeyboardNavigation || t4 !== r5 ? "-1" : "0"; - }), Dt(bt(e3), "getAriaLabel", function(t4) { - var r5 = e3.props, a4 = r5.chooseDayAriaLabelPrefix, n4 = void 0 === a4 ? "Choose" : a4, o4 = r5.disabledDayAriaLabelPrefix, s3 = void 0 === o4 ? "Not available" : o4, i3 = r5.day, p3 = Ae.default(i3, t4), l3 = e3.isDisabled(p3) || e3.isExcluded(p3) ? s3 : n4; - return "".concat(l3, " ").concat(Lt(p3, "MMMM yyyy")); - }), Dt(bt(e3), "getQuarterClassNames", function(t4) { - var r5 = e3.props, a4 = r5.day, n4 = r5.startDate, o4 = r5.endDate, s3 = r5.selected, i3 = r5.minDate, p3 = r5.maxDate; - return ce.default("react-datepicker__quarter-text", "react-datepicker__quarter-".concat(t4), { "react-datepicker__quarter--disabled": (i3 || p3) && sr(qe.default(a4, t4), e3.props), "react-datepicker__quarter--selected": e3.isSelectedQuarter(a4, t4, s3), "react-datepicker__quarter--in-range": pr(n4, o4, t4, a4), "react-datepicker__quarter--range-start": e3.isRangeStartQuarter(t4), "react-datepicker__quarter--range-end": e3.isRangeEndQuarter(t4) }); - }), Dt(bt(e3), "renderMonths", function() { - var t4 = e3.props, r5 = t4.showFullMonthYearPicker, a4 = t4.showTwoColumnMonthYearPicker, n4 = t4.showFourColumnMonthYearPicker, o4 = t4.locale, s3 = t4.day, i3 = t4.selected; - return (n4 ? [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]] : a4 ? [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10, 11]] : [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]]).map(function(t5, a5) { - return de.default.createElement("div", { className: "react-datepicker__month-wrapper", key: a5 }, t5.map(function(t6, a6) { - return de.default.createElement("div", { ref: e3.MONTH_REFS[t6], key: a6, onClick: function(r6) { - e3.onMonthClick(r6, t6); - }, onKeyDown: function(r6) { - e3.onMonthKeyDown(r6, t6); - }, tabIndex: e3.getTabIndex(t6), className: e3.getMonthClassNames(t6), role: "option", "aria-label": e3.getAriaLabel(t6), "aria-current": e3.isCurrentMonth(s3, t6) ? "date" : void 0, "aria-selected": e3.isSelectedMonth(s3, t6, i3) }, r5 ? Zt(t6, o4) : er(t6, o4)); - })); - }); - }), Dt(bt(e3), "renderQuarters", function() { - var t4 = e3.props, r5 = t4.day, a4 = t4.selected; - return de.default.createElement("div", { className: "react-datepicker__quarter-wrapper" }, [1, 2, 3, 4].map(function(t5, n4) { - return de.default.createElement("div", { key: n4, role: "option", onClick: function(r6) { - e3.onQuarterClick(r6, t5); - }, className: e3.getQuarterClassNames(t5), "aria-selected": e3.isSelectedQuarter(r5, t5, a4) }, tr(t5, e3.props.locale)); - })); - }), Dt(bt(e3), "getClassNames", function() { - var t4 = e3.props; - t4.day; - var r5 = t4.selectingDate, a4 = t4.selectsStart, n4 = t4.selectsEnd, o4 = t4.showMonthYearPicker, s3 = t4.showQuarterYearPicker; - return ce.default("react-datepicker__month", { "react-datepicker__month--selecting-range": r5 && (a4 || n4) }, { "react-datepicker__monthPicker": o4 }, { "react-datepicker__quarterPicker": s3 }); - }), e3; - } - return yt(r4, [{ key: "render", value: function() { - var e3 = this.props, t4 = e3.showMonthYearPicker, r5 = e3.showQuarterYearPicker, a3 = e3.day, n3 = e3.ariaLabelPrefix, o3 = void 0 === n3 ? "month " : n3; - return de.default.createElement("div", { className: this.getClassNames(), onMouseLeave: this.handleMouseLeave, "aria-label": "".concat(o3, " ").concat(Lt(a3, "yyyy-MM")), role: "listbox" }, t4 ? this.renderMonths() : r5 ? this.renderQuarters() : this.renderWeeks()); - } }]), r4; - }(de.default.Component), Ar = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4() { - var e3; - ht(this, r4); - for (var a3 = arguments.length, n3 = new Array(a3), o3 = 0; o3 < a3; o3++) - n3[o3] = arguments[o3]; - return Dt(bt(e3 = t3.call.apply(t3, [this].concat(n3))), "state", { height: null }), Dt(bt(e3), "handleClick", function(t4) { - (e3.props.minTime || e3.props.maxTime) && ur(t4, e3.props) || (e3.props.excludeTimes || e3.props.includeTimes || e3.props.filterTime) && cr(t4, e3.props) || e3.props.onChange(t4); - }), Dt(bt(e3), "isSelectedTime", function(t4, r5, a4) { - return e3.props.selected && r5 === Pe.default(t4) && a4 === Me.default(t4); - }), Dt(bt(e3), "liClasses", function(t4, r5, a4) { - var n4 = ["react-datepicker__time-list-item", e3.props.timeClassName ? e3.props.timeClassName(t4, r5, a4) : void 0]; - return e3.isSelectedTime(t4, r5, a4) && n4.push("react-datepicker__time-list-item--selected"), ((e3.props.minTime || e3.props.maxTime) && ur(t4, e3.props) || (e3.props.excludeTimes || e3.props.includeTimes || e3.props.filterTime) && cr(t4, e3.props)) && n4.push("react-datepicker__time-list-item--disabled"), e3.props.injectTimes && (60 * Pe.default(t4) + Me.default(t4)) % e3.props.intervals != 0 && n4.push("react-datepicker__time-list-item--injected"), n4.join(" "); - }), Dt(bt(e3), "handleOnKeyDown", function(t4, r5) { - " " === t4.key && (t4.preventDefault(), t4.key = "Enter"), "Enter" === t4.key && e3.handleClick(r5), e3.props.handleOnKeyDown(t4); - }), Dt(bt(e3), "renderTimes", function() { - for (var t4 = [], r5 = e3.props.format ? e3.props.format : "p", a4 = e3.props.intervals, n4 = Wt(Yt(e3.props.selected)), o4 = 1440 / a4, s3 = e3.props.injectTimes && e3.props.injectTimes.sort(function(e4, t5) { - return e4 - t5; - }), i3 = e3.props.selected || e3.props.openToDate || Yt(), p3 = Pe.default(i3), l3 = Me.default(i3), d3 = Fe.default(Re.default(n4, l3), p3), c3 = 0; c3 < o4; c3++) { - var u3 = me.default(n4, c3 * a4); - if (t4.push(u3), s3) { - var f3 = gr(n4, u3, c3, a4, s3); - t4 = t4.concat(f3); - } - } - return t4.map(function(t5, a5) { - return de.default.createElement("li", { key: a5, onClick: e3.handleClick.bind(bt(e3), t5), className: e3.liClasses(t5, p3, l3), ref: function(r6) { - (nt.default(t5, d3) || zt(t5, d3)) && (e3.centerLi = r6); - }, onKeyDown: function(r6) { - e3.handleOnKeyDown(r6, t5); - }, tabIndex: "0", "aria-selected": e3.isSelectedTime(t5, p3, l3) ? "true" : void 0 }, Lt(t5, r5, e3.props.locale)); - }); - }), e3; - } - return yt(r4, [{ key: "componentDidMount", value: function() { - this.list.scrollTop = r4.calcCenterPosition(this.props.monthRef ? this.props.monthRef.clientHeight - this.header.clientHeight : this.list.clientHeight, this.centerLi), this.props.monthRef && this.header && this.setState({ height: this.props.monthRef.clientHeight - this.header.clientHeight }); - } }, { key: "render", value: function() { - var e3 = this, t4 = this.state.height; - return de.default.createElement("div", { className: "react-datepicker__time-container ".concat(this.props.todayButton ? "react-datepicker__time-container--with-today-button" : "") }, de.default.createElement("div", { className: "react-datepicker__header react-datepicker__header--time ".concat(this.props.showTimeSelectOnly ? "react-datepicker__header--time--only" : ""), ref: function(t5) { - e3.header = t5; - } }, de.default.createElement("div", { className: "react-datepicker-time__header" }, this.props.timeCaption)), de.default.createElement("div", { className: "react-datepicker__time" }, de.default.createElement("div", { className: "react-datepicker__time-box" }, de.default.createElement("ul", { className: "react-datepicker__time-list", ref: function(t5) { - e3.list = t5; - }, style: t4 ? { height: t4 } : {}, tabIndex: "0" }, this.renderTimes())))); - } }], [{ key: "defaultProps", get: function() { - return { intervals: 30, onTimeChange: function() { - }, todayButton: null, timeCaption: "Time" }; - } }]), r4; - }(de.default.Component); - Dt(Ar, "calcCenterPosition", function(e2, t3) { - return t3.offsetTop - (e2 / 2 - t3.clientHeight / 2); - }); - var qr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4(e3) { - var a3; - return ht(this, r4), Dt(bt(a3 = t3.call(this, e3)), "YEAR_REFS", _t(Array(a3.props.yearItemNumber)).map(function() { - return de.default.createRef(); - })), Dt(bt(a3), "isDisabled", function(e4) { - return rr(e4, a3.props); - }), Dt(bt(a3), "isExcluded", function(e4) { - return ar(e4, a3.props); - }), Dt(bt(a3), "updateFocusOnPaginate", function(e4) { - var t4 = function() { - this.YEAR_REFS[e4].current.focus(); - }.bind(bt(a3)); - window.requestAnimationFrame(t4); - }), Dt(bt(a3), "handleYearClick", function(e4, t4) { - a3.props.onDayClick && a3.props.onDayClick(e4, t4); - }), Dt(bt(a3), "handleYearNavigation", function(e4, t4) { - var r5 = a3.props, n3 = r5.date, o3 = r5.yearItemNumber, s3 = br(n3, o3).startPeriod; - a3.isDisabled(t4) || a3.isExcluded(t4) || (a3.props.setPreSelection(t4), e4 - s3 == -1 ? a3.updateFocusOnPaginate(o3 - 1) : e4 - s3 === o3 ? a3.updateFocusOnPaginate(0) : a3.YEAR_REFS[e4 - s3].current.focus()); - }), Dt(bt(a3), "isSameDay", function(e4, t4) { - return $t(e4, t4); - }), Dt(bt(a3), "isCurrentYear", function(e4) { - return e4 === Ie.default(Yt()); - }), Dt(bt(a3), "isKeyboardSelected", function(e4) { - var t4 = Ht(We.default(a3.props.date, e4)); - return !a3.props.disabledKeyboardNavigation && !a3.props.inline && !$t(t4, Ht(a3.props.selected)) && $t(t4, Ht(a3.props.preSelection)); - }), Dt(bt(a3), "onYearClick", function(e4, t4) { - var r5 = a3.props.date; - a3.handleYearClick(Ht(We.default(r5, t4)), e4); - }), Dt(bt(a3), "onYearKeyDown", function(e4, t4) { - var r5 = e4.key; - if (!a3.props.disabledKeyboardNavigation) - switch (r5) { - case "Enter": - a3.onYearClick(e4, t4), a3.props.setPreSelection(a3.props.selected); - break; - case "ArrowRight": - a3.handleYearNavigation(t4 + 1, ge.default(a3.props.preSelection, 1)); - break; - case "ArrowLeft": - a3.handleYearNavigation(t4 - 1, Ce.default(a3.props.preSelection, 1)); - } - }), Dt(bt(a3), "getYearClassNames", function(e4) { - var t4 = a3.props, r5 = t4.minDate, n3 = t4.maxDate, o3 = t4.selected; - return ce.default("react-datepicker__year-text", { "react-datepicker__year-text--selected": e4 === Ie.default(o3), "react-datepicker__year-text--disabled": (r5 || n3) && ir(e4, a3.props), "react-datepicker__year-text--keyboard-selected": a3.isKeyboardSelected(e4), "react-datepicker__year-text--today": a3.isCurrentYear(e4) }); - }), Dt(bt(a3), "getYearTabIndex", function(e4) { - return a3.props.disabledKeyboardNavigation ? "-1" : e4 === Ie.default(a3.props.preSelection) ? "0" : "-1"; - }), a3; - } - return yt(r4, [{ key: "render", value: function() { - for (var e3 = this, t4 = [], r5 = this.props, a3 = br(r5.date, r5.yearItemNumber), n3 = a3.startPeriod, o3 = a3.endPeriod, s3 = function(r6) { - t4.push(de.default.createElement("div", { ref: e3.YEAR_REFS[r6 - n3], onClick: function(t5) { - e3.onYearClick(t5, r6); - }, onKeyDown: function(t5) { - e3.onYearKeyDown(t5, r6); - }, tabIndex: e3.getYearTabIndex(r6), className: e3.getYearClassNames(r6), key: r6, "aria-current": e3.isCurrentYear(r6) ? "date" : void 0 }, r6)); - }, i3 = n3; i3 <= o3; i3++) - s3(i3); - return de.default.createElement("div", { className: "react-datepicker__year" }, de.default.createElement("div", { className: "react-datepicker__year-wrapper" }, t4)); - } }]), r4; - }(de.default.Component), Wr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4(e3) { - var a3; - return ht(this, r4), Dt(bt(a3 = t3.call(this, e3)), "onTimeChange", function(e4) { - a3.setState({ time: e4 }); - var t4 = new Date(); - t4.setHours(e4.split(":")[0]), t4.setMinutes(e4.split(":")[1]), a3.props.onChange(t4); - }), Dt(bt(a3), "renderTimeInput", function() { - var e4 = a3.state.time, t4 = a3.props, r5 = t4.date, n3 = t4.timeString, o3 = t4.customTimeInput; - return o3 ? de.default.cloneElement(o3, { date: r5, value: e4, onChange: a3.onTimeChange }) : de.default.createElement("input", { type: "time", className: "react-datepicker-time__input", placeholder: "Time", name: "time-input", required: true, value: e4, onChange: function(e5) { - a3.onTimeChange(e5.target.value || n3); - } }); - }), a3.state = { time: a3.props.timeString }, a3; - } - return yt(r4, [{ key: "render", value: function() { - return de.default.createElement("div", { className: "react-datepicker__input-time-container" }, de.default.createElement("div", { className: "react-datepicker-time__caption" }, this.props.timeInputLabel), de.default.createElement("div", { className: "react-datepicker-time__input-container" }, de.default.createElement("div", { className: "react-datepicker-time__input" }, this.renderTimeInput()))); - } }], [{ key: "getDerivedStateFromProps", value: function(e3, t4) { - return e3.timeString !== t4.time ? { time: e3.timeString } : null; - } }]), r4; - }(de.default.Component); - function Br(e2) { - var t3 = e2.className, r4 = e2.children, a3 = e2.showPopperArrow, n3 = e2.arrowProps, o3 = void 0 === n3 ? {} : n3; - return de.default.createElement("div", { className: t3 }, a3 && de.default.createElement("div", vt({ className: "react-datepicker__triangle" }, o3)), r4); - } - var Kr = ["react-datepicker__year-select", "react-datepicker__month-select", "react-datepicker__month-year-select"], Hr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4(e3) { - var a3; - return ht(this, r4), Dt(bt(a3 = t3.call(this, e3)), "handleClickOutside", function(e4) { - a3.props.onClickOutside(e4); - }), Dt(bt(a3), "setClickOutsideRef", function() { - return a3.containerRef.current; - }), Dt(bt(a3), "handleDropdownFocus", function(e4) { - (function() { - var e5 = ((arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).className || "").split(/\s+/); - return Kr.some(function(t4) { - return e5.indexOf(t4) >= 0; - }); - })(e4.target) && a3.props.onDropdownFocus(); - }), Dt(bt(a3), "getDateInView", function() { - var e4 = a3.props, t4 = e4.preSelection, r5 = e4.selected, n3 = e4.openToDate, o3 = Dr(a3.props), s3 = vr(a3.props), i3 = Yt(), p3 = n3 || r5 || t4; - return p3 || (o3 && nt.default(i3, o3) ? o3 : s3 && at.default(i3, s3) ? s3 : i3); - }), Dt(bt(a3), "increaseMonth", function() { - a3.setState(function(e4) { - var t4 = e4.date; - return { date: we.default(t4, 1) }; - }, function() { - return a3.handleMonthChange(a3.state.date); - }); - }), Dt(bt(a3), "decreaseMonth", function() { - a3.setState(function(e4) { - var t4 = e4.date; - return { date: Se.default(t4, 1) }; - }, function() { - return a3.handleMonthChange(a3.state.date); - }); - }), Dt(bt(a3), "handleDayClick", function(e4, t4, r5) { - a3.props.onSelect(e4, t4, r5), a3.props.setPreSelection && a3.props.setPreSelection(e4); - }), Dt(bt(a3), "handleDayMouseEnter", function(e4) { - a3.setState({ selectingDate: e4 }), a3.props.onDayMouseEnter && a3.props.onDayMouseEnter(e4); - }), Dt(bt(a3), "handleMonthMouseLeave", function() { - a3.setState({ selectingDate: null }), a3.props.onMonthMouseLeave && a3.props.onMonthMouseLeave(); - }), Dt(bt(a3), "handleYearChange", function(e4) { - a3.props.onYearChange && a3.props.onYearChange(e4), a3.props.adjustDateOnChange && (a3.props.onSelect && a3.props.onSelect(e4), a3.props.setOpen && a3.props.setOpen(true)), a3.props.setPreSelection && a3.props.setPreSelection(e4); - }), Dt(bt(a3), "handleMonthChange", function(e4) { - a3.props.onMonthChange && a3.props.onMonthChange(e4), a3.props.adjustDateOnChange && (a3.props.onSelect && a3.props.onSelect(e4), a3.props.setOpen && a3.props.setOpen(true)), a3.props.setPreSelection && a3.props.setPreSelection(e4); - }), Dt(bt(a3), "handleMonthYearChange", function(e4) { - a3.handleYearChange(e4), a3.handleMonthChange(e4); - }), Dt(bt(a3), "changeYear", function(e4) { - a3.setState(function(t4) { - var r5 = t4.date; - return { date: We.default(r5, e4) }; - }, function() { - return a3.handleYearChange(a3.state.date); - }); - }), Dt(bt(a3), "changeMonth", function(e4) { - a3.setState(function(t4) { - var r5 = t4.date; - return { date: Ae.default(r5, e4) }; - }, function() { - return a3.handleMonthChange(a3.state.date); - }); - }), Dt(bt(a3), "changeMonthYear", function(e4) { - a3.setState(function(t4) { - var r5 = t4.date; - return { date: We.default(Ae.default(r5, Oe.default(e4)), Ie.default(e4)) }; - }, function() { - return a3.handleMonthYearChange(a3.state.date); - }); - }), Dt(bt(a3), "header", function() { - var e4 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : a3.state.date, t4 = Bt(e4, a3.props.locale, a3.props.calendarStartDay), r5 = []; - return a3.props.showWeekNumbers && r5.push(de.default.createElement("div", { key: "W", className: "react-datepicker__day-name" }, a3.props.weekLabel || "#")), r5.concat([0, 1, 2, 3, 4, 5, 6].map(function(e5) { - var r6 = De.default(t4, e5), n3 = a3.formatWeekday(r6, a3.props.locale), o3 = a3.props.weekDayClassName ? a3.props.weekDayClassName(r6) : void 0; - return de.default.createElement("div", { key: e5, className: ce.default("react-datepicker__day-name", o3) }, n3); - })); - }), Dt(bt(a3), "formatWeekday", function(e4, t4) { - return a3.props.formatWeekDay ? function(e5, t5, r5) { - return t5(Lt(e5, "EEEE", r5)); - }(e4, a3.props.formatWeekDay, t4) : a3.props.useWeekdaysShort ? function(e5, t5) { - return Lt(e5, "EEE", t5); - }(e4, t4) : function(e5, t5) { - return Lt(e5, "EEEEEE", t5); - }(e4, t4); - }), Dt(bt(a3), "decreaseYear", function() { - a3.setState(function(e4) { - var t4 = e4.date; - return { date: Ce.default(t4, a3.props.showYearPicker ? a3.props.yearItemNumber : 1) }; - }, function() { - return a3.handleYearChange(a3.state.date); - }); - }), Dt(bt(a3), "renderPreviousButton", function() { - if (!a3.props.renderCustomHeader) { - var e4; - switch (true) { - case a3.props.showMonthYearPicker: - e4 = mr(a3.state.date, a3.props); - break; - case a3.props.showYearPicker: - e4 = function(e5) { - var t5 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r6 = t5.minDate, a4 = t5.yearItemNumber, n4 = void 0 === a4 ? xt : a4, o4 = br(Ht(Ce.default(e5, n4)), n4).endPeriod, s4 = r6 && Ie.default(r6); - return s4 && s4 > o4 || false; - }(a3.state.date, a3.props); - break; - default: - e4 = fr(a3.state.date, a3.props); - } - if ((a3.props.forceShowMonthNavigation || a3.props.showDisabledMonthNavigation || !e4) && !a3.props.showTimeSelectOnly) { - var t4 = ["react-datepicker__navigation", "react-datepicker__navigation--previous"], r5 = a3.decreaseMonth; - (a3.props.showMonthYearPicker || a3.props.showQuarterYearPicker || a3.props.showYearPicker) && (r5 = a3.decreaseYear), e4 && a3.props.showDisabledMonthNavigation && (t4.push("react-datepicker__navigation--previous--disabled"), r5 = null); - var n3 = a3.props.showMonthYearPicker || a3.props.showQuarterYearPicker || a3.props.showYearPicker, o3 = a3.props, s3 = o3.previousMonthButtonLabel, i3 = o3.previousYearButtonLabel, p3 = a3.props, l3 = p3.previousMonthAriaLabel, d3 = void 0 === l3 ? "string" == typeof s3 ? s3 : "Previous Month" : l3, c3 = p3.previousYearAriaLabel, u3 = void 0 === c3 ? "string" == typeof i3 ? i3 : "Previous Year" : c3; - return de.default.createElement("button", { type: "button", className: t4.join(" "), onClick: r5, onKeyDown: a3.props.handleOnKeyDown, "aria-label": n3 ? u3 : d3 }, de.default.createElement("span", { className: ["react-datepicker__navigation-icon", "react-datepicker__navigation-icon--previous"].join(" ") }, n3 ? a3.props.previousYearButtonLabel : a3.props.previousMonthButtonLabel)); - } - } - }), Dt(bt(a3), "increaseYear", function() { - a3.setState(function(e4) { - var t4 = e4.date; - return { date: ge.default(t4, a3.props.showYearPicker ? a3.props.yearItemNumber : 1) }; - }, function() { - return a3.handleYearChange(a3.state.date); - }); - }), Dt(bt(a3), "renderNextButton", function() { - if (!a3.props.renderCustomHeader) { - var e4; - switch (true) { - case a3.props.showMonthYearPicker: - e4 = yr(a3.state.date, a3.props); - break; - case a3.props.showYearPicker: - e4 = function(e5) { - var t5 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r6 = t5.maxDate, a4 = t5.yearItemNumber, n4 = void 0 === a4 ? xt : a4, o4 = br(ge.default(e5, n4), n4).startPeriod, s4 = r6 && Ie.default(r6); - return s4 && s4 < o4 || false; - }(a3.state.date, a3.props); - break; - default: - e4 = hr(a3.state.date, a3.props); - } - if ((a3.props.forceShowMonthNavigation || a3.props.showDisabledMonthNavigation || !e4) && !a3.props.showTimeSelectOnly) { - var t4 = ["react-datepicker__navigation", "react-datepicker__navigation--next"]; - a3.props.showTimeSelect && t4.push("react-datepicker__navigation--next--with-time"), a3.props.todayButton && t4.push("react-datepicker__navigation--next--with-today-button"); - var r5 = a3.increaseMonth; - (a3.props.showMonthYearPicker || a3.props.showQuarterYearPicker || a3.props.showYearPicker) && (r5 = a3.increaseYear), e4 && a3.props.showDisabledMonthNavigation && (t4.push("react-datepicker__navigation--next--disabled"), r5 = null); - var n3 = a3.props.showMonthYearPicker || a3.props.showQuarterYearPicker || a3.props.showYearPicker, o3 = a3.props, s3 = o3.nextMonthButtonLabel, i3 = o3.nextYearButtonLabel, p3 = a3.props, l3 = p3.nextMonthAriaLabel, d3 = void 0 === l3 ? "string" == typeof s3 ? s3 : "Next Month" : l3, c3 = p3.nextYearAriaLabel, u3 = void 0 === c3 ? "string" == typeof i3 ? i3 : "Next Year" : c3; - return de.default.createElement("button", { type: "button", className: t4.join(" "), onClick: r5, onKeyDown: a3.props.handleOnKeyDown, "aria-label": n3 ? u3 : d3 }, de.default.createElement("span", { className: ["react-datepicker__navigation-icon", "react-datepicker__navigation-icon--next"].join(" ") }, n3 ? a3.props.nextYearButtonLabel : a3.props.nextMonthButtonLabel)); - } - } - }), Dt(bt(a3), "renderCurrentMonth", function() { - var e4 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : a3.state.date, t4 = ["react-datepicker__current-month"]; - return a3.props.showYearDropdown && t4.push("react-datepicker__current-month--hasYearDropdown"), a3.props.showMonthDropdown && t4.push("react-datepicker__current-month--hasMonthDropdown"), a3.props.showMonthYearDropdown && t4.push("react-datepicker__current-month--hasMonthYearDropdown"), de.default.createElement("div", { className: t4.join(" ") }, Lt(e4, a3.props.dateFormat, a3.props.locale)); - }), Dt(bt(a3), "renderYearDropdown", function() { - var e4 = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; - if (a3.props.showYearDropdown && !e4) - return de.default.createElement(Mr, { adjustDateOnChange: a3.props.adjustDateOnChange, date: a3.state.date, onSelect: a3.props.onSelect, setOpen: a3.props.setOpen, dropdownMode: a3.props.dropdownMode, onChange: a3.changeYear, minDate: a3.props.minDate, maxDate: a3.props.maxDate, year: Ie.default(a3.state.date), scrollableYearDropdown: a3.props.scrollableYearDropdown, yearDropdownItemNumber: a3.props.yearDropdownItemNumber }); - }), Dt(bt(a3), "renderMonthDropdown", function() { - var e4 = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; - if (a3.props.showMonthDropdown && !e4) - return de.default.createElement(Nr, { dropdownMode: a3.props.dropdownMode, locale: a3.props.locale, onChange: a3.changeMonth, month: Oe.default(a3.state.date), useShortMonthInDropdown: a3.props.useShortMonthInDropdown }); - }), Dt(bt(a3), "renderMonthYearDropdown", function() { - var e4 = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; - if (a3.props.showMonthYearDropdown && !e4) - return de.default.createElement(Ir, { dropdownMode: a3.props.dropdownMode, locale: a3.props.locale, dateFormat: a3.props.dateFormat, onChange: a3.changeMonthYear, minDate: a3.props.minDate, maxDate: a3.props.maxDate, date: a3.state.date, scrollableMonthYearDropdown: a3.props.scrollableMonthYearDropdown }); - }), Dt(bt(a3), "renderTodayButton", function() { - if (a3.props.todayButton && !a3.props.showTimeSelectOnly) - return de.default.createElement("div", { className: "react-datepicker__today-button", onClick: function(e4) { - return a3.props.onSelect(Ve.default(Yt()), e4); - } }, a3.props.todayButton); - }), Dt(bt(a3), "renderDefaultHeader", function(e4) { - var t4 = e4.monthDate, r5 = e4.i; - return de.default.createElement("div", { className: "react-datepicker__header ".concat(a3.props.showTimeSelect ? "react-datepicker__header--has-time-select" : "") }, a3.renderCurrentMonth(t4), de.default.createElement("div", { className: "react-datepicker__header__dropdown react-datepicker__header__dropdown--".concat(a3.props.dropdownMode), onFocus: a3.handleDropdownFocus }, a3.renderMonthDropdown(0 !== r5), a3.renderMonthYearDropdown(0 !== r5), a3.renderYearDropdown(0 !== r5)), de.default.createElement("div", { className: "react-datepicker__day-names" }, a3.header(t4))); - }), Dt(bt(a3), "renderCustomHeader", function() { - var e4 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t4 = e4.monthDate, r5 = e4.i; - if (a3.props.showTimeSelect && !a3.state.monthContainer || a3.props.showTimeSelectOnly) - return null; - var n3 = fr(a3.state.date, a3.props), o3 = hr(a3.state.date, a3.props), s3 = mr(a3.state.date, a3.props), i3 = yr(a3.state.date, a3.props), p3 = !a3.props.showMonthYearPicker && !a3.props.showQuarterYearPicker && !a3.props.showYearPicker; - return de.default.createElement("div", { className: "react-datepicker__header react-datepicker__header--custom", onFocus: a3.props.onDropdownFocus }, a3.props.renderCustomHeader(ut(ut({}, a3.state), {}, { customHeaderCount: r5, monthDate: t4, changeMonth: a3.changeMonth, changeYear: a3.changeYear, decreaseMonth: a3.decreaseMonth, increaseMonth: a3.increaseMonth, decreaseYear: a3.decreaseYear, increaseYear: a3.increaseYear, prevMonthButtonDisabled: n3, nextMonthButtonDisabled: o3, prevYearButtonDisabled: s3, nextYearButtonDisabled: i3 })), p3 && de.default.createElement("div", { className: "react-datepicker__day-names" }, a3.header(t4))); - }), Dt(bt(a3), "renderYearHeader", function() { - var e4 = a3.state.date, t4 = a3.props, r5 = t4.showYearPicker, n3 = br(e4, t4.yearItemNumber), o3 = n3.startPeriod, s3 = n3.endPeriod; - return de.default.createElement("div", { className: "react-datepicker__header react-datepicker-year-header" }, r5 ? "".concat(o3, " - ").concat(s3) : Ie.default(e4)); - }), Dt(bt(a3), "renderHeader", function(e4) { - switch (true) { - case void 0 !== a3.props.renderCustomHeader: - return a3.renderCustomHeader(e4); - case (a3.props.showMonthYearPicker || a3.props.showQuarterYearPicker || a3.props.showYearPicker): - return a3.renderYearHeader(e4); - default: - return a3.renderDefaultHeader(e4); - } - }), Dt(bt(a3), "renderMonths", function() { - if (!a3.props.showTimeSelectOnly && !a3.props.showYearPicker) { - for (var e4 = [], t4 = a3.props.showPreviousMonths ? a3.props.monthsShown - 1 : 0, r5 = Se.default(a3.state.date, t4), n3 = 0; n3 < a3.props.monthsShown; ++n3) { - var o3 = n3 - a3.props.monthSelectedIn, s3 = we.default(r5, o3), i3 = "month-".concat(n3), p3 = n3 < a3.props.monthsShown - 1, l3 = n3 > 0; - e4.push(de.default.createElement("div", { key: i3, ref: function(e5) { - a3.monthContainer = e5; - }, className: "react-datepicker__month-container" }, a3.renderHeader({ monthDate: s3, i: n3 }), de.default.createElement(Fr, { chooseDayAriaLabelPrefix: a3.props.chooseDayAriaLabelPrefix, disabledDayAriaLabelPrefix: a3.props.disabledDayAriaLabelPrefix, weekAriaLabelPrefix: a3.props.weekAriaLabelPrefix, ariaLabelPrefix: a3.props.monthAriaLabelPrefix, onChange: a3.changeMonthYear, day: s3, dayClassName: a3.props.dayClassName, calendarStartDay: a3.props.calendarStartDay, monthClassName: a3.props.monthClassName, onDayClick: a3.handleDayClick, handleOnKeyDown: a3.props.handleOnDayKeyDown, onDayMouseEnter: a3.handleDayMouseEnter, onMouseLeave: a3.handleMonthMouseLeave, onWeekSelect: a3.props.onWeekSelect, orderInDisplay: n3, formatWeekNumber: a3.props.formatWeekNumber, locale: a3.props.locale, minDate: a3.props.minDate, maxDate: a3.props.maxDate, excludeDates: a3.props.excludeDates, excludeDateIntervals: a3.props.excludeDateIntervals, highlightDates: a3.props.highlightDates, selectingDate: a3.state.selectingDate, includeDates: a3.props.includeDates, includeDateIntervals: a3.props.includeDateIntervals, inline: a3.props.inline, shouldFocusDayInline: a3.props.shouldFocusDayInline, fixedHeight: a3.props.fixedHeight, filterDate: a3.props.filterDate, preSelection: a3.props.preSelection, setPreSelection: a3.props.setPreSelection, selected: a3.props.selected, selectsStart: a3.props.selectsStart, selectsEnd: a3.props.selectsEnd, selectsRange: a3.props.selectsRange, selectsDisabledDaysInRange: a3.props.selectsDisabledDaysInRange, showWeekNumbers: a3.props.showWeekNumbers, startDate: a3.props.startDate, endDate: a3.props.endDate, peekNextMonth: a3.props.peekNextMonth, setOpen: a3.props.setOpen, shouldCloseOnSelect: a3.props.shouldCloseOnSelect, renderDayContents: a3.props.renderDayContents, disabledKeyboardNavigation: a3.props.disabledKeyboardNavigation, showMonthYearPicker: a3.props.showMonthYearPicker, showFullMonthYearPicker: a3.props.showFullMonthYearPicker, showTwoColumnMonthYearPicker: a3.props.showTwoColumnMonthYearPicker, showFourColumnMonthYearPicker: a3.props.showFourColumnMonthYearPicker, showYearPicker: a3.props.showYearPicker, showQuarterYearPicker: a3.props.showQuarterYearPicker, isInputFocused: a3.props.isInputFocused, containerRef: a3.containerRef, monthShowsDuplicateDaysEnd: p3, monthShowsDuplicateDaysStart: l3 }))); - } - return e4; - } - }), Dt(bt(a3), "renderYears", function() { - if (!a3.props.showTimeSelectOnly) - return a3.props.showYearPicker ? de.default.createElement("div", { className: "react-datepicker__year--container" }, a3.renderHeader(), de.default.createElement(qr, vt({ onDayClick: a3.handleDayClick, date: a3.state.date }, a3.props))) : void 0; - }), Dt(bt(a3), "renderTimeSection", function() { - if (a3.props.showTimeSelect && (a3.state.monthContainer || a3.props.showTimeSelectOnly)) - return de.default.createElement(Ar, { selected: a3.props.selected, openToDate: a3.props.openToDate, onChange: a3.props.onTimeChange, timeClassName: a3.props.timeClassName, format: a3.props.timeFormat, includeTimes: a3.props.includeTimes, intervals: a3.props.timeIntervals, minTime: a3.props.minTime, maxTime: a3.props.maxTime, excludeTimes: a3.props.excludeTimes, filterTime: a3.props.filterTime, timeCaption: a3.props.timeCaption, todayButton: a3.props.todayButton, showMonthDropdown: a3.props.showMonthDropdown, showMonthYearDropdown: a3.props.showMonthYearDropdown, showYearDropdown: a3.props.showYearDropdown, withPortal: a3.props.withPortal, monthRef: a3.state.monthContainer, injectTimes: a3.props.injectTimes, locale: a3.props.locale, handleOnKeyDown: a3.props.handleOnKeyDown, showTimeSelectOnly: a3.props.showTimeSelectOnly }); - }), Dt(bt(a3), "renderInputTimeSection", function() { - var e4 = new Date(a3.props.selected), t4 = Tt(e4) && Boolean(a3.props.selected) ? "".concat(kr(e4.getHours()), ":").concat(kr(e4.getMinutes())) : ""; - if (a3.props.showTimeInput) - return de.default.createElement(Wr, { date: e4, timeString: t4, timeInputLabel: a3.props.timeInputLabel, onChange: a3.props.onTimeChange, customTimeInput: a3.props.customTimeInput }); - }), a3.containerRef = de.default.createRef(), a3.state = { date: a3.getDateInView(), selectingDate: null, monthContainer: null }, a3; - } - return yt(r4, [{ key: "componentDidMount", value: function() { - var e3 = this; - this.props.showTimeSelect && (this.assignMonthContainer = void e3.setState({ monthContainer: e3.monthContainer })); - } }, { key: "componentDidUpdate", value: function(e3) { - this.props.preSelection && !$t(this.props.preSelection, e3.preSelection) ? this.setState({ date: this.props.preSelection }) : this.props.openToDate && !$t(this.props.openToDate, e3.openToDate) && this.setState({ date: this.props.openToDate }); - } }, { key: "render", value: function() { - var e3 = this.props.container || Br; - return de.default.createElement("div", { ref: this.containerRef }, de.default.createElement(e3, { className: ce.default("react-datepicker", this.props.className, { "react-datepicker--time-only": this.props.showTimeSelectOnly }), showPopperArrow: this.props.showPopperArrow, arrowProps: this.props.arrowProps }, this.renderPreviousButton(), this.renderNextButton(), this.renderMonths(), this.renderYears(), this.renderTodayButton(), this.renderTimeSection(), this.renderInputTimeSection(), this.props.children)); - } }], [{ key: "defaultProps", get: function() { - return { onDropdownFocus: function() { - }, monthsShown: 1, monthSelectedIn: 0, forceShowMonthNavigation: false, timeCaption: "Time", previousYearButtonLabel: "Previous Year", nextYearButtonLabel: "Next Year", previousMonthButtonLabel: "Previous Month", nextMonthButtonLabel: "Next Month", customTimeInput: null, yearItemNumber: xt }; - } }]), r4; - }(de.default.Component), jr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4(e3) { - var a3; - return ht(this, r4), (a3 = t3.call(this, e3)).el = document.createElement("div"), a3; - } - return yt(r4, [{ key: "componentDidMount", value: function() { - this.portalRoot = (this.props.portalHost || document).getElementById(this.props.portalId), this.portalRoot || (this.portalRoot = document.createElement("div"), this.portalRoot.setAttribute("id", this.props.portalId), (this.props.portalHost || document.body).appendChild(this.portalRoot)), this.portalRoot.appendChild(this.el); - } }, { key: "componentWillUnmount", value: function() { - this.portalRoot.removeChild(this.el); - } }, { key: "render", value: function() { - return dt.default.createPortal(this.props.children, this.el); - } }]), r4; - }(de.default.Component), Qr = function(e2) { - return !e2.disabled && -1 !== e2.tabIndex; - }, Vr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4(e3) { - var a3; - return ht(this, r4), Dt(bt(a3 = t3.call(this, e3)), "getTabChildren", function() { - return Array.prototype.slice.call(a3.tabLoopRef.current.querySelectorAll("[tabindex], a, button, input, select, textarea"), 1, -1).filter(Qr); - }), Dt(bt(a3), "handleFocusStart", function(e4) { - var t4 = a3.getTabChildren(); - t4 && t4.length > 1 && t4[t4.length - 1].focus(); - }), Dt(bt(a3), "handleFocusEnd", function(e4) { - var t4 = a3.getTabChildren(); - t4 && t4.length > 1 && t4[0].focus(); - }), a3.tabLoopRef = de.default.createRef(), a3; - } - return yt(r4, [{ key: "render", value: function() { - return this.props.enableTabLoop ? de.default.createElement("div", { className: "react-datepicker__tab-loop", ref: this.tabLoopRef }, de.default.createElement("div", { className: "react-datepicker__tab-loop__start", tabIndex: "0", onFocus: this.handleFocusStart }), this.props.children, de.default.createElement("div", { className: "react-datepicker__tab-loop__end", tabIndex: "0", onFocus: this.handleFocusEnd })) : this.props.children; - } }], [{ key: "defaultProps", get: function() { - return { enableTabLoop: true }; - } }]), r4; - }(de.default.Component), Ur = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4() { - return ht(this, r4), t3.apply(this, arguments); - } - return yt(r4, [{ key: "render", value: function() { - var e3, t4 = this.props, r5 = t4.className, a3 = t4.wrapperClassName, n3 = t4.hidePopper, o3 = t4.popperComponent, s3 = t4.popperModifiers, i3 = t4.popperPlacement, p3 = t4.popperProps, l3 = t4.targetComponent, d3 = t4.enableTabLoop, c3 = t4.popperOnKeyDown, u3 = t4.portalId, f3 = t4.portalHost; - if (!n3) { - var h3 = ce.default("react-datepicker-popper", r5); - e3 = de.default.createElement(pe.Popper, vt({ modifiers: s3, placement: i3 }, p3), function(e4) { - var t5 = e4.ref, r6 = e4.style, a4 = e4.placement, n4 = e4.arrowProps; - return de.default.createElement(Vr, { enableTabLoop: d3 }, de.default.createElement("div", { ref: t5, style: r6, className: h3, "data-placement": a4, onKeyDown: c3 }, de.default.cloneElement(o3, { arrowProps: n4 }))); - }); } - this.props.popperContainer && (e3 = de.default.createElement(this.props.popperContainer, {}, e3)), u3 && !n3 && (e3 = de.default.createElement(jr, { portalId: u3, portalHost: f3 }, e3)); - var m3 = ce.default("react-datepicker-wrapper", a3); - return de.default.createElement(pe.Manager, { className: "react-datepicker-manager" }, de.default.createElement(pe.Reference, null, function(e4) { - var t5 = e4.ref; - return de.default.createElement("div", { ref: t5, className: m3 }, l3); - }), e3); - } }], [{ key: "defaultProps", get: function() { - return { hidePopper: true, popperModifiers: [], popperProps: {}, popperPlacement: "bottom-start" }; - } }]), r4; - }(de.default.Component), $r = "react-datepicker-ignore-onclickoutside", zr = lt.default(Hr); - var Gr = "Date input not valid.", Jr = function(e2) { - wt(r4, e2); - var t3 = Ct(r4); - function r4(e3) { - var a3; - return ht(this, r4), Dt(bt(a3 = t3.call(this, e3)), "getPreSelection", function() { - return a3.props.openToDate ? a3.props.openToDate : a3.props.selectsEnd && a3.props.startDate ? a3.props.startDate : a3.props.selectsStart && a3.props.endDate ? a3.props.endDate : Yt(); - }), Dt(bt(a3), "calcInitialState", function() { - var e4, t4 = a3.getPreSelection(), r5 = Dr(a3.props), n3 = vr(a3.props), o3 = r5 && nt.default(t4, Ve.default(r5)) ? r5 : n3 && at.default(t4, Je.default(n3)) ? n3 : t4; - return { open: a3.props.startOpen || false, preventFocus: false, preSelection: null !== (e4 = a3.props.selectsRange ? a3.props.startDate : a3.props.selected) && void 0 !== e4 ? e4 : o3, highlightDates: wr(a3.props.highlightDates), focused: false, shouldFocusDayInline: false }; - }), Dt(bt(a3), "clearPreventFocusTimeout", function() { - a3.preventFocusTimeout && clearTimeout(a3.preventFocusTimeout); - }), Dt(bt(a3), "setFocus", function() { - a3.input && a3.input.focus && a3.input.focus({ preventScroll: true }); - }), Dt(bt(a3), "setBlur", function() { - a3.input && a3.input.blur && a3.input.blur(), a3.cancelFocusInput(); - }), Dt(bt(a3), "setOpen", function(e4) { - var t4 = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; - a3.setState({ open: e4, preSelection: e4 && a3.state.open ? a3.state.preSelection : a3.calcInitialState().preSelection, lastPreSelectChange: Zr }, function() { - e4 || a3.setState(function(e5) { - return { focused: !!t4 && e5.focused }; - }, function() { - !t4 && a3.setBlur(), a3.setState({ inputValue: null }); - }); - }); - }), Dt(bt(a3), "inputOk", function() { - return ue.default(a3.state.preSelection); - }), Dt(bt(a3), "isCalendarOpen", function() { - return void 0 === a3.props.open ? a3.state.open && !a3.props.disabled && !a3.props.readOnly : a3.props.open; - }), Dt(bt(a3), "handleFocus", function(e4) { - a3.state.preventFocus || (a3.props.onFocus(e4), a3.props.preventOpenOnFocus || a3.props.readOnly || a3.setOpen(true)), a3.setState({ focused: true }); - }), Dt(bt(a3), "cancelFocusInput", function() { - clearTimeout(a3.inputFocusTimeout), a3.inputFocusTimeout = null; - }), Dt(bt(a3), "deferFocusInput", function() { - a3.cancelFocusInput(), a3.inputFocusTimeout = setTimeout(function() { - return a3.setFocus(); - }, 1); - }), Dt(bt(a3), "handleDropdownFocus", function() { - a3.cancelFocusInput(); - }), Dt(bt(a3), "handleBlur", function(e4) { - (!a3.state.open || a3.props.withPortal || a3.props.showTimeInput) && a3.props.onBlur(e4), a3.setState({ focused: false }); - }), Dt(bt(a3), "handleCalendarClickOutside", function(e4) { - a3.props.inline || a3.setOpen(false), a3.props.onClickOutside(e4), a3.props.withPortal && e4.preventDefault(); - }), Dt(bt(a3), "handleChange", function() { - for (var e4 = arguments.length, t4 = new Array(e4), r5 = 0; r5 < e4; r5++) - t4[r5] = arguments[r5]; - var n3 = t4[0]; - if (!a3.props.onChangeRaw || (a3.props.onChangeRaw.apply(bt(a3), t4), "function" == typeof n3.isDefaultPrevented && !n3.isDefaultPrevented())) { - a3.setState({ inputValue: n3.target.value, lastPreSelectChange: Xr }); - var o3 = It(n3.target.value, a3.props.dateFormat, a3.props.locale, a3.props.strictParsing, a3.props.minDate); - !o3 && n3.target.value || a3.setSelected(o3, n3, true); + return true; + } + function isEqual(value, other) { + return baseIsEqual(value, other); + } + function isEqualWith(value, other, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + var result2 = customizer ? customizer(value, other) : undefined2; + return result2 === undefined2 ? baseIsEqual(value, other, undefined2, customizer) : !!result2; + } + function isError2(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject4(value); + } + function isFinite2(value) { + return typeof value == "number" && nativeIsFinite(value); + } + function isFunction(value) { + if (!isObject(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + function isInteger(value) { + return typeof value == "number" && value == toInteger(value); + } + function isLength(value) { + return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + function isObject(value) { + var type = typeof value; + return value != null && (type == "object" || type == "function"); + } + function isObjectLike(value) { + return value != null && typeof value == "object"; + } + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); + } + function isMatchWith(object, source, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + return baseIsMatch(object, source, getMatchData(source), customizer); + } + function isNaN2(value) { + return isNumber2(value) && value != +value; + } + function isNative(value) { + if (isMaskable(value)) { + throw new Error2(CORE_ERROR_TEXT); + } + return baseIsNative(value); + } + function isNull(value) { + return value === null; + } + function isNil(value) { + return value == null; + } + function isNumber2(value) { + return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag; + } + function isPlainObject4(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; + } + var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; + function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; + } + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + function isString(value) { + return typeof value == "string" || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag; + } + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag; + } + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + function isUndefined(value) { + return value === undefined2; + } + function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; + } + function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; + } + var lt = createRelationalOperation(baseLt); + var lte = createRelationalOperation(function(value, other) { + return value <= other; + }); + function toArray(value) { + if (!value) { + return []; + } + if (isArrayLike(value)) { + return isString(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values; + return func(value); + } + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = value < 0 ? -1 : 1; + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + function toInteger(value) { + var result2 = toFinite(value), remainder = result2 % 1; + return result2 === result2 ? remainder ? result2 - remainder : result2 : 0; + } + function toLength(value) { + return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; + } + function toNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject(other) ? other + "" : other; + } + if (typeof value != "string") { + return value === 0 ? value : +value; + } + value = baseTrim(value); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + function toSafeInteger(value) { + return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0; + } + function toString(value) { + return value == null ? "" : baseToString(value); + } + var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); } - }), Dt(bt(a3), "handleSelect", function(e4, t4, r5) { - if (a3.setState({ preventFocus: true }, function() { - return a3.preventFocusTimeout = setTimeout(function() { - return a3.setState({ preventFocus: false }); - }, 50), a3.preventFocusTimeout; - }), a3.props.onChangeRaw && a3.props.onChangeRaw(t4), a3.setSelected(e4, t4, false, r5), !a3.props.shouldCloseOnSelect || a3.props.showTimeSelect) - a3.setPreSelection(e4); - else if (!a3.props.inline) { - a3.props.selectsRange || a3.setOpen(false); - var n3 = a3.props, o3 = n3.startDate, s3 = n3.endDate; - !o3 || s3 || nt.default(e4, o3) || a3.setOpen(false); - } - }), Dt(bt(a3), "setSelected", function(e4, t4, r5, n3) { - var o3 = e4; - if (null === o3 || !rr(o3, a3.props)) { - var s3 = a3.props, i3 = s3.onChange, p3 = s3.selectsRange, l3 = s3.startDate, d3 = s3.endDate; - if (!zt(a3.props.selected, o3) || a3.props.allowSameDay || p3) - if (null !== o3 && (!a3.props.selected || r5 && (a3.props.showTimeSelect || a3.props.showTimeSelectOnly || a3.props.showTimeInput) || (o3 = Ft(o3, { hour: Pe.default(a3.props.selected), minute: Me.default(a3.props.selected), second: _e.default(a3.props.selected) })), a3.props.inline || a3.setState({ preSelection: o3 }), a3.props.focusSelectedMonth || a3.setState({ monthSelectedIn: n3 })), p3) { - var c3 = l3 && !d3, u3 = l3 && d3; - !l3 && !d3 ? i3([o3, null], t4) : c3 && (nt.default(o3, l3) ? i3([o3, null], t4) : i3([l3, o3], t4)), u3 && i3([o3, null], t4); - } else - i3(o3, t4); - r5 || (a3.props.onSelect(o3, t4), a3.setState({ inputValue: null })); - } - }), Dt(bt(a3), "setPreSelection", function(e4) { - var t4 = void 0 !== a3.props.minDate, r5 = void 0 !== a3.props.maxDate, n3 = true; - if (e4) { - var o3 = Ve.default(e4); - if (t4 && r5) - n3 = Gt(e4, a3.props.minDate, a3.props.maxDate); - else if (t4) { - var s3 = Ve.default(a3.props.minDate); - n3 = at.default(e4, s3) || zt(o3, s3); - } else if (r5) { - var i3 = Je.default(a3.props.maxDate); - n3 = nt.default(e4, i3) || zt(o3, i3); + } + }); + var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); + }); + var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); + }); + var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys(source), object, customizer); + }); + var at = flatRest(baseAt); + function create(prototype, properties) { + var result2 = baseCreate(prototype); + return properties == null ? result2 : baseAssign(result2, properties); + } + var defaults = baseRest(function(object, sources) { + object = Object2(object); + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined2; + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + if (value === undefined2 || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) { + object[key] = source[key]; } } - n3 && a3.setState({ preSelection: e4 }); - }), Dt(bt(a3), "handleTimeChange", function(e4) { - var t4 = Ft(a3.props.selected ? a3.props.selected : a3.getPreSelection(), { hour: Pe.default(e4), minute: Me.default(e4) }); - a3.setState({ preSelection: t4 }), a3.props.onChange(t4), a3.props.shouldCloseOnSelect && a3.setOpen(false), a3.props.showTimeInput && a3.setOpen(true), a3.setState({ inputValue: null }); - }), Dt(bt(a3), "onInputClick", function() { - a3.props.disabled || a3.props.readOnly || a3.setOpen(true), a3.props.onInputClick(); - }), Dt(bt(a3), "onInputKeyDown", function(e4) { - a3.props.onKeyDown(e4); - var t4 = e4.key; - if (a3.state.open || a3.props.inline || a3.props.preventOpenOnFocus) { - if (a3.state.open) { - if ("ArrowDown" === t4 || "ArrowUp" === t4) { - e4.preventDefault(); - var r5 = a3.calendar.componentNode && a3.calendar.componentNode.querySelector('.react-datepicker__day[tabindex="0"]'); - return void (r5 && r5.focus({ preventScroll: true })); + } + return object; + }); + var defaultsDeep = baseRest(function(args) { + args.push(undefined2, customDefaultsMerge); + return apply(mergeWith, undefined2, args); + }); + function findKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); + } + function findLastKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); + } + function forIn(object, iteratee2) { + return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn); + } + function forInRight(object, iteratee2) { + return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn); + } + function forOwn(object, iteratee2) { + return object && baseForOwn(object, getIteratee(iteratee2, 3)); + } + function forOwnRight(object, iteratee2) { + return object && baseForOwnRight(object, getIteratee(iteratee2, 3)); + } + function functions(object) { + return object == null ? [] : baseFunctions(object, keys(object)); + } + function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); + } + function get(object, path, defaultValue) { + var result2 = object == null ? undefined2 : baseGet(object, path); + return result2 === undefined2 ? defaultValue : result2; + } + function has(object, path) { + return object != null && hasPath(object, path, baseHas); + } + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + var invert = createInverter(function(result2, value, key) { + if (value != null && typeof value.toString != "function") { + value = nativeObjectToString.call(value); + } + result2[value] = key; + }, constant(identity2)); + var invertBy = createInverter(function(result2, value, key) { + if (value != null && typeof value.toString != "function") { + value = nativeObjectToString.call(value); + } + if (hasOwnProperty.call(result2, value)) { + result2[value].push(key); + } else { + result2[value] = [key]; + } + }, getIteratee); + var invoke = baseRest(baseInvoke); + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + function mapKeys(object, iteratee2) { + var result2 = {}; + iteratee2 = getIteratee(iteratee2, 3); + baseForOwn(object, function(value, key, object2) { + baseAssignValue(result2, iteratee2(value, key, object2), value); + }); + return result2; + } + function mapValues(object, iteratee2) { + var result2 = {}; + iteratee2 = getIteratee(iteratee2, 3); + baseForOwn(object, function(value, key, object2) { + baseAssignValue(result2, key, iteratee2(value, key, object2)); + }); + return result2; + } + var merge2 = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); + }); + var omit2 = flatRest(function(object, paths) { + var result2 = {}; + if (object == null) { + return result2; + } + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result2); + if (isDeep) { + result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + var length = paths.length; + while (length--) { + baseUnset(result2, paths[length]); + } + return result2; + }); + function omitBy(object, predicate) { + return pickBy(object, negate(getIteratee(predicate))); + } + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = getIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); + } + function result(object, path, defaultValue) { + path = castPath(path, object); + var index = -1, length = path.length; + if (!length) { + length = 1; + object = undefined2; + } + while (++index < length) { + var value = object == null ? undefined2 : object[toKey(path[index])]; + if (value === undefined2) { + index = length; + value = defaultValue; + } + object = isFunction(value) ? value.call(object) : value; + } + return object; + } + function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } + function setWith(object, path, value, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + return object == null ? object : baseSet(object, path, value, customizer); + } + var toPairs = createToPairs(keys); + var toPairsIn = createToPairs(keysIn); + function transform(object, iteratee2, accumulator) { + var isArr = isArray(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object); + iteratee2 = getIteratee(iteratee2, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor() : []; + } else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object2) { + return iteratee2(accumulator, value, index, object2); + }); + return accumulator; + } + function unset(object, path) { + return object == null ? true : baseUnset(object, path); + } + function update(object, path, updater) { + return object == null ? object : baseUpdate(object, path, castFunction(updater)); + } + function updateWith(object, path, updater, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); + } + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); + } + function valuesIn(object) { + return object == null ? [] : baseValues(object, keysIn(object)); + } + function clamp(number, lower, upper) { + if (upper === undefined2) { + upper = lower; + lower = undefined2; + } + if (upper !== undefined2) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== undefined2) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); + } + function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined2) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + number = toNumber(number); + return baseInRange(number, start, end); + } + function random(lower, upper, floating) { + if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) { + upper = floating = undefined2; + } + if (floating === undefined2) { + if (typeof upper == "boolean") { + floating = upper; + upper = undefined2; + } else if (typeof lower == "boolean") { + floating = lower; + lower = undefined2; + } + } + if (lower === undefined2 && upper === undefined2) { + lower = 0; + upper = 1; + } else { + lower = toFinite(lower); + if (upper === undefined2) { + upper = lower; + lower = 0; + } else { + upper = toFinite(upper); + } + } + if (lower > upper) { + var temp = lower; + lower = upper; + upper = temp; + } + if (floating || lower % 1 || upper % 1) { + var rand = nativeRandom(); + return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper); + } + return baseRandom(lower, upper); + } + var camelCase = createCompounder(function(result2, word, index) { + word = word.toLowerCase(); + return result2 + (index ? capitalize(word) : word); + }); + function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); + } + function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ""); + } + function endsWith(string, target, position) { + string = toString(string); + target = baseToString(target); + var length = string.length; + position = position === undefined2 ? length : baseClamp(toInteger(position), 0, length); + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; + } + function escape(string) { + string = toString(string); + return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string; + } + function escapeRegExp(string) { + string = toString(string); + return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string; + } + var kebabCase = createCompounder(function(result2, word, index) { + return result2 + (index ? "-" : "") + word.toLowerCase(); + }); + var lowerCase = createCompounder(function(result2, word, index) { + return result2 + (index ? " " : "") + word.toLowerCase(); + }); + var lowerFirst = createCaseFirst("toLowerCase"); + function pad(string, length, chars) { + string = toString(string); + length = toInteger(length); + var strLength = length ? stringSize(string) : 0; + if (!length || strLength >= length) { + return string; + } + var mid = (length - strLength) / 2; + return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars); + } + function padEnd(string, length, chars) { + string = toString(string); + length = toInteger(length); + var strLength = length ? stringSize(string) : 0; + return length && strLength < length ? string + createPadding(length - strLength, chars) : string; + } + function padStart(string, length, chars) { + string = toString(string); + length = toInteger(length); + var strLength = length ? stringSize(string) : 0; + return length && strLength < length ? createPadding(length - strLength, chars) + string : string; + } + function parseInt2(string, radix, guard) { + if (guard || radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + return nativeParseInt(toString(string).replace(reTrimStart, ""), radix || 0); + } + function repeat(string, n2, guard) { + if (guard ? isIterateeCall(string, n2, guard) : n2 === undefined2) { + n2 = 1; + } else { + n2 = toInteger(n2); + } + return baseRepeat(toString(string), n2); + } + function replace() { + var args = arguments, string = toString(args[0]); + return args.length < 3 ? string : string.replace(args[1], args[2]); + } + var snakeCase = createCompounder(function(result2, word, index) { + return result2 + (index ? "_" : "") + word.toLowerCase(); + }); + function split2(string, separator, limit) { + if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) { + separator = limit = undefined2; + } + limit = limit === undefined2 ? MAX_ARRAY_LENGTH : limit >>> 0; + if (!limit) { + return []; + } + string = toString(string); + if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) { + separator = baseToString(separator); + if (!separator && hasUnicode(string)) { + return castSlice(stringToArray(string), 0, limit); + } + } + return string.split(separator, limit); + } + var startCase = createCompounder(function(result2, word, index) { + return result2 + (index ? " " : "") + upperFirst(word); + }); + function startsWith(string, target, position) { + string = toString(string); + position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length); + target = baseToString(target); + return string.slice(position, position + target.length) == target; + } + function template(string, options, guard) { + var settings = lodash.templateSettings; + if (guard && isIterateeCall(string, options, guard)) { + options = undefined2; + } + string = toString(string); + options = assignInWith({}, options, settings, customDefaultsAssignIn); + var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys); + var isEscaping, isEvaluating, index = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '"; + var reDelimiters = RegExp2( + (options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", + "g" + ); + var sourceURL = "//# sourceURL=" + (hasOwnProperty.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n"; + string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { + interpolateValue || (interpolateValue = esTemplateValue); + source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar); + if (escapeValue) { + isEscaping = true; + source += "' +\n__e(" + escapeValue + ") +\n'"; + } + if (evaluateValue) { + isEvaluating = true; + source += "';\n" + evaluateValue + ";\n__p += '"; + } + if (interpolateValue) { + source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + var variable = hasOwnProperty.call(options, "variable") && options.variable; + if (!variable) { + source = "with (obj) {\n" + source + "\n}\n"; + } else if (reForbiddenIdentifierChars.test(variable)) { + throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT); + } + source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;"); + source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}"; + var result2 = attempt(function() { + return Function2(importsKeys, sourceURL + "return " + source).apply(undefined2, importsValues); + }); + result2.source = source; + if (isError2(result2)) { + throw result2; + } + return result2; + } + function toLower(value) { + return toString(value).toLowerCase(); + } + function toUpper(value) { + return toString(value).toUpperCase(); + } + function trim(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined2)) { + return baseTrim(string); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start = charsStartIndex(strSymbols, chrSymbols), end = charsEndIndex(strSymbols, chrSymbols) + 1; + return castSlice(strSymbols, start, end).join(""); + } + function trimEnd(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined2)) { + return string.slice(0, trimmedEndIndex(string) + 1); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), end = charsEndIndex(strSymbols, stringToArray(chars)) + 1; + return castSlice(strSymbols, 0, end).join(""); + } + function trimStart(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined2)) { + return string.replace(reTrimStart, ""); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), start = charsStartIndex(strSymbols, stringToArray(chars)); + return castSlice(strSymbols, start).join(""); + } + function truncate(string, options) { + var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION; + if (isObject(options)) { + var separator = "separator" in options ? options.separator : separator; + length = "length" in options ? toInteger(options.length) : length; + omission = "omission" in options ? baseToString(options.omission) : omission; + } + string = toString(string); + var strLength = string.length; + if (hasUnicode(string)) { + var strSymbols = stringToArray(string); + strLength = strSymbols.length; + } + if (length >= strLength) { + return string; + } + var end = length - stringSize(omission); + if (end < 1) { + return omission; + } + var result2 = strSymbols ? castSlice(strSymbols, 0, end).join("") : string.slice(0, end); + if (separator === undefined2) { + return result2 + omission; + } + if (strSymbols) { + end += result2.length - end; + } + if (isRegExp(separator)) { + if (string.slice(end).search(separator)) { + var match, substring = result2; + if (!separator.global) { + separator = RegExp2(separator.source, toString(reFlags.exec(separator)) + "g"); + } + separator.lastIndex = 0; + while (match = separator.exec(substring)) { + var newEnd = match.index; + } + result2 = result2.slice(0, newEnd === undefined2 ? end : newEnd); + } + } else if (string.indexOf(baseToString(separator), end) != end) { + var index = result2.lastIndexOf(separator); + if (index > -1) { + result2 = result2.slice(0, index); + } + } + return result2 + omission; + } + function unescape2(string) { + string = toString(string); + return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string; + } + var upperCase = createCompounder(function(result2, word, index) { + return result2 + (index ? " " : "") + word.toUpperCase(); + }); + var upperFirst = createCaseFirst("toUpperCase"); + function words(string, pattern, guard) { + string = toString(string); + pattern = guard ? undefined2 : pattern; + if (pattern === undefined2) { + return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); + } + return string.match(pattern) || []; + } + var attempt = baseRest(function(func, args) { + try { + return apply(func, undefined2, args); + } catch (e) { + return isError2(e) ? e : new Error2(e); + } + }); + var bindAll = flatRest(function(object, methodNames) { + arrayEach(methodNames, function(key) { + key = toKey(key); + baseAssignValue(object, key, bind(object[key], object)); + }); + return object; + }); + function cond(pairs) { + var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee(); + pairs = !length ? [] : arrayMap(pairs, function(pair) { + if (typeof pair[1] != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + return [toIteratee(pair[0]), pair[1]]; + }); + return baseRest(function(args) { + var index = -1; + while (++index < length) { + var pair = pairs[index]; + if (apply(pair[0], this, args)) { + return apply(pair[1], this, args); + } + } + }); + } + function conforms(source) { + return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); + } + function constant(value) { + return function() { + return value; + }; + } + function defaultTo(value, defaultValue) { + return value == null || value !== value ? defaultValue : value; + } + var flow = createFlow(); + var flowRight = createFlow(true); + function identity2(value) { + return value; + } + function iteratee(func) { + return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG)); + } + function matches(source) { + return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); + } + function matchesProperty(path, srcValue) { + return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); + } + var method = baseRest(function(path, args) { + return function(object) { + return baseInvoke(object, path, args); + }; + }); + var methodOf = baseRest(function(object, args) { + return function(path) { + return baseInvoke(object, path, args); + }; + }); + function mixin(object, source, options) { + var props = keys(source), methodNames = baseFunctions(source, props); + if (options == null && !(isObject(source) && (methodNames.length || !props.length))) { + options = source; + source = object; + object = this; + methodNames = baseFunctions(source, keys(source)); + } + var chain2 = !(isObject(options) && "chain" in options) || !!options.chain, isFunc = isFunction(object); + arrayEach(methodNames, function(methodName) { + var func = source[methodName]; + object[methodName] = func; + if (isFunc) { + object.prototype[methodName] = function() { + var chainAll = this.__chain__; + if (chain2 || chainAll) { + var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__); + actions.push({ "func": func, "args": arguments, "thisArg": object }); + result2.__chain__ = chainAll; + return result2; } - var n3 = Yt(a3.state.preSelection); - "Enter" === t4 ? (e4.preventDefault(), a3.inputOk() && a3.state.lastPreSelectChange === Zr ? (a3.handleSelect(n3, e4), !a3.props.shouldCloseOnSelect && a3.setPreSelection(n3)) : a3.setOpen(false)) : "Escape" === t4 && (e4.preventDefault(), a3.setOpen(false)), a3.inputOk() || a3.props.onInputError({ code: 1, msg: Gr }); - } - } else - "ArrowDown" !== t4 && "ArrowUp" !== t4 && "Enter" !== t4 || a3.onInputClick(); - }), Dt(bt(a3), "onDayKeyDown", function(e4) { - a3.props.onKeyDown(e4); - var t4 = e4.key, r5 = Yt(a3.state.preSelection); - if ("Enter" === t4) - e4.preventDefault(), a3.handleSelect(r5, e4), !a3.props.shouldCloseOnSelect && a3.setPreSelection(r5); - else if ("Escape" === t4) - e4.preventDefault(), a3.setOpen(false), a3.inputOk() || a3.props.onInputError({ code: 1, msg: Gr }); - else if (!a3.props.disabledKeyboardNavigation) { - var n3; - switch (t4) { - case "ArrowLeft": - n3 = ke.default(r5, 1); - break; - case "ArrowRight": - n3 = De.default(r5, 1); - break; - case "ArrowUp": - n3 = be.default(r5, 1); - break; - case "ArrowDown": - n3 = ve.default(r5, 1); - break; - case "PageUp": - n3 = Se.default(r5, 1); - break; - case "PageDown": - n3 = we.default(r5, 1); - break; - case "Home": - n3 = Ce.default(r5, 1); - break; - case "End": - n3 = ge.default(r5, 1); - } - if (!n3) - return void (a3.props.onInputError && a3.props.onInputError({ code: 1, msg: Gr })); - if (e4.preventDefault(), a3.setState({ lastPreSelectChange: Zr }), a3.props.adjustDateOnChange && a3.setSelected(n3), a3.setPreSelection(n3), a3.props.inline) { - var o3 = Oe.default(r5), s3 = Oe.default(n3), i3 = Ie.default(r5), p3 = Ie.default(n3); - o3 !== s3 || i3 !== p3 ? a3.setState({ shouldFocusDayInline: true }) : a3.setState({ shouldFocusDayInline: false }); - } + return func.apply(object, arrayPush([this.value()], arguments)); + }; } - }), Dt(bt(a3), "onPopperKeyDown", function(e4) { - "Escape" === e4.key && (e4.preventDefault(), a3.setState({ preventFocus: true }, function() { - a3.setOpen(false), setTimeout(function() { - a3.setFocus(), a3.setState({ preventFocus: false }); - }); - })); - }), Dt(bt(a3), "onClearClick", function(e4) { - e4 && e4.preventDefault && e4.preventDefault(), a3.props.selectsRange ? a3.props.onChange([null, null], e4) : a3.props.onChange(null, e4), a3.setState({ inputValue: null }); - }), Dt(bt(a3), "clear", function() { - a3.onClearClick(); - }), Dt(bt(a3), "onScroll", function(e4) { - "boolean" == typeof a3.props.closeOnScroll && a3.props.closeOnScroll ? e4.target !== document && e4.target !== document.documentElement && e4.target !== document.body || a3.setOpen(false) : "function" == typeof a3.props.closeOnScroll && a3.props.closeOnScroll(e4) && a3.setOpen(false); - }), Dt(bt(a3), "renderCalendar", function() { - return a3.props.inline || a3.isCalendarOpen() ? de.default.createElement(zr, { ref: function(e4) { - a3.calendar = e4; - }, locale: a3.props.locale, calendarStartDay: a3.props.calendarStartDay, chooseDayAriaLabelPrefix: a3.props.chooseDayAriaLabelPrefix, disabledDayAriaLabelPrefix: a3.props.disabledDayAriaLabelPrefix, weekAriaLabelPrefix: a3.props.weekAriaLabelPrefix, monthAriaLabelPrefix: a3.props.monthAriaLabelPrefix, adjustDateOnChange: a3.props.adjustDateOnChange, setOpen: a3.setOpen, shouldCloseOnSelect: a3.props.shouldCloseOnSelect, dateFormat: a3.props.dateFormatCalendar, useWeekdaysShort: a3.props.useWeekdaysShort, formatWeekDay: a3.props.formatWeekDay, dropdownMode: a3.props.dropdownMode, selected: a3.props.selected, preSelection: a3.state.preSelection, onSelect: a3.handleSelect, onWeekSelect: a3.props.onWeekSelect, openToDate: a3.props.openToDate, minDate: a3.props.minDate, maxDate: a3.props.maxDate, selectsStart: a3.props.selectsStart, selectsEnd: a3.props.selectsEnd, selectsRange: a3.props.selectsRange, startDate: a3.props.startDate, endDate: a3.props.endDate, excludeDates: a3.props.excludeDates, excludeDateIntervals: a3.props.excludeDateIntervals, filterDate: a3.props.filterDate, onClickOutside: a3.handleCalendarClickOutside, formatWeekNumber: a3.props.formatWeekNumber, highlightDates: a3.state.highlightDates, includeDates: a3.props.includeDates, includeDateIntervals: a3.props.includeDateIntervals, includeTimes: a3.props.includeTimes, injectTimes: a3.props.injectTimes, inline: a3.props.inline, shouldFocusDayInline: a3.state.shouldFocusDayInline, peekNextMonth: a3.props.peekNextMonth, showMonthDropdown: a3.props.showMonthDropdown, showPreviousMonths: a3.props.showPreviousMonths, useShortMonthInDropdown: a3.props.useShortMonthInDropdown, showMonthYearDropdown: a3.props.showMonthYearDropdown, showWeekNumbers: a3.props.showWeekNumbers, showYearDropdown: a3.props.showYearDropdown, withPortal: a3.props.withPortal, forceShowMonthNavigation: a3.props.forceShowMonthNavigation, showDisabledMonthNavigation: a3.props.showDisabledMonthNavigation, scrollableYearDropdown: a3.props.scrollableYearDropdown, scrollableMonthYearDropdown: a3.props.scrollableMonthYearDropdown, todayButton: a3.props.todayButton, weekLabel: a3.props.weekLabel, outsideClickIgnoreClass: $r, fixedHeight: a3.props.fixedHeight, monthsShown: a3.props.monthsShown, monthSelectedIn: a3.state.monthSelectedIn, onDropdownFocus: a3.handleDropdownFocus, onMonthChange: a3.props.onMonthChange, onYearChange: a3.props.onYearChange, dayClassName: a3.props.dayClassName, weekDayClassName: a3.props.weekDayClassName, monthClassName: a3.props.monthClassName, timeClassName: a3.props.timeClassName, showTimeSelect: a3.props.showTimeSelect, showTimeSelectOnly: a3.props.showTimeSelectOnly, onTimeChange: a3.handleTimeChange, timeFormat: a3.props.timeFormat, timeIntervals: a3.props.timeIntervals, minTime: a3.props.minTime, maxTime: a3.props.maxTime, excludeTimes: a3.props.excludeTimes, filterTime: a3.props.filterTime, timeCaption: a3.props.timeCaption, className: a3.props.calendarClassName, container: a3.props.calendarContainer, yearItemNumber: a3.props.yearItemNumber, yearDropdownItemNumber: a3.props.yearDropdownItemNumber, previousMonthAriaLabel: a3.props.previousMonthAriaLabel, previousMonthButtonLabel: a3.props.previousMonthButtonLabel, nextMonthAriaLabel: a3.props.nextMonthAriaLabel, nextMonthButtonLabel: a3.props.nextMonthButtonLabel, previousYearAriaLabel: a3.props.previousYearAriaLabel, previousYearButtonLabel: a3.props.previousYearButtonLabel, nextYearAriaLabel: a3.props.nextYearAriaLabel, nextYearButtonLabel: a3.props.nextYearButtonLabel, timeInputLabel: a3.props.timeInputLabel, disabledKeyboardNavigation: a3.props.disabledKeyboardNavigation, renderCustomHeader: a3.props.renderCustomHeader, popperProps: a3.props.popperProps, renderDayContents: a3.props.renderDayContents, onDayMouseEnter: a3.props.onDayMouseEnter, onMonthMouseLeave: a3.props.onMonthMouseLeave, selectsDisabledDaysInRange: a3.props.selectsDisabledDaysInRange, showTimeInput: a3.props.showTimeInput, showMonthYearPicker: a3.props.showMonthYearPicker, showFullMonthYearPicker: a3.props.showFullMonthYearPicker, showTwoColumnMonthYearPicker: a3.props.showTwoColumnMonthYearPicker, showFourColumnMonthYearPicker: a3.props.showFourColumnMonthYearPicker, showYearPicker: a3.props.showYearPicker, showQuarterYearPicker: a3.props.showQuarterYearPicker, showPopperArrow: a3.props.showPopperArrow, excludeScrollbar: a3.props.excludeScrollbar, handleOnKeyDown: a3.props.onKeyDown, handleOnDayKeyDown: a3.onDayKeyDown, isInputFocused: a3.state.focused, customTimeInput: a3.props.customTimeInput, setPreSelection: a3.setPreSelection }, a3.props.children) : null; - }), Dt(bt(a3), "renderDateInput", function() { - var e4, t4 = ce.default(a3.props.className, Dt({}, $r, a3.state.open)), r5 = a3.props.customInput || de.default.createElement("input", { type: "text" }), n3 = a3.props.customInputRef || "ref", o3 = "string" == typeof a3.props.value ? a3.props.value : "string" == typeof a3.state.inputValue ? a3.state.inputValue : a3.props.selectsRange ? function(e5, t5, r6) { - if (!e5) - return ""; - var a4 = Rt(e5, r6), n4 = t5 ? Rt(t5, r6) : ""; - return "".concat(a4, " - ").concat(n4); - }(a3.props.startDate, a3.props.endDate, a3.props) : Rt(a3.props.selected, a3.props); - return de.default.cloneElement(r5, (Dt(e4 = {}, n3, function(e5) { - a3.input = e5; - }), Dt(e4, "value", o3), Dt(e4, "onBlur", a3.handleBlur), Dt(e4, "onChange", a3.handleChange), Dt(e4, "onClick", a3.onInputClick), Dt(e4, "onFocus", a3.handleFocus), Dt(e4, "onKeyDown", a3.onInputKeyDown), Dt(e4, "id", a3.props.id), Dt(e4, "name", a3.props.name), Dt(e4, "autoFocus", a3.props.autoFocus), Dt(e4, "placeholder", a3.props.placeholderText), Dt(e4, "disabled", a3.props.disabled), Dt(e4, "autoComplete", a3.props.autoComplete), Dt(e4, "className", ce.default(r5.props.className, t4)), Dt(e4, "title", a3.props.title), Dt(e4, "readOnly", a3.props.readOnly), Dt(e4, "required", a3.props.required), Dt(e4, "tabIndex", a3.props.tabIndex), Dt(e4, "aria-describedby", a3.props.ariaDescribedBy), Dt(e4, "aria-invalid", a3.props.ariaInvalid), Dt(e4, "aria-labelledby", a3.props.ariaLabelledBy), Dt(e4, "aria-required", a3.props.ariaRequired), e4)); - }), Dt(bt(a3), "renderClearButton", function() { - var e4 = a3.props, t4 = e4.isClearable, r5 = e4.selected, n3 = e4.startDate, o3 = e4.endDate, s3 = e4.clearButtonTitle, i3 = e4.clearButtonClassName, p3 = void 0 === i3 ? "" : i3, l3 = e4.ariaLabelClose, d3 = void 0 === l3 ? "Close" : l3; - return !t4 || null == r5 && null == n3 && null == o3 ? null : de.default.createElement("button", { type: "button", className: "react-datepicker__close-icon ".concat(p3).trim(), "aria-label": d3, onClick: a3.onClearClick, title: s3, tabIndex: -1 }); - }), a3.state = a3.calcInitialState(), a3; + }); + return object; } - return yt(r4, [{ key: "componentDidMount", value: function() { - window.addEventListener("scroll", this.onScroll, true); - } }, { key: "componentDidUpdate", value: function(e3, t4) { - var r5, a3; - e3.inline && (r5 = e3.selected, a3 = this.props.selected, r5 && a3 ? Oe.default(r5) !== Oe.default(a3) || Ie.default(r5) !== Ie.default(a3) : r5 !== a3) && this.setPreSelection(this.props.selected), void 0 !== this.state.monthSelectedIn && e3.monthsShown !== this.props.monthsShown && this.setState({ monthSelectedIn: 0 }), e3.highlightDates !== this.props.highlightDates && this.setState({ highlightDates: wr(this.props.highlightDates) }), t4.focused || zt(e3.selected, this.props.selected) || this.setState({ inputValue: null }), t4.open !== this.state.open && (false === t4.open && true === this.state.open && this.props.onCalendarOpen(), true === t4.open && false === this.state.open && this.props.onCalendarClose()); - } }, { key: "componentWillUnmount", value: function() { - this.clearPreventFocusTimeout(), window.removeEventListener("scroll", this.onScroll, true); - } }, { key: "renderInputContainer", value: function() { - return de.default.createElement("div", { className: "react-datepicker__input-container" }, this.renderDateInput(), this.renderClearButton()); - } }, { key: "render", value: function() { - var e3 = this.renderCalendar(); - if (this.props.inline) - return e3; - if (this.props.withPortal) { - var t4 = this.state.open ? de.default.createElement("div", { className: "react-datepicker__portal" }, e3) : null; - return this.state.open && this.props.portalId && (t4 = de.default.createElement(jr, { portalId: this.props.portalId, portalHost: this.props.portalHost }, t4)), de.default.createElement("div", null, this.renderInputContainer(), t4); + function noConflict() { + if (root._ === this) { + root._ = oldDash; } - return de.default.createElement(Ur, { className: this.props.popperClassName, wrapperClassName: this.props.wrapperClassName, hidePopper: !this.isCalendarOpen(), portalId: this.props.portalId, portalHost: this.props.portalHost, popperModifiers: this.props.popperModifiers, targetComponent: this.renderInputContainer(), popperContainer: this.props.popperContainer, popperComponent: e3, popperPlacement: this.props.popperPlacement, popperProps: this.props.popperProps, popperOnKeyDown: this.onPopperKeyDown, enableTabLoop: this.props.enableTabLoop }); - } }], [{ key: "defaultProps", get: function() { - return { allowSameDay: false, dateFormat: "MM/dd/yyyy", dateFormatCalendar: "LLLL yyyy", onChange: function() { - }, disabled: false, disabledKeyboardNavigation: false, dropdownMode: "scroll", onFocus: function() { - }, onBlur: function() { - }, onKeyDown: function() { - }, onInputClick: function() { - }, onSelect: function() { - }, onClickOutside: function() { - }, onMonthChange: function() { - }, onCalendarOpen: function() { - }, onCalendarClose: function() { - }, preventOpenOnFocus: false, onYearChange: function() { - }, onInputError: function() { - }, monthsShown: 1, readOnly: false, withPortal: false, selectsDisabledDaysInRange: false, shouldCloseOnSelect: true, showTimeSelect: false, showTimeInput: false, showPreviousMonths: false, showMonthYearPicker: false, showFullMonthYearPicker: false, showTwoColumnMonthYearPicker: false, showFourColumnMonthYearPicker: false, showYearPicker: false, showQuarterYearPicker: false, strictParsing: false, timeIntervals: 30, timeCaption: "Time", previousMonthAriaLabel: "Previous Month", previousMonthButtonLabel: "Previous Month", nextMonthAriaLabel: "Next Month", nextMonthButtonLabel: "Next Month", previousYearAriaLabel: "Previous Year", previousYearButtonLabel: "Previous Year", nextYearAriaLabel: "Next Year", nextYearButtonLabel: "Next Year", timeInputLabel: "Time", enableTabLoop: true, yearItemNumber: xt, renderDayContents: function(e3) { - return e3; - }, focusSelectedMonth: false, showPopperArrow: true, excludeScrollbar: true, customTimeInput: null, calendarStartDay: void 0 }; - } }]), r4; - }(de.default.Component), Xr = "input", Zr = "navigate"; - e.CalendarContainer = Br, e.default = Jr, e.getDefaultLocale = Jt, e.registerLocale = function(e2, t3) { - var r4 = "undefined" != typeof window ? window : globalThis; - r4.__localeData__ || (r4.__localeData__ = {}), r4.__localeData__[e2] = t3; - }, e.setDefaultLocale = function(e2) { - ("undefined" != typeof window ? window : globalThis).__localeId__ = e2; - }, Object.defineProperty(e, "__esModule", { value: true }); - }); + return this; + } + function noop2() { + } + function nthArg(n2) { + n2 = toInteger(n2); + return baseRest(function(args) { + return baseNth(args, n2); + }); + } + var over = createOver(arrayMap); + var overEvery = createOver(arrayEvery); + var overSome = createOver(arraySome); + function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); + } + function propertyOf(object) { + return function(path) { + return object == null ? undefined2 : baseGet(object, path); + }; + } + var range = createRange(); + var rangeRight = createRange(true); + function stubArray() { + return []; + } + function stubFalse() { + return false; + } + function stubObject() { + return {}; + } + function stubString() { + return ""; + } + function stubTrue() { + return true; + } + function times(n2, iteratee2) { + n2 = toInteger(n2); + if (n2 < 1 || n2 > MAX_SAFE_INTEGER) { + return []; + } + var index = MAX_ARRAY_LENGTH, length = nativeMin(n2, MAX_ARRAY_LENGTH); + iteratee2 = getIteratee(iteratee2); + n2 -= MAX_ARRAY_LENGTH; + var result2 = baseTimes(length, iteratee2); + while (++index < n2) { + iteratee2(index); + } + return result2; + } + function toPath(value) { + if (isArray(value)) { + return arrayMap(value, toKey); + } + return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value))); + } + function uniqueId(prefix2) { + var id2 = ++idCounter; + return toString(prefix2) + id2; + } + var add = createMathOperation(function(augend, addend) { + return augend + addend; + }, 0); + var ceil2 = createRound("ceil"); + var divide = createMathOperation(function(dividend, divisor) { + return dividend / divisor; + }, 1); + var floor2 = createRound("floor"); + function max2(array) { + return array && array.length ? baseExtremum(array, identity2, baseGt) : undefined2; + } + function maxBy(array, iteratee2) { + return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2; + } + function mean(array) { + return baseMean(array, identity2); + } + function meanBy(array, iteratee2) { + return baseMean(array, getIteratee(iteratee2, 2)); + } + function min2(array) { + return array && array.length ? baseExtremum(array, identity2, baseLt) : undefined2; + } + function minBy(array, iteratee2) { + return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined2; + } + var multiply = createMathOperation(function(multiplier, multiplicand) { + return multiplier * multiplicand; + }, 1); + var round2 = createRound("round"); + var subtract = createMathOperation(function(minuend, subtrahend) { + return minuend - subtrahend; + }, 0); + function sum(array) { + return array && array.length ? baseSum(array, identity2) : 0; + } + function sumBy(array, iteratee2) { + return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0; + } + lodash.after = after; + lodash.ary = ary; + lodash.assign = assign; + lodash.assignIn = assignIn; + lodash.assignInWith = assignInWith; + lodash.assignWith = assignWith; + lodash.at = at; + lodash.before = before; + lodash.bind = bind; + lodash.bindAll = bindAll; + lodash.bindKey = bindKey; + lodash.castArray = castArray; + lodash.chain = chain; + lodash.chunk = chunk; + lodash.compact = compact; + lodash.concat = concat; + lodash.cond = cond; + lodash.conforms = conforms; + lodash.constant = constant; + lodash.countBy = countBy; + lodash.create = create; + lodash.curry = curry; + lodash.curryRight = curryRight; + lodash.debounce = debounce; + lodash.defaults = defaults; + lodash.defaultsDeep = defaultsDeep; + lodash.defer = defer; + lodash.delay = delay; + lodash.difference = difference; + lodash.differenceBy = differenceBy; + lodash.differenceWith = differenceWith; + lodash.drop = drop; + lodash.dropRight = dropRight; + lodash.dropRightWhile = dropRightWhile; + lodash.dropWhile = dropWhile; + lodash.fill = fill; + lodash.filter = filter2; + lodash.flatMap = flatMap; + lodash.flatMapDeep = flatMapDeep; + lodash.flatMapDepth = flatMapDepth; + lodash.flatten = flatten; + lodash.flattenDeep = flattenDeep; + lodash.flattenDepth = flattenDepth; + lodash.flip = flip; + lodash.flow = flow; + lodash.flowRight = flowRight; + lodash.fromPairs = fromPairs; + lodash.functions = functions; + lodash.functionsIn = functionsIn; + lodash.groupBy = groupBy; + lodash.initial = initial; + lodash.intersection = intersection; + lodash.intersectionBy = intersectionBy; + lodash.intersectionWith = intersectionWith; + lodash.invert = invert; + lodash.invertBy = invertBy; + lodash.invokeMap = invokeMap; + lodash.iteratee = iteratee; + lodash.keyBy = keyBy; + lodash.keys = keys; + lodash.keysIn = keysIn; + lodash.map = map2; + lodash.mapKeys = mapKeys; + lodash.mapValues = mapValues; + lodash.matches = matches; + lodash.matchesProperty = matchesProperty; + lodash.memoize = memoize; + lodash.merge = merge2; + lodash.mergeWith = mergeWith; + lodash.method = method; + lodash.methodOf = methodOf; + lodash.mixin = mixin; + lodash.negate = negate; + lodash.nthArg = nthArg; + lodash.omit = omit2; + lodash.omitBy = omitBy; + lodash.once = once; + lodash.orderBy = orderBy; + lodash.over = over; + lodash.overArgs = overArgs; + lodash.overEvery = overEvery; + lodash.overSome = overSome; + lodash.partial = partial; + lodash.partialRight = partialRight; + lodash.partition = partition; + lodash.pick = pick; + lodash.pickBy = pickBy; + lodash.property = property; + lodash.propertyOf = propertyOf; + lodash.pull = pull; + lodash.pullAll = pullAll; + lodash.pullAllBy = pullAllBy; + lodash.pullAllWith = pullAllWith; + lodash.pullAt = pullAt; + lodash.range = range; + lodash.rangeRight = rangeRight; + lodash.rearg = rearg; + lodash.reject = reject; + lodash.remove = remove2; + lodash.rest = rest; + lodash.reverse = reverse; + lodash.sampleSize = sampleSize; + lodash.set = set; + lodash.setWith = setWith; + lodash.shuffle = shuffle; + lodash.slice = slice; + lodash.sortBy = sortBy; + lodash.sortedUniq = sortedUniq; + lodash.sortedUniqBy = sortedUniqBy; + lodash.split = split2; + lodash.spread = spread; + lodash.tail = tail; + lodash.take = take; + lodash.takeRight = takeRight; + lodash.takeRightWhile = takeRightWhile; + lodash.takeWhile = takeWhile; + lodash.tap = tap2; + lodash.throttle = throttle; + lodash.thru = thru; + lodash.toArray = toArray; + lodash.toPairs = toPairs; + lodash.toPairsIn = toPairsIn; + lodash.toPath = toPath; + lodash.toPlainObject = toPlainObject; + lodash.transform = transform; + lodash.unary = unary; + lodash.union = union; + lodash.unionBy = unionBy; + lodash.unionWith = unionWith; + lodash.uniq = uniq; + lodash.uniqBy = uniqBy; + lodash.uniqWith = uniqWith; + lodash.unset = unset; + lodash.unzip = unzip; + lodash.unzipWith = unzipWith; + lodash.update = update; + lodash.updateWith = updateWith; + lodash.values = values; + lodash.valuesIn = valuesIn; + lodash.without = without; + lodash.words = words; + lodash.wrap = wrap; + lodash.xor = xor; + lodash.xorBy = xorBy; + lodash.xorWith = xorWith; + lodash.zip = zip; + lodash.zipObject = zipObject; + lodash.zipObjectDeep = zipObjectDeep; + lodash.zipWith = zipWith; + lodash.entries = toPairs; + lodash.entriesIn = toPairsIn; + lodash.extend = assignIn; + lodash.extendWith = assignInWith; + mixin(lodash, lodash); + lodash.add = add; + lodash.attempt = attempt; + lodash.camelCase = camelCase; + lodash.capitalize = capitalize; + lodash.ceil = ceil2; + lodash.clamp = clamp; + lodash.clone = clone2; + lodash.cloneDeep = cloneDeep; + lodash.cloneDeepWith = cloneDeepWith; + lodash.cloneWith = cloneWith; + lodash.conformsTo = conformsTo; + lodash.deburr = deburr; + lodash.defaultTo = defaultTo; + lodash.divide = divide; + lodash.endsWith = endsWith; + lodash.eq = eq; + lodash.escape = escape; + lodash.escapeRegExp = escapeRegExp; + lodash.every = every; + lodash.find = find2; + lodash.findIndex = findIndex; + lodash.findKey = findKey; + lodash.findLast = findLast; + lodash.findLastIndex = findLastIndex; + lodash.findLastKey = findLastKey; + lodash.floor = floor2; + lodash.forEach = forEach; + lodash.forEachRight = forEachRight; + lodash.forIn = forIn; + lodash.forInRight = forInRight; + lodash.forOwn = forOwn; + lodash.forOwnRight = forOwnRight; + lodash.get = get; + lodash.gt = gt; + lodash.gte = gte; + lodash.has = has; + lodash.hasIn = hasIn; + lodash.head = head; + lodash.identity = identity2; + lodash.includes = includes; + lodash.indexOf = indexOf; + lodash.inRange = inRange; + lodash.invoke = invoke; + lodash.isArguments = isArguments; + lodash.isArray = isArray; + lodash.isArrayBuffer = isArrayBuffer; + lodash.isArrayLike = isArrayLike; + lodash.isArrayLikeObject = isArrayLikeObject; + lodash.isBoolean = isBoolean2; + lodash.isBuffer = isBuffer; + lodash.isDate = isDate2; + lodash.isElement = isElement; + lodash.isEmpty = isEmpty; + lodash.isEqual = isEqual; + lodash.isEqualWith = isEqualWith; + lodash.isError = isError2; + lodash.isFinite = isFinite2; + lodash.isFunction = isFunction; + lodash.isInteger = isInteger; + lodash.isLength = isLength; + lodash.isMap = isMap; + lodash.isMatch = isMatch; + lodash.isMatchWith = isMatchWith; + lodash.isNaN = isNaN2; + lodash.isNative = isNative; + lodash.isNil = isNil; + lodash.isNull = isNull; + lodash.isNumber = isNumber2; + lodash.isObject = isObject; + lodash.isObjectLike = isObjectLike; + lodash.isPlainObject = isPlainObject4; + lodash.isRegExp = isRegExp; + lodash.isSafeInteger = isSafeInteger; + lodash.isSet = isSet; + lodash.isString = isString; + lodash.isSymbol = isSymbol; + lodash.isTypedArray = isTypedArray; + lodash.isUndefined = isUndefined; + lodash.isWeakMap = isWeakMap; + lodash.isWeakSet = isWeakSet; + lodash.join = join; + lodash.kebabCase = kebabCase; + lodash.last = last2; + lodash.lastIndexOf = lastIndexOf; + lodash.lowerCase = lowerCase; + lodash.lowerFirst = lowerFirst; + lodash.lt = lt; + lodash.lte = lte; + lodash.max = max2; + lodash.maxBy = maxBy; + lodash.mean = mean; + lodash.meanBy = meanBy; + lodash.min = min2; + lodash.minBy = minBy; + lodash.stubArray = stubArray; + lodash.stubFalse = stubFalse; + lodash.stubObject = stubObject; + lodash.stubString = stubString; + lodash.stubTrue = stubTrue; + lodash.multiply = multiply; + lodash.nth = nth; + lodash.noConflict = noConflict; + lodash.noop = noop2; + lodash.now = now; + lodash.pad = pad; + lodash.padEnd = padEnd; + lodash.padStart = padStart; + lodash.parseInt = parseInt2; + lodash.random = random; + lodash.reduce = reduce; + lodash.reduceRight = reduceRight; + lodash.repeat = repeat; + lodash.replace = replace; + lodash.result = result; + lodash.round = round2; + lodash.runInContext = runInContext2; + lodash.sample = sample; + lodash.size = size; + lodash.snakeCase = snakeCase; + lodash.some = some; + lodash.sortedIndex = sortedIndex; + lodash.sortedIndexBy = sortedIndexBy; + lodash.sortedIndexOf = sortedIndexOf; + lodash.sortedLastIndex = sortedLastIndex; + lodash.sortedLastIndexBy = sortedLastIndexBy; + lodash.sortedLastIndexOf = sortedLastIndexOf; + lodash.startCase = startCase; + lodash.startsWith = startsWith; + lodash.subtract = subtract; + lodash.sum = sum; + lodash.sumBy = sumBy; + lodash.template = template; + lodash.times = times; + lodash.toFinite = toFinite; + lodash.toInteger = toInteger; + lodash.toLength = toLength; + lodash.toLower = toLower; + lodash.toNumber = toNumber; + lodash.toSafeInteger = toSafeInteger; + lodash.toString = toString; + lodash.toUpper = toUpper; + lodash.trim = trim; + lodash.trimEnd = trimEnd; + lodash.trimStart = trimStart; + lodash.truncate = truncate; + lodash.unescape = unescape2; + lodash.uniqueId = uniqueId; + lodash.upperCase = upperCase; + lodash.upperFirst = upperFirst; + lodash.each = forEach; + lodash.eachRight = forEachRight; + lodash.first = head; + mixin(lodash, function() { + var source = {}; + baseForOwn(lodash, function(func, methodName) { + if (!hasOwnProperty.call(lodash.prototype, methodName)) { + source[methodName] = func; + } + }); + return source; + }(), { "chain": false }); + lodash.VERSION = VERSION; + arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) { + lodash[methodName].placeholder = lodash; + }); + arrayEach(["drop", "take"], function(methodName, index) { + LazyWrapper.prototype[methodName] = function(n2) { + n2 = n2 === undefined2 ? 1 : nativeMax(toInteger(n2), 0); + var result2 = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone(); + if (result2.__filtered__) { + result2.__takeCount__ = nativeMin(n2, result2.__takeCount__); + } else { + result2.__views__.push({ + "size": nativeMin(n2, MAX_ARRAY_LENGTH), + "type": methodName + (result2.__dir__ < 0 ? "Right" : "") + }); + } + return result2; + }; + LazyWrapper.prototype[methodName + "Right"] = function(n2) { + return this.reverse()[methodName](n2).reverse(); + }; + }); + arrayEach(["filter", "map", "takeWhile"], function(methodName, index) { + var type = index + 1, isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; + LazyWrapper.prototype[methodName] = function(iteratee2) { + var result2 = this.clone(); + result2.__iteratees__.push({ + "iteratee": getIteratee(iteratee2, 3), + "type": type + }); + result2.__filtered__ = result2.__filtered__ || isFilter; + return result2; + }; + }); + arrayEach(["head", "last"], function(methodName, index) { + var takeName = "take" + (index ? "Right" : ""); + LazyWrapper.prototype[methodName] = function() { + return this[takeName](1).value()[0]; + }; + }); + arrayEach(["initial", "tail"], function(methodName, index) { + var dropName = "drop" + (index ? "" : "Right"); + LazyWrapper.prototype[methodName] = function() { + return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); + }; + }); + LazyWrapper.prototype.compact = function() { + return this.filter(identity2); + }; + LazyWrapper.prototype.find = function(predicate) { + return this.filter(predicate).head(); + }; + LazyWrapper.prototype.findLast = function(predicate) { + return this.reverse().find(predicate); + }; + LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { + if (typeof path == "function") { + return new LazyWrapper(this); + } + return this.map(function(value) { + return baseInvoke(value, path, args); + }); + }); + LazyWrapper.prototype.reject = function(predicate) { + return this.filter(negate(getIteratee(predicate))); + }; + LazyWrapper.prototype.slice = function(start, end) { + start = toInteger(start); + var result2 = this; + if (result2.__filtered__ && (start > 0 || end < 0)) { + return new LazyWrapper(result2); + } + if (start < 0) { + result2 = result2.takeRight(-start); + } else if (start) { + result2 = result2.drop(start); + } + if (end !== undefined2) { + end = toInteger(end); + result2 = end < 0 ? result2.dropRight(-end) : result2.take(end - start); + } + return result2; + }; + LazyWrapper.prototype.takeRightWhile = function(predicate) { + return this.reverse().takeWhile(predicate).reverse(); + }; + LazyWrapper.prototype.toArray = function() { + return this.take(MAX_ARRAY_LENGTH); + }; + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName); + if (!lodashFunc) { + return; + } + lodash.prototype[methodName] = function() { + var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray(value); + var interceptor = function(value2) { + var result3 = lodashFunc.apply(lodash, arrayPush([value2], args)); + return isTaker && chainAll ? result3[0] : result3; + }; + if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) { + isLazy = useLazy = false; + } + var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid; + if (!retUnwrapped && useLazy) { + value = onlyLazy ? value : new LazyWrapper(this); + var result2 = func.apply(value, args); + result2.__actions__.push({ "func": thru, "args": [interceptor], "thisArg": undefined2 }); + return new LodashWrapper(result2, chainAll); + } + if (isUnwrapped && onlyLazy) { + return func.apply(this, args); + } + result2 = this.thru(interceptor); + return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2; + }; + }); + arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) { + var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName); + lodash.prototype[methodName] = function() { + var args = arguments; + if (retUnwrapped && !this.__chain__) { + var value = this.value(); + return func.apply(isArray(value) ? value : [], args); + } + return this[chainName](function(value2) { + return func.apply(isArray(value2) ? value2 : [], args); + }); + }; + }); + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var lodashFunc = lodash[methodName]; + if (lodashFunc) { + var key = lodashFunc.name + ""; + if (!hasOwnProperty.call(realNames, key)) { + realNames[key] = []; + } + realNames[key].push({ "name": methodName, "func": lodashFunc }); + } + }); + realNames[createHybrid(undefined2, WRAP_BIND_KEY_FLAG).name] = [{ + "name": "wrapper", + "func": undefined2 + }]; + LazyWrapper.prototype.clone = lazyClone; + LazyWrapper.prototype.reverse = lazyReverse; + LazyWrapper.prototype.value = lazyValue; + lodash.prototype.at = wrapperAt; + lodash.prototype.chain = wrapperChain; + lodash.prototype.commit = wrapperCommit; + lodash.prototype.next = wrapperNext; + lodash.prototype.plant = wrapperPlant; + lodash.prototype.reverse = wrapperReverse; + lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; + lodash.prototype.first = lodash.prototype.head; + if (symIterator) { + lodash.prototype[symIterator] = wrapperToIterator; + } + return lodash; + }; + var _3 = runInContext(); + if (typeof define == "function" && typeof define.amd == "object" && define.amd) { + root._ = _3; + define(function() { + return _3; + }); + } else if (freeModule) { + (freeModule.exports = _3)._ = _3; + freeExports._ = _3; + } else { + root._ = _3; + } + }).call(exports); } }); @@ -55380,33 +39469,87 @@ var require_react_datepicker_min = __commonJS({ var main_exports = {}; __export(main_exports, { DEFAULT_SETTINGS: () => DEFAULT_SETTINGS, - default: () => NltPlugin + default: () => NLTPlugin }); module.exports = __toCommonJS(main_exports); -var import_obsidian6 = require("obsidian"); +var import_obsidian14 = require("obsidian"); -// src/NltSettingsTab.ts +// src/obsidian/nlt-settings-tab.ts var import_obsidian = require("obsidian"); var import_obsidian2 = require("obsidian"); -var NltSettingsTab = class extends import_obsidian.PluginSettingTab { +var NLTSettingsTab = class extends import_obsidian.PluginSettingTab { constructor(app2, plugin) { super(app2, plugin); + __publicField(this, "plugin"); this.plugin = plugin; } display() { - let { containerEl } = this; + const { containerEl } = this; containerEl.empty(); - new import_obsidian2.Setting(containerEl).setName("Table definition folder").setDesc( - "The folder that contains the NLT table definition files. Do not include any slashes. e.g. '_notion-like-tables'" - ).addText((cb) => { - cb.setValue(this.plugin.settings.tableFolder).onChange( + containerEl.createEl("h2", { text: "Notion-Like Tables" }); + containerEl.createSpan( + {}, + (span) => span.innerHTML = `Please restart Obsidian for these settings to take effect` + ); + new import_obsidian2.Setting(containerEl).setName("File").setHeading(); + const attachmentsFolderDesc = new DocumentFragment(); + attachmentsFolderDesc.createSpan({}, (span) => { + span.innerHTML = `Create tables in the attachments folder defined in the Obsidian settings.

This can be changed in Files & Links -> Default location for new attachments

Otherwise, the custom location below will be used.`; + }); + new import_obsidian2.Setting(containerEl).setName("Create new tables in the attachments folder").setDesc(attachmentsFolderDesc).addToggle((cb) => { + cb.setValue( + this.plugin.settings.createAtObsidianAttachmentFolder + ).onChange((value) => __async(this, null, function* () { + this.plugin.settings.createAtObsidianAttachmentFolder = value; + yield this.plugin.saveSettings(); + this.display(); + })); + }); + const customLocationDesc = new DocumentFragment(); + customLocationDesc.createSpan({}, (span) => { + span.innerHTML = `Folder that new tables will be created in. Please don't include a slash at the start or end.
e.g. myfolder/subdirectory

Default location is the vault root folder, if not specified.`; + }); + if (this.plugin.settings.createAtObsidianAttachmentFolder === false) { + new import_obsidian2.Setting(containerEl).setName("Custom location for new tables").setDesc(customLocationDesc).addText((cb) => { + cb.setValue( + this.plugin.settings.customFolderForNewTables + ).onChange((value) => __async(this, null, function* () { + this.plugin.settings.customFolderForNewTables = value; + yield this.plugin.saveSettings(); + })); + }); + } + const activeFileNameTimestampDesc = new DocumentFragment(); + activeFileNameTimestampDesc.createSpan({}, (span) => { + span.innerHTML = `If a markdown file is open, the active file name and current timestamp will be used as the table name.
e.g. if Test.md is open, the table will be named Test-2023-04-14T13.12.59-06.00.table

Otherwise, the default table file name will be used.
e.g Untitled.table`; + }); + new import_obsidian2.Setting(containerEl).setName( + "Create table name based on active file name and timestamp" + ).setDesc(activeFileNameTimestampDesc).addToggle((cb) => { + cb.setValue( + this.plugin.settings.nameWithActiveFileNameAndTimestamp + ).onChange((value) => __async(this, null, function* () { + this.plugin.settings.nameWithActiveFileNameAndTimestamp = value; + yield this.plugin.saveSettings(); + })); + }); + const exportRenderMarkdownDesc = new DocumentFragment(); + exportRenderMarkdownDesc.createSpan({}, (span) => { + span.innerHTML = "This will cause all exported values to be rendered in markdown format. Disable this option if you primarily export in CSV and don't want markdown, like links wrapped in brackets."; + }); + new import_obsidian2.Setting(containerEl).setName("Export").setHeading(); + new import_obsidian2.Setting(containerEl).setName("Render markdown values").setDesc(exportRenderMarkdownDesc).addToggle((cb) => { + cb.setValue(this.plugin.settings.exportRenderMarkdown).onChange( (value) => __async(this, null, function* () { - this.plugin.settings.tableFolder = value; + this.plugin.settings.exportRenderMarkdown = value; yield this.plugin.saveSettings(); }) ); }); - new import_obsidian2.Setting(containerEl).setName("Debug mode").setDesc("Turns on console.log for various table events").addToggle((cb) => { + new import_obsidian2.Setting(containerEl).setName("Debug").setHeading(); + new import_obsidian2.Setting(containerEl).setName("Debug mode").setDesc( + "Turns on console.log for plugin events. This is useful for troubleshooting." + ).addToggle((cb) => { cb.setValue(this.plugin.settings.shouldDebug).onChange( (value) => __async(this, null, function* () { this.plugin.settings.shouldDebug = value; @@ -55417,3340 +39560,9 @@ var NltSettingsTab = class extends import_obsidian.PluginSettingTab { } }; -// src/NltTable.tsx -var import_client = __toESM(require_client()); -var import_obsidian4 = require("obsidian"); - -// src/App.tsx -var import_react17 = __toESM(require_react()); -var import_lodash = __toESM(require_lodash()); - -// src/components/EditableTd/index.tsx -var import_obsidian3 = require("obsidian"); - -// node_modules/html-react-parser/index.mjs -var import_index = __toESM(require_html_react_parser(), 1); -var domToReact = import_index.default.domToReact; -var htmlToDOM = import_index.default.htmlToDOM; -var attributesToProps = import_index.default.attributesToProps; -var Element2 = import_index.default.Element; -var html_react_parser_default = import_index.default; - -// src/components/TextCell/index.tsx -var import_jsx_runtime = __toESM(require_jsx_runtime()); -function TextCell({ - content, - shouldWrapOverflow, - useAutoWidth -}) { - let className = "NLT__text-cell"; - if (useAutoWidth) { - className += " NLT__auto-width"; - } else { - if (shouldWrapOverflow) { - className += " NLT__wrap-overflow"; - } else { - className += " NLT__hide-overflow"; - } - } - return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { - className, - children: html_react_parser_default(content) - }); -} - -// src/constants.ts -var COLOR = { - LIGHT_GRAY: "light gray", - GRAY: "gray", - BROWN: "brown", - ORANGE: "orange", - YELLOW: "yellow", - GREEN: "green", - BLUE: "blue", - PURPLE: "purple", - PINK: "pink", - RED: "red" -}; -var CURRENT_PLUGIN_VERSION = 505; - -// src/services/color/index.ts -var findColorClass = (isDarkMode, color2) => { - switch (color2) { - case COLOR.LIGHT_GRAY: - return isDarkMode ? "NLT__light-gray--dark" : "NLT__light-gray--light"; - case COLOR.GRAY: - return isDarkMode ? "NLT__gray--dark" : "NLT__gray--light"; - case COLOR.BROWN: - return isDarkMode ? "NLT__brown--dark" : "NLT__brown--light"; - case COLOR.ORANGE: - return isDarkMode ? "NLT__orange--dark" : "NLT__orange--light"; - case COLOR.YELLOW: - return isDarkMode ? "NLT__yellow--dark" : "NLT__yellow--light"; - case COLOR.GREEN: - return isDarkMode ? "NLT__green--dark" : "NLT__green--light"; - case COLOR.BLUE: - return isDarkMode ? "NLT__blue--dark" : "NLT__blue--light"; - case COLOR.PURPLE: - return isDarkMode ? "NLT__purple--dark" : "NLT__purple--light"; - case COLOR.PINK: - return isDarkMode ? "NLT__pink--dark" : "NLT__pink--light"; - case COLOR.RED: - return isDarkMode ? "NLT__red--dark" : "NLT__red--light"; - default: - return ""; - } -}; - -// node_modules/@babel/runtime/helpers/esm/extends.js -function _extends() { - _extends = Object.assign ? Object.assign.bind() : function(target) { - for (var i2 = 1; i2 < arguments.length; i2++) { - var source = arguments[i2]; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - return target; - }; - return _extends.apply(this, arguments); -} - -// node_modules/@mui/utils/esm/deepmerge.js -function isPlainObject(item) { - return item !== null && typeof item === "object" && item.constructor === Object; -} -function deepmerge(target, source, options = { - clone: true -}) { - const output = options.clone ? _extends({}, target) : target; - if (isPlainObject(target) && isPlainObject(source)) { - Object.keys(source).forEach((key) => { - if (key === "__proto__") { - return; - } - if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) { - output[key] = deepmerge(target[key], source[key], options); - } else { - output[key] = source[key]; - } - }); - } - return output; -} - -// node_modules/@mui/utils/esm/getDisplayName.js -var import_react_is = __toESM(require_react_is2()); -var fnNameMatchRegex = /^\s*function(?:\s|\s*\/\*.*\*\/\s*)+([^(\s/]*)\s*/; -function getFunctionName(fn2) { - const match = `${fn2}`.match(fnNameMatchRegex); - const name = match && match[1]; - return name || ""; -} -function getFunctionComponentName(Component, fallback = "") { - return Component.displayName || Component.name || getFunctionName(Component) || fallback; -} -function getWrappedName(outerType, innerType, wrapperName) { - const functionName = getFunctionComponentName(innerType); - return outerType.displayName || (functionName !== "" ? `${wrapperName}(${functionName})` : wrapperName); -} -function getDisplayName(Component) { - if (Component == null) { - return void 0; - } - if (typeof Component === "string") { - return Component; - } - if (typeof Component === "function") { - return getFunctionComponentName(Component, "Component"); - } - if (typeof Component === "object") { - switch (Component.$$typeof) { - case import_react_is.ForwardRef: - return getWrappedName(Component, Component.render, "ForwardRef"); - case import_react_is.Memo: - return getWrappedName(Component, Component.type, "memo"); - default: - return void 0; - } - } - return void 0; -} - -// node_modules/@mui/utils/esm/capitalize.js -function capitalize(string) { - if (typeof string !== "string") { - throw new Error(true ? `MUI: \`capitalize(string)\` expects a string argument.` : formatMuiErrorMessage(7)); - } - return string.charAt(0).toUpperCase() + string.slice(1); -} - -// node_modules/@mui/utils/esm/resolveProps.js -function resolveProps(defaultProps, props) { - const output = _extends({}, props); - Object.keys(defaultProps).forEach((propName) => { - if (output[propName] === void 0) { - output[propName] = defaultProps[propName]; - } - }); - return output; -} - -// node_modules/@mui/utils/esm/composeClasses/composeClasses.js -function composeClasses(slots, getUtilityClass, classes) { - const output = {}; - Object.keys(slots).forEach( - (slot) => { - output[slot] = slots[slot].reduce((acc, key) => { - if (key) { - acc.push(getUtilityClass(key)); - if (classes && classes[key]) { - acc.push(classes[key]); - } - } - return acc; - }, []).join(" "); - } - ); - return output; -} - -// node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js -var defaultGenerator = (componentName) => componentName; -var createClassNameGenerator = () => { - let generate = defaultGenerator; - return { - configure(generator) { - generate = generator; - }, - generate(componentName) { - return generate(componentName); - }, - reset() { - generate = defaultGenerator; - } - }; -}; -var ClassNameGenerator = createClassNameGenerator(); -var ClassNameGenerator_default = ClassNameGenerator; - -// node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js -var globalStateClassesMapping = { - active: "active", - checked: "checked", - completed: "completed", - disabled: "disabled", - error: "error", - expanded: "expanded", - focused: "focused", - focusVisible: "focusVisible", - required: "required", - selected: "selected" -}; -function generateUtilityClass(componentName, slot, globalStatePrefix = "Mui") { - const globalStateClass = globalStateClassesMapping[slot]; - return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator_default.generate(componentName)}-${slot}`; -} - -// node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js -function generateUtilityClasses(componentName, slots, globalStatePrefix = "Mui") { - const result = {}; - slots.forEach((slot) => { - result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix); - }); - return result; -} - -// node_modules/@mui/material/esm/utils/capitalize.js -var capitalize_default = capitalize; - -// node_modules/@mui/material/esm/utils/createSvgIcon.js -var React4 = __toESM(require_react()); - -// node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js -function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) - return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i2; - for (i2 = 0; i2 < sourceKeys.length; i2++) { - key = sourceKeys[i2]; - if (excluded.indexOf(key) >= 0) - continue; - target[key] = source[key]; - } - return target; -} - -// node_modules/@mui/material/esm/SvgIcon/SvgIcon.js -var React3 = __toESM(require_react()); -var import_prop_types2 = __toESM(require_prop_types()); - -// node_modules/clsx/dist/clsx.m.js -function r(e) { - var t2, f2, n2 = ""; - if ("string" == typeof e || "number" == typeof e) - n2 += e; - else if ("object" == typeof e) - if (Array.isArray(e)) - for (t2 = 0; t2 < e.length; t2++) - e[t2] && (f2 = r(e[t2])) && (n2 && (n2 += " "), n2 += f2); - else - for (t2 in e) - e[t2] && (n2 && (n2 += " "), n2 += t2); - return n2; -} -function clsx() { - for (var e, t2, f2 = 0, n2 = ""; f2 < arguments.length; ) - (e = arguments[f2++]) && (t2 = r(e)) && (n2 && (n2 += " "), n2 += t2); - return n2; -} -var clsx_m_default = clsx; - -// node_modules/@mui/styled-engine/index.js -var import_styled = __toESM(require_emotion_styled_cjs()); -function styled(tag, options) { - const stylesFactory = (0, import_styled.default)(tag, options); - if (true) { - return (...styles) => { - const component = typeof tag === "string" ? `"${tag}"` : "component"; - if (styles.length === 0) { - console.error([`MUI: Seems like you called \`styled(${component})()\` without a \`style\` argument.`, 'You must provide a `styles` argument: `styled("div")(styleYouForgotToPass)`.'].join("\n")); - } else if (styles.some((style3) => style3 === void 0)) { - console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`); - } - return stylesFactory(...styles); - }; - } - return stylesFactory; -} -var internal_processStyles = (tag, processor) => { - if (Array.isArray(tag.__emotion_styles)) { - tag.__emotion_styles = processor(tag.__emotion_styles); - } -}; - -// node_modules/@mui/system/esm/responsivePropType.js -var import_prop_types = __toESM(require_prop_types()); -var responsivePropType = true ? import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string, import_prop_types.default.object, import_prop_types.default.array]) : {}; -var responsivePropType_default = responsivePropType; - -// node_modules/@mui/system/esm/merge.js -function merge(acc, item) { - if (!item) { - return acc; - } - return deepmerge(acc, item, { - clone: false - }); -} -var merge_default = merge; - -// node_modules/@mui/system/esm/breakpoints.js -var values = { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536 -}; -var defaultBreakpoints = { - keys: ["xs", "sm", "md", "lg", "xl"], - up: (key) => `@media (min-width:${values[key]}px)` -}; -function handleBreakpoints(props, propValue, styleFromPropValue) { - const theme = props.theme || {}; - if (Array.isArray(propValue)) { - const themeBreakpoints = theme.breakpoints || defaultBreakpoints; - return propValue.reduce((acc, item, index) => { - acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]); - return acc; - }, {}); - } - if (typeof propValue === "object") { - const themeBreakpoints = theme.breakpoints || defaultBreakpoints; - return Object.keys(propValue).reduce((acc, breakpoint) => { - if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) { - const mediaKey = themeBreakpoints.up(breakpoint); - acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint); - } else { - const cssKey = breakpoint; - acc[cssKey] = propValue[cssKey]; - } - return acc; - }, {}); - } - const output = styleFromPropValue(propValue); - return output; -} -function createEmptyBreakpointObject(breakpointsInput = {}) { - var _breakpointsInput$key; - const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => { - const breakpointStyleKey = breakpointsInput.up(key); - acc[breakpointStyleKey] = {}; - return acc; - }, {}); - return breakpointsInOrder || {}; -} -function removeUnusedBreakpoints(breakpointKeys, style3) { - return breakpointKeys.reduce((acc, key) => { - const breakpointOutput = acc[key]; - const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0; - if (isBreakpointUnused) { - delete acc[key]; - } - return acc; - }, style3); -} - -// node_modules/@mui/system/esm/style.js -function getPath(obj, path, checkVars = true) { - if (!path || typeof path !== "string") { - return null; - } - if (obj && obj.vars && checkVars) { - const val = `vars.${path}`.split(".").reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj); - if (val != null) { - return val; - } - } - return path.split(".").reduce((acc, item) => { - if (acc && acc[item] != null) { - return acc[item]; - } - return null; - }, obj); -} -function getValue(themeMapping, transform2, propValueFinal, userValue = propValueFinal) { - let value; - if (typeof themeMapping === "function") { - value = themeMapping(propValueFinal); - } else if (Array.isArray(themeMapping)) { - value = themeMapping[propValueFinal] || userValue; - } else { - value = getPath(themeMapping, propValueFinal) || userValue; - } - if (transform2) { - value = transform2(value); - } - return value; -} -function style(options) { - const { - prop, - cssProperty = options.prop, - themeKey, - transform: transform2 - } = options; - const fn2 = (props) => { - if (props[prop] == null) { - return null; - } - const propValue = props[prop]; - const theme = props.theme; - const themeMapping = getPath(theme, themeKey) || {}; - const styleFromPropValue = (propValueFinal) => { - let value = getValue(themeMapping, transform2, propValueFinal); - if (propValueFinal === value && typeof propValueFinal === "string") { - value = getValue(themeMapping, transform2, `${prop}${propValueFinal === "default" ? "" : capitalize(propValueFinal)}`, propValueFinal); - } - if (cssProperty === false) { - return value; - } - return { - [cssProperty]: value - }; - }; - return handleBreakpoints(props, propValue, styleFromPropValue); - }; - fn2.propTypes = true ? { - [prop]: responsivePropType_default - } : {}; - fn2.filterProps = [prop]; - return fn2; -} -var style_default = style; - -// node_modules/@mui/system/esm/compose.js -function compose(...styles) { - const handlers = styles.reduce((acc, style3) => { - style3.filterProps.forEach((prop) => { - acc[prop] = style3; - }); - return acc; - }, {}); - const fn2 = (props) => { - return Object.keys(props).reduce((acc, prop) => { - if (handlers[prop]) { - return merge_default(acc, handlers[prop](props)); - } - return acc; - }, {}); - }; - fn2.propTypes = true ? styles.reduce((acc, style3) => Object.assign(acc, style3.propTypes), {}) : {}; - fn2.filterProps = styles.reduce((acc, style3) => acc.concat(style3.filterProps), []); - return fn2; -} -var compose_default = compose; - -// node_modules/@mui/system/esm/memoize.js -function memoize(fn2) { - const cache = {}; - return (arg) => { - if (cache[arg] === void 0) { - cache[arg] = fn2(arg); - } - return cache[arg]; - }; -} - -// node_modules/@mui/system/esm/spacing.js -var properties = { - m: "margin", - p: "padding" -}; -var directions = { - t: "Top", - r: "Right", - b: "Bottom", - l: "Left", - x: ["Left", "Right"], - y: ["Top", "Bottom"] -}; -var aliases = { - marginX: "mx", - marginY: "my", - paddingX: "px", - paddingY: "py" -}; -var getCssProperties = memoize((prop) => { - if (prop.length > 2) { - if (aliases[prop]) { - prop = aliases[prop]; - } else { - return [prop]; - } - } - const [a2, b2] = prop.split(""); - const property = properties[a2]; - const direction = directions[b2] || ""; - return Array.isArray(direction) ? direction.map((dir) => property + dir) : [property + direction]; -}); -var marginKeys = ["m", "mt", "mr", "mb", "ml", "mx", "my", "margin", "marginTop", "marginRight", "marginBottom", "marginLeft", "marginX", "marginY", "marginInline", "marginInlineStart", "marginInlineEnd", "marginBlock", "marginBlockStart", "marginBlockEnd"]; -var paddingKeys = ["p", "pt", "pr", "pb", "pl", "px", "py", "padding", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "paddingX", "paddingY", "paddingInline", "paddingInlineStart", "paddingInlineEnd", "paddingBlock", "paddingBlockStart", "paddingBlockEnd"]; -var spacingKeys = [...marginKeys, ...paddingKeys]; -function createUnaryUnit(theme, themeKey, defaultValue, propName) { - var _getPath; - const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue; - if (typeof themeSpacing === "number") { - return (abs) => { - if (typeof abs === "string") { - return abs; - } - if (true) { - if (typeof abs !== "number") { - console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`); - } - } - return themeSpacing * abs; - }; - } - if (Array.isArray(themeSpacing)) { - return (abs) => { - if (typeof abs === "string") { - return abs; - } - if (true) { - if (!Number.isInteger(abs)) { - console.error([`MUI: The \`theme.${themeKey}\` array type cannot be combined with non integer values.You should either use an integer value that can be used as index, or define the \`theme.${themeKey}\` as a number.`].join("\n")); - } else if (abs > themeSpacing.length - 1) { - console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join("\n")); - } - } - return themeSpacing[abs]; - }; - } - if (typeof themeSpacing === "function") { - return themeSpacing; - } - if (true) { - console.error([`MUI: The \`theme.${themeKey}\` value (${themeSpacing}) is invalid.`, "It should be a number, an array or a function."].join("\n")); - } - return () => void 0; -} -function createUnarySpacing(theme) { - return createUnaryUnit(theme, "spacing", 8, "spacing"); -} -function getValue2(transformer, propValue) { - if (typeof propValue === "string" || propValue == null) { - return propValue; - } - const abs = Math.abs(propValue); - const transformed = transformer(abs); - if (propValue >= 0) { - return transformed; - } - if (typeof transformed === "number") { - return -transformed; - } - return `-${transformed}`; -} -function getStyleFromPropValue(cssProperties, transformer) { - return (propValue) => cssProperties.reduce((acc, cssProperty) => { - acc[cssProperty] = getValue2(transformer, propValue); - return acc; - }, {}); -} -function resolveCssProperty(props, keys, prop, transformer) { - if (keys.indexOf(prop) === -1) { - return null; - } - const cssProperties = getCssProperties(prop); - const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer); - const propValue = props[prop]; - return handleBreakpoints(props, propValue, styleFromPropValue); -} -function style2(props, keys) { - const transformer = createUnarySpacing(props.theme); - return Object.keys(props).map((prop) => resolveCssProperty(props, keys, prop, transformer)).reduce(merge_default, {}); -} -function margin(props) { - return style2(props, marginKeys); -} -margin.propTypes = true ? marginKeys.reduce((obj, key) => { - obj[key] = responsivePropType_default; - return obj; -}, {}) : {}; -margin.filterProps = marginKeys; -function padding(props) { - return style2(props, paddingKeys); -} -padding.propTypes = true ? paddingKeys.reduce((obj, key) => { - obj[key] = responsivePropType_default; - return obj; -}, {}) : {}; -padding.filterProps = paddingKeys; -function spacing(props) { - return style2(props, spacingKeys); -} -spacing.propTypes = true ? spacingKeys.reduce((obj, key) => { - obj[key] = responsivePropType_default; - return obj; -}, {}) : {}; -spacing.filterProps = spacingKeys; -var spacing_default = spacing; - -// node_modules/@mui/system/esm/borders.js -function getBorder(value) { - if (typeof value !== "number") { - return value; - } - return `${value}px solid`; -} -var border = style_default({ - prop: "border", - themeKey: "borders", - transform: getBorder -}); -var borderTop = style_default({ - prop: "borderTop", - themeKey: "borders", - transform: getBorder -}); -var borderRight = style_default({ - prop: "borderRight", - themeKey: "borders", - transform: getBorder -}); -var borderBottom = style_default({ - prop: "borderBottom", - themeKey: "borders", - transform: getBorder -}); -var borderLeft = style_default({ - prop: "borderLeft", - themeKey: "borders", - transform: getBorder -}); -var borderColor = style_default({ - prop: "borderColor", - themeKey: "palette" -}); -var borderTopColor = style_default({ - prop: "borderTopColor", - themeKey: "palette" -}); -var borderRightColor = style_default({ - prop: "borderRightColor", - themeKey: "palette" -}); -var borderBottomColor = style_default({ - prop: "borderBottomColor", - themeKey: "palette" -}); -var borderLeftColor = style_default({ - prop: "borderLeftColor", - themeKey: "palette" -}); -var borderRadius = (props) => { - if (props.borderRadius !== void 0 && props.borderRadius !== null) { - const transformer = createUnaryUnit(props.theme, "shape.borderRadius", 4, "borderRadius"); - const styleFromPropValue = (propValue) => ({ - borderRadius: getValue2(transformer, propValue) - }); - return handleBreakpoints(props, props.borderRadius, styleFromPropValue); - } - return null; -}; -borderRadius.propTypes = true ? { - borderRadius: responsivePropType_default -} : {}; -borderRadius.filterProps = ["borderRadius"]; -var borders = compose_default(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius); -var borders_default = borders; - -// node_modules/@mui/system/esm/display.js -var displayPrint = style_default({ - prop: "displayPrint", - cssProperty: false, - transform: (value) => ({ - "@media print": { - display: value - } - }) -}); -var displayRaw = style_default({ - prop: "display" -}); -var overflow = style_default({ - prop: "overflow" -}); -var textOverflow = style_default({ - prop: "textOverflow" -}); -var visibility = style_default({ - prop: "visibility" -}); -var whiteSpace = style_default({ - prop: "whiteSpace" -}); -var display_default = compose_default(displayPrint, displayRaw, overflow, textOverflow, visibility, whiteSpace); - -// node_modules/@mui/system/esm/flexbox.js -var flexBasis = style_default({ - prop: "flexBasis" -}); -var flexDirection = style_default({ - prop: "flexDirection" -}); -var flexWrap = style_default({ - prop: "flexWrap" -}); -var justifyContent = style_default({ - prop: "justifyContent" -}); -var alignItems = style_default({ - prop: "alignItems" -}); -var alignContent = style_default({ - prop: "alignContent" -}); -var order = style_default({ - prop: "order" -}); -var flex = style_default({ - prop: "flex" -}); -var flexGrow = style_default({ - prop: "flexGrow" -}); -var flexShrink = style_default({ - prop: "flexShrink" -}); -var alignSelf = style_default({ - prop: "alignSelf" -}); -var justifyItems = style_default({ - prop: "justifyItems" -}); -var justifySelf = style_default({ - prop: "justifySelf" -}); -var flexbox = compose_default(flexBasis, flexDirection, flexWrap, justifyContent, alignItems, alignContent, order, flex, flexGrow, flexShrink, alignSelf, justifyItems, justifySelf); -var flexbox_default = flexbox; - -// node_modules/@mui/system/esm/cssGrid.js -var gap = (props) => { - if (props.gap !== void 0 && props.gap !== null) { - const transformer = createUnaryUnit(props.theme, "spacing", 8, "gap"); - const styleFromPropValue = (propValue) => ({ - gap: getValue2(transformer, propValue) - }); - return handleBreakpoints(props, props.gap, styleFromPropValue); - } - return null; -}; -gap.propTypes = true ? { - gap: responsivePropType_default -} : {}; -gap.filterProps = ["gap"]; -var columnGap = (props) => { - if (props.columnGap !== void 0 && props.columnGap !== null) { - const transformer = createUnaryUnit(props.theme, "spacing", 8, "columnGap"); - const styleFromPropValue = (propValue) => ({ - columnGap: getValue2(transformer, propValue) - }); - return handleBreakpoints(props, props.columnGap, styleFromPropValue); - } - return null; -}; -columnGap.propTypes = true ? { - columnGap: responsivePropType_default -} : {}; -columnGap.filterProps = ["columnGap"]; -var rowGap = (props) => { - if (props.rowGap !== void 0 && props.rowGap !== null) { - const transformer = createUnaryUnit(props.theme, "spacing", 8, "rowGap"); - const styleFromPropValue = (propValue) => ({ - rowGap: getValue2(transformer, propValue) - }); - return handleBreakpoints(props, props.rowGap, styleFromPropValue); - } - return null; -}; -rowGap.propTypes = true ? { - rowGap: responsivePropType_default -} : {}; -rowGap.filterProps = ["rowGap"]; -var gridColumn = style_default({ - prop: "gridColumn" -}); -var gridRow = style_default({ - prop: "gridRow" -}); -var gridAutoFlow = style_default({ - prop: "gridAutoFlow" -}); -var gridAutoColumns = style_default({ - prop: "gridAutoColumns" -}); -var gridAutoRows = style_default({ - prop: "gridAutoRows" -}); -var gridTemplateColumns = style_default({ - prop: "gridTemplateColumns" -}); -var gridTemplateRows = style_default({ - prop: "gridTemplateRows" -}); -var gridTemplateAreas = style_default({ - prop: "gridTemplateAreas" -}); -var gridArea = style_default({ - prop: "gridArea" -}); -var grid = compose_default(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea); -var cssGrid_default = grid; - -// node_modules/@mui/system/esm/palette.js -var color = style_default({ - prop: "color", - themeKey: "palette" -}); -var bgcolor = style_default({ - prop: "bgcolor", - cssProperty: "backgroundColor", - themeKey: "palette" -}); -var backgroundColor = style_default({ - prop: "backgroundColor", - themeKey: "palette" -}); -var palette = compose_default(color, bgcolor, backgroundColor); -var palette_default = palette; - -// node_modules/@mui/system/esm/positions.js -var position = style_default({ - prop: "position" -}); -var zIndex = style_default({ - prop: "zIndex", - themeKey: "zIndex" -}); -var top = style_default({ - prop: "top" -}); -var right = style_default({ - prop: "right" -}); -var bottom = style_default({ - prop: "bottom" -}); -var left = style_default({ - prop: "left" -}); -var positions_default = compose_default(position, zIndex, top, right, bottom, left); - -// node_modules/@mui/system/esm/shadows.js -var boxShadow = style_default({ - prop: "boxShadow", - themeKey: "shadows" -}); -var shadows_default = boxShadow; - -// node_modules/@mui/system/esm/sizing.js -function transform(value) { - return value <= 1 && value !== 0 ? `${value * 100}%` : value; -} -var width = style_default({ - prop: "width", - transform -}); -var maxWidth = (props) => { - if (props.maxWidth !== void 0 && props.maxWidth !== null) { - const styleFromPropValue = (propValue) => { - var _props$theme, _props$theme$breakpoi, _props$theme$breakpoi2; - const breakpoint = ((_props$theme = props.theme) == null ? void 0 : (_props$theme$breakpoi = _props$theme.breakpoints) == null ? void 0 : (_props$theme$breakpoi2 = _props$theme$breakpoi.values) == null ? void 0 : _props$theme$breakpoi2[propValue]) || values[propValue]; - return { - maxWidth: breakpoint || transform(propValue) - }; - }; - return handleBreakpoints(props, props.maxWidth, styleFromPropValue); - } - return null; -}; -maxWidth.filterProps = ["maxWidth"]; -var minWidth = style_default({ - prop: "minWidth", - transform -}); -var height = style_default({ - prop: "height", - transform -}); -var maxHeight = style_default({ - prop: "maxHeight", - transform -}); -var minHeight = style_default({ - prop: "minHeight", - transform -}); -var sizeWidth = style_default({ - prop: "size", - cssProperty: "width", - transform -}); -var sizeHeight = style_default({ - prop: "size", - cssProperty: "height", - transform -}); -var boxSizing = style_default({ - prop: "boxSizing" -}); -var sizing = compose_default(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing); -var sizing_default = sizing; - -// node_modules/@mui/system/esm/typography.js -var fontFamily = style_default({ - prop: "fontFamily", - themeKey: "typography" -}); -var fontSize = style_default({ - prop: "fontSize", - themeKey: "typography" -}); -var fontStyle = style_default({ - prop: "fontStyle", - themeKey: "typography" -}); -var fontWeight = style_default({ - prop: "fontWeight", - themeKey: "typography" -}); -var letterSpacing = style_default({ - prop: "letterSpacing" -}); -var textTransform = style_default({ - prop: "textTransform" -}); -var lineHeight = style_default({ - prop: "lineHeight" -}); -var textAlign = style_default({ - prop: "textAlign" -}); -var typographyVariant = style_default({ - prop: "typography", - cssProperty: false, - themeKey: "typography" -}); -var typography = compose_default(typographyVariant, fontFamily, fontSize, fontStyle, fontWeight, letterSpacing, lineHeight, textAlign, textTransform); -var typography_default = typography; - -// node_modules/@mui/system/esm/getThemeValue.js -var filterPropsMapping = { - borders: borders_default.filterProps, - display: display_default.filterProps, - flexbox: flexbox_default.filterProps, - grid: cssGrid_default.filterProps, - positions: positions_default.filterProps, - palette: palette_default.filterProps, - shadows: shadows_default.filterProps, - sizing: sizing_default.filterProps, - spacing: spacing_default.filterProps, - typography: typography_default.filterProps -}; -var styleFunctionMapping = { - borders: borders_default, - display: display_default, - flexbox: flexbox_default, - grid: cssGrid_default, - positions: positions_default, - palette: palette_default, - shadows: shadows_default, - sizing: sizing_default, - spacing: spacing_default, - typography: typography_default -}; -var propToStyleFunction = Object.keys(filterPropsMapping).reduce((acc, styleFnName) => { - filterPropsMapping[styleFnName].forEach((propName) => { - acc[propName] = styleFunctionMapping[styleFnName]; - }); - return acc; -}, {}); - -// node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js -function objectsHaveSameKeys(...objects) { - const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []); - const union = new Set(allKeys); - return objects.every((object) => union.size === Object.keys(object).length); -} -function callIfFn(maybeFn, arg) { - return typeof maybeFn === "function" ? maybeFn(arg) : maybeFn; -} -function unstable_createStyleFunctionSx(styleFunctionMapping2 = styleFunctionMapping) { - const propToStyleFunction2 = Object.keys(styleFunctionMapping2).reduce((acc, styleFnName) => { - styleFunctionMapping2[styleFnName].filterProps.forEach((propName) => { - acc[propName] = styleFunctionMapping2[styleFnName]; - }); - return acc; - }, {}); - function getThemeValue(prop, value, theme) { - const inputProps = { - [prop]: value, - theme - }; - const styleFunction = propToStyleFunction2[prop]; - return styleFunction ? styleFunction(inputProps) : { - [prop]: value - }; - } - function styleFunctionSx2(props) { - const { - sx, - theme = {} - } = props || {}; - if (!sx) { - return null; - } - function traverse(sxInput) { - let sxObject = sxInput; - if (typeof sxInput === "function") { - sxObject = sxInput(theme); - } else if (typeof sxInput !== "object") { - return sxInput; - } - if (!sxObject) { - return null; - } - const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints); - const breakpointsKeys = Object.keys(emptyBreakpoints); - let css = emptyBreakpoints; - Object.keys(sxObject).forEach((styleKey) => { - const value = callIfFn(sxObject[styleKey], theme); - if (value !== null && value !== void 0) { - if (typeof value === "object") { - if (propToStyleFunction2[styleKey]) { - css = merge_default(css, getThemeValue(styleKey, value, theme)); - } else { - const breakpointsValues = handleBreakpoints({ - theme - }, value, (x2) => ({ - [styleKey]: x2 - })); - if (objectsHaveSameKeys(breakpointsValues, value)) { - css[styleKey] = styleFunctionSx2({ - sx: value, - theme - }); - } else { - css = merge_default(css, breakpointsValues); - } - } - } else { - css = merge_default(css, getThemeValue(styleKey, value, theme)); - } - } - }); - return removeUnusedBreakpoints(breakpointsKeys, css); - } - return Array.isArray(sx) ? sx.map(traverse) : traverse(sx); - } - return styleFunctionSx2; -} -var styleFunctionSx = unstable_createStyleFunctionSx(); -styleFunctionSx.filterProps = ["sx"]; -var styleFunctionSx_default = styleFunctionSx; - -// node_modules/@mui/system/esm/createTheme/createBreakpoints.js -var _excluded = ["values", "unit", "step"]; -var sortBreakpointsValues = (values2) => { - const breakpointsAsArray = Object.keys(values2).map((key) => ({ - key, - val: values2[key] - })) || []; - breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val); - return breakpointsAsArray.reduce((acc, obj) => { - return _extends({}, acc, { - [obj.key]: obj.val - }); - }, {}); -}; -function createBreakpoints(breakpoints) { - const { - values: values2 = { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536 - }, - unit = "px", - step = 5 - } = breakpoints, other = _objectWithoutPropertiesLoose(breakpoints, _excluded); - const sortedValues = sortBreakpointsValues(values2); - const keys = Object.keys(sortedValues); - function up(key) { - const value = typeof values2[key] === "number" ? values2[key] : key; - return `@media (min-width:${value}${unit})`; - } - function down(key) { - const value = typeof values2[key] === "number" ? values2[key] : key; - return `@media (max-width:${value - step / 100}${unit})`; - } - function between(start, end) { - const endIndex = keys.indexOf(end); - return `@media (min-width:${typeof values2[start] === "number" ? values2[start] : start}${unit}) and (max-width:${(endIndex !== -1 && typeof values2[keys[endIndex]] === "number" ? values2[keys[endIndex]] : end) - step / 100}${unit})`; - } - function only(key) { - if (keys.indexOf(key) + 1 < keys.length) { - return between(key, keys[keys.indexOf(key) + 1]); - } - return up(key); - } - function not(key) { - const keyIndex = keys.indexOf(key); - if (keyIndex === 0) { - return up(keys[1]); - } - if (keyIndex === keys.length - 1) { - return down(keys[keyIndex]); - } - return between(key, keys[keys.indexOf(key) + 1]).replace("@media", "@media not all and"); - } - return _extends({ - keys, - values: sortedValues, - up, - down, - between, - only, - not, - unit - }, other); -} - -// node_modules/@mui/system/esm/createTheme/shape.js -var shape = { - borderRadius: 4 -}; -var shape_default = shape; - -// node_modules/@mui/system/esm/createTheme/createSpacing.js -function createSpacing(spacingInput = 8) { - if (spacingInput.mui) { - return spacingInput; - } - const transform2 = createUnarySpacing({ - spacing: spacingInput - }); - const spacing2 = (...argsInput) => { - if (true) { - if (!(argsInput.length <= 4)) { - console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`); - } - } - const args = argsInput.length === 0 ? [1] : argsInput; - return args.map((argument) => { - const output = transform2(argument); - return typeof output === "number" ? `${output}px` : output; - }).join(" "); - }; - spacing2.mui = true; - return spacing2; -} - -// node_modules/@mui/system/esm/createTheme/createTheme.js -var _excluded2 = ["breakpoints", "palette", "spacing", "shape"]; -function createTheme(options = {}, ...args) { - const { - breakpoints: breakpointsInput = {}, - palette: paletteInput = {}, - spacing: spacingInput, - shape: shapeInput = {} - } = options, other = _objectWithoutPropertiesLoose(options, _excluded2); - const breakpoints = createBreakpoints(breakpointsInput); - const spacing2 = createSpacing(spacingInput); - let muiTheme = deepmerge({ - breakpoints, - direction: "ltr", - components: {}, - palette: _extends({ - mode: "light" - }, paletteInput), - spacing: spacing2, - shape: _extends({}, shape_default, shapeInput) - }, other); - muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme); - return muiTheme; -} -var createTheme_default = createTheme; - -// node_modules/@mui/private-theming/useTheme/ThemeContext.js -var React = __toESM(require_react()); -var ThemeContext = /* @__PURE__ */ React.createContext(null); -if (true) { - ThemeContext.displayName = "ThemeContext"; -} -var ThemeContext_default = ThemeContext; - -// node_modules/@mui/private-theming/useTheme/useTheme.js -var React2 = __toESM(require_react()); -function useTheme() { - const theme = React2.useContext(ThemeContext_default); - if (true) { - React2.useDebugValue(theme); - } - return theme; -} - -// node_modules/@mui/system/esm/useThemeWithoutDefault.js -function isObjectEmpty(obj) { - return Object.keys(obj).length === 0; -} -function useTheme2(defaultTheme2 = null) { - const contextTheme = useTheme(); - return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme2 : contextTheme; -} -var useThemeWithoutDefault_default = useTheme2; - -// node_modules/@mui/system/esm/useTheme.js -var systemDefaultTheme = createTheme_default(); -function useTheme3(defaultTheme2 = systemDefaultTheme) { - return useThemeWithoutDefault_default(defaultTheme2); -} -var useTheme_default = useTheme3; - -// node_modules/@mui/system/esm/propsToClassKey.js -var _excluded3 = ["variant"]; -function isEmpty(string) { - return string.length === 0; -} -function propsToClassKey(props) { - const { - variant - } = props, other = _objectWithoutPropertiesLoose(props, _excluded3); - let classKey = variant || ""; - Object.keys(other).sort().forEach((key) => { - if (key === "color") { - classKey += isEmpty(classKey) ? props[key] : capitalize(props[key]); - } else { - classKey += `${isEmpty(classKey) ? key : capitalize(key)}${capitalize(props[key].toString())}`; - } - }); - return classKey; -} - -// node_modules/@mui/system/esm/createStyled.js -var _excluded4 = ["name", "slot", "skipVariantsResolver", "skipSx", "overridesResolver"]; -var _excluded22 = ["theme"]; -var _excluded32 = ["theme"]; -function isEmpty2(obj) { - return Object.keys(obj).length === 0; -} -function isStringTag(tag) { - return typeof tag === "string" && tag.charCodeAt(0) > 96; -} -var getStyleOverrides = (name, theme) => { - if (theme.components && theme.components[name] && theme.components[name].styleOverrides) { - return theme.components[name].styleOverrides; - } - return null; -}; -var getVariantStyles = (name, theme) => { - let variants = []; - if (theme && theme.components && theme.components[name] && theme.components[name].variants) { - variants = theme.components[name].variants; - } - const variantsStyles = {}; - variants.forEach((definition) => { - const key = propsToClassKey(definition.props); - variantsStyles[key] = definition.style; - }); - return variantsStyles; -}; -var variantsResolver = (props, styles, theme, name) => { - var _theme$components, _theme$components$nam; - const { - ownerState = {} - } = props; - const variantsStyles = []; - const themeVariants = theme == null ? void 0 : (_theme$components = theme.components) == null ? void 0 : (_theme$components$nam = _theme$components[name]) == null ? void 0 : _theme$components$nam.variants; - if (themeVariants) { - themeVariants.forEach((themeVariant) => { - let isMatch2 = true; - Object.keys(themeVariant.props).forEach((key) => { - if (ownerState[key] !== themeVariant.props[key] && props[key] !== themeVariant.props[key]) { - isMatch2 = false; - } - }); - if (isMatch2) { - variantsStyles.push(styles[propsToClassKey(themeVariant.props)]); - } - }); - } - return variantsStyles; -}; -function shouldForwardProp(prop) { - return prop !== "ownerState" && prop !== "theme" && prop !== "sx" && prop !== "as"; -} -var systemDefaultTheme2 = createTheme_default(); -var lowercaseFirstLetter = (string) => { - return string.charAt(0).toLowerCase() + string.slice(1); -}; -function createStyled(input = {}) { - const { - defaultTheme: defaultTheme2 = systemDefaultTheme2, - rootShouldForwardProp: rootShouldForwardProp2 = shouldForwardProp, - slotShouldForwardProp = shouldForwardProp, - styleFunctionSx: styleFunctionSx2 = styleFunctionSx_default - } = input; - const systemSx = (props) => { - const theme = isEmpty2(props.theme) ? defaultTheme2 : props.theme; - return styleFunctionSx2(_extends({}, props, { - theme - })); - }; - systemSx.__mui_systemSx = true; - return (tag, inputOptions = {}) => { - internal_processStyles(tag, (styles) => styles.filter((style3) => !(style3 != null && style3.__mui_systemSx))); - const { - name: componentName, - slot: componentSlot, - skipVariantsResolver: inputSkipVariantsResolver, - skipSx: inputSkipSx, - overridesResolver - } = inputOptions, options = _objectWithoutPropertiesLoose(inputOptions, _excluded4); - const skipVariantsResolver = inputSkipVariantsResolver !== void 0 ? inputSkipVariantsResolver : componentSlot && componentSlot !== "Root" || false; - const skipSx = inputSkipSx || false; - let label; - if (true) { - if (componentName) { - label = `${componentName}-${lowercaseFirstLetter(componentSlot || "Root")}`; - } - } - let shouldForwardPropOption = shouldForwardProp; - if (componentSlot === "Root") { - shouldForwardPropOption = rootShouldForwardProp2; - } else if (componentSlot) { - shouldForwardPropOption = slotShouldForwardProp; - } else if (isStringTag(tag)) { - shouldForwardPropOption = void 0; - } - const defaultStyledResolver = styled(tag, _extends({ - shouldForwardProp: shouldForwardPropOption, - label - }, options)); - const muiStyledResolver = (styleArg, ...expressions) => { - const expressionsWithDefaultTheme = expressions ? expressions.map((stylesArg) => { - return typeof stylesArg === "function" && stylesArg.__emotion_real !== stylesArg ? (_ref) => { - let { - theme: themeInput - } = _ref, other = _objectWithoutPropertiesLoose(_ref, _excluded22); - return stylesArg(_extends({ - theme: isEmpty2(themeInput) ? defaultTheme2 : themeInput - }, other)); - } : stylesArg; - }) : []; - let transformedStyleArg = styleArg; - if (componentName && overridesResolver) { - expressionsWithDefaultTheme.push((props) => { - const theme = isEmpty2(props.theme) ? defaultTheme2 : props.theme; - const styleOverrides = getStyleOverrides(componentName, theme); - if (styleOverrides) { - const resolvedStyleOverrides = {}; - Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => { - resolvedStyleOverrides[slotKey] = typeof slotStyle === "function" ? slotStyle(_extends({}, props, { - theme - })) : slotStyle; - }); - return overridesResolver(props, resolvedStyleOverrides); - } - return null; - }); - } - if (componentName && !skipVariantsResolver) { - expressionsWithDefaultTheme.push((props) => { - const theme = isEmpty2(props.theme) ? defaultTheme2 : props.theme; - return variantsResolver(props, getVariantStyles(componentName, theme), theme, componentName); - }); - } - if (!skipSx) { - expressionsWithDefaultTheme.push(systemSx); - } - const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length; - if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) { - const placeholders = new Array(numOfCustomFnsApplied).fill(""); - transformedStyleArg = [...styleArg, ...placeholders]; - transformedStyleArg.raw = [...styleArg.raw, ...placeholders]; - } else if (typeof styleArg === "function" && styleArg.__emotion_real !== styleArg) { - transformedStyleArg = (_ref2) => { - let { - theme: themeInput - } = _ref2, other = _objectWithoutPropertiesLoose(_ref2, _excluded32); - return styleArg(_extends({ - theme: isEmpty2(themeInput) ? defaultTheme2 : themeInput - }, other)); - }; - } - const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme); - if (true) { - let displayName; - if (componentName) { - displayName = `${componentName}${componentSlot || ""}`; - } - if (displayName === void 0) { - displayName = `Styled(${getDisplayName(tag)})`; - } - Component.displayName = displayName; - } - return Component; - }; - if (defaultStyledResolver.withConfig) { - muiStyledResolver.withConfig = defaultStyledResolver.withConfig; - } - return muiStyledResolver; - }; -} - -// node_modules/@mui/system/esm/useThemeProps/getThemeProps.js -function getThemeProps(params) { - const { - theme, - name, - props - } = params; - if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) { - return props; - } - return resolveProps(theme.components[name].defaultProps, props); -} - -// node_modules/@mui/system/esm/useThemeProps/useThemeProps.js -function useThemeProps({ - props, - name, - defaultTheme: defaultTheme2 -}) { - const theme = useTheme_default(defaultTheme2); - const mergedProps = getThemeProps({ - theme, - name, - props - }); - return mergedProps; -} - -// node_modules/@mui/system/esm/colorManipulator.js -function clamp(value, min = 0, max = 1) { - if (true) { - if (value < min || value > max) { - console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`); - } - } - return Math.min(Math.max(min, value), max); -} -function hexToRgb(color2) { - color2 = color2.slice(1); - const re = new RegExp(`.{1,${color2.length >= 6 ? 2 : 1}}`, "g"); - let colors = color2.match(re); - if (colors && colors[0].length === 1) { - colors = colors.map((n2) => n2 + n2); - } - return colors ? `rgb${colors.length === 4 ? "a" : ""}(${colors.map((n2, index) => { - return index < 3 ? parseInt(n2, 16) : Math.round(parseInt(n2, 16) / 255 * 1e3) / 1e3; - }).join(", ")})` : ""; -} -function decomposeColor(color2) { - if (color2.type) { - return color2; - } - if (color2.charAt(0) === "#") { - return decomposeColor(hexToRgb(color2)); - } - const marker = color2.indexOf("("); - const type = color2.substring(0, marker); - if (["rgb", "rgba", "hsl", "hsla", "color"].indexOf(type) === -1) { - throw new Error(true ? `MUI: Unsupported \`${color2}\` color. -The following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : formatMuiErrorMessage(9, color2)); - } - let values2 = color2.substring(marker + 1, color2.length - 1); - let colorSpace; - if (type === "color") { - values2 = values2.split(" "); - colorSpace = values2.shift(); - if (values2.length === 4 && values2[3].charAt(0) === "/") { - values2[3] = values2[3].slice(1); - } - if (["srgb", "display-p3", "a98-rgb", "prophoto-rgb", "rec-2020"].indexOf(colorSpace) === -1) { - throw new Error(true ? `MUI: unsupported \`${colorSpace}\` color space. -The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : formatMuiErrorMessage(10, colorSpace)); - } - } else { - values2 = values2.split(","); - } - values2 = values2.map((value) => parseFloat(value)); - return { - type, - values: values2, - colorSpace - }; -} -function recomposeColor(color2) { - const { - type, - colorSpace - } = color2; - let { - values: values2 - } = color2; - if (type.indexOf("rgb") !== -1) { - values2 = values2.map((n2, i2) => i2 < 3 ? parseInt(n2, 10) : n2); - } else if (type.indexOf("hsl") !== -1) { - values2[1] = `${values2[1]}%`; - values2[2] = `${values2[2]}%`; - } - if (type.indexOf("color") !== -1) { - values2 = `${colorSpace} ${values2.join(" ")}`; - } else { - values2 = `${values2.join(", ")}`; - } - return `${type}(${values2})`; -} -function hslToRgb(color2) { - color2 = decomposeColor(color2); - const { - values: values2 - } = color2; - const h2 = values2[0]; - const s2 = values2[1] / 100; - const l2 = values2[2] / 100; - const a2 = s2 * Math.min(l2, 1 - l2); - const f2 = (n2, k2 = (n2 + h2 / 30) % 12) => l2 - a2 * Math.max(Math.min(k2 - 3, 9 - k2, 1), -1); - let type = "rgb"; - const rgb = [Math.round(f2(0) * 255), Math.round(f2(8) * 255), Math.round(f2(4) * 255)]; - if (color2.type === "hsla") { - type += "a"; - rgb.push(values2[3]); - } - return recomposeColor({ - type, - values: rgb - }); -} -function getLuminance(color2) { - color2 = decomposeColor(color2); - let rgb = color2.type === "hsl" ? decomposeColor(hslToRgb(color2)).values : color2.values; - rgb = rgb.map((val) => { - if (color2.type !== "color") { - val /= 255; - } - return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4; - }); - return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3)); -} -function getContrastRatio(foreground, background) { - const lumA = getLuminance(foreground); - const lumB = getLuminance(background); - return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05); -} -function darken(color2, coefficient) { - color2 = decomposeColor(color2); - coefficient = clamp(coefficient); - if (color2.type.indexOf("hsl") !== -1) { - color2.values[2] *= 1 - coefficient; - } else if (color2.type.indexOf("rgb") !== -1 || color2.type.indexOf("color") !== -1) { - for (let i2 = 0; i2 < 3; i2 += 1) { - color2.values[i2] *= 1 - coefficient; - } - } - return recomposeColor(color2); -} -function lighten(color2, coefficient) { - color2 = decomposeColor(color2); - coefficient = clamp(coefficient); - if (color2.type.indexOf("hsl") !== -1) { - color2.values[2] += (100 - color2.values[2]) * coefficient; - } else if (color2.type.indexOf("rgb") !== -1) { - for (let i2 = 0; i2 < 3; i2 += 1) { - color2.values[i2] += (255 - color2.values[i2]) * coefficient; - } - } else if (color2.type.indexOf("color") !== -1) { - for (let i2 = 0; i2 < 3; i2 += 1) { - color2.values[i2] += (1 - color2.values[i2]) * coefficient; - } - } - return recomposeColor(color2); -} - -// node_modules/@mui/material/esm/styles/createMixins.js -function createMixins(breakpoints, mixins) { - return _extends({ - toolbar: { - minHeight: 56, - [breakpoints.up("xs")]: { - "@media (orientation: landscape)": { - minHeight: 48 - } - }, - [breakpoints.up("sm")]: { - minHeight: 64 - } - } - }, mixins); -} - -// node_modules/@mui/material/esm/colors/common.js -var common = { - black: "#000", - white: "#fff" -}; -var common_default = common; - -// node_modules/@mui/material/esm/colors/grey.js -var grey = { - 50: "#fafafa", - 100: "#f5f5f5", - 200: "#eeeeee", - 300: "#e0e0e0", - 400: "#bdbdbd", - 500: "#9e9e9e", - 600: "#757575", - 700: "#616161", - 800: "#424242", - 900: "#212121", - A100: "#f5f5f5", - A200: "#eeeeee", - A400: "#bdbdbd", - A700: "#616161" -}; -var grey_default = grey; - -// node_modules/@mui/material/esm/colors/purple.js -var purple = { - 50: "#f3e5f5", - 100: "#e1bee7", - 200: "#ce93d8", - 300: "#ba68c8", - 400: "#ab47bc", - 500: "#9c27b0", - 600: "#8e24aa", - 700: "#7b1fa2", - 800: "#6a1b9a", - 900: "#4a148c", - A100: "#ea80fc", - A200: "#e040fb", - A400: "#d500f9", - A700: "#aa00ff" -}; -var purple_default = purple; - -// node_modules/@mui/material/esm/colors/red.js -var red = { - 50: "#ffebee", - 100: "#ffcdd2", - 200: "#ef9a9a", - 300: "#e57373", - 400: "#ef5350", - 500: "#f44336", - 600: "#e53935", - 700: "#d32f2f", - 800: "#c62828", - 900: "#b71c1c", - A100: "#ff8a80", - A200: "#ff5252", - A400: "#ff1744", - A700: "#d50000" -}; -var red_default = red; - -// node_modules/@mui/material/esm/colors/orange.js -var orange = { - 50: "#fff3e0", - 100: "#ffe0b2", - 200: "#ffcc80", - 300: "#ffb74d", - 400: "#ffa726", - 500: "#ff9800", - 600: "#fb8c00", - 700: "#f57c00", - 800: "#ef6c00", - 900: "#e65100", - A100: "#ffd180", - A200: "#ffab40", - A400: "#ff9100", - A700: "#ff6d00" -}; -var orange_default = orange; - -// node_modules/@mui/material/esm/colors/blue.js -var blue = { - 50: "#e3f2fd", - 100: "#bbdefb", - 200: "#90caf9", - 300: "#64b5f6", - 400: "#42a5f5", - 500: "#2196f3", - 600: "#1e88e5", - 700: "#1976d2", - 800: "#1565c0", - 900: "#0d47a1", - A100: "#82b1ff", - A200: "#448aff", - A400: "#2979ff", - A700: "#2962ff" -}; -var blue_default = blue; - -// node_modules/@mui/material/esm/colors/lightBlue.js -var lightBlue = { - 50: "#e1f5fe", - 100: "#b3e5fc", - 200: "#81d4fa", - 300: "#4fc3f7", - 400: "#29b6f6", - 500: "#03a9f4", - 600: "#039be5", - 700: "#0288d1", - 800: "#0277bd", - 900: "#01579b", - A100: "#80d8ff", - A200: "#40c4ff", - A400: "#00b0ff", - A700: "#0091ea" -}; -var lightBlue_default = lightBlue; - -// node_modules/@mui/material/esm/colors/green.js -var green = { - 50: "#e8f5e9", - 100: "#c8e6c9", - 200: "#a5d6a7", - 300: "#81c784", - 400: "#66bb6a", - 500: "#4caf50", - 600: "#43a047", - 700: "#388e3c", - 800: "#2e7d32", - 900: "#1b5e20", - A100: "#b9f6ca", - A200: "#69f0ae", - A400: "#00e676", - A700: "#00c853" -}; -var green_default = green; - -// node_modules/@mui/material/esm/styles/createPalette.js -var _excluded5 = ["mode", "contrastThreshold", "tonalOffset"]; -var light = { - text: { - primary: "rgba(0, 0, 0, 0.87)", - secondary: "rgba(0, 0, 0, 0.6)", - disabled: "rgba(0, 0, 0, 0.38)" - }, - divider: "rgba(0, 0, 0, 0.12)", - background: { - paper: common_default.white, - default: common_default.white - }, - action: { - active: "rgba(0, 0, 0, 0.54)", - hover: "rgba(0, 0, 0, 0.04)", - hoverOpacity: 0.04, - selected: "rgba(0, 0, 0, 0.08)", - selectedOpacity: 0.08, - disabled: "rgba(0, 0, 0, 0.26)", - disabledBackground: "rgba(0, 0, 0, 0.12)", - disabledOpacity: 0.38, - focus: "rgba(0, 0, 0, 0.12)", - focusOpacity: 0.12, - activatedOpacity: 0.12 - } -}; -var dark = { - text: { - primary: common_default.white, - secondary: "rgba(255, 255, 255, 0.7)", - disabled: "rgba(255, 255, 255, 0.5)", - icon: "rgba(255, 255, 255, 0.5)" - }, - divider: "rgba(255, 255, 255, 0.12)", - background: { - paper: "#121212", - default: "#121212" - }, - action: { - active: common_default.white, - hover: "rgba(255, 255, 255, 0.08)", - hoverOpacity: 0.08, - selected: "rgba(255, 255, 255, 0.16)", - selectedOpacity: 0.16, - disabled: "rgba(255, 255, 255, 0.3)", - disabledBackground: "rgba(255, 255, 255, 0.12)", - disabledOpacity: 0.38, - focus: "rgba(255, 255, 255, 0.12)", - focusOpacity: 0.12, - activatedOpacity: 0.24 - } -}; -function addLightOrDark(intent, direction, shade, tonalOffset) { - const tonalOffsetLight = tonalOffset.light || tonalOffset; - const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5; - if (!intent[direction]) { - if (intent.hasOwnProperty(shade)) { - intent[direction] = intent[shade]; - } else if (direction === "light") { - intent.light = lighten(intent.main, tonalOffsetLight); - } else if (direction === "dark") { - intent.dark = darken(intent.main, tonalOffsetDark); - } - } -} -function getDefaultPrimary(mode = "light") { - if (mode === "dark") { - return { - main: blue_default[200], - light: blue_default[50], - dark: blue_default[400] - }; - } - return { - main: blue_default[700], - light: blue_default[400], - dark: blue_default[800] - }; -} -function getDefaultSecondary(mode = "light") { - if (mode === "dark") { - return { - main: purple_default[200], - light: purple_default[50], - dark: purple_default[400] - }; - } - return { - main: purple_default[500], - light: purple_default[300], - dark: purple_default[700] - }; -} -function getDefaultError(mode = "light") { - if (mode === "dark") { - return { - main: red_default[500], - light: red_default[300], - dark: red_default[700] - }; - } - return { - main: red_default[700], - light: red_default[400], - dark: red_default[800] - }; -} -function getDefaultInfo(mode = "light") { - if (mode === "dark") { - return { - main: lightBlue_default[400], - light: lightBlue_default[300], - dark: lightBlue_default[700] - }; - } - return { - main: lightBlue_default[700], - light: lightBlue_default[500], - dark: lightBlue_default[900] - }; -} -function getDefaultSuccess(mode = "light") { - if (mode === "dark") { - return { - main: green_default[400], - light: green_default[300], - dark: green_default[700] - }; - } - return { - main: green_default[800], - light: green_default[500], - dark: green_default[900] - }; -} -function getDefaultWarning(mode = "light") { - if (mode === "dark") { - return { - main: orange_default[400], - light: orange_default[300], - dark: orange_default[700] - }; - } - return { - main: "#ed6c02", - light: orange_default[500], - dark: orange_default[900] - }; -} -function createPalette(palette2) { - const { - mode = "light", - contrastThreshold = 3, - tonalOffset = 0.2 - } = palette2, other = _objectWithoutPropertiesLoose(palette2, _excluded5); - const primary = palette2.primary || getDefaultPrimary(mode); - const secondary = palette2.secondary || getDefaultSecondary(mode); - const error = palette2.error || getDefaultError(mode); - const info = palette2.info || getDefaultInfo(mode); - const success = palette2.success || getDefaultSuccess(mode); - const warning3 = palette2.warning || getDefaultWarning(mode); - function getContrastText(background) { - const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary; - if (true) { - const contrast = getContrastRatio(background, contrastText); - if (contrast < 3) { - console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, "falls below the WCAG recommended absolute minimum contrast ratio of 3:1.", "https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast"].join("\n")); - } - } - return contrastText; - } - const augmentColor = ({ - color: color2, - name, - mainShade = 500, - lightShade = 300, - darkShade = 700 - }) => { - color2 = _extends({}, color2); - if (!color2.main && color2[mainShade]) { - color2.main = color2[mainShade]; - } - if (!color2.hasOwnProperty("main")) { - throw new Error(true ? `MUI: The color${name ? ` (${name})` : ""} provided to augmentColor(color) is invalid. -The color object needs to have a \`main\` property or a \`${mainShade}\` property.` : formatMuiErrorMessage(11, name ? ` (${name})` : "", mainShade)); - } - if (typeof color2.main !== "string") { - throw new Error(true ? `MUI: The color${name ? ` (${name})` : ""} provided to augmentColor(color) is invalid. -\`color.main\` should be a string, but \`${JSON.stringify(color2.main)}\` was provided instead. - -Did you intend to use one of the following approaches? - -import { green } from "@mui/material/colors"; - -const theme1 = createTheme({ palette: { - primary: green, -} }); - -const theme2 = createTheme({ palette: { - primary: { main: green[500] }, -} });` : formatMuiErrorMessage(12, name ? ` (${name})` : "", JSON.stringify(color2.main))); - } - addLightOrDark(color2, "light", lightShade, tonalOffset); - addLightOrDark(color2, "dark", darkShade, tonalOffset); - if (!color2.contrastText) { - color2.contrastText = getContrastText(color2.main); - } - return color2; - }; - const modes = { - dark, - light - }; - if (true) { - if (!modes[mode]) { - console.error(`MUI: The palette mode \`${mode}\` is not supported.`); - } - } - const paletteOutput = deepmerge(_extends({ - common: _extends({}, common_default), - mode, - primary: augmentColor({ - color: primary, - name: "primary" - }), - secondary: augmentColor({ - color: secondary, - name: "secondary", - mainShade: "A400", - lightShade: "A200", - darkShade: "A700" - }), - error: augmentColor({ - color: error, - name: "error" - }), - warning: augmentColor({ - color: warning3, - name: "warning" - }), - info: augmentColor({ - color: info, - name: "info" - }), - success: augmentColor({ - color: success, - name: "success" - }), - grey: grey_default, - contrastThreshold, - getContrastText, - augmentColor, - tonalOffset - }, modes[mode]), other); - return paletteOutput; -} - -// node_modules/@mui/material/esm/styles/createTypography.js -var _excluded6 = ["fontFamily", "fontSize", "fontWeightLight", "fontWeightRegular", "fontWeightMedium", "fontWeightBold", "htmlFontSize", "allVariants", "pxToRem"]; -function round(value) { - return Math.round(value * 1e5) / 1e5; -} -var caseAllCaps = { - textTransform: "uppercase" -}; -var defaultFontFamily = '"Roboto", "Helvetica", "Arial", sans-serif'; -function createTypography(palette2, typography2) { - const _ref = typeof typography2 === "function" ? typography2(palette2) : typography2, { - fontFamily: fontFamily2 = defaultFontFamily, - fontSize: fontSize2 = 14, - fontWeightLight = 300, - fontWeightRegular = 400, - fontWeightMedium = 500, - fontWeightBold = 700, - htmlFontSize = 16, - allVariants, - pxToRem: pxToRem2 - } = _ref, other = _objectWithoutPropertiesLoose(_ref, _excluded6); - if (true) { - if (typeof fontSize2 !== "number") { - console.error("MUI: `fontSize` is required to be a number."); - } - if (typeof htmlFontSize !== "number") { - console.error("MUI: `htmlFontSize` is required to be a number."); - } - } - const coef = fontSize2 / 14; - const pxToRem = pxToRem2 || ((size) => `${size / htmlFontSize * coef}rem`); - const buildVariant = (fontWeight2, size, lineHeight2, letterSpacing2, casing) => _extends({ - fontFamily: fontFamily2, - fontWeight: fontWeight2, - fontSize: pxToRem(size), - lineHeight: lineHeight2 - }, fontFamily2 === defaultFontFamily ? { - letterSpacing: `${round(letterSpacing2 / size)}em` - } : {}, casing, allVariants); - const variants = { - h1: buildVariant(fontWeightLight, 96, 1.167, -1.5), - h2: buildVariant(fontWeightLight, 60, 1.2, -0.5), - h3: buildVariant(fontWeightRegular, 48, 1.167, 0), - h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25), - h5: buildVariant(fontWeightRegular, 24, 1.334, 0), - h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15), - subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15), - subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1), - body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15), - body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15), - button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps), - caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4), - overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps) - }; - return deepmerge(_extends({ - htmlFontSize, - pxToRem, - fontFamily: fontFamily2, - fontSize: fontSize2, - fontWeightLight, - fontWeightRegular, - fontWeightMedium, - fontWeightBold - }, variants), other, { - clone: false - }); -} - -// node_modules/@mui/material/esm/styles/shadows.js -var shadowKeyUmbraOpacity = 0.2; -var shadowKeyPenumbraOpacity = 0.14; -var shadowAmbientShadowOpacity = 0.12; -function createShadow(...px) { - return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(","); -} -var shadows = ["none", createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)]; -var shadows_default2 = shadows; - -// node_modules/@mui/material/esm/styles/createTransitions.js -var _excluded7 = ["duration", "easing", "delay"]; -var easing = { - easeInOut: "cubic-bezier(0.4, 0, 0.2, 1)", - easeOut: "cubic-bezier(0.0, 0, 0.2, 1)", - easeIn: "cubic-bezier(0.4, 0, 1, 1)", - sharp: "cubic-bezier(0.4, 0, 0.6, 1)" -}; -var duration = { - shortest: 150, - shorter: 200, - short: 250, - standard: 300, - complex: 375, - enteringScreen: 225, - leavingScreen: 195 -}; -function formatMs(milliseconds) { - return `${Math.round(milliseconds)}ms`; -} -function getAutoHeightDuration(height2) { - if (!height2) { - return 0; - } - const constant = height2 / 36; - return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10); -} -function createTransitions(inputTransitions) { - const mergedEasing = _extends({}, easing, inputTransitions.easing); - const mergedDuration = _extends({}, duration, inputTransitions.duration); - const create = (props = ["all"], options = {}) => { - const { - duration: durationOption = mergedDuration.standard, - easing: easingOption = mergedEasing.easeInOut, - delay = 0 - } = options, other = _objectWithoutPropertiesLoose(options, _excluded7); - if (true) { - const isString = (value) => typeof value === "string"; - const isNumber2 = (value) => !isNaN(parseFloat(value)); - if (!isString(props) && !Array.isArray(props)) { - console.error('MUI: Argument "props" must be a string or Array.'); - } - if (!isNumber2(durationOption) && !isString(durationOption)) { - console.error(`MUI: Argument "duration" must be a number or a string but found ${durationOption}.`); - } - if (!isString(easingOption)) { - console.error('MUI: Argument "easing" must be a string.'); - } - if (!isNumber2(delay) && !isString(delay)) { - console.error('MUI: Argument "delay" must be a number or a string.'); - } - if (Object.keys(other).length !== 0) { - console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(",")}].`); - } - } - return (Array.isArray(props) ? props : [props]).map((animatedProp) => `${animatedProp} ${typeof durationOption === "string" ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === "string" ? delay : formatMs(delay)}`).join(","); - }; - return _extends({ - getAutoHeightDuration, - create - }, inputTransitions, { - easing: mergedEasing, - duration: mergedDuration - }); -} - -// node_modules/@mui/material/esm/styles/zIndex.js -var zIndex2 = { - mobileStepper: 1e3, - fab: 1050, - speedDial: 1050, - appBar: 1100, - drawer: 1200, - modal: 1300, - snackbar: 1400, - tooltip: 1500 -}; -var zIndex_default = zIndex2; - -// node_modules/@mui/material/esm/styles/createTheme.js -var _excluded8 = ["breakpoints", "mixins", "spacing", "palette", "transitions", "typography", "shape"]; -function createTheme2(options = {}, ...args) { - const { - mixins: mixinsInput = {}, - palette: paletteInput = {}, - transitions: transitionsInput = {}, - typography: typographyInput = {} - } = options, other = _objectWithoutPropertiesLoose(options, _excluded8); - if (options.vars) { - throw new Error(true ? `MUI: \`vars\` is a private field used for CSS variables support. -Please use another name.` : formatMuiErrorMessage(18)); - } - const palette2 = createPalette(paletteInput); - const systemTheme = createTheme_default(options); - let muiTheme = deepmerge(systemTheme, { - mixins: createMixins(systemTheme.breakpoints, mixinsInput), - palette: palette2, - shadows: shadows_default2.slice(), - typography: createTypography(palette2, typographyInput), - transitions: createTransitions(transitionsInput), - zIndex: _extends({}, zIndex_default) - }); - muiTheme = deepmerge(muiTheme, other); - muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme); - if (true) { - const stateClasses = ["active", "checked", "completed", "disabled", "error", "expanded", "focused", "focusVisible", "required", "selected"]; - const traverse = (node, component) => { - let key; - for (key in node) { - const child = node[key]; - if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) { - if (true) { - const stateClass = generateUtilityClass("", key); - console.error([`MUI: The \`${component}\` component increases the CSS specificity of the \`${key}\` internal state.`, "You can not override it like this: ", JSON.stringify(node, null, 2), "", `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({ - root: { - [`&.${stateClass}`]: child - } - }, null, 2), "", "https://mui.com/r/state-classes-guide"].join("\n")); - } - node[key] = {}; - } - } - }; - Object.keys(muiTheme.components).forEach((component) => { - const styleOverrides = muiTheme.components[component].styleOverrides; - if (styleOverrides && component.indexOf("Mui") === 0) { - traverse(styleOverrides, component); - } - }); - } - return muiTheme; -} -var createTheme_default2 = createTheme2; - -// node_modules/@mui/material/esm/styles/defaultTheme.js -var defaultTheme = createTheme_default2(); -var defaultTheme_default = defaultTheme; - -// node_modules/@mui/material/esm/styles/useThemeProps.js -function useThemeProps2({ - props, - name -}) { - return useThemeProps({ - props, - name, - defaultTheme: defaultTheme_default - }); -} - -// node_modules/@mui/material/esm/styles/styled.js -var rootShouldForwardProp = (prop) => shouldForwardProp(prop) && prop !== "classes"; -var styled2 = createStyled({ - defaultTheme: defaultTheme_default, - rootShouldForwardProp -}); -var styled_default = styled2; - -// node_modules/@mui/material/esm/SvgIcon/svgIconClasses.js -function getSvgIconUtilityClass(slot) { - return generateUtilityClass("MuiSvgIcon", slot); -} -var svgIconClasses = generateUtilityClasses("MuiSvgIcon", ["root", "colorPrimary", "colorSecondary", "colorAction", "colorError", "colorDisabled", "fontSizeInherit", "fontSizeSmall", "fontSizeMedium", "fontSizeLarge"]); - -// node_modules/@mui/material/esm/SvgIcon/SvgIcon.js -var import_jsx_runtime2 = __toESM(require_jsx_runtime()); -var import_jsx_runtime3 = __toESM(require_jsx_runtime()); -var _excluded9 = ["children", "className", "color", "component", "fontSize", "htmlColor", "inheritViewBox", "titleAccess", "viewBox"]; -var useUtilityClasses = (ownerState) => { - const { - color: color2, - fontSize: fontSize2, - classes - } = ownerState; - const slots = { - root: ["root", color2 !== "inherit" && `color${capitalize_default(color2)}`, `fontSize${capitalize_default(fontSize2)}`] - }; - return composeClasses(slots, getSvgIconUtilityClass, classes); -}; -var SvgIconRoot = styled_default("svg", { - name: "MuiSvgIcon", - slot: "Root", - overridesResolver: (props, styles) => { - const { - ownerState - } = props; - return [styles.root, ownerState.color !== "inherit" && styles[`color${capitalize_default(ownerState.color)}`], styles[`fontSize${capitalize_default(ownerState.fontSize)}`]]; - } -})(({ - theme, - ownerState -}) => { - var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$transitions2$d, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette$ownerState$c2, _palette2, _palette2$action, _palette3, _palette3$action; - return { - userSelect: "none", - width: "1em", - height: "1em", - display: "inline-block", - fill: "currentColor", - flexShrink: 0, - transition: (_theme$transitions = theme.transitions) == null ? void 0 : (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, "fill", { - duration: (_theme$transitions2 = theme.transitions) == null ? void 0 : (_theme$transitions2$d = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2$d.shorter - }), - fontSize: { - inherit: "inherit", - small: ((_theme$typography = theme.typography) == null ? void 0 : (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || "1.25rem", - medium: ((_theme$typography2 = theme.typography) == null ? void 0 : (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || "1.5rem", - large: ((_theme$typography3 = theme.typography) == null ? void 0 : (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || "2.1875" - }[ownerState.fontSize], - color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null ? void 0 : (_palette$ownerState$c2 = _palette[ownerState.color]) == null ? void 0 : _palette$ownerState$c2.main) != null ? _palette$ownerState$c : { - action: (_palette2 = (theme.vars || theme).palette) == null ? void 0 : (_palette2$action = _palette2.action) == null ? void 0 : _palette2$action.active, - disabled: (_palette3 = (theme.vars || theme).palette) == null ? void 0 : (_palette3$action = _palette3.action) == null ? void 0 : _palette3$action.disabled, - inherit: void 0 - }[ownerState.color] - }; -}); -var SvgIcon = /* @__PURE__ */ React3.forwardRef(function SvgIcon2(inProps, ref) { - const props = useThemeProps2({ - props: inProps, - name: "MuiSvgIcon" - }); - const { - children, - className, - color: color2 = "inherit", - component = "svg", - fontSize: fontSize2 = "medium", - htmlColor, - inheritViewBox = false, - titleAccess, - viewBox = "0 0 24 24" - } = props, other = _objectWithoutPropertiesLoose(props, _excluded9); - const ownerState = _extends({}, props, { - color: color2, - component, - fontSize: fontSize2, - instanceFontSize: inProps.fontSize, - inheritViewBox, - viewBox - }); - const more = {}; - if (!inheritViewBox) { - more.viewBox = viewBox; - } - const classes = useUtilityClasses(ownerState); - return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(SvgIconRoot, _extends({ - as: component, - className: clsx_m_default(classes.root, className), - ownerState, - focusable: "false", - color: htmlColor, - "aria-hidden": titleAccess ? void 0 : true, - role: titleAccess ? "img" : void 0, - ref - }, more, other, { - children: [children, titleAccess ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("title", { - children: titleAccess - }) : null] - })); -}); -true ? SvgIcon.propTypes = { - children: import_prop_types2.default.node, - classes: import_prop_types2.default.object, - className: import_prop_types2.default.string, - color: import_prop_types2.default.oneOfType([import_prop_types2.default.oneOf(["inherit", "action", "disabled", "primary", "secondary", "error", "info", "success", "warning"]), import_prop_types2.default.string]), - component: import_prop_types2.default.elementType, - fontSize: import_prop_types2.default.oneOfType([import_prop_types2.default.oneOf(["inherit", "large", "medium", "small"]), import_prop_types2.default.string]), - htmlColor: import_prop_types2.default.string, - inheritViewBox: import_prop_types2.default.bool, - shapeRendering: import_prop_types2.default.string, - sx: import_prop_types2.default.oneOfType([import_prop_types2.default.arrayOf(import_prop_types2.default.oneOfType([import_prop_types2.default.func, import_prop_types2.default.object, import_prop_types2.default.bool])), import_prop_types2.default.func, import_prop_types2.default.object]), - titleAccess: import_prop_types2.default.string, - viewBox: import_prop_types2.default.string -} : void 0; -SvgIcon.muiName = "SvgIcon"; -var SvgIcon_default = SvgIcon; - -// node_modules/@mui/material/esm/utils/createSvgIcon.js -var import_jsx_runtime4 = __toESM(require_jsx_runtime()); -function createSvgIcon(path, displayName) { - const Component = (props, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SvgIcon_default, _extends({ - "data-testid": `${displayName}Icon`, - ref - }, props, { - children: path - })); - if (true) { - Component.displayName = `${displayName}Icon`; - } - Component.muiName = SvgIcon_default.muiName; - return /* @__PURE__ */ React4.memo(/* @__PURE__ */ React4.forwardRef(Component)); -} - -// node_modules/@mui/icons-material/esm/ArrowDownward.js -var import_jsx_runtime5 = __toESM(require_jsx_runtime()); -var ArrowDownward_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { - d: "m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z" -}), "ArrowDownward"); - -// node_modules/@mui/icons-material/esm/ArrowUpward.js -var import_jsx_runtime6 = __toESM(require_jsx_runtime()); -var ArrowUpward_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { - d: "m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z" -}), "ArrowUpward"); - -// node_modules/@mui/icons-material/esm/Close.js -var import_jsx_runtime7 = __toESM(require_jsx_runtime()); -var Close_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { - d: "M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" -}), "Close"); - -// node_modules/@mui/icons-material/esm/Delete.js -var import_jsx_runtime8 = __toESM(require_jsx_runtime()); -var Delete_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { - d: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" -}), "Delete"); - -// node_modules/@mui/icons-material/esm/Edit.js -var import_jsx_runtime9 = __toESM(require_jsx_runtime()); -var Edit_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { - d: "M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z" -}), "Edit"); - -// node_modules/@mui/icons-material/esm/KeyboardArrowDown.js -var import_jsx_runtime10 = __toESM(require_jsx_runtime()); -var KeyboardArrowDown_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { - d: "M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z" -}), "KeyboardArrowDown"); - -// node_modules/@mui/icons-material/esm/KeyboardArrowLeft.js -var import_jsx_runtime11 = __toESM(require_jsx_runtime()); -var KeyboardArrowLeft_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { - d: "M15.41 16.59 10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z" -}), "KeyboardArrowLeft"); - -// node_modules/@mui/icons-material/esm/KeyboardArrowRight.js -var import_jsx_runtime12 = __toESM(require_jsx_runtime()); -var KeyboardArrowRight_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { - d: "M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z" -}), "KeyboardArrowRight"); - -// node_modules/@mui/icons-material/esm/KeyboardArrowUp.js -var import_jsx_runtime13 = __toESM(require_jsx_runtime()); -var KeyboardArrowUp_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { - d: "M7.41 15.41 12 10.83l4.59 4.58L18 14l-6-6-6 6z" -}), "KeyboardArrowUp"); - -// node_modules/@mui/icons-material/esm/KeyboardBackspace.js -var import_jsx_runtime14 = __toESM(require_jsx_runtime()); -var KeyboardBackspace_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { - d: "M21 11H6.83l3.58-3.59L9 6l-6 6 6 6 1.41-1.41L6.83 13H21z" -}), "KeyboardBackspace"); - -// node_modules/@mui/icons-material/esm/KeyboardDoubleArrowDown.js -var import_jsx_runtime15 = __toESM(require_jsx_runtime()); -var KeyboardDoubleArrowDown_default = createSvgIcon([/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("path", { - d: "M18 6.41 16.59 5 12 9.58 7.41 5 6 6.41l6 6z" -}, "0"), /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("path", { - d: "m18 13-1.41-1.41L12 16.17l-4.59-4.58L6 13l6 6z" -}, "1")], "KeyboardDoubleArrowDown"); - -// node_modules/@mui/icons-material/esm/KeyboardDoubleArrowLeft.js -var import_jsx_runtime16 = __toESM(require_jsx_runtime()); -var KeyboardDoubleArrowLeft_default = createSvgIcon([/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("path", { - d: "M17.59 18 19 16.59 14.42 12 19 7.41 17.59 6l-6 6z" -}, "0"), /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("path", { - d: "m11 18 1.41-1.41L7.83 12l4.58-4.59L11 6l-6 6z" -}, "1")], "KeyboardDoubleArrowLeft"); - -// node_modules/@mui/icons-material/esm/KeyboardDoubleArrowRight.js -var import_jsx_runtime17 = __toESM(require_jsx_runtime()); -var KeyboardDoubleArrowRight_default = createSvgIcon([/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { - d: "M6.41 6 5 7.41 9.58 12 5 16.59 6.41 18l6-6z" -}, "0"), /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { - d: "m13 6-1.41 1.41L16.17 12l-4.58 4.59L13 18l6-6z" -}, "1")], "KeyboardDoubleArrowRight"); - -// node_modules/@mui/icons-material/esm/KeyboardDoubleArrowUp.js -var import_jsx_runtime18 = __toESM(require_jsx_runtime()); -var KeyboardDoubleArrowUp_default = createSvgIcon([/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { - d: "M6 17.59 7.41 19 12 14.42 16.59 19 18 17.59l-6-6z" -}, "0"), /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { - d: "m6 11 1.41 1.41L12 7.83l4.59 4.58L18 11l-6-6z" -}, "1")], "KeyboardDoubleArrowUp"); - -// node_modules/@mui/icons-material/esm/MoreHoriz.js -var import_jsx_runtime19 = __toESM(require_jsx_runtime()); -var MoreHoriz_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { - d: "M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" -}), "MoreHoriz"); - -// node_modules/@mui/icons-material/esm/MoreVert.js -var import_jsx_runtime20 = __toESM(require_jsx_runtime()); -var MoreVert_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("path", { - d: "M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" -}), "MoreVert"); - -// node_modules/@mui/icons-material/esm/MoveDown.js -var import_jsx_runtime21 = __toESM(require_jsx_runtime()); -var MoveDown_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("path", { - d: "M3 11c0 2.45 1.76 4.47 4.08 4.91l-1.49-1.49L7 13l4 4.01L7 21l-1.41-1.41 1.58-1.58v-.06C3.7 17.54 1 14.58 1 11c0-3.87 3.13-7 7-7h3v2H8c-2.76 0-5 2.24-5 5zm19 0V4h-9v7h9zm-2-2h-5V6h5v3zm-7 4h9v7h-9z" -}), "MoveDown"); - -// node_modules/@mui/icons-material/esm/MoveUp.js -var import_jsx_runtime22 = __toESM(require_jsx_runtime()); -var MoveUp_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("path", { - d: "M3 13c0-2.45 1.76-4.47 4.08-4.91l-1.49 1.5L7 11l4-4.01L7 3 5.59 4.41l1.58 1.58v.06C3.7 6.46 1 9.42 1 13c0 3.87 3.13 7 7 7h3v-2H8c-2.76 0-5-2.24-5-5zm10 0v7h9v-7h-9zm7 5h-5v-3h5v3zM13 4h9v7h-9z" -}), "MoveUp"); - -// node_modules/@mui/icons-material/esm/Sort.js -var import_jsx_runtime23 = __toESM(require_jsx_runtime()); -var Sort_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { - d: "M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h12v-2H3v2z" -}), "Sort"); - -// node_modules/@mui/icons-material/esm/TextSnippet.js -var import_jsx_runtime24 = __toESM(require_jsx_runtime()); -var TextSnippet_default = createSvgIcon(/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { - d: "m20.41 8.41-4.83-4.83c-.37-.37-.88-.58-1.41-.58H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V9.83c0-.53-.21-1.04-.59-1.42zM7 7h7v2H7V7zm10 10H7v-2h10v2zm0-4H7v-2h10v2z" -}), "TextSnippet"); - -// src/components/Icon/services/utils.tsx -var import_jsx_runtime25 = __toESM(require_jsx_runtime()); -var findIcon = (icon, className) => { - switch (icon) { - case 0 /* ARROW_UPWARD */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ArrowUpward_default, { - className - }); - case 1 /* ARROW_DOWNWARD */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ArrowDownward_default, { - className - }); - case "KeyboardArrowUp" /* KEYBOARD_ARROW_UP */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(KeyboardArrowUp_default, { - className - }); - case "KeyboardArrowDown" /* KEYBOARD_ARROW_DOWN */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(KeyboardArrowDown_default, { - className - }); - case "KeyboardDoubleArrowUp" /* KEYBOARD_DOUBLE_ARROW_UP */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(KeyboardDoubleArrowUp_default, { - className - }); - case "KeyboardDoubleArrowDown" /* KEYBOARD_DOUBLE_ARROW_DOWN */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(KeyboardDoubleArrowDown_default, { - className - }); - case "KeyboardArrowLeft" /* KEYBOARD_ARROW_LEFT */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(KeyboardArrowLeft_default, { - className - }); - case "KeyboardArrowRight" /* KEYBOARD_ARROW_RIGHT */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(KeyboardArrowRight_default, { - className - }); - case "KeyboardDoubleArrowLeft" /* KEYBOARD_DOUBLE_ARROW_LEFT */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(KeyboardDoubleArrowLeft_default, { - className - }); - case "KeyboardDoubleArrowRight" /* KEYBOARD_DOUBLE_ARROW_RIGHT */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(KeyboardDoubleArrowRight_default, { - className - }); - case "Delete" /* DELETE */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Delete_default, { - className - }); - case "MoreVert" /* MORE_VERT */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(MoreVert_default, { - className - }); - case "Sort" /* SORT */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Sort_default, { - className - }); - case "KeyboardBackspace" /* KEYBOARD_BACKSPACE */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(KeyboardBackspace_default, { - className - }); - case "MoveUp" /* MOVE_UP */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(MoveUp_default, { - className - }); - case "MoveDown" /* MOVE_DOWN */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(MoveDown_default, { - className - }); - case "TextSnippet" /* TEXT_SNIPPET */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TextSnippet_default, { - className - }); - case "Edit" /* EDIT */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Edit_default, { - className - }); - case "MoreHoriz" /* MORE_HORIZ */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(MoreHoriz_default, { - className - }); - case "Close" /* CLOSE */: - return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Close_default, { - className - }); - default: - return ""; - } -}; - -// src/components/Icon/index.tsx -var import_jsx_runtime26 = __toESM(require_jsx_runtime()); -function Icon({ icon, variant = "md", onClick }) { - let className = ""; - if (variant === "sm") { - className = "NLT__icon--sm"; - } else if (variant === "md") { - className = "NLT__icon--md"; - } else if (variant === "lg") { - className = "NLT__icon--lg"; - } - return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { - className: "NLT__icon", - onClick: onClick && onClick, - children: findIcon(icon, className) - }); -} - -// src/components/Button/index.tsx -var import_jsx_runtime27 = __toESM(require_jsx_runtime()); -function Button({ - style: style3, - children, - icon, - isDarker, - onClick -}) { - let className = "NLT__button"; - if (icon) - className += " NLT__button--icon"; - if (isDarker) - className += " NLT__button--icon-darker"; - return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { - style: style3, - className, - onClick: (e) => onClick(e), - children: icon ? icon : children - }); -} - -// src/components/Stack/index.tsx -var import_jsx_runtime28 = __toESM(require_jsx_runtime()); -function Stack({ spacing: spacing2 = "md", children, isVertical }) { - let gap2 = ""; - if (spacing2 === "sm") { - gap2 = "var(--nlt-spacing--sm)"; - } else if (spacing2 === "md") { - gap2 = "var(--nlt-spacing--md)"; - } else if (spacing2 === "lg") { - gap2 = "var(--nlt-spacing--lg)"; - } else if (spacing2 === "xl") { - gap2 = "var(--nlt-spacing--xl)"; - } else if (spacing2 === "2xl") { - gap2 = "var(--nlt-spacing--2xl)"; - } - return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { - style: { - display: "flex", - flexDirection: isVertical ? "column" : "row", - alignItems: isVertical ? "flex-start" : "center", - justifyContent: isVertical ? "center" : "flex-start", - [isVertical ? "rowGap" : "columnGap"]: gap2 - }, - children - }); -} - -// src/components/Tag/index.tsx -var import_jsx_runtime29 = __toESM(require_jsx_runtime()); -function Tag({ - isDarkMode, - id, - color: color2, - html, - showRemove, - onRemoveClick -}) { - let tagClass = "NLT__tag"; - tagClass += " " + findColorClass(isDarkMode, color2); - return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { - className: tagClass, - children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Stack, { - spacing: "sm", - children: [ - /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { - className: "NLT__tag-content", - children: html_react_parser_default(html) - }), - showRemove && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Icon, { - variant: "sm", - icon: "Close" /* CLOSE */ - }), - isDarker: true, - onClick: (e) => { - e.stopPropagation(); - onRemoveClick(id); - } - }) - ] - }) - }); -} - -// src/components/TagCell/index.tsx -var import_jsx_runtime30 = __toESM(require_jsx_runtime()); -function TagCell({ isDarkMode, html, color: color2 }) { - return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { - className: "NLT__tag-cell", - children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Tag, { - isDarkMode, - html, - color: color2 - }) - }); -} - -// src/services/string/regex.ts -var TAG_REGEX = new RegExp(/^[#][^\s]+$/); -var NUMBER_REGEX = new RegExp(/^\d+$/); -var TAGS_REGEX = new RegExp(/#[^ \t]+/g); -var CSS_MEASUREMENT_PIXEL_REGEX = new RegExp(/^([1-9])([0-9]*)px$/); -var DATE_REGEX = new RegExp(/^\d{4}\/\d{2}\/\d{2}$/); -var CHECKBOX_REGEX = new RegExp(/^\[[x ]{0,1}\]$/); -var CHECKBOX_CHECKED_REGEX = new RegExp(/^\[[x]\]$/); -var SLASH_REGEX = new RegExp(/\/|\\/); -var INTERNAL_LINK_REGEX = new RegExp(/\[\[[^\\\[\]]+\]\]/, "g"); -var INTERNAL_LINK_ALIAS_REGEX = new RegExp(/\|[^\n\r\]]+/); -var LEFT_SQUARE_BRACKET_REGEX = new RegExp(/\[/, "g"); -var RIGHT_SQUARE_BRACKET_REGEX = new RegExp(/\]/, "g"); -var EXTERNAL_LINK_REGEX = new RegExp(/http[s]{0,1}:\/\/[^\s]+/, "g"); -var UNESCAPED_PIPE_REGEX = new RegExp(/[^\\]\|/, "g"); -var TABLE_ID_REGEX = new RegExp(/^table-id-[a-zA-Z0-9_-]+$/); -var ROW_ID_REGEX = new RegExp(/^row-id-[a-zA-Z0-9_-]+$/); -var COLUMN_ID_REGEX = new RegExp(/^column-id-[a-zA-Z0-9_-]+$/); - -// src/services/string/validators.ts -var isMatch = (input, regex) => { - return (input.match(regex) || []).length !== 0; -}; -var isNumber = (input) => { - return isMatch(input, NUMBER_REGEX); -}; -var isDate = (input) => { - return isMatch(input, DATE_REGEX); -}; -var isCheckbox = (input) => { - return isMatch(input, CHECKBOX_REGEX); -}; - -// src/services/table/types.ts -var DEFAULT_COLUMN_SETTINGS = { - sortDir: "default" /* NONE */, - width: "120px", - type: "text" /* TEXT */, - useAutoWidth: false, - shouldWrapOverflow: false, - tags: [] -}; -var DEFAULT_ROW_SETTINGS = { - creationDate: 0 -}; - -// src/services/table/utils.ts -var sortCells = (rowIds, columnIds, cells) => { - return rowIds.map((id) => { - return cells.filter((c2) => c2.rowId === id); - }).map((row) => { - return row.sort((a2, b2) => { - const indexA = columnIds.findIndex( - (id) => id === a2.columnId - ); - const indexB = columnIds.findIndex( - (id) => id === b2.columnId - ); - return indexA - indexB; - }); - }).flat(1); -}; -var isValidCellContent = (content, cellType) => { - switch (cellType) { - case "number" /* NUMBER */: - return isNumber(content); - case "date" /* DATE */: - return isDate(content); - case "checkbox" /* CHECKBOX */: - return isCheckbox(content); - default: - return false; - } -}; -var filterNumberFromContent = (content) => { - let result = ""; - for (let i2 = 0; i2 < content.length; i2++) { - if (content[i2].match(NUMBER_REGEX)) - result += content[i2]; - } - return result; -}; -var getUniqueTableId = (tableId, viewMode) => { - return "NLT_" + tableId + "-" + viewMode; -}; - -// src/components/CheckboxCell/index.tsx -var import_jsx_runtime31 = __toESM(require_jsx_runtime()); -function CheckboxCell({ content, onCheckboxChange }) { - if (!isValidCellContent(content, "checkbox" /* CHECKBOX */)) - content = "[ ]"; - let isChecked = content.includes("x"); - function handleClick() { - if (isChecked) { - onCheckboxChange("[ ]"); - } else { - onCheckboxChange("[x]"); - } - } - return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { - className: "NLT__checkbox-cell", - children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("input", { - className: "task-list-item-checkbox", - type: "checkbox", - checked: isChecked, - onChange: () => { - }, - onClick: handleClick - }) - }); -} - -// src/components/DateCell/index.tsx -var import_jsx_runtime32 = __toESM(require_jsx_runtime()); -function DateCell({ content }) { - if (!isValidCellContent(content, "date" /* DATE */)) - content = ""; - return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { - className: "NLT__date-cell", - children: content - }); -} - -// src/components/NumberCell/index.tsx -var import_jsx_runtime33 = __toESM(require_jsx_runtime()); -function NumberCell({ - content, - shouldWrapOverflow, - useAutoWidth -}) { - let className = "NLT__number-cell"; - if (useAutoWidth) { - className += " NLT__auto-width"; - } else { - if (shouldWrapOverflow) { - className += " NLT__wrap-overflow"; - } else { - className += " NLT__hide-overflow"; - } - } - if (!isValidCellContent(content, "number" /* NUMBER */)) - content = filterNumberFromContent(content); - return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { - className, - children: content - }); -} - -// src/components/NumberCellEdit/index.tsx -var import_react = __toESM(require_react()); -var import_jsx_runtime34 = __toESM(require_jsx_runtime()); -function NumberCellEdit({ content, onInputChange }) { - const inputRef = (0, import_react.useRef)(null); - function handleInputChange(value) { - value = value.replace("\n", ""); - return onInputChange(value); - } - if (!isValidCellContent(content, "number" /* NUMBER */)) - content = filterNumberFromContent(content); - return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("input", { - className: "NLT__number-cell-edit", - type: "number", - ref: inputRef, - autoFocus: true, - value: content, - onChange: (e) => handleInputChange(e.target.value) - }); -} - -// src/components/TextCellEdit/index.tsx -var import_react2 = __toESM(require_react()); - -// src/services/io/utils.ts -var replaceUnescapedPipes = (markdown) => { - const matches = Array.from(markdown.matchAll(UNESCAPED_PIPE_REGEX)); - matches.forEach((match) => { - const pipe = match[0]; - markdown = markdown.replace(pipe, pipe[0] + "\\|"); - }); - return markdown; -}; -var serializeFrontMatter = (model) => { - const frontmatter = []; - frontmatter.push("---"); - frontmatter.push(serializeColumnIds(model.columnIds)); - frontmatter.push(serializeRowIds(model.rowIds)); - frontmatter.push("---"); - return frontmatter.join("\n"); -}; -var serializeColumnIds = (columnIds) => { - return `columnIds: ${JSON.stringify(columnIds)}`; -}; -var serializeRowIds = (rowIds) => { - return `rowIds: ${JSON.stringify(rowIds)}`; -}; -var findTableFile = (plugin, tableId) => __async(void 0, null, function* () { - const tableFolder = plugin.settings.tableFolder; - const folder = plugin.app.vault.getAbstractFileByPath(tableFolder); - if (!folder) - yield plugin.app.vault.createFolder(tableFolder); - const file = plugin.app.vault.getAbstractFileByPath( - `${tableFolder}/${tableId}.md` - ); - if (file) - return { file, isNewFile: false }; - const createdFile = yield plugin.app.vault.create( - `${tableFolder}/${tableId}.md`, - "" - ); - return { file: createdFile, isNewFile: true }; -}); - -// src/components/TextCellEdit/index.tsx -var import_jsx_runtime35 = __toESM(require_jsx_runtime()); -function TextCellEdit({ content, onInputChange }) { - const inputRef = (0, import_react2.useRef)(null); - function focusInput() { - inputRef.current.focus(); - } - function setSelection(pos) { - inputRef.current.selectionStart = pos; - inputRef.current.selectionEnd = pos; - } - (0, import_react2.useEffect)(() => { - focusInput(); - setSelection(content.length); - }, []); - function handleTextareaChange(value) { - value = value.replace("\n", ""); - value = replaceUnescapedPipes(value); - onInputChange(value); - } - return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("textarea", { - className: "NLT__textarea", - ref: inputRef, - autoFocus: true, - value: content, - onChange: (e) => handleTextareaChange(e.target.value) - }); -} - -// src/components/TagCellEdit/index.tsx -var import_react12 = __toESM(require_react()); - -// src/components/Menu/index.tsx -var import_react_dom = __toESM(require_react_dom()); - -// src/services/string/conversion.ts -var dateToString = (date) => { - const year = date.getFullYear(); - const month = ("0" + (date.getMonth() + 1)).slice(-2); - const day = ("0" + date.getDate()).slice(-2); - return `${year}/${month}/${day}`; -}; -var pxToNum = (pixels) => { - return parseFloat(pixels.split("px")[0]); -}; -var numToPx = (num) => { - return `${num}px`; -}; - -// src/components/Menu/index.tsx -var import_jsx_runtime36 = __toESM(require_jsx_runtime()); -function Menu({ - id, - isOpen, - top: top2 = 0, - left: left2 = 0, - minWidth: minWidth2 = 0, - maxWidth: maxWidth2 = 0, - width: width2 = 0, - height: height2 = 0, - children -}) { - return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_jsx_runtime36.Fragment, { - children: isOpen && import_react_dom.default.createPortal( - /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { - className: "NLT__menu", - id, - children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { - className: "NLT__menu-container", - style: { - top: numToPx(top2), - left: numToPx(left2), - minWidth: numToPx(minWidth2), - maxWidth: maxWidth2 === 0 ? "max-content" : numToPx(maxWidth2), - width: width2 === 0 ? "max-content" : numToPx(width2), - height: height2 === 0 ? "max-content" : numToPx(height2) - }, - children - }) - }), - document.body - ) - }); -} - -// src/services/string/utils.ts -var uppercaseFirst = (input) => { - return input.charAt(0).toUpperCase() + input.slice(1); -}; - -// src/components/TagColorMenu/components/ColorItem/index.tsx -var import_jsx_runtime37 = __toESM(require_jsx_runtime()); -function ColorItem({ - isDarkMode, - color: color2, - isSelected, - onColorClick -}) { - let containerClass = "NLT__color-item NLT__selectable"; - if (isSelected) - containerClass += " NLT__selected"; - const colorClass = findColorClass(isDarkMode, color2); - let squareClass = "NLT__color-item-square"; - squareClass += " " + colorClass; - return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { - className: containerClass, - onClick: (e) => { - e.stopPropagation(); - onColorClick(color2); - }, - children: [ - /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { - className: squareClass - }), - /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { - children: uppercaseFirst(color2) - }) - ] - }); -} - -// node_modules/react-redux/es/index.js -var import_shim = __toESM(require_shim()); -var import_with_selector = __toESM(require_with_selector()); - -// node_modules/react-redux/es/utils/reactBatchedUpdates.js -var import_react_dom2 = __toESM(require_react_dom()); - -// node_modules/react-redux/es/utils/batch.js -function defaultNoopBatch(callback) { - callback(); -} -var batch = defaultNoopBatch; -var setBatch = (newBatch) => batch = newBatch; -var getBatch = () => batch; - -// node_modules/react-redux/es/hooks/useSelector.js -var import_react5 = __toESM(require_react()); - -// node_modules/react-redux/es/hooks/useReduxContext.js -var import_react4 = __toESM(require_react()); - -// node_modules/react-redux/es/components/Context.js -var import_react3 = __toESM(require_react()); -var ReactReduxContext = /* @__PURE__ */ (0, import_react3.createContext)(null); -if (true) { - ReactReduxContext.displayName = "ReactRedux"; -} - -// node_modules/react-redux/es/hooks/useReduxContext.js -function useReduxContext() { - const contextValue = (0, import_react4.useContext)(ReactReduxContext); - if (!contextValue) { - throw new Error("could not find react-redux context value; please ensure the component is wrapped in a "); - } - return contextValue; -} - -// node_modules/react-redux/es/utils/useSyncExternalStore.js -var notInitialized = () => { - throw new Error("uSES not initialized!"); -}; - -// node_modules/react-redux/es/hooks/useSelector.js -var useSyncExternalStoreWithSelector = notInitialized; -var initializeUseSelector = (fn2) => { - useSyncExternalStoreWithSelector = fn2; -}; -var refEquality = (a2, b2) => a2 === b2; -function createSelectorHook(context = ReactReduxContext) { - const useReduxContext2 = context === ReactReduxContext ? useReduxContext : () => (0, import_react5.useContext)(context); - return function useSelector2(selector, equalityFn = refEquality) { - if (true) { - if (!selector) { - throw new Error(`You must pass a selector to useSelector`); - } - if (typeof selector !== "function") { - throw new Error(`You must pass a function as a selector to useSelector`); - } - if (typeof equalityFn !== "function") { - throw new Error(`You must pass a function as an equality function to useSelector`); - } - } - const { - store: store2, - subscription, - getServerState - } = useReduxContext2(); - const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store2.getState, getServerState || store2.getState, selector, equalityFn); - (0, import_react5.useDebugValue)(selectedState); - return selectedState; - }; -} -var useSelector = /* @__PURE__ */ createSelectorHook(); - -// node_modules/react-redux/es/components/connect.js -var import_hoist_non_react_statics = __toESM(require_hoist_non_react_statics_cjs()); -var import_react7 = __toESM(require_react()); -var import_react_is2 = __toESM(require_react_is2()); - -// node_modules/react-redux/es/utils/Subscription.js -function createListenerCollection() { - const batch2 = getBatch(); - let first = null; - let last = null; - return { - clear() { - first = null; - last = null; - }, - notify() { - batch2(() => { - let listener2 = first; - while (listener2) { - listener2.callback(); - listener2 = listener2.next; - } - }); - }, - get() { - let listeners = []; - let listener2 = first; - while (listener2) { - listeners.push(listener2); - listener2 = listener2.next; - } - return listeners; - }, - subscribe(callback) { - let isSubscribed = true; - let listener2 = last = { - callback, - next: null, - prev: last - }; - if (listener2.prev) { - listener2.prev.next = listener2; - } else { - first = listener2; - } - return function unsubscribe() { - if (!isSubscribed || first === null) - return; - isSubscribed = false; - if (listener2.next) { - listener2.next.prev = listener2.prev; - } else { - last = listener2.prev; - } - if (listener2.prev) { - listener2.prev.next = listener2.next; - } else { - first = listener2.next; - } - }; - } - }; -} -var nullListeners = { - notify() { - }, - get: () => [] -}; -function createSubscription(store2, parentSub) { - let unsubscribe; - let listeners = nullListeners; - function addNestedSub(listener2) { - trySubscribe(); - return listeners.subscribe(listener2); - } - function notifyNestedSubs() { - listeners.notify(); - } - function handleChangeWrapper() { - if (subscription.onStateChange) { - subscription.onStateChange(); - } - } - function isSubscribed() { - return Boolean(unsubscribe); - } - function trySubscribe() { - if (!unsubscribe) { - unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store2.subscribe(handleChangeWrapper); - listeners = createListenerCollection(); - } - } - function tryUnsubscribe() { - if (unsubscribe) { - unsubscribe(); - unsubscribe = void 0; - listeners.clear(); - listeners = nullListeners; - } - } - const subscription = { - addNestedSub, - notifyNestedSubs, - handleChangeWrapper, - isSubscribed, - trySubscribe, - tryUnsubscribe, - getListeners: () => listeners - }; - return subscription; -} - -// node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js -var import_react6 = __toESM(require_react()); -var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); -var useIsomorphicLayoutEffect = canUseDOM ? import_react6.useLayoutEffect : import_react6.useEffect; - -// node_modules/react-redux/es/components/connect.js -var useSyncExternalStore = notInitialized; -var initializeConnect = (fn2) => { - useSyncExternalStore = fn2; -}; - -// node_modules/react-redux/es/components/Provider.js -var import_react8 = __toESM(require_react()); -function Provider({ - store: store2, - context, - children, - serverState -}) { - const contextValue = (0, import_react8.useMemo)(() => { - const subscription = createSubscription(store2); - return { - store: store2, - subscription, - getServerState: serverState ? () => serverState : void 0 - }; - }, [store2, serverState]); - const previousState = (0, import_react8.useMemo)(() => store2.getState(), [store2]); - useIsomorphicLayoutEffect(() => { - const { - subscription - } = contextValue; - subscription.onStateChange = subscription.notifyNestedSubs; - subscription.trySubscribe(); - if (previousState !== store2.getState()) { - subscription.notifyNestedSubs(); - } - return () => { - subscription.tryUnsubscribe(); - subscription.onStateChange = void 0; - }; - }, [contextValue, previousState]); - const Context = context || ReactReduxContext; - return /* @__PURE__ */ import_react8.default.createElement(Context.Provider, { - value: contextValue - }, children); -} -var Provider_default = Provider; - -// node_modules/react-redux/es/hooks/useStore.js -var import_react9 = __toESM(require_react()); -function createStoreHook(context = ReactReduxContext) { - const useReduxContext2 = context === ReactReduxContext ? useReduxContext : () => (0, import_react9.useContext)(context); - return function useStore2() { - const { - store: store2 - } = useReduxContext2(); - return store2; - }; -} -var useStore = /* @__PURE__ */ createStoreHook(); - -// node_modules/react-redux/es/hooks/useDispatch.js -function createDispatchHook(context = ReactReduxContext) { - const useStore2 = context === ReactReduxContext ? useStore : createStoreHook(context); - return function useDispatch2() { - const store2 = useStore2(); - return store2.dispatch; - }; -} -var useDispatch = /* @__PURE__ */ createDispatchHook(); - -// node_modules/react-redux/es/index.js -initializeUseSelector(import_with_selector.useSyncExternalStoreWithSelector); -initializeConnect(import_shim.useSyncExternalStore); -setBatch(import_react_dom2.unstable_batchedUpdates); - -// src/services/redux/hooks.ts -var useAppDispatch = useDispatch; -var useAppSelector = useSelector; - // node_modules/immer/dist/immer.esm.mjs function n(n2) { - for (var r3 = arguments.length, t2 = Array(r3 > 1 ? r3 - 1 : 0), e = 1; e < r3; e++) + for (var r2 = arguments.length, t2 = Array(r2 > 1 ? r2 - 1 : 0), e = 1; e < r2; e++) t2[e - 1] = arguments[e]; if (true) { var i2 = Y[n2], o2 = i2 ? "function" == typeof i2 ? i2.apply(null, t2) : i2 : "unknown error nr: " + n2; @@ -58760,43 +39572,43 @@ function n(n2) { return "'" + n3 + "'"; }).join(",") : "") + ". Find the full error at: https://bit.ly/3cXEKWf"); } -function r2(n2) { +function r(n2) { return !!n2 && !!n2[Q]; } function t(n2) { return !!n2 && (function(n3) { if (!n3 || "object" != typeof n3) return false; - var r3 = Object.getPrototypeOf(n3); - if (null === r3) + var r2 = Object.getPrototypeOf(n3); + if (null === r2) return true; - var t2 = Object.hasOwnProperty.call(r3, "constructor") && r3.constructor; + var t2 = Object.hasOwnProperty.call(r2, "constructor") && r2.constructor; return t2 === Object || "function" == typeof t2 && Function.toString.call(t2) === Z; }(n2) || Array.isArray(n2) || !!n2[L] || !!n2.constructor[L] || s(n2) || v(n2)); } -function i(n2, r3, t2) { +function i(n2, r2, t2) { void 0 === t2 && (t2 = false), 0 === o(n2) ? (t2 ? Object.keys : nn)(n2).forEach(function(e) { - t2 && "symbol" == typeof e || r3(e, n2[e], n2); + t2 && "symbol" == typeof e || r2(e, n2[e], n2); }) : n2.forEach(function(t3, e) { - return r3(e, t3, n2); + return r2(e, t3, n2); }); } function o(n2) { - var r3 = n2[Q]; - return r3 ? r3.i > 3 ? r3.i - 4 : r3.i : Array.isArray(n2) ? 1 : s(n2) ? 2 : v(n2) ? 3 : 0; + var r2 = n2[Q]; + return r2 ? r2.i > 3 ? r2.i - 4 : r2.i : Array.isArray(n2) ? 1 : s(n2) ? 2 : v(n2) ? 3 : 0; } -function u(n2, r3) { - return 2 === o(n2) ? n2.has(r3) : Object.prototype.hasOwnProperty.call(n2, r3); +function u(n2, r2) { + return 2 === o(n2) ? n2.has(r2) : Object.prototype.hasOwnProperty.call(n2, r2); } -function a(n2, r3) { - return 2 === o(n2) ? n2.get(r3) : n2[r3]; +function a(n2, r2) { + return 2 === o(n2) ? n2.get(r2) : n2[r2]; } -function f(n2, r3, t2) { +function f(n2, r2, t2) { var e = o(n2); - 2 === e ? n2.set(r3, t2) : 3 === e ? (n2.delete(r3), n2.add(t2)) : n2[r3] = t2; + 2 === e ? n2.set(r2, t2) : 3 === e ? (n2.delete(r2), n2.add(t2)) : n2[r2] = t2; } -function c(n2, r3) { - return n2 === r3 ? 0 !== n2 || 1 / n2 == 1 / r3 : n2 != n2 && r3 != r3; +function c(n2, r2) { + return n2 === r2 ? 0 !== n2 || 1 / n2 == 1 / r2 : n2 != n2 && r2 != r2; } function s(n2) { return X && n2 instanceof Map; @@ -58810,17 +39622,17 @@ function p(n2) { function l(n2) { if (Array.isArray(n2)) return Array.prototype.slice.call(n2); - var r3 = rn(n2); - delete r3[Q]; - for (var t2 = nn(r3), e = 0; e < t2.length; e++) { - var i2 = t2[e], o2 = r3[i2]; - false === o2.writable && (o2.writable = true, o2.configurable = true), (o2.get || o2.set) && (r3[i2] = { configurable: true, writable: true, enumerable: o2.enumerable, value: n2[i2] }); + var r2 = rn(n2); + delete r2[Q]; + for (var t2 = nn(r2), e = 0; e < t2.length; e++) { + var i2 = t2[e], o2 = r2[i2]; + false === o2.writable && (o2.writable = true, o2.configurable = true), (o2.get || o2.set) && (r2[i2] = { configurable: true, writable: true, enumerable: o2.enumerable, value: n2[i2] }); } - return Object.create(Object.getPrototypeOf(n2), r3); + return Object.create(Object.getPrototypeOf(n2), r2); } function d(n2, e) { - return void 0 === e && (e = false), y(n2) || r2(n2) || !t(n2) ? n2 : (o(n2) > 1 && (n2.set = n2.add = n2.clear = n2.delete = h), Object.freeze(n2), e && i(n2, function(n3, r3) { - return d(r3, true); + return void 0 === e && (e = false), y(n2) || r(n2) || !t(n2) ? n2 : (o(n2) > 1 && (n2.set = n2.add = n2.clear = n2.delete = h), Object.freeze(n2), e && i(n2, function(n3, r2) { + return d(r2, true); }, true), n2); } function h() { @@ -58829,18 +39641,18 @@ function h() { function y(n2) { return null == n2 || "object" != typeof n2 || Object.isFrozen(n2); } -function b(r3) { - var t2 = tn[r3]; - return t2 || n(18, r3), t2; +function b(r2) { + var t2 = tn[r2]; + return t2 || n(18, r2), t2; } -function m(n2, r3) { - tn[n2] || (tn[n2] = r3); +function m(n2, r2) { + tn[n2] || (tn[n2] = r2); } function _() { return U || n(0), U; } -function j(n2, r3) { - r3 && (b("Patches"), n2.u = [], n2.s = [], n2.v = r3); +function j(n2, r2) { + r2 && (b("Patches"), n2.u = [], n2.s = [], n2.v = r2); } function O(n2) { g(n2), n2.p.forEach(S), n2.p = null; @@ -58852,39 +39664,39 @@ function w(n2) { return U = { p: [], l: U, h: n2, m: true, _: 0 }; } function S(n2) { - var r3 = n2[Q]; - 0 === r3.i || 1 === r3.i ? r3.j() : r3.O = true; + var r2 = n2[Q]; + 0 === r2.i || 1 === r2.i ? r2.j() : r2.O = true; } -function P(r3, e) { +function P(r2, e) { e._ = e.p.length; - var i2 = e.p[0], o2 = void 0 !== r3 && r3 !== i2; - return e.h.g || b("ES5").S(e, r3, o2), o2 ? (i2[Q].P && (O(e), n(4)), t(r3) && (r3 = M(e, r3), e.l || x(e, r3)), e.u && b("Patches").M(i2[Q].t, r3, e.u, e.s)) : r3 = M(e, i2, []), O(e), e.u && e.v(e.u, e.s), r3 !== H ? r3 : void 0; + var i2 = e.p[0], o2 = void 0 !== r2 && r2 !== i2; + return e.h.g || b("ES5").S(e, r2, o2), o2 ? (i2[Q].P && (O(e), n(4)), t(r2) && (r2 = M(e, r2), e.l || x(e, r2)), e.u && b("Patches").M(i2[Q].t, r2, e.u, e.s)) : r2 = M(e, i2, []), O(e), e.u && e.v(e.u, e.s), r2 !== H ? r2 : void 0; } -function M(n2, r3, t2) { - if (y(r3)) - return r3; - var e = r3[Q]; +function M(n2, r2, t2) { + if (y(r2)) + return r2; + var e = r2[Q]; if (!e) - return i(r3, function(i2, o3) { - return A(n2, e, r3, i2, o3, t2); - }, true), r3; + return i(r2, function(i2, o3) { + return A(n2, e, r2, i2, o3, t2); + }, true), r2; if (e.A !== n2) - return r3; + return r2; if (!e.P) return x(n2, e.t, true), e.t; if (!e.I) { e.I = true, e.A._--; var o2 = 4 === e.i || 5 === e.i ? e.o = l(e.k) : e.o; - i(3 === e.i ? new Set(o2) : o2, function(r4, i2) { - return A(n2, e, o2, r4, i2, t2); + i(3 === e.i ? new Set(o2) : o2, function(r3, i2) { + return A(n2, e, o2, r3, i2, t2); }), x(n2, o2, false), t2 && n2.u && b("Patches").R(e, t2, n2.u, n2.s); } return e.o; } function A(e, i2, o2, a2, c2, s2) { - if (c2 === o2 && n(5), r2(c2)) { + if (c2 === o2 && n(5), r(c2)) { var v2 = M(e, c2, s2 && i2 && 3 !== i2.i && !u(i2.D, a2) ? s2.concat(a2) : void 0); - if (f(o2, a2, v2), !r2(v2)) + if (f(o2, a2, v2), !r(v2)) return; e.m = false; } @@ -58894,17 +39706,17 @@ function A(e, i2, o2, a2, c2, s2) { M(e, c2), i2 && i2.A.l || x(e, c2); } } -function x(n2, r3, t2) { - void 0 === t2 && (t2 = false), n2.h.F && n2.m && d(r3, t2); +function x(n2, r2, t2) { + void 0 === t2 && (t2 = false), n2.h.F && n2.m && d(r2, t2); } -function z(n2, r3) { +function z(n2, r2) { var t2 = n2[Q]; - return (t2 ? p(t2) : n2)[r3]; + return (t2 ? p(t2) : n2)[r2]; } -function I(n2, r3) { - if (r3 in n2) +function I(n2, r2) { + if (r2 in n2) for (var t2 = Object.getPrototypeOf(n2); t2; ) { - var e = Object.getOwnPropertyDescriptor(t2, r3); + var e = Object.getOwnPropertyDescriptor(t2, r2); if (e) return e; t2 = Object.getPrototypeOf(t2); @@ -58916,33 +39728,33 @@ function k(n2) { function E(n2) { n2.o || (n2.o = l(n2.t)); } -function R(n2, r3, t2) { - var e = s(r3) ? b("MapSet").N(r3, t2) : v(r3) ? b("MapSet").T(r3, t2) : n2.g ? function(n3, r4) { - var t3 = Array.isArray(n3), e2 = { i: t3 ? 1 : 0, A: r4 ? r4.A : _(), P: false, I: false, D: {}, l: r4, t: n3, k: null, o: null, j: null, C: false }, i2 = e2, o2 = en; +function R(n2, r2, t2) { + var e = s(r2) ? b("MapSet").N(r2, t2) : v(r2) ? b("MapSet").T(r2, t2) : n2.g ? function(n3, r3) { + var t3 = Array.isArray(n3), e2 = { i: t3 ? 1 : 0, A: r3 ? r3.A : _(), P: false, I: false, D: {}, l: r3, t: n3, k: null, o: null, j: null, C: false }, i2 = e2, o2 = en; t3 && (i2 = [e2], o2 = on); - var u2 = Proxy.revocable(i2, o2), a2 = u2.revoke, f2 = u2.proxy; - return e2.k = f2, e2.j = a2, f2; - }(r3, t2) : b("ES5").J(r3, t2); + var u2 = Proxy.revocable(i2, o2), a2 = u2.revoke, f3 = u2.proxy; + return e2.k = f3, e2.j = a2, f3; + }(r2, t2) : b("ES5").J(r2, t2); return (t2 ? t2.A : _()).p.push(e), e; } function D(e) { - return r2(e) || n(22, e), function n2(r3) { - if (!t(r3)) - return r3; - var e2, u2 = r3[Q], c2 = o(r3); + return r(e) || n(22, e), function n2(r2) { + if (!t(r2)) + return r2; + var e2, u2 = r2[Q], c2 = o(r2); if (u2) { if (!u2.P && (u2.i < 4 || !b("ES5").K(u2))) return u2.t; - u2.I = true, e2 = F(r3, c2), u2.I = false; + u2.I = true, e2 = F(r2, c2), u2.I = false; } else - e2 = F(r3, c2); - return i(e2, function(r4, t2) { - u2 && a(u2.t, r4) === t2 || f(e2, r4, n2(t2)); + e2 = F(r2, c2); + return i(e2, function(r3, t2) { + u2 && a(u2.t, r3) === t2 || f(e2, r3, n2(t2)); }), 3 === c2 ? new Set(e2) : e2; }(e); } -function F(n2, r3) { - switch (r3) { +function F(n2, r2) { + switch (r2) { case 2: return new Map(n2); case 3: @@ -58951,19 +39763,19 @@ function F(n2, r3) { return l(n2); } function N() { - function t2(n2, r3) { + function t2(n2, r2) { var t3 = s2[n2]; - return t3 ? t3.enumerable = r3 : s2[n2] = t3 = { configurable: true, enumerable: r3, get: function() { - var r4 = this[Q]; - return f2(r4), en.get(r4, n2); - }, set: function(r4) { + return t3 ? t3.enumerable = r2 : s2[n2] = t3 = { configurable: true, enumerable: r2, get: function() { + var r3 = this[Q]; + return f3(r3), en.get(r3, n2); + }, set: function(r3) { var t4 = this[Q]; - f2(t4), en.set(t4, n2, r4); + f3(t4), en.set(t4, n2, r3); } }, t3; } function e(n2) { - for (var r3 = n2.length - 1; r3 >= 0; r3--) { - var t3 = n2[r3][Q]; + for (var r2 = n2.length - 1; r2 >= 0; r2--) { + var t3 = n2[r2][Q]; if (!t3.P) switch (t3.i) { case 5: @@ -58975,73 +39787,73 @@ function N() { } } function o2(n2) { - for (var r3 = n2.t, t3 = n2.k, e2 = nn(t3), i2 = e2.length - 1; i2 >= 0; i2--) { + for (var r2 = n2.t, t3 = n2.k, e2 = nn(t3), i2 = e2.length - 1; i2 >= 0; i2--) { var o3 = e2[i2]; if (o3 !== Q) { - var a3 = r3[o3]; - if (void 0 === a3 && !u(r3, o3)) + var a3 = r2[o3]; + if (void 0 === a3 && !u(r2, o3)) return true; - var f3 = t3[o3], s3 = f3 && f3[Q]; - if (s3 ? s3.t !== a3 : !c(f3, a3)) + var f4 = t3[o3], s3 = f4 && f4[Q]; + if (s3 ? s3.t !== a3 : !c(f4, a3)) return true; } } - var v2 = !!r3[Q]; - return e2.length !== nn(r3).length + (v2 ? 0 : 1); + var v2 = !!r2[Q]; + return e2.length !== nn(r2).length + (v2 ? 0 : 1); } function a2(n2) { - var r3 = n2.k; - if (r3.length !== n2.t.length) + var r2 = n2.k; + if (r2.length !== n2.t.length) return true; - var t3 = Object.getOwnPropertyDescriptor(r3, r3.length - 1); + var t3 = Object.getOwnPropertyDescriptor(r2, r2.length - 1); if (t3 && !t3.get) return true; - for (var e2 = 0; e2 < r3.length; e2++) - if (!r3.hasOwnProperty(e2)) + for (var e2 = 0; e2 < r2.length; e2++) + if (!r2.hasOwnProperty(e2)) return true; return false; } - function f2(r3) { - r3.O && n(3, JSON.stringify(p(r3))); + function f3(r2) { + r2.O && n(3, JSON.stringify(p(r2))); } var s2 = {}; - m("ES5", { J: function(n2, r3) { - var e2 = Array.isArray(n2), i2 = function(n3, r4) { + m("ES5", { J: function(n2, r2) { + var e2 = Array.isArray(n2), i2 = function(n3, r3) { if (n3) { - for (var e3 = Array(r4.length), i3 = 0; i3 < r4.length; i3++) + for (var e3 = Array(r3.length), i3 = 0; i3 < r3.length; i3++) Object.defineProperty(e3, "" + i3, t2(i3, true)); return e3; } - var o4 = rn(r4); + var o4 = rn(r3); delete o4[Q]; for (var u2 = nn(o4), a3 = 0; a3 < u2.length; a3++) { - var f3 = u2[a3]; - o4[f3] = t2(f3, n3 || !!o4[f3].enumerable); + var f4 = u2[a3]; + o4[f4] = t2(f4, n3 || !!o4[f4].enumerable); } - return Object.create(Object.getPrototypeOf(r4), o4); - }(e2, n2), o3 = { i: e2 ? 5 : 4, A: r3 ? r3.A : _(), P: false, I: false, D: {}, l: r3, t: n2, k: i2, o: null, O: false, C: false }; + return Object.create(Object.getPrototypeOf(r3), o4); + }(e2, n2), o3 = { i: e2 ? 5 : 4, A: r2 ? r2.A : _(), P: false, I: false, D: {}, l: r2, t: n2, k: i2, o: null, O: false, C: false }; return Object.defineProperty(i2, Q, { value: o3, writable: true }), i2; }, S: function(n2, t3, o3) { - o3 ? r2(t3) && t3[Q].A === n2 && e(n2.p) : (n2.u && function n3(r3) { - if (r3 && "object" == typeof r3) { - var t4 = r3[Q]; + o3 ? r(t3) && t3[Q].A === n2 && e(n2.p) : (n2.u && function n3(r2) { + if (r2 && "object" == typeof r2) { + var t4 = r2[Q]; if (t4) { - var e2 = t4.t, o4 = t4.k, f3 = t4.D, c2 = t4.i; + var e2 = t4.t, o4 = t4.k, f4 = t4.D, c2 = t4.i; if (4 === c2) - i(o4, function(r4) { - r4 !== Q && (void 0 !== e2[r4] || u(e2, r4) ? f3[r4] || n3(o4[r4]) : (f3[r4] = true, k(t4))); + i(o4, function(r3) { + r3 !== Q && (void 0 !== e2[r3] || u(e2, r3) ? f4[r3] || n3(o4[r3]) : (f4[r3] = true, k(t4))); }), i(e2, function(n4) { - void 0 !== o4[n4] || u(o4, n4) || (f3[n4] = false, k(t4)); + void 0 !== o4[n4] || u(o4, n4) || (f4[n4] = false, k(t4)); }); else if (5 === c2) { - if (a2(t4) && (k(t4), f3.length = true), o4.length < e2.length) + if (a2(t4) && (k(t4), f4.length = true), o4.length < e2.length) for (var s3 = o4.length; s3 < e2.length; s3++) - f3[s3] = false; + f4[s3] = false; else for (var v2 = e2.length; v2 < o4.length; v2++) - f3[v2] = true; + f4[v2] = true; for (var p2 = Math.min(o4.length, e2.length), l2 = 0; l2 < p2; l2++) - o4.hasOwnProperty(l2) || (f3[l2] = true), void 0 === f3[l2] && n3(o4[l2]); + o4.hasOwnProperty(l2) || (f4[l2] = true), void 0 === f4[l2] && n3(o4[l2]); } } } @@ -59079,45 +39891,45 @@ var nn = "undefined" != typeof Reflect && Reflect.ownKeys ? Reflect.ownKeys : vo return Object.getOwnPropertyNames(n2).concat(Object.getOwnPropertySymbols(n2)); } : Object.getOwnPropertyNames; var rn = Object.getOwnPropertyDescriptors || function(n2) { - var r3 = {}; + var r2 = {}; return nn(n2).forEach(function(t2) { - r3[t2] = Object.getOwnPropertyDescriptor(n2, t2); - }), r3; + r2[t2] = Object.getOwnPropertyDescriptor(n2, t2); + }), r2; }; var tn = {}; -var en = { get: function(n2, r3) { - if (r3 === Q) +var en = { get: function(n2, r2) { + if (r2 === Q) return n2; var e = p(n2); - if (!u(e, r3)) - return function(n3, r4, t2) { - var e2, i3 = I(r4, t2); + if (!u(e, r2)) + return function(n3, r3, t2) { + var e2, i3 = I(r3, t2); return i3 ? "value" in i3 ? i3.value : null === (e2 = i3.get) || void 0 === e2 ? void 0 : e2.call(n3.k) : void 0; - }(n2, e, r3); - var i2 = e[r3]; - return n2.I || !t(i2) ? i2 : i2 === z(n2.t, r3) ? (E(n2), n2.o[r3] = R(n2.A.h, i2, n2)) : i2; -}, has: function(n2, r3) { - return r3 in p(n2); + }(n2, e, r2); + var i2 = e[r2]; + return n2.I || !t(i2) ? i2 : i2 === z(n2.t, r2) ? (E(n2), n2.o[r2] = R(n2.A.h, i2, n2)) : i2; +}, has: function(n2, r2) { + return r2 in p(n2); }, ownKeys: function(n2) { return Reflect.ownKeys(p(n2)); -}, set: function(n2, r3, t2) { - var e = I(p(n2), r3); +}, set: function(n2, r2, t2) { + var e = I(p(n2), r2); if (null == e ? void 0 : e.set) return e.set.call(n2.k, t2), true; if (!n2.P) { - var i2 = z(p(n2), r3), o2 = null == i2 ? void 0 : i2[Q]; + var i2 = z(p(n2), r2), o2 = null == i2 ? void 0 : i2[Q]; if (o2 && o2.t === t2) - return n2.o[r3] = t2, n2.D[r3] = false, true; - if (c(t2, i2) && (void 0 !== t2 || u(n2.t, r3))) + return n2.o[r2] = t2, n2.D[r2] = false, true; + if (c(t2, i2) && (void 0 !== t2 || u(n2.t, r2))) return true; E(n2), k(n2); } - return n2.o[r3] === t2 && "number" != typeof t2 && (void 0 !== t2 || r3 in n2.o) || (n2.o[r3] = t2, n2.D[r3] = true, true); -}, deleteProperty: function(n2, r3) { - return void 0 !== z(n2.t, r3) || r3 in n2.t ? (n2.D[r3] = false, E(n2), k(n2)) : delete n2.D[r3], n2.o && delete n2.o[r3], true; -}, getOwnPropertyDescriptor: function(n2, r3) { - var t2 = p(n2), e = Reflect.getOwnPropertyDescriptor(t2, r3); - return e ? { writable: true, configurable: 1 !== n2.i || "length" !== r3, enumerable: e.enumerable, value: t2[r3] } : e; + return n2.o[r2] === t2 && "number" != typeof t2 && (void 0 !== t2 || r2 in n2.o) || (n2.o[r2] = t2, n2.D[r2] = true, true); +}, deleteProperty: function(n2, r2) { + return void 0 !== z(n2.t, r2) || r2 in n2.t ? (n2.D[r2] = false, E(n2), k(n2)) : delete n2.D[r2], n2.o && delete n2.o[r2], true; +}, getOwnPropertyDescriptor: function(n2, r2) { + var t2 = p(n2), e = Reflect.getOwnPropertyDescriptor(t2, r2); + return e ? { writable: true, configurable: 1 !== n2.i || "length" !== r2, enumerable: e.enumerable, value: t2[r2] } : e; }, defineProperty: function() { n(11); }, getPrototypeOf: function(n2) { @@ -59126,87 +39938,87 @@ var en = { get: function(n2, r3) { n(12); } }; var on = {}; -i(en, function(n2, r3) { +i(en, function(n2, r2) { on[n2] = function() { - return arguments[0] = arguments[0][0], r3.apply(this, arguments); + return arguments[0] = arguments[0][0], r2.apply(this, arguments); }; -}), on.deleteProperty = function(r3, t2) { - return isNaN(parseInt(t2)) && n(13), on.set.call(this, r3, t2, void 0); -}, on.set = function(r3, t2, e) { - return "length" !== t2 && isNaN(parseInt(t2)) && n(14), en.set.call(this, r3[0], t2, e, r3[0]); +}), on.deleteProperty = function(r2, t2) { + return isNaN(parseInt(t2)) && n(13), on.set.call(this, r2, t2, void 0); +}, on.set = function(r2, t2, e) { + return "length" !== t2 && isNaN(parseInt(t2)) && n(14), en.set.call(this, r2[0], t2, e, r2[0]); }; var un = function() { - function e(r3) { + function e(r2) { var e2 = this; - this.g = B, this.F = true, this.produce = function(r4, i3, o2) { - if ("function" == typeof r4 && "function" != typeof i3) { + this.g = B, this.F = true, this.produce = function(r3, i3, o2) { + if ("function" == typeof r3 && "function" != typeof i3) { var u2 = i3; - i3 = r4; + i3 = r3; var a2 = e2; return function(n2) { - var r5 = this; + var r4 = this; void 0 === n2 && (n2 = u2); for (var t2 = arguments.length, e3 = Array(t2 > 1 ? t2 - 1 : 0), o3 = 1; o3 < t2; o3++) e3[o3 - 1] = arguments[o3]; return a2.produce(n2, function(n3) { var t3; - return (t3 = i3).call.apply(t3, [r5, n3].concat(e3)); + return (t3 = i3).call.apply(t3, [r4, n3].concat(e3)); }); }; } - var f2; - if ("function" != typeof i3 && n(6), void 0 !== o2 && "function" != typeof o2 && n(7), t(r4)) { - var c2 = w(e2), s2 = R(e2, r4, void 0), v2 = true; + var f3; + if ("function" != typeof i3 && n(6), void 0 !== o2 && "function" != typeof o2 && n(7), t(r3)) { + var c2 = w(e2), s2 = R(e2, r3, void 0), v2 = true; try { - f2 = i3(s2), v2 = false; + f3 = i3(s2), v2 = false; } finally { v2 ? O(c2) : g(c2); } - return "undefined" != typeof Promise && f2 instanceof Promise ? f2.then(function(n2) { + return "undefined" != typeof Promise && f3 instanceof Promise ? f3.then(function(n2) { return j(c2, o2), P(n2, c2); }, function(n2) { throw O(c2), n2; - }) : (j(c2, o2), P(f2, c2)); + }) : (j(c2, o2), P(f3, c2)); } - if (!r4 || "object" != typeof r4) { - if (void 0 === (f2 = i3(r4)) && (f2 = r4), f2 === H && (f2 = void 0), e2.F && d(f2, true), o2) { + if (!r3 || "object" != typeof r3) { + if (void 0 === (f3 = i3(r3)) && (f3 = r3), f3 === H && (f3 = void 0), e2.F && d(f3, true), o2) { var p2 = [], l2 = []; - b("Patches").M(r4, f2, p2, l2), o2(p2, l2); + b("Patches").M(r3, f3, p2, l2), o2(p2, l2); } - return f2; + return f3; } - n(21, r4); - }, this.produceWithPatches = function(n2, r4) { + n(21, r3); + }, this.produceWithPatches = function(n2, r3) { if ("function" == typeof n2) - return function(r5) { + return function(r4) { for (var t3 = arguments.length, i4 = Array(t3 > 1 ? t3 - 1 : 0), o3 = 1; o3 < t3; o3++) i4[o3 - 1] = arguments[o3]; - return e2.produceWithPatches(r5, function(r6) { - return n2.apply(void 0, [r6].concat(i4)); + return e2.produceWithPatches(r4, function(r5) { + return n2.apply(void 0, [r5].concat(i4)); }); }; - var t2, i3, o2 = e2.produce(n2, r4, function(n3, r5) { - t2 = n3, i3 = r5; + var t2, i3, o2 = e2.produce(n2, r3, function(n3, r4) { + t2 = n3, i3 = r4; }); return "undefined" != typeof Promise && o2 instanceof Promise ? o2.then(function(n3) { return [n3, t2, i3]; }) : [o2, t2, i3]; - }, "boolean" == typeof (null == r3 ? void 0 : r3.useProxies) && this.setUseProxies(r3.useProxies), "boolean" == typeof (null == r3 ? void 0 : r3.autoFreeze) && this.setAutoFreeze(r3.autoFreeze); + }, "boolean" == typeof (null == r2 ? void 0 : r2.useProxies) && this.setUseProxies(r2.useProxies), "boolean" == typeof (null == r2 ? void 0 : r2.autoFreeze) && this.setAutoFreeze(r2.autoFreeze); } var i2 = e.prototype; return i2.createDraft = function(e2) { - t(e2) || n(8), r2(e2) && (e2 = D(e2)); + t(e2) || n(8), r(e2) && (e2 = D(e2)); var i3 = w(this), o2 = R(this, e2, void 0); return o2[Q].C = true, g(i3), o2; - }, i2.finishDraft = function(r3, t2) { - var e2 = r3 && r3[Q]; + }, i2.finishDraft = function(r2, t2) { + var e2 = r2 && r2[Q]; e2 && e2.C || n(9), e2.I && n(10); var i3 = e2.A; return j(i3, t2), P(void 0, i3); }, i2.setAutoFreeze = function(n2) { this.F = n2; - }, i2.setUseProxies = function(r3) { - r3 && !B && n(20), this.g = r3; + }, i2.setUseProxies = function(r2) { + r2 && !B && n(20), this.g = r2; }, i2.applyPatches = function(n2, t2) { var e2; for (e2 = t2.length - 1; e2 >= 0; e2--) { @@ -59218,7 +40030,7 @@ var un = function() { } e2 > -1 && (t2 = t2.slice(e2 + 1)); var o2 = b("Patches").$; - return r2(n2) ? o2(n2, t2) : this.produce(n2, function(n3) { + return r(n2) ? o2(n2, t2) : this.produce(n2, function(n3) { return o2(n3, t2); }); }, e; @@ -59285,7 +40097,7 @@ var ActionTypes = { return "@@redux/PROBE_UNKNOWN_ACTION" + randomString(); } }; -function isPlainObject3(obj) { +function isPlainObject(obj) { if (typeof obj !== "object" || obj === null) return false; var proto = obj; @@ -59311,7 +40123,7 @@ function miniKindOf(val) { } if (Array.isArray(val)) return "array"; - if (isDate2(val)) + if (isDate(val)) return "date"; if (isError(val)) return "error"; @@ -59333,7 +40145,7 @@ function ctorName(val) { function isError(val) { return val instanceof Error || typeof val.message === "string" && val.constructor && typeof val.constructor.stackTraceLimit === "number"; } -function isDate2(val) { +function isDate(val) { if (val instanceof Date) return true; return typeof val.toDateString === "function" && typeof val.getDate === "function" && typeof val.setDate === "function"; @@ -59379,7 +40191,7 @@ function createStore(reducer, preloadedState, enhancer) { } return currentState; } - function subscribe(listener2) { + function subscribe2(listener2) { if (typeof listener2 !== "function") { throw new Error(false ? formatProdErrorMessage(4) : "Expected the listener to be a function. Instead, received: '" + kindOf(listener2) + "'"); } @@ -59404,7 +40216,7 @@ function createStore(reducer, preloadedState, enhancer) { }; } function dispatch(action) { - if (!isPlainObject3(action)) { + if (!isPlainObject(action)) { throw new Error(false ? formatProdErrorMessage(7) : "Actions must be plain objects. Instead, the actual type was: '" + kindOf(action) + "'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples."); } if (typeof action.type === "undefined") { @@ -59437,9 +40249,9 @@ function createStore(reducer, preloadedState, enhancer) { } function observable() { var _ref; - var outerSubscribe = subscribe; + var outerSubscribe = subscribe2; return _ref = { - subscribe: function subscribe2(observer) { + subscribe: function subscribe3(observer) { if (typeof observer !== "object" || observer === null) { throw new Error(false ? formatProdErrorMessage(11) : "Expected the observer to be an object. Instead, received: '" + kindOf(observer) + "'"); } @@ -59463,12 +40275,12 @@ function createStore(reducer, preloadedState, enhancer) { }); return _ref2 = { dispatch, - subscribe, + subscribe: subscribe2, getState, replaceReducer }, _ref2[$$observable] = observable, _ref2; } -function warning2(message) { +function warning(message) { if (typeof console !== "undefined" && typeof console.error === "function") { console.error(message); } @@ -59483,7 +40295,7 @@ function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, une if (reducerKeys.length === 0) { return "Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers."; } - if (!isPlainObject3(inputState)) { + if (!isPlainObject(inputState)) { return "The " + argumentName + ' has unexpected type of "' + kindOf(inputState) + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"'); } var unexpectedKeys = Object.keys(inputState).filter(function(key) { @@ -59501,10 +40313,10 @@ function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, une function assertReducerShape(reducers) { Object.keys(reducers).forEach(function(key) { var reducer = reducers[key]; - var initialState3 = reducer(void 0, { + var initialState2 = reducer(void 0, { type: ActionTypes.INIT }); - if (typeof initialState3 === "undefined") { + if (typeof initialState2 === "undefined") { throw new Error(false ? formatProdErrorMessage(12) : 'The slice reducer for key "' + key + `" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`); } if (typeof reducer(void 0, { @@ -59521,7 +40333,7 @@ function combineReducers(reducers) { var key = reducerKeys[i2]; if (true) { if (typeof reducers[key] === "undefined") { - warning2('No reducer provided for key "' + key + '"'); + warning('No reducer provided for key "' + key + '"'); } } if (typeof reducers[key] === "function") { @@ -59549,7 +40361,7 @@ function combineReducers(reducers) { if (true) { var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache); if (warningMessage) { - warning2(warningMessage); + warning(warningMessage); } } var hasChanged = false; @@ -59570,7 +40382,7 @@ function combineReducers(reducers) { return hasChanged ? nextState : state; }; } -function compose2() { +function compose() { for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) { funcs[_key] = arguments[_key]; } @@ -59607,7 +40419,7 @@ function applyMiddleware() { var chain = middlewares.map(function(middleware) { return middleware(middlewareAPI); }); - _dispatch = compose2.apply(void 0, chain)(store2.dispatch); + _dispatch = compose.apply(void 0, chain)(store2.dispatch); return _objectSpread2(_objectSpread2({}, store2), {}, { dispatch: _dispatch }); @@ -59617,7 +40429,7 @@ function applyMiddleware() { function isCrushed() { } if (typeof isCrushed.name === "string" && isCrushed.name !== "isCrushed") { - warning2('You are currently using minified code outside of NODE_ENV === "production". This means that you are running a slower development build of Redux. You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) to ensure you have the correct code for your production build.'); + warning('You are currently using minified code outside of NODE_ENV === "production". This means that you are running a slower development build of Redux. You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) to ensure you have the correct code for your production build.'); } // node_modules/redux-thunk/es/index.js @@ -59689,15 +40501,15 @@ var composeWithDevTools = typeof window !== "undefined" && window.__REDUX_DEVTOO if (arguments.length === 0) return void 0; if (typeof arguments[0] === "object") - return compose2; - return compose2.apply(null, arguments); + return compose; + return compose.apply(null, arguments); }; var devToolsEnhancer = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function() { return function(noop2) { return noop2; }; }; -function isPlainObject4(value) { +function isPlainObject2(value) { if (typeof value !== "object" || value === null) return false; var proto = Object.getPrototypeOf(value); @@ -59916,7 +40728,7 @@ function createImmutableStateInvariantMiddleware(options) { } function isPlain(val) { var type = typeof val; - return val == null || type === "string" || type === "boolean" || type === "number" || Array.isArray(val) || isPlainObject4(val); + return val == null || type === "string" || type === "boolean" || type === "number" || Array.isArray(val) || isPlainObject2(val); } function findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths) { if (path === void 0) { @@ -60051,7 +40863,7 @@ function configureStore(options) { var rootReducer; if (typeof reducer === "function") { rootReducer = reducer; - } else if (isPlainObject4(reducer)) { + } else if (isPlainObject2(reducer)) { rootReducer = combineReducers(reducer); } else { throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'); @@ -60069,7 +40881,7 @@ function configureStore(options) { throw new Error("each middleware provided to configureStore must be a function"); } var middlewareEnhancer = applyMiddleware.apply(void 0, finalMiddleware); - var finalCompose = compose2; + var finalCompose = compose; if (devTools) { finalCompose = composeWithDevTools(__spreadValues2({ trace: !IS_PRODUCTION @@ -60157,18 +40969,18 @@ function executeReducerBuilderCallback(builderCallback) { function isStateFunction(x2) { return typeof x2 === "function"; } -function createReducer(initialState3, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) { +function createReducer(initialState2, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) { if (actionMatchers === void 0) { actionMatchers = []; } var _c = typeof mapOrBuilderCallback === "function" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2]; var getInitialState; - if (isStateFunction(initialState3)) { + if (isStateFunction(initialState2)) { getInitialState = function() { - return freezeDraftable(initialState3()); + return freezeDraftable(initialState2()); }; } else { - var frozenInitialState_1 = freezeDraftable(initialState3); + var frozenInitialState_1 = freezeDraftable(initialState2); getInitialState = function() { return frozenInitialState_1; }; @@ -60193,7 +41005,7 @@ function createReducer(initialState3, mapOrBuilderCallback, actionMatchers, defa } return caseReducers.reduce(function(previousState, caseReducer) { if (caseReducer) { - if (r2(previousState)) { + if (r(previousState)) { var draft = previousState; var result = caseReducer(draft, action); if (result === void 0) { @@ -60234,7 +41046,7 @@ function createSlice(options) { console.error("You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`"); } } - var initialState3 = typeof options.initialState == "function" ? options.initialState : freezeDraftable(options.initialState); + var initialState2 = typeof options.initialState == "function" ? options.initialState : freezeDraftable(options.initialState); var reducers = options.reducers || {}; var reducerNames = Object.keys(reducers); var sliceCaseReducersByName = {}; @@ -60258,7 +41070,7 @@ function createSlice(options) { function buildReducer() { var _c = typeof options.extraReducers === "function" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f; var finalCaseReducers = __spreadValues2(__spreadValues2({}, extraReducers), sliceCaseReducersByType); - return createReducer(initialState3, finalCaseReducers, actionMatchers, defaultCaseReducer); + return createReducer(initialState2, finalCaseReducers, actionMatchers, defaultCaseReducer); } var _reducer; return { @@ -60313,3197 +41125,15390 @@ var clearAllListeners = createAction(alm + "/removeAll"); var removeListener = createAction(alm + "/remove"); N(); -// src/services/menu/menuSlice.ts +// src/redux/global/global-slice.ts var initialState = { - openMenus: [], - menuOpenTime: 0, - positionUpdateTime: 0 -}; -var menuSlice = createSlice({ - name: "menu", - initialState, - reducers: { - openMenu: (state, action) => { - const canOpen = state.openMenus.find((m2) => m2.level < action.payload.level) || state.openMenus.length === 0; - if (!canOpen) - return; - state.openMenus.push(action.payload); - state.menuOpenTime = Date.now(); - }, - closeTopLevelMenu: (state) => { - state.openMenus.pop(); - }, - closeAllMenus: (state) => { - state.openMenus = []; - }, - updateMenuPosition: (state) => { - state.positionUpdateTime = Date.now(); - } - } -}); -var { - openMenu, - closeTopLevelMenu, - closeAllMenus, - updateMenuPosition -} = menuSlice.actions; -var isMenuOpen = (state, menu) => state.menu.openMenus.find((m2) => m2.id === menu.id) ? true : false; -var getTopLevelMenu = (state) => { - if (state.menu.openMenus.length !== 0) - return state.menu.openMenus[state.menu.openMenus.length - 1]; - return null; -}; -var timeSinceMenuOpen = (state) => { - return Date.now() - state.menu.menuOpenTime; -}; -var menuSlice_default = menuSlice.reducer; - -// src/components/TagColorMenu/index.tsx -var import_jsx_runtime38 = __toESM(require_jsx_runtime()); -function TagColorMenu({ - menuId, - isOpen, - top: top2, - left: left2, - selectedColor, - onColorClick -}) { - const dispatch = useAppDispatch(); - const { isDarkMode } = useAppSelector((state) => state.global); - function handleMenuCloseClick(e) { - e.stopPropagation(); - dispatch(closeTopLevelMenu()); - } - return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Menu, { - id: menuId, - isOpen, - top: top2, - left: left2, - children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { - className: "NLT__tag-color-menu", - children: [ - /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { - className: "NLT__tag-color-menu-header", - children: [ - /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { - className: "NLT__tag-color-menu-title", - children: "Colors" - }), - /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Icon, { - icon: "Close" /* CLOSE */ - }), - onClick: handleMenuCloseClick - }) - ] - }), - /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { - className: "NLT__tag-color-container", - children: Object.values(COLOR).map((color2) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ColorItem, { - isDarkMode, - color: color2, - onColorClick, - isSelected: selectedColor === color2 - }, color2)) - }) - ] - }) - }); -} - -// src/services/hooks/index.ts -var import_react10 = __toESM(require_react()); -var usePositionRef = (deps = []) => { - const ref = (0, import_react10.useRef)(null); - const [position2, setPosition] = (0, import_react10.useState)({ - top: 0, - left: 0, - width: 0, - height: 0 - }); - (0, import_react10.useEffect)(() => { - const node = ref.current; - if (node) { - const { top: top2, left: left2 } = node.getBoundingClientRect(); - const { offsetWidth, offsetHeight } = node; - setPosition({ - top: top2, - left: left2, - width: offsetWidth, - height: offsetHeight - }); - } - }, [...deps]); - return { ref, position: position2 }; -}; - -// src/services/menu/hooks.ts -var import_react11 = __toESM(require_react()); - -// src/services/random/index.ts -var randomColor = () => { - const index = Math.floor(Math.random() * Object.keys(COLOR).length); - return Object.values(COLOR)[index]; -}; -var randomTableId = () => { - return `table-id-${randomId(6)}`; -}; -var randomRowId = () => { - return `row-id-${randomId(8)}`; -}; -var randomColumnId = () => { - return `column-id-${randomId(8)}`; -}; -var randomTagId = () => { - return `tag-id-${randomId(8)}`; -}; -var randomCellId = () => { - return `cell-id-${randomId(8)}`; -}; -var randomId = (numChars) => { - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345679"; - let result = ""; - for (let i2 = 0; i2 < numChars; i2++) { - result += chars[Math.floor(Math.random() * chars.length)]; - } - return result; -}; -var randomCell = (columnId, rowId, isHeader) => { - return { - id: randomCellId(), - columnId, - rowId, - markdown: "", - html: "", - isHeader - }; -}; -var emptyMarkdownTable = () => { - const table = []; - table.push("| New Column |"); - table.push("| -------- |"); - table.push("| |"); - return table.join("\n"); -}; -var generateEmptyMarkdownTable = () => { - const columnId = randomColumnId(); - const rowId1 = randomRowId(); - const rowId2 = randomRowId(); - const model = { - cells: [ - randomCell(columnId, rowId1, true), - randomCell(columnId, rowId2, false) - ], - columnIds: [columnId], - rowIds: [rowId1, rowId2] - }; - const frontmatter = serializeFrontMatter(model); - return frontmatter + "\n\n" + emptyMarkdownTable(); -}; -var generateNLTCodeBlock = (tableId = "") => { - if (tableId === "") - tableId = randomTableId(); - const codeblock = []; - codeblock.push("```notion-like-tables"); - codeblock.push(tableId); - codeblock.push("```"); - return codeblock.join("\n"); -}; - -// src/services/menu/constants.ts -var MENU_PREFIX = "NLT__menu-id"; - -// src/services/menu/hooks.ts -var NUM_CHARS_MENU_ID = 8; -var randomMenuId = () => { - return `${MENU_PREFIX}-${randomId(NUM_CHARS_MENU_ID)}`; -}; -var useMenu = (level, sortRowsOnClose) => { - const [id] = (0, import_react11.useState)(randomMenuId()); - return { - id, - level, - sortRowsOnClose - }; -}; - -// src/components/TagCellEdit/component/SelectableTag/index.tsx -var import_jsx_runtime39 = __toESM(require_jsx_runtime()); -function SelectableTag({ - isDarkMode, - id, - html, - color: color2, - onClick, - onColorChange -}) { - const menu = useMenu(1 /* TWO */); - const dispatch = useAppDispatch(); - const isOpen = useAppSelector((state) => isMenuOpen(state, menu)); - const positionUpdateTime = useAppSelector( - (state) => state.menu.positionUpdateTime - ); - const { ref, position: position2 } = usePositionRef([positionUpdateTime]); - function handleColorChange(color3) { - onColorChange(id, color3); - dispatch(closeTopLevelMenu()); - } - let tagClass = "NLT__tag"; - tagClass += " " + findColorClass(isDarkMode, color2); - return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { - ref, - className: "NLT__selectable-tag NLT__selectable", - onClick: () => onClick(id), - children: [ - /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(TagColorMenu, { - menuId: menu.id, - top: position2.top - 125, - left: position2.left + position2.width - 50, - isOpen, - selectedColor: color2, - onColorClick: (color3) => handleColorChange(color3) - }), - /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { - className: tagClass, - children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { - className: "NLT__tag-content", - children: html_react_parser_default(html) - }) - }), - /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Icon, { - icon: "MoreHoriz" /* MORE_HORIZ */ - }), - isDarker: true, - onClick: (e) => { - e.stopPropagation(); - dispatch(openMenu(menu)); - } - }) - ] - }); -} - -// src/components/TagCellEdit/component/CreateTag/index.tsx -var import_jsx_runtime40 = __toESM(require_jsx_runtime()); -function CreateTag({ - isDarkMode, - markdown, - html, - color: color2, - onAddTag -}) { - return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { - className: "NLT__create-tag NLT__selectable", - onClick: () => { - onAddTag(markdown, html, color2); - }, - children: [ - /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { - children: "Create\xA0" - }), - /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Tag, { - isDarkMode, - html, - color: color2 - }) - ] - }); -} - -// src/services/io/deserialize.ts -var import_markdown_it = __toESM(require_markdown_it()); - -// src/services/debug/index.ts -var logFunc = (shouldDebug, fileName, functionName, args = {}) => { - if (shouldDebug) { - console.log(""); - console.log(`[${fileName}]: ${functionName}`); - if (args) - console.log(args); - } -}; -var logVar = (shouldDebug, fileName, functionName, description, variable) => { - if (shouldDebug) { - console.log(""); - console.log(`[${fileName}]: ${functionName}`); - console.log(`${description}:`); - console.log(variable); - } -}; - -// src/services/io/deserialize.ts -var FILE_NAME = "deserialize"; -var md = new import_markdown_it.default(); -var replaceObsidianLinks = (markdown) => { - const matches = Array.from(markdown.matchAll(INTERNAL_LINK_REGEX)); - matches.forEach((match) => { - const link = match[0]; - let fileName = link.replace(LEFT_SQUARE_BRACKET_REGEX, "").replace(RIGHT_SQUARE_BRACKET_REGEX, ""); - const alias = fileName.match(INTERNAL_LINK_ALIAS_REGEX); - if (alias) - fileName = fileName.replace(INTERNAL_LINK_ALIAS_REGEX, ""); - const file = NltPlugin.getFiles().find( - (file2) => file2.basename === fileName - ); - const el = document.body.createEl("a"); - el.addClass("internal-link"); - if (!file) - el.addClass("is-unresolved"); - el.setAttr("data-href", fileName); - el.setAttr("href", fileName); - el.setAttr("target", "_blank"); - el.setAttr("rel", "noopener"); - if (alias) { - el.setText(alias[0].substring(1)); - el.setAttr("aria-label-position", "top"); - el.setAttr("aria-label", fileName); - } else { - el.setText(fileName); - } - el.remove(); - markdown = markdown.replace(link, el.outerHTML); - }); - return markdown; -}; -var replaceExternalLinks = (markdown) => { - const matches = Array.from(markdown.matchAll(EXTERNAL_LINK_REGEX)); - matches.forEach((match) => { - const link = match[0]; - markdown = markdown.replace( - link, - `${link}` - ); - }); - return markdown; -}; -var markdownToHtml = (markdown) => { - markdown = md.renderInline(markdown, {}); - markdown = replaceObsidianLinks(markdown); - markdown = replaceExternalLinks(markdown); - return markdown; -}; -var parseTableFromMarkdown = (data) => { - const tokens = md.parse(data, {}); - let parsedFrontmatter; - let shouldParseFrontMatter = false; - for (let i2 = 0; i2 < tokens.length; i2++) { - const { type, content } = tokens[i2]; - if (type === "hr") - shouldParseFrontMatter = true; - else if (type === "inline" && shouldParseFrontMatter) { - shouldParseFrontMatter = false; - parsedFrontmatter = content.split("\n"); - break; - } - } - const parsedCells = []; - let shouldParseTable = false; - let shouldParseRow = false; - let numColumns = 0; - let numRows = 0; - for (let i2 = 0; i2 < tokens.length; i2++) { - const { type, content } = tokens[i2]; - if (type === "table_open") - shouldParseTable = true; - else if (type === "table_close") - shouldParseTable = false; - else if (type === "tr_open") - shouldParseRow = true; - else if (type === "tr_close") { - shouldParseRow = false; - numRows++; - } else if (type === "inline" && shouldParseTable && shouldParseRow) { - let markdown = content; - markdown = replaceUnescapedPipes(markdown); - parsedCells.push(markdown); - if (numRows === 0) - numColumns++; - } - } - return { - parsedCells, - parsedFrontmatter, - numRows, - numColumns - }; -}; -var throwTableError = (tableId, message) => { - throw new Error(`${tableId}: ${message}`); -}; -var validateParsedTable = (parsedTable, tableId) => { - const { parsedFrontmatter, parsedCells, numColumns, numRows } = parsedTable; - if (parsedFrontmatter.length < 2) - throwTableError( - tableId, - "missing frontmatter key 'columnIds' or 'rowIds'" - ); - if (parsedCells.length === 0) - throwTableError(tableId, "file exists but no markdown was found"); - const columnIds = JSON.parse( - parsedFrontmatter[0].split("columnIds: ")[1] - ); - const rowIds = JSON.parse( - parsedFrontmatter[1].split("rowIds: ")[1] - ); - if (columnIds.length !== numColumns) - throwTableError(tableId, "missing column ids"); - if (rowIds.length !== numRows) - throwTableError(tableId, "missing rows ids"); - columnIds.forEach((id) => { - if (!id.match(COLUMN_ID_REGEX)) - throwTableError(tableId, `invalid column id "${id}"`); - }); - rowIds.forEach((id) => { - if (!id.match(ROW_ID_REGEX)) - throwTableError(tableId, `invalid row id "${id}"`); - }); - return { - columnIds, - rowIds - }; -}; -var parseTableModelFromParsedTable = (table) => { - const { numRows, numColumns } = table; - const columnIds = Array(numColumns).fill(0).map((_i) => randomColumnId()); - const rowIds = Array(numRows).fill(0).map((_i) => randomRowId()); - return parseTableModel(table, columnIds, rowIds); -}; -var parseTableModel = (table, columnIds, rowIds) => { - const model = { - columnIds: [], - rowIds: [], - cells: [] - }; - const { numRows, numColumns, parsedCells } = table; - for (let y2 = 0; y2 < numRows; y2++) { - for (let x2 = 0; x2 < numColumns; x2++) { - if (y2 === 0) - model.columnIds.push(columnIds[x2]); - if (x2 === 0) - model.rowIds.push(rowIds[y2]); - const markdown = parsedCells[x2 + y2 * numColumns]; - const html = markdownToHtml(markdown); - model.cells.push({ - id: randomCellId(), - columnId: columnIds[x2], - rowId: rowIds[y2], - markdown, - html, - isHeader: y2 === 0 - }); - } - } - return model; -}; -var parseTableModelFromFileData = (data, tableId) => { - const parsedTable = parseTableFromMarkdown(data); - const { columnIds, rowIds } = validateParsedTable(parsedTable, tableId); - return parseTableModel(parsedTable, columnIds, rowIds); -}; -var findTableModel = (plugin, tableId) => __async(void 0, null, function* () { - const { file, isNewFile } = yield findTableFile(plugin, tableId); - if (isNewFile) - yield plugin.app.vault.modify(file, generateEmptyMarkdownTable()); - const data = yield app.vault.read(file); - return parseTableModelFromFileData(data, tableId); -}); -var validateSettings = (plugin) => { - const { tableFolder } = plugin.settings; - if (tableFolder.match(SLASH_REGEX)) - throw new Error( - "Table definition folder cannot include forward or back slashes. Please change it in the plugin settings." - ); -}; -var deserializeTable = (plugin, tableId) => __async(void 0, null, function* () { - const shouldDebug = plugin.settings.shouldDebug; - if (plugin.settings.shouldClear) { - console.log("Clearing previous NLT plugin settings"); - plugin.settings = __spreadValues({}, DEFAULT_SETTINGS); - plugin.settings.shouldClear = false; - yield plugin.saveSettings(); - } - validateSettings(plugin); - const model = yield findTableModel(plugin, tableId); - logVar( - shouldDebug, - FILE_NAME, - "deserializeTable", - "Loaded table model from definition file", - model - ); - let tableState = { - model, - settings: { - columns: {}, - rows: {} - }, - pluginVersion: CURRENT_PLUGIN_VERSION - }; - const savedState = plugin.settings.data[tableId]; - if (savedState) { - const { pluginVersion, settings } = savedState; - logVar( - shouldDebug, - FILE_NAME, - "deserializeTable", - "Found cached table settings", - settings - ); - tableState.settings = settings; - if (pluginVersion < CURRENT_PLUGIN_VERSION) { - } - } - model.columnIds.forEach((id) => { - if (!tableState.settings.columns[id]) - tableState.settings.columns[id] = __spreadValues({}, DEFAULT_COLUMN_SETTINGS); - }); - model.rowIds.forEach((id, i2) => { - if (!tableState.settings.rows[id]) { - tableState.settings.rows[id] = __spreadValues({}, DEFAULT_ROW_SETTINGS); - tableState.settings.rows[id].creationDate = Date.now() + i2; - } - }); - Object.keys(tableState.settings.columns).forEach((key) => { - if (!model.columnIds.includes(key)) - delete tableState.settings.columns[key]; - }); - Object.keys(tableState.settings.rows).forEach((key) => { - if (!model.rowIds.includes(key)) - delete tableState.settings.rows[key]; - }); - plugin.settings.data[tableId] = tableState; - yield plugin.saveSettings(); - return tableState; -}); - -// src/components/Wrap/index.tsx -var import_jsx_runtime41 = __toESM(require_jsx_runtime()); -function Stack2({ - spacingX = "md", - spacingY = "md", - style: style3, - children -}) { - function findSpacing(spacing2) { - let gap2 = ""; - if (spacing2 === "sm") { - gap2 = "var(--nlt-spacing--sm)"; - } else if (spacing2 === "md") { - gap2 = "var(--nlt-spacing--md)"; - } else if (spacing2 === "lg") { - gap2 = "var(--nlt-spacing--lg)"; - } else if (spacing2 === "xl") { - gap2 = "var(--nlt-spacing--xl)"; - } else if (spacing2 === "2xl") { - gap2 = "var(--nlt-spacing--2xl)"; - } - return gap2; - } - const rowGap2 = findSpacing(spacingX); - const columnGap2 = findSpacing(spacingY); - return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { - style: __spreadProps(__spreadValues({}, style3), { - display: "flex", - flexWrap: "wrap", - rowGap: rowGap2, - columnGap: columnGap2 - }), - children - }); -} - -// src/components/TagCellEdit/index.tsx -var import_jsx_runtime42 = __toESM(require_jsx_runtime()); -var MenuHeader = ({ - isDarkMode, - rowId, - columnId, - tags, - inputText, - onInputTextChange, - onRemoveTag -}) => { - return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { - className: "NLT__tag-menu-header", - children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(Stack2, { - spacingX: "sm", - style: { overflow: "hidden" }, - children: [ - tags.filter( - (tag) => tag.cells.find( - (c2) => c2.rowId === rowId && c2.columnId === columnId - ) - ).map((tag) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Tag, { - isDarkMode, - id: tag.id, - color: tag.color, - html: tag.html, - showRemove: true, - onRemoveClick: (tagId) => onRemoveTag(tagId) - }, tag.id)), - /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("input", { - className: "NLT__tag-input", - autoFocus: true, - type: "text", - value: inputText, - onChange: onInputTextChange - }) - ] - }) - }); -}; -var MenuBody = ({ - isDarkMode, - tags, - inputText, - generatedColor, - onAddTag, - onTagClick, - onColorChange -}) => { - const found = tags.find((tag) => tag.markdown === inputText); - const filteredTags = tags.filter( - (tag) => tag.markdown.includes(inputText) - ); - return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { - className: "NLT__tag-menu-body", - children: [ - /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("p", { - className: "NLT__tag-menu-text", - children: "Select an option or create one" - }), - /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { - style: { - overflowY: "scroll", - height: "140px" - }, - children: [ - !found && inputText !== "" && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(CreateTag, { - isDarkMode, - markdown: inputText, - html: markdownToHtml(inputText), - color: generatedColor, - onAddTag - }, "create-tag"), - filteredTags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectableTag, { - isDarkMode, - id: tag.id, - color: tag.color, - html: tag.html, - onColorChange, - onClick: onTagClick - }, tag.id)) - ] - }) - ] - }); -}; -function TagCellEdit({ - tags, - rowId, - columnId, - onTagClick, - onAddTag, - onColorChange, - onRemoveTag -}) { - const [inputText, setInputText] = (0, import_react12.useState)(""); - const [generatedColor] = (0, import_react12.useState)(randomColor()); - const dispatch = useAppDispatch(); - const { isDarkMode } = useAppSelector((state) => state.global); - function handleInputTextChange(e) { - if (e.target.value.match(/\s/)) - return; - setInputText(e.target.value); - } - function handleAddTag(markdown, html, color2) { - onAddTag(markdown, html, color2); - setInputText(""); - dispatch(closeTopLevelMenu()); - } - return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { - className: "NLT__tag-menu", - children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { - className: "NLT__tag-menu-container", - children: [ - /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(MenuHeader, { - isDarkMode, - rowId, - columnId, - inputText, - tags, - onInputTextChange: handleInputTextChange, - onRemoveTag - }), - /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(MenuBody, { - isDarkMode, - inputText, - tags, - generatedColor, - onAddTag: handleAddTag, - onTagClick, - onColorChange - }) - ] - }) - }); -} - -// src/components/DateCellEdit/index.tsx -var import_react_datepicker = __toESM(require_react_datepicker_min()); -var import_jsx_runtime43 = __toESM(require_jsx_runtime()); -function DateCellEdit({ content, onDateChange }) { - let selectedDate = new Date(); - if (isValidCellContent(content, "date" /* DATE */)) - selectedDate = new Date(content); - function handleChange(date) { - const updatedContent = dateToString(date); - onDateChange(updatedContent); - } - return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_datepicker.default, { - className: "NLT__date-input", - autoFocus: true, - selected: selectedDate, - onChange: handleChange, - dateFormat: "yyyy/MM/dd", - showYearDropdown: true, - dateFormatCalendar: "MMMM", - yearDropdownItemNumber: 15, - scrollableYearDropdown: true - }); -} - -// src/components/MultiTagCell/index.tsx -var import_jsx_runtime44 = __toESM(require_jsx_runtime()); -function MultiTagCell({ isDarkMode, tags }) { - return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { - className: "NLT__multi-tag-cell", - children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Stack2, { - children: tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Tag, { - isDarkMode, - html: tag.html, - color: tag.color - }, tag.id)) - }) - }); -} - -// src/components/EditableTd/index.tsx -var import_jsx_runtime45 = __toESM(require_jsx_runtime()); -function EditableTd({ - cellId, - columnId, - rowId, - markdown, - html, - columnType, - tags, - width: width2, - shouldWrapOverflow, - useAutoWidth, - onRemoveTagClick, - onColorChange, - onTagClick, - onContentChange, - onAddTag -}) { - const menu = useMenu(0 /* ONE */, true); - const isOpen = useAppSelector((state) => isMenuOpen(state, menu)); - const { positionUpdateTime } = useAppSelector((state) => state.menu); - const dispatch = useAppDispatch(); - const { isDarkMode } = useAppSelector((state) => state.global); - const { position: position2, ref: positionRef } = usePositionRef([ - positionUpdateTime, - markdown.length, - shouldWrapOverflow, - useAutoWidth, - width2 - ]); - function handleCellContextClick() { - return __async(this, null, function* () { - try { - yield navigator.clipboard.writeText(markdown); - new import_obsidian3.Notice("Copied text to clipboard"); - } catch (err) { - console.log(err); - } - }); - } - function handleCellClick(e) { - if (columnType === "checkbox" /* CHECKBOX */) { - let isChecked = markdown.includes("x"); - if (isChecked) { - handleCheckboxChange("[ ]"); - } else { - handleCheckboxChange("[x]"); - } - } else { - const el = e.target; - if (el.nodeName === "A") - return; - dispatch(openMenu(menu)); - } - } - function handleAddTag(markdown2, html2, color2) { - onAddTag( - cellId, - columnId, - rowId, - markdown2, - html2, - color2, - columnType === "multi-tag" /* MULTI_TAG */ - ); - } - function handleRemoveTagClick(tagId) { - onRemoveTagClick(cellId, columnId, rowId, tagId); - } - function handleColorChange(tagId, colorId) { - onColorChange(columnId, tagId, colorId); - } - function handleTagClick(tagId) { - onTagClick( - cellId, - columnId, - rowId, - tagId, - columnType === "multi-tag" /* MULTI_TAG */ - ); - } - function handleTextInputChange(updatedMarkdown) { - onContentChange(cellId, updatedMarkdown); - } - function handleNumberInputChange(updatedMarkdown) { - onContentChange(cellId, updatedMarkdown); - } - function handleDateChange(updatedMarkdown) { - onContentChange(cellId, updatedMarkdown); - } - function handleCheckboxChange(updatedMarkdown) { - onContentChange(cellId, updatedMarkdown); - } - function renderCell() { - switch (columnType) { - case "text" /* TEXT */: - return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(TextCell, { - content: html, - shouldWrapOverflow, - useAutoWidth - }); - case "number" /* NUMBER */: - return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(NumberCell, { - content: html, - shouldWrapOverflow, - useAutoWidth - }); - case "tag" /* TAG */: { - const currentTag = tags.find( - (t2) => t2.cells.find( - (c2) => c2.rowId === rowId && c2.columnId === columnId - ) - ); - if (currentTag) { - return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(TagCell, { - isDarkMode, - html: currentTag.html, - color: currentTag.color - }); - } else { - return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, {}); - } - } - case "multi-tag" /* MULTI_TAG */: { - const filteredTags = tags.filter( - (t2) => t2.cells.find( - (c2) => c2.rowId === rowId && c2.columnId === columnId - ) - ); - return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(MultiTagCell, { - isDarkMode, - tags: filteredTags - }); - } - case "date" /* DATE */: - return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(DateCell, { - content: html - }); - case "checkbox" /* CHECKBOX */: - return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(CheckboxCell, { - content: html, - onCheckboxChange: handleCheckboxChange - }); - default: - return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, {}); - } - } - const { - width: measuredWidth, - height: measuredHeight, - top: top2, - left: left2 - } = position2; - function findHeight() { - if (useAutoWidth || !shouldWrapOverflow) - return 100; - return measuredHeight + 2; - } - return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, { - children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("td", { - className: "NLT__td", - ref: positionRef, - onClick: handleCellClick, - onContextMenu: handleCellContextClick, - children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { - className: "NLT__td-container", - style: { - width: width2 - }, - children: [ - isOpen && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Menu, { - id: menu.id, - isOpen, - top: top2 - 2, - left: left2, - minWidth: columnType === "multi-tag" /* MULTI_TAG */ || columnType === "tag" /* TAG */ ? 250 : 150, - width: measuredWidth, - height: findHeight(), - children: [ - columnType === "text" /* TEXT */ && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(TextCellEdit, { - content: markdown, - onInputChange: handleTextInputChange - }), - columnType === "number" /* NUMBER */ && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(NumberCellEdit, { - content: markdown, - onInputChange: handleNumberInputChange - }), - (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */) && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(TagCellEdit, { - tags, - rowId, - columnId, - onColorChange: handleColorChange, - onAddTag: handleAddTag, - onRemoveTag: handleRemoveTagClick, - onTagClick: handleTagClick - }), - columnType === "date" /* DATE */ && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(DateCellEdit, { - content: markdown, - onDateChange: handleDateChange - }) - ] - }), - /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { - className: "NLT__td-cell-container NLT__td-cell-padding", - children: renderCell() - }) - ] - }) - }) - }); -} - -// src/components/Table/index.tsx -var import_react13 = __toESM(require_react()); -var import_jsx_runtime46 = __toESM(require_jsx_runtime()); -function Table({ headers, rows, footers }) { - return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("table", { - className: "NLT__table", - children: [ - /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("thead", { - className: "NLT__thead", - children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("tr", { - className: "NLT__tr", - children: headers.map((header) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react13.default.Fragment, { - children: header.component - }, header.id)) - }) - }), - /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("tbody", { - className: "NLT__tbody", - children: rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("tr", { - className: "NLT__tr", - children: row.component - }, row.id)) - }), - /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("tfoot", { - className: "NLT__tfoot", - children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("tr", { - className: "NLT__tr", - children: footers.map((footer) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react13.default.Fragment, { - children: footer.component - }, footer.id)) - }) - }) - ] - }); -} - -// src/components/RowMenu/components/RowMenuItem/index.tsx -var import_jsx_runtime47 = __toESM(require_jsx_runtime()); -function RowMenuItem({ icon, content, onClick }) { - return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { - onClick: () => onClick(), - className: "NLT__drag-menu-item NLT__selectable", - children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(Stack, { - children: [ - /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Icon, { - icon - }), - /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { - className: "NLT__p", - children: content - }) - ] - }) - }); -} - -// src/components/RowMenu/index.tsx -var import_jsx_runtime48 = __toESM(require_jsx_runtime()); -function RowMenu({ rowId, onDeleteClick }) { - const menu = useMenu(0 /* ONE */); - const dispatch = useAppDispatch(); - const isOpen = useAppSelector((state) => isMenuOpen(state, menu)); - const positionUpdateTime = useAppSelector( - (state) => state.menu.positionUpdateTime - ); - const { ref, position: position2 } = usePositionRef([positionUpdateTime]); - function handleButtonClick(e) { - if (isOpen) { - dispatch(closeTopLevelMenu()); - } else { - dispatch(openMenu(menu)); - } - } - function handleDeleteClick(rowId2) { - onDeleteClick(rowId2); - dispatch(closeTopLevelMenu()); - } - return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { - ref, - children: [ - /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Icon, { - icon: "MoreHoriz" /* MORE_HORIZ */ - }), - onClick: (e) => handleButtonClick(e) - }), - /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Menu, { - id: menu.id, - isOpen, - top: position2.top + position2.height, - left: position2.left, - children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { - className: "NLT__drag-menu", - children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(RowMenuItem, { - icon: "Delete" /* DELETE */, - content: "Delete", - onClick: () => handleDeleteClick(rowId) - }) - }) - }) - ] - }); -} - -// src/components/EditableTh/index.tsx -var import_react15 = __toESM(require_react()); - -// src/components/HeaderMenu/index.tsx -var import_react14 = __toESM(require_react()); - -// src/components/HeaderMenu/components/MenuItem/index.tsx -var import_jsx_runtime49 = __toESM(require_jsx_runtime()); -function MenuItem({ - icon, - content, - onClick, - selected = false -}) { - let className = "NLT__header-menu-item NLT__selectable"; - if (selected) - className += " NLT__selected"; - return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("li", { - className, - onClick: () => onClick(), - children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Stack, { - children: [ - icon !== null && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Icon, { - icon - }), - /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { - className: "NLT__p", - children: content - }) - ] - }) - }); -} - -// src/components/HeaderMenu/components/Submenu/index.tsx -var import_jsx_runtime50 = __toESM(require_jsx_runtime()); -function Submenu({ title, children, onBackClick }) { - return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_jsx_runtime50.Fragment, { - children: [ - /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Stack, { - children: [ - /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Icon, { - icon: "KeyboardBackspace" /* KEYBOARD_BACKSPACE */ - }), - onClick: () => onBackClick() - }), - /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { - className: "NLT__header-menu-title", - children: title - }) - ] - }), - /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("hr", { - className: "NLT__hr" - }), - /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { - children - }) - ] - }); -} - -// src/components/Switch/index.tsx -var import_jsx_runtime51 = __toESM(require_jsx_runtime()); -function Switch({ isChecked, onToggle }) { - return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("label", { - className: "NLT__switch", - children: [ - /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("input", { - type: "checkbox", - checked: isChecked, - onChange: () => { - }, - onClick: (e) => { - e.stopPropagation(); - onToggle(!isChecked); - } - }), - /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { - className: "NLT__slider" - }) - ] - }); -} - -// src/components/HeaderMenu/components/EditSubmenu/index.tsx -var import_jsx_runtime52 = __toESM(require_jsx_runtime()); -function EditMenu({ - canDeleteColumn, - title, - cellId, - columnId, - columnType, - markdown, - shouldWrapOverflow, - useAutoWidth, - onNameChange, - onAutoWidthToggle, - onWrapOverflowToggle, - onBackClick, - onDeleteClick -}) { - return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Submenu, { - title, - onBackClick, - children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(Stack, { - spacing: "sm", - isVertical: true, - children: [ - /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { - children: [ - /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { - className: "NLT__label", - children: "Header Name" - }), - /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("input", { - className: "NLT__header-menu-input", - autoFocus: true, - value: markdown, - onChange: (e) => onNameChange(cellId, e.target.value) - }) - ] - }), - /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { - children: [ - /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { - className: "NLT__label", - children: "Auto Width" - }), - /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Switch, { - isChecked: useAutoWidth, - onToggle: (value) => onAutoWidthToggle(columnId, value) - }) - ] - }), - !useAutoWidth && columnType === "text" /* TEXT */ && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { - children: [ - /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { - className: "NLT__label", - children: "Wrap Overflow" - }), - /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Switch, { - isChecked: shouldWrapOverflow, - onToggle: (value) => onWrapOverflowToggle(columnId, value) - }) - ] - }), - canDeleteColumn && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button, { - onClick: () => onDeleteClick(columnId), - children: "Delete" - }) - ] - }) - }); -} - -// src/components/HeaderMenu/constants.ts -var SUBMENU_ITEM = { - EDIT: { - name: "edit", - content: "Edit", - icon: "Edit" /* EDIT */ - }, - SORT: { - name: "sort", - content: "Sort", - icon: "Sort" /* SORT */ - }, - MOVE: { - name: "move", - content: "Move", - icon: "MoveUp" /* MOVE_UP */ - }, - INSERT: { - name: "insert", - content: "Insert", - icon: "KeyboardDoubleArrowRight" /* KEYBOARD_DOUBLE_ARROW_RIGHT */ - }, - TYPE: { - name: "type", - content: "Type", - icon: "TextSnippet" /* TEXT_SNIPPET */ - } -}; -var TYPE_ITEMS = [ - { name: "text", content: "Text", type: "text" /* TEXT */ }, - { name: "number", content: "Number", type: "number" /* NUMBER */ }, - { name: "tag", content: "Tag", type: "tag" /* TAG */ }, - { name: "multi-tag", content: "Multi-Tag", type: "multi-tag" /* MULTI_TAG */ }, - { name: "date", content: "Date", type: "date" /* DATE */ }, - { name: "checkbox", content: "Checkbox", type: "checkbox" /* CHECKBOX */ } -]; -var SORT_MENU_ITEM = { - ASC: { - name: "asc" /* ASC */, - content: "Ascending", - icon: 0 /* ARROW_UPWARD */ - }, - DESC: { - name: "desc" /* DESC */, - content: "Descending", - icon: 1 /* ARROW_DOWNWARD */ - } -}; - -// src/components/HeaderMenu/components/SortSubmenu/index.tsx -var import_jsx_runtime53 = __toESM(require_jsx_runtime()); -function SortSubmenu({ - title, - columnSortDir, - onSortClick, - onBackClick -}) { - return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Submenu, { - title, - onBackClick, - children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("ul", { - className: "NLT__header-menu-ul", - children: Object.values(SORT_MENU_ITEM).map((item) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(MenuItem, { - icon: item.icon && item.icon, - content: `${item.content}`, - onClick: () => onSortClick(item.name), - selected: columnSortDir === item.name - }, item.name)) - }) - }); -} - -// src/components/HeaderMenu/components/InsertSubmenu/index.tsx -var import_jsx_runtime54 = __toESM(require_jsx_runtime()); -function InsertSubmenu({ - title, - onInsertClick, - onBackClick -}) { - return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Submenu, { - title, - onBackClick, - children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("ul", { - className: "NLT__header-menu-ul", - children: [ - /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(MenuItem, { - icon: "KeyboardDoubleArrowLeft" /* KEYBOARD_DOUBLE_ARROW_LEFT */, - content: "Insert Left", - onClick: () => onInsertClick(false) - }), - /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(MenuItem, { - icon: "KeyboardDoubleArrowRight" /* KEYBOARD_DOUBLE_ARROW_RIGHT */, - content: "Insert Right", - onClick: () => onInsertClick(true) - }) - ] - }) - }); -} - -// src/components/HeaderMenu/components/MoveSubmenu/index.tsx -var import_jsx_runtime55 = __toESM(require_jsx_runtime()); -function MoveSubmenu({ - title, - columnIndex, - numColumns, - onMoveClick, - onBackClick -}) { - return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Submenu, { - title, - onBackClick, - children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("ul", { - className: "NLT__header-menu-ul", - children: [ - columnIndex !== 0 && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(MenuItem, { - icon: "KeyboardDoubleArrowLeft" /* KEYBOARD_DOUBLE_ARROW_LEFT */, - content: "Move Left", - onClick: () => onMoveClick(false) - }), - columnIndex !== numColumns - 1 && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(MenuItem, { - icon: "KeyboardDoubleArrowRight" /* KEYBOARD_DOUBLE_ARROW_RIGHT */, - content: "Move Right", - onClick: () => onMoveClick(true) - }) - ] - }) - }); -} - -// src/components/HeaderMenu/components/TypeSubmenu/index.tsx -var import_jsx_runtime56 = __toESM(require_jsx_runtime()); -function TypeSubmenu({ - title, - columnType, - onTypeClick, - onBackClick -}) { - return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Submenu, { - title, - onBackClick, - children: TYPE_ITEMS.map((item) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(MenuItem, { - icon: null, - content: item.content, - onClick: () => onTypeClick(item.type), - selected: item.type === columnType - }, item.name)) - }); -} - -// src/components/HeaderMenu/index.tsx -var import_jsx_runtime57 = __toESM(require_jsx_runtime()); -var SubmenuList = ({ numColumns, onOptionClick }) => { - return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment, { - children: Object.values(SUBMENU_ITEM).filter((value) => { - if (numColumns === 1 && value.name === SUBMENU_ITEM.MOVE.name) - return false; - return true; - }).map((item) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(MenuItem, { - content: item.content, - icon: item.icon, - onClick: () => onOptionClick(item) - }, item.name)) - }); -}; -function HeaderMenu({ - isOpen, - cellId, - id, - top: top2, - left: left2, - markdown, - canDeleteColumn, - columnType, - columnSortDir, - columnId, - columnIndex, - numColumns, - useAutoWidth, - shouldWrapOverflow, - onTypeSelect, - onSortSelect, - onDeleteClick, - onInsertColumnClick, - onMoveColumnClick, - onClose, - onWrapOverflowToggle, - onAutoWidthToggle, - onNameChange -}) { - const [submenu, setSubmenu] = (0, import_react14.useState)(null); - function handleMoveColumnClick(columnId2, moveRight) { - onMoveColumnClick(columnId2, moveRight); - onClose(); - setSubmenu(null); - } - function handleSortClick(columnId2, sortDir) { - onSortSelect(columnId2, sortDir); - onClose(); - setSubmenu(null); - } - function handleInsertColumnClick(columnId2, insertRight) { - onInsertColumnClick(columnId2, insertRight); - onClose(); - setSubmenu(null); - } - function handleTypeClick(columnId2, type) { - onTypeSelect(columnId2, type); - onClose(); - setSubmenu(null); - } - function handleDeleteClick(columnId2) { - if (window.confirm("Are you sure you want to delete this column?")) { - onDeleteClick(columnId2); - onClose(); - setSubmenu(null); - } - } - function handleBackClick() { - setSubmenu(null); - } - return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Menu, { - isOpen, - id, - top: top2, - left: left2, - maxWidth: 175, - children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { - className: "NLT__header-menu", - children: [ - submenu === null && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(SubmenuList, { - numColumns, - onOptionClick: setSubmenu - }), - submenu && submenu.name === SUBMENU_ITEM.EDIT.name && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(EditMenu, { - canDeleteColumn, - cellId, - title: submenu.content, - markdown, - columnType, - columnId, - useAutoWidth, - shouldWrapOverflow, - onBackClick: handleBackClick, - onAutoWidthToggle, - onWrapOverflowToggle, - onDeleteClick: handleDeleteClick, - onNameChange - }), - submenu && submenu.name === SUBMENU_ITEM.INSERT.name && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(InsertSubmenu, { - title: submenu.content, - onInsertClick: (isRightInsert) => handleInsertColumnClick(columnId, isRightInsert), - onBackClick: handleBackClick - }), - submenu && submenu.name === SUBMENU_ITEM.SORT.name && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(SortSubmenu, { - title: submenu.content, - columnSortDir, - onSortClick: (sortDir) => handleSortClick(columnId, sortDir), - onBackClick: handleBackClick - }), - submenu && submenu.name === SUBMENU_ITEM.MOVE.name && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(MoveSubmenu, { - title: submenu.content, - columnIndex, - numColumns, - onMoveClick: (isRightMove) => handleMoveColumnClick(columnId, isRightMove), - onBackClick: handleBackClick - }), - submenu && submenu.name === SUBMENU_ITEM.TYPE.name && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(TypeSubmenu, { - title: submenu.content, - columnType, - onTypeClick: (type) => handleTypeClick(columnId, type), - onBackClick: handleBackClick - }) - ] - }) - }); -} - -// src/services/table/constants.ts -var MIN_COLUMN_WIDTH = 40; - -// src/components/EditableTh/index.tsx -var import_jsx_runtime58 = __toESM(require_jsx_runtime()); -function EditableTh({ - cellId, - columnIndex, - columnId, - width: width2, - markdown, - html, - useAutoWidth, - shouldWrapOverflow, - type, - sortDir, - numColumns, - onWidthChange, - onInsertColumnClick, - onMoveColumnClick, - onSortSelect, - onTypeSelect, - onDeleteClick, - onWrapOverflowToggle, - onAutoWidthToggle, - onNameChange -}) { - const mouseDownX = (0, import_react15.useRef)(0); - const isResizing = (0, import_react15.useRef)(false); - const menu = useMenu(0 /* ONE */); - const dispatch = useAppDispatch(); - const isOpen = useAppSelector((state) => isMenuOpen(state, menu)); - const { positionUpdateTime } = useAppSelector((state) => state.menu); - const { position: position2, ref: positionRef } = usePositionRef([ - markdown, - html, - width2, - useAutoWidth, - shouldWrapOverflow, - positionUpdateTime - ]); - function handleHeaderClick(e) { - if (e.target instanceof HTMLElement) { - const el = e.target; - if (!el.className.includes("NLT__th")) - return; - } else { - return; - } - if (isResizing.current) - return; - if (isOpen) { - closeHeaderMenu(); - } else { - openHeaderMenu(); - } - } - function openHeaderMenu() { - dispatch(openMenu(menu)); - } - function closeHeaderMenu() { - dispatch(closeTopLevelMenu()); - } - function handleMouseDown(e) { - mouseDownX.current = e.pageX; - isResizing.current = true; - } - function handleMouseMove(e) { - if (width2.match(CSS_MEASUREMENT_PIXEL_REGEX)) { - const oldWidth = pxToNum(width2); - const dist = e.pageX - mouseDownX.current; - const newWidth = oldWidth + dist; - if (newWidth < MIN_COLUMN_WIDTH) - return; - onWidthChange(columnId, numToPx(newWidth)); - } - } - function handleMouseUp() { - window.removeEventListener("mousemove", handleMouseMove); - window.removeEventListener("mouseup", handleMouseUp); - setTimeout(() => { - isResizing.current = false; - }, 100); - } - const { top: top2, left: left2, height: height2 } = position2; - return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("th", { - className: "NLT__th NLT__selectable", - ref: positionRef, - onClick: handleHeaderClick, - children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { - className: "NLT__th-container", - style: { - width: width2 - }, - children: [ - /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(HeaderMenu, { - isOpen, - top: top2, - left: left2, - canDeleteColumn: numColumns > 1, - columnId, - cellId, - shouldWrapOverflow, - useAutoWidth, - id: menu.id, - markdown, - columnSortDir: sortDir, - columnType: type, - columnIndex, - numColumns, - onSortSelect, - onMoveColumnClick, - onInsertColumnClick, - onTypeSelect, - onDeleteClick, - onClose: closeHeaderMenu, - onAutoWidthToggle, - onWrapOverflowToggle, - onNameChange - }), - /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { - className: "NLT__th-content", - children: html_react_parser_default(html) - }), - /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { - className: "NLT__th-resize-container", - children: !useAutoWidth && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { - className: "NLT__th-resize", - onMouseDown: (e) => { - closeHeaderMenu(); - e.preventDefault(); - handleMouseDown(e); - window.addEventListener( - "mousemove", - handleMouseMove - ); - window.addEventListener( - "mouseup", - handleMouseUp - ); - }, - onClick: (e) => { - e.stopPropagation(); - } - }) - }) - ] - }) - }); -} - -// src/components/OptionBar/index.tsx -var import_react16 = __toESM(require_react()); -var import_jsx_runtime59 = __toESM(require_jsx_runtime()); -var SortBubble = ({ - isDarkMode, - sortDir, - content, - onRemoveClick -}) => { - const color2 = findColorClass(isDarkMode, "blue"); - let className = "NLT__sort-bubble " + color2; - return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { - className, - children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Stack, { - spacing: "sm", - children: [ - sortDir === "asc" /* ASC */ ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { - icon: 0 /* ARROW_UPWARD */ - }) : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { - icon: 1 /* ARROW_DOWNWARD */ - }), - /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { - children: content - }), - /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { - icon: "Close" /* CLOSE */ - }), - onClick: onRemoveClick - }) - ] - }) - }); -}; -var SortBubbleList = ({ bubbles, onRemoveClick }) => { - const isDarkMode = useAppSelector((state) => state.global.isDarkMode); - return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Stack, { - spacing: "sm", - children: bubbles.map((bubble, i2) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SortBubble, { - isDarkMode, - sortDir: bubble.sortDir, - content: bubble.content, - onRemoveClick: () => onRemoveClick(bubble.columnId) - }, i2)) - }); -}; -function OptionBar({ - model, - settings, - onSortRemoveClick -}) { - const bubbles = (0, import_react16.useMemo)(() => { - return model.columnIds.map((id) => { - const cell = model.cells.find( - (c2) => c2.columnId === id && c2.isHeader - ); - return cell; - }).filter((c2) => { - const { sortDir } = settings.columns[c2.columnId]; - return sortDir !== "default" /* NONE */; - }).map((c2) => { - const { sortDir } = settings.columns[c2.columnId]; - return { - columnId: c2.columnId, - content: c2.html, - sortDir - }; - }); - }, [model.cells, settings.columns]); - return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { - className: "NLT__option-bar", - children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SortBubbleList, { - bubbles, - onRemoveClick: onSortRemoveClick - }) - }); -} - -// src/services/io/serialize.ts -var FILE_NAME2 = "serialize"; -var serializeMarkdownTable = (model) => { - const { columnIds, rowIds, cells } = model; - const columnCharLengths = calcColumnCharLengths(cells); - const buffer = new TableModelStringBuffer(); - buffer.createRow(); - for (let i2 = 0; i2 < columnIds.length; i2++) { - const columnId = columnIds[i2]; - const cell = cells.find((c2) => c2.columnId === columnId && c2.isHeader); - buffer.writeCell(cell.markdown, columnCharLengths[columnId]); - } - buffer.createRow(); - for (let i2 = 0; i2 < columnIds.length; i2++) { - const columnId = columnIds[i2]; - let numChars = columnCharLengths[columnId] > 3 ? columnCharLengths[columnId] : 3; - const content = Array(numChars).fill("-").join(""); - buffer.writeCell(content, numChars); - } - for (let i2 = 1; i2 < rowIds.length; i2++) { - buffer.createRow(); - const rowId = rowIds[i2]; - const rowCells = cells.filter((cell) => cell.rowId == rowId); - for (let j2 = 0; j2 < rowCells.length; j2++) { - const { columnId, markdown } = rowCells[j2]; - buffer.writeCell(markdown, columnCharLengths[columnId]); - } - } - return buffer.toString(); -}; -var TableModelStringBuffer = class { - constructor() { - this.string = ""; - } - createRow() { - if (this.string !== "") - this.string += "\n"; - this.string += "|"; - } - writeCell(content, columnCharLength) { - this.string += " "; - this.string += content; - const numWhiteSpace = columnCharLength - content.length; - for (let i2 = 0; i2 < numWhiteSpace; i2++) - this.string += " "; - this.string += " "; - this.string += "|"; - } - toString() { - return this.string; - } -}; -var calcColumnCharLengths = (cells) => { - const columnCharLengths = {}; - for (let i2 = 0; i2 < cells.length; i2++) { - const { columnId, markdown } = cells[i2]; - if (!columnCharLengths[columnId] || columnCharLengths[columnId] < markdown.length) { - columnCharLengths[columnId] = markdown.length; - } - } - return columnCharLengths; -}; -var updateSettingsCache = (plugin, state, tableId, viewModesToUpdate) => __async(void 0, null, function* () { - const shouldDebug = plugin.settings.shouldDebug; - const settingsCopy = __spreadValues({}, plugin.settings); - settingsCopy.data = __spreadProps(__spreadValues({}, plugin.settings.data), { - [tableId]: state - }); - settingsCopy.viewModeSync = { - tableId, - viewModes: viewModesToUpdate, - eventType: "update-state" - }; - logVar( - shouldDebug, - FILE_NAME2, - "updateSettingsCache", - "Updating settings with new table state", - settingsCopy - ); - plugin.settings = settingsCopy; - return yield plugin.saveData(plugin.settings); -}); -var updateFileContent = (plugin, file, content) => __async(void 0, null, function* () { - return yield plugin.app.vault.modify(file, content); -}); -var updateSortTime = (plugin, tableId) => __async(void 0, null, function* () { - const shouldDebug = plugin.settings.shouldDebug; - const settingsCopy = __spreadValues({}, plugin.settings); - settingsCopy.viewModeSync = { - tableId, - viewModes: ["source", "preview"], - eventType: "sort-rows" - }; - logVar( - shouldDebug, - FILE_NAME2, - "updateSortTime", - "Updating settings file with new sync info", - settingsCopy - ); - plugin.settings = settingsCopy; - return yield plugin.saveData(plugin.settings); -}); -var serializeTableModel = (plugin, file, model) => __async(void 0, null, function* () { - const shouldDebug = plugin.settings.shouldDebug; - const frontmatter = serializeFrontMatter(model); - const tableMarkdown = serializeMarkdownTable(model); - const content = frontmatter + "\n\n" + tableMarkdown; - logVar( - shouldDebug, - FILE_NAME2, - "serializeTableModel", - "Updating table definition file", - content - ); - yield updateFileContent(plugin, file, content); -}); -var serializeTable = (shouldSaveModel, plugin, state, tableId, viewModesToUpdate) => __async(void 0, null, function* () { - const { model } = state; - if (shouldSaveModel) { - const { file } = yield findTableFile(plugin, tableId); - yield serializeTableModel(plugin, file, model); - } - yield updateSettingsCache(plugin, state, tableId, viewModesToUpdate); -}); - -// src/services/table/row.ts -var addRow = (prevState) => { - const rowId = randomRowId(); - const cellsCopy = [...prevState.model.cells]; - for (let i2 = 0; i2 < prevState.model.columnIds.length; i2++) { - cellsCopy.push({ - id: randomCellId(), - columnId: prevState.model.columnIds[i2], - rowId, - markdown: "", - html: "", - isHeader: false - }); - } - const settingsCopy = __spreadValues({}, prevState.settings.rows); - settingsCopy[rowId] = __spreadValues({}, DEFAULT_ROW_SETTINGS); - settingsCopy[rowId].creationDate = Date.now(); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - cells: cellsCopy, - rowIds: [...prevState.model.rowIds, rowId] - }), - settings: __spreadProps(__spreadValues({}, prevState.settings), { - rows: settingsCopy - }) - }); -}; - -// src/services/table/column.ts -var addColumn = (prevState) => { - const columnId = randomColumnId(); - const updatedColumnIds = [...prevState.model.columnIds, columnId]; - let updatedCells = [...prevState.model.cells]; - for (let i2 = 0; i2 < prevState.model.rowIds.length; i2++) { - updatedCells.push({ - id: randomCellId(), - columnId, - rowId: prevState.model.rowIds[i2], - markdown: i2 === 0 ? "New Column" : "", - html: i2 === 0 ? "New Column" : "", - isHeader: i2 === 0 - }); - } - updatedCells = sortCells( - prevState.model.rowIds, - updatedColumnIds, - updatedCells - ); - return [ - __spreadProps(__spreadValues({}, prevState.model), { - columnIds: updatedColumnIds, - cells: updatedCells - }), - __spreadProps(__spreadValues({}, prevState.settings), { - columns: __spreadProps(__spreadValues({}, prevState.settings.columns), { - [columnId]: __spreadValues({}, DEFAULT_COLUMN_SETTINGS) - }) - }) - ]; -}; -var changeColumnType = (prevState, columnId, type) => { - const { type: previousType } = prevState.settings.columns[columnId]; - if (previousType === type) - return prevState; - let tags = [...prevState.settings.columns[columnId].tags]; - if (previousType === "multi-tag" /* MULTI_TAG */ && type !== "tag" /* TAG */ || previousType === "tag" /* TAG */ && type !== "multi-tag" /* MULTI_TAG */) { - tags = tags.map((t2) => { - return __spreadProps(__spreadValues({}, t2), { - cells: [] - }); - }); - } else if (type === "tag" /* TAG */ || "multi-tag" /* MULTI_TAG */) { - const cells = prevState.model.cells.filter( - (cell) => cell.columnId === columnId && cell.markdown !== "" && !cell.isHeader - ); - cells.forEach((cell) => { - cell.markdown.split(",").map((markdownTag, i2) => { - const found = tags.find((t2) => t2.markdown === markdownTag); - if (found) { - const index = tags.indexOf(found); - if (found.cells.find( - (c2) => c2.columnId === cell.columnId && c2.rowId === cell.rowId - )) { - if (i2 > 0 && type === "tag" /* TAG */) { - tags[index].cells = tags[index].cells.filter( - (c2) => c2.columnId !== cell.columnId || c2.rowId !== cell.rowId - ); - } - } else { - tags[index].cells.push({ - columnId: cell.columnId, - rowId: cell.rowId - }); - } - return; - } - tags.push({ - id: randomTagId(), - markdown: markdownTag, - html: markdownToHtml(markdownTag), - color: randomColor(), - cells: [ - { - columnId: cell.columnId, - rowId: cell.rowId - } - ] - }); - }); - }); - } - return __spreadProps(__spreadValues({}, prevState), { - settings: __spreadProps(__spreadValues({}, prevState.settings), { - columns: __spreadProps(__spreadValues({}, prevState.settings.columns), { - [columnId]: __spreadProps(__spreadValues({}, prevState.settings.columns[columnId]), { - type, - tags - }) - }) - }) - }); -}; - -// src/services/table/tag.ts -var addNewTag = (prevState, cellId, columnId, rowId, markdown, html, color2, canAddMultiple) => { - const tags = [...prevState.settings.columns[columnId].tags]; - if (!canAddMultiple) { - const tag = tags.find( - (t2) => t2.cells.find((c2) => c2.columnId === columnId && c2.rowId === rowId) - ); - if (tag) { - const arr = tag.cells.filter( - (c2) => c2.columnId !== columnId || c2.rowId !== rowId - ); - tag.cells = arr; - } - } - tags.push({ - id: randomTagId(), - markdown, - html, - color: color2, - cells: [ - { - rowId, - columnId - } - ] - }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - cells: prevState.model.cells.map((cell) => { - if (cell.id === cellId) { - let newMarkdown = ""; - if (canAddMultiple && cell.markdown !== "") { - newMarkdown = cell.markdown + "," + markdown; - } else { - newMarkdown = markdown; - } - let newHtml = ""; - if (canAddMultiple && cell.html !== "") { - newHtml = cell.html + "," + html; - } else { - newHtml = html; - } - return __spreadProps(__spreadValues({}, cell), { - markdown: newMarkdown, - html: newHtml - }); - } - return cell; - }) - }), - settings: __spreadProps(__spreadValues({}, prevState.settings), { - columns: __spreadProps(__spreadValues({}, prevState.settings.columns), { - [columnId]: __spreadProps(__spreadValues({}, prevState.settings.columns[columnId]), { - tags - }) - }) - }) - }); -}; -var removeTag = (prevState, cellId, columnId, rowId, tagId) => { - const tags = [...prevState.settings.columns[columnId].tags]; - const tag = tags.find((t2) => t2.id === tagId); - const arr = tag.cells.filter( - (c2) => c2.columnId !== columnId || c2.rowId !== rowId - ); - tag.cells = arr; - const assignedTags = tags.filter( - (tag2) => tag2.cells.find((c2) => c2.columnId === columnId && c2.rowId === rowId) - ); - const newMarkdown = assignedTags.map((t2) => t2.markdown).join(","); - const newHtml = assignedTags.map((t2) => t2.html).join(","); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - cells: prevState.model.cells.map((cell) => { - if (cell.id === cellId) { - return __spreadProps(__spreadValues({}, cell), { - markdown: newMarkdown, - html: newHtml - }); - } - return cell; - }) - }), - settings: __spreadProps(__spreadValues({}, prevState.settings), { - columns: __spreadProps(__spreadValues({}, prevState.settings.columns), { - [columnId]: __spreadProps(__spreadValues({}, prevState.settings.columns[columnId]), { - tags - }) - }) - }) - }); -}; -var addExistingTag = (prevState, cellId, columnId, rowId, tagId, canAddMultiple) => { - const tags = [...prevState.settings.columns[columnId].tags]; - if (!canAddMultiple) { - const tag2 = tags.find( - (t2) => t2.cells.find((c2) => c2.columnId === columnId && c2.rowId === rowId) - ); - if (tag2) { - if (tag2.id === tagId) - return prevState; - const arr = tag2.cells.filter( - (c2) => c2.columnId !== columnId || c2.rowId !== rowId - ); - tag2.cells = arr; - } - } - const tag = tags.find((t2) => t2.id === tagId); - const index = tags.indexOf(tag); - tags[index].cells.push({ - rowId, - columnId - }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - cells: prevState.model.cells.map((cell) => { - if (cell.id === cellId) { - let newMarkdown = ""; - if (canAddMultiple && cell.markdown !== "") { - newMarkdown = cell.markdown + "," + tag.markdown; - } else { - newMarkdown = tag.markdown; - } - let newHtml = ""; - if (canAddMultiple && cell.html !== "") { - newHtml = cell.html + "," + tag.html; - } else { - newHtml = tag.html; - } - return __spreadProps(__spreadValues({}, cell), { - markdown: newMarkdown, - html: newHtml - }); - } - return cell; - }) - }), - settings: __spreadProps(__spreadValues({}, prevState.settings), { - columns: __spreadProps(__spreadValues({}, prevState.settings.columns), { - [columnId]: __spreadProps(__spreadValues({}, prevState.settings.columns[columnId]), { - tags - }) - }) - }) - }); -}; - -// src/services/sort/sort.ts -var sortByDir = (columnId, sortDir, rowIds, cells) => { - const rowsCopy = [...rowIds]; - rowsCopy.sort((a2, b2) => { - const cellA = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === a2 - ); - const cellB = cells.find( - (c2) => c2.columnId === columnId && c2.rowId === b2 - ); - const markdownA = cellA.markdown; - const markdownB = cellB.markdown; - if (cellA.isHeader) - return -1; - if (cellB.isHeader) - return 1; - if (markdownA === "" && markdownB !== "") - return 1; - if (markdownA !== "" && markdownB === "") - return -1; - if (markdownA === "" && markdownB === "") - return 0; - if (sortDir === "asc" /* ASC */) { - return markdownA.localeCompare(markdownB); - } else if (sortDir === "desc" /* DESC */) { - return markdownB.localeCompare(markdownA); - } - }); - return rowsCopy; -}; -var sortByCreationDate = (settings, rowIds) => { - const rowsCopy = [...rowIds]; - rowsCopy.sort((a2, b2) => { - const rowSettingsA = settings.rows[a2]; - const rowSettingsB = settings.rows[b2]; - return rowSettingsA.creationDate - rowSettingsB.creationDate; - }); - return rowsCopy; -}; -var sortRows = (prevState) => { - let headerSettings = null; - let columnId = ""; - const { settings, model } = prevState; - for (let i2 = 0; i2 < model.columnIds.length; i2++) { - const cId = model.columnIds[i2]; - if (settings.columns[cId].sortDir !== "default" /* NONE */) { - headerSettings = settings.columns[cId]; - columnId = cId; - } - } - if (!headerSettings) - return __spreadProps(__spreadValues({}, model), { - rowIds: sortByCreationDate(settings, model.rowIds) - }); - const rowsCopy = [...model.rowIds]; - const { sortDir } = headerSettings; - return { - rowIds: sortByDir(columnId, sortDir, model.rowIds, model.cells), - columnIds: model.columnIds, - cells: sortCells(rowsCopy, model.columnIds, model.cells) - }; -}; - -// src/App.tsx -var import_jsx_runtime60 = __toESM(require_jsx_runtime()); -var FILE_NAME3 = "App"; -function App2({ plugin, viewMode, tableId }) { - const [state, setTableState] = (0, import_react17.useState)({ - pluginVersion: -1, - model: { - rowIds: [], - columnIds: [], - cells: [] - }, - settings: { - columns: {}, - rows: {} - } - }); - const [isLoading, setLoading] = (0, import_react17.useState)(true); - const [saveTime, setSaveTime] = (0, import_react17.useState)({ - time: 0, - shouldSaveModel: false - }); - const [sortTime, setSortTime] = (0, import_react17.useState)(0); - const { shouldDebug } = useAppSelector((state2) => state2.global); - const dispatch = useAppDispatch(); - (0, import_react17.useEffect)(() => { - function load() { - return __async(this, null, function* () { - const tableState = yield deserializeTable(plugin, tableId); - setTableState(tableState); - setTimeout(() => { - setLoading(false); - }, 300); - }); - } - load(); - }, []); - (0, import_react17.useEffect)(() => { - if (saveTime.time !== 0) { - throttleSave(saveTime.shouldSaveModel); - } - }, [saveTime]); - const throttleSave = import_lodash.default.throttle((shouldSaveModel) => __async(this, null, function* () { - const viewModesToUpdate = []; - if (plugin.isLivePreviewEnabled()) { - viewModesToUpdate.push( - viewMode === "source" ? "preview" : "source" - ); - } - yield serializeTable( - shouldSaveModel, - plugin, - state, - tableId, - viewModesToUpdate - ); - dispatch(updateMenuPosition()); - }), 150); - const handleSaveData = (shouldSaveModel) => { - setSaveTime({ shouldSaveModel, time: Date.now() }); - }; - (0, import_react17.useEffect)(() => { - let timer = null; - function checkForSyncEvents() { - return __async(this, null, function* () { - const { - tableId: tId, - viewModes, - eventType - } = plugin.settings.viewModeSync; - if (tId) { - const mode = viewModes.find((v2) => v2 === viewMode); - if (mode && tableId === tId) { - logFunc(shouldDebug, FILE_NAME3, "checkForSyncEvents", { - tableId, - viewModes, - eventType - }); - if (eventType === "update-state") { - setTableState(plugin.settings.data[tableId]); - } else if (eventType === "sort-rows") { - handleSortRows(); - } - const modeIndex = viewModes.indexOf(mode); - plugin.settings.viewModeSync.viewModes.splice(modeIndex, 1); - if (plugin.settings.viewModeSync.viewModes.length === 0) - plugin.settings.viewModeSync.tableId = null; - yield plugin.saveSettings(); - } - } - }); - } - function viewModeSync() { - timer = setInterval(() => { - checkForSyncEvents(); - }, 50); - } - viewModeSync(); - return () => { - clearInterval(timer); - }; - }, []); - (0, import_react17.useEffect)(() => { - if (sortTime !== 0) { - setTableState((prevState) => { - return __spreadProps(__spreadValues({}, prevState), { - model: sortRows(prevState) - }); - }); - handleSaveData(true); - } - }, [sortTime]); - function handleSortRows() { - setSortTime(Date.now()); - } - function handleAddColumn() { - if (shouldDebug) - console.log("[App]: handleAddColumn called."); - setTableState((prevState) => { - const [model, settings] = addColumn(prevState); - return __spreadProps(__spreadValues({}, prevState), { - model, - settings - }); - }); - handleSaveData(true); - } - function handleAddRow() { - logFunc(shouldDebug, FILE_NAME3, "handleAddRow"); - setTableState((prevState) => { - const newState = addRow(prevState); - return newState; - }); - handleSaveData(true); - } - function handleHeaderTypeClick(columnId, type) { - logFunc(shouldDebug, FILE_NAME3, "handleHeaderTypeClick", { - columnId, - type - }); - setTableState( - (prevState) => changeColumnType(prevState, columnId, type) - ); - handleSaveData(false); - } - function handleHeaderSortSelect(columnId, sortDir) { - logFunc(shouldDebug, FILE_NAME3, "handleHeaderSortSelect", { - columnId, - sortDir - }); - setTableState((prevState) => { - const columnsCopy = __spreadValues({}, prevState.settings.columns); - Object.entries(columnsCopy).forEach((entry) => { - const [key, value] = entry; - if (value.sortDir !== "default" /* NONE */) - columnsCopy[key].sortDir = "default" /* NONE */; - if (key === columnId) - columnsCopy[key].sortDir = sortDir; - }); - return __spreadProps(__spreadValues({}, prevState), { - settings: __spreadProps(__spreadValues({}, prevState.settings), { - columns: columnsCopy - }) - }); - }); - handleSortRows(); - } - function handleCellContentChange(cellId, updatedMarkdown) { - logFunc(shouldDebug, FILE_NAME3, "handleCellContentChange", { - cellId, - updatedMarkdown - }); - setTableState((prevState) => { - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - cells: prevState.model.cells.map((cell) => { - if (cell.id === cellId) { - return __spreadProps(__spreadValues({}, cell), { - markdown: updatedMarkdown, - html: markdownToHtml(updatedMarkdown) - }); - } - return cell; - }) - }) - }); - }); - handleSaveData(true); - } - function handleAddTag(cellId, columnId, rowId, markdown, html, color2, canAddMultiple) { - logFunc(shouldDebug, FILE_NAME3, "handleAddTag", { - cellId, - columnId, - rowId, - markdown, - html, - color: color2, - canAddMultiple - }); - setTableState( - (prevState) => addNewTag( - prevState, - cellId, - columnId, - rowId, - markdown, - html, - color2, - canAddMultiple - ) - ); - handleSaveData(true); - } - function handleTagClick(cellId, columnId, rowId, tagId, canAddMultiple) { - logFunc(shouldDebug, FILE_NAME3, "handleTagClick", { - cellId, - columnId, - rowId, - tagId, - canAddMultiple - }); - setTableState( - (prevState) => addExistingTag( - prevState, - cellId, - columnId, - rowId, - tagId, - canAddMultiple - ) - ); - handleSaveData(true); - } - function handleRemoveTagClick(cellId, columnId, rowId, tagId) { - logFunc(shouldDebug, FILE_NAME3, "handleRemoveTagClick", { - cellId, - columnId, - rowId, - tagId - }); - setTableState( - (prevState) => removeTag(prevState, cellId, columnId, rowId, tagId) - ); - handleSaveData(true); - } - function handleHeaderDeleteClick(columnId) { - logFunc(shouldDebug, FILE_NAME3, "handleHeaderDeleteClick", { - columnId - }); - setTableState((prevState) => { - const columnsCopy = __spreadValues({}, prevState.settings.columns); - delete columnsCopy[columnId]; - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - columnIds: prevState.model.columnIds.filter( - (column) => column !== columnId - ), - cells: cells.filter((cell) => cell.columnId !== columnId) - }), - settings: __spreadProps(__spreadValues({}, prevState.settings), { - columns: columnsCopy - }) - }); - }); - handleSaveData(true); - } - function handleRowDeleteClick(rowId) { - logFunc(shouldDebug, FILE_NAME3, "handleRowDeleteClick", { - rowId - }); - setTableState((prevState) => { - const rowsCopy = __spreadValues({}, prevState.settings.rows); - delete rowsCopy[rowId]; - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - cells: prevState.model.cells.filter( - (cell) => cell.rowId !== rowId - ), - rowIds: prevState.model.rowIds.filter((id) => id !== rowId) - }), - settings: __spreadProps(__spreadValues({}, prevState.settings), { - rows: rowsCopy - }) - }); - }); - handleSaveData(true); - } - function handleSortRemoveClick(columnId) { - logFunc(shouldDebug, FILE_NAME3, "handleSortRemoveClick", { - columnId - }); - setTableState((prevState) => { - return __spreadProps(__spreadValues({}, prevState), { - settings: __spreadProps(__spreadValues({}, prevState.settings), { - columns: __spreadProps(__spreadValues({}, prevState.settings.columns), { - [columnId]: __spreadProps(__spreadValues({}, prevState.settings.columns[columnId]), { - sortDir: "default" /* NONE */ - }) - }) - }) - }); - }); - handleSortRows(); - } - function handleHeaderWidthChange(columnId, width2) { - logFunc(shouldDebug, FILE_NAME3, "handleHeaderWidthChange", { - columnId, - width: width2 - }); - setTableState((prevState) => { - return __spreadProps(__spreadValues({}, prevState), { - settings: __spreadProps(__spreadValues({}, prevState.settings), { - columns: __spreadProps(__spreadValues({}, prevState.settings.columns), { - [columnId]: __spreadProps(__spreadValues({}, prevState.settings.columns[columnId]), { - width: width2 - }) - }) - }) - }); - }); - handleSaveData(false); - } - function handleMoveColumnClick(columnId, moveRight) { - logFunc(shouldDebug, FILE_NAME3, "handleMoveColumnClick", { - columnId, - moveRight - }); - setTableState((prevState) => { - const { model } = prevState; - const updatedColumnIds = [...model.columnIds]; - const index = model.columnIds.indexOf(columnId); - const moveIndex = moveRight ? index + 1 : index - 1; - const old = updatedColumnIds[moveIndex]; - updatedColumnIds[moveIndex] = updatedColumnIds[index]; - updatedColumnIds[index] = old; - const updatedCells = sortCells( - model.rowIds, - updatedColumnIds, - model.cells - ); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, model), { - columnIds: updatedColumnIds, - cells: updatedCells - }) - }); - }); - handleSaveData(true); - } - function handleInsertColumnClick(columnId, insertRight) { - logFunc(shouldDebug, FILE_NAME3, "handleInsertColumnClick", { - columnId, - insertRight - }); - setTableState((prevState) => { - const { model, settings } = prevState; - const index = model.columnIds.indexOf(columnId); - const insertIndex = insertRight ? index + 1 : index; - const newColId = randomColumnId(); - const updatedColumnIds = [...model.columnIds]; - updatedColumnIds.splice(insertIndex, 0, newColId); - let updatedCells = [...model.cells]; - for (let i2 = 0; i2 < model.rowIds.length; i2++) { - updatedCells.push({ - id: randomCellId(), - columnId: newColId, - rowId: model.rowIds[i2], - markdown: i2 === 0 ? "New Column" : "", - html: i2 === 0 ? "New Column" : "", - isHeader: i2 === 0 - }); - } - updatedCells = sortCells( - model.rowIds, - updatedColumnIds, - updatedCells - ); - const settingsObj = __spreadValues({}, settings); - settingsObj.columns[newColId] = __spreadValues({}, DEFAULT_COLUMN_SETTINGS); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, model), { - columnIds: updatedColumnIds, - cells: updatedCells - }), - settings: settingsObj - }); - }); - handleSaveData(true); - } - function handleChangeColor(columnId, tagId, color2) { - setTableState((prevState) => { - const tags = [...prevState.settings.columns[columnId].tags]; - const index = tags.findIndex((t2) => t2.id === tagId); - tags[index].color = color2; - return __spreadProps(__spreadValues({}, prevState), { - settings: __spreadProps(__spreadValues({}, prevState.settings), { - columns: __spreadProps(__spreadValues({}, prevState.settings.columns), { - [columnId]: __spreadProps(__spreadValues({}, prevState.settings.columns[columnId]), { - tags - }) - }) - }) - }); - }); - handleSaveData(false); - } - function handleAutoWidthToggle(columnId, value) { - logFunc(shouldDebug, FILE_NAME3, "handleAutoWidthToggle", { - columnId, - value - }); - setTableState((prevState) => { - return __spreadProps(__spreadValues({}, prevState), { - settings: __spreadProps(__spreadValues({}, prevState.settings), { - columns: __spreadProps(__spreadValues({}, prevState.settings.columns), { - [columnId]: __spreadProps(__spreadValues({}, prevState.settings.columns[columnId]), { - useAutoWidth: value - }) - }) - }) - }); - }); - handleSaveData(false); - } - function handleWrapContentToggle(columnId, value) { - logFunc(shouldDebug, FILE_NAME3, "handleWrapContentToggle", { - columnId, - value - }); - setTableState((prevState) => { - return __spreadProps(__spreadValues({}, prevState), { - settings: __spreadProps(__spreadValues({}, prevState.settings), { - columns: __spreadProps(__spreadValues({}, prevState.settings.columns), { - [columnId]: __spreadProps(__spreadValues({}, prevState.settings.columns[columnId]), { - shouldWrapOverflow: value - }) - }) - }) - }); - }); - handleSaveData(false); - } - if (isLoading) - return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { - children: "Loading table..." - }); - const { rowIds, columnIds, cells } = state.model; - const tableIdWithMode = getUniqueTableId(tableId, viewMode); - return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { - id: tableIdWithMode, - "data-id": tableId, - className: "NLT__app", - tabIndex: 0, - children: [ - /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(OptionBar, { - model: state.model, - settings: state.settings, - onSortRemoveClick: handleSortRemoveClick - }), - /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { - className: "NLT__table-wrapper", - onScroll: () => dispatch(updateMenuPosition()), - children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Table, { - headers: [ - ...columnIds.map((columnId, i2) => { - const { - width: width2, - type, - sortDir, - shouldWrapOverflow, - useAutoWidth - } = state.settings.columns[columnId]; - const cell = cells.find( - (c2) => c2.columnId === columnId && c2.isHeader - ); - const { id, markdown, html } = cell; - return { - id, - component: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(EditableTh, { - cellId: id, - columnIndex: i2, - numColumns: columnIds.length, - columnId: cell.columnId, - width: useAutoWidth ? "max-content" : width2, - shouldWrapOverflow, - useAutoWidth, - markdown, - html, - type, - sortDir, - onSortSelect: handleHeaderSortSelect, - onInsertColumnClick: handleInsertColumnClick, - onMoveColumnClick: handleMoveColumnClick, - onWidthChange: handleHeaderWidthChange, - onDeleteClick: handleHeaderDeleteClick, - onTypeSelect: handleHeaderTypeClick, - onAutoWidthToggle: handleAutoWidthToggle, - onWrapOverflowToggle: handleWrapContentToggle, - onNameChange: handleCellContentChange - }, id) - }; - }), - { - id: randomColumnId(), - component: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("th", { - className: "NLT__th", - style: { height: "1.8rem" }, - children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { - className: "NLT__th-container", - style: { paddingLeft: "10px" }, - children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { - onClick: () => handleAddColumn(), - children: "New" - }) - }) - }) - } - ], - rows: rowIds.filter((_row, i2) => i2 !== 0).map((rowId) => { - const rowCells = cells.filter( - (cell) => cell.rowId === rowId - ); - return { - id: rowId, - component: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { - children: [ - rowCells.map((cell) => { - const { - width: width2, - type, - useAutoWidth, - shouldWrapOverflow, - tags - } = state.settings.columns[cell.columnId]; - const { id, markdown, html } = cell; - return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(EditableTd, { - cellId: id, - tags, - rowId: cell.rowId, - columnId: cell.columnId, - markdown, - html, - columnType: type, - shouldWrapOverflow, - useAutoWidth, - width: useAutoWidth ? "max-content" : width2, - onTagClick: handleTagClick, - onRemoveTagClick: handleRemoveTagClick, - onContentChange: handleCellContentChange, - onColorChange: handleChangeColor, - onAddTag: handleAddTag - }, id); - }), - /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("td", { - className: "NLT__td", - children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { - className: "NLT__td-container", - children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { - className: "NLT__td-cell-padding", - children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(RowMenu, { - rowId, - onDeleteClick: handleRowDeleteClick - }) - }) - }) - }) - ] - }) - }; - }), - footers: [0].map((_id) => { - const { width: width2, useAutoWidth } = state.settings.columns[columnIds[0]]; - return { - id: randomRowId(), - component: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { - children: [ - /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("td", { - className: "NLT__td", - children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { - className: "NLT__td-container", - style: { - width: useAutoWidth ? "max-content" : width2 - }, - children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { - className: "NLT__td-cell-container NLT__td-cell-padding", - children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { - onClick: () => handleAddRow(), - children: "New" - }) - }) - }) - }), - columnIds.map((_id2) => { - /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("td", { - className: "NLT__td" - }); - }) - ] - }) - }; - }) - }) - }) - ] - }); -} - -// src/services/redux/globalSlice.ts -var initialState2 = { isDarkMode: false, - shouldDebug: false + shouldDebug: false, + exportRenderMarkdown: true }; var globalSlice = createSlice({ name: "global", - initialState: initialState2, + initialState, reducers: { setDarkMode(state, action) { state.isDarkMode = action.payload; }, setDebugMode(state, action) { state.shouldDebug = action.payload; + }, + setExportRenderMarkdown(state, action) { + state.exportRenderMarkdown = action.payload; } } }); -var { setDarkMode, setDebugMode } = globalSlice.actions; -var globalSlice_default = globalSlice.reducer; +var { setDarkMode, setDebugMode, setExportRenderMarkdown } = globalSlice.actions; +var global_slice_default = globalSlice.reducer; -// src/services/redux/store.ts +// src/redux/global/store.ts var store = configureStore({ reducer: { - menu: menuSlice_default, - global: globalSlice_default + global: global_slice_default } }); -// src/NltTable.tsx -var import_jsx_runtime61 = __toESM(require_jsx_runtime()); -var NltTable = class extends import_obsidian4.MarkdownRenderChild { - constructor(el, plugin, tableId, viewMode) { - super(el); - this.el = el; - this.plugin = plugin; - this.tableId = tableId; - this.viewMode = viewMode; +// src/obsidian/nlt-view.tsx +var import_obsidian10 = require("obsidian"); +var import_client2 = __toESM(require_client()); + +// src/obsidian-shim/build/mount-context.tsx +var import_react = __toESM(require_react()); + +// node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs +var import_emotion_react_jsx_runtime_cjs = __toESM(require_emotion_react_jsx_runtime_cjs(), 1); + +// src/obsidian-shim/build/mount-context.tsx +var MountContext = import_react.default.createContext(null); +var useMountState = () => { + const value = import_react.default.useContext(MountContext); + if (value === null) { + throw new Error( + "useMountState() called without a in the tree." + ); } - onload() { + return value; +}; +function MountProvider({ + appId, + leaf, + filePath, + isMarkdownView, + children +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MountContext.Provider, { + value: { appId, leaf, filePath, isMarkdownView }, + children + }); +} + +// src/react/table-app/table/index.tsx +var import_react15 = __toESM(require_react()); + +// node_modules/react-virtuoso/dist/index.mjs +var import_react2 = __toESM(require_react(), 1); +var import_react_dom = __toESM(require_react_dom(), 1); +var PUBLISH = 0; +var SUBSCRIBE = 1; +var RESET = 2; +var VALUE = 4; +function compose2(a2, b2) { + return (arg) => a2(b2(arg)); +} +function thrush(arg, proc) { + return proc(arg); +} +function curry2to1(proc, arg1) { + return (arg2) => proc(arg1, arg2); +} +function curry1to0(proc, arg) { + return () => proc(arg); +} +function tap(arg, proc) { + proc(arg); + return arg; +} +function tup(...args) { + return args; +} +function call(proc) { + proc(); +} +function always(value) { + return () => value; +} +function joinProc(...procs) { + return () => { + procs.map(call); + }; +} +function isDefined(arg) { + return arg !== void 0; +} +function noop() { +} +function subscribe(emitter, subscription) { + return emitter(SUBSCRIBE, subscription); +} +function publish(publisher, value) { + publisher(PUBLISH, value); +} +function reset(emitter) { + emitter(RESET); +} +function getValue(depot) { + return depot(VALUE); +} +function connect(emitter, publisher) { + return subscribe(emitter, curry2to1(publisher, PUBLISH)); +} +function handleNext(emitter, subscription) { + const unsub = emitter(SUBSCRIBE, (value) => { + unsub(); + subscription(value); + }); + return unsub; +} +function stream() { + const subscriptions = []; + return (action, arg) => { + switch (action) { + case RESET: + subscriptions.splice(0, subscriptions.length); + return; + case SUBSCRIBE: + subscriptions.push(arg); + return () => { + const indexOf = subscriptions.indexOf(arg); + if (indexOf > -1) { + subscriptions.splice(indexOf, 1); + } + }; + case PUBLISH: + subscriptions.slice().forEach((subscription) => { + subscription(arg); + }); + return; + default: + throw new Error(`unrecognized action ${action}`); + } + }; +} +function statefulStream(initial) { + let value = initial; + const innerSubject = stream(); + return (action, arg) => { + switch (action) { + case SUBSCRIBE: + const subscription = arg; + subscription(value); + break; + case PUBLISH: + value = arg; + break; + case VALUE: + return value; + } + return innerSubject(action, arg); + }; +} +function eventHandler(emitter) { + let unsub; + let currentSubscription; + const cleanup = () => unsub && unsub(); + return function(action, subscription) { + switch (action) { + case SUBSCRIBE: + if (subscription) { + if (currentSubscription === subscription) { + return; + } + cleanup(); + currentSubscription = subscription; + unsub = subscribe(emitter, subscription); + return unsub; + } else { + cleanup(); + return noop; + } + case RESET: + cleanup(); + currentSubscription = null; + return; + default: + throw new Error(`unrecognized action ${action}`); + } + }; +} +function streamFromEmitter(emitter) { + return tap(stream(), (stream2) => connect(emitter, stream2)); +} +function statefulStreamFromEmitter(emitter, initial) { + return tap(statefulStream(initial), (stream2) => connect(emitter, stream2)); +} +function combineOperators(...operators) { + return (subscriber) => { + return operators.reduceRight(thrush, subscriber); + }; +} +function pipe(source, ...operators) { + const project = combineOperators(...operators); + return (action, subscription) => { + switch (action) { + case SUBSCRIBE: + return subscribe(source, project(subscription)); + case RESET: + reset(source); + return; + } + }; +} +function defaultComparator(previous, next) { + return previous === next; +} +function distinctUntilChanged(comparator = defaultComparator) { + let current; + return (done) => (next) => { + if (!comparator(current, next)) { + current = next; + done(next); + } + }; +} +function filter(predicate) { + return (done) => (value) => { + predicate(value) && done(value); + }; +} +function map(project) { + return (done) => compose2(done, project); +} +function mapTo(value) { + return (done) => () => done(value); +} +function scan(scanner, initial) { + return (done) => (value) => done(initial = scanner(initial, value)); +} +function skip(times) { + return (done) => (value) => { + times > 0 ? times-- : done(value); + }; +} +function throttleTime(interval) { + let currentValue; + let timeout; + return (done) => (value) => { + currentValue = value; + if (timeout) { + return; + } + timeout = setTimeout(() => { + timeout = void 0; + done(currentValue); + }, interval); + }; +} +function debounceTime(interval) { + let currentValue; + let timeout; + return (done) => (value) => { + currentValue = value; + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(() => { + done(currentValue); + }, interval); + }; +} +function withLatestFrom(...sources) { + const values = new Array(sources.length); + let called = 0; + let pendingCall = null; + const allCalled = Math.pow(2, sources.length) - 1; + sources.forEach((source, index) => { + const bit = Math.pow(2, index); + subscribe(source, (value) => { + const prevCalled = called; + called = called | bit; + values[index] = value; + if (prevCalled !== allCalled && called === allCalled && pendingCall) { + pendingCall(); + pendingCall = null; + } + }); + }); + return (done) => (value) => { + const call2 = () => done([value].concat(values)); + if (called === allCalled) { + call2(); + } else { + pendingCall = call2; + } + }; +} +function merge(...sources) { + return function(action, subscription) { + switch (action) { + case SUBSCRIBE: + return joinProc(...sources.map((source) => subscribe(source, subscription))); + case RESET: + return; + default: + throw new Error(`unrecognized action ${action}`); + } + }; +} +function duc(source, comparator = defaultComparator) { + return pipe(source, distinctUntilChanged(comparator)); +} +function combineLatest(...emitters) { + const innerSubject = stream(); + const values = new Array(emitters.length); + let called = 0; + const allCalled = Math.pow(2, emitters.length) - 1; + emitters.forEach((source, index) => { + const bit = Math.pow(2, index); + subscribe(source, (value) => { + values[index] = value; + called = called | bit; + if (called === allCalled) { + publish(innerSubject, values); + } + }); + }); + return function(action, subscription) { + switch (action) { + case SUBSCRIBE: + if (called === allCalled) { + subscription(values); + } + return subscribe(innerSubject, subscription); + case RESET: + return reset(innerSubject); + default: + throw new Error(`unrecognized action ${action}`); + } + }; +} +function system(constructor, dependencies = [], { singleton } = { singleton: true }) { + return { + id: id(), + constructor, + dependencies, + singleton + }; +} +var id = () => Symbol(); +function init(systemSpec) { + const singletons = /* @__PURE__ */ new Map(); + const _init = ({ id: id2, constructor, dependencies, singleton }) => { + if (singleton && singletons.has(id2)) { + return singletons.get(id2); + } + const system2 = constructor(dependencies.map((e) => _init(e))); + if (singleton) { + singletons.set(id2, system2); + } + return system2; + }; + return _init(systemSpec); +} +function omit(keys, obj) { + const result = {}; + const index = {}; + let idx = 0; + const len = keys.length; + while (idx < len) { + index[keys[idx]] = 1; + idx += 1; + } + for (const prop in obj) { + if (!index.hasOwnProperty(prop)) { + result[prop] = obj[prop]; + } + } + return result; +} +var useIsomorphicLayoutEffect$2 = typeof document !== "undefined" ? import_react2.default.useLayoutEffect : import_react2.default.useEffect; +function systemToComponent(systemSpec, map2, Root4) { + const requiredPropNames = Object.keys(map2.required || {}); + const optionalPropNames = Object.keys(map2.optional || {}); + const methodNames = Object.keys(map2.methods || {}); + const eventNames = Object.keys(map2.events || {}); + const Context = import_react2.default.createContext({}); + function applyPropsToSystem(system2, props) { + if (system2["propsReady"]) { + publish(system2["propsReady"], false); + } + for (const requiredPropName of requiredPropNames) { + const stream2 = system2[map2.required[requiredPropName]]; + publish(stream2, props[requiredPropName]); + } + for (const optionalPropName of optionalPropNames) { + if (optionalPropName in props) { + const stream2 = system2[map2.optional[optionalPropName]]; + publish(stream2, props[optionalPropName]); + } + } + if (system2["propsReady"]) { + publish(system2["propsReady"], true); + } + } + function buildMethods(system2) { + return methodNames.reduce((acc, methodName) => { + acc[methodName] = (value) => { + const stream2 = system2[map2.methods[methodName]]; + publish(stream2, value); + }; + return acc; + }, {}); + } + function buildEventHandlers(system2) { + return eventNames.reduce((handlers, eventName) => { + handlers[eventName] = eventHandler(system2[map2.events[eventName]]); + return handlers; + }, {}); + } + const Component = import_react2.default.forwardRef((propsWithChildren, ref) => { + const _a = propsWithChildren, { children } = _a, props = __objRest(_a, ["children"]); + const [system2] = import_react2.default.useState(() => { + return tap(init(systemSpec), (system22) => applyPropsToSystem(system22, props)); + }); + const [handlers] = import_react2.default.useState(curry1to0(buildEventHandlers, system2)); + useIsomorphicLayoutEffect$2(() => { + for (const eventName of eventNames) { + if (eventName in props) { + subscribe(handlers[eventName], props[eventName]); + } + } + return () => { + Object.values(handlers).map(reset); + }; + }, [props, handlers, system2]); + useIsomorphicLayoutEffect$2(() => { + applyPropsToSystem(system2, props); + }); + import_react2.default.useImperativeHandle(ref, always(buildMethods(system2))); + return import_react2.default.createElement( + Context.Provider, + { value: system2 }, + Root4 ? import_react2.default.createElement( + Root4, + omit([...requiredPropNames, ...optionalPropNames, ...eventNames], props), + children + ) : children + ); + }); + const usePublisher2 = (key) => { + return import_react2.default.useCallback(curry2to1(publish, import_react2.default.useContext(Context)[key]), [key]); + }; + const useEmitterValue2 = (key) => { + const system2 = import_react2.default.useContext(Context); + const source = system2[key]; + const [value, setValue] = import_react2.default.useState(curry1to0(getValue, source)); + useIsomorphicLayoutEffect$2( + () => subscribe(source, (next) => { + if (next !== value) { + setValue(always(next)); + } + }), + [source, value] + ); + return value; + }; + const useEmitter2 = (key, callback) => { + const context = import_react2.default.useContext(Context); + const source = context[key]; + useIsomorphicLayoutEffect$2(() => subscribe(source, callback), [callback, source]); + }; + return { + Component, + usePublisher: usePublisher2, + useEmitterValue: useEmitterValue2, + useEmitter: useEmitter2 + }; +} +var useIsomorphicLayoutEffect = typeof document !== "undefined" ? import_react2.default.useLayoutEffect : import_react2.default.useEffect; +var useIsomorphicLayoutEffect$1 = useIsomorphicLayoutEffect; +var LogLevel = /* @__PURE__ */ ((LogLevel2) => { + LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG"; + LogLevel2[LogLevel2["INFO"] = 1] = "INFO"; + LogLevel2[LogLevel2["WARN"] = 2] = "WARN"; + LogLevel2[LogLevel2["ERROR"] = 3] = "ERROR"; + return LogLevel2; +})(LogLevel || {}); +var CONSOLE_METHOD_MAP = { + [0]: "debug", + [1]: "log", + [2]: "warn", + [3]: "error" +}; +var getGlobalThis = () => typeof globalThis === "undefined" ? window : globalThis; +var loggerSystem = system( + () => { + const logLevel = statefulStream(3); + const log2 = statefulStream((label, message, level = 1) => { + var _a; + const currentLevel = (_a = getGlobalThis()["VIRTUOSO_LOG_LEVEL"]) != null ? _a : getValue(logLevel); + if (level >= currentLevel) { + console[CONSOLE_METHOD_MAP[level]]( + "%creact-virtuoso: %c%s %o", + "color: #0253b3; font-weight: bold", + "color: initial", + label, + message + ); + } + }); + return { + log: log2, + logLevel + }; + }, + [], + { singleton: true } +); +function useSizeWithElRef(callback, enabled = true) { + const ref = import_react2.default.useRef(null); + let callbackRef = (_el) => { + }; + if (typeof ResizeObserver !== "undefined") { + const observer = import_react2.default.useMemo(() => { + return new ResizeObserver((entries) => { + const element = entries[0].target; + if (element.offsetParent !== null) { + callback(element); + } + }); + }, [callback]); + callbackRef = (elRef) => { + if (elRef && enabled) { + observer.observe(elRef); + ref.current = elRef; + } else { + if (ref.current) { + observer.unobserve(ref.current); + } + ref.current = null; + } + }; + } + return { ref, callbackRef }; +} +function useSize(callback, enabled = true) { + return useSizeWithElRef(callback, enabled).callbackRef; +} +function useChangedListContentsSizes(callback, itemSize, enabled, scrollContainerStateCallback, log2, gap, customScrollParent) { + const memoedCallback = import_react2.default.useCallback( + (el) => { + const ranges = getChangedChildSizes(el.children, itemSize, "offsetHeight", log2); + let scrollableElement = el.parentElement; + while (!scrollableElement.dataset["virtuosoScroller"]) { + scrollableElement = scrollableElement.parentElement; + } + const windowScrolling = scrollableElement.lastElementChild.dataset["viewportType"] === "window"; + const scrollTop = customScrollParent ? customScrollParent.scrollTop : windowScrolling ? window.pageYOffset || document.documentElement.scrollTop : scrollableElement.scrollTop; + const scrollHeight = customScrollParent ? customScrollParent.scrollHeight : windowScrolling ? document.documentElement.scrollHeight : scrollableElement.scrollHeight; + const viewportHeight = customScrollParent ? customScrollParent.offsetHeight : windowScrolling ? window.innerHeight : scrollableElement.offsetHeight; + scrollContainerStateCallback({ + scrollTop: Math.max(scrollTop, 0), + scrollHeight, + viewportHeight + }); + gap == null ? void 0 : gap(resolveGapValue$1("row-gap", getComputedStyle(el).rowGap, log2)); + if (ranges !== null) { + callback(ranges); + } + }, + [callback, itemSize, log2, gap, customScrollParent, scrollContainerStateCallback] + ); + return useSizeWithElRef(memoedCallback, enabled); +} +function getChangedChildSizes(children, itemSize, field, log2) { + const length = children.length; + if (length === 0) { + return null; + } + const results = []; + for (let i2 = 0; i2 < length; i2++) { + const child = children.item(i2); + if (!child || child.dataset.index === void 0) { + continue; + } + const index = parseInt(child.dataset.index); + const knownSize = parseFloat(child.dataset.knownSize); + const size = itemSize(child, field); + if (size === 0) { + log2("Zero-sized element, this should not happen", { child }, LogLevel.ERROR); + } + if (size === knownSize) { + continue; + } + const lastResult = results[results.length - 1]; + if (results.length === 0 || lastResult.size !== size || lastResult.endIndex !== index - 1) { + results.push({ startIndex: index, endIndex: index, size }); + } else { + results[results.length - 1].endIndex++; + } + } + return results; +} +function resolveGapValue$1(property, value, log2) { + if (value !== "normal" && !(value == null ? void 0 : value.endsWith("px"))) { + log2(`${property} was not resolved to pixel value correctly`, value, LogLevel.WARN); + } + if (value === "normal") { + return 0; + } + return parseInt(value != null ? value : "0", 10); +} +function correctItemSize(el, dimension) { + return Math.round(el.getBoundingClientRect()[dimension]); +} +function approximatelyEqual(num1, num2) { + return Math.abs(num1 - num2) < 1.01; +} +function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, scrollerElement, scrollerRefCallback = noop, customScrollParent) { + const scrollerRef = import_react2.default.useRef(null); + const scrollTopTarget = import_react2.default.useRef(null); + const timeoutRef = import_react2.default.useRef(null); + const handler = import_react2.default.useCallback( + (ev) => { + const el = ev.target; + const windowScroll = el === window || el === document; + const scrollTop = windowScroll ? window.pageYOffset || document.documentElement.scrollTop : el.scrollTop; + const scrollHeight = windowScroll ? document.documentElement.scrollHeight : el.scrollHeight; + const viewportHeight = windowScroll ? window.innerHeight : el.offsetHeight; + const call2 = () => { + scrollContainerStateCallback({ + scrollTop: Math.max(scrollTop, 0), + scrollHeight, + viewportHeight + }); + }; + if (ev.suppressFlushSync) { + call2(); + } else { + import_react_dom.default.flushSync(call2); + } + if (scrollTopTarget.current !== null) { + if (scrollTop === scrollTopTarget.current || scrollTop <= 0 || scrollTop === scrollHeight - viewportHeight) { + scrollTopTarget.current = null; + smoothScrollTargetReached(true); + if (timeoutRef.current) { + clearTimeout(timeoutRef.current); + timeoutRef.current = null; + } + } + } + }, + [scrollContainerStateCallback, smoothScrollTargetReached] + ); + import_react2.default.useEffect(() => { + const localRef = customScrollParent ? customScrollParent : scrollerRef.current; + scrollerRefCallback(customScrollParent ? customScrollParent : scrollerRef.current); + handler({ target: localRef, suppressFlushSync: true }); + localRef.addEventListener("scroll", handler, { passive: true }); + return () => { + scrollerRefCallback(null); + localRef.removeEventListener("scroll", handler); + }; + }, [scrollerRef, handler, scrollerElement, scrollerRefCallback, customScrollParent]); + function scrollToCallback(location) { + const scrollerElement2 = scrollerRef.current; + if (!scrollerElement2 || "offsetHeight" in scrollerElement2 && scrollerElement2.offsetHeight === 0) { + return; + } + const isSmooth = location.behavior === "smooth"; + let offsetHeight; + let scrollHeight; + let scrollTop; + if (scrollerElement2 === window) { + scrollHeight = Math.max(correctItemSize(document.documentElement, "height"), document.documentElement.scrollHeight); + offsetHeight = window.innerHeight; + scrollTop = document.documentElement.scrollTop; + } else { + scrollHeight = scrollerElement2.scrollHeight; + offsetHeight = correctItemSize(scrollerElement2, "height"); + scrollTop = scrollerElement2.scrollTop; + } + const maxScrollTop = scrollHeight - offsetHeight; + location.top = Math.ceil(Math.max(Math.min(maxScrollTop, location.top), 0)); + if (approximatelyEqual(offsetHeight, scrollHeight) || location.top === scrollTop) { + scrollContainerStateCallback({ scrollTop, scrollHeight, viewportHeight: offsetHeight }); + if (isSmooth) { + smoothScrollTargetReached(true); + } + return; + } + if (isSmooth) { + scrollTopTarget.current = location.top; + if (timeoutRef.current) { + clearTimeout(timeoutRef.current); + } + timeoutRef.current = setTimeout(() => { + timeoutRef.current = null; + scrollTopTarget.current = null; + smoothScrollTargetReached(true); + }, 1e3); + } else { + scrollTopTarget.current = null; + } + scrollerElement2.scrollTo(location); + } + function scrollByCallback(location) { + scrollerRef.current.scrollBy(location); + } + return { scrollerRef, scrollByCallback, scrollToCallback }; +} +var domIOSystem = system( + () => { + const scrollContainerState = stream(); + const scrollTop = stream(); + const deviation = statefulStream(0); + const smoothScrollTargetReached = stream(); + const statefulScrollTop = statefulStream(0); + const viewportHeight = stream(); + const scrollHeight = stream(); + const headerHeight = statefulStream(0); + const fixedHeaderHeight = statefulStream(0); + const fixedFooterHeight = statefulStream(0); + const footerHeight = statefulStream(0); + const scrollTo = stream(); + const scrollBy = stream(); + const scrollingInProgress = statefulStream(false); + connect( + pipe( + scrollContainerState, + map(({ scrollTop: scrollTop2 }) => scrollTop2) + ), + scrollTop + ); + connect( + pipe( + scrollContainerState, + map(({ scrollHeight: scrollHeight2 }) => scrollHeight2) + ), + scrollHeight + ); + connect(scrollTop, statefulScrollTop); + return { + scrollContainerState, + scrollTop, + viewportHeight, + headerHeight, + fixedHeaderHeight, + fixedFooterHeight, + footerHeight, + scrollHeight, + smoothScrollTargetReached, + scrollTo, + scrollBy, + statefulScrollTop, + deviation, + scrollingInProgress + }; + }, + [], + { singleton: true } +); +var NIL_NODE = { lvl: 0 }; +function newAANode(k2, v2, lvl, l2 = NIL_NODE, r2 = NIL_NODE) { + return { k: k2, v: v2, lvl, l: l2, r: r2 }; +} +function empty(node) { + return node === NIL_NODE; +} +function newTree() { + return NIL_NODE; +} +function remove(node, key) { + if (empty(node)) + return NIL_NODE; + const { k: k2, l: l2, r: r2 } = node; + if (key === k2) { + if (empty(l2)) { + return r2; + } else if (empty(r2)) { + return l2; + } else { + const [lastKey, lastValue] = last(l2); + return adjust(clone(node, { k: lastKey, v: lastValue, l: deleteLast(l2) })); + } + } else if (key < k2) { + return adjust(clone(node, { l: remove(l2, key) })); + } else { + return adjust(clone(node, { r: remove(r2, key) })); + } +} +function find(node, key) { + if (empty(node)) { + return; + } + if (key === node.k) { + return node.v; + } else if (key < node.k) { + return find(node.l, key); + } else { + return find(node.r, key); + } +} +function findMaxKeyValue(node, value, field = "k") { + if (empty(node)) { + return [-Infinity, void 0]; + } + if (node[field] === value) { + return [node.k, node.v]; + } + if (node[field] < value) { + const r2 = findMaxKeyValue(node.r, value, field); + if (r2[0] === -Infinity) { + return [node.k, node.v]; + } else { + return r2; + } + } + return findMaxKeyValue(node.l, value, field); +} +function insert(node, k2, v2) { + if (empty(node)) { + return newAANode(k2, v2, 1); + } + if (k2 === node.k) { + return clone(node, { k: k2, v: v2 }); + } else if (k2 < node.k) { + return rebalance(clone(node, { l: insert(node.l, k2, v2) })); + } else { + return rebalance(clone(node, { r: insert(node.r, k2, v2) })); + } +} +function walkWithin(node, start, end) { + if (empty(node)) { + return []; + } + const { k: k2, v: v2, l: l2, r: r2 } = node; + let result = []; + if (k2 > start) { + result = result.concat(walkWithin(l2, start, end)); + } + if (k2 >= start && k2 <= end) { + result.push({ k: k2, v: v2 }); + } + if (k2 <= end) { + result = result.concat(walkWithin(r2, start, end)); + } + return result; +} +function walk(node) { + if (empty(node)) { + return []; + } + return [...walk(node.l), { k: node.k, v: node.v }, ...walk(node.r)]; +} +function last(node) { + return empty(node.r) ? [node.k, node.v] : last(node.r); +} +function deleteLast(node) { + return empty(node.r) ? node.l : adjust(clone(node, { r: deleteLast(node.r) })); +} +function clone(node, args) { + return newAANode( + args.k !== void 0 ? args.k : node.k, + args.v !== void 0 ? args.v : node.v, + args.lvl !== void 0 ? args.lvl : node.lvl, + args.l !== void 0 ? args.l : node.l, + args.r !== void 0 ? args.r : node.r + ); +} +function isSingle(node) { + return empty(node) || node.lvl > node.r.lvl; +} +function rebalance(node) { + return split(skew(node)); +} +function adjust(node) { + const { l: l2, r: r2, lvl } = node; + if (r2.lvl >= lvl - 1 && l2.lvl >= lvl - 1) { + return node; + } else if (lvl > r2.lvl + 1) { + if (isSingle(l2)) { + return skew(clone(node, { lvl: lvl - 1 })); + } else { + if (!empty(l2) && !empty(l2.r)) { + return clone(l2.r, { + l: clone(l2, { r: l2.r.l }), + r: clone(node, { + l: l2.r.r, + lvl: lvl - 1 + }), + lvl + }); + } else { + throw new Error("Unexpected empty nodes"); + } + } + } else { + if (isSingle(node)) { + return split(clone(node, { lvl: lvl - 1 })); + } else { + if (!empty(r2) && !empty(r2.l)) { + const rl = r2.l; + const rlvl = isSingle(rl) ? r2.lvl - 1 : r2.lvl; + return clone(rl, { + l: clone(node, { + r: rl.l, + lvl: lvl - 1 + }), + r: split(clone(r2, { l: rl.r, lvl: rlvl })), + lvl: rl.lvl + 1 + }); + } else { + throw new Error("Unexpected empty nodes"); + } + } + } +} +function rangesWithin(node, startIndex, endIndex) { + if (empty(node)) { + return []; + } + const adjustedStart = findMaxKeyValue(node, startIndex)[0]; + return toRanges(walkWithin(node, adjustedStart, endIndex)); +} +function arrayToRanges(items, parser) { + const length = items.length; + if (length === 0) { + return []; + } + let { index: start, value } = parser(items[0]); + const result = []; + for (let i2 = 1; i2 < length; i2++) { + const { index: nextIndex, value: nextValue } = parser(items[i2]); + result.push({ start, end: nextIndex - 1, value }); + start = nextIndex; + value = nextValue; + } + result.push({ start, end: Infinity, value }); + return result; +} +function toRanges(nodes) { + return arrayToRanges(nodes, ({ k: index, v: value }) => ({ index, value })); +} +function split(node) { + const { r: r2, lvl } = node; + return !empty(r2) && !empty(r2.r) && r2.lvl === lvl && r2.r.lvl === lvl ? clone(r2, { l: clone(node, { r: r2.l }), lvl: lvl + 1 }) : node; +} +function skew(node) { + const { l: l2 } = node; + return !empty(l2) && l2.lvl === node.lvl ? clone(l2, { r: clone(node, { l: l2.r }) }) : node; +} +function findIndexOfClosestSmallerOrEqual(items, value, comparator, start = 0) { + let end = items.length - 1; + while (start <= end) { + const index = Math.floor((start + end) / 2); + const item = items[index]; + const match = comparator(item, value); + if (match === 0) { + return index; + } + if (match === -1) { + if (end - start < 2) { + return index - 1; + } + end = index - 1; + } else { + if (end === start) { + return index; + } + start = index + 1; + } + } + throw new Error(`Failed binary finding record in array - ${items.join(",")}, searched for ${value}`); +} +function findClosestSmallerOrEqual(items, value, comparator) { + return items[findIndexOfClosestSmallerOrEqual(items, value, comparator)]; +} +function findRange(items, startValue, endValue, comparator) { + const startIndex = findIndexOfClosestSmallerOrEqual(items, startValue, comparator); + const endIndex = findIndexOfClosestSmallerOrEqual(items, endValue, comparator, startIndex); + return items.slice(startIndex, endIndex + 1); +} +var recalcSystem = system( + () => { + const recalcInProgress = statefulStream(false); + return { recalcInProgress }; + }, + [], + { singleton: true } +); +function rangeIncludes(refRange) { + const { size, startIndex, endIndex } = refRange; + return (range) => { + return range.start === startIndex && (range.end === endIndex || range.end === Infinity) && range.value === size; + }; +} +function affectedGroupCount(offset, groupIndices) { + let recognizedOffsetItems = 0; + let groupIndex = 0; + while (recognizedOffsetItems < offset) { + recognizedOffsetItems += groupIndices[groupIndex + 1] - groupIndices[groupIndex] - 1; + groupIndex++; + } + const offsetIsExact = recognizedOffsetItems === offset; + return groupIndex - (offsetIsExact ? 0 : 1); +} +function insertRanges(sizeTree, ranges) { + let syncStart = empty(sizeTree) ? 0 : Infinity; + for (const range of ranges) { + const { size, startIndex, endIndex } = range; + syncStart = Math.min(syncStart, startIndex); + if (empty(sizeTree)) { + sizeTree = insert(sizeTree, 0, size); + continue; + } + const overlappingRanges = rangesWithin(sizeTree, startIndex - 1, endIndex + 1); + if (overlappingRanges.some(rangeIncludes(range))) { + continue; + } + let firstPassDone = false; + let shouldInsert = false; + for (const { start: rangeStart, end: rangeEnd, value: rangeValue } of overlappingRanges) { + if (!firstPassDone) { + shouldInsert = rangeValue !== size; + firstPassDone = true; + } else { + if (endIndex >= rangeStart || size === rangeValue) { + sizeTree = remove(sizeTree, rangeStart); + } + } + if (rangeEnd > endIndex && endIndex >= rangeStart) { + if (rangeValue !== size) { + sizeTree = insert(sizeTree, endIndex + 1, rangeValue); + } + } + } + if (shouldInsert) { + sizeTree = insert(sizeTree, startIndex, size); + } + } + return [sizeTree, syncStart]; +} +function initialSizeState() { + return { + offsetTree: [], + sizeTree: newTree(), + groupOffsetTree: newTree(), + lastIndex: 0, + lastOffset: 0, + lastSize: 0, + groupIndices: [] + }; +} +function indexComparator({ index: itemIndex }, index) { + return index === itemIndex ? 0 : index < itemIndex ? -1 : 1; +} +function offsetComparator({ offset: itemOffset }, offset) { + return offset === itemOffset ? 0 : offset < itemOffset ? -1 : 1; +} +function offsetPointParser(point) { + return { index: point.index, value: point }; +} +function rangesWithinOffsets(tree, startOffset, endOffset, minStartIndex = 0) { + if (minStartIndex > 0) { + startOffset = Math.max(startOffset, findClosestSmallerOrEqual(tree, minStartIndex, indexComparator).offset); + } + return arrayToRanges(findRange(tree, startOffset, endOffset, offsetComparator), offsetPointParser); +} +function createOffsetTree(prevOffsetTree, syncStart, sizeTree, gap) { + let offsetTree = prevOffsetTree; + let prevIndex = 0; + let prevSize = 0; + let prevOffset = 0; + let startIndex = 0; + if (syncStart !== 0) { + startIndex = findIndexOfClosestSmallerOrEqual(offsetTree, syncStart - 1, indexComparator); + const offsetInfo = offsetTree[startIndex]; + prevOffset = offsetInfo.offset; + const kv = findMaxKeyValue(sizeTree, syncStart - 1); + prevIndex = kv[0]; + prevSize = kv[1]; + if (offsetTree.length && offsetTree[startIndex].size === findMaxKeyValue(sizeTree, syncStart)[1]) { + startIndex -= 1; + } + offsetTree = offsetTree.slice(0, startIndex + 1); + } else { + offsetTree = []; + } + for (const { start: startIndex2, value } of rangesWithin(sizeTree, syncStart, Infinity)) { + const indexOffset = startIndex2 - prevIndex; + const aOffset = indexOffset * prevSize + prevOffset + indexOffset * gap; + offsetTree.push({ + offset: aOffset, + size: value, + index: startIndex2 + }); + prevIndex = startIndex2; + prevOffset = aOffset; + prevSize = value; + } + return { + offsetTree, + lastIndex: prevIndex, + lastOffset: prevOffset, + lastSize: prevSize + }; +} +function sizeStateReducer(state, [ranges, groupIndices, log2, gap]) { + if (ranges.length > 0) { + log2("received item sizes", ranges, LogLevel.DEBUG); + } + const sizeTree = state.sizeTree; + let newSizeTree = sizeTree; + let syncStart = 0; + if (groupIndices.length > 0 && empty(sizeTree) && ranges.length === 2) { + const groupSize = ranges[0].size; + const itemSize = ranges[1].size; + newSizeTree = groupIndices.reduce((tree, groupIndex) => { + return insert(insert(tree, groupIndex, groupSize), groupIndex + 1, itemSize); + }, newSizeTree); + } else { + [newSizeTree, syncStart] = insertRanges(newSizeTree, ranges); + } + if (newSizeTree === sizeTree) { + return state; + } + const { offsetTree: newOffsetTree, lastIndex, lastSize, lastOffset } = createOffsetTree(state.offsetTree, syncStart, newSizeTree, gap); + return { + sizeTree: newSizeTree, + offsetTree: newOffsetTree, + lastIndex, + lastOffset, + lastSize, + groupOffsetTree: groupIndices.reduce((tree, index) => { + return insert(tree, index, offsetOf(index, newOffsetTree, gap)); + }, newTree()), + groupIndices + }; +} +function offsetOf(index, tree, gap) { + if (tree.length === 0) { + return 0; + } + const { offset, index: startIndex, size } = findClosestSmallerOrEqual(tree, index, indexComparator); + const itemCount = index - startIndex; + const top = size * itemCount + (itemCount - 1) * gap + offset; + return top > 0 ? top + gap : top; +} +function isGroupLocation(location) { + return typeof location.groupIndex !== "undefined"; +} +function originalIndexFromLocation(location, sizes, lastIndex) { + if (isGroupLocation(location)) { + return sizes.groupIndices[location.groupIndex] + 1; + } else { + const numericIndex = location.index === "LAST" ? lastIndex : location.index; + let result = originalIndexFromItemIndex(numericIndex, sizes); + result = Math.max(0, result, Math.min(lastIndex, result)); + return result; + } +} +function originalIndexFromItemIndex(itemIndex, sizes) { + if (!hasGroups(sizes)) { + return itemIndex; + } + let groupOffset = 0; + while (sizes.groupIndices[groupOffset] <= itemIndex + groupOffset) { + groupOffset++; + } + return itemIndex + groupOffset; +} +function hasGroups(sizes) { + return !empty(sizes.groupOffsetTree); +} +function sizeTreeToRanges(sizeTree) { + return walk(sizeTree).map(({ k: startIndex, v: size }, index, sizeArray) => { + const nextSize = sizeArray[index + 1]; + const endIndex = nextSize ? nextSize.k - 1 : Infinity; + return { startIndex, endIndex, size }; + }); +} +var SIZE_MAP = { + offsetHeight: "height", + offsetWidth: "width" +}; +var sizeSystem = system( + ([{ log: log2 }, { recalcInProgress }]) => { + const sizeRanges = stream(); + const totalCount = stream(); + const statefulTotalCount = statefulStreamFromEmitter(totalCount, 0); + const unshiftWith = stream(); + const shiftWith = stream(); + const firstItemIndex = statefulStream(0); + const groupIndices = statefulStream([]); + const fixedItemSize = statefulStream(void 0); + const defaultItemSize = statefulStream(void 0); + const itemSize = statefulStream((el, field) => correctItemSize(el, SIZE_MAP[field])); + const data = statefulStream(void 0); + const gap = statefulStream(0); + const initial = initialSizeState(); + const sizes = statefulStreamFromEmitter( + pipe(sizeRanges, withLatestFrom(groupIndices, log2, gap), scan(sizeStateReducer, initial), distinctUntilChanged()), + initial + ); + const prevGroupIndices = statefulStreamFromEmitter( + pipe( + groupIndices, + distinctUntilChanged(), + scan((prev, curr) => ({ prev: prev.current, current: curr }), { + prev: [], + current: [] + }), + map(({ prev }) => prev) + ), + [] + ); + connect( + pipe( + groupIndices, + filter((indexes) => indexes.length > 0), + withLatestFrom(sizes, gap), + map(([groupIndices2, sizes2, gap2]) => { + const groupOffsetTree = groupIndices2.reduce((tree, index, idx) => { + return insert(tree, index, offsetOf(index, sizes2.offsetTree, gap2) || idx); + }, newTree()); + return __spreadProps(__spreadValues({}, sizes2), { + groupIndices: groupIndices2, + groupOffsetTree + }); + }) + ), + sizes + ); + connect( + pipe( + totalCount, + withLatestFrom(sizes), + filter(([totalCount2, { lastIndex, groupIndices: groupIndices2 }]) => { + return totalCount2 < lastIndex && groupIndices2.length === 0; + }), + map(([totalCount2, { lastIndex, lastSize }]) => { + return [ + { + startIndex: totalCount2, + endIndex: lastIndex, + size: lastSize + } + ]; + }) + ), + sizeRanges + ); + connect(fixedItemSize, defaultItemSize); + const trackItemSizes = statefulStreamFromEmitter( + pipe( + fixedItemSize, + map((size) => size === void 0) + ), + true + ); + connect( + pipe( + defaultItemSize, + filter((value) => { + return value !== void 0 && empty(getValue(sizes).sizeTree); + }), + map((size) => [{ startIndex: 0, endIndex: 0, size }]) + ), + sizeRanges + ); + const listRefresh = streamFromEmitter( + pipe( + sizeRanges, + withLatestFrom(sizes), + scan( + ({ sizes: oldSizes }, [_3, newSizes]) => { + return { + changed: newSizes !== oldSizes, + sizes: newSizes + }; + }, + { changed: false, sizes: initial } + ), + map((value) => value.changed) + ) + ); + subscribe( + pipe( + firstItemIndex, + scan( + (prev, next) => { + return { diff: prev.prev - next, prev: next }; + }, + { diff: 0, prev: 0 } + ), + map((val) => val.diff) + ), + (offset) => { + const { groupIndices: groupIndices2 } = getValue(sizes); + if (offset > 0) { + publish(recalcInProgress, true); + publish(unshiftWith, offset + affectedGroupCount(offset, groupIndices2)); + } else if (offset < 0) { + const prevGroupIndicesValue = getValue(prevGroupIndices); + if (prevGroupIndicesValue.length > 0) { + publish(shiftWith, offset - affectedGroupCount(-offset, prevGroupIndicesValue)); + } + } + } + ); + subscribe(pipe(firstItemIndex, withLatestFrom(log2)), ([index, log22]) => { + if (index < 0) { + log22( + "`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value", + { firstItemIndex }, + LogLevel.ERROR + ); + } + }); + const beforeUnshiftWith = streamFromEmitter(unshiftWith); + connect( + pipe( + unshiftWith, + withLatestFrom(sizes), + map(([unshiftWith2, sizes2]) => { + const groupedMode = sizes2.groupIndices.length > 0; + const initialRanges = []; + const defaultSize = sizes2.lastSize; + if (groupedMode) { + const firstGroupSize = find(sizes2.sizeTree, 0); + let prependedGroupItemsCount = 0; + let groupIndex = 0; + while (prependedGroupItemsCount < unshiftWith2) { + const theGroupIndex = sizes2.groupIndices[groupIndex]; + const groupItemCount = sizes2.groupIndices.length === groupIndex + 1 ? Infinity : sizes2.groupIndices[groupIndex + 1] - theGroupIndex - 1; + initialRanges.push({ + startIndex: theGroupIndex, + endIndex: theGroupIndex, + size: firstGroupSize + }); + initialRanges.push({ + startIndex: theGroupIndex + 1, + endIndex: theGroupIndex + 1 + groupItemCount - 1, + size: defaultSize + }); + groupIndex++; + prependedGroupItemsCount += groupItemCount + 1; + } + const sizeTreeKV = walk(sizes2.sizeTree); + const firstGroupIsExpanded = prependedGroupItemsCount !== unshiftWith2; + if (firstGroupIsExpanded) { + sizeTreeKV.shift(); + } + return sizeTreeKV.reduce( + (acc, { k: index, v: size }) => { + let ranges = acc.ranges; + if (acc.prevSize !== 0) { + ranges = [ + ...acc.ranges, + { + startIndex: acc.prevIndex, + endIndex: index + unshiftWith2 - 1, + size: acc.prevSize + } + ]; + } + return { + ranges, + prevIndex: index + unshiftWith2, + prevSize: size + }; + }, + { + ranges: initialRanges, + prevIndex: unshiftWith2, + prevSize: 0 + } + ).ranges; + } + return walk(sizes2.sizeTree).reduce( + (acc, { k: index, v: size }) => { + return { + ranges: [...acc.ranges, { startIndex: acc.prevIndex, endIndex: index + unshiftWith2 - 1, size: acc.prevSize }], + prevIndex: index + unshiftWith2, + prevSize: size + }; + }, + { + ranges: [], + prevIndex: 0, + prevSize: defaultSize + } + ).ranges; + }) + ), + sizeRanges + ); + const shiftWithOffset = streamFromEmitter( + pipe( + shiftWith, + withLatestFrom(sizes, gap), + map(([shiftWith2, { offsetTree }, gap2]) => { + const newFirstItemIndex = -shiftWith2; + return offsetOf(newFirstItemIndex, offsetTree, gap2); + }) + ) + ); + connect( + pipe( + shiftWith, + withLatestFrom(sizes, gap), + map(([shiftWith2, sizes2, gap2]) => { + const groupedMode = sizes2.groupIndices.length > 0; + if (groupedMode) { + let newSizeTree = newTree(); + const prevGroupIndicesValue = getValue(prevGroupIndices); + let removedItemsCount = 0; + let groupIndex = 0; + let groupOffset = 0; + while (removedItemsCount < -shiftWith2) { + groupOffset = prevGroupIndicesValue[groupIndex]; + const groupItemCount = prevGroupIndicesValue[groupIndex + 1] - groupOffset - 1; + groupIndex++; + removedItemsCount += groupItemCount + 1; + } + newSizeTree = walk(sizes2.sizeTree).reduce((acc, { k: k2, v: v2 }) => { + return insert(acc, Math.max(0, k2 + shiftWith2), v2); + }, newSizeTree); + const aGroupIsShrunk = removedItemsCount !== -shiftWith2; + if (aGroupIsShrunk) { + const firstGroupSize = find(sizes2.sizeTree, groupOffset); + newSizeTree = insert(newSizeTree, 0, firstGroupSize); + const nextItemSize = findMaxKeyValue(sizes2.sizeTree, -shiftWith2 + 1)[1]; + newSizeTree = insert(newSizeTree, 1, nextItemSize); + } + return __spreadValues(__spreadProps(__spreadValues({}, sizes2), { + sizeTree: newSizeTree + }), createOffsetTree(sizes2.offsetTree, 0, newSizeTree, gap2)); + } else { + const newSizeTree = walk(sizes2.sizeTree).reduce((acc, { k: k2, v: v2 }) => { + return insert(acc, Math.max(0, k2 + shiftWith2), v2); + }, newTree()); + return __spreadValues(__spreadProps(__spreadValues({}, sizes2), { + sizeTree: newSizeTree + }), createOffsetTree(sizes2.offsetTree, 0, newSizeTree, gap2)); + } + }) + ), + sizes + ); + return { + data, + totalCount, + sizeRanges, + groupIndices, + defaultItemSize, + fixedItemSize, + unshiftWith, + shiftWith, + shiftWithOffset, + beforeUnshiftWith, + firstItemIndex, + gap, + sizes, + listRefresh, + statefulTotalCount, + trackItemSizes, + itemSize + }; + }, + tup(loggerSystem, recalcSystem), + { singleton: true } +); +var SUPPORTS_SCROLL_TO_OPTIONS = typeof document !== "undefined" && "scrollBehavior" in document.documentElement.style; +function normalizeIndexLocation(location) { + const result = typeof location === "number" ? { index: location } : location; + if (!result.align) { + result.align = "start"; + } + if (!result.behavior || !SUPPORTS_SCROLL_TO_OPTIONS) { + result.behavior = "auto"; + } + if (!result.offset) { + result.offset = 0; + } + return result; +} +var scrollToIndexSystem = system( + ([ + { sizes, totalCount, listRefresh, gap }, + { + scrollingInProgress, + viewportHeight, + scrollTo, + smoothScrollTargetReached, + headerHeight, + footerHeight, + fixedHeaderHeight, + fixedFooterHeight + }, + { log: log2 } + ]) => { + const scrollToIndex = stream(); + const topListHeight = statefulStream(0); + let unsubscribeNextListRefresh = null; + let cleartTimeoutRef = null; + let unsubscribeListRefresh = null; + function cleanup() { + if (unsubscribeNextListRefresh) { + unsubscribeNextListRefresh(); + unsubscribeNextListRefresh = null; + } + if (unsubscribeListRefresh) { + unsubscribeListRefresh(); + unsubscribeListRefresh = null; + } + if (cleartTimeoutRef) { + clearTimeout(cleartTimeoutRef); + cleartTimeoutRef = null; + } + publish(scrollingInProgress, false); + } + connect( + pipe( + scrollToIndex, + withLatestFrom(sizes, viewportHeight, totalCount, topListHeight, headerHeight, footerHeight, log2), + withLatestFrom(gap, fixedHeaderHeight, fixedFooterHeight), + map( + ([ + [location, sizes2, viewportHeight2, totalCount2, topListHeight2, headerHeight2, footerHeight2, log22], + gap2, + fixedHeaderHeight2, + fixedFooterHeight2 + ]) => { + const normalLocation = normalizeIndexLocation(location); + const { align, behavior, offset } = normalLocation; + const lastIndex = totalCount2 - 1; + const index = originalIndexFromLocation(normalLocation, sizes2, lastIndex); + let top = offsetOf(index, sizes2.offsetTree, gap2) + headerHeight2; + if (align === "end") { + top += fixedHeaderHeight2 + findMaxKeyValue(sizes2.sizeTree, index)[1] - viewportHeight2 + fixedFooterHeight2; + if (index === lastIndex) { + top += footerHeight2; + } + } else if (align === "center") { + top += (fixedHeaderHeight2 + findMaxKeyValue(sizes2.sizeTree, index)[1] - viewportHeight2 + fixedFooterHeight2) / 2; + } else { + top -= topListHeight2; + } + if (offset) { + top += offset; + } + const retry = (listChanged) => { + cleanup(); + if (listChanged) { + log22("retrying to scroll to", { location }, LogLevel.DEBUG); + publish(scrollToIndex, location); + } else { + log22("list did not change, scroll successful", {}, LogLevel.DEBUG); + } + }; + cleanup(); + if (behavior === "smooth") { + let listChanged = false; + unsubscribeListRefresh = subscribe(listRefresh, (changed) => { + listChanged = listChanged || changed; + }); + unsubscribeNextListRefresh = handleNext(smoothScrollTargetReached, () => { + retry(listChanged); + }); + } else { + unsubscribeNextListRefresh = handleNext(pipe(listRefresh, watchChangesFor(150)), retry); + } + cleartTimeoutRef = setTimeout(() => { + cleanup(); + }, 1200); + publish(scrollingInProgress, true); + log22("scrolling from index to", { index, top, behavior }, LogLevel.DEBUG); + return { top, behavior }; + } + ) + ), + scrollTo + ); + return { + scrollToIndex, + topListHeight + }; + }, + tup(sizeSystem, domIOSystem, loggerSystem), + { singleton: true } +); +function watchChangesFor(limit) { + return (done) => { + const timeoutRef = setTimeout(() => { + done(false); + }, limit); + return (value) => { + if (value) { + done(true); + clearTimeout(timeoutRef); + } + }; + }; +} +var UP = "up"; +var DOWN = "down"; +var NONE$1 = "none"; +var INITIAL_BOTTOM_STATE = { + atBottom: false, + notAtBottomBecause: "NOT_SHOWING_LAST_ITEM", + state: { + offsetBottom: 0, + scrollTop: 0, + viewportHeight: 0, + scrollHeight: 0 + } +}; +var DEFAULT_AT_TOP_THRESHOLD = 0; +var stateFlagsSystem = system(([{ scrollContainerState, scrollTop, viewportHeight, headerHeight, footerHeight, scrollBy }]) => { + const isAtBottom = statefulStream(false); + const isAtTop = statefulStream(true); + const atBottomStateChange = stream(); + const atTopStateChange = stream(); + const atBottomThreshold = statefulStream(4); + const atTopThreshold = statefulStream(DEFAULT_AT_TOP_THRESHOLD); + const isScrolling = statefulStreamFromEmitter( + pipe( + merge(pipe(duc(scrollTop), skip(1), mapTo(true)), pipe(duc(scrollTop), skip(1), mapTo(false), debounceTime(100))), + distinctUntilChanged() + ), + false + ); + const isScrollingBy = statefulStreamFromEmitter( + pipe(merge(pipe(scrollBy, mapTo(true)), pipe(scrollBy, mapTo(false), debounceTime(200))), distinctUntilChanged()), + false + ); + connect( + pipe( + combineLatest(duc(scrollTop), duc(atTopThreshold)), + map(([top, atTopThreshold2]) => top <= atTopThreshold2), + distinctUntilChanged() + ), + isAtTop + ); + connect(pipe(isAtTop, throttleTime(50)), atTopStateChange); + const atBottomState = streamFromEmitter( + pipe( + combineLatest(scrollContainerState, duc(viewportHeight), duc(headerHeight), duc(footerHeight), duc(atBottomThreshold)), + scan((current, [{ scrollTop: scrollTop2, scrollHeight }, viewportHeight2, _headerHeight, _footerHeight, atBottomThreshold2]) => { + const isAtBottom2 = scrollTop2 + viewportHeight2 - scrollHeight > -atBottomThreshold2; + const state = { + viewportHeight: viewportHeight2, + scrollTop: scrollTop2, + scrollHeight + }; + if (isAtBottom2) { + let atBottomBecause; + let scrollTopDelta; + if (scrollTop2 > current.state.scrollTop) { + atBottomBecause = "SCROLLED_DOWN"; + scrollTopDelta = current.state.scrollTop - scrollTop2; + } else { + atBottomBecause = "SIZE_DECREASED"; + scrollTopDelta = current.state.scrollTop - scrollTop2 || current.scrollTopDelta; + } + return { + atBottom: true, + state, + atBottomBecause, + scrollTopDelta + }; + } + let notAtBottomBecause; + if (state.scrollHeight > current.state.scrollHeight) { + notAtBottomBecause = "SIZE_INCREASED"; + } else if (viewportHeight2 < current.state.viewportHeight) { + notAtBottomBecause = "VIEWPORT_HEIGHT_DECREASING"; + } else if (scrollTop2 < current.state.scrollTop) { + notAtBottomBecause = "SCROLLING_UPWARDS"; + } else { + notAtBottomBecause = "NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM"; + } + return { + atBottom: false, + notAtBottomBecause, + state + }; + }, INITIAL_BOTTOM_STATE), + distinctUntilChanged((prev, next) => { + return prev && prev.atBottom === next.atBottom; + }) + ) + ); + const lastJumpDueToItemResize = statefulStreamFromEmitter( + pipe( + scrollContainerState, + scan( + (current, { scrollTop: scrollTop2, scrollHeight, viewportHeight: viewportHeight2 }) => { + if (!approximatelyEqual(current.scrollHeight, scrollHeight)) { + const atBottom = scrollHeight - (scrollTop2 + viewportHeight2) < 1; + if (current.scrollTop !== scrollTop2 && atBottom) { + return { + scrollHeight, + scrollTop: scrollTop2, + jump: current.scrollTop - scrollTop2, + changed: true + }; + } else { + return { + scrollHeight, + scrollTop: scrollTop2, + jump: 0, + changed: true + }; + } + } else { + return { + scrollTop: scrollTop2, + scrollHeight, + jump: 0, + changed: false + }; + } + }, + { scrollHeight: 0, jump: 0, scrollTop: 0, changed: false } + ), + filter((value) => value.changed), + map((value) => value.jump) + ), + 0 + ); + connect( + pipe( + atBottomState, + map((state) => state.atBottom) + ), + isAtBottom + ); + connect(pipe(isAtBottom, throttleTime(50)), atBottomStateChange); + const scrollDirection = statefulStream(DOWN); + connect( + pipe( + scrollContainerState, + map(({ scrollTop: scrollTop2 }) => scrollTop2), + distinctUntilChanged(), + scan( + (acc, scrollTop2) => { + if (getValue(isScrollingBy)) { + return { direction: acc.direction, prevScrollTop: scrollTop2 }; + } + return { direction: scrollTop2 < acc.prevScrollTop ? UP : DOWN, prevScrollTop: scrollTop2 }; + }, + { direction: DOWN, prevScrollTop: 0 } + ), + map((value) => value.direction) + ), + scrollDirection + ); + connect(pipe(scrollContainerState, throttleTime(50), mapTo(NONE$1)), scrollDirection); + const scrollVelocity = statefulStream(0); + connect( + pipe( + isScrolling, + filter((value) => !value), + mapTo(0) + ), + scrollVelocity + ); + connect( + pipe( + scrollTop, + throttleTime(100), + withLatestFrom(isScrolling), + filter(([_3, isScrolling2]) => !!isScrolling2), + scan(([_3, prev], [next]) => [prev, next], [0, 0]), + map(([prev, next]) => next - prev) + ), + scrollVelocity + ); + return { + isScrolling, + isAtTop, + isAtBottom, + atBottomState, + atTopStateChange, + atBottomStateChange, + scrollDirection, + atBottomThreshold, + atTopThreshold, + scrollVelocity, + lastJumpDueToItemResize + }; +}, tup(domIOSystem)); +var propsReadySystem = system( + ([{ log: log2 }]) => { + const propsReady = statefulStream(false); + const didMount = streamFromEmitter( + pipe( + propsReady, + filter((ready) => ready), + distinctUntilChanged() + ) + ); + subscribe(propsReady, (value) => { + value && getValue(log2)("props updated", {}, LogLevel.DEBUG); + }); + return { propsReady, didMount }; + }, + tup(loggerSystem), + { singleton: true } +); +function getInitialTopMostItemIndexNumber(location, totalCount) { + const lastIndex = totalCount - 1; + const index = typeof location === "number" ? location : location.index === "LAST" ? lastIndex : location.index; + return index; +} +function skipFrames(frameCount, callback) { + if (frameCount == 0) { + callback(); + } else { + requestAnimationFrame(() => skipFrames(frameCount - 1, callback)); + } +} +var initialTopMostItemIndexSystem = system( + ([{ sizes, listRefresh, defaultItemSize }, { scrollTop }, { scrollToIndex }, { didMount }]) => { + const scrolledToInitialItem = statefulStream(true); + const initialTopMostItemIndex = statefulStream(0); + const scrollScheduled = statefulStream(false); + connect( + pipe( + didMount, + withLatestFrom(initialTopMostItemIndex), + filter(([_3, location]) => !!location), + mapTo(false) + ), + scrolledToInitialItem + ); + subscribe( + pipe( + combineLatest(listRefresh, didMount), + withLatestFrom(scrolledToInitialItem, sizes, defaultItemSize, scrollScheduled), + filter(([[, didMount2], scrolledToInitialItem2, { sizeTree }, defaultItemSize2, scrollScheduled2]) => { + return didMount2 && (!empty(sizeTree) || isDefined(defaultItemSize2)) && !scrolledToInitialItem2 && !scrollScheduled2; + }), + withLatestFrom(initialTopMostItemIndex) + ), + ([, initialTopMostItemIndex2]) => { + publish(scrollScheduled, true); + skipFrames(2, () => { + handleNext(scrollTop, () => publish(scrolledToInitialItem, true)); + publish(scrollToIndex, initialTopMostItemIndex2); + }); + } + ); + return { + scrolledToInitialItem, + initialTopMostItemIndex + }; + }, + tup(sizeSystem, domIOSystem, scrollToIndexSystem, propsReadySystem), + { singleton: true } +); +function normalizeFollowOutput(follow) { + if (!follow) { + return false; + } + return follow === "smooth" ? "smooth" : "auto"; +} +var behaviorFromFollowOutput = (follow, isAtBottom) => { + if (typeof follow === "function") { + return normalizeFollowOutput(follow(isAtBottom)); + } + return isAtBottom && normalizeFollowOutput(follow); +}; +var followOutputSystem = system( + ([ + { totalCount, listRefresh }, + { isAtBottom, atBottomState }, + { scrollToIndex }, + { scrolledToInitialItem }, + { propsReady, didMount }, + { log: log2 }, + { scrollingInProgress } + ]) => { + const followOutput = statefulStream(false); + const autoscrollToBottom = stream(); + let pendingScrollHandle = null; + function scrollToBottom(followOutputBehavior) { + publish(scrollToIndex, { + index: "LAST", + align: "end", + behavior: followOutputBehavior + }); + } + subscribe( + pipe( + combineLatest(pipe(duc(totalCount), skip(1)), didMount), + withLatestFrom(duc(followOutput), isAtBottom, scrolledToInitialItem, scrollingInProgress), + map(([[totalCount2, didMount2], followOutput2, isAtBottom2, scrolledToInitialItem2, scrollingInProgress2]) => { + let shouldFollow = didMount2 && scrolledToInitialItem2; + let followOutputBehavior = "auto"; + if (shouldFollow) { + followOutputBehavior = behaviorFromFollowOutput(followOutput2, isAtBottom2 || scrollingInProgress2); + shouldFollow = shouldFollow && !!followOutputBehavior; + } + return { totalCount: totalCount2, shouldFollow, followOutputBehavior }; + }), + filter(({ shouldFollow }) => shouldFollow) + ), + ({ totalCount: totalCount2, followOutputBehavior }) => { + if (pendingScrollHandle) { + pendingScrollHandle(); + pendingScrollHandle = null; + } + pendingScrollHandle = handleNext(listRefresh, () => { + getValue(log2)("following output to ", { totalCount: totalCount2 }, LogLevel.DEBUG); + scrollToBottom(followOutputBehavior); + pendingScrollHandle = null; + }); + } + ); + function trapNextSizeIncrease(followOutput2) { + const cancel = handleNext(atBottomState, (state) => { + if (followOutput2 && !state.atBottom && state.notAtBottomBecause === "SIZE_INCREASED" && !pendingScrollHandle) { + getValue(log2)("scrolling to bottom due to increased size", {}, LogLevel.DEBUG); + scrollToBottom("auto"); + } + }); + setTimeout(cancel, 100); + } + subscribe( + pipe( + combineLatest(duc(followOutput), totalCount, propsReady), + filter(([follow, , ready]) => follow && ready), + scan( + ({ value }, [, next]) => { + return { refreshed: value === next, value: next }; + }, + { refreshed: false, value: 0 } + ), + filter(({ refreshed }) => refreshed), + withLatestFrom(followOutput, totalCount) + ), + ([, followOutput2]) => { + trapNextSizeIncrease(followOutput2 !== false); + } + ); + subscribe(autoscrollToBottom, () => { + trapNextSizeIncrease(getValue(followOutput) !== false); + }); + subscribe(combineLatest(duc(followOutput), atBottomState), ([followOutput2, state]) => { + if (followOutput2 && !state.atBottom && state.notAtBottomBecause === "VIEWPORT_HEIGHT_DECREASING") { + scrollToBottom("auto"); + } + }); + return { followOutput, autoscrollToBottom }; + }, + tup(sizeSystem, stateFlagsSystem, scrollToIndexSystem, initialTopMostItemIndexSystem, propsReadySystem, loggerSystem, domIOSystem) +); +function groupCountsToIndicesAndCount(counts) { + return counts.reduce( + (acc, groupCount) => { + acc.groupIndices.push(acc.totalCount); + acc.totalCount += groupCount + 1; + return acc; + }, + { + totalCount: 0, + groupIndices: [] + } + ); +} +var groupedListSystem = system(([{ totalCount, groupIndices, sizes }, { scrollTop, headerHeight }]) => { + const groupCounts = stream(); + const topItemsIndexes = stream(); + const groupIndicesAndCount = streamFromEmitter(pipe(groupCounts, map(groupCountsToIndicesAndCount))); + connect( + pipe( + groupIndicesAndCount, + map((value) => value.totalCount) + ), + totalCount + ); + connect( + pipe( + groupIndicesAndCount, + map((value) => value.groupIndices) + ), + groupIndices + ); + connect( + pipe( + combineLatest(scrollTop, sizes, headerHeight), + filter(([_3, sizes2]) => hasGroups(sizes2)), + map(([scrollTop2, state, headerHeight2]) => findMaxKeyValue(state.groupOffsetTree, Math.max(scrollTop2 - headerHeight2, 0), "v")[0]), + distinctUntilChanged(), + map((index) => [index]) + ), + topItemsIndexes + ); + return { groupCounts, topItemsIndexes }; +}, tup(sizeSystem, domIOSystem)); +function tupleComparator(prev, current) { + return !!(prev && prev[0] === current[0] && prev[1] === current[1]); +} +function rangeComparator(prev, next) { + return !!(prev && prev.startIndex === next.startIndex && prev.endIndex === next.endIndex); +} +var TOP = "top"; +var BOTTOM = "bottom"; +var NONE = "none"; +function getOverscan(overscan, end, direction) { + if (typeof overscan === "number") { + return direction === UP && end === TOP || direction === DOWN && end === BOTTOM ? overscan : 0; + } else { + if (direction === UP) { + return end === TOP ? overscan.main : overscan.reverse; + } else { + return end === BOTTOM ? overscan.main : overscan.reverse; + } + } +} +function getViewportIncrease(value, end) { + return typeof value === "number" ? value : value[end] || 0; +} +var sizeRangeSystem = system( + ([{ scrollTop, viewportHeight, deviation, headerHeight, fixedHeaderHeight }]) => { + const listBoundary = stream(); + const topListHeight = statefulStream(0); + const increaseViewportBy = statefulStream(0); + const overscan = statefulStream(0); + const visibleRange = statefulStreamFromEmitter( + pipe( + combineLatest( + duc(scrollTop), + duc(viewportHeight), + duc(headerHeight), + duc(listBoundary, tupleComparator), + duc(overscan), + duc(topListHeight), + duc(fixedHeaderHeight), + duc(deviation), + duc(increaseViewportBy) + ), + map( + ([ + scrollTop2, + viewportHeight2, + headerHeight2, + [listTop, listBottom], + overscan2, + topListHeight2, + fixedHeaderHeight2, + deviation2, + increaseViewportBy2 + ]) => { + const top = scrollTop2 - deviation2; + const stickyHeaderHeight = topListHeight2 + fixedHeaderHeight2; + const headerVisible = Math.max(headerHeight2 - top, 0); + let direction = NONE; + const topViewportAddition = getViewportIncrease(increaseViewportBy2, TOP); + const bottomViewportAddition = getViewportIncrease(increaseViewportBy2, BOTTOM); + listTop -= deviation2; + listTop += headerHeight2 + fixedHeaderHeight2; + listBottom += headerHeight2 + fixedHeaderHeight2; + listBottom -= deviation2; + if (listTop > scrollTop2 + stickyHeaderHeight - topViewportAddition) { + direction = UP; + } + if (listBottom < scrollTop2 - headerVisible + viewportHeight2 + bottomViewportAddition) { + direction = DOWN; + } + if (direction !== NONE) { + return [ + Math.max(top - headerHeight2 - getOverscan(overscan2, TOP, direction) - topViewportAddition, 0), + top - headerVisible - fixedHeaderHeight2 + viewportHeight2 + getOverscan(overscan2, BOTTOM, direction) + bottomViewportAddition + ]; + } + return null; + } + ), + filter((value) => value != null), + distinctUntilChanged(tupleComparator) + ), + [0, 0] + ); + return { + listBoundary, + overscan, + topListHeight, + increaseViewportBy, + visibleRange + }; + }, + tup(domIOSystem), + { singleton: true } +); +function probeItemSet(index, sizes, data) { + if (hasGroups(sizes)) { + const itemIndex = originalIndexFromItemIndex(index, sizes); + const groupIndex = findMaxKeyValue(sizes.groupOffsetTree, itemIndex)[0]; + return [ + { index: groupIndex, size: 0, offset: 0 }, + { index: itemIndex, size: 0, offset: 0, data: data && data[0] } + ]; + } + return [{ index, size: 0, offset: 0, data: data && data[0] }]; +} +var EMPTY_LIST_STATE = { + items: [], + topItems: [], + offsetTop: 0, + offsetBottom: 0, + top: 0, + bottom: 0, + topListHeight: 0, + totalCount: 0, + firstItemIndex: 0 +}; +function transposeItems(items, sizes, firstItemIndex) { + if (items.length === 0) { + return []; + } + if (!hasGroups(sizes)) { + return items.map((item) => __spreadProps(__spreadValues({}, item), { index: item.index + firstItemIndex, originalIndex: item.index })); + } + const startIndex = items[0].index; + const endIndex = items[items.length - 1].index; + const transposedItems = []; + const groupRanges = rangesWithin(sizes.groupOffsetTree, startIndex, endIndex); + let currentRange = void 0; + let currentGroupIndex = 0; + for (const item of items) { + if (!currentRange || currentRange.end < item.index) { + currentRange = groupRanges.shift(); + currentGroupIndex = sizes.groupIndices.indexOf(currentRange.start); + } + let transposedItem; + if (item.index === currentRange.start) { + transposedItem = { + type: "group", + index: currentGroupIndex + }; + } else { + transposedItem = { + index: item.index - (currentGroupIndex + 1) + firstItemIndex, + groupIndex: currentGroupIndex + }; + } + transposedItems.push(__spreadProps(__spreadValues({}, transposedItem), { + size: item.size, + offset: item.offset, + originalIndex: item.index, + data: item.data + })); + } + return transposedItems; +} +function buildListState(items, topItems, totalCount, gap, sizes, firstItemIndex) { + const { lastSize, lastOffset, lastIndex } = sizes; + let offsetTop = 0; + let bottom = 0; + if (items.length > 0) { + offsetTop = items[0].offset; + const lastItem = items[items.length - 1]; + bottom = lastItem.offset + lastItem.size; + } + const itemCount = totalCount - lastIndex; + const total = lastOffset + itemCount * lastSize + (itemCount - 1) * gap; + const top = offsetTop; + const offsetBottom = total - bottom; + return { + items: transposeItems(items, sizes, firstItemIndex), + topItems: transposeItems(topItems, sizes, firstItemIndex), + topListHeight: topItems.reduce((height, item) => item.size + height, 0), + offsetTop, + offsetBottom, + top, + bottom, + totalCount, + firstItemIndex + }; +} +var listStateSystem = system( + ([ + { sizes, totalCount, data, firstItemIndex, gap }, + groupedListSystem2, + { visibleRange, listBoundary, topListHeight: rangeTopListHeight }, + { scrolledToInitialItem, initialTopMostItemIndex }, + { topListHeight }, + stateFlags, + { didMount }, + { recalcInProgress } + ]) => { + const topItemsIndexes = statefulStream([]); + const itemsRendered = stream(); + connect(groupedListSystem2.topItemsIndexes, topItemsIndexes); + const listState = statefulStreamFromEmitter( + pipe( + combineLatest( + didMount, + recalcInProgress, + duc(visibleRange, tupleComparator), + duc(totalCount), + duc(sizes), + duc(initialTopMostItemIndex), + scrolledToInitialItem, + duc(topItemsIndexes), + duc(firstItemIndex), + duc(gap), + data + ), + filter(([mount, recalcInProgress2, , totalCount2, , , , , , , data2]) => { + const dataChangeInProgress = data2 && data2.length !== totalCount2; + return mount && !recalcInProgress2 && !dataChangeInProgress; + }), + map( + ([ + , + , + [startOffset, endOffset], + totalCount2, + sizes2, + initialTopMostItemIndex2, + scrolledToInitialItem2, + topItemsIndexes2, + firstItemIndex2, + gap2, + data2 + ]) => { + const sizesValue = sizes2; + const { sizeTree, offsetTree } = sizesValue; + if (totalCount2 === 0 || startOffset === 0 && endOffset === 0) { + return __spreadProps(__spreadValues({}, EMPTY_LIST_STATE), { totalCount: totalCount2 }); + } + if (empty(sizeTree)) { + return buildListState( + probeItemSet(getInitialTopMostItemIndexNumber(initialTopMostItemIndex2, totalCount2), sizesValue, data2), + [], + totalCount2, + gap2, + sizesValue, + firstItemIndex2 + ); + } + const topItems = []; + if (topItemsIndexes2.length > 0) { + const startIndex = topItemsIndexes2[0]; + const endIndex = topItemsIndexes2[topItemsIndexes2.length - 1]; + let offset = 0; + for (const range of rangesWithin(sizeTree, startIndex, endIndex)) { + const size = range.value; + const rangeStartIndex = Math.max(range.start, startIndex); + const rangeEndIndex = Math.min(range.end, endIndex); + for (let i2 = rangeStartIndex; i2 <= rangeEndIndex; i2++) { + topItems.push({ index: i2, size, offset, data: data2 && data2[i2] }); + offset += size; + } + } + } + if (!scrolledToInitialItem2) { + return buildListState([], topItems, totalCount2, gap2, sizesValue, firstItemIndex2); + } + const minStartIndex = topItemsIndexes2.length > 0 ? topItemsIndexes2[topItemsIndexes2.length - 1] + 1 : 0; + const offsetPointRanges = rangesWithinOffsets(offsetTree, startOffset, endOffset, minStartIndex); + if (offsetPointRanges.length === 0) { + return null; + } + const maxIndex = totalCount2 - 1; + const items = tap([], (result) => { + for (const range of offsetPointRanges) { + const point = range.value; + let offset = point.offset; + let rangeStartIndex = range.start; + const size = point.size; + if (point.offset < startOffset) { + rangeStartIndex += Math.floor((startOffset - point.offset + gap2) / (size + gap2)); + const itemCount = rangeStartIndex - range.start; + offset += itemCount * size + itemCount * gap2; + } + if (rangeStartIndex < minStartIndex) { + offset += (minStartIndex - rangeStartIndex) * size; + rangeStartIndex = minStartIndex; + } + const endIndex = Math.min(range.end, maxIndex); + for (let i2 = rangeStartIndex; i2 <= endIndex; i2++) { + if (offset >= endOffset) { + break; + } + result.push({ index: i2, size, offset, data: data2 && data2[i2] }); + offset += size + gap2; + } + } + }); + return buildListState(items, topItems, totalCount2, gap2, sizesValue, firstItemIndex2); + } + ), + filter((value) => value !== null), + distinctUntilChanged() + ), + EMPTY_LIST_STATE + ); + connect( + pipe( + data, + filter(isDefined), + map((data2) => data2 == null ? void 0 : data2.length) + ), + totalCount + ); + connect( + pipe( + listState, + map((value) => value.topListHeight) + ), + topListHeight + ); + connect(topListHeight, rangeTopListHeight); + connect( + pipe( + listState, + map((state) => [state.top, state.bottom]) + ), + listBoundary + ); + connect( + pipe( + listState, + map((state) => state.items) + ), + itemsRendered + ); + const endReached = streamFromEmitter( + pipe( + listState, + filter(({ items }) => items.length > 0), + withLatestFrom(totalCount, data), + filter(([{ items }, totalCount2]) => items[items.length - 1].originalIndex === totalCount2 - 1), + map(([, totalCount2, data2]) => [totalCount2 - 1, data2]), + distinctUntilChanged(tupleComparator), + map(([count]) => count) + ) + ); + const startReached = streamFromEmitter( + pipe( + listState, + throttleTime(200), + filter(({ items, topItems }) => { + return items.length > 0 && items[0].originalIndex === topItems.length; + }), + map(({ items }) => items[0].index), + distinctUntilChanged() + ) + ); + const rangeChanged = streamFromEmitter( + pipe( + listState, + filter(({ items }) => items.length > 0), + map(({ items }) => { + let startIndex = 0; + let endIndex = items.length - 1; + while (items[startIndex].type === "group" && startIndex < endIndex) { + startIndex++; + } + while (items[endIndex].type === "group" && endIndex > startIndex) { + endIndex--; + } + return { + startIndex: items[startIndex].index, + endIndex: items[endIndex].index + }; + }), + distinctUntilChanged(rangeComparator) + ) + ); + return __spreadValues({ listState, topItemsIndexes, endReached, startReached, rangeChanged, itemsRendered }, stateFlags); + }, + tup( + sizeSystem, + groupedListSystem, + sizeRangeSystem, + initialTopMostItemIndexSystem, + scrollToIndexSystem, + stateFlagsSystem, + propsReadySystem, + recalcSystem + ), + { singleton: true } +); +var initialItemCountSystem = system( + ([{ sizes, firstItemIndex, data, gap }, { listState }, { didMount }]) => { + const initialItemCount = statefulStream(0); + connect( + pipe( + didMount, + withLatestFrom(initialItemCount), + filter(([, count]) => count !== 0), + withLatestFrom(sizes, firstItemIndex, gap, data), + map(([[, count], sizes2, firstItemIndex2, gap2, data2 = []]) => { + let includedGroupsCount = 0; + if (sizes2.groupIndices.length > 0) { + for (const index of sizes2.groupIndices) { + if (index - includedGroupsCount >= count) { + break; + } + includedGroupsCount++; + } + } + const adjustedCount = count + includedGroupsCount; + const items = Array.from({ length: adjustedCount }).map((_3, index) => ({ index, size: 0, offset: 0, data: data2[index] })); + return buildListState(items, [], adjustedCount, gap2, sizes2, firstItemIndex2); + }) + ), + listState + ); + return { initialItemCount }; + }, + tup(sizeSystem, listStateSystem, propsReadySystem), + { singleton: true } +); +var scrollSeekSystem = system( + ([{ scrollVelocity }]) => { + const isSeeking = statefulStream(false); + const rangeChanged = stream(); + const scrollSeekConfiguration = statefulStream(false); + connect( + pipe( + scrollVelocity, + withLatestFrom(scrollSeekConfiguration, isSeeking, rangeChanged), + filter(([_3, config]) => !!config), + map(([speed, config, isSeeking2, range]) => { + const { exit, enter } = config; + if (isSeeking2) { + if (exit(speed, range)) { + return false; + } + } else { + if (enter(speed, range)) { + return true; + } + } + return isSeeking2; + }), + distinctUntilChanged() + ), + isSeeking + ); + subscribe( + pipe(combineLatest(isSeeking, scrollVelocity, rangeChanged), withLatestFrom(scrollSeekConfiguration)), + ([[isSeeking2, velocity, range], config]) => isSeeking2 && config && config.change && config.change(velocity, range) + ); + return { isSeeking, scrollSeekConfiguration, scrollVelocity, scrollSeekRangeChanged: rangeChanged }; + }, + tup(stateFlagsSystem), + { singleton: true } +); +var topItemCountSystem = system(([{ topItemsIndexes }]) => { + const topItemCount = statefulStream(0); + connect( + pipe( + topItemCount, + filter((length) => length > 0), + map((length) => Array.from({ length }).map((_3, index) => index)) + ), + topItemsIndexes + ); + return { topItemCount }; +}, tup(listStateSystem)); +var totalListHeightSystem = system( + ([{ footerHeight, headerHeight, fixedHeaderHeight, fixedFooterHeight }, { listState }]) => { + const totalListHeightChanged = stream(); + const totalListHeight = statefulStreamFromEmitter( + pipe( + combineLatest(footerHeight, fixedFooterHeight, headerHeight, fixedHeaderHeight, listState), + map(([footerHeight2, fixedFooterHeight2, headerHeight2, fixedHeaderHeight2, listState2]) => { + return footerHeight2 + fixedFooterHeight2 + headerHeight2 + fixedHeaderHeight2 + listState2.offsetBottom + listState2.bottom; + }) + ), + 0 + ); + connect(duc(totalListHeight), totalListHeightChanged); + return { totalListHeight, totalListHeightChanged }; + }, + tup(domIOSystem, listStateSystem), + { singleton: true } +); +function simpleMemoize(func) { + let called = false; + let result; + return () => { + if (!called) { + called = true; + result = func(); + } + return result; + }; +} +var isMobileSafari = simpleMemoize(() => { + return /iP(ad|od|hone)/i.test(navigator.userAgent) && /WebKit/i.test(navigator.userAgent); +}); +var upwardScrollFixSystem = system( + ([ + { scrollBy, scrollTop, deviation, scrollingInProgress }, + { isScrolling, isAtBottom, scrollDirection, lastJumpDueToItemResize }, + { listState }, + { beforeUnshiftWith, shiftWithOffset, sizes, gap }, + { log: log2 }, + { recalcInProgress } + ]) => { + const deviationOffset = streamFromEmitter( + pipe( + listState, + withLatestFrom(lastJumpDueToItemResize), + scan( + ([, prevItems, prevTotalCount, prevTotalHeight], [{ items, totalCount, bottom, offsetBottom }, lastJumpDueToItemResize2]) => { + const totalHeight = bottom + offsetBottom; + let newDev = 0; + if (prevTotalCount === totalCount) { + if (prevItems.length > 0 && items.length > 0) { + const atStart = items[0].originalIndex === 0 && prevItems[0].originalIndex === 0; + if (!atStart) { + newDev = totalHeight - prevTotalHeight; + if (newDev !== 0) { + newDev += lastJumpDueToItemResize2; + } + } + } + } + return [newDev, items, totalCount, totalHeight]; + }, + [0, [], 0, 0] + ), + filter(([amount]) => amount !== 0), + withLatestFrom(scrollTop, scrollDirection, scrollingInProgress, isAtBottom, log2, recalcInProgress), + filter(([, scrollTop2, scrollDirection2, scrollingInProgress2, , , recalcInProgress2]) => { + return !recalcInProgress2 && !scrollingInProgress2 && scrollTop2 !== 0 && scrollDirection2 === UP; + }), + map(([[amount], , , , , log22]) => { + log22("Upward scrolling compensation", { amount }, LogLevel.DEBUG); + return amount; + }) + ) + ); + function scrollByWith(offset) { + if (offset > 0) { + publish(scrollBy, { top: -offset, behavior: "auto" }); + publish(deviation, 0); + } else { + publish(deviation, 0); + publish(scrollBy, { top: -offset, behavior: "auto" }); + } + } + subscribe(pipe(deviationOffset, withLatestFrom(deviation, isScrolling)), ([offset, deviationAmount, isScrolling2]) => { + if (isScrolling2 && isMobileSafari()) { + publish(deviation, deviationAmount - offset); + } else { + scrollByWith(-offset); + } + }); + subscribe( + pipe( + combineLatest(statefulStreamFromEmitter(isScrolling, false), deviation, recalcInProgress), + filter(([is, deviation2, recalc]) => !is && !recalc && deviation2 !== 0), + map(([_3, deviation2]) => deviation2), + throttleTime(1) + ), + scrollByWith + ); + connect( + pipe( + shiftWithOffset, + map((offset) => { + return { top: -offset }; + }) + ), + scrollBy + ); + subscribe( + pipe( + beforeUnshiftWith, + withLatestFrom(sizes, gap), + map(([offset, { lastSize: defaultItemSize, groupIndices, sizeTree }, gap2]) => { + function getItemOffset(itemCount) { + return itemCount * (defaultItemSize + gap2); + } + if (groupIndices.length === 0) { + return getItemOffset(offset); + } else { + let amount = 0; + const defaultGroupSize = find(sizeTree, 0); + let recognizedOffsetItems = 0; + let groupIndex = 0; + while (recognizedOffsetItems < offset) { + recognizedOffsetItems++; + amount += defaultGroupSize; + let groupItemCount = groupIndices.length === groupIndex + 1 ? Infinity : groupIndices[groupIndex + 1] - groupIndices[groupIndex] - 1; + if (recognizedOffsetItems + groupItemCount > offset) { + amount -= defaultGroupSize; + groupItemCount = offset - recognizedOffsetItems + 1; + } + recognizedOffsetItems += groupItemCount; + amount += getItemOffset(groupItemCount); + groupIndex++; + } + return amount; + } + }) + ), + (offset) => { + publish(deviation, offset); + requestAnimationFrame(() => { + publish(scrollBy, { top: offset }); + requestAnimationFrame(() => { + publish(deviation, 0); + publish(recalcInProgress, false); + }); + }); + } + ); + return { deviation }; + }, + tup(domIOSystem, stateFlagsSystem, listStateSystem, sizeSystem, loggerSystem, recalcSystem) +); +var initialScrollTopSystem = system( + ([{ didMount }, { scrollTo }, { listState }]) => { + const initialScrollTop = statefulStream(0); + subscribe( + pipe( + didMount, + withLatestFrom(initialScrollTop), + filter(([, offset]) => offset !== 0), + map(([, offset]) => ({ top: offset })) + ), + (location) => { + handleNext( + pipe( + listState, + skip(1), + filter((state) => state.items.length > 1) + ), + () => { + requestAnimationFrame(() => { + publish(scrollTo, location); + }); + } + ); + } + ); + return { + initialScrollTop + }; + }, + tup(propsReadySystem, domIOSystem, listStateSystem), + { singleton: true } +); +var alignToBottomSystem = system( + ([{ viewportHeight }, { totalListHeight }]) => { + const alignToBottom = statefulStream(false); + const paddingTopAddition = statefulStreamFromEmitter( + pipe( + combineLatest(alignToBottom, viewportHeight, totalListHeight), + filter(([enabled]) => enabled), + map(([, viewportHeight2, totalListHeight2]) => { + return Math.max(0, viewportHeight2 - totalListHeight2); + }), + throttleTime(0), + distinctUntilChanged() + ), + 0 + ); + return { alignToBottom, paddingTopAddition }; + }, + tup(domIOSystem, totalListHeightSystem), + { singleton: true } +); +var windowScrollerSystem = system(([{ scrollTo, scrollContainerState }]) => { + const windowScrollContainerState = stream(); + const windowViewportRect = stream(); + const windowScrollTo = stream(); + const useWindowScroll = statefulStream(false); + const customScrollParent = statefulStream(void 0); + connect( + pipe( + combineLatest(windowScrollContainerState, windowViewportRect), + map(([{ viewportHeight, scrollTop: windowScrollTop, scrollHeight }, { offsetTop }]) => { + return { + scrollTop: Math.max(0, windowScrollTop - offsetTop), + scrollHeight, + viewportHeight + }; + }) + ), + scrollContainerState + ); + connect( + pipe( + scrollTo, + withLatestFrom(windowViewportRect), + map(([scrollTo2, { offsetTop }]) => { + return __spreadProps(__spreadValues({}, scrollTo2), { + top: scrollTo2.top + offsetTop + }); + }) + ), + windowScrollTo + ); + return { + useWindowScroll, + customScrollParent, + windowScrollContainerState, + windowViewportRect, + windowScrollTo + }; +}, tup(domIOSystem)); +var defaultCalculateViewLocation = (_a) => { + var { + itemTop: itemTop2, + itemBottom, + viewportTop, + viewportBottom, + locationParams: _b + } = _a, _c = _b, { behavior, align } = _c, rest = __objRest(_c, ["behavior", "align"]); + if (itemTop2 < viewportTop) { + return __spreadProps(__spreadValues({}, rest), { behavior, align: align != null ? align : "start" }); + } + if (itemBottom > viewportBottom) { + return __spreadProps(__spreadValues({}, rest), { behavior, align: align != null ? align : "end" }); + } + return null; +}; +var scrollIntoViewSystem = system( + ([ + { sizes, totalCount, gap }, + { scrollTop, viewportHeight, headerHeight, fixedHeaderHeight, fixedFooterHeight, scrollingInProgress }, + { scrollToIndex } + ]) => { + const scrollIntoView = stream(); + connect( + pipe( + scrollIntoView, + withLatestFrom(sizes, viewportHeight, totalCount, headerHeight, fixedHeaderHeight, fixedFooterHeight, scrollTop), + withLatestFrom(gap), + map(([[viewLocation, sizes2, viewportHeight2, totalCount2, headerHeight2, fixedHeaderHeight2, fixedFooterHeight2, scrollTop2], gap2]) => { + const _a = viewLocation, { done, behavior, align, calculateViewLocation = defaultCalculateViewLocation } = _a, rest = __objRest(_a, ["done", "behavior", "align", "calculateViewLocation"]); + const actualIndex = originalIndexFromLocation(viewLocation, sizes2, totalCount2 - 1); + const itemTop2 = offsetOf(actualIndex, sizes2.offsetTree, gap2) + headerHeight2 + fixedHeaderHeight2; + const itemBottom = itemTop2 + findMaxKeyValue(sizes2.sizeTree, actualIndex)[1]; + const viewportTop = scrollTop2 + fixedHeaderHeight2; + const viewportBottom = scrollTop2 + viewportHeight2 - fixedFooterHeight2; + const location = calculateViewLocation({ + itemTop: itemTop2, + itemBottom, + viewportTop, + viewportBottom, + locationParams: __spreadValues({ behavior, align }, rest) + }); + if (location) { + done && handleNext( + pipe( + scrollingInProgress, + filter((value) => value === false), + skip(getValue(scrollingInProgress) ? 1 : 2) + ), + done + ); + } else { + done && done(); + } + return location; + }), + filter((value) => value !== null) + ), + scrollToIndex + ); + return { + scrollIntoView + }; + }, + tup(sizeSystem, domIOSystem, scrollToIndexSystem, listStateSystem, loggerSystem), + { singleton: true } +); +var stateLoadSystem = system(([{ sizes, sizeRanges }, { scrollTop }, { initialTopMostItemIndex }, { didMount }]) => { + const getState = stream(); + const restoreStateFrom = statefulStream(void 0); + subscribe(pipe(getState, withLatestFrom(sizes, scrollTop)), ([callback, sizes2, scrollTop2]) => { + const ranges = sizeTreeToRanges(sizes2.sizeTree); + callback({ ranges, scrollTop: scrollTop2 }); + }); + connect(pipe(restoreStateFrom, filter(isDefined), map(locationFromSnapshot)), initialTopMostItemIndex); + connect( + pipe( + didMount, + withLatestFrom(restoreStateFrom), + filter(([, state]) => state !== void 0), + distinctUntilChanged(), + map(([, snapshot]) => { + return snapshot.ranges; + }) + ), + sizeRanges + ); + return { + getState, + restoreStateFrom + }; +}, tup(sizeSystem, domIOSystem, initialTopMostItemIndexSystem, propsReadySystem)); +function locationFromSnapshot(snapshot) { + return { offset: snapshot.scrollTop, index: 0, align: "start" }; +} +var featureGroup1System = system( + ([ + sizeRange, + initialItemCount, + propsReady, + scrollSeek, + totalListHeight, + initialScrollTopSystem2, + alignToBottom, + windowScroller, + scrollIntoView, + logger + ]) => { + return __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, sizeRange), initialItemCount), propsReady), scrollSeek), totalListHeight), initialScrollTopSystem2), alignToBottom), windowScroller), scrollIntoView), logger); + }, + tup( + sizeRangeSystem, + initialItemCountSystem, + propsReadySystem, + scrollSeekSystem, + totalListHeightSystem, + initialScrollTopSystem, + alignToBottomSystem, + windowScrollerSystem, + scrollIntoViewSystem, + loggerSystem + ) +); +var listSystem = system( + (_a) => { + var [ + { + totalCount, + sizeRanges, + fixedItemSize, + defaultItemSize, + trackItemSizes, + itemSize, + data, + firstItemIndex, + groupIndices, + statefulTotalCount, + gap, + sizes + }, + { initialTopMostItemIndex, scrolledToInitialItem }, + domIO, + stateLoad, + followOutput, + _b, + ..._c + ] = _a, _d = _b, { listState, topItemsIndexes } = _d, flags = __objRest(_d, ["listState", "topItemsIndexes"]), [ + { scrollToIndex }, + _3, + { topItemCount }, + { groupCounts }, + featureGroup1 + ] = _c; + connect(flags.rangeChanged, featureGroup1.scrollSeekRangeChanged); + connect( + pipe( + featureGroup1.windowViewportRect, + map((value) => value.visibleHeight) + ), + domIO.viewportHeight + ); + return __spreadValues(__spreadProps(__spreadValues(__spreadValues(__spreadValues(__spreadProps(__spreadValues({ + totalCount, + data, + firstItemIndex, + sizeRanges, + initialTopMostItemIndex, + scrolledToInitialItem, + topItemsIndexes, + topItemCount, + groupCounts, + fixedItemHeight: fixedItemSize, + defaultItemHeight: defaultItemSize, + gap + }, followOutput), { + statefulTotalCount, + listState, + scrollToIndex, + trackItemSizes, + itemSize, + groupIndices + }), flags), featureGroup1), domIO), { + sizes + }), stateLoad); + }, + tup( + sizeSystem, + initialTopMostItemIndexSystem, + domIOSystem, + stateLoadSystem, + followOutputSystem, + listStateSystem, + scrollToIndexSystem, + upwardScrollFixSystem, + topItemCountSystem, + groupedListSystem, + featureGroup1System + ) +); +var WEBKIT_STICKY = "-webkit-sticky"; +var STICKY = "sticky"; +var positionStickyCssValue = simpleMemoize(() => { + if (typeof document === "undefined") { + return STICKY; + } + const node = document.createElement("div"); + node.style.position = WEBKIT_STICKY; + return node.style.position === WEBKIT_STICKY ? WEBKIT_STICKY : STICKY; +}); +function useWindowViewportRectRef(callback, customScrollParent) { + const viewportInfo = import_react2.default.useRef(null); + const calculateInfo = import_react2.default.useCallback( + (element) => { + if (element === null || !element.offsetParent) { + return; + } + const rect = element.getBoundingClientRect(); + const visibleWidth = rect.width; + let visibleHeight, offsetTop; + if (customScrollParent) { + const customScrollParentRect = customScrollParent.getBoundingClientRect(); + const deltaTop = rect.top - customScrollParentRect.top; + visibleHeight = customScrollParentRect.height - Math.max(0, deltaTop); + offsetTop = deltaTop + customScrollParent.scrollTop; + } else { + visibleHeight = window.innerHeight - Math.max(0, rect.top); + offsetTop = rect.top + window.pageYOffset; + } + viewportInfo.current = { + offsetTop, + visibleHeight, + visibleWidth + }; + callback(viewportInfo.current); + }, + [callback, customScrollParent] + ); + const { callbackRef, ref } = useSizeWithElRef(calculateInfo); + const scrollAndResizeEventHandler = import_react2.default.useCallback(() => { + calculateInfo(ref.current); + }, [calculateInfo, ref]); + import_react2.default.useEffect(() => { + if (customScrollParent) { + customScrollParent.addEventListener("scroll", scrollAndResizeEventHandler); + const observer = new ResizeObserver(scrollAndResizeEventHandler); + observer.observe(customScrollParent); + return () => { + customScrollParent.removeEventListener("scroll", scrollAndResizeEventHandler); + observer.unobserve(customScrollParent); + }; + } else { + window.addEventListener("scroll", scrollAndResizeEventHandler); + window.addEventListener("resize", scrollAndResizeEventHandler); + return () => { + window.removeEventListener("scroll", scrollAndResizeEventHandler); + window.removeEventListener("resize", scrollAndResizeEventHandler); + }; + } + }, [scrollAndResizeEventHandler, customScrollParent]); + return callbackRef; +} +var VirtuosoMockContext = import_react2.default.createContext(void 0); +var VirtuosoGridMockContext = import_react2.default.createContext(void 0); +function identity(value) { + return value; +} +var listComponentPropsSystem = /* @__PURE__ */ system(() => { + const itemContent = statefulStream((index) => `Item ${index}`); + const context = statefulStream(null); + const groupContent = statefulStream((index) => `Group ${index}`); + const components = statefulStream({}); + const computeItemKey = statefulStream(identity); + const headerFooterTag = statefulStream("div"); + const scrollerRef = statefulStream(noop); + const distinctProp = (propName, defaultValue = null) => { + return statefulStreamFromEmitter( + pipe( + components, + map((components2) => components2[propName]), + distinctUntilChanged() + ), + defaultValue + ); + }; + return { + context, + itemContent, + groupContent, + components, + computeItemKey, + headerFooterTag, + scrollerRef, + FooterComponent: distinctProp("Footer"), + HeaderComponent: distinctProp("Header"), + TopItemListComponent: distinctProp("TopItemList"), + ListComponent: distinctProp("List", "div"), + ItemComponent: distinctProp("Item", "div"), + GroupComponent: distinctProp("Group", "div"), + ScrollerComponent: distinctProp("Scroller", "div"), + EmptyPlaceholder: distinctProp("EmptyPlaceholder"), + ScrollSeekPlaceholder: distinctProp("ScrollSeekPlaceholder") + }; +}); +var combinedSystem$2 = /* @__PURE__ */ system(([listSystem2, propsSystem]) => { + return __spreadValues(__spreadValues({}, listSystem2), propsSystem); +}, tup(listSystem, listComponentPropsSystem)); +var DefaultScrollSeekPlaceholder$1 = ({ height }) => /* @__PURE__ */ import_react2.default.createElement("div", { style: { height } }); +var GROUP_STYLE = { position: positionStickyCssValue(), zIndex: 1, overflowAnchor: "none" }; +var ITEM_STYLE = { overflowAnchor: "none" }; +var Items$1 = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems({ showTopList = false }) { + const listState = useEmitterValue$2("listState"); + const sizeRanges = usePublisher$2("sizeRanges"); + const useWindowScroll = useEmitterValue$2("useWindowScroll"); + const customScrollParent = useEmitterValue$2("customScrollParent"); + const windowScrollContainerStateCallback = usePublisher$2("windowScrollContainerState"); + const _scrollContainerStateCallback = usePublisher$2("scrollContainerState"); + const scrollContainerStateCallback = customScrollParent || useWindowScroll ? windowScrollContainerStateCallback : _scrollContainerStateCallback; + const itemContent = useEmitterValue$2("itemContent"); + const context = useEmitterValue$2("context"); + const groupContent = useEmitterValue$2("groupContent"); + const trackItemSizes = useEmitterValue$2("trackItemSizes"); + const itemSize = useEmitterValue$2("itemSize"); + const log2 = useEmitterValue$2("log"); + const listGap = usePublisher$2("gap"); + const { callbackRef } = useChangedListContentsSizes( + sizeRanges, + itemSize, + trackItemSizes, + showTopList ? noop : scrollContainerStateCallback, + log2, + listGap, + customScrollParent + ); + const [deviation, setDeviation] = import_react2.default.useState(0); + useEmitter$2("deviation", (value) => { + if (deviation !== value) { + setDeviation(value); + } + }); + const EmptyPlaceholder = useEmitterValue$2("EmptyPlaceholder"); + const ScrollSeekPlaceholder = useEmitterValue$2("ScrollSeekPlaceholder") || DefaultScrollSeekPlaceholder$1; + const ListComponent = useEmitterValue$2("ListComponent"); + const ItemComponent = useEmitterValue$2("ItemComponent"); + const GroupComponent = useEmitterValue$2("GroupComponent"); + const computeItemKey = useEmitterValue$2("computeItemKey"); + const isSeeking = useEmitterValue$2("isSeeking"); + const hasGroups2 = useEmitterValue$2("groupIndices").length > 0; + const paddingTopAddition = useEmitterValue$2("paddingTopAddition"); + const scrolledToInitialItem = useEmitterValue$2("scrolledToInitialItem"); + const containerStyle2 = showTopList ? {} : __spreadValues({ + boxSizing: "border-box", + paddingTop: listState.offsetTop + paddingTopAddition, + paddingBottom: listState.offsetBottom, + marginTop: deviation + }, scrolledToInitialItem ? {} : { visibility: "hidden" }); + if (!showTopList && listState.totalCount === 0 && EmptyPlaceholder) { + return import_react2.default.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context)); + } + return import_react2.default.createElement( + ListComponent, + __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ListComponent, context)), { + ref: callbackRef, + style: containerStyle2, + "data-test-id": showTopList ? "virtuoso-top-item-list" : "virtuoso-item-list" + }), + (showTopList ? listState.topItems : listState.items).map((item) => { + const index = item.originalIndex; + const key = computeItemKey(index + listState.firstItemIndex, item.data, context); + if (isSeeking) { + return import_react2.default.createElement(ScrollSeekPlaceholder, __spreadValues(__spreadProps(__spreadValues({}, contextPropIfNotDomElement(ScrollSeekPlaceholder, context)), { + key, + index: item.index, + height: item.size, + type: item.type || "item" + }), item.type === "group" ? {} : { groupIndex: item.groupIndex })); + } + if (item.type === "group") { + return import_react2.default.createElement( + GroupComponent, + __spreadProps(__spreadValues({}, contextPropIfNotDomElement(GroupComponent, context)), { + key, + "data-index": index, + "data-known-size": item.size, + "data-item-index": item.index, + style: GROUP_STYLE + }), + groupContent(item.index, context) + ); + } else { + return import_react2.default.createElement( + ItemComponent, + __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ItemComponent, context)), { + key, + "data-index": index, + "data-known-size": item.size, + "data-item-index": item.index, + "data-item-group-index": item.groupIndex, + item: item.data, + style: ITEM_STYLE + }), + hasGroups2 ? itemContent(item.index, item.groupIndex, item.data, context) : itemContent(item.index, item.data, context) + ); + } + }) + ); +}); +var scrollerStyle = { + height: "100%", + outline: "none", + overflowY: "auto", + position: "relative", + WebkitOverflowScrolling: "touch" +}; +var viewportStyle = { + width: "100%", + height: "100%", + position: "absolute", + top: 0 +}; +var topItemListStyle = { + width: "100%", + position: positionStickyCssValue(), + top: 0, + zIndex: 1 +}; +function contextPropIfNotDomElement(element, context) { + if (typeof element === "string") { + return void 0; + } + return { context }; +} +var Header$1 = /* @__PURE__ */ import_react2.default.memo(function VirtuosoHeader() { + const Header2 = useEmitterValue$2("HeaderComponent"); + const headerHeight = usePublisher$2("headerHeight"); + const headerFooterTag = useEmitterValue$2("headerFooterTag"); + const ref = useSize((el) => headerHeight(correctItemSize(el, "height"))); + const context = useEmitterValue$2("context"); + return Header2 ? import_react2.default.createElement(headerFooterTag, { ref }, import_react2.default.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null; +}); +var Footer$1 = /* @__PURE__ */ import_react2.default.memo(function VirtuosoFooter() { + const Footer2 = useEmitterValue$2("FooterComponent"); + const footerHeight = usePublisher$2("footerHeight"); + const headerFooterTag = useEmitterValue$2("headerFooterTag"); + const ref = useSize((el) => footerHeight(correctItemSize(el, "height"))); + const context = useEmitterValue$2("context"); + return Footer2 ? import_react2.default.createElement(headerFooterTag, { ref }, import_react2.default.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null; +}); +function buildScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, useEmitterValue: useEmitterValue2 }) { + const Scroller2 = import_react2.default.memo(function VirtuosoScroller(_a) { + var _b = _a, { style, children } = _b, props = __objRest(_b, ["style", "children"]); + const scrollContainerStateCallback = usePublisher2("scrollContainerState"); + const ScrollerComponent = useEmitterValue2("ScrollerComponent"); + const smoothScrollTargetReached = usePublisher2("smoothScrollTargetReached"); + const scrollerRefCallback = useEmitterValue2("scrollerRef"); + const context = useEmitterValue2("context"); + const { scrollerRef, scrollByCallback, scrollToCallback } = useScrollTop( + scrollContainerStateCallback, + smoothScrollTargetReached, + ScrollerComponent, + scrollerRefCallback + ); + useEmitter2("scrollTo", scrollToCallback); + useEmitter2("scrollBy", scrollByCallback); + return import_react2.default.createElement( + ScrollerComponent, + __spreadValues(__spreadValues({ + ref: scrollerRef, + style: __spreadValues(__spreadValues({}, scrollerStyle), style), + "data-test-id": "virtuoso-scroller", + "data-virtuoso-scroller": true, + tabIndex: 0 + }, props), contextPropIfNotDomElement(ScrollerComponent, context)), + children + ); + }); + return Scroller2; +} +function buildWindowScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, useEmitterValue: useEmitterValue2 }) { + const Scroller2 = import_react2.default.memo(function VirtuosoWindowScroller(_a) { + var _b = _a, { style, children } = _b, props = __objRest(_b, ["style", "children"]); + const scrollContainerStateCallback = usePublisher2("windowScrollContainerState"); + const ScrollerComponent = useEmitterValue2("ScrollerComponent"); + const smoothScrollTargetReached = usePublisher2("smoothScrollTargetReached"); + const totalListHeight = useEmitterValue2("totalListHeight"); + const deviation = useEmitterValue2("deviation"); + const customScrollParent = useEmitterValue2("customScrollParent"); + const context = useEmitterValue2("context"); + const { scrollerRef, scrollByCallback, scrollToCallback } = useScrollTop( + scrollContainerStateCallback, + smoothScrollTargetReached, + ScrollerComponent, + noop, + customScrollParent + ); + useIsomorphicLayoutEffect$1(() => { + scrollerRef.current = customScrollParent ? customScrollParent : window; + return () => { + scrollerRef.current = null; + }; + }, [scrollerRef, customScrollParent]); + useEmitter2("windowScrollTo", scrollToCallback); + useEmitter2("scrollBy", scrollByCallback); + return import_react2.default.createElement( + ScrollerComponent, + __spreadValues(__spreadValues({ + style: __spreadValues(__spreadValues({ position: "relative" }, style), totalListHeight !== 0 ? { height: totalListHeight + deviation } : {}), + "data-virtuoso-scroller": true + }, props), contextPropIfNotDomElement(ScrollerComponent, context)), + children + ); + }); + return Scroller2; +} +var Viewport$2 = ({ children }) => { + const ctx = import_react2.default.useContext(VirtuosoMockContext); + const viewportHeight = usePublisher$2("viewportHeight"); + const fixedItemHeight = usePublisher$2("fixedItemHeight"); + const viewportRef = useSize(compose2(viewportHeight, (el) => correctItemSize(el, "height"))); + import_react2.default.useEffect(() => { + if (ctx) { + viewportHeight(ctx.viewportHeight); + fixedItemHeight(ctx.itemHeight); + } + }, [ctx, viewportHeight, fixedItemHeight]); + return /* @__PURE__ */ import_react2.default.createElement("div", { style: viewportStyle, ref: viewportRef, "data-viewport-type": "element" }, children); +}; +var WindowViewport$2 = ({ children }) => { + const ctx = import_react2.default.useContext(VirtuosoMockContext); + const windowViewportRect = usePublisher$2("windowViewportRect"); + const fixedItemHeight = usePublisher$2("fixedItemHeight"); + const customScrollParent = useEmitterValue$2("customScrollParent"); + const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent); + import_react2.default.useEffect(() => { + if (ctx) { + fixedItemHeight(ctx.itemHeight); + windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: 100 }); + } + }, [ctx, windowViewportRect, fixedItemHeight]); + return /* @__PURE__ */ import_react2.default.createElement("div", { ref: viewportRef, style: viewportStyle, "data-viewport-type": "window" }, children); +}; +var TopItemListContainer = ({ children }) => { + const TopItemList = useEmitterValue$2("TopItemListComponent"); + const headerHeight = useEmitterValue$2("headerHeight"); + const style = __spreadProps(__spreadValues({}, topItemListStyle), { marginTop: `${headerHeight}px` }); + const context = useEmitterValue$2("context"); + return import_react2.default.createElement(TopItemList || "div", { style, context }, children); +}; +var ListRoot = /* @__PURE__ */ import_react2.default.memo(function VirtuosoRoot(props) { + const useWindowScroll = useEmitterValue$2("useWindowScroll"); + const showTopList = useEmitterValue$2("topItemsIndexes").length > 0; + const customScrollParent = useEmitterValue$2("customScrollParent"); + const TheScroller = customScrollParent || useWindowScroll ? WindowScroller$2 : Scroller$2; + const TheViewport = customScrollParent || useWindowScroll ? WindowViewport$2 : Viewport$2; + return /* @__PURE__ */ import_react2.default.createElement(TheScroller, __spreadValues({}, props), showTopList && /* @__PURE__ */ import_react2.default.createElement(TopItemListContainer, null, /* @__PURE__ */ import_react2.default.createElement(Items$1, { showTopList: true })), /* @__PURE__ */ import_react2.default.createElement(TheViewport, null, /* @__PURE__ */ import_react2.default.createElement(Header$1, null), /* @__PURE__ */ import_react2.default.createElement(Items$1, null), /* @__PURE__ */ import_react2.default.createElement(Footer$1, null))); +}); +var { + Component: List, + usePublisher: usePublisher$2, + useEmitterValue: useEmitterValue$2, + useEmitter: useEmitter$2 +} = /* @__PURE__ */ systemToComponent( + combinedSystem$2, + { + required: {}, + optional: { + restoreStateFrom: "restoreStateFrom", + context: "context", + followOutput: "followOutput", + itemContent: "itemContent", + groupContent: "groupContent", + overscan: "overscan", + increaseViewportBy: "increaseViewportBy", + totalCount: "totalCount", + groupCounts: "groupCounts", + topItemCount: "topItemCount", + firstItemIndex: "firstItemIndex", + initialTopMostItemIndex: "initialTopMostItemIndex", + components: "components", + atBottomThreshold: "atBottomThreshold", + atTopThreshold: "atTopThreshold", + computeItemKey: "computeItemKey", + defaultItemHeight: "defaultItemHeight", + fixedItemHeight: "fixedItemHeight", + itemSize: "itemSize", + scrollSeekConfiguration: "scrollSeekConfiguration", + headerFooterTag: "headerFooterTag", + data: "data", + initialItemCount: "initialItemCount", + initialScrollTop: "initialScrollTop", + alignToBottom: "alignToBottom", + useWindowScroll: "useWindowScroll", + customScrollParent: "customScrollParent", + scrollerRef: "scrollerRef", + logLevel: "logLevel" + }, + methods: { + scrollToIndex: "scrollToIndex", + scrollIntoView: "scrollIntoView", + scrollTo: "scrollTo", + scrollBy: "scrollBy", + autoscrollToBottom: "autoscrollToBottom", + getState: "getState" + }, + events: { + isScrolling: "isScrolling", + endReached: "endReached", + startReached: "startReached", + rangeChanged: "rangeChanged", + atBottomStateChange: "atBottomStateChange", + atTopStateChange: "atTopStateChange", + totalListHeightChanged: "totalListHeightChanged", + itemsRendered: "itemsRendered", + groupIndices: "groupIndices" + } + }, + ListRoot +); +var Scroller$2 = /* @__PURE__ */ buildScroller({ usePublisher: usePublisher$2, useEmitterValue: useEmitterValue$2, useEmitter: useEmitter$2 }); +var WindowScroller$2 = /* @__PURE__ */ buildWindowScroller({ usePublisher: usePublisher$2, useEmitterValue: useEmitterValue$2, useEmitter: useEmitter$2 }); +var INITIAL_GRID_STATE = { + items: [], + offsetBottom: 0, + offsetTop: 0, + top: 0, + bottom: 0, + itemHeight: 0, + itemWidth: 0 +}; +var PROBE_GRID_STATE = { + items: [{ index: 0 }], + offsetBottom: 0, + offsetTop: 0, + top: 0, + bottom: 0, + itemHeight: 0, + itemWidth: 0 +}; +var { round, ceil, floor, min, max } = Math; +function buildProbeGridState(items) { + return __spreadProps(__spreadValues({}, PROBE_GRID_STATE), { + items + }); +} +function buildItems(startIndex, endIndex, data) { + return Array.from({ length: endIndex - startIndex + 1 }).map( + (_3, i2) => ({ index: i2 + startIndex, data: data == null ? void 0 : data[i2 + startIndex] }) + ); +} +function gapComparator(prev, next) { + return prev && prev.column === next.column && prev.row === next.row; +} +function dimensionComparator(prev, next) { + return prev && prev.width === next.width && prev.height === next.height; +} +var gridSystem = /* @__PURE__ */ system( + ([ + { overscan, visibleRange, listBoundary }, + { scrollTop, viewportHeight, scrollBy, scrollTo, smoothScrollTargetReached, scrollContainerState, footerHeight, headerHeight }, + stateFlags, + scrollSeek, + { propsReady, didMount }, + { windowViewportRect, windowScrollTo, useWindowScroll, customScrollParent, windowScrollContainerState }, + log2 + ]) => { + const totalCount = statefulStream(0); + const initialItemCount = statefulStream(0); + const gridState = statefulStream(INITIAL_GRID_STATE); + const viewportDimensions = statefulStream({ height: 0, width: 0 }); + const itemDimensions = statefulStream({ height: 0, width: 0 }); + const scrollToIndex = stream(); + const scrollHeight = stream(); + const deviation = statefulStream(0); + const data = statefulStream(void 0); + const gap = statefulStream({ row: 0, column: 0 }); + connect( + pipe( + didMount, + withLatestFrom(initialItemCount, data), + filter(([didMount2, count]) => didMount2 && count !== 0), + map(([, count, data2]) => { + return { + items: buildItems(0, count - 1, data2), + top: 0, + bottom: 0, + offsetBottom: 0, + offsetTop: 0, + itemHeight: 0, + itemWidth: 0 + }; + }) + ), + gridState + ); + connect( + pipe( + combineLatest( + duc(totalCount), + visibleRange, + duc(gap, gapComparator), + duc(itemDimensions, dimensionComparator), + duc(viewportDimensions, dimensionComparator), + data + ), + map(([totalCount2, [startOffset, endOffset], gap2, item, viewport, data2]) => { + const { row: rowGap, column: columnGap } = gap2; + const { height: itemHeight, width: itemWidth } = item; + const { width: viewportWidth } = viewport; + if (totalCount2 === 0 || viewportWidth === 0) { + return INITIAL_GRID_STATE; + } + if (itemWidth === 0) { + return buildProbeGridState(buildItems(0, 0, data2)); + } + const perRow = itemsPerRow(viewportWidth, itemWidth, columnGap); + let startIndex = perRow * floor((startOffset + rowGap) / (itemHeight + rowGap)); + let endIndex = perRow * ceil((endOffset + rowGap) / (itemHeight + rowGap)) - 1; + endIndex = min(totalCount2 - 1, max(endIndex, perRow - 1)); + startIndex = min(endIndex, max(0, startIndex)); + const items = buildItems(startIndex, endIndex, data2); + const { top, bottom } = gridLayout(viewport, gap2, item, items); + const rowCount = ceil(totalCount2 / perRow); + const totalHeight = rowCount * itemHeight + (rowCount - 1) * rowGap; + const offsetBottom = totalHeight - bottom; + return { items, offsetTop: top, offsetBottom, top, bottom, itemHeight, itemWidth }; + }) + ), + gridState + ); + connect( + pipe( + data, + filter(isDefined), + map((data2) => data2.length) + ), + totalCount + ); + connect( + pipe( + viewportDimensions, + map(({ height }) => height) + ), + viewportHeight + ); + connect( + pipe( + combineLatest(viewportDimensions, itemDimensions, gridState, gap), + map(([viewportDimensions2, item, { items }, gap2]) => { + const { top, bottom } = gridLayout(viewportDimensions2, gap2, item, items); + return [top, bottom]; + }), + distinctUntilChanged(tupleComparator) + ), + listBoundary + ); + const hasScrolled = statefulStream(false); + connect( + pipe( + scrollTop, + withLatestFrom(hasScrolled), + map(([scrollTop2, hasScrolled2]) => { + return hasScrolled2 || scrollTop2 !== 0; + }) + ), + hasScrolled + ); + const endReached = streamFromEmitter( + pipe( + duc(gridState), + filter(({ items }) => items.length > 0), + withLatestFrom(totalCount, hasScrolled), + filter(([{ items }, totalCount2, hasScrolled2]) => hasScrolled2 && items[items.length - 1].index === totalCount2 - 1), + map(([, totalCount2]) => totalCount2 - 1), + distinctUntilChanged() + ) + ); + const startReached = streamFromEmitter( + pipe( + duc(gridState), + filter(({ items }) => { + return items.length > 0 && items[0].index === 0; + }), + mapTo(0), + distinctUntilChanged() + ) + ); + const rangeChanged = streamFromEmitter( + pipe( + duc(gridState), + filter(({ items }) => items.length > 0), + map(({ items }) => { + return { + startIndex: items[0].index, + endIndex: items[items.length - 1].index + }; + }), + distinctUntilChanged(rangeComparator) + ) + ); + connect(rangeChanged, scrollSeek.scrollSeekRangeChanged); + connect( + pipe( + scrollToIndex, + withLatestFrom(viewportDimensions, itemDimensions, totalCount, gap), + map(([location, viewport, item, totalCount2, gap2]) => { + const normalLocation = normalizeIndexLocation(location); + const { align, behavior, offset } = normalLocation; + let index = normalLocation.index; + if (index === "LAST") { + index = totalCount2 - 1; + } + index = max(0, index, min(totalCount2 - 1, index)); + let top = itemTop(viewport, gap2, item, index); + if (align === "end") { + top = round(top - viewport.height + item.height); + } else if (align === "center") { + top = round(top - viewport.height / 2 + item.height / 2); + } + if (offset) { + top += offset; + } + return { top, behavior }; + }) + ), + scrollTo + ); + const totalListHeight = statefulStreamFromEmitter( + pipe( + gridState, + map((gridState2) => { + return gridState2.offsetBottom + gridState2.bottom; + }) + ), + 0 + ); + connect( + pipe( + windowViewportRect, + map((viewportInfo) => ({ width: viewportInfo.visibleWidth, height: viewportInfo.visibleHeight })) + ), + viewportDimensions + ); + return __spreadValues(__spreadProps(__spreadValues(__spreadProps(__spreadValues({ + data, + totalCount, + viewportDimensions, + itemDimensions, + scrollTop, + scrollHeight, + overscan, + scrollBy, + scrollTo, + scrollToIndex, + smoothScrollTargetReached, + windowViewportRect, + windowScrollTo, + useWindowScroll, + customScrollParent, + windowScrollContainerState, + deviation, + scrollContainerState, + footerHeight, + headerHeight, + initialItemCount, + gap + }, scrollSeek), { + gridState, + totalListHeight + }), stateFlags), { + startReached, + endReached, + rangeChanged, + propsReady + }), log2); + }, + tup(sizeRangeSystem, domIOSystem, stateFlagsSystem, scrollSeekSystem, propsReadySystem, windowScrollerSystem, loggerSystem) +); +function gridLayout(viewport, gap, item, items) { + const { height: itemHeight } = item; + if (itemHeight === void 0 || items.length === 0) { + return { top: 0, bottom: 0 }; + } + const top = itemTop(viewport, gap, item, items[0].index); + const bottom = itemTop(viewport, gap, item, items[items.length - 1].index) + itemHeight; + return { top, bottom }; +} +function itemTop(viewport, gap, item, index) { + const perRow = itemsPerRow(viewport.width, item.width, gap.column); + const rowCount = floor(index / perRow); + const top = rowCount * item.height + max(0, rowCount - 1) * gap.row; + return top > 0 ? top + gap.row : top; +} +function itemsPerRow(viewportWidth, itemWidth, gap) { + return max(1, floor((viewportWidth + gap) / (floor(itemWidth) + gap))); +} +var gridComponentPropsSystem = /* @__PURE__ */ system(() => { + const itemContent = statefulStream((index) => `Item ${index}`); + const components = statefulStream({}); + const context = statefulStream(null); + const itemClassName = statefulStream("virtuoso-grid-item"); + const listClassName = statefulStream("virtuoso-grid-list"); + const computeItemKey = statefulStream(identity); + const headerFooterTag = statefulStream("div"); + const scrollerRef = statefulStream(noop); + const distinctProp = (propName, defaultValue = null) => { + return statefulStreamFromEmitter( + pipe( + components, + map((components2) => components2[propName]), + distinctUntilChanged() + ), + defaultValue + ); + }; + return { + context, + itemContent, + components, + computeItemKey, + itemClassName, + listClassName, + headerFooterTag, + scrollerRef, + FooterComponent: distinctProp("Footer"), + HeaderComponent: distinctProp("Header"), + ListComponent: distinctProp("List", "div"), + ItemComponent: distinctProp("Item", "div"), + ScrollerComponent: distinctProp("Scroller", "div"), + ScrollSeekPlaceholder: distinctProp("ScrollSeekPlaceholder", "div") + }; +}); +var combinedSystem$1 = /* @__PURE__ */ system(([gridSystem2, gridComponentPropsSystem2]) => { + return __spreadValues(__spreadValues({}, gridSystem2), gridComponentPropsSystem2); +}, tup(gridSystem, gridComponentPropsSystem)); +var GridItems = /* @__PURE__ */ import_react2.default.memo(function GridItems2() { + const gridState = useEmitterValue$1("gridState"); + const listClassName = useEmitterValue$1("listClassName"); + const itemClassName = useEmitterValue$1("itemClassName"); + const itemContent = useEmitterValue$1("itemContent"); + const computeItemKey = useEmitterValue$1("computeItemKey"); + const isSeeking = useEmitterValue$1("isSeeking"); + const scrollHeightCallback = usePublisher$1("scrollHeight"); + const ItemComponent = useEmitterValue$1("ItemComponent"); + const ListComponent = useEmitterValue$1("ListComponent"); + const ScrollSeekPlaceholder = useEmitterValue$1("ScrollSeekPlaceholder"); + const context = useEmitterValue$1("context"); + const itemDimensions = usePublisher$1("itemDimensions"); + const gridGap = usePublisher$1("gap"); + const log2 = useEmitterValue$1("log"); + const listRef = useSize((el) => { + const scrollHeight = el.parentElement.parentElement.scrollHeight; + scrollHeightCallback(scrollHeight); + const firstItem = el.firstChild; + if (firstItem) { + itemDimensions(firstItem.getBoundingClientRect()); + } + gridGap({ + row: resolveGapValue("row-gap", getComputedStyle(el).rowGap, log2), + column: resolveGapValue("column-gap", getComputedStyle(el).columnGap, log2) + }); + }); + return import_react2.default.createElement( + ListComponent, + __spreadProps(__spreadValues({ + ref: listRef, + className: listClassName + }, contextPropIfNotDomElement(ListComponent, context)), { + style: { paddingTop: gridState.offsetTop, paddingBottom: gridState.offsetBottom }, + "data-test-id": "virtuoso-item-list" + }), + gridState.items.map((item) => { + const key = computeItemKey(item.index, item.data, context); + return isSeeking ? import_react2.default.createElement(ScrollSeekPlaceholder, __spreadProps(__spreadValues({ + key + }, contextPropIfNotDomElement(ScrollSeekPlaceholder, context)), { + index: item.index, + height: gridState.itemHeight, + width: gridState.itemWidth + })) : import_react2.default.createElement( + ItemComponent, + __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ItemComponent, context)), { className: itemClassName, "data-index": item.index, key }), + itemContent(item.index, item.data, context) + ); + }) + ); +}); +var Header = import_react2.default.memo(function VirtuosoHeader2() { + const Header2 = useEmitterValue$1("HeaderComponent"); + const headerHeight = usePublisher$1("headerHeight"); + const headerFooterTag = useEmitterValue$1("headerFooterTag"); + const ref = useSize((el) => headerHeight(correctItemSize(el, "height"))); + const context = useEmitterValue$1("context"); + return Header2 ? import_react2.default.createElement(headerFooterTag, { ref }, import_react2.default.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null; +}); +var Footer = import_react2.default.memo(function VirtuosoGridFooter() { + const Footer2 = useEmitterValue$1("FooterComponent"); + const footerHeight = usePublisher$1("footerHeight"); + const headerFooterTag = useEmitterValue$1("headerFooterTag"); + const ref = useSize((el) => footerHeight(correctItemSize(el, "height"))); + const context = useEmitterValue$1("context"); + return Footer2 ? import_react2.default.createElement(headerFooterTag, { ref }, import_react2.default.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null; +}); +var Viewport$1 = ({ children }) => { + const ctx = import_react2.default.useContext(VirtuosoGridMockContext); + const itemDimensions = usePublisher$1("itemDimensions"); + const viewportDimensions = usePublisher$1("viewportDimensions"); + const viewportRef = useSize((el) => { + viewportDimensions(el.getBoundingClientRect()); + }); + import_react2.default.useEffect(() => { + if (ctx) { + viewportDimensions({ height: ctx.viewportHeight, width: ctx.viewportWidth }); + itemDimensions({ height: ctx.itemHeight, width: ctx.itemWidth }); + } + }, [ctx, viewportDimensions, itemDimensions]); + return /* @__PURE__ */ import_react2.default.createElement("div", { style: viewportStyle, ref: viewportRef }, children); +}; +var WindowViewport$1 = ({ children }) => { + const ctx = import_react2.default.useContext(VirtuosoGridMockContext); + const windowViewportRect = usePublisher$1("windowViewportRect"); + const itemDimensions = usePublisher$1("itemDimensions"); + const customScrollParent = useEmitterValue$1("customScrollParent"); + const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent); + import_react2.default.useEffect(() => { + if (ctx) { + itemDimensions({ height: ctx.itemHeight, width: ctx.itemWidth }); + windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: ctx.viewportWidth }); + } + }, [ctx, windowViewportRect, itemDimensions]); + return /* @__PURE__ */ import_react2.default.createElement("div", { ref: viewportRef, style: viewportStyle }, children); +}; +var GridRoot = /* @__PURE__ */ import_react2.default.memo(function GridRoot2(_a) { + var props = __objRest(_a, []); + const useWindowScroll = useEmitterValue$1("useWindowScroll"); + const customScrollParent = useEmitterValue$1("customScrollParent"); + const TheScroller = customScrollParent || useWindowScroll ? WindowScroller$1 : Scroller$1; + const TheViewport = customScrollParent || useWindowScroll ? WindowViewport$1 : Viewport$1; + return /* @__PURE__ */ import_react2.default.createElement(TheScroller, __spreadValues({}, props), /* @__PURE__ */ import_react2.default.createElement(TheViewport, null, /* @__PURE__ */ import_react2.default.createElement(Header, null), /* @__PURE__ */ import_react2.default.createElement(GridItems, null), /* @__PURE__ */ import_react2.default.createElement(Footer, null))); +}); +var { + Component: Grid, + usePublisher: usePublisher$1, + useEmitterValue: useEmitterValue$1, + useEmitter: useEmitter$1 +} = /* @__PURE__ */ systemToComponent( + combinedSystem$1, + { + optional: { + context: "context", + totalCount: "totalCount", + overscan: "overscan", + itemContent: "itemContent", + components: "components", + computeItemKey: "computeItemKey", + data: "data", + initialItemCount: "initialItemCount", + scrollSeekConfiguration: "scrollSeekConfiguration", + headerFooterTag: "headerFooterTag", + listClassName: "listClassName", + itemClassName: "itemClassName", + useWindowScroll: "useWindowScroll", + customScrollParent: "customScrollParent", + scrollerRef: "scrollerRef" + }, + methods: { + scrollTo: "scrollTo", + scrollBy: "scrollBy", + scrollToIndex: "scrollToIndex" + }, + events: { + isScrolling: "isScrolling", + endReached: "endReached", + startReached: "startReached", + rangeChanged: "rangeChanged", + atBottomStateChange: "atBottomStateChange", + atTopStateChange: "atTopStateChange" + } + }, + GridRoot +); +var Scroller$1 = /* @__PURE__ */ buildScroller({ usePublisher: usePublisher$1, useEmitterValue: useEmitterValue$1, useEmitter: useEmitter$1 }); +var WindowScroller$1 = /* @__PURE__ */ buildWindowScroller({ usePublisher: usePublisher$1, useEmitterValue: useEmitterValue$1, useEmitter: useEmitter$1 }); +function resolveGapValue(property, value, log2) { + if (value !== "normal" && !(value == null ? void 0 : value.endsWith("px"))) { + log2(`${property} was not resolved to pixel value correctly`, value, LogLevel.WARN); + } + if (value === "normal") { + return 0; + } + return parseInt(value != null ? value : "0", 10); +} +var tableComponentPropsSystem = /* @__PURE__ */ system(() => { + const itemContent = statefulStream((index) => /* @__PURE__ */ import_react2.default.createElement("td", null, "Item $", index)); + const context = statefulStream(null); + const fixedHeaderContent = statefulStream(null); + const fixedFooterContent = statefulStream(null); + const components = statefulStream({}); + const computeItemKey = statefulStream(identity); + const scrollerRef = statefulStream(noop); + const distinctProp = (propName, defaultValue = null) => { + return statefulStreamFromEmitter( + pipe( + components, + map((components2) => components2[propName]), + distinctUntilChanged() + ), + defaultValue + ); + }; + return { + context, + itemContent, + fixedHeaderContent, + fixedFooterContent, + components, + computeItemKey, + scrollerRef, + TableComponent: distinctProp("Table", "table"), + TableHeadComponent: distinctProp("TableHead", "thead"), + TableFooterComponent: distinctProp("TableFoot", "tfoot"), + TableBodyComponent: distinctProp("TableBody", "tbody"), + TableRowComponent: distinctProp("TableRow", "tr"), + ScrollerComponent: distinctProp("Scroller", "div"), + EmptyPlaceholder: distinctProp("EmptyPlaceholder"), + ScrollSeekPlaceholder: distinctProp("ScrollSeekPlaceholder"), + FillerRow: distinctProp("FillerRow") + }; +}); +var combinedSystem = /* @__PURE__ */ system(([listSystem2, propsSystem]) => { + return __spreadValues(__spreadValues({}, listSystem2), propsSystem); +}, tup(listSystem, tableComponentPropsSystem)); +var DefaultScrollSeekPlaceholder = ({ height }) => /* @__PURE__ */ import_react2.default.createElement("tr", null, /* @__PURE__ */ import_react2.default.createElement("td", { style: { height } })); +var DefaultFillerRow = ({ height }) => /* @__PURE__ */ import_react2.default.createElement("tr", null, /* @__PURE__ */ import_react2.default.createElement("td", { style: { height, padding: 0, border: 0 } })); +var Items = /* @__PURE__ */ import_react2.default.memo(function VirtuosoItems2() { + const listState = useEmitterValue("listState"); + const sizeRanges = usePublisher("sizeRanges"); + const useWindowScroll = useEmitterValue("useWindowScroll"); + const customScrollParent = useEmitterValue("customScrollParent"); + const windowScrollContainerStateCallback = usePublisher("windowScrollContainerState"); + const _scrollContainerStateCallback = usePublisher("scrollContainerState"); + const scrollContainerStateCallback = customScrollParent || useWindowScroll ? windowScrollContainerStateCallback : _scrollContainerStateCallback; + const itemContent = useEmitterValue("itemContent"); + const trackItemSizes = useEmitterValue("trackItemSizes"); + const itemSize = useEmitterValue("itemSize"); + const log2 = useEmitterValue("log"); + const { callbackRef, ref } = useChangedListContentsSizes( + sizeRanges, + itemSize, + trackItemSizes, + scrollContainerStateCallback, + log2, + void 0, + customScrollParent + ); + const [deviation, setDeviation] = import_react2.default.useState(0); + useEmitter("deviation", (value) => { + if (deviation !== value) { + ref.current.style.marginTop = `${value}px`; + setDeviation(value); + } + }); + const EmptyPlaceholder = useEmitterValue("EmptyPlaceholder"); + const ScrollSeekPlaceholder = useEmitterValue("ScrollSeekPlaceholder") || DefaultScrollSeekPlaceholder; + const FillerRow = useEmitterValue("FillerRow") || DefaultFillerRow; + const TableBodyComponent = useEmitterValue("TableBodyComponent"); + const TableRowComponent = useEmitterValue("TableRowComponent"); + const computeItemKey = useEmitterValue("computeItemKey"); + const isSeeking = useEmitterValue("isSeeking"); + const paddingTopAddition = useEmitterValue("paddingTopAddition"); + const firstItemIndex = useEmitterValue("firstItemIndex"); + const statefulTotalCount = useEmitterValue("statefulTotalCount"); + const context = useEmitterValue("context"); + if (statefulTotalCount === 0 && EmptyPlaceholder) { + return import_react2.default.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context)); + } + const paddingTop = listState.offsetTop + paddingTopAddition + deviation; + const paddingBottom = listState.offsetBottom; + const paddingTopEl = paddingTop > 0 ? /* @__PURE__ */ import_react2.default.createElement(FillerRow, { height: paddingTop, key: "padding-top", context }) : null; + const paddingBottomEl = paddingBottom > 0 ? /* @__PURE__ */ import_react2.default.createElement(FillerRow, { height: paddingBottom, key: "padding-bottom", context }) : null; + const items = listState.items.map((item) => { + const index = item.originalIndex; + const key = computeItemKey(index + firstItemIndex, item.data, context); + if (isSeeking) { + return import_react2.default.createElement(ScrollSeekPlaceholder, __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ScrollSeekPlaceholder, context)), { + key, + index: item.index, + height: item.size, + type: item.type || "item" + })); + } + return import_react2.default.createElement( + TableRowComponent, + __spreadProps(__spreadValues({}, contextPropIfNotDomElement(TableRowComponent, context)), { + key, + "data-index": index, + "data-known-size": item.size, + "data-item-index": item.index, + item: item.data, + style: { overflowAnchor: "none" } + }), + itemContent(item.index, item.data, context) + ); + }); + return import_react2.default.createElement( + TableBodyComponent, + __spreadValues({ ref: callbackRef, "data-test-id": "virtuoso-item-list" }, contextPropIfNotDomElement(TableBodyComponent, context)), + [paddingTopEl, ...items, paddingBottomEl] + ); +}); +var Viewport = ({ children }) => { + const ctx = import_react2.default.useContext(VirtuosoMockContext); + const viewportHeight = usePublisher("viewportHeight"); + const fixedItemHeight = usePublisher("fixedItemHeight"); + const viewportRef = useSize(compose2(viewportHeight, (el) => correctItemSize(el, "height"))); + import_react2.default.useEffect(() => { + if (ctx) { + viewportHeight(ctx.viewportHeight); + fixedItemHeight(ctx.itemHeight); + } + }, [ctx, viewportHeight, fixedItemHeight]); + return /* @__PURE__ */ import_react2.default.createElement("div", { style: viewportStyle, ref: viewportRef, "data-viewport-type": "element" }, children); +}; +var WindowViewport = ({ children }) => { + const ctx = import_react2.default.useContext(VirtuosoMockContext); + const windowViewportRect = usePublisher("windowViewportRect"); + const fixedItemHeight = usePublisher("fixedItemHeight"); + const customScrollParent = useEmitterValue("customScrollParent"); + const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent); + import_react2.default.useEffect(() => { + if (ctx) { + fixedItemHeight(ctx.itemHeight); + windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: 100 }); + } + }, [ctx, windowViewportRect, fixedItemHeight]); + return /* @__PURE__ */ import_react2.default.createElement("div", { ref: viewportRef, style: viewportStyle, "data-viewport-type": "window" }, children); +}; +var TableRoot = /* @__PURE__ */ import_react2.default.memo(function TableVirtuosoRoot(props) { + const useWindowScroll = useEmitterValue("useWindowScroll"); + const customScrollParent = useEmitterValue("customScrollParent"); + const fixedHeaderHeight = usePublisher("fixedHeaderHeight"); + const fixedFooterHeight = usePublisher("fixedFooterHeight"); + const fixedHeaderContent = useEmitterValue("fixedHeaderContent"); + const fixedFooterContent = useEmitterValue("fixedFooterContent"); + const context = useEmitterValue("context"); + const theadRef = useSize(compose2(fixedHeaderHeight, (el) => correctItemSize(el, "height"))); + const tfootRef = useSize(compose2(fixedFooterHeight, (el) => correctItemSize(el, "height"))); + const TheScroller = customScrollParent || useWindowScroll ? WindowScroller : Scroller; + const TheViewport = customScrollParent || useWindowScroll ? WindowViewport : Viewport; + const TheTable = useEmitterValue("TableComponent"); + const TheTHead = useEmitterValue("TableHeadComponent"); + const TheTFoot = useEmitterValue("TableFooterComponent"); + const theHead = fixedHeaderContent ? import_react2.default.createElement( + TheTHead, + __spreadValues({ + key: "TableHead", + style: { zIndex: 1, position: "sticky", top: 0 }, + ref: theadRef + }, contextPropIfNotDomElement(TheTHead, context)), + fixedHeaderContent() + ) : null; + const theFoot = fixedFooterContent ? import_react2.default.createElement( + TheTFoot, + __spreadValues({ + key: "TableFoot", + style: { zIndex: 1, position: "sticky", bottom: 0 }, + ref: tfootRef + }, contextPropIfNotDomElement(TheTFoot, context)), + fixedFooterContent() + ) : null; + return /* @__PURE__ */ import_react2.default.createElement(TheScroller, __spreadValues({}, props), /* @__PURE__ */ import_react2.default.createElement(TheViewport, null, import_react2.default.createElement(TheTable, __spreadValues({ style: { borderSpacing: 0 } }, contextPropIfNotDomElement(TheTable, context)), [ + theHead, + /* @__PURE__ */ import_react2.default.createElement(Items, { key: "TableBody" }), + theFoot + ]))); +}); +var { + Component: Table, + usePublisher, + useEmitterValue, + useEmitter +} = /* @__PURE__ */ systemToComponent( + combinedSystem, + { + required: {}, + optional: { + context: "context", + followOutput: "followOutput", + firstItemIndex: "firstItemIndex", + itemContent: "itemContent", + fixedHeaderContent: "fixedHeaderContent", + fixedFooterContent: "fixedFooterContent", + overscan: "overscan", + increaseViewportBy: "increaseViewportBy", + totalCount: "totalCount", + topItemCount: "topItemCount", + initialTopMostItemIndex: "initialTopMostItemIndex", + components: "components", + groupCounts: "groupCounts", + atBottomThreshold: "atBottomThreshold", + atTopThreshold: "atTopThreshold", + computeItemKey: "computeItemKey", + defaultItemHeight: "defaultItemHeight", + fixedItemHeight: "fixedItemHeight", + itemSize: "itemSize", + scrollSeekConfiguration: "scrollSeekConfiguration", + data: "data", + initialItemCount: "initialItemCount", + initialScrollTop: "initialScrollTop", + alignToBottom: "alignToBottom", + useWindowScroll: "useWindowScroll", + customScrollParent: "customScrollParent", + scrollerRef: "scrollerRef", + logLevel: "logLevel" + }, + methods: { + scrollToIndex: "scrollToIndex", + scrollIntoView: "scrollIntoView", + scrollTo: "scrollTo", + scrollBy: "scrollBy" + }, + events: { + isScrolling: "isScrolling", + endReached: "endReached", + startReached: "startReached", + rangeChanged: "rangeChanged", + atBottomStateChange: "atBottomStateChange", + atTopStateChange: "atTopStateChange", + totalListHeightChanged: "totalListHeightChanged", + itemsRendered: "itemsRendered", + groupIndices: "groupIndices" + } + }, + TableRoot +); +var Scroller = /* @__PURE__ */ buildScroller({ usePublisher, useEmitterValue, useEmitter }); +var WindowScroller = /* @__PURE__ */ buildWindowScroller({ usePublisher, useEmitterValue, useEmitter }); +var TableVirtuoso = Table; + +// src/shared/table-state/table-state-context.tsx +var import_react11 = __toESM(require_react()); + +// src/shared/logger.ts +var import_react10 = __toESM(require_react()); + +// node_modules/react-redux/es/index.js +var import_shim = __toESM(require_shim()); +var import_with_selector = __toESM(require_with_selector()); + +// node_modules/react-redux/es/utils/reactBatchedUpdates.js +var import_react_dom2 = __toESM(require_react_dom()); + +// node_modules/react-redux/es/utils/batch.js +function defaultNoopBatch(callback) { + callback(); +} +var batch = defaultNoopBatch; +var setBatch = (newBatch) => batch = newBatch; +var getBatch = () => batch; + +// node_modules/react-redux/es/hooks/useSelector.js +var import_react5 = __toESM(require_react()); + +// node_modules/react-redux/es/hooks/useReduxContext.js +var import_react4 = __toESM(require_react()); + +// node_modules/react-redux/es/components/Context.js +var import_react3 = __toESM(require_react()); +var ReactReduxContext = /* @__PURE__ */ (0, import_react3.createContext)(null); +if (true) { + ReactReduxContext.displayName = "ReactRedux"; +} + +// node_modules/react-redux/es/hooks/useReduxContext.js +function useReduxContext() { + const contextValue = (0, import_react4.useContext)(ReactReduxContext); + if (!contextValue) { + throw new Error("could not find react-redux context value; please ensure the component is wrapped in a "); + } + return contextValue; +} + +// node_modules/react-redux/es/utils/useSyncExternalStore.js +var notInitialized = () => { + throw new Error("uSES not initialized!"); +}; + +// node_modules/react-redux/es/hooks/useSelector.js +var useSyncExternalStoreWithSelector = notInitialized; +var initializeUseSelector = (fn2) => { + useSyncExternalStoreWithSelector = fn2; +}; +var refEquality = (a2, b2) => a2 === b2; +function createSelectorHook(context = ReactReduxContext) { + const useReduxContext2 = context === ReactReduxContext ? useReduxContext : () => (0, import_react5.useContext)(context); + return function useSelector2(selector, equalityFn = refEquality) { + if (true) { + if (!selector) { + throw new Error(`You must pass a selector to useSelector`); + } + if (typeof selector !== "function") { + throw new Error(`You must pass a function as a selector to useSelector`); + } + if (typeof equalityFn !== "function") { + throw new Error(`You must pass a function as an equality function to useSelector`); + } + } + const { + store: store2, + subscription, + getServerState + } = useReduxContext2(); + const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store2.getState, getServerState || store2.getState, selector, equalityFn); + (0, import_react5.useDebugValue)(selectedState); + return selectedState; + }; +} +var useSelector = /* @__PURE__ */ createSelectorHook(); + +// node_modules/react-redux/es/components/connect.js +var import_hoist_non_react_statics = __toESM(require_hoist_non_react_statics_cjs()); +var import_react7 = __toESM(require_react()); +var import_react_is = __toESM(require_react_is2()); + +// node_modules/react-redux/es/utils/Subscription.js +function createListenerCollection() { + const batch2 = getBatch(); + let first = null; + let last2 = null; + return { + clear() { + first = null; + last2 = null; + }, + notify() { + batch2(() => { + let listener2 = first; + while (listener2) { + listener2.callback(); + listener2 = listener2.next; + } + }); + }, + get() { + let listeners = []; + let listener2 = first; + while (listener2) { + listeners.push(listener2); + listener2 = listener2.next; + } + return listeners; + }, + subscribe(callback) { + let isSubscribed = true; + let listener2 = last2 = { + callback, + next: null, + prev: last2 + }; + if (listener2.prev) { + listener2.prev.next = listener2; + } else { + first = listener2; + } + return function unsubscribe() { + if (!isSubscribed || first === null) + return; + isSubscribed = false; + if (listener2.next) { + listener2.next.prev = listener2.prev; + } else { + last2 = listener2.prev; + } + if (listener2.prev) { + listener2.prev.next = listener2.next; + } else { + first = listener2.next; + } + }; + } + }; +} +var nullListeners = { + notify() { + }, + get: () => [] +}; +function createSubscription(store2, parentSub) { + let unsubscribe; + let listeners = nullListeners; + function addNestedSub(listener2) { + trySubscribe(); + return listeners.subscribe(listener2); + } + function notifyNestedSubs() { + listeners.notify(); + } + function handleChangeWrapper() { + if (subscription.onStateChange) { + subscription.onStateChange(); + } + } + function isSubscribed() { + return Boolean(unsubscribe); + } + function trySubscribe() { + if (!unsubscribe) { + unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store2.subscribe(handleChangeWrapper); + listeners = createListenerCollection(); + } + } + function tryUnsubscribe() { + if (unsubscribe) { + unsubscribe(); + unsubscribe = void 0; + listeners.clear(); + listeners = nullListeners; + } + } + const subscription = { + addNestedSub, + notifyNestedSubs, + handleChangeWrapper, + isSubscribed, + trySubscribe, + tryUnsubscribe, + getListeners: () => listeners + }; + return subscription; +} + +// node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js +var import_react6 = __toESM(require_react()); +var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); +var useIsomorphicLayoutEffect2 = canUseDOM ? import_react6.useLayoutEffect : import_react6.useEffect; + +// node_modules/react-redux/es/components/connect.js +var useSyncExternalStore = notInitialized; +var initializeConnect = (fn2) => { + useSyncExternalStore = fn2; +}; + +// node_modules/react-redux/es/components/Provider.js +var import_react8 = __toESM(require_react()); +function Provider({ + store: store2, + context, + children, + serverState +}) { + const contextValue = (0, import_react8.useMemo)(() => { + const subscription = createSubscription(store2); + return { + store: store2, + subscription, + getServerState: serverState ? () => serverState : void 0 + }; + }, [store2, serverState]); + const previousState = (0, import_react8.useMemo)(() => store2.getState(), [store2]); + useIsomorphicLayoutEffect2(() => { + const { + subscription + } = contextValue; + subscription.onStateChange = subscription.notifyNestedSubs; + subscription.trySubscribe(); + if (previousState !== store2.getState()) { + subscription.notifyNestedSubs(); + } + return () => { + subscription.tryUnsubscribe(); + subscription.onStateChange = void 0; + }; + }, [contextValue, previousState]); + const Context = context || ReactReduxContext; + return /* @__PURE__ */ import_react8.default.createElement(Context.Provider, { + value: contextValue + }, children); +} +var Provider_default = Provider; + +// node_modules/react-redux/es/hooks/useStore.js +var import_react9 = __toESM(require_react()); + +// node_modules/react-redux/es/index.js +initializeUseSelector(import_with_selector.useSyncExternalStoreWithSelector); +initializeConnect(import_shim.useSyncExternalStore); +setBatch(import_react_dom2.unstable_batchedUpdates); + +// src/redux/global/hooks.ts +var useAppSelector = useSelector; + +// src/shared/logger.ts +var log = (shouldDebug) => (message, args = {}) => { + if (shouldDebug) { + console.log(message); + if (Object.keys(args).length !== 0) + console.log(args); + } +}; +var useLogger = () => { + const { shouldDebug } = useAppSelector((state) => state.global); + const logger = import_react10.default.useCallback( + (message, args) => log(shouldDebug)(message, args), + [shouldDebug] + ); + return logger; +}; + +// src/shared/table-state/table-error.ts +var ColumNotFoundError = class extends Error { + constructor(id2) { + super(`Column ${id2} was not found`); + this.name = "ColumNotFoundError"; + } +}; +var TagNotFoundError = class extends Error { + constructor(id2) { + super(`Tag ${id2} was not found`); + this.name = "TagNotFoundError"; + } +}; +var RowNotFoundError = class extends Error { + constructor(id2) { + super(`Row ${id2} was not found`); + this.name = "RowNotFoundError"; + } +}; +var CellNotFoundError = class extends Error { + constructor(options) { + const { id: id2, rowId, columnId } = options || {}; + if (rowId || columnId) + super(`Cell ${rowId}:${columnId} was not found`); + super(`Cell ${id2} was not found`); + this.name = "CellNotFoundError"; + } +}; + +// src/shared/commands/command-errors.ts +var CommandUndoError = class extends Error { + constructor() { + super(`execute() must be called before undo() is available`); + this.name = "CommandUndoError"; + } +}; +var CommandRedoError = class extends Error { + constructor() { + super(`undo() must be called before redo() is available`); + this.name = "CommandRedoError"; + } +}; +var DeleteCommandArgumentsError = class extends Error { + constructor() { + super(`Either 'id' or 'last' must be defined`); + this.name = "DeleteCommandArgumentsError"; + } +}; + +// src/shared/table-state/table-state-command.ts +var TableStateCommand = class { + constructor(shouldSortRows = false) { + __publicField(this, "shouldSortRows"); + __publicField(this, "hasExecuteBeenCalled"); + __publicField(this, "hasUndoBeenCalled"); + this.hasExecuteBeenCalled = false; + this.hasUndoBeenCalled = false; + this.shouldSortRows = shouldSortRows; + } + onExecute() { + this.hasExecuteBeenCalled = true; + } + onRedo() { + if (!this.hasUndoBeenCalled) + throw new CommandRedoError(); + this.hasUndoBeenCalled = false; + } + onUndo() { + if (!this.hasExecuteBeenCalled) + throw new CommandUndoError(); + this.hasUndoBeenCalled = true; + } +}; + +// src/shared/types/index.ts +var Color = /* @__PURE__ */ ((Color2) => { + Color2["LIGHT_GRAY"] = "light gray"; + Color2["GRAY"] = "gray"; + Color2["BROWN"] = "brown"; + Color2["ORANGE"] = "orange"; + Color2["YELLOW"] = "yellow"; + Color2["GREEN"] = "green"; + Color2["BLUE"] = "blue"; + Color2["PURPLE"] = "purple"; + Color2["PINK"] = "pink"; + Color2["RED"] = "red"; + return Color2; +})(Color || {}); +var PaddingSize = /* @__PURE__ */ ((PaddingSize5) => { + PaddingSize5["SM"] = "sm"; + PaddingSize5["MD"] = "md"; + PaddingSize5["LG"] = "lg"; + PaddingSize5["XL"] = "xl"; + PaddingSize5["XXL"] = "2xl"; + PaddingSize5["XXXL"] = "3xl"; + PaddingSize5["XXXXL"] = "4xl"; + PaddingSize5["UNSET"] = "unset"; + return PaddingSize5; +})(PaddingSize || {}); +var CellType = /* @__PURE__ */ ((CellType5) => { + CellType5["TEXT"] = "text"; + CellType5["EMBED"] = "embed"; + CellType5["FILE"] = "file"; + CellType5["NUMBER"] = "number"; + CellType5["CURRENCY"] = "currency"; + CellType5["TAG"] = "tag"; + CellType5["MULTI_TAG"] = "multi-tag"; + CellType5["DATE"] = "date"; + CellType5["CHECKBOX"] = "checkbox"; + CellType5["CREATION_TIME"] = "creation-time"; + CellType5["LAST_EDITED_TIME"] = "last-edited-time"; + return CellType5; +})(CellType || {}); +var DateFormat = /* @__PURE__ */ ((DateFormat9) => { + DateFormat9["MM_DD_YYYY"] = "mm/dd/yyyy"; + DateFormat9["DD_MM_YYYY"] = "dd/mm/yyyy"; + DateFormat9["YYYY_MM_DD"] = "yyyy/mm/dd"; + DateFormat9["FULL"] = "full"; + DateFormat9["RELATIVE"] = "relative"; + return DateFormat9; +})(DateFormat || {}); +var CurrencyType = /* @__PURE__ */ ((CurrencyType9) => { + CurrencyType9["UNITED_STATES"] = "USD"; + CurrencyType9["CANADA"] = "CAD"; + CurrencyType9["SINGAPORE"] = "SGB"; + CurrencyType9["EUROPE"] = "EUR"; + CurrencyType9["SWEDEN"] = "SEK"; + CurrencyType9["DENMARK"] = "DKK"; + CurrencyType9["NORWAY"] = "NOK"; + CurrencyType9["ICELAND"] = "ISK"; + CurrencyType9["POUND"] = "GBP"; + CurrencyType9["RUSSIA"] = "RUB"; + CurrencyType9["AUSTRALIA"] = "AUD"; + CurrencyType9["JAPAN"] = "JPY"; + CurrencyType9["INDIA"] = "INR"; + CurrencyType9["CHINA"] = "CNY"; + CurrencyType9["BRAZIL"] = "BRL"; + CurrencyType9["COLOMBIA"] = "COP"; + CurrencyType9["MEXICO"] = "MXN"; + CurrencyType9["ARGENTINA"] = "ARS"; + return CurrencyType9; +})(CurrencyType || {}); +var GeneralFunction = /* @__PURE__ */ ((GeneralFunction3) => { + GeneralFunction3["NONE"] = "none"; + GeneralFunction3["COUNT_ALL"] = "count-all"; + GeneralFunction3["COUNT_VALUES"] = "count-values"; + GeneralFunction3["COUNT_UNIQUE"] = "count-unique"; + GeneralFunction3["COUNT_EMPTY"] = "count-empty"; + GeneralFunction3["COUNT_NOT_EMPTY"] = "count-not-empty"; + GeneralFunction3["PERCENT_EMPTY"] = "percent-empty"; + GeneralFunction3["PERCENT_NOT_EMPTY"] = "percent-not-empty"; + return GeneralFunction3; +})(GeneralFunction || {}); +var NumberFunction = /* @__PURE__ */ ((NumberFunction2) => { + NumberFunction2["SUM"] = "sum"; + NumberFunction2["AVG"] = "avg"; + NumberFunction2["MIN"] = "min"; + NumberFunction2["MAX"] = "max"; + NumberFunction2["MEDIAN"] = "median"; + NumberFunction2["RANGE"] = "range"; + return NumberFunction2; +})(NumberFunction || {}); +var AspectRatio = /* @__PURE__ */ ((AspectRatio5) => { + AspectRatio5["ONE_BY_ONE"] = "1/1"; + AspectRatio5["NINE_BY_SIXTEEN"] = "9/16"; + AspectRatio5["FOUR_BY_THREE"] = "4/3"; + AspectRatio5["SIXTEEN_BY_NINE"] = "16/9"; + return AspectRatio5; +})(AspectRatio || {}); + +// src/shared/regex.ts +var NUMBER_REGEX = new RegExp(/^-?\d+\.?\d*$/); +var NUMBER_INPUT_REGEX = new RegExp(/(^$)|(^-$)|(^-?\d+\.?\d*$)/); +var CSS_MEASUREMENT_PIXEL_REGEX = new RegExp(/^([1-9])([0-9]*)px$/); +var DATE_REGEX = new RegExp(/^\d{4}\/\d{2}\/\d{2}$/); +var CHECKBOX_REGEX = new RegExp(/^\[[x ]{0,1}\]$/); +var CHECKBOX_CHECKED_REGEX = new RegExp(/^\[[x]\]$/); +var URL_REGEX = new RegExp( + /^https?:\/\/(www\.)?[\w.-]+\.[\w.-]+(\/[\w.-]+)*(\/?(\?[\w.-]+=[\w.-]+(&[\w.-]+=[\w.-]+)*)?)?$/i +); + +// src/shared/validators.ts +var isNumber = (input) => { + return input.match(NUMBER_REGEX) !== null; +}; +var isValidNumberInput = (input) => { + return input.match(NUMBER_INPUT_REGEX) !== null; +}; +var isCheckbox = (input) => { + return input.match(CHECKBOX_REGEX) !== null; +}; +var isCheckboxChecked = (input) => { + return input.match(CHECKBOX_CHECKED_REGEX) !== null; +}; +var isURL = (input) => { + return input.match(URL_REGEX) !== null; +}; +var isGeneralFunction = (value) => { + return Object.values(GeneralFunction).includes(value); +}; +var isNumberFunction = (value) => { + return Object.values(NumberFunction).includes(value); +}; + +// src/shared/commands/row-sort-command.ts +var RowSortCommand = class extends TableStateCommand { + constructor() { + super(...arguments); + __publicField(this, "previousRowSort", []); + } + sortByTag(columnId, columns, rows, cells, sortDir) { + const newRows = [...rows]; + newRows.sort((a2, b2) => { + const cellA = cells.find( + (c2) => c2.columnId === columnId && c2.rowId === a2.id + ); + if (!cellA) + throw new CellNotFoundError({ rowId: a2.id, columnId }); + const cellB = cells.find( + (c2) => c2.columnId === columnId && c2.rowId === b2.id + ); + if (!cellB) + throw new CellNotFoundError({ rowId: b2.id, columnId }); + const column = columns.find((c2) => c2.id === columnId); + if (!column) + throw new ColumNotFoundError(columnId); + if (cellA.tagIds.length === 0 && cellB.tagIds.length > 0) + return 1; + if (cellA.tagIds.length > 0 && cellB.tagIds.length === 0) + return -1; + if (cellA.tagIds.length === 0 && cellB.tagIds.length === 0) + return 0; + let tagLength = cellA.tagIds.length; + if (cellB.tagIds.length > cellA.tagIds.length) { + tagLength = cellB.tagIds.length; + } + for (let i2 = 0; i2 < tagLength; i2++) { + const tagIdA = cellA.tagIds[i2]; + if (tagIdA === void 0) + return -1; + const tagA = column.tags.find((t2) => t2.id === tagIdA); + if (!tagA) + throw new TagNotFoundError(tagIdA); + const tagIdB = cellB.tagIds[i2]; + if (tagIdB === void 0) + return 1; + const tagB = column.tags.find((t2) => t2.id === tagIdB); + if (!tagB) + throw new TagNotFoundError(tagIdA); + if (sortDir === "asc" /* ASC */) { + const result = tagA.markdown.localeCompare(tagB.markdown); + if (result !== 0) + return result; + } else if (sortDir === "desc" /* DESC */) { + const result = tagB.markdown.localeCompare(tagA.markdown); + if (result !== 0) + return result; + } + } + return 0; + }); + return newRows; + } + sortByMarkdown(columnId, rows, cells, sortDir) { + const newRows = [...rows]; + newRows.sort((a2, b2) => { + const cellA = cells.find( + (c2) => c2.columnId === columnId && c2.rowId === a2.id + ); + if (!cellA) + throw new CellNotFoundError({ + rowId: a2.id, + columnId + }); + const cellB = cells.find( + (c2) => c2.columnId === columnId && c2.rowId === b2.id + ); + if (!cellB) + throw new CellNotFoundError({ + rowId: b2.id, + columnId + }); + const markdownA = cellA.markdown; + const markdownB = cellB.markdown; + if (markdownA === "" && markdownB !== "") + return 1; + if (markdownA !== "" && markdownB === "") + return -1; + if (markdownA === "" && markdownB === "") + return 0; + if (sortDir === "asc" /* ASC */) { + return markdownA.localeCompare(markdownB); + } else if (sortDir === "desc" /* DESC */) { + return markdownB.localeCompare(markdownA); + } else { + return 0; + } + }); + return newRows; + } + sortByNumber(columnId, rows, cells, sortDir) { + const newRows = [...rows]; + newRows.sort((a2, b2) => { + const cellA = cells.find( + (c2) => c2.columnId === columnId && c2.rowId === a2.id + ); + if (!cellA) + throw new CellNotFoundError({ + rowId: a2.id, + columnId + }); + const cellB = cells.find( + (c2) => c2.columnId === columnId && c2.rowId === b2.id + ); + if (!cellB) + throw new CellNotFoundError({ + rowId: b2.id, + columnId + }); + const markdownA = cellA.markdown; + const markdownB = cellB.markdown; + if (markdownA === "" && markdownB !== "") + return 1; + if (markdownA !== "" && markdownB === "") + return -1; + if (markdownA === "" && markdownB === "") + return 0; + if (sortDir === "asc" /* ASC */) { + return parseFloat(markdownA) - parseFloat(markdownB); + } else if (sortDir === "desc" /* DESC */) { + return parseFloat(markdownB) - parseFloat(markdownA); + } else { + return 0; + } + }); + return newRows; + } + sortByCheckbox(columnId, rows, cells, sortDir) { + const newRows = [...rows]; + newRows.sort((a2, b2) => { + const cellA = cells.find( + (c2) => c2.columnId === columnId && c2.rowId === a2.id + ); + if (!cellA) + throw new CellNotFoundError({ + rowId: a2.id, + columnId + }); + const cellB = cells.find( + (c2) => c2.columnId === columnId && c2.rowId === b2.id + ); + if (!cellB) + throw new CellNotFoundError({ + rowId: b2.id, + columnId + }); + const isCheckedA = isCheckboxChecked(cellA.markdown); + const isCheckedB = isCheckboxChecked(cellB.markdown); + if (sortDir === "asc" /* ASC */) { + if (isCheckedA && !isCheckedB) + return 1; + if (!isCheckedA && isCheckedB) + return -1; + return 0; + } else if (sortDir === "desc" /* DESC */) { + if (!isCheckedA && isCheckedB) + return 1; + if (isCheckedA && !isCheckedB) + return -1; + return 0; + } else { + return 0; + } + }); + return newRows; + } + sortByDate(columnId, rows, cells, sortDir) { + const newRows = [...rows]; + newRows.sort((a2, b2) => { + const cellA = cells.find( + (c2) => c2.columnId === columnId && c2.rowId === a2.id + ); + if (!cellA) + throw new CellNotFoundError({ + rowId: a2.id, + columnId + }); + const cellB = cells.find( + (c2) => c2.columnId === columnId && c2.rowId === b2.id + ); + if (!cellB) + throw new CellNotFoundError({ + rowId: b2.id, + columnId + }); + const dateTimeA = cellA.dateTime || 0; + const dateTimeB = cellB.dateTime || 0; + if (sortDir === "asc" /* ASC */) { + return dateTimeA - dateTimeB; + } else if (sortDir === "desc" /* DESC */) { + return dateTimeB - dateTimeA; + } else { + return 0; + } + }); + return newRows; + } + sortByCreationTime(rows, sortDir) { + const newRows = [...rows]; + newRows.sort((a2, b2) => { + if (sortDir === "asc" /* ASC */) { + return a2.creationTime - b2.creationTime; + } else if (sortDir === "desc" /* DESC */) { + return b2.creationTime - a2.creationTime; + } else { + return 0; + } + }); + return newRows; + } + sortByLastEditedTime(rows, sortDir) { + const newRows = [...rows]; + newRows.sort((a2, b2) => { + if (sortDir === "asc" /* ASC */) { + return a2.lastEditedTime - b2.lastEditedTime; + } else if (sortDir === "desc" /* DESC */) { + return b2.lastEditedTime - a2.lastEditedTime; + } else { + return 0; + } + }); + return newRows; + } + sortByDir(columnId, columnType, sortDir, columns, rows, cells) { + if (columnType === "number" /* NUMBER */ || columnType === "currency" /* CURRENCY */) { + return this.sortByNumber(columnId, rows, cells, sortDir); + } else if (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */) { + return this.sortByTag(columnId, columns, rows, cells, sortDir); + } else if (columnType === "date" /* DATE */) { + return this.sortByDate(columnId, rows, cells, sortDir); + } else if (columnType === "last-edited-time" /* LAST_EDITED_TIME */) { + return this.sortByLastEditedTime(rows, sortDir); + } else if (columnType === "creation-time" /* CREATION_TIME */) { + return this.sortByCreationTime(rows, sortDir); + } else if (columnType === "checkbox" /* CHECKBOX */) { + return this.sortByCheckbox(columnId, rows, cells, sortDir); + } else { + return this.sortByMarkdown(columnId, rows, cells, sortDir); + } + } + sortByIndex(rows) { + const newRows = [...rows]; + newRows.sort((a2, b2) => { + return a2.index - b2.index; + }); + return newRows; + } + execute(prevState) { + super.onExecute(); + const { columns, bodyRows, bodyCells } = prevState.model; + const sortedColumn = columns.find( + (columns2) => columns2.sortDir !== "default" /* NONE */ + ); + this.previousRowSort = bodyRows.map((row) => ({ + id: row.id, + index: row.index + })); + let newBodyRows = [...bodyRows]; + if (sortedColumn) { + newBodyRows = this.sortByDir( + sortedColumn.id, + sortedColumn.type, + sortedColumn.sortDir, + columns, + bodyRows, + bodyCells + ); + } else { + newBodyRows = this.sortByIndex(bodyRows); + } + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyRows: newBodyRows + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + const { bodyRows } = prevState.model; + const newBodyRows = this.previousRowSort.map((prev) => { + const row = bodyRows.find((row2) => row2.id === prev.id); + if (!row) + throw new RowNotFoundError(prev.id); + return __spreadProps(__spreadValues({}, row), { + index: prev.index + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyRows: newBodyRows + }) + }); + } +}; + +// src/shared/table-state/table-state-context.tsx +var TableStateContext = import_react11.default.createContext(null); +var useTableState = () => { + const value = import_react11.default.useContext(TableStateContext); + if (value === null) { + throw new Error( + "useTableState() called without a in the tree." + ); + } + return value; +}; +function TableStateProvider({ + initialState: initialState2, + onSaveState, + children +}) { + const [tableState, setTableState] = import_react11.default.useState(initialState2); + const [searchText, setSearchText] = import_react11.default.useState(""); + const [isSearchBarVisible, setSearchBarVisible] = import_react11.default.useState(false); + const [resizingColumnId, setResizingColumnId] = import_react11.default.useState(null); + const [history, setHistory] = import_react11.default.useState([ + null + ]); + const [position, setPosition] = import_react11.default.useState(0); + const logger = useLogger(); + const { appId } = useMountState(); + const isMountedRef = import_react11.default.useRef(false); + import_react11.default.useEffect(() => { + if (!isMountedRef.current) { + isMountedRef.current = true; + return; + } + onSaveState(appId, tableState); + }, [appId, tableState, onSaveState]); + function handleToggleSearchBar() { + setSearchBarVisible((prevState) => !prevState); + } + const undo = import_react11.default.useCallback(() => { + if (position > 0) { + logger("handleUndoEvent"); + const currentPosition = position - 1; + setPosition(currentPosition); + const command = history[position]; + if (command !== null) { + logger(command.constructor.name + ".undo"); + let newState = command.undo(tableState); + if (command.shouldSortRows) { + newState = new RowSortCommand().execute(newState); + } + setTableState(newState); + } + } + }, [position, history, tableState, logger]); + const redo = import_react11.default.useCallback(() => { + if (position < history.length - 1) { + logger("handleRedoEvent"); + const currentPosition = position + 1; + setPosition(currentPosition); + const command = history[currentPosition]; + if (command !== null) { + logger(command.constructor.name + ".redo"); + let newState = command.redo(tableState); + if (command.shouldSortRows) { + newState = new RowSortCommand().execute(newState); + } + setTableState(newState); + } + } + }, [position, history, tableState, logger]); + const doCommand = import_react11.default.useCallback( + (command) => { + setHistory((prevState) => { + if (position < history.length - 1) { + const newState2 = prevState.slice(0, position + 1); + return [...newState2, command]; + } else { + return [...prevState, command]; + } + }); + setPosition((prevState) => prevState + 1); + let newState = command.execute(tableState); + if (command.shouldSortRows) { + newState = new RowSortCommand().execute(newState); + } + setTableState(newState); + }, + [position, history, tableState] + ); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableStateContext.Provider, { + value: { + tableState, + setTableState, + doCommand, + commandRedo: redo, + commandUndo: undo, + isSearchBarVisible, + searchText, + resizingColumnId, + setResizingColumnId, + toggleSearchBar: handleToggleSearchBar, + setSearchText + }, + children + }); +} + +// src/shared/dragging/drag-context.tsx +var import_react12 = __toESM(require_react()); +var DragContext = import_react12.default.createContext(null); +var useDragContext = () => { + const value = import_react12.default.useContext(DragContext); + if (value === null) { + throw new Error( + "useDragContext() called without a in the tree." + ); + } + return value; +}; +function DragProvider({ children }) { + const [dragData, setDragData] = import_react12.default.useState(null); + const [touchDropZone, setTouchDropZone] = import_react12.default.useState( + null + ); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(DragContext.Provider, { + value: { dragData, touchDropZone, setDragData, setTouchDropZone }, + children + }); +} + +// src/shared/dragging/utils.ts +var getRowId = (rowEl) => { + const td = rowEl.firstChild; + if (!td) + return null; + const id2 = td.getAttribute("data-row-id"); + return id2 != null ? id2 : null; +}; +var dropDrag = (targetRowId, dragData, tableState, onTableStateChange) => { + if (dragData === null) + throw Error("No drag data found"); + if (dragData.type !== "row") + return; + const { columns } = tableState.model; + const isSorted = columns.find((column) => column.sortDir !== "default" /* NONE */); + if (isSorted) { + if (!window.confirm( + "This will set your default sorting to the current sort filter. Do you wish to continue?\n\nIf not, please remove your sort filter before dragging a row." + )) + return; + } + onTableStateChange((prevState) => { + const { bodyRows, columns: columns2 } = prevState.model; + const draggedElIndex = bodyRows.findIndex( + (row) => row.id === dragData.id + ); + const targetElIndex = bodyRows.findIndex( + (row) => row.id === targetRowId + ); + const newRows = structuredClone(bodyRows); + const draggedEl = newRows[draggedElIndex]; + newRows.splice(draggedElIndex, 1); + newRows.splice(targetElIndex, 0, draggedEl); + newRows.forEach((row, index) => { + row.index = index; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyRows: newRows, + columns: columns2.map((column) => { + return __spreadProps(__spreadValues({}, column), { + sortDir: "default" /* NONE */ + }); + }) + }) + }); + }); +}; + +// src/react/table-app/table/table-body-row.tsx +function TableBodyRow(_a) { + var _b = _a, { + style, + children + } = _b, props = __objRest(_b, [ + "style", + "children" + ]); + const { tableState, setTableState } = useTableState(); + const { dragData, setDragData } = useDragContext(); + function handleDragStart(e) { + const el = e.target; + const rowId = getRowId(el); + if (!rowId) + return; + setDragData({ + type: "row", + id: rowId + }); + } + function handleDragEnd(e) { + const el = e.target; + el.draggable = false; + setDragData(null); + } + function handleDrop(e) { + e.preventDefault(); + const target = e.currentTarget; + const targetId = getRowId(target); + if (!targetId) + return; + dropDrag(targetId, dragData, tableState, setTableState); + } + function handleDragOver(e) { + e.preventDefault(); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("tr", __spreadProps(__spreadValues({ + onDrop: handleDrop, + onDragStart: handleDragStart, + onDragEnd: handleDragEnd, + onDragOver: handleDragOver + }, props), { + style, + children + })); +} + +// node_modules/@emotion/react/dist/emotion-react.cjs.mjs +var import_emotion_react_cjs = __toESM(require_emotion_react_cjs(), 1); + +// src/react/table-app/table/table-header-cell.tsx +var cellStyle = import_emotion_react_cjs.css` + position: sticky; + top: 0; + z-index: 1; + background-color: var(--table-header-background); + border-bottom: 1px solid var(--table-border-color); + border-left: 1px solid var(--table-border-color); + border-right: 0; + padding: 0; + font-weight: 400; + overflow: visible; + text-align: start; + color: var(--text-normal); //Prevents dimming on hover in embedded table + + &:first-of-type { + border-top: 0; + border-left: 0; + border-bottom: 0; + background-color: var(--background-primary); + } + + &:last-of-type { + border-top: 0; + border-bottom: 0; + background-color: var(--background-primary); + } +`; +function TableHeaderCell({ + columnId, + content, + isDraggable +}) { + const { setTableState } = useTableState(); + const { dragData, touchDropZone, setDragData, setTouchDropZone } = useDragContext(); + function startDrag(el) { + const columnId2 = getColumnId(el); + if (!columnId2) + return; + setDragData({ + type: "column", + id: columnId2 + }); + } + function dropDrag2(targetRowId) { + if (dragData == null) + throw new Error("No drag data found"); + if (dragData.type !== "column") + return; + setTableState((prevState) => { + const { columns } = prevState.model; + const draggedElIndex = columns.findIndex( + (column) => column.id === dragData.id + ); + const targetElIndex = columns.findIndex( + (column) => column.id === targetRowId + ); + const newColumns = structuredClone(columns); + const draggedEl = newColumns[draggedElIndex]; + newColumns.splice(draggedElIndex, 1); + newColumns.splice(targetElIndex, 0, draggedEl); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: newColumns + }) + }); + }); + } + function addDragHover(thEl) { + const child = thEl.firstChild; + if (!child) + return; + if (child.classList.contains("NLT__focusable")) + thEl.classList.add("NLT__th--drag-over"); + } + function removeDragHover() { + const el = document.querySelector(".NLT__th--drag-over"); + if (el) + el.classList.remove("NLT__th--drag-over"); + } + function getColumnId(columnEl) { + const id2 = columnEl.getAttribute("data-column-id"); + if (!id2) + return null; + return id2; + } + function handleDragStart(e) { + const el = e.target; + startDrag(el); + } + function handleDrop(e) { + e.preventDefault(); + const target = e.currentTarget; + const targetId = getColumnId(target); + if (!targetId) + return; + dropDrag2(targetId); + } + function handleDragEnd() { + setDragData(null); + } + function handleDragOver(e) { + e.preventDefault(); + } + function handleTouchStart(e) { + e.stopPropagation(); + const el = e.currentTarget; + startDrag(el); + } + const handleTouchMove = (e) => { + e.stopPropagation(); + if (dragData == null) + return; + const { clientX, clientY } = e.touches[0]; + const elementUnderneath = document.elementFromPoint(clientX, clientY); + if (!elementUnderneath) + return; + const thEl = elementUnderneath.closest("th"); + if (!thEl) + return; + const targetId = getColumnId(thEl); + if (!targetId) + return; + if (targetId === dragData.id) + return; + const { top, left, bottom, right } = thEl.getBoundingClientRect(); + setTouchDropZone({ + id: targetId, + top, + left, + bottom, + right + }); + removeDragHover(); + if (thEl.lastChild) + addDragHover(thEl); + }; + function handleTouchEnd(e) { + if (touchDropZone) { + const touchX = e.changedTouches[0].clientX; + const touchY = e.changedTouches[0].clientY; + const isInsideDropZone = touchX >= touchDropZone.left && touchX <= touchDropZone.right && touchY >= touchDropZone.top && touchY <= touchDropZone.bottom; + if (isInsideDropZone) { + dropDrag2(touchDropZone.id); + } + } + setDragData(null); + setTouchDropZone(null); + removeDragHover(); + } + function handleTouchCancel() { + setDragData(null); + setTouchDropZone(null); + removeDragHover(); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("th", __spreadProps(__spreadValues({ + "data-column-id": columnId, + css: cellStyle + }, isDraggable && { + draggable: true, + onDrop: handleDrop, + onDragStart: handleDragStart, + onDragOver: handleDragOver, + onDragEnd: handleDragEnd, + onTouchStart: handleTouchStart, + onTouchMove: handleTouchMove, + onTouchEnd: handleTouchEnd, + onTouchCancel: handleTouchCancel + }), { + children: content + })); +} + +// src/shared/hooks.ts +var import_react14 = __toESM(require_react()); + +// node_modules/uuid/dist/esm-browser/rng.js +var getRandomValues; +var rnds8 = new Uint8Array(16); +function rng() { + if (!getRandomValues) { + getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); + if (!getRandomValues) { + throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); + } + } + return getRandomValues(rnds8); +} + +// node_modules/uuid/dist/esm-browser/regex.js +var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; + +// node_modules/uuid/dist/esm-browser/validate.js +function validate(uuid) { + return typeof uuid === "string" && regex_default.test(uuid); +} +var validate_default = validate; + +// node_modules/uuid/dist/esm-browser/stringify.js +var byteToHex = []; +for (let i2 = 0; i2 < 256; ++i2) { + byteToHex.push((i2 + 256).toString(16).slice(1)); +} +function unsafeStringify(arr, offset = 0) { + return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); +} + +// node_modules/uuid/dist/esm-browser/parse.js +function parse(uuid) { + if (!validate_default(uuid)) { + throw TypeError("Invalid UUID"); + } + let v2; + const arr = new Uint8Array(16); + arr[0] = (v2 = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v2 >>> 16 & 255; + arr[2] = v2 >>> 8 & 255; + arr[3] = v2 & 255; + arr[4] = (v2 = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v2 & 255; + arr[6] = (v2 = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v2 & 255; + arr[8] = (v2 = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v2 & 255; + arr[10] = (v2 = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255; + arr[11] = v2 / 4294967296 & 255; + arr[12] = v2 >>> 24 & 255; + arr[13] = v2 >>> 16 & 255; + arr[14] = v2 >>> 8 & 255; + arr[15] = v2 & 255; + return arr; +} +var parse_default = parse; + +// node_modules/uuid/dist/esm-browser/v35.js +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); + const bytes = []; + for (let i2 = 0; i2 < str.length; ++i2) { + bytes.push(str.charCodeAt(i2)); + } + return bytes; +} +var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; +var URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; +function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + var _namespace; + if (typeof value === "string") { + value = stringToBytes(value); + } + if (typeof namespace === "string") { + namespace = parse_default(namespace); + } + if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) { + throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); + } + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 15 | version; + bytes[8] = bytes[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i2 = 0; i2 < 16; ++i2) { + buf[offset + i2] = bytes[i2]; + } + return buf; + } + return unsafeStringify(bytes); + } + try { + generateUUID.name = name; + } catch (err) { + } + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} + +// node_modules/uuid/dist/esm-browser/native.js +var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); +var native_default = { + randomUUID +}; + +// node_modules/uuid/dist/esm-browser/v4.js +function v4(options, buf, offset) { + if (native_default.randomUUID && !buf && !options) { + return native_default.randomUUID(); + } + options = options || {}; + const rnds = options.random || (options.rng || rng)(); + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i2 = 0; i2 < 16; ++i2) { + buf[offset + i2] = rnds[i2]; + } + return buf; + } + return unsafeStringify(rnds); +} +var v4_default = v4; + +// node_modules/uuid/dist/esm-browser/sha1.js +function f2(s2, x2, y2, z2) { + switch (s2) { + case 0: + return x2 & y2 ^ ~x2 & z2; + case 1: + return x2 ^ y2 ^ z2; + case 2: + return x2 & y2 ^ x2 & z2 ^ y2 & z2; + case 3: + return x2 ^ y2 ^ z2; + } +} +function ROTL(x2, n2) { + return x2 << n2 | x2 >>> 32 - n2; +} +function sha1(bytes) { + const K = [1518500249, 1859775393, 2400959708, 3395469782]; + const H2 = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; + if (typeof bytes === "string") { + const msg = unescape(encodeURIComponent(bytes)); + bytes = []; + for (let i2 = 0; i2 < msg.length; ++i2) { + bytes.push(msg.charCodeAt(i2)); + } + } else if (!Array.isArray(bytes)) { + bytes = Array.prototype.slice.call(bytes); + } + bytes.push(128); + const l2 = bytes.length / 4 + 2; + const N2 = Math.ceil(l2 / 16); + const M2 = new Array(N2); + for (let i2 = 0; i2 < N2; ++i2) { + const arr = new Uint32Array(16); + for (let j2 = 0; j2 < 16; ++j2) { + arr[j2] = bytes[i2 * 64 + j2 * 4] << 24 | bytes[i2 * 64 + j2 * 4 + 1] << 16 | bytes[i2 * 64 + j2 * 4 + 2] << 8 | bytes[i2 * 64 + j2 * 4 + 3]; + } + M2[i2] = arr; + } + M2[N2 - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32); + M2[N2 - 1][14] = Math.floor(M2[N2 - 1][14]); + M2[N2 - 1][15] = (bytes.length - 1) * 8 & 4294967295; + for (let i2 = 0; i2 < N2; ++i2) { + const W2 = new Uint32Array(80); + for (let t2 = 0; t2 < 16; ++t2) { + W2[t2] = M2[i2][t2]; + } + for (let t2 = 16; t2 < 80; ++t2) { + W2[t2] = ROTL(W2[t2 - 3] ^ W2[t2 - 8] ^ W2[t2 - 14] ^ W2[t2 - 16], 1); + } + let a2 = H2[0]; + let b2 = H2[1]; + let c2 = H2[2]; + let d2 = H2[3]; + let e = H2[4]; + for (let t2 = 0; t2 < 80; ++t2) { + const s2 = Math.floor(t2 / 20); + const T = ROTL(a2, 5) + f2(s2, b2, c2, d2) + e + K[s2] + W2[t2] >>> 0; + e = d2; + d2 = c2; + c2 = ROTL(b2, 30) >>> 0; + b2 = a2; + a2 = T; + } + H2[0] = H2[0] + a2 >>> 0; + H2[1] = H2[1] + b2 >>> 0; + H2[2] = H2[2] + c2 >>> 0; + H2[3] = H2[3] + d2 >>> 0; + H2[4] = H2[4] + e >>> 0; + } + return [H2[0] >> 24 & 255, H2[0] >> 16 & 255, H2[0] >> 8 & 255, H2[0] & 255, H2[1] >> 24 & 255, H2[1] >> 16 & 255, H2[1] >> 8 & 255, H2[1] & 255, H2[2] >> 24 & 255, H2[2] >> 16 & 255, H2[2] >> 8 & 255, H2[2] & 255, H2[3] >> 24 & 255, H2[3] >> 16 & 255, H2[3] >> 8 & 255, H2[3] & 255, H2[4] >> 24 & 255, H2[4] >> 16 & 255, H2[4] >> 8 & 255, H2[4] & 255]; +} +var sha1_default = sha1; + +// node_modules/uuid/dist/esm-browser/v5.js +var v5 = v35("v5", 80, sha1_default); +var v5_default = v5; + +// src/shared/hooks.ts +var useForceUpdate = () => { + const [time, setTime] = import_react14.default.useState(0); + return [time, import_react14.default.useCallback(() => setTime(Date.now()), [])]; +}; +var useCompare = (value, runOnMount = true) => { + const prevValue = usePrevious(value); + if (prevValue === void 0) + return runOnMount; + return prevValue !== value; +}; +var usePrevious = (value) => { + const ref = import_react14.default.useRef(); + import_react14.default.useEffect(() => { + ref.current = value; + }); + return ref.current; +}; +var useInputSelection = (inputRef, value) => { + import_react14.default.useEffect(() => { + function setSelection() { + if (inputRef.current) { + inputRef.current.selectionStart = value.length; + inputRef.current.selectionEnd = value.length; + } + } + setSelection(); + }, [inputRef]); +}; +var useUUID = () => { + const [uuid] = import_react14.default.useState(v4_default()); + return uuid; +}; + +// src/react/table-app/table/index.tsx +function Table2({ headerRows, bodyRows, footerRows }) { + const tableRef = import_react15.default.useRef(null); + const previousRowLength = usePrevious(bodyRows.length); + import_react15.default.useEffect(() => { + var _a; + if (previousRowLength === void 0) + return; + if (previousRowLength < bodyRows.length) + (_a = tableRef.current) == null ? void 0 : _a.scrollToIndex(bodyRows.length - 1); + }, [previousRowLength, bodyRows.length]); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableVirtuoso, { + tabIndex: -1, + ref: tableRef, + overscan: 10, + style: { + width: "100%", + height: "100%" + }, + totalCount: bodyRows.length, + components: Components, + fixedHeaderContent: () => headerRows.map((row) => { + const { id: rowId, cells } = row; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("tr", { + css: import_emotion_react_cjs.css` + background-color: var(--background-secondary); + `, + children: cells.map((cell, i2) => { + const { id: cellId, columnId, content } = cell; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableHeaderCell, { + columnId, + content, + isDraggable: i2 < cells.length - 1 + }, cellId); + }) + }, rowId); + }), + fixedFooterContent: () => footerRows.map((row) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("tr", { + children: row.cells.map((cell) => { + const { id: id2, content } = cell; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("td", { + className: "NLT__footer-td", + css: import_emotion_react_cjs.css` + padding: 0px; + `, + children: content + }, id2); + }) + }, row.id)), + itemContent: (index) => { + const row = bodyRows[index]; + const { id: rowId, cells } = row; + return cells.map((cell, i2) => { + const { id: cellId, content } = cell; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("td", { + "data-row-id": i2 === 0 ? rowId : void 0, + css: import_emotion_react_cjs.css` + border-top: 0; + border-bottom: 1px solid + var(--table-border-color); + border-left: 1px solid var(--table-border-color); + border-right: 0; + padding: 0; + overflow: visible; + vertical-align: top; + color: var( + --text-normal + ); //Prevents hover style in embedded table + color: var(--text-normal); + /** + * This is a hack to make the children have something to calculate their height percentage from. + * i.e. if you have a child with height: 100%, it will be 100% of the height of the td, only + * if the td has a set height value. + * This doesn't represent the actual height of the td, as that is set by HTML + */ + height: 1px; + + &:first-of-type { + border-left: 0; + border-bottom: 0; + } + + &:last-child { + border-bottom: 0; + } + `, + className: "NLT__body-td", + children: content + }, cellId); + }); + } + }); +} +var Components = { + Table: (_a) => { + var _b = _a, { style } = _b, props = __objRest(_b, ["style"]); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("table", __spreadProps(__spreadValues({ + css: import_emotion_react_cjs.css` + table-layout: fixed; + border-collapse: separate; + ` + }, props), { + style, + className: "NLT__table" + })); + }, + TableRow: (_c) => { + var _d = _c, { style } = _d, props = __objRest(_d, ["style"]); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableBodyRow, __spreadProps(__spreadValues({}, props), { + style + })); + }, + TableBody: import_react15.default.forwardRef((_e, ref) => { + var _f = _e, { style } = _f, props = __objRest(_f, ["style"]); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("tbody", __spreadProps(__spreadValues({}, props), { + style, + ref + })); + }), + TableFoot: import_react15.default.forwardRef((_g, ref) => { + var _h = _g, { style } = _h, props = __objRest(_h, ["style"]); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("tfoot", __spreadProps(__spreadValues({ + css: import_emotion_react_cjs.css` + position: sticky; + bottom: 0; + background-color: var(--background-primary); + + & > tr:first-of-type > td { + border-bottom: 1px solid var(--table-border-color); + } + + & > tr:first-of-type > td:nth-of-type(1) { + border-bottom: 0; + } + + & > tr:first-of-type > td:nth-of-type(2) { + border-left: 1px solid var(--table-border-color); + } + + & > tr:first-of-type > td:last-child { + border-left: 1px solid var(--table-border-color); + border-bottom: 0; + } + ` + }, props), { + style, + ref + })); + }) +}; + +// src/react/shared/icon/index.tsx +var import_react17 = __toESM(require_react()); + +// src/obsidian-shim/build/set-icon.ts +var import_obsidian3 = require("obsidian"); +var setIcon = (div, name) => { + (0, import_obsidian3.setIcon)(div, name); +}; + +// src/shared/render/utils.ts +var replaceNewLinesWithBr = (markdown) => { + const lines = markdown.split("\n"); + let updated = ""; + lines.forEach((line) => { + if (line === "") { + updated += "
"; + } else { + updated += line + "\n"; + } + }); + return updated; +}; +var appendOrReplaceFirstChild = (container, child) => { + if (container == null || child === null) + return; + if (container && !container.firstChild) { + container.appendChild(child); + } else if (container.firstChild && container.firstChild !== child) { + container.replaceChild(child, container.firstChild); + } +}; +var getDynamicSize = (defaultValue, value) => { + if (value === void 0) + return defaultValue; + if (typeof value === "string") + return value; + const { base, mobile } = value; + if (isMobileSize()) { + return mobile != null ? mobile : base; + } else { + return base; + } +}; +var isMobileSize = () => { + return window.innerWidth <= 480; +}; +var hasDarkTheme = () => { + var _a; + const el = document.querySelector("body"); + return (_a = el == null ? void 0 : el.className.includes("theme-dark")) != null ? _a : false; +}; + +// src/react/shared/icon/index.tsx +function Icon({ + lucideId, + size = "md", + color = "unset" +}) { + const ref = import_react17.default.useRef(null); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + ref: (node) => { + ref.current = node; + const div = document.createElement("div"); + div.style.display = "flex"; + div.style.color = color; + div.style.pointerEvents = "none"; + if (size === "sm") { + div.style.width = "0.9rem"; + div.style.height = "0.9rem"; + } else if (size === "md") { + div.style.width = "1rem"; + div.style.height = "1rem"; + } else if (size === "lg") { + div.style.width = "1.1rem"; + div.style.height = "1.1rem"; + } + setIcon(div, lucideId); + appendOrReplaceFirstChild(node, div); + } + }); +} + +// src/react/shared/menu-trigger/index.tsx +var import_react20 = __toESM(require_react()); + +// src/shared/menu/menu-context.tsx +var import_react18 = __toESM(require_react()); + +// src/shared/menu/focus-visible.ts +var focusMenuElement = (menuId) => { + const el = document.querySelector( + `[data-menu-id="${menuId}"]` + ); + if (el) { + el.focus(); + addFocusVisibleClass(el); + } +}; +var addFocusVisibleClass = (el) => { + if (el) + el.classList.add("NLT__focus-visible"); +}; +var removeFocusVisibleClass = () => { + const el = document.querySelector(".NLT__focus-visible"); + if (el) + el.classList.remove("NLT__focus-visible"); +}; +var getFocusableLayerEl = (appId, topMenu) => { + const appEl = document.querySelector(`.NLT__app[data-id="${appId}"]`); + if (!appEl) + return null; + let layerEl = appEl; + if (topMenu) { + const { id: id2 } = topMenu; + const menuEl = document.querySelector(`.NLT__menu[data-id="${id2}"]`); + if (menuEl) + layerEl = menuEl; + } + return layerEl; +}; +var focusNextElement = (layerEl, focusableEls) => { + const focusedEl = document.activeElement; + if (focusedEl) { + const currentIndex = Array.from(focusableEls).indexOf(focusedEl); + if (currentIndex !== -1) { + let index = currentIndex + 1; + if (index > focusableEls.length - 1) + index = 0; + focusableEls[index].focus(); + return; + } + } + const selectedEl = layerEl.querySelector(".NLT__selected"); + if (selectedEl) { + selectedEl.focus(); + } else { + focusableEls[0].focus(); + } +}; + +// src/shared/menu/menu-context.tsx +var MenuContext = import_react18.default.createContext(null); +var useMenuState = () => { + const value = import_react18.default.useContext(MenuContext); + if (value === null) { + throw new Error( + "useMenu() called without a in the tree." + ); + } + return value; +}; +function MenuProvider({ children }) { + const [currentMenus, setCurrentMenus] = import_react18.default.useState([]); + const logger = useLogger(); + const [menuCloseRequest, setMenuCloseRequest] = import_react18.default.useState(null); + const isMenuOpen = import_react18.default.useCallback( + (menu) => { + return currentMenus.find((m2) => m2.id === menu.id) !== void 0; + }, + [currentMenus] + ); + const hasOpenMenu = import_react18.default.useCallback(() => { + return currentMenus.length !== 0; + }, [currentMenus]); + const getTopMenu = import_react18.default.useCallback(() => { + if (currentMenus.length === 0) + return null; + return currentMenus[currentMenus.length - 1]; + }, [currentMenus]); + const canOpenMenu = import_react18.default.useCallback( + (menu) => { + return currentMenus.find((m2) => m2.level === menu.level) === void 0 || currentMenus.length === 0; + }, + [currentMenus] + ); + const openMenu = import_react18.default.useCallback( + (menu) => { + if (!canOpenMenu(menu)) + return; + setCurrentMenus((prev) => [...prev, menu]); + removeFocusVisibleClass(); + }, + [canOpenMenu] + ); + function closeAllMenus(shouldFocusTrigger = true) { + logger("MenuProvider closeAllMenus"); + if (currentMenus.length === 0) + return; + const menu = currentMenus[0]; + if (shouldFocusTrigger) { + const { id: id2 } = menu; + focusMenuElement(id2); + } + setCurrentMenus([]); + setMenuCloseRequest(null); + } + const closeTopMenu = import_react18.default.useCallback( + (options) => { + logger("MenuProvider closeTopMenu"); + const { shouldFocusTrigger = true } = options || {}; + const menu = getTopMenu(); + if (!menu) + return; + if (shouldFocusTrigger) { + const { id: id2 } = menu; + focusMenuElement(id2); + } + setCurrentMenus((prev) => prev.slice(0, prev.length - 1)); + setMenuCloseRequest(null); + }, + [getTopMenu, logger] + ); + const requestCloseTopMenu = import_react18.default.useCallback( + (type) => { + const menu = getTopMenu(); + if (!menu) + return; + if (menu.shouldRequestOnClose) { + setMenuCloseRequest({ + id: menu.id, + requestTime: Date.now(), + type + }); + return; + } + closeTopMenu(); + }, + [closeTopMenu, getTopMenu] + ); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuContext.Provider, { + value: { + topMenu: getTopMenu(), + hasOpenMenu, + isMenuOpen, + openMenu, + canOpenMenu, + menuCloseRequest, + requestCloseTopMenu, + closeTopMenu, + closeAllMenus + }, + children + }); +} + +// src/shared/keyboard-event.ts +var isWindowsUndoDown = (e) => e.ctrlKey && e.key === "z"; +var isWindowsRedoDown = (e) => e.ctrlKey && e.key === "y"; +var isMacUndoDown = (e) => e.metaKey && e.key === "z"; +var isMacRedoDown = (e) => e.metaKey && e.shiftKey && e.key === "z"; + +// src/react/shared/menu-trigger/index.tsx +var MenuTrigger = ({ + isButton = false, + isCell = false, + shouldRun = true, + menu, + children, + onEnterDown, + onBackspaceDown, + onClick, + onMouseDown +}) => { + const { + openMenu, + closeTopMenu, + requestCloseTopMenu, + canOpenMenu, + hasOpenMenu + } = useMenuState(); + const ref = import_react20.default.useRef(null); + const logger = useLogger(); + function handleKeyDown(e) { + logger("MenuTrigger handleKeyDown"); + if (e.key === "Enter") { + e.stopPropagation(); + onEnterDown == null ? void 0 : onEnterDown(); + e.preventDefault(); + if (!shouldRun) + return; + const tag = e.target.tagName; + if (tag === "A") + return; + if (canOpenMenu(menu)) { + openMenu(menu); + return; + } + closeTopMenu(); + } else if (e.key === "Backspace") { + onBackspaceDown == null ? void 0 : onBackspaceDown(); + } + if (e.key.length === 1) { + if (isWindowsRedoDown(e) || isWindowsUndoDown(e) || isMacRedoDown(e) || isMacUndoDown(e)) + return; + if (!isCell) + return; + openMenu(menu); + } + } + function handleClick(e) { + logger("MenuTrigger handleClick"); + e.stopPropagation(); + onClick == null ? void 0 : onClick(e); + if (!shouldRun) { + if (hasOpenMenu()) { + requestCloseTopMenu("click"); + } else { + if (!ref.current) + return; + removeFocusVisibleClass(); + addFocusVisibleClass(ref.current); + } + return; + } + if (canOpenMenu(menu)) { + const tag = e.target.tagName; + if (tag === "A") + return; + openMenu(menu); + return; + } + requestCloseTopMenu("click"); + } + const { id: id2 } = menu; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__menu-trigger NLT__focusable", + ref, + css: import_emotion_react_cjs.css` + width: ${isCell ? "100%" : "unset"}; + height: ${isCell ? "100%" : "unset"}; + border-radius: ${isButton ? "var(--button-radius)" : "unset"}; + `, + tabIndex: 0, + "data-menu-id": shouldRun ? id2 : void 0, + onKeyDown: handleKeyDown, + onClick: handleClick, + onMouseDown, + children + }); +}; +var menu_trigger_default = MenuTrigger; + +// src/react/shared/button/index.tsx +var buttonStyle = import_emotion_react_cjs.css` + display: flex; + align-items: center; + width: max-content !important; + height: max-content; + padding: 10px !important; /* Prevent tablet styles */ + white-space: nowrap; + color: var(--text-normal); + margin-right: 0; + cursor: pointer; + + &:focus-visible { + box-shadow: none !important; + } +`; +var linkStyle = import_emotion_react_cjs.css` + color: var(--link-color); + text-decoration-line: var(--link-decoration); + cursor: var(--cursor-link); + background-color: transparent !important; + box-shadow: none !important; + border: none !important; + &:hover { + box-shadow: var(--input-shadow) !important; + } +`; +var iconStyle = import_emotion_react_cjs.css` + background-color: transparent !important; + box-shadow: none !important; + padding: 6px !important; + + &: hover { + box-shadow: var(--input-shadow) !important; + } +`; +var smallStyle = import_emotion_react_cjs.css` + padding: 2px !important; +`; +function Button({ + isFocusable = true, + isLink, + isSmall, + invertFocusColor, + children, + ariaLabel = "", + icon, + onClick, + onMouseDown +}) { + const logger = useLogger(); + function handleClick() { + onClick == null ? void 0 : onClick(); + } + function handleKeyDown(e) { + logger("Button handleKeyDown"); + if (e.key === "Enter") { + e.preventDefault(); + e.stopPropagation(); + onClick == null ? void 0 : onClick(); + } + } + let className = "NLT__button"; + if (isFocusable) { + className += " NLT__focusable"; + if (invertFocusColor) + className += " NLT__focusable--inverted"; + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("button", { + tabIndex: isFocusable ? 0 : -1, + className, + css: import_emotion_react_cjs.css` + ${buttonStyle} + ${isLink ? linkStyle : void 0} + ${icon !== void 0 ? iconStyle : void 0} + ${isSmall ? smallStyle : void 0} + `, + "aria-label": ariaLabel, + onKeyDown: handleKeyDown, + onMouseDown, + onClick: handleClick, + children: icon !== void 0 ? icon : children + }); +} + +// src/react/shared/menu-button/index.tsx +function MenuButton({ + menu, + isLink = false, + ariaLabel, + icon, + children, + onClick, + onMouseDown +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_trigger_default, { + isButton: true, + menu, + onClick, + onMouseDown, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { + isFocusable: false, + isLink, + icon, + ariaLabel, + children + }) + }); +} + +// src/react/table-app/row-options/components/RowMenu/index.tsx +var import_react34 = __toESM(require_react()); + +// src/react/shared/menu/index.tsx +var import_react25 = __toESM(require_react()); +var import_react_dom3 = __toESM(require_react_dom()); + +// src/shared/conversion.ts +var pxToNum = (value) => { + return parseFloat(value.split("px")[0]); +}; +var numToPx = (value) => { + return `${value}px`; +}; +var stringToCurrencyString = (value, type) => { + return new Intl.NumberFormat("en-US", { + style: "currency", + currency: type + }).format(parseFloat(value)); +}; + +// src/shared/menu/utils.ts +var import_react23 = __toESM(require_react()); + +// src/shared/menu/constants.ts +var MENU_SHIFT_PADDING = 5; + +// src/obsidian-shim/build/render-utils.ts +var import_react22 = __toESM(require_react()); + +// src/shared/render/embed.ts +var import_obsidian4 = require("obsidian"); +var handleLinkClick = (event) => { + const targetEl = event.target; + const closestAnchor = targetEl.tagName === "A" ? targetEl : targetEl.closest("a"); + if (!closestAnchor) { + return; + } + if (closestAnchor.hasClass("internal-link")) { + event.preventDefault(); + const href = closestAnchor.getAttr("href"); + const newLeaf = event.ctrlKey || event.metaKey; + if (href) + app.workspace.openLinkText(href, "", newLeaf); + } +}; +var renderEmbedMarkdown = (leaf, markdown) => __async(void 0, null, function* () { + try { + const view = leaf.view; + if (view instanceof import_obsidian4.MarkdownView || view instanceof NLTView) { + const div = document.body.createDiv(); + div.style.height = "100%"; + div.style.width = "100%"; + yield import_obsidian4.MarkdownRenderer.renderMarkdown( + markdown, + div, + view.file.path, + view + ); + return div; + } + } catch (e) { + console.error(e); + } + return null; +}); +var renderMarkdown = (leaf, markdown) => __async(void 0, null, function* () { + const div = document.createElement("div"); + div.style.height = "100%"; + div.style.width = "100%"; + const view = leaf == null ? void 0 : leaf.view; + if (view instanceof NLTView) + div.classList.add("markdown-rendered"); + try { + const updated = replaceNewLinesWithBr(markdown); + const view2 = leaf == null ? void 0 : leaf.view; + if (view2 instanceof import_obsidian4.MarkdownView || view2 instanceof NLTView) { + yield import_obsidian4.MarkdownRenderer.renderMarkdown( + updated, + div, + view2.file.path, + view2 + ); + const embeds = div.querySelectorAll(".internal-link"); + embeds.forEach((embed) => { + const el = embed; + const href = el.getAttribute("data-href"); + if (!href) + return; + const destination = app.metadataCache.getFirstLinkpathDest( + href, + view2.file.path + ); + if (!destination) + embed.classList.add("is-unresolved"); + el.addEventListener("mouseover", (e) => { + e.stopPropagation(); + app.workspace.trigger("hover-link", { + event: e, + source: NOTION_LIKE_TABLES_VIEW, + hoverParent: view2.containerEl, + targetEl: el, + linktext: href, + sourcePath: el.href + }); + }); + el.addEventListener("click", handleLinkClick); + }); + } + } catch (e) { + console.error(e); + } + return div; +}); + +// src/obsidian-shim/build/render-utils.ts +var import_obsidian5 = require("obsidian"); +var useLeafContainer = () => { + const { leaf } = useMountState(); + return leaf.view.containerEl; +}; +var isOnMobile = () => { + return import_obsidian5.Platform.isMobile; +}; +var useRenderMarkdown = (markdown, isEmbed) => { + const containerRef = import_react22.default.useRef(null); + const renderRef = import_react22.default.useRef(null); + const { leaf } = useMountState(); + import_react22.default.useEffect(() => { + function updateContainerRef() { + return __async(this, null, function* () { + let el = null; + if (isEmbed) { + el = yield renderEmbedMarkdown(leaf, markdown); + } else { + el = yield renderMarkdown(leaf, markdown); + } + if (el) { + renderRef.current = el; + if (containerRef.current) + appendOrReplaceFirstChild(containerRef.current, el); + } + }); + } + updateContainerRef(); + }, [markdown, leaf, isEmbed]); + return { + containerRef, + renderRef + }; +}; + +// src/shared/menu/utils.ts +var isTextSelected = () => { + const selection = window.getSelection(); + return (selection == null ? void 0 : selection.type) === "Range"; +}; +var getElementPosition = (el) => { + if (el) + return el.getBoundingClientRect(); + return { + top: 0, + left: 0, + width: 0, + height: 0 + }; +}; +var useShiftMenu = (triggerRef, menuRef, isOpen, options) => { + const viewContentEl = useLeafContainer(); + import_react23.default.useEffect(() => { + function shiftMenuIntoView() { + if (menuRef.current === null) + return; + if (triggerRef.current === null) + return; + const { + openDirection = "normal", + topOffset = 0, + leftOffset = 0 + } = options || {}; + const viewContentRect = viewContentEl.getBoundingClientRect(); + const triggerRefRect = triggerRef.current.getBoundingClientRect(); + const menuRect = menuRef.current.getBoundingClientRect(); + const top = triggerRefRect.top + topOffset; + let left = triggerRefRect.left + leftOffset; + if (openDirection === "left") { + left = left - menuRect.width; + } else if (openDirection === "right") { + left = left + triggerRefRect.width; + } + const isMobile = isOnMobile(); + let viewContentHeight = viewContentRect.height; + if (isMobile) + viewContentHeight -= 48; + const position = shiftElementIntoContainer( + { + top: viewContentRect.top, + left: viewContentRect.left, + width: viewContentRect.width, + height: viewContentHeight + }, + { + top, + left, + width: menuRect.width, + height: menuRect.height + } + ); + menuRef.current.style.top = numToPx(position.top); + menuRef.current.style.left = numToPx(position.left); + } + if (isOpen) + shiftMenuIntoView(); + }); +}; +var useMenuTriggerPosition = () => { + const ref = import_react23.default.useRef(null); + const position = getElementPosition(ref.current); + return { triggerRef: ref, triggerPosition: position }; +}; +var shiftElementIntoContainer = (container, element) => { + let newTop = element.top; + let newLeft = element.left; + if (element.top + element.height > container.top + container.height) { + newTop = container.top + container.height - element.height - MENU_SHIFT_PADDING; + } + if (element.left + element.width > container.left + container.width) { + newLeft = container.left + container.width - element.width - MENU_SHIFT_PADDING; + } + if (element.top < container.top) { + newTop = container.top + MENU_SHIFT_PADDING; + } + if (element.left < container.left) { + newLeft = container.left + MENU_SHIFT_PADDING; + } + return { + top: newTop, + left: newLeft + }; +}; + +// src/obsidian-shim/build/menu-events.ts +var import_react24 = __toESM(require_react()); + +// src/shared/events.ts +var obsidianEvent = (name) => { + return "notion-like-tables-" + name; +}; +var EVENT_COLUMN_ADD = obsidianEvent("add-column"); +var EVENT_COLUMN_DELETE = obsidianEvent("delete-column"); +var EVENT_ROW_ADD = obsidianEvent("add-row"); +var EVENT_ROW_DELETE = obsidianEvent("delete-row"); +var EVENT_REFRESH_TABLES = obsidianEvent("refresh-tables"); +var EVENT_OUTSIDE_CLICK = obsidianEvent("outside-click"); +var EVENT_OUTSIDE_KEYDOWN = obsidianEvent("outside-keydown"); +var EVENT_DOWNLOAD_CSV = obsidianEvent("download-csv"); +var EVENT_DOWNLOAD_MARKDOWN = obsidianEvent("download-markdown"); + +// src/obsidian-shim/build/menu-events.ts +var useMenuEvents = (id2, isOpen, isTextHighlighted) => { + const logger = useLogger(); + const { requestCloseTopMenu, closeTopMenu, topMenu } = useMenuState(); + import_react24.default.useEffect(() => { + function handleOutsideKeyDown(e) { + logger("Menu handleOutsideKeyDown"); + if ((topMenu == null ? void 0 : topMenu.id) !== id2) + return; + if (e.key === "Enter") { + requestCloseTopMenu("enter"); + } else if (e.key === "Escape") { + closeTopMenu(); + } + } + if (isOpen) { + app.workspace.on(EVENT_OUTSIDE_KEYDOWN, handleOutsideKeyDown); + } + return () => app.workspace.off(EVENT_OUTSIDE_CLICK, handleOutsideKeyDown); + }, [isOpen, logger, closeTopMenu, requestCloseTopMenu, id2, topMenu]); + import_react24.default.useEffect(() => { + function handleOutsideClick() { + logger("Menu handleOutsideClick"); + if ((topMenu == null ? void 0 : topMenu.id) !== id2) + return; + if (isTextHighlighted) { + return; + } + requestCloseTopMenu("click"); + } + if (isOpen) { + app.workspace.on(EVENT_OUTSIDE_CLICK, handleOutsideClick); + } + return () => app.workspace.off(EVENT_OUTSIDE_CLICK, handleOutsideClick); + }, [isOpen, logger, requestCloseTopMenu, id2, topMenu, isTextHighlighted]); +}; + +// src/react/shared/menu/index.tsx +var Menu = import_react25.default.forwardRef(function Menu2({ + id: id2, + isOpen, + hideBorder = false, + top = 0, + left = 0, + width = 0, + height = 0, + maxHeight = 0, + maxWidth = 0, + children +}, ref) { + const { topMenu, closeTopMenu, requestCloseTopMenu } = useMenuState(); + const isTextHighlighted = import_react25.default.useRef(false); + const logger = useLogger(); + useMenuEvents(id2, isOpen, isTextHighlighted.current); + function handleMouseDown() { + isTextHighlighted.current = false; + } + function handleSelect() { + isTextHighlighted.current = isTextSelected(); + } + function handleKeyDown(e) { + logger("Menu handleKeyDown"); + if (e.key === "Enter") { + requestCloseTopMenu("enter"); + } else if (e.key === "Escape") { + closeTopMenu(); + } + } + function handleClick(e) { + logger("Menu handleClick"); + e.stopPropagation(); + if ((topMenu == null ? void 0 : topMenu.id) === id2) { + if (topMenu.level === 0) + removeFocusVisibleClass(); + return; + } + requestCloseTopMenu("click"); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: isOpen && import_react_dom3.default.createPortal( + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__menu", + "data-id": id2, + css: import_emotion_react_cjs.css` + width: 0; + height: 0; + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + ref, + css: import_emotion_react_cjs.css` + position: absolute; + z-index: var(--layer-menu); + top: ${numToPx(top)}; + left: ${numToPx(left)}; + width: ${width !== 0 ? numToPx(width) : "max-content"}; + height: ${height !== 0 ? numToPx(height) : "max-content"}; + max-width: ${maxWidth !== 0 ? numToPx(maxWidth) : "unset"}; + max-height: ${maxHeight !== 0 ? numToPx(maxHeight) : "unset"}; + overflow-y: ${maxHeight !== 0 ? "scroll" : "unset"}; + background-color: var(--background-primary); + box-shadow: ${hideBorder ? "unset" : "0px 0px 0px 2px var(--background-modifier-border);"} + font-weight: 400; + `, + onClick: handleClick, + onKeyDown: handleKeyDown, + onMouseDown: handleMouseDown, + onSelect: handleSelect, + children + }) + }), + document.body + ) + }); +}); +var menu_default = Menu; + +// src/shared/spacing/index.ts +var getSpacing = (size) => { + let spacing = ""; + if (size === "sm") { + spacing = "var(--nlt-spacing--sm)"; + } else if (size === "md") { + spacing = "var(--nlt-spacing--md)"; + } else if (size === "lg") { + spacing = "var(--nlt-spacing--lg)"; + } else if (size === "xl") { + spacing = "var(--nlt-spacing--xl)"; + } else if (size === "2xl") { + spacing = "var(--nlt-spacing--2xl)"; + } else if (size === "3xl") { + spacing = "var(--nlt-spacing--3xl)"; + } else if (size === "4xl") { + spacing = "var(--nlt-spacing--4xl)"; + } + return spacing; +}; + +// src/react/shared/stack/index.tsx +function Stack({ + spacing = "md", + justify, + align, + grow, + children, + width = "unset", + height = "unset", + minHeight = "unset", + isVertical +}) { + let justifyContent = justify; + if (justifyContent === void 0) { + if (isVertical) + justifyContent = "center"; + else + justifyContent = "flex-start"; + } + let alignItems = align; + if (alignItems === void 0) { + if (!isVertical) + alignItems = "center"; + else + alignItems = "flex-start"; + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: import_emotion_react_cjs.css` + display: flex; + flex-direction: ${isVertical ? "column" : "row"}; + flex-grow: ${grow ? 1 : 0}; + justify-content: ${justifyContent}; + align-items: ${alignItems}; + ${isVertical ? "row-gap" : "column-gap"}: ${getSpacing( + spacing + )}; + width: ${width}; + height: ${height}; + min-height: ${minHeight}; + `, + children + }); +} + +// src/react/shared/flex/index.tsx +function Flex({ + flexDir = "row", + justify = "flex-start", + align = "flex-start", + children +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: import_emotion_react_cjs.css` + width: 100%; + display: flex; + flex-direction: ${flexDir}; + justify-content: ${justify}; + align-items: ${align}; + flex-wrap: wrap; + `, + children + }); +} + +// src/shared/spacing/hooks.ts +var wrapOverflow = import_emotion_react_cjs.css` + overflow-wrap: break-word; + overflow: hidden; + white-space: normal; +`; +var hideOverflow = import_emotion_react_cjs.css` + overflow: hidden; + overflow-wrap: normal; + white-space: nowrap; +`; +var useOverflow = (shouldWrapOverflow) => { + if (shouldWrapOverflow) + return wrapOverflow; + return hideOverflow; +}; + +// src/react/shared/text/index.tsx +function Text({ value, variant, size = "sm", maxWidth }) { + let className = "NLT__p"; + if (variant === "faint") + className += " NLT__text-faint"; + if (variant === "muted") + className += " NLT__text-muted"; + if (variant === "semibold") + className += " NLT__text-semibold"; + let fontSize = ""; + if (size === "xs") { + fontSize = "var(--nlt-font-size--xs)"; + } else if (size === "sm") { + fontSize = "var(--nlt-font-size--sm)"; + } else if (size === "md") { + fontSize = "var(--nlt-font-size--md)"; + } else if (size === "lg") { + fontSize = "var(--nlt-font-size--lg)"; + } + const overflowStyle = useOverflow(maxWidth !== void 0); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("p", { + className, + css: import_emotion_react_cjs.css` + font-size: ${fontSize}; + max-width: ${maxWidth === void 0 ? "unset" : maxWidth}; + ${overflowStyle} + `, + children: value + }); +} + +// src/react/shared/padding/index.tsx +function Padding({ + width = "100%", + px, + py, + pt, + pb, + pl, + pr, + p: p2, + children +}) { + let renderPt = ""; + let renderPb = ""; + let renderPl = ""; + let renderPr = ""; + if (p2) { + renderPt = getSpacing(p2); + renderPb = getSpacing(p2); + renderPl = getSpacing(p2); + renderPr = getSpacing(p2); + } else if (px || py) { + if (px) { + const spacing = getSpacing(px); + renderPl = spacing; + renderPr = spacing; + } + if (py) { + const spacing = getSpacing(py); + renderPt = spacing; + renderPb = spacing; + } + } else if (pb || pt || pl || pr) { + if (pb) { + const spacing = getSpacing(pb); + renderPb = spacing; + } + if (pt) { + const spacing = getSpacing(pt); + renderPt = spacing; + } + if (pl) { + const spacing = getSpacing(pl); + renderPl = spacing; + } + if (pr) { + const spacing = getSpacing(pr); + renderPr = spacing; + } + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: import_emotion_react_cjs.css` + width: ${width}; + padding-top: ${renderPt}; + padding-bottom: ${renderPb}; + padding-left: ${renderPl}; + padding-right: ${renderPr}; + `, + children + }); +} + +// src/react/shared/menu-item/index.tsx +var import_react33 = __toESM(require_react()); +function MenuItem({ + isFocusable = true, + lucideId, + ariaLabel, + name, + value, + onClick, + isSelected = false +}) { + const ref = import_react33.default.useRef(null); + import_react33.default.useEffect(() => { + if (!ref.current) + return; + if (isSelected) { + ref.current.focus(); + } + }, [isSelected]); + function handleClick(e) { + if (!onClick) + return; + e.stopPropagation(); + onClick(); + } + function handleKeyDown(e) { + if (e.key === "Enter") { + e.stopPropagation(); + if (!onClick) + return; + onClick(); + } + } + let className = "NLT__menu-item NLT__selectable"; + if (isSelected) + className += " NLT__selected"; + if (isFocusable) + className += " NLT__focusable"; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + ref, + tabIndex: 0, + className, + css: import_emotion_react_cjs.css` + display: flex; + align-items: center; + padding: var(--nlt-spacing--sm) var(--nlt-spacing--lg); + width: 100%; + `, + "aria-label": ariaLabel, + onClick: handleClick, + onKeyDown: handleKeyDown, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Flex, { + justify: "space-between", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + children: [ + lucideId !== void 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + width: "unset", + pb: "sm", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + value: name + }) + ] + }), + value !== void 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + variant: "faint", + value + }) + ] + }) + }); +} + +// src/react/table-app/row-options/components/RowMenu/index.tsx +var RowMenu = import_react34.default.forwardRef(function RowMenu2({ id: id2, rowId, isOpen, top, left, onDeleteClick }, ref) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { + id: id2, + isOpen, + top, + left, + ref, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__row-menu", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + lucideId: "trash-2", + name: "Delete", + onClick: () => onDeleteClick(rowId) + }) + }) + }); +}); +var RowMenu_default = RowMenu; + +// src/shared/menu/hooks.ts +var import_react35 = __toESM(require_react()); +var useMenu = (level, options) => { + const { shouldRequestOnClose = false } = options || {}; + const [menu] = import_react35.default.useState({ + id: "m" + v4_default(), + level, + shouldRequestOnClose + }); + const menuRef = import_react35.default.useRef(null); + const { + isMenuOpen, + openMenu, + closeTopMenu, + menuCloseRequest, + closeAllMenus + } = useMenuState(); + return { + menu, + menuRef, + isMenuOpen: isMenuOpen(menu), + menuCloseRequest: (menuCloseRequest == null ? void 0 : menuCloseRequest.id) === menu.id ? menuCloseRequest : null, + openMenu, + closeTopMenu, + closeAllMenus + }; +}; + +// src/react/table-app/row-options/index.tsx +function RowOptions({ rowId, onDeleteClick }) { + const { menu, isMenuOpen, menuRef, closeTopMenu } = useMenu(0 /* ONE */); + const { triggerRef, triggerPosition } = useMenuTriggerPosition(); + useShiftMenu(triggerRef, menuRef, isMenuOpen, { + openDirection: "right" + }); + const { dragData, touchDropZone, setDragData, setTouchDropZone } = useDragContext(); + const { tableState, setTableState } = useTableState(); + function handleDeleteClick(rowId2) { + onDeleteClick(rowId2); + closeTopMenu(); + } + function handleMouseDown(e) { + const el = e.target; + const row = el.closest("tr"); + if (row) { + row.setAttr("draggable", true); + const dragStartEvent = new DragEvent("dragstart"); + Object.defineProperty(dragStartEvent, "target", { + value: row + }); + row.dispatchEvent(dragStartEvent); + } + } + function handleTouchStart(e) { + e.stopPropagation(); + const targetEl = e.currentTarget; + const rowEl = targetEl.closest("tr"); + if (!rowEl) + throw new Error("Row not found"); + const rowId2 = getRowId(rowEl); + if (!rowId2) + return; + setDragData({ + type: "row", + id: rowId2 + }); + } + const handleTouchMove = (e) => { + e.stopPropagation(); + if (dragData == null) + return; + const { clientX, clientY } = e.touches[0]; + const elementUnderneath = document.elementFromPoint(clientX, clientY); + if (!elementUnderneath) + return; + const rowEl = elementUnderneath.closest("tr"); + if (!rowEl) + return; + const targetId = getRowId(rowEl); + if (!targetId) + return; + if (targetId === dragData.id) + return; + const { top, left, bottom, right } = rowEl.getBoundingClientRect(); + setTouchDropZone({ + id: targetId, + top, + left, + bottom, + right + }); + removeDragHover(); + addDragHover(rowEl); + }; + function handleTouchCancel() { + endDrag(); + } + function handleTouchEnd(e) { + if (touchDropZone) { + const touchX = e.changedTouches[0].clientX; + const touchY = e.changedTouches[0].clientY; + const isInsideDropZone = touchX >= touchDropZone.left && touchX <= touchDropZone.right && touchY >= touchDropZone.top && touchY <= touchDropZone.bottom; + if (isInsideDropZone) { + dropDrag(touchDropZone.id, dragData, tableState, setTableState); + } + } + endDrag(); + } + function endDrag() { + setDragData(null); + setTouchDropZone(null); + removeDragHover(); + } + function addDragHover(rowEl) { + const children = rowEl.querySelectorAll("td:not(:last-child)"); + for (let i2 = 0; i2 < children.length; i2++) { + children[i2].classList.add("NLT__tr--drag-over"); + } + } + function removeDragHover() { + const children = document.querySelectorAll(".NLT__tr--drag-over"); + for (let i2 = 0; i2 < children.length; i2++) { + children[i2].classList.remove("NLT__tr--drag-over"); + } + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__row-options", + css: import_emotion_react_cjs.css` + width: 100%; + height: 100%; + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + ref: triggerRef, + css: import_emotion_react_cjs.css` + width: 100%; + height: 100%; + padding-left: 5px; + `, + onTouchStart: handleTouchStart, + onTouchMove: handleTouchMove, + onTouchEnd: handleTouchEnd, + onTouchCancel: handleTouchCancel, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuButton, { + menu, + icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId: "grip-vertical" + }), + ariaLabel: "Drag to move or click to open", + onMouseDown: handleMouseDown + }) + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(RowMenu_default, { + id: menu.id, + rowId, + ref: menuRef, + isOpen: isMenuOpen, + top: triggerPosition.top, + left: triggerPosition.left, + onDeleteClick: handleDeleteClick + }) + ] + }); +} + +// src/react/table-app/option-bar/sort-button.tsx +function SortBubble({ + sortDir, + markdown, + onRemoveClick +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: import_emotion_react_cjs.css` + border-radius: 8px; + padding: 2px 6px; + user-select: none; + color: var(--text-on-accent); + border: 1px solid var(--background-modifier-border); + background-color: var(--color-accent); + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "lg", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "sm", + children: [ + sortDir === "asc" /* ASC */ ? /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId: "arrow-up" + }) : /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId: "arrow-down" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("span", { + css: import_emotion_react_cjs.css` + max-width: 150px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + `, + children: markdown + }) + ] + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { + isSmall: true, + invertFocusColor: true, + icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId: "x", + color: "var(--text-on-accent)" + }), + ariaLabel: "Remove sort", + onClick: onRemoveClick + }) + ] + }) + }); +} + +// src/react/shared/switch/index.tsx +function Switch({ isChecked, ariaLabel, onToggle }) { + const { isDarkMode } = useAppSelector((state) => state.global); + function handleKeyDown(e) { + if (e.key === "Enter") { + e.stopPropagation(); + onToggle(!isChecked); + } + } + let className = "checkbox-container NLT__switch NLT__focusable"; + if (isChecked) + className += " is-enabled"; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + tabIndex: 0, + className, + css: import_emotion_react_cjs.css` + transition: none !important; + &:focus-visible { + outline: 2px solid ${isDarkMode ? "var(--text-on-accent);" : "var(--text-on-accent-inverted);"} + outline-offset: 0px; + } + `, + "aria-label": ariaLabel, + onClick: () => onToggle(!isChecked), + onKeyDown: handleKeyDown, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { + type: "checkbox" + }) + }); +} + +// src/react/shared/wrap/index.tsx +function Wrap({ + justify, + align = "center", + spacingX = "md", + spacingY = "md", + width, + children +}) { + const justifyContent = getDynamicSize("flex-start", justify); + const renderWidth = getDynamicSize("100%", width); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: import_emotion_react_cjs.css` + width: ${renderWidth}; + display: flex; + flex-wrap: wrap; + row-gap: ${getSpacing(spacingX)}; + column-gap: ${getSpacing(spacingY)}; + justify-content: ${justifyContent}; + align-items: ${align}; + `, + children + }); +} + +// src/react/table-app/option-bar/toggle-column-menu.tsx +var import_react40 = __toESM(require_react()); +var ToggleColumnMenu = import_react40.default.forwardRef( + function ToggleColumnMenu2({ id: id2, top, left, isOpen, columns, onToggle }, ref) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { + isOpen, + id: id2, + top, + left, + ref, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__toggle-column-menu", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + p: "md", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Stack, { + spacing: "md", + isVertical: true, + children: columns.map((column) => { + const { id: id3, markdown, isVisible } = column; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Wrap, { + justify: "space-between", + spacingX: "4xl", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + value: markdown, + maxWidth: "250px" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Switch, { + isChecked: isVisible, + onToggle: () => onToggle(id3) + }) + ] + }, id3); + }) + }) + }) + }) + }); + } +); +var toggle_column_menu_default = ToggleColumnMenu; + +// src/react/table-app/option-bar/toggle-column.tsx +var import_react41 = __toESM(require_react()); +var areEqual = (prevProps, nextProps) => { + const toggleMatches = prevProps.onToggle == nextProps.onToggle; + const columnsMatch = JSON.stringify(prevProps.columns) === JSON.stringify(nextProps.columns); + return toggleMatches && columnsMatch; +}; +var ToggleColumn = ({ columns, onToggle }) => { + const { menu, isMenuOpen, menuRef } = useMenu(0 /* ONE */); + const { triggerPosition, triggerRef } = useMenuTriggerPosition(); + useShiftMenu(triggerRef, menuRef, isMenuOpen, { + openDirection: "left" + }); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + ref: triggerRef, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuButton, { + isLink: true, + menu, + children: "Toggle" + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(toggle_column_menu_default, { + id: menu.id, + ref: menuRef, + top: triggerPosition.top, + left: triggerPosition.left, + isOpen: isMenuOpen, + columns, + onToggle + }) + ] + }); +}; +var toggle_column_default = import_react41.default.memo(ToggleColumn, areEqual); + +// src/react/table-app/option-bar/filter/filter.tsx +var import_react48 = __toESM(require_react()); + +// src/react/table-app/shared-styles.ts +var selectStyle = import_emotion_react_cjs.css` + &:focus { + box-shadow: none !important; + transition: none !important; + } +`; +var baseInputStyle = import_emotion_react_cjs.css` + width: 100%; + height: 100%; + transition: none !important; + font-size: var(--font-ui-medium) !important; + box-shadow: none !important; +`; +var borderlessStyle = import_emotion_react_cjs.css` + ${baseInputStyle} + border: 0 !important; + border-radius: 0 !important; +`; +var textAreaStyle = import_emotion_react_cjs.css` + ${borderlessStyle} + overflow: hidden; + padding: var(--nlt-cell-spacing-x) var(--nlt-cell-spacing-y); + resize: none; + + &:focus { + outline: 2px solid var(--background-modifier-border-focus); + outline-offset: -2px; + } +`; +var numberInputStyle = import_emotion_react_cjs.css` + ${borderlessStyle} + text-align: right; + + &:focus { + outline: 2px solid var(--background-modifier-border-focus); + outline-offset: -2px; + } +`; +var transparentInputStyle = import_emotion_react_cjs.css` + ${baseInputStyle} + background-color: transparent !important; + border: 0px !important; + padding: 5px 0px; +`; +var borderInputStyle = import_emotion_react_cjs.css` + ${baseInputStyle} + border: 1px solid var(--table-border-color) !important; + padding: 5px 10px; + background-color: var(--background-secondary); +`; + +// src/react/table-app/option-bar/filter/filter-type-select.tsx +function FilterRowDropdown({ + id: id2, + cellType, + value, + onChange +}) { + function handleKeyDown(e) { + if (e.key === "Enter") { + e.stopPropagation(); + } + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("select", { + tabIndex: 0, + className: "NLT__focusable", + css: import_emotion_react_cjs.css` + ${selectStyle} + `, + value, + onChange: (e) => onChange(id2, e.target.value), + onKeyDown: handleKeyDown, + children: [ + cellType === "checkbox" /* CHECKBOX */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is" /* IS */, + children: "Is" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is-not" /* IS_NOT */, + children: "Is not" + }) + ] + }), + cellType === "tag" /* TAG */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is" /* IS */, + children: "Is" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is-not" /* IS_NOT */, + children: "Is not" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is-empty" /* IS_EMPTY */, + children: "Is empty" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is-not-empty" /* IS_NOT_EMPTY */, + children: "Is not empty" + }) + ] + }), + cellType === "multi-tag" /* MULTI_TAG */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "contains" /* CONTAINS */, + children: "Contains" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "does-not-contain" /* DOES_NOT_CONTAIN */, + children: "Does not contain" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is-empty" /* IS_EMPTY */, + children: "Is empty" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is-not-empty" /* IS_NOT_EMPTY */, + children: "Is not empty" + }) + ] + }), + (cellType === "text" /* TEXT */ || cellType === "file" /* FILE */) && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is" /* IS */, + children: "Is" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is-not" /* IS_NOT */, + children: "Is not" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "contains" /* CONTAINS */, + children: "Contains" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "does-not-contain" /* DOES_NOT_CONTAIN */, + children: "Does not contain" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "starts-with" /* STARTS_WITH */, + children: "Starts with" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "ends-with" /* ENDS_WITH */, + children: "Ends with" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is-empty" /* IS_EMPTY */, + children: "Is empty" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "is-not-empty" /* IS_NOT_EMPTY */, + children: "Is not empty" + }) + ] + }) + ] + }); +} + +// src/react/table-app/option-bar/filter/filter-column-select.tsx +function FilterColumnDropdown({ + id: id2, + columns, + value, + onChange +}) { + function handleKeyDown(e) { + if (e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Enter") { + e.stopPropagation(); + } + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("select", { + tabIndex: 0, + className: "NLT__focusable", + css: import_emotion_react_cjs.css` + ${selectStyle} + max-width: 175px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + `, + value, + onChange: (e) => onChange(id2, e.target.value), + onKeyDown: handleKeyDown, + children: columns.map((column) => { + const { id: id3, markdown } = column; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: id3, + children: markdown + }, id3); + }) + }); +} + +// node_modules/react-select/dist/react-select.cjs.mjs +var import_react_select_cjs_default = __toESM(require_react_select_cjs_default(), 1); + +// src/shared/table-state/constants.ts +var MIN_COLUMN_WIDTH = 40; +var CHECKBOX_MARKDOWN_CHECKED = "[x]"; +var CHECKBOX_MARKDOWN_UNCHECKED = "[ ]"; + +// src/react/table-app/option-bar/filter/filter-text-input.tsx +function FilterTextInput({ + id: id2, + text, + tagIds, + columnTags, + cellType, + onTextChange, + onTagsChange +}) { + function handleKeyDown(e) { + if (e.key === "Enter") { + e.stopPropagation(); + } + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + cellType !== "checkbox" /* CHECKBOX */ && cellType !== "tag" /* TAG */ && cellType !== "multi-tag" /* MULTI_TAG */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { + className: "NLT__focusable", + css: import_emotion_react_cjs.css` + ${baseInputStyle} + width: 150px !important; + `, + value: text, + type: "text", + onChange: (e) => onTextChange(id2, e.target.value) + }), + cellType === "checkbox" /* CHECKBOX */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("select", { + tabIndex: 0, + className: "NLT__focusable", + css: import_emotion_react_cjs.css` + ${selectStyle} + `, + value: text, + onChange: (e) => onTextChange(id2, e.target.value), + onKeyDown: handleKeyDown, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: "", + children: "Select an option" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: CHECKBOX_MARKDOWN_CHECKED, + children: "Checked" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: CHECKBOX_MARKDOWN_UNCHECKED, + children: "Unchecked" + }) + ] + }), + (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_react_select_cjs_default._default, { + className: "react-select NLT__focusable", + styles: { + placeholder: (baseStyles) => __spreadProps(__spreadValues({}, baseStyles), { + fontSize: "var(--font-ui-small)" + }), + control: (base) => __spreadProps(__spreadValues({}, base), { + border: 0, + backgroundColor: "var(--interactive-normal)", + boxShadow: "var(--input-shadow)", + borderRadius: "var(--input-radius)", + "&:focus-within": { + boxShadow: "0 0 0px 3px var(--background-modifier-border-focus)" + }, + "&:hover": { + boxShadow: "var(--input-shadow-hover)", + backgroundColor: "var(--interactive-hover)" + } + }), + option: (base, state) => __spreadProps(__spreadValues({}, base), { + fontSize: "var(--font-ui-small)", + backgroundColor: state.isSelected ? "var(--background-secondary)" : "var(--background-primary)", + "&:hover": { + backgroundColor: "var(--interactive-hover)" + } + }), + input: (base) => __spreadProps(__spreadValues({}, base), { + color: "var(--text-on-accent)", + fontSize: "var(--font-ui-small)" + }), + menu: (base) => __spreadProps(__spreadValues({}, base), { + backgroundColor: "var(--background-primary)" + }), + menuList: (base) => __spreadProps(__spreadValues({}, base), { + backgroundColor: "var(--background-primary)", + height: "50px", + overflowY: "scroll" + }), + singleValue: (base) => __spreadProps(__spreadValues({}, base), { + borderRadius: "8px", + color: "var(--text-on-accent)", + backgroundColor: "var(--color-accent)", + fontSize: "var(--font-ui-smaller)", + padding: "3px", + paddingLeft: "6px" + }), + multiValue: (base) => __spreadProps(__spreadValues({}, base), { + backgroundColor: "var(--color-accent)", + borderRadius: "8px" + }), + multiValueLabel: (base) => __spreadProps(__spreadValues({}, base), { + fontSize: "var(--font-ui-smaller)", + color: "var(--text-on-accent)" + }), + multiValueRemove: (base) => __spreadProps(__spreadValues({}, base), { + "&:hover": { + backgroundColor: "var(--background-modifier-hover)", + color: "var(--text-on-accent)" + } + }) + }, + getOptionLabel: (tag) => tag.markdown, + getOptionValue: (tag) => tag.id, + options: columnTags, + isClearable: false, + isMulti: cellType === "multi-tag" /* MULTI_TAG */, + backspaceRemovesValue: true, + value: columnTags.filter((tag) => tagIds.includes(tag.id)), + onChange: (value) => { + if (cellType === "multi-tag" /* MULTI_TAG */) { + onTagsChange( + id2, + value == null ? void 0 : value.map((tag) => tag.id) + ); + } else { + onTagsChange( + id2, + [value == null ? void 0 : value.id] + ); + } + } + }) + ] + }); +} + +// src/react/table-app/option-bar/filter/filter-row.tsx +function FilterRow({ + id: id2, + columns, + isEnabled, + columnId, + filterType, + columnTags, + tagIds, + cellType, + text, + onToggle, + onColumnChange, + onFilterTypeChange, + onTextChange, + onDeleteClick, + onTagsChange +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Wrap, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FilterColumnDropdown, { + id: id2, + columns, + value: columnId, + onChange: onColumnChange + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FilterRowDropdown, { + id: id2, + cellType, + value: filterType, + onChange: onFilterTypeChange + }), + filterType !== "is-empty" /* IS_EMPTY */ && filterType !== "is-not-empty" /* IS_NOT_EMPTY */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FilterTextInput, { + id: id2, + tagIds, + columnTags, + cellType, + text, + onTextChange, + onTagsChange + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + grow: true, + justify: "flex-end", + align: "center", + spacing: "lg", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { + icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId: "trash-2" + }), + ariaLabel: "Delete filter rule", + onClick: () => onDeleteClick(id2) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Switch, { + isChecked: isEnabled, + ariaLabel: isEnabled ? "Disable filter rule" : "Enable filter rule", + onToggle: () => onToggle(id2) + }) + ] + }) + ] + }); +} + +// src/react/table-app/option-bar/filter/filter-menu.tsx +var import_react46 = __toESM(require_react()); +var FilterMenu = import_react46.default.forwardRef(function FilterMenu2({ + id: id2, + top, + left, + isOpen, + columns, + filterRules, + onAddClick, + onToggle, + onColumnChange, + onFilterTypeChange, + onTextChange, + onDeleteClick, + onTagsChange +}, ref) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { + isOpen, + id: id2, + top, + left, + maxHeight: 255, + ref, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__filter-menu", + css: import_emotion_react_cjs.css` + width: ${isMobileSize() ? "calc(100vw - 30px)" : "unset"}; + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + p: "md", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "lg", + isVertical: true, + children: [ + filterRules.map((rule) => { + const { + id: id3, + text, + columnId, + isEnabled, + type: filterType, + tagIds + } = rule; + const column = columns.find( + (column2) => column2.id === columnId + ); + if (!column) + throw new ColumNotFoundError(columnId); + const { tags, type: cellType } = column; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FilterRow, { + id: id3, + columns, + text, + columnTags: tags, + cellType, + tagIds, + filterType, + columnId, + isEnabled, + onTextChange, + onColumnChange, + onFilterTypeChange, + onToggle, + onDeleteClick, + onTagsChange + }, id3); + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { + icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId: "plus" + }), + ariaLabel: "Add filter rule", + onClick: () => onAddClick(columns[0].id) + }), + filterRules.length === 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + value: "No rules to display" + }) + ] + }) + ] + }) + }) + }) + }); +}); +var filter_menu_default = FilterMenu; + +// src/react/table-app/option-bar/filter/filter.tsx +var areEqual2 = (prevProps, nextProps) => { + const columnsMatch = JSON.stringify(prevProps.columns) === JSON.stringify(nextProps.columns); + const filterRulesMatch = JSON.stringify(prevProps.filterRules) === JSON.stringify(nextProps.filterRules); + return columnsMatch && filterRulesMatch; +}; +var Filter = ({ + columns, + filterRules, + onAddClick, + onColumnChange, + onDeleteClick, + onFilterTypeChange, + onToggle, + onTextChange, + onTagsChange +}) => { + const { menu, menuRef, isMenuOpen } = useMenu(0 /* ONE */); + const { triggerRef, triggerPosition } = useMenuTriggerPosition(); + useShiftMenu(triggerRef, menuRef, isMenuOpen, { + openDirection: "left" + }); + const previousLength = usePrevious(filterRules.length); + import_react48.default.useEffect(() => { + if (previousLength !== void 0) { + if (previousLength < filterRules.length) { + if (menuRef.current) { + menuRef.current.scrollTop = menuRef.current.scrollHeight; + } + } + } + }, [previousLength, filterRules.length, menuRef]); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + ref: triggerRef, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuButton, { + isLink: true, + menu, + children: "Filter" + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(filter_menu_default, { + id: menu.id, + ref: menuRef, + top: triggerPosition.top, + left: triggerPosition.left, + isOpen: isMenuOpen, + columns, + filterRules, + onTextChange, + onColumnChange, + onFilterTypeChange, + onDeleteClick, + onAddClick, + onToggle, + onTagsChange + }) + ] + }); +}; +var filter_default = import_react48.default.memo(Filter, areEqual2); + +// src/react/table-app/option-bar/search-bar.tsx +function SearchBar() { + const { searchText, setSearchText, isSearchBarVisible, toggleSearchBar } = useTableState(); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "lg", + children: [ + isSearchBarVisible && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { + className: "NLT__focusable", + css: import_emotion_react_cjs.css` + ${baseInputStyle} + max-width: 200px; + `, + autoFocus: true, + type: "text", + placeholder: "Type to search...", + value: searchText, + onChange: (e) => setSearchText(e.target.value) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { + icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId: "search" + }), + ariaLabel: "Search", + onClick: () => toggleSearchBar() + }) + ] + }); +} + +// src/react/shared/divider/index.tsx +function Divider({ + isVertical = false, + width = "100%", + height = "100%" +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("hr", { + css: import_emotion_react_cjs.css` + margin: 0; + width: ${!isVertical ? width : "unset"}; + height: ${isVertical === true ? height : "unset"}; + border-top: ${isVertical === false ? "1px solid var(--hr-color)" : "unset"}; + border-left: ${isVertical === true ? "1px var(--hr-color) solid" : "unset"}; + ` + }); +} + +// src/react/table-app/option-bar/active-filter-bubble.tsx +function ActiveFilterBubble({ numActive }) { + if (numActive === 0) + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + css: import_emotion_react_cjs.css` + border-radius: 8px; + padding: 2px 6px; + color: var(--text-on-accent); + border: 1px solid var(--background-modifier-border); + background-color: var(--color-accent); + `, + children: [ + numActive, + " active filter", + numActive > 1 ? "s" : "" + ] + }); +} + +// src/shared/table-state/filter-by-rules.ts +var isCellTypeFilterable = (cellType) => { + switch (cellType) { + case "text" /* TEXT */: + case "file" /* FILE */: + case "tag" /* TAG */: + case "multi-tag" /* MULTI_TAG */: + case "checkbox" /* CHECKBOX */: + return true; + default: + return false; + } +}; +var filterBodyRowsByRules = (prevState) => { + const { columns, bodyCells, bodyRows, filterRules } = prevState.model; + const columnMap = /* @__PURE__ */ new Map(); + columns.forEach((column) => columnMap.set(column.id, column)); + const cellMatches = /* @__PURE__ */ new Map(); + bodyCells.forEach((cell) => { + const column = columnMap.get(cell.columnId); + if (!column) + throw new ColumNotFoundError(cell.columnId); + const { tags } = column; + const doesMatch = doesCellMatchRules( + cell, + column.type, + tags, + filterRules + ); + cellMatches.set(cell.id, doesMatch); + }); + return bodyRows.filter((row) => { + const filteredCells = bodyCells.filter((cell) => cell.rowId === row.id); + return filteredCells.every((cell) => cellMatches.get(cell.id) === true); + }); +}; +var doesCellMatchRules = (cell, cellType, tags, rules) => { + return rules.every((rule) => doesCellMatchRule(cell, cellType, tags, rule)); +}; +var doesCellMatchRule = (cell, cellType, tags, rule) => { + if (rule.columnId !== cell.columnId) + return true; + if (!isCellTypeFilterable(cellType)) + return true; + if (rule.isEnabled) { + if (cellType === "text" /* TEXT */ || cellType === "file" /* FILE */) { + return doesTextMatch(cell.markdown, rule.text, rule.type); + } else if (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) { + const cellTags = tags.filter((tag) => cell.tagIds.includes(tag.id)).map((tag) => tag.markdown); + const ruleTags = tags.filter((tag) => rule.tagIds.includes(tag.id)); + if (cellTags.length === 0) { + return doesTextMatch("", "", rule.type); + } + return ruleTags.every( + (ruleTag) => doesTagMatch(cellTags, ruleTag.markdown, rule.type) + ); + } else if (cellType === "checkbox" /* CHECKBOX */) { + return doesTextMatch(cell.markdown, rule.text, rule.type); + } + } + return true; +}; +var doesTagMatch = (markdown, ruleText, filterType) => { + switch (filterType) { + case "is" /* IS */: + return markdown[0] === ruleText; + case "is-not" /* IS_NOT */: + return markdown[0] !== ruleText; + case "contains" /* CONTAINS */: + return markdown.some((tag) => ruleText.includes(tag)); + case "does-not-contain" /* DOES_NOT_CONTAIN */: + return markdown.every((tag) => !ruleText.includes(tag)); + case "is-empty" /* IS_EMPTY */: + return markdown.length === 0; + case "is-not-empty" /* IS_NOT_EMPTY */: + return markdown.length !== 0; + } +}; +var doesTextMatch = (markdown, ruleText, filterType) => { + const compareMarkdown = markdown.toLowerCase().trim(); + const compareRuleText = ruleText.toLowerCase().trim(); + if (filterType !== "is-not-empty" /* IS_NOT_EMPTY */ && filterType !== "is-empty" /* IS_EMPTY */) { + if (compareRuleText === "") + return true; + if (markdown === "") + return true; + } + switch (filterType) { + case "is" /* IS */: + return compareMarkdown === compareRuleText; + case "is-not" /* IS_NOT */: + return compareMarkdown !== compareRuleText; + case "contains" /* CONTAINS */: + return compareMarkdown.includes(compareRuleText); + case "does-not-contain" /* DOES_NOT_CONTAIN */: + return !compareMarkdown.includes(compareRuleText); + case "starts-with" /* STARTS_WITH */: + return compareMarkdown.startsWith(compareRuleText); + case "ends-with" /* ENDS_WITH */: + return compareMarkdown.endsWith(compareRuleText); + case "is-empty" /* IS_EMPTY */: + return compareMarkdown === ""; + case "is-not-empty" /* IS_NOT_EMPTY */: + return compareMarkdown !== ""; + default: + throw new Error("Filter type not yet supported"); + } +}; + +// src/react/table-app/option-bar/index.tsx +var SortBubbleList = ({ + headerCells, + columns, + onRemoveClick +}) => { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Stack, { + spacing: "sm", + children: headerCells.map((cell, i2) => { + const column = columns.find((c2) => c2.id === cell.columnId); + if (!column) + throw new ColumNotFoundError(cell.columnId); + const { markdown, columnId } = cell; + const { sortDir } = column; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SortBubble, { + sortDir, + markdown, + onRemoveClick: () => onRemoveClick(columnId) + }, i2); + }) + }); +}; +function OptionBar({ + headerCells, + columns, + filterRules, + onSortRemoveClick, + onColumnToggle, + onRuleToggle, + onRuleColumnChange, + onRuleFilterTypeChange, + onRuleTextChange, + onRuleDeleteClick, + onRuleAddClick, + onRuleTagsChange +}) { + const sortedCells = headerCells.filter((cell) => { + const columnId = cell.columnId; + const column = columns.find((c2) => c2.id === columnId); + if (!column) + throw new ColumNotFoundError(columnId); + return column.sortDir !== "default" /* NONE */; + }); + const activeRules = filterRules.filter((rule) => rule.isEnabled); + const columnsWithMarkdown = columns.map((column) => { + const headerCell = headerCells.find( + (cell) => cell.columnId === column.id + ); + if (!headerCell) + throw new CellNotFoundError({ + columnId: column.id + }); + return __spreadProps(__spreadValues({}, column), { + markdown: headerCell.markdown + }); + }); + const filterableColumns = columnsWithMarkdown.filter( + (column) => { + const { type } = column; + return isCellTypeFilterable(type); + } + ); + const sortedColumn = columns.find((c2) => c2.sortDir !== "default" /* NONE */); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__option-bar", + css: import_emotion_react_cjs.css` + width: 100%; + padding-left: var(--nlt-spacing--lg); + padding-bottom: var(--nlt-spacing--md); + padding-top: var(--nlt-spacing--md); + border-bottom: 1px solid var(--background-modifier-border); + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + px: "xl", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Stack, { + spacing: "lg", + isVertical: true, + align: "center", + minHeight: "40px", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Wrap, { + justify: { base: "space-between", mobile: "flex-end" }, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "md", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SortBubbleList, { + headerCells: sortedCells, + columns, + onRemoveClick: onSortRemoveClick + }), + activeRules.length !== 0 && sortedColumn !== void 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, { + isVertical: true, + height: "1.5rem" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ActiveFilterBubble, { + numActive: activeRules.length + }) + ] + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "sm", + justify: "flex-end", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SearchBar, {}), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(filter_default, { + columns: filterableColumns, + filterRules, + onAddClick: onRuleAddClick, + onToggle: onRuleToggle, + onColumnChange: onRuleColumnChange, + onFilterTypeChange: onRuleFilterTypeChange, + onTextChange: onRuleTextChange, + onDeleteClick: onRuleDeleteClick, + onTagsChange: onRuleTagsChange + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(toggle_column_default, { + columns: columnsWithMarkdown, + onToggle: onColumnToggle + }) + ] + }) + ] + }) + }) + }) + }); +} + +// src/react/table-app/function-cell/function-menu.tsx +var import_react53 = __toESM(require_react()); + +// src/shared/table-state/display-name.ts +var getShortDisplayNameForGeneralFunction = (value) => { + switch (value) { + case "count-all" /* COUNT_ALL */: + return "Count"; + case "count-not-empty" /* COUNT_NOT_EMPTY */: + return "Not empty"; + case "count-values" /* COUNT_VALUES */: + return "Values"; + case "count-empty" /* COUNT_EMPTY */: + return "Empty"; + case "count-unique" /* COUNT_UNIQUE */: + return "Unique"; + case "none" /* NONE */: + return "None"; + case "percent-empty" /* PERCENT_EMPTY */: + return "Empty"; + case "percent-not-empty" /* PERCENT_NOT_EMPTY */: + return "Not empty"; + default: + return ""; + } +}; +var getShortDisplayNameForFunctionType = (value) => { + if (isGeneralFunction(value)) + return getShortDisplayNameForGeneralFunction(value); + return getDisplayNameForNumberFunction(value); +}; +var getAriaLabelForGeneralFunction = (value) => { + switch (value) { + case "count-all" /* COUNT_ALL */: + return "Counts the total number of rows"; + case "count-empty" /* COUNT_EMPTY */: + return "Counts the number of rows with an empty cell value"; + case "count-not-empty" /* COUNT_NOT_EMPTY */: + return "Counts the number of rows with a non-empty cell value"; + case "count-unique" /* COUNT_UNIQUE */: + return "Counts the number of unique values in the column"; + case "count-values" /* COUNT_VALUES */: + return "Counts the number of values in the column"; + case "percent-empty" /* PERCENT_EMPTY */: + return "Displays the percentage of rows with an empty cell value"; + case "percent-not-empty" /* PERCENT_NOT_EMPTY */: + return "Displays the percentage of rows with a non-empty cell value"; + default: + return ""; + } +}; +var getAriaLabelForNumberFunction = (value) => { + switch (value) { + case "sum" /* SUM */: + return "Computes the sum of the cells in the column"; + case "avg" /* AVG */: + return "Computes the average of the cells in the column"; + case "min" /* MIN */: + return "Computes the minimum of the cells in the column"; + case "max" /* MAX */: + return "Computes the maximum of the cells in the column"; + case "median" /* MEDIAN */: + return "Computes the median of the cells in the column"; + case "range" /* RANGE */: + return "Computes the range (max - min) of the cells in the column"; + default: + return ""; + } +}; +var getDisplayNameForGeneralFunction = (value) => { + switch (value) { + case "count-all" /* COUNT_ALL */: + return "Count all"; + case "count-not-empty" /* COUNT_NOT_EMPTY */: + return "Count not empty"; + case "count-values" /* COUNT_VALUES */: + return "Count values"; + case "count-empty" /* COUNT_EMPTY */: + return "Count empty"; + case "count-unique" /* COUNT_UNIQUE */: + return "Count unique"; + case "none" /* NONE */: + return "None"; + case "percent-empty" /* PERCENT_EMPTY */: + return "Percent empty"; + case "percent-not-empty" /* PERCENT_NOT_EMPTY */: + return "Percent not empty"; + default: + return ""; + } +}; +var getDisplayNameForNumberFunction = (value) => { + switch (value) { + case "sum" /* SUM */: + return "Sum"; + case "avg" /* AVG */: + return "Average"; + case "min" /* MIN */: + return "Min"; + case "max" /* MAX */: + return "Max"; + case "median" /* MEDIAN */: + return "Median"; + case "range" /* RANGE */: + return "Range"; + default: + return ""; + } +}; +var getDisplayNameForDateFormat = (format) => { + switch (format) { + case "dd/mm/yyyy" /* DD_MM_YYYY */: + return "Day/Month/Year"; + case "mm/dd/yyyy" /* MM_DD_YYYY */: + return "Month/Day/Year"; + case "yyyy/mm/dd" /* YYYY_MM_DD */: + return "Year/Month/Day"; + case "full" /* FULL */: + return "Full"; + case "relative" /* RELATIVE */: + return "Relative"; + default: + return ""; + } +}; +var getDisplayNameForCurrencyType = (type) => { + switch (type) { + case "USD" /* UNITED_STATES */: + return "United States Dollar"; + case "CAD" /* CANADA */: + return "Canadian Dollar"; + case "AUD" /* AUSTRALIA */: + return "Australian Dollar"; + case "SGB" /* SINGAPORE */: + return "Singapore Dollar"; + case "CNY" /* CHINA */: + return "Yuan"; + case "JPY" /* JAPAN */: + return "Yen"; + case "COP" /* COLOMBIA */: + return "Colombian Peso"; + case "EUR" /* EUROPE */: + return "Euro"; + case "SEK" /* SWEDEN */: + return "Swedish Krona"; + case "DKK" /* DENMARK */: + return "Danish Krone"; + case "NOK" /* NORWAY */: + return "Norwegian Krone"; + case "ISK" /* ICELAND */: + return "Icelandic Kr\xF3na"; + case "BRL" /* BRAZIL */: + return "Real"; + case "GBP" /* POUND */: + return "Pound"; + case "INR" /* INDIA */: + return "Rupee"; + case "ARS" /* ARGENTINA */: + return "Argentine Peso"; + case "MXN" /* MEXICO */: + return "Mexican Peso"; + case "RUB" /* RUSSIA */: + return "Ruble"; + default: + return ""; + } +}; +var getDisplayNameForCellType = (type) => { + switch (type) { + case "text" /* TEXT */: + return "Text"; + case "embed" /* EMBED */: + return "Embed"; + case "file" /* FILE */: + return "File"; + case "number" /* NUMBER */: + return "Number"; + case "checkbox" /* CHECKBOX */: + return "Checkbox"; + case "date" /* DATE */: + return "Date"; + case "last-edited-time" /* LAST_EDITED_TIME */: + return "Last edited"; + case "creation-time" /* CREATION_TIME */: + return "Creation"; + case "tag" /* TAG */: + return "Tag"; + case "multi-tag" /* MULTI_TAG */: + return "Multi-tag"; + case "currency" /* CURRENCY */: + return "Currency"; + default: + return ""; + } +}; + +// src/react/table-app/function-cell/function-menu.tsx +var FunctionMenu = import_react53.default.forwardRef( + function FunctionMenu2({ id: id2, value, cellType, isOpen, top, left, onClick }, ref) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { + ref, + id: id2, + isOpen, + top, + left, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + className: "NLT__function-menu", + children: [ + Object.values(GeneralFunction).map((type) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: getDisplayNameForGeneralFunction(type), + ariaLabel: getAriaLabelForGeneralFunction(type), + onClick: () => onClick(type), + isSelected: type === value + }, type)), + (cellType === "number" /* NUMBER */ || cellType === "currency" /* CURRENCY */) && Object.values(NumberFunction).map((type) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + ariaLabel: getAriaLabelForNumberFunction(type), + name: getDisplayNameForNumberFunction(type), + onClick: () => onClick(type), + isSelected: type === value + }, type)) + ] + }) + }); + } +); +var function_menu_default = FunctionMenu; + +// src/react/table-app/function-cell/arithmetic.ts +var getAverage = (values) => { + return getSum(values) / values.length; +}; +var getSum = (values) => { + return values.reduce((sum, a2) => sum + a2, 0); +}; +var getMaximum = (values) => { + return Math.max(...values); +}; +var getMinimum = (values) => { + return Math.min(...values); +}; +var getMedian = (values) => { + const sortedValues = values.sort((a2, b2) => a2 - b2); + const middle = Math.floor(values.length / 2); + if (values.length % 2 === 0) { + return (sortedValues[middle - 1] + sortedValues[middle]) / 2; + } else { + return sortedValues[middle]; + } +}; +var getRange = (values) => { + return getMaximum(values) - getMinimum(values); +}; + +// src/react/table-app/function-cell/utils.ts +var NAMESPACE = "fa23ee5e-43ae-45e0-83ed-97c577913416"; +var hashString = (value) => { + return v5_default(value, NAMESPACE); +}; +var round2Digits = (value) => { + if (value.toString().includes(".")) + return parseFloat(value.toFixed(2)); + return value; +}; + +// src/shared/cell-content/currency-cell-content.ts +var getCurrencyCellContent = (value, currencyType) => { + if (isNumber(value)) + return stringToCurrencyString(value, currencyType); + return ""; +}; + +// src/react/table-app/function-cell/number-function.ts +var getNumberFunctionContent = (values, cellType, currencyType, functionType) => { + const value = getNumberFunctionValue(values, functionType).toString(); + if (cellType === "currency" /* CURRENCY */) + return getCurrencyCellContent(value, currencyType); + return value; +}; +var getNumberFunctionValue = (values, type) => { + if (type === "avg" /* AVG */) { + return round2Digits(getAverage(values)); + } else if (type === "max" /* MAX */) { + return getMaximum(values); + } else if (type === "min" /* MIN */) { + return getMinimum(values); + } else if (type === "range" /* RANGE */) { + return round2Digits(getRange(values)); + } else if (type === "sum" /* SUM */) { + return round2Digits(getSum(values)); + } else if (type === "median" /* MEDIAN */) { + return round2Digits(getMedian(values)); + } else { + throw new Error("Unhandled number function"); + } +}; + +// src/shared/date/constants.ts +var MILLIS_IN_DAY = 1e3 * 60 * 60 * 24; +var MILLIS_IN_MINUTE = 1e3 * 60; + +// src/shared/date/regex.ts +var YYYY_MM_DD_REGEX = new RegExp( + /^(\d{4})\/(0[1-9]|1[0-2])\/(0[1-9]|[1-2]\d|3[0-1])$/ +); +var MM_DD_YYYY_REGEX = new RegExp( + /^(0[1-9]|1[0-2])\/(0[1-9]|[1-2]\d|3[0-1])\/(\d{4})$/ +); +var DD_MM_YYYY_REGEX = new RegExp( + /^(0[1-9]|[1-2]\d|3[0-1])\/(0[1-9]|1[0-2])\/(\d{4})$/ +); + +// src/shared/date/utils.ts +var getDateParts = (date) => { + const year = date.getFullYear().toString(); + const month = ("0" + (date.getMonth() + 1)).slice(-2); + const day = ("0" + date.getDate()).slice(-2); + const time = date.toLocaleString("en-US", { + hour: "numeric", + minute: "numeric", + hour12: true + }); + return { year, month, day, time }; +}; +var getUTCTimeFromDateParts = (year, month, day) => { + return new Date(`${year}-${month}-${day}T00:00:00`).getTime(); +}; +var removeLastComma = (value) => { + const commaIndex = value.lastIndexOf(","); + return value.substring(0, commaIndex) + value.substring(commaIndex + 1); +}; + +// src/shared/date/date-conversion.ts +var dateStringToUnixTime = (value, dateFormat) => { + const parts = value.split("/"); + switch (dateFormat) { + case "mm/dd/yyyy" /* MM_DD_YYYY */: + return getUTCTimeFromDateParts(parts[2], parts[0], parts[1]); + case "dd/mm/yyyy" /* DD_MM_YYYY */: + return getUTCTimeFromDateParts(parts[2], parts[1], parts[0]); + case "yyyy/mm/dd" /* YYYY_MM_DD */: + return getUTCTimeFromDateParts(parts[0], parts[1], parts[2]); + default: + throw new Error("Date format not supported."); + } +}; +var unixTimeToDateString = (unixTime, format) => { + const date = new Date(unixTime); + const { year, month, day } = getDateParts(date); + switch (format) { + case "mm/dd/yyyy" /* MM_DD_YYYY */: + return `${month}/${day}/${year}`; + case "dd/mm/yyyy" /* DD_MM_YYYY */: + return `${day}/${month}/${year}`; + case "yyyy/mm/dd" /* YYYY_MM_DD */: + return `${year}/${month}/${day}`; + case "full" /* FULL */: + return date.toLocaleString("en-US", { + month: "short", + day: "numeric", + year: "numeric" + }); + case "relative" /* RELATIVE */: { + const diff = Date.now() - date.getTime(); + if (diff < MILLIS_IN_DAY) { + return "Today"; + } else if (diff < MILLIS_IN_DAY * 2) { + return "Yesterday"; + } else if (diff < MILLIS_IN_DAY * 7) { + return date.toLocaleString("en-US", { weekday: "long" }); + } else { + return date.toLocaleString("en-US", { + month: "short", + day: "numeric", + year: "numeric" + }); + } + } + default: + return ""; + } +}; +var unixTimeToDateTimeString = (unixTime, format) => { + const date = new Date(unixTime); + const { year, month, day, time } = getDateParts(date); + switch (format) { + case "mm/dd/yyyy" /* MM_DD_YYYY */: + return `${month}/${day}/${year} ${time}`; + case "dd/mm/yyyy" /* DD_MM_YYYY */: + return `${day}/${month}/${year} ${time}`; + case "yyyy/mm/dd" /* YYYY_MM_DD */: + return `${year}/${month}/${day} ${time}`; + case "full" /* FULL */: { + const value = date.toLocaleString("en-US", { + month: "short", + day: "numeric", + year: "numeric", + hour: "numeric", + minute: "numeric", + hour12: true + }); + return removeLastComma(value); + } + case "relative" /* RELATIVE */: { + const diff = Date.now() - date.getTime(); + const time2 = date.toLocaleString("en-US", { + hour: "numeric", + minute: "numeric", + hour12: true + }); + if (diff < MILLIS_IN_DAY) { + return "Today " + time2; + } else if (diff < MILLIS_IN_DAY * 2) { + return "Yesterday " + time2; + } else if (diff < MILLIS_IN_DAY * 7) { + return date.toLocaleString("en-US", { weekday: "long" }) + " " + time2; + } else { + const value = date.toLocaleString("en-US", { + month: "short", + day: "numeric", + year: "numeric", + hour: "numeric", + minute: "numeric", + hour12: true + }); + return removeLastComma(value); + } + } + default: + return ""; + } +}; +var isValidDateFormat = (value, dateFormat) => { + switch (dateFormat) { + case "mm/dd/yyyy" /* MM_DD_YYYY */: + return value.match(MM_DD_YYYY_REGEX) !== null; + case "dd/mm/yyyy" /* DD_MM_YYYY */: + return value.match(DD_MM_YYYY_REGEX) !== null; + case "yyyy/mm/dd" /* YYYY_MM_DD */: + return value.match(YYYY_MM_DD_REGEX) !== null; + default: + return false; + } +}; + +// src/react/table-app/function-cell/general-function.ts +var getGeneralFunctionContent = (bodyRows, columnCells, columnTags, cellType, functionType, dateFormat) => { + return getGeneralFunctionValue( + bodyRows, + columnCells, + columnTags, + cellType, + functionType, + dateFormat + ).toString(); +}; +var getGeneralFunctionValue = (bodyRows, columnCells, columnTags, cellType, functionType, dateFormat) => { + if (functionType === "count-all" /* COUNT_ALL */) { + return countAll(bodyRows); + } else if (functionType === "count-empty" /* COUNT_EMPTY */) { + return countEmpty(columnCells, cellType); + } else if (functionType === "count-not-empty" /* COUNT_NOT_EMPTY */) { + return countNotEmpty(columnCells, cellType); + } else if (functionType === "count-unique" /* COUNT_UNIQUE */) { + return countUnique( + bodyRows, + columnCells, + columnTags, + cellType, + dateFormat + ); + } else if (functionType === "count-values" /* COUNT_VALUES */) { + return countValues(columnCells, cellType); + } else if (functionType === "percent-empty" /* PERCENT_EMPTY */) { + return percentEmpty(columnCells, cellType); + } else if (functionType === "percent-not-empty" /* PERCENT_NOT_EMPTY */) { + return percentNotEmpty(columnCells, cellType); + } else if (functionType === "none" /* NONE */) { + return ""; + } else { + throw new Error("Unhandled general function"); + } +}; +var countAll = (bodyRows) => { + return bodyRows.length; +}; +var countEmpty = (columnCells, cellType) => { + return columnCells.map((cell) => isCellContentEmpty(cell, cellType)).reduce((accum, value) => { + if (value === true) + return accum + 1; + return accum; + }, 0); +}; +var countNotEmpty = (columnCells, cellType) => { + return columnCells.map((cell) => isCellContentEmpty(cell, cellType)).reduce((accum, value) => { + if (value === false) + return accum + 1; + return accum; + }, 0); +}; +var countUnique = (bodyRows, columnCells, columnTags, cellType, dateFormat) => { + const hashes = columnCells.map((cell) => { + const row = bodyRows.find((row2) => row2.id === cell.rowId); + if (!row) + throw new RowNotFoundError(cell.rowId); + const cellValues = getCellValues( + row, + cell, + columnTags, + cellType, + dateFormat + ); + return cellValues.filter((value) => value !== "").map((value) => hashString(value)); + }).flat(1); + const uniqueHashes = new Set(hashes); + return uniqueHashes.size; +}; +var countValues = (columnCells, cellType) => { + return columnCells.map((cell) => countCellValues(cell, cellType)).reduce((accum, value) => accum + value, 0); +}; +var percentEmpty = (columnCells, cellType) => { + const percent = countEmpty(columnCells, cellType) / columnCells.length * 100; + const normalized = round2Digits(percent); + return normalized + "%"; +}; +var percentNotEmpty = (columnCells, cellType) => { + const percent = countNotEmpty(columnCells, cellType) / columnCells.length * 100; + const normalized = round2Digits(percent); + return normalized + "%"; +}; +var getCellValues = (bodyRow, cell, columnTags, cellType, dateFormat) => { + if (cellType === "text" /* TEXT */ || cellType === "embed" /* EMBED */ || cellType === "number" /* NUMBER */ || cellType === "currency" /* CURRENCY */ || cellType === "checkbox" /* CHECKBOX */ || cellType === "file" /* FILE */) { + return [cell.markdown]; + } else if (cellType === "date" /* DATE */) { + if (cell.dateTime) + return [cell.dateTime.toString()]; + return []; + } else if (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) { + return cell.tagIds.map((tagId) => { + const tag = columnTags.find((tag2) => tag2.id === tagId); + if (!tag) + throw new TagNotFoundError(tagId); + return tag.markdown; + }); + } else if (cellType === "last-edited-time" /* LAST_EDITED_TIME */) { + return [unixTimeToDateTimeString(bodyRow.lastEditedTime, dateFormat)]; + } else if (cellType === "creation-time" /* CREATION_TIME */) { + return [unixTimeToDateTimeString(bodyRow.creationTime, dateFormat)]; + } else { + throw new Error("Unhandled cell type"); + } +}; +var countCellValues = (cell, cellType) => { + if (cellType === "text" /* TEXT */ || cellType === "embed" /* EMBED */ || cellType === "number" /* NUMBER */ || cellType === "currency" /* CURRENCY */ || cellType === "file" /* FILE */) { + return cell.markdown === "" ? 0 : 1; + } else if (cellType === "date" /* DATE */) { + return cell.dateTime == null ? 0 : 1; + } else if (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) { + return cell.tagIds.length; + } else if (cellType === "checkbox" /* CHECKBOX */) { + return isCheckboxChecked(cell.markdown) ? 1 : 0; + } else if (cellType === "last-edited-time" /* LAST_EDITED_TIME */ || cellType === "creation-time" /* CREATION_TIME */) { + return 1; + } else { + throw new Error("Unhandled cell type"); + } +}; +var isCellContentEmpty = (cell, cellType) => { + if (cellType === "text" /* TEXT */ || cellType === "embed" /* EMBED */ || cellType === "number" /* NUMBER */ || cellType === "currency" /* CURRENCY */ || cellType === "file" /* FILE */) { + return cell.markdown === ""; + } else if (cellType === "date" /* DATE */) { + return cell.dateTime == null; + } else if (cellType === "tag" /* TAG */ || cellType === "multi-tag" /* MULTI_TAG */) { + return cell.tagIds.length === 0; + } else if (cellType === "checkbox" /* CHECKBOX */) { + return !isCheckboxChecked(cell.markdown); + } else if (cellType === "last-edited-time" /* LAST_EDITED_TIME */ || cellType === "creation-time" /* CREATION_TIME */) { + return true; + } else { + throw new Error("Unhandled cell type"); + } +}; + +// src/react/table-app/function-cell/index.tsx +function FunctionCell({ + columnId, + columnTags, + bodyCells, + dateFormat, + bodyRows, + functionType, + currencyType, + cellType, + onFunctionTypeChange +}) { + const { menu, isMenuOpen, menuRef, closeTopMenu } = useMenu(0 /* ONE */); + const { triggerPosition, triggerRef } = useMenuTriggerPosition(); + useShiftMenu(triggerRef, menuRef, isMenuOpen); + function handleFunctionTypeClick(value) { + onFunctionTypeChange(columnId, value); + closeTopMenu(); + } + const columnCells = bodyCells.filter((cell) => cell.columnId === columnId); + let content = ""; + if (isGeneralFunction(functionType)) { + content = getGeneralFunctionContent( + bodyRows, + columnCells, + columnTags, + cellType, + functionType, + dateFormat + ); + } else { + const cellValues = columnCells.filter((cell) => isNumber(cell.markdown)).map((cell) => parseFloat(cell.markdown)); + if (cellValues.length !== 0) + content = getNumberFunctionContent( + cellValues, + cellType, + currencyType, + functionType + ); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_trigger_default, { + isCell: true, + menu, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + className: "NLT__function-cell NLT__selectable", + ref: triggerRef, + children: [ + functionType === "none" /* NONE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + value: "Calculate", + variant: "faint" + }), + functionType !== "none" /* NONE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "sm", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + value: getShortDisplayNameForFunctionType( + functionType + ), + variant: "muted" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + value: content, + variant: "semibold" + }) + ] + }) + ] + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(function_menu_default, { + id: menu.id, + top: triggerPosition.top, + ref: menuRef, + cellType, + left: triggerPosition.left, + isOpen: isMenuOpen, + value: functionType, + onClick: handleFunctionTypeClick + }) + ] + }); +} + +// src/react/table-app/body-cell/index.tsx +var import_react81 = __toESM(require_react()); + +// src/react/table-app/text-cell/index.tsx +function TextCell({ markdown, shouldWrapOverflow }) { + const { containerRef, renderRef } = useRenderMarkdown(markdown, false); + const overflowStyle = useOverflow(shouldWrapOverflow); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__text-cell", + css: overflowStyle, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: import_emotion_react_cjs.css` + p { + margin: 0; + text-align: left; + } + + ul { + padding-left: var(--nlt-spacing--xl); + padding-right: 0; + margin: 0; + } + `, + ref: (node) => { + containerRef.current = node; + appendOrReplaceFirstChild(node, renderRef.current); + } + }) + }); +} + +// src/shared/color.ts +var findColorClassName = (isDarkMode, color) => { + switch (color) { + case "light gray" /* LIGHT_GRAY */: + return isDarkMode ? "NLT__light-gray--dark" : "NLT__light-gray--light"; + case "gray" /* GRAY */: + return isDarkMode ? "NLT__gray--dark" : "NLT__gray--light"; + case "brown" /* BROWN */: + return isDarkMode ? "NLT__brown--dark" : "NLT__brown--light"; + case "orange" /* ORANGE */: + return isDarkMode ? "NLT__orange--dark" : "NLT__orange--light"; + case "yellow" /* YELLOW */: + return isDarkMode ? "NLT__yellow--dark" : "NLT__yellow--light"; + case "green" /* GREEN */: + return isDarkMode ? "NLT__green--dark" : "NLT__green--light"; + case "blue" /* BLUE */: + return isDarkMode ? "NLT__blue--dark" : "NLT__blue--light"; + case "purple" /* PURPLE */: + return isDarkMode ? "NLT__purple--dark" : "NLT__purple--light"; + case "pink" /* PINK */: + return isDarkMode ? "NLT__pink--dark" : "NLT__pink--light"; + case "red" /* RED */: + return isDarkMode ? "NLT__red--dark" : "NLT__red--light"; + default: + return ""; + } +}; +var randomColor = () => { + const index = Math.floor(Math.random() * Object.values(Color).length); + return Object.values(Color)[index]; +}; + +// src/react/shared/tag/index.tsx +function Tag6({ + id: id2, + color, + maxWidth, + markdown, + showRemove, + onRemoveClick +}) { + const { isDarkMode } = useAppSelector((state) => state.global); + let tagClass = "NLT__tag"; + tagClass += " " + findColorClassName(isDarkMode, color); + if (onRemoveClick !== void 0 && id2 === void 0) { + throw new Error( + "An id must defined when the onRemoveClick handler is present." + ); + } + let contentClassName = "NLT__tag-content"; + if (maxWidth !== void 0) { + contentClassName += " NLT__hide-overflow-ellipsis"; + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: tagClass, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "sm", + justify: "center", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", __spreadProps(__spreadValues({ + className: contentClassName + }, maxWidth !== void 0 && { style: { maxWidth } }), { + children: markdown + })), + showRemove && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + width: "max-content", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { + isSmall: true, + icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId: "x" + }), + onClick: () => { + onRemoveClick !== void 0 && onRemoveClick(id2); + } + }) + }) + ] + }) + }); +} + +// src/react/table-app/tag-cell/index.tsx +function TagCell({ + markdown, + color, + shouldWrapOverflow +}) { + const overflowStyle = useOverflow(shouldWrapOverflow); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__tag-cell", + css: overflowStyle, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Tag6, { + markdown, + color + }) + }); +} + +// src/react/table-app/checkbox-cell/index.tsx +function CheckboxCell({ value }) { + const isChecked = isCheckboxChecked(value); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__checkbox-cell", + css: import_emotion_react_cjs.css` + width: 100%; + padding: var(--nlt-cell-spacing); + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { + className: "task-list-item-checkbox", + css: import_emotion_react_cjs.css` + cursor: pointer; + `, + type: "checkbox", + checked: isChecked, + onChange: () => { + } + }) + }); +} + +// src/shared/cell-content/date-cell-content.ts +var getDateCellContent = (dateTime, format) => { + if (dateTime !== null) + return unixTimeToDateString(dateTime, format); + return ""; +}; + +// src/react/table-app/date-cell/index.tsx +function DateCell({ value, format }) { + const content = getDateCellContent(value, format); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__date-cell", + css: import_emotion_react_cjs.css` + width: 100%; + text-align: left; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding: var(--nlt-cell-spacing); + `, + children: content + }); +} + +// src/react/table-app/number-cell/index.tsx +function NumberCell({ value, shouldWrapOverflow }) { + const overflowStyle = useOverflow(shouldWrapOverflow); + let valueString = ""; + if (isNumber(value)) + valueString = value; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__number-cell", + css: overflowStyle, + children: valueString + }); +} + +// src/react/table-app/number-cell-edit/index.tsx +var import_react57 = __toESM(require_react()); +function NumberCellEdit({ + menuCloseRequest, + value, + onChange, + onMenuClose +}) { + const initialValue = isNumber(value) ? value : ""; + const [localValue, setLocalValue] = import_react57.default.useState(initialValue); + const inputRef = import_react57.default.useRef(null); + useInputSelection(inputRef, localValue); + const hasCloseRequestTimeChanged = useCompare( + menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime + ); + import_react57.default.useEffect(() => { + if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { + if (localValue !== value) + onChange(localValue); + onMenuClose(); + } + }, [ + value, + localValue, + hasCloseRequestTimeChanged, + menuCloseRequest, + onMenuClose, + onChange + ]); + function handleChange(inputValue) { + if (!isValidNumberInput(inputValue)) + return; + setLocalValue(inputValue); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__number-cell-edit", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { + autoFocus: true, + css: numberInputStyle, + type: "text", + ref: inputRef, + inputMode: "numeric", + value: localValue, + onChange: (e) => handleChange(e.target.value), + onBlur: (e) => { + e.target.classList.add("NLT__blur--cell"); + } + }) + }); +} + +// src/react/table-app/text-cell-edit/index.tsx +var import_react63 = __toESM(require_react()); + +// src/react/shared/suggest-menu/suggest-menu.tsx +var import_react62 = __toESM(require_react()); + +// src/react/shared/suggest-menu/suggest-menu-content.tsx +var import_react60 = __toESM(require_react()); +var import_fuzzysort = __toESM(require_fuzzysort()); + +// src/react/shared/suggest-menu/suggest-item.tsx +var import_react58 = __toESM(require_react()); + +// src/shared/event-system/event-system.ts +var EventSystem = class { + constructor() { + __publicField(this, "eventListeners"); + this.eventListeners = []; + } + addEventListener(name, callback, priority = 0) { + this.eventListeners.push({ + name, + callback, + priority + }); + this.eventListeners.sort((a2, b2) => b2.priority - a2.priority); + } + removeEventListener(name, callback) { + this.eventListeners = this.eventListeners.filter( + (l2) => l2.name !== name || l2.callback !== callback + ); + } + dispatchEvent(name, event, ...data) { + const listeners = this.eventListeners.filter((l2) => l2.name === name); + listeners.forEach((listener2) => { + listener2.callback(event, data); + }); + } +}; +var nltEventSystem = new EventSystem(); + +// src/react/shared/suggest-menu/suggest-item.tsx +var SuggestItem = import_react58.default.forwardRef( + function SuggestItem2({ file, isHighlighted, isFileNameUnique, onItemClick }, ref) { + const handleClick = import_react58.default.useCallback( + (e) => { + e.stopPropagation(); + onItemClick(file, isFileNameUnique); + }, + [file, isFileNameUnique, onItemClick] + ); + import_react58.default.useEffect(() => { + function handleKeyDown(e) { + if (e.key === "Enter") + onItemClick(file, isFileNameUnique); + } + if (isHighlighted) + nltEventSystem.addEventListener("keydown", handleKeyDown, 1); + return () => nltEventSystem.removeEventListener("keydown", handleKeyDown); + }, [isHighlighted, onItemClick, file, isFileNameUnique]); + let name = "No match found"; + if (file) { + if (file.extension === "md") { + name = file.basename; + } else { + name = file.name; + } + } + let path = null; + if (file) { + if (file.parent && file.parent.path !== "/") { + path = file.parent.path + "/"; + } + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + tabIndex: 0, + className: "NLT__suggest-item NLT__focusable", + ref, + css: import_emotion_react_cjs.css` + padding: 4px 6px; + margin: 2px 0; + background-color: ${isHighlighted ? "var(--background-modifier-hover)" : "var(--background-primary)"}; + &:hover { + background-color: var(--background-modifier-hover); + } + `, + onClick: handleClick, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + variant: "semibold", + size: "xs", + value: name, + maxWidth: "275px" + }), + path && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + value: path, + size: "xs" + }) + ] + }); + } +); +var suggest_item_default = SuggestItem; + +// src/react/shared/suggest-menu/constants.ts +var DOUBLE_BRACKET_REGEX = new RegExp(/\[\[(.*?)]]/g); + +// src/react/shared/suggest-menu/utils.ts +var isSurroundedByDoubleBrackets = (inputValue, selectionStart) => { + let match; + const regex = structuredClone(DOUBLE_BRACKET_REGEX); + while ((match = regex.exec(inputValue)) !== null) { + const innerText = match[1]; + const startIndex = match.index + 2; + const endIndex = startIndex + innerText.length - 1; + const index = selectionStart - 1; + if (innerText === "" && index === startIndex - 1) + return true; + if (index >= startIndex && index <= endIndex) + return true; + } + return false; +}; +var doubleBracketsInnerReplace = (inputValue, selectionStart, replacement) => { + let match; + const regex = structuredClone(DOUBLE_BRACKET_REGEX); + while ((match = regex.exec(inputValue)) !== null) { + const innerText = match[1]; + const startIndex = match.index + 2; + const endIndex = startIndex + innerText.length - 1; + const index = selectionStart - 1; + if (innerText === "" && index === startIndex - 1) { + return inputValue.slice(0, startIndex) + replacement + inputValue.slice(endIndex + 1); + } + if (index >= startIndex && index <= endIndex) { + return inputValue.slice(0, startIndex) + replacement + inputValue.slice(endIndex + 1); + } + } + return inputValue; +}; +var getFilterValue = (inputValue, selectionStart) => { + let match; + const regex = structuredClone(DOUBLE_BRACKET_REGEX); + while ((match = regex.exec(inputValue)) !== null) { + const innerText = match[1]; + const startIndex = match.index + 2; + const endIndex = startIndex + innerText.length - 1; + const index = selectionStart - 1; + if (innerText === "" && index === startIndex - 1) { + return innerText; + } + if (index >= startIndex && index <= endIndex) { + return innerText; + } + } + return null; +}; +var addClosingBracket = (value, selectionStart) => { + const char = value[selectionStart - 1]; + if (char === "[") + value = value + "]"; + return value; +}; +var removeClosingBracket = (previousValue, value, selectionStart) => { + const previousChar = previousValue[selectionStart]; + const nextChar = value[selectionStart]; + if (previousChar === "[" && nextChar === "]") { + const updatedValue = value.slice(0, selectionStart) + value.slice(selectionStart + 1); + value = updatedValue; + } + return value; +}; +var filterUniqueStrings = (arr) => { + const frequencyMap = /* @__PURE__ */ new Map(); + arr.forEach((string) => { + frequencyMap.set(string, (frequencyMap.get(string) || 0) + 1); + }); + const uniqueStrings = []; + for (const string of frequencyMap.keys()) { + if (frequencyMap.get(string) === 1) { + uniqueStrings.push(string); + } + } + return uniqueStrings; +}; + +// src/obsidian-shim/build/vault-file.ts +var getVaultFiles = () => { + return app.vault.getFiles(); +}; + +// src/react/shared/suggest-menu/suggest-menu-content.tsx +function SuggestMenuContent({ + showInput, + filterValue, + onItemClick +}) { + const logger = useLogger(); + const [localFilterValue, setLocalFilterValue] = import_react60.default.useState( + filterValue != null ? filterValue : "" + ); + const highlightItemRef = import_react60.default.useRef(null); + const [highlightIndex, setHighlightIndex] = import_react60.default.useState(-1); + const files = getVaultFiles(); + let filteredFiles = []; + if (localFilterValue !== "") { + const results = import_fuzzysort.default.go(localFilterValue, files, { + key: "path", + limit: 20 + }); + filteredFiles = results.map((result) => result.obj); + } else { + filteredFiles = files; + filteredFiles.sort((a2, b2) => b2.modifiedTime - a2.modifiedTime); + filteredFiles = filteredFiles.slice(0, 20); + } + import_react60.default.useEffect(() => { + setLocalFilterValue(filterValue != null ? filterValue : ""); + }, [filterValue]); + import_react60.default.useEffect(() => { + if (highlightItemRef.current) { + highlightItemRef.current.scrollIntoView({ + behavior: "auto", + block: "nearest" + }); + } + }, [highlightIndex]); + import_react60.default.useEffect(() => { + function handleKeyDown(e) { + logger("SuggestMenuContent handleKeyDown"); + if (e.key === "ArrowUp") { + e.preventDefault(); + setHighlightIndex((prevIndex) => { + let index = prevIndex - 1; + if (index < 0) + index = filteredFiles.length - 1; + return index; + }); + } else if (e.key === "ArrowDown") { + e.preventDefault(); + setHighlightIndex((prevIndex) => { + let index = prevIndex + 1; + if (index > filteredFiles.length - 1) + index = 0; + return index; + }); + } else if (e.key === "Tab") { + setHighlightIndex((prevIndex) => { + let index = prevIndex + 1; + if (index > filteredFiles.length - 1) + index = 0; + return index; + }); + } + } + nltEventSystem.addEventListener("keydown", handleKeyDown); + return () => nltEventSystem.removeEventListener("keydown", handleKeyDown); + }, [filteredFiles.length, logger, highlightIndex]); + const fileNames = filteredFiles.map((file) => file.name); + const uniqueFileNames = filterUniqueStrings(fileNames); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + className: "NLT__suggest-menu", + children: [ + showInput && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: import_emotion_react_cjs.css` + background-color: var(--background-secondary); + border-bottom: 1px solid var(--table-border-color); + padding: 4px 10px; + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { + css: transparentInputStyle, + autoFocus: true, + value: localFilterValue, + onChange: (e) => setLocalFilterValue(e.target.value) + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + css: import_emotion_react_cjs.css` + max-height: 175px; + overflow-y: auto; + `, + children: [ + filteredFiles.length === 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(suggest_item_default, { + file: null, + ref: null, + isHighlighted: true, + isFileNameUnique: false, + onItemClick + }), + filteredFiles.length > 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: filteredFiles.map((file, index) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(suggest_item_default, { + ref: highlightIndex === index ? highlightItemRef : null, + file, + isHighlighted: index === highlightIndex, + isFileNameUnique: uniqueFileNames.includes( + file.name + ), + onItemClick + }, file.path)) + }) + ] + }) + ] + }); +} + +// src/react/shared/suggest-menu/suggest-menu.tsx +var SuggestMenu = import_react62.default.forwardRef( + function SuggestMenu2({ id: id2, isOpen, top, left, filterValue, onItemClick }, ref) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { + id: id2, + isOpen, + top, + left, + ref, + width: 275, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SuggestMenuContent, { + filterValue, + onItemClick + }) + }); + } +); +var suggest_menu_default = SuggestMenu; + +// src/shared/link/link-utils.ts +var getBasename = (filePath) => { + const fileName = stripDirectory(filePath); + return stripFileExtension(fileName); +}; +var stripFileExtension = (filePath) => { + return filePath.substring(0, filePath.lastIndexOf(".")); +}; +var stripDirectory = (filePath) => { + return filePath.substring(filePath.lastIndexOf("/") + 1); +}; +var isMarkdownFile = (extension) => { + return extension === "md"; +}; +var getWikiLinkText = (fileInfo, isFileNameUnique) => { + const { basename, name, path, extension } = fileInfo; + let text = basename; + if (!isMarkdownFile(extension)) { + text = name; + if (!isFileNameUnique) + text = `${path}|${basename}`; + } else { + const pathWithoutExtension = stripFileExtension(path); + if (!isFileNameUnique) + text = `${pathWithoutExtension}|${basename}`; + } + return text; +}; + +// src/react/table-app/text-cell-edit/index.tsx +function TextCellEdit({ + shouldWrapOverflow, + menuCloseRequest, + value, + onChange, + onMenuClose +}) { + var _a, _b, _c; + const { menu, isMenuOpen, menuRef, openMenu, closeAllMenus, closeTopMenu } = useMenu(1 /* TWO */); + const { triggerRef, triggerPosition } = useMenuTriggerPosition(); + useShiftMenu(triggerRef, menuRef, isMenuOpen, { + topOffset: 35 + }); + const [localValue, setLocalValue] = import_react63.default.useState(value); + const inputRef = import_react63.default.useRef(null); + import_react63.default.useEffect(() => { + if (inputRef.current) { + const selectionIndex = inputRef.current.selectionStart; + if (localValue[selectionIndex - 1] === "]" && localValue[selectionIndex - 2] === "[") { + inputRef.current.selectionStart = selectionIndex - 1; + inputRef.current.selectionEnd = selectionIndex - 1; + } else if (localValue[selectionIndex - 1] === "]" && localValue[selectionIndex - 2] === "]" && localValue[selectionIndex - 3] === "[") { + inputRef.current.selectionStart = selectionIndex - 2; + inputRef.current.selectionEnd = selectionIndex - 2; + } + } + }, [inputRef, localValue]); + useInputSelection(inputRef, localValue); + const logger = useLogger(); + const hasCloseRequestTimeChanged = useCompare( + menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime + ); + import_react63.default.useEffect(() => { + if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { + if (localValue !== value) + onChange(localValue); + onMenuClose(); + } + }, [ + value, + localValue, + hasCloseRequestTimeChanged, + menuCloseRequest, + onMenuClose, + onChange + ]); + function handleKeyDown(e) { + const el = e.target; + logger("TextCellEdit handleKeyDown"); + if (e.key === "ArrowLeft" || e.key === "ArrowRight") { + const cursorPosition = el.selectionStart; + if (isMenuOpen) { + if (!isSurroundedByDoubleBrackets(value, cursorPosition)) + closeTopMenu(); + } + if (inputRef.current) { + const inputEl = inputRef.current; + inputEl.selectionStart = cursorPosition; + inputEl.selectionEnd = cursorPosition; + } + } else if (e.key === "Enter") { + if (e.shiftKey && !isMenuOpen) { + e.stopPropagation(); + return; + } + e.preventDefault(); + } + } + function handleTextareaChange(e) { + const inputValue = e.target.value; + let newValue = inputValue; + if (inputRef.current) { + const inputEl = inputRef.current; + if (inputValue.length > localValue.length) { + newValue = addClosingBracket(newValue, inputEl.selectionStart); + } else { + newValue = removeClosingBracket( + localValue, + inputValue, + inputEl.selectionStart + ); + } + if (isSurroundedByDoubleBrackets(newValue, inputEl.selectionStart)) { + if (!isMenuOpen) + openMenu(menu); + } + } + setLocalValue(newValue); + } + function handleSuggestItemClick(file, isFileNameUnique) { + var _a2, _b2; + if (file) { + const fileName = getWikiLinkText(file, isFileNameUnique); + const newValue = doubleBracketsInnerReplace( + localValue, + (_b2 = (_a2 = inputRef.current) == null ? void 0 : _a2.selectionStart) != null ? _b2 : 0, + fileName + ); + onChange(newValue); + } + closeAllMenus(); + } + const overflowStyle = useOverflow(shouldWrapOverflow); + const filterValue = (_c = getFilterValue(localValue, (_b = (_a = inputRef.current) == null ? void 0 : _a.selectionStart) != null ? _b : 0)) != null ? _c : ""; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__text-cell-edit", + ref: triggerRef, + css: import_emotion_react_cjs.css` + width: 100%; + height: 100%; + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("textarea", { + autoFocus: true, + css: import_emotion_react_cjs.css` + ${textAreaStyle} + ${overflowStyle} + `, + ref: inputRef, + value: localValue, + onKeyDown: handleKeyDown, + onChange: handleTextareaChange, + onBlur: (e) => { + e.target.classList.add("NLT__blur--cell"); + } + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(suggest_menu_default, { + id: menu.id, + ref: menuRef, + isOpen: isMenuOpen, + top: triggerPosition.top, + left: triggerPosition.left, + filterValue, + onItemClick: handleSuggestItemClick + }) + ] + }); +} + +// src/react/table-app/tag-cell-edit/index.tsx +var import_react72 = __toESM(require_react()); + +// src/react/table-app/tag-cell-edit/menu-header.tsx +var import_react66 = __toESM(require_react()); +function MenuHeader({ + cellTags, + inputValue, + onInputValueChange, + onRemoveTag +}) { + const inputRef = import_react66.default.useRef(null); + function handleInputChange(value) { + if (value.match(/^\s/)) + return; + onInputValueChange(value); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: import_emotion_react_cjs.css` + background-color: var(--background-secondary); + border-bottom: 1px solid var(--table-border-color); + padding: 4px 10px; + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Wrap, { + spacingX: "sm", + children: [ + cellTags.map((tag) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Tag6, { + id: tag.id, + color: tag.color, + markdown: tag.markdown, + maxWidth: "150px", + showRemove: true, + onRemoveClick: onRemoveTag + }, tag.id)), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { + className: "NLT__focusable", + css: transparentInputStyle, + autoFocus: true, + ref: inputRef, + type: "text", + value: inputValue, + onChange: (e) => handleInputChange(e.target.value) + }) + ] + }) + }); +} + +// src/react/table-app/tag-cell-edit/create-tag.tsx +function CreateTag({ markdown, color, onTagAdd }) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + tabIndex: 0, + css: import_emotion_react_cjs.css` + display: flex; + align-items: center; + padding: 4px 6px; + width: 100%; + overflow: hidden; + `, + className: "NLT__focusable NLT__selectable", + onClick: () => { + onTagAdd(markdown, color); + }, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "sm", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + children: "Create" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Tag6, { + markdown, + color, + maxWidth: "120px" + }) + ] + }) + }); +} + +// src/react/table-app/tag-color-menu/index.tsx +var import_react69 = __toESM(require_react()); + +// src/shared/stringUtils.ts +var uppercaseFirst = (input) => { + return input.charAt(0).toUpperCase() + input.slice(1); +}; + +// src/react/table-app/tag-color-menu/components/color-item/index.tsx +var import_react68 = __toESM(require_react()); +function ColorItem({ + isDarkMode, + color, + isSelected, + onColorClick +}) { + const ref = import_react68.default.useRef(null); + import_react68.default.useEffect(() => { + if (!ref.current) + return; + if (isSelected) { + ref.current.focus(); + } + }, [isSelected]); + function handleKeyDown(e) { + if (e.key === "Enter") { + e.stopPropagation(); + onColorClick(color); + } + } + let containerClass = "NLT__color-item NLT__focusable NLT__selectable"; + if (isSelected) + containerClass += " NLT__selected"; + const colorClass = findColorClassName(isDarkMode, color); + let squareClass = "NLT__color-item-square"; + squareClass += " " + colorClass; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + ref, + tabIndex: 0, + className: containerClass, + onKeyDown: handleKeyDown, + onClick: () => { + onColorClick(color); + }, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: squareClass + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + children: uppercaseFirst(color) + }) + ] + }); +} + +// src/react/table-app/tag-color-menu/index.tsx +var TagColorMenu = import_react69.default.forwardRef( + function TagColorMenu2({ + menuId, + isOpen, + top, + left, + selectedColor, + onColorClick, + onDeleteClick + }, ref) { + const { isDarkMode } = useAppSelector((state) => state.global); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { + ref, + id: menuId, + isOpen, + top, + left, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__tag-color-menu", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "sm", + isVertical: true, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + px: "lg", + py: "sm", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + value: "Color" + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + children: Object.values(Color).map((color) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ColorItem, { + isDarkMode, + color, + onColorClick, + isSelected: selectedColor === color + }, color)) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + lucideId: "trash-2", + name: "Delete", + onClick: onDeleteClick + }) + ] + }) + }) + }); + } +); +var tag_color_menu_default = TagColorMenu; + +// src/react/table-app/tag-cell-edit/selectable-tag.tsx +function SelectableTag({ + id: id2, + markdown, + color, + onClick, + onColorChange, + onDeleteClick +}) { + const { menu, isMenuOpen, menuRef, closeTopMenu } = useMenu(1 /* TWO */); + const { triggerRef, triggerPosition } = useMenuTriggerPosition(); + useShiftMenu(triggerRef, menuRef, isMenuOpen, { + openDirection: "right", + leftOffset: -55, + topOffset: -100 + }); + function handleColorChange(color2) { + onColorChange(id2, color2); + closeTopMenu(); + } + function handleDeleteClick() { + onDeleteClick(id2); + closeTopMenu(); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + tabIndex: 0, + ref: triggerRef, + css: import_emotion_react_cjs.css` + display: flex; + justify-content: space-between; + align-items: center; + padding: var(--nlt-spacing--sm) var(--nlt-spacing--md); + overflow: hidden; + `, + className: "NLT__focusable NLT__selectable", + onClick: (e) => { + const target = e.target; + if (target.classList.contains("NLT__menu-trigger")) + return; + e.stopPropagation(); + onClick(id2); + }, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Tag6, { + markdown, + color, + maxWidth: "150px" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuButton, { + icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId: "more-horizontal" + }), + menu + }) + ] + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(tag_color_menu_default, { + isOpen: isMenuOpen, + ref: menuRef, + menuId: menu.id, + top: triggerPosition.top, + left: triggerPosition.left, + selectedColor: color, + onColorClick: (color2) => handleColorChange(color2), + onDeleteClick: handleDeleteClick + }) + ] + }); +} + +// src/react/table-app/tag-cell-edit/menu-body.tsx +function MenuBody({ + columnTags, + inputValue, + newTagColor, + onTagAdd, + onTagClick, + onTagColorChange, + onTagDelete +}) { + const tagWithSameCase = columnTags.find( + (tag) => tag.markdown === inputValue + ); + const filteredTags = columnTags.filter( + (tag) => tag.markdown.toLowerCase().includes(inputValue.toLowerCase()) + ); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + css: import_emotion_react_cjs.css` + max-height: 140px; + overflow-y: scroll; + `, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + px: "lg", + py: "md", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + value: "Select an option or create one" + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + css: import_emotion_react_cjs.css` + width: 100%; + `, + children: [ + tagWithSameCase === void 0 && inputValue !== "" && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CreateTag, { + markdown: inputValue, + color: newTagColor, + onTagAdd + }), + filteredTags.map((tag) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SelectableTag, { + id: tag.id, + color: tag.color, + markdown: tag.markdown, + onColorChange: onTagColorChange, + onClick: onTagClick, + onDeleteClick: onTagDelete + }, tag.id)) + ] + }) + ] + }); +} + +// src/react/table-app/tag-cell-edit/index.tsx +function TagCellEdit({ + columnTags, + cellTags, + menuCloseRequest, + onTagClick, + onTagAdd, + onTagColorChange, + onTagDelete, + onRemoveTag, + onMenuClose +}) { + const [inputValue, setInputValue] = import_react72.default.useState(""); + const [newTagColor, setNewTagColor] = import_react72.default.useState(randomColor()); + const handleTagAdd = import_react72.default.useCallback( + (markdown, color) => { + onTagAdd(markdown, color); + setInputValue(""); + setNewTagColor(randomColor()); + onMenuClose(); + }, + [onTagAdd, onMenuClose] + ); + const hasCloseRequestTimeChanged = useCompare( + menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime + ); + import_react72.default.useEffect(() => { + if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { + if (menuCloseRequest.type === "enter") { + const shouldAddTag = columnTags.find((tag) => tag.markdown === inputValue) === void 0; + if (shouldAddTag) + handleTagAdd(inputValue, newTagColor); + } + onMenuClose(); + } + }, [ + handleTagAdd, + columnTags, + inputValue, + newTagColor, + hasCloseRequestTimeChanged, + menuCloseRequest, + onMenuClose + ]); + function handleTagClick(id2) { + onTagClick(id2); + onMenuClose(); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + className: "NLT__tag-cell-edit", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuHeader, { + inputValue, + cellTags, + onInputValueChange: setInputValue, + onRemoveTag + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuBody, { + inputValue, + columnTags, + newTagColor, + onTagAdd: handleTagAdd, + onTagClick: handleTagClick, + onTagDelete, + onTagColorChange + }) + ] + }); +} + +// src/react/table-app/date-cell-edit/index.tsx +var import_react74 = __toESM(require_react()); + +// src/react/table-app/date-cell-edit/date-format-menu.tsx +var import_react73 = __toESM(require_react()); +var DateFormatMenu = import_react73.default.forwardRef( + function DateFormatMenu2({ id: id2, top, left, isOpen, value, onChange }, ref) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { + ref, + isOpen, + id: id2, + top, + left, + width: 175, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__date-format-menu", + children: Object.values([ + "dd/mm/yyyy" /* DD_MM_YYYY */, + "mm/dd/yyyy" /* MM_DD_YYYY */, + "yyyy/mm/dd" /* YYYY_MM_DD */ + ]).map((format) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: getDisplayNameForDateFormat(format), + isSelected: value === format, + onClick: () => { + onChange(format); + } + }, format)) + }) + }); + } +); +var date_format_menu_default = DateFormatMenu; + +// src/react/table-app/date-cell-edit/index.tsx +function DateCellEdit({ + value, + menuCloseRequest, + dateFormat, + onDateTimeChange, + onMenuClose, + onDateFormatChange +}) { + const { menu, isMenuOpen, menuRef, closeTopMenu } = useMenu(1 /* TWO */); + const { triggerRef, triggerPosition } = useMenuTriggerPosition(); + useShiftMenu(triggerRef, menuRef, isMenuOpen, { + openDirection: "right", + topOffset: 35, + leftOffset: -50 + }); + const [localValue, setLocalValue] = import_react74.default.useState( + value === null ? "" : unixTimeToDateString(value, dateFormat) + ); + const [isInputInvalid, setInputInvalid] = import_react74.default.useState(false); + const [closeTime, setCloseTime] = import_react74.default.useState(0); + const inputRef = import_react74.default.useRef(null); + import_react74.default.useEffect(() => { + setLocalValue( + value === null ? "" : unixTimeToDateString(value, dateFormat) + ); + }, [value, dateFormat]); + const hasCloseRequestTimeChanged = useCompare( + menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime + ); + import_react74.default.useEffect(() => { + function validateInput() { + let newValue = null; + if (localValue !== "") { + if (isValidDateFormat(localValue, dateFormat)) { + newValue = dateStringToUnixTime(localValue, dateFormat); + } else { + if ((menuCloseRequest == null ? void 0 : menuCloseRequest.type) === "enter") { + setInputInvalid(true); + return; + } + newValue = value; + } + } + if (newValue !== value) { + setInputInvalid(false); + onDateTimeChange(newValue); + } + setCloseTime(Date.now()); + } + if (hasCloseRequestTimeChanged && menuCloseRequest !== null) + validateInput(); + }, [ + value, + hasCloseRequestTimeChanged, + localValue, + menuCloseRequest, + dateFormat, + onDateTimeChange, + onMenuClose + ]); + import_react74.default.useEffect(() => { + if (closeTime !== 0) { + onMenuClose(); + } + }, [closeTime, onMenuClose]); + function handleDateFormatChange(value2) { + onDateFormatChange(value2); + closeTopMenu(); + } + function handleClearClick() { + onDateTimeChange(null); + onMenuClose(); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + ref: triggerRef, + className: "NLT__date-cell-edit", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "md", + isVertical: true, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + px: "md", + py: "md", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { + tabIndex: 0, + className: "NLT__focusable", + css: import_emotion_react_cjs.css` + ${borderInputStyle} + ${isInputInvalid ? "&:focus-visible { outline: 2px solid var(--background-modifier-error) !important; }" : ""} + `, + ref: inputRef, + autoFocus: true, + value: localValue, + onChange: (e) => setLocalValue(e.target.value) + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_trigger_default, { + menu, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + isFocusable: false, + name: "Date format", + value: getDisplayNameForDateFormat(dateFormat) + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: "Clear", + onClick: handleClearClick + }) + ] + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(date_format_menu_default, { + id: menu.id, + isOpen: isMenuOpen, + ref: menuRef, + top: triggerPosition.top, + left: triggerPosition.left, + value: dateFormat, + onChange: handleDateFormatChange + }) + ] + }); +} + +// src/react/table-app/multi-tag-cell/index.tsx +function MultiTagCell({ cellTags, shouldWrapOverflow }) { + const overflowStyle = useOverflow(shouldWrapOverflow); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__multi-tag-cell", + css: overflowStyle, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Wrap, { + children: cellTags.map((tag) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Tag6, { + markdown: tag.markdown, + color: tag.color + }, tag.id)) + }) + }); +} + +// src/react/table-app/last-edited-time-cell/index.tsx +function LastEditedTimeCell({ + value, + format, + shouldWrapOverflow +}) { + const overflowStyle = useOverflow(shouldWrapOverflow); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__last-edited-time-cell", + css: overflowStyle, + children: unixTimeToDateTimeString(value, format) + }); +} + +// src/react/table-app/creation-time-cell/index.tsx +function CreationTimeCell({ + value, + format, + shouldWrapOverflow +}) { + const overflowStyle = useOverflow(shouldWrapOverflow); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__creation-time-cell", + css: overflowStyle, + children: unixTimeToDateTimeString(value, format) + }); +} + +// src/react/table-app/currency-cell/index.tsx +function CurrencyCell({ + value, + currencyType, + shouldWrapOverflow +}) { + const content = getCurrencyCellContent(value, currencyType); + const overflowStyle = useOverflow(shouldWrapOverflow); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__currency-cell", + css: overflowStyle, + children: content + }); +} + +// src/react/table-app/currency-cell-edit/index.tsx +var import_react76 = __toESM(require_react()); +function CurrencyCellEdit({ + value, + menuCloseRequest, + onChange, + onMenuClose +}) { + const initialValue = isNumber(value) ? value : ""; + const [localValue, setLocalValue] = import_react76.default.useState(initialValue); + const inputRef = import_react76.default.useRef(null); + useInputSelection(inputRef, localValue); + const hasCloseRequestTimeChanged = useCompare( + menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime + ); + import_react76.default.useEffect(() => { + if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { + if (localValue !== value) + onChange(localValue); + onMenuClose(); + } + }, [ + value, + localValue, + hasCloseRequestTimeChanged, + menuCloseRequest, + onMenuClose, + onChange + ]); + function handleChange(inputValue) { + if (!isValidNumberInput(inputValue)) + return; + setLocalValue(inputValue); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__currency-cell-edit", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { + autoFocus: true, + css: numberInputStyle, + ref: inputRef, + type: "text", + inputMode: "numeric", + value: localValue, + onChange: (e) => handleChange(e.target.value), + onBlur: (e) => { + e.target.classList.add("NLT__blur--cell"); + } + }) + }); +} + +// src/shared/cell-content/file-cell-content.ts +var getFileCellContent = (markdown) => { + if (markdown === "") + return markdown; + const linkRegex = new RegExp(/\[\[([^[\]]+)\]\]/); + const matches = markdown.match(linkRegex); + let matchStartIndex = -1; + let matchEndIndex = -1; + if (matches) { + matchStartIndex = markdown.indexOf(matches[0]); + matchEndIndex = matchStartIndex + matches[0].length; + } + if (matches === null) { + return `[[${markdown}]]`; + } else if (matchStartIndex === 0) { + return `${markdown.slice(0, matchEndIndex + 1).trim()}`; + } else { + return `[[${markdown.slice(0, matchStartIndex).trim()}]]`; + } +}; + +// src/react/table-app/file-cell/index.tsx +function FileCell({ markdown, shouldWrapOverflow }) { + const content = getFileCellContent(markdown); + const { containerRef, renderRef } = useRenderMarkdown(content, false); + const overflowStyle = useOverflow(shouldWrapOverflow); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__file-cell", + css: overflowStyle, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: import_emotion_react_cjs.css` + p { + margin: 0; + text-align: left; + } + `, + ref: (node) => { + containerRef.current = node; + appendOrReplaceFirstChild(node, renderRef.current); + } + }) + }); +} + +// src/react/table-app/file-cell-edit/index.tsx +function FileCellEdit({ onChange, onMenuClose }) { + function handleSuggestItemClick(file, isFileNameUnique) { + if (file) { + let fileName = file.basename; + if (file.extension !== "md") + fileName = file.name; + if (!isFileNameUnique) + fileName = `${file.path}|${fileName}`; + onChange(`[[${fileName}]]`); + } + onMenuClose(); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__file-cell-edit", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(SuggestMenuContent, { + showInput: true, + onItemClick: handleSuggestItemClick + }) + }); +} + +// src/shared/cell-content/embed-cell-content.ts +var getEmbedCellContent = (markdown, renderMarkdown2) => { + if (isURL(markdown)) { + if (renderMarkdown2) + return `![](${markdown})`; + return markdown; + } + return ""; +}; + +// src/react/table-app/embed-cell/index.tsx +var EmbeddedLink = ({ + markdown, + aspectRatio, + horizontalPadding, + verticalPadding +}) => { + const { containerRef, renderRef } = useRenderMarkdown(markdown, true); + const paddingX = getSpacing(horizontalPadding); + const paddingY = getSpacing(verticalPadding); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: import_emotion_react_cjs.css` + width: 100%; + aspect-ratio: ${aspectRatio}; + padding-left: ${paddingX}; + padding-right: ${paddingX}; + padding-top: ${paddingY}; + padding-bottom: ${paddingY}; + + iframe { + width: 100%; + height: 100%; + } + + p { + width: 100%; + height: 100%; + margin: 0px; + } + `, + ref: (node) => { + containerRef.current = node; + appendOrReplaceFirstChild(node, renderRef.current); + } + }); +}; +function EmbedCell({ + markdown, + aspectRatio, + horizontalPadding, + verticalPadding +}) { + let isValidURL = true; + const content = getEmbedCellContent(markdown, true); + if (content === "") + isValidURL = false; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + className: "NLT__embed-cell", + css: import_emotion_react_cjs.css` + width: 100%; + height: 100%; + `, + children: [ + isValidURL && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(EmbeddedLink, { + markdown: content, + aspectRatio, + horizontalPadding, + verticalPadding + }), + !isValidURL && markdown !== "" && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + value: "Invalid URL" + }) + ] + }); +} + +// src/react/table-app/embed-cell-edit/index.tsx +var import_react79 = __toESM(require_react()); +function EmbedCellEdit({ + shouldWrapOverflow, + menuCloseRequest, + value, + onChange, + onMenuClose +}) { + const [localValue, setLocalValue] = import_react79.default.useState(value); + const inputRef = import_react79.default.useRef(null); + useInputSelection(inputRef, localValue); + const hasCloseRequestTimeChanged = useCompare( + menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime + ); + import_react79.default.useEffect(() => { + if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { + if (localValue !== value) + onChange(localValue); + onMenuClose(); + } + }, [ + value, + localValue, + hasCloseRequestTimeChanged, + menuCloseRequest, + onMenuClose, + onChange + ]); + function handleTextareaChange(e) { + const inputValue = e.target.value; + setLocalValue(inputValue); + } + const overflowStyle = useOverflow(shouldWrapOverflow); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__embed-cell-edit", + css: import_emotion_react_cjs.css` + width: 100%; + height: 100%; + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("textarea", { + autoFocus: true, + css: import_emotion_react_cjs.css` + ${textAreaStyle} + ${overflowStyle} + `, + ref: inputRef, + value: localValue, + onChange: handleTextareaChange, + onBlur: (e) => { + e.target.classList.add("NLT__blur--cell"); + } + }) + }); +} + +// src/obsidian-shim/build/notification.ts +var import_obsidian6 = require("obsidian"); +var Notification = class { + constructor(message) { + new import_obsidian6.Notice(message); + } +}; + +// src/react/table-app/body-cell/index.tsx +function BodyCell5({ + cellId, + columnId, + rowId, + markdown, + aspectRatio, + verticalPadding, + horizontalPadding, + dateFormat, + dateTime, + columnCurrencyType, + columnType, + rowCreationTime, + rowLastEditedTime: rowLastEditedTime2, + columnTags, + cellTagIds, + width, + shouldWrapOverflow, + onTagRemoveClick, + onTagMultipleRemove, + onTagColorChange, + onTagDelete, + onTagClick, + onContentChange, + onDateFormatChange, + onDateTimeChange, + onTagAdd +}) { + const shouldRequestOnClose = columnType === "text" /* TEXT */ || columnType === "embed" /* EMBED */ || columnType === "number" /* NUMBER */ || columnType === "currency" /* CURRENCY */ || columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */ || columnType === "date" /* DATE */; + const { menu, isMenuOpen, menuCloseRequest, menuRef, closeTopMenu } = useMenu(0 /* ONE */, { + shouldRequestOnClose + }); + const { triggerPosition, triggerRef } = useMenuTriggerPosition(); + useShiftMenu(triggerRef, menuRef, isMenuOpen); + function handleCellContextClick() { return __async(this, null, function* () { - const rootEl = this.el.createEl("div"); - this.root = (0, import_client.createRoot)(rootEl); + try { + yield navigator.clipboard.writeText(markdown); + new Notification("Copied text to clipboard"); + } catch (err) { + console.log(err); + } + }); + } + function toggleCheckbox() { + const isChecked = isCheckboxChecked(markdown); + if (isChecked) { + handleCheckboxChange(CHECKBOX_MARKDOWN_UNCHECKED); + } else { + handleCheckboxChange(CHECKBOX_MARKDOWN_CHECKED); + } + } + function handleMenuTriggerBackspaceDown() { + if (columnType === "text" /* TEXT */ || columnType === "embed" /* EMBED */ || columnType === "number" /* NUMBER */ || columnType === "currency" /* CURRENCY */ || columnType === "file" /* FILE */) { + onContentChange(cellId, rowId, ""); + } else if (columnType === "date" /* DATE */) { + onDateTimeChange(cellId, rowId, null); + } else if (columnType === "checkbox" /* CHECKBOX */) { + onContentChange(cellId, rowId, CHECKBOX_MARKDOWN_UNCHECKED); + } else if (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */) { + onTagMultipleRemove(cellId, rowId, cellTagIds); + } + } + function handleMenuTriggerEnterDown() { + if (columnType === "checkbox" /* CHECKBOX */) + toggleCheckbox(); + } + function handleMenuTriggerClick() { + if (columnType === "checkbox" /* CHECKBOX */) { + toggleCheckbox(); + } + } + function handleTagAdd(markdown2, color) { + if (markdown2 === "") + return; + onTagAdd( + cellId, + columnId, + rowId, + markdown2.trim(), + color, + columnType === "multi-tag" /* MULTI_TAG */ + ); + } + function handleRemoveTagClick(tagId) { + onTagRemoveClick(cellId, rowId, tagId); + } + function handleTagColorChange(tagId, color) { + onTagColorChange(columnId, tagId, color); + } + function handleTagDeleteClick(tagId) { + onTagDelete(columnId, tagId); + } + function handleTagClick(tagId) { + onTagClick(cellId, rowId, tagId, columnType === "multi-tag" /* MULTI_TAG */); + } + const handleInputChange = import_react81.default.useCallback( + (value) => { + onContentChange(cellId, rowId, value); + }, + [cellId, rowId, onContentChange] + ); + function handleCheckboxChange(value) { + onContentChange(cellId, rowId, value); + } + function handleDateFormatChange(value) { + onDateFormatChange(columnId, value); + } + const handleDateTimeChange = import_react81.default.useCallback( + (value) => { + onDateTimeChange(cellId, rowId, value); + }, + [cellId, rowId, onDateTimeChange] + ); + const handleMenuClose = import_react81.default.useCallback(() => { + closeTopMenu(); + }, [closeTopMenu]); + const { width: measuredWidth, height: measuredHeight } = triggerPosition; + let menuHeight = measuredHeight; + if (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */ || columnType === "date" /* DATE */ || columnType === "number" /* NUMBER */ || columnType === "currency" /* CURRENCY */ || columnType === "file" /* FILE */) { + menuHeight = 0; + } + let menuWidth = measuredWidth; + if (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */) { + menuWidth = 250; + } else if (columnType === "file" /* FILE */) { + menuWidth = 275; + } else if (columnType === "date" /* DATE */) { + menuWidth = 175; + } + let className = "NLT__body-td-container"; + if (columnType === "last-edited-time" /* LAST_EDITED_TIME */ || columnType === "creation-time" /* CREATION_TIME */) { + className += " NLT__default-cursor"; + } + const cellTags = columnTags.filter((tag) => cellTagIds.includes(tag.id)); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_trigger_default, { + isCell: true, + menu, + onClick: handleMenuTriggerClick, + onEnterDown: handleMenuTriggerEnterDown, + onBackspaceDown: handleMenuTriggerBackspaceDown, + shouldRun: columnType !== "checkbox" /* CHECKBOX */ && columnType !== "creation-time" /* CREATION_TIME */ && columnType !== "last-edited-time" /* LAST_EDITED_TIME */, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + ref: triggerRef, + onContextMenu: handleCellContextClick, + css: import_emotion_react_cjs.css` + display: flex; + width: 100%; + height: 100%; + min-height: var(--nlt-cell-min-height); + padding: var(--nlt-cell-spacing-x) + var(--nlt-cell-spacing-y); + cursor: pointer; + `, + className, + style: { + width + }, + children: [ + columnType === "text" /* TEXT */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TextCell, { + markdown, + shouldWrapOverflow + }), + columnType === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(EmbedCell, { + markdown, + verticalPadding, + horizontalPadding, + aspectRatio + }), + columnType === "file" /* FILE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FileCell, { + markdown, + shouldWrapOverflow + }), + columnType === "number" /* NUMBER */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NumberCell, { + value: markdown, + shouldWrapOverflow + }), + columnType === "currency" /* CURRENCY */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CurrencyCell, { + value: markdown, + currencyType: columnCurrencyType, + shouldWrapOverflow + }), + columnType === "tag" /* TAG */ && cellTags.length === 1 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TagCell, { + markdown: cellTags[0].markdown, + color: cellTags[0].color, + shouldWrapOverflow + }), + columnType === "multi-tag" /* MULTI_TAG */ && cellTags.length !== 0 && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MultiTagCell, { + cellTags, + shouldWrapOverflow + }), + columnType === "date" /* DATE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(DateCell, { + value: dateTime, + format: dateFormat + }), + columnType === "checkbox" /* CHECKBOX */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CheckboxCell, { + value: markdown + }), + columnType === "creation-time" /* CREATION_TIME */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CreationTimeCell, { + value: rowCreationTime, + format: dateFormat, + shouldWrapOverflow + }), + columnType === "last-edited-time" /* LAST_EDITED_TIME */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(LastEditedTimeCell, { + value: rowLastEditedTime2, + format: dateFormat, + shouldWrapOverflow + }) + ] + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(menu_default, { + ref: menuRef, + id: menu.id, + hideBorder: columnType === "text" /* TEXT */ || columnType === "embed" /* EMBED */ || columnType === "currency" /* CURRENCY */ || columnType === "number" /* NUMBER */, + isOpen: isMenuOpen, + top: triggerPosition.top, + left: triggerPosition.left, + width: menuWidth, + height: menuHeight, + children: [ + columnType === "text" /* TEXT */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TextCellEdit, { + menuCloseRequest, + shouldWrapOverflow, + value: markdown, + onChange: handleInputChange, + onMenuClose: handleMenuClose + }), + columnType === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(EmbedCellEdit, { + menuCloseRequest, + shouldWrapOverflow, + value: markdown, + onChange: handleInputChange, + onMenuClose: handleMenuClose + }), + columnType === "file" /* FILE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FileCellEdit, { + onChange: handleInputChange, + onMenuClose: handleMenuClose + }), + columnType === "number" /* NUMBER */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NumberCellEdit, { + menuCloseRequest, + value: markdown, + onChange: handleInputChange, + onMenuClose: handleMenuClose + }), + (columnType === "tag" /* TAG */ || columnType === "multi-tag" /* MULTI_TAG */) && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TagCellEdit, { + menuCloseRequest, + columnTags, + cellTags, + onTagColorChange: handleTagColorChange, + onTagAdd: handleTagAdd, + onRemoveTag: handleRemoveTagClick, + onTagClick: handleTagClick, + onTagDelete: handleTagDeleteClick, + onMenuClose: handleMenuClose + }), + columnType === "date" /* DATE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(DateCellEdit, { + value: dateTime, + menuCloseRequest, + dateFormat, + onDateTimeChange: handleDateTimeChange, + onDateFormatChange: handleDateFormatChange, + onMenuClose: handleMenuClose + }), + columnType === "currency" /* CURRENCY */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CurrencyCellEdit, { + menuCloseRequest, + value: markdown, + onChange: handleInputChange, + onMenuClose: handleMenuClose + }) + ] + }) + ] + }); +} + +// src/react/table-app/new-row-button/index.tsx +function NewRowButton({ onClick }) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__new-row", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { + onClick: () => onClick(), + children: "New row" + }) + }); +} + +// src/react/table-app/new-column-button/index.tsx +function NewColumnButton({ onClick }) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__new-column", + css: import_emotion_react_cjs.css` + width: 50px; + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { + icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId: "plus" + }), + ariaLabel: "New column", + onClick: () => onClick() + }) + }); +} + +// src/react/table-app/header-cell/index.tsx +var import_react89 = __toESM(require_react()); + +// src/react/shared/icon/utils.tsx +var getIconIdForCellType = (type) => { + switch (type) { + case "text" /* TEXT */: + return "text"; + case "embed" /* EMBED */: + return "link"; + case "file" /* FILE */: + return "file"; + case "number" /* NUMBER */: + return "hash"; + case "checkbox" /* CHECKBOX */: + return "check-square"; + case "creation-time" /* CREATION_TIME */: + case "last-edited-time" /* LAST_EDITED_TIME */: + return "clock-2"; + case "tag" /* TAG */: + return "tag"; + case "multi-tag" /* MULTI_TAG */: + return "tags"; + case "date" /* DATE */: + return "calendar"; + case "currency" /* CURRENCY */: + return "banknote"; + default: + return "text"; + } +}; + +// src/react/table-app/header-cell/use-column-resize.ts +var import_react84 = __toESM(require_react()); +var useColumnResize = (columnId, onMove) => { + const { setResizingColumnId } = useTableState(); + const mouseDownX = (0, import_react84.useRef)(0); + function handleMouseMove(e) { + const dist = e.pageX - mouseDownX.current; + onMove(dist); + } + function handleTouchMove(e) { + e.stopPropagation(); + const dist = e.touches[0].pageX - mouseDownX.current; + onMove(dist); + } + function handleMouseUp() { + document.removeEventListener("mousemove", handleMouseMove); + document.removeEventListener("mouseup", handleMouseUp); + setTimeout(() => { + setResizingColumnId(null); + }, 100); + } + function handleTouchEnd() { + document.removeEventListener("touchmove", handleTouchMove); + document.removeEventListener("touchend", handleTouchEnd); + setTimeout(() => { + setResizingColumnId(null); + }, 100); + } + function handleTouchStart(e) { + if (e.detail >= 2) + return; + document.addEventListener("touchmove", handleTouchMove); + document.addEventListener("touchend", handleTouchEnd); + mouseDownX.current = e.touches[0].pageX; + setResizingColumnId(columnId); + } + function handleMouseDown(e) { + if (e.detail >= 2) + return; + e.preventDefault(); + document.addEventListener("mousemove", handleMouseMove); + document.addEventListener("mouseup", handleMouseUp); + mouseDownX.current = e.pageX; + setResizingColumnId(columnId); + } + return { handleMouseDown, handleTouchStart }; +}; + +// src/react/table-app/header-cell/resize-container.tsx +var containerStyle = import_emotion_react_cjs.css` + position: relative; +`; +var innerStyle = import_emotion_react_cjs.css` + position: absolute; + left: -5px; + cursor: col-resize; + width: 8px; + height: 100%; + &:hover { + background-color: var(--interactive-accent); + } + &:active { + background-color: var(--interactive-accent); + } +`; +var dragStyle = import_emotion_react_cjs.css` + background-color: var(--interactive-accent); +`; +function ResizeContainer({ + currentResizingId, + columnId, + width, + onWidthChange, + onMenuClose +}) { + const { handleMouseDown, handleTouchStart } = useColumnResize( + columnId, + (dist) => { + const oldWidth = pxToNum(width); + const newWidth = oldWidth + dist; + if (newWidth < MIN_COLUMN_WIDTH) + return; + onWidthChange(columnId, numToPx(newWidth)); + } + ); + const isDragging = columnId === currentResizingId; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: containerStyle, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__resize-handle", + css: [innerStyle, isDragging && dragStyle], + onMouseDown: (e) => { + onMenuClose(); + handleMouseDown(e); + }, + onTouchStart: handleTouchStart, + onClick: (e) => { + e.stopPropagation(); + if (e.detail === 2) + onWidthChange(columnId, "unset"); + } + }) + }); +} + +// src/react/table-app/header-cell-edit/index.tsx +var import_react87 = __toESM(require_react()); + +// src/react/table-app/header-cell-edit/submenu.tsx +function Submenu({ title, children, onBackClick }) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + p: "md", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "md", + isVertical: true, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Button, { + icon: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId: "arrow-left" + }), + onClick: () => { + onBackClick(); + } + }), + title + ] + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, {}) + ] + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + children + }) + ] + }); +} + +// src/react/table-app/header-cell-edit/option-submenu.tsx +function OptionSubmenu({ + type, + currencyType, + aspectRatio, + verticalPadding, + horizontalPadding, + title, + dateFormat, + onBackClick, + onSubmenuChange +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { + title, + onBackClick, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + pt: "sm", + pb: "lg", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "lg", + isVertical: true, + children: [ + type === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: "Aspect Ratio", + value: aspectRatio, + onClick: () => onSubmenuChange(6 /* ASPECT_RATIO */) + }), + type === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: "Horizontal Padding", + value: horizontalPadding, + onClick: () => onSubmenuChange(4 /* HORIZONTAL_PADDING */) + }), + type === "embed" /* EMBED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: "Vertical Padding", + value: verticalPadding, + onClick: () => onSubmenuChange(5 /* VERTICAL_PADDING */) + }), + type === "currency" /* CURRENCY */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: "Currency", + value: getDisplayNameForCurrencyType(currencyType), + onClick: () => onSubmenuChange(2 /* CURRENCY */) + }), + (type === "creation-time" /* CREATION_TIME */ || type === "last-edited-time" /* LAST_EDITED_TIME */ || type === "date" /* DATE */) && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: "Date format", + value: getDisplayNameForDateFormat(dateFormat), + onClick: () => onSubmenuChange(3 /* DATE_FORMAT */) + }) + ] + }) + }) + }); +} + +// src/react/table-app/header-cell-edit/type-submenu.tsx +function TypeSubmenu({ + title, + value, + onValueClick, + onBackClick +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { + title, + onBackClick, + children: Object.values(CellType).map((type) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: getDisplayNameForCellType(type), + lucideId: getIconIdForCellType(type), + onClick: () => onValueClick(type), + isSelected: type === value + }, type)) + }); +} + +// src/react/table-app/header-cell-edit/base-menu.tsx +var import_react86 = __toESM(require_react()); +function BaseMenu({ + shouldWrapOverflow, + columnName, + columnId, + columnType, + columnSortDir, + canDeleteColumn, + onSortClick, + onSubmenuChange, + onWrapOverflowToggle, + onDeleteClick, + onColumnNameChange +}) { + const lastKeyPressed = import_react86.default.useRef(null); + const inputRef = import_react86.default.useRef(null); + useInputSelection(inputRef, columnName); + function handleInputChange(inputValue) { + onColumnNameChange(inputValue); + } + function handleKeyDown(e) { + lastKeyPressed.current = e.key; + } + const hasOptions = columnType === "embed" /* EMBED */ || columnType === "date" /* DATE */ || columnType === "currency" /* CURRENCY */ || columnType === "last-edited-time" /* LAST_EDITED_TIME */ || columnType === "creation-time" /* CREATION_TIME */; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "sm", + isVertical: true, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "sm", + isVertical: true, + width: "100%", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + px: "md", + py: "sm", + width: "100%", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { + className: "NLT__focusable", + autoFocus: true, + css: borderInputStyle, + ref: inputRef, + value: columnName, + onChange: (e) => handleInputChange(e.target.value), + onKeyDown: handleKeyDown + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + lucideId: "list", + name: "Type", + value: getDisplayNameForCellType(columnType), + onClick: () => { + onSubmenuChange(0 /* TYPE */); + } + }), + hasOptions && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + lucideId: "settings", + name: "Options", + onClick: () => { + onSubmenuChange(1 /* OPTIONS */); + } + }) + ] + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + lucideId: "arrow-up", + name: "Ascending", + onClick: () => onSortClick("asc" /* ASC */), + isSelected: columnSortDir === "asc" /* ASC */ + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + lucideId: "arrow-down", + name: "Descending", + onClick: () => onSortClick("desc" /* DESC */), + isSelected: columnSortDir === "desc" /* DESC */ + }), + canDeleteColumn && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + lucideId: "trash", + name: "Delete", + onClick: () => onDeleteClick() + }) + ] + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Padding, { + px: "lg", + py: "md", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Flex, { + justify: "space-between", + align: "center", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Text, { + value: "Wrap overflow" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Switch, { + isChecked: shouldWrapOverflow, + onToggle: (value) => onWrapOverflowToggle(columnId, value) + }) + ] + }) + }) + ] + }); +} + +// src/react/table-app/header-cell-edit/currency-submenu.tsx +function CurrencySubmenu({ + title, + value, + onValueClick, + onBackClick +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { + title, + onBackClick, + children: Object.values(CurrencyType).map((type) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: getDisplayNameForCurrencyType(type), + onClick: () => onValueClick(type), + isSelected: type === value + }, type)) + }); +} + +// src/react/table-app/header-cell-edit/date-format-submenu.tsx +function DateFormatSubmenu({ + title, + value, + onValueClick, + onBackClick +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { + title, + onBackClick, + children: Object.values(DateFormat).map((format) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: getDisplayNameForDateFormat(format), + onClick: () => onValueClick(format), + isSelected: format === value + }, format)) + }); +} + +// src/react/table-app/header-cell-edit/aspect-ratio-submenu.tsx +function AspectRatioSubmenu({ + title, + value, + onValueClick, + onBackClick +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { + title, + onBackClick, + children: Object.values(AspectRatio).map((ratio) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: ratio, + onClick: () => onValueClick(ratio), + isSelected: ratio === value + }, ratio)) + }); +} + +// src/react/table-app/header-cell-edit/padding-submenu.tsx +function PaddingSubmenu({ + title, + value, + onValueClick, + onBackClick +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Submenu, { + title, + onBackClick, + children: Object.values(PaddingSize).map((size) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuItem, { + name: size, + onClick: () => onValueClick(size), + isSelected: size === value + }, size)) + }); +} + +// src/react/table-app/header-cell-edit/index.tsx +var HeaderMenu = import_react87.default.forwardRef(function HeaderMenu2({ + isOpen, + id: id2, + top, + left, + cellId, + markdown, + dateFormat, + currencyType, + horizontalPadding, + verticalPadding, + aspectRatio, + canDeleteColumn, + columnType, + columnSortDir, + columnId, + menuCloseRequest, + shouldWrapOverflow, + onTypeSelect, + onVerticalPaddingClick, + onHorizontalPaddingClick, + onAspectRatioClick, + onSortClick, + onDeleteClick, + onMenuClose, + onWrapOverflowToggle, + onNameChange, + onCurrencyChange, + onDateFormatChange +}, ref) { + const [submenu, setSubmenu] = (0, import_react87.useState)(null); + const [localValue, setLocalValue] = (0, import_react87.useState)(markdown); + const hasCloseRequestTimeChanged = useCompare( + menuCloseRequest == null ? void 0 : menuCloseRequest.requestTime + ); + import_react87.default.useEffect(() => { + if (hasCloseRequestTimeChanged && menuCloseRequest !== null) { + if (submenu === null) { + if (localValue !== markdown) + onNameChange(cellId, localValue); + } + onMenuClose(); + } + }, [ + markdown, + cellId, + hasCloseRequestTimeChanged, + menuCloseRequest, + submenu, + localValue, + onNameChange, + onMenuClose + ]); + function handleSortClick(sortDir) { + onSortClick(columnId, sortDir); + onMenuClose(); + } + function handleAspectRatioClick(value) { + onAspectRatioClick(columnId, value); + onMenuClose(); + setSubmenu(1 /* OPTIONS */); + } + function handleHorizontalPaddingClick(value) { + onHorizontalPaddingClick(columnId, value); + onMenuClose(); + setSubmenu(1 /* OPTIONS */); + } + function handleVerticalPaddingClick(value) { + onVerticalPaddingClick(columnId, value); + onMenuClose(); + setSubmenu(1 /* OPTIONS */); + } + function handleTypeClick(type) { + onTypeSelect(columnId, type); + onMenuClose(); + setSubmenu(null); + } + function handleDeleteClick() { + onDeleteClick(columnId); + onMenuClose(); + setSubmenu(null); + } + function handleCurrencyClick(value) { + onCurrencyChange(columnId, value); + setSubmenu(1 /* OPTIONS */); + } + function handleDateFormatClick(value) { + onDateFormatChange(columnId, value); + setSubmenu(1 /* OPTIONS */); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_default, { + isOpen, + id: id2, + top, + left, + ref, + width: 175, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + className: "NLT__header-menu", + css: import_emotion_react_cjs.css` + color: var(--text-normal); + `, + children: [ + submenu === null && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(BaseMenu, { + canDeleteColumn, + cellId, + shouldWrapOverflow, + columnId, + columnName: localValue, + columnType, + menuCloseRequest, + columnSortDir, + onColumnNameChange: setLocalValue, + onSortClick: handleSortClick, + onSubmenuChange: setSubmenu, + onWrapOverflowToggle, + onDeleteClick: handleDeleteClick + }), + submenu === 1 /* OPTIONS */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(OptionSubmenu, { + title: "Options", + type: columnType, + horizontalPadding, + verticalPadding, + aspectRatio, + dateFormat, + currencyType, + onBackClick: () => setSubmenu(null), + onSubmenuChange: setSubmenu + }), + submenu === 6 /* ASPECT_RATIO */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(AspectRatioSubmenu, { + title: "Aspect Ratio", + value: aspectRatio, + onValueClick: handleAspectRatioClick, + onBackClick: () => setSubmenu(null) + }), + submenu === 4 /* HORIZONTAL_PADDING */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(PaddingSubmenu, { + title: "Horizontal Padding", + value: horizontalPadding, + onValueClick: handleHorizontalPaddingClick, + onBackClick: () => setSubmenu(null) + }), + submenu === 5 /* VERTICAL_PADDING */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(PaddingSubmenu, { + title: "Vertical Padding", + value: verticalPadding, + onValueClick: handleVerticalPaddingClick, + onBackClick: () => setSubmenu(null) + }), + submenu === 0 /* TYPE */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TypeSubmenu, { + title: "Type", + value: columnType, + onValueClick: handleTypeClick, + onBackClick: () => setSubmenu(null) + }), + submenu === 3 /* DATE_FORMAT */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(DateFormatSubmenu, { + title: "Date Format", + value: dateFormat, + onValueClick: handleDateFormatClick, + onBackClick: () => setSubmenu(1 /* OPTIONS */) + }), + submenu === 2 /* CURRENCY */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(CurrencySubmenu, { + title: "Currency", + value: currencyType, + onValueClick: handleCurrencyClick, + onBackClick: () => setSubmenu(1 /* OPTIONS */) + }) + ] + }) + }); +}); +var header_cell_edit_default = HeaderMenu; + +// src/react/table-app/header-cell/index.tsx +function HeaderCell2({ + cellId, + rowId, + columnId, + currencyType, + width, + dateFormat, + horizontalPadding, + verticalPadding, + aspectRatio, + markdown, + shouldWrapOverflow, + resizingColumnId, + type, + sortDir, + numColumns, + onWidthChange, + onSortClick, + onTypeSelect, + onVerticalPaddingClick, + onHorizontalPaddingClick, + onAspectRatioClick, + onDeleteClick, + onWrapOverflowToggle, + onNameChange, + onCurrencyChange, + onDateFormatChange +}) { + const { menu, isMenuOpen, closeTopMenu, menuRef, menuCloseRequest } = useMenu(0 /* ONE */, { shouldRequestOnClose: true }); + const { triggerPosition, triggerRef } = useMenuTriggerPosition(); + useShiftMenu(triggerRef, menuRef, isMenuOpen); + const [forceUpdateTime, forceUpdate] = useForceUpdate(); + import_react89.default.useEffect(() => { + if (width === "unset") + forceUpdate(); + }, [width, forceUpdate]); + const shouldUpdateWidth = useCompare(forceUpdateTime, false); + import_react89.default.useEffect(() => { + if (shouldUpdateWidth) { + const newWidth = numToPx(triggerPosition.width); + onWidthChange(columnId, newWidth); + } + }, [columnId, shouldUpdateWidth, triggerPosition]); + function handleMenuClose() { + closeTopMenu(); + } + const lucideId = getIconIdForCellType(type); + let contentClassName = "NLT__th-content"; + if (resizingColumnId == null) + contentClassName += " NLT__selectable"; + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(menu_trigger_default, { + isCell: true, + menu, + shouldRun: resizingColumnId === null, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + className: "NLT__th-container", + ref: triggerRef, + css: import_emotion_react_cjs.css` + display: flex; + justify-content: space-between; + min-height: var(--nlt-cell-min-height); + width: ${width}; + `, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: contentClassName, + css: import_emotion_react_cjs.css` + display: flex; + align-items: center; + /* Use 100% so that the resize indicator appears at the end */ + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + user-select: none; + padding: var(--nlt-cell-spacing-x) + var(--nlt-cell-spacing-y); + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "md", + align: "flex-start", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Icon, { + lucideId, + size: "md" + }), + markdown + ] + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ResizeContainer, { + currentResizingId: resizingColumnId, + columnId, + width, + onWidthChange, + onMenuClose: () => closeTopMenu({ shouldFocusTrigger: false }) + }) + ] + }) + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(header_cell_edit_default, { + isOpen: isMenuOpen, + menuCloseRequest, + top: triggerPosition.top, + left: triggerPosition.left, + id: menu.id, + ref: menuRef, + aspectRatio, + horizontalPadding, + verticalPadding, + rowId, + currencyType, + dateFormat, + canDeleteColumn: numColumns > 1, + columnId, + cellId, + shouldWrapOverflow, + markdown, + columnSortDir: sortDir, + columnType: type, + numColumns, + onSortClick, + onTypeSelect, + onDeleteClick, + onMenuClose: handleMenuClose, + onWrapOverflowToggle, + onNameChange, + onCurrencyChange, + onDateFormatChange, + onVerticalPaddingClick, + onHorizontalPaddingClick, + onAspectRatioClick + }) + ] + }); +} + +// src/data/constants.ts +var CURRENT_PLUGIN_VERSION = "6.18.6"; +var DEFAULT_TABLE_NAME = "Untitled"; +var TABLE_EXTENSION = "table"; +var EXTENSION_REGEX = new RegExp(/\.[a-z]*$/); +var WIKI_LINK_REGEX = new RegExp(/\[\[([^|\]]+)(?:\|([\w-]+))?\]\]/g); + +// src/data/table-state-factory.ts +var createColumn = (options) => { + const { cellType = "text" /* TEXT */ } = options || {}; + return { + id: v4_default(), + sortDir: "default" /* NONE */, + isVisible: true, + width: "140px", + type: cellType, + currencyType: "USD" /* UNITED_STATES */, + dateFormat: "mm/dd/yyyy" /* MM_DD_YYYY */, + shouldWrapOverflow: false, + tags: [], + functionType: "none" /* NONE */, + aspectRatio: "16/9" /* SIXTEEN_BY_NINE */, + horizontalPadding: "unset" /* UNSET */, + verticalPadding: "unset" /* UNSET */ + }; +}; +var createHeaderRow = () => { + return { + id: v4_default() + }; +}; +var createFooterRow = () => { + return { + id: v4_default() + }; +}; +var createBodyRow = (index) => { + const currentTime = Date.now(); + return { + id: v4_default(), + index, + creationTime: currentTime, + lastEditedTime: currentTime + }; +}; +var createHeaderCell = (columnId, rowId) => { + return { + id: v4_default(), + columnId, + rowId, + markdown: "New Column" + }; +}; +var createBodyCell = (columnId, rowId, options = {}) => { + const { cellType, tagIds = [] } = options || {}; + return { + id: v4_default(), + columnId, + rowId, + dateTime: null, + markdown: cellType === "checkbox" /* CHECKBOX */ ? CHECKBOX_MARKDOWN_UNCHECKED : "", + tagIds + }; +}; +var createFilterRule = (columnId) => { + return { + id: v4_default(), + columnId, + type: "is" /* IS */, + text: "", + tagIds: [], + isEnabled: true + }; +}; +var createFooterCell = (columnId, rowId) => { + return { + id: v4_default(), + columnId, + rowId + }; +}; +var createTag = (markdown, options) => { + const { color = randomColor() } = options || {}; + return { + id: v4_default(), + markdown, + color + }; +}; +var createTableState = (numColumns, numRows, options) => { + const { cellType } = options || {}; + const columns = []; + for (let i2 = 0; i2 < numColumns; i2++) + columns.push(createColumn({ cellType })); + const headerRows = []; + headerRows.push(createHeaderRow()); + const headerCells = []; + for (let x2 = 0; x2 < numColumns; x2++) { + headerCells.push(createHeaderCell(columns[x2].id, headerRows[0].id)); + } + const bodyRows = []; + for (let i2 = 0; i2 < numRows; i2++) + bodyRows.push(createBodyRow(i2)); + const bodyCells = []; + for (let y2 = 0; y2 < numRows; y2++) { + for (let x2 = 0; x2 < numColumns; x2++) { + bodyCells.push(createBodyCell(columns[x2].id, bodyRows[y2].id)); + } + } + const footerRows = []; + footerRows.push(createFooterRow()); + footerRows.push(createFooterRow()); + const footerCells = []; + for (let y2 = 0; y2 < 2; y2++) { + for (let x2 = 0; x2 < numColumns; x2++) { + footerCells.push(createFooterCell(columns[x2].id, footerRows[y2].id)); + } + } + const filterRules = []; + return { + model: { + columns, + headerRows, + bodyRows, + footerRows, + headerCells, + bodyCells, + footerCells, + filterRules + }, + pluginVersion: CURRENT_PLUGIN_VERSION + }; +}; + +// src/shared/table-state/filter-state-operations.ts +var addRule = (prevState, columnId) => { + const { model } = prevState; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, model), { + filterRules: [...model.filterRules, createFilterRule(columnId)] + }) + }); +}; +var deleteRule = (prevState, id2) => { + const { model } = prevState; + const { filterRules } = model; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, model), { + filterRules: filterRules.filter((rule) => rule.id !== id2) + }) + }); +}; +var updateRule = (prevState, id2, key, value) => { + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + filterRules: prevState.model.filterRules.map((rule) => { + const isBoolean2 = typeof rule[key] === "boolean"; + if (!isBoolean2 && value === void 0) + throw new Error( + "If the key type is not a boolean, a value must be provided" + ); + if (rule.id === id2) { + return __spreadProps(__spreadValues({}, rule), { + [key]: isBoolean2 ? !rule[key] : value + }); + } + return rule; + }) + }) + }); +}; + +// src/shared/table-state/use-filter-rules.ts +var useFilterRules = (onChange) => { + const logger = useLogger(); + function handleRuleColumnChange(id2, columnId) { + logger("handleRuleColumnChange", { id: id2, columnId }); + onChange( + (prevState) => updateRule(prevState, id2, "columnId", columnId) + ); + } + function handleRuleFilterTypeChange(id2, type) { + logger("handleRuleFilterTypeChange", { + id: id2, + type + }); + onChange((prevState) => updateRule(prevState, id2, "type", type)); + } + function handleRuleTextChange(id2, text) { + logger("handleRuleTextChange", { id: id2, text }); + onChange((prevState) => updateRule(prevState, id2, "text", text)); + } + function handleRuleToggle(id2) { + logger("handleRuleToggle", { id: id2 }); + onChange((prevState) => updateRule(prevState, id2, "isEnabled")); + } + function handleRuleAddClick(columnId) { + logger("handleRuleAddClick", { columnId }); + onChange((prevState) => addRule(prevState, columnId)); + } + function handleRuleDeleteClick(id2) { + logger("handleRuleDeleteClick", { + id: id2 + }); + onChange((prevState) => deleteRule(prevState, id2)); + } + function handleRuleTagsChange(id2, tagIds) { + logger("handleRuleTagsChange", { + id: id2, + tagIds + }); + onChange((prevState) => updateRule(prevState, id2, "tagIds", tagIds)); + } + return { + handleRuleAddClick, + handleRuleColumnChange, + handleRuleDeleteClick, + handleRuleFilterTypeChange, + handleRuleTextChange, + handleRuleToggle, + handleRuleTagsChange, + filterBodyRowsByRules + }; +}; + +// src/shared/cell-content/time-content.ts +var getTimeCellContent = (dateTime, format) => { + if (dateTime !== null) + return unixTimeToDateTimeString(dateTime, format); + return ""; +}; + +// src/shared/table-state/filter-by-search.ts +var filterBodyRowsBySearch = (tableState, filteredBodyRows, searchText) => { + const { columns, bodyCells, bodyRows } = tableState.model; + const columnMap = /* @__PURE__ */ new Map(); + columns.forEach((column) => columnMap.set(column.id, column)); + const rowMap = /* @__PURE__ */ new Map(); + bodyRows.forEach((row) => rowMap.set(row.id, row)); + const cellToTagMap = /* @__PURE__ */ new Map(); + bodyCells.forEach((cell) => { + const column = columnMap.get(cell.columnId); + if (!column) + throw new ColumNotFoundError(cell.columnId); + const cellTags = column.tags.filter( + (tag) => cell.tagIds.includes(tag.id) + ); + cellToTagMap.set(cell.id, cellTags); + }); + return filteredBodyRows.filter((row) => { + const rowCells = bodyCells.filter((cell) => cell.rowId === row.id); + return rowCells.some((cell) => { + const cellTags = cellToTagMap.get(cell.id); + if (!cellTags) + throw new Error(`Tags not found for cell ${cell.id}`); + return doesCellMatch( + cell, + columnMap, + rowMap, + cellTags, + searchText.toLowerCase() + ); + }); + }); +}; +var doesCellMatch = (cell, columnMap, rowMap, cellTags, searchText) => { + const column = columnMap.get(cell.columnId); + if (!column) + throw new ColumNotFoundError(cell.columnId); + const row = rowMap.get(cell.rowId); + if (!row) + throw new RowNotFoundError(cell.rowId); + const { dateTime, markdown } = cell; + const { currencyType, type, dateFormat } = column; + const { lastEditedTime, creationTime } = row; + switch (type) { + case "text" /* TEXT */: + case "embed" /* EMBED */: + case "file" /* FILE */: + case "number" /* NUMBER */: + case "checkbox" /* CHECKBOX */: + return matchCell(markdown, searchText); + case "currency" /* CURRENCY */: + return matchCurrencyCell(markdown, currencyType, searchText); + case "date" /* DATE */: + return matchDateCell(dateFormat, dateTime, searchText); + case "creation-time" /* CREATION_TIME */: + return matchCreationTimeCell(creationTime, dateFormat, searchText); + case "last-edited-time" /* LAST_EDITED_TIME */: + return matchLastEditedTimeCell( + lastEditedTime, + dateFormat, + searchText + ); + case "tag" /* TAG */: + case "multi-tag" /* MULTI_TAG */: + return matchTags(cellTags, searchText); + default: + throw new Error("Unsupported cell type"); + } +}; +var matchCell = (markdown, searchText) => { + return markdown.toLowerCase().includes(searchText); +}; +var matchCurrencyCell = (markdown, currencyType, searchText) => { + const content = getCurrencyCellContent(markdown, currencyType); + if (content.toLowerCase().includes(searchText.toLowerCase())) + return true; +}; +var matchTags = (cellTags, searchText) => { + return cellTags.some( + (tag) => tag.markdown.toLowerCase().includes(searchText) + ); +}; +var matchDateCell = (dateFormat, dateTime, searchText) => { + const content = getDateCellContent(dateTime, dateFormat); + return content.toLowerCase().includes(searchText); +}; +var matchCreationTimeCell = (creationTime, dateFormat, searchText) => { + const content = getTimeCellContent(creationTime, dateFormat); + return content.toLowerCase().includes(searchText); +}; +var matchLastEditedTimeCell = (lastEditedTime, dateFormat, searchText) => { + const content = getTimeCellContent(lastEditedTime, dateFormat); + return content.toLowerCase().includes(searchText); +}; + +// src/shared/table-state/use-column.ts +var import_react91 = __toESM(require_react()); + +// src/shared/commands/column-add-command.ts +var ColumnAddCommand = class extends TableStateCommand { + constructor() { + super(...arguments); + __publicField(this, "addedColumn"); + __publicField(this, "addedHeaderCells"); + __publicField(this, "addedBodyCells"); + __publicField(this, "addedFooterCells"); + } + execute(prevState) { + super.onExecute(); + const { + headerCells, + bodyCells, + footerCells, + columns, + headerRows, + bodyRows, + footerRows + } = prevState.model; + this.addedColumn = createColumn(); + this.addedHeaderCells = headerRows.map( + (row) => createHeaderCell(this.addedColumn.id, row.id) + ); + this.addedBodyCells = bodyRows.map( + (row) => createBodyCell(this.addedColumn.id, row.id) + ); + this.addedFooterCells = footerRows.map( + (row) => createFooterCell(this.addedColumn.id, row.id) + ); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: [...columns, this.addedColumn], + headerCells: [...headerCells, ...this.addedHeaderCells], + bodyCells: [...bodyCells, ...this.addedBodyCells], + footerCells: [...footerCells, ...this.addedFooterCells] + }) + }); + } + redo(prevState) { + super.onRedo(); + const { headerCells, bodyCells, footerCells, columns } = prevState.model; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: [...columns, this.addedColumn], + headerCells: [...headerCells, ...this.addedHeaderCells], + bodyCells: [...bodyCells, ...this.addedBodyCells], + footerCells: [...footerCells, ...this.addedFooterCells] + }) + }); + } + undo(prevState) { + super.onUndo(); + const { columns, headerCells, bodyCells, footerCells } = prevState.model; + const { id: id2 } = this.addedColumn; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: columns.filter((column) => column.id !== id2), + headerCells: headerCells.filter((cell) => cell.columnId !== id2), + bodyCells: bodyCells.filter((cell) => cell.columnId !== id2), + footerCells: footerCells.filter((cell) => cell.columnId !== id2) + }) + }); + } +}; + +// src/shared/commands/column-delete-command.ts +var ColumnDeleteCommand = class extends TableStateCommand { + constructor(options) { + super(); + __publicField(this, "columnId"); + __publicField(this, "last"); + __publicField(this, "deletedColumn"); + __publicField(this, "deletedHeaderCells"); + __publicField(this, "deletedBodyCells"); + __publicField(this, "deletedFooterCells"); + __publicField(this, "deletedFilterRules"); + const { id: id2, last: last2 } = options; + if (id2 === void 0 && last2 === void 0) + throw new DeleteCommandArgumentsError(); + this.columnId = id2; + this.last = last2; + } + execute(prevState) { + super.onExecute(); + const { columns, headerCells, bodyCells, footerCells, filterRules } = prevState.model; + if (columns.length === 1) + return prevState; + let id2 = this.columnId; + if (this.last) + id2 = columns[columns.length - 1].id; + const columnToDelete = columns.find((column) => column.id === id2); + if (!columnToDelete) + throw new ColumNotFoundError(id2); + this.deletedColumn = { + arrIndex: columns.indexOf(columnToDelete), + column: structuredClone(columnToDelete) + }; + const headerCellsToDelete = headerCells.filter( + (cell) => cell.columnId === id2 + ); + this.deletedHeaderCells = headerCellsToDelete.map((cell) => ({ + arrIndex: headerCells.indexOf(cell), + cell: structuredClone(cell) + })); + const bodyCellsToDelete = bodyCells.filter( + (cell) => cell.columnId === id2 + ); + this.deletedBodyCells = bodyCellsToDelete.map((cell) => ({ + arrIndex: bodyCells.indexOf(cell), + cell: structuredClone(cell) + })); + const footerCellsToDelete = footerCells.filter( + (cell) => cell.columnId === id2 + ); + this.deletedFooterCells = footerCellsToDelete.map((cell) => ({ + arrIndex: footerCells.indexOf(cell), + cell: structuredClone(cell) + })); + const rulesToDelete = filterRules.filter( + (rule) => rule.columnId === id2 + ); + this.deletedFilterRules = rulesToDelete.map((rule) => ({ + arrIndex: filterRules.indexOf(rule), + rule: structuredClone(rule) + })); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: columns.filter((column) => column.id !== id2), + headerCells: headerCells.filter((cell) => cell.columnId !== id2), + bodyCells: bodyCells.filter((cell) => cell.columnId !== id2), + footerCells: footerCells.filter((cell) => cell.columnId !== id2), + filterRules: filterRules.filter((rule) => rule.columnId !== id2) + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + const { columns, headerCells, bodyCells, footerCells, filterRules } = prevState.model; + const updatedColumns = [...columns]; + updatedColumns.splice( + this.deletedColumn.arrIndex, + 0, + this.deletedColumn.column + ); + const updatedHeaderCells = [...headerCells]; + this.deletedHeaderCells.forEach((cell) => { + updatedHeaderCells.splice(cell.arrIndex, 0, cell.cell); + }); + const updatedBodyCells = [...bodyCells]; + this.deletedBodyCells.forEach((cell) => { + updatedBodyCells.splice(cell.arrIndex, 0, cell.cell); + }); + const updatedFooterCells = [...footerCells]; + this.deletedFooterCells.forEach((cell) => { + updatedFooterCells.splice(cell.arrIndex, 0, cell.cell); + }); + const updatedFilterRules = [...filterRules]; + this.deletedFilterRules.forEach((rule) => { + updatedFilterRules.splice(rule.arrIndex, 0, rule.rule); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: updatedColumns, + headerCells: updatedHeaderCells, + bodyCells: updatedBodyCells, + footerCells: updatedFooterCells, + filterRules: updatedFilterRules + }) + }); + } +}; + +// src/shared/commands/column-update-command.ts +var ColumnUpdateCommand = class extends TableStateCommand { + constructor(columnId, key, options) { + const { shouldSortRows = false, value } = options || {}; + super(shouldSortRows); + __publicField(this, "columnId"); + __publicField(this, "key"); + __publicField(this, "value"); + __publicField(this, "previousValue"); + this.columnId = columnId; + this.key = key; + this.value = value; + } + execute(prevState) { + super.onExecute(); + const { columns } = prevState.model; + const column = columns.find((column2) => column2.id === this.columnId); + if (!column) + throw new ColumNotFoundError(this.columnId); + this.previousValue = column[this.key]; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: prevState.model.columns.map((column2) => { + const isBoolean2 = typeof column2[this.key] === "boolean"; + if (!isBoolean2 && this.value === void 0) + throw new Error( + "a value must be provided when the column expects a non-boolean value" + ); + if (column2.id === this.columnId) { + return __spreadProps(__spreadValues({}, column2), { + [this.key]: isBoolean2 ? !column2[this.key] : this.value + }); + } + return column2; + }) + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: prevState.model.columns.map((column) => { + if (column.id === this.columnId) { + return __spreadProps(__spreadValues({}, column), { + [this.key]: this.previousValue + }); + } + return column; + }) + }) + }); + } +}; + +// src/shared/commands/column-type-update-command.ts +var ColumnTypeUpdateCommand = class extends TableStateCommand { + constructor(id2, type) { + super(); + __publicField(this, "columnId"); + __publicField(this, "type"); + __publicField(this, "previousType"); + __publicField(this, "deletedFilterRules", []); + __publicField(this, "previousFunctionType"); + __publicField(this, "newFunctionType"); + __publicField(this, "updatedBodyCellTagIds", { + current: [], + previous: [] + }); + __publicField(this, "updatedBodyCellMarkdown", { + current: [], + previous: [] + }); + __publicField(this, "addedTags", []); + this.columnId = id2; + this.type = type; + } + fromNumberOrCurrency(columns) { + return columns.map((column) => { + if (column.id === this.columnId) { + if (isNumberFunction(column.functionType)) { + this.previousFunctionType = column.functionType; + this.newFunctionType = "none" /* NONE */; + return __spreadProps(__spreadValues({}, column), { + functionType: "none" /* NONE */ + }); + } + } + return column; + }); + } + fromTagOrMultiTag(bodyCells) { + return bodyCells.map((cell) => { + if (cell.columnId === this.columnId) { + if (cell.tagIds.length > 0) { + this.updatedBodyCellTagIds.previous.push({ + cellId: cell.id, + tagIds: [...cell.tagIds] + }); + this.updatedBodyCellTagIds.current.push({ + cellId: cell.id, + tagIds: [] + }); + return __spreadProps(__spreadValues({}, cell), { + tagIds: [] + }); + } + } + return cell; + }); + } + fromDateToText(column, bodyCells) { + return bodyCells.map((cell) => { + const { dateTime } = cell; + if (cell.columnId === column.id) { + if (dateTime !== null) { + const dateString = unixTimeToDateString( + dateTime, + column.dateFormat + ); + this.updatedBodyCellMarkdown.previous.push({ + cellId: cell.id, + markdown: cell.markdown + }); + this.updatedBodyCellMarkdown.current.push({ + cellId: cell.id, + markdown: dateString + }); + return __spreadProps(__spreadValues({}, cell), { + markdown: dateString + }); + } + } + return cell; + }); + } + toTag(columns, bodyCells) { + const newColumns = structuredClone(columns); + let newBodyCells = structuredClone(bodyCells); + newBodyCells = newBodyCells.map((cell) => { + if (cell.columnId === this.columnId) { + if (cell.markdown !== "") { + const tagIds = []; + cell.markdown.split(",").forEach((markdown) => { + const column = newColumns.find( + (column2) => column2.id === this.columnId + ); + if (!column) + throw new ColumNotFoundError(this.columnId); + const existingTag = column.tags.find( + (tag) => tag.markdown === markdown + ); + if (tagIds.length === 0) { + if (existingTag) { + tagIds.push(existingTag.id); + } else { + const tag = createTag(markdown); + this.addedTags.push(structuredClone(tag)); + column.tags.push(tag); + tagIds.push(tag.id); + } + } else { + if (!existingTag) { + const tag = createTag(markdown); + this.addedTags.push(structuredClone(tag)); + column.tags.push(tag); + } + } + }); + this.updatedBodyCellTagIds.previous.push({ + cellId: cell.id, + tagIds: [] + }); + this.updatedBodyCellTagIds.current.push({ + cellId: cell.id, + tagIds + }); + return __spreadProps(__spreadValues({}, cell), { + tagIds + }); + } + } + return cell; + }); + return { + columnsResult: newColumns, + bodyCellsResult: newBodyCells + }; + } + toMultiTag(columns, bodyCells) { + const newColumns = structuredClone(columns); + let newBodyCells = structuredClone(bodyCells); + newBodyCells = newBodyCells.map((cell) => { + if (cell.columnId === this.columnId) { + if (cell.markdown !== "") { + const tagIds = []; + cell.markdown.split(",").forEach((markdown) => { + const column = newColumns.find( + (column2) => column2.id === this.columnId + ); + if (!column) + throw new ColumNotFoundError(this.columnId); + const existingTag = column.tags.find( + (tag) => tag.markdown === markdown + ); + if (existingTag) { + tagIds.push(existingTag.id); + } else { + const tag = createTag(markdown); + this.addedTags.push(structuredClone(tag)); + column.tags.push(tag); + tagIds.push(tag.id); + } + }); + this.updatedBodyCellTagIds.previous.push({ + cellId: cell.id, + tagIds: [] + }); + this.updatedBodyCellTagIds.current.push({ + cellId: cell.id, + tagIds + }); + return __spreadProps(__spreadValues({}, cell), { + tagIds + }); + } + } + return cell; + }); + return { columnsResult: newColumns, bodyCellsResult: newBodyCells }; + } + fromMultiTagToTag(bodyCells) { + return bodyCells.map((cell) => { + if (cell.columnId === this.columnId) { + if (cell.tagIds.length > 0) { + this.updatedBodyCellTagIds.previous.push({ + cellId: cell.id, + tagIds: [...cell.tagIds] + }); + this.updatedBodyCellTagIds.current.push({ + cellId: cell.id, + tagIds: [cell.tagIds[0]] + }); + return __spreadProps(__spreadValues({}, cell), { + tagIds: [cell.tagIds[0]] + }); + } + } + return cell; + }); + } + toCheckbox(bodyCells) { + return bodyCells.map((cell) => { + if (cell.columnId === this.columnId) { + if (!isCheckbox(cell.markdown)) { + this.updatedBodyCellMarkdown.previous.push({ + cellId: cell.id, + markdown: cell.markdown + }); + this.updatedBodyCellMarkdown.current.push({ + cellId: cell.id, + markdown: CHECKBOX_MARKDOWN_UNCHECKED + }); + return __spreadProps(__spreadValues({}, cell), { + markdown: CHECKBOX_MARKDOWN_UNCHECKED + }); + } + } + return cell; + }); + } + execute(prevState) { + super.onExecute(); + const { columns, bodyCells, filterRules } = prevState.model; + const column = columns.find((column2) => column2.id === this.columnId); + if (!column) + throw new ColumNotFoundError(this.columnId); + this.previousType = column.type; + if (this.previousType === this.type) + return prevState; + let newColumns = structuredClone(columns); + let newBodyCells = structuredClone(bodyCells); + if (this.previousType === "multi-tag" /* MULTI_TAG */ && this.type !== "tag" /* TAG */ || this.previousType === "tag" /* TAG */ && this.type !== "multi-tag" /* MULTI_TAG */) { + newBodyCells = this.fromTagOrMultiTag(newBodyCells); + } else if (this.previousType !== "multi-tag" /* MULTI_TAG */ && this.type === "tag" /* TAG */) { + const { columnsResult, bodyCellsResult } = this.toTag( + newColumns, + newBodyCells + ); + newColumns = columnsResult; + newBodyCells = bodyCellsResult; + } else if (this.previousType !== "tag" /* TAG */ && this.type === "multi-tag" /* MULTI_TAG */) { + const { columnsResult, bodyCellsResult } = this.toMultiTag( + newColumns, + newBodyCells + ); + newColumns = columnsResult; + newBodyCells = bodyCellsResult; + } else if (this.previousType === "multi-tag" /* MULTI_TAG */ && this.type === "tag" /* TAG */) { + newBodyCells = this.fromMultiTagToTag(newBodyCells); + } else if (this.type === "checkbox" /* CHECKBOX */) { + newBodyCells = this.toCheckbox(newBodyCells); + } else if (this.previousType === "date" /* DATE */ && this.type === "text" /* TEXT */) { + newBodyCells = this.fromDateToText(column, newBodyCells); + } + if (this.previousType === "number" /* NUMBER */ || this.previousType === "currency" /* CURRENCY */) { + newColumns = this.fromNumberOrCurrency(newColumns); + } + newColumns = newColumns.map((column2) => { + if (column2.id === this.columnId) { + return __spreadProps(__spreadValues({}, column2), { + type: this.type + }); + } + return column2; + }); + const shouldFilterRule = (rule) => rule.columnId !== this.columnId; + const filterRulesToDelete = filterRules.filter( + (rule) => !shouldFilterRule(rule) + ); + this.deletedFilterRules = filterRulesToDelete.map((rule) => ({ + arrIndex: filterRules.indexOf(rule), + rule: structuredClone(rule) + })); + const newFilterRules = filterRules.filter(shouldFilterRule); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: newColumns, + bodyCells: newBodyCells, + filterRules: newFilterRules + }) + }); + } + redo(prevState) { + super.onRedo(); + const { columns, bodyCells, filterRules } = prevState.model; + const newBodyCells = bodyCells.map((cell) => { + const updatedCellTagIds = this.updatedBodyCellTagIds.current.find( + (c2) => c2.cellId === cell.id + ); + if (updatedCellTagIds) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: updatedCellTagIds.tagIds + }); + } + const updatedCellMarkdown = this.updatedBodyCellMarkdown.current.find( + (c2) => c2.cellId === cell.id + ); + if (updatedCellMarkdown) { + return __spreadProps(__spreadValues({}, cell), { + markdown: updatedCellMarkdown.markdown + }); + } + return cell; + }); + const newColumns = columns.map((column) => { + if (column.id === this.columnId) { + return __spreadProps(__spreadValues({}, column), { + type: this.type, + functionType: this.newFunctionType ? this.newFunctionType : column.functionType, + tags: [...column.tags, ...this.addedTags] + }); + } + return column; + }); + const newFilterRules = filterRules.filter( + (rule) => !this.deletedFilterRules.find((r2) => r2.rule.id === rule.id) + ); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: newColumns, + bodyCells: newBodyCells, + filterRules: newFilterRules + }) + }); + } + undo(prevState) { + super.onUndo(); + const { columns, bodyCells, filterRules } = prevState.model; + const newBodyCells = bodyCells.map((cell) => { + const updatedCellTagIds = this.updatedBodyCellTagIds.previous.find( + (c2) => c2.cellId === cell.id + ); + if (updatedCellTagIds) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: updatedCellTagIds.tagIds + }); + } + const updatedCellMarkdown = this.updatedBodyCellMarkdown.previous.find( + (c2) => c2.cellId === cell.id + ); + if (updatedCellMarkdown) { + return __spreadProps(__spreadValues({}, cell), { + markdown: updatedCellMarkdown.markdown + }); + } + return cell; + }); + const newFilterRules = structuredClone(filterRules); + this.deletedFilterRules.forEach((r2) => { + const { arrIndex, rule } = r2; + newFilterRules.splice(arrIndex, 0, rule); + }); + const newColumns = columns.map((column) => { + if (column.id === this.columnId) { + return __spreadProps(__spreadValues({}, column), { + functionType: this.previousFunctionType ? this.previousFunctionType : column.functionType, + type: this.previousType, + tags: column.tags.filter( + (t2) => this.addedTags.find( + (added) => added.id === t2.id + ) === void 0 + ) + }); + } + return column; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: newColumns, + bodyCells: newBodyCells, + filterRules: newFilterRules + }) + }); + } +}; + +// src/shared/table-state/use-column.ts +var useColumn = () => { + const logger = useLogger(); + const { doCommand } = useTableState(); + function handleNewColumnClick() { + logger("handleNewColumnClick"); + doCommand(new ColumnAddCommand()); + } + function handleColumnTypeClick(columnId, type) { + logger("handleColumnTypeClick", { + columnId, + type + }); + doCommand(new ColumnTypeUpdateCommand(columnId, type)); + } + function handleColumnSortClick(columnId, sortDir) { + logger("handleColumnSortClick", { + columnId, + sortDir + }); + doCommand( + new ColumnUpdateCommand(columnId, "sortDir", { + value: sortDir, + shouldSortRows: true + }) + ); + } + function handleHorizontalPaddingClick(columnId, padding) { + logger("handleHorziontalPaddingClick", { + columnId, + padding + }); + doCommand( + new ColumnUpdateCommand(columnId, "horizontalPadding", { + value: padding + }) + ); + } + function handleVerticalPaddingClick(columnId, padding) { + logger("handleVerticalPaddingClick", { + columnId, + padding + }); + doCommand( + new ColumnUpdateCommand(columnId, "verticalPadding", { + value: padding + }) + ); + } + function handleAspectRatioClick(columnId, aspectRatio) { + logger("handleVerticalPaddingClick", { + columnId, + aspectRatio + }); + doCommand( + new ColumnUpdateCommand(columnId, "aspectRatio", { + value: aspectRatio + }) + ); + } + const handleColumnToggle = import_react91.default.useCallback( + (columnId) => { + logger("handleColumnToggle", { + columnId + }); + doCommand(new ColumnUpdateCommand(columnId, "isVisible")); + }, + [doCommand, logger] + ); + function handleColumnDeleteClick(columnId) { + logger("handleColumnDeleteClick", { + columnId + }); + doCommand(new ColumnDeleteCommand({ id: columnId })); + } + function handleFunctionTypeChange(columnId, functionType) { + logger("handleFunctionTypeChange", { + columnId, + functionType + }); + doCommand( + new ColumnUpdateCommand(columnId, "functionType", { + value: functionType + }) + ); + } + function handleCurrencyChange(columnId, currencyType) { + logger("handleCurrencyChange", { + columnId, + currencyType + }); + doCommand( + new ColumnUpdateCommand(columnId, "currencyType", { + value: currencyType, + shouldSortRows: true + }) + ); + } + function handleDateFormatChange(columnId, dateFormat) { + logger("handleDateFormatChange", { + columnId, + dateFormat + }); + doCommand( + new ColumnUpdateCommand(columnId, "dateFormat", { + value: dateFormat, + shouldSortRows: true + }) + ); + } + function handleSortRemoveClick(columnId) { + logger("handleSortRemoveClick", { + columnId + }); + doCommand( + new ColumnUpdateCommand(columnId, "sortDir", { + value: "default" /* NONE */, + shouldSortRows: true + }) + ); + } + function handleColumnWidthChange(columnId, width) { + logger("handleColumnWidthChange", { + columnId, + width + }); + doCommand( + new ColumnUpdateCommand(columnId, "width", { + value: width, + shouldSortRows: true + }) + ); + } + function handleWrapContentToggle(columnId, shouldWrap) { + logger("handleWrapContentToggle", { + columnId, + shouldWrap + }); + doCommand( + new ColumnUpdateCommand(columnId, "shouldWrapOverflow", { + value: shouldWrap, + shouldSortRows: true + }) + ); + } + return { + handleNewColumnClick, + handleColumnTypeClick, + handleColumnSortClick, + handleColumnToggle, + handleColumnDeleteClick, + handleCurrencyChange, + handleDateFormatChange, + handleSortRemoveClick, + handleColumnWidthChange, + handleWrapContentToggle, + handleFunctionTypeChange, + handleHorizontalPaddingClick, + handleVerticalPaddingClick, + handleAspectRatioClick + }; +}; + +// src/shared/commands/row-add-command.ts +var RowAddCommand = class extends TableStateCommand { + constructor() { + super(true); + __publicField(this, "addedRow"); + __publicField(this, "addedBodyCells"); + } + execute(prevState) { + super.onExecute(); + const { bodyRows, bodyCells, columns } = prevState.model; + this.addedRow = createBodyRow(bodyRows.length); + this.addedBodyCells = columns.map((column) => { + const { id: id2, type } = column; + return createBodyCell(id2, this.addedRow.id, { + cellType: type + }); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyCells: [...bodyCells, ...this.addedBodyCells], + bodyRows: [...bodyRows, this.addedRow] + }) + }); + } + redo(prevState) { + super.onRedo(); + const { bodyRows, bodyCells } = prevState.model; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyCells: [...bodyCells, ...this.addedBodyCells], + bodyRows: [...bodyRows, this.addedRow] + }) + }); + } + undo(prevState) { + super.onUndo(); + const { bodyRows, bodyCells } = prevState.model; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyRows: bodyRows.filter((row) => row.id !== this.addedRow.id), + bodyCells: bodyCells.filter( + (cell) => cell.rowId !== this.addedRow.id + ) + }) + }); + } +}; + +// src/shared/commands/row-delete-command.ts +var RowDeleteCommand = class extends TableStateCommand { + constructor(options) { + super(); + __publicField(this, "rowId"); + __publicField(this, "last"); + __publicField(this, "deletedRow"); + __publicField(this, "deletedCells"); + __publicField(this, "previousBodyRows"); + const { id: id2, last: last2 } = options; + if (id2 === void 0 && last2 === void 0) + throw new DeleteCommandArgumentsError(); + this.rowId = id2; + this.last = last2; + } + execute(prevState) { + super.onExecute(); + const { bodyRows, bodyCells } = prevState.model; + if (bodyRows.length === 0) + return prevState; + let id2 = this.rowId; + if (this.last) + id2 = bodyRows[bodyRows.length - 1].id; + const rowToDelete = bodyRows.find((row) => row.id === id2); + if (!rowToDelete) + throw new RowNotFoundError(id2); + this.deletedRow = { + arrIndex: bodyRows.indexOf(rowToDelete), + row: structuredClone(rowToDelete) + }; + let newBodyRows = bodyRows.filter((row) => row.id !== id2); + this.previousBodyRows = newBodyRows.filter((row) => row.index > this.deletedRow.row.index).map((row) => { + return { + id: row.id, + index: row.index + }; + }); + newBodyRows = newBodyRows.map((row) => { + if (row.index > this.deletedRow.row.index) { + return __spreadProps(__spreadValues({}, row), { + index: row.index - 1 + }); + } + return row; + }); + const cellsToDelete = bodyCells.filter((cell) => cell.rowId === id2); + this.deletedCells = cellsToDelete.map((cell) => ({ + arrIndex: bodyCells.indexOf(cell), + cell: structuredClone(cell) + })); + const newBodyCells = bodyCells.filter((cell) => cell.rowId !== id2); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyRows: newBodyRows, + bodyCells: newBodyCells + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + const { bodyRows, bodyCells } = prevState.model; + const updatedBodyRows = [...bodyRows].map((row) => { + const wasUpdated = this.previousBodyRows.find( + (r2) => r2.id === row.id + ); + if (wasUpdated) { + return __spreadProps(__spreadValues({}, row), { + index: wasUpdated.index + }); + } + return row; + }); + updatedBodyRows.splice( + this.deletedRow.arrIndex, + 0, + this.deletedRow.row + ); + const updatedBodyCells = [...bodyCells]; + this.deletedCells.forEach((cell) => { + updatedBodyCells.splice(cell.arrIndex, 0, cell.cell); + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyRows: updatedBodyRows, + bodyCells: updatedBodyCells + }) + }); + } +}; + +// src/shared/table-state/use-row.ts +var import_react92 = __toESM(require_react()); +var useRow = () => { + const logger = useLogger(); + const { doCommand } = useTableState(); + const handleRowDeleteClick = import_react92.default.useCallback( + (rowId) => { + logger("handleRowDeleteClick", { + rowId + }); + doCommand(new RowDeleteCommand({ id: rowId })); + }, + [doCommand, logger] + ); + function handleNewRowClick() { + logger("handleNewRowClick"); + doCommand(new RowAddCommand()); + } + return { + handleNewRowClick, + handleRowDeleteClick + }; +}; + +// src/shared/table-state/row-state-operations.ts +var rowLastEditedTime = (rows, rowId) => { + const row = rows.find((row2) => row2.id === rowId); + if (!row) + throw new RowNotFoundError(rowId); + return row.lastEditedTime; +}; +var rowLastEditedTimeUpdate = (rows, rowId, time = Date.now()) => { + return rows.map((row) => { + if (row.id === rowId) { + return __spreadProps(__spreadValues({}, row), { + lastEditedTime: time + }); + } + return row; + }); +}; + +// src/shared/commands/cell-body-update-command.ts +var CellBodyUpdateCommand = class extends TableStateCommand { + constructor(cellId, rowId, key, value) { + super(true); + __publicField(this, "cellId"); + __publicField(this, "rowId"); + __publicField(this, "key"); + __publicField(this, "value"); + __publicField(this, "previousValue"); + __publicField(this, "previousEditedTime"); + this.cellId = cellId; + this.rowId = rowId; + this.key = key; + this.value = value; + } + execute(prevState) { + super.onExecute(); + const { bodyCells, bodyRows } = prevState.model; + const cell = bodyCells.find((cell2) => cell2.id === this.cellId); + if (!cell) + throw new CellNotFoundError({ + id: this.cellId + }); + this.previousValue = cell[this.key]; + this.previousEditedTime = rowLastEditedTime(bodyRows, this.rowId); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyCells: bodyCells.map((cell2) => { + if (cell2.id === this.cellId) { + return __spreadProps(__spreadValues({}, cell2), { + [this.key]: this.value + }); + } + return cell2; + }), + bodyRows: rowLastEditedTimeUpdate(bodyRows, this.rowId) + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + const { bodyCells, bodyRows } = prevState.model; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyCells: bodyCells.map((cell) => { + if (cell.id === this.cellId) { + return __spreadProps(__spreadValues({}, cell), { + [this.key]: this.previousValue + }); + } + return cell; + }), + bodyRows: rowLastEditedTimeUpdate( + bodyRows, + this.rowId, + this.previousEditedTime + ) + }) + }); + } +}; + +// src/shared/commands/cell-header-update-command.ts +var CellHeaderUpdateCommand = class extends TableStateCommand { + constructor(cellId, key, value) { + super(); + __publicField(this, "cellId"); + __publicField(this, "key"); + __publicField(this, "value"); + __publicField(this, "previousValue"); + this.cellId = cellId; + this.key = key; + this.value = value; + } + execute(prevState) { + super.onExecute(); + const { headerCells } = prevState.model; + const cell = headerCells.find((cell2) => cell2.id === this.cellId); + if (!cell) + throw new CellNotFoundError({ + id: this.cellId + }); + this.previousValue = cell[this.key]; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + headerCells: headerCells.map((cell2) => { + if (cell2.id === this.cellId) { + return __spreadProps(__spreadValues({}, cell2), { + [this.key]: this.value + }); + } + return cell2; + }) + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + const { headerCells } = prevState.model; + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + headerCells: headerCells.map((cell) => { + if (cell.id === this.cellId) { + return __spreadProps(__spreadValues({}, cell), { + [this.key]: this.previousValue + }); + } + return cell; + }) + }) + }); + } +}; + +// src/shared/table-state/use-cell.ts +var import_react93 = __toESM(require_react()); +var useCell = () => { + const logger = useLogger(); + const { doCommand } = useTableState(); + function handleHeaderCellContentChange(cellId, value) { + logger("handleCellContentChange", { + cellId, + markdown: value + }); + doCommand(new CellHeaderUpdateCommand(cellId, "markdown", value)); + } + const handleBodyCellContentChange = import_react93.default.useCallback( + (cellId, rowId, value) => { + logger("handleCellContentChange", { + cellId, + rowId, + markdown: value + }); + doCommand( + new CellBodyUpdateCommand(cellId, rowId, "markdown", value) + ); + }, + [logger, doCommand] + ); + const handleCellDateTimeChange = import_react93.default.useCallback( + (cellId, rowId, value) => { + logger("handleCellContentChange", { + cellId, + rowId, + dateTime: value + }); + doCommand( + new CellBodyUpdateCommand(cellId, rowId, "dateTime", value) + ); + }, + [logger, doCommand] + ); + return { + handleHeaderCellContentChange, + handleBodyCellContentChange, + handleCellDateTimeChange + }; +}; + +// src/shared/commands/tag-delete-command.ts +var TagDeleteCommand = class extends TableStateCommand { + constructor(columnId, tagId) { + super(); + __publicField(this, "columnId"); + __publicField(this, "tagId"); + __publicField(this, "deletedTag"); + __publicField(this, "previousCellTagIds", []); + this.columnId = columnId; + this.tagId = tagId; + } + execute(prevState) { + super.onExecute(); + const { bodyCells, columns } = prevState.model; + const newColumns = columns.map((column) => { + if (column.id === this.columnId) { + const tag = column.tags.find((tag2) => tag2.id === this.tagId); + if (!tag) + throw new TagNotFoundError(this.tagId); + this.deletedTag = { + arrIndex: column.tags.indexOf(tag), + tag + }; + return __spreadProps(__spreadValues({}, column), { + tags: column.tags.filter((tag2) => tag2.id !== this.tagId) + }); + } + return column; + }); + const newBodyCells = bodyCells.map((cell) => { + if (cell.tagIds.includes(this.tagId)) { + this.previousCellTagIds.push({ + cellId: cell.id, + tagIds: [...cell.tagIds] + }); + return __spreadProps(__spreadValues({}, cell), { + tagIds: cell.tagIds.filter((tagId) => tagId !== this.tagId) + }); + } + return cell; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: newColumns, + bodyCells: newBodyCells + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + const { columns, bodyCells } = prevState.model; + const newColumns = columns.map((column) => { + if (column.id === this.columnId) { + const updatedTags = [...column.tags]; + updatedTags.splice( + this.deletedTag.arrIndex, + 0, + this.deletedTag.tag + ); + return __spreadProps(__spreadValues({}, column), { + tags: updatedTags + }); + } + return column; + }); + const newBodyCells = bodyCells.map((cell) => { + const previousTagIds = this.previousCellTagIds.find( + (previousCellTagId) => previousCellTagId.cellId === cell.id + ); + if (previousTagIds) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: previousTagIds.tagIds + }); + } + return cell; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: newColumns, + bodyCells: newBodyCells + }) + }); + } +}; + +// src/shared/commands/tag-update-command.ts +var TagUpdateCommand = class extends TableStateCommand { + constructor(columnId, tagId, key, value) { + super(); + __publicField(this, "columnId"); + __publicField(this, "tagId"); + __publicField(this, "key"); + __publicField(this, "value"); + __publicField(this, "previousValue"); + this.columnId = columnId; + this.tagId = tagId; + this.key = key; + this.value = value; + } + execute(prevState) { + super.onExecute(); + const { columns } = prevState.model; + const newColumns = columns.map((column) => { + if (column.id === this.columnId) { + const tag = column.tags.find((tag2) => tag2.id === this.tagId); + if (!tag) + throw new TagNotFoundError(this.tagId); + this.previousValue = tag[this.key]; + return __spreadProps(__spreadValues({}, column), { + tags: column.tags.map((tag2) => { + if (tag2.id === this.tagId) { + return __spreadProps(__spreadValues({}, tag2), { + [this.key]: this.value + }); + } + return tag2; + }) + }); + } + return column; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: newColumns + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + const { columns } = prevState.model; + const newColumns = columns.map((column) => { + if (column.id === this.columnId) { + return __spreadProps(__spreadValues({}, column), { + tags: column.tags.map((tag) => { + if (tag.id === this.tagId) { + return __spreadProps(__spreadValues({}, tag), { + [this.key]: this.previousValue + }); + } + return tag; + }) + }); + } + return column; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: newColumns + }) + }); + } +}; + +// src/shared/commands/tag-add-command.ts +var TagAddCommand = class extends TableStateCommand { + constructor(cellId, columnId, rowId, markdown, color, isMultiTag) { + super(); + __publicField(this, "cellId"); + __publicField(this, "columnId"); + __publicField(this, "rowId"); + __publicField(this, "markdown"); + __publicField(this, "color"); + __publicField(this, "isMultiTag"); + __publicField(this, "previousEditedTime"); + __publicField(this, "newEditedTime"); + __publicField(this, "addedTag"); + __publicField(this, "previousCellTagIds"); + __publicField(this, "newCellTagIds"); + this.cellId = cellId; + this.columnId = columnId; + this.rowId = rowId; + this.markdown = markdown; + this.color = color; + this.isMultiTag = isMultiTag; + } + execute(prevState) { + super.onExecute(); + const { bodyRows, bodyCells, columns } = prevState.model; + this.addedTag = createTag(this.markdown, { + color: this.color + }); + const newColumns = columns.map((column) => { + if (column.id === this.columnId) { + return __spreadProps(__spreadValues({}, column), { + tags: [...column.tags, this.addedTag] + }); + } + return column; + }); + const newBodyCells = bodyCells.map((cell) => { + if (cell.id === this.cellId) { + this.previousCellTagIds = [...cell.tagIds]; + if (this.isMultiTag === false) { + if (cell.tagIds.length > 0) { + this.newCellTagIds = [this.addedTag.id]; + return __spreadProps(__spreadValues({}, cell), { + tagIds: this.newCellTagIds + }); + } + } + this.newCellTagIds = [...cell.tagIds, this.addedTag.id]; + return __spreadProps(__spreadValues({}, cell), { + tagIds: [...cell.tagIds, this.addedTag.id] + }); + } + return cell; + }); + this.previousEditedTime = rowLastEditedTime(bodyRows, this.rowId); + this.newEditedTime = Date.now(); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: newColumns, + bodyCells: newBodyCells, + bodyRows: rowLastEditedTimeUpdate( + bodyRows, + this.rowId, + this.newEditedTime + ) + }) + }); + } + redo(prevState) { + super.onRedo(); + const { bodyRows, columns, bodyCells } = prevState.model; + const newColumns = columns.map((column) => { + if (column.id === this.columnId) + return __spreadProps(__spreadValues({}, column), { + tags: [...column.tags, this.addedTag] + }); + return column; + }); + const newBodyCells = bodyCells.map((cell) => { + if (cell.id === this.cellId) + return __spreadProps(__spreadValues({}, cell), { + tagIds: this.newCellTagIds + }); + return cell; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: newColumns, + bodyCells: newBodyCells, + bodyRows: rowLastEditedTimeUpdate( + bodyRows, + this.rowId, + this.newEditedTime + ) + }) + }); + } + undo(prevState) { + super.onUndo(); + const { bodyRows, columns } = prevState.model; + const newColumns = columns.map((column) => { + if (column.id === this.columnId) { + return __spreadProps(__spreadValues({}, column), { + tags: column.tags.filter( + (tag) => tag.id !== this.addedTag.id + ) + }); + } + return column; + }); + const newBodyCells = prevState.model.bodyCells.map((cell) => { + if (cell.id === this.cellId) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: this.previousCellTagIds + }); + } + return cell; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + columns: newColumns, + bodyCells: newBodyCells, + bodyRows: rowLastEditedTimeUpdate( + bodyRows, + this.rowId, + this.previousEditedTime + ) + }) + }); + } +}; + +// src/shared/commands/tag-cell-remove-command.ts +var TagCellRemoveCommand = class extends TableStateCommand { + constructor(cellId, rowId, tagId) { + super(); + __publicField(this, "cellId"); + __publicField(this, "rowId"); + __publicField(this, "tagId"); + __publicField(this, "previousEditedTime"); + __publicField(this, "previousTagIdIndex"); + this.cellId = cellId; + this.rowId = rowId; + this.tagId = tagId; + } + execute(prevState) { + super.onExecute(); + const { bodyCells, bodyRows } = prevState.model; + const newBodyCells = bodyCells.map((cell) => { + if (cell.id === this.cellId) { + this.previousTagIdIndex = cell.tagIds.indexOf(this.tagId); + const { tagIds } = cell; + return __spreadProps(__spreadValues({}, cell), { + tagIds: tagIds.filter((id2) => id2 !== this.tagId) + }); + } + return cell; + }); + this.previousEditedTime = rowLastEditedTime(bodyRows, this.rowId); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyCells: newBodyCells, + bodyRows: rowLastEditedTimeUpdate(bodyRows, this.rowId) + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + const { bodyCells, bodyRows } = prevState.model; + const newBodyCells = bodyCells.map((cell) => { + if (cell.id === this.cellId) { + const newTagIds = [...cell.tagIds]; + newTagIds.splice(this.previousTagIdIndex, 0, this.tagId); + return __spreadProps(__spreadValues({}, cell), { + tagIds: newTagIds + }); + } + return cell; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyCells: newBodyCells, + bodyRows: rowLastEditedTimeUpdate( + bodyRows, + this.rowId, + this.previousEditedTime + ) + }) + }); + } +}; + +// src/shared/commands/tag-cell-add-command.ts +var TagCellAddCommand = class extends TableStateCommand { + constructor(cellId, rowId, tagId, isMultiTag) { + super(); + __publicField(this, "cellId"); + __publicField(this, "rowId"); + __publicField(this, "tagId"); + __publicField(this, "isMultiTag"); + __publicField(this, "previousCellTagIds"); + __publicField(this, "previousEditedTime"); + this.cellId = cellId; + this.rowId = rowId; + this.tagId = tagId; + this.isMultiTag = isMultiTag; + } + execute(prevState) { + super.onExecute(); + const { bodyCells, bodyRows } = prevState.model; + const newBodyCells = bodyCells.map((cell) => { + if (cell.id === this.cellId) { + this.previousCellTagIds = [...cell.tagIds]; + if (this.isMultiTag === false) { + if (cell.tagIds.length > 0) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: [this.tagId] + }); + } + } + return __spreadProps(__spreadValues({}, cell), { + tagIds: [...cell.tagIds, this.tagId] + }); + } + return cell; + }); + this.previousEditedTime = rowLastEditedTime(bodyRows, this.rowId); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyCells: newBodyCells, + bodyRows: rowLastEditedTimeUpdate(bodyRows, this.rowId) + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + const { bodyCells, bodyRows } = prevState.model; + const newBodyCells = bodyCells.map((cell) => { + if (cell.id === this.cellId) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: this.previousCellTagIds + }); + } + return cell; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyCells: newBodyCells, + bodyRows: rowLastEditedTimeUpdate( + bodyRows, + this.rowId, + this.previousEditedTime + ) + }) + }); + } +}; + +// src/shared/commands/tag-cell-multiple-remove-command.ts +var TagCellMultipleRemoveCommand = class extends TableStateCommand { + constructor(cellId, rowId, tagIds) { + super(); + __publicField(this, "cellId"); + __publicField(this, "rowId"); + __publicField(this, "tagIds"); + __publicField(this, "previousEditedTime"); + __publicField(this, "previousTagIds"); + this.cellId = cellId; + this.rowId = rowId; + this.tagIds = tagIds; + } + execute(prevState) { + super.onExecute(); + const { bodyCells, bodyRows } = prevState.model; + const newBodyCells = bodyCells.map((cell) => { + if (cell.id === this.cellId) { + this.previousTagIds = [...cell.tagIds]; + return __spreadProps(__spreadValues({}, cell), { + tagIds: cell.tagIds.filter( + (id2) => !this.tagIds.includes(id2) + ) + }); + } + return cell; + }); + this.previousEditedTime = rowLastEditedTime(bodyRows, this.rowId); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyCells: newBodyCells, + bodyRows: rowLastEditedTimeUpdate(bodyRows, this.rowId) + }) + }); + } + redo(prevState) { + super.onRedo(); + return this.execute(prevState); + } + undo(prevState) { + super.onUndo(); + const { bodyCells, bodyRows } = prevState.model; + const newBodyCells = bodyCells.map((cell) => { + if (cell.id === this.cellId) { + return __spreadProps(__spreadValues({}, cell), { + tagIds: this.previousTagIds + }); + } + return cell; + }); + return __spreadProps(__spreadValues({}, prevState), { + model: __spreadProps(__spreadValues({}, prevState.model), { + bodyCells: newBodyCells, + bodyRows: rowLastEditedTimeUpdate( + bodyRows, + this.rowId, + this.previousEditedTime + ) + }) + }); + } +}; + +// src/shared/table-state/use-tag.ts +var useTag = () => { + const { doCommand } = useTableState(); + const logFunc = useLogger(); + function handleTagAdd(cellId, columnId, rowId, markdown, color, isMultiTag) { + logFunc("handleTagAdd", { + cellId, + columnId, + rowId, + markdown, + color, + isMultiTag + }); + doCommand( + new TagAddCommand( + cellId, + columnId, + rowId, + markdown, + color, + isMultiTag + ) + ); + } + function handleTagCellAdd(cellId, rowId, tagId, isMultiTag) { + logFunc("handleTagCellAdd", { + cellId, + rowId, + tagId, + isMultiTag + }); + doCommand(new TagCellAddCommand(cellId, rowId, tagId, isMultiTag)); + } + function handleTagCellRemove(cellId, rowId, tagId) { + logFunc("handleTagCellRemove", { + cellId, + rowId, + tagId + }); + doCommand(new TagCellRemoveCommand(cellId, rowId, tagId)); + } + function handleTagCellMultipleRemove(cellId, rowId, tagIds) { + logFunc("handleTagCellMultipleRemove", { + cellId, + rowId, + tagIds + }); + doCommand(new TagCellMultipleRemoveCommand(cellId, rowId, tagIds)); + } + function handleTagDeleteClick(columnId, tagId) { + logFunc("handleTagDeleteClick", { + columnId, + tagId + }); + doCommand(new TagDeleteCommand(columnId, tagId)); + } + function handleTagColorChange(columnId, tagId, color) { + logFunc("handleTagColorChange", { + columnId, + tagId, + color + }); + doCommand(new TagUpdateCommand(columnId, tagId, "color", color)); + } + return { + handleTagCellAdd, + handleTagAdd, + handleTagCellRemove, + handleTagColorChange, + handleTagCellMultipleRemove, + handleTagDeleteClick + }; +}; + +// src/shared/menu/arrow-move-focus.ts +var moveMenuFocusUp = (focusableEls, currentIndex) => { + let index = currentIndex - 1; + if (index < 0) + index = focusableEls.length - 1; + return focusableEls[index]; +}; +var moveMenuFocusDown = (focusableEls, currentIndex) => { + let index = currentIndex + 1; + if (index > focusableEls.length - 1) + index = 0; + return focusableEls[index]; +}; +var moveFocusLeft = (focusableEls, currentIndex) => { + let index = currentIndex - 1; + if (index < 0) + index = focusableEls.length - 1; + return focusableEls[index]; +}; +var moveFocusRight = (focusableEls, currentIndex) => { + let index = currentIndex + 1; + if (index > focusableEls.length - 1) + index = 0; + return focusableEls[index]; +}; +var moveFocusUp = (focusableEls, numColumns, numBodyRows, numSortedColumns, currentIndex) => { + const searchInputIndex = numSortedColumns; + const optionBarIndexEnd = numSortedColumns + 2; + const newRowButtonIndex = focusableEls.length - 1; + if (currentIndex <= optionBarIndexEnd) + return focusableEls[currentIndex]; + if (currentIndex > optionBarIndexEnd && currentIndex <= optionBarIndexEnd + numColumns) { + return focusableEls[searchInputIndex]; + } + if (currentIndex >= newRowButtonIndex - numColumns && currentIndex < newRowButtonIndex) { + if (numBodyRows === 0) + return focusableEls[currentIndex - numColumns - 1]; + return focusableEls[currentIndex - numColumns]; + } + if (currentIndex === newRowButtonIndex) + return focusableEls[newRowButtonIndex - numColumns]; + if (currentIndex > optionBarIndexEnd && currentIndex <= optionBarIndexEnd + numColumns) + return focusableEls[0]; + if (currentIndex === optionBarIndexEnd + numColumns + 2) + return focusableEls[currentIndex - 1 - numColumns]; + if (currentIndex > optionBarIndexEnd + numColumns + 2 && currentIndex <= optionBarIndexEnd + numColumns + 2 + numColumns) + return focusableEls[currentIndex - 2 - numColumns]; + return focusableEls[currentIndex - 1 - numColumns]; +}; +var moveFocusDown = (focusableEls, numColumns, numBodyRows, numSortedColumns, currentIndex) => { + const firstColumnIndex = numSortedColumns + 3; + const optionBarIndexEnd = numSortedColumns + 2; + const newRowButtonIndex = focusableEls.length - 1; + if (currentIndex === newRowButtonIndex) + return focusableEls[currentIndex]; + if (currentIndex >= 0 && currentIndex <= optionBarIndexEnd) + return focusableEls[firstColumnIndex]; + if (currentIndex >= newRowButtonIndex - numColumns && currentIndex < newRowButtonIndex) + return focusableEls[newRowButtonIndex]; + if (currentIndex > optionBarIndexEnd && currentIndex <= optionBarIndexEnd + numColumns) { + if (numBodyRows === 0) + return focusableEls[currentIndex + numColumns + 1]; + return focusableEls[currentIndex + numColumns + 2]; + } + if (currentIndex >= newRowButtonIndex - numColumns - numColumns && currentIndex < newRowButtonIndex - numColumns) + return focusableEls[currentIndex + numColumns]; + if (currentIndex === optionBarIndexEnd + numColumns + 1) + return focusableEls[currentIndex + numColumns + 1]; + return focusableEls[currentIndex + numColumns + 1]; +}; + +// src/obsidian-shim/build/export-events.ts +var import_react94 = __toESM(require_react()); + +// src/shared/event-system/utils.ts +var isEventForThisApp = (appId, allowOutsideEvents = false) => { + const activeEl = document.activeElement; + if (!activeEl) + return false; + const appEl = activeEl.closest(".NLT__app"); + if (appEl) + return appEl.getAttribute("data-id") === appId; + if (allowOutsideEvents) + return true; + const menuEl = activeEl.closest(".NLT__menu"); + if (menuEl) { + const menuId = menuEl.getAttribute("data-id"); + const menuTrigger = document.querySelector( + `[data-menu-id="${menuId}"]` + ); + if (!menuTrigger) + return false; + const appEl2 = menuTrigger.closest(".NLT__app"); + if (appEl2) + return appEl2.getAttribute("data-id") === appId; + } + return false; +}; + +// src/shared/export/download-utils.ts +var import_obsidian7 = require("obsidian"); + +// src/shared/export/types.ts +var ExportType = /* @__PURE__ */ ((ExportType2) => { + ExportType2["UNSELECTED"] = "Select an option"; + ExportType2["MARKDOWN"] = "Markdown"; + ExportType2["CSV"] = "CSV"; + return ExportType2; +})(ExportType || {}); + +// src/shared/export/download-utils.ts +var getBlobTypeForExportType = (type) => { + switch (type) { + case "CSV" /* CSV */: + return "text/csv"; + case "Markdown" /* MARKDOWN */: + return "text/markdown"; + default: + throw new Error(`Unknown export type: ${type}`); + } +}; +var getExportFileName = (filePath) => { + const replaceExtension = filePath.replace(`.${TABLE_EXTENSION}`, ""); + const replaceSlash = replaceExtension.replace(/\//g, "-"); + const replaceSpaces = replaceSlash.replace(/ /g, "_"); + const timestamp = (0, import_obsidian7.moment)().format("YYYY_MM_DD-HH_mm_ss"); + return replaceSpaces + "-" + timestamp; +}; +var downloadFile = (fileName, blobType, data) => { + const blob = new Blob([data], { type: blobType }); + const url = window.URL.createObjectURL(blob); + const el = document.createElement("a"); + el.setAttribute("href", url); + el.setAttribute("download", fileName); + el.style.display = "none"; + document.body.appendChild(el); + el.click(); + document.body.removeChild(el); +}; + +// src/shared/export/export-to-csv.tsx +var import_papaparse = __toESM(require_papaparse_min()); + +// src/shared/cell-content/checkbox-cell-content.ts +var getCheckboxCellContent = (markdown, renderMarkdown2) => { + if (renderMarkdown2) + return markdown; + if (isCheckboxChecked(markdown)) + return "true"; + return "false"; +}; + +// src/shared/cell-content/number-cell-content.ts +var getNumberCellContent = (value) => { + if (isNumber(value)) + return value; + return ""; +}; + +// src/shared/cell-content/text-cell-content.ts +var getTextCellContent = (markdown, renderMarkdown2) => { + if (!renderMarkdown2) + return markdown.replace(WIKI_LINK_REGEX, (_match, path) => { + return path; + }); + return markdown; +}; + +// src/shared/cell-content/index.ts +var getTagCellContent = (column, cell) => { + return column.tags.filter((tag) => cell.tagIds.includes(tag.id)).map((tag) => tag.markdown).join(","); +}; +var getCellContent = (column, row, cell, renderMarkdown2) => { + switch (column.type) { + case "text" /* TEXT */: + case "file" /* FILE */: + return getTextCellContent(cell.markdown, renderMarkdown2); + case "number" /* NUMBER */: + return getNumberCellContent(cell.markdown); + case "embed" /* EMBED */: + return getEmbedCellContent(cell.markdown, renderMarkdown2); + case "checkbox" /* CHECKBOX */: + return getCheckboxCellContent(cell.markdown, renderMarkdown2); + case "currency" /* CURRENCY */: + return getCurrencyCellContent(cell.markdown, column.currencyType); + case "tag" /* TAG */: + case "multi-tag" /* MULTI_TAG */: + return getTagCellContent(column, cell); + case "date" /* DATE */: + return getDateCellContent(cell.dateTime, column.dateFormat); + case "creation-time" /* CREATION_TIME */: + return getTimeCellContent(row.creationTime, column.dateFormat); + case "last-edited-time" /* LAST_EDITED_TIME */: + return getTimeCellContent(row.lastEditedTime, column.dateFormat); + default: + throw new Error("Unsupported cell type"); + } +}; + +// src/shared/export/table-state-to-array.tsx +var serializeHeaderCells = (cells) => { + return cells.map((cell) => cell.markdown); +}; +var serializeBodyCells = (columns, rows, cells, renderMarkdown2) => { + return rows.map((row) => { + const rowCells = cells.filter((cell) => cell.rowId === row.id); + return rowCells.map((cell) => { + const column = columns.find( + (column2) => column2.id === cell.columnId + ); + if (!column) + throw new ColumNotFoundError(cell.columnId); + return getCellContent(column, row, cell, renderMarkdown2); + }); + }); +}; +var tableStateToArray = (tableState, renderMarkdown2) => { + const { headerCells, bodyCells, bodyRows, columns } = tableState.model; + const serializedHeaderCells = serializeHeaderCells(headerCells); + const serializedBodyCells = serializeBodyCells( + columns, + bodyRows, + bodyCells, + renderMarkdown2 + ); + return [serializedHeaderCells, ...serializedBodyCells]; +}; + +// src/shared/export/export-to-csv.tsx +var exportToCSV = (tableState, renderMarkdown2) => { + const arr = tableStateToArray(tableState, renderMarkdown2); + return import_papaparse.default.unparse(arr); +}; + +// node_modules/markdown-table/index.js +function markdownTable(table, options = {}) { + const align = (options.align || []).concat(); + const stringLength = options.stringLength || defaultStringLength; + const alignments = []; + const cellMatrix = []; + const sizeMatrix = []; + const longestCellByColumn = []; + let mostCellsPerRow = 0; + let rowIndex = -1; + while (++rowIndex < table.length) { + const row2 = []; + const sizes2 = []; + let columnIndex2 = -1; + if (table[rowIndex].length > mostCellsPerRow) { + mostCellsPerRow = table[rowIndex].length; + } + while (++columnIndex2 < table[rowIndex].length) { + const cell = serialize(table[rowIndex][columnIndex2]); + if (options.alignDelimiters !== false) { + const size = stringLength(cell); + sizes2[columnIndex2] = size; + if (longestCellByColumn[columnIndex2] === void 0 || size > longestCellByColumn[columnIndex2]) { + longestCellByColumn[columnIndex2] = size; + } + } + row2.push(cell); + } + cellMatrix[rowIndex] = row2; + sizeMatrix[rowIndex] = sizes2; + } + let columnIndex = -1; + if (typeof align === "object" && "length" in align) { + while (++columnIndex < mostCellsPerRow) { + alignments[columnIndex] = toAlignment(align[columnIndex]); + } + } else { + const code = toAlignment(align); + while (++columnIndex < mostCellsPerRow) { + alignments[columnIndex] = code; + } + } + columnIndex = -1; + const row = []; + const sizes = []; + while (++columnIndex < mostCellsPerRow) { + const code = alignments[columnIndex]; + let before = ""; + let after = ""; + if (code === 99) { + before = ":"; + after = ":"; + } else if (code === 108) { + before = ":"; + } else if (code === 114) { + after = ":"; + } + let size = options.alignDelimiters === false ? 1 : Math.max( + 1, + longestCellByColumn[columnIndex] - before.length - after.length + ); + const cell = before + "-".repeat(size) + after; + if (options.alignDelimiters !== false) { + size = before.length + size + after.length; + if (size > longestCellByColumn[columnIndex]) { + longestCellByColumn[columnIndex] = size; + } + sizes[columnIndex] = size; + } + row[columnIndex] = cell; + } + cellMatrix.splice(1, 0, row); + sizeMatrix.splice(1, 0, sizes); + rowIndex = -1; + const lines = []; + while (++rowIndex < cellMatrix.length) { + const row2 = cellMatrix[rowIndex]; + const sizes2 = sizeMatrix[rowIndex]; + columnIndex = -1; + const line = []; + while (++columnIndex < mostCellsPerRow) { + const cell = row2[columnIndex] || ""; + let before = ""; + let after = ""; + if (options.alignDelimiters !== false) { + const size = longestCellByColumn[columnIndex] - (sizes2[columnIndex] || 0); + const code = alignments[columnIndex]; + if (code === 114) { + before = " ".repeat(size); + } else if (code === 99) { + if (size % 2) { + before = " ".repeat(size / 2 + 0.5); + after = " ".repeat(size / 2 - 0.5); + } else { + before = " ".repeat(size / 2); + after = before; + } + } else { + after = " ".repeat(size); + } + } + if (options.delimiterStart !== false && !columnIndex) { + line.push("|"); + } + if (options.padding !== false && !(options.alignDelimiters === false && cell === "") && (options.delimiterStart !== false || columnIndex)) { + line.push(" "); + } + if (options.alignDelimiters !== false) { + line.push(before); + } + line.push(cell); + if (options.alignDelimiters !== false) { + line.push(after); + } + if (options.padding !== false) { + line.push(" "); + } + if (options.delimiterEnd !== false || columnIndex !== mostCellsPerRow - 1) { + line.push("|"); + } + } + lines.push( + options.delimiterEnd === false ? line.join("").replace(/ +$/, "") : line.join("") + ); + } + return lines.join("\n"); +} +function serialize(value) { + return value === null || value === void 0 ? "" : String(value); +} +function defaultStringLength(value) { + return value.length; +} +function toAlignment(value) { + const code = typeof value === "string" ? value.codePointAt(0) : 0; + return code === 67 || code === 99 ? 99 : code === 76 || code === 108 ? 108 : code === 82 || code === 114 ? 114 : 0; +} + +// src/shared/export/export-to-markdown.tsx +var exportToMarkdown = (tableState, renderMarkdown2) => { + const arr = tableStateToArray(tableState, renderMarkdown2); + return markdownTable(arr); +}; + +// src/obsidian-shim/build/export-events.ts +var useExportEvents = (state) => { + const { filePath } = useMountState(); + const { appId } = useMountState(); + const { exportRenderMarkdown } = useAppSelector((state2) => state2.global); + import_react94.default.useEffect(() => { + function handleDownloadCSV() { + if (isEventForThisApp(appId)) { + setTimeout(() => { + const data = exportToCSV(state, exportRenderMarkdown); + const exportFileName = getExportFileName(filePath); + const blobType = getBlobTypeForExportType( + "Markdown" /* MARKDOWN */ + ); + downloadFile(exportFileName, blobType, data); + }, 100); + } + } + function handleDownloadMarkdown() { + if (isEventForThisApp(appId)) { + setTimeout(() => { + const data = exportToMarkdown(state, exportRenderMarkdown); + const exportFileName = getExportFileName(filePath); + const blobType = getBlobTypeForExportType( + "Markdown" /* MARKDOWN */ + ); + downloadFile(exportFileName, blobType, data); + }, 100); + } + } + app.workspace.on(EVENT_DOWNLOAD_CSV, handleDownloadCSV); + app.workspace.on(EVENT_DOWNLOAD_MARKDOWN, handleDownloadMarkdown); + return () => { + app.workspace.off(EVENT_DOWNLOAD_CSV, handleDownloadCSV); + app.workspace.off(EVENT_DOWNLOAD_MARKDOWN, handleDownloadMarkdown); + }; + }, [filePath, state, appId, exportRenderMarkdown]); +}; + +// src/obsidian-shim/build/row-events.ts +var import_react95 = __toESM(require_react()); +var useRowEvents = () => { + const { appId } = useMountState(); + const { doCommand } = useTableState(); + import_react95.default.useEffect(() => { + function handleRowAddEvent() { + if (isEventForThisApp(appId)) + doCommand(new RowAddCommand()); + } + function handleRowDeleteEvent() { + if (isEventForThisApp(appId)) + doCommand(new RowDeleteCommand({ last: true })); + } + app.workspace.on(EVENT_ROW_ADD, handleRowAddEvent); + app.workspace.on(EVENT_ROW_DELETE, handleRowDeleteEvent); + return () => { + app.workspace.off(EVENT_ROW_ADD, handleRowAddEvent); + app.workspace.off(EVENT_ROW_DELETE, handleRowDeleteEvent); + }; + }, [doCommand, appId]); +}; + +// src/obsidian-shim/build/column-events.ts +var import_react96 = __toESM(require_react()); +var useColumnEvents = () => { + const { appId } = useMountState(); + const { doCommand } = useTableState(); + const logger = useLogger(); + import_react96.default.useEffect(() => { + function handleColumnAddEvent() { + if (isEventForThisApp(appId)) { + logger("handleColumnAddEvent"); + doCommand(new ColumnAddCommand()); + } + } + function handleColumnDeleteEvent() { + if (isEventForThisApp(appId)) { + logger("handleColumnDeleteEvent"); + doCommand(new ColumnDeleteCommand({ last: true })); + } + } + app.workspace.on(EVENT_COLUMN_ADD, handleColumnAddEvent); + app.workspace.on(EVENT_COLUMN_DELETE, handleColumnDeleteEvent); + return () => { + app.workspace.off(EVENT_COLUMN_ADD, handleColumnAddEvent); + app.workspace.off(EVENT_COLUMN_DELETE, handleColumnDeleteEvent); + }; + }, [doCommand, logger, appId]); +}; + +// src/react/table-app/index.tsx +var TableApp = () => { + const { appId, isMarkdownView } = useMountState(); + const { topMenu, hasOpenMenu, requestCloseTopMenu } = useMenuState(); + const logger = useLogger(); + const { + tableState, + resizingColumnId, + searchText, + commandRedo, + commandUndo, + setTableState + } = useTableState(); + useExportEvents(tableState); + useRowEvents(); + useColumnEvents(); + const { + handleRuleAddClick, + handleRuleColumnChange, + handleRuleDeleteClick, + handleRuleFilterTypeChange, + handleRuleTextChange, + handleRuleToggle, + handleRuleTagsChange, + filterBodyRowsByRules: filterBodyRowsByRules2 + } = useFilterRules(setTableState); + const { + handleNewColumnClick, + handleColumnToggle, + handleCurrencyChange, + handleDateFormatChange, + handleColumnDeleteClick, + handleColumnSortClick, + handleColumnTypeClick, + handleColumnWidthChange, + handleSortRemoveClick, + handleFunctionTypeChange, + handleWrapContentToggle, + handleAspectRatioClick, + handleHorizontalPaddingClick, + handleVerticalPaddingClick + } = useColumn(); + const { handleNewRowClick, handleRowDeleteClick } = useRow(); + const { + handleBodyCellContentChange, + handleCellDateTimeChange, + handleHeaderCellContentChange + } = useCell(); + const { + handleTagCellAdd, + handleTagAdd, + handleTagCellRemove, + handleTagCellMultipleRemove, + handleTagColorChange, + handleTagDeleteClick + } = useTag(); + const firstColumnId = useUUID(); + const lastColumnId = useUUID(); + function handleClick(e) { + logger("TableApp handleClick"); + e.stopPropagation(); + if (hasOpenMenu()) { + requestCloseTopMenu("click"); + } else { + removeFocusVisibleClass(); + } + } + function handleKeyDown(e) { + logger("TableApp handleKeyDown"); + e.stopPropagation(); + if (e.key === "Tab") { + removeFocusVisibleClass(); + e.preventDefault(); + const layerEl = getFocusableLayerEl(appId, topMenu); + if (!layerEl) + return; + const focusableEls = layerEl.querySelectorAll(".NLT__focusable"); + if (focusableEls.length === 0) + return; + focusNextElement(layerEl, focusableEls); + } else if (isWindowsRedoDown(e) || isMacRedoDown(e)) { + e.preventDefault(); + commandRedo(); + } else if (isWindowsUndoDown(e) || isMacUndoDown(e)) { + e.preventDefault(); + commandUndo(); + } else if (e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "ArrowLeft" || e.key === "ArrowRight") { + const layerEl = getFocusableLayerEl(appId, topMenu); + if (!layerEl) + return; + const focusableEls = layerEl.querySelectorAll(".NLT__focusable"); + if (focusableEls.length === 0) + return; + e.preventDefault(); + const focusedEl = document.activeElement; + let index = -1; + if (focusedEl) + index = Array.from(focusableEls).indexOf(focusedEl); + const numVisibleColumns = tableState.model.columns.filter( + (column) => column.isVisible + ).length; + const numBodyRows = tableState.model.bodyRows.length; + const numSortedColumns = tableState.model.columns.filter( + (column) => column.sortDir !== "default" /* NONE */ + ).length; + let elementToFocus = null; + switch (e.key) { + case "ArrowLeft": + elementToFocus = moveFocusLeft(focusableEls, index); + break; + case "ArrowRight": + elementToFocus = moveFocusRight(focusableEls, index); + break; + case "ArrowUp": + if (hasOpenMenu()) { + elementToFocus = moveMenuFocusUp(focusableEls, index); + } else { + elementToFocus = moveFocusUp( + focusableEls, + numVisibleColumns, + numBodyRows, + numSortedColumns, + index + ); + } + break; + case "ArrowDown": + if (hasOpenMenu()) { + elementToFocus = moveMenuFocusDown(focusableEls, index); + } else { + elementToFocus = moveFocusDown( + focusableEls, + numVisibleColumns, + numBodyRows, + numSortedColumns, + index + ); + break; + } + } + if (elementToFocus !== null) { + removeFocusVisibleClass(); + elementToFocus.focus(); + } + } + nltEventSystem.dispatchEvent("keydown", e); + } + const { + headerRows, + footerRows, + columns, + headerCells, + bodyCells, + footerCells, + filterRules + } = tableState.model; + let filteredBodyRows = filterBodyRowsByRules2(tableState); + filteredBodyRows = filterBodyRowsBySearch( + tableState, + filteredBodyRows, + searchText + ); + const visibleColumns = columns.filter((column) => column.isVisible); + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)("div", { + "data-id": appId, + className: "NLT__app", + css: import_emotion_react_cjs.css` + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + padding: 10px 0px; + border-top: 1px solid var(--background-modifier-border); + border-bottom: ${isMarkdownView ? "1px solid var(--background-modifier-border)" : "unset"}; + `, + onKeyDown: handleKeyDown, + onClick: handleClick, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(OptionBar, { + headerCells, + columns, + filterRules, + onColumnToggle: handleColumnToggle, + onSortRemoveClick: handleSortRemoveClick, + onRuleAddClick: handleRuleAddClick, + onRuleDeleteClick: handleRuleDeleteClick, + onRuleFilterTypeChange: handleRuleFilterTypeChange, + onRuleColumnChange: handleRuleColumnChange, + onRuleTextChange: handleRuleTextChange, + onRuleToggle: handleRuleToggle, + onRuleTagsChange: handleRuleTagsChange + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Table2, { + headerRows: headerRows.map((row) => { + return { + id: row.id, + cells: [ + { + id: firstColumnId, + columnId: firstColumnId, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + css: import_emotion_react_cjs.css` + width: 35px; + ` + }) + }, + ...visibleColumns.map((column) => { + const { + id: columnId, + width, + type, + sortDir, + shouldWrapOverflow, + currencyType, + dateFormat, + verticalPadding, + horizontalPadding, + aspectRatio + } = column; + const cell = headerCells.find( + (cell2) => cell2.columnId === columnId + ); + if (!cell) + throw new CellNotFoundError({ + columnId + }); + const { id: cellId, markdown, rowId } = cell; + return { + id: cellId, + columnId, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(HeaderCell2, { + cellId, + rowId, + dateFormat, + currencyType, + verticalPadding, + horizontalPadding, + aspectRatio, + numColumns: columns.length, + columnId: cell.columnId, + resizingColumnId, + width, + shouldWrapOverflow, + markdown, + type, + sortDir, + onSortClick: handleColumnSortClick, + onWidthChange: handleColumnWidthChange, + onDeleteClick: handleColumnDeleteClick, + onTypeSelect: handleColumnTypeClick, + onDateFormatChange: handleDateFormatChange, + onWrapOverflowToggle: handleWrapContentToggle, + onNameChange: handleHeaderCellContentChange, + onCurrencyChange: handleCurrencyChange, + onVerticalPaddingClick: handleVerticalPaddingClick, + onHorizontalPaddingClick: handleHorizontalPaddingClick, + onAspectRatioClick: handleAspectRatioClick + }, columnId) + }; + }), + { + id: lastColumnId, + columnId: lastColumnId, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NewColumnButton, { + onClick: handleNewColumnClick + }) + } + ] + }; + }), + bodyRows: filteredBodyRows.map((row) => { + const { id: rowId, lastEditedTime, creationTime } = row; + return { + id: rowId, + cells: [ + { + id: firstColumnId, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(RowOptions, { + rowId, + onDeleteClick: handleRowDeleteClick + }) + }, + ...visibleColumns.map((column) => { + const { + id: columnId, + width, + type, + shouldWrapOverflow, + currencyType, + dateFormat, + tags, + verticalPadding, + horizontalPadding, + aspectRatio + } = column; + const cell = bodyCells.find( + (cell2) => cell2.columnId === columnId && cell2.rowId === row.id + ); + if (!cell) + throw new CellNotFoundError({ + columnId, + rowId + }); + const { + id: cellId, + markdown, + dateTime, + tagIds + } = cell; + return { + id: cellId, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(BodyCell5, { + cellId, + verticalPadding, + horizontalPadding, + aspectRatio, + rowId, + columnTags: tags, + cellTagIds: tagIds, + columnId, + rowCreationTime: creationTime, + dateFormat, + columnCurrencyType: currencyType, + rowLastEditedTime: lastEditedTime, + dateTime, + markdown, + columnType: type, + shouldWrapOverflow, + width, + onTagClick: handleTagCellAdd, + onTagRemoveClick: handleTagCellRemove, + onTagMultipleRemove: handleTagCellMultipleRemove, + onContentChange: handleBodyCellContentChange, + onTagColorChange: handleTagColorChange, + onTagDelete: handleTagDeleteClick, + onDateTimeChange: handleCellDateTimeChange, + onDateFormatChange: handleDateFormatChange, + onTagAdd: handleTagAdd + }, cellId) + }; + }), + { + id: lastColumnId, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) + } + ] + }; + }), + footerRows: footerRows.map((row, i2) => { + if (i2 === 0) { + return { + id: row.id, + cells: [ + { + id: firstColumnId, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) + }, + ...visibleColumns.map((column) => { + const { + id: columnId, + type, + currencyType, + dateFormat, + width, + tags, + functionType + } = column; + const cell = footerCells.find( + (cell2) => cell2.rowId === row.id && cell2.columnId === column.id + ); + if (!cell) + throw new CellNotFoundError({ + rowId: row.id, + columnId: column.id + }); + const { id: cellId } = cell; + const columnBodyCells = bodyCells.filter( + (cell2) => filteredBodyRows.find( + (row2) => row2.id === cell2.rowId + ) !== void 0 + ); + return { + id: cell.id, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__footer-td-container", + css: import_emotion_react_cjs.css` + width: ${width}; + `, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(FunctionCell, { + columnId, + columnTags: tags, + cellId, + currencyType, + dateFormat, + bodyCells: columnBodyCells, + bodyRows: filteredBodyRows, + functionType, + cellType: type, + onFunctionTypeChange: handleFunctionTypeChange + }) + }) + }; + }), + { + id: lastColumnId, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) + } + ] + }; + } + return { + id: row.id, + cells: [ + { + id: firstColumnId, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) + }, + ...visibleColumns.map((column, i3) => { + const cell = footerCells.find( + (cell2) => cell2.rowId === row.id && cell2.columnId === column.id + ); + if (!cell) + throw new CellNotFoundError({ + rowId: row.id, + columnId: column.id + }); + if (i3 === 0) { + return { + id: cell.id, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + style: { width: column.width }, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NewRowButton, { + onClick: handleNewRowClick + }) + }) + }; + } + return { + id: cell.id, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) + }; + }), + { + id: lastColumnId, + content: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(import_emotion_react_jsx_runtime_cjs.Fragment, {}) + } + ] + }; + }) + }) + ] + }); +}; +function AppWrapper({ store: store2, tableState, onSaveState }) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Provider_default, { + store: store2, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableStateProvider, { + initialState: tableState, + onSaveState, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MenuProvider, { + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(DragProvider, { + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(TableApp, {}) + }) + }) + }) + }); +} + +// src/obsidian-shim/build/notion-like-table.tsx +function NotionLikeTable({ + appId, + leaf, + isMarkdownView, + store: store2, + filePath, + tableState, + onSaveState +}) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(MountProvider, { + leaf, + appId, + isMarkdownView, + filePath, + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(AppWrapper, { + store: store2, + tableState, + onSaveState + }) + }); +} + +// src/shared/types/types-6.7.0.ts +var GeneralFunction2 = /* @__PURE__ */ ((GeneralFunction3) => { + GeneralFunction3["NONE"] = "none"; + GeneralFunction3["COUNT_ALL"] = "count_all"; + GeneralFunction3["COUNT_VALUES"] = "count_values"; + GeneralFunction3["COUNT_UNIQUE"] = "count_unique"; + GeneralFunction3["COUNT_EMPTY"] = "count_empty"; + GeneralFunction3["COUNT_NOT_EMPTY"] = "count_not_empty"; + GeneralFunction3["PERCENT_EMPTY"] = "percent_empty"; + GeneralFunction3["PERCENT_NOT_EMPTY"] = "percent_not_empty"; + return GeneralFunction3; +})(GeneralFunction2 || {}); +var GeneralFunction670 = GeneralFunction2; + +// src/shared/types/types-6.1.0.ts +var CurrencyType8 = /* @__PURE__ */ ((CurrencyType9) => { + CurrencyType9["UNITED_STATES"] = "USD"; + CurrencyType9["CANADA"] = "CAD"; + CurrencyType9["SINGAPORE"] = "SGB"; + CurrencyType9["EUROPE"] = "EUR"; + CurrencyType9["POUND"] = "GBP"; + CurrencyType9["RUSSIA"] = "RUB"; + CurrencyType9["AUSTRALIA"] = "AUD"; + CurrencyType9["JAPAN"] = "JPY"; + CurrencyType9["INDIA"] = "INR"; + CurrencyType9["CHINA"] = "CNY"; + CurrencyType9["BRAZIL"] = "BRL"; + CurrencyType9["COLOMBIA"] = "COP"; + CurrencyType9["MEXICO"] = "MXN"; + CurrencyType9["ARGENTINA"] = "ARS"; + return CurrencyType9; +})(CurrencyType8 || {}); +var CurrencyType610 = CurrencyType8; + +// src/shared/types/types-6.2.0.ts +var DateFormat8 = /* @__PURE__ */ ((DateFormat9) => { + DateFormat9["MM_DD_YYYY"] = "mm/dd/yyyy"; + DateFormat9["DD_MM_YYYY"] = "dd/mm/yyyy"; + DateFormat9["YYYY_MM_DD"] = "yyyy/mm/dd"; + DateFormat9["FULL"] = "full"; + DateFormat9["RELATIVE"] = "relative"; + return DateFormat9; +})(DateFormat8 || {}); +var DateFormat620 = DateFormat8; + +// src/shared/versioning.ts +var legacyVersionToString = (version) => { + return version.toString().split("").join("."); +}; +var isVersionLessThan = (oldVersion, newVersion) => { + const oldVersionArray = oldVersion.split("."); + const newVersionArray = newVersion.split("."); + for (let i2 = 0; i2 < oldVersionArray.length; i2++) { + const oldVersionNumber = parseInt(oldVersionArray[i2]); + const newVersionNumber = parseInt(newVersionArray[i2]); + if (oldVersionNumber < newVersionNumber) { + return true; + } + if (oldVersionNumber > newVersionNumber) { + return false; + } + } + return false; +}; + +// src/data/serialize-table-state.ts +var serializeTableState = (tableState) => { + return JSON.stringify(tableState, null, 2); +}; +var deserializeTableState = (data) => { + const parsedState = JSON.parse(data); + const untypedVersion = parsedState["pluginVersion"]; + let pluginVersion = ""; + if (typeof untypedVersion === "number") { + pluginVersion = legacyVersionToString(untypedVersion); + } else if (typeof untypedVersion === "string") { + pluginVersion = untypedVersion; + } + let currentState = parsedState; + if (isVersionLessThan(pluginVersion, "6.1.0")) { + const tableState2 = currentState; + const { columns } = tableState2.model; + columns.forEach((column) => { + const typedColumn = column; + typedColumn.currencyType = CurrencyType610.UNITED_STATES; + }); + } + if (isVersionLessThan(pluginVersion, "6.2.0")) { + const tableState2 = currentState; + const { columns } = tableState2.model; + columns.forEach((column) => { + const typedColumn = column; + typedColumn.dateFormat = DateFormat620.YYYY_MM_DD; + }); + } + if (isVersionLessThan(pluginVersion, "6.3.0")) { + const tableState2 = currentState; + const { columns, rows, cells } = tableState2.model; + columns.forEach((column) => { + const typedColumn = column; + if (typedColumn["hasAutoWidth"]) { + delete typedColumn.hasAutoWidth; + } + }); + rows.forEach((row, i2) => { + const typedRow = row; + typedRow.index = i2; + }); + columns.forEach((column) => { + const typedColumn = column; + typedColumn.isVisible = true; + }); + cells.forEach((cell) => { + const typedCell = cell; + typedCell.dateTime = null; + }); + } + if (isVersionLessThan(pluginVersion, "6.4.0")) { + const tableState2 = parsedState; + const { columns, tags, rows, cells } = tableState2.model; + const newState = __spreadProps(__spreadValues({}, tableState2), { + model: { + columns: [], + headerRows: [], + bodyRows: [], + footerRows: [], + headerCells: [], + bodyCells: [], + footerCells: [], + tags: [] + } + }); + newState.model.headerRows = []; + newState.model.headerRows.push(createHeaderRow()); + newState.model.bodyRows = rows.filter((_row, i2) => i2 !== 0).map((row) => { + return { + id: row.id, + index: row.index - 1, + creationTime: row.creationTime, + lastEditedTime: row.lastEditedTime, + menuCellId: row.menuCellId + }; + }); + newState.model.footerRows = []; + newState.model.footerRows.push(createFooterRow()); + newState.model.footerRows.push(createFooterRow()); + newState.model.columns = columns.map((column) => { + return { + id: column.id, + sortDir: column.sortDir, + width: column.width, + type: column.type, + isVisible: column.isVisible, + dateFormat: column.dateFormat, + currencyType: column.currencyType, + shouldWrapOverflow: column.shouldWrapOverflow + }; + }); + newState.model.headerCells = cells.filter((cell) => cell.isHeader).map((cell) => { + return { + id: cell.id, + columnId: cell.columnId, + rowId: newState.model.headerRows[0].id, + markdown: cell.markdown + }; + }); + newState.model.bodyCells = cells.filter((cell) => !cell.isHeader).map((cell) => { + return { + id: cell.id, + columnId: cell.columnId, + rowId: cell.rowId, + dateTime: cell.dateTime, + markdown: cell.markdown + }; + }); + for (let i2 = 0; i2 < 2; i2++) { + columns.forEach((column) => { + newState.model.footerCells.push({ + id: v4_default(), + columnId: column.id, + rowId: newState.model.footerRows[i2].id, + functionType: GeneralFunction670.NONE + }); + }); + } + newState.model.tags = tags; + currentState = newState; + } + if (isVersionLessThan(pluginVersion, "6.8.0")) { + const tableState2 = currentState; + const { model } = tableState2; + const { bodyCells, columns } = model; + const invalidState = currentState; + if (invalidState["bodyRows"]) { + delete invalidState.bodyRows; + } + const unknownModel = model; + const typedModal = unknownModel; + typedModal.filterRules = []; + bodyCells.forEach((cell) => { + const column = columns.find( + (column2) => column2.id === cell.columnId + ); + if (!column) + throw new ColumNotFoundError(cell.columnId); + if (column.type === "checkbox" /* CHECKBOX */) { + if (cell.markdown === "") { + cell.markdown = CHECKBOX_MARKDOWN_UNCHECKED; + } + } + }); + } + if (isVersionLessThan(pluginVersion, "6.9.1")) { + const tableState2 = currentState; + const { footerCells } = tableState2.model; + footerCells.forEach((cell) => { + const typedCell = cell; + if (typedCell["functionType"]) { + typedCell.functionType = typedCell.functionType.replace(/_/g, "-"); + } + }); + } + if (isVersionLessThan(pluginVersion, "6.10.0")) { + const tableState2 = currentState; + const { columns, tags, bodyCells, bodyRows } = tableState2.model; + columns.forEach((column) => { + const typedColumn = column; + typedColumn.tags = []; + }); + bodyCells.forEach((cell) => { + const typedCell = cell; + typedCell.tagIds = []; + }); + tags.forEach((tag) => { + const { id: id2, columnId, markdown, color } = tag; + const column = columns.find( + (column2) => column2.id === columnId + ); + if (!column) + throw new ColumNotFoundError(columnId); + const typedColumn = column; + typedColumn.tags.push({ + id: id2, + markdown, + color + }); + tag.cellIds.forEach((cellId) => { + const cell = bodyCells.find( + (cell2) => cell2.id === cellId + ); + if (!cell) + return; + const typedCell = cell; + typedCell.tagIds.push(id2); + }); + }); + const unknownModel = tableState2.model; + const typedModel = unknownModel; + delete typedModel.tags; + bodyRows.forEach((row) => { + const typedRow = row; + if (typedRow["menuCellId"]) { + delete typedRow.menuCellId; + } + }); + } + if (isVersionLessThan(pluginVersion, "6.12.3")) { + const tableState2 = currentState; + const { columns, footerCells } = tableState2.model; + footerCells.forEach((cell) => { + const column = columns.find( + (column2) => column2.id === cell.columnId + ); + if (!column) + throw new ColumNotFoundError(cell.columnId); + const unknownColumn = column; + const typedColumn = unknownColumn; + typedColumn.functionType = cell.functionType; + const unknownCell = cell; + const typedCell = unknownCell; + if (typedCell["functionType"]) { + delete typedCell.functionType; + } + }); + } + if (isVersionLessThan(pluginVersion, "6.17.0")) { + const tableState2 = currentState; + const { columns } = tableState2.model; + columns.forEach((column) => { + const typedColumn = column; + typedColumn.isLocked = false; + typedColumn.aspectRatio = "16/9" /* SIXTEEN_BY_NINE */; + typedColumn.horizontalPadding = "unset"; + typedColumn.verticalPadding = "unset"; + }); + } + if (isVersionLessThan(pluginVersion, "6.18.6")) { + const tableState2 = currentState; + const { columns, bodyRows } = tableState2.model; + columns.forEach((column) => { + const typedColumn = column; + typedColumn.sortDir = "default" /* NONE */; + }); + bodyRows.sort((a2, b2) => a2.index - b2.index); + bodyRows.forEach((row, i2) => { + const typedRow = row; + typedRow.index = i2; + }); + } + const tableState = currentState; + tableState.pluginVersion = CURRENT_PLUGIN_VERSION; + return tableState; +}; + +// src/obsidian/nlt-export-modal.tsx +var import_obsidian9 = require("obsidian"); +var import_client = __toESM(require_client()); + +// src/react/export-app/index.tsx +var import_react100 = __toESM(require_react()); + +// src/react/export-app/export-type-select.tsx +function ExportTypeSelect({ value, onChange }) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + isVertical: true, + spacing: "xl", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("label", { + htmlFor: "type-select", + children: "File Type" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("select", { + id: "type-select", + css: import_emotion_react_cjs.css` + background-color: var( + --background-secondary-alt + ) !important; + `, + value, + onChange: (e) => onChange(e.target.value), + children: Object.values(ExportType).map((type) => /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("option", { + value: type, + children: type + }, type)) + }) + ] + }); +} + +// src/react/export-app/content-textarea.tsx +function ContentTextArea({ value }) { + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("textarea", { + readOnly: true, + css: import_emotion_react_cjs.css` + width: 100%; + height: 200px; + resize: vertical; + `, + value + }); +} + +// src/react/export-app/index.tsx +var import_obsidian8 = require("obsidian"); +function ExportApp({ tableState, filePath }) { + const [exportType, setExportType] = import_react100.default.useState( + "Select an option" /* UNSELECTED */ + ); + const { exportRenderMarkdown } = useAppSelector((state) => state.global); + const [renderMarkdown2, setRenderMarkdown] = import_react100.default.useState(exportRenderMarkdown); + function handleCopyClick(value) { + return __async(this, null, function* () { + yield navigator.clipboard.writeText(value); + new import_obsidian8.Notice("Copied to clipboard"); + }); + } + function handleDownloadClick() { + const fileName = getExportFileName(filePath); + const blobType = getBlobTypeForExportType(exportType); + downloadFile(fileName, blobType, content); + } + let content = ""; + if (exportType === "Markdown" /* MARKDOWN */) { + content = exportToMarkdown(tableState, renderMarkdown2); + } else if (exportType === "CSV" /* CSV */) { + content = exportToCSV(tableState, renderMarkdown2); + } + return /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("div", { + className: "NLT__export-app", + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Padding, { + p: "xl", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("h5", { + css: import_emotion_react_cjs.css` + margin-top: 0px; + margin-bottom: 0px; + `, + children: "Notion-Like Tables Export" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("hr", { + css: import_emotion_react_cjs.css` + margin: 1rem 0; + ` + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + spacing: "xl", + isVertical: true, + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ExportTypeSelect, { + value: exportType, + onChange: setExportType + }), + exportType !== "Select an option" /* UNSELECTED */ && /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(import_emotion_react_jsx_runtime_cjs.Fragment, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ContentTextArea, { + value: content + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + isVertical: true, + spacing: "sm", + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("label", { + htmlFor: "render-markdown", + children: "Render markdown" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("input", { + id: "render-markdown", + type: "checkbox", + checked: renderMarkdown2, + onChange: () => setRenderMarkdown(!renderMarkdown2) + }) + ] + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsxs)(Stack, { + children: [ + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("button", { + className: "mod-cta", + onClick: handleDownloadClick, + children: "Download" + }), + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)("button", { + css: import_emotion_react_cjs.css` + background-color: var( + --background-secondary-alt + ) !important; + `, + onClick: () => handleCopyClick(content), + children: "Copy to clipboard" + }) + ] + }) + ] + }) + ] + }) + ] + }) + }); +} + +// src/obsidian/nlt-export-modal.tsx +var NLTExportModal = class extends import_obsidian9.Modal { + constructor(app2, filePath) { + super(app2); + __publicField(this, "root"); + __publicField(this, "filePath"); + this.app = app2; + this.filePath = filePath; + } + onOpen() { + const container = this.containerEl.children[1]; + const view = app.workspace.getActiveViewOfType(NLTView); + if (view) { + const data = view.getViewData(); + const state = deserializeTableState(data); + this.root = (0, import_client.createRoot)(container); this.root.render( - /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Provider_default, { + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(Provider_default, { store, - children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(App2, { - plugin: this.plugin, - tableId: this.tableId, - viewMode: this.viewMode + children: /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(ExportApp, { + tableState: state, + filePath: this.filePath }) }) ); - this.el.children[0].replaceWith(rootEl); - }); - } - onunload() { - return __async(this, null, function* () { - this.root.unmount(); - }); - } -}; - -// src/services/menu/utils.tsx -var isMenuId = (id) => { - return id.includes(MENU_PREFIX); -}; - -// src/MigrationModal.ts -var import_obsidian5 = require("obsidian"); -var MigrationModal = class extends import_obsidian5.Modal { - constructor(plugin) { - super(plugin.app); - this.plugin = plugin; - this.markdown = ""; - } - generateCodeblock() { - return __async(this, null, function* () { - const tableId = randomTableId(); - const codeblock = generateNLTCodeBlock(tableId); - const table = parseTableFromMarkdown(this.markdown); - if (table.numColumns < 1 || table.numRows < 1) { - return null; - } - const { file } = yield findTableFile(this.plugin, tableId); - const model = parseTableModelFromParsedTable(table); - yield serializeTableModel(this.plugin, file, model); - return codeblock; - }); - } - onOpen() { - const { contentEl, titleEl } = this; - titleEl.createDiv({ text: "Notion-Like Tables Migration Tool" }); - contentEl.createDiv({ text: "Markdown" }); - const subtitle = contentEl.createDiv({ - text: "Place previous table markdown here" - }); - subtitle.style.fontSize = "12px"; - const markdownEl = contentEl.createEl("textarea"); - markdownEl.style.width = "100%"; - markdownEl.style.height = "200px"; - markdownEl.style.marginBottom = "10px"; - markdownEl.addEventListener("input", () => { - this.markdown = markdownEl.value; - }); - this.errorEl = contentEl.createDiv({ text: "" }); - this.errorEl.style.fontSize = "12px"; - this.errorEl.style.color = "var(--text-error)"; - const generateEl = contentEl.createEl("button", { - text: "Generate code block" - }); - generateEl.className = "mod-cta"; - generateEl.addEventListener("click", () => __async(this, null, function* () { - const codeblock = yield this.generateCodeblock(); - if (codeblock) { - this.errorEl.setText(""); - this.codeblockEl.setText(codeblock); - } else { - this.errorEl.setText("Invalid table markdown"); - } - })); - contentEl.createEl("hr"); - contentEl.createDiv({ text: "Generated NLT codeblock" }); - this.codeblockEl = contentEl.createEl("textarea"); - this.codeblockEl.style.width = "100%"; - this.codeblockEl.style.height = "100px"; - this.codeblockEl.style.marginBottom = "10px"; - this.codeblockEl.setAttr("readonly", "true"); - const copyEl = contentEl.createEl("button", { text: "Copy" }); - copyEl.addEventListener("click", () => __async(this, null, function* () { - yield navigator.clipboard.writeText(this.codeblockEl.getText()); - new import_obsidian5.Notice("Copied code block to clipboard"); - })); + } } onClose() { - let { contentEl } = this; - contentEl.empty(); + if (this.root) + this.root.unmount(); } }; +// src/obsidian/nlt-view.tsx +var NOTION_LIKE_TABLES_VIEW = "notion-like-tables"; +var NLTView = class extends import_obsidian10.TextFileView { + constructor(leaf) { + super(leaf); + __publicField(this, "root"); + __publicField(this, "appId"); + __publicField(this, "data"); + __publicField(this, "handleRefreshEvent", (filePath, sourceAppId, state) => { + if (this.appId !== sourceAppId && filePath === this.file.path) { + const serialized = serializeTableState(state); + this.setViewData(serialized, true); + } + }); + __publicField(this, "handleSaveTableState", (appId, state) => { + const serialized = serializeTableState(state); + this.data = serialized; + this.requestSave(); + this.app.workspace.trigger( + EVENT_REFRESH_TABLES, + this.file.path, + appId, + state + ); + }); + this.root = null; + this.data = ""; + this.appId = v4_default(); + } + onOpen() { + return __async(this, null, function* () { + this.containerEl.style.paddingBottom = "48px"; + const container = this.containerEl.children[1]; + this.root = (0, import_client2.createRoot)(container); + this.addAction("settings", "Settings", () => { + this.app.setting.open(); + this.app.setting.openTabById("notion-like-tables"); + }); + this.addAction("download", "Export", () => { + new NLTExportModal(this.app, this.file.path).open(); + }); + this.app.workspace.on( + EVENT_REFRESH_TABLES, + this.handleRefreshEvent + ); + }); + } + onClose() { + return __async(this, null, function* () { + this.app.workspace.off(EVENT_REFRESH_TABLES, this.handleRefreshEvent); + if (this.root) { + this.root.unmount(); + this.root = null; + } + }); + } + setViewData(data, clear) { + this.data = data; + const state = deserializeTableState(data); + if (clear) { + setTimeout(() => { + if (this.root) { + this.root.unmount(); + const container = this.containerEl.children[1]; + this.root = (0, import_client2.createRoot)(container); + this.renderApp(this.appId, state); + } + }, 0); + } else { + this.renderApp(this.appId, state); + } + } + clear() { + this.data = "{}"; + } + getViewData() { + return this.data; + } + getViewType() { + return NOTION_LIKE_TABLES_VIEW; + } + getDisplayText() { + var _a; + const fileName = (_a = this.file) == null ? void 0 : _a.name; + if (fileName) { + const extensionIndex = fileName.lastIndexOf("."); + return fileName.substring(0, extensionIndex); + } + return ""; + } + renderApp(appId, state) { + if (this.root) { + this.root.render( + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NotionLikeTable, { + leaf: this.leaf, + appId, + filePath: this.file.path, + isMarkdownView: false, + store, + tableState: state, + onSaveState: this.handleSaveTableState + }) + ); + } + } +}; + +// src/data/table-file.ts +var import_obsidian11 = require("obsidian"); +var import_obsidian12 = require("obsidian"); + +// src/data/utils.ts +var splitFileExtension = (filePath) => { + if (filePath.match(EXTENSION_REGEX)) { + const periodIndex = filePath.lastIndexOf("."); + return [ + filePath.substring(0, periodIndex), + filePath.substring(periodIndex) + ]; + } + return null; +}; +var updateLinkReferences = (markdown, updatedFileInfo, oldPath, isFileNameUnique) => { + return markdown.replace(WIKI_LINK_REGEX, (match, path) => { + let comparePath = oldPath; + if (!path.includes("/")) + comparePath = stripDirectory(comparePath); + if (!path.match(EXTENSION_REGEX)) + comparePath = stripFileExtension(comparePath); + if (comparePath === path) { + const linkText = getWikiLinkText(updatedFileInfo, isFileNameUnique); + return `[[${linkText}]]`; + } + return match; + }); +}; + +// src/data/file-operations.ts +var createFolder = (folderPath) => __async(void 0, null, function* () { + return yield app.vault.createFolder(folderPath); +}); +var createFile = (filePath, data, numExisting = 0) => __async(void 0, null, function* () { + try { + const filePathExtension = splitFileExtension(filePath); + if (filePathExtension == null) + throw new SyntaxError("File must include an extension"); + const numIterations = numExisting > 0 ? " " + numExisting : ""; + const filePathWithIteration = filePathExtension[0] + numIterations + filePathExtension[1]; + yield app.vault.create(filePathWithIteration, data); + return filePathWithIteration; + } catch (err) { + const error = err; + if (error.message.includes("File already exists")) { + return createFile(filePath, data, numExisting + 1); + } else { + throw err; + } + } +}); + +// src/data/table-file.ts +var getActiveFileNameAndTimestamp = () => { + const activeView = app.workspace.getActiveViewOfType(import_obsidian11.MarkdownView); + if (!activeView) + return null; + const file = activeView.file; + if (!file) + return null; + return `${file.basename}-${(0, import_obsidian12.moment)().format().replaceAll(":", ".")}`; +}; +var getFileName = (useActiveFileNameAndTimestamp) => { + let fileName = DEFAULT_TABLE_NAME; + if (useActiveFileNameAndTimestamp) { + const name = getActiveFileNameAndTimestamp(); + if (name) + fileName = name; + } + return `${fileName}.${TABLE_EXTENSION}`; +}; +var getFilePath = (folderPath, fileName) => { + if (folderPath === "") + return fileName; + return folderPath + "/" + fileName; +}; +var createTableFile = (options) => __async(void 0, null, function* () { + try { + if (options.folderPath !== "") { + if (app.vault.getAbstractFileByPath(options.folderPath) == null) + yield createFolder(options.folderPath); + } + const fileName = getFileName(options.useActiveFileNameAndTimestamp); + const tableState = createTableState(1, 1); + const serialized = serializeTableState(tableState); + const filePath = getFilePath(options.folderPath, fileName); + return yield createFile(filePath, serialized); + } catch (err) { + new import_obsidian11.Notice("Could not create Notion-Like table"); + throw err; + } +}); + +// src/obsidian/nlt-embedded-plugin.tsx +var import_view = require("@codemirror/view"); +var import_obsidian13 = require("obsidian"); +var import_client3 = __toESM(require_client()); +var import_lodash = __toESM(require_lodash()); + +// src/obsidian/utils.ts +var getEmbeddedTableLinkEls = (el) => { + const embeddedLinkEls = el.querySelectorAll(".internal-embed"); + const tableLinkEls = []; + for (let i2 = 0; i2 < embeddedLinkEls.length; i2++) { + const linkEl = embeddedLinkEls[i2]; + const src = linkEl.getAttribute("src"); + if (src == null ? void 0 : src.endsWith(TABLE_EXTENSION)) + tableLinkEls.push(linkEl); + } + return tableLinkEls; +}; +var removeEmbeddedLinkChildren = (embeddedLinkEl) => { + if (embeddedLinkEl.children.length > 0) { + const firstChildEl = embeddedLinkEl.children[0]; + if (firstChildEl.classList.contains("NLT__embedded-container")) + return; + for (let i2 = 0; i2 < embeddedLinkEl.children.length; i2++) { + embeddedLinkEl.removeChild(embeddedLinkEl.children[i2]); + } + } +}; +var findEmbeddedTableFile = (embeddedLinkEl) => { + var _a; + const src = embeddedLinkEl.getAttribute("src"); + const tableFile = app.vault.getFiles().find((file) => file.path === src); + if (tableFile === void 0) + return (_a = app.vault.getFiles().find((file) => file.name === src)) != null ? _a : null; + return tableFile != null ? tableFile : null; +}; +var getEmbeddedTableWidth = (embeddedLinkEl) => { + const width = embeddedLinkEl.getAttribute("width"); + if (width === null || width === "1") + return "100%"; + return numToPx(width); +}; +var getEmbeddedTableHeight = (embeddedLinkEl) => { + const height = embeddedLinkEl.getAttribute("height"); + if (height === null || height === "1") + return "340px"; + return numToPx(height); +}; + +// src/obsidian/nlt-embedded-plugin.tsx +var NLTEmbeddedPlugin = class { + constructor() { + __publicField(this, "tableApps"); + __publicField(this, "handleRefreshEvent", (filePath, sourceAppId, state) => { + const app2 = this.tableApps.find( + (app3) => app3.id !== sourceAppId && app3.file.path === filePath + ); + if (!app2) + return; + const { id: id2, parentEl, leaf, file } = app2; + if (!app2.root) + return; + setTimeout(() => { + var _a; + (_a = app2.root) == null ? void 0 : _a.unmount(); + app2.root = (0, import_client3.createRoot)(parentEl); + this.renderApp(id2, leaf, file, app2.root, state); + }, 0); + }); + this.tableApps = []; + this.setupEventListeners(); + } + update() { + const activeView = app.workspace.getActiveViewOfType(import_obsidian13.MarkdownView); + if (!activeView) + return; + const embeddedTableLinkEls = getEmbeddedTableLinkEls( + activeView.containerEl + ); + for (let i2 = 0; i2 < embeddedTableLinkEls.length; i2++) { + const linkEl = embeddedTableLinkEls[i2]; + removeEmbeddedLinkChildren(linkEl); + const file = findEmbeddedTableFile(linkEl); + if (!file) + return; + const width = getEmbeddedTableWidth(linkEl); + const height = getEmbeddedTableHeight(linkEl); + linkEl.style.width = width; + linkEl.style.height = height; + if (this.tableApps.find((app2) => app2.file.path === file.path)) + return; + linkEl.style.backgroundColor = "var(--color-primary)"; + linkEl.style.cursor = "unset"; + linkEl.style.margin = "0px"; + linkEl.style.padding = "0px"; + const tableContainerEl = linkEl.createDiv(); + tableContainerEl.className = "NLT__embedded-container"; + tableContainerEl.style.height = "100%"; + tableContainerEl.style.width = "100%"; + const appId = v4_default(); + this.tableApps.push({ + id: appId, + leaf: activeView.leaf, + parentEl: tableContainerEl, + file + }); + this.setupTable(activeView, tableContainerEl, file, appId); + } + } + setupTable(activeView, tableContainerEl, file, appId) { + return __async(this, null, function* () { + tableContainerEl.addEventListener("click", (e) => { + e.stopPropagation(); + }); + const data = yield app.vault.read(file); + const tableState = deserializeTableState(data); + const table = this.tableApps.find((app2) => app2.id === appId); + if (!table) + return; + table.root = (0, import_client3.createRoot)(tableContainerEl); + this.renderApp(appId, activeView.leaf, file, table.root, tableState); + }); + } + handleSave(tableFile, appId, state) { + return __async(this, null, function* () { + const serialized = serializeTableState(state); + yield app.vault.modify(tableFile, serialized); + app.workspace.trigger( + EVENT_REFRESH_TABLES, + tableFile.path, + appId, + state + ); + }); + } + renderApp(id2, leaf, tableFile, root, tableState) { + const throttleHandleSave = import_lodash.default.throttle(this.handleSave, 2e3); + root.render( + /* @__PURE__ */ (0, import_emotion_react_jsx_runtime_cjs.jsx)(NotionLikeTable, { + appId: id2, + isMarkdownView: true, + filePath: tableFile.path, + leaf, + store, + tableState, + onSaveState: (appId, state) => throttleHandleSave(tableFile, appId, state) + }) + ); + } + setupEventListeners() { + app.workspace.on(EVENT_REFRESH_TABLES, this.handleRefreshEvent); + } + destroy() { + this.tableApps.forEach((app2) => { + var _a; + return (_a = app2.root) == null ? void 0 : _a.unmount(); + }); + this.tableApps = []; + app.workspace.off(EVENT_REFRESH_TABLES, this.handleRefreshEvent); + } +}; +var nltEmbeddedPlugin = import_view.ViewPlugin.fromClass(NLTEmbeddedPlugin); + // src/main.ts var DEFAULT_SETTINGS = { - data: {}, - tableFolder: "_notion-like-tables", - viewModeSync: { - eventType: "update-state", - tableId: null, - viewModes: [] - }, - shouldClear: true, - shouldDebug: false + shouldDebug: false, + createAtObsidianAttachmentFolder: false, + customFolderForNewTables: "", + nameWithActiveFileNameAndTimestamp: false, + exportRenderMarkdown: true }; -var NltPlugin = class extends import_obsidian6.Plugin { +var NLTPlugin = class extends import_obsidian14.Plugin { constructor() { super(...arguments); - this.focusedTableId = null; - this.getViewMode = (el) => { - const parent = el.parentElement; - if (parent) { - return parent.className.includes("cm-preview-code-block") ? "source" : "preview"; - } - return null; - }; - this.hasDarkTheme = () => { - const el = document.querySelector("body"); - return el.className.includes("theme-dark"); - }; - this.focusTable = (tableId) => { - this.focusedTableId = tableId; - }; - this.blurTable = () => { - this.focusedTableId = null; - }; - } - isLivePreviewEnabled() { - var _a; - return (_a = this.app.vault.config) == null ? void 0 : _a.livePreview; + __publicField(this, "settings"); } onload() { return __async(this, null, function* () { yield this.loadSettings(); - yield this.forcePostProcessorReload(); - this.registerMarkdownCodeBlockProcessor( - "notion-like-tables", - (source, el, ctx) => { - const text = source.trim(); - const tableId = text.match(TABLE_ID_REGEX) ? text : null; - if (tableId) { - const viewMode = this.getViewMode(el); - if (viewMode) { - ctx.addChild(new NltTable(el, this, tableId, viewMode)); - } - } - } - ); - this.addSettingTab(new NltSettingsTab(this.app, this)); + this.registerView(NOTION_LIKE_TABLES_VIEW, (leaf) => new NLTView(leaf)); + this.registerExtensions([TABLE_EXTENSION], NOTION_LIKE_TABLES_VIEW); + this.addRibbonIcon("table", "Create Notion-Like table", () => __async(this, null, function* () { + yield this.newTableFile(null); + })); + this.addSettingTab(new NLTSettingsTab(this.app, this)); + this.registerEmbeddedView(); this.registerCommands(); this.registerEvents(); - this.app.workspace.onLayoutReady(() => { - this.checkForDarkMode(); - this.checkForDebug(); + this.registerDOMEvents(); + }); + } + registerEmbeddedView() { + this.registerEditorExtension(nltEmbeddedPlugin); + } + newTableFile(contextMenuFolderPath, embedded) { + return __async(this, null, function* () { + let folderPath = ""; + if (contextMenuFolderPath) { + folderPath = contextMenuFolderPath; + } else if (this.settings.createAtObsidianAttachmentFolder) { + folderPath = this.app.vault.getConfig( + "attachmentFolderPath" + ); + } else { + folderPath = this.settings.customFolderForNewTables; + } + const filePath = yield createTableFile({ + folderPath, + useActiveFileNameAndTimestamp: this.settings.nameWithActiveFileNameAndTimestamp + }); + if (embedded) + return filePath; + yield app.workspace.getLeaf(true).setViewState({ + type: NOTION_LIKE_TABLES_VIEW, + active: true, + state: { file: filePath } }); }); } - checkForDebug() { - store.dispatch(setDebugMode(this.settings.shouldDebug)); - } - checkForDarkMode() { - store.dispatch(setDarkMode(this.hasDarkTheme())); + registerDOMEvents() { + this.registerDomEvent(document, "click", () => { + if (this.settings.shouldDebug) + console.log("main handleClick"); + removeFocusVisibleClass(); + this.app.workspace.trigger(EVENT_OUTSIDE_CLICK); + }); + this.registerDomEvent(document, "keydown", (e) => { + if (this.settings.shouldDebug) + console.log("main handleKeyDown"); + this.app.workspace.trigger(EVENT_OUTSIDE_KEYDOWN, e); + }); } registerEvents() { - this.registerEvent( - this.app.workspace.on("file-open", () => { - this.blurTable(); - const livePreviewScroller = document.querySelector(".cm-scroller"); - const readingModeScroller = document.querySelector( - ".markdown-preview-view" - ); - if (livePreviewScroller) { - livePreviewScroller.addEventListener("scroll", () => { - store.dispatch(updateMenuPosition()); - }); - } - if (readingModeScroller) { - readingModeScroller.addEventListener("scroll", () => { - store.dispatch(updateMenuPosition()); - }); - } - }) - ); - this.registerEvent( - this.app.workspace.on("resize", () => { - store.dispatch(updateMenuPosition()); - }) - ); this.registerEvent( this.app.workspace.on("css-change", () => { - this.checkForDarkMode(); + const isDark = hasDarkTheme(); + store.dispatch(setDarkMode(isDark)); }) ); - this.registerDomEvent(activeDocument, "keydown", (e) => __async(this, null, function* () { - if (e.key === "Enter" || e.key === "Escape") { - if (this.focusedTableId) { - const topLevelMenu = getTopLevelMenu(store.getState()); - if (topLevelMenu && topLevelMenu.sortRowsOnClose) { - updateSortTime(this, this.focusedTableId); - } - store.dispatch(closeTopLevelMenu()); + this.registerEvent( + this.app.workspace.on("file-menu", (menu, file) => { + if (file instanceof import_obsidian14.TFolder) { + menu.addItem((item) => { + item.setTitle("New Notion-Like table").setIcon("document").onClick(() => __async(this, null, function* () { + yield this.newTableFile(file.path); + })); + }); } - } - })); - this.registerDomEvent(activeDocument, "click", (el) => { - const topLevelMenu = getTopLevelMenu(store.getState()); - const time = timeSinceMenuOpen(store.getState()); - if (topLevelMenu !== null && time > 100) { - for (let i2 = 0; i2 < el.path.length; i2++) { - const element = el.path[i2]; - if (element instanceof HTMLElement) { - const { id } = element; - if (id === topLevelMenu.id) - break; - if (isMenuId(id) || element.className.includes("NLT__app")) { - store.dispatch(closeTopLevelMenu()); - if (this.focusedTableId && topLevelMenu.sortRowsOnClose) - updateSortTime(this, this.focusedTableId); - break; - } - if (element.className.includes("view-content")) { - store.dispatch(closeAllMenus()); - if (this.focusedTableId && topLevelMenu.sortRowsOnClose) - updateSortTime(this, this.focusedTableId); - break; + }) + ); + this.app.vault.on( + "rename", + (file, oldPath) => __async(this, null, function* () { + if (file instanceof import_obsidian14.TFile) { + const files = this.app.vault.getFiles(); + const uniqueFileNames = filterUniqueStrings( + files.map((file2) => file2.name) + ); + const isUniqueFileName = uniqueFileNames.includes( + file.name + ); + const tableFiles = files.filter( + (file2) => file2.extension === TABLE_EXTENSION + ); + for (let i2 = 0; i2 < tableFiles.length; i2++) { + const tableFile = tableFiles[i2]; + const content = yield tableFile.vault.read( + tableFiles[i2] + ); + const deserializedState = deserializeTableState(content); + const newState = structuredClone(deserializedState); + newState.model.bodyCells.forEach((cell) => { + const updatedMarkdown = updateLinkReferences( + cell.markdown, + file, + oldPath, + isUniqueFileName + ); + cell.markdown = updatedMarkdown; + }); + if (JSON.stringify(deserializedState) !== JSON.stringify(newState)) { + const serializedState = serializeTableState(newState); + yield tableFile.vault.modify( + tableFile, + serializedState + ); + app.workspace.trigger( + EVENT_REFRESH_TABLES, + tableFile.path, + -1, + newState + ); } } } - } else { - for (let i2 = 0; i2 < el.path.length; i2++) { - const element = el.path[i2]; - if (element instanceof HTMLElement) { - if (element.className.includes("NLT__app")) { - const id = element.getAttribute("data-id"); - this.focusTable(id); - break; - } - if (element.className.includes("view-content")) { - this.blurTable(); - break; - } - } - } - } + }) + ); + this.app.workspace.onLayoutReady(() => { + const isDark = hasDarkTheme(); + store.dispatch(setDarkMode(isDark)); + store.dispatch(setDebugMode(this.settings.shouldDebug)); }); } registerCommands() { this.addCommand({ - id: "nlt-migration-tool", - name: "Migration tool", - hotkeys: [{ modifiers: ["Mod", "Shift"], key: "m" }], + id: "nlt-create-table", + name: "Create table", + hotkeys: [{ modifiers: ["Mod", "Shift"], key: "=" }], callback: () => __async(this, null, function* () { - new MigrationModal(this).open(); + yield this.newTableFile(null); }) }); this.addCommand({ - id: "nlt-add-table", - name: "Add table", - hotkeys: [{ modifiers: ["Mod", "Shift"], key: "=" }], - editorCallback: (editor) => { - editor.replaceSelection(generateNLTCodeBlock()); - } + id: "nlt-create-table-and-embed", + name: "Create table and embed it into current file", + hotkeys: [{ modifiers: ["Mod", "Shift"], key: "+" }], + editorCallback: (editor) => __async(this, null, function* () { + const filePath = yield this.newTableFile(null, true); + if (!filePath) + return; + const useMarkdownLinks = this.app.vault.getConfig( + "useMarkdownLinks" + ); + const linkText = useMarkdownLinks ? `![${getBasename(filePath)}](${encodeURI(filePath)})` : `![[${filePath}]]`; + editor.replaceRange(linkText, editor.getCursor()); + editor.setCursor( + editor.getCursor().line, + editor.getCursor().ch + linkText.length + ); + }) }); this.addCommand({ id: "nlt-add-column", - name: "Add column to focused table", + name: "Add column", hotkeys: [{ modifiers: ["Mod", "Shift"], key: "\\" }], - callback: () => __async(this, null, function* () { - if (this.focusedTableId) { - const tableId = this.focusedTableId; - const prevState = this.settings.data[tableId]; - const [updatedModel, updatedSettings] = addColumn(prevState); - const newState = __spreadProps(__spreadValues({}, this.settings.data[tableId]), { - model: updatedModel, - settings: updatedSettings - }); - const viewModesToUpdate = [ - "preview" - ]; - if (this.isLivePreviewEnabled()) - viewModesToUpdate.push("source"); - yield serializeTable( - true, - this, - newState, - tableId, - viewModesToUpdate - ); - } else { - new import_obsidian6.Notice( - "No focused table. Please click a table to focus it and retry this operation again." - ); + checkCallback: (checking) => { + const nltView = this.app.workspace.getActiveViewOfType(NLTView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); + if (nltView || markdownView) { + if (!checking) { + this.app.workspace.trigger(EVENT_COLUMN_ADD); + } + return true; } - }) + return false; + } + }); + this.addCommand({ + id: "nlt-delete-column", + name: "Delete column", + hotkeys: [{ modifiers: ["Mod", "Shift"], key: "Backspace" }], + checkCallback: (checking) => { + const nltView = this.app.workspace.getActiveViewOfType(NLTView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); + if (nltView || markdownView) { + if (!checking) { + this.app.workspace.trigger(EVENT_COLUMN_DELETE); + } + return true; + } + return false; + } }); this.addCommand({ id: "nlt-add-row", - name: "Add row to focused table", + name: "Add row", hotkeys: [{ modifiers: ["Mod", "Shift"], key: "Enter" }], - callback: () => __async(this, null, function* () { - if (this.focusedTableId) { - const tableId = this.focusedTableId; - const prevState = this.settings.data[tableId]; - const newState = addRow(prevState); - const viewModesToUpdate = [ - "preview" - ]; - if (this.isLivePreviewEnabled()) - viewModesToUpdate.push("source"); - yield serializeTable( - true, - this, - newState, - tableId, - viewModesToUpdate - ); - } else { - new import_obsidian6.Notice( - "No focused table. Please click a table to focus it and retry this operation." - ); + checkCallback: (checking) => { + const nltView = this.app.workspace.getActiveViewOfType(NLTView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); + if (nltView || markdownView) { + if (!checking) + this.app.workspace.trigger(EVENT_ROW_ADD); + return true; } - }) + return false; + } + }); + this.addCommand({ + id: "nlt-row-column", + name: "Delete row", + hotkeys: [{ modifiers: ["Alt", "Shift"], key: "Backspace" }], + checkCallback: (checking) => { + const nltView = this.app.workspace.getActiveViewOfType(NLTView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); + if (nltView || markdownView) { + if (!checking) { + this.app.workspace.trigger(EVENT_ROW_DELETE); + } + return true; + } + return false; + } + }); + this.addCommand({ + id: "nlt-export-markdown", + name: "Export as markdown", + checkCallback: (checking) => { + const nltView = this.app.workspace.getActiveViewOfType(NLTView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); + if (nltView || markdownView) { + if (!checking) { + this.app.workspace.trigger(EVENT_DOWNLOAD_MARKDOWN); + } + return true; + } + return false; + } + }); + this.addCommand({ + id: "nlt-export-csv", + name: "Export as CSV", + checkCallback: (checking) => { + const nltView = this.app.workspace.getActiveViewOfType(NLTView); + const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian14.MarkdownView); + if (nltView || markdownView) { + if (!checking) { + this.app.workspace.trigger(EVENT_DOWNLOAD_CSV); + } + return true; + } + return false; + } }); } loadSettings() { @@ -63513,6 +56518,9 @@ var NltPlugin = class extends import_obsidian6.Plugin { DEFAULT_SETTINGS, yield this.loadData() ); + store.dispatch( + setExportRenderMarkdown(this.settings.exportRenderMarkdown) + ); }); } saveSettings() { @@ -63522,33 +56530,15 @@ var NltPlugin = class extends import_obsidian6.Plugin { } onunload() { return __async(this, null, function* () { - yield this.forcePostProcessorReload(); + this.app.workspace.detachLeavesOfType(NOTION_LIKE_TABLES_VIEW); }); } - forcePostProcessorReload() { - return __async(this, null, function* () { - this.app.workspace.iterateAllLeaves((leaf) => { - const view = leaf.view; - if (view.getViewType() === "markdown") { - if (view instanceof import_obsidian6.MarkdownView) - view.previewMode.rerender(true); - } - }); - }); - } - static getFiles() { - return app.vault.getFiles(); - } }; -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ -/*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames +/* @license +Papa Parse +v5.4.1 +https://github.com/mholt/PapaParse +License: MIT */ /** * @license @@ -63634,21 +56624,6 @@ object-assign * @internal * @license Modernizr 3.0.0pre (Custom Build) | MIT */ -/** @license MUI v5.0.0-alpha.97 - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** @license MUI v5.10.3 - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** @license MUI v5.10.5 - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ /** @license React v16.13.1 * react-is.development.js * diff --git a/.obsidian/plugins/notion-like-tables/manifest.json b/.obsidian/plugins/notion-like-tables/manifest.json index 220e4af..fe47708 100644 --- a/.obsidian/plugins/notion-like-tables/manifest.json +++ b/.obsidian/plugins/notion-like-tables/manifest.json @@ -1,10 +1,11 @@ { "id": "notion-like-tables", "name": "Notion-Like Tables", - "minAppVersion": "0.12.0", + "minAppVersion": "0.15.0", "description": "Your premiere tool for creating and managing tabular data in Obsidian.md", "author": "Trey Wallis", "authorUrl": "https://github.com/trey-wallis", "isDesktopOnly": false, - "version": "5.0.5" + "fundingUrl": "https://www.buymeacoffee.com/treywallis", + "version": "6.18.6" } diff --git a/.obsidian/plugins/notion-like-tables/styles.css b/.obsidian/plugins/notion-like-tables/styles.css index 13f5006..34b6797 100644 --- a/.obsidian/plugins/notion-like-tables/styles.css +++ b/.obsidian/plugins/notion-like-tables/styles.css @@ -1,15 +1,62 @@ -@charset "UTF-8"; - -/* src/components/TextCell/styles.css */ -.NLT__text-cell { - width: 100%; +/* src/react/shared/text/styles.css */ +.NLT__p { + white-space: nowrap; + margin: 0; + color: var(--text-normal); +} +.NLT__text-muted { + color: var(--text-muted); +} +.NLT__text-faint { + color: var(--text-faint); +} +.NLT__text-semibold { + font-weight: var(--font-semibold); } -/* src/components/Tag/styles.css */ -.NLT__tag-content { - width: max-content; - user-select: none; +/* src/react/shared/switch/styles.css */ +.NLT__switch { + width: calc(var(--toggle-width) * 0.75); + height: calc((var(--toggle-thumb-height) * 0.75) + (var(--toggle-border-width) * 2 * 0.75)); } +.NLT__switch:after { + width: calc(var(--toggle-thumb-width) * 0.75); + height: calc(var(--toggle-thumb-height) * 0.75); +} +.NLT__switch.is-enabled:after { + transform: translate3d(calc((var(--toggle-width) - var(--toggle-thumb-width) - var(--toggle-border-width)) * 0.75), 0, 0); +} +.NLT__switch input { + width: calc(var(--checkbox-size) * 0.75); + height: calc(var(--checkbox-size) * 0.75); +} +.NLT__switch:active:after { + width: calc((var(--toggle-thumb-width) * 0.75) + (var(--toggle-border-width))); +} + +/* src/react/table-app/option-bar/filter/styles.css */ +.react-select { + width: 150px !important; +} +.react-select input:focus { + border: 0 !important; + box-shadow: none !important; +} +.react-select input:focus-visible { + border: 0 !important; + box-shadow: none !important; +} + +/* src/react/table-app/function-cell/styles.css */ +.NLT__function-cell { + display: flex; + justify-content: flex-end; + cursor: pointer; + overflow: hidden; + padding: var(--nlt-cell-spacing-x) var(--nlt-cell-spacing-y); +} + +/* src/react/shared/tag/styles.css */ .NLT__tag { display: flex; align-items: center; @@ -19,106 +66,23 @@ color: var(--text-normal); } -/* src/components/Icon/styles.css */ -.NLT__icon { - display: flex; -} -.NLT__icon--sm { - width: 0.9rem !important; - height: 0.9rem !important; -} -.NLT__icon--md { - width: 1rem !important; - height: 1rem !important; -} -.NLT__icon--lg { - width: 1.1rem !important; - height: 1.1rem !important; -} - -/* src/components/Button/styles.css */ -.NLT__button { - display: flex; - align-items: center; - padding: 4px 6px; - white-space: nowrap; - color: var(--text-normal); - margin-right: 0; -} -.NLT__button--icon { - background-color: transparent; - padding: 1px 3px; -} -.NLT__button--icon-darker:hover { - filter: brightness(95%); -} - -/* src/components/TagCell/styles.css */ +/* src/react/table-app/tag-cell/styles.css */ .NLT__tag-cell { width: 100%; } -/* src/components/CheckboxCell/styles.css */ -.NLT__checkbox-cell { - width: 100%; - padding: var(--nlt-cell-spacing); -} - -/* src/components/DateCell/styles.css */ -.NLT__date-cell { - width: 100%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - padding: var(--nlt-cell-spacing); -} - -/* src/components/NumberCell/styles.css */ +/* src/react/table-app/number-cell/styles.css */ .NLT__number-cell { width: 100%; text-align: right; } -/* src/components/NumberCellEdit/styles.css */ -.NLT__number-cell-edit { - width: 100%; - height: 100%; - text-align: right; - border: 0 !important; - font-family: var(--font-text); - font-size: 1rem; -} - -/* src/components/TextCellEdit/styles.css */ -.NLT__textarea { - width: 100%; - height: 100%; - border: 0; - overflow: hidden; - padding: var(--nlt-cell-spacing-x) var(--nlt-cell-spacing-y); -} - -/* src/components/Menu/styles.css */ -.NLT__menu { - width: 0; - height: 0; -} -.NLT__menu-container { - background-color: var(--background-primary); - border: 1px solid var(--background-modifier-border); - box-shadow: 0 2px 8px var(--background-modifier-box-shadow); - z-index: var(--layer-menu); - position: absolute; - border-radius: 4px; - font-weight: 400; -} - -/* src/components/TagColorMenu/components/ColorItem/styles.css */ +/* src/react/table-app/tag-color-menu/components/color-item/styles.css */ .NLT__color-item { display: flex; align-items: center; - font-size: 0.8rem; - padding: 0px 5px; + padding: var(--nlt-spacing--xs) var(--nlt-spacing--lg); + width: 100%; } .NLT__color-item-square { width: 10px; @@ -127,982 +91,31 @@ margin: 0 10px 0 0; } -/* src/components/TagColorMenu/styles.css */ -.NLT__tag-color-menu { - padding: 4px 10px; -} -.NLT__tag-color-menu-header { - display: flex; - justify-content: space-between; -} -.NLT__tag-color-menu-title { - font-size: 0.85rem; -} +/* src/react/table-app/tag-color-menu/styles.css */ -/* src/components/TagCellEdit/component/SelectableTag/styles.css */ -.NLT__selectable-tag { - display: flex; - justify-content: space-between; - padding: var(--nlt-spacing--sm) var(--nlt-spacing--md); - overflow: hidden; -} - -/* src/components/TagCellEdit/component/CreateTag/styles.css */ -.NLT__create-tag { - display: flex; - align-items: center; - padding: 4px 6px; - width: 100%; - overflow: hidden; -} - -/* src/components/TagCellEdit/styles.css */ -.NLT__tag-menu { - background-color: var(--background-primary); -} -.NLT__tag-menu-header { - background-color: rgba(0, 0, 0, 0.25); - padding: 4px 10px; -} -.NLT__tag-menu-body { - min-height: 100px; - padding: 4px 10px; -} -.NLT__tag-menu-text { - font-size: 0.85rem; - margin: 5px 0px; - width: 100%; -} -.NLT__tag-input { - background-color: transparent !important; - border: 0 !important; - width: 100%; - padding-left: 5px !important; - padding-right: 5px !important; -} - -/* node_modules/react-datepicker/dist/react-datepicker.css */ -.react-datepicker__year-read-view--down-arrow, -.react-datepicker__month-read-view--down-arrow, -.react-datepicker__month-year-read-view--down-arrow, -.react-datepicker__navigation-icon::before { - border-color: #ccc; - border-style: solid; - border-width: 3px 3px 0 0; - content: ""; - display: block; - height: 9px; - position: absolute; - top: 6px; - width: 9px; -} -.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle, -.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle { - margin-left: -4px; - position: absolute; - width: 0; -} -.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle::before, -.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle::before, -.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle::after, -.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle::after { - box-sizing: content-box; - position: absolute; - border: 8px solid transparent; - height: 0; - width: 1px; - content: ""; - z-index: -1; - border-width: 8px; - left: -8px; -} -.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle::before, -.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle::before { - border-bottom-color: #aeaeae; -} -.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle { - top: 0; - margin-top: -8px; -} -.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle::before, -.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle::after { - border-top: none; - border-bottom-color: #f0f0f0; -} -.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle::after { - top: 0; -} -.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle::before { - top: -1px; - border-bottom-color: #aeaeae; -} -.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle { - bottom: 0; - margin-bottom: -8px; -} -.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle::before, -.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle::after { - border-bottom: none; - border-top-color: #fff; -} -.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle::after { - bottom: 0; -} -.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle::before { - bottom: -1px; - border-top-color: #aeaeae; -} -.react-datepicker-wrapper { - display: inline-block; - padding: 0; - border: 0; - width: 100%; -} -.react-datepicker { - font-family: - "Helvetica Neue", - helvetica, - arial, - sans-serif; - font-size: 0.8rem; - background-color: #fff; - color: #000; - border: 1px solid #aeaeae; - border-radius: 0.3rem; - display: inline-block; - position: relative; -} -.react-datepicker--time-only .react-datepicker__triangle { - left: 35px; -} -.react-datepicker--time-only .react-datepicker__time-container { - border-left: 0; -} -.react-datepicker--time-only .react-datepicker__time, -.react-datepicker--time-only .react-datepicker__time-box { - border-bottom-left-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; -} -.react-datepicker__triangle { - position: absolute; - left: 50px; -} -.react-datepicker-popper { - z-index: 1; -} -.react-datepicker-popper[data-placement^=bottom] { - padding-top: 10px; -} -.react-datepicker-popper[data-placement=bottom-end] .react-datepicker__triangle, -.react-datepicker-popper[data-placement=top-end] .react-datepicker__triangle { - left: auto; - right: 50px; -} -.react-datepicker-popper[data-placement^=top] { - padding-bottom: 10px; -} -.react-datepicker-popper[data-placement^=right] { - padding-left: 8px; -} -.react-datepicker-popper[data-placement^=right] .react-datepicker__triangle { - left: auto; - right: 42px; -} -.react-datepicker-popper[data-placement^=left] { - padding-right: 8px; -} -.react-datepicker-popper[data-placement^=left] .react-datepicker__triangle { - left: 42px; - right: auto; -} -.react-datepicker__header { - text-align: center; - background-color: #f0f0f0; - border-bottom: 1px solid #aeaeae; - border-top-left-radius: 0.3rem; - padding: 8px 0; - position: relative; -} -.react-datepicker__header--time { - padding-bottom: 8px; - padding-left: 5px; - padding-right: 5px; -} -.react-datepicker__header--time:not(.react-datepicker__header--time--only) { - border-top-left-radius: 0; -} -.react-datepicker__header:not(.react-datepicker__header--has-time-select) { - border-top-right-radius: 0.3rem; -} -.react-datepicker__year-dropdown-container--select, -.react-datepicker__month-dropdown-container--select, -.react-datepicker__month-year-dropdown-container--select, -.react-datepicker__year-dropdown-container--scroll, -.react-datepicker__month-dropdown-container--scroll, -.react-datepicker__month-year-dropdown-container--scroll { - display: inline-block; - margin: 0 2px; -} -.react-datepicker__current-month, -.react-datepicker-time__header, -.react-datepicker-year-header { - margin-top: 0; - color: #000; - font-weight: bold; - font-size: 0.944rem; -} -.react-datepicker-time__header { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.react-datepicker__navigation { - align-items: center; - background: none; - display: flex; - justify-content: center; - text-align: center; - cursor: pointer; - position: absolute; - top: 2px; - padding: 0; - border: none; - z-index: 1; - height: 32px; - width: 32px; - text-indent: -999em; - overflow: hidden; -} -.react-datepicker__navigation--previous { - left: 2px; -} -.react-datepicker__navigation--next { - right: 2px; -} -.react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button) { - right: 85px; -} -.react-datepicker__navigation--years { - position: relative; - top: 0; - display: block; - margin-left: auto; - margin-right: auto; -} -.react-datepicker__navigation--years-previous { - top: 4px; -} -.react-datepicker__navigation--years-upcoming { - top: -4px; -} -.react-datepicker__navigation:hover *::before { - border-color: #a6a6a6; -} -.react-datepicker__navigation-icon { - position: relative; - top: -1px; - font-size: 20px; - width: 0; -} -.react-datepicker__navigation-icon--next { - left: -2px; -} -.react-datepicker__navigation-icon--next::before { - transform: rotate(45deg); - left: -7px; -} -.react-datepicker__navigation-icon--previous { - right: -2px; -} -.react-datepicker__navigation-icon--previous::before { - transform: rotate(225deg); - right: -7px; -} -.react-datepicker__month-container { - float: left; -} -.react-datepicker__year { - margin: 0.4rem; - text-align: center; -} -.react-datepicker__year-wrapper { - display: flex; - flex-wrap: wrap; - max-width: 180px; -} -.react-datepicker__year .react-datepicker__year-text { - display: inline-block; - width: 4rem; - margin: 2px; -} -.react-datepicker__month { - margin: 0.4rem; - text-align: center; -} -.react-datepicker__month .react-datepicker__month-text, -.react-datepicker__month .react-datepicker__quarter-text { - display: inline-block; - width: 4rem; - margin: 2px; -} -.react-datepicker__input-time-container { - clear: both; - width: 100%; - float: left; - margin: 5px 0 10px 15px; - text-align: left; -} -.react-datepicker__input-time-container .react-datepicker-time__caption { - display: inline-block; -} -.react-datepicker__input-time-container .react-datepicker-time__input-container { - display: inline-block; -} -.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input { - display: inline-block; - margin-left: 10px; -} -.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input { - width: auto; -} -.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button, -.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; -} -.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time] { - -moz-appearance: textfield; -} -.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter { - margin-left: 5px; - display: inline-block; -} -.react-datepicker__time-container { - float: right; - border-left: 1px solid #aeaeae; - width: 85px; -} -.react-datepicker__time-container--with-today-button { - display: inline; - border: 1px solid #aeaeae; - border-radius: 0.3rem; - position: absolute; - right: -72px; - top: 0; -} -.react-datepicker__time-container .react-datepicker__time { - position: relative; - background: white; - border-bottom-right-radius: 0.3rem; -} -.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box { - width: 85px; - overflow-x: hidden; - margin: 0 auto; - text-align: center; - border-bottom-right-radius: 0.3rem; -} -.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list { - list-style: none; - margin: 0; - height: calc(195px + (1.7rem / 2)); - overflow-y: scroll; - padding-right: 0; - padding-left: 0; - width: 100%; - box-sizing: content-box; -} -.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item { - height: 30px; - padding: 5px 10px; - white-space: nowrap; -} -.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover { - cursor: pointer; - background-color: #f0f0f0; -} -.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected { - background-color: #216ba5; - color: white; - font-weight: bold; -} -.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover { - background-color: #216ba5; -} -.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled { - color: #ccc; -} -.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover { - cursor: default; - background-color: transparent; -} -.react-datepicker__week-number { - color: #ccc; - display: inline-block; - width: 1.7rem; - line-height: 1.7rem; - text-align: center; - margin: 0.166rem; -} -.react-datepicker__week-number.react-datepicker__week-number--clickable { - cursor: pointer; -} -.react-datepicker__week-number.react-datepicker__week-number--clickable:hover { - border-radius: 0.3rem; - background-color: #f0f0f0; -} -.react-datepicker__day-names, -.react-datepicker__week { - white-space: nowrap; -} -.react-datepicker__day-names { - margin-bottom: -8px; -} -.react-datepicker__day-name, -.react-datepicker__day, -.react-datepicker__time-name { - color: #000; - display: inline-block; - width: 1.7rem; - line-height: 1.7rem; - text-align: center; - margin: 0.166rem; -} -.react-datepicker__month--selected, -.react-datepicker__month--in-selecting-range, -.react-datepicker__month--in-range, -.react-datepicker__quarter--selected, -.react-datepicker__quarter--in-selecting-range, -.react-datepicker__quarter--in-range { - border-radius: 0.3rem; - background-color: #216ba5; - color: #fff; -} -.react-datepicker__month--selected:hover, -.react-datepicker__month--in-selecting-range:hover, -.react-datepicker__month--in-range:hover, -.react-datepicker__quarter--selected:hover, -.react-datepicker__quarter--in-selecting-range:hover, -.react-datepicker__quarter--in-range:hover { - background-color: #1d5d90; -} -.react-datepicker__month--disabled, -.react-datepicker__quarter--disabled { - color: #ccc; - pointer-events: none; -} -.react-datepicker__month--disabled:hover, -.react-datepicker__quarter--disabled:hover { - cursor: default; - background-color: transparent; -} -.react-datepicker__day, -.react-datepicker__month-text, -.react-datepicker__quarter-text, -.react-datepicker__year-text { - cursor: pointer; -} -.react-datepicker__day:hover, -.react-datepicker__month-text:hover, -.react-datepicker__quarter-text:hover, -.react-datepicker__year-text:hover { - border-radius: 0.3rem; - background-color: #f0f0f0; -} -.react-datepicker__day--today, -.react-datepicker__month-text--today, -.react-datepicker__quarter-text--today, -.react-datepicker__year-text--today { - font-weight: bold; -} -.react-datepicker__day--highlighted, -.react-datepicker__month-text--highlighted, -.react-datepicker__quarter-text--highlighted, -.react-datepicker__year-text--highlighted { - border-radius: 0.3rem; - background-color: #3dcc4a; - color: #fff; -} -.react-datepicker__day--highlighted:hover, -.react-datepicker__month-text--highlighted:hover, -.react-datepicker__quarter-text--highlighted:hover, -.react-datepicker__year-text--highlighted:hover { - background-color: #32be3f; -} -.react-datepicker__day--highlighted-custom-1, -.react-datepicker__month-text--highlighted-custom-1, -.react-datepicker__quarter-text--highlighted-custom-1, -.react-datepicker__year-text--highlighted-custom-1 { - color: magenta; -} -.react-datepicker__day--highlighted-custom-2, -.react-datepicker__month-text--highlighted-custom-2, -.react-datepicker__quarter-text--highlighted-custom-2, -.react-datepicker__year-text--highlighted-custom-2 { - color: green; -} -.react-datepicker__day--selected, -.react-datepicker__day--in-selecting-range, -.react-datepicker__day--in-range, -.react-datepicker__month-text--selected, -.react-datepicker__month-text--in-selecting-range, -.react-datepicker__month-text--in-range, -.react-datepicker__quarter-text--selected, -.react-datepicker__quarter-text--in-selecting-range, -.react-datepicker__quarter-text--in-range, -.react-datepicker__year-text--selected, -.react-datepicker__year-text--in-selecting-range, -.react-datepicker__year-text--in-range { - border-radius: 0.3rem; - background-color: #216ba5; - color: #fff; -} -.react-datepicker__day--selected:hover, -.react-datepicker__day--in-selecting-range:hover, -.react-datepicker__day--in-range:hover, -.react-datepicker__month-text--selected:hover, -.react-datepicker__month-text--in-selecting-range:hover, -.react-datepicker__month-text--in-range:hover, -.react-datepicker__quarter-text--selected:hover, -.react-datepicker__quarter-text--in-selecting-range:hover, -.react-datepicker__quarter-text--in-range:hover, -.react-datepicker__year-text--selected:hover, -.react-datepicker__year-text--in-selecting-range:hover, -.react-datepicker__year-text--in-range:hover { - background-color: #1d5d90; -} -.react-datepicker__day--keyboard-selected, -.react-datepicker__month-text--keyboard-selected, -.react-datepicker__quarter-text--keyboard-selected, -.react-datepicker__year-text--keyboard-selected { - border-radius: 0.3rem; - background-color: #2579ba; - color: #fff; -} -.react-datepicker__day--keyboard-selected:hover, -.react-datepicker__month-text--keyboard-selected:hover, -.react-datepicker__quarter-text--keyboard-selected:hover, -.react-datepicker__year-text--keyboard-selected:hover { - background-color: #1d5d90; -} -.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range, .react-datepicker__month-text--in-range, .react-datepicker__quarter-text--in-range, .react-datepicker__year-text--in-range), -.react-datepicker__month-text--in-selecting-range:not(.react-datepicker__day--in-range, .react-datepicker__month-text--in-range, .react-datepicker__quarter-text--in-range, .react-datepicker__year-text--in-range), -.react-datepicker__quarter-text--in-selecting-range:not(.react-datepicker__day--in-range, .react-datepicker__month-text--in-range, .react-datepicker__quarter-text--in-range, .react-datepicker__year-text--in-range), -.react-datepicker__year-text--in-selecting-range:not(.react-datepicker__day--in-range, .react-datepicker__month-text--in-range, .react-datepicker__quarter-text--in-range, .react-datepicker__year-text--in-range) { - background-color: rgba(33, 107, 165, 0.5); -} -.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range, .react-datepicker__month-text--in-selecting-range, .react-datepicker__quarter-text--in-selecting-range, .react-datepicker__year-text--in-selecting-range), -.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range, .react-datepicker__month-text--in-selecting-range, .react-datepicker__quarter-text--in-selecting-range, .react-datepicker__year-text--in-selecting-range), -.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range, .react-datepicker__month-text--in-selecting-range, .react-datepicker__quarter-text--in-selecting-range, .react-datepicker__year-text--in-selecting-range), -.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range, .react-datepicker__month-text--in-selecting-range, .react-datepicker__quarter-text--in-selecting-range, .react-datepicker__year-text--in-selecting-range) { - background-color: #f0f0f0; - color: #000; -} -.react-datepicker__day--disabled, -.react-datepicker__month-text--disabled, -.react-datepicker__quarter-text--disabled, -.react-datepicker__year-text--disabled { - cursor: default; - color: #ccc; -} -.react-datepicker__day--disabled:hover, -.react-datepicker__month-text--disabled:hover, -.react-datepicker__quarter-text--disabled:hover, -.react-datepicker__year-text--disabled:hover { - background-color: transparent; -} -.react-datepicker__month-text.react-datepicker__month--selected:hover, -.react-datepicker__month-text.react-datepicker__month--in-range:hover, -.react-datepicker__month-text.react-datepicker__quarter--selected:hover, -.react-datepicker__month-text.react-datepicker__quarter--in-range:hover, -.react-datepicker__quarter-text.react-datepicker__month--selected:hover, -.react-datepicker__quarter-text.react-datepicker__month--in-range:hover, -.react-datepicker__quarter-text.react-datepicker__quarter--selected:hover, -.react-datepicker__quarter-text.react-datepicker__quarter--in-range:hover { - background-color: #216ba5; -} -.react-datepicker__month-text:hover, -.react-datepicker__quarter-text:hover { - background-color: #f0f0f0; -} -.react-datepicker__input-container { - position: relative; - display: inline-block; - width: 100%; -} -.react-datepicker__year-read-view, -.react-datepicker__month-read-view, -.react-datepicker__month-year-read-view { - border: 1px solid transparent; - border-radius: 0.3rem; - position: relative; -} -.react-datepicker__year-read-view:hover, -.react-datepicker__month-read-view:hover, -.react-datepicker__month-year-read-view:hover { - cursor: pointer; -} -.react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow, -.react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow, -.react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow, -.react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow, -.react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow, -.react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow { - border-top-color: #b3b3b3; -} -.react-datepicker__year-read-view--down-arrow, -.react-datepicker__month-read-view--down-arrow, -.react-datepicker__month-year-read-view--down-arrow { - transform: rotate(135deg); - right: -16px; - top: 0; -} -.react-datepicker__year-dropdown, -.react-datepicker__month-dropdown, -.react-datepicker__month-year-dropdown { - background-color: #f0f0f0; - position: absolute; - width: 50%; - left: 25%; - top: 30px; - z-index: 1; - text-align: center; - border-radius: 0.3rem; - border: 1px solid #aeaeae; -} -.react-datepicker__year-dropdown:hover, -.react-datepicker__month-dropdown:hover, -.react-datepicker__month-year-dropdown:hover { - cursor: pointer; -} -.react-datepicker__year-dropdown--scrollable, -.react-datepicker__month-dropdown--scrollable, -.react-datepicker__month-year-dropdown--scrollable { - height: 150px; - overflow-y: scroll; -} -.react-datepicker__year-option, -.react-datepicker__month-option, -.react-datepicker__month-year-option { - line-height: 20px; - width: 100%; - display: block; - margin-left: auto; - margin-right: auto; -} -.react-datepicker__year-option:first-of-type, -.react-datepicker__month-option:first-of-type, -.react-datepicker__month-year-option:first-of-type { - border-top-left-radius: 0.3rem; - border-top-right-radius: 0.3rem; -} -.react-datepicker__year-option:last-of-type, -.react-datepicker__month-option:last-of-type, -.react-datepicker__month-year-option:last-of-type { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - border-bottom-left-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; -} -.react-datepicker__year-option:hover, -.react-datepicker__month-option:hover, -.react-datepicker__month-year-option:hover { - background-color: #ccc; -} -.react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming, -.react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming, -.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming { - border-bottom-color: #b3b3b3; -} -.react-datepicker__year-option:hover .react-datepicker__navigation--years-previous, -.react-datepicker__month-option:hover .react-datepicker__navigation--years-previous, -.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous { - border-top-color: #b3b3b3; -} -.react-datepicker__year-option--selected, -.react-datepicker__month-option--selected, -.react-datepicker__month-year-option--selected { - position: absolute; - left: 15px; -} -.react-datepicker__close-icon { - cursor: pointer; - background-color: transparent; - border: 0; - outline: 0; - padding: 0 6px 0 0; - position: absolute; - top: 0; - right: 0; - height: 100%; - display: table-cell; - vertical-align: middle; -} -.react-datepicker__close-icon::after { - cursor: pointer; - background-color: #216ba5; - color: #fff; - border-radius: 50%; - height: 16px; - width: 16px; - padding: 2px; - font-size: 12px; - line-height: 1; - text-align: center; - display: table-cell; - vertical-align: middle; - content: "\d7"; -} -.react-datepicker__today-button { - background: #f0f0f0; - border-top: 1px solid #aeaeae; - cursor: pointer; - text-align: center; - font-weight: bold; - padding: 5px 0; - clear: left; -} -.react-datepicker__portal { - position: fixed; - width: 100vw; - height: 100vh; - background-color: rgba(0, 0, 0, 0.8); - left: 0; - top: 0; - justify-content: center; - align-items: center; - display: flex; - z-index: 2147483647; -} -.react-datepicker__portal .react-datepicker__day-name, -.react-datepicker__portal .react-datepicker__day, -.react-datepicker__portal .react-datepicker__time-name { - width: 3rem; - line-height: 3rem; -} -@media (max-width: 400px), (max-height: 550px) { - .react-datepicker__portal .react-datepicker__day-name, - .react-datepicker__portal .react-datepicker__day, - .react-datepicker__portal .react-datepicker__time-name { - width: 2rem; - line-height: 2rem; - } -} -.react-datepicker__portal .react-datepicker__current-month, -.react-datepicker__portal .react-datepicker-time__header { - font-size: 1.44rem; -} - -/* src/components/DateCellEdit/styles.css */ -.NLT__date-input { - width: 100%; - padding: 0px 10px !important; - border: 0 !important; -} - -/* src/components/MultiTagCell/styles.css */ +/* src/react/table-app/multi-tag-cell/styles.css */ .NLT__multi-tag-cell { display: flex; flex-direction: column; } -/* src/components/EditableTd/styles.css */ -.NLT__td { - border-top: 0 !important; - border-bottom: 1px solid var(--background-modifier-border) !important; - border-left: 1px solid var(--background-modifier-border) !important; - border-right: 0 !important; - vertical-align: top; - padding: 0 !important; - overflow: visible; -} -.NLT__tbody > .NLT__tr > .NLT__td:last-child { - border-top: 0 !important; - border-bottom: 0 !important; -} -.NLT__tbody > .NLT__tr:last-child > .NLT__td:last-child { - border-bottom: 0 !important; -} -.NLT__tfoot > .NLT__tr > .NLT__td { - border: 0 !important; -} -.NLT__td-container { - display: flex; - min-height: 1.9rem; -} -.NLT__td-cell-container { - overflow: hidden; - user-select: none; +/* src/react/table-app/currency-cell/styles.css */ +.NLT__currency-cell { width: 100%; -} -.NLT__td-cell-padding { - padding: var(--nlt-cell-spacing-x) var(--nlt-cell-spacing-y); + text-align: right; } -/* src/components/Table/styles.css */ -.NLT__table { - table-layout: fixed; -} -.NLT__table, -.NLT__thead, -.NLT__tbody, -.NLT__tfoot, -.NLT__tr { - border: 0 !important; +/* src/react/table-app/new-row-button/styles.css */ +.NLT__new-row { + padding: var(--nlt-spacing--md); } -/* src/components/RowMenu/components/RowMenuItem/styles.css */ -.NLT__drag-menu-item:focus-visible { - outline: 1px solid blue; +/* src/react/table-app/new-column-button/styles.css */ +.NLT__new-column { + padding-left: var(--nlt-spacing--md); } -/* src/components/RowMenu/styles.css */ -.NLT__drag-menu { - font-size: 0.9rem; - padding: 4px 10px; -} - -/* src/components/Switch/styles.css */ -.NLT__switch { - position: relative; - display: inline-block; - width: 30px; - height: 16px; -} -.NLT__switch input { - opacity: 0; - width: 0; - height: 0; -} -.NLT__slider { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: #ccc; - -webkit-transition: .4s; - transition: .4s; - border-radius: 15px; -} -.NLT__slider:before { - position: absolute; - content: ""; - height: 10px; - width: 10px; - left: 3px; - bottom: 3px; - background-color: white; - -webkit-transition: .4s; - transition: .4s; - border-radius: 50%; -} -input:checked + .NLT__slider { - background-color: #2196F3; -} -input:focus + .NLT__slider { - box-shadow: 0 0 1px #2196F3; -} -input:checked + .NLT__slider:before { - -webkit-transform: translateX(14px); - -ms-transform: translateX(14px); - transform: translateX(14px); -} - -/* src/components/HeaderMenu/styles.css */ -.NLT__header-menu { - padding: 4px 10px; - cursor: default; - color: var(--text-normal); -} -.NLT__header-menu-title-container { - display: flex; - font-size: 0.95rem; -} -.NLT__header-menu-title { - font-weight: 700; -} -.NLT__header-menu-item:focus-visible { - outline: 1px solid blue; -} -.NLT__header-menu-ul { - padding: 0; - margin: 0; -} -.NLT__header-menu-item { - font-size: 0.9rem; - display: flex; - align-items: center; - padding: 0; - margin: 0; -} -.NLT__header-menu-input { - background-color: var(--background-primary); - border: 1px solid var(--background-modifier-border); - padding: 4px 10px; - font-size: 0.95rem; - width: 100%; -} - -/* src/components/EditableTh/styles.css */ -.NLT__th { - text-align: left; - border-top: 1px solid var(--background-modifier-border) !important; - border-bottom: 1px solid var(--background-modifier-border) !important; - border-left: 1px solid var(--background-modifier-border) !important; - border-right: 0 !important; - padding: 0 !important; - font-weight: 400 !important; - overflow: visible; -} -.NLT__th:last-child { - border-top: 0 !important; - border-bottom: 0 !important; -} -.NLT__th-container { - display: flex; - justify-content: space-between; - width: 100%; -} -.NLT__th-content { - width: 100%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - user-select: none; - padding: var(--nlt-cell-spacing-x) var(--nlt-cell-spacing-y); -} -.NLT__th-resize-container { - position: relative; -} -.NLT__th-resize { - position: absolute; - left: -10px; - cursor: col-resize; - width: 10px; - height: 100%; -} - -/* src/components/OptionBar/styles.css */ -.NLT__option-bar { - display: flex; - margin-bottom: 10px; -} -.NLT__sort-bubble { - display: flex; - justify-content: center; - align-items: center; - border-radius: 8px; - font-size: 0.9rem; - padding: 2px 6px; - border: 1px solid var(--background-modifier-border); - user-select: none; -} - -/* src/app.css */ +/* src/react/table-app/styles.css */ :root { --nlt-spacing--xs: 2px; --nlt-spacing--sm: 4px; @@ -1110,8 +123,15 @@ input:checked + .NLT__slider:before { --nlt-spacing--lg: 12px; --nlt-spacing--xl: 16px; --nlt-spacing--2xl: 24px; + --nlt-spacing--3xl: 36px; + --nlt-spacing--4xl: 48px; --nlt-cell-spacing-x: var(--nlt-spacing--sm); --nlt-cell-spacing-y: var(--nlt-spacing--lg); + --nlt-cell-min-height: 1.9rem; + --nlt-font-size--xs: 0.8rem; + --nlt-font-size--sm: 0.9rem; + --nlt-font-size--md: 1rem; + --nlt-font-size--lg: 1.1rem; } .NLT__light-gray--light { background-color: hsl(0, 3%, 94%); @@ -1173,40 +193,47 @@ input:checked + .NLT__slider:before { .NLT__red--dark { background-color: hsl(8, 35%, 30%); } -.NLT__table-wrapper { - overflow-x: auto; +.NLT__app ::-webkit-scrollbar { + display: none; +} +.NLT__menu ::-webkit-scrollbar { + display: none; } .NLT__selectable { cursor: pointer; } .NLT__selectable:hover { - background-color: var(--interactive-hover); + background-color: var(--color-base-30); } .NLT__selected { - background-color: var(--interactive-normal); + background-color: var(--color-base-20); } -.NLT__auto-width { - overflow-wrap: normal; - white-space: nowrap; +.workspace-leaf-content[data-type=notion-like-tables] .view-content { + padding: 0; } -.NLT__wrap-overflow { - overflow-wrap: break-word; +.NLT__default-cursor { + cursor: default !important; } -.NLT__hide-overflow { - overflow: hidden; - overflow-wrap: normal; - white-space: nowrap; - text-overflow: ellipsis; +.NLT__focusable:focus-visible, +.NLT__focus-visible { + outline: 2px solid var(--color-accent) !important; + outline-offset: -2px !important; } -.NLT__label { - font-size: 0.9rem; - margin: 0; +.NLT__focusable--inverted:focus-visible { + outline: 2px solid var(--text-on-accent-inverted); + outline-offset: 0px; } -.NLT__p { - white-space: nowrap; - margin: 0; +.NLT__blur--cell { + outline: 2px solid var(--background-modifier-border-focus) !important; + outline-offset: -2px; } -.NLT__hr { - margin: 0.35rem 0; - width: 100%; +.NLT__blur { + outline: 2px solid var(--color-accent) !important; + outline-offset: -2px; +} +.NLT__tr--drag-over { + border-bottom: 1px solid var(--color-accent) !important; +} +.NLT__th--drag-over { + border-bottom: 1px solid var(--color-accent) !important; } diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json index 89a0165..e7ae952 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json @@ -17,6 +17,7 @@ "displayExportedImageIfAvailable": false, "previewMatchObsidianTheme": false, "width": "400", + "dynamicStyling": "colorful", "isLeftHanded": false, "matchTheme": false, "matchThemeAlways": false, @@ -80,10 +81,11 @@ "mdCSS": "", "scriptEngineSettings": {}, "defaultTrayMode": true, - "previousRelease": "1.8.14", + "previousRelease": "1.9.3", "showReleaseNotes": true, "showNewVersionNotification": true, "mathjaxSourceURL": "https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js", + "latexBoilerplate": "\\color{blue}", "taskboneEnabled": false, "taskboneAPIkey": "", "pinnedScripts": [], @@ -399,5 +401,11 @@ } } ], - "numberOfCustomPens": 0 + "numberOfCustomPens": 0, + "pdfScale": 4, + "pdfBorderBox": true, + "pdfGapSize": 20, + "pdfLockAfterImport": true, + "pdfNumColumns": 1, + "pdfImportScale": 0.3 } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/main.js b/.obsidian/plugins/obsidian-excalidraw-plugin/main.js index 875a3cd..09dd6a2 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/main.js +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/main.js @@ -1,5 +1,5 @@ "use strict";var obsidian_module=require("obsidian");var LZString=function(){function o(o,r){if(!t[o]){t[o]={};for(var n=0;ne;e++){var s=r.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null===o||void 0===o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;t>e;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(""))},compressToEncodedURIComponent:function(o){return null==o?"":i._compress(o,6,function(o){return e.charAt(o)})},decompressFromEncodedURIComponent:function(r){return null==r?"":""==r?null:(r=r.replace(/ /g,"+"),i._decompress(r.length,32,function(n){return o(e,r.charAt(n))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(o,r,n){if(null==o)return"";var e,t,i,s={},p={},u="",c="",a="",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;ie;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++),s[c]=f++,a=String(u)}if(""!==a){if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==r-1){d.push(n(m));break}v++}return d.join("")},decompress:function(o){return null==o?"":""==o?null:i._decompress(o.length,32768,function(r){return o.charCodeAt(r)})},_decompress:function(o,n,e){var t,i,s,p,u,c,a,l,f=[],h=4,d=4,m=3,v="",w=[],A={val:e(0),position:n,index:1};for(i=0;3>i;i+=1)f[i]=i;for(p=0,c=Math.pow(2,2),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(t=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 2:return""}for(f[3]=l,s=l,w.push(l);;){if(A.index>o)return"";for(p=0,c=Math.pow(2,m),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(l=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 2:return w.join("")}if(0==h&&(h=Math.pow(2,m),m++),f[l])v=f[l];else{if(l!==d)return null;v=s+s.charAt(0)}w.push(v),f[d++]=s+v.charAt(0),h--,s=v,0==h&&(h=Math.pow(2,m),m++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module&&(module.exports=LZString); -const EXCALIDRAW_PACKAGES = "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stnss3srnsrsdmzbi7Bj7suzblcDgP9k3sqXsuHcOzbhYdgm4HmsmzblHsp8ynHsowcinssPngX7kfsodNmfsq2HGfsrhimfsrrNmfssDNmfsvmsjexgViElmIsgQDJmJDlP7gDJl7bg9NgDJmFRgtlQDJi2HEnI2mgADJjhij3svVnGPsuvsuQcrPspX4h/ssvsuCdngcuXbknI3EwEgcs3sswcrsdknIzfsuXst8UlIcrSYWHcIIcrwcrQctT2wQsgDJhYdmdlWAcoWsnocrvHkLfmocpX4j/stQ3hocoQcpYcqocpQcugcuXspIcrQcosdkEcvXsoocvGsk4crQcqgcuLkBgcsIcrQcrhih4cuPssnIw/sqEctYcunrl8UiIcpAcrsdgIcuzbhwcuIctAcrIcqkcuYcsnIyIcskct9Ng4cogcu4csCgQUcr4cv0crrNknIzzkAYcr4cvwcqwcpHcOMvMMcsocv0cpkcoocrocv4cuHcMHIDDsre8mLUifsqkcrz2AgcotlQHsq/sudlXCcr/sqyS2Q3lchmnrgHso/sowcoWsmXssScsUcqwcsScp3srfsrCcuPssScsDNiHsvVnAtlVicuKcsfrj7ssSco0xiycudlUXsrKcqqcunrkSctPsp/srycoactScvyFjicqsSyOsxxz3wcpacqcctScvCcvgcpKctQ3gycrScoicuIcvycoQsnCcuacrXbmqcoRsA0eABTRgvhYvhUwGYcoHsu8csA7mGcu4cvScuXsucgl8/NgmN6kkn8mULCTF1XQAZPIF4luQ2XsorWjYPnv3PaknM5kQIBSEioOwWcswPk4PnYviycqwcqicrQcrrNmSctscvCcqccoX7hf8yvLhFKmbGicbUq6XTRhucrhAsusxSAoe+G8sNEfNbBg7TFQ2kQDVQ2n0q1Q2iDblQ2lGF1Q2kpqnXZlLSiVwpH/hIwzFAEc7nNDHssqgzDpEtE40YMI2mIgR340rWr0OEh3aBvtyW3PVnHP7lMsHgcvB21MsDfsuj0MA7mYdlpcuHcJMHnZcuJDlvghtAQLbjTAA/ssZcrTAC/spZcvpcvZcsQcrTAGZct9NjFwAacqfEkKcrZcptAQsdjTAAZcpvHh5cvB22lcp/spFcolcvZcpYdi1cptAW5cqocsFcuWcpZculcuVcp1cogcrpcvb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aOltUy2/XjUqFp3M0Tfq+etpy2oAbbxNpRG1R9bkxtby2qybet+pWHX4i0i5teo28frZH1pVG3J9bIo1E2qhFbRmNtmW0s9agBtovWn3jbZmk761N9bPpt8vW4hbeX1rF634rb8IcQUazFbcXNuRW1/aaDrMwYWukANStqRW2x9bI+tEfGjR1SxZuP63r9bT+t3y2i/rVf1pyjWgzYia1nK2pgbUVGon63n9bd+te428qNScNsJFoq9ai+tzQ2wvjY31rxm0krb2RtW/WhYbUUtsVG2orb5xtNfG9mIQ31qJW2FjalVtZK2gmbVD+veACDDaNetvfW2qbS2Fvb40ORaDScg027ZbWQNvF60YLa+Ftoi2kwbcxNqx/VSraletOy2kwbYaZrHC1O9bZJtcI2kKbbONrcG07Rq5wtQJW94APn1vDm2jzaSRa5S2jpbTANuF61Kja7BtDg2+XrQn1uZ601Laf+t9P60NbRSNt/m32jbqZtJcmz6NbWNuV62K9aRhtWa278bYeFukm3RzaIVtNItbcbT/NqD61FraLBtxo6/PrRr1tmG0SgFY1VHw2+4bSpNpoW1aLa5Ft1Q22X9ZDqq760AzbRFtxa29dXIytrBW3m9atZtOA24CLWcNvFG1QTbletzPW8XrTjNtWW1CDa+uN/YQ2CLbAJsGm1pTaRptny2kPrdCtoT617DaA+t+U2tCLa1pl960ZzbjetQg2zWbUH1sUG3fja8It7E29XrRH1tHm3u9b4htSc29KbV2tpIi3u/rBiqcg24XrTetuSW33ra4xt662tszcwJsTm3fraU5t+satXrUwJvwlWqLb1FtsI29ZbWn1q/W3cLbgBtBsargTY/thKG0xDaq5t2a2ikzXLNol62TrbNBt062iwbX1xTDm2vDbDetrc2tP9V7Gv+FWBLaqht+q2pczcHGrpACAABS4Cb63pzagJti46odbWDNvl61V9a5xtn82rnrVuZrqc0aSrttM9fWv0baXNsYW1V9awxtl/WzWbTL1q8W0ki15+tYE2mFbTSLWsAD4i1Fets42/SbcCNuGm1GDb3zAjFmiCdVe+jsE1rFr8ltio213rZbNttG32jayht7vW8vrZstqGm2PrbGFtzC21hbfGNpb623rbxetlc2sMbUINtmi0qbaqP0am22f9UFFo022QAAtNt5w2nTbQ6Nv0222jauFtxm2uXrY3Npn63Hra4+t5C20zbQItokG14oATRtIo25JbUr1qAG02jam+t2E2ytbSuNu/G0hSrCpVZE6pCzQUJpc20YDbHZtoi2yPrc6No162K9bZFtNo20Rbf9NsJFrljbRJtaK2piDfbGnJS31Cb3gAgAAdOB0+tmg2rFbVNNqhW3HLgf/1Xo2kPrdb1okG1J9auhNPUWnoTfRZrknUubbott1o2jzbXptsgADvjbEVt+o2hXrQ2tok212ba9J180W4obXaNqAG35rb/ZtI/Wrlbfatrf628raA+thAG/aVdVtpc21ubbFRtC22kbbfzNqb62FraGet0fWnKbRb1vFm2CjbwhtdvWrhNfdFr4TXOwA6ttqvWwvrWvNvhm2sbbClts/WwubZUNuK22CzbPRtUQ2k7bWdtp4m18DbgZtNItEYbSn1sj60g7aA+tJy2lEbZSNtTm3QrbOet2g2kvrYJtuZ6099bNZtto26gbaENsFm2+Da/hNpQ2iMbUCNtJG0ZDbj1tto2gpbRgNq1m3q9aFRtkAAC0bQ2Nol6019auJt9o25rbeANoTW1JraU1tcImvizcyJoEs1RyY6ttL22kmbdqNvfW32DbqRaZO22PrfWNrVG3xjbxRtlS26kWvbNvD60CbaIxtMfWiQbaktsMG1xLa+dtia25Nbff1qk21M9bq1tqvWsqbTltpM21jzaE+tMm2iZbUptpHE3CWaXjwGMWoIDXSADq21U7aW+tbfWkGbfatpim0QDagRtk020XbecNqqW0S7boltgm20ZbSSLUN61k7aU1tpgAaPrefNorW2SjbpRtso20rbez1rbG0Njb1etUm2mTbR0tqqG2e7bnxt8fW3WLV7Kq762lzb7htEy2inbfyNuoG3PTbjetAm2jpbSqttb60s9bY+tk02kPbSH1rD22mAApethItCtbV4tvdW3Z7a0+tpQ2+GbfcNuAG1xjbNRtOU27EbbCNoZ20Ui1Xet+G2jgbV7FoFLU+xamjN8223TbUtts1G0PTaRRt602hgbfotrIW2b9bEZtN82yGbaxhrFE0/TbrFa9fWg7bQPtvN619raOBtYu2sfbX0Nqa23PTbsZtKy2vGbUltoPPVFxaJHV3G2x0bbxtsH22/LbBNtOomz4DYLttd63aDblAAhfWjQAKn1u321PzbHpt+e2vFbWSNsj22R9bo9tCm2ikWgbto9nXQgbH5yefKo/bV5tsv6169bKdtBS2/6bYjtr0m2p7b41tFItBibYJtoFG1QDahRtpo23wbdYAH/61J9b/ltY82nybdpNrb23hjbYlt6fW5kbYPNpJm1IHbxetro2itbc9NsVG3pjaaVtBu27xdVkuRTE3Q8q6ttSB2onbZptu020Hbbj9tzo247bS7tvQ22ejbgZtvo24/bVv1o1W0x9bgDtig2yibb5Zv0s08prdttzB23TbYBNtG231bbZxtNK20mbWaNvWm3ejbmtt1CqpvrfGNogG2Gjayht8vWiPbR0ttgO02jay9tMY2yIbVrNrH62mABdJtkfWgUbQrtocG26HbClthvWqkWs+Nv5G1XbaLRtQiqw0CoQlv3grUiqj9tsvW0XbaUNsnW167aIxtk+2+dbS/toj20xLbP9tse27/bVS1tMs0mlBGEt1itIIbSf1tztWhgadYETu26kWjgtrIW3KAA7etGgASDbY/tqn20ijaf9tcYGosTYTHk+G0x9aK9tFItCAbRUtv+23cTbcptZfW8XrVP1pD63gDabRtFo2wbbTaNucjQJ9azlt5E2w5bQkNusAB1bbtZtdvWy2beP1v2m1xTb5Ftlo2mLbV6NrV62xTasDtlvWzIbWIVrss1lib9EtGu5FJVbn1vL62y7asBtom2n2bcrto162xjaYhtTfW9abYmNuT60SDbrEtTYm1yzQ31sX22ZTbL+tsh2pFbWmNpxW2UTbrAA90205bQWNpiW06jayRa/u2nybcjtvsG0S9bWF1gSWoKLQ1NrK20vLb6jtk/WzcbQltud63WAAPjtUY2wWbQIdqZ60LDaM+tKx29AbZCNuhG1ajarRtNo25JLeeBrpNWNib9U1mSWkctQvtv721HHaGttNK2s47SAdsmm0fgb6Dt1+284bUL1uem3i9akOV5h2yAAOAdrHm2QHbIRtth249bfUlsUyAXKr2xNcx26w7TSdpj63tJbArNnSW4Kzd0lteVVonbFttPC2kRbavtuyG14Ta0dtRfWmqbZjtuim0YHa+jt1Q21/bb71uaO07za9htWU284bfL1sNG1V7aWVt0q2iabRX1ti23v9brjtYY2jpbXcdsk22bJaIrNBx29E7cANq522sbbZ1tO+22+bcxNqqXU4pa//1dW2gPbXqttJW0T7bsZtNItS7bQgduu237baClte224bbYBNusACJ7bRltb02gk7aSNtOW1Yjbottl/W0wAKLtqqO01HaoDtAe2mUbfL1piG1/LbI+tfB2rY7S8toDW1Qra/dtHy2qA7TsNuY20Ui1hetUa2yPrcjtptG1knaE+tbA2lPbWQdvT606Lb+jtAa2paVUJBpOS0iQa8UtYkGgTxXadt1W2yjblVtL02l07QZtocO3DzayTtXp2lg7a71tMAAFHaBltqI28k7XONspO1Dba6jtsJ2n47fFtu/m27jbX9tQY27frdUdsE21sHapRtsZ2+M7aWduVG3JnaSRtue22kWhmdotG1ZnbrRtuZ20w7R71pR21knbRdtxZ2hM7bgds7W2MLaLjtKVm+X7E0usdPU+rbtpt8kG/EWpiduZW2CHbcVtKkGrddSbNphG2G9aDhtZA2jcTVn5XeACAABC4GTW1nTaLBtJaa//rZjNopFrXjbll17wAO4bQ8NsKs2YjbK+tyvWj2bQmqrsm3FHbKht342jtNScNqV60prbBrVzsAR+bZkdu/G29CrIltNvWjnrZMtsz60UjbSttW/W+hbbkNorG3YDbmtthe2sPbfIKr/W2X9aANtmU2kwbZINukG0C7bqskko2xCbVbtv760Ezb8xV9022+bVFBq8m1jHbkNtJo2kLbSYNvjG2G9bzZtjy2nubZRdp6m0h7aCTtr4m52ACoNuTW3NDa8oNlpahqzZBJras25zb2xtvk2rGbU5Npas1jltPJtFF27qbWPNrTG3eTbDLt9q2hPrYGdrbW2tQa6QAdY2wM7ToNtnS0cbbuoNi6WmzLWi5pOG0lna5et702qkWjuduAG2yLaOJtZo28MbZUdvEG0XjbpetFa2+HbT8NtMAAYLbRhtGZ2pZbXCNoQW0oXbBrNJgGOCbWwNo6W1eLbqRaGp22PrUhtoj60l7bwBt8Q2iQbR6NsUm2zjaOltyO29zbbAduz23fDaKRaho2y/rSVZof02MFaSdtow2zXbSANpk20nraLRtmA24PrWH1qyu04Xb7+tvU2hsbdL1uZ60xQBsrtAV27SbRINogG2u9am+tHS2wU7eWdrim20Xa55tWfWg4bSDBp0zU+Xbu+tZh2ikWsNdr8u05XaLptem2mJbQJxUCu0gDa6FtFZ2iPrW1dosm39XaNet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ZTtg72uU7VAdsLe2t7aS3tpZ28t7c0dqHm0l3bK3tEK2gW7SXtuPu25TaSntk02pB7TNNpb63Ei0PbtzW27WbVptst62BPaY+tr+66WzTKhvnC2+9bFdtTO2ga7UQdohK1K2aoStKUmmQtebdtau3ZPburtxr2017eL1pXG0hvbsntNr20d7XTtqxe0VLbadts6G+2zaINrT63nDaOetnW2tm7aYAEku1jza7dtmU2yubZpNpMG15PbPRtpR287bUDtqUO24Pawdtk92jXbcctsgACvDbgBt162oo7dNduvW2oPaSztvN2iM7Wcto121jzazXtpq2zJbbO9uJG0tPbRFtlw26wABMNpiG0dLb4+tkQ2kkWk0douG3GDbJptLV2snbYqNsp23FLaebttD2mW7aXZtrs1albCpNAA2oAbcb1qgW2QABPBtFH2+3bRYNuaLXlA5TPt7wAL4bcb1pcG2YbauHt1n2yAbbZ9syPUlSbLStbdmmQtR0dq6O3nDaejtEp2hhbb1NtQ+1wLaBjtQ22uG7cMdp8m2u9a3StH1wNYtWINrn60xzbDzt4m2h1bVgtpMG29Tabnt8fWoU7aH1viG0E3b+RtyY2k17XY9tmu0S9bsXtdxauY1bVJqR5Xm7b0dtrfW93raLttTO2SjbeFt/C2wTbestune0EHayBtJe2627SftrSe1tXaultMU23Xbeedt0+02Da4ztKe2gybZP1qtG2lDafdtW52yTbVZ9rCe0aHaKrtKO2ng7bL1pPO3IDbbntow2l07W7tqFO2gDagBtpQ2zj7cSLTt61WPahttou2rT7eTtodm0iTb+vtYn2pt7e2Nr0+2p9b9tt1Itd3rXGNvF61kTaoBtnPW0jDZQABqfUHjanttLp2tA7R/tsj61JXbOjt+d25Jbbwts8+08LbejtDC2gBbebNq362dkahhs2Tm1obc29pPK0y3ZkpNHUmxk1QqtuJW2OnaKFtMm2lvrfeVsxPWMrbxtt7vW+A7TVNvdO11vb7VtDy250bRuds320x9btJtLy23r7QV9pkO00i0oRtHS2ogbYb1qeO2m9bTTVmmGxUtWj9odO3sjaUVtG52/TDeJaobm2jzaAttHPW1wbXldsdW1iLbZpNuP2nXrfj9oX61i/aMvt6A26T7VrdvOG0M/aRXtb323aTTieqZW36ja4btwi28X7XfNpiw2mlqzpNaP2lc7eI9rbe3A/bWxtO62gQ7RWdqlO0v7bIsNb0m3+zaSeu/s0a/b8ftP0m00tX9JpHLXiHb3NtvZ25J7TL9on61AyaeDtj32p6bWatri+3CVbZT8olWxGTUENpp23sPbpKtkQ24Q7TVhoNJxjXb5Ktouqm4behtpkG1LXbZJtGlW0D1cn9ose0VraUnt+o2jIbbONrjW3xLaZNtuy2pB7bxdoD61W7amFtxvWqobddNqQc1kyaThtz424/bVX1tbW3MTbUHNsaq+v7fDNvd62KLbRsNnlWpHlfiLUN6279a1ntf529MtTNhoNJxDXaZet9D2wKrXSACYe35lqRy1Mi2j+7UotrT0RllrZZN0k2n67aF9oUu0WXa4dtdl28ubd/dsuu3q9bgAATf2h4bcAAEUW1fmqVT1sF2zPba6NpVu3T9a3ptv72+CQNRtvV6019b8vt6r2w7cIrJs763vvbkxtNx2u27f/Ns1m2bLbPdtMQ2jT7RYNpHLVATamqtGsmhVbXxdoJ+2ELb9Vts62+4bTPdtwtU69adFtuQ2uVbYaetrG32jbo+tqvW1c7eW9tJFpl3bXrtGU2thbQ7Jsmq10gAJhtzvWrxbYctre23v3arftk025QAGQDr6O2ATbiDtSR2vobT7JoTNCsObBiqwl25/bRcNsmm2KLbxetlAOjtbaddqx20aPaJBtu1Wxk1TcNvV61hvamhth1W3MbQH1to23cOa0lcXfG8XDcqdq120VzbiptYfWvT7az1vr21/vbgntUgO21jYAADTgZMbcr1on23kHatptQE2jXDZ9Vrlm3eLbgAAni27xbWn9qPG3tyburgHp6sNbdfdtL608/buXtlR2xmbcAAE5m1MzbK34uT4H09d6+rsB3F9aHAdJo23YbWs9smm0CzboJtNItYAABLNrQm3SOaB5NONWkmrVKaonW3BA6sNtEm24UjQo5qdw3iWqSNteQ2x07TI9stO1EVrNfRnVq6qbSJNoSO18A7SK1mRmvIHfyNp822YHbG1tN2G5IhpzVuPk1coVLfNCZ6pPDVkGnvk3xWrxatuQO4Sbcstqf23D7a+8NfTqkD7Q4NpiO2ZA6UZtG9W52AIAAEzgOPrVy9sCB3GOafoiZjm6M9XSABKB00Pampt/c2zPban1t0c2tA6aptVr2807R0DpPW0BraugdzsAHoHYwNo3621vb+gdw+2m37XIDszO3q9bI1tUu25rbRZtrJFpOjbXbt9s2jXrRcDq323WbaiTtC629mrc6YF0U2zA6ngdW+2ifreKhuUACYDbrRt592lnrXLohOB2gvak7tdP2qgHSl9vOu1+Hbd9tkvW3ibVuNoWO3X/bylta92yWbeINuZ60d7bMLtlZ6wYqh8DsWB1b7ahatKgAP4HXP1oL62Ag7TAAwIOhRbV69sV63FPavBtf32n47WQNrJFrAABy+tlO2w0bToDsmW3xnbf3tFs20g7Wn1swG17DaGXtWQ2sPrbGtqFq2DA6nLt/J251bRmdrLO3dXaz5tD32m37cCdrGB3qnb3etkt2gXbb8DoD63/A7CQdevWherZMdqXq37jKdVt1o2z+7daNoFB069bNBtDP2lPbUldupO3PjaDNtfk2527UWtqetUH1bWz1wTmu/7Q/9vse2HA6TRt7AOrp7dFNqLe0ODbSRaSz2z0bRP1pZtWGbbbVtyo2olbQctqOW0ZHb51tFg29PdSSDqXm00fbRjtiIO4HbfnNs4+2oA7AntjC20Pban9qe+0RNaez1yympG1bMNge21Bg7oQdkZ2wTbVP1r2G2kja6jtNh2hwbYiDvFW2+A6SRahfWy47bKdv2G3CnbI/t6r2r/7SzavUW0e7aBbtFDWnB8FP1tHm24Hb4Qd5026wAHOdsrm1NDajRtbV2y4bYqNqz60CzbKht062t4rbvhq1u1lna33tjc27O7bcDptG0sPa05th52uG7ZLdpoG0h9a0xtZvW9t2B71q4m2KjbewdjY2s67V19rL22MHbIvtZr24hbRnttlB2nLayptZfWlMHRE5p8c359aOwdNG286bXFdq8G1m9a7eth52gs7dIdodB0n7bDNtoj2kq7Z6Ntl22G3a0+tLNqwYbQKNvNm3jEa7GtQ5652AKodrwO3inbUAdPC2397YjtptG3vg6BztofW3FbSktotu0VLaRltCwOiMHXk9ouB0J9biptyd26A7VrNsw21k7a43tBxG3MTcCFqBu0eja19tu/27h7Q6Doue0LnbajtwA2qw7Rstrz20N7b5gdBo2kF7cANt6+1QHazets02hYbcEDrOu3dg6TNtroO2abSSLSWe3afao+tEo288be/9uW22JHa7+tu52i07SjNrdtV1NaknNgKm4CVYe9tlW3Vg6e5tbS2z/7WXtqpm3ibbHltBQOmiHXRDqOu3BXbb1tCZ2yO1Wk5sXS3P9ap7trG2vFAKr1ocG3bnb1lta322abYpdty21VLaQ+tPQ2tXrUxDsMG107bXetmy2uebfDtvOG2Ig79+t34OnZbSStqpG3AAB4QdTG20kWlSNqEh3znaoztFo2+EHSuNpT21GQ75IdyA2gK7RcNuhW3TraGbtPj20vrQ5Dvqu2zXbMpt/kO+Y7XLtuTG0F/bPwd7vWzsHRnNutVWbnqkUicP2s3bVmDufm3wg6M5t4b2+SVSGtvxFqdbaBIdXu2yPrUqRrzPVQta6ttn4O1M7VYdpah0FPbc3t5s2iXrciDpl61og7rAAcH2y27anNuaO0TvblntEj26gbcONoYW0s2qplthLWwnZA6RpJa3Uiq4gdU62rh7XRDrCO1waz9gNDfW8A7ZvdqWu1uQ7h5tRkO0hbSK9vVW0x3aoQdt82jlrdFWqdw3cta+Rtgu2ovban9vte3fHaGPt6/W+m7RKNqUO0Q7bWPtQMO0wAO1tp2W1Hg7Rdt3x2ma7SH1tYe1lDbMXtYfWgGHYbdoi+0W7bRTt4fWtcHVCtvjG3OHaWbV0f2nk2HoDtzu2y7aAdt5R2oXrU3dFruTLARfftvJq2pzd2Rq3XUqDbZwdjTm+YbRktvK22Dkb6Yd6gO5k9ZVysAABxwJeNocu158r2JtnI2rlTeSNosu1yra+VNdIAOSbRb9osG1SmrX+tZQ2wWbdSLQrW1a3b2etpy2qobRXtrFh03VrBQdGvW53rQAAAKY2tAA2qkWq99u/G2XkbrFa6121B7SQ9qV+3H3b++tYzm9NraDWveAD/9btYdgfWrIbaaDvQ21h9aeht342yDBLmNrL22uDakL1Gzmh1TVs5v+FX3TbSJt4b2p07Q6DroG2d9bH3tFvWzV7Zv1psG0BqaSL19A2lbbeUdoV62F/ad+tvD2iOHTc5qH63Bw7Yzt9zm0F1GO1tFW3xw6r+tsv2j5zaD5Foo2Ltb6KNLjqv5zXGpo+O38Ha9lt4b2xT7bGds3a09EA/HVrNa8INIMVSN+0K9bK4dscOifrfu1qEo10gAnJtbg2rmtbn9qAB081qZKNB4BZ2ABpNo9W3U/ayLtzW2muWg+1p1gQ+Pbz5tEV2qXbeL1v362PLacodLY2hmHWqNoVu3mjaXId772jObdzdrhu2Dg7IAAsu214bfLttJG3gg7JdtcvWugHa1NrA63oLqIOtXnWukACoNpGG02jbYOtMzq/8bRINr162aUaynVN8Ohwbb2pvQ63Xw7b4dAoQBS9Qc6pOG3M9azxto82mPrRZRtJc2AXb1et2s2651eS5tZm3m9abBtFS2sjrTWOQfm1kDb8vtcCOk81TR1veAC/jaivtIO2m0bes6tpc2hrbpetkfW9Z1fS5vr+3nDbZetl6mjjrU59rn60t9aJBtNItCBHRFRsfU3MA6URtOy2hm7W+puvpV3Or/etlQ2oBHcX1oWG1AI6J1N7Lmk4bWVNocG3MI7Ra1UnWjcbfDNub607zaUEd5ddblzVHJgaG3nDa1wd8Gm1+Hd/DtU60Cua1Lt38O9DTVVRrgm0AI6QrtMfW7TraK5udgBgI6IEd+nWsTrRLDrN62wI7jOtpDAX2tbBdqQR0F9aKltvVGzWlc7AAwR02DasEdQ1G2l1dC6txu3xDaxqNbGmll1XBNokG0kI6xqNyrmgEbZQjuTG00I6BNN0V68QHS6dp4R2+dbxXVDCOjhHRr1q4R2CI6dEd0mmhK9XBNoER2RI6q5wOrm94AKIjuj63GvbbEdKmmwIctONtiG0m3anYACXWr+He/DuS60ADlNEdgCOhm7el1syEgyvgDEdCbqr6jfMNpgR3SraE3VJda/C7dYjut60VLbgaNFV6hxHZgjo4m0Jur/XV4StRO7R4jpho32uaBxtviO64HQm6vqvWfDagkd1COiBHW11rPpXhI6mEdMfWrrrW65syR3EDbOEdqSO6pHW5eoG60DjatkdKyOrutRlpp2B1azbskdEiOs11b3Wvy02+ubCtNwPWuNzQJNovG2SQ6idtbp2rpbUEDqJW0rnbn3t0u29M7ZnDtRB0ILbU7tDg2yZ7Z3tq260huadutoa26a7fv1ry+2aHaoDtLw2qPbdD9tek0G7bo3NfPW/H7TK9p763IXawrtpgAQ3rf6toSG2mAAXutkbm5lAPCjrx+1YrakUdPQ22eHbldtQ+1Yzbc/ta4O74VTcjuvVUr3anBt7k2qTbTENvfe00vbMRt7e2rWbTy9rXrVCDEN61T92sn7cgNvgB29LakHtZkO0K7XT9pD22QDaZBt0t2vSbQo6oFo0b1rrPtqAOsR7RndqQe1nTaRAd1A2snrZIyp/4RU9avEoNPWnNzXT1vPrVZrJuetE2mjtNVmskMiVCIBeet/F6091corXNE1+uZi71wTKv7DaUoA203e9bfr1oBQWXDdGHAcqzMNqYb1blyB6nCOAijky124O+tuN6jljTu5qpvUv2pow4yIWQyJUv1uWZV3DrYLcgaOgF1IZErZW2HMrPUdAaOsGuJGjuRQD83q0dNPTakumEawH/KI46abgcx9WwClQHgHgG1j0bTDNbZBRPouLeo1vXfDrJFSLW27pta4uHXo2OK0mdNuza8NHX7OAgQ0/yY6WVBqOutHSx5sQbrcsqbp0eitF1tNx5qJw3Y6g6MEy3qwTzf9nFqbpWj0NdNT98U6kEYaGk83K6bP/12rKlTzYCeDiRVTo6C71OFgbTzdi0FpbWCMbl0dCPqy3TYpeUR9WMarQ2Vd4mtCjYBOnX2yU+q3Hwznm8YbUn+qVnS+6bNIN/umvNlbk+pOXTpLgBl0kvqwYrGNGGuG0dFVxzVRw2qBdPF5pUjwvo7Gl00j6phdB+jsGXR/2qTJpPW1PPTTM+HwEBZQrHGNiI6IDHUKuF7bp16aE11l6VCRbL4xubbWt6aVk0/em4v1ag+H31BG2buRt6qaOUtUPpp7/BNG0WgKhmaPAfDOAC0/UYSB2uIx7ADUbbKDHCAAIsIKeiRtm6KSMOFEw3ptG0MKVn6ANRVC98GqAAQfrrQtx7AMjHdIgRv02cPr79NESOCZjT35tn9hVjav9NizGn/TR3lua0T7cRqlwKPm0Azb++tpegY3rMfN3o6H4HE9vAX3CxcQi0d0Bm5uRT2jrrAwi/qAVslzG6Hlap2vmc2+yQdMdT1GpK6JY+up83YGaVdNTj6jvLTHpmIM33jb1H1CnpEDtF+PAi7VNQAfO0N16oQzSlytQ2yOdqsg0jnayL1ak+vq5UQTaIH11nmxwNRgJrrC3ITaSGtetdBXzU5joBA3+BqCJtOLG2h8Gr5rS80pBrKyNpvmkTULkGtYm2LPqksdChms3zYyat1hSW+adDNiFq729QyWk11RqTbpNYDAK91HaZNv8Y1x5wTzC4fmybtedpplHTlNxPqcsfm1IQCt2r8M2asbCHwQPWA4NYFNp8M0rRqENVCPKiKbTn5q4cRp1loRAJfm87tbaxoZy0f6p4jNzrGlbjZKiDGx2VTavcNTfmr7teFarp6K4cVLfNeRmsNjcTpms/W0iB+Mdp6mfqbaq2vk9QpQavKtWbGjKiY4eB2x1N2a+sdJParvQrUZrrY3r+bARs61eRx9eLjn+FU8Y7ZZaKG2HMTXPto1/U2XJ/voD62OXtdDNt8jXj44+5k/3SNGbXiplMM1+DJvsdeKmTNVUNiiJTVfY7hxc5M2kMLXujr26yQ47NlwJ7AMjbGgFuAlV9jpgJa67RD3tc6+sNfWw46wJ0Is2719UjjtwnTSzag31ZciFMitfFgjfVGzbYn1bmq8jjcfRmYC2iyAm+1I8uF9BBW+vQ41bhrKcdBHGXN9TTjo6wShvqlJ0ROOz2bdP2qi75cLhycdv76lftVsZpmfB3Lg2cduIFeObcrGv0qQpFK1yNGgW/YzQXDs6tW+05rQtKmhXvTbGajrm0no6zAtlgWs5tZdjtXXAK46k04rzaantQRGsux2TeItcdeWOvwLQT+r23yFmJD5tigq8ILbcZs8i3UbZ7ft+3ERILc+4glxyvza0gtUH6nBBDRGuZXAgY6rBVTxmuiNaJljdx2jOAPcdzgqyoLYkZo+6AowbY8t+jKvb1DR+sNxwYSAp3srXGtoLethq/M0ZmaiB1NcavDikMFvaC04S1rrNNXFKRbcx+qgI2VeZlFtzH62wbPR0g2401cU9uNnPQdYLZ0KucXyWLbTDiDi2xgDWRdBnjiMFLbuNj+2Uw4rajpuC2ombbgts6O9EzeoxoYqSt7QZTkQi4bJbW5+tyW12VqoXMXuyO9KmKlUaW0uDqEQtrQ6xnhLj3iRSSllx0vl8qALiQCv5QI4pZfr+FIr/4M1DYDjsZeX/fRWRA47hKBwFIRpiQKJSRXDYly2+ELdctspFU9yrJ8dBqAafHXtZlnx1kLAHUdZHGt3EICttmDRbjqVQt22mCb9ZRjvdR3mhajaITmOnXHPKgHcSWrfqFRVf35XEld6FtdC3dqASw4jFKgAnS7Ni2/XXm1A+NR36vb9R/johAjyoBo0dc228NHfGjvZM2JhaBVtBk68NHUVGqQJ2AAVto1b367tQLFNi1W1J/rgCdTJK9mgL43BqjWA5olHwsr6dJcCSOo+fwqmbHNt/lahNOEbcG5eRzQ4HKgc0apx8EqkSoNBT8bkDNhWQeWWpyOu2jVk/qyOhstmqACAwuDBrjM85hcNe/Go8LUdAGqXDumbxcNa0QL0zUDGufx3+ma+3VgZml/jRaOomw3fYaTxV6RobtbeNjoEGy/haNf12hO4Ktf8Kufx1vY7MzNy624CVUnjobWUiGpEuQAsa4szTM+C9AAwgpqlweEW5fNBLjtIE2Nmb7uUTO4WgTcrGvoE2r5pc8d9Y60V9QqJqeK1eE6hzNkf6i1rfbGqcfC8SrBItPP671woI9pHHX/Crbgt5G2nP9WOoGDjXjyrCdkhf6zowuxtuPTUzDr3MdCQAHDHVPZEox1kkAhWAnnNMLGDgADSEBVlw820ym2pyVaptqtW1IvqLSCTP6/z5S9eTsE14cUZtt9kWh8zU5tvYXVuc0aidzJKhgnQ6DEs3CUY7hxcJusbeaKyCtyE1FSrsotgxVNonXHFjllq/nRv8d+Fmn/9dVtvqi2fQp2SV5KW/8lXCEG620yTqkE1OkSiaLTrjiLRyec0phN7K245zeaQUBYTtE640dTJKg6LGsJpsnUCQbRidwf6hilXenFu21cWaHotyTRDCQJ5OvsACFkBEpIWrAS7RDGQFBPpHrgSYd0u8KoAFFWpo8joZa9Sg2EgIIjUo5n2a1txJfhN+IgC0ACtRtcUCxwZIQINRO16CC/jrYaAs7b0YtbO2sSzQpjqGxQ2Aa6tgQf4aR+AL0UpIDdEAcOKm0SmpSCdSHHqDyJbT2AxROm9zfSgGEJ0ZO0GRN4vbESzUiTsxi1uFBlLygMGpo9ViTuuiA9qRcSdaQGl1YOWXGNfD7sASLoYz68UrdWXGKJ0ww149tcyatR0DhxQbdig1whRNneOpnlcBht4kBjPrErIFCIJ38NKBFZEDUmYESAb+67/LUe1F5nUSWagXAvsWvYnbCZhqJ3z46kUkkeOxl9Q9juks0fJrE4tPcq84nZSQBsuRIpIN8dxxGB7HSkkQP22vJrIWEWJO+fHRftsri3CxpfgVvwG+VAJKTpeIyFE6RSdApOzuLapZv/20LVrHSdvnyo4lRPcpFK6Bo6BEgyJAPdcAbGiuJ2tZblWAxROvHZVRjtlPB645U/wRrAdriHvFqAXI0HbD4t7L6mMnfdeRqJ00Y6VCCdGOs0QJ95C7ILdOA34toh2x/bOaTpj6K9E7rSdjIEIw2tn+DZyXmAAvF4HbsKtzUBzTwQSHkBPrgSrsI4lSW6jjizEIhm1I4kAC0DUbRCuJ1JmbWv1g6kbIncJQFZJ3ek6CjwvpOjDPMdDrMs3FxbDPQzCWhtgJY6sFPARgbXsdXgyHhLZAupsVV5Hbc/1UC6pfLbJAEmazSxpZgAeYG6muIWBp3A29Y6YayIVkeZBtWdqIsQONALfCoKmp1DeuODqARfR0my4HFUQ/1fNjs9QCLZAnvN4nwM9SMOFDwx3m45WMNvbq2VNY8QQMS0pKrMAK5Ym9JuHcQEhA3NibtSdPZO/niHt6H1xwQsJGXleaQY6ACOMEB63Vw6pJNusKHaZf0TrL/jqSQDwNp2Wp5XIouA0TgJAB4Tt0yqxE7eampsS0onacsd7bwOCnc+Boai1IcrcSVuPRX8Dd6uGKvAiFQcWEghoOk7emJv8s3RSqum4bJ2hArRydq6x1W2yexN5pO9CDSSgANJ3y9FmSApLgbozBFZAj6KUkA5Zam+O23OGCTuQp2WUBYRABp25FVfmavNJ1yy0jCd1p26rbeaTsMzRHEZffgCxOwbTHfAGsADCk7JbNBqiYerVOoFMAD8k6RY04AdeMnVSIHSbick6ma4TiG5nonyTqlQChnQaid0oESUncytBvJ3RWabTtcIQccTfH3AE8V6U7CCdlGOsizVRIHtUzWIwX8d6Xy4LIJieE55oBvRWQVtPRenorZTv0p3B9FzG4TlO6MOKUAAoXDFE6PKdYxOnZ5N5TodRCqpaATsd522J1Z/Xnkg2o3Z9ccH52nazWpBp62pMR077CElFPsjRalqk4BWpbBU6EitGIqtuRXl00Opatl1L82JazZx1vvE3/CrHcdvQq7raDtjpllqjSBooNXDiOAlRiTuRc2VjqktUEuO7E5H7Vj//As2qIkcUUG3/8AJuGYkAgvq8rAbpOn3rBeVUQtXRx4FmNImOrFAFUuH+1AdzQ0oA9VmtSzLpdvXVVx5w/+sA6WxM7EOls27XXvotqd+qAFrHR+mtlbVLyqz1VXVmrxbHU4GvVWbNBYrwyrATP9GauBK0j5xBwMsSOQJV2OluGn6TtqRo0sS+OxnopRjvCtQnU6vLtguqpx8J24CdR2NXgxMlhV4csuIH+GYkD0EJ6OkMGWxCTQoaiNMQ7RBTAAFTy4GnTUADSEDtuxqy4NA4e3TS6lqQXQik7SmACzWq/HSleAA80GJxeZNvIxItJdP5pKwkEcVe/NZJOjCQAUBDhp0WaqdM1zmuFmnfLGhpAiHXb5UAaeiEPHUpqrRg0N/h4bt6D4JV2E9doPPDRhwaBwheOoUCPDTrPaqA3a8adF4Ae64IVeCFp3qLgfMtIIENzVV/jpNPWZqrsbtO1m+bHdFJH6UCzvJlNCBicT7OEawCZu1JtkrGNptO2mnebTpAEBGwbYYI8LCK2nTNNBtp3rZb21IIaWBW7Z9nBDu3yoAGQIifRRiAKyIBY8x207Ws1dIAB2nQagEDp1nSR92A7tO4zbidSAmzVqKo/adPWqgOnRw8trJ3XXIVv1V2WyOnbERuufQW070QgX0iKYANbToTp1e06IMsyBVQBglzloh1XCBaZpohj2wM9EaYgFp3gDBtadIE8BHLe5mvfiVi06t1q6eO3zdfjlrBg1S07ts1qdOmy5KfHiCBBqKpD7t8qAMEalDTsD/DyoBhb4d922iTbzlrBg2n46tadotOqAjQJAGrp2JZb5UAOLQUkBA8aEge34SBk6dM3i/EQA3Trnx0Oo6V1oaV8M3LQqKrxp3yoAcSdrIgHc2FDTobp34iBx6dEQm7ICCSRpxziEIaGcdz1m0hDYlslZJ0tXg3sdr1mtFzVLTrLkT706GadjrirR7Tnlurp1g5aR6dneOnFoHvUiqABn07LR8of4ajTM49u+s1TLZq6dmiG1OndBnFZEB+kb/Vw2VdBl9dcEsm5W/Wbcc1Akmx0nRKnGikjqtwPm+uOywAzJyhQhICfQpWRA1T2juEGbUjqe1OjsDosjT2gWILfluKODRhx5OVD+WhRVBCwiZJUZ/hFSda3Wo44ExABme0P/lU7EiEgRFhBAVskbRbPbqJIt+Wtm8LAVr2e3/pqDntQI2ZArVoTH/4DjfI2SdXv2KGzfWJrC8VllwKy4yTGvV6MK+lts2qM6okN9BW6mnaUEpNJ2UY6DXo/QAQQeHohsK/XooAKMgIdmYhUBqQFhs34vbCkNkhWol7buTpEgivXBce8kEgJCnbW7GZPVOM71JNTSGolOKiToUp2bDxFXtc7G4UnQSMEgMyReLaKdk90OCOl4zrRs0TIalXt25ZKuoPSTq2J2+Fa61U/hW6VQI6Tpwx2IZxUKd1XpMIyMytAde3k2aSkNo/lFp9GBlln9jWSarWAfr29fVWyhq9bhk2aGAVDlOuBcEbEB3e0sobE3tVRW8prTkFsZeW3wBAWARqgM9SJy+nQDysk7eidnRW9sACkAyIx01IbhSdkpO/pnVF4u5C2FwbZKd4NcFNcLi1tcNhGsBirwF4ABynfG9qaZ17vbzTVbu4cFuo94kaZ0M2a93tbKGyKyMggChJw/fQcIVOZIIlOD8gAMTgrpxalIVQAMzIEawBeYCEY74ktNQO0IAK9IsA+2Ala3z1Q+m16JCqhqg+0k1aYPtkOq7OndX+AWS1sgAOgQ0YcSUnUkICox3CE6KuioPmo9cGkIDw+1cHrHotnAAGonSl+Gf8g9E6+7NeqAfXZS9xS+J2ixpcjtoqW8jHU5tHh41WsAcqdVacHDHXmgCmADx2aeeiAYBCEAC5EGmAC4cVfhNOGO29Kg6DFXp1pcQcWdNNO8p8KyhU5p1Gfaq0NHh6xz7ZXZs8PU12b2WdddmpHlQ3Zu5Z3mlbwj1VpWmQtYolr6x1trg+7NatcNYVMSwFbs3xfaFjV+Yq/lfNeXDw4qc06oyduyAEUnSDXB9sx9Y6IWdrWxLezVV9vqNV0k6TqQ9pBPuzThjqvJrfR0RSd6dO5FTC27CUACk06jgA/vROGYLABCZJWkzROwAdlce0rUeuHtIJ8popSdQ9ABv9SpESBJ1Ks6U/ZupOma4HDxp+YoAs7Jb0YJO3IAJIAG3g1yAaG3wzRte1nXq9Akp1Mwo8JAZNcWHDXvRHe+0VdrGTVYkdTRAMUAD+p2Xk7G7NSzO1ELRTDoPK0NQ63HwfmobjDUj9ug+0o/b2VNoVOzSHDj9p6k2PlbhGdvROnv8HPjvSbj/fQopIxRO2mnTH0TQp3s/aXMNipauDNArTrLJ0P2aenN9ROpgnQSeofK1/flzANHakQ/YIrEtN4rq/b+pN4f5U9gPBVvYq3v2afMNQBO30gtzTpjJ2ek6HKdQMm5laOluCYq1f2bTS1LFW6XzW/Ztd+0AOaRy15pOgk2qewCBk11cbB1I+IAAvqCH9rrNVQlaxKtpkQSlnezgBtLVx/aGBcDOSnk9eUDhHNV5Qj8gIUUxQBnQkyp/Z07Y7OadHXAFw8BAzvsAALU7o0stf2yNVQ6vU4kBRLopFcytwUU9TBzuxp2uVasBw0Rm6M0CD+G8q0ZlrZsNHmuFmnZP9sWw33haM8dh6OjbDZEKqX+0pKr0jQI1OxRcMZghUAAPGwIF01kcBGEBlVpedX+SQqgAZ+OxZ7M8HGLRqD3qyqtQOgFzVM+zr4EAI2q2tqiFq6rasADpoc13INl4NZzOzcSsuWq42x7OJi71SAOxcmoM4jXLV0WrHZNdvypWnUawDDk1K06GXS/46ZarVzhoPp34uQkVwqnOxaraTVuEC38SAxAdLEiFRnaITp4c3iE6+2daFG3MeM9Tnuq2gVqFcN4uG+lnfD1hrk0unrVHwLbS/86M6juEc1mWrRHNtZhOOzbbnA2JF+E4PAdpuG6y1Sn2r3/Bs3hQskovvFPsrEzrnoJQqajq1t5ZT1AKmaknk1Fs7bgta+Oyraio5q700PuEm/NjNWsYTvquA540mPZKgdDQOuqsokRtqB1N+b6gdgtWpoHWLVpzw3hWqWUKJtWvBTXLVpZQqRmqUCN6tWps9c/OAgU1cVrdatEdOhynW5oHn9jNA7Kud02Ovh9OCAC9J0PY7ZatfTqjgjWEZEG53N9Jow42CKNuevzZqZ6Lg5K6zNBIgZwAMolrFA2B1aJK14qGqjXHvhrDq1y6JyMdbbOg1AGLTqNxzW7JoSsU14ej/CFJC+uxghFaK1uim3EHVQPj4fRz1aFmAW3O09gBqwAnY0gkA8idgaO3dVLSgG0NrgYpPoU2MyfkHY1zoGw09haN2duHFXAjdgRoQCJKux+kAiOQasuDdzvLMI6Jb6z1bjmpqmvjER+51CRa6oNNf4R1TGRDo4I0+Ob2Od1rOhynW7sl4lzoB58MdlGOlm1VvjpS53Yk7n6txoML+rcxIBjq16oaZud0YcSHiKKIBWXCnVAstc0/gFMHYE5pWU1wNawvFbuyfkGOPkiGayOEaD8A1hSvQgGxjo4OAyU71ClsJO1kQCzaoIiLcRE3H1bKG7OpEdzvgAJclbTadOGO9nnSigHFQ0DSA8iAEZO4z3udVEJID4iAnTFhLoL8nQ4AGEHj73LuHlrbsbICJlXWdEDSLhnoi14OzRrXA1oEYhS86XBCfXSYonYRKjS4j7c6JudNLO8kCHbjgQy1SoZHCtYUG8YjZ5FqniLgQ7091UUkFdcByvABJ3wsIgDlarO2mnZDxFzMSc061gIlcG+b6LR5BMrUefqUat1uyJFJL/Evma0tXguud5GOtt2C2Too5gR0AIWEKl5NVAJjACNYBu7IvdkTvO5jHSd6iKDS1NbEnNIJG4CVfsztS4g2o7CQNqOy6t2IaTom536k7T2AGBmwTIHEivRI0+FhMSNcLSJITcyztlEDc07eLUGi4OKnTCgE2a3HsBzANZUjK9xapEVlcK+2AP/w+RAJKnV6Btsp1An1J0ApvuAfnU95rdy2KkBLmd1SkKr3H1qDd2T4SA0EiTR62qHZk5q8rVFs6WUKaCRRdHbKRtH8rgtbiidfUOxvDVC1o/J2E86nidsESk/nfn+GYkDI5JZ+d0UkY08D0TvVcJhQaCOKW0OxBMcS1tcO0SOrDCdD2OkpzeEdtOh0RE6bLkhVqZfnUHTpS53PQ6MQIlTmwlTR1ztw4pjProUA1ZcT4ndikgbI3RVr5RAH+mlsnUqZm/J1YSAIt5/9W+3nVUEgrI1Q0bw1kuMOiNIgAZvRZ3oC6jClx0ATsjSSpuFUxbrreyNlrWu1rfIho/PXDkbHWtTPMNpzbgTqRTQ3U7rUdjqKzpzb61qAY1dObsHVR1asR5AWpGio3qBbDyNN1alzlVQ6qza1xta9Yd6j6jK8MITsDtRptb2HVMF62QXe2AH/4AcVQLVNzsADjtKW1ogQDltavYdRL6z1PKhSttJ1rA4PVN1N65kCEJBkTh1oE6ntNgFKz8LEc5r2dQMXqLBd9gAEdrenDpcdB6iajidXs2YNHV9XHna3ZzbC4dy7WzijQC5sZAijXBq4dTFG/x1fXDoIJ3K3Bow4bcO2FzYbWW4vX1GrnUdV7W2CtWi5vlkD3taMMUHgu1NcOaJvHZ1Y07zQqaiqfCQANeFuZ3uM6bmthrOgDzXQDnPh3O+bMXNkHWjDrVMAHvh3q1rqSQNcRdtTch1osClTAA0OtneKXajSOuCw60HOryhAuHW0lzfZqg4wCEda+nVFgUyvLfAjpmdUuUbwqNqCOiWlbR1tPYA4I6GOtI1Gsr0IQjpY631daDUAZCOiulY7pt4kB0I6FNEKVGmBcCwjtudXiabZV8P6msTrTmcG451POqpOtWWmkRwP86rk615UavcavLmhDTSh1qmADKI7SqN0Lq5oXRp1ow026E6cNNeiO/DrRxgCMR0vOqhhdOAACqlVK5pYkSkJYBNNlnWujTZs2xcR3BXr1KNZXoRzrexpsm0BsdbXOt0LqlrraxIE861LUaLA+WrAKJHetRql018PpgutMmm94AEcLtcNjyaaIut0nW84XWdRtU032dbsvNJSOu4XfdRuyvUpda3hdNSOy11TmXCy60F1qzXNKHWyvLQV1vs01jC6gaNzmm61zeV1oGR2eaadAIOAAUZHXV1thF3w0aNMEjrm3Rja11ogULOua5SNMC4VZHXFppFwD9daUtNEdOuGcgm6uLdXiMrIutY3WvLTdW6p6vWlsAputwbmmbrVi5klJ09/h5gAo1wT1nfuwGOgCSk7qTMwUqhrTZ5VFDc2u0h1WdfL62jTFp+ruZ22/aUrIC7US7rRvWs6yQjIbpmE2jEAZBvj+vLLjYo6atNUbm8NzfNJphABei6u7wMzCcsuBrzrmECUo7rRd16q0HrVthTpi0quRkUNuA4HjlaO6o3rV5qo+b1Y1O1sskn+DGfUSo6k3N+0asmau99h1C1eIYU3N/rRF5WjIyq2vUZuaetNu16k+tWfAAOvVucbFvFIUG8bTUe6qOZWRUBn/10/ABujULh1b2hX4AcIV4OG2tzaX+uR0CNi71q8jgGjmuAqwAd628C7UoNlSYZgAODhq200KVbWRaZJgDkjdwQDIWAeoa1cNU7moplXJOvH/CzIambwyq4W7TTI+FR0CNPqIL17N6g8XaopiCjVHi7cANmGgDScvgQEZvWQE76sM/2m/1HXjeuVQDoUbUdAl4uiTDR2LoP63//k2b1mN6x8XfKwGfF1JPhXxdb6KG9cODhuTR0yvgLhAVrAL/uA4XA46QUCAM0dvzK7gjQrkFXA2AuAgJdRyuPNHfJ1rg5Y63qCYAEamDDzeWjqlvXS+5lUA4SmvW9diyosfAmIbA4duN6nADQ7erHF38XqyvVbYu7bwBbevIl10YJd71OAmh5tf4xsIbR6E7RdNcsfAJ1fKDAE80eHgJsAkd6xtjbyppu8wx3qG3w7cSt29bxLqV03+cr2gAEN65LUHxLua2owMaZXws1ZXMrJ9+uU8266bt+kneiAobUbpqHI00S6wsNIku2obcCACb404rgoH1Wma7dHbq+tk2Ts4bnQGsbK7/zToeGk50psrwoN99UPQnd55p2AibnYP0dm7GkNDW2BtLZpmQBxGNK1W+VDZKxsfR0haB1UAbkun9HW+jqPCjvDbN71BGO7e9Vnpvk62IAAU6NwUAC2gDG2qvOyoisCAA7ItSMDZo4ygl1l6anGNTV29uJSSQGTiBQY7D4NEkuiITVCRrSg20S6aRt29iIHQA5LqQx0hMa6CNYOQFPoklsHIfXoY6y/Vcpa3HwamnAVYDX3q0UNrgmhWWs4QAwgAeSaT9NZqG1icixAGW81hhbJ31YIgPepJgAAYY2g3rmpd4VAOCWlJTqIfU8gaGH1WH6l06BQ+v2pCmiAEFwWA4I9TZXeu3E0JS6471ohmnqXbABrBEBZjauMdX1Wi/8M/+vk5W7lA8nQ6C4D/TfMxsEx2w+b97CROCzvRCigBvIDg4aJMdqj69HzaI+D2Y2bNthO1j+2NdsacgHnF1TjaMtA2j2VT9WgZpQ60ZAA1xtgxVArUFMAFsfWY+bk71Eku+j9fT5tC5UVVbu8E/4qu8bWz5s8ibXS7jUg584X99QE+rKLhAS7Un1E/m6+cD5joabiVV4LRA0VGtG9RL5uDfUqS6uDN3r6mr4PyBFWw0DdRvMdor69J9ZLEwYkiRBrCJtuT62MQERqnBw0I9oin11E2gN9SxNoUM11vqJ2IEAdfibUdWsr7b1kb1pd3Uu/2jWyoSkm3hw5T311W1TljSdju6fWZMa86UBoMHcXbYZsGfUIS7hn1Csu8HDa4Zpnc1qy6Zn1SCgHlAMt2ud83PzAQhCWVadtLalBrcfVp+b18NHAAD8TZjfEEp1MwokeVzR4PDDZDeusw2ULgykliU20vzeJRuGx2g0Vq/NAnip72tkACufXdxdPWNjiGz+AHwZtmx2y46aeN35kvgzUtjvam0rY6wnsx0uuUpP35uqM2AvrXFAklG7YLRC+uVjTt6bE5dz8G7dzZryqRfVovrO71mL69fzbkQF2cieoA016NbG1DPI0ZvtA3zi7FiNruG3vDRf5taM0G3rN1wx0GxEjdXLvex3q7q/c1rQwUzgAOBA1I2Uvrfsdk8DeaTe04CLQAV4bKCdh7G2NVbY4jUIaZMbyH1EOOl19WEToQC0PsajJdU76uA5DuAHNfXygwEcdkOOh1BA7Lp++iLy7uZtK8uhjpBsBu1ECxiACZdExmlPtbPLsnw0IfrZ2yhMunOjLm+uJl23pbHXMN0dVWbSTjoCx2rkA5JQ0nGG+XYzjs66x3y6WcdEAgR+XZuGufl3Ucamcdts2vN9d3IGTZ3Xy7MpdqxmwQLfTjv0o1Q4BP5d9OO7+XfzjtxApHyaSH1Tb65KXZw5sUC1eaaYYNvmQOyIA7LoEc1+C7OrVIT4YzwLMhoWnmnIAR31tIgElcLSIFgA0YK7lcdC6GyEnYy1jVx3tzaC5dD8unbHVvhuIV1kzQtJdu76giNbQrpIfXHvrWn1RCuqtcM7+oQl1XGat5tOCu4bwCyIGffXPzhbjN/76ivDcPVuwxwJBa3+1R/m4r9WB+tSC0Jca6I1KOEMiQJdxARIBHkA1pdjL6vD9Z7jrfm10RqdpYS0uuG9e9eHil3pS7kP1FQWr4zSXhrhw0WDpAJdcj21BbSQ0GVjgWK7/wAZCwGNDctqB2AjBGbNqVseOojndIhr4/U6ABF1t1mOhjpJ4rtgQaCfqU95QzgCRbcJGt+M2TzgAoA5kGhpYN2ZoIJ1IABMGdanOpLYHnSgiV3F/q2hVUJm8qzSNRuDlinIAPZdOwWkvDYzEHaIDCwb4TNaSu3JXSHZj0J0vcbJqyOuG9JXQx0mcN4Tyb1I1LeO6kjXoToMHUGk5+ENNyiJ7FQ5+tZmhwzBFvNxf6uDbNiZooh1QuYXl2suGxqXfFLrJMDsy8T2Ae4AVCABc+q0gChfqrltTrUifHbORtKbjwkaMQgLlOuv9VrLr1PA2AAK5dowAFwTUN+qXg0UhameirpG4r9XHep3x220AYYNchGs3svpEtq9Bzy6D8dTS2okzTctoDA0zK6meifSu1WXRaqJhg1efqBldsyidZXRl+rvx2asbgVt2gm+LTQ+LuKAAPK6UEAlJATvgI7TlmQ2MK7qVwehOt/HYXIBDF37i7kv1Isu9Fbb/jsyw3644hKtLoWglbfGnBjw2eERaJAFK2tLVOATomjDEkAg+NFoqu4dQt+uJIDwE7I4dGN6n5XaRRpfF1uPrrv1SYWlizWeLoe/VPi7Rihf4ulqDeVGsSfAWDpCwtKKu37QPhhsNQAYoAepdpqG0gnVxth/0ZtS7PUAb6KRvjeQ+AmPTygwyR1bYW+wTQj+oKex+K7yQIXn6kJkKZhuLnAsE7y3+V3SL1bW1jrta1aAa/1whqmGcLZaZvnC0eAaE/wvEgOj9XoTrTW1AYh7Mg6c4XfjbmtrSaDTfqzVdshO2ATbz+pZIDxYhXqtc2mS8LaL+pvC3SPY8nQn/GsJXZoTt8w1f9xM6dg62pqmj6rrRI27Q6ABdTbm/UGP3LrAo2LraYBNphOgBAJCXFOQBEYaX0NVc4OMdegJoO1RsgQx/1HQIB39ahKt9/VHoJpY5Shq59bfhKoQ4BHE6E1kv62vNXdOLuOy0gbblY1b24GJXT7eokICnsA4NtHEq/t9cRkFBoohE7ZdYKqu8InSuBvrl2g0UxItryal3DRxLtnHWwS6DxdCkqjG9UX+t/NTl8rNx16kWkFbQHevux1nEA+JuzgGypXYsroeV06gbT2N4IG89TbZFtClX3maJVdaxam/9c7zqWpDRq73MNDnwTFhKmrox/WNE6AotcP6qSTZurtUiLbq7fFduY8QJXbKrpDfXyq7tI2eKAEaXfChvpC02CprpdoMu1DjctKsQs3JahkLNZ6u8KgEtSCCgDIwaNpdRoGmNjWfxr0J1TE66hN3qapgDWYojXl2IigIb1yxO3qLZABoiE2qRFxpdsAGof9duLuuk1eIaHx1g7W3YnT+ru3vD4Ua4JdP4u+lXQvOGos2vzb2LNAkGnDXR+5oYkAxhx2a4JD65GIA1LqlQ0PE6SvAtxO9UzaYBrYA1L/rHDEZCwSoDdjBrlKTUa7rpdgaGp+AB2SGrpDLi7UQAAyDU9gBIBrcigUQI40N2EGgXgFvhpTApM1w0YgojgTt2Ehrpcy2asBgVdodQej9QiTpo6AIibBLNJgG6pxGwBq3jjxoaeUAaJOuFAITTpFK5CIBYDhzgGlNOK4BoWC3WAAAAA/UvoF9fWlegfANHMW6knVzFvZ22EfqMegDaG2SDXAcmSN5oqo5jmZrGyyLUTgrIWB7uBk8A6y4UzCdCZAc8DGvgbo6tmukEDY6Jpoki6eRqgNTOADPDdapm9y0ea7y0ABmui7DQvuFlJ3XR1k4gMQAAViCrhsEI15oB5xdfQG3gYEY+wnDjqk7ZgNmpO3vbeRrrIWD7S7kYN3roZcXe0Rscg1xxbFksJpOp7HYhBqX/C4a7mZddWu95wEYrp2V28Qb99tSlm2l9QtLueV2jABnANLpO7zRZY6u+A2/AaVUAUYATuXUB+ui13nABHANS6uxgAO7OpNNgBk7IlyefKkEDaOBqYGBqAaYUANL0UOoLguELABtga0UNtmu8wQMWHCKFSzzkLsNYP6zwQGvLq7w3NS7KQN+DWo99ZO+odl0Zk6GQN5c63yNdVrsml2gGAJgN92unwACQrqyF0iy7r71O5sAoLbgqo/i2P7Yz1dZAGhDqiyoB/kQ/a7FQNOqgLvDdQqqRgDGwa0oNxpGmLXXqBsoo3iIagNdXgGinvOBAEal20iBBydrQAAkTZJLqlQ3ARaQQNwr6ExDTOrvNBQCEaFtdi6uwlDStrrnJ0RHae5VNmuul9fvgGDA3fzqwwNPWuiMDY3LrAo2bk7LLNmLO3LTMmBqEVHxEaeNdOOwJ4xJcRqtYB5gbawkj1cVkgMWBopUL2y6vNdQwG/QgJtLsW10xhw4Nw97SbUDVDzqmO1yprQKdBP6vO3tfesA13wYbCQIG/AbaXdBTv2O3ta6t1d2X6vb0FxBuB12mU6ZwAkTGhuoOlLqb6A9S7uAAS2u9aZXr0ACS0Br4gotDUALlXe3Esk2D34bm+d+oEcHrW7etWl0JXRHANB4GmGDe7XH+DROIamUAJWSBE7Z5ZoyS1BQNWINiGu39XZbrocgDW66zByhyq4EDfnBuel10dakOVGNQaIALuIBA12nGQRDtDJ2ppLRBBuA12SS7uttAlOyIzbdQx7E2fa7pwAGEGlW9XmRvwkBtOA8MN6L6iKyPhIB8Y4ZEBd0NH1KRb9bprq4g20ABHANVEG/5XXZg1710ooBC1wH2AC2gIiqunSLqU6UsNyeu3DXf3romA2XdJMgAYyu7FLdVts+12tS60VdvwWyGuPERtx115way0dUVAZFDRwuChYR8MbJNgllO+8oAdBugYBjK7eOd7Ku03ZPiBsB12Ra6ctdyyuu+AM9EvTnDX3qJANc6kU5zTYRoq420SR4wIxeuuKzeUuoCp2JWagqdaAG1wTSnrpv10Cq6hgNZL65BALSID310+3rwqdMxG3p9Usrr212AwaGX1fuu19XYHrvkS1PGJyAA1+uzfXQBrof10L7heCtz+uzjXW/rtpEAf66YYNArEb/XeC3RMgA8oAiqdqVmmcTY6esaw1VRbfI1qN2dtOGYOSqp2MmqvjckUuv2XeMupys1bib/YN5qWgL7HXLuUATWpbBcdFMuu1LYkrrWg27kVLpd5T3FBQi6lssIDKsa3UtTcu3oVY0rqtYCg3rmaAzLAQcPBtTu8g1p+QI717kGxTDSwAFq/WwG6dZdHauysdfmrvCMgxybtRA81O2LJKU3DVy6dmFiGtdUAVZXWlYx5I3aiB8MNe6u5ZXab+uSg1EkaUddql29MWkRLsEx1KIa51I8S9I1AH5iIzI2BobrVAmhuwXDRDes5SBnU7J1V86WvS7SVBpzFr3K7NruJl23RglxtkSN1vtau8NXhumZXa/huAk3Eeb3aAHUG89VfOlp6s0j1qUzcv1O+bzUgboeV2NwbhUNdD6keoAw+sPM1eABojdXX66A3UagHNvU4rhO9EIb60I3auQGQF00obb315LABt8CUADofUaG7aVwMIQTMjWWLT6s39Qa4fNKjJLaDcsrpSA3QEAxoNE0GtmDeISz3qRGoBC5d+6ugGRHF+sQfVM4bIldxGqxCTeYIGmN1DQax1IqxuxZ6AAIDg/Aq3rv44rOuxq7ZdBp5QDXQbP4AiAASJjUproNQ1OG7AJdxYcMRUN84HbjhQwb3oNe1mD5mHvLoCgB0CBO6AGtOmN9SKwBGN1hG7AYNq4u1a7QmupwsCfG6ENwMMGhcdlplueu3LK7z8N+iuhQ3ddduVp2b3qe8APmWmunVGekOu3LK6LjdDculp9BfBpVp0UdVAbt+xum8jZ1LsgABvwa54mSxuo9BI63DhMgdkaEbtXX68P8MsrsT/R5K7jadjJq6MgHBLTLc0Swam2EsyG7g3S4Jv9g22Fb3jdmmQHyDU4hsF6JDAAmjdttOnWDblhtc81qG7kUASOukjPkkbrlg0PG7Estwpu3Q3QldEHDwvmoUilFECbNDQYrvZFqmAA1FUSpumVnSYzDVN0h3blldEhACiBLMht1N13vqSFd+cG5zTODhroWzhwb2IREi4JbwTnBtprhsYAiDdC47DuXYnTszg1wm7TTdXn67ODXH+Vzg02m7rrkOauu7VdPJs5N16wbJYNx+uyAAHybsal0Cm6DQYA9GgLICabsSy1dG7NTdDb6w2XRXTpU3WNK62ANt8OR0tqewDBy2F0680gHxu+bDUNeFQV3Gm7Sm4zdOpk3V5+qRN2CAbaJdFdOrunbV5qrfBYlAuNIlbGoMDesbtOA2s66H2A+1rSaDQRjung2H3bZjdN52fkoG9SjIWCNQAltdfIoFwTWabujXCKG7gTN09Ou6zYn6qPg2zK7T4NBGOmfDRfBuNMSuea2ANHF/VODVzTD9XTrG7vDdoZESk3R0CEHp1q5aUtdNRu3M3ddLs0Q2Fm62ANDdO5/Xc8bqd12NS7azdECGgh7b5GvMEBXm6hoNyyu95cGkRq5Q0Z67T2AZkAV83UjTqON00oab1dcKG45gA6rrS11Wm60GtRCGxBXZ2rusVou4bsgA80Gj8AA4XAEI1WK6TuQ8eWtPTeWbqZK10K7n9dtWu+UGP+zpHNUuQaHjdYOW5ZXXubviV2iIb1o8UD66yne2bsVc4K5BjjdLaunane3lus/XLagczdnpuhzwJohuWV3aIaSX1tGu+rXfLEqiACd6IE1wXn6tLXR2bsDS1ea7sGdcT2v6za/eABs3l3qhAN1TiGmuMgJukA1jS7e7NckofZcL8oFvw0rMA3jdEWu8dSC7VpVQBUM6z8t/k6CvxQ09phiwEEBb8tWluhRVGwztUKVlG7b4AdxukcDc2ZuZEB8laKsNJWujo3UMBv4Z2gc6EJAwPO8iDUPrs8g0bPbRGdEjBEWgDs9oJzVA2bwd1gC5KHdfIzpw13jS78QAaxu0G9YDUiEA0uZI0b1zOa9hdU8+rQ10FoacDdIL6tA3S+roc8Bvq7Pnt0Nm1VtQYnik4T6dkVWAoxunQADxbqH/X0KbQ9dH7SRqXVxbulQCu67mOxaa4XF7fkhp1zWOM7CXtKkmugVd5YBhrgYLgvUN1SGpFDSG3By11MvblJN2BqkiDaPLqu13oIB3LdzTG4JnTDNp6Q0qoA+rd6KGpfDWn5F3y3PagiGt2NWyZDYqWq4Nh43r3jdgSGtWXTq9tSZ16vb4btUDOqIDdU4mcA3kQbYdNCHVHZDWBbt/12Ga6KmdCe6zjDbmPDAyxylIU041kmzfDVkADOt1p7r+81mjjWkCDaUTll3F+Ab3Qre0I2ICABqik27va4WAdAqyBcHPE2lfTBNwe5AyMQPHXbzemL50qK6uUNzR9OeXWFhvKw0BYa4b1HjOrjSMoBrht37/riyNULCbzHNihs711IsbBVd6/AJVACC+oIiIxq6PrdKzOnZnQt8nqNWAW6HLdJCuwlglKhoqK3kGq7kNKOgHeaDCBN3y1aqBegNcQGrojTlru5Q0K67sANKdG79jSqgGJZ0JSBubd2A5PQjaxIEeZ1lehaRAAH2uA9aKOuVsD0frIwNaKGyD7egeuVs3FSa+0NHJuvIrdLeukQ23vrujdEiuxb9nzevxA08kbjUNbIG5ZXRIBtb11KHhIMNT3gaGINCzodQ3WK0oXMwhgQ0QK6hvQw3XobO0NEltY/9WiBFaWAw27UyNGZGqkjXZEELg04gRRNdZXoWdXS4JrE13PlaicFgMGk83ci2WcA2pobJWAFAgBv9f+uFWIC/G6JV4dscDaTc3ro4JopXTnANCf4f23WV6B9V1SobNStapdVtDXWhpwA2u2bhLdPLO5tDYaVsc+2kaoblE+du6I3d59otK1DGq+0NTAG8u3XN5rl123Qo15doDW/EcshBucA2pSxV31MrO0qTeEADlZ3ZHr8xVc76pXjfprplV0nS6qyAOkAX43ZrbtRA24PqDQYk9uwtlA3boZeUVfaGj1MZWku3UDEBuUT226Fdd75m7GqLsgEQw1+ibn0NOkAV9DaI4ESt2u66uANJL61cgDQbo7l1ylJH1d+/6l4nWaRvSoAdG7vqUcSCJB9Vg+pLV2lAb/3NjsuqsgKMboCQ0LS6XzI31wdqXYLAg1t2bobyy4UwANojcigEOcBn66j7dtdG5Ore8bvhiA6AA2wNRtuhl5UMBtm10na697NjJq5ODYt+0vYA0YaHbds9usGCEe+o1vAt26R8tBbO2H7TFzsZNVcYb1v1khaitnfpRtRV0cq7+qyNbOmqHJCrukQ20a64Ddd2uxUDSqgHi/UG674ddBKGke3ZzevYhGjgbsVdFVu7B5JyiC7Z3YGr+VdW+uzRADCroQq0GYbr1d6xuu9XVQrtGk3mYb4Vdb4uoe3TYRpyl2OrhO4l31ul+zXtJvhV0qoAF2dR7OiM1R/ZqEd14IbmpdV9uto3XWuHSl0n26/9d1967LDbuzr/s37s71Hd2Kul37b4ipPZ39gb59dmTGjR3S6LpP03miab2dYUAU4yHezpZPXP9BQHN/owd63Q+6Cgc1vs7tyyMgET9naB6qYN2kW6nCIGf2hrDTcrqGA3NYbKIgUD6nfTS1MEjA23wAPsw/yuqRDSZwF6N2NPrSZNnWG3yXfbnFIvho3rW/tA2GxJXcSAly00oc75VwHMmybDQXbsw50j/bf0sfDGwa8HhzqPCiFy6Z/tu1O9mTOFVtI52cYbVzde2GkC8P6RpR13Uc6FDd2lMPJ3ezNESV0n/aHgizsAGzXWdrurYTYhEYrIndu17DfWAFc1WjK6iU4z/28hzd2oEcoABO6NbdwUAMZXfxzudgB9i7LR8WElTmIFtMHiV17q7nf1eTu9QLfqeukewhG6tDd0nO/louQ+D7QA5AdW71Mo8PQnXgDtmFpE4bLzsVMGvc1Arropw0UA4TJdfFoFhzeaeq5w23m7Y1dIN6o19V87oi8W44aFDdAgOrnDXmEwTk02nqynsAb6tOTZR+sql0UIa/Xo6xusK3XQrsqV2lW6CSNS4u9JcHw5uiM2K4aNgNGcugRzZrhotoCFK6N765lC8pXX4lSBg0V27TtNhuGrzna1pk3F2DW7h9d4Eu/G9XfNxMgAhsAaDdM4u8RzV4DqjkwMu7B9dTLuutcDvLrxl2UG70XxbuILzIH6eqiB3fNbm1duSANWXUkDsviKKObncN1JG9nAE3LrS53J4ahZdKacPhoCXLuil2ZzgoFNgeGtV3Wahr3k0Mc6Cudgsu6suLSIDTw17SB0pdXCmxqsmdzsTw23ybjXd8RGs13WBeGvvXfc7eudTeGwOXfERqDI30Iakrd2wOgfDWIZFu1354am5dbFaoWLRwABbq0b3LtatbXO8xzaq7urLhAa63Xd196h13eSYBaB2uu61XdcFuubXYXhrHJwTWrwVUfrugAQCm7qB+hPK7oXdCuQXF9Tlruwd0r+a79dBEgcHDStzutw1hy77XdreG4N3WLbpqB0kEbK6tg0uhVjcnbqVp1cQarCN1+G86SDqRuxg1EW7iINjmSB23YXVvLPV2u7Y3d1bu9KXbiDvrd3z1bG3dcaGifFP3wDlYCxiAHjdRAAV7nZ3QA0IDvG6l/wCBG2PyEMBudd1sVqhP1OgAFFAGlrsP4DYEbx7deBGyDDT8bvxl3BKRkndJyAZ/9WO7tu52a671Qd3VK2HnW+tkhl3w866CNLUwCoQK+uGYI271bTlNbBGlHnUUprga1a3rr9ds2upEjfxbpai2w5ZgANQtuu5TfmKv2V2Ou7j71nru6/XbIRrM/UnXrAbVBtusr0EMAE1N3/27+jdvdkZIAEMBt8IDpa79iNATmmBrczzozB3Ma6rCNCicVA3dYUuhYTYwauedmb65yLbXIlEcAd6793g2NugZBr6+tBvX487SjQhsutlDV/BuO10DvqNxAERGrtiIc7ucA2m/q37doJu8cHTgRrlV3giBUiNeuhf5XQGrouXB3G7Gpd1Ims4APXhi2mB5EaNpNaNu5CDV45Ajt2LVVIiN5rus3nWZWuCc1pNBO3drtKYG8JxIGSXLiAayvQjWur99R1rrg91HqaOXdcN6lm1dURvrQ2e86Wwd8ChPB9SOoGdlCSAaJNdhtu493QKxCpI3jS7vUNsBw2jXdewEjN0my6cPdI56uc9ccRruV3c66OiNls4YcKKlrvgt3UO9o3d9ZGxD3YDBrA5qvEas+d4RkGT3WzbrHvV9K7AyNfWu5K3R5Jt8gz0frpHwZfOj21apDucrX026u9drtKbw3dlCuwkBvIaYv18yus4jeIrsRN3awRYDhlkOtc9Q+TqxI0yuxmTAlUiwMjWVbp610v3qdDd+UuqppItrvTcoeAJeLd1V4YknVSRrg93sy9aSN/uuosDeJLpcE3Ee6krd98G/VXXp7sy919XgO5dZQAU1DYMbtN/VWEaXKdoyu4vXR81p8LBfNai2dMiuvSaCERplI0oqaLApjtOGPXZC1sLtU9qBs3dMb6zojXLLul9wP4bAPd4sGl/DWmhuVt2AwaCbdCNujcjdOboNJy2kb8nNRLWwpzf/zteTXFEtzqoOAGpC3QOxpxU2Rcbx4Ni4uzx3b17snF1DK7wvdTWuy89eGRrgF3ctbuC0hhGgRhgN7tPY17WY8kGiPu53ncubo9t0NwAvbdAUAH23Yy+pk915ob0X1kD6rTLW3EggC16TRaNdtwgFOjcQLpcVrt6BsHdcN62sjfEBurLgi670pdLZG/EADPhrI6iZaBv7VVMOnazQAAEGqeUWrupgXSuBvmV2NOahyNPXulpzaORsugAF8bNtd1UungXTORryl0ky64EGAgu9xTGFrsA0CDh5wcN65G2ecrJbtfgDrG69yNEgu6ftUeRt/fXyqaXyN5j6veiJM5sRp1DXh3zdX4us2HaoLoNU3qC6mjdb5GhmgB+RvswTOw6Xvw7quvQXZs5siRxEvrVldDngKuXeGruNvW7NqQQNHgARqXQKhvZl7WC7qVdmN6t63SmnAmjDkq6EKNWGuxwXTjevZvUOeBXBd2du9wXSRRrpV3jMAGVd14uux1Z85vzh0n9qUI1vzmgNJf85txY3gbdm+dFDuk3XcXDtBc1s1rN6tdfuhZXTELo5rWY3wHld8Qu1rTIS7rLU281rkhdCNO7p9WkLtUQyWOrlld+5sAE3Xz7vi/XwF8+ldCt2iPXc/+p0w0C8RKcN4LursXYKRqgl3lC7e3VSlG26jSpRtFrVwdb7OtKK0F+HSlRoSACtC6DnVBlGn+HXd8GMo2aQbDNdICOqdTbGhoGF0rcaiMNIwu9WtRyLoco0TC6ZnVAAAWZ3U3TC791Nel6jjTYSAGPU2bOqAqNywuty9eQjvVE4PMBn/dD6mzYXVm1tpEA7C6LL18WmsAPUBpqsvU/ka9pAyHsSTrfK5sV4Br8AsqNEGmrhBChLs4aQc1BUONDtazf3c4AAeF0CBID/dzgAdRHcK5p5/UJUL3hd7taigPU1RpnmAtUaxOt7+jLajeRppM60GOZKOtTAemjTSCLrpADv+6hps4IupjTT/7qRF0a30vEd6tarz0C51o1voBI7bHwUk5PC8OwHr0uxhI7lqNtIgdEXXHWtgD0adaQutlq7GQAMgHvC628MrjhN6Ae6QPedRpCfXg4aKRdJ/u8pHTnWooD2Ga66RdJmm2NDdl1uxpV3+7SaNJ/sC1zawHtISw2B7QpUPSOrgPR/7t5F1Vdb/NNv/uwUXXXWsm0CBUbGutMbqrINJIHp+/ULI7k3VcgegUXTFpqxo2Yi7HA9yWmjAcmHeqQD0uCbhutaou+djdoHvOR0NWqtRdBWm3UXV2VBpo24uNQWE5oKDm3U0buBw11+6Qb1hBunLXYY7v6A2la7DitVKOtPcKG5ps10ze03cQnTkLLDa9JsrjV4o662dJrKR1uOGLtGI3llxNVdkmwLFHSH9pxR19uqrutmWGsMXTlbuRQBTAAXddvgAIHrbGLpHrXxi7txNRYGo6XXY0GTF0/l1I7dcPWjlHftGoAACF0+0uXoqb+uGN1dG7ebdmf4TkzVEQBRQBzG6MIAeYuretRvWpnzH3O7Wyyn5U9KDWteqQ2SlPAQNJAzi8WjdT1szc3QkBs3NdYu3NzelzvJ0SrEBdUdLYuqOTCR2LPuTKAazrcO0Gs+DctlhOvXTabtetfwe0izCf+vcADcWMLGNbbmx/bOYIB7YJPobJWNs4u0XVXiUH/uTlYb3nAGhAYsOMZEBpfzoKFWAcG4u/R7LNrtYgBOoLCndzH6kyAOwYG9R1vab80AF7m17TZjetm13d2aVCAZN6lVuCCHovc2WiqqQ99IetezYyHt/A0sh7y6NRzK9kPffrsyMg4PqaHIqUWwhcMB5qFvVuPgBRaseGip7iXMURoBFqafmVMka3C1DeQBlUBD3xGENSEuus9Kg+ElD1oIbqyA54m4tHT02sVD0GoAvAAKoe6GIHh5puvWXCbqQ94fu3ZzXSHrht2CS7NglFEujnTaak0hD1kS7bQ9dEu6z9Wves9vWPNrko2IWQGGDcJcArgCfNq1zNOqmgTzZroCu6SN5bAiNjIeuXTUGHo8i1Oh7RJdsnmnAzfR+oUl1JDaAht04cI1AJ5GOgY3JDbR71UYAWyPjs+qXR2GeauNsEYeyKLauQGVXB33r2W1rx4BnQZsvUlY0O6bOOtk1uDyLSoQDHXBJPhJWNzDGzlJlEQFhD3uebi2dcRDTYDUepjmG1+G7oWEmKALMPSF5r5V3goJOnAIaGjPTaoxsl9UC0A2JALT6Ubjd5Lqt00dh7/JdK967VeG6HpC81aeaR71DbAXsPZnpr/tXgRhU6A7BgS39Wh+rTwCrkBHdgLWmbcPcH6sYA233quAkmFfLKXYn6oRD2jFC2QN4QAXuyBYxsKl193r+Yx330IRAHCgEpl2a/kuvNWQaZh9WW1HNvWNNJXw9RfqxP8qJhtP9nQmRIot4EASW9m0bu7A3GRAM6NX1cQf1e2Bo8ICCuRAqN6uqEOTepNAbg3fh62QNzn66HABxgGgYBoqS+GgBsgb3jWoqhZFrgR6ZWAUuIKP3ns5Cnt0GK7PIN4VqBwDd99DrA2cY7AfNOnm9EPRMxpTArZUBkQAKjJZ0egQAE/010dqaxtyD4Y1MUdpsbY0ph6lH1IBmpulFjeqwDWQGbPv10BmhnBiksFWg3EBrTmNrYe2WIL9LsoDXR5hJI9U3GJgNU3xvIx0UR7Pv1Ykux3xL6Hs/E2Gdr73CURAbKAAV+rhl0ePqmOiEYe2rWegoQCfWPUA/fIgvmhTHbJIk87XhPqYNQnAgU/9f5jpBQDaPZ4WNMd6nHRo4AhCq1Uy7Un1k5CjhcDZHtR1QxY7cn1khm/9LCoxrix1tPgUg1MVu1LHZl2ojD1BCcLB0ike9QzUdWr4viwR7JssDgAH8PXV2ut81h0b2nAloyFj3WdBp6AAxW7lTYak2tpDl6UF2520SR1ddPvmoqXfw+E9GC727Iothoer0PSv+GtUDoKENZdG4uo8KG5lu++jEh7d7desu/sPaybwz03rqrm62M4AJsPZ9yrHC1VnigmtZ0G8KbVEZqR5WnMMevN330QqAAKLWEuDjK6bDVrsu6Izfx6DdKDaiAowAo2OuqLY00n0y3oKFUjN4qmEB9RVtQefWdWqD/N8QAVKPZ35uWx3C8rRX1z7iJiPR27tYj3w9rqjNl4eusPTNrod0a+vrsqAfY8VaPYwUpTl26rxjMILHu/wgB5FvoIB9EL5/NExmR7TfIFi8W4rwBmw9BvK9fzbhahx0aQh6E36ST6zOcLdNteTVoh6HANfcyOEdnBHvPE3UvqJRNEjq8+hWHZsJtjIx7Jss0gWqGbS3LrnY2HcQcY9lFIdRTf+rtCa3dy69e177MzMPUjHtToBwR7nQ9hM2hatYBHsQfUCi1lyNGAACeXU6vGXECZh6aZtx4e0FANTHpjrGn/rl5dED63mPfmgESkh++QkvNYxmnALZzHpFj16cCHI94se6flSn2rTwDCx6EHd9Gwbb2vvYDxx25vrnI9BeAKnXTwFp0gAUh7pZtTfazWPQ7gHNBS847MABBs2lgLXfLp2BEWCBjY90nGPWPT/Lu8AB99rLY97VWxKSF4IFXna2x7Ocdj+2QWaW5QDpx0Zvq3Y9mxm2BXQ03CagBex7nP1nyI02PaLjqwDV5xhe1AJMezBXdLjrL905za0mgIEesCPajoEfD1CiaoVwQ9uAXiA2Q12j2Rr46BVoq8NO1uaHt3fVWBbi2dUWHSEPV6iGDD2HRbMo9IHaHtgsDHp2N2uBbHm1EMeyQzMqHtqj3Ph6L7wWrAN6hXMIArj3DoAq49Zke5nsk/2vjj0ix6VKdJ160RXW/2qJj20x7ko9fZgI+bYHACkV0vOqUwK2MekePVHHt2i3aK6D714kewtoFehtvvWqK7ZI9Lxm53HVedgUj2za7kP1a8epyWoVxsDx1RSJqY9woexhDYfHshXYVcazrcR761gAOwYHwEBHqY28NhlatxXZPOGVj25x7vFdSj4KMTVvHFZU1jcaQQNIWQDpXVNxvgK3qE6p6gO8e5cQJTLsUtUZy4lvNNYe6XeOQSlZFBp47RccB3G1JXd+XBkgB5x7LFten6mdcHnHvrx3qUbUE9s2u3TBbRYAsY0lK7sldMsW3YmLxzqzEjQ8M/Ftxn6pYVbk+qIQTo1Zew99SuwI3eBPHxA1R4AGnebLGkN9ZKIELaC/x6cltQIWrjbFlpsYsQ1XQVGSEd6710Es4A4wBi0iHANo+O8L9VMrupFV3R6iQ9lUe9YZqKboxCBU67ZXYDkSFAQDO0GmMleh6ZiNDngCkLSLHpnj09yBKKQxy4KzgPEcJ0Z1GeBtE947hBnQSksHOV1j46j8dLQ68RPdlHvNBRtR7pE9suGuRPUYxjs4CHUh/7kOEevb3YXbqT82fK6dx1BLIAGjpInpJD3Umb38dAd61h9bihuIj0ox7fw9jPBXyNfhHqTj25B7U6AmlADFXfpRp0PB8SBCCAGKupkzeXesCT3+iqeQ99K212bDHetST1Icr0k97bWlizfyHunK1hh6UCdc22gpPQ9+s5D0FgBpTNbke9qPfgTuzvXxJ64pI330Jh9SRHtP/VVhb4048SeuxoJ9QEh/UZiqA49z/4GgnZUToUx1yS07X1P8e5OPchBp/j0j8b0udnAwVVXZyOrh82Ih62FwRxgvqPZ9+qDW38E6Kf1CYLTRALzVqvj3gCgocA64Wg6nY9esZ5bmq76mVS8enZPa9HoBjXema08AdaAJwQCGVsekR4h6npgIv679Da6rrcfBUQaPVdgCe0BjbjGvs130bgABNU1W1gDaHECzE2tDrTk90JlK9DUgoFnj2KR7jCdQEqpP9VGJrKi3Ox7QyNlhO0/7EmrtlQDjVRpgAyMTfATcrGt4XAOAAj8tJkGwsdR7+oJACGoA5491EWugTf4TpfA5lq7w49PbsIioHinsBYAZma2x1ej4Vx7nwJvjTgutSHANU5mmhWu1VvEE2DOiiX1oTiD7AHnHpP51yfrgANSAABSLUHTFUi0Jxqx1d2gmsp8DZ/2mABSJ74U9FcAPgQDSnozD3qTQ5nQ+sas6OIjXDO0GlE6Mot9m22uNc0Tv8rWs9Dm5IwY/Y2cIMntsj4uJ6Rk9AotFJYPKIDklpHq611df5msjoUFFrVT0pR6DUAz3unt2Nqntqj0fx69pAHGAebADwWhQj2IPqKI9k2WYD9VjesclWfq7odJBQm81Pa4buTJCkx725dUYAcRrcEnrdT08J7LzN8vAeN3V/+sq23TE7vU1YVATDQK+UyadDdSsqmk9G4fHvHBrt6219RaJg1vqejVPYaBpFT1Jp64UNgSexonWn7u9FVuPgYqoFqe/1PYUntD0B9tb9KA/kmkjXacToE8VZp7LU9CH6gx8VvqCjADXE6vJ1922ihWmTHsLz6kgIFYAkYAfVPZEOG1D2l0bPDQLaeplcJdHpUZJLmdIk9xs4bdLb5RvEQ0pgUh74uVUWA4dDw01M0xvq1tFwvRXKAKy1tLT2sAAG6g6yercPQ4AEAB74wAP0waMWzTXSbttZE1cNcmZZn8Go1AEEJwDT2sx6mnQtnXTKgHbRoNREL+6Nk9t76zlEJ4V0lT2pp6GFiR4URGPepAPB/UGojKSd5SamknabtqAJ0PLtDqQuLAwvPhxgHBS2Vp6EI9yxQb76Cv2U7c1zkBvvoJceq3cLunpUp2SvhDQ9MHfD9PZBOFw4pGbCJr6CWuw6PTxHuQz0ooahUtBCG5bUGHZp/T3HLhWAARjWgkQJwMD2XDap7pZaHkWxpPV3tqeTWVa6e5VDae8tPfwnuBd2OcBAU96+mpRPUcnuNJ3CKbTSd/wqtjPZqno4z00x6tE9G/ADjAIRDgZY0Da6dZ1ryawVPWBFvG10+ABJtd+2GoRPe+nu4kAhlaKFwmieumPXd5qwz1yp6gd0q2uvFNYfKsDJ1/3rok992G3ZAGGntmUS6ahnU97qehWAPqnpg/XkSBHlA8N2n8PWvps/AD6w1u09KlO+kPVi8oNRGJx6+0ACae9mLeydu0s20HbOMNpaev1PSJnozj1bG6r0trldKJPVZnsaT1wR6zVwCV3dCPSXrslA2oPgQs92aeuFDc5nrL0DgR7M/wFggUujRyHGkC3WAAGfBQQnNiQPmgCEA17gA6OtOwECEALwnrkT0UvrEFFuCWy0DSBHvT00uHajLNXj2czPeBFob53Ex6HC4MvRSiPVKnuDE2yp7XJN+mehnXfmJoGp0Ap7xM90gW2I7Swlp1gT8J7Ks9gRGqMALzruSL57k7+I8Ut6wvCapIFIcl5ZRLKAMIe7TkmvpsAB610Yy09osehwwMInv1jVrSabP+V2utNuSFqAOD06qAPM9xkQY2cGbbuvd3AU78iATlmtUzgMnv0y0NJ6Q092ierq+qo7urE2J67dqdqWextPXunt01Aza7Pw9+aAfCDc8wBFj2YR6JJah1IRgALKHteO2e672F1iUeppPf5+o/c0kx7jZw1gAR7PaDJtLo1CJ6aOgtWesiPYg+tIp2pJbkc98euyinV9ntND18yQ0s9v4GtbReaUg7A1ltR8IN1yq71cE06AjT0k2BGrOTsu3TUJxTr8s2NJbwIN1yq+nPZtHqr11diahVVPYm4TPXwnu5uDqCiEQgsGezMrWdBpkAAhvrGuNRqrIHPb9QE9MDMR6HOA5MqjaTSzHpFj1fvQZb1QgGvggNWnohT0SS1p9dzEG2fXZLJp+z3lp6tM9bqerbPflQGkz01nb/Kd9ae/XPZqnvCp2ppxdwUn8DFAQDoeF5J04CamnQ8xunuyKE1ooz3uoa4M9MEe+HPZBnvX03xJ7LYtHg5bbnFcmzaz2PS0j31VWeseTiqgEONFu56J09Hcer0Pb5Tvis21naXCAwBuoNNSlnpJz2/Z7rc9IEem+YlBnp0PBZfqsve6huiwQGbbwgl3yjAmc9IwAawAHDnrpj0cLhV52WeezlEHtnoQY2B57+Plnue2aPeKnsugDsCaO3dlGe1DPOwZFlT0x57veNN5221VQwbtidV3R7vo9C4mj8PWnrtm13k57FI9e/lftDRsnrlC2Zx66qdlqSf2Dathrys3T7S17wB4mjoqniUBnD1Vx4hY9kOeqQ3YhJuij1HJ7bINl8evC7VLpq4z3iZ6nINDSu1zzWHZs0S3s8amSNZbUQiPXBHSHD4EIbL09RIe75wBGFq3TV9ywR31oYgFVANVkg2T3fR7wA6nowM63CzaoRj2za6ooNbUQOKSEbHt1T33e7EQ9t+e5KDWpxALABazBqrNmUGqV3f0IPQUJaXbvGd51O+I3ZdTvS+XP/h5k9sIexU9XdTv8M0SJ6II9UuId2gJFFqwL1nQbmw9HVm77QO7QBgT1FG7mV1EWuL6nQFZtgk2TG77k9x0AHkzfhxVliBqcQljdxse6YCG6UBWN2PIaNE9y4gY5cJKHtgL3g4b8M16V25gvTd5vVbjLp6doNw1WoNPbAuGpj3biaHANhEe0/9R2mrQODLwAcdGoecE+PU4nsRj3MR7ESAdcWnYCGyFrzpT8BS0QgIOmjCPTB3x9Q3Oj0O3d1+eusPXfnsRCkpusvk9SmqnTNbNLAkL36p60oZrEAEnDRVnuMy4ix6raYd5sY9cFWHpbd3Jx7UTd4EGxwobNrrs1UVZ7cYN3hemogP4XvYE0KF6Ai9ExuzazYDdqcL0mF6bAA9kepc3Z5GIX92PxLgi93MGqBwBVnpB0H0h6ovwsRepLVVuusSy2eF60c9yJAOQLViHoFN2txbzpIuhe0BjTrBpdp2uPcK4A1KW8/PZZFrIL3nSRh4N62WkovVdnuxz0c3rwIA7AmtvPSOoEOd2MJZd9NBigTovSHduio0SZ6949iD6h3RjVHrgL1h06JtVcUuzyDcvrvYMDrLgGH1TYetovW9lqKACdF6wSgT8GzIvWMXtUE36p7ui9KxemYvfaboTu0vfhyi9TToSovS0XrWL11xbii9mReoQDXMcxqj1/+ahSOKxW+d9af+szN3kSbE+Gsnuu4vSqgEc1VhF7O7tyxQCEACmntYL2bAblo97hem3jbsXt+L0OeAkdUNqKXIvfNBpXD3JnRAE9LiemiTQ2bq9l27F6bzuanEOEvTOAFAj0nJxk49Ct2jGnPyUHUBwgl7kvAadrN6lBVnqad1fh6LOARCCJEvR3TvU3U85a5zdYMGggvVEXsbj0rh6dE9HcG2+DVsXvxvV6yAVGSVhe5OPZA9oqz2uUBli9miGjkvVIXudHpJF7BAN2seu+bk06FUz3Ul78HtjEm3/HUCXskL1j571FN7WUXEvRtxqcQ0Kl79U9AJe8kvaDnq1s2HF6SNsgQzabPYC+y9D2Mp77QNLKeqhPcHnsNz3Yp6v6dCNOgSgV4Xr4aAXx6/C90pe40vdnloSZWfF7/1wkJe/M3Z3duFL3jytYC9AJe4zLmn5EBL35gApo9QgG7UvfzGNBYS8VcP49yLGriTfAzsPR0bJ7uStzrAb4vdNnrU4g6p7ac9aOeqaPZiHtvT2RZ6nBAMpe6XVfE9vEt0CSbdnt/lu+ArYFbrEk1HPbzU9OaekkPQguDnIApLB+Kg9z29hdWD4ECo02J77vdlEQI3PdRHr0Z2ySbVW1qhe7m4BoQCSE0g57Ztd+MAOKSP6nqB3SBYbZE9TToBw2H/Ro4L19jxgUkoTWmq3XDZvqt2aFbnGdxbO0VgIZTut/BvQDtC9xpGt7cBrnu6t3FIbzTVKuewr9VroC7T23Rb5rdrcu/j0AeXsDT3dp6O3dgVDcdSMjHsaaR/Uoty9KTOrSTUu9pxPVNl7xU93iexppOtbvyj1pM6NqA37Aat2Oi+pWGYh56m8918e9SaCqgAet2HIa6BVgdAediHRntyj0kF7CWCIFeqRHbEVsqZ395qaJI5gmr63RhHqSkiza7WAA2zOxd7bszroFU+R7NFNBpey3Gut5q8/We57sGmQEe2bzZs4ATT1ygxK09HbuhN+snHuDE0ULhSK9tPGkWQPmgFDz0UZ7vqU+Feg1AKGslSi0ULhibd2Fe0m3a1pkgkAwLgXc9zzAH/PbjHsIABYV6F81/ea2EvaLHtqj1QobKK9x7m6WPUIBrA3D/B7NgNzEeoT3Q6wFekUOjQJbdFP6pmPZGHuvj1bDkPmd8tu6D7SrZvbs2hTc+iFwee+pPdHrp/D0hvqtR4TEehD9dcXo0z12F7AsNM0ehEIAaHsrfWx567bNMLO00PXX8DfT3uob1c9jRentPdWQDGz0Dp7inspdG+tLY2RrDL3FZ7py9fRe91DdAwCt3BMArH89wZWoUjtOBvd/meRiy09dHWtNDURLGrLjzp6hYNTJAGq6CgLtRCRSp60LN/FQdinElsCIQRJV70gAbLO5tDSZ9tPI06I5o7dzzALSPaghl7QDF27TyN7nLeqvQ8u0rt3Cs6/PtgAmo7PbVHuyewGEAScN/le/G9dlQEbT09277BNOceoZPdaHp/j3Yh6H2ALleh1BCI7u/T10et8e8zxe+yXXMICLSXz26T0NV5qzlnQ1XrB/UswRsCIkYAZVCnbRpI2zmZ6y2osGe1uyLFXtkj3WZ6nK9j0tStPcJXsRj07VBeJAfqejKvd5np9z13eaJPNS7u3bPe0no3T0XxayX1+musePbsgCFQ2cEB3KApJeoQDcrhvds1pLkHl2zleoXPfNXpUDr0h6nUF6VepCPdR1CQd2Vs6Bk9hoFX1cIaFsmj0nZ72DAZ2eraQP5Xp0T372AD7NRbOpxQA0sFLZ1hrIzytZDu2pPdXns0hzbLDqHdqOGgFwJOnsYr0eRaQI9Upe0RwLKHsr/BZZ6Hq9wtu4Mfs9XueL2xZ7ko9anEWwAAI7vNNWKADnf1r2ep9TGI7vEtUTV6bU9U0e01AJ/HpHZ1S/aIk9X4eqHADjoyNL3ffQbw9khe0MQDLXtzj3OYbsDVite6WPbLXspl1EVazpNIteqsDc5ns9z1AyaJrg330T9wEjXttx2JYbHfts7O+mvWW1Dsd1mlrOKtiFq4exvFnuWKAC8RLc9fCex2vSLHuyw0FgAXut97OkmrWJVsFmkq17Y8NyFezGTTH+u7NWdF7E/tUcmAfPS8TrUmiSsbcLdqOa+OvXAckTr1HvqU09TnedgwNPnoGL1y56pC96ueo6GByHr4L1hl6oOdUXmtfPXYppO7ksV6kHNop6xWPYrnsrr18R6474GDmpHlR5VqwHAJp6sHNWHOg0nMCXtcL1CwbGndxxuvOPaFVqgT2rYbuJAHTum69U8nuxD0357S6NyUG47DVWHsjgDgoI6r4ECe67Dd+arafA4Cb09Nu2e6UnX+nqc7KcV6v3o4Neu+bss7o7LUkONXc93Fe6suJRSD3AAWMaRy166uKhzTqeo1k2bl7C69qUW8FBFqwFQz3zG6S69EnO3e9ffntBj2Y4b+0NK2WYyxKSOwsY3PO6hd1Fj4cAUNLHpGACUV7p69CDuwevQwDqfun/O66I9iMeiBPZrntZL2gN7ysN4DegNrcSuIbYBREBjOdGsWqhPVIDtFw2JF7ZpEdieohPTgnuKr2y17wcNuLu8aPZcnvHr11h6Kk9znO4wHSQLsQT2zhydVAjMQRtcCLHqsL2D56aXdiFa8y1QVqCIQTWJ7JS9Jf4W/aZbFsob2Bc6e5NwXO719Rw3sRj17l7Ks92ugJcQCrHtDiCRA68bN0QO+V3RfZolT3WJ6pE9xf64mrfI3qOrVrhxDndGiekbPXTHuyB1lWrbagMeGgCDcdHv9w16N62JEacelKPZnHoPk181bwFdiRGuJgFNHpKj3N57pZaBa4IxvaVzsPk16KaYQitjepxDfY3pyj1b+IbGtJkGyxzb9zuPz10x7Iotvje713bzpsCb1up7gI9JG2MQyG3Xsfd1AKbcSNOxusN3cY3vCtX4Z7fG9apeqKvcCuCrj1ON7M49ptWrLjZpnu0b0RN7DG92Te2rnX06vwz2Wl6+JuAsW+jYNE3pAz1T+BUG9tUen4ABkAD2kBpMaHIA7Amj64NUhqUt0sN7KgduimtbnVcwGloDqF7sKVVybQAHhXADl0RlN6r49W0wOGvY9XqiIAkl7Nc9OOjFbLIV+q6sRbTBuLG1S4HRTUXVptiIeN70m9DjenoAFk3sQfXMTZtdAak0RZAGxXp006hy7Y8N2Imsevf7ntms24kaO6tMIRVSvTRXpT6IFF7N3dBte2bXZ7ntLaDxN7V31CrcJavf0XpPYDsGAQ31Oze4QvY9KUak2uOaUlNikW4dcHpwMar2Bu77S9xy4GrPd99GoVVqcQrQdJFWi3nZynv/XAN578m96Zu8AOgMns5r0Wp6pm9LNqpFveE3vAP76J7tM9Dnu7Akczxoz4B056tbNSGeoITp7XvWb1oIb4a9rhukkvYzzrw93pg6jkNyLemW9SrHpUZK9+R/3dSUkU6oMaRtDr0Hp6wPd/lak+vXMlkhz0WMaJedCLeqsvX2nscz3iob8K9rJegUvconuVL2EEBwf1sre0DcNLXqcQ0hl6tsOjDemq6CmnvRb00t6VE9Qj6RB9a3nojz1M9srDdZzetFSdxYy091jnr4W9XViN3PYFQwNRFZfqn/IbuetvPWJnvLz2WNb2RAbD6MKAHfHqwL1Yp7NG9ame+UYD7zsBtUGF7AEAvourjPcCkkoz0zEbdZAuIm39PWqXoML2stavG90Re+GvTB+rg/UHp77I9H2AfVPfplpTB1znrh494me9MvbInsEL1uF6mw9zseo6PWyBulb0157LzNUOASygJ4aBsADUt7Jm9see63HR1nu++h9jxcoA5WejMvRhHr+1APpagd0ykO8vnYwkRSc2Ml7af1W34tEACoyTKb2Zt7uCA9ie3jnUCrAWC3cl6bBU5beiZvfuAFmL3t871gmD5Ox5CEeFDxQA8l7CC9eDe5MveAKGuz1V2Bjs9Hre1lPWjnty3HzN77i91ReuD9RnuBKz3up6gd0Weu0cvWhXrvm4bSa7K9Uims5vZQuCjABeFbIs9IwAO2jbKHo2Q1Mt60m917exhvYCXtAL2PF7lq9cUkQWvbK7oO91ZObCHdATejrPXM3sRQDGzh2odb56riPeTKu6wD0bBT2AV/O8xzVC1tKb1Mt6wO9UimiO9WDnpmb2SHhTBNX6ejCvdUXpkgB1xbWm9gJe+74SZBv8rUKJ6f+dh56qErcBFt+T1RZ6HW9bqewbPWU5vpT1h2al29t+ejjPRBnqZb14x6UfdnLWtH3XFWtyb3VlwyW9W4e6lLVT0TnIDBV6hO9Moe2iQMtnq/D2zKJvqUcVelRkmjXsii05V6xc9lzAHhPcDXrvb1M9sgLN/FQZn3XJ3qeK2id7oE9gVe0KvVNHpPaARV7C8+kUW1DPbVHtCgABcTMZNBNeymHY+esZNUv9xBthC+etFzfo3oc70jVqpfdg7e50PY61rHI38N74HVAd6oxvTpmoIL0KS6unN6YtVJmNinoEw0sV7f69ysOlFXcQnvPE3yqbM/mpFmRqvfILqmc0ix6FK9BRehZzRbDti733CBKs95t6lWvXmkElL3aC6suNoYeipPf77s9h2B+7qRV6bekJPVoXowr3gUa2FyEfumiXU06GS71axbVHdeSe3YnfKltakBVp6RY9bZeyMLUO1pxvXZ+6IqtnjoSx1fV3s1T0Mh7K09RUakEPb4Lpjj29vql2tqamgTxWXnqNz3QZ78c9Dfu7drU37udgD7ta9nAPDe2A3XlHvO01Nl6u/dTqmL6PZnHqSF2yUbHO99je/9cOPDvSF2TZ7MQ9ghevLEIQuAW53cF7O7In7WtRPQ6HupE13p7KIgz7eh6lBb/UmtxNcU5hA+Ne4iWhJNoqF2Xw6URdstKFVALULq741LOBLf1Eta7SjXAHqlrUkB6VUAnQu3ajWI3qv91Xo6b/dStahdTdZ+pDviN/hU49EPeylzcwuKEMBwB6buFkwu2bTZs2xx724I6EbmnkGhYXf/7ty3iN+Ice9V6mxSLdXnr3Fqssy/6NGwup9TZn83Mr3QB74qNONG0TrS86q3owQ97gNNbnKygxnAHpyo37RqvE9kLIQmXUp1oMo0qoAiA9ZVGggPdIHqFc2EurFABTJAKgPR5eqIfC0B7IvV9Ael51bwI3fuStx6eP1/wulgPSBFocD3Ai77EdUwu6QPcNRuJ72IProRd3iO8nvT6Nn8R3TUbqe9pru4SrOwa1CR2quaPk95lehQPb9zpHfXYi7kkdLWeuXvRoHpTrXqmbkg9JIu/JHYpFocb36uabqNoveqkXQ3oCNc2y96HC4ZgehHvcf+ssD1F1rpw4qPewDzZlHscD1tI6gu9uve7pHeXWrK60f+7HA9gyOl51cb3scD2F0qhRdKYExB9X4HsbrXW96QNwtvev+jcEHrJq0zebk+9sWm8TTVEHo9c0e97I+9hyOkbrT73t570pB6q3VsgxQWNZN1v9c3Tda43N+GehOPdgnqXT2vV61u9k+Wp2XVnJqUuX7LhlyN9GeqBrdLNtK02huaK6MDuW19Pbb9riYAhvrwRxsIWPz9bxIEaaR4qymg9wYulJPeBHu3S3TMbFdA/re2ZPcNHqbD0Bi63utQYuj7rcx+t9r2yF67Gg2BI76PTVdCEA1CJ6oc9Ewe2NzXGLsevXMsBAEAwIGqiDcihqhAjiV7lg9UjgM4PQM3pFj0oYbEH1HBegEvYWQH/XBkt7ZGgJwela9ftGreQqZla+iFT/e4F9biRpGj03B7QVEN3dMyaJWLqeD3Vi6s3NtYu39lVqjvu1Wh8qZRakAAQAAPVgEbK7YWnKLV7916o62I1Vt601HQ0yqJ5WZsqiRVRaq7mVbQ6s2tW60aEG1dGqvqVSAKsrZXlsq7UdCTKmUWoAAEqwVxlTKLW31V76rkdV/VquIVQ2ypsZUwiqwbVQnKmEVUIPrMZUyi0vhVOfWiYNaHyt2FokD7SB92cqgblfUyvDlUqD7QdVodGoQfYAAD8wagfRTepxvUmD7SB9JSql3VWKLUpZUwiruZVFZq4ZVcIqrVFUQcqQ0d6TqO4dZYPtUNXZMqLmVdg+2DlSbKt/lUwir1lVEHK+Anfoys8H3WD6fB99g+/wfU4PqCH0JcrQdVwEukPlfdysgAAaGq1RVRIq6CXTJGuMH0lsq6FVRHK2xlXEPrVD3yY78+ViQ+5IfV06tB1W6h6ZXwGQ+gq1dKLUllWpD6sWVBXqgEVfiyuIl2eD7KtVQg+rgbbK2pIH3kD7KB9pA+pofTzprGZV+sqZRa/A+90Pf4xvKH30crPGVMotKjlX6HuyFVmMqyB9SQ+kYffRyrMH0CebkmVfUq/VlS7qt6H39D7LBt6Dq7IfTKLX1VWY8q+h90YeqlbMIPpsZVEcrUw9iYe/DVYAADCwUYfamHoLvXOsqYRVZw+kofaujsy5UVmq10ddQ2oF1WkyrEH0GS7hW1Zw+w7leQKv1ZWg6rmGNvjKuQfXlKuPR23sqZRat2qjNlWqKrWG2dsrsmVpg+oQff4yvcl2DFVy2VMotE4fZAACEH3rWq571kaqqEfTCPtnD2IWqRh96wta+VWYPuS829MqrWVqw+tcPVuus8ZXTsrZ2V+96qD9f4yszZX0cqYRVNaq0DHfGOhKZUDiq6R91Xm5nVceypQFWcCqeB9Mg+/4fa15uG9VDD6Rh9Yw+wbzWVLtPFW7C0+h9wiqsJlQKPtKl39trRMN+rKsJlYmytIH1qMrxR9MIqiQfRKLU2H1QyqahVDzK0gfS5lRitgqtxpHVK1qqGVYmyrIVV+sqomV4cq1YWtoPt5dUyi04hV8o+xUfU4PomNVY6q0mVMIq4+1ZfaqiZVGj7D/VGPK381a4yrFFoiSqZRazIqiwVSqPvKZXVCrahVpA+kYfX6yqVtU0R73/V9+m+TlUVypbFUwiqjR9So++tleD5pLFV2j69R9Sg+6sbcJjsy5VEcqi1V7jKmUWuGKv4j2P7YSOVZg+6THe8AGRH2vS7nYAQg+9xlScPuaH1SR79H1OBq8rlVpjsGKq7C0VnVZA+wGXa66tlFqm8qGx92wtJsfcZjolVXuMrjB9xPKvAzSbypDH3E8rzO1THRAcfWqKoS5X/crrWVvPmkplby6srH3ATa6QACw+mUWlWyusDUnD7jB9sE2ya1dJytcj36crOpV6E26mXWFys2H2kD6Fx93bKjXzaLqsp5WdcrpDNWkqsxlQZyrMZVEaquZdmXa6EfaNyvG5XZj6abV8Uexk1WByuStWmj6ZzVYsuzKDdwPriFVkD7smV2wtSYfcYZo67UAT6ph9JvK7QfV4yrKj08sqdB91k2iPza66thlXoareh9HUexw1aaPu5H2NY6k/NwDquDlRaPpptVmy73gA9HKjHlaDqoiM17PrxsNlbK+8faQPomNWYyrRh9LsuwbHVzWpCZVCD6ieVa0egTxefKvttXicqMR9nwRTq1W+Prqm3hWq3x9DbKj5lW1Ns+fVRy6ox9bIq2Mfapypfm3Ehq/x9rCq/I1TYytIH0/j699VAI+okNRUZu0VXkD6ahV6Vq68fdJPo5H1xCqOB9hu24ntfrLpIn2Si1WJ9x02qlbEyyu9H1KT6VB9ZcuiSVZ6Pp35VPsqJB9Qg+yWVbsLT6lUSj60Y9ScW6xWopPvjdU2T64hV9k+1YfTOxoJj0wzaMeVHY+jofUiPtsn0eT6KY9sra2FVWOPron0sD63J9dk+/xlahPpz5XABbY1VGPKigfZKLStH1Ucr2Y9rYq3l1dzHqvFXxuqJB9gmquSfYLHsOdVZT6YRVxg+00fecPtRx1edq0p9JzqiQfSuPoPl3evryp9Tg+0HlYcPvVj1/y7bOVJNq03lcwPqsn2BD6XB9lqqnflQWPrRyBN9rmp9eMq1qfTkPuiH2dT60mVGjKswfYm+rvl038qZRam7K8Kfe1PucH2jcqPR9Y0+s2PTRxvZx2H8r3GVsw+mafcUPuGn0LT6v+VZg+92Pc7ABOH3bC12mVzIq0afXtPr9j3T9rDp9x0+rqfVJPp37X4SqqzVEHKoyfRdyqzm3jd7ZONOc25rVTKLRlFrZMqkZVVTKgMfRqPrSFWAT7yFdBjKv1lWlPqEH2AAAYAkSn1UD625tN/ax6fZIPs5H1KD7rx9MIqkCfcsPp2H2647hvVMM+mSfUiPrMZUIz7/p9Uw+vkfaMPtWH3G47duVszKj6fdkyoA5Xm46331pY+wKfdFPobZUaCqzB9982osfVTPolH3yK7jBVB966EfeWypOn3Xj7eXVMIq42VZwKo3j0KK6D71aTKr0fcyKran3I6rqR93M+8blTTapQW36MqMeV9HK2afZmPuBn2rD6iuNScq/QVfLPuhFXULaTxVWY+0HlcZPvWFqjD7Zx9XH6gxlTKLVD5VRMrTB943KojVQJGp1n1mMrmh9wSujPHW4rs1n2mj7mRVFs+2cfXMFt+n2uMqTnVds+70fX+PsMW3UN7jFtIwqxT9a66tcn3FD6q8d0AqgflbCKo2tVnBbH9sMs+pEfVtPo0ZUhz6+B9pCe1vHQGqs4FURKrYx9YS29UOO8Fsjn2TD6YRVmbK4GfU+yqK5UqD7fJ9veOlHjf3jvic0aGqxB9Iw+pwfaaPrMZWh8qkx9MIq5IVbIPpET1/CrWh1wg+pIfWXPrSFVZj6QOVsMq0HlSByq1n01z6uR9Fc+0YfdXPoxn1KD6VB9iIqi0fZAAGbn2RT6PJ9rs+2DldHKq6n3lz7rB9dk+5kVUVPo+n1Psqu59FjKkAVcPPtUH2MrqLld5iekkza8mubn2lz7t9VNQq8Cfd4yq7n0mj7pJ9Cg+mQfXNPsrn2Dz71J9G8+5QfaoPsVC3347+U9O46oqfUIPqK5WzD6O593jKhCfXTPtq4grDrfp9Vg+46VR+PthV2+RqAF9Sk+/oVQRypOdUGsrNZ9sSeukALiyvaZWfT6s593HK0AnZStpHrUu8qpJ95TKiQfbirpZM13Dr0F9qo+iQfUSrqJrVhD7vB9EzKyIfQ8PuKT3Eq6ix9pg+/0VeEPtIX1+D7yF9fzdR1lWNPsI5Wsq74F9iC+rwfaHPtGH0FWrgF9Wq2sgne8ADYX3bC04x9Raqzc1fWFtGdUBz7qh9e/VS1bSqnoNJwlKqLR97wqx2ffaauSlWuMrgZ9oPKvWfVj+uVn0lD7Rwtaquns1VIPpAFV4T79J9iye7sVftGokH0cyr62V4cqrMfURqrTW3tj6ph9Rk+swfcfxrLH0Vj7WB9xU+rn9UDGqpH1cz7XGVhrKswfcaOpWtWVD67k9/jK0Pld4yqNH2f8b3Z9T0+w0nP7Pvo5V/j6iNVHo6+N1VKLWJ5XARb9BV4zKxcfZLytpFUBT73J90U+iNXVmZvjZWGz6epVzc+8Dlc2auylWmT6oU9cEqo8VZ8ytBn1gqrVh9eEW+6fUrysQX3OE6sA1VS+moVX6ytB1U+/qARVUCqyAALiyp+H2MRb8JVLs++N1VUvoO1VCD7btVgRO2Hlchatxs3OwA359Uc+iRfThtveABjL7Zp9JpeiSVUnPsU1Xsp72WVKdqhSLZLKo+n3vsq0idD+OjSLVkvqfZX3j6kR95TK8pfYmPrGX0jD6lB9XwqluffWyuQFWeMqxWVD8+2BVQ+OuPV32CbH9Vtwqq6VR9Po4X2CT7x59Ig+hRfebauUX0gz6jU9FRO6RfVJJo+X0Omqvl9qi+9ofUlPtEH1Gz6i1VRo+vFAKYvuSn1Kj7Wx9GHKxsfdLasGJ2pbav1dBQmh5fWNyqeX2AL7VOVES+/yfX6PuEX2U8qXeVxPKsDXR/Gr//W+T6yB9n0+6SfSc6uMH3Az6xR9VHKkSfX6yvfn3oirE2V8pqmQfWmnqL9W9Ca5J1Og+qGVRsLVIH2fL68F9hAqp8fYWnp2J2kJrrJ9Os+4wfR3Pq6dVIj7qF9dc+rbbaRroE8UGcqIl9DAq55fcwPv+H2uMrPGV0I+p9lcYPtxZWfT6i1VAq+zize2noYA10gANDVxg++7lcaPvrZXyr6IZ9Vg+5EVUjKr1H3+L6SBVwY+nflQnKtxH2AmqqeVpA+oQfXEapqFXZMqUwKkGqjE1ZYyrRlUzsrWB9pA+9FfVjPoNNWUsqfdVPE+s1fWYvsdH3Br6NNdaIALTXVHJlJX0iSqqB9by+9g1dsLR+n0Myqgx9RMquUfQVauO5WkD6ahV08+kUfYCaplFrhyrTl9pc+85fTKLUdH3wj6SFV61qrOfZWvpuX0XTqXNd2DETGLRjytuFUxz6v59Raq/7lb0PsRFWlMrX2VuMq5KVaQPuRFUCL6Yx9sg+o1VTrPvDX2Jj6ZZ94nK7MfUGPtdX3Xj7rAAFy+q5fTKLVslUJa7Vhaf4+2DlaQPorX0qD72192w+kdfeuvt5lVdz6UxVm8+x1fbpKtsZVkr7u59ZA++wfR6vtXX1nz7JJ9Kg+pjPXzOpYz3/CruZVEq+6yfYzPuvlWXz6659zWu2fbbXLpW5UpD7p59k8+6mfYpPo/X1JE7FLNsme6xWopnuXlXxurMeV0I+zBfYoPtfX1jr7dR9Do+g0fc6PtOX3zr6n2V5bKojlSoPssVVra6/9tG2uhatRIPrgNUBr60hVUotEhVVwvugX3ar6QhVVg+2xlf8PpPn1br7eh9qnKl0fWcvu85WEcrzR9NK+xGffWyvCH1cL6wF9YotaxleUyvCn24j6bGVr2uwLPdmTuh5UKj7aV9a8+8ufUGvunn2Vz7uF9qo+sjfUmvpln0Wj6RR94y+pLPWDrrgn3fz6O19FK+pIfSUqqMNWg8qxWVQ6+mEVYmyolX3Sr7RB9T7KsefWByu033UqqiOVo8+6/Vajyso33Dr6CddkSqglfTqvqI5VNZ71f1dIALhfbsvqEH37L70+VbG+yAAEcvuEH2zr7GN9qG+lQfXQlsFTUgC7/QNrQ6xSfUuTr0VUtz6AOVygAE3lRoAFcn2vr65s9TLofnXTZZq832br7zV9/k+jHlZuvucjT3j7VhaNk+jDlZjytOX26T6k19tsq4dfcTPoglU8b7pbVNVuoCnXolu110zHa1WVA4q3FfVSvpCZVFr7/GVpA+uufSSKt7A1m67gHV78+1xlSnaohX2nL7S1VmbKkuVTDKt8n0wiqQmVmMq5kVZvPuhz0tKrlwNuK+hBfaOvusX3S2rzBVmbKoQfSiatFn3uL7VeV8bq3HPSqRoJz17HbbEtM4qzWfb+BsM31RMrjN9oEq2lfRavt/A1vj7NhaTm+/DfeMyop5W5r7iN9LOe1LwNxTqT/XXKrzN9lQ+7nPT4uq5O2ZQaJB9sS+scfYzCgS5VFirjN96wtSllRKLWEVU+b7Ex9qvK2kVWYvslFrXb7N59SOq8bfTSaqV5XTb7MZ9t6+tSnQUuvzNXKr7QZ9OMq0lff5Prrn3Xj619d3qaknff6mqTz2Tiae89K96vvPeJRrIH2zD7khVQ+eya1ZKLSiZVyz65N9HBuwYqn1aspZWbD7/zt+gNe7lbMPsEN3KAJRnVMotZJlXiPrRH3CD7WJ9HVO5VlU2mq2XVCD7eh9Ei+jtNd8PsPz0Mz60l9Eo+3oVXEKsTX2wz7pB9wk+s+fWWqtcn1y76n2Vmc+1Q1Ypqq3TVVL6a1V2JyJ5le4yrJX1Jr743VAHKlhfWFBsFn2WT7gAAe+q0GfTUKpWdVFcrlB9fm+mUWqbPu7n2mj6G2VXm+zXfSKPt8N1TL6Ct9mM+/anYemp/E20F620tTWOjrlTrPo/lXHz6v59qRuvS7THvqwn1tz7SB99K+mPlXfPq5H1UrrZW16e+vHfW3au3n3uXaWV1DBe/67W+evPn2QAATh914+9tfb4Poy30iD7kRVZe+5uffhqt2Fqy77Cl9uxusQvTXvox31RMq699ze+zvfRCqorNWur7TeVtu+wJfVEysEX31srN59jV2y2fdCKrxQDNr7w5Vb4+6+VZnvuEn1+srQZVIw+oNfZuvubX0o77smV7e+uWfeWyu2FpCD7q59Iw+x0fZuvu+H2uMriBV9vKsffXzToTXXr769l9E8+h+fePPvjH1uaqu59YotA41aoasrX1K8r62V6GqjVlV3PpCX0d77Ai9fvGhk3WPPrlp0kcBEx9j++1qfS/vsllUQqrPp99s+pXlR8ysCX06uq4i9tmWwG7fHvuxNVcL6rh9V++kQfUjvrHn0Zb6omVM5acdfbbKs3X0YH6dZ9WB++/fWYvtwP3Gj6e594HK6A/UiPsU1UiwadrNza+w3fdnPpVn2JZa4RVZA+kgVZdPuZFUSb7KFVm6+rLVaKPpxlVdz6D2VMMqlnfQ/Poyy0rcrA19HB+01fUWqvPX1G76c59GxejhfUwfpIFXvT7tV9bi+mkfV2vsq1VpWqI19Rqq/g/R3vvhFU9aqz59Pc++Q/aUKs5n00j7p59sKq/pfeIfqzn1JT6ol9+G6hUVbQfokP30H6n2ViWW9g/R1vqiZUaGqRJVmbK2lfYoft8316H7n99I8+tRVGXvs8P3uH6jD9O+++jlYiKu0P1v76bD95h+0uDcdZoaNWhH6zD9Uh+xg/ZMPpYP1HT62D9Ih+xw/ZAAC4P0qr7eD9ETK3mVWfvqnp1nWap6dKJemV8GXvsA32Ej7oWtsaNMvfZ4PtE1VPsrHNV/++xj9Dgfpv33Iiqx59Ze+jQfVoPpA5Xd76aJNdJe5nVc3PpQP06H7fd9X++oefTfvs1g23wbuj9ak+3RfeXvuvH3MH7aV9dB+8w/WoAG21XoAAx59miGtefWEfqoH0976y99Du+lgfe/voKX0s76dZ9aB+wQ/S1zrlL2+Rqy99A0+7JlSLPrk32oH7ND9t++04/Ujvq731y77X99W2+ww/baPokH0xD6Dh9bW+p8VYkvpgP1EaroLdlM+lXfYhvuH33nL6k59G++nY/T4Kq+M0KPaEadKx+iyfSwPsrn2tiraj9Le+5OvaLqrBy1DH6A99lqqmUWsYyuRFUW76rd9mm+7vfQbvsWP0t76FENMZe+Y/dEfqN31LH6bj9U9q47lZ8yog5XXb7hJ9hR+73leHKsiX3E77YntgO63BnZiFkBs2azLgbNCBWoK3Uc9tMH3MiqYZ9l2+o3fcOvopZVp77YD9muqKSTZyvp/n0gcq4V9IHKhFfZ1Koyt10FbVW1E++8tlXigClFqbC0Z19m6+4HVa2Kq4X1T2qu59Qg+8ufRIPsrZVST7V19ZjK0TVdfvsx32NSa5y90eq5GzY1bvrH3nL7099QY+plfUOvsXH1BKquF9Xc+0k/WMyp2X0377ty9WhW+o1bQvswX28urLt98o+nzfR+Xqxs1zsaV19RW+22VQwKo930HL6X2V/u+/dfYQKvCn0mb7Ex9Tp+8gVUjvpGt1Pl7+pNnp+qA/cCPvGX1WT6IJ9D5epZDVLdBwfDSb63R9OHK+1fSzvppNW+77F999bKwdfRCvt5lWgV6SbNdAqzllexvuyZWNL7COVMIq6s/fu9pwfDWD7ZRaq2qqc1WkKvLZVon6WV9vFeyorY6yvrZVLb6M19ksqjVlehvra33eMq3V9rjK6JVbKqo/lVln7Ex91g+us/S1PpEtWyD67T9Ik+6TfVWatcZWrr7mWVmMq6xlRByvnP0aCqprVnW+p8fTkyoh331srTB9vZ+xM/T9btWZ38V7Rl9MotXs/VBvveVUhMqJK9tNuvPNeDvsh307n7Zz9EHK2Yff+Pvh32Sr7XV9W0+6wfeGfvT30fyrxUNuwtC1fVvPoBK3wHqo5M0K+1jfXLboo71fM6TK9Mhahw/TfvrSZX6mrc19Zi+wIfdaPu432jr7j7VUTKtQ1RByqR31gH7m1985+0rfTOvtnX2eV6LbdvTKv8feQKqOFXbD6bGVVUqrhfZrKuvlUnOqst9oK+mGVdavuvlVEcqJRaw6+8ufScvsRFXlD7t995e+4EfdoPu731Qyrb5VajK3dfU6PqnNWBb6iZVnQ+j1fV2fr5P1Br7jR9Ba+qJlWcPs/n1Tn75z9SMqxxVdOvtm31ZSbq0Njn2/tlQOKuYv36X6Aj1raG5efeQKpMv1b2afPt1du9uzcxftDn2kT6kh9ZjKiifTHKpIX0Z76Al9NW+zI9e6Vu2X05MrdZ946++tlUJfvfn2ur77B9Ul+l/fc2vtR5UOX7QV9SO+iQfZjypBn0gcqIL9G1e7ezblJubX0WX6Y5VQ0+5i/YiKvnP2Qb7JZVxjKxSfccvuvH1VSql99yR+m/fQ8fs6n1syr+992TKvC/f5frbX22MrZbVXh+05fWNyuZX30H64x91x+qc/dJvqfX2kH7j19Ch+uhVT1KqolWTsrtV9fJ+kFfRKvuRFWVsqK99Xw+4q/ZXvusH19Mrvj9kV+pNffDPsgv0Llajq1Eg+5uffZfrIv2pH7sZ91g+lMCrsLRNn2qT71l9rGG75rXWfsR+1k16UT1/GG8S1RWfusH1ST6pRas4+pU1Q+VuVX2wirfd9om+3zfcqPo/H3BX6PhVo2+tdfY8vtQv0nOrbR9Z2+jvfcIqqoFUd76ha9ipa86/UAvu530S16jq1AK+pRfbFftUX3gz6Oh9kv22tnWAvokH0UKryBVzc+na/UeyqtZX6j6qR9yg+nWveaarAX3WD6/R9ztes6TY9foXP3HSrUmVFV+0gfUDJqqv0Vn69L9tteocgfbXvqNVgL6/x9EC+52vW79sQtWpn6xmVVzqvk/aDPsk30SD6gZNlAq6wfeFPsDr0+O6xKtyUqldfV2frPn1Rr6W992MmmvfbHXqQ1UjH6OuVSJ+6J3SOaoxn0K37jGVAt+qgVbiatRP3kr6/19+u+0uvYZBoH5XMir2mVIw+2QfdXXrnNVOsrxR940+8U9dEZr6tWcz6abVvMmnc1e8AEzZVKL6Zb9uDm0sfbrfvCq0jlqQl9ns+9p3bgXpSVVf77099CJ+4Sfaxav0FXAAADb9wAATllaM7tIc1Az7oN906+kDlaMPsw33kD7E19ws+ytfXvXsh1Wg8q4RVHzKoMfWofqJFWCarv99hSgRC1RaPrVk0zSUaHNHzKhtVVfPunn0nD7KtVBg+gq1Tuqvuv3dVb42VDY+hZfUgDpGH3+Mrw5VYE+qHfWEysUH0EH6JqtLzu4PfRaPqfZVf77lAAXt+inlfoKogb2ac742VYJ+p9lfhqp85Wbr6h79EB+j2fSPfrMZWQu617Vl9qpllcZzvLFVvsrVh9CLuho1Y2PtsX0+76rB91d+wffbFvu8ZWaT6SG99Rq6xfXvfo0ZVzcrqVV8++k2/VQ3rWC0yRqY596wtJ3fTOPq2n0Yz7hJ9mk+zznR6eusB3cu7Qd1luGotndMvq2n3QT79vdY8RXGreJaro1VP77/19Eo+lV3dOPu8ZWHz7u2VOru1plSQKsnX1Si0EZ9hru2+TdxPvvH36D7yB9Yg++6/Vdautd0ha4MH9JAqrB/UmvrG5UfT7irVCbu3plcQ/tfX2hN6xuVIu+sZlYRfpof2xN7JZVAE+3ifbsfs1iI5nqdatEbu2B/ecfswf2Si1sH9ZZ+5YHesPsnP1MP603d+Cm/tlWEyvRP1wb75z9ZR+tVfU4PthVXeGqy99JSqkQfZ1Kp4v0sX6nL9DHO3RTU8fphFU/A75NVFo+qgfdMfpA5Vgcrz59ha+z6/ZuvvKH2Qb7Bt9Ze+8OVdKLRlFqIiqoH9vm+r/fdkfuWb3lnq+H9ewtUh/VmPrEH2GKq9H9SU+wx/fkariFVaz7TH9rh+pJfbIfuelV9r7ZmVHC+sh/V4/qcH0nD7FB9sotVxlXdvt8n1eH6q2VbFatG/U4PsutVdX79z9tM+sdfWPPqEv1tD7dT93j+lsVfo/plFqqg6L4dDZ6zGVcMPt1B2/X65Z9Ghq7TfV4PsOH1fu7D6tBHu5XfVFPtpX1VX7HT9g2+oi/fWfqcv3kD6q59VI+mMfVWfrCg2eMrZ59Dj+uefWYPvT3VgH60L9PUqgp/RwvpFP3t36qr98bq20fao/qo32Yz6KL9ZEOpnnQy3roFWjP6ct9JCqv+VZmyu2n0Qcqnj9ga+4qfc6PqVtWnn6AlVXyq0Q/by3pkX04irQeVWwtODlXnvoc929r6Y+VJzqyUWuXav3v3dz7Dj90k+zC1Rhqsg1XZL6TdVxM+iA/Yc/uyZWPH6jp9UnKkJlUevubn1hMrLZV6le5QffG6todUjz7VV9mF+mQfduqpElXlz7lB9Lm+jRrdp7rga3hX6U7VwMqxNlceyvRFVKn6Wd9sG+r4/TwqoetVfD6/j9DbKwZ/cQ1t7H2UKry2VgAAFTAbRAkxGwG1VOfokH1xcrKr9mMqtRlUqPqdX2RKqPd9nUqpEfXIPo333xP6UL9xo++W1Xwfu6n3Uqrvr9v0q6W1Wo/sxn2Pz7uz1c56oS/R1ftSX2tP64x9m6+7ifRAav1H0/H7JD9bIq8JVSbqvrZWfL6xRamw+yE/fq/qCVVlMrqH9ZL+n8/Q2yqC5WY37DR9NjKttvUV7or52OGqzz9JcqiJlc2avKZXNz6VX9SW+sl/fCfqMv138rM992R+mdvUcOMGa2KirahVcp+7ufQgvqMP2/X7379w6+pG/SxPrNtWi36S5Vq3K5OfbIPtfNWDb7hJ9JJ+pYfeSfuHX1Uj7rAA85+tkfapys3X2hP7hlVLu+9afaBao930Tz64N93Mq/sVVEyrHn1vP6Nha+L+5nfQufsutWo76G39vG+h+ffvzvBU1Ad6wH9R1a0Z/e2/pkH2Qd79o1X0quifdPPvnP0Id6yK1ULW0Z/TI/p7n02P74n9A7+4SfZKfo+v0r77O99GEq3B/V3PovP3a37sj9zdqm+ffnvoUs0IX7FHN8S+ogVUkvth30s77RH9wAuk6HQx3uBNUSr7Y396j+69/cbPtQf1ST7h19ik+kMfcTvs470vQ6bz1PHe94APOfusH1ev7JH9H++wzlXTvtBX3CT6dlVnF+jhfZufu0v2SP7YRVGG+h9/X8Ju331076U19VTK9u/fOfvE31Fr6KL9YUGjIfRBysutWYyqph91g+lV/WxfqTX2xL7JZVsS+jhfbQLtarWkqadrNaR+umHeyysAAAKYPuytYn10qaDGVdH+0u/XXftZh0p9rJRaPKq2VVZwLsev1cqbb39PrW3yNYGKoJn3iWqNDVnXKj5/ZePtkH1yT7pVNK3Kih1dILqdBi9MqOmVqw+hLvaq6t932eD65Z9m++gE/al3rUF3HMr2mVMIqyrfZ8vqeP3Si08u9wDquS1UV3oMF0ld6JHVJi+tXlW+vvtH2Dv6LQ9sraxofU3vrj927E6Bb9oq+0GfdnKolX2eD6XR9Dgu2mtRYPuoX09d7HnNOsCFz/TKLWMH3uf7jR9++qhN/cX7rzh0LtbY49/guqbvTK+FxX0Vn6vP9C3erijTu1udgAg36c1NO7WgFRN/qlGdVZn71UtMk+7nrf3Dv5rVr+7FKNWLmsLlQVvqI5VJr6ge9nbK41/URqqQ62dqa+pVDK+pNfUf7uNrUNf6Kv9pA+mHvUAKvlX09C7oXVQQ+0gfbf7tI1VkD61RVfX+1WtQgjqJdWP77qOtePe5QfaOvpmF3f+73gAGhqpTfaT3qI61zf6lN9z4q54/SsLoOdXzf7SB9xr+13fbiPu4630I6ZWVDY+/jrawjscNWLj7PH9vCOsTrSs6qiZUnC75XNYHKgCfX9Ptk63SI74JVwLqxTrXy5rK/2Nf7SB94ve6F1a1/tVP0vC6NEdjA+wzlfL3szrW9f7qXVXl6pDVYN/qTX1a96LEdhLqsZ1cyKrsR39UbWmV+4+3gPfK5s2/2eI6nOthq+lb/f0KtIH3wi7nYAKP+7b/etPt2/3Ii7BXVlWqvl1QXWr8606z7uZVzy+t3vcbWsu/0Ei7NA904+u7/Vj/ryR3Z6FO2VFo+1YfRSLu+/1Jr6jA9ZTqvGVQD/qj72mcqXB9pA+2PvX06v8ZXg/7Bf9MChOwPWN/uZFXp96XNNCP+0dfZV1oDdU4/6lN9Xge42tSj/tW/1i/6gtNTXWxX/Vt/s+n34/7RB9CbqtGjZ2ysO/2yi6Tv9FP+9X/Xs6t2R00/6Eg96ta27/VXPrF/0XI60g9VyOjIPSvWsHdWTB73dwobm90XVVptZo0/oB2aN1/el3/e/3oYL1pi7E3NpweqrTaWLv9CjYCI1UdUaUDVHW8HqIH2/c7HAAXbm74PedetVo1gh6Bxdx80kTzWvpuSkjq3qrUdBjmX5mGUAFEkFQkCBB9I5q1jQF25q7c2AebZgmSLCYKgH2gFP/X4h7ztNsNQc9YiX/urpCjAAy2ELPALuQKSHuPD0cs8uxyvHqjkzSb0ppD0j1q3tNrEAR1cLFp1oADcQNjtAaCW29gCzXC4CQ7ARTRAyKm5frQDpti90oobBPgMkAIf/SP/uOC3ZJaff07MvG9wFV3tQW19/6AQ9+XkZKMPH/sf60xNqUWV9mozUzfNkD/K32F7IPNBpOMJ0AiQHglb86a8h9+0a4//UDEFbc2YS6UWVV/+yv/WeFrP/32E6CJdGYwPNAMRLu3/0AXQ5ExLQ+yPzTSFxL/3AgAAADIg2oPTY3/qAl3DerstAKfRcYfYEAC7c0ncxiAA3EDXQbRR1u8xyGF7QPGxd629rKwHrQAP//6uU946O/zlRKSFkaBdubixyRw+rQdftpMwY2ntgyndaw+rTzY2bsCKD6EBvMcqkuvBjSxIhwAMfYB6vxfhGn1lTXesHF2a1wu3N4WHfx9Vj6s4627/7RRA5kASzIAMNo1/UFfr1b1LYe7d3jwAf3/2VhVkdAkgAbiBrLShC/A6S7HJdtz6sJGfWltE80/AA0vNEvqiRjbEGF/S3F/6kvNqjGz1tc8+DXAQ+tr4vNUcFcZgMX/qCl05lxS3ci4esNtWuVt4AAiF60P1OsEmQxSAaAad70j7HpVzgBmCcqAAdwY3nh6wYNBtcxvTb8oDO433h720d2P6lPonSqBql2xqqyhWQgG4EAMgAcFH1Sj65S1BOgTS9lqwDX/3woA2QI1umyv/R9XCgj2r/7KJA0bYc4jKYAB5QDIexRRAYIAM8LeTFpkI2727r3AmkAVvaHH/usABIu9uVElf+hEgH0+oSu7xfqUgDU/+wDzSa3rDH136a00toQAYv/RMxoJ0CKAApgAhoFW6rOxHsU5Vpj6VOMapWsvQKe2GE73KAHqn0yj67H9fV+pIAOPS6w6NCRQEsfUHpovjFfS7BSgnEtN0oLMXqJ81KPhDbK98epSPfpjtQfBeQriAD88upZwFgZplfCEAGMAAJwBwkAngZpsV2C7h8RyDgGq79az5s8fU1KR6ADYkADtAFOPvBQDdSsrI9vOmm5aG4XtAY3gsa74A2hmiXzRsAcLaAyAGgsdu5YnY3aFjqOAPcAHUKdlUe94A6AxtEM1RY6JDNkhmj1cOePux/X5gBe7ICf6pnNZFHs31Ug6D06NZy0/mXYyaq+wCT/6b3Am64NKPctyqTACiebjoArWoOyIEBPq5Y1jAGTuYBHmzAAPX/smANN/7TkA+L6yCfSEAdSNa5BqlDAyQByzIA7+vp51IJqeQD7IBnVjd4ZrCVpMudE/NknO1iAGRICdYADR7tF938YbHLKNHptl042brzs1E+x09RSLBKfUPdqxsdRiWiUoFEFv9l1T1heAAnE+r3DW5EE0fURy7+J9Z0e3Rjf0Aciw23VYbo9qra5ixlwEzj/39k66QDb0eiozQ6Bz4I2/MxZtdQPfbgADIAeOx36y7LgDU6geQA1zJssMWyCb6jN6/m1oAAgAbT/2p0BtVA4AoWYvTdjp+T3dAGS/9XzemQxbj2m+m3fr7v/9QgG5MAyyUGjbB+N72jNH2O7THcYuQyAMMoBRgAKYBiuAMFPsEY3yjB1FNJYB7MA9iAdin0hhrY1Vbk7A4oAagBiAMieb2Y95gBz19SmGofY3tgGUEAWoWt9jSzNu7AO726b0dEseqOTN2AYANhMBD/jl1U+kcA8IAdvfWxacJwDjU+2jjR3js4lpp/6pAAYDgCQltQmgRoC3y76cdHgBkjbE6AfQgCOFC1wDi37PggMtPp7kBN9qOJ2CKAfcA4bZXXANHgGX5dZ38BcA3SADPAMrgHgQAB4BlYgJb+oAFVCBaKFa+gB9AACX/r3AMQ3hnwDG4BkBXZIFvvACfgH6/9/MQDlAJeAcPAPoKEYI1+2kwGLQ2+C7j2YCqsFdz5G3irhHesRvA9QbmIA1IBuMcpbLqOM0cTsoZ9Zxm2p9ZGAe/AOUAGDUAqEAakAwEAbA3Dn/6LjN/jGiMAydzBAAMCgHfKAJEB/snaRZiWb3dx7OrVBtckFsceuGEV0EgEf31dxmpvjSO+qzAOmiBJ49TmO59xHxAdMl1O47+Z9UH6+Dvl3VqTAPVgHr2AWwBxqvWAtqg/W1AHf3ofEB1wA9xYxMV1IDqwaNoKALaYMeuEEAPIW6+Q9GasvWQCAAad00PAAr2AxABpAANxA31AMPx7fjNM4477YJUAe81DsGBfQDvQWi8cnhxVtj0CRrv9cFIe62feMFpYHVRK6JI13s+1JXX7PrhM3uLbKjN6Ce+89SiZpM/XvAA/mGgueqdQDpxvbx1B6amAAJf+vjgkC+u5uDLF6kWNruoNhPX3jo4T3qMbpID4hLJ23WQglvYCI3gcQtKCARQAPoAdL/0hagPk4Eyuw/HWInvEi05/7DSdLIBruQNIAZKgPkgQ2QDxSspHIGCUARIBoIbTD0Uxe4FDRyuEwAHd1asoD/+usL9U1+uPx3/Crc+ATgAGqA8d5pE83EQGGoDSacSAA3yAfw/DvK73E9FJm8dXbY+HV2D1N6vwD00B3kA5mYDhW0WhaTOd3/4UkA+cRhAX26WaGTNQYWh2bBR1rn01fVwJ/96/+tPyIyZsyT2sB73wNL02C6A7kAen/1Cr7i09f/+8SWov/uH/1xQHYDNFC+qPjXP/oQ5UPQGFpdb0B/2AB9AdH/0RqZyo1qsMgvjbKZruiaRQBEH1Tzw+tCMFkD6AA5AHTRAF34SN+rXxrCVqNAGJV4IuAOMADIAeVM0WrbVTN9gm128SXRqdXCKeRnIDmj6vUzT2oFmvGTJ7fI1I0B3P/RFsk0fXCjqlk984WqiA2n/u8KBpZbYgDohO50zfUACEK0fUAZADx/G6OgOUUmoTQuL7YBNJvre1BgAIBjICV4sSgDCJAcIAEL+uco2IoAf2hdye5ngIc4E/43WQGIbw6ChXGNbuLXxABUvq/VdBOgEDcEDujxMD6pbgfd1itMq8atAakgMmXhswDGS+kwnYwBqcgMYuQ2K0/Ma6FPdYTrDo3ffQvwDiABtmA3hFu4LQFAb9dYaKe0iLYhAaKj0ewGi1dHhO4+GLBAYJT1ucbChyjzegOA/fVB//3wbaR715lXYyIFSnvxmbq7BNH1ky+jMAydesDy0SOqIoDokgi+cIsvqdXhCFaRPNCkWmngBBMJ//0bL6X5922meAAz6AYAuhNaAwoAPQB2SA+tAdFAMqFa6RgMQgjIA26UBXV1Kp68YDaxajVGS3/s96J4cVUKdF45MiQCfpr/K1fR0ooDh6esonU0TvXV0tE7lwNbcB0LqbZAZAND2QGq3NZQuHePbfzI0L1ggAoBA8suwKjRIS32APJbaL/1pq5Rk1eXCgC1TBtAQADiMBsthDPAYRAN1frJtqFW2tcbOBrr//W9qoumNyIY6IAxeOUlRAQgA+4DV6qya3IPAYQK0rE6xpVRsBnoAw3/o2gOnIAW/9h8B/v/YjeDigOCr7mLNuxO2dze9AeX/15QHLmAPcBgXiA/Abx7QWiAZV9dae5ijeUAYlgNTjk8Uxf7W6BAwPAbbT10AamNdWcB2znhygAYBUKwA6gD80G4v/ecAC7c2dOBi/98gAD8LaDoizr3qgBYKANoB4lgDpAC6Y3NQxlS92AcTfTXSQD4IDhUAgRdxHIY7zWULkSABXJtOiNLIBy6ANxAy7c0xr6yZVrmu5EnR7xu2H5hIy0wIizIDc0hLAcJGCXGNXItqPCvcA3mZuGnJSIHPrdrMB1YgNh3vrgN7szG4Dzmu43bYBntZE1YSRkthVSkOweETAcgQOAebuAl+N6iBAzeQELg2HH9I8AaYEZK+A0AehgNewBpEDqdASa3CUAc0QOMN61ns8Wu1GdU8AE0Fng5bXw2JkBulcHVAfr/22IG5T4rtm4yA2kAYGsDJbD1oDlnAAdQeK1q7sVgm7nmAhBANCA0gAFs67GQGTEDLf+5MCHAcj70B7sy719GpO8FlT3Kt/OmlQGj31X3m/4A8UAFqgMmwHSwDyMB/jPX+k0Ez2tDqikDRMB3+A4jHveiB5oAqwDpsB00QBHAf3f32k7DYDXbm0uA3eUB6APgb7LHVifIg+A8JAdnbkeIHligXiBgzPZorRw312iagydvSBpMA2ctJngNOwHmYD3QBy6ANIAZcQPQdoff06LbY0jUfy3z41w8a0QgTnAQwAJGAaQANRBb1oDY64F2LZEgc9AASwGUIDIkgGwAJ8iLJgCCb6D4t8xexeA6DXtKQPNIHygDLf+mbXWqVrT/2S79SPNl0BzpA53OtU32cdacwDTSB2bXW05L0N1RIGU+iT1qw/YDeHoM1Sa/qIWE/pW0puBeAAVWCa1waD2auSCoEKKno9rg4SAZ4D+ROgnXYOuEr/2ub6e5VJcBkAAytAYrgOVIHswDGiBz9PVogcmQP0d7IjtygmlF3dFvp/nWX8jikDxYB9pA+ISz7QApb6+EtxYm8gnU53hdTRJIGtWASzO/D8ERhucjSi8AoSBrIBj9sEIgc8i3LmJ1dgFxWsBwNxAxxQO3sAjkDTIB/6gEIgduz31b6QKdjW+i+9XtAe8APV0gS/9ntW7J7h8nFN11Hb6KFaZy0+WXSyAd6QOoIGu3N/cBp+A7T0RTwAl/6YhEzrWpgIfkVt1gNEgBLk4Huu+bfdFKpJAOXQGGAVSAAFeA3sAY/TAtm6Ce8Zv635QLNrqrgMXgA9t9tZSA7fcidqJz1XKrsjqDKAM5aSUgdngP/J6KkDELCfeAxeAGyS0swGBEDghWxAAz0AfokA7wG0wIayB17faXruvVXbwGkcg4i4HUcC9Nh+31dJbuxNPSWy4A+COXTcq38ycwDZiBxmFA8uE8ZhsJZe4DVqBx+A1GAADQPlwoE8JKyBuzBiXRpQQB2oHyWALqB+bINrnvCs2657IrNWk+wA3clZoAN0JWb6ztSVm/OtXapvoN3qpbc+ALoB+SDUX/oWQNUAGJ89aotfdPTYa3Vl0mpa7gDn1ARAAGzAZLTXRDgJI9rMuyNVcYAbwAMb57mADVABxsijmXDr/2NXaCdAOkBgELRQrT6gMepabMwcUBhiA2CgaDAO08AbAA28WrP5KYelzUiTAHKNd/AANBLXaJVEi3PiawoNm6BoCuMQAcVc4l/67IDX3m35mF6AAn/CNoGvoDO1O+lA6aIBiAOrztQGNKBepSTY1Zr/E3+GaRQDzUB5IAzKAdd1Dfo7T2cgEm/wzSNAfi/WJ8jQzoJ7AeuXXKAbyN25h7G0Dagmmgvd1ZvoL0wSaS99+0a1VTSrAergPF/6zwt1ImvVADMeBkI2BFBCadMnsyoA5/AZE81duahMD/64QnjrCAdX01vAHLINaV2joqrbTEQfW24bOMWZkAV9DUQgbT/2N/6K69KJAAaSMcgEVgO9U6WJEQ9Qvh1LPAelQDyAHz5kFSB7SA8lfCTAPwStChyW+IUo0AYru96ICcyhAD71AY/9bSAeHQB/oGIR+E8e8/fQPBodDY3h7EQpIr8rovc8wFTXCeQbDrtifI2yPjf/upE0o6aHgAMgB0tdehJv4yyRYGGTdGKBgA/VyRQyQNv/787dpICIwACrAayQNEm6ynuWEmhTHaCAEzAPqtx8sDqN6hCQCLgCnUCsgHTUAdUBmxA/vgC4lT0m70Hw1WSDFA+4+D2cBduaJmAJwBnOA0bTp2phbrqXwBVHcP/XZrXEqAM46NmEDIGBkTzT6AaxgMbF6OsDXWBl5gCX/sHAOJrgEruyWwzWA3tZoGwO0gRl1wnyB39LQWBBW2BxjkHwNcf+ybAwVAc21UzYGP/9af+hbA9bEC7kCm/qgmtpICHtgm0AYrgCFwa2IAJf+5M/sdge6wPzYGOrgi2Bp1cCkhv17HZYGTGYt2B9RTTuAfi9lxjl55dxAW/WAwdZuh5VrYGLOAFQB5UvdxYwRQDpgsHEDnMG+ZA1Ngc21WIAB6/9PEwGQxXwQHuwPfoGetVL87NHAxspshwNyYHfsDdfwEpJYEUC1YDoEA/yt+wBq7LWtgeY4FuF76gDo2BpUPfDgYOwMl/6VTdqOBl8A+ggHkAPHAGnqA4wBmiTbkfvrN3z3bE/VScBpNOKagHJABswgIsDgGgSrAz78EDySsTaTX1jWByrA2dmvaA0oobT2wkMe8a3ZJge3E3hAGaS9992pnVQmuupgNoYGVS9E8BgXA5pNFi/DeY4K/942BhHA4dgfWy3Y4GXwDcuiDFA4tgY0Q0zeLbcNrBe/jA/0gZE8344GMemDhcAHA4BzRkAOQIaIDN5WByoA3fAE+QP44HfkDoqWjFA/bgcqAOaYHlcDsC4ImA7Fgejt0tx7ziMEFu4tLdEWlmX2tDq04DhotPCQLxAY/QOh46wc1Ql6zdA3ZgYSwMi4GVcDI0uusLTCfqjkxAQHqID6V0YiA95gZDwPAW6S/9WmBzOLdbgaawNYm6BQAcDOnp8LFAcewM7063sD52B5bA6YAC5k2KjR8cDoqBzWuOxLJHL3cEAff0xLAEOA7SuFMPQiW76T9FiGxk/YJJqLL3CSaSy9hz22F3RLK1sj6AxbE0DR8B5ZAzJgbrL3LgaSMDyLCPggNJUFvfXe9FfUDmaG/1A1Kfv0Z2qtqbFdUJAvFAPdtJWQON/7K4D48rQ0Wu0CBlvXvOBvAA4GBthcNhuDzpRCFb1KAapWxjA7mLX/b3Gn6HGdpp+nxnYUzrrHyD08QkNeaBnnohowLT/1un6WXtOJ6hKAwRhsr/2HOAhANhtlQQwK6gdn71Rc6Az9MM2kCQEcgakU0wEGHP18iB1fTYgQZLC0n6atQ9rUBy/AyX/qTP1rM7FS1wIAcuAzOAA/gNNQGUGgThWoyTbmfvSZ3zIG06NPEweoAzEAfTco0dBLDR8MB/JncTZsKZ2loG4LdXaBstA3BXr90wIV7bkNeeay5A06uAzVlp0aNADT8Wn0A70ga0mD9n6fkN40mrg2Hw+n8gAMQbEJAR762vIkcgbUQND0A6oD/IMDV5QwQhAwMyIHwkD47e0Ag56YBUK0YEG0EtYmB4wgz9gc9q35E6FMD/KHC4gNOnufuWjQG/HMdfwXINQAbGgH3Zsxb2AihBqlDYqWrMIMpABQDAdkQcDAyZeFkINqlaWQDteRF8/TFJruQ2j4zR/9JeByrA0KwDzo0pAHZnNgmuxZBOb+vuZ02N79QiDzG3JA9pXvnC08gHzkDyQBnIAwQ+EMr0Hv6JTVSF+yHVWtgchj0pPYHAAjoB1YgKyAZsIM/YG07WBBAYqAzKgYoK0tgGHMDWAAACHs/AdJK3mFq6QAfDWgqA9bAaQABxZbJrcy5upVA8EgfQQC6YGSEDf5WntzRQgZfQ0p9F8gDcLSdNyk6Ad7alrkAjCDjUAY7zUWkvaQas4G4Fwe64QcA3wQGBA3QPquJyV8BpgIb15uIgOyqAu3N70Wn5A07pqQA1uJ6DL9p5GtJoG4XrB/UjEGRID9n23KTdHQFKwNPEHkthIkB7tDV3bu6r1byaxFAF2B5KLQ2wCPQQxgBLtNSqBx+AyyAbGr2twHKgDE2BxDA1PAbsU00dBjgtKxB2fcAsQZPaCkx7OiD93uk5AHVxt3ykl/7WiDgYBxhrV25sSv16s7WtMhiBqw7MmCA5QDHIGLUD3dWu2TcngaKJ3EBb60D76iXZAOYQYDK0VAHLMD+UBkv/c8hv4wMxAGpNgFAgWdgCEgZDj13lBoi0uIG7uA5pABmI11QHsgAzBBz2rSS5EVwOkgIzsRN3mykg4XSGOgC24bM+irEAPOjZyQcqANJobiMNMBwE19bLSmP/XckGcS9HzfVVA3XNpqfWp/6BgD2EFZDRHiQblQNRQGCMdzIAQmvcB3oo62SfMjr9pDu06/UdWqhgPtTkQb16eAGvgPZghuv1S/bX/98gBhGAzsBAMIOXQHfsQLBBvNAKS4FKANwW7ZFkVmBx1AyG2BQIOgVacT1bpB6hNLtAeDINQVapTV48B4mA0hgfhv00O6doDJLkPOlF3VKqyRIYGvwDON+xUtVf/sLIMyAHtHdxFWgPJTQZsRQMza7F4DLou2CA/+3tpv0nSbrHdOJ6sJ0Czfocd03Xq3kDs2u/+AyX/uyw2toHtmAl4BiUg1Ngds54atwcQtQt++GTSA5uilV9yxffggmoMQinlzuxk3B4GGo9DFScJ3XRQx4AOIoB10DheB9RjfhAdLwNrkGjcDKQmyvA7SBAer3sAGOsNUXmilYDCgCIw0qBcb0Ds5q2NVWeQd/yB8EbCID3f21DnUjyuLwNdyBuIGqOBuVhO3Xtqd0RvhHMD3AK+AkKUaHYAOHmrlbg5ZB081crAcsyDvkHmED0smohzcv9tAoMegGQ0DFRei8cgfAeOw2CAHGL4kiBtZTIRAcjv2ZVbict01KD9sPKgayIPMIHkFIlP4AQvS3lowwOcc6ZyNoBgW99ZYYq2mC15ENT1GraZ5gEXfv2d3EIHi/AUXiFuPfpAb1oBnO6Vy1KLgbiBrhgYkAM3O6cy4vRTTrA2f/olKA937/697xBgEvdFgYhvBX3qkKDyV8TIpJpOD+d0117EwDI6B6kTbV8AWhzxYHKJA0hG5e/fw+HLgMG6ajntEYB04mTzAafLWKWqmYDDmBjlnkKhvecBH8bUlctrGoyg86AYDfVGA6H79Qjm4GrXS7vgrXw1bf796Tq/+/faQZyfDVYM/P10mB5qAwB3tAf0xA7xLVSeB/NSKMgd0b3hWrfzpgOBv+LUaAe1d3tc7dGNrJoj8LRFQc0fWWN7UjNXNWsYgyJ5vAwNGIH2ADLjeqxvY0DtorUDaIFSDx3mqw7OwAZyb0qcY+oDY0WyKg2I/rlq2eAHWgDvyB9gA2xWt3C1ulAEoDEwOzh/eG7umB21PrTQDbUBhlAHlQbO/AmMwhH9mUBtlA9VkHioOhN7KqDvMiaqg+WXAPr743rIcDNRBw5wMjgZQQAf4GqQA8yBuKgy7FpSoOMNaPBylEey7tJ03s4U3HybCQgBVB/HAzkgGCoAjWiLiAcuiNQYkIBveAO5YGYsDrKB0sAyC+uahgQYGYFwV2BsoABrTuzgNOrgma4R7eurAxPAfy8iaPqXH9Ela4urelQYdlS0gH9qDKuWlggz/AbX/3yEHQotPyBmkLjJgfjQM4O7oi0teRS5vRBAEeZ0yAH+6t5mBviQGm3JqC2X8iKgQ1CBtpnT+0ISgOmiAeStGaG6AffIy2OC27UHUoDxY5Up/b93obPXJ6C1UACwBgBTfdqrIIAEkHhU9iCe4ZA7ygFAS1GyAYUDbhe6KWiOetR53BObOYDtnPclAx0geyQgA0G1c9/WW4ADZmhtWQOzsBxiDLNq7qAwnhOxQOjIHg2g48rKuzfB7s31VsJj8mtxyB8yAyiQGxbhrEHXEDGYe7woDvgaga3rP76W9+laugVUNQZBIO0SB/PdCGvWTA3AuDqgOTQGuedceB5K+CjnvWq2rkHB0DLakFm1e+QYN01sobrdNb+B2znhNgZqwMIoG6ahrhBoT3VwEmCoALEGf4DJ1BxG8PZgcHQO3Fbv0DEOBgxHLmLVZwPgjk6oDHOBwPJKyQbKAB2EH7W40+k0eRERAbSy2wkGkAD1BB01vTURrga1c0GnVwJuBkv/abQfy8iXaaC6D51B7MA2nRuOzmGi0iwDTrex4uoKQc6IPHQAHPdqN6wPJCksEQwOW/Toi0yJAeoA4rQZbj2UkH4oDToBjwAEqHqpwOrUGn8AqbeuytY6OOTwPe9FRkDh0W4HA970UFQO64HDVMEVB0oAPFAfngMdoBjqD876u7zd5YHIoN50ap6Dpf+3bAzoQd9iHHebHX9jlajtvUCpq1wNoQGn4ULRBt6g+XQaqoM8TBaRAymiYbA5Hgea90YkaHydDVZcEQDFxDU4awUGHANKLu1Gg20QdvfUcEGXCDVK4QzXRLQeroOwosHqD/KHN6gzuBuzgNJgHWCDgHNZh3aOgdAa2zvIz/9mtmuOgyqgemACPsAWcDiRBkbA31AYej1CobU6DKfRLt/Z81p7f3+UGjq1htBxIAGAwemAMoqbv4w5RSK73f1DsLtWG0HqRN91B2zno9QfWmV9oGiYD6EACBgyh5q3XDK4aEmNhRB+1BizapkwNYwHyO9O0Og2A8k0VJQPcwHr6DIkBi9/XIkSwwNr0HAgDszm4HA98BD6gMFwHN06qPu16HV+/vyINJAGGGD1/GyYg6QgZmIPsyJd7dF2BtJ3WoMTwd3ZmIQBA9CB04DWzPCVYBcIH6qDKsBmMABcQb/i3VAHsYds5BhHtPrpqkU3TEHGKD0xB8hAzUAEoQOy0GEQNhoFSBAEeAaF902d6IDNfs85zvVB3sfwOaPrGP9ttQDjnX0xmFM1kJx2AD3ne3RjbRLp0zW0YGtdNgXe7H9Y0AY1UT+YGDOdLYG+64FlfNJgAKAGdyt2imiLvZcAaXoOaw7lqN9wgCZzRBer4wMjYG5/9p9e/O3c77sfI1LOb1BdTiG+qvQcUBhOHZMGffd9F4DlAO7DrLa3o9lDBdpXe7oA1XpokYP7QG7P9knO6rBrPxuPc1uF6M1ZTn+0hNdv/oeACoU6F/9QMBsBA9Lxuuc3RqbbnNc/+hZgzUAH8/1jtbAYDS/+z6A2P/q+rhNgAu3NY3e7ofDLjvatpxf6tUD3qBiQgxdgdCF21w701NBP6xFA5IQZYL0wMHmSDGX+pv3Vl/rGlXeUH1jQ6qW8vAwV/tRc0I075KNF8Ojf3eYIBAvCA97t/dowu3WPYzQdQi1g96AjNYLBj+HW0Lo7y3wsGOv9wUu62IOscpJc3Quq+hdyxe/r/dYhBBABoJb9hdd3wSlzRyLuMgObqa0EdPIumb/TM6qe9quRbFv9fTqsggHuzP/XDrf7ja1VLB/QgD7UBL/0M97nyNQDWtlg7FRuO/2Yi678NrLB87/S86sFKD4fhqWDwiO+VzWcLqOcAXC7Hv9T28TrA3wAFkwOrkGFEdSLBo8gGL3qZF2PC7FWDlQBsgPYS6tHvVosHAf9mXWqEgSD/pV73I3q8WDt7ASH/QS6qK62SEG9e98P+nkXbZ1tcR1J/rO+Aq+m03verWrpYOiHhLe9PGm1Z3eRIBZYOUAAS/9hP+ijrfywed717C7pb1vrBpJHcbWqFYNaKIgut6SOwkXeKwepE1+97mf9wEgWAA8Ujq001w+b4WDXP+5cPX9Qc6615XrakdurB5YvUL/sNYN/lbb2AbIugGjZR1uMgPS/7uRdrge+X/UMjrdYOuRblf9Sf6oIgM6wZL70vOrmWDnLB/X/VKLpYkT8sHjf9vLBgNg56wYVF0xB6aFawrB1fTVb/tG60N0GO+9E3W3q9fW6td/1+/6++9rbq4FHR7/uHPV9B7mg9gKOmbrYAPv5o35i62B1of+4gRBterFo3WOKqxdpGIPSDK8HsIH1W3rs5dBGgGgfT8HoPYNh7Q/JoN64X34LTHq160Di6LoUahu4HDehuD77IyvrOB9wwqid8M6wFXE2eOg5DNRDa+JlSOapR26vflWP1q4mrTjbqERdA1XsA32D/WWF1HXJOrIwCP3ruiABsGyECOngENl0B0bzSCjpRB7TSSroFYg9/77xd72mtRwB+0nWk1HdaHlwpzmoYDW4PspvVIvrcODGHBx1cLSbvTXAaTl3tNWrAEIfUcyosF2ct74WEt7ABe8jhwYo4N9AA+X1rgGkpoGKHtibW5/qWIAnzSYjDTIhrVvVpD6lP1kHB0nTbEBrGA13zctkNouAZ8PbmjvVD2/PgyUNvlG2GDe9pok4PfMrvD0mHmjX9fnnFwXCp4bhFwp/69ejd+zWo93Hi7qu95gukUzfVBubR12h6a0drUwA2DWEAEVgzgAGUJdg96gXTWmQEQABicHimip/61iXZ7kkeZ0RN5e0dcF6nTHYgLu1Q0EY6i2yaw+jXTeA4EvM16OQNPN0kupFtXKhpf41To7Ew9X2ASMAJgAaSG266bR4g4nwVX9YbpqYAODIJNJdRAAY5jeZ5quF06cI1yN/AB9HHWCJt1CJh2b/wA2kG5zzcOZplg1d3rhb1LzAdgA33etBQCRXRwR9aT68gAFpxscAAJcHb0dEjGt7cBe+qnD1GQa/INZ7Wp4baver4M34j6yuD4t64kfTtZv/R2RagcvNQ1WkozZGBq+XAjN4UpdYGOgJjUtIF8AO1eb9Hww763UInEBpA4NeVbggDbPq1h8HZwY1XwKcHJR9jI2p93Y/eov/B64bhiNahOz9lRiWVEw0+OYcXMk9G6n3ZABBGI2oG7gMdst60orY/esgfVBEbb2AHNcQkLb1LuuVXtcRH71e9SVEAHGhriA1HcHnedjzOnAAIJLTJQ3cgbIgAj3ByAACmhox/VtPrBthsCUDskIf6pjSCg3rtoAeq8HB9aDepllDVkagk9i7mlh9TCAEfvU7S7aI9lH6jlwhMxtwACP3ri0ttn63gYFA4AEx0cR7RgDzEDCsuIswdQgCPcHOxt3f61QFO+rqwDU55AVgDg4ur1JKbRuGKLLvrxEgA1gBcbRh1oBl2yf7lI92emgKDSf+oF4Me9o349tCmqGXXQKrrdL3TwngD8MumLlTLwb2JiOnRChyj3B/x9W5jqvzjfYagWNAAAScTXBucAcZd1PB6Y1me1v8x07SwQzd8T6lPtdTwcqvANC7+DNGE2tztQcIBF4OQcHDRaF84JEAwpVuPH06qa2Zdo5GjmXahxoN83JY6eZdubCJZwDYAZfH2uu7LzNr3BlDgz93vSj3tAAVuDyuG0d9dLQB84PSy79ZdVwXO8oLZ+qeLx0PqE2Mu+u1GuNoZt6DXlR6NuD9nB58PZeZtKYCwcG9b1QoBk9rWqztgN3p8GkJ9yb6lnxFKAdWfWbBrWsdUye/tDSohuVAM9FlWtMRE+6vcmOhu/ehUT7KP0F3atDnaB+jVogMT6EEDWAAetbHwZtSM13Pq9o9LfmliA8h7t5vRvPqVXIp0e5exCFoCxyVH21RJ94/mxw8LKbuA4NOc75J9CPaiDg9aChX4OYAAVuDR2OpkNc7evkCzK4brndNPamV8BwzIrC24vq1A99mCeMA9SKp/YP1VwgODbuG+QAH5BvaIBpgH0Y9rya7Tgyn+oZfWgUaw4tT/B+w3V5Ps2xSty605w4+mvLg/67riC0/8HUAA5YBke9R4AipEAcW6kSAD/BsAQ4PLpBx158rABDpxGrvDQFQBu4Psx6+x01rW6eXZ2Xr15goJbx69fYBq19ZgIZIt37XBN5dTd6iOzRDwfFT2TvhJwDMOOm5RLQ+st4M6qas+1f8u4N9VawBTIpYCG0ONGb6x6VcwIcgV0ZvqsBDE0+rcA3Rxod4M7/rvY9Kq4XgQ0/yt/l13gHrEIgghnRDawIerfVrGb3wDTVNKLILRBu4EMiCHZBDxDIwCNXzBujAAsCH+J0WAhlt9eH8iUw2Bw4MOdiEal6faf2ur4MXsABhYEHB+99WYIfOA04AV8uDj/ByWrSUpAfg0cS6PrgkAh1HQEYZuoV039qz+De0EEjgzvwZssCIC7vfwMfBz/g4Fwcnm0eh62b5Xgh29gD4IaPYB+CGHBDUfBnhXXQZsJn2iPhFsg0HBnIAH5Bry51hBb3317/msAQ5rbs+oD2YJ6Z9N/mzIQ3IrrrBxiQGrzsSBtZ7wBMBrR4PxEaJuDsCDeSA1ediofU3R0yhDKxQasjXghsqEPPcatpopiu5N9eEADEVBJCG2OD6eB0cjf9QHmLK3sHz2DCC4GoCGUmxcV2tBarID5r4d7TbewCZvCvx7CHwoGHequPF+umEOQ8qshVZ4tFYLXfdqUZUnirJbwkwh4F3UoZtYHXOwAZvaVze5H9Y/eu4kAxCHDSdOwh4vHameFLx0yRr3GI3VgEozVGZqyV2wK1H71WDEVsaaOZqDn1cVknOATwhi0QC8Ibrx35K6X2DNeAR4Q8uIE+EMEaBm8dYUBjSNS8xpigOc1lbYNdn6ucgA5+th02mxaW22lPGwufViZuLn0UQ6JSt8X6/9g0+wB7J3YO6/nAOAAR+9Yj+psABzCHbP1Dc+5pbRI6oj4MuOhe29gN69EQ7qEWT4NvLgEQgABseVgLhxWR/V/67f2D+oMSlnfSpDxMAqMk4pIc2ux/gxIBrRJAWiBMODfwh2gAAAABeHwNPRG0wAB2SFXEB9CG6ktnIWrzHENAYnx278GXydHIhmoAJSIaLXAMiHCXQtIhuU3ZjzrGA1zCGWotcPBmyNeSZs423G8bH719ZuJ/DTSIYi3mGy7wVdMBOnt2IKruhoMh8GVv12s2OFXTPpvOQ3ckqUF9zH6pk3qUVv/q1GqAkk9J0B3P9fmrj5FAkW7sF9+EOEPjW6IdnYx4CHCF9Nguojg89waw4NucBGODz2m0EdVSrt2J00cGSODafGyMQ6RwfE4PXKZltN5UarXgy5QAwwOF8bamgvohkuYsbODo4PWkFMeD0UG9BrbyrqlvX5iGPRDhVBo1beoeAWcliq7WwtJqepvjZaqADg0LCGp7d4Ru1wQ6hxqx/UlFBvxaHEurRfXXwbeoCFDkSX1nIh36WqDAb4J1GL7ZfNLkQNyDV5wdkaCgMa01t51W739Sz+vKfWP3rZpEvquhcVbarqNEO3UETRDrOWiwnYoTpuT2gMaVCd27vMiQMcxo2EMTCGVv1uMatSAdLQEDV3K/rcRD/tAaR3cBFqJ4PGiGV+DcAh5/g8zGoN/UWwHuP1j3B4E5bzenO9glhbg0DLHGxNXfbAcisjHQBH71yp8+wnRmrq802MgRK3dtS+oGXeH8hlHjSO7ml9rb6s0LZ0vuVjX7CH6q4t7ALjcMF5sCJ0XiHD2DqG21B8G4AAKt10p73+DIuAEKDSnAa7V3UDJltNvau0pmJ80gUi2nQQexDvKe0dXR4nu20zHIa0WEduu6jRL8oFNA2bQb1RDMZGlVAMDwZQF34SGImNPPRAAAFPFng0JgXTOzAAAAAG+sgATcB8onQ5tr6T3//rHwNDoMIhXXVwatYCtiGBYtdr6zMIj+ZuNT2BRb2F1xFm9LDcLruUkOoa62xDN6urcuAecphfX/cHkINj2GrhcGABB7gMYGZFU9G8Bq/9WDRrxmCE1IiFdL1wT2zbphoc83vaam9oY0YIlfbVFoE8XMSGzFE2sxVytWq3FQN3FoaUUAIEh3t4Djwe6i2vwG5J1ukh5yQ9SBrP02A3r8+DdIh8/UIAgbm22xSGnwNXCuiMQ0WIdTEMxiG9Q8JxOg6VX/+vO4OhnRLuDjrAdt2MBjtc4CqRFIAAvEh2P8OFIbdADGlBVeDGCBxjXR2no5j3ZAB/2DKeQIAQ6KhoP/V4iGd+Ds5AUIAKTwYX4PxfqMUAbgAEy+EKuFpECiM6hgNojOsUQzgAB3Q3ia6wJAcaG8iQH8JoWkOkRrSm4aYG0o0F3EpergnAb5ZdKuG738MtqBrT2DTqT09glmtPALVXA6kPDAB1ODMYcfz3fjFokXCI+J4sQapGslDa7UB1t3ZPdKCAXGkZ0aa3ZHOkiiSGr71+MYKSQ7ogbjX1Xo7geD2/BvuzSBIbWAy3SHqy4SmGiJjWS+HOkMrrgbKOF8m418C80EgADCSGfAA70hsIAJJIeRfU4ABBSdNQG0pA1fevnMFEgAVGSwvRFNcJ9kxNd3p8HPWd4jWmqjSoyUIgSLB6hmUZUh0/BJeZsSjhR8GgOD3RAPJAxVroKQP/Cr0pDikhrUQwTwcOENHMan2A9/BjIQy+IZ2A0Jxa2td8kh6r0hlIYkXDaRs1Dd7bsZUQ8H+q/4PR5awBDyomwbXVG+oit343rtRDbOuj4Da6To7J0Rgai0NE/BrkQ2AIesADwyHwNw85gpGQ+QABRkNPBx/SdMyB72dUgIZO6T644JzYf4Gh0GBVIbo/Wf8HipDqvB6+9WgIazEAOuQobBiMh8anXTwfOQ2sSG0/wTsh8yQ7FoWVA2wAaTYAjyBrMnRNqpZkONCGvtdBYhv7gzdwctnDhUAEgA0QAW0Q1QpGjLLlk6MxNjkhhSQ9WRvbdiDyJt+D5kh3kQ2q3HbdjUKruRA+2oIPXfa3AHkhuF7mMd29e3ywACloQE07SGh8DD4G2y3RdwcdkNOHa24kghoYjXcBFoR4MegGIQA/EhlgQ5rIefEMmZ44ZDIkh/WQ1ewGRkOoyHaUDJ+O3I0MRIfGz3Lk6dYEEshrnXSAIe/4PtEA1YdnKBtLfUmBvtzhGCaXJDdUhkaQy9BqQkAYlArRDm2e6S3SQADE4NFgbkwNl5OisDewMgskMribLBDdPB6Xjf83t0S2YLqdddojByvLaLXpLENVKQBE4kUhnrfcagcFkN6SGo8NQtQWHTWLIbRYTckq8AAqvB/i1h27vDNVu665t9Ukmo6QwnIYskMtTArJDvR4XkAETAVVI1tQHjgtUSWvBBJ25v9IB9SGJ0N196iNA2klr9sBeWaqKdqchoWQ6zIZYkM78HI5DGch+tOB+BqOkMRp6AaAv4GkPZb0AGbkNFoH3t9saBmUCLQpqrQOcnaa0DryqsOQ/ERt7Ogvk7Hq4QwhmUzLhxXFZ1zIAPEtgIhjt3afLrPiBuIbbc4U3cQBQ0B0nHQNbJb8zVHChtp9a5IafEM8yH7DdfEGhPPfgoc/kPNkbgxD+iMWjg2lsh310zPqvo6jsh2EFKJwa24PCXAj9dhxB6FhPAABSEP4Pr9tMpByLpndRIC8IgsR6tFDfoh3kCGShsgUMwyH44NDlOgeQysQBjICf8HsWKcpu6KjdWXHxkNMK6aAoceemdA4nnoXQMgG71FDcUhtj9ZWIZ0UN2frorIsf4AxQxBhpEd0yAAc+DwlwBj3cqTpXgCtCb/wNlkh0Xg5VXFn4Hj3qFnJV0epxQ5HIeLENvcH3FDuoRVaTfUVqvvXeKGCxDdmG2VXahhsWgAuKHFHMMHGlYoHQbtvO1pWbSqd8oh5g3dDyonyA/yGvxDlVOkGullZpqp3DcG6qduPg5ICLuJoNvUtU7571lihs9rR1TsnUA7CHpd9C9dEvDdewBW/X756WYISu+vIQ7zId6FWC97f5DbFAYHTREIZtAAE8bFsQdYAegACLwcaEMN3RmLtxaumwjbphFPYDVZJHhDCyWh1nZO+FGENfValZDzRMJ1cNWXFofWgYdoODTN4ekQwMoY7J2r8H32D9PB+AvW+Jr8mhh76IRDDsqfZQ1i8pqkPdEAn2AXeG0fXc2loj30KU5h0tBOWMOzUlIcNl2FWpKoNTWO8NNH8obofUAqHDlDjoAS7g9nvsba3XkBAtMbl2wjA+ZABKN3RSqKVmp1QQTgwVbpT4Ml8G8eiDd0JgFYWuA7d1wfqzOt7ruvojf7wdokB9OABJDrIhlo3Sa7s5fWDIh4rwLyG3CGbrIDFXB3lBTaAWX69r9QMbpNENlSHbI4NPBlAgzxgc9R2yPNTkAK0mhynSuJpLj0n/g02IPBGp6uC+nn/JUjAaZhabnAJO3bhxU5ENb3gphDaxALqnetBtEfCqqGro9wLCV6Q9k1slUPnSQTNd8AANSWi5QBUZJckaNwkXTO3gYCoyTxN3HMaVC9k1uaIAI7oi6Z2rSaobBdIW6kTUyIfqrj5cGSmgjGGnDnWxkC5I2yqBSFDQAgaYAAAAE+6v1vwAVj9VCoadkPdKGITdwmWuNQ7aodZb34gaJmA48Y0mQ7hxQ4Cy4AAteDXQAKpQ1qbu8HAkcGCuDP++30LcWofESClqGsgAWvBla3DZAFZENdHpSERHVQctQ5WodxUN4m7f5DRwhq4QIVgdHXUduB2iALahkjgymlvk4OjxBWRDpbAEtQ1WXEgABZiG/EErIhvQrODwerUMDqHgjNwWWreAyGofhEMqMlK4NTbmppQ4yIfRCBToa9GVAdUpQAEnBqEP0FKH6RDYahhoDd0Znqg3ym7BLAJ6hwtcHy+tR4NzvhfqAXosNuek4RDVfXOm7lDauXB9mDS1phDaB9t6Ztdb6hrHAw5ToDN1wmQblEicu4CwBCBF8o2+wbTbtCoqq9Q6GoZEUOa0BkDaK9u+hDU+wCeK2nqG+X13pu3DYKyoZUZKgaHcOK4Ghx4ADcohzkP8iG4NDR1m/rjTuoZ/EN7qGqiQB6h7aQ9LBokw2YaHn1DQq4JODZ+obUcBDMpxrdpdNLnA+RJo13WAaH68DosaJQAPXToLUOzqGm1DNzerIAJWbowXBrqGHKd5pu2tQxJhvbp15H7ecDYMGuX5OPGLv10dF1cjQ1gAatQykaHHkOHEHHP8+eWztQzUfurUMcfo1aI0qh/8lcfXqdUMmqHaVDUHBto/Q/doTXWkiH32DKkh4fAyylurUNDqH6q4luSQtcBxbuA0NeJbWND1ahl4nd0ocg0M6qGj+Dm9OmjLaeoY80N//gcAAmiGgPze10HB4N1AJbVDFmh/EQwTwbsw3wiGWMgaNO4+nb5GrHUNqqHcVDUHBp0Q8czlZEPxqGMtDWkkXCGYaofM0O4qGVxNyxYU3ZDgwaQUP6oiSwt4b6j4/aZ+rpvD1FayUNSMAKrDcoof500cRrgT9b565TQ9xweT4OrqGaQEuHFSNQ7guAvj0bKGXS9eFukLQ+Jofh1VSoBoS9mmhvzQ4drqLEPZNbl+DVTSNsuGcQEElphCGYVDDnweRDdGXqbwMQiG+NDEWhyhIJYADug0OU66nAl4h+qDRLIe4t3lEBlMNVLOjrCHG1tzL1iW75dwAkmzsxcIYF5UOEqHfmYpoGjjjWueVDUOsQAsgA1Uhj2Q9FoeTJCP3rM6w4qhzNQ0YUu0t21PaL8t9DOsHQ17Niae3SqBaH1rDOtp7ewzpNI24cUZNDkwh/B9QhhT8g0oYbqZDcIWGIQ0ERqct1utIIak3gAIDQ6muDl6KeW7uKA0BW9hnYWXuZP0BW6Sc18+BvnDfIoaYAD8gbQhDPzFOB9eXbT1FoMsbYrdy4Go6Q+ioex91tz1fPoX2h6BQ3koePwMdl7u71gahnAAODogRoDNqHr71wFgTpTD8xXi/VuobjtDnMhnNcHJobTYgH/qLaAaxAZ+9bOXr/wNKSbikNi+q92vZwIFw4qWAani8LkQXuQ8g+CAUMqMlICDvjO7QrRIuHakMr8HJGdZBB9lTfP/rPYCKKGMRDAwAZ+9WsBAqkOooa5yAkQAENvcboaz1XHl6/CDOJ63e4DoADhUOcSGzRDCFGjCtQwQeH1XSqA25Dd/mpqAPuLQVIKvrgXq4SvG/Lg60oeB00tn6jkNiKGqPg2TwfOQ38sQ+X1Keh/vNSqgFxEO2fr7uDs7GcHg8RwadYDVlx6mdxAAKxQ1EQdZQ10Cq3aANSh4ULdK3DXPLLAAReD8kUSVEBeAFofV+KGcWEWqgejQ0czqS4ilQahWtmsh52Qw+lro4Np6G6l8SNu5pQ0ylujkM9k7LANFUhuw1Y9wfsK3CKHHFDL+Gz2zYGhqpEDloAlWAZehhbHZrId8IM7Fbny9Cqh7/XVn8iVA1u7hqbdFKGkm3a2fulUBuogF9DENu7vQwMzqtkTiiHnYtXTOjZDUiQAFQ39OAloUo0hlMQ9UzEbXBCe7nmd0F+wv9TOIcjA2D6GDzlitmoyvYhfsVt3t2bENDu6hv5nVGoesUOvvq32t3L6nmFP9+oX4MDyHk+DQSh67g6U3H2XolhbzbdZJWyAQ1guAzkMjEB7jdUYAQTYB2hvbADeoaygAby4fkchvIevvXjSH3bNZD0HFzFA4CiyBhZI40NA8h52LbyABo0OzN79JoSrAHHg79QEElqEuYB9DIxmBbHb1odaN1iQBPUA00hsr0APIcK0PEa6s7dO9mku3VpxpVfV64bBWdrxB1tDWmQD+kNyGHCpN1l+qu3WVJtFZ0Dob2wAXCu7PzYxhtPkOWAaANDdfml5DfWwDykNb2bvL9yitDsQ9MbsNJ2wgoF+Dcmhl/tW+1oz0O4kB2iAPJW3kCFfeoWADWZQ8dD8bOuYQFkACJIOL277iDjUAZQw0QYeRQN2KGQJD3ChyQ8P/of+OUsqGIHNhEGqkQGipK/Q1vrYKBDq5AO9yCoQHTUNQOAo5DErwT1nbDIYDAIdu7DbdReezEQzNcBwfWu6GDUNYlAM2DctIfQw0sQJPANVShjM9PFeG+UMk3roCM/9W1UQ7hxRp6LI16Nf1YbEJpQ2aob7s06GHusdehh9KFd1ofwd38mqia97uh4dXa1DgwPUU16inwsShhdQ9WRv37L2G6fSDtbOzrJLewawXBJKGsvdqBh738NDQfckMliGJANA8hqowx27szkPlMJLoAsOm3VQy80BEw2uYaSlDp7Bm0Qx5IZW/U2mrxLVKwh9SQy9QCfnAyO7R2dtXEM4w3w+lUkOOy7HMNZeh7cIaswbUd04nr5jD1ohvh9IsIcXZ0G/aP7NeYhybLNoobMkPRyHiODKBhiWQNu7txw1J6HWJAFju52vQezuzw0VkHWb9UShjKQ/FIZ3kPnzgXRd1ah9CQ+U+FIEDeO6JyDrJ6xGTQUR15vRkobqsNOzqWrDfIRv23XhO7ulDhYhzDg3Noc8PBuPrNyDSj4abQ3EoYkw1b8Hyy4bM8JbQytoYFENraGs31J5BwyDRQ4A64NR46qRAt0G1DjUU7o/U1KGaSlIwuwYFQ43Xp7+2VO6m69yMB+2/RyeuZp11YbXb9qrZczQy07udgBa8HjhDPnBxf7b7fpgkNbvgthDDUGwFQ0cofB4NhybdzY/rAYUw7ubFwEMYUGXnVOVWyxQ3w+hamDnexbP1bHOo0ph8oYda0v/ax1AF7AMpjY1LtF52g4aBOdoDGoTnXG5oZ0XLaGGdDwLuw0WheABOd3WmH679/D4EYFQNVp/tUb+bdSeiwAOOQ0IqND4P/jojy1ujGrm5YOofG9QXgBlAALmhk4Q+ewbHv1MA7u71SshuPQ9wuB/EPHBbcBDKgAAsw1EIYK4MaUHCHwBhAYznZ4Id/N1jRht7984h3FQ0IYfivD0mGldDAHB5sarZzttY0dmHqRDoLCHNQ/ffpLx1XCGARDtwhucQP8IdBQDCKG9cNo5hgRvTYDvMtUQcGstD5EG23OFiYfWq2lGh3nY6S4FCtb3JpT7UrmHSdNa5huXohuYYjz3bQAXKAc4gFFsuZkBkb3zHYia9nchiYDanwZmfVl8GQH9BURXt/eybvIkMX4aWtDIVBr3DZ3hsZfWwPqJZDRQOjvDUHhukw2lGhlcN6D+1xvd7htTw2yqH9wAuHFePDahtgFq3gWHO8NkFh3uyOToij4POu6iqDeeGqWQ5rbRlkNW1a5ato3OpH3VhYd5kOBu6FktteG9h/SY5qM0BcP6WqD5zjMlDfcRqlQD3Ea0wNJBh6Cwy4rv8b3J4a2313chz8wzhYZG50qVrWLDZJhlrQ7ioeeYAprh2TDbTWuAw+aRqioBl6GLwAS3OsaMOW7qD4P0WGoLDg9nLIAD8DsGcifUA5dE1ah1wDXCXsB4OFhxTxDH5h0AQxIBs5EMVABKRAclnJf8J4oYOMPVQIvKtH1Bit3SnhpOACyWHULDP+Gm7nUpYa9t1Us6UoDWQAHdDWDkALMOk+6nq4XeGj7nW2uFw4obu6PHNNxhrEwygYeB52ltAshDKacKVAGtIaNECKWHKz817uygjX0HHp3IeOa9CsDmhnerRbOGbkOwt6qyDaPO90wwQ8ldI3ciGyvQOJh3Aw13oc7c3XP7f0skHB4UQ5QYd4sPjuFeZD6e66tQ0eBqPkCQSGJLaslhlhwArkBKMMhIbiODjghu9DdewCC906Vq9aDPjmywjbxYbBEBR/gxgNzQUKqQzJwZsKUumGqPlPuWm5oEIoZKM19t7JRA9UGwYjZaoYevXfvQJ2I4vO3PQ2rev/0PpWG+RQ7gG71QzGQBUZLYEjeUAUeGwaQ3ERvUr3VqH8+ooG4NWiJqZp550JSHoH1iOhjM3NkRroy0WCAvuDNPB0FcLCgCb/WZC6tPAGy4QsAJKIBzoNvKbmn9tTQNNhBKUHckTzEaalDoeSnIwyZ7sysOZCHYUDE/OpAAODwYWAC6KGbPd/wgaIAGBDpZf2b6rogAO6Gh+vdB2lc91zSHXANawEXEwyfVrdQ0UyHLLDyFh/+rUERqj50X05Y+dRxGsyABIBolkN1e7tLDotu0uQ45YflECd27DRArz61wAMdAHKIAZyG5ANpchmlmG8Rs/A3OAATtDJVh6mw3WTrQAMkkbRHAQq4XyDM4ACPoOLnqT6DwEqi/Q5NYdNMOEqH/v1NGW3lAItzqVENy6HRpDvvwUqww5TqqxXxYgn6DHfOh8ndiTgwgASAa8y4aeuoWoEqBt5sMEqHiNDtX6gthNP+H1sOGG7Gb1fD6G8Q6NIcfvVGPqIbD9xuxcQAsAEOcAbWGr711EgDt3SdYYIV26hFGwIY0AaqwybYZVsOEiB/ZDXeG5MCBQIe+UN7WHSm4PchvCQKmBvU4OQSGDLDU5WrolV/BoIYOAd7D+d7lBn5rXPIaeI1GlM0wIQ7+nl3WjEGO7152rJ39hdqqiw81of5sNhSHupDOdhwyw7rofQxkqFbwDD1GhgAQOvoY0V1lBLQZNLNq81TQD7u2h1/87ms9D4hzcQ0oof5sP0d7IuNpl0VO3UiQFNsN+aGjDds8h6WQ8/wfff2wC61GDTBoZyjWDbobuhhABgMdQ0h+qQ22BqoMMjqAaDDEmGvhQ+5YdA/W0+6NFdizW6ow9AQCi/BKtb8xVxT68MCJQYa9WTUiGted68hlAQ778EU40b2GA/wQRGsj/WfcmCYPA/rhuDQDqrXg8HYZl93amHg7DpVW2JgwEZp7kA+cHEmDktAG7g1yprs0OgcHNq1ggu6+iGKBqlNWiC6cTDSJAU33RG1sf2wW+6d4NVvuqh1bJ/rhMh2+70tDJ/4DWwyKZsaYMZtaUxQLTBmMAFGYc993kSBPyNXTBi2IMNkFM/39MHzP9rya2/g7Z+u5kP92GxmDfnB/8XdXSFV0Pef7vh11N600DSmIYY4PkcG7GdazBrrvUFGp2YO5+78KN3Dh7KQ7w4fTEP+iGfBdJfu6L/RN3ti/3Jf7KNNJYhwvQ5wxruYON+6IhdPoh0Ew8sACT4NdM62/d2X++aOAXwe273IvgFzD+3egeHeOpllUNWsATu9w/unWBEdYdM4PVXgXjDcBybcIb2YdA6x5C7tUNo5mukwxSId1MOBCGY1DydhnyTPZoXX92lf6T/dVX+kajceQH391FUbmv9JAe0/3fAHuw61rnwCWD8AevDrcRxrb9BI96lv989bZVgA/7rNYNKABSWDePe8lg1/7pmdXnFdzQUNLB5zreiwcNrXAB7JA9l45Pb/RAHqkC1Hf7dhdAVGlqYCZVoai3s97/iDnIh67/dC6rOF1y9EHv9OAewF1dgHsg03i3rQKUZTqk/3Z9/oicMasHz0dcvRXRHdQHoScN/C66A9Erm6z9T+IfMR2msH7A9A0kOH/Qc6qtYMQKEbWDUNG6L9Q6wcKcMusG3OtEgevJ9WU4e9YNZtbzOtkLqvzrYW60o13QZwqf9jTh0puF73pVdWtOGJnDnuhVTTW7QGkd0GB67qNybBigPZHFoTdVvUaaA9YQewq9Tl1qUQ0zOH82D6Thkrrc4Hvx710day2D1XW6L9VWwaWF1psGNf9/genZw9JOUDfKSi72utBzh1pHXX3pqcOnOHHXlSWmxvvXSME5EP9sH1Rd5wu8brZcjp772jsH/f9nqBlOHBA5sWMMiKbGoNwGOvggD+IdxkOGKG86UimOyEw5rIZpkN1L552DNou4FHbPwLpvCGrgtjDEfiYqw/8cqyAC0PrssNasOumQ3urt372+/7aHdjYQEZDX9oZ/kM+i7uCd6GGi/vd7/ve62Vaa88drD6pbEPpNClcOZcGFtDK/4OpLW/3onYNTB7P+9S2mosDfziDqS1I27cBwUqGwP/Z6jopFZa0HvbDKJABVQ8+TsJK3ZCcKBDzBhsWAGrDrgH0XcMN61rLAZMwyRn01cP8WGg9iof+6gRPrhQ3YNxUrutN27B3rTQQPv0rUy0aqJdTYug91bQPtbF1Di7p+AtZBrsXS7FsVhV9i7k/9iZhyNw8OLtHF2Wo7Ygcr16nI3UUrpnF39ubRdVR16xYjfVrpjN1Jy61B9uYe7GZBdhs79119aMb1+4u71HUeLtQ4OEcGcANn+ui8XUk+DjkMAS78ODl7mtDg0Yhhhg2tuH/p+Rfuqjg7GjtoQ0tuHfxd/bh0b3ZYroP/2C3qOODKEusPaE8ru0ewBh7OT0f/Wop8DhLtMA343q8JdknB/IfaBLqyADOAaB8RC7htL1XqHs4902AAiC9JUu9ejVK7t04NleqzxdZEuwAA1HAbn900S6edNFwgRWXW2jvW4PMS6RC9CtdCInS5QCkl3Ssqfe9GVerT9cwrqHR0Tq6o/dRomv9w9rpvBl2SS7SADdwWydQEVrthMM4CbouD0ku5IbZB4Z2Q0Pm7GADRQ2yP3XN7uCUOPuHzPNM/aM0DW8PqvY1f1p5xdQiuoXDqIAa7D3sy9SuDhD4YKALZLpCAPLlYSpdl6O4KXQWBGvvUuSQxXdP6Ou9HZ5Lr8l2Lh7571p8u0wA3OHvF6znibeuDhd6kKXT+jqMY0yABYzdMUuqxjXFLrWl1gc01NA7gBw2A3rrtiEM6qaCRts9OiIDXubpI8NwY6CI1L7hiIA13ps8EAkvq0UN6nh0TDWpwzo11hZ79/1ptADyTbjIZG91zqRXuDk6Cm8XdBHq2l29uG07dl7AUaXeuIEdE3iwa80AoBgBh9SfVuzZxtlk58dblWo9TVp+pD1350bzPD4Oe6zw7jwfDH27BafVRixG+TlSUUHKKQnS6KeDIwB7znWvBA8IAh+7vctDPBjZjWAZrRmAs8Gc9dBfG6Aze9LscwRfS6uTcqCmv6XWY+sx813MboeVuRAdbzYHrvOANJ/qIZdehOvAzTDLoYISGR6SDN3HRVlgP7rvBbpYAAUZdO8GgJ9SCBrnmAvEHMZd0HaZVjV52oifVvrYzvdRMu6N9bZLoSfVzNaA310IB2swqV4YVYCXoGAo9bT4ZmXVKIHRAPFPrOkDt4+zfVbY4j94PnibA+DyeGxJQ4agAbnCiy7C20zT6iWXVwrsd835R6un1eZuqA3dW4c11SqeGVZdEWui7w41Hv6i1/K7S+DjnAOShuXwYNl03o6UVDDsuygnUaZvNl1aq7OsdNeupvg9nLvl135B62+DUogDvg5x+kdPXuy67hDZz65IA77Lol93D8HynwxoB8aTceuFDl15c7zQDBRmqOXRF4fJJ2L8GAX1acuyl3eCbtdAMb8HU5deDqXHw95Bupd1aT7dptzt6tvXbnLrDANUrY2Fdi7uoeOZq7oJfW0OHaX1oXhkl9c4Boh92PY7v19LOuhuXdl7vxj3/8G52NI8ujuXQIRogEO9y64HdAhGhAQ3K+qQEP/q6Vrd48uysNZDjvnF1Li6Mp9hr6+Xw547rNfW0XgCBDIxmpXw2p7uy/UOvqLX1w4BuXw/m7vwV37y6scdCvuxAAPh4cOD1jeGz5dEEAfHHdiESvl1hvrgFdxOO/gQ+wZroV0mx7v5dfAhjgQ49FrEEMR0bhBD8b6+3wzbNokEPvy6WAAXvhhBXTqpv2n2sB6SH1Lvh+3wzArun7XlwopXF/E6b+XboIdF10uW6JeYURupiA/BAeMENaBaBFdx0Gw3w4Qru9/A44bBhNNIG6p3UcZv7t3aRscIDMEhtY3eu+s/4PYiHFjD4LdR9wzXHv8Y20+HTdkJ76o7w5A+uPcNPO7mIDu7WnLwEIrstl1pCGOU9YFGoRSAoKt/fW5CHxFdBQhr3HQfepKEOegAvfD4FuiO9aM4G8kPWCqihDVjG3RXTCEGCUhrx7xPDzK4FoQ0VxqX0DmK7vG6hHhnoQ5KYabaovG75wmNQEdF9erPva41hK7igApbe0nw/rPqeeW01wL/DqfmiQ1Lzptv8NAmbcctIJm0/w107tN8MgJ7jANBAAL3w5kxsX92Gk75xdHUG5JXagOt6FXflxCld/kB+X9TkroyV2bqHAoDIARyAI8MrvBw14J7fMNEARipXdOLvjn01K6JvdBfG8EQ/whuJIDNK60KdvEgarRKjoERENLmEuld6Ru8yDRHeqqUjWZQVvdwqGqHXeMHtMT2iJ6T8dsTuuZXUuLqbUiRQBlVw7Zulnw68rsD8MmaGtldr64Jf9UR7rva3tkEDABZX6x13bB7qSABvUo3xdCShlNXScrvkl0Oy7aAjg0BixPSSIYYCMD4GVfDN3hza7mwEaMfaAeGhv180B9InUbxvE02Jy6q3DKRuraA/4npaD3EkBrbD+I5A6A/aFp4d0eah/mAsC+6lPZAbrdQNIq7UF9+36lx3QGIaijX4q6XHdYYh+P3aSrt7cOjuGKCt/K2hAnV+Lv9FWH+Hk/dbbh4u9Uyrs31iffrZTNgventw90AGZS0bSaeVdvC+vlXbfrtG93Cq6cM04ue3pPdIvqbEPzCGaYt5/hq3cE0boDt2ZrgI71UjuzH9SwTq6U4vXBKYDnBO9X3VQpA70CYQHDF9e0ahFjfYzGVQCOs7JUQRqu8P7N3eqIgSg0Vj+NcWIO8QwX9jkJ0hq6gVdjqut59dcnuf41i/qm1tEv6wDmsixtf8OHO6vVd8v69ZwFeIch1Uh8ACJD3ye6kVaD7tDV1Ku6w/d7C2t8QyCnuN/U9uG41d1Se22A8Uvpt/WSBHmAlDUe8CQ+YbuxqjnqboJDTv6gtXaGboQkMlq6kJDRsasgTV/4dTY0pFKalNG7m8lPZxrkbV2x/redNYtQOlPVz4Y7V2kSGYLdiruuInYpar7V00SGDz1iYtEdXduZsWgPaCbDEDF2G9oED/btnV36BHlVwC6uw+3XtBvp11DwG7l9G6umQpADwYvV1wAal/1b1h3HAE0bsd93j/rRgAPy+2SQ38vvrE2DFYwDdXERJklTuru2EO5BG6EDt6ukzDferpnw2KgaXtD6ButK3WV4bKJ1ep68WC3f6hxw6pEWlt2L66uv1/nhpT3cigaL12bJabkt1W2okBFBroV12QshaRAwr6BYnYiKAiACsr7aNU7K+87TVSEcMsMkK74VdCwhv5XfLwAs8OpSHKF9GoRnEI46zq8CMEa6C/d/bhuBAwVIbI13YhGCgjwthqjXXkg2CUj03JxCWjUh+6VQavsIfAsa6JPD7UBtEI1xrtLLh4+6efdAvuvn3U9rr5FD4gAl4NYmutYgG57qQ91SU7pNdn/BlMCtmBr7IASS1O3Yw+B5TXcv4e+YD1+70SyrO20RA5jFqJAT9678e8c3mp7w04hulQiPxL7AN3aB7zw14Bucd2wdBNbA0LW7AAN1htOV03mbp0DnMWxtfUBntI1T6kaTGY0RugFLWxgGX0B+a6uv1NxGpTOHJQ09Z1sk61Pd2UKnX3Z3ohRCN067vEDesWmoDSIYdJb1fwbl/DPYR2gQH2EbaA2t7RstdVHu/kCJewEvfBF563m9N+G9vXeVrsPtkPr6DgNNoR2OQ3LLvUCPL+GS3DbPhpuXTUgblnXzAaDwjNIRh9gO2rpPCM9a6rc9Tcuu0nXLIdrQ0LS6qAjo2u8uLabOom11fAb3aAEYGmbXRV+uy90ohHltdunkE2Q0Zntw32xqqttdNucf5gCOFExYQCfAagIkJcdygBV+v9T0j064UNmr68UrdUYFCsN0U7M3daKGrBcEEQaxRXWha55dwchhBVTpZqbw38hHDwjAgR5zwyQ+tQiMZMa72t+mu0wIz1LryK2BlRZ/DXKa5LPY4hrIiM3hG1MNrIR/f9XKEcvYCI66XadWoGtNDeoeESkjpx7T2NeoGzZwIaBtDl0507Ef1kOWhhYpaBrlKR5B6NbwIGunUgx2RpdJQjk7qRVsIR4oAGLUDbt1XsAAIjd3u0cI5UBpAiOQ+6GEtrGemH3RPIZi331a6udd2XuxeQwtnsPgbmB1lWARCuv0I5F7rjCO7yGpddtdGIsDdmEewHKN26FddJ8hspJa3buQfW1gaQAN18h+yzbfIc1QMtgboQA9Hh/3zeDnufkMy+JUdAaYRz7PU2kTn13sRHpbd2+UNyDVBEZ56I5Vb4iNiAmiq3TtMt+0CrAB3UDUkmiyADEEdp50YobbrDuYtTkI5TFpRz0r+HQ9d4eu799a6YGlt22fqsFD5FO3BQzGgbYiPUhHkojmnh60Q9DrsNWmZ67SUAR2mzfDdQob04De9FC9dleukvXQwoeemzfVxhoj6mujpLTznqEp09JajQjAoRpakJvbrVt0RCacINDCuzyIyOhq8120e6GbdJPebkxNtwEvYCD67FhWR76l7DZlEaiA0yKHDTtKj6pKI3+rvbl3YBGnwjOlOjYTdeEelt0meHIS4GluhJQ3Rrvwg14SAXsN6DB8/XY2Vvm91bO7Xy9aKuhujffrt28NjG6cLxIb6418Osbpf13fa717dMER0sgIIYEBiPUG7wFwoSh+dA/cqwbO1oAbLojzfOpII+APpgN0PpbljdzRuv5XVe7HxfWlRGmvD6Vu6FrVfruRQBPRGuv1zf6+iI+lLuwfXlvrwYjxBu70IwnoeFQzfvq4YjSPhhGI8h7HaUO9571UtTBuxnfTDBBJfVWBHkFCBqWoMAMJ4d4N2bib6qdX8GgXfaPxqXz1O8HOsNHHhumDR+ps+l1LKHpDdcXh86DfIbp38MXCrM7DTWu3rA7Qnrqg1UoQ1Pd2huhH3fjepvfUxhwWkDj5hp7w6YbuYE3mG7L3wCQAarJFIhv38M81BxgALNqotw0MewdcguG6qYNBIRokI08rsoo29O7cjdmGB2pPTn4eAlozIbwVDBNWP76MCbsw/Wl8HZnMVu4LXw4ioZ0u3oF7ioNRGjaI3dX4ZYCNFqbIqtaRu1Z9R94c1T3ZG71fdMpGxy7ZQXpAvCFG6PqdHl269VWUbvbkDL+Hk4j1RuorXWebr0N1UIoj717ZBQsALOoaYT07IboTDrAR02DQahpot3fUopUA3qG6IAGBzTDiOjG6HCNbxe99LdoAD/N2wIavP1gKunADViQHvN3AkHIxdNFuoC3TwEb6I0eu7FYjre+joqlxqzJN3SF7dnIAKW4FDaUwBD92vqy3H1F0Gn0gFqOVuN0PG77oN+uy48Iy8bvWcDvG7IYNGq+LaDZBhtHt1vrYQb1/xuwVXT3EZCN19xGwTdJPhpZvUJloJy0+a7eRirIh2GDR2RoRN3Vm7VzdnYukSA0lgZuu2DwaR31PmW80FBlgfWN0sm7iSAHzu0nw8qodHXVDxGV5DCG4OdSJSbr5921m6f4jZsgZrA0k+BXUNuaq2LdTrcVk3X1gZ2s0RwbKSAYAgEl9aewFjN0h26HPAkpu8amsLetpEC2Xo3INJ+uzUDV5rvliWkZ7w+N62W1uI9CgBGrJhkGfPDaiu27vQYoH9g1Fa6scDTyu7hI/QQHbiUn1amSVdpu+DQ75GpISOna8hcAlMR3zw8vrt4K2VF72EjdP0hW7YIkY0Q3Harn9doiR5TRDvpvlCMhm6Ti9xEmiODVybrISOOhGYzd4vuuM3efntUSP1arOEj8KerVupQTr/j2UcweNDX8GyuI8xbvzN3zyYIQAO80NgDZfEcJdBDQaXOAWCR/jQzaiirN2vN7Dnd1JuhxIzObvyP0j3qAkjI8Gkl9YibtMiOWKRfgNtZu14yEPTtpy0Dm7EuyaGW2dQzPEdRd1TuBkYg1mhjXA4fBsUCPUm72zdq5uy3JBQIFcSNJLtqEjZuBwD3auLulQAHm76zKLjhk83eUkbO8MRaGvEjyCRkeIx3btPiOICaezd4hLVLQ1AhqLN0zG6RPduuG8fXUxEZM0O7rs2kjniR8kvSDIerN2qW6rWAEQmirjb54Yo93fy7atDhd6uD3Xzet0iNIwBELdTcu60vVBpuw3B83rfgA+eB+quIibpZ8MEeHviDQ5q7R7Qxbu8ABNJHrpdhFu6pI317o5V3xO7DrdJCu8lnaEkZHN2AW7G8Dkuq6cOGUkapI0VJHT2ArFu/03SdutmSNYu64fdfURkb3c/rp0iOPvr21dZCu98eDgzsnwOAKbIIjQyGokI3sxv7K0EgaqpdIFuqKgMuLokABry7gdDNDO0HQ17Nivy17OpIdDKKAGHQ6cgHae3mW6boNOAG5FAJikZYSP50ayg9DlurVgNjocEZ3rkBFv1B0Rjy3Qoqk2e3eW65AAvlu/NTSiqpBs2IFa5GdOlBg8I+H8jRd1URGXLdUVu51YBt3toK1BRaSEjEgGpEIxEJrtvXNybUrdAeuiqIxvgYMDmqtqYkNFtAPFABlEeS/XxYg0iN0uhlLIFmrpW90u66EgAuo5H73UF7oj1Xq6G1JNhTOuKyKtJqws3tW7TjIHyWohrZakepQ27RH+rdwgGsPXe0hpt0N/Yaz2A/6u28IkE+UeAARABqlNw4UG3Q9gaqWt0dy7ZUj/p+/GzYwQY88MURGhSqR6miALff+oJl3V0bov1pju5APSnodwr3YgQTpdt1uhy3TnobuQ16WGXrdfIoeLw1jrreQ2PxLAignyG7fQ80zqB0BhW7YrwORGkCw6DbrbA1VKRfIMXvh67XZs4Fu12gsJdIjzUu4sjaCgHeiM7u720jioGqpSHdBqxQ2voasbdjNu9BcNH0ijd2EoaCS8I9OoDXeRjvLSPkEGmkNLJQGt4RTbuKZ3Qdoq9DJxW/vNaV7uxt3F87dIj+Nu8UFb0ABbSOc27qHeAtuo6I/ubCPSNq8aRbd8RGy13SIarZU2S26nvAOOwaiIx1OSAMOlEH5DV5RB5QTdA+t3EChJH/mAzkWksDXhhpxt35Ra+WN2QAXtIyahp5I2YGHeiDrUR623VlhIXl2Ri7JgNCuu5RLblrq31CJ+GMEjRPut6lF8uDJ90eZI1aIdv62DIzyIfnCNfgbXPNK7ujG3caRsKB4IkAHHD6GRrr9cWkajCP5oajPDFy4Odbm2+tmSNxobv0Amdusuzdnbsc+2nEBqi9jfhvt3bcQbMv2Ofa9bD0iGuu3Z1Xtbs2DFru710GRpo3ToYcB8OOy6vElfkR2UPR3bsiA2Wlb+oDChq8wwzI+EXQ2JkacgjhIRnOnWhkbviNLEaO35mpu2B3Vd0l8MNbV7TyNzYRnd3a2Ebm833oaMINh/hiO9S+hsU929uGlUAsWulRXSmkcAziOs770jOyG2mI2DEYX3AQsJUAARWuk23RmRokA0ZaoYIjCGGj7ANpEbYoAoe6B/D5ZcIAjQ54YccNfe7tMjHcuxB9ZgAF0iMrMRojdqbOmp9Sg7uQQDMO7sgjddu099aJkZ6MNSiAhgNMP2gYwxnYY04BOkHRjDLpBxk1VEEc7A1UO677Nsju5NQ3jrqO10GeG2QNKWRoqIxZ4ZPw0OeHOnIMOu7KI3w7r16DHGHFS1JWRx0rfVkYklr8/ajq1CyhhkI5I7uZCPSO75a9cxhuR3QBLvSAD4hHHKAKmRp2QxEBveMOqO6cKtPxhlx3ZNkfpCMqZHCb9uju3KI1xEbZA1zqQbiNzcRkx3b/ruQD0mMGwNEdv2wEw1SeqWyO2O6myDHFWlqI/NEfIiMERGGg9p3Wic2O47rxMMgE7rVVQdexRzWJVqOkPTpHhX0r7OikwwaTjVMNhO6YndNSRrVgA8keAA2Y+bmTDLT6t+I3E7o53BkW7ZktdpuzVPddEw8IAzEaqLd7xu15IwukfFMMBlqyZNX4BLzIKU7sKd30ybTIN7/hnHI4+QYqd2taZ0OdUKR5Uw75Vq/iP/ZHDzVkyR0GigPXuI536mHU4jo9e0JIxJ4Z6d1KeGjsN9iu0HxhTLusjjzi67TDUt6nEwJ3Edmd3oMHng4v7ui/UOBapWd2RbM6vQnbsACHoU9kk2A0UHPgAQZhvZ3RrJoOd1q26v1wwmRrkQKfLvYoONtbe4jdkQa53R/XpnzHIew2wNeOGjX3X/Xoa8MEJHP+DSJu0F3VvhvsV3FmGoG9uf60+Iytke4XBEYakAARWuy3I144aFw4NmH2lY6iG4znck9nhd0GUGo5MiuG/II3IkfwiMYu67EjXFujQHVzWsVw2Oia8fDBlq4l3RS7u1w3ku7CldZbh1hvR3Ju8528u73UjiD66S3bRIGYr3su7YMNnLu5yg3uYeEb3YzIWUjGeRr2I4b4bal0b31OvDxf67Grd81u+V25IBO/dz5h75rd2rru91fmHXXd23h+rXQBYeXk3Ms6Q/dBru14HVUDoQsP2CG43dCyuy9I1o5qNd1d5HI+i6eGhZXWhYYLPWd5HmatPPhjiwyXhpaWCtpHm8jsTemyAOnkZVQAkWHZS9HD+0xzRRYcyM2FRGbiNIP62Ow68+qrd0T5GeqDgeGh9LeCkeXyPlUHOLDy+gJfIzFkey90QxGRqyaKulVAJ+kfwiOz4aU1wcyR0t3Zo/o/w2V9tj8j5ruuPDXW7qpSPju7YFwTbu6zI1U0lXN335GHcjYah073cpEZ7SPjW7e3d1Tusyw63kaHd0T5H13dNsRS93eWYQnd1Tu6q0jxnuisDeoKLeXB1cGCikkIEG3jYy+vDkPgYo15dM2umDjePYZhoMrfr+6tt/ho9w2zEb3d1BWGsMcvEgTCI4FkZLSNMgBf8NldWqKwzDzsAdFWxYwLwuoOwYtZRnpSyNL/qWCNSkRlKwzR5B8c0i5HYCjd3u9Y3QHbrtvWNpGyAjp7ASQjYIEekI2HK6zP16UusXww57oS92Us70n1L+R/aI15QGYd0Jv0c0NpLgT2w/OEeMI260G0wd+tBrnDTIUfXNwmMwBaDyqAYdSOR7qfp1EG6U/1Wuek0jXR7pHSMrwBDIlLNq7UdBAhtz0MZe6FLdnbu7aXdx7rsKPtS6lbDS/6nmoP/kaK53EhGxPdSvGqVALMEak91KSMnrorgm3/+ERLVFS2lkAgNdSohlT3VRQZy122FGE36PqmLF/Wa3uaf3iBM9PdIbe2nXXfQfEKxNBG40N9+R6sI+N7svfTod7c8jKKAWGw8kAAOD0I2GHPdTJK3iQLNIekA3TEahgNPFWMQI7fEcKMPh/JlEtLgml2LcTYZYSOj0H4nNoXuktw+h3vEV3Ee7j1ws4R6L9QfkduI2PK7syNwdu96INP4eS91ce69PDR9ujL3eVbpmKN9+GjPDRsyLVQBc+vZl7i2HgSNkth5QTR4UZ352xO6UMjVXuxqXYwEeUCP35HiQjrGR7Ww7O3tDf1te71lwsgAJCI4sYaBSMEY74fdAkRsq3YN7pBSNDK63xddt6rfHbxbqm928W78INEQG36I8igE50AruHyrdW8RxDXRt7uiAAO5Htvdk8W3b3anYfTYhEMG1G9jJq473dg7qe91Y3r5wtFgUqIgDQwev52F2qiQEd+RmQo3mkegKO7m6K4Nvbu7UDSaRt7s1fe7o9dl2um0jRl+qEYNd2G3N9TVNGZI2sEY6I0D2G3+1fwRsxI+VbqU8NVZHm8j09h689bFWrnsP8Pg8SAHRAce9fmEex90eSbufdbYGxDI9Sbq9t22eG7Ejiduq7g0WRp2AC3vrFmtTPup2I9M7uA/XfZHw1kBVuvSaEtSEciNu26m2dGCRo7I7PwaCYMUf7GTVYvuqKXcixv7I09a7v7DzAuuH3fL7pDC0iQHEmDaD4TOPTpmoXN0a+7IHD2vunQAJ8JuASPiWqttdm5G5K+Mb7uWV2IOHHF8kgu48jWg4Y8Yik+GlP9SCRm8jY77ofF34OGLYd1vumCI++RtZFqQ1IjP9p34P33Y4vg9h1mf6tSdzsRhzwGeEfWCM7Oabb1NEukm9Xjetj90cOGem1mfushYN4EcI10UFbZmDPn+08XQEEeEcN9d6SKNbZR80IxQVvHcO5w6rygpfuuRwwXaoCF1btaGDNkURjaTSZ4bTCMrtaUv9S3e7O9eyrret26OGxpVycRwxw9t0ChSMmOHwc1g/uyxw//VhH91YYa43DE2RmoAEhEe/XB9K6GkjY/u7rI2zhqX92i06h78mUu4r/ULWqqF1FUagnDoktPf3Y0Ls7U0n+7wnDRVGlFg8tRrMo2f+6z/dk6m96jZAjtso3jqZ7/dI3+0YXWwHom/1v+7XA9FLB9WtWepvMo3Mdaye9IgeudSIyweSaKBB7rKNSChZlze4xCgD3csHqnD3wRrnvQgHtUD1EpwUA90LqnnvXdevacPdOGRwD0xFPAPSL3ruo0DOHyqN8Lq14XVm1v/KM6sGaA90ge0H/WBUekD0Ai6n/dFrBg51dwHrBF3WsGIRd/Ae1H/TCLpQqOnsBsf9AQevJ9T9+v2cOhB7RNN0SO+vvcoHpxF3EVGXBNVzhnwzWvwDtvXRsHu2DegeoPvZnWsMD0PUaaRdLFRrUcu84ZNc3sVGGkdzIuxgPa0jol/28VHi2DgrqgSoyC4Y803uB6RKjELhnwPdaoCmR1ii6QA9Ugeptg4i4bkqNtsGCKjXbBzOtSpUYq60t97Eg95FRu29fi4Yd/2EuGitNPNG7IPePruht1ry7bP1c5RpzIwiEDpiOKY6dsjixR+y3e3rtZcOTsHGaNQndN9bEiQFSiNAyb0qjV6Gh+I6K4aVcOWiGPsAQwenThN2Yriy3VBGLg83TcXoPYGLtxR1796CVdVVRmC4PVUYn/COAatwAOrhvUXXG5umD2SbBS894wRv/vY4bH6gPmuHJyNrUwOeI78xWfiMZkbWyyLGRg4PQh+vNiPSchemM8A+0cjWyBEal2XB7H8jVMKUP/UXYCwcWBuH53Vzwe4+tYu6veD3OwBAAAK6CAABl0HtFqAABz0AT/289aptNjjK7XredUauqOQABAAAS6COi1AAAJ6DOi1AAAu6Dji66QA9otQAAOugjotSAACdUcAADboIAAB3QAv/ajmpOqOAABV0EAACHoIAAGPQSAAIAAAXQKGo/aLWdFrOi1LqjgAADdBIAAoNR/6o86LUdFonVHy3Dp1RwAAGugRNRpGo66LSBqOXVHAAAB6D2i0Yaju4uv6o66LShqOAAAt0G9R0nVHbRarota6o4P1pHrWs1H2aj2NR0Go1DUb+qOQABgajdK2rOjXcOu5qOXVHeaj/NRwWo++LpDdRHMqxajEtRgWo8DUdn2BHfr4h9dIAE6o/aLURqOQABAAAl6DA1H7RaJ1RyAAJdUbOqPOi1AAAe6AE1HFOD3dG94AKzUadFrY1GYajUNRuGoxu4f2jWW1HAajoNRv6o0TUbdFoU6blODqtRh0WoDUe1qO61Gkajf1RqGo/jUZND10gAjajf1Rjmo9Wjo9U1y1GYajz1Rymo1DUcAAD7oNe4dVqMXVHxajUdRmOo/HUcs4OXVGoajkAAI2o66LURqOOi1GJdWfBx0WpdUdtFrjD6jajzotPmo86LRQAN0gBbRaKNR50WvrUczqPZ1Hc6jcumlOo3HUbrqNA1GG6jedR/AA7J5qNqOg1HEaj4HhgTxUbUYzqNQ1GM6jFw+7TzcHUZjqMG1HkPDZd65uo2nUY4APro7EajGNR42o1DUfdFpbo7hW1aNRzWowHUcgAAY1HLqjMNRjGo0R4feACXVHAAAZ6BQ1Gl6jpHhv6o2dUc7D3vABbRaz1RqGo+DUZUAN0gBHRaiNRzWo7XUb+qMH1GvqjsI+52AKDUZ7qOoj6ovNf1RwAAKegnHhxC1evUcDqM/o7TfVlNRjOo2dUdNqO2AH/ht7wAI2o+vUdBqOa1GRPDgxVa+o2dUdBqMvVGoajb1Rmeo+iNptqPPVGgaj19RjBo3NwYE8WF1Gs6jetRzWo9TUYBqM8j7Hm1hdR4uo3EAd24MW1GMajRtR20WiQ0dQaOl1GzqjtotIGozDUYPqOU1HIGjnem0TDSw0bYaMnVHXRaR9R56o3rUbXqNG1GnajGdR+0Wr/UbbqPOi0oajB9RjWo0bUewaPvcHvq4wNRxmo1rUedFonVH1GjkAASmo26LVjqPY1HNajLtR/Go1nUaNqMx1HD/VJ1Rt6o9XUdBqN61HXRaz1Rw2o6g0cRqPk1HkGjqDRk6oxI0akaMnVHS6jsjRxGo0F4c6AOnVHYajCNR+TlTHUYPqOA1H1ajRtRg+o9XUfJqPReGwA1NY24Go66LXtFqQABnRa59R3Mfc7AEdFrPVGy6j/Y28Bo2zwcxqMz1H1Md7wAe0WjHUe0aN88G6QANjRm+o82PqrqNgNHyvDwdR2Ro2HUbwM2D1GvqjWdR9eo+Y0bfqO3jajI93HRGpo59UazqOyNGcajjTRn8ba1pjOqNh1GgWNRtRqGo2dUeeqMINHbI9UcmTWo0bUcRqO31Hlb8MDRx0WsDUaJqObj73gAxtR50WjPUYm8MOi1IGjzvB0XVbnUeBqPOi0t6ju9RrXzZvqsRqNG1GZ6jK3hqOTJdUZdFqY1GA6jzotHeo0SAcGKqa1G2mjLjRikA80+txqOOi1yajB9R+0WtQ0fyx0ddr7RaT9RgZo5rUcgABXVHqajtNRpWXZQ0aLqNA1G+ajf1RmCfZVjomDXgtHIAAr9RgOoy94Z9qMn1G0J9XG2cxozfUaRaMBTa6+DmtRt6o5A0cIn1GsaDn16oB2J1drUbeqNTNHPZdMr4T+oxrUeBqNL1GXmj/suu5owj4edgC0tGTo9kcuy0AwE0aCaOHNHQmjS9RrHw9UZsRqNn1Hsajl1R+0WrI0cgaNZsa3qjRDRvlowK0f+j3Mwp6WjS9Rj6o99Ubzl1UrYTqjB9RnBo46LU1qPL1HWe1ve26Go/DUetqPCtH1GjL/BpyfadUZhqOA1GFGjWrRnFo0/5vzAODFUMajUNR20Wro0ZhqNGtHhfD7wAM6o29UbOqMI1GaajWrR9FowzHtjVXmtHLWjkAAQRo1DUeEaPsx616jHdR7AQ87AH9aPY1GGGjljR9Xw7AJuDaOg1GjajGNR9Zo3r4bpACRtHxmjkzR6gQ/G0edFqa1GnajSzR45o32GokENiNG5mjSNRymo9s0ZVaPsCGd6MwdR2Zo6TUeRqNvVHLqjbtRm8A032r+qN81HLqjetR8to5W0ZVaN++HVp9zsAWto0PUYbaP5tGq2jBDgOQQ2ArrpAA21H7RasTRxto920aj8OP7YB2jQ7Rrtoyq0ZgjUhNHYmj3rR4Ro9HHrOYMxf7OrVpDRhto+TUdtFqzNHXmj7zR2uoxo0edFpH1He6jgM+5Vo3bUfcEO4QH5WjODRt5o7aLVrqMZ1Gs6jOdRgNo3X4az4OntHYWjW7RyAAFQ0b4V05zan6jMdR2uo+u0eiaNA1GL2jR9R+0WuTPuPm0vOrrWjLotPWo8K0YXqMqtH6Z9J1R4Do5o0c1qOoNGR/DC8eqD9c40YxqO6NH7GjaDRlBo7g0fQaMz1HqhDVjGk6ozY0bsaMONHBmjTjRvBozPUaln1HMrUaj5rR1Bo5W0f5aP8NGt6j1zR3fw3SACo6MWtGgajtHRrGoz3UZ9aMJNGY8dvxm9do86LW/aOVtGgGjMwh3do3jUfJqN8dH4WjSwh7gTSJ0bzqMeQH/497XG3YQz5AbsoNKMrehVlNRi9o2G0e+EMyRryOjN9RrRo8p0ZxaP5K7QajSnRjToyDUZJaM7BaEG1+jRx0WhvUZBqPFNHgRD5CevCNeCIcICOAhbzB18Tm6UQyFWsmV1y8aeQtmNap+fR8ruhCM7jrEajb1RmGo2TUbBaP81G/E9EKuxZo7u0Y1qOg1GHmj9vGhUVWjUb3aNA1HXRaAzRrhozYEfGaMb1HQajXohoKNSF0exqN0rboCd8bRuRo+l0Y8CO7E65ajn9RgLo99AYMnVy1Gio1BXRiFo9gTsZNVU1G9ajLDRyBo4XxvGaNCdG66jkjRrRo1DUeBqN/VGK6jCQR+lo6XUcMaPfNGZWjoi+94AG9UddFrldHJF9LcB/MVXy0co6OptGkujT9Rhmo0e0eYJ2j8ao6jonR9gnV94ZyaMA1Gtaj2LR7VXbtGtFHXPVG+ajqDR/6o0TUcMaOg1GGajwNRmeo2mttw6MoNG9k9UcmJDozPUZLW2I1HnRab1R2Go5AACJqNQ1Heujxo610Wlq0b2aPBmbnYA/LR0Jo5/xvXaNM1Hpgj9otDGo1M0Y9HX2i1QmjWdRs+oyM0f0J2tDqbujd3R3zo9B0cgaPAp6gY1R9RwGo2fUYDaP7rbnYACjR1Ro93Uf3aM4Vl8JVM7RwWoydUeNaPop7BiqePR3Wo3jUb9gNYBq8ejRNRlZo8hIawDXZdGjajePR17oy6LSxqNiNG/qjM3RwInep0amaMhE7tGjGdR9rozmJvR6NtdH62jCeB6kVR9UcdFo21HeujmcB2Do86LT+qPw9GDz1H9Rx+o5J0chCMcbaMid/XRixo3rUce6NetGwGjq7RwWo040fBaPWAB7GjetRgHo/zUekkPDwHGxDdIAHuo1o0Z0aPY1Gouj6bRsBo3o0bdFq21GyQjyqekeA/+ZvrE3m9H5WjztRmOo1b0d3aOA1GJOjdvR6bo3igAEaNCNG9ajRTRyxo1nUcNqNIr6sotaW2xk1eb0e0aOui1dGjoNRjGo9XUd0aMuNGtajN3Rymo570YZqOI1HeujPkh3/9QJBrRqP8tH5GjJ1RtNo+TUfzaOwdGVQjE9QNr8mNKpj6OW9HQajUXR0Lo5LUfOaMGhGia11fRuPo0DUc0aOWNG2aj6NR+Wo/lIeq20t9H4+j5jRymowLUb4aMuhHuLN1itAno7aLR7qN61HoajB9Rt6o1w0azqOH1G9ajYXRg+oydUdMAA31GjujWtRl5o38JtkaNnVGtajtfRp+o9jUY1qM8dGb6jtTRsLo6Z0Y1qOodGBGjLXR2Oo8IgZ+kN0gBE+jzotOfo7B0dhaMyNHkeju7RqGo9o0a9aO1tHnRaCNRi/o4d0d0aPONG0ajbTR2Do4zUesAAnVGs+jXrRx0Wsv0exqNuNGn6jjNR/9PQ2EcqTVAZ7bRar9Rzfo0X0ft6MI1GGajqNR1Bo1G0YF6Pk1GBGjSrRpZo200aL6MDNGXRabTR+0Wva0ftaPX9Ggaj4Ax+xo8AAAN6PmtG/qjdAx3WLcoAHAGOui1IBji/RxLo4DUd/6MEDHS6jRAxyto4QMdMACHdHsBj83RrgY3gMYoGMYNGs6j9otWvo9bUcAGN+dG0Bj03RhmQ7uEaZkOtDq++j0Ax2Go9/0cgABvdHNWjLotbVozPtv5kPfr7VBjOAxoeo5oMaZ6PENG4ejssh0DfadUdRaOh9GGajMNRjQY4MgZ1gRI9GTqjygAJeoxoAFBqNw9Hd+jIAx6gY200f16P/NGGBjUyBqEDWBEdmQOxqrKajD9RkhowI0bi6OL9H5Gj2zR0Po3w0cgAAT9H2Gjr9R+Lo94MaRqNvVHi+jzHRhho+TUbiGNQdGkhjBvRtmo0DUfq6P41GiIjZKaoLPXL0aBqMH1GPejmdR+BowY0bkGNztHqujKfRiIY+/0cgaOAoGmVcPKa/Po1DUY1qNuNH4mjbDRo5o5AAA4aMP9Hquj0TRlGo3gMbT6MY1HHRalNRrGo6X0csaOgDG4hjuTRqGo7XUfVqOYdG6mjKNRv5o8jUa1qPQ1Hz+jD/RzOoyn0aEVXs1Hlmju/RyLDYSgf+FXWDG1ejmdR10Wpr0b86Ng1H/Ojf1RvXo66LXoGNG9GR5D/wqkOo+jUfJqOMoHLHVb3Rr6o8oAC+qMaABs6jTNR9ho0a0esiPbk7Fs9wdRgbowLUYJ6Mz9G5+jbXR50WrE0csaMyNHyaj9otXRo85GgZqNfVHQBjU3R22o0DUba6OSDGoajgPR2rfTfIabA13yH+2jPrRimoyjUakaNp9HM6jlNR2LoyAMaNQN4KGzejGtR2Po//0fb6MnVH6GjzotNho7/0ciGOmABEajlNRukYzbUa1qMo1Gs6jyNRlbo3CMcdFpgKH6xNzjRkkY4LUfIGNh9HnRaoAxxxo23Ue3qPG1HpBjbjRqlo0DUY6GNSLqzwNZFOqNAzBTtUGMaNHF+jTIx0uo6yMfJqOxdH3+jeAxm96JWgf1qPxNHBmjQNR00Y99XDJGNetGqaj0ox0aI2znpHrVIcqpBjrotWuo+zUe0aMsKHrZd4yWl1NX2Ju7fCGprtRj7fRxPoy3UYv6PmDG50DaihypdWbnsoTWBU7k89U4m4qnZ0ofEo3PNHmhjCoq9VowN0a9aORDH2d96PR0zo+80Z530yvgGGj8wxlZo3lZsmaO3dGYaj6zRyNVX/UcKs3D1GlYjiEm1+o2T0dMwMsdGld9YYx1JXUX0dzqNyDGwaj27Rsho4DUYaaOoNHnqjbTRnuoyt0bsGNPdHyhjL/Rq5Q8rGpZtWpjGTqjwAAW0WmdUcpaO6NGn+jvvRh0WmZ0acGNA1HOxjEHR8FdTA0dDqPgqHYjdokgC6nZt2usGMctGTqj4LRxPfeuqv3GOvNGA6jJDRzsY7V0anS10gAkejJ9R8lQ5BJqpUN+VqoE8p1Ry6o2F0f+aOa1GsBj2NR/6oxvUbAaODNGOWjYjRlGo0vUdMACvVGN6j3zRz8Y1e0f5aNnVGOOjohejoqs7UakaM+tHTOjjotUwACZ0cBqPA1HNajdgx42oyq0Y7TUL1G3qjeKAbzo2m0bUGN2DGEajLHR+IY6g0fiaO11Hnaju7RvWo8DUbu6Oh9H7RaVwxgeo0OMdtFptNH2xjQNRpMY7mocT9VwTHsajbXRqAYzRMZvqMNtHM6jnIxsYY9jUe46PftGTqjv4xs6o+i0ZASNom73gAwNRw2ozIMdqaMX9HRJji/Rl+o5nUYSGMD1G/mj2mWtYYwkMcc1VQ1GNJjLdOrIAMaIE7u32i0Q6jH4x2uo950dBqNYbYEEjgN25xo2+MYSGPiTHwGjU/R7lo6Z0bn6NrDHnGjmkxhk3WsMfD/DuDGZGjvXR6g/Yyat8GNH9HsBjuHRz8Y490fmGNrtHAAAL6AUTGeJjetRhIYzQkb2s30jHoBjz1Rz8Y8K0fQaMB1G4Wja7RsiY/JMcomNQDG4pj62Whmo6o0bkmO11H32j8wxtDo6DUYVu0nVGXaj4tRnrVWBMbLqN6NGY6jBHR9Do6jUb+qO+dGo2jpbR6RI7pZquy2JTHLGjyUxuqY2FMbhGOkTG4mj2UxmKY4NMcSy0FTHBaj8kxuwY/y0f/aNq4HK6dJ1mlJbJEkfmmN7wb8kj9Em0iw0xJuWSMi9GxejfQxo1o0jUdTaPdtHtkj+0a1No9AMb46MGTGJpjFEx9VoxoMYbGPDaH+T1IKh+i3YxephSP8Sap8DZOh4HECyfrnwP8pHYXdbvRioY39Uc96OWNHX6jODR3/o0H0blGOG1GTajKqRl8Y4C0dImMadHYRjHLRkPo1KMf50PfPbVW1OExvFAJTUdLGPQDHXajZbRkYY1G0YmGO1NGTqjjotf2o5W0bIGNCjGs6jtotLGo2c0b5GOEzGpejZ1RtXQwUhv/wMNW7CmdN3Rx0Wow0a1qMpNHEajJ1R6wAMjMb1qOm6HsDVHrRlDo3gMdtFoDNGd+jIdRs6o5rUYjSPOFa52N4Ax+/o3P0cFmN/NHzej1dR8gY66LVMADszHvdDukm33Q/1JuMaP1tG5BjuvR+gg1+XqJqMiNHUajoXR5Go+QMd0aOLjGIGjPBBrIrTWftuaPMzHYpjbTRo2ozrMY5mPwV7Mit/r2imzXchspqMhNGWZj/zRhhoxu0d36MmNHZ0jf1uwYqpTUZ1mPjDH66jyNRnfo7B0dC6Ng1GNOjcQx4AY++MctmN69GiBjcQxtPo570Zu6NP1HTAAg7Ry6o5rUdimMSNG/ajgNRn2Y9gaoYaN8tH/mjiNRlJo59UdXSO7M7+81qcx9OY9r0Y06MX9G4hjUbRmNowXMZCaNhNGf2j7NRvWo1DUceqPqzG5hjmtRjWo7E0fFt3XpGKf1f/R64Y/BfskLUvpG6QAgUxylo8FMaJqOl1GUOjlNRp+o32MZhaPiTGWujmIxqOY/RMeymOHtHNBjqvRkDI46hsmaOQAAzqjhcxlfowUMfQGPtNGZ+jujRgeo1AMaX6N7zGVGjWtRhiYyQ0cEaNo1HAajqbR1sY2B0elGOpDGy6jmdRovoy80dqaOwdGfpjh/Rlro3zUexqMP1GOWjqHRk2o6n0buGNGNHX6jnjR0y/TlJtbQ0CNHa2jajR6boxAsZar1I8qzGjMNR8Wo2iMZm6M/EHfPtAmRukAKgscgACYjHgajyTRtho/aLROGNQkH8xVq8xi/owuMZYmPMNHipjvgx/MY9o0f2GOg1HjZjZNRqGo7pkakMOnkbkBjDXR+QY+iMfOGM81HkajrotTHo5VMbOqNITGkajUgx+IY4bUf2GNCDHoBjsDR50Wqo0foWOQTHBpjh4x/mo6YAEYmOl1HXRa1gAGeY1+Ma1qM6zGD+jcTRrFoyyMcGmOcjG1Fjzkxr6o6v0ZOqNtNHpxjaNR3RozI0fDmN6NHXRaCNRk4Y/EMaIGMpNHRejTDRkxYwlkfEtXytGxhjCNR9wY5rUbnGMHzH7RaE8xlDo9nUYOGM5ZHRWA3zWzWo5bMYKyPI/aisjtzRkgY9jUcpaOU1GZ6jsxh7Mg1F0dVGPZDH+hjc/RsLo+KMZ4WPkjHLej6jR9vo/n0a7mMwDGqRjd9m801YUMcX6PhdGB2dR1asWo8J0Ym6NO1HUFjWZBlctcksYpaO+9HT+jzotN2Y1IMfIGPFkGcT1jSxwWoxJ0fWyPLs7OBjcgxo2o9i0etqOo1H7RavMxyCY0w0dUaP2i0KBEr0myx3Q79pbIP9SbGlj7ZB5LDSOWp3aPRdHQajMyxh7I59Mdr6MC1H6Fja7Ru4Y+OQeAc1EmHQHNZzR8/o3gMakGNEjHP5jUNR6BzQaTlfGPo1HZb9v1Rtro4Y0b5mMdtGlb9qOapMY/EMYGaPtzHxpjGdRnzoy3MeMaMsjGHGjLotYBo/BzuozjljGpGj+Yxrbo6bftjVVXtHIVjUzR9mTa1pjdGPV1GOOj5ORmSNTlMeomO0THIGjh5q0GoyBMYDaP4Obq6jjotZmoz7fsZyNV1HTOjqjRi/o8uMfEmP/VHN+jygAFjo8AAD/qPAAAM6jvOR4Oo3I0fhGMXtGTqjzwcSSY4V0Z+w0dlrbRamcx5yY23UYEWM8dGP5junR65Y/nfudgDI1H6KDGsmzGY0x0aU6O7tHyajPExrpo7ADvbGPi9GkAdlbRpHo7XUYHqOg1GzqjWEx4t3I7JowmOmLGXRawNRvWo7Sse3qMY1Gbcjop69VowjUaAaN61HwejJqxljow2YdtFp7dHIGjRz2uoY1g3sUtVbdGy6juoxhVo+TUauGNgDHMZjC9RsgYxj0fDyOOnqIhjBtR/5o+xMbHMMXCGZI1cqxyxo8AAA56MrjGtOjBwxnGY9s0dRqNEDHOxjXTRr+/Z3JsXMMuUGLcNMjmjOw9z0dKmPONHAWjvlBl8w8QwcZNXCtGtpjTYxmB/e8ADuaNA1G3ujHeR5do0QMZkaOBNGwLDWVB2tY3HMeVaOwNHPBj/zRp/hMfJpHyO3ya61jMAx2Lo380aXmNAiJkCNLru+lo0QMabGPDc7nYAbox5Go4DUag6NGtHdQd9jRgNo4k3sZq11rG1hjdax2BoyOsdPyPvABzhjmdRutY+4MeXWPz5G6QA86xjeo0/0aXWMgdGe1jRUxhSY2w0ajaNdrG1FjljR1GozzMf3mO/NH/mjkDRqSwyO6oxB3yVqfFNzsAZpY6usfrWOOi0F6jPaxtYY6DUYYmMZ1GfBjK3RlgY+g0bhaNcjHa+jJNBgFvcvVrpACU1GBFjEPRtitSdUddqOe9GhhjYyx9UDXsMa4aPiFGVzVcDW36Y7osdDGM7TGo5jUMx31Y9t0YN6Ms2qJmjr1R/4Y9esflaPQjHLmjDnui+Y53MYBqO1NHLFjv8x+hY+vUfJqM/NGoajfzRkHoy/0ZFWMuLHoGtlhRnxzVesc0aOBNGeOjZSx4RY0nMY3qPxNHPRjebRjWo6csb86PjjHB+jcIxhz3YUUdzoPNP6WbVLotJ+oy3UbaKNf1bO5jekxoJo4fUcMaPa1G7GjPLRoKYyJMd42MfrGgBji9R6WY+b0aNqPJTG+ajKix0mww50cK93H0HknNQKm14oyG/s8u3PmHDvdGdhyTY3rUenmPO1GZej84WhmoybMYnf08xEoWtIWxntY2Fsel6NfjG2ujyQx8RY/Qsf5WMcbG+hjGNR81o750bMaOi9GnujLNq4Go4jUfjqMd2Hf+dQPu5rPdD0fu6NNjGpGDEVas3o1B0bxqNyDGPhj6ax6lY7U0ZNqPmDGJSjXLWr9/TjMYm6O8DGe1jAzRiEY61sYX6O8tHeJjqjR9OY8X0ZFWN/CbzejeNRtYYzwsb7GMWNHi5jLNqmHo1jUcHaN81GcGj9kxiEY/UMdPmOH1HYmj0yx5+w6a1q3XX9TGIOjQl6yZo8Y0fe6OMf6TtjWMx3ro461uvqO61HOBdbqx1X3e8AE7GPAAAumjwZR7lozbUZnqNSmqd6jC9Rneo+jUY5aOVDHtGjvXRqT/aWMYimPA1HymDr1R0sY1UwZaZVcTGO+jzcxrMo1p/tw6NOLHdpjc/RieYwMMaM/2mdG/qj/7R6hwwSRi1J0x1GNWjx6xkDo8RLsjqPR1H3+jS9Rzso98OuhqNs1HxajW8x+RYzcMabKOAuohHDq42AL/SqMcp2OL9GYWjitRkcoz13oOM0XMGFHDDHR8UY9PMbEaOqOHFu96jhx7Y+M0fEaPijG1yjck62BoxjUYFqNwtHb2jXNayNY0W5r790Hd7AWDj5RyoXVfDveADedGN6jQThnGo5g0dhYOa7HAaj35RjXY3d0cBqO/lHEajkkxtpo/D3rpAAB1HLRjOLB20WtTUdqaNpOH+2j19R1Bo5k4ZmdWtdGNOjxqxvWo3BUedgDu7GXdjSFRpb/ea0cLqPOi1SajaFR+No4XUaIaPssGg2jpnR8Woyz3o/qOyDGGnDN4x6GozNMfgD1SdahhjFuxzAPQHpiwWMZ1G2ej+Ae/XY8hppUR0jzHjdjv3+8gPRrsfN2NsVH3gA1uxnfo98LudgB27G01jszhyxHfN0dQaOLOHja1vux/Ho3rUaEqN8B7ZJj/tRpvY4IHrR/3vABA9jlbR0mo5JUcWaPh7HxajslRvGo8YMb9YNm9HZBj5zhxPY3yMbUqN0gA09j0XW/3vfo0YW6MUi689jLzh0vY0OMb5/0V7HTOjO/R7Ng6U0br2P/OGndjGnR2yoz7se72Nt7G3A9Cv+xfYxfsZcqMD7Hg9j7lRzX/WHsbOaPi1Gq+9Uex4wY35Udr6O1NGMXDuyOifY6/sZCqPq1ql9jEVRrvvdYTqiqOVB6YJN4BxsrTVPWrFcOCRrZ2De/e7KowH/ua01B/6VqjXbq0P/VwIgj/2l/Qo/9e7B/wYM7AEAABYkP6LUAABUkIAAFRIMaWoAAHhIQAAICQN1RktzYAAA5IMaWqGLUAADikJAAAIOOTS1IAARBxxg4yNLUAABCkAQccgABDS16DjgAAIEhIAA+Bx4g42Qcb4ONXsHEzDuBxsaWiNLWDFqAAB8SEEOOEHGSDjFBxn6o+8AGoOOAABaSHDFqCHHAAAgpCBi1+DjENR0XVYAADBIEg4yNLVYOOAABpSEEOOAAB6SEDFo8HH+DjkAAQAADiQxhxwAADqQOhx07TUgmqIOOAAAJSEDFqAABWSDGlrUHGTDjkAAag48GLUAACkkGNLUDFpjS0+DjgAAEkgRpa/otMI46wcZGlpOHGPUdzsAEg49IcbiOOh0aCDjwYtEaWmEcf9FqAAAmSEIOP+i1G3DdIAIg48GLWyOMEHHAAANJDGHGpDjgAAQkgmDjRhxog44AAElIAg4+ocaIOOxHGBDjxgAeo46QccDFo2HGGjj7Bxrg41YcdEON3i6EjjhRxwg46UcYqONVHHWDjdRxho400ceMACkHHqDjHhx8MWh0cdYONdHHuDjvBx3o41DpqOZWZHH6DjgAANEhLDjbBxyAAJwccWOPWHGCDj0hxzI4yMcdqOP1HGYjjcRxlWo8ocbGlpDS1tDjkAATI4yIcf44POwB6jjgAAbEhGDjKhx+g4zYcfOON3/6o5MtBx6444wcbuOOKHHFODeA2x44+GLVwOOvHHZjj9BxoOo+8ACGlr+i1pDjZBx4iXSccfUOP+HHYTjgAAcEhMjjCdR5Q4zIcbGlqonGmDj9BxpE42cceWONO3r3gAsRx9Y42NLXzqM8sqCDjgAAYUhAAA7JDBi0JpaKhxjg49CcfGH0qHGmjjldRok4xscbGlqsHH1DjuBxwAADKQ5RxwAADyQY0tQAABCQcumpE42kceMONEHHWDjHJxgw45Icd2H0yvgJpaxhx6g433UZlfDlHHXDjgAANkgR6jtXm4o4/6LT4OMRi1QxaMpx7MPYUNrLvXFHH6DjgAAIkg+TjfBxwAAOiQY0tAg44GLUeH06S66QAgAAUEhmDjI0tUMWlIcdVONRHHSTjK9Rq9jUkcYKON4nHqDjfBx4k47acbMl1cbYiDjQYtSQ456cazj2qtrAxaGhxog4+GLTuOMX1GLTjxhxtE43fUfeABhHHwxaRhx1U4+mceDFpUnH36j+Rx4w44KccgABqHHIAAgYtX0WuGLWWONtcG0zjI0tABo87AGKOP6nHFw9pvqrU4zqcY0OOhS6/7VYRxtI4/6LSIOPGHHAAAxJCINHnYAgAAakg+TjNRxkMWrIcZIOOQABpTjVZxqbgwyPveAADnGhzjMhxyU41Ucf9FpeHGJzjK5QBP1WDBrYOMeHGjjjuBxiw41EcYoaP+MbKTjNJxuk4wycdyOM0NGiU1OnhuUtYGLX9FpSHGzDjY0taI46QcaGlrBi1jTjlRx0MWhScdVOPBi0zDjkAADw44ucZGlo9nHYY9APm4Lw87AEAAAIkJUcfk5W8HHKjjn5xgI45AAFIOO+nG3Dj2Rx8o4+NLQ8OPDAHImjowB30WmNLQguPUHHGDjxRxkI49eccgAC+i0NDjehxpLw5cccAADkkJIcZ/OOpeHBiqnZx8o42zwaeOPGHHYTjX0uoaWoRcbfONDS0Cmj7wAYo4/ycYjONFeHBiqxRx3C49EcdYuMCnHymj7wAZ842acal4ODFVfRaapxjg48uceHH3cdECjjI0tGo4z4cdEuO4HHPgDBBxsI4/Gcc8x1udqhpaNFxiM49YGtrOOkHHljj/mO+i42+cYWaN6nGATj1vB3cfVxcY0OPRHH1LjtFxyLHajmq8OP+HGwjjMZxus4+7wYSON3HHDDj8hmzLtR4cbfOOWnG3zjchxts4yNLVcuPpY7BiqA5xrE40ccdHOMhHGmLjYfB5blSNLUtOPmHGgzjnzRhkA0QccAACikJ4ce8OMjHHUjjI0tMw48YcYtOM7nHgWj/jGtw48lcZ8OPFHHXDjRBxi042kcbGlqAABISD4OOUXHRg1Nk2uSdXlcdsuOQABMLjHJxkaWr6LUYOOiXHljjsfmgg4+kcbiON/9Z8jjkhxtI414ceFOO18HfI1KhxsaWlScc0uPHdrusdzsADo4x4cfCON+HHfRaGVxi046D4bh6yxOryjjGhx1I49kcbYOPSHG++DzsAB045mcakONUnHsrjbE+wYqmFcbpaN0gA9Djwhx4s41ccb4n1o+HLQDoFxj84/6LQguNQXHgxa1BxmC4/6LTguNjS0PDjdoB52ANQcaGlocHHfRaMVxsfzQj2p+uN/XGYrjkAAB048DcdLONEHGKTj0Rxxo48kcf34PKHH5rjmVxyMWrK0ZlfAlXHIjjT5x/0WiScZ0uNmT7Wh1dxx5E48UcbSOP0HGRpaiJxxg43Ycf5ONxHHHJ9PcqvG4wTcdiOPE3G/DjjBxi84yQcbWOPtXGTWj3k+3yNdTccJuN03H1jjGhxo4481cfUOOiXHde1srajm47TcfUOM03HyrjNhxvk4/icaAC31gHBiqz5x184++ce5uO83GULjOFx1w47L4bpAD+nHiTjURxqW4x72oNfWAAAoSE6uN+HGAzjGxxrW47DcfLOMd8qrX1gYtEE44wcY1uPG3GYbjLJx0qfdWGtrONmHHrDjNtx9Y4ybcftuMx9rzcNepx524wIcdduPu3HkjjWbR1to3SAEyON8HHijjHhxmG4/QcZDFqhi12zjYRxzcA+74f6ONUnHXDjGRxmw4/McajuMx3HjwDr8ux3w/kcezONJ3H/RaKdx3Y4/TcfuuMRHH/bjyxxlto4xTGdgDrHH+Tj6hxgu4+hcaLuORHG7bjcRx0PwwJcbGlo+3GGrjLdx/Y45kcaSOMhzbAI1+txow45bcdBONMHHO7jEJxsOPYMVQdOOZHGLTjYNx8e45AAAYOPrHG4jjRghxdo+OUbP7XOCG6QAqpx+g42YceqOMe3HTjNS9xssHI82v3OO0nH6Tj0JxnY49FcY8ON+XHJbjoYtTG4+3cdfaNP9qAOj3EB/UtZRGsHNWj+GoP145xyAAIAAAxIFE4wBcb5n0sz6oP1M5x4c42OccMOMNXGzTjZBxyg4wfHraEOeXrD49axxzY474cc7OOqnHC7jZNxvk48Pcc46OgmaNgjCuqsTo6pGqk6Mv+HFLVxJxjk4/6ceYOPn3GG7jsnRtk4ySccNuO4PGJTj2xx2s476LSrOPnCGsN8KSu3oVWEcbGlprHGejjOxx2e48sccsW10PGGHjtdx8h48uceCgPKHHijjkAANh44wce2OMOnGdTjRhxkaWrPcfDn3fXHeHj/Dx+Y423cYoePFnGOzj9DxiE45Z0c0jV0gA0rjJBx9047HceB42WfrOhVtBx5E4+UcdrONGHHFbjTVx2e49aqs6V3IiGuNsDpxos42EcdIeP5nGxzjyJx6Q40NLVsOPGHHyjjHJxks42WccgAAWnHrzjsgR4kQ68mrMOMoXHyDjjjx/k4zcce2OPZHHSDjTBxw444XcaguMfnG7LjGhxzQ49ocdMAAOnGAjjXhx2w41sceMONUnGInjEpx/042jcf+uP93HrbjgRx604yXca8eOXK7ZRD1Iq3x42NLX8eNwPGgnjfxx/0WqE8YOONHHHa7jkTxjw49E8dieP0HGtAjmy+paA3VcZSuPE3H0LjI5xj24xaIeZM1hJ7oeVaVxjI40NLRceOXnG3zjN5xs44zYEbMON8HHlbj1BxjQ435cezOP+3GUujI9a1o4+0cc6OM7HHujjSxxuR41ecYmeOw3HroDloqjJ1NI8YLuNbPGLzjOzx/B4wI4d2J0FHGijjQxx4MWpUcYNuNDPGsjjORxhq4yEceMuOUq7UCdLFmq544McbKOO3PHjjjYxx/E4y0cfDFptHG5jj2xx4543EcdzC3vAACDjrhxkZ4yEcdZV3liH1bj9Bxjw42cccgADInGfDjERx30WikEfWONJnG4jj4qu03o5cccAAC4kByccaOM3HGFrj3lx7I43wcYlONpXHrTjwYtBu47pcax/XFHGdTj2txxbo2OFpGuNjXHmnjBJx2oI6KOp+ONo3H1DjBtxrw4wQcZ8OP+HHpLjNRxkK4x7cbTW3FHH7DjhLx0V44uIedgDUXHYTjjLxktbRLcYZOM7HHwxa3Txxl48aOt4OMhi0zDjHBxu5PT9capeMaPHfjN/px1U48YccIuNbHGPbjuMagg4+JceDFoeHHw7jwYteV436rr7OOXnHC7jptxtSI/JZoR6OwCbInjgYtbC40QcdGlocnHGrj2Nxopfdb+oteN03HBXjaRx8MWrFcbwi3OPGpDjEpx9S41VccxvhE9HnYAeNx2Q4zG8fJ6ODFUJbjkdxng4048aDgNTXH03jMbxwu45w8bkeNEHHmbjHEWzMTbhIcuOMDnGzjjdKe30WrCcf9eMv07qRVqjxsaWuo8cZeOZwG0rj0Tx854/u/seOMaHGaTj0hx/0WlLccLgOMSGo5MKLx2u40G8cJePuHH6rjtBxvs4zhcdMOM2HGyDjVpx8DtQUcewuPnXHOzjkAAMw47GccsOOiXHjejmIR/MVbQcYJeMxHHiXjmVx0l49qcYlOOuPGBDjjVx7C49O8b8OMkHGCd1ty+rSQyervrE1kvGJTjq9x9e48WcdLOMCHHGjjF7xuh43igDluPeXGzLjPFxti4xH0c3gOj3HoXj3lxoK49iccyONOPHn3jbjx2M47YceweOxnGJQjVW271NYVcaIOM6XHKjjtdxvQ49ecbtuMhHH7rjfZxpW42NLQJ3VDSr4NdY0qkk45kcYaOOjvGUrjpzx8Z49EcePeMxHH33juHx7YnUAgdITWfPGSjj3zxu549Ucb+eNUfHQzjZ7xmD4xGcesnVWhGBPF5Rx+g43K8aXePlHGOzj7Zx1I47IcfY+P+i1OPjF7x2j47lHju21uhGnTjYHxyo40u8eQ+MxQBpDjHBxmKAMh8cguMhi1pLjhBx4MWqqca2OPW3HULjfhx+Z4wUcYOuMw3HJPjHJxjx4xycdEuOmAAbDj/otF64xycaGlrKXHeHjolx1g4z28aeuMvXHCjjHBx6g44ucb8ONSHGT7jkAAQAACiQRhxgI48McedOMyHGGjjfBxpI41F8Yg+MCHGCDjZpx99461cdcON8HGBp1riaxEnZmEaAz2KfHJ3jOxx5W4658c4ePqHHyjjpVx5E49FccXeOMHGhpa3Jxmw4xwcb1ON+HGrjj3Lx3w48UcdDFpHHGGDjs7x1g4+M8bHOPcHHp3jdNx0R45h8YkOO+i0wjjSXxvg4/AMYbX2IDHWRNEhxzI4xwcb8OO+XG/DjIzx1I4xkccLuOLvHsHjXlx5q41rcaDeNWvG/DjeTxy24++cYdOOEXGsjjGxxyw44GLS7eOTvG33jBBxrQ44AAGBIMG4zt8YgeNa3HfRamVxsaWqYAHneNSnHiDjphxld43ycbDeMq3HBvjKgAZd4xGLXa+NLvHVvjiLx/w40EcYIONa3Htvju3xyB43M8YWeNmfHBDjY0tAMWs7cb4eOmHHijjBVx0q42VcYluNGHHpDjrhx3h4/S8dDFpnHGdwjPe2nuVZk8bSOP/XGtnjZNxlx49B8ek+Ofr79Bjr/B6xWvj8eauOF3Gq3jLdxlx4y+8dJ+MOfGLBjVNxrE4zTcaJuPqHG4Hj+xxzt48GLUAACwBN28fxON/3HJDjhtx9Y4+M8dAiO2iazZDC1agC47QcduOMWnG6HjKtxtz48i8Z8ONPHHPzjjDxzs4wWca/ePvnH+Pjcrxqj46JcbneNtfHzrjNxx8j4+h8ekeOhi1uTj40tSw45r8cguP3nHHzj2pxie4w6cejONOfGTbj/Nx1w48UMcHY0TaqVfjPbxkD40cca4uP0PHp7jL5x7y47r8dVuPJyHWIj59x2H4x48cYONmHG8LjsRxup44wcat+NofGJnjEnxqT4w58esAC+PHl3jHJxsI46YcYd+MaHH8Dj0Rxmz4+n8aV+NbPGyrjufxurPUOTu1+MM/G3Hjevxl14z48f+uPDvHDbjWTxnY4yJ8YbuNWnHrAAD3xn74898aIOOvfG13jyXx0LfSZZsvf10oG6QAbwxnWBI08epeMaHHlAAPtxjQANT8f+uO13G6fjPtxwEYwmBp3J3vAAiDjHBxw443t8dYOMaHG+Djcxx5yNA6cdM+MjS1jDjr7x/m48YcctuNQ/GYfj9Bx0wACi8eyOOw/Hprjs1x6g44jcft+OmfGHHjbVxtVAyFEel1A7XGfrjUhxgI41rcb7OPBXGmDjaRx/y44m1hgp2e/HpvjwYtaE49kcco+OM/GoPj57xl64+GLWsAAnfHAxa53xtK42YcbbOOmvGWnj+UR+sTd78dsON8nHODj6Rx2B43ycfGePVfHeLjLvxvg49YABB+NEHGwjjDjx7P49CceiOOdXH/RaIzxrs42qMZSS0tRB3vjmox3rfVMcZmONzHGgATP1xkAE488fABOQfGjDjL1xs/45BcemOOzHHq7juBxzD49n8ZL+NP/Hk5DY0RiQE1rcZZvWlzrft9bChzKDbUcbWOO8PHqDj/nx/gEwI8e0OMFHH9PjsXx7L48wcZy+NjS1W/jFJxgg49hcb3uMTS1fDjcAJ8743ccaCeMcnHEATKVx2G42dEcnQPfXGlvjtfxtI4xkcYPOP5PHeATr7xiz40z8ZIONk76BINoZx6g4w0cZIuMfnGYHjQjx104xwceP+Pl/HjTjPhxrZ47f8feOMV/GBDjUAJy94198Z7eM/XH/Dj2FxzC49Xcb6+Mu/HTAAmfxtz47D8ZIOMOPGl3jmLxo349PccjuMCPGqnjsPxp048f8YwBNLvGAfjwRx8MWu+cZruPW3GWrjHxxq941GMdxS0oxHF0DCbxuX49Z8dcOOK/HzATfDxkK42NLQHOOi3G2LjKtx8/44K8dCBMRAnODj0QJgT42NLViBOMPGEgT57xqj4ykCdw+OFAmBHjVxx3w42UCYZuMVAnKnjtxxyT44wcdqBPqHH6gTphxxoE5t8Y2ePcHHa7jqwJ+g4/zuptVXU771UtW5x2K4zGms4BP3nHQATJdxzMY2dcfQ+O5jHnYAGRxq84yVcZPuPBi0LTjksR2W41mcZfuMeHHobj1LxmC7ZWccKs1YPHt89Yhe3P46VcfCOP+3HGrtzBxiaWkrvuFuMc/GPUthXx8aWsV8YnuNkPG6DjMVxrW42p8ZCuMXAmdPjLQJ5h46OMawDUEHH03jo5x3N49Vkn8OOdXG9PjkAAWE42scaqs1+xGiTjvFx8FQyhcYguPKABIAAbtxhz47YCaC+MS3HJDjMcRtAvZHvqZLLoT6OnjPhxykExGccxUPUYGmsdLwJrW4wYcehuM9vH5QTNbx3OI2qCYyOPXnHKDj94x4o3VxgYSOOkfG5QTFwJvy48EcaqBNHAnSDjpgAPEE64ccJBNdXHpvj75xkZ42VcZ8OMeXHSzj5IJpg40QcfJuNMPHI/j2Dx4MWnSCeoOP6PHfDjoYtbS4z6CfieOJPHrPjRnxrw4ww8cC+NignqjjHJxsq46YCcyuOMvHlVDCRxgs442cdDFoaHHAAAyJCvvHTDjqpx+Z4xN8aJeOWgmQnjrXxja4/88b8ON2/GjjjeNxgz41aCcFBNlnHQTjyxxmCY/0cbLBOm3GgvjBjx+sE/wcfA7W6vHZvju7x4sE9U8dMADUXH+Tjxhxxq7edcdBuNkgmnXjjPxos43o8cyOMxQBPnjpDxvy44wcZ9OPPXG5zjcDxxL48wCYCwOrTGJadyWBkdQ4DdqEePDPGGrj2pxzME8ccYGOPzgnrDj2Fx7sE9S8cneOHAmSwTUxx4MWmwce4OPYXGdLj0hxow4yGCfuOO9YH/M1o4Jl+45a8a7OOmvH+vjjoJ6Q/cQcf5ONvvHOzjXZx/f474cZjeOS3GXrjf4JqQE2HTudgDP3GGvjmRxv8Ez9cffOOjgnEstv3xr0E5LcbfePZ/HmDjFlx6w4968fGONrgm2rjCt2tg4zqcbSOPzfH/7jCEJ68E9U8ZDu2vgnQnjojxim45YfsOs1hm64IT3Bxr8E1IcZ/BMxHGkITQ0td844llsAhN8nHgIT3ZxsCE0u8c/OMeHGYHjb7xqCEwN8e40N8sw6QAGYJ7ME7mCeABO4PH3bjVEJ0J42DlqXeOvgnW7jojx6CExocdh+PTgnSwTHZxs44+GCaSeMSaH6q4tBxiC4+pCYQeM84HLrNHTmqene0fqus2b5Hw6dLOqgEIx7Wra0OoW60pNvJ67k9Tifs20PQnHYTjykJ5p4zhcY0OOhPHcDjsxxoSE6YcZ6+NaHHfITmiG0yE4w8dohPj4HzENj0xwBTdikbPEC4pHz/y+KR1+8ISkYHOOFHG7QTvhx4lI/Phuae0G3HVXjjRx7Y4yi8eM+OfnHiLjvhx/04yocfDuPnfHPPjVJxkoE74CZSBPy/G9fj/+WuJ7Yw8bFuPI/GsATkAADKE5kcayhOUQm+wT1oJkRncToe2e15QnqTjtJxkY49O8YoOMPAm4Cts+BynQ+9Mb5w1/fGPrjYHxog4/t8cZ+Pn3GiHjEkJ9cE4KfvrE2ygmGrj3Fxhq43+8fbL3wzHjQT+VxnaE+Zcb2hMCnG2QThBx+xndTMY10NSFbBiqkTx3y4xocYF+OjnGfjjmHxol43YCbYuPgdrEATyAJu3NWafuwNXFQnhgTv3xs747ccfA+POvHsz9xhWmGbWYcfPuNMHGgYTWXxt6E5KcYcePsfH0jjAwJ/IE6YcfsBNygmmjjSsx/3dQtbpxPXbQnx3ju7xmT46gQcjSPh6Glfjtdx4oE/OcejONEHHaDja7x2746bMcdmOFM6CDjvotCQ44GLUaOPUvHCXjhnxiC4w9CYF+M5pG881votEZ47EcYrBNInGHHjBtx9o4x1CdEePqHGLTjBZxgI4+GLRv3ULvaBz9dIAXmEydCeiOPUHGIjjd4JyAAAEcYEeM9vHOYTPbxg244u8fUONW/Hp3jzMJyQ4+ocdVONXHGsjjxZx/E4+B2shhM9vGFvj/vx+W43I8bmONB/GUYTrBxkwE9hcd5hOSHGMLj7sJxh45+cYkOMb3HrDjOcx801cUcYnuPSHG0jjRVx5c4zTbuiIN55qobjpgJjk4+KhqGloaHHo7jDBxqB4388eC+M4nG8TjhUJhm41bcenuPiwmCzjBsJww48bCdNhMivHOwTuRBkNbVb8a5eOhvHB5jaqG0AwzIWtHBO1AnGDjwIJ8gE8EcdthPeXHgnjmVxkKE2DcZtOPswm5rjC1x3sE9I8ZLBN6HGhpa4RxmO49R8fWhNtXGrJ16UmryvXSAHwOPhHGSfjptx0wAMrCbIhN7gmYoA6FxmKAHuCa0+N3gnRPjenxrY4wmCaTBP2gnGoTrhx6YE33CY6+OmHGpwTpVx/E4xacbrhPZPG87jOQJ+g4y18dKeMCHGrHjivxt2E+NLT8+NWvGjDjRZxqj4zPcaYOMzvHCXj1sJ7g4238bfePNXGBvj2k6yQw7lJvnhNGHHKXjUVxlQ44y8YUMOOfawETOxxmM43EcfQWO2X6ZC1eNx/743f8cm+MLwneHjnXxl342PCcqk0Jfb8xVxUJ+9474cdHBN2fG5QT9nx9Z41FCaLOO3/Hu4TcMJ3r49BCeS+OmAAXQT2xxqKE9u8cleOIInKvtfhhpHlXAib3+NLQnHvjS7xzg4w48Y4ePQ/GN7jFQJq046YADWOOhnHLDjo4Jy4E80CfW+MRHGRjjVvx5hE0Z8bJhNwwnsETTDxr+EzpcfPhPgdqGLj15xy343hCZ7eNp/GHfjpLx1uE/JCbSuMjXHPzj3gJs442IibbBMfnGTgTRZxos47XCcNuOCvHvzjIxx6hE8mCaLBMrAmH/jk7xy04/cCZaMPHWrcsjr5hwYqhaccQhPTS0SHdhWR8+zRw5sSWN0ObiljP9mipY1WetGyPZkGZ2dqoBisg2dJsRMOxImUTDHZB8PfYSYd8d3RSqn4Tvrxwo4zUcYnuPxfGEHj2MmucE4y8YJk1wObP2dHEm4U9RjkcjVUeHHpLjfDx9M49CscGKr1ImyITCIJ8p3UritVAOorHBz1h5q9Y4x2CeWOP4OacHjdBxog45BQfKsg3mr1HNLzquOEwnCcc+NZHGxpazwcFt46P8ZpeOp37nYAT8Jxg41acd0ePznHmDjmRxlAE8scZHLXXnGpVjNDmys4w1cb4OMmvGdjj4pxue4xmKmdgCxgmBTjy5xtctfkcfDFo3PGlPjjBx1U4zUcakOPSHGiDjwcJxU4wpzvwB1ISbIG9op6gNrUNLVDFqhi1jOdmvx91Y98ccseNtnGPDjbcJh14z08d8hOKvGSgTUrxkCtbaxpeBN8PGJTjgAAbUglXjezxqNY9Q8YNJxSPHBHjwjx4AAPm8dwONaHGPrj1gOkGrY8cZGhMWAne7jwAAHJ4xW8eTyMI1bKuVwwJp24+GLWAADe3H1DjERxid43s8evMPTc4i2dpax75rS3kdzrWIP621jOjmuCw7RWoK517rHQm9uoOxqg9vkeaoOZGaJUTp6x5U9XY5qrPWIFHf1jRjmoKI8ygAbPW6g6gPj75x6hVWlcc/OOHfHnXjjT+60HXA1qn+PAAnPgTGHx1q4/QcfsuO//GRparbxwX4yzatoOP+fGbDjjNx+v4wT8foeNmHGHPdRiJ98460id1BNtwmyrjzMJxg48iCfNBN03Gi/jO8J3uE8cCbE2Ni86rCjLgJhv4798d9FrsPGrXj4YtKG43N8b0OOiQm3zjpDxl2ExycbT+PxfH4HjAhxlm1efcZNhMxQByPjDBx9U41/Vu02NfWGJz1llaiCHd8psia0UQ6/lNTr+i4o1ipoGa2Lpbu3jqRxgg412cfDFp4oAiDjGhxp4435CdwuMeHHGDjehxux40LCfjROtXGeXjf/xht41EceAAALIn7Lj5nx0J4+e8eJRPbHHR4Tbnx4IEzaibUeNa3HTUTS7xh049HcaQBO/gnrbj3EJgv4wzCfYeOMHGZ0Tp0JodE/Y8csBNaHHgxaytx09E3bca4hNmHHTAAo4JhH45AABdBNVAmNzjYNxndE2EcZ2ROQAAHgTdUOsUjRnYbzsPRObhL1BTmyjvUGruUs05iaofdF56lRg1x3tnsOptEzrjxBxwNE1EcYXhPhHGl4T9BxleE7NcbaOPrwnIjjYnx+g45UcaIhNK/GbwT0Fxrz4z58Y8uMyXHEXjzCJjQEy+iZDFotXHX3j78JlaExscf4ONaImanNXZG1+w3mcdIuNAOrSDj2RxpY41tcZta1zpb3gAnGJ2gE/wcZ4xMjkbnYAutxvg4xIccGuNQX7nYAoKJh7YyqCf1ePBlGp/jAbW404/UiY4OOcomqnjoTxvQ4+QcYwhMIPGpP93aJ5M4/G1pcBPOInSLjSn+kg4wlcdOOMeIngnj1EJspE6DCZUF1NMHM2tyhxvg40ZiZfRMEHHMjjBNxwi43oCYFuMdbVvyNPJxti48Kcax2OAUbsxNNZRkM42NLTMxMNHHAXj63xlE4/piaa70MfGBjjTHx4Y41s8YROOcnHSDjdOxmNTTzscYvVTlHwhdIqJ9v3ZuUf+YPXtaEadkTxh04x4cbMOPkYmFjjjDxoQ4yQcd8hP7lHe0Uljq0c44mCZoRMTHG1FUXrx8hEzwcYq+NVfG7ATLBxoZE6GLWjePWHHysT7dx0Q46rsb+71quaCnV6txvs4/QceBRMflH8XN9IAQlzb/DsCvXbUrBXNUCOoR4xacfEuPqHHHdjVLmvHvZbcaOOPe7G6QAG2Jjk4wU4fdc3kI6sKj+3+qXVQJ1oOF0NXqGYR8rmjPY504YVYP8ubVWDLl65io67Wo+F2eXqDWD3ta7XvRZ1v171BoBhqNvexmEXWIHqt73+XrZA9pP+hSo5q5pxF3hsG6f9QaAc6jbpUcHdVGub02D9IupkXT84fNc12abS61xSOoFw45Uev2Ng4nYaNZ1x3V45bcdFF1P7GPsTzbBih4xGcddc3Dibog9mda+o4ypcY2kBeuaQjjUVxi046Eic7726HZ4x1YBxsdg/BieehP+fHIAA5fxhq40j8ZR+PSPG1Dj8iJy4E/pCZsOMWnHa/j1txkz44s8fM+PYXGrPjVou4lw1AcZkhPTvGUITT3xl0XQbcYNhMDAmyqjk7q434zecdMAD8vGdTjpgAFl431iZ6D3Wqq4DjMBx1XE2EcfVxP+nHQxapgAFOE2ocZjF3EuG8DjSGJ8aWuS8cDFrgdrT3jlnx68412CZGlqZHHtJ1Y1RukAJE8djBPC/HiUTNxxlOE0GibzhM2onJDjfBxqBE7DcddcOTuqXkTbyJu8E7IcZThO3/GW7jBlxjAfUIIkivJ7VGD61eA+l4PWG4frF1TVaSjNDZDRH9fWjujcPHsG7qjV16gcXRYFOhD3XW1vCD2DTXPExhLuzcOP7Y2IG/1AA2QI3+F6xE1BajmNF84FEPcx+sfYBmrgTlGjgGuvgEtrsW/WsmjCoA3EDZvE91W0JqMGOYltdCbGWK8FlS0XV2t/730DynG2QAEtru9R15AAltdy8AOfE5zUeilU1cbZAAEkuuwjfI+sXxM+0bCw4LKWztw5aKrXxMb4nNQevDupfE7viaFXCDuGPa1T/WvUPfAAEAACKgHVwdsKAd4nl8Tv/WzNHV49l9o2AA9ePN58h+2o23ibvxPNxFdZNlqO/dwzK+B/wBv4nH71D+J0ardlAAS4Pr0bAgACgB5vE8RLqbgCxCar71Ywe0/E6CHtNQBleq4CTiuhzfsjyVqzEjP3qI1MZza+8AAoAeFC2/vr2PNvtGxH9aYhuGFXfxgkAD+xh2Dw1+4ZU4z4EnsMcCKAPNANP4CH13xh7mtq6jG2gkwswFOpDwEnrwD1ABpFteQSYHxNIAHhfN0nmlTzVGcwimSFgABCT1ABtMPfgIA0fAyKJJ6jRnmoETZPWu0l3WK0RfdBmqJwALjgBvxM78HhVsFYe7tQLjgG4ga2DkHAApbepdjVwSeYY1RnM32D5Be6sKnSAE/sNuPqeWVgpQFN1jVwZJcaxCaNyJA6LXM461Qc2Tnf1HDINdhJ2LzW2yvi81F9i7B4VgBsHjVoAcpMy/o6t11QBJiI7doSeFWyAY7FItxAAQAAI6AoCGyMAFJ4amq1REmbmNDZDZDuEjohkY0ENGZXw9RjbAiMWAdKh58EndzjWfBoAk13IEXM0nnG8+V8LQSKAFpJC/gBD66giAf+J0JPRX0f/D1ylqiQEpUPTgg1pJCJAAR0aIgNhYBowAB3id1k0Svrw6GYEW0jcIt+tIx2OAb03wIT/UwABc+v2cgooAGiTCV3LSSIDUnPcGOrhbOejsGlK8HwSYvjF746b8TBlEXvACoyTzHLoAAdCT2OWIyJQMSeVg0/yHEf1I9m1/1btLu7vUOo6Qn+usmw/vaMSfk5Vo17jkADKAZ+9bjgDyi2IXHv9N3nO+8AMuIdvU3rYHlVwgLWmYAwJHs2Y07wbCx9GjG/ZjdAZu/jALiAzQDXPBihWtxAwNkCfpq6x9xwm/ZyCU0fnY37OQLwAhNWNhjf5yt4JMCIGxCTtwB7DHNkJsyUYs+b5eDpBmuoPVmJAXEDmMapCTYhJgJ9UmAEfvWNcbKtqQLGzQAKuJthi108HgjNXna6CgD8SZBANgknIODCzRpvVhvcom8NK+atAAVJJnQk4USf8j05PrOOtp38VQk5o+qcuMM6BIiTdPBgx8W5cc31XVKDPkRxAACr9YXRr9vVTcqEo9OxJyejY3OCt83Lcqozm5kG05TeZACzEhyQa4+DXG2IqjoHI1HxM4Cw0mtDZDW9jR8SZKx1Z8GauNDZDC8ANuxoKJP+UcIldkLR8Z9edpv1JPKcarSTd/h5YNcjetxEOmdpuo9m3avIAKKSYU9Ay1alujJLjD6lI3wf2fUxGaCWjbsu+1javRqfxOktHbn1jwhhuoISAWH4OPCHTrjF1G5i9Yy0YtAOz8Hzo92tia4k4kSbuJMfEniQ1PMfBaTUNLsXV2A3HqjNBZJmEAE5UOLJM7TaF/NoJJ1N3twAEiJOwxamAAN+J0GPSfweRvWOAaFxA2EgF/SdeJsrxM43HxE9Gj4XWTd3iblYA91a6KGp7GxARaNxspuNCZ7LoAjgGm1DZdhtp13qKaogtw5J+BjboAAkl28+GzsUMM2vAk8YcxHJOJSQKCTleJ21o+uSYXJOAA8rYAUQW2QALcSewJPS3GiU1JRJzgg1uSb4JPYEn2Y9+EbXHAAYScV8MlFALotY/OvQk1buAfJPMzbCBDEI/ZhPfoScrJMx9q0cd9JJ78k2+Sd/JPJ9rvX1rJJwCk/eSd/JOMCGJBDmgAAtzbIAGWJOmdpFqDTJJxmw9NkaufXSEn9Y9RHGkjTfuphiqjFngW49SFJqXoj+SbQpN2x6Nw1WdxhTeBc+qwpMfRB0kNCrALMSE/ibLuMYcbvtAsFJ+Ck4cRiJTg54mn8TTdxzCkwY+Iy90LFb0c0TJJv29edPsf2wwUnocgjFJg3HGFLW4pO44AEuD4nG5cQwbpvnuNo+4l2jFgRmEAKvRudYD3kmsAAMhhonXZPibQjWBmboYgLFJ4/gwXHrwJN+jD2CTDZDDUk6vRq1JPEAAX4NrcLF9TVc+tPJOoz7Hm1+RJkgkwZSZIkCakmc8TplJzsk4Wxu7JObzac5tgQAFSk6cprUpMiK6uIDXpGooDauJuUoYQNaNyT8DGgSA5mSdr8RDkmzXUIVJ+ePZvHqsY3apAoiTMRJuoBJEFv101266L5w2HR6vvfFSb2JMFMHtmAllJgPHaA8ajOabEmx5gjDW2r9RwIAtoDZQAe8TukB74za4rt+M3gRhuVEbpQP/E1ewCHviysAsCTF84fWfTVSbtk0aPhKrduIh77LR1Sa4JMCRq2qT+fGv/E0/4ckW1uK6CHjXs++To5wOqMtWqdHBz13Dx8R4yFAe+41hQHU59bJvHSNW+geICNGRqKoDTnRiqAy50dMjXudGFoDBoh5yjYaSb6ADQEmcqTfTxutnVGSelbg7EnesNEXRpiE0dAYyT1Yq75KTO+Jv6A3U9mOgMh8bauIZ1Jw5VbNgHfV3PQHvh1h+Jy98J0bu3xNP4m3njc22oqNYgSZ3xOLfqZ8TR+JnUPeVGu1RaSAB3yTKMBoGXWFAFq/VW7gAMDUYAM/jedSfTfCXUm4aTfC+4R8Lnid4d03Mbxb1OMB4bo7QToaV3Vaoc8TId8ObIz2FqOY18igQn+5VJxVXaPxtdY3wMan8T7I6wMk5wlk/k2msaOrg1FJrgk/TAfHEMUda68TiNABQA2swERpPrTKxEj2OzUbjWmtuhpOw0nj+NgJJ69gDDSdzxOCwHgJV4tJ2ck5e+F9njXexoBynPBp/jVeFruT3PEmGyGn/G2LPqsYmapPTBHkns57g95PXSAGTg2nJYVsDzWevck5FScfF3jMBlaT+9C4cKKvRpnJM00nkHjS62rYI+8AFNpMNUnUgMiQALqk7/iadpNo9HOOts14xv8JBwc2ECSAAb8TiKerANe0ACKpPT/hOBNcbxr2AxR1p9o2aUmOBNri4ZpfbuHtCAAm1iZvFDAm1xcLRKsrHVdutIODgtJ+f4Dnif3OUZ0mlyTPxJ8lPXkAH24NXuwqU938YSIkzgbtlpOtq733eU5J5eALDSeWSN4EmTlG+ehhuoMCEbbxNgEnP8TwG++AzaZ2nIABqEmLKTHUGtSLf28e8r3yPq/ST9ukaAk2ghoJE2ukmE7N3ZM8QlsJEd48UYhGb3j9gmrLoDClu10B5RaOyTVFJoEneTSdpHFDMpvaTIT/ciQI70ZG6Mu9Ggotq9Jq8zZkAA3pN5jkt6TZNJvDik0SbfxO/4nyJAuuscaDRzxtGJMpCaX1NBum9eAzyEe/V1Qbh/jmF9JmbxWqwAWJMLSGgTdotBl9TeUAB2JO2AQc+j6+un+k7Fpwgi3/0n5YAgDJqekxnHu6Mz90mGv1gVm6KQ+dptTq1mwaXSTMdRCc2HARqvS3rE77qTh9Juj43Ntp76MbCboGT69JmbxVMSfR0Xa8agGT3/4fPjUWSZkUQ2ABcddI9mhjXa6EaOE3kPhfmKAiBygk0bRv24PnEADEcEDW7Qk/xfDoZP1UGDCTSOidsPeIS1QpMXYHsRAtK4ZIvcWVpfU0PABziTUwAbzqMWHANA36p6XAAq4m3Bk3BbrCkDyPqEpAk9G8OhlPScEyA39lfaN8ueokALDpr/Qb6oBZO9IJOoe+HHVSQkAchbgcd8Img6Q6ORqvJMoknvgIvHmzAADfibeJOcMnePNBrAHVFpAAAjo1DYa8xyRzG1CADfiYTs260n5YAk9G7KuqLQa8ADkSAhvjeiBjL46yJqJAS6rc8Uxl5JokAA7SYMJM9xHnyTPjJ23Df4ybQQ0sR7b8TqhJ8PcH7VtZDx9AB4GNUXiN4k4uujf81ZiQMDcXte638AKLWYADMDGztdeY5ADAwmshSvB8NBnWDwDJ4pk9kAFKZMzeLmOBmSjGYjfs5CQZOREnIMNxmXdgyPAxtma0ooBdAAR5J24kx4yYnc1CGAcfjklmol9a1IYbqCaMmuJAN9J04k9pEYipMjkmQn+5Px1rXd+vqJAT7EmKsNT3KBukzOSZvpPqu6gqT+5J4ukyz8aEz0qMkx6T2zALSSA4McYXC+0afGTHRJrvE++ORRQCbMn4GNdfAEJ/s3FqqZPcSHRiT8fmxek/vKvW13BDHBiqycG0Yk1ESYcz2KMnMu96imyDg5oycMZPMIGVGS4xJtK8iqXuBA3VhAAqT50kfP8G/SdKJNgmyKiTVu4Mc3ckXutC1vUmJsAKdGt34+9ruh5X1En36TRtGx5nVEQDSZOT4nNGTv9J2Bk22XFsKDLEn3mTsLJlwABdSeXJMh/GgUDF1Gtek3/SeyAiKyItmNU9JpFkyF+Bul0DAbGGTHIcF5cMsSesACNUaGyGjzJqMAK/BursSjEmwRNQtJm/skjSdh0108GIFJzgAPFA20Sdsj5HDHWh1CbLSu9dASe4gYVWQPmTnHG6wANlQF+ZMIoBRiTegAePzb38Y9I2lOaB/j1ctdnXWd3r04ByoAFADA+J2Vk3OSeCpPC7AJJd8/x6yzdYrX2ZOOAARGTi6uiuvUTEERCkcYBnI0AoteZSYNkBZZOjkGYzdHRHEegw65BUZKriaPGT3nUMxLavYHrJPGsmHMNSLCBGA5dADWmDP/H8RjoURnlk10yZV0miEngWE4DJi59ZM0F2O3RoGEojrEG8hk3yycSkgNkNZSTtDJm5jaVgYisjkAAIb1ugAVejfYAAq/Vm0mbiT7jJ2woCKMa911gMn03wAGR1iQAiSfFK0dkmnGtpUBisuAeBtRpPSoBMqTjURlgE+/IbPpMMsmN6T2BI3HAM2ydyZPvUnW2T55myQhtQoewpOaJa/6N6rJpJjfGSYGsA1mbIiTDme+hQ06MeilVa8G/X4p7J0Bk3xTu8XXVoHec9PSWrHff2JtrE3ToGhxNg7qu6I+TvoiUOxjGqd9wkm+1Vei4P7xMwEmMrNFCtWFkxuydlJNO0mJ89HlJ2XgLvbrI2x1U7VJajnAbWk41TqEN2Wpb5T4nhoG9HVegZhpOE+a5zVAUbPnHQmqv1JOn4nGrt+VJ2wckrvstpMjkmPUtxHJh6k2JQA8k1I0n5lJFz6miQNg01hi0Mlbgp8VYB7Ik+SzBEV2VWawoN/VJuqk67rvWZMDknYjpupBwek5ewHYMAOUmqmTVHW3e3c4w19YAaPgg99W4x7S7ZKCeRUObdrLSTY+Jusk3cybTtbHjHNu1IHJpvE8Cwn2w3qcmFPQdMB68Y+4pkAQCTN6jAA71OudLVKCcfGMYSb+rN+2k5KMIurrEZOyAAFADX8APepCxHs9s3yAAKv1f+JqckwTes1oDExb9nINHQR1gPWhFco29Mnl4AqPe0bjU2Cc7T0uCFCRAtX6jzk1uiCYBUZLBaJAnEQUWNP7SlpXCo8LmIA+3BjFk6uJufQP4ZaHXIWRJ0Dk7V+pY5NgknXiTwH6i99KTHqi5Ou67e2TDVJgqk8HZo0fBe0nWDNG4JsGDXZydEAT495FWNoqW9CAEqycwDb7aa93AIFGhshgVSYapNbN8K8Tz96nJjedJAbUO3PrOuT9gAJpk0jSe0y3tcmx1I+eW7tQ+cfGeu13KywoAkgAesk9+ZL4ABtknZINPXJxqk4Nya+kTkwQfgAYlJnfg0PibgP0jrrAbtTXJ3bgO8yc2JMxCDVCTfjJmiQMwExrY2yQb+AAnzJxVk/SuBLdhbogWgKEq8ILk3I+tk70Mm6ZuTp0x9Yk5gGyW13ecnCfNW6h6wo4llqW5NwWjIiT5F0TANkRhsEyCA8nsyTEwAAVjRo+BDvi24a6IA+VAQ+3aESdxENCH6iQEYPJkozRDyah5NeA8Ho9VIAOHk3gEZUZK+0aEqTeOhw/9etyz4aC24aGOTtdGy0oQ7SjUVRI0metVkUAaHk4TycXV1A8m25631IC7k2JSddYBCrhlGTytJ+PzUdppzpUOm7fI12PJ9bLeDyeBACQ8mWeTBPJoWk8TybkA1mh6GMDZPJvYk+dJCYYOowA1FUwU+ewANLyZ0Cb43r8NDx2qiXkytyZAo2scnIODKDJ5tSBEBqV5ORgBzpIz96o7k8xCY4ZM48m+n1kvJ/Hk9rydl5OYAAOeTqPCxHk1McC8AA08mquTL1ADjANnieapOY8nZpj3OBxxIxpurkSAP3rMA2E3JhKQCigCgJP8lBav1/QgkeRMIBvwEB84xHsAD7AU9jRlkAMJOOAahiTlD6ubk1Gendbgza7uIGthQXrk3NloO5PdVtnuThCATzk0trrEZP1tB8qAyPJkjvc/4dnN3M6qauN7NJ+wAMlAf65N60nXINDKAJjkynRofA2SEm0RASAB0Ak43iYHxNDcnuq2QtJzW4I7yaIw3M3rxeTuPJyXk1OpDUVS/cmQnwpgAWr9bZH3s5Oi5IkaTlXJvhk+0ScE5On8aXeT2zJtaYwqKrO5OEiAYWTXC4QqAMrSct5OHcnnVDVrJqYAEvyea5OH/rleTb3JxwjajSdP/XLJGCdADqO1jk2JSfADqPcnvgI85Jq2k4WAYqpPtaH9o1JLjSGWR2SYJZPuPhFKTfXJzfk0trp35NVImPrNGVGpwAJryYwACs8mUUAXah6EvfryciJMgUbQEN+7APvE03iat5Mdu7BaTsXJ13XXmOUcKGn8bZ2APVJjPk3JydumMuPbYoTeZe27Q09Mb8t3k6Hiy9M0JsnNSuBpvxN6MmtJIyrJ8Yk1c+ts54eMm8xyoMxjhk9gyZSAY6QAPJNMpJ8dk4jQFWE0HQnVUjF96iZgAE3A7ZNdsnAadkfJj0g9FAGOZOKtlTKDenAT/Q6xyfwIAP4mD6TQqG0Yk2MHu+ZNXQm6rdNMxhcveafuEC3u/zsgAhTB+3Xe2yc7ZPdsmfoTABB801b2yYdwAIMmCWTM00WmLZ6kbh80Esm7BTXgAa8k46wCg3B1kmGyTKSwEZDZYKZK0jBpHzTVQhgd1k7xuCnpN8CnSBAWsxza3QaybNQ0sR6E5Eb2e9goI++vwO6eGgOMAaaR6woyEAHJD17Mbki9OAsIskxDeuuJPcwnKl6mEtN9FI3ptnK2fUo3oKiqAJBk/z5tbTC3Rbw4T1ehjlg/s5GpY3JbDusARqAKFk1iybCgDD8nBMgGj4CIDV2wQ25OvkadeNL6m+pvUAKZXT0mQAwpaPXmsE2Xd5rO11tCmJiTmPGqDcBaydVZPllwbmNJl4ESk0wyceJ19kntIj/sJxUtRkKcAQCXcmPGTFQpoe+FUKfkABgkmS5jcLANmzbDpv4AAiUnA8k2+J23DbelRuZM+0b+uxPehl3XZDet741ioaagdktmrTjY4BpMgDf6HRR1F5JhK7iqyeYQMVwmFbdvRavtDY9QAUABMcmIeNsp4FN1upPCYU2RQAPCN0Ipzggy5ybNXDWsn9nI6bJnwU8ayfqb1gRa5ytqDJ5uzfh9rj/U2ABocgezGmjwDdLsSFOEEBJiTvDJyQk5JnrBJOMNaIkDQbJhVgAYSYj7omknV6NnSDGdoE8ya7ZPAxxBsD0NM0tHiMhtNY1W2H29AdMW/bgzu7usZMX0nDO9LLJ0gw/gyb3x2t0b9GTVVe7KTTVXqR5UFag0SDJIp/niJuRu8pNNV7OMjp5GuUU8kyd+FOpMm4wA6TJvjI78QcwWOEPhk2Tt+JwEvZIABRFOZsnz5DeNB+UU5eSdxa1BEB5FA9yWhFAHGQbmNXyZG5/JBweppkxiydJfV3ZbVWA8DG8TkwxeAAwMXsBcx4yIpqjrUgyfCZMT/gzRTj9J6MrXpkaR5X7smkmTEdupok6gAFpZM94niwDRzGjECMZAaiC1bcmvgAHwpiSXQdBu1s3BGsgSdXvJpJk08yfDL0f8m+BAudJu7zW6iH85PdAB/OTj7ABEU3Y0GtZNlMaoNwBxhu+A2MHsz/AMVbBO9J7QAYk08ydq/VNkmT2AynGsKoU8QeNFOmimGyTtnPIVPYWKaeZNeUnAmNkqelAg4tfsZNUZEn88R/HJ5NPVMABTZP9imu5AqIp80U6SAktFMJXdh+TU3J4NTPclryQ3fNbwIwvWG0mvc6QYiRPZ8aEaTmHB8zvXwZqiRNDkbXqTopjRb9cKyZ1ZOyuxlGT7LJ9Gk99SklYAcfTY2Tz96m/Ew/icHkSr0aa+TQN+nE9djSeKpMXUmSO9x4p+Gk5pSazEhrMnmv1c4p+pY1eKboIBvUmFxATToJsCMzchMpNsLhaqTPVJvGkyPZsWyOzs7rxTAnJyCUz1SYxpMpImP7N2NJpOg6vjuFZPqTxLGTD2R6MUxBAF483ywAf5DcyxrzDfTfta0ydZIzqTyyx12vVvJpfU2FMnlWTd6eghk0TybCFPACnXpNqK4Q5Y2H9tAc2bp4ADYFVkRs1YkKZDo2yVbuZALzAGik8uQYSZVl0mMBTA/JsDk1AKfOSPASAAqTeXJrAU3KwEhg1SEmPatz5Jhfk3KwDwFO1wb1s93eJ4gU1USb1v0dFVX/d2zAWVQLhyeaRPOwBLJTH74cIrb++oRWNfo6uZNYUAXoU5+Qb5k0Gk4KP0ZXJ+zkzRSezLXRmAfSA7xJp/E/g5t1pNNUniAAodJ4lY1BQZSVU6cm+CT6y4Uzk9iiu25M54nsCTKgAXrk7YOUYvi4cmlYOV7u3vI8YKa7ZNyoABBTk5JpbgJT+A/xOJSRlkToJJ/A7pxIBUZIVfrV7APbBCG9SAaHrvUjlqZuTByJuNzUSAkwlqxCarZDnBAdlcMjAdgB0JmG+VdwOLc3YFPyZW5O/169VjPyJ0KUztycSkjQttT+TRogVKU56jSWq0lmGTaTlTG7iXeAKeP/VfcRtCTtg5Bsw/dSiufXqEnjOdrQASSkydVrONGi4b92TzIB+vE/w+kSAC+0bNGNsOm4cKNTSa4JNn37WtMMUp5vE13EpEFOw0nbKD45h+yg/DVvJRNiOb88jQje4c9dXkaLZ3OkmDqTcUppyYB83ztpNs0HVG9KQOkhg1/yc3JOv8m26T+BAAVE1kGk9JPjsnNGAjax9lTUPfGu5P4C7hUT4Vq8VDSVScLIDh0NV6N0RupMk6KiZtd2uN7cQdWMprUk6aSbxlMqkmiqDlHJ+BjRObGzGBX5HWCT3rJx1cBHRqdpNsVrz3YTgpy9ra1zqSb1e4aJKCF/Jzhk9jKbJlP4C76zNzFhjhk6aydb/BoymFUTRICEWU48TtJlNGUnT2NfiG2QAFc+o8ZPNEm5STX+RoOrZtQao1yXu7UaTcuiEYk3uuESlPgSmPt0F3J71kw7SmdOh0cnnK9H+J/P8ChFrvxMHcm+DNKqJ7Kg+43pJlMMin4AA5Mpzgo5wAE1lPDEnwWTjx3cAUJ3gd5ACSZ7aqN/AAPIU44BpyZNR8mbYiLce3EkwsVqkU0pusfaN9bQMc3bqDr45M9Un+uT6ApwKk6W0BP5NNKHfuTOgp5dTVxBEYgCwxb4yTqhJxDY7JWsBb14Ens5TEUpqmg1pzsqY2uinRiTJ7JzVk9CgbUE1eObUrDwTmnXzVHnHOZPf8nwIAULJr+ABQyf4ACnIHhCDzdq+gDlHJFDU2N/gIZT1Mpkck8vAE7ZPy0Go5MNYp0YPYvid95PStxj+T0sp3Dif9QEcA3dYA3iThx/e5LXS3vE2M6e7G5TI5Jh8U7ficL5NoNaH+TN3m32U/7Kd/N2SNCagDZwpi4U2gwYANhO27V8dLNq3VeEcIZU9CxAQ7kN8fmyQAL2ybpZOFQAQmToTJu4k/l5Ay5NdEnjRTftB9wABDetpE3vMmu/Aire3oUyE/3XA03S69mNtIpxdXUYACGJNIQbFhTfgppqXXWKcYgAlUn9iTkUAbxkw2QxEpPqEm1/KZEOm8HWvKdblMf4nn716oAB9gMnwvZXDfUox5TBsp/ckxdyc+pT4d6PGTBjB4eLbAyYEZNiUmDmTL5J2ug17ztKAAm6Gv6tMjJubLefqE0QAMlbxiTCjJxEU8kxq9FN2KaEeTtkm+qk5PRu5uDeMm+ZTP4pz3kyqgCbJPKsIPNjFEOgBavk1v7lMCaxZv4Dqe+MCE8yYi3n/CHuTNtVGg9QDoH30ZNyoZSFTDZDauk5wKcdXD+cm7vNEspy7k1QqfXlPwMblAN8MpsCLRQyaFT2Ch6zij9TWlJzRLKc1KbYCn+eNRlJuvE8WAdMVMCCmH8TyjJ01k8oKaEoMg11m0TrK6wLYziUbBlO2d7rFT7OAELIB/idplOUMGCPN2hJxjwMsKZi2NYpE6GDyipwsA7NXrNlPLCmSqTvHm/QgAo5JllPUdQdJomAbJfLZdydV5MEsmHaTTdU7T9WFBs1riclHytj3JRqmU9bScBlN8BtVaT8bJx2k1wSZq2OgC73Qj4nJrxU5Jydgo0qCmU+TxzJ9Jk2QqatpOXMmOtj3He6Uo+6Ed6ZP8WGgONZIpgjHRSKcEZPUin6GTojJ3iQIPKdFMaeynj1wNpJviU8+4iQZM2MmTeThEgfpTU2KcFD16MmiGTYUGlVrSW7H2cgHcmPeicyp/hk6xyapFPKAaaRTRZJpbXR2ydiFMytadxT9pR+gXTtZvypNu6bXSjIU2JmHR6UYsY2Otb4xaKxAIfXZwLp+FMG6adM1d0ptJg1r7sCADwMblaTAbW3pzTniZsk3hd7gL1teJjOPWPgYwcNI8rWQtQuGpT/fvyblYAg0mIBTZAp2zEwQ4aiVO3CBPDQfQplUGEcxsk+bhSmjP9xhJ3EgFtKf8xMVtb6kDyipkBU70SeIl0L4nI5I59Gzgk0YADJ2M9NqfqTm+Jk/E/ZRt5VP07GR61+7J3so/mdh1gRFRrDyAvtGlCwAaHoJE3r4nfqTW+JhxOMZbqi/0IQGK/dC5RkLQDsSYfYDcEBwi8cX+zLE+FauxpPKsAyJASgACXY+dpt6ZMRCnNyjmApwfk3niaChxK7HTHD6Lm4Fg6V/qjOYRS1+PlQTh+1xjySbq/1lOrnVTZCcBFgwc6u9VP8fLfyjNmYNGw5bsYZF39C6knDtLBgpkx4ydWxP/lBzR4OPerdTbR1oiA1bYmVOMpJJv/3Ut/q89AeSbQ9jyap2VgEjOAHxMxUbwA9T6muCALmqaqcMwB75RdCex7tQPAxrYA3NOGtA9x5AHSjZdibfPVKEmBWNDZDHUk/gHv9VPV0AVWDxAepR8HcSZ9VNDOGg9NaNh0Zwx5er6F36sGpnDWhJ5Ykx4yZNYOWI6Y1Ts7AaQPbRpoTVNI/7oXVzxJr4XV9ibN73pqmw2DYda8QPQuqYRkPaEmStIslRwtU9uqYBxMYi7vgjtzhj9YiF1vaAAVqmpe9GSOtAPTWqeX2MxsGSigja4MaMBSLtbVOh97jXVvapxqXTvscHVMH7GR1TRop4/Yw03AoIC9Aaz9js6p0Fw+oxpTVMuVGV1Tj+xmFwxuqfA3BbqmMaNCLhxZHblvCLVN+VH4tNXzh83/YqLvLVPty6VRdXrmy9U5snKHYMEuGR2D0VRhdg3P3u2625VHp2DEbmpqo/0Hpa014am43Ni7B8jU8uwdQOPk9aJBE0qVFPE8G4Zt6D4D6jqjMf+x3TdrBEva3Ni7E/97GphecKS4C4dY7/7JX1wgBsQ45JzuRAiAYb9XD0iOOEPbp1qQAD0oAr3YvYe1vE0NVs/gBDB9dudtRgOv4EmnGk1NV/7p3NHtGnKgEpqbCa3wub4OD3pPR0IkhwaAJ3BUA8jjxmplgvbKrqcCQSma+NTKFO4WozP/uilUVq7zNTqa4SzU0LjuwAD8anpajMaO6JXY5qY0nIGoArNTrmpmzUyjpvY4MosroKANhAR2DTpxsXcMv4mdYJrxW/j5ZkZEcKGAMFEPN2q8ELU/x8rRJDNJ7n/93w6yLUziVqRAA+cH16N5ggSZoLASfXIPip6giA6JxuibNNHvX03NQBmCTuEBrKvdXlTJOMhAHbq4oNFUXTa6ROaT0DtYIH10/SZ6JWiEDl00EshegNrWpxrU5p5ogY0/8nBCTiYe6MgB2gEHD0fAHBCTaDGiTPfWtiFk0GnG1JdHeO+LEF8AFg74qAR2W1spfUAwDeQBw8PUMaxYNTYBi3+vl5D3qP73ijOTVkuj3wfyAAvqNmFB8cNKZx5OwCa+vUgFOEmvsAp9ephkyvnpj02RqqDtUO/GzEfXJ+uryrCrZePDpCaSbU1A0bCl33UoN+AdGmCkfVedmUohBEHmVwcRJ+8AxfGJKWTi3r5PDtXmqnML0BoVHJ9ah6aA1dIaTU7kSZ5ZW1an5QYnemv7DfIoHNs2ggAbyAaoYU/9Tw0eG82/vQMdTOWen1USGlstT2ISAZ+A/qesO2Ok3A1G3Q6mL4tamA7vXSjFsPHKCEbMdTnVgM/HZV3sZoCULhb4cnowc2zZ4RAzY1zS78vOZJG2U8Am/XNs1d1TviNsoMKnUx+5pp1OHFbDiTePB7H9YpqfWtY1AB5OVMj6r9jcnZtOl21WbHiTNBmtygKG3qcHCn/r7pdaPmsi449prBl0AkmCsEO8G7Jo95YDVDDMXGxA+oNFDi4wQTp9VFWcAE36/Fx50bPXerwM1eJ683EwvRUIAHV4asx0GSIocA2SB5LcJ8Ac4YG8yAfgDMELX99dYGsi1Nrj6CdAPqoz5FUFjq4a7Y6mvI9bnalrg/lQGPXDy8AGZdyIBjxiJpyf2aMe8GeuVEpJovA/aXqOzA3NGzatSXu+zBNljqk1OVR7ketf2oCVIzdWQZAOEIICv1nOpuxTZ9TnNJOI6n41ElP4T6nHd4YmDVcNdmhM9ZRSPzdcpl1kBV8GtWNXweoa49DyozFpCanfvDLfB58g+tEZfNQoobOrAOPjVAQANjs74NDY77WNjrGibHQJBuy0BpUAUhNMYBneDcPwe3E3Jkn+ZAGiGqJ3WmSZuuMZkmZDdiupwnU5y0dVbVCsGqsg6Op3uyO9QBLJOqtrSy2OmptTU0XqfFaMnY61ytURm6ragZPpAl2iYHBc9KAgHCbL+ca1J2oitil55tm/j5ZM0BlYCawGWjNlPxjvLZM0GNnCx4aADTjhQlckwleTnY25CAAkDkBpiG8La0YJ0BpsQAedKfROWvUPLvhpMWcBhhNr+BrHU+gAHZj3ramMgDivh99XGu4cNl15T7iDTxy4UcSaQIY382ZgH2ExybR6g0+iQccj2B3Hy7jm968nRObZsu0RefrFJ0q87OO48W0cLvWsGnM0Nu0RmN9YAKuraNEcaA/D/xzLevUIFpvAN99rRDT9yBtnHVwaZAV21dYntT3uB61AEIaZ7aNqCHa31CXm9v/XU4ekC2W+6XLMTv6smaG/qeUL1S46F7jr0+p/tTNSB2qBXsAZIAI764SQEe+vF1PqUm9Fa4B/ZpPXmDhv7Wois4dT5tml3U7VBp9VF3G6hJAJep4IQ/4xpcNMeABzbNciBvVDZ4aeBSQNuxhvAV9xjNTcUvOPXDd+HB499phtA02TeuYr0jABQqTvBpwA0y/NuZn2Qfqrzsv2CgI0wagCF1MwEafgcWiumKk9X3oF1M5Gnsu9PYu8W9aR0dF82+KBZSjW2p+joyhZoEuB2YHVNTmim0o7JZAYAT1ISBJ9mbWp18Q/dqrMKB1caWPdd/hrIVTAAba1PoPH1hDkwRvKU0bBwIeNCsGY8NcSu18va7qaoeNwJ6hqdOwATR9ZYtrTwCucBXhDDem9xTbJqdVgNGdHhhVyxp5FABsadQCNhQHkDT5hp//oIPepoT1Bd6j292SBmU5CF+HGYDzFHHOAtqmlak2Y8amq2ZZBrtTA/OlBAJ1YDvb03QadNTRIh8fHZKJvP1MvGn45E6JBukQyuHupS3hBpf9TBqAHJDZQuG7F180HjK2mQut40wgafdT3h171ENsK4QZTaueXpQCd8BCnju8+1zozBbt+NNIpJ/jT6tmwE01iXuBNOAaBQTToJB4D9dHbrRNN6iGgVtnnRiv9UDEFYkCzLiTqQLep80Q3/Pu2gN6eh6a9qmp7/HfaIfCT3i6nxU9imp9CnfsOvPQ2k6m6/gyzx/b9Vyaf4+UuBGGVtEoe1k0/x8ty6OkJqHNTe8poRSAX7pqAARUsyNsgNJyhfbKaf9FX/6mFTTIOmsjbOC8e903ZMHC+NsNQAU0/x8rIx0/x6jGgcLx1Z3QKab81MqU6UgjtLDMPDQ2IefHVyfqAkDAxpg1AFTqfMi0qoBz5piNAcWvbN0YJ/VU9FtTTfYhmRI78aeKXkD6miCiFpmjboxT+qIliVq7LDTEaexo06HUC2T1rmbijTkhO6V4/QrU+Qi9FM5aTl/GidJfzqZ25TSwG9xDdye6hoOrnseT0/8anR1ej4OjzSmaZ0J3jqZktwCcBsDE3RxotaiqRE80An8et148BKu6NNUdwl3dfWodUOKAxr9pP9oagiAwRplbYGHScNMM4AAyotZG2Bisr2afmKOdWAU3jehp7bnFm8foVpYkHOW9seGjCQ28EbKYBPanjyNIROnLUxVweEE0BGbctTUROiQTZF+tFz0lmmjqcFG24qg56iB3NP0bbgotiOyGwVPRIahCN7Um6CNaCG82zYQQAUADjMA3DD9sG3m3W8aexg1Pt6wY69R2RwofSgDxTHmgoWKex0ADd48vSbWLWXam6c9V3e8IgKv81GNPGF6qdT2VAY/9bM+o9NOHmnr3jvy+53o6anvYXUAWnn29rOp4C0wEgfaNPOmm3jTe4AVnU1BaYcNOsxA256jOpw/UwLcH/QPYEjG1dH6uoYnVH0d111XamsLTsrscIgAEgegYC/gHXjThrO4ADRxgEENBwfGY09f/6glkCaEpvNMxyJwDTyJpn/9VFIYI+NyTqkLTOGWnRkyI4BFNPpfL6qDhmpuyQygBsoX3CWmILTolpoBIV5qc1NMSmbLQj1W24S09Rab/S1RQAQ5NYhkakTZTbD1X2YIHmpDSWqXEjdDkAer0gRLj1wmlbBbTTeQGvNOCYBcSNsWp8TvTpaaFQ0UC7sUkKxu5KML0Bt+E0pgU1HASacEkcnX8Hyi0za7mLTrK8YC00QAA+5OdJ6HGT+iBwSzXAadldhSrjp+k+MWvAI9ZafWnK99k8ktS3mz4mI+abhrhpobOJRPOUB1yE4RGqAApp7kQxlBjMSgL0U1iZO39Hn+NlrASVEGwaZ+wN2Wm5W9M/Abk09P0mStOMWmaNMARQC00wIaYrz06QBxStWVp7808gpAS13es8t9TEd63wOBwQfoA4CmmorTuSAJbrcladMACx39udTfV4UQeXBbuJyXKk7OsAAxmRQY7j8ci/X+WmNLTVXuj407LqZeNP/6n4jTOzJgTPQLIfUtMF+6/0t5mgt400iki51M1mnADTVzJ1odbS5GaZN9WnVrT5tmh5k/H5ozD2qam4TTmVptK021ab0HL+Z6gWTpshnuLQtWoJZA8mnqgAUeBoFVOCaf+DRNOhZRie1p1lePjqa/UNqEN8IN6iG9a1vSgFqtM3mnNEtFajA1AP4QB5EbV5V8LTBOptQhj5ac+REQgBxdTpLJkiI1HAYItPo2nAbTyFpr9jZfeuk1Oc6nGm9soMQa0/wpE0fUtDHdSAPKa3a06zqZ4tNg2ncDTvFpp61TUAftg1RQAi0lBqAMBLV6AeUS3dYBJ9m3/4K7U9AwEQkCsrxG5Dz7iKnUxxTur+PWK0LrTFVpwTAH4gkIg3xGmnrTxpG2q0+1abtZPkQ7+/jPcq5c0zHrriO0vGnjrTcJpv1k/wlpss0tcHBqN4Ve+U+PdhpRiaSJb+I0UbJ4DLVx7sf1O3QpHu94+p+2rXwADT8jbxaEbTOtBwCnXiMccs0EjGmrt1pBWACEtabYgBd1SQqA1IxlqI/TaZotPwCnEJA1X/FAQB8aa4919KNUB9dxG3vskOydhz3mNwiLTJyARtk7H8jBFilGmKy4b1BlEznVaasA1CsA1rTS7Jy8DRRTsO300jGH9NVFpkG04QQDhgPKMbI7TP1pj8DeUlq4XBIcqEJkOq4AG0/5aYltPSAmb2TH2+76uITaf7J1XOb+KdM0R2vXT0lpDtNyoBEEtzpgJKLfx8t+E1vULPYtv1AAJA6hnjdXDbib/U9sRG+DOFP4GfgOuprnATLYGsu0yhaYfNMiiHazTWN6roE3/+sHtNVe760Ihpph9LeTqYLGROhHkrdtwgUwTZjab9130oBoGAwlwDlcGrklqtN+aneFGblp+EIx7VoPL3OABH7TTVp8srUCaewkCSbBtDTxLASwPqbAYNQC1Wmu7TWUATqwEjEYTz0xjHJxN+9piu06/adU1NdWIxQYp9p1leEqZnaA0z8A4yRzDujO070UzpEPJ2ntY9Cb9Vq0+ZkbNcTP2nOiNApp+i08igE/tOZ5Hv7TBJp3+0z77XR1OAOnT5WNQAEB0/5abAdOB2nl0DHShmnfdEZrj0136nwOTqzuzHpm4aajtPfAnBxd6c4SikH8CbXM2PrhsdTi+e+qeDBdvu1OfIqOqdTupv29Qmqu+tMFtb989NRpjWI9GQG3tMepb+PQ5xpuKU9azswtMr6BfjT8Np9/aPKMHpQA3mnKbTNIJoc0z/nuqySEEA0AAllAGTU2FADIBGppaFNTxS8t8xiL0VToAZoajYOr64e603dabXb2i6m9HT8OpkFQ1HAfvPZ3mnSqtdVmxTk3EbqlBN6Xa7Z4/64Bk01m4ailNpxHa711Imrx0xxgB8dNw6nPRgxKhqarQSaYs5OF766C90Emp8Y7ZyckL0/2naLTo7yY5cDkho4wA/RB2kGuZmn+0+TojkT2y0ocadYhe4azZ5acUg1q5J7YJeGwA1AK5X26tPaG68zTpmB4kbFtSiytN54D3U9G9pok0zfqZR0076b0bTwJe0eXaSae9y2FimEP1h+pgxg/hafP1PKF6P4jjXJyQveM6ZlUC+Ubc49qIW567T/ab251O6bRuTAgBg1ANpluhNNdHoZ8xoq3HtQ5s6aodNOWB1c9VXuziIIPeusmPFYGP0t+qe3E016kn1T0Ces3IN/Np9Z09LTpwSPQmnw/wBTp+AU1eLtsQNBZa2TdXOGrK08tacIIDQEA2ANGPGhVDYfqdB/XjOZ4pjNQh4F0+XaYwABgun6INrMwEZ03zqZs/4GoBbi9Xhpq501+FHpQC5Gn1iA6vJn+PQw6f11weOm129N5pnF0+SwAztPHWnZGgNjpjqY0C6aPvUIumqeUURp9g0yG+q5sS2W6oXTNHQc2zThoZfQPAOnjtVPzpxl0+YaapdPCobw9Tpxe2q0yC6cRdNFm6IXTZMW9G09C6YxdMdF7yUjysG+2DR9gCkhOQ6ruXTb0cWUoN2ocLEP7ebiLEwJe6E0+86aQFND3bvnTVDpm8023Tt5QDIl7FNDtXm1V0yUfo09B8unbzTYBpp509iIH1dOnfYhsAJLpwk0xx+l/ANQmn+bTjTpl107/ae01Oy6m8kj/m6hNdZw6bJJ0TF6bXTYtOpCg7K6dvg0/2mUnTN9poA5YAgDEU1vOnCXT8ZezV08CXp/tPvXhiTTdDJlwvSjE16SNe4H9U9qbp5ECDSQertN0ipVnT+dmyQvZ5aeeQ1LqMcjTVDpq40xHaYpdMA6nmXTJGej5mEL0YkdXbu9cqo6OphW08lad/5OuQm9nTnBWhzQ/dabTdNDOmdnT10x0XVZa6cc1WHOnO7tPzppiRJ6MBztODUaEHTrwmzy01Y6cW8VQiabLTJ38bHUxtoY+SPZaBxnMmiG0N04pqfVbjKanHE9PjpuszeFgZ/tNI7cgnTlApm7Q84QAkt18XxcOKnfAY2cNhaeh4aGPhrLTgcAE5ADIRuFQ2klwr8AU/gCZjaflpB0N6W7wdD1+Wxhnc09v4+U5Qn2ntuuS0l0zZaYStPMM7BqNDKR799donv4+WoES5dTbKRry3SToeSQC0CmXpjFOhh5VWyfthd0wOnwg0rhpxG00YwEY8DbQAeBTKnGdL5bqtyWmEW/1O5WKdpki0xUHtZ0PiCmwojeZcT2k3jmBvTbm2aFuQxliU2AytsEdXDPR7LZwvfG6BgF3ZqpmP6CmboTi5e4R8IcaJkZOuamNCAH5p5WNJpW0Fr2jJb5eA5hpzmY+aaqwNM0Arktw4OWue0yLMbN3VdWnf7T09pxT013adblOZAA0ndsQAaT0/SgCCFOKlruPTHOpnDDWDHSiFNRpHpbTcVp280z1OXNs3MOnNlwvQG0EANroHodO0wnKmdBtB8T06ZadRdMAOmm2E/LEd10y56bEIOVL0RgAkqgJp0INRo+Q1r6beAAxwpwpncry3qr3W6nnY9Id8VEKtDgG9dNd2mK7Taeu82zVChupE1M2mmdTDDprK07iadlYC7273qAl9p8VTTgacy9OK2mBbTJLejxiN+gFFK2BUM+aD4ImgB014IEU1Mc2m0XT2mpiDPXladrkMR3qNhTOJ6hecEFaYwj10CAIvTbKG3IgO0nqkp2AGmjZkmzgXS0+7/NHEm/WnPPTB9p/LU/O6Zo6Acamq9TCRG7hTeeka+FMU/rIqA+NpnzU6HUABFPGV6q4TkOq0V0wy6dxI1qhgiSAbxp//U0V6cP1OP2nNIA/PEf9cD/afotMj6nx29kLIdG08laY3mPWK06Rgh+p3QcpcElGADtINqRNJjpyvU7tzsM72m2mvbNpMOvLGqS4DyWxsAaC/dbMGnO07VacptOXWnj1woxQ52PZ+YuGE2JGmA0DGYtMq03eoZQQOlemibTf6W9TU9b+AwQDg+msrTHk0wBvSgQZAROtobGDQ4WBhpgxxkb5Z31GrdygpVp/g0z3qaFZ38ZG+0NtRqoRU+MZlk92pAA3jTt9ph207IlqjZOB2mzDD+CJ/ytcENJkNPoWmzLTd3p4Wg6D6bl8E4+merTTbCNEg5DlvutMT2m7bTgymm2INuJuYWO5SbBPTdaAf+09Bkah9O0WmO0Atnpke06d6fhdOx4bU6AmXppkU6MUP/XC7emN7Td9p/K0zelTodPTOn0bTGXpnX0wQ6YodNCpaIrIulW1X08UvJC1M3umkvTdnAYXoitsDIQRGNAKtkYNkTV06LwGmr3X2nb3Tsrsa700z6bKAPIQGAig2EgHPTa4saOrUEshHOAsiW6kTTL6f2hT22nRJAjtp41rXaQcCROLgG8vT33ekYw5EsZAlO2sGj7TG80Y1LbKWtHZ1cmme/wNvp0Z0z7aaKJ1vGmbyA7Tp4P0/yycpAAc8bJUQf4p/qTQaacs1NV+m+sjxIB3o09BKZuvVcmnLTT4WBgX0znafeoC9AaoLTzRYJJE4xKZFNP6GmxjTl2RpdndaDvNNNOBIK/TPmpgYAM2afcIO24baKtThEOiU3bXoWWP1GqWTTlIAFiU8HaaWtMg2nT9N+4NGn3Q9kZ3wMXenBJTQVasSrSrKHHUherIUEDNyx52AKwXoeWM5lxpNTxs4MO2G8sdF1VBum3/TYoMUsPdiIE8tPWOnzDT/hAQxPAWAGXc21ImovN0jph66EE1qxk0SmHlyjd1G4pAFAGaJyOdImScjB3mrAcDT6e6ROP+n1W4BPibfU/hzoqKJu4hbAIdORyroiRzoNMNM5GrOAVDp5J078aakoN1CJ1IBkcAPaQAOgAY51KE77YN15p4QA5pW2eDjpamdzTpFBhpuJDHrKAPtVafNTtK4OXI8ZWyalPXqqSkpgAZwTANKScRtM+jZPkVsAO20bjxQY/r32aoCwIS/pqsfBYem+RO937czT4WB4104vTrZw0o6aLVjc5qn/UzfqfcNNssbzQUruRuzAw2YZ2BFpF7jOd/hp4S4GCiajgNr2ajCjOXeyYDRoQAzw2H6mNjTwX6kNY7E6rFg2UenVNTTlgN6g0S7uob11GmOyQdT0CqQ14GZp9NZrHvOd9mqG9Nkp6aVD20N6YX5MkAQpXg9qZzWMF5Glb1vrpiIM0v6diDOTZ97eAdWqblE9Fzsz9Nw+awDTWDpjIMxuabLWO4lGCf125pxG05taY9w05A7r/124mgfnUjKdz1P4WmQLT6MpvrnYIRvWnKm/rvzVBMpwh/eBYaqDNABnbLT1BRpiw/90lzw1VBm1HTp1phVE0voGWz3pemygzxcp21gx2gBDd3SonyLDsqJ/oMyO+uhNOi4HP1DLXfRB9R26cof1IibCFdjTex602sGbplO+YbRgz3RG7e0yV6YndP3JaiQ9Pvp41014IGWDO2Wm6nAhWp3vI7opr71DxfqFLDImyIAo5TD2N9PwumBnTwUAKI049acbXCY2nlVABYANa0z/adO502ymmatTQZlYMyqgFHd2jgAG3dJdGwajaj6d7alegb75upJp8KgCzxu+DN/0bwiA4GKMQ03HuJ0ZNPumQkNPlhv9Y1Mtm19NjzAl/Tre0KYM4DztqtPQmmzws4JpjDbHSbtOp3qomb3dq7W39BBW6b7q0eOa6NgsYBrm0++7pq1BGom4W9zT+tgM6UGcODO1Wnj3TaYEVHQPN6eUKORrhyv1j1poxPQ57p/tPUTlffTfVp0EM7d5pH9O727GIAkPpgP0xDeBXlNRomfHNgwZxwodbIjY9O/BnbV+ISG+t0xBbqffX8lA9AAU7pm9NoSAGlT03+mCrDOV8HYCCtqa/q18anBthOJW0QM56iHwdPXl6MYRAGBh4MzUDqu9NbN9RPdDme2703zqYOtMPgbzKugZp5qGD8GfpDOy6nDfT1ymNH0w27ELpBl5b6QzvRTT6w5E5uaf3lGjpXTgmAL5vd9gDlDPfUpP7TuoZk605qGbstPHCHvE9Vep1IM5aGd503bEb/1wRmx6tEz5RifNNeCBwTTuYtbH06L6bFdPNBmyYA6YZojI9j6YFr26yAJijFEOvqwPfNz+NMK2mXrgCBJu/Req3DjtMFTAgfT9OpkS0xvNHyy1ce7vbU2YZv+jYNRsLDM3uncwzHmoctAL0U2cVPFe6UnNX/piEgMxaerDMix6cTTCtpgp06hngrNOhKmR61oItQ6colJDir3Y+mkUk5AZ1/09unvpQBT1AnCIUeBtzUxjxoFdOX3qdfA7rp3opnOIAFDOfGmSvTw/p/p06HaYgUlNQA1rTkZp8DvcykiRSTIhmdGTxSEVs0wcGdSNPQmmgAzl8tGe01iUYZ4QRKnQz1R1ajUM3/RqvDOULgvm90iOFFTdu7xxo3uun6UAqSp/53IXau2DNZWnUIzvwZv8M4LqaodNA+oeHWaTG8B0yV6eWtNcmCW7Dt6sm4M8Q1pC9Od8A6lToGJkRgxETsmvBwmmBSjHPeoJ0y8aYvDMmhmtgzm1p8ZU7Bibkk2KOmFcgREZ7phPsGf+9OUC66dT8VpqMI+DFuBFT+Wm7LTpZAdSAfX6ewkCY+mckNzPu6WoJjJsuI1ODh7LTf3pwsIKPaZA3AcrgkTT6fp6zvQ6UfZU0xgH8Azvyp5jzbxicTMOguAvSjLYG9acnTAbz5Wrem0bTKWpgeDdu72jdP8f7oeVSWqQ+01UuGUL09OataoYqm7103uRqQcPJNEpBdBmJ9QXZDsfJK35OnznT65BuHY677oqYMPKmrtTIK4KNhEZ/ob6YQhH300+gumhw9/qeutOEhmuIzzDh5co70BpBXDrkHhVTjumuEccFQAetPKWm7lwwqphi9ahoPy1PiqnsOcOsCfj5UGjv79P/rgOdjY5Rkw0xOUcuYPdo64wjZMhxsg5X7vuYOpf7k31cDp/j5aaqYmDV5BmYnT4lG6N04/yb7h0AsG3z1aPjOy01Via6SSWOq+XTomp9/U9ZqZUp3gB0EHdtRgBW7bq6Y2jN/6nswN+XkKY01Tqdfw0DYmN/dskgXwKo5wCDDQQsH1a1g2p1J0xNie7vWOcAxcAN0Zw3Y1dGdejPmgpfyjTWwcw0yGqZ+jPGOn1ENIFR5Hvc0lvycMQVHH/dlHW6Cox5RtgqM5OH1a1p5e0GM3JYXpc0N0xAA9xTh1YXe51sQqP5qnBiqwsEpjrXd8AE62IamBWDMhm46nVWqfvAMjhnKKjWAejLg4waaU60fRnxx2+ex27EzhmmujPmgoe1TGWgP8M+Xsf+jOkgII711exxIzcFAHr2NdUaIYzzex0EXTZ1pWcPCVGQItqdAUSo8uqbhF0/YnXWDiIu+3versaxjMMxn91Tige+UXbPsbqNNGsAF9j4UBkcM1pUczrXtB4DtT8bB66jYFUZejPUxnN9jrMZnfY6zGYs4AR3qP1TGVE80FN+qY5F2AuGM+9/MZ4Ko1VeqcqPCxnLYztXW7wPUjGahcPYhoPKjXHWt/Y3dhsojMIan5RdP+xlDUw3pqNYA4uG1YzckZ4A43Tie7724anwDjqOprEPT3+FFdMk6mnAk+oZ8srYNRpMED1enFbTEuJ3Vw27/uBR2cSiSvTvVp52PQx6fMNP8fLssNyuJj0XeLqbaqPr8AHOAD1e9HAw1Ub1xOkanmg9u/p7vXYaIHaD2rEBpUtDjhnKcniVqCICW4nM4z0j68TU3TFvFdMl56p7TN6bVMXUgccSDOv+nZnTrZZbsil4QfitM8mnw8T6Yul5gMIAZqACtlkTgzS7u5VHanXFKWgYHGOuIWBx8Nw4NppRWiq4HFdjMbh34PbvGdBvVdwpfC98qAVh9GNGH7F2JmHRMsm0KKEPeapqfYOP7ZqGgr5TRB9aDJpEgPyanyHwUGWb0KEEqZV8OVYGnLAT8Z02jZpqZr/08mxayD2TB+Dg1rC08AD1uHMb1pmp029ZLEykU1zqG74DJ8Z/fE2Gjru/UwJm0ENxah+BM8yzovxPIcGJV4BGXVBM4IBpyI3Ms6aHIiEuw//d8OuVvVi3qHgADxxhi3eL6dBV1EJmFb1UnB5W9fh+Q81Du1GsJdlCZ0k026hHVl0ES6/gjxEu029Rbes0fVH0bZW118Z73ojwmfvcMO4AXiDw3q1tBiVLtYl0QIHq6QCvh41lX2js2C19CGCZDwku7mQJ+4etvUa6bLitld6kRMyombu9X+cqJIDWiZzO9RFwZETMJSASY9PpRxSXaPUb48OCuRjEzBfGu4ffJIbGACISAbYDmHh648MY+s0JNa0RHAETAR7d9XEgj3qMR6xdtTZhJ5rHQ3oVkAOrmZeFdKZx9MPQh+u96IMeHHacThJrLoNW+HN41tcGscj4SZx7U91wZu1Mm+qdGN6Yey9A4YxugaNDcHflwvZx9BWsgbTVEOGJm+DN6I22xxPJFD4M3g6mvZdvy4LyDU/GehwAI6mQgD4iZsFXSdwaJTWNZYV9N1RJgfTXKWsc7LgQAM8NgiZwzwztyh2yP0IGEvTsPG2UGBqNolkDdgbsv1LwRv96GZIf1t3Vek4UNikGhVACvoEUAMgxx3U95t67u3WoqmxuDDa6cjAmQAIDgy6brj/J49FVwN5jcQZM0nHv6gOS6n/zj78Ztfhk2wgmY3EAqqijETR1XU4Jkdul19zJ+G92uplBQ/2No0fWwIMDmNOZcXUnhL7uyaMom5lWN+XhrkIwcAb+l3WPraNM3yZiBjQaDHBw14GaLhABmqKDLK6JtVUP+0bngDTHRUFMxYmeDd3GXwzqywCR9Xg/U5LreWqXGZXwFgUtzgIreBxl1UsHdnIa4+4N9fabtG8O4pn7MdNvBxXzUIZoxTPkM6ZvDfJJ6LHXbCixTOp6n4sdy3h73g9zLu+0AB2Hwo9Oeps/I/U+vz1Nfj7ELV1DQRW8Fz7tTj30gGZZd5OiIsI+ZadL1N646+nAXmYeUYA6SaQTUFHgJnTvwZ4SzC94dz81ynwu9TBopx4AJo+pwn0ejwSf1g+pvFo6djrww1/xm3/TCEgFiAEtcclBxl+abzs21x4+rQcHq9SSZJmpsdreR5Mk8Pg27w2ihGUfD0/Bplo3vqbOTNReGNsdvW1Uskzx+rTl3hRGCHT2MhrEoJfqZ7jMC8BSvDcxsTVPb/Gf9TNVkmAY9B/Bp/U/sAZf1M80nk/DBwe8o8DMLUZ8Nak72pYdYA7RPZVgeX12Qp6OfDIBpnn9bn3EF3Bv+mPXdIZGxSPX/wdXJNpaG9pAFlulXw5mmafwC2tHW0GSaZ77HcrSB1Y0YGmUsduq4NxM4TEZl8P9GbjFa5gCRXwy4mZtfUZ5BFfd4bRxHHXKfF7TMjqAViArMuuNo7N1qNfWdEa8e0PHhr19Qr7vMATm+GiUzUxmpgQ9G+tUK12+HEFdRbRxNjE74ZDfVKrgq31vvhsQQ5ncfjuPJvqAFdVGUokgNqIF3TOIK7aKTW4ao9M8fIDTFRfea4/Dkfht8A320efmBRAaFpup6Zk5RiquGgV18UnS31L6Z7RPcH4fmc26Gnff1vzMItDZEFNxLxREA/4zC7RmSk4vccWfWWW6OFwg8WwhXfgmfacBly0fM9q2eiDzcvcf8fB4MokjTx7Rsvw+k+qcsC8pnN31n3e7d9Zomd8NNZ8HafDXkGvDMwrjufK1XsBxUz+vu9vw9BmZGr3RGmB49vlJoePZ67ocLgRBbsMc2kG7QVcxmaLTMTOn4OjhRp5G9f7afcU0bJm4TIePRGtI3kmeptNz+Gv7jNQhtyrXQ+qEzPNm7xitq7hmEIosadaEPqQGPnwrUwNgDYQmYqpOC6GOhDDhcYHTYQmep/W8DZEHj7XGzYQ/T7t1M2J46eP1w7O+/wyMFrVwPDGnFLVxmZ4F3Xq+u8gPl3rBMzkeAIB9Yv7vlwN6vrZjTlwhg0nPJ+u2A2WLbG6RltAbYDdw8Z8zMza7fEws1J7tQD/ED0mgvxmqldoUBqzoyskbg90+lHMAjvfZRYk+XbSEA0CqHgX1jn6tmg6Y8YygNx/qokzdyu48gOK+uKTzAkGvjTEX66ZXX6mYDL0PFHlzdrfAVHg0XntH/Ufxn1HAaduvmg5brskCOM4aWMz7qew8zSoUZD1QT871Cjk9u+UQIreHRNMyiH5Ajb/B/AgBUmZq91MBGqszwCZvUjXiKeOTNdWAGszrTxouA8YBrswb9Ebqsz2TBk6k3rXqzd3smm7QtWSekW9bMII9NNZiAXRD0SuojDbCIBdEPJJ61szCCZqAncHxvxV2+17qrwd0B28XZ13oTEPIJmcEzPPOggzH4EcoX2m3qio1KCZp7M5KiEqT0fPg9gj+ppnpMwAIG2TOQrhGeAEameUzRWrqIw1ylID8jKQR84KQlQbtNPthaZ7OBoMdzM57+EBcBAYHLcanYhpVXZQvMwzNMvHtF9j8Ztd3Sj4GoT0cvGrTNkLgMuWh+5uSd2ogAHFdwwhvxM8arukzPuUB9QIk6R4hvYmaZIa1kJHsrTtOZmRM8cnrkJ0zJn8Sd12u0GXXTmazNPP8aU1DdyelwNiJAZPENGmHfMzhZp7CQ9kwY9HVwLtWRQktp/jM0ngCq9ycZ6S5iQKemCLa7SaeeVMUG41daIQNBvQG8fQE3oupfsgeVu0M3a7Ad2SPZq7FDd8bxzjrSO+oxQCFq73CdGKevdvbQ+trV1Z0nmBNMcU6aw11YnZUPW5nxzTkcB4czc2ABj/W8RbONcEuZ1c05lWET5H6EAm3TZEh6LoLquA7pPbqbpfcYIR4WgO/6rPNNK9GdAjOCtO2ODryebN0yDAVCAwnBliQ+EYe3T3vRGyTTs5AQyI9Jac3eP+VqqQjpPhJRTfbnGjV23K6BNwV2iFHM0dkk0kNwWmTU9UkmlmQ+Y3EH/XxAAkDdHQWsvMyt8n7IBjJnEH1ZaG6BQ+FEbfV3/vGHJDDQmhSQ3XmfLTND873JDt7ASCDYpkHBw2QMnY09P8iPVM3l8l+E1AAbDUDaDJwS0+qEYvABlob+8zxch7FXdsrpFTO7obFRoTfRqMLU5IdRzN4a71pDMwtT7Mw8AFUtOT5nV8zePRKgDVL0VTTjPwHWGTo/RxgDanhpei1lob20AqCuuFpIreBOl3HxmvIVaG4frIDLeqctMf1AUU9oyZroo3pNBiC0HKH07NsYR+Yo/yJoR7QwxHqvSOAsUxU+s1v/zP3SHGKVR6e2NfY4ya9SPVOIPJDMgGhaXXKmbRt3TCA3qU6D0r1JJdxFofXOGGXBNMQW6zKO4BovHL4Jn5JdlGeb6QygWafd3LiBikIz6Gx4tZBIfulxkXKzBDtD64HTYaIE40Q5a6sCzCV0OPmGemfriOP67I7dj6GTPM8uroS13NW7Fsz0A+mU3VL0TdvVOQHuCzmRhsUQxjmajwNEQI0AAvBWv7g0lQBCTOzWmVjM81phZk+pEb3zOwpIpszaaZrWzaihofCMZpnWszW1p2pAwLIdrzO3sBPUQF45OOqucBofCNO5mFczDCGs609SKuWTNz466szXVgWh9Q8ye+A3JWRKsDaVeqtMxuXs9q3KBbl1d4vx7uLbCBrz5WuFnRwN5N2PxQ13EtLLgHa7qy4esNaLI2hEddkOOZIIbd5GOv7gxkxrwiPSYbdkzvmerEoDjadKGN95mCFD5jcMQyLMmaf8jPobuIjOBRhaXbKDB2zP0bhmIj9J21iI5YWfiAAw66yizGTGlzM0cAHzkM0DlyikHeu8LDRq7GNUNUfL9QN8igGk3VUpFdqBa2a2kzskRocnSmBUENDPwHgItERZ5IvYnmdiyDJ5mvZD4Rh/wsxnmZoS3BFmjIjDrJkyI3eEe1E3OsnZcN8re/fA61mf1tPcoH+0Nz7AJ/APZEZyI15IN20NXthhZM1rZpJmClZ6VUAkuusTMwgobTrJ6pmIjNkAAMtDXguHV12GoGaQzd2e9Xcq/8bCiNIR70m4z8hsnooWAGrZMwU6qQjT+Z4dAL24eybg2kEOoj0mG6os7yAGlZMzJmGINSacNNQ/OBo/TBoAmgotdqZ2UGB3mY/ABd5nMDdsuu2TM2qzqP/U40aGgNE2OlVAGWhoLtPpJbCc9tbJxC1Q0Wbop3TWGiQNS5GpFcB+BrtTMsU767T1yq5+Q4pqCZCNTAH+oD1i69u04woaqUiCGh+oDz7J1hQ6+yfYUO6Fm68zL5OmEIhGobkA3p2bBqNeEGvAALquF5l1dAbdszR0R4oswxBqcBPY77FlVdJZtAs9U4jwQ3+FmAgTAniuks0jon8gAz+UsXlkVO6KyHxacIhzdpHrlNp+ul906tphwFjdIM/TARiCeqvfZRqkLORkHHKdxQelcI8qgCOcCzkBICzg1GqpSLDEa1s26ZmnIDQio3DjRA6fNz3hKGegTkShgos9CWfCEM9Jn1pD5pZo2gDAbqtLN/5nlszIL6wOXZMmd1L24lmlUjGQAIknYfwwcQMmlmh+dwOm2UGAIWett3/frfSzUMR8H9XcRuTBAzeb3SzbTkirZDCBNcT2PAmgOT0kG4bM+GmfKp2aeGT0z8JZ77DRPnuelBODgrUzGkGigPRgQDBBN7ianVDMF22JM8WmfxyMOZmLxNyb63Rk/r7vkN38QG30DYTexXM6fntoT0I5nYMzvpAMbM+2WeJI1kLB+L4DERmXxOmodOqBpgQ6QVfYusw3VEskcAApob3SD1huz6gs+ZrdvUBZnfvd3d69wsxYLH0LM0Dkwf1jeZ0p0w5oZZyMjvqw0zxJG1bDeuMeJpgFAbg4jblRr7iE0oDcTPcBn9oUqSGiUE2E6eU5Ptpan4z0dur0AGCGclTM3U6sVD6E+3SQzkWeIeau3rundP5Zncs2d4E+/XGcnxgibNBjjA59TpydPlwbTdkQCZ/LXSKmc6QYblm1ENqWZzjQz5Fs8g1x3qgadA1u5pXdfICPUyiEAN7NHBm8FulRlIWkMGdAKFwsGRkYo2BWZV8O3S7CsDCgulAAKPhqptNut7X3dO1yLXWIgADTUN4JnOkGL5qVPcJNmZxbiC26u0zSyhxVdbb+BO93cVnlKzhNO8OA/Whs9UNkLBmCzLxGvWQAuWaOZUJZ4U/1BGOgJuOQWeRIAxBbCsz6jgLZM6fGc7mjJAAcdgHXaTwXVA4C1q68kB38zj8SoSs8ubpC9O4VmsuDK1mhNdSvEb8q2Ca60gIZZux5jbvOURShJfqrrDxZZp99UuWa3BOgJHWEN/64bA/e4kYR1RRnooqzhUR92Dfb+qH524mGRczLrWxgvfEXrudNaVmcg9cYAVPDXUTFhN3Lm6IqzKVZnmDaewHDDjBu782kZWhxtM4C6eXD39/7tY4uVZsYDVFADKTMhtAhTdisGuAnYVmqEP26wbiP12A5baQxqBvtMmqpnqKzixJ2is6ewENAIMcBkk6D2uhvM9MmcJLNhlHjegaiqfNpHkeGUNpD868vkiHGyas0tIb6rO/JGQ4Ncxex03f3/o2rPRwaVcNYbYQcI+Lrt6rOKunrEjRWagxQEPgeuU03VnTTdFcGv9cGdWePtMGJGIj992q6MgP3/oFN1a2aj8znVgNcBFdWcTN1PVnEstC1Z2o3YqNHAzOB8nyJNJIBvas09Wcc1Wel7RY0vGWsKs9DBuLUMgyGzZA7pe8bQ4PdqddP1VmI9dmEACYQ3qWYkQ3PZnZpji0xsBIylWfHg1JfrrCzpIef/M0kkaIUgpJH0qzBmhgbQ4l2XHSPdG7lKzIMh/+rRRWZ1Y3B8nbITBSRsrM4g+ul0PAkHNU9sVZ8HnQ9Webg3yoBZqzJoGJL9b+WdKLMolmljdtNZtXLajWbtM1TVn9qzSbprkQOFgZmN3/fr3CzWtmlQLvoQFlrPZum5+DORG7K8Dg4dDsS9+Q4SzTJZjIw+5WZqug6VnPIN+bScmRELgFKbig3rlqzo1hpwjfb4eWSM6uFVkjqPBrEPQaWZ6EN/8m0LdjzG99I7jWf0LO/5b6yzHiZod0yOAZorPK1n0T0k2hggXbzWeLLOd27xUzl5ZzxIzbWfDtjTWHdMzSlZxrA547veSNh1mlazT1Z1i3S9WblzPJRgh+dR+Z710BQWe6N26rw1EgSX6ows+2rshrPQpHRLdDJ+wBTTMWYZAB6pnwqAzwGo7rfEWYu12/vRbazdZmllQKuBo/dOJQnYWIyUJvZ1KlCfOiz/unVXY5oKID03Dod1g1C1n4gApK4RGgPAbrW63HQAoPTuOh3Ksya+uH11E6GoCtQ0J5D09ykdemMMCmHENdJZ9t9XwWZVw2dVmPI4Xb4Qj00wBu3T3ysBuizVYGqZM53mdzLPtZGxBTxO6iys3TmakFPIlnQWEHNZ6VcF/GbvgPV0g01DxNcNEIGJgbTUNmmI3fTLmRxgALx6aF3UGCnmXtRgpsEjWWhsIM0mWHNjdVFe9tkwxBurLiyenFS1vMu3mXe8bqPMMepGwYTosx0a3QMACVLNKlnmYjjdZ4ZDXEhuEIM+6Gd9D/Um9nU5RWfTzPmeniYTrhZ9sgpEFKG8Dt6HCYjsMRrSA3HerDLMbSa0hT9+ZxV9YSwUzSMb4bTBAShR+2Y469oDe2VL0ISz9cRlPcI7TjPjMVYaV31JaRr63b16aat2Z+UW7D0A+qLxB0UcBYATmxx2TPZBdAPFL0Wht3wVmsKzZvSbbI3VPAZQ2Nh5H0MdD6tKvX2keXzPsGG/VE1FZx1uAd7HTMoQmmZmdBYASis9UQdFsPNm7YeNlWGvhs0cVt+t3YGqNmdq+qw4rbUKbXSN027yq42Nu3oAGJlhI4NyV7VUz0yZ1h9SIYejt2WKI8Nd3zge1uGXIbpVAxNmzSzXKGxZ7BCaZ7mNQX6b0ju0h0BnR0mehMibemQDDQIp9uzd9WbLlpUW62azaGGlRsx7WZ0bNTF6LsDpsW7Ks8oFj5TMW/1HvTfIRl1DTRHkoV2+i7JgNwmZtD3Ww+gOD0f5nNa4X+Zk0ztJGectOT27KIg0BG8eTuO3rEA0bzRdGT/64PYxG8Bvjs0EZGTiDYKG1Rs4E7t+E0Jv02CzH+p3jXXemYFxCqoBj/1FAR1D0P1AcJ9OOfagqRAZSRgs/AsYc+2nkbDxDnkG3Nnd9hqQRMaGHIdVtduxgszY2eu5x6pmy0N3MgZ2s85Fvw/JgSRZMjjopnn0waTiFoAYZn/1wuKcOEI03mdLLiULyvKzOqgNXgAhmcPQ2JihdWdnCJ+o1bVsGawqGFmtDDarOpRcMaEuZoBAcHjGzGuZghDRfWZ7sjxGGh+dwL6mECUPzvPt3lNnvqUZZZnnojDWcerOBw4tedU4Rz+3Wo2ZXsijABaH1VWZ7KFY1of1Q0zEaACzXSZoLXVeuCYgDUaIcdgYLZn9I9lCqDI24catSD/pBPxE/xlh7dgCa7Fv16Dutps/KWfubPNm7XizaWu4JY7CesGMPLl6Ilj5bOqJYwdmZyD0bzRYgAtNe9SXRNGEn00JemkCDBLZ9bM1XNn1TN7ZwaQEejkWUDfuLuS2BH27ECzMSJnE9WDmdVbPf46rjD/WRnsLc3mdfaSc1nXTV5mGq7MyfGYE3Ahem1KzH2Bm2vd8YYdr1atmT4zWju/X7To7uXZ02tm28z2CZ6Qs4/ErnW41u6x9TTZZ237Zv6bpv3b+nGJTvte/f0zSWYabPCNmz6dhRZtfM3KBrrJ0ui7HiN99ujx3QRjsv9OeWqPsjRiZ9s6vM2eSd3kmHsZNKAwakw4DkfBQRqs6lCAaliD/08YBtwrPXa7RENyOZydDa0WfXHBCS7j4zJy4EaXcozrvLNW1mVqz5kpkLQGMAHrQ08XxccjCHO6csw5roKd2IBnWj6sCtcU9dXWfQDNRx1cGNw9yD9nYeapZrP7x6JZNrTu+nI8PXuIDO+/qJNd2FZ7Q3RUmaEA2gN7jv6YSZh4seYAmZWPydaE6NsDZ8ynW9hsfQzJx8n3TwKZr0w/dShCQ0j5ngsNvHOpsw+KsdW4gK1nBAzu7m5Osyemc0vKS1bQkzY7ZxSPbADqbgA5GAjOTvFB0XQCRn3esPn5GT0tnnu4Sg9x0QTIDY96sP1+NZo7DTeUYBD2miBtAzsaq1NM5/GbVzPjW61ndRgZwajYQmYbMOMRFIIDsLun3I+goW3v3CqMf4DuDe/NpMKkaH50vxn1vNUim4us64GfEo34u7BEzAVZnwM+NSbSV3QTlfbAEWZ49sx2WZCDOg1agEzKpZ4fXeWgEXiL85n6UTuaxypcCCgfQbNTF7ITTuzkMl3afesyDP2Wrsgz3agRbM3RWZFTN8omkudV14aQDYWmdXLOwymA5dWyZows9L7qioPcP7TOzWFZsYDXvJsksNxWr+8jIG4Wa3Sk2f7WNtBmb5NjnZ/o3VwWf/XBT5GhZT1nZ3Vs/WmazTOzrGfXd8QSRlQ/sWe4zO6g6hYtp7Ac92DMGcj0BzBnwrVdqZhss0sUejd1Odn7fD6FhsfI970T8LOmFnhgzaKqafM4TEcy7PcZnev1RPQ3Ks/HofUI0nK6RLDF2W8n3ZABBl8QqymJK1QsaQajY8GYqTP1mUNmzAAAG9GTOza7Am48j6jDs5RWf8LPSVmMsgSlegd9VFbpX4OGkaOyzQIZn/I552eci2DUbwQzmejA/DRZYBa7PMtncGN1jZjFAPjljbKAXwb1pNonuppjTbxvNBQ4hmaz1fQW1ZU05AbK/X7u7cCNH0RsRYBtJow2yNdn0qtNIZhs9aGCLesNoKHwcNbFavmIyemfi/UsEax8zhGxpnUHA1vqrMbAb8uzq5ZzVPVCTkTLNMe6woNEHuqYAP52Z67MAkY4PdWhRtGIPIACT4MOFxlEtdxZogjbHhpwvEcLgNpNWBZw9PRYUbVDOc0HHCzcve6iQJy+qfw2NGIeedkdGht05BbsrCPzJbLGz9cRwajeHuDgLM+EGwoN4i4Ps01xERHlOVL1cezg1G99I0Lnob/WREaEAimLZwajdLoY53CAeH6uzrwps4w7EUYJN0dyH7MKnkYvjvfjWb753TJnF3NpogJgFTBEYhLNvmbLqzeRR/Io82WeviLYv7mn9H3Z75wHvUl1J4pAB4EzxxGDHswGUhr/Wg9nKP0fRGt/M/92eIa3VEbWijhQAH1vUjYYwkAdcAXPdgBZ+3OFHjqBbOhZHNwNyiWzuVuGQYOD1R874Kz7YZzhPZUDLC92ExGeuzVxZ3gYO6Waa0PBu6D8jYohhVgK12ZiC3R0HObDSlunnoqvi12LPaNnCUNOWunrswm/SrvKpFn9ByXmxiWwz5seAlXE9nDRAy9qCE01LWexbOUe7YGz0xR33s61maS/Wd8A3W9fmxzvnRR+HWXBVkAFpD1KiNjs2ZQfKTNv3rImzxoGunxH8FrpBX4Jm+H0lFIFNDQZ2c5rhAVw0FdWtUawAAAAAmJzY++cP/I+W5pwl19mmG+zGIQSJs2nbrW91oIbwUzVP6lrMwV2c2N3TgbPTAdkQPVMyYzHvKCa2BS1jQWxzTswLMgYQ1/M6T4DZ/Okko1MFrwjMF2qEFDX3Zw/sxm2eu110kbJszvSG+Ao/6QSEUg2VmDcDGYRWiDZuWchLMs2rYxArEZkmrfeIY5zPy5mif1WXZiDE56Rrf7V+5mbCzrHZj+s8ZAfz7PGQGHCzAXZ1aDcJGc/f2TKnHOybTk6ss2XWZb7O0hHumz2tGhL06gLuWAjHQBq1doyZqPA3eocGo0Qxb5Zd/TcNyo1F+Dw3AC4hmfdZ9hspMzWRsvsOIVnHTomA5qzzT/mbRZ1oC7iBzBbOugXfU5ts71dVmJfdQDq22oC6UZc9QelGvszbH+7HHUZ4BOUYLJ6Fq1rGqXH9TzWfrbNneBeVN6TB4j2OB2aCjNBtaw8tu5G6KjeFGdi2z0EBdMdcn+ohw9oOcwcOHi6kgAElZg/M3oOaVgp2YnCHDyUZtVnVUpHfI1kOH+2dFDhvylv5Fz/I32qayyjve2/Ds4T7rC7PGdmioz4dRXuyHhrpPzN07Gm3D9cRj7M3Amd8HMXPH0/dDOx8x1SI4Zgo2wKb/qzaCZ4yA2dmc/wCnMHIMz3UZ7nY0NGeYvV9Rmzf13KifqAwuUf1VOdWqbWzPTO95g/XDs+YNyTrt09m5RqWsxfGfmjN5Ym3z1e5R83TAeUescNAe6loUfKZ+xw92LrVHIyJ6lxdM/uuJsxYOmS2Adfq3MzTlZ829RWEbZoMZOq1dj/3eqjcKewFfKON+J1WzT0Z5SjaObF9VPtC7hhzkThxp1V0LugLPdf7gKjOLByyo6tie6o2Qxm6NNRAAACoxKAFwR06ARU1TfTq8So+x1tRjNyVHbxlOPe7CozN5uLVOs96+H0ZapusYcgHqJjO0PhjyAwbu0mM5nsZQl1UVHaKjr3+7gTFMOYYqOb+6phzjMZmVkxJUbcvWPYnGqNHFR57E3o+CIw3jqmeYzgtuvmMwNRq2HNzqnIRdosZ4QPY34gBHNrqmre9OFRp6nRYbGljNLUa0Rz8lRg9U3jGaVjO3DnVKjIOJ73vQ8OYEuDIjnsQ09zhmMOjrGYNc0/Dng3dm+x/4cyZUYy61mVHzYzRGGq2M0pOUcD2ldbNhzSimwDU1DRudjO+aahRdhw5utg+jRvRHNYh7vYzvlR8IPd11sPVMBVHwFd4C4dDU0cjuXr2kjnsNTkVRqOM4ziYkD1CMnkbd/f+0YswWwgyL32Ub0kDXpZ9T3YL0TaMwZxneqjOVRrjbB4BpSLPPqJu4jeCSXNs8XGeI1MBJ7MNA5cZk8aCU3C+lm64mJr1l/e5qozAcb1r0Ojm5UM9LZ4Bsz1UcyD080b+qj4XpjEQH1mcfQxKFmvjDHuJrgXUfmcqkWjrgcjAp7AVssrS5CPUyHB6TyzpRZ2eMwWLr+cBiNnWIAOAAS4PUT0IX/zbVGE7AG8Z5yLAdUd3YPbxn7tVgAAHpjAAAUQyAAANuUAACKDFQcY7TWAAAPs0AADw+oAACsGQAAOoMgAAMYZAAAtQyAABOhkAAATDIAAAsGVsc4AADMGCsczWOeE1POwBAAAgwyAABjhkAAA/DL2OcAAB2DKOOdrHP3xnnYAgAATQZAAAngxDjnAAAHgmAAA8o10ONRyZAAA4JGAAAHU13HPD4n3gAnY5qcc4AAGeGQAAAsM3Y5wAAEkMgAAb89AAAq0q7i7AAA4ErljnAAAa8rljnvUdgAAZoZAAAKwwzjnTNTLNcQcc0OOcAAD1DIAACuGQAAMMMgAAdYZAAAOwwzjnAAAkwyAAAPBn/HOATm+jjsaBkCcxBOZgnPwTnkJzqE59xtUcyq7HN9jnMJzUE5uCc4hOcAADWDHhOcncPwnpp3DgAAWSVAAARulkTnnxzFCZ94AIAAABzQAADMBDE5pic1ROeJ03OwAWJz9E5xicy+OcBOOU6a6QAHE5gSc5CccAABSSoAABM04iXd2OcAAD9DIAABKGQAANcM845yic1berK9VyTmlJzi45qsc8uOZdD3vABAAAW77Van1uDbE5wAAPZm4w+wAAOoa5Y5wAACYMgAANwZWxzrJxvSc/OOcAABUmoAAFUGOXTQ5OcAAB0XoAAD0M2U487AEAAD52gZOf61NaDrAAALB4BTnxCTBd6wAAJ0OoU5ku9YaceN02AAAHBkAACRDJZOcAACyDIAAAKlQAANh2dpx6xWoAAHgEwAAHBmgAAMr1VtTrWmcqWoAAHVtecc4AAFlEwAAHb+e9RwAAEuRpHhwAANtqtU5s9HXSAEAAAccjVwYcnOAAAhX3CnNOEm2xzrhJjoqoAACP3QAAA7K1ZxukANeObQnP1nGdGNCE5yCc72OZbONbrrAAAkHKNTmRuDdIAQAAKsMgAASoZLxzC45wAAOSaSU51yc5OccelWrTn1pz845ryc2kSedgC7jnSpa845wAAP4MVSZoyc6ZOaKJMLVrAAA0+qAABAhkAAA98edOcAADtDDOOcvHNnnGHyt705y8c4AAHGGGcc7JOcAAD2DIAAAqGUCc92OcAAC7DHOOecnOAAAYhkAAD6DPPpqWnOAABChiUnNkTnAAAu/KAAANbRhnOAABABh+nN3jnAAAlfqAABhRVXHOAABohkAADKDP2OcAAAyDIAAHMGJKc4AAD8GVcc4AACAGNRVKDOYhnNQzm4ZzSM5zSc4AAFaGeSc4AAC6GQGc4AAHSNFKc62OfpnMMzmOgDOY2/5QAoqj4x1g+a+ok8nK/sc4AAAsIwAAFyeqY+7znYAAGkjQAAPPGSU5wAABUZBFxwAAHZmgAALAT+xtP45xCc2zwcAADwOl9LtKlrMXGNpzMJJwAAJ5OVs5rsfc7AEAACbDLJOYsnPCXHnYAgAAHNNQpzklx52AIAACbfQAANnGOk5gJ9YAAAZfH4A45OeKnM4y7AAAZ7qAAAR7UAADaDGuPtKlqAAA6TRjnMLNHAAAz8pJzniUzu4+wAAK6Wjk5xPU6jmsAADG1oAAC6PdEA4AACKGOccxnqedgCAABqe0AADcrtrOYCuPOwAOZzik5wAALAqjzRqSbYAACcg08c6pNo67UXjmbxz3Y5wAAFByVM5wAAP7ygAAClcuQD63Bruc7eOfnHMmTmpUzY0qsec92OfnHNqznK5zL3hwAADcM8k5wAACcMY05nq4+8AEAACzJoAAB15eUA3XwcAAAAUQ2LS1TPZ+bnYAgAAR0VAAAMCqAAAL30AABjaUambx5XiUaDxzgAAX4izUz7wAQAAISOgAAGQz/ZdDc5mic8mScAABCDM2OdhnPzjnv5z11x4HtYaBSpnPbznAAACEZfXG6QAgAABoZFJzM456Cc4AADRlANM7AufgXNILm7xzgAAY8jpJzEaZiVo3SAAvnM3znAAAoAHnY6qVsMC5qCcwhObvHOKzmeyTEjqwAAJcM8k5wAAGsM1C58Cc2ROcAAC/8SlOZ1aM9yraFzDC58Cc4AAGkGeKc1JOegNMT44YZtnC5xhc3eOcAAC1UedOZenOlS1bWjwi58Cc3eOcAABDyoAAHNHEmc2eSbz5W4znxFzki59mPZVOcV8M9znAAAw8aAAAJBgHTPOwBAAA0HL6LmqDT4c50xc8b4edgDJzmLFzS6ZiQQ4AADI/QAAJ2mgAARBUyJzCc5mxcxumePox0gBAAAVFbOLnXFz8c5mxc274Z4NOAAAWG0AADOer4ucAABgSoAAGNTLRc5IadzfWAAAg9UAAAvbhEueiXNVTn5DT6xm94AKEud8XOAABZ5UAABHcd3cfUNOJLnslzeS5ke487AEAABNqYAAHLIwAAEcMxs556fcYaZMEN0gAWZzkM53sc4AAGqGahczOOe7HOdjmZxzgAAA4Z5xz745wAAP9mBi5wGfafOcAACQ5qX4edgB9jnAAAtwwzjnQJzrS5mcc3+OcgnPNLmZxzFC5pWc1ZSf8Y0mTmW5z8y5xZc8suYiNODFV2xzM45wAAHsMvS58scwMuZvuM6CrAAA0AqAAAuuRkXPJGnDQK1y56Kk/P4cGKr7Tnexz3M5nmc3eOcAAB0fmbOYKNMPLm65za0555c7zObvHOAABDoztnO5UmVMz7wAQicwuOevHPyTnLxzCE5rBc5pmbpADgrm7xzP45y8c+2OcAABTDGROchXPQrmT/Dilq8Cc5eOdAnN3jmb5zMwhnFc3iucgXMp466QARK5oakyErpPFWAAAZCPxXPXzmCHjVK54Gc79OcAADFDLJObvHPtTnAAAYXJjUmXpTCnRzoVRMucgnOgTmwAjfK50Cc7CuffBPDCqNxzQ45oVc2FmfFXPzjmhVzmC56Sc0o8a0HWAAAbRUAADRqYAAAg7S6c5o8fCW0yRruZzCE50ac3eOeVXOAAARBlhnO0znaZzZE55Rc5iZqICMPGm6QAtM5wAAAYMRc5+Sc+2Oa6XMUznWFzMM5occwaudpnPRznAAAyQzOhrJldPcqmecz3OfnHP2rnHVzd453cc8OOdJnOkzmWFzKU5kmc9wuaxnOAABTuSMXPzjmVVz4E58Gc4AAA6GXsczwufinMyLm7xzUK5vsczOOcUnPDjnAAA8gw2rnnJzBq50WcwXvtET1bUn/hV/q5wNcw6ua6XMhrmdxzJM5/sc1jOfDXORrmYZzIs5ik08/PpHpN0gAZ5z8458Cc4AAG6GKac4F0brnPIznFJzSE5xpc6XOaupPQ8rK5zgAAeYV5xz4653sczYEe/nN3jmaxzQ45jGc0KaZHvUqtwyJz865/Z43cOqQ5VbrmwZzTS5vwc3SACwnOkTmEJzFE5gCcy9maJrUnrmcJzZE5lmuIiuYvXMVdHBiq3Y5wAAI0Mea51lXYAAD/nQAABTq845+uc2jOfRnNmmml1zK65jGcykEeVXMFrn0gj8Fps+c8MuY5DjzjmPxzgAAdP0xk9zsAQAAJGpgAADQZiZz5QRwYqofOfnHPtzngzTs4WhmAyGtqRXPtjnLxzgAAEYZaZzVM57sc6BOamXOKTmqZzgAAbiM0NzJcm50zUCufO6POwAPlzqZpukAECueAAAfLm7xz/a5wdcwGZrpACAABDhkAADTDIAAFOGMacyoTsAAAx2pyufCq3OwACVzjBSuX9QTObInPUbnVxzxtJ94AIAABCGcscwkubsnNLBGaFz9C5kRc9xuemnOdGmXaTQMawAAA2mrY5g1c4AAAuEwAANI6d45yBc8oua1zP2wGlpzik58jc+BOY+nM9mnnYAgAAAYZplz1S5hCc5cEbpAC0LnexzXm50c08CVvQAABbnuzNPhO94ANfOdKlpebm7xzKm5h6c3RubrV3drmrxzfa5xSc1SnsAAARtoAAG7lOlPfwuYKDM9yqVVzoeZukAIAAEAEwAAIfyCkW/Oc4AAFio6PM9oEcfx1RyZSZz845nec2ROcAAARDIAAGMGIcczPOcAAAWisVLQpnMpbm9FzIs5+rc4AAFiGUzc1TOdXHPcLnAAA+P+V5nyQjEG5vBc1BuaNkDWbmIFzNM5j1c56uapnOtjnYZzZa5nPM3+adHgPRSqRlzgAAe+VAAAvwHNjmiVzM25ubc16ucW3Owzm8UAP05imc1tOdXHOAAA5BnpnM95nhidzsAV+c4AAE6lZsc/XObEXMSLmHpz82547cytuYnzN//rOZzM450ac7wufnHPqLnzpzZE5wAAIyagAAdVNhZzS25lbcy1+UXzMTBrAAAXl7zjmZ5zIM5g9c3OOcO3OernodzmGur6kz02uvXPkTnUJzaO5z7c6Qyb//X/TnWVzeM5wAAO/K+O5qHc/paaakNuhHidzga5mCc1MuYQnMgznoVzRG5mcc8DOehXOAAB0s1J3OILmGtzzW51Gc4AAHdo11c+6ucZnOGgVftzo05/sc4AABpvWacwQucBnO07nAAAoYqAABO7TvHOAABoyLJnOUzm0dzK25/aQ2FaajkyAAA0TTM3OAABntTonOvbmnpzgAAAIYm1zgAAI9N0ZzKk55Fc8RuYpnMVTmkpzgAAbeNAAA8QzljmRZzgAALN8qVzws5obc6NuYAN0IDHuYtUcmAdc69OcAADnDJeObvHOAAAdBUAABG1o2uaxnNTLnmlzik5v9c4LueJnN67mKZzPc5+sc9tOehnMiznIAANYtQAAMr6DW5/rcwaucG3MjbmEtdMe55Sc3rubvHOoznAAAgMZLbmDVzgAAFg1AAAECqAzmsZzAe54Pc2HufD3PRznAAAWgxkTmGFzgAAMoZAAAbQyyTm6Fzd45lDc0OOaLXMlrmGZz8zJvcI9SKqDXN1rmZFzka5inc7DObMLOXhH/hVMi53hc1PubvHNSTm59zzhZiR1Q8ybOXPzjm9dzgAAI307xzM+51hc57uYZnN9bmBtzXu5kIs2pZqJTU1bmZ1zZE5wGcz9OeJ3MUznAAA1Cq0znoZzbq55scwaufq3OAAAxBkG3MMzn51zgAAITMyJzP05+cc49OZenN3jnhlzD25sic5DudhnMjbnpojTyBhUVTVufknN8bmZxzKa5+uc7wudxnOEzmN9zXLJ1oY4/tkAADgxoAACztGGc7DOfVA3oHmPpz2a5y8c00ubn3MMznAAAsHK5znmxze+5xsc1TOd/nPEzmY1zEB55sc6X8cJ12P7mX9zb+591c16uZW3PARas1z6W5k/c9nudz3Pn7nYDz6xZ8LfY6yaH+OQAAd9zq+55fc3wucknOe7nxDzelmrlA4v8c53OILnOlzgM55nQCVOapnPNjnqxz0M52Kc82OZd3N8HnOFzP456hc7BOcXnMzjmg9zl45wGc49ucQXOC7n21z3xZ9VA/dnq9tOczmmlzgu5j/c/XOYYPO/7mg7TabZukADOubvHOAAB+Y0AACmilQecAAAx+lTOcAABBDF/ucAAAAcnlOcAABSDIAADMo1scyPuYNXMJ2nlwN9c587c0lOau3MiznAAAjFGbbmYZzxM5licxtOZeXOAzmGAT54GyAAD4ecLtPNRG/Dz40RpA8ygeaCPOhHm6ZzR25qHcy5lX2XPTLmi5zME52w85AeaV3PdbnGZzjoxy5VW/Oae3MuZUqjzvdpxQE2KWcyg1mHmLDzVh54Pc6LubInOAABS41d3NUHnAAAWwwNHnAAAsYpA7nhxzWM56I83EeaSPMpHni1zpa599k/6MfzNVZrn1Fz725lo88tucNLMyvhrxz/K5tncwhOeJ3MOzn2lzf65qg84AAHlVd+cxTOYwXOAAAvG1bHMf7m69zDe57ec4AAFtLO8cyDucd3Mf7nv9zZE54vc2ROZe3MYznC1zBx5jHc7vaaAN3/snJxNM85rI81dueJnOwzmHpzWM5m486BObuPMPHmnjzGM5148+8ea+PM/Hma9z9e5rGc4CeeBPOgnnP9zX+5iE8zOOdj3NQnmR1zZe59Gc7CedH3OAcmSqd4lG7DczGmoCPMhHmBHTgAAS/c99zIjp94AIAACcGVscwKebQ5OC773gAgAAVUtAAAYYowXbBpzhVmhJc6FOYfQPzznGrt4K5pXfXcudSV3zzmwjzkR5oec2dOZZ3OKTn61zS25k1c2aubi3Nbprljzl45rzc9iclknOQTmJxzgAAJjTw9zLNq0Nc7DOf33O9rncVzd451hc8AAEAAAvZkZuaD30pbnWxzgAAFoYulzCnJ1AvTBWZPTX+GaZ5zO85rTk/4Zt3HNEHn99zZE5wAAH/aJM5yM8yxgedgD77nMnTFKhhdLb1ZsKrNCXqsJzoE5xtc8eOfnHOAAAgDPCnO8LnmxzxM5wAAE9mek5/Vc4AAGnNLGcwhOeoXOQTmYFzja5xU87U6Y6Kq5nnhxz9Z5xs8yfucAABHaauOf7HMcrnPdzjV2wAAEsM605vFALuOf1PN3jmh5zw45wAAN9ygAAeEN5xz1e5wAAAJGd45tzc3QucUnPtnmhxzCK51hcyTOfJnORHm5tzSm5hrk7V5oRXM3zmSZzd+5rGc6uefXPNQTnQJztM52Gc4DOfcfCdLm7xzgAAHqNBzza1m5LA3Zqs6XM3nmyjzUCRh888+eaHHM3zm2Vz7K5l889meZO5N3OmWJzYR5+cc+DOahXO9jm7xzuZ56Nc1jOeBnMvrmEFzn559x8E+eeHHMDnmbtz74JoovYVmtQvPGrnTVzUe56qc3lObvHOAAA2JUAAAKaTuebV3N0zmDzzsEJukAC8ubvHOAABITU9POlS0yJzm2qp8832ebsXNeLnAAAK9Z3jnAAAX2r4Hn9zzDM5kJ8Kxef7HMJzneFztF5hi8/uedpdNJ/rsLzgAAd1Tnzzja5wAAFeBgAARlcyJzYl5z08/xebUVQiXn4pzql50884DOeTP53jnZLzrY5oC81dlsAAB7ajkuaYvOJZafzzfZ5gi88RebIvOq7nqZzlF55V0+o+o8SM4XmTVzF552C8yweaxnPGQmrWAqF5occ+FOdpXNAXnLITofJ4TLQp6EsvP9jm/LzUk5zy87PBqpnNPzmsZz+y5rvc92Oc7PMwLmqZzXE5myEzZoYHg0nnniZzfl53cc4AAAh/li88+edwvPRXmTxzO45wAAJD/WM5yh9ZdAB/PM/HmKZz8U59y8/2OZM3MGrm/LzrC5vWs8euavPPDjmAjzlU5uC8xuecSvPDjnaLzKs5p8c1TOcAAC0UfgeaAvPLJH5Lz4S5+cc1mudy3Pe1mu3TLitTIAD5ea3PNsLnQ6zTl5oRDahedd3PVjnVdzVM5xK83eOcAACJRuHudbHNYznAAAj7YGrndxzd45qlc0LuczrPelHIAAq159a8+TOapnNSTn2jzoE5og84AAEDIwAAAS+d45+Tc4pubPdN11n7tVNW5wAAPpW225hvc33WfPy0/um8UjDDOwy3c09qWnPULmYFzd451p7SSkeae1kTmhrz5F5qmcxAebInNlnmdtzgAAcgMKZzv85l3c4zOex0OVHnu9zPe5mcc/OOaGvP0XnPTzOl5sq8wh6cGhPiM7mntqx5lNc/IuYUXMsnnDjzKHplbENvWfQ9Oll7YXd0E5xec4AAGWGETc8subR3OEemUTzF2567c/0efvrNySaRzzvY5vFACxOciPOAAADBINXOvXm7xz0R5wAAIg6rY5wAAIvxgAAUwZqxzQ4586c8PubhPN6CnQGz/HpiBs+8AGBnNtLmKZzgAALzdAAA+K7QHmGZzOx5vKc2puY03M63nR9z1gp2mY+aatpvN3jmNjzEi586cyTOeh3PKzGYZt7t5l6cxTOa/3O0zmC1zBq57hc78ebJPOYwmogd2MJ/qTTPObvHNCHm3VzGF5wmEwHus2t2kznoZzDW58sc4CeYpnMgnn09zq45vz0069rpACAAANaMAACkSoAAAVtOdc20udzvOCNmcHwFM5wAAIhGgAAUAZ5xzr057sc46uapnPMLnAAAh7FtrnKdz15+0/Q4vquNvMzjmyJzgAAItSSZzP05wAAKMGgAARg07xzT+5h6c2CeZpPOAAA9dMAAAcemROcAAByhoAAFnEhG88NedpnNQ7nIjzrY5/+c4AubO3PQTnaFzjx53sc7oedJPMN7nAAAg56wznAAAhgw/rmVpzUy5zo89BObvHOAAAcS0AABwUYzeYZnPzvbqbNUd5+o1deOZgXOj3nAAAUio5zG2UN4qG+cc6QarInPxrn5xzY95+9czOOeHHNLjmHbzhx53uY/OFuAPMK7mcmzZ5W4eY+8AEAABrcvOOYuXO0rmzpzO95+cc5XOYYnOAABto0AACh+sOOfwXPXznyLz9l59tc1vZpxFPvAAatzTe5mw83ceZZ3N3Hn1Dzrq5+I8+WOaxnPzzmFdzgM5/ncw4ecZnOAABpBMAABtqqLuZnHO8LnIjzXD53o8/NuZW3O7NnTyN9D5ms87ZuZVFPk+nWtMsj5jlc/I+cubMis7IdVZD5+h8xTOZRvPNjnmtzQu5lbc3Jkc+bPGLnAAAGFEchw7xzZD5qvcxcubInMjLnGbzgAALH/wxTLCxpHlco+fZXONrmd7zgM5+Bc10ud4XOvjnAAAtaZtrnVxzFM56Pc3Seao3MUnm1rzdl5/i884+eHHORHmMHzfG5m8c3fucAACO+oAAH/0wGc82OYLXNYznAAAqPpJTnXdzSU5i+cxSeapXNf7nyZzlD5kW81nHrTZ32hbszE845zR85BOesPNkTm5FzUa5tDcxn6fLWODFVe7zirZr5nWMYeZXPkbm/1zGrZ52AA/uYBnN3jmwjzvC5qFc5QeaSnPEznf1z865k/cx1kZxPX1zmkJzwG58G/Yyaq23O7bnyVzCFWuUteIua/HOAAAgHUHnNErmQJz265hCreaao2fPDjmtnzp2RysgxIUbCpMIOJPBUgAAe4Zplz3Y51Y892OaAPNkHmYTzVD5g58+aav2fMZImVlju1O16TZAAH3XOszmj7zzR5hbc0tueLbMPs7EZNiq5xsc3QuYmXPQ3nRFzxu5h/0y1ef5XPP+mjrz2G58HI7BOf5XPdjnZdz845mF8zuOaxnPxHn6tzgAAZwZErz8453a8yO2bpACLLm6FzS25+U8/ZVsjLXOwBKzzc7Z8bDQhOc7HNCbmYnz+m5mp3Z5Kfc3NrnnczzeHOxK81qYYaXPMrnZJzoyJlmBkqeqdPMunmb5zKgAcFc8AAEGnPAAA9Jz17Z6g84AAHdFWvc3/ecBnOkzmL7z8U50qU+8AEAAAbDIpOegnOAABvhn2XPCbmi5zyW5n9s+8AE/PP/tnopVg05u8c4AAAVfWvcySedjMPvAB9TzPUp52AJ0uZwnNB7m5xzzS5njcxmYcdk3/nmOVzAr5nsc72OcZXMsrncOzgxVeq8zSudYXNuvm+xzDZh5V89BOeM52ULnbOdouG6Vc69eYpnOAAA55VpnPEznwTzPM57pcxx2eiM27jnXrzZE5xN80GeexRPvBanTzq+5oVc8AACFXMirnFzD70p94AK7eZ7nNGLmxJzsnZhIM87AFdvPhznk5zYk59Ts4PJozsMx3n0tzenZjOw5NeeVXMmdmp9zTc5yzsy1QcgXMELnu3z+XO6oHUVzsAABnDDOOZ73MDvnMqDqRm3EHaO+fHfN7rGZFzA75oLs+8ABkXPzjnAAANVE5TndQd57sbmc3S+fXWOIP74jz385z88zO+ZnHMLvnp8jnVq3B8/O+dCb3Lvn+5zBq5hxc3eOcAABgLhguZJnMYnnV3z67524MxtQcSI2AAB5hmhXOKTnlAAc55tQAAzObiPPc3mRNz845jE82ROaK3OFHmm1zWa5m+cxJebc7OwhFyz1QtW+cc4e+YbnMqABf3zDM5oWrVTOegnMTLnqlz1h5kmc4AAGy0sic6BOcXnMprmppzJM5rB84AAFP3Zrc/EeYLXNPvnIjz845wbc7qDsuXPzjmu9zgAAcoY6FzW75z88xg+a3fNITnXTzoE55D87OedzlPQ87AW9gAAUf1AAAEBmAABQDMAAB3brqDrYPPqga7xzwR5wAANlKjN517s2QaDga3xrmyJzk954mc1mucAAALxoAAC/FRm80WGZVXPLvnk1zaa58Ccw57owfMXLmKZz285vXc2ROf7nN6Ln43zNJ5x98w9Obo/Oo9m9K1Pjmlic4AAFwlMic1mub6vNUznAAA/kalbmSZzgn5p681jeZxvMMznAAAhNZ3jn4jz4i51I80WGcAAA1DPJOfrPNQrmnn9RW5kmczRObInNYznX91Rc55pc13ufWnMUznAvzqN5nG8wE+ZE/NUznAZz2N5yR8+WiYTDOL6qdPz5F5tO81jOZkXMUznQvz845oxc1TOZVXOFHnyZzZE58+c7Oec93O2PmiwznvO2hc32ucvHPdjnEbDUcmSyc7TOfLHOAAAGqKiPOkXmUnzNn54mc/2OYNXP5Pn+xzTn5xV/XZWsAAAgKjIuYk/MN7mlpzTK5xSc7JOZxXMwLngPzD05sic4AABuneS80AuZonN3jny9zlk5wL88F+ZFnNgPmZFzU+55/c6/ufpnPLhnnX9dIAZVc9WeZ0vOK3mUnz/Y5yI80lAEsnMTXmdNz4E5iT84aedgfOV9mHydgAAC5tZzzY55ncc0QeYk/PzjmmLzDe51cc1TObInMqrngAAgAAVKNAAA/F7qrn5ZzCs5hPczR+Zu/OMzmLdzAP5rhcypucx/N3jnvTzJM5uvcxdOaxnOr7m1jzmP51+87v2YQjMtSbfNzgP5u8c0VuegPOAYnB/jRdh2LYzrAmcnOermsZz2N5imc/2Oa/3OAAAVBkAABqDPo+bPfOA/nAZzgH5om8yB+Z0/Md3nltzgAANqdAAAgzbunnW7z/F5lm1bK+flfOlbGn0jGqJys087ACzXN6bnuIzJ05ncc0tubkPOA/neFz/C5hAc1KUbgxPvABOHz8u5pncwhOaYfMc7mudzFM5wAAL2mrD59h8yLub+3MzjmKZzCu55Xc6rucBnPq7mnYjfUSOdc8zudZ3Ou/nudzg954mc8C+ZgXPGPnAAA0XImtbhfdjJqgi89R/veACvXn3SjGf5l6845GfeACAAANrJ2nNSYm6QAP05rlTbuOfVXM+Rmn1zvY5yw8ymuYDa2AABnKMDnOAABHX0AAAQUWPeY0HPvABa9zTf58pg6NOZTXPB7mYozzsADc86pOc0/1JRnAAAlEqDzmaZzH+57v873+a8xNw1rAAAonq9MGcoz2Ox3vbUfuaFnMb3n59zng5jScwaedQnNW3mj1z7wAHHc2eudUnPRYmuyjI9apqM/gOB1gQw3mio13h5vf8+euagfOr/mEhzX+pH5zUXDpSHMCeLoTzzJ51f83qqbrh2pGb92t7z5u580tufbh3njmrxzt45zco9huZ3KNCXqVozorSM/81OeaHHOAAANZRiPPzjnXrzIE5pccx5ebUVRE/nwVznr52Sc2ROaXHNAsHfu9G/umBc5YedujOAVG4OtgAAbYZTnz8k5ul856qedgC4AWZxz0w5igC3gBd/KOLznIJzCE5pYc3SAD/HO4rmgYzS3+ygC9BOZXU3kdaRpz8k5wAAFUM9AF3scxsObpABQrnmVz/p5+jrbN/rXPNUAW9sT7wAV6c0XOcvHNHDmDnV7Y5plc3mufKcNPqbSFzH05y4c4b+fknNdLn8YzwgF4Gc1MudIqPOwB+ALl45lNc5KwY6cNvnrcpz12J94AJQBZpjMdqnrALeAFxmM/QBcYAv9qnM61LAFnj8xzGfsAsILnuYzzsASFc/wBamnN8VHja1IgFplc2IBY72PyubJALCI5rp83IBa2cPQuqlALKgF2So+oBfkAtT7Gl3z2gFpSo+73vknP6AWqALqsZ4wC6YBY1jPOwAGFzUL5qkczdRpsAub7GnALDI5jNg8wBdYAsfqmOALVlRhHEz4Bb4AsCAWbYzMv+oIC2IBe5HPvABwgLLlR2QC/IBcFHPwrnlALik57yo7BqYSAvIuGIg9yQFnQCwHGe7YPpAWDALIcZ7IC4qOZAOP91qdRdvfe40cyPWulXPE7nAZzBN52k87HuYxnN+Pnodzrv+qXE+8AEAADHcs7ubInPZYb9VzlF55Q880HvnXNYzmhrzWM5w+c/K4Z2gA+/7yqjDS5lHc72OcuAv4HmsZzgAAXQZ5xzaD5ruM4sBeilVubn5JzRc5mBc9QubrXOAABCHygAtkTmVtzEY5ic81uOYW3MaznqzzD057/c4AAEB/5ao264f2jV2vmWlzU05/sc8G+dXjN1JQh22GBMWRlVuweY1Pp4nWNT+7B4+rYAAFs8VAAIAAFg8Osc3QPsvjMVgH0AA5IFikC+SwCDoDn8sRwt1eJ0ds7CCm+2D7jnkb1tCSOfcG4eGcACAABjIClQzVK5yyeZ45j23kIyb7QD8gXbKssqgAiQHFJH5Au7i6Sumfyp0Oja0AEFAs/Em/Udtz6lUC5AAEFAtCK61aV0CAIR9bZqdDR3RSrlQLKacLUC8euB1AtISAxQYmCZ2p9RqBZNAuAuxi+W5oFxiACwAApAs1OmqJzIHmwh8BfAE1Av/1bwIAzE5zqmNHbrxFP31Qd4N8WptdgB6BYZfVs3zexDABJ7u9e6BZNAscgBFqgkJxtO3ld+rMF2ytqjQLwtu/kCwV+tDd0No7IKNGAABkCw4ABTAsPqoedNvcTUjBTEVRs4NsSI+cdb7h7H9fZLXsloLUY3OD35GvoA/D2ZQQDxBIURAcumuqAPyBdEPBv7qEYDykPRazdwSf85V1QBywLQRBpU40n+uyAAzmaZAAFIF8//aYmdq83tABLiNEKoYcC3Y+usTM9PCZ2gnhoTKcxfeopAuoYHBMtPrdVrTAUeD6hHV/xyWAToF13U8GcZ5j15hNUqV7DGwWzoyIAvqNqUBkQAsy2FM4zaQ2L5aWFbLiN0E5S1UE4SdmXEcDk2PDkaqxfU5Ba2ZID+En5fV8Xmv69ZZQBe1OqMbTfVi+pycC++BeEXTQNHXcJfIFrJM6XaYDLPZABsAActUWwCOiNuy0BLJj9zlfQAKCC6sQHrQgqAQa3YzOq7LQFvqDBIOn/q1uD+gNBsvU+6fU8NJ/qiQA/IF2BcBC0gYi1vh7TuDdRJoBQ9CgHsABipV1WAd8APcLePevvXDfoAa+ANPGgiQOfy0ZAsajaqnWHIFk5OEwybrAtSKbxKRPRJkN9cisFogtOEBG/DbKgRbnVRBfFK0wOS0ENxBW77ACmBbh00JyJJwoA00liC0pBc/MWUgWvGj4s5k3U2HZvk5U5nBNG2Spgn+k8rqeVnNrgWcfGqAAYiC4tzu2ADpLgUfNlq7TZcNJnqwDWL6nI89bPBx6gIAAGS8JyC8CSZIDWWq6CgNn3hygNeCTHBuGn/rLdTIv6uRxv9+tJAsYqGuwLPYFtfgK7OY402cCAsZN0KZ7jos1l1YA3IkB4P1GhJ9Xgw1AHYuY/AGz1N4UF0Zo/5puyINUgXpZtQ1Wx9gH/aYWaNrrj2ADE3h9KCwaHuCgvYcnZvDiAeybzT+BdCj0vfgCAATkF2Pg4ymcy7U+QWXAAKYFneDZt4dfCNQbgJLazEFk5AM3Ocyg2Wrst9QMYAOsC+RIAFTP+gGnVweWobriJ87AhNPeABJQLTnAR23bKBZHnO4QXiwL47J49cLNBelAtp4a0QAcoF6q47BPrCVprQXVILC0FyHle6SZbA1HOAUILyqZxG4WMGrv8Njhakh+4DAWwCLi0ZPnNh3rAAA2kAzUoXidV7ADkQlPqbB8OlU6UONwq2GMk3SAD21DJF7q4U/su+GztIjmDl1d6ar3YBa4UOTUhqhAXPhsbdILdEFkYeUmpCP1N/YaL/wk7izj7iKBfx8PVGa4wL0KAXVeJQADWFTHrhMILUdGrOXQ0JqegtYwA3PNYMeqlbNqkECguMgXeQLZhmqhcyD7toSQ2gWXlmGEAYcC0IJuANO6tGKFasrAO+DQLEAFFpMwWBFzZu6hOmOB3ot/pCwRGYLjgAGtM1cRqe5RphmhYLp0F+xk70Zrw7NI6I7iNBEgUiC+zHvwAAbgXu0zlAADcCxS6b4ICdRDDFzbT4WSANZdwpdM4SAl5d46ZpWC7rBehQC3qajyAOUFz245VyvXAvGwWbAA4XscXzefLr/l300BsgA+UF+V2J05CU1CY5mPFzdFJx2C96kk8gvOsByWA8HJi+ABnceIpOHpnvtAMi4UCeHQIHZHKaPrL0zj0qr8AgzGWcABUtM8QImj6pu40kP2BAAPR7/YLuemr9MwEHqr00hZnZcgUzMW6fcrGoTpgCi1Jwo1Up/kCzegekpP3/mtAt8ClDSgL7YDaa02CoOBAjIFvVALyQcnCgoQXvEzZNWpcC2MubXM0UwWhH1hUAVNAIyBZJp03um+4L7YF/jzRRAaz4PkwWcnAlMF5EMT3Babgv9wW/YL/oFnZc0n+tHdbqu6yWzl7W2I0wpqa5gttGnsqYq55cW9fTPtRFZrwXpQLvGZ75c8fVpycAH5xFILiEFh34IPerSpOeamBbTEEF0aA9BBbUgOoLb4FKlAAQAAKR4DgADVgNuBZvo2Hx6CjwNzJt+C6BPFpmwFtafjNJ4qwAAEl4OSccPA/yBc1gsGbn54LhIAbYAKCIBAQtgIWxuNCdMUyC5rBaGNOZ47nYAQCFyPk/WBY7AtzBa5W2ZkFyPk+JYycgtqtaB4L7CYzJ1HZGbmNOdCrvLA+umwAANp4YARh+C6gAEfguvCGyELMkAchCwBgdwT1bGmH4znAgZ+C1U632NOxZmczgUggfkC6CIEWpMqz5OhVzQAQAAOeAQiFl4DSZaYDS11gXlVAKCAK5gFxLXuNPZZmPeNRAAHXneMXpdi0iQWS9TJNO2LU8VmcqgOvJqvwCAX65RC9NBdMgtSgXi/AJkF4iC1xBdWT0senPQAjIFsrPXzQc2gtXsA3YLqiu3eCy3+vlgtwjix1I3aTc/k1cmwRoA6zJKKQ/WZytc60Op0QsvAa+QL+iFvaC56AGMQtMIXYQU+8iTYQI6Beuz0o9m3E9lW5rZfcYrQNQ0YZaO3dFv9IJCzKBc2gtDrnz0NdcF1wAPloCW410maFRVZInSkC3BbuTj42BGyELEmGkvPcdme9EOrO7MkLJoFsU0zdAcqQsFIWTQL0pp4tPUmBeDAumgW7QLUdGuJGfGIdITXNIWio19MFs0C+revKjXAIVfszspmkpC9T7qYgvZIWhH1nups00yMhehQDSI4SR1gi88Dc7i8Z9AvQIW74AoCF68C1/AFJAukgWGWNWP6sElicZr9NNQIb8w98qiVGCzhuZ1V0hraaiAzYFuQDXiKa4z2xmnzTT8kFpjc/yadcgusbn3FMCSF63TWUxsZ6LcAAtQLvOZiLNCwAC2gsfdHa0N2wATkC1JubpACoIXvoLhZp+FntWEeU3NrsA+ELWm5uhwxJhr7EYDWBXkLnMFoWCyz5pZjWZL6lHwsYAKBC60ya0QIXps149Ewga9wAmrqsJ3oRawfAgXpmwAGFBc04PgSGC4LbBuulsw4kZNzNHx6FcgxfLQLc7ShdFC2eR6HgjysarBC44hf5FqWwBa1dgROsFC2W4VLeNkFhKQLdKeuMC4HmesVrAoW8tzBopjdzbL0ePq1SuE+3jVJp0cjdJBd4guSysCkLVTrBEgCkhY2gumQW3MjxAAR+C91xDHgu/mmq8z9pp2BWjYAA1YC44B+QL7UB9FC6xBb1QCrIWhoL6yFzZC0fSaJpNSSbc+TRqFk1C7AuDNQuqQWEELayF1AABshelT18wXAqTgoFwzhXWAHKgu3bmKLT0j6w1C+dJCdQvMBm5YLykFlO0xhAFCgD8gWjk9325hfU9GyfIACMgXdV45LAZsC163Dm82hgXjNEx64RSC7WEnL6MM6K+ttVWOkNC8ahfagPsQWi4LBiFuaC6khdMguapw8ZYO+ZlizbMuJOTbIkBzkLLSF20C2MGpAq1sWb4EDwaFvsRsWhbgt3fbBj/1EltW1wMfyYAg11gWoILKoZqnc2wycelUflcpFNqiFzAACqBa3sPksAB0LxgwACDa75NAnjJpxNQANsFj009Ihd0ADNgXeILwkFm90+WtjQQ05OBXJym4FlMClxBYj5Poqgs0L4oaSUQCI7vxvX2AB+QL1UeiAECy4fsZMZhHGwjCTJ2WC5OFBFViegBiILeoMExC8QVoNURnwAF+zXGe3LRGBFqcgDSIX4mzbmRrdC4gAEpgspXhLDTyIYykC4VaZoLOEPhH4L+1wIuCyahb9K00QXPTAANQU1cDQe14QveynjTEGgAVRC1qhexCYk4G7LTT3moHdEzeu+pCSemCdAmqF7VC3Bha9lU+sB49TJqFqDC8euBEQsFIXsMLQGF0OTXaijJMBqENA8kcd68Ss3Y9jrAtkSByIIls4e9cNwAGHAvjDBx9zygx6kVfWhcEgu827xoLf2odr9V3eCkQv0wXBYLSaFwe9ReEdks09yrpMLzQp2TC3pBf103mQW9ELcWBhmC6phajo2FxaXwjhD4eVCwuLtoST0EBt0LpMBV2VNUhV1E06wJlMLu8F9jC3hhY1QtaoWKYLAQxruLVfubz5UjgcPr1G6FpQA/clugQu4cVizwT0FvZcA6wBRAB/0bHbdpEFtzI1M4AIIDIgBKYLjIgMjPfLBcCpPUqI2ILdcFvIs8Jvq5w1UQWqIzDaFrz9cJBbkwuNQB2ULPUF3wKtonr6ADGCKUP1oOunA83XxslYA1mbE0L60F7LCymhbAS014AEw4yWwiLCyoVq92ZW2HywL4P61RXaZBdBk0Tmwv0LQiu/9tsqgGYT0joWVUAQiq/NnYGChlzPkPgLMLxBWzJC+9eGcwveynAAARAQQiB/3N1GFjzC48MaMF3aQGzwtjIF6Q891Bb0Qs1xaOYLRmFpmC4cWcX+PmAHaY9SkFhdC9obTTAgVqNeILIWF80FM5Gj7gshZBcn57WF7gAETBZeJ15HhpELs+4XEY8FEcLZN/Fm6oLj5kclgMVhazQvToXhQL2mF0Es71vodQuhoXkbd1GiIuC+VheBA0PQXKAAjIF6QLRq3DGcBXqqKQLRih5EAJM0Jhk0YU76xNN/IcZC6FAECgvKoByoLqaBxSC0Hs3xfWXaa8wmZ8QZMkOUeY1GPVHmE9dtR5yHC92hajAAw4WysLycfHqI7P9wIACMgWkOVtEFwLC1RIENQAxoXW09Ax59sTUhyujQu9YWa09IpZ70Yz2Jq0wtwW65HG0WR9L9XiBEUQvYlagEh7nh+jC/DhtTQu92Q6wAsKFt9C47btmXmE2Gi0lEIABHCwUheRwsfvg9nA5EgdHCygQZXtNalmRy1thGZrCwjQDQXBefr5sLSKFq489VhdywvDNNSkLOCF++jQtjuHQsRYWEP1964ZaC4mLrQs0nEGhJAAktV2lNdhe6wAM06pNgzyASmC0DhdIwurZauMLBoe5Kk7dhflgDuYWx4LWaF4s8KnQEfgvjxjKYLIb67cTVlAHYwuLYXqKtEZZ6MYxTvoE8XS4X6IL7uF+9cJ7hchLje4WEbTwmFmeC0+6faA2qoWQkLAWF6Z7AzTrMlhBQXPCVbZZCLC0nhcjwvYABo8L4yF2PC63kgowshpaeILrf4EL8CnhdYwtCK6pnALAATPC+IkGzwtboa6PWytlGz/gXhbBE2cxGngT9qqjCC+mQAgZMKiq8SgLIgcrCwI6YTpgtca6qdPkF/kC+QhfSACjlmwla8HJk7mDBdpfAu3gXboLc5q8VTIQhcRBMdFU2UZpkFxq7XVADfgtK76d4LTuF7WI6g+BEQsvAaHsArEF7wAHjBekQvfi0JuTJkAB6C5xIGMQtmOnBdDhcFvuCzRZ2xOSxtAVpdl52e/C/5WrP0awosaMLTN67AAJahe2g3WYWdMLdEF3OLbMFvXGP8oXzYLMK6qQTg7KgQw2q8bHbdkQ4YyA30AAs4AlwXZKDoTpncY3HEf8M3nQWvnAZaFpvCwdBaowN4F6msdbBF/4LA0Ae3QuqIXCCLpgWkCTXdExNQtfOB0zzD4xo0EzZyaYL2n4NzQLieFsfC8P2UiQsEAByoLZaFsogJBhb99O2VYTQL8mB56C0NBfrQiDwXWzzSf6kojZ80kQfVaEXD1AUlOp+C9/+CtoDZAB/kLAqFrp08ohBtA36rx+YxoQiApC3uAEFAuaIAGad30AZQi9/BYkgsb8Ar2AZ3gIuC+3/rNQ1oZ6GMLkGFsOC74ICoIu4wWt8LHEx2enSURsRCnSgXkcLJKGqtCxQ+QRIA5OB8JDM3i5vMK3kgUIspXgnILj8WymC5/hdfPOgJG5CL+zWhk3TYhagSOmIXbsL36AfXTQlhcQAB4IWOuyx3JgG7Xc6eKIsegWNIlbRASDC3lKcliae+nZVAyRFvJuH2gDSIt+GASiLMtOmxC30Rf90MZEXlCzoSFjwizYRa4gvmwX/JjBP6ooDYjhduwtaoXlxTRuFxAAPyBdF4C+wWowAGyF79AEXBf6ItIxbYXTonh+Yi0qhZSvBLEWBYgSqFhGgGZBbgt1bEWJV42QAXYizN4pTN1oIb0WNTq4N2Cz0ACRwsQshskIBpu2sg1sRYKQs9arqtEkwoFaC/8GkGo2t/gguTZJpp2C+OAcoY0i8noeVDfjAggAsRbHwufrFXiLikFg/OESADlPigTxNiLpIF7YizqOF9u1qKoNkLKIAEO7RURdhItR4Wr4LIJF72CwVBYo0NzEXoSLRxF7IACcRb04CvEXBQLBQG03ZJcRbRIvXEXQazyNuk5RoxGfeL3SQmKJNC0x81017Lt6Itj9lRiL3wEdmC3iRYZp29oWjcLGSIsIi+aAFTcYaEWjRgdNZo+TLnyeyIuQQWC0DL1ACkC2K+irQtmEXlUA8pF4s8DQRcgwv+um6JNYMGvxC2iEAAgsTEXbsLuRFs+IIyBeUADYkXC7s62WoUizYRaFs2UwXyoLkD2mxCxaRaTdPWkXphAkSF5KMJOBdFEAeahcULyUYZq892oBKI0ukXTaAfeFwpC2TABVItmQWSiNGmek0Cy6RYZQkHWj4SLIwAIDC2EAEBwvsAHlkjsNQOoizRphO41IoX88L1FWzt0+DmtPwbHsBBQLswAbVjUzeo1IsRIX8iLzoFlSU6B6sAAA2eOSBdmABg5aXSLhBF5NC+ZaZycBkKaTCLN6Fu/PdVLAKQuXem1SLF15pR8Hk3E0Q0BkWHfg/zARkC+fyz5Ask4G5ML8WIc3C7gRdjANcEnrtD315xStbiNjQ9OyM7GBTZeFr+AJ3Bbe729FNj2tkkmtRnQQAE4IvDEXzpIovAW7C94OdOIuE4WbAAxOFlVI8TuuYi6OEXwdEhuFpjC8WeDDv5fwBGQLHZIUkC0ohZHIsk07FNQBAAB6C+VFpAbOKSbLUji+qgnQE6BZ/+pwW7AbAFIF1HXdeRadvOGCnsDV4aF11C82Ibh02uMHUcLZuFo8vT7ed8jX0YX/hyIWZpJdqpBfA73BYXqlcDxF5h3TRJBmI2gUXDPTOJ68yAN+gF7gurQXDEL80FzaCyLMbD0MrIaZsLzWFuQACnaYkgtn4XM8LSkFo8gFlAArvPmzH0KjQFF/G9frprSADw0BybsbFFs/Q9D6bogtu4XRkLr7u6jRLPNAGsD8gWZGz1/6zPCymuBUIvmAbE8LC2OxLC/froej3wAAUwL9WF0iCy5hZAwukdmGBkwFFgPCyhRZIgvKUNNKLdqKI8gF1hZrwBCPr6oL4DATpBiO3qxXAcYWNAAiz7cIgLxBfRwsuSRGQL7Xp/qTZQRdYguvwWDXoU8Ft3cDUKZP0N8V6BKLquFyVQOrhaQADokA8QI8yR1Si05wHcQsJv0xcA2iep7zRgACbQunoXGei9IF1wi/+uHFQ1Leni4THWhh9C9XheUS3KUNkHzZRB7b08k0UOItMYWXuKqAAB6C5kAHRwuMgWNKAGgGk0CzlRYRkO4YWQMLtK4b4jS6RbTtb64WdaOA2ieps+OphZEA5OA5T4DMZWsJNRWdQwttGm3OA45wRRC9c5DkC1XYXl0LnTkV3yd0g23QsQtJr0LkEF9IAIKBaYwt99kIVQQeG8yi05BfAYDWABZlxZlFvki0ehdNwtVoXcOKzah0eDXO4Zfgvgd6iAAFXG7Q+M3JvUgsQLGZRT9Rqt9EBVxtWIsQngjmzuUmwAACR42BI7/8ANRdsAhqPm/iDLYGj6i8xRY/IudRDQJ48PchmnWwBgvz02QG4LdvrZwx8/Kzt59NLgWYELx8MDdC4lRaqos6YacdGDNOiDCzeRYIID/UWEQgFIFxX04oYaQwvIoA+gAv1F1v8LZRekQvbEafGt564dDGWrklMwmtkX9ZApEaCkizEINryJEgBx4Li+FsOC1RBcSsivRa48Lw+F6wAAAhe0URYAJ10L2ieg6i06uEfgu08nRwNajgY+GGjhYRS0tkWFULl6F6qPc3yaDwuwgoJuTGNF+GLcoBqi1YcCBY0LpuF0w9DH6c4N10wWpUMv1F7ErW9hbgOSvQXxIAE2F4XlfU+aKDMcUXkAAwFF5p8+TXuVbMzkaGILdeFx0C9XEU6fM20WJMNYeF64i7VRcYguA4XxkLlwgMLC9TRclEDFUXCQgja4GEi4jhdTQBYin4yDrfpkLIBXhY9ossQXO/TWWFt1C1ahY9QubIWe/TGSFpVCw6BewIsA0X8aLSzgdWzZ0sdb9OloXUsLFqF2BCwRKdDbPh0WDUNVEFzMi8qydI7OR4Az4N2JWpmiwiYZn9NJtnbWDdcF1Ns4amrLwtqQXGQLJoFy9nWDRdJLh/Png69iMmwAACmAqAARhC/7QDoEB7UWfkL2MmqIjc/6esiaZobGyL0L4Ja8+Q+EGgsokXu4LB5OvEgI2Ge+pQS0Wx8L0gAYLoAzRe2g0GoiPkLJL5smTbfhdfVnZARb1Nhbm68g13psHgvmN68WtHSJ+ds9j+qvdi/KAPJTDt+qIjf4RefY3f/gbIDa9G/yU12RY9v2IWrLV2eCF3wzUQGZJWPvABgULAhF/Ai92iwf83YUq34Lhb7dc3AfRdGJmEIXr2z3BadwABSBaCwut/qk2TcNF3hC64uA4DOAAAYPAtBjfYBRYLJEgCSi3LkbSQuX171ZNNDm7ywEhhYNxwU6MG+G1xFzvZK+Ba94Dmvmawe19EK183QRoSkDLhbrwLBX66YVMh2bn4Owd7aiLwCF7sAEeQG/osSIXHQLstKb189yBfxA2DgWwiL24m70i9hSp4Yv4IWtwLAjFgNrW6QY+JNHPbURW3yFm9A9vfoNNPyQWjSLY+Fy7spTBe+2DPkXfgzCZppFE9JBrkgu4cV6YLeMF3js9yuZtosMIXDBEgpF4ZputpoBD0mMX6UTxb5sUC8ZAbvgDQUXtqLGsFjAALslP1gs/36q3zSj4LUi+HgZcYsmwXsoLIbAW2C+K7tkb3fNaSCLKqFsii5WhblAsN5Gi2dPagHhC9AhcdwvGYWTOzQMFpSC4phZ3AucynQYLXUFoILSRtlBoqJUH4uzV7sV1C8NRc3AuwWGCH97nZ9tYykxZ1wtFMXJwoPnZvoM/kxayYuIoWkmL4sp+Dk/rluiNO7wXdQdCdMZEMe+hb0AAxdnhJNjNWipi1WhbTAgtMW9UAVTFpbC1mRfWDNuOF6mLR2FhhRKMxbBE2hN7XvxYoMAWCwtheXwvUVb1GLKV4ImC2iAEqot4gQ5aLvzFPcrZogGwADjnBfgAQGFx8C1+sc6gtDMX9mLe4AYpi3W7u2otogBjSgBX6zlIKsxe//BS0XaaLoQAPBCzw2CRwvpkXjMLVhF5Yvfe3o2YuEhBsgIjPRRLzf27okrUVMXGeiVTFmoAKO7s4kA3MXpH6tgADQANaRfQAAmkXkSAIWprz9Zr2f3Iu50WkCDYmpnoM+0xdTotasAaqL8xMR/hDMxa6gtVoXce6BSF1yAMiQGqVx3MX+Pz+v5wFvTDBby1DnibA3dIWQcYi9QqslYCxoWXxa3Z6jmg3A1uay7McGVMLTMF0ui1kRdHwsM07QCglkWosM44ULFXhRxGxdDizFn/C+WGZ0ItkvcLiApuFyDC0YoaeIOHoWMPdqWFj9C98hdFoua9nVQzLn54Jzd/hc+YveABH4LNhAURC4oRb0gtdbA131iZF5wACaxaekOBUXFEL3yFjXCy0hbbsPVwppNT3Sm/vNV4eluwtuSb1IL/7m+HuePBcgwtgmn1K9LpF2vIgdIjnwugEWpi9KV4JUiw4AGeIugtaR31nCWMfskwCr0mgmUXHJa21Fnng9Ihb0gtLEXEk95X5nxzSBIDgt3dEmbyLO2QzeixURcSYtMwWd0LxliHhC6BPBZtXqidEaA56h83s0N+edgCzUXN0LzYFyYi7uhYWkP7oXXjTrEgcZnoY3v3IuKEWrEk5zFjNQ04QH11ikWF5FTXG2BlIGahrSYuOsBWmLSKF8LCzdhdb/ChAAHoLuQesGC+obQEwvTPZjUj8pF4Eiw27FywshvraIL/FQUjBagIHFQDKIW4aLpWF0di58xdDs21ayXvzjaJ6cOFRGagcA2sWQqLU1Rob3SVeCvvWtsWhoLVC8gJCxKxYPYvFkXac55sF4N/eueril3HQ48UA/8pvuC8OxdHIt6QXhCL2QAOiC+ORZDa0q0X/4Us3TGwgN0Sbu83w2cJ2LrTJgki/e3scU1TwW/2LmiAQmrKGRGwougkXAoLoUAd5i9yxarkPEQWEOLiD6lCi27aY9SJ79mGnzq8Fsdi0oAcg4sSoX5wtL4FkNsIflBSWAF4XGIA5/ZlUjT32Bw4vYEplmLyrJiji/UpubkjT+V1QAJycCFhEVRduwtOUWYSLTkFpeVGFBqsQs/9nD39Bv5+JC9CgESQsIoWpmLzMFvv49IwbZgsFVHkOLSbFsnCyJFsOwuscWYBdkpRqpzeNjrVYs1JJgMLdqKC7A5dhdX00poWDf+OJFyaiziRaYADboWXbhR6F68CymBRmkBCIWM8gDNOvyJGVGaLDPWQX29ALRF+dC2NRaXQsWcWHAAy6F9gc8Tpg+VNcDndddaxF/ui9ZGbRc2djDQILdkZrjbDWDxfIu5/nmsZfaAa/C661oMkSkQWuVNNLFzj7kp5vSYN1QBH4LjbGgNrW3+abAvRJ7ymDaTQQ6Nn3+fPQ3W/gUrwm0Fhmi4lGeaYNFmnqgAM+FtJjaVxen/PcdEawLsiF7KMwH7q1J0ZcWqf1TmFyVi0FibBo05gXJKdqiFqri0eXqLT3fDqMuL1oFoUC30hbqjPdd7GdjY7WobixNxe1AttIW9QLnUZ2Rw0kOfVVOBC7Z6L4yFkHCwxBcF2OLlHhdjGXF4Siw9evyHNAZo//zEoFyJi2qhZ+Qv2qqg9m0RF3v3YV/srU0/d7/HDz5Rwh8Cahf5AuDUagnDPkFulUO1BdhYNNgXViLg1G96My9xcGo2/lHmsuJlpn5C3Nie7vXU4KGWD4api+9Q1BafgBcAXRv94JMUHI5DxamdV496YYzwP67wc9IBaAD3HDnDsTFTh4Hi1EQB+QCx7Gtn1rxWstU51TCagDEQX7hz3YFwKWmMGrMAtUVHu71W+oEGuFYBZ+4uvcX/1w3w5xni4NRsZjPA8XLKAxEFlwC+DxaJgL/rgPALzAeqH/W0EcR4sBAWm3Vw1Gq78FIpo2cNKubfsTNGm2QPbjxdUzj3Uq1qNigerg2KkBeNrUk8XtyLtP+4kcxTxf3wDugXcgLIqurZvqf+opF2s8X/1wm+xjni+rxZ32Oe5GaM9H6pr7ADDxeOgDfqmEeLUD6/9cP+qZtc2OxnxeLjvFl2M3VerFF0wamQg9cvFn5AAhqeV4tjAXAqj2xgYiCyHGa14v4vM3eL9v+2YC9qLr9c1EuHu4zQbm/0c0Nil2Au2jnYDjdcZ+A4wRqZ5o1UankDjKIFldg+T1osERcXVNr12fCJjUzuwYzxPHVG6QAfYtNd1QjGqPYPcanC8T2ayAcXWB6oLTU3uqU/VaAa+j1ap6sAADSIJAABHFrl8WlDjNwtQAAJsgbwtScWuDGq3dWAABikDU9UVhrP2DIHqwmTc4cYYs3xHHS+LPwtCvi53/u09WAABLkB99WTi1MQ1pmp1kPXcOvwnPIDqLjjzE5r/E1pGtS1M9NrITj6Sazvi54OdO9UderMpaK/q1T1ZOLXQ9VL8WV+Lo/FtSc3SytP4sPC1z+LogalT1VfxY74tz8XCTjhk5/QGuMPtZONy6afJzeEa/wbVoOo1OOzoHEuDRQ2hcC4w5u3R171HSPDF9Rmrg1N6sAACNIB8LRHFrvC1IAAcAln31dBmpb4tOEmj+LI4tXqc2PGoQEtICWWfVi4e+LzRb6sQEsvC1DJaLfFjlNeNOajkxTerAAA9SDfer/g1A3Bqs9eESYHFp98WaPVkAABfiw8LVBDWIerZxau056xWswJcnFqsCXs/VkHqjASyyPrshM4QWicTdSZvPlV9Oal+1izmBOVRkFpt1Sj5oHFoPC0W+Lnha4QS7rqbwjXQGa+PVk4tZfi19Lvp9XhBqTQ1f0uwAAHUgovq8gNYLwcOAPvABAAAFyA1+rqBLxglgQNUi2oigt/GbsST3HRT4Az8AZxl3HeraA1gAAZJApA1Evm3QS1u6s8EsLNH6fVg/FvwS+nOdSfU5znEHNdKZzi9biAeQHUdQXRvV7KayAAE36rIEt9QWp0DupJiSTcIlkuM3bQWoWjdRm2Pzcqmb3nO+RqzfV04tEMk+NhrO7XT6mua1fHqm/i5QWpxjXz6mBPF0Qard1WQJY+Fot8XZfV1qZpt1SDBfbdVOpn0yTCDiGM9RUZpQXNCWbtJ9dRm2NM0MZrhj2LGbs0zrMFpUtYHyrZuO6WaRX126aptM6MZqvY2K+GtYL9la8dM3QabIC1/y7uDTm6Z3qTSm+oPTM8GnA4LffagQLQoaY2M38cbQ5tIF6gDM06erT8N1LmtAtdhp2/tSwKvbm3EZmeWVc8Fp8TUxmfuM2cZmGr16Rpt4zZ/cYyNNWMa74LdA+j4zS0aZk6PgIW6dV9/hilczbPt+M2jUnPMzNDxyak24tumpP5K6wsznCF5R42iZq0eMwOaLVzdnRuc9Y50ezE3OdHuQt21JmJC208e0E3pIW/I1uSF66k/5GpxEtgE6GC9mXRn1NVjueHE0qmmia132ZuUzf2OrNNMpBGFkL+qF0c1Vj+vSTUvC1IPVd/Fpmk2OFryEviBqr+LQ/Fkfi+t0eDW32Xr6Nz4zmnNbfUyseQu85m8gA3fFwcWivxbuT2V+qzJaLfFgQNUg8dxjXKbmpsLfxmlFC++IaNTUASH0Itrm5oDNTShYZQsTmmOxNEf6qlPXSnuFQtaRrZx1CkWirc5iJapM1L0m9UL7YWsbc070erzP1ibA0LKK+5RzdVFvg+OxWaX4DsO5uozevAZktMUiX549sq+4cTbfmawQNIFmREDL6FwSzdQWa13PiWbGZDNcqkKtephbqQPUirN9z4GJ3/bUEMcl+NsObqDtxER/Is/RGsqwu02mS3jwEWjbC7GJfLJ2qHngRjtlmi+HT8WYrE2GJbnLNxdplqI8d6pKDVghqpxakAATj1bQJaq9UWZrEPV1AlxD1V8LX74uyhraA1aAalT1S3xesAB8ertg1/fFlfi3h6vb4tolr0A1Hnq6/i33xcH4uTi1Bxa6R56KVSN6tiEsL8WrBLNgl6wAG+6rJ9WQhr0A1XYli2NXAJZHFofC11U1YIa6cWk8LVHzVfC12BLSHqmnC6klqaiP04WBxNbdpwY83AeZfZOzRHQrNp8B86I90JbCUM/smETzdZ26MswBydYdNcxH7VVjO+ysS+cmprEvv8WBHTgp5i/C/lZqi83wCWSBLBAljqnc/heWs1RyYX3V3fFqcWlYGuzE29CqYCLd56tHNTVZuDPMEYHdxjzVmlCs0qCfQn1pOnOrNlnJzjA6RWZIk39WbDCLjDmqCS6DBtq827OmiJLqSeLazZheYac3M3b8JNoOB8itVdlscvNLTHO6d3JF4cTRXTu5rObgnPcDmlapyEzZ6pchNsSbyyLE/Fui3RQKbpP1xQnZ8tNApreswuRdBs2zQmOiqhHps8izDZt/wPXQmfyLIUmp1I7EiZIbNMQmNJLc6R/qTVQ2eQHVk2beCDpNmomzWbMbP0MAPmQpNPjZ7SS6qAfMksnCnyWNaTZin9Y+kaHmMFUWKpN7SMGh89dRaYyN1SayfTCCxrpEyrZq6r36imvL9Rj5pyS0lft3s3GkGGpN+1+otnQOLXmzWHinwkT0FWtYS91JuzIPJ+r+vVm3qi/i2tWtEDVtiW0C1ZktNsS0gJbHTWUlrv41PfqmoS54JfbEvTBrZRLbKa0f1flJcAACyIGT6p/jXji0h+L9Qllv0/UatnEslSWeY1o4tGoS9HRdurV6CWxxaHwtacWlV6qhDWLPmHytZvqwcS2u6pHFqGS18pL7wtdz1Q8LU8EvgxqOpLDwtLqS2Hmt3EtpS15415UljBNeEGpqEtZ0Xqi1nUlyj1fuJcgAALSXKpLzUl2uiyG2bn9PxSX3PVaUtNviwvxYlEsTiXZ41k4tQfiy6Ls49VwCXEPVLfFiRNbB6onEuburJxaTwtfvi/PGu3Esji1qpLU4ltJEziesAAC0IBVJZ79WN0X8zVA4tCUS28LRekuQJrRxaLfFqqS9t6qBk3UCXl+L4MaraS7lJdIEsQxrmxLrYl8GNZR6uMLUEmGjljOSJ52ADcLUnEuv8XLpLzpap4WuOLTb4sDSW7+L2Mm0ENeEGrv4sVImbpjQklypEwKYY6KpvuqZRLJAl8GNWlLTwEvvC1bJT+Aakf1XdJaQEsTSX6hLLfF7AS5fRfGw19i04BLt0aqGS4fGuH+0Mvm6QAHfFwANRTJeKDV4c6PPV7wtO/i/g5vMEvD8XYPVSslvds3/RbN9UvC1h+L6Aa8aS9gmq0EuvSWr+LC/F1WSxZmuUACIerYJL/fF4AAKzJbAkvAAA6hLg4tfmS9e2fCkvbxqPPVxMlwfi/UJdlDUvC1ng4R/F8QNdrJfqEsKvncZL50ly6S9bJaQEtORr+ZL0Ga9cS8p6tlEtqeq3ZLDQlgwGs7AGk9VOer/g1wZh69VaBJfwEvriXoPVT/qo6S5u6pb4uYhr8pLnHq2gNYAmvKEt38XupTRFq82TZMGtEDVUhqmpLoJa3vi7LGov4vcCWnXzPyJlWSyv6vSDVX8WXhaRHqj6S0jJbNksWyW5pLk4tL4WhbGqLLXkxrBGLdIAJkS4Pxe29X5yWxpL7hapfi6bJfNktwSXX+Lfclrz1VjGuU9UNmHShLyHq/QNUc9tKEur8Xw3zilqm4Wu8LSUEtji1SpLY1a1D1VV6sv4uXSXDxLgFa/vi9V6u74tmS00C1gAa6wS2lJblksDmGua1WslnWSxPJbmktt8W75L2wah+SzHkd8DNkonHKDH0pky1Qyiakc2YNn+UTMTFgDE+UGcLPUZMWYz1DnZ9tYwOsdcb3yondgzjZ63EM+xWuzPUyonIFLpVm2pi1Y5sErU2Ob1qD5Z6oFi1WeqkrWXdmYedUqJjkM7XKbga2cgn091kaJrVi2QpbCg1abGsFT5vO3TYzQpbLRNkQ6kRL6fZ84o5n2cXE0HhnTU14Sp9Ow5p2c5/MhOaJOLsla9iMy5WrC32Xv7yI1Nv53Ti0r6rxksXSXsPV9Ql6D1c3xZb4sxyW2BLiXq+D1VfxeajW3uq3haCHqizNe8LRHFrkCW2+LailjRS3p6vGkv2FrxvVXYljuS+DGpTAo4er0i1ogahD1X3xdr9XN8X1xL4CapAS8imvBjWHiXyhLZktV/i5p3rbiQd8WfZL8/qoqS/OJegTUzi1IAA+ilzRSxOLRKDXoBq2+LhMl2sS0OLWg9V1CXk/zrGJqX1XAJbeFot8XAa1dkZ52AD9JcPkvFpqPz16SlwatVVJdEDW5/ne01vclqcWi9Jc4F0HSXafVCa65+S2p6vEDWqCXgyjyfqjuSxZmrPktIer65LPlaqT/TvJY0Ust8X3BLqgl+VTanJYO9VKf7ShLy/FzENZAAFhkttiWYlLCilv2S5iqb1U0Ww6bhacAl871cHJe29XeKXOs1k4tRD1R1Jdjks++6jg1aUtWcWoyqYGYOuvGEwLQvqs71c/xe99WHiX+lL04tDxSzv+ZSxM43reozMQl0f1dh6qrktVKXduL2Q5wYql/+feksrhquxLf/5zco9yJdIEu5Yn+/d9l6i6M6V/rujOS1rYWDVc4abE4BUeJc2AVH4nDUPFilzdwBbWxNa1qFnVswu/3Y8VevLpWyuaznVZtak7E4BUfZc2isGQr1/Pe+rTUp1vbVMS96mKjf3+wEc2M4cmcOtUaBeLczhoNADOqY+xOrOGFXNQgept1RFeu2cN/YmHe9MdawHE/HWpC61EjnEcT5I5/3vRDicNc2GVHjXNjI5oNAI0jvhxOFdbyr1tsZyutY7Gfd4up1rPeLgda5tg+KObWR07I6UNTABxrq9ThqfmAsx8WfgL47Bn4C4nxYq03b1qvf9dwFxVw/zRujjMLXq+aN1Gp4P/dnxeFo0m8kCxzcL5ENwzWLuJAs4HG6QAgAATN7AAAN6OAABiRsAAAMddSBaOZWAAAfccAAAYPZAAEAACyi4AABKhwAAB1LgAAHQ7IAA9ql51S+OObpACAAAKGf9UshqXHVLLqllcc3SAEAAAgE4AABaZyAAIAAAJBwAALsLXIFukABmpcgACAABAMcAAC3o4AAAXRyAAIAABTZwAAAA1gAADVW41LYHB87TYAABS5wAACE9vqlyAAIAABdxwAAJvNu4uwAABnjgAAH3bAAALQ3VqXQ6NgAAV57AAANQOmanAAALguAABezsAAAvPYAAB2W4NS0VGubUuAAAP7sAAADk5AAGHUvr8XopVE6lmdS8GpaQ5WLqWV1La6l3kPVHJk3UuzqWfVLAal1dSyOpZdAvih7AAAeqOAAAeceDUtlqXAAAHBOAAASMerUsX/7nYAgAAC87IAAgAAEpbg1Lk6lvtS7vxbpAAfqWb1Ld6lp9Sy+pf34syvhv1LkAAX9S9WpfXo2AABagcAAA4E8RLt9UuAAABhbdUtnqWq1L6Jx5DS6hpdDUsvqWzm1qalyAAIAAEmBwAAIMDX/FmV8IAAAYewAAL01+Gl8YfYAABEZwAAA1jOGlxratmpcgACAABXWoY0ssEns1L//F94AIAABOh1NS32BbpACAAAYZd40ujamzEzgAABAmhNLoAlsu9YAAABmwAAJWzkAAQAANB11al8zzYAAAjewAADRLgAAUK7AAAI82FTnnYAfql6NS4AAFQJwAADQde9RstS4AAFLxwAAAnjgAAGs7SPDgAABv7AAAjhMVqXAAAMTUX1HAAApi2AAAAOqc0spnHAAAKmuAAAWgcAACQs04ScAABjo4AABlxnAS3SAB80uAAAdFeGnPvABAAAk52SaWrADImlmacztZsAAA9A4AAEAawAAKhrYEF1zS2ZpcgACAAAbBerUvojbXNLgAAFnrjpz2al9NS0uLUgACAABbVcAACVXYAABnOq6c/oDQo0sEQWwtLgAAFy7AAAIuOQABAAAL03VqWcdTD5WzzS81pcgAB6aXJ1LZalyAAD2pd/UuAAAUpqUaOQAB+NLbql4tS4AAAAJkzS4AAAwWtcWi2pcAAAja8Wpem0uFqXAAAOIOQAA+tL7WlgdS4AABtawAAAarkAAQAABhDkAAQAABHjgAAVqHAAAE02AAATpusADTaXctLTql4bS4AAFzJstS4AAEtVu7SxpBYE5XA+bX/N62O7MxLflvLUtyCW6QAgAABMHXNLgAAClGCLjnql/sbYAABV56dS2zwcAACJ4x5pZOY3Vj7J1LgAAVsXmLjOWl5HS/5BfeACAAATzto0u5aXkdLSLawAABdNVGl7SPQz5veACAABJ5cAACRq+Jpa9nN0gBAAACrURqXxNLAT6wAAOGjyOloFjcxpeR0vWBrAAAPmOAABeqbXH1lqXAAALWOAAAHZoWaOPqXAAAHp0C6XghLbna/HSyxpeR0sbNGo5MgAAFxrAAAqbNlqX0QDgAACDHAAABEPq6WcQDBXazfVTVpc80u66Xyg14lqx7S82pcAAAhnYkJedgBEaW01L6al/tS075q42wNqXfVLW2lyAAEOpcAACVYwtpcAAAToyFpZyuNZ8GndLkAARrS+kJcdJMTBr/dLgAAD9qLNL1al2PzYAAAgO5tSxuLWRaPOwBW1LCOlnIS9DysAAAdo3Hpatl1/eHQyTXGlwAADtDgAAEBrIAAgAARDXAAAo6N3zmu+DSPKgdSwhpe1AMCQa4NLVWlyAAMFpf9l0W6XkyTFulyAAIAAFDxwAAKQdUMFqOXVLOb783upniQ1oelwAAJ8dkAAQAALsDgAARkGuhLA+lyAAIAABdVyvS2T4erJPvABAAArzWtqXIAACOlovS2ZpeIXMyvhw9L06lyDS9Wpev4MSOqu1LzalwAADB9gAAG/aLNLxaloHSzXLpzTPvAB99Lx+l0/S9tpbg0uAAAHGp5guty7r9LJ+lyAAEppaP0uPqWJtLgAAREnbWjL+lizS5AAEAAB8M5HpamEvvAA+tLb+lj/S9/pfZj2GaXFfDhGl4nSwNpaM0sfkmNfDFaluAy9AZYduNRyZ+dL8Blug05Lpb50uYGX5wDQdx94ACdpcAACDk7epcgABf6XAAAmqO4GWHfDwcFk7S5TpZIMvkGXKDLgS51YSwQZdoMvBqXAAAIb2kaWthLub6ogyyQZfYMs7CX0lzgAAGInaNLHqlhNS/kuYFx3vABCNLFal4Qy3nBawDWTqWnVLkAAQAABVd8Ol2pc4kOfqXPvABRtLfalwAABrjBGlwjS5AAEAAAyi4AAAnOyAAAmpcAAAaa+hpcBn3z6XAAABOPtwX3gAgAAEnHAAAvzV4aWbdLGaluQy4AABfRl9S8PBZ5ZUUaXtDLtul1wy9WpfiEPvAADDLRhl4wy6cubf7WAAAcGsAAAe45AAD/0s3Lm24k0Rl+5c5JmasY2AAAH5ejUtDqXm1LgAACMnIAAgAAEEnm1L1ali+C3SAGSMuu6X0jLkAAQAACUL9Glj4S0cyt00uQABWDLVml2o07ppcAAA+nZAAEAAAXc7oZebUuAAAIRuLUuAAAGmve0tYrmo5MgAAQc6ctLp2lvTS2YZedpPOwB+jLkAAGrS4AABOWyPS/f4f6MsAiXPIDUcmPDSydpaGMvdaXluNTGlwAAB3LgAARcm5DLgAAUInAAAMx1crno1jQARzoVYAAALxwAABB1YARs4y1PpZn0vcPH5DLgAABRbIAAZxlsLM3cZYeMunGWrjL0IlrQdQ5pez0uAAAKFv4QvvBbUjL06lwAACg9kAACwy0upds6OXCr7OjFEO8tS4AABwWyAAIAABFR5tS4AAB1FuvSz7pYGgPePHrFa/ulwAACDjLul+EywiZfa0sZqWK1LdqlyAAHapadUtn6Wy1LDRlitS/fpcAAAZDaYAFhMuAAAM9q0Mvz6W3dLkAAebS4AABjBl3S3/pYaMuAAASQcAAAacxWpcAAAcg4AABSx7xC2iJf+FWYmXsTLiJlvEy+mpYJMtEmW5DL5al/ky0KZY7XMedGLzT7wAf3S4AAAhZp1S55pexEvTaXg1L6hllYy7iJeh5W7qWRtLUGlvk0+8AFu0sS6WW1L5ulkgy/NpfXXM5Pgvq4Opl40y89Sd3XMvTZ7TLf6lkIc8WnqPUvBqX91LApmzpC+6ZanUvHqX51Ly6ls9S5SJby0usq7AAAIGuAAAa8am0szaXmTLJmls002aZYtMtWmXYzL9jJ52AG4ZbpEvthbLDLkAAMtS4AAFKm8rS2MZdH0sIbm6QAgAAa6bQNL9Yqpbo2npdt0u8iW8Nzb56wAABrzgAABUXAAABHN5qX81LJBl31SzlpcAAAmHcMZbTW2AABVNbi0tCiWo5MKullky48hZ7MvAAABzLkAAdUy5qZd43PvABAAAKl2AAAXJruT2AAARMf2MuAoWCDLeml6YI1xpep0uQABAAAF7ODmXSzTppl7PS5AAHXMtKiW/9LkAACzS4AAGlB82A67ScAACUPeMZamMv4oW7YD6EW5NS31pc1EummWBjLihlnzc+8AEAAC4PYAAAFxhQy0oZZxT3KxrAAABBO/mXdRLQFlxQy5AAD2MvDGXAid25lqlPUupbKMutq74NLRolukAJ8ZeGMuZwG4NLgAAHNmFItXZl8Iy2aJfmzPOwB5DLgAAA5bl9LRelkbS27pebUtjmWNTLgAAShavtLkAAQAACM1gAAWMGK1L2elwAAAU1N2lwAADJ1uqF8bc7i8YzMvZmXczLOWlhoy6PpeO0tnaWAtLN2l+7SzaJePpMIWnlwN3FlnMy5AAH6Mv8WWR9LglluvSyJZbxQB9aWyLLrRlwAACzdkAAQAAL4LX2lh0S96nsZNUWGXAAAFWsVqWV1LgAAKVGfzL02llvSzpZdPgOShHvU1m2l+tS4GpcAAABvYAAAZF8Ay5AAEfUsrqXAAA3V2AAAI1ZEst5oXK+jck6wAABJ9kAAJ3Sw0ZdG0uAAAehtO0uKWWrLL0lp0biz02o9MtoaXPLLPll6Kyzx8eq20i6Xm1LTllhoywOpcAAAca55peMsuQABvLLvllsdC3fmbpABF6XA1L06libS9sZbgMv56XAAAKqM5WWf1LWVlhbS4AAAHu4NSymBTssuQABAAA8D2QAAkNLQ6l4bS3WZfrMsNGXAAAvuPtaWhLLhVlp9C+l8eDEtRyZAAAHmMOWWozL7Wl9/S25Zf60tOqXAAALhOQAA+rLw2lyTS0mpaosv3aXaLLdFlyAAIAABHJ6nS4dpdYssCmX4MLYYlukAMXpcgAB8mXAAAGoPtaWILL/WlwNS4AABu5mMy2yZYu0sTaXQ9LgAAHs6yLLF1l66y1oZY+sskGWNrLW1l6wAAdZYrUssWXrtL7FlhLXY9ZeesvFqXztLb1l96y+1pZBMsVqXAAAJB39aWIzLkAAA/S12pdo0uzaXIAAgAAW4X2tLhZl2Ey4AAB+JwUy1oWYn3MSOqcTL7Wlv/S6SZcgACHaWRrLd2lhfcxphf+FWU2XttL5NlyAAPBpZpstRWXbtLcYlsDffZhc+A2hGWtDL8hlwAAImjZFlymy6WpbLUuA2WdrLjFlpiy2uLROsuX7njM9gxVMiy7upYm0tgGW0rLGVlyAAIAABvlwAABarFalwAAAc1F2l0yyz+ZcAADBNZAAEAACYNb5ZaNMsRWXAAAMq07aW2tLkAAQAABUzDllitSxppcAAC6HZAAE5MtDGXAAAFoOUmWZbLAWe+A875GsNMsbaXttLu2l1dS0dpcissBaXPdLIlllTfVVhbpABwaX59LMJljkOC7paDssPqXP9LIulg8y4AAAplpKy9tZYJsssmXhtLHaljyywtpapMumABDLL5WlhzfSrZYaMua2WdbLetlyAAGZZcgAAG2XUNLZ2lq7S9FZeAi2AABPpsAAAHQ1oZY5MvkWXPNLkAAT7S9tZfosuS2W2LLqtpnFTVIeedZN82W4TLEplqIy4fpZP0su6X4NL/dlsGyydhYLEu1WWu7LxRlibSx6penUv7mXmdAWWlu1S4AAB9R7uy9RZZz0v56Xi9LZFlwAACJ9gAAHTWR9LnmlwGywWyc9tNFsml1LgAABbG8rLJllibS49pbS0uAABdodb0vRWX4ojhqa3dSw0ZcAAC9Ay3pYUsvCWXqLLlJlr/S8Wpdu0v7mXs9LGmlyAABWpcAAC3Q9npcfUvuWb6xN02l1SyxpZe0svbWXAAAOrOSaWntLE2lrBQ+/ZdEst04XqSzhqandS8upd/sst6W8rLBVl6iy0hysAAAc3YAAFSesiy4ZZYfsuG2WTbLo1lvSzcWgZHrX0OX9bLhyqyyy3g5bGPM3iX+7Tryqi6y3ZZeLUuAABECYYstjaWU7LXGl9Oy2bZcAAAZy82paXUsNGXAAAEwOBqXtbLgAACzmK7LYDlyAABA5cn0uTqXibLRx5m7xfmao7svv6X3LL+VljOy0Xhe9TUq2XAAABT3NqXndLMZlshyyY5cgACUOW4NLw2l+iy5AAChMu3aXmtLpgAFfSyRZfa0uAABg8dMsvO2XIAAkNl1ky3NpZM0uT6XIAARNlhUy+GMcjLNQOmBPFFjlqxy8E5dsctm2WndLw2l9Sy5AAEAAAOC5AAHv0tMOXqLLDjlpxy7tZdccvuOWiLLXjlyAAL45arsv+OXAnLJmll6y/NpdCcvhOW18LrZZx09RmpcZ32GmW/7LAjpodS+lpcFPO3aXm1LsJlwAADVdf5lktNUhpdvsswXaItLhVm8TSw+gfD0t+GX9GVumlpXfXEZdSV0ZqWYTLGml/bS8CZaXUvDGWt01gAAHOXfzL2JyJyy9yZcgACXmXQTLYUGjNS+VpY00tpaXi1LkmlyfS9tpdksui2XgAAReltKy/6paD32wWXQjLaElltLeE6fXVX+6XE9LUZ5prHbM5YUMsC2XIAArzllM83SAEFsuSEXDQThEl0Ss3SADtUtH6XIAAIml9rS4AAAfRjoy0jZf60ujqXAAAtZ062XTAAhBl1NS+1pfD0vI2XIAAAJl4NS9OpdpMuh6X5TLPjqhCTWIXoRcuQAAVtLkAAHFy3i5eJsuQABFzLC2l/rS4AAGTG69Szo5dMwOAABAZbxQA5qXAAALEvBqXYTLGllwAAM81zalyky5AAEAAAqzYAABQ+yAAAi5dCcv1GXRbLgllyByw3Ze4csoSaE11wrl0Vy/C5cgACAAAENom0sCcUGjLgAAGCaj9L22lyoy0sZcokszlp+XLGWBzVy9q5cGMu3WXdjLwxl250+QmbpAD6GWl1L0WlyAAEupYhcuKuWKTL/LluzVaq5dOmPFGXjXLVLl81y4y5cKL1fKn1stHrlyAAIAABAmwAAC6dzWl7bS4AABi1hNSxWpf60spaWNNLDRluDS0uLQUssyuWXDtV52RLLQG5ZDcthuXIAAgAABwmhjL/WlvLS1oZaPsuAAAKcbIssJuXAbLlD6+lKA0ZYzcvbaWc3L0bl0gy2QZfa0tOqXAAAAJMkGW8tLDRlnNyz3ZZTcsTZbkDNhWa41y9tpbM0sWGXAAAth0OaWntLDRlwAAAM95Gl51ywrduTP69uW63L7Wl7Wy0MZd1sutuXIAA47l4Yy1dlrTcuVuXQ3LEblqNyzG5bjcuQAAE3LSbl5hy+yRch1Vq2XwjL/qlhoy5sZdhcvZ8mBQA7WlkNy7rZYVcsIuX2tLzrlq9y066fcfAbuXBTLZrpqyEwTlsM9DFGXg1LgAAWnrAAAy5OOuWH9Lk7lmUi4DRndbiemW4NLk7lsly7i5an0vbaW21L2el4oy5Hpa5rNpXnE/VAHlx1yxmpdOcuDGWn3LAx+pstDO5dBcuhGXbdLkD2kJ8Bu5d1stiuXttLijloXS5AADQ8ui2XlnLT5u6HlWR5ZbUvEOWA9LvJlguy065d1svkuXMPLqRltIy225eWMuIWX3gArdlmrS+3ZcnssWaWGjLyFl6tSwdMddEP1VwA3LWrlnVy6epblMvQaWzkjoHqsHLdJ5ZNcuAAApOuHcv4mXtbLpgAclyw/Zf8cvDGXPITHyR4jy5AABk8us2XIPL/jlpdS3ppZhMsCmWWTLDRlhbS4AABnmiPS19edhSMK6rmbzPKR1k/ezeb5w0LqWLNLshlhoy4AAB+e0OyxHZbEFPOwAknLkAAFJy6g5bhmM0en3gALLlyAAIAAAEu//SzDZcgADWeWJjL7WlwAAAETgrlzMy6xZebUvBqX7VLkGlnRy0pJb49MqSXBiqj6lwAABqdw2lwAADg9Q+luxy0g2ZxPUyOWV1LijllRyy4KfeAD1eXlHLJBlyfSx0ZYW0umWX2tL5Gl2jS+BDq0ku3n66QA/ulo+y3BZcTvNUUXKl6njlntS27pZ8cvDuWtrL/FFxfVSV5dm8v95rhtL2el31SwiZZd0tleXAAANTVe6XmHLVklwpnbNpcAAA260rZf60uDaWGjLJXl4tS+XZb8csu2W5dLBNljQyxXZeTcuQABAAAnGv7mW+tLxalwAAD/dgAABBrytLE3lsiywFpbccstqXuXLxal0qy9OpYaMva2XEbLk+lmpy65RfqNX1qXQ9LkAAf1S7SZcAAAncwA+f7zV0mWBtLk6lhoy+KhubUuAAAIoeLUvDqWOrLMal51S9U5Z9cvDi5RR1YBliby3lRefSOOSX3gAqNl57y5AAEX0tEWWzNLDRl1Uyyc5cL0tF6WD3LyVl8eE1RfrpACAAAJUcAAA3Q/KZdMADXWWfzLlVlyAADVZZyssNGX3dLFal5qy5AAFbstaGWV9LP5lo+y/PpdCMvBqWQTLC2lwAAA5dkAAOyy1m5YjUuQOXxvLk3lyAAIAABlRgLy9FZekfNI8rrrLGjlpPSx5JeObMm+WrrLpBl4nS7qKYwWN9ob97LzPly6y1dZbIssHWXSDLXDl4hY/5Wtp8sr6WzNLhal4dy2RZfOcuWGX8XLDj53KTddZfa0tf6XidLtbl6Fyz+ZcAABSDWuLSXUv8uWV9L7Wl2PS4AAAgayKy3d5bIsuy+XIAA8Zln3y375bzUuAABS1fa0sLqXuTLpll69S2r5ZS0tmaWGTLS+lrPy845ZBMuX2XgpLR1aw0CloZcd8vfWWrrLxalwAABwzlall1SybRciVNFeXivLltFk6/fn6bpACAAAUVtbMvBOXHaL7wAYBy6A5f3Mvv6XAAANGPp+X/HLytl9Ky6FZcnUuAABRhuSst9Sb6jV2plmMyy1JbpABSWXeLLw+lsfSz1Jal+0DWW5DLCalpky/0ZftMvr+XuHLmEp+o1Zf5aNMuumWDnzZ0moOy9L5ZdF2eOX59LuelxMyx25e+kv9SbdTLgMlxZVUupdOMs/mXssN9pliKy7TZfu0uYyWhJT0UqoVy4Gpeh8sDWW1xashliF8+8AARcvP+n1PLFZlmei+8AALUvtaW0Armnl7Ty7i5d08su2XILLOTuqLzYAAEOavDS0M5ZJfOinqyArFL56IzZyZbU0ubaW76LHJ6+9y/C5bw53kuW2Xz7wAQtS8P5acstcvnB0tKSq/Zy5AAEOcuQAAL3LTql5QALppeAAARaXgAAXal8Iy9e2Ycct7uXJ1LwxljgM2WpebUtb6X2/L2tl4YyyOWtVcv6vnnYAEWl4bSzapdMsvDuXhjLsAO+Zy/QxfeADFGWZ1LkAAYnSyrpeKMtsMW6QAmxlr1yyoAEqMucBWnLLQ8l94AJkZYBMuAAAJ+tECunqWnArDZhjTS4AAAGxwAAAudxnOxAK1vJajkwEWXEvL2dlyDS82pf8cvDmWBzLyb5pHlTmpYLUskGXYgrO5l7+S3x2f4CvVaX2tLZxl4AAJcZen0u/yWPT1tXlyAAH4FcIMs5GXIAAGJl4AAHSZa8YtfSnnYAhQV4oK6UFf4MvAABaNLITFm8wxnYf90uwWXu/LBQZ75rceZbE8smdmcTLFplmoM3SAFm0tmaW1NLDQZwYqoAAGE6wAABOrB+l13S27pbM0uN6WYPzBXO/1SxiZZcsvu6W5grlul8Zi8eZfmCsIKXjzLdAV3UHYAAE+x1Iyzc5dIsOTA6d8jZVq5vS265dWCsjBXxmLr/lzYK+sFYQUtDqXAAAMe0TGW8/Lf+lrQy27pd3ct6+W5DLgAAXyHh3LdAVsHy++5dffOqymiudlwVlQABmpbl0ToWXytLn6lwtS5A5e58tDqWGjLGJlzDyx3ZaWMvHaWrbL7ulray3gpYJ/U/4aQQrygAMEK6YACFq0NGW0dLmHlwAALJrk6llEK3u5YR0v0+XIAAH5lwAABHrchlhEKzMFfRCuxN6IjLkAAA4K82pf9Uv8uX4zLa4tQAABitZalrQy2MZZxCvpqXKWLtIZmV8IAABFVk7S0OpYq0u6g6i7LT1q9rS+3pflMtKfnOCNdAqm4K8J5fjctoWXpTLLNqhXyxPZZv0vPWWHPdLul+My48FYmMu/WX3rLxal93S0m5b08t5eXcPdq8puBrX/pYm0uAAAeLqxssnaXW1LJBlwAAJ1D4RlpbSzvZY7ct7uW1QrZ/l4tSyzaqUCvTqWpArDnu9rS/aFcgADwBXtHLQplyAABoZfW8vtaWg/LVJl5dy+RpYlCvtaXJjLdIVyfS3hpfFQ00WW9NLZFlkUKwKZeMss1aXTAAq9l/cy9mFYrUt7WWq7LhVluhS8r2cX1XoWWNbLt6lwAABbDpgAVuyz+Zb/0vDaXmFT++l1NS02pYc90VqXi1LpGltWy18Zda0umABAAAkZNwmW1LL/LluDS4AAF9RuvS2RZdNCvp+WgtLxal1tSxoZe/8vMKW7K1KWllLS0J5Zv0sTaXWDLxXls0Ky7Ze1ssWGXytLFul9rSw+pY9CvUWXbtLQWl1cK6/peq0tkWXNbLW1l49i+wpbpABoOWWTL5WlitS5SZbPCsieXbdL/wVgUy2D+dDf2qBXWXL6almEy9Vpa0MtuqWHLLE2lxdS16FeAACfGWtvL1Fl5ayy+FZHCtoWXAAAPN3taWrnLbIVitSxNpe68uFqWatLXoV4Py9wpa3PUZ2HjzL6Fln4y0C1v2jVMcWiYAgAADabIAAb3lodS56FeVCs36XhtLsIV+EK6E5fQssQRXtrLbvlwjS4AAEs19rSyeFb5Cs5aWXdLWFl1nyzf5fzFXEmWBFL0POoRS8eZbPMsm/nStL5WlzIK1qFanst36XH9L4il+AXe8AA+suC+WqrLkAARey01ZZast9RItDLdllibS4AAAgJyTSzqZd18sG+XwArnil7MxFoZaF8si+XPNLxzl8rSzAFeh8tq2WA1LcSliyM87AFjcvp/nrPLWf5lyKyIOajkyAAAkxubUucC6nzLD2xjNS/hFc192+Rr5tLH/lgNrYAAFVmlbS8l5bKCvlaW0dLNFltv8+9pdiivjKXWtM9alkQy4lFbt93DqXL3LKAVxKK+bDq0/2T6Wm7LkAAZKKzMFbf0vZmWjP9rRlo+y/P+Y64u97aRbL5alxiK4hpZQ0tnqXyozdIAeKy8Opem4thDmiKNufuhoy0epeLUss1xPTLQ6ljOy3f+a52PrcWpyjzsAJByzGZcYit3KWP/z4Vqr/88Gpfm0s1RXYhdKplxtS5uUf4CtuRXFdjd3FtFzcTpdQ0vWeXsvLjql1jy8tZZPUvRqWnArxal0NS9epYxctgAWf517Wl8XyxaFb8cMlf6nuL4bl/DS/gBfgD1wdbPNLbIV0Jw+8AFuivUAW6QAb0V38o4AAAs+wAAKg1d0VkNU4AAEVVnLS/9FfBUsKRWY9LgAAEFW4eLMzqgEy82pdn8uAABsDqEAvvABAAAFQ0gxWYVLs3+/jS4AAAD21GKxKAHpc2AABamadsvYxWEVLxtawAAB9LqgFwYqoAAE9G7GK+bWrudVdqXAAAIeO6AX3gAgAAD0asYrhgFukAATZZYivYxXMVLzsAdTS1YBbeivfDm3orjMZ36K3dFe54t0gAgYrwsVolS2J1tD0sQxXvALdIAGGK/DFZF4t0gAUYrcI5gTSyzFcl4vvAB8Yr4sVlEc66wdJiuyVHKYrOI5uOtXTFZV4vOwBmYrmsV+kABkjvZiumxXzqNgAAAJq9NLZOlzTTbrGedgBvRXN9jQsVsoC/SLrFivmVG4cTYMV5tS5DFe/VNyxWEYrTvFpWK60Bcxit3RWXKjGsVsDU6X3tJiuijm9YrflRw2KwHxeNissxWQ4zFsVmYCxHGdAOPKjmrcTdIAV/y+EFZVssTaX0bLmNl4Jy2NFYQONZxncqjkmlluy7b9uDUttqXZ7L7FlpPi7qZdMABu2XTAAaell0c9VprdHNkan9o1NcV12y3ppdMAACuXt9L3wF+Pi5RqfZR1AD79o18zl23SzqFrGctm+XkQLk7qywK8UZZ1C3+BWggrGA+1wRPcHoF564D6LVLLGpqWjWxqcy5VXSqzGVgAAVbB3GVm8V11S0n/vuqMDi7XD9/jK7eK5vFfXX3Az7N4r6q+pQ41JPqSn2zT7SB95bKzeK9zKuGX21Exx+LI5q2YfbYytvisgcrAAAY2CqGrin9dE+1HlRfFdYn3V/6Jg1tk+9YWt/Fc0H3uMrAAArWCAAA5sC3iu7i7dhagAAVLASp98/F+llZvFd2FqbxWOx9o3KreKzvFaAnNfVx1haqCV9BK3+Pv0FUnxWv4rSvKzeKy2Ks3ivicri2VEKqi+K+upY7tN4JW0ErGCVohKzvFZISshMqyErrCVyhKyWyp3it6z6PxdRzK+hKwQlcwSvEJXdha38V1hK+QlY4SvUJWRB94nK2UWrkPuITM9Nq99VMCVzeK35vqgSsqL7mJz+RqqBK9sLQUSswyr/4r/6lho1eWyvkSuKJW/WVJ8VphMyiytUSvqJXVDVBFq4nlevRqlFqIJWsEru8Vzwc3wlcYSs2JXOh9qy+4LlXwma42xHxXHErukq5xKzzpt0SsQJX7x9JGl0ZfZjyvyNUPxW5J9oum4wffAldmn2GJXZEzcF6oqfR7vp8SukT65dNGw+0dfXElaSn2caWiuVNjK2xK+IScTD3GD6Th98CVvzfTkleAEsyvg+pVECV2h1TISecZVQJXAAAGWBmD7zPN8CV9xlY+Pu00t0gB4ErUCVoQfe0yqI5Ue770krtYq/dHbK2vWFpQJXDN9ACVkofS2Hra33lJWL6jJw+4JK9glZTONSi10Erm8VtrfcTyqa4Oxqr4R9Zw+1ifW1wemStRaWfErVgBopK4lpcZNVSi0oErZA+z+KwYlbAgsaMrUErkotU+KwVas/iu8z6eBLzsAdplVAlZElUe76xRapyVmm1SUmYlVUUJW5bVv8V0HlVwldYn1iCX/Z9Qg+mi/abPqa0vvAAxWVi4+3YWlAlZsZUfxWpJ9njKihKxfFYySs9aWpft98VzmfV06oviuvJWSErYrKk+KwffrBStbxWhB9CiVv+VZQqu2FpQJXf5VZA+zeK40lcvH04pXiEr3SV0gfWe5sQ5XPuajd9qy+n+K6ilYhSuwirN4rxSVzeK1bvpxSviJXkRVfo+mUWmoqgOSu+T7jkrfo+hRKzCleZ33wpX/4r6q+1I/RaPvwv0AJXnz9Mgl+/TW/FZsZVN76FErv2ltbHdLOYB0tnS7KeD3nO9JKxmPqEH1KJXXkrBFxsVlcxvo+n39jahB9n8VpB1dAZt2FonD7akrs4+7Jo2Byp3iu0n6TH1gxVc9faDPrVFXlsrQZ9MJJ+jlZ/FeyZW2pX7UrjqV+2c52ytsZUZJX+x9qwtE1K0OPpigulj7than8VktlSbypCZUnD7PgD7CV2cfUCxpCZWfxXOmVmUFukACMldXH25QXpx9rCq0GfValaCx3wJXtx9MulmV8M6ldJn1xpXQhLUQqzeK5jKtAtW3arhSTLdq8blegldRSs3j6moLm+q+8fbGleUH1spmkH97c+gm/RFceafXwJWKEroE++lK97friuMnY60Er94+sNK7UlYUSt4JWJkrpM+h01Z/FcWgtlD7AkrW8VzO/a/vuSlUTpWg9LSCa9VK6GfuOf3zpWXvDNw+vpK8qmfCn1HJXL4rvepwYqsMPol30TXGxo99Rqk3le4ytIn0fxX6d9MMq0vS7axvsSuEJWbErL853XJY92saEuppXkyTFqViFKzTatR8Pd+a/tLCqV4XlZtjudgDXxWqB9H8V8SfcmlfX4PVGbgMrB9+m+K68lb6StmqqGErGSVv0A1xtlPSv3j7N0rKNx52AH+Po1f3ej7W796SVmmC9YrSlStyz6hErAU+qBK60/oySvjknWh1mMq4tfU+yrwSsEZWiMrT+ludjeCXF8n0fxWbJ9hGV+yfRklYmEt4pWs0rHu+xjK9RlalgtxT7BiqdGVyUWiClcXH3gpX0Uratx8aVSMlctn2Bz6dbjD7GzGVWJlbwyvfxXR0rkSVmPte+xukysUJXZMrmN+9RK2Mlb/JNedrlMr4mVlgffhlaTSt0GntMrqmVrNKw1PtsXP4GW0ErniVx8fcIvstSvGj7hMr6FJu+XeZle1StSi1P4rnW+/+K5XvplSuBwWm+1DmVwjlc5laN31oJW6N97mV2Jc3/LvMys4iq2krcQqzeK/5ldsyuqGndhLLdq7tK/ilePis7xXSB9jmV5zK2dPv2EuARr74rECVtjK/FleOSshZWzB9MEamxlXGle0H3x37SHVRhplQy1oFp2SvWJWzR9O++4ofXfFagSvrC1HL9HaVyYfchleKfPOwBT0rfmV0gfcYPqaSsSZX849ZzahrK+evu7StJr7kkrIlqjDK0cKqwyurLms+DvWV9LK2hldU5VfJXXkrle+5QfaGfvwFUZJX/DL+WVqN/TUld2X3gX7P4rHaVkIyy86s4yvMZXXV9m8V2UWskad2yvHxWKb97qZ54S2h+vRStqr7ih9yKV3GVYclfUStbf67krrwlt4zV6PuBSvVZXbsrXKVh7K2clZBXOoLb2krtKVjUfXEKvRSvqZWMkrRXG37K+ilZA5VoJWiOVgiVhRK/qlc4FWnxWt4r6iV9FKxplf/gvtcbVUrtE+yDK0SKu0H0HZXWErAaVjhbY7fpqFVEcqP4rEOV7HK6SuYaNVY5X0Ercxl6To4patRyuOX6QUrUCV+BKwQ8fSSvbC0TUrWtqjRK1jlfPSvoJWrB9dOVg4yziiZ5XOP36xRaviVrrK5YtoiStI5X8ldMc+gXKxjlbpSuPxWwszwuV45K0/frvisPxXakrcotBVc3cFt2FoQJXUeVf8VneK6wlY0yunGmW7VSiVphK8clf7ZViD7SB93Cq8zKxrldPitK5W5ELEJlhDK3rlYCv0Ij6QOV8CVvFKzKLQvivCpWepVaKVqDK5ohZ7lXAz6mkrOTKg7K+glbnSugJW6UrECV3YWuUlbUSsYpXv4rSKVhLKzkytDysu5WpJ9LR+0+KxC/tv307L6QmVTGVk7K87lcoyv6pXmD95A+4GfU7lcRysaJW4hVYKVlZ1fIlcRFWUZXHR9QOV4Uy1crtaHVe5X3l9vuVsdK/OlcDyvB5Xo8r+GViPK8cle6SumJWpUrol++PK3Nma7XOKirx0rYOVrhK7pKsmStgH7ukrMqVjTKydSb5StwpXVMrraVn/Hb5GvcZV6JXx8r6SVuPKzYEaKn0GJXEcrv8qsHK0IlZtMsxZXbv96SV1TKzUhctFXz5X4UrumV7+K40he+HU4j63P9DqV+TfX+PodStppWWErDqV6MfemldqSs5j7vTL7zx3YnbelYESuR5Wio1+GVkRK+wleLZWUiWOsrO8V4nlYXxuXysQpX3GVa+VsPKzJvuW33oJXUcrZpp4Aq6vlbln1cJWUgjMqVoHK2mZfsE1E5WOcr91+y61eFleC/2dZXdMrm8V1HK3IldgSu00nQ1VzYq1pK+huf/SsvJWJcrB6VkofQTmfnC2ZZXrx9NiVkhK2+lfgSufxXZx9aa2/U/Q3vtaSsKZXj+NMMqtUVS0lf1yuPIXGkrBOVt7K69qty/3GjqOsr8CVkzKyoTq1yuo8rP+N1OVqK/YLlcLNO2pX2Mr1+Vh1KyQlY6yshj6n4rHo6pQq9FPrtSuqFX8MrmbKwdK5oVak4vvABGkrzSVzgq5HleOyuEFXnaTkau52AOUldqSvYpWhB9nW+2fK14PuLZVgFW7zLBwRsJKyByoUSsbiqMkreEWlbK8c/sAyvvmX/CrkAAGpK+NyoK30MoXgir9HKmBK7qJbQSsPMqoEruiVnOfVYPoKyupH7oirbuZmLKxAlZ3iuhn6iRVCmVkInX1Ktnys6ZX70rrausjK11leWSOq5X1cr12V7XK7OOvUKvopX6V9XWVo80zDKqKn20T6Kiru8VmVC8qZaRStgpXJcrtSV/3KywVYUSt5FWYErqhqsVKyfFcRFU2MqIErcL+sQfTcvqn/VWiX7BNW8VoNfWfPrJysDZXUeVbWVjrK3LPpKVWuFWm992KVmm1Z6JdzzMSWXopVMxVrFK2YvvmKt3xXFirWBV5Yq4Bfvxysu8q6J9OKVvFAKClaEysKJW80r5A+7eK/dlbgytkWnkV9elltVleByv2Kuqcq9halxVhPKzylbByurFXWkrH0+jJK/GhYE8WnpWJ8rW0+yjK8vlf1Stg5XR0rq+Vroq1vFezlXuMq/LLaoRiYNeqaqxSvMpWQErPmVtBK5LKogSt0pXt8rqCVn4q7Whd2J1olX/GVXc++xK+Bfs+n1EpXmErX+VthKxQld/ys+iWO0L04+2Yq+xvryX1CpXeh96xVqkqxklf9EvNSH6Mr12V9fK9DlYNSsMZXP4rqy+7Qfd/Ff1SsilW/N9kotK5K1BlcRFXtFXwsrBGq1hK7pKrUSuAAASsHQKter6zVVTuVj3fVsladyvfz6Pir/jKg3ff/FeYKvopX18rx9qmBKzYlZv6MIYXeSrEuV/IqxfFaUSsdb6BirCOV0gfXEVcdytWZX8UrLBVzHK3Clf+NUDFW/x9nJV6wAOkla1yvMpWGEr6SVxNlXNqvGKuhiX4mTglmneK9kPvoKuUb75srRCVvvK/IleXSv2lX1CrtSVw5/XSVeLZWclWkR9w6VhRKxalfaZUGpWAr93aViA/TvFesADapWx59IxVsYqyEyrRkPKAAkUreKVo4/VMle3ivMpWbSrSZVj3fbmVeSytQyrhSrwyqqBKxAlbEH1DFWfcr2D+5vK6QlZlf22T7+19hGVtjK7Sladv3tMrN4r/xW5jPZJhYkdVbxWxB9HB++3K3ilZjystH6P5V+GVywq5ClfeTXbWnv1985VlffUuVezKtUZXmMrop+xpK1rleeKumYXLBjdIAOUq5+EYcwsNsqekrm8V5QAH0lY0ABSpWBir0I+3+VWKVeTytEZX0Urz5+yAAKWVfY32jFWLR9Yg+zzC8CyaTEuDFUT7V+j+hRK+0VYhVXyJWncrsIqu3K9TatNH0XxWUUrFCVwNfUClbf31AlWSyrpo+9jfYJlY930jJWpRaMSVokVYQ6uhyvgcr5cr+JV/Z/ScPveVVoH6unVQ6V2BVQoCZDkMKiqSSrhKVw5/dhVdpSvgX78UrMCVkpVZmVbwSvvj7Nh9CiVm0q07lcjsuZiWqH9Qa+5lKzcVbRSu8pXUeVcKV1cq4RVfVA2Ub6C19GuV6wAP3fuEX0AlXWEr1m+tK/VSlfk5VisqmkrV1+7lfSsqvcZW35ahFVgC+1wqyhVf2f3KD6ncrerJ6kVVeVY3KtflWuV9+RVl8q+BypPisYVWyyr/5V00fZWVZzEsSOqrErow+m7K9IedLKtxb7HyrPuVw8q8fFcsVU5HabIj6W+nWfaOvvUSuGcqsb9AxVwFK9JVecjSmD7f5VOKVwWVerldBX3GZWtcreZV/yq/ePuqFX/xXvsLWuujVA39hYeZUupWtv9L1+vzfcDPt7P1u5XUeV4OF9+Q7uVcXKs2lWjd97TK3Eq03vuulVmJXwOV2TK++K5AlcLlUZJWlwN0Uqv4q3cVZdSsPFW1RVp8VzeK9YADzSuqn6zbVd2V45K40lbxSsdZXdKrJ4lvlxWeJYIcv5mrqqr9pVviq7+BodlUNVXXyr1gAebKydlZ/KtQJWS2VypVp0qy5leUqs/xWjkr17JwY85pVb2qsHVWlKr5xVoaq9eJdFLO3iXMoNDFV5lK8YPtPivWZXRL9a5VhRK1sle2FqqlW5r9n8VsjK9YADRyswVXMZVz1VjtK/8VdqStcpWvirI+V3iq2Yldbf2mJW2qrDVV4MqzdVfvEur2nWmV8eVxcqxuVa+KtSVXncLkYx0cTZA6ZLwtLoHly1n4lrmtajla2qsFFXGd9a1Vj+KzaVYEdOYyrl0rvhVk1LUilYgSsfMqn8rJaa3RK3VlfNyswXblkr8sRrSVV2Vcgkt0gBmyrjV29pK0rvo3KsepbtUrnjK6PKwBleEH1QZWhUr5FV6mq52VYgSvEJXNErI5VtFK3aVdB1Vbpq/WVPSVljfQclblqu1qqBirGY+7pK64fpCKu/j71ErLNq3DK8UPqig3icqcCrHiVhRffhlbVquR5XxarGuVoPfVYlfJysBG7w99scRp5y5t2u3SsI5X7SrmJVt5y+hPo9qt9JW099d5VqwfVjlZJqv21XfnL37+u8q5fFYNBNWcnpCLVEl8HNXRPsVKsypWSErqOV04qxLlbEytRMqikrTSVxEVVmlaLX001WSErOeV2EVdzVY0rOISb46rGKVvvKwbVZzqtKJXN4r9j+8Dld7lekKt177FcraZVjMfZNlaNqumYHrkrxT+vFAPfFZqFWbxW5bVUyVjg/WmVeMZVSpWZUruD+8zKzwVajn2sJW5Z9lGVzuq9S/pgSve5W8EreKV3EqyLVazSufz7iarw2VmZfYeeYE8U8FWC+Vpx+xOq4pVcOu2J1X9CrbOV9HK20lc3isdJXpJj16qmkq4myrPStvZW5CrgGVvkqwole0y2KVXHXTC3J+WnQFleAvONEWrXLRY+rY/T7ldHStIj7hSrQ5+1YWutVYUSu71W/995Aq8P8PvVeESvbxXyirEi+2Yi/+ld7qsdb6yT9uyVj6q5Qla6dVtj70Urw9VhRK1mlbvSuaj6Bqz9ElzLlXA1eUH0QcrGkr5SV6DK6g/vsKu0Oq48r6DVg2q1g1ekP14JXXyrpA+8rK/HfveytHJXM2VMx+nrVVmlfAv2mJX8MrDDVj3fZylaOSv+VW30r14+hTKxCRdDVX4NXKGr2qVlw/TyvvGqvxX7NsrlDVzBq5glewat0/TWGrx2q9hq3+PvAKvcNXJGr4NVyjKwI1YRqufVmRGrK++hBqyvlfIFWkNWUh9qDV+PK14VaoavyNWaGrYqVzofe4yvYysnxXfOVUNZjkix+5aCvOJ+r8MrxRViXK0UlegyvbZqnb9qjVxEVY5qpz5Nx5WSErb+V/XK6pVZISv9irIErGDVgrfcrVbjys6kWZ6dtXmjOqyIPvSysN5XOGr38Vm+qxLVZYH04eWigAKjVlJq/XlfKSvM76cKrFCVqSfUvfpmP2KVXNEN2TVqGq+3vvAasx5WP4rnjVzMfVAlZzyusT6eJLvNVr+q1U1fcSuK1WIUroTVypq2XVezqtN77K6riKVm7K7w1YRyvHJWR6rWOV2Sq2Yyvqas02rlkjG5V45/UWvqmSvmNW8yrv8qtXK5dasBysKZWJPLrrq7+KybVYlyvtJW7/NVrAV+q+DkbBy3lNWSErSTVvJq29lY0ZW1JWIEruJq/DK5NVdvqssD7KMrWaVvmq+QKZjL1cNW4sr9BVm7KxHlduFVG37tqr6+VuTK9YleISsk1Xocrs2V4I/TN4vKatOeX4oTLnlqSS/QKbZvNU6GOiqDFV7FK/olYLX1cL6OT90mqjiq5sVeo9O7cre8r2ZVyhVYNVdSP19VW8UrA1VmKqxF5eJ3Vt1Wkp9HdV7eK/DVY0Sv2FXRqrHzVsFK0Klcuyuz1WgGrF8VyE/ewVZEH2Q1WvyLBL28Ci4vqrG5XuMq6N96WVwaqyy1dqSuCyqyWrHVVsCi+A2ewNU8FXwarVpVj3fUDVfxSsQpWVPTrcumsq37lfFat8NXJWrxCV3ZfWBytfKuIiq4ari2ViO87I3s/vOtaY+irBRVm7K5iVfRSuUUWvy9V5V9JKzFVd5Ss+ZW8ErqOV4J/T+VZuytg5Xwp9oBVhRK+w2a0lX0pXaUrc9V+lK8Ivq2Svw5XSB9BQpnB8COlb9ysdn7WErNLV4JK1ZPrwKsn2q/UrtSVj3feuVdB5VSUXnYAmlVjoq/cVaG/1mL7FcrOy+u4qx1vqSn0NNW2krzFV6yq4G1daqvutWwcrW8Vycq55VdCKsllXGUrirV3Nq3M1dWX3YlWdV9TuVxEVQDVYxSvar7KMraCVzRK5myuZytWT70UrDBVpvK1AlY6KsQ+XWtMIY+mBKx1lebqvy5W5arvXp/vNY21ftaveMriWrVA+/u/ccldLyuqtXP4r1C+xOq1wqoxStYFWkR9ldV9VfaQPsvSNG760P9UCV5b0/OFuWKthpXjkrFqV6lK7cVbJ8vWjFUHz/pVvuq1DKvpSsstWRf9CRVsAq8PVdSavYVXEsru1VyWVW+VYwKs05WISrFbViBK+KleofMTwmEf9tZVr4ffgleGKsdb6c59tKV/VK69lYlyvilXip95jV2Dq88vv7Sv8pXdEr4zVhPK0IlZgqud1Wzh9+dV3pq70Pt/lUKJWa2rUyVoOq6LVdQ6sOVXByrx8ViDlZ9Ve+qsQpWWP9j1V3+VdcleZStg5XY0rwl+4F/a4VadavFlXXJLjj5j0/VjlZTquhZW4yrcQ+g0rZb5fqNVRlXJZVMZVo3fXx1bt8vIInIdVwT+xIq1+1ZSqudSrt4r6VV86q0PlYgqt6T7M2VZlVvyS1DRYNJytZXwsrH8VyCq47PuzKvz1W6UrG++g7K97lf+Kv1lXZ8rqh+s9K6CvqHquEVX56r2NFxz7cJ1axv2xlXvR98ZVhRK89Va932FNXcH9nrV3Eq3YVYGqtmdXskrBKVnFKwnKvpStyH7UmrojVvDq3ClZDKtx37pKr94+ieq7+1bPatiVXi8rOZV1HlXmVczZX/VXCMrjDVxOq2DlcsqtJT7ayrxuVmvK1mVfd32Br6RLVcQqoLq9QlftauPWrH2r7G+/Bq2hvuSqvyb6u2r39Vv3K5kVePitoNX/GVGtF+sfeFlYRf2BNXKMr0nV/QVUcVcAytydXIcr7jK9Kq5Rlc0qvvz6Y79ulV3cU0WzvLZUOpWIErqhV0IqyoPr3f09Q4raLQ/l4PfSvle3itgFX/Krl1+66/TJDjlLUH5WQUreS+pCq2JVZISt+j7TOrFLVlqqwMVf0atR5WjirKQ+0uq53lfGfP9SbYCrG3VwJq/hlanyv2tnGTVaBVhYq5gVd6H08dXE6LSD+raff3lc+6uBr6nkrqwtGKAKaVdeavsdXtnzipa/bq0A/rASvzFW+ljc/p0Sqx61e8Kv5FWKr9H8VoGTUk1dUasJtnmyDZ2R/qTTD1YkX3PPnWJTqjKh+K8evtYSsmVX8GrXc+g/Ky0fo2KskJXdZcii/Lui+9kcRk3zpW8Url2V6TVeD1ZyKscnrCErvhVuSUyOapXquhn6P4rZzViBK822ccNUUJWIr9QiV9+fRClf2f3mZWzmrkCV0dq8k1arqtI6rrmr+XVg2q82VZiau70XI1V0yVpwq8DPq0SuUBW5zVPiVrXq5LKo0yvOSnMuV7pVrxlTAldYSvej6DzVUp67s1aPVa56t4c7VF9ytV9gK2k1cBys8BXbqdKSq53q29lZtqvHJXjmraiVmaq8oAHaSvtqrPp9wAAHxK9e2Zpqs55XDn9n8V2YfSfFeAtXVFWdOrXWVjgM4O1afZXWJXM792bVlj/ZDVblyP936tArDSV7ZK1QPsTqtaNXuWrInV/+K4Gvs+n3mvmRaroPK+jlU1lbuRNFj6XB9ZuVrdq6QlfISsZb7guVJuR3blZA1avqtbNXD6rNzVp9lf71Y76vCD70Cr7SVlwK5s1baSt05WnCrUCVlQAM71b76sn1WGzD+j+9/Vblldhd2iVWrAzdIAEQq3Nqu+asVdWW8r8XV++K4/Fepat9JWperg3+qufTilfiCv1Gql+rL3VsLq4CVf56uS1XWJ9z0pw4y0AKv5yvAAAZcrQdV0/q/4ytr6uAJWHKD39+yt89UFdcoP5rHNOzxrV3oq6jyv6KtIFXDEroClzTs7H1dqKswdWPyrzGVkzsxale0H0O5WMkrjNWyAa5mPtHSujBWqH97c+pDq4IvvkStJr7h8jCwVoh/cgNYASuoDXfWrmLF8Zi3ANaFqsKomoyrxr+gKq1YVbYrUfMqIErwNVnpi1MDsyM1vpXXyrt++qq/XANZQGsodWnark6x1NK66vrAGstdWpkroTekga5wNZTytiVXP2r0/Vwjq3a1cnKu+JWWEr2yV0+K1Ifpbas4DWUOrHW+mrs6+Pts33qV7qyrRyVpfq4U1ePit+P7nMrrOVq7q2k1bIGssVW0GrhF+muqyIPuAGsvlWaer+GV6aq1G1crSsaZWgQzzA12Qa2gNZEP09lXDFV2qV9RK2oNc5n1bxXNBrMFVxu/coPooyvWNXVOVjWVlfKz+1ZCKuSDWHBr2OV1Vq0sfs/avqpWKGroOqtitY7Pqzv1UDX8UrMzV7Eq+uvo7KuKVXE+rTSV4rqyoAGcGubxXXtV1aVjQa9wUcBb2ZsrE2VZuV3UHRyHHSGsuFWMx9H5VjhKy0VbZYvfu7mn9VlVuZqyYlfAKvN5XtB91QqolK1ZlaLDMZ5WVP9XA1+cq1nlba30Oe6m8rDrVg7K17VbhZW8VXEyrytV/2q24vq8KuOX6CCrfyqyhS2YRrga31DXFErWY+yHKwPlfUSvEX7WcrGY+56qxMlbcyuElWleV0I+zwa2KLSrSt177eir+RV7Iq5HlZZtUEpWU+rTWVtlDeoVf0Ss1FXZp91gAf/K0+Prw6v2tXykrotV9AazUDotauBlXv4r7nV16q/AVfIH2bZXH+roK+hVq0cftR5W+77ukrf8V4Lq2rlbm1X4dXTZ97WVnpKyeftMqs3VXywrRRRxfVeZleAGuzT6G2r38VjtK2i/s86uEVWf6rZRVtvqx4lcWGtoJWOsrfrVoZ/Z/FblqvPH7xiNiIqhz3fyVaRH0C/6ZL9vu+5oa9Dld5SvoJX0UrWyVkQfde1f8ZWBlWMUro/V4xqxhypwGvaD6UOr+/VxcK/E5qnqtV5X+BrRGV6Kq8ylbgGsEdXnj9eZV+XKzFVf6auR5XMUrpJV5lKwPyuxyvU9XEqrU7V1TldiVa+avdDXtqrC7V5hK3gldS6uMpWNirN4VtSHbtyv2GtrtWKJ9yFVrMq2CleYSvYdXoBrUo1o8q+LVdaavcdWLarn4VxdLR+Vfjv2ktXrx99LVn8qy5VY6Kt21Xz+rBu+1eq7NlfESur9X4RrKi+kDlUs1Y1yszFWT4rwAAcZq106tmyv/VWQerSw1p8fd4VfHqvkCqlWrpiVkwazZ1eJStEVXnj95tVu/q3oNZzytKjWuirilVjEa8UPrgjMkcXTaLvNV7oa251aUSs1FWo59ck+lFTdq6qKn0lsqiIrhdq+oaxBypMGtm5W1CrqFVjtq6R1e5GsENWvCrbbVywa1ZPtSatxpX9Br8eVlm1a3leqGv7v7hGDzWe0wq3wVeJGtNjWxIr40q8jK4lleDGsaJWXkrgqV8gVenlc3GtyRXuWtTZV8Ya+qvpi6t/1WgSr1JVsUq9eNddX0GpW2xraPK9Dqx9VZVKuTJW6+rY3V7SqwQfsp6sEJX0z9YHK/u/QWvtmGthQbmerfm+kNK/iNb9ytQdWhSrVKV9cq9eNf8qufjWJur6mV+yK58qcZNU7JW9krqSl29lcN1ePFUfnqxuVRt+prK461oYSv876UuLjt+qtq1ypr56uP9WwxrFf5111Z9PrxSsBtaRarbY+7+KymNZ3ysX9WIu9ZA+7PK+Uwea6ug6qlP9lTV7+K8E1cKKvEqmLYdHE1rwq56VYen1AlWjP9MSVi3K+1xeK71ak6TarZi+98qwINeeKsQUaPVNiSVh8a1CPteSsNRWUErDCVq3fQhVdvGv19Wf8rUotFqKyPWv1SvUL7BxrJ/5zgAJY6vXKuir6hErw1+53KytxbVVOP/mNVTmYqj8fYHla0mvjRWHmDLWVwsq1BlZISsTRmuNs3tV3WjUjyrImviZXDxrKtV8oc18pc9/1XRWnyj6uxvMq1rVaUSukD6gnDeFVvafbCwaimsPxWYpr70VsLlZSNeSmt0b7fyj2rq951aCpdJc3PVWwUrw3+9tTcDGdFqvuMrKkrUMV9WtZ4yr6quu7Hrf9iP+pNU70PqfZXSAX6pru41ublfaVczVMTJX1p9GPK9ufZHsc7ZXX5WTnVBPF/7q7b/oZisV9WJV99w53sfawlf+5XdlXqeLWAe0Iq4YPvwD1JTXRardG+74c/NNZSmuMxnspr5ex/Ka8clY8AslTWyprEI5x1lX1VehHOy/7Gf9gdaylS/VNYiAt9srGGrjmV0u/UdNfoxJW972pr+i+9ufbJUYrZV2pWSf9RzhplSzb/r+n1KxnhprUTK1WM2NNZPqsANXrpr51GjtK6EvvZ/3pTWFprpA+zfY2tNZ32MbTWzf9/KllblT0lbKmvfqnKpr2TKp3i1N/rN/05974JVXC+lyo01NaDGstTWPd93QFqNVdvFfumtm/6Df9Uaq3qa0MBYlHPvTWzf9xOJ52AF9NdlHOt96pl9o3Kv6a5NNfDjOfk56cTacV2Pi7TRszjPqqWW4rM7BlPizAccLitNaaDVLmfFtrTZIyvVMSi0aHg9m7BpeK4SBcOqOrxWSQL7wAQAAHSAPJm3ztuQmcr4u3VGFZrSs1hCg9XqZX0BOanHkNgAAUEBs8Dus18NS+rNeE9aazWFtNT16jFQ1n/v4yxy0b0CAgAAdEBjIDgNSQwAIbNbH4s+9aRzVOtAJgADbNckM2y4b9ZrSeABpQ+wmL081Xi1J+Lck6pIti8wHB/XQsJAAAmIC7i6zAALKmy3jirNeQStvablZrpMBtUCwtFoTmuQABAAA9IAOAAWVN7RMPgAGHNbX03azXEEz0Uq+Oa6bNfTmuIABM5roJMbOa7nNfZLO3ZnD+tXf+lOa8XNdLmt45gc5rokgrhcPFgadmsC3rqJzKLKkNg9cpqU73Bu6mCdr6li+WpNbixMlpzX4FNnoAYXoqnNe0StRzWUcL/64dOaz7NcMABjzWhJzHtRn0zQPNfSQM9haeWNI81813ZCcajmvNwBY5rfXF5Oa6bNZ4TNJkX0wLHqmxWaybNeVQr6NbY4NVBJ37neRIFrAMC6bCG0hsu0XTTUQDlo1w6nGjAsuRqJK9+RsmC33O7cCQ6TF/9w/MFo/msDG6EmDIHh/zlZvNcQkDoAAbZrfGlwBWoAAGtAQwAI+LXIkAIUHytT1t6mgAwJ4uy0AsqbYFrpSV259dSbwz3DyoaX5rs9Rp4fQ4Jvf9URSRxLGfAB1cC47pt3/0XYaAw2cVALBa+7pqagBi8a6KDgI+wh8GLxtcQMX1GH5rDVXdcgwWBBq4NY6BGjAh74G2azGRtGACPi1wFrIC17Dk9oAdjVWOjiOAAAi1gIk562vYWss1h4AAoC1+JM4ArXAFDQLWemDIDRnRjUgtd/AMbJWCf1xvmqdXX7erQ/UKMbMgt6k0Y7QOkxfRG3aLXjFghsuh5KxfetKdM2CpkjwI2pj+9fBjqYl1p+QyILf4e98PQrNYggDzGgV9Nrc1qFK7WztY1R467u4D8Ap0WRJ05EfFrUuHh4gQqG8XU205PevBnQHyUr31cXCGbABBEr0LEG+tQqEAG2a54AC9A37/rDjRds1qnXeAteMgMlzWWCDMqgFWvR8nDUVTZaBw/Tei1+FhMf6eCWudzRuezx2gVOa99pfv01pjNMSFqrZsD9TF4da0yb1A/6NVC14I1pZBdUfXJeHaeA8YF4SPbIsmLvXQGafWActGw2Xdk0c9GmAsBs9TkJJ9BWkxEXSXA46WMjI4WBhDqtjlmLvX+cr7BLbuptnzZ8AdQXC2LWfgDwayW2gDrkZxl0UrBRgANs102TSmlfvl18GagsdNAgERjSAtZ2WsmXHUn1GRkJ/APNBuzANPwBWFr1lx9XzXixpuWuo6paoLwj4O1gyotb10uG+bO09xvm4gAOAtcUAN3zWFSTGWOlYoI8rtzs2d8AsFrBept0LfQgfvN17SA025PJmq79Q7pZSEswR5hvVV2uXQAFwtepXCGy6m9TmQl8UA92oEmP75eQLINQpJ9dVW6iBSWBm6w1UzS3RilYJUwAKEuLR7RLDxi5AGjuQtfJiN0UNyyN70F5a4/w5qr0sgCWssTzQl+8A+AtcwAAXi1GSAE64TvS5aAcqWuo6As3dccurbHXg6lNmuucA/Zr7BgbgAK3NazY1RzW05dIq18xayAaG+wCtzX4Mr6Tpk7QJ4RBGr0YmhoCA0HZlskxQHsaMDUimCIthUAOea6q0a5E15Hg7ZrU81lN3Y7NfYXMxE6bpNLC19s6pkJvTM11m7WbjfPhmGbYLcaNk0YQBHxaJ3MQZTUV+teWt1gHTzjHaZp1eAGG01muK+GF8RZ0cU+a/RIGfFonLW8p9Qa102awX7sclp4bIqDTka10+a6JIPIADbLWH0ds6ZxgDf6tdPmulKa+AAya1pYSxIIeDfWmzXODTpYtUmA71PqI415rXT5rJsekLph5laI42cGXlhLaS5+QQ13uHPnDGQHy1rNC11Q05IFvrWveRa70zLsewta9IZfjPUlZXy4LOc284S8f3JDmvaUmzm11wlkIA7cJef7X3CXBdDcrekBa2atcNr333HSrI47I0hxOmZqXIOP3GrzsT2V54zSA8dBXNwrnfHNbiu8oQHtBtPmsqBcnDciq1ogdXytdoItfOzmAArc1gSNcYAacNy/x7gTNNmZjb9asZdrPVGLbUldD81wAHiHNbACOdyA31rwg5pLVUpGqmpMINr3jLdwW34y8tSYuFWrUncTNO8+rRC4MJdREsV5XYxLO1J2JC0tAexEsNxm5Jap819OaxEtdcWubZn+njD6133jcKacdr1FzWMujF2Z7Da3QQFw2sn5Wem1hc15DaxnNYFFoNzXL1zyfG6h3inNaKjV1zWKNr2c1ykS7C8Y66O1oa/FrSPBhNayJXtpEu4wGiaT+lG0o0HcRvPWtMAB9Zr8zes78HyIdJgNY/qH5r12iWOa2yJe0X1urIxVrCyW1edroAFbmtc0m6gjvDm1oI9Dhr4m72cnNH1x/Gu/zmuAm/WslrbRRL38Gu5PeGZpZ9PBQBlUK0wR078G5QADWu7mWlRLw7CnzA8ZAfTM3HrWVRLrtJ09a3HacLCD6zW8Ux6ocA1a+2aeSeyNuxaRNi37Z8y6iKyw93ECaFwz75lhRjSHQavvXBbWsFrzS+wAAHgEMg2QAADgE1AmkLa6FucrHVRzXAOaNq1yAALFtYwAAJbXItr/tG8lPZ3IEfFrjytt5rXwRqOa8cgHdWt0p6nmABW1iv/bwmb4kv8ZZI8LlqoOmA7OOtgYgL/7t5rkqF/jLCm4yrDPkJnWiryvRsSyzxtcqXWTFXOLL2kh5cDbpZd5CNVibnRL7FpgSDQJafTT1IJriGTlC+wncxNtdk+M3E7mpDgYloq0+GVYmst/YbOGRjUu+XToHHvFWv+KGjUAbq16kgLv/qHD6pzWRNd0XG8LAyXNf8WtDABvZrlzAI5a2UtbCxjP0XMWzZ8Z22gFWVfhaA1lnY8NJc10d5MNOV1HOrztOVrnJmm7a5NWfuED3rg5aN12iDCWq6tckWvIrXOJacktR2ayTZdnKuvJqsugGCAUzBt99FTmurkBwBQxkBktw+nNYc2v02WYxLEjquHa1rKKfD1WrWqtrdyu9Ja3atfjAvnlWiUD4WBpHa9ttZj10qyHvwjFYp75a7rNeAABPOwh5roXUnRndGBqh2t3bXpAtD21oDXTIACAqsfWmwizC1a+7U8+LWiWvCMaEgA8O1hf/UHkEAb1eCnbM9K+mzxa3iYYvFq8k6h0DKqAVOayZGbo8MnbZGpdFO18eVguGaxtMTRh9CAfPuiUoHvYR9st0VWPtdvigBHa3uWfbQDurXpdrvi14Xa0aBoQoPbbXGpdES18fMxmJYMs2hCbcdrRYRweRHvNeSACNS70lrjNAZra5ttYE2uNS6LqAVMcS+07WVtv9MM56EKzisK2Baysbvgzgupp2JZE5sKXa7KgfcoCcrWHN9rAAWXa+ZVebdNnbXHxapW17B5D1Loc2vy7WOdrA/prna1aJuAHMbFnmZD9C1kOa2ZEZ/nXeuh6drizgS3a8Ttfnsu5aYlGNW+oHXa3XEdHXSJo6M6LugAVJa+ltecjSEQIKCAiAAOXa6igDKz3UrXsmttK1+TA8wnsfFomRmUNMZqRxercWJacs047WPtrhqmBvQ4B4fL1CeErfDzhqauHa1QZLTmuTzXU1wGeAAla7HBu943ymn7ktHC15iAHEtYuWvTiXrAznpBaZa4sTs7wuu0gFaNlmQbsxQP/qYAA37Wz9djRgKRC8jj1mquRoH8HL5Yl2o8zjtZN2tpzXkdr28W38DaLtZ32tnRw99rAu191DTygD61Dc4WQ31Zoh5LUFKIcvEvtia9aGimQK+9U+yYUBO8OWfRjzu1n/a3Lmb70DehRjIDPs1+SM467vj80qrWaU95C12BA/34aF7njysazTl74YuaxwTUCI1crRSnTstKLA6xZgHlb37g0+Ggus1zUsx+yZSw3G7X19rqc1zfa8TtaxquPiXkYjUnzXoExJBvjGPsOmkeVkjG22a4XSCwWsxprFZrH74MoA9vtZsTbAHXW5rO6BvtAI5LUcKEaLXBTzbfmuWDeaIYkdPynxpFrrVOiRa5wtbtS2d8BawDD6B+DvmLxveoPyG7d/9GZupQ3aztbXLN6K0fRECa4a7a3wqfe2uHH9zdroq1ixa/rNdTmtr8BZ5rSEljfzW6tZ5M0CBG/ONyKAarJJ9QDaINdzWepyKhm77AAHNeIa1uzWTVrkAAKKDSzI22gDRKacDrcq1vTzXbtbkADfLXfdruHGwTa0HvoQbIEmnDZd+GBx5y7BWaax34rX8vIFA5tLXZVeCepPcEXTLtKnJsXa+UdcuWurEALFrSXu2QAN8tfwrMUF7MWALR16DtAC5ejqtAuWGiLLCG2Q8GdoI81AIVmVa9fFup+a6J7uweTILXyy4vvTByANttbEIqJo7kQImu1xcMxaohKbh96BW5rEXJ8cLZZkF95Nd+G6KQNiBr4LZJnvCwMqAouFrZQBnRYfY60au0PzXu4D++AXXWEZAf1msVAguFwrOpw40TjRqTwDuzX7NrWkkFWvVm7oPlYfBn5oNhUAZFa65wHhYBLeD3UNb1CzFhHVKecADWzXuAA2y1qk3V4dbWezpMW5XL1kJs+q8XvsMzV3OntrNVZ6l9dZJeZXPWnF6WJLnJF1bNexJafGPg6quJLYMG30i3x5ezItvWbaZLNMlgzy1EJeny3numXCABZe1zy6zecXIvg2agvLnF6zciyfgZLE2C7rvyLv0JpGzTYKfUkuIUXdLNfXl++zdjVtG8tcubRCDed5wiNUZJbphMUKWu7z/lFic9Tt5aZs1+UXJK9Nklony3ZJZKIMOSW8mzMhayi/VgYZs9WMZHOOrrWmA4ic8dajwNrkBW5rMCJ+uzSn0VOLlQDnQ9AmAAVua19Rd8kvc+nNOrRUmzavVqdYNPVkYaQpLhbOjOw2Uu0/d1hIm8/T0UlhWa40teMgPpzXNIcFp13bqw+Voe6v1Gr5Zr3p101a6htd38s+mbsjrbWZ4Fa6Jtb+6vj+mKT1e7OvaSyRVs/s1WO7cerO/poJa1ZtYOfOomGskTWMlsSrUgFd+OuDHWsFr1MlsISySdZLOv0yWntTVPKfojU4bjB2scyXtV4lZ11LM8YdYaj1W37m69KAZmEIAhVKbOs+Vb+ZNPoiZDCwWdd01BFnX/JTMJw7eLewFfKEDzKTbaAxUFjWS7E6agUtjO7y0te4AOxTaO8kE2vPBwmtr72pjgMzTwDhOYa7XCw47K1zlayfXtAY0jlrbfNWfV2hzVxthDOtQnXm1rVfVzB8K9GiRDNpmGCtrFh1409T8iaDpj2OtSEjeaQHXa/rNakoOp07T69aCh2L1i4FdiOu0EWkjr+s17NmGJQBzmtIUHXzro513wjad2ADa0ZPg0pylHZrhzaEFdU2v6MXHT1OtABHtHfAYkj2prhQTrds1xqXYjeB6SNZvmwRLonZyAQ3CEzL2uTNBKDrCC4KBa8CAEJ0z38aYhEa4ugBS7msaeYC4XXP6zPVgcZgOnNcTWs2zX5g+qAAI5a4xdeaCs8omM7DJW1nSAObtcqOsRzXABrpHF5RWk+LTL2sY7XwFLjz6h8I/Dta0chJbW0FL6H6tBQ5nFv8gDcrXe8jBXOndq9fIFnYByXXoTr8Fh9tY7iDoOkRSABVLrDiR3zszIrvqoNb7WJLrWC1xd8/pdf6V2ag8CtrsVhpBS19gAIi0Icn0mLO756Kg3AD2uk1tS7kBdUe1ricrStei4vsDW5gDLO164DQZdfEuvRUBJLri75xy62atbMutULX6qj8ciOI63LRti/A2zW4qdXVgC5aw7OEeQ0WCaIVrEO14gAAatZOYsVnrzudH+G4hS+7aYE/PIbH0YNhuB+fa7qDvlmv4HdPZr8e1qKAPrNcPWsXrWVAAiZBBUK+qGbW81qKns9rnq13Wa0LtZZ41JLXiAAnK19vaz6db/2tCAb05r5ClwG1eAdeLAPGQHIrrnAAZFa61dc5WsYoGyYA294KAc0ixqTTjMXXO+AF45a/Tc5+fmGvNP7knsP21wnZNJ3s9WshZnY8NHV1iZs1CdZgWtWwBwFrYdmxmgPRIHs5PGkaDiJj4tZlna5wFEkHAgBjIDIvO55gEmtb8KP+ObwnN9ClytE/mKs951LSABLgaTu2hS8t+c82OFmR229t4V1JzS17tDf2M/meFL/F1zWI3C0nFU11XXOZdFP67sC4gAHAWsQtbaGDCKBhq67YdZ0Tg9S7vdrKSwQbs+QAAVo2tHWA0DFotKPA//tfb2umHpL1r+Yq1Q64JFf1/NCKXbNrXgAc3a8JdaL2vhb6dBVFW161a5kLrFWtTBn+E9Ne1z1a2OLtPGtfv7mMTnA5v+1en+dtqDaHXBBzrnemEIJo+o871yLX09TRE1qQc1yptk2tNHXKJr5BO9NMaSOwDa0PFa61wtuGugFuLtbxTFm+6S3j8qmsri5BerYdVmDn8FLcF6pZa+nqc2UtM+GokjbEAO2a4rtbNWuKrWdlLP7J0kS6oAePc3KzXzbrJc1hja+gADDmsGTWYJNDk17QLeHAYzmsXbWCwIrk1kaMw03DY2t0CB+iN6c17ya7+lmhYR6HWvxLt3FhaM2FNYGHODYmpNTf9G18o2IsFB714ua47rEPewlzXHpr/o2/lGup2oBGpgC8RxoVo0zrWcWDYMZ9Jw1mtcRivZOG0YrMzqvIAHEtYmEA4976XNmPFxFS8y5skY2li1NALbLmsTrTIww3/2sxWiRded1m2a1NNZeHNiwaBizlsu3pwynddsAsS9707rUvezTrWdoIDL0ixXc7rxd1/niz5esF4vzOHWRQM61g6a8s4eOmtCxmK7rs7AE3vUuqfCvXiB76VL6uxhu654AH1itxXqQutrd1ie66ypYHYOd3Xr1T3bBqO2TKRopF1x6bEH1dI58e68X3uhxPmB7z7rH6p8X/bUBfnuvJRgu7rTvFnkXa0BbXutV3Wpkd6OJsHExKpcavWwam97rzfek/2Ci4ddrW7I7j7rj91gbTF65rOF0v3XNRdkfF9IPQsBd7itZnnIDj7v+jVSyzRte60KuGr+9DwFzmayqpf1Ush/Il2DRql2jU5IyrE+IMamJZrQbhgkC0XxatUsy0aH6g8AAQAANSA3AAQAAMiAY2m/PE1XxYabiFQBmHrbD1hlAIAAEBAXZiie0D4evkABnxa2eBoMw6m4di4vcPXWHrYq4ZgczM3qUOMSutzIAjD1qlk+WgCzUs5lxbyzMAG87vffxzvgBmgGAEzEwamyAMI9fQuupAG+HrJVJ0mA/UyvFUzlHgMWTlIeiQAGw9dM1OMQzeHrQuAZ5QC81tQgAsPX+Hr+oF9wfQXNesevn0b2iY6rcKMAM49dceuWgW7HrXj16ccujdfO9guPXDAAAj1+LA1VxqvxMyvh9HrdNQhghFSyf6RTwAA+HrQDJz2LsQAD4es4F75Q9BpOWJ64Y9ZoBXjp6CCA6T1x+JUk9ZGgvcTmEBtI96gx6yoZvhQAGl76JAmAAFh64Zrs0cDJPW6YDYGlsp63E9duICYsJBHrXoGop64i3vyespBaCJd6qmFh65Qxp3mth0baAA9j1ht8AfNZQJMc6apHrIz1jwAP/Nfbm3v2olHrmpu9HNHw9a4JM3zWAy9iz16ci6WBebhlPzXGHrHK4HzvK/NbhrVzPW/7dhIwIwLXLpoOeuam6Lb1F817RM7J5rCdAp7z/bTYC1rqducACUesg3rGHrV81uBawS2rMTPo5alszzz1nJA6gtehw0FYIGwefD1uTw+y2qy6AdM7FoujD1pgAIw9bM4CELXE26xC1sMg0w9fNBHoAA+HrBW1+sPUVwbao0YqGWw9fMF9JcH3eowQCAAAeQFINN+eaHTT+H4URa+HpokY0iss+Hr8l1p8C1F5qO1NaMa4vNc4e0564kmagXSm+r0ctRL1oCC2FLoQbIrfDvlr+i1tD9S+gdhesRbJjnr5yV8DHbNrvVz15c6TFrLYG0SQTKoA6uCPPX0mLHyV8DHXYtb7bW0NHrJm+5y2WIDkhfsWsUQWHyt87oLW3aMWekC2dOQQsguL15Rs89QCIsQAvX4wIAj1jUbeBAHQAAsPXfRdNZZ7IAEs9f2uuj56JZAtT11M3HcgZ5Au4uBUlrCKBvi3XTeGCoDWvXTXrBVR8UNCw9dToDlLWsnrnjsoFM0oAHk5W4kwlHryAuwyC+dLprG1Y6BaRNu/+5pa0gGpTNzsWN+xthJorpa3gGunDj7qYvpdno02p615Be0x0RbIxlremOv6XYAAG5AU+a+69ZmWuyebb7rwTpnSPac9fjvhNNH6vDdamwAAOyAvr1kZfvM9erevdNG61NFT3G+jak+pM3EcFBKCdXnap5gAygDnmA0+n/Mdno08Baws0b7etEWJImD0epmV8IAACpADBACIxrvz3dvXC0ruT6u2FKOumw5NPLX0nrQeQWwrSo6ZOaNG+bpSTHL1xN67XOb9i2UMWpcj48rPl66qSeafV2I4lnr+IG/PEZgACUet8PXV44yQl2tDeKGllQCSTwrXrJVJwT4JOle7vX74BQdThfBi6C8Hpck53GPWYZTh0FlbtaQrT4euAAAxQFxWubdqcXUugARh6yQIb3SsywGLaAMpGu6C5NcfIJ2qrWYPrflp5i6+rnvOAAsPXr0rXNa+XWeAQPhQB23Xnk9lQll1jUkhYwNxd1TLZdqRmpMAMI9f3I2j8HMjNi5Adla+aClQgDUfWdzDrQl3fU+0JZnOthvXDUACMFuUjTuAF4etaPWb3rIkBrNjZ3IDTl18fXr3rSj1vbw2djr9i1MPX+hePSelDKzz+rJetKPXqBNgAAYkAhSTAwl3Treo9dVYBSvqWHrokgi1a+dadxwCgfWgXNTakN3Ddp9esOujCXHVrLBuwqAGS9ZcevGfWcdGtrR+ZGbZH0U+s2fWMzdIBlhh61Z9cdessAB2Y99QAMF6zFVABeuBrXvPrfAAAF6wguFkACPi1JmgLD1uYS159fheuBfXmOxfD1uNa/59YReu1yH+3rFBWoUk6mtae3hxfXAvr2Pp8d6zmtfwMvBvreHrnBpvh61eQeLWt3y6cvrRjGI+jPl9cjgv7pmg4LPBpgEmTpAEU+vk46yvr1a1iQQ9V9aYeu5taXY99X12ta0+ma73Dw0ASvr8YONr6y2tYOEudfXLANeX1m9AzBGu901CAbiBNzD19QLScJdKys5zbYnrmjgFh6+YZsKWvqKbyAAl717IACw9Ys4DnCXGIZEL1yjA1vceRvUKfXnWAqEAeZ68igDWevmAaxPraT1jlcKOtfW4O4AA9vrKK1/t60s9ZO+sSvWzvroDG/wy7N9fgADzfXvgIy31sC3Wt9aDMMrwWyKzBbCCF6wI9ac+sxGWLo9Wn1z+PedlaKC3biafPrenJjMjZ2819euLyaJMzbwltzjfmFo9etQ/WlK9Pr1kaTRUaeCA1dWJFPrkT17da/B30w+vEABsfrRkBoJPZ0debWvI5XFLVEZmpT6/Y9dbsikwGiB1eH1+j9QmXo34Ak5XNy9V5h6zM8ghYiJ0jABKfrQzKL56+d9cczPNwznHrDUWph6y89ZMSPAXXWWLsCerzM5Rpvy8g2PWpqTwQG/+AIw9c+yavCG5XuNT15R60R9e4ePThjyAAcv1+FAAVigA2sCeLM/1bD14u9eCIdgYiRABRPr/P1wV68k9ZyA69QWERL4Jluc9XrQwNBj3kGMAAaH15iACw9eEFO3cnA3rjmCMqA/1mftA3XvWVDNMt6F5ra+9cKgDmvXffT0YcE2jc4ptd+tOsB3UNJLkGa6yhAcMf5aSRZvCqvGmz6yGVu6evl5XinjDwGr364pSsDAC+/W0nrJVJgP60U6flQDB/W9sDGn1itDbBtfNEvbaZO5AsFwYdANj9YA+s3oHVszQS13h6+E9cWJ3KvWBnjnGGmv69b+C7kBO/W5nQ+2Z8gnfByd0ACBfXAhmm+VxDa8QAFr+vGvXzszeKugjazCAEH+vuamSk9nj1soJcE9acethfWiuj+Seqf60VGoces+PXQnrlIlvIAL69ceWmsq63twXf19L6zdJrnmC44BanrwFersxVMhcRoAGvXvgIMX15My7c7pN+soFW1i11kzVJa321q2+tIvXdjT1P1gsy42YcDka+vXM/9pZlscLfLrKd+uRHWkSAxyAAkAJWZe5pO3O6LHrxCe/B9VMFqqdPnia01t3BaP9Jr59b7MvJNEyvr8X1x5C6X9fvA3Y/XzvYAX1nZ66AxuNHU//WI4Bdye3WDuS92M2sc/WpfrYS+253dS4fxY27mXO5AxGQFv62QDaReu1F7jCrKAN9tAI59ZB+sMsblczQMaun6/JPBLo00HtzLT4VAdwq9b+tvutAXzknrcBRuWjRN9YC2shQArzrXJu4QG7s9ZjpMvrbeNrJc1w0WtQJpEBuW5nItNsxG1AAJIDYYi0soWsA1TzALr68dloUBvrfW0irlANj98FSnoDAKMPX1frCnF/sdW7QAM+t4yw+PLuv19W9bOOrTeG2Fb62tPdJ7u9VtkA5zNIA2utrseZrtTYw9cqshYxAckDZSkEwG4w9e4WtgW7K/rPaBgf035OQC+sfyVLRLA219sLQgdfIAD2vWUo92+1jgG9sPy2+tH2GMi9G/AW1C1attPV2wcHYgbtuGnqCfh9ZSIPJA3rGz6ue4yA4AAGQCR162D+uoOu01xBthw217+k/5ADiBsRbIrPr3RFpVABC9dTA3RMnqbTY218+A3VFss+uJaHbvrvj1hBw4J8FIwVMfWEKN+Hxqba30JqyBtY2nHa9vD1jMPaI9cz+vY5YiSrXSFrIG3EDbhQDbD8Rnr3j1kJ6849dPzN//qYgbcQNrwAE8Jt4esgR76NdtAG6nc+wyfQ/XBfWL30ZL13m9JVeCOWuGvWuPruwN2gG02pCE9OJABvPrTee/kAJ3gbxosaPgeHrrwNv4TUqZku9N9ABKAAj4ta165M0D6BugUBFHrCZehWAHtIbS+PHp6zrL7wAQAAACA2QN8Mve2hvqBt30HsNhaT1rxrQx9dTXCPi19/rh/1naM3CO3cA3hYHnHr3y4Uhi2XNfi+unWWIyrLbZzhkXKbuEet/7Wn/r6CAYR64ADweeuog20td8nCrwiFAtaxBu44AeHrmAN14G2EAFP+vMkAAXrDIN+aDcI9fgACQLW+HruIN5G3USDYBevPbW+CNTv10jzXxboVgC8PW2QbrD1jkG2vpq5Bs7/XCRA/AANEG7QAAFBtCg3BGd9aW4R63O9eeYCByMG0zD4GzUG3/Rs+QiH0mJMLkYl5MzQsDdtw2cmao/rCT1j+AFTrpB+vNrXoxLAshrYGzkDf0+uGfWUIDIUAUOXXNrpM+sk7WJ5VZmFhRjV4DesK3tnXI/rQKZqnaxXFpp2uHkArgQTzsDQAGqDbS11OfWQgbooNvHMOKDdlsvgRHBiqCjGut6yoZs+BvcyAnfrXgpyAG2UDadCPGuGDa5JmgPwgIf9f4ACBfXZI92r1qKXbQDdeBuixoa/r5YNiIG2MecN2vksmfmANMpjCANsDedeuyqA9yzA/1h2s9EybcfU02mndrKZJ9sGzkDcVkR8fXWwbc6kFQFHt9YEeuNk7iwbVmF5FACS+qekCZAAIXr5ZcCP64UEFdtihSRmgbWrJtuJEIqv2Bup7XXk1gYN7wGyGDZWj1yLXGpd8f1kUG+DReTBuNg3OlTEW+hXjWdtfdBsT6bpDznoNizgBGBrnUhOfXkRieYlpeQ3Wppk1AsPWn/r0KAJwAK99e2jPlg2Orrm2e7vaz4eGya21hIA0DJIBtja4EUC5BuofWrJNVCkUQIW99cCiPZXXcqrLh5otk1l0C8ADy8AHnrKZGvsG6xFs1VmVVWS7TroNsH9Z9QVaes5g2TkAdMWlh6yp9dsK1G0anfr6T10/a4e9efM0VA3fld5ENzyLZZ9fTgMyqBdXraNBlKPaw9aergkvrKSzOCh88S/maqIhsmaAcnrv4GsiG9KnozBtZg219NzFOjCAA29Z2euOsANTNTQNhnnULhaaS3uySlwb0/gTPXbdVclwtzRGrQb4Ze20G1pFr8SqUrX9AASL161698DZ3A0HXWqM9GoN/koFZ9cLpBNEm7zTgN61h61RDe9+v4g39/rbB1448xwddqBs5A2ugbvD1+P63wdag+sKQ3aWN3IN7v6zhDdh9Z8PWD/r2Hez6I2t9c2uvJg3yy4+r1nkG7ZDZ/ehdmKK89+X1o16z0DdCesWvXuFwlwN8IG/ebtzM2qrWTX1OGen8G/qiNMct/sm3xLk4m/yGxzxsChsqg3Cwb3f1g/66YAEfFqZg3P9A0kNmYGyKIA4JrCPX0nrzENjcvUFDbveve/XTXrRGe8J628mIEeuLPXfHr2f1g46yldIYABXA356ToFm8A0/BnDnW5naDCobeHZNk8wmMeiM0KPXUqTCoql5wRU9Zb+s9g26AbWVm3Ja6pnK+WtlkWkOT35kn+9TodZEN2tU6qXrtfJxgDdz9ZUwPLKGsuNPD12wCMo6f3esaxGj/NJn1z9A67bF4es9QSnfrbD19sgow9dV43DPWoHAcEN1j3TNTsgEBHEG4SjqgNib65AAFKBvvD9G3r+f1jyWiI9bTXAs2r4O+toN4xmEQDZb+sPfXrXrItAVo61yDcZ+v+OnYFaB/1x8WmZwG+evO1XvxNrtV4o6+hPsCACV/WnuDwuwND69NGe5fM8EW0Kz7/1176yiDcoo303IqYbsH1l6nSSofziPdHWCJLnl2vo67xgfVbj1Q20qtTTpkn0+k9ceb13Q2EUAowAdJ6/Lab083YmgnmNYioIWG4i3ruhtXobufrbZpwlyy/hc5M0k5nAb12zAOWG9NBvzxF/rhGobKNg1NcJv2W+sz13qO01D9QC4rVzJvliCB/WbQbQb1i+Pbv/vD+vo1ZDUAXgNn4AB8NNms2OcBLoArBegWG/F9a4+v8fWCbkP0Np764s6dq828p43Yb+3QlJYJ7Dechsk+n1Yb3v1zx2X4+oRIAaqJQPr7qGop07uqk5+u2w3JrclEljlxJrQBYgTqktfwbscN5K+PHDfFhv8aHn6rJHADKG5v2WigA9u6UYbO4Ju506qprDhtaSQDS9wz1pgALU9YEety+CW9r+cN0QLRrDeK8AyGL84b0cN6B9ZPs1zhsJw3wsDGCAEuG0cnpgavZ/6x2NArEaZjWBppR2WgfXMwbnSDc9TV2DdEC2TW4Ni9Qh+l56YqocC+sw/XU6ArdiWV2GPDa/gATw2xqzJGfGQxTPDZlIA5obOTNC8NnDQxH9YwgBeA29stgf1lrTEo9dyD1o/Wi1DIZuugGwRJqpgMOw3ZfrOtZ6+G4fRZ4hvuoaFYA8KAN5DcfDdm12baqM4NWJerwiHPDb/hvFwb6UoGUN9+G7fDc/hvWFKH4bujVzSDQP9bUGKMkBN4bojgbeG/CgCJABTw2+aD38NkBG2X9faL2FarHGrKrppZwFpJDBy3xfrWAAwcNj2G5mDeohvV2Jo7dkcNohGx4keHu0eZrA/rScNth65iXpea3hJG6+TJNZ9OGxrDe+szzQ3E0dAoBxAAPHDYyhtwoBLAb7XZ1LzV01tKBuy4HA/r8qAZYG7IXoj+taw2pIbRTpqyGzk9YBAPIeWVpjSmh1P6yKIelhsZQ3QYUs2u80AIQjewRuAh6Js1gf1/j6zfDfFhvLfWZm9kD2iP67Znq0khbum9rM/MNihG/Ijf7huh/XGeWnAN4JC2zBtYRu+kWq4b9iNxqG0U6fAE3xPWr3rW0NqhGyQMjUoM1w2TKtpC47xG2dtdQBtgoGBHra8NoMwzVtZsBt2U6HQbuv67T61VxoEktCXrOEbUcN2Dg93Db4RsCI2rYbTiNsFA0T9eF6tSVHBw8R8NnBG3poYj+tI6oMobxiNjCvZ4aGxeshQABHrCwhg46/7AEuYCcQ3rE96f19rs3FQG5uC0A3uyLOzh736/PycD+tCI2gXNGIe2RPYpru4RuYABs4bPsN+Ukw9MYkkvOOaaTr0klvlI4wKZiBsKoBrvrM81vxaw59cwBuEem03hwz1o+w+WXGahvxAAmIb7r18XC9R6eJ3Vmw2F/9RgWvFAI5DcFhvYg3YAbtch58WniQHy+sFPXfijHaANlq/OXtFauL6qAwCNZexP09i9YOuvGkb1/rTkNrSSNV5bIbMCg2GgbFWycKgHK1bnY10jAaQb1kN+uG9SDcKCDLAAyXrfD1wPJJRDcuRsEUX+pNTrAEwG0Y9ZMeumtXNrdUcFR3I6kAACBszXXpobWcmuaG9nDddasqcYvkbehu/cGpinv9auxh1MbTceydG6/I+rRBtuSI1vrwoN0yS0DLv6evksAn3r6AAbZ63w9b8xEck7GkbSnelpG2nRrRBuVg2HhTfD1hCqeaCgK2vlg2GUA5KN4UG5+nqFRtpa7Lq95lAMxs4a9YGQYWQ2Qyt/CN6P67XIayADnXXpUbB11mjLWiDf7auP+nyUb7X6/dTFddew+uI+W7kN9QANVGy3QeohukuA3SgPKAHVG12wTFRtYHXow4ywNxBG/F+oi2Tsg34UAcYN9VG6B9b68B1I26o9NwbV8gAI9dSbMKnX5wt6r15/65J5ovavmlawDDDsNiLZOAtfMM2fIRnHrMze9EG5iDfhd4CPXZYgCKNwP60aRuF2B7EBw3rPv6CEQGqddAyMupc6+hZ5hv/67FDZMZhug25YNp7AW4G/qiPuBu727Hgb31mZ4G68JrSeuzzl5UbIZW9kG0YFtTXDqtx0bdTH1+kjbAxGlQCMo2NjMkMm2oGyYkYP+tq5Iob80eu59jc6jcb/ADQ2pRTdxB/lnSLDegyM8/WFHznkl1rTLnb3MM3526V0blp1vtDe8jbAi0+/poIbpqAWCGy61OphvLo3VHdkNF3u3ePZvzC1Qk7LYAOqNooGw8RaYU0uw3miNlKNx36wSDePRu5o3Y4M9nV+uzZWjeRQAlw3qQbcYNmVQFH9cU105o3jIbtgAJZ6/LnuLK3srXX0bLBB4H6DyjcZID9PXvfrj8AeFG9b+GVQCtg2XU0Aj13HXct9dMp3p4AN/rCUNz4GyIxq8FMqGaQsgrD10FcI8Abf9MwfXN3rXTW+L9foQHA+vQY2wjFBk0ODG6OjfADqqrXlUKjUG3ygBmja/etakHywb7XV9T6/pDYNxzXbX8frbGNgGG7aWYbc0CPXZWzTUmhsa2Sje+RsD+Wz7Nnp17f62f9aL9MX/WDowsUl1HDc39YLBs256nQjZr1zvAzGxtohssWn2wbbU5Bv02P9ZAq2b+XQatXUNxKG2a9YjOubfXoYg2cNooGy62ZUxtDka1Mbdf17Q02PqcwAA8o2vQN1P1laSxP6YmBvn/Xf89sc1gui3P6fkxs8g3rfwaGN9jGy6LtVWvoXWWUbu0l3Wvc39f/8sjlqKtr+/1tsG3CDfGBt0EBeHrBpeix3ZAFav9PEmGQQbg6N+MG4JqC2QvdmryEb6TF4s66tUYe+s14AakbdSNwpG22htKxvmgjakb3AAQaG9MBG1ev6iboO0cxWic2JyZs4htb7WAjTXSN9Xq1F5rPFrNw3g4bk7ZhyrVLpqlz2PA2XnrNAVls665KZnADOo3awDy7Z687GQjbsRtFY2BzrARp/AM6eapHOv/pYMX1v9Fyc6+z9cQACc/XxXrIINoiPZ0dcMDORPWYqgO0AWFFsrDevbNPZtRihgX1wwAMajeeDiQTg/UbtgEDgM2Qhc1Rs5Y3cg9vjWHwG+WDekRwNSnm1ryclketWK02hhs6JxLoA80G2C4NXQcYetIvXaJdsAO3AAD9Deg7Mf16o4Kw6ATGG+AHQCBvo4blAz/9ep5gIPDdISPbY35obh2NoyA3AUbfOsTAA+HrLgV1oAOk9f5AACPWn4AIwAUD6+zkexxsPnW1sb+ONsC6zV9e+sxofXjOdo31pR6wv1a4euMA3p/wG/14KAJyDZM0DXY2kjrSfhx5G+wAZulNg0bIkb0qADnG33DYmbN7fWr3rHVwd6gx9Vr47OK/W2HrIbAVS4Or9c+ya7Y2BPreeRgBS8W+eyesbQ2QUb+IGugQM+LQiT7wgSyNsu5h9/q8joHKevxPXtcbqa4IbZBYLGxE2ISA2LrWQZ0G68YDdMBt+/WuU9fF1yTG/Ejd8hsiXWWIDBoMcSxjmhpPetSA2sude8mvgjcx9cQGtHyaiuddN4W4gHe9aY+vhtbMBrRMpn/DWHjaGAAR42g8b4zF56GwxabeQ2+43dLrWCluWrcnjfMA2ag9Y3ruoOvIAHe9fMgCXvhwFNKCl2YM1Jdfo+tpa7I8b4+SCP63HjbO+uV4308bpVq8K1eXjcSRuAfrfQbPuN8j6/XjeLPWZ43HQb0KAHPG+xYy5xtcTlvPr7KNylcBAgfADqag8NxIAIN2mAwwQnWRuAhXVudNQOmvGwnjYLySxKbXoNcgAXkG8M3vCwMAY3agbXoBzWgDtjfj+voIAWHrdBh6167BcAcBvZw3sNhDn1p/6+9QZ/WO2ym0JDG0NhfG+Pki4gjL43ZAAq+NiBG+yjc3xvmgoAMbnJmsiQOP9ZDw0AnXW/wEcp/kAAhjcYgC742KYC15AAR69t2cAU2bl7e1wHKN9tG5rbq2+vSoAC8bWl1xj6+FgfCetoqGYG99kN+/Gzr4EfxunSh8hruV12DVivjffvX3dnMkbPUN9SG+aCmR501DWmn9i+q+wG2bbwTL0DoHd8bAqN7aAOfjaLDOx/XUobu+NkCPTVDbn+vlhmMobw+N6MOK/je4hvPvXqCbjUu+UG7U9aHHLtWGllNaPZuBrQoxvCwMJg2XLdumYOKnQ2DaU71oNayvr1hS5K+HWXENesBoGrUb31md1DdqIClxv/I2woNk4N8F65gDYeut55qZCb2r1ttnglIF/BumCau0biE5OvgAf9ecAASt78BAYuN8AOpD9fuKMmVaQnrvBN/hG/VUdtw1pPW9vNBN1ma62Pjceevllw1WAksBiqG3DMEjkgd7XWsbWXm67a6mbnjDM+ObKCbvWzX45cwDfyANQY3OTN6OaR563KgABBs9EaeEb9VejyWqB9YzRv3W6Ped7IgWz3XzQYc90MWmAgbAaNuFAIITc+BvOw2Va9mQm3QTfpjd4JsEY6rOAKjJLeG6oDf9Rt+YjC0bYo1iiHftpLFXhvg32nrR5ARiAEBDfv+t8oH9ctZH1rmTS8DckRtOXXmEbMqgR5DcKIGWACH/WE7NX2AE6M3QTb1eteh6HUbUwWnom0+DbT7O/XWG0T/119Qm1Rnv4+vOQ3Zpd/PGr3Gz6DYYtNPg2HCbrmN3366qtboBucKWhcb/P1uUxHuAAVo3wYa4iGd0N+MCCPjbeQDbxaoNwlEZw0PXdDbsU2Nw2Mib9s1iJG6YTfvOtb47MibHDO7iQ5TD3HRtXvXwnruQatJa0OHyoJvP0WB/TZdwQdA/iDa0i3aI3zb140N7y657H2SRt1jWmfzOTBsG6wP9b/o1H42qCbRJRkNbb2qg/c3llwexrMXEJvGycTeIhtAk3UfrHktAn6+fjdME1QY3/IAm8N/dTF6HuyAhwk29oNP5Z5HqNrGeIa15/XSbrkPRm/g7HBnL+uafWkkb7bGiQ86Ipbf7UWA3DPrVSNtC617jdlkBGfXu8b2nFzrY5MqepJuCE2dnr7Z1bVG9+DdoIsYxGgyNTwNoT08Q8EbRs3Mm1qqKYFb4GyewC8FMGw2xYAvWzfp68z7qSwbwStDENt6N78G3cDbnUgPA24XrOMhhUM38JsbNUxfXguLf9qtPABgjeOhuOd6bOd/ypwW69+tZFuuKShT3riTBiNG1yppWhtKPW6YDQsO9nzQC9Z/EMIqngoz2hpu/zYEM27MUFo22/zjEMpTG0mUfJBta3XPEbgsNwRGw072GetHJ6h/ztXFrbOrbhqVRucmbpv1lsun33XQuHlZMdQb/yNuUZ3vbYjDaDeuSvrxSbza1wZ627QDdRswsbpnrqfum26yo+t7JvT/XHHrw0N12693+uHJumTXZfYI5Nlf6349br+tFRrRyjq3Fh/85OUZrh2pDmsYtlDF8AOiqDdUd1ZDmJorOQ5szG43+AEesh3WNW0wQNzco/sTc+UvK7G3z14qmatGwlDaH901DmMobnqN6R6/nZoEes8OtaEk/CewJGw+TcmJvXzh/gb2eB4F9WwAH4Rs+k2HuL10V9XY5FQFe+snRmE7rzWWl6KyBTe0+u1qmCXNn8OwcXaBTcMo0zYmCCdB5e+FhCGqfo40CPWcWDSYAZ56/3+vKmvpOGYKbWl6rJw9DGbLuvq1rIJwngG6QC156GSev4U2iYrXfG7r/tlpoIADYvXMhN3U1mhjQxTabuv9obmByDMV9dQRDlvwpvnYmWnDoGm/Cm1zFbrfUWqJaAAYL15cG1YBagpsnRnvhz4lN0gPXipZL2Mg6Deim0lNw2tUCOY0fACPWPALWFN5jJnLGdnuukqWORdClNvS7JwHuBcNkjnhqNpFNnSm4q5p8D2UU3ogLNFN4VZsaIJYps7qn6KbmQmpIC4ZELip1KxnOKb39BDXi9c4b4psX3XM61Tv3C99Tfdf9+snRnN9jclNoIjTvsfQpsexWrA9BjmbCm1zGdZHOkJZnAA3910tgyjifLYNGU2AHrYyOiim/CwnxmukU29IttlN/oCyEHq1yAsU2ENTSSB6Km7Kpe7YPOU22mtIcZhB6/lTYj4spxW5gL0fFijU+g9Z2AuYPWeZrJGp5uK3OwbT4v4ansNs8PWoyNaQ9ZqUzk9bIhEZqlreM5nicnhMwnGiDjXhxveK99cbGlplQmhpaNhx5f40YcdwONtfGRpaa1xiZ4wGCbnOONHGIzjtIFvA431cdkOP4HGPkTQ1N+NS8ocaGlp2XG5HjHhx5x46o9YvOMHU2tbjYRxyFEwE8YjONAJWuNstTxnC45kca2pvT8Wl/j1pxiM4ykcfcBOPPH6jjOCV76uLsccYON9nHAAAzJDqHGAvjiWJpam7QlcYUNfU3OoTf1Nj846x8fMxPjS1N+LCbxzG41rcdBpu/U3/qbkNN8Y4xGcYuOMnfGTTjJ6JjQ4xjTbHONdnGFQT4Wp35leoCateMTPGRnj58JmI46jTa+OPfXH/Pj81NrGm4OidxptGJXvh1JNNsr42NLVJptA02ah9Eza94AFW8fupuDPXVTjrhx4j46McahpvLU3D5rsrawGm/QcbWON802eabfNNvl49DTcs4OxHGX7jgaJpq45acf8SsqPG+rjr5xjw4wfceRuM6YI6QAzJxhUE01qbZOMv3H4ETOpxjWm9/NdlpuQAAJabRtNgBa7J5uZOPhi1PrjgU5u4LfZce7ePRHH7abh1xudHWYmYmlryHHGDjbtNhDEz89feAAWnHazjP1N+g4+2iYjOPmeanTjkhx1043p8YKON0PH6krUJxiam+JccNuOBnG96jkiJo2E6R4ekOPGHHcDjUVxhM40mcbGlr//GaPDLFxsaWvQCZTpsjImmPDEjG7tExNLTuOMBi1LrjpZx0LS7nTdIuNdcHm7jlVxmM41YAc9pv+AmBPD0DR3y4x2ce7ONgQWd/j2Zxow4+OcaB1PvAAu6bVJx/gE79cfReMiCWB4N0Zx5WE6M8YOpti02Izj0r1iF4yrTatePq03fkrVvx2am2EcY8ONRAm2QTWdNiM424tezINW/G2cT7aJyC476cYIOPfPGRzjotN0Wm218fqOMafHAxaMUADo48AACmOMxQAZjj19Ns4E0KccyOP6XGr/jX6J+Y43cceg+OCnGjjjHxxrs4/QccaOPr022zj15x+i4+vTat+OdXHojjehxrs4/L8eduPf03D/VhuJj+m2fTewuPf/HUTjEhxoX40Yca8OMY03Mjj/r152APJyo8+NsHHiPjeIJmo48WcYwuOeHGxabfBx2/LcT8eB0sc02bzjTQJ554xucdFpvLHGUfNPxx4I4wZccWAO0HHyXjVqJ/SE0UcePONY+aZXjNFxhB49k0dfpvhXHrUrzsAdS4xNLWWOM46Xv/jRhxsRmwScf85VW02babZmO+WE2JcZEePsnG7cT8y1mLlXocfKOMeXHsLjstNiM4wE+pwhM/U2fgD07x2N49YGuceMzXG1x99FxhB40FjuR+PmM2c0rU1x7w45eCeMZuLvW6QAtlx0f45+cZ3RMfXH/RaJsJl04+iAcLeOb02JLjtaVqOTNoza8uPvnGA8TdZx6IS9/8e/psD3GQjjCjN0Fa0SceiuPHU3yjjhdN3tK/rLsSuPHQmAvjUtNsWmyUicz4PknHwnj4Xx1WmwfcZ4ZtorXrcTU3x2p4y94bsuPLnGN5z8oJ5PS4MVW1xNkrWkeVNhxq14yHcaVhN3/GcPrjp6h549wzZfnO7XGszjVJxkg4+S8cOuOpGaYmbyZJ+y40NLWiZukomd9TwPavBm6LTfDFqEM3iGbdDNshm9AuZ2psg3HEmbXQliG4/tTcqOOf02XTjYYtMmm/fqf1l1vbgXl2c+oOT6z7TfbONPnGxpa6xx+6m7vpdeTWmonLGbZqJngEzszYv0vDCWp/jN5x9emyQccAeM0ZWYZtpqJrL4zd8YgZstXHbWjpqJme4xZCZAMtW/Gvmbxhxn5m/QcfZj1+3G7bjEZx6HHS4zf4BNG3G3bjULNuYS0R8cROPws33bj0LN8dM2Yzd9eNjS1Kvjn9NyFm/czYtgsp9qbGbbXx2s4zizcW+Oa3HEWbeBl5g01CccIuOZHG2vjNzNsq4yocd9uOos2KWbVBlng0/RcdpZvYXGbmbmjNma43HTdtuP4s3GDLni594ANyzYEOMWIn67j/LNir6332oZZsis2ojjYrN1mm1FlfSXPCs3OoTsWJ/Fm6O0edgBSs2lWbRRx/FmzBGoZhMt3GgoTTBx6O44Rcf1eNlwWudjzsAKnE6bTd5puc/H36bLmJqy481lfVuNXHGW7j+kJuVmzt9bpAAm02zWbiTN5d44PCZfBNnM37qbd7R8k4/PTbVptHnG8UAbrNxc45UcemeNTfG9Tj5zNvRm7RmZXuMWs2GrjjXx5amz99feAAeHHXDjK7x6l4/pCcUxNNkGdBVUzNghm2kcaIZsZs3RIDCRl0e47v8bQZuQABZXjkrxiM43kZf7pvFs3n7jYjN8tm+UZajkwQPHLDj/px+l4+5iZweP3U2iuNqpxgm41j8bWZuf02cITpVx6I4y/cbF+PfCXFLVmYJpJ451idiuP6z7R2bGfx684xvcc0uP3+Gp2bFOVjB41HJhNpvjs2CHjK7Nvg4yQ8aWBPQ/Gibj3OVkhCzJGr0xNcHGJnjE0tBF4xGccsW0Hs2cIT69N8h4zuzdFXOP7ZCab5GJnm44ezeiOPHs37qbCAR5Q4yzifPZvPM3LDjV7Nyh47U5v8W1hQH63jjbxp1m+CIZ0eN6PHhfjZVxl+4+UcYEOPPs3STjlv10Da/3Tcq+MpPGoGb9Bx0s47Y8YvRNk3GsmbFdNmAE+VAfA2s9yqbqbAXxhp4008cSZtaHHILj6sJi6m/d8cXOPXomOTjkTx01E86iZMONpPGvQTxHN5Fm+t8cB+Nos2k/rg2Z6xWoKcdI5tk3GuzjbXx2g41NLTCeNHHGT7j69Ngjm6P8fWZtGAnFTLu1J5XozdTZO+O0HHsRL3vxm5m9+zcgADQc3zAjjxx16myM8e2eMUfGyabUzx+g46RzfB+OmfHWOb5SFoKNRfTbaOOP031vjQnNnCEzI8aJuNKc2T2bO656KVXfTYfptzHH/Dj5nNiZ44pzeU5tumXvh1iNNiGm/zTZRptUbWWLNRUahGm+DTYBpt/PGnWb5Ua9S4zYcYOOMRfHWVd9cJ6F451CYFOPYnGbmbNhx9+m06zflM2+i02vjMTNi0E7YcaS5vS02+uj4HNw6m9xtbkkPMM2zDjHZxwz4/xzanZtB4mewTcrNvUzZj8fxZvSbW6+D2uJ9ZmzVzZoKshraj0T9Bx1Bm+NTe7RPoM3pGbzNN3J40K8ZFeMRnG01tMjNmI4+vTZ1Zt3IX3gAsrx194/MCaYOMoXHHkL43NjN4+IzZiONdnGT3jDLxuVm8aOuvOPn3G7k9BLxkO45/xs6xNos3pgjf3x8O4/izY9HVwAnKObZNN5QALCACfrRKiXTUTcAJqQ4wD8d25sGbmbCrnuJo94zMccFBNJnHRbjyVx3gG+gJtW+P0AnNfjZTN8lbKg/R2uMnInhfjt3Nz/4++ZeR+O4YnmObURxnhm80vp0RPBHG0bjEPNjI47qJZh5uBi04ebt3NjI42EccvZvbs2Amb85pl1mwnCapT1Oc2njjlbx6Q4/dTeWSMAc27ubu5p+InTYcfU5uVc3WtrJ3xrt4xqCehpvuA2qtzjxx8J405zempu9ombvjuNNkaWvkCY0OP3nGULjn9Nkk475cfUON6HGWrjkpxjiy7aJfpEuFc3xjj9AJxo4zxzewuMkvH3zjZXNkI4yhzcwuPh3GpTjdxx9IGxSEaCi2S82FubC3Ntr4/LzenuMaHGknjSvNt7m6rzbHON3HHP3jAfx9841Izbm5sCHHhebJSJl4q5H0cdEuj3Hk2b7mJjAE7DCaRhNm831DjxvNti0x0DYE8WIfHNPjvotdemyTTY8ON/02sPjRxxzbmy08cm2tsr6C0LEwayI48UCbsBPhPHEubv4JrNE1aicw5tzA3i09eHN5Gm5hzcgACbc2YATc21vj40miY3hM9PH5fjehxhh48bzZH6NYIGFPj4Hx7C4wXTaepvUHHAGbbXx2vmyyCbDZusHGV/jDXx4MWjt8btuPr029ObIuJhBm+48dPptjnGWrjpgAea42NLVQZsOnGP/jYNxmX41B8ezZszM3c2bL8Jt0Ez3Ta7OOawnobjsiJ4g49mcZ4OMx030Gbo/Nib46qcbIBOYc2wjjFpVqEG+Q8e8uNYPGg0TwMJp5ExyzYy5sjM29Wb1/Njk4+4zcYuONwn2ubsdNhCE6LTesAAi82yYTIzNyjm5/TbG+MTfHoObZhxge43bzdF5urbWRvjglmuBE0EcdDuMbnHxnjNxx6/myeicteMzHHQTjc8Jjb4x2cfruO8c3XAT8NN9k42fzZB+PZHGEWbk7x2Bm3w8Z5uMcnGBebobxwfm/QcarKuf82+ebGfxnnmwPcd5xMSnHT+bNuJ6zm14cf/5snAnqDjl/N6g4/kCfGeMAXGPDjcxxvs4xHTfZxPjS0yrjeLx1H4wlcYx+PLc3xpa0O1i0G60OqeZuO03zqbZNxnfm4W8dChPQ/GNabzoN79fVILcAZvnU3XmbcgtsD45hza5ssrInGDj1/N1AW2jceh+MTPGHmTz9x5QAJE8dDONugmOTjDvx/+mxoADJuOv838Bb/PNm848QLbt5s87XExLn1p2NVWYCbU5v0HHX6bAjx7s43Q8ZQ5u703FgTk/Ny/mwPcfPuPKwm0+blnNow40nzc4hPBHHKBbvPNvWE5bzfgROr02GHj3zN7YExlhYm1UPPH1ObGAJ5g4/Xzct+OJC2rATOxxkv48bzZz5v0PGK2bju1nlNefcbFpt6831PjehxkaWhp8aOOM5C3QGbiQtyBm5oLYUFulnHrAABQJqC4/IieKON7/GgwTxQtwAW6Gcb4ONJPGgGbEzxl3mwfTeeuP4M3Z+bMlx2w47iccsONs4ny+bSolm6m6zzeDFrs83uzjkhx7nm7zzdKFuCgmnBbdNxgYW3MibcqtXM3XATn7N8va5Y6rOptrfGzBbpDxijm8rcesFtEHGNAAGgtuvazZZuX+PSHH2+bpyJ7tE5v8fUOPb/Hd/joRxvVm+DcdD5upon5bjEpxu3m9YAHVhOyHG3ET9/x7M4yUCYH5tAi2r7L0x2v7C+DcdGlqBHGv/jP/x+t4yNLQIhstRHMhbUpxgdm/Q8egZup83y+bxZx8I4+AiavRM3om0jjSAJ4MWqa8aMBMYln2F1yDNo449bzbEZtC82Wrj1gAcc46PzYaOMjPGGhbI0tLw48jzfUOM4OXoRbH+1mtk4amvs5vhi1TObGItsc41iLbuputC2IhbAotx+mzFAD5hN3gmV4TD4Jz1m2Dcf15s8i2WHLMgJ/Xm5KLY6ONejGa9daB1pf48K8foOPFHGl4TlGJkXm0fTZu+O4HHKPjigtkgW7ACcbhPgM3z+bZNN//m3YCZJFvfQmlqbA6JtyG3o5cWVVXc3XqbjQJoH42aLZQ5uNHGS+bZOJ1RQ5GWYSOPmi3DDjuNNuR41QCcvBN6HHlLjbXxmIE7icZ8FuZc3TXjcgt70W9LCem+OZAmM/j7pxnw4+NLQDFqsC2Nhb16J9lE1QLe2BMOPGLTjIzxkPm8L8eKFvXnG9WbRAtum4zLzfGeN8c28xb8Qt/AW6MzafpvYnGaBb8YtsmmzMceKhuInnSobAni8e43vCaGBOUomRgTkpx8YE2dCeRhNK/G7wTswJ4R41ECYK+OLAnlgT8QJ9oE0kCb8BObAmOPjBYt3YE0f8f2BMMHGqITNQJm042cCbi5segmZETLQJ7o47cCfaBP3AnqgNxRxhK40h8cquOs4npxbsYtnRE6Tcay5uJi3MOb93xpK45YLZ8OPrHHNnjxhxiaWlYLZYFvjPHQhb9nx/r4x0LZ55u5i2GxbA9xsmE0WLY+uOc83s+b5Yt9Q45WLal5s1i3JpadYtwCW9SLeY5vBHH9ITBjN62m1ELay5sfXG8+bH4l9fC1zWpWZvcOnhRbkYt1+46ULYEdNofH9XjdVOnk452cakROGHHR+bW9NvKzUI8ecePZ03I1VtZx0i4x1TvaROzlnCHjoRx0M4yyzY7TVLgmkTjSu+/Nm70KsSZsYc2w2bZEJgPEy4ic25tpc2CRbOFxxE45SCYYFsJs3mBNdIJyw421zfA+NMgn/QTbpxjemz9TfGuP+VqhJbiDNqU49RLdrFsG82knjxPxwlE418fxZtlpb3gAmLxyo4yNLR6Fu8gmJnjAoJ9QE4NTdl5scnGB7jiYJmXm9BWeYItu1X/DNN1N6pm1hJbphtcbZEmbqoJ/+4z5LfZhtwQnXLjUdV7mG9eqrSZvPi2/Pjjkt3jm3BLZtBNpHGErju8J2IWzwcfKuOugncxbRxxwi48/CcGFtjs3/QTuJxoME3qceKOPr03oObYNxiMEzhcdGFv0PGBDjrktlxE1LTa0lvPjHHTj2gJg8E02cZq+P8c3rMT40tUwALLTZK5sFfGQ4T9oJiM4+sdbKROQM2e3jtoJ3qW6YAE25v3wmEXjJ3N6g4048b0Zv6MrpDj4YtAg43igHIFtuPH3WbIkti34w0cffFvIc29YTGhxlq41WLZPBNDc3LDjvEtlcE048cTFszS2gqzA8Gxtm8Q8boONNs24JbBvNnaWw0cb2ltLU23PjlgtyC41F8a9Zu1nHKJL47N4h44wLdwOMCHHwbjrAtoQE3eCYDpvT3Gt2bT0tk7m0Qcai+NinGjjjXrxj4E6EccqOM9C3jDjQYJp8E29LbqlutJ5R11q9xjw49IcemptZAnDwTMTxgGmw9LeyltXC2qObgrxoGW4+CdelvAy33pbtElxk1e6cb7ONznGspbgDNgCWz6LaP+M8HGdnjeDxobm6bTbIBMRnGX11z9xstm3NzcleN0PHMPjiWWumW5YcaWls2om6ATzMt/AE+7cZOlv6m6DFAJEJ6O4+NLUaFtUS3hfjPMt2tm7rzevOMGS2etVQstuSW6ide7UDrZbNZbIstuOExHTfbRODon/7jKstnmW40cZieO7826HjxEJ/g43LLbr5vr02a2b74tjk42bLe/OOwS3+ObGstybm25zZt5PTnHLzjB3N8G4/zLY5OPUy3aZbk3NkWW5RLfFltrc3JZb7MtyOm/gjceOM1HHivjoItjdm3QcfduNOS2DJbYOWwqW8VLYRePEc3pwTs4J/GWz/CaGFscnGvLzWQAeGWz0LfJlt1S2LrNLjVsGDbJCZUADmC3CZbYNx7QE3cLbGlpmnGnJbLUtgr41kcfDFojnG9YTW7NhW7WDlqLlvC/H3W4Dzx5uW8RCZrlt4gmb4Tt1NkPm3FLamlqxNX6S9tXmnbm3bceTls3S3InjGYJib44kzY5OPKAAbhb6zNueW/xzcFlsey2T2bkD2nKWxycc0Q2ay2Spbg0t4s4zMca/ZuHgmJvj3HN12W/dLZbBPZc2mmrELxtTmxycefZsby3r5bjrN9qW258bzlt8PHvxbekt4X4whCablsGS22pbUpxpfm6zicSlu9S2+PL51xxwW/ziZRZsN/HSebLLNtZq3SACf5tRC2nHjz8tl6W8+Cc5OMly3KsbmLxo44+6zdS5vngmbpb4Mt4OE3v8ZCuM1y3vXjsMt8mW+nLa8OOPomgFbinN2e47gcdD5teHHcDjY8t3BW/xzfbRPdI3LJbf8tm6W3LTeUuO6S2onjonNzD43LTfYVtuy2ZvFactyw49BzYHROgtXpkb92qkXm8mzfdONdvHvLjQN53S3fU9t/dMEpGR6zGrNpKWxMxvnhNmHHb8tAXxgqE5Nzd35tvnGCgTNUJyEWww8eneO63HI5bLTx5qEw/+R4OM3i2+Bb5VxwQW6orYnuO/y2r5b0sty38FTeZ8t3DQnPATAXx6d41IzpnwP7PaZJLjAp+aExucfFOOW/HvWb94t73mwydYhePhPHXxbHXxhxmxZccdluT83Exbxhxwlq3JJrmlsLS3p7jsdN1Bm2cLcReMBHGnHjyQJjw4z9TZxptOS3UGbX0JskW22LfE5v5eX9bzhXl/4E2kccehPWwniPjsAJnAE8UrfJFsitWerd5pqnBW+1iZCOO9s2YYTIMJsQW415eJuOKfG7fjk7xyj41+LbVlvq4mGlbDotkpW49LZRRv1GqlhbVrxtnmzEcdVBMMi3dJLlS9EYW3HCf9psIM3L+b8MJ0fmwzcZjONUwncBbRxx0lG1rCda+MjS0Rnj5Lx6R41FCcOVvUo2xzjozN8+m2kcdxpt803j/jpzxwvm1Scel5sD83Uhb8bVukAJzCfDFqO02qBbCQtu2EyM8YDFppnHpvjnjNw746a8eQVv9wnAJbUStmr4x4cfcxPfM3ElbQEt7B4298ZJOOQK3izjwyt7w4/d8czRNXK2v+bdgJrGm4Icba+OGHGBrjzcthSE1G8Zq+NlQnDUbHyt6pWwL8e0Zsj/HAfjgYtcdq3chqjhNi4mYTjvotNQE7tTbfOPeC3rFbiWJ4+WwtTZ6ePr02iPjZsJ/5W1EccROPFi3/RaBqJnpW/A+ZLhOJC39UTZhx6NG98zv+BMAS3efjKHN/QW7z8fPBMMXHlVbo/Nvn49hcc1+PeHGbpbi0J0I45h8fAVsaq3vDj0/x9BE9WLbVVsGS3+4TnrNiOW5bLfE5sAdWOfLj1Nn6m8C8c4OPFnGSDjc8Jqb4zXzfFON2y3hZbjfNj1W83zdmuNPC2Xhb8vxqWm/18fYFvAM2NDjaytkWWx8cclOM+i2G5bfvxv8E0irepxM7HHFBbWDNhsW4BLZIOPvnG5abutxqRE5/TeF5sTPGReb/cJ1Bm3ezevRNGHGAhbGxxuM41/CcD5uRy20+bHHV0BE1N8fB+MxPG5Wbhp1rhE1N8aCOM2/H7qbO6N9uzSCLa7hPJgm4ETP/Ni0Wxp1cvRu4omGZbnPx8Z4+JifGeOZnGu1b9oJib48icbZ5senHP5b15x0dW9ecfHVsBC3Deb2Dx+1m0VzfnBNjS0v0bTatsiE+ALbDuOX83oBbQ6tgQ45grfZRMY82dpb6fxzI4/kCciOOKq2h1bSEtl1E6hLYC+Naq3b/j8MJmI4xbLaZuPWABMjjpnxo9myezbQVvli2OTjyJx+RE7qraGFvgInIjjuNNx/42sLb7uPmi3j5bf4JkYWwuralONQgm2zjaZx7RWyarbFZuZi2bzjcZxnjG49zYmFvTM3ZmbAXxztW2CLYwRPjS0lYTVxxstW5YLam6sZ2GtYTMmN9qTdbRfeADCfHBXjVit28W+SLYn8vBAm5hbQQtxTm5E8YwBMJc2MJbIatjk4xxrcIuM8824fjl4tnX41JLetFuQM3X1bdDx2qS61pl41sMa38Wb73VwYqoVzeK5uEq2F2bx/l2tnePTbCOMis3R+bMTxhg45zzY5ONlc2C1br8Jrg4x7CbPVvQc3PMb0mJldW2ZzdBpuuc2bObUWNs6TVb8f0FuPgnoLj2Gtufm4YcfTRPZnGrUTZEJzjW+SLex6sfSbFS1lmt+6m4T1ZaiMz83ZmbCnNzHmwwLfl+Nli2rUTDPVhGTaA5vzVv5InMjjhSJj84zRLaQCsAK3n/TmCt9Zm5VjYoltJvHCLjjBx1LW+6zcelvHy3FObWYJk043QrdH5tc03iArhkG1pE0YceYlu1nWKtbOxx+g4y/cbGxv1GqSDjFpx0MWkpccJuOMBXuzVmYJu6W3pCeSZuHmrCtbW9N081Z1ieSZsM5HNsb7wAHSW72zYnRNws3FITULNlQAAgrcJRN503gAAstN69sxkCbpZv+i1NJbxHx+ZE2kcbtRNys2OAz+atulm31cea1tunGSDjA9x7P4+oCel5vZc2Ry1e8t/c68xLeOROnImOebAhx2E45pLfNfOFYnOvjJgV2M448idNpuvImZDjHyJmwKw5idweNNs2N2bDDx5QAAgrculuhi1AxaLgVzw4+ocazBP5K3ifjM2tzfmyDrduFsAonQxa+rxo57TJibM53SA71bjLOJzJW9Pcd/Ftlq3wbjcfxy3mwXcefuNys3Bcb22JkNm+OifSuOzXHNfjhOtoKW9lzcv6s85X8jjD7Ni9m1IibCONza2z1beEtot83/JbnpuWHGT7jwAAJjmytza5d3eMWudbrOJzCW8AABsZsNHH+PjOzNht83I3t78vM826njsytlYW5Lrc6CtFs73Rb5oJwDm9lzZrWMj/HrUTYzNhRm4zVogeMSnHtdbweNn2m0yrd4eNS02WYT/sthRm5O+fCtXBwnPzjqCt03W1IcfN1t7rGnmbButhVE07rbrhPsQnYrjbFagdEwj8axOPCYn7LrVnZmAW5dcfIxM1y27dbrMJoZm+Mxdv5uuonmrjWytwPW6E3oj1uu62IabwYtDiE4Brcw+NPM242bYYtH+m3nTcDxMMHG0zj+mJtK61lcekOPMq33vj5Rxo448oAGTZuFvH/QTHZxuXRFBceq+NXc2tDj8FxxaEynrZuluU822YTGytwMWlJLevVvxC3fbj95xqbWy+rcjlt6M3L8b7wAa3WzCca35udXHnNbK7xwPWyoADL1u0s2gfjtwt7jW6srcXBNWvHh9bXnNiW46WcdtxNzfH/5bawtz+mxacY0OPfc3xnjTAtnC44Oic2Fu4s3xqbotN3UHWVzbs1t382U2bEdN/SE17raXhM+63QZbytxkum3H8e8+Nx82JdbygAAC4zOrduFulK3sCbGoOs642mifH1t283dQdYwtrV4zFAFqFv1C3p7jYvxkhS0c+ZNRPCq3RVbAitusWwWrdcBM4XGv5b0Rx5vW2TTaLDOOomrXjzqJ9Nm0cLeAluOy3lzj6e6/9W0YceT1sZ/GR1bWMtpq4xgLZtxOhHGbmbUtN5+W5qxaWuuL6qnmb2atwi44icateO+i07LjuTxmY48mifUOPQnGfqbfwt//W4CLYZFvOwno4TB+thLW6gzZZtUyi2Dtb4dNvh4whrateMIPG2UNaBt6sW2YCbgFvhi0Nhb5Bt2w43krYPpvuPHjdb2wtv8E78LcHRMCG2SBbMwtw2414cZr1s3S3BpbEpxhCE6rLdXVv8c27jj58Ji9W3w8bpuMi8272bYNx5rW0LzcMNv9C3FlbKI1nTY4vqsUNtIwnMPjS0t3247zCbm+MRs3VebYLNtBW6aibaVuoM2mObMCtvZW0WGbvOOgG3kTjqnxnl4+yLdiFsW9mo5MjTN39W2rCaceMPfHojj4/NwI4yYcY7RMoc3yPjLbN0I4+6ccYFsJa3OrjCStz3s6pzfSONFXHI9bKFx7XW6YAEtuOyHGjXjJrx7VW1NLXiePUHH+DbAIti0W9sLb5puVC3uFbmutmJ47q8f1ROLU3uFb07xnPW5aNecrV1q3rDbtYt9FWyIbYAZuBi17vjVAJ1g40NLXUOMic3rUTERxr3myGzc5luuVrAbrLaJ+aW12ifNFuJM3ARbZhxi9E3ocZYNu4HG10Tk6JlnW7eifWVuDomWrjB/N+64zuiZi5t3HGzDjNNxqsW9qcaSeO3onVQT5xtigEx4zYsRMxC2AjbN6tngW5eCYKBPHc3iRbtqJxZE1pzeBuvYRXNOzNHNqnm6LTeepsU/qTXjb5x0w2/DdfJKOMi2XMTi3x6BW3XrYWhNBK2bDbnPx9Tm5tzalONCG3Ajb8PN9IE5Icb6RN8PHGhbNHxlm1cica9BOKPGe6TK417ko7XrcDFo3c3ERbLLN68GzoKrG1uDon/jbz1xho28cLdeZswc3oMTH7+2383JJoD1tBonfQTbIJn1W94cYb5vuq2SDjvqtmG423zYNZto82SBbRuJudW4S8ZIuN6q31DjAFx6C47zTbeuNz8272bN3N5A27oidCON8PGT0TKFxxbm6wcauNu2HGhpa4EthYW2FBoJuNxa2ikTCpxuc4/qbYmFuGm2gtbWWtgv403zflNteq3FTb1pxq8436rdVNsd831TbdvN2O476Ta3XUgQn0/zwxtrP8/Gbfcitqs3xMTRtNvPlajrZ0zV8m2ZbrlxxiaWiHzYDa0WPGaxbE3xsD44mcfDROw/G9Dj5Lx/j423+YWuPlMHU0T0IJtM41rdcBpvjS0zDjn9N5LW1lFZd921cWazbc3xxME65iY75vaC3muLprNjf4xGLXKitSTXe9t1zN3021wCfNRPwnHgubp9N8WmxazfUmuec2gubpxx3Pm+OTa5/PhDm+yjYNNpGm0wccFFsmc3HOb+mtizm4lidz5v9RXzmDg0V1cmwJ4owBPRC2lzb7/5tya4P8dzU09Tp6NbrYt3Pm3/+d+5vqpb2dbIAFtFzZE8bfuPRvHr0TXZx9em71icYVtEm3byb1WJ4f48Gbbu+NqKo95bLxth/m5YceB1uDa2Jnj5WJoamz8pae4uNHHnHj90V4bE3PTb4OMmnHsub5AF/I4yNLSQtuG7HELbHJx38o3ccc2xMYsHnYA2+tu448UcZWxOgxXFsTy2J3Cm3SAGneMh4nNJbiMVwq45aceP+NJqnLbjDFt6QC3occxxMUW2UYzBzq5g47gcYm+NMU2AxaqRt1im2S8eKOMxPGy1TQPxvJW7tifRUvOwBKcTlpx7i20SPTfPXOnGw6bu/NqwC3hbaHuvQur1LbjMZwi2+XsdIttLAn1DjHgFqi23Tcd2mu0W3QjjKhxhi2wdNaYtsWnHj/joQF6F1WxbY5ONqxXOLb0Lxgy2xLGe2cN8W2JvjslRoS20k8aSAuiW2YnjSsZyS2xZbdPuvbYng8TCat3Xi/arYjOMUi71Lbm+xnS2zvsb0tvkW2Qqbcfeoy2+oce/VPTvG44Tx/xp3i1ZbfSttxU2XnVO2JxKm0KLqctu0M38Zr7ltzKmyJcefhN+VHLbjRUtqUcyo8bjOMcnGQ4zclthNWyzNc3pyRxmlVL1VNketXHrZZxNs4mL9bNitgQW8cresVsti371b6Etgz45/TcmNuJK3C4ruwFkYW5wLbmOPkC2thbQMmzxW7qzceNtpC2k+LhuJx9EwdTde+NFomydbWuJ0a43d8ZrjOujncHr7o5/B68tbbHOOrW2djbB1NoXm0ArcgZuhnH2hbfo553/WdceTRPjPHW/jDctv+m9YACmlt0gnh4zQs1qOTNRzdGpv7fHdjbONNnt40GiaTRMuInZjbS1N1Mc1HJkjxNfa3ZDjx8tuPE2YcYTxOrsHEhEPVNosc8XxbXivvABAAAiAiAAAaBEAAAcCMNTer4sMD6lDjgAAQgRAAAAAiAAB6BEAAAoCIAAC4EQAANgIgAAXgRAAAjAiY23nZroHqqm27TbbRtvo23AAAeAiAAAoBFJtuAAB2BGRtuAAAmBEAACoCITbcAABsCMjbY5tuc22zxz+NtjG24AAEAEQAANwIfNtim25TbcAAB8CNTbbFts1uGSRL1itfG24AAAYEOm2+YPqCjVFRrcbbxNt6m24AADQEQAADwIgAAEAQubbmtt7W2yLUfs1PXKr9bbRtts22xbba1tsw02bPV0T152AOTbaVtuc22+bbgAAWgRCbbKtt5/E78yoNtuo238bbpNtwAAGAIQtt9G28zbe0Svu23lbbYdtwW2xHbYxtv002em1gdt4O297bd9tuQnHDbb0tt4O28RLoFtuC23AAAoAiC23Lbb6JxnO2/nbcjtuWcHAAAmAjS23AAAkAik23tbbAum5O26TbcltuC23xh9Jtt0W26ycYrtvV230bbuNt5G2xrbbl03t22a7bxdtpu253UapWy422+bbxtt1u27bTYE8V9230bbo9twAAAgIpNtgpK87ACntu522s7bU2ppgAyzbeptss225bbZdthW24TbfAEso23zbb7ttjG29vbd3ttenHqGNudt1G2yzbYxtts22FbbXttveo7jbdztuU22ybb2tt9hjcjbeptuo23zbbnNtmW24/bfnttNTmUbbb9tj+24AAFwEH22+bbe1ts502y7bxtthW21LbeptuAABqBBAdtOEnAAAGAio22K7bCttsu2+7bdvts/o7PW14DtyB26A7ZpetToHePD99tle2x9qZ5uu/amrGN59twAADgI4dt3G21TbcAABYCD/bd4HTl6b3gA5Dt8O2wPbZK0vvABGbb8dt1m22Q7bftuEO3Z6bvyVqQS7WzuRtuE2257b1DtjW22Q7Z9tvB2317bqNtybS7zbfAdvm238bblNtkB27jbZltvB23cbbZDt4O2xXbYxtt823oHbADt822yzbZNtsf23IAAo9tsm22Q7Y5tvk22RHbxNt4B26Tbckduk22THbNdtyAAIbbcsdtUO3KbbtDt++2xjbfxtvG23AAAdAjT23oHbZdtjm24AAGkECVK0D5oUVQpgV9HbXNtw222TbZntteO32bbpNtvx27flvPtuX22I7b49t5VK61pjUdsU23abbBFxnO29vbbJtv9jaibbgAAJAQ6HbzyZ3G2+vbe1tvZNHVHbc9t5i4wTbc8dva22cdLqdt9x2147f4uMj22x7bXNt+wS0vbf/ts1231GbTHRQAAOAIEtt+R24Q7YCfVaO3a7bqT67u2zjLvgdu0O21x9qjtsZ26TLqjkxs23UbbO4+1J9anbeGdu3LWo5MgAAdAQvbbLNtwm2xLbfRAN822n7bMttjx22XObpAAS22Z7b39t7W29EJat0t0gAqHbbTt9h26NBY9Es5M2QgDEtt9G2zLbbltv123G7bU85uSdTnbZDtuU22ebb9ztx523Q7dj82qO3FbbSDt6W2wnbfj0t0gAKHbcttkO2207eUduk22NHb2ttnCfYg7cvtvL23gXbGelofU10iYWj1I8q+bblNtpF2z9BfeAC423fHb0LttB2/7Ltxdsc23kyTLNtj+20S7bodufpXw2NITth225zbfCduk23InbrNt/x24szdxtuE225bbudtwm24bbc+dt+22s2NLLttl2xy7czttWO2vbbZdt9p2zguZOx1822tbbfNtmB2yA7a0ds6O2rHbGttmF2+vpdzrVqfW6QA29tue2zPbeFdvo22Z7b5tt3T69SKtVdv0u2NXb29twR2+U7aLw3P+bF7bCtttV2xq7dxtsY23IAAWrtqx2wo7ZrtsG23onbtrR8+2+47dFtsz23xHb9Lt+124fbc5dvU22tHbKi5hatbI7dJtvyO2QHbhttt+26Tbcddsc232Y9Mttr222TbevtvoO3A2jdIAZG217bblttxu25hLSjt4229TbdTdtoGXnYAozt0m21m7YJZvevqZnb+btqCk/gZdydtSu2b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94iReAAA87UAAD9fmAtcAABaYZq9+lHsCeLwpzOr372m+q98AACG5oAADmMwAADwWe9t3Kc3K9/xkfvAAtnvgAAT+1AAACvl71GBXvC059hjYAADQdQAAAipF9RwAAGDqgAAMtsauDgAAe68upz8Z3wAAAemVdNwAALXegAAFk0otLxr3qwAz695De8jtPBiq8056N72BBeKnPFS0Npzny5lqN9NwfTe+sO3AAAo3KAABqiNOe/tRv3gAIr3jmr4MVUAACgyk/uY+e9HjnAAAdsbyuf/Dz7z3ut74AADAdAt7xjOdue+AAAf7W0/OAAAQt0m0vlS1AAAb3KAAAYf9jXOAAB++UAABGBsC96ZnMGKBm3vgAALHlAAAeRopTmu3v3b3gd75m95W3M9nfnYAVz3yAAHFtaHnN/CbAAA2EqAAAvvQJReQAAglzQ051sD87ABVnOAABMxV1nMGznFgDewFwAAIAeCkanSAD6OjpAA1i1AAADOq5veaUXwwqrN79k0bOe8zhPgVzOOllKc8CuaRbWqvfAAAw/r2CWTXv953ukAIAABK5QAAJPKEH3taV87AEAABjfj8AcAADpPhHOade9rj7AAAojq/vegsdyc5jD72jx+tnNofexOn7wAQAACzmOf5qCe4AAC8gwAAPTmsE9quc4AADbtJtKwO94HfNxM2PxzLc5wAABZqNijj57z3Oe7e9uKOPnvZb37GV4AAA2/Ii80+F9b1Ox+bdnvNL3jec8meYxaO+RrAAAt9H7zn3ePrWmVV74AADfTQAAPLK285+Dz61plBe8vznQ3vgAAcAtAAAGRlfzmw5zkubwYqoAAAqDbt74AAGXNAd8/h5+i6c7veUwKB73xZm4AADR/QAACN+XQlrBc8596tjdqfeiFzRzNwAAHxmCs5wAAIr+lr3vjz/8Kque+3PeXrzgAABXNAAAyXo4feZV3l+lwAAHNy4X3qL7w+OdZe9yQeYZtuc5z9cylOcAAC+8Ql99taOAAB5W0AAATkQl99P4/vAA0vvmX3gT77s9/Zj34ffc5XlL3szc5V97yn3EvfA3vtX38dM+HOca+99yurFzlX3tyDw1PcSXPYffAvPGS5kJc919+ENN3y7QlzgAASW9AAAu7HhLnPnvocbzr7wkudG+/jfekvPj+2UJc4AAG//QAADbxmXn94AIkueW+8DNfAAAp+aAABod0AACEVty9+UMtzT3Biqr45wAAEbGXb3sqcy3OYcXOAAAJC3OEvhLnAAA1XLWGXfPvgr3wAADkZLc54574AAEujDj7xj05CAO+feTJzr33j771998ALfHfeTvvgAAbjkDPvTzXimfXSAEAABUchcucK+8/NfBIDGtiOH79nG7eM2AABKfxNnPpvfM3v0LXukAIAAD5TDacxj96ze8cEOPxzKW5rZ74AAEW/fA89utebe+k/f8Dztz3+Xc4D97A3cOffAAAifGAAA/lPmPMzCGjNz+73ln7yTlc5+8DCf3gAjP3+D78dd/eACAAAABO0/MmvfGfvxG71Qt87AEAACAqeT9/N6dYLnpfvrwho57/L97rjfOwAjnvGC5yX78xu8AABPuoAAEXlCb768FoCzsyRrAAA5fICvfAAA8BZz3nAAA3ll3Xf4nNgAALB1AAAVOZXPfpzzgAAVXlAAAnhnifn4+VPq59ak/8KtOe9cffu3vLv3kL74AABNrQAACCag73wAAGhGsX3oxcw4ue7e+KrnT5zCX30qWh29+CPMrbnqi3nv30qWt7999+8pTnbnvgf30Wc45u+V6PL3mKpzHz37ES1299We8DveVs7Xb33Z74AAHEnGwI+2983ysF/eJ2v4pp6v71Sq9Be/ovenYPdIAUF7xC95+e8Yvfd+n7wAFH79j99ZV0YznAAAz4FZ7maJzRf3o2JxjOdWe8pBHAAAykaAAAAfU+LeAAB24I/HOnzm7vvnP3uOD+8AEAADOioAAFvUsnFx997k+/LxuQ1tgAALbsXnvxl5257wrueuQu4/fRubaP3x5Czn967++85nAAAO8GAABVZTuT1ibmoFzy5lsX74x1/eACAAASk0AAAAqcpueXvOAAAtBSVEs5/ekfv9cT9n7zO98AAB10YAABLtV7d61ucAADyOs+ZYOvMtzn9vv75lwAAKK2cAPg77zR/cGKqAABQz3gB+kL3lY1wv3jAHygD8CJ1E/eqU9gAAUDtWXvky+ll73x5Z1+9ioXNPzUH3hSLYAADsPcn7wxJ7pACAABN+Nne/EA/AAALqZQ/ePnvDM5kz74AAHozQAAGQqT15wAAOd+gAAW79Euv/la0N74AAFWbA97/P98X+9v3PMEn1N35cDRID4Pe+bbnpAf8x52x8x898AADj8cCufsk9BoW6QA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=";const {react, reactDOM, excalidrawLib} = window.eval.call(window, `(function() {${LZString.decompressFromBase64(EXCALIDRAW_PACKAGES)};return {react:React, reactDOM:ReactDOM, excalidrawLib: ExcalidrawLib};})();`);const PLUGIN_VERSION="1.8.14";function _interopNamespace(e){if(e&&e.__esModule)return e;var A=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(A,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),A.default=e,Object.freeze(A)}var obsidian_module__namespace=_interopNamespace(obsidian_module),React__namespace=_interopNamespace(React);let random$1=e=>crypto.getRandomValues(new Uint8Array(e)),customRandom=(e,A,t)=>{let n=(2<{let r="";for(;;){let A=t(i),s=i;for(;s--;)if(r+=e[A[s]&n]||"",r.length===a)return r}}},customAlphabet=(e,A=21)=>customRandom(e,A,random$1),nanoid$1=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce(((e,A)=>e+((A&=63)<36?A.toString(36):A<62?(A-26).toString(36).toUpperCase():A>62?"-":"_")),"");function JSON_parse(e){return JSON.parse(e.replaceAll("[","["))}const isDarwin=/Mac|iPod|iPhone|iPad/.test(window.navigator.platform),CTRL_OR_CMD=isDarwin?"metaKey":"ctrlKey",nanoid=customAlphabet("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",8),KEYCODE={ESC:27},ROUNDNESS={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},URLFETCHTIMEOUT=1e3,PLUGIN_ID="obsidian-excalidraw-plugin",SCRIPT_INSTALL_CODEBLOCK="excalidraw-script-install",SCRIPT_INSTALL_FOLDER="Downloaded",fileid=customAlphabet("1234567890abcdef",40),REG_LINKINDEX_INVALIDCHARS=/[<>:"\\|?*#]/g,REG_BLOCK_REF_CLEAN=/[!"#$%&()*+,.:;<=>?@^`{|}~\/\[\]\\]/g,IMAGE_TYPES=["jpeg","jpg","png","gif","svg","webp","bmp","ico"],EXPORT_TYPES=["svg","dark.svg","light.svg","png","dark.png","light.png"],MAX_IMAGE_SIZE=500,FRONTMATTER_KEY="excalidraw-plugin",FRONTMATTER_KEY_EXPORT_TRANSPARENT="excalidraw-export-transparent",FRONTMATTER_KEY_EXPORT_DARK="excalidraw-export-dark",FRONTMATTER_KEY_EXPORT_SVGPADDING="excalidraw-export-svgpadding",FRONTMATTER_KEY_EXPORT_PADDING="excalidraw-export-padding",FRONTMATTER_KEY_EXPORT_PNGSCALE="excalidraw-export-pngscale",FRONTMATTER_KEY_CUSTOM_PREFIX="excalidraw-link-prefix",FRONTMATTER_KEY_CUSTOM_URL_PREFIX="excalidraw-url-prefix",FRONTMATTER_KEY_CUSTOM_LINK_BRACKETS="excalidraw-link-brackets",FRONTMATTER_KEY_ONLOAD_SCRIPT="excalidraw-onload-script",FRONTMATTER_KEY_LINKBUTTON_OPACITY="excalidraw-linkbutton-opacity",FRONTMATTER_KEY_DEFAULT_MODE="excalidraw-default-mode",FRONTMATTER_KEY_FONT="excalidraw-font",FRONTMATTER_KEY_FONTCOLOR="excalidraw-font-color",FRONTMATTER_KEY_BORDERCOLOR="excalidraw-border-color",FRONTMATTER_KEY_MD_STYLE="excalidraw-css",FRONTMATTER_KEY_AUTOEXPORT="excalidraw-autoexport",VIEW_TYPE_EXCALIDRAW="excalidraw",ICON_NAME="excalidraw-icon",RERENDER_EVENT="excalidraw-embed-rerender",BLANK_DRAWING='{"type":"excalidraw","version":2,"source":"https://excalidraw.com","elements":[],"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff"}}',DARK_BLANK_DRAWING='{"type":"excalidraw","version":2,"source":"https://excalidraw.com","elements":[],"appState":{"theme":"dark","gridSize":null,"viewBackgroundColor":"#ffffff"}}',FRONTMATTER=["---","","excalidraw-plugin: parsed","tags: [excalidraw]","","---","==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==","",""].join("\n"),EMPTY_MESSAGE="Hit enter to create a new drawing",TEXT_DISPLAY_PARSED_ICON_NAME="quote-glyph",TEXT_DISPLAY_RAW_ICON_NAME="presentation",FULLSCREEN_ICON_NAME="fullscreen",SCRIPTENGINE_ICON_NAME="ScriptEngine",COLOR_NAMES=new Map;COLOR_NAMES.set("aliceblue","#f0f8ff"),COLOR_NAMES.set("antiquewhite","#faebd7"),COLOR_NAMES.set("aqua","#00ffff"),COLOR_NAMES.set("aquamarine","#7fffd4"),COLOR_NAMES.set("azure","#f0ffff"),COLOR_NAMES.set("beige","#f5f5dc"),COLOR_NAMES.set("bisque","#ffe4c4"),COLOR_NAMES.set("black","#000000"),COLOR_NAMES.set("blanchedalmond","#ffebcd"),COLOR_NAMES.set("blue","#0000ff"),COLOR_NAMES.set("blueviolet","#8a2be2"),COLOR_NAMES.set("brown","#a52a2a"),COLOR_NAMES.set("burlywood","#deb887"),COLOR_NAMES.set("cadetblue","#5f9ea0"),COLOR_NAMES.set("chartreuse","#7fff00"),COLOR_NAMES.set("chocolate","#d2691e"),COLOR_NAMES.set("coral","#ff7f50"),COLOR_NAMES.set("cornflowerblue","#6495ed"),COLOR_NAMES.set("cornsilk","#fff8dc"),COLOR_NAMES.set("crimson","#dc143c"),COLOR_NAMES.set("cyan","#00ffff"),COLOR_NAMES.set("darkblue","#00008b"),COLOR_NAMES.set("darkcyan","#008b8b"),COLOR_NAMES.set("darkgoldenrod","#b8860b"),COLOR_NAMES.set("darkgray","#a9a9a9"),COLOR_NAMES.set("darkgreen","#006400"),COLOR_NAMES.set("darkkhaki","#bdb76b"),COLOR_NAMES.set("darkmagenta","#8b008b"),COLOR_NAMES.set("darkolivegreen","#556b2f"),COLOR_NAMES.set("darkorange","#ff8c00"),COLOR_NAMES.set("darkorchid","#9932cc"),COLOR_NAMES.set("darkred","#8b0000"),COLOR_NAMES.set("darksalmon","#e9967a"),COLOR_NAMES.set("darkseagreen","#8fbc8f"),COLOR_NAMES.set("darkslateblue","#483d8b"),COLOR_NAMES.set("darkslategray","#2f4f4f"),COLOR_NAMES.set("darkturquoise","#00ced1"),COLOR_NAMES.set("darkviolet","#9400d3"),COLOR_NAMES.set("deeppink","#ff1493"),COLOR_NAMES.set("deepskyblue","#00bfff"),COLOR_NAMES.set("dimgray","#696969"),COLOR_NAMES.set("dodgerblue","#1e90ff"),COLOR_NAMES.set("firebrick","#b22222"),COLOR_NAMES.set("floralwhite","#fffaf0"),COLOR_NAMES.set("forestgreen","#228b22"),COLOR_NAMES.set("fuchsia","#ff00ff"),COLOR_NAMES.set("gainsboro","#dcdcdc"),COLOR_NAMES.set("ghostwhite","#f8f8ff"),COLOR_NAMES.set("gold","#ffd700"),COLOR_NAMES.set("goldenrod","#daa520"),COLOR_NAMES.set("gray","#808080"),COLOR_NAMES.set("green","#008000"),COLOR_NAMES.set("greenyellow","#adff2f"),COLOR_NAMES.set("honeydew","#f0fff0"),COLOR_NAMES.set("hotpink","#ff69b4"),COLOR_NAMES.set("indianred","#cd5c5c"),COLOR_NAMES.set("indigo","#4b0082"),COLOR_NAMES.set("ivory","#fffff0"),COLOR_NAMES.set("khaki","#f0e68c"),COLOR_NAMES.set("lavender","#e6e6fa"),COLOR_NAMES.set("lavenderblush","#fff0f5"),COLOR_NAMES.set("lawngreen","#7cfc00"),COLOR_NAMES.set("lemonchiffon","#fffacd"),COLOR_NAMES.set("lightblue","#add8e6"),COLOR_NAMES.set("lightcoral","#f08080"),COLOR_NAMES.set("lightcyan","#e0ffff"),COLOR_NAMES.set("lightgoldenrodyellow","#fafad2"),COLOR_NAMES.set("lightgrey","#d3d3d3"),COLOR_NAMES.set("lightgreen","#90ee90"),COLOR_NAMES.set("lightpink","#ffb6c1"),COLOR_NAMES.set("lightsalmon","#ffa07a"),COLOR_NAMES.set("lightseagreen","#20b2aa"),COLOR_NAMES.set("lightskyblue","#87cefa"),COLOR_NAMES.set("lightslategray","#778899"),COLOR_NAMES.set("lightsteelblue","#b0c4de"),COLOR_NAMES.set("lightyellow","#ffffe0"),COLOR_NAMES.set("lime","#00ff00"),COLOR_NAMES.set("limegreen","#32cd32"),COLOR_NAMES.set("linen","#faf0e6"),COLOR_NAMES.set("magenta","#ff00ff"),COLOR_NAMES.set("maroon","#800000"),COLOR_NAMES.set("mediumaquamarine","#66cdaa"),COLOR_NAMES.set("mediumblue","#0000cd"),COLOR_NAMES.set("mediumorchid","#ba55d3"),COLOR_NAMES.set("mediumpurple","#9370d8"),COLOR_NAMES.set("mediumseagreen","#3cb371"),COLOR_NAMES.set("mediumslateblue","#7b68ee"),COLOR_NAMES.set("mediumspringgreen","#00fa9a"),COLOR_NAMES.set("mediumturquoise","#48d1cc"),COLOR_NAMES.set("mediumvioletred","#c71585"),COLOR_NAMES.set("midnightblue","#191970"),COLOR_NAMES.set("mintcream","#f5fffa"),COLOR_NAMES.set("mistyrose","#ffe4e1"),COLOR_NAMES.set("moccasin","#ffe4b5"),COLOR_NAMES.set("navajowhite","#ffdead"),COLOR_NAMES.set("navy","#000080"),COLOR_NAMES.set("oldlace","#fdf5e6"),COLOR_NAMES.set("olive","#808000"),COLOR_NAMES.set("olivedrab","#6b8e23"),COLOR_NAMES.set("orange","#ffa500"),COLOR_NAMES.set("orangered","#ff4500"),COLOR_NAMES.set("orchid","#da70d6"),COLOR_NAMES.set("palegoldenrod","#eee8aa"),COLOR_NAMES.set("palegreen","#98fb98"),COLOR_NAMES.set("paleturquoise","#afeeee"),COLOR_NAMES.set("palevioletred","#d87093"),COLOR_NAMES.set("papayawhip","#ffefd5"),COLOR_NAMES.set("peachpuff","#ffdab9"),COLOR_NAMES.set("peru","#cd853f"),COLOR_NAMES.set("pink","#ffc0cb"),COLOR_NAMES.set("plum","#dda0dd"),COLOR_NAMES.set("powderblue","#b0e0e6"),COLOR_NAMES.set("purple","#800080"),COLOR_NAMES.set("rebeccapurple","#663399"),COLOR_NAMES.set("red","#ff0000"),COLOR_NAMES.set("rosybrown","#bc8f8f"),COLOR_NAMES.set("royalblue","#4169e1"),COLOR_NAMES.set("saddlebrown","#8b4513"),COLOR_NAMES.set("salmon","#fa8072"),COLOR_NAMES.set("sandybrown","#f4a460"),COLOR_NAMES.set("seagreen","#2e8b57"),COLOR_NAMES.set("seashell","#fff5ee"),COLOR_NAMES.set("sienna","#a0522d"),COLOR_NAMES.set("silver","#c0c0c0"),COLOR_NAMES.set("skyblue","#87ceeb"),COLOR_NAMES.set("slateblue","#6a5acd"),COLOR_NAMES.set("slategray","#708090"),COLOR_NAMES.set("snow","#fffafa"),COLOR_NAMES.set("springgreen","#00ff7f"),COLOR_NAMES.set("steelblue","#4682b4"),COLOR_NAMES.set("tan","#d2b48c"),COLOR_NAMES.set("teal","#008080"),COLOR_NAMES.set("thistle","#d8bfd8"),COLOR_NAMES.set("tomato","#ff6347"),COLOR_NAMES.set("turquoise","#40e0d0"),COLOR_NAMES.set("violet","#ee82ee"),COLOR_NAMES.set("wheat","#f5deb3"),COLOR_NAMES.set("white","#ffffff"),COLOR_NAMES.set("whitesmoke","#f5f5f5"),COLOR_NAMES.set("yellow","#ffff00"),COLOR_NAMES.set("yellowgreen","#9acd32");const DEFAULT_MD_EMBED_CSS='.snw-reference{display: none;}.excalidraw-md-host{padding:0px 10px}.excalidraw-md-footer{height:5px}foreignObject{background-color:transparent}p{display:block;margin-block-start:1em;margin-block-end:1em;margin-inline-start:0px;margin-inline-end:0px;color:inherit}table,tr,th,td{color:inherit;border:1px solid;border-collapse:collapse;padding:3px}th{font-weight:bold;border-bottom:double;background-color:silver}.copy-code-button{display:none}code[class*=language-],pre[class*=language-]{color:#393a34;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;font-size:.9em;line-height:1.2em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre>code[class*=language-]{font-size:1em}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{background:#C1DEF1}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{background:#C1DEF1}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;background-color:#0000001a}:not(pre)>code[class*=language-]{padding:.2em;padding-top:1px;padding-bottom:1px;background:#f8f8f8;border:1px solid #dddddd}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:green;font-style:italic}.token.namespace{opacity:.7}.token.string{color:#a31515}.token.punctuation,.token.operator{color:#393a34}.token.url,.token.symbol,.token.number,.token.boolean,.token.variable,.token.constant,.token.inserted{color:#36acaa}.token.atrule,.token.keyword,.token.attr-value,.language-autohotkey .token.selector,.language-json .token.boolean,.language-json .token.number,code[class*=language-css]{color:#00f}.token.function{color:#393a34}.token.deleted,.language-autohotkey .token.tag{color:#9a050f}.token.selector,.language-autohotkey .token.keyword{color:#00009f}.token.important{color:#e90}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.class-name,.language-json .token.property{color:#2b91af}.token.tag,.token.selector{color:maroon}.token.attr-name,.token.property,.token.regex,.token.entity{color:red}.token.directive.tag .tag{background:#ffff00;color:#393a34}.line-numbers.line-numbers .line-numbers-rows{border-right-color:#a5a5a5}.line-numbers .line-numbers-rows>span:before{color:#2b91af}.line-highlight.line-highlight{background:rgba(193,222,241,.2);background:-webkit-linear-gradient(left,rgba(193,222,241,.2) 70%,rgba(221,222,241,0));background:linear-gradient(to right,rgba(193,222,241,.2) 70%,rgba(221,222,241,0))}blockquote{ font-style:italic;background-color:rgb(46,43,42,0.1);margin:0;margin-left:1em;border-radius:0 4px 4px 0;border:1px solid hsl(0,80%,32%);border-left-width:8px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;padding:10px 20px;margin-inline-start:30px;margin-inline-end:30px;}',SCRIPTENGINE_ICON='',DISK_ICON_NAME="save",PNG_ICON_NAME="save-png",PNG_ICON='',SVG_ICON_NAME="save-svg",SVG_ICON='',EXCALIDRAW_ICON='',VIRGIL_DATAURL="data:application/font-woff;charset=utf-8;base64,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",VIRGIL_FONT=` @font-face {font-family: "Virgil";src: url("${VIRGIL_DATAURL}") format("woff2");}`,CASCADIA_FONT=' @font-face {font-family: "Cascadia";src: url("data:application/font-woff;charset=utf-8;base64,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XVtdpV2uXdBeAV4OXmBecl6GXpteyl74X1Vfsl/PX+xgDWAtYDVgPWBQYGNga2B9YIZgj2CcYKlgtmDLYOFg7GElYVthfmGgYa1hwmHdYgNiN2JVYoli0GL6Yzpjc2PbZINkrGUYZUBlTWVeZaNl8GX9Zi9mPGZNZrdm/mdPZ59nq2e4Z8hoAWhDaE9oW2hoaMto12jnaPNo/2mBaipqmGqlarFrRWtSa79sG2wnbFRskGzBbM5s32z7bQ5tF20fbR9tH20fbX9tzm4ebp9u+W9jb75wGnBgcKRw1HEucZRx1nIxcoly1HMHc1Nzm3P+dEJ0rXTvdR11YXWIdcl2LHZrdnN2e3aidqp2zHbwdwd3LHc/d213qHfGd/14JHhLeHt4rnjWeON5EnkpeUd5nHnBefJ5+noCeiV6T3pyenp6hXqcewR7kXu5e+R8Dnw3fHF8qnztfPp9B30UfSF9Ln07fUh9VX1ifW99fH2JfZZ9o32wfb19yn3YfeZ9834Bfg5+Hn4yfkJ+U35hfnd+h37Vf2iAj4CrgNeBDYEzgVmBgIGmgbmBzYH4gh2CUoKHgr2C84M1g/iEM4SIhK6Ey4T9hR6FQIVbhXaFiYWcha+FwoXSheuGAoYZhjCGR4Zoho+GnYazhsGGzobjhviHBYcah0yHaIgsiE6IcIi1iNuJA4lciWqJgImViaqJvYnRie6KDIosikyKbIqBio+KpIqyir+KzIrZiueK+4sPiySLOYtdi3GLhIuRi5+Ls4vIi9aL44vxi/+MFIwojD2MUoxfjGyMeYyFjJiMq4y/jNKM840NjSeNO41bjXSNjo2ijc6N7o4PjieOPY5TjmaOd46Njp6OtI7NjuGO8o8JjxqPMY9Lj2WPe4+Rj6aPvI/Kj96P75AAkA6QHJAukE6QdJCCkJ6QvJDKkN6Q75ECkRORIZE7kU+RY5F+kZSRqZHCkdiR7pIIkiSSQJJckniSlJK3ksiS2JLrkwCTDpMhkzKTQ5NQk12TcJOMk6+TvJPVk/GT/5QSlCSUNJRElFKUa5R+lJGUrJTClNiU8ZUHlR2VN5VTlWqVf5WUla2VwJXWleaV/JYNlieWOpZQlmCWdpaHlqCWtJbJluyXBZcflziXTJdgl3qXjpeil8WX3Zf1mGqYsZkFmTmZg5mvmcaZ5Zpamr6bHZtFm7icHZyAnN6dG52E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") format("woff2");}';class Random{constructor(e){this.seed=e}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},lzStringExports={},lzString={get exports(){return lzStringExports},set exports(e){lzStringExports=e}};function splitFolderAndFilename(e){const A=e.lastIndexOf("/"),t=-1==A?e:e.substring(A+1);return{folderpath:obsidian_module.normalizePath(e.substring(0,A)),filename:t,basename:t.replace(/\.[^/.]+$/,"")}}function download(e,A,t){const n=document.createElement("a");n.setAttribute("href",(e?`${e},`:"")+A),n.setAttribute("download",t),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}function getIMGFilename(e,A){return`${e.substring(0,e.lastIndexOf("."))}.${A}`}function getNewUniqueFilepath(e,A,t){let n=obsidian_module.normalizePath(`${t}/${A}`),i=e.getAbstractFileByPath(n),a=0;const r=A.endsWith(".excalidraw.md")?".excalidraw.md":A.slice(A.lastIndexOf("."));for(;i;)n=obsidian_module.normalizePath(`${t}/${A.slice(0,A.lastIndexOf(r))}_${a}${r}`),a++,i=e.getAbstractFileByPath(n);return n}function getDrawingFilename(e){return e.drawingFilenamePrefix+(""!==e.drawingFilenameDateTime?window.moment().format(e.drawingFilenameDateTime):"")+(e.compatibilityMode?".excalidraw":e.useExcalidrawExtension?".excalidraw.md":".md")}function getEmbedFilename(e,A){return(A.drawingEmbedPrefixWithFilename?e:"")+A.drawingFilnameEmbedPostfix+(""!==A.drawingFilenameDateTime?window.moment().format(A.drawingFilenameDateTime):"")+(A.compatibilityMode?".excalidraw":A.useExcalidrawExtension?".excalidraw.md":".md")}async function checkAndCreateFolder(e){const A=app.vault;e=obsidian_module.normalizePath(e);const t=A.getAbstractFileByPathInsensitive(e);t&&t instanceof obsidian_module.TFolder||(t&&t instanceof obsidian_module.TFile&&new obsidian_module.Notice(`The folder cannot be created because it already exists as a file: ${e}.`),await A.createFolder(e))}!function(e){var A=function(){var e=String.fromCharCode,A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",n={};function i(e,A){if(!n[e]){n[e]={};for(var t=0;t>>8,t[2*n+1]=r%256}return t},decompressFromUint8Array:function(A){if(null==A)return a.decompress(A);for(var t=new Array(A.length/2),n=0,i=t.length;n>=1}else{for(i=1,n=0;n>=1}0==--d&&(d=Math.pow(2,u),u++),delete s[c]}else for(i=r[c],n=0;n>=1;0==--d&&(d=Math.pow(2,u),u++),r[l]=h++,c=String(o)}if(""!==c){if(Object.prototype.hasOwnProperty.call(s,c)){if(c.charCodeAt(0)<256){for(n=0;n>=1}else{for(i=1,n=0;n>=1}0==--d&&(d=Math.pow(2,u),u++),delete s[c]}else for(i=r[c],n=0;n>=1;0==--d&&(d=Math.pow(2,u),u++)}for(i=2,n=0;n>=1;for(;;){if(p<<=1,m==A-1){g.push(t(p));break}m++}return g.join("")},decompress:function(e){return null==e?"":""==e?null:a._decompress(e.length,32768,(function(A){return e.charCodeAt(A)}))},_decompress:function(A,t,n){var i,a,r,s,o,l,c,d=[],h=4,u=4,g=3,p="",m=[],w={val:n(0),position:t,index:1};for(i=0;i<3;i+=1)d[i]=i;for(r=0,o=Math.pow(2,2),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=n(w.index++)),r|=(s>0?1:0)*l,l<<=1;switch(r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=n(w.index++)),r|=(s>0?1:0)*l,l<<=1;c=e(r);break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=n(w.index++)),r|=(s>0?1:0)*l,l<<=1;c=e(r);break;case 2:return""}for(d[3]=c,a=c,m.push(c);;){if(w.index>A)return"";for(r=0,o=Math.pow(2,g),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=n(w.index++)),r|=(s>0?1:0)*l,l<<=1;switch(c=r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=n(w.index++)),r|=(s>0?1:0)*l,l<<=1;d[u++]=e(r),c=u-1,h--;break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=n(w.index++)),r|=(s>0?1:0)*l,l<<=1;d[u++]=e(r),c=u-1,h--;break;case 2:return m.join("")}if(0==h&&(h=Math.pow(2,g),g++),d[c])p=d[c];else{if(c!==u)return null;p=a+a.charAt(0)}m.push(p),d[u++]=a+p.charAt(0),a=p,0==--h&&(h=Math.pow(2,g),g++)}}};return a}();null!=e&&(e.exports=A)}(lzString);const{exportToSvg:exportToSvg,exportToBlob:exportToBlob}=excalidrawLib;let versionUpdateChecked=!1;const checkExcalidrawVersion=async e=>{if(!versionUpdateChecked){versionUpdateChecked=!0;try{const e=async()=>JSON.parse(await obsidian_module.request({url:"https://api.github.com/repos/zsviczian/obsidian-excalidraw-plugin/releases?per_page=5&page=1"})),A=(await e()).map((e=>({version:e.tag_name,published:new Date(e.published_at)}))).filter((e=>e.version.match(/^\d+\.\d+\.\d+$/))).sort(((e,A)=>A.published-e.published))[0].version;isVersionNewerThanOther(A,PLUGIN_VERSION)&&new obsidian_module.Notice(`A newer version of Excalidraw is available in Community Plugins.\n\nYou are using ${PLUGIN_VERSION}.\nThe latest is ${A}`)}catch(e){errorlog({where:"Utils/checkExcalidrawVersion",error:e})}setTimeout((()=>versionUpdateChecked=!1),288e5)}};function wrapTextAtCharLength(e,A,t=!1,n=0){if(!A)return e;let i="";if(t){for(const t of e.split("\n")){const e=t.match(new RegExp(`(.){1,${A}}`,"g"));i+=e?`${e.join("\n")}\n`:"\n"}return i.replace(/\n$/,"")}const a=new RegExp(`(.{1,${A}})(\\s+|$\\n?)|([^\\s]{1,${A+n}})(\\s+|$\\n?)?`,"gm"),r=e.matchAll(a);let s;for(;!(s=r.next()).done;){i+=s.value[1]?s.value[1].trimEnd():s.value[3].trimEnd();const e=(s.value[2]?s.value[2].split("\n").length-1:0)+(s.value[4]?s.value[4].split("\n").length-1:0);i+="\n".repeat(e),0===e&&(i+="\n")}return i.replace(/\n$/,"")}new Random(Date.now());const rotate$1=(e,A,t,n,i)=>[(e-t)*Math.cos(i)-(A-n)*Math.sin(i)+t,(e-t)*Math.sin(i)+(A-n)*Math.cos(i)+n],rotatedDimensions=e=>{if(0===e.angle)return[e.x,e.y,e.width,e.height];const A=e.x+e.width/2,t=e.y+e.height/2,[n,i]=rotate$1(e.x,e.y,A,t,e.angle),[a,r]=rotate$1(e.x+e.width,e.y+e.height,A,t,e.angle);return[n{const s=1/t.value;return{x:(e-n)*s-a,y:(A-i)*s-r}},getDataURL=async(e,A)=>new Promise(((t,n)=>{const i=new FileReader;i.onload=()=>{const e=i.result;t(e)},i.onerror=e=>n(e),i.readAsDataURL(new Blob([new Uint8Array(e)],{type:A}))})),getFontDataURL=async(e,A,t,n)=>{let i="",a="",r="";const s=e.metadataCache.getFirstLinkpathDest(A,t);if(s){const A=await e.vault.readBinary(s),t=s.extension.startsWith("woff")?"application/font-woff":"font/truetype";a=null!=n?n:s.basename,r=await getDataURL(A,t),i=` @font-face {font-family: "${a}";src: url("${r}") format("${"ttf"===s.extension?"truetype":s.extension}");}`;const o=i.split(";base64,",2);i=`${o[0]};charset=utf-8;base64,${o[1]}`}return{fontDef:i,fontName:a,dataURL:r}},svgToBase64=e=>`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(e.replaceAll(" "," "))))}`,getBinaryFileFromDataURL=e=>{if(!e)return null;const A=e.matchAll(/base64,(.*)/g).next(),t=window.atob(A.value[1]),n=t.length,i=new Uint8Array(n);for(let e=0;e{var n;try{return await exportToSvg({elements:e.elements,appState:Object.assign({exportBackground:A.withBackground,exportWithDarkMode:!!A.withTheme&&"light"!=(null===(n=e.appState)||void 0===n?void 0:n.theme)},e.appState),files:e.files,exportPadding:t})}catch(e){return null}},getPNG=async(e,A,t,n=1)=>{var i;try{return await exportToBlob({elements:e.elements,appState:Object.assign({exportBackground:A.withBackground,exportWithDarkMode:!!A.withTheme&&"light"!=(null===(i=e.appState)||void 0===i?void 0:i.theme)},e.appState),files:e.files,exportPadding:t,mimeType:"image/png",getDimensions:(e,A)=>({width:e*n,height:A*n,scale:n})})}catch(e){return errorlog({where:"Utils.getPNG",error:e}),null}},getQuickImagePreview=async(e,A,t)=>{if(!e.settings.displayExportedImageIfAvailable)return null;const n=getIMGFilename(A,t),i=e.app.vault.getAbstractFileByPath(n);return i&&i instanceof obsidian_module.TFile?"png"===t?await e.app.vault.readBinary(i):await e.app.vault.read(i):null},embedFontsInSVG=(e,A)=>{const t=null!=e.querySelector("text[font-family^='Virgil']"),n=null!=e.querySelector("text[font-family^='Cascadia']"),i=null!=e.querySelector("text[font-family^='LocalFont']"),a=e.querySelector("defs");return a&&(n||t||i)&&(a.innerHTML=``),e},getImageSize=async e=>new Promise(((A,t)=>{const n=new Image;n.onload=()=>{A({height:n.naturalHeight,width:n.naturalWidth})},n.onerror=t,n.src=e})),scaleLoadedImage=(e,A)=>{let t=!1;if(!A||!e)return{dirty:t,scene:e};for(const n of A){const[A,i]=[n.size.width,n.size.height],a=n.size.width/n.size.height;e.elements.filter((e=>"image"===e.type&&e.fileId===n.id)).forEach((e=>{const[r,s]=[e.width,e.height];if(n.shouldScale){if(a!=r/s){t=!0;const n=Math.sqrt(r*s*i/A),a=Math.sqrt(r*s*A/i);e.height=n,e.width=a,e.y+=(s-n)/2,e.x+=(r-a)/2}}else r===A&&s===i||(t=!0,e.height=i,e.width=A,e.y+=(s-i)/2,e.x+=(r-A)/2)}))}return{dirty:t,scene:e}},setDocLeftHandedMode=(e,A)=>{const t=A.createElement("style");t.id="excalidraw-left-handed",t.textContent=".excalidraw .App-bottom-bar{justify-content:flex-end;}";const n=A.getElementById(t.id);n&&A.head.removeChild(n),e&&A.head.appendChild(t)},setLeftHandedMode=e=>{const A=new Set;app.workspace.iterateAllLeaves((t=>{const n=app.isMobile?document:t.view.containerEl.ownerDocument;n&&(A.has(n)||(A.add(n),setDocLeftHandedMode(e,n)))}))},getLinkParts=(e,A)=>{var t;const n=e.match(/(^[^#\|]*)#?(\^)?([^\|]*)?\|?(\d*)x?(\d*)/);return{original:e,path:A&&""===n[1]?A.path:n[1],isBlockRef:"^"===n[2],ref:null===(t=n[3])||void 0===t?void 0:t.replaceAll(REG_BLOCK_REF_CLEAN,""),width:n[4]?parseInt(n[4]):void 0,height:n[5]?parseInt(n[5]):void 0}},compress=e=>lzStringExports.compressToBase64(e).replace(/(.{64})/g,"$1\n\n"),decompress=e=>lzStringExports.decompressFromBase64(e.replaceAll("\n","").replaceAll("\r","")),hasExportTheme=(e,A)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-dark"])return!0}return!1},getExportTheme=(e,A,t)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-dark"])return t.frontmatter["excalidraw-export-dark"]?"dark":"light"}return e.settings.exportWithTheme?t:"light"},hasExportBackground=(e,A)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-transparent"])return!0}return!1},getWithBackground=(e,A)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-transparent"])return!t.frontmatter["excalidraw-export-transparent"]}return e.settings.exportWithBackground},getExportPadding=(e,A)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if(!(null==t?void 0:t.frontmatter))return e.settings.exportPaddingSVG;if(null!=t.frontmatter["excalidraw-export-padding"]){const e=parseInt(t.frontmatter["excalidraw-export-padding"]);if(!isNaN(e))return e}if(null!=t.frontmatter["excalidraw-export-svgpadding"]){const e=parseInt(t.frontmatter["excalidraw-export-svgpadding"]);if(!isNaN(e))return e}}return e.settings.exportPaddingSVG},getPNGScale=(e,A)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-pngscale"]){const e=parseFloat(t.frontmatter["excalidraw-export-pngscale"]);if(!isNaN(e)&&e>0)return e}}return e.settings.pngExportScale},isVersionNewerThanOther=(e,A)=>{const t=e.match(/(\d*)\.(\d*)\.(\d*)/),n=A.match(/(\d*)\.(\d*)\.(\d*)/);return Boolean(t&&4===t.length&&n&&4===n.length&&!(isNaN(parseInt(t[1]))||isNaN(parseInt(t[2]))||isNaN(parseInt(t[3])))&&!(isNaN(parseInt(n[1]))||isNaN(parseInt(n[2]))||isNaN(parseInt(n[3])))&&(parseInt(t[1])>parseInt(n[1])||parseInt(t[1])>=parseInt(n[1])&&parseInt(t[2])>parseInt(n[2])||parseInt(t[1])>=parseInt(n[1])&&parseInt(t[2])>=parseInt(n[2])&&parseInt(t[3])>parseInt(n[3])))},getEmbeddedFilenameParts=e=>{const A=null==e?void 0:e.match(/([^#\^]*)((#\^)(group=|area=|taskbone)?([^\|]*)|(#)(group=|area=|taskbone)?([^\^\|]*))(.*)/);return A?{filepath:A[1],hasBlockref:Boolean(A[3]),hasGroupref:"group="===A[4]||"group="===A[7],hasTaskbone:"taskbone"===A[4]||"taskbone"===A[7],hasArearef:"area="===A[4]||"area="===A[7],blockref:A[5],hasSectionref:Boolean(A[6]),sectionref:A[8],linkpartReference:A[2],linkpartAlias:A[9]}:{filepath:e,hasBlockref:!1,hasGroupref:!1,hasTaskbone:!1,hasArearef:!1,blockref:"",hasSectionref:!1,sectionref:"",linkpartReference:"",linkpartAlias:""}},fragWithHTML=e=>createFragment((A=>A.createDiv().innerHTML=e)),errorlog=e=>{console.error(Object.assign({plugin:"Excalidraw"},e))},sleep$1=async e=>new Promise((A=>setTimeout(A,e))),log=console.log.bind(window.console);console.log.bind(window.console);const getContainerElement=(e,A)=>{var t;return e&&e.containerId&&null!==(t=A.elements.filter((A=>A.id===e.containerId))[0])&&void 0!==t?t:null},updateFrontmatterInString=(e,A)=>{if(!e)return e;for(const t of A){const A=new RegExp(`${t[0]}:\\s.*\\n`,"g");e=e.match(A)?e.replaceAll(A,`${t[0]}: ${t[1]}\n`):e.replace(/^---\n/,`---\n${t[0]}: ${t[1]}\n`)}return e},isHyperlink=e=>e&&!e.includes("\n")&&!e.includes("\r")&&e.match(/^https?:(\d*)?\/\/[^\s]*$/),hyperlinkIsImage=e=>{isHyperlink(e);const A=e.split("?")[0];return IMAGE_TYPES.contains(A.substring(A.lastIndexOf(".")+1))},hyperlinkIsYouTubeLink=e=>isHyperlink(e)&&(e.startsWith("https://youtu.be")||e.startsWith("https://www.youtube.com")||e.startsWith("https://youtube.com")||e.startsWith("https//www.youtu.be"))&&null!==e.match(/(youtu.be\/|v=)([^?\/\&]*)/),getYouTubeThumbnailLink=async e=>{const A=e.match(/(youtu.be\/|v=)([^?\/\&]*)/);if(!A||!A[2])return null;const t=A[2];let n=`https://i.ytimg.com/vi/${t}/maxresdefault.jpg`,i=await obsidian_module.requestUrl({url:n,method:"get",contentType:"image/jpeg",throw:!1});return i&&200===i.status?n:(n=`https://i.ytimg.com/vi/${t}/hq720.jpg`,i=await obsidian_module.requestUrl({url:n,method:"get",contentType:"image/jpeg",throw:!1}),i&&200===i.status?n:(n=`https://i.ytimg.com/vi/${t}/mqdefault.jpg`,i=await obsidian_module.requestUrl({url:n,method:"get",contentType:"image/jpeg",throw:!1}),i&&200===i.status?n:`https://i.ytimg.com/vi/${t}/default.jpg`))},getParentOfClass=(e,A)=>{var t;let n=e.parentElement;for(;n&&!(n instanceof window.HTMLBodyElement)&&!n.classList.contains(A);)n=n.parentElement;return(null===(t=null==n?void 0:n.classList)||void 0===t?void 0:t.contains(A))?n:null},getNewOrAdjacentLeaf=(e,A)=>{const t=A.id,n=app.workspace.getLayout(),i=e=>e.children.filter((e=>"leaf"!==e.type)).map((e=>i(e))).flat().concat(e.children.filter((e=>"leaf"===e.type)).map((e=>e.id))),a=i(n.main),r=n.main&&a.contains(t)?"main":n.floating&&i(n.floating).contains(t)?"popout":n.left&&i(n.left).contains(t)?"left":n.right&&i(n.right).contains(t)?"right":"hover",s=()=>{var e;let t=app.workspace.getMostRecentLeaf();return t&&t!==A&&(null===(e=t.view)||void 0===e?void 0:e.containerEl.ownerDocument)===document||(t=null,a.forEach((e=>{var n;const i=app.workspace.getLeafById(e);!t&&(null===(n=i.view)||void 0===n?void 0:n.navigation)&&A!==i&&(t=i)}))),t};if(e.settings.openInMainWorkspace||["main","left","right"].contains(r)){if(!e.settings.openInAdjacentPane){if("main"===r)return app.workspace.createLeafBySplit(A);const e=s();return e?"empty"===e.view.getViewType()?e:app.workspace.createLeafBySplit(e):app.workspace.getLeaf(!0)}const t=s();return null!=t?t:app.workspace.getLeaf(!0)}if(!e.settings.openInAdjacentPane)return app.workspace.createLeafBySplit(A);if("hover"===r){const t=new Set;return app.workspace.iterateAllLeaves((e=>{e!==A&&A.containerEl.parentElement===e.containerEl.parentElement&&t.add(e)})),0===t.size?e.app.workspace.createLeafBySplit(A):Array.from(t)[0]}if("popout"===r){const e=new Set;return app.workspace.iterateAllLeaves((t=>{t!==A&&t.view.navigation&&t.view.containerEl.ownerDocument===A.view.containerEl.ownerDocument&&e.add(t)})),0===e.size?app.workspace.createLeafBySplit(A):Array.from(e)[0]}return e.app.workspace.createLeafBySplit(A)},getAttachmentsFolderAndFilePath=async(e,A,t)=>{let n=e.vault.getConfig("attachmentFolderPath");if(n&&n.startsWith("./")){const e=`${splitFolderAndFilename(A).folderpath}/`;n=obsidian_module.normalizePath(e+n.substring(2))}return n&&"/"!==n||(n=""),await checkAndCreateFolder(n),{folder:n,filepath:obsidian_module.normalizePath(""===n?t:`${n}/${t}`)}},isObsidianThemeDark=()=>document.body.classList.contains("theme-dark");var ar={},cz={},da={},de={},en={INSTALL_SCRIPT:"Install the script",UPDATE_SCRIPT:"Update available - Click to install",CHECKING_SCRIPT:"Checking for newer version - Click to reinstall",UNABLETOCHECK_SCRIPT:"Update check failed - Click to reinstall",UPTODATE_SCRIPT:"Script is up to date - Click to reinstall",OPEN_AS_EXCALIDRAW:"Open as Excalidraw Drawing",TOGGLE_MODE:"Toggle between Excalidraw and Markdown mode",CONVERT_NOTE_TO_EXCALIDRAW:"Convert empty note to Excalidraw Drawing",CONVERT_EXCALIDRAW:"Convert *.excalidraw to *.md files",CREATE_NEW:"Create new drawing",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (Logseq compatibility)",DOWNLOAD_LIBRARY:"Export stencil library as an *.excalidrawlib file",OPEN_EXISTING_NEW_PANE:"Open existing drawing - IN A NEW PANE",OPEN_EXISTING_ACTIVE_PANE:"Open existing drawing - IN THE CURRENT ACTIVE PANE",TRANSCLUDE:"Embed a drawing",TRANSCLUDE_MOST_RECENT:"Embed the most recently edited drawing",TOGGLE_LEFTHANDED_MODE:"Toggle left-handed mode",NEW_IN_NEW_PANE:"Create new drawing - IN A NEW PANE",NEW_IN_ACTIVE_PANE:"Create new drawing - IN THE CURRENT ACTIVE PANE",NEW_IN_POPOUT_WINDOW:"Create new drawing - IN A POPOUT WINDOW",NEW_IN_NEW_PANE_EMBED:"Create new drawing - IN A NEW PANE - and embed into active document",NEW_IN_ACTIVE_PANE_EMBED:"Create new drawing - IN THE CURRENT ACTIVE PANE - and embed into active document",NEW_IN_POPOUT_WINDOW_EMBED:"Create new drawing - IN A POPOUT WINDOW - and embed into active document",EXPORT_SVG:"Save as SVG next to current file",EXPORT_PNG:"Save as PNG next to current file",EXPORT_SVG_WITH_SCENE:"Save as SVG with embedded Excalidraw Scene next to current file",EXPORT_PNG_WITH_SCENE:"Save as PNG with embedded Excalidraw Scene next to current file",TOGGLE_LOCK:"Toggle Text Element between edit RAW and PREVIEW",DELETE_FILE:"Delete selected image or Markdown file from Obsidian Vault",INSERT_LINK_TO_ELEMENT:"Copy markdown link for selected element to clipboard. CTRL/CMD+Click to copy group link. SHIFT+click to copy an area link.",INSERT_LINK_TO_ELEMENT_GROUP:"Copy 'group=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_AREA:"Copy 'area=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_NORMAL:"Copy markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_ERROR:"Select a single element in the scene",INSERT_LINK_TO_ELEMENT_READY:"Link is READY and available on the clipboard",INSERT_LINK:"Insert link to file",INSERT_IMAGE:"Insert image or Excalidraw drawing from your vault",IMPORT_SVG:"Import an SVG file as Excalidraw strokes (limited SVG support, TEXT currently not supported)",INSERT_MD:"Insert markdown file from vault",INSERT_LATEX:"Insert LaTeX formula (e.g. \\binom{n}{k} = \\frac{n!}{k!(n-k)!})",ENTER_LATEX:"Enter a valid LaTeX expression",READ_RELEASE_NOTES:"Read latest release notes",RUN_OCR:"OCR: Grab text from freedraw scribble and pictures to clipboard",TRAY_MODE:"Toggle property-panel tray-mode",SEARCH:"Search for text in drawing",RESET_IMG_TO_100:"Set selected image element size to 100% of original",TEMPORARY_DISABLE_AUTOSAVE:"Disable autosave until next time Obsidian starts (only set this if you know what you are doing)",TEMPORARY_ENABLE_AUTOSAVE:"Enable autosave",INSTALL_SCRIPT_BUTTON:"Install or update Excalidraw Scripts",OPEN_AS_MD:"Open as Markdown",SAVE_AS_PNG:"Save as PNG into Vault (CTRL/CMD+CLICK to export; SHIFT to embed scene)",SAVE_AS_SVG:"Save as SVG into Vault (CTRL/CMD+CLICK to export; SHIFT to embed scene)",OPEN_LINK:"Open selected text as link\n(SHIFT+CLICK to open in a new pane)",EXPORT_EXCALIDRAW:"Export to an .Excalidraw file",LINK_BUTTON_CLICK_NO_TEXT:"Select a an ImageElement, or select a TextElement that contains an internal or external link.\nSHIFT CLICK this button to open the link in a new pane.\nCTRL/CMD CLICK the Image or TextElement on the canvas has the same effect!",FILENAME_INVALID_CHARS:'File name cannot contain any of the following characters: * " \\ < > : | ? #',FILE_DOES_NOT_EXIST:"File does not exist. Hold down ALT (or ALT+SHIFT) and CLICK link button to create a new file.",FORCE_SAVE:"Save (will also update transclusions)",RAW:"Change to PREVIEW mode (only effects text-elements with links or transclusions)",PARSED:"Change to RAW mode (only effects text-elements with links or transclusions)",NOFILE:"Excalidraw (no file)",COMPATIBILITY_MODE:"*.excalidraw file opened in compatibility mode. Convert to new format for full plugin functionality.",CONVERT_FILE:"Convert to new format",RELEASE_NOTES_NAME:"Display Release Notes after update",RELEASE_NOTES_DESC:"Toggle ON: Display release notes each time you update Excalidraw to a newer version.
Toggle OFF: Silent mode. You can still read release notes on GitHub.",NEWVERSION_NOTIFICATION_NAME:"Plugin update notification",NEWVERSION_NOTIFICATION_DESC:"Toggle ON: Show a notification when a new version of the plugin is available.
Toggle OFF: Silent mode. You need to check for plugin updates in Community Plugins.",FOLDER_NAME:"Excalidraw folder",FOLDER_DESC:"Default location for new drawings. If empty, drawings will be created in the Vault root.",FOLDER_EMBED_NAME:"Use Excalidraw folder when embedding a drawing into the active document",FOLDER_EMBED_DESC:"Define which folder to place the newly inserted drawing into when using the command palette action: 'Create a new drawing and embed into active document'.
Toggle ON: Use Excalidraw folder
Toggle OFF: Use the attachments folder defined in Obsidian settings.",TEMPLATE_NAME:"Excalidraw template file",TEMPLATE_DESC:"Full filepath to the Excalidraw template. E.g.: If your template is in the default Excalidraw folder and its name is Template.md, the setting would be: Excalidraw/Template.md (or just Excalidraw/Template - you may omit the .md file extension). If you are using Excalidraw in compatibility mode, then your template must be a legacy Excalidraw file as well such as Excalidraw/Template.excalidraw.",SCRIPT_FOLDER_NAME:"Excalidraw Automate script folder (CASE SeNSitiVE!)",SCRIPT_FOLDER_DESC:"The files you place in this folder will be treated as Excalidraw Automate scripts. You can access your scripts from Excalidraw via the Obsidian Command Palette. Assign hotkeys to your favorite scripts just like to any other Obsidian command. The folder may not be the root folder of your Vault. ",SAVING_HEAD:"Saving",COMPRESS_NAME:"Compress Excalidraw JSON in Markdown",COMPRESS_DESC:"By enabling this feature Excalidraw will store the drawing JSON in a Base64 compressed format using the LZ-String algorithm. This will reduce the chance of Excalidraw JSON cluttering your search results in Obsidian. As a side effect, this will also reduce the filesize of Excalidraw drawings. When you switch an Excalidraw drawing to Markdown view, using the options menu in Excalidraw, the file will be saved without compression, so that you can read and edit the JSON string. The drawing will be compressed again once you switch back to Excalidraw view. The setting only has effect 'point forward', meaning, existing drawings will not be effected by the setting until you open them and save them.
Toggle ON: Compress drawing JSON
Toggle OFF: Leave drawing JSON uncompressed",AUTOSAVE_INTERVAL_DESKTOP_NAME:"Interval for autosave on Desktop",AUTOSAVE_INTERVAL_DESKTOP_DESC:"The time interval between saves. Autosave will skip if there are no changes in the drawing. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. clicking on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly either by killing the Obsidian process, or clicking to close Obsidian altogether.",AUTOSAVE_INTERVAL_MOBILE_NAME:"Interval for autosave on Mobile",AUTOSAVE_INTERVAL_MOBILE_DESC:"I recommend a more frequent interval for Mobiles. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. tapping on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly (i.e. swiping it away). Also note, that when you switch apps on a Mobile device, sometimes Android and iOS closes Obsidian in the background to save system resources. In such a case Excalidraw will not be able to save the latest changes.",FILENAME_HEAD:"Filename",FILENAME_DESC:"

Click this link for the date and time format reference.

",FILENAME_SAMPLE:"Filename for a new drawing is: ",FILENAME_EMBED_SAMPLE:"Filename for a new embedded drawing is: ",FILENAME_PREFIX_NAME:"Filename prefix",FILENAME_PREFIX_DESC:"The first part of the filename",FILENAME_PREFIX_EMBED_NAME:"Filename prefix when embedding a new drawing into a markdown note",FILENAME_PREFIX_EMBED_DESC:"Should the filename of the newly inserted drawing start with the name of the active markdown note when using the command palette action: Create a new drawing and embed into active document?
Toggle ON: Yes, the filename of a new drawing should start with filename of the active document
Toggle OFF: No, filename of a new drawing should not include the filename of the active document",FILENAME_POSTFIX_NAME:"Custom text after markdown Note's name when embedding",FILENAME_POSTFIX_DESC:"Effects filename only when embedding into a markdown document. This text will be inserted after the note's name, but before the date.",FILENAME_DATE_NAME:"Filename Date",FILENAME_DATE_DESC:"The last part of the filename. Leave empty if you do not want a date.",FILENAME_EXCALIDRAW_EXTENSION_NAME:".excalidraw.md or .md",FILENAME_EXCALIDRAW_EXTENSION_DESC:"This setting does not apply if you use Excalidraw in compatibility mode, i.e. you are not using Excalidraw markdown files.
Toggle ON: filename ends with .excalidraw.md
Toggle OFF: filename ends with .md",DISPLAY_HEAD:"Display",LEFTHANDED_MODE_NAME:"Left-handed mode",LEFTHANDED_MODE_DESC:"Currently only has effect in tray-mode. If turned on, the tray will be on the right side.
Toggle ON: Left-handed mode.
Toggle OFF: Right-handed moded",MATCH_THEME_NAME:"New drawing to match Obsidian theme",MATCH_THEME_DESC:"If theme is dark, new drawing will be created in dark mode. This does not apply when you use a template for new drawings. Also this will not effect when you open an existing drawing. Those will follow the theme of the template/drawing respectively.
Toggle ON: Follow Obsidian Theme
Toggle OFF: Follow theme defined in your template",MATCH_THEME_ALWAYS_NAME:"Existing drawings to match Obsidian theme",MATCH_THEME_ALWAYS_DESC:"If theme is dark, drawings will be opened in dark mode. If your theme is light, they will be opened in light mode.
Toggle ON: Match Obsidian theme
Toggle OFF: Open with the same theme as last saved",MATCH_THEME_TRIGGER_NAME:"Excalidraw to follow when Obsidian Theme changes",MATCH_THEME_TRIGGER_DESC:"If this option is enabled open Excalidraw pane will switch to light/dark mode when Obsidian theme changes.
Toggle ON: Follow theme changes
Toggle OFF: Drawings are not effected by Obsidian theme changes",DEFAULT_OPEN_MODE_NAME:"Default mode when opening Excalidraw",DEFAULT_OPEN_MODE_DESC:"Specifies the mode how Excalidraw opens: Normal, Zen, or View mode. You may also set this behavior on a file level by adding the excalidraw-default-mode frontmatter key with a value of: normal, view, or zen to your document.",DEFAULT_PEN_MODE_NAME:"Pen mode",DEFAULT_PEN_MODE_DESC:"Should pen mode be automatically enabled when opening Excalidraw?",DEFAULT_PINCHZOOM_NAME:"Allow pinch zoom in pen mode",DEFAULT_PINCHZOOM_DESC:"Pinch zoom in pen mode when using the freedraw tool is disabled by default to prevent unwanted accidental zooming with your palm.
Toggle on: Enable pinch zoom in pen mode
Toggle off: Disable pinch zoom in pen mode",DEFAULT_WHEELZOOM_NAME:"Mouse wheel to zoom by default",DEFAULT_WHEELZOOM_DESC:"Toggle on: Mouse wheel to zoom; CTRL + mouse wheel to scroll
Toggle off: CTRL + mouse wheel to zoom; Mouse wheel to scroll",ZOOM_TO_FIT_NAME:"Zoom to fit on view resize",ZOOM_TO_FIT_DESC:"Zoom to fit drawing when the pane is resized
Toggle ON: Zoom to fit
Toggle OFF: Auto zoom disabled",ZOOM_TO_FIT_ONOPEN_NAME:"Zoom to fit on file open",ZOOM_TO_FIT_ONOPEN_DESC:"Zoom to fit drawing when the drawing is first opened
Toggle ON: Zoom to fit
Toggle OFF: Auto zoom disabled",ZOOM_TO_FIT_MAX_LEVEL_NAME:"Zoom to fit max ZOOM level",ZOOM_TO_FIT_MAX_LEVEL_DESC:"Set the maximum level to which zoom to fit will enlarge the drawing. Minimum is 0.5 (50%) and maximum is 10 (1000%).",LINKS_HEAD:"Links and transclusion",LINKS_DESC:"CTRL/CMD + CLICK on [[Text Elements]] to open them as links. If the selected text has more than one [[valid Obsidian links]], only the first will be opened. If the text starts as a valid web link (i.e. https:// or http://), then the plugin will open it in a browser. When Obsidian files change, the matching [[link]] in your drawings will also change. If you don't want text accidentally changing in your drawings use [[links|with aliases]].",ADJACENT_PANE_NAME:"Open in adjacent pane",ADJACENT_PANE_DESC:"When CTRL/CMD+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane. Turning this setting on, Excalidraw will first look for an existing adjacent pane, and try to open the link there. Excalidraw will look for the adjacent pane based on your focus/navigation history, i.e. the workpane that was active before you activated Excalidraw.",MAINWORKSPACE_PANE_NAME:"Open in main workspace",MAINWORKSPACE_PANE_DESC:"When CTRL/CMD+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane in the current active window. Turning this setting on, Excalidraw will open the link in an existing or new pane in the main workspace. ",LINK_BRACKETS_NAME:"Show [[brackets]] around links",LINK_BRACKETS_DESC:"In PREVIEW mode, when parsing Text Elements, place brackets around links. You can override this setting for a specific drawing by adding excalidraw-link-brackets: true/false to the file's frontmatter.",LINK_PREFIX_NAME:"Link prefix",LINK_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-link-prefix: "📍 " to the file\'s frontmatter.',URL_PREFIX_NAME:"URL prefix",URL_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a URL link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-url-prefix: "🌐 " to the file\'s frontmatter.',PARSE_TODO_NAME:"Parse todo",PARSE_TODO_DESC:"Convert '- [ ] ' and '- [x] ' to checkpox and tick in the box.",TODO_NAME:"Open TODO icon",TODO_DESC:"Icon to use for open TODO items",DONE_NAME:"Completed TODO icon",DONE_DESC:"Icon to use for completed TODO items",HOVERPREVIEW_NAME:"Hover preview without CTRL/CMD key",HOVERPREVIEW_DESC:"Toggle On: In Exalidraw view mode the hover preview for [[wiki links]] will be shown immediately, without the need to hold the CTRL/CMD key. In Excalidraw normal mode, the preview will be shown immediately only when hovering the blue link icon in the top right of the element.
Toggle Off: Hover preview is shown only when you hold the CTRL/CMD key while hovering the link.",LINKOPACITY_NAME:"Opacity of link icon",LINKOPACITY_DESC:"Opacity of the link indicator icon in the top right corner of an element. 1 is opaque, 0 is transparent.",LINK_CTRL_CLICK_NAME:"CTRL/CMD + CLICK on text with [[links]] or [](links) to open them",LINK_CTRL_CLICK_DESC:"You can turn this feature off if it interferes with default Excalidraw features you want to use. If this is turned off, only the link button in the title bar of the drawing pane will open links.",TRANSCLUSION_WRAP_NAME:"Overflow wrap behavior of transcluded text",TRANSCLUSION_WRAP_DESC:"Number specifies the character count where the text should be wrapped. Set the text wrapping behavior of transcluded text. Turn this ON to force-wrap text (i.e. no overflow), or OFF to soft-wrap text (at the nearest whitespace).",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion word wrap default",TRANSCLUSION_DEFAULT_WRAP_DESC:"You can manually set/override word wrapping length using the `![[page#^block]]{NUMBER}` format. Normally you will not want to set a default, because if you transclude text inside a sticky note, then Excalidraw will automatically take care of word wrapping. Set this value to `0` if you do not want to set a default. ",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Page transclusion max char count",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"The maximum number of characters to display from the page when transcluding an entire page with the ![[markdown page]] format.",QUOTE_TRANSCLUSION_REMOVE_NAME:"Quote translusion: remove leading '> ' from each line",QUOTE_TRANSCLUSION_REMOVE_DESC:"Remove the leading '> ' from each line of the transclusion. This will improve readability of quotes in text only transclusions
Toggle ON: Remove leading '> '
Toggle OFF: Do not remove leading '> ' (note it will still be removed from the first row due to Obsidian API functionality)",GET_URL_TITLE_NAME:"Use iframely to resolve page title",GET_URL_TITLE_DESC:"Use the http://iframely.server.crestify.com/iframely?url= to get title of page when dropping a link into Excalidraw",MD_HEAD:"Markdown-embed settings",MD_HEAD_DESC:"You can transclude formatted markdown documents into drawings as images CTRL(Shift on Mac) drop from the file explorer or using the command palette action.",MD_TRANSCLUDE_WIDTH_NAME:"Default width of a transcluded markdown document",MD_TRANSCLUDE_WIDTH_DESC:"The width of the markdown page. This effects the word wrapping when transcluding longer paragraphs, and the width of the image element. You can override the default width of an embedded file using the [[filename#heading|WIDTHxMAXHEIGHT]] syntax in markdown view mode under embedded files.",MD_TRANSCLUDE_HEIGHT_NAME:"Default maximum height of a transcluded markdown document",MD_TRANSCLUDE_HEIGHT_DESC:"The embedded image will be as high as the markdown text requires, but not higher than this value. You can override this value by editing the embedded image link in markdown view mode with the following syntax [[filename#^blockref|WIDTHxMAXHEIGHT]].",MD_DEFAULT_FONT_NAME:"The default font typeface to use for embedded markdown files.",MD_DEFAULT_FONT_DESC:'Set this value to "Virgil" or "Cascadia" or the filename of a valid .ttf, .woff, or .woff2 font e.g. MyFont.woff2 You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font: font_or_filename',MD_DEFAULT_COLOR_NAME:"The default font color to use for embedded markdown files.",MD_DEFAULT_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font-color: steelblue',MD_DEFAULT_BORDER_COLOR_NAME:"The default border color to use for embedded markdown files.",MD_DEFAULT_BORDER_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-border-color: gray. Leave empty if you don\'t want a border. ',MD_CSS_NAME:"CSS file",MD_CSS_DESC:"The filename of the CSS to apply to markdown embeds. Provide the filename with extension (e.g. 'md-embed.css'). The css file may also be a plain markdown file (e.g. 'md-embed-css.md'), just make sure the content is written using valid css syntax. If you need to look at the HTML code you are applying the CSS to, then open Obsidian Developer Console (CTRL+SHIFT+i) and type in the following command: \"ExcalidrawAutomate.mostRecentMarkdownSVG\". This will display the most recent SVG generated by Excalidraw. Setting the font-family in the css is has limitations. By default only your operating system's standard fonts are available (see README for details). You can add one custom font beyond that using the setting above. You can override this css setting by adding the following frontmatter-key to the embedded markdown file: \"excalidraw-css: css_file_in_vault|css-snippet\".",EMBED_HEAD:"Embed & Export",EMBED_REUSE_EXPORTED_IMAGE_NAME:"If found, use the already exported image for preview",EMBED_REUSE_EXPORTED_IMAGE_DESC:"This setting works in conjunction with the Auto-export SVG/PNG setting. If an exported image that matches the file name of the drawing is available, use that image instead of generating a preview image on the fly. This will result in faster previews especially when you have many embedded objects in the drawing, however, it may happen that your latest changes are not displayed and that the image will not automatically match your Obsidian theme in case you have changed the Obsidian theme since the export was created. This setting only applies to embedding images into markdown documents. For a number of reasons, the same approach cannot be used to expedite the loading of drawings with many embedded objects. See demonstration here.",EMBED_PREVIEW_SVG_NAME:"Display SVG in markdown preview",EMBED_PREVIEW_SVG_DESC:"Toggle ON: Embed drawing as an SVG image into the markdown preview.
Toggle OFF: Embed drawing as a PNG image. Note, that some of the image block referencing features do not work with PNG embeds.",PREVIEW_MATCH_OBSIDIAN_NAME:"Excalidraw preview to match Obsidian theme",PREVIEW_MATCH_OBSIDIAN_DESC:"Image preview in documents should match the Obsidian theme. If enabled, when Obsidian is in dark mode, Excalidraw images will render in dark mode. When Obsidian is in light mode, Excalidraw will render light mode as well. You may want to switch 'Export image with background' off for a more Obsidian-integrated look and feel.",EMBED_WIDTH_NAME:"Default width of embedded (transcluded) image",EMBED_WIDTH_DESC:"The default width of an embedded drawing. This applies to live preview edit and reading mode, as well as to hover previews. You can specify a custom width when embedding an image using the ![[drawing.excalidraw|100]] or [[drawing.excalidraw|100x100]] format.",EMBED_TYPE_NAME:"Type of file to insert into the document",EMBED_TYPE_DESC:"When you embed an image into a document using the command palette this setting will specify if Excalidraw should embed the original Excalidraw file or a PNG or an SVG copy. You need to enable auto-export PNG / SVG (see below under Export Settings) for those image types to be available in the dropdown. For drawings that do not have a a corresponding PNG or SVG readily available the command palette action will insert a broken link. You need to open the original drawing and initiate export manually. This option will not autogenerate PNG/SVG files, but will simply reference the already existing files.",EMBED_WIKILINK_NAME:"Embed SVG or PNG as Wiki link",EMBED_WIKILINK_DESC:"Toggle ON: Excalidraw will embed a [[wiki link]]. Toggle OFF: Excalidraw will embed a [markdown](link).",EXPORT_PNG_SCALE_NAME:"PNG export image scale",EXPORT_PNG_SCALE_DESC:"The size-scale of the exported PNG image",EXPORT_BACKGROUND_NAME:"Export image with background",EXPORT_BACKGROUND_DESC:"If turned off, the exported image will be transparent.",EXPORT_PADDING_NAME:"Image Padding",EXPORT_PADDING_DESC:"The padding (in pixels) around the exported SVG or PNG image. If you have curved lines close to the edge of the image they might get cropped during image export. You can increase this value to avoid cropping. You can also override this setting at a file level by adding the excalidraw-export-padding: 5 frontmatter key.",EXPORT_THEME_NAME:"Export image with theme",EXPORT_THEME_DESC:"Export the image matching the dark/light theme of your drawing. If turned off, drawings created in dark mode will appear as they would in light mode.",EXPORT_HEAD:"Auto-export Settings",EXPORT_SYNC_NAME:"Keep the .SVG and/or .PNG filenames in sync with the drawing file",EXPORT_SYNC_DESC:"When turned on, the plugin will automatically update the filename of the .SVG and/or .PNG files when the drawing in the same folder (and same name) is renamed. The plugin will also automatically delete the .SVG and/or .PNG files when the drawing in the same folder (and same name) is deleted. ",EXPORT_SVG_NAME:"Auto-export SVG",EXPORT_SVG_DESC:"Automatically create an SVG export of your drawing matching the title of your file. The plugin will save the *.SVG file in the same folder as the drawing. Embed the .svg file into your documents instead of Excalidraw making you embeds platform independent. While the auto-export switch is on, this file will get updated every time you edit the Excalidraw drawing with the matching name. You can override this setting on a file level by adding the excalidraw-autoexport frontmatter key. Valid values for this key are none,both,svg, and png",EXPORT_PNG_NAME:"Auto-export PNG",EXPORT_PNG_DESC:"Same as the auto-export SVG, but for *.PNG",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"Export both dark- and light-themed image",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"When enabled, Excalidraw will export two files instead of one: filename.dark.png, filename.light.png and/or filename.dark.svg and filename.light.svg
Double files will be exported both if auto-export SVG or PNG (or both) are enabled, as well as when clicking export on a single image.",COMPATIBILITY_HEAD:"Compatibility features",EXPORT_EXCALIDRAW_NAME:"Auto-export Excalidraw",EXPORT_EXCALIDRAW_DESC:"Same as the auto-export SVG, but for *.Excalidraw",SYNC_EXCALIDRAW_NAME:"Sync *.excalidraw with *.md version of the same drawing",SYNC_EXCALIDRAW_DESC:"If the modified date of the *.excalidraw file is more recent than the modified date of the *.md file then update the drawing in the .md file based on the .excalidraw file",COMPATIBILITY_MODE_NAME:"New drawings as legacy files",COMPATIBILITY_MODE_DESC:"By enabling this feature drawings you create with the ribbon icon, the command palette actions, and the file explorer are going to be all legacy *.excalidraw files. This setting will also turn off the reminder message when you open a legacy file for editing.",MATHJAX_NAME:"MathJax (LaTeX) javascript library host",MATHJAX_DESC:"If you are using LaTeX equiations in Excalidraw then the plugin needs to load a javascript library for that. Some users are unable to access certain host servers. If you are experiencing issues try changing the host here. You may need to restart Obsidian after closing settings, for this change to take effect.",NONSTANDARD_HEAD:"Non-Excalidraw.com supported features",NONSTANDARD_DESC:"These features are not available on excalidraw.com. When exporting the drawing to Excalidraw.com these features will appear different.",CUSTOM_PEN_NAME:"Number of custom pens",CUSTOM_PEN_DESC:"You will see these pens next to the Obsidian Menu on the canvas. You can customize the pens on the canvas by long-pressing the pen button.",EXPERIMENTAL_HEAD:"Experimental features",EXPERIMENTAL_DESC:"Some of these setting will not take effect immediately, only when the File Explorer is refreshed, or Obsidian restarted.",FIELD_SUGGESTER_NAME:"Enable Field Suggester",FIELD_SUGGESTER_DESC:"Field Suggester borrowed from Breadcrumbs and Templater plugins. The Field Suggester will show an autocomplete menu when you type excalidraw- or ea. with function description as hints on the individual items in the list.",FILETYPE_NAME:"Display type (✏️) for excalidraw.md files in File Explorer",FILETYPE_DESC:"Excalidraw files will receive an indicator using the emoji or text defined in the next setting.",FILETAG_NAME:"Set the type indicator for excalidraw.md files",FILETAG_DESC:"The text or emoji to display as type indicator.",INSERT_EMOJI:"Insert an emoji",LIVEPREVIEW_NAME:"Immersive image embedding in live preview editing mode",LIVEPREVIEW_DESC:"Turn this on to support image embedding styles such as ![[drawing|width|style]] in live preview editing mode. The setting will not effect the currently open documents. You need close the open documents and re-open them for the change to take effect.",ENABLE_FOURTH_FONT_NAME:"Enable fourth font option",ENABLE_FOURTH_FONT_DESC:"By turning this on, you will see a fourth font button on the properties panel for text elements. Files that use this fourth font will (partly) lose their platform independence. Depending on the custom font set in settings, they will look differently when loaded in another vault, or at a later time. Also the 4th font will display as system default font on excalidraw.com, or other Excalidraw versions.",FOURTH_FONT_NAME:"Forth font file",FOURTH_FONT_DESC:"Select a .ttf, .woff or .woff2 font file from your vault to use as the fourth font. If no file is selected, Excalidraw will use the Virgil font by default.",SCRIPT_SETTINGS_HEAD:"Settings for installed Scripts",TASKBONE_HEAD:"Taskbone Optical Character Recogntion",TASKBONE_DESC:"This is an experimental integration of optical character recognition into Excalidraw. Please note, that taskbone is an independent external service not provided by Excalidraw, nor the Excalidraw-Obsidian plugin project. The OCR service will grab legible text from freedraw lines and embedded pictures on your canvas and place the recognized text in the frontmatter of your drawing as well as onto clipboard. Having the text in the frontmatter will enable you to search in Obsidian for the text contents of these. Note, that the process of extracting the text from the image is not done locally, but via an online API. The taskbone service stores the image on its servers only as long as necessary for the text extraction. However, if this is a dealbreaker, then please don't use this feature.",TASKBONE_ENABLE_NAME:"Enable Taskbone",TASKBONE_ENABLE_DESC:"By enabling this service your agree to the Taskbone Terms and Conditions and the Privacy Policy.",TASKBONE_APIKEY_NAME:"Taskbone API Key",TASKBONE_APIKEY_DESC:"Taskbone offers a free service with a reasonable number of scans per month. If you want to use this feature more frequently, or you want to supoprt the developer of Taskbone (as you can imagine, there is no such thing as 'free', providing this awesome OCR service costs some money to the developer of Taskbone), you can purchase a paid API key from taskbone.com. In case you have purchased a key, simply overwrite this auto generated free-tier API-key with your paid key.",SELECT_FILE:"Select a file then press enter.",SELECT_FILE_WITH_OPTION_TO_SCALE:"Select a file then press ENTER, or ALT+ENTER to insert at 100% scale.",NO_MATCH:"No file matches your query.",SELECT_FILE_TO_LINK:"Select the file you want to insert the link for.",SELECT_DRAWING:"Select the image or drawing you want to insert",TYPE_FILENAME:"Type name of drawing to select.",SELECT_FILE_OR_TYPE_NEW:"Select existing drawing or type name of a new drawing then press Enter.",SELECT_TO_EMBED:"Select the drawing to insert into active document.",SELECT_MD:"Select the markdown document you want to insert",INFINITE_LOOP_WARNING:"EXCALIDRAW WARNING\nAborted loading embedded images due to infinite loop in file:\n",SCRIPT_EXECUTION_ERROR:"Script execution error. Please find error message on the developer console.",LOAD_FROM_BACKUP:"Excalidraw file was corrupted. Loading from backup file.",GOTO_FULLSCREEN:"Goto fullscreen mode",EXIT_FULLSCREEN:"Exit fullscreen mode",TOGGLE_FULLSCREEN:"Toggle fullscreen mode",OPEN_LINK_CLICK:"Navigate to selected element link",OPEN_LINK_PROPS:"Open markdown-embed properties or open link in new window"},enGB={},es={},fr={},hi={},id={},it={},ja={},ko={},nl={},no={},pl={},pt={},ptBR={},ro={},ru={},tr={},zhCN={INSTALL_SCRIPT:"安装此脚本",UPDATE_SCRIPT:"发现可用更新 - 点击安装",CHECKING_SCRIPT:"检查脚本更新 - 点击重新安装",UNABLETOCHECK_SCRIPT:"检查更新失败 - 点击重新安装",UPTODATE_SCRIPT:"已安装最新脚本 - 点击重新安装",OPEN_AS_EXCALIDRAW:"打开为 Excalidraw 绘图",TOGGLE_MODE:"在 Excalidraw 和 Markdown 模式之间切换",CONVERT_NOTE_TO_EXCALIDRAW:"转换空白笔记为 Excalidraw 绘图",CONVERT_EXCALIDRAW:"转换 *.excalidraw 为 *.md 文件",CREATE_NEW:"新建 Excalidraw 绘图",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (兼容 Logseq)",DOWNLOAD_LIBRARY:"导出 stencil 库为 *.excalidrawlib 文件",OPEN_EXISTING_NEW_PANE:"打开已有的绘图 - 于新面板",OPEN_EXISTING_ACTIVE_PANE:"打开已有的绘图 - 于当前面板",TRANSCLUDE:"嵌入绘图(形如 ![[drawing]])到当前文档",TRANSCLUDE_MOST_RECENT:"嵌入最近编辑过的绘图(形如 ![[drawing]])到当前文档",TOGGLE_LEFTHANDED_MODE:"切换为左手模式",NEW_IN_NEW_PANE:"新建绘图 - 于新面板",NEW_IN_ACTIVE_PANE:"新建绘图 - 于当前面板",NEW_IN_POPOUT_WINDOW:"新建绘图 - 于新窗口",NEW_IN_NEW_PANE_EMBED:"新建绘图 - 于新面板 - 并将其嵌入(形如 ![[drawing]])到当前文档",NEW_IN_ACTIVE_PANE_EMBED:"新建绘图 - 于当前面板 - 并将其嵌入(形如 ![[drawing]])到当前文档",NEW_IN_POPOUT_WINDOW_EMBED:"新建绘图 - 于新窗口 - 并将其嵌入(形如 ![[drawing]])到当前文档",EXPORT_SVG:"导出 SVG 文件到当前目录",EXPORT_PNG:"导出 PNG 文件到当前目录",TOGGLE_LOCK:"切换文本元素为原文模式(RAW)/预览模式(PREVIEW)",DELETE_FILE:"从库中删除所选图像(或 MD-Embed)的源文件",INSERT_LINK_TO_ELEMENT:"复制所选元素的内部链接。按住 CTRL/CMD 可复制元素所在分组的内部链接。按住 SHIFT 可复制元素周围区域的内部链接。",INSERT_LINK_TO_ELEMENT_GROUP:"复制所选元素所在分组的内部链接(形如 [[file#^group=elementID]])",INSERT_LINK_TO_ELEMENT_AREA:"复制所选元素周围区域的内部链接(形如 [[file#^area=elementID]])",INSERT_LINK_TO_ELEMENT_NORMAL:"复制所选元素的引用链接(形如 [[file#^elementID]])",INSERT_LINK_TO_ELEMENT_ERROR:"未选择画布里的单个元素",INSERT_LINK_TO_ELEMENT_READY:"链接已生成并复制到剪贴板",INSERT_LINK:"插入文件的内部链接(形如 [[drawing]])到当前绘图",INSERT_IMAGE:"插入图像(以图像形式嵌入)到当前绘图",INSERT_MD:"插入 Markdown 文档(以图像形式嵌入)到当前绘图",INSERT_LATEX:"插入 LaTeX 公式到当前绘图",ENTER_LATEX:"输入 LaTeX 表达式",READ_RELEASE_NOTES:"阅读本插件的最新发行版本说明",TRAY_MODE:"切换绘图工具属性页为面板模式(Panel)/托盘模式(Tray)",SEARCH:"搜索文本",INSTALL_SCRIPT_BUTTON:"安装或更新 Excalidraw 自动化脚本",OPEN_AS_MD:"打开为 Markdown 文件",SAVE_AS_PNG:"导出 PNG 到当前目录(按住 CTRL/CMD 设定导出路径)",SAVE_AS_SVG:"导出 SVG 到当前目录(按住 CTRL/CMD 设定导出路径)",OPEN_LINK:"打开所选元素里的链接 \n(按住 SHIFT 在新面板打开)",EXPORT_EXCALIDRAW:"导出为 .Excalidraw 文件",LINK_BUTTON_CLICK_NO_TEXT:"请选择一个含有链接的图形或文本元素。\n按住 SHIFT 并点击此按钮可在新面板中打开链接。\n您也可以直接在画布中按住 CTRL/CMD 并点击图形或文本元素来打开链接。",FILENAME_INVALID_CHARS:'文件名不能含有以下符号: * " \\ < > : | ? #',FILE_DOES_NOT_EXIST:"文件不存在。按住 ALT(或 ALT + SHIFT)并点击链接来创建新文件。",FORCE_SAVE:"立刻保存该绘图(并更新嵌入了该绘图的面板)。\n详见插件设置中的定期保存选项",RAW:"文本元素正以原文(RAW)模式显示链接。\n点击切换到预览(PREVIEW)模式",PARSED:"文本元素正以预览(PREVIEW)模式显示链接。\n点击切换到原文(RAW)模式",NOFILE:"Excalidraw(没有文件)",COMPATIBILITY_MODE:"*.excalidraw 文件以兼容模式打开。转换为新格式以获得完整的插件功能。",CONVERT_FILE:"转换为新格式",RELEASE_NOTES_NAME:"显示更新说明",RELEASE_NOTES_DESC:"开启:每次更新本插件后,显示最新发行版本的说明。
关闭:您仍可以在 GitHub 上阅读更新说明。",NEWVERSION_NOTIFICATION_NAME:"通知插件更新",NEWVERSION_NOTIFICATION_DESC:"开启:当本插件存在可用更新时,显示通知。
关闭:您需要手动检查本插件的更新(设置 - 第三方插件 - 检查更新)。",FOLDER_NAME:"Excalidraw 文件夹",FOLDER_DESC:"新绘图的默认存储路径。若为空,将在库的根目录中创建新绘图。",FOLDER_EMBED_NAME:"将 Excalidraw 文件夹用于“新建绘图”命令创建的绘图",FOLDER_EMBED_DESC:"在命令面板中执行“新建绘图”系列命令时,新绘图的存储路径。
开启:使用 Excalidraw 文件夹。
关闭:使用 Obsidian 设置的新附件默认位置。",TEMPLATE_NAME:"Excalidraw 模板文件",TEMPLATE_DESC:"Excalidraw 模板文件的完整路径。
如果您的模板在默认的 Excalidraw 文件夹中且文件名是 Template.md,则此项应设为 Excalidraw/Template.md(也可省略 .md 扩展名,即 Excalidraw/Template)。
如果您在兼容模式下使用 Excalidraw,那么您的模板文件也必须是旧的 *.excalidraw 格式,例如 Excalidraw/Template.excalidraw。",SCRIPT_FOLDER_NAME:"Excalidraw 自动化脚本的文件夹",SCRIPT_FOLDER_DESC:"此文件夹用于存放 Excalidraw 自动化脚本。您可以在 Obsidian 命令面板中执行这些脚本,还可以为喜欢的脚本分配快捷键,就像为其他 Obsidian 命令分配快捷键一样。
该项不能设为库的根目录。",COMPRESS_NAME:"压缩 Excalidraw JSON",COMPRESS_DESC:"Excalidraw 绘图文件默认将元素记录为 JSON 格式。开启此项,可将元素的 JSON 数据以 BASE64 编码(使用 LZ-String 算法)。这样做的好处是:一方面可以避免原来的明文 JSON 数据干扰 Obsidian 的文本搜索结果,另一方面减小了绘图文件的体积。
当您通过功能区按钮或命令将绘图切换成 Markdown 模式时,数据将被解码回 JSON 格式以便阅读和编辑;而当您切换回 Excalidraw 模式时,数据就会被再次编码。
开启此项后,对于之前已存在的未压缩的绘图文件,需要重新打开并保存它们才能生效。",AUTOSAVE_NAME:"定期保存",AUTOSAVE_DESC:"定期保存当前绘图。此功能专为移动设备设计 —— 在桌面端,当您关闭 Excalidraw 或 Obsidian,或者移动焦点到其他面板的时候,软件是会自动保存的;但是在手机或平板上通过滑动手势退出 Obsidian 时,可能无法顺利触发自动保存。因此我添加了定期保存功能作为弥补。",AUTOSAVE_INTERVAL_NAME:"定期保存的时间间隔",AUTOSAVE_INTERVAL_DESC:"每隔多长时间执行一次保存。如果当前绘图没有发生改变,将不会触发保存。",FILENAME_HEAD:"文件名",FILENAME_DESC:"

点击阅读日期和时间格式参考

",FILENAME_SAMPLE:"“新建绘图”系列命令创建的文件名形如:",FILENAME_EMBED_SAMPLE:"“新建绘图并嵌入到当前文档”系列命令创建的文件名形如:",FILENAME_PREFIX_NAME:"“新建绘图”系列命令创建的文件名前缀",FILENAME_PREFIX_DESC:"执行“新建绘图”系列命令时,创建的绘图文件名的第一部分",FILENAME_PREFIX_EMBED_NAME:"“新建绘图并嵌入到当前文档”系列命令创建的文件名前缀",FILENAME_PREFIX_EMBED_DESC:"执行“新建绘图并嵌入到当前文档”系列命令时,创建的绘图文件名是否以当前文档名作为前缀?
开启:
关闭:否",FILENAME_POSTFIX_NAME:"“新建绘图并嵌入到当前文档”系列命令创建的文件名的中间部分",FILENAME_POSTFIX_DESC:"介于文件名前缀和日期时间之间的文本。仅对“新建绘图并嵌入到当前文档”系列命令创建的绘图生效。",FILENAME_DATE_NAME:"文件名里的日期时间",FILENAME_DATE_DESC:"文件名的最后一部分。允许留空。",FILENAME_EXCALIDRAW_EXTENSION_NAME:"文件扩展名(.excalidraw.md 或 .md)",FILENAME_EXCALIDRAW_EXTENSION_DESC:"该选项在兼容模式(即非 Excalidraw 专用 Markdown 文件)下不会生效。
开启:使用 .excalidraw.md 作为扩展名。
关闭:使用 .md 作为扩展名。",DISPLAY_HEAD:"显示",LEFTHANDED_MODE_NAME:"左手模式",LEFTHANDED_MODE_DESC:"目前只在托盘模式下生效。若开启此项,则托盘(绘图工具属性页)将位于右侧。
开启:左手模式。
关闭:右手模式。",MATCH_THEME_NAME:"使新建的绘图匹配 Obsidian 主题",MATCH_THEME_DESC:"如果 Obsidian 使用黑暗主题,新建的绘图文件也将使用黑暗主题。
但是若设置了模板,新建的绘图文件将跟随模板主题;另外,此功能不会作用于已有的绘图。
开启:跟随 Obsidian 主题风格。
关闭:跟随模板主题风格。",MATCH_THEME_ALWAYS_NAME:"使已有的绘图匹配 Obsidian 主题",MATCH_THEME_ALWAYS_DESC:"如果 Obsidian 使用黑暗主题,则绘图文件也将以黑暗主题打开;反之亦然。
开启:匹配 Obsidian 主题风格。
关闭:采用上次保存时的主题风格。",MATCH_THEME_TRIGGER_NAME:"Excalidraw 主题跟随 Obsidian 主题变化",MATCH_THEME_TRIGGER_DESC:"开启此项,则切换 Obsidian 的黑暗/明亮主题时,已打开的 Excalidraw 面板的主题会随之改变。
开启:跟随主题变化。
关闭:不跟随主题变化。",DEFAULT_OPEN_MODE_NAME:"Excalidraw 的默认运行模式",DEFAULT_OPEN_MODE_DESC:"设置 Excalidraw 的运行模式:普通模式(Normal)/禅模式(Zen)/阅读模式(View)。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-default-mode: normal/zen/view 的键值对。",DEFAULT_PEN_MODE_NAME:"触控笔模式(Pen mode)",DEFAULT_PEN_MODE_DESC:"打开绘图时,是否自动开启触控笔模式?",ZOOM_TO_FIT_NAME:"自动缩放以适应面板调整",ZOOM_TO_FIT_DESC:"调整面板大小时,自适应地缩放画布
开启:自动缩放。
关闭:禁用自动缩放。",ZOOM_TO_FIT_MAX_LEVEL_NAME:"自动缩放的最高级别",ZOOM_TO_FIT_MAX_LEVEL_DESC:"自动缩放画布时,允许放大的最高级别。该值不能低于 0.5(50%)且不能超过 10(1000%)。",LINKS_HEAD:"链接(Links) & 以文本形式嵌入到绘图中的文档(Transclusion)",LINKS_DESC:"按住 CTRL/CMD 并点击包含 [[链接]] 的文本元素可以打开其中的链接。
如果所选文本元素包含多个 [[有效的内部链接]] ,只会打开第一个链接;如果所选文本元素包含有效的 URL 链接 (如 https://http://),插件会在浏览器中打开链接。
链接的源文件被重命名时,绘图中相应的 [[内部链接]] 也会同步更新。若您不愿绘图中的链接外观因此而变化,可使用 [[内部链接|别名]]。",ADJACENT_PANE_NAME:"在相邻面板中打开",ADJACENT_PANE_DESC:"按住 CTRL/CMD + SHIFT 并点击绘图里的内部链接时,插件默认会在新面板中打开该链接。
若开启此项,Excalidraw 会先尝试寻找已有的相邻面板(按照右侧、左侧、上方、下方的顺序),并在其中打开该链接。如果找不到,再在新面板中打开。",MAINWORKSPACE_PANE_NAME:"在主工作区中打开",MAINWORKSPACE_PANE_DESC:"按住 CTRL/CMD + SHIFT 并点击绘图里的内部链接时,插件默认会在当前窗口的新面板中打开该链接。
若开启此项,Excalidraw 会在主工作区的面板中打开该链接。",LINK_BRACKETS_NAME:"在链接的两侧显示 [[中括号]]",LINK_BRACKETS_DESC:"文本元素处于预览模式时,在内部链接的两侧显示中括号。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-link-brackets: true/false 的键值对。",LINK_PREFIX_NAME:"内部链接的前缀",LINK_PREFIX_DESC:'文本元素处于预览模式时,如果其中包含链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-link-prefix: "📍 " 的键值对。',URL_PREFIX_NAME:"外部链接的前缀",URL_PREFIX_DESC:'文本元素处于预览模式时,如果其中包含外部链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-url-prefix: "🌐 " 的键值对。',PARSE_TODO_NAME:"解析任务列表(Todo)",PARSE_TODO_DESC:"将文本元素中的 - [ ]- [x] 前缀显示为方框。",TODO_NAME:"未完成的 Todo 项目",TODO_DESC:"未完成的 Todo 项目的符号",DONE_NAME:"已完成的 Todo 项目",DONE_DESC:"已完成的 Todo 项目的符号",HOVERPREVIEW_NAME:"鼠标悬停预览内部链接",HOVERPREVIEW_DESC:"开启:在 Excalidraw 阅读模式(View)下,鼠标悬停在 [[内部链接]] 上即可预览;而在普通模式(Normal)下, 鼠标悬停在内部链接右上角的蓝色标识上即可预览。
关闭:鼠标悬停在 [[内部链接]] 上,并且按住 CTRL/CMD 时进行预览。",LINKOPACITY_NAME:"链接标识的透明度",LINKOPACITY_DESC:"含有链接的元素,其右上角的链接标识的透明度。介于 0(全透明)到 1(不透明)之间。",LINK_CTRL_CLICK_NAME:"按住 CTRL/CMD 并点击含有 [[链接]] 或 [别名](链接) 的文本来打开链接",LINK_CTRL_CLICK_DESC:"如果此功能影响到您使用某些原版 Excalidraw 功能,可将其关闭。关闭后,您只能通过绘图面板标题栏中的链接按钮来打开链接。",TRANSCLUSION_WRAP_NAME:"Transclusion 的折行方式",TRANSCLUSION_WRAP_DESC:"中的 number 表示嵌入的文本溢出时,在第几个字符处进行折行。
此开关控制具体的折行方式。若开启,则严格在 number 处折行,禁止溢出;若关闭,则允许在 number 位置后最近的空格处折行。",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion 的默认折行位置",TRANSCLUSION_DEFAULT_WRAP_DESC:"除了通过 ![[doc#^block]]{number} 中的 number 来控制折行位置,您也可以在此设置 number 的默认值。
一般设为 0 即可,表示不设置固定的默认值,这样当您需要嵌入文档到便签中时,Excalidraw 能更好地帮您自动处理。",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Transclusion 的最大显示字符数",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"以 ![[内部链接]]![](内部链接) 的形式将文档以文本形式嵌入到绘图中时,该文档在绘图中可显示的最大字符数量。",GET_URL_TITLE_NAME:"使用 iframly 获取页面标题",GET_URL_TITLE_DESC:"拖放链接到 Excalidraw 时,使用 http://iframely.server.crestify.com/iframely?url= 来获取页面的标题。",MD_HEAD:"以图像形式嵌入到绘图中的 Markdown 文档(MD-Embed)",MD_HEAD_DESC:"您还可以将 Markdown 文档以图像形式(而非文本形式)嵌入到绘图中。方法是按住 CTRL/CMD 并从文件管理器中把文档拖入绘图,或者执行“以图像形式嵌入”系列命令。",MD_TRANSCLUDE_WIDTH_NAME:"MD-Embed 的默认宽度",MD_TRANSCLUDE_WIDTH_DESC:"MD-Embed 的宽度。该选项会影响到折行,以及图像元素的宽度。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#标题|宽度x最大高度]]。",MD_TRANSCLUDE_HEIGHT_NAME:"MD-Embed 的默认最大高度",MD_TRANSCLUDE_HEIGHT_DESC:"MD-Embed 的高度取决于 Markdown 文档内容的多少,但最大不会超过该值。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#^块引ID|宽度x最大高度]]。",MD_DEFAULT_FONT_NAME:"MD-Embed 的默认字体",MD_DEFAULT_FONT_DESC:"可以设为 VirgilCasadia 或其他有效的 .ttf/.woff/.woff2 字体文件(如 我的字体.woff2)。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-font: 字体名或文件名 的键值对。",MD_DEFAULT_COLOR_NAME:"MD-Embed 的默认文本颜色",MD_DEFAULT_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-font-color: steelblue 的键值对。",MD_DEFAULT_BORDER_COLOR_NAME:"MD-Embed 的默认边框颜色",MD_DEFAULT_BORDER_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-border-color: gray 的键值对。
如果您不想要边框,请留空。",MD_CSS_NAME:"MD-Embed 的默认 CSS 样式表",MD_CSS_DESC:"MD-Embed 图像所采用的 CSS 样式表文件名。需包含扩展名,例如 md-embed.css。允许使用 Markdown 文件(如 md-embed-css.md),但其内容应符合 CSS 语法。
如果您要查询 CSS 所作用的 HTML 节点,请在 Obsidian 开发者控制台(CTRL+SHIFT+i)中键入命令:ExcalidrawAutomate.mostRecentMarkdownSVG —— 这将显示 Excalidraw 最近生成的 SVG。
此外,在 CSS 中不能任意地设置字体,您一般只能使用系统默认的标准字体(详见 README),但可以通过上面的设置来额外添加一个自定义字体。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-css: 库中的CSS文件或CSS片段 的键值对。",EMBED_HEAD:"嵌入到文档中的绘图(Embed) & 导出",EMBED_REUSE_EXPORTED_IMAGE_NAME:"将之前已导出的图像作为 Embed 的预览图(如果存在的话)",EMBED_REUSE_EXPORTED_IMAGE_DESC:"该选项与“自动导出 SVG/PNG 副本”选项配合使用。如果存在文件名相匹配的 SVG/PNG 副本,则将其作为 Embed 的预览图,而不再重新生成预览图。
该选项能够提高性能,尤其是当 Embed 中含有大量图像或 MD-Embed 时。但是,该选项也可能导致预览图无法立即响应你最新的修改,或者你对 Obsidian 主题风格的改变。
该选项仅作用于嵌入到文档中的绘图。由于种种原因,该技术无法用于加快绘图文件的打开速度。详见此说明。",EMBED_PREVIEW_SVG_NAME:"生成 SVG 格式的 Embed 预览图",EMBED_PREVIEW_SVG_DESC:"开启:在 Markdown 预览模式下,为 Embed 生成 SVG 格式的预览图。
关闭:为 Embed 生成 PNG 格式的预览图。注意:PNG 格式预览图不支持某些 绘图元素的块引用特性。",PREVIEW_MATCH_OBSIDIAN_NAME:"Embed 预览图匹配 Obsidian 主题",PREVIEW_MATCH_OBSIDIAN_DESC:"开启此项,则当 Obsidian 处于黑暗模式时,Embed 的预览图也会以黑暗模式渲染;当 Obsidian 处于明亮模式时,预览图也会以明亮模式渲染。
您可能还需要关闭“导出的图像包含背景”开关,来获得与 Obsidian 更加协调的观感。",EMBED_WIDTH_NAME:"Embed 预览图的默认宽度",EMBED_WIDTH_DESC:"该选项同时作用于 Obsidian 实时预览模式下的编辑视图和阅读视图,以及鼠标悬停时浮现的预览图。
您可为某个要嵌入到文档中的绘图(Embed)单独设置此项,方法是修改相应的链接格式为形如 ![[drawing.excalidraw|100]][[drawing.excalidraw|100x100]] 的格式。",EMBED_TYPE_NAME:"“嵌入绘图到当前文档”系列命令的源文件类型",EMBED_TYPE_DESC:"在命令面板中执行“嵌入绘图到当前文档”系列命令时,要嵌入绘图文件本身,还是嵌入其 PNG 或 SVG 副本。
如果您想选择 PNG 或 SVG 副本,需要先开启下方的“自动导出 PNG 副本”或“自动导出 SVG 副本”开关。
如果您选择了 PNG 或 SVG 副本,当副本不存在时,该命令将会插入一条损坏的链接,您需要打开绘图文件并手动导出副本才能修复 —— 也就是说,该选项不会自动帮您生成 PNG/SVG 副本,而只会引用已有的 PNG/SVG 副本。",EMBED_WIKILINK_NAME:"“嵌入绘图到当前文档”命令产生的内部链接类型",EMBED_WIKILINK_DESC:"开启:将产生 ![[Wiki 链接]]关闭:将产生 ![](Markdown 链接)。",EXPORT_PNG_SCALE_NAME:"导出的 PNG 图像的比例",EXPORT_PNG_SCALE_DESC:"导出的 PNG 图像的大小比例",EXPORT_BACKGROUND_NAME:"导出的图像包含背景",EXPORT_BACKGROUND_DESC:"如果关闭,将导出透明背景的图像。",EXPORT_PADDING_NAME:"导出的图像的空白边距",EXPORT_PADDING_DESC:"导出的 SVG/PNG 图像四周的空白边距(单位:像素)。
增加该值,可以避免在导出图像时,靠近图像边缘的图形被裁掉。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-export-padding: 5 的键值对。",EXPORT_THEME_NAME:"导出的图像包含主题",EXPORT_THEME_DESC:"导出与绘图的黑暗/明亮主题匹配的图像。如果关闭,在黑暗主题下导出的图像将和明亮主题一样。",EXPORT_HEAD:"导出设置",EXPORT_SYNC_NAME:"保持 SVG/PNG 文件名与绘图文件同步",EXPORT_SYNC_DESC:"打开后,当绘图文件被重命名时,插件将同步更新同文件夹下的同名 .SVG 和 .PNG 文件。当绘图文件被删除时,插件将自动删除同文件夹下的同名 .SVG 和 .PNG 文件。",EXPORT_SVG_NAME:"自动导出 SVG 副本",EXPORT_SVG_DESC:"自动导出和绘图文件同名的 SVG 副本。插件会将副本保存到绘图文件所在的文件夹中。在文档中嵌入这个 SVG 文件,相比直接嵌入绘图文件,具有更强的跨平台能力。
此开关开启时,每次您编辑 Excalidraw 绘图,其 SVG 文件副本都会同步更新。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-autoexport: none/both/svg/png的键值对",EXPORT_PNG_NAME:"自动导出 PNG 副本",EXPORT_PNG_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.PNG。",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"同时导出黑暗和明亮风格的图像",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"若开启,Excalidraw 将导出两个文件:filename.dark.png(或 filename.dark.svg)和 filename.light.png(或 filename.light.svg)。
该选项可作用于“自动导出 SVG 副本”、“自动导出 PNG 副本”,以及其他的手动的导出命令。",COMPATIBILITY_HEAD:"兼容性设置",EXPORT_EXCALIDRAW_NAME:"自动导出 Excalidraw 旧格式副本",EXPORT_EXCALIDRAW_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.excalidraw。",SYNC_EXCALIDRAW_NAME:"新旧格式绘图文件的内容保持同步",SYNC_EXCALIDRAW_DESC:"如果旧格式(*.excalidraw)绘图文件的修改日期比新格式(*.md)更新,则根据旧格式文件的内容来更新新格式文件。",COMPATIBILITY_MODE_NAME:"以旧格式创建新绘图",COMPATIBILITY_MODE_DESC:"开启此功能后,您通过功能区按钮、命令面板、文件浏览器等创建的绘图都将是旧格式(*.excalidraw)。此外,您打开旧格式绘图文件时将不再收到提醒消息。",MATHJAX_NAME:"MathJax (LaTeX) 的 javascript 库服务器",MATHJAX_DESC:"如果您在绘图中使用 LaTeX,插件需要从服务器获取并加载一个 javascript 库。如果您的网络无法访问某些库服务器,可以尝试通过此选项更换库服务器。更改此选项后,您可能需要重启 Obsidian 来使其生效。",EXPERIMENTAL_HEAD:"实验性功能",EXPERIMENTAL_DESC:"以下部分设置不会立即生效,需要刷新文件资源管理器或者重启 Obsidian 才会生效。",FIELD_SUGGESTER_NAME:"开启字段建议",FIELD_SUGGESTER_DESC:"开启后,当您在编辑器中输入 excalidraw- 或者 ea. 时,会弹出一个带有函数说明的自动补全提示菜单。
该功能借鉴了 Breadcrumbs 和 Templater 插件。",FILETYPE_NAME:"在文件浏览器中为 excalidraw.md 文件添加类型标识符(如 ✏️)",FILETYPE_DESC:"可通过下一项设置来自定义类型标识符。",FILETAG_NAME:"excalidraw.md 文件的类型标识符",FILETAG_DESC:"要显示为类型标识符的 emoji 或文本。",INSERT_EMOJI:"插入 emoji",LIVEPREVIEW_NAME:"嵌入绘图到文档时,模拟嵌入图像的语法",LIVEPREVIEW_DESC:"开启此项,则可在 Obsidian 实时预览模式的编辑视图下,用形如 ![[绘图|宽度|样式]] 的语法来嵌入绘图。
该选项不会在已打开的文档中立刻生效 —— 你需要重新打开此文档来使其生效。",ENABLE_FOURTH_FONT_NAME:"为文本元素启用本地字体",ENABLE_FOURTH_FONT_DESC:"开启此项后,文本元素的属性面板里会多出一个本地字体按钮。
使用了本地字体的绘图文件,将会失去一部分跨平台能力 —— 若将绘图文件移动到其他库中打开,显示效果可能会截然不同;若在 excalidraw.com 或者其他版本的 Excalidraw 中打开,使用本地字体的文本会变回系统默认字体。",FOURTH_FONT_NAME:"本地字体文件",FOURTH_FONT_DESC:"选择库文件夹中的一个 .ttf, .woff 或 .woff2 字体文件作为本地字体文件。若未选择文件,则使用默认的 Virgil 字体。",SCRIPT_SETTINGS_HEAD:"已安装脚本的设置",SELECT_FILE:"选择一个文件后按回车。",NO_MATCH:"查询不到匹配的文件。",SELECT_FILE_TO_LINK:"选择要插入(链接)到当前绘图中的文件。",SELECT_DRAWING:"选择要插入(以图像形式嵌入)到当前绘图中的图像。",TYPE_FILENAME:"键入要选择的绘图名称。",SELECT_FILE_OR_TYPE_NEW:"选择已有绘图,或者新绘图的类型,然后按回车。",SELECT_TO_EMBED:"选择要插入(嵌入)到当前文档中的绘图。",SELECT_MD:"选择要插入(以图像形式嵌入)到当前绘图中的 Markdown 文档。",INFINITE_LOOP_WARNING:"EXCALIDRAW 警告\n停止加载嵌入的图像,因为此文件中存在死循环:\n",SCRIPT_EXECUTION_ERROR:"脚本运行错误。请在开发者控制台中查看错误信息。",LOAD_FROM_BACKUP:"Excalidraw 文件已损坏。尝试从备份文件中加载。",GOTO_FULLSCREEN:"进入全屏模式",EXIT_FULLSCREEN:"退出全屏模式",TOGGLE_FULLSCREEN:"切换全屏模式"},zhTW={};const localeMap={ar:ar,cs:cz,da:da,de:de,en:en,"en-gb":enGB,es:es,fr:fr,hi:hi,id:id,it:it,ja:ja,ko:ko,nl:nl,nn:no,pl:pl,pt:pt,"pt-br":ptBR,ro:ro,ru:ru,tr:tr,"zh-cn":zhCN,"zh-tw":zhTW},locale=localeMap[obsidian_module.moment.locale()];function t$d(e){return locale||errorlog({where:"helpers.t",message:"Error: Excalidraw locale not found",locale:obsidian_module.moment.locale()}),locale&&locale[e]||en[e]}var html2canvasExports={},html2canvas$1={get exports(){return html2canvasExports},set exports(e){html2canvasExports=e}};html2canvas$1.exports=function(){ +const EXCALIDRAW_PACKAGES = "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IgSzjZZxmIVsCZyn9NAAAOCCzONlnGlnjbjxpAAD261zOMlnGgAAcRAFnGm3WhXzW0/CV82AAAUEE262AABGEH261LONIAAgAAVhAxnGCPWwAADwgCPWmzxvm40gAALOMRnGKPWyAAHM4yR60I9aFnGgAAMRAlnGgAAeRBjfNpWBZ2AOt1pmcao9aEetO3W+HrYAAH4QMZxlM43zcY2eNQetmcCWtzIAAAwQTNxjT1sAABsIId1u+qzOwBAAAWCCbdaGetSzjH7rcn5pc8yblaRetYvWyzxjZ4wR61/dasetYzjJZxgz1uh62bdaZnGgAAFhBnPGNHWlPzdL1tF63i9apnGbPWxXrQs42V62q9b1etWvWrHrSz1s263M5bC/N59Wz07EVYTr83vABqettPWnbrXt1sN60K9abPGUzjBnrTT1o160L+brbcbS5d4ANz1s961zONSet8vWyAAJ71uzca+9bDpIAP+IggHSACD61TOMQ+tYfWzbrfm42960I9ao+tYpARfzSxhjj62ZuNvetLPW+Hrcn1sj62DK0eHw2fW/NxjM4x48Y++aj/N7wAGXrQb1u48b5uMFet9PWsZxpt1r260I9bzutlfWrbrTt1rh6149b83GSzjRvrc31uoC3OwBAAAlCBl9bAAAoiCnP01Qt7wAQAACQgm3Wmzxsp1tP6aAABcEAT61LOM6+tbPWnbrdQFqufp0gBAAAFCDi9alnGnvW8PrVM40gACAABJEBH63a9bMAtsN6OkAIAAEIQbvrWM4z362QABletNnjMnrdQFqwC07fwNutYzjEZxsv1sf62aKQJeApAWjbrWx4xs8YLONu+tMzjD/reA4FoC2rVr1utv/W//rQb1rZ61vSQ3jsLAW94AHP1oR63Q9a+etK/W/Nxvc/W4C1O9aZnGm3WnnrVM40B63IDatitwgWp3rZt1o162WeM9utNnjUnrW71rD6279a6+tCzjDvrTvVpkC10gAhetP3Wg/rSf1pIxjOwBAAAeCA7daRnGgA2y45vlXDpACAAB0ECmcYWeMRnGEzjZHrVANrK3SPBZmfNl/WmnrWM4xe61iDbEhCaYGDOBu8ACGcYI9bM3GzgWuQbSKLXeACSDaketTnjVQbbuBm8C10gBAAASCAzOMRnGw/Wm/rTt1qkG1OeNdutOg26MDIEFveACAAAiEE263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nrXt1s4G119a6+tjU2yzxm6Nqx6049a8etIzjDXrZwNt562G9alnG6424sQD1GjAJLU9aKJtSzjN2bTxNoQS3giAjY0dIAVgbfm4y163I9bxZtgc2lcwAomhwS0aDbYRtWvW2kbej1sgAAdDamBt0PWuYLeltgGG3o9bAAAciChLgFBt/A2y2bTM4ybG32jb6EtLHjNPrQINoAG0+ja4wtXCWsObSj1tD60ATaNWcV3WvbrS2NrL615ZbU4tc/WrGbWuNpv60YTafxtVA2/8badNqTcC8wQ45t5/WkZxpm4y162/da2etbvWrvrVM42jG3lgBLRMSXWhfrZAACJ62k9br+thPWuXrSLY3p0AAja0et1o2vnrW2NosS3aecrEt5/W5vrdiNuv627zadhtvfORqXH4NuIm1tjbIAAyt2VELZkrkcS0aDaJxtaE22+bVqwDPm3BJacGSoc2/NxtvNoF63aLZs+tgPWpZxvT1tiS24DB0BtqPWqZxmBNqrm3WBlU4tYA278bQs429G28eNsWgtBpbPrbn1u762YZbMGSV3WyMba7Nq1608TapQMRSW8uLSUludgD2Dap5tB/WhXrX5NoAW309al5tK825Prdb1rxm1s9brAA5/WpZxhM42lG339bb+t8PWnbrQj1poQA3JbvHqAnEJZLQAgBWS09+bDBto82uCbeH1oV60o9aBRtCvWi3rdD1udm319bR5tWvWo4bZ71sJS23JbFkt7ZQGgPIQAH4W0KvVnYA8A2lObeItsgAAW9b8etTs2sebVM4yOG1/daZZtcs2hWbUrNqR62vja8UAczjZibZ71t262I9aC3Ghc24xbVsNoWG17jaiUtvj1B5LYBLjgG2BjbOhthw25ObSqNrVG0iLbtFtvPWiRbZuNoV63ZuMfetAvWy0RAClp2na55btRtKPWnqbdlNtpm0tjbRJtUE2wnrej1o161BLboetCPWpsbZAAA48YM9acltdC2mXLdX2MPRrAgBkUt3i24JbaEtqnG2I9bqBtiS2yubZAAFz62ZuMjettC2zbrYotu4W3EpbeOtVM2rsrTmzgZS1xLa6QAEPWw3rff1ptm1h9axFtbs24frfv1r0W0SLacltSQ2uybSz1t5S0m8cqtcAqWrVasL1uwG3XjaUlt4S2qZxgf1vZG1FDasetZfWhnrZXNu0m27LbJxt/I2o5bdx41MAAg9b1xtEE2ppbdgNolm2mABvhtTs2mZxoXNrf62DjafzE8PW0vrc2NrYW2l9b3ZtQS2sRbdM40x60W9bvhtu3WzHrXM42dm2uzb3Zt642t1Lae5g9S1YMRi0t3qW2tzPRNpIm3u9aUltu/Wy2bTZ42CG2NDbAFt4A2/frSQtoaW009bs3GYvW3JbcH1pbG2k9aD+t1C2v7rWwttBW0zOM3Zt9/WhHrdYAEAABoIEj1qmcbNjaFetMU2i3rd71sIG3jON+etdfWzhbboNVdy0sGAi0tqWROFbVT1pp60WeMWetxk25FbWEtoB627jbD+tCvW1Prfitq5m2yrbIlt6K2/8baYAEb631Tajet+K2rNxixNtMABeja/+tUzjehbYwtuYW3w9aYpt7C218eCGWgMUDKAAmRtIPWyAAIAtosG1VLb2VtLs2sZxlytvr6239bNut6q2/8bZ6NsxW16rbTAA7K2nbre6NpZ60vDaaetNs23brbD1u7m2WeM2PGmbjTgbfqtooa2QSBf0tgf2f9LfJ9FPq3QZbsDw3HpCBxsjNu5a2BXJsMtJ4WgfrfX1okW0w9aXxtmPW4jLczDxZVRtZanutTC2yzxsoACWcYaABLZt9M2t3rcENo9W09zasJtBq28tbSwtpNW3crb3steT4Ou6ixlr4ABsZbiltA91Sm6sHTlMy1aLbRltVS2qRbcYtstm2ZuMO+tk82libXj1tsW379bIJtLY2pMbZAAACW3qjapotghoZzLR9Ns5K2CJbtWtwC24Q0t66RNKCWukTwtuXDYQ6MNlrz/CjZatAm9wWtilMdls2BanZauCtmeuS7LQCcK/2Y3ZaVe69g2pdbSutqb63Lrb2htLPWoJbfotqVm0uzaqVt+q2jtbTTltYK3Kdb4ct6yW+irVTltwkDAba18twuW9FuqLlrNG1WowB7qnpMeXLQZFhg2225bxZk9uWy9bcpSjdy19LasNtBaWnPLdj4wkSgF5aagga+W+A3Fvrn71wz5aU6tCPm3kAAvlsOm1ogBl8tP+Wkz6HRtq20hTdaYGtsVOJHzbvlpiG3bjaSets82zTOu8AH0G0o9bgRt4E23frX5NrKm1TOMQltNK28/LWX6hV7rU9b9utm3Wjwbc5NqNm0I9MshtSzjKZxh0Nox617tbohmCY203rXM4x0G3RDb3lt0g2+CbUFnXeACIjad+tD/Wu74MUM3wm2Yrbo5tZQtOwbYT1tX60dNb4MtQzjP2bVhNrJi0B9atutGvW/9bW7Ntr62kLbM3GiA292baT1ptW12eNS+tbHjbebZj1orm1LONChtePW5HrZktq9G3RzbMCtdG2nvzX2VrJjxtdaLBAUbWkCHNV1pL5x2hasht4Y213rWT1oaW00LbXRtbPWlsbVrNurKISFbsttOo2uXrfD1qOG0RjaoxtihW4JHJaNsNW2tzai6tYB9fBbai7jqcBNdaf8tsPeYXrcr1oWcby9a6+tpgAD0bXott261JLaWetHvW0nrSD1ukG3W9aWxtwPWpZxj6ttf61NLbmVt8s2/frWn1t36139bzNtBXGPwHD2Nu762Qjaltt8PWvbrcz1sBW0I9afVtHHjfrbW+Nqt61d9aFetGw2lsbQd1q2K0yTaNetizjLNxk54zxQDvdbxFtNs2kFbaStt0W0TLb81tB3W4NbfZtsx628za9+tO22s7beH1om23SLbdFtU82hnrc8tuKG079azBtoW2rEbfv1oVm3TjaeNtWxW+YHPJ9ni61Y2RdgcpZWyfPPYDnoG29baQdthc24frWx4wK21zOMYttdi2/frTNtrlm099b4etdi2wBbSDtvTxI2raYpt7j4QbbRMtsR237dbOBt3M2uvrW5tr3xiivwBhtb22qpbeSNqq20ALabZtCm2qZxuctou22R9bXZt7I23EyE6Vq7niIKNS30fO2kJbV9togm33db3Ztwu2xVbYz1pp63q9aAhtlw24ybZb1pSW2S7aqVt0u2mUrcYACHtSR9ajBtvPWm2bfSVo9G2p9btdtmbjQIbdLtrlW1LzasRtUa21ErS4YUC62pyJSRt/O25XbYLtrV23S7ahBtyvWgbbfrtut61ebbjdtsu20wAPyNsB236LbC5t3fWrnbb1zipByEg4OKY2moZjbYWVthiBVlaF+twO2pbbWgxGW23K7a/Jtnk2pbbZTtqmcaVrbLlExzOMjADnto163jjbletJPW2mbaYAGp202rarxth22pbbUNtv362p9a0et9PWuPbUDFsxBycvFaWCPrW6srQ58G5K3Vlb6yt6a2xeAG2VrZByY7htttdO2pbbcztvL23fbacht1E2rfze8Dg7q2Mjb/Wt+gOcW9JtNtkmIr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4N53s8/2eYRGNqBa2LzYN5s28wOeZTUMvem6QANt5yAAINedkvNUF7ybzD55ty83mobgFPxnmBLzC55yy84WobjG23nmobzaAp8tQ2ASTtPNyuN0zzZV5wK83K4xDPPlnn0zzMrjPAU/ujmsj33nn4zz1N55d5SQKfeAARXnlzzFl5qVxn7eZEL2K3nqBTATWim84AAC3QeYE4r9ravMdXmRbz3V5iy84T6euZ2PXnVbzhwJo5nfGebYvPPnmNbzQZ54C81cCYMvNyuNEzzet5+4E9faU+vMxnmKzz6N579s9q1qLPNlnnvTzxZ5pu8zK42AvOAdmcMtdp54s81mebfPMT3nZXGwF56EE0xygbx3HnnQbzRF5yAAEveanvMq+nnYAgZ55m8+DeZ3vMe3mH1DtLBBu7RvebFcZb3m5XGoZ5mM83aebJBM2Xnbzzsl5nDs+8AAfvNZnmvTzb55sVxl6eeyvOkRaavdr957082+eePPPf3niWc6k2v+8wVecpvPU3mPfTL952y82/eaZvNi3m+xjooJ2m8zmefbPPJXmqzzft5rjs5t7owvN03mOzzFV5508zBeeaFPzjGfWdEd5tS80leZwfN4PmJOz+tmVoU0Q+edPNJXmUrzZD5l0E6X+ntPMg3mi7z2D5+M87g+b9vNqdnibddp5ph8x2edofN+3n6AdXV5ms89feZDPO33mIYD6N50s8436ftPNfXnwbzmt5p28zrefovPSuMh7zdnZtQLf3eekfOZnnZHzYN5q28xP6fE0OBXnCLzQl5sVxpWea7PPjnngzzYZ55sEwuzudgA73mnzzTd5sy837ecC7PvAA57zk95p887+eZC7Pb+mEuz9p5+a81vec7PPlXnSrz2Z5uq81VeY7725F67Tz215sq854+ZKvNlXnAnzFV5qq82uCbTPMyuMN7zZV53B8xrebBvN2nmHLzgt5lYk8AVvifOg3nszzyT5/+8zK4zzPOldnSRTQAZky81K4xDPPtnmsnzEN5nJ89TebDiP0Jb9HzOT5rs87g+bsvPaTGX7zIV5nO88+edsvMjnmDJjdT5tp8712blx1VPminzzD59S89nEbpABBnn/TzH95kc88w+btPPqXmqAzpcRgPrT2ecDPNf3nui90T52J85AABmfPcXmV7zeWhr08zM+aOvO5nnU7zG3ZkoHbeeczPNDXnczzvl5sQM4aKbpAAg3mpXGxZ5nu81gPuUa0U3mhrznj5+e8zGebCfNBnmHTzkAAeM89HefTPNqBm/4DQiW50U8z5oEvPPPm/Tz2Z5ks868+cgABOnm3rzFgZv7s9q1ozPML3nbzzRZ502832eeLPPLnnXzzH15ks8zK43LPMnXno7z3p5nM876eaIvOmAATrzkAAdG85OecPvMWPn6Lz9j55e89meZCvMa3nZXGXZ5gB83aefchNbaGX/dqcWyF8/ReehfN0XmXTzcL5hF80Jea/vPIvnUXzFl5ui816ecxfNEXmqezesJqAPb6efjPPwvnPHz4z5vs876edtvMuLo6QdNl5oZ896eeVvP13mXuqcY2uV8yGef9PNh3nLrzPZ5ml8zz2edgA3Pm37zgwZrpbQeea3PPvPmJez5N5y682/ecVfNLPmQzzOZ5uO8wr2YpvP1nmnzzht5nu88qDtefMmvmvMW2LhjZI49ebifOtPm37zUd5mO8yb2fMfM+XnZLzWMxoZA8tebUfOB3ngLz50JjYfVteYXPNlXmMzzLZ5hs896eejvM5nmqrzNMxwJ86Ved/FNuPmFrzX0Jwnor6eZlcYg3n4Xzw55nu83GDq7vOyuMUnzEIZ1u8xxecFmP8Xnenz3iRiVxseeepvP+JGJXG3V5+i8x5edJvPC6GcMteb5gt89veYcfORJHKJTgz5oa8x5eazPNtvmcR9WfZrrUoveeYfMKXnIrzFB5qxLQI+eXPN2nmV7zzMJlXunO+cfPP1nmK+zm82ud8y2eZZvM19mrEt8r5t885u+bFvP8j6VrzsT54UfetedovMbXm9fD9p5+e8932e1a1N3nizzIZ5y58++Dt/PMyuN0zz7d52OY3SAACvOjnnDJTGoZqAPd7ecMvNPnnhzzkAAOVxhleaSvM/XmwnzNt56wAJ2ecdfMb3n0zzToZk5Iy6GY17M9+bgzz9Z52p8z6+e9PN+vnyzzKV53884f2cDDPH9n4Q9yH55p8x0+d9fPyuMY7zSz5nM87+ebxQBh3mb7zT55w681/efovOvnm3+zmYZ52AMeecDPM9nnanzYZ5mK896ef9PMEvmt7zWH5uZ85vMfKlNgDmmUtNl5jW88M+btPOP3muzzfH5hAc4vGqHhPORH/nz615uVxlveeevPBnn/TzZt5qV8xWeZlcbOnm+wzA6e+T8/K4y3vN2nmp7zH15ic85p+cPPPpnm5pTr6BxM82K40IvNLnmF3zQZ5+M81q+bxfNhPmuLzDp5sG81J+dXL1bSmWBzC75z+876eZIfP1vnX3z4N5yu8z1ebJfP2fmnzzKl5tu8wq+bbvOmABEzzRT5k28x6ecQvPifnmnzTj5g1LcI+ZHPNcXmnbzzz5mM84AAGfQLj88NeZzPOGXn7rzXp5yW82q+Y7POGPnk3zAr5kGU8wsbsHMCT6WPzq15xx82VeedvOQAA47zoZ59a80B+YjvMovmSvz2Z5sr892eZsvNo3mvTzRd56wAHaed9PPvXm5XGUrjcL81/ebyvMyuMi7zCixsiM7CtsNSNiuMmnzhj5jD80B+cEvNlXn37zcd55084Y+Ya/PjPnTrzaN5vV8w9eZDPNcXmuzzErjB08/GeZO/MCvnszzQ35kr89B+cXPP4GHLvzI35sb83t+fFfNbfmVLzB35mVxqYAHwvO3PnDHzx55308zWeacfOOnnTvzlV5zm87ReaTPPaRmWDDf6W1OLbp+cU/NIvnizz7X5ye88eefHvOT3mp7zlkZh2U/6MedgCQ/mlPzc95+s8y8+bLfPEvmLHz6SJloc3SABbPNPnmZXGXL5+Qw3nDrKWOxAJQzzDZ55QABZeY0ABenmiXzv55/r8xd+fevNQfnwbzMH5hOUw+Xs/D1Pl7W/tPZ5/y844+Y1fMhnmHPz/z5t881Webo/POfmwbzn957M88WeZCvNavmBvzl35kV8xJ+cyfMf3mqXzI15xJ89L+dq/Pg3mJzz2Z5+18w2ecOHOER725T4V59V88jefTPOEXn0PzUF5rM8+K+el/MOfmXvzKt5zr85q+eAvPjynvy9p/TET88V+fF/Pb3mgzz1v58Z82h+dvPP3vnWHzy557D89g+bxfNFnnhnzBl5w28zi+bovO3nm83zpv5kX89xefovOq/nHPzhM+iVxmc+YAfNEz7pGsSI5058z7eYA/N0XngPz1D5jr83meal/MOPnHPzTP51n8/W+Zu/OvynqI9J4WzC89GeaJHPY/mYnzygAZM8xoAA/PMWPnyRz9KJi9bZDefDvPZnnPrzIX5xr8yJ+Y+vMk/mjvzW95ivtNHeeTPMDfmlvzdp5uO8/RecIvPHnmpXGXp5vBU6bPuxjNBP683zW95uO8xS+cgAAtnmuLzSn5qP89P+Z7PPHnmJVj4n51a8yGeZ6/NF/mcvztl52m8yGedZjOcEGjUTHCpukAPe+YHvPbfnbfzUf5ui82x+bfPP9fmhYz0Y52nLej+ezPOGfnOXzMP51F86V+ft/OQfmezz/p5ns88WeccfNhnnjrzMj5/v81K4xdHOt877/znH52j8/R+fjvM+PnTrzTn5+s8yteekvPZ3mv/zpv5i2M6LoitjOhEH3/zrBWz/8wZ+afPM//n2vznj5uVxpq+cMfNh3QmMaA35mH85q+fuvMSuNo7zfT5jj89meeoAuYFwxXGBl5o/81/ef7/N4vmfLzPX53Mc0EqfAl0av7bzzfAFksc9iYeiVOK5b/nzn15v88xjeY+vPh3mILzBV55p8/v+ejvOlnnAAL/p5qVxlZ+Y8fOGPmHTz5Z5wX86ABbxfNhnm+xzT2RtH88ABb0/Nf/mSALLH5yS85b+d7fNgYnrxzMr4KQC8b+dkAtf3n5ALb95xe888+btPNsfnBfz915wb86heaQAuXfnrzzgZ50L8xN+ZzPN2nnTAAOZ5h083m+bxfNyuNHvzhj5y18y9+cO/PsvnvTzf15iIC45+e4/M/fnnnz4r5yVxqdebq/Ov/nbALVFe/Eg6+sYzvNG/mZALHL5vb8+/eeLPPuAXPAL615968z4BZlvOmABefzPn5oP847ecZ/OxnmdrzZV5t886+eesADhAXIgL6N5mIC92eZYAvxAX5XGiQFhc86debvPP/PnGLzx35jr8+BeeyAtF/mkJz3i+pFU74vpRVOQJnmNt0CZ3kABiqZwnO75a6zzaF5h0g3Y+cBfNdnmKALgv56e84yvoUvMSuMqrzrK+qe8wueZ7vNjS6qbz+b50AC1GQdivPIWH+nz/+WkK82u+eQKPvABknzs2xvH84wmfE/NMXmpgLeZ5oS8x4BcZfPe3nY/zMZ596836ebUfMw/mH3zZL5kn87JeYS21zvmxXG8P53bJFpedc/OTXmxXGi75lO7aPeahvPAAAxXGDp5vL81veaI/MJ/nPrzQF5vF832eczPPAXnDJzVf5mnEyNeZUAD/AXszzbZ5u08/ZOcsTOOTnKZdf753288+eclfPSvmHEznk552AKyBervOS/miQLRT5oG86SBaKfPi4mqfzbl53xM9Dsf8TOblbwgLHL51s8zK42QfOxAW4XzpgAcf8y2eejPMhPmvTzDz57M82K4wfPNv3nALznH53F854+ZUvOxfminz255v88yGec4/NMAXEgLcZ5h18+H+e1/MUAWTbzErjWkCwZ+bOvNvkG0fzsV5uQCxHeapfNL3mlnzmV5iy86YADjPNDXnCvzdF5l98yNeb9xM+y6/zznH54R80U+alcamAA9nzUrjLM8+R+Zh/Pvnm/bztm2sy8/GebxQAK/m37zo959r81k+cl/MjXmOXzTX5p88zmeZBvN0fnHQL7QF4H8wGefevNOgWtgLwF50Yrb3tojAuQXngzzRYFksCyQ+e7PMm3nJfzyV56f896eeqfM5nmvvzZ55lJ8+dOb4KN0gAZQL495o/85kBdlcYhAXILznH5yX80aBd+nM4ABcXzkv544rcaIEsV0Q3n0zzt559ACyK+a9PMaAADvzzp5k28wEBEMr1Cb6GrD4z5wr8wGebCfMZXmZgLPgFop8w5+dxfPjPm9wL9G+3F8+H+Hp/Mk/nnXz9KZ52AAp+Yx/MxnmnrzUwF4c84f+b5AtlXn8wL2Z5qC87n+acfOzgW7Tzu2SJwo//LvfAsfXnPwLsf5pu8xVeZHPODXmuzzeYFxF83+eabAungXv9jloFkcCzo+cP/NePmvTzU1BlUC9GefpK2G3mvwLBV5wi812edCfPg3mX3z8L59+83TeeNTMq91WfzOT5o686RBervPivmKILGZ5iq84Feb/AvDXnEXzBEFql87uBeH2P4QWgILHX52cC/SVpHAso3mW3z2EFoS8xRBY/POIPn6bzQs5ukAFBBa/vMwQWyrzP4FngC8hBYLAtoQXJfz5m+zCC4i+Zh/Ma3mcbz+2ppWc3Y+aEgvHFaAZdkRxsM8y2+dQgvhfniwL/75wP8w2BdMgu80GRCjj4FnsC5J+d9At+3nRtTI0e8inQ2Bez21rfnNPzrkF7IC8AAD9AuOzn+SgKFpyI4+m4jL20FXmbILeEFwP8wGBazAv0gXB0zfs5mbHYy+fPAtZXnhgL+j5kM88w+eUAAEQXv9jKN5uO880+ZzPMfnmNaDN4FoSC6irpDPPHgXNzzmIF/yC4Deca/MOnnO7zuc5uMbeVBY+vM9nn0zz//5w4C7aBcagtRgXAwL6b5pQCxRBd/PPBgWHTzCn5m982zdrvfPvXmiXzeV5vr8wTqbH20A27bwLx+J4YC5VBcgAAfAWx5zhZ5kyCyGVrMguWK7coLDr5gM85dedz/OGXmtLzMrjLX89aBe2AssFbudTYF5kqC+bWq/vPm/muzzlZ56s8/decXvMHfnqgL/959b88BeZqOMiZmUfNjEFtkC0T+aWfPyuM2PzH157283R+fUgt4vmD/zAIF4m85HebKvPfzmBVdVup3TM//ObI73v3ntbzgC5wffenYbEgu3nmyILUwFkGC+DeZO/Nnfm/dTGqu0wAC6eY6vNiuMibzkAAQAAC+gIep1Bc7IAEJgtR6ngcQmC5ysowKSf8zOf/mv7z/l56u80I+dvvMPXnXzzH554hc3Y+cdvOf3mmILBn56u8wgBY6Avx3naFzzH5/N83igBAAskAW5QLCoF7M89dBdRvOSwXALzuD5968ytecwAsf3n4fzRX5ms81ABYu/MeXn0Pz615nvU3VXtPNO2knNyj1dey/U0fYYbx2Xfmavz1v5tt8zl+YEvPHfm5XG9QF/QC8GSf/KNr/nifzAYFsECydeeO/P6fmsgLqUF+xcwA4agNMBLn0yTahpxirV1+YlfM3nnizz8uZgw04rmapj0MQW8vzq351s8xv+Z4fOBXmwQLan5+F8x4BetfMT/mWgLXp592C6F+c7vOvPmtlzuMeqm88C+d9PO33nlQLS35pG84D+bC/MkAXErzYQF5h8/eefaAuOPnr7zNl5rM87Zed+AtWPm/ALiZ5hc89r+ZzvP3Xnfzzpv5/58yT+bzPO8vmGYLXZ5w0C44+dZ/P7vmQrzvp57c48THohXOWnaw7zEd5wGCyoBdhXP9VHsqtXD54s89GeYw/PNGnUVzImupb8xP+eBAtlXmczzE15sVxo3mY2SNiPmpgLBIFsVxlWBfaAtCXnI/zcrjUL8wJefWvOH3m04LGt5jIC9HeeZXNpa75vzKH57X8yR+fLPPAfm5zzaL5yd8+P+YdPMxgWOzzErjMq8ziBZsvNX3nrXzUcFib88w+fvgunXn0ILgcFqV86YAEGAtyuNrAAccF2s83i+c+gvdwXA7z+0F9CC8leZQQsAXm3rzpgAMqC+9eZAQuH3me4LrcF8SC2DeaW/OnwWfHz5z5ur83aeZB/MAFmVe6n156f8+WeYKvMfwXuwLD8FjOCxZeaBfNx3nQgL4N59f8x4+YYvOmABJfzMEFh1cw7Xsi4MiAWZXGPn511c6SabTXMK3nzXzGL5wX82cBawLPi1G5Xzwz5+P839+YTgsKvmWAL6N58BC96eZE/P+nm8ELy553IC7rUZ1j06/my4LHH5xKkyr3S9fMtPm7Lz6H5j+C1KaYNJ1QPnQzz/p5nM8wSBcK/OyuNGgLQCF4788qaeyq2qvn/TzhX5n18/IWZgb19AW4EL1EF4s8ytecYAtagWOELx/5iVxrtkkzq3a6JO1zAsevxCz2uYGpN0gAHALJQFvRCyp+e9PNxIWDUtu8FmM8/vBdmpMtXHoL9c15/y81MBaAQvCPnHPzhF5jOPXNeeevPYXny6jeIWmsC1tBeIfNrrnl9tjSF/GC8Q+fBvOWgXaLzor5p88/dBf2gvkQXZXGR0FwmnKXXvdAsjPmHnzSRZ5y8yJeYEvPjIWMiztfpukABjed+fOlmmG6tVkF5sC/++Y9cOxQXgaTAl5qVxiXeYhpOAbnVeDW+u9s02YDphuNdXnPHzOt5qe8xh7B2vOLnmqaT7wAMVxsreZQvNZnm7TzHQFicCx3BfWfMhnnZzTH75t5CwuabzJ15uH37zhF51z84GeaDPNdnmmvzoV5+m4/8BcufMfjkHbzxj52Vxg9ea9PMOnmUwL2DRm4s0mBaIQsTgWnzzygALZC8w+eSfPq0n3izYF55q8wYBcTfNtvnUUL6KFhaC/2BcE3P73mE3zwF5pBPUzBehvPNXba3MRb5uQCyLebA/MXfnfkLZl5sECxO+eU3O/gGNXzL558G8zWBekaOB0nlnzX954AAMe+c2fP8oW6vzksFqs89LBcBAuZnmQULe7hrsnf+EeHPPtnn2kLfz5j+8wKhffvOAPmyLTtm552APKhaaQvPPmKbzVN5u088AACZvNavn86TQ5O7mo2e+ZwguBwWBzzfm5yLgyNBZ7fPL3nhLTr7hlXuoreezPNw/mItzzTWp1CzzBfavMd0nQPD7qFvK8/aBZiQuhsICzdaW5wG/T6hfRvN5Xn/UL2TRoy0z+eZqAtfAWe7j8yFyRCwc+ZjQtQ3bOzzsIF6JPc5aawgPF3nA/zIaFv1C4z+ba3PAfmI/zYIFmNC/PSYxvMnXnELzYT5hn831+eGAtJgWwbz7950NCygha/vMrXmtAL78F428+DeeAvOseHzrmVZ53R86GcZUAD/PnALzj55y5RFhBeTfOrfn0oLzD56wC5S+a4/Phvmezzv55/z8yjedfPPUPmOrTvSep1C76hbDQsb3nD/zXYF5QAD2hbDPMMgWwgLiL55GCy5+eyfNJvnanzUrjV88/D+fI/PJXmTfzIl5u981xeflgsroWYnzsl5qG7W4heTQvOoWpXGZl54/87i+b5fPlgWoQLhiF5QACdefjPODXmgALz152Rk0ybvAb09nn/4L7b5qG7XKBdN/O9gWwzzXZ5gLLQS+aNQs6MmTyzejJn8nQYyeBb287nhvDgae+83e+hdr/Pw/n+zz+b50l83HeerPN9/nq7zTqFrCC5mBeGvPEAXx7zPZ58781w+bLfNCXmYfzhf56883m+fevNT3mSfzy552N88meaSrMgU7e9zH75oAC+DebUfNenn4zzgF5rs83D+ZQvPPPnF7zhf5sSC9PBamvPFVmcG90Fe8c8w2ebxQAR3nozzH55uH8x3BchfNegW+kLVYFzF863BaQvNZnmznzxZ5y688AAEnQtmgXIPzV8Fp287K4ygQt9QWlzzqmFxG8+bBcxfOP3mrvz9F5nECym+dtQuGfmbwLJN5p887g+aZvP0IW97TnPh7moyS+cM/NFnmPMLb+552ANHedSgtf7ne59Bf50l8y0BeMwvToW6zzsv55b8/n+bTgt3IW8ELdGF488xvecTgt3vmH3zcB5kNg0FbvIb1dvmSzzrmFo4C1xkYN8N2Pn57zUwFmzC9meeFAu3QWAsLjZ5/A81TrvRrPnTbMazJB5wgYzjWarT0wsnGDzxDpgPww5IZ2BLE1n6DzpNZsN48weZ4PNU1nyHTybxxRvb5Ic4PPUOmGazw2FzinfI3pprMcHnSWTQh58lk2w6ZckN2PnnbzLyFyd81defs/O3QXErzEX5osC5XBYS/MY3nevzhM+7uCwzBewfNyuMwQLPt5+hC9qqfeAAFvmcML5SFge8/yBbs/PW/ndsLhX5uGC7Ehf1rMlv6+pdqkFmx8zg9qlgsuHm6QAUsF6VC8e1p8vOPnmvDzVKFpaQ8KBfWkNxjaALz975qq85zVvPPNmXnzzzmn56u83+ebWvPSoWLpDoAFwmCzmebukN0gA4zzdwFsAI+43obAtf3mJzzc6FtI8x10cSdNgXn8cLSV5jX8+v+dq/PJsnxrzi558M82mydydPFHm2bthF5se8/T+ZsAs4XnnUdEl5lGC0WedJwshnnS6zTV50nC6Z+daPPfv6mV1B3RgF86ThZIAsLnmlzzOZ52fYDJ1p7rMXdG+6zrMhvtkzK+EtfOToXabzfARqY86OyYUgsU3mLXzLAF+Y885EYTgvMfG0zzeUF4C8+vWdc63ifm/ULsSFrY8xD0diASSYWnTzJn54sCzj+ZDAsOnmpqDN4F8i80m+YygsBnnRnzxKF888y0+dCvP31nVPjur52i8+I+ZfrOAum36zL7J948xT0c+POLN6KejyZJ3wI7+yYNguANm6ejiLp4E89EEaZ6P2fGwOT/meqBsxz0cg5M4umhOT01O/P848hfUQt/nmlnzBuF/b8wkBeO/MA/nyvznUB2l09c3tZ/NFPmxvzfL5geC2VeaDj0Q3ngfzpJ5rR7X4heVAs4gWQbz1sFvF84PhdpPP69H+gjVX+9jk04hbVfP94WTvzfoFyAAKDedOvNiNnbejeb5mW8yD+aWfMcAWR/zLz5gy8yyheFPMddbGXztIF3HqmVBfDvOrfmXgLUrjRU83NeahQv3XnceqYrjclC/a6aOp0/N7TOT9Duxz8HqeYKz0p9HUMLG3x1mbXZydT6MmnnZ2E+3x0cKPn0ZO+O2nm6QAgAALEgNXGgAAKkhAAAqJA5eNAAA8JCAABASDdPP4+bAAAHJA5eM9XGgAAcUhIAAYBF/LxpAAAgIvoEWsvGgAAIUgwCLkAADLxqgRcAABAkJAAFAIuQEWYCLJBFiM88z5uAIs5eMsvGOrjQAAPiQ5BF8Ai1ARbgIupnm6QAiBFwAALSQBrjcgi4AAEFILVxqQRYLPOzPbAAAYJBQEWsvG2BFwAANKQ5BFwAAPSQWrjIgi6QRcgACAAAcSEkIuAAAdSCEIs5NnyltEBFwAABKQWrjQAAKyQOXjRAi1IRcgACIEWdXGgAAUkgcvGWrjHLxiQRcAAAkkFl4w1cY2EXsCLWXjDQi247udgBQEXGCLLhFpJQ2ARZ1cZZeMbCLGrjQAAEyQ4BFjVxuU2bpAAQEWdXGgRFsAi4AABpISQiwwRcAACEkBgRYkIsQEXAAAkpBgEXeCLEBF5wi2QReMACpEXoCLWrjJQi2kRdwIsEEWFCL1BFnJQ5uVrCIsREXoiLcRFhIi9gRZSItpEWMiLxgAaAi4gRb0IsGuM8iL2BFgoi4QReIIvFEXF3Ttbmfwi6gRcAABokPIRZwIuQAB8CL7RFxQi2ARcYIv+EWqiLyRF1Ii04RZcIvG/HnYAyBFjLxoIRcgAD+EWqCLhoRkzPakRcAADYkOgRa4IuoEWlCLsxFmZswsRaWIsrEX2CLX7p734+8AFSIvAEXtiLzRF1Ai+heYy8YauNGCLMBFsD01MRd4IumEWHiLgAAcEh/CLpF594AK8RZy8YfEWMCLqBF14izMRc6IunO7nCLvRFnLxqDyZsiNgEXAAAwpCAAB2SB1cZ5eMuCLeBFu4i823q4IsZEW+Lz7wAUEizl42wIu8EXgCLgAAGUhYiLgAAHkgcvGgAACEgec9rxFnwi5IRYgIvYEWsSLYhF+gi+82ZlfB5eNJCLiBFpS80yltiIvaEXAAAbJAaXmmUtkRFjVxiQRcNcZ6uM6SLtyhjj05u3siIuoEXAAARJAEkWSCLgAAdEgcvGYBFrVxtP8abCN0gBAAAoJCYEWsvGerjBgi+yRYcIvgkWrLzeXujwi2ERcBIuIEWSCLoJF+Ui6i2eZ80QEXtXG9BF7Ui1v8bpABauM+CLEBFg1xisRZxbNSkXJCLnxF/Fs87ABsIsGuMJCL7JFz0izq4xhIthXm3CLkhF4ki5AAB4IuQAAtXGarjA1xp0RZcGPS90PSLWXjeK887AEiIuCkWGWzYeenki3yRb4IvMtmM7tNhFnwixq4wgIuSEXAAAxJBFXnnYAgAAakgCSLSRF3VxswRagIuQABaSLsZFm8I7iofeADFkXSyLTBF6kiwkRY1cYGEXqyLiQxolQz35sAAAIkPEReKC3EEX4iLehFjVxmYRcgADQEX9SLOhFwIi7ERdy8Z6EWw+TBQx/8I2q4xy8ZDkXECL6BFyIi1YRZkItYkW1XGfBFkQi4q2c4Is5eNAAA5JD0EX8yLEER0Ii5IRdiIuzXm6QAGxFyQiw8Re1bMZeMdyLOrjGQixl43470q91IiLhJFq0i50MbpACREX1yLjhFp8i0SRbNbN0gA9XGUJFiUi/l6edgBquMOSLeBFtsi3cFpsIvikWCSLvBF4gixKRaNcat8n5GdYRFrLxkkRaMIvAUXgCLPfJ84izYRcdIumqGZXwGXjC8i1aRfbd0JkXoCLnRFtEbdeRdvIsM3nfyLMBF+Ai9YCbG+1vkWPyLRBFvCizzedrcwGEXTCLNhFu0i4mRYqfSeM6ICLKxF8Qi3N6edgB6EXbyL0pF28iywRczItZeMeKL8t5lXusWRd+IsTEWKyLVhF+8i2reZ5C0YkXpSLshFk0i0kCaSZ0QEXAAAopD6EXDCLVRF7wi1l4xkIuSEWpSLDhFi28zZEZ0ItaUWjCLkRF7QixARalIs+EWcvGgAASEgSCLJ5Fu287kCeciOmUXmKLkAAZci1iRay8ZquN0CLwFFzoi67efOIu+EWXCLrXe8Qiz4RYMIukkWYxt2Mx94AFwRZy8YwkX8KLwPpyvM87ADyIt6EXbCLJhFtVxvpRalIsJ3n2Wclp22Ii3wRe8IuBEWcCLjBF+H00qRe9IsMEWYSLRlFltQwE1tkosF3mVe6IhFygi6GRZy8ZyUXxjIWzOhYE4wKb7IuQAAByLQ5Fkcizq40QItjkWNXGE5FnLxnoRbYFOcEWMvGeBFtVxspRavbNYRbECLI1Fsai8ARbkIuQAAlSLU1F0aiwa4wgItQkXHCL6RFzwiwuoeZ82IEW0qLBlFuCi73eZlfDWUX7CL8RFvVxhq4zBItEUXh7zbN2lYi28RciIs+EXUCLWXjF4i+gRZUIuEkWXCLM95k8LVdRZuovOEX7qLJhF9Ai1q42zIs5eMeiLflFuaI+j3uQcPvUXbqLX1F3oi3wRYmIteUXeCLwFFmDs86jtBoufUXeCLH1Fuyi0oRYJItAkWLC9Z951v7X+RfZItCUWIaLUNFuci5AAFhotL/b5iLRpFvoiw4RfRosfqH+JtgAAKEgwCLEhFw0i6CRfJovrUXIyLP95tJolq4wNcaXEWTCLpNF3oi4zRbRIucgmWBiCZFmQi4oRfpotk0W1qLvNF41nexUQFIuC0WyCLwtF7mi6LRc8IvwPmU/T/hFkgi5ERb0ItrUXUCLurjPVxlmRZsIsFCn4YjbhF30i9oRb8ItKEXWiLGtFrWi1UKfW91YaG9aLMJFg2ixq4yNovDEXvqL7VFhwi/YRbloudEXk/T/vp3oi4SRd4It20XFyLDtFuwizzRZcIv0Pmv09ktFxQiwLRdGIv+EWPCLT0B173TTRYkIts0WOaLYBFsOizcRZ+gObzalSL/hFqUi/NRZTouQAA0CLvRFlwi6xobpADskXUCLMhFxIi2LRdM7NCdHe/TagW6Ei3CRYRItIkWNXGQxFpSi3oRdEoto0WTqLYJFwWi1o+Yx92mPnKPWQgOxWI6IDuNgMqA6qyLkAAQAABiQ7xFzsi6f6fvZ0J576yLZZFysi+IRfcosSkXKKL6XZ9uvbL7p6Iv9EXjCLOZF9ki/bRaeosEkWE6L/mhgAMz7EYKfN0gARqL/hFzAi3l42wIskEWPCLWrjCQix0RfoovxEXBiLjdFx4i/V2foS0NPmDJjjRen2c90+dum2YkXOaLmBFk6i3LRaG7Ov0XDSL79Fqki4MRYTItquNYyLkz5nGLT/3psIv/UX0CL59FrLxlnRc6IvR+6wGLPRF+2iwAxbbIsbwHECLkRFyAAHAxfQIuDEWlSLfJFiQi1AxY3ov9F75iLqDF9Bi60Rfcos5eNAGLoZFv6iz0Rb27PRTGZXwulFqAi5qRe1ovlaG1OdyjW5Ai28RdiIsJkWJCLeNFzyi1nRe913Gc7PnzAGW75887ACVIshkWbCLf9FwMi5WRbeIuMEWMvGyhF48i1iRbDIsRkXIAAUpF1ci7S+fBfNs3aZCLc5F2Ai9IxcJItLEXBiLgRF6AixgRfGIv20WRyL7VFlii3wRf4IuCEXTAASpFswiwYReUIsDEXJCLMJFwxi1SRcNIuHUWxqLMdF9Ai6YRYsItgEW/aLJBF5Ri9mKfpfM4Za1GLOXjDRi2vRe0YvoEXdGL+jFiYi97RaMYt6EWTGLZjF1Ai4K+aMlPnB7XKL2lF+6i4uRfLIti0W6gzA1ul7QzsFt0ot+EWMvGsjFjVxgwRdXIty0XqoTtbmGQiyQRYJouIEW+CLolF30i37RYNfM8g6yiL4BFioizq43iIu00WMCLPhFvwixEReroseUWTiLbM2oTo60PsXIt6EWZiLkAAN4i0YRbsItquNKkDvRFl0iy4RbhmMr9nkCLgAAXEgsSL6RFpYi+lRaEouBEWSCLVJF3Si7KRZ1cbO0WA3zb5FvkixTRaoNBXBm6QA0VF2Ki7ExeBIuPBmUY9CxFw6i7wRdaYsGEWwCLRhF0wi4hRaSIvSUWxaLNMxyIi6oRcWYuvMXMedzsAc8iw8RYOYtXD7UaLSJFoYiwa41SYsHMW4wdxBF3VxjIRbwIsISmpqLWzFhhi+HEcNIvskXJCLO5FgYi2LRd50NgEXQKLOrjPQi6rRZ1cb/MXog9hZFgpi/bRaZovp/nq3daQelPs0Yxa1carkXsCL2XjLEi90xc6IsUhm6QAGLFr6i48xZ8IsGuMVKLope2Ii/QRZ1cZUkXcKLjlFyuavkkZV7pXUXmCLvLF9d81YltRovq0WL6LMqBzebXsRfkIu8sWEGLpDF6Oi9mRYBoujB6uqd5uh5Ai8WRZmItW6G1XGDxF86i4rYdTi20MWcvG9DFg5i5HMfOIs+EWTGLn9F6nA87ADAIt8EW4SLjBF6ui8Sxe/fPVina3MIzF72i0yxcWYu6EW3KL6rFwmi9IRaUIswEWZSLyEOsIi1Sxdqos5kXIAAMhF+0i/IReAotwfmW5jiH5+Yizl4wWYtOEXlmLBlF1Zi7yRapItyMWyCLHlFqli76xZMItQEWZEdRKW6Ni6XMcjH2XHG1mLVJFvOiwXRdDIvhkWyCL6RF7Ni2AxbxQDY0WhKL75Fvgi5+RefIuMfmGy9gjFvJi5CxcgACSUW/iL/hF48i+WxfkYv2kXlCLWJFnqi3tRdAHOtj6ZXwFlFiAi0RRfiIve0WRCLRTFhNi1iRYHIuFkX8aLOXjc3HWKHralN2O6wSL/hFtIix6xe0ou/UXCmLOXjRwi2mxacIvVsWV2Lfeh96Yw0xaiIsxEXmmLkxFmoi32xcrYsauNM2LQ7FqAi1OGfmlN8S7YiLqBFv5iyGxdiIvZkWsyL3hF5gi0exfNIuPsXs2Lp7FgrvOAsdvhPKkW46LvbFkNi1OxZigCMEW8CLMUAKdi8ORd1caIUXwCLOrjdkiwMRbcYvzkWTCLVTFsIi2VRbWosPsWsSLijFtci9oRdMABKEWNXGPVFrEixl40wouoMXgKL2BF6ui11RZ6ovhEW8CLiBFlsiyYRYYIt10XIAAgAAFEgJCLZhFyoi6qRaYItpEXj6LpBF/9ixWxYwIsSkXq2LPlF7QiyQRZeh1QrbKvz5EZ0tLT2xfiItquNpCLXlF4jiyQxcAYu8EXYiLNlFt4i0pReDYsQMXcSLShFvAiwKRZMIsNUXrmLxhFyIi3q4wmItoEX/WL2BF28izSRcIIu+sWvqLUDFqwi+QRdIYsQUXCaLUnF6b87YOfk4u1uY6CL/hFvAiyYRZEosmEW8mL3hFvwi/bReDYtDsXBKLXlF8mi0yxaxYsmEXzCLlhFg1xjIRfmos7kWAiLfRF+Qi1q41tYvesWq2L1rFrVxoAAGBIFLi2lxdlovesWZSLpgAQNi/ZxZDYthsWoKLEbFzziyoAFDYuGuNKyLkBF6Qi7FxcGYvuMXZSL5NFpUi6lxYXovyEXKmL1TFvDi65xc1caC0W0GL0hFyIi+ZRZsou2UXUaLEhFxgi9oRdQYuREX9mL61FnIc7pGfgy1OMWfCLY1F8+i09RdkYuDsXgOLyP5iocz2ke+ItRcWxqL3tF7Vizl4ypYtHsWs2LFHF/H81IYedgAI0W7qLvBFtei6MRZtYs6uNAAAsAR2sWgSLE9F+gi5zRd6It2cXoozXP5ndI639s7IvIEXliLUpFsBix5xbo4vDMWjCLGxFgci0URakItBkW62LyXF99i38xaPYvAUWA2LdnFxri0sRb3Yt2cW1aLGdF3Ei7l43kItw8XhyLGXjHVxqKRe/YtKUWlSLtpFqji4zRZhovaEW9fzP6Rg38z8xah4tdsWJiL75F/6ixnRahIs40XkuLSPF7Qi08Oad/POwATqLQ3FxRi+gRZkIsbkXnCLETF9Ai/jxdnYsHsW72LdHFoDixRxesABqMXQ2LWJFmwi9IRbJ4t8EXQCLjhF4Ci6YACpYsjMXz6LtlFtXi4CsclF0I8XZGLonF5HiySxfl4tusXOaLzjFoYiz+xblosykXrAA5XFxri5VxYgIvVcWPOLJBF3Ecya1rujPOwAa/z0TF7Zi3wReUABS0WNAAK3Fryi/bReO4tS0WW/zN+BqTI6ERbwIvjEX0uL2BFvgiyQRZaIsV9olSLuHFrLxpIRcrYsw0XJCLbNFgbiw+xdQIumAARmLgRFobi0lRZSovbUX0qL81F3Di1Ixd8ou8rGF/zTXWnMi0GRZ04uMEWsvGghF8si4IRbCIvocXIAAtlFuOizdRZ3ItS8XkeLQ9qPTi+5Rcs4sDUXUqLuxFn6i6Jxd9YtEUWpSLqBFi/84aif2MPX/n3gAC1F7LxuYRfJouFkWpKLbTF0Si4mRb0R1CKn6eL1dFqaizq4zuIuBEXD2LonFgdi+dxftIvWABcuLBXF3SizIRczIuosW4mLTqx10c3SAEZ4vKEWCSL+BF3wi6vRYJIt2cXjOLX5Fqni94xcK4sQEWbCLUjFlXi3cRccIu00WNXGeTF3Mi6GOZDWMV8WIxzSaJggC87AAaItNEWWiLkPF7fi4Txb34vk0WAOLdNFnAi6YADgEvNEXPaLwBFlziyrxb14uQCXy0T+Y5nmXfgJfJou2v7g4z4gF0OM9UQeSIs9EXUGLiBF9ji3TRYwYvN8W0OLGXF43i81xc8otzkW7eLUJFsAi1SxfLovwkXjCLZ/F5Yi5YRYwYtYkWL+L2lF9ai0YBYAX205bA+LY1FnJixq4wrovtcWD+L/bFgji1txYu4t5AXcNt5pFxAi2kRf3IvtUWV6LWDF9Ui3gRcz4uG8XRSLRhF8+i9tRd2ItG8X5GLx/Fldi/VxaQEumEWqWLy5Fz2i2q4w9IsecXTAASvF6XiyIJakYshsXJmL6PFjOi+rRYwYuhMXs+L81FuUi7wRYf4shsW2uLbNF5Li17RbcYveUW9iLubF7DbcTkYKAtaR6U6LIPF2ji+aRYwIuwkX+BLmFF6ki8WRaRovPkXXBL4PF7lizoJf0Ev4EWjBLH7FnLxiYJeh4vmCWs2LZ3Fp9izYJcA4ueCXjCLPgln6i34JZCYvLEWghLKpFzPi2EJekIsRCWkuLQxFwoi97ReqEuoEXmidXi+rjEyhOcWAsQJn3gAKQltTi+kJdqosRL6RvYyNFibi0/xabIvt8WS+LVbFryi+gRe44smcWhyL59F2TE2IRZsosZeMqSLtlF2Ai1KRfz4vSEXBiLGxF2Ui6ubtaX1NkXZqLAxFlQS+uResYtE0XPCsy+W+Xi33xbV4sUkXK2L6BF2TEwfRbQYuZkW9CLqfFzjY94JYcos80WT2LLvFxjbUBRfPou1UXvaLjJFowiyIRct4tpCXeCLcwl1Ji0wRd5Iup0Xz6LIzFh2i1xRZ1caEEWKyLdwl+qizMRY4O2heHMRLKvFxCi1Ixbvv0VkXMCL/hF1Fi4MRZGYuUiWQeLKdFp9i+5xcIEswJmZCLJ1F8Hi99RbtYuCUWjCLIbFpPi76Ra8EsN8X0CLrTFkMi3wJcPosFeNU2LonFxui6kJekItK8XTAAarjPJi84Ra7QutMWjGLx5h3rEweEQy8Z8EXNaLxnF3Si+axZ6xP75CEzd61FzXi2uRd2EvQKMXzDUZu79i48xavYuxEXitj82JlLY60xcCIvFcWd+LtNF7li+jRdWxPWkHcJz7wAO4S3ZHsQEvBcXd+LARFrxiyROZqotFMWKJz7wAPwi4Uxesot10WdXGUpFq7E7zxZ9It90W9CLq1F7Zi1GQZjIvIWHMSLSZB/3Ex8Jdy8a2EW/aLa0ug+i7NsZu4v3UWpV9WnF3LxjpxdTov/0WUCLylF8mi3Bxekos9CWUOLUQl6Bi9qvqsS1gEWJWLFZFuVi7tklMIvOiWV6LDxFyhizdhYpxNZeMvyLNOJuci0OReUACQABuaLFHF7Ri1iRc44uo0X6CLjIFiNfVYmc0r1JMWeRLWZF1ci7ziYaVy0EW5CL5NFsQi6tRftYvLiXViLN5B5nzVuJb8IurkX4CLEoFxyc1KBbcIs7sWeRLPQltfi20Jd0YumABixL2hFssS4FReC4vJcW8mLtlFowi/xRfDIs1iWMCLEBF56i0MRazosK8X4uLzYllBix9xZDYt6uNCKL/4lnPi/NRasYtrkWsOLBhF+Bi1OJaJIuJEWsSLqwlgyiwcxddAuhEWgyLKZFvVxnwRcAADIkJWxekIvskWqmLAXFpZiwEJfaEt6MWGmLf9FuoiyYRbREsTEWrqLGHF8iS6OJYjIuXEX6WLiFB/3E5RJbe4tbCXeiLzEl0gi8hDthYuhcWE2LZElu8S5AAHPIuEkXJCLa0uuYS/iJerEtEsXROLIZFthi/4RZigAcSX0iLgxFvUi91RcbItr0WJOL4Ilh5M2jYeBTMfI7mo9DVhrBi7kxfcou8kWcJLkxF8Ii9mRbe4tUsX+JL2zF71i7eJY1cZ6MWGiL3LF1Ai4QRapYtEUX6+LGdFwii35RdfAt0gA5hLfdFzFi7mRdRYvucWpqLyXF8zfZARcJItVsWcyLuZF1Pi8YRd5Yto0WeqLzIlqTi3ymd7osWcX/CLQUljLxslxbmEvmb6Q2LYUltGi1WxZV4uYEXHCL59FiAixl41qIuaSXfKLU1BnAi3yRZ8IvhcXJ6LKUluyS3oxfpK3gSWYCLkElzoi5kUdRdNP7GaqLhBFvySwwRYCktOEW0pLIUlurfTlJYikt5kXopLIbFgci3oRZXotVsX4pLknFwGi4rOYMV3YSW8JLBEl30S+/RZ5ov1SWk0zliusCSyHRbIItQMXmRLfBFobi/JJds4v5UWZiLFjFmCS+tJacgsXFbkCLQ5FpqS83ReLTNEHHBK9ZNh2Ik1WnoJKMhtbQMzpG20fbUKUaeb1U6nMq9G85yPfXcRYeItrSXgCLAhFnyi3wRb0YvAEXmiLo0l6Qiy5xcBktauM1pLqKuy6S9DxaakvQEXr5zfth/KvTtHvBgux2G1hA8dhm3U2KruLIvhEXHxLxhFkzM9KoFaYugsXlJL6BFzES5UxYHIt7kXjCLhpFrgi6rRYK4uMcWYSLXgllQS8fxdSEvaEXkIdOZR6Hi4sJcm4udsW3+L/hF/GS3VJaEkv2SXIijPdqEmC+ySYyEsV0WqiLY/F2Ai+HjrLKNUwXq7DfmZhg3S1xYGos9sWICLrAl+Ri9fRbKkuJSWHjjpRFy8S+5RbootfkWrSL8r1aqvedHsXEt6yXG2L7lF/IS3axbAIuz2GbSTgi5/4bUYxZEot8EXXuLFZFw4i58xZc4tgEXnyLyEOi/i1fxYqXMe6RMRLoolgQSwIRYK4uKcWgSLfWZpfU2BVrZEvV0XBBLIclpZi4sxYaotS8X0iLrMltwS81xZ8IurkWeRLGRF32SzhgFNktesXY5LdBOutXSBVsMXPYVaXWLjQlmSi3aReQIsRsWDKLWJFz2C2zdrAItquM6CLWrjdIi9sxcWYuYcWhyLjsl17i24udiATyiX6CLbjF8ji0wRakYutMXciLywlqBi7wRalItBkWzCLBrjJ/HferthYPIOH5RLZslxwi4gRbsIsuiWzCLGDF6ui23JajksSEXg2LvBF/Hi76xYbkv0EXeCL7JFhqiwERdDItAkXkIdkclh3i1iRfx4u/UWWiLnPF5OS9gRe4EtUsWu5Liol9hixAxcUIsDkW6CLhdFxQi2QTsiIup0XGCLPhFyyi1l41kqMrUWeBLWJFzavRqJa1EsYMXzhLt7FrYS8BJcbIukyXQyL7NFsXiyPJaDIs7yXxCL+8lw+Sy8xd4ksZkmEKd+PFq5i6yxZDgtTLnDDTye2uYS50JfQIuRiW/+LlhF1ni+zxeIYs9sXnSLS0lkhS9sJdSotrCXBRL1Cl+yS5WRYy8a2EWtaLx7F6aSy7xcyh3Yx6qzjIBF3kiyDxev4skEXTAAC8l6qS4ZJZigCLkWYoAhklpDi9yxd/YssCWVhLPAltCS4nJeI4u58XECLYTFuYSyoReDIuacWbKLQJFifi+1RZcYs20WnBLqBFmziwExbIIsiMWweLj8lodiwwJe0UtS8XM6LGBFv1i4sxerotzCX7eL6wl7yizwpdhXOTwXsqtYiliQi5sxay8YkEWuCLBzF2o0zifp8UtDEW7SLLhFlFcyXmapj1XUXWuLO1F1Oi6EpaVIuoMXHOLVPF3hSzTHo/OPOwBMRLxbF4wi5opfI4t0cWtBLxDF+GSyGReL4vKKWG+LWJFugi84JZmkumAB3xLgxF+GS/Mxc+YsRKWra9UFxkJS0FxZT4uqyWKuLKnFoFi97RcQYvHsXrOLOXjUwAD0RfNIvyEXkRLCXFyIS/FxbsItVEX8eLNSlrDi1ARYFEsucXklL/4lhxS+PxeGEuQAAbyLq5FvHi4oRfSEvy8WyeLqzFgyixDJdX4vRUWByLSglyti84RdK4tccWJCLehF9Ai0Ixd4IshkX6FLhpFx5i1l4zAEvEyW4lLgklqoS2Xxe9YvSkXhhLDCF1iPbTVsi4OnCWPSL0iFpAs2SaZ6ws0mnxajDBZlxvYHXu5j18FmDLjbtR8FS6VcZqpMfmQtbtX5++OvX1SYdJ1GFn0o9RSF9OvVYpfcovhEWkiLqdFsAi2KRY3osuFmlJLYtF+pC0XHuCON11Gy693F20uvXoRcQotoMXPSLEyFmlS9VJbTEuzIXeL9c027s/HnXs9cN0gBuJLJBFliS8DSZ/osoEWICLLZp7eo/shdGkOYkXgAAMZF4yS6mReWksoEWcxLYbh4ArQfRaEotOiWZVLctFgGXbQJYmIv3cWBiz7wAMBS/q40o4sBEWcvGGHsHUSz7xZ2Yujmnk9tj8l9AizKRdYYtNkWqRLwil95C+8ABXEtfIWv9daxZiVS3NxZRYtDEXKSLLhFg4s3SAEQkuJkXRaToRFg1xk0xcvovoEX2SLSRFhgi4wRYgIu/yXmSLNbhpA3W8WfHr29uGtVLerjPVxgO4bh4vq3H5iLwjF/4S3spYJYtpMW1pLgLFgUSy4RaNuOcjH8RLFilwAANqQQLF9ai7yhc03NEMXMGL2DF4AAN0pehksDUWDNzOFpsAkgHJajovAABXGLmrFnJs/fwbTpNWsXMhLh9FgWiwa42AACS0XeCLdhFwsi5qxZYtMF0n9qzYpZgAQ/ahaPJ1n16vULQ9JoNC6B4ba3OFbnHydnJuxy0+h4Y9LNYQGl1L3W508nZmWaXJ22J6gG9ZW558nbsYfAb3KMn22LQlFgLLbpRYHItZcWHWLrnhm3XTIJd9EsoCXRaLSxF7yi6xRdX4vmsW3uL3lu5Ai+xxaUIu/UXHGLB3F/6izIReOX3bKXkuLjKlo8S3spdsosNyX0CLmYl1BS9DxdQktliXAhLN0l3ncyhha2osHcWBBLarjeBi6YRaaIsrUWwuLIhFiaS7eRb/ov3yWsSLZvFiUi5/Jb1N0nUWD5LMUADHi2gRfZIsHP6dRD+TxpQi3kxacIsYCXGuLqVFqjiy7xbB4syCWwBLIbFq200IJZGYukEXECLFIl9AizYRecEur8W6GLjNF5mS44pdI4vkcWXZL6zFmpiwJJaVIsMEWhyLaQl+1i2IxZDIs8kWXOLmglm5i+0xY1cYuqXiGLEGlisi3Bpa4Uu/8XiOLkUO0tox1oe73NcYXQfD4FO2TC0E/qtks4iXcyLBrjPFABARb4IsbEXYmLhNFvgixcpfEYuSMWMCL6Glnyi1ppbX4v0MXgAAhql1ii/hxb0YtZsXAZLgxF3yiwGxfI4v+aWxNL88l1DS7yJc1ouX8XApLbjF9KS4BJdrksYaWhRLZrFo1S15pa8EvNcWBCLOrjAmi8FpfNkuJyXUtLMhF0wAHMJdG4tt8XvaLOBFvQixMRaVItJaWbCLwilyAADLJesDJ7Vmn9zPWFvnwxFhbay0osXbyLBhFvVxtYAAi4sW8XVuLYAlqai8tRd9IvNyXGJL6pFnVxkbReU4v8EWKyLwFF6wAGNpdw4tDsXF+LYXF7y3QExdgIvHL6d5Lmsl7xizlhfuZP6F6Iaz3GRrCnfVhddeMoOmiDzZkhwF/a1hbIPPtYXKKdVB5pg8zRTu4b1E1nWrdJNZ0N425Id7cMEsm+Dz42F1N4+9Me4PNK3beDzmTFolk99pZJZO/aWOazrDpkQ85SyfeEsOEXxFLthFyRS6gRekUspUWciLcil+wi3+xdQItKcWpOLailsJiwxxbKIvMcWWyLPhFpIi4MxZqUs2KWINLhWljZSyGRaPYuZ0XSCLE/Fl6HSF1psPN9S7IpLurJ94ANARcCIsdEXCqLSWh5nzczpZAEvCcXrazzsAKmizypZJIteHnk1LmXRkAixuJfhYu5dGSaLzjFr/w6KRZpUt4EWR1LOjF1hSyIRdgIu/iX16LUR50Ii5DRdxwv7cX7lLB5FoOsyLMDd81QEX1KL0xF0iSywpYokvmSWqJLLhF6Nk5Thc10vcsWHlLbfFjvizq4y74uc8WGcLeJF58i6SRZZwtFHmufTut2yvrfrpcN0sGuM9GLPxFj4i3Ueb+0MXsWA1L0PF54i9iRaRkt11mUPjQTu9XCxtHpu6OT1m5ydvTes3CzI7t8+zOdb1jztbmIxi0qRb0IsyEXCdLbRF6HixQRagItrSWePjK7J2IBAZpaUUtPiXSCLU1Bqli5ppaIIsGcWjOLoglrAi/ypb1cY8sXFCL+elk7i0IRZDwsTN7I8LbhF/6i1aRemb2IEXiyLqBFxNS+/WbpAArEXXSLAXOHvzVKRchosVCW9qLqn+rBi1KRdAot7UWaHtvrFjUS2zRa/ZN0gApSLgDFq0i74EbZotYUW/jzYBJEQi7CxdX0v/sn3gAm+lyjSw6RatIvWfGT9LuXjIDk9L3VSIu76XLvNNpF+gi9KRb2ovgnnu9LJBF+wS2z0Yg5NBZ7YGz01OobS/QJbi4uG8XsVLuXjJYS4kRauIvjKWIhLFklpQixvpf+IvYcW+uL4mlqli0Rxc5PPiPbrm9kRF31ixlJaa4sWFnWmLO8l4jiz3hcUe0Y8WimLpgAe5i3yRdMAAnMW29LIil4V07FnvHwtcumtHt+Blg9i4QZcNIt6uNTAAWwlngi0vhaC/2ZiXrCLqsl5CHRmxcI4urkW+JLWXjfwi5FDoG/3p6WqSLU4lj7i9DJc2EsSEXoNLe8l1fi0/pcCUvrUXz8LudFkNS0wRe5YvMEWthL21Fk7i2RRYsbP34WFvjTrpxPoxUzs64t/UWSCLK9FuDS+TRf8UvRiXbjzilF8wy/qefeACXCX7VLicRUFvd5Rf1ItSEW+WLX+F51HZiJbMMvYkWYeLIklk7iyhJbt0sO6XjeLiUlk086uwmhb2Q/7LTzNih4N0x5ycy20ePbRChu1pppXGx6cjdOPfHus9oJyJvo0C3JXNkXgBmVqsRlrTnRfOBpb2n9MK+W/1AA2QI3+B1kkj96E3dF84VJs1bwDNXDBhslBddfAF0IzqzoXSmFQBa+WJRl2Xbk2ecvt0uhGS/0sV4BnTkskdq5Ou8mHQ9sgAF0I+z8byAAuhHl4AfRl6c85uVqTADnZG8wjPpu1WXYMZcfd2Dewhp9dTZpJ3S0ZdkAATGWQOBDo5pNWGxkbIkBKAA2mzRyFuYi77TsAACKgNX6dsKAVGXhjLozZhpQ/vrucd21MDW29ggZ6Zs2P5ufdNScB9jLFPbXePf4oZu5NMu7zjLmnOw4y4YAEuMtsenFndgQAYZfSUZcLrOxh602IqxloYy00KZ+5Mevam4AoIe8BnRkZdxIBxGXsjLMb2+8AMMvssH3Gy7629zjuxQM823qoL4NGWsjL6JF+Ey3h+Lf0MQqxypN52R8nk0gFuMdMImX5ND5wACEyyCZa0AMnBb0TLgMpszvTwMbOUOHrjocghYAWky5coaBbNV+7dB2lYiXS8/y7oBMuC8m929kXRpuyE4AFxwC7GWc3TOeu15Q8x+1r5YjrUHAABzx0L3SCZdNz3dqBccAubp20YwOEbKLNzKG9C6xATTKYwryckACgh7Yg5qknf0i6HPodGVRXnXBjA5bUEPXGRf4fC6as024aV5tky+mRcIx0/4AYXdVCO3HAFgvoLIupX7iAAgAAR0BhldkYAXls8DXvlgDOmWs3dZplo9M/Uokld0NXnhWzhD4cJQ6SSN3j3lfH7zIZeeqt48cgAZQDZc7ccApY+6ci9R3vvACac70dhSXO+MCMquC7f3henryA8zu5PkyMHrT5MUxbv4wC4gDLkwl6ZwCa18sDZADW2za87aHvvMhF8mgvd95kdvtbmDJ/Is4BNHAAGJlt+/bYBDr5PhhlSQ9HIbJTvdICftbNw3m9U9sBuppXAuIBNd0aPgOTLuN5y+3Zpzs990+BHAwDmgAZyPUhPuQrNMF6WBiIHe0wExgE1LMv1unyKLbQplWNv6AZsBNOqHr6oWgAGcy+KZetL1xtmrhj4VQ1bYbsZa95PJgH4Vdzpl5Cs1sTN4otm57ypjXgANLneU7uzp2fDHaedSgu2sQUIGc29MKUXmP2VHO+1PeZACaVxls7r3dSTO0XXqQG1aMu4sx1H9umrcj3V2/trbOEDGxjLumrGcwyiZZ+z26atM4jz3p5yi86NqAssOh7YLL5Pexrvan6cUsjM37PbzzPmvIAJeZYU9AUjGh2zBd/LMmMHefpGNt1aORjY+uuC7KSHpmMvw+nWgAQgZhuoBbzpW73vmWxft63esI3ZowFcXD7tmWqLh7ZlyageYmjMs+mW4zLXb+jsLZf0L1j1up6lkjE1F4PneEADoICY7iJLLLzOudQ8uZcEqHcABvTLtfLJgALsZaZuPLl5DPduAAJQXQuIGwkCJJz5U9WRl3DvWzhZ0i2AWtd491RluVgDUvp21YZe6OnVlvu16iwSOYy91qa7iDdXu5zZPUX3qssswu7dAAeYRsDs6eoeQcPwmX73GkpaGF3bZbFh5OXQAa/Te955cy35ZesssprGi+9sgAWMyzX6Yxost/aFBt8LQSKADHxDVYAYmWQrLgrOzqXVKZbksvFe7+Jt2sE1tvXPccysvHGWGQTmH+wkADmzqa7PSmWnfTKyho9dpKZat3DlWWRe97FRfhLrNMmqsu44BarLUve9wvZoAFRb2yABdjLn0qZHUyuZZ8rNlWXbiAATuxUE7rRfjnhTM6yAsitUYs8OmKd6sv5WWarLA1ls2ix/RCVBNJgBRrLWxMigQKFroVYBNK5jjLrtF7wvS23uhyBdWXgn0q1l3TVllZYDovE27FrLY1lpvc9kAG08Y6LoVzL2dO30E+p2e2sudWXurL51ly6y/KZfSXA/e7kzL8uen3vZPnrWstZWXi6Leqekky2/ocQstFjnfzLDhRvSywrwKU92GWWSYD4/Wm0y13IAQsvNWWSJAP5lg6y80rukE74EBjXd4NltzszlEZhj22s75ndnRltuiwLAdGn3DK7Z2AHp+1yy/5Za7+Jr+m+LLY0cSyy8TZb+FMj0Wd0c2qQF0y26Zb9MsSCmkTTsVluiYzv6ZG8NemX6bLsqgcUy7cHplFMX9QH/TYplkdakhPqyMtvy0LaA2UAGoy5NBdqL0kimNfdglrKovSLNoi0PgRgdpEbpQR4y1ewGePiysAYTLU3u+kU/LZbvj0aPglyjxgZygAKSSLFssevGredmtlxl048ZcfoupxGItDQ3ZlCEyvwYlFMVU7o/dSop9UU6ndrE1LDF7GGLoxe5RrR8+dniMaBn54jo3W3eI2hGT/L0JxaPIT/8RowvQzWep7PwJH3HdIFlvoAL8ZeZssyvm7tDN2SeZ3WxkZcACvmXKmA7PZ9qS3NzsD0txQ6xjLSxly98AI0emMvHGXmEjwj4IWywCntqH1OB77K4idl3vXV1CdO524l6hbLlvRtJPYoLmuL3zQmY2LlPO6GIAdZbaPjFrmt+9CbuvkUPrZZBMsGg7SPdMLu3OywdCcioukWWfE9aHujq4OtZYpMsXMWEKd0ROKKsbIAGGX1rMBx+dsyp1HQBbQErg6W+6aZjj4nTUy1lZaRL0FmXr2Aa9ltj01cPtXsvSmXIhTTkwAs4YEao0/2ghmnh9Lw+1xI3qntjMvEl7Rp9MjyGEy94kcnsuEzGo+z7wAdhXRANkAlNx9nfrL4VlgKy1LzsPssTNd5YAAgkeZ3U5ZYNsub0X8QzdIAF+y8rZYFUiJABdbLDxloBywyxfWl1i4zG/w9bpzYQJIAF2Mt41n2gAb9+4wM10HulL00j7jfdHgAc7I50UdzMslJHqGdaeAEkLU0ri6w3DB6eg9O756oYx4AHrdNz2XmJjHayk1U9P+G6D0eWWzdD/I+vIAJT6Z+tjCj7v4wzplj7I5iZfFH2+06HLLy8AFqyzKGd+svBhszwzfHexBbY7od9p0fGXsoAbHpr1A5PnsyABCmWZmdbPOx1i5doYFWOqy7CLLNU8X4y8srurD0YWXia9/HoJpXGjrolb1LVri5juH5jZI1l0Chj1Ux88l95ta5sYV9ZZbssIq0Y+I7dlvWyxo+HIkA4fmEPzBbFk/s1BuFjQ6ZABSx9ell2xy14AFbssVvTkxi5xlh4y+RIFMVg2y6NtSEZl2HU8jZcm6x7oHJ5jpeh6kPZ45cscs+OWUrLOfe7Ry753GMZijP6E7LIL/LOMygvtfQPmOWmlo2ugZJy/LAAxMs2DS0lzzx8LBiF1Zek/NIpb9Qt+t+l/XehZbxMyFexUTd26+oVw3QQEjd0uGncBzgvZthvRSkdfYtMpb8nLXjlqxyxo7vQNxtxq+vd5EgMGncdcoVYAzM7KxExKepky0wOZQF1Cs7hbLQVlrIyxo7sp9PnEBAveiZ++0y47vG//CMunxLLLoR+pRIYMZ2U6TOXjFT2IgWlcHnsdaT3I2WHgA4Zl1qTRGZZeuCbM6G5jrPOjfw4xABtzPdc7mxhXTuimqWDTvr9PcuxnHdraxokAD9ntqlb6oAchKx+h8py4k/odYAqDncJ9hqRwXc8U5ZpMvfARW29mAAXYy9JqZyEocCB5Z9uGRp8TpAAD8d2D67mxhCbu1CALsZeJr032WE2BaKZr7w0fTC8ADkSAvOLkBhqr86WlqU/iAQCSxpT+px1cAA5elMv8TmkXLBrAFFy2i5eWV3ZDH4AAuxlwUy+HuHFv3n54+gAtpl82tblqY5DaMz6DHLfTx/iBNb+HRcbMABZYdABAVWXQlIEYD2InIx5yzIiNJywWcIlb3ZABeXLrGptPRRHkkfyiZjHyAAzplgoXeDP34qgwu6hvi+5mqKy7GZbhct8t6hDAi3F4JE5gEcPDMN1BGnL3Whuxy6GZZVXMU2XrLLpJInbixeXo3UNWuWlVdUG4ARy05Zbscv1RwXLLn9l4XYJ5ZbHSME/mNhjKKAZSy9swDyb1dDm50jh5AZx3Yy5YqMtmWWRdqKKAR1yzC7rr4CkkjBXLQOR9CABGZaMctFzH7y97Sx1pEwoNvYV0RmWXTL5EgXL41z90vWObJ763TNrlwTIP4OZyEqg2Wl9hq4NIeKMTXoKcapABnI9YKZ7vSKsnqSsuJpLzsjQRAR4y9b+GyGO1cQ47LYQACYANE7pp4tvl6B9tSn8Wty3Y8SGcsEABaXLnRlm1y/05Z8ct6ABdAAXVlxNyxW5ayctR4BA3LFyx54c51zoscuFOWelddQiNpyyigAncshfhQ3LeQuqZyy9afIACVOW8AAvZcBFy1mZajAAtK7AzEEZlxMPT3+voIDLO6x+d758XCPdtPoYsTEz763LWPQi+U+/ZZSWP7r7sgAvxl1Sy4m5aJsvWWXnHd1gAbKgEK5YRQARmXF3LOX+15k6isa5n3fynsVjzNIOVAMMvoaMu6atQPL/rl5hy2HxbPW234HWBzzcaS13dKZbXVNExBGbjABB6lY1UnqXcu017Fd9ADllTNT8fpyErOR64XLj+USOfavYBUstXGWwAzjPJ4FcGtMEr4tU3aNRzbCptVY+ojoRD2POWlBdD8cpky2lQkTsuxh7JmgRo584w305aScvm1r42iuOAB8y6M5fLcvkymbRzFNO3QAPM7vsABpc7X7LMZl2Fy7YUBgAv5ZHygAidl7IAOE5YE2wqumKXLPz6TiIE6uDj2j7i7i7L0qAR2M93PsCIMWKmoBLVipzfi9ozp3cveOX5PLNR7JTyyy5eZy0GKJEHLxNet5Vr+LvGstrL6vndP2e5Cs/e4yYssDWAJS9zpl4tywIBdS8AVomyiz77lyLy8jZYiVOx6mi1jHBektY2htsYl1MmHFI96gliivfl5efWNJCXaK9owl5XI+MJfw2NLAWTSDaKptivdhOd/MPrYnORjXZY+oy38ZZ2AtJmWuFwCnlh8y0A5da2OBABKfTgcAS98CGJao8aOcBdNWMYlrlfUFvE8NBgqG9eTmpl/lfQoNvh67Gy7lpdQFl4Ey2tLv5stLzU8pjJZl/1y1Kvvm8szGWc2jYMewuy7jeimZ00SAaj2SE+h4/TZfjeFMK8CGjL2YwEMwglHpuwvG2XFbLbGR+1y+ZZbpQWRSpxLLNfpxNy8PZaBstTOWpedBJrX1gBo+ApxM04mLEzc4l5kC9ltpgsttGWw3LRFl1cS5TLsa8vFGW0qEek5kHyyp6ExmNKWGlAmgCAFZ3UYAHx2Oy4nE1TS+R2qXabLq9jnJRglkjezl6ey2bXvXaTZDGRC48gANLnY8ZaUF3RmX3CgCB+x/KDR0EdYD1oRCRg8LltyRSBCkt92K7Gzc9Q/SQkQPxbpJ8uuhxUFd2+hziIN4Og6lS0rh+7VzEASn0yK5ecj00UG319h2KRwU6d5ZKMsh06YNQpZlwDyy+kaEQAXV7WfLbGR7Ty8rZa5stksBSSRkDl09c9pJdWrVY+Xuq0z2+Jx3cpLozcsJh7JUA854Qec5sHAyoT2mWJTLmrl1Wy1kZc051NGXPK9jUegctuCIAyWB6WW89jc4FmDy9AUaEKNw4Z8rDHoSsKAJIAG9MvpZy+AAOllp5nUQzut8s1HshbLnWQSq6c9Zbt8v8QJnpzDVh3Xy8VmZcsuA4prNjcLlvby/KwGasuU07+AAyblh9y/SuCj8sGuXSYAtPllJnQC5fo31G+XZoLLzlk3yy6EbJ8vGy7L5dlDR7/Y775YqynOmWidoJvl2HXYJkEr8sCWWJgAwHujR8G0fG6510QB8qAP1R+0y9FZbs33n+m6/LJ5SBvy035aJYHz2WlkjVflgJozkJWcd0c2X+IEq4uh2znw0G652F2Wt49iG4yqVEPagBT30lbIoAzflyfy235f5p2a0BqRs6zl+t06s5eVGNLWHFXL4qZ9vQHRBfmcvmb76/LwIARvyzv5Yn8vPuX9/LqGuuAY4FtEgABz+WHPL/ECb6059cCHtQ2X57AAj/lyf7FLTsYzPxb67/L/vlohnYd5frdMXuXD7dOkACwXZ/5dAyLPWX7fLHUlm/y3VvrACsP+WMAAu/l5/y5gAGn8tUynO/LUxwLwACv5dV8svUA9bjmRl7LncYGbq1Og2HTZzY2pmbHU75csV3NjCUUAPxl/koOPzrNdE2iJ1rd+AgGWaI9gAfYBeuXpTLSgu0kkVNQaU/iwpmW0zYNO2vlrYUF01boeXEArYyZj3y4QgBJ8u7OXeJA9bQfKgN35ebVOFlah0z5FOsYyyPZfsAByHGLfLIZw8Py6U5cMAB7eXondj4u/AQPCgHNAAiBWbAadRl4oy2QFdl27PuXNbg4/loAKyigFv8uj+X7/LShkIe1KX5dYlxj86dRTrPl0vJACnpV8urOWjAAcblqoy0wAEr8vOuXtDjQOp77/Yn5ZjMtcLhCoA6Tlhfyzm6dl245+XFfL2Pl5wAKuLq/8tbog9ldxdl6fncI5a1d3hKHDvL8plgSVFn5e+AhgeXk3L4EASaCx9Jdrcy0BXRy90rlyt43u4GdYCW+XpXLd3lwIK6cwEt91fSWnAmfogAAKxgFaf8sqoBBArliutAK0QzvxstTABzArDRl7LnVYFdocvE+WlbLzYw5FcYEFdnYDa2XsArwQV46C5vOYQe2+2HajjzhAAvfdscej1NyyW49TR++u4y685ZD7hQbha3LMzO7603C5ebGHswWlP49Tl3emjpADBj3EABTPLuYM4vU8bJf/31i+XLeo6nlzTy675b2WPRQAyfLmmR7KgETTsbXDrOX8CAhxl0kkaM5cfyirGXU3LNsl6rMzdHv+G3gRg6Y4sPJqkANl7uJr12QBHgrNlsMgndp5YdwAlOXlPL6aZp2XvFjjDksKLn+DtV6R7wK6/ZcWcvj86n3LyllpCfc1cK7V1whX7AAZBOoQwOh5d43DaOXTgrpAgDEKwYubpOPLGs5fL2QxtkRANMcpctxq7RkB0HE3+w+/qbgqPzOWQgAs43boPXnsdxZjiWWKad0ZljuSwX5bJMR7Cmw79gOKL4UoqgE1ctGd7W0wR4+77M/wdpIaD3mRd3d0M7brAEagEucuHuXznLVgVwTIBo+AsF1vaFg/LFgu8cuLW5cvuPPBW2FwJkAbTxg+fsTSXtmbsQr7blp/U8ewCfctQeX/Bzj8urN3SZeAustyGH7XLYe5rg7XyFcAQBc2XiAAcLl2UK88fHlCvyABSzL7pxpMy+6FexEDV2XOERGsxt3y+cFeSmqw5mjQrEge5jXYB4bkl0wx6lBdJkAIZc1xrsSsvUuWq3L+XR/BS27XumXMZaAFAAe3lmv3bKeEymPMXx7Qr+E0AaY0e5a9bJmrhYPL95kFjy4SFdUsuX3GVB9SZ+vLnY8TrcNMIh66TDSxlsKQOu0j4EgzGndlTyzljAWEYFY4wCHeWWzLbAu8Zyzs5cKozgWX5ndvmxuL3aqwBhd07H7+XL6eGRa48Sdpjcteog9qov1ASn02U5YMizyhXoArAIeyo41ZwEigDJmWXHLniltPMzifoK1CDhXqXLOVAOly/PBafJPZVarwrVLlpfYTS5bjAB3hX3yT1J+kTXUF5cY8tn+WmwrbHl7LnYN8fYKAlVH30ziXcUHau1cslCsHwXxEj+RlqVy2bfoeP20NHAnLVsAGF3ewYG2YDrtJkIrE2+xsK13IGVstu4h1bsE/4Njy6E5dwpNNKXyjTOQlNkK0OFdfCuAOXobT1DljECLiKbLVNlOWvgAGYVvMIw5roJcvDoBFArobl9goDG5cl535BW+BANDlkg/VT5e6AD3mRO4QdYVuxoLB5bI91QbhaCz9Up6uyw4YbdxB5vGT2gr5lmNy+PzvUssnsAHQ9dO4qo07+Fa7kDNhWauYCbAlQfRxFZjcv2p7dB2+aAT33aiafOuZyptEnehvUJWywCFZ/CvMeW1Ir/4VtsPSRFaf1NWBXK3jCuSdBfSinoAEPghW+bdcXODS40CpcwiNhQA9ddenAQSob6uccQux2XtXWOrOo9yz+5aMtgAhW13LJkAddpAW1LezDLuWfTLuxlw4y5aInmd2KBX41zjtW/Oy+Pzoiiu87HZELXkVpuy00rjtctFc6bvLCs5kOvX6ucCitsZGFxATToJsCF/AmBsu1QCtbLjxlrN3aQIBhUtEtH+3Lm3l6qKybZZdCNl2XDTTntWm3XfnZYVtMBNGqwrjVpt3y0HHrZCsQQBW298sAR2MzoWcvP1Gmn3ajTUV44y3CpbNNPaJ7kbLnLlp9y0eFZSH0HuWHIrEdR1FcOOuZlcPkXa0m8EKsTiQNnrqAisBO6yzTSvlnws96TplKMtuWJfLTXlr4y+GafHnPnRWBgrUvljIc/oADaMu3SRW29pgAEYKzIFcG9ilNqRE58zutvPkA5eGQuf5aAAAs9swFlUCTeWJkLgMVj98D8vuNl2tx6Z6jRgAHIwEaFaWQu9x6OaMMYx46Kx64csH2wWW6LLv651grTfZZt8soOXdkLm+u0aQ4chd311gbnwQrMbl+ggFjZfmd0DmnLjLtlsa5C/CZdGQGcSAchKaXO1ewB9oQpp0gGgZ6dtOWo3y5huaa61Kfx73GoIehQ0x+8bmlhhX6iNzZG55nzeMTCypRoBWObjCKF0803KZe0CsHWXx+dkfln4AM9ZaNEBiBWR1qWKF0S7WA5YmwD+BX7vLKgAJWK2eam/NNw27ZAAMzO4UywO4YYsuBGqU1L5D4HISjgqYKMtIUZEgAzjutV3T9noEEid2XrZjUFp6yPRD5cGCtTOB5r995kFqy/BaZLiMVU7ySzK9e3hPeRac2u1jqWTUL+1ZtCy+HZYPsvpOXj7LxJp26/XGpd8stuWWsgAOQVsRy/gQGnUvNNbuvL1rl2mFYAkU/cM32XBTLhXsc7y5qWbe6OAeHEXLhZAZg1vM7ppCOsWWxPDddx0Dw+QIcLiu/mWILLpcVxucLlubCstxxWc4rQPphgQxZacKCsgK6/HdQDlqG7aEnrRCtrqWd6T09xlUs5xZakCvVxXZwr8AAGkI5xZba3NKfwk3L7egZuK8upfIfCL3644rrf4IuKxBZa8AAxuXF88MzOuFy0SAE7ivpLg20Lotx0u43U7iW3PF2XLlEUzOiMy2H5ebsvRVosPLi8V5vJCdIrBj0/p7LjL+f4VY/fsZeestmM6jtz51zO2/SPFeLitjxWundNEgQ+K3eUGPiuFuWM0B4AoAV0ynMZ8risSB+AAIoVpQXcy5YYCsKWl0xT/ZlzI/eeMcymOPu762grxR5Rk9d5emCtYRW+grho+vQANEFb/jOl+Xq7L/CiFQXVxBEYgCC2X8CAgplwDC8J/vAb3wmWmLLgpl5RkxeiAWz30BXzIryXlwHVsvKaOD0fWmEVLGATSmKwIJGniurg0tQrX8AXdy/wABN1NVPG9TdgzPLMmNE7rR13TxXlXLuJgdTyyZICnMNCRWB7DgxlvW4/ZXCiCs1xWkorKxAJQXd1gHhcv+oj0F98Xh/nc396YXivE2WworbLlsQK5hAGEoLpBXr2siu+8BKw6HoWKOvHjyLjP2e/gABdZYi51Zkx4tTvrlmlo4vnjRTMqeh4V9oXhiVvZIAG08uzuXCoA2LlnFy3GZY7shC+X6WdhPlqYADLfvcAAU06Ow9ibl/+/cW5aNCsa+XaHL5DliZy0skaMAB8BXPTdboVlJYIxFaVGNPuXEXLWnOluNM8Ptf8sXWXhTLJbRpBvTraYhcvSOWrjLis+zsgGmsdtyJahW/XLTcVpPy1FB34gRwuWpedmEV3dy+s5flMt5JXCoAdpxlbw+yIF1EM5CV7bTBbulAfefqE0QAPH7a3LFzl+sKxdYaQisPJ6O/Lv0epWy107u5uCtt7Su1n8VliK+pZfOoQOVnBgdEd9JG0+3Fc7hApzG+CAnEV2mFUSWeo8tYSAD1AipRCmqT0RjkSvK2XuHLBwV1aVHQDJZHOzmWmkr2cV6eK2wLuMDP4EAxwrnnllOY8f0c4wsYN6XnjU8V+9dkMFaVGPw2XMPLchx2MGo+7sOMsAhXnkrRNOqIPSVWZe0vcvHH9zBJpus/folessu2WwKkr53lvnw/CZbECuMeAPQr3Wlm+0+3FdXBrFnH74rHoVxFy623v0IBkBZejLhIwTmqGb1BN8sXgAHkr/QAbvSLP5bpVDU+0hgAv1ZruQP9WaOf0IHn/3Lq3lhpK5e+Ajit/2WcAAM7lzry0dpdKwtTxXXvLB1lqZy8zSHDOiXQA3gr5EV2oy+3FeYcuGSG2Ojbq5wg801heIPP2+HSDzLDe6Fk3dpc6wu9ra8HTQbx0To/1hbe0vk1ndYrn2lwHSyzWYnT2TYXmHT02F/7SyNheZrPsHnWazFqV9ms0thc5rNzp7KWTSn8flyzr1KMtjIVmRwrNxRscK6WZYnCtbOWiPLOPl3iQNZZc4RFAJXj1wC4VgaK19Ek1ctgT1RgAy7lwiQH37okivH9HXnLZ4Vm7Cym/p+r2P5RnrLVJ1FZy6OFfWcv+pXCPLySVl0I+QADzCORpWmLETkVunSxndrFMsm56cHtVvAAHC9f4cjlLHtaLXGaiV9tvQ3dpzCvN57hdLjZlyXyy46bdrOBAAYXd6Tlr/w1Y3oOsspLB1Erqul94AHkZczGNar6V39ks+zw0FTbrDrPuN6E/LST+oEyzMZdmCsW6XfpDrA524QNOlZtcu3B6NqOAYVhnC8x+1zdP/UBKfThR5kbox7pa5SvE2WNfLpG4Bbk16EedR0DGWk1YRzu8ky0YAGFwvxzxxjLWdlqYy3WHBg+NzwmdbdQTuoLyx0edjlyxAI9X90blu9y+gvqpOrPpXJjLi6V2HXYM6eg/2q4WrujMelmZ8MZ5f6glhQBkKU6uF+PS15FZnADKsANjLDfweesz03v1C38uWaQrSel10oEUZddivbOmN6zuD2nTPZ51r5MvAe7dNWZbOoh7aZntePPD6WQXTHx5j9kwnhchdNJ4Wf2T5nx1PCwCefrkPsPaQTzYDZnPCxA2bzwuQnnMgjheFn/SwZXuxPNeNRrm9lHJyIHT/IdY5PFfHdqdomVi5vUIZYcbNh9HPm98lFnQyycEZddMAt6LDLVnJ9/C442c/wveunjTz5ih7dhB/XWqkiw+b/8LQbplx7TaebDdNau7tYIL0kBIy11noJ0DWZXSXAwxXEDU8GYdfOMgmX0QjwG5+zKwvOEGz1I06OCLDWhpAAPSgB+tgBDHpnt4PW2Z7eW5xMgAG5dJdT5iV2qOP5laK5OCt7nIjMUaPcABFlfEf25O5XCL+we5w0gdnq79jBUAQiLmWV5XY/ckYECSXZ7HMr9xh1c86KEf78MM6m6/gqa4fLK+RoewABOZXdzzxSh4ArfmqNyysVZWv5jVWVyYxMxtVW5OXnmgqd0FAGwgO/LsBd2HcmQrTHR+9hOLdJGRXGjg4LQjij2rrK5snoSl0Z8kvfjcF54y0x0fsAgGp/h0Lz5ggSZoIXWbKyuWUAgiAXxFzzKz+nqXWPNQBCTLotx7l/NPzrpz0wFxCVdlzZvGUuWMaIC3r9bwhjA9KAZwmiEB5z0Eshshd12V4GYzjyZBd2rg0WSLpWhjtANYMa1VMsmXVq1+o6FJYBxDgjz3senMXdm7etOVaI4H0ADvUAFSLAYxzVat/0fhbNwhGHcALzp1EU05efUJlw+WlTLODY/kADi2bMKAIG63SLdeRxso1EFlguZqenQGdYIU6ZywaZel7ouhoLA9enplZQ04ODSvM/ZXbBjewB7/4097EdeNTDH489O6OZSiK+keZXAemX5orR2YVnK1ACY7IuBCnP4A9rQg1AMUFoCZ31e6M7dP4R6Vs/W7rcoB9PGnBw0/OzMy0yoY7z01DHTyLxATT5CNq2e8sBqhgHyL6o+ryXdWZaUfCdWAjLY8bRJRI89leKCsnDby3dTCZjOxO8dXF7PSM67Wz5ER6o+PBRaeG05b9SxdUB1TqwOhRbTwAQxjbAIzbuyYxDkrpYGIH8yxxj4/J9aXThFNguYJNF9j+0/O1m829uBwilyoBXcrjFFy63WjqWpyvTenkwDN5lnAJn4caOzDZtm6b9B4u6vQ+God9z0fHcRv9f2oH/k4kzte72qgJYudn1e2jYxwpxSytQWW1AtR2VzQgpmocxGOIDHM1D/lF37BYQuDA71pr7ViASApuMbQ64yCFPkWXx2zQIxn0LW2HuS3Bt1tUBAs7ZxO8/O2Zossz0607zfEu7LQGlQFh1NKCmXpIK3e0HatVRaC90Hi6gMY0ox5qi4r9sFyvUT7gVWNd5o5nYKUEXss9+KDUA1dIGLKzVEY7C3sbc+crizIbfKy1Eaf5OaZHOgsTPpnfY1vlc+r1i+lXRjJ6VsLK/vlfKyuTNAZWAUVuuP7aj+foL2Ni7PCI7yewEXRUHtXvPL6nyFdEiez/KzYKbML0FR6vj9jgZh/K8iuListsZbchAgsp0EADeQDVDC2AAyQTTYZOpU62Mb4m1YRaIncUtOgsCLb6bSaKoFXjlwcnsiqywozoMFNdDS6OzzNOmEU1EFjH5MQQBEAd0ZAEZRJ9XvCUSx679PUFgPHWixbRcfcOUFXgtdd5Ryy3coOXIfPVCmlQTwnZ/ioJ9Xv+pZzWXEAdXBVxPUxreG3GMvSQjrLwnOuCUzwVbYKscPmxCrH2poQq5eMYY0OhRa1ed1hxpBI4B6ejBNxzHykRwMxr2kmZ2fLc4X5XtsrkUqOVM8ODKZiTDWxhvAENlorvdoVY8ACfV7CRg7reHCKT5kaEkAZ5WW6LATWmakDtUFmjhoTGZYj+fe//K7ZYSQvmp8n8dabhVvNAF87q39Pd0WE89acq8wqwagBUPmli7RnAw9FzvvW80Iz3AhFXQrjyJuxnDMtFt4mO+KARzUHdkcWy/mXoEuCrcnysr2yezzQ1HAYkmM70WLHwCXkEB4xkVau6TKfQsir5CQJ8Ew12aQkDqIcbsr//pkj3YsafVaOYWWhBq9RVs2yyZMfUmOFWGmirAz54gJk3sYIaMUG6Tcrk3ZkeAz/3rjL36e7eAzvvJpIq0qKcGKub+7f8rDtltPAAzGcCyt826fpt4gZuBy04VYm+PO07pAz/HoaIq7rKZg0THrhI7Ex64f2/RUHrb92/wGPbLXz5h7sx1oe1SCZZBpnLt3h89o7CuGnNPhZWOFOYL5veI0uHo2Mj0oAUkkrIiWY0y4GYoOOKL6f3sNxVhL49kLto2PXsA/rTz23FcM51YB5NK+FX/6dlGx4KAGqGEoXDYFWnCrnfAHxi3j2Z20Ns8nHirFxVl4q8lleRQDvFWFFdV9nO/KymrshKt/FX4mLP75g5Zn1YHqjga2sgSr+x/FLKxkxb09AnTHysr1eh5V8zsFvJKuUgBM5jvOVp4w2NzpW10z8BzErdTF/inQ1laiytPMABAkeOnOx/MwkdhqAslXKSrZfh2PPUY0AV7P8lWBAk1WV+4w5Uge5uNq9mPXzOxOswoEZbHB5N27GousfWoO0fSqgGD9mI0Azsr8iR1iU/nOvN7PsWnESr4WV5vKwToZ0D1Q87GKtpPMXOI3X8F5yvnjGtk9odQF3s6lfq8l0cKdM3z+ATT5CA6VYZ0NxzadfDtQHHXK2vwBglNPD7AXdEIZ6hoOkceJL3pGhvEjlamAoq9Pzv8SNElW9CaJLFnXw6AVbRmMUSm45t8pV2AePugr61Dw+RAXdsDl1IQFYVZW2B41nC2d6sxux/Nn1WNbNo9GRSrWuho2Y7SIGr7Pql7N5ta+Vs3IsbOGSN0Chm+R9ISW8nK+3nsNL1LZXZPTTtpV/K4LycyCvi8ma8oLpVn3nWrCcbMueoguyrXqBmb5YFck8WQJzHg0DY/Z9LXTK5dZdMKAB59qd+0CzgLpUaBKv6Hnm5TYizH3nMiuPpQAljSLCU+2g46AFGxeDhMp3avsABOVxY41K5YhjEK+76irlxV5Mq0J8biW4alX+yrebF7cq4WxfUsME3HjZwjNAbCQIeVblQDHlXlSr95V+r3UhfPUKusxA6zNMBVrXK3GPtkC4nIBbLY6uVjKU3E5aylNeLbdyrTToPcAA+VfCICCynoGAQwpk8q9/+AJyuCGgcnLpYZ3DbQSyE/bWEEBKKQc0cKsq/+uGb0MX8712LzkR8Cqw7sfXF0YVXURTdJVgvK8igEtd3pZX0wzRONAdPYRVefX1SuWU1dwVAe/K8qEb92P9fYX2Lr6Buiq5BVaMtgYVWwE9mLqRTYxaHtA4uz6HwOLvMu/zVGBcvvVPVAAQNTl23QbPTeQE+r0YVWlbjw2Vkt43xVYAPP+5It9Df+R5KMNkLpP0MGpbfdT1dILzanX8C1H1CmmCcrPf4cIgPdgA8njrZWcETD+hsly/Crt/ytirgMSr8fa93jQpVbkquyoAZkry1+2fK/BVact3LlW2Eony+0unUUaUf1PCXBmbZHCnEly2C5YEn3CPhLWAkqIKgq+DqYcqs2DSZ+A9JVopHE4RHgqsgrg6ezRQNMzczafp+P1xVWNyr2okYxExRYNe1NxVWfKrCiu1ingIEgMKu5IBINjXlV4HFCSzsk90T1G9nlS6R/OdQwYbKCPmuXwfzHnOu8q1xVahVMYlWksrKSSdhODGVc7SPdC7YkTe3Fziq8qEcrz2HlXXt8NSSd/K8CVcfyuXcXU4tvFkCcq+iVd5ytJZWfIzgMehF4+8lZGqvIriSqrqVV0unelVY5/O5uWxhzMx5hkqxJVdJcBv1osSrjHaJp0EWkT6qsmTxoCrjyxnCKbDPoll0G5d6UArlVjCq2svvEjab5WMAr2G4O3Y6dVflTPL5XG1w2YkiEAM9KImAAjuWdkTOwW2oDmdVeXysHVXkXjD5Vzr7m5QCSyvDVWtPohVVx8hN0bsd/PZ4HxnThlV46q0yIm/KsA1X35jyRuhIw4KUEAgEO/jMD5RKepiYxzKewIjqIcEKrKax5WkPxVYGzibRmGLEr5V5EwySxYmquRVX/Me05Vxaq187tnysrVW5yr8CIt3i4h5ZPC1NlWGsjz0ZlJJMNVY6qu4eWujD90ZxiY4pVaC3hLWmy+2ys+p3tBR5e5IBjV7rf8HeVzqwF3lcoXDESA7qrtxVnjywojroqsXS7RVjZdpuYwxKscklMGlXtDTBOVhSq8qoESqtT8WVVj/HljmM4J5aBeylSFYAIjVVtiACofJCoBv/nMNtvVVqCqxgFcQkBi0iUBAtlV6wALqG2m+NfJ7JUQBnll1Y+GXAFuDiqnPSr4++2Iq+1rqzVPfGH4KrcS3IVgDNVcayMJomXPL1sZ+2q41VeOquEEBUZTiru12q9tVfiIPzz6uFwGr+0lJDquH2qt3lXKarPUZwogwWOcwLhA1WrhTMEu9Ly3WiaoEuK5aHarCvulGfc6YAun1R5mrWAQ61byfb9QEFlOLN43Vw3/Rld06qgDpjhT+AXDTFSp+3freLurqv9VWoCr/+V5pU/jlYgquJ1WnarApV9hOMUVcYgCGDJA1zwB524QI8Ho+qtvJH6UA0DAPyq3vKdcqsSlXdg2GlVxKqxeMbgqub1WWCrrix19cNnMcfKtB1NPq9oIAbXQCy6ZKquE1XEVaIcsW2q4V5ZvHOYDIoMTY9V4Gq9xVcnqv5ZXxJd0PscguAkAB7/DNRZ1tTM/ADgoNkLtCKtfzGjtDB3KACq4HVevqtb1XAGr/0pgUq7BVeRQAH1XkqrxVVtEq+EQDPqsPVXL6rWup1yqyXVaygCdWA5gLYwlw0g09NoI2PTC4c6r2Qum6q4JgCVuPn1WCwAvOV9yfdnrjcn3L5X/CA+VAFnK7JidcmMQs70zDUw0zMwydSFfKsT6CTSYFWAQpfXWYc0oDtd77qrOh5mqXRG3sieOO1WnyrNmJnDAKC4Bdb0d2R5NjM9VmKq6GREgjPNmGzc9Bbu3WQPlQDyquthJZKrT1V5uU/oVckzj5drslTrlVpqqworvKRGAsAaWjyW4NhKFIoiigCeVXO+Ad9+5Bq/KMDq/Z1OAgiA+WJuJPcvVa0asUNXg8rLOVzvgDfVcfKsSt71irCcurfK5BbtqMCrcnFtT4Mxt0OBDeCHtSqiX9RLUZu9XU3qJZhX2QlWgnjtK4ddpATVa8yDfAQTnLtGxqbE2aJYPCJvmGbRL02J/y3W6Jeal0eiXU8rYOVnYC6IaZTqvyNWgkjfFegvveeNhDEu0MdPAAj/evrYw7kfG8tuBaScrsFzAlHb7MdNyvLS6CWQDJVrlU6MUbt0MglWpV9axVtE45ogDp8uvlXOvuiJVu6q88tHlGD0oBHKrXTVxPI1rzpKxTnbHdskhBANAAJZQACysIvGimrXmh+4otNVZSzYfHVU6AQWu1/nsfVfAFAHf6T6rIzV1LU/5lYpxOQRYpyry2V/IY4EKfOqt7aa6fLfFhwY4H95cY+zziWtUdHXcf9cCSVfsTNI7HuQLU9OtsPRK3uOatAlXRmrZzV/cS+qPv8GOOTHOZdfiZ8KczAusOavhEAcqAd+V8iq4/LufGP9WR55TelhgEq0ZYeDroSxHWJASdV7CK4k1bfdNyVXc8rgFxuny5LlZjTOY+XPG9tjVmvvDhVfj2h/HHeUAYorOJvWiVegaYXu72mrbEln2XWZXt91OFH6I8kz/MvDYAagGJ2HZVXS6dTlgAMq28Bb7sOuVWOVwixRieq4BoC+Ktxj7gzDkLIN6q543qWiMgbHDZdHEVy9nbc1daSvflXHireux73Y++qZlauPLGZVAb7pxFq4dObHxNolWkbDwOe3SS+tLs+r0M7aASrIOGaRabg/w6qD5WG6WrgoR13XSRVeTVoHgWMQg0GOsyvciVebjQNzHxqulo5gmq7q1bNasE1Xw/wtjVlIObiQDFlPk97vJLL34N4XaK1egIBcpHy0Absx2hq2dbvsthS26IILnexgxqxG1YxKMci7uKztzV3ZU59Xrr2MYtWjGrYPkelAMA1fWIB/+XY89xKdH93Ac1Y+Kv+apwsr5LAYOq9hVbfN0rNXr/LZ3O8Nq47VYratOFXqCrObOgrRNOEYzat3nGDUA9qZmS0wagHpK0BtXgoAlbV4aq1vkdJyvIBWG2roJVptq5G1eBaMxtWpWrcbV57kd21bq33Dd7DCr0FV4Gc4ZBYMV29tX9SSspQYQo53VaYKMhsIVdjAJV3Vq10FZcV3+tXQWrRjVpGwz9ECoCueQW0bDG7Vzwkxp6AHatNgJwGd7rV7EQEe1baZRl7aA2rHtGIYU/8VYJqtstWy2rj5V2FqxFlYSguPSXyKdhTVrZyw3MYHau02HdWr5m+tEq1vlc9GDHLgU1d1XIbVq/4cc+r2oq7fdTKuxtEq+gUbvytPtWL3dKxZmaPbzvtJauntXl/Ehxp1Oq1kakQ6u57HfdT56u8zSSEVYI6vLFAXarVbVlnK621ezSPHc69WLHnOm2fR+2E3yvuFXZ8rJQVnucwbnsgt0XFb0OrLVVz6vUa1aWguhZXi2raBx81q5YrrJauIlWTmrxs4aH2A4vtZdPLNWnCr9DV4ffV6Va+2O046cjj2WgKW3airvA6uWlXtGrC3IcOqx+4z3ADdqnT2r7cA6cq8jJaWCsuEAdo9Du8eFWp41cMav8NXDHwmjV3ry2OboY101Mar8AU/gMvPeiSe0zOQwW/5z2MlsjvewnEJkvj77T2rjlV+qU8nYdo2NOZnV2dA0x9hOOkrJqADuZmSyjmjB1YK5TBb5JNYLn9jj/mZweq1NVZ0KslOHjqQoxXdmCx81YSdSWNXRRAYDVrcY15LpuCueMHxnT76+2IAHTHDxzCJZXPq9C3ILAxDbKZW2COrhsqA9KAMBPdrlZtiCg7VtYLc9hu2S2ASRCqtS86VGrtAgJwq7KwCl53vUB3arp7GJwq2QTtnKvAdFktwLW+7/o/ouYvcOKLmdgtWVVx8q63Vcm6sl1W+ErmQATuo+V1cG6uZyXoGA11XT6vT7oTpCuzdXC5LT4Lamq5o1dpqtQHUeCrd9VzZcNkLovqtrdWtdT1clgMYwkkalt2ztX3FdehNfliJ+1ZMP0QOHYgEIwASVQBBVfKqNGxALq9vAAfxc9PJbjG3gP8DzjweVi8Y20fAJCgQ9Xf2rJdVrFq6joE+r0EOG2w9L1V2Aq8SnTiqvIlWBurl23efY0TPo+qtI9Xfyr19VlbqwEUFcCwmnGyTAwTV5MEDquCoatjzA52rsLVrRY5Mm36vAXS6yCd6Q52+AOrfroEDunHciAITVgcXfD1eaP2KbGkL5cnsnaq091fUatMVXfdTuyp6zK3nlf/XApbnWCdMjhrBS3pnp4rPI9Wx59sjQAsK2zVqLCvJtWm2rStxiEqyV1nvyvS9Xcerm9Vp0KTtVbRKuwVWT8rH6aXI3bc1cZquVnGWyTQxp25q82tXcCSi1lYqjRjV+Sq9V1d7eO6oo5/D7Uh+ZfZhPvcoBcpHlQju8u+Cq65VahquTVWQvwZhu7bq5TVKMd2eFXslTDrjcKqzCftWlNeNXDGrBbUj47tb+AwQCe9W4qrPvo8XVmMvtTzOT5nLTtjBoV3XXE6eU6OPkm72Du5QMKq8wVfrysfhXWjTjVWzKrTMlelqsTFWISra9V2Wq/d3pVPathIu7DXJ+8CkyndpJfnaNWqirl1e0Zy3z1ddcax9XH6xcfV7yq3oTRmNMdD7DmrTdVlSlL81da6tHkBn4Ll4VwTAHWgBHGNFA1tkzmjVhBY/RsGtON11WjercVV4aq6nQF/Ku+bHI7E/64JXq2/VfXqtsdXSF96DV2Nq+4rp/KuL9XeWrh9VlKq352bM8GT9XjlwtAcnaqzD1bs4DvHUVtgwKeoxoFhcnCTOC9WpIrwER66rm+Vas4B6RzS+rLIJQ1cx4xGwkCZTGDVjJq5rS48yQCr6vg6mB+r3FKGWq6JIBeX1fhmYCzPyl7mo0UKcG6uKXG7KTgKlrKK8yVY/qu7BwWV9yiFgy47SVaT2hmfQcer5vVi2qyHoaBKs3kAeWrE7Voy2EjVclTMuGmYqTAsesUq1/McIGuWIXAhTr/PBxC2Abq+quJ26asrzfVgKw0CVfeoA/FWkL5zRYBqKzDTtYGvlZWOBrQSF08s7vVfwGtvVWBgASZVuv4DbKYsLPG9WUVLnLh8lw6wNZSQsmjm7wjCNVh8q6RVfwkDsJwg49qTpiSq5tFdJ13p16VZQI7xiE5KtKeqQsRvhvK4bhZgVU/5lZk6uo5XhOreIWkDq3I1YUGPYiBfdTCnV1MPWQ1eQfjbDH+6jTTVnHKzftGEf0TIW2mrU7pyxqwl5AfXMOuGO49SDR1cY+ypeQv3eVx/vEThED1w2y1eBpOr66ANzeMV4DcxG4ZX2MwrHQgACCtZ7kQTFaFmMZFWAZdGHV60/cvyXvqPCPhyFdslVoIU5dtwHNNdDShYI0/O6Ys4kPsdGPdam8ljIDVyS01m4eBfDqIcOYrPIR0pta4Nb0JpAan7pTmQ1+m4+h/2dp0QoWHAjBYEOga29mAMmy0bmbiz/pV+1q4JgFpsP5xHgc9KsV4zbbflaSyu9FXsOrKgAGYa6iKdJQsbjGDDi3DOlLq72qZUKsolmME9TYZT0q3SYbZiMxE5Dery+V2Yq85zvZQucjGDhriUu8rK05YHatMabnrbLaRVjskAINCSKsPM77hrMqF1Ro/+EYSytOFW5+jEAxryY5COJkgBChDR2rjJZgybd8NfpQC/DW6BrQI1j2YfbwGxExBxW7Dd+1ZjmqyiVY5l3RxWFz9rHV8+qyPVeC3MEeGDxdrGpKS0yqWdB2rflXLGOmVpvxrTE0fxGtKdWMdd6ZOg0s5DfqHpP8yApjdYFyjHXRGhbXJ1YjXRadGI12NCzczo7OOI9WWRrzpZjC059bD7iuv17atzRRu/EawCVfJ1P6FX5KrJVVtrczSNZrasdVWxRr26l4po+yNY/ysglXr6rZLV9BfUHceIGtTDWvBAIo12LnQ41YMT1/17ek9feoHDnXmWd1RRceHiA9tGxzfq1CqcHauKdX3Cr71Vr53cqoALABJZW0Sronh1+K4nldpGva3C4edXZZjQo2cbuX4EPJ6TnLul8sMve71dBqsgB6rRrB5Vz7RIIVaxKsFtTaeA/64Kcs5A3teO2hlWosr65AQiXekXuvqsAlXK6sWJV443e6NfISvWeGFGTATOjviV2Vahu10bBlBTBqAQ8szpM1vUswN6PcrlQ1kpXQqNdcqtolWbRrcPVzuY248b1N0U7n5Rrj+Vrqsz1ACnMNolW1erldWG3q/i1bARmglWv6r3vV0XgLHnp0StWPHe4jCo13mQPV1ZtGuwQjfVdDHVhucwBzv5KB6ABYOriWVwkAM1PsMGs0tH3CgPmuu+/dVla+P13eHBMAFQ1pmq7kInq6vEy8agARAh09q3r1YtaNvdWX+r4jVpvajrVY393WjX34ElHV5SXb71e/N0l1WbCAhdID3fbeNaVqt0aWdbTwqU5fKxhVapmPfYBtl9Y/ASBq17AA5XD01WpadIvV5YqyL1ahGs0tHWNA4QxG0QLpWdVN2vlWKn0WJV9vq/IeY/6udjWyYA/412ZUyPleUmNBCmxl9Zml/l3ayKDMN3PFX3CrL1wcBnTC1e8rhfJ6CpgpLgEkHFykf3Ku7Bw6Odxx1GpJFKNdo2OQTXPGr+tVjzUOWgA4U7fJXnnj4aekDqxCQAJuNITXSxjRE1hUa8g1cWbzdG70mTM+5oJ/ds43oOq2WxoGA7vVlJJCc1Zg6sgGHJmr1Sxx5YxMVZqyvRtWnCroNVnXwJ+1Y4U4fmHbRrtxV6+q9wNbIGtQqmzhkcLVxTUH48dOuRtVWHJjQY1wbIGX20bGtLVWASr9DVjfxm3Vfv3OdP6/ML+1Zigq02NZoWNNdWGhjljJM+08i7q7fAXV73+rOKVmtMxx1biqveTXdg4+k1qjqyfVcyrSjFcRM9ODV6+q4Y1d3THfVmzKSQRAPZfeVUfIkBspW7mTHKVkK3dGVZZGtoHmaOjrZVycyDUkgUmuIlWearI9V07S+pcdBZMqpXLtLWNZ67SxqlfIPP8dGpbt1B5+Fkzw3r6wtyU6iHTva2ims+iydYPOmpW7Ur5qV0lk8p0Zmwt9W65sLWLJ2ms4thdtu3LYWIdLq2FzpqwPSi1atnGZ7erWAxw/w34Ojcr5iVWSTDhM+kuqwpVdLIDPcjUJrUfVto+Cmrvc6PS1Bs9db5upwcELVYd6uFhB66r5LADlcFcVdEQvdSHDazonepQU7YBDMdN2cBa0roLgHnS+M6bAuWPinW/t/1V16q8DMd723hVDFJr0OFv6q+/VZIKv9pXn09OSxtEqwTbpHSs1dGNdLK9m+I83Olfw6sn1X6lEXHeldK3HWbgCNeNWQVw5dCBnC3nd2H7P827WcLN+VgTq3QNZAmtgem7srITZ8N6cFQEfSvi8nkZrUWVph4c1lbYquR6Wa2TPPR1rq0xVZ/Sv4DhYgE7CcTJQxKVbayv9Hmu2TzFeNXC8Mee4CMv+mPGILJVnXC1R8b1wu+s7d6r7CcY3C86Nvhat4ZXFJrGQVoHoyM3s7K0N1sFKrRelw507EAgDavIgQtsrRQNdSa02MdqMBTUGD2rWs1tSU1FleBz2y3G3KrMfR248w/WZBCJP1nAgiB2V72Q5bnhsGtPsn2LTgLAX3K3wMdtGux4WHAjkcpVT/dvPsBd00Pb3Ajk3WOh7bJIBhGggDXoXTPT+jgPXvpeD51BBG08LWru42XZfpfAjBZdWQGzP+erI0KCee0T2u9W/+jKQR+zK8MV0/0v54XAs9pzeuTKza/t/ysmTwDGriEgAUq1ONfC/20bGTBAVDV5aq9L0YIbN/enY+rrlV3Kq0bfv/avlZXo9duBlgAYydMeZPPgqmDSrfBAUfC2AHoN6N3yG3HwrA1zua39adZas/BXPRgB011r/TAodgd3cnn+QATE+jAAJ6NaYn2XVXd8LFrpqwa8q1dx6rktWbertlVhQy4MNZwmvjf7ZUA+6Cu/C0cEa1PNmcn1Mrr3ezI0HOVfVn1fb5OvuyK4mOY0kzvPmtaZWj49qNegYYzplYVb3+l6QYJRp5m7/arVZe7NPzXf2rwkgdMXQh4wMysT9Q/8LLvUAAi6G6Y8e2mjY1yUCBFivo17tFz7MY+HunYBGR3cpGNGHcyvM+aIFrtJ1Nvo0MVaoNCo07SEriVkKqq92EdSbPd8x7gVA0x4dI6kkacsDhbsb9dxXJ50bZUuGnlM0LGWQj9gJTwAKU2c5p3ZZXVad2/bc8Y28mfqlPROH5jL47pyOpCwteWV3Epn2FrGPhrYy1LmY6bM8LXMvDy7y6q8J6LvAdM7GWiDipuup2nZjMd2ZwmZ7+Ns3fVs0IxqEZmbM7PF2NgHmoWC870oYmKNvC7sDTxSRxZ3RgebA9Oq07Q6dpfR5ZnP5TtQWu2C6dZdVOei4QIreAhIsZ/HjJWrnZtZQ+UDKQSPBHnzsrdlOyRff9QDmEBj07uZANzZ6wZk+nvDLhts6HcA3YRykywl9sBFM+LWiTLfb2pAfdYtcUsipjGglrZYR1ky/GJGBLyFgBOTLJcZsYAFscTGjAwtm3jw7DO15Q1rRFTfilLmwOdw4CJy82ErCRyuYtm8mO3YR23PXsQAcWvPt6KwjnyxyO08S2bPkS6mWEQ91b4Mv3aS2Zvp1jAB6lrZOVp+nfgMa3CMQd6mjTlvJ2nK2Z6d+XCOmWuIieqhbIM4Etevz3VXnbwj0Vicr2GYzqFbMwAnjmdgTrPQmmXnrYh2EZGRcr/V56lQxS5fryN0GwCwAW5FxlQ0bGeJAOJ5AT/TeZl2CIygAHeXDatnG/cerZlYbQa2Y1ytWclUuj2XpljQyC7rs+iWtnRATan+puyMCXkAj06+A31qtrZqt3eREeBj05665GdTw2qJawlIFW1hF+HXs4+lAVx3QZ3plLkBUbsKLzgRnAXTYtbJvMZZlWn0RrOtEbaYzpDbPsVEl9AQDO6ii6JEZ3MtAty3OAcK1pxnZ6obafC4ha8VrHFFud3d4zpjyuQLgSKzRAplb03lufCZ2RenjOTWXRp1cJ4tbBXBTe7y2zzPmsyI5Eof8OOBwBjKLdi1kWI4iEa5WtOUWW2zzo2go8HK1ZtGtBtoCRjrg1QLeOUCbgFPyDtJJGDeVkVQ4irtHbP0+nfQtSq1sha5/VbZqPZ1H2Rj8URvvKxTRnh9PlmVgZdzcaQZaxVRdyaObtmlmdWYZw+3fWzsaaPaO7sfTPFl1yapLoft4ArLX1gTdC5gBAICzpjVjXzHSFrWJQSSy2AEwF4DRtmLu93K57Ba5zobp9MLqG4fLOhe27k+rqaP7zAy7yjwhTjaBncZZaFZ3Al4EvIyyu/PU4y0fNePP5XdBT4jO/puILuBk6vXs6k1rJgp7DRDL6f9UO6rh8Oz72Rp/AKFZe7UB8OrPAAe+xrwiOAVd2iMLemsOzGYR+MM4dEfSsvBf7U34RYxnJa8VAj3yCeHmiOzf6hwLeG2tY64ArEBOvdwD58G3dogjSXMx1gMVr4tFlLo0OtcvZ23mQD5D0Gh/A0rGfrzZ3ExH0Hz/vpl1nUquGDZ3idmY/TnBVxGI5NPKJIDaiBV1rxMRzay2+Ps3WvSp65Ozl3uhTs66CefmBBB73f+2614MNiquFU7M3WXibdKkgC9awNMePWsu965mr4DxmLXWGteKppREBVVrEMBoWgAQrmDWvxF6OAdrMRh5nYreD86NQrh/GjIvyPFa9H3r5iP1s7mLDjK10Da8CMexKu8rX7CrFbO0Bc84VZxssYTHs1rZ/VmWI6NLtJsuRbIbldkJV/wq4bEYTz2ZVgIZzlC4EZa6HLqJZ3TLWYar8XZ6my8NToP5gbTnSadIwAcja7TPso2twGlujdUT5j58K1MC5SPwLXUirupSaQaibMYj2NkLBtUjBAOTei3P3rJFOEPg35Ol61p7PfAtcsP1QBnPNDlT526bbCGYt6jo6H6RT4vOvzQ112dC0P7amcAzavOmVI9ogiG7NoPhInjcYARjnRQbto2N6bXgGL03Z624zgkG953R+7FDJau1SGY3wGbMCN2bXcFr63ZjeA7Ztbn2rObWqGLinO8TUhxbqCWsndmnKrpTlpJ8PbToVl1jxGcgtQE6CUALwxcOKv8MXjirR8e3ZvJFleO0Ne7Qc2dVQ+A+o3cVd9sv/dmiQAZC1+Wo8Okdb4A7pmJnjVfOuNa+o4CuXN/WnIudmPZog3ZhtfjRQU7mfHDV14Y481NroXL6ZinPUdv3Z3xi55CbS2v2KrEjjc7R/Ds9ltZCbM6q7Dud+W1rqwIVtdxKtOsXffCOMrKc3Tltf5WvR2Wmezhlx+2ncyUapKvEJHArjhtOl10RqVazEA6vnNcrTiV6oAGyVb+0PMLWRp+vC1kgXZjMYlB35qj4kjR9ZrT6ETdBGbOjQm9trjwu5rc7uKaTwAylXC0DPfm6wvnZ9CbV1b96IlEkqp/sRlN7p2hOJsBdNQupVhlaxltbHLjg86jSrQJek0q1xrtF0BS3GH9EbqEdFw1Y5uE2sQRnuwjNMx+ja7QUfcoD6gR0NdpER75i2mtdI2uw7XGJjLi14K3QCGZX0CRSpkow6YunCI/Dte9Ku4l7zkzCEpv5riH2dhi1KbXuBTXCW4UM3tqf8SMFA9WRQUZVzHa3/ocyWMxyl3BjOMJ/t86n2eL8Dp9mZGIj9l2XQ9l1tu/0oFxIgGAOQPGs/ZlaKBTF9mmQzm82oXa8+wEu/6kRGOQzQPSRwAISzvKSPchmrEt5A8yUQJmteiTNvrXH+cKrFt3vc2AGklOP06Gkjo21s1A5lWHocn6EAhoLYGZji3X32drcylexmdr775/x8F3eBtd0qOWxyr2NwelXSZ7q02QyDAVCAN7p7UM5IeGPXC3SmcB97U+jjIwGGbccuuSnT+zqzaWIAFj2bjiMH1mBNwj213CZBjGavKtH9ne0DwYZ0WM+GXBL53xAB5kjSY+iPaxhMl15T1rW4edCWuzWM9CADuWstsXfkjJcZwLM28kiJZ2WtGD6zWn0WczYpkBAHMlhm69DXIemYRKqtZk6vrTXT+dAip1qU2fMdk/PIDmLwACWu0uM+GXHquNshHD4jnW121nWztSb2vUVWVQ970xwcMwntYAF3xZ1CnGoi172q+xVfr0Px7Wj/Tbouue4w1HBcNOspHmBzwlVrUM4vocgAAJa720ANMRz4ZIreG/COk06Wlgit4NvoytUZUqsLNF1zE7mu7pw/HuboF0l962Ez1Neg1LdIOaZXAX6HVFzRZcXFmKtKi6sBJ7Xg4jGJoUFy6FgYr12jLWCwzpku2jI6Kta4qPTCA/sUES55uNJdxEJZ395n/g9Jfe92KBoLrZ2o4O6Swj4ehniXTN+eUWPm7W93A3qWiavf6kdWKPyiBm4By+gW4QISzqez0wrUz3GXo+oA68PufJtg7rWUpzovRzWwG/Pp92sbpHjET25Roba4N8ZFl20rHk6d23J0g6/drp6IwYoBuljP1sRCorK0fjDNJUBpZdtVVjHA0bKfGqtz7X9UAPW1zA68EbqzqPBKHGdrNyul1y4lPtEOud7XFUz6a1sCej4LoaHOpJGi1rXNOrDLcG5Yd2vHaGJDrywu2aq/Okf+32pJHI9jmh1lO0+VUdnIDDDnmkTScp7n8woNt0OtDi6CccM8Zxws1AGfJ6D+8a8YzRQKey2NlGYeyQJVn5PDGe1l9I+CLoiN3d7W+0Aqq1n6q3VGYL2tHlxwy4mLqLHazwtQILOfDnQ2jtGRzyuCjbvo3BxdmH4dtyJt0M0odfiABIZHYjrQyxyPAFNbHGjMhrV+TzclR93XV/BraTOOa7W6lSXENQo6TKePSPhNHocAqf5/IwwalsENAuGnyG99h1vPY0cUZd2uZAA3drw0JCta0/gHMOu0HW8ZTBU1j3i77TrqHPnh7kPLZou95wIZtazWsZW6n8AfNV+0XRetsdF1i1DZMj1Zu+TI4VruokCRi7Cj9CS0aeU6XTsZHNUbW9YzX+ZlSlHXtfYL2b7XSiNfpRwfa5jGfn/PkW7Ytrjwu+NcEcUbmMMSjnObdwLiIe1KrGbFIEcVmS+9QA5xRI1ajEO104rIjarNYumfi8FkYcT33hHaNjZe15wpMydULADSeWjVjp/Zrfa8OgCabMRHWqcNytISFYx0GccOsPHUCgevpu2qOJcmZnF0fphb+LrfOxxVscYaz2vxFIPkjPo50y3UxteQSaOa6jnAB4uuIXfGFpVQAJa6cALF4u2JHa55ZUGuj7XYTrr4uiI3fNteSOs9ZHsTr8JhzOq9NkaKBp5NGledsfJwdYxvPuIEtTZHMC4QA5iva2IBcWyPHz65YtDJ15MXUAaYCKBq06T9DtGxvCXXgAEtaN0C6dVdC21rsc1EdcnF2SCXcvLtOWqU68XtcqsRAG7NDro9V9I64XtZ4CNOJXAIzt2uiPzNs5opasjl7Ulz7yetuMwQQB/DODLNcWYUorP0wGmAgPONmnWP9rc8pmUw6jkfxT2Hc6jnAs5ACp9JCVdJlOnjm57jrB1u9I65tRwHM7EG7ALq8ZmV8LqdfqUT+QB4s6j5Gy0675LutOvIc4YqjNCxoKXY1ZfS/02S6DOg+J1n8c2y8Tjo6Syn4zr4Zhp7PY6YZ9OsHZnoasKAAIDI7iKdo2PBnWIF9oZ1pdI+GdaW924NWyvL+DVufLYQ1cU1AklGMJAjGRx1+GbrtzaOVzGEsjrx1aJfRJif32unJm80Ade1phq1ZtbIWApL7PdCda1zI6yOABIOu7wJEUA8mxuEY8OgFLXO8gBl8tXnoE7XRj6dsKDZBn/iykKxqNM8YqZzZ0zSJzxjsmJqx05CVfgWvybHUsZjZ1q7nWmBElYUqbH51D6/AKNa7D0d0yNYdmQD9xx14zI3FrveDjq1HjBTqq1zZzfAdfYyPK7XvLdnEcbrU3MbEopDrjXXLdrBZ/8485sbWAv366AWdx7gR3eOhADr2u0bHOI4P518c60cUdJlORSpPSYvDRj9axQdeQuubbWILTF514cBOu0iTwCE06ImrMK+pcczE1cvMOt8AOdzsLR9FffKBCNhLSp7mSj6TVr8w5FgFmxOmiXWLrZK+ury/Amc5GPUNBv1rOwFmGCGCagVN1JHXotDrWx56UE4OENWvKbaBvLCXRrTbfgmaa9NO5HvtAbS1kbYwKvubWvHr7kyDKOEBKQM0tem2PgOnNpdeG1zK3YwmYRV2lOWs9zTSgdra/6tbO8BkLBELr7GenPa7wMD+/2L55zLrjYl4sq9+TD812Cmn08jBXSccuNJtbV2qprnY1rCy1yikC6vreWvDeABNrAm4eMZKXkb0nPurWUrdleR9iw6QTBRt1mTmRk9vpAUpc3UNbbyO6rhZxLzzVgHy73kbIWub+6vQA3ye+UYGD5ey20hhngjrjwAXI3bSdQnyPpbWGLdAU5vNfUFOeTTSniWwpz6PlnJ8ItchmNjhmGRtrwOKaXU3adfIV3yinDzrgb8UuXZi1aHcDyy6dDdisujKc/pQAnYgT/h2PCXMRyaeaM5YM6AULh4qjxl1nkvdIdafyMlTng+dSQAC3qPGMk74CUBYJs4pW1nta4syEuTPbbXUhdH6aVPcHZbvif0FrV4IrYBRplq9L3Vt/CaW6Rfko114HFDIAA6uDxtGZkzZCwGTM5NnCaqSLeXBwsrvOm4o4WXAAuu2NBxDrPl1iavW2zqhqMzTmcdgkT6Ufw1A4AAP68kB99r1nOky69Idd+KtmXWMbdaG+mbHZ1OcQ31ipHlij77p8wADndUdEgBc7/kzJe1gTazxtYd8sXTn0bDBbu3fE9POddlBw4ZgbqqN17BXcrzoautm868AzJCZxfE1imYgCMW9Rstr28uovUJ9OfM6M9FG8brAVAHGBBbtZqyP7vBO+AZjOmvy73EZW5PTxwGrrt7pyc43BObGn3WFHWrr0s5+Gc4PGd8WjIjHRgznhR9K66kLru2v2K6HvEhVBBjgDZXARAhej6ns9eR4Ix6rWtZ4V3MSdcpof64ehXTUdfc13ze6FbrpTl1+XaewHEV2eanTMt0ZAFbk1rdcNut1LHKGrIuRkNoHZEfNusCQW//Lit112686mbQ6MG3WBFdRt19IoyG2aG3023WmDrOaR7tM6wteFusgamLiAYt1yIcNLObBF37S6AWdpYEfi62u1dBsPSGjRnLrt18xXY5BYhABFZYFH0gN17vIpjtWndMFu707rYUFnEQAqsDRuvwBn9TroKu5d5Ze1dLTPmzmzZAX4Z4YXQFzs9RBs7VVDrhB1g+o68pGCguE3XAiT8YyR4o3hIHOuu7XX6SjdV14wUzzdbGKMqBW0bDfF1nBa4HOb8NPStGy7r4Zh80AB7ddMV2nsAVbrtXGALnWFdY1OOonWf8j3pkAu3cSma3Sxz3Xxbre6ZobTVMrry2tfXXAIzTd1j/K5KiHqgs7BbOpzMNh+MZKzMAy2vwnXnYziJ12+IzDYZGuu7XWAudrQiIXANsrpA2PkbWZWjxMR9sq95tdbnM7pnolj2a1rjq651sCV1gW6S7rh91whaywdcE2stIXAC9O916O6xDYciOPxjIV7rJZ1quo4C4Fl2uZ3WlrryRsZXa9JtZ2uuxd6iujqnVk6C3eEbNuvz3W0Sj8YyKI6wztdDusyS7xjro14D9NHZddqOvxjJjpdwwuxO6y9BeBJNVU6WjrDIAOva+FQAWF3ZnXQnDJx1tC61KXpZUD7c63Or6Mlqhg1jJY6OOJ2Hw9TaQxnu1EAuelV3mZmkijjeukLq950eiX3HQAwurWquhq62yWf1V0iyWUFz7JJimCytiHWCvYLn/Mzup1vTszUhIiN37S7ZNE7MFtAXRmdep9q2S6Sjr6x17Pa3mdf7KOCwXnedygKeHa4WXBROsZUJ6rrlD1wi69XSEuTPFSQ0Qg2apy5M8Tok8at2M72nAAHR4nXR11ZqzPueH/1wCWunfPY2WYOPM6nGbRz7lurRc4odszbOZtm7Ijqp1mtXft1Zar3XlGBgAyp18u66TKY4eudq6ia1VTxrg7fd6WV2uNXWZurLVew7qzg+F0OsI9n1dTQ3gCHM5Habyl1bTB7IjClRmCo2/qc0P1Jkn5pd4Gupla29IRcXPOCA9uj6FRw/HZCdZSnMp7hYasQouy9XTVUeOWa3q7vYLQPVi3s5VnRis2DfGRcUQ45kxq59QFUXO9Z457jWpxgq60nTr8Ovjh6UczEwRhccwA9Y8Oswa729rYJ+kFYN/+Hpuav2xADmkJV2hwwWAAPOsACB0xdWqgbA62s9ef11k7muDtbDh25gxuIFkqPXy6GlzvQAM0bGAGZ9OPbPXMXUbYu18M/KID32sM27vnAEeuuaM8KucD0Mr+mqjTPR+2jY56wcl6uKPblbAD3iFRU8c9cbAATLncsLBClsOC41VqDusaOHszdx1RxM60c9YrL1oFWDDi9FGmN0+uVlA2txj7s4L4VRmIo2rtUqiMTJWsDrRxRszXcGG3uZ2H7Wocgh7e7tY8tNddDixiBKIglJu+hUzg7vXF1AHWPFz7xiZYXUTXq+F3mOXCCAgj12i61Duepr1eS6CDrKAgIVI5CVeVuATV6PNdwo53HgArkeT6t3sH8dJkdSPmvbTnuPON3sHwqhGIcTHXR6tYL6ufsGqY91Wukqre+dcsVx17WEtd3MgAM3RrdY4dIkJJIIrvWutB696tYAOtbqGU9rTgRKYFSDdZ1UBq8AcHdVL1xMUItrsIiuWnbatgGB1+56/q9cgAhcbXmaAlbpyPY5zteAiNLJ7djI2guo2XerLqwuSubVwzDQNRjF68fmcbnMPHUU7rLV1jRfO14d9zO0ZGolzzrkCA6wAIDAH00m6DszgOuzc3c+wDKyxr8ArHNCW19MXVPzpx2CBvX5td/vG69nUt7rh12dSEvlLEU51C2FDLM111l5m3vTbb1n0LQcdfK+Qux7OajYiFuAs3loQBUvox6PVzmWV/ba7sHFiAD+RWwDdCVxgOXeBAEKuu7PWptr92ceva+/HB0/jrGQqCzKD1wC63VtZMQs0DWHpTfPR6vQ5i4c4LMPbX3Xrae15ga+l8fV10Y+GBNwvxV1qc7pqfyuOSFn4rjk3O6Jw17UbhUvmk7TtrRvppJc2Bzu25P9XXvVz6b1rt6x2ufkGu4XbZtr13ZjqK0nVtSQur9mjjr2+11CXc9taWWOEvXmSjorh1iQJxHAb7M9tG9BrQVuydc0CtYVN1ha6aqjxdRlwsygMHzr0V1GobrQKu1AxDA9c+2s4LWT5y0gayiIEcLuCUOFRmQDrOz10w3TdKe6XMZ5HPTruD14MPd2Eb+isrhGlLrd65q9czzThUuttrXh6jwQ16GKydccTuu5FmRL92d191w4UWZ06wXXX4hr/651643sheTJ1k7X17rBEyfOto8ztPqNtFm7NzlN1kJs7Rkb8us+XX1q9gg+mrk5qpca9Y7SJ4nrS45pNw5pdal53BNHqhresV31XbewGf11KK6XTdtql8a62YztWLPTU7HBAFgedrk8ODP8aPj5HBPrm5pv53TkYGDWtQG7Adr4z12/vQ8KaDqbbLWo1LctJhMgOkkbwV3T3WVhrWBukDU6aIDmGv4G6etrkcepu6yerscoCpfWTNr6X1huAOsNfm51n86B3DYm5x2KwI1owT0XogplTWtx+MZII0aYqObOXJ9r3robo3fmpYEN3wl6SFrUN18tS48Na03Nz7VfbAP8QOm6119Y7UtLXbG1LLBe6eUxk9YNl3loA15qhO14b64Y0aZLNjfW0LTGj1ifY/E/phszJkyqiQHm5hRcwAIaPzQD7X7mdNC1q1C9zUb/usqnXZDr+l116/SJaeNWs7PWpDrvS1geK5FucC+v/hnthAc6ljdszm0ZFyOIvXA0LlI1lJo6B4ZO3M9yBFzrf25go3ZGhZO3PovXujrOa1567UoIfuDT4XXE1rUx1vh4yA3tJP2nsAeRrbpZ9dS/yNeaa3YnWvTrjW5nGBCj9a++swZ6/vrCW5yO06YdaAesyjXRjdBq4I4owD9Zx+sQ/WaudJ0i8m60S9ax7PJlmBt95UZ6N69CAH/pNXk65b9L31kxPccboy2s871VUAmAAAAADd1vWeSjRZcVXa/I9dB52YbWdmjIuKdMXdxbr2uu3lHCPEnOhx0azStfR+vvnWuyzrP1iywOz9a5+sl973pTlyu2HoxigH4mxtlAKOd3zR4s3Up41QD0WEpIxrnJusYfcGleA+sStmSTdRPunu6zSbtOT0SAB5fr6Y1+Hc7nfqEow6+AkdzGLRkBvYJda3Ws4c7CxrBERhDC9juYjb3y0aSXrmh16+Yxs9eJetCJXVTdFW1tj64D9fm8McW7WWjaMQeQAOeGcjqT/FlPlje3Oi4AIV7CbV1dvWRXrg413G0xykf9+vUSA+WdvaZwKa4hWfCd2MdXc3rvR1w0QC37EhKvh7h39rYAZ7Cs7yADc+tn86779smiSEq1dXv/OOSvXMzdaOpZN67RscBKMc7gXmzTP1ro/aTdeN3PhmHUQIUggYxU7j4bLutY+Gefi8O+00QMLLtUXOQnXIwA714EXI8Lua8l0+tGPxrfrRi3awOBHXaTgaCUgA7C1wIfcd9b1eu/a7JpkPm1yc3XvtdVaOaVmI9zS5unSs9HuYPCI37WU2jmjAYys9ftb2sO+vXryzk/O/c6xtrqg9GFtGNAkkkjQO0x1oY29lUPX52j4P1pna5ezsikzN3WgBdH4AK5o41ubR7Oc/XufrrrjOvcxXcYeOpWKdCLrAP18IXSLkf9+teS6joaPh11takD4aeeOjtHCei3u1kv6ylOchuslXXBnI/vG6V60T2byWu//X8NrS11nvslvcen3Oo+GKPw6y4PGM7kbua+vUPXkHrFLp1/aziYBwF0wcacHdg5ySikH5rqq2uaFxI/YtMRh4ANYAAAAAThXsf5OJk0Zxb0vtGlFd54xlr6yUInDXP7RHtkz/l1uHnaVtZJ+sHHnuzNUUkJ3a43UeOWalVGxSz7WlhFK+dcz0uuR1JG/rFrOrjXUC3IEgQSvHjLdorWyx64A9ZJ+sjPWAzjKZuxsow9UYO3OdSF119K3J2L8ISDjuePZVHt9rwF1i0QFlNfgPNAOmjXj7fJpPAPUgXuZ2GnWEPLlrxoQHQbtZPuvSrhv/r3BACYq/gDbUSAq7XAfrCqVl141VNfO0sPvX7adLJ16LQ+CyfQdPj9b7FrQuhn146Pdd+XAPM6Mtr3YR0UveLtZySPwB6Cazgfh/EY89pYTa2vaXOprz5e7qaywebodMTbXXSjGPh3vw2NNdzp1fvWBFrC7pn7S6tzs5p1Kv6RFrbC1h4AH9pZNSvtA2KHTlaJgaa+9MY22uT7WhgbAC1yaa86lY6mudS6bzrkU1yVhd+WeuSNeFw0Nw3fsXEU5vod2RpigMsqjN+19aa7RsaOt3JSnUJd9eRqL8HhuAFxDudGlazhQNm63arWcyus2bQNgbx+1x3q1voYI2tdSGz/DRjpyho8LdccPOdlbnDz7Ol1w88MDfcPPg26R8zXO1+aQ8pGnPT3+zm4gbSS112s3GNsZtgHvHLG94M1rXffjbobSLQzX5JohrZ8m3SHWbRBtNdHrWdC11va6wzbt8b3pLYEnTq6VjEG6ouaTrO9i4U6zLzu7YLbLt1m+MZ1noZDyTdE9KwQtfM6MaHXcfrPOFrky5zsYNt3tOWP0rQvZjfoxM9ZmBt8LWBAbadl04tBLhZE60NsmDbdPIN1ha3yDY4Buk76lcLLAR3us92yf5muTHn6m9pp1qz66LNZHZMYf7ltrVn1piANLNeZ800LWljzK91pBa4rNYVkMbp7Njzas1xYZDseYpaOYUpQNrQhZ3WU18Dfe7OI9HoXrMt1pRU+XbsK+uCbWXlTClu3ksyp8frt0fpoU+gTx5gPraO/oxaNmZ61irXu0YF01joA8WsezWQwbMRusF02kmzmFNMZX3AjEYNyno9o5lW1ihzW/Ajxn+lzPV56BAiPRzXkB9VdpxGWBGDbxH0QL6b9Luluw4wME0Yf0uw3GBLgKi1lIIx5Pt83PAN6c5rJze7II8XhdXt3XuAFTdywNjd62sDc+Ou1HWqDriZ1zrACxFiQMs4nnL7dUhpsB62zkceWPvZmJ3r1OiJSAG3NbSBtglBTejMlCG7qN9tYc6AUGWpMr3DZmTK6KeYmjDMnnpwb/vGlqYKwZemp0SNmAerGIgRW8Cnadl/jwvJtqdOrpqPw5PtZFOKjrgcjAp7AXHqrxZEoCxMdm7zrGpx7ea5F9bBWu397VTzJ0i8YghqeeOp3HzWn8LHoRJJnYEEkdOsyxGKDruIpnx6zm0Y2MhsvWAQbNwRhOnbbQAfmu++FtgAqVcMxnR/hfnUPnV4Q6dJlkDskHstbKz32cmsugTS1jKhNBDckzh3HWUPr8YyLD6zxoZHAzmKHr2EwC1jriKAtaiMvCO7AAAPTGAAAohkAAAbcoAAEUGKBa7W5kAAAfZoAAHh9QAAFYMgAAdQZAAAYwyAABahkAACdDIAAAmGQAABYMHENwAAGYM1EN+iGzQRedgCAABBhkAADHDIAAB+GASG4AADsGCSGwxDZh+POwBAAAmgyAABPBlEhuAAAPBMAAB5RsIRbxC2AABwSMAAAOpgZDeaMt0gAeIbskNwAAM8MgAABYY+IbgAAJIZAAA356AABVpRZCOAABwJSohuAAA15Sohvs/HAAAzQyAAAVhnkhvZZWusaIkN0SG4AAHqGQAAFcMgAAYYZAAA6wyAAAdhnkhuAABJhkAAAeDEFDZChslEXc1jn+AcKG9FDfihtJQ20obGUNwl7bW5l4huCQ3cobsUNxKGylDcAADWDEVDaX/1svbHetgAAWSVAAARulVQ23IbaxFgPrYAAABzQAADMBLUNtqG3VDdaUPPumOobzUN1qG+5DdOIszZX3gAPUNkaG+hecAABSSoAABM0sD03xDcAAD9DIAABKGQAANcMSkN2qG6CZf8p1LQ21obKkN2iG2pDdwGN0gBAAAW762LX7rmXUNwAAPZmzbewAAOoaVENwAACYMgAANwYOIb6JFo6G0pDcAABUmoAAFUGHnPS9DcAAB0XoAAD0M+ki87AEAAD52idDbpMszt7AAALB4gw2vsrTKWwAAJ0OkMN8f47ANsAAAODIAAEiGW6G4AAFkGQAAAVKgAAbDtwcrzsAQAAPAJgAAODNAAAZXrQ5W6QAvnjQAAOraSkNwAALKJgAAO38nLzgAAJcixeTgAAbbUGYbI4RukAIAAA45CwYy9DcAABCvtDDYaWucQ2icrzsAQAAEfugAAB2UTTL7wAOyG5lDaTIu1uZkobMUNgSG1aZfOuaAABIORZhsYqHhqdgAAVYZAAAlQw2Q3lIbgAAck1UYbn0Nmsiy7yfeAAaw2tYbSkNv6G4GZbmWuEd6X59JHe3z00JDcAAAWEYAAC5PUXK87AEAADSRoAAHnjVGG4AAAqMnZa4AADszQAAFgJxIB/yGylDflyuAAB4HW1bPeeNVcrdIAbWG9ctcAACeTlHDYr5PvABAAAmwyLQ2bobgFFukAIAABzTSGGzDef+Wt3TlAAATb6AABs4wOhsGd7AAADL798nXobZMN5r04AADPdQAACPagAAbQYlzL7wAbzxoAADpNWuG2uZcAADPyi3DcxWs2M7AAArpavQ2w8rdIAQAAMbWgAALo93ATgAAIoZFIbMeVwAANT2gAAblcvYb4lF52AKrDcAACFDGtDcAACwKh+Zbli2AAAnIIshv63nXu91kN+yG3xDcAABQcoAAHMGQAAP7ygAAClduVr91zXeGw5DaUhsXQ3kLLgq15nzVfDb4htKQ3XYbU8NgkY4AABuGZaG4AABOGSWG613sAACzJoAAB15OVayr3UAAAAURG4xCiNKrX0xtgAAR0VAAAMCqAAAL30AABjaZlRZf+a/gHjIbgAAX4j4fTgAAQkdAAAMhkUCnl4bDUNqfK3SAEAABCDGxDcAAD6DEpDbwRul3mOPddQWw+G//DcAAAIRkNRfeACAAAGhlWhvyQ24obgAANGVPVrTCNlhG+wjcchuAABjyPmhvyWWtC9dIAGBGwgjcAACgAWflaYRuxQ3kobjkNh2GxdRZ0i2AABLhmWhuAAA1hnkRtRQ2qobgAAX/j0YbwvpnDLYojZURtRQ3AAA0gxIw25obXllmEE8g4d0RuqI3HIbgAAWqjAAA/gyAAAe+OsRveeMS1r5iNqKG45DcAABDyoAAHNHDSG4AAGiGKta639sAADtDPJDZshtWI27EbDiNskEzTDaLGP7w3AAAw8aAAAJBgwKuE9FAAA0HIxI3cCrFcNpJG3VZbxG2tw3UkbrVl1oU4AADI/QAAJ2mgAARBUqobTcNzJG4uta2suAAAqKwKRtFI3G4bmSN9da8NZfeACAAAWG0AADOepUjcAABgSoAAGNTcJG/g+cfOzuF7AAAQeqAAAXt1aRsdI3aYbuMR7P0w0jeaRuFI3AAAs8qAAAjuIjou2973gA/SNypG9MjZfWtWJbAAATamAAByyMAABHDEHDdUKvCI3AAAkOYSPm6QAgkNwAALcM8kNiKG4AAGqGeRG/JDcChsxQ2zkb8kNmRG47DaUfM2RGLob68N65G7cjfuRvIbXnYAXEN+SG4AAD2GJSG15DcAAD/ZrEjabIPoTGhAdgAAaAVAAAXXLOI3O6L8ox6nRFCjdImOs2X54bmsNgSG4AAFaGZaG4AAC6GRyG4AADo/UOGyzZdcfN0gBjYbKKN9FG45DcAACHRnHDfYmN5dn3gApUN5SG3ZDeWhs2Q3kob/CN3ja1Sjcchv+Q2bIbXENwAAFMMVUNmlG3SjbyfNS2X269Cm12GLVFDZshsRQ3HIbCCNhp84KjeFRt0I2DJj4qN5oq6BCfoS2AAAZCJFRvwI2huzcqNwAABUMgAAcYZAAAxQyLQ3HIbXMNwAAGFyVtlhC0zbZZ781HI2YobEUN+Z83SABNRsRQ2GUbdcR0/ptpDdEhuWo2HbLdqNpSG5ajb4RvzQ3jnzB3ZukAIAABtFQAANGpgAACDtrEbZop5RraijeShsSw3HIb3qNwAACIMJCNwAAH4MUaNqqG94jfdsu2+7PbL3fuqNG4AAAMGEeG8tDa4huAAADhkAAAyDJojfehuAAAYhlEhvho2o0bNcNwAAMkMOE2xYvanFsfhv7w2lIb6aNrNG45DYMhtiQ3AAAygxNo2NEb6MN7xG/ojcAACADIAAFO5eJG0pDZ9RtRQ3AAAuwyAAAOhgEhsGI2kYbziNxyG7SjcEhvyQ3VobYkNwAAPIMKaN96G+GjcAABADLj2ZmmM4Zbq0btaNjNG5mjYbRv6Q3vEbQkNztGy2jbbRsFo2o0bGkNtdG8HZaFfMHLNH4bSkNqKG4AAG6GWWG4z2bwSNGw2l4bq0N1KGyqjYiht8Q3B0b48NloMzsFqnhuAAB5hSUhsfo2v0bikNkpi87ADwRuOQ36IbokNwAALvygAADW01trcUOvKG5VDeShs1Q3gobpxewAAH/OgAACnUlIbi8NtaG1VDbgxsK9mIMbUGNgjG9NCfeADeo350bV2110M+8AEgRu7I2tPYSkN7yG4AAHT9XZi+8AEAACRqYAAA0GHxG5cGaHbOgI2lIbW8NrRI/9tZRj0so2uIbNkNwAACMMUaNw+G3xDYihsnI3Vobh8NwAANxGnGNinQ2ASVJRuOlX3gA2KNnN887AFJRvAABsUbjkN+9G4+jexL0U873gAgAAQ4ZAAA0wyAABThklhsQhnAAAMdr6o3q3z7wAUVG+hKbpACAABhRSqhuyY2NIb1Je52AIAABCGKiG30jaehtwoHtWtk6N3TG3LDeT7O4wnnYAgAABtMOIb4aNwAABcJgAAaR1HIbdCN+NG2TCbHfNgElVYbq0NyTG1FDcCRt41nAAAAwynI2tkbyUNkvs+8AEURsCQ3csborF6hncrdmKxuCSnH5t8CN7zxrljcchseY3AAAgQwKY2TdDu8Nu9G6tDeFH2AAAI20AADdylboeMRvMdWTwtPqNs3a87AEAACACYAAEP5XSU4PDcAACxUSOVZDsvxQnnYATaNpSGwAjaqhuAAAIhkAADGDKJDcfhuAAALRU88bZo22sb0SNs9GyujcWxuAABYhgixuHw2NIb+iNwAAPj/fu1pvnQ3Zeoxu0Y2jZAcWN2hG4fDdRhslo3S0bh8NjiGyQjbXRsmOX/drQYZhcXTRjcAAD3yoAAF+AtiG+KjfuxuPY3nsbr2NkhG3igACRs2Q3s0busNjSG4AADkGM9G3ntY/7POwAMEbgAATqU2IbuGN1aG8EjdsRt1Y2wcbb2Nj7GxCkdycu4bbkUb8kNiWG4YjaUhs2I37EbVUNwAAIyagAAdVMOIbUaN/HG3hVZb2uzl7nIjgAALy8lIbj8NwAAPYMwGN79GwJDdBxtlo2CcbHTlgdPUhjYKhuoY35IbAuNl7G0zjdr71bwmmUtaqN+SG9qjcAACV+oAAHflSXG+DjYJxsr7W5nLdIAeXG4tDdrRvxQ2TkbyUNnnG3SjZExvyQ2VUbdKNwAAOlmyuNthG0tjdWxvQY3AAA7tEFo2i0be2NuoLSTjYlhtCQ3AAANN4Kw3REbXONnXG0pDcAAChioAAE7tRyG4AAGjIrxG02jaEhvZo3JcbBONqCM0FVdLS2AAA0TUixuAABntSahvY43AAAAQyHo3AAAR6awY2NobrKN0TG9mjephuow3AAA28aAAB4hioht7Y3AAAWb5yo2Gcbp2Ni7G8gde84uzfmBJ9D6NvxG4AAHOGIJG4AAB0FQAAEbWB6NztGycjbORurQ38MbsGNx3G+Gja8RuJ43s0b+8NpiG3rDfzRt7Y3IAAIbjQAAMr6S2No7G+GjZOxvnY3jETveN9aG4njcchvQY3AAAgMZvY3w0bgAAFg1AAAECpc43O0bTeN1vG45Dc7xs1w3AAAWgxVQ2VEbgAAMoZAAAbQyLQ2lEbjkN9jG6JDcXRvLo2V0bdVV+NbanFrrRu7o3nEbbaNtXG29jfkOuVDmTwtziNwxG7/jcchtzQ3ACbJCNsaq0h5dWF1zpHQUbSkNxPG4AACN9RyG//jc0RvV439sbi+N5fG7XjZzcujDnbDrKvdObGwBjaqhtc42ocbOuN7NG4AAGoVKNG4WjfDRtsQ3w0bi2NwAAGIMJ2NldG7zjcUhuAAAhMyqhtQ42lIbgAAafU6sb9iNxyG7sjdRxtVQ2Gcbb2N87GxUQaOHNxja5sby0NwzG/JDeHRuY43DEbUONxyG4rjccxvQE3ueLcNV94AIAAHBjQAAFnaBaNkhG0SnoUJuBI2p0bNkNvnG9ATZXRuAABYOX7htsQ3kCbLENw+G4Qja8Rtdo3BCbbEN/Xi/kYfIJtUE2aCbz2NgnG+Q3snRudY3MCbc+NhfG8djZrxvl/n8Rz2rWmv84gTYgJtgE2jEbs0N6vG2ITZ6jO/Rn8PLluNthGzxDfkhtc43mdA5MNw+G2xDbohv5o2EYbbENsvG4Ljd0Rv+Q35EbCUNt+G/JDZbxs2Q2ucbaONthG0Pjb2xvK1XoK9tKNxaG/JDcAACzDLLDaqhuAABS43LxtVE3BcbQ9qQAAJCagAAF7MucbcGN09G2WjcAACA/3x5av/N/HXnYAyKNvnG0PjboJuY43rCbzBNu2q0RdoAxuOQ3AAA/MaAABTRVMJuAAAY/UPhuAAAghgYJuAAAAOUJhuAAApBkAABmURxDffxvho2farC4uzHGzDjdRhvw429sbgAARijfsbBaNrxGx1De1huoo20UbXON8AS+TlsgADzE3Y6r+AFzDbWi3WkJuyE2Vib6xNp7G2WjfVxtot1vkbpyNkeG/FDfKJtCE3g8bu2N89GwUQcS8to422IbaLdX4m+XVdLHNZeW6QABRNoomyUTdbxuu43Wib5eN0wm4AAC2GYEm4AAFjFSnG9YjbEhudo3dibBxNk4m2cTaXRuro2s4zxgFukAJOjcpxu443wSb0uN/GU9OsbpAB2Q3TUbZuN5KGzrjYThvyQ2+IbA+N0wm4AAHlVLBG9mjd4RuAAAvGw4ht0E3D8bx+N/+G4AAFtLRyG9TjeLxt0E3GCbVUNtfG1VDcxxub43YMbC6Npkm0LjajOv5AXIMTpOR52AI/DZuJvw42vEbJCNurG52jf5JsRQ3BSbwpN0Um+KTbBJtS433sbUpNmUm/KTcVJtH43O0bqpN9Um5qTfoJsME2dSb8kNvvG3qTdfRsGk2jSbH+Nn0w/MBbATMTCW0JzLwl6ry/VLtq8tVbGPRLfGNvjbUsTbWJuBiXnYAgAAS/dkCbIYlwAAE4MHENgsm9ROYUD2AABVS0AABhilGQZFhvIWG+kbkMN5aXS/DbWl1Uo3ZtjcKNn/vS/DY2JvbE2z4b3njJSGybjaxxuNo3o0bsaNhLGxd5c3m0kk2bIbuWN37pItDZihvSQ3AAATGkd42+UdA5NlAm7ejaFRuOQ3NEbwAAHom6FjYpxNtY2OIbgAAFoZM0bNOJ52GyoAEAACLDDZDeMxs2Q3GEbfZN5K66j5acnNao7H4bACNnK62ajoMhu6E2UCbVUNwAAH/a3iN+8m8C1bpAAoE2UfLELVmq6+8AEfhsuQ3XIb3iNkgm52je+Ru342+IbgAAbYZlobs6NqNGyQja5xt8Q2ySbfEN0NG4AAB6jBUm9mjaRhvJQ35EbMUNxhGx2jc7RvOw2+ybjkNs+G9Xjbmut0gA8obEUNg9G2ZDaUhuAAAgDOhhuGI22IbXiNwAAE9mR0NsNG4AAGnNTtG1hTZwpsHo36ybYYF6XuuRTbEhucU3GEbmBNwAAEdpGkNoSG3qjZIptvAXAAASwxaw28UABkNwim8RTdEhuAABvuUAADwhkpDb3xuAAABI0chuZY2lEbq0N/im6JDaZRuaI3vEb4eN7Ym6Djbcxva+WmUtTKNhBGyBTePxs6U29KbsUNiKG3BTa5xvuPgkibjkNtCm4jjexutDgXvDzkAAJIm05TbOkvwpmqrDrlNtCm6JDYQRs6o3dUbklNp1q1nsZpusdQ2NibSkNwdG7SjYEhuOQ3yKbeFNlVG3xDcAACNDKwjacpvuPg3KbYkNiSmx5TdBK0VpXZdtOVNwcm3Gja8RuHo26YbhMNxyG4AADYlQAAAppxlNiPG2ZTb5TPvE3HIbvRN7zxlVDZlK1uU2xKb2SNspG4AABXrRyG4AAC+1LQm2ZTZXRshPhOqbQkNpuG4Yjeapu9E3Gqb1M50zLR1TcAADuqWhTYPRuAAArwMAACMrlVDamps9E3hqbQ9qCam0jDc2ps2U3by8jkNxamxxDYipuvWHAAAe2pTI22qb5m+oKm2JTYqpvVU26qbYeNhqm09jfMptJ3Xdt9/yu4qmzGjbspvJU37CbnaNg2c1kABypuiQ3oYbiqNiKmx5BeruurVq0GIN1NoSG0DTbmhu/U2Qd9h8NtBG2BTYgpuCU3D4bfUNwyCyPddWrXWU2vEbQNNgyG4AAAh/jqm2hTcHJvw03zIb+kNwAAJD/naNoe1CE+CCpvoU2kYb31NoSG+FjfDRtA03NEb591lXuvpTaWJs0w28Kb+lNwSm2JDeapvOw3XIbh8NwAALRRWhNiKm+2VeWpstI2lIbk6N/rG13OdWJOudbsqbwVNwym1ojdsGsHEm5ijOVN8vG3RDcepuHw3BKbjkNwAAIlGHeNjiG52jcAACPtuGjYMhuOQ25UbxaNl6m3RmfVsxKAAVabatN8PG4fDbmhtQk2IobuhNwAAIGRgAAAl9HIbzmN1zG2Z1deguEE2lIbgAAfSt/sbx+NkR67/OdfvB6ZnnCAnRx1WG/IjcYRuOQ34YLTDBsjvVVDcFpv1U3D4bghNqqGwxTYBxuAAByA2zRuEI2y8b56NjmS4fDbvxv3435IbSkNwWmy1TZ6Js2U3yabWj19Rgx5mcgABkk3h0bbiN9xG9GTeZJteZm1griXV6mCwrJel7pxQ234bgAAZYZzMb9yNyXG+zBatJuw42EcbSJN7WSzVXpkpsCQ28UAHUN7Ym4AAAME8NG67Tcchu7E3AAAiDocQ3AAAi/GAABTBjohuiQ3rEbb+N40m8CFYEXORPXnYAKqNy5G9mjcAABeboAAHxXEQm+9jbpJuEw2vMbPmN7emx/jczks103HIblJNkJG94jZXRtZPWG1dDeO5+m/YjezRsME2o0b86N8NG/ojd9JvH43M5LgFNnwm07jY0hvv029Dt1+pptG/mjaWxtUQ3VSb2aNjUm1PjY0htchXOnrZ2ZwAABrRgAAUiVAAACtpAY3Lkb73VjCo9mjcAACIRoAAFAGJSG34jb4htZo3D4b6iNwAAIexp6N7km0qFbAq2H035IbVUNwAAEWp3iNqHG4AAFGDQAAIwajkNigm3Vja1Jshk3AAAeumAAAOPSqhuAAA5Q0AACzifHTaFpuM43L6bHEN4hG2QjahxvZo24obiiNkUm/zjaAZudo3AAAg54kI3AAAhgw4Y31YbJyNmEm3FDcchuAAAcS0AABwUQ3TZXRuZyW7IbjCN7hm4AACkVWSo5tXqUhtsa6qobvaNpSGzwzeZRvBQ2xIbqkNu+m8yTb9gtca6uCbgeN+Xq2oTsIUvOwBAAAa3JKQ3wUbiqNnsm4ozaUhtTw2WobgAAbaNAAAofpiQ2REb8CN+qm5HjeepsE43myT5uZukAHNjdPxtlE3BSbJuNwUmwkTcdxuHE2qIbnaNl+G4Hjf6JsO433Cb56NwAANIJgAANtVXcb8kNwxG9sTZqZsIk2PCb54VlPq9lVsKZtsU3hybwSl8m3f0zb1RvDk3IlLH5JtFc+kzcKZvZo3k6bbEN1bG2bTZyZskrn0lLdIAeJG4AAAworT2I5DfSZu743wUbVUNmjGw3TcAABY/wRFY2NPDM2YobpRNsKmwejcUZtc42WEbmaNwxGx5DcAAC1pqejY0hvZo2e8bYZNmTGwGTdVpuPU2smbe2NkZm+FTdEhvbE3ImbhmN+yGyQTcAACO+oAAH/0rnG2xDfnRudo3AAAqPqow3y8bqMNmBGwGTblRsME3w8bXzN4em+WzqR111BalIbUzN05m63jaqhuuI320bPiNx1c0fXuHu3MM3Z3rNZ+zyK87AE1RuSY2B8bK7152AGQTYVxuOQ2NibhiN2lGyYTdRhteI3McbVUN1gmwJDcwJtgqXksbr6N1KGyRjYhUtGNa/sbgON6VG9mufFqM2I3fIbgAAIB1T4b4qN8KG9yzf4Gt0gB5WbYkNxVm5B9fNJ1Bx7AAA9wynI3EKbrpNxQm3Bjd5ZuQfXHatarN2D63NFZhRtJmJ03EXLNz9G2yzbxxskI3cPrHhu9OvZ6jZYhtKI2jkbUdNyxG6njdMGvvAByKbFg194AIbTb4xvNBX3gACUN01G3xDb9xtKQ2/Wb+kNztG4cTcWxuAABnBkEptKQ2dabZ65ukALcjaURtvY3aybNce0S7cxTYk+tgElkobPEN0zG4CzaCxui8Ha69zsAL6mw5TY9cOCU3gaT6qNrVG0KpeqLMiqXgNzWQ1ukAFSjaUhsII2ULT8iNhOG+tDaZptTbnnYAZhNwAAO6KB+Nhxm1zjabRu6M2kYb1yFwAABsMq0NuKG4AAG+Gb5G2ZjZHhutY30NzTlN1oa5uVpFhuOQ3AAACr4H42FSb4aNkL6+8AD7JtCxXLSb8kNgqGy3jcUhtnI29MbYw1yWK6FTb1RsqAAqUblbNxaG5l9ZV7r002FUbmiNy9m/xDYEhslfWx2bcUNgdw7IjahLN0gAnUbrtN7NG4AADnlKNG14je1Jtoo35Ib+5NshPdlToMhuu02qobIHNsDm9iWZkaPOwABybEBNy1G8AAEtRvWo2Phrhm5ukAI/Tf3hvxI2pobs31gOK+xUUfpsVw3W4bU0NuEa5e4Y60sq91QGbXWN/b6/tWYlpveo3k4rATW3/G6vDdxGvuNa6EboiNpjmwQIcBv2bV7AAAZwzyQ378b7HNrS0ynFaBN08c2+ObbW55xG+xzfnpPOI2lIbgAAGqj8YbyjJz62KijYLZu1NHrvrzTWw4m3gjacpvCc35Ib4nNxkayr3TiZtic254rBWN5RG6ojaUhvHw3w0buSNxyG4AADAXXhG94jbtJvSc3ZObU2588nakbsAADzDHSjdWhvKABVKbagAFdGwcTa7pvmY2lIbdpNqqGyNjeeJuHo3J0bCCNmam+XFcAb29J7HE9SkNjTm8vDZUADuc2V0bjiew+G3FDaORtbI3Sib3iNwAANlpVUNiKG2/DeHRuyw3vEb0TNwAAKfuq2Nw4m/OjZs5vbE2lIbJ2N5RkxCjaUhu343AAA5QxKI2FObTlNyJmwpzdShvLk2IobsXNlSm7b9fkZP2/XAAAo/qAAAIDMAACgGYAADu3ZRk44TaJT2OQ3VibgAAbKUG6bWO5m3Xb2jaqhv8M2vEbk6NwAAAvGgAAL8UG6bNLRn1G5JzaHRujo2oobxy+yJm+CjezRv/w3E8bVUN4+G9EjaA5shk3rObdWNirm0K0YS8POo6OobgAAXCUqobk6N3mm4fDcAAD+RuNje8Rvdc2nabmdN7OmyujcAACE1o5DcOJs2I3zibNLRwAADUMy0NrCm7Sjbvv0jY3vEbDUNqqG52jdSN0jw2zkbt+NrWG9mja+5sp03s6bzzNvrm4fDa5xtZ03umbS/14xk6tzfqptwM3O0bziN7NG39zaUhvxI3D4bPqN54m+HjaqhvQI2VKb1eN/ZmzS0dW8OKI270bNkNviG+f9ZwwC3Q2o0bVENwAAA1ROxN2qm5CzdO5tlU3w0bKLNoSG9dzd53Pd+7AAAICrOI2hubx+N1WGxqjdWhuLQ3BUbjCN3zm3VjaqhuAAAbp2WpvkI2GobjkNrfG7dDa+5s/c29sb7jN5xG7/jcoJvUE2z0bXE1zAG87AG9RusU2bKbC9NyFm0JDe2JtJQBbob4tNwzm1FDaG5t7o3pubMmFjcQ9BXsAAAXNipTbkpv6Q3dCbQ3NpSG21TePxsaQ3D4bVUNn1G8AAEAACpRoAAH4vf1G3bDfthtD42vEbZXN43m+ejazxvu829EbHmNxPm45DY3JveI3D8bSkN6xG52jYgJvkk3E+bVjN7QG/CladXMq91J0bI2Ni+myFhbpAA4pXIAA70N0tG52jazpvZo2hIbDBNwAACoMgAANQYFmbunNj3m1zje85uF02/Obq3N+hm+9jcAABtToAAEGbVcmzQzeGpveW7B2bSMNnwG9i9ZkkP+A22SbHvNnTGw+jYLZsFTXpptiHNndG2gTY95uGI3jEblU1pVK5x0cNsv1SAIWT3rxqFk41NY6wuDYXHtLPWFgh03UDYk6MPaWpOjPU15oG95IeB0sCHmpG9Q0161K7NheprMdA37UrE01nlGlNNZdSurYXqmbAeNo3G8lDZKZsW42rcb2aNwAAL2m5TNypmy7jdJxvyQ3s0bgeNkPG49Ta5xtR43lJzyISIDG8bjdNxtwC3rcb7DNrxGy6zcYRurM3AAA0XK5+6epDhGOiqm4zpddpu1pXGBbgIN52AIAAA2s/WG/bWbpABQ42lpDBkN/1G0DNZV7qCQ3iibw6Nr/w4AAGcoouG4AAEdfQAABBRPDNkdKwfjckFsa6WJYbw6N1vG/DNbd836U3NobqM1865oAAEolU+G49jboJuKC3lBb5INp4LYAAFE9I9K3SDZHD3oE30YbjfN7Zs+8AB2htY42MobF9Nk0m3gOZlfCi43qobm0N2D4xQEZ5l2szXUD0sQCaOm3q/rmJsuC2UMb9gtuRmxBlf4SBQZXCPjAs1l9G2tDajJtyM2kMrgsh5prdh/oHxtWC3vujAFN2yGw5Dbwyt8Y2rcLOD2k0G9isaIpunw2xIbgAADWU9ibSkN12m+FDdUhs/U2h7U2fNq9m5qjcWhtVQ3VIbQn+z504/WdrcwEw2AXTr126PC7p8aU/1x4XGMrELptfS1T0ZhdP/HnR7dnGVmz41nhZA5NgnmeHtTnx6sG9i6eEys8y6nUbOuNrnG/nTdDJt942BibyDNoXGzA7rpdN0gBAAAx3Kl42qob0eusNG89TZiJvUGXFHt3LNztG4LTc7RugI26TzJb+gea0cLZOFuAABdBiUhvhM2NwbTXWzLG8tDZHhuMI35Ebu6NwAAIQ++QtqqGwTjYUyt0gBCKbukNl7G+7DdYpt1Y3GCbIxNtLPR11sPZsCQ3j2bwkNt9m4fNc1PPx9HtTzp81izk5plbW+MONmnv9WN25xs9w7vz4okQ3O9SnjZiIyxZlY8e2MQ2g3jPWeutm+pDZWUP8lBAAAjICAABXwApFtQSnAAAIoCxbUjIbZKliha/lnsd82Ncn1NdXmXOjQzpAApFt490Ts9Fzetc8/sXrt61SLX2obVme0bK2VTtAGPMOmt/NxfW94AAAAGWUXwMgAXkW5UeYWp3oDHrqdMb206G4JXrYAPokWec9AMN+ird82cEr1E8nywjyS1qirQ8/XLJ34DanLzYvJnFsxYMYaWsCw3hK9yrux+nWleflhuszawhjSR4YxYJAADzCPHZhGhrbwB82G5kNqdhuo3bWhtxIB+XK9q2YjhvUPb0vTKw2hsy6nDaDQBZw2NO9TwW9Ci/3yea9P1w21zLm5lmii0GgHG9NkqWSVrwFWtNs8t9oTyuJd6a+A2rVyTYBSLbXhtYV6ALLdjZovKzZEbvhvlLaCRjUq15nzTaZYrCstxomC9Q7ZvhWC3ld9C3cF6tVrnIx558OiPG4FO8/aKBT0i0/MWwQjaIGMUi26RbFIty33dxZcV+0MI3OEbR+V5EW/tRZsL3aQGQM9W0wABwFEFipFtUC6FWAPIt7RGyeFqoL7jMAgmdUd1IZqxSLa4XAFgRGRb/nu4Gi8D1bnFubi2cndaXO1vvWU0LM6klrX1xb84thZgL9oApFsMoAKadCot3xG1YXvYm0pi2LfTb4tmQDHD0VwKuEFWws9btLdwvfQVbD9P+F7UNDdSNvgq/+LZGRu4A7ZkbxfpxqnbYrj1T2Pi2UJUlJAQukI0NZzosWPh8IjXBqA5G4kXs7Z1qBaPkb/AO1wqx3ReSuNYU74UbeKNvIvQEVZ3Ryz0WhRbg/enlG4AGelstHIX+UbFeu6xSBE8bdFvReAdVwvIt+kU7DUCM8AMS2S4lXgAFcW5fzZW13sS3iTT2AZtOI3dNskytf96pnzPfmqq4PAAB3Fv7i3ctDAfW8SWzuLbt2PwYBqRbGEAbiWz5MbEKuUi2aRb51RiSW0IgDx7r4MXyRbEkt9SW/QLs0lvyS35AAikt8gACuLfdRuQu7A0bFVO/Yq/VocTRtHFXNAzkM2hra6ltbvL0JBm/GLR62y9GwkxagD1Po3CWTA+2pkq7rdoHT2BHnMAAPItn3jY8qEdGAci2uhpXC4bkW3YAALFumvmzi9MoO3cUwpLbx7ozMWo9DzGNukYLoAGUlshvnsdDfCsWjY32gAZFsYWGo3z0yBxsncHTlTwtIl71MbUWenEvcI+HY7YISnbU1tIt4kvTKLaYlteCBtJbwKB8zPcntpJYt9vm45to75nna2FfwpFuj5VysVtIZv1rewJIIAB0i2aRbaG10Xa1YlvzsnEAB7xbUsRosqwJ0cocsZU7+R9/HoFmsE39d5FuGl6+IFUvOvHumagblFuci28e67ZVgbG841egYAoSpdJTNlNCaW5IAG6luMi27drNPZjandHtdMcs7E7LsbspVkOEwuLqRxvxOWesLo7FqaPgV5dj1Pt6G5y9z8xpwW5h/vzFuCOHpgVT8AUKW/KLa5FsSS2fkAInlwqAE63uvkBMAAKRb5n5lcvYJVZvhM2h6V8tsnF1Qcz5xfAr09h768bqB1zKvWD+e/xvD7byhzrrlyJvb7Kau4tyR7rDrMUZuXA3NLdhF1tymfJbBdVmDI51Hs5StBE2qEdaFO2iPeHxbKWY1E2gn9oxN346/WLqJltx1WnSdfEeyqvbSda5lt5eWiBL4EukYto8zSHFtpeW/cDWJNwivSyTakEvCKnjxbJBV+8Wx/Ltb72gy2C2pEMt1kRNFLZ5JvFxndy9OJB6M68V5cEr10V68GreGxghq5V5cMxNQJmsJzXyOzFU/V5fDJ3FNW0ud++7JQAMcWxOlvrS3GV9IYl4byymLZEr0GV4lHwQ4t7qW+mJZ9l3tAAPZbePdabYwatx5VOyy2UIjbtl2Zq+w7otX0U4nNpb836cE49c1cUr1s4nUrrmleh8mwnLa/JvEXaVLDz5B1mWzIUaMr2bbb/cTEle7ac41NcHAsGV7MUzwwNvyvb42gCr1AEn2o9+W+kKvUNvooCu7b6q7rfHRh6S4dqaeku4dX8HTr0lgwHePQe46tYx7fCz1OOgh6/MFa9pusPWJytTdNhLqz5maS6s0wWGDd7MFpx67VXoieughXU8L4clhvHXbBaMXN3dWsydU8lpBw6YXoYq1ca6sXr9lRsJm1jHqJO38KW8Y9h7Bi8K4zHsz6u55mcT9a8FqJS41VoGNPLM3qY9RHB45mzbXoxZv217QcDAAhrHAGeHvMGuIFm53rlLNnwvVBdrXP18s3g69QdesOvbzHo/esCx6RBrSGFi0nboWcmivZVacBr63iDCw7NFbRUuxy2MVL5F2z1m/tcGUlukqWyqdAbNxNm5SpZEu1Vk6KX02RZy07T/gG08uq8mUXw5g1l9c0Wzbbq1qXbYydoQO7fXa2abV4Oo0nQNzqW5xePX/UdtUtBEBJNgkNOvuvXm4a3ZuRdHTr5QiAC3PQMNZPNMxi22NzD5pixvY84f1csfskp69sEtp8W1+zcjFtOxXfwD3X1w1G37FZUaMYc2N69nal+b60zds2+uRcHJ1LKitzEa6fXs/cPbSISGjXEth76/nFZMT3V8Biir6AAHkWwpLZlUBqy2BObOURoE3QYral51GK2vxoxkt0xW21uevFsni2DigvYtvH68oybdRDEB5FNBvI1qe47OpctLOHTbW4rP9e+n6z1hal+uP17V1LEeOjMa/b9eUZMzc2YG9Tpu5DS/+TvQwsoN7Zi96AN/O01ZpYjT02aX2pr2Eh9ya+RzcLa0ox79tLOU1w7SyVhePC0Fp6LfDpOui/m2g6au0tYS2btLvrxmd85t8Yf5vdYX8HTwbxl/myiya6mvGpXeprX/N7Fk5p0a4PNWpWTUrbSt8aa6DpadSvg6XwBb50ezRvcW/toFs9YXK39taV96azRTtb+1vbgx4M4INmbHdloFyltRS3+BbhlOyevRdIdhmsBFAzKrOul8AI/eADCluYup1lwQUtiJALSLfILgDi2Y6zsARhnC6YLZPf1GF7rBbAoNwSve4Lc/SuiN7nujOYt1DXV9wosEDQy3YhbAgRz3i5hlYElSf5tXlbimevDK0RlaWj0d6WCHtLQt4h7c+yfaFvj6WGMrkRepjKz0LaTBsp4WSyd8Lpy/S/mDe8z28ZXkgjjnx7OawJlegbNCZX85rwFW1YW+Jlf0xt5f7WBrlAPDGUAJKnPNab2RGykCt1+ofb3NZFdPSZWGTzwDuwlW7FtTBxSkq36+Y28AETy+QXFTQAPC35MrywR95vTsEZ1yMbf6ERbJ815/CxplbAhtv4X1vjL81h6nT66chb0aXcoVYJmVkBa2ZlZDdPkQ2Ef95ZlQAALZ4qAAQAALB4RIt5PSxd1uA3PKq21Vb5LAIOgN45zmH0JNnz1z0dSb7YEyLdrcwXqsU5dy+x5wAIAAGMgfyTALbk8VuaEX9Qt3OzBsGwiQGtVtRrZHAE8TRtEANarZZCPa6DA5SSSh1oALarbN0PKt7NytAat+qOLarddiMdqLoEA+Au4rK9L8bEp2hq3WJA4at49cJGrY8rOMQBBFr8zOwNW5AAETVuoWwOHOKat8lgKqrcilQdZXbujF8ATNW4tcn1ysnGWjQj3eMTf3XSYZDlgYzEZmza7AEtW07ps3xUW56lmzQVOytWw2retnCLVB0LzfBQqzvUqLfTVvIVHrVbsXOmpo6Yteib06q3VVbDgAAdWytnCpz3yDsupVePdFD02vwlm8snZXstAwnjYTxsTjk2UMvO7A+TyRugKwxoEhREA8566oA1qt0Q8DYDW0NO/cCXK9cl5k4LXVAGXVuvpHXsrvvhbIAGaXpkACqq2DuTcS11ate0ADfN0Qqh71bH0kCFs0IIgaP2eGgcYb4zp1VW16AEikAkw3aHwskAVHAaTADzVsFq3TSLlqhyYAJeSDF5N759GRAOLZtSgMiABmkAWDGsNWHDnEI/W+brn2qWqgGlrRJVy6si0tc/y3D5XmEhzJANXk3INoDz1407LKAOeu9/4/cUTKICIABVVbRGt3QbbR9tflluHhs6duRe3cq7WdeyADYABVwA+9Ot4A9loDVGldYa+gA7Gt1YgPWhEB70SfanPTcNu0AoFI9f6sNOrgbCAOryqGPastYDd3rLW262qAAa1W767svJCC8mGVDn4PTZcPkseoZ3D5XkNj8uVx6gIAAGS8PTW0WZZ8+1pNBfBd3kRkfPYiKN0r6h1mjWzSER24todzqVVv2Jmz1bF6tlTqxcFqIiO0ftiWdXy1tfPaV6bNiucCBqRsjEgM/nSKZZq9OuM6n9c/fJt5VperfhWu0ft8uj6qtzqA32KdM1vku6EmiQvMbYAGyPojbO3dG6VqgFx+zW+N5ajAPkPhJNgx4bZNs2TAD01uVFnxbzy32xEUS4AAHVsiFXnzLrQ5qDcCpY2/QA18B8lj9K1rLWxdQIS+MoIBO+Ah3p17vTmcFuO53wA6+hUDgbKW4prfdVuga3PVbimti+G7d0fnVuYa7j1wbqtpzgCpYwU1veq2BVrpBeggAGNrY9VuTa2CRjX2AI5wIJrarFugM7LKAXzgIBG9qVfAYDYWG6RjreVhDGIAAG0gFCVOL0avYA+WEe8rWVF7KraIafD3Dw+m9tQeex/6lBQKY2dhCK2t2z4/Z6u5A3MZTfAGQBKEbfahtrW+qwASt6eOWV8rAnupiVJQAF24QNa2j6YnCN7tW5/GZ0Z2UpZj1wW+oEHW4IjekgNuhnDtbWMAemIyGtfVH22a2x1bc+4HFnuRrZnFvM06hCUWatoMDhhAHvVtRB6U1rqcW7tW7UroFiDouMCdbJiNte88g4aSJh+PG4x9lQ18gAATrZLWt7zCxNUf41/HW2e6y4734gmhWdyM1vrW3LGcwABkgn8AABvEnDW8/eYKPCC62q2rfBAHXsXEjcut3Aa3rkzno3BGgBR2acL2sm7Rdb0KAfdfUeQCi1tjrWV3jlAAJXWzYABzthWd6FaL/vp+mgNkAEfYCSbBnWASpxvECJ7laR1I+s6DdbLcaFG3anxDgv0D9yL4Ac1lvwvSjwVHyp263Ytqq4xq0E60Ked1u+u7uz2ZutnoU/jEdsfDXuBshdnWgWLanHnpJiOZs6OXhwIAdiU/93OXJjLI3qGdSRMdFxqBrcZivWq3vuTyEtnuAH+rfQlvapBUdb+AuwqAKmgDHVtbq3RnLW6t49W+23tLos2RHM9bOTgNHWwW1Nz1uga3BNbkce8lgMNrewlvdqAZKuvrlwt6zZle87OLs7y3O5Otyoq3njBJqKKC5bHzHettnW44AkI2tTgmV2zOTgAFOGyIkT1v8a396d/j5xabQ1lYQqusa3UuTHGtnnQ7zZYpRsg21KAAgAAUjwHAAGrAfNW6bldl90FHgchKBAAbfW2EAGRICI0AOIMom1k8E9RLfg51qTHbptgAAJLwuw4YuR61WxLrZqKtKPhYwA2wAUEQPfrcf1tW+6kiYimtiXW10+e02vvABb9b0rl7dWyerf5FNHnclNbi+eTPvQQAD01vpv7C9bXQ0gItE5MdElv367Ey9gAAbTxzUbT3sOcgGvraVFN9/KZIASBtxgPZHKR0ltoG319buBtzzawsVZzOBSCBrVboIgSyWz35uaACAABzwGoNuLC7GTLHLxJrW8qoBQQBXMALHTEW12yW1FtfsluCx6iAAPx1K1W1qwGfrrfa3hvAnA124qz92d/iOpxaUeCDnOq1W0Rdbm1vF+BJtbuBtlEY7V1c9ABjq3jw2f1pr1W1ewEcMMJy7O9bzrAaVy/udamy557Hnhki1x2XW15LrFwCUUhYSrG6Nk8LRIbcWF2Ma3pDbvWt9x0zzQiU1vMlcFDb0wgFgAMobY1Kv9bXLtDJmt6FAPevuySuja3bDbc25r1W15LfGGMcCA0db1Wtk5AMnZcqaPBG2l0j/AwsDG3Dbtb70I06EMb+A5jNW7jreTVvO07dtrIWQNnXTNInJYChG2fhdEnaYGY60Pr7+V35nh89UMxo4FZRjeuxuVq239bd8AB/W2hra/gBKq2lVbR7unaE9mpxekgZS24xtlht0OPdtraJmPaJGUY9NRAfdW6hrrpMOarVbSrGWZbgAAOrd152I7XBjbhmt0qW+rZmk13eG2yPdggkIY2wUbrjB3DYYWAAU2toPs3orG2ACmq3bMbABtnPXbzoe8sAA1BDn6/iRtdgBQbb8xtw9678z0xtxPW3jrYZ1v706Wdrcc2vEsRqAHVDIIkAi2C3k3cIoxMIGvcAdS2uwdYPgL7qzYACc1t9S2C+z8etk3I9ltf8iNLvmudbCet7v2Hj3RtmO/G3rB9xwxssq1YltANvp86CJACetupI/yPp2NsWDnhR9ZBYNVW1boe7VvG7XnYAmxt3aW4Q+EFDNW7Wt8dHfVY4PaOVYultCs6yi5yyugA/HPiF1VvMldXVbfht/rW9araVdPEAA19b3XEcvW1uVZj2s7E6y9tVnrXHANarcTFMv63F/dggkKo2zGAFsti1G3QFjS/Z66W/dLcuOMcm2NWAXJtnk24SAG2AA863v9b1Rt1AAMKbZ+P2862S1bwYbN0ADYAHS1uPS3QKr51zSU2/xAm5NuwLhadbWRt/LQFf0dCgDWq3vJjL0tjiqzSsYZ1uwm2ljbJNRR1gB2rduDOuxHx9brk8Kpy0gOa+9M2AApTbBptzxZJEbbjH0yG2Jtb9htlyOE03rPYuSU6iSrzo3ZEgD0bfbVvZq3HRtKterKHT05ZlfB6m3pTbS6R77YOuLpUsY2UTjBg/4uprW+xrYhvCzOXtpTQgiTnYwIbby1CBq2xaz5LAdM29RfrqjjokBYLjaXAbXWxqVZYNu6AB91bxKemvAP8NE8at9FnlldOTgfvalA4CsPMmSoJy94vxMUErYsYk7TR1JEtr9gAa1W2uvpP1t4NmKvzyMthvG+S5e51uk/hukeSmtmz6A4bYpNuAyIz4AyyuiAEJEAF4UQqD6nIALBtq7XUq6frNvUa3GzbkPhLCUkSAFVVuBVWf9rQrOtfW/tcET1vcm2hT9NQRz0wLsbdfXBLG2Nzb4CegyACwbfa1tMm3AM9wht4LXV+PsA31kmBgVWDJtpk26jrYlcs+sBj1we5ttHW/rYdoNu6q25zbT5tgnRPzPu+pCs7HpUA1dOk5axkTia1tkSByIIls4e9cNwAHvVvjDAv8bJ6VsM21pFZzZ2Fm2/tQZXOru8Mwbdx1v062KdbxOupJYy/le4Nvhm3Y9dhFtxMvXBfpItvzAAQNT5Fty42wTLY3UNkm3iU9owAIQlPQQAbNuYB4NrUkblin81GbfONsE63oLbTkAf828ybbVVvrVX8Cbf3FhQbWpzwxp21m3iNT6C+t/W/CrWLPCHa29lwDrAFEAF87om1vPDIAxdXMaM2QMiADR1uMiAPFjBEgXS2+hbYjMPBG3QjrGyxrnW2ZbcWby0W3jzr/w0STW2e5FtNvZG2TDbtetqMAPwMLUJtPw68Lbq+xqpPfNrbMtvgG2AstV3O+r2NDOy0tszT6IEOWT+5dW1dzoTl2Ka3Q49hXsec267EbSu7KoBSrL2ZtlVAJllq7Nu9CoSWLQvMWs263+B3866q33rwWhtp824AACICCEQC63sZNuSW2TzbdMtwlE2Czv1sMpm3dVbNf5qrW1IbZqn2k62RLbjgAGY639Gbiv1l9sPVbZZt/8XdmbYPNs+AB9tbFhKCvtFurZCyArWnwrb3AABHW+L0byPAsG3Z9wc/56Yw1vPslUBLpHbi2MGu8cozRLvz8MtewlNQws6AtcBxgFUtvfa2e3urk+1yeN8db2MNPrbZ+Lp34F2OFVrZNNsFcpXzb32t9jW7UwL2XBgnXrFTXD4T02/qbbYF10CAqqjURti9I73gH21uUAAx1bKjpj98Hs4HIkCqq3BzbyIAe08ZQQExOv5ZHsjb2EgWzW8qgHS1vOKnx9bCCHb/k5tnt/4EiP7qAj0dV5zy3zLf+JtEXbEzbBptjy2+9bY8ttw874iDXjAg/WzzloENvKW2qJAhqAM024yseRJuCnXsobFNt2K2yKbYoEvinWcTDcsWny20tbZ0dYZUJQudeIEHg2zLvv32o4RngLbABu8lgNybaQAB1gA78zM5twQSHt/v/TNFnHUAA31t/K23Lnqw4QYVMgbbDJh4ivZUqdvF2VqYmzbCNANBcOIUf5ABaG2jTrNFtrSKyqewyNs6G3rndXahrM21pbcvZ33rhhtbnxhhMvbkaaEkBoeNFKjfVt1v8MWeB8rjYAAQjbl1tv4/av6gVp1wW3NEAiZezRAPrYfKttZ63VLbPgAVOgGvrekGlo63EtrR5ALKAMVbd5AA7V6H6rEGJ28c8/VcID2SsAxXj6RtxVXfeuGNtsLSRTbb91V8y2xoTl68vran/Tb/htxTW1sVfAitv62BYgFBIzU27yeYe1viRt+rbCuyF2264ADdtvfm35NUXtt+Q277ba2KsAW3y9bV1t4s8MHbdDtsaW3Qdqkdt3kAIYACKtvR22WzruGxhYCxV5cmEvGy3CHwnFtsFM6LwEbNvxWIsWYvruppQIZrdJgCyYmF2VjGttDWy4bcilScbHMjboksT0ALarcAZQMz6IRL5D4DQK3s4B+thRxmUrwFg51YgGjrdtVtO2A+WEbhtoIAAELp+tsHm2gbbLbGVVW79WfGzgGq23Lbd9+21W7MAFO0n4W32JTUa8UKAKqracauwJnuLrHol7LQNDrdsAh8ba8SgLIgOgQGmnta2NJExVfdrK+xEUdaraQNvpABnZbdC1h1W4Qmfw1sYa3sLDnSxovW17Lel7oziKBtbbwFuqAIfrdm2P962Ljb8fu5RrTQbboNtKrnv/dcY+iB2ywbeXcajl6TIA+2t/Hw/YbYcuuUNG5+rGdt1inqnQF+6SxtAwOdUQWX5QHyjotVsvDXbNbCtO7AAAKbYDl28W3dKjTltlHvXEPq0TOom21dbqqOq53stajodt8m3TgAkQ4XEU30AAs4DJ627zTkOxpkC1ltrNR1N4THRtgpt7wAPnbbpNuJy2tUdJjtr5wInrZ0gANm3CLb8jt+mI4FOYD7bcm2NtbVV11Sw/+Tb71DE97HbbXzEhsG79bdm1u0m3JtbpgAWo2yiAEgABIG3UHbL3ZzPvWNAFdDhqG3sAAnWtxYXQ9gDEV2Ja3SKb3agRs3Y4bZbtveAAB5laOt9LW2cbao1tvq3TAAUa2RNW/+uCdMFoa360I+Dt9qc97LcbN1nDIcE9Sxtw9QCWLsINulnw5Djh8qmSAGrrdfX2cDA4SQpisB+27qrb3AB723+rb30AFw2zYAEP1vKa3FWAV7AM7wInrfq5MBNHJXwITZ0C28prd8ED0O2odb6ZAfTvTDdf+KONm7a25jgCFR07xIDidunlw+0AOTgJYVObWubzDyaofbbB5tvTWy9PrR1tkO3PKbsexxs3QztrUNuwanm7bB5t79AImXqMtuIAAoDby3lyKm/cVppuu7bskJA39tl9W9RrefKvb9s7+rZqesA2zs7af1xmhnza1Nztwu27s7bBdtKABDnbCtO45247bcedutO2b8TDie7p22BbeyABMm21Irstt61W6LwBN1tRgBajb36ARPW3s7b8MCbGW4ZzZct2x8Ki7YPNsYu2BYgVJthGgGAbaXSP4u2PJ42QAIl22IsG/2MFu7xCjTq4Rwwz0AF+tsQshskIURRkJs/i7d1Vv0lbpFEkwoEbW4x2lo2Ot/hafL5VRw3W7FraH8vu7ap20FLtx22168W5dvj62AU4RIAQLeAvbZYAAMu3QNb9qZ0J27MACFdvwu2x5yzyAZV278VbYF1G63nKd8kF8l2wQQEftuO22qXbenAbl27arZRt0r0p6XbSqtgl2zqODq33ZS2UX2CRAJQK+FXpmLOnlwfnb/yump2xlQjWdvjO3tDTVIpjfw8C7ePYD+u25ij6biWF2/c7cdtunO2z4g3LtqHjq+rY51tjFG7pLvvhEF28y7exn2ysA43btVthEfQE7fydsqABkowKbto0YO3dcPcwcm2DXbbGtvxUy9QFVVs9exC7bRTtw7nZW7ZUOr+O3AOrDct8ina0bZ5El/O3c3b2QABN2zW7ZUAC6u3v9jGTth528tXpyduJT4pqDahtgd23zqabdubCBBnbxbt6jW6KIA81DPG3kowzNNjN2x5Wabdum0Ba7b+Nt4HFNs7baP3Nz7E1bQ7t3x26dfNYADGu2CQo1PcOZ222VZblsZZlXnbFle7W2wPrajtuJh7gHrOD23bdpG7bCdswe64XbPjt/WwwM7fOdvga3yVLWGZukAIAABs8FVWyoHDmKMHu2Urw8jtsdWyOan9J4gwAmHbE+xlK8IDrePNsBy63B94atrnU/MFefdv2AAp3bH7ttjWw78H+YBjq3vHOa9tgKw05bfixCK23pHbygpkEyyw9cV1OvHmB5bej1lum/LJaP32s23pFEWetuT43cqfZgvZaALHbchtkfMzPbcdtuc7HqXb0Nt8u2/LbqizMAHbQGdHTtzzRNLbetdv62H0R4g2QXVWx2SCVVu8G38PbLBt3nK/trc1urtdXbZL+9NrV3fmreLrJLpHAbAqqtrEczLbbHVtkE7ShrtetvVABLbe//CJl75bbgNt0Q/atmfWYOGwW5urmER2R27SdRNVOpm3TLb54xwO20PUI0tt223NzduntzOS+ZAG/QB563fDb42tgu2/SbcgZt/lGjFzgVkTi2xjXoLXDz224L9mAAVB2yHbb61sR22TszHT1hw7Vycfn0Ng6JtPb8httIAPDQAJxwEM3D8dxGpvLUCnbdWc33rgBNswhyAawPSbdmevLy2/0jIdtyJ/bk7aHdtdqHjLbV/R2ZU/AAAHVv+W3AdWYltl82x67a09tfC7gLbeXWeXc7pbda9sZOpgvdonjGvAPgLsgNvgMBUhdHzxrFcM+bY0AAGk9wiAjZt5+24/bf09vzO2+TbW+t/SatXraQUBxQJZKj/Ntxa20sbY2MjokA8QIR+u+x205wCMNu322Bpjfx+jAAJGbccNtpABGMMKqt5Q26L1cA8MS9WAmbKMeuhHibbf+LKA6sQmbIeuIsK1I2ytdtUm2qJAWBifbW5kACBttjq2NKAYoJRNWy97eTYT922YLb+AuqHAN7bcw9tN2RFTTTBtgxRLS9aPEgsiAcnAgW8UfKq5PAVuvXm3KirbnAcc4Dwbc3si1j7yzbcDc313RWbalFYNm3nhk7CR9iU23W1tVtou2u52EKoLPcsN7b01vgMBx99jG1zm2x2bYBtuF234Va09ty0c0Obc31t+PGiAAR+uqNeCwnrVVvjwXryT5Nut9EEfrsQACY+3ncrhr1tLXYAABI8eNot/+El9sny2JmbImur7AJL7bi9uKe2dexvrumu5X7bfyIDLbGqRTS6R996xtUfr6tcc6/1b7+tntaDlbZ7NtA+2pddPcbfWw7M7d8dsTW2e9baqt0fq+UaYvNvIoA+gAavt1v8JN7ZYNuXm7dJ9564BqRc3kh8+IHm3tRAA5ttF24ebYLalUm34vbvRt0H24/Lvdts/m2vbb1gAa/W7RIkDfg1m2BpjHPtp1cGvrdX8tDi61HAPa0BW25uvsDduNm3g/beapxs27+nvD9st22HfbRBcZrXWxrZyZjmm2AbbjGGQyKyr3QtVtRm21fbMu+ya27NJBO1viQAMrbRrGYlm3dfocT2pe23IrBB5gFw+dcwKNup2281bKBpOlm7EbbZ11pgQs7bOlt5hK5kbZN/k1a3kSA2yZg1Q4X7bE9tNm37JT1rtn626mgA7CunvXUXD+Xt7O29kbYYGv/8IFTbgptmo23UbfvetBG2I/b/JtzX2+77aWcDiP6fELUT1yI23P7ckdsf63f3rdLhvf20EKZa9v923B7bT7l7KW5HgFKV0y77WqurEgCD67B9cdq2ju80TbkH1s1m3rbbFePeOcx1biat0Vw/r7ZqY32s34495F2wAACmAqAAHA2/7QDoEBs+3ljbLhZrM3T6zf+7Zfm2G6gOTgbDQ9dFdxp1b6g2/bRAdvow3iQHQmvA4p8/bjtt6QAMF0AQ9vdqmG3bUTOzwa64Mewdu3wBLVQfwxs5fRMhf18ywG3uA7aLeqGK/W7rvgBelNbAIMn1nvzVmbrGdvle6TPbdBVhT6/PPDqdtd/EZL9n4PKA2zQXsSGvvXHgNzmxt7/8Pk7f8qxNa2i9btFPKwPJwHaemuA3GsTbd+tg/W5FKknEA8W3mSAnhoIgWBZ9cvJDUa2VLbGfOwKyJBMlm1uHG3b9dzl+wAADB4bn0b7AO+bpz9sBG30NzfgdrfUt8hbWLPeWALzbSJAKMAMtbcZds4RWMNbNwp8K/Quyuvoi7s2I29CUgV1uevbfpqMHS34vrNxZ7QANAHevdt7aajyAKgdxg2xvbdX6IxqXjNtjftjMYe2sor1vNQAy5T3YAXIO9AbbA1uFB3dYr9xRPEwF2/qQT3lucljb33JiTc8yVeGNvdu31WASAANHW99sFk9s2jXqlwbX1y07fyVc6Du462IHbUit72Kz35qwNvoB3v2EObtu+AImXvnTiLO3MHbvsVpZ3S6rbvgDGe38fDVnrE/eIiQDl1vqoX/bjFeurR2xwOeM9vK62alTqqtkNgDrreNQvwjWslbSj4SI232gDY9scO3qOb1wdsdQGQbZLtu3u3KHb9HNrMM1v7satuMa3XULb7hr4O5n3rxGzfS684rfwdyrW4IJBx9udm3QzjC6loekw9rdZ31gh29wAEIdhka200c+Dugh2ydbA+t/Tm67TLcnizRwdbbI9x//hAW1NA1tVbmlObZ9emEO/Fbc0tuwh29UA4Id6oACFkG/9tCK3I0LxIdunW4Vba/9vR230Q7A/c2EO6iHcodv3u2jnbMPthHW2iAEB9t4gRo6kgyTCB/dHUnidtwWwNzbOGt3eKxVrbJDvCh3ubbXaFkcS5xIDRADGlBYudnKQLoOyv7e+9vf/hMAAUBtnhsAE7dYttYGmraAS6R5g1mqrcJCDZARBBIoHe+dCxDdrpDtwh3pQ7SQhuUOwLbkVDv8z7K3b6AABN28iQG6ysVdHGMMM9tuf2yoqdu10RjWctzUN2r/W1I7ZB9ubowQ2EjIdp9y2obaTja6q3XIAyJAG0O5gfM65vnWmgutX2tvLUEazv4eMhZA3eiRKeyVgOabencbFjWJHjtH7KCU9qHY5Dvvu3+Q7x64MTW5CVfw6PUrGFadsk7Hw22yHYJ1vHL6Snb32AbP2yRIFz9vk+2HWA7Zt3lo9vbbnNu+B26/bMSt27mwVHreDsE63j1wa+tmwgLQ7Z19s2xSWLkjFt8BnV1sD5ttm66tvbQttjU24mrd+rP/Up/MrBS+0Lw19hgPNsgx6hfbLremu5RXreo1uNa26vDTbtyRs0MMjHVt0B2UrwfbtnvwGyIlGf0Hi7susT+uYWXRb1CPIBRW2hvbZPt662zYQAxduvTGjGTCgekCQHqHZ5DsHm3fZxCHtod2wVbYH1uz22sDEZBt313d5bp9XScEBWFdZ/1+203QDLrNv7q2W7byKwGvW2tofPGP77Umtbmvt4P24dzv1sMn5JhQ71yZpwgOYrEVhIbJWOtDDKQAJo0xbYdNsVh3evDDttik24NbdJDtBCIA5drFPFQnNwucrduSu3hrY9lt2R28YqcZXAzSJBTDfBt3MaANMfpDu/h2Ma9vMS63mylWbryPxTWoHA23t4W20hrva10lXhwGdpTtwU2/9LeYNucR3KHbXQdvQAMe7aoBsq1XQdq75OPFANEla3VsER3+Dbcjt0ife1raI9s7r6OBAe9t0EQEbexsID6h32zNldt7rAIa7c3dueu2Vrb9aEDSO6oSjzSCYQA/Fj7EpokAOI7fytvdh2lozSmtqMAMGGzh53de2uXjbWlmvmySzbfituR2Q8r7WtvE2yjHvw1shthOUoKSwQe24xABCms99gcw7QYdz1y05ba3WP/rhI/5P6emafZ97fI4Sqh3iAAc3tqk23pradGR7L6NSrq/Ng7S3KLpONta56ZjbREdwnWyisbCBuLs6SdbeHtgYO9dbfR1uVl69rTrVto4PbQ3tSBt5W6r+b2QN9VK/kDawdPVK3/XjLU1wms71hdhSuLA2mlbDQNlpW5/zb5qNmpWlG9DqV7q3TI3taVuTR3+pr00dkAW4v4YpZOrYWcNgdTt/e2177eMVNlm2mo70rln+kWE7cnMiE+2mAADZt1AiR2bbQ1sGpaZpA1BtjPIKhHdDEQM6nrAAtFh21cDPFZ+dtiKt8fb/4uwn24dHbCdtHA23gbmrJ0z0xL7dCgBIG2nprOD2jT8T8Hb+BudS7bI7kytmWRX2gBh1ucC2hBEultpaQ3GHYuoFTt6Ajza+tgYuV/4ZHSt7q3U6Ari4OrozTYqEVshsnST9B5tr1W8ebdOVtPvG1bbPzADfW4SADt64M4WN1bCHjGkG8N0bMFupxaEY7AV1si29iHZZBuJD6J1bzJAe8OwiEGT1tHj67lbQVOhGO0kbbtVspG3xcLDdZyXC3+/sItvoAABY7EatnNW2gzu7rMyg2VcLcoN6DKxELZv5CXW3CLbBtt9jXTM6biFsBNaEY7asdhGnRhlemPNYZW7HddwdoJ2xw7aWPMIIclnbAKtrTPZbNdDwuDhGsuIds15489p8fIj2CV77Aj8chqFW90Le+PMrN7/6z7GVgYW1s3ozwt9U6U5rvmetFWxi6bkRxYunoTzbX+trvYolbNtu5h3sgAe1t/pAG37dElhx+3HKAkbevrUKxT074CPCIwaR1IdmO21MLdl6NVBGCuO3Jt0P23t7dgDswT7CTzc/tzC213OzHBv/8IYA7PhppOqwardSF0PSIUVxyku84Wzw2fD6PJZq1VbVcdp2q1oHylFbDWw6AZANt6jW/z2e7BsGV7fhbil16OpIt7ZAtvHu3YFw9ht7ea85jK7jGD36Lvb0yp5QJloZaPmv8q3PwbjDulEW9YZc9dO6ZXMRbiTcLlCjiLb4RrhGXzMrgjuyzK+8ADTcabdbc5t/jZzFvXb1uQWuhjbVNtqu2lHrR0NuZ62a9bAAA0iCQAAc3GJ8d3zK0M40AACbIDM40LcbWjbdutgAAYpAtetKk2gt0yFlc7q21unnIjLIRtNxks41PjsdumhetgAAS5BghthbjMcbdllf36OCi3tjLtfm6h01+edOMvcPabjLloRzRa471vQvN0rbX471gty/rT31vs8ZHDbNethbjLHrXAnYQTuAJ2tob0Te4hO2M41ITuXDaNetFCdl+O1AndOd3qi3Y9LXVO8v49qLZ4GMN06r1buotpj00C2aNFtetaTRbI9u9a5nm1ok9MWi3WYbLst8QbZotsAACNIHM4xzcazONIAAcid4IbSNtofjsNLWCE7ObjG0W3ANoUTtKJ2uBtpLZgPPfYNsUTtTOM2PGD8d1dbVLDc0W2AAB6kH/601jacrzhGOoZaxm4y/jsM9bIAAMCdsZxk2NpR62luMDYbNUOpxO4W4xcTstjboetGidrnKyJrb89MzkXU8LDKhjNxmM4wfjv7Lagk7KrZ9B7VSAaF62FuN4E72rZ1gbbSNvgm1tDHAAAdSDSDbjhtObu/a8yr3UAAAXIDbNqsTvZJ24Rt515+SvWl9o81uqgGHWzPCt40A6RtsDAPNen9htYzjQAAMkge42mELaknd260tJ21zLrA23+O50nc7huCV7Uxbzhe88yxmLYDUNZi254bdIACfraqNuv63/jazE7hYtjMW2KFpfwsZAn7rm5Yt/ULZWLbwstNYXIqLtg24txk2LctluDM7ofT2VO2BO/AnZmcbtjal2z6d5pkbbt1rMTtzOMH47Kg2o1a+w9tNWtldbrVro4t2iA3YXobvMCe6Jxb11Ou0Y/0nax1s5p7gK8QIJynW4jHsAKtvTadojrf2xta0WMcl1uOF6B1rNhetsY64XrIKtgS3m8sfhex3Wz6ztAlutCm/dbinZsIvdRobmRux62S6L7GhosnQBtbM7MmFX6prtwptIvSCjc7r34S28Jb6mhoiWxEVcKL0JFWH/TvG1yiW9vRYv1vB16/9b99FniW2QPu+KNMp2OirBqNyYO0ajbWm0bdmpK9m3ZnlOxvAeINsnPnhut0gZhNG1MXrslte2WHJbYhthYvT7ZfMNtB2XlOj02NnaY4EbcB0uUy3DEsfkt37SzFLYV7OVIHSjbBbF4CrTtCbpW02HaaE7zRtnYLZsneuG0UJ2/47ACdjo2wJjYQp0DG2VMbExt/Ha3kAHfjuZuMEE7CEpgZbdx4wfjulJ276LDmN5qW0FXtplvBY3Wdrrxt4Bs01NdLK3YOW18tNsxqVi+w7pN0PCj6rdDmJt+ire+Dt0lNTY2r0bl0trPnWybbpj2im2vsbeH58ufdqbbrF3ZeWt5jQn525WwilvwqvOjaQzbi5e48fbLjcEr2a428zbE5t2PG5dLf0F3oy3BETR5eoJE/VVb9su4y2FDr+Mt7Q64TLaIr1bpHfuLsUZ4FO5EqYkJvtSXYarP5eo428mSYGOsMy3r8DeHliPi3htswINYxnePLYSt6fiydbfGJucy3Mbbt4u8/rdKNubG1FuNIAAvPWmxO3X1uJ20o9arE7KPWhZxt/Hagm1zDaOhtGvWh+O9YACF63hjbv47CCdwnrc/HaXO2dDavetlCdr+O7/HcLcaZuNLiblxxiZO4EtpgTtFJ2Sk71gAT7rdQNrbG2dDbz07no2uROzm4w9u2Y9bmxtxbjCZxsnNoWcZuJ3UetXxN9G2+hXrpOswCW5I9Ap18CXViYaZtsSAXUHTfdV0ivbHbdRluu5bEhL5pNwoC7GTf1luj23DZb49t9Cc8mTbMj2pk21sTPF1nZO3xtrXTtBrbN07rCdnMmz4XqgsMaU6tNtUZBufrXondmcbIWGCHbo9e0kbe/HaLcalJ3Yo9jCZzh24ynaTW1V5HfvLBjt/7y0Y7aTlseTnh8jCmd6NUzpXvnyPVXX05b7ztp5vcz5bETtlU66wLVae/OW6+QeputFy3EZbJcthxO2S7fravs3aq5bxaZgaPbdJbNnO9R20abiUFqpWzemdVTs7S2pabhOptKvb+7eLr1zBXI99vctij2/3Ldlks0e2NgrR0e7WS3Mnd/31DlH5Kd/C53WC511b1Tt147/k7BclqQ/QvLeNFupkmfszvsF5t/YxVvXlu5kncXrLUtzsKzvLZ6Zt3sH7wr+Wd816zk4eyzt19Wm8zddexpS9fLfBUtADWj1LsBZ/asxm4y520vy2KWbqA19+W0VFccQvn9bwFtu/WshOxyNsuG3Hp3Vjt3HjY9O0ondr61nnaElt6vW/NxucnZaTsnp3XRtHqd5dbZMnYmzuAABZEFqW2jZ2/47VydlKKzrHq/TvNJ3Nxtubjc5O4f7feADtJ3c3GePW4txnX1uOTtW1G1z9tg2u9O5t1pzcZseMJs7szjT3rRtnetG1zONDs7tPWz0bVBnZs8bGLaFs7is2pbO6Ynfv9vRDbHs7aPWmDO5AAHezt1Lbts76rNm3Xe1neH62e9abPGT8dmBO86ndfTtjzbC3Gv8diws7z1rkTso9aH47xQ21Y7a+nZ262FuMJnG38d4xbR7dpzcbLZ3307iSFuC7YAAFoQRbO7SNuUGuoZ2j47WbjBBO9jnbyW25uMH47Y2d/frUHHqsTvwJ3rRtgOdz7O3unYPTtHp3rRtLvWpAO+6ac3K1DOM307zCdhHO7mNvJG35uMn47F2dmhOy4WabG20jaaE7SCt0QHZ3LZATv8fXXBjn3W91OyYnetG02eNeM7BidkT6woNtVzuo52lE792dq5Ow/He0TssqW3qTR8duRO27NsZzsdDb4YrPfml+O8UNplztSjaPXDXvW2ZxjQndKLP5J3/47CPW13OwmTuFUttmm5VLhMVmhW1TneDW1e9bxc7v8dq5O1BNqmcYYewCE71w2qZxqHneuTtuB3k9tguduHOwjnc1zsmJ2sZtxudkbbSBnfV60ep2tetsed21S/L1rb201jbvPrTXWnjOyYncfjvh521RthvW1HO+LnbHG0TZ3eetcw2tJbUcnc9ztbs2Eg7TvWy4bf1tq2zst7bP47282shO14ndPZtPBb3c7Rw2vkbRQnZnm3453TE7KgAFHrcJnZxzuFuMFnGz2d/S7S3NtvZvOwADU7v8d/frXXnY2zuUJ3ghtxO25QABPnZEzvMJ2Z87PvWiuber1pK+uwJ20etII2pBPbAncQTtiK2hnGszjKJO3m4zmzvl3axs7TCd+HO5QncGu3fx36+t78d7jxqsduKG3FJ2+s7jud8Dm9ZHtsG0x52I5tLSd17O0/He/zvhjbf87cHNwOkw2pfXr17B2u1LSit//gyorceDu6A3WZtcpZlMW5+4d0Vtzk7zFb912pEOweTuw0RA3acQ7fe2ye4zEnvQLu+K39ObgSt667VA8ciVvzp2uubW5ZiBvaErYzDtAK2Ow7uiVuJW/k8ZwjsLU67H9Pe5lJW4pHegr3V8397TTwdpvm4hTvZSt+A2gazVVtk7S0g6YIPOlK2sgb5StssW5UrZ0kt9R3mprb/N3VK7QefamuK3bRo7wKdxoG8NNbkb2AC3xgbwAt0HS3/ze6VsLR3+DzOLJwQ8/MDYGVuLA2NBtQudp/O5cnb822Pp2ZnGD8d2PO64nZT61I9aKE73M2h7rTM42R63E7bZnGObjcxO0/HdcLvuF3DetwBd2k7dP1vPTuj53rRtBqW/HrY8tsuG3I9av47EE2++OyBnZyW1KJ361t1o2uDO43ne48bMJ3W3jX0SF+O9HnbsW3TZ2f07BS2ktxpAAD8LseF2C3G0o2zobU/HdFzsTOMt07WbjWHrZcnZoFv3TXnYAQzjORO3YXf3u1JaHnYAxOd+/O7WlfaLu09aMetdfWgxO8e1uc23T52i3G2Odrw82Dncfu3tpWAC7/8d4DO7EnfF0sX9aO87xO2uDOy/nbRjtE27T+mV+d9wuw/HaaTuxJ26ujJedpROyoLZ0i0HJ3qE7kAAFnO8enZqLv2F2rk7xMdmNk4oNrkTvX9aU87Sid5+O3MNohO2FuMUetD2duPOzfdvjG02eNS3Gbul49KyOHrA9P0J3GE7QQ2uDO4cneLcbpF2blb+xenjPbrbpgyuT9bJk7ePWjvO9cNovTvvK3pjznyt/WO9CXdHzuwl2/lbSx5i1O6YnYtjujN6gVb9x5+h7fbHadmuOx2P6zoLpqh7YZ8Z/rMsZXfjzcXW1zPUA2aBPN+x2eMr7Ul1/S0c3omFuhx2p5rOKtqea2sLZub2T4XqVbC4N2lW083uxVuvN7Ovj3KtpTKzFnrfBsP4XdDLNjZyzk6iLYNPPp9G9Mr3+Flxs5Bwh3jtkQ2IQjKvdQAACnogAAdvRAAAieiAAB09EAABL6IAAHD0QAAG3oypdwAANPoGqt94AGqXa1Lt6l3DS7Rpdg0u4AACL0QAAPHo2pdwAAAnoypd9Uu4AACT0QAABno2pd90u3aXf1LtSQ26QA5pdnUuwaXeNLs+l3AAAWej6l3AAAIei+ZXdS72pdkMu4AAD70QAAPnocZd+Mu4AAGgCdUu/qXcAABj6OGXZtLvxl2TS7QCd6bPbM9uVLuAABk9CdLuAAAh9HdLuul39S7dpdwAAN3o6pdwAAKPogAAbPRYy7gAAAPR9S7IZd6Mu0mXaTLuWQ33gAgAAVPRtS79Zd/UuzmXfVLuAAAO9GVLv6l3AAAOegshGWy7dpd3Mux26cAACh6J6XfrLuRl2RjLzsAecu32XfDLt1l2my72pd0Mu3aXc9LvKl3AAAA+h2l3AAAgejal20y7OZdg0u8mXZjVtjumxKdq5dxcuxuXa3Lutl2dy72pd/cu0eXZPLsDl3rS7+pdi8u2mrbpAA3l31y7tZdzcu9uXd3LsHl3jy7p5d98u8mXftLtOl2XS7hat52AIWXYzLuAABM9CbLt1l3Gy7Iot6Cu3BXYQrt/l2Yy7gAAEfRYK7ypd8Mu9qXezLszl2xRbKFd9Mu/BXcQruxl2cK7eFdnMu7gnbih0wV3iK7aFdzcuyGXawrvoXn6y7VZd5Uu2B6Z/Lshl3Zy7MFd5Uu4AAAX0dUu16Xa+IsBl3LS7xpdjiu1xXd4rv8V2Qwjx5dscu/qXdnLsEV3PWtvZd9Uu4AAGH0Q8uxGXforuMV2//Np/TZUu+mXcAABp6IAAEH0QAAJHo6JF9Uu+qXcAACd6OGXckrvSV2Zy79fx94ACJXcNLtiV33S7IZd5UuzmXfMrsyV2dRb7wAH0u4WXcsrt6i3nYAgAAKPQLK7gAAdfQuSLMr4Wcu+mXcAABx6FWXdnLsBV2hSLgOV5nzTZXZ4rt8V33S7RZd18u9OXZ/VvvABNS7+pdrSu7OXafLtvl3ANbj5dkMu8ZXfdLvgV3nS76pdpy84AACD0Msu2LyfdLtVl27S7OLZsMu+GXfdLuAAAe9HrLsWDHNy7o5d+su1pXZjLuAABe9AMrtDAG0PtJVdr0u/qXcLLs6J32q7IZdrqu2LDYcrutl20rzwVdsKu7OXcdFvOwAHS7IZdocu02XYwrshV2hlr6pd9Mu4AAAL0bSu1WXc9LtaV2bS7m5dxMu2zlbpAD0V3tq7yZdrSu9tXe1Lu7V39q7IZd70W667sSruOl2yy7Y5dwAAJPolZdo0u66XdjLvul3nq7TZd0lQ1bDcHUOFyIEzL1Khkqu/VXZDLveV2sK73ldhSuzstY9Ltel2fS7xIBpsu/VXe8rvy5W7S79VdmauwKocJ6Lll3tS7sFd90u8GLddLvpl3rlr2Nd48u/2XczLsNmX3K7M5duVQ7k/DNyvfLWVVDsN5tvk/6XeLLtpl3py7gAAMPRtS7hZd+qu3aXciru1J26QA8Zdrcu7GXaXLtWgG6QA3ld4yu9VXfhWvKV3wy7jNdscuzpXZ5rtojamy7IVd7Uu75Xaars357a3MhZd2su8LXc5ru+V2ca7fSdnyu6qXbtLt3V3yq7h5lvELZzXcdLuGl2HS78Fd66u0Ledrczxl3VS79Zdp8u4AAAn0JsuybXZE1AjJ3PGdNpdpmu02XZKrvpl3ma7bZdocu2OXdnLty13Dvtw92wAABHoXpdjCu4AAHH0ZMu4AAHr0Jsu/GXYmrsqZXWCtgAAcvRlS7ttdkKu4AAFn0ZMu+2XYTLunV2Qq7gAAGfQWtbFTO5UuzGXdjLuNl3Ry7E5d7AvXJXZPLtKV2VK7mFd7Cu+OXeWTt2O67S76Zdosu0aXddrvu12CRjnNdkMu2mXeNLura2Oa7TZdz0u+6XbSrtaV3NtbdIANKu5HXe2TuWnb4y761dlsuyGXb6rswV35K7+pd+su0aXaQRu9AnLTtP5d+H031XfdLsDV2A677pd4OuxQKfXrub122LLWEB7euyHXYcrs5l2wK7ztdj7W4wKfIrtNl3Yy7dpdg0u+6XY6ruwV2/tbWEW8eu6nXcTLsJl2DS7x1dzGu/qMeuZ2aV3lS7JZdpsu2/Xcfrt513n678Zd1+uzGXe2rtvJ3nYATtdwsuxHXbHrtR12pxb/pd3Cu+tXf1Lt6V36K7gAAQvRpK781d3CuyVXbkRvOwBta77pdusu8qXelrshV2Z673Fd2Cu6uLfgy3MV3lS7s5d/Su1pXZHLsEN2iG7JDdg8W+GMbjG1Nl2tq74Zd+Su1WXabLv4N3tS7hDd+su8Q3ZNi3Us66QAIZdruu/nXc4bvcN3iG7z4tlXusw3bOrvhl3ky7bDdpsu8mXfjLuAAAp9CHLuFl2TYtr4t3Ku/lXaLGPqN33S7vZdwsuz/XeFrtIV3O1rhPRLRuzo3b0bvl12GK779dwDQywMWTLtaN3ky7otd8Wuz+Lbcruel28q77pd+Ru/eXbVrtZI2pOz7wAKWu/eXfrLvJl3lS7eld7Uu37XbtrulI2aod3jdn0u743d7LveV2dK7TZdhFO0qCdnLs/13Zy7+pd2Cu5E3eibtIp3PG78Tdpsu4k3ewrsBN2gm7KKds9a/NXeQbvGl3ky7INd2CuzI3ZlrupN3RhTr3ugpu0U3ZKbt+N2cm7dtd+gHR9Xbhrt+N34G7iDdiGAxk3ZDLvpl36y7P9d9CW+RXYQbt6V2467CddxOu0/XaTLtaV3M67zldyyuyXrYz+N9N3EG7gzdkMu0nXZGbsJl2xm7Gdd+Su2XXfDLuqV36G72JZ1IveaXeAADKl3my7uddkMuxWXcLLuQV3gUbuEtxdnSI3bobvT13Z67+Ndjqu4NXdJTvnN3aG7PDdu+u0PrYRRs012nS7sFdtau5tXbOrs7V29q72pdg6u7ijdo2sql3cK7F9dwsu583a2rs/N2rq7ZEt4ArS3XaSbuFV2Tm7qT52tzIGXatLtwt2jK7tZdg5uzaXfbrv/+mxNreRVkMu1WXfTLsot3Ny7hZdqsu+GXfRbvGl2b67mzd2iW87ACbLsll3a67IVdpFu5i3c3ovYN3gW7l9d2lu/S3ZnLsXTbaW7MqNjkU/Qlupbvxl2nG7HVd+su4lXbprszl3+RTiTdzJu1Q3cWrutl3eW7/LdwVu7TXZerucp3xRTaEJgPrWK3aNLvxl2MK7qBtkGu0HXbVbtKimVW7ardtMu5mXfwrsO2XNW7erdjMu1mXcorvmS2kB981d+qu2OXdHLvHN3g673zdi6u72XcjrubN2rnzAfW9Uu+w3fGrscV2Nq7e5dklu82XbFTtOinotrzsAd0u6qXdBbsDV2jS7q9dwsuxWXerLs4N31S7OldlLa6nFsWbvxl2o27VZdxWuwXXfHLveV33q7T5dkcu8WXfurvul2pK7itd4cu4WXZ0rtB13IAAgAAGvRvK76Zd5Bu9zXYubtPN3qG7gAAYPQ+y7prdyOuxWXfmbtW13ha7qld90u4AABX0ddG4kGZPC2Jt3k27qbdsiu+m3czbvKl3s27pZdvNuwNXdrLuFt3i27NDpxVO+cHuYbshV3py7hddqtu+GXbHLuql3uq7Y2159GzRXcobt6V2DS74ddyOu3bXepKsq90aK7IZd+qu8qXd7rs7t3fJb1ld/au/qXfdbtyN3Fa7CRtoKuwuXd/Lv/l2Hy7gFdl8uyBXdOL2CN2/m7t7d9hu3WXf3butl2KG72pd2cuyxXafLvFl27m7vTFiuy9+3cjrt3t2U67vpd0jG3s3Zibv12XdU7dIAeCu7S3e8rsll36y7Npd6Sux03a6bs/13bW7zGN80ux9tYEbsJl3B678Hd/jGyTMY3T2dN2my7Ftd6pu0aXbrLur127S7qpdlsu2u3Y3bs0zGtK7uFdhau0h3bQT3HIHyK7I1dixu1cPoXbvTl3x67HHdmMu4tXZXbusd38drH1dwAAF3oRLdzZuxCGZGruzl2wy7s9d4kvdS3e8SN0d3JO7T9l10u9qXbHLuxl3ky7mndjt8yeFqE7tGl2a27xDdiTu+u3baltpNFz67l9doVu8aXcdLtel2hy7gadjzPbpXb0rtgV3om7MZd8MuzOXdFL1NN3vK74Zd8MuwLXfyxs+d2dS79Zd6TuyVjZV7pNN27S7r82yE247MasS07t3qG7j/OC8uxF3Y12v+l3g67OFdmcu+bob5bt4V3Ky7Vuh7yu+K3Y3bvtlXlS79rd86u1pXadbtJN2cTbvldpsu0aXdcbuFl3Yy7ukp/xu5aXcq7uJp2PJbByzfNu6ZXcy7vYd2ta745d/Vu3VXcarudt3IAAdpdvTuxA3bkbsHN39S7TZd7yu8mXdLbtgV3py7rJtsU2ynduDbuFl3sO7s5d6zu3aXfQ7uYd3Fu7uHd7puxw3YGruxt3u27n2Nq7G+45fhD3zd2wK70ldlpu9qXYvrt2l3rG7oVd4pu5h3eO7uzl3ky7GTd5Mu503c27t+N2Bq7gAANfRIAAijd5Ru8mXexrunV2Km7Q+1zKUzmnbpADzd3Fu7sjdgDuyGXfm7vzV38q7Vrdm1u9t3Z0ru7d3CcbKFVw/nePXe3buNV3qG7H1dgcu0o3cLLvul2dK7trd5Uu2GXd1LvEN34e7/d1D6W85EeB7vSV3t27+ldwuu0ZXZx7uw92ie7ebFzkGzK+DJ7uzl2fy7d5d3yuyGXcfLvPl3gK7b5d21uzt3Zn2uH86me7gAAGPRVS7fVdhauy6XZDbtM13Cy7xDdnnu3D3fc/N7hnhKr49dvpu8HXeh7u2t2RO7rZdkpu+PXZtLsKN2Q27Ivdkcu9Q3ZA7vhl3vK7s9dpbu0aXcgAARt3Je7sFdg2u5AAG67vo93Pu7WPdnSu4fXZN7sGpbS27aVdkqu0OXeHLujt2me72Hdwsu/jXfyrsHt3pe78PdmPG2ebaOrutl3ZG7jddoGu+23ZjLu1l3Cy7pld3Uu27XY6rt8t3Ky7zHd/Uuxh3frLsRt2YW7wldxyu0aXaG7t9d2Bu7Q3d2cu553cSrt2l3Y27p5tmCM8H3Ycrs5N3jS7fLd4hu9H3fDLuJl34y79vdg0ux5XcbLth93ga7mHd21u9B3d/btNl3B27TZdvFu+1Xdgrv1V31S73FdkMuw73aG7to92U27Ofdwbu87Xb8bsxl3Ru743dybu/aXaNLv4GGDm75td45u7GXbz7ued2O+7LfdlPu933d77vo12B+7Q/dkfu87XcgAAi92w27dpdksu+aXenruZl2u67Xpdtdu66XaHLu4t3ba7TZdztuzhbZHD1M92cG7ybdvBu483al7uw93gCbe3Fpnu+Q3eTbtxd2aG7XDduhu9L3dgJsnhbWu7JLdnNu2WXdPbt492Iy7ZP5yqfVb3bRbtf93YK7h/dyBuxP3ePruQN3p+7YZdsbuxN3am7uL92fuLsuBtjLbAPd7rtFt2g67CDdyru95XaRrvX12Q27Ebd9Uu+L3cLLvm93be7hDd8luzt3f67tr93na7uPd5suwr3eBbuV93Me7itd3Su/WXYp7t6V3i+74hN/X8wPtqZ7sq13Wy7tvd6hu2D3ZIHvpV2yB7YA9qmW2kdfeABHd3Fu7yZdlHu743dt7unV2hy7RKelPuy93cLLtlN27S7s9d5Mu4AAEb0dGu6mXbh7uQAApK7dA9pxu553cPLtVl34y7Zbd+bu3QPYYHvm93nCbEKJlPu5D3e9Lsxl3rW78Pd8hvZAPfa7uVl2qe7prdhqu/WXYwHtDd3sB7s/dvAewv3dZqvUdHBjrbldjge5A3ZG7tjd2Da7+fdo0u+Q3YEyM8z7IAAgA9iVu6Z3Y+bs6V32rb+HltVu5r3eUbs693lS70Pds/uxG3YAIN2l2Oq7vzdxMu313fHruj13x67Vzdo0u8r3YGrvml26e7EFe846wojpXrsDV3x67dpdtlu6UPcjbvSd2Qq7mtdztu0PahaHuNt2cy7uddxGu8P3cz7tDd2a+7EPd3wezD3cLLsd92727sbdo625qOdn4sHN3NS7Old9Uu2D3eWHunt3Vh7JVdjMu3xXdbrsy92zjDRqxt/uwE3dnLuNV35B7Wld/3ux93fqrsuN2++7STd/Uuy43c9Lt2l3pG76pdg8uxoPdrLu/d3fG7Gzdr8LThNvnF2XHGwe72Nd3Su0/3at7sbV38W7THdvHu6vXZT7s2l2iW7ATdvSu5WXZKrvSd3EM7LUQeHu8hnf5lu05abh7wHd+4e2e3d7rs85anh7nNd/su19XY1f0UD2jS7VA92cuzQPcLLveD3oe78Pdv2M0UQY1f1Hd3GR7Kw9onu4zbeLWOEV6me7bLdhju89Xdt7vY93mh7Ifd18u7PXbJHsvD3ZG7a1drSu0P3fM7t6V3IAA61d2Mu7BXbeHuwV2Ph7Xw99cuweXeZHvK23+6r+I9kNuyD3ZPLvsN38h7/vd3W20z3fWHt/t3ay7NvdzHu9j3aeHvL92Q27ezd+ruwg3cVrtn93C+753diNuxeXaG7slV2Oq77Pdksu2aPabLtyD2Fh7ztdnfu9pXb37uD935h7OZdobuyv3cgAAZt3dy7Q5do5u/qXYNrvj13wy7rZdtAe13XbtHsvV20u7XQ9hyXWaTfjtsWk2ge7eo96Su76PYFHsY93lG71o92Hu6YAEv7skt3xy71I92kewaXchHvRN2+u7Ho9r0e2f3d9Hv+j3wx7gY9hsu82Xd37v993Qx7KY9yMe9GPazbtxj2Ex7rZdpMe2GPaz7vO135u7o5dpdu553fh7t6y3WzrBst9s65V5aG7vVj3qB7o3dlhuwc3bIrsz92cy71/dvNu6qXbv7sP93BG7Ppdgqu5j3ddLujD3Na78wl5VgNfXdvrs193x67xndiRq6r3ZDLuc12YK77pdpxux8PbBruwV3nq74Zd7Tu+GXY8rtfj2Qy78mx9oe6v3af7sT22pK7i3dzhu+E3fMHsY13+h7gHduuuz/XYkavJt2UW78mxxWu4S3eJbst92Ux7AfdpRq+8AFgrvc12Qq7JZdmiu++PYjLuVV2dy7GZdiCe+aXZvHuhV3py7ZA9hse87XcW7vIj2qy7Y5dh0uyt3Y+Hs0tHY+7jo97ru2QPbvv39j3R27pE9qVu+RPaNLuUT2aM7/pdmMuyv3cQ7uAd2NS7ZE9xdu3xPeLbsTj2Bq7upd+Pu7qXarLv1l2eB72pd/pu/BPYdLtFV3Y27zw990uxV3ZN7vkXXTzD4xOKi6wmbsHbtdoXS27YZd+Cu62XaTrtGT2WLrhWxz8w9k1YyavFL6He7WE9yMu3k1b1yPZU7/67HZdhMu3ZHvq7t3D36y7Dw9tjO+8AFnLvVl3ky7S1dkKu0FPZLLvSN2QxLuld9su87LY47v0V2tK7tXdhS68NXdGruMTmhW78rdtS6/7icBrt213bNtKLd2bY/kPalX0d92Qy7czdpOuyn3dtbuJt2Up7xpd6huxlPcU7sSZ2BG7+5d5Uu8qXa17uzl3fukupdvcu/GXakrvrN3AO7j1doOu3yjpwbvAABtO7undoDuyB3dzruJV3Cy7vdd1lu0JXdVbsvj3hK7Z7d2qu8VPZknsAN3Oy7qnV52AAT3ZDLvkN2acTYNd3iw2pYYEsNXk2RLDZqO+Mu9uPd7ruF12rHbcApvae93Xd7rsO92Zp7bfduae+5PfjLvi4naq7v5NyUC5C1c4ntDl3ey7/ZdwcuyOXfHLuaT34y7wLd4Tu553e8bveV2qy7IZd0tuyf3eNLsgd3Zy7aLV8gAIeXZCrtW13BB7kjd4luzaXfqrtOD3S27649wqe4nXbBrvoT2+dj35d8Ku09PeW7tTV3wq7mVduMu4WXcgADwz34y72M95lu1rXblbvTl3yW7vFNlcu+FXeTLuKj3Sm7xM9yAAN03ekbuCD3Hu7HVdpTuzPXZnLu2baSq7xZd+su8ZXaDrvvd2hu7TZdwAAPPooE96AewVXbUnsul2Sm7oM96hu8DXe/Ht/l3eZ7YU9lge7fXZKbvIz34678zd4Zu/NPY8nsWU2gq74Vd2We753bLbugz29Wr+AtJ6e9K3c6rtYd3JZ7xVdy52zzLqNnsM7bS27Z0l4OrXZQexnu3D3jS7N49ksu5l3ZGrs+13C5byzgTGe97XdjLu4z3me7xLdjZu4bPfCrtlWHnyZ8+cZ2e8B3YZbu83W6QAQ3dxbu19PbO7vTl2lISrot02e7xPcqrvuN3/5dcc96SuwnPabLtJz3zN9pM99Mu9qXcPLuAAAm9DT7ur13GO7MZdyAAJDPehns6V36y7xU9rcu0DXbBbtD2oc57Sc9+krdjPYbnut13YR71DdsJuzPXYsztZz2lu7Hc9sFuw8PZKbv192Fq7I8976eyb3ftTMtz2Te7bc9kduyOXcHntdz3Fq70td8Ju1lqZR839z3p57yc9rVxNXPZhntrj3cK7a7d+su1GPbnnvX92Qy7mtd9Oe9XLeT20bz3/ld9M9mWe/f3YNnult2jZ7f1Nw+ezGPbNnuez2A57tct3vbUbPez21PT3yG7Ac95QAPjPdjLuFl3avCBigfGw09PZ/LumABS27xM9p6ey9PbfLvDl3W3byO+tGw4m3YDnteD2Vh7L89gVuyoAA3nv5z2557iC9vOu4WXYDntAL30AA9s9jee6iruvntYz2557ODdgOe/Z3fdLtDl34e7z0l/ye6QvZjHvaT2Hh7Ic92cu/TPcgXtHz3eJ7Q89zPu8PPdBrvg13esb8GWwru0HXYdbsld2f272FdlAe60PZubtrD2Ax7kDdx92wDbttnsXFbsZ74s97Ke4rTbNrsTz2HZ7T09xNu/hPfDLvtl3ay7kAAQsu6qXa0XstT22p7GvdhGeyh7cj31EL3za1T093Lu25PYTLtJl3k27yC944e7a3cy7unD3Z67Hs9q0u+PXdWnvy6mUZL+e+naPYh3cqruHl2Rx7ZA99Xuxwvc87vudW299lupzGS+0cd7qydHG6y7MdNtOw9KoCHtRQL3ph7Jndwee79Pe7ru3937+7Hrdrvu+hXaJbvhl2sYLC+++Muy8Pe8nsbl2w270o9ofu8gucrpuxdX3gA3bdqj2zHqcP31Wq63+7rTdpBu62XfdLv513r67KbdgjuyFnf9Lvjl3Fu7dA92Ee3WPaAnsj03zo9PM9vsu/zPfe7sqj2Ph70C9t6e3Yvcw7uM12kx72Fd9Mu92XaqrsQT26y7updzWu5PXcNLvFl2mO7s5d6pe+E9ZU9tTy3sG7Mk9jqu3VPZjLvql2g67zDd9au44PfJbt9d2Cl77pd8Ze+6XczktSj3tK7so97mu6x3YfsNE93MQrYFW20e4BPdFHt3t25R7TPd41uzP3fgrsbV3HB70vdz6e6N3ctrs4V3M5LQQ9zru2OXc7btBe2r9T9sFsgezX3bAnsz12SJ76Y936e8OPdbLuoM2kvbXT1o6u8CvaAbsfD3b679ZdnSu4eXacXucz3svbbWWgCe4ePd8ruMD2Ox7BzdmUe8WXddLsOT3ua78Pdxhmw3jscnsRt2Fe7IDdkluzGXdgrvcV2HS73vdxtu5mXcIbtbj2ma7Qc95pe3aPduHuo93+V7GddiNuw73dt7spj3SK75y9xwe313a+Xt7N2FV7Ui91Me1j3YGruKT2i57UM98Ou7qXdBbs6V3NJ7Wld1Uu4k3fmbsbL2ty7xS9jyu5nJe3HvpL3qV7/Q9/Fe8yvfDLtwr3LPbxS+m5e15PelXt2l3ZV7A1diPu+Y3elnvPt3dF7+i9wSu0GXaNLtSV27y7OS9h0e4B3ZzLuhnGcR73rBlGPYx3aT7uF13Xu7GWdhXMzxVuT239z2bS7ATd3Uu7GXb0rtDd3vK7ildiCeyKPbbLuEr3YK7iw9jse7b3YGnugd3hp78Pd3Jm9sua8bt4t3Ry74Pd7Uu5qXesHt9V2Sq7649jXu1r3cLLvlD29e7xLdw3u0aXeN7tRj2ka7TNd4tu07XbHLtDl2kR7ztdjKezX3adHsll2927TZdw1e9cvZeHtZt2qh7go9q0e/b3cz7uOT2RZ7Sw9/Me/OXfzrt1t3c17469yde2t3edruwz3Px7Ond2Muxh3ZDLszj3wVz+8txeu1aXd7LsDd28277a9grO2lrvq7t+13jS7Y5d19e0Vnc/JPOwBv172pdkqu8WvdaHuAABS9GQbvWt2yB7569ituyFXdjLuCN3Wy7ta9pZm8b7ZXLs/12nu7P9d2lu2QPcvHtlr3na7U69yBu+kPeLXuYb2U17Ib1yrO2ASQV7sV92w177a9pFe6ZXafXsWV28+7eQ92mu8aXcgADKl3Hq7KbdrcuyWXcWHumV2517Ys9rcu+uPcLrtBj2++7+/d0ce9n3c0ntTV2My7BtdyAexOPc6ntaV3OZ7A69obuzxvc3HtGl2nW74td34e0X3Z0rsXl36Z7Wldjquy7XZ0ruzr3ay7Z/drje3aXeLXuNl2F27Po9zPuxpva03s4j3vztRjW7ye/x3YA3tAb3oG7IZd1oe0ZPfC4O1Z2ng7nK9/Fe+Szc5j3zvXCx7tZdg2uzdPdBcPQXbhB79A98Du+b3flXuY92F17B7dnDe02XcW7uaD2BB7tc9jZu7Wva1J1gElfR7yE98Mu2D3Z2zurd2sO7OHdlDe3h3a27sQd2oVLfq54QewaXdpbu2t2qh7+ddiBewNXfRnsouHsqthW9ysu6FXcAVufWnnYAvo923uxuXcVnsXr3dO749diws2hPaJzvVb2My7l7diAO9ArdUHt7r3At7Oi9oOPdL3di3tCD3i27fOd+ws7HPY6Ht9l3Ku7zq9z1m6DPZ9ZvWL3AG7wDd3FuxY3YDZuJt21t721doNe7kveanutT2VK7rZd4me2mXb0ruTL36O7jndkuvZ/lsSntIN2MK7Etd0eoyr3Wu3tLV2ea7Qgd52AGlvcIVsL1HlW7tM92We8U3ee3skK33gAxM94Gk3avd3HvKN3VS7Wldxle9WzbU+szx7UF79ZdgOe4WXYUrspT2k57pbd67e/WzbNLviz2y270O9pRezDccEbuHr29K7Ua9jD2NpPcfHvxT3487r29iOu62Xdj7uFl3b67tql0tu4uzedgDql3K+7Z3dl6u+PXfz7vI736bjKM9lvOy9PetbtTl2jS7r7djiu+FXe4VvYN2XZ73O9qVu+7PZlbsqAAgd7d/dvRe2Dve1Luul2UW7C+dzGe0HXYR3sm93lAA4u9kHe1LvZl3uWz2Svr5O9ynexbSbgbvKT22m7Yitvqe+9XcrLsxl3vK72pdwAANHoA1dote+6XZr7sf93TW7+Fd+Hu0MHeyq2id2uO7xS9tsu1rPb83uQF3NNzurdjCu8AAGNbsYV2Vt7C099Dm6N9bpABnb3hy7pS9kMuyu3cbLvAAAQO7Zy9zCuxY3ZBGvsVFQ97bvdp5e63XdrLt2N3wy7wAAKQezjXdI5tMtbuaj0K9w6e0gXdr5vYN2iu7O1d3Ke+oredgD713vu7lZdqsu78HZV7r713Fh7oO98He1NuaMT3173OB7eddyEO299bsT0iF7W97yQ99ve4iHfSa0BNb967Ze91kayJ3dB3uZ12YK7Npd7Su8APdEbubN2obtJVdnSu+tXfD3teK3iC7JN+ukAPvXZTHtlt2e97HDdvOuyN3coru+K2h97KA9lMe/pzdH3vLN2J97U+9/IexvvZr7u0T3UR7lZdiCe5EPcU3vhl3YK7s9d7ue4B3Z33vyb2He7Uld+Hu+KHbX3uB12g67sm99ve/YIYNLu6l2nG7CZdjQALSPdHXt/73qJ70ld6He0aPYGrvjb2Cd7TNdhMu5NPaF3shl3TV7ei9o2u6aHavJ1b725N7YZdmNe0kIaAPsgH34y7YB9kde2QPccnv813wy7Btdobu4Q3fsXvWt2n17s9d+iuzpXYF7tDl27S7429p1u+1XbHLuld3YK7h49n76zp9Chu38j3ay78+9xfeynvfEXt9l3bm7G+9oGewvvfD3sP73lN7KgAAg+wA3ejDublmgutAE9tMu7g3ZgbtQ3abl7Uld7Ju4SPYPnsBZbru79Zdjke8cPaiVsSPGED7NXdi/e5qvcsXujd2TO7Uq93VezkvZpaMNt2Ca7JLdlAe823fMntW12779ri940u8XPfRrtDd2H97na9sVe+GXdQnumb3NN78+9+Hu2BWbXv35D3Kh7bG9olu+6Xf5XslN2wa7bS9wsuyv3eXXsFV2Bq7NLR8euzhPZort337Kq7hZdwQeyYfdjLuND3X97uB9mMu8Q3bTLuVd31S7Wi9y1e+TPdfLsMb29F77U9hze0kvdmHtA138h7Kh9tMuyGXbv3vjj2Bq7JVdkKu4WXd0HubV6mN7LG9qoeyG3eUPsfD2Wj7mi9u0u6ZXZDLuPV3TK7vPdgnmwoHsPHshl3YK7NtdtXu5YfcJ3tEz3na7T+9o0u8NXfdLsG138h7NfdgCewIvaEXucH2O27NLR7Du9GXbRHs8V2CG7NogDie5h3bN7vEN3NF7+Nd3Qe1QfdG7uiz3pK7OB9t8u1JXdtbslN2+h7kDd5MewLXYdLtql27S7IR9/Pc/eboHbtDl3yW7fldpCe34ffCPsrD2qh7a9d3/eyIffrLu3N2np7jk9xbu+g3fePsVb2ch71e9v1exhXet3umV2AJ7/Hdz1e/WXd4jvcYX3gANy9jRex+PfWrsYV3Zy7Iq916u9XvfyHvkt3QF7j69rmuwJ3f9gBpK2bZ7oVdjMu+93emXv6H2Vh7JU993e+S3eCrsU72GR7PJ9gau2SvdnrvbH2Oh7Je9i6u7s3ezXv1V21h77M95Tu0aXfpntUT3IG7no970e/V3d1Luyn3k27co9+A+5h3cN3tVr2hp74Hdg6eygPZT7tp92Z+7DG90tu6Rvb1Luyn2dl7fkdvgu8gXewbsoD2AJ7uR9gQuzcvZtLsT12qy7IVdswG5M/sNACqr3D97mq9vY+zKfax7tNl20D7mtd9Gu0kfaNnveW7p27Qddjie3PPYdXsJH2nS7A1d0gewpXfHru5H3+J7UkhoQu3lhY35teN3eJ7+Q9uUe6IXaEB0AD3q97s09wsu4gvbyHsoD2kgbyDpxrCx1HaR83SF2M/jbWFpzO/fzcqBtP82GlbBqV+oG+oXfGjsA6WelbC2FvQux7pn/5sjTXtC7Y2F9pW2zWZ1yMrR2VsLQy9t2u0DXZTHsAT3Ne72vdsTu8qXb7XsG92je7DG98A+2QPctHslj3N17Ma9g1LbuvcLLs472zN74a9y4exs1dzruKT2FN7jg9oze0dve7Xu9r2hy7+vdgde/r3ZS3u3TX3gbth5oHu3i3cZ0vJt3a0rgA9nBe5Mrev7taV2997MMd23u0tId5PvXT3llbZfd2Ru1/4f1rua13VS77h9k3u5EeeWLvOwBEy7LFdjXS+TvbDbvotaQ2ToM90Be8+3fOLuW6XjN7b/dnfewNXYZwtGV3TK7yZdi5WxgEf4XsdD3xZ7n/dkAe083bA9OxV27K7AE9n8u3T3e+ltdL3cF7z7d1nu2+3afLtAV3Xy7OZd+i+505d1t22t2fy77Tp39/Q2yZYvvs93327XPds8u/qXdljudsnZQbfM1xWOwqDZlfBg928T7N7du9u/D3Y1jsfK3GL7vo9iE+7Yfa1BtzV2667Hldlvu3hlYD3vaz3VjzqelnZ07W5nXHv24XePjT89rNuyGvatLu1j3q97VQ92+u1NQaRnsal3+D7KW9lXe5LvcZXsot2TT7Ip9s0+yaXZxLuNC3nYA9nd/suy0vfrLvad3mK7XU9rvS3SADGbuJ13jy77pd2suy8eZR83LN2Pd7QXW5Zu/RXfWrsWN37Ajyzd3suy2Xb9rv1V3uO7qn+5Zu9KPdNbujl3YK7Gp9hpu0xlcSvs6d2yu77sd94AMs3YObvdl2Z27f9Z52AMs3cPLt7l2i67Ec1yK+5nXdWbvY92627lnxpq+5nXeTLstX2bW7Cld74e4MLZqvuZ13lS7w19nmuxw9uWbv1l3AAA/eg813iwbBV94yu7/Xd8HvI13UVbw1OxK++mXZPnt8V3XS76Kt4OO1CeaxVthx2gt7Evd4o+3bvZzLsb72FL7P7du9uxpfeJbudg3JIskAADfe0T3dxVtVBGBu7mA9uRu+kPdTLsjb3mgj+nd9du2W3dN7u4T3y477wAYQe5AACmruNV3Zy7oZ9yLu2R3bnBv/26Lhb/8h5Hu71vf0rsg33Qq7YN9iG+7tvZBvs4L3lN7HKtzcrXMvZbrtoL2+u7hu9yAAJ23YvLum73VR79Fdpie/D3cHjuJt2UZ75LdtG+4k3eNLtPr33q7GU97eaxzvbHLtc72ceqF5drXeyQ3YXjvwi3H8LzrpwVW693syvtij2jS7Ei9+ue3GXf/nvHN2Fl7VVd5Po8s3cghsc12Yy7G9dn2u3BDbpADEr3Dy7sNd7yu3xIEOfquGXmfNLg97y++D3Ywrv1l3IL7p+94tu7G3Yqz2HnIIME5p5wO1GEZaW62RGWlS7zsAQAAJm9gAAG9HAAAxI2AAAGOtNLuAAAfccAAAYPZAAEAACyi4AABKhwAAB1LgAAHQ7IAAjt912+36XfeACAAAKGYDvuh33nb7bt9skW+8AEAAAgE4AABaZyAAIAAAJBwAALsLZqt52AJnfcgACAABAMcAAC3o4AAAXRyAAIAABTZwAAAA1gAADVX477oCd50bYAABS5wAACE9ft9yAAIAABdxwAAJvNLIRwAABnjgAAH3bAAALQ0132klDgAAV57AAANQPZZXAAALguAABezsAAAvPYAAB2WkO+3q/pbvuAAAP7sAAADk5AABHvvIJ26QAk992e+yHfY1f1L33V776998/o5vfenvtz33fb7gd9te+6Pff6hubcn3gAgAAPVHAAAPOMh33y77gAADgnAAAJGM132+srdIAQAABedkAAQAACUtId9qe+/3fafdOWhGv77d99h++y/fbfvstq2ZXwv99yAAP/fZrvuLO7AAAtQOAAAcCbA9N+33AAAAwvu33z771d9r4i6g/fQfth32377Mb2tO+5AAEAACTA4AAEGBjhO3SAEAAAMPYAAF6awh+823sAAAiM4AAAaxvB+7c2bpAAEP3AAArrVMP3fFrLD91yu4AABOhtO+/wnfeACAAAYZb4ft0mXywjgAABAnhH7AOV4IA87AEAAAAzYAAErZyAAIAAGg6mu+3u3sAAARvYAABolwAAKFdgAAEebANb/t9mO+4AAFQJwAADQdTl58u+4AAFLxwAAAnjgAAGs6xeTgAABv7AAAjhOV33AAAMTU4tnAAApi2AAAAOucfuY5X3gAgAAFTXAAALQOAABIWYaWuAAAx0cAAAy4zonb8fuAAAdFbFhuAABJzukftpXnRH7s1dukAIAAB6BwAAIA1gAAVDWhlrbj98x+5AAEAAA2CzXfbeANuP3AAALPU3V2CO9PdqMlQ9bDerz1kd6K77vot94AIAAATBtx+4AAApRnZa17feJAOAAAVeZnvvy5XAAAieOeP36ATzsAKe+4AAFbF4MWzk/Z6fuvkX3gAgAAE876H7uT9np+w3TsAAAXTTQ/YNyuXBbAAAk8uAABI1Ykft3Bbl77gAAD9rAAANeMbP3phj1Nd94AIAAAVayO+xI/YM72AABw0Z6fuNfbWH7PT99t3YAAB8xwAAL1T9cN8u+4AABaxwAAA7Na5l5++4AAA9Oh5++rXbpAATP3IAAVz9vuG+8AEAAAuNYAAFTZ8u++4CcAAAQY4AAAIh8F+08MdzAPOwBAAAM53eP3YX7vtd865gI/fQfst33AAAIZ2zJ26QAJD99O+xnfYHvusrXnYAjd9v2+0XfcAAA4g5AAGHvuAABKscAAAYLYAAAnRsJ+8XXfH60kv3IAAVD96uu85EZZfsbP3LH7Nd9/yi4AAAgOlu+/W4zWTt0gA277nT9/uu+8AEAAAdo4K/bEPi7a3fQt3D9wAADtDgAAEBrIAAgAARDXAAAo6Pz12sxtg99pB+ycnb4l0IP3AAAlV2QABQn7FAprF+32LaxfuQABAAAoeOAABSDtPru8WXyn7v1dusLcOoawi0bP3AAAnx2QABAAAuwOAABGQc4Rsuv3IAAgAAF1XtX7s6hoRG+8AEAACvNW3fcgACdP3VX75j9iRG1y/ZnvvQP2a77qgpk8Ld3fZbvuAAAYPsAAA37ZY/ZLvvVP3AQT1FtpN+2m/YzfsUv2EH7gAABxq/k7YFW3N++m/cgAAqP3U37z99wAAClNkAAQAAIiTJa1st+5Y/cgACAAA+GZ5fvomE2Mt3j9wAAC5dFb9qt+7W/YbfuNrWjH7RYx4h+zM/cgABDv3DG7zsASu+6O/fHfuWN31Jt9z9sd+8Y/bSRsDu7Pn7dz9hd+9OtfcL2AAAMIcAACDk/fffrfuAABNUbXfudQG/C9G79xZ+7u/brfsHv2Z37tSNhgq+8ABPfu7v3AAAIb3kP20m7ooJ7d+/e/cffvgS3Qi9gAAGIn6H7nt9xO+5BLdusvEP3K77P79zFO30/ZdvuQABAAAFV0dP2dkbIb9wAAATj6EtwAACTjgAAX5qCH7eL9zO+6B/cAAAvo2/fambv3XMqH7RD94h+/i/fQ/s133CU7gAAGUXAAAE52QABE77gAADTX0NrQgOwAADg1gAAD3HIAATb96FG2TZZdjhMf3CJbgLd52AIAAAflmO+8PfZbvuAAAIycgACAAAQSZbvs133p9bKgO7j+5S/f4/uQABAAAJQuMP2oW7tbmPR+5AADvfvWP23M7Cn9wO+4AAB9OyAAIAAAu5oj+y3fcAAAQjSXfcAAANNYAAEtVulO7kVYZTt0gA9H7mn9nT+/p/ZLvuAAAXpp5ftX63YYtgAAQc6cn7kAADd+/o/cwftP633gArn9yAAAi/cAAAnLTy/Y3hyuf2uW7fXZ2GLQQ/Y8/tef2YtDOd9yAAIAAA7lwAAIuToH9wAAKETgAAGY6FW71AZgPrYAAALxwAABB1qBtnL+36/YDfsbwGwP7gAABRbIAAOX9h2yyV/bK/vZf2Cv7Qqdj1G+8AEcftyv3AAAFC2UG3nYAvH9me+4AABQeyAANB/eXvv+t37uzXBtiu+4AABwWyAAIAABFRlu+4AAB1Fw1+4y/f9suWBntWtLL9wAACDj5L9kb++N/cAAAi4/i/crvsO33IAADt9l2+5m/fLvuaf3K77hb9wAABkNpgAYb+4AAAz2wAABrjkAAYN+1S/cgACAAAACdMfuAAAYwcW/tNv3NP7gAAEkHAAAGnOV33AAAHIOAAAUsbMNu9t34Mt839xb+6N/bG/urf3M77639zb+6B/Yrvtff3fv7s7dpNO8S/abvuQABAAAELMu33vH7yqd9F+yHfd7vswP3wjbzsAPe+5AAEx/sAP3exTdIAQAACdNHz91u+5i/d3ft3f3H27zsALe+yffYPvu9MXnYAgAAEDWtn7kAAdF+yXfbu/sK9mSf7ZP9in+6Y/cqQMYf2dU7rkp4N+9B/cgADl33AAApU2VuNIAAvn9z1+8xjcAADXTeA/dKUBHMWJX7tbjfF+1anco7uKPbAAAGvOAAAFRcAAAEc/nfYLvu7v2/b7OT9wAACYdUX9mmY4AAFU1uJ+0cgcd80gv37v7Ext83+8AAGt/tI/2Uf7+O1wAACpdgAAFyaEJTgAAETG0v7tmNjz+94ke4fvLP3IAAgAAC9mbf7T9lon+3K/cgAD+/2SWLTb9yAAJY/cAADSg5Z3cJ6KAABKHr8/uBf2nO7XWpFO+92/bxrNE/23P7EH9/LG4AAFwewAAALj4H9yD+4Q5ZV7qAAACCeL/sRp3qGdFf9iD+5AAFS/tRf2TdDwf94Ufcvfbk/t8OX3gAiD92NO/V/blftRf2TWLCD9wAADmzukp03+3R/aa7t4lXa3MYH9wAAAct4b91V+3j/apfst33Hf73j9wAAJQtgAACaaif71gAQAACM1gAAWMHK77cr9wAAAU1gAAVqGl/7gAAGTqZu7GadjZI4L/eF/ti/2Jf7OT9zT+56/cAAAGq+5/cNfsH/3V/7t0t67a63zvP/ui/3xf7rn9m/+x6/fv/sbv3H/7K/9vFAN2/bn/t6f3AAALN2QABAAAvgsr/3jkjAPdhfndB/cAAAVa5XfdXvuAAApUaL/vov3zX7UAD5Cq9Xtb4l1kv2G77Qd9wAAAG9gAABkXe37kAAZ++6vfcAADdXYAAAjVp/+26bdb2vM+bAAAEn2QAASX7mn9zH+4AAB6Gh/+0E/eoAclp2ultNP9kO+yPfcQAeQABKAHnADmXG9OGedgAvP2W77BADzT+4PfcAAAca94/f4AeCAOMAHcMtjz88JVdVftB32Z77tb9pL+6O/aVfuAAAVUZkAd/32pAHNL9wAAAPdId9g1LTgA8gACAAB4HsgAAoP3h775d9yAAJr/a1/uaf3AAAvuOrf2//7HADhQBzF1Qsqsoy26QAgAADzG8AHLP992+6t/crfskAOe37Lt9wAAC4TtgD7X+zYA+kfvJ33l/7q/9yAAJv/cgACAAARyeWfu3/3D/7339kvu5ZVedgBqv3IAAn39wAABqDq39+v+z2/aDvuAAAbudu/sPf2S77gAACPHa37Gz9wAAD2dc/9rIB7kA4u/s1APd37UQDmIB9YACSAeV339/7R/9/Aw8UA9KAePf3IAAlQDyAADUA9W/vdf3K77gAAEg6e37TP9yAAMm/e7vv0P2bv7kAAQAALcLq396X+8N/cAAA/Ez9/dB/N1pGLXL8GW4H+6t/abfs7f3IAAt/9lwB0//d/7tAgm9gHFL9nYB5AAEQfuHAP//7RP98Ae/Bltmqs0f2Lv7YH9wAAImjc/9vYB2XffLvutAO4gHW/93f+7W4zSAeED2OljKvdOf+3vfdrfvdv3IAAYgDiQB5AAEAAA3y4AAAtVyu+4AAAOa/oB8gA6L/uAABgmsgACAABMGuoAd4/2p77bADwAADKtkAAbt+6t/cAAAVM3gA8rvtaP3AAAuh2QAAXv7nn9wAABaDB39/4B/2nfEHumZbcf7rP9il+4SA7XvuAAAbWt//uGv26X7xwD5Qe1u5bpAAIP3g37Q39rT2It/fZAdP32a37Lz9iP+4AAAplqgB1AA8gAArAP7v7NgDzu+2QA5pfuHf3TAA8AD8X++CifBAfiAPNP7sIDhEB0iA8gAAoAPIAAKID9B+3//fKAdCAPDO78GWwAAJ9NgAAA6GLv7z39+f+5AAGM/vygPN/72/9zoB8f/aqtsJD2iRzjwDpb+yD/cY/spv3037i39xB++6A4P/uegPYibFI552ADoA+8fsyf3a37nt9me++H/eZ0BZP2Hb7gAAH1HnQH8oD+V+0q/bVftz/3AAAIn2AAAdNY9fuL/23AHZx1+a2zzLro/sEAPAAA7I0l33AAAD6OGf2aX7Sv98oB8gA+oAdD2pAAAAz2UP3KX7gAAW1X/P7c/9u7+zS/abAcr/2th7JtVg4w8vfcAAALY/wA6QAe1v30X7kAANJ+4AAF2hi1+24A434sqDW977mn9wAAL0D5r97kB64A9iAcHf2637Jd9sP+5AADlftaP3IAAld9wAALdDcr95++1u7vhD3ov3gAHYADyAB7EA8AAA6s9I/dyfsu33a371J1+cB8//b+JtRjmASb4uW5cB5AADXAdyAO5QHsQDjV/YAAA5uwAAKk9c/9+AB+OA9RAcYgPLQHLI9prrRBA+RAfM5b0AH74DzEm5QJbLHPVEGsgHOADku+4AAEQJrf+9W/alAfcP3ZQHWIDwAABnLLd95e+5p/cAAATA0HffhAeAAALOYNAd7gODwHvr9qe++sA6llvanXWCtjoDyt+6QA4EAcAQOrxzr6BiEB4AAAKelu+6S/dKAf/gOsQHQEDhB+zYA/iAcDf2if7Xb90wABG/Zn/urf3AAAwePIAOKQHkAAHoB3d/b6Ad3f3fX7CoD5iB7HbZjOuiAPxAHAkDoSB3d/ZEgfygOSX7NgD0AB5AAEAAAOC5AAELfvQQP5QHYkDiSBxv/cgABSQOZIHU/9+SB5AACUgdGgOVIHakDsoB6UA60gdrAOYf78KpzjE3OPfIzsLj3JhLgAAAdrK77gAADbqyX7tb92TE4AAFQay1++L/eXvtAQPIAAkd90d+9SA842Nz/2CwH3j9ob+yOdb4iyaf3qX7BoDtf+7aA5NAd2QPkIHlS+ukAHP/Zdvsi/3d37dH9rSB94/ZbvsB33Z77F392TE4p/e+/v3f3/P7WUDyAALU/eIfuAAACFof/sWgO3AHHmJm7+4AABt12t+76/etAeQAAaoHq39/MB4WA8rvu1v2UQHq39xKB4AAAj1yAAIAABja0x+5AABnvsT335QHc0DmMB4n/ZAgcl33pH7vr92KBzS0bn/sNf23H7xy+1b+4AAA4Z+EB76/YCgfAO2EX7gAAX1HW77VID/R+6t/cAAALdSE/aLvuHgP2oHnUDuf+4AABox9r+4AABdOxx+5AAAiftyv2+wHRoD6t+9JA9MABjQODjdUhOEu+7pPdVN0t33AAAEUMGT2ozdmn9wGB6MA5WAdyv3Dv7BJLDi69ZPdtmy2T3WLrId9wAADKjuMD5iB85PaxVPpjbM77dke3H+2uA78nvD330n7IYlon+y3feG/uAAAarpL/tjS6UH7I4DqMg5E/eQsMSP3lpdXL9wj+/j5r0fuzbG2P7P/ezO+0N/a0fscgOuv7y99qL+wltsAAA5y8X/d+6QEAO3v7kAARP+z1/ZuwuZ33xf7Wj9tJ+8dA9OgdX/3NP7Fd94AAKq/bEAcB32KcTLf9mj+zTidqfsqABpQHgAAXabIAAcsD7aey81bgFMsv2RX7R095nzTLA/A/vPAPIAAXsD5OWy8A/untniXIWrTADyAAIAADoxl2++MA8gAAkf36H7zd9wAAATrLd9g7+5AAD9vskQO/b77X9zT+4AABAmkGB4iA5nvsnf2Nn7+39o7+z1A5dgccgPCoHVL9qL+xhJfeAAO33U37kAAUR+6t/drAdjAOe37Y99wAALWdCID0wAFu/bTvurf2uX7McD9r+yHffzgeFwOdIHWctn2Xa3A8gACAAARte2gcFwPof71gAL3+zS/Z7fuAABkxtvvtDwPbNtgAAQGW8UAud9wAACxLId94b+2AA8AADPNcnA8gACAAAVZsAAAofZAAFbgdaQOrP7HwD3/+4eA6GgfIQO9M75FOk+B2fA5bgeQABAAACG21v2tKDmn9wAADBNqb9il+4p/d9/vWz36/DtXGFOB7Bqa/gc/wP3P7H0Duv+yl/crgdGZ2fZ77wAEj+8vfeifuQABl779cDp+B0XA7KsOvwP34HFxW6T+6Ag8gABe/3p4HyLt33wnVvuwQeQAAc4HXb9il+4AABi1xO+5XfZ7fspP2tH7mn9hB+5W425Ae3wOL5TO6OczfcQg9IQcUv3AAADhOef2e37eT9i7+zmA8AAAU43P/YYQetAOKabXEUbOByDA7IQeQABuEH1CD/d+6t/ZdvuAAAASd3ft5P3NP73CDl0B8hA7akuid7ZdtoCDil++Y/eg/uAABbDvBgcqIPIAAbYDouB/wFfEQeQABv4HFL989+6t/fhAeef3EQHxiD0xBzXfdesNsIOJEHUiDyhB7Ig9oQf0IPGEHg0Dy0B2AceT22AABaesAADLkygg8i/sxwP/ld7CD3OB0fA9PgetwPVv7aCDv6mxIg6Hgeg02qyt2e26T+yHfeCQcoIOi37ZiDst28+5lUgdr32EH7ZiDyeBxs/b9fsUv3277cr96T+45/cVnPo02mUtGSD0H+xnfeNgeRf2CYHaRJwIADog82/upv2aP7+L9jWgyE+AkQeIgPz4HFL9yiB08/cgAAZIOPgHSsDpuW9T/ZbgfGwOfwH5D9j7++qA9QQd5wOC4HxsD3j+3x/dUQeef2a777ZVu0Bwi/YdAeBgPLH7mn9hr+1F/bgzPG9GsEHrSDxT+1D/dgfukB3ZntESD1pB4AACk68GB2D/fhAemAAB4H44DlSB1F/YtpvdIPLEHYCDkMBypA+Xvv6P2hv7HUDzT+zS/cAAAzzdy/d8zu3zmqqd1UDkX+0X/epAeLf2g6bXnVkOm9DBelUCAAAYVYLgeaf3CZLId96kB+D/ZygdMIOsQHOZRxb+9MA9mAeQAAkUHGz9zT+2Eg9cgcxdWw9T0qgEiB8vfewgdb/3qYHAWdoeW63TaP32L33LH7U99l2+5p/cAAA/PewA75AczPZW+dZkDyAABZA9vAfFdXws7zsANeB5AAEAAACXc2/YGAcdQP/P7q39wAAAETR8D4X+4f/Zbvsh33Hb70D92lB6DgcnltZq7/htz99wAABqdNgDwAADg9br97iB5nJcpQeQABKIHNED+Fe0bBeQcNmoPqIHu7931+3WA+QAerf3KH79D9j0Q1wdpZfs5gPGH7FqDzZg/bBbkge932qX7ikD8GBzEA+xXt3MHtD9OqDile7EAhsAdyv2/b7Y39xb+3qg8AAA1NfS/ctAdsr3kHDY0D0EBz2/f0ftT33NP7OqDku+/qA+UgeUgO/n7KwDs7+waA+YQeQABAAAnGvh/3u37Jd9wAAD/dgAABBrxf7vqDuf+0E/ekget33d4HJd9lQBzPfc0/vwgPRgHD0D9YB2QTobvvFIOA77J39wAACdzslR07+2O/YzQddoX0YHJd9ke++YA9jvuu33/IHQ8D1eWyjHrBAe+oO3vb77BkTXZMA4rQeXf2w37Eb98x+5p/cR/snQOVX7qr9rFB24A7rXu4x7AAAEqOAAAboeh/umABcgHRf9jQB5AAG0AcyAPy4Hld9owB5AADtAcXf2I37Rf9nMB8G/Zo/sh33uv7NL9wAAA5dkAAHAB5wg8jvuHgOfUHfqDyAAOTA85QduAPtXraWu3IB/uA9FfuHy24Vzlp2hDB3W/ZmftK+3PwrVMezMB4eg+yAc5AO5/7SQD+t+0hA9desp3bQ37U/98x+0XffBgdz/2v/7l396D+/gg6I3u9M2wCSuQD1b++hg9kQe1gOi/7gAAKQba3Gy99lOBxG/dW/sCv3AAAEDW+IP5QHc/9z9B5AAE5/s7oPKMH+d9wAAKWrq39xe+29/eQAe332gMHKT98x+xd/bIwdiYP4gH3X91oB729ZY/sdgALv7OGD+oBzkA5Lvs3QOq77bt97v23GpZ1Qceb2PIrzWd94AIAABRWg3+2z/Z5/v+b21z924D3cB+H/crfuAwPBoHKkDsEBxCA+YAdT33AAAow0noPEt7zsAdH+6UA52zvv/3L/7kv9r1+xKzYMuMOAPQP7id967+65/Yx/sBYPhoHDtWnWPUlg+xAcE/3YPr5pO9kB++g4sLNyQPg37Cr97n++og/GitZcRCrjcF2/H+zXfagVu9rm6QAy997L+0X/ej13JYO2AHRwDqAB4UhbdNPTb33gAx8DoO+8Ug4cAe1uMWUHnrN1uBz6zZuQfK/3lF7zsAQu+6t/eGwd3IOHkHU8D3NB0eA4HvtsB3pe6gAAQ5qCH7gsD9Nm8ZtuWwdZs3nYAL39jR+2S/ZtzvOwBH4Hg2DuQOwPA+BpNF33bMHBADiHe0kNeZ82dwOULTkT9oZByEg/AQco72/4H+j9lC093fcAAAVPR8A81UtiQPIAACD9qe+1F/cc+vvABy77Ld92N+3dA6i/u05a34HNO9ukAJE/ZsAd233kAH4MDqL+56pfeABywOW870n92e+5AABmfsgv3pP7/O9ukAAl/dwQcpf2VAAin907BwQA7l3vvABBP77X9wAABP1ygAAnB2dg5K+taP3AAAA2OAAAFzoHcP9YOxFbE/9yAAB1A5sAdT32W77KkDu3+9b/cuGt0wOM77uv93d+zzg5D/ue72evresDyAAB2A71furf2cv7wAAfL+/6/egLsrXaTUHtODrd+yJ/cgABzf3gAAp392Au4orfeABK4OVcHoH9j9+8AAHofuXB2yOb9p9ukACy/Zb/tmYPeLTkXB6P+3sg9E/sZ3G6QAwP9sn+7XvedgA3f3zH7Gj9jAuyr3UAADCdYAAAnV5N+5S/apfvmP2TX7ne9oxPQHfbm/tEAPqX7geD7F+74rej/tB4PWRr0f97bB8oycAACfY7x/atgdw/X+4rZ9es1+2/A/9wdu4O2tzeWDmPB1Hg9ZGvD33AAAMe3+f2pMHTb9i7+1S/boQdQYPQP7gAAXyHwYH22D7tB99/fILsFg2TE9EeDjR+yoAEzvuXKJ+/74v97++79A8gAAXoPh77mn9ub+8bA8dAcef37/7+ID6l+zEA8wPtvxWgTdbeDjvBxnfcuUSOJ7NP7/T942B4AAFk1qe++Pg++wedP3d0HkAAPP+ytA9A/vD4P/cHU+Dggu/R/cgADJ4OmoHKcDzn+7W40AAAYreXfYu/u+f3lAAneDjcs+A3sAAAiqxu/eHvsdgPlGTmoDtkXat/atfvQ/2jD7QCtvPB9sg/oQd9/3wf73lun9BwGA7zfu9APjl9i39zn+8Xg/8/uNAPqgHJd96l+0wg+eQdDwPQj7CDept+7W/cAAA8XXMA43ftt33d37gAATqG6P79YDtMByVg++wegEP4sHyMDvU3YDg5nvvd326P710DyAALgQ8gAC9YOmIHv39yAAGd/djQerf3Bf7aCDtsBx/g9W/sBf2D8Hvr9gh+5tXrX/v6P25/7L+D77+4gA4RfumAB4wH4f9yQh5XfYSAdGgPLQHdzWnW0/3/ZhAf333AAAFsOmAA7QHRf9pt+zYA540tJv2077zd945fZXfZLvvkP2oQHjX95b+6YAEAACRkyN/ZAAcpwOEH7r0DoJ+3P/ZQIeDQOfoHAcDs7+yVg7YLvOwAUn7KT9rZB3m/drft3v3tUHqBDykB/CA+g/vi/2sX7q39p++2QQ/lAdE/2Qn7ARD8t+5Lg7n/uwgOYgHRJ9lJW3eA/u/vi/3K77B39xIhzsg/xfuN4PuC7QT+u6B+vA4zvtDf3JcHF3992+3gA9rftL32KCHwAABr+wmg/lAehAO8iHjhDvv+4AAB5u1b+xbA6agcLQPIAATqDou+wi/YoIf4IPfMLndpa3B9sg4oIfNf3/JrzfN0RQOYDcAAAbTZAAGrQfD33yCHQBDvN+zYA4HwdD4OtIH/f9xoh7EA8IwfEP3AAAlmvLf3vLdW39xb+0P/crvvcP3hMHq/9oqO3krZwy3R/24/7+Z9xdneLg8lwe7APtkHi39ot+xWfYkLv83b3gAuP9yrB1x0a6juEDG2X7shd1atQ8Q71fsIv2s/7Of9nmB9RTvZAcOf26lbzsAPJ+21NZ5l0O33AAAjD2EOnX+bxDpsEB+mg5sAf4/3a37yfh8XLaz/dKAf1gPW77Y8Dku+6yA4JAddv3Vv7g99rkB+cQ+sABTgO8n7NgDwAALmT5d97whxoXb7PtaF3l8jGBcZLB1lg/U6MQS7P8A7JDge+yDpckp08AOlX9699rpW71NbGBuDn3sobkwN/kh8ffd4Aej32wdLs6e8wuzUA7vQeaAPIAA0YDwwB8YA+RCQXf2cAHtb9wAABAT0j9jH+5Bg+gwctYOKoHuh59Uh3X/aVIfRgPjoH4v9rrB8Ug6hAeB326i7E7xlXurQg8Z0sdQPa0rzpDlgW3SAEAABJjS3fa8POZ/320rmd9iYh+/4Z2C13f3CsHX/hwAAKrNY8D6VB2rg/F/v9P21/7I6V4z+zGQ8nSt0gAG77v79wnC275r4AcxwPDsHOul9I80+8cmgeQAAkyH/uDit+6L/YZwt6f2cwHRF97Os9q1veAcV32tiHyD9tB++ffcpmsCkOR77wsdzwW6LHboCOaf2af7Jd9rrGtKQ4AgchC3BjzA9Zx5W3SACvAd4kPeQHbgDlS+wiXeb5tfK2Q77vYDoch7cA8XrPvAASX7eGV8XB66Q6MvvA9HXOtMz99B+x1A+VQfO33ZkHoQD0++zHfcJwcl32w77t99mOB9kLbay2rf2ioHaqDgrPVbNaBCKaP2QVbnWDwAAJnt8V9lXuo1A9TwcvsneX7Jf9+wI4AAEVVnJ+y7HbpAAbP3+X7gAAEFXSS7zsAdr+y3fcBgeAABsDp6Fu/kOvSHjV9ukAMfA8AAAXHXCrbpAByv2z0HvV9ukAIAAA+l0a+xs/cAAANnUirfeACAAAEMaDvtG4P/Y77wAZ++4AABgOnWB+tfZV7rJv3AAABh18f29r7svOEOO4dfZZLt0gBWcHEID2t+3ig5u/sl32z0HVCD8GB3d/e0wcN4Xa5rMj90qB41g9bvtt33QwHXQDiTK87AEqwemABqQHpgASV+1SrcoMuiumJ8LvDZqSh+9A9MACAABHlrUodY33nYACr9mZ+04/b8/tqAPxMHAr9jZ+4AAAr25ea4o9rlgeaf2psHgwDyx+z9/e3mvo4PpP7IQ+unB4zg+5vvvg2l47fN9r8G693sAABznXP/cAAAPIy3fdrfsR4PcP7/n95PoyQ/dlvvvABCH7nCD9eO0y7shACQAB2n7H8151HW4Q/NAe1v2IqHNgDo1+yaefQ4Q5RzQjLefRuVWzbfZ8bOv5aBfNAvmwAAKtgHPmwqh6aXY0C0WomyfNgAAObBDUthVDjH4zT5sKoc6gnRKT9VDiO+4wSaKoclUPzETsYJ2qh2dCczdMAhbpGTxoJi746YFsKod2RbJYTeZd1i7aX8dp839UO2gtgAAMbBHaT73xgYEzeVq6ocp0m4srzo234E7U4xmof0/GOfNgAAVrBKqHZPm0qh/H/uGBOAABUsA5BMdunanGhVD5pxoVQ7ExN9RbiqHe1D3n46yQ8/wCnUPzqHl1D3ahyVQ+moe9hbCqH/8Wwqh2kFs1xMlUPPwTJWVoU6w9Q4uodxAmrqHL1D5pxjNQ7F83vUPwaHX1D4wLT9Q+KhuqxazqHgNDukLc9Q8KoevUPwaHH1DqGhzVQ4x+NpBbSXGTvx5f/UFTs++M7UPkaHnPxyqh5tCeQrvDAmqqHjTjZGh1xloWoeAP31iTpgWgmhxWCeJofXUOqK7eND8mh5TQ4Qa3QxbFndRLjI6h0jQ7A9MA0OnqH11D+P4438fOC0qi38qH56JgWhxUlqFodU566aHm1D6/EyxebUC2sgnlwtu1Dzek2wAc5+MHUPjQTTND1xa0XTqZxMDUPKqHMtDjKk4cocgC1C0OdaHetD27465Xf++M3UOieTM7ezn4738YOocVgmbaHgVd52ALqls2ocQdbhE7tTjSqh9CSZ5+N7t6DqHHPmwIE4BrYOoeVUO0fjnvmvaEwL8YaodOXm3aH6aJxah2LyfNRPQkmcWzvfxoah9TQ68ftEuMLqHhVD81E9DFrxytiAnL/jhFJnRO6nQ7FhvS0O0rzTtDxJ++4FsqoeXfGpqHPAWm6h2EMYx81nUPCXGhVD0uE1NQ4nBPeJ2dItnvmyqhwklvxxN4uM66HiDW2Za5kNvGodcQm0fjyNDy2GwOoaPXB9Xm5NbEfJ+qh3gCbR+PE0PHQtI1DppYK0NuAC3ZhbtYTxIBtH41NQ8oBPp8nmnGvfxn2h3QCaWvP9RaSqHAJJjhnSr3RYhPPfGR4tpgW5749ctZGC1TUPdfN+9Dw+h8fQ/jhvm0OIxbC4Wteh6gluK9OyAn5ATez9+RnQMCamofGBaFwtYvm3v4+hRchoe6AnAwDYvmqahwh1vWGNx0OTAT0Wt5uk9Flue+M70OEmiB1DzOEz8/feACn0PGwTgDDwF++DQ7Vi0v1bKQTQydsQE8KFouodc+bPqHPgJzMW54ztaBMAMOXqTYyd4ek35CYSpPR13nYAB1Dz6h0X8cGoebUPwaTqlF17vedQ9aBOf0OfaHyND06h0nQ8bBOG1apqHg2tm3447Fu2BPx0P4ETXDD9l+86NvHodxRb8cTq1D7hhzGNr9G1ugnc/jkdDoV+xz8Y9+PV0OT/jXpWods9n8cexPxUWQ7zBWWm8rb+Scmoel/HvATHPmjV+9lTr5odA0OeaHOr9plLc040qocxQAt6HFAp6xh7vXemBMLUPe6HiDWkcWxx7s7i1GBb+gTk9D5Gh+dQ/vruv5a+qHdoJkqEwjFtAYcvJ2sItmwJteE8GCbmoceMPlGHwmWx6hzdQ6uBMLhaOfNrQJuRh7A3feAAvAmkCtTwJ8WLc1Q+vysjh7u6HZEJ0Gh4iCcqocP0mbqHdll7VrWrFqYROXhbTqHeTDgphyW/Ybx1K8Q4QTk1Dn4E/kw/+BM3UP+G7yTDwqhzAw/xxP1MPKmHrgpzGiwoNpqYeEuNJqHwYJnBh7tQ97oeNrW1YtcdDj8E3NCeystYRbRmHn1DnJhzNQ44Yca0P5WdN0R6Zh+Mw6+BMzUPMETFNDkqh7gVeWYezMOZyThVDwJh5A+e2YfF0mZqHMDDqwEx43dFBNeMOw4t+OJreh7gw4QxMxMOhrL179rxh7PQ6JcZTUOrUTC1DpBExH8ZuodXv3AJbjzD7MLS8w6lBPnUOU/jtzDp9+yn6YuYf0hahkTALDj748Mw/ffv+63aGHl3x1ph21Q5roeQAAnmHLzDn0E+inagluwsP4WHSNDwWh77Q8TotWJaafNgDDj74yTSbH+M+964mHELDhmhwrCeZiMcA6qGHEOJwqh3Qw7aBPS0OEUTFPxsRh5xlotodYf2ZXw1LDliE7Sw5eBPNFa0fjbZJonE0yw/SYc3UPCU7+LDuwE5AAG9ocIomsKTU1Dqhh9R/Z7BNi+aGmHRVD4BE4VQ9JcbMf2OmHjTDlqk0OodC7Mcf3Q/jQ1D9Wh+1Q/tS1V0OKaHtdD+uh7sUBIlvDU7ZwTNPmyah5XQ7hBOIsO26HxrDjja+oFoaoe1UPkaHxUJiZLb3Q42Yc3UPZfd9VDyuh73Q7aC3nUPJQt11DtoLcjQ8XodFRaa6Hu1Dimh73Q82YdYt3z9bB02r1h3r5uRodr0PCXGvfxyqh+1Q9qocaBb7wTlVDuOh+UVfoS2j0P+gT4TDmOLR98aVYfg0PoYtmHO1xh5KFsmod+sOi2HBkxithxdQ9C/vP0XYYtObD38k2oyYF+OVUODqHQ3Z+qh8iSZ9odlMPKaHhbDnRhxdQ+bYetsPzNr3Kd/GLTLQ4mYfR+7dWHTTDvLQxhCZHYf5sP3YtQ1Dn2hw7ZfHYdjwm6ItA1DudhwQCdq/uQu7mnGm1D7Rhx4w/BoeRsPWgdTDFgPrXTQ/YhPi0PfAtWPxi749alq8YfzUP2qHXYJ9g2+Knc4NuSp3cMtxNDz9Exf8av+PNOMDqHcLDklxrVQ98ZNQpahmHHjD+NuzhltjBMB0O42HHDD6jE/slpmoe0MPmnG0JJyqhxTQ9eofABbxaHbtDmDh93Q8hYc10P8MTo2J/XE3Kw4KYefsOfYTQbDqah7eCau+OxgmsOHAbD36kzgw7YBME0PmsTyND9Zh9dQ7+/uuS34MtgHD7DhyBw4kYezsPNqHkHD6Dh54w5modwcO9WHCHD5Gh0hw9uYdY/H3DbY5ViRhz6w5+ocVJbk6Hn6Jt2hx8w73YcZMXBqH/UWj347VQ6OYd+Unsf7TiW+mh9Jw9B+OeMPe6HMRtynE2XQ4jYcKZafWHoNDqn+7f5qPodY4nzkTcQJo+hxAw5RodH0OEATkDDn2h0QCfp/s+/HHYtTrDjnzTpw7Y4d+UmC2HsnD05h6NCYVocOcP3GH4PxmGh6RjY+YfusP+f7K/Z6th/Sw5vK0QsOiaHOTDwqhzmw/xoe7UPmMbg6WvaE8R3fUC2+MOZ2HajDsf4+PZY3T1wsO2mHMcWgNh7kw+uYcHUOpqHdAJmmY+aSa9xN7QmFmHSJerjLSPFqDofA0PCmH/wZuObf7Q7LYd+MOlCTPtDiwLXGDqJocHUPTmHEIZ3dhzeVuJL0NsPo4TFLD+EM/vQ7aYemcOj6Hr1DomhxICanof+JGBuHOIJg+h8Nw9yYcaBaWGH43DrM+/7Q8DoclcO9WHqrDoqhwn/edgDQkmfaHjTjAOh1aiY583VUPS2HTnDtP+2ASVVoeBsO7At9nDvGsyKw8EYe3fG6ATeZV1/LQSw7FYedsO0UTYXd+7h6Kw5GC07UOq/7LAJwqh/X5sqodHsO+otAvxh7h+9w/TC0m6HaGHJVDsRh1lw73Yfm6HdUt+3DlZh6Yw8vfMopbSmHnf9zdh9uw4h4cW0P3wdo3D3uh13CYmYdeoGuMtrIJ7zhzzQ/Oluh2XnYAcHDnBh7Ow+GoegcO1qHPrD6HhztQ4Eq1dUPd2HhVD72LTT5s2ocU/G2QTYvm3hEymndm7s9+bdqHpmJwKE4Ww77YdE/GtmthVDlP4+Fw63BOHcOI/jO3D4UE1dLdP/st874Q93PDvzLbzw/9YchcPBeHwvDgOh6Lw4Ri2ShbxeHlVDsXzXigAGYefUOnWHShJs+h1d8eKoeGsOYmH3yR7OE09LZV7rcpb5eHA6JlpxgMCa14fexb8oT+vDw7hxT8c/YeYAOKpTTKWuJh7Jw7IhPlMOFaHi9Dn1hxww+04c+0PGitZ1Dn2hzQA9ZxvOjareHAvmiXhxTw7+YfnUPs0tm1D2dhzJw/qoea8OeUtXADnkHZHw88BO2Ba+aHWFJ3qE1rw+y4dg0OIaHn1DowLXz3b4l0Z8P7GT2aWyJhyn8ZT4cLMPK07LA52ph3aCf14eXsOl6HdTDqah438Y++MzUPF6HbfD1FEztw7YBMLUPvYtJPDoXh0kVvBocVJboOHgAAErB+eHECJ4TLZ+w/xxNEuNKqHn7DwTrdaFr8y3g4mFqHeXD3uh7pw67a07UOkaH3+10vuzlVr6YcNcOYeHtVD4mh90yfbYe1UOLvjP3Dj9h+XCZKoer8PXOHObD5XE4VQ7iBN58OSqH1gAeqh7uw614eBsPZOH8gWnnzfQibZ4c2DnSXLngD2ELYWw43ZNDImmWHV1DoThwTQ9EYfdMnRuHPtDu/h1DQ8f4dBsO2GHyNDreh575qXoe2BbYWH6qJp/h0iw7ZBMLInmeHPAJrH4/gYbg4dwsO1QTKdD4qh2/w4P4cQCOrmHN5W5AR4XCeQEfK/HdaHWPx66h+Rw5PpMccPkaHkNDyLLb8CbkRP5MOMuHTvDiEE4VQ6GP2hLGluL2rW3ah1j8c/xNtBb32H3HDngE0/CZP+MKZaO+HGHDxphycA+ottCCOUsTogjuFh3Gw4qYeNMO5ST/tD+nh3cA+1a0D8OEB77OBngLcmw8KofKABFqHGgAbuh7Tw6kEevUO1uHQzDlOh9YAFnoeHsmcBHrPD6S2zYddktsq91u2txDJ5GhyTw8NS0E0PP2H7sWy/41KCcb+On8PHaTgzD+BE5VQ7TYcu8PCqHtgjrAR0EI8+ocXfG46HRLjJnEzHFvQa1BsPrQtK7DpPh5Fw9sC29/GV0tTeJj346ww8dhPBxmB07lvDxfh1Hw7f4e68PrBHbQWjLhztQ87i1wCO42H4QJ4aE8jQ4P4eu8P+QHPPF5uk6ZiZKEcGAm9eHPrDz3h/VQ4QxPSZbymHAWW8Fh1BCcnofWAAFaT1aJtxhwzw7Q4f+CO1ITxQW4ALQHQ9cpOE0nfstHPmsVXZlltyhNuMOQhHYQj9kExEI5JYu6COrBHTrDw2LdTw73S108OqOHmAj+wRyzw7wEdegPU4tXND2Rh3qw5r/N2CPhUtxgj5Rh9mVqDYeyCOiqHg2WidO/zVedgCMonbETFND0YLRuydp4cWMOkhHABB7n4wplq14fJpbtGH0cJk5h7uw+QEeqCPWgT8MWhah3NbbMyNNdbpaHF3x4ALdsSYuodVUOFMtF1DnNh5fCc/YcSrGrvjUrDgXzb+Saw4cFFaROHJLjUfh+XCbt4dk+bBwHYxNjmW+8AHr81n0PS4Tw0Ji742aieuZPB8Or2HD1ttzy+75pQ4ciCOD+HUoJz3zQnw4j+PWhbn+H7ND2dh1tQ+fS3l0OzCDlxxx3hz6w4QYdG8OR4tNdDiIRwbw7pC23fHQWtBrDxFh/7Q7hYdE0OFhHWI9oNQGGsZXTu05bFBH3Ij7wRzzlsHS38iOpBH1gAAVh0II6RYeVUPjAto/Ds/h68w8O4ezUOKaH8XlwuqzzLpmEc2iO7RH5cJw7h5sI8iVOoQPsSbw9J1oR4bFs5+M10Pt6HwYJnoRxiI5H4eNONx+HDZJqahyUw+sAC5sOfBHasWoMR1Qw59YflcPrWHzRW23hwGw99i2piPq6HIoj/kR/VQ6f4csQPh1jt4ug0R90yZ2EfpiOwxHuttuXh1Hw6z4eeMOPwTkXDjxhxd8ZgYfQkn0hHqKJrTh8VQ504cS8PbBH9/Di6h2T8cZoeRMPHqH+YjqOLbeluFC2Tknk2HQQJ5Gh1KI5ToeqCOkBHKAjpjh1hSdu+PSCOkWH4tDpnhyzw+JpPVknkhH4bD4kR6dQ6xEd/ImUOHPEDkRfTmPcKAtViPM+Hqgj7YE73Q4WEdqiPqnGzYjtNh55w+04cIYmJeHo4j+qh0mw4XS1cMPpRHhvDuFh3KI7aC0giOGaHS2J4fh5OI+nEeUCPZxHEHDl4E4uI+YEcC/GHBHa4jsn4xuI8WodJCOdxHtPmvcR6RnZCgfxk2x7btG2twRzmI/24dYUnWmHF3xkc60ww9U4d00OKfjMrJsVhwHQ8q4f44nZMTiZh5guMmYbSX1DXhWGrqLGrMw7w1eKX2ghbDYtmQjtWLdkI/K4feiOkybdIAXQR3Bw7t4e+sO8+H7sWv5h3Kw4oBPdMnZMTjBJ7thzqCaJEdk+b5Nj5TDsgR0fw6GYcFFaNAtD51ziR5VQ9J4deMP6QtoYj0bhyzw7aBOnUOYRHwdDpcRzz5qW4ckSPu2HvdD3P4y6iZmoflMOdJH/3D2nhyliYxEc8+bvLd0nD28E35lsKofHL602Hb7Dl5h6nw4tIPE8PuxHM/mrqhx6Cd0keeCODJHJXD4Ph7eluRoemBa/mHmQjtH44uw4Zofg8Pj+HRVD2nh+JI8Woc0cmT/jPgjlGB1GbtEYdOSOEV9kTVg8Ilhw9uYfusPgOHPYjhuEwXFvhoe90OzWTQKJjUE1NQ7NZMQMmjAtCAjkDh1ZPdVN0uUnF6HHvx0mB0ivq4utpk3d8tObDi0R31w7420miPJqHB/DvyeyxI8ZochiW4OHm1D9vzTZw7Gl100PanGxkju7E24FpzoeMTm86HaU9n2XeQI7Wl1esOvsTzwjmLh4wmdnodc+bWOHjoj9H4xEw96K3MSPMKT0tDojh2Xia8EdDMPZJH1U9rzrcmw+0BNjwnaWHQ1D37pFiI7doeMEmxWHsQJimh3yjuyYd2gmAZdaQW1Xh6jw/PYerQncmHBgjvVh2Ew5u4eT0OKcTXNDmthzHLYdYd04mNpHFIJpkRwSI7tBNuwP45bWqOjEE0ow+6ZMSMPvYHHwjxRh5uI/xxP/SPEWH7UjtJh+Mw664fJy3sZHyjDkOB+pnaa625MPIEtW7Dkqk4Iw7A4eXVb7ATGuJpOh44w4mEdcZbLvjODD+P40GI8IBPlCOYOH2kjlIR09I/IEf1UPSpHc4JqGR1dI9p4f+sPdOHPkj6Lh00w5fyOh/G6QtanD5zhzmw5F4czsOxmHMvmp2hwHQ+9i0wMOLUTaUj16h9lI7mkfDwPpe6AwJ4fhx8w/DK3qyOI/jjND1Bk9aFqA4edcOPcTPtDvuk1iI9hYcvSO3gLLdD6Rk3igEGocIxbCqHkWWl/h5/ibv4fE+bu6HHzDvuk14w/K4e4QnwaH3vDkKRz2I4kBM7UOgOHp1DuFhwnw42kcwMOUoTuMjsRh31w/vgdo2HyuHYsWowk1eCcNkcK0n8rDhsj2bhz2w7zYf44nlpHACDkiEwXw/kC3xMOGuHPXDoGR1lw59YfD4neitR7VgKm2PiY+Ydx+WabrXRJ9hhz2I874e2BanaHtzDiYR9XI8vC3h/hs5HxcjlHh16VtDaseyPQCThsWkuh2XQ4qS1fUOMZHvHD8MRzAw5MYcXfHE2rHUe4eRwRI6IkfNiPImHbdJ7bhxB1unkdncPZ5HiND+eR3Vvu5kebkmS6H3ND66R9aw40C0cEn6StMDD+cR85w6Pkck0n9WHaYj8ph9cw+8BMLMPNEHr+WlOh57I7O4ez0OGCTJ8jnMR5Kw6OoczyPTETlkjmUrefI/i32XyO4gT18jqVh7fI6tYc5iOH5HbzD/MR4Uw6G31LyO+6TY8jxahxPI43ke8AnjJH/8jueR9/sYPkfx/GOfNbTD66h0cFuszug2GFaT/hJmuR5YrqvkcGEnYpHXRJjOR6ASbshOfUP6/NtYj6qh14w9IUd+Em+aDSLD1ER1yiZmoflyOdpHM7Dp2h4kw+SQe97bcmHJTDhrh3wo8iYfZ7bfqTYCj72LccVqECt9yO42Hj1DkxhwwI4mEfkyOfaHm1D5GhzAw/IEdAsPi0z1SDmV8CrI4x+MQcOoOHMHDnOR2Ww7zkc6K6aldoCjwxR+Bw9pYeQcPQfj+OJpWR7n8cKJMHsneitqKu8xR/UI96JOdyPcmHb0j3hR9U41UUf4Am5+HiTD2he9Qo904dcKOCqH+OJsgR+MI4VpOBKPXFHxsjzWR7kw7Akd3yOlGHiLD/2R4Ww/BYdVUP5/jfC97VrTsI8EYcWompxHXjDmgR20Fq3YdbNa3WHCzDg5B+uCZmoeeKP85HDVDs3y5oo88ztK+b/ldLij16h/oo5sUdjwmVFHMNW3Jh+qI4rkddsPeZHZ0j7uW5HvtyYcZcON2T4tDjjh/nCbupMKsOoJHr1Dy4R0jQ8vhNiMOg2Hk9D6GrWiUZcUcgoPUZLSupzwR438bj4eDMPgwTPgjx5h15I924eKiOiOHb8j4oR0xI6yEf3iO3+HXjDgKR5ZI9nodbsOLvjMKDiJe9bqfEesxlGyO9uTD/zq69Q5vkf44mLlHaKJ7pkxhI4y4eqCOIgTF1Dtuh0lCbPkcicPFGH+OJxMR60w8RYdkoO0FzDyj9Th/F1eo9v0oPaPbVqusvh9VQ9G4cHkmGETQpJ3orZxlol4fswXBOHCAjxyRz4I5lEcfiOKaH/wjwVB48cawi2OyP3vjzsj4qh3mI7ZoeygnlRHwyjnBh5Ew+KkcRyPkaHWHDnYk0Vw4x+MScPNhHkWd9co6p7YXpMc+bAWHtDD+UR2yo9D4e5iOxRHmcl7MR4Yo734czsOQVHyYjiIR56g/4O0ECOexHYqjzxhxKo8mUeMsP3lHqHDwah1tQ5ZYeZyX9hHkUjrFR5U9anx3X6ndBHyfDviR6FI/PYeRcPC2HVDJpcR6tw5mUdcZbh+HiWd3DLTdI59YeRyPaWH5cJ2fh2Gw4u+NihWW5Huvm0lxv6w7pUfx0ONQTkXD7trdU4zXoeBAnLBHjoWwHq+V7ZV7ozCPSeHMojkeLaESetkf64nuOHoBJ974xJI4F+PtCPrBHSQjkDh/yo59Ye7UPPfNobD1ph0Ko/lUdqgn01Huwj6jE9ko8Ni3hCPEpHbIJzxhxfCfKYfnUOqaHGgWkNRxqCd7oeTKPYlHykj5Gh2QTrDkdk+aiaHdsjldh6oo/dOPxiOPBHt0j0lR7d8cIpOIsPKOHL1Dxeh2vCcNkcJZbPGHQvD4BE32I+6ZNi9WbAa5VD7YE5VQ6zCsox7wuHn9DxFh1vQ+iEfWCPV0HMx+5PbYgo72Ee0sO2VH6mJv7h1vI9m4fpqPkRH1oj7NLYuI7iYeNsPg5HUcj9yR64aZ3lsU/HCBHP3x+Gh4zw9oUegCOcOHFrDhrh23I8LhNN8Ou+HuEj2Th/hI/t4fTUOfBHLsj/v49lI5Nkcp/HwxHqyjlOhyHQ82kfoiOjhHkNDoqh4bFtn4eRiPk6HxUj9sk0UI/REdtBaW6Hb/Dn1hwAw5nJM2yP1eH3nD1hh8L7bKNOWnb5ZHX0j/ORz+o6N+PS+2cT9JVDh341TI6lBMgCP0wt4zNrDB41VqoZPsQmBqHYIjtoExCI+KodQiO3RHYnDjwR4S404pM4iPz5bSG9sQE6Fw6F4eTUPPBHQEJhAR1HI9nYcN4mlWHQHDlMR8QI/24fIEn4mH0cJ32R0kI6jkfO+3LTtrGj7NLexo740e/qOKwTwYj3Bh33SedUcJ8OtuHcojrTR9bQ/9ofoiOj0ttLD2Ak1wo/2UfLyOBxHxVDocR7Zo43EdPqOXVHpQjp1h+Rw8v4fICOFJHvYW/Jh7fI8Nkc+sPthH73xwgR2ao5A4e90O8cT8CJyYrRMlog0cvUOOOHvRWv7hwsia80fmsm9NH5yJltR3lI4yK1C8OiqHxkjgXzfX7ZIhNC8OTcTncj8phxZo/xxMFRaHsTQmj8FLSJo7MkceCPZhH+SJyn48DI/Mwec1bTAtR9Dzah8Nw+9od3QnbKTJJplAaz/Lc04decPatHlNDwgE25SawGt+rmVOHXvDsuR0TCbTUeDMPG+HM1D/KE5po7ZofWhaiBH1kjvXzXPw4F4eycPp5Hq2dgWPbeI/bEfuKP1tHVVJ0U07pSb54dK8OwuH9Gj8/28PSa3BPCcPguH8CJz6hwuFpigAb8OSqTVHDpVmw6o7SEc7MPguH9W99hK4lw9W0dOqPkaHXajlik5NQ6Dj3ASOnRH3W95oE59Q9U4d9cPqsH8H106hzz5shC3g0OwhHXmj/lrQto+6Ecp8PXqHe5uTGAA6zDawcTrnyLtYHDuFh7ho41BOfaOFmHLhZoGh58w4yZxK+b45HsMjmdhxj5q2oc0fXb/N8Ojj3E/lw4ZkctiOvGHzOjrah32o5Y4cU0OYat7Sjs1R10o7EYfVKPlc70vdVOh3tw9jBMJ0Pr1zxm2pER4eCdl0cvb2AQt+XDwnEyho/BodPAmuNHEQ1nvzQHI5p0ceuGtoT3SjsjnbTlu4UdusOLsH6gd5nzdwo7sRPeKPFqHxtDigrRfCYbkd+53X5HxijtoE7Gw8NkcAy7TqHFqJ7ahxj8bMEcO6OYbjaUj5lRwJVqmoel/HrqHT9WjHhwpo4mYf/YOu1HYrD3P45ViYkkcVSP2VHtqlrOhw6pfXj1NdbhdHhsjh+R7yo7M0cLUP4ETvUJrdm0LI5GC2JMPfVLHPx2UE1ew5t0dvUOPqHnwjrHBwwlt80elyOZ2HJujrcE8oABN0f88OvWHxOD8pR/2w724fVUPG9Hucjm7h83o4aoclfXiGTf9WkME/5mdKEemxX4GHTXD87R1ao8RYd2aOyeHQfDxYLXdScWocuSPLvjwoWn7h4g1sd3tgElLStkVW2RRwzo/xkc/UO7gTXsVxVu5TFs2ofAABIpH2+j0vR8TI7w5tyK2pVHjfDimR/TQ9yYfzMOSqHwAACdRzdQ4T3t4jar9HunDm/R7tQ9eocgMPgAAEIj43B7nvf2rNYqOrdHMPDnKR0zQ8L3sBR2Ve6YejrHhzOw52EcfB2tATfkJt9h3Cw+dwfgMO9uHHDDj3B3AY4LYfMMOCaHbQJ5dR1CHYmBM3laMDHWNWrAxxd8f73t/XbmmtW9D4BE6tI8lkf+K2zATSrD1xk2oI/W4cEF32/Nm1DpMR8vvbTQv2MPd9HhsWngE/+ifIMeBsPMDHYbDtrczwY52EeOMP9ObrGjugx0IY5yUczUOB9HSGjy1R3mo5loco0Pi6HNdDyAk3Wo58kf4SPQCTzeD5AxzKHdnocU0ON9H6yjoqh6QyZeYfdsPdtHluj8Qx1vI6kEdAcPIDH5gj6Ph7kw81EfBqPO2HCzD4JW6Qw4IMf1QmiDH+cJ+gRx1lq0MeFUOdDHuDDvQx0eloMMeEaPQCTXbDqQR+MicL+NC8O5OH4Px8ph+qI8RYfj0mi2HAbDgYE5T8cXEfj0PeOH6YWqG7UBCYoRPeKOkxHWSjuPh+Yidb4cTCOu1HOyjnYk8oAA8MeWlbdDHu1DhQ++A3o0C3yBbS9HyjJrT2Dso4dEcYcOoaHpVDr36zbrvEMcKZbWaHsHD8Wh38CYl4eICObytNLRxeh7eCYoMfysPLRHGmJklxscvtiUfi0PktHKMj7yRydI8P4fTKPlGHhFJlyRz5I4++P4SOugTTBdoca6H8coMc+sOiaHv4j5Gh/Mw8/RNJKO8ATQYjpOh+8w7t4c8pbewtSUjzxh3i42wYce4mKOHMPD76RzS0Zc0ex6PFqHd9+0bh1FI8x4fGgnrAAWxjoIE+GI7g4fQknNpH2BjwDw8ao8XEfsyOQxHPCjsKk3iI7aYeNsOi1HUoJ46R27Q/moduaOt2HX/DlgR/+CaZEdjiOWMTGwj13cwoHq8YeQGPjQTNHJ45h54Y47802aPM1HPYj5Hh7Xo6xYf0GOyhH51Domhxd8e8t1c+apqHqijzck8ubu9i3HL6xZHZPx2UE2kY/6i3IiOBaH8AjtTR8lo6A4dLyOTlHnjD6qh+vI9UBOgaOljH4cjxBrXhNYKy2hyPBJHAxjgph38I7f4c8GPENHm5JqgR7Ow/+EftGO9WHUqW+Xh2/w7oi1FsPjlHpxjzwR+0Frj4ejKOrBHoyjp/R3Gw/C0f38OJeH6RDl544Oo8DYclAmYhHUEjnBhy9Q9g0diCPZTH6gjwGRxrI7lkeFsOFZH6YW8Sa1Tdow4ck0nyVH3gJxlR8cI+FS3TaPwmHDjD9sk3jI6vYdhUmv2HcSj0bh+4yYKUcxmPtNHhVD4AAOTQ4WEddAm3qHdqWz4x/6w7sC1ByPeitiqj14x4Pw4M0cBsPzJHPMjz6R5FI8yUeBCPBqHw4jiYR9iY7tBOuTX02I/kdnv2x8I8oMdFmPfUTjoWgQu0S4yEBNDNbYo7LRj9sx7hCYWocjcPQhHthjrBhxgI+PUeBsOG1Ho5jsqR4Ho7zUe6cOMFH3lurjh5cQ+ELucpWzlHZJjmAx6EDchrNCA7hFHM7D24R6Tw49Mdn6Peit5kjygx28Q4awvKpXqz75cW2s+0snYBIelW7Gz7A0dp7S0NHdqButn2USHzStj7S/NHbr8O9K3cWT+hd98x5yQ4lIcmF3QBbCwNqa3TJI9mMdbiOcOHbfD/Ph2T8db4cewnF6He2J8mraDQ58EdYaOoxHZejmYR0lCc60e/Za1NHDcJogk1gI47JO5/GVjHN2F0nRxWCffodEmOG8TzfDgDR1BY/b4eQWPG/jqgjlCx3MI6qBOdxbiqHdpDj4G87AGQUeM6W59HdCWzSnWxY8SYfHtbHqHl2JtQ0z4w5B0cW0O68ThbDjqR7tI7H+NOsmcqtvUJxAx/UHY2ke8AmZqH6ZjxJhxdIeGMca6WweHdwJkNk9Qo7a0fyKPEaHCzDjQW64I9K0cBqO3OHFajjYRwzhe1oelkOY1rMgJiQR/NQ8sEcnmPrBbDvxumR1Oo52kc3lbKZrxjD+wkxBY9RoeQ0OjAtjZDwGk1NQ7XhOl6P+L7aeZhtk7kw6bZOg0OV4TwnDnma1JffYCNDHnZL7q0W4aE0xw4RxMjtaJ6zmsdlXumgI48YevUOtL7WsJsDh3hldP0eiWOsS7nZW2bhyEo8zEe1UOQiTX7Dtix0zI/yscg0O5LHybDkWR72w524deYm4pHYyj4cRw1o/lEfmX3i9LvBj4+k/hI8aMdWx3POtQ2jo344+yaBdN0ZWPZr35D8F06nIZhVvQUPnM9XsdhFW0GndpLvFg3c8LjJdjFWwXhe/0t8l2HVH5PDz6k+8o7HS0wKOOfNKpjmHh1wI8cYc3iP7OHd4j0vR/3HfPt1VBHfxHCmWvLh37I5moetzWJKHYgJ+HR4to5ji1qyPiJHJXD5RhwxybNZMJSPob7/c1/+Q9jo7CMdzKO1zHr1j32LeNQ4AS1aUOAQtWAjtsk3So4q0eYCO8cT1gAGMx2ZQ9rcz56OgOH0Oj1xR1Fw5ZMfkCPt5rldDriE8mI96K0hEnCXGODD81E3CLdcoe8329DLup5oVW1Ioaiofiq39MrkPms+pLw7plVukQ2cqHBIt4R3YAADpALOPSjd1Ahu2ZXbNtDNjqargPta9Gt0aGmHhp6uwAAKCAJ6pnmxxHfbZsd96AObH3mVnk8/E2be60uFHRHd6BAQAAOiAuIp4ZxIYAAFsejUOlfNOtAJgANLY8/z1526+bHSeAH+M10NJPaDEABB3Gjqtux3SSt0zMPJ/hdAAgAATEAWQjZgAI9PdA71AhvL9HVihTNjmOY9yEYP6N22ORbHgAAekAHAAR6eodGHwAFNscXV66NDnC10bk87Y4kZqQAA3bH1/u63PV7Y59secnXmMaXRF97k/bY6Dsfu2PQ7H6AAb2x1d6N3FuganFbHG3Jx/o50VYAhteEQFJjQWhjBO0aEfbFt3uXcRTbtj5JPZ6AHeOou2OaaH5u1o9PR++H/XBu2OtbHhgAMux2NDa0Wvr+NjQ87achFWqYnpLseZNH0Lzltj5uADbY97VuHZ7hbHgdj4xa22VeHVvOo6hbHMdjwex4x6Y4B0396XBT6fx+65vdim8iNsAGaiAojurfK40YDQ3Nrq2ngtU9j7A8ybGZ5z0b2PIPTGxkQXk8EtevtJd2PEJA6AAaWx/w/bKJiAABrQEMAATuNRZduMUB2h04EyPT07fXhE77wQ/yAPAiLM4DeRG9293we2BnVWInOzbc8nxE7Wrug1bpMkbg65xUBV7Hspl5i3DbHoqBBi8m6oAN/ujmUzi2cXseq78GdT6BVrx+1joEaMCHvhpbHM1u0YABO43Pscn2PGmrcg26wLTe9N8yM6J3kHHLNYeAAKfY46WuoF6r7HdknSnKzbHqGFOF0P9EcJY0wmpUMtbld3Z56jeox2gdpqzEMfeABMOPjFgUQpvDvXMtYhHkNqq+ejB7O2vPdSoc3qBfO6moAE7jQly+kuGlysQQJBeTsuVjrpN8zqpAM+sBRHd3kRpa8yQ0DdmMx1hgxbrtIVAZi9ZdDFsiqH6Bjt5165rd8zpOC0Ri3Kk7sXW6MWyVdpq9OoLguWj/fJkE5LbQDsiA+K73crOj1aWx6fHrAYcB+mtfL9nemgQEK7pPsfOOOdVDW5lmcM/suDfdNmZBbHHiDj/Fa/G2cJWtYPIgbB43l+4Y8I+E74AzGmrO9+DD6nU2F3q8ADn2Osdr89j8rW3AXpebMYIAma9nfAVex+GocwfBZkxapzYO1J1cXeUGzrv5Z7Fk7CZtqlXWg4+pXDeRHy8rTWF6Rh6gEzZ2od2QVM1XvJwHyx1ybsVjMqmh2zFKwJOy+AjeQ90gtWTtAnhEV84/oQEhyP3mQWLIhjD6yPfD6YoFN9i3FyA59jzAAP240ZIATrgbX7tq1sdQKFcbZNPDg35VmTyd5wIzuABFseucAdbH7BgbgAKnY+k92W2OGojWzjzxZMkeG+wCp2OrgT7Movpx3tMbYwjQEB/1rvzOohx7iKeSjCt974AA9djzn0yOHpVsey2Pq7HCHZhWx6Q3a5KM2x6EHHCpu4kPVxLstd1VMPUs7zTDxXgOQAHEce4ingXHZmtjt+8+XuJotULw4OuHNjosY9YpKgDiB2P6JAU7jbxx0VZcRceBOtA7HyoR0TxqAUlwKuouORbHV3o8gAE448ASJQp35pdSLjwOxyaHr4ADkuP137bHZ9jwiLY9oKu+uNzdbnhe69+6YzpFsf/Us6ulsTdkCW10je8ACIA68m7DD5yVHOfOFxFPcuP5zTYet173V3uFFceuynhCrPLj3Fh5t8eQls+PLMzDyDR3FOyXRaSL3qpXCU7MrDrnWxE8ZPsffOO8JjWRetJ7GZZPLcQwuOqbLnfeylO4tNvk/tvSWaU7UbDsrs+JtazYe3TbyhAuAuwOx+mabqcLnOPWJboRV7R2xGUuYACp2OLptivJqWXbWw/ZTvRf271t/RV56bYvY9qYGZmHUDbncgCNx2fdZtRsCp28tD67DpAfS1/dPq23sOA27XBt3Hs2hTpcltNbWd1t7kt0f+4SyYG52Eq3XbHQ2m+AAKnY6PbuEsnQS7o4p/ux4XY7jsee2OE7HpxehXs5bY4F5PDxBObHuZVqGY4Fw6j0MEshVnr3rjpgAHzY+jmNnfhggzF4phQPYvY8iUSgQ3jU77Fpk5xyAaDXM0WA9dAAqdj/KW+lnc/FOEu7lHTkbjy3+2UFYxNChmmxJrNXDtJog6nd+V0ISniS95QgBKThIzW8SOnfg3KAyLjp+y1lbds31eAAYgs3zj91x2SxZCxvO87lnHXyewsIHzY5LGnw+RXnHsDl6InCNbA7D301HBdrjzNcBnbUHvYmv5Y25XdiN4flo/+49Xsc2zHAAAeATK3ZAAAOAStB6APHFWNx6XZbY9YMaAuPIAAkHjjAADB49A8dWRG6yrRAxidxtoFxtseGl7LbHxyAGILApKf+cfruPO/77xyHyuJaqExmPvg7YGIHXJnux4UyRcKP0Vs0CWwwNwnhzNjcG60c8PpeHaadqXh/t3dClO8y3YnL5vDnU2ygXar2vu8OC07a7FlnGxWLa+ludOWu6L5GBlSPYoA7l7sIy3q07Qfd6dOxAYZrTv366tjJio5xnc0JMchyNTX6bY9e0pwwnKagDMpIu2OlnDFgPOrpe7Y6bcdDABNbHlzATxxy7Y40MMme3k3r8qAHcpCjJEyqu+36HPH7tjx5FCNzJT+sWA9ZnHR2eqzx6bdfuED3rhRHdkSiO9xhhAHEceoOOwgAVMx7OYzzY42AdNp3sZbeQ53xQMjKxgegu2PVyAY386IG9IdbdsfAuPS3H9sp3bi0CCe+D1v+SSBjJHj42x8Okev93fOOdijRU+1OLdvyaDsdJePgzDhh1kWgMk455sfAABwLYsdj84U+8Ye2l0K2ObPH9veuzxwgtfKNodi7OfzRA9hu7STlancYDWm+tQQruq0oxngBHtOMK64Kri8p5I3XNDnpyM+SmMAA/bjGzxx3IKDsfXTWCwIFZetHXYl46agCaePP3HE0YQZx8PufxWNiD3aeLA+2nLx/F44suvtoAr3H03jycyMSHqFd1Ci6B9rG3jy13cW45AHOot1qZbR3j8ZOQAIEtEQi2PzvH7tj1NcL6PvxGyOsBu3HaOui6gLIHCXqvxn6jBrbWV9GLnw4Z2+t/5G6Y4RoCQbxYV7AVgAganj7HsgAWZx9qA9YAC4O75vHJLF8rx9f7sI8cXlnOEj6XjtrxwAa1d132ePbaAcQ926M+NVegcfG2Oa/z3roOrx77Yk+8fAuOFWARQ9qdOwq7q31A7ePaQIETjg32zhVfPse4imivHFfaGX+BQQEQADzePUUAx4bYBx8igGGceu67FvH1/u66ayoFk1t3dD3SwHT5juHc8bVepEecxmcvHbnj3Xo/d4+//CucB2RHKg174PS945dsc+VwAIbvAwMbx1AHFOeNPMBgyjLNYZiANLY88ABzOhwbb5c+6+Xc1IS0cfFuPeTzrtIcR3ZZkHN6N4D6mAATvjyHI40YGYNuLePqTruojz8B92Lri8fa+PKvHuIpjV/Zk49acfjePxFz/XjkOXTygGusPi5bFvHdiZ5LUGvPuptvgS6oDWimQcBnZiYZ9EdYZ3K6r3bugPxyQMcilTC2OLMAdp12/vc1FnkuMplmo7qxevYBx7NKbP6sdh7DmrkzQS98MHY40CMm+OOMAgQN/Px9FAEiePxxW+GgkXjwsRzOiZD105+PT2AOvjqux8V457VsJCWNZbSnjjUw3Hbafqu5j3tI9wUDke28hI4ozuJk3KoHKwF02WyA7dakfZU6xXdMtjxCW95Eb420M2OB/Hofjg3x+AKFTsetbHeiAonjZFcUgke9p10bNSb9HmoOxx87LYaaukOPCEzRDj1Bx67kc74DT2PlpdbVwm/3d0bv9lt5oAemr8GWuWI1/lbLiPPMBgoACa4SzxxMlev91ueOr3H2zj5I8MQAD5scu2O1+Addj86R6ywBC8cws7YPHkOR3bJJ9QGwFOF+OoDq2Bp77APrY42asfOPcRTak5793YWEGNsfgBOQDQQORmrx0ZWddcc+uOKcT+iOUFq95EbXIOyZ2Urr8mdrVHW6iBHtPnA3mSjlV4E+y1yBaUztMBPWnHrATsWXRO491settHZAAyTjsq6ze/rkADJOPcQjHjttOWwXLalkf6jZr5AumoXgJ6FcatKPL2PizdF5Zh+x4/LsQfYOQBbvHtPNCpQ8iBHYmsACBFAnY5cPvQKnY+0zuYPg0XGSvR2aOHRSFI1N4D6t3GV3o8wnGg4+61O/ATW/Ha0uxexz5Kf3wDG7GDVufNjioEFwuAfKs+pSPNQKRqVWx9C4/gdP8Zma8AFlAOuq0FycqceucB4WATG1kOXUOtRqoQsxXnAAUtj7gAE445UKPQBPpLjv9jiqyKY3oMzvlR6YEHfKdvqw3ymYszurz37rtc0lygK7ZneoCtOZ365b8C9+zO7Qvc7/syL3OytrOjlfbT9JZyOOLKPvF7Sup6FR7Uvd8zNH76x5bgy9iLO7svZBCuaoPp5bHy92eW9Z7eqevNda/7DuK9kRO8lnf+TuLoObU7ehpyZc4WFc3luXy2tNd9a9vLO2lrtNVkBBOJira5AVOx0MzeGDuAi7/VlFLp0PQJgAFTsfcaPC+rJWdo322VndEB0Kn7Q3rVWdyzeyOTp60dGNaITWHqVqzB/FwZswd02OxHHV7jt2x+zVqOCdzaPHELX8tukAK8E508fVuO2uFJbjnbO/64/nlN9uP+m4iEgB7Rz9o8B0c7J24VLfuuwtx4e4/63s1YO1UdsCtt0nZ6zciCeRxi4PHC65guvSgrcu3tuBbFxjwUAKc3XVtQf8drYP7BjOs+Yba0/4+OuP2uHoYroQ1uyIFSCqnqPCX631zoQTy82xiE/kCfVOO/t71aE9rvcDSf3cf4jZYzdTne73OzWzd9ztUK2jkL99RsjGK7rp7e5sQAebHGHsGjx/9lf+wcdFLJxdQkxwb2NM49mccePHAXdtOWpLvRDg9Gm1Ebn/gnDFyiVx0Xo8wfAM8YAxrlxZnDx+/44litPBaQiYrfj8Gc3mkEGcd82P3zTtGR164MaHNtoBgR7icHuATx9x/wAD5scdywxKA3tj980w9YbBCkvxHnQnX/hjJ8NhfujBujy2xFbfODy07TrQEQmuc+O5DjGCARIJ7LY5c6PYGmdij++jsYvRfo+D3v6jZK22RATnqwOMwDdsfaBcb/dDaQ64PbO42UaMKK3QRrMxu6KgABDazCe0AA3bHpLj6Wxz60NQACeOOawnf+jgAQwR4+iCw1nWqVd5tjsAxy2Y58UOTuNjbH6Xj2Ax4u8fw7OZOPhjIWITs+vb9fqfwDgM7/IA8zj5ve5xzaf1I4XJZ2AE4T03K1gXY1HJAm7ghEUgAecJ1/49IMcBNaf/HBTjrJx69+HXCeA3bWb9LJeleIyBwJw8eWfUQG9I5int7jJOdYMcbqX3GtXTA62PVTkYvyNQ+Oqw0150kGOw3FfuKI4+PDwnI3jocJ6vY/npO3hPB/H2q6sRx1SedZESfOPIAAoju2L8NLY5tKRdWAxwnDs4U9XUhHoKcfweMqQArzj7/exeTv3Uu9J6qC77Dxmgu0F1uTi2L2XvIjUN2umx6MgPVseoKn3KAfNjigJz245UAAzSEACHDW9nxQ99462MPNePhzdCtjwbxxv7szmMkOO9bHVsADnx9XY6D8cqoA3bH3lu45fdH48cFO4inQInnAASpxz6lNlsezOOa1TZMAbe8BS6f2yO1Rw6wnnfANnaqCnFWMcZ/X2GjXnj9uJMDihhcds+PWInuIpmAJ7JE9YieY17GaA+hxF5gF8LtNVkTuMK9znLVvWgLiKfceOOOPldzpK+mY+yr3R40tLSABLgndR2jS1LzcSVsYtaR2jfEd1JW37zdZlvDEOpNZwHRlkvVKzu+8dGA3Hvbonjc+x16fbokOitbfwnakTxzgJwkcZoC0eO7Ld4ju4QJ9kqYFcYTFX2u9rETxjDDzY+8t3H+PlzHmZ9oGszZauHQBXuPewnm5j47S7Jofy8f1SniAnutj8BnVEsYu8eD+PTzHZ2lqs+6ZIc6jtXmPBK9PUd28x1qldqVtKF2EWTKhd+q3bUraZIcGF2PzH3Z9r8x72fd6ie/mOlo7fSt0wu3KQ40b29iXy0rZmdq/w7bUFqDOJdHOgQmNx2luuQ+HAFBv+P7HT0ytnw8+2lfeOQ7OPHGdMxdrdvcEX1G2uc1bL9dcS555y5dj3G8ePM0R0rGul3Yu5EXoJBux1mesLN92yxxySFtMscnpXcAnnET69x2B6ZBLvr+MtW9TNj16JyHY9rcem2PPLHsel1D/cR8aBS3IoBr/dZnjgsCCqDeQyuJD6J3G4MT16J2lY/SXK6ABb/HGD2/xs8uQ8tjtgQ3LyH83hWq6xUdc0SPUZWHyHhJd4no5/WbBdOAUPE8LPx5z2O/CrepLu+x3uMr01jvjK7NY/2vuCZWFrHYcdmua+F8cIbNXWP5Yt71jzku/xQ9t6OHg2FGzqWeub/cKXYoYfHBHrGzOp58CvXY2eJsc2cmN47EqtyrPTrYwLr6W33sqHeIt/eOwi3sPjsP1B4AAgAAakBuAAgAAZEB2s9x3W8+OxX0cKgBqxPNYnDKAQAAICAprTE9oIbE8hcdIdXTRT0XJpvo8rE/1idirguXrIDx3zKwuV3MgAqxPBnLpKepWx7o7vBKWPLXR7DKzxkyK866K7Ls2QAzYniN4BPncQAENieIuWl+jjvm/XzOUeBFcuNcmJAAmsT7LK1NwoNidC4BnlATAe1CAOrE6NieXl36mzMTexOJx9gGTidRgBU4n6cTr8u1nE6Od1DoxvK4ecTtOJ4YAGNic4imZfdaCdoKnQHE7X3G6oJBnLSDKeAAIbE+U8v4D8Q4niOx8908joEDieJhPgOi6CxgggIbE5geiaOAW4n3Ruwiuzk+G7icNxPyWAJ/urFgOrE/NSNDxPyJAzNDvunePE4T52NRGG5Tmou5uJ6M5YCF0DxP0Lz9vmdWJ+S7pKdOHZ7s4nHgAIex6agEr602xONYnRzuo+JxPY7M7NH5oXYnwRRnRdIbE5BMtnNnEjj98Tsj2ydlakEXL2OVYnHK4R00prQ5ed03xOgGj13iEKAFfE+IC2DbXb4nyKAOW3a5XbCdCcIrrar/D9uX7ucABdick06VYn5EgaexwaLfiWu62PhtriCTvWU8InafyATNDHAAhsTmDPR/Y8u0RQyJaAAKsTpgACrE7M4DpBP8BtMlptC0yQk8VqiGxOcPHaae2Uyz6wFItO/KH/+E3kRnenRggEAAA8gFEKYnCO1FX8PwODj3QbdYFq3M6GxPJwnuGt/EJ4sATFht/xOfBj1EGRls7rY/4Sd6u7UVDMgAF2ick47YccctnQNTtDRzca0xrbs9O2RGezrXupkp+47nrcuvwoA3PTdfAF2Jxfkdk1tCOOI+TUps2pgWtmx2WsPM1rEnh5FzvPYTbpi9N15GyAs2rZ1RxzPE8HbMrDbe3GYdO3JO6KobpACAABuQEDsd03hvEnJbujwABp6Zc1uid7UIAt8Tt3uCY45nnir57VYnSCTxWY15rY4ceAAB2QHVid3CBrbAUST5EswZ3rld3KkCLndgYBuUohwUHscfqTanmAsqe9/fWy45Pd1sQBz7Ha5lkpJzdJAsdNz8nnYAgAAKkAMEAQru93Y4Uk8BfsAzsF3dyJZ9MWwzoAHidB5BbFeKRVuF+34Cdjyt3mXiAAyiTuxJ6i/c98M4RXkNz2gXQBJzi/ZwCbkAAH4nPwuygHpgABdieGxOng4xYtipnfr5hIV3cG6Q4niLlwT4Dww/IfD74AkDkYSTmpx1O2lDidJxWpGH2ah1AJobE8AABigM047NR0AlpdAAKsTx30xFRdDfPM8AOukw9di7W2X46eScQhXLPH6Rx84AOrE9Gce/gHd4lxSo+FAF9E8Bd2D5WmUtpHujnczMk80SMiF6kwAZsTxxJ09rbaFPTOOQ99iKThksw8nY491kYwTEnhqAbxhx3TvALQGxPfYnLsT9bs2e2a62o7gBCUnyyT4lJ2A3cACY6QBnkn/STu5x1pZeEScuxPWg9gAAYkAveTXydjPkw3KeXQ2Ms71YnV3o35x9ycdxwA3JOCCAsqgWiJ2QMN5Sdma2gaLjDdnYLcrE+ESdpxO9hdvKTlgACWta73Bz9XiAAzKT+VJzQ466YfxWWswzhUAWVJ03Kc9ABkgn6gANCTvgAHgk5RcdGpP0AAeCThBcLIAAncaTNB1YnYKdwqeGak4tSeWJHDYnRLjh1J4+Ls2T1zzB8+r6utizva6k9TXDiXJyknM61jBcAbE9oKuGxPvuTITd61nex4QNieUVkQ0n7utwTsz6ztTUW0pPdvdJ9maNJ8Cw/99PxpPVYnnAZ+3vcmk+hYeop2zY1BIuqNJ99yakKso874aAGaTlJYFmk5vGMNB6gNTrQetWJxi2fjT0SAAyEnUapzQqw37aZSefe7QEnjf4BZJyhuaJSchxOOVw+Kd23Pc2k6qceyp6H4nL3aylJ12k8Bd2Ep264nmjgdWJ1nPpfidH671YnFnAbVx1jE9ZoRkJPjYn6qTg1x0mYgImMKjGeUnFQezVh533pFTYme7zUnUPl5vI8H7bSSdKJ6aNrnfelMNA+Kf3SfMrhLudXnaY9J1a49QaNXdJmUnVcT3ja21cP+SeqpOQ8rBq3epfWIE92Mhmf24pC4m16nJR4ADxzAWpOq4nfEVyIAM6k9vouOuPNaALKTxOJ4sZDEmPIBm9FYpAbUFJybXo34AGTHybjB7+6Ik3/rfKECIAAoMnyYxDBJ92k46KtSCLU4nmwceJJ3rKZaKN+hP0A9g7DpVuz35q/IGYAA44nwxVgrXf/ABViexzslRT1GToNJ+rqYdstqdTyAAjGT+FAMeykTcdMpavedmsT75ndIGdgYiRAAKUnhGTns6y3E/pZ5hG2buzExeu7s6ZzsDbvaM6G5TOZpjAAM8k9tZ3qxOMyjyPuz2J1XAn42OiG2apjcou5ZJ9gadCkxMB7sgA5yT+AAOrE6M11sC7T2AWju15PZpk6dYAhy6WLI0kTrlJycDMiDNTTJv/d6qT4/3f3E8eUA9t2aOHYLO/TJwsJEDABGZPdknhUAMzJ0/1ZmjhWZOlNTBiTqm27m44G2uoNGprTXgAR9JyZk7qSdHTGY7LhKtg2JxXE+Lcdu+6UF8r2hlLJ9b+C7kBqZPLfHbsez7Q4jQBukgWpOUX2+nDouJ42Zqx2opLAy4npxet7cAP3N0AAWpPmknc8wXHADPE/ZOPq3YdtrMoO2rJ8Vk++AhgZOuh9qDRsTJ+2442SN/fsOfHKc+4hJ9DEHoSdgJOYMnzGNgjJ2kk8S5Py/2h2zu8StTJ5gE4QbMapIg5jv214mY3b2YQp2dyAo4ngUx2/nUX46zbMLuOtuTmuZE1Jyu441HLRpP90nExtzuQLFk7fSdLpGjsnX8TwF3XGDoWyfECiEJTD/PZcgXu48gye0ZP4QzNlq3Dx+5jdQaPEZAcsnAvJq+x8JQXPcdXZO1Unm6To93XGVbSaIgpOoOdrSevV0ZytfCoDHcPHc9xAo++J3DztqD3VpPBdrIUAE0Jy0UdEd1o5PRpb1DO859pjk6rSffxPS/7bBurc3djk6JycK7XqGdTzAYtJ1F3cJyeRZmsPHncgP7J8KPoGoIqxPOMnlUdkHQ27QCFSc2B30lHS4evuIx9k5NYtsUTbFe0UAXSU8qk/L1BPwATUnLHjnaY3K7pVidjVEsYgespxr4izk5VifoOPIKjCWTjQXQT45p2P7pOT/73Hjlfsyn4/IAAzxPr0no3j33uCNk/rSdy1ni9jG/AVxy1rk8zTsLi6dcneuT96Iwbk7BSd1pPzRF1z19I47iKcAADIBHqk4ymM1UIz79UmT/7uyBVcB7sIh7/IANuTr85LKk7NT1KoAyEnWCxtrJ27w/zTuJD6dUnF6ZgdJ3nE99rPaiBqJAD8TsPh8ikeedNJbBssnyZtqdxsZk7Difafn3pj1uT3x01VT1oADZxOS4nVWTn+2ICk5L4e9OW08nNuTrwAD6HoNifITGWUjlUOuTxzVDsfZ1TuMA4AwiTzbyJVeE8cd4JPtGjgrumTUOrE/oSeYPGmInCCTzxLEPk9exQTeONHw+sTypPQiOYYsTF+PCadfIoCdxg/E+BKu+1nQKAzsTk2vQrAEgjNIy2VPHdIAQAAACAuuT7rndA01Kssx5P9UAHUEkOJ84AH4ACopPU1wE7jJrJy1k4ElTr5PVcnrsptTJzm3rxIDq5O8En6QD//h8X1buTXoIAzYnlXj8bJ1/k6NQAGrdFcnOTui/JxuyqzscTuMb8nuOAfWJ3dk6nydhAAisnzJAPBJ2fk4vye0AAzYn8AAS+x4bE/vycG+3AMn7FATKq6pk++XC386gjYBsTiApxrE6gKdBTWBJUdWT+Ap0AU7raPIFPUCnBdh9s42bE5aSdvLGd89MfEJAp/yUEvsdRJxQknH6YF/u6nFvzyfSqmIsnJsTkKAIM0bFSd8pPKLb3VV7Lx1Xk+653aiBOcnjcTj+AIPk5XSc9q2O07qcWqXJzLk/pCcOZPHlrDWR+Am0JbcPIBXAhwLYGgAc/J8yUZXSfv2m1cncGMY1JwnEW68cbVWCCbzsAOV3ckk+wNNT5OZVAxAANTJ7TGYPyfu5PA1zMjZw7fiZoD8IAtZP+AAFqTtJ45OZFwF3wAAB8nU+T7wdClk88KcmFPMSbBQjoVnT8wBzisYQBq8nuLgYbJ1Y5tyyeMbWiXLUjOodO5SLrEKc/nWqQAhKTiIpwknomADNpPjYnCRh1wp5YHcnMgLSQz3GnGTpRIAigEjj3CS6FYAfA+sPJ84AGR8f9oA/3LIVuxQp5wfuUKc8jGVonhjlsHJ+gU4VgCYFPifHb8p3MU67rokKfCpOsh7P8p1eJxZwFBqykmbZCn9PjspZoz491yfjZPoUATgAUzJ21lc8Ke6ABhsn3Pj77ABQQHAZ3vHVnmAzipusJ6+k4Zl3fJOVMn5gTjqCfMU9OOtXrbZ0767Rx4vUdnqcN02lI5jDPBTidJ+Qk4lWNTOPmSjwft55gDck7d9sOTGYCnZBTgsCFSI/ZluK+P7eA8vAOBJ6lbsSKeHX6zwlGvjynO9wU5M0BBxOEAj8RT5qfXkAHVidspPbFeGjutTJwPE4/TuwO7Ein5gTxqI0Ek+an1eJOB4nnLjGVQFwk+MiCqJMb0niBcZO3WjbfDHMY22/fHPfjgPJ+IU4K6QJ86NX93MgPLJ9YAEsKfWFOLq9SaxjCAKkk6/ieOsBHi9oeTkiHEn4/g20ABzMgAZCToSfTQBcwzs8j3qiDYJTo0BF7E4gd3otX+nHDAAehJ4vk+L8dbi7z7HniWDRc8gU9lSdOZO0hzkG5jWJ3CU4MyepxPSbCgnwDk9F345Vtu05awSnQeTpgAAbE7cye623HknHJT/d3bAU/qycAlO06uhsT5rJyq8ag3OzpOo9bRhT81JzH7ZtKdrJODMn4EAUZy6ZPpDSfxgRjYn98TsuJ+Zk+4XCd5PjCntU5uJvf046lZ12LH+8nwlBfcR+pHuIztaR7LSn0he0gp11k+cKf1ZPmsnpgACdxlYU6FdNfO7AsnIogU++mbE4Hide5PWvjnpTtUpz6U488f+lPPCnceTsvJyGU6L0CMAAu8nQOR5MvVWVYq6tW7hI4xsZTz0AMPbdATM8YmEybqKpk2WzV5bNlsbAXer9yyT4sM3GNrTLE9xPbCneWTvye9vyZumWjJOf3brK+gby053vqasIWH1Bt6OVxxnaNsdwyfMTnkyDcEAW2J901eRLObS7Ce94qTqVfcJk91yfZARSA2amTzWJwj2ZViff+6i8nXWt5C+Spk/xKPkWHIBA2Rp5FAKjk5tKRu5Ps3haSTxVeLBcHRcb0JOdijFq+tq4Vyk9hdXvZOcsnHVwVZJ/ZXC/ScTZPkMni09wAJs1k4ncZmcBMEn4MjqU2UDsdbyPMsAOynr5T68pwOgCeavXk3KZdgQAEzJziLvvKcvJPFM7fOJ3K6+eU9Myen5P50jTKR4XYA+U68TPu0AQpzqctwnYw8XpwqskJOXYnR+uhLJ7XHa8IgipPHe9NfRlPAMak5mKdlFOZVAScTsIO5ZkAeAA3JO7MnfRTrztLKgAR7NDxR2QU15T4fkzIE9Az3ZlOX+97LV9PqwPE5qWO2xOyinCyTwoq6u3o7QDwSBtmAYioFSp/+uEIKeaxP1tduGT1Mq8ddZYL03mmY+IOHO/Sp9gafgkAmRW/1wuZT1v8BggGZWqeJYZ6dtm26nJR1ycASdxhnf1TNmTiezieqfEqdee6MIA0uTznPaFcee3yOcBLoAguxpSp5ek4VyAjlPZKnVnunWeztzrrquRVPvK40VT7Up+n1aoCMGZPwSlEkus4U4gADEqchlOHvU2GTi2J1Nsao3043X2bEmtAZPuAJAn4qe5VOxKnAlT2DUyGU+ZWrRQBDmjIwAbDJ43I+MzuKVOrCn8JTyeJ+ggHViemlPqynOlTpzw5v7syqeVVOnDdRoZ7LY0zXuEqefSJ8qnIWTlyp9fvuH5OhtWaeAXnugViN67tEd3woAiQANyTqwpxxU/hQBYa6js9NfRheR5CKdb/Dde4LUnR6T1OgNGYnIGsg5XUAAq1Tox3d3sfpCcItWVkjXFT3ap4xkftTP2ZPgqnS1BkMp917lYqfvRGNYnfDtsw3aT5g72PBV683dwKyTrAIxk6YOt8ABmUnJ1TkOXQrAG2qcJd8prTJ+x7HdLrdbh8ch9wYan/oeN6pyFk4+qfBXHCSnPwurhcH9U8KCcKf67CnMKuRkgOdU9tHNXVPHVwG1Tv601DU4eqew1Ph9j5891iU5xU4dns4c7WAAEVT8O8SksDSqdCun7Mnjve71ZGYrujdvH4mCqnIFT8g4+VE+9nNFY6ygno914ap8MADgqdRBYLyzU1T0M3a7rrhQCSFP+anTAex+XW7k7W1MhZP5UAITukyp4GYllccFAyhXTjyKP/JxCU6u2PD3XHM7aNhp2JyAdUiDPlROQynHQWRjI+aACWcBI1PuKnT1T8PbSFk87Sch76dHqA8TgtAFNQfsyeI1PaXI5ta28M6lU86qdMlOdanR2eoCp4UqdhyfXFGFanK7t2946zU8MqekG6e4nSyTuwpycgA1qcW96KqnRauwt3QZU5DKcg5P+JjxsTiGp2R495ycm16cZW/gZhVJ7UE43T3lVPOan4JTnKpyJU7yqfS1Ps1TEWT4qp76VfOQd4hbgI7K0Znap1TU+OK32ZPyY0IZTx2pzXgE8NAcJOQoAxsTvznTLU/9gCXMA8Sn9Ux/zJ6S6c5CcD5PTF76nV62p57U8jqey1PhUnlku4fo2qkc8Sy7xP+KnvsTqRneR7dBQco+aFXdPhT9tAJ/E8ASeMkATPb2QEAD3ZOk6Sf1ZABrlHne+25R1EvYkevSqAvUQOZTzU3WbE9uKeMZHFTjTyj4HsREmc+qfMFOUCnXzu6+p3d3ucABhdWHLe6RttOJ+Co9kABiq7L3wSWumpe/o9eS6sMG6dcnCqAPtJ7XY5hidY9Cd6nc6Tzpe3orAlkB65POgY2eT/AgGiU+caMnIAiVHgntzqXUDEDOON8mJpUAsJT5Sp7fk5/tjGFPL8nj7VkNJwPE+X3MIvHKszvQTvem/svbz53297VzjhgADhJ4qU869tENOuqn9PVlUp6aU9JZ3hUB9VH2Jx5Bw3SMD/yfNxPTSnv+T4dcwsk6YACGxORs4HDTgzJ2QTqdYAs5P4UA+ZTj9MJ6g5GCc99gZrYytwQAp0dnpbKeqnH2yn/FT+1R/eAFYaeYfH44rxsxsUKyOMca+KxRPpUAF+T9ARLOk7QKdle2YDTE+e3eJ5PE5vICfxPDYnOMkx+XTrU9SxkhZBB6nhSpi/J94U9hzOGxOqQVFhKHDx9WU5YaeKlO0CnWMpigpz8LoNl3mUAwT93eT+UVoqU6m/15VOgSRTBTy2AMZE4ZQCGNPN0zF+TsgnaE08xr3ad6rvRdhT904/UAASachy7ULbMfEFU9nTqrSadvaEAmnwtjmaOGrU4Jqc4c6vzkkBT+FALoU+P91JNOv4nxsTiiatwAGNidIvWHvbm2To5JyQ066Cypr3Q4L6a92CU0tU8KgDn2Os59nyEVOJ9pU5tj3X5PoCA1ZT2WIFI05Cyen7VkL5exAUxJ3kPUzjunoOdNdHRARR8ZG/qWycx+2TSY4hTySp34adrycD5OMq4PqU4fJxJGdk6vGZOXrqkTT/iqJAU93qdVhoR7TsTTni3bAxEsafMlHZ8ndiZ3XJ6Rk+aycR5JLYAmZx8r3dU08b/CBwBPCn1Gj7E/SSfrUqexVG8MnOeZlDB9lVtEKFZz7hqj0LT44Jxa9caq0DUFLmAEpev5Jxbad2Kf9OOHynULTg1Y2cE42SPKuPWRQ0murIAGk0+dyd+LHVk9Gb806p7ik5geg6lOn8nAkqaUp3kPWkfAMYO72DH+T5fQ9cuF/ye6FOZVAXKTtVIys0/CdWylPH5darACgp8xADUyf/WnkHorjTxkgLvE4MyePwBhEnXhT5VABEU6NATGxPpajCyT446ungDSSfJNOI8kXzu4bx8n9aBiCfbZHGnlK4f3M7Sk8tcGbNzH5dNlTvKpw/k7AStoOs+vAErTgPJzAU8ZacQO7FWnThTuHXaC050weAVOJSnYQdzFp4EUDtaeEVPf1T1IEGRfsbE+c3twDX9qzBjTthp08E4FqPjaPOsncBT+zIxXE/H9uDzWbpjGRT+mow1HENafq3ZgsntLTxEpxxgFtadZVO6hEmsT47R6i4c9KfDAAiXLtqTq7R8Y6YdycylOJanvaxjH63i4ewLMZ5O0snI4xptXeZAFcaeai6YMn32dp/o/G0+6ycVtO6knNa5ulw/m071SdNtPUIAAbT5oI/046Die2NOjWbnse7LJxTncw21PMAr8nepTyIp3vk9A50Z5PFTj13BonR1tFY9NOr5P3mnL9+wTUPUbYbq1RVOrCnJ0Vwi/cOk47qeIAAu6nXTT+oJ8bU+ZSfCFTj2ngZT6YCD4U+vD0KsB0j9hXsI7PYPU9TXCj1OgcneIT1wY724yBsFuhx8PwEyFj9p/KKc3KebYOn49tITkOJ/SE72weqhhkqnzNTq+x7u05RivmFWjA7cZOnkJ6dUVxivm6PBdDWGTg2J8Rk5THFM1P5ann2Vs+rcAVswyfYZOAqnXjnXgpzqhwSqcw3HQ5ukdiC1Jzk06FTj9r6bknMAp/7B338o1afrtOTagzaMqkFa409tUssWRNQn657L8p1mught3SRPX0nKsTv8p4RuccQu4ABryn4X12K/UdLaScfBFG+CAiuTiA3X3nZcKONVPWpCLVTjspxYSjtCcDZwHQnvITw2J8Tg9aADYlOumnPPxSiIC8U6LdtqJOrQnanTkr6ymGhoScqZOB3DmL+t9J6Po7YonDoBmUn31TovndAU5M0AsNPtoAC2e49lM3ucF5Nr6Po8n29T6f8Oq0+CgAFVPm0nSyTjq4O/46Xr2abmWMnTDMLwAAxk9jnYyqAwKneC17C0+vXrrid61P1SnlqT1vJy8NY5XB2P4X9HA7u+LpxOU+Aae+pPakn37CD1JzTHfWzP/6Ong7zOT1nJ2g04ekgdhO41L/GT1VgGDk77CeDuGP4AVnOgHJ7Mk+Y5vNNbfr9trO9FJ2gY4A8MmJ66bwtxANZJ/207Hf3B4P67jJAZnuJ710/a6e+K3Dyn4+Txrp0Tk/npPjdOXu1IHAg1bqeE8gb15AA1kn5kAS98BPce3pN8jXlObATWh4p2ik8HyQCVPuunQwAEbp/109fCfbdO86nE3T2FJ3uE5FzRSTH4ud4qT6FAHN07WzYOdOqw0NCT/VpxvwE8cuTGX/2ii+To7Pft07uyfqGOgb9rBO/bp12k766fAFIuIIIlZ2QAPAU+/uOu66uWnAeTwQUyBU9O6diy71YnXuZxfJ7BcEFyf8VOOoJcDT8bJ+/46gePkCH/unh3ToHp2iABB6dg9P3qnjjTqHpz408ACcOnX0AAqWT42J2xhGpaciJzKSAPb3DWJzL/Fh6cQ06PWur5AY2Jwb9aqp3k3He1w3VTlpp8dUfrSfSoBlunK4Tp2pw8nuESd+y6mJj2XT4Hp479e7ydlGPOHjOUXOQAPAU+UZNpljvV9pvOkopxYShc8O87nvfrSDTsykggUJzqcCFOhgACqTxzp3iU/R6crjW7pkEN4asp25k6TacZlP1YnG3hkLJ5SuAsyeStOMan2yTnOp2jruMqdfxOedzGBD51HTkk5wqubpPi1TDNAduJGfk7wSfotO9ld0aT7VdY6/Gmzjd5PslTRTTpUp+uYlJVsm1OaWjO5SJlJ3dk6sicpbHdMwVxTuzoQgUJmKePB7d6nuu1OvgM1k+cABBPH8BAFdTklW+GU5yrOjeOjMnTxTvKp1SeZFtPCJPl9D0zj6SJyBwJWScFgRW1jz5Vq0p3DMCTVhsROH2ncHeyzx48zQxMfapPNen0sHblJ9d057jZRGma+nR2enRdPAk7lQAfdPecnhvT6rgRDeBuSeU9OsgAPGluNo39aeOX1wVXFcn3dT7hcMZU5sKehVPIgAxIe+VALa06+qdSVOrOAOQlZap1/AFWqdfxPaZTH/1ivK6uQFnqte9P0HHJBgZT6IsU+GydGgI3J4HKulQ+UeQFexQ61Pd+nURTryo0MUaDXW4FQWsnxNer7AMGYfRaeD1PkonFTT2/vbIU74Ke8ABrTH4aeiPpyU8d9ifalP7NoAKe1eJ6d057DN2fR+CnIZTzAAGpU6wWP+36iiHhCptVp4wADxQB7gBxHdGVcfwXbbE/jAi0ynDMnGzT4gPUsk+Mqe4im0sn45uzWJ67Kb6Kep9OHbOH+V5TnehU+yVObNAjQzy/A35p0sk4ricijbOfHLAzrOfXW04RICuhxuudOpTiB3RbU5Dp0ylPRUnuvTnuNo2Y6GYTNmO41LM3Ttwp4Lk8CicIU6Uw010+wy3dMQ+9PsxcQTunK6T1QZ1r0+vScqpO+OnUQWbJUw8U8JqdnlPymnB9T3vp2/Y5Smv8gBvLdYWTrKJ2Q3qzPuXZOHxdoOTgfpx3sYKVu3P6OcnAxTztJwmE5IMBYOHZBndhTmhx2fzeMkMfEOfiHjUTrMnbfzdu0sF9mkX98Ljmg8x1E+GjuqF3tUrY0dt8xxNHb6ie6F2Bon5r+m1K19paHPszR2zZbo596aa+dHpO6fO9Pbs+5gT2vJ9o7Y+SNS87EgANCT0fJ/BIFVicj5Om4jhM+2fJ0DkbBpGt/gxYA0sHXeJ+50cFlYdXLcVdqTTvvJ2c09JM0XNPahnI+Ti5p8+fp0lSCahnUnU0TvQG6gADJqdLlOnDzoNuyx0+MdcmVuPs7m7Ha0T/A3WxMbGK1ntPR3H4lj5i3Hgk5UDNgzXB39ZjThF45QFkdfhCK2LpDU3CnrJ7Eecaj5zCnZ0rbvmjqp8pU7rKeF5OTKnGF9okGwEUF8dPnFPLmAlxTvh43ZTroXB3uWOZdBHW/Ga+8478qeEiB9CnYHpt2gHU04yoQNvhE/HDM1/inZCM9jif75Oc4npcTsvJwDE7z51QjO/LHYNNtmaxVk9zidl5P04ner+yS+/LHekvvhC2orHNKTnCK6mU6jacGrGRyH4s1yNp7aU8b/DGxP4YnSjTvDK/AM5yscbp6tknUlTtUp8eQ9KAQ61PGmn58TulPcbE9GK5CEoolj8dT3kZyZU+kGcL5OT1TZzOtgAHlU+mGedWOCHthFAIhJyxU8Y+wRX2aMrYKt0q3c7Ha7t1dC3hrH1V92FW2xlfJifp4XU8LU1j6e3RRQ/4yt0xPMVbDMTpih7kTiQj0X5PmwbeQ9CqY11k+YDumtMVvH3PTt+p6gU8OsfZx3CGzrhTkOJ06M+NicSDPnOzTLT7qp5dY/xVt0q342n42T9cxO4M7P6eBmILaAE64RuO4uDeN6MpZOwxnbhTmzp2f08Jp06lPAbHdvR5lgJJsGOOoIZPocnvJ5yBJ/wM6Fd3Q2P+Rjfoz+Kp5BucwGdQOBaBn281hpJwgRg4SdGdXe5TpnT3vXS5Q9FLtqZX+b7k4t1/C2FQ5Jsdgt7JYnd5qLvRjLE+ntTWKHrb7tNjhH/aARbDUsGEXTS7yBFqmSxl4yUIsQEXQKL5BF1Hi1l41youS8WYFLaTFq0i5fHZAItcsXmCLoBF8NS2OM4TvtTUWWKL5DFvQi5yxezvs2kWWyL37FxwizYRf+EuaMWrSLLItq1iwYxfQ0s7jPUsr7wAKAi5gRfZ+NyCWIiLe1FvkW3dQ/6EvNiXO2LgAAZkheCLHHFsPS+kRcNkt/UPabbwxF9Ai4WRf/GftUXEiLt7F4CZ7DQ5H0unUXTDLBBFiCZ1BM8AmewTPr9Ll999Ox9axYJUsYEW+CLOEzkQi7mRatIvv33viL7HFyXi3kxf0UtwTP+oboF5kiZ1ixaXGd4TP0CLBEzoiZxA/edgDkTOIGLOXjCiZxhM6GUMo+btWLD4z/eJ+8AHZIvaEWt2L1RFw3S5xM5FoehEXYJnqBFnoi0JM4EmdCTO7mLnEzkEi6gRb7otQaXPKL0pFsh++cRa5Ys40W9CLiJFkqSyiRfkmfxhG6QAzhFvui2Epb5It7UWrK7hkzyAADJM9MmdPZWEvtqJFg1xoNRdBhuQu7WKLdrF88Z07JfKotQw2GSLrBF9Ai3l408mfCJ2pSLCZF38Z85JcImcpV2VSL9BF6bS+yRbCItgMXANbU4zmcZ3TRa5osqUXZTLgylveS2LycYIuSEXgCL/ilp0iy6RZy8ZiUWPBjzPmhMi2AJZSmeCqWeq7Cg25zS3l4xWIuauN6qL4ZFnRO3lM7FhsCkWHKLdpFtK895M8oIuF0ORKL2ZFvMi0Mtb5EswkWN5L2Uzt4Ax1M7povTUW9EnsAJnu1NjpckmcGuNixLSRF0Mi0uRf0ItSTOSCLYqujbizU/bnItgMXM+Ly5FurS5JM86IsMqGFiLlhFsii/Yk+QIvrMXUCLfhFqki50xflyu/MWN6LS150ii3eReDFu4UW8vGnRF0Z+8vxbPouSEWrpnDZl2yZ/ZM/CSdAUWQKLODFvoixwZZUot3BaDCLv4lodS9mRY9osv0OnhtIhF2Ii/xRapYuGTOrSLBnegqS7+M/75O+sW+WL7buzli8lRfrhvXkWN6LCTRCbi4jM7gYe+sX9xnsMzwF+8xRZ94sDkWktLA1FjVxgfJbVIvuAmuKLWUzxMi4Vrc8Z2gzPBKLyXFqQy22RepWv38WSSL/hFjmi1YReemfhqGPDLv1Fw8Z4VM4YYcVM6NKLZlF6CZ+1RdlIv8GXJJnhKlspx7eM4mIv8cXNJn2kz4Ii9Nrf1C2ZiXwmLBIxlii22ReCou7iWxX7pBlz5J2ASSUItYsWlaL88luJS0Ck85GNvjOgiLRVFkqi76RagIvrMW3JnIhe1mZ32LdYosZeMWZn9aluX7bt3sV+3DTOt2LY0ziaZ+5RammerTOGEbi1FwxS4eM84RvezODxn8RFlYi0MRa1EtOEWQJnL3eipnfxNxiEDF63kdb6+lrMi8dRZy8a9EWHxnCb95bi6hpeRmcPqX/RLotFq0i0Uw7Zu0yCWD2Lhgl6ki9PRdBcdxjb71LIcl5Ti44RZEIveUWS1r96lynS+I3d54ts8WdlLSnFyQi+XM8rmeNrWZaLPNFq0i8/eY44ttzPM5ndqTzdiy8Ra5ovtzPcCrCMz2lizl40M4tBzPu5noczhxu2jM9R4sJkWx5nkXFhmiz3M9Y7OeN3ryL/hF1Hi2nM9sotcEXpaLA8zxeZ3CnZ9Z0rzO15nO5FhiZyDM63mcLzPJ5n/Lj+ay3UjeBmfJUWfaLTtFs+Z+wVYFcfuF6N5nZBFw5S7fM8omdZ+ncAdV8zsgi4WRfMku4iXOJnhaTukAE/M87Ys/zO75n9AO2uSydxbBksYEXNaLO5FsXSz73o2mcyEWLJLb8zn6ywZM8Umc10XU6LnMz+Ii2UxaC4sCkXE5nREztlh1axY0mdYsXpZneKADmZ6eM9DYscKWJCL2Czh8Z4Sncsmf98Xd9Lzwpvii9oRbDYvbMWLJLMgl5j+87M9Gmf46XhtLXlFs1x7kXt6mfvcWJCLvzFz5i1aRbE/sJ56+FnvdFy6Z0Is7vSdTCWY+LhpF3TSz/RYfGey+72SLN1FvVxsFxdGotCCWHFLIlFyXi33Re+4u2uP8nzFn9rVS9OM9nGcQEWhOLp9Fogi4fM4vov5zPKFncVF2Wy+HEZwkvWMXG9LKlFzDnXYs8V4urkXC6L+FFjeHM4s8DceCS3zJnDizr+iygs8b0tQEWAGLd1F9L+wgbbV0v+cWCpLkAAPLxqgRYfGfR+7nNL4SzvOZ/IRaCWdIMW8tD/+lwnS5DRYIIuS8WolnMSznZ8xTFtSWex8X4lnNhF/OZ0ks94yc0MWfCLcWlu+Z663Z780sMW2GLH3F2yi33RdiItkEWslnVpF6yWzPEY4NuJraBGLypFwzi7YxdzIsQUXwyLuWlzRi1JM5+oukMWDXG/7Dk8LWMRYmIsccWomLMTF9BZwIReHIvLyWrxnZXFvHSwTRaMYv3qWf1LUhF+xi7+JdmWd9zP4uLHjF9uZ9Rw+zcds3biSL8yzp6i7mRdR4vIEWCvG4TF6CZ/nM6mWc+8WA5nOXjfjhySbcZYsGMXrWLyBF5VO4zxbTmdJLPIln0Sz5pZ8QkbkEuMaXaDLmczjTh4LRfmWe9cXcOLeyzgXswOnsgmcATOYJnIkzoiZxKDrIUvtsWeZLK/FtOZ0oRaa0sVLPWh9arjVHi6zM+EEvKEW0Vnb8z5UHXUs6PGfId3XJTcCz7Mi5hxYuWfOLOZDLAklt+ZwaDrm4sqLPEFn/dl0N86QZYDmcVLO0uHij2jLS6gRboItEEXpxnVTFgWZ6xM/i4tPMWXmLVpFmmY5dM+OUv5zOwFnKmN35i2Ks/kIsSrPXSraTRKVZ/RRaumdOEXcyL6bF+bi5xM7jB2rkWTqLCEphZi0rReJL2N6XB5n3qdlri6rRbvmf+JHcuLhWloRZ8oAFhACNuoSWL96l3LiwwRfcYsGrPgHL5LF1Ni00RdHEsukWkaLWlFhHJ4yxf8kuUKXbyL4yzvGs1gxb3It00XF+LZhFmWZ/yxeZDMALO9iL07FtbS2Gs5tmOrKXLCLh1FnZZw4RbDWcU5OVe68azrVxoms4dWd+EXClniSz0hi8Es49mOn9M1SL+rjYUfZhpY2ItasXGCLD4z9sqwaxaNYuILP3wdDGlyRZ5axcZYuPcXnZL1+liXJ+cHvGWfxcW9CLwBFnVxq5peU4uETOsvGbglvgi4TxbnItBzOwSLIlFpES+4pagIua5O7pbKd2uBZ7URa40sPKXUeLKzF5Li5Ss6sIt9LPlpnIPFkQiysRfNyczrObyrsbFvJizIRfnWfKrOl1nSbFldZx5pdkYvDLP3ZnqtFmkiysRdrYv1zPkuLt0zxVZ2QRYrmeEqWzeH7/Zi3h4Ixb0IvaEWu+LD/FmOS74RZvWe8EW11nI7FoTx1Hk7fIuWUXEOLarjfOZ+RM70Iu5kXSFLGrjJdi5AAB1WdxMXmcbg8J8Ph8z5vsIszKXRBLBjF1FZ4FJaI0t7TOKpnIyztPh/xTo7WdoTPpiLQGzxDZ/9RcI2fCAP4zbzsAWIi+NpZR0uwKX/1nlZF+Bi0Bs9zNssDmVSLIclqliwVM9lIuGEX85nmZFrjZ5SRaFmcCUW1qLUfFizi/bpZ5ov5zPQVnNTFtWi/AxYn4vwMWX1ncol1ci1ys4U0vmEX5qLgPFgdi+ws9dmepLPCtLG8l3Mi6vJdWot9CXICLvpF7lZzFM8FmfAEWAuL4Uzw9i8Ms5sIvb8OMgHb5F0hi0JRcxIvyzOY5Lkkzuzi0sRZtmcQLOPNnC7FjVxklpcRWfRTPZxnKUlySZ9YAEnWfxyWbZn5qzoOZ35xYC4tNLOZCLHNFl9Z9SRbfydTm3a3MoSliwi8rRbq0tubOhNLQ6z2Oi5ixaaIuXEXRFLIyl7Mi07RbOWcHcXTDLH0z+WZwYZYdEvk0XlOLxJF/wi9YAFYoujrOD2LrLFysi95RfwMNhbOR1nivFzLZ24xfy2dUkWnNn0OliQi9Fs45osLUXV5nacltwS3Zxc7It6EWWiLhZFiKZ0AZbsotzMWpuL6lF2bi2qs/uWecFOcMtucz88Z5eM6eosWbOuKLkMl4ZZ/II9TWv7cXnGLCSzv4S3FxagItikXNtnPbFgjZ9oI7Zu3uKWPNnRWzw6i6Qxcl4uGHXe6LygAIxi+aRc/EtYkWyeLqBFiAixoACeotBbO0GLU+l0cSw1s6+osvrOnBHJMttjLbwJe00vEEWzpnEClnpZ5es/x4uAGXBtndnFjmiydRYXksEbPrAAnyznDZ31JcsIvtbPh1nW8l+9Z2EpZsIsrTPvWL7nFqdZ/t49HcumZa/lnWJFh/i5gRcQIuWLO8dngglrLxnrxfI2c6rPhFnj3jlQeydRakmdLrP4OLIhFrLxghxYlme8bO8eLeOzgiZ2ds+22fhkXatn0hFkci+MpciIsp8X2GLBGzprZyvJZIIvWMX+NnkvFr9Z13xc02ecLO9iLiBF+Qi4AZdY2cksWO1nmGl7tZ72s7zIv0EXB1nw6znvSwDs/HWdy7P4tn5wjlbZ/+pZzWeDFPsVjF4zuLi89s7/otLLP3tnzfFjQACds7wIsTFOL1tM4zxgi2Js9dUvOaX4+LvBFxPi8nxesIsQLOFqLsGzysi3hpbDYty7PrAAy8l5gi8UpdTosdTOvBLIsz2PZyzLaa6118XBRLTfFz7Zwopfb4v+EXO+LqOzoe1B5s6XIuWcXcVnGHF+Bi76xf7WcEbObCLXxTxdOzSI/n4uKaWl+LK/Fg1i1l4xBKeYbaKdnlZFxwi33Rf+osg8XBaLVmz0XZ6GRdsIu+KWCtLRWl1OSz7JeAmfIlOiyLK/Fx9Z5dM4nWdxMX+FnOXjCBZ8VJZZ4u00WDCLGaz3gi6+A5fWe++PzjDDRFmKAE0RZigAtEWO9nIhFrvZ/9Rb0IvC7PUdnw5FxAi3vs4NcYH7Ob9nCol7li9IpZckvkLP5qLy6ztPZwXVcS8tKkXX9nu+z/fZ3kRbFOsilPFctNAl1Ai5ERckUs2KX3FLYBFyQi8pxeAIv97O59np/FihS7TRccIt/rPwFnoglsfZzq41RYsDUXkNnAn5/sc7eLttWfaaW2uLnjF6A55js+Y2dhzOsx7Ggly9Z+IRcImfkMXABLNkl4/Z0Ns6xIvGCWASLUOzsvZ04Rc22fQHO+JLGXjewS4rxc1ItGEXcvGmrjWg54gRZN2eFaWh1LHWz6ki1IxalIt5MWYNnH3F8jZ0ps94ItjrPGtn6RF05Z2nJfy8ZCHOcdnf2z22Z6EJZX4sQGWqSLGOz4CZ00RfjKdFeXEynTKW6YS6DxfSEsByXshLUBF3ISxbJaJIsFCWRmLRQlm3SyUJcMEuacXyhLlQlswS7EJcsEtkEXrBL0WlobizMpaaEsZ8WWhLaBFuyS0Nxc6EuhCWiSLfxF8ISyMpb6EvRCWh+LcQlhxY5ERfUouTsWHKLkAAeg51NRdWUuPUW8Vn+BFiyZ7/xYI2dlcXNKLb2zowi70RcKIsSLO1NntBzpHZ+RxYgou1bOh1nghz1Q5xzRe8OdiHOBqLVezqQ54vs5kOeA7P51ndnF85Z8oc8qOfL8W/iLmhzjRZ/+M444vaHPJyLVGzxXI9P4+7Kez5bqNtlXlhai8/M5y8aMEXidn7Rz0TiyOda5kvLCW5JnYDF5uZ5LxYImeryWZ5n0uzj7i3sJcQosNUWNmLUCzsLiyxJfcot4UWeVLXkz72i/JsbnIvS0WP2LaIl7qi65xaxEurzPCCL+IlnAi1JM5pIveUWBNjQFFjLZ7bM9R4vsGWeVLqPFn4S1gRcd2cGEWSCLVhFsgi/Jsd6IsgiXRaLLBzg9i4pI9DEsVHO2tnbCl7tZ1XpcJIv5zP8jnhBF+ES6txct2cDsX3FLqTF6456YJZ3IvwMX8RLu8lpwi3wRcM2N6m73FLpIlnwi+SJZ8eOTrOatLk5Fnyi2LxYTmd6EXTGLlmzjA59rkbpAB9LPsTnpPFt5S+kRcMEt9LOA5Ly6zwrZ+Ds7VIsakXKtnTcz0Mi+opdaOcVaXPjnVLFzavRxxZSkcHhE9xndnFzGBweERMIuREW/pLoczxZZ29s8Jgckr7zRLvcl5Ii3ERaakcJm6OOLIhF03Z0HM8CItzkWWpHdGdj0S+gs7sj1H7OT9nu+l1rY7OxfhYusr68SLOZFoZS+IRcX2fNLO+tjWDFzli9lM/UG3VTPGJzzKl//LZiRfNmc7zPbNtqkl14i7NsdYWeMJn0FngyzshZ0Fxeg0s26WdVnWKzofZ4TRZeIt1iWvlnlazx+bc2JfkItcrO2xLQEljUi5AAAeIu/jPrFnPfmmM565s6DYvunO2jnGdF89Z1eM5rUul7O35nhk5yZi/ERf7EttkXVUdC0zuri/QJYgIswbOvjn6BF9vi/Ic/hkeMBO4BTHazusS0xM/EK1cBO4BT6CzzcS5PRZHOfi4mqyLJMjzx20E/r5me5HO2OLXZzhQ50OxaUOf3iWfCL6lFp8S4tM8o4t2UWPxLghziYizuRdy8Z0cWFdnq2l4CSzLs4FIuREX85nTSz6CS08JeV2f/UWyCLfZzm3S3JM+sWctqnlSLzfFyVS6ZJarOfEqW+lLQxFxSZ+Ss50UtZeN8ZLb8z7TOxxJbWOeJHO/5LT4lv85zqs/MUvRLPzVnJhFmRi2tLsYIsGuMwCLeKAVrZ/IxfQWdxnObKLmfFnMi1Es76Wc4SXvKLX1F4lS/nM/DOfqSXjyLkJzhgo+RTu64tv0WUCLPXFpQ59Wc6IudpEXTdLoczuji5qc7cksULOKhLEMz0qp15TYcWdv0WDCLMWzsgiwjs7TkuX7OnJLhBFq8504pc1OfGLPf5LKfFiYi1XpeQEvWEX4iLUuzyQizLs44ucZ0WuLnbVT2BB3nRb0IuMEWETntLFkyS6YxcAmcsXPgJnbFzhC545JZwIsuSWsSLalziS5wQg9zovwbPGyLx5zvjZ7Cc7SIsZ8WiCL+7Fj+i8wc4yOeRTOyXbvdFwRZ4qs8+Yu7nPv9jjlz+Qixhc9X4ugCW3Ln7/FiTZ15c7/OdD2pKpLmtF3LxtTs/zme+XO8KL/lz49Z4oc4uWf0lbgrnGZzrOZwTTE8MN1b6srnoVzjUSxFM7AIuR7PxFn90zrEi35c/SItMnPjNLFUl0gi/Fc542c07O3TnH3Fwo55Vc8XWfpXPeCLmVz0oS9lc9xqf38WCmLxqzhai4Fc81IvfzPmCLBVz5y51IRdlYvuXOornlmzt85/1HtBsNgEWkiLdfF2i5x5c/kOetHOGLn/yuq85zec+iWezLP5JLikl4y5yec/NItnnOHZ7/NB+fOMpc6l2fqXOEyL789mbHQtJZUAAvbPXdn81F93ZwXM4JItrnOTOLFyz79i1uxfLItbyWuLnU1B/5Xadc4+4tl7a5BLL1zg1xhVJbuufFiWTFLhNF/wi92c6sktKHO4F7FNh8infqs9FotrnOqznRjF7CSwFxfQWdYkXlAAH2z1Ni6eM8RucMXPzN9WVzppZxrQYOufWMXUVd+Nz75Z5WRb02ehkWmiLiSzkySwFxZOWerXOLlnv5zsOp6axd8IsgCWsSLWSznG5wzc72ud/nOibnivFxHZzSRdqkuWcXnrnP5zrm5+Tc+rovFiXtznd8z9sq7VRfq2dQGX+5nlvF6tZ46s5KUcsTPDFnEhFum5+1c+HIvH0XEiLn1zi656Ng65UsukWWVnmKzqG5wzc+PosUkXpKLd1z5fZwkc42ufyEWmlnFWlim558s6zovAEXI9nBhF4Ai5Dc/XOcXLOSrn49Th2w02c6FucMXOlJnmFF8s5wuxemWdYkWlJnPtzjK5+bWqtufZXOLlLzQTuo40rqfcUtfrPNSLtrFoSi6fU+oYPn1ORVdl9ToBZ/4RYlufFBaxFLMhFsVXV3M4/YvMHP5CL4Uz28i+4JYZksp7OK9nOXjKmi15c/n2ccyXGDniwl2bZxnc4lucpSWObnQNz8peyXYcqXviyX4SLA1F1W5/cs7aCdgNOR5bt+l7LZ8rJcpIt48WGTnLBzi7Z4g047WconPB2L+4zwo5wtRZYOeSEXsGnNVelC52hc4zouzjOuVnAJzyAAGYRePIvuHO9CLv4z8m52uc65WfeyXUDnoczgwi8p7b6CdYH6wCSa8l5jZyMs4SItACWUDnaBzzOS4bc/r0tWEWg5n0clqDi7l434aeOkmwKt91FxTi2iJaJ2dinO+DnhBll/i8fc8fudkE69dnWLFg3Z04Rc3EuvHOVGndJxpXZxqJYCmetEWOdnVelhqi4vs5+otlyWKFLVWziYi/ao+vudkiWODLBSlrDi9fc7FCvGnO9Lnq/FwiZ0JM8z4t7sXxtLMJFrjS6ns7LmcsnOk0HcY2tuSwa4xcmdqHPfVnr4l0hiw4RZeIviHP5BLjZF1Fiy3c7YUuVHPp7nyBFvQi13xbLmeL3OqjnQ7FtliwDs9lueAPOJTnd8l4BS0I87hOfYTO5xnqDzrLxmFRcBufLSWGCLjjF3ci1iRbIJ3X3PQZn3vFjxi1q43dONAKWEDL9xFtVxnQJfYOe3kXUCLjBzsPSxBc+XGeF3OAdngRFiYi3kxc1cYuCXYWLV6lxjZ73c96acbp78eLV6lmQiweo6LCthbOnuLfSzm7Z09xasks3kXInni+z57i1Sxbh4uGEWGLnKsl6wiy5xeludxPPDCLh3F55Sytc5iedVnPjTn5Czqa58ZpcR9uhEWcvGv4zloi9yc9DItQEXRFLQXFgTZ8+M/52doMXUeL3Gz50S5gs+wIuibP9jnC7FoWZxBRZG2erkXEHnHxzyo53sRepIt9LOTtnLPF9zi2CRbkec8HOHSL5RzlQ51AReS4tKTOqaLQyloOZxXM8l4vuKXSHn1ilrFizps9TOd+CXuJLfOzyDZ15c9R2crBPmlL1Ul3ri6YxbfmfbBPvFLQXFiwi4TxZVotWkXkWnxWd52APHs8YUtoSXQlLkWzt/Z6VnY2SOhXOtZnq5Fn456uRe9IsPPOnxLAXFt4iwbs61Iv1PPPnnelzn55wRc5rOekrOqJLOXjYzR2c8+qkspbOVaLtBz9zZ85c7IIuTMWhJnduzz5Z6uRf8ItuCX7CL4Tzsa590c6hmd2TOKFn96zjJ5yIc6JOcZHP/qL1gAfwiytpccIu3nOB2LSmzrEi28RfGUvJPOFdnvil+wi4RM/L4tG7Po6Ll6ziC5+5xaV2dfPOaSLCYlzMix6Ra7mdZPPb5nPBzg9ixM850wdq7OkKLAsz+554ns8C4s2UX55LDVFh0i+1RfNWfORXIuDa8lsNp+6ubflvvAALRLLollFZ2kc+ueffBOtqLMjzwAy58s6MYsP8WDXnaBzrp55Ts5COduPOdyLQ6z4bi4kc/KEuD7PxlL8Bz8m59Vc7AYu5tPsqtlrz8xZ/0c5LOfjaPIXngFz6s5w+M/y3uOIXbSLC8lyY54DJb8Ev9rOL5LNZzrlZ5hpfAmfqcW7qL2Vzltp+8AEpWeJvPkJnybzvrZ98s5hCeWnb8eLN2z1yS6ORZGmeuzOQqLTCzmEi3tM+qktWvPQ5npWDmlwwoNbgu2fLOmlnE7Toi7dK8/GmcfLO81nObz69Z7Ls772dTb3WrjbpOlZ59ipf8Iu4qWzNnhslperYzc/I+t4hbUXnAcz+oJy6c+FYvmLOp3nWFzky5xBc8+We4SWxSLTtzxfZ7xM4Wwd8UXaVL/pzuXRwoNsZUvvTO+6LAHTp8Z+xM71cZgEWRKLG9F8QO7zxb4ItMXPDpL2ZFj1w6u8+aWcyX6AlnZujqGk6KpcUmfiqXPSLX5z0xi0qpeWuecTPsOntbmBVS8lxd/eftzPVVLQBz9VS0hc87ZvDUWODnRBFjVxsWc63YsGqXstLIWlu+Z/9g9IedrzOuWLUpFsKZ1ARYG2cRvObdLb8z2nLTzc81Cd5TP3KLJBF11S32s7IItFnOIZn4V+zPS45xZbzv2kWQ9Lwal0NS+Gpar0d8XOf6L8DF5QAP5s9imfv0WtXGxOD/Qi7wRdwkv73ONuLKgATj50tc6+2df+GMvGerjeFi0gnqF0t7DXYYteSzze58js49Iv1aXvaLcPFu2i73RbfmcedOTxnh4z/zS8089U+eFEX1PnnEz5MJ8o1riWcZLO7dnx+zmtSx28+neephP169mBF+Qi3XReAADbLO35n6XTwD5xQpYRmf9qW0ZnaRF99i5PM5z3sACGIHnXazntZ9586twfc1GcDnAWlx1Z6gXe94uvqW7Znz0zs+vQvRapItRfOOun7wAQyi4wRaseeCzPaaLjcl3c589M8XCd0gBf5LA5F9yS3JM/S+dY7PnpnkaF3OZ/F87x+slfPSFLPUllSi1DdouUujcXfiLbOl6rc/D9c26cq91i9n9VFwnS3dc/y+cMEWMvnbW5rzZ1ws7nIulfPWRrPXz8r59BM51ca9SXmXnLnF3OZ/3xf1cbqqWcvGuZFmDS2gRaU+c/dOkvnKXz3yi7ERYmIvKAAv1n2Ilzxi19s8wEsQEXjOLtqzgQi5ORZVkvjfOGLn9az5B58mc/GUu4vOcdn0tFwniytJdFouevOIZnUDxnL5/cRfOUtCzOy3nqbFwfi+t88sov3HPsyLlyiBB53wRaQedPfO8vnqtzgki+GRazEthcWfznRuzoOZ5PpbAEsEzOYtndJz5R52bs6mot7EWx9LUN2ylZ4W84XYuMLOIpnFklmr55Ipbq+emXOCaLJUzsXi8xxYw2defPlAAnZFwF519s9PufgkXqC7MYdplLbhpfZ4tUkWX1nyjJlXZ6Gxa52c87PmdLGdF77i00Y5gb1ePO+HnaTF0O58oc4TeeoaXn7ndBFxwi6d85MuefqWuWL42z39S718/QedSEW8vG9BF45fYy84kItjfPebnILz+cZ6Vs962fWEW05nckzlu5+n9fArO5zOFnnO5Fl4i1ixbVcYsUXOtnWGlgzZ7B89/GelXPo9njPz1454o84fkukKWPTnNLR+/Z5h841ItUkXHdn/wl1Ai3ffvF+dtXPRBL2Wz1u5+j8+UIt73PhyLVJFpb56gxbHWeXKXECLtvzhn55bs/6eeGkX+tLbtzpES3ps6pIspSW0rnyfzoQS3Js+xecw0W3GL7HF+ai5h86REt2/PZdnW+z58Oyr3T9+eBXOMLn0tF+US2FxcoWfLHOMTnctz9E5yL86xIvbLOFbn6vFwMixMRe8t3QEWMvGMUAEQi28Rdg4s3MWNHnWOzuCa1Gbo+ecu/Pt7nsRF8ri44RZU2dDkXIpLBrjPpZxjxZdUvWEXNSLAlz1L5+kc8s2eL3OfCHjLF9pi5ZRdl+dRfPTAAbNF5gi0ixZRYuJPOCvGFjFmP5wxM+L+db7OXHnW8ltLi7Qc+MYu3LPefn16lgO54OxaU+fQDPkLdRzzjP520c7K4uEaXC7nZXFwAS9Sxd4Is3LPX1LdhFwDZ6eM5yucwpXNytK9zpzS5es/QWeM/OZCL3mlkQi8b8+AIuiaXDWLDhFoLS0h85K0sizP5NnL6l6wAPjM9vIuIrOViLMhFj6i8Rc95IvWMXitL2azysiwgC//4sEzPDlLmOzlzi6Fc8m2c2SX3BLZqz0fZ1l43fUsT7PeC7mSt03B/ts/ROfi/PJJnIEzlGPb1pez0sViXYo70tzyLi/Lc4O+fD3O2lLWjz0758zs9j2eqHPBDn0tFmNZyZxeHktoMXErnJ7F7y3W8Rd/Es+/PYDz6Z97KayuY5Ct37fPT6Lakl0NZzvM735tCA6yzn8mz6gFzcc9W2f5zOhnnNUTlIG3VE8iGd1TWKlbDU12IZx74YULtdYX2oncJD2XxykM+6icdn3chnfU1owux0ramwvfmOMhnw0TibC8tHcikNjn2sItLXzzMS4LxaxIuNPO6nnSuzws54Js6aecpUXfdn/uzygFy+s5sIs2vPqSLDyllJ57wRc7IujkXBJnfVFzhZ6ks/tWeE0W3Nn1hFtBi0KJbnIsqrPsCLyAL5Qixl43qOfDLP3OjN1Fod53ipaZIuNkWSgX3VF3qi67M7Tmc1POGrnfGzhp5+kC8KYuZAvWnn9ulnIFy+pcYsePn2nxnbUz1ou3SAAi+dpkXQY77wAFYF5MrfsotgyXBdL96zpaQ1YC43ou7RPzlnMGzr/w0IxdaOcBcWaFL5wlhDSwxM/WYvvsWR0r6VFjXS7hpcTEv/KWUyHOkWoCZ7l4xkItBzPx3nmZDinC6ulceBdhcW89nBezoDZwzhYXGcmTOnonI4e+9S2nM534uPqWniLEkzqSZ/vJcEmeDHPeY7Mr4KFZwLM7D0s6rPEQXDPd1D482Q6brOxAIUQXHHF1Iiwhxa1ca37PO1nwxFyXi2iC8o2fdkPLujJIzvsh3WRbtedMHP0QXkMTxKx4iXfSp2xAJq3n6ILxTPf6s6WPPWnOUYnSs1jdPUYxYHos8sXCtLuZF/OZ63pddudaPOuRna/zvpS7Fc7IBfebPfNnFClkT5wEs8l4v56Wxxnfl962ay586FOdocXuZn1GVqAi8Wc7xieMsXrCLYpFziZ0F1tH0sezXJ9LKxFyIizPpbBdNz6WF9LxMT94AL6xYCUu6gvqr7uXjMEi3Rs6TBu/UXHQX7V994ALSRe9IsoUOT9LfVz/9i3B84v0tJdbNXGQ/znCh54xb3udWkXiwbOBF9ki4WJZpicnvP39LmhlqsG3NY9zmu1g35XTdIAQb5/n88AMvB/P67nWXjRg5/i84PYu9HPVbneKzgQF6/883+ecxPkDLVQRpXZ2Ns5aIutbOzdnQcevo5+As4YmchbPAb7AKzirS4eM6gouUaXTxnrdz0gy/JQ/nBv0nmlKHHXW1sF1Hs49osBzOU/nzil2b5xq41F2eTzW3PjzsAQ8S3Zxbt4s5eM13n8+zxAi5IRebEtFjO6QAKyz3cixlxfABei3PhKLrLF+Q57AZeOee5eNt5rjHzpgi+Gpd3BfqGWZCLmhlkUu6plaFidIi2tqLpEzsX54YRZsku6/OQWLqCz5Po2YZbCodmGWNiLl5F8WJ+8c6cMs5kWXDLMpd51Hc/c9QWexPOqWLP4L3wy/ns/t0sVTOjKLJp5/oqW0WvcbMDjOYf9Q4zlHzYAAEQEQAADQIgAADgRTS7Ed93zK4AAEIEQAAAAIgAAegRAAAKAiAAAuBEAADYCIAAF4EQAAIwIOEL92J3iFpohf0QvMIXWELwAAHgIgAAKARyIXgAAdgQ0IXgAAJgRAAAqAjEQvAAAbAhoQuuIX3ELrsu4RC+wheAABABEAADcCAJC6ohfUQvAAAfAi0QuJIX+1DrkHc7AEIheAAAGBAYhe3UOvDdqhcfCF6RC9oheAAA0BEAAA8CIAABAEHiF9pC90hcCi3K0TkAAQyFyZC4shdWQudIX8EzrBO/VDbih2UQuVIX3ELgSF4AAFoEYiF2pC/LVsmZ6jIXGELwiF+RC8AABgCCJC6whesQvy7HzsATyF6pC4ihfCQuooX2ELheJ87AGChehQvfIX/kL9C88ZC9khehQuwPTQkL4SF4AAFAEYSF9ZC6+Iv5QuioX0ULkMI4AAEwEWSF4AAEgEciF7pC7pz1pQvyIX0kL4SF823rMhfiQv0SL1ULuqF1hC/whdoQutIXPOerqF/VC7KhetQveE7JwW/CFwJC9MhcdQuHJnSA+waF1hC4mheAAAEBHIhd32P3gAs0LgqF7lC6irtSP26QAbEL2iF2xC4UheVQulIXxELlKu2hC8sheeQvsIX+0Lw6FzqRbnp0FQuMIXbEL7CFxxC6Uhc+QunLz+ELgqF9RC4ohe6Qu9BjaEL2iFxhC8shfcQu5IXr0LpaF9Inc+hffQueIXgAAXAQ/IXlkL3SF1UtcqhemQulIXMkL2iF4AAGoECGFw0tcAAAYCBhC+qhdKQvKoXnkLx6F1S2bcC3QwvYYXkMLh+nVhXoo1vPQv1oXpLZ2j7UMteuheAAAcBEihf4QuaIXgAALAQAYXEy12si1TC8ihfDQuBpn/ygHu1AalrMhc/QvjIXFEL+aF4AADoEdiF1xC8AADSCGKruuhe3QuooXU0L4eh/+EcphehQvKIX9ELnZa/lC/2hcUQviQDJELwAAEgIjMLuN3fhC+2he6Qulrz+ELymF4tC+DFtEQvTIXgsL65axlC8Ihcmwv3oXY0LiaF1LC4Xz2rQuvoXSMLxVQ1W7sBmd3TlAAA4AhSQvCIX1EL0mFwZ3oEhfwwuGoXgYBvqF816eRhcMwv64b+sLkOF/LXedgAcQuMIXSYtwMAxlC8Dhe613l9tgAAdAQfIXbEL4iF1JC/cBMCQu3oXckL/mFzHlakhfzQv/oXukLhmZ7Y2e0MusFbaYXDsLxSFwrC+3httjOxZndIAKSF1hC7khcKQumoXLUL4Rh8z5vyhdhQvqIXfELuuFw3C8Zhf+UX9YXykLtGF7JC+ShfyMPqYXCkLsKF+XC7khehQvqoXQ8L/28zsFtRhe3Qu1oX08L9gvRAjZvlu4e7rI9AkL6iF9PC8hScyvh8IXlULriF5jC4ehcUCmd4XXELvsW2xC5+hdHwvGYXzjDvtQ1zC6chfcQveYX5ELgWF0LC/IhfCwuGEb+EL4iFwpC4KhfEQvjIXHcLgKF9J7tfhfvwvP4XOUL8iF2xC58heVQv6oX1KT94AAJC50hcCQuEYXEML32FyDC8shdsQutIXU8L96Fx8nenFtmWOVoXSkLxaF/NC9ARdYQv5oXlkL/lJzpFv2hdYIucEX+0LtCF8RC8NhcMN3wOzcY2ohF/fC5wRf4QvsIXkAAPBF0Ai+ohcQwujIXnEL8iFyWteuhcWwvxIX80LvyF6FC/zhcnQvYYXX8L2iF77C9rmd0gBoYXlkLz2FxDC+MhdfQvyIXbCLriF2SCbkhc+QuKIX90L7GF5Mw+dgBoQufIXCkL1RF3ak/whfSQvTIXtELnRF3zRfUm3BwvyIXRiLr1J5HC4whfmIu/fTW1ltWFzAi/IheUwu+EX5ELsOF2Yi4PhdHv2fWd+sLweF1hC8cRdpwvnEXlMLhmF+Yi6+Yfcdn3gAniL7CFz4i9Jhf7rWdItQMLyyF+Ei8ZheiFXkqdd61rqnVEXqg/voS2e0nMhdrZu+JofnSfAK39uIBEt8lO1qw+IltEbXSJb1KdilG7Snd0We8o2ZbLFgOr1O4y3YvMezxG2U7gkty2yxRk9HgN9F7eU7xct/lO80i8FTsWt3SrdlSzvNram476/sPsOM3HMqdxyW3KnZzccKp24f7tcLmSF/JC6ohdKQuIYXlMLx2F5u3e8lsfl7U7LcIzv7Q9ZC7phf9QvNU75dl1uFwYi+BhfsQuQEXYCL0jGwNk52J3owuQYXtELyiFxRC8gACzIueIX0kLqiF2si+Yxu+QuKEXhzFods3PC4whcLwusIXzELuaF/DC5V/sbZON09XcLyZFxNC75hfHwuDsn7wAOSF3xC4ChdIl65IXIkLgKF1cPqVhdKQuKIX/yL8iFxVC9PssrQv+YXpELlyFxfZbpAATQvBYXmKL4kvRNC8shdhQv8EX3qd+FF4ii/8SNoQuFIXI8LxmF+Q3o24d0gA9EXb0LtiFwVC/IhdfwvQUXXqziinXEM9xyeszbw078Hjzeba7C8shcSIvyIXUiL+qF6Qi69heMwuo07zVe8iPXElpqCcSOWeyrCadttZ1AHt+RcKQv5oX9KL6SF8RC+pheJQvPIXMyL2BF/DC/mhdfQvuIXu8Lp+F/ZC/mhdcQuJoXb8L+GF8/C727u7rPnYAxyL05F+ci8uRe/QvyIXmMLtZF6RC/BhdAIv6IXvsL01F0PtfzYs8ePy59vKL/lFz1C8ohc4IuLYXgsLthF9zC54heQABLUXZyL8iFxci5+hfXIv7UXWkLx1F8RC4QRcuouTUX2adhfnZTC47hf7QvsIXbCLr6F8ZC6dRf0IusIXjCLyyF4AAFkETGF66i8jydjsW45jI5e0NFxjC/JRdjwvgYXcaLhNFx8i7dRfE92i07zPmuVF34i+oheLQvc0XZCLxaF2si6LReUQuS0XEnjtN49Rs9fQN6IvAEX+sL0KFzIi4whfkQue0XxaLpNF7J49X2sIy2mEXbELlhF/VC5HRehQux0XdqLrxF7mi8gACkQulIX9KL5GF6FC5ehdvQveEX8aLhxF7JC4ehf+QuQYXSkLg9F6RC/pRfawvWYXpkL4iFwWi5VRf6IuRIXL0LjCF5oi9pRd7IukoXHyLtiF8Gi+4heEz6woXGELxOFxhC53Rc/QuwoXB6LhSF/hC8ZRfcQvnoXXELrCF8gi4EhcxIuz0XPKL4yF4tC88hdkQunUX/aL9wB6DKf/4eywupkXPkL+WF1hC/bhd8QvWIXbEL9GF1ui9xRfkQuBIXRCLhBF8ui/YhdfQv8oXoGLniF89C+wheaIviIXHyL3VF8LC8gADgYuHEXoULmtFydC6FRc+IvfYXbELymF9hC8bRd8In6074Mp4Q67kOauVug4GqLbe2zy7Z5kicEtvZInIAASqL7aFxhC/yhdsQvAAA8AiAABOBEAAAwCCBi+cRdnQvMEXtCL+qF0wi99hecYv9UXhqLh9F1hi5GHPOCPe07Vhe8WW2EU7pACAAASBHyhd/ovvUXdGL+FF5TC73heUQuHUXmGL2dF5u5eaEc0y2Qrd1uzv2y4zLcnTvMy2XmdAo5ryJ+hE5+Ot17POYzCxNgWW2CPbQr39z7zjDPJToog8KU8y8uSy3MDnrJN0fx7yTfyxcrxmdZbNyOhFU3pHtCgdjHPKM7HEjxfxwOU+X8eWnPd8t7yLuSF+HC8AsN+T2CoX80L4iF4AACAEEaF8ptoKhfKIvGYXY0u/CF2DC5PRcEwvcYXMMLxeF8ZttmhcCZ3yydzsAcWF2Ni5PC00IvsEX+yLn/vQ1i9khcMwvSMXX0LwiFwRi58hd0wuQoXfkL26Fzxi9TheJQvzpHslewyczJnY0e0eqmEZHcAp1tF9Wi/HheAIu0ZHGKLkSF9pi/0xeGYvrsXwMLieF5rC/h8sQIuHsXumLgzFxRC+QRfznOpAnhmdjGeyEi5oRfIIu5IXNCLwjF8Ri/DReEQvKYX9KLndF1oi6oxfwwvAAAUgihovaoXZmL+lFxbC/Lhe4Iu4MX+EL/OF6FC8YRc0QvFoXxGLrDF9pnehxew4uHoXCkLgtF/ji/bRfhQuO4XvsL5HF5ii+8RfIYuHEXykLxaF1hi9s200Iu3sXXGL4WF7qi/YRfcQuNsXlELrbFxhC/eRekYuuIXZkL+lFwVC9oheQABScXciL3dF81C8ARdw4uKcXM2LyWFzxC7rRdAIvAUXuct/TOzxc+kCc47aGrDTULhKFz1C5oRfQIv4YX98L5dF9Li4VxfNQunIXWEL5HFwztuUADAIv/IXGgAcP8Obi/0RcQwvj0Xt8Lm+F/hC/1xdsQvFoXquL2y551Hp3Rwjou/IXPUL66F1hC8IhcUQvuIXXuLqiF+ci6iMzbovpkXIaLxOF4AAHwEPyF/tC6URcqIuHoX4aLtEo67i42xdkQvycXCKLjNF06i/YRcFBOLXb0eLrPF+bi9YhfO4v6oXf6LyAANEi+YxexIvKYXSkL8SF6ri4LxdEKOa5bpQTq9q/ZnYqCew3O5C7zmdpKvZe7YLqefSXa6nZKli2m9Hc+WCs7R6+7ngWdgx6wwbtIheVQvY0XaMLiaF2xC9VxeiIvEGnraLvuFxRC4DRch4vMcXa+LoyF43i5Fhfjy2OcXgCLrnFyci5DxcbwvM0XGELyAAErC68RfI4vroXyCLijF0ni78hekQvBYXhELyDF+XC5ohdeQvuEXPELktF5yo4hON2kn/htSiL/yF3TC7oxfnQuxcXVGLhGF81C9BRe/oub4XVeLvaF8VC9MheB4vg8Xb+L7iF+ni7IJ1X4v5cXsMLrdF9rC/pRfeYuuIXfmLrSF66i9lUdgVb0CXVGL0yFxRC58xd2ovsCXC+L+GF4RC8gJd2ovoCXsBL7CF/AS/DRdkE7l8XDCLtVF/VC8uRcNou4Hn1+piHFx3C5FxcbouGEX+uL9DF4lC+3xcRov7VHv+L7iF//i4hhfnQuI8Xe+LvHF2KFdzRcFQub0XziLgRF/VC/0RenIuQoX62Lwgl1ii/hheYou3UXTDznYLaIS/EJcCouDoX82LnBF0oS/sheEYu18Xq6LvxF5PC68RdwIueUXRhLrGFxLi/DRe9QudIXXuLrRFzZi/hhfsIuuMXlUL2wlwji8oJc8Yu8MX/GLxSF3LC/ORdkE79CXABLg6F7mi5UJeUQu1CXIULhHF8LC9kqP4Qv1CXvsLywl+ui+vxcMIvl1HjCL5dF90frK9AOQu/0X7ULniF0ui+kReyIuJoX0CLhtF8i9drcyeYuNUXKRLvDF1zi6Gac4vWRmndIAPDF1jC8qJdmYvl0XkCLuaF/Yi7eRf0QvIcX5yLvRF6ZC+wheIIu0iXeaL7NF4tC4thd54uT0XnhLk3q3kzfeAA7ou90XB6LguF8ei6QxfnovuIXl6L0KF6Ri7/RdcEu+IXZGLs9F1ui8AxfAYujcXdqLpSF4hi9PRex4v6CXB0L1XF7qi8qhfx4vyEXcRL0NFz1i/YxcC4vQEXvsLpjF9xC7dRdwYOcT97RLo3FxIS4OhetYuCUXMLTheC2ASU+JedEvzoXHuLyKFxHi8wwcnBPnYAx6LuWF04i6BJeIwv6oXmxL86Fwhi4fRfkoujIXwmLnfF48TtJXMuYubUX1yLijF1Ai86JebEufEXgxLrxF2hC+EhelEuMoX3kLk1F5AAC4xdHM3GMHzsAOEl98S+Ihd9ov74XYeL32F5QS6gxffwuccX4RLtCF0Ki+khcbwul0XZ0L0XF6ZC/pRfqYuHEXcGL0NFyAi5ARdOQufUXShL/wl3LC+6JcdwvyCXlmLjkl6Ci65JcQwvCIXskLiiF1jC6MhfSQuwCXX0Lvol9hC58JfEkuBiXXELkgl3mi7lJdUYv8SX8JLrol0Ri8VJe0QvyCXjiL0BFzqi4xJe3y3bgnU71/as2ES4hhdvYutXn4uu7mPSCpehUuguGA69V71yevWG84Wp1lrmAFbIOd6JW6O04jJems2Bt7zpO1EJ7IzpUu0TvOyVLuITy1w6XXomQvHvPQOnXZWv7e8DSdfedAbmFqdAHzndS2BueuQu2qXNQnzed44s3uafLJ21uGig7Vhe7mPUgntH0fhhPwVLRnzn2K7F0+4T0fDWNUL8Bd2bq1OpYq6fcx7UC7SBj3+vQDfsXUsDdOhyXr4TsguwQXavCcI/W5ydkaFsclx3XoPUsOGO0Incvj2n54JXqhu0UROgdHCkT8Cs2X84wwuAU6klbnBdl547gM+GjsZK2RiH3NRgQu7krcMBf5K2qo7W5jzuvWEM8t8MRDOWU71/N7qOzEM4bPutROmz79St/VKyNHdSGftn30hnnZ9wwu9/zeMLu/83BonP5j+bC1kM//MdFDPBlbWEWzYl2ti40xciQuhiXMeLuYl+RC8PRdmYunUXlMLs9F35C5WJdXovc8X7ELyvFwalsAADyCHsS4HheGkuliXPKLpyF/nC9Uhd+ou94X1xL1nF4Fi/DlszDOVe61eLgKF+MrbWBeTK2d4XN8Lrw8y0S/ehe97blsXDMLpvFwGQ5V7p24u68X48Lt6F1/4aIhc6YvpIX0RL6/F7ji+cRdvYvUiXXiLkdKx/C4/hdfEvFsXdXRq6J5ZTsPu23RPAm9dlOoiFyti6WhefF36Y7+MtwFth69o+icBU6wS70eliIW/CXfFmtol2PRLrIzmLPXKM9xLs3kO9QXMzegmJ8SXfjwtux3PAjpMTvoW+NY4pieGjOqYnxozhku+MLeTBc1g2oOTdYN/kW89fZZifBjPrKXMN9puO7zE8WsfcxORTzgpd0b45EDpvBeOumWxnHlDtsZ3qebFif2GXpS7m8dyouEoEAVLs02OD47Hj2xBI3bOFNLuFUvXdQN2ent7t3MfJd1rjPqc9R0APBfZpQA6/0jZ6eqHFNu5kwOsuGxp0o/HZntNBKiyvU9np853dqn2YxzJgLsu+DnuTGKcCAQvwLIRnkq1wuESUNzpXo6zy5dvux49nvyJwYFwN77H0xmalzm0fSb15oAX3W4vRzsfT0DbqyvU6nhgzo9OsSgMtS/OFOjP73s9OIpqCu53rph5PGsBADmIqJQKFwH1vLMoiHRESAKGGqiZ4jntKnOg2mUc9AGthux471uuperPGLqXizu/Q8E6uDA9OHF7Q6d0oZ4ex9Y8Y6P2lUv/qXcYRzjQ3yKAN32etboKAauidXnM23o/6wbKHy/j/yAV8LizWGdtssaG0eTCyh0DU4B3tPVsJfbbqkTSgRMvRR6fCWu8DGJmd/oYAmlzQFuEGPlTGS/MG0Lif40KMr+/6TdY929TMEd1cJN1mUGOgamjc9y+eoXk6F3qsAjWkXE89kIGaRO3bnosGO+57ubEbSZhpax7npa7268mmmrWNLw3k774Xr5bU3MKNbOtAdY22TC4USfFtXbAIzotpPPREkBTz1p56L5wbwB4t9Dh3vZhcdUuls9xQWxW4zsqarz1/V28hj0sLsAkj/gAbz12yiwC9y3epjveG7uVbOyOPcIjVIBydQGv3qWvMffFgxbbMEa5a0fmm2z1HO65WdDdO26pPpNWiv0L57nawS+ersy3a2d6cGZLRwZ+6nepJJwGwOcZ4h0v0KLKLgYzvdCtf3z3y0vT89pQANxx2iNrNzy2b6KBjEcL/fXdLS4fz31JPW2nE7ulGl+0k57tNf57Ta7Sc184APm6ftrvPDHAC9ml18AvWk4/WUPQF65kneoqyqQeDLeOz1Ev2b1Dsut9BABgXtsmONWmDknxYxhj07ON1jb3HSRm2zI4+gt4+KtdUDutd6tiwjBesV+xyD13cYUjGNGHFFlhH05KiCZ7jS17vh9SsZlsW3snYSiPPKAyY8ZjDmV8AyrhCP1iF6KBTivAGQvXYw+aa0pWzZVAR9Lh2Z7KMd4suG0vlC9eKTsGOBd3p+z05tHjkAWxtngU5vToyg6ACBn6XYlAV+l+Ai93Sf396me4cxxToZxIjeiJwKoAvvrP1LzJh2isaBWtLZ7PenLXjghFyFoDNL1X4A22rLJeouZ7o49+73AuOS1r+IgvgQHWKbNEDAuPfvrcLj1v7eN8YpaOzSRUh0ZIJxCOZ0PufvPkMurWA9fLUVx3ak6oZdFFOlUA5Luyjs20KeBvAgxHz89Djd+hl4QgDzpcX563C9rQpzOl6HTsPt3CFXBrLH/2pUE/wy4bfCsSBhwUjVZsRYLy4+vftcFWdQjttAKRl12/siRdVL7I2dg8ZoRl0K46/T14ljA2dijL5Wl4ki998JCEoWXHTQdhQq7kTn+1DC+7WAANaT0m/U0bcbScI8n7K4FsQbZgCIXGYkB3KmA6XLGhvBZ+w0fCuit0u+x9+7wfCQEPS78rVz4gkP0aNljd/V8N09F1edniU7MOV1mhBsuG+cfMf2q3jwLjnhZyeztcoAfG76Ng2ee9WlwSMAvnAiLOd0cVfLDjAIky+Tz3EABU89KTLtP3cvrYOm22iyLNDoGp3ja9ZoZxFNLZ6fdN55pJAM45obtcd5FXLHroGp0lcMYzGB11DTH0PD4GT2GLZhk5ELiRQA3aS3n9q48MmXsGpcVvSMAz7Zx/iW3b7sElsdMug8jNOeobs9tIk0cDXuAxy4Zpew/y8bnpCWcgMXUtDu7jdJcNH7vqAArMvc7rSop9Zl0mrorgT4G3tmXud1ihsyUs8O7NMym7O93SL/fXSWaSaWiC+2Ug5NQAXdxkZQWkyekD7Itr7Sz+TJxpnBEf3mP7TBdwgzrqlx9QF3cajLPZR9zVLvzJ0wNPQL1fXHQMiUPlrIAD3S6BWsJS6sDTEjL+p28GPpm0Pn1nkrLLJes6l+Evv+qAKj7vl9w3elHwI1/ostJeZODlns3u8GW8/mbeQByb7aAAYLLgt4yBFdBZdv7WIWXS2e5mgA8s6J4dTtp6+WTTl4ll3SQE6peVMBzCkshhnxl+rzj8ZdnxBjhjSWT8ba+Arfnzij07lCAinDuNp9IWfSOhYWkNOHitx1MsxCIAhWfvTHDi9O1L5mp1I+H2pczimQdDYrLiEvQE0fa700SB+WXmyL6gvRf+BLIyVIGAAAo5IgMORcDJbNAA71er8ndP4C6ZcvbWPi9UopxHY3Nk8iovsEDfZw9AAeel18i+jfNZ561UAYJexEgDAy4+oDQl6gUX7Bu13UCpjfYN1eO7d7Ls2QcRlw4ke3cd+e6VjbCduokvbZjbGZcMBmKdr8SmcGs1wlvCKCp57VdTJLFxkvUyXuZL1wMv/U7cc23plzP9efzOReXYB4afmWBy4Ty048AoFwsyr4pekNdaMUdDTuIuPBvYXvel7h+dfp/GSC8nU1nQrOwC/jMy6/1QyOP+R9tosyYAIdFZklO2PhaWXVuhvHPdKPubnM99mppk8oZyRyxEZSZeJKt76PHqV+ssPS6XpH7PEm3qWX3LJFMvT6XpyZfkt7e6XIX4EMvUBvtjQ7a6Bp1n121pOa+5ddJr2Hj7Sy9Pm5iNTC//dbmPwh64y9u7LosvY7OC1r1DMu7q9JrLnEPakOmLV3Vl6YtzPuT/jx37k7PZfxAA92XmgRvBfR2Xu+pDCiBS0Xr0t/svXUImNz1fBGYBzDQEHXvY+/sLTtieO/3dl1e0mvRoNchjN2WxKvYRAsIFl+slYHRdSsumy9pNe/Nvcqy6WpeHVEVqXj8+ivJzK+DfZeFl6EpdCNejECDUdcH2u18PhKrvTLyuprPvsbqs6dHNg4xg16Dl5F1c9MA5c6Y39zUWRQowQfr5FAqWSkZjYuuwPuzvw51ZdED7hDApVL0DU5sICxr38WGfS9DHhlMvXjXuKNNPjZnq9ruoVbUsTXqr5ZG17cFwFhKDAvRxPtr6TZuXPUjKB1htOyT1WGcTrsvAPE8+cevlmZ1OUl3XRAsmXoyA+Wqyjnp4bBGeOWXbU/gV64J6LslYWVeGQUA67L8MvfgYfzI4/1WLCUhtekV45AAAwL2VMusLSZnL7RYyJy5QMgXu6r2dygp2Hxy3GlNoCTMDMzbI8Wc6hMts7XFtocvGOXmJSRbPbAy7oieTdZW07IBN+DLQRy+bL1j3iaJdi2eocvXgy9Wd3yFOcMtXpezEgE9nvL+uYcvqvHZ9a8kAO68kS5cYs6vgr3EgRtyw5Xo3Zc18EAQHebltPvWU0+7H2k16nOAo9OoXKymXrMGPJ9wBrAgOe9qdiQy9f704cRZp9Dle25fVYDRv3DFG8qRswHL6Iww+uE+qs3TH4PLoRTpkBx/4fvZfbXH4y9zZexJOTlkz6Zd0y7jzrWue4VlzyABP71NCP1Cb6XL0mvYNGfezP7V6hy9YoJAzoGqAmEMAvWmZ59juuqHXZePvr5YUTJooAm5u8+szfuEBz3rcua+AP7L0+U8lBpJYuFcuaa92QAWll4Ocly5fVLG6uXjnLhYO90U4r/ODaGByk9uzsY6z+uXdeQ5cuWS98sAb3ZyBnto5c39I7G9pnt6VABgXs750V9om89oxhyYVMN3vXpdVl69HjVMQTk/SWA4REfomGRH9RCp8MROYVZErMdKH1aRl9x2sfR8YdzF20TVGC98tVorl8RftJr06+Az7jkYAWvZ6ojqXTvrKHAYA9R++vlk3ZEnMiJl629nVSp2Ll2XLpTL2lUueuXMIV8gADQy8lMtmhXGMMbuISfZ4LNfu5ePsvW/YBdGUOq8GlacRSYRXkmXHdINCoz3PtwAsfgPzjDx3LsbOPFGbwX3Dz6euX+EupjGgYojiABFA1OCSzMIn9lwILvf2c023d/MzvLhA/en45QgeZ+O0IHJ8+qXlynPrCcNsJnTa9rlTtpM2BPR4isfUA5q9dJAeJYTkFsuZdi76+tQ9AARXl4Sy4L8tdyAtTrRYjwC/QHy/uuA3Vm6Inutt/Y/oRy555eN67m9DZ8p+gY3X7Y2oA6cvhTDajLt/GTHKQc4CJsvMa91nLwga5/YYsB4gsvPOXBTl9WXdpPvz5drKnDudADL5Dl+rLe1lsGHP8OXmfLqbwxUy8ZyPF8uZ7gykuldl61y84JKQsuW+Xj1e4Kw4ZYf9IBmn6X79ibL+vl8mXEb5csu3mJAGBe2NDm3y6A33Nl7O+XyVt1ypyTGdT5eISOZ/HPZTlCR/frqn5c3Z6+jdL9+5tGcgvpoatAGncSAfMu49gGRI5nOu1QcqJHaZhxgvfJsd4USG0BxPgcy+kpfcRuDeOcxF7EJ9BqAD9ALSsZb5dgeLhDAsmJnEU/5scmaNGah6JH0jtzS63Mvp1qMeYmSGgyJATrIDv1m7pea17TqQ0sV4QwMay7G5f5NG1uXRW+8Rl3MvvWf3Im76+WfY+mlo8qoEIkBPwALiAsAr0Lw2aIEK6FU5GH19RagWvlz3y5gTMucvVnNeAryILDRIEhZDuXXCBXP/L2ffRly5HtNS3XNens++x4vTiKbeZc8H7I+XcgAVPiLcy8bqM1AA5Tnrw8bx4xeYYTN3J8vUIA9le0M469y4IP0mcv9ZjCa4DAvbVI6jN1ZNW5sTOTV78w2J0fdEu75bbWXdkevqwJGpHmuNYWk/J7+AAIGwVO8ZDEvdbHe9by5Tlcpz7nqxpekJmj9Ok2L9aXYyPo/8fYWHTn9KDLxhMzhFnBsOwKm7HiIZwnJl3uuBFp2qsvggI5FhrXPaGIFknNoSAxaUf8Z6BgKnnrqsMDJa9aXo9OgGXQZ0CQ+Ct2PmJAc9+8cuUGusR9wU4noicPlcbbPTTiYtpdqEpUKnxuepS1soz2lpcDnPNUdcAp6elz4KiQ5ezZPnLAjiZxoVwwXuaFev0u6SAw9T2ip8u43TrPgtWHp7/5N3zQC3y/9YAw8mOcz9LL8r47pYb1QBNaBpaAQwugg/ZmOfBEAHrbWN9Qwe9x/UifvmjiaCvaJEzaMwhAJbS+1XC1Cvn66qTt4HU2VQk35eI+HZmXQ11wZJioQFBbNVJ7NhXp1QF/PdAubL536b7gqA3jj7TO0cK4hOQnaATsUh1RUmAOoK8xr3j5xl9jIplsKw8jACA32fV7kwFYLL+Ll6PTvKZfK3AW+Xmcu26SBB0/YTgMCubs9vncXe/cewB/pfjlyahXuN6aWl0zS5Wdto2GmCjMIr/00w+wHY5eTAA+g7+Vhjfl+DOZ4bBbpYSmXhcjwb0yjS/d8swsuvfLWNOC4rSSK73pxzZ6Js4D3qSCJ8DYZyCe3vGm/Hm/L/AfTpU/xFf+SZCRXHGABnbbSK/D/CMiuvQAzIr2D3aG1cK32JAAVmXRXLit6aM/shFfY8uLmXT0gEafaS7ecKOABMz99LTLnzl3RADk5cXA2W+XBuAUmveZvopTRAb6Uyzi1yHJlxrS6UQB/+WBRXW1hkkVyaK9OpC5MvY47iLLgQDGv3pfkfqivxH9Bf4d7M2aK7yZfGsAvC4uorxUVz5y/tTN3WH4t9Nor2ian8JHtFeFEQBGjy5MaEfUNvqlFfwAAZRXCEgckfT9vgVFc6WHaRAhortYV8RLsbGS/fWxijBiu42w3SK5G+J9ahoRXP6enDU3yK7+qPUiuX2rx1z8fOPhIAwL22iudKnmYrxWc+m7apFd9B3k+X31LzCK4yK8QZdXCuQvwwO+kKC2tBYAdHHCv9fLJzLnojLSK5O0C9iuxhXTdkGG538UbRsO2svn8zvIrjAvayK4mr102GbLY5m+kkV/Yy5nCNu4hpDj59Z9mwwyy/t2M2N7KxXZLLpbPSkHN3l1VJ6mbnRwrkkVwaanWOty8ubhXW4ryavUOK5JFedWBN/dnorh0V3vfuCAiXu38/duC4H0V8E+mq6fpsuEW7pQVr+ndSK5FFc7iuSuXS2eo6l7rc8dsMm2GX404RrdWNL2K+DXCx/g8/wk1e7UVzlQGCsOg2m7bD2Rxh2wzmK9RV0kivdGMAsu/5fUNdfZDjN8uLvd3AyYfFxZ1aV1PCpTxy4nB+8QTpWXqoKuOb6JhAGy4HTl3gK4QbPHsBN+XJZe5O52I9Yvqf3KPpVAxRwMlgKPTqeUcjCuqxXIYrkLlw/y9ygD2Vwp/ARmEPJewa4fjaIGcu27noepiFR7M0U8HC6PX2gnw8ttumxzS/z5fDOJHdN8gAS2l+QFhEFd/LWBPbkGt4Fl26K9n5eO6a8do4HLlso0Kg9K6uwSo7IAivLlTl6DadpyPjCugx9edun7fAIKaLtsTV7JT9vkd7Jgxfc8hON4m6l1d4O5uVlxH44V5c0SAyCdPdL2FWhm8mJYAYF7c2XX9zgbM8g4dgzQF+W4+XVHLozCKTXtNv0+r6u1divLvyV4Dy+XZdDUvzqEHBL+2C/9y59L3iivAJXZhux4vUTy/tUfitnTw7wAgV7q55WrFCs56HkDQyfcZiAPZXudYAvYoI1H9jTnBy1WXu2YA/su7G94iQP6vRgXubL0gGgaq04TRpFcFFrmxXCTMANJX3Y+jyVzNPvYFdmcv8HDMHLxBXUVzptMTfj7SWXc2e8gVwZ0ADl1qCvNg4ZBOvlfcBYDYrM39I4HDEIgWSo9loD+r0GdBFq9iArwr2KtXvwkBJiuMOXk1e+7anbOADl0y37wZ+yZ++Ne/I4dSHRf8vDq9dRL+YJ1lnaSqduiu1cz/d1qTXb9ntQ10rcv7q9JIrwnl93y7+r0sR2piX9a97aV3jXp1r2MAAxRWZEr9G4zfy6h12ajIG3wCzRUXAMRy4ggABcu3q9LVLsj03XS68ZeobUX5diiB446jBy9dquXzXw+XVUr9vx2v2fRr1Ab7Dx9Yuu94lySfsavAGcupfbWJ+gEl0+nvmldZa7pjTEJLlFpzMWbqcCMdpWVUIfL4pUZgAGplcK172pXmcx++q688/ZNu3a7duX3moVYV5JPqA30+l6/pXB/Li2vbSS5ZXOTTafN9XwR6Zl0Q8cZleQ17Nlda3p2pgTy7rzZdYSlm8k4p+t0V6py5LL0YF716X5wrl6vWvy/ixzJDhts9ud12BU+9nuT5ddcuBOXpNen0vYSy/okDsJwnRi1b1yRuhFzvzFcc8u0JALfRwYjMzYd1z3T8vN+XnMr5n4sny4FxDbP6yJXlWjiz/YN8eAEAFxHyvkgcrpnuDzK+T5eBtPscSkXBwqVz6S8H9vmCmtWXo9O9mrbG055ZeLXI7pXm0gH7fOo2Z511BVmFZX8PVwDl8FYaAKOuHXvXnT4Bofl3yy48Fc9cHou9h21XJAEMy4e0c5yv+gzhn0WaSEnnozwDxtERuZx7ls1l2m89bldLZ6zWXebzgbvUPy6i1zaGnHyNPor0VwwAy6NdTkABd3GevQWHRwINfm5ck2XjY9kAd83l3ZbEJVsTV7R6dQce5iQBiK+0muNrhe3nxSF2IY1cIkpGxz377K9nrN/00z6zfGz24Lg8/w9QTq+V6dUBgleu6hcrb27jYMwxCcjgle8SuRxXfBRt9p9L3RpKFKamzdD9292oqw45YmZem53TrjMMVrAcGRK6zJcFiuUqnp5gj1wydoG5CfzMuAUA6kr5Oa2oHbfefAbmo2XZwrrxzu/OA3X2KB29PryHTkQuOUy4Bl3l/Wls9DkxiBlzDceH3AvhWmCn9p16hAG9iiqAA+suTVLIWgMgVxTXvsr1oOHsfGS1enT6ETcZ4DOBB3HVL01O3zQEkK/pKPDD7i3DCODs4fREK5bztidPB29NTkUbx9QmbNCchaAxRXibL2cV19vmU6c9uHSrtfCt8IY9DkD3FcJ7Qac9+nTg1booq6Ma05FB+3DOu93InKPo/YN2/SuO3rKGu+K5iMbZGu3ZU7R3Df2e3qlyKZeC6c9fXtmXAg0DZl/NK5RFd9UvrPnK12gal3Hy9zuvkG4uLLNm5/YO2RodOpeBSuls9LkQOD4VYrG4ZeNhPIuDgQAWlly0K9UVsHfW7pkKB5z8V6gXdtqBN0vmunATW3zQK4FgWmtWlPJb9ilpoekzLfsYLT/4ixC9TNL5cnZXFZhv15KvjPAp9L18Jz/4+SVesjW3mhncr80wDRIBiZcEF33ghtm+nv4oSHc/cMX0vpC9qxugg/aUq+G8DlKu/vrBSrwFlyDy9q5f6c2alXtlYBr0PUq6R5cSiAWxXO4rps00bs1OX0fFX7AAKnLrKlMQAC85c38uslXOo16W/U/qXdlKxHHoC9R1p8cuUPUK7kByeHPG99XujUV3Iq+z5fVcuQ+43wrsXY4nbrsADWCuyqEG3L87neTXunwf7J6YHj3SrnZV/ladYD5eFxDlXHrVwZy3huACWivq79CAV7AWXvdg8eur1fCvEFdZJiCCAICy7Z6co+aT6Y7CcTOVyAIHnZ0bLh4s6ifXZn4rSK+YvivSmsBXWKAV+l/sq7ZhDP4POHjNkAeel7/kFcXA+h3Flr1Nxr7lwgfqANPaDL0v9q5L9Mbe9S9l5cTKvQeXN2eufq8RfvJH2r+pyHdNLRla04qsfV50ZlFNB9ETL4Fx8cvqYsO8SuVlXno3EDfSBqbs5chn51yXa9+n/xzsqYwL2Z+yi2XA1gNGc3UPrSoSp57ot9s4Z8ncwmwJv6RPCuaOgd9+5kV3bOC+wzYGHzq9i7Lq540lXEUNPbJ61mzpLLt0oE14bTAhFLnVt9/AAVPPUlXDGJ7qOBGa9CQAdzl42uBGzgrT70H9+fLwll2WHrN9bd9PzXdCyr0lwEG/tKpeZ+zo1dy2xj8V0ly+ad0vy64lXmwcWbl1baaWPjvRCR/nB4Rd7Pf3as4n38mXArL0gABVQC7K7dFelKuQN9X312y2Bf+AvVnqOAL+nTLuqmOMC46x5fcpG3xXZLAaAvcjXswFfj5wgLdtk13n8FoAAYVfPV7gXH8j+mURD6Xu55edSvWVXBD4Hcl5ZpZeeNn57y4UikoQt3cCPqI6AQqnvnHvYri1V4OcmjbP25Xfeba7R6CvU1sHOpADcvgOX+XJgoV6Yq/H6aN1HMIA2gVzpvT8YeLOyrW6h2XsFAr7DIvy6tgCJsv9NTX2GXoAHFtZP/DBSvTqXdlehyvdkK5yC0MGNnxIWap6Tl0G/tLVe0ivXdQxNUDAKFwC6PJf7Vmf/HuqrqKgHly4Qp2uL8OMAsUd9pV6Wq7weM6+B9eXf6r86V8xIHuVfgiBya9JAr2aSJSACcn0doBBU9epu5mgM4M/X5tA1mU2XAjLyJl4VE9Kwt9svbK40UAVdVzKIkR5dwMvryXJStj4hwPK565cuAuWsLagW6Gl8PS/rPto2G4y9BGrmDPXSGdLZfxCv4hnrf2gRiKoq5BpepTp2onmL+lQgEM3vop1TMv8X9jStj8lwoNvCnQ9/h21X54x+vl0aHbFBKwcuIVXUoN+ItsPPrZ6QfCvvlXJsrt0Vxty4M6Az/XtuXirViVY3xGgB5cGcuEpdUakDeVx/7uUIAG8vnkAvkdiN480DYHlej07RSHQOl+vwyZq6Wz0D+HQgX1Tp4YM234esVd7UvmtpJZ+8IFwDpbs1cs1nnNXw596al59K6w5dvr6cOXhENsaJ7p0eikNNZjbOXrCrqsvRnwFgCRYrh4tXiMrk7/UHkG6wAFP6o0rPUrgyLP7xrGJ4A8uAcjmcd5N/ZSNjfVfQMuzRA8WruGV0lq7R5evb57z7P0d5jU+NvpekjPTXq39C7xu/w50Pof8PS0vcIjbLO3jV70tlglPMmAu0riIu6lYbvnvhBvHDPTzBvZm+s6yiDfoIC2AQbhn4Crl4F62qb6DskiuMOXbwztGa/dM2mNP58uG3wG3Lpnlznrr3f18h2wQXaKxxGgNPy6q5efDJKaXrMdoLVxRDQ7w2UzWic90/L3al9hy/lZehfHMQXLTp8D/SMdeFBs4guls9F2r0LV1dq7Kb3Sg3CRn+HxqkFyM6ZpBcNN6ZNXjIL1S++XnocZ1LZ74YnK7LvDKy4q5xf0Gg209LXn+w5qxKC5JFdnSuQaXJWrzCK0My/NrVqBGDFAtIr6wOOdK4APNzcvtxsz1enEU1ZPohggDCuLyH1sdsGODgy8xPBVZOT1b1GVo/NKuremb0ucuog9gKhp7l2GDY5V2DWPRo4Uvpmh7bLbwHKQ9C2HDwu7jJMG+bQG51d6jOtuT8xG7nk8Tbt51cuohDa9kt+pLrQ4eDF1c4UOzSrIwt27nQfwG8ce+UuKwb79pJMF2aM/msd5zWw470A+6KgIDkem+Mv66bT9smr/yrE6uH4lfujP2S7CnLjzl5jXplVcYF6t5XzQRu8V2e4xCKcDzXW5XIorb/l92tcE2z/F756XvYLiKl3GM/bmvSFnHdXAjLtnlxCclF4DpjOtwbSDu/16Q2q+IBkfvh1wXTVLs2/ZwGfRFcyiB8T9mwcS3V3XS/vBviKu/m+WQAXHqjMq9xsfNjO7wXrYz/CywSLryVcQr6TH9nIAUzV3mGeT6Mt0uRs9LDumrngUbqVvsk9VURTpj2pufW6UCBdha33Eh9s++m9wDNS9W1eoDNPS4zbO+Mvc4y8C+jmKGF9aFt9/sZ1bfZQhf5UvhHddC4H226aXdH1c+O2tBd13iao/QHLaticYhGffRU/OsCQNizQTvu/H6CLD01+tql3iFqOc5m362hdDcAfVAMwVf/qDaO7lqHeAR22jbcICEQBJ6nJW91Op8iQHY/ltsfV0gAAA11q/uDVvvcnRx9/7+jOJwsZempcZE4gERz2exTUKU3udb2FxOHs9H+r/5p4+wGuz3Ot6gJXadjup3VP7hOpBkwBjy1gVR0mh3IOTSlMbakFcgrE+xtvaZTnupdtKGrnjCBrqSM+7YAYkCxu7mJnN6hwTABga/4myQ6IpSjboRkW/UlqxVf18TP/9XbNelQ02gMcBpdg+Hyorg0bdXdlTnsnUD9Tc1JnkyPCCAOiuCIL1sAHSvYXoAVbPXh6fkPb2C67ZR29j+Q9o6/Gdr2jQuEvttYa5kQFLMmX1enKGZ29ToeFYANbqBEftAtmnQ8b6+zatVTS9gG3ryQ3DwlrAdQ5nu3pQZFtttz29uue9Q5q8oYrUlTVckFXsplyw+NS3qUC1g2Hn/wOeu8pa0QXqqWuNurMFXN7eoqZ6LcY81NRkXHc9ohrwxO3S2e5uAWmWF8ifS1vqXWtZIp7a4WWVYbDie0DU+iuEpfSHV3whjcBpJzcMEncavPxzwq7AfWoYoLb1/uNDkzexUATu+rmp+9HmDWYAYtCiC9UjjzSAEGrZZUPsd6qQDnHeh4fT59rdpcVmXH6XgbZPa874k+K71WsAwjXztOk4LSLS9b72tuMIxbBWRhZl07C881vVJ2lwn56/XI14dSG6gSjj6GRiNXpskff3ybdRDx+6WBilne+uG2bnkbH0JNExe9yJZ1m8/TeyAREl0uowD5dLhSIy9S+rpfwv3/VDNdL7MW3aValL21tzHZr4ahv4FexcfYMBX76y2z8ydpJnYxft2atyb6qrw8ahsfqunTtto19f7g29KBrkAUyhZeP1fiBHPvTmrLlrvX22aZadiv3stA1flxel63lefAMipsMAA4G+lKgGdreQRucjGF2zo4++iy+GmwDYCSOPEb9js15FJ6j0zEVYIGusfT8+Vjj3Uka7k302unHVrCYRxnsLN3uu72MAB/YA3eRXIAGgPvARcC8TiBRovAVVx/c4+mAgCMZRx9rdLoTWyela31cnsA99X81xhu/UEa+zmc4suFFBqxkzgkkhIH59OasAF6Xpgpw8WzsFuUH0qD6wF96AATBl2AvrE93eMv9d9L2+ghl+Jq9ajPCmuyQTxhr+Q9i13vfFsjSAXIg5LAezcIqa6QKtSTa4eiLMQFNcDJEZMNdKmuIU7B/eyuyGqa/s8SB4LNTXW5JPEbdMa7gv3qmuzTXDLjzxu8wBl4kBX56tX99zDwCW9HZkdNfDXXZu9QSLjB826a8EZdu9855gjY+5Rl3b3t1XCI3GHzsKr++JF+cy6bOwWL7Le9B3LyVx3MjYdNeoa6js9tY+i3nfQDr5PYnZHS7w1bLqD+ySa/QltgiJMUj/U3L/V/CrUONfPHw0kXGfxnM14Qa/YNfYGvGjX8cV++M9QmYQmM5RHRXEUtOqgLDJEayRdyaGZ2Ab9sM5Vzj3qCNe2PmMhj9M+oI19uk9yL3EOWQVwLfevAff4/rSZfDU6BzXHAuqV/Z8MhqiOy+7FllITurzK6Aa9l91TcL5zXDTLrXUxzEZE2s5FXf0neRVh1x7DFvToAI/8+tQKm1uDJ4cCK0WMrn6N4cA1W3/W4JLYH5khnDbD9Fb+933QBnrwlatSFax9Cnx9rbPAbaWZc0Bng29GfAF6SNH7sWWX5qvBDASopo4faclYobOrMuclnp/Tb81wBa54xYcy75irwqdldvX3Eb6NfJuPYkn1lrW6vYeYd7eDh77ekXcmTrg227QFW30wLgutDu+ryqQfEa43pf1bXpU7ACRiixAwY3/F0jaGuFw31pp7JKrqadNNsLgkzMnou3kCD8+hZbg+BmSLXTJrnKfTya5NNcQM6hFwnnsZbQ73fuscPOD7AXAtdZ6b+woge8ye7aHiLXSWwUi11BuCqvAUWvW7D9ArmPiF1Gd31dPVGWIAPz6Kll6x48tRguBnFoREpu4pww/PrSH1csvn0bOBZtdfVAa59v0SnUBWXOBZw7nffIlYNshUAltrqATSc02Vk8oNenF6Ou4eErZKrNvACua3fL7tHjqpeyDu8z5vstda6mZBqpGNrz3Aay5Tu1HmvOZskbexuV24cb+fpTD6TkAPw+rjG5FRe+NdypGbLAs3eudxwDtagAhFXgVV9VwKZC1wMbYsAC/BnBg7oxtitSRla4mNujuGYd+FiYizyCGy99KtofaHgn2pR26bZea/ZDg1RGuEtLMQTiIFrqba8NSzGuEtTmrLEfX1bFqtdnW7ESAUsxoGs4Ka44wBVxbJh9EOTwnonVnFv1fjMuCeXJVRoE16JIBq12Xe6kkjeI+1qYD+y7voB+TXg07Pfu9V0xTdcMtOAm2D+9rE+stlzWy9tmPrWvOUXViWhQ/dr1a3WPsauC1nmu1m+4wr3sNL3p0BiB9bf90g1xya+533PiuYLXcVr98HfdMzUkDjsv0FtXDx0ZAWWPs/714La83HYATTRXHquFktfoNPW7DI6+sg1xsvr5PZnOXqLXE4Cxrl2ai+3Zc+O76ZSK0+4K1zD4aTH36yn6rXO6z1/+6ey6XWMwLg3gchWKOG191gFsAD1WvCBnpUZ9y6yOag3F0wCm+PH76zgTx4pK77NM/svXLXVQALqp8Ka7/ZevoH2x9MlCBFANqF1VYCM5GmjoiBKwyV9OXsg5d2O68+XL1ANQY9K5dbsOJ+Gd2ARGzv7QzN8pnH0h9xP9XrfejAgDFYi1b336ujx9cZt19A9za+CfTBKvRbXpvOwDcILa7nRda43uWS1DNSvQ1cIk0YAbGRY2gKRrnYG0f4boj09EZ3AkgVlrI1wW09MTPH6Hqa9K0+yx/bLRvm2l9+6uqndNeysveltaPH08cu7Nn1eryNSMKa8ZteBWu9BznougCOEawFxeOrJ7AKrDkpu218ha/8+jUnUZB9fHwIO17cIBjb36ymEtnGMtukAFRMJk+ios7xrXMzhtLLjh/pYMAR5JjOXWHemQUMB0TPSP1nWeiM9C+8k3XLYAA91MDBwuTNg0yrw8Da6DtcUWuwbXGzwYxE9i3vxD0AM7INjftriu10yfq88vIWvN190zLpCQPiHpAED3mumUjeRHa048lZeoixG0Bzssw8AaTFwII7Zu158uUkkXVT3fV4pa5Ef2rmv2zX/QATs15l47xltri3htDlWtgzJzJEZp3PMmuM2neXewG15Avvy5cUz6tw9vEgQw665tSEmhKh3Z7X8Rr6OpFy1cXtdEfhxljVdr/EPTXa4xaERl67MXoOzhu7RKZ31QBmWvwYBbq4N+2D7PvF6OtRnD79StrnT0M86Ys8iO9GbAa+Iewgs5JFf+jIPABVjJhVCCi1wLa81OPbn7ESA2UAKy23TxY+fDDRnPq9XVT4/OO5saP71XMBGbXW9rxE3QLBKRyBjxZKbXri4ZIp4pK8gdddVPTuX+Qrpm1xxa5Ltc0mu2RdjvR/WfX1bA5XD8ypbHAIDrw6kNTcdYNugUbT5TgDr0oAPUU9Ti1SF7A7X+Ie7k1yoPqNb2l8uH7XKZcQYPZuy7Cxeyj72TXKa4Gv880YY0ABb2vRHXPjJCMB63+fgqOgV6APdbrAlBXVXYCUAC48usjXesueQ9vjy7KyyEEBRrX7+zE010g658rhl1XyeXBCpnmXW5AKJjPLV6/nLxevGrEIBVYxQCGecHkcQ9qeFoDX8D3Ne/8vsHXAK+hYSCXa+CES7RA+eX3BBgXl1PWAGUT8Wugx9PIgUh12A4ExLBJYvacteJc4h1+I4cgPUMWuxy9Y38xJ62lyjklAOOXY+X6lrrJcWry64eMSnUbFYSiu8UQJ8Yf3F1elBCbXMvLhrI8by5pOu4j29RHwiptqkDAuGHn1EOvzLXRmEVJ1zIPpoEB+eXXZq6u7KXfVCPDmHPoIJuHXJpr50R4l5ZqtfcOvkxzf+z7LF9UQYVtdz36bZ9rjr+q1yka/ALPEmHmosjvRp9BeLK5Y6AGy7CVz3runUI4E69sV5iKs0+X3fjwC/ekZZ7Nd3uMDMnNNr/DO9e3uVtfd5FghELfV13Myza82kACmHuldJ9OivlyOoCmq6qmvXLX8Ft/EANZU+otekOvzF9xdr651yiQEM+h4fiKpCGoeq4/YsOfJYClm2Fx9JzrsIV4+uEikB6HPH6rYi+/Dl53Md9+B3Ovkzr6U+wJ1/864bX1HpnbaNU1XOTfcIYFqNdPVHf7Z7ZmlPY5865WmNWcAinXRdrzyV/866otevzgX3YBLr0F1w1HHBdeImvwN9lzrgRfbC6+P5cjHO1cjRstqjO/2U5TJuDlPQHb+uRg/V3ZHvpNctOvv7XbTruwV/yBG3Mi9mvz/H4jOps12WTZV7rx/hcjXUZBhw14/45YNfzSPpe6Mlp0VfcAVqoSf+Cvv/HxzrqVfUaHlEtfYG71gji2IMJ2x3a+Sqzl2v/H9CW2iiw/EK4NX2mT7ySSyqACzau1a75R16eGq7Ac9rrVgADLr5IHgb6579tLrmBcMPvpssAy5Gz7XFOJ0nmIHKToCdnYuHJzg5z541xCrBNdfi2Ox0U7QrrycwGM6R5N+uuj2AAbr68gOLibXp3Vt7JAnjFT8FAFnuWyDNjaHvS9385Pu15uvrDtedDS86ABlh9EgIzQDrX3nJdqgAa2+sb+d/+FgddhABn+Zm6+8EAKDPvONfUWugs07+11IAIVQBsIwZy2cHtZles0QKFAALtc/5HlxTTk+52Yx8K51cMsQB8JAmnOzAoyYa+pnu3vG+WjmqRg8YFhckfg0rxGtBd+Ient7kWgE9Z2vr7319a7r0pXeUy8vtcMWu2sxSWwDll9sOd3OsAc6txXqwr0xM/9MF1QSBPhEqn6or091yrsfZADbCuqrw+Vhs0QHu699+D1YppDXWQTnbnU+664XDKb7gPbx+mF914xAAotdfwAvXXcY+upXfsNHQDM9uvnWr8flzxvZJa5ydcgQp8U9pSux914c1efddaFHZgA4f4V9138JDqKQhtXTM751zbx13TXtMTN2NAVB9wHA7QK8mSFpdfmb6tIgzaMkPK2auG+ON8pmynwffumB15CyHNYDQuv0Vwl4+ij19WECo9dUWvbhAyFr3/l8A67NddTUGW3XLhXLaw2aIGpOpb2uKLXK2xYd1/59FY9eLR9NrTw5rgiUxXLfakuvWH8PX1pxquwMT3pI9eVWuissP+zOrfZR69rdfCGAzXXw1sAawFawEbte0tLcHbT9FoyC/R65NsNzFGtWAG32e917B67TEA/uujrns0Fs0QCQLsk9cgevSPXl1z8oJwbU6A6td4vqgn3OTsDM0tICM9c676RH9qjrvvF8yWYc9cyiJMPXBq3Bk1wpa6vtfHSQB8Xq0e5CV2VTrXqdLKPKPbdKDg/fR0E6tV158uJ3XZtevB1zPa+/YDswW2AulFrhIAA/HNQGYHLAnqjtRrpe5+dHr7sNuevpXL+XJ3B17ZK+YUhfPxKFwSBr9I6Atnq2yuIC7P8XuTB7/F2ASVt03R8uTT9tB+iRc8/q/IP33JGLsjeTrxE18Ka9CleWoO4xt2Le5mgF7a6wdfhCuGU9WTrzOS1Ja9Aase366/b6UrkL20I69SZ3FKjfVTnAZum8EaGf+PIWP6OMA9qjzp19yIErz1KABs+YYaD4a2Do/oyyD62uqrwXFZ27FPA4bsacpZ24xt+bQIwq9665gzn6Gu+tQZogCB1wmGd4URRH60XXpHsdXnR1y4+xTel7YvXPx+1d13ja8B9dgn7tOdloAYUEm/vtq9cEtXjQ84GZrVxBRa7x96uX6xd9FKZirrFt1bQL1lH7wwr41e9XM7DmZzb00WvsDXABr1FndI4fGJwbqPbpXZUZ3hRMha+CecLBP8PXpSuilNFLrqQxUJFARH9/brmPiBA65KqNPVHQPXRTzqSahl/tBdeMRXU7XgnrqrJ88DcccNaOupRW4DO021/iHpsNNCrgdfAudrmH1/BHs7IBQCBsfXJ+hwO147a/llwDL6owz0vrlu1/VFeQwdeKX3PDjV4ca12+vY6cMauGjnAJI+4vM8r7bOr0w+HhrXZjrkM4etK+YLgrObi/AGdrvhoCRg5780kmvW9jmNrlI15RIDdxCez6gERA7roO15qMS+r2AmvSPXMLz82l2U05YMBu7GkeTWHR8318DHrASvlRndLjSG+mh1xAzqpcuRAoVDTWQAHd1wqmaHiiI3GX3YoHrhZ11D661qvIoA1mg1SxviQBHzh5tf5dqX3WobXbvIjqwAmr3M+uq8zRlsX+2dwuHLXCNNx6qEjZmhv1/+ra19d5muzRAw3eyT13n6611P6eQ4ddOtR6rO51ztM31I5AbAAkFuiyI8qwB79eE917fXY1rx319X68Tlck679qzvXr1OV/O9c8teW1r8gIGKAGQULG086deEFm+HXhVCBB145a7EtekL6inXDRg3Zq3na8eMOrcvIjD0hZ2W18Fg5+asOWuCDXpDrnbOySa64tfqbWq2n/BZm/10M1YZ7jR1JZ7TyEiLdY6S4b1J1SFm3WAZPrnOx9lg7pcOMbWofX1fr46APiHpZcMhnDdmrRAsHWo3CE67XMHbVl5Xt3Bsq4yoNbz5cp/hTPd1hZy514f64INdLtPbCzc1J/Oo6H4r6tioLHZ1z27TghW9iE9me3quGCLDBRu1MlxLo4H6NMX6m6jfegP+V9xdtEu3MW5Y3TM7r4BV4+uawVskj7tdH2N6cwoIWK7lz0j0uq3dF3uu5l0bo9LWMqfWBQnkO9g5C47o8i62dmnLL9Jhh3C171aAw9hIZ6KT9xO9uI181S9nt3dDHXfHcy+jz63D1iLzuWv6WA3oHSXkCA6iFwd1bs2hJEyDRiL659QF31epcmvdjeDWuWk5oLog9ffOuP3XOre8QV7lfprJdhG6NLXEi4WsfQya7dddENH3A3hIOEr66T1X0VepmvLKA53l9oO3CXvJM0okAIpbYA+8x/Zla4sVfWR70rXg1+6v11e64mDsH6OFcHXw1tU66rqbsaD2YqSmuOVKrXBwZNvcYhn6v+hnF2Rva/bY0Yz3Q+fPIuDZ1r29w0F848mswWv4lXrFroI16gXbFdRQGvA5SX1+8NNsguDtrPAh294rJiekX18KHDaDe4GPBObwd+/oNzbEEGDe+K3FeAyn0EL13j9bZv2KJOKhz3trmDY3q64ILvIeHCb9qaF68J801u8ddtBuWW4owbu4QOMG9fCeTBubk9N9ryCszya+GVf9j65g3yG4I4N6o66otd1+unqj9tKHB1z7PsYLTmHHNm1YHr7CBIok/EDdIROnlXK6l3Tw1v3oMtdB2uwwyrZrg5YEQvuM8MPfBBLS+iZj8yEjkCl6cKMn3GI2AptxW0fWd9ddjOucarn/ethK+mNu8t2cWvwzDFW1pyJ270+Z83k7nz29+pr3jSLAeZsifOwBY1X9kTvIegmq+4O2SmPCbtg4hm3m9Zpc8ifpK2OfDX6rp4O11a+rdcVVOdS9XGu7y3eBGEyADoavAaznKVnXw9MG4gdMcz7pptl1rlNcEm698sAy5GutDKjrvV12Rq6Ct2SF3msLaqV+qa81E7Yb3Pkv7zHzZ9t8l/4C/e0tWavvyXmQzv8x/+S5yGcAC3RsL9mrz8xyBS5iBfFDOsIt3jr2X17/y8Jde2WxRvHGy4CoK8tnFP2tG2uRst1x+8BnSv4birPmFmzA+oz+tInFuHu19dGWwZfX5trxR098cn38MJ/hDbXVQAc+cPUrobqApOuqtXBtZ+0h2b3s7NfVpXM/Tywz+K5tUuAf8OvZiqBj7Wr4zFp1q81z3gWJkQb0INnYLZ5a5FMsDavuRt6LTj710UU6O6cABHcYoQARgL6Ek6cxBvzv6QM9sHrx5yya/sQAAy2urNbcGetSl1WG8udfxtF3HXJkAXd/XZTqn9ypAA0MneM193SyOHs2aCK2u8LX4/rli10zfqCNd8TPswBeSK+mUm63obSKUzW8Sgc4bmKxL8G4otcS2vx3IaIzsPxtiC86PMEGu1w3pTe4gKwT65isTOt6wrHRIziKx72Q/ZkMyvg3mhUpe7vIpk0EPH1jL7qRnaoN55QzeG7LtfOt74YnRguXfLWkG55BeGg3FHtZxroT1xKC8w9cQ074Xb8auyA/fpvtR1dwoAhTDC+r8OEujcaJ50vokT1TOatGyl/5fYePO2zXFBcuMTh2O23bqJLuQq2yej2oz1ylx7Hfcpf6jOAOTXlL4YW0RQ5msd+UvVdXKYLwKl2mC48L1BUuPRnC1Ogea1yXf7BcHC2hgjbFZzdfdl68ZQmY7HH9TGpAacF7i6Z5l1B6v2zNFJQSA9bpqFQEAVwZqDX/X+rlW+faagV2+qndzduPVdl5ika9l9cYAAk9XP6e0S/b/y/c2OEgAO8siVLqxs4iLez1cixPJxb6VLqvV/FQ5Su0/4WROEuVL+WJ/KrdtvsH96aqXgPR7WJ+X0bKp1VUuSqXtVLmea4HKRyMvmu6AmjXb+1JsxkK66pdtC6eqXxyAfql09S4n5cBO7HfNo1LnNozHE9ib3xxPtqXHmry7V81tMnN2MQA/bHTtj4d0zKy881cvutIo3tWVxbk2VTqkWseKu/tkj2QXOxxJ/uWAgrLh5PLOAx0eJ0QmdOpc5RuIc9js1iUW30ocxz2G9RPqXboR5sV6s7v0pfrO7hgzHjpySc7Qa7MjfnSuGo3NbeiGl2pM7o1d+Vq4aXNfAJo2/pM7kHKZTG2MAELIEj0xDS6Hb3Y0uhc9Jyhy2h5C7uzAFCIBloXctL49PR+rdnqDXkKVlwtgEeml1RK4SkDLRvANb2rr1ml3bYYk9Mc96y9XSplzF/QYXV5pdPt6eEnlg1/hRNjnucNdN6u0W9bhrywaxIk53PYBXZLE7sue+Wl/YnbfisADXgmd9fe1Wl7Zvo78sdcmIjXwdL4xYNEa/bIshJ23I3rEgJBnYrcalcsqF7kQk2DOtZaxHyejzDfeO009ORrvI17Wk8dpfp8nnaXFvO12l0Kod3of0yudPooz9r2l5sHBrL1lJ2dJjLdOoOl9vnvH+Lk132jXvZljAJuc7sSZc2XX9O9NXphOl/zXvySccrgU6XLAxM/PXB8PGNdnhLxGXa5lu/PRf+BjhdOqGDVuBqhpmN9Tlcy1vXDHOkn7gJuMvZXS/6SPxOOhh9HBQY7KxvRGDUOhJPryFzdLuxlwHW0ljcnGvXu95DjwFl75G/7pcdjGvn4rLLxOl48a/vhvaSvJusVeVyel9ltqaFfQhHXkn2OhuelwvS5lfs7J3V4X2q1k5l/D6aTXHJVY+jwx9LxWN2fS6xGsvhWhlX19LhgU7fS4xKM617MTX+KTwAQN6Gd6pecI2QveXu+qfl15G9h1utRH/6XrlT1yeJwrZjme5E4wGXIbQZky8nM+1a3AxuA5dDSrvXw3txfw1fGlAvOXgQr6X0/ya/MFPoMuWS9opr1v8DBq+v6efivOdbDxe37vS+ocbWv0MuixjnDL8EVwZ0DoZesMuKmXQwAc013v9qbjdPZ7glXbjjyB893G4kZf18seY3S8z0UE2Iy9kMOGMvhGXFut0Rl8uTGw1eSMuVVwYgdjXvUqCY5B6+36543pf6BeNwEXsQB3LxvZXHchVrt/eGa5X4QTMA6LTbsV5ky//M/3jdcLhoxn5rO8bV8Yy+iJymMuDrXhnZmIvVYy+0jQJF7QGXzjL7ZgCXErKoSaquE43mEtmyI8/G+VjdBRWMZXsux+jVwEy/Nd1BMuRpbIZhUJlwuk5nYDSuWs43XZrxyKwXG77NeLTbCvOK9KT6N7gSC6dOuP6zGdo5r0W42aXsBVdJMv/SAqCbg3l1Is6KZdW2GKRXCLdiWy1vRfM/t8o2nP75qt+BV0TtG6ZfVIvAdXNCb2D3aea+blfnmuLbLHKdxpFz/3tQNv22XhirJQOo5l39Noq0NWZ6WlnvEJtC1/0i4Ite6ZO/bLWbjwOyyMi/AD3Nd3YHrTLL30IzkztSldPTXMoT3LLxzV7XK7q1fEJGr27hlL6Vl2FG5e1cRRvTi9SrLvcV1Q2CDf3qsv3LXmrL8Vl9qneJWcr9mc+rzxejVV83K+LnAWsvlBTCXD9gga7q90GNsrOK9daWorCQA2+FnG6YcvZOX8CbAY296y/1jdIl6/WXdm+2ObcBKcDZeyGG/ezPMxjAK0Ttb+FdvZPSS9R7j2Nlz9k5J1eKDnA5S5DerDV0Gy6zjdXG20miitxlPl1rK+ZReFsuzS9IpezJI2xq4zNfhrPZS9e0p2+NzbMc5H23xuG2X0ymJWV4MHrrZdxOP6cnTyIDtl8KPsiVepJuWyr32gRBl1nU73Vc4m3aVX+sbr1A70QDKuAAa2ZUXByzTKV9JtaB5cTCvgWXa7L5mfU5y+PZfXY3zeX+Ie/dlxjdtNZdDMukbXJ7L8ufYsm6TL1bcuk6d+BAfc10My7vZdbPH/43+Mb4m10x+bSKvnsulk3n7LlSxp7y67L202vZ9r0hZrgVyBy4FDshywU8nUHL5hSBUT3XldLyudd9CHLwalwW8dzydxvGh0XuG2rZN5bOGS1ekcuDVj5HLhGW5Ry6DqY4RSqy9oKbzcV21y6LZexXgcogfWoMFlwzUZokBVvHWOXnSr/kV+NdyOFwfYBbNn//D5xwNFK+A5dCcuY04HXJ/iw+Jy5DVdvivH1Xkh4QNVx6y/gTbWmGja9WCb83V17K7U5fx2utOXk9loDfcuQL05eWwBqZXrlR8+cJ3K6A31iglmRXEHsVxY6SzrHkTHrhdg2qm+yhcDMm7DL0Q8vjETpur9lpMym4glVDs7mWAAMrrXPRh7DIwBViundNn/VibOD3S+UFNGauSJXUQWKLxyIdZwy3ApuAJX5j+o0O7ly922fE63YuX+IezLl43UcfroQ57843LXjmJy+xbYK5cll6fS9AEr0endV49p/xcohM439Kr2rlzKm4KcsyOvTCnMlthzFy1y+65c9ABj3LHxu08wfiHo65dPZ7seXVnOweJ6kOisMPmCB6uXkmgzCK8ny9d1CTcvHk30RhjSgJBbpM1dSpvfO4h64bul6g688MMoi6nbX77LxFN5pq8vZesb7jWAxrL+MvW8kk3gghywvLbp/TYFNxP1c28jJpuft8ecb8Jfbdy9tCtwPHkSAj3LnTalP4F58sEH73uXeDr2NN0orrJVd9agfuXAlVq0B3UYY9TelnW2xXqMr3xNzZbB7Te5cug03DXLiMvWOnaSDMblJYeXhoAa6Qz5zvXTcTKuUeXeqeirV3EawM5dOrIJUMiabgAg3DG6tWNLd6zwlUsr4pUcTy8Nn0XsAyeXJxTnoezwXZp+fHW3+eXNIjvqRDiAAfZeTpu7RXNXJiXl7eLuBTdqcvzpXTab86hLZYUV5dyABleXJ0umFAAU696figc7jk3CVAbXlzL/F15d0qhjtX30bp4N9qI9qddpYujVj4Gby3lzqODt5dQZucXLdvL+vV+L0e9DM3Juc2jwzr93l3o+Bozfe8vxZbvojwivcCm5Cd2W1XnlbMtex9N1lq54itsMvqwrLfL29V2cZhaje7K69/DPkrjAVyFK4NKc6j2ixbppN2GW73y+zHsT+OSM7QUDkBM2Vi9n8dhQP5/HG516jOx5I75dcr+PrI97BAywV9Z5Y64BRpvwazfFe+wV+W+AWd3SuudeSnkeuV15NEbcFfi0upvL6uhrwV2q6+ljf2BveeTOrr7VrT/46lX3mCA103qqbnWvccgGj1fCKvQ5bm3xi1fcDG6yFcx8uS3T17L0enX5m5Aydd/EtEzJQrwqAOh419X1LJ36AnOFTs2N50K/eOpxhmhqXd2LmlQyj4C6URRZv8WX/Q1wKc9m3oGFehTmFzn2uL985x43qG1e/SvThXmqrv6vaEeGV2s6VOLxXLlh6BcwAeceFdAKvdZH02rs7ffmK84IBjuuD4316r40V/u8FiTcCtWgt4hAzjUV43Tv2TfQ5AZfX0m1hpl0mK8gVewivKh9bcr8W/UiK7SAA2Ku0RXEEbZZ2+q1ceTO2euhtXtIr/UV4KK7soPoSv4FXftr4AU1+64bFeCiv6N9tIru526KK6wVl2qvSRXbIrhnK5pncVIE03WjhXyfL45ZgeK/mFf8ivfxX52b8+s3+K5mlcyKuebrkorjUV68G85EDxiur03vor5MVytXpGn1fpS5dt/8uqUV8qm/w3PKfQda92orks0jNXv9Ve7ZuVRXmM5ux0Q+vtL8fE56cM3JgAS0V9SK/pK3Biu/4zKCbjrkzuvtnld2bQ7ZRHVrhT12n3o1Fe2iuSc3VMfJBlz6K6TFdw5vML9bt1gxQMqm+tFc7iu6c3uCbjrk/Wm4DVcmXWernw2+t0V7GK8BtOdSuEQgYOblnN6mK991OY16ZSAPq+mmp5FXr2KN2Z2mUt69hxsVxgXuqjfDivl03OlToFAO3ddCguBEmSRXHtGQo/Y1m/Tf2MivLJXY4rqsrc4m9cX3Tivbs3c4rjnNzfuG/2NLiuA62K4ryUQGuK4IP225v4y9qKu4wa0WK7h1fgsu1FX7Yro8V17m53FeniuJq9ZGbi8V3iK7eFfG5udxXr8brD17ONfgWNAZmu39v91qNVwyq+JH04auvxX7ctgectSK+T5fEav/xXPub8EV8Qm4DZteZux2XaxR1aCxndYdzdKyngiFNpOWCV4ZfPglczhGYeTSErxoJyhK/gTas5u0JXO4rjCVyJsZWz00Fx9vLbQu1ywwOUlWz3JeuWgnqXrjBc+Pi/AaemV6GOX+Ie5SV+UADtVdBZp1JXq2eo2S+XPp1jfHuW+Zd5hHaVy65YYX5eVeu7grgIrxPlzRIAslfjCu87diUblN06JICdTcMoB/IALsr+UVj6K/QADbZ7wzDLLbVsJItAHPuf0NP+gn5l+q/AB3LFzuumiAMoAMGb3yV1wdv8ldPh7oNESD0S9V6ny7wJdynHWd9e64CE0tCm5ileIpu4pX1fLy3qIlK4/zfJSvZCziibyb116g829eLpv9udN2b8EV7lK5okD5SvEvbwaDgBw4VK7FlfqJHeTjpUroZ621lv8gDJjFkDQVEujaV3Y8Wqld1SuXvXebupi44W7ualcYiu2pXhZenu1yyq4FxAvV6+pXOIg1TfcO9fcuseSuC2pQLgL4XRym4ZF0Km6Pk3VZe1I/XnlZD33TSucAAKnLptVwcy7ceNcHaVpXrFZyGM+tK5exQUFvefwW0r8GN7ndY4LfnVWVq9tgAZiQMdK5Sb2nSuRcAmOrxQ0yHsap9eF1O7pXq6bpdtLME7X5sK9WFgnUort6V67K4jl2j07BC3vYrp9N8z8R1r2Ayucs7pvV+4opgK7BlfG9BIAAvKbqGvQnrdK1ceAB4ZXBiic9N9Wq5Zdt7Jndg228APB139skYLeqHWia9OMrxFN5CvpC7i+zgeM3hMrt0VximwwL1X5vSZX9kdsFpwb66fT3Ss7qZXJvrymV/NK+KLe/r20VzQeVlelxzK64zdxyu5N9ixOAOXXBq5k0fnBP743bk+7ZXe2cfULcsbXMa9ksr2OV+cK7D9ek36SEkCsrrlN75qayAABFu1ZXmNe9jNz3pHJzcmlAJSgbqrh9fTwVbNGNnUutxr/qro2V39XtH5166uNBdj/L7dasp9Btlem86ZeXwhbh2V7u402tP6oBeJX42uyIFG8K/S/0A8u/tk1gTz03Q/HPD3DLRuls9Acr2ot+SBGNZfJs6VH9HJ1aY0+HK78CORyvRHDVYrrdcGzK8fTexyuMBXi/rgAQynK8azueb2dXnBibuFVwCzGcwcBXHHNXUWuDwU0Qq8At0LLHXpXZcrsuXTEdarldmJvMOXJib4Ml7qbfwICcuWh5XMWD4qK/CW+79e1Kvu5XMPJvZYxW9P7leqJviuXdibsANzA3oMTej86rdX60V9elzPK7nleH8uVa9SAbxQa0vK+bedgZvbU3nybm/10tnvgDuxFWRUnB8r/D68fK4qlca3gz5XSF+zOPThqcvlcomIa8AqXTsQO/F67wGOKpulS3ds4HCq1oacrzchX7Hloteb0cHAwG5MGNTFGsaXOudkbw2msbOFfHvOzrjdjjpmV+9vauuOQKuL5Xcgdk7IBjFdwVetGvkFX+ZLiROzgq/kDdgbmyFX3ybqDcwQQFs+s0Kv9Y3/2DzQAAwq7w3A5RBSIlXKRxaV7apZhZeahOkmkf8Zi/KwtXt3z3hX6RFX6uxsRV/AXotjcydOZnwf2b63N/Iq5xFNT5vTa9xODjON/e4zOFeaKvzgAeZbr1EMEG4V4F2P4kE9fYjUcHJEG6p0O/Sv+AAhsruINy0CEbJdgEkrFXrEgFxV+kG5TCdB72YC7eHNjsl251uUVvc1H2k3LQrr0wD2S6Ma0vivAtz+2r2rp0kq/djdNfPzL97x1cXo2fm9nLc9BuW8HwN+vJVxnlddjfDkuh6Tdt+9ctxouVUmM4F2guz+2rwDQPuW7wLsHhOWvH8HjbVAKtnqhu1NKvcOjE5Luct7aHq9PjvZv2cAzaMjct17G68LjijXryFTBT51N+Gq9B5f6c3keRl5bjvN98445LdXsAG89P/RnVgHPy6WqDqCvSlXHeZzWvT909yVcvlu9y3uyr7dVZ8q9U1dpaugRXwArw7N7JbvTCM2GnZVA3wrvp1wGq5LTelUvIs300r3fPZj05KVcIVvjy3SFb7FV3J4YwL0AqvRvH3wEVU1wCq6ZVelJPhyzLxbng+8oyZhVeYcuxQSDUWz6VCFy9w6PNa6sU3SWwDPINqadw6NUVuluNkIb+362A48lLTKMn4aXzKrzj/XwIGnTdsi7qVXwwd5YCHSq5dTeTKvdtXLBboDl3WNdVN2XcvUn9vFb4FxwYogV4GcquZErepu1LVxmq94lefV7s1XeNe+Hx457q0Lehy733rWIbq7pz+W73cYl/gAHwdYpky2I+K/KADSABot97jEPDcJHy+lcuopv6bTUZuyMAKYy81VdogBtVXtfLgUPVM0dd1DrP6fgAjzlhNN+7sZEcBcD7lLTRgV8dV7ElatVd4SAbVXE1elMs6pvqd02DFvZU9vlAHWV5G3o9VdAZu4PhFmADbUr3DKOh6+qvWbd/qr09V+dK9lVd1imlOXCqgEHl1THFaNJWA0Y1XvSV6209DKYVlNc82k1XEIEZ6gFZwGBADKoAGK3a1LoD12fABSasptHhVXeNe/Zq75QHzVfcVxEBdIpu7v3TQq2lZ0tqufOdrlb+8XUhIGTzfHlvUK3CqgSTl/mmeRTejCu61XBheHnI70roYVcwRu1q3LQIT7aBCzs7VdKoBu1XrkTjAG+5E78rcuRB+M3GBeqCV5Hkg/v2YRXLq3YwuqrN1Wzv3Jey+PDyXPkT7moz+q9d1AHquBC7b1HGuU30HZxSsxcQpVXGlb4b2Aq4Z9FcHqvzpXo9OiuN3Bq4/X3WnHFi3YDgU++icK/7QC6vHyj9epu08l9lE85St8KxvE32GrrONxYC8XZ34avjkAYGRrvN+Tm6tTdShuOOjt5LspW64C/SRcKhu5ptSobxQu4kM98BfhvGuon6obyvw3qG9tSshAvAtXg6euaOxEC6ApfahvwpD/St8aJ3p0bJTecFuQD966r0yeAlq9CLdwpvGQIRyr9LVzPk8y1dCRYFcgl5b8oAOoK6yLehy7/Q3yBoIrV6oq5K1eAT6ytXgE+0FN+I4cjDdfYWatXcorxnS4ynmBt3/A3Jlb3MbtrV+tE/TDcXp6zRjQF9wHV2zS69rODauZtX+EgAm3THLpPeMno4xtX6ytlS/h09kidMB5vzVXKTe+bV4hnptiDTGmNeXQGblbV4zy72TcM4Wp/cEEYLbVzhYZ21cwMuU83FBru7V6c4YRCCnavwP9T2r2Vl1tkAijcbhuztX92rqmQ49q7ijfhRuEo3b2r223crhc+1dhC3vtX54bkY8++kfeZfvvX7w3IhesVl4lG5B1eZZuljzUcbpch7yC/CpdE6vPOthXnK1GGTq/a70566UI3BJdtCN45S4wjdDWOjPjOoz0axwhQ6pLsGjOuMrhEbuku6MLZSCN0UPtecB19i0ZzOC9/FtURv2S7rMTuiN7DfY5idZx3ks9ApdsqndQoYSpcCxOPwb7lDleO8KrY7Gd/gvSbHspdyVW+qEH71eeFrB9X1p54fV44ob8bNGX2dYn+gewMI30ACul2lcRGC0WsT5Iy1E2ffCNeZH0FrMbrlX9AHWcY6McJ6N9XLjO6FwKtdbi2sqs7YSjXZdpfQEIgGIt3ZVHSmAzJAY4XbQta1Vb9JGOQjAAupha/Qkcw+sWiByUzIPmedXfLTp36OR2PbIXnbp7WtwOkdobfV0h6G31V4GNY0w282pcVNnWG3tEspsBHQ28QLjT8B2JT4Db53KzXE6fz0d5nQ9bxEzySs3e6Z0+j5RulP48AAfVnU4RCdp0pQuTAmnhEGQAPOrvQvNxW65EjfEz3kI2aUf+pf4lGmo3vMu2Bt2vubjp0hhH8eAIa1NSZ7gACul2SiBP3TayhxeNfdtRNp19Rvtgt9Y5owK/jnqsruzdHDEzo14Kxt2Ia/Gjd5enpoXyubyUQKTS7He3Menl3lZVs9dvcKRdXeuZyuuYjHLjFKuycFncqc88mzojZkAJ9gLDGcA9Ts0uzudUnplhJ0QcQWyD+subIjaZAHYCNIKZymfixGVg4QBu/1gHsWcG2NWBa0PtV9OnGF64MdqyfQ3HJaX5ItqRJy4Ftfp3tdBccrNOVlls5/TsZyvkTHSG3Y/u2pIhEa96/Svm6vlw/TbmI10GZa73CAuAJs4SDOwAAPQEe3vTNs2gzpsBp1Bapm3UMbs2l/M5bcWPI8nvjdY15iL01UMYrZ2N06vCrcbu4hcODMe5mMlGunDdKER/Vs/qBDuGfWa38UnUd1EYUwTG7pVMBNuXpnXq+9wY1GLaSSdOtmok4JTRDZt+zXbQzj98nArjbHp9t3f62fnV1IrWg2zbjjgSIzS2bgYeBXGfAAxDbhOF3O7rcZ06emnwjGDDh4Y6m2YdrvMln0v9KYwHR6pd7obpfhG6lxdGKALRtwLE+LbMkNHwCzxkRtWNxW2dzaMXS7W+AhYulbOCsQCy1390ubG3djb4S4JnTsIbe6ABIW3Bsb8pbXBAEbp2ly6WIzGAAFpq1hZcfoAPMAO67VMuomXWK/YsZiKrWenHCdO3HXeD6eckSwtv9Zn1FlimjAwGd5+2TM7sgAkzl8fKyFub7FtJgBG6dazO87nQs4+TIOzNumaEb6uwON+Ua/RKewbXoZdnCNpfQKBuFnzMN1HwEXECNmIIq+2evtI38gISzZQuqV/B4AEpbNvOON1D6Dby9gGU0Z09NP5Wfk71FtnRt9NEf8DMetvUGXKG1k7I4b6fdbe3wAS1rTYZZAAI+LfsjPL6HGWdHrbpDs90w8DbcBfWnIzsuZsmABh2Y4f3m+nkCrP0RvB44Kaa8d3YuPbojWbbrdoEy2+YZfCs68HjzyR+LXV0tYsRfJNvwRWi0AElszYi+dZ34Gkg/TBnqLDswBLeCReQxHvWcTbb8+Z0J2cRiPn0wwpt7bb++Z4EXq2stcFWsYjoiBXtt3vG++pS4Rwe236bOvRlxp2Ybbd+4Be23BbO3Zt7Tkb4aN1+nclECeR18YzG9vfbNZ7nBYjwmhtc16OLuLNf3XMN23s7hwyIwS29RZ3Ds6MkX7nZnLwCyIFn9MuFWWwTSsRmNt4tdfSL2rpPN2dPnZu9t9Pk4dfvwJuVAd9QgZXa/QQF7F15Jn6tjp6T3IvdDtbsiDaxGyrZfTbm5t/aw6X0BP+miqr2QAMRt7Tnt4mOOUBrOjaTb1W3ZBzrq7Nn63amX+iz7c1/p9aSKPZVHdezfqt1TazskbQDPDgyMAzjlAJyMlptcEltk7WyhdwVAJ1t/yKdVmOpRm9WdzG5scuHY0ZfNcWbWjuTy4gMq2fN2eUa0/s7WO3L1wdgM9xk647eVxHgLX0R5lftSwGbY7e8JulOd6tGOC14muc4l26c7x4jjG1r4APOrscZ2CJvZMnc8Rgvc2YbtxF0+c6GYzL4gIZs9C4BLn2wlWDRdSTZgwY21tdBjNhZmJm3+qASHszjAnkH3+C6f2jL7bpwXb4oEIl1RBnIAAHLjAkKPSz32WeSJuRLXB7Rgzt5g29xF0yHzeJXjXOoLk5CBCIbe0NPpE3n1r95RvmrrCSNH94oO3DLbplt2SVdzXM7r6CwzOLblxdJgHtzXOki6OTzV7d6es7x2br11lZPFQj1DbiEsxu6fobc1ZPz3rpoRpoM/Orq4SNNG3Wh9aXb+1XfSz0qQNMFHXxdflrm7a69zr9SOMinhwZ0YZ4dAKcGZ2hPaFWlEjjKz7HQwqM9WICl87KS392b+K12FHZDWqsNvXagiPO/xNx19dUbcnZOog3CtO9tZfF26uH30emoO3kSb8qW1TzoQlNAYgijjKEp6e69Gy+T23HuO6VQQSRjnnRsrtziNRlXUAAoXbjLXcVTS2aMvtuqUXqfZ/9M6TTuzeFXS7RtrsDlkzUKWLqurU2ZmsyrC7buTXZUWbu4cM6BXu3OvOja13kAFe7d0FRKiztSbulU+n6erp3cABXu3TfZ+nJ1rtd+51dsvEnw+k1K3Q/N28knM3WvI2jOJtvpI+yEYnZfW7WVInAwrj619Fk8IfDlEAFhdLrAI0XTYLqHHMrZxjhdaSRmzM76ObqV02ZmT/dhnOkYAPOrqw7NTNut2XVGN3CHejTtpF3h67pZdOHb5rt+jbvWTeIfn09DuBAdsAG/dZ4hBs9viO3HPbpUUVM258qdG5msLj6HyC5Xdl6a5p1KLaYAHXi2vaI0+wH57dBZnk1zjcZmUCLvzpA2dlovjTrqOgZnt1vqFfgArNPXk3djuu2M/qztzXNeZGGW3OAuma3V5QE1t3RQ6Ge7wfOi5XQYDfXjN7c62G3gjbjht5OGcBTeH86LnU4SQQqc9f68L2s3+mOrgc4Z65t2xs7X2t8rW7yjibb7R/bHTq2d3Wh7C8j8zbwmnaltS97f0tvcpXEMu8JM9KkYT3ODm7lDzdY5g63bqzoNS3hrnXwzmox+dXayLrmOLCDmiqjuzb5MEMigDT13WdGRu3rvL7DF3JxcS2fixHf+zhNOlyfZy29kF3zq6/uMdziYi3TFrrVbeYRnQ6g3fO6u3Y9rs0F2U9vRrw+a58gAPT29/4db5PWHwRPO2fM/LXrNkB4NvftdqEADvtwxGYE+DMRmG+3KYwR8cyQW9nben5m/RzGWQfvt8RuDJMC09vuCA9Pb+g62lvu09MGDGAJzzEAOftyKWcYwzWn65IzfjVyzt4kOeh9iGGklG3KkZzMXUqrszKPMC77md0/b6Ll7MLuhcBvSF14ztORpRtz5ztGiPxc7/W3whTqyM9625d52FOGHe3CpZ//t9KWdhjNTC63U3mAR9Bt4Szp9TcgXhQastrOuft1aLo9bfDdXCmS/gu4ft6Gm/sxeky2hWdnEcTI6+jbszOuqnWiIzqWRmVXaU2/97cLT7MozC5ur4XdtIn77e/C69WdH0QMeRMz25oHdL+7JFQyYxY3t/sOc4AA4DvFuXB3j0zLbzztAMDM9ule352WIis8b6bs10/c7wmd2Lboic+jbtbTcF7Xte3fPbiAd3EmfEHfrW7JB3ADO3Vnehke7V3f5ueRdTS0FQXRBAnnSPzg0PBziAAf5c6HUGSjMvC60ozEeRuo6xCiYaOuKZADVj5DexIbnj26tnOjAB2+3/zOvYXRgO9JQAU9uDBj2/bmnt17294Hc7puAEjTg7p6M4Jkbzt0iZGkazHrb3gdxFi/eEf/Rn+N8cTOz3t1h2ctnCuW6dQzymR6GM3PnHobe7HXLFczPbyAs7C2+hqPCS7YayfI52x11XxZ5COqdvpTrYqx+6UwjTocyPnZYJVjqrb28yFWy4M+tEy6SxdOzjMod62DYWn2hOugsjNIj82q02Lri7caBHKVd9cZk8o6Bm51OueCBWB3JIuhZXSIO9ulOw87LO3pQAAGoyYlaC11znArfHC4u4es6r2+WABS9vgkcbAAXY69+2+AiPlOvSadVPTwvIzssbwzfb7OjVjMMEIYd++LqhMMO9u9YzqZRu8oMigCzqv02wW+rWjmjTXbBA55l0Bxn86rPvL//Z3LFqFoAbIBFB3pcZrYd3KkfT7d7HW55rUQAX7cyRLtgbdLfWuxzo4uthI/slcWrcQpG8sXucZk8o6DWcF51ADu5M3smbscc/Jm4RdclYvhjnKmb0/l3P477KfVYveXXtWLswV9lTsr10ETmhJUMg7pUUeK64Gl1YJn7rmYm+VRq6NLtcFe+R6oyD9Tb9cp6J9adbfLS6IO3nLb9ic1q67Ebd0Jnzu3Bl1kWXZaOajyNKNu69TE+x66XaU24/73cdvAs3mERv7t2wMd+6TIgRnCV5fbq2IGnVQ2avjNuQxX+eR8l6/g0ew7dC9vgrrcPOlwAI3Tr8nNCTmIrrcsWqK639sf3bfmTmBR3i6ugXXehzviHf9G7dho9Qr/GXV5OfqHeEK6ogsjLbhBt+pXvHOe2juYDgAXO1xMzqO78PMiBPi29dFT/7F1m69Sdu2/hLO3vf1opnaGRH3msF7H2WrhC4AwYxqO8nN1ZrXUW3s7riAIxMO8tlP+C7xkz6JxmPt1L24GnOJNvgCtSRMS4K2fIlF7cdlH++3aIQJVy9527/jPYG6xG3ByZ5go6UwDpIDbun/zdxg7t9XfyO+PscQVHJ8jVFztGw4GO4MGPrxHkAAFyuqAQE728s7dfJndOYpd1gz6wh245HeUiueZ4NDbpjY73gHIlJzhQcYElVh4P1Ep/Cr52cB2ksj6N19FkDOoe9nvzXWmaE4KZpM6zN2/3qNCrhw1zEJZgwYyZqDMN3aFHVyAbxuw7nfOO7pTO4ev2LTzAAfvt9Iruy92dMu8RdHKZ8VMzmkaFXC8pmyXbmE1fvt0WfBTKNfm7wFdB8ZtwowqmfYlON06LeobCuuVM8xGf+D0WpmsOz7M55bUP3253TP/juiZzRQAMh65rQENuuqDvge3KtR4a6xZndfHcGDHNudeDxxhXXH25zl2jjueWdi+aKagwI28s7de3XAFd6w74kgPH6fpbcoTuLXbaE7v1M+y7sdVdeZH7Ig3475g60+O/DTMcDv47ruMUdGnfLm+9yv99vCJ3XNTkKCxgcbSjMVjvgVzuE7gwY4XdbYUd6Hnjx3cj16mM4ykflYAUZEPPXaNhxapinkGOKMqiIX5dj2e+1XRbQCiV3xch10zmtBju6z2K67usJK7b4jFw7qMd+rmcxl0Xy6vPXbbt0e63POdP12lK61O3niu0Oc+QO4Rf3xgQa0zGROMuXQe0ZMSv+DHS3bNO+p+Xdl7qtYApzmuMgayu0mAMZ294lcXpnUIAt3b/Eo2Mg+xTNrjuAud0/bgKAMMO/Rt2P3X1aM2QxpMd0ZO8bVvc3WBJULMpzvnWyUd7bcJ5vI2jp/b/5nfQAAuV1MkA/W33vOpW58QGeSasAuWX6je114sd/k0eg7cYZmalHsz2yTtwg9fwzP7lnDW3zPb9FcMiVbstgz8BFJ36WRkydzCrsS9fIu70AA3E74Sd6Q9cO52Q9uwcjeduk+c7irtzSOJLQOnsfebmO5wPm+0YOlR6GUHVqu21t8k1dAo2jDvf+3YWZlVI7zIAsetE9uAu36CARunUoABul0fG6lh3yWZ/UCGvm651s5jun8AeY7yYd+ersBXNeS61J31DT4rM+cDY1SSotvwoAu9NqLO9yo/MeFPb5MAAI/O3KhGAIDMgAHC7Z9wt07zOS4CO4tHf5lG1Tr8BbnJ662Obr7cSZmcFrrnAJPc+CO4MGPkH7kRd7oxMad2b27c4ArZmuDtc8t7CrcI+F+12M1HaAA86uw/Y5mEfoGPGDAg0HH+pgBwwdSG3V1KNuUKjt2Zwgt0JkcM6PPG6mCzt5kXlq1g4bP7f4VHYYzMz1oio3M9ZV7qCA2phE93pwr4WS+Bpl0JVn6SjiJ+kkXc0frtHexHXaB3uU7uxnfy0b/7clq6GDraA78Xt88keSjPFVGdzdi4HAwY7c9ftV02a6CriIlRjkCKTADZneH6nx6diMurBcHiLr3ECYzu6DtyQ4Vy/ZZ2/6qwHnX6qEGlRhERI525A+gfdmiB90tunlncgXBJZ2Qs6SRdJlRnpp2lna413K2BYBdks7smAKL28elc2FvnpXJC5/vt+JrsW50WFH+LXVJ1RWd5jmcjyPkvW9rrF+h0VI5hLpsBrGyS+fXlMZndfajbpXDMxVGenDrL15zoxLtZl2RORn3NdCfb8fI+EmbZcYLC6HlzH/eoxMWoPogo1+a7sZXBdGSOPWf29dDf7W6fUzzg7pod6N44mziz9v/md4TQdGnfkW/vXvtM7cHd+Db5l6x09lOedvqH/nAktRod68zK9uecTVGenDizrmaoz89QvyOs1G/nA5KRtJS7Jo/1GwrtvLO3g2uigM1GfvQZ3Rzug39I2u31XZv241nexUoh+3/Rb5CsuP27tzPwGHEGzdBURfMx9gB0bPvVGjtdWnj+TMzXO7/ACD9uW1zJM7ktt8m28hqOf2G/cAfjh2CY/QLrxF249vEnb987ybMyvEZXLOsnnM1w1gujh0lS9chZ1HSv/8z0YJpHXUAWZTGD99uMddPThqtQ/ttZqKewDWk5X0713mo6No9fls2YPTtrpoRiwPNnK5N7eIn6K8jY+RooFFLO80N2hrmuh3lxuy8dwYMejXME+P8msvwThd66w26K7fsFmbMHk6gJrtzZrqrZ2rtvQyXSAe6NXSI28jDM8LuOczJC4IAoyP8X7lcxdvMUjhHbyMlxI8fK7dJZH4538tVma3WzO/ULO5G6hVzoF+12PQvK+Z7O8lv/Y9v0ZUYd6YboilsWFmvMro65mws/GS/awd9vOYL9aiR9AAGzO5I+tzrmkgAPrNyvXSkahC7jaW6A2blvZwX26nxBw51tTvM7r0o7rzINlUbNHcV87e23Bpbrv2GswF5OvtRWTS3IWhoeoxMAHaivK6Oe/dJ1xjidzaW6Xq1LFH51z9dei4d9gq7IVsJDXVPrl2D90tzvrqLJcB53LL9V7bpMM2pxHp7fUKu5+j3KresHNchaYlTBBnMAA/fbmxdzUO4zcPv2PWCtaIR5hW2sWcXjUyjvE+3HhAVgd2VllCXcCdO/vTDY7qwN7FfqAxBI7VQVwlxZ+Lt9cWclivGvWLijf/bpeXReAD43Nu66xG3xODxUd2ymY4f2kG7bu3BX1/Ft9KuoWXfMNHKHd5X1ogU3WW5NuOSa68NwX7bpu1GNO62hx/53jbjXMxs1t48zo6ezNkuWO3oKANjt513JqFe4mBMJ3LU7mdQysHdwbfmjuqSzF2R7Nt+gwwLbcMlnfFXcBdm5ndFO9TjMXZHS23LAAAFt1YbpdyNVBu4Cz85MFb25F2+RGsHXbwDHxzLy1o9AO/hHeoF3VSz+rOzP019fr6N1Xs68RdkTRqcJx99b6N26s7853yu1/Us2FzapGtalncRdJK7ibOCQY7OF4hbnXKzQwAeEdxGWZKaOVhmwh3tRuqH6y6Wdw81p4ONunZ9e6od1nrr9LONNGa8AxK7klt5KIHFGs4rvpZ3yDLwAd7NEeoMfFNGxjdrK7iVd+gO/vbfKoBKHd1nR5tbJewCYLi8SvS8k+c7hJd7OS+fuOAeGD4rtzR1Zo1FO/Rn2Ljuzu3Uq7+Wox2O8iCuAHm9rrMSwboU53vbmaNErvqV3eRuoE3TDubBN02VnA7978cf/q2gADfjczJmY8zTf1qGPeAzqhVfq6Gmu3NC77udxjmc5XeFm6Exrpdu+EO43Tru8Ou67XV3uKrhRk2i0f3p1Q3aik4Hnb/k3RDPq0c3KVuwFbdgNk/3YrO7cHdKrvN9rbSZhJaBEOjVp1qqu+zA2o7tgZxbLsWDfmruo/r+5usad/fmdl2TCrvgIbAlbucozUUYv7d57mV79zBdrs3TSueJXeRt6sanvpu2Ed2QMI9bfTjX4h3wY7vB3aSYc0F05jHVpUdFRhXc3qbso7eIn7MckkUqErwz48foGPVVmjqzEpQE6t5TGf0mp8i6J94xXb28Mw/bq7Qu9/WSzd23gH8cKd29RZ2mrv6h3eWrx5YxOuGFl1HtGzB3gVamzM/EO5B6deABK13NVbop8CWRkGqN/NP5Kzlnb3Go0VO/+lNFVHukjvLV4ba8H9ajN0NWlsvd8bRqPc8cvoN7NX7XNLdKbRq6XRYShc11vkxC+3+07zgd/nO+uVeFi7KB3dlZvud1v84fN0VtG8qz5q7hId1cmd751+ln8p3pF1+MZEdO9rVe4FR22jj07yKswWu5aXNINGGh37e5tNiD4AGDnc9qufkr4aeqddzf28sndpS7R9zeFuxe1yOu/HXfEW7/q38zOg6dwQADzHdUrvCgg407xjo4xbuYMbcq7CRA3XO4RdzvuacAB77meLd9zjJkgAYMdZoSZVHhvA6u55BI7Ru4Ul29WhOB3X7R/Ts3puT7XeKruBBzsHQAbOPE9Z/KuldGFBnOgNove4eW5gHeRRvhJdAhds6syeLp0GdhRONBdti76zt9vbsMHfplp4jTaHRpIqxkabkqNMAA3x3Oq5/kd9SdSxl1hQBoDzkXZrkN7DdsQPNHduwu35671Fd97zopregM6Hp3ze5/do9cu7O8CULv/13jgL8/m0zW6kLss1u6z7N5jxUN6yi7E1dCdHBo7z/N58x2oXd0p09RPAKXQAtiWt/TWZ81dBAuuz7wFLqRvVLW8i1eUsm+V3qh5lFtyD0G/LOFzuHcAQiu0ud620YRqM+kALuIEG7yOpLZ0fT7cmzuDUtXmRzud40O+SjNy1nNintFhq63bTkZxIBjZuK3rg27sGdyXO6MXdlzvwxdhVCT7C6Mrc+BvG1m4w3tGZ+aJ+mizBt1Be78V3MMdyWgLQO98PPuduva3H5yvNIIrVFkHf1B2sbdhYb8I8wvOFpjOlhvg63JNuisN+iDdnf1bK2OQjnNGQ5d3iDdjrcbv64z9DMZ0kG6NtZvu2uNuBhXQIzwcNy628BcBOcAAB3cI72Ad7VG+ib1eNuEm6G/RzW3QxfZYbdJP7su37DbxuM3ju+4vtCg3q6324bg23Vw26Vf0fauhnTX2ryKxz9q7oXej1mFLI/2r0ch0U+CZjM+hvL7TmGVxTPfCu7wyvYNvPw3UOrjNPaRlZx6O6dZJt3mnx/Eu31Y5jwsdC3IXTzlLrCNy1TtXrf86v163+Ebzet4z0dl1cBx30XTKur+ihwfW/V1eWjPAAjEFyJfcxHkcHctl86Od31A7oWoBKu/mv1ZDnW/YTMTisF56M4B/hBjuerACG7oCG8lu9FcMZC7zR3vA7+3V+SecnBvV+mWTzyrRnCKXr0b7mtUGWPd3TJ5r3d2Lu8gXfnW7OI3VEb6Cw0jTuyoRDABnejQiAURhDFS4661P5ABp3HnbpWXbOEczutw0o8HdbY78/t6yO6H7fbzWhl387uhnuGemYll0Z6vbwXGkblKl4TY9FiflZ6363XYzsmx22pE+wpGRurTzXjZ/+tyj5t/caAABxKEAAAcUIAAHwoSAAIAAFQoQAAAxQgAAaShTS7He74DxoAADIoNvd5AAF/cbAeNAAABFCQABAAArFCAeNB93gAAICgp93ne7nvdwPu+H3dz6vgNzgAALChgPG/e7nvd+3u+73d97uh93vmV0fd/3u8n3c77vAAAglCAABiKC33fBZX8y7eIWwAAAhQgAAJihwPGgAAOihAAAElDL7ue93gAACihAAAQlD/uNIAAO+7wfdzfu4X3eAAB+KEAACOUDvu8gABL7vAAAOlD37ubxndIAXvd5/u9/3fz7uO93kAAQAAJxQ4B7l/d8B40AADIUCyEd73eQHuu939+7pJQ73u+A8a/uNwPGJ+70g94/q+QPcv7uoD3v7jUDxoPu/73eAABCKGrHhHABAAAJFCT7u9X9i+7lfd33u4oPdUHvN9381L3vd/Qe8gPeMHvmD3bB7qa2Fwe55y28HvV935B7yg99Qe9chciHuGD3TB71g9+we+kPfT7u593sh7/g9woe6EPeYTO6ndgAAUChID3gAAdChJ939B7wAAGBQBB7zKNwH1o73eAABaKEgAAcHu+D3v7jKA94AAGwoSfd7Ye7b3dL7uYoXdIAOw9w4e74PdGHvTD3kAACw91Ye+myuN2P3gAzh7yA924e8gAAeHuvD3Uot4ZQ+/u/APdd7v8D3YHp7vd8B40AADgUC/u50PeCHvT930Hpj17ake4yPdr7vj93eh7w6G+8AAv3eAAA0KGA8ZqTPQPGn+73vd8Ye/73fAeNAAAkFDL7uWD3zbe2w9/3u9/3eVHuf4nTwW8o98B40gABj7uqD3O+7wAADJQcB74DxoAAAgoHnPT0e76Pe9Hv8j3L+71yuzPu8H3cd7v+H7LB7z/d4AADYoBfd8B4zf3fLQvQPG4B7/9xv0e/MPer7v593Gx7yDxmoa6xd2geM293HB7/vdxwe/A8YQeMUq7Bh76fd/3u7H3f97uVj3HB7zo9ykAedgD0Huyj3HB7yAAGke973fn7uXj3Tl53vd+Ae46PcX7uxeTHB7qA92Ue7b3c4tnjD3g+72Y914/auPf97u+j3k+7jvd+Ae5BPeXRvkD3g+70Y95AAF/3eYHvwPGy+7nRO/Ce7FhssHv/3GLB744949G/eADbHvdj3pJ7l6Nyr3TBPe97vQD3Qy1wAANRQgx7n/d5AAAMPfkHv+93ERrpk9yye9/cb97vwD3hx7jk96M24thucwuvokHR7zI96B4xv3fpHvzD3Yqu+A9/fu/MSf/hHMD3kB7wAAKRQHx7jg9zstfMPfv7viQDdJ7lo90ctedgAuHvB93SR77Vs+/u8gPeAAByKA1PdlGv593kB7lg968e9GfugeNMD3V+7r49xae6tPcNmX5j3ix7hZ+0REbBPf97uXD34HjfY95AADqPdQHvcD3eJ7to187AHn3c7HvjD3MUADg93Ae9DPcuwungtIHjTY96OZbpAC/uMOD3cZ73mu+8AHf3f6nvST37buso95Ae7OPf1w2Qz3O+79k92uZY73eQHvAPGkJ7uBh7ae/tPeQAA0z3Xe7qk96vyeX222Hv593v+7rE9yie/f3fAeMb937J7ms9/cMZEPfAeMCz3gyT9Ns+ye673f/7vf934B77vd5sa/eAAMnuxj3mR7sfd70e46PeBnv4u9gIx/vd/+42MPfAHvQD3PZ7nmZ8z5pQPdoHuMD3Uh7yfd/Pu8uPfgHvzD3/dLjc9+ge6mPeQABqj3tR7+o900e+1PfMtv9QtLB7+o92ke8XPd97vUD36B7gkYzye5ePeznvWu97J7w496Me/2Pdiv3bD3wHjFY968e6Xhcitv3gAuB7tI9/Pu8gAAd7vsD3gAAeihB93xh7qVt5adpYPdX7vf3Gb+73vd23u573finvkj3e9L52AGce5igDInv2j3wHjQ497Oe5EL0znu+xbHB7q/d5ge+A8ZWnusT3wHjWc95fC8YFMGpbRT3p57iU92ke4PPfrOO6QAIB7sA91Oe99Pf97ur93Yh7pi95he6CYfOwAOL3J57uo97xe9/cZ+HuED34CLyC9+Ae5gvfGHvST3ikB6+0rGe6oPdj7vwD3FR7kI92nG7Zu2gXvQPGgAAWSgL93/e7qg9yGe+gPewHvB93kl77N+3ts60ve6Xu293+l79g9yAe9X3eYHukj3IR77/K2BVosvd6XuqD3L+7wfd2we973fgeMrj3sB73o9/3u5xPdYHvP93Ja1ly91Ze+9Per7vQPGF57wAANpQih7zVJ2xlrH3e6XvwD3ax79y955e+8ve9HuQPGkAAXk9xRe8Cvdkgmfj35+7osYw0e7EPcInvcr3++7mK94sw7h6KYHu293M+7mi998e9+PclXvij3zDLrM92ce5qvfn7vSr3kD5os9yWe+avd1Xucj3ZzDlP0y/u7Qvfz7u293Bx78A9/me66vekHuXTXwSLso93Ae+0veYHuBr3Q17ka9wie+KPdemv/fTk176a97Ne86vcInv593xJ7+/d4Ga5Avf9XvBr3617hfd1te40ZfE26+r3Xe7ta99Pu473eT7vkL3JB7v9+8TbpWvczXv9r3F17q69y/u5uvcKuOVe6E+7so92Ae8OPe4HvKz3Hl7iGA6Pu+X3eAABcKF6PfFHukFnpR7tvdxUe5PPcLnulz3HF79k930e9UvcCXuoNrRXes893Ue8aPfNHuob3D572G9yVe5UvdqXuG9bip7j/d6ee7H3fuXuskXQ574s925e/SPc6XvXL3zH9p/d78e5EPfgeNbz3wHjAw90Ee4pveWXv9L3sTLlQHVye573dcXu2T3JV7wAABhQDl7i1xxze+ZPdc3vej3PN7ja98ae4Evf2sPND3WJ7wA9wvu8gPdlHvSr3svu6W9wAe6APe97v/3GXe7tvd7/u4RPeMXvQPG/7jX/d9Ne9IPfiTHNzX+iz5W97Le7Vvca3utb3EB7oy9z8e8gPdVXvSr3lLd5A93Ae6oPcd7vB93xp7w293Bk973dO3v+L3jl7jeHJ7e8g8YsJvw4jAHjXvdz5e5dvdu3uhuzQd7kO967e973fqHu+D3oHjYDxpge+1vfgHuRD3w+79hN89NtwPfR3vij30fugw97/u/Tvf23u8tDvh73O95ne4E7c+Hv7D32d7wu96fu86Rcyvhf3Gul78g988e8CvdwWvR93ox7lg93He+1vey3uyj3vF7l/d9Ne78vfy3v793inb9QMxKne790UXu+r3Dh7yA9xne4xPfAHvwPGgHjYy917e+xPe4nvfT3ox7n5l9q1rSPdKnvJ935h70Y913u/f3fT3vGz3L+7zE9w0e473cq3vHz3m57yAAIAAAwCaQ99fu7v3emAAQPGdl7yq99Ve8YPf0Hvo73vJ76fd5Fe/A8Zd7vrL3x972y98ze7SPeU3vQr3EF7xU9xQe6+Peb7vIodEib/Hs2zduXveKnvV73697ze9/Ae+3ve73v973Zt7p89xge9PveX7vb93g+71rS+Ygcu0NHnuMD3+l7jvd5/u+IPelXuMmL4570Y95ke8MvcwHuhz3/e7qC98B4wAffdXuy3HdIADg9x3u/n3fgeNE735D7yh99Qe404dpHuMD3JD7iC9zRe9sPeD7uysnyh7sQ96oe8kPecHvJ938h77I9/fu+YSPv7vBj3gHjf/d1xe8IffEPuoD3MB7gG9zw+4V7PsPuF93S+71fd0o+/v3fKg6yj3MJ7g297V2+dgAA3vAb32R7xs999e7cvc7Hvo73L+7+fd6Qe52hO63ux93pV7sdx87AD/PcAXvgD3KD7x1lwVLfeAAd7ujT3dR7qg99ue/WPe/uMMD3He7zfd5ke+KPc0zHIr3/+7ze9/Pu4lvchHukS9YT7ze9/ze4EvdXD7Yn3GV78Dxjg+7wffFHu4wd7+7zW9//u4QlOYHvB93vp7/c98SXtDvf37vedDBh7ts96le9Kvf+JH393V+7uA9zFAGKPfkN6Qr31l77B97g+433fdXusk3hPRNA99Ve973fv7v6j33t75lF7+43/3fWXvAn3+l73/d3jWatPf97vo73aZ7q89x925AvfpHue93kz7ja15Fe9wfeNnv5n321r6hnYs+8gPfLPuPL3Nl72O9/He8TvfJ3vku7pR7yA93Y++KPfm6HR93DJ7wAADxQFT7zpN/Ze4EvftlXq734z7/891Q+/Effvg7APG7+7ru9yfu8OPchHuvUDv7jK/dyse+rPeKHvRk3tbmNI95ge64fc9PvMH3XD7hk9yfu8RPcDXvjD3wHjZCHV5e4cPdX7uO93c9739xqPe96Pf3nvAb3J+7jo98Ae/jvdX7vdj3k+73J9wz2+uxuGPvjH36x7t/d0Ee/MfdYnucT34V7iU9xBe9Qve5sX2PHFuT2PawuLpJfdYvuyX3Zj7/9xtHe9nvc0vvpj3qF7vFAPFe95PdrHvyz3Dp7y0970e8wPef7vk0XXi23/dyB4zSPfRXu5H3QR7rZ99y+6hfeBPvSz3CPdrAB0ylrPPdP7uNn3bB7xw96vu/MPcUPuqH3Jj7hR96ye473cMnvMj3/l7tvd6uxY5teobPyltFR78l9+C+4PvdkPuDX3VL7ue9wPu7pfcT7uGX3rEOm3t3Qe5UPcSHv1D3Ij7gQ9y6+7kPflPv0r3gT7/c97wpYoHN8S6rT3SR7yAACSe4H3fgHvf3Gf+76l98q+/pfey9350XNUOow98he62fd4Xu2934Z7lfd7he5RPeT7uOD3o977497/u/jfe/uMVj3jZ7xi9x3u6v3f97v5b34B7gw9wA++8vdUHvcn3mJ78V95fe+HPdcXv393SZ70Dxt8e5Bffivu+934B7wmfR3u/73e7nvWT30h7q494B4yoPfGnuUT3iJ7089/i+4gvdePvrL3B9739xlNe5BfdKvvAn3Hr7hTxzvw7jvcJ3uqD3DN7+890ue4PvfJXusX3vR7si9xRe5JPeVnupH3Mj76Y90u++UvdUHu/73q+7l/d5/u6CPcwvu4X3fe7qg92Re+Rfer7uQPGjT7+W97S+733d2nuF33hL7kft4p47SPeAeNcD3GB7g+90Pu973e0vvnD3Lh78l9+5e5EPdcPvl93th7/d93ee4fPf9HvIAAj77oI9y++8sfdt7vYX3yEO1F9+Qe++Pf/uNMX3A+77F94B+7xfcT7usD3g+7/Awx1e6/fdz3vzD3v7jG/d25e8H3fIfuD33D57g+9xFe4H3clXu633n173o91R++A/d5Pu3z3fb7tl91h+9A8YgeNAAA8FCnnvID3GB75j97S+673ef7ve33tj7qF9ype4aPcuw7x7XWwD7VrQ0+4MvfGvvPH3Jh75d98m+/gPd0vvVX3KXLvbi7p+6tvcf3uDP33j7oN91ge5jfcqvvFMXzsAYF94i+4vffk3uv73rN7vT90Ze8MOvmHve93CV7q498oAH2PcaAAD73Jn7ifd2++/hfefvukX3KL7tF96R+/I/f4XucX3QH7mj9yB+9wHdv2vW/tqj7uh9ww+42vfGvuBX3iV7k893Se8xPcMPvY33wHjGN97/u8ivfa3vk335h7jK9+Ae4ovcRfvEX3377ps98w+6ofc0fvPH3+17nL92se4Pvfv7u133tL7zx93W+8VPcfvuXj3EF78DxmWm9My3pfv6H3jD7yAAPK+91fd9HuEr3Qr7oe93Z+68vcDfvQ33gJ71i90Fi/UJsqXvID3Pl74w95ie4Cy1TWwP73bX7mW90Ae/1fcsPulX3br7lV98hDpc/dX3uHD31V7so9/Ue97fftvvfL3q+71R95w+5lffRXvtQH0b73o9wBe/f3eZHulX34r7yKHeQ3pc/fnvvKL37n77+98u+9lvdnPu1P3be78L9x++7q/fRfuSP3GL7099wl++o/cEvu6P3sjrnT9yze9cvdWfu+D3Nf5nfd+B40ivcxAxIr3NF7jQAAke6SPcNHvWP3Pp7zA97/u9PTd0gA0j3Zb7x+95W+773d4vup33kAAZ74898Yr7RGHubv31V7rD97k+9Y/cJfvwPGXP7z/d8hDtAvfgXvpL3sl7+d93Y+9+/fp7OeZd+X70j96/e9/3fNPu+93cv73vd/T+5+/ef7uh7UgP7kk9z6e44PegeN+j3b+7n090o+7Cvd2fuQPGN+7uS9/se9a0u7GHth7AvL+V91h+8BPeePuTz3PX7xU91W++TfcLfu0r3NF7qc91sjrxHusFad93UB7i495AAE+/fffvjP3vL7/c96YADjvcGHu7H3nD7sfd1fu5bvcg3vB93Kx73L95vu4KdfyvvhX3kAASK9/ue64veOnuW33Av7uW98ae7zffL7uYoAFp74091Pu90veHHvf93Xx7sW93hm8CveRQ66nX5JT2nLRq/oy/fjfu/f3837hE92d+55y0tnvxn3MUATN91ie5e/dBHuTD3VX7rK9xL+7d5dCAXxct0r79I99Fe/7/fPDvJnXiuWyTN5htss/cnvuTv3zb73y93S+9JPdIjvER3MmbhMp4eI60j3suv0R3oxzqqXcsBcPts4juLTneI76yPVje4FPeAWG6/3CJ7hv93U+8ZX3mHu0j3qp78kdzK+BxPf1HvnZbBh74k992e/33dRkGCT3jE5l/d15e5P/fLS7Dj3uT7taXZoe9m2O6fupV9nH7pc91N+5D/dh/uBj3t+75H9zJ+473e7HuDv3EF7/vd3Ue83vf8fu8n350j39xks+9+vdsHvdskXe7oy9+AB733dNHuuL34r747F1omf73egeM4D3p2Ljcoylm7NR3gvu9j3ch7/fd1+e5/PeBqmXR3Ql72/d1Qe98/f+fv733Pp7z892Me6YA9Zy5mfNHAH3k91ce5/PeZuu5cTZWb02Xcve+jvdTfuU/35h7ri9xSe7H3f/7ufT3O97vvd6Ie4zvfjPvJ93Kx72t94oB6efemAAfj32B76y91/+/G/fKAfeb3yL7169+1m59fclvuB93qF7yAACYB5fveD7vTAA/T7np99z+/9feQAAXD3lp7+G9w0e7Wl2/7ukX3FR7vFAIx+9X3fH/uIL38AH+o907+/APfSHvCv3zd7l/d7U+9UA8n7vrAPhX76W9yZ+83ffI/vmx3q1a0290Ae9DvdgHvlAPkQH6ID1Ae7UA95PvLv3T+7n/dwie7H3dx3uQj3J2bjx967e8rPdX7u1b3X37tl98oB6f3cqvvxL3uyIAKgBoAEu/cg4YYoAV97trhBPGkKA+v3uVhrWZWvo96UB80ufOwAqn3NQH4J9+0e6CPeYnvzD3N37qg9/IB//3cuAf+H3eQHh7998e8aA9LAeegPxQHwYDyDOfOub+Afv9jJQHsY9xle/lvd97uRH3oB76q9wfe/IPegeM5gPp373vd0l+/v3f/y7tgPZf77X9y/u+a/eZPvV935m+3YD5ie/4/eHAfWT33gH6fd18e9OA9geMLgPTf7q4D8j+9MAB5nu4b3U37+4D0Te8yA+Ynv6StuwHkI9y6K8szuNFHtgPvN7q/dy2e8IA8wAedgPcd794DwcB+sA90nuJT3q+7v4D+cB5TffXAfOJ3ck79vF2ZO8qCfqjPwp3g+2gdl9q1oU/fA/vPP3hf7h597H+6efehevnYACQHky9zA+8gABP7v1b36wHgS96mS6HxeeL3zOrKwV0Bp0Pm4HufOwBAb3X/7uz9zje95fcT7v2YLAF7tI98c+4Qfennu7T3Xx7mQD2n+9FfcV/vx5b3gHjvd74B4gvf2Hupv3CgHpv94qe+9/dcge393X+7n/dycB9lveKnuTL37z7wDxtV++nPdt7u4D3Zh7/c958B4+veoPv3p3XKjhhp+8AGl/cGfvkT3lX7+69y2+4xPfIQ6yCdAHjbF91U+5qffJXvZKjVgHyfd26B5kR2DBPkHDHV78MDzFABPfcUfuQb3/7jTe99i+4H3dt7vTAAon7lz99GB8RPc6PvM5L4L78H94A+429fYVaXP35+7tMD5ve+MPeHHvoX3BH73o9/ao473f/7v8z3V3r0x94u+7k/cugfR93LB7pE98Oe43vcuAfX73NR7/r91Qe62/eDfvJ5LkwTsCrQYe/q/fkAekT3BF7iW942e+RfeDvvfT3L+7ny95w+/V/cxgeZv3fR7qg90b+/bPe+/vgPGtQHzMD/pe6k/fIQ6GP35F7yi970e/2/ek3umf3Kv7q7949+63PfCPuuH33YH6i95ke7gA88nvFgPTP7sgnaB4x7/cDgeB93eclxQ7RVe6qver7v1v3Pl77cD/vu6oPd/AfdD36gH/J98Qe4VPe9vuqn3Rz7nc98a+6P3ctPvrAPF/7ofd7Ae/A8aV/ubpXG6e/b91h+5s/f6Xv6fXYc794ANsB6Q/eWgfDv3LH7yfd4xe8kffSPuuL3+373x9yL+9gvd1AfMT3RZ7ri9zEe/dffI/vUlLMP0LsKwye6Tvfa3uQb3Q+73QDxB++A8YBPvC33Of7gt9xfu5HvfR3uaf35b7+n97ue44PdEAfP93pgAF298Ze4Z/eYvvCv32wHv/90j+9o/eQAAGj3677qA90z+4Cvf+Xudj38kH8790qe74PfFvuM73Q77rsD0ie9HfcbXuwIPAf7sA94E++N/ciPuh332wHhF9xhe5Yveagf9fXA87sAkuB+8g/e+/utAPit75jR+Tbt8g9CQeMr37H77a95b6540fJ7ahf3EF76C9wxB5Cg8YHu7T3YB7nfd5Ae/Nff2gfPIPgsrgZLao+/oPecvuEAPOkHmc90+B5Q/fA3vqD3sB76r9wVB8YvfbAf6IPS571MD4j++E/fnzv3gACUHhADzB+9pffq/uQb33T7iiDxse74PcdHuBv3jh7uA93WB9hfcOAeET3lUHv+92W+6n3cmnuET3vj7i8Dxse773fpgeEf3v77qg9x8B8CfewXvLX3Yn7md9+Ye8bPe7fv9gPhYHwE92J+7jvcIvuSIP+IH2W9/c+7/PchnvfgPTv7i/d7C+8gACmABG33k+7nSD1ge42Pc7nv2AP5EHoID0M+42g/3geqoP4n7gN96B40yPfc/vTD3lf7m4J86ua+iS+PvcD3ox78C941B6IA9QHvR93TF7lO9+6S6eDvGHvlwP/t75AawQu/G0csHvhz30d7zh95o+9jac4Qfej3737ib9xOe6s/cNfvnX3m+70qD6ZB9X3fbAf2H33H7xm92H++NfdHfuqH3bEH2j95lDrv9djnv8YPGMH7h91o+/rlfnXNWX3FH79l9xS+85fcPaO8L3kL7j697m+6N/c8wecoP6MH9R94TB5YfeAPuftHYsHgmD06+6lg/UPu/z9qVxiR4wp+/XA+Cvu5330b7iiD7Le6Dj27nvfj3R+7gmD5o+8ih1clu4Lt8sHlkD0iE/g+uqPuWv3q+7nWD8a+9Ng+N/vTP3Ypb8i7V2B96PffQfBj3S571d93o+5lLfOwAFgPPrN+oJ6grZDPeLnuz33jD7iZCwHB7kvdBHvv/3x7z8g98Ye4J/e3/vC2bH29nvzdkB59g9yB3bAPZgH0os6He973d5kva2bBZL4wO56W4Dzs+gejT3foH7v92h+4w9ivPuu73ch70d9wJe/+wddgeDf3sL7pu95z+6oPfT7uX93tL74o97TlqvveahP4T3sn7wG97S+5g/f37uEcHA572E9zFfpOLNeXvBH3u4Hg/d0Qe673dV6OMgPvR7kYD+mB7GA95PvlAA0t79OD8Tg7QPcovvOX3wEHky9/PB8Xg9R3uSvr7+7sfd2Pu4HcPrfuyj3o+j8/d5Pu9f3cf7vv93SR7w6D0Ae+4g9pPvxgPygHpJ9yE+4kVucjHhL35kH5P9+E+9Kve3LuyutrZL/8I4UG53r2FdOABDDr7sH98B40AAB6UAC+7qDdPB3LP3K77mu948+9KveoF2cf30V7ri9yRe5SVcq90+r3ZR76O94gh5ovcJfPjD3UB7rvdzBB4X3eXHuV93cN7pBD+Su/e+tD0mzr3OCH4oD70e9kg+EIf993MUAYhD5Ghcs/cYIfZz389JxhD1Qh6sveHHvlGT8+73B96B41H3dpHuJ4P3K77xW5+4dag/UXuf331V76hD8vu/ZPd0IfMEPvit9X98D+/73e6XvlL30576RD6yNdkQ+f3uQf3iiHhfd+wh7PffVXul93Cr78g91fB+WA9+Hv/3Gt4HrD9+Ih7Zfcd7vdb3xp7qg97vB7sfcJHvnwPqF7n7p58G5CVsD5vj1LnDx9y907e+X3dTnvlGTXf7gLLW0e5hg9q9ObdduT7hE9wdB7lvfuXuyYPp4Hy995Ah9lveyQeoQPdL7sA99lB9GPfeW7APGJf7ix9+j+5/vdYfvH73wHjZ+96/e/A8Z337OH3dIHtRDwyB9Qg+HHvSf3EwH2A928+6yvcD7vPn3EqrhBvd5bpUvcd7vzn3057lE9xPu4aQ+YhvSkrfrRnjS6Be5wffL7uO93ZIb3DdxZpY43fIW6RN30ae3as0oM85q2WfvS4PFF78uD1+e4ELvGnu9b3hx7ux9y3zanfcafvXP3QP7wpDxj+4PveePvwPGZR7l0D8oB9Yg9AQfej32CHyr979+5h/er7u973uEH40Dz5e+8t1gPu293d9+j69/TB9yfetaWDXjZ5LnDLZZ+6afe3webgPQqVwpW3SAEs/ckPu+D3597g3962+59Pdr3uN731V7m59wQe4Zre4U6TJDZ/7yWD2bB+Zrc0aubIj8H79j9xQB9K3cGPuUT3kL78+9zAB9Gff77uJn3f17+7S8Q6f2/edfvPYPiQzlV9wPB9Da0YAfUYPi575Eh7Vu+fJ0ahuggXPB722Dyie6Jg+KwegBbGr+zh93bB5Ofd8kO2Oter+04D6Ie9/caD7uIr3bB7pB91ke7AQ8AUvmgbfmru1KwFq4KGfvABjD3G37yfd74+9EfcAvvOt3q0d86Paoh9AA/VXuc33okHnN9xJB9LfflvuN93zb78n9xie/J/e/7vdAPGB75QDwalua/c2QftIPFP70iD33u5o/eFfulX3H17pyDzTpbLmNfRIMYPIkH3V92JB6LfclvupIPCV7it929B+kPeuwelz3L4H8fdx0e7mBd9S7cQPjOls+D+aB/4Q+O1u6QA0aHi+D5MrYaPd77vxj3fFjukAG1+6WkOYoeva33e75g954e6/8Orvvuz3igHp995ie+f/ee3vVX3F0h3vdx3e410twAfXoPylL70D4G++5g/KAeFgPpV7nSxwY+//cavQftIPyF70DxgX+5V/cM4Whj3Ix78Y9zpS8uVto/uPP3GP7579yZe4KffWC3FUPC37pE90ke4yPe5sX8d3/D78Q92oe4VQ8NofUr3C6HsndyLHYe1fbhveUPvr7ldD/eB54PcSwfp0P5T72nd5BlYVjvUgu263dIAeV9/r+/nveRQ7u638Qtr5W6zB9Q/dL/v9QtmD7vDKxxe6spfCS2x63BD2+4948e4aQ+knvqMr5B75M99M3tNffnPvP93+8HujK7ge7JQ8DJbjD3V+73A9zce81GfOwBn/3xh7gZ96Se5oe0geN393rH7noWzW+/73fv7vU0Pz/QJzPb/u/A8a4Hu1633EHofd1O+99BfVnuB4Pl+lhO968e44e2UHuSMPRFDuADxce4Aw9jC39EPl176G95Ue6Djta7v6YnOu7o+t0RB4iQ/THv993OMH4r92e+4iQ9mHv2P3Yp7qK91l+6MvdKPuXQPuT7jyD2P+/zmun1uwqXtbmU2DzmB/73dTvupkPpgAJx9wRe5ovemAAfwtClDmlWwOC60e3qYeHD3mmH8Dxtph/HffI/vbIPyoHis95Wh8Bvc4TbFrHVp7li98Ye90vd7geaL3EX74QD8vu+Qh01vu7X3YV7wQy6JG8UyvxUvnYAAF7seD3g++kPc2IfS93SVLrPVxXu4Mff6ge+D3+f7/BD9Ie5Fg/fXuRH33e7lAD1Sh4sMvQ3uwqHKx7tvd1ae9nPdV6vxX3vx7vvd3ih62+M3f7VH30N7zcD6Vh8xPd5Ye2D3DR7rtDz2h+TffEAeDI3zfyPsZz/W7lidN7v8RbfLCfT4HbAC2Lh9OMpWEh8mMNgD7nCVYRSsI/9gNeuJFtSmwj6w+skgG9A5rCWeeCBrEdYTOsIUD1buca5xn+5mLdC34gIPUobCGxCMW6Ddzi/tF61YWHRKbD7uZA2w9pK6NnGxboGE5sWwhxcZHYfZJitbCBTxruZBmw/GlAJOEfWHjbD7y4xTnixPQNHtorjXcyJHnBVcY/uNHR4M2HiiyLLftd8yOjwS2NG7CcbD8k/Fev0HsJeMYM2HgNxjZACew+jAQGuTE7MOHD6+whjcZ3YfRgIKbjWeeK2FFdKCgcIrZ4YOHt0oL+wm2w9cPRXSgjbjXjGDCcy7cZtzwEtYVpkYdxqQvDew+B2A0vGvGMQPOLO4zo4R2wBSn478AIGoOu43Ww8PwJj3Gcf8F8qu/ACvcZ2wAknonwAd3IK+40+w9TARVXGZ2H6aPXpwl4xgbYekPG+OHqXDwR4zbnhg4fyPGacgdnDzgQCY8aA4eCcPfnCXcVrxjGxaCZLQBPGyuHzRwGHdFuw/q4eJPGkuHqzoti4zwSPc4fYoAuXCFA9Rth408ZaeNhcPiIATJaCZ42LdCR5xIvGeCR8nD654zwSNg4feuEbXme2gCWxta4T/+NJcPBmV2X0Y3u73jsmRu8qHidr1vvfwAFNLs5DhLEjxAeqtY0hKkMACAAAhQGVSOz6v0W93ihvNoJHh87AAs1gy0AJzuxql1rkGeT3yE5OwASEw84AI/sdSbM4WA9wAbXrvC3YynpBj1EABvxkjQxo/V4S7oKMssAA6RbWngKKsblNHYlRkcCWQjYBCpBJ0FG9KqHZZXnawqxQwsIKU7rydA3ShYzTJAxzxvdFG998Jat6h8POoe4uYWPh7RGMNzHC4nA+H6ukDPh44z1z4e48PiIR1PD1ItbsgB14fUAAgAAbUAs8PgAAH0B0pAsBrnfDzYNP3w/6rmn5zobe1Rax+bcuYAH4fKtzArEPx9mo246ki74f78PiAAY/D1Hh7iPco+b/jddIt36l4Ph4Wz0HKHaE7zqOmPD+lIHg9NU57UdB+EgYz3fiACILieHHPWtEBHgRjDiAETw+2K9qOd6ldiZfYgR+QI9Hr617HGzj/QAHvh8AADggKUHsAOYwEfdsrAN6ajPeDubA8VuxOxo3fdO1AAEgR5Od1eV3KY3yFxoguLQR8ETs6+WPwAiurFl3Sce83b0Cu6yw98HjFKu2fh8AABegK9nASICmiA8CPgGt14jhTTusgCiHgjs3j1xr5Q2A447ACm2PhCpLjLpUy2DaycO3SJ3uXdOi6Hmx4U40/w/FNv8Un+xABpa3ZNWpyvQqHP8t/yAKIgInh4qD2NNv5kngIdtK8xwG+rj0K0v+lrRaVg5YDzY+Vpe5F6TvdLHPV2Ix+k4iNfMW4KadC2ewmpZokc7oeuu7y8P8YEMvPWuGu+9brT6zEnf4RsAklsINNsfyE5Q2XCMb0Nlw7S901sEABk8P2rZwAAFqAr1weeJ2Ua42+yH4fCDmoz96S7J4lgkWNZEeGzLkVAJAj1MWeeWvcX6gz3LPuiXmTgMezhtPBa/8RlAAPfD0gpHjPeTaA7Pohxr6xx2huGwE2c6H23dOFgR1cBqwC0I9ojauiPe+HupwhUHoEiM0xGrPWWhH1m8+SVbsZ17hDT+FZr1kJx1cMfbj2J4emOZmie+FtwjmKmFPREer3dUsb8RndMKbhFNISpRz3ivAEL1g+7rOONzJOfI0z0piYAOIR5KcdHiQsiPFftn/3bQAETw9qu7bFe/dL+Aj0VliA6e+lXR6X+oWzX3AvLqpV3CcTkvdWFlvbUOcAB2I/yMOdm23jjykY4uQFNsdaB7unHTQJiZfX4QApp2J4f7Y9KqAIXJFEQF1v2AZ6yOBRre4EABKy81Wtb0vfwDAlEr85PD6ehSfAgAowAieHwF3RPlf2I99i3Z1coBSG1cIgAHNsc+xuD2zizj4Ij0cUdXYCntnrmd2FQcAtEPh6QlSLJF8mXHYWk73Uc44Wz2ske1+AXyR8OZ8z5sFFhPznE8P6rAR8WzpVutbd906h4oh+HppaHfHspI/OtuCuXHXSBbPUy8Za8cbuOidbOGWn/D9FVWBcdBWm+TXUqTlXuh/9yPpjarVJCP3zjxAAGG28Az2y8AebHFeHo0j2Ii7zaBkcDgQAMBHjRfRgFbJBNiEeJCPWhH5+806R91snpO6ljLjn0Mq92RFrdI+BEf/rrBJH3Aq76R8VI/O1GeiPDjdoMjz07qy4gn4eR43KfpqVPAMR8hD0skfao4kkjHhl1PG7qRuxkfBiPCZH9DPWOHAE7PAS3r37J3u24j1KR8zI8CJG+23x3ujR8PmR8TI/3kAFdjp614Vx9b7vaYAU078CPPyAQsj5gR5PjeRZhayP9ZH8sj5gR/oB3r2GbAa+x4Yjp8hLejCXnABTbHoZcPvQOhLcE9EEAACyPRaVy1wWOFahXDiEfSg90wpvdtxKR4hvDjkf1PLxbllOfe04CP10LEeG9bZ+HxPDzzY8Lw+FH5tVqWSLn/x92ZoNI/fu7mP7h5H5x86aw7UD19HhLmAggAZlM2pxNwV3yE50ad14xjBN2wbovgCm2OO7It5HrztPeR6BPbBSN2NrBTL/HzXmR53I8LJniE3svujDQNuR8Lw/lMvtw9HsR1X3Rua/K7Na5AL4A8zTk9U52AFl6vk9BTmMXmhiLQ1J/NghGQAAwKPqFHzDnWnEMfFs5CVsKPjCbiPqoAAEFAQCj8My7qRfoUfGjAmFHm+/bKR/5FP1WcmAAfBH6KqqkADUnljxHO+ABXTqbs0Ow6pd2MxAe42WhHr818DsFMn2FhAlRTT9sASj9yR+Lw+MumHbLfSCkSj0Xh6EI/iUfK73zYRzaZGwR+aWtnMv9Rsaz1/QAGsR+Bj3d9K8JAghtuPk+Ftdu7P93v72H3fuiJ10VljUcCwp6aj28hOHAAIfh8WI8UkBvXQ4hHxe92zducrmP4fFs9S/u24j21k4OcNehwBsjOux4Mj3uAFwI/yitWCdeIAv2gNH5O+cfe2OqkzkkjQ/D5mMYGyPjm79Q7A2RjSiAkQH9CeZx3gH38JVtAj5PEdZcvroE4ZgUwAFs8QQAHwI8eUfjIg4UgWH+zIm7QI9kcC8CPTxHvqTUZU6JERD4eoJjxVHgLY8qnZ5Zer4eV/whxH39G+TrsLccLZ7jPdHJ6Sy13vLw7WUb4eysny+H0qocPh+s3DHp6JQd7VHzDy0y8dQACH4edyP72KOqj72R9aH2DUea3LhvUTYMyKR7bbb6Pvmc90bYQcjz3h/sTcKB6GE9jnurQjw4+8TteXtIhbFOTu0Ej4h7rWyedG2EKdVJqOsj+k7vYCw1IT0xXalH5RcQjtaKlt6CnXyP75HlTG1YTNsV43kfcrXZVH7wjww4bfI/DzHMCP/vZ4q1woNtIJg2F9Wiz5HO2+obxR6alvvi9VqP86OZPbTvh+1WpFpXcCPh3biEgEPh+Bceyke2n3R4keaj/MWaQlTth6vCPzKLooj0WW96lu9LkC+zXnoAggEWW73I9491pn3dIwVKa7FeFtI8bWuuyPUXdz7h2gR4yWCMUeFkzkwAKX3QibYh7eLjXeiPp1rt0OZIABEI9t/2f8Pnf9vy0dpNcEo+SovYYtZ+H+oj8OR8bWdUu7m3wDaRPgjyP/ex7caWGAXATG4VgAHGm7brYUkexFQ0lH/mIIca4GyMlTHQFXCLx92qwkQGfYBdsRIKPFWU9M0zYQFwI9EvuUO7ebQfmIDzY+rpCJ4erYA25H0Rw2222wiPk9BMYAoh4FO4zMafSd3b3gByPQ5H0Q8O+lcZfe7rOT+zDc+hgAIfh8UBvqsAYM5kgAfAj95qCtj16q3lqPQ5Hmwaa8cZRF0/AAa59L6Ryyj5K+5zbO396JZdieH5EI97Y6GAApfgEiA+BH5OJ81Pucrlr8AfHDnjexOj7KoBAKeOjamAAmdHpCVH2OaJxuH86Hp8kATm2j3bR/NI8dlH5CcoMTuoRC7R8H10F0eDe3zkR+XgbE3p+QCyyAOqPsQAe/D92+HCACm0f12kXocKIgITUsyo+VUfghAQtruKHUZR4zo9Z0fAVXy3J02j71R7nw8wy3vsj6dHvcAJnR6aWjZ0f1IZ9hyF2j/gR7UcDSzVA+3CMt0bw1PR+C6DkSB8CPXnoS3qMeR7hQB4EfdUAc3Jlaj4b4lv73IPRXwuhSpgkXc6Hv4gRHZ6GHRiUZhIgGSMDtI/tyv7Q38y+4Pa845drw/A4pj8P6fl9iU18AD5scqp7YGP3nuhwo+QAE1sfMAABIEd5QD5MxSR4RVq0ymevYovr2xXnHtCKyxe0eo6PYHqFZPZ7R+IAAv0ffzL+Kbmvt4na5tI+GkeDZA1kAU2x8sACio8I9mtiP3/uhEj43R+rn2uUf3QnyAAPmx1EQCcIANwA8CPetHp38Kf4BqPay9XnjbR9HtlN+DKcNI6O0ebyARfjnwACAHphl2E1LH9raDrFLwORIEKdsg+ZdZACe0SDY3gx/Od0ZnHBGPqye01AAfh9BABNdKMqrYQ56+0Pvh/PGPSDARGPuLu6zcDPR6gQBeEfXFjRZbnRj2DSLSqNOx6alj2ttpBJ8DHqTw9cetvbHXuEkafuaR+yf3GpuZMXfQu7ej4kR+Xo8ZUf8CPUSx9J3ZqR+tTcMl6QmPu9H1YgN7Y89Vs82OImPfzx3kPSyXpjmOH2uijD7Ge0unYYdffI99oBhSPM5HrzMFFKtAI+akfHg9iQcQxj3cdIW5ev2ue07+A7rV3TSQAGLmi2uNKPArEFVAJZR+TvluwpxZ3IAeyJ3efh70Y8dgBsKPkgARPDxfh45V1uVO8GPc0OHxw8ghwRI9zcu6CAoNRRkB/wO+W5dJLnA6PsgABYjwNfrzQD50fHaPtZH6cAKqcYmo8z9GwfdJ6T1I6wKA8oFMgbgd6Py9HvEAR3R7Xo+jMfoqqPwe7fttFYcnQCMOuiZ9BIuxI4zYQH1VvdZWwdVjTH3hj80x/lYAgcDrIA0s1Fd098x4ujvzpG1aPtvGdHx6ewEO14JEA98P0qe0Oj+6E6Co9lMeDGPdZm4xj5Dy+CJts3b/jd6AAZJj/um5CHfiEfap9RpHqn9x43tptbK2XD6PRBH1T+Jv7q8Y/eUe96P0VVeqquhNdso8O2woSPMJHmNQB5PBaY8OZL9GPtKAfpj4BR7KcjwiO7HXm5W/Qj/KwEIo+D66chKRCp+Bw0PalJI9Oh6WOeRZbvBj5NlzRCA8Mf1GPCIQVod+wqfCdeXMB2AsBJHiAwfHtAFxpbMf+h3z2RuJj8vR6/Gh9oAL4A+BHlqj81Po5B7qeWh8P5xAKLgG/R4pp18EeXqPBTr1BcA3MbLo/8VRyIaz2+LIj58Yf4KUQQIiy3VuxpjcMVJF8rV3kfmhnPvjvAC9X+9VY+HMfQmPJLHjVj46Nu1Y87MeesjVF/aIj4vh/Fy2oSoS3HL3ZrcU2s5sro/V0eMyAGWLprrRE68+Y9sQB42PYst7kexP++7d2B0fg6PhfOvpj/gR4SY/RVVTaAM0gKDcOT8uhI/2x7GNwMQABEj7f3qRI8JEAUSP6BARJ67pq33o974emulWRH/Njy1MATscBy64Ms6nlo+jzJO6NY++xntR7mG2huj9bR8QAC20fdAA9tHpCj6uQFlyc4AAFiPqmQH2j5aR/OdcHMe9VbfrHgtj1PR8IXBtkex8p0X1+PaDgvvhaBi0ffS3s7jRpj5ZwGHY882O1GPijHiajw4x7GrJpUeD2PKe4RAAPmx+KY/eEeY1ACbH3SB8Vi9Dn2+sf4mPmDH1dj3wQHXY8me7xJdIUo+lAHjGjBEBAdOGWPwMe21jyq6emo9nsebT9tivCejwmHvTo/Xsfb2PoBSe9j3GDS7Kdb/vOXXkwlqVPGaR+jY8nsBTAAUDHlgAJcR9/MuW9RlFxUbH7J/eePY1D2dgBsKPNqgRiAICLuMY8UDPn+XSZh0Ow6mYZW+q/652Grb3AeiRwAK6s5JQMezbDVrTx5j54aGPo+Mp6FiPMjHkp60kvpso+7cJQNT4I0OAVyjk5YY/df69/3rkgIatrOx5FY9elAkyjjG4Jlj+ZR7wY/EMfKOPd21zr20HR5EY8J4eynI+BH3+046MDHXA46QpzDUHHmaODqICBcS4EfgHbO7H88Y0hKi5Y+397VOPeaAKjjzGx421Ipse4SP3NHprpZQD0H11CceT1TmMAaWaoU7cWY8MAAD8PCgr4Uw0qc+KX0wa7fzL6BAUM47f3peY8LfAOqPLlcN321U8aJgczYnPzDAkCA057k1dMFf5NXd8t+eHjhsrvh7sj0OqcXY4LVHvye3tAFNEAK2OF43HGd4aXZ/AGv8eb9xBtjnbekwj1/ldE+uhDHLNtxUnIWj5hYZNavku6DynfkTqVfcJR5hivckfN9q4ubmpyLjgHkI8CQJzpHNNH6ukI+LZVQB4xop6PQLiUptcGR6xbaq0egojfKOgIj89rBaf31OqFs9z710mnTyR4RCADZG8mPiRHkq41omeDdcVB7VUduAAN8j0Dsb648DcfovrNMRpvD0QR+tHd2i5NK9ELj/rj8IVLmVttCvvmrltHtkjxtqTbbancfFCP5V1hrRfkx6bCOiAe0fLQT+2SQD44cAz1t1sUWPNxHu4j39ii9wlH0xpGPgRHwwANCR5geizuMkJhcLRmwGksiH4AA+MfxmPHhRg2QB2SA0I8+0fgl9SSerIjwtnpO4/3ceFUAb5HoK00Di8Tb2IAA98PSCT4zj6Zx+yoD50fIO9XaujHj4gAA0I+U8fL2PozkMejzPR5oo/xjuyePFPHvvQKCrqRI+M8fJWFC2er0OOc7qPo8iK6WAARVHw4140YBXo90i2yOBQ3lt4C5Adz17Oj4fo5ymnHzDy0WlfzCEjUfjKPM9H8pl4LsfjAg7kea8Ax4QmUgHgx6eeHotPl4ATXSnYfYXzvxADcMfXuPd3H68G1+tay48+0eUgPMC+7yuB4x9n9hIoyO43kXH1gnXaUe548LZ6tKDxnH5ijzYX014/EJvygPXPHjxjwztpeY9LgXIjjA9HogAAI+DOK0+8fL2P5IxhgANLx7zo83G714lspHlcd+Q+Eno+G9RE+P4dH2VPbWx+PY+9se1eP9uxjxj0cfFVT2n3XWKcVsAc0j4xR8948h8e2br2F+w8d/gy/PHf687j8PmHlzYGx/lCT4/Fcf0PkCRAVBXbrx/2qfDU7ciATfH9BYzmwB7Y8YZGUePHfHsNuO6E/rI8hityJADDHqYACbtvw4+Q8fO+PgRH+krZPR6byM3se/aUn5HporKXyvkI9Qbg4yPBvuizO33x6sY8r8f8CPjAAdfjyvSiY3ANGAVOPUPHrhj2zm7SoCO0fGGPY/H1Gp1Mnvw4+Ah3fVYM9H7cNfAAC34+MQAd+PXzuybj0wHsFzf78fm+Ps0yW+ALgR8PTdtC6aY44hH39j5IHq9o+qr67+PXfH4k3R2SG54/T8fqanzeLqGj7fx8v48Oz3odTkqbxUj/rx7d49BcvD1bda4L3j456+n22P8e/ePQ/HyDvcl7rTdtK5vP+d+AnjxjxDx5DFYcYA0GIxnHpJj7Tx91sfu1Wt2rLaZ4zj1rR4/atH0ebRzDPHpnj33oA4E/ncfz8PPNHhzO9569WrUOUe9qPvIr0bs+vErfNMQ8eYBPgRH2fj4/x/W4/1kfBXTGtBl5j7IJ7QE+oq6MBPm1H4zj+Ex+4XAasA3s3OzuqkD6BnuZ4+P8fbs+++HjskEGx4HOOI8fC+PPPHu067wJ4F4+MCf7OPq/Hn4ANFR/dY+5TQoiP5yV/mj+NMZZI8LEezKSfNjpGj6yB+oY/k8ePGPaOQHQTx10nwI+gGuA2b0NHuQTwtnpmZzGcelBPSFHnlIabY+yFEurXerwRnV3YNiDx7549Y8eUCP3mdnI49EJ40E+XQBjOPEPH9Zj6vx+9dAyiAC8P53pj2jyrR6iI8fDHhMzfcthxPVwYyxiAnROoGPRjMesj2Rx6X93KMffAzTgn8/D6SuFrNtMSvIl7adz1iVz/7qeUcA8f+Koh/H3oT2NMdNI+Ecf5iNSFHsLq8wACen2MUeH3QHbHgBp+guYWncVlG4VH1ZR7Nj5Vudc4/YGmkAA+dH5gAOhx7pydhZ3Ljj7xH3gyB3h/1o/4gAWhP2fH4GXawADtY/jy35ePzXZxXj/8Xv1Y/48e4O9jKenXwK2x421IZLAvSg3XH6oTxCvvecAJsfOvXesFgfU0Ox6bo9jsfzSP+Eu+gAC8J8zkvMABm2PlzAT4T0sJ/+if/5vBGn5jH4FPUwADhE8jUeehPSwn6DjxqHuz6dP4AFiPmdHk7FFCJ+7lWZyWmBP6tHkvD4yntno/+DH4C3qjTqnJxSR7QaPfbRubgf2KKBjwrR4JAAy+vtZdDuAb2x7fAAGY8LZ6IWPoBH8tj2TO55CuyBNx2PLKgMl8N4yGzEn+kAmVwYoV0Vj4kR6o2MyHyRRtjBHpCj/TUc74+p7QjYgXB2Z719eUcrmNgR792PELHzWx5MAHcCQP0f8CPHi5+UT+XR9xE9NdKmoAttH1pjxAJ5Po8UkBfe4bocncj98x+IY8wy7K2P4XH+2PS7R4GY974eevYWKzLXo2c5ePw/njGy6PF+Ht1GP49Z0/gKEe9hPJLH1EjxtqXsABkcDGk9Magd0T/vh4ZT0y/wZRAGvHxl0xjR46YAQgQNMAgGegZK1wduVE/zX63uPChH9J3WmJ4VE9zsex2P8hH2yj989ZKaLs3zJ2dDAAGzjzp/HIkBhUeDZAC2emEcyAHozE+8zCV6PYqRu0j6snsbE+Z97YLg/aIXfD52J6Qo/ReBM6P31HtSM2rbvFVM+zvpgnG6euCj80+iKo8AcecjADImKwtxvLcIg89wB3uPmHloMT4aR7dE+m0frpD2xgdBY+nMYVC4PJ6kGPuIn11PTFx+BY9Usfy2PfPri+j0k+HzCE30e7Tr99H/zjz5R/KF3dc7S2P1LHuMGj/7suI+mUek6PLoe3+jyX+gt8t4sfJCPwDH+fw6Ax6eT128esOPOn8fVawgx/gY97ifEGPj4t4NuB2UbQY8dUeC2PXkpyEajOPrk314MfjJzMdHohj+NR+D2tm2OFCPatH0Oj47R/M4/7PP4VzGj4JpPRTVIAI9yMfZSPY87uuPW6UET48PifZSPNzzv9e3Dbo7KFF4ehSPAonuHnW+J9I48EABueP16u72x8fx5Ik+m2OFiPbvro8SM/R6HI+8ieLIjSY+kFPfoAFexTbh6kGPMEnyxj6uJ9PE+xifTaP9UHv/EQnx+U4+yMeMU2Q1TjumUrR/XD01ieTDzc419cPe2Hr68B9m6XPrUd1V46iuJ+IisU07FmP57Hv6fcCABNo8z0f7Y9/0T2+bUlsrHI8gSfdxPdGehlADJJ4Ld1PieNxPiRHi/DxHkbMk+kROH45yeH5iT2Wx8Uk+ZUevi3OFgbCj9YuY0k8hSfnxPke4V8T/Sx/pI+TvX75b1Qbq2j2CJ/to+r+udXnYHH9GXRygGI6f+kviS3N0xmfD+Lm/OY8jO7vK4O6xjyT4+LfGo+XCeRGPloiIfjyax7NY+sLuwOPpUn+qj8KzbRNNJj6dnNwknjAj5lFbBcOCsvUPGC2epWPQJuF0wg5zGDY9NpHxRq+Nwcdq1ocfyegQ+HvzQ6/7Zgb1gce5oc3tj1APcUx4GyMXUey+2ftKa6j+NR+ADvGwewFbTVH3Rd6wVrXADHrgFs9KXrTnY6hJ6Do/bCf5NXPbHwOPa7HuXaf6DXyLtZ+Hmhj/jx9pY9ITDZ6rm7T8+V07x9m48W+uW6tSvm5yuY+LcSE//wBkhPt/ehqIyQHcVzvL7afpPAjGUoPQDJ5KddXtDEPbxbl9cT1kJ+BVbM7Wt3nLPuwBAGsx5wWuPwAauPI9RtgN8ZttqI+1secFrN9+qkJ5kWZpCcT1bHJADIT19c87ADuoEdgAvCP45cQXY1Px7EVAeuHfGPmPHgXj8p9ZYo+ZwfkydGFHg1j2QJ8MCc54jGGPiRH68Y4WS4Z50g0eT1Tn/fC0j7GPMONdkMfNVLVF/eIgB6J73Y/ShPAM9YtHrQj7R0/7tUyUfAiPR/TkwjE0J+6N205awdVmoTveXpNx8soDckfGePlcx9PXejJ98k/HvGiNzt3H07j8sKeZuPB0u1Xd/QVt3W7BZY1YBV6OVJPNEn5ij45IG9CckCe3CPxoeYnBwtx70E+MbhBF9OQlTA3SxR4CqfGdOyTEOGtpBPaYeGR8tiK2sSPX1Hxa44oJ52E/ywAwxP3fSjWj2K/oBE+tlvG8PkG1d/D+k7tt4+14e46PXZb5RrZ1x54o/MJ7uKPQ+HrOT2pJ8P1f+xW5FbZ+H8tAC3h8RE9IUfPSPptjiOwDXgGhI+/we8RtZ+H2xXgfh5rk8kWxROFfAN99duEq+5qMS3zQWP+dHlyj6x7rHLfD3aBaPZUnwXjyyXtlI/oruTJB+G7hF4/2S72I/Oh39E9CXzheT2brqyI8pifYZPP/u1I3ZgR6y+eiF79iP5LANeT4rqw3k+0rv3tAQXuveT9Ex7x+tXHgEgA58nw9S3sobh51zGGXaPd5bs+vQKx8yOuYMeouPM8n/eT0fTEPk/ZiSPy3e8nvkTxPJ+VI/6c3L5PeJAO9j0aR6KE/giAKadUDgV3UOFx9M4+utzLmA+BH06BYe08SI+SEefunA/gPKxRtXsA8N0m7pjTmwa4aTcIVOJ4+VsfyFdsV4fvj8nx/94/4EekaP8rAJ/j5gAAWI9dK7UA9nzHzxLDnJ/tXe9J6V5PH8n9eTx9VbdRh72vdb9XZZ/3OQswDJgCXJ7fZP0sHOBTynPpWk8VCfs+PEPH3KhNAR9do8/+7HE9qFHha0yY7tPYDPyfmqPdguwIoAAR/bY9TAB75PPRH6wT0bx96AAKEeFs9mCn8MMrYrwkre0F2DWueaQG/Xd3FZHACPMfGKPKbHquj95x+JT0v67VenyIby07dxE6nMNB0B0xdEAnhVgOp5fSd3acfHaPMjESOpG6jCY3AjmrfS9bdbOMcfYgBqQ8E96/InBLHwcuPgR91sn90fgY9UtH5wgN+J6J49hseHjq90n2Kj4ER+8t1ISoMKg+odtpD4iDp1tMPT5+mPOvHisZw8TwRI8YMfTbHrkntSJzKJ7wY+hKJtJrndH+DI1BNf+EAkyfYJrXPNt1GDouggU8XsfFyPkvH6qT9FVWrH1UynlZPpCnpUYy3x4oCyoAA6RbRars3PYfh8l48+c7NSP4SnnGSW0J+bCHEROTJBJSny9j0YzFto8hVmXaPvG4FV05E/1l4DyEfyJAWmycpT7Mp8IY9cMeiNXFWUo0j+/88J6KFcf+uPWeH2aZPgR+D2u62SryPoBHy0/YoUbGF2akeHOAbrHquDMJxOSY/DIe9HwNhASygHigH6ScHifoqq63HiAT55x8OCfTAAKhPWmyJWPRyuClI+VKfvK4ndHqzgRygCoU9JKeGHDyBHi/D4ax4L4++MfKFPM9HsoT4yJ5gehA7SFiifAgSXj0tx6jWyJ0ej+nldL68jzuR/8E+TyfrBPg4ntay90x8/VdA1vv1XYSnmUT0sx9RU9UKetDrCFO+3zBSR54o8EEApgAsUdgVj9Kbq+d0MqfuzNBRl5lT6U7toU914eNOPRCn+oj/wp/gU+gEeZGIv9pnKj3Fu5Qp1A1nKLcblUIfDz/49lI9pbvd/MVcn85T7yR7zt3uSfomPkKH6qa6206mY/NUewfd1GruUN2Dyczo8Mavvsrijo4Fjz1x5v12lA3maPekn16CRxq4UG0t2mGKPFZe2Uj/Cyf41cN9Hm09GG+6gjxgR+JNNqhvBG9Js/e0j0WW52U/Ax7p6PoRHi6T4wR8aT1lSebbd9L+hEgMc5YjsMoi6gpPqpx4wU/gR7I90IFDzuPMNHiBTyyx6HtR8YDo5Pcph4/j64R8mY8wgBoVPEVHsqTxX4cprMC1vkZPp7HpWPRKh/Nu1gcelY9UqHgdPd1R9qo+FUB18Pdanual8KQ/FQ9zUufyXQp1prd39odbU/BkeMndc+Hlh09LW+ikPPyeAlP7BQTf3eKx8/E9wd7KhPSEwwBj3+J7F9cf1AE1PNfwKIjxtqXK2FIUfvwzwAe8pj/ux7XE8iseBVIZHAiIT5hJ+w0y50eOUA+pTm7Cxjqz/4Ag+OrY9GSnh0T7ix6XU8eceeXr26n76O1GG6YscYBNHCP9tb+MNxdu798uTK2Hp8VVPYQT6CDY2icZhuqXdFQn8/D17W7pE+m2O4aP9QdiYgFMKbkOPOKf309TAAM4jzBfbpACkUfElPGulxVfR2ULrQ/GCf+BPl7HxP1xwAFNo8Q7vLl9Kl/GNj51J9+GdbKHOwEbpQEQj0Oh+Ivt1GGOukpGe4IZ8/+ELrNat7O6PYN186MIZS+6o9saf16Po+HjcN1xp6ILiDPXt0Pv6VnjT187s7U+N1u5Y7zdb89D63W5u6N1x6I1PC+HzzJwlY4B1eDUf68jSse+GJ6Dx5A91LHmS5P2XHgXdyZfYuI9gJBmrH6s1+IT+cPvgU9VO6BaZzFHywAPrR9AjcvMebpQseHhLI8Sp/SkBjUfrnjVFHulnU+k9VBdAhEz8PpnHmXjzpR+oysUGs/tQhBzaZvWsVaSI90ZWKDWeXem1QGGDYpp2H4fvOPg1j92oGhuFxZj/EekxQELp9nV7qgni090PbD1xXpH3wIxE6+yFE8EfFd3TRMQd9lFp+P0vAR2QHj+WnhF022W6/ORhafE5rdIAQAAN6A0JHnSj8WDasJmuTxE+PxWnxXV8gx+VXA7EfuMP+9b3jD6mC5Ee2CiwZKPhxrld04yBHFY+E1KDSP2yurRj7f3obI9TCf/GPfZAY3V9c3tAUHAx6WOe/7RTCT8Ix8w8u+Mf+AAM4n5fwyr0dZic1UeaPAXu7l8QAZC32o9LY8MTrAe7xShwxG8XldGqfmTzFOagOXa+R+9XfpjPqm9l7juZPWtZb/o861HB474gntttlbx/e48By7cXdpEngJT0fR/vBvNKeqVwPb3RZsVDU/0E/vJ6Q5P0WH9SNwKrbiw+2h7/og/XHsFj9eR4/k9XEeoJjFGepJnfAR5Od0sO69FZd21qYs2KrYcScbUAK9Iekbrz/RBVZjo+uKf77Ait1xDT8Qx6gmPTuNzFD5nCd+kkhC9/rfN7vFYnHj2iKI41G8sjdRumJ2z+x53Ao1v7sYE0V86AAAxxE2ZJFt4BGR/i4ne2Js9+uAQbdYLX1UA9TkJdI0SEdQbdY86Zl3Ecu4dI4SzqcsBsuMedPXZdkxozqDcfGeWT5V2rSShsps1NS5YbfilGUUAMLuiVndx6c7vCZAB0PGi5us9o5Ph52bO66eVUA+unxdXRGImN0+m6fbajhcT3kI2Aket08fzujdP5AAE3T/G0dtqOjzmwDX/TZlBPZbp7OsPHbX5FrAfWlHt6LkalxC83ZUDXz7pk5s0POdcqNS7m+Vz6Ix5/DyHp7ASNTNn0Lz63k9Mt3o2/FCNmNu5ujXxFxnT/rMdjp1Z6eLG37jb5pa2c2fD09rKGn8gL4gKu4fg9awI+dA2W+8xh5lOnWEteASeQtmP53bLjevT0/1qEZ0Wtn+H7gSgZfgS3p57p3MemnvAZVsnLox+rewSehAAedPrzZ5vT/E29hbPW36km3ebb2ta7eHpy7MZNugNbn/j6T0/n0/4iP5Nvd4IqBiIXQ/Ya6tiByJO3c9EKhzlt6lHtqbcxFmGJznhrrwY/S2dlpdGBXaHHMgAWjxg4eaGWtnhH5tp18x0ZwLZ6fx1y1kWkv0Ece0Eq2l2cFPdwM6ZdPlsAYoLeK2bJ0MTDOTaXoSd6jvfxtnFhUp4B0ojttL3Za+3nqi9Nqtn5crmrZ5pa67S8nTMXLWBO9L6Ja5a9Mv3h8Ov9n44bd7R8FI6TXbxbjWzHivT5ER5ORCMPCl9PVEeyvT13cN5txvBO0t2MRG+AAXrZp/PcxoFDBvwrX/WztHZlxxzazvPXdrmWpFcLHZnxx8mLdQM/1ZHgkcsbZ2Yj2vycTbPYdnliP55lnxnUi29r7fQzsqVrGLbhLc8kroLbNzJPqGgGy7ofXVIzo2SdsrXUSjmox7K60y/YjCMZCJr5jqun05J4sVY7bMX9u9WzdTjwigJszt7bO95G2XGAAAV/8iPzZOR2zGszp9sypSkV09kLATzN81R+C9zPUcSiNYXu4bdjzltds+lEZC3MmrX2LL9+u3ds1atZRNd9qHf9PUzh//Tw6/bPbMNRHJGjqAAewz8a2+El0RGe72z0Rn6ON693oiiPbZGOoj4pH/XnbeZHE71wtnIGXcour/TzvmYA7NHhbqLb5ppPt011ucLjc6kfa+33LOqDs5MbpNI+4WB7VdgxuuNt1qk/KM+lNqSajDa1hFx9Pp7R2vC62F13NY579Q/2ta1NdkRbi2323gXnK8ohB6M9qTb6OzqLbnfMzR2apyMON3+jPO+ZwAJOwZ9rbfhpOAlmyW759a+4i6VBPMGfVR3RMRkZs0te4HbddtuxOze61j3W543cHbcztvc3rx170/pqV7Dn935+mvC9t61tFh7dZbOM+QxmM/T4nZnTs0WztwutREAEjPd8bslcxfoZE7eUsOzOzkf4HVDsBtbcbeqHnsNM49OnmIxq48IGM/GfHR9TayKzswCZ7GqKixHazXeXRi9t6Am/oWeObuV2ds4y0vtuom/wmPPtu5LdV0ngQaux/c7717+mtYjyXZ7/o2JztLp0P6fBb3CeewDt9GrrxnM3kAiTP3LZkZs+B25tiOaqAXYj9sR1T+wjyediN2xGrjzRXZv8AOh4zKKtlIuqJbB02g909AdVwKNQbgSN9nJn7kz2hR4qKuS1G3i9rXZpkgLIXD+foabWwWrAktyijydOYXXdDdnybjYnus2awy0bjHep3uZuzcjR1A29XEaW7NxuPd/Dem5m3My5tby0N6meduzEunoVxl9buK0PCp3vDdx3Z/hN0lMdokTSdvQtrATR4cY9lMZkyf6UenmX6FrvfT0dABqSRkmBMMjZCwWFq3ZR/ujM+WAWXrPpnyrW33teGaMy6elBdDXO2MQFD2YCo8s76+2jAGR9U3Y4ADglvI9n34jE9Hqzcy525AffBmexdPWmyEjfdPa4jM/o5GozPMZn2aU3lR+C7ft9mCuz/Nr8Gc5mIEtHND66HwjDi16Lt5z2eAnNEJHMsnNJVpLt6oeDRI9Xt2iF3CIRzLt+KEbASOj+H0/sMUt7sz/2Z/zbPk5mLLrTHV0xN+qDZh6OZJ6oZjskgGrt5Ym6j0Na9nOCSR6h9qT0QWY+M8pNvK9PZwZoSI82retZehvmNaI4unnXo5okYG7cT2Xhfruunp3s6gADS51C6GodrSXZkEM98GYi7MQs6QQz3vZ4UAA+Z5l0O/UeEJT6+Gk5AJ3uY8SNA3HV2rvOhiPs0Wa6fssh8AWU9sfZ3Ka2e4z/TMlGeUaPkuhxps/EkeqBvc7WuwdBOgA/aysuHz7OeAvS+zb3b4pI9M+8KSM686pdrlfZ2pI2kPqhNvUM7VTP6TumpI+rtcOtc6c5ARWUPbx+nRWZ6CSNxJaijPPSb0Hd8j24H7MS0fBkjuM1rHt5doZMXNK9GQKj3m5jeIzqzpoWM3xnkAA6HjWaOJVWZHzPmzAIbXVGN1oACPp//3OoS69vLKtR6Uz44PufetrmeKn0ZVsnD6/Mm4O7vlz7xLPazZkHT/9QGks/ua7ZLPJG+8Pa/v2eMGBk+WtGAWPZ0EXdpzs6GloGfkDPwFVl9lwvzvUs/sDmpLP2zAcQXe+EekM9jmfq/ws2Ru5N4fzogHMzCJ7DP1i5n4d34YF7eA90fkBzI+npOXb2XG0s/opHlzPlFrpC64v9fdRfevvyGdElnlbk0WXFCs94g3hmjH/l51a4bp8pNvu6fFzdm9HqlI3FZ80s9up6HLPNYNTYGyt7YYHOLdH1bXeZtv0cxvtcks9zZwPHjIRnh4G6voCeBuk5nm8jhfOuyILfEZg3fvhm6BdZC58Qc/jWsJn3SDnz2A5ATkfT1wLrpZeLK61NAl5n5zY5vk8U8fRWIq1dAu+sKSGJztf0PWc6FBdWSpowc3XOYsIAjWfrjzZg511I4pu6sHMepGJMXf/Dqhj4Q+H52vLiBikIbK5/6gDzp53N38WeprwAwe5QXXXObgF136fzc9yeAP/I8s7tjSPxDmi/rls7s6zzUknixDCWfhIzaW+s6z3ALuecvm56rrP01np6zx1Klv7dfMSRcjvggVIc/QMcgXMv9vW/YH/bvoXTlZ/ss++uXcjP5nbmpJISzv5KPmfvsvHcNnhKzw5Z5hWB/9nuarpW50rxzhlpoq3RWHbPogzkToc+oU5Uxc9DmNAA8unkfo4MbqVdOMQB3rPgfRkHZzUx7Yy17pGrtYjSew9I7CgBH08WEA+3TpnRm4PfTUb4s8CWfTBA6w5/66JSAG50+pdnPhzOw5iZo1CLvsM/Dfu4xttlnyqzyFZ6xs/nDn7VdUScIZYzcOZ3HOQZHcJAgcpch108+Axs8K2fkKjSGRkyz+jLozXcWzg6IAVgeM/neVkbjNMqC7fForVa1yo4v7s5s/4CAYY97OutHXeRkdmyNL7nPddAjrgmzxP2e83MqrnTDTNNnl6zwJZ7es9z+6oiA8LH+mW+Esc6XWXcRUWPr31DZ+MXucmN1YseNBz6n8MDIzHvAQF3eWfVjrOxVgAg26UbOMwBi6NBz+vV0Wz0Dud0yMLVHuRzq51kzI9Fi9OKfQV7vLAdNn3ZAC8AHts8K07Vrbb5b0dYdpZ4lWM9qAXu1Q3gCvnRYZ8dYAj6fTaAHdn896+qOe/TcW/v2h3AJ1kzgDuOfQAAd2fWxdqOgCY84uA9BKe62etLPDln/lKDdW47M9Kumqx9k4u5mcziU5yyMFOu/RzzZnkMc+ZZ4cevzBG/RzpsRu/T5b0eqyOHi6osjp7AbTnZ6x9N5fgnWp7PeVn5Co4ROb28gdmeesjGy1li3d5Z5D8fs2fXLPyWoA1Y/cO6FOvF3WcxzWWLpbI927svs+JWfdkA1Y5/2xEDuZ+XNZ273BqLEAGXcwpUatSPsS7nZdCC575dydNc28joQAE0jU/77sXf/Z4cs8wOf3wjeNn1f99lZ40s/w2fnlbZp1jKuOgvuD2t+S7TOjtY5yLXakuYjKcQ5HZ4z6AiSUQK9injOsW/XbhznCR9sG6LkY2KeSoh613w9nzm65oebrnMITm7GgcLr8fxyiO51s+4OfMbPjbOgrt4Q5+PIBuRG1RzPlnyLXf2Fasesv2ePjdW9nu5axQ5/ByPv1GAddrpms2QGDimTVg4wIN7PzDnsBI6w54xV05S7+rP9mQDwczYudbXO8OfN/33GJ7f98aQcFqL6VmyvQ/8YgSz/pkdMtvHrnMTzxHH0GnY8Loh9zeWfJzrijR4wQCMUDbs9pj70XjoQAK86w32ebSNJmGYLrwjVvGUvJ4a4F38TZ6Bj+5u44Ym89aSX3xdGT6d6n4JAKHAK88cuF0aV+1nLbnncx5icobCEEAlb9aOujifYUUa8F1sq7Zszbjns+taLZ/5s8dlGlMzOEgP/s2q0Y8WuqDuPFr641oNI2e0eKDndj6PFrwDt7co4U54gwCT86sp1udnjhz0PrstXDrK7OBg2VAFOzwcp6DXMsbmrOjE7R5VAI1ZfOzbtYnMpHMyCfSexlI9iauVa3ey4p7AG8wykmZgKsJmeFFdANAQz6KzvuWc9anOStjiXHkmB0YK7snsH/v0uP+I7/AgK8Z6NyM32fWbP4rr4gAFfp6tyN3/ustDqjVmS63BYdszeuDHB6jzapyJd1uU/9xOupGxjP3uRzic21x+6aPPTbTuzMqgAyyaydUsnNsmmQzPFeR7VdeprvSc+/OexR3uAZontz2sbxjTtAg0UjDQR8Ms1ImdyM8hOKNJz+RRpMfSXkaTyuhXXIXPU+RmCp9XkaWH2GjuuojI+niycyRuasnNatNNbPV3HrKPc5OfMM8EVPPdrD3H2N109x7qgCMuemUjeByAmo4S5+ubd9CvZ8jv3HzI4v+TZXyPtyBiSANCxsUVl1ccSnPGHm9LD6w587s+lOYwQDN6faJAxyZ1ec+rsZSTM88Q1pzXvbxdXdwACV09QevOytEdZ0XI1VOePLUwu7fMjMk718c6vUY9nMQG2rTdzXhhjt8xOaQoPAiwGBdJ6516vSLigPN12RGJCjbI75ks93+rsc8Jy6EizjSe2mc4jZ6uPN+TuCCjGhAQ6/ZbFag3DvxxmKzJyAd8I2xboKnNSnnNpzURn7Vzxri/Ip16ue1aMgEe/w48rWbunNGznPFdiIRs6c1ri8tf1MGMBH9bN15tM2wJ6xpxiFGwez8WIZWzz77teM9p8fGrDUuRq03YzdaabN+Gnvpz/ROp4/VoUf7l0AzmyZrKLO33F6h6zOs+ROezvDphRnGBHc583bcDOFj1zPfH9H09255KxS9ufeBd81hjlz+xkb1XPmb6kfgUlT0kV/QrqmoNai6cAAXM5wGc/BO99uvpO6xvdFmdrtzwJZ57c8bue8ijshcOOjrK0cyl0lFH3qDBigFdzxUUfXc9EnXD3PiE7jFXUtSCpnNjtXj99Y7nzrM60UchnPOAAB3Pyh5odz7DOZqV3zue/DTyiuzidw3+COKN24YrWrmd15Nz0cmfZaN6zmm3PENh0Dz+WK910/GzmjArgtTzEHPWK/RsPQefs9txpRjiSOfTCiV1GBWJoE7d1uFM62mY/yMJK63Zzp6u81zyK57NzcQg3UYEeZnn1z34aeDnOWwBr3YXVxyOcxXK9zM8Ry6HQ9YF4LYXVKgEvc++TucUzkZn4mzxHLqznMmuedijtC9vVz4XObmV1WjmDfTnaZ19M5ndbNc8PFGazPbk7x168IYEbXN72e7GgdFnlFd6YaahE9J4BStzJU71Dz9gdY2KNDNnEbPWbnkoGyqW6c+sTZwX2r5LRokAN5Z+bqPdLmjZz8k5k9c9qUb6nfGee5Nz1G50h67Hrr+5Rizmz9zaY50+c0bOfDs+YAB43Ps07kfF3fObc4BnsAFAkFTniVo7yOcIyMQ+4ZFzEgAbyz/0J9Tuc97707nttRp5RyvkcCuCYHn4n94XbymKc52ekL2nuWt+dqj1vMo3A580euW/gKl75KD2SV/3c4UleCOeQxzwjnrq6xkZ+YbNvuJsXPrxn2fNwuLqU/hWPXwDzmEAGSI9vZ6DjNGSviVHVS+kxWAg5//CcuHh3jEjg+1WPWAx6wPNcDqf6rsAyTLOkCJ+izsUl6ADzrANnZzYC68YAAL2eIBXFauu8o1WrqQehmNGtIAyInpRc9DO5W8+mNGLsjvTnjtXYM5F82Nej7yQriVVibo7xZ7LA9HdXanPH6AKfs1BuDyl026fTHP7T1jQ/TivbOzOOLmhzTGuu0UT/OxFQqNXevJLPa852iI1kU9qc/TPWDVjuhL2nnWSYgSdTHtmwlzVFRq0o1VUZH0+0VHK0zoMT5o/dO57q11JLm4Hj83nhcc6YaZRF17ef8JAqs79WnRM57R7PMvFHJXOq5rDXfJ4fEqPYVGJBzbocJnM26vabHM4+eEqz8J56dz3o45+1Zo9nLlddkRltnftEbPnP9LmHPA44nrCDyi9eGs+jLnWskmL1hcT5lnYaJfPue93PJWKSOd+63g8WvldGgCjI/R+TXeS9dFyPM1H+EjvIEfiz3z69ss8vLm9AFBmu/sK8VrpH0/xVHLnU9Vn2sT6QLpNc/fgBRxPCh57Ptwr54Es/XWe8HjS+cBEIPFiCKqPwa7NdzUG4TL218ue+XMqHmKnPDVR2uc2QWctoACWeWlgBqximV2G9bC7eJ27jrPGoRoKDxGE/jjeY6743P9EntFc0p/A189uRHmaj3lnors/nZ7xXPv9GG2dCtOpwiMpZ8xJcXy3GYjjrbnao1764111hueT0zPBnjOY9n5+hN0m+fTJdybOuXz/VB/DetfiBuijR1nnzzyeZvd88cWeAQ9VBUQBzyGq8l51PzuewztfnyNcym9crKs8OfAajItO3nz/droTSPl/B6Isnqu9A3EKLpH09z7gddzqq5zGo+L58gXfyjBoUAsLV53z/bZ/m12Z/gHnrocrtuz18W6fGO2fQjdmFzRg8XZH57zs93DnwCzPoW7yz6SZpBLf8lnQUAmUnwhd6I5+FF1bwlEZdpC7zns8VZ4YHO9+e8XPo5nu4c2755fc9/LnD3r0w7i8s3GudYXfdmehTP03bmQz8W04czee/gDLPcXu7ZgC3K9zXO21H5LP2q6+y2FO6cUF3vvXwyXU0VznszNJ6Vg+dRXrz9ojnlWz6Fx4eespWeDdPXMR+XgGJzq2k/IBeoPr6A5vaT/MzqCs94OewrPoeniws8OubN504fWbpPeH14gNyIsY53PyeG7F3DdWvyd8Qa6+k8UfXzPP/VnrdczENeAldyBHYNrFnn7gL4fsbbqP7rnlEIu25grJC8GeZ2OsB2qVLRhHntY+J9dJCcOZuh6jk9Ri0t/YTleM9XvO5FqgQZvlLfdcal2PpLu/1zPrhrJd0h0/TiMymezIAzucIqc88tF0+u5LvDAvl9Rri2+dLqS2APABb6j2o1gPO4oYQCfApTGzOAe7Hj+o27QDtndpGHKl3+X1wnzwsWcOtGgNGml3KxZlpd1huZs89+Dhc7PWHRuC0+FfoTt0aueBl3JxZijcwVMUoN2YNHwVrUiriznYoke6KveWe5l3aPRsho54G6FZ2I2fs3h8EVzvnZkF5Y3MlfXaDdjNu/zM9ETmxc/mKv0E9XDRiRo/B5/tJCiBehGjCm5zhc6nJ6y1tu9nHBznAX8Fa3Yq+kVtabm5uzOm52bs+aZ4V0/xueVg7JjR1bzxdkZkSMeagYLYQxn5uT8Y0ZM2SjBeDZdDJRlzc8mTMlEDwjHoV3+1ZqizzrTq5WsjyfDCjOU7/ko+iu6kM+3eH55P+wXqnp8vJ6x+tzbmjXP7GejveyQh673veGfTtz5wX9J3cfJ5u+vXzGQOj+nN+4NCnZ9K3NcjWkFrawbycl6J3oxPMY+HfSzpwX+Jo+cF7FXcdbnMAvhTR4K07Ku5kAAWeehmzKq7rJQ3n58JcOTNGBcQPpZgiQNyuZH6MszvStzSETnk4yhQk+8/s+eMFPhq7o0a820aL8+8/XGNzKKAOHs+7KbPSMrNmMPPwzieNzw4Y/++uZbnmA99LRuRTy6u7xC/LbnSNTzmu/83c8wAVC5o672iAObrqf10EtHeaNvbnPtEoe+xUc4yF9sT0cVut+9I5nz83fOWbhC/g7mZ+jAEZyZIytOYTXffpvwG9iO5/xy2BeHl6dBH6NnPuLRt+z9mu6JaP+87USNA251Do40uc/M+k7maWjz8R1Mz9va6GaNU7mWWjU5h/sz4zuYUl1T+fTLbUwiVJz1zuf0M+dru+dzaxj1gc2S0dSWvri7Rdzvpu6VoxLudlaNShnpdzlPnhpc+NyZj0+ohuIayHLnzVoytZfJC8mhHynPMK1QhcDMka389Ua7jDzZrR1Do9VeBPXdJbBzLozx8FqlwWAGnc+3XX8EkTrRsEQHeu9JgCkBegFds/1qsfS39fOC/vrv3dzOrR06zx75/a6Dd1Bq9zre5t/zzvueA3c2A1QN3B4RDs3ayLqg3dTmHs+3m5ugNd5RNeT7ftWeyvQOfnk/8E9QAzmOROfWXr0Zn2zo4xADO8McufhlPeG7i4q+PueraPX/X584n5u9TzyADZMidshey5dPfloC3UZZ8oICkoBG9zMYXh/vbgeY9N2d2fIgGHe5rvc+xu+4mtjtG8lzk7Rwlz8gXAsKMj7nXd9Q1Vg0L3v2dCgDCbuZ1XELx2fczQDaot3VVm0ddp4XqGXQEUcM6Mj6ePPP7Y7tUI1n5a6rN7G699zgQ53dz1ewEP3PX/XOdAJoRjRcDivvHM/hdvlzPfbRnvtwp581F2s+Hq/Pdm7sZD0Y1t87Ov7nJiHZzuxygHJno83fC+HRWtTdngnc5JZ523PDNGILL44cf2zyF55090slW8HjYN13Gt3qboJWqGceCa3+gL3wG0TW9As/PmfJy35TR/kN9VHdZN0iufUIvWW7/0z2eF5Y6PiF2zzHVvh9sz5rZ9NU8jTbh9weQNx8lwUDZPc88uet/BWZVrKo/92+KSMP82IFrcGMFTXSBp/hZOJPhRtrobWzXQAb6drs9827A1PD2l2Uc5I5/5SOgi6Lwvnx14UL0/584SPYkPMC4keukZ3fTuburMoi6iQvDlupWzwlOdVZ2pRnyYzLXsWpz771JhCCLWelPPFwXjez15F7CetfkuggXHtR22o/Wp7Ep1JRe1QjzanqYG+KEb1f3O6fUrPXMRt3Tx7p9Y50tbvq1PyOgXtT5kM4yi99A3iUjZ85l3T2lZ67vAFReqHdEWrlVD1hFvHNM7a6MnPYQATmz3cOiUd1MdGGrPevn1Zyz/O+IAAj6e0+3kWujLz450ftJC56fbhAPOnw6a90keGc/HTWNdd2vnrl64urt6i9sBXm8jR/nt9TzbW8Ix0AAAh8ic0sC6a1ffA2DG9CTn1YZxDbpAGNxRm009YxW/cz7YUa9rcNQAHrPvH18Fa3LrvbQBhHmJfPHk8P2s6hp/+3e1dHgAj90zeNzyGyeE88pHnLv+xGn+OsyPp96c8c27tLP2M10aABVsdpjvpsmN1DX+nhzwCjZ4qPOY7uqjzKAxmo8yVZ4Kd2ZReFujVe5rAL3d58PER26ez5EG4brwW8YAldnfeRfEtraMX13T+lZ7qi9m6fVC4p6H0IW1Jp4Z3eXofaHwO45+M6090fPDdQxP1QbhdumKO9zu5nIeq6f3w35zn+Nz5kLYBt1yBGJQXhc56cz44PqOPPB7WEejpx5tpwB1O8cH30durjzUEX7CL+6DeF3e4l3+PTxMR6jK0/kG7CMBafaXkIbZplLe4xALanKefpd34YNwax1GDdtBf+zW76jDme7HyVztd8COha2zdDJn+w3xMkF+OssQL6xcA16xoXQ5fpfcYhAuwOHtn4PU+w2ru/Lz1r8Bp7HzWntII5ru460/mjO+MPXEb9Sw9TEaaC+SOfq/PLkXuco37gE9aONrnMTz02nqoI/BF7VogGA2zzPFhZqDcLs0coFd4ymg93r9ur3d3VF+16MjtmUu3RmH7kuyZh+N6Oe7ueDy2cXzO6/LWcD1f2RuqTzwRnuPd3I2cT3einm2nAnfO6Zz5KeY2nNEFmBwbsLnl64Pnu+/bcLW7i936p5h+t25Q4JsfzqGH8z6RenYd3jUZxKf/FkREnr+FrkRUwkfL1d1M6q9XogANVsxrfaQhtKgI8dP7hnk9gNVWdJjPSWftzNRs5rpz+1tiIhuq6Bv63EJazrD6Hh9yodAEW2ojTOnlPS8A26fbNs6erjzwNnoxt3zp6vi+As6hdP+zcXzK2dF8cLfYtnGIXYSh3jz/R0ekOvy6fOYv1m5ukI85EZV09qGfHxnxTZsht810Yobfa6endPTm56qL3lF+Ji/26e1Qj5unnXT8lZ5gS/3dNMYvkdSB3TxtS+Sjd8NvddPkXR3KL0EAHZ+okxevdPc+nqRa1Hp6Ti9Bhe49P6YNmRtxSF9j11ojH68jQ7OkvT/lG9IS8UBfyEvtCXpSj7ga+NCO4K6k9Pj5llPT9ZNk9CMwemM9PhnR/PT0AR/5092xHM9PfoRgvTzcUc9akXO7MmdJentgA2Xp4WyB47Wuj36XxmvT6Pp+70/IBbnmz6WRmunWol5Hb0fNn8wjHenz3cF3p9mjd96fl7EwidpfQHgPq7bPGXmp6dda4Vdc5dC6E9MLrvSlzBnn4IPV8oYKPCL6fsm3Leijlxivp4z+N3LZKlrp0bnJt8E4/TocIh6Uxg++n0RJ3U24abeEwv9PTzTbuQba026u+vUnuv6diAAT9zzfp8JM+pdmSTPDdDxLvdwAFf0/36e1NAYKhnhx5/p6/i8n1Oe7UwRn0GnUPQ7lPdddXhKCy+gbsIwjG/2WvQGedT3tV19ogHAZ+LMtsOXbaIZRrq5a5Ua7aGNcGfc9rGBn9vT26e/J10Sah43PdwWnoeAMmYSk7q2Wkkn0Q4JpozRucoM9F6fRIjtBn3gz3824wLOTGemDP+BpFgzznS64iL7v7w2zjqhrqI6156Vl0TheS6XibZpSc0sa4RbcP8nRDP+a1xb0yk492I/7Bew1zshniEz052aaTeQjHTIjKhnvva/3S9Ui+pdmUEvZvn1x3ToZ9wS/YBf24vBhnq5J0YZ95c8AkeOXPYr9wOgNb2ZsM8Ttm7DPo/nxwzxA55BNcL12XDPMrb3Va565c8M/H0vynwfYt+rc78F73bOYpOgjPrBjGqz3q2/PbORGfXjP5Pp2Iz7e2YeZ11efNqLthn7ilOl5/JNdvtmYNr4ne5RK1g3aPtt5Je5qz+Rn1UjyeFqKM8x2fAXPkqTqhFzsFo0HNr87MHPmI56ozwGdeEi+IdmrSPXKXzAXcSQHQ7ONrX+jP7Rn98W9MZ6B3MsGBhjPN0R6VL0V2eBV3DGegNDHD+8Yz3Ml6+iOUuPK23Mxn5YLxazr11tbWX2OzWnZ330+Ne4wfOQxGNjPLGrxeN3UjcOM+7GfNjP+xn0UE1al+WM/vzPQi9txn+fOGal5PWvXGfibdzqXtRl9jEcpiPGMvCkj+XJ54z6LZ+XbcNvhRR3a7blmI1Sl7+M+QmeMvPden+cj+kZ4s7NXJeOYjUJnpVLw3rZCfDGeBPOz17bsx80iZ/vbfi+e0TPhrj3zs1iZ7fbcuPn8kX9QgX7gQSZ6pM8XBf4hjr7O/WIwC3c773kmeCuz0UX28PQPZ+YmMfs6/yP1sR8gLKyZ+y7OcTnZfd3C7jtL8dobOHOipG1KjP6T8rs/yZ4T/BXHmP4AZ7AVLU8TEYdvcRxH8ijllAOrz3h2+QSOOUBK3Pp5rxdL0rp4DvetFWlTPHD+lUzzo9XSd30dvlTPWpnyzazqZ7oyfFNHdNzO3Z5bs/0F9W7PBxeHbLZpni9L9pF7ko+Slng9z16evza3xObSnMyduEH9MH1vu93wxc9M8PsP53QcVVjHz6qm79M8gReQ79+nkYqa/w650yeyQmiLXg+518L+GZ+Zc88ef0adM4Xins0VteeV39RfitrFTr6Zz4/EbOHORrhzQvVoX4483T54VyMJUe9O3kGX/MzzUklUM+qnWhzbvHn+DL6FztLM9RZPLtD6wXq3T3gl9eS+Z3WbOX4Fn3k6/WZ5wSPKJvdLXua5+6c6Mef0i8zbXFIvBvpjTh+90dGdCum3JWXFUXzhLzQl6eXCDmfbOHLCRg2o+2ru4y/oRfSu3MoOwTL/seZV7Pzmf3XzkNroSjNQWZXM9IXHgovZVs5jGyUUDN7ORWu9zPPLn+dONYZ6Oo/Wp3hn9p5noHc8tZ6vM+IJatAzWA4eguDLobvM9kSAI7Pj5nzdx4T0SdcfgWfFu3BmNvwPRCGY/M+RdmcEjofZwdIyLMZ8ADNOfdu3ye2oCzwBZ/nTekdG6SreNnvq17HEegs/N+fM+zPO1h7t1zp/HKOy9mdIvn5R8oG/ljcws+NlJsLPr61uDY9F3aElOEWeHPAxFn8HtxqgZb7MUWfWCtVFnq3Q7RZ789fIrvF2z3ZV/vsyaEcH7NYDvMe34fO4Lt+xZ9GACcWexag3FnvXT/Rl4Bs+02eTLPuSiYOzypZ4D2toOeZLPuCuvSz+KF8Us8gBearko2X77G5ccbls/xWe9bPOlnybL1pl50y+zZeGlE6AX48XXwJAlbOmtmrLPJNrv3J0tl9ys+JWfuUvBXZsNc6/Z/BSOWm3cNtnlniaMCnZ7Ic91VG/LP8A5lDZ82GdoAckBeT7PZAXgdc9M55eS8A2eEUAlAWf5N2x1uOy9kBekrPVUXvBL7bp4ys9Yxe8OX72XuyzxV59hc8L7Xc9Pao5s+jzVDvKs+fj7KrPsub6qz6DTrmi9+VmFovVsQJaLxODeN8/DheLeoHVn0Bz+k7vv2s7FXerPio5/qz3EAEGs/nmeRrPlDHhO1097Ecs89Ngc3X+hnvQc3NZ6BhqGDmVBdtOXkwc5Zu4eOp4nmO/P1g5uvGztZ4Zy/u7nQYgEb1qvz9D54FXPzWeI7P3Keutz18l4e6OEaJBsvKtn4bL/WAGMRNzSBs+3ybO1RXX/2Y+nNK1GMnPhaR3AcAGHa9H1g2fL2Ag77CZ47Fx8t3c1pGtP3zad+DLUDl9hy8AZfBnISNnqDcNDF+6aNo2fqLbtuXlbL5SQAki9jc0s9yWDnzJj9q1sJs/WBf6nIpNnhQwxoU/doD+RnQQvK6Rl1vTXZ/ps8jZeUv3TNn9LoxMOc1s/TDmObP55n7mzzLUc+F1Z2eBnrPwuuaM0ZF/Hp0j6fHIv6MuiWzyF0buy886eZbPf6R8bL0lzsCi+ipfVbPT4ei7LxrZ4N9NyDuyvP8tn6ez/rZ6bM+9+fq5jsXh09gPkdZol3rwDxFz6h4PFc/oO4FF0pufSwvTvZx2z5I56BWPraeGLEwA5jTXeQ3s6y8zJHJ+z9lu6mz5Hl/sytDZePrPqP7uHvbwl8js9s6lo7PK4XyK3Vix7NKCyZGkq4bou4Zz+1IStYDbHW1MjWdn3Vc7nZ9j893DmHHPHTn4uz/yOdLs9BP7y7P7XZ3Oz4q9eJjP2ZHziADdnimmwYk2bs+SHhp3PvTn5yL8WdZ7s9xYuf03YTr/uzzntZ1HMprmR8vDs4TDQOPZ5QzuYbb3cvLeX5lV0SO9vs+a2fDvPDjtJBzyLkflrOKxncsjF4D8ufX6OYuy9mWfNkv3OR3ez0kl4dHOH2egxz1lR0+zySU5N5dklOZPLFeX+Mc8SQFZs/32eN9zudn5+zzAbsuy98jmP7PtNtkbI8WOZ/s8SnXnsjjBX0LL5CzpXS8OGfOrPYDn9AUxA55DC9QOfwPX6q7s7L2RO7W8+Z3WXyj3G55Bz7li+llvQ5fm8vV9nkudyKl5JC8VHnh/HdgFzQr8tl+QK8K5eFpIs45kpnV1F+Rdc2nWFxzlDnlRz1DkcdfjqOeHujPd1i7Lzo59j116OeByzZXoXpz6eOeMc9H677vPfDnvSB03l+MK/aFfTCvP/u4dciQ55lqPN6Hb4jObOVLL0NkYpXMtee9svBJ1pQHG59YRyPouHdRzgNnwML24V9bCT6OfPCvhjniw/Yp578K/mOfyvLmI73f928jtWAumhraM7h/7/8w3/F8JHdwnX4m6HSbkzN/LAASS8POeUkyTznirjwQma09NH6fPBXTI7yzbT855DS80JnuwjALnqboz/3uBc/queY3PL7gP4cyC56OyNPzmWovcLnkcmxbMcBSN1uXfukKLn5E/VnkaB9OK1m2ygc0OD7AGpOcRs+69moQvTU5/Fz56O+y6N6juvBjBKukls8jLopc/NxfaCjMNRwZxxDdb72t0uee8jDLn3xz6XTp+y/6Gess37Lnp4r8igE2cBSRe/hz/YR8q69m3voqdqZ3Ss3lr+1wo7MF+Zc+p7nSJd81+v2lElOZll3D5e4edsrnsDI9fIAVc9/ufjtDrBx3KcwzUejc8bTnpWj8bnquB19F9Ksu++fqw9bHngTz2MEf/yPmufpnPQsXgoLza5/9xN6ufK5z/apyVQ6BRoLC+uuedPotm2nKyAlKavs6O2fInP9uXxwt27EYDc847Ag3PeG4ENz4xADHC8BQAVpzUbny4r9S58GC/JBeNs3LY77jz2Fz2Dc9IkBG3P2B1/uc6TTt088Ns7M3PTJnruXbejqA89abIlSvFGp2Sw4W54A9cluf23PFxRuSY4gAErc8civq3PnhX2XL+TmHrc8dSEoPPOnnltz7NBaT0/LEazx3PO20Gc+O57fc9/9nP3PMM5lm67srp1K9ICe1RXomuq83TIrthC+eFHp3PLM5nWnQPOb8KO13XHzdIxABdz6BO/AneyNBO+dfpX51M9GV923OgTuyJ3ag7gWc5MTtmptZFH3SvN7n6ooy84ZYV1RDmpZzVdZiYr36V/tTOdK7f+debnoKL/Abpgnei5H0yvW7nx9z69YYRnMelfc9Pn7nyWc5X5/LK/3anUyvirn/dBY9IQ+SfICfCXd1r1h2e5rOdZF0C76+UtEHnprc9NO/HLiPz3aPP7Kutw84ZBZQ88TWfYHPqhngec+h5/3nNe5fsPPNxRmJXSB56ECvOzn9J3xHn2FWh8UYupcd4vxxXT6tgOc9R58WVOqleTpznRYCEr0v58Y8+vLuHcvrHn3zI/HOccs8MC78H9KOrp5cJCbqGbMbFe1OEafZ3Eo4h56Zue4legxdonnuory+me4880lf8U9H+R2Tzz4V/CKP72eAwvP91xHt9x5+BaPdmaKadGnnkoz1p5+XK8h+LHSvP5X5s3ZFF/VK8Bs3h4jSZXpNW6TTv+V0YOf9mjUc534AAIF5mADjDh1zEWD149c8zsbR2sW02sKvZXodAo47Z6g3B7zn13P2vetzz+aUbYK/rxHyWj71u6ybNpF8FA/e02XSjXBjCzz/M1d9N3bMBNIvI1bnio5ezuWLCRefaAA0XnsMo2Evc86s3KOoYLPnV6VQAl5+kesIwXgFzQzZluz255+vYBpefrOzmQ5rLzxlXBy8/zlm5gvcPOlYT3F1ZFA+wqOgs71ZR0gL7Dl/wXPTOfBddNXn8Lt3V560lfzxWXivGTnkLz/I55IK8+jnx5bLJX43Y4suZHADlOvwrPg3njhc7xV5wK/J7Rizwt+bj6d16B6qIDTefi4ytERkjfcuIAW8/JPWljtlau+EI1ZV/W89ur2ryjuLOy9gKDO5gK/7eeanIGBXzKrwXjtoaM9Ze6MvnyX15LzSJ7pOMB5ervPMyRm7z1Yue49O4BeHvPtzB8md2zdpe892rG3vPeBbrEL64ubpnd2WefvPZS5xgL74udnZ1UFv+DtQS5zoo5sl4wcPhLmCnHUPny8L+Fa9h8+eBeQLwCPn3mz1ZzuxAipLm0fPSS5uKzxNK6Zr25Ln+9zkQKTWd2XLt1ne+BeQZ3DU56pc778HwH51Ln7wvilRlf1DT598c+4ZeGfPH5Rwu3dNUbsiOkmbLpE5oXmpc+QE5Wc8Fm7TC3XPnigQCtZ4Ly98+f2Kt1hb0Jm4RB7BnOi+fQldDoX/mLypSimESnS6pfPoIu+KY9v7a2afQ5eVfP+y59Xz09QE18/HLmOov80XlvI1bEDFwAAThmrP2Pn4fz0JO5FLO57vDxdlvn1sLzb5+T512+evmJlR13ZzyTl/b8/5NnPVdnvn/ud3SS5EatdVHI/PJRboPz/arp5q8VFuvwrIfnqPzznZ5j88QpeC7P+K5xPzzqwFrWuCSe+3rGfnvSY63Y4L89p7mYavpfbUGndyF+L8979n5tdZfn9A6xX55kXM7+eusvz1Rxvz/2ony3M8rmJ+dzvnkwd4gdbBp2mOeYejhtn8Cc89Z4GoKJ5myavvTnsfz1P2ch3OT+fXKZPi7v3t7LEDeN3riAF/PFNRxNp+fOCeK+ChG1/PFT6UVIxlke38/Y1eRav1v+MWr+qtYyrjH+fcF3lpn9yK88E/G0dKZeeujotR2Et9gNdzXN3+fcDzfkX2PXSRvrry+yA2jujWq59/z0F6c/8/zyvAyXrlxgXI2Ol4uS8ABeQtDTfjmbLweF7AC+c9nbajU2X1cz1AF8TaeeX7XajgAb5AN0Jl9Yo9/P1ZpPEjx1Or9tl6JPNNrmFXPbVXrVVpPl5HBvaLu+GzqAbjlw3B9c18eMFeB1zI5nodc/t/tMXcarXzF3xOjj005JMNR+u7Oey6tRBn+xd5a0ccXc+WBqKv1dR+oJxrRBPq/jDhd1zdqxkQLx4QDoq8U+W7Ij0m5lfy6wcfA6NIye7CMQn1zGT+grbHqMrLu5AvmCt6kJ3xfpUC+h+f+A36gX/nXZoF7kDuSBflPregX6QN9ku8sC++BWx8jHD+32wNDcf5k/TpfkWz8qAKNw/Sl5vqOnIA76jnZppwLy1MBcC8kb6bPrdl+tIw8ronSXC0dP8vrwoXjxa0L0a16MefWggvpNxtYs7jiQhZ1hBfpovEJAeCY0RueiC9SnnYgvlZLogYxPV6o3NJBeq9HI6cDCLxW54pc+rDXsgvvCt7FC8GZfpS/5BfrXP6y7hhowJue2Xcl7v9FXFQXjCL6Po+4aPRq6k9PwcX3PT7xV84Dtu4hA5Smnz4unW0F7ZXMdBfc5PAfWju8JVYjtuOn8AxfiL7gV4z8MF/s3NjBeHkjfgTj111ZuemC92bnjNzShXhYLwG2bBuMxRGVgv1ntgAQ6np+y7ObBfwEPPALgLcyUZ72C9RbmDgvyCHmla0BEZu3crlvMjdcTRkltwqkb+q+HG6hg37TR2bc/nO+YF2kmaHgvNwX3fL2LbtZGuvBf88v7wXkBvTZACUK8Eh2vgv95brk3XmruBl3Rxe/gv/hn9Jo3E19DiPac2ImvKFXkoz8yu5aWBvBeI8vE+5xLazCF/dq+DwpgSj7ix8GXfnO+Gc+jbWMQvLi5+JrzKHeZC9XbnCdzEa53suCaV5cqME7m0SQYk5uEkMAeeQ6Nplejmj1IXqB4/99ZFC9EPHXV3rIX6vc+kcc5C/OAB1av/Y16IAGjrqHLNNVIOSnYinhgAN5Z/lo1Brvn+9s6X/qz05ubU8+uNeJwv5JuxDd5m0cUHOM7ngTddzRxNd/b9ZVC9IMfkdzLv11HcxvBMcH1ahfPfrDBdyiJxwl7x3NL5f2mvizXknc5tV/LXctZBvqvi9rxDs8y0d1XCJ9ODwitoX/+J0817lYD8rmhTP7O5rDXYfWcpV1oVfCSvryXt0L7ErfnitehfUYEPoXw7nXoQHF3Py2HAwvrvO4ML/UudkK94D7Owv8CUSML23Z+jC9FC7E7PcYX5IcL604pa8MbnpnP+u50kzWmF4/C+ZhfM7rIhX5Lz9O57OABHKYtpgxYXs2r705+053lhe3zrIgNp6gEa54NWOqEO/WjtYXl9o7j59tmzNheA9zrYXoDd5Obo7C+1KfkgAPYXsCO32F+EHNtWf9v0kkuvyc0KnjgV10rnXmvKtXycLxnudzaMzhfzmdc4XoBXQuF9w3eF7ncbPszXtcL2XuZdl1FpXGqIzW5iZr5n59JcDdc7gkcsYgbAK+g57NEDLKeAxdso5tDXSeF5FUKspehmjzkXkncz63QGQ+3heTlPd1X9C3dlu6fC/D7m8WvRGX0zfe+F+r51RGfvpdfpj9do3PufWXBK3Gl9zIGXwqhDgedjp1gRfuVdEEX2Ho1BF7bC++kKtLdm4u3EyIhF6tT3zZAUIvQEXors8Zu+Zy9YRfTBzOEX8rw/754Ii92n2HN33E53dnSRF/TT1kReVVdoUTqiLz/ucha9DNG6Iv1q7hiL8XZfhU9Zg35agYxnjwc6Y1Bi3c8RfSV9fEX8Grwqp55DffMiRxz3TR9VT9boainO1tepIv0kX5NrzxOf1U/tR2Z6vdRX5SLxg6ed8MS3aULP+NZwRvQUZlA51O5WyvrPgLmoGzzW/4b0Vbvw3j/Nb/s+/X4Zi7dRRvSovnJDj2o9YfswS9/kulOjYqH3zVzB16ApflRejQ3wh5sCl2y7vxa9fJe2ovpdut0XTzZ/189E1feov4znsmr4NF/2t3DRfYJ9TnRsaL5kAAmi98o7vDd00Xver5CV/gF2dnGJKvdkQYjr7jl5Wi/JSeHz7fUuzaL9fp+2i+/A240PO0Xkhr0tE8tptqRGYY7v7Xh7d5R576KMXReQLwUoxtHa5jbrui9ldHIfPj0X37d9V0ZPeMJkOQAjH0X+4Z9iDfTdOy+eIEv3wLwkGwtq5tiD/Rf88vG8X0AL4YLbubMDOFM63mAR38rzCEChi8QWfe7HGiX45rw0eZ53NIgu+G3+MXnVnSgl/By91RfsYvW4b4TTwzbs8699ZfPkvPnX+BL30efe1cDHn6d3Z4bmTT9wEbSK8K5eJjz96H9pvcL0ZCM97dHWYvyQtnyr/NtL53fVFedNPxGVsyI9vWe2PP6de7YjLdXxiAELF/heMXLnRYvAun4vwIZ9EuPPo9Hecv9Qt7Ho/LF9x6M3kPlYv/oNqqnXZNSDBt0ZXNYvUQVtEIwMlt1i+IYfd/MV65v2a01TrjBvWs76B9mnxpzPebF7Xre+gvRr7TsXzds45/tdi+8Rx3YvEH6SZNunNcc+MVg3S307Wn7LrZMLcWsedlskpTTKR9eI2HF/cyPrxH9BzGJ5qGz7pLr/nfW7uewbXZu/Da6ruZfl3iZegxnJ2n5nsxr0ezi/rmJc4vsYznku4xG7ZCPPdeWTzmd1yHc5uLoj3cURuJGzvJ56uL7I2fY12Dx20HwDPli1z2KV6UOPiLX8pzZvnkPo0Q7qFLtKnn4BxRe70sJ/VF7nPd42OxS7wsTlb4xUzqni/9hHP5rs8XrHTyvF4c5P9hQXOEIeHwcZy3u/V0O6Zh9QbzOnxIyzDBEzeshNnSuIt/blYs5E2eA3OTqBqevotjoucJgtcCUOFZBwzDKnUBjxh/F+l0/bQBZAAdHjRbPVSEeQACAABsIB+o8N4eGdAxkQeko7R41xwAC9fHxnYScSqI18kfAS+Xd7KG3l3eyAALtmcfKu20AQmzc0cDCAKL14t6iIJfe3TOAAHXrw59HjWPgUb5o4RvX7ht65C9N6/a9fH9T5B1/XryLZ/IAA29fqnd+h7x3rcpP3ixBm9fhFwgFxjuc2e6et+ODemLuiPvXkTPeTmCPrP2NuFG3alIEPryqInAmPP4f9Ec/KsaPr3S29X0PYJJ0LzgAADCB2DX4y19PT1r19Dp3l8nhEvz/ejnrzn1/SlMlHv8eAlRZ4vT04RDK1sUxa0n5lwr9Ei/UADo8ZS9eZUAA/b15cFt9iebPZgCa3hjfXxca9jycXb0N06sugu2ZvoM/5XH4fs396WAAEvXtGl8wR74yf3AAZ6d8MNrF3UkTC70hH1mhijdHjGQABrJ9ETsJNuYM92S1m+/W7iEZ68mqnm+vjCTmlxMUtc3p1n9KpevMGe8pa9DOyBdhVLWkwA1HjSrPskbodqN0eMeCzxAAJXrwEl6y/73ArktsISXwh29f1/t4B39fwkv5It9/ry027Dz3o5W+AAX/XuQbfuEcIWvySnum3JL+rVTKomfiKtMwvDYbvX6PUI65HH8GNF9e/CPv0uwl4yL15Q8e6gBTu36KAVZx1WYkAAC4BDU/fKjQn06aPG9HjHZaxF6f2WspLQakvS/jZAAEr1/RjferJgxbmugQ1s3knaB0BVs63QS9y1kJa8FQCV6+k13AAAmECRAAlevZERymu8QZ/oL0cDfXevdER5ma0r14hWvOmApevZjOxr7QAADnaojbA3rwAEr1/bd1NwAr9PPERr3K5y49YM8AIBOzjvMbp/PTuZd2zPorgZBvt/Xkul56of2S8ptn8P9RyXjNs6pEax2u7EexoAnQ7tgb3CGdycdbtvek4F94Fla0S259HfIxBNHD5IEBXr0r19LFsZ/HVIvL6p9BAAr1/2SeyzO7HdNkAdwb3KmaaUCwueZ6d/lFkFonD475bdAYgpevoG4QVt6sU7kG+/GvlVrOdnibODr17AGTOGe+L9CSu/Jl7z9r5KcfwB96dK3esaAH2LZkiLoNPb+v92T9FL4wKdQG9R9u+rwD9LvC/eGYZfcBS9f2SP1zO93bre2Zcne/AAGhvFrbnOzy/EYkRu2tuZBv3aZq663f145ScXog6PG8LRpGs78ACV6+smvaOjKLO+Wt6UOcSG/akeOUvPwXh3r5VYnIG+8pe4aLwvJujxoLskuYBsDedPQpRujFw9Ka4WG+7ZmlhvovX/lnam29sV4zLWpUva/XocG2CoZZouE9FhWdHZ+yrt8Yi9GM8dn6LFrig3qYzxcN6AN2LQBx4gSg3mFO4y47FKNoOGmk8Hg341L0utfrbd4SAwptSvXrYzwetcjZ18P78pt58z/gq4jEb+G8RF7s0nZ613AAOsN6tQDhmHvWcSvXk+N8iN/Qjyr3XHAMSvXyv008Z+RMXnrvFCPRERwdty4y8fjccA6ehvdQ3/tnfYN8zev59PP43I02ykb2IWaveJ9Xha+AwVh8YcG62dhM9Gdm5evwTLpXr4iZ+na8Jc7wWj8AAJXr7Y+d87MvN2iJbeYENgb3MICt3Ci9f8yvDOxmkz5v1+o2sXkfu2d8/X1AAFsN5AP1gDe21rozgDvr1Is+khp7a6uwjvG1mglXz1/xb07tvsirRt78rs1IN5ADNGjfSuIvfXlYZHJtdFM9Tpe96jZd+46eHQm5iSNOjeDJjqvThUz+KZ4ausv96huzNkAefr+sN+V2u7pe2KPizL5jt45tf1Ou6mfusgVguiUVw5td38Pl3X/2Z+TLjeA0TBCkN1cG6JSAd6XsTt0zQjgtd+jfsKjivX56o0uAFF6/w+QLuzfA0YUb6ha+U7f3m6H+vhnb67XUwAGGG9qNWDhvdHjIMzwytd8sDSjfiAboMZ5AuL4N/QgSi9fMhdP1TsL8MSnurG80ymmLrb7p6Hs02N6Y0/LDf7q9czXrTgeH1/s7firnYIn8QZ2VO/9/YJ7M2WAmxvFY30xM0bs1oADBDfOxvPwu7sb3XwF7G9NynigzZZn7Ht1XFvDMOrjf2xv1VH9Ac2U28QADWDfxlrND7mer0QO+SOsacOiF3PvX3sz1r1/N6+jMxLevBvX13r/l249OsO9fugAF4315cMp/E9Z0nbWCu32QZqrt/2PrV4C/uHdgzi5n3QAFL14PLMQz65jiANRpmJMxjYtG8/oozGd21HvFt96N8/gBK9fjzPG6emr4C7EZ968yHz62n6C4KCb147qh2v1tHxlr3wZ/2APP1+zN0TG2DxvNkuoPxOGN/0xtghmoA4CEpyQQC7Ue9j2BZel9bMbLnCb0km6As/e9f4aPyxQUMsxpbo8G9xZe7VrDPX0XgKL18j90YjfJrXXWpB7tzNYdarUZZeHevoVtlTnWyi9wDNwtGyJAOxRm2YwhwBIs8VJGEPHqo35Xa/dXqa4iaTehQzsYAdjQ6Ki7pADp9eXp9ZjOs1Axgea8+tIVeS9rOJt+Pr9dXpay9DlXx3AgL7oVnWgABZKCi9eJAAsQ38cuLDrrVG9nxB5JvACAKYo+4N8wHeBXIuvH7qL68q/Mzs1F1i4AeTScVt8JoITTvQyP1+nR5lIoe+bL5bk8Wy+RTeyBdMU351a+79Zgm8JTejMjhybrC4/inudWteogvkjsvb33JwvzsxYA/jej6zuO0IQlOlN6c4DuABFhv8/XxSb2q++E8fyDvszdy+ZrcU/lZ4bqvrK6OBvXgAAKz4/NZr3OEkBI9dbY3iNazpsLrG/z0f8BzaU36Kb//zo6bPPjenevFgTiCjaNN7d7d8S6vrwLn15cs5NN6DXWT6HHrdmtgNN9xra4tG8NTfP3Auk523W5H25Wd0djen4AtVnwl68wO7J8x0eNTAAu2Zn62OgAFo8ZRiejhvBkWI+swalusG87FWpevOX1pZPSYedxFPTgBCJvJqp+nL1py92m9TlHsAvjGGDvr3oOYRQAO9ecEgvqun6bz8wBNVOrWezT9cwgLYb5v7qN6+1ehQpvGnLyTF3hPqFcGSiBDlzoG4JgZ9BE9+w3RfWwpIR9Z26z/Py8VfD3a7gpv7cSBNa8E+gAQD4GHzpJovXuOjkjN/QQAojeqw5DOZggwDkzqv7eY7VIAAr035nr4sN5/RTCiBaWP1LWUGbzr18KoCrFPAmPE9r+Co8P0cw13Z5f0qAtU38k272N6UAA69ffDdwo3le122nZPC221Aj6z1U3tab90AFqHMYhwJRA44b2FnR4N7gHezC63Jv5wAUXr0QAC8m8lUIexvFBRvQR1G5evIB0eN/t9ZTRldnfxsbEADVMlQpv1TH3rx639pMSPuTeAYySK4IQlBjUCvYDIzf0AAUE3mUb4SQEyjMYAA6xvgVkZZXbDWXlm8JbWXevErOqLXP+uB16/k5h7vSKQ+jvr2Xl9E73o+epZvBx1dab4BkYdwAyjeM8gJ1Rb8b+dnvry/RaHtbPXfepJc5nN7itt1TfsJEt/Xszly9aYO2vRgAo+3iyR0qQn89bmEAkoBGBNV037oABlkYIm9IrhWFwZNVxOxNtGY9s+2dfibtHk32gAObN/Bm+Xznu5v8LLI+s/dXsVm/kzfSA4Idn6q22zdrMm+BWJUWPINWP4RDPN9KN10eN98vSFnuJnY9bpsl20CAi/Hps3yBQKL14r7R1a6YYzqvL52b+29ZVQBpDfMckCtX83Y1HN4Wm+P5fP03Mxh5AYzpcfOID9iMxJvxNnqzI5wMDuDPpi6P8vEqxpTa/P1/DLgGMu+Kj7p1r462zLYSxdm1W6NDPMZn8b4V7CznA9TeEnXxhZxE6x5PArm8yzeVWAeauzAAOHN/wAAHDfMvwovX84G7c570Nf5ZP8Cv8w788b3d3p8qMFTeJWdRU3+ufRqN8oW9fGGOxvGRcTBb3fN5GOs1Ov9h3j1t9lWMqzo1f0azfpZv6030E7V73s+MMsW6p9lg2RlB608O54K92Qv6loEzr3+z89kdQW/ZzeXZQUfbgOb5dkHHuMiG6hIs0835nz/DV6ROuoAADhv3UCDsb9kG9em84LetFvZnLyP3fs68NKdeDGCLdXC3rOb1rN9rG8sW69BvC7H558FewCim/cLfWwbX43sfKaaO8JIDXduL2A3jb5Z16YvuWG8V8uKXrgyzDubxdroPm/+zfPjr9iqwubzDvxyZ3tTfBZdC+4EIbz9U6eqOeLIBnCMQAMSbxYSjbcZS9fpInehrgcK3wNafY/98uIpvdi3mqbybXpW2sKze2ynFhX4QwG4t46m8kmHrpvGC4NgANR420Nus5GElvQ03uM09O6eAiMnVuGoA7uxiAQEEt/oc9KTH3AAFU38JbzOPocs8+DmmXHOtO2BcKU59qW9CEpklvldTtJb4BAIyW9DHPlM3FjnlDj7Rtu3KN+zflhvpy+9w2IjN+kL28TUj6zI51qsgN3kXNm8Cceil93vEehbxUt4J2j6nWJtdhogGcAEAt8M4+tL7WOPJiRq2VANVLFl1FUxY/wDQgAFnTaN5h36lkAJWdsmJ8x/YnTv/ACyNWkF9KvL6E5xIN5SW/cLYYCrdHjRiADbtaCW/3zeqYghzx42bzXN+Ya8nVuMNAKS3yIAAeLvw6NoAAVlvGCAawb3X9f6W896RISWLVR5MYjct+Adu0zfW9jr85iVnVit5SdPywAgFvzvr7Fo7eUb0oDr9fXAA543s5b7ZK4+W+2XBcxvzPxHDnaWfAote0iBAuPlCrujxsFx7rM2prhdvPmxaAQb6a0cA8MC8mGLrWS8Vsb/oK8yavsXXtTnJgrq0g6c5+sj0a0R2hvAl1gFr971+9m8367WtjpDuhGIP5j3d1ulceBvLbRXz8AP/15f6839fEhvX9X+4j05m+KaNSn7obrWrrjaXRKvs3m8B5GMAAUE3pTM84IEY6dzieYrX/CCbSfbQABlG9hSRjJvcxX4sq6c4alQBu5O23GAfRlKyKbN6FAjr9faLDVY3kYb4FOxVHcmPWfhz/S34q6y6t6Vm9V5HIA4mQAVgb36vryAC0eNRevKb4EwjIb6dQqem16BwA2FTnae85Ocl6/3AqfwzBy3o8b4r17eK+FrfQNw0S3+pfQS59KUCyDe+XPxJpkrNwDi+XyPoreYFjSD0dwb6YADtW/arr1hvsg3kOlIgAAl6/ARH4mj4VrgSVC1MZ25c4XJYhvw63r7w8st4E5eZreEXjrEgHXr4eQHdW/SoA01vqTtsjAEb14LnMtrfYpv5wNsvUKC2YWjNRA2Q/MOY39cb7pOb8nPIhH/NUAg3tfr/GO9XW8H3W3Bv7Y3zmb9G2aZlNNjejUkhIAEi6ytydQGbvn7pRv3Y35AAPdN6blM7FWdZvi3l1wLD2XBSW9bjerZv4NO16b0wAC/W+M1OAKre052M3UG/s2W9y2QnVvsbnwtb+at4yCfob6ZRvTbgDeXQhuCFW/KhHGFvrG+j63S8rpbW/ty7pfdbrZnNz5uVvW8nYbeVXPDO2oVb8cVso29iTu8NvBy30bd+F28Y3Pu5Gq3Pl63um3aH16JFq7y6SUAmG31zgKL15w2/u+WhVvvG3jYoy2t9dc++4vYVvCB1x+AFfp8PiOv2xw+vp03u1b86tfGYDdrea5vsyp01AP+uBHc96CmUlv/SgCTb5+O/IADvTfonUUE3r9b/Jt5GUQ8beVXP5m+xOb+0CG1cSLufiTrnhoKag52t4M289rfeNvXt1ujbxZt7yKPt1GmXHqE7hgAP8t4Pc8aFGAdkVrAPTb1UAFs281zfeNv9qZmzb26t8M2/88mBs4Dm30Ibyers8284LX7q9ONTqid+5t7E2/LABNNvCXkKYFVddZ6Iy+bfOJAIW3uzb8Zt7q32mbeziA5m32XN4jN84neAAAsICRXD+bejNv9Kuqjb2+6ciOOgbfUNvQ2QKZXVxt/MgAVbfoDjIZW6jb+dJfnziHrfpmv8h53ywKSB5imPcbewtvapVwz0J1t+1m/zBf7gA+BAKag9PwEibpS9ebdPsKtKrb3hmZEKOtpmW1v11utlnBOt9aTOEABFevyEiKtb5Czo0X1V3CKur2jA6bb+R58psMUWJFxvBexklAJ1t+7G8EbflAAwW3hTb81t8Vp33amW1vOLQYCI4BFaM8Aa0GhVv1230Lb/Zt/NrW1ber1vjm3oDb1MUbG2/cLhS+jVIHljb+ut8c2/oZ6peviRxwA0MqzqFW9Vjepldr03tbb02N+G2/MNfpxrZG18IYoot6h2+FCcVPP3i34AG/y8ZqN1K9etPPpG327b46V5bW9/beN+v9QT0rb+OXHK28Dbe0DjbW3rbb6Bzu+uAj9HHtveCXuvgLR42Qhs4ABXpvw23nLbHet8TC8vXH7PP7wACnb/qgCy28BbeVXPRpRknb0ZN7pW8ibHDbYW233yb+/tYIlcF77PZvJs3yjawgXFdM3eLe7lvWs3sXc4YVd+F0nTekgarU3r3d3wAGH6//rhwPHHnVn+c7Cg/0zM26nMBvFy4FDx94YEwG/Sq7HNvws33nK3rt8Dm/oNPu6sgs3xu+LAuZpkD7rftFvF2R8Dx6LJZfog27ex8X9lXifF9L3VsW91lmWvDnS31QG6SlcqC/mjGvKvyOgBXr4XzsJIB1TflMsjA386dzcHcNfCLDfcFvQS3yVoxVyZ5NJQTegvTzNh72J8nEDeXDoNPzgbu2ZtEkBRN+osAegev8X+sF+Zy/Jt+DGM4wJRHAiGbyAABaN4z2+T6nRevlAATRb6tMJ5W/74BOHDBVXhvHXit/b2+WAA9pvzq1oQlNaAAh2/FQJFev5S3tyb1EAFF6+t7fOZv7Br95PXHt572/DBO6TjVy37Fb2DkCdqfPb5b8jPBT5Q8BKztYL13oBfVd9qjkFAA4N4nqP9VfyXwQigSr3axIDFCvctnPF3r5AIBbzXN6Fm83q71Zv9bO6U40vLfqlc8264Wj3FV9Yb7f7ar9OEJOGhvdO3531zw4YIcPvTfLpdZ3LsOb1+N4b28nVu8VvmS51+b2c9dv68Rc6u7wdHjS03Vut52gBtLmQLwwB3nXr2N1ckkb+kAn9vvpALbb6I4BkACcOGSNdNVaIn1zpt9pyPnA30GjtGu22fZtt9em93LgqDvt7AUzby5QFhm+bLfhTDi63o3Zhz57kcMbp6haAv03o+s/HN4Ig+C+fRNvBL1xP667K/FzfDbfmajAH1ifY5Jbsfm9o1f1/GT1R7Qb4ok+4pQp2nrL5ba11l6+tt6N697zeJWdF03nSAP4t/OACIuXFhvVS37daxoWZV5dKTHYddrvX/Ab980aK51lVHpU93AAOjxhY16em9EfXQhvBjL9KbxKztVetTG7zNvG2pgaqQgt68g+c1fpFrPgd2KozzQl5q+Up6k8AYhZpQ7xb6+TOPrwWqY9xfVxRb/v57UW9fjfq8zT4enXr+6Yj0M8uAA6PG/A3xDN80W8Jadwjf+JsBIu9DI/52c+oC4S75fD4TRhGbxS6eRm9mK57FV9UHzGb86teGqM4zeFLXl7Ozlc21N8O10dzebpvdM332/d2UWWnM0hmvxv7qRqhw+SBDpbfGvhogzmoulYc6igE7W/LDedAAXs3zybwzsed9dHZGftduYXk03QiEHXMSIGvEg4j7R/eowl1iCW9XVGr99HR3zaz62N5WYiKLf2nAXxbtJoHR4wVgCIHfhDAPNCCYq0od/UXdy+eQ+vyMZo3ZvHV/2rNH7f2ND4Jb6zBxG08Am/creSF3GdX4qK7VxGDm9MWWXq9P4Z2hd7At9i2+HjeEtvh71vPbwQt6cz6YlupzPqQ3nnXT+N52zvxTfUdAiU3qby61nbAN3vHfLdvAWWsgblkAASO8b8ADC8P2jkB3SH16j8xyLugFbe211Q76S9a/G/XyBYhv3jbk5AOvt+0LPT1esTvxAX81m1WYnTcRmLfK5vMkuqEXdHN6yO+737rCzjsHt0ncwQNVG86ehN2n9h38Oa6R9YcXfJkvf9rta36qdyzt4EuBxd63F3vPXkU72Bt7FO8h9eQEANc3jnb5afmV2utJnPVvwS79oAK/157W+zkA1OIHg3/+V0aa9v72ane61v3AbrIsxPVvlW9xwfbS3aG35eo3IHeVO8P56nrjUgb9fXYKE4DcNa/WONv0E5/2bwat8nED3TeUd7jo3m9cBJ2N7G8Cy6WVvJK3zVS/O6Hkm/UeMkEj4ztnfa9tXq3m/4JfHA4hNOwsT62ZYQ3OVqZrDvlAANUb3wIDRVBLOAXPrfK39Ja6wVoF5OahOJBvAa3lAAKL19jBqVHfX+v703rdm3wxGmuvHbWBhrUK59CBMaJ+rpDPS6AWdOG3g473w1+3RxqLCcxvXBRiVnUUF5vXCLLukBvHk3wwJ8SGfTW+SxeqDd9QdktOU+y+rLf1OqMIvY0YOst3kYSjG//7eqyA02cI11yaqZaC9qf6bfE5d18Xryad8/g+xjeYUA3rCATnUyN7aG/S9fy5PaYTmgQAaakPG8LbWjhvp/4+4b+2S78VcxF7DzvIs7+jcEcN9uc84RTuSzPBUP58KsF6eDvLzeK/rpa3hjxlsF+dmuRtHEWv5A32rp8KlNuz7OrWolj4Vr+eT2NAFvYBU9PtRvBK76ka6Bd9ia/AQ3PK1ZK7neT8UN5v9P5zuSGjGTXjbvSQYCxm+lDnT2wLwXlkNFSt98N1YXeCC7GT4P/r/cObsyOPyfP3DiF3srLIv7ugu/ZABhhvNTX2C70+y7++tUXe8LvjCpluK6eW5B+s4XfnVrTF3lmU8gXF+2/M2zXKjJVR09sEEt92zPD9eV4AyA39Dd4St5OqKSTCfun5F32i72gN/wkAGjWx9v4zXznbz3IC628E7mOukNc36IAPt/p/sChAAjhvPlZ51YFHpxfitrNeqLvFzRkltyhd6ZC+jzejV3w23h/RHTdahkRv9v0TdCZ11w79c16D68J9eElvWeu9Z15qMeXHPhhlF1vtx1zDbxDboyABkG6xjvSLRpUL9L08d+tWUBGJvBBdrFo5BuY9+vGPhQWvQOj+ybzd4hSW9ktGW1vVc3lf1Iwt4wO+MP7vmR4437xt3hd+gi+0CuEzdOvX1V65lN9zaO0re6td+x3qVY76dZISTi5u0hvYUkdBpzsd5CU/M+bfOz7uuriI71561O8o7eS9vM4Aajxtkqc5O9JneIwvJJeIBb0SADvv27Zm8fNLa54Pr5sW9tFMSs7aYVrEAOJo1AGaPXcbrfizdVrn16b+TBF03AvHWgFvDi+5Yb/t/tefFPreHevjC3oUZ1/m+dEDKteiurm5L2XPX0AFuHVnGYZojp7YTc3Sst+3a8xWJhjvkK3/aM4nt+6SNQrfWCd4e55IAP2t4aU/HL79Trn1RyACA2qvKW8h+Y+jwRvXjybxOxCRXBNNmE9vvy4NsPckd4EG92Vn3pvi4Xr9VuXdafN2GZu8dvLS3pq74wt45C8nTfdV16s3ywbyyUF0O8HDf9DvjC3j8MyFWaMyPj77b9vpNCOmWLZK7M5eKzf779yV3p568G9YerfJK2XnjIlaB9b/VHHCoC57elxvZN3zeb//t5wW8PRvy2v0FekwPAQAAaG9Dzl0GnZYTzCV/FczxaS89eKIaTPr+Td9kGe6ADBrrr4uQe5w22EbTFuHWgpwHvoiN3hmb54cE3XApLfzH9VXX13XfmgHSKufre/NvBeR3mYcCnvQ+TB9eJ1vw430Xr9hF9Gm/eROiunPAL5WIzxt4Vu8GzeUY9fy357bxL19uz6vYpYo7vnZ6/b3KgDtu//F6JFwke3sSs3JUbhW+37epvHuu3/Do39Wb0Bca+GriHzKXtyqOGYcVm93EPJhvRF395b60N+RfixJn4bvAk3/Ld+EM+LT1YnflVvRFH2qawih68G/sjfLVPvTl87NrEDZ3O/IWfX1r8k3nmhI1N4f5sWjeJgAsc3isvRhN9op3ITpeRv9FOzB8A0N+cm81bvQOvZIz9Bp/HN4pu9gLfCSA8630hb2Et7jU8av6qozazRyUfe5rqOG8oi7YddrR3rWbznN57W/3V6sVvWkACmM28265O/qje0dvmo3ge70318ZO9BXHK1PH/NgHS5nd+N6+odegBb+9323ryNE9Ey8TV69X9M03vXr3NN+t68jA2RSHh93nQu+h166W329fL7vhU75fxPNN7HU9dbvVsLPznkobxU67brbooBNpvvQARSyGT5lHu+6HflhvrHL29gI50Y48vwLvtRjYSRtS74/N4tX3XA2srvAYbwl0Ood7/m8PbUtDvZnLo7d/UXd38warfv1P527xrV7W/rdIfvAApBvdHjeAAPX14eDNu1uCBv7aV4ZhBKQBzDeid6vpdL8VgsNyrt+LW+hDftnHZTkKXr6Nq4B3eWnaV7N/h3qbVxFO/TnP9LfaNd4y11tD/HWfGO8P6IKh3HgAJXr3Du7r68i4AbOvswusNbzWN71m+oWwDZvsMX1kGz1kBwd0q26o9r+O7yWncyd4t6/O9f5pvfGnqKb1Tu5xi9tZaX7vr43l3ryed5sBoLreIGdx4byTT8SM+k09AxPFQbsC34s6yrXsS6+CBGnErzJ3tTT3Ht6y6/qoADtvOXX1zrda2anW8jHWd6zll3zwQKYbrh6OIq7X2jYUAC/Y3s8bCe/+TegJw6pnrsI3DN/q693HmEI3i53tUFzeQ/SPDhzXpm9aTQUtzUF1qx0AcDfGdXlvu1T/f8gDttthXeEtPqchw2L5zq6L69mxfKmAvpANet6Z/so333rWousewroF2I7F7zBsVafdpj8KqlQCFw9vBYgL7hynv3sX9CBHvW626/Ml3+MPQCKWJMy4nusON4tJSldLj38qM7huB168u7fk6dww32OL4Q2cDO+RhDnWAeC37B0gnN5IZe7beAWdD3XjOLz3tY16P67fC7XqxTv60+918Li+fdfszdRz3p3b7et7z2/breK4vZLe0Y4zYd57kA1xentPQWHpQJsE+kJp1wben2Aui328gEbs0YW/XWf7FV281ys70pMY6YDM/FXpvMxuyydWpG8Fifl7vTRtxQexzXT1S7ou+Eug0ojmpu4eL4A8eT6M00B2nASOVm7/avtKd2+djPE8gi8X4nr7Yt9NSOkxmP5vV4+hto/ugol6/7LfItvkK3o3r2lEbuO+96vvOE5PXofV/Tp+Ed36DaO+tv22+zxqaXfZe83dal+t9njPU7Y1Nofjs4DaH47v3WqgbQ5trTw8xcmeXvcPW/Nxvy95uG2ljbLPGt8d6Yu41S/0G0Px3/NtMr3nM7YAAEUQY8Z1kNseO3qve7873Rdnq7X91ofjvRTb0etkOd37rW4XdLG1hbauy763Wy4bS71tj238vefJtYzjcV7/Eof420Px3hDtMr39n45/do3O0evftdP5/W247eL1u9e/8vf6Zt0PWtjxg91rWO0w9bt5trJ2gQba/q/Nu1+veaZtgb3xXrSG97De9BDaI3vM624U7UlG724a1uY43vsvWhN78G99De/hvfoetkb3gV72K99lG1SLWbXvNPWtvbfa97+60FLafetsBrxebZH1vv62/dbbRtpSd/KN4vNpre+rbaePGDS25nraUndKjdU9bbXvlb3vl73v1sL61f4eVe6pnjCObXy95+Lv+veMBtbvW9V7w31oF61iTP+NtHL3wd73O96pz2sDaIDthA2oS7XTnqtG3Nt7+Bt2R2oS7eX8fsG1jOMtltu/WtRO8f1p5z2/F3GptLw2jXrTINsoI91nbG+tyq22ebZNG6QH1gDa/+tAA2z3rY+98fVtMpb7Bt3w2q+7Y+94/VsXveYetV73m973u3vgG3srasBtOA267rVy99sS9gEkVXvck2yLbT8dpLe8n9bZTLDA2mebWLyfYG2l9aH47NY2tQLX697HG1ETabPGkOduxO74l80G2GbaGlr8A22UbTdG8m0CCXanBtH/X94AIAAHIQGEbdR9+/6+1uZv3vQl22JL64Npp61Hna5ht9njIUbSAN7Sm2BDbCi7YQ2ucbW8AZiG1o9battCQ2wT7031vZhfPjbOXvyDO/YbYYtqN630za6gtyzbkpL2wNsx61jjab3vDKhtd70K97Ne/EgHeht8uVwYbSK9+1bPn9afetjb34MW0M4y4+/BDbXht1y11gbd8Nps8b8ve1etDCdyz7wgttubesDbjxt1C2/D76h9+6S/OwAN+tnk2nybeQNvfe8xJPeBtjC2iw7dGe77e8iraaetXR2zz7582/sG16rbZ5tjX2ulbeL1oC+/wrXvLtPi2+uGx5NoMTsJNFFxtxA2pD7wXS92zu2ff+Xv/PWmZxkl974M/L7aWRtbI2qgbS3NvcBO8jb+Rtgo2pTbZTM9rcxC9aJRtFg26UbSodtHPeKjbAttK62txbXVrdde+6jal5tx82vcbR3S8D60fZ2GE7mbjNjxs2NpD6039bHXv7C2/ul1aNtim1Ove5xtOhnrbrY31vxm2XJOKmd3l2zbrQL1ta71hjbattG22ykY2CNszcYPx2QRtQF7iEj6HNps8bM9a3htf3W7Nxm2Nt6m07ffaVtUKXrMbRD1pzG29baWet8PppQbQd97rm34ffDPvNyduPrXXNr7FvO3bSFtv33qkjzateTIPn9bopthvW4B7Q/S/P60rjaGetOb3md70G9+Ne8E9bJNtH9do5nQRNuim2Dve9utCP3kQbR7NvARemeNOjtrPW57rf1NtQRcXjas3GLPW/l7/j1vzcZwLbaUvOr3ufbeq9+De8ubbETt8DLukAGO998W3qve/Jt5E2mCbVRNoDbfOwB+BtK42kA7ez98om2E9alnGJa16nrdt1rEW3vLb1Xvja2zn77Fe4bu08/exxtfP36c7Q/HbJBOwfem+tpA2n17+oi4MG1uveVfvRo2/l7z1NvfO3g53Uet8xdyzxlAndzbfK/ehJt6r33X7/f1sFG0G/ejltxv3hXWxr9+ne+q/edfv1vW5HrS8NpR62G/epnGtv3riLXiNtN++O/eCttuK2uTbW795t+92mvRQT6X3gN73D979+9ZTax7tvi25ttxg+dD+/TvfSfvfv38SbaJtoSm3K9aZGXgEt/wbYrNoym2DvfdfvSf3+KbYFNoF607XuM/vUU2vqbeb9+Ae11Tbo/viI36sj+W98DG3q9bIJtOf3oqbSn94F60nxvq/vga2uv72X9+ym31TaBet9AO6u7Z1NuxTsCTaS/v9njEPrehLa262XjaE/vGP33r7waNubG3zrb13v173wn7yCZ7UC0j/eSfvtP31V7/rNsn+/2LaSjtYxds9twE1ur+/tnb1XvR2dmhO3yN9M22/vf+fvvc2v8bcx/ec20c/e/xt55HwpF8NTtM8bbzb7PGnO2/l74kNvCG2kmed0cpnjZvrZfdsHe/P/fZRt9rDsObYaNuzcZ7/f/ttvG132bf/94T+8lvesetBZ2jHreGNvl60X53UO3eizg6bVVdrp61VvfwAfID2gKbdAD8uG0Ydur5tc+dsP7wn9848bmJ3Kfv3n9uT791drJ++XJ3pBtNCdi6bef1tIB/aDa10vt02vS7RFtvj+993azBtbq2gXrfyKZVe9xnb69ts+dg/O/CdqYB8vdb90vPfmoZxm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pRte/WpgHx/ndGh8Q9b5htjSPws7eH1pQR+UI+mTtNwPmlox9D/h631rbjztxy+4B21Aj47O1uI++7tH0PjxH0SttSh/9Xaw+tgC2qMH5j1uoW2LQ++7tJb3pvrVkj7Zh83bagi7hi2mg7coK6iavzOf9kfypzuY7Y2NoQzubV669tnvWglbeHdrU22K9axVvbF1mye0c584us0wOLZblp2lV7ya977u0w9bmetQC2nYC1K95k++tw+loffk96nrd/ts4+8MJ2ePvym2ljxgMdvTm3WZukwfYzjHTbVGQdEABUffkLDpm212H94K/o+/ZTa1fvtm29JH+K982l0X/eBfvQl256bdcD6lh/j/e5etyoP2HbSFtrC22QAAIttJA23CHyTtuR62xQ/j4f50jk0HzfNpre/79bdskMMPyMbZZ40wh9aw+nPGHt2lFHzdhek+98vfgAAMPWyebcu96bB+6LaOkfxKPwZbR4j/6h92F2KcTiI22U7UpttVR3seM5ZtygAdt72j1q5R8K9a6gfeUPvNb+7A+Z82UHbcofToPzMH3ONs4CckVOzUd+qPyzxoaj8lR/4ffpUfTW26Yux9i4n622o+/R3YgHnmXbR98aB8a9aDutfy2h178ED/zcamABOofRu2yA7TbNsm2109bretKOdzK7XXtvAO1I9a/utwD2it74Ftvbe+7dauPGBEPpBH4ztqdh+2I/RvvUB2slH2ONopR/FBblUfUzjf13VXA4X6289bBjt9QPxoH6RD4T+/y9bfwfDCd61bTNtsJ60+rbbXvu3WrZbZCdo6R+EDa2etv3W9bbU394sqc9jbC0f0u24yH0GtoT63LOMA0fx220SbS+D8d23+rasptxc2pZxgL1ts237Dbj5tYB2xU7Vaj7Z6249aM0f8O2qAH0a9/eR+iw+3etJE2p+Owf1o1e/SDbEDtivWgWH2r1tx62VvfB0fFCP/BH8VD5k+8lveHePMr4CHrRuj5AzskLbd0f0u20NH/Z4yMB8XI/xNtRaPhXrbHx9PR9Px3D4fT4P8P75ej+HHcFo/30f7vl5XrWr1rQON17ai7r+Vhw07YFtuzcZjo/PQfgW2n9HzgD75R8PZvoMd/MP57rXuj9xm1jHbVttPiPynbaQtpim2e9au0fNs2hnbXXtvD/Bfo/lttIPWmzxliD82A8q90cwf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=";const {react, reactDOM, excalidrawLib} = window.eval.call(window, `(function() {${LZString.decompressFromBase64(EXCALIDRAW_PACKAGES)};return {react:React, reactDOM:ReactDOM, excalidrawLib: ExcalidrawLib};})();`);const PLUGIN_VERSION="1.9.3";function _interopNamespace(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(A){if("default"!==A){var i=Object.getOwnPropertyDescriptor(e,A);Object.defineProperty(t,A,i.get?i:{enumerable:!0,get:function(){return e[A]}})}})),t.default=e,Object.freeze(t)}var obsidian_module__namespace=_interopNamespace(obsidian_module),React__namespace=_interopNamespace(React);let random$1=e=>crypto.getRandomValues(new Uint8Array(e)),customRandom=(e,t,A)=>{let i=(2<{let r="";for(;;){let t=A(n),s=n;for(;s--;)if(r+=e[t[s]&i]||"",r.length===a)return r}}},customAlphabet=(e,t=21)=>customRandom(e,t,random$1),nanoid$1=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce(((e,t)=>e+((t&=63)<36?t.toString(36):t<62?(t-26).toString(36).toUpperCase():t>62?"-":"_")),"");function JSON_parse(e){return JSON.parse(e.replaceAll("[","["))}/Mac|iPod|iPhone|iPad/.test(window.navigator.platform);const DEVICE={isDesktop:!document.body.hasClass("is-tablet")&&!document.body.hasClass("is-mobile"),isPhone:document.body.hasClass("is-phone"),isTablet:document.body.hasClass("is-tablet"),isMobile:document.body.hasClass("is-mobile"),isLinux:document.body.hasClass("mod-linux")&&!document.body.hasClass("is-android"),isMacOS:document.body.hasClass("mod-macos")&&!document.body.hasClass("is-ios"),isWindows:document.body.hasClass("mod-windows"),isIOS:document.body.hasClass("is-ios"),isAndroid:document.body.hasClass("is-android")},nanoid=customAlphabet("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",8),KEYCODE={ESC:27},ROUNDNESS={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},GITHUB_RELEASES="https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/",URLFETCHTIMEOUT=1e3,PLUGIN_ID="obsidian-excalidraw-plugin",SCRIPT_INSTALL_CODEBLOCK="excalidraw-script-install",SCRIPT_INSTALL_FOLDER="Downloaded",fileid=customAlphabet("1234567890abcdef",40),REG_LINKINDEX_INVALIDCHARS=/[<>:"\\|?*#]/g,REG_BLOCK_REF_CLEAN=/[!"#$%&()*+,.:;<=>?@^`{|}~\/\[\]\\]/g,IMAGE_TYPES=["jpeg","jpg","png","gif","svg","webp","bmp","ico"],EXPORT_TYPES=["svg","dark.svg","light.svg","png","dark.png","light.png"],MAX_IMAGE_SIZE=500,FRONTMATTER_KEY="excalidraw-plugin",FRONTMATTER_KEY_EXPORT_TRANSPARENT="excalidraw-export-transparent",FRONTMATTER_KEY_EXPORT_DARK="excalidraw-export-dark",FRONTMATTER_KEY_EXPORT_SVGPADDING="excalidraw-export-svgpadding",FRONTMATTER_KEY_EXPORT_PADDING="excalidraw-export-padding",FRONTMATTER_KEY_EXPORT_PNGSCALE="excalidraw-export-pngscale",FRONTMATTER_KEY_CUSTOM_PREFIX="excalidraw-link-prefix",FRONTMATTER_KEY_CUSTOM_URL_PREFIX="excalidraw-url-prefix",FRONTMATTER_KEY_CUSTOM_LINK_BRACKETS="excalidraw-link-brackets",FRONTMATTER_KEY_ONLOAD_SCRIPT="excalidraw-onload-script",FRONTMATTER_KEY_LINKBUTTON_OPACITY="excalidraw-linkbutton-opacity",FRONTMATTER_KEY_DEFAULT_MODE="excalidraw-default-mode",FRONTMATTER_KEY_FONT="excalidraw-font",FRONTMATTER_KEY_FONTCOLOR="excalidraw-font-color",FRONTMATTER_KEY_BORDERCOLOR="excalidraw-border-color",FRONTMATTER_KEY_MD_STYLE="excalidraw-css",FRONTMATTER_KEY_AUTOEXPORT="excalidraw-autoexport",VIEW_TYPE_EXCALIDRAW="excalidraw",ICON_NAME="excalidraw-icon",RERENDER_EVENT="excalidraw-embed-rerender",BLANK_DRAWING=`{"type":"excalidraw","version":2,"source":"${GITHUB_RELEASES+PLUGIN_VERSION}","elements":[],"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff"}}`,DARK_BLANK_DRAWING=`{"type":"excalidraw","version":2,"source":"${GITHUB_RELEASES+PLUGIN_VERSION}","elements":[],"appState":{"theme":"dark","gridSize":null,"viewBackgroundColor":"#ffffff"}}`,FRONTMATTER=["---","","excalidraw-plugin: parsed","tags: [excalidraw]","","---","==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==","",""].join("\n"),EMPTY_MESSAGE="Hit enter to create a new drawing",TEXT_DISPLAY_PARSED_ICON_NAME="quote-glyph",TEXT_DISPLAY_RAW_ICON_NAME="presentation",FULLSCREEN_ICON_NAME="fullscreen",SCRIPTENGINE_ICON_NAME="ScriptEngine",COLOR_NAMES=new Map;COLOR_NAMES.set("aliceblue","#f0f8ff"),COLOR_NAMES.set("antiquewhite","#faebd7"),COLOR_NAMES.set("aqua","#00ffff"),COLOR_NAMES.set("aquamarine","#7fffd4"),COLOR_NAMES.set("azure","#f0ffff"),COLOR_NAMES.set("beige","#f5f5dc"),COLOR_NAMES.set("bisque","#ffe4c4"),COLOR_NAMES.set("black","#000000"),COLOR_NAMES.set("blanchedalmond","#ffebcd"),COLOR_NAMES.set("blue","#0000ff"),COLOR_NAMES.set("blueviolet","#8a2be2"),COLOR_NAMES.set("brown","#a52a2a"),COLOR_NAMES.set("burlywood","#deb887"),COLOR_NAMES.set("cadetblue","#5f9ea0"),COLOR_NAMES.set("chartreuse","#7fff00"),COLOR_NAMES.set("chocolate","#d2691e"),COLOR_NAMES.set("coral","#ff7f50"),COLOR_NAMES.set("cornflowerblue","#6495ed"),COLOR_NAMES.set("cornsilk","#fff8dc"),COLOR_NAMES.set("crimson","#dc143c"),COLOR_NAMES.set("cyan","#00ffff"),COLOR_NAMES.set("darkblue","#00008b"),COLOR_NAMES.set("darkcyan","#008b8b"),COLOR_NAMES.set("darkgoldenrod","#b8860b"),COLOR_NAMES.set("darkgray","#a9a9a9"),COLOR_NAMES.set("darkgreen","#006400"),COLOR_NAMES.set("darkkhaki","#bdb76b"),COLOR_NAMES.set("darkmagenta","#8b008b"),COLOR_NAMES.set("darkolivegreen","#556b2f"),COLOR_NAMES.set("darkorange","#ff8c00"),COLOR_NAMES.set("darkorchid","#9932cc"),COLOR_NAMES.set("darkred","#8b0000"),COLOR_NAMES.set("darksalmon","#e9967a"),COLOR_NAMES.set("darkseagreen","#8fbc8f"),COLOR_NAMES.set("darkslateblue","#483d8b"),COLOR_NAMES.set("darkslategray","#2f4f4f"),COLOR_NAMES.set("darkturquoise","#00ced1"),COLOR_NAMES.set("darkviolet","#9400d3"),COLOR_NAMES.set("deeppink","#ff1493"),COLOR_NAMES.set("deepskyblue","#00bfff"),COLOR_NAMES.set("dimgray","#696969"),COLOR_NAMES.set("dodgerblue","#1e90ff"),COLOR_NAMES.set("firebrick","#b22222"),COLOR_NAMES.set("floralwhite","#fffaf0"),COLOR_NAMES.set("forestgreen","#228b22"),COLOR_NAMES.set("fuchsia","#ff00ff"),COLOR_NAMES.set("gainsboro","#dcdcdc"),COLOR_NAMES.set("ghostwhite","#f8f8ff"),COLOR_NAMES.set("gold","#ffd700"),COLOR_NAMES.set("goldenrod","#daa520"),COLOR_NAMES.set("gray","#808080"),COLOR_NAMES.set("green","#008000"),COLOR_NAMES.set("greenyellow","#adff2f"),COLOR_NAMES.set("honeydew","#f0fff0"),COLOR_NAMES.set("hotpink","#ff69b4"),COLOR_NAMES.set("indianred","#cd5c5c"),COLOR_NAMES.set("indigo","#4b0082"),COLOR_NAMES.set("ivory","#fffff0"),COLOR_NAMES.set("khaki","#f0e68c"),COLOR_NAMES.set("lavender","#e6e6fa"),COLOR_NAMES.set("lavenderblush","#fff0f5"),COLOR_NAMES.set("lawngreen","#7cfc00"),COLOR_NAMES.set("lemonchiffon","#fffacd"),COLOR_NAMES.set("lightblue","#add8e6"),COLOR_NAMES.set("lightcoral","#f08080"),COLOR_NAMES.set("lightcyan","#e0ffff"),COLOR_NAMES.set("lightgoldenrodyellow","#fafad2"),COLOR_NAMES.set("lightgrey","#d3d3d3"),COLOR_NAMES.set("lightgreen","#90ee90"),COLOR_NAMES.set("lightpink","#ffb6c1"),COLOR_NAMES.set("lightsalmon","#ffa07a"),COLOR_NAMES.set("lightseagreen","#20b2aa"),COLOR_NAMES.set("lightskyblue","#87cefa"),COLOR_NAMES.set("lightslategray","#778899"),COLOR_NAMES.set("lightsteelblue","#b0c4de"),COLOR_NAMES.set("lightyellow","#ffffe0"),COLOR_NAMES.set("lime","#00ff00"),COLOR_NAMES.set("limegreen","#32cd32"),COLOR_NAMES.set("linen","#faf0e6"),COLOR_NAMES.set("magenta","#ff00ff"),COLOR_NAMES.set("maroon","#800000"),COLOR_NAMES.set("mediumaquamarine","#66cdaa"),COLOR_NAMES.set("mediumblue","#0000cd"),COLOR_NAMES.set("mediumorchid","#ba55d3"),COLOR_NAMES.set("mediumpurple","#9370d8"),COLOR_NAMES.set("mediumseagreen","#3cb371"),COLOR_NAMES.set("mediumslateblue","#7b68ee"),COLOR_NAMES.set("mediumspringgreen","#00fa9a"),COLOR_NAMES.set("mediumturquoise","#48d1cc"),COLOR_NAMES.set("mediumvioletred","#c71585"),COLOR_NAMES.set("midnightblue","#191970"),COLOR_NAMES.set("mintcream","#f5fffa"),COLOR_NAMES.set("mistyrose","#ffe4e1"),COLOR_NAMES.set("moccasin","#ffe4b5"),COLOR_NAMES.set("navajowhite","#ffdead"),COLOR_NAMES.set("navy","#000080"),COLOR_NAMES.set("oldlace","#fdf5e6"),COLOR_NAMES.set("olive","#808000"),COLOR_NAMES.set("olivedrab","#6b8e23"),COLOR_NAMES.set("orange","#ffa500"),COLOR_NAMES.set("orangered","#ff4500"),COLOR_NAMES.set("orchid","#da70d6"),COLOR_NAMES.set("palegoldenrod","#eee8aa"),COLOR_NAMES.set("palegreen","#98fb98"),COLOR_NAMES.set("paleturquoise","#afeeee"),COLOR_NAMES.set("palevioletred","#d87093"),COLOR_NAMES.set("papayawhip","#ffefd5"),COLOR_NAMES.set("peachpuff","#ffdab9"),COLOR_NAMES.set("peru","#cd853f"),COLOR_NAMES.set("pink","#ffc0cb"),COLOR_NAMES.set("plum","#dda0dd"),COLOR_NAMES.set("powderblue","#b0e0e6"),COLOR_NAMES.set("purple","#800080"),COLOR_NAMES.set("rebeccapurple","#663399"),COLOR_NAMES.set("red","#ff0000"),COLOR_NAMES.set("rosybrown","#bc8f8f"),COLOR_NAMES.set("royalblue","#4169e1"),COLOR_NAMES.set("saddlebrown","#8b4513"),COLOR_NAMES.set("salmon","#fa8072"),COLOR_NAMES.set("sandybrown","#f4a460"),COLOR_NAMES.set("seagreen","#2e8b57"),COLOR_NAMES.set("seashell","#fff5ee"),COLOR_NAMES.set("sienna","#a0522d"),COLOR_NAMES.set("silver","#c0c0c0"),COLOR_NAMES.set("skyblue","#87ceeb"),COLOR_NAMES.set("slateblue","#6a5acd"),COLOR_NAMES.set("slategray","#708090"),COLOR_NAMES.set("snow","#fffafa"),COLOR_NAMES.set("springgreen","#00ff7f"),COLOR_NAMES.set("steelblue","#4682b4"),COLOR_NAMES.set("tan","#d2b48c"),COLOR_NAMES.set("teal","#008080"),COLOR_NAMES.set("thistle","#d8bfd8"),COLOR_NAMES.set("tomato","#ff6347"),COLOR_NAMES.set("turquoise","#40e0d0"),COLOR_NAMES.set("violet","#ee82ee"),COLOR_NAMES.set("wheat","#f5deb3"),COLOR_NAMES.set("white","#ffffff"),COLOR_NAMES.set("whitesmoke","#f5f5f5"),COLOR_NAMES.set("yellow","#ffff00"),COLOR_NAMES.set("yellowgreen","#9acd32");const DEFAULT_MD_EMBED_CSS='.snw-reference{display: none;}.excalidraw-md-host{padding:0px 10px}.excalidraw-md-footer{height:5px}foreignObject{background-color:transparent}p{display:block;margin-block-start:1em;margin-block-end:1em;margin-inline-start:0px;margin-inline-end:0px;color:inherit}table,tr,th,td{color:inherit;border:1px solid;border-collapse:collapse;padding:3px}th{font-weight:bold;border-bottom:double;background-color:silver}.copy-code-button{display:none}code[class*=language-],pre[class*=language-]{color:#393a34;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;font-size:.9em;line-height:1.2em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre>code[class*=language-]{font-size:1em}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{background:#C1DEF1}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{background:#C1DEF1}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;background-color:#0000001a}:not(pre)>code[class*=language-]{padding:.2em;padding-top:1px;padding-bottom:1px;background:#f8f8f8;border:1px solid #dddddd}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:green;font-style:italic}.token.namespace{opacity:.7}.token.string{color:#a31515}.token.punctuation,.token.operator{color:#393a34}.token.url,.token.symbol,.token.number,.token.boolean,.token.variable,.token.constant,.token.inserted{color:#36acaa}.token.atrule,.token.keyword,.token.attr-value,.language-autohotkey .token.selector,.language-json .token.boolean,.language-json .token.number,code[class*=language-css]{color:#00f}.token.function{color:#393a34}.token.deleted,.language-autohotkey .token.tag{color:#9a050f}.token.selector,.language-autohotkey .token.keyword{color:#00009f}.token.important{color:#e90}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.class-name,.language-json .token.property{color:#2b91af}.token.tag,.token.selector{color:maroon}.token.attr-name,.token.property,.token.regex,.token.entity{color:red}.token.directive.tag .tag{background:#ffff00;color:#393a34}.line-numbers.line-numbers .line-numbers-rows{border-right-color:#a5a5a5}.line-numbers .line-numbers-rows>span:before{color:#2b91af}.line-highlight.line-highlight{background:rgba(193,222,241,.2);background:-webkit-linear-gradient(left,rgba(193,222,241,.2) 70%,rgba(221,222,241,0));background:linear-gradient(to right,rgba(193,222,241,.2) 70%,rgba(221,222,241,0))}blockquote{ font-style:italic;background-color:rgb(46,43,42,0.1);margin:0;margin-left:1em;border-radius:0 4px 4px 0;border:1px solid hsl(0,80%,32%);border-left-width:8px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;padding:10px 20px;margin-inline-start:30px;margin-inline-end:30px;}',SCRIPTENGINE_ICON='',DISK_ICON_NAME="save",EXPORT_IMG_ICON=' ',EXPORT_IMG_ICON_NAME="export-img",EXCALIDRAW_ICON='',VIRGIL_DATAURL="data:application/font-woff;charset=utf-8;base64,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",VIRGIL_FONT=` @font-face {font-family: "Virgil";src: url("${VIRGIL_DATAURL}") format("woff2");}`,CASCADIA_FONT=' @font-face {font-family: "Cascadia";src: url("data:application/font-woff;charset=utf-8;base64,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XVtdpV2uXdBeAV4OXmBecl6GXpteyl74X1Vfsl/PX+xgDWAtYDVgPWBQYGNga2B9YIZgj2CcYKlgtmDLYOFg7GElYVthfmGgYa1hwmHdYgNiN2JVYoli0GL6Yzpjc2PbZINkrGUYZUBlTWVeZaNl8GX9Zi9mPGZNZrdm/mdPZ59nq2e4Z8hoAWhDaE9oW2hoaMto12jnaPNo/2mBaipqmGqlarFrRWtSa79sG2wnbFRskGzBbM5s32z7bQ5tF20fbR9tH20fbX9tzm4ebp9u+W9jb75wGnBgcKRw1HEucZRx1nIxcoly1HMHc1Nzm3P+dEJ0rXTvdR11YXWIdcl2LHZrdnN2e3aidqp2zHbwdwd3LHc/d213qHfGd/14JHhLeHt4rnjWeON5EnkpeUd5nHnBefJ5+noCeiV6T3pyenp6hXqcewR7kXu5e+R8Dnw3fHF8qnztfPp9B30UfSF9Ln07fUh9VX1ifW99fH2JfZZ9o32wfb19yn3YfeZ9834Bfg5+Hn4yfkJ+U35hfnd+h37Vf2iAj4CrgNeBDYEzgVmBgIGmgbmBzYH4gh2CUoKHgr2C84M1g/iEM4SIhK6Ey4T9hR6FQIVbhXaFiYWcha+FwoXSheuGAoYZhjCGR4Zoho+GnYazhsGGzobjhviHBYcah0yHaIgsiE6IcIi1iNuJA4lciWqJgImViaqJvYnRie6KDIosikyKbIqBio+KpIqyir+KzIrZiueK+4sPiySLOYtdi3GLhIuRi5+Ls4vIi9aL44vxi/+MFIwojD2MUoxfjGyMeYyFjJiMq4y/jNKM840NjSeNO41bjXSNjo2ijc6N7o4PjieOPY5TjmaOd46Njp6OtI7NjuGO8o8JjxqPMY9Lj2WPe4+Rj6aPvI/Kj96P75AAkA6QHJAukE6QdJCCkJ6QvJDKkN6Q75ECkRORIZE7kU+RY5F+kZSRqZHCkdiR7pIIkiSSQJJckniSlJK3ksiS2JLrkwCTDpMhkzKTQ5NQk12TcJOMk6+TvJPVk/GT/5QSlCSUNJRElFKUa5R+lJGUrJTClNiU8ZUHlR2VN5VTlWqVf5WUla2VwJXWleaV/JYNlieWOpZQlmCWdpaHlqCWtJbJluyXBZcflziXTJdgl3qXjpeil8WX3Zf1mGqYsZkFmTmZg5mvmcaZ5Zpamr6bHZtFm7icHZyAnN6dG52E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") format("woff2");}';class Random{constructor(e){this.seed=e}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},lzStringExports={},lzString={get exports(){return lzStringExports},set exports(e){lzStringExports=e}};function splitFolderAndFilename(e){const t=e.lastIndexOf("/"),A=-1==t?e:e.substring(t+1);return{folderpath:obsidian_module.normalizePath(e.substring(0,t)),filename:A,basename:A.replace(/\.[^/.]+$/,"")}}!function(e){var t=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",i={};function n(e,t){if(!i[e]){i[e]={};for(var A=0;A>>8,A[2*i+1]=r%256}return A},decompressFromUint8Array:function(t){if(null==t)return a.decompress(t);for(var A=new Array(t.length/2),i=0,n=A.length;i>=1}else{for(n=1,i=0;i>=1}0==--d&&(d=Math.pow(2,u),u++),delete s[c]}else for(n=r[c],i=0;i>=1;0==--d&&(d=Math.pow(2,u),u++),r[l]=h++,c=String(o)}if(""!==c){if(Object.prototype.hasOwnProperty.call(s,c)){if(c.charCodeAt(0)<256){for(i=0;i>=1}else{for(n=1,i=0;i>=1}0==--d&&(d=Math.pow(2,u),u++),delete s[c]}else for(n=r[c],i=0;i>=1;0==--d&&(d=Math.pow(2,u),u++)}for(n=2,i=0;i>=1;for(;;){if(p<<=1,m==t-1){g.push(A(p));break}m++}return g.join("")},decompress:function(e){return null==e?"":""==e?null:a._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,A,i){var n,a,r,s,o,l,c,d=[],h=4,u=4,g=3,p="",m=[],w={val:i(0),position:A,index:1};for(n=0;n<3;n+=1)d[n]=n;for(r=0,o=Math.pow(2,2),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;switch(r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;c=e(r);break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;c=e(r);break;case 2:return""}for(d[3]=c,a=c,m.push(c);;){if(w.index>t)return"";for(r=0,o=Math.pow(2,g),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;switch(c=r){case 0:for(r=0,o=Math.pow(2,8),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;d[u++]=e(r),c=u-1,h--;break;case 1:for(r=0,o=Math.pow(2,16),l=1;l!=o;)s=w.val&w.position,w.position>>=1,0==w.position&&(w.position=A,w.val=i(w.index++)),r|=(s>0?1:0)*l,l<<=1;d[u++]=e(r),c=u-1,h--;break;case 2:return m.join("")}if(0==h&&(h=Math.pow(2,g),g++),d[c])p=d[c];else{if(c!==u)return null;p=a+a.charAt(0)}m.push(p),d[u++]=a+p.charAt(0),a=p,0==--h&&(h=Math.pow(2,g),g++)}}};return a}();null!=e&&(e.exports=t)}(lzString);const download=(e,t,A)=>{const i=document.createElement("a");i.setAttribute("href",(e?`${e},`:"")+t),i.setAttribute("download",A),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)};function getIMGFilename(e,t){return`${e.substring(0,e.lastIndexOf("."))}.${t}`}function getNewUniqueFilepath(e,t,A){let i=obsidian_module.normalizePath(`${A}/${t}`),n=e.getAbstractFileByPath(i),a=0;const r=t.endsWith(".excalidraw.md")?".excalidraw.md":t.slice(t.lastIndexOf("."));for(;n;)i=obsidian_module.normalizePath(`${A}/${t.slice(0,t.lastIndexOf(r))}_${a}${r}`),a++,n=e.getAbstractFileByPath(i);return i}function getDrawingFilename(e){return e.drawingFilenamePrefix+(""!==e.drawingFilenameDateTime?window.moment().format(e.drawingFilenameDateTime):"")+(e.compatibilityMode?".excalidraw":e.useExcalidrawExtension?".excalidraw.md":".md")}function getEmbedFilename(e,t){return(t.drawingEmbedPrefixWithFilename?e:"")+t.drawingFilnameEmbedPostfix+(""!==t.drawingFilenameDateTime?window.moment().format(t.drawingFilenameDateTime):"")+(t.compatibilityMode?".excalidraw":t.useExcalidrawExtension?".excalidraw.md":".md")}async function checkAndCreateFolder(e){const t=app.vault;e=obsidian_module.normalizePath(e);const A=t.getAbstractFileByPathInsensitive(e);A&&A instanceof obsidian_module.TFolder||(A&&A instanceof obsidian_module.TFile&&new obsidian_module.Notice(`The folder cannot be created because it already exists as a file: ${e}.`),await t.createFolder(e))}const getURLImageExtension=e=>{const t=e.split("?")[0];return t.substring(t.lastIndexOf(".")+1)},getMimeType=e=>{switch(e){case"png":return"image/png";case"jpeg":case"jpg":return"image/jpeg";case"gif":return"image/gif";case"webp":return"image/webp";case"bmp":return"image/bmp";case"ico":return"image/x-icon";case"svg":case"md":return"image/svg+xml";default:return"application/octet-stream"}},getFileFromURL=async(e,t,A=1e3)=>{try{return await Promise.race([(async()=>new Promise((e=>setTimeout((()=>e(null)),A))))(),obsidian_module.requestUrl({url:e,method:"get",contentType:t,throw:!1})])}catch(t){return void errorlog({where:getFileFromURL,message:`URL did not load within timeout period of ${A}ms`,url:e})}},getDataURLFromURL=async(e,t,A=1e3)=>{const i=await getFileFromURL(e,t,A);return i&&200===i.status?await getDataURL(i.arrayBuffer,t):e},blobToBase64=async e=>{const t=await e.arrayBuffer(),A=new Uint8Array(t);for(var i="",n=A.byteLength,a=0;a(void 0===window.pdfjsLib&&await obsidian_module.loadPdfJs(),await window.pdfjsLib.getDocument(app.vault.getResourcePath(e)).promise),{exportToSvg:exportToSvg,exportToBlob:exportToBlob}=excalidrawLib;let versionUpdateChecked=!1;const checkExcalidrawVersion=async e=>{if(!versionUpdateChecked){versionUpdateChecked=!0;try{const e=async()=>JSON.parse(await obsidian_module.request({url:"https://api.github.com/repos/zsviczian/obsidian-excalidraw-plugin/releases?per_page=5&page=1"})),t=(await e()).map((e=>({version:e.tag_name,published:new Date(e.published_at)}))).filter((e=>e.version.match(/^\d+\.\d+\.\d+$/))).sort(((e,t)=>t.published-e.published))[0].version;isVersionNewerThanOther(t,PLUGIN_VERSION)&&new obsidian_module.Notice(`A newer version of Excalidraw is available in Community Plugins.\n\nYou are using ${PLUGIN_VERSION}.\nThe latest is ${t}`)}catch(e){errorlog({where:"Utils/checkExcalidrawVersion",error:e})}setTimeout((()=>versionUpdateChecked=!1),288e5)}};function wrapTextAtCharLength(e,t,A=!1,i=0){if(!t)return e;let n="";if(A){for(const A of e.split("\n")){const e=A.match(new RegExp(`(.){1,${t}}`,"g"));n+=e?`${e.join("\n")}\n`:"\n"}return n.replace(/\n$/,"")}const a=new RegExp(`(.{1,${t}})(\\s+|$\\n?)|([^\\s]{1,${t+i}})(\\s+|$\\n?)?`,"gm"),r=e.matchAll(a);let s;for(;!(s=r.next()).done;){n+=s.value[1]?s.value[1].trimEnd():s.value[3].trimEnd();const e=(s.value[2]?s.value[2].split("\n").length-1:0)+(s.value[4]?s.value[4].split("\n").length-1:0);n+="\n".repeat(e),0===e&&(n+="\n")}return n.replace(/\n$/,"")}new Random(Date.now());const rotate$1=(e,t,A,i,n)=>[(e-A)*Math.cos(n)-(t-i)*Math.sin(n)+A,(e-A)*Math.sin(n)+(t-i)*Math.cos(n)+i],rotatedDimensions=e=>{if(0===e.angle)return[e.x,e.y,e.width,e.height];const t=e.x+e.width/2,A=e.y+e.height/2,[i,n]=rotate$1(e.x,e.y,t,A,e.angle),[a,r]=rotate$1(e.x+e.width,e.y+e.height,t,A,e.angle);return[i{const s=1/A.value;return{x:(e-i)*s-a,y:(t-n)*s-r}},getDataURL=async(e,t)=>new Promise(((A,i)=>{const n=new FileReader;n.onload=()=>{const e=n.result;A(e)},n.onerror=e=>i(e),n.readAsDataURL(new Blob([new Uint8Array(e)],{type:t}))})),getFontDataURL=async(e,t,A,i)=>{let n="",a="",r="";const s=e.metadataCache.getFirstLinkpathDest(t,A);if(s){const t=await e.vault.readBinary(s),A=s.extension.startsWith("woff")?"application/font-woff":"font/truetype";a=null!=i?i:s.basename,r=await getDataURL(t,A),n=` @font-face {font-family: "${a}";src: url("${r}") format("${"ttf"===s.extension?"truetype":s.extension}");}`;const o=n.split(";base64,",2);n=`${o[0]};charset=utf-8;base64,${o[1]}`}return{fontDef:n,fontName:a,dataURL:r}},svgToBase64=e=>`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(e.replaceAll(" "," "))))}`,getBinaryFileFromDataURL=e=>{if(!e)return null;const t=e.matchAll(/base64,(.*)/g).next(),A=window.atob(t.value[1]),i=A.length,n=new Uint8Array(i);for(let e=0;e{var i;try{return await exportToSvg({elements:e.elements,appState:Object.assign({exportBackground:t.withBackground,exportWithDarkMode:!!t.withTheme&&"light"!=(null===(i=e.appState)||void 0===i?void 0:i.theme)},e.appState),files:e.files,exportPadding:A})}catch(e){return null}},getPNG=async(e,t,A,i=1)=>{var n;try{return await exportToBlob({elements:e.elements,appState:Object.assign({exportBackground:t.withBackground,exportWithDarkMode:!!t.withTheme&&"light"!=(null===(n=e.appState)||void 0===n?void 0:n.theme)},e.appState),files:e.files,exportPadding:A,mimeType:"image/png",getDimensions:(e,t)=>({width:e*i,height:t*i,scale:i})})}catch(e){return errorlog({where:"Utils.getPNG",error:e}),null}},getQuickImagePreview=async(e,t,A)=>{if(!e.settings.displayExportedImageIfAvailable)return null;const i=getIMGFilename(t,A),n=e.app.vault.getAbstractFileByPath(i);return n&&n instanceof obsidian_module.TFile?"png"===A?await e.app.vault.readBinary(n):await e.app.vault.read(n):null},embedFontsInSVG=(e,t)=>{const A=null!=e.querySelector("text[font-family^='Virgil']"),i=null!=e.querySelector("text[font-family^='Cascadia']"),n=null!=e.querySelector("text[font-family^='LocalFont']"),a=e.querySelector("defs");return a&&(i||A||n)&&(a.innerHTML=``),e},getImageSize=async e=>new Promise(((t,A)=>{const i=new Image;i.onload=()=>{t({height:i.naturalHeight,width:i.naturalWidth})},i.onerror=A,i.src=e})),scaleLoadedImage=(e,t)=>{let A=!1;if(!t||!e)return{dirty:A,scene:e};for(const i of t){const[t,n]=[i.size.width,i.size.height],a=i.size.width/i.size.height;e.elements.filter((e=>"image"===e.type&&e.fileId===i.id)).forEach((e=>{const[r,s]=[e.width,e.height];if(i.shouldScale){if(a!=r/s){A=!0;const i=Math.sqrt(r*s*n/t),a=Math.sqrt(r*s*t/n);e.height=i,e.width=a,e.y+=(s-i)/2,e.x+=(r-a)/2}}else r===t&&s===n||(A=!0,e.height=n,e.width=t,e.y+=(s-n)/2,e.x+=(r-t)/2)}))}return{dirty:A,scene:e}},setDocLeftHandedMode=(e,t)=>{const A=t.createElement("style");A.id="excalidraw-left-handed",A.textContent=".excalidraw .App-bottom-bar{justify-content:flex-end;}";const i=t.getElementById(A.id);i&&t.head.removeChild(i),e&&t.head.appendChild(A)},setLeftHandedMode=e=>{const t=new Set;app.workspace.iterateAllLeaves((A=>{const i=app.isMobile?document:A.view.containerEl.ownerDocument;i&&(t.has(i)||(t.add(i),setDocLeftHandedMode(e,i)))}))},getLinkParts=(e,t)=>{var A,i,n;const a=e.match(/(^[^#\|]*)#?(\^)?([^\|]*)?\|?(\d*)x?(\d*)/);return{original:e,path:t&&""===a[1]?t.path:a[1],isBlockRef:"^"===a[2],ref:null===(A=a[3])||void 0===A?void 0:A.replaceAll(REG_BLOCK_REF_CLEAN,""),width:a[4]?parseInt(a[4]):void 0,height:a[5]?parseInt(a[5]):void 0,page:parseInt(null===(n=null===(i=a[3])||void 0===i?void 0:i.match(/page=(\d*)/))||void 0===n?void 0:n[1])}},compress=e=>lzStringExports.compressToBase64(e).replace(/(.{64})/g,"$1\n\n"),decompress=e=>lzStringExports.decompressFromBase64(e.replaceAll("\n","").replaceAll("\r","")),hasExportTheme=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-dark"])return!0}return!1},getExportTheme=(e,t,A)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-dark"])return A.frontmatter["excalidraw-export-dark"]?"dark":"light"}return e.settings.exportWithTheme?A:"light"},hasExportBackground=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-transparent"])return!0}return!1},getWithBackground=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-transparent"])return!A.frontmatter["excalidraw-export-transparent"]}return e.settings.exportWithBackground},getExportPadding=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if(!(null==A?void 0:A.frontmatter))return e.settings.exportPaddingSVG;if(null!=A.frontmatter["excalidraw-export-padding"]){const e=parseInt(A.frontmatter["excalidraw-export-padding"]);if(!isNaN(e))return e}if(null!=A.frontmatter["excalidraw-export-svgpadding"]){const e=parseInt(A.frontmatter["excalidraw-export-svgpadding"]);if(!isNaN(e))return e}}return e.settings.exportPaddingSVG},getPNGScale=(e,t)=>{if(t){const A=e.app.metadataCache.getFileCache(t);if((null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-export-pngscale"]){const e=parseFloat(A.frontmatter["excalidraw-export-pngscale"]);if(!isNaN(e)&&e>0)return e}}return e.settings.pngExportScale},isVersionNewerThanOther=(e,t)=>{const A=e.match(/(\d*)\.(\d*)\.(\d*)/),i=t.match(/(\d*)\.(\d*)\.(\d*)/);return Boolean(A&&4===A.length&&i&&4===i.length&&!(isNaN(parseInt(A[1]))||isNaN(parseInt(A[2]))||isNaN(parseInt(A[3])))&&!(isNaN(parseInt(i[1]))||isNaN(parseInt(i[2]))||isNaN(parseInt(i[3])))&&(parseInt(A[1])>parseInt(i[1])||parseInt(A[1])>=parseInt(i[1])&&parseInt(A[2])>parseInt(i[2])||parseInt(A[1])>=parseInt(i[1])&&parseInt(A[2])>=parseInt(i[2])&&parseInt(A[3])>parseInt(i[3])))},getEmbeddedFilenameParts=e=>{const t=null==e?void 0:e.match(/([^#\^]*)((#\^)(group=|area=|taskbone)?([^\|]*)|(#)(group=|area=|taskbone)?([^\^\|]*))(.*)/);return t?{filepath:t[1],hasBlockref:Boolean(t[3]),hasGroupref:"group="===t[4]||"group="===t[7],hasTaskbone:"taskbone"===t[4]||"taskbone"===t[7],hasArearef:"area="===t[4]||"area="===t[7],blockref:t[5],hasSectionref:Boolean(t[6]),sectionref:t[8],linkpartReference:t[2],linkpartAlias:t[9]}:{filepath:e,hasBlockref:!1,hasGroupref:!1,hasTaskbone:!1,hasArearef:!1,blockref:"",hasSectionref:!1,sectionref:"",linkpartReference:"",linkpartAlias:""}},fragWithHTML=e=>createFragment((t=>t.createDiv().innerHTML=e)),errorlog=e=>{console.error(Object.assign({plugin:"Excalidraw"},e))},sleep$1=async e=>new Promise((t=>setTimeout(t,e))),log=console.log.bind(window.console),debug=console.log.bind(window.console),getContainerElement=(e,t)=>{var A;return e&&e.containerId&&null!==(A=t.elements.filter((t=>t.id===e.containerId))[0])&&void 0!==A?A:null},updateFrontmatterInString=(e,t)=>{if(!e)return e;for(const A of t){const t=new RegExp(`${A[0]}:\\s.*\\n`,"g");e=e.match(t)?e.replaceAll(t,`${A[0]}: ${A[1]}\n`):e.replace(/^---\n/,`---\n${A[0]}: ${A[1]}\n`)}return e},isHyperlink=e=>e&&!e.includes("\n")&&!e.includes("\r")&&e.match(/^https?:(\d*)?\/\/[^\s]*$/),isContainer=e=>{var t;return"arrow"!==e.type&&(null===(t=e.boundElements)||void 0===t?void 0:t.map((e=>e.type)).includes("text"))},hyperlinkIsImage=e=>{isHyperlink(e);const t=e.split("?")[0];return IMAGE_TYPES.contains(t.substring(t.lastIndexOf(".")+1))},hyperlinkIsYouTubeLink=e=>isHyperlink(e)&&(e.startsWith("https://youtu.be")||e.startsWith("https://www.youtube.com")||e.startsWith("https://youtube.com")||e.startsWith("https//www.youtu.be"))&&null!==e.match(/(youtu.be\/|v=)([^?\/\&]*)/),getYouTubeThumbnailLink=async e=>{const t=e.match(/(youtu.be\/|v=)([^?\/\&]*)/);if(!t||!t[2])return null;const A=t[2];let i=`https://i.ytimg.com/vi/${A}/maxresdefault.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1});return n&&200===n.status?i:(i=`https://i.ytimg.com/vi/${A}/hq720.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1}),n&&200===n.status?i:(i=`https://i.ytimg.com/vi/${A}/mqdefault.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1}),n&&200===n.status?i:`https://i.ytimg.com/vi/${A}/default.jpg`))},labelCTRL=()=>DEVICE.isIOS||DEVICE.isMacOS?"CMD":"CTRL",labelALT=()=>DEVICE.isIOS||DEVICE.isMacOS?"OPT":"ALT",labelMETA=()=>DEVICE.isIOS||DEVICE.isMacOS?"CTRL":DEVICE.isWindows?"WIN":"META",labelSHIFT=()=>"SHIFT",isCTRL=e=>DEVICE.isIOS||DEVICE.isMacOS?e.metaKey:e.ctrlKey,isALT=e=>e.altKey,isMETA=e=>DEVICE.isIOS||DEVICE.isMacOS?e.ctrlKey:e.metaKey,isSHIFT=e=>e.shiftKey,mdPropModifier=e=>!isSHIFT(e)&&isCTRL(e)&&!isALT(e)&&isMETA(e),scaleToFullsizeModifier=e=>isSHIFT(e)&&!isCTRL(e)&&!isALT(e)&&isMETA(e)||!isSHIFT(e)&&isCTRL(e)&&isALT(e)&&!isMETA(e),linkClickModifierType=e=>isCTRL(e)&&!isALT(e)&&isSHIFT(e)&&!isMETA(e)?"active-pane":!isCTRL(e)||isALT(e)||isSHIFT(e)||isMETA(e)?isCTRL(e)&&isALT(e)&&!isSHIFT(e)&&!isMETA(e)?"new-pane":DEVICE.isDesktop&&isCTRL(e)&&isALT(e)&&isSHIFT(e)&&!isMETA(e)?"popout-window":isCTRL(e)&&isALT(e)&&isSHIFT(e)&&!isMETA(e)?"new-tab":mdPropModifier(e)?"md-properties":"active-pane":"new-tab",externalDragModifierType=e=>(isSHIFT(e)||!isCTRL(e)||isALT(e)||isMETA(e))&&(isSHIFT(e)||isCTRL(e)||isALT(e)||!isMETA(e))?(!isSHIFT(e)||isCTRL(e)||isALT(e)||isMETA(e))&&(isSHIFT(e)||isCTRL(e)||!isALT(e)||isMETA(e))?"image-url":"image-import":"insert-link",internalDragModifierType=e=>(!isSHIFT(e)||isCTRL(e)||isALT(e)||isMETA(e))&&(isSHIFT(e)||!isCTRL(e)||isALT(e)||isMETA(e))?scaleToFullsizeModifier(e)?"image-fullsize":"link":"image",emulateCTRLClickForLinks=e=>({shiftKey:e.shiftKey,ctrlKey:e.ctrlKey||!(DEVICE.isIOS||DEVICE.isMacOS),metaKey:e.metaKey||DEVICE.isIOS||DEVICE.isMacOS,altKey:e.altKey}),getParentOfClass=(e,t)=>{var A;let i=e.parentElement;for(;i&&!(i instanceof window.HTMLBodyElement)&&!i.classList.contains(t);)i=i.parentElement;return(null===(A=null==i?void 0:i.classList)||void 0===A?void 0:A.contains(t))?i:null},getLeaf=(e,t,A)=>{switch(linkClickModifierType(A)){case"active-pane":return t;case"new-tab":default:return(()=>{if(!e.settings.openInMainWorkspace)return app.workspace.getLeaf("tab");const[A,i]=getLeafLoc(t);return"main"===A?app.workspace.getLeaf("tab"):getNewOrAdjacentLeaf(e,t)})();case"new-pane":return getNewOrAdjacentLeaf(e,t);case"popout-window":return app.workspace.openPopoutLeaf()}},getLeafLoc=e=>{const t=e.id,A=app.workspace.getLayout(),i=e=>e.children.filter((e=>"leaf"!==e.type)).map((e=>i(e))).flat().concat(e.children.filter((e=>"leaf"===e.type)).map((e=>e.id))),n=i(A.main);return[A.main&&n.contains(t)?"main":A.floating&&i(A.floating).contains(t)?"popout":A.left&&i(A.left).contains(t)?"left":A.right&&i(A.right).contains(t)?"right":"hover",n]},getNewOrAdjacentLeaf=(e,t)=>{const[A,i]=getLeafLoc(t),n=()=>{var e;let A=app.workspace.getMostRecentLeaf();return A&&A!==t&&(null===(e=A.view)||void 0===e?void 0:e.containerEl.ownerDocument)===document||(A=null,i.forEach((e=>{var i;const n=app.workspace.getLeafById(e);!A&&(null===(i=n.view)||void 0===i?void 0:i.navigation)&&t!==n&&(A=n)}))),A};if(e.settings.openInMainWorkspace||["main","left","right"].contains(A)){if(!e.settings.openInAdjacentPane){if("main"===A)return app.workspace.createLeafBySplit(t);const e=n();return e?"empty"===e.view.getViewType()?e:app.workspace.createLeafBySplit(e):app.workspace.getLeaf(!0)}const i=n();return null!=i?i:app.workspace.getLeaf(!0)}if(!e.settings.openInAdjacentPane)return app.workspace.createLeafBySplit(t);if("hover"===A){const A=new Set;return app.workspace.iterateAllLeaves((e=>{e!==t&&t.containerEl.parentElement===e.containerEl.parentElement&&A.add(e)})),0===A.size?e.app.workspace.createLeafBySplit(t):Array.from(A)[0]}if("popout"===A){const e=new Set;return app.workspace.iterateAllLeaves((A=>{A!==t&&A.view.navigation&&A.view.containerEl.ownerDocument===t.view.containerEl.ownerDocument&&e.add(A)})),0===e.size?app.workspace.createLeafBySplit(t):Array.from(e)[0]}return e.app.workspace.createLeafBySplit(t)},getAttachmentsFolderAndFilePath=async(e,t,A)=>{let i=e.vault.getConfig("attachmentFolderPath");if(i&&i.startsWith("./")){const e=`${splitFolderAndFilename(t).folderpath}/`;i=obsidian_module.normalizePath(e+i.substring(2))}return i&&"/"!==i||(i=""),await checkAndCreateFolder(i),{folder:i,filepath:obsidian_module.normalizePath(""===i?A:`${i}/${A}`)}},isObsidianThemeDark=()=>document.body.classList.contains("theme-dark");var ar={},cz={},da={},de={},en={INSTALL_SCRIPT:"Install the script",UPDATE_SCRIPT:"Update available - Click to install",CHECKING_SCRIPT:"Checking for newer version - Click to reinstall",UNABLETOCHECK_SCRIPT:"Update check failed - Click to reinstall",UPTODATE_SCRIPT:"Script is up to date - Click to reinstall",OPEN_AS_EXCALIDRAW:"Open as Excalidraw Drawing",TOGGLE_MODE:"Toggle between Excalidraw and Markdown mode",CONVERT_NOTE_TO_EXCALIDRAW:"Convert empty note to Excalidraw Drawing",CONVERT_EXCALIDRAW:"Convert *.excalidraw to *.md files",CREATE_NEW:"Create new drawing",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (Logseq compatibility)",DOWNLOAD_LIBRARY:"Export stencil library as an *.excalidrawlib file",OPEN_EXISTING_NEW_PANE:"Open existing drawing - IN A NEW PANE",OPEN_EXISTING_ACTIVE_PANE:"Open existing drawing - IN THE CURRENT ACTIVE PANE",TRANSCLUDE:"Embed a drawing",TRANSCLUDE_MOST_RECENT:"Embed the most recently edited drawing",TOGGLE_LEFTHANDED_MODE:"Toggle left-handed mode",NEW_IN_NEW_PANE:"Create new drawing - IN AN ADJACENT WINDOW",NEW_IN_NEW_TAB:"Create new drawing - IN A NEW TAB",NEW_IN_ACTIVE_PANE:"Create new drawing - IN THE CURRENT ACTIVE WINDOW",NEW_IN_POPOUT_WINDOW:"Create new drawing - IN A POPOUT WINDOW",NEW_IN_NEW_PANE_EMBED:"Create new drawing - IN AN ADJACENT WINDOW - and embed into active document",NEW_IN_NEW_TAB_EMBED:"Create new drawing - IN A NEW TAB - and embed into active document",NEW_IN_ACTIVE_PANE_EMBED:"Create new drawing - IN THE CURRENT ACTIVE WINDOW - and embed into active document",NEW_IN_POPOUT_WINDOW_EMBED:"Create new drawing - IN A POPOUT WINDOW - and embed into active document",TOGGLE_LOCK:"Toggle Text Element between edit RAW and PREVIEW",DELETE_FILE:"Delete selected image or Markdown file from Obsidian Vault",INSERT_LINK_TO_ELEMENT:`Copy markdown link for selected element to clipboard. ${labelCTRL()}+CLICK to copy 'group=' link. SHIFT+CLICK to copy an 'area=' link. ${labelALT()}+CLICK to watch a help video.`,INSERT_LINK_TO_ELEMENT_GROUP:"Copy 'group=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_AREA:"Copy 'area=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_NORMAL:"Copy markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_ERROR:"Select a single element in the scene",INSERT_LINK_TO_ELEMENT_READY:"Link is READY and available on the clipboard",INSERT_LINK:"Insert link to file",INSERT_IMAGE:"Insert image or Excalidraw drawing from your vault",IMPORT_SVG:"Import an SVG file as Excalidraw strokes (limited SVG support, TEXT currently not supported)",INSERT_MD:"Insert markdown file from vault",INSERT_PDF:"Insert PDF file from vault",INSERT_LATEX:`Insert LaTeX formula (e.g. \\binom{n}{k} = \\frac{n!}{k!(n-k)!}). ${labelALT()}+CLICK to watch a help video.`,ENTER_LATEX:"Enter a valid LaTeX expression",READ_RELEASE_NOTES:"Read latest release notes",RUN_OCR:"OCR: Grab text from freedraw scribble and pictures to clipboard",TRAY_MODE:"Toggle property-panel tray-mode",SEARCH:"Search for text in drawing",RESET_IMG_TO_100:"Set selected image element size to 100% of original",TEMPORARY_DISABLE_AUTOSAVE:"Disable autosave until next time Obsidian starts (only set this if you know what you are doing)",TEMPORARY_ENABLE_AUTOSAVE:"Enable autosave",INSTALL_SCRIPT_BUTTON:"Install or update Excalidraw Scripts",OPEN_AS_MD:"Open as Markdown",EXPORT_IMAGE:"Export Image",OPEN_LINK:"Open selected text as link\n(SHIFT+CLICK to open in a new pane)",EXPORT_EXCALIDRAW:"Export to an .Excalidraw file",LINK_BUTTON_CLICK_NO_TEXT:"Select a ImageElement, or select a TextElement that contains an internal or external link.\n",FILENAME_INVALID_CHARS:'File name cannot contain any of the following characters: * " \\ < > : | ? #',FORCE_SAVE:"Save (will also update transclusions)",RAW:"Change to PREVIEW mode (only effects text-elements with links or transclusions)",PARSED:"Change to RAW mode (only effects text-elements with links or transclusions)",NOFILE:"Excalidraw (no file)",COMPATIBILITY_MODE:"*.excalidraw file opened in compatibility mode. Convert to new format for full plugin functionality.",CONVERT_FILE:"Convert to new format",RELEASE_NOTES_NAME:"Display Release Notes after update",RELEASE_NOTES_DESC:"Toggle ON: Display release notes each time you update Excalidraw to a newer version.
Toggle OFF: Silent mode. You can still read release notes on GitHub.",NEWVERSION_NOTIFICATION_NAME:"Plugin update notification",NEWVERSION_NOTIFICATION_DESC:"Toggle ON: Show a notification when a new version of the plugin is available.
Toggle OFF: Silent mode. You need to check for plugin updates in Community Plugins.",FOLDER_NAME:"Excalidraw folder",FOLDER_DESC:"Default location for new drawings. If empty, drawings will be created in the Vault root.",FOLDER_EMBED_NAME:"Use Excalidraw folder when embedding a drawing into the active document",FOLDER_EMBED_DESC:"Define which folder to place the newly inserted drawing into when using the command palette action: 'Create a new drawing and embed into active document'.
Toggle ON: Use Excalidraw folder
Toggle OFF: Use the attachments folder defined in Obsidian settings.",TEMPLATE_NAME:"Excalidraw template file",TEMPLATE_DESC:"Full filepath to the Excalidraw template. E.g.: If your template is in the default Excalidraw folder and its name is Template.md, the setting would be: Excalidraw/Template.md (or just Excalidraw/Template - you may omit the .md file extension). If you are using Excalidraw in compatibility mode, then your template must be a legacy Excalidraw file as well such as Excalidraw/Template.excalidraw.",SCRIPT_FOLDER_NAME:"Excalidraw Automate script folder (CASE SeNSitiVE!)",SCRIPT_FOLDER_DESC:"The files you place in this folder will be treated as Excalidraw Automate scripts. You can access your scripts from Excalidraw via the Obsidian Command Palette. Assign hotkeys to your favorite scripts just like to any other Obsidian command. The folder may not be the root folder of your Vault. ",SAVING_HEAD:"Saving",COMPRESS_NAME:"Compress Excalidraw JSON in Markdown",COMPRESS_DESC:"By enabling this feature Excalidraw will store the drawing JSON in a Base64 compressed format using the LZ-String algorithm. This will reduce the chance of Excalidraw JSON cluttering your search results in Obsidian. As a side effect, this will also reduce the filesize of Excalidraw drawings. When you switch an Excalidraw drawing to Markdown view, using the options menu in Excalidraw, the file will be saved without compression, so that you can read and edit the JSON string. The drawing will be compressed again once you switch back to Excalidraw view. The setting only has effect 'point forward', meaning, existing drawings will not be effected by the setting until you open them and save them.
Toggle ON: Compress drawing JSON
Toggle OFF: Leave drawing JSON uncompressed",AUTOSAVE_INTERVAL_DESKTOP_NAME:"Interval for autosave on Desktop",AUTOSAVE_INTERVAL_DESKTOP_DESC:"The time interval between saves. Autosave will skip if there are no changes in the drawing. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. clicking on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly either by killing the Obsidian process, or clicking to close Obsidian altogether.",AUTOSAVE_INTERVAL_MOBILE_NAME:"Interval for autosave on Mobile",AUTOSAVE_INTERVAL_MOBILE_DESC:"I recommend a more frequent interval for Mobiles. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. tapping on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly (i.e. swiping it away). Also note, that when you switch apps on a Mobile device, sometimes Android and iOS closes Obsidian in the background to save system resources. In such a case Excalidraw will not be able to save the latest changes.",FILENAME_HEAD:"Filename",FILENAME_DESC:"

Click this link for the date and time format reference.

",FILENAME_SAMPLE:"Filename for a new drawing is: ",FILENAME_EMBED_SAMPLE:"Filename for a new embedded drawing is: ",FILENAME_PREFIX_NAME:"Filename prefix",FILENAME_PREFIX_DESC:"The first part of the filename",FILENAME_PREFIX_EMBED_NAME:"Filename prefix when embedding a new drawing into a markdown note",FILENAME_PREFIX_EMBED_DESC:"Should the filename of the newly inserted drawing start with the name of the active markdown note when using the command palette action: Create a new drawing and embed into active document?
Toggle ON: Yes, the filename of a new drawing should start with filename of the active document
Toggle OFF: No, filename of a new drawing should not include the filename of the active document",FILENAME_POSTFIX_NAME:"Custom text after markdown Note's name when embedding",FILENAME_POSTFIX_DESC:"Effects filename only when embedding into a markdown document. This text will be inserted after the note's name, but before the date.",FILENAME_DATE_NAME:"Filename Date",FILENAME_DATE_DESC:"The last part of the filename. Leave empty if you do not want a date.",FILENAME_EXCALIDRAW_EXTENSION_NAME:".excalidraw.md or .md",FILENAME_EXCALIDRAW_EXTENSION_DESC:"This setting does not apply if you use Excalidraw in compatibility mode, i.e. you are not using Excalidraw markdown files.
Toggle ON: filename ends with .excalidraw.md
Toggle OFF: filename ends with .md",DISPLAY_HEAD:"Display",DYNAMICSTYLE_NAME:"Dynamic styling",DYNAMICSTYLE_DESC:"Change Excalidraw UI colors to match the canvas color",LEFTHANDED_MODE_NAME:"Left-handed mode",LEFTHANDED_MODE_DESC:"Currently only has effect in tray-mode. If turned on, the tray will be on the right side.
Toggle ON: Left-handed mode.
Toggle OFF: Right-handed moded",MATCH_THEME_NAME:"New drawing to match Obsidian theme",MATCH_THEME_DESC:"If theme is dark, new drawing will be created in dark mode. This does not apply when you use a template for new drawings. Also this will not effect when you open an existing drawing. Those will follow the theme of the template/drawing respectively.
Toggle ON: Follow Obsidian Theme
Toggle OFF: Follow theme defined in your template",MATCH_THEME_ALWAYS_NAME:"Existing drawings to match Obsidian theme",MATCH_THEME_ALWAYS_DESC:"If theme is dark, drawings will be opened in dark mode. If your theme is light, they will be opened in light mode.
Toggle ON: Match Obsidian theme
Toggle OFF: Open with the same theme as last saved",MATCH_THEME_TRIGGER_NAME:"Excalidraw to follow when Obsidian Theme changes",MATCH_THEME_TRIGGER_DESC:"If this option is enabled open Excalidraw pane will switch to light/dark mode when Obsidian theme changes.
Toggle ON: Follow theme changes
Toggle OFF: Drawings are not effected by Obsidian theme changes",DEFAULT_OPEN_MODE_NAME:"Default mode when opening Excalidraw",DEFAULT_OPEN_MODE_DESC:"Specifies the mode how Excalidraw opens: Normal, Zen, or View mode. You may also set this behavior on a file level by adding the excalidraw-default-mode frontmatter key with a value of: normal, view, or zen to your document.",DEFAULT_PEN_MODE_NAME:"Pen mode",DEFAULT_PEN_MODE_DESC:"Should pen mode be automatically enabled when opening Excalidraw?",DEFAULT_PINCHZOOM_NAME:"Allow pinch zoom in pen mode",DEFAULT_PINCHZOOM_DESC:"Pinch zoom in pen mode when using the freedraw tool is disabled by default to prevent unwanted accidental zooming with your palm.
Toggle on: Enable pinch zoom in pen mode
Toggle off: Disable pinch zoom in pen mode",DEFAULT_WHEELZOOM_NAME:"Mouse wheel to zoom by default",DEFAULT_WHEELZOOM_DESC:`Toggle on: Mouse wheel to zoom; ${labelCTRL()} + mouse wheel to scroll
Toggle off: ${labelCTRL()} + mouse wheel to zoom; Mouse wheel to scroll`,ZOOM_TO_FIT_NAME:"Zoom to fit on view resize",ZOOM_TO_FIT_DESC:"Zoom to fit drawing when the pane is resized
Toggle ON: Zoom to fit
Toggle OFF: Auto zoom disabled",ZOOM_TO_FIT_ONOPEN_NAME:"Zoom to fit on file open",ZOOM_TO_FIT_ONOPEN_DESC:"Zoom to fit drawing when the drawing is first opened
Toggle ON: Zoom to fit
Toggle OFF: Auto zoom disabled",ZOOM_TO_FIT_MAX_LEVEL_NAME:"Zoom to fit max ZOOM level",ZOOM_TO_FIT_MAX_LEVEL_DESC:"Set the maximum level to which zoom to fit will enlarge the drawing. Minimum is 0.5 (50%) and maximum is 10 (1000%).",LINKS_HEAD:"Links and transclusion",LINKS_DESC:`${labelCTRL()}+CLICK on [[Text Elements]] to open them as links. If the selected text has more than one [[valid Obsidian links]], only the first will be opened. If the text starts as a valid web link (i.e. https:// or http://), then the plugin will open it in a browser. When Obsidian files change, the matching [[link]] in your drawings will also change. If you don't want text accidentally changing in your drawings use [[links|with aliases]].`,ADJACENT_PANE_NAME:"Open in adjacent pane",ADJACENT_PANE_DESC:`When ${labelCTRL()}+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane. Turning this setting on, Excalidraw will first look for an existing adjacent pane, and try to open the link there. Excalidraw will look for the adjacent pane based on your focus/navigation history, i.e. the workpane that was active before you activated Excalidraw.`,MAINWORKSPACE_PANE_NAME:"Open in main workspace",MAINWORKSPACE_PANE_DESC:`When ${labelCTRL()}+SHIFT clicking a link in Excalidraw, by default the plugin will open the link in a new pane in the current active window. Turning this setting on, Excalidraw will open the link in an existing or new pane in the main workspace. `,LINK_BRACKETS_NAME:"Show [[brackets]] around links",LINK_BRACKETS_DESC:"In PREVIEW mode, when parsing Text Elements, place brackets around links. You can override this setting for a specific drawing by adding excalidraw-link-brackets: true/false to the file's frontmatter.",LINK_PREFIX_NAME:"Link prefix",LINK_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-link-prefix: "📍 " to the file\'s frontmatter.',URL_PREFIX_NAME:"URL prefix",URL_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a URL link, precede the text with these characters. You can override this setting for a specific drawing by adding excalidraw-url-prefix: "🌐 " to the file\'s frontmatter.',PARSE_TODO_NAME:"Parse todo",PARSE_TODO_DESC:"Convert '- [ ] ' and '- [x] ' to checkpox and tick in the box.",TODO_NAME:"Open TODO icon",TODO_DESC:"Icon to use for open TODO items",DONE_NAME:"Completed TODO icon",DONE_DESC:"Icon to use for completed TODO items",HOVERPREVIEW_NAME:`Hover preview without pressing the ${labelCTRL()} key`,HOVERPREVIEW_DESC:`Toggle On: In Exalidraw view mode the hover preview for [[wiki links]] will be shown immediately, without the need to hold the ${labelCTRL()} key. In Excalidraw normal mode, the preview will be shown immediately only when hovering the blue link icon in the top right of the element.
Toggle Off: Hover preview is shown only when you hold the ${labelCTRL()} key while hovering the link.`,LINKOPACITY_NAME:"Opacity of link icon",LINKOPACITY_DESC:"Opacity of the link indicator icon in the top right corner of an element. 1 is opaque, 0 is transparent.",LINK_CTRL_CLICK_NAME:`${labelCTRL()}+CLICK on text with [[links]] or [](links) to open them`,LINK_CTRL_CLICK_DESC:"You can turn this feature off if it interferes with default Excalidraw features you want to use. If this is turned off, only the link button in the title bar of the drawing pane will open links.",TRANSCLUSION_WRAP_NAME:"Overflow wrap behavior of transcluded text",TRANSCLUSION_WRAP_DESC:"Number specifies the character count where the text should be wrapped. Set the text wrapping behavior of transcluded text. Turn this ON to force-wrap text (i.e. no overflow), or OFF to soft-wrap text (at the nearest whitespace).",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion word wrap default",TRANSCLUSION_DEFAULT_WRAP_DESC:"You can manually set/override word wrapping length using the `![[page#^block]]{NUMBER}` format. Normally you will not want to set a default, because if you transclude text inside a sticky note, then Excalidraw will automatically take care of word wrapping. Set this value to `0` if you do not want to set a default. ",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Page transclusion max char count",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"The maximum number of characters to display from the page when transcluding an entire page with the ![[markdown page]] format.",QUOTE_TRANSCLUSION_REMOVE_NAME:"Quote translusion: remove leading '> ' from each line",QUOTE_TRANSCLUSION_REMOVE_DESC:"Remove the leading '> ' from each line of the transclusion. This will improve readability of quotes in text only transclusions
Toggle ON: Remove leading '> '
Toggle OFF: Do not remove leading '> ' (note it will still be removed from the first row due to Obsidian API functionality)",GET_URL_TITLE_NAME:"Use iframely to resolve page title",GET_URL_TITLE_DESC:"Use the http://iframely.server.crestify.com/iframely?url= to get title of page when dropping a link into Excalidraw",MD_HEAD:"Markdown-embed settings",MD_HEAD_DESC:"You can transclude formatted markdown documents into drawings as images SHIFT drop from the file explorer or using the command palette action.",MD_TRANSCLUDE_WIDTH_NAME:"Default width of a transcluded markdown document",MD_TRANSCLUDE_WIDTH_DESC:"The width of the markdown page. This effects the word wrapping when transcluding longer paragraphs, and the width of the image element. You can override the default width of an embedded file using the [[filename#heading|WIDTHxMAXHEIGHT]] syntax in markdown view mode under embedded files.",MD_TRANSCLUDE_HEIGHT_NAME:"Default maximum height of a transcluded markdown document",MD_TRANSCLUDE_HEIGHT_DESC:"The embedded image will be as high as the markdown text requires, but not higher than this value. You can override this value by editing the embedded image link in markdown view mode with the following syntax [[filename#^blockref|WIDTHxMAXHEIGHT]].",MD_DEFAULT_FONT_NAME:"The default font typeface to use for embedded markdown files.",MD_DEFAULT_FONT_DESC:'Set this value to "Virgil" or "Cascadia" or the filename of a valid .ttf, .woff, or .woff2 font e.g. MyFont.woff2 You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font: font_or_filename',MD_DEFAULT_COLOR_NAME:"The default font color to use for embedded markdown files.",MD_DEFAULT_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-font-color: steelblue',MD_DEFAULT_BORDER_COLOR_NAME:"The default border color to use for embedded markdown files.",MD_DEFAULT_BORDER_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (color names), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: excalidraw-border-color: gray. Leave empty if you don\'t want a border. ',MD_CSS_NAME:"CSS file",MD_CSS_DESC:`The filename of the CSS to apply to markdown embeds. Provide the filename with extension (e.g. 'md-embed.css'). The css file may also be a plain markdown file (e.g. 'md-embed-css.md'), just make sure the content is written using valid css syntax. If you need to look at the HTML code you are applying the CSS to, then open Obsidian Developer Console (${DEVICE.isIOS||DEVICE.isMacOS?"CMD+OPT+i":"CTRL+SHIFT+i"}) and type in the following command: "ExcalidrawAutomate.mostRecentMarkdownSVG". This will display the most recent SVG generated by Excalidraw. Setting the font-family in the css is has limitations. By default only your operating system's standard fonts are available (see README for details). You can add one custom font beyond that using the setting above. You can override this css setting by adding the following frontmatter-key to the embedded markdown file: "excalidraw-css: css_file_in_vault|css-snippet".`,EMBED_HEAD:"Embed & Export",EMBED_REUSE_EXPORTED_IMAGE_NAME:"If found, use the already exported image for preview",EMBED_REUSE_EXPORTED_IMAGE_DESC:"This setting works in conjunction with the Auto-export SVG/PNG setting. If an exported image that matches the file name of the drawing is available, use that image instead of generating a preview image on the fly. This will result in faster previews especially when you have many embedded objects in the drawing, however, it may happen that your latest changes are not displayed and that the image will not automatically match your Obsidian theme in case you have changed the Obsidian theme since the export was created. This setting only applies to embedding images into markdown documents. For a number of reasons, the same approach cannot be used to expedite the loading of drawings with many embedded objects. See demonstration here.",EMBED_PREVIEW_SVG_NAME:"Display SVG in markdown preview",EMBED_PREVIEW_SVG_DESC:"Toggle ON: Embed drawing as an SVG image into the markdown preview.
Toggle OFF: Embed drawing as a PNG image. Note, that some of the image block referencing features do not work with PNG embeds.",PREVIEW_MATCH_OBSIDIAN_NAME:"Excalidraw preview to match Obsidian theme",PREVIEW_MATCH_OBSIDIAN_DESC:"Image preview in documents should match the Obsidian theme. If enabled, when Obsidian is in dark mode, Excalidraw images will render in dark mode. When Obsidian is in light mode, Excalidraw will render light mode as well. You may want to switch 'Export image with background' off for a more Obsidian-integrated look and feel.",EMBED_WIDTH_NAME:"Default width of embedded (transcluded) image",EMBED_WIDTH_DESC:"The default width of an embedded drawing. This applies to live preview edit and reading mode, as well as to hover previews. You can specify a custom width when embedding an image using the ![[drawing.excalidraw|100]] or [[drawing.excalidraw|100x100]] format.",EMBED_TYPE_NAME:"Type of file to insert into the document",EMBED_TYPE_DESC:"When you embed an image into a document using the command palette this setting will specify if Excalidraw should embed the original Excalidraw file or a PNG or an SVG copy. You need to enable auto-export PNG / SVG (see below under Export Settings) for those image types to be available in the dropdown. For drawings that do not have a a corresponding PNG or SVG readily available the command palette action will insert a broken link. You need to open the original drawing and initiate export manually. This option will not autogenerate PNG/SVG files, but will simply reference the already existing files.",EMBED_WIKILINK_NAME:"Embed SVG or PNG as Wiki link",EMBED_WIKILINK_DESC:"Toggle ON: Excalidraw will embed a [[wiki link]]. Toggle OFF: Excalidraw will embed a [markdown](link).",EXPORT_PNG_SCALE_NAME:"PNG export image scale",EXPORT_PNG_SCALE_DESC:"The size-scale of the exported PNG image",EXPORT_BACKGROUND_NAME:"Export image with background",EXPORT_BACKGROUND_DESC:"If turned off, the exported image will be transparent.",EXPORT_PADDING_NAME:"Image Padding",EXPORT_PADDING_DESC:"The padding (in pixels) around the exported SVG or PNG image. If you have curved lines close to the edge of the image they might get cropped during image export. You can increase this value to avoid cropping. You can also override this setting at a file level by adding the excalidraw-export-padding: 5 frontmatter key.",EXPORT_THEME_NAME:"Export image with theme",EXPORT_THEME_DESC:"Export the image matching the dark/light theme of your drawing. If turned off, drawings created in dark mode will appear as they would in light mode.",EXPORT_HEAD:"Auto-export Settings",EXPORT_SYNC_NAME:"Keep the .SVG and/or .PNG filenames in sync with the drawing file",EXPORT_SYNC_DESC:"When turned on, the plugin will automatically update the filename of the .SVG and/or .PNG files when the drawing in the same folder (and same name) is renamed. The plugin will also automatically delete the .SVG and/or .PNG files when the drawing in the same folder (and same name) is deleted. ",EXPORT_SVG_NAME:"Auto-export SVG",EXPORT_SVG_DESC:"Automatically create an SVG export of your drawing matching the title of your file. The plugin will save the *.SVG file in the same folder as the drawing. Embed the .svg file into your documents instead of Excalidraw making you embeds platform independent. While the auto-export switch is on, this file will get updated every time you edit the Excalidraw drawing with the matching name. You can override this setting on a file level by adding the excalidraw-autoexport frontmatter key. Valid values for this key are none,both,svg, and png",EXPORT_PNG_NAME:"Auto-export PNG",EXPORT_PNG_DESC:"Same as the auto-export SVG, but for *.PNG",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"Export both dark- and light-themed image",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"When enabled, Excalidraw will export two files instead of one: filename.dark.png, filename.light.png and/or filename.dark.svg and filename.light.svg
Double files will be exported both if auto-export SVG or PNG (or both) are enabled, as well as when clicking export on a single image.",COMPATIBILITY_HEAD:"Compatibility features",EXPORT_EXCALIDRAW_NAME:"Auto-export Excalidraw",EXPORT_EXCALIDRAW_DESC:"Same as the auto-export SVG, but for *.Excalidraw",SYNC_EXCALIDRAW_NAME:"Sync *.excalidraw with *.md version of the same drawing",SYNC_EXCALIDRAW_DESC:"If the modified date of the *.excalidraw file is more recent than the modified date of the *.md file then update the drawing in the .md file based on the .excalidraw file",COMPATIBILITY_MODE_NAME:"New drawings as legacy files",COMPATIBILITY_MODE_DESC:"By enabling this feature drawings you create with the ribbon icon, the command palette actions, and the file explorer are going to be all legacy *.excalidraw files. This setting will also turn off the reminder message when you open a legacy file for editing.",MATHJAX_NAME:"MathJax (LaTeX) javascript library host",MATHJAX_DESC:"If you are using LaTeX equiations in Excalidraw then the plugin needs to load a javascript library for that. Some users are unable to access certain host servers. If you are experiencing issues try changing the host here. You may need to restart Obsidian after closing settings, for this change to take effect.",LATEX_DEFAULT_NAME:"Default LaTeX formual for new equations",LATEX_DEFAULT_DESC:"Leave empty if you don't want a default formula. You can add default formatting here such as \\color{white}.",NONSTANDARD_HEAD:"Non-Excalidraw.com supported features",NONSTANDARD_DESC:"These features are not available on excalidraw.com. When exporting the drawing to Excalidraw.com these features will appear different.",CUSTOM_PEN_NAME:"Number of custom pens",CUSTOM_PEN_DESC:"You will see these pens next to the Obsidian Menu on the canvas. You can customize the pens on the canvas by long-pressing the pen button.",EXPERIMENTAL_HEAD:"Experimental features",EXPERIMENTAL_DESC:"Some of these setting will not take effect immediately, only when the File Explorer is refreshed, or Obsidian restarted.",FIELD_SUGGESTER_NAME:"Enable Field Suggester",FIELD_SUGGESTER_DESC:"Field Suggester borrowed from Breadcrumbs and Templater plugins. The Field Suggester will show an autocomplete menu when you type excalidraw- or ea. with function description as hints on the individual items in the list.",FILETYPE_NAME:"Display type (✏️) for excalidraw.md files in File Explorer",FILETYPE_DESC:"Excalidraw files will receive an indicator using the emoji or text defined in the next setting.",FILETAG_NAME:"Set the type indicator for excalidraw.md files",FILETAG_DESC:"The text or emoji to display as type indicator.",INSERT_EMOJI:"Insert an emoji",LIVEPREVIEW_NAME:"Immersive image embedding in live preview editing mode",LIVEPREVIEW_DESC:"Turn this on to support image embedding styles such as ![[drawing|width|style]] in live preview editing mode. The setting will not effect the currently open documents. You need close the open documents and re-open them for the change to take effect.",ENABLE_FOURTH_FONT_NAME:"Enable fourth font option",ENABLE_FOURTH_FONT_DESC:"By turning this on, you will see a fourth font button on the properties panel for text elements. Files that use this fourth font will (partly) lose their platform independence. Depending on the custom font set in settings, they will look differently when loaded in another vault, or at a later time. Also the 4th font will display as system default font on excalidraw.com, or other Excalidraw versions.",FOURTH_FONT_NAME:"Forth font file",FOURTH_FONT_DESC:"Select a .ttf, .woff or .woff2 font file from your vault to use as the fourth font. If no file is selected, Excalidraw will use the Virgil font by default.",SCRIPT_SETTINGS_HEAD:"Settings for installed Scripts",TASKBONE_HEAD:"Taskbone Optical Character Recogntion",TASKBONE_DESC:"This is an experimental integration of optical character recognition into Excalidraw. Please note, that taskbone is an independent external service not provided by Excalidraw, nor the Excalidraw-Obsidian plugin project. The OCR service will grab legible text from freedraw lines and embedded pictures on your canvas and place the recognized text in the frontmatter of your drawing as well as onto clipboard. Having the text in the frontmatter will enable you to search in Obsidian for the text contents of these. Note, that the process of extracting the text from the image is not done locally, but via an online API. The taskbone service stores the image on its servers only as long as necessary for the text extraction. However, if this is a dealbreaker, then please don't use this feature.",TASKBONE_ENABLE_NAME:"Enable Taskbone",TASKBONE_ENABLE_DESC:"By enabling this service your agree to the Taskbone Terms and Conditions and the Privacy Policy.",TASKBONE_APIKEY_NAME:"Taskbone API Key",TASKBONE_APIKEY_DESC:"Taskbone offers a free service with a reasonable number of scans per month. If you want to use this feature more frequently, or you want to supoprt the developer of Taskbone (as you can imagine, there is no such thing as 'free', providing this awesome OCR service costs some money to the developer of Taskbone), you can purchase a paid API key from taskbone.com. In case you have purchased a key, simply overwrite this auto generated free-tier API-key with your paid key.",SELECT_FILE:"Select a file then press enter.",SELECT_FILE_WITH_OPTION_TO_SCALE:`Select a file then press ENTER, or SHIFT+${labelMETA()}+ENTER to insert at 100% scale.`,NO_MATCH:"No file matches your query.",SELECT_FILE_TO_LINK:"Select the file you want to insert the link for.",SELECT_DRAWING:"Select the image or drawing you want to insert",TYPE_FILENAME:"Type name of drawing to select.",SELECT_FILE_OR_TYPE_NEW:"Select existing drawing or type name of a new drawing then press Enter.",SELECT_TO_EMBED:"Select the drawing to insert into active document.",SELECT_MD:"Select the markdown document you want to insert",SELECT_PDF:"Select the PDF document you want to insert",PDF_PAGES_HEADER:"Pages to load?",PDF_PAGES_DESC:"Format: 1, 3-5, 7, 9-11",INFINITE_LOOP_WARNING:"EXCALIDRAW WARNING\nAborted loading embedded images due to infinite loop in file:\n",SCRIPT_EXECUTION_ERROR:"Script execution error. Please find error message on the developer console.",LOAD_FROM_BACKUP:"Excalidraw file was corrupted. Loading from backup file.",GOTO_FULLSCREEN:"Goto fullscreen mode",EXIT_FULLSCREEN:"Exit fullscreen mode",TOGGLE_FULLSCREEN:"Toggle fullscreen mode",TOGGLE_DISABLEBINDING:"Toggle to invert default binding behavior",OPEN_LINK_CLICK:"Navigate to selected element link",OPEN_LINK_PROPS:"Open markdown-embed properties or open link in new window"},enGB={},es={},fr={},hi={},id={},it={},ja={},ko={},nl={},no={},pl={},pt={},ptBR={},ro={},ru={},tr={},zhCN={INSTALL_SCRIPT:"安装此脚本",UPDATE_SCRIPT:"有可用更新 - 点击安装",CHECKING_SCRIPT:"检查更新中 - 点击重新安装",UNABLETOCHECK_SCRIPT:"检查更新失败 - 点击重新安装",UPTODATE_SCRIPT:"脚本已是最新 - 点击重新安装",OPEN_AS_EXCALIDRAW:"打开为 Excalidraw 绘图",TOGGLE_MODE:"在 Excalidraw 和 Markdown 模式之间切换",CONVERT_NOTE_TO_EXCALIDRAW:"转换空白笔记为 Excalidraw 绘图",CONVERT_EXCALIDRAW:"转换 *.excalidraw 为 *.md 文件",CREATE_NEW:"新建 Excalidraw 绘图",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (兼容 Logseq)",DOWNLOAD_LIBRARY:"导出 stencil 库为 *.excalidrawlib 文件",OPEN_EXISTING_NEW_PANE:"打开已有的绘图 - 于新面板",OPEN_EXISTING_ACTIVE_PANE:"打开已有的绘图 - 于当前面板",TRANSCLUDE:"嵌入绘图(形如 ![[drawing]])到当前文档",TRANSCLUDE_MOST_RECENT:"嵌入最近编辑过的绘图(形如 ![[drawing]])到当前文档",TOGGLE_LEFTHANDED_MODE:"切换为左手模式",NEW_IN_NEW_PANE:"新建绘图 - 于新面板",NEW_IN_NEW_TAB:"新建绘图 - 于新页签",NEW_IN_ACTIVE_PANE:"新建绘图 - 于当前面板",NEW_IN_POPOUT_WINDOW:"新建绘图 - 于新窗口",NEW_IN_NEW_PANE_EMBED:"新建绘图 - 于新面板 - 并将其嵌入(形如 ![[drawing]])到当前文档",NEW_IN_NEW_TAB_EMBED:"新建绘图 - 于新页签 - 并将其嵌入(形如 ![[drawing]])到当前文档",NEW_IN_ACTIVE_PANE_EMBED:"新建绘图 - 于当前面板 - 并将其嵌入(形如 ![[drawing]])到当前文档",NEW_IN_POPOUT_WINDOW_EMBED:"新建绘图 - 于新窗口 - 并将其嵌入(形如 ![[drawing]])到当前文档",EXPORT_SVG:"导出 SVG 文件到当前目录",EXPORT_PNG:"导出 PNG 文件到当前目录",EXPORT_SVG_WITH_SCENE:"导出 SVG 文件(包含 Scene)到当前目录",EXPORT_PNG_WITH_SCENE:"导出 PNG 文件(包含 Scene)到当前目录",TOGGLE_LOCK:"文本元素:原文模式(RAW)⟺ 预览模式(PREVIEW)",DELETE_FILE:"从库中删除所选图像(或 MD-Embed)的源文件",INSERT_LINK_TO_ELEMENT:`复制所选元素的内部链接(形如 [[file#^elementID]])。\n按住 ${labelCTRL()} 可复制元素所在分组的内部链接(形如 [[file#^group=elementID]])。\n按住 SHIFT 可复制所选元素周围区域的内部链接(形如 [[file#^area=elementID]])。\n按住 ${labelALT()} 可观看视频演示。`,INSERT_LINK_TO_ELEMENT_GROUP:"复制所选元素所在分组的内部链接(形如 [[file#^group=elementID]])",INSERT_LINK_TO_ELEMENT_AREA:"复制所选元素周围区域的内部链接(形如 [[file#^area=elementID]])",INSERT_LINK_TO_ELEMENT_NORMAL:"复制所选元素的内部链接(形如 [[file#^elementID]])",INSERT_LINK_TO_ELEMENT_ERROR:"未选择画布里的单个元素",INSERT_LINK_TO_ELEMENT_READY:"链接已生成并复制到剪贴板",INSERT_LINK:"插入文件的内部链接(形如 [[drawing]])到当前绘图",INSERT_IMAGE:"插入图像(以图像形式嵌入)到当前绘图",IMPORT_SVG:"插入 SVG 矢量图形到当前绘图(支持有限,尚不支持文本)",INSERT_MD:"插入 Markdown 文档(以图像形式嵌入)到当前绘图",INSERT_LATEX:`插入 LaTeX 公式到当前绘图。按住 ${labelALT()} 可观看视频演示。`,ENTER_LATEX:"输入 LaTeX 表达式",READ_RELEASE_NOTES:"阅读本插件的更新说明",RUN_OCR:"OCR 识别涂鸦和图片里的文本并复制到剪贴板",TRAY_MODE:"绘图工具属性页:面板模式 ⟺ 托盘模式",SEARCH:"搜索文本",RESET_IMG_TO_100:"重设图像元素的尺寸为 100%",TEMPORARY_DISABLE_AUTOSAVE:"临时禁用自动保存功能,直到 Obsidian 退出(勿点,除非你清楚自己在干什么)",TEMPORARY_ENABLE_AUTOSAVE:"恢复启用自动保存功能",INSTALL_SCRIPT_BUTTON:"安装或更新 Excalidraw 脚本",OPEN_AS_MD:"打开为 Markdown 文件",SAVE_AS_PNG:`导出 PNG 到当前目录(按住 ${labelCTRL()} 设定导出路径;按住 SHIFT 在导出时包含 Scene)`,SAVE_AS_SVG:`导出 SVG 到当前目录(按住 ${labelCTRL()} 设定导出路径;按住 SHIFT 在导出时包含 Scene)`,OPEN_LINK:"打开所选元素里的链接 \n(按住 SHIFT 在新面板打开)",EXPORT_EXCALIDRAW:"导出为 .Excalidraw 文件",LINK_BUTTON_CLICK_NO_TEXT:"请选择一个含有链接的图形或文本元素。",FILENAME_INVALID_CHARS:'文件名不能含有以下符号: * " \\ < > : | ? #',FORCE_SAVE:"保存绘图(并更新嵌入了该绘图的面板)",RAW:"文本元素正以原文(RAW)模式显示链接。\n点击切换到预览(PREVIEW)模式",PARSED:"文本元素正以预览(PREVIEW)模式显示链接。\n点击切换到原文(RAW)模式",NOFILE:"Excalidraw(没有文件)",COMPATIBILITY_MODE:"*.excalidraw 文件正以兼容模式打开。需要转换为新格式才能使用插件的全部功能。",CONVERT_FILE:"转换为新格式",RELEASE_NOTES_NAME:"显示更新说明",RELEASE_NOTES_DESC:"开启:每次更新本插件后,显示最新发行版本的说明。
关闭:您仍可以在 GitHub 上阅读更新说明。",NEWVERSION_NOTIFICATION_NAME:"通知插件更新",NEWVERSION_NOTIFICATION_DESC:"开启:当本插件存在可用更新时,显示通知。
关闭:您需要手动检查本插件的更新(设置 - 第三方插件 - 检查更新)。",FOLDER_NAME:"Excalidraw 文件夹",FOLDER_DESC:"新绘图的默认存储路径。若为空,将在库的根目录中创建新绘图。",FOLDER_EMBED_NAME:"将 Excalidraw 文件夹用于“新建绘图”命令创建的绘图",FOLDER_EMBED_DESC:"在命令面板中执行“新建绘图”系列命令时,新绘图的存储路径。
开启:使用 Excalidraw 文件夹。
关闭:使用 Obsidian 设置的新附件默认位置。",TEMPLATE_NAME:"Excalidraw 模板文件",TEMPLATE_DESC:"Excalidraw 模板文件的完整路径。
如果您的模板在默认的 Excalidraw 文件夹中且文件名是 Template.md,则此项应设为 Excalidraw/Template.md(也可省略 .md 扩展名,即 Excalidraw/Template)。
如果您在兼容模式下使用 Excalidraw,那么您的模板文件也必须是旧的 *.excalidraw 格式,例如 Excalidraw/Template.excalidraw。",SCRIPT_FOLDER_NAME:"Excalidraw 自动化脚本的文件夹(大小写敏感!)",SCRIPT_FOLDER_DESC:"此文件夹用于存放 Excalidraw 自动化脚本。您可以在 Obsidian 命令面板中执行这些脚本,还可以为喜欢的脚本分配快捷键,就像为其他 Obsidian 命令分配快捷键一样。
该项不能设为库的根目录。",SAVING_HEAD:"保存",COMPRESS_NAME:"压缩 Excalidraw JSON",COMPRESS_DESC:"Excalidraw 绘图文件默认将元素记录为 JSON 格式。开启此项,可将元素的 JSON 数据以 BASE64 编码(使用 LZ-String 算法)。这样做的好处是:一方面可以避免原来的明文 JSON 数据干扰 Obsidian 的文本搜索结果,另一方面减小了绘图文件的体积。
当您通过功能区按钮或命令将绘图切换成 Markdown 模式时,数据将被解码回 JSON 格式以便阅读和编辑;而当您切换回 Excalidraw 模式时,数据就会被再次编码。
开启此项后,对于之前已存在的未压缩的绘图文件,需要重新打开并保存它们才能生效。",AUTOSAVE_INTERVAL_DESKTOP_NAME:"桌面端定期保存时间间隔",AUTOSAVE_INTERVAL_DESKTOP_DESC:"每隔多长时间触发一次自动保存。但如果当前绘图没有发生改变,将不会触发自动保存。当 Obsidian 应用内的焦点离开活动文档(如关闭工作空间、点击菜单栏、切换到其他页签或面板等)的时候,会触发自动保存。直接退出 Obsidian 应用(不管是终结进程还是点关闭按钮)不会触发自动保存。",AUTOSAVE_INTERVAL_MOBILE_NAME:"移动端定期保存时间间隔",AUTOSAVE_INTERVAL_MOBILE_DESC:"建议在移动端设置更短的自动保存时间间隔。当 Obsidian 应用内的焦点离开活动文档(如关闭工作空间、点击菜单栏、切换到其他页签或面板等)的时候,会触发自动保存。直接退出 Obsidian 应用(在应用切换器中划掉)不会触发自动保存。此外,当您切换到其他应用时,有时候系统会自动清理 Obsidian 后台以释放资源。这种情况下,Excalidraw 无法保存最新的变动。",FILENAME_HEAD:"文件名",FILENAME_DESC:"

点击阅读日期和时间格式参考

",FILENAME_SAMPLE:"“新建绘图”系列命令创建的文件名形如:",FILENAME_EMBED_SAMPLE:"“新建绘图并嵌入到当前文档”系列命令创建的文件名形如:",FILENAME_PREFIX_NAME:"“新建绘图”系列命令创建的文件名前缀",FILENAME_PREFIX_DESC:"执行“新建绘图”系列命令时,创建的绘图文件名的第一部分",FILENAME_PREFIX_EMBED_NAME:"“新建绘图并嵌入到当前文档”系列命令创建的文件名前缀",FILENAME_PREFIX_EMBED_DESC:"执行“新建绘图并嵌入到当前文档”系列命令时,创建的绘图文件名是否以当前文档名作为前缀?
开启:
关闭:否",FILENAME_POSTFIX_NAME:"“新建绘图并嵌入到当前文档”系列命令创建的文件名的中间部分",FILENAME_POSTFIX_DESC:"介于文件名前缀和日期时间之间的文本。仅对“新建绘图并嵌入到当前文档”系列命令创建的绘图生效。",FILENAME_DATE_NAME:"文件名里的日期时间",FILENAME_DATE_DESC:"文件名的最后一部分。允许留空。",FILENAME_EXCALIDRAW_EXTENSION_NAME:"文件扩展名(.excalidraw.md 或 .md)",FILENAME_EXCALIDRAW_EXTENSION_DESC:"该选项在兼容模式(即非 Excalidraw 专用 Markdown 文件)下不会生效。
开启:使用 .excalidraw.md 作为扩展名。
关闭:使用 .md 作为扩展名。",DISPLAY_HEAD:"显示",LEFTHANDED_MODE_NAME:"左手模式",LEFTHANDED_MODE_DESC:"目前只在托盘模式下生效。若开启此项,则托盘(绘图工具属性页)将位于右侧。
开启:左手模式。
关闭:右手模式。",MATCH_THEME_NAME:"使新建的绘图匹配 Obsidian 主题",MATCH_THEME_DESC:"如果 Obsidian 使用黑暗主题,新建的绘图文件也将使用黑暗主题。
但是若设置了模板,新建的绘图文件将跟随模板主题;另外,此功能不会作用于已有的绘图。
开启:跟随 Obsidian 主题风格。
关闭:跟随模板主题风格。",MATCH_THEME_ALWAYS_NAME:"使已有的绘图匹配 Obsidian 主题",MATCH_THEME_ALWAYS_DESC:"如果 Obsidian 使用黑暗主题,则绘图文件也将以黑暗主题打开;反之亦然。
开启:匹配 Obsidian 主题风格。
关闭:采用上次保存时的主题风格。",MATCH_THEME_TRIGGER_NAME:"Excalidraw 主题跟随 Obsidian 主题变化",MATCH_THEME_TRIGGER_DESC:"开启此项,则切换 Obsidian 的黑暗/明亮主题时,已打开的 Excalidraw 面板的主题会随之改变。
开启:跟随主题变化。
关闭:不跟随主题变化。",DEFAULT_OPEN_MODE_NAME:"Excalidraw 的默认运行模式",DEFAULT_OPEN_MODE_DESC:"设置 Excalidraw 的运行模式:普通模式(Normal)/禅模式(Zen)/阅读模式(View)。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-default-mode: normal/zen/view 的键值对。",DEFAULT_PEN_MODE_NAME:"触控笔模式(Pen mode)",DEFAULT_PEN_MODE_DESC:"打开绘图时,是否自动开启触控笔模式?",DEFAULT_PINCHZOOM_NAME:"允许在触控笔模式下进行双指缩放",DEFAULT_PINCHZOOM_DESC:"在触控笔模式下使用自由画笔工具时,双指缩放可能造成干扰。
开启: 允许在触控笔模式下进行双指缩放
关闭: 禁止在触控笔模式下进行双指缩放",DEFAULT_WHEELZOOM_NAME:"鼠标滚轮缩放页面",DEFAULT_WHEELZOOM_DESC:`开启:鼠标滚轮为缩放页面,${labelCTRL()}+鼠标滚轮为滚动页面
关闭:鼠标滚轮为滚动页面,${labelCTRL()}+鼠标滚轮为缩放页面`,ZOOM_TO_FIT_NAME:"调节面板尺寸后自动缩放页面",ZOOM_TO_FIT_DESC:"调节面板尺寸后,自适应地缩放页面
开启:自动缩放。
关闭:禁用自动缩放。",ZOOM_TO_FIT_ONOPEN_NAME:"打开绘图时自动缩放页面",ZOOM_TO_FIT_ONOPEN_DESC:"打开绘图文件时,自适应地缩放页面
开启:自动缩放。
关闭:禁用自动缩放。",ZOOM_TO_FIT_MAX_LEVEL_NAME:"自动缩放的最高级别",ZOOM_TO_FIT_MAX_LEVEL_DESC:"自动缩放画布时,允许放大的最高级别。该值不能低于 0.5(50%)且不能超过 10(1000%)。",LINKS_HEAD:"链接(Links) & 以文本形式嵌入到绘图中的文档(Transclusion)",LINKS_DESC:`按住 ${labelCTRL()} 并点击包含 [[链接]] 的文本元素可以打开其中的链接。如果所选文本元素包含多个 [[有效的内部链接]] ,只会打开第一个链接;如果所选文本元素包含有效的 URL 链接 (如 https://http://),插件会在浏览器中打开链接。
链接的源文件被重命名时,绘图中相应的 [[内部链接]] 也会同步更新。若您不愿绘图中的链接外观因此而变化,可使用 [[内部链接|别名]]。`,ADJACENT_PANE_NAME:"在相邻面板中打开",ADJACENT_PANE_DESC:`按住 ${labelCTRL()}+SHIFT 并点击绘图里的内部链接时,插件默认会在新面板中打开该链接。
若开启此项,Excalidraw 会先尝试寻找已有的相邻面板(按照右侧、左侧、上方、下方的顺序),并在其中打开该链接。如果找不到,再在新面板中打开。`,MAINWORKSPACE_PANE_NAME:"在主工作区中打开",MAINWORKSPACE_PANE_DESC:`按住 ${labelCTRL()}+SHIFT 并点击绘图里的内部链接时,插件默认会在当前窗口的新面板中打开该链接。
若开启此项,Excalidraw 会在主工作区的面板中打开该链接。`,LINK_BRACKETS_NAME:"在链接的两侧显示 [[中括号]]",LINK_BRACKETS_DESC:"文本元素处于预览(PREVIEW)模式时,在内部链接的两侧显示中括号。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-link-brackets: true/false 的键值对。",LINK_PREFIX_NAME:"内部链接的前缀",LINK_PREFIX_DESC:'文本元素处于预览(PREVIEW)模式时,如果其中包含链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-link-prefix: "📍 " 的键值对。',URL_PREFIX_NAME:"外部链接的前缀",URL_PREFIX_DESC:'文本元素处于预览(PREVIEW)模式时,如果其中包含外部链接,则添加此前缀。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-url-prefix: "🌐 " 的键值对。',PARSE_TODO_NAME:"待办任务(Todo)",PARSE_TODO_DESC:"将文本元素中的 - [ ]- [x] 前缀显示为方框。",TODO_NAME:"未完成项目",TODO_DESC:"未完成的待办项目的符号",DONE_NAME:"已完成项目",DONE_DESC:"已完成的待办项目的符号",HOVERPREVIEW_NAME:"鼠标悬停预览内部链接",HOVERPREVIEW_DESC:`开启:在 Excalidraw 阅读模式(View)下,鼠标悬停在 [[内部链接]] 上即可预览;而在普通模式(Normal)下, 鼠标悬停在内部链接右上角的蓝色标识上即可预览。
关闭:鼠标悬停在 [[内部链接]] 上,并且按住 ${labelCTRL()} 才能预览。`,LINKOPACITY_NAME:"链接标识的透明度",LINKOPACITY_DESC:"含有链接的元素,其右上角的链接标识的透明度。介于 0(全透明)到 1(不透明)之间。",LINK_CTRL_CLICK_NAME:`按住 ${labelCTRL()} 并点击含有 [[链接]] 或 [别名](链接) 的文本来打开链接`,LINK_CTRL_CLICK_DESC:"如果此功能影响到您使用某些原版 Excalidraw 功能,可将其关闭。关闭后,您只能通过绘图面板标题栏中的链接按钮来打开链接。",TRANSCLUSION_WRAP_NAME:"Transclusion 的折行方式",TRANSCLUSION_WRAP_DESC:"中的 number 表示嵌入的文本溢出时,在第几个字符处进行折行。
此开关控制具体的折行方式。若开启,则严格在 number 处折行,禁止溢出;若关闭,则允许在 number 位置后最近的空格处折行。",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion 的默认折行位置",TRANSCLUSION_DEFAULT_WRAP_DESC:"除了通过 ![[doc#^block]]{number} 中的 number 来控制折行位置,您也可以在此设置 number 的默认值。
一般设为 0 即可,表示不设置固定的默认值,这样当您需要嵌入文档到便签中时,Excalidraw 能更好地帮您自动处理。",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Transclusion 的最大显示字符数",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"以 ![[内部链接]]![](内部链接) 的形式将文档以文本形式嵌入到绘图中时,该文档在绘图中可显示的最大字符数量。",QUOTE_TRANSCLUSION_REMOVE_NAME:"隐藏 Transclusion 行首的引用符号",QUOTE_TRANSCLUSION_REMOVE_DESC:"不显示 Transclusion 中每一行行首的 > 符号,以提高纯文本 Transclusion 的可读性。
开启:隐藏 > 符号
关闭:不隐藏 > 符号(注意,由于 Obsidian API 的原因,首行行首的 > 符号不会被隐藏)",GET_URL_TITLE_NAME:"使用 iframly 获取页面标题",GET_URL_TITLE_DESC:"拖放链接到 Excalidraw 时,使用 http://iframely.server.crestify.com/iframely?url= 来获取页面的标题。",MD_HEAD:"以图像形式嵌入到绘图中的 Markdown 文档(MD-Embed)",MD_HEAD_DESC:`您还可以将 Markdown 文档以图像形式(而非文本形式)嵌入到绘图中。方法是按住 ${labelCTRL()} 并从文件管理器中把文档拖入绘图,或者执行“以图像形式嵌入”系列命令。`,MD_TRANSCLUDE_WIDTH_NAME:"MD-Embed 的默认宽度",MD_TRANSCLUDE_WIDTH_DESC:"MD-Embed 的宽度。该选项会影响到折行,以及图像元素的宽度。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#标题|宽度x最大高度]]。",MD_TRANSCLUDE_HEIGHT_NAME:"MD-Embed 的默认最大高度",MD_TRANSCLUDE_HEIGHT_DESC:"MD-Embed 的高度取决于 Markdown 文档内容的多少,但最大不会超过该值。
您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 [[Embed文件名#^块引ID|宽度x最大高度]]。",MD_DEFAULT_FONT_NAME:"MD-Embed 的默认字体",MD_DEFAULT_FONT_DESC:"可以设为 VirgilCasadia 或其他有效的 .ttf/.woff/.woff2 字体文件(如 我的字体.woff2)。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-font: 字体名或文件名 的键值对。",MD_DEFAULT_COLOR_NAME:"MD-Embed 的默认文本颜色",MD_DEFAULT_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-font-color: steelblue 的键值对。",MD_DEFAULT_BORDER_COLOR_NAME:"MD-Embed 的默认边框颜色",MD_DEFAULT_BORDER_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 HTML Color Names),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-border-color: gray 的键值对。
如果您不想要边框,请留空。",MD_CSS_NAME:"MD-Embed 的默认 CSS 样式表",MD_CSS_DESC:"MD-Embed 图像所采用的 CSS 样式表文件名。需包含扩展名,例如 md-embed.css。允许使用 Markdown 文件(如 md-embed-css.md),但其内容应符合 CSS 语法。
如果您要查询 CSS 所作用的 HTML 节点,请在 Obsidian 开发者控制台(CTRL+SHIFT+i)中键入命令:ExcalidrawAutomate.mostRecentMarkdownSVG —— 这将显示 Excalidraw 最近生成的 SVG。
此外,在 CSS 中不能任意地设置字体,您一般只能使用系统默认的标准字体(详见 README),但可以通过上面的设置来额外添加一个自定义字体。
您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 excalidraw-css: 库中的CSS文件或CSS片段 的键值对。",EMBED_HEAD:"嵌入到文档中的绘图(Embed) & 导出",EMBED_REUSE_EXPORTED_IMAGE_NAME:"将之前已导出的图像作为 Embed 的预览图(如果存在的话)",EMBED_REUSE_EXPORTED_IMAGE_DESC:"该选项与“自动导出 SVG/PNG 副本”选项配合使用。如果存在文件名相匹配的 SVG/PNG 副本,则将其作为 Embed 的预览图,而不再重新生成预览图。
该选项能够提高性能,尤其是当 Embed 中含有大量图像或 MD-Embed 时。但是,该选项也可能导致预览图无法立即响应你最新的修改,或者你对 Obsidian 主题风格的改变。
该选项仅作用于嵌入到文档中的绘图。由于种种原因,该技术无法用于加快绘图文件的打开速度。详见此说明。",EMBED_PREVIEW_SVG_NAME:"生成 SVG 格式的 Embed 预览图",EMBED_PREVIEW_SVG_DESC:"开启:在 Markdown 预览模式下,为 Embed 生成 SVG 格式的预览图。
关闭:为 Embed 生成 PNG 格式的预览图。注意:PNG 格式预览图不支持某些 绘图元素的块引用特性。",PREVIEW_MATCH_OBSIDIAN_NAME:"Embed 预览图匹配 Obsidian 主题",PREVIEW_MATCH_OBSIDIAN_DESC:"开启此项,则当 Obsidian 处于黑暗模式时,Embed 的预览图也会以黑暗模式渲染;当 Obsidian 处于明亮模式时,预览图也会以明亮模式渲染。
您可能还需要关闭“导出的图像包含背景”开关,来获得与 Obsidian 更加协调的观感。",EMBED_WIDTH_NAME:"Embed 预览图的默认宽度",EMBED_WIDTH_DESC:"该选项同时作用于 Obsidian 实时预览模式下的编辑视图和阅读视图,以及鼠标悬停时浮现的预览图。
您可为某个要嵌入到文档中的绘图(Embed)单独设置此项,方法是修改相应的链接格式为形如 ![[drawing.excalidraw|100]][[drawing.excalidraw|100x100]] 的格式。",EMBED_TYPE_NAME:"“嵌入绘图到当前文档”系列命令的源文件类型",EMBED_TYPE_DESC:"在命令面板中执行“嵌入绘图到当前文档”系列命令时,要嵌入绘图文件本身,还是嵌入其 PNG 或 SVG 副本。
如果您想选择 PNG 或 SVG 副本,需要先开启下方的“自动导出 PNG 副本”或“自动导出 SVG 副本”开关。
如果您选择了 PNG 或 SVG 副本,当副本不存在时,该命令将会插入一条损坏的链接,您需要打开绘图文件并手动导出副本才能修复 —— 也就是说,该选项不会自动帮您生成 PNG/SVG 副本,而只会引用已有的 PNG/SVG 副本。",EMBED_WIKILINK_NAME:"“嵌入绘图到当前文档”命令产生的内部链接类型",EMBED_WIKILINK_DESC:"开启:将产生 ![[Wiki 链接]]关闭:将产生 ![](Markdown 链接)。",EXPORT_PNG_SCALE_NAME:"导出的 PNG 图像的比例",EXPORT_PNG_SCALE_DESC:"导出的 PNG 图像的大小比例",EXPORT_BACKGROUND_NAME:"导出的图像包含背景",EXPORT_BACKGROUND_DESC:"如果关闭,将导出透明背景的图像。",EXPORT_PADDING_NAME:"导出的图像的空白边距",EXPORT_PADDING_DESC:"导出的 SVG/PNG 图像四周的空白边距(单位:像素)。
增加该值,可以避免在导出图像时,靠近图像边缘的图形被裁掉。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-export-padding: 5 的键值对。",EXPORT_THEME_NAME:"导出的图像包含主题",EXPORT_THEME_DESC:"导出与绘图的黑暗/明亮主题匹配的图像。如果关闭,在黑暗主题下导出的图像将和明亮主题一样。",EXPORT_HEAD:"导出设置",EXPORT_SYNC_NAME:"保持 SVG/PNG 文件名与绘图文件同步",EXPORT_SYNC_DESC:"打开后,当绘图文件被重命名时,插件将同步更新同文件夹下的同名 .SVG 和 .PNG 文件。当绘图文件被删除时,插件将自动删除同文件夹下的同名 .SVG 和 .PNG 文件。",EXPORT_SVG_NAME:"自动导出 SVG 副本",EXPORT_SVG_DESC:"自动导出和绘图文件同名的 SVG 副本。插件会将副本保存到绘图文件所在的文件夹中。在文档中嵌入这个 SVG 文件,相比直接嵌入绘图文件,具有更强的跨平台能力。
此开关开启时,每次您编辑 Excalidraw 绘图,其 SVG 文件副本都会同步更新。
您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 excalidraw-autoexport: none/both/svg/png的键值对",EXPORT_PNG_NAME:"自动导出 PNG 副本",EXPORT_PNG_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.PNG。",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"同时导出黑暗和明亮风格的图像",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"若开启,Excalidraw 将导出两个文件:filename.dark.png(或 filename.dark.svg)和 filename.light.png(或 filename.light.svg)。
该选项可作用于“自动导出 SVG 副本”、“自动导出 PNG 副本”,以及其他的手动的导出命令。",COMPATIBILITY_HEAD:"兼容性设置",EXPORT_EXCALIDRAW_NAME:"自动导出 Excalidraw 旧格式副本",EXPORT_EXCALIDRAW_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.excalidraw。",SYNC_EXCALIDRAW_NAME:"新旧格式绘图文件的内容保持同步",SYNC_EXCALIDRAW_DESC:"如果旧格式(*.excalidraw)绘图文件的修改日期比新格式(*.md)更新,则根据旧格式文件的内容来更新新格式文件。",COMPATIBILITY_MODE_NAME:"以旧格式创建新绘图",COMPATIBILITY_MODE_DESC:"开启此功能后,您通过功能区按钮、命令面板、文件浏览器等创建的绘图都将是旧格式(*.excalidraw)。此外,您打开旧格式绘图文件时将不再收到提醒消息。",MATHJAX_NAME:"MathJax (LaTeX) 的 javascript 库服务器",MATHJAX_DESC:"如果您在绘图中使用 LaTeX,插件需要从服务器获取并加载一个 javascript 库。如果您的网络无法访问某些库服务器,可以尝试通过此选项更换库服务器。更改此选项后,您可能需要重启 Obsidian 来使其生效。",NONSTANDARD_HEAD:"非 Excalidraw.com 官方支持的特性",NONSTANDARD_DESC:"这些特性不受 Excalidraw.com 官方支持。当导出绘图到 Excalidraw.com 时,这些特性将会发生变化。",CUSTOM_PEN_NAME:"自定义画笔的数量",CUSTOM_PEN_DESC:"在画布上的 Obsidian 菜单旁边切换自定义画笔。长按画笔按钮可以修改其样式。",EXPERIMENTAL_HEAD:"实验性功能",EXPERIMENTAL_DESC:"以下部分设置不会立即生效,需要刷新文件资源管理器或者重启 Obsidian 才会生效。",FIELD_SUGGESTER_NAME:"开启字段建议",FIELD_SUGGESTER_DESC:"开启后,当您在编辑器中输入 excalidraw- 或者 ea. 时,会弹出一个带有函数说明的自动补全提示菜单。
该功能借鉴了 Breadcrumbs 和 Templater 插件。",FILETYPE_NAME:"在文件浏览器中为 excalidraw.md 文件添加类型标识符(如 ✏️)",FILETYPE_DESC:"可通过下一项设置来自定义类型标识符。",FILETAG_NAME:"excalidraw.md 文件的类型标识符",FILETAG_DESC:"要显示为类型标识符的 emoji 或文本。",INSERT_EMOJI:"插入 emoji",LIVEPREVIEW_NAME:"嵌入绘图到文档时,模拟嵌入图像的语法",LIVEPREVIEW_DESC:"开启此项,则可在 Obsidian 实时预览模式的编辑视图下,用形如 ![[绘图|宽度|样式]] 的语法来嵌入绘图。
该选项不会在已打开的文档中立刻生效 —— 你需要重新打开此文档来使其生效。",ENABLE_FOURTH_FONT_NAME:"为文本元素启用本地字体",ENABLE_FOURTH_FONT_DESC:"开启此项后,文本元素的属性面板里会多出一个本地字体按钮。
使用了本地字体的绘图文件,将会失去一部分跨平台能力 —— 若将绘图文件移动到其他库中打开,显示效果可能会截然不同;若在 excalidraw.com 或者其他版本的 Excalidraw 中打开,使用本地字体的文本会变回系统默认字体。",FOURTH_FONT_NAME:"本地字体文件",FOURTH_FONT_DESC:"选择库文件夹中的一个 .ttf, .woff 或 .woff2 字体文件作为本地字体文件。若未选择文件,则使用默认的 Virgil 字体。",SCRIPT_SETTINGS_HEAD:"已安装脚本的设置",TASKBONE_HEAD:"Taskbone OCR(光学符号识别)",TASKBONE_DESC:"这是一个将 OCR 融入 Excalidraw 的实验性功能。请注意,Taskbone 是一项独立的外部服务,而不是由 Excalidraw 或 Obsidian-excalidraw-plugin 项目提供的。OCR 能够对画布上用自由画笔工具写下的涂鸦或者嵌入的图像进行文本识别,并将识别出来的文本写入绘图文件的 frontmatter,同时复制到剪贴板。之所以要写入 frontmatter 是为了便于您在 Obsidian 中能够搜索到这些文本。注意,识别的过程不是在本地进行的,而是通过在线 API,图像会被上传到 taskbone 的服务器(仅用于识别目的)。如果您对此敏感,请不要使用这个功能。",TASKBONE_ENABLE_NAME:"启用 Taskbone",TASKBONE_ENABLE_DESC:"启用这个功能意味着你同意 Taskbone 条款及细则 以及 隐私政策.",TASKBONE_APIKEY_NAME:"Taskbone API Key",TASKBONE_APIKEY_DESC:"Taskbone 的免费 API key 提供了一定数量的每月识别次数。如果您非常频繁地使用此功能,或者想要支持 Taskbone 的开发者(您懂的,没有人能用爱发电,Taskbone 开发者也需要投入资金才能持续运行这项 OCR 服务)您可以到 taskbone.com 购买一个商用 API key。购买后请将它填写到旁边这个文本框里,替换掉原本自动生成的免费 API key。",SELECT_FILE:"选择一个文件后按回车。",SELECT_FILE_WITH_OPTION_TO_SCALE:`选择一个文件后按回车,或者 SHIFT+${labelMETA()}+ENTER 以 100% 尺寸插入。`,NO_MATCH:"查询不到匹配的文件。",SELECT_FILE_TO_LINK:"选择要插入(链接)到当前绘图中的文件。",SELECT_DRAWING:"选择要插入(以图像形式嵌入)到当前绘图中的图像。",TYPE_FILENAME:"键入要选择的绘图名称。",SELECT_FILE_OR_TYPE_NEW:"选择已有绘图,或者新绘图的类型,然后按回车。",SELECT_TO_EMBED:"选择要插入(嵌入)到当前文档中的绘图。",SELECT_MD:"选择要插入(以图像形式嵌入)到当前绘图中的 Markdown 文档。",INFINITE_LOOP_WARNING:"EXCALIDRAW 警告\n停止加载嵌入的图像,因为此文件中存在死循环:\n",SCRIPT_EXECUTION_ERROR:"脚本运行错误。请在开发者控制台中查看错误信息。",LOAD_FROM_BACKUP:"Excalidraw 文件已损坏。尝试从备份文件中加载。",GOTO_FULLSCREEN:"进入全屏模式",EXIT_FULLSCREEN:"退出全屏模式",TOGGLE_FULLSCREEN:"切换全屏模式",OPEN_LINK_CLICK:"打开所选的图形或文本元素里的链接",OPEN_LINK_PROPS:"编辑所选 MD-Embed 的内部链接,或者打开所选的图形或文本元素里的链接"},zhTW={};const localeMap={ar:ar,cs:cz,da:da,de:de,en:en,"en-gb":enGB,es:es,fr:fr,hi:hi,id:id,it:it,ja:ja,ko:ko,nl:nl,nn:no,pl:pl,pt:pt,"pt-br":ptBR,ro:ro,ru:ru,tr:tr,"zh-cn":zhCN,"zh-tw":zhTW},locale=localeMap[obsidian_module.moment.locale()];function t$d(e){return locale||errorlog({where:"helpers.t",message:"Error: Excalidraw locale not found",locale:obsidian_module.moment.locale()}),locale&&locale[e]||en[e]}var html2canvasExports={},html2canvas$1={get exports(){return html2canvasExports},set exports(e){html2canvasExports=e}};html2canvas$1.exports=function(){ /*! ***************************************************************************** Copyright (c) Microsoft Corporation. @@ -14,8 +14,8 @@ const EXCALIDRAW_PACKAGES = "PQKhCgAIUgBAbAlgYwKYDsDOrICVUCGyALlDAE6EkB0ADuQPYAm OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ -var e=function(A,t){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,A){e.__proto__=A}||function(e,A){for(var t in A)Object.prototype.hasOwnProperty.call(A,t)&&(e[t]=A[t])},e(A,t)};function A(A,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=A}e(A,t),A.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var t=function(){return t=Object.assign||function(e){for(var A,t=1,n=arguments.length;t0&&i[i.length-1])||6!==a[0]&&2!==a[0])){r=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]=55296&&i<=56319&&t>10),r%1024+56320)),(i+1===t||n.length>16384)&&(a+=String.fromCharCode.apply(String,n),n.length=0)}return a},c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d="undefined"==typeof Uint8Array?[]:new Uint8Array(256),h=0;h=0){if(e<55296||e>56319&&e<=65535)return A=((A=this.index[e>>5])<<2)+(31&e),this.data[A];if(e<=65535)return A=((A=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[A];if(e>11),A=this.index[A],A+=e>>5&63,A=((A=this.index[A])<<2)+(31&e),this.data[A];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",B="undefined"==typeof Uint8Array?[]:new Uint8Array(256),E=0;E>4,c[o++]=(15&n)<<4|i>>2,c[o++]=(3&i)<<6|63&a;return l}(e),r=Array.isArray(a)?function(e){for(var A=e.length,t=[],n=0;n0;){var r=n[--a];if(Array.isArray(e)?-1!==e.indexOf(r):e===r)for(var s=t;s<=n.length;){var o;if((o=n[++s])===A)return!0;if(o!==b)break}if(r!==b)break}return!1},ne=function(e,A){for(var t=e;t>=0;){var n=A[t];if(n!==b)return n;t--}return 0},ie=function(e,A,t,n,i){if(0===t[n])return z;var a=n-1;if(Array.isArray(i)&&!0===i[a])return z;var r=a-1,s=a+1,o=A[a],l=r>=0?A[r]:0,c=A[s];if(2===o&&3===c)return z;if(-1!==Z.indexOf(o))return"!";if(-1!==Z.indexOf(c))return z;if(-1!==q.indexOf(c))return z;if(8===ne(a,A))return Y;if(11===j.get(e[a]))return z;if((o===N||o===D)&&11===j.get(e[s]))return z;if(7===o||7===c)return z;if(9===o)return z;if(-1===[b,C,v].indexOf(o)&&9===c)return z;if(-1!==[y,F,x,I,L].indexOf(c))return z;if(ne(a,A)===Q)return z;if(te(23,Q,a,A))return z;if(te([y,F],S,a,A))return z;if(te(12,12,a,A))return z;if(o===b)return Y;if(23===o||23===c)return z;if(16===c||16===o)return Y;if(-1!==[C,v,S].indexOf(c)||14===o)return z;if(36===l&&-1!==Ae.indexOf(o))return z;if(o===L&&36===c)return z;if(c===T)return z;if(-1!==J.indexOf(c)&&o===U||-1!==J.indexOf(o)&&c===U)return z;if(o===M&&-1!==[P,N,D].indexOf(c)||-1!==[P,N,D].indexOf(o)&&c===k)return z;if(-1!==J.indexOf(o)&&-1!==_.indexOf(c)||-1!==_.indexOf(o)&&-1!==J.indexOf(c))return z;if(-1!==[M,k].indexOf(o)&&(c===U||-1!==[Q,v].indexOf(c)&&A[s+1]===U)||-1!==[Q,v].indexOf(o)&&c===U||o===U&&-1!==[U,L,I].indexOf(c))return z;if(-1!==[U,L,I,y,F].indexOf(c))for(var d=a;d>=0;){if((h=A[d])===U)return z;if(-1===[L,I].indexOf(h))break;d--}if(-1!==[M,k].indexOf(c))for(d=-1!==[y,F].indexOf(o)?r:a;d>=0;){var h;if((h=A[d])===U)return z;if(-1===[L,I].indexOf(h))break;d--}if(V===o&&-1!==[V,K,H,R].indexOf(c)||-1!==[K,H].indexOf(o)&&-1!==[K,G].indexOf(c)||-1!==[G,R].indexOf(o)&&c===G)return z;if(-1!==ee.indexOf(o)&&-1!==[T,k].indexOf(c)||-1!==ee.indexOf(c)&&o===M)return z;if(-1!==J.indexOf(o)&&-1!==J.indexOf(c))return z;if(o===I&&-1!==J.indexOf(c))return z;if(-1!==J.concat(U).indexOf(o)&&c===Q&&-1===X.indexOf(e[s])||-1!==J.concat(U).indexOf(c)&&o===F)return z;if(41===o&&41===c){for(var u=t[a],g=1;u>0&&41===A[--u];)g++;if(g%2!=0)return z}return o===N&&c===D?z:Y},ae=function(e,A){A||(A={lineBreak:"normal",wordBreak:"normal"});var t=function(e,A){void 0===A&&(A="strict");var t=[],n=[],i=[];return e.forEach((function(e,a){var r=j.get(e);if(r>50?(i.push(!0),r-=50):i.push(!1),-1!==["normal","auto","loose"].indexOf(A)&&-1!==[8208,8211,12316,12448].indexOf(e))return n.push(a),t.push(16);if(4===r||11===r){if(0===a)return n.push(a),t.push(O);var s=t[a-1];return-1===$.indexOf(s)?(n.push(n[a-1]),t.push(s)):(n.push(a),t.push(O))}return n.push(a),31===r?t.push("strict"===A?S:P):r===W||29===r?t.push(O):43===r?e>=131072&&e<=196605||e>=196608&&e<=262141?t.push(P):t.push(O):void t.push(r)})),[n,t,i]}(e,A.lineBreak),n=t[0],i=t[1],a=t[2];"break-all"!==A.wordBreak&&"break-word"!==A.wordBreak||(i=i.map((function(e){return-1!==[U,O,W].indexOf(e)?P:e})));var r="keep-all"===A.wordBreak?a.map((function(A,t){return A&&e[t]>=19968&&e[t]<=40959})):void 0;return[n,i,r]},re=function(){function e(e,A,t,n){this.codePoints=e,this.required="!"===A,this.start=t,this.end=n}return e.prototype.slice=function(){return l.apply(void 0,this.codePoints.slice(this.start,this.end))},e}(),se=45,oe=43,le=-1,ce=function(e){return e>=48&&e<=57},de=function(e){return ce(e)||e>=65&&e<=70||e>=97&&e<=102},he=function(e){return 10===e||9===e||32===e},ue=function(e){return function(e){return function(e){return e>=97&&e<=122}(e)||function(e){return e>=65&&e<=90}(e)}(e)||function(e){return e>=128}(e)||95===e},ge=function(e){return ue(e)||ce(e)||e===se},pe=function(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e},me=function(e,A){return 92===e&&10!==A},we=function(e,A,t){return e===se?ue(A)||me(A,t):!!ue(e)||!(92!==e||!me(e,A))},fe=function(e,A,t){return e===oe||e===se?!!ce(A)||46===A&&ce(t):ce(46===e?A:e)},Be=function(e){var A=0,t=1;e[A]!==oe&&e[A]!==se||(e[A]===se&&(t=-1),A++);for(var n=[];ce(e[A]);)n.push(e[A++]);var i=n.length?parseInt(l.apply(void 0,n),10):0;46===e[A]&&A++;for(var a=[];ce(e[A]);)a.push(e[A++]);var r=a.length,s=r?parseInt(l.apply(void 0,a),10):0;69!==e[A]&&101!==e[A]||A++;var o=1;e[A]!==oe&&e[A]!==se||(e[A]===se&&(o=-1),A++);for(var c=[];ce(e[A]);)c.push(e[A++]);var d=c.length?parseInt(l.apply(void 0,c),10):0;return t*(i+s*Math.pow(10,-r))*Math.pow(10,o*d)},Ee={type:2},be={type:3},Ce={type:4},ve={type:13},ye={type:8},Fe={type:21},xe={type:9},Te={type:10},Se={type:11},Qe={type:12},Ie={type:14},Ue={type:23},ke={type:1},Me={type:25},Le={type:24},Oe={type:26},Ne={type:27},De={type:28},He={type:29},Re={type:31},Pe={type:32},Ve=function(){function e(){this._value=[]}return e.prototype.write=function(e){this._value=this._value.concat(o(e))},e.prototype.read=function(){for(var e=[],A=this.consumeToken();A!==Pe;)e.push(A),A=this.consumeToken();return e},e.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case 34:return this.consumeStringToken(34);case 35:var A=this.peekCodePoint(0),t=this.peekCodePoint(1),n=this.peekCodePoint(2);if(ge(A)||me(t,n)){var i=we(A,t,n)?2:1;return{type:5,value:this.consumeName(),flags:i}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),ve;break;case 39:return this.consumeStringToken(39);case 40:return Ee;case 41:return be;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Ie;break;case oe:if(fe(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 44:return Ce;case se:var a=e,r=this.peekCodePoint(0),s=this.peekCodePoint(1);if(fe(a,r,s))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(we(a,r,s))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(r===se&&62===s)return this.consumeCodePoint(),this.consumeCodePoint(),Le;break;case 46:if(fe(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var o=this.consumeCodePoint();if(42===o&&47===(o=this.consumeCodePoint()))return this.consumeToken();if(o===le)return this.consumeToken()}break;case 58:return Oe;case 59:return Ne;case 60:if(33===this.peekCodePoint(0)&&this.peekCodePoint(1)===se&&this.peekCodePoint(2)===se)return this.consumeCodePoint(),this.consumeCodePoint(),Me;break;case 64:var c=this.peekCodePoint(0),d=this.peekCodePoint(1),h=this.peekCodePoint(2);if(we(c,d,h))return{type:7,value:this.consumeName()};break;case 91:return De;case 92:if(me(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case 93:return He;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),ye;break;case 123:return Se;case 125:return Qe;case 117:case 85:var u=this.peekCodePoint(0),g=this.peekCodePoint(1);return u!==oe||!de(g)&&63!==g||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),xe;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),Fe;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Te;break;case le:return Pe}return he(e)?(this.consumeWhiteSpace(),Re):ce(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):ue(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:l(e)}},e.prototype.consumeCodePoint=function(){var e=this._value.shift();return void 0===e?-1:e},e.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},e.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},e.prototype.consumeUnicodeRangeToken=function(){for(var e=[],A=this.consumeCodePoint();de(A)&&e.length<6;)e.push(A),A=this.consumeCodePoint();for(var t=!1;63===A&&e.length<6;)e.push(A),A=this.consumeCodePoint(),t=!0;if(t)return{type:30,start:parseInt(l.apply(void 0,e.map((function(e){return 63===e?48:e}))),16),end:parseInt(l.apply(void 0,e.map((function(e){return 63===e?70:e}))),16)};var n=parseInt(l.apply(void 0,e),16);if(this.peekCodePoint(0)===se&&de(this.peekCodePoint(1))){this.consumeCodePoint(),A=this.consumeCodePoint();for(var i=[];de(A)&&i.length<6;)i.push(A),A=this.consumeCodePoint();return{type:30,start:n,end:parseInt(l.apply(void 0,i),16)}}return{type:30,start:n,end:n}},e.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return"url"===e.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},e.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===le)return{type:22,value:""};var A=this.peekCodePoint(0);if(39===A||34===A){var t=this.consumeStringToken(this.consumeCodePoint());return 0===t.type&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===le||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:t.value}):(this.consumeBadUrlRemnants(),Ue)}for(;;){var n=this.consumeCodePoint();if(n===le||41===n)return{type:22,value:l.apply(void 0,e)};if(he(n))return this.consumeWhiteSpace(),this.peekCodePoint(0)===le||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:l.apply(void 0,e)}):(this.consumeBadUrlRemnants(),Ue);if(34===n||39===n||40===n||pe(n))return this.consumeBadUrlRemnants(),Ue;if(92===n){if(!me(n,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),Ue;e.push(this.consumeEscapedCodePoint())}else e.push(n)}},e.prototype.consumeWhiteSpace=function(){for(;he(this.peekCodePoint(0));)this.consumeCodePoint()},e.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(41===e||e===le)return;me(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},e.prototype.consumeStringSlice=function(e){for(var A="";e>0;){var t=Math.min(5e4,e);A+=l.apply(void 0,this._value.splice(0,t)),e-=t}return this._value.shift(),A},e.prototype.consumeStringToken=function(e){for(var A="",t=0;;){var n=this._value[t];if(n===le||void 0===n||n===e)return{type:0,value:A+=this.consumeStringSlice(t)};if(10===n)return this._value.splice(0,t),ke;if(92===n){var i=this._value[t+1];i!==le&&void 0!==i&&(10===i?(A+=this.consumeStringSlice(t),t=-1,this._value.shift()):me(n,i)&&(A+=this.consumeStringSlice(t),A+=l(this.consumeEscapedCodePoint()),t=-1))}t++}},e.prototype.consumeNumber=function(){var e=[],A=4,t=this.peekCodePoint(0);for(t!==oe&&t!==se||e.push(this.consumeCodePoint());ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());t=this.peekCodePoint(0);var n=this.peekCodePoint(1);if(46===t&&ce(n))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),A=8;ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());t=this.peekCodePoint(0),n=this.peekCodePoint(1);var i=this.peekCodePoint(2);if((69===t||101===t)&&((n===oe||n===se)&&ce(i)||ce(n)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),A=8;ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[Be(e),A]},e.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),A=e[0],t=e[1],n=this.peekCodePoint(0),i=this.peekCodePoint(1),a=this.peekCodePoint(2);return we(n,i,a)?{type:15,number:A,flags:t,unit:this.consumeName()}:37===n?(this.consumeCodePoint(),{type:16,number:A,flags:t}):{type:17,number:A,flags:t}},e.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(de(e)){for(var A=l(e);de(this.peekCodePoint(0))&&A.length<6;)A+=l(this.consumeCodePoint());he(this.peekCodePoint(0))&&this.consumeCodePoint();var t=parseInt(A,16);return 0===t||function(e){return e>=55296&&e<=57343}(t)||t>1114111?65533:t}return e===le?65533:e},e.prototype.consumeName=function(){for(var e="";;){var A=this.consumeCodePoint();if(ge(A))e+=l(A);else{if(!me(A,this.peekCodePoint(0)))return this.reconsumeCodePoint(A),e;e+=l(this.consumeEscapedCodePoint())}}},e}(),Ke=function(){function e(e){this._tokens=e}return e.create=function(A){var t=new Ve;return t.write(A),new e(t.read())},e.parseValue=function(A){return e.create(A).parseComponentValue()},e.parseValues=function(A){return e.create(A).parseComponentValues()},e.prototype.parseComponentValue=function(){for(var e=this.consumeToken();31===e.type;)e=this.consumeToken();if(32===e.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var A=this.consumeComponentValue();do{e=this.consumeToken()}while(31===e.type);if(32===e.type)return A;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},e.prototype.parseComponentValues=function(){for(var e=[];;){var A=this.consumeComponentValue();if(32===A.type)return e;e.push(A),e.push()}},e.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},e.prototype.consumeSimpleBlock=function(e){for(var A={type:e,values:[]},t=this.consumeToken();;){if(32===t.type||qe(t,e))return A;this.reconsumeToken(t),A.values.push(this.consumeComponentValue()),t=this.consumeToken()}},e.prototype.consumeFunction=function(e){for(var A={name:e.value,values:[],type:18};;){var t=this.consumeToken();if(32===t.type||3===t.type)return A;this.reconsumeToken(t),A.values.push(this.consumeComponentValue())}},e.prototype.consumeToken=function(){var e=this._tokens.shift();return void 0===e?Pe:e},e.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},e}(),Ge=function(e){return 15===e.type},We=function(e){return 17===e.type},Xe=function(e){return 20===e.type},ze=function(e){return 0===e.type},Ye=function(e,A){return Xe(e)&&e.value===A},je=function(e){return 31!==e.type},Je=function(e){return 31!==e.type&&4!==e.type},Ze=function(e){var A=[],t=[];return e.forEach((function(e){if(4===e.type){if(0===t.length)throw new Error("Error parsing function args, zero tokens for arg");return A.push(t),void(t=[])}31!==e.type&&t.push(e)})),t.length&&A.push(t),A},qe=function(e,A){return 11===A&&12===e.type||28===A&&29===e.type||2===A&&3===e.type},_e=function(e){return 17===e.type||15===e.type},$e=function(e){return 16===e.type||_e(e)},eA=function(e){return e.length>1?[e[0],e[1]]:[e[0]]},AA={type:17,number:0,flags:4},tA={type:16,number:50,flags:4},nA={type:16,number:100,flags:4},iA=function(e,A,t){var n=e[0],i=e[1];return[aA(n,A),aA(void 0!==i?i:n,t)]},aA=function(e,A){if(16===e.type)return e.number/100*A;if(Ge(e))switch(e.unit){case"rem":case"em":return 16*e.number;default:return e.number}return e.number},rA="grad",sA="turn",oA=function(e,A){if(15===A.type)switch(A.unit){case"deg":return Math.PI*A.number/180;case rA:return Math.PI/200*A.number;case"rad":return A.number;case sA:return 2*Math.PI*A.number}throw new Error("Unsupported angle type")},lA=function(e){return 15===e.type&&("deg"===e.unit||e.unit===rA||"rad"===e.unit||e.unit===sA)},cA=function(e){switch(e.filter(Xe).map((function(e){return e.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[AA,AA];case"to top":case"bottom":return dA(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[AA,nA];case"to right":case"left":return dA(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[nA,nA];case"to bottom":case"top":return dA(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[nA,AA];case"to left":case"right":return dA(270)}return 0},dA=function(e){return Math.PI*e/180},hA=function(e,A){if(18===A.type){var t=EA[A.name];if(void 0===t)throw new Error('Attempting to parse an unsupported color function "'+A.name+'"');return t(e,A.values)}if(5===A.type){if(3===A.value.length){var n=A.value.substring(0,1),i=A.value.substring(1,2),a=A.value.substring(2,3);return pA(parseInt(n+n,16),parseInt(i+i,16),parseInt(a+a,16),1)}if(4===A.value.length){n=A.value.substring(0,1),i=A.value.substring(1,2),a=A.value.substring(2,3);var r=A.value.substring(3,4);return pA(parseInt(n+n,16),parseInt(i+i,16),parseInt(a+a,16),parseInt(r+r,16)/255)}if(6===A.value.length)return n=A.value.substring(0,2),i=A.value.substring(2,4),a=A.value.substring(4,6),pA(parseInt(n,16),parseInt(i,16),parseInt(a,16),1);if(8===A.value.length)return n=A.value.substring(0,2),i=A.value.substring(2,4),a=A.value.substring(4,6),r=A.value.substring(6,8),pA(parseInt(n,16),parseInt(i,16),parseInt(a,16),parseInt(r,16)/255)}if(20===A.type){var s=CA[A.value.toUpperCase()];if(void 0!==s)return s}return CA.TRANSPARENT},uA=function(e){return 0==(255&e)},gA=function(e){var A=255&e,t=255&e>>8,n=255&e>>16,i=255&e>>24;return A<255?"rgba("+i+","+n+","+t+","+A/255+")":"rgb("+i+","+n+","+t+")"},pA=function(e,A,t,n){return(e<<24|A<<16|t<<8|Math.round(255*n)<<0)>>>0},mA=function(e,A){if(17===e.type)return e.number;if(16===e.type){var t=3===A?1:255;return 3===A?e.number/100*t:Math.round(e.number/100*t)}return 0},wA=function(e,A){var t=A.filter(Je);if(3===t.length){var n=t.map(mA),i=n[0],a=n[1],r=n[2];return pA(i,a,r,1)}if(4===t.length){var s=t.map(mA),o=(i=s[0],a=s[1],r=s[2],s[3]);return pA(i,a,r,o)}return 0};function fA(e,A,t){return t<0&&(t+=1),t>=1&&(t-=1),t<1/6?(A-e)*t*6+e:t<.5?A:t<2/3?6*(A-e)*(2/3-t)+e:e}var BA=function(e,A){var t=A.filter(Je),n=t[0],i=t[1],a=t[2],r=t[3],s=(17===n.type?dA(n.number):oA(e,n))/(2*Math.PI),o=$e(i)?i.number/100:0,l=$e(a)?a.number/100:0,c=void 0!==r&&$e(r)?aA(r,1):1;if(0===o)return pA(255*l,255*l,255*l,1);var d=l<=.5?l*(o+1):l+o-l*o,h=2*l-d,u=fA(h,d,s+1/3),g=fA(h,d,s),p=fA(h,d,s-1/3);return pA(255*u,255*g,255*p,c)},EA={hsl:BA,hsla:BA,rgb:wA,rgba:wA},bA=function(e,A){return hA(e,Ke.create(A).parseComponentValue())},CA={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},vA={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(e,A){return A.map((function(e){if(Xe(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},yA={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},FA=function(e,A){var t=hA(e,A[0]),n=A[1];return n&&$e(n)?{color:t,stop:n}:{color:t,stop:null}},xA=function(e,A){var t=e[0],n=e[e.length-1];null===t.stop&&(t.stop=AA),null===n.stop&&(n.stop=nA);for(var i=[],a=0,r=0;ra?i.push(o):i.push(a),a=o}else i.push(null)}var l=null;for(r=0;re.optimumDistance)?{optimumCorner:A,optimumDistance:s}:e}),{optimumDistance:i?1/0:-1/0,optimumCorner:null}).optimumCorner},IA=function(e,A){var t=dA(180),n=[];return Ze(A).forEach((function(A,i){if(0===i){var a=A[0];if(20===a.type&&-1!==["top","left","right","bottom"].indexOf(a.value))return void(t=cA(A));if(lA(a))return void(t=(oA(e,a)+dA(270))%dA(360))}var r=FA(e,A);n.push(r)})),{angle:t,stops:n,type:1}},UA="closest-side",kA="farthest-side",MA="closest-corner",LA="farthest-corner",OA="circle",NA="ellipse",DA="cover",HA="contain",RA=function(e,A){var t=0,n=3,i=[],a=[];return Ze(A).forEach((function(A,r){var s=!0;if(0===r?s=A.reduce((function(e,A){if(Xe(A))switch(A.value){case"center":return a.push(tA),!1;case"top":case"left":return a.push(AA),!1;case"right":case"bottom":return a.push(nA),!1}else if($e(A)||_e(A))return a.push(A),!1;return e}),s):1===r&&(s=A.reduce((function(e,A){if(Xe(A))switch(A.value){case OA:return t=0,!1;case NA:return t=1,!1;case HA:case UA:return n=0,!1;case kA:return n=1,!1;case MA:return n=2,!1;case DA:case LA:return n=3,!1}else if(_e(A)||$e(A))return Array.isArray(n)||(n=[]),n.push(A),!1;return e}),s)),s){var o=FA(e,A);i.push(o)}})),{size:n,shape:t,stops:i,position:a,type:2}},PA=function(e,A){if(22===A.type){var t={url:A.value,type:0};return e.cache.addImage(A.value),t}if(18===A.type){var n=KA[A.name];if(void 0===n)throw new Error('Attempting to parse an unsupported image function "'+A.name+'"');return n(e,A.values)}throw new Error("Unsupported image type "+A.type)};var VA,KA={"linear-gradient":function(e,A){var t=dA(180),n=[];return Ze(A).forEach((function(A,i){if(0===i){var a=A[0];if(20===a.type&&"to"===a.value)return void(t=cA(A));if(lA(a))return void(t=oA(e,a))}var r=FA(e,A);n.push(r)})),{angle:t,stops:n,type:1}},"-moz-linear-gradient":IA,"-ms-linear-gradient":IA,"-o-linear-gradient":IA,"-webkit-linear-gradient":IA,"radial-gradient":function(e,A){var t=0,n=3,i=[],a=[];return Ze(A).forEach((function(A,r){var s=!0;if(0===r){var o=!1;s=A.reduce((function(e,A){if(o)if(Xe(A))switch(A.value){case"center":return a.push(tA),e;case"top":case"left":return a.push(AA),e;case"right":case"bottom":return a.push(nA),e}else($e(A)||_e(A))&&a.push(A);else if(Xe(A))switch(A.value){case OA:return t=0,!1;case NA:return t=1,!1;case"at":return o=!0,!1;case UA:return n=0,!1;case DA:case kA:return n=1,!1;case HA:case MA:return n=2,!1;case LA:return n=3,!1}else if(_e(A)||$e(A))return Array.isArray(n)||(n=[]),n.push(A),!1;return e}),s)}if(s){var l=FA(e,A);i.push(l)}})),{size:n,shape:t,stops:i,position:a,type:2}},"-moz-radial-gradient":RA,"-ms-radial-gradient":RA,"-o-radial-gradient":RA,"-webkit-radial-gradient":RA,"-webkit-gradient":function(e,A){var t=dA(180),n=[],i=1;return Ze(A).forEach((function(A,t){var a=A[0];if(0===t){if(Xe(a)&&"linear"===a.value)return void(i=1);if(Xe(a)&&"radial"===a.value)return void(i=2)}if(18===a.type)if("from"===a.name){var r=hA(e,a.values[0]);n.push({stop:AA,color:r})}else if("to"===a.name)r=hA(e,a.values[0]),n.push({stop:nA,color:r});else if("color-stop"===a.name){var s=a.values.filter(Je);if(2===s.length){r=hA(e,s[1]);var o=s[0];We(o)&&n.push({stop:{type:16,number:100*o.number,flags:o.flags},color:r})}}})),1===i?{angle:(t+dA(180))%dA(360),stops:n,type:i}:{size:3,shape:0,stops:n,position:[],type:i}}},GA={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,A){if(0===A.length)return[];var t=A[0];return 20===t.type&&"none"===t.value?[]:A.filter((function(e){return Je(e)&&function(e){return!(20===e.type&&"none"===e.value||18===e.type&&!KA[e.name])}(e)})).map((function(A){return PA(e,A)}))}},WA={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(e,A){return A.map((function(e){if(Xe(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},XA={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(e,A){return Ze(A).map((function(e){return e.filter($e)})).map(eA)}},zA={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(e,A){return Ze(A).map((function(e){return e.filter(Xe).map((function(e){return e.value})).join(" ")})).map(YA)}},YA=function(e){switch(e){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(e){e.AUTO="auto",e.CONTAIN="contain",e.COVER="cover"}(VA||(VA={}));var jA,JA={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(e,A){return Ze(A).map((function(e){return e.filter(ZA)}))}},ZA=function(e){return Xe(e)||$e(e)},qA=function(e){return{name:"border-"+e+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},_A=qA("top"),$A=qA("right"),et=qA("bottom"),At=qA("left"),tt=function(e){return{name:"border-radius-"+e,initialValue:"0 0",prefix:!1,type:1,parse:function(e,A){return eA(A.filter($e))}}},nt=tt("top-left"),it=tt("top-right"),at=tt("bottom-right"),rt=tt("bottom-left"),st=function(e){return{name:"border-"+e+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,A){switch(A){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},ot=st("top"),lt=st("right"),ct=st("bottom"),dt=st("left"),ht=function(e){return{name:"border-"+e+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,A){return Ge(A)?A.number:0}}},ut=ht("top"),gt=ht("right"),pt=ht("bottom"),mt=ht("left"),wt={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},ft={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(e,A){return"rtl"===A?1:0}},Bt={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(e,A){return A.filter(Xe).reduce((function(e,A){return e|Et(A.value)}),0)}},Et=function(e){switch(e){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},bt={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(e,A){switch(A){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},Ct={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(e,A){return 20===A.type&&"normal"===A.value?0:17===A.type||15===A.type?A.number:0}};!function(e){e.NORMAL="normal",e.STRICT="strict"}(jA||(jA={}));var vt,yt={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,A){return"strict"===A?jA.STRICT:jA.NORMAL}},Ft={name:"line-height",initialValue:"normal",prefix:!1,type:4},xt=function(e,A){return Xe(e)&&"normal"===e.value?1.2*A:17===e.type?A*e.number:$e(e)?aA(e,A):A},Tt={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(e,A){return 20===A.type&&"none"===A.value?null:PA(e,A)}},St={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(e,A){return"inside"===A?0:1}},Qt={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(e,A){switch(A){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},It=function(e){return{name:"margin-"+e,initialValue:"0",prefix:!1,type:4}},Ut=It("top"),kt=It("right"),Mt=It("bottom"),Lt=It("left"),Ot={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(e,A){return A.filter(Xe).map((function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},Nt={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(e,A){return"break-word"===A?"break-word":"normal"}},Dt=function(e){return{name:"padding-"+e,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},Ht=Dt("top"),Rt=Dt("right"),Pt=Dt("bottom"),Vt=Dt("left"),Kt={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(e,A){switch(A){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},Gt={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(e,A){switch(A){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Wt={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,A){return 1===A.length&&Ye(A[0],"none")?[]:Ze(A).map((function(A){for(var t={color:CA.TRANSPARENT,offsetX:AA,offsetY:AA,blur:AA},n=0,i=0;i1?1:0],this.overflowWrap=yn(e,Nt,A.overflowWrap),this.paddingTop=yn(e,Ht,A.paddingTop),this.paddingRight=yn(e,Rt,A.paddingRight),this.paddingBottom=yn(e,Pt,A.paddingBottom),this.paddingLeft=yn(e,Vt,A.paddingLeft),this.paintOrder=yn(e,fn,A.paintOrder),this.position=yn(e,Gt,A.position),this.textAlign=yn(e,Kt,A.textAlign),this.textDecorationColor=yn(e,tn,null!==(t=A.textDecorationColor)&&void 0!==t?t:A.color),this.textDecorationLine=yn(e,nn,null!==(n=A.textDecorationLine)&&void 0!==n?n:A.textDecoration),this.textShadow=yn(e,Wt,A.textShadow),this.textTransform=yn(e,Xt,A.textTransform),this.transform=yn(e,zt,A.transform),this.transformOrigin=yn(e,Zt,A.transformOrigin),this.visibility=yn(e,qt,A.visibility),this.webkitTextStrokeColor=yn(e,Bn,A.webkitTextStrokeColor),this.webkitTextStrokeWidth=yn(e,En,A.webkitTextStrokeWidth),this.wordBreak=yn(e,_t,A.wordBreak),this.zIndex=yn(e,$t,A.zIndex)}return e.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},e.prototype.isTransparent=function(){return uA(this.backgroundColor)},e.prototype.isTransformed=function(){return null!==this.transform},e.prototype.isPositioned=function(){return 0!==this.position},e.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},e.prototype.isFloating=function(){return 0!==this.float},e.prototype.isInlineLevel=function(){return cn(this.display,4)||cn(this.display,33554432)||cn(this.display,268435456)||cn(this.display,536870912)||cn(this.display,67108864)||cn(this.display,134217728)},e}(),Cn=function(e,A){this.content=yn(e,dn,A.content),this.quotes=yn(e,pn,A.quotes)},vn=function(e,A){this.counterIncrement=yn(e,hn,A.counterIncrement),this.counterReset=yn(e,un,A.counterReset)},yn=function(e,A,t){var n=new Ve,i=null!=t?t.toString():A.initialValue;n.write(i);var a=new Ke(n.read());switch(A.type){case 2:var r=a.parseComponentValue();return A.parse(e,Xe(r)?r.value:A.initialValue);case 0:return A.parse(e,a.parseComponentValue());case 1:return A.parse(e,a.parseComponentValues());case 4:return a.parseComponentValue();case 3:switch(A.format){case"angle":return oA(e,a.parseComponentValue());case"color":return hA(e,a.parseComponentValue());case"image":return PA(e,a.parseComponentValue());case"length":var s=a.parseComponentValue();return _e(s)?s:AA;case"length-percentage":var o=a.parseComponentValue();return $e(o)?o:AA;case"time":return en.parse(e,a.parseComponentValue())}}},Fn=function(e,A){var t=function(e){switch(e.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(e);return 1===t||A===t},xn=function(e,A){this.context=e,this.textNodes=[],this.elements=[],this.flags=0,Fn(A,3),this.styles=new bn(e,window.getComputedStyle(A,null)),Ii(A)&&(this.styles.animationDuration.some((function(e){return e>0}))&&(A.style.animationDuration="0s"),null!==this.styles.transform&&(A.style.transform="none")),this.bounds=s(this.context,A),Fn(A,4)&&(this.flags|=16)},Tn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Sn="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Qn=0;Qn=0){if(e<55296||e>56319&&e<=65535)return A=((A=this.index[e>>5])<<2)+(31&e),this.data[A];if(e<=65535)return A=((A=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[A];if(e>11),A=this.index[A],A+=e>>5&63,A=((A=this.index[A])<<2)+(31&e),this.data[A];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),kn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Mn="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Ln=0;Ln>10),r%1024+56320)),(i+1===t||n.length>16384)&&(a+=String.fromCharCode.apply(String,n),n.length=0)}return a},Vn=function(e,A){var t,n,i,a=function(e){var A,t,n,i,a,r=.75*e.length,s=e.length,o=0;"="===e[e.length-1]&&(r--,"="===e[e.length-2]&&r--);var l="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(r):new Array(r),c=Array.isArray(l)?l:new Uint8Array(l);for(A=0;A>4,c[o++]=(15&n)<<4|i>>2,c[o++]=(3&i)<<6|63&a;return l}(e),r=Array.isArray(a)?function(e){for(var A=e.length,t=[],n=0;n=55296&&i<=56319&&t=t)return{done:!0,value:null};for(var e=Kn;nr.x||i.y>r.y;return r=i,0===A||s}));return e.body.removeChild(A),s}(document);return Object.defineProperty(Jn,"SUPPORT_WORD_BREAKING",{value:e}),e},get SUPPORT_SVG_DRAWING(){var e=function(e){var A=new Image,t=e.createElement("canvas"),n=t.getContext("2d");if(!n)return!1;A.src="data:image/svg+xml,";try{n.drawImage(A,0,0),t.toDataURL()}catch(e){return!1}return!0}(document);return Object.defineProperty(Jn,"SUPPORT_SVG_DRAWING",{value:e}),e},get SUPPORT_FOREIGNOBJECT_DRAWING(){var e="function"==typeof Array.from&&"function"==typeof window.fetch?function(e){var A=e.createElement("canvas"),t=100;A.width=t,A.height=t;var n=A.getContext("2d");if(!n)return Promise.reject(!1);n.fillStyle="rgb(0, 255, 0)",n.fillRect(0,0,t,t);var i=new Image,a=A.toDataURL();i.src=a;var r=Yn(t,t,0,0,i);return n.fillStyle="red",n.fillRect(0,0,t,t),jn(r).then((function(A){n.drawImage(A,0,0);var i=n.getImageData(0,0,t,t).data;n.fillStyle="red",n.fillRect(0,0,t,t);var r=e.createElement("div");return r.style.backgroundImage="url("+a+")",r.style.height="100px",zn(i)?jn(Yn(t,t,0,0,r)):Promise.reject(!1)})).then((function(e){return n.drawImage(e,0,0),zn(n.getImageData(0,0,t,t).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(Jn,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:e}),e},get SUPPORT_CORS_IMAGES(){var e=void 0!==(new Image).crossOrigin;return Object.defineProperty(Jn,"SUPPORT_CORS_IMAGES",{value:e}),e},get SUPPORT_RESPONSE_TYPE(){var e="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(Jn,"SUPPORT_RESPONSE_TYPE",{value:e}),e},get SUPPORT_CORS_XHR(){var e="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Jn,"SUPPORT_CORS_XHR",{value:e}),e},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var e=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(Jn,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:e}),e}},Zn=function(e,A){this.text=e,this.bounds=A},qn=function(e,A){var t=A.ownerDocument;if(t){var n=t.createElement("html2canvaswrapper");n.appendChild(A.cloneNode(!0));var i=A.parentNode;if(i){i.replaceChild(n,A);var a=s(e,n);return n.firstChild&&i.replaceChild(n.firstChild,n),a}}return r.EMPTY},_n=function(e,A,t){var n=e.ownerDocument;if(!n)throw new Error("Node has no owner document");var i=n.createRange();return i.setStart(e,A),i.setEnd(e,A+t),i},$n=function(e){if(Jn.SUPPORT_NATIVE_TEXT_SEGMENTATION){var A=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(A.segment(e)).map((function(e){return e.segment}))}return function(e){for(var A,t=Xn(e),n=[];!(A=t.next()).done;)A.value&&n.push(A.value.slice());return n}(e)},ei=function(e,A){return 0!==A.letterSpacing?$n(e):function(e,A){if(Jn.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(t.segment(e)).map((function(e){return e.segment}))}return ti(e,A)}(e,A)},Ai=[32,160,4961,65792,65793,4153,4241],ti=function(e,A){for(var t,n=function(e,A){var t=o(e),n=ae(t,A),i=n[0],a=n[1],r=n[2],s=t.length,l=0,c=0;return{next:function(){if(c>=s)return{done:!0,value:null};for(var e=z;c0)if(Jn.SUPPORT_RANGE_BOUNDS){var i=_n(n,s,A.length).getClientRects();if(i.length>1){var o=$n(A),l=0;o.forEach((function(A){a.push(new Zn(A,r.fromDOMRectList(e,_n(n,l+s,A.length).getClientRects()))),l+=A.length}))}else a.push(new Zn(A,r.fromDOMRectList(e,i)))}else{var c=n.splitText(A.length);a.push(new Zn(A,qn(e,n))),n=c}else Jn.SUPPORT_RANGE_BOUNDS||(n=n.splitText(A.length));s+=A.length})),a}(e,this.text,t,A)},ii=function(e,A){switch(A){case 1:return e.toLowerCase();case 3:return e.replace(ai,ri);case 2:return e.toUpperCase();default:return e}},ai=/(^|\s|:|-|\(|\))([a-z])/g,ri=function(e,A,t){return e.length>0?A+t.toUpperCase():e},si=function(e){function t(A,t){var n=e.call(this,A,t)||this;return n.src=t.currentSrc||t.src,n.intrinsicWidth=t.naturalWidth,n.intrinsicHeight=t.naturalHeight,n.context.cache.addImage(n.src),n}return A(t,e),t}(xn),oi=function(e){function t(A,t){var n=e.call(this,A,t)||this;return n.canvas=t,n.intrinsicWidth=t.width,n.intrinsicHeight=t.height,n}return A(t,e),t}(xn),li=function(e){function t(A,t){var n=e.call(this,A,t)||this,i=new XMLSerializer,a=s(A,t);return t.setAttribute("width",a.width+"px"),t.setAttribute("height",a.height+"px"),n.svg="data:image/svg+xml,"+encodeURIComponent(i.serializeToString(t)),n.intrinsicWidth=t.width.baseVal.value,n.intrinsicHeight=t.height.baseVal.value,n.context.cache.addImage(n.svg),n}return A(t,e),t}(xn),ci=function(e){function t(A,t){var n=e.call(this,A,t)||this;return n.value=t.value,n}return A(t,e),t}(xn),di=function(e){function t(A,t){var n=e.call(this,A,t)||this;return n.start=t.start,n.reversed="boolean"==typeof t.reversed&&!0===t.reversed,n}return A(t,e),t}(xn),hi=[{type:15,flags:0,unit:"px",number:3}],ui=[{type:16,flags:0,number:50}],gi="checkbox",pi="radio",mi="password",wi=707406591,fi=function(e){function t(A,t){var n,i,a,s=e.call(this,A,t)||this;switch(s.type=t.type.toLowerCase(),s.checked=t.checked,s.value=0===(a=(i=t).type===mi?new Array(i.value.length+1).join("•"):i.value).length?i.placeholder||"":a,s.type!==gi&&s.type!==pi||(s.styles.backgroundColor=3739148031,s.styles.borderTopColor=s.styles.borderRightColor=s.styles.borderBottomColor=s.styles.borderLeftColor=2779096575,s.styles.borderTopWidth=s.styles.borderRightWidth=s.styles.borderBottomWidth=s.styles.borderLeftWidth=1,s.styles.borderTopStyle=s.styles.borderRightStyle=s.styles.borderBottomStyle=s.styles.borderLeftStyle=1,s.styles.backgroundClip=[0],s.styles.backgroundOrigin=[0],s.bounds=(n=s.bounds).width>n.height?new r(n.left+(n.width-n.height)/2,n.top,n.height,n.height):n.width0)t.textNodes.push(new ni(e,i,t.styles));else if(Qi(i))if(Wi(i)&&i.assignedNodes)i.assignedNodes().forEach((function(A){return vi(e,A,t,n)}));else{var r=yi(e,i);r.styles.isVisible()&&(xi(i,r,n)?r.flags|=4:Ti(r.styles)&&(r.flags|=2),-1!==Ci.indexOf(i.tagName)&&(r.flags|=8),t.elements.push(r),i.slot,i.shadowRoot?vi(e,i.shadowRoot,r,n):Ki(i)||Oi(i)||Gi(i)||vi(e,i,r,n))}},yi=function(e,A){return Ri(A)?new si(e,A):Di(A)?new oi(e,A):Oi(A)?new li(e,A):ki(A)?new ci(e,A):Mi(A)?new di(e,A):Li(A)?new fi(e,A):Gi(A)?new Bi(e,A):Ki(A)?new Ei(e,A):Pi(A)?new bi(e,A):new xn(e,A)},Fi=function(e,A){var t=yi(e,A);return t.flags|=4,vi(e,A,t,t),t},xi=function(e,A,t){return A.styles.isPositionedWithZIndex()||A.styles.opacity<1||A.styles.isTransformed()||Ni(e)&&t.styles.isTransparent()},Ti=function(e){return e.isPositioned()||e.isFloating()},Si=function(e){return e.nodeType===Node.TEXT_NODE},Qi=function(e){return e.nodeType===Node.ELEMENT_NODE},Ii=function(e){return Qi(e)&&void 0!==e.style&&!Ui(e)},Ui=function(e){return"object"==typeof e.className},ki=function(e){return"LI"===e.tagName},Mi=function(e){return"OL"===e.tagName},Li=function(e){return"INPUT"===e.tagName},Oi=function(e){return"svg"===e.tagName},Ni=function(e){return"BODY"===e.tagName},Di=function(e){return"CANVAS"===e.tagName},Hi=function(e){return"VIDEO"===e.tagName},Ri=function(e){return"IMG"===e.tagName},Pi=function(e){return"IFRAME"===e.tagName},Vi=function(e){return"STYLE"===e.tagName},Ki=function(e){return"TEXTAREA"===e.tagName},Gi=function(e){return"SELECT"===e.tagName},Wi=function(e){return"SLOT"===e.tagName},Xi=function(e){return e.tagName.indexOf("-")>0},zi=function(){function e(){this.counters={}}return e.prototype.getCounterValue=function(e){var A=this.counters[e];return A&&A.length?A[A.length-1]:1},e.prototype.getCounterValues=function(e){return this.counters[e]||[]},e.prototype.pop=function(e){var A=this;e.forEach((function(e){return A.counters[e].pop()}))},e.prototype.parse=function(e){var A=this,t=e.counterIncrement,n=e.counterReset,i=!0;null!==t&&t.forEach((function(e){var t=A.counters[e.counter];t&&0!==e.increment&&(i=!1,t.length||t.push(1),t[Math.max(0,t.length-1)]+=e.increment)}));var a=[];return i&&n.forEach((function(e){var t=A.counters[e.counter];a.push(e.counter),t||(t=A.counters[e.counter]=[]),t.push(e.reset)})),a},e}(),Yi={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},ji={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},Ji={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},Zi={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},qi=function(e,A,t,n,i,a){return et?ra(e,i,a.length>0):n.integers.reduce((function(A,t,i){for(;e>=t;)e-=t,A+=n.values[i];return A}),"")+a},_i=function(e,A,t,n){var i="";do{t||e--,i=n(e)+i,e/=A}while(e*A>=A);return i},$i=function(e,A,t,n,i){var a=t-A+1;return(e<0?"-":"")+(_i(Math.abs(e),a,n,(function(e){return l(Math.floor(e%a)+A)}))+i)},ea=function(e,A,t){void 0===t&&(t=". ");var n=A.length;return _i(Math.abs(e),n,!1,(function(e){return A[Math.floor(e%n)]}))+t},Aa=function(e,A,t,n,i,a){if(e<-9999||e>9999)return ra(e,4,i.length>0);var r=Math.abs(e),s=i;if(0===r)return A[0]+s;for(var o=0;r>0&&o<=4;o++){var l=r%10;0===l&&cn(a,1)&&""!==s?s=A[l]+s:l>1||1===l&&0===o||1===l&&1===o&&cn(a,2)||1===l&&1===o&&cn(a,4)&&e>100||1===l&&o>1&&cn(a,8)?s=A[l]+(o>0?t[o-1]:"")+s:1===l&&o>0&&(s=t[o-1]+s),r=Math.floor(r/10)}return(e<0?n:"")+s},ta="十百千萬",na="拾佰仟萬",ia="マイナス",aa="마이너스",ra=function(e,A,t){var n=t?". ":"",i=t?"、":"",a=t?", ":"",r=t?" ":"";switch(A){case 0:return"•"+r;case 1:return"◦"+r;case 2:return"◾"+r;case 5:var s=$i(e,48,57,!0,n);return s.length<4?"0"+s:s;case 4:return ea(e,"〇一二三四五六七八九",i);case 6:return qi(e,1,3999,Yi,3,n).toLowerCase();case 7:return qi(e,1,3999,Yi,3,n);case 8:return $i(e,945,969,!1,n);case 9:return $i(e,97,122,!1,n);case 10:return $i(e,65,90,!1,n);case 11:return $i(e,1632,1641,!0,n);case 12:case 49:return qi(e,1,9999,ji,3,n);case 35:return qi(e,1,9999,ji,3,n).toLowerCase();case 13:return $i(e,2534,2543,!0,n);case 14:case 30:return $i(e,6112,6121,!0,n);case 15:return ea(e,"子丑寅卯辰巳午未申酉戌亥",i);case 16:return ea(e,"甲乙丙丁戊己庚辛壬癸",i);case 17:case 48:return Aa(e,"零一二三四五六七八九",ta,"負",i,14);case 47:return Aa(e,"零壹貳參肆伍陸柒捌玖",na,"負",i,15);case 42:return Aa(e,"零一二三四五六七八九",ta,"负",i,14);case 41:return Aa(e,"零壹贰叁肆伍陆柒捌玖",na,"负",i,15);case 26:return Aa(e,"〇一二三四五六七八九","十百千万",ia,i,0);case 25:return Aa(e,"零壱弐参四伍六七八九","拾百千万",ia,i,7);case 31:return Aa(e,"영일이삼사오육칠팔구","십백천만",aa,a,7);case 33:return Aa(e,"零一二三四五六七八九","十百千萬",aa,a,0);case 32:return Aa(e,"零壹貳參四五六七八九","拾百千",aa,a,7);case 18:return $i(e,2406,2415,!0,n);case 20:return qi(e,1,19999,Zi,3,n);case 21:return $i(e,2790,2799,!0,n);case 22:return $i(e,2662,2671,!0,n);case 22:return qi(e,1,10999,Ji,3,n);case 23:return ea(e,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return ea(e,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return $i(e,3302,3311,!0,n);case 28:return ea(e,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",i);case 29:return ea(e,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",i);case 34:return $i(e,3792,3801,!0,n);case 37:return $i(e,6160,6169,!0,n);case 38:return $i(e,4160,4169,!0,n);case 39:return $i(e,2918,2927,!0,n);case 40:return $i(e,1776,1785,!0,n);case 43:return $i(e,3046,3055,!0,n);case 44:return $i(e,3174,3183,!0,n);case 45:return $i(e,3664,3673,!0,n);case 46:return $i(e,3872,3881,!0,n);default:return $i(e,48,57,!0,n)}},sa="data-html2canvas-ignore",oa=function(){function e(e,A,t){if(this.context=e,this.options=t,this.scrolledElements=[],this.referenceElement=A,this.counters=new zi,this.quoteDepth=0,!A.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(A.ownerDocument.documentElement,!1)}return e.prototype.toIFrame=function(e,A){var t=this,a=ca(e,A);if(!a.contentWindow)return Promise.reject("Unable to find iframe window");var r=e.defaultView.pageXOffset,s=e.defaultView.pageYOffset,o=a.contentWindow,l=o.document,c=ua(a).then((function(){return n(t,void 0,void 0,(function(){var e,t;return i(this,(function(n){switch(n.label){case 0:return this.scrolledElements.forEach(fa),o&&(o.scrollTo(A.left,A.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||o.scrollY===A.top&&o.scrollX===A.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-A.left,o.scrollY-A.top,0,0))),e=this.options.onclone,void 0===(t=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:l.fonts&&l.fonts.ready?[4,l.fonts.ready]:[3,2];case 1:n.sent(),n.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,ha(l)]:[3,4];case 3:n.sent(),n.label=4;case 4:return"function"==typeof e?[2,Promise.resolve().then((function(){return e(l,t)})).then((function(){return a}))]:[2,a]}}))}))}));return l.open(),l.write(ma(document.doctype)+""),wa(this.referenceElement.ownerDocument,r,s),l.replaceChild(l.adoptNode(this.documentElement),l.documentElement),l.close(),c},e.prototype.createElementClone=function(e){if(Fn(e,2),Di(e))return this.createCanvasClone(e);if(Hi(e))return this.createVideoClone(e);if(Vi(e))return this.createStyleClone(e);var A=e.cloneNode(!1);return Ri(A)&&(Ri(e)&&e.currentSrc&&e.currentSrc!==e.src&&(A.src=e.currentSrc,A.srcset=""),"lazy"===A.loading&&(A.loading="eager")),Xi(A)?this.createCustomElementClone(A):A},e.prototype.createCustomElementClone=function(e){var A=document.createElement("html2canvascustomelement");return pa(e.style,A),A},e.prototype.createStyleClone=function(e){try{var A=e.sheet;if(A&&A.cssRules){var t=[].slice.call(A.cssRules,0).reduce((function(e,A){return A&&"string"==typeof A.cssText?e+A.cssText:e}),""),n=e.cloneNode(!1);return n.textContent=t,n}}catch(e){if(this.context.logger.error("Unable to access cssRules property",e),"SecurityError"!==e.name)throw e}return e.cloneNode(!1)},e.prototype.createCanvasClone=function(e){var A;if(this.options.inlineImages&&e.ownerDocument){var t=e.ownerDocument.createElement("img");try{return t.src=e.toDataURL(),t}catch(A){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var n=e.cloneNode(!1);try{n.width=e.width,n.height=e.height;var i=e.getContext("2d"),a=n.getContext("2d");if(a)if(!this.options.allowTaint&&i)a.putImageData(i.getImageData(0,0,e.width,e.height),0,0);else{var r=null!==(A=e.getContext("webgl2"))&&void 0!==A?A:e.getContext("webgl");if(r){var s=r.getContextAttributes();!1===(null==s?void 0:s.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}a.drawImage(e,0,0)}return n}catch(A){this.context.logger.info("Unable to clone canvas as it is tainted",e)}return n},e.prototype.createVideoClone=function(e){var A=e.ownerDocument.createElement("canvas");A.width=e.offsetWidth,A.height=e.offsetHeight;var t=A.getContext("2d");try{return t&&(t.drawImage(e,0,0,A.width,A.height),this.options.allowTaint||t.getImageData(0,0,A.width,A.height)),A}catch(A){this.context.logger.info("Unable to clone video as it is tainted",e)}var n=e.ownerDocument.createElement("canvas");return n.width=e.offsetWidth,n.height=e.offsetHeight,n},e.prototype.appendChildNode=function(e,A,t){Qi(A)&&("SCRIPT"===A.tagName||A.hasAttribute(sa)||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(A))||this.options.copyStyles&&Qi(A)&&Vi(A)||e.appendChild(this.cloneNode(A,t))},e.prototype.cloneChildNodes=function(e,A,t){for(var n=this,i=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;i;i=i.nextSibling)if(Qi(i)&&Wi(i)&&"function"==typeof i.assignedNodes){var a=i.assignedNodes();a.length&&a.forEach((function(e){return n.appendChildNode(A,e,t)}))}else this.appendChildNode(A,i,t)},e.prototype.cloneNode=function(e,A){if(Si(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var t=e.ownerDocument.defaultView;if(t&&Qi(e)&&(Ii(e)||Ui(e))){var n=this.createElementClone(e);n.style.transitionProperty="none";var i=t.getComputedStyle(e),a=t.getComputedStyle(e,":before"),r=t.getComputedStyle(e,":after");this.referenceElement===e&&Ii(n)&&(this.clonedReferenceElement=n),Ni(n)&&Ca(n);var s=this.counters.parse(new vn(this.context,i)),o=this.resolvePseudoContent(e,n,a,On.BEFORE);Xi(e)&&(A=!0),Hi(e)||this.cloneChildNodes(e,n,A),o&&n.insertBefore(o,n.firstChild);var l=this.resolvePseudoContent(e,n,r,On.AFTER);return l&&n.appendChild(l),this.counters.pop(s),(i&&(this.options.copyStyles||Ui(e))&&!Pi(e)||A)&&pa(i,n),0===e.scrollTop&&0===e.scrollLeft||this.scrolledElements.push([n,e.scrollLeft,e.scrollTop]),(Ki(e)||Gi(e))&&(Ki(n)||Gi(n))&&(n.value=e.value),n}return e.cloneNode(!1)},e.prototype.resolvePseudoContent=function(e,A,t,n){var i=this;if(t){var a=t.content,r=A.ownerDocument;if(r&&a&&"none"!==a&&"-moz-alt-content"!==a&&"none"!==t.display){this.counters.parse(new vn(this.context,t));var s=new Cn(this.context,t),o=r.createElement("html2canvaspseudoelement");pa(t,o),s.content.forEach((function(A){if(0===A.type)o.appendChild(r.createTextNode(A.value));else if(22===A.type){var t=r.createElement("img");t.src=A.value,t.style.opacity="1",o.appendChild(t)}else if(18===A.type){if("attr"===A.name){var n=A.values.filter(Xe);n.length&&o.appendChild(r.createTextNode(e.getAttribute(n[0].value)||""))}else if("counter"===A.name){var a=A.values.filter(Je),l=a[0],c=a[1];if(l&&Xe(l)){var d=i.counters.getCounterValue(l.value),h=c&&Xe(c)?Qt.parse(i.context,c.value):3;o.appendChild(r.createTextNode(ra(d,h,!1)))}}else if("counters"===A.name){var u=A.values.filter(Je),g=(l=u[0],u[1]);if(c=u[2],l&&Xe(l)){var p=i.counters.getCounterValues(l.value),m=c&&Xe(c)?Qt.parse(i.context,c.value):3,w=g&&0===g.type?g.value:"",f=p.map((function(e){return ra(e,m,!1)})).join(w);o.appendChild(r.createTextNode(f))}}}else if(20===A.type)switch(A.value){case"open-quote":o.appendChild(r.createTextNode(mn(s.quotes,i.quoteDepth++,!0)));break;case"close-quote":o.appendChild(r.createTextNode(mn(s.quotes,--i.quoteDepth,!1)));break;default:o.appendChild(r.createTextNode(A.value))}})),o.className=Ba+" "+Ea;var l=n===On.BEFORE?" "+Ba:" "+Ea;return Ui(A)?A.className.baseValue+=l:A.className+=l,o}}},e.destroy=function(e){return!!e.parentNode&&(e.parentNode.removeChild(e),!0)},e}();!function(e){e[e.BEFORE=0]="BEFORE",e[e.AFTER=1]="AFTER"}(On||(On={}));var la,ca=function(e,A){var t=e.createElement("iframe");return t.className="html2canvas-container",t.style.visibility="hidden",t.style.position="fixed",t.style.left="-10000px",t.style.top="0px",t.style.border="0",t.width=A.width.toString(),t.height=A.height.toString(),t.scrolling="no",t.setAttribute(sa,"true"),e.body.appendChild(t),t},da=function(e){return new Promise((function(A){e.complete?A():e.src?(e.onload=A,e.onerror=A):A()}))},ha=function(e){return Promise.all([].slice.call(e.images,0).map(da))},ua=function(e){return new Promise((function(A,t){var n=e.contentWindow;if(!n)return t("No window assigned for iframe");var i=n.document;n.onload=e.onload=function(){n.onload=e.onload=null;var t=setInterval((function(){i.body.childNodes.length>0&&"complete"===i.readyState&&(clearInterval(t),A(e))}),50)}}))},ga=["all","d","content"],pa=function(e,A){for(var t=e.length-1;t>=0;t--){var n=e.item(t);-1===ga.indexOf(n)&&A.style.setProperty(n,e.getPropertyValue(n))}return A},ma=function(e){var A="";return e&&(A+=""),A},wa=function(e,A,t){e&&e.defaultView&&(A!==e.defaultView.pageXOffset||t!==e.defaultView.pageYOffset)&&e.defaultView.scrollTo(A,t)},fa=function(e){var A=e[0],t=e[1],n=e[2];A.scrollLeft=t,A.scrollTop=n},Ba="___html2canvas___pseudoelement_before",Ea="___html2canvas___pseudoelement_after",ba='{\n content: "" !important;\n display: none !important;\n}',Ca=function(e){va(e,"."+Ba+":before"+ba+"\n ."+Ea+":after"+ba)},va=function(e,A){var t=e.ownerDocument;if(t){var n=t.createElement("style");n.textContent=A,e.appendChild(n)}},ya=function(){function e(){}return e.getOrigin=function(A){var t=e._link;return t?(t.href=A,t.href=t.href,t.protocol+t.hostname+t.port):"about:blank"},e.isSameOrigin=function(A){return e.getOrigin(A)===e._origin},e.setContext=function(A){e._link=A.document.createElement("a"),e._origin=e.getOrigin(A.location.href)},e._origin="about:blank",e}(),Fa=function(){function e(e,A){this.context=e,this._options=A,this._cache={}}return e.prototype.addImage=function(e){var A=Promise.resolve();return this.has(e)?A:ka(e)||Qa(e)?((this._cache[e]=this.loadImage(e)).catch((function(){})),A):A},e.prototype.match=function(e){return this._cache[e]},e.prototype.loadImage=function(e){return n(this,void 0,void 0,(function(){var A,t,n,a,r=this;return i(this,(function(i){switch(i.label){case 0:return A=ya.isSameOrigin(e),t=!Ia(e)&&!0===this._options.useCORS&&Jn.SUPPORT_CORS_IMAGES&&!A,n=!Ia(e)&&!A&&!ka(e)&&"string"==typeof this._options.proxy&&Jn.SUPPORT_CORS_XHR&&!t,A||!1!==this._options.allowTaint||Ia(e)||ka(e)||n||t?(a=e,n?[4,this.proxy(a)]:[3,2]):[2];case 1:a=i.sent(),i.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise((function(e,A){var n=new Image;n.onload=function(){return e(n)},n.onerror=A,(Ua(a)||t)&&(n.crossOrigin="anonymous"),n.src=a,!0===n.complete&&setTimeout((function(){return e(n)}),500),r._options.imageTimeout>0&&setTimeout((function(){return A("Timed out ("+r._options.imageTimeout+"ms) loading image")}),r._options.imageTimeout)}))];case 3:return[2,i.sent()]}}))}))},e.prototype.has=function(e){return void 0!==this._cache[e]},e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},e.prototype.proxy=function(e){var A=this,t=this._options.proxy;if(!t)throw new Error("No proxy defined");var n=e.substring(0,256);return new Promise((function(i,a){var r=Jn.SUPPORT_RESPONSE_TYPE?"blob":"text",s=new XMLHttpRequest;s.onload=function(){if(200===s.status)if("text"===r)i(s.response);else{var e=new FileReader;e.addEventListener("load",(function(){return i(e.result)}),!1),e.addEventListener("error",(function(e){return a(e)}),!1),e.readAsDataURL(s.response)}else a("Failed to proxy resource "+n+" with status code "+s.status)},s.onerror=a;var o=t.indexOf("?")>-1?"&":"?";if(s.open("GET",""+t+o+"url="+encodeURIComponent(e)+"&responseType="+r),"text"!==r&&s instanceof XMLHttpRequest&&(s.responseType=r),A._options.imageTimeout){var l=A._options.imageTimeout;s.timeout=l,s.ontimeout=function(){return a("Timed out ("+l+"ms) proxying "+n)}}s.send()}))},e}(),xa=/^data:image\/svg\+xml/i,Ta=/^data:image\/.*;base64,/i,Sa=/^data:image\/.*/i,Qa=function(e){return Jn.SUPPORT_SVG_DRAWING||!Ma(e)},Ia=function(e){return Sa.test(e)},Ua=function(e){return Ta.test(e)},ka=function(e){return"blob"===e.substr(0,4)},Ma=function(e){return"svg"===e.substr(-3).toLowerCase()||xa.test(e)},La=function(){function e(e,A){this.type=0,this.x=e,this.y=A}return e.prototype.add=function(A,t){return new e(this.x+A,this.y+t)},e}(),Oa=function(e,A,t){return new La(e.x+(A.x-e.x)*t,e.y+(A.y-e.y)*t)},Na=function(){function e(e,A,t,n){this.type=1,this.start=e,this.startControl=A,this.endControl=t,this.end=n}return e.prototype.subdivide=function(A,t){var n=Oa(this.start,this.startControl,A),i=Oa(this.startControl,this.endControl,A),a=Oa(this.endControl,this.end,A),r=Oa(n,i,A),s=Oa(i,a,A),o=Oa(r,s,A);return t?new e(this.start,n,r,o):new e(o,s,a,this.end)},e.prototype.add=function(A,t){return new e(this.start.add(A,t),this.startControl.add(A,t),this.endControl.add(A,t),this.end.add(A,t))},e.prototype.reverse=function(){return new e(this.end,this.endControl,this.startControl,this.start)},e}(),Da=function(e){return 1===e.type},Ha=function(e){var A=e.styles,t=e.bounds,n=iA(A.borderTopLeftRadius,t.width,t.height),i=n[0],a=n[1],r=iA(A.borderTopRightRadius,t.width,t.height),s=r[0],o=r[1],l=iA(A.borderBottomRightRadius,t.width,t.height),c=l[0],d=l[1],h=iA(A.borderBottomLeftRadius,t.width,t.height),u=h[0],g=h[1],p=[];p.push((i+s)/t.width),p.push((u+c)/t.width),p.push((a+g)/t.height),p.push((o+d)/t.height);var m=Math.max.apply(Math,p);m>1&&(i/=m,a/=m,s/=m,o/=m,c/=m,d/=m,u/=m,g/=m);var w=t.width-s,f=t.height-d,B=t.width-c,E=t.height-g,b=A.borderTopWidth,C=A.borderRightWidth,v=A.borderBottomWidth,y=A.borderLeftWidth,F=aA(A.paddingTop,e.bounds.width),x=aA(A.paddingRight,e.bounds.width),T=aA(A.paddingBottom,e.bounds.width),S=aA(A.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=i>0||a>0?Ra(t.left+y/3,t.top+b/3,i-y/3,a-b/3,la.TOP_LEFT):new La(t.left+y/3,t.top+b/3),this.topRightBorderDoubleOuterBox=i>0||a>0?Ra(t.left+w,t.top+b/3,s-C/3,o-b/3,la.TOP_RIGHT):new La(t.left+t.width-C/3,t.top+b/3),this.bottomRightBorderDoubleOuterBox=c>0||d>0?Ra(t.left+B,t.top+f,c-C/3,d-v/3,la.BOTTOM_RIGHT):new La(t.left+t.width-C/3,t.top+t.height-v/3),this.bottomLeftBorderDoubleOuterBox=u>0||g>0?Ra(t.left+y/3,t.top+E,u-y/3,g-v/3,la.BOTTOM_LEFT):new La(t.left+y/3,t.top+t.height-v/3),this.topLeftBorderDoubleInnerBox=i>0||a>0?Ra(t.left+2*y/3,t.top+2*b/3,i-2*y/3,a-2*b/3,la.TOP_LEFT):new La(t.left+2*y/3,t.top+2*b/3),this.topRightBorderDoubleInnerBox=i>0||a>0?Ra(t.left+w,t.top+2*b/3,s-2*C/3,o-2*b/3,la.TOP_RIGHT):new La(t.left+t.width-2*C/3,t.top+2*b/3),this.bottomRightBorderDoubleInnerBox=c>0||d>0?Ra(t.left+B,t.top+f,c-2*C/3,d-2*v/3,la.BOTTOM_RIGHT):new La(t.left+t.width-2*C/3,t.top+t.height-2*v/3),this.bottomLeftBorderDoubleInnerBox=u>0||g>0?Ra(t.left+2*y/3,t.top+E,u-2*y/3,g-2*v/3,la.BOTTOM_LEFT):new La(t.left+2*y/3,t.top+t.height-2*v/3),this.topLeftBorderStroke=i>0||a>0?Ra(t.left+y/2,t.top+b/2,i-y/2,a-b/2,la.TOP_LEFT):new La(t.left+y/2,t.top+b/2),this.topRightBorderStroke=i>0||a>0?Ra(t.left+w,t.top+b/2,s-C/2,o-b/2,la.TOP_RIGHT):new La(t.left+t.width-C/2,t.top+b/2),this.bottomRightBorderStroke=c>0||d>0?Ra(t.left+B,t.top+f,c-C/2,d-v/2,la.BOTTOM_RIGHT):new La(t.left+t.width-C/2,t.top+t.height-v/2),this.bottomLeftBorderStroke=u>0||g>0?Ra(t.left+y/2,t.top+E,u-y/2,g-v/2,la.BOTTOM_LEFT):new La(t.left+y/2,t.top+t.height-v/2),this.topLeftBorderBox=i>0||a>0?Ra(t.left,t.top,i,a,la.TOP_LEFT):new La(t.left,t.top),this.topRightBorderBox=s>0||o>0?Ra(t.left+w,t.top,s,o,la.TOP_RIGHT):new La(t.left+t.width,t.top),this.bottomRightBorderBox=c>0||d>0?Ra(t.left+B,t.top+f,c,d,la.BOTTOM_RIGHT):new La(t.left+t.width,t.top+t.height),this.bottomLeftBorderBox=u>0||g>0?Ra(t.left,t.top+E,u,g,la.BOTTOM_LEFT):new La(t.left,t.top+t.height),this.topLeftPaddingBox=i>0||a>0?Ra(t.left+y,t.top+b,Math.max(0,i-y),Math.max(0,a-b),la.TOP_LEFT):new La(t.left+y,t.top+b),this.topRightPaddingBox=s>0||o>0?Ra(t.left+Math.min(w,t.width-C),t.top+b,w>t.width+C?0:Math.max(0,s-C),Math.max(0,o-b),la.TOP_RIGHT):new La(t.left+t.width-C,t.top+b),this.bottomRightPaddingBox=c>0||d>0?Ra(t.left+Math.min(B,t.width-y),t.top+Math.min(f,t.height-v),Math.max(0,c-C),Math.max(0,d-v),la.BOTTOM_RIGHT):new La(t.left+t.width-C,t.top+t.height-v),this.bottomLeftPaddingBox=u>0||g>0?Ra(t.left+y,t.top+Math.min(E,t.height-v),Math.max(0,u-y),Math.max(0,g-v),la.BOTTOM_LEFT):new La(t.left+y,t.top+t.height-v),this.topLeftContentBox=i>0||a>0?Ra(t.left+y+S,t.top+b+F,Math.max(0,i-(y+S)),Math.max(0,a-(b+F)),la.TOP_LEFT):new La(t.left+y+S,t.top+b+F),this.topRightContentBox=s>0||o>0?Ra(t.left+Math.min(w,t.width+y+S),t.top+b+F,w>t.width+y+S?0:s-y+S,o-(b+F),la.TOP_RIGHT):new La(t.left+t.width-(C+x),t.top+b+F),this.bottomRightContentBox=c>0||d>0?Ra(t.left+Math.min(B,t.width-(y+S)),t.top+Math.min(f,t.height+b+F),Math.max(0,c-(C+x)),d-(v+T),la.BOTTOM_RIGHT):new La(t.left+t.width-(C+x),t.top+t.height-(v+T)),this.bottomLeftContentBox=u>0||g>0?Ra(t.left+y+S,t.top+E,Math.max(0,u-(y+S)),g-(v+T),la.BOTTOM_LEFT):new La(t.left+y+S,t.top+t.height-(v+T))};!function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=1]="TOP_RIGHT",e[e.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",e[e.BOTTOM_LEFT=3]="BOTTOM_LEFT"}(la||(la={}));var Ra=function(e,A,t,n,i){var a=(Math.sqrt(2)-1)/3*4,r=t*a,s=n*a,o=e+t,l=A+n;switch(i){case la.TOP_LEFT:return new Na(new La(e,l),new La(e,l-s),new La(o-r,A),new La(o,A));case la.TOP_RIGHT:return new Na(new La(e,A),new La(e+r,A),new La(o,l-s),new La(o,l));case la.BOTTOM_RIGHT:return new Na(new La(o,A),new La(o,A+s),new La(e+r,l),new La(e,l));case la.BOTTOM_LEFT:default:return new Na(new La(o,l),new La(o-r,l),new La(e,A+s),new La(e,A))}},Pa=function(e){return[e.topLeftBorderBox,e.topRightBorderBox,e.bottomRightBorderBox,e.bottomLeftBorderBox]},Va=function(e){return[e.topLeftPaddingBox,e.topRightPaddingBox,e.bottomRightPaddingBox,e.bottomLeftPaddingBox]},Ka=function(e,A,t){this.offsetX=e,this.offsetY=A,this.matrix=t,this.type=0,this.target=6},Ga=function(e,A){this.path=e,this.target=A,this.type=1},Wa=function(e){this.opacity=e,this.type=2,this.target=6},Xa=function(e){return 1===e.type},za=function(e,A){return e.length===A.length&&e.some((function(e,t){return e===A[t]}))},Ya=function(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},ja=function(){function e(e,A){if(this.container=e,this.parent=A,this.effects=[],this.curves=new Ha(this.container),this.container.styles.opacity<1&&this.effects.push(new Wa(this.container.styles.opacity)),null!==this.container.styles.transform){var t=this.container.bounds.left+this.container.styles.transformOrigin[0].number,n=this.container.bounds.top+this.container.styles.transformOrigin[1].number,i=this.container.styles.transform;this.effects.push(new Ka(t,n,i))}if(0!==this.container.styles.overflowX){var a=Pa(this.curves),r=Va(this.curves);za(a,r)?this.effects.push(new Ga(a,6)):(this.effects.push(new Ga(a,2)),this.effects.push(new Ga(r,4)))}}return e.prototype.getEffects=function(e){for(var A=-1===[2,3].indexOf(this.container.styles.position),t=this.parent,n=this.effects.slice(0);t;){var i=t.effects.filter((function(e){return!Xa(e)}));if(A||0!==t.container.styles.position||!t.parent){if(n.unshift.apply(n,i),A=-1===[2,3].indexOf(t.container.styles.position),0!==t.container.styles.overflowX){var a=Pa(t.curves),r=Va(t.curves);za(a,r)||n.unshift(new Ga(r,6))}}else n.unshift.apply(n,i);t=t.parent}return n.filter((function(A){return cn(A.target,e)}))},e}(),Ja=function(e,A,t,n){e.container.elements.forEach((function(i){var a=cn(i.flags,4),r=cn(i.flags,2),s=new ja(i,e);cn(i.styles.display,2048)&&n.push(s);var o=cn(i.flags,8)?[]:n;if(a||r){var l=a||i.styles.isPositioned()?t:A,c=new Ya(s);if(i.styles.isPositioned()||i.styles.opacity<1||i.styles.isTransformed()){var d=i.styles.zIndex.order;if(d<0){var h=0;l.negativeZIndex.some((function(e,A){return d>e.element.container.styles.zIndex.order?(h=A,!1):h>0})),l.negativeZIndex.splice(h,0,c)}else if(d>0){var u=0;l.positiveZIndex.some((function(e,A){return d>=e.element.container.styles.zIndex.order?(u=A+1,!1):u>0})),l.positiveZIndex.splice(u,0,c)}else l.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else i.styles.isFloating()?l.nonPositionedFloats.push(c):l.nonPositionedInlineLevel.push(c);Ja(s,c,a?c:t,o)}else i.styles.isInlineLevel()?A.inlineLevel.push(s):A.nonInlineLevel.push(s),Ja(s,A,t,o);cn(i.flags,8)&&Za(i,o)}))},Za=function(e,A){for(var t=e instanceof di?e.start:1,n=e instanceof di&&e.reversed,i=0;i0&&e.intrinsicHeight>0){var n=Ar(e),i=Va(A);this.path(i),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(t,0,0,e.intrinsicWidth,e.intrinsicHeight,n.left,n.top,n.width,n.height),this.ctx.restore()}},t.prototype.renderNodeContent=function(e){return n(this,void 0,void 0,(function(){var A,n,a,s,o,l,c,d,h,u,g,p,m,w,f,B,E,b;return i(this,(function(i){switch(i.label){case 0:this.applyEffects(e.getEffects(4)),A=e.container,n=e.curves,a=A.styles,s=0,o=A.textNodes,i.label=1;case 1:return s0&&y>0&&(f=n.ctx.createPattern(p,"repeat"),n.renderRepeat(E,f,x,T))):function(e){return 2===e.type}(t)&&(B=tr(e,A,[null,null,null]),E=B[0],b=B[1],C=B[2],v=B[3],y=B[4],F=0===t.position.length?[tA]:t.position,x=aA(F[0],v),T=aA(F[F.length-1],y),S=function(e,A,t,n,i){var a=0,r=0;switch(e.size){case 0:0===e.shape?a=r=Math.min(Math.abs(A),Math.abs(A-n),Math.abs(t),Math.abs(t-i)):1===e.shape&&(a=Math.min(Math.abs(A),Math.abs(A-n)),r=Math.min(Math.abs(t),Math.abs(t-i)));break;case 2:if(0===e.shape)a=r=Math.min(SA(A,t),SA(A,t-i),SA(A-n,t),SA(A-n,t-i));else if(1===e.shape){var s=Math.min(Math.abs(t),Math.abs(t-i))/Math.min(Math.abs(A),Math.abs(A-n)),o=QA(n,i,A,t,!0),l=o[0],c=o[1];r=s*(a=SA(l-A,(c-t)/s))}break;case 1:0===e.shape?a=r=Math.max(Math.abs(A),Math.abs(A-n),Math.abs(t),Math.abs(t-i)):1===e.shape&&(a=Math.max(Math.abs(A),Math.abs(A-n)),r=Math.max(Math.abs(t),Math.abs(t-i)));break;case 3:if(0===e.shape)a=r=Math.max(SA(A,t),SA(A,t-i),SA(A-n,t),SA(A-n,t-i));else if(1===e.shape){s=Math.max(Math.abs(t),Math.abs(t-i))/Math.max(Math.abs(A),Math.abs(A-n));var d=QA(n,i,A,t,!1);l=d[0],c=d[1],r=s*(a=SA(l-A,(c-t)/s))}}return Array.isArray(e.size)&&(a=aA(e.size[0],n),r=2===e.size.length?aA(e.size[1],i):a),[a,r]}(t,x,T,v,y),Q=S[0],I=S[1],Q>0&&I>0&&(U=n.ctx.createRadialGradient(b+x,C+T,0,b+x,C+T,Q),xA(t.stops,2*Q).forEach((function(e){return U.addColorStop(e.stop,gA(e.color))})),n.path(E),n.ctx.fillStyle=U,Q!==I?(k=e.bounds.left+.5*e.bounds.width,M=e.bounds.top+.5*e.bounds.height,O=1/(L=I/Q),n.ctx.save(),n.ctx.translate(k,M),n.ctx.transform(1,0,0,L,0,0),n.ctx.translate(-k,-M),n.ctx.fillRect(b,O*(C-M)+M,v,y*O),n.ctx.restore()):n.ctx.fill())),i.label=6;case 6:return A--,[2]}}))},n=this,a=0,r=e.styles.backgroundImage.slice(0).reverse(),o.label=1;case 1:return a0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,r,e.curves,2)]:[3,11]:[3,13];case 4:return i.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,r,e.curves,3)];case 6:return i.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,r,e.curves)];case 8:return i.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,r,e.curves)];case 10:i.sent(),i.label=11;case 11:r++,i.label=12;case 12:return s++,[3,3];case 13:return[2]}}))}))},t.prototype.renderDashedDottedBorder=function(e,A,t,a,r){return n(this,void 0,void 0,(function(){var n,s,o,l,c,d,h,u,g,p,m,w,f,B,E,b;return i(this,(function(i){return this.ctx.save(),n=function(e,A){switch(A){case 0:return _a(e.topLeftBorderStroke,e.topRightBorderStroke);case 1:return _a(e.topRightBorderStroke,e.bottomRightBorderStroke);case 2:return _a(e.bottomRightBorderStroke,e.bottomLeftBorderStroke);default:return _a(e.bottomLeftBorderStroke,e.topLeftBorderStroke)}}(a,t),s=qa(a,t),2===r&&(this.path(s),this.ctx.clip()),Da(s[0])?(o=s[0].start.x,l=s[0].start.y):(o=s[0].x,l=s[0].y),Da(s[1])?(c=s[1].end.x,d=s[1].end.y):(c=s[1].x,d=s[1].y),h=0===t||2===t?Math.abs(o-c):Math.abs(l-d),this.ctx.beginPath(),3===r?this.formatPath(n):this.formatPath(s.slice(0,2)),u=A<3?3*A:2*A,g=A<3?2*A:A,3===r&&(u=A,g=A),p=!0,h<=2*u?p=!1:h<=2*u+g?(u*=m=h/(2*u+g),g*=m):(w=Math.floor((h+g)/(u+g)),f=(h-w*u)/(w-1),g=(B=(h-(w+1)*u)/w)<=0||Math.abs(g-f){const a=await tex2dataURL(e,i);if(a){const e=[];e.push({mimeType:a.mimeType,id:A,dataURL:a.dataURL,created:a.created,size:a.size,hasSVGwithBitmap:!1,shouldScale:!0}),n(e,t)}};async function tex2dataURL(e,A){let t=0;for(;!A.mathjax&&!A.mathjaxLoaderFinished&&t<10;)await sleep$1(100),t++;A.mathjaxLoaderFinished||errorlog({where:"text2dataURL",fn:tex2dataURL,message:"mathjaxLoader not ready, using fallback. Try reloading Obsidian or restarting the Excalidraw plugin"});try{return await mathjaxSVG(e,A)}catch(t){await sleep$1(100);try{return await mathjaxSVG(e,A)}catch(t){await sleep$1(100);try{return await mathjaxSVG(e,A)}catch(t){return A.mathjax?new obsidian_module.Notice("Unknown error loading LaTeX. Using fallback solution. Try closing and reopening this drawing."):new obsidian_module.Notice("LaTeX support did not load. Using fallback solution. Try checking your network connection."),await mathjaxImage2html(e)}}}}async function mathjaxSVG(e,A){const t=A.mathjax.tex2svg(e,{display:!0,scale:4}).querySelector("svg");if(t){const e=svgToBase64(t.outerHTML);return{mimeType:"image/svg+xml",fileId:fileid(),dataURL:e,created:Date.now(),size:await getImageSize(e)}}return null}async function mathjaxImage2html(e){const A=document.body.createDiv();A.style.display="table";const t=window.MathJax.tex2chtml(e,{display:!0,scale:4});t.style.margin="3px",t.style.color="black";const n=t.querySelector("mjx-assistive-mml");n&&n.parentElement.removeChild(n),A.appendChild(t),window.MathJax.typeset();const i=await html2canvas(A,{backgroundColor:null});return document.body.removeChild(A),{mimeType:"image/png",fileId:fileid(),dataURL:i.toDataURL(),created:Date.now(),size:{height:i.height,width:i.width}}}const THEME_FILTER="invert(100%) hue-rotate(180deg) saturate(1.25)";class EmbeddedFile{constructor(e,A,t){this.file=null,this.isSVGwithBitmap=!1,this.img="",this.imgInverted="",this.mtime=0,this.mimeType="application/octet-stream",this.size={height:0,width:0},this.attemptCounter=0,this.isHyperlink=!1,this.plugin=e,this.resetImage(A,t)}resetImage(e,A){if(this.imgInverted=this.img="",this.mtime=0,A.startsWith("https://")||A.startsWith("http://"))return this.isHyperlink=!0,void(this.hyperlink=A);this.linkParts=getLinkParts(A),this.hostPath=e,this.linkParts.path?(this.linkParts.width||(this.linkParts.width=this.plugin.settings.mdSVGwidth),this.linkParts.height||(this.linkParts.height=this.plugin.settings.mdSVGmaxHeight),this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,e),this.file||0==this.attemptCounter++&&new obsidian_module.Notice(`Excalidraw Warning: could not find image file: ${A}`,5e3)):new obsidian_module.Notice(`Excalidraw Error\nIncorrect embedded filename: ${A}`)}fileChanged(){return!this.isHyperlink&&(this.file||(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),this.file)?this.mtime!=this.file.stat.mtime:(this.attemptCounter++,!1))}setImage(e,A,t,n,i){if(this.file||this.isHyperlink){switch(this.fileChanged()&&(this.imgInverted=this.img=""),this.mtime=this.isHyperlink?0:this.file.stat.mtime,this.size=t,this.mimeType=A,n&&i){case!0:this.imgInverted=e;break;case!1:this.img=e}this.isSVGwithBitmap=i}}isLoaded(e){if(!this.isHyperlink){if(!this.file&&(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),!this.file))return this.attemptCounter++,!0;if(this.fileChanged())return!1}return this.isSVGwithBitmap&&e?""!==this.imgInverted:""!==this.img}getImage(e){return this.file||this.isHyperlink?e&&this.isSVGwithBitmap?this.imgInverted:this.img:""}shouldScale(){return this.isHyperlink||!Boolean(this.linkParts&&this.linkParts.original&&this.linkParts.original.endsWith("|100%"))}}class EmbeddedFilesLoader{constructor(e,A){this.terminate=!1,this.plugin=e,this.isDark=A,this.uid=nanoid()}async getObsidianImage(e,A){if(!this.plugin||!e)return null;const t=e instanceof EmbeddedFile&&e.isHyperlink,n=e instanceof EmbeddedFile?e.hyperlink:"",i=e instanceof EmbeddedFile?e.file:e,a=t?null:e instanceof EmbeddedFile?e.linkParts:{original:i.path,path:i.path,isBlockRef:!1,ref:null,width:this.plugin.settings.mdSVGwidth,height:this.plugin.settings.mdSVGmaxHeight};let r=!1;const s=!t&&this.plugin.isExcalidrawFile(i);if(!t&&!IMAGE_TYPES.contains(i.extension)&&!s&&"md"!==i.extension)return null;const o=t?null:await app.vault.readBinary(i),l=s?await(async e=>{const t=hasExportTheme(this.plugin,i)?getExportTheme(this.plugin,i,"light"):void 0,n={withBackground:!!hasExportBackground(this.plugin,i)&&getWithBackground(this.plugin,i),withTheme:!!t},a=await createSVG(i.path,!0,n,this,t,null,null,[],this.plugin,A+1,getExportPadding(this.plugin,i)),s=a.querySelectorAll("image:not([href^='data:image/svg'])");return s.length>0&&(r=!0),r&&e&&s.forEach((e=>{var A;const t=null===(A=e.parentElement)||void 0===A?void 0:A.id;a.querySelectorAll(`use[href='#${t}']`).forEach((e=>{e.setAttribute("filter",THEME_FILTER)}))})),!r&&a.getAttribute("hasbitmap")&&(r=!0),svgToBase64(a.outerHTML)})(this.isDark):null;let c="image/svg+xml";const d=t?n.split("?")[0]:"",h=t?d.substring(d.lastIndexOf(".")+1):i.extension;if(!s)switch(h){case"png":c="image/png";break;case"jpeg":case"jpg":c="image/jpeg";break;case"gif":c="image/gif";break;case"webp":c="image/webp";break;case"bmp":c="image/bmp";break;case"ico":c="image/x-icon";break;case"svg":case"md":c="image/svg+xml";break;default:c="application/octet-stream"}let u;if(t&&e instanceof EmbeddedFile)try{u=await Promise.race([(async()=>new Promise((e=>setTimeout((()=>e(null)),1e3))))(),obsidian_module.requestUrl({url:e.hyperlink,method:"get",contentType:c,throw:!1})])}catch(A){errorlog({where:this.getObsidianImage,message:"URL did not load within timeout period of 1000ms",url:e.hyperlink})}let g=t?e instanceof EmbeddedFile?u&&200===u.status?await getDataURL(u.arrayBuffer,c):e.hyperlink:null:null!=l?l:"svg"===i.extension?await getSVGData(app,i):"md"===i.extension?null:await getDataURL(o,c);if(!t&&!g){const e=await this.convertMarkdownToSVG(this.plugin,i,a);g=e.dataURL,r=e.hasSVGwithBitmap}try{const e=await getImageSize(g);return{mimeType:c,fileId:await generateIdFromFile(t?(new TextEncoder).encode(g):o),dataURL:g,created:t?0:i.stat.mtime,hasSVGwithBitmap:r,size:e}}catch(e){return null}}async loadSceneFiles(e,A,t){var n,i;if(t>4)return void new obsidian_module.Notice(t$d("INFINITE_LOOP_WARNING")+t.toString(),6e3);const a=e.getFileEntries();let r;void 0===this.isDark&&(this.isDark="dark"===(null===(i=null===(n=null==e?void 0:e.scene)||void 0===n?void 0:n.appState)||void 0===i?void 0:i.theme));const s=[];for(;!this.terminate&&!(r=a.next()).done;){const e=r.value[1];if(e.isLoaded(this.isDark))e.isSVGwithBitmap&&s.push({mimeType:e.mimeType,id:r.value[0],dataURL:e.getImage(this.isDark),created:e.mtime,size:e.size,hasSVGwithBitmap:e.isSVGwithBitmap,shouldScale:e.shouldScale()});else{const A=await this.getObsidianImage(e,t);A&&s.push({mimeType:A.mimeType,id:r.value[0],dataURL:A.dataURL,created:A.created,size:A.size,hasSVGwithBitmap:A.hasSVGwithBitmap,shouldScale:e.shouldScale()})}}let o;const l=e.getEquationEntries();for(;!this.terminate&&!(o=l.next()).done;)if(!e.getEquation(o.value[0]).isLoaded){const e=o.value[1].latex,A=await tex2dataURL(e,this.plugin);A&&s.push({mimeType:A.mimeType,id:o.value[0],dataURL:A.dataURL,created:A.created,size:A.size,hasSVGwithBitmap:!1,shouldScale:!0})}if(!this.terminate)try{A(s,this.isDark)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}async convertMarkdownToSVG(e,A,t){var n,i,a,r;let s=!1;const o=await getTransclusion(t,e.app,A);let l=(null!==(n=o.leadingHashes)&&void 0!==n?n:"")+o.contents;""===l&&(l="# Empty markdown file\nCTRL+Click here to open the file for editing in the current active pane, or CTRL+SHIFT+Click to open it in an adjacent pane.");const c=e.app.metadataCache.getFileCache(A);let d,h=e.settings.mdFont;switch((null==c?void 0:c.frontmatter)&&Boolean(c.frontmatter["excalidraw-font"])&&(h=c.frontmatter["excalidraw-font"]),h){case"Virgil":d=VIRGIL_FONT;break;case"Cascadia":d=CASCADIA_FONT;break;case"":d="";break;default:const t=await getFontDataURL(e.app,h,A.path);d=t.fontDef,h=t.fontName}(null==c?void 0:c.frontmatter)&&null!==c.frontmatter.banner&&(l=l.replace(/banner:\s*.*/,""));const u=(null==c?void 0:c.frontmatter)&&null!==(i=c.frontmatter["excalidraw-font-color"])&&void 0!==i?i:e.settings.mdFontColor;let g=(null==c?void 0:c.frontmatter)&&null!==(a=c.frontmatter["excalidraw-css"])&&void 0!==a?a:"",p=!1;if(g&&""!=g){const t=e.app.metadataCache.getFirstLinkpathDest(g,A.path);t&&(g=await e.app.vault.read(t),p=!0)}if(!p)if(e.settings.mdCSS&&""!==e.settings.mdCSS){const t=e.app.metadataCache.getFirstLinkpathDest(e.settings.mdCSS,A.path);g+=t?`\n${await e.app.vault.read(t)}`:DEFAULT_MD_EMBED_CSS}else g+=DEFAULT_MD_EMBED_CSS;const m=(null==c?void 0:c.frontmatter)&&null!==(r=c.frontmatter["excalidraw-border-color"])&&void 0!==r?r:e.settings.mdBorderColor;m&&""!==m&&!g.match(/svg/i)&&(g+=`svg{border:2px solid;color:${m};transform:scale(.95)}`);let w=` width="${t.width}px" height="100000"`,f=` width="${t.width}px" height="100%"`;const B=(e,A,t)=>`${t?``:""}${e}${A}${""!==d?``:""}`,E=createDiv();E.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),E.setAttribute("class","excalidraw-md-host"),""!==h&&(E.style.fontFamily=h),E.style.overflow="auto",E.style.display="block",E.style.color=u&&""!==u?u:"initial",await obsidian_module.MarkdownRenderer.renderMarkdown(l,E,A.path,e),E.querySelectorAll(":scope > *[class^='frontmatter']").forEach((e=>E.removeChild(e)));const b=Array.from(E.querySelectorAll("span[class='internal-embed']"));for(let t=0;t{const A=e.style,t=window.getComputedStyle(e);let n="";for(const e in A)A.hasOwnProperty(e)&&(n+=`${e}: ${t[e]};`);e.setAttribute("style",n)}));const x=(new XMLSerializer).serializeToString(y),T=(new XMLSerializer).serializeToString(F);document.body.removeChild(C);const S=new DOMParser,Q=S.parseFromString(B(x,T),"image/svg+xml").firstElementChild,I=createDiv();I.appendChild(Q),document.body.appendChild(I);const U=Q.querySelector(".excalidraw-md-footer").scrollHeight,k=Q.querySelector(".excalidraw-md-host").scrollHeight+U,M=k<=t.height?k:t.height;document.body.removeChild(I),w=` width="${t.width}px" height="${M}px"`,f=` width="${t.width}px" height="${M}px"`,E.style.height=M-U+"px",E.style.overflow="hidden";const L=E.querySelectorAll("img:not([src^='data:image/svg+xml'])");L.length>0&&(s=!0),s&&this.isDark&&L.forEach((e=>{e instanceof HTMLImageElement&&(e.style.filter=THEME_FILTER)}));const O=B((new XMLSerializer).serializeToString(E),'',g);return e.ea.mostRecentMarkdownSVG=S.parseFromString(O,"image/svg+xml").firstElementChild,{dataURL:svgToBase64(O),hasSVGwithBitmap:s}}}const getSVGData=async(e,A)=>{const t=await e.vault.read(A);return svgToBase64(t)},generateIdFromFile=async e=>{let A;try{const t=await window.crypto.subtle.digest("SHA-1",e);A=Array.from(new Uint8Array(t)).map((e=>e.toString(16).padStart(2,"0"))).join("")}catch(e){errorlog({where:"EmbeddedFileLoader.generateIdFromFile",error:e}),A=fileid()}return A},{wrapText:wrapText,getFontString:getFontString,getMaxContainerWidth:getMaxContainerWidth}=excalidrawLib;var AutoexportPreference;!function(e){e[e.none=0]="none",e[e.both=1]="both",e[e.png=2]="png",e[e.svg=3]="svg",e[e.inherit=4]="inherit"}(AutoexportPreference||(AutoexportPreference={}));const REGEX_LINK={ +var e=function(t,A){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var A in t)Object.prototype.hasOwnProperty.call(t,A)&&(e[A]=t[A])},e(t,A)};function t(t,A){if("function"!=typeof A&&null!==A)throw new TypeError("Class extends value "+String(A)+" is not a constructor or null");function i(){this.constructor=t}e(t,A),t.prototype=null===A?Object.create(A):(i.prototype=A.prototype,new i)}var A=function(){return A=Object.assign||function(e){for(var t,A=1,i=arguments.length;A0&&n[n.length-1])||6!==a[0]&&2!==a[0])){r=0;continue}if(3===a[0]&&(!n||a[1]>n[0]&&a[1]=55296&&n<=56319&&A>10),r%1024+56320)),(n+1===A||i.length>16384)&&(a+=String.fromCharCode.apply(String,i),i.length=0)}return a},c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d="undefined"==typeof Uint8Array?[]:new Uint8Array(256),h=0;h=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",B="undefined"==typeof Uint8Array?[]:new Uint8Array(256),E=0;E>4,c[o++]=(15&i)<<4|n>>2,c[o++]=(3&n)<<6|63&a;return l}(e),i=Array.isArray(A)?function(e){for(var t=e.length,A=[],i=0;i0;){var r=i[--a];if(Array.isArray(e)?-1!==e.indexOf(r):e===r)for(var s=A;s<=i.length;){var o;if((o=i[++s])===t)return!0;if(o!==b)break}if(r!==b)break}return!1},ie=function(e,t){for(var A=e;A>=0;){var i=t[A];if(i!==b)return i;A--}return 0},ne=function(e,t,A,i,n){if(0===A[i])return z;var a=i-1;if(Array.isArray(n)&&!0===n[a])return z;var r=a-1,s=a+1,o=t[a],l=r>=0?t[r]:0,c=t[s];if(2===o&&3===c)return z;if(-1!==Z.indexOf(o))return"!";if(-1!==Z.indexOf(c))return z;if(-1!==q.indexOf(c))return z;if(8===ie(a,t))return Y;if(11===j.get(e[a]))return z;if((o===D||o===N)&&11===j.get(e[s]))return z;if(7===o||7===c)return z;if(9===o)return z;if(-1===[b,v,C].indexOf(o)&&9===c)return z;if(-1!==[y,F,x,U,M].indexOf(c))return z;if(ie(a,t)===I)return z;if(Ae(23,I,a,t))return z;if(Ae([y,F],T,a,t))return z;if(Ae(12,12,a,t))return z;if(o===b)return Y;if(23===o||23===c)return z;if(16===c||16===o)return Y;if(-1!==[v,C,T].indexOf(c)||14===o)return z;if(36===l&&-1!==te.indexOf(o))return z;if(o===M&&36===c)return z;if(c===S)return z;if(-1!==J.indexOf(c)&&o===Q||-1!==J.indexOf(o)&&c===Q)return z;if(o===O&&-1!==[P,D,N].indexOf(c)||-1!==[P,D,N].indexOf(o)&&c===k)return z;if(-1!==J.indexOf(o)&&-1!==_.indexOf(c)||-1!==_.indexOf(o)&&-1!==J.indexOf(c))return z;if(-1!==[O,k].indexOf(o)&&(c===Q||-1!==[I,C].indexOf(c)&&t[s+1]===Q)||-1!==[I,C].indexOf(o)&&c===Q||o===Q&&-1!==[Q,M,U].indexOf(c))return z;if(-1!==[Q,M,U,y,F].indexOf(c))for(var d=a;d>=0;){if((h=t[d])===Q)return z;if(-1===[M,U].indexOf(h))break;d--}if(-1!==[O,k].indexOf(c))for(d=-1!==[y,F].indexOf(o)?r:a;d>=0;){var h;if((h=t[d])===Q)return z;if(-1===[M,U].indexOf(h))break;d--}if(V===o&&-1!==[V,K,H,R].indexOf(c)||-1!==[K,H].indexOf(o)&&-1!==[K,G].indexOf(c)||-1!==[G,R].indexOf(o)&&c===G)return z;if(-1!==ee.indexOf(o)&&-1!==[S,k].indexOf(c)||-1!==ee.indexOf(c)&&o===O)return z;if(-1!==J.indexOf(o)&&-1!==J.indexOf(c))return z;if(o===U&&-1!==J.indexOf(c))return z;if(-1!==J.concat(Q).indexOf(o)&&c===I&&-1===X.indexOf(e[s])||-1!==J.concat(Q).indexOf(c)&&o===F)return z;if(41===o&&41===c){for(var u=A[a],g=1;u>0&&41===t[--u];)g++;if(g%2!=0)return z}return o===D&&c===N?z:Y},ae=function(e,t){t||(t={lineBreak:"normal",wordBreak:"normal"});var A=function(e,t){void 0===t&&(t="strict");var A=[],i=[],n=[];return e.forEach((function(e,a){var r=j.get(e);if(r>50?(n.push(!0),r-=50):n.push(!1),-1!==["normal","auto","loose"].indexOf(t)&&-1!==[8208,8211,12316,12448].indexOf(e))return i.push(a),A.push(16);if(4===r||11===r){if(0===a)return i.push(a),A.push(L);var s=A[a-1];return-1===$.indexOf(s)?(i.push(i[a-1]),A.push(s)):(i.push(a),A.push(L))}return i.push(a),31===r?A.push("strict"===t?T:P):r===W||29===r?A.push(L):43===r?e>=131072&&e<=196605||e>=196608&&e<=262141?A.push(P):A.push(L):void A.push(r)})),[i,A,n]}(e,t.lineBreak),i=A[0],n=A[1],a=A[2];"break-all"!==t.wordBreak&&"break-word"!==t.wordBreak||(n=n.map((function(e){return-1!==[Q,L,W].indexOf(e)?P:e})));var r="keep-all"===t.wordBreak?a.map((function(t,A){return t&&e[A]>=19968&&e[A]<=40959})):void 0;return[i,n,r]},re=function(){function e(e,t,A,i){this.codePoints=e,this.required="!"===t,this.start=A,this.end=i}return e.prototype.slice=function(){return l.apply(void 0,this.codePoints.slice(this.start,this.end))},e}(),se=45,oe=43,le=-1,ce=function(e){return e>=48&&e<=57},de=function(e){return ce(e)||e>=65&&e<=70||e>=97&&e<=102},he=function(e){return 10===e||9===e||32===e},ue=function(e){return function(e){return function(e){return e>=97&&e<=122}(e)||function(e){return e>=65&&e<=90}(e)}(e)||function(e){return e>=128}(e)||95===e},ge=function(e){return ue(e)||ce(e)||e===se},pe=function(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e},me=function(e,t){return 92===e&&10!==t},we=function(e,t,A){return e===se?ue(t)||me(t,A):!!ue(e)||!(92!==e||!me(e,t))},fe=function(e,t,A){return e===oe||e===se?!!ce(t)||46===t&&ce(A):ce(46===e?t:e)},Be=function(e){var t=0,A=1;e[t]!==oe&&e[t]!==se||(e[t]===se&&(A=-1),t++);for(var i=[];ce(e[t]);)i.push(e[t++]);var n=i.length?parseInt(l.apply(void 0,i),10):0;46===e[t]&&t++;for(var a=[];ce(e[t]);)a.push(e[t++]);var r=a.length,s=r?parseInt(l.apply(void 0,a),10):0;69!==e[t]&&101!==e[t]||t++;var o=1;e[t]!==oe&&e[t]!==se||(e[t]===se&&(o=-1),t++);for(var c=[];ce(e[t]);)c.push(e[t++]);var d=c.length?parseInt(l.apply(void 0,c),10):0;return A*(n+s*Math.pow(10,-r))*Math.pow(10,o*d)},Ee={type:2},be={type:3},ve={type:4},Ce={type:13},ye={type:8},Fe={type:21},xe={type:9},Se={type:10},Te={type:11},Ie={type:12},Ue={type:14},Qe={type:23},ke={type:1},Oe={type:25},Me={type:24},Le={type:26},De={type:27},Ne={type:28},He={type:29},Re={type:31},Pe={type:32},Ve=function(){function e(){this._value=[]}return e.prototype.write=function(e){this._value=this._value.concat(o(e))},e.prototype.read=function(){for(var e=[],t=this.consumeToken();t!==Pe;)e.push(t),t=this.consumeToken();return e},e.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case 34:return this.consumeStringToken(34);case 35:var t=this.peekCodePoint(0),A=this.peekCodePoint(1),i=this.peekCodePoint(2);if(ge(t)||me(A,i)){var n=we(t,A,i)?2:1;return{type:5,value:this.consumeName(),flags:n}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Ce;break;case 39:return this.consumeStringToken(39);case 40:return Ee;case 41:return be;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Ue;break;case oe:if(fe(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 44:return ve;case se:var a=e,r=this.peekCodePoint(0),s=this.peekCodePoint(1);if(fe(a,r,s))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(we(a,r,s))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(r===se&&62===s)return this.consumeCodePoint(),this.consumeCodePoint(),Me;break;case 46:if(fe(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var o=this.consumeCodePoint();if(42===o&&47===(o=this.consumeCodePoint()))return this.consumeToken();if(o===le)return this.consumeToken()}break;case 58:return Le;case 59:return De;case 60:if(33===this.peekCodePoint(0)&&this.peekCodePoint(1)===se&&this.peekCodePoint(2)===se)return this.consumeCodePoint(),this.consumeCodePoint(),Oe;break;case 64:var c=this.peekCodePoint(0),d=this.peekCodePoint(1),h=this.peekCodePoint(2);if(we(c,d,h))return{type:7,value:this.consumeName()};break;case 91:return Ne;case 92:if(me(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case 93:return He;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),ye;break;case 123:return Te;case 125:return Ie;case 117:case 85:var u=this.peekCodePoint(0),g=this.peekCodePoint(1);return u!==oe||!de(g)&&63!==g||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),xe;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),Fe;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Se;break;case le:return Pe}return he(e)?(this.consumeWhiteSpace(),Re):ce(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):ue(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:l(e)}},e.prototype.consumeCodePoint=function(){var e=this._value.shift();return void 0===e?-1:e},e.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},e.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},e.prototype.consumeUnicodeRangeToken=function(){for(var e=[],t=this.consumeCodePoint();de(t)&&e.length<6;)e.push(t),t=this.consumeCodePoint();for(var A=!1;63===t&&e.length<6;)e.push(t),t=this.consumeCodePoint(),A=!0;if(A)return{type:30,start:parseInt(l.apply(void 0,e.map((function(e){return 63===e?48:e}))),16),end:parseInt(l.apply(void 0,e.map((function(e){return 63===e?70:e}))),16)};var i=parseInt(l.apply(void 0,e),16);if(this.peekCodePoint(0)===se&&de(this.peekCodePoint(1))){this.consumeCodePoint(),t=this.consumeCodePoint();for(var n=[];de(t)&&n.length<6;)n.push(t),t=this.consumeCodePoint();return{type:30,start:i,end:parseInt(l.apply(void 0,n),16)}}return{type:30,start:i,end:i}},e.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return"url"===e.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},e.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===le)return{type:22,value:""};var t=this.peekCodePoint(0);if(39===t||34===t){var A=this.consumeStringToken(this.consumeCodePoint());return 0===A.type&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===le||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:A.value}):(this.consumeBadUrlRemnants(),Qe)}for(;;){var i=this.consumeCodePoint();if(i===le||41===i)return{type:22,value:l.apply(void 0,e)};if(he(i))return this.consumeWhiteSpace(),this.peekCodePoint(0)===le||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:l.apply(void 0,e)}):(this.consumeBadUrlRemnants(),Qe);if(34===i||39===i||40===i||pe(i))return this.consumeBadUrlRemnants(),Qe;if(92===i){if(!me(i,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),Qe;e.push(this.consumeEscapedCodePoint())}else e.push(i)}},e.prototype.consumeWhiteSpace=function(){for(;he(this.peekCodePoint(0));)this.consumeCodePoint()},e.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(41===e||e===le)return;me(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},e.prototype.consumeStringSlice=function(e){for(var t="";e>0;){var A=Math.min(5e4,e);t+=l.apply(void 0,this._value.splice(0,A)),e-=A}return this._value.shift(),t},e.prototype.consumeStringToken=function(e){for(var t="",A=0;;){var i=this._value[A];if(i===le||void 0===i||i===e)return{type:0,value:t+=this.consumeStringSlice(A)};if(10===i)return this._value.splice(0,A),ke;if(92===i){var n=this._value[A+1];n!==le&&void 0!==n&&(10===n?(t+=this.consumeStringSlice(A),A=-1,this._value.shift()):me(i,n)&&(t+=this.consumeStringSlice(A),t+=l(this.consumeEscapedCodePoint()),A=-1))}A++}},e.prototype.consumeNumber=function(){var e=[],t=4,A=this.peekCodePoint(0);for(A!==oe&&A!==se||e.push(this.consumeCodePoint());ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());A=this.peekCodePoint(0);var i=this.peekCodePoint(1);if(46===A&&ce(i))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());A=this.peekCodePoint(0),i=this.peekCodePoint(1);var n=this.peekCodePoint(2);if((69===A||101===A)&&((i===oe||i===se)&&ce(n)||ce(i)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=8;ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[Be(e),t]},e.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),t=e[0],A=e[1],i=this.peekCodePoint(0),n=this.peekCodePoint(1),a=this.peekCodePoint(2);return we(i,n,a)?{type:15,number:t,flags:A,unit:this.consumeName()}:37===i?(this.consumeCodePoint(),{type:16,number:t,flags:A}):{type:17,number:t,flags:A}},e.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(de(e)){for(var t=l(e);de(this.peekCodePoint(0))&&t.length<6;)t+=l(this.consumeCodePoint());he(this.peekCodePoint(0))&&this.consumeCodePoint();var A=parseInt(t,16);return 0===A||function(e){return e>=55296&&e<=57343}(A)||A>1114111?65533:A}return e===le?65533:e},e.prototype.consumeName=function(){for(var e="";;){var t=this.consumeCodePoint();if(ge(t))e+=l(t);else{if(!me(t,this.peekCodePoint(0)))return this.reconsumeCodePoint(t),e;e+=l(this.consumeEscapedCodePoint())}}},e}(),Ke=function(){function e(e){this._tokens=e}return e.create=function(t){var A=new Ve;return A.write(t),new e(A.read())},e.parseValue=function(t){return e.create(t).parseComponentValue()},e.parseValues=function(t){return e.create(t).parseComponentValues()},e.prototype.parseComponentValue=function(){for(var e=this.consumeToken();31===e.type;)e=this.consumeToken();if(32===e.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var t=this.consumeComponentValue();do{e=this.consumeToken()}while(31===e.type);if(32===e.type)return t;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},e.prototype.parseComponentValues=function(){for(var e=[];;){var t=this.consumeComponentValue();if(32===t.type)return e;e.push(t),e.push()}},e.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},e.prototype.consumeSimpleBlock=function(e){for(var t={type:e,values:[]},A=this.consumeToken();;){if(32===A.type||qe(A,e))return t;this.reconsumeToken(A),t.values.push(this.consumeComponentValue()),A=this.consumeToken()}},e.prototype.consumeFunction=function(e){for(var t={name:e.value,values:[],type:18};;){var A=this.consumeToken();if(32===A.type||3===A.type)return t;this.reconsumeToken(A),t.values.push(this.consumeComponentValue())}},e.prototype.consumeToken=function(){var e=this._tokens.shift();return void 0===e?Pe:e},e.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},e}(),Ge=function(e){return 15===e.type},We=function(e){return 17===e.type},Xe=function(e){return 20===e.type},ze=function(e){return 0===e.type},Ye=function(e,t){return Xe(e)&&e.value===t},je=function(e){return 31!==e.type},Je=function(e){return 31!==e.type&&4!==e.type},Ze=function(e){var t=[],A=[];return e.forEach((function(e){if(4===e.type){if(0===A.length)throw new Error("Error parsing function args, zero tokens for arg");return t.push(A),void(A=[])}31!==e.type&&A.push(e)})),A.length&&t.push(A),t},qe=function(e,t){return 11===t&&12===e.type||28===t&&29===e.type||2===t&&3===e.type},_e=function(e){return 17===e.type||15===e.type},$e=function(e){return 16===e.type||_e(e)},et=function(e){return e.length>1?[e[0],e[1]]:[e[0]]},tt={type:17,number:0,flags:4},At={type:16,number:50,flags:4},it={type:16,number:100,flags:4},nt=function(e,t,A){var i=e[0],n=e[1];return[at(i,t),at(void 0!==n?n:i,A)]},at=function(e,t){if(16===e.type)return e.number/100*t;if(Ge(e))switch(e.unit){case"rem":case"em":return 16*e.number;default:return e.number}return e.number},rt="grad",st="turn",ot=function(e,t){if(15===t.type)switch(t.unit){case"deg":return Math.PI*t.number/180;case rt:return Math.PI/200*t.number;case"rad":return t.number;case st:return 2*Math.PI*t.number}throw new Error("Unsupported angle type")},lt=function(e){return 15===e.type&&("deg"===e.unit||e.unit===rt||"rad"===e.unit||e.unit===st)},ct=function(e){switch(e.filter(Xe).map((function(e){return e.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[tt,tt];case"to top":case"bottom":return dt(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[tt,it];case"to right":case"left":return dt(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[it,it];case"to bottom":case"top":return dt(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[it,tt];case"to left":case"right":return dt(270)}return 0},dt=function(e){return Math.PI*e/180},ht=function(e,t){if(18===t.type){var A=Et[t.name];if(void 0===A)throw new Error('Attempting to parse an unsupported color function "'+t.name+'"');return A(e,t.values)}if(5===t.type){if(3===t.value.length){var i=t.value.substring(0,1),n=t.value.substring(1,2),a=t.value.substring(2,3);return pt(parseInt(i+i,16),parseInt(n+n,16),parseInt(a+a,16),1)}if(4===t.value.length){i=t.value.substring(0,1),n=t.value.substring(1,2),a=t.value.substring(2,3);var r=t.value.substring(3,4);return pt(parseInt(i+i,16),parseInt(n+n,16),parseInt(a+a,16),parseInt(r+r,16)/255)}if(6===t.value.length)return i=t.value.substring(0,2),n=t.value.substring(2,4),a=t.value.substring(4,6),pt(parseInt(i,16),parseInt(n,16),parseInt(a,16),1);if(8===t.value.length)return i=t.value.substring(0,2),n=t.value.substring(2,4),a=t.value.substring(4,6),r=t.value.substring(6,8),pt(parseInt(i,16),parseInt(n,16),parseInt(a,16),parseInt(r,16)/255)}if(20===t.type){var s=vt[t.value.toUpperCase()];if(void 0!==s)return s}return vt.TRANSPARENT},ut=function(e){return 0==(255&e)},gt=function(e){var t=255&e,A=255&e>>8,i=255&e>>16,n=255&e>>24;return t<255?"rgba("+n+","+i+","+A+","+t/255+")":"rgb("+n+","+i+","+A+")"},pt=function(e,t,A,i){return(e<<24|t<<16|A<<8|Math.round(255*i)<<0)>>>0},mt=function(e,t){if(17===e.type)return e.number;if(16===e.type){var A=3===t?1:255;return 3===t?e.number/100*A:Math.round(e.number/100*A)}return 0},wt=function(e,t){var A=t.filter(Je);if(3===A.length){var i=A.map(mt),n=i[0],a=i[1],r=i[2];return pt(n,a,r,1)}if(4===A.length){var s=A.map(mt),o=(n=s[0],a=s[1],r=s[2],s[3]);return pt(n,a,r,o)}return 0};function ft(e,t,A){return A<0&&(A+=1),A>=1&&(A-=1),A<1/6?(t-e)*A*6+e:A<.5?t:A<2/3?6*(t-e)*(2/3-A)+e:e}var Bt=function(e,t){var A=t.filter(Je),i=A[0],n=A[1],a=A[2],r=A[3],s=(17===i.type?dt(i.number):ot(e,i))/(2*Math.PI),o=$e(n)?n.number/100:0,l=$e(a)?a.number/100:0,c=void 0!==r&&$e(r)?at(r,1):1;if(0===o)return pt(255*l,255*l,255*l,1);var d=l<=.5?l*(o+1):l+o-l*o,h=2*l-d,u=ft(h,d,s+1/3),g=ft(h,d,s),p=ft(h,d,s-1/3);return pt(255*u,255*g,255*p,c)},Et={hsl:Bt,hsla:Bt,rgb:wt,rgba:wt},bt=function(e,t){return ht(e,Ke.create(t).parseComponentValue())},vt={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Ct={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(Xe(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},yt={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Ft=function(e,t){var A=ht(e,t[0]),i=t[1];return i&&$e(i)?{color:A,stop:i}:{color:A,stop:null}},xt=function(e,t){var A=e[0],i=e[e.length-1];null===A.stop&&(A.stop=tt),null===i.stop&&(i.stop=it);for(var n=[],a=0,r=0;ra?n.push(o):n.push(a),a=o}else n.push(null)}var l=null;for(r=0;re.optimumDistance)?{optimumCorner:t,optimumDistance:s}:e}),{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},Ut=function(e,t){var A=dt(180),i=[];return Ze(t).forEach((function(t,n){if(0===n){var a=t[0];if(20===a.type&&-1!==["top","left","right","bottom"].indexOf(a.value))return void(A=ct(t));if(lt(a))return void(A=(ot(e,a)+dt(270))%dt(360))}var r=Ft(e,t);i.push(r)})),{angle:A,stops:i,type:1}},Qt="closest-side",kt="farthest-side",Ot="closest-corner",Mt="farthest-corner",Lt="circle",Dt="ellipse",Nt="cover",Ht="contain",Rt=function(e,t){var A=0,i=3,n=[],a=[];return Ze(t).forEach((function(t,r){var s=!0;if(0===r?s=t.reduce((function(e,t){if(Xe(t))switch(t.value){case"center":return a.push(At),!1;case"top":case"left":return a.push(tt),!1;case"right":case"bottom":return a.push(it),!1}else if($e(t)||_e(t))return a.push(t),!1;return e}),s):1===r&&(s=t.reduce((function(e,t){if(Xe(t))switch(t.value){case Lt:return A=0,!1;case Dt:return A=1,!1;case Ht:case Qt:return i=0,!1;case kt:return i=1,!1;case Ot:return i=2,!1;case Nt:case Mt:return i=3,!1}else if(_e(t)||$e(t))return Array.isArray(i)||(i=[]),i.push(t),!1;return e}),s)),s){var o=Ft(e,t);n.push(o)}})),{size:i,shape:A,stops:n,position:a,type:2}},Pt=function(e,t){if(22===t.type){var A={url:t.value,type:0};return e.cache.addImage(t.value),A}if(18===t.type){var i=Kt[t.name];if(void 0===i)throw new Error('Attempting to parse an unsupported image function "'+t.name+'"');return i(e,t.values)}throw new Error("Unsupported image type "+t.type)};var Vt,Kt={"linear-gradient":function(e,t){var A=dt(180),i=[];return Ze(t).forEach((function(t,n){if(0===n){var a=t[0];if(20===a.type&&"to"===a.value)return void(A=ct(t));if(lt(a))return void(A=ot(e,a))}var r=Ft(e,t);i.push(r)})),{angle:A,stops:i,type:1}},"-moz-linear-gradient":Ut,"-ms-linear-gradient":Ut,"-o-linear-gradient":Ut,"-webkit-linear-gradient":Ut,"radial-gradient":function(e,t){var A=0,i=3,n=[],a=[];return Ze(t).forEach((function(t,r){var s=!0;if(0===r){var o=!1;s=t.reduce((function(e,t){if(o)if(Xe(t))switch(t.value){case"center":return a.push(At),e;case"top":case"left":return a.push(tt),e;case"right":case"bottom":return a.push(it),e}else($e(t)||_e(t))&&a.push(t);else if(Xe(t))switch(t.value){case Lt:return A=0,!1;case Dt:return A=1,!1;case"at":return o=!0,!1;case Qt:return i=0,!1;case Nt:case kt:return i=1,!1;case Ht:case Ot:return i=2,!1;case Mt:return i=3,!1}else if(_e(t)||$e(t))return Array.isArray(i)||(i=[]),i.push(t),!1;return e}),s)}if(s){var l=Ft(e,t);n.push(l)}})),{size:i,shape:A,stops:n,position:a,type:2}},"-moz-radial-gradient":Rt,"-ms-radial-gradient":Rt,"-o-radial-gradient":Rt,"-webkit-radial-gradient":Rt,"-webkit-gradient":function(e,t){var A=dt(180),i=[],n=1;return Ze(t).forEach((function(t,A){var a=t[0];if(0===A){if(Xe(a)&&"linear"===a.value)return void(n=1);if(Xe(a)&&"radial"===a.value)return void(n=2)}if(18===a.type)if("from"===a.name){var r=ht(e,a.values[0]);i.push({stop:tt,color:r})}else if("to"===a.name)r=ht(e,a.values[0]),i.push({stop:it,color:r});else if("color-stop"===a.name){var s=a.values.filter(Je);if(2===s.length){r=ht(e,s[1]);var o=s[0];We(o)&&i.push({stop:{type:16,number:100*o.number,flags:o.flags},color:r})}}})),1===n?{angle:(A+dt(180))%dt(360),stops:i,type:n}:{size:3,shape:0,stops:i,position:[],type:n}}},Gt={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,t){if(0===t.length)return[];var A=t[0];return 20===A.type&&"none"===A.value?[]:t.filter((function(e){return Je(e)&&function(e){return!(20===e.type&&"none"===e.value||18===e.type&&!Kt[e.name])}(e)})).map((function(t){return Pt(e,t)}))}},Wt={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(e,t){return t.map((function(e){if(Xe(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},Xt={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(e,t){return Ze(t).map((function(e){return e.filter($e)})).map(et)}},zt={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(e,t){return Ze(t).map((function(e){return e.filter(Xe).map((function(e){return e.value})).join(" ")})).map(Yt)}},Yt=function(e){switch(e){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(e){e.AUTO="auto",e.CONTAIN="contain",e.COVER="cover"}(Vt||(Vt={}));var jt,Jt={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(e,t){return Ze(t).map((function(e){return e.filter(Zt)}))}},Zt=function(e){return Xe(e)||$e(e)},qt=function(e){return{name:"border-"+e+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},_t=qt("top"),$t=qt("right"),eA=qt("bottom"),tA=qt("left"),AA=function(e){return{name:"border-radius-"+e,initialValue:"0 0",prefix:!1,type:1,parse:function(e,t){return et(t.filter($e))}}},iA=AA("top-left"),nA=AA("top-right"),aA=AA("bottom-right"),rA=AA("bottom-left"),sA=function(e){return{name:"border-"+e+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,t){switch(t){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},oA=sA("top"),lA=sA("right"),cA=sA("bottom"),dA=sA("left"),hA=function(e){return{name:"border-"+e+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,t){return Ge(t)?t.number:0}}},uA=hA("top"),gA=hA("right"),pA=hA("bottom"),mA=hA("left"),wA={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},fA={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(e,t){return"rtl"===t?1:0}},BA={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(e,t){return t.filter(Xe).reduce((function(e,t){return e|EA(t.value)}),0)}},EA=function(e){switch(e){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},bA={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},vA={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(e,t){return 20===t.type&&"normal"===t.value?0:17===t.type||15===t.type?t.number:0}};!function(e){e.NORMAL="normal",e.STRICT="strict"}(jt||(jt={}));var CA,yA={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"strict"===t?jt.STRICT:jt.NORMAL}},FA={name:"line-height",initialValue:"normal",prefix:!1,type:4},xA=function(e,t){return Xe(e)&&"normal"===e.value?1.2*t:17===e.type?t*e.number:$e(e)?at(e,t):t},SA={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(e,t){return 20===t.type&&"none"===t.value?null:Pt(e,t)}},TA={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(e,t){return"inside"===t?0:1}},IA={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(e,t){switch(t){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},UA=function(e){return{name:"margin-"+e,initialValue:"0",prefix:!1,type:4}},QA=UA("top"),kA=UA("right"),OA=UA("bottom"),MA=UA("left"),LA={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(e,t){return t.filter(Xe).map((function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},DA={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(e,t){return"break-word"===t?"break-word":"normal"}},NA=function(e){return{name:"padding-"+e,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},HA=NA("top"),RA=NA("right"),PA=NA("bottom"),VA=NA("left"),KA={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(e,t){switch(t){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},GA={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(e,t){switch(t){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},WA={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,t){return 1===t.length&&Ye(t[0],"none")?[]:Ze(t).map((function(t){for(var A={color:vt.TRANSPARENT,offsetX:tt,offsetY:tt,blur:tt},i=0,n=0;n1?1:0],this.overflowWrap=Ci(e,DA,t.overflowWrap),this.paddingTop=Ci(e,HA,t.paddingTop),this.paddingRight=Ci(e,RA,t.paddingRight),this.paddingBottom=Ci(e,PA,t.paddingBottom),this.paddingLeft=Ci(e,VA,t.paddingLeft),this.paintOrder=Ci(e,wi,t.paintOrder),this.position=Ci(e,GA,t.position),this.textAlign=Ci(e,KA,t.textAlign),this.textDecorationColor=Ci(e,Ai,null!==(A=t.textDecorationColor)&&void 0!==A?A:t.color),this.textDecorationLine=Ci(e,ii,null!==(i=t.textDecorationLine)&&void 0!==i?i:t.textDecoration),this.textShadow=Ci(e,WA,t.textShadow),this.textTransform=Ci(e,XA,t.textTransform),this.transform=Ci(e,zA,t.transform),this.transformOrigin=Ci(e,ZA,t.transformOrigin),this.visibility=Ci(e,qA,t.visibility),this.webkitTextStrokeColor=Ci(e,fi,t.webkitTextStrokeColor),this.webkitTextStrokeWidth=Ci(e,Bi,t.webkitTextStrokeWidth),this.wordBreak=Ci(e,_A,t.wordBreak),this.zIndex=Ci(e,$A,t.zIndex)}return e.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},e.prototype.isTransparent=function(){return ut(this.backgroundColor)},e.prototype.isTransformed=function(){return null!==this.transform},e.prototype.isPositioned=function(){return 0!==this.position},e.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},e.prototype.isFloating=function(){return 0!==this.float},e.prototype.isInlineLevel=function(){return li(this.display,4)||li(this.display,33554432)||li(this.display,268435456)||li(this.display,536870912)||li(this.display,67108864)||li(this.display,134217728)},e}(),bi=function(e,t){this.content=Ci(e,ci,t.content),this.quotes=Ci(e,gi,t.quotes)},vi=function(e,t){this.counterIncrement=Ci(e,di,t.counterIncrement),this.counterReset=Ci(e,hi,t.counterReset)},Ci=function(e,t,A){var i=new Ve,n=null!=A?A.toString():t.initialValue;i.write(n);var a=new Ke(i.read());switch(t.type){case 2:var r=a.parseComponentValue();return t.parse(e,Xe(r)?r.value:t.initialValue);case 0:return t.parse(e,a.parseComponentValue());case 1:return t.parse(e,a.parseComponentValues());case 4:return a.parseComponentValue();case 3:switch(t.format){case"angle":return ot(e,a.parseComponentValue());case"color":return ht(e,a.parseComponentValue());case"image":return Pt(e,a.parseComponentValue());case"length":var s=a.parseComponentValue();return _e(s)?s:tt;case"length-percentage":var o=a.parseComponentValue();return $e(o)?o:tt;case"time":return ei.parse(e,a.parseComponentValue())}}},yi=function(e,t){var A=function(e){switch(e.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(e);return 1===A||t===A},Fi=function(e,t){this.context=e,this.textNodes=[],this.elements=[],this.flags=0,yi(t,3),this.styles=new Ei(e,window.getComputedStyle(t,null)),Un(t)&&(this.styles.animationDuration.some((function(e){return e>0}))&&(t.style.animationDuration="0s"),null!==this.styles.transform&&(t.style.transform="none")),this.bounds=s(this.context,t),yi(t,4)&&(this.flags|=16)},xi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Si="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Ti=0;Ti=0){if(e<55296||e>56319&&e<=65535)return t=((t=this.index[e>>5])<<2)+(31&e),this.data[t];if(e<=65535)return t=((t=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[t];if(e>11),t=this.index[t],t+=e>>5&63,t=((t=this.index[t])<<2)+(31&e),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),Qi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ki="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Oi=0;Oi>10),r%1024+56320)),(n+1===A||i.length>16384)&&(a+=String.fromCharCode.apply(String,i),i.length=0)}return a},Pi=function(e,t){var A=function(e){var t,A,i,n,a,r=.75*e.length,s=e.length,o=0;"="===e[e.length-1]&&(r--,"="===e[e.length-2]&&r--);var l="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(r):new Array(r),c=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t>4,c[o++]=(15&i)<<4|n>>2,c[o++]=(3&n)<<6|63&a;return l}(e),i=Array.isArray(A)?function(e){for(var t=e.length,A=[],i=0;i=55296&&n<=56319&&A=A)return{done:!0,value:null};for(var e=Vi;ir.x||n.y>r.y;return r=n,0===t||s}));return e.body.removeChild(t),s}(document);return Object.defineProperty(ji,"SUPPORT_WORD_BREAKING",{value:e}),e},get SUPPORT_SVG_DRAWING(){var e=function(e){var t=new Image,A=e.createElement("canvas"),i=A.getContext("2d");if(!i)return!1;t.src="data:image/svg+xml,";try{i.drawImage(t,0,0),A.toDataURL()}catch(e){return!1}return!0}(document);return Object.defineProperty(ji,"SUPPORT_SVG_DRAWING",{value:e}),e},get SUPPORT_FOREIGNOBJECT_DRAWING(){var e="function"==typeof Array.from&&"function"==typeof window.fetch?function(e){var t=e.createElement("canvas"),A=100;t.width=A,t.height=A;var i=t.getContext("2d");if(!i)return Promise.reject(!1);i.fillStyle="rgb(0, 255, 0)",i.fillRect(0,0,A,A);var n=new Image,a=t.toDataURL();n.src=a;var r=zi(A,A,0,0,n);return i.fillStyle="red",i.fillRect(0,0,A,A),Yi(r).then((function(t){i.drawImage(t,0,0);var n=i.getImageData(0,0,A,A).data;i.fillStyle="red",i.fillRect(0,0,A,A);var r=e.createElement("div");return r.style.backgroundImage="url("+a+")",r.style.height="100px",Xi(n)?Yi(zi(A,A,0,0,r)):Promise.reject(!1)})).then((function(e){return i.drawImage(e,0,0),Xi(i.getImageData(0,0,A,A).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(ji,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:e}),e},get SUPPORT_CORS_IMAGES(){var e=void 0!==(new Image).crossOrigin;return Object.defineProperty(ji,"SUPPORT_CORS_IMAGES",{value:e}),e},get SUPPORT_RESPONSE_TYPE(){var e="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(ji,"SUPPORT_RESPONSE_TYPE",{value:e}),e},get SUPPORT_CORS_XHR(){var e="withCredentials"in new XMLHttpRequest;return Object.defineProperty(ji,"SUPPORT_CORS_XHR",{value:e}),e},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var e=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(ji,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:e}),e}},Ji=function(e,t){this.text=e,this.bounds=t},Zi=function(e,t){var A=t.ownerDocument;if(A){var i=A.createElement("html2canvaswrapper");i.appendChild(t.cloneNode(!0));var n=t.parentNode;if(n){n.replaceChild(i,t);var a=s(e,i);return i.firstChild&&n.replaceChild(i.firstChild,i),a}}return r.EMPTY},qi=function(e,t,A){var i=e.ownerDocument;if(!i)throw new Error("Node has no owner document");var n=i.createRange();return n.setStart(e,t),n.setEnd(e,t+A),n},_i=function(e){if(ji.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(e)).map((function(e){return e.segment}))}return function(e){for(var t,A=Wi(e),i=[];!(t=A.next()).done;)t.value&&i.push(t.value.slice());return i}(e)},$i=function(e,t){return 0!==t.letterSpacing?_i(e):function(e,t){if(ji.SUPPORT_NATIVE_TEXT_SEGMENTATION){var A=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(A.segment(e)).map((function(e){return e.segment}))}return tn(e,t)}(e,t)},en=[32,160,4961,65792,65793,4153,4241],tn=function(e,t){for(var A,i=function(e,t){var A=o(e),i=ae(A,t),n=i[0],a=i[1],r=i[2],s=A.length,l=0,c=0;return{next:function(){if(c>=s)return{done:!0,value:null};for(var e=z;c0)if(ji.SUPPORT_RANGE_BOUNDS){var n=qi(i,s,t.length).getClientRects();if(n.length>1){var o=_i(t),l=0;o.forEach((function(t){a.push(new Ji(t,r.fromDOMRectList(e,qi(i,l+s,t.length).getClientRects()))),l+=t.length}))}else a.push(new Ji(t,r.fromDOMRectList(e,n)))}else{var c=i.splitText(t.length);a.push(new Ji(t,Zi(e,i))),i=c}else ji.SUPPORT_RANGE_BOUNDS||(i=i.splitText(t.length));s+=t.length})),a}(e,this.text,A,t)},nn=function(e,t){switch(t){case 1:return e.toLowerCase();case 3:return e.replace(an,rn);case 2:return e.toUpperCase();default:return e}},an=/(^|\s|:|-|\(|\))([a-z])/g,rn=function(e,t,A){return e.length>0?t+A.toUpperCase():e},sn=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.src=A.currentSrc||A.src,i.intrinsicWidth=A.naturalWidth,i.intrinsicHeight=A.naturalHeight,i.context.cache.addImage(i.src),i}return t(A,e),A}(Fi),on=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.canvas=A,i.intrinsicWidth=A.width,i.intrinsicHeight=A.height,i}return t(A,e),A}(Fi),ln=function(e){function A(t,A){var i=e.call(this,t,A)||this,n=new XMLSerializer,a=s(t,A);return A.setAttribute("width",a.width+"px"),A.setAttribute("height",a.height+"px"),i.svg="data:image/svg+xml,"+encodeURIComponent(n.serializeToString(A)),i.intrinsicWidth=A.width.baseVal.value,i.intrinsicHeight=A.height.baseVal.value,i.context.cache.addImage(i.svg),i}return t(A,e),A}(Fi),cn=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.value=A.value,i}return t(A,e),A}(Fi),dn=function(e){function A(t,A){var i=e.call(this,t,A)||this;return i.start=A.start,i.reversed="boolean"==typeof A.reversed&&!0===A.reversed,i}return t(A,e),A}(Fi),hn=[{type:15,flags:0,unit:"px",number:3}],un=[{type:16,flags:0,number:50}],gn="checkbox",pn="radio",mn="password",wn=707406591,fn=function(e){function A(t,A){var i,n,a,s=e.call(this,t,A)||this;switch(s.type=A.type.toLowerCase(),s.checked=A.checked,s.value=0===(a=(n=A).type===mn?new Array(n.value.length+1).join("•"):n.value).length?n.placeholder||"":a,s.type!==gn&&s.type!==pn||(s.styles.backgroundColor=3739148031,s.styles.borderTopColor=s.styles.borderRightColor=s.styles.borderBottomColor=s.styles.borderLeftColor=2779096575,s.styles.borderTopWidth=s.styles.borderRightWidth=s.styles.borderBottomWidth=s.styles.borderLeftWidth=1,s.styles.borderTopStyle=s.styles.borderRightStyle=s.styles.borderBottomStyle=s.styles.borderLeftStyle=1,s.styles.backgroundClip=[0],s.styles.backgroundOrigin=[0],s.bounds=(i=s.bounds).width>i.height?new r(i.left+(i.width-i.height)/2,i.top,i.height,i.height):i.width0)A.textNodes.push(new An(e,n,A.styles));else if(In(n))if(Wn(n)&&n.assignedNodes)n.assignedNodes().forEach((function(t){return Cn(e,t,A,i)}));else{var r=yn(e,n);r.styles.isVisible()&&(xn(n,r,i)?r.flags|=4:Sn(r.styles)&&(r.flags|=2),-1!==vn.indexOf(n.tagName)&&(r.flags|=8),A.elements.push(r),n.slot,n.shadowRoot?Cn(e,n.shadowRoot,r,i):Kn(n)||Ln(n)||Gn(n)||Cn(e,n,r,i))}},yn=function(e,t){return Rn(t)?new sn(e,t):Nn(t)?new on(e,t):Ln(t)?new ln(e,t):kn(t)?new cn(e,t):On(t)?new dn(e,t):Mn(t)?new fn(e,t):Gn(t)?new Bn(e,t):Kn(t)?new En(e,t):Pn(t)?new bn(e,t):new Fi(e,t)},Fn=function(e,t){var A=yn(e,t);return A.flags|=4,Cn(e,t,A,A),A},xn=function(e,t,A){return t.styles.isPositionedWithZIndex()||t.styles.opacity<1||t.styles.isTransformed()||Dn(e)&&A.styles.isTransparent()},Sn=function(e){return e.isPositioned()||e.isFloating()},Tn=function(e){return e.nodeType===Node.TEXT_NODE},In=function(e){return e.nodeType===Node.ELEMENT_NODE},Un=function(e){return In(e)&&void 0!==e.style&&!Qn(e)},Qn=function(e){return"object"==typeof e.className},kn=function(e){return"LI"===e.tagName},On=function(e){return"OL"===e.tagName},Mn=function(e){return"INPUT"===e.tagName},Ln=function(e){return"svg"===e.tagName},Dn=function(e){return"BODY"===e.tagName},Nn=function(e){return"CANVAS"===e.tagName},Hn=function(e){return"VIDEO"===e.tagName},Rn=function(e){return"IMG"===e.tagName},Pn=function(e){return"IFRAME"===e.tagName},Vn=function(e){return"STYLE"===e.tagName},Kn=function(e){return"TEXTAREA"===e.tagName},Gn=function(e){return"SELECT"===e.tagName},Wn=function(e){return"SLOT"===e.tagName},Xn=function(e){return e.tagName.indexOf("-")>0},zn=function(){function e(){this.counters={}}return e.prototype.getCounterValue=function(e){var t=this.counters[e];return t&&t.length?t[t.length-1]:1},e.prototype.getCounterValues=function(e){return this.counters[e]||[]},e.prototype.pop=function(e){var t=this;e.forEach((function(e){return t.counters[e].pop()}))},e.prototype.parse=function(e){var t=this,A=e.counterIncrement,i=e.counterReset,n=!0;null!==A&&A.forEach((function(e){var A=t.counters[e.counter];A&&0!==e.increment&&(n=!1,A.length||A.push(1),A[Math.max(0,A.length-1)]+=e.increment)}));var a=[];return n&&i.forEach((function(e){var A=t.counters[e.counter];a.push(e.counter),A||(A=t.counters[e.counter]=[]),A.push(e.reset)})),a},e}(),Yn={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},jn={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},Jn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},Zn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},qn=function(e,t,A,i,n,a){return eA?ra(e,n,a.length>0):i.integers.reduce((function(t,A,n){for(;e>=A;)e-=A,t+=i.values[n];return t}),"")+a},_n=function(e,t,A,i){var n="";do{A||e--,n=i(e)+n,e/=t}while(e*t>=t);return n},$n=function(e,t,A,i,n){var a=A-t+1;return(e<0?"-":"")+(_n(Math.abs(e),a,i,(function(e){return l(Math.floor(e%a)+t)}))+n)},ea=function(e,t,A){void 0===A&&(A=". ");var i=t.length;return _n(Math.abs(e),i,!1,(function(e){return t[Math.floor(e%i)]}))+A},ta=function(e,t,A,i,n,a){if(e<-9999||e>9999)return ra(e,4,n.length>0);var r=Math.abs(e),s=n;if(0===r)return t[0]+s;for(var o=0;r>0&&o<=4;o++){var l=r%10;0===l&&li(a,1)&&""!==s?s=t[l]+s:l>1||1===l&&0===o||1===l&&1===o&&li(a,2)||1===l&&1===o&&li(a,4)&&e>100||1===l&&o>1&&li(a,8)?s=t[l]+(o>0?A[o-1]:"")+s:1===l&&o>0&&(s=A[o-1]+s),r=Math.floor(r/10)}return(e<0?i:"")+s},Aa="十百千萬",ia="拾佰仟萬",na="マイナス",aa="마이너스",ra=function(e,t,A){var i=A?". ":"",n=A?"、":"",a=A?", ":"",r=A?" ":"";switch(t){case 0:return"•"+r;case 1:return"◦"+r;case 2:return"◾"+r;case 5:var s=$n(e,48,57,!0,i);return s.length<4?"0"+s:s;case 4:return ea(e,"〇一二三四五六七八九",n);case 6:return qn(e,1,3999,Yn,3,i).toLowerCase();case 7:return qn(e,1,3999,Yn,3,i);case 8:return $n(e,945,969,!1,i);case 9:return $n(e,97,122,!1,i);case 10:return $n(e,65,90,!1,i);case 11:return $n(e,1632,1641,!0,i);case 12:case 49:return qn(e,1,9999,jn,3,i);case 35:return qn(e,1,9999,jn,3,i).toLowerCase();case 13:return $n(e,2534,2543,!0,i);case 14:case 30:return $n(e,6112,6121,!0,i);case 15:return ea(e,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return ea(e,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return ta(e,"零一二三四五六七八九",Aa,"負",n,14);case 47:return ta(e,"零壹貳參肆伍陸柒捌玖",ia,"負",n,15);case 42:return ta(e,"零一二三四五六七八九",Aa,"负",n,14);case 41:return ta(e,"零壹贰叁肆伍陆柒捌玖",ia,"负",n,15);case 26:return ta(e,"〇一二三四五六七八九","十百千万",na,n,0);case 25:return ta(e,"零壱弐参四伍六七八九","拾百千万",na,n,7);case 31:return ta(e,"영일이삼사오육칠팔구","십백천만",aa,a,7);case 33:return ta(e,"零一二三四五六七八九","十百千萬",aa,a,0);case 32:return ta(e,"零壹貳參四五六七八九","拾百千",aa,a,7);case 18:return $n(e,2406,2415,!0,i);case 20:return qn(e,1,19999,Zn,3,i);case 21:return $n(e,2790,2799,!0,i);case 22:return $n(e,2662,2671,!0,i);case 22:return qn(e,1,10999,Jn,3,i);case 23:return ea(e,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return ea(e,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return $n(e,3302,3311,!0,i);case 28:return ea(e,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return ea(e,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return $n(e,3792,3801,!0,i);case 37:return $n(e,6160,6169,!0,i);case 38:return $n(e,4160,4169,!0,i);case 39:return $n(e,2918,2927,!0,i);case 40:return $n(e,1776,1785,!0,i);case 43:return $n(e,3046,3055,!0,i);case 44:return $n(e,3174,3183,!0,i);case 45:return $n(e,3664,3673,!0,i);case 46:return $n(e,3872,3881,!0,i);default:return $n(e,48,57,!0,i)}},sa="data-html2canvas-ignore",oa=function(){function e(e,t,A){if(this.context=e,this.options=A,this.scrolledElements=[],this.referenceElement=t,this.counters=new zn,this.quoteDepth=0,!t.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(t.ownerDocument.documentElement,!1)}return e.prototype.toIFrame=function(e,t){var A=this,a=ca(e,t);if(!a.contentWindow)return Promise.reject("Unable to find iframe window");var r=e.defaultView.pageXOffset,s=e.defaultView.pageYOffset,o=a.contentWindow,l=o.document,c=ua(a).then((function(){return i(A,void 0,void 0,(function(){var e,A;return n(this,(function(i){switch(i.label){case 0:return this.scrolledElements.forEach(fa),o&&(o.scrollTo(t.left,t.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||o.scrollY===t.top&&o.scrollX===t.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-t.left,o.scrollY-t.top,0,0))),e=this.options.onclone,void 0===(A=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:l.fonts&&l.fonts.ready?[4,l.fonts.ready]:[3,2];case 1:i.sent(),i.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,ha(l)]:[3,4];case 3:i.sent(),i.label=4;case 4:return"function"==typeof e?[2,Promise.resolve().then((function(){return e(l,A)})).then((function(){return a}))]:[2,a]}}))}))}));return l.open(),l.write(ma(document.doctype)+""),wa(this.referenceElement.ownerDocument,r,s),l.replaceChild(l.adoptNode(this.documentElement),l.documentElement),l.close(),c},e.prototype.createElementClone=function(e){if(yi(e,2),Nn(e))return this.createCanvasClone(e);if(Hn(e))return this.createVideoClone(e);if(Vn(e))return this.createStyleClone(e);var t=e.cloneNode(!1);return Rn(t)&&(Rn(e)&&e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=""),"lazy"===t.loading&&(t.loading="eager")),Xn(t)?this.createCustomElementClone(t):t},e.prototype.createCustomElementClone=function(e){var t=document.createElement("html2canvascustomelement");return pa(e.style,t),t},e.prototype.createStyleClone=function(e){try{var t=e.sheet;if(t&&t.cssRules){var A=[].slice.call(t.cssRules,0).reduce((function(e,t){return t&&"string"==typeof t.cssText?e+t.cssText:e}),""),i=e.cloneNode(!1);return i.textContent=A,i}}catch(e){if(this.context.logger.error("Unable to access cssRules property",e),"SecurityError"!==e.name)throw e}return e.cloneNode(!1)},e.prototype.createCanvasClone=function(e){var t;if(this.options.inlineImages&&e.ownerDocument){var A=e.ownerDocument.createElement("img");try{return A.src=e.toDataURL(),A}catch(t){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var i=e.cloneNode(!1);try{i.width=e.width,i.height=e.height;var n=e.getContext("2d"),a=i.getContext("2d");if(a)if(!this.options.allowTaint&&n)a.putImageData(n.getImageData(0,0,e.width,e.height),0,0);else{var r=null!==(t=e.getContext("webgl2"))&&void 0!==t?t:e.getContext("webgl");if(r){var s=r.getContextAttributes();!1===(null==s?void 0:s.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}a.drawImage(e,0,0)}return i}catch(t){this.context.logger.info("Unable to clone canvas as it is tainted",e)}return i},e.prototype.createVideoClone=function(e){var t=e.ownerDocument.createElement("canvas");t.width=e.offsetWidth,t.height=e.offsetHeight;var A=t.getContext("2d");try{return A&&(A.drawImage(e,0,0,t.width,t.height),this.options.allowTaint||A.getImageData(0,0,t.width,t.height)),t}catch(t){this.context.logger.info("Unable to clone video as it is tainted",e)}var i=e.ownerDocument.createElement("canvas");return i.width=e.offsetWidth,i.height=e.offsetHeight,i},e.prototype.appendChildNode=function(e,t,A){In(t)&&("SCRIPT"===t.tagName||t.hasAttribute(sa)||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(t))||this.options.copyStyles&&In(t)&&Vn(t)||e.appendChild(this.cloneNode(t,A))},e.prototype.cloneChildNodes=function(e,t,A){for(var i=this,n=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;n;n=n.nextSibling)if(In(n)&&Wn(n)&&"function"==typeof n.assignedNodes){var a=n.assignedNodes();a.length&&a.forEach((function(e){return i.appendChildNode(t,e,A)}))}else this.appendChildNode(t,n,A)},e.prototype.cloneNode=function(e,t){if(Tn(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var A=e.ownerDocument.defaultView;if(A&&In(e)&&(Un(e)||Qn(e))){var i=this.createElementClone(e);i.style.transitionProperty="none";var n=A.getComputedStyle(e),a=A.getComputedStyle(e,":before"),r=A.getComputedStyle(e,":after");this.referenceElement===e&&Un(i)&&(this.clonedReferenceElement=i),Dn(i)&&va(i);var s=this.counters.parse(new vi(this.context,n)),o=this.resolvePseudoContent(e,i,a,Mi.BEFORE);Xn(e)&&(t=!0),Hn(e)||this.cloneChildNodes(e,i,t),o&&i.insertBefore(o,i.firstChild);var l=this.resolvePseudoContent(e,i,r,Mi.AFTER);return l&&i.appendChild(l),this.counters.pop(s),(n&&(this.options.copyStyles||Qn(e))&&!Pn(e)||t)&&pa(n,i),0===e.scrollTop&&0===e.scrollLeft||this.scrolledElements.push([i,e.scrollLeft,e.scrollTop]),(Kn(e)||Gn(e))&&(Kn(i)||Gn(i))&&(i.value=e.value),i}return e.cloneNode(!1)},e.prototype.resolvePseudoContent=function(e,t,A,i){var n=this;if(A){var a=A.content,r=t.ownerDocument;if(r&&a&&"none"!==a&&"-moz-alt-content"!==a&&"none"!==A.display){this.counters.parse(new vi(this.context,A));var s=new bi(this.context,A),o=r.createElement("html2canvaspseudoelement");pa(A,o),s.content.forEach((function(t){if(0===t.type)o.appendChild(r.createTextNode(t.value));else if(22===t.type){var A=r.createElement("img");A.src=t.value,A.style.opacity="1",o.appendChild(A)}else if(18===t.type){if("attr"===t.name){var i=t.values.filter(Xe);i.length&&o.appendChild(r.createTextNode(e.getAttribute(i[0].value)||""))}else if("counter"===t.name){var a=t.values.filter(Je),l=a[0],c=a[1];if(l&&Xe(l)){var d=n.counters.getCounterValue(l.value),h=c&&Xe(c)?IA.parse(n.context,c.value):3;o.appendChild(r.createTextNode(ra(d,h,!1)))}}else if("counters"===t.name){var u=t.values.filter(Je),g=(l=u[0],u[1]);if(c=u[2],l&&Xe(l)){var p=n.counters.getCounterValues(l.value),m=c&&Xe(c)?IA.parse(n.context,c.value):3,w=g&&0===g.type?g.value:"",f=p.map((function(e){return ra(e,m,!1)})).join(w);o.appendChild(r.createTextNode(f))}}}else if(20===t.type)switch(t.value){case"open-quote":o.appendChild(r.createTextNode(pi(s.quotes,n.quoteDepth++,!0)));break;case"close-quote":o.appendChild(r.createTextNode(pi(s.quotes,--n.quoteDepth,!1)));break;default:o.appendChild(r.createTextNode(t.value))}})),o.className=Ba+" "+Ea;var l=i===Mi.BEFORE?" "+Ba:" "+Ea;return Qn(t)?t.className.baseValue+=l:t.className+=l,o}}},e.destroy=function(e){return!!e.parentNode&&(e.parentNode.removeChild(e),!0)},e}();!function(e){e[e.BEFORE=0]="BEFORE",e[e.AFTER=1]="AFTER"}(Mi||(Mi={}));var la,ca=function(e,t){var A=e.createElement("iframe");return A.className="html2canvas-container",A.style.visibility="hidden",A.style.position="fixed",A.style.left="-10000px",A.style.top="0px",A.style.border="0",A.width=t.width.toString(),A.height=t.height.toString(),A.scrolling="no",A.setAttribute(sa,"true"),e.body.appendChild(A),A},da=function(e){return new Promise((function(t){e.complete?t():e.src?(e.onload=t,e.onerror=t):t()}))},ha=function(e){return Promise.all([].slice.call(e.images,0).map(da))},ua=function(e){return new Promise((function(t,A){var i=e.contentWindow;if(!i)return A("No window assigned for iframe");var n=i.document;i.onload=e.onload=function(){i.onload=e.onload=null;var A=setInterval((function(){n.body.childNodes.length>0&&"complete"===n.readyState&&(clearInterval(A),t(e))}),50)}}))},ga=["all","d","content"],pa=function(e,t){for(var A=e.length-1;A>=0;A--){var i=e.item(A);-1===ga.indexOf(i)&&t.style.setProperty(i,e.getPropertyValue(i))}return t},ma=function(e){var t="";return e&&(t+=""),t},wa=function(e,t,A){e&&e.defaultView&&(t!==e.defaultView.pageXOffset||A!==e.defaultView.pageYOffset)&&e.defaultView.scrollTo(t,A)},fa=function(e){var t=e[0],A=e[1],i=e[2];t.scrollLeft=A,t.scrollTop=i},Ba="___html2canvas___pseudoelement_before",Ea="___html2canvas___pseudoelement_after",ba='{\n content: "" !important;\n display: none !important;\n}',va=function(e){Ca(e,"."+Ba+":before"+ba+"\n ."+Ea+":after"+ba)},Ca=function(e,t){var A=e.ownerDocument;if(A){var i=A.createElement("style");i.textContent=t,e.appendChild(i)}},ya=function(){function e(){}return e.getOrigin=function(t){var A=e._link;return A?(A.href=t,A.href=A.href,A.protocol+A.hostname+A.port):"about:blank"},e.isSameOrigin=function(t){return e.getOrigin(t)===e._origin},e.setContext=function(t){e._link=t.document.createElement("a"),e._origin=e.getOrigin(t.location.href)},e._origin="about:blank",e}(),Fa=function(){function e(e,t){this.context=e,this._options=t,this._cache={}}return e.prototype.addImage=function(e){var t=Promise.resolve();return this.has(e)?t:ka(e)||Ia(e)?((this._cache[e]=this.loadImage(e)).catch((function(){})),t):t},e.prototype.match=function(e){return this._cache[e]},e.prototype.loadImage=function(e){return i(this,void 0,void 0,(function(){var t,A,i,a,r=this;return n(this,(function(n){switch(n.label){case 0:return t=ya.isSameOrigin(e),A=!Ua(e)&&!0===this._options.useCORS&&ji.SUPPORT_CORS_IMAGES&&!t,i=!Ua(e)&&!t&&!ka(e)&&"string"==typeof this._options.proxy&&ji.SUPPORT_CORS_XHR&&!A,t||!1!==this._options.allowTaint||Ua(e)||ka(e)||i||A?(a=e,i?[4,this.proxy(a)]:[3,2]):[2];case 1:a=n.sent(),n.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise((function(e,t){var i=new Image;i.onload=function(){return e(i)},i.onerror=t,(Qa(a)||A)&&(i.crossOrigin="anonymous"),i.src=a,!0===i.complete&&setTimeout((function(){return e(i)}),500),r._options.imageTimeout>0&&setTimeout((function(){return t("Timed out ("+r._options.imageTimeout+"ms) loading image")}),r._options.imageTimeout)}))];case 3:return[2,n.sent()]}}))}))},e.prototype.has=function(e){return void 0!==this._cache[e]},e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},e.prototype.proxy=function(e){var t=this,A=this._options.proxy;if(!A)throw new Error("No proxy defined");var i=e.substring(0,256);return new Promise((function(n,a){var r=ji.SUPPORT_RESPONSE_TYPE?"blob":"text",s=new XMLHttpRequest;s.onload=function(){if(200===s.status)if("text"===r)n(s.response);else{var e=new FileReader;e.addEventListener("load",(function(){return n(e.result)}),!1),e.addEventListener("error",(function(e){return a(e)}),!1),e.readAsDataURL(s.response)}else a("Failed to proxy resource "+i+" with status code "+s.status)},s.onerror=a;var o=A.indexOf("?")>-1?"&":"?";if(s.open("GET",""+A+o+"url="+encodeURIComponent(e)+"&responseType="+r),"text"!==r&&s instanceof XMLHttpRequest&&(s.responseType=r),t._options.imageTimeout){var l=t._options.imageTimeout;s.timeout=l,s.ontimeout=function(){return a("Timed out ("+l+"ms) proxying "+i)}}s.send()}))},e}(),xa=/^data:image\/svg\+xml/i,Sa=/^data:image\/.*;base64,/i,Ta=/^data:image\/.*/i,Ia=function(e){return ji.SUPPORT_SVG_DRAWING||!Oa(e)},Ua=function(e){return Ta.test(e)},Qa=function(e){return Sa.test(e)},ka=function(e){return"blob"===e.substr(0,4)},Oa=function(e){return"svg"===e.substr(-3).toLowerCase()||xa.test(e)},Ma=function(){function e(e,t){this.type=0,this.x=e,this.y=t}return e.prototype.add=function(t,A){return new e(this.x+t,this.y+A)},e}(),La=function(e,t,A){return new Ma(e.x+(t.x-e.x)*A,e.y+(t.y-e.y)*A)},Da=function(){function e(e,t,A,i){this.type=1,this.start=e,this.startControl=t,this.endControl=A,this.end=i}return e.prototype.subdivide=function(t,A){var i=La(this.start,this.startControl,t),n=La(this.startControl,this.endControl,t),a=La(this.endControl,this.end,t),r=La(i,n,t),s=La(n,a,t),o=La(r,s,t);return A?new e(this.start,i,r,o):new e(o,s,a,this.end)},e.prototype.add=function(t,A){return new e(this.start.add(t,A),this.startControl.add(t,A),this.endControl.add(t,A),this.end.add(t,A))},e.prototype.reverse=function(){return new e(this.end,this.endControl,this.startControl,this.start)},e}(),Na=function(e){return 1===e.type},Ha=function(e){var t=e.styles,A=e.bounds,i=nt(t.borderTopLeftRadius,A.width,A.height),n=i[0],a=i[1],r=nt(t.borderTopRightRadius,A.width,A.height),s=r[0],o=r[1],l=nt(t.borderBottomRightRadius,A.width,A.height),c=l[0],d=l[1],h=nt(t.borderBottomLeftRadius,A.width,A.height),u=h[0],g=h[1],p=[];p.push((n+s)/A.width),p.push((u+c)/A.width),p.push((a+g)/A.height),p.push((o+d)/A.height);var m=Math.max.apply(Math,p);m>1&&(n/=m,a/=m,s/=m,o/=m,c/=m,d/=m,u/=m,g/=m);var w=A.width-s,f=A.height-d,B=A.width-c,E=A.height-g,b=t.borderTopWidth,v=t.borderRightWidth,C=t.borderBottomWidth,y=t.borderLeftWidth,F=at(t.paddingTop,e.bounds.width),x=at(t.paddingRight,e.bounds.width),S=at(t.paddingBottom,e.bounds.width),T=at(t.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=n>0||a>0?Ra(A.left+y/3,A.top+b/3,n-y/3,a-b/3,la.TOP_LEFT):new Ma(A.left+y/3,A.top+b/3),this.topRightBorderDoubleOuterBox=n>0||a>0?Ra(A.left+w,A.top+b/3,s-v/3,o-b/3,la.TOP_RIGHT):new Ma(A.left+A.width-v/3,A.top+b/3),this.bottomRightBorderDoubleOuterBox=c>0||d>0?Ra(A.left+B,A.top+f,c-v/3,d-C/3,la.BOTTOM_RIGHT):new Ma(A.left+A.width-v/3,A.top+A.height-C/3),this.bottomLeftBorderDoubleOuterBox=u>0||g>0?Ra(A.left+y/3,A.top+E,u-y/3,g-C/3,la.BOTTOM_LEFT):new Ma(A.left+y/3,A.top+A.height-C/3),this.topLeftBorderDoubleInnerBox=n>0||a>0?Ra(A.left+2*y/3,A.top+2*b/3,n-2*y/3,a-2*b/3,la.TOP_LEFT):new Ma(A.left+2*y/3,A.top+2*b/3),this.topRightBorderDoubleInnerBox=n>0||a>0?Ra(A.left+w,A.top+2*b/3,s-2*v/3,o-2*b/3,la.TOP_RIGHT):new Ma(A.left+A.width-2*v/3,A.top+2*b/3),this.bottomRightBorderDoubleInnerBox=c>0||d>0?Ra(A.left+B,A.top+f,c-2*v/3,d-2*C/3,la.BOTTOM_RIGHT):new Ma(A.left+A.width-2*v/3,A.top+A.height-2*C/3),this.bottomLeftBorderDoubleInnerBox=u>0||g>0?Ra(A.left+2*y/3,A.top+E,u-2*y/3,g-2*C/3,la.BOTTOM_LEFT):new Ma(A.left+2*y/3,A.top+A.height-2*C/3),this.topLeftBorderStroke=n>0||a>0?Ra(A.left+y/2,A.top+b/2,n-y/2,a-b/2,la.TOP_LEFT):new Ma(A.left+y/2,A.top+b/2),this.topRightBorderStroke=n>0||a>0?Ra(A.left+w,A.top+b/2,s-v/2,o-b/2,la.TOP_RIGHT):new Ma(A.left+A.width-v/2,A.top+b/2),this.bottomRightBorderStroke=c>0||d>0?Ra(A.left+B,A.top+f,c-v/2,d-C/2,la.BOTTOM_RIGHT):new Ma(A.left+A.width-v/2,A.top+A.height-C/2),this.bottomLeftBorderStroke=u>0||g>0?Ra(A.left+y/2,A.top+E,u-y/2,g-C/2,la.BOTTOM_LEFT):new Ma(A.left+y/2,A.top+A.height-C/2),this.topLeftBorderBox=n>0||a>0?Ra(A.left,A.top,n,a,la.TOP_LEFT):new Ma(A.left,A.top),this.topRightBorderBox=s>0||o>0?Ra(A.left+w,A.top,s,o,la.TOP_RIGHT):new Ma(A.left+A.width,A.top),this.bottomRightBorderBox=c>0||d>0?Ra(A.left+B,A.top+f,c,d,la.BOTTOM_RIGHT):new Ma(A.left+A.width,A.top+A.height),this.bottomLeftBorderBox=u>0||g>0?Ra(A.left,A.top+E,u,g,la.BOTTOM_LEFT):new Ma(A.left,A.top+A.height),this.topLeftPaddingBox=n>0||a>0?Ra(A.left+y,A.top+b,Math.max(0,n-y),Math.max(0,a-b),la.TOP_LEFT):new Ma(A.left+y,A.top+b),this.topRightPaddingBox=s>0||o>0?Ra(A.left+Math.min(w,A.width-v),A.top+b,w>A.width+v?0:Math.max(0,s-v),Math.max(0,o-b),la.TOP_RIGHT):new Ma(A.left+A.width-v,A.top+b),this.bottomRightPaddingBox=c>0||d>0?Ra(A.left+Math.min(B,A.width-y),A.top+Math.min(f,A.height-C),Math.max(0,c-v),Math.max(0,d-C),la.BOTTOM_RIGHT):new Ma(A.left+A.width-v,A.top+A.height-C),this.bottomLeftPaddingBox=u>0||g>0?Ra(A.left+y,A.top+Math.min(E,A.height-C),Math.max(0,u-y),Math.max(0,g-C),la.BOTTOM_LEFT):new Ma(A.left+y,A.top+A.height-C),this.topLeftContentBox=n>0||a>0?Ra(A.left+y+T,A.top+b+F,Math.max(0,n-(y+T)),Math.max(0,a-(b+F)),la.TOP_LEFT):new Ma(A.left+y+T,A.top+b+F),this.topRightContentBox=s>0||o>0?Ra(A.left+Math.min(w,A.width+y+T),A.top+b+F,w>A.width+y+T?0:s-y+T,o-(b+F),la.TOP_RIGHT):new Ma(A.left+A.width-(v+x),A.top+b+F),this.bottomRightContentBox=c>0||d>0?Ra(A.left+Math.min(B,A.width-(y+T)),A.top+Math.min(f,A.height+b+F),Math.max(0,c-(v+x)),d-(C+S),la.BOTTOM_RIGHT):new Ma(A.left+A.width-(v+x),A.top+A.height-(C+S)),this.bottomLeftContentBox=u>0||g>0?Ra(A.left+y+T,A.top+E,Math.max(0,u-(y+T)),g-(C+S),la.BOTTOM_LEFT):new Ma(A.left+y+T,A.top+A.height-(C+S))};!function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=1]="TOP_RIGHT",e[e.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",e[e.BOTTOM_LEFT=3]="BOTTOM_LEFT"}(la||(la={}));var Ra=function(e,t,A,i,n){var a=(Math.sqrt(2)-1)/3*4,r=A*a,s=i*a,o=e+A,l=t+i;switch(n){case la.TOP_LEFT:return new Da(new Ma(e,l),new Ma(e,l-s),new Ma(o-r,t),new Ma(o,t));case la.TOP_RIGHT:return new Da(new Ma(e,t),new Ma(e+r,t),new Ma(o,l-s),new Ma(o,l));case la.BOTTOM_RIGHT:return new Da(new Ma(o,t),new Ma(o,t+s),new Ma(e+r,l),new Ma(e,l));case la.BOTTOM_LEFT:default:return new Da(new Ma(o,l),new Ma(o-r,l),new Ma(e,t+s),new Ma(e,t))}},Pa=function(e){return[e.topLeftBorderBox,e.topRightBorderBox,e.bottomRightBorderBox,e.bottomLeftBorderBox]},Va=function(e){return[e.topLeftPaddingBox,e.topRightPaddingBox,e.bottomRightPaddingBox,e.bottomLeftPaddingBox]},Ka=function(e,t,A){this.offsetX=e,this.offsetY=t,this.matrix=A,this.type=0,this.target=6},Ga=function(e,t){this.path=e,this.target=t,this.type=1},Wa=function(e){this.opacity=e,this.type=2,this.target=6},Xa=function(e){return 1===e.type},za=function(e,t){return e.length===t.length&&e.some((function(e,A){return e===t[A]}))},Ya=function(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},ja=function(){function e(e,t){if(this.container=e,this.parent=t,this.effects=[],this.curves=new Ha(this.container),this.container.styles.opacity<1&&this.effects.push(new Wa(this.container.styles.opacity)),null!==this.container.styles.transform){var A=this.container.bounds.left+this.container.styles.transformOrigin[0].number,i=this.container.bounds.top+this.container.styles.transformOrigin[1].number,n=this.container.styles.transform;this.effects.push(new Ka(A,i,n))}if(0!==this.container.styles.overflowX){var a=Pa(this.curves),r=Va(this.curves);za(a,r)?this.effects.push(new Ga(a,6)):(this.effects.push(new Ga(a,2)),this.effects.push(new Ga(r,4)))}}return e.prototype.getEffects=function(e){for(var t=-1===[2,3].indexOf(this.container.styles.position),A=this.parent,i=this.effects.slice(0);A;){var n=A.effects.filter((function(e){return!Xa(e)}));if(t||0!==A.container.styles.position||!A.parent){if(i.unshift.apply(i,n),t=-1===[2,3].indexOf(A.container.styles.position),0!==A.container.styles.overflowX){var a=Pa(A.curves),r=Va(A.curves);za(a,r)||i.unshift(new Ga(r,6))}}else i.unshift.apply(i,n);A=A.parent}return i.filter((function(t){return li(t.target,e)}))},e}(),Ja=function(e,t,A,i){e.container.elements.forEach((function(n){var a=li(n.flags,4),r=li(n.flags,2),s=new ja(n,e);li(n.styles.display,2048)&&i.push(s);var o=li(n.flags,8)?[]:i;if(a||r){var l=a||n.styles.isPositioned()?A:t,c=new Ya(s);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var d=n.styles.zIndex.order;if(d<0){var h=0;l.negativeZIndex.some((function(e,t){return d>e.element.container.styles.zIndex.order?(h=t,!1):h>0})),l.negativeZIndex.splice(h,0,c)}else if(d>0){var u=0;l.positiveZIndex.some((function(e,t){return d>=e.element.container.styles.zIndex.order?(u=t+1,!1):u>0})),l.positiveZIndex.splice(u,0,c)}else l.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?l.nonPositionedFloats.push(c):l.nonPositionedInlineLevel.push(c);Ja(s,c,a?c:A,o)}else n.styles.isInlineLevel()?t.inlineLevel.push(s):t.nonInlineLevel.push(s),Ja(s,t,A,o);li(n.flags,8)&&Za(n,o)}))},Za=function(e,t){for(var A=e instanceof dn?e.start:1,i=e instanceof dn&&e.reversed,n=0;n0&&e.intrinsicHeight>0){var i=tr(e),n=Va(t);this.path(n),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(A,0,0,e.intrinsicWidth,e.intrinsicHeight,i.left,i.top,i.width,i.height),this.ctx.restore()}},A.prototype.renderNodeContent=function(e){return i(this,void 0,void 0,(function(){var t,i,a,s,o,l,c,d,h,u,g,p,m,w,f,B,E,b;return n(this,(function(n){switch(n.label){case 0:this.applyEffects(e.getEffects(4)),t=e.container,i=e.curves,a=t.styles,s=0,o=t.textNodes,n.label=1;case 1:return s0&&y>0&&(f=i.ctx.createPattern(p,"repeat"),i.renderRepeat(E,f,x,S))):function(e){return 2===e.type}(A)&&(B=Ar(e,t,[null,null,null]),E=B[0],b=B[1],v=B[2],C=B[3],y=B[4],F=0===A.position.length?[At]:A.position,x=at(F[0],C),S=at(F[F.length-1],y),T=function(e,t,A,i,n){var a=0,r=0;switch(e.size){case 0:0===e.shape?a=r=Math.min(Math.abs(t),Math.abs(t-i),Math.abs(A),Math.abs(A-n)):1===e.shape&&(a=Math.min(Math.abs(t),Math.abs(t-i)),r=Math.min(Math.abs(A),Math.abs(A-n)));break;case 2:if(0===e.shape)a=r=Math.min(Tt(t,A),Tt(t,A-n),Tt(t-i,A),Tt(t-i,A-n));else if(1===e.shape){var s=Math.min(Math.abs(A),Math.abs(A-n))/Math.min(Math.abs(t),Math.abs(t-i)),o=It(i,n,t,A,!0),l=o[0],c=o[1];r=s*(a=Tt(l-t,(c-A)/s))}break;case 1:0===e.shape?a=r=Math.max(Math.abs(t),Math.abs(t-i),Math.abs(A),Math.abs(A-n)):1===e.shape&&(a=Math.max(Math.abs(t),Math.abs(t-i)),r=Math.max(Math.abs(A),Math.abs(A-n)));break;case 3:if(0===e.shape)a=r=Math.max(Tt(t,A),Tt(t,A-n),Tt(t-i,A),Tt(t-i,A-n));else if(1===e.shape){s=Math.max(Math.abs(A),Math.abs(A-n))/Math.max(Math.abs(t),Math.abs(t-i));var d=It(i,n,t,A,!1);l=d[0],c=d[1],r=s*(a=Tt(l-t,(c-A)/s))}}return Array.isArray(e.size)&&(a=at(e.size[0],i),r=2===e.size.length?at(e.size[1],n):a),[a,r]}(A,x,S,C,y),I=T[0],U=T[1],I>0&&U>0&&(Q=i.ctx.createRadialGradient(b+x,v+S,0,b+x,v+S,I),xt(A.stops,2*I).forEach((function(e){return Q.addColorStop(e.stop,gt(e.color))})),i.path(E),i.ctx.fillStyle=Q,I!==U?(k=e.bounds.left+.5*e.bounds.width,O=e.bounds.top+.5*e.bounds.height,L=1/(M=U/I),i.ctx.save(),i.ctx.translate(k,O),i.ctx.transform(1,0,0,M,0,0),i.ctx.translate(-k,-O),i.ctx.fillRect(b,L*(v-O)+O,C,y*L),i.ctx.restore()):i.ctx.fill())),n.label=6;case 6:return t--,[2]}}))},i=this,a=0,r=e.styles.backgroundImage.slice(0).reverse(),o.label=1;case 1:return a0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,r,e.curves,2)]:[3,11]:[3,13];case 4:return n.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,r,e.curves,3)];case 6:return n.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,r,e.curves)];case 8:return n.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,r,e.curves)];case 10:n.sent(),n.label=11;case 11:r++,n.label=12;case 12:return s++,[3,3];case 13:return[2]}}))}))},A.prototype.renderDashedDottedBorder=function(e,t,A,a,r){return i(this,void 0,void 0,(function(){var i,s,o,l,c,d,h,u,g,p,m,w,f,B,E,b;return n(this,(function(n){return this.ctx.save(),i=function(e,t){switch(t){case 0:return _a(e.topLeftBorderStroke,e.topRightBorderStroke);case 1:return _a(e.topRightBorderStroke,e.bottomRightBorderStroke);case 2:return _a(e.bottomRightBorderStroke,e.bottomLeftBorderStroke);default:return _a(e.bottomLeftBorderStroke,e.topLeftBorderStroke)}}(a,A),s=qa(a,A),2===r&&(this.path(s),this.ctx.clip()),Na(s[0])?(o=s[0].start.x,l=s[0].start.y):(o=s[0].x,l=s[0].y),Na(s[1])?(c=s[1].end.x,d=s[1].end.y):(c=s[1].x,d=s[1].y),h=0===A||2===A?Math.abs(o-c):Math.abs(l-d),this.ctx.beginPath(),3===r?this.formatPath(i):this.formatPath(s.slice(0,2)),u=t<3?3*t:2*t,g=t<3?2*t:t,3===r&&(u=t,g=t),p=!0,h<=2*u?p=!1:h<=2*u+g?(u*=m=h/(2*u+g),g*=m):(w=Math.floor((h+g)/(u+g)),f=(h-w*u)/(w-1),g=(B=(h-(w+1)*u)/w)<=0||Math.abs(g-f){const a=await tex2dataURL(e,n);if(a){const e=[];e.push({mimeType:a.mimeType,id:t,dataURL:a.dataURL,created:a.created,size:a.size,hasSVGwithBitmap:!1,shouldScale:!0}),i(e,A)}};async function tex2dataURL(e,t){let A=0;for(;!t.mathjax&&!t.mathjaxLoaderFinished&&A<10;)await sleep$1(100),A++;t.mathjaxLoaderFinished||errorlog({where:"text2dataURL",fn:tex2dataURL,message:"mathjaxLoader not ready, using fallback. Try reloading Obsidian or restarting the Excalidraw plugin"});try{return await mathjaxSVG(e,t)}catch(A){await sleep$1(100);try{return await mathjaxSVG(e,t)}catch(A){await sleep$1(100);try{return await mathjaxSVG(e,t)}catch(A){return t.mathjax?new obsidian_module.Notice("Unknown error loading LaTeX. Using fallback solution. Try closing and reopening this drawing."):new obsidian_module.Notice("LaTeX support did not load. Using fallback solution. Try checking your network connection."),await mathjaxImage2html(e)}}}}async function mathjaxSVG(e,t){const A=t.mathjax.tex2svg(e,{display:!0,scale:4}).querySelector("svg");if(A){A.width.baseVal.valueInSpecifiedUnits<2&&(A.width.baseVal.valueAsString=`${(A.width.baseVal.valueInSpecifiedUnits+1).toFixed(3)}ex`);const e=svgToBase64(A.outerHTML);return{mimeType:"image/svg+xml",fileId:fileid(),dataURL:e,created:Date.now(),size:await getImageSize(e)}}return null}async function mathjaxImage2html(e){const t=document.body.createDiv();t.style.display="table";const A=window.MathJax.tex2chtml(e,{display:!0,scale:4});A.style.margin="3px",A.style.color="black";const i=A.querySelector("mjx-assistive-mml");i&&i.parentElement.removeChild(i),t.appendChild(A),window.MathJax.typeset();const n=await html2canvas(t,{backgroundColor:null});return document.body.removeChild(t),{mimeType:"image/png",fileId:fileid(),dataURL:n.toDataURL(),created:Date.now(),size:{height:n.height,width:n.width}}}const THEME_FILTER="invert(100%) hue-rotate(180deg) saturate(1.25)",markdownRendererRecursionWatcthdog=new Set,replaceSVGColors=(e,t)=>{if(!t)return e;if("string"==typeof e){for(const[A,i]of Object.entries(t)){const t=new RegExp(`fill="${A}"`,"g");e=e.replaceAll(t,`fill="${i}"`);const n=new RegExp(`stroke="${A}"`,"g");e=e.replaceAll(n,`stroke="${i}"`)}return e}const A=e=>{if(e instanceof SVGElement){const A=e.getAttribute("fill"),i=e.getAttribute("stroke");A&&t[A]&&e.setAttribute("fill",t[A]),i&&t[i]&&e.setAttribute("stroke",t[i])}for(const t of e.childNodes)A(t)};for(const t of e.childNodes)A(t);return e};class EmbeddedFile{constructor(e,t,A,i){if(this.file=null,this.isSVGwithBitmap=!1,this.img="",this.imgInverted="",this.mtime=0,this.mimeType="application/octet-stream",this.size={height:0,width:0},this.attemptCounter=0,this.isHyperlink=!1,this.colorMap=null,this.plugin=e,this.resetImage(t,A),this.file&&(this.plugin.ea.isExcalidrawFile(this.file)||"svg"===this.file.extension.toLowerCase()))try{this.colorMap=i?JSON.parse(i):null}catch(e){this.colorMap=null}}resetImage(e,t){if(this.imgInverted=this.img="",this.mtime=0,t.startsWith("https://")||t.startsWith("http://"))return this.isHyperlink=!0,void(this.hyperlink=t);this.linkParts=getLinkParts(t),this.hostPath=e,this.linkParts.path?(this.linkParts.width||(this.linkParts.width=this.plugin.settings.mdSVGwidth),this.linkParts.height||(this.linkParts.height=this.plugin.settings.mdSVGmaxHeight),this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,e),this.file||0==this.attemptCounter++&&new obsidian_module.Notice(`Excalidraw Warning: could not find image file: ${t}`,5e3)):new obsidian_module.Notice(`Excalidraw Error\nIncorrect embedded filename: ${t}`)}fileChanged(){return!this.isHyperlink&&(this.file||(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),this.file)?this.mtime!=this.file.stat.mtime:(this.attemptCounter++,!1))}setImage(e,t,A,i,n){if(this.file||this.isHyperlink){switch(this.fileChanged()&&(this.imgInverted=this.img=""),this.mtime=this.isHyperlink?0:this.file.stat.mtime,this.size=A,this.mimeType=t,i&&n){case!0:this.imgInverted=e;break;case!1:this.img=e}this.isSVGwithBitmap=n}}isLoaded(e){if(!this.isHyperlink){if(!this.file&&(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),!this.file))return this.attemptCounter++,!0;if(this.fileChanged())return!1}return this.isSVGwithBitmap&&e?""!==this.imgInverted:""!==this.img}getImage(e){return this.file||this.isHyperlink?e&&this.isSVGwithBitmap?this.imgInverted:this.img:""}shouldScale(){return this.isHyperlink||!Boolean(this.linkParts&&this.linkParts.original&&this.linkParts.original.endsWith("|100%"))}}class EmbeddedFilesLoader{constructor(e,t){this.pdfDocsMap=new Map,this.terminate=!1,this.plugin=e,this.isDark=t,this.uid=nanoid()}emptyPDFDocsMap(){this.pdfDocsMap.forEach((e=>e.destroy())),this.pdfDocsMap.clear()}async getObsidianImage(e,t){const A=await this._getObsidianImage(e,t);return this.emptyPDFDocsMap(),A}async _getObsidianImage(e,t){var A;if(!this.plugin||!e)return null;const i=e instanceof EmbeddedFile&&e.isHyperlink,n=e instanceof EmbeddedFile?e.hyperlink:"",a=e instanceof EmbeddedFile?e.file:e;if(a&&markdownRendererRecursionWatcthdog.has(a))return new obsidian_module.Notice(`Loading of ${a.path}. Please check if there is an inifinite loop of one file embedded in the other.`),null;const r=i?null:e instanceof EmbeddedFile?e.linkParts:{original:a.path,path:a.path,isBlockRef:!1,ref:null,width:this.plugin.settings.mdSVGwidth,height:this.plugin.settings.mdSVGmaxHeight,page:null};let s=!1;const o=!i&&this.plugin.isExcalidrawFile(a),l=!i&&"pdf"===a.extension.toLowerCase();if(!(i||l||IMAGE_TYPES.contains(a.extension)||o||"md"===a.extension))return null;const c=i||l?null:await app.vault.readBinary(a),d=o?await(async A=>{const i=hasExportTheme(this.plugin,a)?getExportTheme(this.plugin,a,"light"):void 0,n={withBackground:!!hasExportBackground(this.plugin,a)&&getWithBackground(this.plugin,a),withTheme:!!i},r=replaceSVGColors(await createSVG(a.path,!0,n,this,i,null,null,[],this.plugin,t+1,getExportPadding(this.plugin,a)),e instanceof EmbeddedFile?e.colorMap:null),o=r.querySelectorAll("image:not([href^='data:image/svg'])");return o.length>0&&(s=!0),s&&A&&o.forEach((e=>{var t;const A=null===(t=e.parentElement)||void 0===t?void 0:t.id;r.querySelectorAll(`use[href='#${A}']`).forEach((e=>{e.setAttribute("filter",THEME_FILTER)}))})),!s&&r.getAttribute("hasbitmap")&&(s=!0),svgToBase64(r.outerHTML)})(this.isDark):null,[h,u]=l?await this.pdfToDataURL(a,r):[null,null];let g=l?"image/png":"image/svg+xml";const p=i?getURLImageExtension(n):a.extension;o||l||(g=getMimeType(p));let m=i?e instanceof EmbeddedFile?await getDataURLFromURL(e.hyperlink,g):null:null!==(A=null!=d?d:h)&&void 0!==A?A:"svg"===a.extension?await getSVGData(app,a,e instanceof EmbeddedFile?e.colorMap:null):"md"===a.extension?null:await getDataURL(c,g);if(!i&&!m){markdownRendererRecursionWatcthdog.add(a);const e=await this.convertMarkdownToSVG(this.plugin,a,r,t);markdownRendererRecursionWatcthdog.delete(a),m=e.dataURL,s=e.hasSVGwithBitmap}try{const e=l?u:await getImageSize(m);return{mimeType:g,fileId:await generateIdFromFile(i||l?(new TextEncoder).encode(m):c),dataURL:m,created:i?0:a.stat.mtime,hasSVGwithBitmap:s,size:e}}catch(e){return null}}async loadSceneFiles(e,t,A){var i,n;if(A>4)return void new obsidian_module.Notice(t$d("INFINITE_LOOP_WARNING")+A.toString(),6e3);const a=e.getFileEntries();let r;void 0===this.isDark&&(this.isDark="dark"===(null===(n=null===(i=null==e?void 0:e.scene)||void 0===i?void 0:i.appState)||void 0===n?void 0:n.theme));const s=[];for(;!this.terminate&&!(r=a.next()).done;){const e=r.value[1];if(e.isLoaded(this.isDark)){if(e.isSVGwithBitmap){const A={mimeType:e.mimeType,id:r.value[0],dataURL:e.getImage(this.isDark),created:e.mtime,size:e.size,hasSVGwithBitmap:e.isSVGwithBitmap,shouldScale:e.shouldScale()};try{t([A],this.isDark,!1)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}}else{const i=await this._getObsidianImage(e,A);if(i){const A={mimeType:i.mimeType,id:r.value[0],dataURL:i.dataURL,created:i.created,size:i.size,hasSVGwithBitmap:i.hasSVGwithBitmap,shouldScale:e.shouldScale()};try{t([A],this.isDark,!1)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}}}let o;const l=e.getEquationEntries();for(;!this.terminate&&!(o=l.next()).done;)if(!e.getEquation(o.value[0]).isLoaded){const e=o.value[1].latex,t=await tex2dataURL(e,this.plugin);if(t){const e={mimeType:t.mimeType,id:o.value[0],dataURL:t.dataURL,created:t.created,size:t.size,hasSVGwithBitmap:!1,shouldScale:!0};s.push(e)}}if(this.emptyPDFDocsMap(),!this.terminate)try{t(s,this.isDark,!0)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}async pdfToDataURL(e,t){var A,i;try{let n=0,a=0;const r=null!==(A=this.pdfDocsMap.get(e.path))&&void 0!==A?A:await getPDFDoc(e);this.pdfDocsMap.has(e.path)||this.pdfDocsMap.set(e.path,r);const s=isNaN(t.page)?1:null!==(i=t.page)&&void 0!==i?i:1,o=this.plugin.settings.pdfScale,l=async e=>{const t=createEl("canvas"),A=t.getContext("2d"),i=await r.getPage(e),s=i.getViewport({scale:o});a=t.height=s.height,n=t.width=s.width;const l={canvasContext:A,background:"rgba(0,0,0,0)",viewport:s};return await i.render(l).promise,t},c=await l(s);if(c){const e=[`data:image/png;base64,${await new Promise(((e,t)=>{c.toBlob((async t=>{const A=await blobToBase64(t);e(A)}))}))}`,{width:n,height:a}];return c.width=0,c.height=0,e}}catch(e){return console.log(e),[null,null]}}async convertMarkdownToSVG(e,t,A,i){var n,a,r,s;let o=!1;const l=await getTransclusion(A,e.app,t);let c=(null!==(n=l.leadingHashes)&&void 0!==n?n:"")+l.contents;""===c&&(c="# Empty markdown file\nCTRL+Click here to open the file for editing in the current active pane, or CTRL+SHIFT+Click to open it in an adjacent pane.");const d=e.app.metadataCache.getFileCache(t);let h,u=e.settings.mdFont;switch((null==d?void 0:d.frontmatter)&&Boolean(d.frontmatter["excalidraw-font"])&&(u=d.frontmatter["excalidraw-font"]),u){case"Virgil":h=VIRGIL_FONT;break;case"Cascadia":h=CASCADIA_FONT;break;case"":h="";break;default:const A=await getFontDataURL(e.app,u,t.path);h=A.fontDef,u=A.fontName}(null==d?void 0:d.frontmatter)&&null!==d.frontmatter.banner&&(c=c.replace(/banner:\s*.*/,""));const g=(null==d?void 0:d.frontmatter)&&null!==(a=d.frontmatter["excalidraw-font-color"])&&void 0!==a?a:e.settings.mdFontColor;let p=(null==d?void 0:d.frontmatter)&&null!==(r=d.frontmatter["excalidraw-css"])&&void 0!==r?r:"",m=!1;if(p&&""!=p){const A=e.app.metadataCache.getFirstLinkpathDest(p,t.path);A&&(p=await e.app.vault.read(A),m=!0)}if(!m)if(e.settings.mdCSS&&""!==e.settings.mdCSS){const A=e.app.metadataCache.getFirstLinkpathDest(e.settings.mdCSS,t.path);p+=A?`\n${await e.app.vault.read(A)}`:DEFAULT_MD_EMBED_CSS}else p+=DEFAULT_MD_EMBED_CSS;const w=(null==d?void 0:d.frontmatter)&&null!==(s=d.frontmatter["excalidraw-border-color"])&&void 0!==s?s:e.settings.mdBorderColor;w&&""!==w&&!p.match(/svg/i)&&(p+=`svg{border:2px solid;color:${w};transform:scale(.95)}`);let f=` width="${A.width}px" height="100000"`,B=` width="${A.width}px" height="100%"`;const E=(e,t,A)=>`${A?``:""}${e}${t}${""!==h?``:""}`,b=createDiv();b.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),b.setAttribute("class","excalidraw-md-host"),""!==u&&(b.style.fontFamily=u),b.style.overflow="auto",b.style.display="block",b.style.color=g&&""!==g?g:"initial",await obsidian_module.MarkdownRenderer.renderMarkdown(c,b,t.path,e),b.querySelectorAll(":scope > *[class^='frontmatter']").forEach((e=>b.removeChild(e)));const v=Array.from(b.querySelectorAll("span[class='internal-embed']"));for(let A=0;A{const t=e.style,A=window.getComputedStyle(e);let i="";for(const e in t)t.hasOwnProperty(e)&&(i+=`${e}: ${A[e]};`);e.setAttribute("style",i)}));const S=(new XMLSerializer).serializeToString(F),T=(new XMLSerializer).serializeToString(x);document.body.removeChild(C);const I=new DOMParser,U=I.parseFromString(E(S,T),"image/svg+xml").firstElementChild,Q=createDiv();Q.appendChild(U),document.body.appendChild(Q);const k=U.querySelector(".excalidraw-md-footer").scrollHeight,O=U.querySelector(".excalidraw-md-host").scrollHeight+k,M=O<=A.height?O:A.height;document.body.removeChild(Q),f=` width="${A.width}px" height="${M}px"`,B=` width="${A.width}px" height="${M}px"`,b.style.height=M-k+"px",b.style.overflow="hidden";const L=b.querySelectorAll("img:not([src^='data:image/svg+xml'])");L.length>0&&(o=!0),o&&this.isDark&&L.forEach((e=>{e instanceof HTMLImageElement&&(e.style.filter=THEME_FILTER)}));const D=E((new XMLSerializer).serializeToString(b),'',p);return e.ea.mostRecentMarkdownSVG=I.parseFromString(D,"image/svg+xml").firstElementChild,{dataURL:svgToBase64(D),hasSVGwithBitmap:o}}}const getSVGData=async(e,t,A)=>{const i=replaceSVGColors(await e.vault.read(t),A);return svgToBase64(i)},generateIdFromFile=async e=>{let t;try{const A=await window.crypto.subtle.digest("SHA-1",e);t=Array.from(new Uint8Array(A)).map((e=>e.toString(16).padStart(2,"0"))).join("")}catch(e){errorlog({where:"EmbeddedFileLoader.generateIdFromFile",error:e}),t=fileid()}return t},{wrapText:wrapText,getFontString:getFontString,getBoundTextMaxWidth:getBoundTextMaxWidth,getDefaultLineHeight:getDefaultLineHeight$1}=excalidrawLib;var AutoexportPreference;!function(e){e[e.none=0]="none",e[e.both=1]="both",e[e.png=2]="png",e[e.svg=3]="svg",e[e.inherit=4]="inherit"}(AutoexportPreference||(AutoexportPreference={}));const REGEX_LINK={ //![[link|alias]] [alias](link){num} -EXPR:/(!)?(\[\[([^|\]]+)\|?([^\]]+)?]]|\[([^\]]*)]\(([^)]*)\))(\{(\d+)\})?/g,getRes:e=>e.matchAll(REGEX_LINK.EXPR),isTransclusion:e=>!!e.value[1],getLink:e=>e.value[3]?e.value[3]:e.value[6],isWikiLink:e=>!!e.value[3],getAliasOrLink:e=>REGEX_LINK.isWikiLink(e)?e.value[4]?e.value[4]:e.value[3]:e.value[5]?e.value[5]:e.value[6],getWrapLength:(e,A)=>{const t=parseInt(e.value[8]);return isNaN(t)?A>0?A:null:t}},DRAWING_REG=/\n# Drawing\n[^`]*(```json\n)([\s\S]*?)```\n/gm,DRAWING_REG_FALLBACK=/\n# Drawing\n(```json\n)?(.*)(```)?(%%)?/gm,DRAWING_COMPRESSED_REG=/(\n# Drawing\n[^`]*(?:```compressed\-json\n))([\s\S]*?)(```\n)/gm,DRAWING_COMPRESSED_REG_FALLBACK=/(\n# Drawing\n(?:```compressed\-json\n)?)(.*)((```)?(%%)?)/gm,REG_LINKINDEX_HYPERLINK=/^\w+:\/\//,isCompressedMD=e=>null!==e.match(/```compressed\-json\n/gm),getDecompressedScene=e=>{let A,t=e.matchAll(DRAWING_COMPRESSED_REG);return A=t.next(),A.done&&(t=e.matchAll(DRAWING_COMPRESSED_REG_FALLBACK),A=t.next()),A.value&&A.value.length>1?[decompress(A.value[2]),A]:[null,A]},changeThemeOfExcalidrawMD=e=>{const A=isCompressedMD(e);let t=A?getDecompressedScene(e)[0]:e;return t?(isObsidianThemeDark?1===(t.match(/"theme"\s*:\s*"light"\s*,/g)||[]).length&&(t=t.replace(/"theme"\s*:\s*"light"\s*,/,'"theme": "dark",')):1===(t.match(/"theme"\s*:\s*"dark"\s*,/g)||[]).length&&(t=t.replace(/"theme"\s*:\s*"dark"\s*,/,'"theme": "light",')),A?e.replace(DRAWING_COMPRESSED_REG,`$1${compress(t)}$3`):t):e};function getJSON(e){let A,t;if(isCompressedMD(e)){const[A,t]=getDecompressedScene(e);return A?{scene:A.substring(0,A.lastIndexOf("}")+1),pos:t.value.index}:{scene:e,pos:t.value?t.value.index:0}}if(A=e.matchAll(DRAWING_REG),t=A.next(),t.done&&(A=e.matchAll(DRAWING_REG_FALLBACK),t=A.next()),t.value&&t.value.length>1){const e=t.value[2];return{scene:e.substr(0,e.lastIndexOf("}")+1),pos:t.value.index}}return{scene:e,pos:t.value?t.value.index:0}}function getMarkdownDrawingSection(e,A){return A?`%%\n# Drawing\n\`\`\`compressed-json\n${compress(e)}\n\`\`\`\n%%`:`%%\n# Drawing\n\`\`\`json\n${e}\n\`\`\`\n%%`}const estimateMaxLineLen=(e,A)=>{if(!A||!e)return null;if(e===A)return null;let t=0;const n=e.split("\n");if(1===n.length)return null;for(const e of n){const A=e.trim();A.length>t&&(t=A.length)}return t},wrap=(e,A)=>A?wrapTextAtCharLength(e,A,!1,0):e;class ExcalidrawData{constructor(e){this.plugin=e,this.textElements=null,this.elementLinks=null,this.scene=null,this.deletedElements=[],this.file=null,this.autoexportPreference=AutoexportPreference.inherit,this.textMode=TextMode.raw,this.loaded=!1,this.files=null,this.equations=null,this.compatibilityMode=!1,this.selectedElementIds={},this.disableCompression=!1,this.app=e.app,this.files=new Map,this.equations=new Map}initializeNonInitializedFields(){var e,A;if(!this.scene||!this.scene.elements)return;const t=this.scene.elements;for(const n of t){if(n.boundElements){const e=new Map;n.boundElements.forEach((A=>{e.set(A.id,A.type)}));const A=Array.from(e,(([e,A])=>({id:e,type:A})));A.length!==n.boundElements.length&&(n.boundElements=A)}n.boundElementIds&&(n.boundElements||(n.boundElements=[]),n.boundElements=n.boundElements.concat(n.boundElementIds.map((e=>({type:"arrow",id:e})))),delete n.boundElementIds),"text"!==n.type||n.containerId||(n.containerId=null),null===n.x&&(n.x=0),null===n.y&&(n.y=0),null===(null===(e=n.startBinding)||void 0===e?void 0:e.focus)&&(n.startBinding.focus=0),null===(null===(A=n.endBinding)||void 0===A?void 0:A.focus)&&(n.endBinding.focus=0),null===n.fontSize&&(n.fontSize=20)}try{t.filter((e=>"text"===e.type&&e.containerId&&t.some((A=>A.id===e.containerId&&A.boundElements.length>0&&A.boundElements.some((A=>"text"===A.type&&A.id!==e.id&&A.id.length>8)))))).forEach((e=>{try{const A=t.filter((A=>A.id===e.containerId))[0],n=A.boundElements.filter((e=>!("text"===e.type&&!t.some((A=>A.id===e.id)))));A.boundElements=[{id:e.id,type:"text"}].concat(n)}catch(e){}})),t.filter((e=>e.boundElements&&e.boundElements.length>0)).forEach((e=>{const A=e.boundElements.filter((e=>t.some((A=>A.id===e.id))));A.length!==e.boundElements.length&&(e.boundElements=A)})),t.filter((e=>"text"===e.type&&e.containerId&&!t.some((A=>A.id===e.containerId)))).forEach((e=>{e.containerId=null}))}catch(e){}}async loadData(e,A,t){if(!A)return!1;if(this.loaded=!1,this.selectedElementIds={},this.textElements=new Map,this.elementLinks=new Map,this.file!=A&&(this.files.clear(),this.equations.clear()),this.file=A,this.compatibilityMode=!1,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.setAutoexportPreferences(),this.scene=null,this.plugin.settings.syncExcalidraw){const e=`${A.path.substring(0,A.path.lastIndexOf(".md"))}.excalidraw`,t=this.app.vault.getAbstractFileByPath(e);if(t&&t instanceof obsidian_module.TFile&&t.stat.mtime>A.stat.mtime){const e=await this.app.vault.read(t);this.scene=JSON.parse(e)}}let n=null;n=(()=>{const A=getJSON(e);if(-1===A.pos)throw new Error("Excalidraw JSON not found in the file");return this.scene||(this.scene=JSON_parse(A.scene)),A})(),this.deletedElements=this.scene.elements.filter((e=>e.isDeleted)),this.scene.elements=this.scene.elements.filter((e=>!e.isDeleted)),this.scene.files||(this.scene.files={}),hasExportTheme(this.plugin,this.file)?this.scene.appState.theme=getExportTheme(this.plugin,this.file,"light"):this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.initializeNonInitializedFields();let i=(e=e.substring(0,n.pos)).search(/(^%%\n)?# Text Elements\n/m);if(-1===i)return await this.setTextMode(t,!1),this.loaded=!0,!0;i+=e.match(/((^%%\n)?# Text Elements\n)/m)[0].length,e=e.substring(i),i=0;const a=" ^12345678\n\n".length;let r,s=e.matchAll(/\s\^(.{8})[\n]+/g);for(;!(r=s.next()).done;){let A=e.substring(i,r.value.index);const t=r.value[1],n=this.scene.elements.filter((e=>e.id===t))[0];if(n)if("text"!==n.type)n.link!==A&&(n.link=A,n.version++,n.versionNonce++),this.elementLinks.set(t,A);else{const e=estimateMaxLineLen(n.text,n.originalText),i=A.matchAll(/^%%\*\*\*>>>text element-link:(\[\[[^<*\]]*]])<<<\*\*\*%%/gm).next();i.done||(A=A.replace(/^%%\*\*\*>>>text element-link:\[\[[^<*\]]*]]<<<\*\*\*%%/gm,""),n.link=i.value[1]);const a=await this.parse(A);n.rawText=A,this.textElements.set(t,{raw:A,parsed:a.parsed,wrapAt:e}),a.link&&(n.link=a.link),!n||n.rawText&&""!==n.rawText||(n.rawText=A)}i=r.value.index+a}for(s=(e=e.substring(e.indexOf("# Embedded files\n")+"# Embedded files\n".length)).matchAll(/([\w\d]*):\s*\[\[([^\]]*)]]\n/gm);!(r=s.next()).done;){const e=new EmbeddedFile(this.plugin,this.file.path,r.value[2]);this.setFile(r.value[1],e)}for(s=e.matchAll(/([\w\d]*):\s*(https?:\/\/[^\s]*)\n/gm);!(r=s.next()).done;){const e=new EmbeddedFile(this.plugin,null,r.value[2]);this.setFile(r.value[1],e)}for(s=e.matchAll(/([\w\d]*):\s*\$\$(.*)(\$\$\s*\n)/gm);!(r=s.next()).done;)this.setEquation(r.value[1],{latex:r.value[2],isLoaded:!1});return this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(t,!0),this.loaded=!0,!0}async loadLegacyData(e,A){return!!A&&(this.loaded=!1,this.selectedElementIds={},this.compatibilityMode=!0,this.file=A,this.textElements=new Map,this.elementLinks=new Map,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.scene=JSON.parse(e),this.scene.files||(this.scene.files={}),this.initializeNonInitializedFields(),this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.files.clear(),this.equations.clear(),this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(TextMode.raw,!0),this.loaded=!0,!0)}async setTextMode(e,A=!1){this.scene&&(this.textMode=e,await this.updateSceneTextElements(A))}updateTextElement(e,A,t,n=!1,i){if(n||A!=e.text){const n=_measureText(A,e.fontSize,e.fontFamily);e.text=A,e.originalText=t,e.containerId&&"arrow"!==i||(e.width=n.w),e.height=n.h,e.baseline=n.baseline}}async updateSceneTextElements(e=!1){var A,t,n,i;const a=null===(A=this.scene.elements)||void 0===A?void 0:A.filter((e=>"text"===e.type));for(const A of a){const a=getContainerElement(A,this.scene),r=null!==(n=null!==(t=await this.getText(A.id))&&void 0!==t?t:A.originalText)&&void 0!==n?n:A.text,s=null===(i=this.textElements.get(A.id))||void 0===i?void 0:i.wrapAt;this.updateTextElement(A,s?wrapText(r,getFontString({fontSize:A.fontSize,fontFamily:A.fontFamily}),getMaxContainerWidth(a)):r,r,e,null==a?void 0:a.type)}}async getText(e){const A=this.textElements.get(e);return A?this.textMode===TextMode.parsed?(A.parsed||this.textElements.set(e,{raw:A.raw,parsed:(await this.parse(A.raw)).parsed,wrapAt:A.wrapAt}),A.parsed):A.raw:null}findNewElementLinksInScene(){var e;let A=!1;const t=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.link&&e.link.startsWith("[[")&&!this.elementLinks.has(e.id)));if(0===t.length)return A;let n,i=JSON.stringify(this.scene);for(const e of t)n=e.id,e.id.length>8&&(A=!0,n=nanoid(),i=i.replaceAll(e.id,n)),this.elementLinks.set(n,e.link);return this.scene=JSON.parse(i),A}findNewTextElementsInScene(e={}){var A;this.selectedElementIds=e;const t=null===(A=this.scene.elements)||void 0===A?void 0:A.filter((e=>"text"===e.type));let n,i=JSON.stringify(this.scene),a=!1;for(const e of t)if(n=e.id,e.id.length>8){if(a=!0,n=nanoid(),this.selectedElementIds[e.id]&&(delete this.selectedElementIds[e.id],this.selectedElementIds[n]=!0),i=i.replaceAll(e.id,n),this.textElements.has(e.id)){const A=this.textElements.get(e.id);this.textElements.set(n,{raw:A.raw,parsed:A.parsed,wrapAt:A.wrapAt}),this.textElements.delete(e.id)}if(!this.textElements.has(n)){const A=e.rawText&&""!==e.rawText?e.rawText:e.text,t=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(n,{raw:A,parsed:null,wrapAt:t}),this.parseasync(n,A,t)}}else if(!this.textElements.has(e.id)){const A=e.rawText&&""!==e.rawText?e.rawText:e.text,t=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(n,{raw:A,parsed:null,wrapAt:t}),this.parseasync(n,A,t)}return a&&(this.scene=JSON.parse(i)),a}updateElementLinksFromScene(){var e;for(const A of this.elementLinks.keys()){const t=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.id===A&&e.link&&e.link.startsWith("[[")));0===t.length?this.elementLinks.delete(A):this.elementLinks.set(A,t[0].link)}}async updateTextElementsFromScene(){var e,A,t;for(const n of this.textElements.keys()){const i=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"===e.type&&e.id===n));if(0===i.length)this.textElements.delete(n);else{const e=await this.getText(n),a=this.scene.prevTextMode===TextMode.parsed?i[0].rawText:null!==(A=i[0].originalText)&&void 0!==A?A:i[0].text;if(e!==(null!==(t=i[0].originalText)&&void 0!==t?t:i[0].text)){const e=estimateMaxLineLen(i[0].text,i[0].originalText);this.textElements.set(n,{raw:a,parsed:(await this.parse(a)).parsed,wrapAt:e})}}}}async parseasync(e,A,t){this.textElements.set(e,{raw:A,parsed:(await this.parse(A)).parsed,wrapAt:t})}parseLinks(e,A,t){return e.substring(A,t.value.index)+(this.showLinkBrackets?"[[":"")+REGEX_LINK.getAliasOrLink(t)+(this.showLinkBrackets?"]]":"")}async getTransclusion(e){const A=getLinkParts(e,this.file),t=this.app.metadataCache.getFirstLinkpathDest(A.path,this.file.path);return await getTransclusion(A,this.app,t,this.plugin.settings.pageTransclusionCharLimit)}async parse(e){e=this.parseCheckbox(e);let A="",t=null,n=0;const i=REGEX_LINK.getRes(e);let a,r=!1,s=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(t=e,s=!0);!(a=i.next()).done;){if(!t){const e=REGEX_LINK.getLink(a);t=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}if(REGEX_LINK.isTransclusion(a)){let t=this.parseCheckbox((await this.getTransclusion(REGEX_LINK.getLink(a))).contents).replaceAll(/%%[^%]*%%/gm,"");this.plugin.settings.removeTransclusionQuoteSigns&&(t=t.replaceAll(/\n\s*>\s?/gm,"\n")),A+=e.substring(n,a.value.index)+wrapTextAtCharLength(t,REGEX_LINK.getWrapLength(a,this.plugin.settings.wordWrappingDefault),this.plugin.settings.forceWrap)}else{const t=this.parseLinks(e,n,a);t&&(A+=t,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0))}n=a.value.index+a.value[0].length}return A+=e.substring(n,e.length),r&&(A=this.linkPrefix+A),s&&(A=this.urlPrefix+A),{parsed:A,link:t}}parseCheckbox(e){return this.plugin.settings.parseTODO?e.replaceAll(/^- \[\s] /g,`${this.plugin.settings.todo} `).replaceAll(/\n- \[\s] /g,`\n${this.plugin.settings.todo} `).replaceAll(/^- \[[^\s]] /g,`${this.plugin.settings.done} `).replaceAll(/\n- \[[^\s]] /g,`\n${this.plugin.settings.done} `):e}quickParse(e){if((e=>{const A=REGEX_LINK.getRes(e);let t;for(;!(t=A.next()).done;)if(REGEX_LINK.isTransclusion(t))return!0;return!1})(e))return[null,null];e=this.parseCheckbox(e);let A="",t=null,n=0;const i=REGEX_LINK.getRes(e);let a,r=!1,s=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(t=e,s=!0);!(a=i.next()).done;){if(!t){const e=REGEX_LINK.getLink(a);t=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}const i=this.parseLinks(e,n,a);i&&(A+=i,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0)),n=a.value.index+a.value[0].length}return A+=e.substring(n,e.length),r&&(A=this.linkPrefix+A),s&&(A=this.urlPrefix+A),[A,t]}generateMD(e=[]){let A="# Text Elements\n";for(const e of this.textElements.keys()){const t=this.scene.elements.filter((A=>A.id===e));let n=this.textElements.get(e).raw;t&&1===t.length&&t[0].link&&t[0].rawText===t[0].originalText&&t[0].link.match(/^\[\[[^\]]*]]$/g)&&(n=`%%***>>>text element-link:${t[0].link}<<<***%%`+n),A+=`${n} ^${e}\n\n`}for(const e of this.elementLinks.keys())A+=`${this.elementLinks.get(e)} ^${e}\n\n`;if(A+=this.equations.size>0||this.files.size>0?"\n# Embedded files\n":"",this.equations.size>0)for(const e of this.equations.keys())A+=`${e}: $$${this.equations.get(e).latex}$$\n`;if(this.files.size>0)for(const e of this.files.keys()){const t=/(^[^#\|]*)/,n=this.files.get(e);n.isHyperlink?A+=`${e}: ${n.hyperlink}\n`:A+=`${e}: [[${n.file?n.linkParts.original.replace(t,app.metadataCache.fileToLinktext(n.file,this.file.path)):n.linkParts.original}]]\n`}return A+=this.equations.size>0||this.files.size>0?"\n":"",A+getMarkdownDrawingSection(JSON.stringify({type:this.scene.type,version:this.scene.version,source:this.scene.source,elements:this.scene.elements.concat(e),appState:this.scene.appState,files:this.scene.files},null,"\t"),!this.disableCompression&&this.plugin.settings.compress)}async syncFiles(){var e;let A=!1;const t=this.scene,n=t.elements.filter((e=>"image"===e.type)).map((e=>e.fileId));if(this.files.forEach(((e,t)=>{n.contains(t)||(this.files.delete(t),A=!0)})),this.equations.forEach(((e,t)=>{n.contains(t)||(this.equations.delete(t),A=!0)})),!t.files||0===Object.keys(t.files).length)return!1;const i=new Set;n.forEach((e=>{if(i.has(e)){const n=this.getFile(e),a=this.getEquation(e);if(n&&(n.isHyperlink||n.file&&("md"!==n.file.extension||this.plugin.isExcalidrawFile(n.file))))return;const r=fileid();t.elements.filter((A=>A.fileId===e))[0].fileId=r,A=!0,i.add(r),n&&this.setFile(r,new EmbeddedFile(this.plugin,this.file.path,n.linkParts.original)),a&&this.setEquation(r,{latex:a.latex,isLoaded:!1})}i.add(e)}));for(const n of Object.keys(t.files))if(!this.hasFile(n)&&!this.hasEquation(n)){A=!0;let i=`Pasted Image ${window.moment().format("YYYYMMDDHHmmss_SSS")}`;const a=t.files[n].mimeType;switch(a){case"image/png":default:i+=".png";break;case"image/jpeg":i+=".jpg";break;case"image/svg+xml":i+=".svg";break;case"image/gif":i+=".gif"}const r=(await getAttachmentsFolderAndFilePath(this.app,this.file.path,i)).filepath,s=t.files[n].dataURL;await this.app.vault.createBinary(r,getBinaryFileFromDataURL(s));const o=new EmbeddedFile(this.plugin,this.file.path,r);o.setImage(s,a,{height:0,width:0},"dark"===(null===(e=t.appState)||void 0===e?void 0:e.theme),"image/svg+xml"===a),this.setFile(n,o)}return A}async syncElements(e,A){this.scene=e;let t=!1;return this.compatibilityMode||(t=await this.syncFiles(),this.scene.files={}),this.updateElementLinksFromScene(),t=t||this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene(),await this.updateTextElementsFromScene(),t||this.findNewTextElementsInScene(A)}async updateScene(e){this.scene=JSON_parse(e),this.updateElementLinksFromScene();const A=this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene();return await this.updateTextElementsFromScene(),!(!A&&!this.findNewTextElementsInScene()||(await this.updateSceneTextElements(),0))}getRawText(e){var A;return null===(A=this.textElements.get(e))||void 0===A?void 0:A.raw}getParsedText(e){const A=this.textElements.get(e);return A?[wrap(A.parsed,A.wrapAt),A.parsed,null]:[null,null,null]}setTextElement(e,A,t,n){const i=estimateMaxLineLen(A,t),[a,r]=this.quickParse(t);return a?(this.textElements.set(e,{raw:t,parsed:a,wrapAt:i}),[wrap(a,i),a,r]):(this.parse(t).then((A=>{const a=A.parsed;this.textElements.set(e,{raw:t,parsed:a,wrapAt:i}),a&&n(wrap(a,i),a)})),[null,null,null])}async addTextElement(e,A,t){let n=estimateMaxLineLen(A,t);this.textElements.has(e)&&(n=this.textElements.get(e).wrapAt);const i=await this.parse(t);return this.textElements.set(e,{raw:t,parsed:i.parsed,wrapAt:n}),[wrap(i.parsed,n),i.parsed,i.link]}deleteTextElement(e){this.textElements.delete(e)}getOpenMode(){const e=this.app.metadataCache.getFileCache(this.file);let A="view-mobile"===this.plugin.settings.defaultMode?this.plugin.device.isPhone?"view":"normal":this.plugin.settings.defaultMode;switch((null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-default-mode"]&&(A=e.frontmatter["excalidraw-default-mode"]),A){case"zen":return{viewModeEnabled:!1,zenModeEnabled:!0};case"view":return{viewModeEnabled:!0,zenModeEnabled:!1};default:return{viewModeEnabled:!1,zenModeEnabled:!1}}}getLinkOpacity(){const e=this.app.metadataCache.getFileCache(this.file);let A=this.plugin.settings.linkOpacity;return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-linkbutton-opacity"]&&(A=e.frontmatter["excalidraw-linkbutton-opacity"]),A}getOnLoadScript(){const e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-onload-script"]?e.frontmatter["excalidraw-onload-script"]:null}setLinkPrefix(){const e=this.linkPrefix,A=this.app.metadataCache.getFileCache(this.file);return(null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-link-prefix"]?this.linkPrefix=A.frontmatter["excalidraw-link-prefix"]:this.linkPrefix=this.plugin.settings.linkPrefix,e!=this.linkPrefix}setUrlPrefix(){const e=this.urlPrefix,A=this.app.metadataCache.getFileCache(this.file);return(null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-url-prefix"]?this.urlPrefix=A.frontmatter["excalidraw-url-prefix"]:this.urlPrefix=this.plugin.settings.urlPrefix,e!=this.urlPrefix}setAutoexportPreferences(){const e=this.app.metadataCache.getFileCache(this.file);if((null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-autoexport"])switch(e.frontmatter["excalidraw-autoexport"].toLowerCase()){case"none":this.autoexportPreference=AutoexportPreference.none;break;case"both":this.autoexportPreference=AutoexportPreference.both;break;case"png":this.autoexportPreference=AutoexportPreference.png;break;case"svg":this.autoexportPreference=AutoexportPreference.svg;break;default:this.autoexportPreference=AutoexportPreference.inherit}else this.autoexportPreference=AutoexportPreference.inherit}setShowLinkBrackets(){const e=this.showLinkBrackets,A=this.app.metadataCache.getFileCache(this.file);return(null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-link-brackets"]?this.showLinkBrackets=0!=A.frontmatter["excalidraw-link-brackets"]:this.showLinkBrackets=this.plugin.settings.showLinkBrackets,e!=this.showLinkBrackets}setFile(e,A){if(!A)return;if(this.files.set(e,A),A.isHyperlink)return void this.plugin.filesMaster.set(e,{isHyperlink:!0,path:A.hyperlink,blockrefData:null,hasSVGwithBitmap:A.isSVGwithBitmap});if(!A.file)return;const t=A.linkParts.original.split("#");this.plugin.filesMaster.set(e,{isHyperlink:!1,path:A.file.path+(A.shouldScale()?"":"|100%"),blockrefData:1===t.length?null:t[1],hasSVGwithBitmap:A.isSVGwithBitmap})}getFiles(){return Object.values(this.files)}getFile(e){let A=this.files.get(e);if(A)return A;const t=this.plugin.filesMaster.get(e);return t?(A=new EmbeddedFile(this.plugin,this.file.path,t.blockrefData?t.path+"#"+t.blockrefData:t.path),this.files.set(e,A),A):A}getFileEntries(){return this.files.entries()}deleteFile(e){this.files.delete(e)}hasFile(e){if(this.files.has(e))return!0;if(this.plugin.filesMaster.has(e)){const A=this.plugin.filesMaster.get(e);if(A.isHyperlink)return this.files.set(e,new EmbeddedFile(this.plugin,this.file.path,A.path)),!0;const t=A.path.split("|")[0].split("#")[0];if(!this.app.vault.getAbstractFileByPath(t))return this.plugin.filesMaster.delete(e),!0;const n=A.path.endsWith("100%"),i=new EmbeddedFile(this.plugin,this.file.path,(A.blockrefData?t+"#"+A.blockrefData:t)+(n?"|100%":""));return this.files.set(e,i),!0}return!1}setEquation(e,A){this.equations.set(e,{latex:A.latex,isLoaded:A.isLoaded}),this.plugin.equationsMaster.set(e,A.latex)}getEquation(e){let A=this.equations.get(e);if(A)return A;const t=this.plugin.equationsMaster.get(e);return t?(this.equations.set(e,{latex:t,isLoaded:!1}),{latex:t,isLoaded:!1}):A}getEquationEntries(){return this.equations.entries()}deleteEquation(e){this.equations.delete(e)}hasEquation(e){return!!this.equations.has(e)||!!this.plugin.equationsMaster.has(e)&&(this.equations.set(e,{latex:this.plugin.equationsMaster.get(e),isLoaded:!1}),!0)}}const getTransclusion=async(e,A,t,n)=>{var i,a,r,s,o,l,c,d,h;if(!e.path)return{contents:e.original.trim(),lineNum:0};if(!(t&&t instanceof obsidian_module.TFile))return{contents:e.original.trim(),lineNum:0};const u=await A.vault.read(t);if(!e.ref)return n?{contents:u.substring(0,n).trim(),lineNum:0}:{contents:u.trim(),lineNum:0};const g=(await A.metadataCache.blockCache.getForFile({isCancelled:()=>!1},t)).blocks.filter((e=>"comment"!=e.node.type));if(!g)return{contents:e.original.trim(),lineNum:0};if(e.isBlockRef){let A=null===(i=g.filter((A=>A.node.id==e.ref))[0])||void 0===i?void 0:i.node;if(!A)return{contents:e.original.trim(),lineNum:0};["blockquote"].includes(A.type)&&(A=A.children[0]);const t=A.position.start.offset,n=A.position.start.line,a=A.position.end.offset;return{contents:u.substring(t,a).replaceAll(/ \^\S*$|^\^\S*$/gm,"").trim(),lineNum:n}}const p=g.filter((e=>0===e.display.search(/^#+\s/)));let m=null,w=0,f=null,B=1;for(let A=0;AB;)e++;return e===p.length&&p[e-1].node.depth>B?{leadingHashes:"#".repeat(B)+" ",contents:u.substring(m).trim(),lineNum:w}:(f=p[e].node.position.start.offset-1,{leadingHashes:"#".repeat(B)+" ",contents:u.substring(m,f).trim(),lineNum:w})}const t=p[A].node.children[0],n=null===(r=null===(a=p[A].node.data)||void 0===a?void 0:a.hProperties)||void 0===r?void 0:r.dataHeading,i=null==t?void 0:t.children;!m&&((null===(s=null==t?void 0:t.value)||void 0===s?void 0:s.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref||(null===(o=null==t?void 0:t.title)||void 0===o?void 0:o.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref||(null==n?void 0:n.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref||i&&(null===(c=null===(l=i[0])||void 0===l?void 0:l.value)||void 0===c?void 0:c.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref)&&(m=null===(d=p[A].node.children[0])||void 0===d?void 0:d.position.start.offset,B=p[A].node.depth,w=null===(h=p[A].node.children[0])||void 0===h?void 0:h.position.start.line)}return m?{leadingHashes:"#".repeat(B)+" ",contents:u.substring(m).trim(),lineNum:w}:{contents:e.original.trim(),lineNum:0}};class Prompt extends obsidian_module.Modal{constructor(e,A,t,n,i){super(e),this.prompt_text=A,this.default_value=t,this.placeholder=n,this.prompt_desc=i}onOpen(){this.titleEl.setText(this.prompt_text),this.createForm()}onClose(){this.contentEl.empty()}createForm(){var e;let A=this.contentEl.createDiv();A.addClass("excalidraw-prompt-div"),this.prompt_desc&&(A=A.createDiv(),A.style.width="100%",A.createEl("p").innerHTML=this.prompt_desc);const t=A.createEl("form");t.addClass("excalidraw-prompt-form"),t.type="submit",t.onsubmit=e=>{e.preventDefault(),this.resolve(this.promptEl.value),this.close()},this.promptEl=t.createEl("input"),this.promptEl.type="text",this.promptEl.placeholder=this.placeholder,this.promptEl.value=null!==(e=this.default_value)&&void 0!==e?e:"",this.promptEl.addClass("excalidraw-prompt-input"),this.promptEl.select()}async openAndGetValue(e){this.resolve=e,this.open()}}class GenericInputPrompt extends obsidian_module.Modal{static Prompt(e,A,t,n,i){return new GenericInputPrompt(e,A,t,n,i).waitForClose}constructor(e,A,t,n,i){super(e),this.header=A,this.didSubmit=!1,this.submitClickCallback=()=>this.submit(),this.cancelClickCallback=()=>this.cancel(),this.submitEnterCallback=e=>{"Enter"===e.key&&(e.preventDefault(),this.submit())},this.placeholder=t,this.input=n,this.buttons=i,this.waitForClose=new Promise(((e,A)=>{this.resolvePromise=e,this.rejectPromise=A})),this.display(),this.open()}display(){this.contentEl.empty(),this.titleEl.textContent=this.header;const e=this.contentEl.createDiv();this.inputComponent=this.createInputField(e,this.placeholder,this.input),this.createButtonBar(e)}createInputField(e,A,t){const n=new obsidian_module.TextComponent(e);return n.inputEl.style.width="100%",n.setPlaceholder(null!=A?A:"").setValue(null!=t?t:"").onChange((e=>this.input=e)).inputEl.addEventListener("keydown",this.submitEnterCallback),n}createButton(e,A,t){const n=new obsidian_module.ButtonComponent(e);return n.setButtonText(A).onClick(t),n}createButtonBar(e){const A=e.createDiv();if(this.buttons&&this.buttons.length>0){let e=null;for(const t of this.buttons){const n=new obsidian_module.ButtonComponent(A);n.setButtonText(t.caption).onClick((e=>{const A=t.action(this.input);A&&(this.input=A),this.submit()})),e=null!=e?e:n}e&&(e.setCta().buttonEl.style.marginRight="0")}else this.createButton(A,"Ok",this.submitClickCallback).setCta().buttonEl.style.marginRight="0";this.createButton(A,"Cancel",this.cancelClickCallback),A.style.display="flex",A.style.flexDirection="row-reverse",A.style.justifyContent="flex-start",A.style.marginTop="1rem"}submit(){this.didSubmit=!0,this.close()}cancel(){this.close()}resolveInput(){this.didSubmit?this.resolvePromise(this.input):this.rejectPromise("No input given.")}removeInputListener(){var e,A;null===(A=null===(e=this.inputComponent)||void 0===e?void 0:e.inputEl)||void 0===A||A.removeEventListener("keydown",this.submitEnterCallback)}onOpen(){super.onOpen(),this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.select()}onClose(){super.onClose(),this.resolveInput(),this.removeInputListener()}}class GenericSuggester extends obsidian_module.FuzzySuggestModal{static Suggest(e,A,t,n,i){return new GenericSuggester(e,A,t,n,i).promise}constructor(e,A,t,n,i){var a;super(e),this.displayItems=A,this.items=t,this.hint=n,this.instructions=i,this.limit=20,this.setPlaceholder(null!==(a=this.hint)&&void 0!==a?a:""),i&&this.setInstructions(this.instructions),this.promise=new Promise(((e,A)=>{this.resolvePromise=e,this.rejectPromise=A})),this.open()}getItemText(e){return this.displayItems[this.items.indexOf(e)]}getItems(){return this.items}selectSuggestion(e,A){this.resolved=!0,super.selectSuggestion(e,A)}onChooseItem(e){this.resolved=!0,this.resolvePromise(e)}onClose(){super.onClose(),this.resolved||this.rejectPromise(this.inputEl.value)}}class NewFileActions extends obsidian_module.Modal{constructor(e,A,t,n,i){super(e.app),this.plugin=e,this.path=A,this.newPane=t,this.newWindow=n,this.view=i}onOpen(){this.createForm()}async onClose(){}openFile(e){e&&(this.newWindow?app.workspace.openPopoutLeaf():this.newPane?getNewOrAdjacentLeaf(this.plugin,this.view.leaf):this.view.leaf).openFile(e,{active:!0})}createForm(){this.titleEl.setText("New File"),this.contentEl.createDiv({cls:"excalidraw-prompt-center",text:"File does not exist. Do you want to create it?"}),this.contentEl.createDiv({cls:"excalidraw-prompt-center filepath",text:this.path}),this.contentEl.createDiv({cls:"excalidraw-prompt-center"},(e=>{e.style.textAlign="right";const A=()=>this.path&&""!==this.path?!!this.view.file||(new obsidian_module.Notice("Unknown error. It seems as if your drawing was closed or the drawing file is missing"),!1):(new obsidian_module.Notice("Error: Filename for new file may not be empty"),!1),t=async e=>{if(!this.path.includes("/")){const e=new RegExp(`${this.view.file.name}$`,"g");this.path=this.view.file.path.replace(e,this.path)}return this.path.match(/\.md$/)||(this.path=`${this.path}.md`),checkAndCreateFolder(splitFolderAndFilename(this.path).folderpath),await this.app.vault.create(this.path,e)};e.createEl("button",{text:"Create Markdown"}).onclick=async()=>{if(!A)return;const e=await t("");this.openFile(e),this.close()},e.createEl("button",{text:"Create Excalidraw"}).onclick=async()=>{if(!A)return;const e=await t(await this.plugin.getBlankDrawing());await sleep$1(200),this.openFile(e),this.close()},e.createEl("button",{text:"Never Mind"}).onclick=()=>{this.close()}}))}}class ScriptEngine{constructor(e){this.plugin=e,this.scriptIconMap={},this.loadScripts(),this.registerEventHandlers()}registerEventHandlers(){const e=e=>{if(!e.endsWith(".svg"))return;const A=app.vault.getAbstractFileByPath(getIMGFilename(e,"md"));A&&A instanceof obsidian_module.TFile&&(this.unloadScript(this.getScriptName(A),A.path),this.loadScript(A))};this.plugin.registerEvent(app.vault.on("delete",(async A=>{A instanceof obsidian_module.TFile&&A.path.startsWith(this.scriptPath)&&(this.unloadScript(this.getScriptName(A),A.path),e(A.path))}))),this.plugin.registerEvent(app.vault.on("create",(async A=>{A instanceof obsidian_module.TFile&&A.path.startsWith(this.scriptPath)&&(this.loadScript(A),e(A.path))}))),this.plugin.registerEvent(app.vault.on("rename",(async(A,t)=>{if(!(A instanceof obsidian_module.TFile))return;const n=t.startsWith(this.scriptPath),i=A.path.startsWith(this.scriptPath);n&&(this.unloadScript(this.getScriptName(t),t),e(t)),i&&(this.loadScript(A),e(A.path))})))}updateScriptPath(){this.scriptPath!==this.plugin.settings.scriptFolderPath&&(this.scriptPath&&this.unloadScripts(),this.loadScripts())}getListofScripts(){if(this.scriptPath=this.plugin.settings.scriptFolderPath,app.vault.getAbstractFileByPath(this.scriptPath))return app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)&&"md"===e.extension));this.scriptPath=null}loadScripts(){var e;null===(e=this.getListofScripts())||void 0===e||e.forEach((e=>this.loadScript(e)))}getScriptName(e){let A="",t="";e instanceof obsidian_module.TFile?(A=e.basename,t=e.path):(A=splitFolderAndFilename(e).basename,t=e);const n=t.split(`${this.scriptPath}/`)[1],i=n.lastIndexOf("/");return i>-1?n.substring(0,i+1)+A:A}async addScriptIconToMap(e,A){const t=getIMGFilename(e,"svg"),n=app.vault.getAbstractFileByPath(t),i=n&&n instanceof obsidian_module.TFile?await app.vault.read(n):null;this.scriptIconMap=Object.assign({},this.scriptIconMap);const a=splitFolderAndFilename(A);this.scriptIconMap[e]={name:a.filename,group:"/"===a.folderpath?"":a.folderpath,svgString:i},this.updateToolPannels()}loadScript(e){if("md"!==e.extension)return;const A=this.getScriptName(e);this.addScriptIconToMap(e.path,A),this.plugin.addCommand({id:A,name:`(Script) ${A}`,checkCallback:t=>{if(t)return Boolean(app.workspace.getActiveViewOfType(ExcalidrawView));const n=app.workspace.getActiveViewOfType(ExcalidrawView);return!!n&&((async()=>{const t=await app.vault.read(e);t&&this.executeScript(n,t,A,e)})(),!0)}})}unloadScripts(){const e=app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)));e.forEach((e=>{this.unloadScript(this.getScriptName(e),e.path)}))}unloadScript(e,A){if(!A.endsWith(".md"))return;delete this.scriptIconMap[A],this.scriptIconMap=Object.assign({},this.scriptIconMap),this.updateToolPannels();const t=`${PLUGIN_ID}:${e}`;app.commands.commands[t]&&delete app.commands.commands[t]}async executeScript(e,A,t,n){if(!e||!A||!t)return;this.plugin.ea.reset(),this.plugin.ea.setView(e),this.plugin.ea.activeScript=t;const i=Object.getPrototypeOf((async()=>{})).constructor;let a=null;return a=await new i("ea","utils",A)(this.plugin.ea,{inputPrompt:(e,A,t,n)=>ScriptEngine.inputPrompt(app,e,A,t,n),suggester:(e,A,t,n)=>ScriptEngine.suggester(app,e,A,t,n),scriptFile:n}),this.plugin.ea.activeScript=null,a}updateToolPannels(){app.workspace.getLeavesOfType("excalidraw").forEach((e=>{var A,t;null===(t=null===(A=e.view.toolsPanelRef)||void 0===A?void 0:A.current)||void 0===t||t.updateScriptIconMap(this.scriptIconMap)}))}static async inputPrompt(e,A,t,n,i){try{return await GenericInputPrompt.Prompt(e,A,t,n,i)}catch(e){return}}static async suggester(e,A,t,n,i){try{return await GenericSuggester.Suggest(e,A,t,n,i)}catch(e){return}}}var t$c={d:(e,A)=>{for(var t in A)t$c.o(A,t)&&!t$c.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},r$e={};t$c.d(r$e,{QA:()=>w$1,ZP:()=>j$1,qt:()=>x$1,MX:()=>$});const e$d={red:"hsl(0, 100%, 50%)",orange:"hsl(30, 100%, 50%)",yellow:"hsl(60, 100%, 50%)","lime green":"hsl(90, 100%, 50%)",green:"hsl(120, 100%, 50%)","blue green":"hsl(150, 100%, 50%)",cyan:"hsl(180, 100%, 50%)","sky blue":"hsl(210, 100%, 50%)",blue:"hsl(240, 100%, 50%)",purple:"hsl(270, 100%, 50%)",magenta:"hsl(300, 100%, 50%)",pink:"hsl(330, 100%, 50%)"};function s$a(e,A,t){return Math.max(e,Math.min(A,t))}function n$c(e,A){return+e.toFixed(A>=0?A:0)}function a$c(e){const A=e%360;return A<0?A+360:A}function i$a(e){return void 0!==e?s$a(0,e,1):1}function o$b(e){return Math.floor(Math.random()*e)}function h$4(e){var A;const{Cmin:t,Cmax:n,H:i,delta:a}=function(e){const[A,t,n]=Object.values(e).map((e=>e/255)),i=Math.max(A,t,n),a=Math.min(A,t,n),r=i-a;return{Cmin:a,Cmax:i,H:0===r?0:i===A?(t-n)/r%6:i===t?(n-A)/r+2:(A-t)/r+4,delta:r}}(e),r=(n+t)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$c(60*i),s:100*s,l:100*r,a:null!==(A=e.a)&&void 0!==A?A:1}}function u$8(e){const{h:A,s:t,l:n,a:i}=e,a=n/100,r=t/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(A/60%2-1)),l=a-s/2,c=A<60||300<=A&&A<360?s:120<=A&&A<240?0:o,d=240<=A&&A<360?0:60<=A&&A<180?s:o,h=A<120?0:180<=A&&A<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=i?i:1}}function l$5(e){const[A,t,n,i]=Object.values(e).map((e=>parseInt(e,16)));return{r:A,g:t,b:n,a:i?i/255:1}}const c$a=/^#?([\da-f])([\da-f])([\da-f])([\da-f])?$|^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})?([\da-f]{2})?$/gi,f$3=/hsla?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function d$2({h:e,s:A,l:t,a:n}){return[u$8({h:a$c(e),s:s$a(0,A,100),l:s$a(0,t,100),a:i$a(n)}),"hsl"]}const g$2=/rgba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b$5({r:e,g:A,b:t,a:n}){return[{r:s$a(0,e,255),g:s$a(0,A,255),b:s$a(0,t,255),a:i$a(n)},"rgb"]}var p$3,v$2,m$1=function(e,A,t,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof A?e!==A||!i:!A.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,t):i?i.value=t:A.set(e,t),t},y$1=function(e,A,t,n){if("a"===t&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof A?e!==A||!n:!A.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?n:"a"===t?n.call(e):n?n.value:A.get(e)};class w$1{constructor(e){var A,t;p$3.set(this,{r:0,g:0,b:0,a:1}),v$2.set(this,"rgb");const n=w$1.Parsers.map((A=>A(e))).find((e=>"invalid"!==e[1]));n?(A=this,t=this,[{set value(e){m$1(A,p$3,e,"f")}}.value,{set value(e){m$1(t,v$2,e,"f")}}.value]=n):m$1(this,v$2,"invalid","f")}get red(){return y$1(this,p$3,"f").r}get blue(){return y$1(this,p$3,"f").b}get green(){return y$1(this,p$3,"f").g}get alpha(){return y$1(this,p$3,"f").a}get hue(){return h$4(y$1(this,p$3,"f")).h}get saturation(){return h$4(y$1(this,p$3,"f")).s}get lightness(){return h$4(y$1(this,p$3,"f")).l}get format(){return y$1(this,v$2,"f")}isValid(){return"invalid"!==y$1(this,v$2,"f")}rgba(){return y$1(this,p$3,"f")}hsla(){return h$4(y$1(this,p$3,"f"))}hexa({round:e=!1}={}){return function(e,A=!1){let{r:t,g:n,b:i,a:a}=e;a&&(a*=255),A&&([t,n,i,a]=[t,n,i,a].map((e=>e&&Math.round(e))));const[r,s,o,l]=[t,n,i,null!=a?a:255].map((e=>e.toString(16).padStart(2,"0").toUpperCase()));return{r:r,g:s,b:o,a:l}}(y$1(this,p$3,"f"),e)}stringRGB({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,n,i,a]=Object.values(y$1(this,p$3,"f")).map(((e,t)=>n$c(e,A[t])));return e?`rgba(${t}, ${n}, ${i}, ${a})`:`rgb(${t}, ${n}, ${i})`}stringHEX({alpha:e=!0}={}){const[A,t,n,i]=Object.values(this.hexa({round:!0}));return`#${A}${t}${n}${e?i:""}`}stringHSL({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,n,i,a]=Object.values(this.hsla()).map(((e,t)=>n$c(e,A[t])));return e?`hsla(${t}, ${n}%, ${i}%, ${a})`:`hsl(${t}, ${n}%, ${i}%)`}hueTo(e){var A;const{h:t,s:n,l:i,a:a}=this.hsla(),r="number"==typeof e?a$c(e):Number(null!==(A=e$d[e].match(/\d{1,3}/))&&void 0!==A?A:t);return m$1(this,p$3,u$8({h:r,s:n,l:i,a:a}),"f"),this}hueBy(e){const{h:A,s:t,l:n,a:i}=this.hsla();return m$1(this,p$3,u$8({h:a$c(A+e),s:t,l:n,a:i}),"f"),this}saturationTo(e){const{h:A,l:t,a:n}=this.hsla();return m$1(this,p$3,u$8({h:A,s:s$a(0,e,100),l:t,a:n}),"f"),this}saturateBy(e){const{h:A,s:t,l:n,a:i}=this.hsla();return m$1(this,p$3,u$8({h:A,s:s$a(0,t+e,100),l:n,a:i}),"f"),this}desaturateBy(e){return this.saturateBy(-1*e)}lightnessTo(e){const{h:A,s:t,a:n}=this.hsla();return m$1(this,p$3,u$8({h:A,s:t,l:s$a(0,e,100),a:n}),"f"),this}lighterBy(e){const{h:A,s:t,l:n,a:i}=this.hsla();return m$1(this,p$3,u$8({h:A,s:t,l:s$a(0,n+e,100),a:i}),"f"),this}darkerBy(e){return this.lighterBy(-1*e)}alphaTo(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,e,1)}),"f"),this}alphaBy(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,y$1(this,p$3,"f").a+e,1)}),"f"),this}invert({alpha:e=!1}={}){const{r:A,g:t,b:n,a:i}=y$1(this,p$3,"f");return m$1(this,p$3,{r:255-A,g:255-t,b:255-n,a:e?1-i:i},"f"),this}grayscale(){return this.desaturateBy(100)}rotate(e){return this.hueBy(e)}}function $(){return new w$1({r:o$b(255),g:o$b(255),b:o$b(255),a:Math.random()})}function x$1(e){(e=e.filter(((e,A,t)=>t.indexOf(e)===A))).forEach((e=>e(w$1)))}p$3=new WeakMap,v$2=new WeakMap,w$1.Parsers=[function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:A,g:t,b:n}=e;return void 0!==A&&void 0!==t&&void 0!==n&&"number"==typeof A}(e))return b$5(e);if("string"==typeof e){g$2.lastIndex=0;const A=g$2.exec(e);if(A){const[e,t,n,i]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(A<3?2.55:.01):+e));return b$5({r:e,g:t,b:n,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:A,g:t,b:n}=e;return void 0!==A&&void 0!==t&&void 0!==n&&"string"==typeof A}(e))return[l$5(e),"hex"];if("string"==typeof e){c$a.lastIndex=0;const A=c$a.exec(e);if(A){const[e,t,n,i]=A.filter((e=>void 0!==e)).slice(1).map((e=>1===e.length?e.repeat(2):e));return[l$5({r:e,g:t,b:n,a:null!=i?i:"FF"}),"hex"]}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:A,s:t,l:n}=e;return void 0!==A&&void 0!==t&&void 0!==n}(e))return d$2(e);if("string"==typeof e){f$3.lastIndex=0;const A=f$3.exec(e);if(A){const[e,t,n,i]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(0===A?3.59:A<3?1:.01):+e));return d$2({h:e,s:t,l:n,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}];const j$1=e=>new w$1(e);r$e.QA;var O$1=r$e.ZP,B=r$e.qt;r$e.MX;var e$c={d:(e,A)=>{for(var t in A)e$c.o(A,t)&&!e$c.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},a$b={};function t$b(e){const A=e%360;return A<0?A+360:A}e$c.d(a$b,{Z:()=>n$b});const n$b=e=>{e.prototype.harmony=function({type:A="analogous",effect:t="tones",amount:n=5}={}){const{h:i,s:a,l:r,a:s}=this.hsla();switch("monochromatic"===A&&(o=n,n=Math.max(2,Math.min(o,10))),A){case"analogous":return[-30,0,30].map((A=>new e({h:t$b(i+A),s:a,l:r,a:s})));case"complementary":return[0,180].map((A=>new e({h:t$b(i+A),s:a,l:r,a:s})));case"split-complementary":return[0,150,210].map((A=>new e({h:t$b(i+A),s:a,l:r,a:s})));case"double-split-complementary":return[-30,0,30,150,210].map((A=>new e({h:t$b(i+A),s:a,l:r,a:s})));case"triad":return[0,120,240].map((A=>new e({h:t$b(i+A),s:a,l:r,a:s})));case"rectangle":return[0,60,180,240].map((A=>new e({h:t$b(i+A),s:a,l:r,a:s})));case"square":return[0,90,180,270].map((A=>new e({h:t$b(i+A),s:a,l:r,a:s})));case"monochromatic":{const A="tones"===t?a:r;let o=("tints"===t?100-A:A)/n;o="tints"===t?o:-1*o;const l=[A];for(let e=0;enew e({h:i,s:A,l:r,a:s}))):l.map((A=>new e({h:i,s:a,l:A,a:s})))}}var o}};var r$d=a$b.Z,a$a={d:(e,A)=>{for(var t in A)a$a.o(A,t)&&!a$a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},t$a={};a$a.d(t$a,{Z:()=>k});const e$b=6/29,n$a=Math.pow(e$b,3),c$9=Math.pow(29/3,3),r$c={x:.96422,y:1,z:.82521};function u$7(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function s$9(e,A,t){return Math.max(e,Math.min(A,t))}function o$a(e){const A=e%360;return A<0?A+360:A}function l$4(e){const[A,t,n]=Object.values(e).map((e=>e/255)),i=Math.max(A,t,n),a=Math.min(A,t,n),r=i-a;return{Cmin:a,Cmax:i,H:0===r?0:i===A?(t-n)/r%6:i===t?(n-A)/r+2:(A-t)/r+4,delta:r}}function b$4(e){var A;const{Cmin:t,Cmax:n,H:i,delta:a}=l$4(e),r=(n+t)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:o$a(60*i),s:100*s,l:100*r,a:null!==(A=e.a)&&void 0!==A?A:1}}function h$3(e){var A;const{Cmax:t,H:n,delta:i}=l$4(e),a=0===i?0:i/t;return{h:o$a(60*n),s:100*a,v:100*t,a:null!==(A=e.a)&&void 0!==A?A:1}}function v$1(e){const{h:A,a:t}=b$4(e),{r:n,g:i,b:a}=e;return{h:A,w:Math.min(n,i,a)/2.55,b:100*(1-Math.max(n,i,a)/255),a:t}}function i$9(e){const[A,t,n]=u$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,n]=u$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}({x:A,y:t,z:n,a:e.a})}function m(e){const A=Object.values(i$9(e)).map(((e,A)=>e/(100*Object.values(r$c)[A]))).map((e=>e>n$a?Math.cbrt(e):(c$9*e+16)/116));return{l:116*A[1]-16,a:500*(A[0]-A[1]),b:200*(A[1]-A[2]),alpha:e.a}}function p$2(e){const{l:A,a:t,b:n}=m(e),i=180*Math.atan2(n,t)/Math.PI;return{l:A,c:Math.sqrt(Math.pow(t,2)+Math.pow(n,2)),h:o$a(i),a:e.a}}function f$2(e){const[A,t,n]=Object.values(i$9(e)).map((e=>e/100)),i=t/r$c.y,a=A&&t&&n?A+15*t+3*n:19,r=4*A/a,s=9*t/a,o=r$c.x+15*r$c.y+3*r$c.z,l=4*r$c.x/o,c=9*r$c.y/o;let d=i>n$a?116*Math.cbrt(i)-16:c$9*i,h=13*d*(r-l),u=13*d*(s-c);return d===Number(-0)&&(d=0),h===Number(-0)&&(h=0),u===Number(-0)&&(u=0),{l:d,u:h,v:u,a:e.a}}function M(e){const{x:A,y:t,z:n}=i$9(e),[i,a,r]=u$7([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[A,t,n]);return{u:i,v:a,w:r,a:e.a}}function w(e){let{r:A,g:t,b:n}=e;const i=Math.min(A,t,n);[A,t,n]=[A,t,n].map((e=>e-i));const a=Math.max(A,t,n);let r=Math.min(A,t);A-=r,t-=r,n&&t&&(n/=2,t/=2),r+=t,n+=t;const s=Math.max(A,r,n);if(s){const e=a/s;[A,r,n]=[A,r,n].map((A=>A*e))}return[A,r,n]=[A,r,n].map((e=>e+i)),{r:A,y:r,b:n,a:e.a}}function O(e){const{r:A,g:t,b:n,a:i}=e,a=1-Math.max(A,t,n)/255,[r,s,o]=1===a?[0,0,0]:[A,t,n].map((e=>100*(1-e/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:i}}function j(e){const{h:A,s:t,v:n,a:i}=e,a=n/100,r=a*(t/100),s=r*(1-Math.abs(A/60%2-1)),o=a-r,l=A<60||300<=A&&A<360?r:120<=A&&A<240?0:s,c=240<=A&&A<360?0:60<=A&&A<180?r:s,d=A<120?0:180<=A&&A<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=i?i:1}}function x(e){const[A,t,n]=Object.values(function(e){const[A,t,n]=u$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}(e)).map((e=>e/100)),[i,a,r]=u$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,n]).map((e=>{return s$9(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:i,g:a,b:r,a:e.a}}function y(e){const{l:A,a:t,b:n}=e,i=(A+16)/116,a=i+t/500,r=i-n/200,s=Object.values(r$c),[o,l,c]=[a,i,r].map(((e,A)=>(e>e$b?Math.pow(e,3):3*Math.pow(e$b,2)*(e-4/29))*s[A]*100));return x({x:o,y:l,z:c,a:e.alpha})}const k=e=>{e.prototype.mix=function({color:A="#fff",ratio:t=.5,colorspace:n="luv"}={}){const i=this.rgba(),a=(A instanceof e?A:new e(A)).rgba();let r,s;switch(t=s$9(0,t,1),n){case"hsl":r=Object.values(b$4(i)),s=Object.values(b$4(a));break;case"hsv":r=Object.values(h$3(i)),s=Object.values(h$3(a));break;case"hwb":r=Object.values(v$1(i)),s=Object.values(v$1(a));break;case"lab":r=Object.values(m(i)),s=Object.values(m(a));break;case"lch":r=Object.values(p$2(i)),s=Object.values(p$2(a));break;case"luv":r=Object.values(f$2(i)),s=Object.values(f$2(a));break;case"ryb":r=Object.values(w(i)),s=Object.values(w(a));break;case"uvw":r=Object.values(M(i)),s=Object.values(M(a));break;case"xyz":r=Object.values(i$9(i)),s=Object.values(i$9(a));break;case"cmyk":r=Object.values(O(i)),s=Object.values(O(a));break;default:r=Object.values(i),s=Object.values(a)}const[o,l,c,d,h]=r.map(((e,A)=>r[A]*(1-t)+s[A]*t));switch(n){case"hsl":return new e(function(e){const{h:A,s:t,l:n,a:i}=e,a=n/100,r=t/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(A/60%2-1)),l=a-s/2,c=A<60||300<=A&&A<360?s:120<=A&&A<240?0:o,d=240<=A&&A<360?0:60<=A&&A<180?s:o,h=A<120?0:180<=A&&A<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=i?i:1}}({h:o,s:l,l:c,a:d}));case"hsv":return new e(j({h:o,s:l,v:c,a:d}));case"hwb":return new e(function(e){const{h:A,b:t,w:n,a:i}=e;return j({h:A,s:100===t?0:100-n/(100-t)*100,v:100-t,a:i})}({h:o,w:l,b:c,a:d}));case"lab":return new e(y({l:o,a:l,b:c,alpha:d}));case"lch":return new e(function(e){const{l:A,c:t,h:n}=e;return y({l:A,a:t*Math.cos(n*Math.PI/180),b:t*Math.sin(n*Math.PI/180),alpha:e.a})}({l:o,c:l,h:c,a:d}));case"luv":return new e(function(e){const{l:A,u:t,v:n}=e,i=A>c$9*n$a?Math.pow((A+16)/116,3):A/c$9,a=r$c.x+15*r$c.y+3*r$c.z,r=(52*A/(t&&A?t+13*A*(4*r$c.x/a):1)-1)/3,s=-5*i,o=i*(39*A/(n&&A?n+13*A*(9*r$c.y/a):1)-5),l=r===-1/3?o-s:(o-s)/(r- -1/3);return x({x:100*l,y:100*i,z:100*(r*l+s),a:e.a})}({l:o,u:l,v:c,a:d}));case"ryb":return new e(function(e){let{r:A,y:t,b:n}=e;const i=Math.min(A,t,n);[A,t,n]=[A,t,n].map((e=>e-i));const a=Math.max(A,t,n);let r=Math.min(t,n);t-=r,n-=r,n&&r&&(n*=2,r*=2),A+=t,r+=t;const s=Math.max(A,r,n);if(s){const e=a/s;[A,r,n]=[A,r,n].map((A=>A*e))}return[A,r,n]=[A,r,n].map((e=>e+i)),{r:A,g:r,b:n,a:e.a}}({r:o,y:l,b:c,a:d}));case"uvw":return new e(function(e){const{u:A,v:t,w:n}=e,[i,a,r]=u$7([[1.5,0,0],[0,1,0],[1.5,-3,2]],[A,t,n]);return x({x:i,y:a,z:r,a:e.a})}({u:o,v:l,w:c,a:d}));case"xyz":return new e(x({x:o,y:l,z:c,a:d}));case"cmyk":return new e(function(e){const{c:A,m:t,y:n,k:i,a:a}=e,[r,s,o]=[A,t,n].map((e=>255*(1-e/100)*(1-i/100)));return{r:r,g:s,b:o,a:a}}({c:o,m:l,y:c,k:d,a:h}));default:return new e({r:o,g:l,b:c,a:d})}}};var z=t$a.Z,r$b={d:(e,A)=>{for(var t in A)r$b.o(A,t)&&!r$b.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},b$3={};r$b.d(b$3,{Z:()=>n$9});const g$1=["rgb(0,0,0)","rgb(0,0,51)","rgb(0,0,102)","rgb(0,0,153)","rgb(0,0,204)","rgb(0,0,255)","rgb(0,51,0)","rgb(0,51,51)","rgb(0,51,102)","rgb(0,51,153)","rgb(0,51,204)","rgb(0,51,255)","rgb(0,102,0)","rgb(0,102,51)","rgb(0,102,102)","rgb(0,102,153)","rgb(0,102,204)","rgb(0,102,255)","rgb(0,153,0)","rgb(0,153,51)","rgb(0,153,102)","rgb(0,153,153)","rgb(0,153,204)","rgb(0,153,255)","rgb(0,204,0)","rgb(0,204,51)","rgb(0,204,102)","rgb(0,204,153)","rgb(0,204,204)","rgb(0,204,255)","rgb(0,255,0)","rgb(0,255,51)","rgb(0,255,102)","rgb(0,255,153)","rgb(0,255,204)","rgb(0,255,255)","rgb(51,0,0)","rgb(51,0,51)","rgb(51,0,102)","rgb(51,0,153)","rgb(51,0,204)","rgb(51,0,255)","rgb(51,51,0)","rgb(51,51,51)","rgb(51,51,102)","rgb(51,51,153)","rgb(51,51,204)","rgb(51,51,255)","rgb(51,102,0)","rgb(51,102,51)","rgb(51,102,102)","rgb(51,102,153)","rgb(51,102,204)","rgb(51,102,255)","rgb(51,153,0)","rgb(51,153,51)","rgb(51,153,102)","rgb(51,153,153)","rgb(51,153,204)","rgb(51,153,255)","rgb(51,204,0)","rgb(51,204,51)","rgb(51,204,102)","rgb(51,204,153)","rgb(51,204,204)","rgb(51,204,255)","rgb(51,255,0)","rgb(51,255,51)","rgb(51,255,102)","rgb(51,255,153)","rgb(51,255,204)","rgb(51,255,255)","rgb(102,0,0)","rgb(102,0,51)","rgb(102,0,102)","rgb(102,0,153)","rgb(102,0,204)","rgb(102,0,255)","rgb(102,51,0)","rgb(102,51,51)","rgb(102,51,102)","rgb(102,51,153)","rgb(102,51,204)","rgb(102,51,255)","rgb(102,102,0)","rgb(102,102,51)","rgb(102,102,102)","rgb(102,102,153)","rgb(102,102,204)","rgb(102,102,255)","rgb(102,153,0)","rgb(102,153,51)","rgb(102,153,102)","rgb(102,153,153)","rgb(102,153,204)","rgb(102,153,255)","rgb(102,204,0)","rgb(102,204,51)","rgb(102,204,102)","rgb(102,204,153)","rgb(102,204,204)","rgb(102,204,255)","rgb(102,255,0)","rgb(102,255,51)","rgb(102,255,102)","rgb(102,255,153)","rgb(102,255,204)","rgb(102,255,255)","rgb(153,0,0)","rgb(153,0,51)","rgb(153,0,102)","rgb(153,0,153)","rgb(153,0,204)","rgb(153,0,255)","rgb(153,51,0)","rgb(153,51,51)","rgb(153,51,102)","rgb(153,51,153)","rgb(153,51,204)","rgb(153,51,255)","rgb(153,102,0)","rgb(153,102,51)","rgb(153,102,102)","rgb(153,102,153)","rgb(153,102,204)","rgb(153,102,255)","rgb(153,153,0)","rgb(153,153,51)","rgb(153,153,102)","rgb(153,153,153)","rgb(153,153,204)","rgb(153,153,255)","rgb(153,204,0)","rgb(153,204,51)","rgb(153,204,102)","rgb(153,204,153)","rgb(153,204,204)","rgb(153,204,255)","rgb(153,255,0)","rgb(153,255,51)","rgb(153,255,102)","rgb(153,255,153)","rgb(153,255,204)","rgb(153,255,255)","rgb(204,0,0)","rgb(204,0,51)","rgb(204,0,102)","rgb(204,0,153)","rgb(204,0,204)","rgb(204,0,255)","rgb(204,51,0)","rgb(204,51,51)","rgb(204,51,102)","rgb(204,51,153)","rgb(204,51,204)","rgb(204,51,255)","rgb(204,102,0)","rgb(204,102,51)","rgb(204,102,102)","rgb(204,102,153)","rgb(204,102,204)","rgb(204,102,255)","rgb(204,153,0)","rgb(204,153,51)","rgb(204,153,102)","rgb(204,153,153)","rgb(204,153,204)","rgb(204,153,255)","rgb(204,204,0)","rgb(204,204,51)","rgb(204,204,102)","rgb(204,204,153)","rgb(204,204,204)","rgb(204,204,255)","rgb(204,255,0)","rgb(204,255,51)","rgb(204,255,102)","rgb(204,255,153)","rgb(204,255,204)","rgb(204,255,255)","rgb(255,0,0)","rgb(255,0,51)","rgb(255,0,102)","rgb(255,0,153)","rgb(255,0,204)","rgb(255,0,255)","rgb(255,51,0)","rgb(255,51,51)","rgb(255,51,102)","rgb(255,51,153)","rgb(255,51,204)","rgb(255,51,255)","rgb(255,102,0)","rgb(255,102,51)","rgb(255,102,102)","rgb(255,102,153)","rgb(255,102,204)","rgb(255,102,255)","rgb(255,153,0)","rgb(255,153,51)","rgb(255,153,102)","rgb(255,153,153)","rgb(255,153,204)","rgb(255,153,255)","rgb(255,204,0)","rgb(255,204,51)","rgb(255,204,102)","rgb(255,204,153)","rgb(255,204,204)","rgb(255,204,255)","rgb(255,255,0)","rgb(255,255,51)","rgb(255,255,102)","rgb(255,255,153)","rgb(255,255,204)","rgb(255,255,255)"];function t$9(e){return(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function o$9(e,A=[0,0,0,1]){var t,n;return null!==(n=null===(t=e.match(/\d{1,3}/g))||void 0===t?void 0:t.map((e=>+e)))&&void 0!==n?n:A}const n$9=e=>{e.prototype.brightness=function({precision:e=4,percentage:A=!1}={}){const{r:t,g:n,b:i}=this.rgba(),a=+((.299*t+.587*n+.114*i)/255).toFixed(e);return A?100*a:a},e.prototype.luminance=function({precision:e=4,percentage:A=!1}={}){const{r:t,g:n,b:i}=this.rgba(),a=+(.2126*t$9(t)+.7152*t$9(n)+.0722*t$9(i)).toFixed(e);return A?100*a:a},e.prototype.contrast=function({bgColor:A="#fff",precision:t=4,ratio:n=!1}={}){const i=this.luminance(),a=(A instanceof e?A:new e(A)).luminance(),r=((Math.max(i,a)+.05)/(Math.min(i,a)+.05)).toFixed(t);return n?r+":1":+r},e.prototype.readableOn=function({bgColor:e="#fff",size:A="body",level:t="minimum"}={}){const n=this.contrast({bgColor:e});return"body"===A&&"enhanced"===t?n>=7:"large"===A&&"minimum"===t?n>=3:n>=4.5},e.prototype.equalTo=function(A="#fff"){const t=Object.values(this.rgba()),n=Object.values((A instanceof e?A:new e(A)).rgba());return t.toString()===n.toString()},e.prototype.isLight=function(){return this.brightness()>=.5},e.prototype.isDark=function(){return!this.isLight()},e.prototype.isCool=function(){const{h:e}=this.hsla();return 75<=e&&e<255},e.prototype.isWarm=function(){return!this.isCool()},e.prototype.isTinted=function(){return this.hsla().l>50},e.prototype.isShaded=function(){return this.hsla().l<50},e.prototype.isToned=function(){return this.hsla().s<100},e.prototype.isPureHue=function({reason:e=!0}={}){return this.isTinted()?!!e&&{pure:!1,reason:"tinted"}:this.isShaded()?!!e&&{pure:!1,reason:"shaded"}:this.isToned()?!!e&&{pure:!1,reason:"toned"}:!e||{pure:!0,reason:"N/A"}},e.prototype.closestCool=function(){const{h:e}=this.hsla();return this.isCool()?this:this.hueTo(e<75?75:254)},e.prototype.closestWarm=function(){const{h:e}=this.hsla();return this.isWarm()?this:this.hueTo(e<165?74:255)},e.prototype.closestPureHue=function(){const{h:A,a:t}=this.hsla(),{r:n,g:i,b:a,a:r}=function(e){const{h:A,s:t,l:n,a:i}=e,a=n/100,r=t/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(A/60%2-1)),l=a-s/2,c=A<60||300<=A&&A<360?s:120<=A&&A<240?0:o,d=240<=A&&A<360?0:60<=A&&A<180?s:o,h=A<120?0:180<=A&&A<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=i?i:1}}({h:A,s:100,l:50,a:t});return new e({r:n,g:i,b:a,a:r})},e.prototype.closestWebSafe=function(){const{r:A,g:t,b:n,a:i}=this.rgba();let[a,r,s]=new Array(3).fill(0),o=Number.POSITIVE_INFINITY,l={r:A,g:t,b:n,a:i};for(let e=0;e{for(var t in A)r$a.o(A,t)&&!r$a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},g={};r$a.d(g,{Z:()=>a$9});const e$9={maroon:"rgb(128,0,0)","dark red":"rgb(139,0,0)",brown:"rgb(165,42,42)",firebrick:"rgb(178,34,34)",crimson:"rgb(220,20,60)",red:"rgb(255,0,0)",tomato:"rgb(255,99,71)",coral:"rgb(255,127,80)","indian red":"rgb(205,92,92)","light coral":"rgb(240,128,128)","dark salmon":"rgb(233,150,122)",salmon:"rgb(250,128,114)","light salmon":"rgb(255,160,122)","orange red":"rgb(255,69,0)","dark orange":"rgb(255,140,0)",orange:"rgb(255,165,0)",gold:"rgb(255,215,0)","dark golden rod":"rgb(184,134,11)","golden rod":"rgb(218,165,32)","pale golden rod":"rgb(238,232,170)","dark khaki":"rgb(189,183,107)",khaki:"rgb(240,230,140)",olive:"rgb(128,128,0)",yellow:"rgb(255,255,0)","yellow green":"rgb(154,205,50)","dark olive green":"rgb(85,107,47)","olive drab":"rgb(107,142,35)","lawn green":"rgb(124,252,0)","chart reuse":"rgb(127,255,0)","green yellow":"rgb(173,255,47)","dark green":"rgb(0,100,0)",green:"rgb(0,128,0)","forest green":"rgb(34,139,34)",lime:"rgb(0,255,0)","lime green":"rgb(50,205,50)","light green":"rgb(144,238,144)","pale green":"rgb(152,251,152)","dark sea green":"rgb(143,188,143)","medium spring green":"rgb(0,250,154)","spring green":"rgb(0,255,127)","sea green":"rgb(46,139,87)","medium aqua marine":"rgb(102,205,170)","medium sea green":"rgb(60,179,113)","light sea green":"rgb(32,178,170)","dark slate gray":"rgb(47,79,79)",teal:"rgb(0,128,128)","dark cyan":"rgb(0,139,139)",cyan:"rgb(0,255,255)",aqua:"rgb(0,255,255)","light cyan":"rgb(224,255,255)","dark turquoise":"rgb(0,206,209)",turquoise:"rgb(64,224,208)","medium turquoise":"rgb(72,209,204)","pale turquoise":"rgb(175,238,238)","aqua marine":"rgb(127,255,212)","powder blue":"rgb(176,224,230)","cadet blue":"rgb(95,158,160)","steel blue":"rgb(70,130,180)","corn flower blue":"rgb(100,149,237)","deep sky blue":"rgb(0,191,255)","dodger blue":"rgb(30,144,255)","light blue":"rgb(173,216,230)","sky blue":"rgb(135,206,235)","light sky blue":"rgb(135,206,250)","midnight blue":"rgb(25,25,112)",navy:"rgb(0,0,128)","dark blue":"rgb(0,0,139)","medium blue":"rgb(0,0,205)",blue:"rgb(0,0,255)","royal blue":"rgb(65,105,225)","blue violet":"rgb(138,43,226)",indigo:"rgb(75,0,130)","dark slate blue":"rgb(72,61,139)","slate blue":"rgb(106,90,205)","medium slate blue":"rgb(123,104,238)","medium purple":"rgb(147,112,219)","dark magenta":"rgb(139,0,139)","dark violet":"rgb(148,0,211)","dark orchid":"rgb(153,50,204)","medium orchid":"rgb(186,85,211)",purple:"rgb(128,0,128)",thistle:"rgb(216,191,216)",plum:"rgb(221,160,221)",violet:"rgb(238,130,238)",magenta:"rgb(255,0,255)",fuchsia:"rgb(255,0,255)",orchid:"rgb(218,112,214)","medium violet red":"rgb(199,21,133)","pale violet red":"rgb(219,112,147)","deep pink":"rgb(255,20,147)","hot pink":"rgb(255,105,180)","light pink":"rgb(255,182,193)",pink:"rgb(255,192,203)","antique white":"rgb(250,235,215)",beige:"rgb(245,245,220)",bisque:"rgb(255,228,196)","blanched almond":"rgb(255,235,205)",wheat:"rgb(245,222,179)","corn silk":"rgb(255,248,220)","lemon chiffon":"rgb(255,250,205)","light golden rod yellow":"rgb(250,250,210)","light yellow":"rgb(255,255,224)","saddle brown":"rgb(139,69,19)",sienna:"rgb(160,82,45)",chocolate:"rgb(210,105,30)",peru:"rgb(205,133,63)","sandy brown":"rgb(244,164,96)","burly wood":"rgb(222,184,135)",tan:"rgb(210,180,140)","rosy brown":"rgb(188,143,143)",moccasin:"rgb(255,228,181)","navajo white":"rgb(255,222,173)","peach puff":"rgb(255,218,185)","misty rose":"rgb(255,228,225)","lavender blush":"rgb(255,240,245)",linen:"rgb(250,240,230)","old lace":"rgb(253,245,230)","papaya whip":"rgb(255,239,213)","sea shell":"rgb(255,245,238)","mint cream":"rgb(245,255,250)","slate gray":"rgb(112,128,144)","light slate gray":"rgb(119,136,153)","light steel blue":"rgb(176,196,222)",lavender:"rgb(230,230,250)","floral white":"rgb(255,250,240)","alice blue":"rgb(240,248,255)","ghost white":"rgb(248,248,255)",honeydew:"rgb(240,255,240)",ivory:"rgb(255,255,240)",azure:"rgb(240,255,255)",snow:"rgb(255,250,250)",black:"rgb(0,0,0)","dim gray":"rgb(105,105,105)","dim grey":"rgb(105,105,105)",gray:"rgb(128,128,128)",grey:"rgb(128,128,128)","dark gray":"rgb(169,169,169)","dark grey":"rgb(169,169,169)",silver:"rgb(192,192,192)","light gray":"rgb(211,211,211)","light grey":"rgb(211,211,211)",gainsboro:"rgb(220,220,220)",gainsborough:"rgb(220,220,220)","white smoke":"rgb(245,245,245)",white:"rgb(255,255,255)",transparent:"rgba(0,0,0,0)"};function b$2(e,A=[0,0,0,1]){var t,n;return null!==(n=null===(t=e.match(/\d{1,3}/g))||void 0===t?void 0:t.map((e=>+e)))&&void 0!==n?n:A}const a$9=e=>{e.prototype.name=function({exact:e=!0}={}){const{r:A,g:t,b:n,a:i}=this.rgba();if(0===i)return"transparent";const[a,r]=[Object.keys(e$9),Object.values(e$9)];let s;if(e){const e=this.stringRGB({alpha:!1}).replace(/\s/g,"");s=a.find((A=>e$9[A]===e))}else{let e=Number.POSITIVE_INFINITY;for(let i=0;i{for(var t in A)t$8.o(A,t)&&!t$8.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},a$8={};t$8.d(a$8,{Z:()=>d$1});const n$8=6/29,r$9=Math.pow(n$8,3),o$8=Math.pow(29/3,3),e$8={x:.96422,y:1,z:.82521};function c$8(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function s$8(e,A,t){return Math.max(e,Math.min(A,t))}function u$6(e){const A=e%360;return A<0?A+360:A}function i$8(e){const{l:A,a:t,b:n}=function(e){const A=Object.values(function(e){const[A,t,n]=c$8([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,n]=c$8([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}({x:A,y:t,z:n,a:e.a})}(e)).map(((e,A)=>e/(100*Object.values(e$8)[A]))).map((e=>e>r$9?Math.cbrt(e):(o$8*e+16)/116));return{l:116*A[1]-16,a:500*(A[0]-A[1]),b:200*(A[1]-A[2]),alpha:e.a}}(e),i=180*Math.atan2(n,t)/Math.PI;return{l:A,c:Math.sqrt(Math.pow(t,2)+Math.pow(n,2)),h:u$6(i),a:e.a}}function h$2(e){const{l:A,c:t,h:n}=e;return function(e){const{l:A,a:t,b:n}=e,i=(A+16)/116,a=i+t/500,r=i-n/200,s=Object.values(e$8),[o,l,c]=[a,i,r].map(((e,A)=>(e>n$8?Math.pow(e,3):3*Math.pow(n$8,2)*(e-4/29))*s[A]*100));return function(e){const[A,t,n]=Object.values(function(e){const[A,t,n]=c$8([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}(e)).map((e=>e/100)),[i,a,r]=c$8([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,n]).map((e=>{return s$8(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:i,g:a,b:r,a:e.a}}({x:o,y:l,z:c,a:e.alpha})}({l:A,a:t*Math.cos(n*Math.PI/180),b:t*Math.sin(n*Math.PI/180),alpha:e.a})}const l$2=/lcha?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function p$1({l:e,c:A,h:t,a:n}){return[h$2({l:s$8(0,e,100),c:s$8(0,A,230),h:u$6(t),a:(i=n,void 0!==i?s$8(0,i,1):1)}),"lch"];var i}function f$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:A,c:t,h:n}=e;return void 0!==A&&void 0!==t&&void 0!==n}(e))return p$1(e);if("string"==typeof e){l$2.lastIndex=0;const A=l$2.exec(e);if(A){const[e,t,n,i]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(0===A?1:1===A?2.3:2===A?3.59:.01):+e));return p$1({l:e,c:t,h:n,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d$1=e=>{e.prototype.lcha=function(){return i$8(this.rgba())},e.prototype.stringLCH=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,n,i,a]=Object.values(this.lcha()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`lcha(${t}%, ${n}, ${i}, ${a})`:`lch(${t}%, ${n}, ${i})`},e.Parsers.push(f$1)};var b$1=a$8.Z,t$7={d:(e,A)=>{for(var t in A)t$7.o(A,t)&&!t$7.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n$7={};t$7.d(n$7,{Z:()=>l$1});const r$8=Math.pow(6/29,3),e$7=Math.pow(29/3,3);function o$7(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function a$7(e,A,t){return Math.max(e,Math.min(A,t))}function u$5(e){const{l:A,u:t,v:n}=e,i=A>e$7*r$8?Math.pow((A+16)/116,3):A/e$7,a=(52*A/(t&&A?t+13*A*.20916005282038627:1)-1)/3,r=-5*i,s=i*(39*A/(n&&A?n+13*A*(9/18.43985):1)-5),o=a===-1/3?s-r:(s-r)/(a- -1/3);return function(e){const[A,t,n]=Object.values(function(e){const[A,t,n]=o$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}(e)).map((e=>e/100)),[i,a,r]=o$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,n]).map((e=>{return a$7(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:i,g:a,b:r,a:e.a}}({x:100*o,y:100*i,z:100*(a*o+r),a:e.a})}const c$7=/color\s*\(\s*luva?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$7({l:e,u:A,v:t,a:n}){return[u$5({l:a$7(0,e,100),u:a$7(-100,A,100),v:a$7(-100,t,100),a:(i=n,void 0!==i?a$7(0,i,1):1)}),"luv"];var i}function i$7(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:A,u:t,v:n}=e;return void 0!==A&&void 0!==t&&null!=n}(e))return s$7(e);if("string"==typeof e){c$7.lastIndex=0;const A=c$7.exec(e);if(A){const[e,t,n,i]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(A<3?1:.01):+e));return s$7({l:e,u:t,v:n,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const l$1=e=>{e.prototype.luva=function(){return function(e){const[A,t,n]=Object.values(function(e){const[A,t,n]=o$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,n]=o$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}({x:A,y:t,z:n,a:e.a})}(e)).map((e=>e/100)),i=t/1,a=A&&t&&n?A+15*t+3*n:19,r=4*A/a,s=9*t/a;let o=i>r$8?116*Math.cbrt(i)-16:e$7*i,l=13*o*(r-.20916005282038627),c=13*o*(s-.48807338454488514);return o===Number(-0)&&(o=0),l===Number(-0)&&(l=0),c===Number(-0)&&(c=0),{l:o,u:l,v:c,a:e.a}}(this.rgba())},e.prototype.stringLUV=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,n,i,a]=Object.values(this.luva()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`color(luva ${t}%, ${n}%, ${i}%, ${a})`:`color(luv ${t}%, ${n}%, ${i}%)`},e.Parsers.push(i$7)};var v=n$7.Z,t$6={d:(e,A)=>{for(var t in A)t$6.o(A,t)&&!t$6.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},a$6={};t$6.d(a$6,{Z:()=>d});const n$6=6/29,r$7=Math.pow(n$6,3),e$6=Math.pow(29/3,3),o$6={x:.96422,y:1,z:.82521};function c$6(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function s$6(e,A,t){return Math.max(e,Math.min(A,t))}function u$4(e){return void 0!==e?s$6(0,e,1):1}function i$6(e){const A=Object.values(function(e){const[A,t,n]=c$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,n]=c$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}({x:A,y:t,z:n,a:e.a})}(e)).map(((e,A)=>e/(100*Object.values(o$6)[A]))).map((e=>e>r$7?Math.cbrt(e):(e$6*e+16)/116));return{l:116*A[1]-16,a:500*(A[0]-A[1]),b:200*(A[1]-A[2]),alpha:e.a}}function l(e){const{l:A,a:t,b:n}=e,i=(A+16)/116,a=i+t/500,r=i-n/200,s=Object.values(o$6),[o,l,c]=[a,i,r].map(((e,A)=>(e>n$6?Math.pow(e,3):3*Math.pow(n$6,2)*(e-4/29))*s[A]*100));return function(e){const[A,t,n]=Object.values(function(e){const[A,t,n]=c$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}(e)).map((e=>e/100)),[i,a,r]=c$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,n]).map((e=>{return s$6(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:i,g:a,b:r,a:e.a}}({x:o,y:l,z:c,a:e.alpha})}const p=/laba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b({l:e,a:A,b:t,alpha:n}){return[l({l:s$6(0,e,100),a:s$6(-160,A,160),b:s$6(-160,t,160),alpha:u$4(n)}),"lab"]}function f(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:A,a:t,b:n}=e;return void 0!==A&&void 0!==t&&void 0!==n}(e))return b(e);if("string"==typeof e){p.lastIndex=0;const A=p.exec(e);if(A){const[e,t,n,i]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(A<3?1:.01):+e));return b({l:e,a:t,b:n,alpha:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d=e=>{e.prototype.laba=function(){return i$6(this.rgba())},e.prototype.stringLAB=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,n,i,a]=Object.values(this.laba()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`laba(${t}%, ${n}, ${i}, ${a})`:`lab(${t}%, ${n}, ${i})`},e.Parsers.push(f)};var h$1=a$6.Z,t$5={d:(e,A)=>{for(var t in A)t$5.o(A,t)&&!t$5.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n$5={};function r$6(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function o$5(e,A,t){return Math.max(e,Math.min(A,t))}function e$5(e){const{u:A,v:t,w:n}=e,[i,a,r]=r$6([[1.5,0,0],[0,1,0],[1.5,-3,2]],[A,t,n]);return function(e){const[A,t,n]=Object.values(function(e){const[A,t,n]=r$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}(e)).map((e=>e/100)),[i,a,r]=r$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,n]).map((e=>{return o$5(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:i,g:a,b:r,a:e.a}}({x:i,y:a,z:r,a:e.a})}t$5.d(n$5,{Z:()=>s$5});const a$5=/color\s*\(\s*uvwa?\s*(\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function u$3({u:e,v:A,w:t,a:n}){return[e$5({u:o$5(0,e,200/3*.96422),v:o$5(0,A,100),w:o$5(-48.211,t,191.2605),a:(i=n,void 0!==i?o$5(0,i,1):1)}),"uvw"];var i}function c$5(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{u:A,v:t,w:n}=e;return void 0!==A&&void 0!==t&&void 0!==n}(e))return u$3(e);if("string"==typeof e){a$5.lastIndex=0;const A=a$5.exec(e);if(A){const[e,t,n,i]=A.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return u$3({u:e,v:t,w:n,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const s$5=e=>{e.prototype.uvwa=function(){return function(e){const{x:A,y:t,z:n}=function(e){const[A,t,n]=r$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,n]=r$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}({x:A,y:t,z:n,a:e.a})}(e),[i,a,r]=r$6([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[A,t,n]);return{u:i,v:a,w:r,a:e.a}}(this.rgba())},e.prototype.stringUVW=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,n,i,a]=Object.values(this.uvwa()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`color(uvwa ${t}, ${n}, ${i}, ${a})`:`color(uvw ${t}, ${n}, ${i})`},e.Parsers.push(c$5)};var i$5=n$5.Z,t$4={d:(e,A)=>{for(var t in A)t$4.o(A,t)&&!t$4.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n$4={};function r$5(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function o$4(e,A,t){return Math.max(e,Math.min(A,t))}function e$4(e){const[A,t,n]=Object.values(function(e){const[A,t,n]=r$5([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}(e)).map((e=>e/100)),[i,a,r]=r$5([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,n]).map((e=>{return o$4(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:i,g:a,b:r,a:e.a}}t$4.d(n$4,{Z:()=>u$2});const a$4=/color\s*\(\s*xyza?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$4({x:e,y:A,z:t,a:n}){return[e$4({x:o$4(0,e,96.422),y:o$4(0,A,100),z:o$4(0,t,82.521),a:(i=n,void 0!==i?o$4(0,i,1):1)}),"xyz"];var i}function c$4(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{x:A,y:t,z:n}=e;return void 0!==A&&void 0!==t&&void 0!==n}(e))return s$4(e);if("string"==typeof e){a$4.lastIndex=0;const A=a$4.exec(e);if(A){const[e,t,n,i]=A.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return s$4({x:e,y:t,z:n,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$2=e=>{e.prototype.xyza=function(){return function(e){const[A,t,n]=r$5([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,n]=r$5([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:n,a:e.a}}({x:A,y:t,z:n,a:e.a})}(this.rgba())},e.prototype.stringXYZ=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,n,i,a]=Object.values(this.xyza()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`color(xyza ${t}, ${n}, ${i}, ${a})`:`color(xyz ${t}, ${n}, ${i})`},e.Parsers.push(c$4)};var i$4=n$4.Z,t$3={d:(e,A)=>{for(var t in A)t$3.o(A,t)&&!t$3.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n$3={};function r$4(e,A,t){return Math.max(e,Math.min(A,t))}function a$3(e){const A=e%360;return A<0?A+360:A}function o$3(e){const{h:A,a:t}=function(e){var A;const{Cmin:t,Cmax:n,H:i,delta:a}=function(e){const[A,t,n]=Object.values(e).map((e=>e/255)),i=Math.max(A,t,n),a=Math.min(A,t,n),r=i-a;return{Cmin:a,Cmax:i,H:0===r?0:i===A?(t-n)/r%6:i===t?(n-A)/r+2:(A-t)/r+4,delta:r}}(e),r=(n+t)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$3(60*i),s:100*s,l:100*r,a:null!==(A=e.a)&&void 0!==A?A:1}}(e),{r:n,g:i,b:a}=e;return{h:A,w:Math.min(n,i,a)/2.55,b:100*(1-Math.max(n,i,a)/255),a:t}}function e$3(e){const{h:A,b:t,w:n,a:i}=e;return function(e){const{h:A,s:t,v:n,a:i}=e,a=n/100,r=a*(t/100),s=r*(1-Math.abs(A/60%2-1)),o=a-r,l=A<60||300<=A&&A<360?r:120<=A&&A<240?0:s,c=240<=A&&A<360?0:60<=A&&A<180?r:s,d=A<120?0:180<=A&&A<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=i?i:1}}({h:A,s:100===t?0:100-n/(100-t)*100,v:100-t,a:i})}t$3.d(n$3,{Z:()=>u$1});const s$3=/hwba?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function i$3({h:e,w:A,b:t,a:n}){return[e$3({h:a$3(e),w:r$4(0,A,100),b:r$4(0,t,100),a:(i=n,void 0!==i?r$4(0,i,1):1)}),"hwb"];var i}function c$3(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:A,w:t,b:n}=e;return void 0!==A&&void 0!==t&&void 0!==n}(e))return i$3(e);if("string"==typeof e){s$3.lastIndex=0;const A=s$3.exec(e);if(A){const[e,t,n,i]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(0===A?3.59:A<3?1:.01):+e));return i$3({h:e,w:t,b:n,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$1=e=>{e.prototype.hwba=function(){return o$3(this.rgba())},e.prototype.stringHWB=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,n,i,a]=Object.values(this.hwba()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`hwba(${a$3(t)}, ${n}%, ${i}%, ${a})`:`hwb(${a$3(t)}, ${n}%, ${i}%)`},e.Parsers.push(c$3)};var h=n$3.Z,t$2={d:(e,A)=>{for(var t in A)t$2.o(A,t)&&!t$2.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n$2={};function r$3(e,A,t){return Math.max(e,Math.min(A,t))}function s$2(e){const A=e%360;return A<0?A+360:A}function e$2(e){const{h:A,s:t,v:n,a:i}=e,a=n/100,r=a*(t/100),s=r*(1-Math.abs(A/60%2-1)),o=a-r,l=A<60||300<=A&&A<360?r:120<=A&&A<240?0:s,c=240<=A&&A<360?0:60<=A&&A<180?r:s,d=A<120?0:180<=A&&A<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=i?i:1}}t$2.d(n$2,{Z:()=>c$2});const a$2=/hsva?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o$2({h:e,s:A,v:t,a:n}){return[e$2({h:s$2(e),s:r$3(0,A,100),v:r$3(0,t,100),a:(i=n,void 0!==i?r$3(0,i,1):1)}),"hsv"];var i}function i$2(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:A,s:t,v:n}=e;return void 0!==A&&void 0!==t&&void 0!==n}(e))return o$2(e);if("string"==typeof e){a$2.lastIndex=0;const A=a$2.exec(e);if(A){const[e,t,n,i]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(0===A?3.59:A<3?1:.01):+e));return o$2({h:e,s:t,v:n,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const c$2=e=>{e.prototype.hsva=function(){return function(e){var A;const{Cmax:t,H:n,delta:i}=function(e){const[A,t,n]=Object.values(e).map((e=>e/255)),i=Math.max(A,t,n),a=Math.min(A,t,n),r=i-a;return{Cmin:a,Cmax:i,H:0===r?0:i===A?(t-n)/r%6:i===t?(n-A)/r+2:(A-t)/r+4,delta:r}}(e),a=0===i?0:i/t;return{h:s$2(60*n),s:100*a,v:100*t,a:null!==(A=e.a)&&void 0!==A?A:1}}(this.rgba())},e.prototype.stringHSV=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,n,i,a]=Object.values(this.hsva()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`hsva(${s$2(t)}, ${n}%, ${i}%, ${a})`:`hsv(${s$2(t)}, ${n}%, ${i}%)`},e.Parsers.push(i$2)};var u=n$2.Z,t$1={d:(e,A)=>{for(var t in A)t$1.o(A,t)&&!t$1.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},r$2={};function n$1(e,A,t){return Math.max(e,Math.min(A,t))}function o$1(e){let{r:A,y:t,b:n}=e;const i=Math.min(A,t,n);[A,t,n]=[A,t,n].map((e=>e-i));const a=Math.max(A,t,n);let r=Math.min(t,n);t-=r,n-=r,n&&r&&(n*=2,r*=2),A+=t,r+=t;const s=Math.max(A,r,n);if(s){const e=a/s;[A,r,n]=[A,r,n].map((A=>A*e))}return[A,r,n]=[A,r,n].map((e=>e+i)),{r:A,g:r,b:n,a:e.a}}t$1.d(r$2,{Z:()=>i$1});const a$1=/color\s*\(\s*ryba?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function e$1({r:e,y:A,b:t,a:n}){return[o$1({r:n$1(0,e,255),y:n$1(0,A,255),b:n$1(0,t,255),a:(i=n,void 0!==i?n$1(0,i,1):1)}),"ryb"];var i}function s$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:A,y:t,b:n}=e;return void 0!==A&&void 0!==t&&void 0!==n}(e))return e$1(e);if("string"==typeof e){a$1.lastIndex=0;const A=a$1.exec(e);if(A){const[e,t,n,i]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(A<3?2.55:.01):+e));return e$1({r:e,y:t,b:n,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i$1=e=>{e.prototype.ryba=function(){return function(e){let{r:A,g:t,b:n}=e;const i=Math.min(A,t,n);[A,t,n]=[A,t,n].map((e=>e-i));const a=Math.max(A,t,n);let r=Math.min(A,t);A-=r,t-=r,n&&t&&(n/=2,t/=2),r+=t,n+=t;const s=Math.max(A,r,n);if(s){const e=a/s;[A,r,n]=[A,r,n].map((A=>A*e))}return[A,r,n]=[A,r,n].map((e=>e+i)),{r:A,y:r,b:n,a:e.a}}(this.rgba())},e.prototype.stringRYB=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,n,i,a]=Object.values(this.ryba()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`color(ryba ${t}, ${n}, ${i}, ${a})`:`color(ryb ${t}, ${n}, ${i})`},e.Parsers.push(s$1)};var c$1=r$2.Z,t={d:(e,A)=>{for(var n in A)t.o(A,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:A[n]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n={};function e(e,A,t){return Math.max(e,Math.min(A,t))}function r$1(e){const{c:A,m:t,y:n,k:i,a:a}=e,[r,s,o]=[A,t,n].map((e=>255*(1-e/100)*(1-i/100)));return{r:r,g:s,b:o,a:a}}t.d(n,{Z:()=>i});const c=/device-cmyka?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?),?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o({c:A,m:t,y:n,k:i,a:a}){return[r$1({c:e(0,A,100),m:e(0,t,100),y:e(0,n,100),k:e(0,i,100),a:(r=a,void 0!==r?e(0,r,1):1)}),"cmyk"];var r}function a(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{c:A,m:t,y:n,k:i}=e;return void 0!==A&&void 0!==t&&void 0!==n&&void 0!==i}(e))return o(e);if("string"==typeof e){c.lastIndex=0;const A=c.exec(e);if(A){const[e,t,n,i,a]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(A<4?1:.01):+e));return o({c:e,m:t,y:n,k:i,a:a})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i=e=>{e.prototype.cmyka=function(){return function(e){const{r:A,g:t,b:n,a:i}=e,a=1-Math.max(A,t,n)/255,[r,s,o]=1===a?[0,0,0]:[A,t,n].map((e=>100*(1-e/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:i}}(this.rgba())},e.prototype.stringCMYK=function({alpha:e=!0,precision:A=[0,0,0,0,1]}={}){const[t,n,i,a,r]=Object.values(this.cmyka()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`device-cmyk(${t}, ${n}, ${i}, ${a}, ${r})`:`device-cmyk(${t}, ${n}, ${i}, ${a})`},e.Parsers.push(a)};var s=n.Z;class ExcalidrawScene{constructor(e=[]){this.type="excalidraw",this.version=2,this.source="https://excalidraw.com",this.elements=[],this.elements=e}toExJSON(){return Object.assign(Object.assign({},this),{elements:this.elements.map((e=>Object.assign({},e)))})}}var ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array;function create$1(){var e=new ARRAY_TYPE(16);return ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function clone(e){var A=new ARRAY_TYPE(16);return A[0]=e[0],A[1]=e[1],A[2]=e[2],A[3]=e[3],A[4]=e[4],A[5]=e[5],A[6]=e[6],A[7]=e[7],A[8]=e[8],A[9]=e[9],A[10]=e[10],A[11]=e[11],A[12]=e[12],A[13]=e[13],A[14]=e[14],A[15]=e[15],A}function fromValues$1(e,A,t,n,i,a,r,s,o,l,c,d,h,u,g,p){var m=new ARRAY_TYPE(16);return m[0]=e,m[1]=A,m[2]=t,m[3]=n,m[4]=i,m[5]=a,m[6]=r,m[7]=s,m[8]=o,m[9]=l,m[10]=c,m[11]=d,m[12]=h,m[13]=u,m[14]=g,m[15]=p,m}function multiply(e,A,t){var n=A[0],i=A[1],a=A[2],r=A[3],s=A[4],o=A[5],l=A[6],c=A[7],d=A[8],h=A[9],u=A[10],g=A[11],p=A[12],m=A[13],w=A[14],f=A[15],B=t[0],E=t[1],b=t[2],C=t[3];return e[0]=B*n+E*s+b*d+C*p,e[1]=B*i+E*o+b*h+C*m,e[2]=B*a+E*l+b*u+C*w,e[3]=B*r+E*c+b*g+C*f,B=t[4],E=t[5],b=t[6],C=t[7],e[4]=B*n+E*s+b*d+C*p,e[5]=B*i+E*o+b*h+C*m,e[6]=B*a+E*l+b*u+C*w,e[7]=B*r+E*c+b*g+C*f,B=t[8],E=t[9],b=t[10],C=t[11],e[8]=B*n+E*s+b*d+C*p,e[9]=B*i+E*o+b*h+C*m,e[10]=B*a+E*l+b*u+C*w,e[11]=B*r+E*c+b*g+C*f,B=t[12],E=t[13],b=t[14],C=t[15],e[12]=B*n+E*s+b*d+C*p,e[13]=B*i+E*o+b*h+C*m,e[14]=B*a+E*l+b*u+C*w,e[15]=B*r+E*c+b*g+C*f,e}function create(){var e=new ARRAY_TYPE(3);return ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function fromValues(e,A,t){var n=new ARRAY_TYPE(3);return n[0]=e,n[1]=A,n[2]=t,n}function transformMat4(e,A,t){var n=A[0],i=A[1],a=A[2],r=t[3]*n+t[7]*i+t[11]*a+t[15];return r=r||1,e[0]=(t[0]*n+t[4]*i+t[8]*a+t[12])/r,e[1]=(t[1]*n+t[5]*i+t[9]*a+t[13])/r,e[2]=(t[2]*n+t[6]*i+t[10]*a+t[14])/r,e}Math.hypot||(Math.hypot=function(){for(var e=0,A=arguments.length;A--;)e+=arguments[A]*arguments[A];return Math.sqrt(e)}),create();const random=new Random(Date.now()),randomInteger=()=>Math.floor(random.next()*2**31),randomId=()=>nanoid$1();function dimensionsFromPoints(e){const A=e.map((([e])=>e)),t=e.map((([,e])=>e)),n=Math.min(...A),i=Math.min(...t);return[Math.max(...A)-n,Math.max(...t)-i]}function getWindingOrder(e){return e.reduce(((e,[A,t],n,i)=>{const a=i[n+1];return((a?a[0]:0)-A)*((a?a[1]:0)+t)+e}),0)>0?"clockwise":"counterclockwise"}var chromaExports={},chroma$1={get exports(){return chromaExports},set exports(e){chromaExports=e}};chroma$1.exports=function(){for(var e=function(e,A,t){return void 0===A&&(A=0),void 0===t&&(t=1),et?t:e},A=e,t={},n=0,i=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n255)&&(e._clipped=!0),e[t]=A(e[t],0,255)):3===t&&(e[t]=A(e[t],0,1));return e},limit:e,type:r,unpack:function(e,A){return void 0===A&&(A=null),e.length>=3?Array.prototype.slice.call(e):"object"==s(e[0])&&A?A.split("").filter((function(A){return void 0!==e[0][A]})).map((function(A){return e[0][A]})):e[0]},last:function(e){if(e.length<2)return null;var A=e.length-1;return"string"==o(e[A])?e[A].toLowerCase():null},PI:l,TWOPI:2*l,PITHIRD:l/3,DEG2RAD:l/180,RAD2DEG:180/l},d={format:{},autodetect:[]},h=c.last,u=c.clip_rgb,g=c.type,p=d,m=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=this;if("object"===g(e[0])&&e[0].constructor&&e[0].constructor===this.constructor)return e[0];var n=h(e),i=!1;if(!n){i=!0,p.sorted||(p.autodetect=p.autodetect.sort((function(e,A){return A.p-e.p})),p.sorted=!0);for(var a=0,r=p.autodetect;a4?e[4]:1;return 1===a?[0,0,0,r]:[t>=1?0:255*(1-t)*(1-a),n>=1?0:255*(1-n)*(1-a),i>=1?0:255*(1-i)*(1-a),r]},F=B,x=w,T=d,S=c.unpack,Q=c.type,I=C;x.prototype.cmyk=function(){return I(this._rgb)},F.cmyk=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(x,[null].concat(e,["cmyk"])))},T.format.cmyk=y,T.autodetect.push({p:2,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=S(e,"cmyk"),"array"===Q(e)&&4===e.length)return"cmyk"}});var U=c.unpack,k=c.last,M=function(e){return Math.round(100*e)/100},L=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=U(e,"hsla"),n=k(e)||"lsa";return t[0]=M(t[0]||0),t[1]=M(100*t[1])+"%",t[2]=M(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},O=c.unpack,N=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=(e=O(e,"rgba"))[0],n=e[1],i=e[2];t/=255,n/=255,i/=255;var a,r,s=Math.min(t,n,i),o=Math.max(t,n,i),l=(o+s)/2;return o===s?(a=0,r=Number.NaN):a=l<.5?(o-s)/(o+s):(o-s)/(2-o-s),t==o?r=(n-i)/(o-s):n==o?r=2+(i-t)/(o-s):i==o&&(r=4+(t-n)/(o-s)),(r*=60)<0&&(r+=360),e.length>3&&void 0!==e[3]?[r,a,l,e[3]]:[r,a,l]},D=c.unpack,H=c.last,R=L,P=N,V=Math.round,K=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=D(e,"rgba"),n=H(e)||"rgb";return"hsl"==n.substr(0,3)?R(P(t),n):(t[0]=V(t[0]),t[1]=V(t[1]),t[2]=V(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},G=c.unpack,W=Math.round,X=function(){for(var e,A=[],t=arguments.length;t--;)A[t]=arguments[t];var n,i,a,r=(A=G(A,"hsl"))[0],s=A[1],o=A[2];if(0===s)n=i=a=255*o;else{var l=[0,0,0],c=[0,0,0],d=o<.5?o*(1+s):o+s-o*s,h=2*o-d,u=r/360;l[0]=u+1/3,l[1]=u,l[2]=u-1/3;for(var g=0;g<3;g++)l[g]<0&&(l[g]+=1),l[g]>1&&(l[g]-=1),6*l[g]<1?c[g]=h+6*(d-h)*l[g]:2*l[g]<1?c[g]=d:3*l[g]<2?c[g]=h+(d-h)*(2/3-l[g])*6:c[g]=h;n=(e=[W(255*c[0]),W(255*c[1]),W(255*c[2])])[0],i=e[1],a=e[2]}return A.length>3?[n,i,a,A[3]]:[n,i,a,1]},z=X,Y=d,j=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,J=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,Z=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,q=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,_=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,$=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ee=Math.round,Ae=function(e){var A;if(e=e.toLowerCase().trim(),Y.format.named)try{return Y.format.named(e)}catch(e){}if(A=e.match(j)){for(var t=A.slice(1,4),n=0;n<3;n++)t[n]=+t[n];return t[3]=1,t}if(A=e.match(J)){for(var i=A.slice(1,5),a=0;a<4;a++)i[a]=+i[a];return i}if(A=e.match(Z)){for(var r=A.slice(1,4),s=0;s<3;s++)r[s]=ee(2.55*r[s]);return r[3]=1,r}if(A=e.match(q)){for(var o=A.slice(1,5),l=0;l<3;l++)o[l]=ee(2.55*o[l]);return o[3]=+o[3],o}if(A=e.match(_)){var c=A.slice(1,4);c[1]*=.01,c[2]*=.01;var d=z(c);return d[3]=1,d}if(A=e.match($)){var h=A.slice(1,4);h[1]*=.01,h[2]*=.01;var u=z(h);return u[3]=+A[4],u}};Ae.test=function(e){return j.test(e)||J.test(e)||Z.test(e)||q.test(e)||_.test(e)||$.test(e)};var te=B,ne=w,ie=d,ae=c.type,re=K,se=Ae;ne.prototype.css=function(e){return re(this._rgb,e)},te.css=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(ne,[null].concat(e,["css"])))},ie.format.css=se,ie.autodetect.push({p:5,test:function(e){for(var A=[],t=arguments.length-1;t-- >0;)A[t]=arguments[t+1];if(!A.length&&"string"===ae(e)&&se.test(e))return"css"}});var oe=w,le=B,ce=c.unpack;d.format.gl=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=ce(e,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},le.gl=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(oe,[null].concat(e,["gl"])))},oe.prototype.gl=function(){var e=this._rgb;return[e[0]/255,e[1]/255,e[2]/255,e[3]]};var de=c.unpack,he=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t,n=de(e,"rgb"),i=n[0],a=n[1],r=n[2],s=Math.min(i,a,r),o=Math.max(i,a,r),l=o-s,c=100*l/255,d=s/(255-l)*100;return 0===l?t=Number.NaN:(i===o&&(t=(a-r)/l),a===o&&(t=2+(r-i)/l),r===o&&(t=4+(i-a)/l),(t*=60)<0&&(t+=360)),[t,c,d]},ue=c.unpack,ge=Math.floor,pe=function(){for(var e,A,t,n,i,a,r=[],s=arguments.length;s--;)r[s]=arguments[s];var o,l,c,d=(r=ue(r,"hcg"))[0],h=r[1],u=r[2];u*=255;var g=255*h;if(0===h)o=l=c=u;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=ge(d/=60),m=d-p,w=u*(1-h),f=w+g*(1-m),B=w+g*m,E=w+g;switch(p){case 0:o=(e=[E,B,w])[0],l=e[1],c=e[2];break;case 1:o=(A=[f,E,w])[0],l=A[1],c=A[2];break;case 2:o=(t=[w,E,B])[0],l=t[1],c=t[2];break;case 3:o=(n=[w,f,E])[0],l=n[1],c=n[2];break;case 4:o=(i=[B,w,E])[0],l=i[1],c=i[2];break;case 5:o=(a=[E,w,f])[0],l=a[1],c=a[2]}}return[o,l,c,r.length>3?r[3]:1]},me=c.unpack,we=c.type,fe=B,Be=w,Ee=d,be=he;Be.prototype.hcg=function(){return be(this._rgb)},fe.hcg=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(Be,[null].concat(e,["hcg"])))},Ee.format.hcg=pe,Ee.autodetect.push({p:1,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=me(e,"hcg"),"array"===we(e)&&3===e.length)return"hcg"}});var Ce=c.unpack,ve=c.last,ye=Math.round,Fe=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=Ce(e,"rgba"),n=t[0],i=t[1],a=t[2],r=t[3],s=ve(e)||"auto";void 0===r&&(r=1),"auto"===s&&(s=r<1?"rgba":"rgb");var o="000000"+((n=ye(n))<<16|(i=ye(i))<<8|(a=ye(a))).toString(16);o=o.substr(o.length-6);var l="0"+ye(255*r).toString(16);switch(l=l.substr(l.length-2),s.toLowerCase()){case"rgba":return"#"+o+l;case"argb":return"#"+l+o;default:return"#"+o}},xe=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Te=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,Se=function(e){if(e.match(xe)){4!==e.length&&7!==e.length||(e=e.substr(1)),3===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]);var A=parseInt(e,16);return[A>>16,A>>8&255,255&A,1]}if(e.match(Te)){5!==e.length&&9!==e.length||(e=e.substr(1)),4===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);var t=parseInt(e,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex color: "+e)},Qe=B,Ie=w,Ue=c.type,ke=d,Me=Fe;Ie.prototype.hex=function(e){return Me(this._rgb,e)},Qe.hex=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(Ie,[null].concat(e,["hex"])))},ke.format.hex=Se,ke.autodetect.push({p:4,test:function(e){for(var A=[],t=arguments.length-1;t-- >0;)A[t]=arguments[t+1];if(!A.length&&"string"===Ue(e)&&[3,4,5,6,7,8,9].indexOf(e.length)>=0)return"hex"}});var Le=c.unpack,Oe=c.TWOPI,Ne=Math.min,De=Math.sqrt,He=Math.acos,Re=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t,n=Le(e,"rgb"),i=n[0],a=n[1],r=n[2],s=Ne(i/=255,a/=255,r/=255),o=(i+a+r)/3,l=o>0?1-s/o:0;return 0===l?t=NaN:(t=(i-a+(i-r))/2,t/=De((i-a)*(i-a)+(i-r)*(a-r)),t=He(t),r>a&&(t=Oe-t),t/=Oe),[360*t,l,o]},Pe=c.unpack,Ve=c.limit,Ke=c.TWOPI,Ge=c.PITHIRD,We=Math.cos,Xe=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t,n,i,a=(e=Pe(e,"hsi"))[0],r=e[1],s=e[2];return isNaN(a)&&(a=0),isNaN(r)&&(r=0),a>360&&(a-=360),a<0&&(a+=360),(a/=360)<1/3?n=1-((i=(1-r)/3)+(t=(1+r*We(Ke*a)/We(Ge-Ke*a))/3)):a<2/3?i=1-((t=(1-r)/3)+(n=(1+r*We(Ke*(a-=1/3))/We(Ge-Ke*a))/3)):t=1-((n=(1-r)/3)+(i=(1+r*We(Ke*(a-=2/3))/We(Ge-Ke*a))/3)),[255*(t=Ve(s*t*3)),255*(n=Ve(s*n*3)),255*(i=Ve(s*i*3)),e.length>3?e[3]:1]},ze=c.unpack,Ye=c.type,je=B,Je=w,Ze=d,qe=Re;Je.prototype.hsi=function(){return qe(this._rgb)},je.hsi=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(Je,[null].concat(e,["hsi"])))},Ze.format.hsi=Xe,Ze.autodetect.push({p:2,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=ze(e,"hsi"),"array"===Ye(e)&&3===e.length)return"hsi"}});var _e=c.unpack,$e=c.type,eA=B,AA=w,tA=d,nA=N;AA.prototype.hsl=function(){return nA(this._rgb)},eA.hsl=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(AA,[null].concat(e,["hsl"])))},tA.format.hsl=X,tA.autodetect.push({p:2,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=_e(e,"hsl"),"array"===$e(e)&&3===e.length)return"hsl"}});var iA=c.unpack,aA=Math.min,rA=Math.max,sA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t,n,i,a=(e=iA(e,"rgb"))[0],r=e[1],s=e[2],o=aA(a,r,s),l=rA(a,r,s),c=l-o;return i=l/255,0===l?(t=Number.NaN,n=0):(n=c/l,a===l&&(t=(r-s)/c),r===l&&(t=2+(s-a)/c),s===l&&(t=4+(a-r)/c),(t*=60)<0&&(t+=360)),[t,n,i]},oA=c.unpack,lA=Math.floor,cA=function(){for(var e,A,t,n,i,a,r=[],s=arguments.length;s--;)r[s]=arguments[s];var o,l,c,d=(r=oA(r,"hsv"))[0],h=r[1],u=r[2];if(u*=255,0===h)o=l=c=u;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var g=lA(d/=60),p=d-g,m=u*(1-h),w=u*(1-h*p),f=u*(1-h*(1-p));switch(g){case 0:o=(e=[u,f,m])[0],l=e[1],c=e[2];break;case 1:o=(A=[w,u,m])[0],l=A[1],c=A[2];break;case 2:o=(t=[m,u,f])[0],l=t[1],c=t[2];break;case 3:o=(n=[m,w,u])[0],l=n[1],c=n[2];break;case 4:o=(i=[f,m,u])[0],l=i[1],c=i[2];break;case 5:o=(a=[u,m,w])[0],l=a[1],c=a[2]}}return[o,l,c,r.length>3?r[3]:1]},dA=c.unpack,hA=c.type,uA=B,gA=w,pA=d,mA=sA;gA.prototype.hsv=function(){return mA(this._rgb)},uA.hsv=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(gA,[null].concat(e,["hsv"])))},pA.format.hsv=cA,pA.autodetect.push({p:2,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=dA(e,"hsv"),"array"===hA(e)&&3===e.length)return"hsv"}});var wA={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},fA=wA,BA=c.unpack,EA=Math.pow,bA=function(e){return(e/=255)<=.04045?e/12.92:EA((e+.055)/1.055,2.4)},CA=function(e){return e>fA.t3?EA(e,1/3):e/fA.t2+fA.t0},vA=function(e,A,t){return e=bA(e),A=bA(A),t=bA(t),[CA((.4124564*e+.3575761*A+.1804375*t)/fA.Xn),CA((.2126729*e+.7151522*A+.072175*t)/fA.Yn),CA((.0193339*e+.119192*A+.9503041*t)/fA.Zn)]},yA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=BA(e,"rgb"),n=t[0],i=t[1],a=t[2],r=vA(n,i,a),s=r[0],o=r[1],l=116*o-16;return[l<0?0:l,500*(s-o),200*(o-r[2])]},FA=wA,xA=c.unpack,TA=Math.pow,SA=function(e){return 255*(e<=.00304?12.92*e:1.055*TA(e,1/2.4)-.055)},QA=function(e){return e>FA.t1?e*e*e:FA.t2*(e-FA.t0)},IA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t,n,i,a=(e=xA(e,"lab"))[0],r=e[1],s=e[2];return n=(a+16)/116,t=isNaN(r)?n:n+r/500,i=isNaN(s)?n:n-s/200,n=FA.Yn*QA(n),t=FA.Xn*QA(t),i=FA.Zn*QA(i),[SA(3.2404542*t-1.5371385*n-.4985314*i),SA(-.969266*t+1.8760108*n+.041556*i),SA(.0556434*t-.2040259*n+1.0572252*i),e.length>3?e[3]:1]},UA=c.unpack,kA=c.type,MA=B,LA=w,OA=d,NA=yA;LA.prototype.lab=function(){return NA(this._rgb)},MA.lab=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(LA,[null].concat(e,["lab"])))},OA.format.lab=IA,OA.autodetect.push({p:2,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=UA(e,"lab"),"array"===kA(e)&&3===e.length)return"lab"}});var DA=c.unpack,HA=c.RAD2DEG,RA=Math.sqrt,PA=Math.atan2,VA=Math.round,KA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=DA(e,"lab"),n=t[0],i=t[1],a=t[2],r=RA(i*i+a*a),s=(PA(a,i)*HA+360)%360;return 0===VA(1e4*r)&&(s=Number.NaN),[n,r,s]},GA=c.unpack,WA=yA,XA=KA,zA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=GA(e,"rgb"),n=t[0],i=t[1],a=t[2],r=WA(n,i,a),s=r[0],o=r[1],l=r[2];return XA(s,o,l)},YA=c.unpack,jA=c.DEG2RAD,JA=Math.sin,ZA=Math.cos,qA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=YA(e,"lch"),n=t[0],i=t[1],a=t[2];return isNaN(a)&&(a=0),[n,ZA(a*=jA)*i,JA(a)*i]},_A=c.unpack,$A=qA,et=IA,At=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=(e=_A(e,"lch"))[0],n=e[1],i=e[2],a=$A(t,n,i),r=a[0],s=a[1],o=a[2],l=et(r,s,o);return[l[0],l[1],l[2],e.length>3?e[3]:1]},tt=c.unpack,nt=At,it=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=tt(e,"hcl").reverse();return nt.apply(void 0,t)},at=c.unpack,rt=c.type,st=B,ot=w,lt=d,ct=zA;ot.prototype.lch=function(){return ct(this._rgb)},ot.prototype.hcl=function(){return ct(this._rgb).reverse()},st.lch=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(ot,[null].concat(e,["lch"])))},st.hcl=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(ot,[null].concat(e,["hcl"])))},lt.format.lch=At,lt.format.hcl=it,["lch","hcl"].forEach((function(e){return lt.autodetect.push({p:2,test:function(){for(var A=[],t=arguments.length;t--;)A[t]=arguments[t];if(A=at(A,e),"array"===rt(A)&&3===A.length)return e}})}));var dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=d,ut=c.type,gt=dt,pt=Se,mt=Fe;w.prototype.name=function(){for(var e=mt(this._rgb,"rgb"),A=0,t=Object.keys(gt);A0;)A[t]=arguments[t+1];if(!A.length&&"string"===ut(e)&>[e.toLowerCase()])return"named"}});var wt=c.unpack,ft=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=wt(e,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]},Bt=c.type,Et=function(e){if("number"==Bt(e)&&e>=0&&e<=16777215)return[e>>16,e>>8&255,255&e,1];throw new Error("unknown num color: "+e)},bt=B,Ct=w,vt=d,yt=c.type,Ft=ft;Ct.prototype.num=function(){return Ft(this._rgb)},bt.num=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(Ct,[null].concat(e,["num"])))},vt.format.num=Et,vt.autodetect.push({p:5,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(1===e.length&&"number"===yt(e[0])&&e[0]>=0&&e[0]<=16777215)return"num"}});var xt=B,Tt=w,St=d,Qt=c.unpack,It=c.type,Ut=Math.round;Tt.prototype.rgb=function(e){return void 0===e&&(e=!0),!1===e?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Ut)},Tt.prototype.rgba=function(e){return void 0===e&&(e=!0),this._rgb.slice(0,4).map((function(A,t){return t<3?!1===e?A:Ut(A):A}))},xt.rgb=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(Tt,[null].concat(e,["rgb"])))},St.format.rgb=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=Qt(e,"rgba");return void 0===t[3]&&(t[3]=1),t},St.autodetect.push({p:3,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=Qt(e,"rgba"),"array"===It(e)&&(3===e.length||4===e.length&&"number"==It(e[3])&&e[3]>=0&&e[3]<=1))return"rgb"}});var kt=Math.log,Mt=function(e){var A,t,n,i=e/100;return i<66?(A=255,t=i<6?0:-155.25485562709179-.44596950469579133*(t=i-2)+104.49216199393888*kt(t),n=i<20?0:.8274096064007395*(n=i-10)-254.76935184120902+115.67994401066147*kt(n)):(A=351.97690566805693+.114206453784165*(A=i-55)-40.25366309332127*kt(A),t=325.4494125711974+.07943456536662342*(t=i-50)-28.0852963507957*kt(t),n=255),[A,t,n,1]},Lt=Mt,Ot=c.unpack,Nt=Math.round,Dt=B,Ht=w,Rt=d,Pt=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];for(var t,n=Ot(e,"rgb"),i=n[0],a=n[2],r=1e3,s=4e4,o=.4;s-r>o;){var l=Lt(t=.5*(s+r));l[2]/l[0]>=a/i?s=t:r=t}return Nt(t)};Ht.prototype.temp=Ht.prototype.kelvin=Ht.prototype.temperature=function(){return Pt(this._rgb)},Dt.temp=Dt.kelvin=Dt.temperature=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(Ht,[null].concat(e,["temp"])))},Rt.format.temp=Rt.format.kelvin=Rt.format.temperature=Mt;var Vt=c.unpack,Kt=Math.cbrt,Gt=Math.pow,Wt=Math.sign,Xt=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=Vt(e,"rgb"),n=t[0],i=t[1],a=t[2],r=[zt(n/255),zt(i/255),zt(a/255)],s=r[0],o=r[1],l=r[2],c=Kt(.4122214708*s+.5363325363*o+.0514459929*l),d=Kt(.2119034982*s+.6806995451*o+.1073969566*l),h=Kt(.0883024619*s+.2817188376*o+.6299787005*l);return[.2104542553*c+.793617785*d-.0040720468*h,1.9779984951*c-2.428592205*d+.4505937099*h,.0259040371*c+.7827717662*d-.808675766*h]};function zt(e){var A=Math.abs(e);return A<.04045?e/12.92:(Wt(e)||1)*Gt((A+.055)/1.055,2.4)}var Yt=c.unpack,jt=Math.pow,Jt=Math.sign,Zt=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=(e=Yt(e,"lab"))[0],n=e[1],i=e[2],a=jt(t+.3963377774*n+.2158037573*i,3),r=jt(t-.1055613458*n-.0638541728*i,3),s=jt(t-.0894841775*n-1.291485548*i,3);return[255*qt(4.0767416621*a-3.3077115913*r+.2309699292*s),255*qt(-1.2684380046*a+2.6097574011*r-.3413193965*s),255*qt(-.0041960863*a-.7034186147*r+1.707614701*s),e.length>3?e[3]:1]};function qt(e){var A=Math.abs(e);return A>.0031308?(Jt(e)||1)*(1.055*jt(A,1/2.4)-.055):12.92*e}var _t=c.unpack,$t=c.type,en=B,An=w,tn=d,nn=Xt;An.prototype.oklab=function(){return nn(this._rgb)},en.oklab=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(An,[null].concat(e,["oklab"])))},tn.format.oklab=Zt,tn.autodetect.push({p:3,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=_t(e,"oklab"),"array"===$t(e)&&3===e.length)return"oklab"}});var an=c.unpack,rn=Xt,sn=KA,on=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=an(e,"rgb"),n=t[0],i=t[1],a=t[2],r=rn(n,i,a),s=r[0],o=r[1],l=r[2];return sn(s,o,l)},ln=c.unpack,cn=qA,dn=Zt,hn=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=(e=ln(e,"lch"))[0],n=e[1],i=e[2],a=cn(t,n,i),r=a[0],s=a[1],o=a[2],l=dn(r,s,o);return[l[0],l[1],l[2],e.length>3?e[3]:1]},un=c.unpack,gn=c.type,pn=B,mn=w,wn=d,fn=on;mn.prototype.oklch=function(){return fn(this._rgb)},pn.oklch=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(mn,[null].concat(e,["oklch"])))},wn.format.oklch=hn,wn.autodetect.push({p:3,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=un(e,"oklch"),"array"===gn(e)&&3===e.length)return"oklch"}});var Bn=w,En=c.type;Bn.prototype.alpha=function(e,A){return void 0===A&&(A=!1),void 0!==e&&"number"===En(e)?A?(this._rgb[3]=e,this):new Bn([this._rgb[0],this._rgb[1],this._rgb[2],e],"rgb"):this._rgb[3]},w.prototype.clipped=function(){return this._rgb._clipped||!1};var bn=w,Cn=wA;bn.prototype.darken=function(e){void 0===e&&(e=1);var A=this.lab();return A[0]-=Cn.Kn*e,new bn(A,"lab").alpha(this.alpha(),!0)},bn.prototype.brighten=function(e){return void 0===e&&(e=1),this.darken(-e)},bn.prototype.darker=bn.prototype.darken,bn.prototype.brighter=bn.prototype.brighten,w.prototype.get=function(e){var A=e.split("."),t=A[0],n=A[1],i=this[t]();if(n){var a=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(a>-1)return i[a];throw new Error("unknown channel "+n+" in mode "+t)}return i};var vn=w,yn=c.type,Fn=Math.pow;vn.prototype.luminance=function(e){if(void 0!==e&&"number"===yn(e)){if(0===e)return new vn([0,0,0,this._rgb[3]],"rgb");if(1===e)return new vn([255,255,255,this._rgb[3]],"rgb");var A=this.luminance(),t=20,n=function(A,i){var a=A.interpolate(i,.5,"rgb"),r=a.luminance();return Math.abs(e-r)<1e-7||!t--?a:r>e?n(A,a):n(a,i)},i=(A>e?n(new vn([0,0,0]),this):n(this,new vn([255,255,255]))).rgb();return new vn(i.concat([this._rgb[3]]))}return xn.apply(void 0,this._rgb.slice(0,3))};var xn=function(e,A,t){return.2126*(e=Tn(e))+.7152*(A=Tn(A))+.0722*Tn(t)},Tn=function(e){return(e/=255)<=.03928?e/12.92:Fn((e+.055)/1.055,2.4)},Sn={},Qn=w,In=c.type,Un=Sn,kn=function(e,A,t){void 0===t&&(t=.5);for(var n=[],i=arguments.length-3;i-- >0;)n[i]=arguments[i+3];var a=n[0]||"lrgb";if(Un[a]||n.length||(a=Object.keys(Un)[0]),!Un[a])throw new Error("interpolation mode "+a+" is not defined");return"object"!==In(e)&&(e=new Qn(e)),"object"!==In(A)&&(A=new Qn(A)),Un[a](e,A,t).alpha(e.alpha()+t*(A.alpha()-e.alpha()))},Mn=w,Ln=kn;Mn.prototype.mix=Mn.prototype.interpolate=function(e,A){void 0===A&&(A=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Ln.apply(void 0,[this,e,A].concat(t))};var On=w;On.prototype.premultiply=function(e){void 0===e&&(e=!1);var A=this._rgb,t=A[3];return e?(this._rgb=[A[0]*t,A[1]*t,A[2]*t,t],this):new On([A[0]*t,A[1]*t,A[2]*t,t],"rgb")};var Nn=w,Dn=wA;Nn.prototype.saturate=function(e){void 0===e&&(e=1);var A=this.lch();return A[1]+=Dn.Kn*e,A[1]<0&&(A[1]=0),new Nn(A,"lch").alpha(this.alpha(),!0)},Nn.prototype.desaturate=function(e){return void 0===e&&(e=1),this.saturate(-e)};var Hn=w,Rn=c.type;Hn.prototype.set=function(e,A,t){void 0===t&&(t=!1);var n=e.split("."),i=n[0],a=n[1],r=this[i]();if(a){var s=i.indexOf(a)-("ok"===i.substr(0,2)?2:0);if(s>-1){if("string"==Rn(A))switch(A.charAt(0)){case"+":case"-":r[s]+=+A;break;case"*":r[s]*=+A.substr(1);break;case"/":r[s]/=+A.substr(1);break;default:r[s]=+A}else{if("number"!==Rn(A))throw new Error("unsupported value for Color.set");r[s]=A}var o=new Hn(r,i);return t?(this._rgb=o._rgb,this):o}throw new Error("unknown channel "+a+" in mode "+i)}return r};var Pn=w;Sn.rgb=function(e,A,t){var n=e._rgb,i=A._rgb;return new Pn(n[0]+t*(i[0]-n[0]),n[1]+t*(i[1]-n[1]),n[2]+t*(i[2]-n[2]),"rgb")};var Vn=w,Kn=Math.sqrt,Gn=Math.pow;Sn.lrgb=function(e,A,t){var n=e._rgb,i=n[0],a=n[1],r=n[2],s=A._rgb,o=s[0],l=s[1],c=s[2];return new Vn(Kn(Gn(i,2)*(1-t)+Gn(o,2)*t),Kn(Gn(a,2)*(1-t)+Gn(l,2)*t),Kn(Gn(r,2)*(1-t)+Gn(c,2)*t),"rgb")};var Wn=w;Sn.lab=function(e,A,t){var n=e.lab(),i=A.lab();return new Wn(n[0]+t*(i[0]-n[0]),n[1]+t*(i[1]-n[1]),n[2]+t*(i[2]-n[2]),"lab")};var Xn=w,zn=function(e,A,t,n){var i,a,r,s,o,l,c,d,h,u,g,p,m;return"hsl"===n?(r=e.hsl(),s=A.hsl()):"hsv"===n?(r=e.hsv(),s=A.hsv()):"hcg"===n?(r=e.hcg(),s=A.hcg()):"hsi"===n?(r=e.hsi(),s=A.hsi()):"lch"===n||"hcl"===n?(n="hcl",r=e.hcl(),s=A.hcl()):"oklch"===n&&(r=e.oklch().reverse(),s=A.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(o=(i=r)[0],c=i[1],h=i[2],l=(a=s)[0],d=a[1],u=a[2]),isNaN(o)||isNaN(l)?isNaN(o)?isNaN(l)?p=Number.NaN:(p=l,1!=h&&0!=h||"hsv"==n||(g=d)):(p=o,1!=u&&0!=u||"hsv"==n||(g=c)):p=o+t*(l>o&&l-o>180?l-(o+360):l180?l+360-o:l-o),void 0===g&&(g=c+t*(d-c)),m=h+t*(u-h),new Xn("oklch"===n?[m,g,p]:[p,g,m],n)},Yn=zn,jn=function(e,A,t){return Yn(e,A,t,"lch")};Sn.lch=jn,Sn.hcl=jn;var Jn=w;Sn.num=function(e,A,t){var n=e.num(),i=A.num();return new Jn(n+t*(i-n),"num")};var Zn=zn;Sn.hcg=function(e,A,t){return Zn(e,A,t,"hcg")};var qn=zn;Sn.hsi=function(e,A,t){return qn(e,A,t,"hsi")};var _n=zn;Sn.hsl=function(e,A,t){return _n(e,A,t,"hsl")};var $n=zn;Sn.hsv=function(e,A,t){return $n(e,A,t,"hsv")};var ei=w;Sn.oklab=function(e,A,t){var n=e.oklab(),i=A.oklab();return new ei(n[0]+t*(i[0]-n[0]),n[1]+t*(i[1]-n[1]),n[2]+t*(i[2]-n[2]),"oklab")};var Ai=zn;Sn.oklch=function(e,A,t){return Ai(e,A,t,"oklch")};var ti=w,ni=c.clip_rgb,ii=Math.pow,ai=Math.sqrt,ri=Math.PI,si=Math.cos,oi=Math.sin,li=Math.atan2,ci=function(e,A){for(var t=e.length,n=[0,0,0,0],i=0;i.9999999&&(n[3]=1),new ti(ni(n))},di=B,hi=c.type,ui=Math.pow,gi=function(e){var A="rgb",t=di("#ccc"),n=0,i=[0,1],a=[],r=[0,0],s=!1,o=[],l=!1,c=0,d=1,h=!1,u={},g=!0,p=1,m=function(e){if((e=e||["#fff","#000"])&&"string"===hi(e)&&di.brewer&&di.brewer[e.toLowerCase()]&&(e=di.brewer[e.toLowerCase()]),"array"===hi(e)){1===e.length&&(e=[e[0],e[0]]),e=e.slice(0);for(var A=0;A2?function(e){if(null!=s){for(var A=s.length-1,t=0;t=s[t];)t++;return t-1}return 0}(e)/(s.length-2):d!==c?(e-c)/(d-c):1,l=f(l),n||(l=w(l)),1!==p&&(l=ui(l,p)),l=r[0]+l*(1-r[0]-r[1]),l=Math.min(1,Math.max(0,l));var h=Math.floor(1e4*l);if(g&&u[h])i=u[h];else{if("array"===hi(o))for(var m=0;m=B&&m===a.length-1){i=o[m];break}if(l>B&&l2){var l=e.map((function(A,t){return t/(e.length-1)})),h=e.map((function(e){return(e-c)/(d-c)}));h.every((function(e,A){return l[A]===e}))||(f=function(e){if(e<=0||e>=1)return e;for(var A=0;e>=h[A+1];)A++;var t=(e-h[A])/(h[A+1]-h[A]);return l[A]+t*(l[A+1]-l[A])})}}return i=[c,d],b},b.mode=function(e){return arguments.length?(A=e,E(),b):A},b.range=function(e,A){return m(e),b},b.out=function(e){return l=e,b},b.spread=function(e){return arguments.length?(n=e,b):n},b.correctLightness=function(e){return null==e&&(e=!0),h=e,E(),w=h?function(e){for(var A=B(0,!0).lab()[0],t=B(1,!0).lab()[0],n=A>t,i=B(e,!0).lab()[0],a=A+(t-A)*e,r=i-a,s=0,o=1,l=20;Math.abs(r)>.01&&l-- >0;)n&&(r*=-1),r<0?(s=e,e+=.5*(o-e)):(o=e,e+=.5*(s-e)),r=(i=B(e,!0).lab()[0])-a;return e}:function(e){return e},b},b.padding=function(e){return null!=e?("number"===hi(e)&&(e=[e,e]),r=e,b):r},b.colors=function(A,t){arguments.length<2&&(t="hex");var n=[];if(0===arguments.length)n=o.slice(0);else if(1===A)n=[b(.5)];else if(A>1){var a=i[0],r=i[1]-a;n=pi(0,A,!1).map((function(e){return b(a+e/(A-1)*r)}))}else{e=[];var l=[];if(s&&s.length>2)for(var c=1,d=s.length,h=1<=d;h?cd;h?c++:c--)l.push(.5*(s[c-1]+s[c]));else l=i;n=l.map((function(e){return b(e)}))}return di[t]&&(n=n.map((function(e){return e[t]()}))),n},b.cache=function(e){return null!=e?(g=e,b):g},b.gamma=function(e){return null!=e?(p=e,b):p},b.nodata=function(e){return null!=e?(t=di(e),b):t},b};function pi(e,A,t){for(var n=[],i=ea;i?r++:r--)n.push(r);return n}var mi=w,wi=gi,fi=B,Bi=function(e,A,t){if(!Bi[t])throw new Error("unknown blend mode "+t);return Bi[t](e,A)},Ei=function(e){return function(A,t){var n=fi(t).rgb(),i=fi(A).rgb();return fi.rgb(e(n,i))}},bi=function(e){return function(A,t){var n=[];return n[0]=e(A[0],t[0]),n[1]=e(A[1],t[1]),n[2]=e(A[2],t[2]),n}};Bi.normal=Ei(bi((function(e){return e}))),Bi.multiply=Ei(bi((function(e,A){return e*A/255}))),Bi.screen=Ei(bi((function(e,A){return 255*(1-(1-e/255)*(1-A/255))}))),Bi.overlay=Ei(bi((function(e,A){return A<128?2*e*A/255:255*(1-2*(1-e/255)*(1-A/255))}))),Bi.darken=Ei(bi((function(e,A){return e>A?A:e}))),Bi.lighten=Ei(bi((function(e,A){return e>A?e:A}))),Bi.dodge=Ei(bi((function(e,A){return 255===e||(e=A/255*255/(1-e/255))>255?255:e}))),Bi.burn=Ei(bi((function(e,A){return 255*(1-(1-A/255)/(e/255))})));for(var Ci=Bi,vi=c.type,yi=c.clip_rgb,Fi=c.TWOPI,xi=Math.pow,Ti=Math.sin,Si=Math.cos,Qi=B,Ii=w,Ui=Math.floor,ki=Math.random,Mi=r,Li=Math.log,Oi=Math.pow,Ni=Math.floor,Di=Math.abs,Hi=function(e,A){void 0===A&&(A=null);var t={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===Mi(e)&&(e=Object.values(e)),e.forEach((function(e){A&&"object"===Mi(e)&&(e=e[A]),null==e||isNaN(e)||(t.values.push(e),t.sum+=e,et.max&&(t.max=e),t.count+=1)})),t.domain=[t.min,t.max],t.limits=function(e,A){return Ri(t,e,A)},t},Ri=function(e,A,t){void 0===A&&(A="equal"),void 0===t&&(t=7),"array"==Mi(e)&&(e=Hi(e));var n=e.min,i=e.max,a=e.values.sort((function(e,A){return e-A}));if(1===t)return[n,i];var r=[];if("c"===A.substr(0,1)&&(r.push(n),r.push(i)),"e"===A.substr(0,1)){r.push(n);for(var s=1;s 0");var o=Math.LOG10E*Li(n),l=Math.LOG10E*Li(i);r.push(n);for(var c=1;c200&&(B=!1)}for(var O={},N=0;N=360;)g-=360;r[u]=g}else r[u]=r[u]/s[u];return h/=n,new ti(r,A).alpha(h>.99999?1:h,!0)},la.bezier=function(e){var A=function(e){var A,t,n,i,a,r,s;if(e=e.map((function(e){return new mi(e)})),2===e.length)A=e.map((function(e){return e.lab()})),a=A[0],r=A[1],i=function(e){var A=[0,1,2].map((function(A){return a[A]+e*(r[A]-a[A])}));return new mi(A,"lab")};else if(3===e.length)t=e.map((function(e){return e.lab()})),a=t[0],r=t[1],s=t[2],i=function(e){var A=[0,1,2].map((function(A){return(1-e)*(1-e)*a[A]+2*(1-e)*e*r[A]+e*e*s[A]}));return new mi(A,"lab")};else if(4===e.length){var o;n=e.map((function(e){return e.lab()})),a=n[0],r=n[1],s=n[2],o=n[3],i=function(e){var A=[0,1,2].map((function(A){return(1-e)*(1-e)*(1-e)*a[A]+3*(1-e)*(1-e)*e*r[A]+3*(1-e)*e*e*s[A]+e*e*e*o[A]}));return new mi(A,"lab")}}else{if(!(e.length>=5))throw new RangeError("No point in running bezier with only one color.");var l,c,d;l=e.map((function(e){return e.lab()})),d=e.length-1,c=function(e){for(var A=[1,1],t=1;tn?(t+.05)/(n+.05):(n+.05)/(t+.05)},la.deltaE=function(e,A,t,n,i){void 0===t&&(t=1),void 0===n&&(n=1),void 0===i&&(i=1);var a=function(e){return 360*e/(2*_i)},r=function(e){return 2*_i*e/360};e=new Ki(e),A=new Ki(A);var s=Array.from(e.lab()),o=s[0],l=s[1],c=s[2],d=Array.from(A.lab()),h=d[0],u=d[1],g=d[2],p=(o+h)/2,m=(Gi(Wi(l,2)+Wi(c,2))+Gi(Wi(u,2)+Wi(g,2)))/2,w=.5*(1-Gi(Wi(m,7)/(Wi(m,7)+Wi(25,7)))),f=l*(1+w),B=u*(1+w),E=Gi(Wi(f,2)+Wi(c,2)),b=Gi(Wi(B,2)+Wi(g,2)),C=(E+b)/2,v=a(Yi(c,f)),y=a(Yi(g,B)),F=v>=0?v:v+360,x=y>=0?y:y+360,T=ji(F-x)>180?(F+x+360)/2:(F+x)/2,S=1-.17*Ji(r(T-30))+.24*Ji(r(2*T))+.32*Ji(r(3*T+6))-.2*Ji(r(4*T-63)),Q=x-F;Q=ji(Q)<=180?Q:x<=F?Q+360:Q-360,Q=2*Gi(E*b)*Zi(r(Q)/2);var I=h-o,U=b-E,k=1+.015*Wi(p-50,2)/Gi(20+Wi(p-50,2)),M=1+.045*C,L=1+.015*C*S,O=30*qi(-Wi((T-275)/25,2)),N=-2*Gi(Wi(C,7)/(Wi(C,7)+Wi(25,7)))*Zi(2*r(O)),D=Gi(Wi(I/(t*k),2)+Wi(U/(n*M),2)+Wi(Q/(i*L),2)+N*(U/(n*M))*(Q/(i*L)));return zi(0,Xi(100,D))},la.distance=function(e,A,t){void 0===t&&(t="lab"),e=new $i(e),A=new $i(A);var n=e.get(t),i=A.get(t),a=0;for(var r in n){var s=(n[r]||0)-(i[r]||0);a+=s*s}return Math.sqrt(a)},la.limits=Pi.limits,la.valid=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];try{return new(Function.prototype.bind.apply(ea,[null].concat(e))),!0}catch(e){return!1}},la.scales=na,la.colors=dt,la.brewer=oa,la}();var chroma=chromaExports;function hexWithAlpha(e,A){return chroma(e).alpha(A).css()}function has(e,A){return e.hasAttribute(A)}function get(e,A,t){return e.getAttribute(A)||t||""}function getNum(e,A,t){const n=Number(get(e,A));return Number.isNaN(n)?t||0:n}const attrHandlers={stroke:({el:e,exVals:A})=>{const t=get(e,"stroke");A.strokeColor=has(e,"stroke-opacity")?hexWithAlpha(t,getNum(e,"stroke-opacity")):t},"stroke-opacity":({el:e,exVals:A})=>{A.strokeColor=hexWithAlpha(get(e,"stroke","#000000"),getNum(e,"stroke-opacity"))},"stroke-width":({el:e,exVals:A})=>{A.strokeWidth=getNum(e,"stroke-width")},fill:({el:e,exVals:A})=>{const t=get(e,"fill");A.backgroundColor="none"===t?"#00000000":t},"fill-opacity":({el:e,exVals:A})=>{A.backgroundColor=hexWithAlpha(get(e,"fill","#000000"),getNum(e,"fill-opacity"))},opacity:({el:e,exVals:A})=>{A.opacity=getNum(e,"opacity",100)}};function presAttrsToElementValues(e){return[...e.attributes].reduce(((A,t)=>{const n=t.name;return Object.keys(attrHandlers).includes(n)&&attrHandlers[n]({el:e,exVals:A}),A}),{})}function filterAttrsToElementValues(e){const A={};return has(e,"x")&&(A.x=getNum(e,"x")),has(e,"y")&&(A.y=getNum(e,"y")),has(e,"width")&&(A.width=getNum(e,"width")),has(e,"height")&&(A.height=getNum(e,"height")),A}function pointsAttrToPoints(e){let A=[];return has(e,"points")&&(A=get(e,"points").split(" ").map((e=>e.split(",").map(parseFloat)))),A}function getGroupAttrs(e){return e.reduce(((e,{element:A})=>{const t=presAttrsToElementValues(A);return Object.assign(Object.assign({},e),t)}),{})}class Group{constructor(e){this.id=randomId(),this.element=e}}function createExElement(){return{id:randomId(),x:0,y:0,strokeColor:"#000000",backgroundColor:"#000000",fillStyle:"solid",strokeWidth:1,strokeStyle:"solid",roundness:null,roughness:0,opacity:100,width:0,height:0,angle:0,seed:Math.floor(random.next()*2**31),version:0,versionNonce:0,isDeleted:!1,groupIds:[],boundElementIds:null}}function createExRect(){return Object.assign(Object.assign({},createExElement()),{type:"rectangle"})}function createExLine(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}function createExEllipse(){return Object.assign(Object.assign({},createExElement()),{type:"ellipse"})}function createExDraw(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}const transformFunctions={matrix:"matrix",matrix3d:"matrix3d",perspective:"perspective",rotate:"rotate",rotate3d:"rotate3d",rotateX:"rotateX",rotateY:"rotateY",rotateZ:"rotateZ",scale:"scale",scale3d:"scale3d",scaleX:"scaleX",scaleY:"scaleY",scaleZ:"scaleZ",skew:"skew",skewX:"skewX",skewY:"skewY",translate:"translate",translate3d:"translate3d",translateX:"translateX",translateY:"translateY",translateZ:"translateZ"},transformFunctionsArr=Object.keys(transformFunctions),defaultUnits={matrix:"",matrix3d:"",perspective:"perspective",rotate:"deg",rotate3d:"deg",rotateX:"deg",rotateY:"deg",rotateZ:"deg",scale:"",scale3d:"",scaleX:"",scaleY:"",scaleZ:"",skew:"skew",skewX:"deg",skewY:"deg",translate:"px",translate3d:"px",translateX:"px",translateY:"px",translateZ:"px"},svgTransformToCSSTransform=e=>{const A=e.match(/(\w+)\(([^)]*)\)/g);if(!A)return"";const t=A.map((e=>{const A=e.split("(")[0];if(!A)throw new Error("Unable to find transform name");if(!transformFunctionsArr.includes(A))throw new Error(`transform function name "${A}" is not valid`);const t=e.match(/([-+]?[0-9]*\.?[0-9]+)([a-z])*/g);if(!t)return{type:A,values:[]};let n=t.map((e=>{const[t,n]=e.matchAll(/([-+]?[0-9]*\.?[0-9]+)|([a-z])*/g);return{unit:n[0]||defaultUnits[A],value:t[0]}}));return n&&"rotate"===A&&(null==n?void 0:n.length)>1&&(n=[n[0]]),{type:A,values:n}}));return t.map((({type:e,values:A})=>`${e}(${A.map((({unit:e,value:A})=>`${A}${e}`)).join(", ")})`)).join(" ")};function getElementMatrix(e){if(e.hasAttribute("transform")){const A=new DOMMatrix(svgTransformToCSSTransform(e.getAttribute("transform")||""));return multiply(create$1(),create$1(),A.toFloat32Array())}return create$1()}function getTransformMatrix(e,A){return A.map((({element:e})=>getElementMatrix(e))).concat([getElementMatrix(e)]).reduce(((e,A)=>multiply(e,e,A)),create$1())}function transformPoints(e,A){return e.map((([e,t])=>{const[n,i]=transformMat4(create(),fromValues(e,t,1),A);return[n,i]}))}function distance(e,A){return Math.sqrt(distanceSq(e,A))}function distanceSq(e,A){return Math.pow(e[0]-A[0],2)+Math.pow(e[1]-A[1],2)}function distanceToSegmentSq(e,A,t){const n=distanceSq(A,t);if(0===n)return distanceSq(e,A);let i=((e[0]-A[0])*(t[0]-A[0])+(e[1]-A[1])*(t[1]-A[1]))/n;return i=Math.max(0,Math.min(1,i)),distanceSq(e,lerp(A,t,i))}function lerp(e,A,t){return[e[0]+(A[0]-e[0])*t,e[1]+(A[1]-e[1])*t]}function flatness(e,A){const t=e[A+0],n=e[A+1],i=e[A+2],a=e[A+3];let r=3*n[0]-2*t[0]-a[0];r*=r;let s=3*n[1]-2*t[1]-a[1];s*=s;let o=3*i[0]-2*a[0]-t[0];o*=o;let l=3*i[1]-2*a[1]-t[1];return l*=l,r1&&i.push(t):i.push(t),i.push(e[A+3])}else{const n=.5,a=e[A+0],r=e[A+1],s=e[A+2],o=e[A+3],l=lerp(a,r,n),c=lerp(r,s,n),d=lerp(s,o,n),h=lerp(l,c,n),u=lerp(c,d,n),g=lerp(h,u,n);getPointsOnBezierCurveWithSplitting([a,l,h,g],0,t,i),getPointsOnBezierCurveWithSplitting([g,u,d,o],0,t,i)}return i}function simplify(e,A){return simplifyPoints(e,0,e.length,A)}function simplifyPoints(e,A,t,n,i){const a=i||[],r=e[A],s=e[t-1];let o=0,l=1;for(let n=A+1;no&&(o=A,l=n)}return Math.sqrt(o)>n?(simplifyPoints(e,A,l+1,n,a),simplifyPoints(e,l,t,n,a)):(a.length||a.push(r),a.push(s)),a}function pointsOnBezierCurves(e,A=.15,t){const n=[],i=(e.length-1)/3;for(let t=0;t0?simplifyPoints(n,0,n.length,t):n}const COMMAND=0,NUMBER=1,EOD=2,PARAMS={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function tokenize(e){const A=new Array;for(;""!==e;)if(e.match(/^([ \t\r\n,]+)/))e=e.substr(RegExp.$1.length);else if(e.match(/^([aAcChHlLmMqQsStTvVzZ])/))A[A.length]={type:0,text:RegExp.$1},e=e.substr(RegExp.$1.length);else{if(!e.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];A[A.length]={type:1,text:`${parseFloat(RegExp.$1)}`},e=e.substr(RegExp.$1.length)}return A[A.length]={type:2,text:""},A}function isType(e,A){return e.type===A}function parsePath(e){const A=[],t=tokenize(e);let n="BOD",i=0,a=t[i];for(;!isType(a,2);){let r=0;const s=[];if("BOD"===n){if("M"!==a.text&&"m"!==a.text)return parsePath("M0,0"+e);i++,r=PARAMS[a.text],n=a.text}else isType(a,1)?r=PARAMS[n]:(i++,r=PARAMS[a.text],n=a.text);if(!(i+rn%2?e+t:e+A));a.push({key:"C",data:e}),A=e[4],t=e[5];break}case"Q":a.push({key:"Q",data:[...s]}),A=s[2],t=s[3];break;case"q":{const e=s.map(((e,n)=>n%2?e+t:e+A));a.push({key:"Q",data:e}),A=e[2],t=e[3];break}case"A":a.push({key:"A",data:[...s]}),A=s[5],t=s[6];break;case"a":A+=s[5],t+=s[6],a.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],A,t]});break;case"H":a.push({key:"H",data:[...s]}),A=s[0];break;case"h":A+=s[0],a.push({key:"H",data:[A]});break;case"V":a.push({key:"V",data:[...s]}),t=s[0];break;case"v":t+=s[0],a.push({key:"V",data:[t]});break;case"S":a.push({key:"S",data:[...s]}),A=s[2],t=s[3];break;case"s":{const e=s.map(((e,n)=>n%2?e+t:e+A));a.push({key:"S",data:e}),A=e[2],t=e[3];break}case"T":a.push({key:"T",data:[...s]}),A=s[0],t=s[1];break;case"t":A+=s[0],t+=s[1],a.push({key:"T",data:[A,t]});break;case"Z":case"z":a.push({key:"Z",data:[]}),A=n,t=i}return a}function normalize(e){const A=[];let t="",n=0,i=0,a=0,r=0,s=0,o=0;for(const{key:l,data:c}of e){switch(l){case"M":A.push({key:"M",data:[...c]}),[n,i]=c,[a,r]=c;break;case"C":A.push({key:"C",data:[...c]}),n=c[4],i=c[5],s=c[2],o=c[3];break;case"L":A.push({key:"L",data:[...c]}),[n,i]=c;break;case"H":n=c[0],A.push({key:"L",data:[n,i]});break;case"V":i=c[0],A.push({key:"L",data:[n,i]});break;case"S":{let e=0,a=0;"C"===t||"S"===t?(e=n+(n-s),a=i+(i-o)):(e=n,a=i),A.push({key:"C",data:[e,a,...c]}),s=c[0],o=c[1],n=c[2],i=c[3];break}case"T":{const[e,a]=c;let r=0,l=0;"Q"===t||"T"===t?(r=n+(n-s),l=i+(i-o)):(r=n,l=i);const d=n+2*(r-n)/3,h=i+2*(l-i)/3,u=e+2*(r-e)/3,g=a+2*(l-a)/3;A.push({key:"C",data:[d,h,u,g,e,a]}),s=r,o=l,n=e,i=a;break}case"Q":{const[e,t,a,r]=c,l=n+2*(e-n)/3,d=i+2*(t-i)/3,h=a+2*(e-a)/3,u=r+2*(t-r)/3;A.push({key:"C",data:[l,d,h,u,a,r]}),s=e,o=t,n=a,i=r;break}case"A":{const e=Math.abs(c[0]),t=Math.abs(c[1]),a=c[2],r=c[3],s=c[4],o=c[5],l=c[6];0===e||0===t?(A.push({key:"C",data:[n,i,o,l,o,l]}),n=o,i=l):n===o&&i===l||(arcToCubicCurves(n,i,o,l,e,t,a,r,s).forEach((function(e){A.push({key:"C",data:e})})),n=o,i=l);break}case"Z":A.push({key:"Z",data:[]}),n=a,i=r}t=l}return A}function degToRad(e){return Math.PI*e/180}function rotate(e,A,t){return[e*Math.cos(t)-A*Math.sin(t),e*Math.sin(t)+A*Math.cos(t)]}function arcToCubicCurves(e,A,t,n,i,a,r,s,o,l){const c=degToRad(r);let d=[],h=0,u=0,g=0,p=0;if(l)[h,u,g,p]=l;else{[e,A]=rotate(e,A,-c),[t,n]=rotate(t,n,-c);const r=(e-t)/2,l=(A-n)/2;let d=r*r/(i*i)+l*l/(a*a);d>1&&(d=Math.sqrt(d),i*=d,a*=d);const m=i*i,w=a*a,f=m*w-m*l*l-w*r*r,B=m*l*l+w*r*r,E=(s===o?-1:1)*Math.sqrt(Math.abs(f/B));g=E*i*l/a+(e+t)/2,p=E*-a*r/i+(A+n)/2,h=Math.asin(parseFloat(((A-p)/a).toFixed(9))),u=Math.asin(parseFloat(((n-p)/a).toFixed(9))),eu&&(h-=2*Math.PI),!o&&u>h&&(u-=2*Math.PI)}let m=u-h;if(Math.abs(m)>120*Math.PI/180){const e=u,A=t,s=n;u=o&&u>h?h+120*Math.PI/180*1:h+120*Math.PI/180*-1,d=arcToCubicCurves(t=g+i*Math.cos(u),n=p+a*Math.sin(u),A,s,i,a,r,0,o,[u,e,g,p])}m=u-h;const w=Math.cos(h),f=Math.sin(h),B=Math.cos(u),E=Math.sin(u),b=Math.tan(m/4),C=4/3*i*b,v=4/3*a*b,y=[e,A],F=[e+C*f,A-v*w],x=[t+C*E,n-v*B],T=[t,n];if(F[0]=2*y[0]-F[0],F[1]=2*y[1]-F[1],l)return[F,x,T].concat(d);{d=[F,x,T].concat(d);const e=[];for(let A=0;A{s.length>=4&&a.push(...pointsOnBezierCurves(s,A)),s=[]},l=()=>{o(),a.length&&(i.push(a),a=[])};for(const{key:e,data:A}of n)switch(e){case"M":l(),r=[A[0],A[1]],a.push(r);break;case"L":o(),a.push([A[0],A[1]]);break;case"C":if(!s.length){const e=a.length?a[a.length-1]:r;s.push([e[0],e[1]])}s.push([A[0],A[1]]),s.push([A[2],A[3]]),s.push([A[4],A[5]]);break;case"Z":o(),a.push([r[0],r[1]])}if(l(),!t)return i;const c=[];for(const e of i){const A=simplify(e,t);A.length&&c.push(A)}return c}const SUPPORTED_TAGS=["svg","path","g","use","circle","ellipse","rect","polyline","polygon"],nodeValidator=e=>SUPPORTED_TAGS.includes(e.tagName)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;function createTreeWalker(e){return document.createTreeWalker(e,NodeFilter.SHOW_ALL,{acceptNode:nodeValidator})}const presAttrs=(e,A)=>Object.assign(Object.assign(Object.assign({},getGroupAttrs(A)),presAttrsToElementValues(e)),filterAttrsToElementValues(e)),skippedUseAttrs=["id"],allwaysPassedUseAttrs=["x","y","width","height","href","xlink:href"],getDefElWithCorrectAttrs=(e,A)=>[...A.attributes].reduce(((t,n)=>(skippedUseAttrs.includes(n.value)||e.hasAttribute(n.name)&&!allwaysPassedUseAttrs.includes(n.name)||t.setAttribute(n.name,A.getAttribute(n.name)||""),t)),e.cloneNode()),walkers={svg:e=>{walk(e,e.tw.nextNode())},g:e=>{const A=Object.assign(Object.assign({},e),{tw:createTreeWalker(e.tw.currentNode),groups:[...e.groups,new Group(e.tw.currentNode)]});walk(A,A.tw.nextNode()),walk(e,e.tw.nextSibling())},use:e=>{const{root:A,tw:t,scene:n}=e,i=t.currentNode,a=i.getAttribute("href")||i.getAttribute("xlink:href");if(!a)throw new Error("unable to get id of use element");const r=A.querySelector(a);if(!r)throw new Error(`unable to find def element with id: ${a}`);const s=new ExcalidrawScene,o=getDefElWithCorrectAttrs(r,i);walk(Object.assign(Object.assign({},e),{scene:s,tw:createTreeWalker(o)}),o);const l=s.elements.pop();l&&n.elements.push(l),walk(e,e.tw.nextNode())},circle:e=>{const{tw:A,scene:t,groups:n}=e,i=A.currentNode,a=getNum(i,"r",0),r=2*a,s=getNum(i,"x",0)+getNum(i,"cx",0)-a,o=getNum(i,"y",0)+getNum(i,"cy",0)-a,l=getTransformMatrix(i,n),c=fromValues$1(r,0,0,0,0,r,0,0,0,0,1,0,s,o,0,1),d=multiply(create$1(),l,c),h=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(i,n)),{x:d[12],y:d[13],width:d[0],height:d[5],groupIds:n.map((e=>e.id))});t.elements.push(h),walk(e,A.nextNode())},ellipse:e=>{const{tw:A,scene:t,groups:n}=e,i=A.currentNode,a=getNum(i,"rx",0),r=getNum(i,"ry",0),s=getNum(i,"cx",0),o=getNum(i,"cy",0),l=getNum(i,"x",0)+s-a,c=getNum(i,"y",0)+o-r,d=2*a,h=2*r,u=getTransformMatrix(i,n),g=fromValues$1(d,0,0,0,0,h,0,0,0,0,1,0,l,c,0,1),p=multiply(create$1(),u,g),m=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(i,n)),{x:p[12],y:p[13],width:p[0],height:p[5],groupIds:n.map((e=>e.id))});t.elements.push(m),walk(e,A.nextNode())},line:e=>{walk(e,e.tw.nextNode())},polygon:e=>{const{tw:A,scene:t,groups:n}=e,i=A.currentNode,a=transformPoints(pointsAttrToPoints(i),getTransformMatrix(i,n)),r=a[0][0],s=a[0][1],o=a.map((([e,A])=>[e-r,A-s])),[l,c]=dimensionsFromPoints(o),d=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(n)),presAttrsToElementValues(i)),{points:o.concat([[0,0]]),x:r,y:s,width:l,height:c});t.elements.push(d),walk(e,e.tw.nextNode())},polyline:e=>{const{tw:A,scene:t,groups:n}=e,i=A.currentNode,a=getTransformMatrix(i,n),r=transformPoints(pointsAttrToPoints(i),a),s=r[0][0],o=r[0][1],l=r.map((([e,A])=>[e-s,A-o])),[c,d]=dimensionsFromPoints(l),h=has(i,"fill"),u=get(i,"fill"),g=!h||h&&"none"!==u,p=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(n)),presAttrsToElementValues(i)),{points:l.concat(g?[[0,0]]:[]),x:s,y:o,width:c,height:d});t.elements.push(p),walk(e,e.tw.nextNode())},rect:e=>{const{tw:A,scene:t,groups:n}=e,i=A.currentNode,a=getNum(i,"x",0),r=getNum(i,"y",0),s=getNum(i,"width",0),o=getNum(i,"height",0),l=getTransformMatrix(i,n),c=fromValues$1(s,0,0,0,0,o,0,0,0,0,1,0,a,r,0,1),d=multiply(create$1(),l,c),h=i.hasAttribute("rx")||i.hasAttribute("ry"),u=Object.assign(Object.assign(Object.assign({},createExRect()),presAttrs(i,n)),{x:d[12],y:d[13],width:d[0],height:d[5],roundness:h?{type:ROUNDNESS.LEGACY}:null});t.elements.push(u),walk(e,e.tw.nextNode())},path:e=>{const{tw:A,scene:t,groups:n}=e,i=A.currentNode,a=getTransformMatrix(i,n),r=pointsOnPath(get(i,"d")),s=get(i,"fill","black"),o=get(i,"fill-rule","nonzero");let l=[],c=randomId();switch(o){case"nonzero":let e="clockwise";l=r.map(((A,t)=>{const r=transformPoints(A,clone(a)),o=r[0][0],l=r[0][1],[d,h]=dimensionsFromPoints(r),u=r.map((([e,A])=>[e-o,A-l])),g=getWindingOrder(u);0===t&&(e=g,c=randomId());let p=s;return e!==g&&(p="#FFFFFF"),Object.assign(Object.assign(Object.assign(Object.assign({},createExDraw()),{strokeWidth:0,strokeColor:"#00000000"}),presAttrs(i,n)),{points:u,backgroundColor:p,width:d,height:h,x:o+getNum(i,"x",0),y:l+getNum(i,"y",0),groupIds:[c]})}));break;case"evenodd":l=r.map(((e,A)=>{const t=transformPoints(e,clone(a)),r=t[0][0],s=t[0][1],[o,l]=dimensionsFromPoints(t),d=t.map((([e,A])=>[e-r,A-s]));return 0===A&&(c=randomId()),Object.assign(Object.assign(Object.assign({},createExDraw()),presAttrs(i,n)),{points:d,width:o,height:l,x:r+getNum(i,"x",0),y:s+getNum(i,"y",0)})}))}t.elements=t.elements.concat(l),walk(e,A.nextNode())}};function walk(e,A){if(!A)return;const t=A.nodeName;walkers[t]&&walkers[t](e)}const svgToExcalidraw=e=>{const A=(new DOMParser).parseFromString(e,"image/svg+xml"),t=A.querySelectorAll("parsererror"),n=t.length>0;let i=null;if(n)console.error("There were errors while parsing the given SVG: ",[...t].map((e=>e.innerHTML)));else{const e=createTreeWalker(A),t=new ExcalidrawScene;walk({tw:e,scene:t,groups:[],root:A},e.nextNode()),i=t.elements}return{hasErrors:n,errors:n?t:null,content:i}};B([r$d,z,e$a,l$3,b$1,v,h$1,i$5,i$4,h,u,c$1,s]);const{determineFocusDistance:determineFocusDistance,intersectElementWithLine:intersectElementWithLine,getCommonBoundingBox:getCommonBoundingBox,getMaximumGroups:getMaximumGroups,measureText:measureText}=excalidrawLib,GAP=4;class ExcalidrawAutomate{get obsidian(){return obsidian_module__namespace}constructor(e,A){this.targetView=null,this.mostRecentMarkdownSVG=null,this.onViewUnloadHook=null,this.onViewModeChangeHook=null,this.onLinkHoverHook=null,this.onLinkClickHook=null,this.onDropHook=null,this.onCanvasColorChangeHook=null,this.activeScript=null,this.plugin=e,this.reset(),this.targetView=A}getViewLastPointerPosition(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.currentPosition:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getAPI(e){return new ExcalidrawAutomate(this.plugin,e)}setFillStyle(e){switch(e){case 0:return this.style.fillStyle="hachure","hachure";case 1:return this.style.fillStyle="cross-hatch","cross-hatch";default:return this.style.fillStyle="solid","solid"}}setStrokeStyle(e){switch(e){case 0:return this.style.strokeStyle="solid","solid";case 1:return this.style.strokeStyle="dashed","dashed";default:return this.style.strokeStyle="dotted","dotted"}}setStrokeSharpness(e){return 0===e?(this.style.roundness={type:ROUNDNESS.LEGACY},"round"):(this.style.roundness=null,"sharp")}setFontFamily(e){switch(e){case 1:return this.style.fontFamily=4,getFontFamily(4);case 2:return this.style.fontFamily=2,getFontFamily(2);case 3:return this.style.fontFamily=3,getFontFamily(3);default:return this.style.fontFamily=1,getFontFamily(1)}}setTheme(e){return 0===e?(this.canvas.theme="light","light"):(this.canvas.theme="dark","dark")}addToGroup(e){const A=nanoid();return e.forEach((e=>{var t,n;null===(n=null===(t=this.elementsDict[e])||void 0===t?void 0:t.groupIds)||void 0===n||n.push(A)})),A}async toClipboard(e){const A=e?await getTemplate(this.plugin,e,!1,new EmbeddedFilesLoader(this.plugin),0):null;let t=A?A.elements:[];t=t.concat(this.getElements()),navigator.clipboard.writeText(JSON.stringify({type:"excalidraw/clipboard",elements:t}))}getElements(){const e=[],A=Object.keys(this.elementsDict);for(let t=0;t{let A=e.plaintext?e.plaintext+"\n\n":"";const t=this.getElements().filter((e=>"text"===e.type));return A+="# Text Elements\n",t.forEach((e=>{var t,n;A+=`${null!==(t=e.rawText)&&void 0!==t?t:null!==(n=e.originalText)&&void 0!==n?n:e.text} ^${e.id}\n\n`})),this.getElements().filter((e=>"text"!==e.type&&e.link)).forEach((e=>{A+=`${e.link} ^${e.id}\n\n`})),A+=Object.keys(this.imagesDict).length>0?"\n# Embedded files\n":"",Object.keys(this.imagesDict).forEach((e=>{const t=this.imagesDict[e];t.latex?A+=`${e}: $$${t.latex}$$\n`:A+=`${e}: [[${t.file}]]\n`})),A})()+getMarkdownDrawingSection(JSON.stringify(G,null,"\t"),this.plugin.settings.compress))}async createSVG(e,A=!1,t,n,i,a){return i||(i=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),i&&!t&&(t={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0}),n||(n=new EmbeddedFilesLoader(this.plugin,i?"dark"===i:void 0)),await createSVG(e,A,t,n,i,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,a,this.imagesDict)}async createPNG(e,A=1,t,n,i,a){return i||(i=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),i&&!t&&(t={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0}),n||(n=new EmbeddedFilesLoader(this.plugin,i?"dark"===i:void 0)),await createPNG(e,A,t,n,i,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,a,this.imagesDict)}wrapText(e,A){return wrapTextAtCharLength(e,A,this.plugin.settings.forceWrap)}boxedElement(e,A,t,n,i,a){return{id:e,type:A,x:t,y:n,width:i,height:a,angle:this.style.angle,strokeColor:this.style.strokeColor,backgroundColor:this.style.backgroundColor,fillStyle:this.style.fillStyle,strokeWidth:this.style.strokeWidth,strokeStyle:this.style.strokeStyle,roughness:this.style.roughness,opacity:this.style.opacity,roundness:this.style.strokeSharpness?"round"===this.style.strokeSharpness?{type:ROUNDNESS.LEGACY}:null:this.style.roundness,seed:Math.floor(1e5*Math.random()),version:1,versionNonce:Math.floor(1e9*Math.random()),updated:Date.now(),isDeleted:!1,groupIds:[],boundElements:[],link:null,locked:!1}}addRect(e,A,t,n){const i=nanoid();return this.elementsDict[i]=this.boxedElement(i,"rectangle",e,A,t,n),i}addDiamond(e,A,t,n){const i=nanoid();return this.elementsDict[i]=this.boxedElement(i,"diamond",e,A,t,n),i}addEllipse(e,A,t,n){const i=nanoid();return this.elementsDict[i]=this.boxedElement(i,"ellipse",e,A,t,n),i}addBlob(e,A,t,n){const i=.5*n,a=.5*t,r=a/9,s=.8*i,o=[],l=(t,n)=>{const l=t+Math.random()*r-r/2;o.push([l+Math.random()*r-r/2+t%2*r/6+e,n*Math.sqrt(i*i*(1-l*l/(a*a)))+Math.random()*s-s/2+t%2*s/6+A])};let c;for(c=r/2-a;c<=a-r/2;c+=a/6)l(c,1);for(c=a-r/2;c>=r/2-a;c-=a/6)l(c,-1);o.push(o[0]);const d=this.addLine((e=>{const A=getLineBox(e),i=t/A.w,a=n/A.h;let r;for(r=0;r500){const e=500/Math.max(r.size.width,r.size.height);r.size.width=e*r.size.width,r.size.height=e*r.size.height}return this.elementsDict[i]=this.boxedElement(i,"image",e,A,r.size.width,r.size.height),this.elementsDict[i].fileId=s,this.elementsDict[i].scale=[1,1],i}async addLaTex(e,A,t){const n=nanoid(),i=await tex2dataURL(t,this.plugin);return i?(this.imagesDict[i.fileId]={mimeType:i.mimeType,id:i.fileId,dataURL:i.dataURL,created:i.created,file:null,hasSVGwithBitmap:!1,latex:t},this.elementsDict[n]=this.boxedElement(n,"image",e,A,i.size.width,i.size.height),this.elementsDict[n].fileId=i.fileId,this.elementsDict[n].scale=[1,1],n):null}connectObjects(e,A,t,n,i){if(!this.elementsDict[e]||!this.elementsDict[t])return;if(["line","arrow","freedraw"].includes(this.elementsDict[e].type)||["line","arrow","freedraw"].includes(this.elementsDict[t].type))return;const a=(null==i?void 0:i.padding)?i.padding:10,r=(null==i?void 0:i.numberOfPoints)?i.numberOfPoints:0,s=(e,A)=>{switch(e){case"bottom":return[(A.x+(A.x+A.width))/2,A.y+A.height+a];case"left":return[A.x-a,(A.y+(A.y+A.height))/2];case"right":return[A.x+A.width+a,(A.y+(A.y+A.height))/2];default:return[(A.x+(A.x+A.width))/2,A.y-a]}};let o,l,c,d;const h=this.elementsDict[e],u=this.elementsDict[t];if(!A||!n){const e=h.x+h.width/2,t=u.x+u.width/2,i=h.y+h.height/2,a=u.y+u.height/2;if(!A){const A=intersectElementWithLine(h,[t,a],[e,i],4);0===A.length?[o,l]=[e,i]:[o,l]=A[0]}if(!n){const A=intersectElementWithLine(u,[e,i],[t,a],4);0===A.length?[c,d]=[t,a]:[c,d]=A[0]}}A&&([o,l]=s(A,this.elementsDict[e])),n&&([c,d]=s(n,this.elementsDict[t]));const g=r+2,p=[];for(let e=0;eMath.PI/2&&(n-=Math.PI),this.style.angle=n;const a=this.addText(t.x+t.points[1][0]/2-i.width/2,t.y+t.points[1][1]/2-i.height,A);return this.style.angle=0,a}clear(){this.elementsDict={},this.imagesDict={}}reset(){this.clear(),this.activeScript=null,this.style={strokeColor:"#000000",backgroundColor:"transparent",angle:0,fillStyle:"hachure",strokeWidth:1,strokeStyle:"solid",roughness:1,opacity:100,roundness:null,fontFamily:1,fontSize:20,textAlign:"left",verticalAlign:"top",startArrowHead:null,endArrowHead:"arrow"},this.canvas={theme:"light",viewBackgroundColor:"#FFFFFF",gridSize:0}}isExcalidrawFile(e){return this.plugin.isExcalidrawFile(e)}setView(e){if(!e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(e instanceof ExcalidrawView)this.targetView=e;else{const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}}if("active"==e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(!(e instanceof ExcalidrawView))return;this.targetView=e}if("first"==e){const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}return e instanceof ExcalidrawView&&(this.targetView=e),this.targetView}getExcalidrawAPI(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.excalidrawAPI:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getViewElements(){var e;if(!this.targetView||!(null===(e=this.targetView)||void 0===e?void 0:e._loaded))return errorMessage("targetView not set","getViewElements()"),[];const A=this.targetView.excalidrawAPI;return A?A.getSceneElements():[]}deleteViewElements(e){var A,t,n;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return errorMessage("targetView not set","deleteViewElements()"),!1;const i=null===(n=null===(t=this.targetView)||void 0===t?void 0:t.excalidrawRef)||void 0===n?void 0:n.current;if(!i)return!1;const a=i.getSceneElements(),r=i.getAppState();return this.targetView.updateScene({elements:a.filter((A=>!e.includes(A))),appState:r,commitToHistory:!0}),!0}getViewSelectedElement(){const e=this.getViewSelectedElements();return e?e[0]:null}getViewSelectedElements(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.getViewSelectedElements():(errorMessage("targetView not set","getViewSelectedElements()"),[])}getViewFileForImageElement(e){var A,t,n,i;return this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?e&&"image"===e.type?null===(i=null===(n=null===(t=this.targetView)||void 0===t?void 0:t.excalidrawData)||void 0===n?void 0:n.getFile(e.fileId))||void 0===i?void 0:i.file:(errorMessage("Must provide an image element as input","getViewFileForImageElement()"),null):(errorMessage("targetView not set","getViewFileForImageElement()"),null)}copyViewElementsToEAforEditing(e){e.forEach((e=>{this.elementsDict[e.id]=cloneElement(e)}))}setViewModeEnabled(e){var A,t,n;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const i=this.targetView;i.updateScene({appState:{viewModeEnabled:e}}),null===(n=null===(t=i.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===n||n.setExcalidrawViewMode(e)}viewUpdateScene(e,A=!1){var t;this.targetView&&(null===(t=this.targetView)||void 0===t?void 0:t._loaded)?this.targetView.updateScene(e,A):errorMessage("targetView not set","viewToggleFullScreen()")}viewZoomToElements(e,A){var t;this.targetView&&(null===(t=this.targetView)||void 0===t?void 0:t._loaded)?this.targetView.zoomToElements(e,A):errorMessage("targetView not set","viewToggleFullScreen()")}viewToggleFullScreen(e=!1){var A,t,n;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const i=this.targetView,a=i.isFullscreen();e&&(i.updateScene({appState:{viewModeEnabled:!a},commitToHistory:!1}),null===(n=null===(t=this.targetView.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===n||n.setExcalidrawViewMode(!a)),a?i.exitFullscreen():i.gotoFullscreen()}connectObjectWithViewSelectedElement(e,A,t,n){const i=this.getViewSelectedElement();if(!i)return!1;const a=i.id;return this.elementsDict[a]=i,this.connectObjects(e,A,a,t,n),delete this.elementsDict[a],!0}async addElementsToView(e=!1,A=!0,t=!1){var n;if(!this.targetView||!(null===(n=this.targetView)||void 0===n?void 0:n._loaded))return errorMessage("targetView not set","addElementsToView()"),!1;const i=this.getElements();return await this.targetView.addElements(i,e,A,this.imagesDict,t)}registerThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}deregisterThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}getEmbeddedFilesLoader(e){return new EmbeddedFilesLoader(this.plugin,e)}getExportSettings(e,A){return{withBackground:e,withTheme:A}}getBoundingBox(e){const A=getCommonBoundingBox(e);return{topX:A.minX,topY:A.minY,width:A.maxX-A.minX,height:A.maxY-A.minY}}getMaximumGroups(e){return getMaximumGroups(e)}getLargestElement(e){if(!e||0===e.length)return null;let A=e[0];const t=e=>e.height*e.width;let n=t(e[0]);for(let i=1;in&&(n=a,A=e[i])}return A}getCommonGroupForElements(e){const A=e.map((e=>e.groupIds)).reduce(((e,A)=>A.filter((A=>e.includes(A)))));return A.length>0?A[0]:null}getElementsInTheSameGroupWithElement(e,A){if(!e||!A)return[];const t="text"===e.type&&e.containerId?A.filter((A=>A.id===e.containerId)):[];return 0===e.groupIds.length?1===t.length?[e,t[0]]:[e]:1===t.length?A.filter((A=>A.groupIds.some((A=>e.groupIds.includes(A)))||A===t[0])):A.filter((A=>A.groupIds.some((A=>e.groupIds.includes(A)))))}intersectElementWithLine(e,A,t,n){return intersectElementWithLine(e,A,t,n)}getScriptSettings(){var e;return this.activeScript?null!==(e=this.plugin.settings.scriptEngineSettings[this.activeScript])&&void 0!==e?e:{}:null}async setScriptSettings(e){if(!this.activeScript)return null;this.plugin.settings.scriptEngineSettings[this.activeScript]=e,await this.plugin.saveSettings()}openFileInNewOrAdjacentLeaf(e){if(!(e&&e instanceof obsidian_module.TFile))return null;if(!this.targetView)return null;const A=getNewOrAdjacentLeaf(this.plugin,this.targetView.leaf);return A.openFile(e,{active:!0}),A}measureText(e){var A,t;const n=_measureText(e,this.style.fontSize,this.style.fontFamily);return{width:null!==(A=n.w)&&void 0!==A?A:0,height:null!==(t=n.h)&&void 0!==t?t:0}}async getOriginalImageSize(e){var A;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return errorMessage("targetView not set","getOriginalImageSize()"),null;if(!e||"image"!==e.type)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const t=this.targetView.excalidrawData.getFile(e.fileId);if(!t)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const n="dark"===this.getExcalidrawAPI().getAppState().theme,i=t.getImage(n);return await getImageSize(i)}verifyMinimumPluginVersion(e){return PLUGIN_VERSION===e||isVersionNewerThanOther(PLUGIN_VERSION,e)}isExcalidrawView(e){return e instanceof ExcalidrawView}selectElementsInView(e){var A;this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?e&&0!==e.length&&this.getExcalidrawAPI().selectElements(e):errorMessage("targetView not set","selectElementsInView()")}generateElementId(){return nanoid()}cloneElement(e){const A=JSON.parse(JSON.stringify(e));return A.id=nanoid(),A}moveViewElementToZIndex(e,A){var t;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","moveViewElementToZIndex()");const n=this.getExcalidrawAPI(),i=this.getViewElements(),a=i.filter((A=>A.id===e));if(0===a.length)return void errorMessage(`Element (id: ${e}) not found`,"moveViewElementToZIndex");if(A>=i.length)return void n.bringToFront(a);if(A<0)return void n.sendToBack(a);const r=i.indexOf(a[0]);i.splice(A,0,i.splice(r,1)[0]),this.targetView.updateScene({elements:i,commitToHistory:!0})}hexStringToRgb(e){const A=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return[parseInt(A[1],16),parseInt(A[2],16),parseInt(A[3],16)]}rgbToHexString(e){return O$1({r:e[0],g:e[1],b:e[2]}).stringHEX({alpha:!1})}hslToRgb(e){const A=O$1({h:e[0],s:e[1],l:e[2]});return[A.red,A.green,A.blue]}rgbToHsl(e){const A=O$1({r:e[0],g:e[1],b:e[2]});return[A.hue,A.saturation,A.lightness]}colorNameToHex(e){return COLOR_NAMES.has(e.toLowerCase().trim())?COLOR_NAMES.get(e.toLowerCase().trim()):e.trim()}getCM(e){if(e)return"string"==typeof e&&(e=this.colorNameToHex(e)),O$1(e);log("Creates a CM object. Visit https://github.com/lbragile/ColorMaster for documentation.")}importSVG(e){const A=svgToExcalidraw(e);return A.hasErrors?(new obsidian_module.Notice(`There were errors while parsing the given SVG:\n${[...A.errors].map((e=>e.innerHTML))}`),!1):(this.copyViewElementsToEAforEditing(A.content),!0)}}async function initExcalidrawAutomate(e){await initFonts();const A=new ExcalidrawAutomate(e);return window.ExcalidrawAutomate=A,A}function destroyExcalidrawAutomate(){delete window.ExcalidrawAutomate}function normalizeLinePoints(e){const A=[],[t,n]=e[0];for(let i=0;i-1||A.search("excalidraw-plugin: locked\n")>-1;await a.loadData(A,l,o?TextMode.parsed:TextMode.raw);let d=A.search("# Text Elements\n");-1==d&&(d=A.search("# Drawing\n"));let h=a.scene;t&&await n.loadSceneFiles(a,(e=>{if(e&&0!==e.length){for(const A of e)A.hasSVGwithBitmap&&(c=!0),a.scene.files[A.id]={mimeType:A.mimeType,id:A.id,dataURL:A.dataURL,created:A.created};h=scaleLoadedImage(a.scene,e).scene}}),i);let u=h.elements;if(s.hasGroupref){const A=s.hasSectionref?getTextElementsMatchingQuery(h.elements,["# "+s.sectionref],!0):h.elements.filter((e=>e.id===s.blockref));A.length>0&&(u=e.ea.getElementsInTheSameGroupWithElement(A[0],h.elements))}return s.hasTaskbone&&(u=u.filter((A=>{var t;return"freedraw"===A.type||"image"===A.type&&!e.isExcalidrawFile(null===(t=a.getFile(A.fileId))||void 0===t?void 0:t.file)}))),{elements:u,appState:h.appState,frontmatter:A.substring(0,d),files:h.files,hasSVGwithBitmap:c}}return{elements:[],appState:{},frontmatter:null,files:[],hasSVGwithBitmap:c}}async function createPNG(e,A=1,t,n,i,a,r,s=[],o,l,c,d){var h,u,g,p,m,w,f;n||(n=new EmbeddedFilesLoader(o)),c=null!=c?c:o.settings.exportPaddingSVG;const B=e?await getTemplate(o,e,!0,n,l):null;let E=null!==(h=null==B?void 0:B.elements)&&void 0!==h?h:[];E=E.concat(s);const b=null!=d?d:{};return(null==B?void 0:B.files)&&Object.values(B.files).forEach((e=>{b[e.id]=e})),await getPNG({type:"excalidraw",version:2,source:"https://excalidraw.com",elements:E,appState:{theme:null!==(g=null!=i?i:null===(u=null==B?void 0:B.appState)||void 0===u?void 0:u.theme)&&void 0!==g?g:a,viewBackgroundColor:null!==(m=null===(p=null==B?void 0:B.appState)||void 0===p?void 0:p.viewBackgroundColor)&&void 0!==m?m:r},files:b},{withBackground:null!==(w=null==t?void 0:t.withBackground)&&void 0!==w?w:o.settings.exportWithBackground,withTheme:null!==(f=null==t?void 0:t.withTheme)&&void 0!==f?f:o.settings.exportWithTheme},c,A)}async function createSVG(e,A=!1,t,n,i,a,r,s=[],o,l,c,d){var h,u,g,p,m,w,f;n||(n=new EmbeddedFilesLoader(o));const B=e?await getTemplate(o,e,!0,n,l):null;let E=null!==(h=null==B?void 0:B.elements)&&void 0!==h?h:[];E=E.concat(s),c=null!=c?c:o.settings.exportPaddingSVG;const b=null!=d?d:{};(null==B?void 0:B.files)&&Object.values(B.files).forEach((e=>{b[e.id]=e}));const C=await getSVG({type:"excalidraw",version:2,source:"https://excalidraw.com",elements:E,appState:{theme:null!==(g=null!=i?i:null===(u=null==B?void 0:B.appState)||void 0===u?void 0:u.theme)&&void 0!==g?g:a,viewBackgroundColor:null!==(m=null===(p=null==B?void 0:B.appState)||void 0===p?void 0:p.viewBackgroundColor)&&void 0!==m?m:r},files:b},{withBackground:null!==(w=null==t?void 0:t.withBackground)&&void 0!==w?w:o.settings.exportWithBackground,withTheme:null!==(f=null==t?void 0:t.withTheme)&&void 0!==f?f:o.settings.exportWithTheme},c),v=getEmbeddedFilenameParts(e);if(!v.hasGroupref&&(v.hasBlockref||v.hasSectionref)){let e=v.hasSectionref?getTextElementsMatchingQuery(E,["# "+v.sectionref],!0):E.filter((e=>e.id===v.blockref));if(e.length>0){const A=e[0].containerId;A&&(e=e.concat(E.filter((e=>e.id===A))));const t=o.ea.getBoundingBox(e),n=o.ea.getBoundingBox(E);C.viewBox.baseVal.x=t.topX-n.topX,C.viewBox.baseVal.y=t.topY-n.topY,C.viewBox.baseVal.width=t.width+2*c,C.viewBox.baseVal.height=t.height+2*c}}return(null==B?void 0:B.hasSVGwithBitmap)&&C.setAttribute("hasbitmap","true"),A?embedFontsInSVG(C,o):C}function estimateLineBound(e){let A=1/0,t=1/0,n=-1/0,i=-1/0;for(const[a,r]of e)A=Math.min(A,a),t=Math.min(t,r),n=Math.max(n,a),i=Math.max(i,r);return[A,t,n,i]}function estimateBounds(e){const A=getCommonBoundingBox(e);return[A.minX,A.minY,A.maxX,A.maxY]}function repositionElementsToCursor(e,A,t=!1){const[n,i,a,r]=estimateBounds(e);let[s,o]=[0,0];return[s,o]=t?[A.x-(n+a)/2,A.y-(i+r)/2]:[A.x-n,A.y-i],e.forEach((e=>{e.x=e.x+s,e.y=e.y+o})),e}function errorMessage(e,A){switch(e){case"targetView not set":errorlog({where:"ExcalidrawAutomate",source:A,message:"targetView not set, or no longer active. Use setView before calling this function"});break;case"mobile not supported":errorlog({where:"ExcalidrawAutomate",source:A,message:"this function is not avalable on Obsidian Mobile"});break;default:errorlog({where:"ExcalidrawAutomate",source:A,message:"unknown error"})}}const insertLaTeXToView=e=>{const A=e.plugin.app,t=e.plugin.ea;new Prompt(A,t$d("ENTER_LATEX"),"","\\color{red}\\oint_S {E_n dA = \\frac{1}{{\\varepsilon _0 }}} Q_{inside}").openAndGetValue((async A=>{A&&(t.reset(),await t.addLaTex(0,0,A),t.setView(e),t.addElementsToView(!0,!1,!0))}))},search=async e=>{const A=e.plugin.ea;A.reset(),A.setView(e);const t=A.getViewElements().filter((e=>"text"===e.type));if(0===t.length)return;let n=await ScriptEngine.inputPrompt(e.plugin.app,"Search for","use quotation marks for exact match","");if(!n)return;const i=n.matchAll(/"(.*?)"/g);let a,r=[];for(;!(a=i.next()).done;)r.push(a.value[1]);n=n.replaceAll(/"(.*?)"/g,""),r=r.concat(n.split(" ").filter((e=>0!==e.length))),A.targetView.selectElementsMatchingQuery(t,r)},getTextElementsMatchingQuery=(e,A,t=!1)=>e&&0!==e.length&&A&&0!==A.length?e.filter((e=>"text"===e.type&&A.some((A=>{if(t){const t=e.rawText.toLowerCase().split("\n")[0].trim().match(/^#*(# .*)/);return!(!t||2!==t.length)&&t[1]===A.toLowerCase()}return e.rawText.toLowerCase().replaceAll("\n"," ").trim().match(A.toLowerCase())})))):[],cloneElement=e=>Object.assign(Object.assign({},e),{version:e.version+1,updated:Date.now(),versionNonce:Math.floor(1e9*Math.random())}),URL$1="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/index-new.md";class ScriptInstallPrompt extends obsidian_module.Modal{constructor(e){super(e.app),this.plugin=e}async onOpen(){this.contentEl.classList.add("excalidraw-scriptengine-install"),this.containerEl.classList.add("excalidraw-scriptengine-install");try{const e=await obsidian_module.request({url:URL$1});if(!e)return new obsidian_module.Notice("Error opening the Excalidraw Script Store page. Please double check that you can access the website. I've logged the link in developer console (press CTRL+SHIFT+i)",5e3),log(URL$1),void this.close();await obsidian_module.MarkdownRenderer.renderMarkdown(e,this.contentEl,"",this.plugin),this.contentEl.querySelectorAll("h1[data-heading],h2[data-heading],h3[data-heading]").forEach((e=>{e.setAttribute("id",e.getAttribute("data-heading"))})),this.contentEl.querySelectorAll("a.internal-link").forEach((e=>{e.removeAttribute("target")}))}catch(e){errorlog({where:"ScriptInstallPrompt.onOpen",error:e}),new obsidian_module.Notice("Could not open ScriptEngine repository"),this.close()}}onClose(){this.contentEl.empty()}}function r(e){var A,t,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(A=0;A{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.plugin.saveSettings();const e=this.plugin.settings.customPens[this.pen],A=this.view.excalidrawAPI;setPen(e,A),A.setActiveTool({type:"freedraw"})}}async createForm(){const e=e=>{let A="";if(COLOR_NAMES.has(e))return[COLOR_NAMES.get(e),A];const t=(new Option).style;if(t.color=e,t.color){const e=t.color.match(/^[^\d]*(\d*)[^\d]*(\d*)[^\d]*(\d*)[^\d]*([\d\.]*)?/);return e?(A=e[4]?(Math.round(255*parseFloat(e[4]))<<0).toString(16).padStart(2,"0"):"",[`#${(parseInt(e[1])<<0).toString(16).padStart(2,"0")}${(parseInt(e[2])<<0).toString(16).padStart(2,"0")}${(parseInt(e[3])<<0).toString(16).padStart(2,"0")}`,A]):[null,A]}return[null,A]},A=this.plugin.settings.customPens[this.pen],t=this.contentEl;let n,i,a,r,s;t.createEl("h1",{text:"Pen settings"}),new obsidian_module.Setting(t).setName("Pen type").setDesc("Select type of pen").addDropdown((e=>{e.addOption("default","Excalidraw Default").addOption("highlighter","Highlighter").addOption("finetip","Fine tip pen").addOption("fountain","Fountain pen").addOption("marker","Marker with Outline").addOption("thick-thin","Mindmap Thick-Thin").addOption("thin-thick-thin","Mindmap Thin-Thick-Thin").setValue(A.type).onChange((e=>{this.dirty=!0,A.type=e}))})).addButton((e=>e.setButtonText("Apply").onClick((()=>{this.dirty=!0,A.strokeColor=PENS[A.type].strokeColor,A.backgroundColor=PENS[A.type].backgroundColor,A.fillStyle=PENS[A.type].fillStyle,A.strokeWidth=PENS[A.type].strokeWidth,A.roughness=PENS[A.type].roughness,A.penOptions=Object.assign({},PENS[A.type].penOptions),t.empty(),this.createForm()})))),n=new obsidian_module.Setting(t).setName(fragWithHTML(A.freedrawOnly?"Stroke & fill applies to: Freedraw only":"Stroke & fill applies to: All shapes")).setDesc(fragWithHTML('"All shapes" means that if for example, you select a blue pen with dashed fill and then switch to a different tool (e.g. to a line, a circle, an arrow - i.e. not the freedraw tool), those will all have the same blue line and dashed fill.
"Only applies to the freedraw line" means that if for example you are writing black text, and you select a custom pen (e.g. a yellow highlighter), then after using the highlighter you switch to another tool, the previous settings (e.g. black stroke color) will apply to the new shape.')).addToggle((e=>e.setValue(A.freedrawOnly).onChange((e=>{this.dirty=!0,n.setName(fragWithHTML(e?"Stroke & fill applies to: Freedraw only":"Stroke & fill applies to: All shapes")),A.freedrawOnly=e}))));let o,l,c,d,h,u,g,[p,m]=e(A.strokeColor),w=!1;s=new obsidian_module.Setting(t).setName(fragWithHTML(Boolean(A.strokeColor)?"Stroke color: Preset color":"Stroke color: Current")).setDesc(fragWithHTML("Use current stroke color of the canvas, or set a specific preset color for the pen")).addToggle((t=>t.setValue(!Boolean(A.strokeColor)).onChange((t=>{this.dirty=!0,i.settingEl.style.display=t?"none":"",s.setName(fragWithHTML(t?"Stroke color: Current":"Stroke color: Preset color")),t?delete A.strokeColor:(r.getValue()||([p,m]=e("black"),a.setValue(p),r.setValue("black")),A.strokeColor=r.getValue())})))),i=new obsidian_module.Setting(t).setName("Select stroke color").addButton((t=>t.setButtonText("Use Canvas Current").onClick((()=>{var t,n;const i=this.api.getAppState(),s=null!==(n=null===(t=i.resetCustomPen)||void 0===t?void 0:t.currentItemStrokeColor)&&void 0!==n?n:i.currentItemStrokeColor;[p,m]=e(s),A.strokeColor=s,this.dirty=!0,r.setValue(s),w=!0,a.setValue(p)})))).addText((t=>{r=t,t.setValue(A.strokeColor).onChange((t=>{w=!0,this.dirty=!0,A.strokeColor=t,[p,m]=e(t),p&&a.setValue(p)}))})).addColorPicker((e=>{a=e,e.setValue(null!=p?p:"#000000").onChange((e=>{w?w=!1:(this.dirty=!0,A.strokeColor=e+m,r.setValue(e+m))}))})),i.settingEl.style.display=Boolean(A.strokeColor)?"":"none";let[f,B]=e(A.backgroundColor);o=new obsidian_module.Setting(t).setName(fragWithHTML(Boolean(A.backgroundColor)?"Background color: Preset color":"Background color: Current")).setDesc(fragWithHTML("Toggle to use the current background color of the canvas; or a preset color")).addToggle((t=>t.setValue(!Boolean(A.backgroundColor)).onChange((t=>{this.dirty=!0,o.setName(fragWithHTML(t?"Background color: Current":"Background color: Preset color")),c.settingEl.style.display=t?"none":"",l.settingEl.style.display=t||"transparent"===A.backgroundColor?"none":"",t?delete A.backgroundColor:(h.getValue()||([f,B]=e("black"),d.setValue(f),h.setValue("black")),u.setValue(!1))})))),c=new obsidian_module.Setting(t).setName(fragWithHTML("transparent"===A.backgroundColor?"Background: Transparent":"Color: Preset color")).setDesc("Background has color or is transparent").addToggle((e=>{u=e,e.setValue("transparent"===A.backgroundColor).onChange((e=>{this.dirty=!0,l.settingEl.style.display=e?"none":"",g.settingEl.style.display=e?"none":"",c.setName(fragWithHTML(e?"Background: Transparent":"Color: Preset color")),A.backgroundColor=e?"transparent":d.getValue()}))})),c.settingEl.style.display=Boolean(A.backgroundColor)?"":"none";let E,b,C,v,y,F,x,T,S,Q=!1;l=new obsidian_module.Setting(t).setName("Background color").addButton((t=>t.setButtonText("Use Canvas Current").onClick((()=>{var t,n;const i=this.api.getAppState(),a=null!==(n=null===(t=i.resetCustomPen)||void 0===t?void 0:t.currentItemBackgroundColor)&&void 0!==n?n:i.currentItemBackgroundColor;[f,B]=e(a),A.backgroundColor=a,this.dirty=!0,h.setValue(a),Q=!0,d.setValue(f)})))).addText((t=>{h=t,t.setValue(A.backgroundColor).onChange((t=>{Q=!0,this.dirty=!0,A.backgroundColor=t,[f,B]=e(t),f&&d.setValue(f)}))})).addColorPicker((e=>{d=e,e.setValue(null!=f?f:"#000000").onChange((e=>{Q?Q=!1:(this.dirty=!0,A.backgroundColor=e+B,h.setValue(e+B))}))})),l.settingEl.style.display=Boolean(A.backgroundColor)&&"transparent"!==A.backgroundColor?"":"none",g=new obsidian_module.Setting(t).setName("Fill Style").addDropdown((e=>e.addOption("","Unset").addOption("dots","Dots (⚠ VERY SLOW performance on large objects!)").addOption("zigzag","Zigzag").addOption("zigzag-line","Zigzag-line").addOption("dashed","Dashed").addOption("hachure","Hachure").addOption("cross-hatch","Cross-hatch").addOption("solid","Solid").setValue(A.fillStyle).onChange((e=>{this.dirty=!0,A.fillStyle=e})))),g.settingEl.style.display=Boolean(A.backgroundColor)&&"transparent"!==A.backgroundColor?"":"none",E=new obsidian_module.Setting(t).setName(fragWithHTML(`Sloppiness: ${null===A.roughness?"Not Set":A.roughness<=.5?"Architect (":A.roughness<=1.5?"Artist (":"Cartoonist ("}${null===A.roughness?"":`${A.roughness})`}`)).setDesc("Line sloppiness of the shape fill pattern").addSlider((e=>e.setLimits(-.5,3,.5).setValue(null===A.roughness?-.5:A.roughness).onChange((e=>{this.dirty=!0,A.roughness=-.5===e?null:e,E.setName(fragWithHTML(`Sloppiness: ${null===A.roughness?"Not Set":A.roughness<=.5?"Architect (":A.roughness<=1.5?"Artist (":"Cartoonist ("}${null===A.roughness?"":`${A.roughness})`}`))})))),b=new obsidian_module.Setting(t).setName(fragWithHTML(`Stroke Width ${0===A.strokeWidth?"Not Set":A.strokeWidth}`)).addSlider((e=>e.setLimits(0,5,.5).setValue(A.strokeWidth).onChange((e=>{this.dirty=!0,A.strokeWidth=e,b.setName(fragWithHTML(`Stroke Width ${0===A.strokeWidth?"Not Set":A.strokeWidth}`))})))),new obsidian_module.Setting(t).setName("Highlighter pen?").addToggle((e=>e.setValue(A.penOptions.highlighter).onChange((e=>{this.dirty=!0,A.penOptions.highlighter=e})))),new obsidian_module.Setting(t).setName("Pressure sensitve pen?").setDesc(fragWithHTML("toggle on: pressure sensitive
toggle off: constant pressure")).addToggle((e=>e.setValue(!A.penOptions.constantPressure).onChange((e=>{this.dirty=!0,A.penOptions.constantPressure=!e,C.settingEl.style.display=A.penOptions.constantPressure?"none":""})))),A.penOptions.hasOutline&&0===A.penOptions.outlineWidth&&(A.penOptions.outlineWidth=.5,this.dirty=!0),!A.penOptions.hasOutline&&A.penOptions.outlineWidth>0&&(A.penOptions.outlineWidth=0,this.dirty=!0),v=new obsidian_module.Setting(t).setName(fragWithHTML(0===A.penOptions.outlineWidth?"No outline":`Outline width ${A.penOptions.outlineWidth}`)).setDesc("If the stroke has an outline, this will mean the stroke color is the outline color, and the background color is the pen stroke's fill color. If the pen does not have an outline then the pen color is the stroke color. The Fill Style setting applies to the fill style of the enclosed shape, not of the line itself. The line can only have solid fill.").addSlider((e=>e.setLimits(0,8,.5).setValue(A.penOptions.outlineWidth).onChange((e=>{this.dirty=!0,A.penOptions.outlineWidth=e,A.penOptions.hasOutline=e>0,v.setName(fragWithHTML(0===A.penOptions.outlineWidth?"No outline":`Outline width ${A.penOptions.outlineWidth}`))})))),t.createEl("h2",{text:"Perfect Freehand settings"}),t.createEl("p").innerHTML='Read the Perfect Freehand documentation following this link.',y=new obsidian_module.Setting(t).setName(fragWithHTML(`Thinnning ${A.penOptions.options.thinning}`)).setDesc(fragWithHTML("The effect of pressure on the stroke's size.
To create a stroke with a steady line, set the thinning option to 0.
To create a stroke that gets thinner with pressure instead of thicker, use a negative number for the thinning option.")).addSlider((e=>e.setLimits(-1,1,.05).setValue(A.penOptions.options.thinning).onChange((e=>{this.dirty,y.setName(fragWithHTML(`Thinnning ${e}`)),A.penOptions.options.thinning=e})))),F=new obsidian_module.Setting(t).setName(fragWithHTML(`Smoothing ${A.penOptions.options.smoothing}`)).setDesc(fragWithHTML("How much to soften the stroke's edges.")).addSlider((e=>e.setLimits(0,1,.05).setValue(A.penOptions.options.smoothing).onChange((e=>{this.dirty,F.setName(fragWithHTML(`Smoothing ${e}`)),A.penOptions.options.smoothing=e})))),x=new obsidian_module.Setting(t).setName(fragWithHTML(`Streamline ${A.penOptions.options.streamline}`)).setDesc(fragWithHTML("\tHow much to streamline the stroke.")).addSlider((e=>e.setLimits(0,1,.05).setValue(A.penOptions.options.streamline).onChange((e=>{this.dirty,x.setName(fragWithHTML(`Streamline ${e}`)),A.penOptions.options.streamline=e})))),new obsidian_module.Setting(t).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(A.penOptions.options.easing).onChange((e=>{this.dirty=!0,A.penOptions.options.easing=e})))),C=new obsidian_module.Setting(t).setName("Simulate Pressure").setDesc("Whether to simulate pressure based on velocity.").addDropdown((e=>e.addOption("true","Always").addOption("false","Never").addOption("","Yes for mouse, No for pen").setValue(!0===A.penOptions.options.simulatePressure?"true":!1===A.penOptions.options.simulatePressure?"false":"").onChange((e=>{switch(this.dirty=!0,e){case"true":A.penOptions.options.simulatePressure=!0;break;case"false":A.penOptions.options.simulatePressure=!1;break;default:delete A.penOptions.options.simulatePressure}})))),C.settingEl.style.display=A.penOptions.constantPressure?"none":"",t.createEl("h3",{text:"Start"}),t.createEl("p",{text:"Tapering options for the start of the line."}),new obsidian_module.Setting(t).setName("Cap Start").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(A.penOptions.options.start.cap).onChange((e=>{this.dirty=!0,A.penOptions.options.start.cap=e})))),T=new obsidian_module.Setting(t).setName(fragWithHTML(`Taper: ${!0===A.penOptions.options.start.taper?"true":A.penOptions.options.start.taper}`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof A.penOptions.options.start.taper?151:A.penOptions.options.start.taper).onChange((e=>{this.dirty,A.penOptions.options.start.taper=151===e||e,T.setName(fragWithHTML(`Taper: ${!0===A.penOptions.options.start.taper?"true":A.penOptions.options.start.taper}`))})))),new obsidian_module.Setting(t).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(A.penOptions.options.start.easing).onChange((e=>{this.dirty=!0,A.penOptions.options.start.easing=e})))),t.createEl("h3",{text:"End"}),t.createEl("p",{text:"Tapering options for the end of the line."}),new obsidian_module.Setting(t).setName("Cap End").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(A.penOptions.options.end.cap).onChange((e=>{this.dirty=!0,A.penOptions.options.end.cap=e})))),S=new obsidian_module.Setting(t).setName(fragWithHTML(`Taper: ${!0===A.penOptions.options.end.taper?"true":A.penOptions.options.end.taper}`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof A.penOptions.options.end.taper?151:A.penOptions.options.end.taper).onChange((e=>{this.dirty,A.penOptions.options.end.taper=151===e||e,S.setName(fragWithHTML(`Taper: ${!0===A.penOptions.options.end.taper?"true":A.penOptions.options.end.taper}`))})))),new obsidian_module.Setting(t).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(A.penOptions.options.end.easing).onChange((e=>{this.dirty=!0,A.penOptions.options.end.easing=e}))))}}const ICONS={ExportImage:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("g",{strokeWidth:"1.25"},React__namespace.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),React__namespace.createElement("path",{d:"M15 8h.01"}),React__namespace.createElement("path",{d:"M12 20h-5a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v5"}),React__namespace.createElement("path",{d:"M4 15l4 -4c.928 -.893 2.072 -.893 3 0l4 4"}),React__namespace.createElement("path",{d:"M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"}),React__namespace.createElement("path",{d:"M19 16v6"}),React__namespace.createElement("path",{d:"M22 19l-3 3l-3 -3"}))),Discord:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",stroke:"none",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 640 512"},React__namespace.createElement("path",{d:"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"})),Github:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}),React__namespace.createElement("path",{d:"M9 18c-4.51 2-5-2-7-2"})),YouTube:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M12 19c-2.3 0-6.4-.2-8.1-.6-.7-.2-1.2-.7-1.4-1.4-.3-1.1-.5-3.4-.5-5s.2-3.9.5-5c.2-.7.7-1.2 1.4-1.4C5.6 5.2 9.7 5 12 5s6.4.2 8.1.6c.7.2 1.2.7 1.4 1.4.3 1.1.5 3.4.5 5s-.2 3.9-.5 5c-.2.7-.7 1.2-1.4 1.4-1.7.4-5.8.6-8.1.6 0 0 0 0 0 0z"}),React__namespace.createElement("polygon",{points:"10 15 15 12 10 9"})),heart:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M20.42 4.58a5.4 5.4 0 0 0-7.65 0l-.77.78-.77-.78a5.4 5.4 0 0 0-7.65 0C1.46 6.7 1.33 10.28 4 13l8 8 8-8c2.67-2.72 2.54-6.3.42-8.42z"})),twitter:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"})),exportLibrary:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 190",fill:"var(--icon-fill-color)"},React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M50 10h20v20H50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M50 10h20m-20 0h20m0 0v20m0-20v20m0 0H50m20 0H50m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M90 10h20v20H90"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M90 10h20m-20 0h20m0 0v20m0-20v20m0 0H90m20 0H90m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M130 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M130 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M170 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M170 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M70 50h60v80h20l-50 50-50-50h20V50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M70 50h60m-60 0h60m0 0v80m0-80v80m0 0h20m-20 0h20m0 0-50 50m50-50-50 50m0 0-50-50m50 50-50-50m0 0h20m-20 0h20m0 0V50m0 80V50m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M10 10h20v20H10"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M10 10h20m-20 0h20m0 0v20m0-20v20m0 0H10m20 0H10m0 0V10m0 20V10"}))),insertImage:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"})),insertMD:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"})),insertLaTeX:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"})),insertLink:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"})),exportSVG:React__namespace.createElement("svg",{viewBox:"0 0 28 28",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"1"},React__namespace.createElement("text",{style:{fontSize:"28px",fontWeight:"bold"},x:"4",y:"24"},"S")),exportPNG:React__namespace.createElement("svg",{viewBox:"0 0 28 28",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"1"},React__namespace.createElement("text",{style:{fontSize:"28px",fontWeight:"bold"},x:"4",y:"24"},"P")),exportExcalidraw:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",stroke:"var(--icon-fill-color)",strokeWidth:"2"},React__namespace.createElement("g",{transform:"translate(30,5)"},React__namespace.createElement("path",{d:"M14.45 1.715c-2.723 2.148-6.915 5.797-10.223 8.93l-2.61 2.445.477 3.207c.258 1.75.738 5.176 1.031 7.582.332 2.406.66 4.668.773 4.996.145.438 0 .656-.406.656-.699 0-.734-.183 1.176 5.832.7 2.297 1.363 4.414 1.434 4.633.074.254.367.363.699.254.332-.145.515-.438.406-.691-.113-.293.074-.586.367-.696.403-.144.367-.437-.258-1.492-.992-1.64-3.53-15.64-3.675-20.164-.11-3.207-.11-3.242 1.25-5.066 1.324-1.786 4.375-4.485 9.078-7.91 1.324-.985 2.648-2.079 3.015-2.446.551-.656.809-.472 5.442 4.414 2.683 2.805 5.664 5.688 6.617 6.414l1.766 1.313-1.36 2.844c-.734 1.53-3.715 7.437-6.656 13.054-6.137 11.813-4.887 10.68-12.02 10.79l-4.632.038-1.547 1.75c-1.617 1.86-1.836 2.551-1.063 3.72.293.398.512 1.054.512 1.456 0 .656.258.766 1.73.84.918.035 1.762.145 1.875.254.11.11.258 2.371.368 5.031l.144 4.813-2.46 5.25C1.616 72.516 0 76.527 0 77.84c0 .691.148 1.273.293 1.273.367 0 .367-.035 15.332-30.988 6.95-14.363 13.531-27.89 14.633-30.113 1.101-2.227 2.094-4.266 2.168-4.559.074-.328-2.461-2.844-6.508-6.379C22.281 3.864 19.082.95 18.785.621c-.844-1.023-2.094-.695-4.336 1.094zM15.7 43.64c-1.692 3.246-1.766 3.28-6.4 3.5-4.081.218-4.152.183-4.152-.582 0-.438-.148-1.024-.332-1.313-.222-.328-.074-.914.442-1.715l.808-1.238h3.676c2.024-.04 4.34-.184 5.149-.328.808-.149 1.507-.219 1.578-.184.074.035-.293.875-.77 1.86zm-3.09 5.832c-.294.765-1.067 2.37-1.692 3.574-1.027 2.043-1.137 2.113-1.395 1.277-.148-.511-.257-2.008-.296-3.355-.036-2.66-.11-2.625 2.98-2.809l.992-.035zm0 0"}),React__namespace.createElement("path",{d:"M15.55 10.39c-.66.473-.843.95-.843 2.153 0 1.422.11 1.64 1.102 2.039.992.402 1.25.367 2.39-.398 1.508-1.024 1.543-1.278.442-2.918-.957-1.422-1.914-1.676-3.09-.875zm2.098 1.313c.586 1.02.22 1.785-.882 1.785-.993 0-1.434-.984-.883-1.968.441-.801 1.285-.727 1.765.183zm0 0M38.602 18.594c0 .183-.22.363-.477.363-.219 0-.844 1.023-1.324 2.262-1.469 3.793-16.176 32.629-16.211 31.718 0-.472-.223-.8-.59-.8-.516 0-.59.289-.367 1.71.219 1.641.074 2.008-5.149 12.071-2.941 5.723-6.101 11.703-7.02 13.305-.956 1.68-1.69 3.5-1.765 4.265-.11 1.313.035 1.496 3.235 4.23 1.84 1.606 4.191 3.61 5.222 4.52 4.63 4.196 6.801 5.871 7.387 5.762.883-.145 14.523-14.328 14.559-15.129 0-.367-.66-5.906-1.47-12.324-1.398-10.938-2.722-23.734-2.573-24.973.109-.765-.442-4.633-.844-6.308-.332-1.313-.184-1.86 2.46-7.84 1.544-3.535 3.567-7.875 4.45-9.625.844-1.75 1.582-3.281 1.582-3.39 0-.11-.258-.18-.55-.18-.298 0-.555.144-.555.363zm-8.454 27.234c.403 2.55 1.211 8.676 1.801 13.598 1.14 9.043 2.461 19.07 2.832 21.62.219 1.278.07 1.532-2.316 4.157-4.156 4.629-8.567 9.188-10.074 10.356l-1.399 1.093-7.168-6.636c-6.617-6.051-7.168-6.672-6.765-7.403.222-.398 2.097-3.789 4.156-7.508 2.058-3.718 4.777-8.68 6.027-11.011 1.29-2.371 2.465-4.41 2.684-4.52.258-.148.332 3.535.258 11.375-.149 11.703-.11 11.739 1.066 11.485.148 0 .258-5.907.258-13.09V56.293l3.86-7.656c2.132-4.23 3.898-7.621 3.972-7.586.07.039.441 2.187.808 4.777zm0 0"}))),search:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7C401.8 87.79 326.8 13.32 235.2 1.723C99.01-15.51-15.51 99.01 1.724 235.2c11.6 91.64 86.08 166.7 177.6 178.9c53.8 7.189 104.3-6.236 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 0C515.9 484.7 515.9 459.3 500.3 443.7zM79.1 208c0-70.58 57.42-128 128-128s128 57.42 128 128c0 70.58-57.42 128-128 128S79.1 278.6 79.1 208z"})),ocr:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"m6 18 6-12 6 12"}),React__namespace.createElement("path",{d:"M8 14h8"}),React__namespace.createElement("path",{d:"M3 7V5a2 2 0 0 1 2-2h2"}),React__namespace.createElement("path",{d:"M17 3h2a2 2 0 0 1 2 2v2"}),React__namespace.createElement("path",{d:"M21 17v2a2 2 0 0 1-2 2h-2"}),React__namespace.createElement("path",{d:"M7 21H5a2 2 0 0 1-2-2v-2"})),scriptEngine:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"4"},React__namespace.createElement("g",{transform:"translate(-8,-8)"},React__namespace.createElement("path",{d:"M24.318 37.983c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749m.126-.104c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749",fill:"none",strokeWidth:"2"}),React__namespace.createElement("path",{d:"M81.235 56.502a23.3 23.3 0 0 1-1.46 8.068 20.785 20.785 0 0 1-1.762 3.72 24.068 24.068 0 0 1-5.337 6.26 22.575 22.575 0 0 1-3.449 2.358 23.726 23.726 0 0 1-7.803 2.803 24.719 24.719 0 0 1-8.333 0 24.102 24.102 0 0 1-4.028-1.074 23.71 23.71 0 0 1-3.776-1.729 23.259 23.259 0 0 1-6.369-5.265 23.775 23.775 0 0 1-2.416-3.353 24.935 24.935 0 0 1-1.762-3.72 23.765 23.765 0 0 1-1.083-3.981 23.454 23.454 0 0 1 0-8.173c.252-1.336.604-2.698 1.083-3.956a24.935 24.935 0 0 1 1.762-3.72 22.587 22.587 0 0 1 2.416-3.378c.881-1.048 1.888-2.017 2.946-2.908a24.38 24.38 0 0 1 3.423-2.357 23.71 23.71 0 0 1 3.776-1.73 21.74 21.74 0 0 1 4.028-1.047 23.437 23.437 0 0 1 8.333 0 24.282 24.282 0 0 1 7.803 2.777 26.198 26.198 0 0 1 3.45 2.357 24.62 24.62 0 0 1 5.336 6.287 20.785 20.785 0 0 1 1.762 3.72 21.32 21.32 0 0 1 1.083 3.955c.251 1.336.302 3.405.377 4.086.05.681.05-.68 0 0",fill:"none"}),React__namespace.createElement("path",{d:"M69.404 56.633c-6.596-3.3-13.216-6.6-19.51-9.744m19.51 9.744c-6.747-3.379-13.493-6.758-19.51-9.744m0 0v19.489m0-19.49v19.49m0 0c4.355-2.148 8.71-4.322 19.51-9.745m-19.51 9.745c3.978-1.965 7.93-3.956 19.51-9.745m0 0h0m0 0h0"}))),openLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),openLinkProperties:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8",fill:"var(--icon-fill-color)"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),switchToMarkdown:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",strokeWidth:"10",fill:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"})),gotoFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 32H32C14.31 32 0 46.31 0 64v96c0 17.69 14.31 32 32 32s32-14.31 32-32V96h64c17.69 0 32-14.31 32-32S145.7 32 128 32zM416 32h-96c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32V64C448 46.31 433.7 32 416 32zM128 416H64v-64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96c0 17.69 14.31 32 32 32h96c17.69 0 32-14.31 32-32S145.7 416 128 416zM416 320c-17.69 0-32 14.31-32 32v64h-64c-17.69 0-32 14.31-32 32s14.31 32 32 32h96c17.69 0 32-14.31 32-32v-96C448 334.3 433.7 320 416 320z"})),exitFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 320H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32v-96C160 334.3 145.7 320 128 320zM416 320h-96c-17.69 0-32 14.31-32 32v96c0 17.69 14.31 32 32 32s32-14.31 32-32v-64h64c17.69 0 32-14.31 32-32S433.7 320 416 320zM320 192h96c17.69 0 32-14.31 32-32s-14.31-32-32-32h-64V64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96C288 177.7 302.3 192 320 192zM128 32C110.3 32 96 46.31 96 64v64H32C14.31 128 0 142.3 0 160s14.31 32 32 32h96c17.69 0 32-14.31 32-32V64C160 46.31 145.7 32 128 32z"})),releaseNotes:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M0 219.2v212.5c0 14.25 11.62 26.25 26.5 27C75.32 461.2 180.2 471.3 240 511.9V245.2C181.4 205.5 79.99 194.8 29.84 192C13.59 191.1 0 203.6 0 219.2zM482.2 192c-50.09 2.848-151.3 13.47-209.1 53.09C272.1 245.2 272 245.3 272 245.5v266.5c60.04-40.39 164.7-50.76 213.5-53.28C500.4 457.9 512 445.9 512 431.7V219.2C512 203.6 498.4 191.1 482.2 192zM352 96c0-53-43-96-96-96S160 43 160 96s43 96 96 96S352 149 352 96z"})),rawMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 60"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"4",d:"M20 10H10m10 0H10m0 0v40m0-40v40m0 0h10m-10 0h10M40 10H30m10 0H30m0 0v40m0-40v40m0 0h10m-10 0h10M60 10h10m-10 0h10m0 0v40m0-40v40m0 0H60m10 0H60M80 10h10m-10 0h10m0 0v40m0-40v40m0 0H80m10 0H80"})),parsedMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M574.1 280.4l-45.38-181.8c-5.875-23.63-21.62-44-43-55.75c-21.5-11.75-46.1-14.13-70.25-6.375l-15.25 5.125c-8.375 2.75-12.87 11.88-10 20.25l5 15.13c2.75 8.375 11.88 12.88 20.25 10.13l13.12-4.375c10.88-3.625 23-3.625 33.25 1.75c10.25 5.375 17.5 14.5 20.38 25.75l38.38 153.9c-22.12-6.875-49.75-12.5-81.13-12.5c-34.88 0-73.1 7-114.9 26.75H251.4C210.5 258.6 171.4 251.6 136.5 251.6c-31.38 0-59 5.625-81.12 12.5l38.38-153.9c2.875-11.25 10.12-20.38 20.5-25.75C124.4 79.12 136.5 79.12 147.4 82.74l13.12 4.375c8.375 2.75 17.5-1.75 20.25-10.13l5-15.13C188.6 53.49 184.1 44.37 175.6 41.62l-15.25-5.125c-23.13-7.75-48.75-5.375-70.13 6.375c-21.37 11.75-37.12 32.13-43 55.75L1.875 280.4C.6251 285.4 .0001 290.6 .0001 295.9v70.25C.0001 428.1 51.63 480 115.3 480h37.13c60.25 0 110.4-46 114.9-105.4l2.875-38.63h35.75l2.875 38.63C313.3 433.1 363.4 480 423.6 480h37.13c63.62 0 115.2-51 115.2-113.9V295.9C576 290.6 575.4 285.5 574.1 280.4zM203.4 369.7c-2 26-24.38 46.25-51 46.25H115.2C87 415.1 64 393.6 64 366.1v-37.5c18.12-6.5 43.38-13 72.62-13c23.88 0 47.25 4.375 69.88 13L203.4 369.7zM512 366.1c0 27.5-23 49.88-51.25 49.88h-37.13c-26.62 0-49-20.25-51-46.25l-3.125-41.13c22.62-8.625 46.13-13 70-13c29 0 54.38 6.5 72.5 13V366.1z"})),convertFile:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",viewBox:"0 110 700 340",xmlns:"http://www.w3.org/2000/svg",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"m593.95 239.4v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4688-1.457-3.1875-2.6445-5.0742-3.5h-1.5742c-1.4727-0.49219-3.0039-0.78516-4.5508-0.875h-124.25c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v87.5h-70v-105.88-1.0508c-0.089844-1.5469-0.38281-3.0781-0.875-4.5508v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4727-1.457-3.1914-2.6445-5.0742-3.5h-1.5742c-1.7031-0.875-3.5352-1.4688-5.4258-1.75h-123.55c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v245c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-52.5h70v122.5c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-192.5-1.0508c-0.14453-1.5547-0.5-3.0859-1.0508-4.5508zm-313.95 110.6h-140v-210h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v87.5h-52.5c-6.2539 0-12.031 3.3359-15.156 8.75s-3.125 12.086 0 17.5 8.9023 8.75 15.156 8.75h52.5zm140 70v-105h27.824l-5.0742 5.0742c-3.7031 3.1719-5.9141 7.7461-6.1055 12.617-0.1875 4.8711 1.668 9.6016 5.1133 13.051 3.4492 3.4453 8.1797 5.3008 13.051 5.1133 4.8711-0.19141 9.4453-2.4023 12.617-6.1055l35-35c3.2578-3.2773 5.0898-7.7148 5.0898-12.336 0-4.625-1.832-9.0586-5.0898-12.34l-35-35c-4.5078-3.8555-10.66-5.1719-16.348-3.4883-5.6875 1.6797-10.137 6.1289-11.816 11.816-1.6836 5.6914-0.37109 11.844 3.4883 16.348l5.0742 5.0742h-27.824v-69.824h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v157.5z"})),cog:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z"})),trayMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M618.1 97.67c-13.02-4.375-27.45 .1562-35.72 11.16L464 266.7l-118.4-157.8c-8.266-11.03-22.64-15.56-35.72-11.16C296.8 102 288 114.2 288 128v256c0 17.69 14.33 32 32 32s32-14.31 32-32v-160l86.41 115.2c12.06 16.12 39.13 16.12 51.19 0L576 224v160c0 17.69 14.33 32 32 32s32-14.31 32-32v-256C640 114.2 631.2 102 618.1 97.67zM224 96.01H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h64v223.1c0 17.69 14.33 31.99 32 31.99s32-14.3 32-31.99V160h64c17.67 0 32-14.31 32-32S241.7 96.01 224 96.01z"})),copyElementLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 260 260","aria-hidden":"true",focusable:"false",role:"img"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"8",d:"M10 10h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0V10m0 40V10M210 10h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0V10m0 40V10M210 210h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0v-40m0 40v-40M10 210h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0v-40m0 40v-40M30 210V50m0 160V50M50 30h160M50 30h160M230 50v160m0-160v160M50 230h160m-160 0h160"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M110 90c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10m0-80c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10M150 90c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10m0-80c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M89.868 130.198c13.36-.03 66.78-.17 80.13-.2m-80.13.2c13.36-.03 66.78-.17 80.13-.2"})),importSVG:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 526 526"},React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"m133.462 71 .33-6.54.97-6.34 1.58-6.13 2.16-5.88 2.69-5.6 3.21-5.27 3.69-4.93 4.13-4.55 4.55-4.13 4.93-3.69 5.27-3.21 5.6-2.69 5.88-2.16 6.13-1.58 6.34-.97 6.54-.33h160v128l.16 3.28.49 3.18.79 3.07 1.07 2.94 1.35 2.8 1.6 2.63 1.84 2.47 2.06 2.27 2.27 2.06 2.47 1.84 2.63 1.6 2.8 1.35 2.94 1.07 3.07.79 3.18.49 3.28.16h128v288l-.33 6.54-.97 6.34-1.58 6.13-2.16 5.88-2.69 5.6-3.21 5.27-3.69 4.93-4.13 4.55-4.55 4.13-4.93 3.69-5.27 3.21-5.6 2.69-5.88 2.16-6.13 1.58-6.34.97-6.54.33h-256l-6.54-.33-6.34-.97-6.13-1.58-5.88-2.16-5.6-2.69-5.27-3.21-4.93-3.69-4.55-4.13-4.13-4.55-3.69-4.93-3.21-5.27-2.69-5.6-2.16-5.88-1.58-6.13-.97-6.34-.33-6.54V343h174.1l-39 39-1.65 1.83-1.43 1.94-1.22 2.05-.99 2.13-.77 2.2-.55 2.25-.33 2.29-.11 2.3.11 2.3.33 2.28.55 2.24.77 2.19.99 2.12 1.22 2.04 1.43 1.93 1.65 1.81 1.83 1.64 1.94 1.42 2.05 1.2 2.13.99 2.2.76 2.25.56 2.29.33 2.3.11 2.3-.1 2.28-.33 2.24-.54 2.19-.77 2.12-.98 2.04-1.21 1.93-1.43 1.81-1.65 80-80 1.65-1.83 1.43-1.94 1.22-2.05.99-2.13.77-2.2.55-2.25.33-2.29.11-2.3-.11-2.3-.33-2.28-.55-2.24-.77-2.19-.99-2.12-1.22-2.04-1.43-1.93-1.65-1.81-80-80-1.83-1.65-1.94-1.43-2.05-1.22-2.13-.99-2.2-.77-2.25-.55-2.29-.33-2.3-.11-2.3.11-2.28.33-2.24.55-2.19.77-2.12.99-2.04 1.22-1.93 1.43-1.81 1.65-1.64 1.83-1.42 1.94-1.2 2.05-.99 2.13-.76 2.2-.56 2.25-.33 2.29-.11 2.3.1 2.3.33 2.28.54 2.24.77 2.19.98 2.12 1.21 2.04 1.43 1.93 1.65 1.81 39 39h-174.1V71"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M133.462 71s0 0 0 0m0 0s0 0 0 0m0 0 .33-6.54m-.33 6.54c.13-2.57.26-5.13.33-6.54m0 0c.36-2.33.72-4.67.97-6.34m-.97 6.34c.35-2.26.69-4.53.97-6.34m0 0c.51-1.99 1.03-3.98 1.58-6.13m-1.58 6.13c.4-1.56.81-3.12 1.58-6.13m0 0c.81-2.22 1.62-4.43 2.16-5.88m-2.16 5.88c.45-1.22.9-2.44 2.16-5.88m0 0c.72-1.51 1.45-3.01 2.69-5.6m-2.69 5.6c.69-1.45 1.39-2.9 2.69-5.6m0 0c.93-1.52 1.86-3.05 3.21-5.27m-3.21 5.27c.97-1.59 1.94-3.18 3.21-5.27m0 0c.86-1.15 1.71-2.29 3.69-4.93m-3.69 4.93c.78-1.04 1.56-2.08 3.69-4.93m0 0c1.53-1.69 3.07-3.38 4.13-4.55m-4.13 4.55c1.54-1.69 3.07-3.38 4.13-4.55m0 0c1.03-.93 2.06-1.87 4.55-4.13m-4.55 4.13c.98-.89 1.97-1.78 4.55-4.13m0 0c1.64-1.23 3.28-2.46 4.93-3.69m-4.93 3.69c1.72-1.29 3.45-2.58 4.93-3.69m0 0c1.11-.68 2.23-1.35 5.27-3.21m-5.27 3.21c1.5-.91 3.01-1.83 5.27-3.21m0 0c1.87-.89 3.73-1.79 5.6-2.69m-5.6 2.69c2.09-1 4.17-2.01 5.6-2.69m0 0c1.72-.64 3.44-1.27 5.88-2.16m-5.88 2.16c1.94-.72 3.89-1.43 5.88-2.16m0 0c2.3-.59 4.6-1.19 6.13-1.58m-6.13 1.58c2.32-.6 4.65-1.2 6.13-1.58m0 0c2.06-.31 4.12-.63 6.34-.97m-6.34.97c2.34-.36 4.69-.72 6.34-.97m0 0c2.05-.1 4.09-.21 6.54-.33m-6.54.33c2.06-.1 4.12-.21 6.54-.33m0 0h160m-160 0h160m0 0v128m0-128v128m0 0s0 0 0 0m0 0s0 0 0 0m0 0 .16 3.28m-.16-3.28c.06 1.16.12 2.32.16 3.28m0 0c.13.82.26 1.64.49 3.18m-.49-3.18c.18 1.13.35 2.26.49 3.18m0 0c.24.95.49 1.91.79 3.07m-.79-3.07c.28 1.1.56 2.2.79 3.07m0 0c.39 1.06.78 2.13 1.07 2.94m-1.07-2.94c.42 1.15.84 2.3 1.07 2.94m0 0c.38.79.76 1.57 1.35 2.8m-1.35-2.8c.4.82.79 1.64 1.35 2.8m0 0c.45.75.91 1.5 1.6 2.63m-1.6-2.63c.4.65.8 1.31 1.6 2.63m0 0c.56.76 1.13 1.52 1.84 2.47m-1.84-2.47c.58.79 1.17 1.57 1.84 2.47m0 0c.75.82 1.5 1.65 2.06 2.27m-2.06-2.27c.75.82 1.5 1.65 2.06 2.27m0 0c.74.66 1.47 1.33 2.27 2.06m-2.27-2.06c.89.81 1.78 1.61 2.27 2.06m0 0c.69.51 1.37 1.02 2.47 1.84m-2.47-1.84c.68.5 1.35 1.01 2.47 1.84m0 0c.81.49 1.62.99 2.63 1.6m-2.63-1.6c.74.45 1.47.9 2.63 1.6m0 0c.72.35 1.43.69 2.8 1.35m-2.8-1.35c.61.3 1.22.59 2.8 1.35m0 0c.85.31 1.69.62 2.94 1.07m-2.94-1.07c1.03.38 2.07.75 2.94 1.07m0 0c.83.22 1.67.43 3.07.79m-3.07-.79 3.07.79m0 0c1.07.16 2.14.33 3.18.49m-3.18-.49c1.2.18 2.39.36 3.18.49m0 0 3.28.16m-3.28-.16c.97.04 1.93.09 3.28.16m0 0h128m-128 0h128m0 0v288m0-288v288m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.1 2.02-.2 4.04-.33 6.54m.33-6.54c-.13 2.52-.26 5.05-.33 6.54m0 0c-.33 2.14-.66 4.29-.97 6.34m.97-6.34c-.32 2.06-.63 4.12-.97 6.34m0 0c-.59 2.28-1.17 4.55-1.58 6.13m1.58-6.13c-.53 2.07-1.07 4.14-1.58 6.13m0 0c-.73 1.99-1.46 3.97-2.16 5.88m2.16-5.88c-.72 1.97-1.44 3.94-2.16 5.88m0 0c-.94 1.97-1.89 3.93-2.69 5.6m2.69-5.6c-.91 1.89-1.82 3.77-2.69 5.6m0 0c-.89 1.46-1.78 2.92-3.21 5.27m3.21-5.27c-.65 1.05-1.29 2.11-3.21 5.27m0 0c-1.13 1.51-2.25 3.01-3.69 4.93m3.69-4.93c-1.29 1.72-2.58 3.44-3.69 4.93m0 0c-1.29 1.42-2.58 2.84-4.13 4.55m4.13-4.55-4.13 4.55m0 0-4.55 4.13m4.55-4.13-4.55 4.13m0 0c-1.2.9-2.41 1.8-4.93 3.69m4.93-3.69-4.93 3.69m0 0c-1.56.95-3.13 1.9-5.27 3.21m5.27-3.21c-1.99 1.21-3.98 2.42-5.27 3.21m0 0c-1.8.86-3.6 1.73-5.6 2.69m5.6-2.69c-1.34.64-2.67 1.28-5.6 2.69m0 0c-2.24.82-4.48 1.65-5.88 2.16m5.88-2.16c-1.38.51-2.77 1.02-5.88 2.16m0 0c-1.46.38-2.93.76-6.13 1.58m6.13-1.58c-1.54.4-3.09.79-6.13 1.58m0 0c-2.12.32-4.24.65-6.34.97m6.34-.97c-2.47.38-4.94.75-6.34.97m0 0c-2.23.11-4.46.22-6.54.33m6.54-.33c-1.97.1-3.93.2-6.54.33m0 0h-256m256 0h-256m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-2.33-.12-4.66-.24-6.54-.33m6.54.33c-1.33-.07-2.65-.13-6.54-.33m0 0c-1.88-.29-3.77-.58-6.34-.97m6.34.97c-2.07-.32-4.14-.63-6.34-.97m0 0c-1.52-.39-3.04-.79-6.13-1.58m6.13 1.58c-2.02-.52-4.04-1.04-6.13-1.58m0 0c-1.6-.59-3.19-1.17-5.88-2.16m5.88 2.16c-1.9-.7-3.8-1.39-5.88-2.16m0 0c-1.41-.68-2.82-1.36-5.6-2.69m5.6 2.69c-1.6-.77-3.2-1.54-5.6-2.69m0 0c-1.4-.86-2.81-1.71-5.27-3.21m5.27 3.21c-2.08-1.27-4.17-2.54-5.27-3.21m0 0c-1.72-1.29-3.43-2.57-4.93-3.69m4.93 3.69c-1.79-1.34-3.57-2.67-4.93-3.69m0 0c-1.18-1.07-2.36-2.15-4.55-4.13m4.55 4.13c-1.64-1.49-3.27-2.97-4.55-4.13m0 0c-1.07-1.19-2.15-2.37-4.13-4.55m4.13 4.55c-1.46-1.61-2.93-3.23-4.13-4.55m0 0-3.69-4.93m3.69 4.93c-.88-1.17-1.76-2.35-3.69-4.93m0 0c-.83-1.37-1.67-2.75-3.21-5.27m3.21 5.27c-1.15-1.89-2.3-3.79-3.21-5.27m0 0c-1.03-2.14-2.05-4.27-2.69-5.6m2.69 5.6c-.68-1.43-1.37-2.85-2.69-5.6m0 0c-.8-2.17-1.59-4.34-2.16-5.88m2.16 5.88c-.82-2.22-1.63-4.44-2.16-5.88m0 0c-.47-1.82-.94-3.64-1.58-6.13m1.58 6.13c-.37-1.44-.74-2.88-1.58-6.13m0 0-.97-6.34m.97 6.34c-.3-1.98-.61-3.97-.97-6.34m0 0c-.13-2.54-.26-5.07-.33-6.54m.33 6.54-.33-6.54m0 0V343m0 112V343m0 0h174.1m-174.1 0h174.1m0 0-39 39m39-39-39 39m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.65.72-1.3 1.44-1.65 1.83m1.65-1.83c-.34.38-.68.76-1.65 1.83m0 0c-.35.47-.7.95-1.43 1.94m1.43-1.94c-.38.5-.75 1.01-1.43 1.94m0 0c-.32.54-.64 1.08-1.22 2.05m1.22-2.05c-.38.64-.76 1.28-1.22 2.05m0 0c-.2.45-.41.89-.99 2.13m.99-2.13c-.38.82-.76 1.64-.99 2.13m0 0c-.18.53-.36 1.05-.77 2.2m.77-2.2c-.3.88-.61 1.75-.77 2.2m0 0c-.15.61-.3 1.22-.55 2.25m.55-2.25c-.16.68-.33 1.35-.55 2.25m0 0-.33 2.29m.33-2.29c-.13.9-.26 1.79-.33 2.29m0 0-.11 2.3m.11-2.3c-.03.59-.06 1.19-.11 2.3m0 0c.03.54.05 1.08.11 2.3m-.11-2.3c.03.72.07 1.44.11 2.3m0 0c.1.71.21 1.43.33 2.28m-.33-2.28c.1.71.21 1.42.33 2.28m0 0c.22.88.44 1.77.55 2.24m-.55-2.24c.16.66.33 1.32.55 2.24m0 0c.26.72.51 1.45.77 2.19m-.77-2.19c.25.69.49 1.39.77 2.19m0 0c.33.7.65 1.4.99 2.12m-.99-2.12c.37.79.74 1.57.99 2.12m0 0c.38.63.75 1.25 1.22 2.04m-1.22-2.04c.4.67.8 1.35 1.22 2.04m0 0c.38.52.77 1.05 1.43 1.93m-1.43-1.93c.38.52.77 1.05 1.43 1.93m0 0c.46.5.91 1 1.65 1.81m-1.65-1.81c.35.39.7.77 1.65 1.81m0 0c.37.33.75.67 1.83 1.64m-1.83-1.64c.43.39.87.78 1.83 1.64m0 0c.62.45 1.25.91 1.94 1.42m-1.94-1.42c.45.32.9.65 1.94 1.42m0 0c.53.3 1.05.61 2.05 1.2m-2.05-1.2c.43.25.86.5 2.05 1.2m0 0c.78.36 1.56.72 2.13.99m-2.13-.99c.54.25 1.08.5 2.13.99m0 0c.67.23 1.33.46 2.2.76m-2.2-.76c.51.17 1.03.35 2.2.76m0 0c.87.22 1.73.43 2.25.56m-2.25-.56c.79.2 1.57.39 2.25.56m0 0 2.29.33m-2.29-.33c.58.08 1.16.16 2.29.33m0 0c.91.04 1.82.09 2.3.11m-2.3-.11c.89.04 1.79.09 2.3.11m0 0c.48-.02.96-.04 2.3-.1m-2.3.1c.73-.03 1.47-.06 2.3-.1m0 0c.61-.09 1.22-.18 2.28-.33m-2.28.33c.58-.09 1.17-.17 2.28-.33m0 0c.79-.19 1.59-.38 2.24-.54m-2.24.54c.88-.21 1.75-.42 2.24-.54m0 0c.7-.25 1.4-.49 2.19-.77m-2.19.77c.5-.18 1.01-.35 2.19-.77m0 0c.56-.26 1.13-.52 2.12-.98m-2.12.98c.69-.31 1.37-.63 2.12-.98m0 0c.63-.37 1.25-.74 2.04-1.21m-2.04 1.21c.8-.48 1.6-.95 2.04-1.21m0 0c.67-.5 1.34-.99 1.93-1.43m-1.93 1.43c.52-.39 1.05-.78 1.93-1.43m0 0c.43-.39.87-.79 1.81-1.65m-1.81 1.65c.42-.38.83-.76 1.81-1.65m0 0 80-80m-80 80 80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c.33-.37.67-.74 1.65-1.83m-1.65 1.83c.63-.7 1.27-1.4 1.65-1.83m0 0c.3-.4.59-.79 1.43-1.94m-1.43 1.94c.42-.57.84-1.13 1.43-1.94m0 0c.4-.68.8-1.35 1.22-2.05m-1.22 2.05c.47-.79.93-1.57 1.22-2.05m0 0c.28-.62.57-1.23.99-2.13m-.99 2.13c.3-.65.6-1.31.99-2.13m0 0c.26-.74.51-1.47.77-2.2m-.77 2.2.77-2.2m0 0 .55-2.25m-.55 2.25c.2-.84.41-1.68.55-2.25m0 0 .33-2.29m-.33 2.29c.11-.75.21-1.49.33-2.29m0 0c.03-.54.05-1.08.11-2.3m-.11 2.3c.04-.91.09-1.81.11-2.3m0 0c-.03-.7-.07-1.41-.11-2.3m.11 2.3c-.04-.75-.07-1.49-.11-2.3m0 0c-.08-.52-.15-1.04-.33-2.28m.33 2.28c-.09-.63-.18-1.26-.33-2.28m0 0-.55-2.24m.55 2.24c-.19-.79-.39-1.58-.55-2.24m0 0-.77-2.19m.77 2.19c-.25-.72-.51-1.44-.77-2.19m0 0c-.23-.5-.46-.99-.99-2.12m.99 2.12c-.39-.83-.78-1.66-.99-2.12m0 0c-.42-.7-.83-1.39-1.22-2.04m1.22 2.04c-.32-.53-.64-1.06-1.22-2.04m0 0c-.47-.64-.95-1.28-1.43-1.93m1.43 1.93c-.47-.63-.94-1.27-1.43-1.93m0 0c-.44-.49-.89-.98-1.65-1.81m1.65 1.81c-.64-.7-1.28-1.4-1.65-1.81m0 0-80-80m80 80-80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.72-.65-1.44-1.3-1.83-1.65m1.83 1.65c-.68-.62-1.37-1.23-1.83-1.65m0 0c-.51-.38-1.02-.75-1.94-1.43m1.94 1.43c-.58-.43-1.17-.87-1.94-1.43m0 0c-.73-.43-1.45-.86-2.05-1.22m2.05 1.22c-.77-.45-1.53-.9-2.05-1.22m0 0c-.46-.21-.93-.43-2.13-.99m2.13.99-2.13-.99m0 0c-.83-.29-1.65-.57-2.2-.77m2.2.77c-.56-.19-1.12-.39-2.2-.77m0 0c-.65-.16-1.29-.31-2.25-.55m2.25.55c-.57-.14-1.13-.27-2.25-.55m0 0c-.74-.11-1.48-.21-2.29-.33m2.29.33c-.51-.07-1.02-.15-2.29-.33m0 0c-.77-.04-1.54-.07-2.3-.11m2.3.11c-.88-.04-1.76-.08-2.3-.11m0 0c-.49.02-.98.05-2.3.11m2.3-.11c-.88.04-1.77.09-2.3.11m0 0c-.62.09-1.23.18-2.28.33m2.28-.33c-.6.09-1.2.17-2.28.33m0 0c-.45.11-.91.22-2.24.55m2.24-.55c-.79.2-1.58.39-2.24.55m0 0c-.56.2-1.12.4-2.19.77m2.19-.77c-.51.18-1.01.36-2.19.77m0 0c-.85.4-1.7.8-2.12.99m2.12-.99c-.51.24-1.02.48-2.12.99m0 0c-.6.36-1.2.71-2.04 1.22m2.04-1.22c-.46.27-.91.55-2.04 1.22m0 0c-.49.36-.99.73-1.93 1.43m1.93-1.43-1.93 1.43m0 0c-.42.38-.85.77-1.81 1.65m1.81-1.65c-.69.63-1.39 1.27-1.81 1.65m0 0-1.64 1.83m1.64-1.83c-.54.6-1.08 1.21-1.64 1.83m0 0c-.53.73-1.07 1.47-1.42 1.94m1.42-1.94c-.36.5-.73 1-1.42 1.94m0 0c-.35.61-.7 1.21-1.2 2.05m1.2-2.05c-.33.58-.67 1.15-1.2 2.05m0 0c-.26.57-.53 1.15-.99 2.13m.99-2.13c-.39.85-.78 1.69-.99 2.13m0 0c-.24.7-.48 1.4-.76 2.2m.76-2.2c-.17.51-.35 1.01-.76 2.2m0 0c-.17.68-.33 1.35-.56 2.25m.56-2.25c-.2.79-.39 1.57-.56 2.25m0 0c-.09.65-.18 1.29-.33 2.29m.33-2.29c-.06.48-.13.95-.33 2.29m0 0c-.03.71-.07 1.43-.11 2.3m.11-2.3-.11 2.3m0 0c.04.86.08 1.73.1 2.3m-.1-2.3c.03.8.07 1.6.1 2.3m0 0c.13.88.25 1.76.33 2.28m-.33-2.28c.11.73.21 1.47.33 2.28m0 0c.18.74.36 1.49.54 2.24m-.54-2.24c.15.64.31 1.28.54 2.24m0 0c.2.57.4 1.15.77 2.19m-.77-2.19c.21.58.41 1.17.77 2.19m0 0c.23.5.46 1.01.98 2.12m-.98-2.12c.35.76.71 1.53.98 2.12m0 0c.38.64.76 1.29 1.21 2.04m-1.21-2.04 1.21 2.04m0 0c.45.6.89 1.21 1.43 1.93m-1.43-1.93c.3.4.6.81 1.43 1.93m0 0 1.65 1.81m-1.65-1.81c.47.52.94 1.03 1.65 1.81m0 0 39 39m-39-39 39 39m0 0h-174.1m174.1 0h-174.1m0 0V71m0 223.9V71m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"18",d:"M135 343.068H31m104 0H31m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.74-.04-1.48-.07-2.46-.12m2.46.12c-.77-.04-1.54-.08-2.46-.12m0 0c-.87-.14-1.75-.27-2.39-.37m2.39.37c-.55-.09-1.1-.17-2.39-.37m0 0c-.87-.22-1.74-.44-2.3-.59m2.3.59c-.62-.15-1.24-.31-2.3-.59m0 0c-.82-.29-1.64-.59-2.21-.8m2.21.8c-.52-.18-1.03-.37-2.21-.8m0 0c-.55-.26-1.09-.52-2.1-1.01m2.1 1.01c-.64-.31-1.28-.61-2.1-1.01m0 0c-.74-.45-1.48-.89-1.98-1.2m1.98 1.2c-.42-.25-.84-.51-1.98-1.2m0 0c-.7-.52-1.41-1.05-1.84-1.38m1.84 1.38c-.37-.28-.75-.56-1.84-1.38m0 0c-.4-.36-.8-.71-1.71-1.54m1.71 1.54c-.35-.31-.7-.63-1.71-1.54m0 0c-.43-.47-.85-.95-1.54-1.71m1.54 1.71c-.61-.68-1.23-1.36-1.54-1.71m0 0c-.29-.38-.58-.76-1.38-1.84m1.38 1.84c-.54-.71-1.08-1.43-1.38-1.84m0 0c-.46-.76-.92-1.52-1.2-1.98m1.2 1.98c-.45-.74-.89-1.47-1.2-1.98m0 0c-.37-.77-.74-1.53-1.01-2.1m1.01 2.1c-.3-.62-.6-1.25-1.01-2.1m0 0c-.2-.54-.39-1.07-.8-2.21m.8 2.21c-.2-.54-.4-1.09-.8-2.21m0 0c-.22-.85-.44-1.71-.59-2.3m.59 2.3c-.12-.46-.24-.92-.59-2.3m0 0c-.11-.72-.22-1.43-.37-2.39m.37 2.39c-.08-.48-.15-.96-.37-2.39m0 0c-.03-.74-.07-1.48-.12-2.46m.12 2.46c-.04-.79-.08-1.59-.12-2.46m0 0c.04-.74.07-1.49.12-2.46m-.12 2.46.12-2.46m0 0c.08-.53.16-1.07.37-2.39m-.37 2.39c.09-.56.17-1.12.37-2.39m0 0c.17-.69.35-1.38.59-2.3m-.59 2.3c.15-.61.31-1.23.59-2.3m0 0c.17-.48.34-.96.8-2.21m-.8 2.21c.2-.55.4-1.1.8-2.21m0 0c.25-.52.49-1.03 1.01-2.1m-1.01 2.1c.36-.76.73-1.52 1.01-2.1m0 0c.43-.72.87-1.44 1.2-1.98m-1.2 1.98c.27-.45.55-.91 1.2-1.98m0 0c.54-.73 1.09-1.47 1.38-1.84m-1.38 1.84c.4-.54.81-1.09 1.38-1.84m0 0c.53-.59 1.07-1.18 1.54-1.71m-1.54 1.71c.59-.66 1.19-1.32 1.54-1.71m0 0c.54-.49 1.08-.97 1.71-1.54m-1.71 1.54c.48-.43.95-.86 1.71-1.54m0 0c.46-.35.92-.7 1.84-1.38m-1.84 1.38c.5-.38 1.01-.76 1.84-1.38m0 0c.52-.32 1.04-.63 1.98-1.2m-1.98 1.2c.72-.44 1.44-.88 1.98-1.2m0 0 2.1-1.01m-2.1 1.01c.84-.4 1.67-.81 2.1-1.01m0 0c.45-.17.91-.33 2.21-.8m-2.21.8c.56-.21 1.12-.41 2.21-.8m0 0c.89-.23 1.79-.46 2.3-.59m-2.3.59c.48-.13.95-.25 2.3-.59m0 0c.51-.08 1.02-.16 2.39-.37m-2.39.37 2.39-.37m0 0c.52-.02 1.03-.05 2.46-.12m-2.46.12c.74-.03 1.48-.07 2.46-.12m0 0 103.34-.27m-103.34.27c30.04-.08 60.08-.16 103.34-.27"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"M517.462 135h-128V7l128 128"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M517.462 135h-128m128 0h-128m0 0V7m0 128V7m0 0 128 128m-128-128 128 128m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"}))),obsidian:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 166 267"},React__namespace.createElement("path",{fill:"transparent",d:"M0 0h165.742v267.245H0z"}),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#bd7efc",strokeWidth:"0",d:"M55.5 96.49 39.92 57.05 111.28 10l4.58 36.54L55.5 95.65"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M55.5 96.49c-5.79-14.66-11.59-29.33-15.58-39.44M55.5 96.49c-3.79-9.59-7.58-19.18-15.58-39.44m0 0C60.13 43.72 80.34 30.4 111.28 10M39.92 57.05C60.82 43.27 81.73 29.49 111.28 10m0 0c.97 7.72 1.94 15.45 4.58 36.54M111.28 10c1.14 9.12 2.29 18.24 4.58 36.54m0 0C95.41 63.18 74.96 79.82 55.5 95.65m60.36-49.11C102.78 57.18 89.71 67.82 55.5 95.65m0 0v.84m0-.84v.84"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#e2c4ff",strokeWidth:"0",d:"m111.234 10.06 44.51 42.07-40.66-5.08-3.85-36.99"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M111.234 10.06c11.83 11.18 23.65 22.36 44.51 42.07m-44.51-42.07 44.51 42.07m0 0c-13.07-1.63-26.13-3.27-40.66-5.08m40.66 5.08c-11.33-1.41-22.67-2.83-40.66-5.08m0 0c-1.17-11.29-2.35-22.58-3.85-36.99m3.85 36.99c-1.47-14.17-2.95-28.33-3.85-36.99m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#2f005e",strokeWidth:"0",d:"m10 127.778 45.77-32.99-15.57-38.08-30.2 71.07"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M10 127.778c16.85-12.14 33.7-24.29 45.77-32.99M10 127.778c16.59-11.95 33.17-23.91 45.77-32.99m0 0c-6.14-15.02-12.29-30.05-15.57-38.08m15.57 38.08c-4.08-9.98-8.16-19.96-15.57-38.08m0 0c-11.16 26.27-22.33 52.54-30.2 71.07m30.2-71.07c-10.12 23.81-20.23 47.61-30.2 71.07m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#410380",strokeWidth:"0",d:"m40.208 235.61 15.76-140.4-45.92 32.92 30.16 107.48"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M40.208 235.61c3.7-33.01 7.41-66.02 15.76-140.4m-15.76 140.4c3.38-30.16 6.77-60.32 15.76-140.4m0 0c-10.83 7.76-21.66 15.53-45.92 32.92m45.92-32.92c-11.69 8.38-23.37 16.75-45.92 32.92m0 0c6.84 24.4 13.69 48.8 30.16 107.48m-30.16-107.48c6.67 23.77 13.33 47.53 30.16 107.48m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#943feb",strokeWidth:"0",d:"m111.234 240.434-12.47 16.67-42.36-161.87 58.81-48.3 40.46 5.25-44.44 188.25"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M111.234 240.434c-3.79 5.06-7.57 10.12-12.47 16.67m12.47-16.67c-4.43 5.93-8.87 11.85-12.47 16.67m0 0c-16.8-64.17-33.59-128.35-42.36-161.87m42.36 161.87c-9.74-37.2-19.47-74.41-42.36-161.87m0 0c15.03-12.35 30.07-24.7 58.81-48.3m-58.81 48.3c22.49-18.47 44.97-36.94 58.81-48.3m0 0c9.48 1.23 18.95 2.46 40.46 5.25m-40.46-5.25c13.01 1.69 26.02 3.38 40.46 5.25m0 0c-10.95 46.41-21.91 92.82-44.44 188.25m44.44-188.25c-12.2 51.71-24.41 103.42-44.44 188.25m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{fill:"#6212b3",strokeWidth:"0",d:"m40.379 235.667 15.9-140.21 42.43 161.79-58.33-21.58"}),React__namespace.createElement("path",{fill:"none",stroke:"#410380",strokeWidth:".5",d:"M40.379 235.667c4.83-42.62 9.67-85.25 15.9-140.21m-15.9 140.21c5.84-51.52 11.69-103.03 15.9-140.21m0 0c10.98 41.87 21.96 83.74 42.43 161.79m-42.43-161.79c13.28 50.63 26.56 101.25 42.43 161.79m0 0c-11.8-4.37-23.6-8.74-58.33-21.58m58.33 21.58c-21.73-8.04-43.47-16.08-58.33-21.58m0 0s0 0 0 0m0 0s0 0 0 0"})))},saveIcon=e=>React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:e?"var(--color-accent)":"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),React__namespace.createElement("polyline",{points:"17 21 17 13 7 13 7 21"}),React__namespace.createElement("polyline",{points:"7 3 7 8 15 8"})),penIcon=e=>{var A,t,n,i,a,r,s,o,l,c,d,h;switch(e.type){case"highlighter":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(A=e.strokeColor)&&void 0!==A?A:"var(--icon-fill-color)",strokeWidth:"2",d:"m9 11-6 6v3h9l3-3"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4"}));case"finetip":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:null!==(t=e.strokeColor)&&void 0!==t?t:"var(--icon-fill-color)",stroke:null!==(n=e.strokeColor)&&void 0!==n?n:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{strokeWidth:"2",d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}));case"fountain":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(i=e.strokeColor)&&void 0!==i?i:"var(--icon-fill-color)",d:"m12 19 7-7 3 3-7 7-3-3z"}),React__namespace.createElement("path",{fill:"none",d:"m18 13-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"}),React__namespace.createElement("path",{fill:"none",d:"m2 2 7.586 7.586"}),React__namespace.createElement("circle",{fill:"none",cx:"11",cy:"11",r:"2"}));case"marker":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",fill:null!==(a=e.strokeColor)&&void 0!==a?a:"var(--icon-fill-color)",stroke:null!==(r=e.strokeColor)&&void 0!==r?r:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M331 315l158.4-215L460.1 70.6 245 229 331 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L436.6 8.4C444 2.9 453 0 462.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L350.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H240l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L144 320zM23 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H40c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z"}));case"thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 108 106",strokeWidth:"2",fill:null!==(s=e.strokeColor)&&void 0!==s?s:"var(--icon-fill-color)",stroke:null!==(o=e.strokeColor)&&void 0!==o?o:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m-.58 95.628.22-.89q.22-.89.49-2.44.26-1.54.77-3.35t1.31-3.43q.79-1.61.2-.26-.6 1.34-.03-.14.58-1.49 1.54-2.97.96-1.49 2.54-3.18 1.59-1.68 3.46-2.96 1.86-1.27.81-.54-1.04.73.6-.46 1.64-1.19 2.8-1.81 1.16-.63.16-.08-.99.54 1.21-.5 2.2-1.03 1.11-.58-1.1.45-.03-.07 1.06-.53 2.32-.82 1.26-.3 2.91-.52 1.64-.23 3.05-.18 1.4.05 2.5.12 1.09.07 2.25.24 1.16.17 2.3.49 1.15.32 2.11.78.96.47 2.21 1.01 1.25.55 2.37 1.04t2.34.89q1.22.4 2.5.65 1.29.25 2.44.33 1.16.08 2.35.17 1.18.08 2.26-.1 1.08-.19 2-1.1.92-.91 1.25-1.93.32-1.02.38-2.15t.57.21q.51 1.34-.03-.02-.55-1.37-.96-2.83-.41-1.45.5-.67.92.79-.03-.06-.95-.85-1.52-1.8-.57-.94-1.5-1.52-.93-.57-1.94-1.22-1.01-.65-1.97-1.88-.96-1.22-1.44-2.54-.49-1.32-.65-2.57-.17-1.24-.11-2.35.06-1.11.31-2.91.24-1.79.76-2.77.51-.97 1.29-1.8.77-.84 1.64-1.55.88-.72 1.9-1.33 1.03-.61 2.43-1.15 1.41-.55 2.69-.92 1.29-.37 2.81-.68 1.53-.31 2.83-.58 1.31-.27 2.78-.47 1.47-.2 2.58-.49 1.12-.28 2.19-.58 1.08-.31 2.13-.73 1.05-.42 2.44-1.32 1.39-.9 2.68-1.85 1.3-.95 2.25-1.87.95-.91 2.06-2 1.11-1.09 1.92-1.93.82-.84 1.54-1.82.71-.98 1.4-1.88.69-.9 1.38-1.96.69-1.07 1.25-2.04.55-.97 1.21-1.94.65-.96 1.35-1.79.69-.83 1.46-1.74.77-.9 1.66-1.73.89-.84 2.72-2.31 1.84-1.48 1.84-1.47v.01l-1.1 1.03q-1.1 1.02-1.77 1.92-.68.9-1.39 1.85-.71.96-1.41 1.91-.7.96-1.19 1.92-.48.95-.95 1.92-.46.96-.9 1.95-.43.99-1.02 2.16-.59 1.17-1.17 2.15-.58.97-1.23 2.13t-1.29 2.02q-.64.86-1.3 1.73-.66.88-1.42 1.78-.75.9-1.72 2.03-.97 1.14-1.81 1.89-.85.75-1.98 1.71-1.14.96-2.05 1.61-.91.64-2.42 1.38-1.51.73-2.71 1.21t-2.49.92q-1.3.44-2.35.69-1.06.24-2.1.59-1.03.34-2.06.74-1.03.4-2.29.94-1.26.54-2.27 1.11-1.01.58-1.57 1.57-.56.99-.81 2.06-.25 1.08.56 2.02.8.94-.21-.02-1.02-.96-.01-.48 1 .49 1.87 1.25.87.77 0 0-.88-.77.46-.01 1.34.75 2.6 1.68 1.26.94 2.08 2.03.81 1.09.01.27-.8-.82.3.26 1.11 1.08 1.71 2.1.61 1.02 1.21 2.25.6 1.24.92 2.36.32 1.12-.16.13-.49-.98.02.36.51 1.35.71 2.69.2 1.34.24 2.46.03 1.12-.09 2.42-.13 1.29-.72 3.21-.6 1.92-1.4 3.49-.81 1.58-1.77 2.83-.96 1.24-2.88 2.72-1.92 1.48-2.95 1.85-1.04.36-2.47.76-1.44.41-3.33.72-1.89.32-3.37.41-1.48.09-2.63.15-1.15.05-2.74-.06-1.59-.1-2.8-.29-1.2-.19-3.2-.63-1.99-.45-3.63-.92-1.63-.48-3.28-.79-1.65-.31-2.76-.2-1.11.1-2.21.42-1.11.32.39-.29 1.49-.6-.12.21-1.61.8-.39.19 1.21-.61.29.13-.92.74-1.83 1.34-.92.61.15-.19t.3-.05q-.77.75-1.58 1.57-.81.82.01-.18.82-1 .24.23t-.72 2.72q-.15 1.48-.08 2.4.07.91-.19 2.16-.26 1.26-.81 2.41-.55 1.16-1.36 2.15t-1.84 1.75q-1.03.77-2.21 1.27t-2.44.7q-1.27.2-2.53.1-1.28-.11-2.49-.52-1.22-.41-2.3-1.1-1.08-.68-1.96-1.61-.89-.92-1.52-2.04-.64-1.11-.99-2.34-.36-1.23-.41-2.51l-.04-1.27Z"}));case"thin-thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 114 113",strokeWidth:"2",fill:null!==(l=e.strokeColor)&&void 0!==l?l:"var(--icon-fill-color)",stroke:null!==(c=e.strokeColor)&&void 0!==c?c:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m10 103.405.13-1.22q.14-1.22 1.3-3.16 1.15-1.94 2.74-3.46 1.59-1.53 3.35-2.72 1.77-1.2 4-1.95 2.23-.76 4.45-1t4.86-.4q2.64-.15 5.14-.34 2.51-.19 4.85-.94 2.35-.75 4.55-1.71 2.21-.97 4.16-2.26 1.95-1.3 4.03-2.97 2.07-1.67 3.85-3.05 1.78-1.37 3.72-2.48 1.94-1.11 3.3-2.99 1.36-1.89 2.58-3.74 1.22-1.85-.63-3.42-1.85-1.57-3.82-2.86-1.97-1.3-4.11-2.08-2.15-.78-4.21-1.6-2.06-.81-4.02-1.96-1.96-1.14-3.71-2.48-1.74-1.33-3.37-2.77-1.63-1.43-3.23-3.62-1.6-2.18-2.23-4.64-.62-2.46-.36-4.96.27-2.49 1.19-4.46.91-1.97 2.42-3.7 1.5-1.73 3.5-3.15t4.11-2.28q2.1-.86 4.33-1.44 2.24-.58 4.92-.84 2.68-.26 4.83-.19t4.69.35q2.53.28 4.75.66 2.23.38 4.48.2 2.26-.19 4.43-1.3 2.17-1.12 4.2-2.36 2.04-1.24 3.93-2.43 1.9-1.19 3.84-2.14 1.95-.95 4.04-1.78 2.09-.83 4.56-2.28 2.46-1.46 2.46-1.45h.01q.01 0-1.38 1.3-1.38 1.29-3.08 2.59-1.7 1.3-3.5 2.5t-3.42 2.65q-1.62 1.45-3.18 3-1.57 1.56-3.37 3.13-1.8 1.57-3.6 2.91-1.81 1.33-3.92 2.12t-4.24.92q-2.13.14-4.31.26-2.18.12-4.5.39t-4.56.88q-2.25.61-4.24 1.6-1.99 1-3.83 2.29-1.83 1.29.18 2.44 2.01 1.15 4.2 1.92 2.2.78 4.34 1 2.15.22 4.4.69 2.25.46 4.34 1.16 2.08.71 4.33 1.91 2.25 1.21 4.11 2.73 1.87 1.52 3.68 4.03 1.82 2.5 2.74 5 .93 2.5 1.18 5.03.26 2.53-.04 4.81t-1.4 4.85q-1.09 2.58-2.4 4.26-1.3 1.68-3.1 3.44t-4.02 3.62q-2.23 1.85-4.32 3.07-2.08 1.23-4.34 1.99-2.25.76-4.46 1.96t-4.37 2.14q-2.15.93-4.22 1.81t-4.36 1.35q-2.3.46-4.52.82-2.22.35-4.76.38-2.54.04-4.87-.28t-4.67-.67q-2.34-.35-4.72-.54-2.39-.19-4.64.37-2.25.56-4.16 1.66-1.91 1.11-3.52 2.71-1.61 1.6-2.55 2.39l-.94.78Z"}));default:return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:null!==(d=e.strokeColor)&&void 0!==d?d:"var(--icon-fill-color)",stroke:null!==(h=e.strokeColor)&&void 0!==h?h:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z"}))}},stringToSVG=e=>(e=e.replace(/stroke\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]width\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]height\s*=\s*['"][^"']*['"]/g,"").replace("{const t=A.getAppState();A.updateScene({appState:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({currentStrokeOptions:e.penOptions},e.strokeWidth&&0!==e.strokeWidth?{currentItemStrokeWidth:e.strokeWidth}:null),e.backgroundColor?{currentItemBackgroundColor:e.backgroundColor}:null),e.strokeColor?{currentItemStrokeColor:e.strokeColor}:null),""===e.fillStyle?null:{currentItemFillStyle:e.fillStyle}),e.roughness?null:{currentItemRoughness:e.roughness}),e.freedrawOnly&&!t.resetCustomPen?{resetCustomPen:{currentItemStrokeWidth:t.currentItemStrokeWidth,currentItemBackgroundColor:t.currentItemBackgroundColor,currentItemStrokeColor:t.currentItemStrokeColor,currentItemFillStyle:t.currentItemFillStyle,currentItemRoughness:t.currentItemRoughness}}:null)})},resetStrokeOptions=(e,A,t)=>{A.updateScene({appState:Object.assign(Object.assign(Object.assign({},e?{currentItemStrokeWidth:e.currentItemStrokeWidth,currentItemBackgroundColor:e.currentItemBackgroundColor,currentItemStrokeColor:e.currentItemStrokeColor,currentItemFillStyle:e.currentItemFillStyle,currentItemRoughness:e.currentItemRoughness}:null),{resetCustomPen:null}),t?{currentStrokeOptions:null}:null)})};class ObsidianMenu{constructor(e,A,t){this.plugin=e,this.toolsRef=A,this.view=t,this.renderCustomPens=(e,A)=>{var t;return null===(t=A.customPens)||void 0===t?void 0:t.map(((t,n)=>{const i=this.plugin.settings.customPens[n];return A.resetCustomPen&&"freedraw"!==A.activeTool.type&&A.currentStrokeOptions===i.penOptions&&setTimeout((()=>resetStrokeOptions(A.resetCustomPen,this.view.excalidrawAPI,!1))),!A.resetCustomPen&&"freedraw"===A.activeTool.type&&A.currentStrokeOptions===i.penOptions&&i.freedrawOnly&&setTimeout((()=>setPen(this.activePen,this.view.excalidrawAPI))),this.activePen&&A.resetCustomPen&&"freedraw"===A.activeTool.type&&A.currentStrokeOptions===i.penOptions&&i.freedrawOnly&&(this.activePen.strokeWidth=A.currentItemStrokeWidth,this.activePen.backgroundColor=A.currentItemBackgroundColor,this.activePen.strokeColor=A.currentItemStrokeColor,this.activePen.fillStyle=A.currentItemFillStyle,this.activePen.roughness=A.currentItemRoughness),React__namespace.createElement("label",{key:n,className:clsx("ToolIcon ToolIcon_type_floating","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{const e=Date.now();if(e-this.clickTimestamp[n]<500){const e=new PenSettingsModal(this.plugin,this.view,n);return void(async()=>{await this.plugin.loadSettings(),e.open()})()}this.clickTimestamp[n]=e;const A=this.view.excalidrawAPI,t=A.getAppState();t.currentStrokeOptions!==i.penOptions||"freedraw"!==t.activeTool.type?(this.activePen=Object.assign({},i),setPen(i,A),A.setActiveTool({type:"freedraw"})):resetStrokeOptions(t.resetCustomPen,A,!0)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":i.type,style:Object.assign({},"freedraw"===A.activeTool.type&&A.currentStrokeOptions===i.penOptions?{background:"var(--color-primary)"}:{})},penIcon(i)))}))},this.renderPinnedScriptButtons=(e,A)=>{var t;return null===(t=null==A?void 0:A.pinnedScripts)||void 0===t?void 0:t.map(((A,t)=>{var n;const i=this.plugin.scriptEngine.scriptIconMap[A],a=null!==(n=null==i?void 0:i.name)&&void 0!==n?n:"",r=(null==i?void 0:i.svgString)?stringToSVG(i.svgString):ICONS.cog;let s=0;return React__namespace.createElement("label",{key:t,className:clsx("ToolIcon ToolIcon_type_floating","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{s&&(window.clearTimeout(s),s=0,(async()=>{const e=app.vault.getAbstractFileByPath(A);e&&e instanceof obsidian_module.TFile&&this.plugin.scriptEngine.executeScript(this.view,await app.vault.read(e),this.plugin.scriptEngine.getScriptName(e),e)})())},onPointerDown:()=>{s=window.setTimeout((()=>{s=0,(async()=>{var e;await this.plugin.loadSettings();const t=this.plugin.settings.pinnedScripts.indexOf(A);t>-1&&(this.plugin.settings.pinnedScripts.splice(t,1),null===(e=this.view.excalidrawAPI)||void 0===e||e.setToast({message:`Pin removed: ${a}`,duration:3e3,closable:!0})),await this.plugin.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))})()}),1500)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":a},r))}))},this.renderButton=(e,A)=>React__namespace.createElement(React__namespace.Fragment,null,React__namespace.createElement("label",{className:clsx("ToolIcon ToolIcon_type_floating","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{this.toolsRef.current.setTheme(A.theme),this.toolsRef.current.toggleVisibility(A.zenModeEnabled||e)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},ICONS.obsidian)),this.renderCustomPens(e,A),this.renderPinnedScriptButtons(e,A)),this.clickTimestamp=Array.from({length:Object.keys(PENS).length},(()=>0))}}class ActionButton extends React__namespace.Component{constructor(e){super(e),this.toastMessageTimeout=0,this.longpressTimeout=0,this.state={visible:!0}}render(){return React__namespace.createElement("button",{style:{},className:"ToolIcon_type_button ToolIcon_size_small ToolIcon_type_button--show ToolIcon",title:this.props.title,onClick:e=>{this.toastMessageTimeout&&(window.clearTimeout(this.toastMessageTimeout),this.toastMessageTimeout=0,this.props.action(e)),this.longpressTimeout&&(window.clearTimeout(this.longpressTimeout),this.longpressTimeout=0)},onPointerDown:e=>{this.toastMessageTimeout=window.setTimeout((()=>{var e;null===(e=this.props.view.excalidrawAPI)||void 0===e||e.setToast({message:this.props.title,duration:3e3,closable:!0}),this.toastMessageTimeout=0}),400),this.longpressTimeout=window.setTimeout((()=>{var A;this.props.longpress?this.props.longpress(e):null===(A=this.props.view.excalidrawAPI)||void 0===A||A.setToast({message:"Cannot pin this action",duration:3e3,closable:!0}),this.longpressTimeout=0}),1500)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},this.props.icon))}}const FIRST_RUN='\nThe Excalidraw Obsidian plugin is much more than "just" a drawing tool. To help you get started here\'s a showcase of the key Excalidraw plugin features.\n\nIf you\'d like to learn more, please subscribe to my YouTube channel: [Visual PKM](https://www.youtube.com/channel/UCC0gns4a9fhVkGkngvSumAQ) where I regularly share videos about Obsidian-Excalidraw and about tools and techniques for Visual Personal Knowledge Management.\n\nThank you & Enjoy!\n\n
\n\n
\n',RELEASE_NOTES={Intro:'After each update you\'ll be prompted with the release notes. You can disable this in plugin settings.\n\nI develop this plugin as a hobby, spending my free time doing this. If you find it valuable, then please say THANK YOU or...\n\n
\n',"1.8.14":"\n## Fixed\n- text element link gets deleted when the drawing is reloaded\n","1.8.13":'\n## Fixed\n- When changing a text element in markdown mode, the change seem to have showed up when switching back to Excalidraw mode, but then lost these changes when loading the file the next time.\n- Scrolling through a page that has embedded drawings on Obsidian Mobile accidently opens the drawing in Excalidraw when touching the image. Now you need to press and hold to open the image in Excalidraw. [#1003](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1003)\n- The scrollbar is no longer visible when presenting using the SlideShow script\n- Stroke properties could not be changed when custom pen settings had "Stroke & fill applies to: All shapes". It works now.\n\n## QoL\n- Custom pens will remember the stroke changes until you press the pen preset button again.\n - This is a bit hard to explain, let me try... Essentially, when you use a custom pen, it will keep the changes you made to the pen (like changing the stroke width) until you press the pen-prereset button again. So, for example, if you\'re using a mind mapping custom pen and change its color, and then switch to a different tool like text, when you switch back to the freedraw tool using the Excalidraw tools panel, the pen will still have the same color you set earlier, but if you press the mind mapping pen-preset button, it will default back to your custom pen settings including your preset color.\n- Added new buttons to load current stroke color and background color in the pen settings dialog. Also added an edit box so you can configure any valid color string (including with transparency) for pen stroke and background colors. [#991](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/991)\n',"1.8.11":'\n
\n\n
\n\n# New\n- Support for referencing images from the internet in Excalidraw drawings, including YouTube thumbnail support. [#913](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/913)\n - Link to images on the internet without creating a copy in your Vault by holding down the CTRL key while dropping the link or image.\n - Automatic conversion of image URLs and YouTube links into image elements with original links added as a link on the element when pasting. Note, that if you only want to paste the plain text link (not the image), first double-click the canvas to start a new text element, then paste the link.\n- Two new options added to plugin settings:\n - Make mouse wheel zoom by default [#474](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/474)\n - Allow pinch zoom in pen mode [#828](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/828)\n- Update to the [Set Grid](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20Grid.svg) script now saves the grid setting for the current file.\n',"1.8.10":'\n
\n\n
\n\n# QoL improvements\n- You can structure icons in the Obsidian tools panel by moving scripts to folders\n![image|300](https://user-images.githubusercontent.com/14358394/212389592-306130d0-209a-49df-99bb-c538f2155b23.png)\n- I added useful actions to the hamburger menu in both tray-mode and normal-mode. \n![image|150](https://user-images.githubusercontent.com/14358394/212534508-9107fd19-27ab-4415-8abc-bc97c73afc0b.png)\n- I added a new Export Image dialog. You can access the new export screen from the hamburger-menu\n![image|200](https://user-images.githubusercontent.com/14358394/212534654-7a479e23-8d5d-452e-9a18-a9896278aa27.png)\n- Links in help now point to Obsidian-Excalidraw relevant content.\n- I added a welcome screen\n![image|150](https://user-images.githubusercontent.com/14358394/212534568-3cd1e8a1-5b20-4a30-96e4-40d7dac57e33.png)\n- I updated the alternative dark mode / dynamic styling [script](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n',"1.8.9":"\n# Minor QoL improvements\n- When you open a second drawing in the same Excalidraw view (i.e. by navigating a link) and make a change to this drawing, and then press UNDO, the entire drawing disappeared. Redo brought the image back, however, this behavior was frustrating. Not anymore...\n- On iPad\n - when you open the command palette, autozoom resized the drawing. If the Obsidian command palette or some other modal window is shown Excalidraw will not resize the view.\n - when you add a link to the drawing using the Command Palette, sometimes the link was added in a far corner of the drawing outside the current view area. This should be fixed now.","1.8.8":`\n
\n\n
\n\n# New\n- The plugin now includes support for [Perfect Freehand](https://perfect-freehand-example.vercel.app/) pen-options. I've also added a new [Alternative Pens](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Alternative%20Pens.md) script.\n- Embed scene in exported PNG and SVG images [#860](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/860). This means that the export will be a normal PNG or SVG image with the added functionality that if someone loads the image into excalidraw.com it will open as a normal excalidraw file.\n - I've added 2 new Command Palette actions (export PNG, export SVG with embedded scene).\n - If you SHIFT click ${String.fromCharCode(96)} Save as PNG (or SVG)${String.fromCharCode(96)} in the workspace-tab menu, Excalidraw will embed the scene in the export.\n- I updated the [Organic Line](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Organic%20Line.md) script. It has an improved thick-to-thin look and a new thin-to-thick-to-thin line type.\n\n# Fixed\n- Intelligent image width setting [#955](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/955). Before this change, when the embedded image was small, the image would be extended to meet the image width setting in plugin settings. From now on, if the image is smaller than max-width, it will only extend to max-width. You can still set 100% width using custom CSS. See more on that [here](https://github.com/zsviczian/obsidian-excalidraw-plugin#embedded-images).\n\n# New in ExcalidrawAutomate\n- I added the ${String.fromCharCode(96)} plaintext${String.fromCharCode(96)} parameter to ${String.fromCharCode(96)}ExcalidrawAutomate.create${String.fromCharCode(96)} . Using this, you can add some text below the frontmatter but above the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section. Use this for example to add metadata to your file. (e.g. I use this in my Daily Quote template to add a Dataview field for the ${String.fromCharCode(96)}Author::${String.fromCharCode(96)} and add the quote with a standard block reference, so I can easily reference it in other files. I also add the ${String.fromCharCode(96)}#quote${String.fromCharCode(96)} tag to the file using this.)\n- The script running in the ScriptEngine now also receives the ${String.fromCharCode(96)}TFile${String.fromCharCode(96)} object for the script itself. You can access this object during execution via the ${String.fromCharCode(96)}utils.scriptFile${String.fromCharCode(96)} variable. \n`,"1.8.7":'\n## New from Excalidraw.com\n- Support shrinking text containers to their original height when text is removed [#6025](https://github.com/excalidraw/excalidraw/pull/6025)\n
\n\n
\n\n## Fixed\n- removed the white background when editing arrow-label [#6033](https://github.com/excalidraw/excalidraw/pull/6033)\n- Minor style tweaks\n - for embedding Excalidraw into Obsidian Canvas. e.g. dragging no longer accidentally creates an image copy of the drawing, and\n - style tweaks on the Excalidraw canvas\n\n## New\n- If you set a different text color and sticky note border color, now if you change the border color, the text color will not be changed.\n',"1.8.6":`\n## New from Excalidraw.com:\n- Better default radius for rectangles [#5553](https://github.com/excalidraw/excalidraw/pull/5553). Existing drawings will look unchanged, this applies only to new rectangles.\n![image|200](https://user-images.githubusercontent.com/5153846/206264345-59fd7436-e87b-4bc9-ade8-9e6f6a6fd8c1.png)\n> [!attention]- ExcalidrawAutomate technical details\n> - ${String.fromCharCode(96)}strokeSharpness${String.fromCharCode(96)} is now deprecated\n> - use roundness instead\n> - ${String.fromCharCode(96)}roundness === null${String.fromCharCode(96)} is legacy ${String.fromCharCode(96)}strokeSharpness = "sharp"${String.fromCharCode(96)}\n> - ${String.fromCharCode(96)}roundness = { type: RoundnessType; value?: number }${String.fromCharCode(96)}\n> - type: 1, LEGACY, type:2 PROPORTIONAL_RADIUS, type:3 ADAPTIVE_RADIUS: 3\n> - value:\n> - Radius represented as % of element's largest side (width/height).\n> DEFAULT_PROPORTIONAL_RADIUS = 0.25;\n> - Fixed radius for the ADAPTIVE_RADIUS algorithm. In pixels.\n> DEFAULT_ADAPTIVE_RADIUS = 32;\n\n## New\n- For Obsidian 1.1.6 and above\n - Improved embedding into Obsidian Canvas\n - Improved embedding into Markdown documents\n- Added setting under ${String.fromCharCode(96)}Display/Default mode when opening Excalidraw${String.fromCharCode(96)} to always open the drawing in view mode on Mobile, but in normal mode on desktop. [#939](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/939)\n\n## Fixed\n- Zoom reset tooltip appears twice [#942](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/942)\n- Hid export library from library menu as it does not work due to Obsidian limitations. Use the command palette export library instead.\n- Arrow with label did not get exported and embedded correctly [#941](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/941)\n![image|200](https://user-images.githubusercontent.com/22638687/207845868-b352ddb1-7994-4f13-a0b2-f2e19bd72935.png)\n`,"1.8.4":'\n## New from Excalidraw.com\n- Labels on Arrows!!! [#5723](https://github.com/excalidraw/excalidraw/pull/5723)\n - To add a label press "Enter" or "Double click" on the arrow\n - Use "Cmd/Ctrl+double click" to enter the line editor\n\n
\n\n
\n\n## New\n- **Changed behavior**: In the Obsidian markdown editor clicking an Excalidraw image will not open the image (to avoid accidentally opening the image on a tablet). To open a drawing for editing in Excalidraw double click or long-tap on it. [#920](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/920)\n\n## Fixed \n- Text stroke color is not honored when pasting a HEX color string to an Excalidraw canvas open in an Obsidian popout window [#921](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/921)\n- The new [multi-line >> multi-element paste behavior](https://github.com/excalidraw/excalidraw/pull/5786) introduced in the previous release did not work as expected in Obsidian. Now it does.\n',"1.8.2":`\nIntroducing the [Excalidraw Slideshow Script](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) - available in the script store\n
\n\n
\n\n## Fixed\n- Obsidian tools panel gets misplaced after switching Obsidian workspace tabs\n\n## New in ExcalidrawAutomate\n- changed ${String.fromCharCode(96)}viewToggleFullScreen(forceViewMode: boolean = false): void${String.fromCharCode(96)}: the function will toggle view mode on when going to full screen and view mode off when terminating full screen.\n- new functions\n${String.fromCharCode(96,96,96)}typescript\nsetViewModeEnabled(enabled: boolean):void;\nviewUpdateScene(\n scene: {\n elements?: ExcalidrawElement[];\n appState?: AppState;\n files?: BinaryFileData;\n commitToHistory?: boolean;\n },\n restore: boolean = false,\n ):void;\nviewZoomToElements(\n selectElements: boolean,\n elements: ExcalidrawElement[]\n ):void;\n${String.fromCharCode(96,96,96)}\n\n`,"1.8.1":`\n## New and fixes from Excalidraw.com\n- New text paste behavior. Pasting multiline text will generate separate text elements unless you hold down the shift button while pasting [#5786](https://github.com/excalidraw/excalidraw/pull/5786)\n- line editor fixes [#5927](https://github.com/excalidraw/excalidraw/pull/5927)\n\n## Fixed\n- The Command Palette "Insert link" action now inserts the new link at the top drawing layer, not at the bottom.\n- Updated, hopefully, better organized, Plugin Readme.\n\n## New\n- Second attempt at moving to React 18. This upgrade is required to maintain alignment with the core Excalidraw product and to continue to benefit from Excalidraw.com enhancements.\n- Added options to Plugin Settings\n - to disable autozoom when loading a drawing for the first time [#907](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/907)\n - to modify autosave interval. You can now set an autosave interval for desktop and for mobile [#888](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/888)\n\n## New in ExcalidrawAutomate\n- Published the obsidian_module on the ExcalidrawAutomate object. ${String.fromCharCode(96)}ExcalidrawAutomate.obsidian${String.fromCharCode(96)}. Publishing this object will give script developers increased flexibility and control over script automation.\n`,"1.8.0":'\n
\n\n
\n\n## New\n- Optical Character Recognition (OCR). Introducing the MVP (minimum viable product) release of the integration of [Taskbone](https://taskbone.com) OCR into Excalidraw. See the new scan button on the Obsidian tools panel.\n- New and improved full-screen mode\n - Activate using the Obsidian tools panel, the Obsidian Command Palette, or the Alt+F11 shortcut\n - The ESC key no longer closes full-screen\n - Full-screen mode works properly on iOS as well\n- Improved Icon visibility on the Obsidian tools panel\n- Added 3 additional buttons to the tools panel\n - Force save\n - Open link (useful on Mobile devices). In the case of LaTeX equations, the button opens the equation properties.\n - Open the link in a new pane. In the case of embedded markdown documents, the button opens the embed properties.\n\n## Fixed\n- The [deconstruct selected elements into a new drawing](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md) script now also correctly decomposes transcluded text elements.\n',"1.7.30":"\nFix:\n- Forcing the embedded image to always scale to 100% (a feature introduced in [1.7.26](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.7.26)) scaled the embedded excalidraw drawings incorrectly on devices with a pixel ratio of 2 or 3 (e.g. iPads). This is now fixed, however, this fix might retrospectively impact drawings that use this feature. Sorry for that.\n","1.7.29":"\n- This is a big update that accommodates the **UI redesign** on Excalidraw.com [#5780](https://github.com/excalidraw/excalidraw/pull/5780). The change on the surface may seem superficial, however, I had to tweak a number of things to make it work in Obsidian. I hope I found everything that broke and fixed it, if not, I'll try to fix it quickly...\n- This update also comes with changes under the hood that **fix issues with Excalidraw Automate** - paving the way for further scripts, plus some smaller bug fixes.\n- I **reworked text wrapping**. In some cases, text wrapping in SVG exports looked different compared to how the text looked in Excalidraw. This should now be fixed.\n- If you are using the **Experimental Dynamic Styling** of the Excalidraw Toolbar, then I recommend updating your styling script following base on [this](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n","1.7.27":'## New\n- Import SVG drawing as an Excalidraw object. [#679](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/679)\n\n
\n\n
\n\n## Fixed\n- Large drawings freeze on the iPad when opening the file. I implemented a workaround whereby Excalidraw will avoid zoom-to-fit drawings with over 1000 elements. [#863](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/863)\n- Reintroduced copy/paste to the context menu\n',"1.7.26":'## Fixed\n- Transcluded block with a parent bullet does not embed sub-bullet [#853](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/853)\n- Transcluded text will now exclude ^block-references at end of lines\n- Phantom duplicates of the drawing appear when "zoom to fit" results in a zoom value below 10% and there are many objects on the canvas [#850](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/850)\n- CTRL+Wheel will increase/decrease zoom in steps of 5% matching the behavior of the "+" & "-" zoom buttons.\n- Latest updates from Excalidarw.com\n - Freedraw flip not scaling correctly [#5752](https://github.com/excalidraw/excalidraw/pull/5752)\n - Multiple elements resizing regressions [#5586](https://github.com/excalidraw/excalidraw/pull/5586)\n\n## New - power user features\n- Force the embedded image to always scale to 100%. Note: this is a very niche feature with a very particular behavior that I built primarily for myself (even more so than other features in Excalidraw Obsidian - also built primarily for myself 😉)... This will reset your embedded image to 100% size every time you open the Excalidraw drawing, or in case you have embedded an Excalidraw drawing on your canvas inserted using this function, every time you update the embedded drawing, it will be scaled back to 100% size. This means that even if you resize the image on the drawing, it will reset to 100% the next time you open the file or you modify the original embedded object. This feature is useful when you decompose a drawing into separate Excalidraw files, but when combined onto a single canvas you want the individual pieces to maintain their actual sizes. I use this feature to construct Book-on-a-Page summaries from atomic drawings.\n- I added an action to the command palette to temporarily disable/enable Excalidraw autosave. When autosave is disabled, Excalidraw will still save your drawing when changing to another Obsidian window, but it will not save every 10 seconds. On a mobile device (but also on a desktop) this can lead to data loss if you terminate Obsidian abruptly (i.e. swipe the application away, or close Obsidian without first closing the drawing). Use this feature if you find Excalidraw laggy.'};class ReleaseNotes extends obsidian_module.Modal{constructor(e,A,t){super(e),this.plugin=A,this.version=t}onOpen(){var e;this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText(`Welcome to Excalidraw ${null!==(e=this.version)&&void 0!==e?e:""}`),this.createForm()}async onClose(){this.contentEl.empty(),await this.plugin.loadSettings(),this.plugin.settings.previousRelease=PLUGIN_VERSION,await this.plugin.saveSettings()}async createForm(){let e=this.plugin.settings.previousRelease;e=this.version===e?"0.0.0":e;const A=this.version?Object.keys(RELEASE_NOTES).filter((A=>"Intro"===A||isVersionNewerThanOther(A,e))).map((e=>`${"Intro"===e?"":`# ${e}\n`}${RELEASE_NOTES[e]}`)).slice(0,10).join("\n\n---\n"):FIRST_RUN;await obsidian_module.MarkdownRenderer.renderMarkdown(A,this.contentEl,"",this.plugin),this.contentEl.createEl("p",{text:""},(e=>{e.style.textAlign="right",e.createEl("button",{text:"Close"}).onclick=()=>this.close()}))}}const TOOLS_PANEL_WIDTH=228;class ToolsPanel extends React__namespace.Component{constructor(e){super(e),this.pos1=0,this.pos2=0,this.pos3=0,this.pos4=0,this.penDownX=0,this.penDownY=0,this.previousWidth=0,this.previousHeight=0,this.onRightEdge=!1,this.onBottomEdge=!1;const A=e.view.plugin.getPackage(e.view.ownerWindow).react;this.containerRef=A.createRef(),this.state={visible:e.visible,top:50,left:200,theme:"dark",excalidrawViewMode:!1,minimized:!1,isDirty:!1,isFullscreen:!1,isPreviewMode:!0,scriptIconMap:{}}}updateScriptIconMap(e){this.setState((()=>({scriptIconMap:e})))}setPreviewMode(e){this.setState((()=>({isPreviewMode:e})))}setFullscreen(e){this.setState((()=>({isFullscreen:e})))}setDirty(e){this.setState((()=>({isDirty:e})))}setExcalidrawViewMode(e){this.setState((()=>({excalidrawViewMode:e})))}toggleVisibility(e){this.setTopCenter(e),this.setState((e=>({visible:!e.visible})))}setTheme(e){this.setState((A=>({theme:e})))}setTopCenter(e){this.setState((()=>({left:(this.containerRef.current.clientWidth-228-(e?0:232))/2+this.containerRef.current.parentElement.offsetLeft+(e?0:232),top:64+this.containerRef.current.parentElement.offsetTop})))}updatePosition(e=0,A=0){this.setState((()=>{const{offsetTop:t,offsetLeft:n,clientWidth:i,clientHeight:a}=this.containerRef.current.firstElementChild,r=t-e,s=n-A,{clientWidth:o,clientHeight:l,offsetTop:c,offsetLeft:d}=this.containerRef.current.parentElement;return this.previousHeight=l,this.previousWidth=o,this.onBottomEdge=r>=l-a+c,this.onRightEdge=s>=o-i+d,{top:r{e.preventDefault(),Math.abs(this.penDownX-this.pos3)>5||Math.abs(this.penDownY-this.pos4)>5||this.setState((e=>({minimized:!e.minimized})))},onPointerDown:e=>{const A=e=>{e.preventDefault(),this.pos1=this.pos3-e.clientX,this.pos2=this.pos4-e.clientY,this.pos3=e.clientX,this.pos4=e.clientY,this.updatePosition(this.pos2,this.pos1)},t=()=>{var e,n;null===(e=this.props.view.ownerDocument)||void 0===e||e.removeEventListener("pointerup",t),null===(n=this.props.view.ownerDocument)||void 0===n||n.removeEventListener("pointermove",A)};e.preventDefault(),this.penDownX=this.pos3=e.clientX,this.penDownY=this.pos4=e.clientY,this.props.view.ownerDocument.addEventListener("pointerup",t),this.props.view.ownerDocument.addEventListener("pointermove",A)}},React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 228 26"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M40,7 h148 M40,13 h148 M40,19 h148"}))),React__namespace.createElement("div",{className:"Island App-menu__left scrollbar",style:{maxHeight:"350px",width:"initial","--padding":2,display:this.state.minimized?"none":"block"}},React__namespace.createElement("div",{className:"panelColumn"},React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Utility actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"scriptEngine",title:t$d("INSTALL_SCRIPT_BUTTON"),action:()=>{new ScriptInstallPrompt(this.props.view.plugin).open()},icon:ICONS.scriptEngine,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"release-notes",title:t$d("READ_RELEASE_NOTES"),action:()=>{new ReleaseNotes(this.props.view.app,this.props.view.plugin,PLUGIN_VERSION).open()},icon:ICONS.releaseNotes,view:this.props.view}),null===this.state.isPreviewMode?React__namespace.createElement(ActionButton,{key:"convert",title:t$d("CONVERT_FILE"),action:()=>{this.props.view.convertExcalidrawToMD()},icon:ICONS.convertFile,view:this.props.view}):React__namespace.createElement(ActionButton,{key:"viewmode",title:this.state.isPreviewMode?t$d("PARSED"):t$d("RAW"),action:()=>{this.state.isPreviewMode?this.props.view.changeTextMode(TextMode.raw):this.props.view.changeTextMode(TextMode.parsed)},icon:this.state.isPreviewMode?ICONS.rawMode:ICONS.parsedMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"tray-mode",title:t$d("TRAY_MODE"),action:()=>{this.props.view.toggleTrayMode()},icon:ICONS.trayMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"fullscreen",title:this.state.isFullscreen?t$d("EXIT_FULLSCREEN"):t$d("GOTO_FULLSCREEN"),action:()=>{this.state.isFullscreen?this.props.view.exitFullscreen():this.props.view.gotoFullscreen()},icon:this.state.isFullscreen?ICONS.exitFullScreen:ICONS.gotoFullScreen,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"search",title:t$d("SEARCH"),action:()=>{search(this.props.view)},icon:ICONS.search,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"ocr",title:t$d("RUN_OCR"),action:e=>{this.props.view.plugin.settings.taskboneEnabled?this.props.view.plugin.taskbone.getTextForView(this.props.view,e[CTRL_OR_CMD]):new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3)},icon:ICONS.ocr,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLink",title:t$d("OPEN_LINK_CLICK"),action:()=>{const e=new MouseEvent("click",{ctrlKey:!0,metaKey:!1,shiftKey:!1,altKey:!1});this.props.view.handleLinkClick(e)},icon:ICONS.openLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLinkProperties",title:t$d("OPEN_LINK_PROPS"),action:()=>{const e=new MouseEvent("click",{ctrlKey:!0,metaKey:!1,shiftKey:!0,altKey:!0});this.props.view.handleLinkClick(e)},icon:ICONS.openLinkProperties,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"save",title:t$d("FORCE_SAVE"),action:()=>{this.props.view.forceSave()},icon:saveIcon(this.state.isDirty),view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Export actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"lib",title:t$d("DOWNLOAD_LIBRARY"),action:()=>{this.props.view.plugin.exportLibrary()},icon:ICONS.exportLibrary,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"svg",title:t$d("EXPORT_SVG"),action:()=>{this.props.view.saveSVG(),new obsidian_module.Notice(`File saved: ${getIMGFilename(this.props.view.file.path,"svg")}`)},icon:ICONS.exportSVG,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"png",title:t$d("EXPORT_PNG"),action:()=>{this.props.view.savePNG(),new obsidian_module.Notice(`File saved: ${getIMGFilename(this.props.view.file.path,"png")}`)},icon:ICONS.exportPNG,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"excalidraw",title:t$d("EXPORT_EXCALIDRAW"),action:()=>{this.props.view.exportExcalidraw()},icon:ICONS.exportExcalidraw,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"md",title:t$d("OPEN_AS_MD"),action:()=>{this.props.view.openAsMarkdown()},icon:ICONS.switchToMarkdown,view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Insert actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"image",title:t$d("INSERT_IMAGE"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertImageDialog.start(this.props.view)},icon:ICONS.insertImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"insertMD",title:t$d("INSERT_MD"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertMDDialog.start(this.props.view)},icon:ICONS.insertMD,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"latex",title:t$d("INSERT_LATEX"),action:()=>{this.props.centerPointer(),insertLaTeXToView(this.props.view)},icon:ICONS.insertLaTeX,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link",title:t$d("INSERT_LINK"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertLinkDialog.start(this.props.view.file.path,this.props.view.addText)},icon:ICONS.insertLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link-to-element",title:t$d("INSERT_LINK_TO_ELEMENT"),action:e=>{this.props.view.copyLinkToSelectedElementToClipboard(e[CTRL_OR_CMD]?"group=":e.shiftKey?"area=":"")},icon:ICONS.copyElementLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"import-svg",title:t$d("IMPORT_SVG"),action:e=>{this.props.view.plugin.importSVGDialog.start(this.props.view)},icon:ICONS.importSVG,view:this.props.view}))),this.renderScriptButtons(!1),this.renderScriptButtons(!0)))))}renderScriptButtons(e){if(0===Object.keys(this.state.scriptIconMap).length)return"";const A=`${this.props.view.plugin.settings.scriptFolderPath}/Downloaded/`,t=t=>e?t.startsWith(A):!t.startsWith(A);if(0===Object.keys(this.state.scriptIconMap).filter((e=>t(e))).length)return"";const n=new Set;Object.keys(this.state.scriptIconMap).filter((e=>t(e))).forEach((e=>n.add(this.state.scriptIconMap[e].group)));const i=Array.from(n).sort(((e,A)=>e>A?1:-1));return i.push(i.shift()),React__namespace.createElement(React__namespace.Fragment,null,i.map((A=>React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,e?A:""===A?"User":"User/"+A),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},Object.entries(this.state.scriptIconMap).filter((([e,t])=>t.group===A)).sort().map((([e,A])=>React__namespace.createElement(ActionButton,{key:e,title:A.name,action:async()=>{const A=this.props.view,t=A.plugin,n=app.vault.getAbstractFileByPath(e);n&&n instanceof obsidian_module.TFile&&t.scriptEngine.executeScript(A,await app.vault.read(n),t.scriptEngine.getScriptName(n),n)},longpress:async()=>{const t=this.props.view,n=t.excalidrawAPI,i=t.plugin;await i.loadSettings();const a=i.settings.pinnedScripts.indexOf(e);a>-1?(i.settings.pinnedScripts.splice(a,1),null==n||n.setToast({message:`Pin removed: ${A.name}`,duration:3e3,closable:!0})):(i.settings.pinnedScripts.push(e),null==n||n.setToast({message:`Pinned: ${A.name}`,duration:3e3,closable:!0})),await i.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))},icon:A.svgString?stringToSVG(A.svgString):ICONS.cog,view:this.props.view}))))))))}}const getElementsAtPointer=(e,A,t)=>A.filter((A=>{if(t&&A.type!==t)return!1;const[n,i,a,r]=rotatedDimensions(A);return n<=e.x&&n+a>=e.x&&i<=e.y&&i+r>=e.y})),getTextElementAtPointer=(e,A)=>{const t=A.excalidrawAPI;if(!t)return{id:null,text:null};const n=getElementsAtPointer(e,t.getSceneElements(),"text");if(0==n.length)return{id:null,text:null};if(1===n.length)return{id:n[0].id,text:n[0].text};const i=n.filter((e=>{const t=A.textMode===TextMode.parsed?A.excalidrawData.getRawText(e.id):e.text;return!!t&&(!!t.match(REG_LINKINDEX_HYPERLINK)||!!REGEX_LINK.getRes(t).next().value)}));return 0==i.length?{id:n[0].id,text:n[0].text}:{id:i[0].id,text:i[0].text}},getImageElementAtPointer=(e,A)=>{const t=A.excalidrawAPI;if(!t)return;const n=getElementsAtPointer(e,t.getSceneElements(),"image");return 0===n.length?{id:null,fileId:null}:n.length>=1?{id:n[0].id,fileId:n[0].fileId}:void 0},getElementWithLinkAtPointer=(e,A)=>{const t=A.excalidrawAPI;if(!t)return;const n=getElementsAtPointer(e,t.getSceneElements()).filter((e=>e.link));return 0===n.length?{id:null,text:null}:n.length>=1?{id:n[0].id,text:n[0].link}:void 0};class MenuLinks{constructor(e,A){this.render=(e,A)=>React__namespace.createElement("div",null,"Hello"),this.plugin=e,this.ref=A}}const getEA=e=>{try{return window.ExcalidrawAutomate.getAPI(e)}catch(e){return console.log({message:"Excalidraw not available",fn:getEA}),null}};class ExportDialog extends obsidian_module.Modal{constructor(e,A,t){super(app),this.plugin=e,this.view=A,this.file=t,this.dirty=!1,this.ea=getEA(this.view),this.api=this.ea.getExcalidrawAPI(),this.padding=getExportPadding(this.plugin,this.file),this.scale=getPNGScale(this.plugin,this.file),this.theme=getExportTheme(this.plugin,this.file,this.api.getAppState().theme),this.boundingBox=this.ea.getBoundingBox(this.ea.getViewElements()),this.embedScene=!1,this.saveToVault=!0,this.transparent=!getWithBackground(this.plugin,this.file),this.saveSettings=!1}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Export Image")}async onClose(){this.dirty=this.saveSettings}async createForm(){let e,A;this.contentEl.createEl("h1",{text:"Image settings"}),this.contentEl.createEl("p",{text:"Transparency only affects PNGs. Excalidraw files can only be exported outside the Vault. PNGs copied to clipboard may not include the scene."});const t=()=>{const e=Math.round(this.scale*this.boundingBox.width+2*this.padding),A=Math.round(this.scale*this.boundingBox.height+2*this.padding);return fragWithHTML(`The lager the scale, the larger the image.
Scale: ${this.scale}
Image size: ${e}x${A}`)},n=()=>fragWithHTML(`Current image padding is ${this.padding}`);A=new obsidian_module.Setting(this.contentEl).setName("Image padding").setDesc(n()).addSlider((i=>{i.setLimits(0,50,1).setValue(this.padding).onChange((i=>{this.padding=i,e.setDesc(t()),A.setDesc(n())}))})),e=new obsidian_module.Setting(this.contentEl).setName("PNG Scale").setDesc(t()).addSlider((A=>A.setLimits(.5,5,.5).setValue(this.scale).onChange((A=>{this.scale=A,e.setDesc(t())}))));const i=()=>`Export with ${this.theme} theme`,a=new obsidian_module.Setting(this.contentEl).setName(i()).setDesc(fragWithHTML("Toggle on: Export with light theme
Toggle off: Export with dark theme")).addToggle((e=>e.setValue("dark"!==this.theme).onChange((e=>{this.theme=e?"light":"dark",a.setName(i())})))),r=()=>`Export with ${this.transparent?"transparent ":""}background`,s=new obsidian_module.Setting(this.contentEl).setName(r()).setDesc(fragWithHTML("Toggle on: Export with transparent background
Toggle off: Export with background")).addToggle((e=>e.setValue(this.transparent).onChange((e=>{this.transparent=e,s.setName(r())})))),o=()=>this.saveSettings?"Save these settings as the preset for this image":"These are one-time settings",l=new obsidian_module.Setting(this.contentEl).setName(o()).setDesc(fragWithHTML("Saving these settings as preset will override general export settings for this image.
Toggle on: Save as preset for this image
Toggle off: Don't save as preset")).addToggle((e=>e.setValue(this.saveSettings).onChange((e=>{this.saveSettings=e,l.setName(o())}))));this.contentEl.createEl("h1",{text:"Export settings"});const c=()=>this.embedScene?"Embed scene":"Do not embed scene",d=new obsidian_module.Setting(this.contentEl).setName(c()).setDesc(fragWithHTML("Embed the Excalidraw scene into the PNG or SVG image
Toggle on: Embed scene
Toggle off: Do not embed scene")).addToggle((e=>e.setValue(this.embedScene).onChange((e=>{this.embedScene=e,d.setName(c())}))));if(this.plugin.device.isDesktop){const e=()=>this.saveToVault?"Save image to your Vault":"Export image outside your Vault",A=new obsidian_module.Setting(this.contentEl).setName(e()).setDesc(fragWithHTML("Toggle on: Save image to your Vault in the same folder as this drawing
Toggle off: Save image outside your Vault")).addToggle((t=>t.setValue(this.saveToVault).onChange((t=>{this.saveToVault=t,A.setName(e())}))))}const h=this.contentEl.createDiv({cls:"excalidraw-prompt-buttons-div"});h.createEl("button",{text:"PNG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.savePNG():this.view.exportPNG(),this.close()},h.createEl("button",{text:"SVG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.saveSVG():this.view.exportSVG(),this.close()},h.createEl("button",{text:"Excalidraw",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportExcalidraw(),this.close()},this.plugin.device.isDesktop&&(h.createEl("button",{text:"PNG to Clipboard",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportPNGToClipboard(),this.close()})}}var TextMode;!function(e){e.parsed="parsed",e.raw="raw"}(TextMode||(TextMode={}));const HIDE="excalidraw-hidden",SHOW="excalidraw-visible",addFiles=async(e,A,t)=>{if(!e||0===e.length||!A)return;const n=A.excalidrawAPI;if(!n)return;if(e=e.filter((e=>e&&e.size&&e.size.height>0&&e.size.width>0)),0===e.length)return;const i=scaleLoadedImage(A.getScene(),e);void 0===t&&(t=i.scene.appState.theme),i.dirty&&await A.updateScene({elements:i.scene.elements,appState:i.scene.appState,commitToHistory:!1});for(const n of e)if(A.excalidrawData.hasFile(n.id)&&A.excalidrawData.getFile(n.id).setImage(n.dataURL,n.mimeType,n.size,t,n.hasSVGwithBitmap),A.excalidrawData.hasEquation(n.id)){const e=A.excalidrawData.getEquation(n.id).latex;A.excalidrawData.setEquation(n.id,{latex:e,isLoaded:!0})}n.addFiles(e)},warningUnknowSeriousError=()=>{new obsidian_module.Notice("WARNING: Excalidraw ran into an unknown problem!\n\nThere is a risk that your most recent changes cannot be saved.\n\nTo be on the safe side...\n1) Please select your drawing using CTRL/CMD+A and make a copy with CTRL/CMD+C.\n2) Then create an empty drawing in a new pane by CTRL/CMD+clicking the Excalidraw ribbon button,\n3) and paste your work to the new document with CTRL/CMD+V.",6e4)};class ExcalidrawView extends obsidian_module.TextFileView{constructor(e,A){super(e),this.getScene=null,this.addElements=null,this.getSelectedTextElement=null,this.getSelectedImageElement=null,this.getSelectedElementWithLink=null,this.addText=null,this.refresh=null,this.excalidrawRef=null,this.excalidrawAPI=null,this.excalidrawWrapperRef=null,this.toolsPanelRef=null,this.linksAlwaysOpenInANewPane=!1,this.lastSaveTimestamp=0,this.metaKeyDown=!1,this.ctrlKeyDown=!1,this.shiftKeyDown=!1,this.altKeyDown=!1,this.currentPosition={x:0,y:0},this.semaphores={popoutUnload:!1,viewunload:!1,scriptsReady:!1,justLoaded:!1,preventAutozoom:!1,autosaving:!1,dirty:null,preventReload:!1,isEditingText:!1,saving:!1,forceSaving:!1,hoverSleep:!1,wheelTimeout:null},this.autosaveTimer=null,this.textMode=TextMode.raw,this.compatibilityMode=!1,this.isEditingTextResetTimer=null,this.id=this.leaf.id,this.getHookServer=()=>{var e;return null!==(e=this.hookServer)&&void 0!==e?e:this.plugin.ea},this.preventReloadResetTimer=null,this.hiddenMobileLeaves=[],this.offsetLeft=0,this.offsetTop=0,this.blockTextModeChange=!1,this.isLoaded=!1,this.activeLoader=null,this.nextLoader=null,this.initialContainerSizeUpdate=!1,this.previousSceneVersion=0,this.previousBackgroundColor="",this.plugin=A,this.excalidrawData=new ExcalidrawData(A),this.hookServer=A.ea}setHookServer(e){this.hookServer=e||this.plugin.ea}preventAutozoom(){this.semaphores.preventAutozoom=!0,setTimeout((()=>this.semaphores.preventAutozoom=!1),1500)}saveExcalidraw(e){if(!e){if(!this.getScene)return!1;e=this.getScene()}const A=`${this.file.path.substring(0,this.file.path.lastIndexOf(".md"))}.excalidraw`,t=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A));t&&t instanceof obsidian_module.TFile?app.vault.modify(t,JSON.stringify(e,null,"\t")):app.vault.create(A,JSON.stringify(e,null,"\t"))}async exportExcalidraw(){this.getScene&&this.file&&(app.isMobile?new Prompt(app,"Please provide filename",this.file.basename,"filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidraw`;const A=splitFolderAndFilename(this.file.path).folderpath;await checkAndCreateFolder(A);const t=getNewUniqueFilepath(app.vault,e,A);app.vault.create(t,JSON.stringify(this.getScene(),null,"\t")),new obsidian_module.Notice(`Exported to ${t}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.getScene(),null,"\t")),`${this.file.basename}.excalidraw`))}async svg(e,A,t){const n=this.exportDialog,i={withBackground:n?!n.transparent:getWithBackground(this.plugin,this.file),withTheme:!0};return await getSVG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=A?A:n?n.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===t?!!n&&n.embedScene:t})}),i,n?n.padding:getExportPadding(this.plugin,this.file))}async saveSVG(e,A){if(!e){if(!this.getScene)return!1;e=this.getScene()}const t=async(t,n)=>{const i=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t)),a=await this.svg(e,n,A);if(!a)return;const r=(new XMLSerializer).serializeToString(embedFontsInSVG(a,this.plugin));i&&i instanceof obsidian_module.TFile?await app.vault.modify(i,r):await app.vault.create(t,r)};this.plugin.settings.autoExportLightAndDark?(await t(getIMGFilename(this.file.path,"dark.svg"),"dark"),await t(getIMGFilename(this.file.path,"light.svg"),"light")):await t(getIMGFilename(this.file.path,"svg"))}async exportSVG(e){if(!this.getScene||!this.file)return;let A=await this.svg(this.getScene(),void 0,e);A&&(A=embedFontsInSVG(A,this.plugin),download(null,svgToBase64(A.outerHTML),`${this.file.basename}.svg`))}async png(e,A,t){const n=this.exportDialog,i={withBackground:n?!n.transparent:getWithBackground(this.plugin,this.file),withTheme:!0};return await getPNG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=A?A:n?n.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===t?!!n&&n.embedScene:t})}),i,n?n.padding:getExportPadding(this.plugin,this.file),n?n.scale:getPNGScale(this.plugin,this.file))}async savePNG(e,A){if(!e){if(!this.getScene)return!1;e=this.getScene()}const t=async(t,n)=>{const i=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t)),a=await this.png(e,n,A);a&&(i&&i instanceof obsidian_module.TFile?await app.vault.modifyBinary(i,await a.arrayBuffer()):await app.vault.createBinary(t,await a.arrayBuffer()))};this.plugin.settings.autoExportLightAndDark?(await t(getIMGFilename(this.file.path,"dark.png"),"dark"),await t(getIMGFilename(this.file.path,"light.png"),"light")):await t(getIMGFilename(this.file.path,"png"))}async exportPNGToClipboard(e){if(!this.getScene||!this.file)return;const A=await this.png(this.getScene(),void 0,e);A&&await navigator.clipboard.write([new window.ClipboardItem({"image/png":A})])}async exportPNG(e){if(!this.getScene||!this.file)return;const A=await this.png(this.getScene(),void 0,e);if(!A)return;const t=new FileReader;t.readAsDataURL(A);const n=this;t.onloadend=function(){download(null,t.result,`${n.file.basename}.png`)}}async save(e=!0,A=!1){if(!this.isLoaded)return;if(this.semaphores.saving)return;this.semaphores.saving=!0;let t=!1;if(this.getScene&&this.excalidrawAPI&&this.isLoaded&&this.file&&app.vault.getAbstractFileByPath(this.file.path)){try{const n=Boolean(null!==this.semaphores.dirty&&this.semaphores.dirty||this.semaphores.autosaving||A),i=this.getScene();if(this.compatibilityMode?await this.excalidrawData.syncElements(i):await this.excalidrawData.syncElements(i,this.excalidrawAPI.getAppState().selectedElementIds)&&!this.semaphores.popoutUnload&&await this.loadDrawing(!1,this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted))),n&&(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=e,await super.save(),t=this.lastSaveTimestamp===this.file.stat.mtime&&!e&&A,this.lastSaveTimestamp=this.file.stat.mtime,this.clearDirty(),e)){const e=this;this.preventReloadResetTimer=setTimeout((()=>e.semaphores.preventReload=!1),2e3)}if(!t&&!this.semaphores.autosaving&&!this.semaphores.viewunload){const e=this.excalidrawData.autoexportPreference;(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportSVG||e===AutoexportPreference.both||e===AutoexportPreference.svg)&&this.saveSVG(),(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportPNG||e===AutoexportPreference.both||e===AutoexportPreference.png)&&this.savePNG(),!this.compatibilityMode&&this.plugin.settings.autoexportExcalidraw&&this.saveExcalidraw()}}catch(e){errorlog({where:"ExcalidrawView.save",fn:this.save,error:e}),warningUnknowSeriousError()}this.semaphores.saving=!1,t&&this.reload(!0,this.file)}else this.semaphores.saving=!1}getViewData(){var e,A,t;if(!this.getScene)return this.data;if(!this.excalidrawData.loaded)return this.data;const n=this.getScene();if(!this.compatibilityMode){let n=this.data.search(/(^%%\n)?# Text Elements\n/m);if(-1==n&&(n=this.data.search(/(%%\n)?# Drawing\n/)),-1==n)return this.data;const i=(null===(e=this.exportDialog)||void 0===e?void 0:e.dirty)&&(null===(A=this.exportDialog)||void 0===A?void 0:A.saveSettings)?[["excalidraw-export-padding",this.exportDialog.padding.toString()],["excalidraw-export-pngscale",this.exportDialog.scale.toString()],["excalidraw-export-dark","dark"===this.exportDialog.theme?"true":"false"],["excalidraw-export-transparent",this.exportDialog.transparent?"true":"false"],[FRONTMATTER_KEY,this.textMode===TextMode.raw?"raw":"parsed"]]:[[FRONTMATTER_KEY,this.textMode===TextMode.raw?"raw":"parsed"]];(null===(t=this.exportDialog)||void 0===t?void 0:t.dirty)&&(this.exportDialog.dirty=!1);let a=updateFrontmatterInString(this.data.substring(0,n),i);const r=/(^---[\w\W]*?---\n)(!\[\[.*?]]\n(%%\n)?)/m;a.match(r)&&(a=a.replace(r,"$1")),this.excalidrawData.disableCompression||(this.excalidrawData.disableCompression=this.isEditedAsMarkdownInOtherView());const s=a+this.excalidrawData.generateMD(this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted)));return this.excalidrawData.disableCompression=!1,s}return this.compatibilityMode?JSON.stringify(n,null,"\t"):this.data}restoreMobileLeaves(){this.hiddenMobileLeaves.length>0&&(this.hiddenMobileLeaves.forEach((e=>{e[0].containerEl.style.display=e[1]})),this.hiddenMobileLeaves=[])}gotoFullscreen(){this.plugin.leafChangeTimeout&&(clearTimeout(this.plugin.leafChangeTimeout),this.plugin.leafChangeTimeout=null),this.excalidrawWrapperRef&&(this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!0),(e=>{for(;e&&!e.hasClass("workspace-split");)e.addClass(SHOW),e=e.parentElement;e&&e.addClass(SHOW);const A=this.ownerDocument;A.body.querySelectorAll(`div.workspace-split:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),A.body.querySelector(`div.workspace-leaf-content.${SHOW} > .view-header`).addClass(HIDE),A.body.querySelectorAll(`div.workspace-tab-container.${SHOW} > div.workspace-leaf:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),A.body.querySelectorAll(`div.workspace-tabs.${SHOW} > div.workspace-tab-header-container`).forEach((e=>e.addClass(HIDE))),A.body.querySelectorAll(`div.workspace-split.${SHOW} > div.workspace-tabs:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),A.body.querySelectorAll("div.workspace-ribbon").forEach((e=>e.addClass(HIDE))),A.body.querySelectorAll("div.mobile-navbar").forEach((e=>e.addClass(HIDE))),A.body.querySelectorAll("div.status-bar").forEach((e=>e.addClass(HIDE)))})(this.contentEl))}isFullscreen(){return Boolean(document.body.querySelector(".excalidraw-hidden"))}exitFullscreen(){this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!1);const e=this.ownerDocument;e.querySelectorAll(".excalidraw-hidden").forEach((e=>e.removeClass(HIDE))),e.querySelectorAll(".excalidraw-visible").forEach((e=>e.removeClass(SHOW)))}removeLinkTooltip(){const e=this.ownerDocument.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");e&&this.ownerDocument.body.removeChild(e)}handleLinkHookCall(e,A,t){if(this.getHookServer().onLinkClickHook)try{if(!this.getHookServer().onLinkClickHook(e,A,t,this,this.getHookServer()))return!0}catch(e){errorlog({where:"ExcalidrawView.onLinkOpen",fn:this.getHookServer().onLinkClickHook,error:e})}return!1}openExternalLink(e,A){return!!e.match(REG_LINKINDEX_HYPERLINK)&&(window.open(e,"_blank"),!0)}openTagSearch(e){const A=e.matchAll(/#([\p{Letter}\p{Emoji_Presentation}\p{Number}\/_-]+)/gu).next();if(!A.value||A.value.length<2)return;const t=app.workspace.getLeavesOfType("search");0!=t.length&&(t[0].view.setQuery(`tag:${A.value[1]}`),app.workspace.revealLeaf(t[0]),this.isFullscreen()&&this.exitFullscreen())}async linkClick(e,A,t,n,i){var a,r,s,o;A||(A={id:null,text:null}),t||(t={id:null,fileId:null}),n||(n={id:null,text:null}),i||(i={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,altKey:e.altKey});let l=null,c=null,d=null;if((null==A?void 0:A.id)||(null==n?void 0:n.id)){if(d=null!==(a=null==n?void 0:n.text)&&void 0!==a?a:this.textMode===TextMode.parsed?this.excalidrawData.getRawText(A.id):A.text,!d)return;d=d.replaceAll("\n","");const t=null!==(r=A.id)&&void 0!==r?r:n.id,i=this.excalidrawAPI.getSceneElements().filter((e=>e.id===t))[0];if(this.handleLinkHookCall(i,d,e))return;if(this.openExternalLink(d))return;const s=REGEX_LINK.getRes(d).next();if(!s.value)return void this.openTagSearch(d);if(d=REGEX_LINK.getLink(s),this.openExternalLink(d))return;if(d.search("#")>-1){const e=getLinkParts(d,this.file);c=`#${e.isBlockRef?"^":""}${e.ref}`,d=e.path}if(d.match(REG_LINKINDEX_INVALIDCHARS))return void new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3);l=this.app.metadataCache.getFirstLinkpathDest(d,this.file.path)}if(null==t?void 0:t.id){if(this.excalidrawData.hasEquation(t.fileId)){const e=this.excalidrawData.getEquation(t.fileId).latex;return void new Prompt(app,t$d("ENTER_LATEX"),e,"").openAndGetValue((async A=>{A&&A!==e&&(this.excalidrawData.setEquation(t.fileId,{latex:A,isLoaded:!1}),await this.save(!1),await updateEquation(A,t.fileId,this,addFiles,this.plugin),this.setDirty(1))}))}if(await this.save(!1),this.excalidrawData.hasFile(t.fileId)){const e=this.excalidrawData.getFile(t.fileId);if(e.isHyperlink)return void window.open(e.hyperlink,"_blank");if(i.altKey&&"md"===e.file.extension&&!this.plugin.isExcalidrawFile(e.file))return void new Prompt(app,"Customize the link",e.linkParts.original,"","Do not add [[square brackets]] around the filename!
Follow this format when editing your link:
filename#^blockref|WIDTHxMAXHEIGHT").openAndGetValue((async A=>{A&&e.linkParts.original!==A&&(e.resetImage(this.file.path,A),await this.save(!1),await this.loadSceneFiles(),this.setDirty(2))}));d=e.file.path,l=e.file}}if(!d)return void new obsidian_module.Notice(t$d("LINK_BUTTON_CLICK_NO_TEXT"),2e4);const h=null!==(o=null!==(s=t.id)&&void 0!==s?s:A.id)&&void 0!==o?o:n.id,u=this.excalidrawAPI.getSceneElements().filter((e=>e.id===h))[0];if(!this.handleLinkHookCall(u,d,e))try{if(i.shiftKey&&this.isFullscreen()&&this.exitFullscreen(),!l)return void new NewFileActions(this.plugin,d,e.shiftKey,!app.isMobile&&e.metaKey,this).open();const A=!app.isMobile&&(i.metaKey&&this.linksAlwaysOpenInANewPane||i.metaKey)?app.workspace.openPopoutLeaf():i.shiftKey||this.linksAlwaysOpenInANewPane?getNewOrAdjacentLeaf(this.plugin,this.leaf):this.leaf;await A.openFile(l,c?{active:!1,eState:{subpath:c}}:void 0)}catch(e){new obsidian_module.Notice(e,4e3)}}async handleLinkClick(e){this.removeLinkTooltip();const A=this.getSelectedTextElement(),t=(null==A?void 0:A.id)?null:this.getSelectedImageElement(),n=(null==t?void 0:t.id)||(null==A?void 0:A.id)?null:this.getSelectedElementWithLink();this.linkClick(e,A,t,n)}onResize(){var e,A;if(this.plugin.leafChangeTimeout)return;const t=this.excalidrawAPI;this.plugin.settings.zoomToFitOnResize&&this.excalidrawRef&&!this.semaphores.isEditingText&&t&&"text"!==(null===(A=null===(e=t.getAppState())||void 0===e?void 0:e.editingElement)||void 0===A?void 0:A.type)&&this.zoomToFit(!1)}getSceneVersion(e){return this.excalidrawGetSceneVersion||(this.excalidrawGetSceneVersion=this.plugin.getPackage(this.ownerWindow).excalidrawLib.getSceneVersion),this.excalidrawGetSceneVersion(e.filter((e=>!e.isDeleted)))}async forceSave(e=!1){this.semaphores.autosaving||this.semaphores.saving?e||new obsidian_module.Notice("Force Save aborted because saving is in progress)"):(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=!1,this.semaphores.forceSaving=!0,await this.save(!1,!0),this.plugin.triggerEmbedUpdates(),this.loadSceneFiles(),this.semaphores.forceSaving=!1,e||new obsidian_module.Notice("Save successful",1e3))}onload(){const e=Boolean(void 0===this.containerEl.onWindowMigrated);app.isMobile||e||this.containerEl.onWindowMigrated((()=>this.leaf.rebuildView()));const A=app.isMobile?document:this.containerEl.ownerDocument;this.ownerDocument=A,this.ownerWindow=this.ownerDocument.defaultView,this.plugin.getPackage(this.ownerWindow),this.semaphores.scriptsReady=!0,this.wheelEvent=e=>{this.semaphores.wheelTimeout&&clearTimeout(this.semaphores.wheelTimeout),this.semaphores.hoverSleep&&this.clearHoverPreview&&this.clearHoverPreview(),this.semaphores.wheelTimeout=setTimeout((()=>{clearTimeout(this.semaphores.wheelTimeout),this.semaphores.wheelTimeout=null}),1e3)},this.containerEl.addEventListener("wheel",this.wheelEvent,{passive:!1}),this.addAction("ScriptEngine",t$d("INSTALL_SCRIPT_BUTTON"),(()=>{new ScriptInstallPrompt(this.plugin).open()})),this.diskIcon=this.addAction("save",t$d("FORCE_SAVE"),(async()=>this.forceSave())),this.textIsRaw_Element=this.addAction("presentation",t$d("RAW"),(()=>this.changeTextMode(TextMode.parsed))),this.textIsParsed_Element=this.addAction("quote-glyph",t$d("PARSED"),(()=>this.changeTextMode(TextMode.raw))),this.linkAction_Element=this.addAction("link",t$d("OPEN_LINK"),(e=>this.handleLinkClick(e))),app.isMobile||this.addAction("fullscreen","Use the action on the Excalidraw Obsidian Panel or the Command Palette to exit fullscreen mode. You can set up a hotkey for toggling fullscreen mode in Obsidian settings under Hotkeys.",(()=>this.gotoFullscreen()));const t=this;app.workspace.onLayoutReady((async()=>{t.contentEl.addClass("excalidraw-view"),await t.addSlidingPanesListner(),t.addParentMoveObserver(),t.onKeyUp=e=>{t.ctrlKeyDown=e[CTRL_OR_CMD],t.shiftKeyDown=e.shiftKey,t.altKeyDown=e.altKey,t.metaKeyDown=e.metaKey},t.onKeyDown=e=>{this.ctrlKeyDown=e[CTRL_OR_CMD],this.shiftKeyDown=e.shiftKey,this.altKeyDown=e.altKey,this.metaKeyDown=e.metaKey},t.ownerWindow.addEventListener("keydown",t.onKeyDown,!1),t.ownerWindow.addEventListener("keyup",t.onKeyUp,!1)})),this.setupAutosaveTimer(),super.onload()}async addSlidingPanesListner(){const e=this;this.slidingPanesListner=()=>{e.refresh&&e.refresh()};let A=app.workspace.rootSplit;for(;!A;)await sleep(50),A=app.workspace.rootSplit;A.containerEl.addEventListener("scroll",this.slidingPanesListner)}removeSlidingPanesListner(){var e;this.slidingPanesListner&&(null===(e=app.workspace.rootSplit.containerEl)||void 0===e||e.removeEventListener("scroll",this.slidingPanesListner))}addParentMoveObserver(){var e;const A=null!==(e=getParentOfClass(this.containerEl,"popover"))&&void 0!==e?e:getParentOfClass(this.containerEl,"workspace-leaf");if(!A)return;const t=A.classList.contains("popover");this.offsetLeft=A.offsetLeft,this.offsetTop=A.offsetTop;const n=this;this.parentMoveObserver=new MutationObserver((async e=>{const A=e[0].target;if(!(A instanceof HTMLElement))return;const{offsetLeft:t,offsetTop:i}=A;t===n.offsetLeft&&i==n.offsetTop||(n.refresh&&n.refresh(),n.offsetLeft=t,n.offsetTop=i)})),this.parentMoveObserver.observe(A,{attributeOldValue:!0,attributeFilter:t?["data-x","data-y"]:["class","style"]})}removeParentMoveObserver(){this.parentMoveObserver&&this.parentMoveObserver.disconnect()}setTheme(e){const A=this.excalidrawAPI;if(!this.excalidrawRef||!A)return;if(this.file&&hasExportTheme(this.plugin,this.file))return;const t=A.getAppState();this.excalidrawData.scene.theme=e,this.updateScene({appState:Object.assign(Object.assign({},t),{theme:e}),commitToHistory:!1})}async changeTextMode(e,A=!0){if(this.compatibilityMode)return;if(this.blockTextModeChange)return;this.blockTextModeChange=!0,this.textMode=e,e===TextMode.parsed?(this.textIsRaw_Element.hide(),this.textIsParsed_Element.show()):(this.textIsRaw_Element.show(),this.textIsParsed_Element.hide()),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setPreviewMode(e===TextMode.parsed);const t=this.excalidrawAPI;t&&A&&(await this.save(),this.preventAutozoom(),await this.excalidrawData.loadData(this.data,this.file,this.textMode),this.excalidrawData.scene.appState.theme=t.getAppState().theme,await this.loadDrawing(!1),t.history.clear()),this.prevTextMode=this.textMode,this.blockTextModeChange=!1}setupAutosaveTimer(){const e=async()=>{var A;if(!this.isLoaded)return void(this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval));const t=this.excalidrawAPI;if(!t)return void warningUnknowSeriousError();const n=t.getAppState(),i=null!==n.editingElement;if(this.refresh(),!this.semaphores.dirty||this.semaphores.dirty!=(null===(A=this.file)||void 0===A?void 0:A.path)||!this.plugin.settings.autosave||this.semaphores.forceSaving||this.semaphores.autosaving||i||null!==n.draggingElement)this.autosaveTimer=setTimeout(e,this.plugin.activeExcalidrawView===this&&this.semaphores.dirty&&this.plugin.settings.autosave?1e3:this.plugin.settings.autosaveInterval);else{if(this.autosaveTimer=null,this.excalidrawRef){this.semaphores.autosaving=!0;const e=this;this.save().then((()=>e.semaphores.autosaving=!1))}this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}};this.autosaveTimer&&(clearTimeout(this.autosaveTimer),this.autosaveTimer=null),this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}onunload(){var e,A,t,n,i,a;if(this.restoreMobileLeaves(),this.semaphores.viewunload=!0,this.semaphores.popoutUnload=this.ownerDocument!==document&&0===this.ownerDocument.body.querySelectorAll(".workspace-tab-header").length,null===(e=this.ownerWindow)||void 0===e||e.removeEventListener("keydown",this.onKeyDown,!1),null===(A=this.ownerWindow)||void 0===A||A.removeEventListener("keyup",this.onKeyUp,!1),this.containerEl.removeEventListener("wheel",this.wheelEvent,!1),this.getHookServer().onViewUnloadHook)try{this.getHookServer().onViewUnloadHook(this)}catch(e){errorlog({where:"ExcalidrawView.onunload",fn:this.getHookServer().onViewUnloadHook,error:e})}const r=null===(n=null===(t=this.containerEl)||void 0===t?void 0:t.ownerDocument)||void 0===n?void 0:n.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");r&&(null===(a=null===(i=this.containerEl)||void 0===i?void 0:i.ownerDocument)||void 0===a||a.body.removeChild(r)),this.removeParentMoveObserver(),this.removeSlidingPanesListner(),this.autosaveTimer&&(clearInterval(this.autosaveTimer),this.autosaveTimer=null)}async reload(e=!1,A){if(this.semaphores.preventReload)return void(this.semaphores.preventReload=!1);if(this.semaphores.saving)return;if(this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),this.compatibilityMode)return void this.clearDirty();const t=this.excalidrawAPI;if(!this.excalidrawRef||!this.file||!t)return;const n=A&&A===this.file;n&&(this.data=await app.vault.read(A),this.preventAutozoom()),e?await this.excalidrawData.loadData(this.data,this.file,this.textMode):await this.excalidrawData.setTextMode(this.textMode),this.excalidrawData.scene.appState.theme=t.getAppState().theme,await this.loadDrawing(n),this.clearDirty()}async zoomToElementId(e,A){let t=0;for(;!this.excalidrawAPI&&t++<100;)await sleep(50);const n=this.excalidrawAPI;if(!n)return;const i=n.getSceneElements();let a=i.filter((A=>A.id===e));if(0!==a.length){if(A){const e=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],i);e.length>0&&(a=e)}this.preventAutozoom(),this.zoomToElements(!n.getAppState().viewModeEnabled,a)}}setEphemeralState(e){if(!e)return;const A=this;let t=null;e.match&&e.match.content&&e.match.matches&&1===e.match.matches.length&&2===e.match.matches[0].length&&(t=[e.match.content.substring(e.match.matches[0][0],e.match.matches[0][1])]);const n=getEmbeddedFilenameParts(e.subpath);n.hasBlockref&&setTimeout((()=>A.zoomToElementId(n.blockref,n.hasGroupref)),300),n.hasSectionref?t=[`# ${n.sectionref}`]:e.line&&e.line>0&&(t=[this.data.split("\n")[e.line-1]]),t&&setTimeout((async()=>{let e=0;for(;!A.excalidrawAPI&&e++<100;)await sleep(50);const i=A.excalidrawAPI;if(!i)return;const a=i.getSceneElements();A.selectElementsMatchingQuery(a,t,!i.getAppState().viewModeEnabled,n.hasSectionref,n.hasGroupref)}),300),super.setEphemeralState(e)}clear(){delete this.exportDialog;const e=this.excalidrawAPI;this.excalidrawRef&&e&&(this.activeLoader&&(this.activeLoader.terminate=!0,this.activeLoader=null),this.nextLoader=null,e.resetScene(),this.previousSceneVersion=0)}async setViewData(e,A=!1){this.isLoaded=!1,this.file&&(this.plugin.settings.showNewVersionNotification&&checkExcalidrawVersion(app),A&&this.clear(),this.lastSaveTimestamp=this.file.stat.mtime,e=this.data=e.replaceAll("\r\n","\n").replaceAll("\r","\n"),app.workspace.onLayoutReady((async()=>{if(this.compatibilityMode="excalidraw"===this.file.extension,await this.plugin.loadSettings(),this.compatibilityMode)this.textIsRaw_Element.hide(),this.textIsParsed_Element.hide(),this.linkAction_Element.hide(),this.textMode=TextMode.raw,await this.excalidrawData.loadLegacyData(e,this.file),this.plugin.settings.compatibilityMode||new obsidian_module.Notice(t$d("COMPATIBILITY_MODE"),4e3),this.excalidrawData.disableCompression=!0;else{this.linkAction_Element.show(),this.excalidrawData.disableCompression=!1;const A=getTextMode(e);this.changeTextMode(A,!1);try{if(!await this.excalidrawData.loadData(e,this.file,this.textMode))return}catch(e){return errorlog({where:"ExcalidrawView.setViewData",error:e}),new obsidian_module.Notice(`Error loading drawing:\n${e.message}${"Cannot read property 'index' of undefined"===e.message?"\n'# Drawing' section is likely missing":""}\n\nTry manually fixing the file or restoring an earlier version from sync history.`,1e4),void this.setMarkdownView()}}await this.loadDrawing(!0);const A=this.excalidrawData.getOnLoadScript();if(A){const e=this,t=this.file.basename+"-onlaod-script",n=()=>{e.excalidrawAPI?e.plugin.scriptEngine.executeScript(e,A,t,this.file):setTimeout(n,200)};n()}this.isLoaded=!0})))}async loadSceneFiles(){if(!this.excalidrawAPI)return;const e=new EmbeddedFilesLoader(this.plugin),A=e=>{this.nextLoader=null,this.activeLoader=e,e.loadSceneFiles(this.excalidrawData,((e,t)=>{e&&(addFiles(e,this,t),this.activeLoader=null,this.nextLoader?A(this.nextLoader):this.excalidrawData.getFiles().some((e=>{if(e&&!e.file&&e.attemptCounter<30){const e=this,A=this.file.path;return setTimeout((async()=>{e&&e.excalidrawAPI&&A===e.file.path&&e.loadSceneFiles()}),2e3),!0}return!1})))}),0)};this.activeLoader?this.nextLoader=e:A(e)}async synchronizeWithData(e){let A=0;for(;this.semaphores.saving&&A++<30;)await sleep(100);if(A>=30)return void errorlog({where:"ExcalidrawView.synchronizeWithData",message:`Aborting sync with received file (${this.file.path}) because semaphores.saving remained true for ower 3 seconds`,fn:this.synchronizeWithData});this.semaphores.saving=!0;let t=!1;try{const A=e.deletedElements.map((e=>e.id)),n=this.excalidrawAPI.getSceneElements().filter((e=>!A.contains(e.id))),i=n.map((e=>e.id)),a=A=>{switch(A.type){case"text":this.excalidrawData.textElements.set(A.id,e.textElements.get(A.id));break;case"image":e.getFile(A.fileId)?(this.excalidrawData.setFile(A.fileId,e.getFile(A.fileId)),t=!0):e.getEquation(A.fileId)&&(this.excalidrawData.setEquation(A.fileId,e.getEquation(A.fileId)),t=!0)}e.elementLinks.has(A.id)&&this.excalidrawData.elementLinks.set(A.id,e.elementLinks.get(A.id))};e.scene.elements.forEach(((A,r,s)=>{const o=n.filter((e=>e.id===A.id))[0];if(o&&(o.version0&&a.viewModeEnabled,l=this.isLoaded?s.getAppState().zenModeEnabled:a.zenModeEnabled;s.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),this.updateScene({elements:i.elements.concat(null!=A?A:[]),files:i.files,commitToHistory:!0},e),this.updateScene({appState:Object.assign(Object.assign(Object.assign({},i.appState),this.excalidrawData.selectedElementIds?this.excalidrawData.selectedElementIds:{}),{zenModeEnabled:l,viewModeEnabled:o,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:r,penDetected:r,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)})}),app.workspace.getActiveViewOfType(ExcalidrawView)===this.leaf.view&&this.excalidrawWrapperRef&&(null===(n=null===(t=this.excalidrawWrapperRef.current)||void 0===t?void 0:t.firstElementChild)||void 0===n||n.focus()),this.loadSceneFiles(),this.updateContainerSize(null,!0),this.initializeToolsIconPanelAfterLoading()}else this.instantiateExcalidraw({elements:i.elements,appState:Object.assign(Object.assign({},i.appState),{zenModeEnabled:a.zenModeEnabled,viewModeEnabled:i.elements.length>0&&a.viewModeEnabled,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:r,penDetected:r,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}),files:i.files,libraryItems:await this.getLibrary()});const o=null!==this.data.match(/```compressed\-json\n/gm);this.compatibilityMode||this.plugin.settings.compress===o||this.isEditedAsMarkdownInOtherView()||this.setDirty(4)}isEditedAsMarkdownInOtherView(){return app.workspace.getLeavesOfType("markdown").filter((e=>e.view.file===this.file)).length>0}setDirty(e){var A,t;this.semaphores.dirty=null===(A=this.file)||void 0===A?void 0:A.path,this.diskIcon.querySelector("svg").addClass("excalidraw-dirty"),!this.semaphores.viewunload&&(null===(t=this.toolsPanelRef)||void 0===t?void 0:t.current)&&this.toolsPanelRef.current.setDirty(!0),app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="var(--color-accent)")}clearDirty(){var e;if(this.semaphores.viewunload)return;const A=this.excalidrawAPI;if(!A)return;this.semaphores.dirty=null,(null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current)&&this.toolsPanelRef.current.setDirty(!1);const t=A.getSceneElements();t&&(this.previousSceneVersion=this.getSceneVersion(t)),this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="")}initializeToolsIconPanelAfterLoading(){var e;if(this.semaphores.viewunload)return;const A=this.excalidrawAPI;if(!A)return;const t=A.getAppState(),n=null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current;n&&(n.setTheme(t.theme),n.setExcalidrawViewMode(t.viewModeEnabled),n.setPreviewMode(this.compatibilityMode?null:this.textMode===TextMode.parsed),n.updateScriptIconMap(this.plugin.scriptEngine.scriptIconMap))}canAcceptExtension(e){return"excalidraw"===e}getDisplayText(){return this.file?this.file.basename:t$d("NOFILE")}getViewType(){return"excalidraw"}getIcon(){return ICON_NAME}setMarkdownView(){this.plugin.excalidrawFileModes[this.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}async openAsMarkdown(){!0===this.plugin.settings.compress&&(this.excalidrawData.disableCompression=!0,await this.save(!0,!0)),this.setMarkdownView()}async convertExcalidrawToMD(){await this.save(),this.plugin.openDrawing(await this.plugin.convertSingleExcalidrawToMD(this.file),"active-pane",!0)}async addYouTubeThumbnail(e){const A=await getYouTubeThumbnailLink(e),t=getEA(this),n=await t.addImage(0,0,A);t.getElement(n).link=e,t.addElementsToView(!0,!0,!0)}async addImageWithURL(e){const A=getEA(this);await A.addImage(0,0,e),A.addElementsToView(!0,!0,!0)}onPaneMenu(e,A){this.excalidrawAPI&&this.getViewSelectedElements().some((e=>"text"===e.type))&&e.addItem((e=>{e.setTitle(t$d("OPEN_LINK")).setIcon("external-link").setSection("pane").onClick((e=>{this.handleLinkClick(e)}))})),this.compatibilityMode?e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE")).onClick((()=>this.convertExcalidrawToMD())).setSection("pane")})):e.addItem((e=>{e.setTitle(t$d("OPEN_AS_MD")).setIcon("document").onClick((()=>{this.openAsMarkdown()})).setSection("pane")})).addItem((e=>{e.setTitle(t$d("EXPORT_EXCALIDRAW")).setIcon(ICON_NAME).onClick((async()=>{this.exportExcalidraw()})).setSection("pane")})),e.addItem((e=>{e.setTitle(t$d("SAVE_AS_PNG")).setIcon("save-png").setSection("pane").onClick((async e=>{this.getScene&&this.file&&(e[CTRL_OR_CMD]?this.exportPNG(e.shiftKey):(this.savePNG(void 0,e.shiftKey),new obsidian_module.Notice("PNG export is ready"+(e.shiftKey?" with embedded scene":""))))})).setSection("pane")})).addItem((e=>{e.setTitle(t$d("SAVE_AS_SVG")).setIcon("save-svg").setSection("pane").onClick((async e=>{this.getScene&&this.file&&(e[CTRL_OR_CMD]?this.exportSVG(e.shiftKey):(this.saveSVG(void 0,e.shiftKey),new obsidian_module.Notice("SVG export is ready"+(e.shiftKey?" with embedded scene":""))))}))})).addItem((e=>{e.setTitle(t$d("INSTALL_SCRIPT_BUTTON")).setIcon("ScriptEngine").setSection("pane").onClick((()=>{new ScriptInstallPrompt(this.plugin).open()}))})),super.onPaneMenu(e,A)}async getLibrary(){var e;const A=this.plugin.getStencilLibrary();return(null==A?void 0:A.library)?A.library:null!==(e=null==A?void 0:A.libraryItems)&&void 0!==e?e:[]}async instantiateExcalidraw(e){for(;!this.semaphores.scriptsReady;)await sleep(50);const A=this.plugin.getPackage(this.ownerWindow).react,t=this.plugin.getPackage(this.ownerWindow).reactDOM;this.clearDirty();const n=A.createElement((()=>{const t=A.useRef(null),n=A.useRef(null),i=A.useRef(null),[a,r]=A.useState({width:void 0,height:void 0});let s=null,o=null,l=null,c=Date.now(),d=!1;this.toolsPanelRef=n,this.obsidianMenu=new ObsidianMenu(this.plugin,n,this),this.menuLinks=new MenuLinks(this.plugin,i);const h=()=>{let e,A;const t=new Promise(((t,n)=>{e=t,A=n}));return t.resolve=e,t.reject=A,t},u=A.useMemo((()=>({current:{readyPromise:h()}})),[]);A.useEffect((()=>{u.current.readyPromise.then((e=>{var A;this.excalidrawAPI=e,e.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),this.loadSceneFiles(),this.updateContainerSize(null,!0),null===(A=this.excalidrawWrapperRef.current.firstElementChild)||void 0===A||A.focus(),this.initializeToolsIconPanelAfterLoading()}))}),[u]),this.excalidrawRef=u,this.excalidrawWrapperRef=t,A.useEffect((()=>{r({width:this.contentEl.clientWidth,height:this.contentEl.clientHeight});const e=()=>{try{const e=this.contentEl.clientWidth,A=this.contentEl.clientHeight;if(0===e||0===A)return;r({width:e,height:A}),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.updatePosition(),this.ownerDocument!==document&&this.refresh()}catch(e){errorlog({where:"Excalidraw React-Wrapper, onResize",error:e})}};return this.ownerWindow.addEventListener("resize",e),()=>{var A;return null===(A=this.ownerWindow)||void 0===A?void 0:A.removeEventListener("resize",e)}}),[t]),this.getSelectedTextElement=()=>{var e;const A=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!A)return{id:null,text:null};if(A.getAppState().viewModeEnabled){if(s){const e=s;return s=null,e}return{id:null,text:null}}const t=A.getSceneElements().filter((e=>e.id===Object.keys(A.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,text:null};if("text"===t[0].type)return{id:t[0].id,text:t[0].text};if(["image","arrow"].contains(t[0].type))return{id:null,text:null};const n=null===(e=t[0].boundElements)||void 0===e?void 0:e.filter((e=>"text"===e.type));if((null==n?void 0:n.length)>0){const e=A.getSceneElements().filter((e=>e.id===n[0].id));if(e.length>0)return{id:e[0].id,text:e[0].text}}if(0===t[0].groupIds.length)return{id:null,text:null};const i=t[0].groupIds[0],a=A.getSceneElements().filter((e=>{var A;return null===(A=e.groupIds)||void 0===A?void 0:A.includes(i)})).filter((e=>"text"===e.type));return 0===a.length?{id:null,text:null}:{id:t[0].id,text:t[0].text}},this.getSelectedImageElement=()=>{const e=this.excalidrawAPI;if(!e)return{id:null,fileId:null};if(e.getAppState().viewModeEnabled){if(o){const e=o;return o=null,e}return{id:null,fileId:null}}const A=e.getSceneElements().filter((A=>A.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===A.length)return{id:null,fileId:null};if("image"==A[0].type)return{id:A[0].id,fileId:A[0].fileId};if("text"===A[0].type)return{id:null,fileId:null};if(0===A[0].groupIds.length)return{id:null,fileId:null};const t=A[0].groupIds[0],n=e.getSceneElements().filter((e=>{var A;return null===(A=e.groupIds)||void 0===A?void 0:A.includes(t)})).filter((e=>"image"==e.type));return 0===n.length?{id:null,fileId:null}:{id:n[0].id,fileId:n[0].fileId}},this.getSelectedElementWithLink=()=>{const e=this.excalidrawAPI;if(!e)return{id:null,text:null};if(e.getAppState().viewModeEnabled){if(l){const e=l;return l=null,e}return{id:null,text:null}}const A=e.getSceneElements().filter((A=>A.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===A.length)return{id:null,text:null};if(A[0].link)return{id:A[0].id,text:A[0].link};if(0===A[0].groupIds.length)return{id:null,text:null};const t=A[0].groupIds[0],n=e.getSceneElements().filter((e=>{var A;return null===(A=e.groupIds)||void 0===A?void 0:A.includes(t)})).filter((e=>e.link));return 0===n.length?{id:null,text:null}:{id:n[0].id,text:n[0].link}},this.addText=async(e,A,t=!0)=>{var n,i,a,r,s;const o=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!o)return;const l=o.getAppState(),c=this.plugin.ea.getAPI(this);c.style.strokeColor=null!==(n=l.currentItemStrokeColor)&&void 0!==n?n:"black",c.style.opacity=null!==(i=l.currentItemOpacity)&&void 0!==i?i:1,c.style.fontFamily=null!==(a=null!=A?A:l.currentItemFontFamily)&&void 0!==a?a:1,c.style.fontSize=null!==(r=l.currentItemFontSize)&&void 0!==r?r:20,c.style.textAlign=null!==(s=l.currentItemTextAlign)&&void 0!==s?s:"left";const{width:d,height:h}=l,g=viewportCoordsToSceneCoords({clientX:0,clientY:0},l),p=viewportCoordsToSceneCoords({clientX:d,clientY:h},l),m=g.x>this.currentPosition.x||p.xthis.currentPosition.y||p.y{const a=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!a)return!1;const r=e.filter((e=>"text"==e.type));for(let e=0;ee.id)),o=a.getSceneElements(),l=[];for(let A=0;Ae.id===t))[0],l.push(t))}const c=i?o.concat(e.filter((e=>!l.includes(e.id)))):e.filter((e=>!l.includes(e.id))).concat(o);if(this.updateScene({elements:c,commitToHistory:!0},!0),n&&Object.keys(n).length>0){const e=[];Object.keys(n).forEach((A=>{if(e.push({mimeType:n[A].mimeType,id:n[A].id,dataURL:n[A].dataURL,created:n[A].created}),n[A].file||n[A].isHyperlink){const e=new EmbeddedFile(this.plugin,this.file.path,n[A].isHyperlink?n[A].hyperlink:n[A].file),t=a.getAppState();e.setImage(n[A].dataURL,n[A].mimeType,n[A].size,"dark"===t.theme,n[A].hasSVGwithBitmap),this.excalidrawData.setFile(n[A].id,e)}n[A].latex&&this.excalidrawData.setEquation(n[A].id,{latex:n[A].latex,isLoaded:!0})})),a.addFiles(e)}return t?await this.save(!1):this.setDirty(5),!0},this.getScene=()=>{const e=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!e)return null;const A=e.getSceneElements(),t=e.getAppState(),n=e.getFiles();if(n){const e=A.filter((e=>"image"===e.type)).map((e=>e.fileId)),t=Object.keys(n).filter((A=>!e.contains(A)));t.forEach((e=>delete n[e]))}return{type:"excalidraw",version:2,source:"https://excalidraw.com",elements:A,appState:{theme:t.theme,viewBackgroundColor:t.viewBackgroundColor,currentItemStrokeColor:t.currentItemStrokeColor,currentItemBackgroundColor:t.currentItemBackgroundColor,currentItemFillStyle:t.currentItemFillStyle,currentItemStrokeWidth:t.currentItemStrokeWidth,currentItemStrokeStyle:t.currentItemStrokeStyle,currentItemRoughness:t.currentItemRoughness,currentItemOpacity:t.currentItemOpacity,currentItemFontFamily:t.currentItemFontFamily,currentItemFontSize:t.currentItemFontSize,currentItemTextAlign:t.currentItemTextAlign,currentItemStartArrowhead:t.currentItemStartArrowhead,currentItemEndArrowhead:t.currentItemEndArrowhead,scrollX:t.scrollX,scrollY:t.scrollY,zoom:t.zoom,currentItemRoundness:t.currentItemRoundness,gridSize:t.gridSize,colorPalette:t.colorPalette,currentStrokeOptions:t.currentStrokeOptions,previousGridSize:t.previousGridSize},prevTextMode:this.prevTextMode,files:n}},this.refresh=()=>{if(0===this.contentEl.clientWidth||0===this.contentEl.clientHeight)return;const e=this.excalidrawAPI;(null==u?void 0:u.current)&&e&&e.refresh()};let g={x:0,y:0},p=null;this.clearHoverPreview=()=>{if(p){const e=new MouseEvent("click",{view:this.ownerWindow,bubbles:!0,cancelable:!0});p.dispatchEvent(e),p=null}};const m=e=>{var A,t,n,i,a;const r=null===(A=app.dragManager.draggable)||void 0===A?void 0:A.files;return r&&r[0]==this.file&&(r.shift(),app.dragManager.draggable.title=`${r.length} files`),["file","files"].includes(null===(t=app.dragManager.draggable)||void 0===t?void 0:t.type)?"link":(null===(n=e.types)||void 0===n?void 0:n.includes("text/html"))||(null===(i=e.types)||void 0===i?void 0:i.includes("text/plain"))||(null===(a=e.types)||void 0===a?void 0:a.includes("Files"))?"copy":void 0};let w=!1;const f=()=>{if(s=getTextElementAtPointer(this.currentPosition,this),s&&s.id){const e=new MouseEvent("click",{ctrlKey:!0,metaKey:this.metaKeyDown,shiftKey:this.shiftKeyDown,altKey:this.altKeyDown});return this.handleLinkClick(e),void(s=null)}if(o=getImageElementAtPointer(this.currentPosition,this),o&&o.id){const e=new MouseEvent("click",{ctrlKey:!0,metaKey:this.metaKeyDown,shiftKey:this.shiftKeyDown,altKey:this.altKeyDown});return this.handleLinkClick(e),void(o=null)}if(l=getElementWithLinkAtPointer(this.currentPosition,this),l&&l.id){const e=new MouseEvent("click",{ctrlKey:!0,metaKey:this.metaKeyDown,shiftKey:this.shiftKeyDown,altKey:this.altKeyDown});return this.handleLinkClick(e),void(l=null)}};let B=null;const E=(e,A)=>{var t,n;if(!B)return;if(null===(n=null===(t=this.excalidrawAPI)||void 0===t?void 0:t.getAppState())||void 0===n?void 0:n.editingElement)return;if(this.semaphores.wheelTimeout)return;if(!e){if(!this.currentPosition)return;e="";const t=getTextElementAtPointer(this.currentPosition,this);if(t&&t.text){A=this.excalidrawAPI.getSceneElements().filter((e=>e.id===t.id))[0];const n=this.textMode===TextMode.parsed?this.excalidrawData.getRawText(t.id):t.text;if(!n)return;if(n.match(REG_LINKINDEX_HYPERLINK))return;const i=REGEX_LINK.getRes(n).next();if(!i.value)return;if((e=REGEX_LINK.getLink(i)).match(REG_LINKINDEX_HYPERLINK))return}else{const t=getImageElementAtPointer(this.currentPosition,this);if(A=this.excalidrawAPI.getSceneElements().filter((e=>e.id===t.id))[0],!t||!t.fileId)return;if(!this.excalidrawData.hasFile(t.fileId))return;const n=this.excalidrawData.getFile(t.fileId);if(n.isHyperlink)return;const i=n.linkParts.ref?`#${n.linkParts.isBlockRef?"^":""}${n.linkParts.ref}`:"";e=n.file.path+i}}if(this.getHookServer().onLinkHoverHook)try{if(!this.getHookServer().onLinkHoverHook(A,e,this,this.getHookServer()))return}catch(e){errorlog({where:"ExcalidrawView.showHoverPreview",fn:this.getHookServer().onLinkHoverHook,error:e})}if(this.semaphores.hoverSleep)return;const i=app.metadataCache.getFirstLinkpathDest(e.split("#")[0],this.file.path);if(!i)return;if(this.ownerDocument.querySelector(`div.popover-title[data-path="${i.path}"]`))return;this.semaphores.hoverSleep=!0;const a=this;if(setTimeout((()=>a.semaphores.hoverSleep=!1),500),this.plugin.hover.linkText=e,this.plugin.hover.sourcePath=this.file.path,p=this.contentEl,app.workspace.trigger("hover-link",{event:B,source:"excalidraw",hoverParent:p,targetEl:p,linktext:this.plugin.hover.linkText,sourcePath:this.plugin.hover.sourcePath}),g=this.currentPosition,this.isFullscreen()){const e=this;setTimeout((()=>{var A,t,n,a;const r=null!==(a=null===(n=null===(t=null===(A=this.ownerDocument.querySelector(`div.popover-title[data-path="${i.path}"]`))||void 0===A?void 0:A.parentElement)||void 0===t?void 0:t.parentElement)||void 0===n?void 0:n.parentElement)&&void 0!==a?a:this.ownerDocument.body.querySelector("div.popover");r&&e.contentEl.append(r)}),400)}},{Excalidraw:b,MainMenu:C,WelcomeScreen:v}=this.plugin.getPackage(this.ownerWindow).excalidrawLib,y=A.createElement("div",{className:"excalidraw-wrapper",ref:t,key:"abc",tabIndex:0,onKeyDown:e=>{e.target!==y.ref.current&&(this.isFullscreen()&&e.keyCode===KEYCODE.ESC&&this.exitFullscreen(),!e[CTRL_OR_CMD]||e.shiftKey||e.altKey||E())},onPointerDown:e=>{(e[CTRL_OR_CMD]||e.metaKey)&&(this.plugin.settings.allowCtrlClick||e.metaKey)&&setTimeout((()=>{(this.getSelectedTextElement().id||this.getSelectedImageElement().id||this.getSelectedElementWithLink().id)&&this.handleLinkClick(e)}))},onMouseMove:e=>{B=e.nativeEvent},onMouseOver:()=>{this.clearHoverPreview()},onDragOver:e=>{const A=m(e.dataTransfer);if(A)return e.dataTransfer.dropEffect=A,e.preventDefault(),!1},onDragLeave:()=>{}},A.createElement(b,{ref:u,width:a.width,height:a.height,UIOptions:{canvasActions:{loadScene:!1,saveScene:!1,saveAsScene:!1,export:!1,saveAsImage:!1,saveToActiveFile:!1}},initState:null==e?void 0:e.appState,initialData:e,detectScroll:!0,onPointerUpdate:e=>{if(this.currentPosition=e.pointer,p&&(Math.abs(g.x-e.pointer.x)>50||Math.abs(g.y-e.pointer.y)>50)&&this.clearHoverPreview(),w){if(!d&&"down"===e.button){if(d=!0,this.ctrlKeyDown||this.metaKeyDown)return void f();const e=Date.now();return e-c<600&&e-c>40&&f(),void(c=e)}"up"===e.button&&(d=!1),(this.ctrlKeyDown||this.excalidrawAPI.getAppState().isViewModeEnabled&&this.plugin.settings.hoverPreviewWithoutCTRL)&&E()}},libraryReturnUrl:"app://obsidian.md",autoFocus:!0,onChange:(e,A)=>{var t,n,i,a;const r=()=>{this.plugin.ea.onCanvasColorChangeHook&&this.plugin.ea.onCanvasColorChangeHook(this.plugin.ea,this,A.viewBackgroundColor)};if(w=A.viewModeEnabled,this.semaphores.justLoaded){if((null!==(a=null===(i=null===(n=null===(t=this.excalidrawData)||void 0===t?void 0:t.scene)||void 0===n?void 0:n.elements)||void 0===i?void 0:i.length)&&void 0!==a?a:0)>0&&0===e.length)return;return this.semaphores.justLoaded=!1,!this.semaphores.preventAutozoom&&this.plugin.settings.zoomToFitOnOpen&&this.zoomToFit(!1,!0),this.previousSceneVersion=this.getSceneVersion(e),this.previousBackgroundColor=A.viewBackgroundColor,void r()}if(!this.semaphores.dirty&&null===A.editingElement&&null===A.editingLinearElement){const t=this.getSceneVersion(e);((t>0||0===t&&e.length>0)&&t!==this.previousSceneVersion||A.viewBackgroundColor!==this.previousBackgroundColor&&this.file===this.excalidrawData.file)&&(this.previousSceneVersion=t,this.previousBackgroundColor=A.viewBackgroundColor,this.setDirty(6),r())}},onLibraryChange:e=>{(async()=>{const A={type:"excalidrawlib",version:2,source:"https://excalidraw.com",libraryItems:e};this.plugin.setStencilLibrary(A),await this.plugin.saveSettings()})()},renderTopRightUI:this.obsidianMenu.renderButton,onPaste:e=>{if(e&&e.text&&hyperlinkIsYouTubeLink(e.text))return this.addYouTubeThumbnail(e.text),!1;if(e&&e.text&&hyperlinkIsImage(e.text))return this.addImageWithURL(e.text),!1;if(e.elements){const e=this;setTimeout((()=>e.save(!1)),300)}return!0},onThemeChange:async e=>{var A;this.excalidrawData.scene.appState.theme=e,this.loadSceneFiles(),null===(A=null==n?void 0:n.current)||void 0===A||A.setTheme(e)},ownerDocument:this.ownerDocument,ownerWindow:this.ownerWindow,onDrop:e=>{const A=this.excalidrawAPI;if(!A)return!1;const t=A.getAppState();this.currentPosition=viewportCoordsToSceneCoords({clientX:e.clientX,clientY:e.clientY},t);const n=app.dragManager.draggable,i=(A,t,i)=>{if(!this.getHookServer().onDropHook)return!1;try{return this.getHookServer().onDropHook({ea:this.getHookServer(),event:e,draggable:n,type:A,payload:{files:t,text:i},excalidrawFile:this.file,view:this,pointerPosition:this.currentPosition})}catch(e){return new obsidian_module.Notice("on drop hook error. See console log for details"),errorlog({where:"ExcalidrawView.onDrop",error:e}),!1}};switch(e[CTRL_OR_CMD]=e.shiftKey||e[CTRL_OR_CMD],null==n?void 0:n.type){case"file":if(!i("file",[n.file],null)){if(n.file.path.match(REG_LINKINDEX_INVALIDCHARS))return new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3),!1;if(e[CTRL_OR_CMD]&&(IMAGE_TYPES.contains(n.file.extension)||"md"===n.file.extension)){const t=this.plugin.ea;return t.reset(),t.setView(this),(async()=>{t.canvas.theme=A.getAppState().theme,await t.addImage(this.currentPosition.x,this.currentPosition.y,n.file,!e.altKey),t.addElementsToView(!1,!1,!0)})(),!1}this.addText(`[[${app.metadataCache.fileToLinktext(n.file,this.file.path,!0)}]]`)}return!1;case"files":return i("file",n.files,null)||(async()=>{if(e[CTRL_OR_CMD]){const t=this.plugin.ea;t.reset(),t.setView(this),t.canvas.theme=A.getAppState().theme;let i=0;for(const A of n.files)(IMAGE_TYPES.contains(A.extension)||"md"===A.extension)&&(await t.addImage(this.currentPosition.x+50*i,this.currentPosition.y+50*i,A,!e.altKey),i++,await t.addElementsToView(!1,!1,!0))}else{for(const e of n.files)await this.addText(`[[${app.metadataCache.fileToLinktext(e,this.file.path,!0)}]]`,void 0,!1),this.currentPosition.y+=2*t.currentItemFontSize;this.save(!1)}})(),!1}if(e.dataTransfer.types.includes("Files")){if(e.dataTransfer.types.includes("text/plain")){const A=e.dataTransfer.getData("text");if(A&&i("text",null,A))return!1;if(A&&e[CTRL_OR_CMD]&&hyperlinkIsImage(A))return this.addImageWithURL(A),!1}if(e.dataTransfer.types.includes("text/html")){const A=e.dataTransfer.getData("text/html").match(/src=["']([^"']*)["']/);if(A&&e[CTRL_OR_CMD]&&hyperlinkIsImage(A[1]))return this.addImageWithURL(A[1]),!1}return!0}if(e.dataTransfer.types.includes("text/plain")){const A=e.dataTransfer.getData("text");if(!A)return!0;if(!i("text",null,A)){if(A&&e[CTRL_OR_CMD]&&hyperlinkIsYouTubeLink(A))return this.addYouTubeThumbnail(A),!1;if(this.plugin.settings.iframelyAllowed&&A.match(/^https?:\/\/\S*$/))return(async()=>{var e;const t=await this.addText(A),n=`http://iframely.server.crestify.com/iframely?url=${A}`,i=JSON.parse(await obsidian_module.request({url:n}));if(!i||i.error||!(null===(e=i.meta)||void 0===e?void 0:e.title))return!1;const a=this.plugin.ea;a.reset(),a.setView(this);const r=a.getViewElements().filter((e=>e.id===t));1===r.length&&(r[0].text=r[0].originalText=r[0].rawText=`[${i.meta.title}](${A})`,a.copyViewElementsToEAforEditing(r),a.addElementsToView(!1,!1,!1))})(),!1;if(A.startsWith("obsidian://open?vault=")){const t=e.dataTransfer.getData("text/html");if(t){const e=t.match(/href="app:\/\/obsidian\.md\/(.*?)"/);if(2===e.length){const A=decodeURIComponent(e[1]).split("#"),t=app.vault.getAbstractFileByPath(A[0]);if(t&&t instanceof obsidian_module.TFile){const e=app.metadataCache.fileToLinktext(t,this.file.path);return void this.addText(`[[${e+(A.length>1?"#"+A[1]+"|"+e:"")}]]`)}return this.addText(`[[${decodeURIComponent(e[1])}]]`),!1}}const n=A.split("file=");if(2===n.length)return this.addText(`[[${decodeURIComponent(n[1])}]]`),!1}this.addText(A.replace(/(!\[\[.*#[^\]]*\]\])/g,"$1{40}"))}return!1}return!i("unknown",null,null)},onBeforeTextEdit:e=>{var A;if(clearTimeout(this.isEditingTextResetTimer),this.isEditingTextResetTimer=null,this.semaphores.isEditingText=!0,this.compatibilityMode)return null!==(A=e.originalText)&&void 0!==A?A:e.text;return this.excalidrawData.getRawText(e.id)||e.rawText},onBeforeTextSubmit:(e,A,t,n)=>{const i=this.excalidrawAPI;if(!i)return[null,null,null];const a="PASTING EXCALIDRAW ELEMENTS AS A TEXT ELEMENT IS NOT ALLOWED";if(A.startsWith('{"type":"excalidraw/clipboard","elements":[{"'))return setTimeout((()=>{const A=this.excalidrawAPI.getSceneElements(),t=A.filter((A=>A.id===e.id));if(1===t.length){const e=cloneElement(t[0]);e.rawText=a,A[A.indexOf(t[0])]=e,this.excalidrawData.setTextElement(e.id,a,a,(()=>{})),this.updateScene({elements:A}),i.history.clear()}})),[a,a,null];if(this.semaphores.isEditingText=!0,this.isEditingTextResetTimer=setTimeout((()=>{this.semaphores.isEditingText=!1,this.isEditingTextResetTimer=null}),1500),n)return this.excalidrawData.deleteTextElement(e.id),this.setDirty(7),[null,null,null];const r=e.containerId;if(A!==e.text||t!==e.originalText||!this.excalidrawData.getRawText(e.id)){this.setDirty(8);const[n,a,s]=this.excalidrawData.setTextElement(e.id,A,t,(async(A,t)=>{var n,a;if(this.textMode===TextMode.raw)return;const r=this.excalidrawAPI.getSceneElements(),s=r.filter((A=>A.id===e.id));if(1===s.length){const e=cloneElement(s[0]),o=s[0].containerId?null===(a=null===(n=i.getSceneElements().filter((e=>e.id===s[0].containerId)))||void 0===n?void 0:n[0])||void 0===a?void 0:a.type:void 0;this.excalidrawData.updateTextElement(e,A,t,!0,o),r[r.indexOf(s[0])]=e,this.updateScene({elements:r}),e.containerId&&this.updateContainerSize(e.containerId)}i.history.clear()}));return n?(r&&this.updateContainerSize(r,!0),this.textMode===TextMode.raw?[A,t,s]:A===n?s?[n,a,s]:[null,null,null]:(i.history.clear(),[n,a,s])):[null,null,null]}return r&&this.updateContainerSize(r,!0),this.textMode===TextMode.parsed?this.excalidrawData.getParsedText(e.id):[null,null,null]},onLinkOpen:async(e,A)=>{var t,n;if(A.preventDefault(),!e)return;const i=e.link;if(!i||""===i)return;this.removeLinkTooltip();const a=null===(t=null==A?void 0:A.detail)||void 0===t?void 0:t.nativeEvent;this.handleLinkHookCall(e,e.link,a)||this.openExternalLink(e.link,a.shiftKey||a.ctrlKey||a.metaKey||a.altKey?void 0:e)||this.linkClick(a,null,null,{id:e.id,text:e.link},{shiftKey:null!==(n=a.ctrlKey)&&void 0!==n?n:a.shiftKey,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey})},onLinkHover:(e,A)=>{if(e&&(this.plugin.settings.hoverPreviewWithoutCTRL||A[CTRL_OR_CMD])){B=A,B.ctrlKey=!0;const t=e.link;if(!t||""===t)return;if(t.startsWith("[[")){const A=t.match(/\[\[(?.*?)\]\]/);if(!A)return;let n=A.groups.link;E(n,e)}}},onViewModeChange:e=>{var A,t;if(this.semaphores.viewunload||null===(t=null===(A=this.toolsPanelRef)||void 0===A?void 0:A.current)||void 0===t||t.setExcalidrawViewMode(e),this.getHookServer().onViewModeChangeHook)try{this.getHookServer().onViewModeChangeHook(e,this,this.getHookServer())}catch(e){errorlog({where:"ExcalidrawView.onViewModeChange",fn:this.getHookServer().onViewModeChangeHook,error:e})}}},A.createElement(C,{},A.createElement(C.DefaultItems.ChangeCanvasBackground),A.createElement(C.DefaultItems.ToggleTheme),A.createElement(C.Separator),this.plugin.device.isPhone?null:A.createElement(C.Item,{icon:ICONS.trayMode,"aria-label":"Tray-mode offers an alternative, more spacious canvas",onSelect:()=>{this.toggleTrayMode()}},"Toggle tray-mode"),A.createElement(C.Item,{icon:saveIcon(!1),"aria-label":t$d("FORCE_SAVE"),onSelect:()=>{this.forceSave()}},"Save"),A.createElement(C.Item,{icon:ICONS.scriptEngine,"aria-label":"Explore the Excalidraw Script Library",onSelect:()=>{new ScriptInstallPrompt(this.plugin).open()}},"Script Library"),A.createElement(C.Item,{icon:ICONS.ExportImage,"aria-label":"Export image as PNG, SVG, or Excalidraw file",onSelect:()=>{this.exportDialog||(this.exportDialog=new ExportDialog(this.plugin,this,this.file),this.exportDialog.createForm()),this.exportDialog.open()}},"Export Image..."),A.createElement(C.Item,{icon:ICONS.switchToMarkdown,"aria-label":"Switch to markdown view",onSelect:()=>{this.openAsMarkdown()}},"Open as Markdown"),A.createElement(C.Separator),A.createElement(C.DefaultItems.Help),A.createElement(C.DefaultItems.ClearCanvas)),A.createElement(v,{},A.createElement(v.Center,{},A.createElement(v.Center.Logo),A.createElement(v.Center.Heading,{},'Type "Excalidraw" in the Command Palette',A.createElement("br"),"Explore the Obsidian Menu in the top right",A.createElement("br"),"Visit the Script Library",A.createElement("br"),"Find help in the hamburger-menu"),A.createElement(v.Center.Menu,{},A.createElement(v.Center.MenuItemLink,{icon:ICONS.YouTube,href:"https://www.youtube.com/@VisualPKM",shortcut:null,"aria-label":"Visual PKM YouTube Channel"}," Check out the Visual PKM YouTube channel."),A.createElement(v.Center.MenuItemLink,{icon:ICONS.Discord,href:"https://discord.gg/DyfAXFwUHc",shortcut:null,"aria-label":"Join the Visual Thinking Discord Server"}," Join the Visual Thinking Discord Server"),A.createElement(v.Center.MenuItemLink,{icon:ICONS.twitter,href:"https://twitter.com/zsviczian",shortcut:null,"aria-label":"Follow me on Twitter"}," Follow me on Twitter"),A.createElement(v.Center.MenuItemLink,{icon:ICONS.heart,href:"https://ko-fi.com/zsolt",shortcut:null,"aria-label":"Donate to support Excalidraw-Obsidian"},' Say "Thank You" & support the plugin.'))))),A.createElement(ToolsPanel,{ref:n,visible:!1,view:this,centerPointer:()=>{const e=this.excalidrawAPI;if(!u||!u.current||!e)return;const A=e.getAppState(),{width:t,height:n}=A;this.currentPosition=viewportCoordsToSceneCoords({clientX:t/2,clientY:n/2},A)}})),F=A.useRef(new ResizeObserver((e=>{if(!n||!n.current)return;const{width:A,height:t}=e[0].contentRect;if(0===A||0===t)return;const i=n.current.onRightEdge?n.current.previousWidth-A:0,a=n.current.onBottomEdge?n.current.previousHeight-t:0;n.current.updatePosition(a,i)})));return A.useEffect((()=>((null==n?void 0:n.current)&&F.current.observe(n.current.containerRef.current),()=>{F.current.unobserve(n.current.containerRef.current)})),[n,F]),A.createElement(A.Fragment,null,y)}));t.createRoot(this.contentEl).render(n)}updateContainerSize(e,A=!1){const t=this.excalidrawAPI;if(!t)return;const n=()=>{const A=e?t.getSceneElements().filter((A=>A.id===e&&"arrow"!==A.type)):t.getSceneElements().filter((e=>{var A;return"arrow"!==e.type&&(null===(A=e.boundElements)||void 0===A?void 0:A.map((e=>e.type)).includes("text"))}));A.length>0&&(this.initialContainerSizeUpdate&&(this.semaphores.justLoaded=!0),t.updateContainerSize(A)),this.initialContainerSizeUpdate=!1};A?setTimeout((()=>n()),50):n()}zoomToFit(e=!0,A=!1){if(document.body.querySelector("div.modal-container"))return;const t=this.excalidrawAPI;if(!t||!this.excalidrawRef||this.semaphores.isEditingText)return;const n=this.plugin.settings.zoomToFitMaxLevel,i=t.getSceneElements().filter((e=>e.width<1e4&&e.height<1e4));app.isMobile&&i.length>1e3||i.length>2500?A&&t.scrollToContent():e?setTimeout((()=>t.zoomToFit(i,n,this.isFullscreen()?0:.05)),100):t.zoomToFit(i,n,this.isFullscreen()?0:.05)}updatePinnedScripts(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{pinnedScripts:this.plugin.settings.pinnedScripts}})}updatePinnedCustomPens(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}})}updatePinchZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowPinchZoom:this.plugin.settings.allowPinchZoom}})}updateWheelZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowWheelZoom:this.plugin.settings.allowWheelZoom}})}async toggleTrayMode(){const e=this.excalidrawAPI;if(!e)return!1;const A=e.getAppState();e.updateScene({appState:{trayModeEnabled:!A.trayModeEnabled}}),await this.plugin.loadSettings(),this.plugin.settings.defaultTrayMode=!A.trayModeEnabled,this.plugin.saveSettings()}selectElementsMatchingQuery(e,A,t=!0,n=!1,i=!1){let a=getTextElementsMatchingQuery(e.filter((e=>"text"===e.type)),A,n);if(0!==a.length){if(i){const A=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],e);A.length>0&&(a=A)}this.zoomToElements(t,a)}else new obsidian_module.Notice("I could not find a matching text element")}zoomToElements(e,A){const t=this.excalidrawAPI;if(!t)return;const n=this.plugin.settings.zoomToFitMaxLevel;e&&t.selectElements(A),t.zoomToFit(A,n,.05)}getViewSelectedElements(){var e;const A=this.excalidrawAPI;if(!A)return[];const t=null===(e=A.getAppState())||void 0===e?void 0:e.selectedElementIds;if(!t)return[];const n=Object.keys(t);if(!n)return[];const i=A.getSceneElements().filter((e=>n.includes(e.id))),a=i.filter((e=>e.boundElements&&e.boundElements.filter((e=>"text"===e.type)).length>0)).map((e=>e.boundElements.filter((e=>"text"===e.type)).map((e=>e.id))[0])),r=i.map((e=>e.id)).concat(a);return A.getSceneElements().filter((e=>r.contains(e.id)))}async copyLinkToSelectedElementToClipboard(e){const A=this.getViewSelectedElements();if(A.length<1)return void new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_ERROR"));let t;if(2===A.length){const e=A.filter((e=>"text"===e.type));1===e.length&&e[0].containerId&&1===A.filter((e=>e.boundElements.some((e=>"text"===e.type)))).length&&(t=e[0].id)}t||(t=1===A.length?A[0].id:this.plugin.ea.getLargestElement(A).id);const n=await ScriptEngine.inputPrompt(app,"Set link alias","Leave empty if you do not want to set an alias","");navigator.clipboard.writeText(`[[${this.file.path}#^${e}${t}${n?`|${n}`:""}]]`),new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_READY"))}updateScene(e,A=!1){const t=this.excalidrawAPI;if(!t)return;const n=e.elements&&A;n&&(e.elements=t.restore(e).elements);try{t.updateScene(e)}catch(A){if(errorlog({where:"ExcalidrawView.updateScene 1st attempt",fn:this.updateScene,error:A,scene:e,willDoSecondAttempt:!n}),n)warningUnknowSeriousError();else try{e.elements=t.restore(e).elements,t.updateScene(e)}catch(A){errorlog({where:"ExcalidrawView.updateScene 2nd attempt",fn:this.updateScene,error:A,scene:e}),warningUnknowSeriousError()}}}}function getTextMode(e){return e.search("excalidraw-plugin: parsed\n")>-1||e.search("excalidraw-plugin: locked\n")>-1?TextMode.parsed:TextMode.raw}const DEFAULT_SETTINGS={folder:"Excalidraw",embedUseExcalidrawFolder:!1,templateFilePath:"Excalidraw/Template.excalidraw",scriptFolderPath:"Excalidraw/Scripts",compress:!1,autosave:!0,autosaveInterval:15e3,autosaveIntervalDesktop:15e3,autosaveIntervalMobile:1e4,drawingFilenamePrefix:"Drawing ",drawingEmbedPrefixWithFilename:!0,drawingFilnameEmbedPostfix:" ",drawingFilenameDateTime:"YYYY-MM-DD HH.mm.ss",useExcalidrawExtension:!0,displaySVGInPreview:!0,displayExportedImageIfAvailable:!1,previewMatchObsidianTheme:!1,width:"400",isLeftHanded:!1,matchTheme:!1,matchThemeAlways:!1,matchThemeTrigger:!1,defaultMode:"normal",defaultPenMode:"never",allowPinchZoom:!1,allowWheelZoom:!1,zoomToFitOnOpen:!0,zoomToFitOnResize:!0,zoomToFitMaxLevel:2,linkPrefix:"📍",urlPrefix:"🌐",parseTODO:!1,todo:"☐",done:"🗹",hoverPreviewWithoutCTRL:!1,linkOpacity:1,openInAdjacentPane:!1,openInMainWorkspace:!0,showLinkBrackets:!0,allowCtrlClick:!0,forceWrap:!1,pageTransclusionCharLimit:200,wordWrappingDefault:0,removeTransclusionQuoteSigns:!0,iframelyAllowed:!0,pngExportScale:1,exportWithTheme:!0,exportWithBackground:!0,exportPaddingSVG:10,keepInSync:!1,autoexportSVG:!1,autoexportPNG:!1,autoExportLightAndDark:!1,autoexportExcalidraw:!1,embedType:"excalidraw",embedWikiLink:!0,syncExcalidraw:!1,experimentalFileType:!1,experimentalFileTag:"✏️",experimentalLivePreview:!0,experimentalEnableFourthFont:!1,experimantalFourthFont:"Virgil",fieldSuggester:!0,compatibilityMode:!1,drawingOpenCount:0,library:"deprecated",library2:{type:"excalidrawlib",version:2,source:"https://excalidraw.com",libraryItems:[]},imageElementNotice:!0,mdSVGwidth:500,mdSVGmaxHeight:800,mdFont:"Virgil",mdFontColor:"Black",mdBorderColor:"Black",mdCSS:"",scriptEngineSettings:{},defaultTrayMode:!0,previousRelease:"0.0.0",showReleaseNotes:!0,showNewVersionNotification:!0,mathjaxSourceURL:"https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js",taskboneEnabled:!1,taskboneAPIkey:"",pinnedScripts:[],customPens:[Object.assign({},PENS.default),Object.assign({},PENS.highlighter),Object.assign({},PENS.finetip),Object.assign({},PENS.fountain),Object.assign({},PENS.marker),Object.assign({},PENS["thick-thin"]),Object.assign({},PENS["thin-thick-thin"]),Object.assign({},PENS.default),Object.assign({},PENS.default),Object.assign({},PENS.default)],numberOfCustomPens:0};class ExcalidrawSettingTab extends obsidian_module.PluginSettingTab{constructor(e,A){super(e,A),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1,this.requestUpdatePinnedPens=!1,this.reloadMathJax=!1,this.plugin=A}applySettingsUpdate(e=!1){e&&(this.requestReloadDrawings=!0)}async hide(){if(this.plugin.settings.scriptFolderPath=obsidian_module.normalizePath(this.plugin.settings.scriptFolderPath),"/"!==this.plugin.settings.scriptFolderPath&&""!==this.plugin.settings.scriptFolderPath||(this.plugin.settings.scriptFolderPath="Excalidraw/Scripts"),this.plugin.saveSettings(),this.requestUpdatePinnedPens&&app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.requestReloadDrawings){const e=app.workspace.getLeavesOfType("excalidraw");for(const A of e)A.view instanceof ExcalidrawView&&(await A.view.save(!1),await A.view.reload(!0));this.requestEmbedUpdate=!0}this.requestEmbedUpdate&&this.plugin.triggerEmbedUpdates(),this.plugin.scriptEngine.updateScriptPath(),this.reloadMathJax&&this.plugin.loadMathJax()}async display(){var e;await this.plugin.loadSettings(),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1;const{containerEl:A}=this;A.addClass("excalidraw-settings"),this.containerEl.empty();const t=A.createDiv("coffee");t.addClass("ex-coffee-div"),t.createEl("a",{href:"https://ko-fi.com/zsolt"}).createEl("img",{attr:{src:"https://cdn.ko-fi.com/cdn/kofi3.png?v=3"}}).height=45,new obsidian_module.Setting(A).setName(t$d("RELEASE_NOTES_NAME")).setDesc(fragWithHTML(t$d("RELEASE_NOTES_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showReleaseNotes).onChange((async e=>{this.plugin.settings.showReleaseNotes=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("NEWVERSION_NOTIFICATION_NAME")).setDesc(fragWithHTML(t$d("NEWVERSION_NOTIFICATION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showNewVersionNotification).onChange((async e=>{this.plugin.settings.showNewVersionNotification=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FOLDER_NAME")).setDesc(fragWithHTML(t$d("FOLDER_DESC"))).addText((e=>e.setPlaceholder("Excalidraw").setValue(this.plugin.settings.folder).onChange((async e=>{this.plugin.settings.folder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FOLDER_EMBED_NAME")).setDesc(fragWithHTML(t$d("FOLDER_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedUseExcalidrawFolder).onChange((async e=>{this.plugin.settings.embedUseExcalidrawFolder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("TEMPLATE_NAME")).setDesc(fragWithHTML(t$d("TEMPLATE_DESC"))).addText((e=>e.setPlaceholder("Excalidraw/Template").setValue(this.plugin.settings.templateFilePath).onChange((async e=>{this.plugin.settings.templateFilePath=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("SCRIPT_FOLDER_NAME")).setDesc(fragWithHTML(t$d("SCRIPT_FOLDER_DESC"))).addText((e=>e.setPlaceholder("Excalidraw/Scripts").setValue(this.plugin.settings.scriptFolderPath).onChange((async e=>{this.plugin.settings.scriptFolderPath=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("SAVING_HEAD")}),new obsidian_module.Setting(A).setName(t$d("COMPRESS_NAME")).setDesc(fragWithHTML(t$d("COMPRESS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compress).onChange((async e=>{this.plugin.settings.compress=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("AUTOSAVE_INTERVAL_DESKTOP_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_DESKTOP_DESC"))).addDropdown((e=>e.addOption("15000","Frequent (every 15 seconds)").addOption("60000","Moderate (every 60 seconds)").addOption("300000","Rare (every 5 minutes)").addOption("900000","Practically never (every 15 minutes)").setValue(this.plugin.settings.autosaveIntervalDesktop.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalDesktop=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("AUTOSAVE_INTERVAL_MOBILE_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_MOBILE_DESC"))).addDropdown((e=>e.addOption("10000","Frequent (every 10 seconds)").addOption("30000","Moderate (every 30 seconds)").addOption("60000","Rare (every 1 minute)").addOption("300000","Practically never (every 5 minutes)").setValue(this.plugin.settings.autosaveIntervalMobile.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalMobile=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("FILENAME_HEAD")}),A.createDiv("",(e=>{e.innerHTML=t$d("FILENAME_DESC")}));const n=()=>`${t$d("FILENAME_SAMPLE")}${getDrawingFilename(this.plugin.settings)}
${t$d("FILENAME_EMBED_SAMPLE")}${getEmbedFilename("{NOTE_NAME}",this.plugin.settings)}`,i=A.createEl("p",{text:""});let a,r,s,o,l,c,d;i.innerHTML=n(),new obsidian_module.Setting(A).setName(t$d("FILENAME_PREFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_DESC"))).addText((e=>e.setPlaceholder("Drawing ").setValue(this.plugin.settings.drawingFilenamePrefix).onChange((async A=>{this.plugin.settings.drawingFilenamePrefix=A.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenamePrefix),i.innerHTML=n(),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILENAME_PREFIX_EMBED_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.drawingEmbedPrefixWithFilename).onChange((async e=>{this.plugin.settings.drawingEmbedPrefixWithFilename=e,i.innerHTML=n(),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILENAME_POSTFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_POSTFIX_DESC"))).addText((e=>e.setPlaceholder("").setValue(this.plugin.settings.drawingFilnameEmbedPostfix).onChange((async A=>{this.plugin.settings.drawingFilnameEmbedPostfix=A.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilnameEmbedPostfix),i.innerHTML=n(),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILENAME_DATE_NAME")).setDesc(fragWithHTML(t$d("FILENAME_DATE_DESC"))).addText((e=>e.setPlaceholder("YYYY-MM-DD HH.mm.ss").setValue(this.plugin.settings.drawingFilenameDateTime).onChange((async A=>{this.plugin.settings.drawingFilenameDateTime=A.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenameDateTime),i.innerHTML=n(),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILENAME_EXCALIDRAW_EXTENSION_NAME")).setDesc(fragWithHTML(t$d("FILENAME_EXCALIDRAW_EXTENSION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.useExcalidrawExtension).onChange((async e=>{this.plugin.settings.useExcalidrawExtension=e,i.innerHTML=n(),this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("DISPLAY_HEAD")}),new obsidian_module.Setting(A).setName(t$d("LEFTHANDED_MODE_NAME")).setDesc(fragWithHTML(t$d("LEFTHANDED_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.isLeftHanded).onChange((async e=>{this.plugin.settings.isLeftHanded=e,setLeftHandedMode(e),setTimeout((()=>setLeftHandedMode(e))),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("MATCH_THEME_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchTheme).onChange((async e=>{this.plugin.settings.matchTheme=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("MATCH_THEME_ALWAYS_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_ALWAYS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeAlways).onChange((async e=>{this.plugin.settings.matchThemeAlways=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("MATCH_THEME_TRIGGER_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_TRIGGER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeTrigger).onChange((async e=>{this.plugin.settings.matchThemeTrigger=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("DEFAULT_OPEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_OPEN_MODE_DESC"))).addDropdown((e=>e.addOption("normal","Always in normal-mode").addOption("zen","Always in zen-mode").addOption("view","Always in view-mode").addOption("view-mobile","Usually normal, but view-mode on Phone").setValue(this.plugin.settings.defaultMode).onChange((async e=>{this.plugin.settings.defaultMode=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("DEFAULT_PEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PEN_MODE_DESC"))).addDropdown((e=>e.addOption("never","Never").addOption("mobile","On Obsidian Mobile").addOption("always","Always").setValue(this.plugin.settings.defaultPenMode).onChange((async e=>{this.plugin.settings.defaultPenMode=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("DEFAULT_PINCHZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PINCHZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowPinchZoom).onChange((async e=>{this.plugin.settings.allowPinchZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinchZoom()})),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("DEFAULT_WHEELZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_WHEELZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowWheelZoom).onChange((async e=>{this.plugin.settings.allowWheelZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updateWheelZoom()})),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("ZOOM_TO_FIT_ONOPEN_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_ONOPEN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnOpen).onChange((async e=>{this.plugin.settings.zoomToFitOnOpen=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("ZOOM_TO_FIT_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnResize).onChange((async e=>{this.plugin.settings.zoomToFitOnResize=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("ZOOM_TO_FIT_MAX_LEVEL_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_MAX_LEVEL_DESC"))).addSlider((e=>e.setLimits(.5,10,.5).setValue(this.plugin.settings.zoomToFitMaxLevel).onChange((async e=>{a.innerText=` ${e.toString()}`,this.plugin.settings.zoomToFitMaxLevel=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{a=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.zoomToFitMaxLevel.toString()}`})),this.containerEl.createEl("h1",{text:t$d("LINKS_HEAD")}),this.containerEl.createEl("span",void 0,(e=>e.innerHTML=t$d("LINKS_DESC"))),new obsidian_module.Setting(A).setName(t$d("ADJACENT_PANE_NAME")).setDesc(fragWithHTML(t$d("ADJACENT_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInAdjacentPane).onChange((async e=>{this.plugin.settings.openInAdjacentPane=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("MAINWORKSPACE_PANE_NAME")).setDesc(fragWithHTML(t$d("MAINWORKSPACE_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInMainWorkspace).onChange((async e=>{this.plugin.settings.openInMainWorkspace=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(fragWithHTML(t$d("LINK_BRACKETS_NAME"))).setDesc(fragWithHTML(t$d("LINK_BRACKETS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showLinkBrackets).onChange((e=>{this.plugin.settings.showLinkBrackets=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("LINK_PREFIX_NAME")).setDesc(fragWithHTML(t$d("LINK_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.linkPrefix).onChange((e=>{this.plugin.settings.linkPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("URL_PREFIX_NAME")).setDesc(fragWithHTML(t$d("URL_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.urlPrefix).onChange((e=>{this.plugin.settings.urlPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("PARSE_TODO_NAME")).setDesc(fragWithHTML(t$d("PARSE_TODO_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.parseTODO).onChange((e=>{this.plugin.settings.parseTODO=e,r.setDisabled(!e),s.setDisabled(!e),this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("TODO_NAME")).setDesc(fragWithHTML(t$d("TODO_DESC"))).addText((e=>{r=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.todo).onChange((e=>{this.plugin.settings.todo=e,this.applySettingsUpdate(!0)}))})),r.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(A).setName(t$d("DONE_NAME")).setDesc(fragWithHTML(t$d("DONE_DESC"))).setDisabled(!this.plugin.settings.parseTODO).addText((e=>{s=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.done).onChange((e=>{this.plugin.settings.done=e,this.applySettingsUpdate(!0)}))})),s.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(A).setName(t$d("LINKOPACITY_NAME")).setDesc(fragWithHTML(t$d("LINKOPACITY_DESC"))).addSlider((e=>e.setLimits(0,1,.05).setValue(this.plugin.settings.linkOpacity).onChange((async e=>{o.innerText=` ${e.toString()}`,this.plugin.settings.linkOpacity=e,this.applySettingsUpdate(!0)})))).settingEl.createDiv("",(e=>{o=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.linkOpacity.toString()}`})),new obsidian_module.Setting(A).setName(t$d("HOVERPREVIEW_NAME")).setDesc(fragWithHTML(t$d("HOVERPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.hoverPreviewWithoutCTRL).onChange((async e=>{this.plugin.settings.hoverPreviewWithoutCTRL=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("LINK_CTRL_CLICK_NAME")).setDesc(fragWithHTML(t$d("LINK_CTRL_CLICK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowCtrlClick).onChange((async e=>{this.plugin.settings.allowCtrlClick=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("TRANSCLUSION_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_WRAP_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.forceWrap).onChange((async e=>{this.plugin.settings.forceWrap=e,this.applySettingsUpdate(!0)})))).descEl.innerHTML=`![[doc#^ref]]{number} ${t$d("TRANSCLUSION_WRAP_DESC")}`,new obsidian_module.Setting(A).setName(t$d("PAGE_TRANSCLUSION_CHARCOUNT_NAME")).setDesc(fragWithHTML(t$d("PAGE_TRANSCLUSION_CHARCOUNT_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.pageTransclusionCharLimit.toString()).onChange((async A=>{const t=parseInt(A);if(isNaN(t)&&""!==A)e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString());else{if(this.requestEmbedUpdate=!0,""===A)return this.plugin.settings.pageTransclusionCharLimit=10,void this.applySettingsUpdate(!0);this.plugin.settings.pageTransclusionCharLimit=t,e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(A).setName(t$d("TRANSCLUSION_DEFAULT_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_DEFAULT_WRAP_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.wordWrappingDefault.toString()).onChange((async A=>{const t=parseInt(A);if(isNaN(t)&&""!==A)e.setValue(this.plugin.settings.wordWrappingDefault.toString());else{if(this.requestEmbedUpdate=!0,""===A)return this.plugin.settings.wordWrappingDefault=0,void this.applySettingsUpdate(!0);this.plugin.settings.wordWrappingDefault=t,e.setValue(this.plugin.settings.wordWrappingDefault.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(A).setName(t$d("QUOTE_TRANSCLUSION_REMOVE_NAME")).setDesc(fragWithHTML(t$d("QUOTE_TRANSCLUSION_REMOVE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.removeTransclusionQuoteSigns).onChange((e=>{this.plugin.settings.removeTransclusionQuoteSigns=e,this.requestEmbedUpdate=!0,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("GET_URL_TITLE_NAME")).setDesc(fragWithHTML(t$d("GET_URL_TITLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.iframelyAllowed).onChange((async e=>{this.plugin.settings.iframelyAllowed=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("MD_HEAD")}),this.containerEl.createEl("p",{text:t$d("MD_HEAD_DESC")}),new obsidian_module.Setting(A).setName(t$d("MD_TRANSCLUDE_WIDTH_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_WIDTH_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 500").setValue(this.plugin.settings.mdSVGwidth.toString()).onChange((async A=>{const t=parseInt(A);if(isNaN(t)&&""!==A)e.setValue(this.plugin.settings.mdSVGwidth.toString());else{if(this.requestEmbedUpdate=!0,""===A)return this.plugin.settings.mdSVGwidth=500,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGwidth=t,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGwidth.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(A).setName(t$d("MD_TRANSCLUDE_HEIGHT_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_HEIGHT_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 800").setValue(this.plugin.settings.mdSVGmaxHeight.toString()).onChange((async A=>{const t=parseInt(A);if(isNaN(t)&&""!==A)e.setValue(this.plugin.settings.mdSVGmaxHeight.toString());else{if(this.requestEmbedUpdate=!0,""===A)return this.plugin.settings.mdSVGmaxHeight=800,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGmaxHeight=t,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGmaxHeight.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(A).setName(t$d("MD_DEFAULT_FONT_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),e.addOption("Cascadia","Cascadia"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2"].contains(e.extension))).forEach((A=>{e.addOption(A.path,A.name)})),e.setValue(this.plugin.settings.mdFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFont=e,this.applySettingsUpdate(!0)}))})),new obsidian_module.Setting(A).setName(t$d("MD_DEFAULT_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdFontColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFontColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("MD_DEFAULT_BORDER_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_BORDER_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdBorderColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdBorderColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("MD_CSS_NAME")).setDesc(fragWithHTML(t$d("MD_CSS_DESC"))).addText((e=>e.setPlaceholder("filename of css file in vault").setValue(this.plugin.settings.mdCSS).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdCSS=e,this.applySettingsUpdate(!0)})))),this.containerEl.createEl("h1",{text:t$d("EMBED_HEAD")}),new obsidian_module.Setting(A).setName(t$d("EMBED_PREVIEW_SVG_NAME")).setDesc(fragWithHTML(t$d("EMBED_PREVIEW_SVG_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.displaySVGInPreview).onChange((async e=>{this.plugin.settings.displaySVGInPreview=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("EMBED_REUSE_EXPORTED_IMAGE_NAME")).setDesc(fragWithHTML(t$d("EMBED_REUSE_EXPORTED_IMAGE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.displayExportedImageIfAvailable).onChange((async e=>{this.plugin.settings.displayExportedImageIfAvailable=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("PREVIEW_MATCH_OBSIDIAN_NAME")).setDesc(fragWithHTML(t$d("PREVIEW_MATCH_OBSIDIAN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.previewMatchObsidianTheme).onChange((async e=>{this.plugin.settings.previewMatchObsidianTheme=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("EMBED_WIDTH_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIDTH_DESC"))).addText((e=>e.setPlaceholder("400").setValue(this.plugin.settings.width).onChange((async e=>{this.plugin.settings.width=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(A).setName(t$d("EMBED_TYPE_NAME")).setDesc(fragWithHTML(t$d("EMBED_TYPE_DESC"))).addDropdown((async e=>{l=e,l.addOption("excalidraw","excalidraw"),this.plugin.settings.autoexportPNG?l.addOption("PNG","PNG"):"PNG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),this.plugin.settings.autoexportSVG?l.addOption("SVG","SVG"):"SVG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),l.setValue(this.plugin.settings.embedType).onChange((async e=>{this.plugin.settings.embedType=e,this.applySettingsUpdate()}))})),new obsidian_module.Setting(A).setName(t$d("EMBED_WIKILINK_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIKILINK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedWikiLink).onChange((async e=>{this.plugin.settings.embedWikiLink=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("EXPORT_PNG_SCALE_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_SCALE_DESC"))).addSlider((e=>e.setLimits(1,5,.5).setValue(this.plugin.settings.pngExportScale).onChange((async e=>{c.innerText=` ${e.toString()}`,this.plugin.settings.pngExportScale=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{c=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.pngExportScale.toString()}`})),new obsidian_module.Setting(A).setName(t$d("EXPORT_BACKGROUND_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BACKGROUND_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithBackground).onChange((async e=>{this.plugin.settings.exportWithBackground=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(A).setName(t$d("EXPORT_PADDING_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PADDING_DESC"))).addSlider((e=>e.setLimits(0,50,5).setValue(this.plugin.settings.exportPaddingSVG).onChange((async e=>{d.innerText=` ${e.toString()}`,this.plugin.settings.exportPaddingSVG=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{d=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.exportPaddingSVG.toString()}`})),new obsidian_module.Setting(A).setName(t$d("EXPORT_THEME_NAME")).setDesc(fragWithHTML(t$d("EXPORT_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithTheme).onChange((async e=>{this.plugin.settings.exportWithTheme=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),this.containerEl.createEl("h1",{text:t$d("EXPORT_HEAD")}),new obsidian_module.Setting(A).setName(t$d("EXPORT_SYNC_NAME")).setDesc(fragWithHTML(t$d("EXPORT_SYNC_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.keepInSync).onChange((async e=>{this.plugin.settings.keepInSync=e,this.applySettingsUpdate()}))));const h=e=>{let A=0;for(A=0;Ae.setValue(this.plugin.settings.autoexportSVG).onChange((async e=>{e?l.addOption("SVG","SVG"):("SVG"===this.plugin.settings.embedType&&(l.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),h("SVG")),this.plugin.settings.autoexportSVG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("EXPORT_PNG_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportPNG).onChange((async e=>{e?l.addOption("PNG","PNG"):("PNG"===this.plugin.settings.embedType&&(l.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),h("PNG")),this.plugin.settings.autoexportPNG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("EXPORT_BOTH_DARK_AND_LIGHT_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BOTH_DARK_AND_LIGHT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoExportLightAndDark).onChange((async e=>{this.plugin.settings.autoExportLightAndDark=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("COMPATIBILITY_HEAD")}),new obsidian_module.Setting(A).setName(t$d("COMPATIBILITY_MODE_NAME")).setDesc(fragWithHTML(t$d("COMPATIBILITY_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compatibilityMode).onChange((async e=>{this.plugin.settings.compatibilityMode=e,i.innerHTML=n(),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("EXPORT_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("EXPORT_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportExcalidraw).onChange((async e=>{this.plugin.settings.autoexportExcalidraw=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("SYNC_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("SYNC_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.syncExcalidraw).onChange((async e=>{this.plugin.settings.syncExcalidraw=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("NONSTANDARD_HEAD")}),this.containerEl.createEl("p",{text:t$d("NONSTANDARD_DESC")}),new obsidian_module.Setting(A).setName(t$d("CUSTOM_PEN_NAME")).setDesc(t$d("CUSTOM_PEN_DESC")).addDropdown((e=>e.addOption("0","0").addOption("1","1").addOption("2","2").addOption("3","3").addOption("4","4").addOption("5","5").addOption("6","6").addOption("7","7").addOption("8","8").addOption("9","9").addOption("10","10").setValue(this.plugin.settings.numberOfCustomPens.toString()).onChange((e=>{this.plugin.settings.numberOfCustomPens=parseInt(e),this.requestUpdatePinnedPens=!0,this.applySettingsUpdate(!1)})))),new obsidian_module.Setting(A).setName(t$d("ENABLE_FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("ENABLE_FOURTH_FONT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalEnableFourthFont).onChange((async e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimentalEnableFourthFont=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("FOURTH_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2"].contains(e.extension))).forEach((A=>{e.addOption(A.path,A.name)})),e.setValue(this.plugin.settings.experimantalFourthFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimantalFourthFont=e,this.applySettingsUpdate(!0),this.plugin.initializeFourthFont()}))})),this.containerEl.createEl("h1",{text:t$d("EXPERIMENTAL_HEAD")}),this.containerEl.createEl("p",{text:t$d("EXPERIMENTAL_DESC")}),new obsidian_module.Setting(A).setName(t$d("MATHJAX_NAME")).setDesc(t$d("MATHJAX_DESC")).addDropdown((e=>{e.addOption("https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js","jsdelivr").addOption("https://unpkg.com/mathjax@3.2.1/es5/tex-svg.js","unpkg").addOption("https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.1/es5/tex-svg-full.min.js","cdnjs").setValue(this.plugin.settings.mathjaxSourceURL).onChange((e=>{this.plugin.settings.mathjaxSourceURL=e,this.reloadMathJax=!0,this.applySettingsUpdate()}))})),new obsidian_module.Setting(A).setName(t$d("FIELD_SUGGESTER_NAME")).setDesc(fragWithHTML(t$d("FIELD_SUGGESTER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.fieldSuggester).onChange((async e=>{this.plugin.settings.fieldSuggester=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILETYPE_NAME")).setDesc(fragWithHTML(t$d("FILETYPE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalFileType).onChange((async e=>{this.plugin.settings.experimentalFileType=e,this.plugin.experimentalFileTypeDisplayToggle(e),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILETAG_NAME")).setDesc(fragWithHTML(t$d("FILETAG_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.experimentalFileTag).onChange((async e=>{this.plugin.settings.experimentalFileTag=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("LIVEPREVIEW_NAME")).setDesc(fragWithHTML(t$d("LIVEPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalLivePreview).onChange((async e=>{this.plugin.settings.experimentalLivePreview=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h2",{text:t$d("TASKBONE_HEAD")}),this.containerEl.createEl("p",{text:t$d("TASKBONE_DESC")}),new obsidian_module.Setting(A).setName(t$d("TASKBONE_ENABLE_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_ENABLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.taskboneEnabled).onChange((async e=>{if(u.setDisabled(!e),this.plugin.settings.taskboneEnabled=e,""===this.plugin.settings.taskboneAPIkey){const e=await this.plugin.taskbone.initialize(!1);e&&u.setValue(e)}this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("TASKBONE_APIKEY_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_APIKEY_DESC"))).addText((e=>{u=e,u.setValue(this.plugin.settings.taskboneAPIkey).onChange((async e=>{this.plugin.settings.taskboneAPIkey=e,this.applySettingsUpdate()})).setDisabled(!this.plugin.settings.taskboneEnabled)}));const g=null===(e=this.plugin.scriptEngine.getListofScripts())||void 0===e?void 0:e.map((e=>this.plugin.scriptEngine.getScriptName(e)));if(Object.keys(this.plugin.settings.scriptEngineSettings).length>0&&g){const e=(e,A)=>{const t=this.plugin.settings.scriptEngineSettings[e][A];return"object"==typeof t?t.height:null},t=(e,A)=>{const t=this.plugin.settings.scriptEngineSettings[e][A];return"object"==typeof t?t.value:t},n=(e,A,t)=>{"object"==typeof this.plugin.settings.scriptEngineSettings[e][A]?this.plugin.settings.scriptEngineSettings[e][A].value=t:this.plugin.settings.scriptEngineSettings[e][A]=t},i=(e,i,a)=>{new obsidian_module.Setting(A).setName(i).setDesc(fragWithHTML(null!=a?a:"")).addToggle((A=>A.setValue(t(e,i)).onChange((async A=>{n(e,i,A),this.applySettingsUpdate()}))))},a=(i,a,r,s)=>{s&&"[object Array]"===Object.prototype.toString.call(s)&&s.length>0?new obsidian_module.Setting(A).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addDropdown((e=>{s.forEach((A=>e.addOption(A.toString(),A.toString()))),e.setValue(t(i,a)).onChange((async e=>{n(i,a,e),this.applySettingsUpdate()}))})):e(i,a)?new obsidian_module.Setting(A).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addTextArea((A=>{A.inputEl.style.minHeight=e(i,a),A.inputEl.style.minWidth="400px",A.setValue(t(i,a)).onChange((async e=>{n(i,a,e),this.applySettingsUpdate()}))})):new obsidian_module.Setting(A).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addText((e=>e.setValue(t(i,a)).onChange((async e=>{n(i,a,e),this.applySettingsUpdate()}))))},r=(e,i,a)=>{new obsidian_module.Setting(A).setName(i).setDesc(fragWithHTML(null!=a?a:"")).addText((A=>A.setPlaceholder("Enter a number").setValue(t(e,i).toString()).onChange((async a=>{const r=parseFloat(a);isNaN(r)&&""!==a?A.setValue(t(e,i).toString()):(n(e,i,isNaN(r)?0:r),this.applySettingsUpdate())}))))};this.containerEl.createEl("h1",{text:t$d("SCRIPT_SETTINGS_HEAD")}),Object.keys(this.plugin.settings.scriptEngineSettings).filter((e=>g.contains(e))).forEach((e=>{const A=this.plugin.settings.scriptEngineSettings[e],t=Object.values(A);0===t.length||t.length>0&&0===t.map((e=>e.hidden?0:1)).reduce(((e,A)=>e+A))||(this.containerEl.createEl("h3",{text:e}),Object.keys(A).forEach((t=>{var n;const s=A[t];switch(typeof(null!==(n=s.value)&&void 0!==n?n:s)){case"boolean":s.hidden||i(e,t,s.description);break;case"string":s.hidden||a(e,t,s.description,s.valueset);break;case"number":s.hidden||r(e,t,s.description)}})))}))}}}var openDialogAction;!function(e){e[e.openFile=0]="openFile",e[e.insertLinkToDrawing=1]="insertLinkToDrawing"}(openDialogAction||(openDialogAction={}));class OpenFileDialog extends obsidian_module.FuzzySuggestModal{constructor(e,A){super(e),this.app=e,this.action=openDialogAction.openFile,this.plugin=A,this.onNewPane=!1,this.limit=20,this.setInstructions([{command:t$d("TYPE_FILENAME"),purpose:""}]),this.inputEl.onkeyup=e=>{"Enter"==e.key&&this.action==openDialogAction.openFile&&this.containerEl.innerText.includes(EMPTY_MESSAGE)&&(this.plugin.createAndOpenDrawing(`${this.plugin.settings.folder}/${this.inputEl.value}.excalidraw.md`,this.onNewPane?"new-pane":"active-pane"),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){switch(this.action){case openDialogAction.openFile:this.plugin.openDrawing(e,this.onNewPane?"new-pane":"active-pane",!0);break;case openDialogAction.insertLinkToDrawing:this.plugin.embedDrawing(e)}}start(e,A){switch(this.action=e,this.onNewPane=A,e){case openDialogAction.openFile:this.emptyStateText=EMPTY_MESSAGE,this.setPlaceholder(t$d("SELECT_FILE_OR_TYPE_NEW"));break;case openDialogAction.insertLinkToDrawing:this.emptyStateText=t$d("NO_MATCH"),this.setPlaceholder(t$d("SELECT_TO_EMBED"))}this.open()}}class InsertLinkDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e),this.app=e,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_FILE_TO_LINK")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return this.app.metadataCache.getLinkSuggestions().filter((e=>!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path+(e.alias?`|${e.alias}`:"")}onChooseItem(e){let A=e.path;e.file&&(A=this.app.metadataCache.fileToLinktext(e.file,this.drawingPath,!0)),this.addText(`[[${A+(e.alias?`|${e.alias}`:"")}]]`)}start(e,A){this.addText=A,this.drawingPath=e,this.open()}}class InsertImageDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE_WITH_OPTION_TO_SCALE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH"),this.inputEl.onkeyup=e=>{"Enter"===e.key&&e.altKey&&this.chooser.values&&(this.onChooseItem(this.chooser.values[this.chooser.selectedItem].item,new KeyboardEvent("keypress",{altKey:!0})),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>(IMAGE_TYPES.contains(e.extension)||this.plugin.isExcalidrawFile(e))&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}onChooseItem(e,A){const t=this.plugin.ea;t.reset(),t.setView(this.view),t.canvas.theme=this.view.excalidrawAPI.getAppState().theme,(async()=>{await t.addImage(0,0,e,!A.altKey),t.addElementsToView(!0,!1,!0)})()}start(e){this.view=e,this.open()}}class ImportSVGDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"svg"===e.extension&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}async onChooseItem(e,A){if(!e)return;const t=this.plugin.ea;t.reset(),t.setView(this.view);const n=await app.vault.read(e);n&&""!==n&&(t.importSVG(n),t.addElementsToView(!0,!0,!0))}start(e){this.view=e,this.open()}}class InsertMDDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_MD")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"md"===e.extension&&!this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){const A=this.plugin.ea;A.reset(),A.setView(this.view),(async()=>{await A.addImage(0,0,e),A.addElementsToView(!0,!1,!0)})()}start(e){this.view=e,this.open()}}function around(e,A){const t=Object.keys(A).map((t=>around1(e,t,A[t])));return 1===t.length?t[0]:function(){t.forEach((e=>e()))}}function around1(e,A,t){const n=e[A],i=e.hasOwnProperty(A);let a=t(n);return n&&Object.setPrototypeOf(a,n),Object.setPrototypeOf(r,a),e[A]=r,s;function r(...t){return a===n&&e[A]===r&&s(),a.apply(this,t)}function s(){e[A]===r&&(i?e[A]=n:delete e[A]),a!==n&&(a=n,Object.setPrototypeOf(r,n||Function))}}let plugin$1,vault$1,metadataCache$1;const getDefaultWidth$1=e=>{const A=parseInt(e.settings.width);return isNaN(A)||0===A||null===A?"400":e.settings.width},initializeMarkdownPostProcessor=e=>{plugin$1=e,vault$1=e.app.vault,metadataCache$1=e.app.metadataCache},getIMG$1=async(e,A=!1)=>{var t;let n=e.file;if(!e.file){const A=vault$1.getAbstractFileByPath(null===(t=e.fname)||void 0===t?void 0:t.split("#")[0]);if(!(A&&A instanceof obsidian_module.TFile))return null;n=A}const i=getEmbeddedFilenameParts(e.fname);e.style=e.style.replaceAll(" ","-");const a=hasExportTheme(plugin$1,n)?getExportTheme(plugin$1,n,"light"):void 0,r={withBackground:getWithBackground(plugin$1,n),withTheme:!!a||plugin$1.settings.exportWithTheme},s=createEl("img");let o=`max-width:${e.fwidth}${e.fwidth.match(/\d$/)?"px":""}; `;e.fheight&&(o+=`height:${e.fheight}px;`),A||s.setAttribute("style",o),s.addClass(e.style);const l=null!=a?a:plugin$1.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":plugin$1.settings.exportWithTheme?void 0:"light";l&&(r.withTheme=!0);const c=new EmbeddedFilesLoader(plugin$1,l?"dark"===l:void 0);if(!plugin$1.settings.displaySVGInPreview){const A=parseInt(e.fwidth),t=A>=2400?5:A>=1800?4:A>=1200?3:A>=600?2:1,a=i.hasGroupref?void 0:await getQuickImagePreview(plugin$1,n.path,"png"),o=null!=a?a:await createPNG(i.hasGroupref?i.filepath+i.linkpartReference:n.path,t,r,c,l,null,null,[],plugin$1,0);return o?(s.src=URL.createObjectURL(o),s):null}if(!i.hasBlockref&&!i.hasSectionref){const e=await getQuickImagePreview(plugin$1,n.path,"svg");if(e)return s.setAttribute("src",svgToBase64(e)),s}const d=(await createSVG(i.hasGroupref||i.hasBlockref||i.hasSectionref?i.filepath+i.linkpartReference:n.path,!0,r,c,l,null,null,[],plugin$1,0,getExportPadding(plugin$1,n))).outerHTML;let h=null;const u=document.createElement("div");u.innerHTML=d;const g=u.firstChild;return g instanceof SVGSVGElement&&(h=g),h?(h=embedFontsInSVG(h,plugin$1),s.setAttribute("src",svgToBase64(h.outerHTML)),s):null},createImgElement=async(e,A=!1)=>{const t=await getIMG$1(e,A);let n;t.setAttribute("fileSource",e.fname),e.fwidth&&t.setAttribute("w",e.fwidth),e.fheight&&t.setAttribute("h",e.fheight),t.setAttribute("draggable","false"),t.setAttribute("onCanvas",A?"true":"false");const i=e=>{if(e.target instanceof Element&&"img"!=e.target.tagName.toLowerCase())return;const A=t.getAttribute("fileSource");if(A){const t=A.match(/([^#]*)(.*)/);if(!t)return;plugin$1.openDrawing(vault$1.getAbstractFileByPath(t[1]),e[CTRL_OR_CMD]?"new-pane":e.metaKey&&!app.isMobile?"popout-window":"active-pane",!0,t[2])}};let a;return t.addEventListener("pointermove",(e=>{n&&(Math.abs(e.screenX-a.screenX)>10||Math.abs(e.screenY-a.screenY)>10)&&(clearTimeout(n),n=null)})),t.addEventListener("pointerdown",(e=>{var A;(null===(A=null==t?void 0:t.parentElement)||void 0===A?void 0:A.hasClass("canvas-node-content"))||(n=setTimeout((()=>i(e)),500),a=e)})),t.addEventListener("pointerup",(()=>{n&&clearTimeout(n),n=null})),t.addEventListener("dblclick",i),t.addEventListener(RERENDER_EVENT,(async e=>{e.stopPropagation();const A=t.parentElement,n=t.style.maxWidth,i=t.style.maxHeight,a=t.getAttribute("fileSource"),r="true"===t.getAttribute("onCanvas"),s=await createImgElement({fname:a,fwidth:t.getAttribute("w"),fheight:t.getAttribute("h"),style:t.getAttribute("class")},r);A.empty(),r||(s.style.maxHeight=i,s.style.maxWidth=n),s.setAttribute("fileSource",a),A.append(s)})),t},createImageDiv$1=async(e,A=!1)=>{const t=await createImgElement(e,A);return createDiv(e.style,(e=>e.append(t)))},processReadingMode$1=async(e,A)=>{var t;for(const n of e){const e=null===(t=n.getAttribute("src"))||void 0===t?void 0:t.split("#")[0];if(!e)continue;const i=metadataCache$1.getFirstLinkpathDest(e,A.sourcePath);if(i&&i instanceof obsidian_module.TFile&&plugin$1.isExcalidrawFile(i)){if(isTextOnlyEmbed$1(n))continue;n.parentElement.replaceChild(await processInternalEmbed$1(n,i),n)}}},processInternalEmbed$1=async(e,A)=>{const t={fname:"",fheight:"",fwidth:"",style:""},n=e.getAttribute("src");if(!n)return;t.fwidth=e.getAttribute("width")?e.getAttribute("width"):getDefaultWidth$1(plugin$1),t.fheight=e.getAttribute("height");let i=e.getAttribute("alt");t.style="excalidraw-svg",processAltText$1(n.split("#")[0],i,t);const a=getEmbeddedFilenameParts(n);return t.fname=(null==A?void 0:A.path)+(a.hasBlockref||a.hasSectionref?a.linkpartReference:""),t.file=A,await createImageDiv$1(t)},processAltText$1=(e,A,t)=>{var n,i;if(A&&!A.startsWith(e)){const a=A.match(/[^\|\d]*\|?((\d*%?)x?(\d*%?))?\|?(.*)/);t.fwidth=null!==(n=a[2])&&void 0!==n?n:t.fwidth,t.fheight=null!==(i=a[3])&&void 0!==i?i:t.fheight,a[4]&&!a[4].startsWith(e)&&(t.style=`excalidraw-svg-${a[4]}`),a[4]&&""!==a[4]||a[2]&&""!==a[2]||!a[0]||""===a[0]||(t.style=`excalidraw-svg-${a[0]}`)}},isTextOnlyEmbed$1=e=>{const A=e.getAttribute("src");if(!A)return!0;const t=getEmbeddedFilenameParts(A);return!(t.hasArearef||t.hasGroupref)&&(t.hasBlockref||t.hasSectionref)},tmpObsidianWYSIWYG$1=async(e,A)=>{const t=app.vault.getAbstractFileByPath(A.sourcePath);if(!(t instanceof obsidian_module.TFile))return;if(!plugin$1.isExcalidrawFile(t))return;if(A.remainingNestLevel<4)return;const n=A.containerEl;let i=n;for(;!i.hasClass("dataview")&&!i.hasClass("cm-preview-code-block")&&!i.hasClass("cm-embed-block")&&!i.hasClass("internal-embed")&&!i.hasClass("markdown-reading-view")&&!i.hasClass("markdown-embed")&&i.parentElement;)i=i.parentElement;if(i.hasClass("dataview")||i.hasClass("cm-preview-code-block")||i.hasClass("cm-embed-block"))return;const a={fname:A.sourcePath,fheight:"",fwidth:getDefaultWidth$1(plugin$1),style:"excalidraw-svg"};a.file=t;const r=i.hasClass("markdown-embed"),s=i.hasClass("markdown-reading-view");if(!i.hasClass("internal-embed")&&(r||s)){const A=Boolean(e.querySelector(".frontmatter"));if(e.empty(),!A)return void(e.parentElement===n&&n.removeChild(e));i.empty();const t=i.hasClass("canvas-node-content"),s=await createImageDiv$1(a,t);return r?(t&&(i.removeClass("markdown-embed"),i.addClass("media-embed"),i.addClass("image-embed")),!t&&s.firstChild instanceof HTMLElement&&(s.firstChild.style.maxHeight="100%",s.firstChild.style.maxWidth=null),void i.appendChild(s.firstChild)):void i.appendChild(s)}if(isTextOnlyEmbed$1(i))return;if(e.empty(),i.hasAttribute("ready"))return;i.setAttribute("ready",""),i.empty();const o=await processInternalEmbed$1(i,t);i.appendChild(o);let l=null;const c=new MutationObserver((e=>{var A;["alt","width","height"].contains(null===(A=e[0])||void 0===A?void 0:A.attributeName)&&(l&&clearTimeout(l),l=setTimeout((async()=>{l=null,i.empty();const e=await processInternalEmbed$1(i,t);i.appendChild(e)}),500))}));c.observe(i,{attributes:!0})},markdownPostProcessor=async(e,A)=>{var t;const n=e.querySelectorAll(".internal-embed");0!==n.length?Boolean(null===(t=A.frontmatter)||void 0===t?void 0:t.hasOwnProperty("excalidraw-plugin"))?e.style.display="none":await processReadingMode$1(n,A):tmpObsidianWYSIWYG$1(e,A)},hoverEvent=e=>{e.linktext?(plugin$1.hover.linkText=e.linktext,plugin$1.hover.sourcePath=e.sourcePath):plugin$1.hover.linkText=null},observer=new MutationObserver((async e=>{if(0==e.length)return;if(!plugin$1.hover.linkText)return;const A=metadataCache$1.getFirstLinkpathDest(plugin$1.hover.linkText,plugin$1.hover.sourcePath?plugin$1.hover.sourcePath:"");if(!A)return;if(!(A instanceof obsidian_module.TFile))return;if("excalidraw"!==A.extension)return;const t=getIMGFilename(A.path,"svg"),n=vault$1.getAbstractFileByPath(t);if(n&&n instanceof obsidian_module.TFile)return;const i=getIMGFilename(A.path,"png"),a=vault$1.getAbstractFileByPath(i);if(a&&a instanceof obsidian_module.TFile)return;if(!plugin$1.hover.linkText)return;if(1!=e.length)return;if(1!=e[0].addedNodes.length)return;if("popover hover-popover file-embed is-loaded"!=!e[0].addedNodes[0].classNames)return;const r=e[0].addedNodes[0];r.empty();const s=await getIMG$1({file:A,fname:A.path,fwidth:"300",fheight:null,style:"excalidraw-svg"}),o=createDiv("",(async e=>{e.appendChild(s),e.setAttribute("src",A.path),e.onClickEvent((A=>{A.stopImmediatePropagation();const t=e.getAttribute("src");t&&plugin$1.openDrawing(vault$1.getAbstractFileByPath(t),A[CTRL_OR_CMD]?"new-pane":A.metaKey&&!app.isMobile?"popout-window":"active-pane")}))}));r.appendChild(o)})),EXCALIDRAW_AUTOMATE_INFO=[{field:"plugin",code:null,desc:"The ExcalidrawPlugin object",after:""},{field:"elementsDict",code:null,desc:"The {} dictionary object, contains the ExcalidrawElements currently edited in Automate indexed by el.id",after:'[""]'},{field:"imagesDict",code:null,desc:"the images files including DataURL, indexed by fileId",after:'[""]'},{field:"style.strokeColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.backgroundColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.angle",code:"[number]",desc:"Rotation of the object in radian",after:""},{field:"style.fillStyle",code:"[string]",desc:"'hachure' | 'cross-hatch' | 'solid'",after:""},{field:"style.strokeWidth",code:"[number]",desc:null,after:""},{field:"style.strokeStyle",code:"[string]",desc:"'solid' | 'dashed' | 'dotted'",after:""},{field:"style.roughness",code:"[number]",desc:"0:Architect\n1:Artist\n2:Cartoonist",after:""},{field:"style.opacity",code:"[number]",desc:"100: Fully opaque\n0: Fully transparent",after:""},{field:"style.roundness",code:"[null | { type: RoundnessType; value?: number };]",desc:"set to null for 'sharp', else the stroke will be 'round'
type: 1==LEGACY,
2==PROPORTIONAL RADIUS,
3==ADAPTIVE RADIUS, value: adaptive factor defaults to 32",after:""},{field:"style.fontFamily",code:"[number]",desc:"1: Virgil, 2:Helvetica, 3:Cascadia, 4:LocalFont",after:""},{field:"style.fontSize",code:"[number]",desc:null,after:""},{field:"style.textAlign",code:"[string]",desc:"'left' | 'right' | 'center'",after:""},{field:"style.verticalAlign",code:"[string]",desc:"For future use, has no effect currently; 'top' | 'bottom' | 'middle'",after:""},{field:"style.startArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"style.endArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"canvas.theme",code:"[string]",desc:"'dark' | 'light'",after:""},{field:"canvas.viewBackgroundColor",code:"[string]",desc:"A valid css color.\nSee W3 School Colors for more.",after:""},{field:"canvas.gridSize",code:"[number]",desc:null,after:""},{field:"addToGroup",code:"addToGroup(objectIds: []): string;",desc:null,after:""},{field:"toCliboard",code:"toClipboard(templatePath?: string): void;",desc:"Copies current elements using template to clipboard, ready to be pasted into an excalidraw canvas",after:""},{field:"getElements",code:"getElements(): ExcalidrawElement[];",desc:"Get all elements from ExcalidrawAutomate elementsDict",after:""},{field:"getElement",code:"getElement(id: string): ExcalidrawElement;",desc:"Get single element from ExcalidrawAutomate elementsDict",after:""},{field:"create",code:'create(params?: {filename?: string, foldername?: string, templatePath?: string, onNewPane?: boolean, frontmatterKeys?: { "excalidraw-plugin"?: "raw" | "parsed", "excalidraw-link-prefix"?: string, "excalidraw-link-brackets"?: boolean, "excalidraw-url-prefix"?: string,},}): Promise;',desc:"Create a drawing and save it to filename.\nIf filename is null: default filename as defined in Excalidraw settings.\nIf folder is null: default folder as defined in Excalidraw settings\n",after:""},{field:"createSVG",code:"createSVG(templatePath?: string, embedFont?: boolean, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"createPNG",code:"createPNG(templatePath?: string, scale?: number, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"wrapText",code:"wrapText(text: string, lineLen: number): string;",desc:null,after:""},{field:"addRect",code:"addRect(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addDiamond",code:"addDiamond(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addEllipse",code:"addEllipse(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addBlob",code:"addBlob(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addText",code:'addText(topX: number, topY: number, text: string, formatting?: {wrapAt?: number; width?: number; height?: number; textAlign?: string; box?: boolean | "box" | "blob" | "ellipse" | "diamond"; boxPadding?: number;}, id?: string,): string;',desc:"If box is !null, then text will be boxed\nThe function returns the id of the TextElement. If the text element is boxed i.e. it is a sticky note, then the id of the container object",after:""},{field:"addLine",code:"addLine(points: [[x: number, y: number]]): string;",desc:null,after:""},{field:"addArrow",code:"addArrow(points: [[x: number, y: number]], formatting?: { startArrowHead?: string; endArrowHead?: string; startObjectId?: string; endObjectId?: string;},): string;",desc:null,after:""},{field:"addImage",code:"addImage(topX: number, topY: number, imageFile: TFile, scale: boolean): Promise;",desc:"set scale to false if you want to embed the image at 100% of its original size. Default is true which will insert a scaled image",after:""},{field:"addLaTex",code:"addLaTex(topX: number, topY: number, tex: string): Promise;",desc:null,after:""},{field:"connectObjects",code:"connectObjects(objectA: string, connectionA: ConnectionPoint, objectB: string, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): string;",desc:'type ConnectionPoint = "top" | "bottom" | "left" | "right" | null\nWhen null is passed as ConnectionPoint then Excalidraw will automatically decide\nnumberOfPoints is the number of points on the line. Default is 0 i.e. line will only have a start and end point.\nArrowHead: "triangle"|"dot"|"arrow"|"bar"|null',after:""},{field:"addLabelToLine",code:"addLabelToLine(lineId: string, label: string): string;",desc:"Adds a text label to a line or arrow. Currently only works with a simple straight 2-point (start & end) line",after:""},{field:"clear",code:"clear(): void;",desc:"Clears elementsDict and imagesDict only",after:""},{field:"reset",code:"reset(): void;",desc:"clear() + reset all style values to default",after:""},{field:"isExcalidrawFile",code:"isExcalidrawFile(f: TFile): boolean;",desc:"Returns true if MD file is an Excalidraw file",after:""},{field:"targetView",code:"targetView: ExcalidrawView;",desc:"The Obsidian view currently edited",after:""},{field:"setView",code:'setView(view: ExcalidrawView | "first" | "active"): ExcalidrawView;',desc:null,after:""},{field:"getExcalidrawAPI",code:"getExcalidrawAPI(): any;",desc:"Excalidraw API",after:""},{field:"getViewElements",code:"getViewElements(): ExcalidrawElement[];",desc:"Get elements in View",after:""},{field:"deleteViewElements",code:"deleteViewElements(el: ExcalidrawElement[]): boolean;",desc:null,after:""},{field:"getViewSelectedElement",code:"getViewSelectedElement(): ExcalidrawElement;",desc:"Get the selected element in the view, if more are selected, get the first",after:""},{field:"getViewSelectedElements",code:"getViewSelectedElements(): ExcalidrawElement[];",desc:null,after:""},{field:"getViewFileForImageElement",code:"getViewFileForImageElement(el: ExcalidrawElement): TFile | null;",desc:"Returns the TFile file handle for the image element",after:""},{field:"copyViewElementsToEAforEditing",code:"copyViewElementsToEAforEditing(elements: ExcalidrawElement[]): void;",desc:"Copies elements from view to elementsDict for editing",after:""},{field:"viewToggleFullScreen",code:"viewToggleFullScreen(forceViewMode?: boolean): void;",desc:null,after:""},{field:"connectObjectWithViewSelectedElement",code:"connectObjectWithViewSelectedElement(objectA: string, connectionA: ConnectionPoint, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): boolean;",desc:"Connect an object to the selected element in the view\nSee tooltip for connectObjects for details",after:""},{field:"addElementsToView",code:"addElementsToView(repositionToCursor?: boolean, save?: boolean, newElementsOnTop?: boolean,): Promise;",desc:"Adds elements from elementsDict to the current view\nrepositionToCursor: default is false\nsave: default is true\nnewElementsOnTop: default is false, i.e. the new elements get to the bottom of the stack\nnewElementsOnTop controls whether elements created with ExcalidrawAutomate are added at the bottom of the stack or the top of the stack of elements already in the view\nNote that elements copied to the view with copyViewElementsToEAforEditing retain their position in the stack of elements in the view even if modified using EA",after:""},{field:"onDropHook",code:'onDropHook(data: {ea: ExcalidrawAutomate, event: React.DragEvent, draggable: any, type: "file" | "text" | "unknown", payload: {files: TFile[], text: string,}, excalidrawFile: TFile, view: ExcalidrawView, pointerPosition: { x: number, y: number},}): boolean;',desc:"If set Excalidraw will call this function onDrop events.\nA return of true will stop the default onDrop processing in Excalidraw.\n\ndraggable is the Obsidian draggable object\nfiles is the array of dropped files\nexcalidrawFile is the file receiving the drop event\nview is the excalidraw view receiving the drop.\npointerPosition is the pointer position on canvas at the time of drop.",after:""},{field:"mostRecentMarkdownSVG",code:"mostRecentMarkdownSVG: SVGSVGElement;",desc:"Markdown renderer will drop a copy of the most recent SVG here for debugging purposes",after:""},{field:"getEmbeddedFilesLoader",code:"getEmbeddedFilesLoader(isDark?: boolean): EmbeddedFilesLoader;",desc:"Utility function to generate EmbeddedFilesLoader object",after:""},{field:"getExportSettings",code:"getExportSettings(withBackground: boolean, withTheme: boolean,): ExportSettings;",desc:"Utility function to generate ExportSettings object",after:""},{field:"getBoundingBox",code:"getBoundingBox(elements: ExcalidrawElement[]): {topX: number, topY: number, width: number, height: number,};",desc:"Gets the bounding box of elements. The bounding box is the box encapsulating all of the elements completely.",after:""},{field:"getMaximumGroups",code:"getMaximumGroups(elements: ExcalidrawElement[]): ExcalidrawElement[][];",desc:"Elements grouped by the highest level groups",after:""},{field:"getLargestElement",code:"getLargestElement(elements: ExcalidrawElement[]): ExcalidrawElement;",desc:"Gets the largest element from a group. useful when a text element is grouped with a box, and you want to connect an arrow to the box",after:""},{field:"intersectElementWithLine",code:"intersectElementWithLine(element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], gap?: number,): Point[];",desc:"If gap is given, the element is inflated by this value.\nReturns 2 or 0 intersection points between line going through `a` and `b` and the `element`, in ascending order of distance from `a`.",after:""},{field:"getCommonGroupForElements",code:"getCommonGroupForElements(elements: ExcalidrawElement[]): string;",desc:"Gets the groupId for the group that contains all the elements, or null if such a group does not exist",after:""},{field:"getElementsInTheSameGroupWithElement",code:"getElementsInTheSameGroupWithElement(element: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];",desc:"Gets all the elements from elements[] that share one or more groupIds with element.",after:""},{field:"activeScript",code:"activeScript: string;",desc:"Mandatory to set before calling the get and set ScriptSettings functions. Set automatically by the ScriptEngine\nSee for more details: Script Engine Help",after:""},{field:"getScriptSettings",code:"getScriptSettings(): {};",desc:"Returns script settings. Saves settings in plugin settings, under the activeScript key. See for more details: Script Engine Help",after:""},{field:"setScriptSettings",code:"setScriptSettings(settings: any): Promise;",desc:"Sets script settings.\nSee for more details: Script Engine Help",after:""},{field:"openFileInNewOrAdjacentLeaf",code:"openFileInNewOrAdjacentLeaf(file: TFile): WorkspaceLeaf;",desc:"Open a file in a new workspaceleaf or reuse an existing adjacent leaf depending on Excalidraw Plugin Settings",after:""},{field:"measureText",code:"measureText(text: string): { width: number; height: number };",desc:"Measures text size based on current style settings",after:""},{field:"verifyMinimumPluginVersion",code:"verifyMinimumPluginVersion(requiredVersion: string): boolean;",desc:'Returns true if plugin version is >= than required\nrecommended use:\nif(!ea.verifyMinimumPluginVersion || !ea.verifyMinimumPluginVersion("1.5.20")) {new Notice("message");return;}',after:""},{field:"selectElementsInView",code:"selectElementsInView(elements: ExcalidrawElement[]):void;",desc:"Elements provided will be set as selected in the targetView.",after:""},{field:"generateElementId",code:"generateElementId(): string;",desc:"Returns an 8 character long random id",after:""},{field:"cloneElement",code:"cloneElement(element: ExcalidrawElement): ExcalidrawElement;",desc:"Returns a clone of the element with a new element id",after:""},{field:"moveViewElementToZIndex",code:"moveViewElementToZIndex(elementId:number, newZIndex:number): void;",desc:"Moves the element to a specific position in the z-index",after:""},{field:"hexStringToRgb",code:"hexStringToRgb(color: string):number[];",desc:"Converts a HEX color to an RGB number array. #FF0000 to [255,0,0]",after:""},{field:"rgbToHexString",code:"rgbToHexString(color: number[]):string;",desc:"Converts an RGB number array to a HEX string. [255,0,0] to #FF0000",after:""},{field:"hslToRgb",code:"hslToRgb(color: number[]):number[];",desc:"Converts an HSL number array to an RGB number array. [0,100,50] to [255,0,0]",after:""},{field:"rgbToHsl",code:"rgbToHsl(color:number[]):number[];",desc:"Converts an RGB number array to an HSL number array. [255,0,0] to [0,100,50]",after:""},{field:"colorNameToHex",code:"colorNameToHex(color:string):string;",desc:"Converts a CSS color name to its HEX color equivalent. 'White' to #FFFFFF",after:""},{field:"obsidian",code:"obsidian",desc:"Access functions and objects available on the Obsidian Module",after:""},{field:"setViewModeEnabled",code:"setViewModeEnabled(enabled: boolean): void;",desc:"Sets Excalidraw in the targetView to view-mode",after:""},{field:"viewUpdateScene",code:"viewUpdateScene(scene:{elements?:ExcalidrawElement[],appState?: AppState,files?: BinaryFileData,commitToHistory?: boolean,},restore:boolean=false):void",desc:"Calls the ExcalidrawAPI updateScene function for the targetView. When restore=true, excalidraw will try to correct errors in the scene such as setting default values to missing element properties.",after:""},{field:"viewZoomToElements",code:"viewZoomToElements(selectElements: boolean,elements: ExcalidrawElement[]):void",desc:"Zoom tarteView to fit elements provided as input. elements === [] will zoom to fit the entire scene. SelectElements toggles whether the elements should be in a selected state at the end of the operation.",after:""}],EXCALIDRAW_SCRIPTENGINE_INFO=[{field:"inputPrompt",code:"inputPrompt: (header: string, placeholder?: string, value?: string, buttons?: [{caption:string, action:Function}]);",desc:"Opens a prompt that asks for an input.\nReturns a string with the input.\nYou need to await the result of inputPrompt.\nbuttons.action(input: string) => string\nThe button action function will receive the actual input string. If action returns null, input will be unchanged. If action returns a string, input will receive that value when the promise is resolved. example:\nlet fileType = '';\nconst filename = await utils.inputPrompt (\n 'Filename',\n '',\n '',\n, [\n {\n caption: 'Markdown',\n action: ()=>{fileType='md';return;}\n },\n {\n caption: 'Excalidraw',\n action: ()=>{fileType='ex';return;}\n }\n ]\n);",after:""},{field:"suggester",code:"suggester: (displayItems: string[], items: any[], hint?: string, instructions?:Instruction[]);",desc:"Opens a suggester. Displays the displayItems and returns the corresponding item from items[]\nYou need to await the result of suggester.\nIf the user cancels (ESC), suggester will return undefined\nHint and instructions are optional\n\ninterface Instruction {command: string;purpose: string;}",after:""},{field:"scriptFile",code:"scriptFile: TFile",desc:"The TFile of the currently running script",after:""}],FRONTMATTER_KEYS_INFO=[{field:"plugin",code:null,desc:"Denotes an excalidraw file. If key is not present, the file will not be recognized as an Excalidarw file. Valid values are 'parsed' and 'raw'",after:": parsed"},{field:"link-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid internal link. Set to empty string if you do not want to show a prefix",after:': "📍"'},{field:"url-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid external link. Set to empty string if you do not want to show a prefix",after:': "🌐"'},{field:"link-brackets",code:null,desc:"Set to true, if you want to display [[square brackets]] around the links in Text Elements",after:": true"},{field:"default-mode",code:null,desc:"Specifies how Excalidraw should open by default. Valid values are: view|zen",after:": view"},{field:"linkbutton-opacity",code:null,desc:"The opacity of the blue link button in the top right of the element overriding the respective setting in plugin settings. Valid values are between 0 and 1, where 0 means the button is transparent.",after:": 0.5"},{field:"onload-script",code:null,desc:"The value of this field will be executed as javascript code using the Script Engine environment. Use this to initiate custom actions or logic when loading your drawing.",after:': "new Notice(`Hello World!\\n\\nFile: ${ea.targetView.file.basename}`);"'},{field:"font",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: Virgil|Cascadia|font_file_name.extension",after:": Virgil"},{field:"font-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"border-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"css",code:null,desc:'This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this front matter keys to your markdown document. Valid values are: "css-filename|css snippet"',after:': ""'},{field:"export-transparent",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Transparent / false == with background",after:": true"},{field:"export-dark",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Dark mode / false == light mode",after:": true"},{field:"export-padding",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects both SVG and PNG export. Specify the export padding for the image.",after:": 5"},{field:"export-pngscale",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects export to PNG. Specify the export scale for the image. The typical range is between 0.5 and 5, but you can experiment with other values as well.",after:": 1"},{field:"autoexport",code:null,desc:"Override autoexport settings for this file. Valid values are\nnone\nboth\npng\nsvg",after:": png"}];class FieldSuggester extends obsidian_module.EditorSuggest{constructor(e){super(e.app),this.getSuggestions=e=>{const A=e.query.toLowerCase();return("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).map((e=>e.field)).filter((e=>e.toLowerCase().includes(A)))},this.plugin=e}onTrigger(e,A,t){var n,i,a,r,s;if(this.plugin.settings.fieldSuggester){const t=A.getLine(e.line).substring(0,e.ch),o=null!==(r=null!==(i=null===(n=t.match(/^excalidraw-(.*)$/))||void 0===n?void 0:n[1])&&void 0!==i?i:null===(a=t.match(/(^ea|\Wea)\.([\w\.]*)$/))||void 0===a?void 0:a[2])&&void 0!==r?r:null===(s=t.match(/(^utils|\Wutils)\.([\w\.]*)$/))||void 0===s?void 0:s[2];if(void 0!==o)return this.suggestType=t.match(/^excalidraw-(.*)$/)?"excalidraw":t.match(/(^ea|\Wea)\.([\w\.]*)$/)?"ea":"utils",this.latestTriggerInfo={end:e,start:{ch:e.ch-o.length,line:e.line},query:o},this.latestTriggerInfo}return null}renderSuggestion(e,A){const t=e.replace("ea"===this.suggestType?"ea.":"utils"===this.suggestType?"utils.":"excalidraw-",""),n=("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).find((A=>A.field===e));A.createEl("b",{text:t}),A.createEl("br"),n.code&&A.createEl("code",{text:n.code}),n.desc&&A.createDiv("div",(e=>e.innerHTML=n.desc))}selectSuggestion(e){var A;const{context:t}=this;if(t){const n="ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO,i=`${e}${null===(A=n.find((A=>A.field===e)))||void 0===A?void 0:A.after}`;if(t.editor.replaceRange(i,this.latestTriggerInfo.start,this.latestTriggerInfo.end),this.latestTriggerInfo.start.ch===this.latestTriggerInfo.end.ch){const e=this.latestTriggerInfo.end;e.ch+=i.length,t.editor.setCursor(e)}}}}class FrontmatterEditor{constructor(e){this.initialized=!1,this.dataWOfrontmatter=e;const A=(e=e.replaceAll("\r\n","\n").replaceAll("\r","\n")).split(/^---(?:.|\n)*(?:^---\n)/gm);2===A.length&&(this.dataWOfrontmatter=A[1],this.frontmatterStr=e.match(/^---((?:.|\n)*)(?:^---\n)/gm)[0].replaceAll(/(^---\n|^\n)/gm,"").trim()+"\n",this.initialized=!0)}hasKey(e){if(!this.initialized)return!1;const A=new RegExp(`^${e}:`,"gm");return Boolean(this.frontmatterStr.match(A))}setKey(e,A){if(this.initialized)if(A=A.replaceAll("\r\n","\n").replaceAll("\r","\n").replaceAll(":",";").trim().split("\n").join(" "),this.hasKey(e)){const t=new RegExp(`^${e}:.*\\n(?:\\s\\s.*\\n)*`,"gm");this.frontmatterStr=this.frontmatterStr.split(t).join("\n").trim()+`\n${e}: ${A}`}else this.frontmatterStr=this.frontmatterStr.trim()+`\n${e}: ${A}`}get data(){return this.initialized?["---",this.frontmatterStr,"---",this.dataWOfrontmatter].join("\n"):this.dataWOfrontmatter}}const TASKBONE_URL="https://api.taskbone.com/",TASKBONE_OCR_FN="execute?id=60f394af-85f6-40bc-9613-5d26dc283cbb";class Taskbone{get apiKey(){return this.plugin.settings.taskboneAPIkey}constructor(e){this.plugin=e}async initialize(e=!0){var A;if(""!==this.plugin.settings.taskboneAPIkey)return;const t=await obsidian_module.requestUrl({url:`${TASKBONE_URL}users/excalidraw-obsidian/identities`,method:"post",contentType:"application/json",throw:!1});if(!t)return;const n=null===(A=t.json)||void 0===A?void 0:A.apiKey;return n&&"string"==typeof n&&(e&&await this.plugin.loadSettings(),this.plugin.settings.taskboneAPIkey=n,e&&await this.plugin.saveSettings()),n}async getTextForView(e,A){await e.forceSave(!0);const t=e.excalidrawAPI.getSceneElements().filter((A=>{var t;return"freedraw"===A.type||"image"===A.type&&!this.plugin.isExcalidrawFile(null===(t=e.excalidrawData.getFile(A.fileId))||void 0===t?void 0:t.file)}));if(0===t.length)return void new obsidian_module.Notice("Aborting OCR because there are no image or freedraw elements on the canvas.",4e3);const n=new FrontmatterEditor(e.data);if(n.hasKey("taskbone-ocr")&&!A)return void new obsidian_module.Notice("The drawing has already been processed, you will find the result in the frontmatter in markdown view mode. If you ran the command from the Obsidian Panel in Excalidraw then you can CTRL(CMD)+click the command to force the rescaning.",4e3);const i=this.plugin.ea.getBoundingBox(t),a=i.width*i.height,r=Math.sqrt(36e4/a),s=Math.sqrt(a/16e6),o=r>1?r:s>1?1/s:1,l=new EmbeddedFilesLoader(this.plugin,!1),c=await createPNG(e.file.path+"#^taskbone",o,{withBackground:!0,withTheme:!0},l,"light",null,null,[],this.plugin,0),d=await this.getTextForImage(c);d&&(n.setKey("taskbone-ocr",d),e.data=n.data,e.save(!1),window.navigator.clipboard.writeText(d),new obsidian_module.Notice("I placed the recognized in the drawing's frontmatter and onto the system clipboard."))}async getTextForImage(e){""===this.apiKey&&await this.initialize();const A={records:[{image:await this.blobToBase64(e)}]},t=await obsidian_module.requestUrl({url:"https://api.taskbone.com/execute?id=60f394af-85f6-40bc-9613-5d26dc283cbb",method:"post",contentType:"application/json",body:JSON.stringify(A),headers:{authorization:`Bearer ${this.apiKey}`},throw:!1}),n=null==t?void 0:t.json;return n&&200===t.status?n.records[0].text:(new obsidian_module.Notice("Something went wrong while processing your request. Please check developer console for more information"),void log(t))}async blobToBase64(e){const A=await e.arrayBuffer(),t=new Uint8Array(A);for(var n="",i=t.byteLength,a=0;a{const A=parseInt(e.settings.width);return isNaN(A)||0===A||null===A?"400":e.settings.width},initializeMarkdownPostProcessor_Legacy=e=>{plugin=e,vault=e.app.vault,metadataCache=e.app.metadataCache},getIMG=async e=>{var A;let t=e.file;if(!e.file){const n=vault.getAbstractFileByPath(null===(A=e.fname)||void 0===A?void 0:A.split("#")[0]);if(!(n&&n instanceof obsidian_module.TFile))return null;t=n}const n=getEmbeddedFilenameParts(e.fname);e.style=e.style.replaceAll(" ","-");const i=hasExportTheme(plugin,t)?getExportTheme(plugin,t,"light"):void 0,a={withBackground:getWithBackground(plugin,t),withTheme:!!i||plugin.settings.exportWithTheme},r=createEl("img");let s=`max-width:${e.fwidth}px; width:100%;`;e.fheight&&(s+=`height:${e.fheight}px;`),r.setAttribute("style",s),r.addClass(e.style);const o=null!=i?i:plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":plugin.settings.exportWithTheme?void 0:"light";o&&(a.withTheme=!0);const l=new EmbeddedFilesLoader(plugin,o?"dark"===o:void 0);if(!plugin.settings.displaySVGInPreview){const A=parseInt(e.fwidth),i=A>=2400?5:A>=1800?4:A>=1200?3:A>=600?2:1,s=n.hasGroupref?void 0:await getQuickImagePreview(plugin,t.path,"png"),c=null!=s?s:await createPNG(n.hasGroupref?n.filepath+n.linkpartReference:t.path,i,a,l,o,null,null,[],plugin,0);return c?(r.src=URL.createObjectURL(c),r):null}if(!n.hasBlockref&&!n.hasSectionref){const e=await getQuickImagePreview(plugin,t.path,"svg");if(e)return r.setAttribute("src",svgToBase64(e)),r}const c=(await createSVG(n.hasGroupref||n.hasBlockref||n.hasSectionref?n.filepath+n.linkpartReference:t.path,!0,a,l,o,null,null,[],plugin,0,getExportPadding(plugin,t))).outerHTML;let d=null;const h=document.createElement("div");h.innerHTML=c;const u=h.firstChild;return u instanceof SVGSVGElement&&(d=u),d?(d=embedFontsInSVG(d,plugin),d.removeAttribute("width"),d.removeAttribute("height"),r.setAttribute("src",svgToBase64(d.outerHTML)),r):null},createImageDiv=async e=>{const A=await getIMG(e);return createDiv(e.style,(t=>{let n;t.append(A),t.setAttribute("src",e.fname),e.fwidth&&t.setAttribute("w",e.fwidth),e.fheight&&t.setAttribute("h",e.fheight);const i=e=>{if(e.target instanceof Element&&"img"!=e.target.tagName.toLowerCase())return;const A=t.getAttribute("src");if(A){const t=A.match(/([^#]*)(.*)/);if(!t)return;plugin.openDrawing(vault.getAbstractFileByPath(t[1]),e[CTRL_OR_CMD]?"new-pane":e.metaKey&&!app.isMobile?"popout-window":"active-pane",!0,t[2])}};let a;A.addEventListener("pointermove",(e=>{n&&(Math.abs(e.screenX-a.screenX)>10||Math.abs(e.screenY-a.screenY)>10)&&(clearTimeout(n),n=null)})),A.addEventListener("pointerdown",(e=>{n=setTimeout((()=>i(e)),500),a=e})),t.addEventListener("pointerup",(()=>{n&&clearTimeout(n),n=null})),t.addEventListener("dblclick",i),t.addEventListener(RERENDER_EVENT,(async e=>{e.stopPropagation(),t.empty();const A=await getIMG({fname:t.getAttribute("src"),fwidth:t.getAttribute("w"),fheight:t.getAttribute("h"),style:t.getAttribute("class")});t.append(A)}))}))},processReadingMode=async(e,A)=>{var t;for(const n of e){const e=null===(t=n.getAttribute("src"))||void 0===t?void 0:t.split("#")[0];if(!e)continue;const i=metadataCache.getFirstLinkpathDest(e,A.sourcePath);if(i&&i instanceof obsidian_module.TFile&&plugin.isExcalidrawFile(i)){if(isTextOnlyEmbed(n))continue;n.parentElement.replaceChild(await processInternalEmbed(n,i),n)}}},processInternalEmbed=async(e,A)=>{const t={fname:"",fheight:"",fwidth:"",style:""},n=e.getAttribute("src");if(!n)return;t.fwidth=e.getAttribute("width")?e.getAttribute("width"):getDefaultWidth(plugin),t.fheight=e.getAttribute("height");let i=e.getAttribute("alt");t.style="excalidraw-svg",processAltText(n.split("#")[0],i,t);const a=getEmbeddedFilenameParts(n);return t.fname=(null==A?void 0:A.path)+(a.hasBlockref||a.hasSectionref?a.linkpartReference:""),t.file=A,await createImageDiv(t)},processAltText=(e,A,t)=>{var n,i;if(A&&!A.startsWith(e)){const a=A.match(/[^\|\d]*\|?((\d*%?)x?(\d*%?))?\|?(.*)/);t.fwidth=null!==(n=a[2])&&void 0!==n?n:t.fwidth,t.fheight=null!==(i=a[3])&&void 0!==i?i:t.fheight,a[4]&&!a[4].startsWith(e)&&(t.style=`excalidraw-svg-${a[4]}`),a[4]&&""!==a[4]||a[2]&&""!==a[2]||!a[0]||""===a[0]||(t.style=`excalidraw-svg-${a[0]}`)}},isTextOnlyEmbed=e=>{const A=e.getAttribute("src");if(!A)return!0;const t=getEmbeddedFilenameParts(A);return!(t.hasArearef||t.hasGroupref)&&(t.hasBlockref||t.hasSectionref)},tmpObsidianWYSIWYG=async(e,A)=>{const t=app.vault.getAbstractFileByPath(A.sourcePath);t instanceof obsidian_module.TFile&&plugin.isExcalidrawFile(t)&&(A.remainingNestLevel<4||setTimeout((async()=>{let n=0;for(;!e.parentElement&&n++<=50;)await sleep(50);if(!e.parentElement)return;let i=e;for(;!i.hasClass("dataview")&&!i.hasClass("cm-preview-code-block")&&!i.hasClass("cm-embed-block")&&!i.hasClass("internal-embed")&&i.parentElement;)i=i.parentElement;if(i.hasClass("dataview")||i.hasClass("cm-preview-code-block")||i.hasClass("cm-embed-block"))return;const a={fname:A.sourcePath,fheight:"",fwidth:getDefaultWidth(plugin),style:"excalidraw-svg"};if(a.file=t,!i.hasClass("internal-embed")){e.empty();const A=e.parentElement;if(!A.hasClass("markdown-preview-section"))return;if(A.hasAttribute("ready"))return void A.removeChild(e);A.setAttribute("ready","");const t=await createImageDiv(a);return void e.appendChild(t)}if(isTextOnlyEmbed(i))return;if(e.empty(),i.hasAttribute("ready"))return;i.setAttribute("ready",""),i.empty();const r=await processInternalEmbed(i,t);i.appendChild(r);let s=null;const o=new MutationObserver((e=>{var A;["alt","width","height"].contains(null===(A=e[0])||void 0===A?void 0:A.attributeName)&&(s&&clearTimeout(s),s=setTimeout((async()=>{s=null,i.empty();const e=await processInternalEmbed(i,t);i.appendChild(e)}),500))}));o.observe(i,{attributes:!0})})))},markdownPostProcessor_Legacy=async(e,A)=>{var t;const n=e.querySelectorAll(".internal-embed");0!==n.length?Boolean(null===(t=A.frontmatter)||void 0===t?void 0:t.hasOwnProperty("excalidraw-plugin"))?e.style.display="none":await processReadingMode(n,A):tmpObsidianWYSIWYG(e,A)},hoverEvent_Legacy=e=>{e.linktext?(plugin.hover.linkText=e.linktext,plugin.hover.sourcePath=e.sourcePath):plugin.hover.linkText=null},observer_Legacy=new MutationObserver((async e=>{if(0==e.length)return;if(!plugin.hover.linkText)return;const A=metadataCache.getFirstLinkpathDest(plugin.hover.linkText,plugin.hover.sourcePath?plugin.hover.sourcePath:"");if(!A)return;if(!(A instanceof obsidian_module.TFile))return;if("excalidraw"!==A.extension)return;const t=getIMGFilename(A.path,"svg"),n=vault.getAbstractFileByPath(t);if(n&&n instanceof obsidian_module.TFile)return;const i=getIMGFilename(A.path,"png"),a=vault.getAbstractFileByPath(i);if(a&&a instanceof obsidian_module.TFile)return;if(!plugin.hover.linkText)return;if(1!=e.length)return;if(1!=e[0].addedNodes.length)return;if("popover hover-popover file-embed is-loaded"!=!e[0].addedNodes[0].classNames)return;const r=e[0].addedNodes[0];r.empty();const s=await getIMG({file:A,fname:A.path,fwidth:"300",fheight:null,style:"excalidraw-svg"}),o=createDiv("",(async e=>{e.appendChild(s),e.setAttribute("src",A.path),e.onClickEvent((A=>{A.stopImmediatePropagation();const t=e.getAttribute("src");t&&plugin.openDrawing(vault.getAbstractFileByPath(t),A[CTRL_OR_CMD]?"new-pane":A.metaKey&&!app.isMobile?"popout-window":"active-pane")}))}));r.appendChild(o)}));class ExcalidrawPlugin extends obsidian_module.Plugin{constructor(e,A){super(e,A),this.excalidrawFiles=new Set,this.excalidrawFileModes={},this._loaded=!1,this.activeExcalidrawView=null,this.lastActiveExcalidrawFilePath=null,this.hover={linkText:null,sourcePath:null},this.opencount=0,this.filesMaster=null,this.equationsMaster=null,this.mathjax=null,this.mathjaxDiv=null,this.mathjaxLoaderFinished=!1,this.fourthFontDef=VIRGIL_FONT,this.packageMap=new WeakMap,this.leafChangeTimeout=null,this.popScope=null,this.filesMaster=new Map,this.equationsMaster=new Map}getPackage(e){if(e===window)return{react:react,reactDOM:reactDOM,excalidrawLib:excalidrawLib};if(this.packageMap.has(e))return this.packageMap.get(e);const{react:A,reactDOM:t,excalidrawLib:n}=e.eval.call(e,`(function() {\n ${lzStringExports.decompressFromBase64(EXCALIDRAW_PACKAGES)};\n return {react:React,reactDOM:ReactDOM,excalidrawLib:ExcalidrawLib};\n })()`);return this.packageMap.set(e,{react:A,reactDOM:t,excalidrawLib:n}),{react:A,reactDOM:t,excalidrawLib:n}}async onload(){if(this.device={isDesktop:!document.body.hasClass("is-tablet")&&!document.body.hasClass("is-mobile"),isPhone:document.body.hasClass("is-phone"),isTablet:document.body.hasClass("is-tablet"),isMobile:document.body.hasClass("is-mobile"),isLinux:document.body.hasClass("mod-linux")&&!document.body.hasClass("is-android"),isMacOS:document.body.hasClass("mod-macos")&&!document.body.hasClass("is-ios"),isWindows:document.body.hasClass("mod-windows"),isIOS:document.body.hasClass("is-ios"),isAndroid:document.body.hasClass("is-android")},obsidian_module.addIcon(ICON_NAME,EXCALIDRAW_ICON),obsidian_module.addIcon("ScriptEngine",SCRIPTENGINE_ICON),obsidian_module.addIcon("save-png",PNG_ICON),obsidian_module.addIcon("save-svg",SVG_ICON),await this.loadSettings({reEnableAutosave:!0}),this.addSettingTab(new ExcalidrawSettingTab(this.app,this)),this.ea=await initExcalidrawAutomate(this),this.registerView("excalidraw",(e=>new ExcalidrawView(e,this))),this.registerExtensions(["excalidraw"],"excalidraw"),obsidian_module.requireApiVersion("1.1.6")?this.addMarkdownPostProcessor():this.addLegacyMarkdownPostProcessor(),this.registerInstallCodeblockProcessor(),this.addThemeObserver(),this.experimentalFileTypeDisplayToggle(this.settings.experimentalFileType),this.registerCommands(),this.registerEventListeners(),this.initializeFourthFont(),this.registerEditorSuggest(new FieldSuggester(this)),this.registerMonkeyPatches(),this.settings.showReleaseNotes){const e="0.0.0"===this.settings.previousRelease;isVersionNewerThanOther(PLUGIN_VERSION,this.settings.previousRelease)&&new ReleaseNotes(this.app,this,e?null:PLUGIN_VERSION).open()}this.switchToExcalidarwAfterLoad(),this.loadMathJax();const e=this;this.app.workspace.onLayoutReady((()=>{this.scriptEngine=new ScriptEngine(e)})),this.taskbone=new Taskbone(this)}initializeFourthFont(){this.app.workspace.onLayoutReady((async()=>{const e=await getFontDataURL(this.app,this.settings.experimantalFourthFont,"","LocalFont"),A=""===e.dataURL?VIRGIL_DATAURL:e.dataURL;this.fourthFontDef=e.fontDef;const t=new Set;app.workspace.iterateAllLeaves((e=>{const n=app.isMobile?document:e.view.containerEl.ownerDocument;if(!n)return;if(t.has(n))return;t.add(n);const i=n.createElement("style");i.id="local-font-stylesheet",i.textContent=`\n @font-face {\n font-family: 'LocalFont';\n src: url("${A}");\n font-display: swap;\n }\n `;const a=n.getElementById(i.id);n.head.appendChild(i),a&&n.head.removeChild(a),n.fonts.load("20px LocalFont")}))}))}loadMathJax(){const e=this;this.app.workspace.onLayoutReady((async()=>{await obsidian_module.loadMathJax();try{e.mathjaxDiv&&(document.body.removeChild(e.mathjaxDiv),e.mathjax=null,e.mathjaxLoaderFinished=!1),e.mathjaxDiv=document.body.createDiv(),e.mathjaxDiv.title="Excalidraw MathJax Support",e.mathjaxDiv.style.display="none";const A=e.mathjaxDiv.createEl("iframe");A.title="Excalidraw MathJax Support";const t=A.contentWindow.document,n=t.createElement("script");n.type="text/javascript",n.onload=()=>{const t=A.contentWindow;t.MathJax.startup.pagePromise.then((async()=>{const A=app.vault.getAbstractFileByPath("preamble.sty"),n=A&&A instanceof obsidian_module.TFile?await app.vault.read(A):null;try{n&&await t.MathJax.tex2svg(n)}catch(A){errorlog({where:e.loadMathJax,description:"Unexpected error while loading preamble.sty",error:A})}e.mathjax=t.MathJax,e.mathjaxLoaderFinished=!0}))},n.src=e.settings.mathjaxSourceURL,t.head.appendChild(n)}catch(A){new obsidian_module.Notice("Excalidraw: Error initializing LaTeX support"),e.mathjaxLoaderFinished=!0}}))}switchToExcalidarwAfterLoad(){const e=this;this.app.workspace.onLayoutReady((()=>{let A;for(A of app.workspace.getLeavesOfType("markdown"))A.view instanceof obsidian_module.MarkdownView&&e.isExcalidrawFile(A.view.file)&&(e.excalidrawFileModes[A.id||A.view.file.path]="excalidraw",e.setExcalidrawView(A))}))}forceSaveActiveView(e){if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.forceSave(),!0)}registerInstallCodeblockProcessor(){const e=async(e,A)=>{let t=null;try{const e=A.parentElement.querySelector(`a[href="#${A.previousElementSibling.getAttribute("data-heading")}"]`);e.style.paddingRight="10px",t=e.parentElement.createEl("button",null,(e=>{e.setText(t$d("UPDATE_SCRIPT")),e.addClass("mod-muted"),e.style.backgroundColor="var(--interactive-success)",e.style.display="none"}))}catch(A){errorlog({where:"this.registerInstallCodeblockProcessor",source:e,error:A})}e=e.trim(),A.createEl("button",null,(async A=>{var n;const i=e=>{switch(t&&(t.style.display="none"),e){case"CHECKING":A.setText(t$d("CHECKING_SCRIPT")),A.style.backgroundColor="var(--interactive-normal)";break;case"INSTALL":A.setText(t$d("INSTALL_SCRIPT")),A.style.backgroundColor="var(--interactive-accent)";break;case"UPTODATE":A.setText(t$d("UPTODATE_SCRIPT")),A.style.backgroundColor="var(--interactive-normal)";break;case"UPDATE":A.setText(t$d("UPDATE_SCRIPT")),A.style.backgroundColor="var(--interactive-success)",t&&(t.style.display=null);break;case"ERROR":A.setText(t$d("UNABLETOCHECK_SCRIPT")),A.style.backgroundColor="var(--interactive-normal)"}};A.addClass("mod-muted");let a=e;try{a=decodeURI(e)}catch(A){errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",source:e,error:A})}const r=a.substring(a.lastIndexOf("/")+1),s=`${this.settings.scriptFolderPath}/Downloaded`,o=app.vault.getFiles().filter((e=>e.path.startsWith(s)&&e.name===r)).sort(((e,A)=>e.path>A.path?1:-1));let l=o[0];const c=null!==(n=null==l?void 0:l.path)&&void 0!==n?n:`${s}/${r}`,d=getIMGFilename(c,"svg");let h=this.app.vault.getAbstractFileByPath(d);if(i(l?"CHECKING":"INSTALL"),A.onclick=async()=>{const A=async(e,A,t)=>{const n=await obsidian_module.request({url:e});return!n||n.startsWith("404: Not Found")?null:(A?await this.app.vault.modify(A,n):(await checkAndCreateFolder(s),A=await this.app.vault.create(t,n)),A)};try{if(l=await A(e,l,c),!l)throw i("ERROR"),"File not found";h=await A(getIMGFilename(e,"svg"),h,d),i("UPTODATE"),new obsidian_module.Notice(`Installed: ${l.basename}`)}catch(e){new obsidian_module.Notice(`Error installing script: ${r}`),errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",error:e})}},t&&(t.onclick=A.onclick),!(l&&l instanceof obsidian_module.TFile))return;const u=new Map;JSON.parse(await obsidian_module.request({url:"https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/directory-info.json"})).forEach((e=>u.set(e.fname,e.mtime)));const g=(e,A)=>{if(0===u.size||!u.has(e))return"ERROR";const t=u.get(e);return!A||t>A.stat.mtime?"UPDATE":"UPTODATE"},p=g(r,l),m=g(getIMGFilename(r,"svg"),h&&h instanceof obsidian_module.TFile?h:null);i("UPTODATE"===p&&"UPTODATE"===m||"UPTODATE"===p&&"ERROR"===m?"UPTODATE":"ERROR"===p?"ERROR":"UPDATE"===p||"UPDATE"===m?"UPDATE":"UPTODATE")}))};this.registerMarkdownCodeBlockProcessor(SCRIPT_INSTALL_CODEBLOCK,(async(A,t)=>{t.addEventListener(RERENDER_EVENT,(async n=>{n.stopPropagation(),t.empty(),e(A,t)})),e(A,t)}))}addMarkdownPostProcessor(){initializeMarkdownPostProcessor(this),this.registerMarkdownPostProcessor(markdownPostProcessor),this.registerEvent(this.app.workspace.on("hover-link",hoverEvent)),this.observer=observer,this.observer.observe(document,{childList:!0,subtree:!0})}addLegacyMarkdownPostProcessor(){initializeMarkdownPostProcessor_Legacy(this),this.registerMarkdownPostProcessor(markdownPostProcessor_Legacy),this.registerEvent(this.app.workspace.on("hover-link",hoverEvent_Legacy)),this.observer=observer_Legacy,this.observer.observe(document,{childList:!0,subtree:!0})}addThemeObserver(){this.themeObserver=new MutationObserver((async e=>{var A,t,n,i,a,r,s,o;if(!this.settings.matchThemeTrigger)return;if((null===(A=e[0])||void 0===A?void 0:A.oldValue)===(null===(n=null===(t=e[0])||void 0===t?void 0:t.target)||void 0===n?void 0:n.getAttribute("class")))return;if((null===(a=null===(i=e[0])||void 0===i?void 0:i.oldValue)||void 0===a?void 0:a.includes("theme-dark"))===(null===(o=null===(s=null===(r=e[0])||void 0===r?void 0:r.target)||void 0===s?void 0:s.classList)||void 0===o?void 0:o.contains("theme-dark")))return;const l=isObsidianThemeDark()?"dark":"light";this.app.workspace.getLeavesOfType("excalidraw").forEach((e=>{const A=e.view;A.file&&A.excalidrawRef&&A.setTheme(l)}))})),this.themeObserver.observe(document.body,{attributeOldValue:!0,attributeFilter:["class"]})}experimentalFileTypeDisplayToggle(e){e?this.experimentalFileTypeDisplay():(this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.fileExplorerObserver=null)}experimentalFileTypeDisplay(){const e=e=>{if(1!=e.childElementCount)return;const A=e.getAttribute("data-path");if(!A)return;const t=this.app.vault.getAbstractFileByPath(A);t&&t instanceof obsidian_module.TFile&&this.isExcalidrawFile(t)&&e.insertBefore(createDiv({cls:"nav-file-tag",text:this.settings.experimentalFileTag}),e.firstChild)};this.fileExplorerObserver=new MutationObserver((A=>{const t=A.filter((e=>e.addedNodes.length>0));t.forEach((A=>{A.addedNodes.forEach((A=>{A instanceof Element&&A.querySelectorAll(".nav-file-title").forEach(e)}))}))}));const A=this;this.app.workspace.onLayoutReady((()=>{document.querySelectorAll(".nav-file-title").forEach(e),A.fileExplorerObserver.observe(document.querySelector(".workspace"),{childList:!0,subtree:!0})}))}registerCommands(){this.openDialog=new OpenFileDialog(this.app,this),this.insertLinkDialog=new InsertLinkDialog(this.app),this.insertImageDialog=new InsertImageDialog(this),this.importSVGDialog=new ImportSVGDialog(this),this.insertMDDialog=new InsertMDDialog(this),this.addRibbonIcon(ICON_NAME,t$d("CREATE_NEW"),(async e=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),e[CTRL_OR_CMD]?"new-pane":"active-pane")})),this.registerEvent(this.app.workspace.on("file-menu",((e,A)=>{e.addItem((e=>{e.setTitle(t$d("CREATE_NEW")).setIcon(ICON_NAME).onClick((()=>{let e=A.path;A instanceof obsidian_module.TFile&&(e=obsidian_module.normalizePath(A.path.substr(0,A.path.lastIndexOf(A.name)))),this.createAndOpenDrawing(getDrawingFilename(this.settings),"active-pane",e)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,A)=>{A instanceof obsidian_module.TFile&&"excalidraw"==A.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_KEEP_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(A,!1,!1)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,A)=>{A instanceof obsidian_module.TFile&&"excalidraw"==A.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_REPLACE_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(A,!0,!0)}))}))}))),this.addCommand({id:"excalidraw-disable-autosave",name:t$d("TEMPORARY_DISABLE_AUTOSAVE"),checkCallback:e=>!!this.settings.autosave&&(e||(this.settings.autosave=!1),!0)}),this.addCommand({id:"excalidraw-enable-autosave",name:t$d("TEMPORARY_ENABLE_AUTOSAVE"),checkCallback:e=>!this.settings.autosave&&(e||(this.settings.autosave=!0),!0)}),this.addCommand({id:"excalidraw-download-lib",name:t$d("DOWNLOAD_LIBRARY"),callback:this.exportLibrary}),this.addCommand({id:"excalidraw-open",name:t$d("OPEN_EXISTING_NEW_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!0)}}),this.addCommand({id:"excalidraw-open-on-current",name:t$d("OPEN_EXISTING_ACTIVE_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!1)}}),this.addCommand({id:"excalidraw-insert-transclusion",name:t$d("TRANSCLUDE"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(this.openDialog.start(openDialogAction.insertLinkToDrawing,!1),!0)}),this.addCommand({id:"excalidraw-insert-last-active-transclusion",name:t$d("TRANSCLUDE_MOST_RECENT"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView))&&null!=this.lastActiveExcalidrawFilePath;const A=this.app.vault.getAbstractFileByPath(this.lastActiveExcalidrawFilePath);return A instanceof obsidian_module.TFile&&(this.embedDrawing(A),!0)}}),this.addCommand({id:"excalidraw-autocreate",name:t$d("NEW_IN_NEW_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-pane")}}),this.addCommand({id:"excalidraw-autocreate-on-current",name:t$d("NEW_IN_ACTIVE_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"active-pane")}}),this.addCommand({id:"excalidraw-autocreate-popout",name:t$d("NEW_IN_POPOUT_WINDOW"),checkCallback:e=>{if(e)return!app.isMobile;this.createAndOpenDrawing(getDrawingFilename(this.settings),"popout-window")}});const e=async e=>{const A=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!A)return;const t=getEmbedFilename(A.file.basename,this.settings),n=this.settings.embedUseExcalidrawFolder?null:(await getAttachmentsFolderAndFilePath(this.app,A.file.path,t)).folder,i=await this.createDrawing(t,n);await this.embedDrawing(i),this.openDrawing(i,e,!0)};this.addCommand({id:"excalidraw-autocreate-and-embed",name:t$d("NEW_IN_NEW_PANE_EMBED"),checkCallback:A=>A?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("new-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-on-current",name:t$d("NEW_IN_ACTIVE_PANE_EMBED"),checkCallback:A=>A?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("active-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-popout",name:t$d("NEW_IN_POPOUT_WINDOW_EMBED"),checkCallback:A=>A?!app.isMobile&&Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("popout-window"),!0)}),this.addCommand({id:"export-svg",name:t$d("EXPORT_SVG"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.saveSVG(),!0)}}),this.addCommand({id:"export-svg-scene",name:t$d("EXPORT_SVG_WITH_SCENE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.saveSVG(void 0,!0),!0)}}),this.addCommand({id:"run-ocr",name:t$d("RUN_OCR"),checkCallback:e=>{const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return e?Boolean(A):!!A&&(this.settings.taskboneEnabled?(this.taskbone.getTextForView(A,!1),!0):(new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3),!0))}}),this.addCommand({id:"search-text",name:t$d("SEARCH"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(search(A),!0)}}),this.addCommand({id:"fullscreen",name:t$d("TOGGLE_FULLSCREEN"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.isFullscreen()?A.exitFullscreen():A.gotoFullscreen(),!0)}}),this.addCommand({id:"export-png",name:t$d("EXPORT_PNG"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.savePNG(),!0)}}),this.addCommand({id:"export-png-scene",name:t$d("EXPORT_PNG_WITH_SCENE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.savePNG(void 0,!0),!0)}}),this.forceSaveCommand=this.addCommand({id:"save",hotkeys:[{modifiers:["Ctrl"],key:"s"}],name:t$d("FORCE_SAVE"),checkCallback:e=>this.forceSaveActiveView(e)}),this.addCommand({id:"toggle-lock",hotkeys:[{modifiers:["Ctrl","Shift"],key:"e"}],name:t$d("TOGGLE_LOCK"),checkCallback:e=>{if(e)return!!Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))&&!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode;const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!A||A.compatibilityMode||(A.changeTextMode(A.textMode===TextMode.parsed?TextMode.raw:TextMode.parsed),0))}}),this.addCommand({id:"scriptengine-store",name:t$d("INSTALL_SCRIPT_BUTTON"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ScriptInstallPrompt(this).open(),!0)}),this.addCommand({id:"delete-file",name:t$d("DELETE_FILE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(A){this.ea.reset(),this.ea.setView(A);const e=this.ea.getViewSelectedElement();if("image"!==e.type)return new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0;const t=this.ea.getViewFileForImageElement(e);return t?(this.app.vault.delete(t),this.ea.deleteViewElements([e]),!0):(new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0)}return!1}}),this.addCommand({id:"insert-link",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(this.insertLinkDialog.start(A.file.path,A.addText),!0)}}),this.addCommand({id:"insert-link-to-element",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK_TO_ELEMENT_NORMAL"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.copyLinkToSelectedElementToClipboard(""),!0)}}),this.addCommand({id:"insert-link-to-element-group",name:t$d("INSERT_LINK_TO_ELEMENT_GROUP"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.copyLinkToSelectedElementToClipboard("group="),!0)}}),this.addCommand({id:"insert-link-to-element-area",name:t$d("INSERT_LINK_TO_ELEMENT_AREA"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.copyLinkToSelectedElementToClipboard("area="),!0)}}),this.addCommand({id:"toggle-lefthanded-mode",name:t$d("TOGGLE_LEFTHANDED_MODE"),checkCallback:e=>{if(e){if(this.app.workspace.getActiveViewOfType(ExcalidrawView)){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView),A=null==e?void 0:e.excalidrawAPI;return!!A&&!!A.getAppState().trayModeEnabled}return!1}return this.app.workspace.getActiveViewOfType(ExcalidrawView),(async()=>{const e=this.settings.isLeftHanded;await this.loadSettings({applyLefthandedMode:!1}),this.settings.isLeftHanded=!e,this.saveSettings(),setLeftHandedMode(!e),setTimeout((()=>setLeftHandedMode(!e)))})(),!0}}),this.addCommand({id:"reset-image-to-100",name:t$d("RESET_IMG_TO_100"),checkCallback:e=>{const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!A)return!1;if(!A.excalidrawAPI)return!1;const t=A.getViewSelectedElements().filter((e=>"image"===e.type));if(1!==t.length)return e||new obsidian_module.Notice("Select a single image element and try again"),!1;const n=t[0];return A.excalidrawData.getFile(n.fileId)?!!e||void(async()=>{const e=new ExcalidrawAutomate(this,A),i=await e.getOriginalImageSize(n);if(i){e.copyViewElementsToEAforEditing(t);const A=e.getElement(n.id);A.width=i.width,A.height=i.height,e.addElementsToView(!1,!1,!1)}})():(e||new obsidian_module.Notice("Select a single image element and try again"),!1)}}),this.addCommand({id:"insert-image",name:t$d("INSERT_IMAGE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(this.insertImageDialog.start(A),!0)}}),this.addCommand({id:"import-svg",name:t$d("IMPORT_SVG"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(this.importSVGDialog.start(A),!0)}}),this.addCommand({id:"release-notes",name:t$d("READ_RELEASE_NOTES"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ReleaseNotes(this.app,this,PLUGIN_VERSION).open(),!0)}),this.addCommand({id:"tray-mode",name:t$d("TRAY_MODE"),checkCallback:e=>{if(e){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!e||!e.excalidrawRef)return!1;const A=e.excalidrawAPI.getAppState();return!A.zenModeEnabled&&!A.viewModeEnabled}const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!A||!A.excalidrawAPI||(A.toggleTrayMode(),0))}}),this.addCommand({id:"insert-md",name:t$d("INSERT_MD"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(this.insertMDDialog.start(A),!0)}}),this.addCommand({id:"insert-LaTeX-symbol",name:t$d("INSERT_LATEX"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(insertLaTeXToView(A),!0)}}),this.addCommand({id:"toggle-excalidraw-view",name:t$d("TOGGLE_MODE"),checkCallback:e=>{const A=this.app.workspace.getActiveFile();if(!A)return!1;const t=this.isExcalidrawFile(A);if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))?!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode:t;const n=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(n){const e=n.leaf;return this.excalidrawFileModes[e.id||A.path]="markdown",void this.setMarkdownView(e)}const i=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(i&&t){const e=i.leaf;return this.excalidrawFileModes[e.id||A.path]="excalidraw",void this.setExcalidrawView(e)}}}),this.addCommand({id:"convert-to-excalidraw",name:t$d("CONVERT_NOTE_TO_EXCALIDRAW"),checkCallback:e=>{const A=this.app.workspace.getActiveFile(),t=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!A||!t)return!1;const n=0===A.stat.size;if(e)return n;n&&(async()=>{await this.app.vault.modify(A,await this.getBlankDrawing()),this.setExcalidrawView(t.leaf)})()}}),this.addCommand({id:"convert-excalidraw",name:t$d("CONVERT_EXCALIDRAW"),checkCallback:e=>{if(e){const e=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));return e.length>0}return this.convertExcalidrawToMD(),!0}})}async convertSingleExcalidrawToMD(e,A=!1,t=!1){const n=await this.app.vault.read(e),i=e.name.substring(0,e.name.lastIndexOf(".excalidraw"))+(A?".md":".excalidraw.md"),a=getNewUniqueFilepath(this.app.vault,i,obsidian_module.normalizePath(e.path.substring(0,e.path.lastIndexOf(e.name))));log(a);const r=await this.app.vault.create(a,FRONTMATTER+await this.exportSceneToMD(n));return this.settings.keepInSync&&EXPORT_TYPES.forEach((A=>{const t=e.path.substring(0,e.path.lastIndexOf(".excalidraw"))+A,n=this.app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t));if(n&&n instanceof obsidian_module.TFile){const e=a.substring(0,a.lastIndexOf(".md"))+A;this.app.fileManager.renameFile(n,e)}})),t||this.app.vault.delete(e),r}async convertExcalidrawToMD(e=!1,A=!1){const t=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));for(const n of t)this.convertSingleExcalidrawToMD(n,e,A);new obsidian_module.Notice(`Converted ${t.length} files.`)}registerMonkeyPatches(){this.registerEvent(app.workspace.on("editor-menu",((e,A,t)=>{if(!(t&&t instanceof obsidian_module.MarkdownView))return;const n=t.file,i=t.leaf;if(!t.file)return;const a=this.app.metadataCache.getFileCache(n);(null==a?void 0:a.frontmatter)&&a.frontmatter[FRONTMATTER_KEY]&&e.addItem((e=>e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("excalidraw").onClick((()=>{this.excalidrawFileModes[i.id||n.path]="excalidraw",this.setExcalidrawView(i)}))))}))),this.registerEvent(app.workspace.on("file-menu",((e,A,t,n)=>{if(!(n&&n.view instanceof obsidian_module.MarkdownView))return;if(!(A instanceof obsidian_module.TFile))return;const i=this.app.metadataCache.getFileCache(A);(null==i?void 0:i.frontmatter)&&i.frontmatter[FRONTMATTER_KEY]&&(e.addItem((e=>{e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("pane").onClick((()=>{this.excalidrawFileModes[n.id||A.path]="excalidraw",this.setExcalidrawView(n)}))})),e.items.unshift(e.items.pop()))})));const e=this;this.register(around(obsidian_module.WorkspaceLeaf.prototype,{detach:A=>function(){var t;const n=null===(t=this.view)||void 0===t?void 0:t.getState();return(null==n?void 0:n.file)&&e.excalidrawFileModes[this.id||n.file]&&delete e.excalidrawFileModes[this.id||n.file],A.apply(this)},setViewState:A=>function(t,...n){var i;if(e._loaded&&"markdown"===t.type&&(null===(i=t.state)||void 0===i?void 0:i.file)&&"markdown"!==e.excalidrawFileModes[this.id||t.state.file]){const i=app.metadataCache.getCache(t.state.file);if((null==i?void 0:i.frontmatter)&&i.frontmatter[FRONTMATTER_KEY]){const i=Object.assign(Object.assign({},t),{type:"excalidraw"});return e.excalidrawFileModes[t.state.file]="excalidraw",A.apply(this,[i,...n])}}return A.apply(this,[t,...n])}}))}registerEventListeners(){const e=this;this.app.workspace.onLayoutReady((async()=>{e.registerEvent(app.vault.on("rename",(async(A,t)=>{A instanceof obsidian_module.TFile&&e.isExcalidrawFile(A)&&e.settings.keepInSync&&[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const n=getIMGFilename(t,e),i=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(n));if(i&&i instanceof obsidian_module.TFile){const t=getIMGFilename(A.path,e);await app.fileManager.renameFile(i,t)}}))}))),e.registerEvent(app.vault.on("modify",(async A=>{app.workspace.getLeavesOfType("excalidraw").forEach((async t=>{const n=t.view;if(n.file&&(n.file.path===A.path||"excalidraw"===A.extension&&`${A.path.substring(0,A.path.lastIndexOf(".excalidraw"))}.md`===n.file.path)){if(n.semaphores.preventReload)return void(n.semaphores.preventReload=!1);if(n.lastSaveTimestamp+3e5{if(!(A instanceof obsidian_module.TFile))return;const t=this.excalidrawFiles.has(A);if(this.updateFileCache(A,void 0,!0),!t)return;const n=app.workspace.getLeavesOfType("excalidraw");for(let e=0;e{[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const t=getIMGFilename(A.path,e),n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t));n&&n instanceof obsidian_module.TFile&&await app.vault.delete(n)}))}),500)}))),e.registerEvent(app.workspace.on("active-leaf-change",(async A=>{var t;e.leafChangeTimeout&&clearTimeout(e.leafChangeTimeout),e.leafChangeTimeout=setTimeout((()=>{e.leafChangeTimeout=null}),1e3);const n=e.activeExcalidrawView,i=A.view instanceof ExcalidrawView?A.view:null; +EXPR:/(!)?(\[\[([^|\]]+)\|?([^\]]+)?]]|\[([^\]]*)]\(([^)]*)\))(\{(\d+)\})?/g,getResList:e=>{const t=e.matchAll(REGEX_LINK.EXPR);let A;const i=[];for(;!(A=t.next()).done;)i.push(A);return i},getRes:e=>e.matchAll(REGEX_LINK.EXPR),isTransclusion:e=>!!e.value[1],getLink:e=>e.value[3]?e.value[3]:e.value[6],isWikiLink:e=>!!e.value[3],getAliasOrLink:e=>REGEX_LINK.isWikiLink(e)?e.value[4]?e.value[4]:e.value[3]:e.value[5]?e.value[5]:e.value[6],getWrapLength:(e,t)=>{const A=parseInt(e.value[8]);return isNaN(A)?t>0?t:null:A}},DRAWING_REG=/\n# Drawing\n[^`]*(```json\n)([\s\S]*?)```\n/gm,DRAWING_REG_FALLBACK=/\n# Drawing\n(```json\n)?(.*)(```)?(%%)?/gm,DRAWING_COMPRESSED_REG=/(\n# Drawing\n[^`]*(?:```compressed\-json\n))([\s\S]*?)(```\n)/gm,DRAWING_COMPRESSED_REG_FALLBACK=/(\n# Drawing\n(?:```compressed\-json\n)?)(.*)((```)?(%%)?)/gm,REG_LINKINDEX_HYPERLINK=/^\w+:\/\//,isCompressedMD=e=>null!==e.match(/```compressed\-json\n/gm),getDecompressedScene=e=>{let t,A=e.matchAll(DRAWING_COMPRESSED_REG);return t=A.next(),t.done&&(A=e.matchAll(DRAWING_COMPRESSED_REG_FALLBACK),t=A.next()),t.value&&t.value.length>1?[decompress(t.value[2]),t]:[null,t]},changeThemeOfExcalidrawMD=e=>{const t=isCompressedMD(e);let A=t?getDecompressedScene(e)[0]:e;return A?(isObsidianThemeDark?1===(A.match(/"theme"\s*:\s*"light"\s*,/g)||[]).length&&(A=A.replace(/"theme"\s*:\s*"light"\s*,/,'"theme": "dark",')):1===(A.match(/"theme"\s*:\s*"dark"\s*,/g)||[]).length&&(A=A.replace(/"theme"\s*:\s*"dark"\s*,/,'"theme": "light",')),t?e.replace(DRAWING_COMPRESSED_REG,`$1${compress(A)}$3`):A):e};function getJSON(e){let t,A;if(isCompressedMD(e)){const[t,A]=getDecompressedScene(e);return t?{scene:t.substring(0,t.lastIndexOf("}")+1),pos:A.value.index}:{scene:e,pos:A.value?A.value.index:0}}if(t=e.matchAll(DRAWING_REG),A=t.next(),A.done&&(t=e.matchAll(DRAWING_REG_FALLBACK),A=t.next()),A.value&&A.value.length>1){const e=A.value[2];return{scene:e.substr(0,e.lastIndexOf("}")+1),pos:A.value.index}}return{scene:e,pos:A.value?A.value.index:0}}function getMarkdownDrawingSection(e,t){return t?`%%\n# Drawing\n\`\`\`compressed-json\n${compress(e)}\n\`\`\`\n%%`:`%%\n# Drawing\n\`\`\`json\n${e}\n\`\`\`\n%%`}const estimateMaxLineLen=(e,t)=>{if(!t||!e)return null;if(e===t)return null;let A=0;const i=e.split("\n");if(1===i.length)return null;for(const e of i){const t=e.trim();t.length>A&&(A=t.length)}return A},wrap=(e,t)=>t?wrapTextAtCharLength(e,t,!1,0):e;class ExcalidrawData{constructor(e){this.plugin=e,this.textElements=null,this.elementLinks=null,this.scene=null,this.deletedElements=[],this.file=null,this.autoexportPreference=AutoexportPreference.inherit,this.textMode=TextMode.raw,this.loaded=!1,this.files=null,this.equations=null,this.compatibilityMode=!1,this.selectedElementIds={},this.disableCompression=!1,this.app=e.app,this.files=new Map,this.equations=new Map}initializeNonInitializedFields(){var e,t,A;if(!this.scene||!this.scene.elements)return;const i=null!==(e=this.scene.source.split("https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/")[1])&&void 0!==e?e:"1.8.16",n=this.scene.elements;for(const e of n){if(e.boundElements){const t=new Map;e.boundElements.forEach((e=>{t.set(e.id,e.type)}));const A=Array.from(t,(([e,t])=>({id:e,type:t})));A.length!==e.boundElements.length&&(e.boundElements=A)}e.boundElementIds&&(e.boundElements||(e.boundElements=[]),e.boundElements=e.boundElements.concat(e.boundElementIds.map((e=>({type:"arrow",id:e})))),delete e.boundElementIds),"text"!==e.type||e.containerId||(e.containerId=null),null===e.x&&(e.x=0),null===e.y&&(e.y=0),null===(null===(t=e.startBinding)||void 0===t?void 0:t.focus)&&(e.startBinding.focus=0),null===(null===(A=e.endBinding)||void 0===A?void 0:A.focus)&&(e.endBinding.focus=0),null===e.fontSize&&(e.fontSize=20)}try{n.filter((e=>"text"===e.type&&e.containerId&&n.some((t=>t.id===e.containerId&&t.boundElements.length>0&&t.boundElements.some((t=>"text"===t.type&&t.id!==e.id&&t.id.length>8)))))).forEach((e=>{try{const t=n.filter((t=>t.id===e.containerId))[0],A=t.boundElements.filter((e=>!("text"===e.type&&!n.some((t=>t.id===e.id)))));t.boundElements=[{id:e.id,type:"text"}].concat(A)}catch(e){}}));const e=!isVersionNewerThanOther(i,"1.8.16");n.filter((e=>e.boundElements&&e.boundElements.length>0)).forEach((t=>{var A;e&&!(null===(A=t.customData)||void 0===A?void 0:A.legacyTextWrap)&&(t.customData=Object.assign(Object.assign({},t.customData),{legacyTextWrap:!0}));const i=t.boundElements.filter((e=>n.some((t=>t.id===e.id))));i.length!==t.boundElements.length&&(t.boundElements=i)})),n.filter((e=>"text"===e.type&&e.containerId&&!n.some((t=>t.id===e.containerId)))).forEach((e=>{e.containerId=null}))}catch(e){}}async loadData(e,t,A){if(!t)return!1;if(this.loaded=!1,this.selectedElementIds={},this.textElements=new Map,this.elementLinks=new Map,this.file!=t&&(this.files.clear(),this.equations.clear()),this.file=t,this.compatibilityMode=!1,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.setAutoexportPreferences(),this.scene=null,this.plugin.settings.syncExcalidraw){const e=`${t.path.substring(0,t.path.lastIndexOf(".md"))}.excalidraw`,A=this.app.vault.getAbstractFileByPath(e);if(A&&A instanceof obsidian_module.TFile&&A.stat.mtime>t.stat.mtime){const e=await this.app.vault.read(A);this.scene=JSON.parse(e)}}let i=null;i=(()=>{const t=getJSON(e);if(-1===t.pos)throw new Error("Excalidraw JSON not found in the file");return this.scene||(this.scene=JSON_parse(t.scene)),t})(),this.deletedElements=this.scene.elements.filter((e=>e.isDeleted)),this.scene.elements=this.scene.elements.filter((e=>!e.isDeleted)),this.scene.files||(this.scene.files={}),hasExportTheme(this.plugin,this.file)?this.scene.appState.theme=getExportTheme(this.plugin,this.file,"light"):this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.initializeNonInitializedFields();let n=(e=e.substring(0,i.pos)).search(/(^%%\n)?# Text Elements\n/m);if(-1===n)return await this.setTextMode(A,!1),this.loaded=!0,!0;n+=e.match(/((^%%\n)?# Text Elements\n)/m)[0].length,e=e.substring(n),n=0;const a=" ^12345678\n\n".length;let r,s=e.matchAll(/\s\^(.{8})[\n]+/g);for(;!(r=s.next()).done;){let t=e.substring(n,r.value.index);const A=r.value[1],i=this.scene.elements.filter((e=>e.id===A))[0];if(i)if("text"!==i.type)i.link!==t&&(i.link=t,i.version++,i.versionNonce++),this.elementLinks.set(A,t);else{const e=estimateMaxLineLen(i.text,i.originalText),n=t.matchAll(/^%%\*\*\*>>>text element-link:(\[\[[^<*\]]*]])<<<\*\*\*%%/gm).next();n.done||(t=t.replace(/^%%\*\*\*>>>text element-link:\[\[[^<*\]]*]]<<<\*\*\*%%/gm,""),i.link=n.value[1]);const a=await this.parse(t);i.rawText=t,this.textElements.set(A,{raw:t,parsed:a.parsed,wrapAt:e}),a.link&&(i.link=a.link),!i||i.rawText&&""!==i.rawText||(i.rawText=t)}n=r.value.index+a}for(s=(e=e.substring(e.indexOf("# Embedded files\n")+"# Embedded files\n".length)).matchAll(/([\w\d]*):\s*\[\[([^\]]*)]]\s?(\{[^}]*})?\n/gm);!(r=s.next()).done;){const e=new EmbeddedFile(this.plugin,this.file.path,r.value[2],r.value[3]);this.setFile(r.value[1],e)}for(s=e.matchAll(/([\w\d]*):\s*(https?:\/\/[^\s]*)\n/gm);!(r=s.next()).done;){const e=new EmbeddedFile(this.plugin,null,r.value[2]);this.setFile(r.value[1],e)}for(s=e.matchAll(/([\w\d]*):\s*\$\$(.*)(\$\$\s*\n)/gm);!(r=s.next()).done;)this.setEquation(r.value[1],{latex:r.value[2],isLoaded:!1});return this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(A,!0),this.loaded=!0,!0}async loadLegacyData(e,t){return!!t&&(this.loaded=!1,this.selectedElementIds={},this.compatibilityMode=!0,this.file=t,this.textElements=new Map,this.elementLinks=new Map,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.scene=JSON.parse(e),this.scene.files||(this.scene.files={}),this.initializeNonInitializedFields(),this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.files.clear(),this.equations.clear(),this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(TextMode.raw,!0),this.loaded=!0,!0)}async setTextMode(e,t=!1){this.scene&&(this.textMode=e,await this.updateSceneTextElements(t))}updateTextElement(e,t,A,i=!1,n){var a;if(i||t!=e.text){const i=_measureText(t,e.fontSize,e.fontFamily,null!==(a=e.lineHeight)&&void 0!==a?a:getDefaultLineHeight$1(e.fontFamily));e.text=t,e.originalText=A,e.containerId&&"arrow"!==n||(e.width=i.w),e.height=i.h,e.baseline=i.baseline}}async updateSceneTextElements(e=!1){var t,A,i,n;const a=null===(t=this.scene.elements)||void 0===t?void 0:t.filter((e=>"text"===e.type));for(const t of a){const a=getContainerElement(t,this.scene),r=null!==(i=null!==(A=await this.getText(t.id))&&void 0!==A?A:t.originalText)&&void 0!==i?i:t.text,s=null===(n=this.textElements.get(t.id))||void 0===n?void 0:n.wrapAt;try{this.updateTextElement(t,s?wrapText(r,getFontString({fontSize:t.fontSize,fontFamily:t.fontFamily}),getBoundTextMaxWidth(a)):r,r,e,null==a?void 0:a.type)}catch(e){debug({where:"ExcalidrawData.updateSceneTextElements",fn:this.updateSceneTextElements,textElement:t})}}}async getText(e){const t=this.textElements.get(e);return t?this.textMode===TextMode.parsed?(t.parsed||this.textElements.set(e,{raw:t.raw,parsed:(await this.parse(t.raw)).parsed,wrapAt:t.wrapAt}),t.parsed):t.raw:null}findNewElementLinksInScene(){var e;let t=!1;const A=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.link&&e.link.startsWith("[[")&&!this.elementLinks.has(e.id)));if(0===A.length)return t;let i,n=JSON.stringify(this.scene);for(const e of A)i=e.id,e.id.length>8&&(t=!0,i=nanoid(),n=n.replaceAll(e.id,i)),this.elementLinks.set(i,e.link);return this.scene=JSON.parse(n),t}findNewTextElementsInScene(e={}){var t;this.selectedElementIds=e;const A=null===(t=this.scene.elements)||void 0===t?void 0:t.filter((e=>"text"===e.type));let i,n=JSON.stringify(this.scene),a=!1;for(const e of A)if(i=e.id,e.id.length>8){if(a=!0,i=nanoid(),this.selectedElementIds[e.id]&&(delete this.selectedElementIds[e.id],this.selectedElementIds[i]=!0),n=n.replaceAll(e.id,i),this.textElements.has(e.id)){const t=this.textElements.get(e.id);this.textElements.set(i,{raw:t.raw,parsed:t.parsed,wrapAt:t.wrapAt}),this.textElements.delete(e.id)}if(!this.textElements.has(i)){const t=e.rawText&&""!==e.rawText?e.rawText:e.text,A=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(i,{raw:t,parsed:null,wrapAt:A}),this.parseasync(i,t,A)}}else if(!this.textElements.has(e.id)){const t=e.rawText&&""!==e.rawText?e.rawText:e.text,A=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(i,{raw:t,parsed:null,wrapAt:A}),this.parseasync(i,t,A)}return a&&(this.scene=JSON.parse(n)),a}updateElementLinksFromScene(){var e;for(const t of this.elementLinks.keys()){const A=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.id===t&&e.link&&e.link.startsWith("[[")));0===A.length?this.elementLinks.delete(t):this.elementLinks.set(t,A[0].link)}}async updateTextElementsFromScene(){var e,t,A;for(const i of this.textElements.keys()){const n=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"===e.type&&e.id===i));if(0===n.length)this.textElements.delete(i);else{const e=await this.getText(i),a=this.scene.prevTextMode===TextMode.parsed?n[0].rawText:null!==(t=n[0].originalText)&&void 0!==t?t:n[0].text;if(e!==(null!==(A=n[0].originalText)&&void 0!==A?A:n[0].text)){const e=estimateMaxLineLen(n[0].text,n[0].originalText);this.textElements.set(i,{raw:a,parsed:(await this.parse(a)).parsed,wrapAt:e})}}}}async parseasync(e,t,A){this.textElements.set(e,{raw:t,parsed:(await this.parse(t)).parsed,wrapAt:A})}parseLinks(e,t,A){return e.substring(t,A.value.index)+(this.showLinkBrackets?"[[":"")+REGEX_LINK.getAliasOrLink(A)+(this.showLinkBrackets?"]]":"")}async getTransclusion(e){const t=getLinkParts(e,this.file),A=this.app.metadataCache.getFirstLinkpathDest(t.path,this.file.path);return await getTransclusion(t,this.app,A,this.plugin.settings.pageTransclusionCharLimit)}async parse(e){e=this.parseCheckbox(e);let t="",A=null,i=0;const n=REGEX_LINK.getRes(e);let a,r=!1,s=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(A=e,s=!0);!(a=n.next()).done;){if(!A){const e=REGEX_LINK.getLink(a);A=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}if(REGEX_LINK.isTransclusion(a)){let A=this.parseCheckbox((await this.getTransclusion(REGEX_LINK.getLink(a))).contents).replaceAll(/%%[^%]*%%/gm,"");this.plugin.settings.removeTransclusionQuoteSigns&&(A=A.replaceAll(/\n\s*>\s?/gm,"\n")),t+=e.substring(i,a.value.index)+wrapTextAtCharLength(A,REGEX_LINK.getWrapLength(a,this.plugin.settings.wordWrappingDefault),this.plugin.settings.forceWrap)}else{const A=this.parseLinks(e,i,a);A&&(t+=A,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0))}i=a.value.index+a.value[0].length}return t+=e.substring(i,e.length),r&&(t=this.linkPrefix+t),s&&(t=this.urlPrefix+t),{parsed:t,link:A}}parseCheckbox(e){return this.plugin.settings.parseTODO?e.replaceAll(/^- \[\s] /g,`${this.plugin.settings.todo} `).replaceAll(/\n- \[\s] /g,`\n${this.plugin.settings.todo} `).replaceAll(/^- \[[^\s]] /g,`${this.plugin.settings.done} `).replaceAll(/\n- \[[^\s]] /g,`\n${this.plugin.settings.done} `):e}quickParse(e){if((e=>{const t=REGEX_LINK.getRes(e);let A;for(;!(A=t.next()).done;)if(REGEX_LINK.isTransclusion(A))return!0;return!1})(e))return[null,null];e=this.parseCheckbox(e);let t="",A=null,i=0;const n=REGEX_LINK.getRes(e);let a,r=!1,s=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(A=e,s=!0);!(a=n.next()).done;){if(!A){const e=REGEX_LINK.getLink(a);A=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}const n=this.parseLinks(e,i,a);n&&(t+=n,s||r||(REGEX_LINK.getLink(a).match(REG_LINKINDEX_HYPERLINK)?s=!0:r=!0)),i=a.value.index+a.value[0].length}return t+=e.substring(i,e.length),r&&(t=this.linkPrefix+t),s&&(t=this.urlPrefix+t),[t,A]}generateMD(e=[]){let t="# Text Elements\n";for(const e of this.textElements.keys()){const A=this.scene.elements.filter((t=>t.id===e));let i=this.textElements.get(e).raw;A&&1===A.length&&A[0].link&&A[0].rawText===A[0].originalText&&A[0].link.match(/^\[\[[^\]]*]]$/g)&&(i=`%%***>>>text element-link:${A[0].link}<<<***%%`+i),t+=`${i} ^${e}\n\n`}for(const e of this.elementLinks.keys())t+=`${this.elementLinks.get(e)} ^${e}\n\n`;if(t+=this.equations.size>0||this.files.size>0?"\n# Embedded files\n":"",this.equations.size>0)for(const e of this.equations.keys())t+=`${e}: $$${this.equations.get(e).latex}$$\n`;if(this.files.size>0)for(const e of this.files.keys()){const A=/(^[^#\|]*)/,i=this.files.get(e);i.isHyperlink?t+=`${e}: ${i.hyperlink}\n`:t+=`${e}: [[${i.file?i.linkParts.original.replace(A,app.metadataCache.fileToLinktext(i.file,this.file.path)):i.linkParts.original}]]${i.colorMap?" "+JSON.stringify(i.colorMap):""}\n`}return t+=this.equations.size>0||this.files.size>0?"\n":"",t+getMarkdownDrawingSection(JSON.stringify({type:this.scene.type,version:this.scene.version,source:this.scene.source,elements:this.scene.elements.concat(e),appState:this.scene.appState,files:this.scene.files},null,"\t"),!this.disableCompression&&this.plugin.settings.compress)}async saveDataURLtoVault(e,t,A){var i;const n=this.scene;let a=`Pasted Image ${window.moment().format("YYYYMMDDHHmmss_SSS")}`;switch(t){case"image/png":default:a+=".png";break;case"image/jpeg":a+=".jpg";break;case"image/svg+xml":a+=".svg";break;case"image/gif":a+=".gif"}const r=(await getAttachmentsFolderAndFilePath(this.app,this.file.path,a)).filepath,s=await this.app.vault.createBinary(r,getBinaryFileFromDataURL(e)),o=new EmbeddedFile(this.plugin,this.file.path,r);return o.setImage(e,t,{height:0,width:0},"dark"===(null===(i=n.appState)||void 0===i?void 0:i.theme),"image/svg+xml"===t),this.setFile(A,o),s}async syncFiles(){let e=!1;const t=this.scene,A=t.elements.filter((e=>"image"===e.type)).map((e=>e.fileId));if(this.files.forEach(((t,i)=>{A.contains(i)||(this.files.delete(i),e=!0)})),this.equations.forEach(((t,i)=>{A.contains(i)||(this.equations.delete(i),e=!0)})),!t.files||0===Object.keys(t.files).length)return!1;const i=new Set;A.forEach((A=>{if(i.has(A)){const n=this.getFile(A),a=this.getEquation(A);if(n&&(n.isHyperlink||n.file&&("md"!==n.file.extension||this.plugin.isExcalidrawFile(n.file))))return;const r=fileid();t.elements.filter((e=>e.fileId===A))[0].fileId=r,e=!0,i.add(r),n&&this.setFile(r,new EmbeddedFile(this.plugin,this.file.path,n.linkParts.original)),a&&this.setEquation(r,{latex:a.latex,isLoaded:!1})}i.add(A)}));for(const A of Object.keys(t.files))this.hasFile(A)||this.hasEquation(A)||(e=!0,await this.saveDataURLtoVault(t.files[A].dataURL,t.files[A].mimeType,A));return e}async syncElements(e,t){this.scene=e;let A=!1;return this.compatibilityMode||(A=await this.syncFiles(),this.scene.files={}),this.updateElementLinksFromScene(),A=A||this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene(),await this.updateTextElementsFromScene(),A||this.findNewTextElementsInScene(t)}async updateScene(e){this.scene=JSON_parse(e),this.updateElementLinksFromScene();const t=this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene();return await this.updateTextElementsFromScene(),!(!t&&!this.findNewTextElementsInScene()||(await this.updateSceneTextElements(),0))}getRawText(e){var t;return null===(t=this.textElements.get(e))||void 0===t?void 0:t.raw}getParsedText(e){const t=this.textElements.get(e);return t?[wrap(t.parsed,t.wrapAt),t.parsed,null]:[null,null,null]}setTextElement(e,t,A,i){const n=estimateMaxLineLen(t,A),[a,r]=this.quickParse(A);return a?(this.textElements.set(e,{raw:A,parsed:a,wrapAt:n}),[wrap(a,n),a,r]):(this.parse(A).then((t=>{const a=t.parsed;this.textElements.set(e,{raw:A,parsed:a,wrapAt:n}),a&&i(wrap(a,n),a)})),[null,null,null])}async addTextElement(e,t,A){let i=estimateMaxLineLen(t,A);this.textElements.has(e)&&(i=this.textElements.get(e).wrapAt);const n=await this.parse(A);return this.textElements.set(e,{raw:A,parsed:n.parsed,wrapAt:i}),[wrap(n.parsed,i),n.parsed,n.link]}deleteTextElement(e){this.textElements.delete(e)}getOpenMode(){const e=this.app.metadataCache.getFileCache(this.file);let t="view-mobile"===this.plugin.settings.defaultMode?DEVICE.isPhone?"view":"normal":this.plugin.settings.defaultMode;switch((null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-default-mode"]&&(t=e.frontmatter["excalidraw-default-mode"]),t){case"zen":return{viewModeEnabled:!1,zenModeEnabled:!0};case"view":return{viewModeEnabled:!0,zenModeEnabled:!1};default:return{viewModeEnabled:!1,zenModeEnabled:!1}}}getLinkOpacity(){const e=this.app.metadataCache.getFileCache(this.file);let t=this.plugin.settings.linkOpacity;return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-linkbutton-opacity"]&&(t=e.frontmatter["excalidraw-linkbutton-opacity"]),t}getOnLoadScript(){const e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-onload-script"]?e.frontmatter["excalidraw-onload-script"]:null}setLinkPrefix(){const e=this.linkPrefix,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-link-prefix"]?this.linkPrefix=t.frontmatter["excalidraw-link-prefix"]:this.linkPrefix=this.plugin.settings.linkPrefix,e!=this.linkPrefix}setUrlPrefix(){const e=this.urlPrefix,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-url-prefix"]?this.urlPrefix=t.frontmatter["excalidraw-url-prefix"]:this.urlPrefix=this.plugin.settings.urlPrefix,e!=this.urlPrefix}setAutoexportPreferences(){const e=this.app.metadataCache.getFileCache(this.file);if((null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-autoexport"])switch(e.frontmatter["excalidraw-autoexport"].toLowerCase()){case"none":this.autoexportPreference=AutoexportPreference.none;break;case"both":this.autoexportPreference=AutoexportPreference.both;break;case"png":this.autoexportPreference=AutoexportPreference.png;break;case"svg":this.autoexportPreference=AutoexportPreference.svg;break;default:this.autoexportPreference=AutoexportPreference.inherit}else this.autoexportPreference=AutoexportPreference.inherit}setShowLinkBrackets(){const e=this.showLinkBrackets,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-link-brackets"]?this.showLinkBrackets=0!=t.frontmatter["excalidraw-link-brackets"]:this.showLinkBrackets=this.plugin.settings.showLinkBrackets,e!=this.showLinkBrackets}setFile(e,t){if(!t)return;if(this.files.set(e,t),t.isHyperlink)return void this.plugin.filesMaster.set(e,{isHyperlink:!0,path:t.hyperlink,blockrefData:null,hasSVGwithBitmap:t.isSVGwithBitmap});if(!t.file)return;const A=t.linkParts.original.split("#");this.plugin.filesMaster.set(e,{isHyperlink:!1,path:t.file.path+(t.shouldScale()?"":"|100%"),blockrefData:1===A.length?null:A[1],hasSVGwithBitmap:t.isSVGwithBitmap,colorMapJSON:t.colorMap?JSON.stringify(t.colorMap):null})}getFiles(){return Object.values(this.files)}getFile(e){let t=this.files.get(e);if(t)return t;const A=this.plugin.filesMaster.get(e);return A?(t=new EmbeddedFile(this.plugin,this.file.path,A.blockrefData?A.path+"#"+A.blockrefData:A.path),this.files.set(e,t),t):t}getFileEntries(){return this.files.entries()}deleteFile(e){this.files.delete(e)}hasFile(e){if(this.files.has(e))return!0;if(this.plugin.filesMaster.has(e)){const t=this.plugin.filesMaster.get(e);if(t.isHyperlink)return this.files.set(e,new EmbeddedFile(this.plugin,this.file.path,t.path)),!0;const A=t.path.split("|")[0].split("#")[0];if(!this.app.vault.getAbstractFileByPath(A))return this.plugin.filesMaster.delete(e),!0;const i=t.path.endsWith("100%"),n=new EmbeddedFile(this.plugin,this.file.path,(t.blockrefData?A+"#"+t.blockrefData:A)+(i?"|100%":""),t.colorMapJSON);return this.files.set(e,n),!0}return!1}setEquation(e,t){this.equations.set(e,{latex:t.latex,isLoaded:t.isLoaded}),this.plugin.equationsMaster.set(e,t.latex)}getEquation(e){let t=this.equations.get(e);if(t)return t;const A=this.plugin.equationsMaster.get(e);return A?(this.equations.set(e,{latex:A,isLoaded:!1}),{latex:A,isLoaded:!1}):t}getEquationEntries(){return this.equations.entries()}deleteEquation(e){this.equations.delete(e)}hasEquation(e){return!!this.equations.has(e)||!!this.plugin.equationsMaster.has(e)&&(this.equations.set(e,{latex:this.plugin.equationsMaster.get(e),isLoaded:!1}),!0)}}const getTransclusion=async(e,t,A,i)=>{var n,a,r,s,o,l,c,d,h;if(!e.path)return{contents:e.original.trim(),lineNum:0};if(!(A&&A instanceof obsidian_module.TFile))return{contents:e.original.trim(),lineNum:0};const u=await t.vault.read(A);if(!e.ref)return i?{contents:u.substring(0,i).trim(),lineNum:0}:{contents:u.trim(),lineNum:0};const g=(await t.metadataCache.blockCache.getForFile({isCancelled:()=>!1},A)).blocks.filter((e=>"comment"!=e.node.type));if(!g)return{contents:e.original.trim(),lineNum:0};if(e.isBlockRef){let t=null===(n=g.filter((t=>t.node.id==e.ref))[0])||void 0===n?void 0:n.node;if(!t)return{contents:e.original.trim(),lineNum:0};["blockquote"].includes(t.type)&&(t=t.children[0]);const A=t.position.start.offset,i=t.position.start.line,a=t.position.end.offset;return{contents:u.substring(A,a).replaceAll(/ \^\S*$|^\^\S*$/gm,"").trim(),lineNum:i}}const p=g.filter((e=>0===e.display.search(/^#+\s/)));let m=null,w=0,f=null,B=1;for(let t=0;tB;)e++;return e===p.length&&p[e-1].node.depth>B?{leadingHashes:"#".repeat(B)+" ",contents:u.substring(m).trim(),lineNum:w}:(f=p[e].node.position.start.offset-1,{leadingHashes:"#".repeat(B)+" ",contents:u.substring(m,f).trim(),lineNum:w})}const A=p[t].node.children[0],i=null===(r=null===(a=p[t].node.data)||void 0===a?void 0:a.hProperties)||void 0===r?void 0:r.dataHeading,n=null==A?void 0:A.children;!m&&((null===(s=null==A?void 0:A.value)||void 0===s?void 0:s.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref||(null===(o=null==A?void 0:A.title)||void 0===o?void 0:o.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref||(null==i?void 0:i.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref||n&&(null===(c=null===(l=n[0])||void 0===l?void 0:l.value)||void 0===c?void 0:c.replaceAll(REG_BLOCK_REF_CLEAN,""))===e.ref)&&(m=null===(d=p[t].node.children[0])||void 0===d?void 0:d.position.start.offset,B=p[t].node.depth,w=null===(h=p[t].node.children[0])||void 0===h?void 0:h.position.start.line)}return m?{leadingHashes:"#".repeat(B)+" ",contents:u.substring(m).trim(),lineNum:w}:{contents:e.original.trim(),lineNum:0}};class Prompt extends obsidian_module.Modal{constructor(e,t,A,i,n){super(e),this.prompt_text=t,this.default_value=A,this.placeholder=i,this.prompt_desc=n}onOpen(){this.titleEl.setText(this.prompt_text),this.createForm()}onClose(){this.contentEl.empty()}createForm(){var e;let t=this.contentEl.createDiv();t.addClass("excalidraw-prompt-div"),this.prompt_desc&&(t=t.createDiv(),t.style.width="100%",t.createEl("p").innerHTML=this.prompt_desc);const A=t.createEl("form");A.addClass("excalidraw-prompt-form"),A.type="submit",A.onsubmit=e=>{e.preventDefault(),this.resolve(this.promptEl.value),this.close()},this.promptEl=A.createEl("input"),this.promptEl.type="text",this.promptEl.placeholder=this.placeholder,this.promptEl.value=null!==(e=this.default_value)&&void 0!==e?e:"",this.promptEl.addClass("excalidraw-prompt-input"),this.promptEl.select()}async openAndGetValue(e){this.resolve=e,this.open()}}class GenericInputPrompt extends obsidian_module.Modal{static Prompt(e,t,A,i,n,a,r,s,o,l,c){return new GenericInputPrompt(e,t,A,i,n,a,r,s,o,l,c).waitForClose}constructor(e,t,A,i,n,a,r,s,o,l,c){super(A),this.header=i,this.didSubmit=!1,this.lines=1,this.displayEditorButtons=!1,this.selectionStart=0,this.selectionEnd=0,this.selectionUpdateTimer=0,this.blockPointerInputOutsideModal=!1,this.linkBtnClickCallback=()=>{this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),this.plugin.insertLinkDialog.start(this.view.file.path,(e=>{const t=this.inputComponent.inputEl.value;this.selectionStart>0&&" "!==t.slice(this.selectionStart-1,this.selectionStart)&&(e=" "+e),this.selectionStart{this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer);const t=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+e+this.inputComponent.inputEl.value.slice(this.selectionStart);this.inputComponent.inputEl.value=t,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=this.selectionStart+1,this.selectionEnd=this.selectionStart,this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionEnd)},this.delBtnClickCallback=()=>{if(this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),0===this.input.length)return;const e=this.selectionEnd>this.selectionStart?this.selectionStart:this.selectionStart>0?this.selectionStart-1:0,t=this.selectionEnd,A=this.inputComponent.inputEl.value.slice(0,e)+this.inputComponent.inputEl.value.slice(t);this.inputComponent.inputEl.value=A,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=e,this.selectionEnd=e,this.inputComponent.inputEl.setSelectionRange(e,e)},this.uppercaseBtnClickCallback=()=>{if(this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),this.selectionEnd===this.selectionStart)return;const e=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+this.inputComponent.inputEl.value.slice(this.selectionStart,this.selectionEnd).toUpperCase()+this.inputComponent.inputEl.value.slice(this.selectionEnd);this.inputComponent.inputEl.value=e,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionEnd)},this.submitClickCallback=()=>this.submit(),this.cancelClickCallback=()=>this.cancel(),this.keyDownCallback=e=>{("Enter"===e.key&&1===this.lines||isCTRL(e)&&"Enter"===e.key)&&(e.preventDefault(),this.submit()),this.displayEditorButtons&&"k"===e.key&&isCTRL(e)&&(e.preventDefault(),this.linkBtnClickCallback())},this.view=e,this.plugin=t,this.placeholder=n,this.input=a,this.buttons=r,this.lines=null!=s?s:1,this.displayEditorButtons=this.lines>1&&null!=o&&o,this.customComponents=l,this.blockPointerInputOutsideModal=null!=c&&c,this.waitForClose=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t})),this.display(),this.inputComponent.inputEl.focus(),this.open()}display(){var e;this.contentEl.empty(),this.blockPointerInputOutsideModal&&(this.bgEl.style.pointerEvents=this.blockPointerInputOutsideModal?"none":"auto"),this.titleEl.textContent=this.header;const t=this.contentEl.createDiv();this.inputComponent=this.createInputField(t,this.placeholder,this.input),null===(e=this.customComponents)||void 0===e||e.call(this,t),this.createButtonBar(t)}createInputField(e,t,A){const i=new obsidian_module.TextAreaComponent(e);i.inputEl.style.width="100%",i.inputEl.style.height=2*this.lines+"em",1===this.lines&&(i.inputEl.style.resize="none",i.inputEl.style.overflow="hidden"),i.setPlaceholder(null!=t?t:"").setValue(null!=A?A:"").onChange((e=>this.input=e));const n=()=>{this.selectionUpdateTimer=this.view.ownerWindow.setTimeout((()=>{this.selectionStart=this.inputComponent.inputEl.selectionStart,this.selectionEnd=this.inputComponent.inputEl.selectionEnd}),30)};return i.inputEl.addEventListener("keydown",this.keyDownCallback),i.inputEl.addEventListener("keyup",n),i.inputEl.addEventListener("pointerup",n),i.inputEl.addEventListener("touchend",n),i.inputEl.addEventListener("input",n),i.inputEl.addEventListener("paste",n),i.inputEl.addEventListener("cut",n),i.inputEl.addEventListener("select",n),i.inputEl.addEventListener("selectionchange",n),i}createButton(e,t,A,i="",n="5px"){const a=new obsidian_module.ButtonComponent(e);return a.buttonEl.style.padding="0.5em",a.buttonEl.style.marginLeft=n,a.setTooltip(i),a.setButtonText(t).onClick(A),a}createButtonBar(e){const t=e.createDiv();t.style.display="flex",t.style.justifyContent="space-between",t.style.marginTop="1rem";const A=t.createDiv(),i=t.createDiv();if(this.buttons&&this.buttons.length>0){let e=null;for(const t of this.buttons){const A=new obsidian_module.ButtonComponent(i);A.buttonEl.style.marginLeft="5px",t.tooltip&&A.setTooltip(t.tooltip),A.setButtonText(t.caption).onClick((e=>{const A=t.action(this.input);A&&(this.input=A),this.submit()})),e=null!=e?e:A}e&&(e.setCta(),e.buttonEl.style.marginRight="0")}else this.createButton(i,"✅",this.submitClickCallback).setCta().buttonEl.style.marginRight="0";this.createButton(i,"❌",this.cancelClickCallback,"Cancel"),this.displayEditorButtons&&(this.createButton(A,"⏎",(()=>this.insertStringBtnClickCallback("\n")),"Insert new line","0"),this.createButton(A,"⌫",this.delBtnClickCallback,"Delete"),this.createButton(A,"⎵",(()=>this.insertStringBtnClickCallback(" ")),"Insert space"),this.view&&this.createButton(A,"🔗",this.linkBtnClickCallback,"Insert markdown link to file"),this.createButton(A,"🔠",this.uppercaseBtnClickCallback,"Uppercase"))}submit(){this.didSubmit=!0,this.close()}cancel(){this.close()}resolveInput(){this.didSubmit?this.resolvePromise(this.input):this.rejectPromise("No input given.")}removeInputListener(){var e,t;null===(t=null===(e=this.inputComponent)||void 0===e?void 0:e.inputEl)||void 0===t||t.removeEventListener("keydown",this.keyDownCallback)}onOpen(){super.onOpen(),this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.select()}onClose(){super.onClose(),this.resolveInput(),this.removeInputListener()}}class GenericSuggester extends obsidian_module.FuzzySuggestModal{static Suggest(e,t,A,i,n){return new GenericSuggester(e,t,A,i,n).promise}constructor(e,t,A,i,n){var a;super(e),this.displayItems=t,this.items=A,this.hint=i,this.instructions=n,this.limit=20,this.setPlaceholder(null!==(a=this.hint)&&void 0!==a?a:""),n&&this.setInstructions(this.instructions),this.promise=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t})),this.open()}getItemText(e){return this.displayItems[this.items.indexOf(e)]}getItems(){return this.items}selectSuggestion(e,t){this.resolved=!0,super.selectSuggestion(e,t)}onChooseItem(e){this.resolved=!0,this.resolvePromise(e)}onClose(){super.onClose(),this.resolved||this.rejectPromise(this.inputEl.value)}}class NewFileActions extends obsidian_module.Modal{constructor(e,t,A,i){super(e.app),this.plugin=e,this.path=t,this.keys=A,this.view=i}onOpen(){this.createForm()}async onClose(){}openFile(e){e&&getLeaf(this.plugin,this.view.leaf,this.keys).openFile(e,{active:!0})}createForm(){this.titleEl.setText("New File"),this.contentEl.createDiv({cls:"excalidraw-prompt-center",text:"File does not exist. Do you want to create it?"}),this.contentEl.createDiv({cls:"excalidraw-prompt-center filepath",text:this.path}),this.contentEl.createDiv({cls:"excalidraw-prompt-center"},(e=>{e.style.textAlign="right";const t=()=>this.path&&""!==this.path?!!this.view.file||(new obsidian_module.Notice("Unknown error. It seems as if your drawing was closed or the drawing file is missing"),!1):(new obsidian_module.Notice("Error: Filename for new file may not be empty"),!1),A=async e=>{if(!this.path.includes("/")){const e=new RegExp(`${this.view.file.name}$`,"g");this.path=this.view.file.path.replace(e,this.path)}return this.path.match(/\.md$/)||(this.path=`${this.path}.md`),checkAndCreateFolder(splitFolderAndFilename(this.path).folderpath),await this.app.vault.create(this.path,e)};e.createEl("button",{text:"Create Markdown"}).onclick=async()=>{if(!t)return;const e=await A("");this.openFile(e),this.close()},e.createEl("button",{text:"Create Excalidraw"}).onclick=async()=>{if(!t)return;const e=await A(await this.plugin.getBlankDrawing());await sleep$1(200),this.openFile(e),this.close()},e.createEl("button",{text:"Never Mind"}).onclick=()=>{this.close()}}))}}class ScriptEngine{constructor(e){this.plugin=e,this.scriptIconMap={},this.loadScripts(),this.registerEventHandlers()}registerEventHandlers(){const e=e=>{if(!e.endsWith(".svg"))return;const t=app.vault.getAbstractFileByPath(getIMGFilename(e,"md"));t&&t instanceof obsidian_module.TFile&&(this.unloadScript(this.getScriptName(t),t.path),this.loadScript(t))};this.plugin.registerEvent(app.vault.on("delete",(async t=>{t instanceof obsidian_module.TFile&&t.path.startsWith(this.scriptPath)&&(this.unloadScript(this.getScriptName(t),t.path),e(t.path))}))),this.plugin.registerEvent(app.vault.on("create",(async t=>{t instanceof obsidian_module.TFile&&t.path.startsWith(this.scriptPath)&&(this.loadScript(t),e(t.path))}))),this.plugin.registerEvent(app.vault.on("rename",(async(t,A)=>{if(!(t instanceof obsidian_module.TFile))return;const i=A.startsWith(this.scriptPath),n=t.path.startsWith(this.scriptPath);i&&(this.unloadScript(this.getScriptName(A),A),e(A)),n&&(this.loadScript(t),e(t.path))})))}updateScriptPath(){this.scriptPath!==this.plugin.settings.scriptFolderPath&&(this.scriptPath&&this.unloadScripts(),this.loadScripts())}getListofScripts(){if(this.scriptPath=this.plugin.settings.scriptFolderPath,app.vault.getAbstractFileByPath(this.scriptPath))return app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)&&"md"===e.extension));this.scriptPath=null}loadScripts(){var e;null===(e=this.getListofScripts())||void 0===e||e.forEach((e=>this.loadScript(e)))}getScriptName(e){let t="",A="";e instanceof obsidian_module.TFile?(t=e.basename,A=e.path):(t=splitFolderAndFilename(e).basename,A=e);const i=A.split(`${this.scriptPath}/`)[1],n=i.lastIndexOf("/");return n>-1?i.substring(0,n+1)+t:t}async addScriptIconToMap(e,t){const A=getIMGFilename(e,"svg"),i=app.vault.getAbstractFileByPath(A),n=i&&i instanceof obsidian_module.TFile?await app.vault.read(i):null;this.scriptIconMap=Object.assign({},this.scriptIconMap);const a=splitFolderAndFilename(t);this.scriptIconMap[e]={name:a.filename,group:"/"===a.folderpath?"":a.folderpath,svgString:n},this.updateToolPannels()}loadScript(e){if("md"!==e.extension)return;const t=this.getScriptName(e);this.addScriptIconToMap(e.path,t),this.plugin.addCommand({id:t,name:`(Script) ${t}`,checkCallback:A=>{if(A)return Boolean(app.workspace.getActiveViewOfType(ExcalidrawView));const i=app.workspace.getActiveViewOfType(ExcalidrawView);return!!i&&((async()=>{const A=await app.vault.read(e);A&&this.executeScript(i,A,t,e)})(),!0)}})}unloadScripts(){const e=app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)));e.forEach((e=>{this.unloadScript(this.getScriptName(e),e.path)}))}unloadScript(e,t){if(!t.endsWith(".md"))return;delete this.scriptIconMap[t],this.scriptIconMap=Object.assign({},this.scriptIconMap),this.updateToolPannels();const A=`${PLUGIN_ID}:${e}`;app.commands.commands[A]&&delete app.commands.commands[A]}async executeScript(e,t,A,i){if(!e||!t||!A)return;this.plugin.ea.reset(),this.plugin.ea.setView(e),this.plugin.ea.activeScript=A;const n=Object.getPrototypeOf((async()=>{})).constructor;let a=null;return a=await new n("ea","utils",t)(this.plugin.ea,{inputPrompt:(t,A,i,n,a,r,s,o)=>ScriptEngine.inputPrompt(e,this.plugin,app,t,A,i,n,a,r,s,o),suggester:(e,t,A,i)=>ScriptEngine.suggester(app,e,t,A,i),scriptFile:i}),this.plugin.ea.activeScript=null,a}updateToolPannels(){app.workspace.getLeavesOfType("excalidraw").forEach((e=>{var t,A;null===(A=null===(t=e.view.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===A||A.updateScriptIconMap(this.scriptIconMap)}))}static async inputPrompt(e,t,A,i,n,a,r,s,o,l,c){try{return await GenericInputPrompt.Prompt(e,t,A,i,n,a,r,s,o,l,c)}catch(e){return}}static async suggester(e,t,A,i,n){try{return await GenericSuggester.Suggest(e,t,A,i,n)}catch(e){return}}}var t$c={d:(e,t)=>{for(var A in t)t$c.o(t,A)&&!t$c.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},r$e={};t$c.d(r$e,{QA:()=>w$1,ZP:()=>j$1,qt:()=>x$1,MX:()=>$});const e$d={red:"hsl(0, 100%, 50%)",orange:"hsl(30, 100%, 50%)",yellow:"hsl(60, 100%, 50%)","lime green":"hsl(90, 100%, 50%)",green:"hsl(120, 100%, 50%)","blue green":"hsl(150, 100%, 50%)",cyan:"hsl(180, 100%, 50%)","sky blue":"hsl(210, 100%, 50%)",blue:"hsl(240, 100%, 50%)",purple:"hsl(270, 100%, 50%)",magenta:"hsl(300, 100%, 50%)",pink:"hsl(330, 100%, 50%)"};function s$a(e,t,A){return Math.max(e,Math.min(t,A))}function n$c(e,t){return+e.toFixed(t>=0?t:0)}function a$c(e){const t=e%360;return t<0?t+360:t}function i$a(e){return void 0!==e?s$a(0,e,1):1}function o$b(e){return Math.floor(Math.random()*e)}function h$4(e){var t;const{Cmin:A,Cmax:i,H:n,delta:a}=function(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}(e),r=(i+A)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$c(60*n),s:100*s,l:100*r,a:null!==(t=e.a)&&void 0!==t?t:1}}function u$8(e){const{h:t,s:A,l:i,a:n}=e,a=i/100,r=A/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(t/60%2-1)),l=a-s/2,c=t<60||300<=t&&t<360?s:120<=t&&t<240?0:o,d=240<=t&&t<360?0:60<=t&&t<180?s:o,h=t<120?0:180<=t&&t<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=n?n:1}}function l$5(e){const[t,A,i,n]=Object.values(e).map((e=>parseInt(e,16)));return{r:t,g:A,b:i,a:n?n/255:1}}const c$a=/^#?([\da-f])([\da-f])([\da-f])([\da-f])?$|^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})?([\da-f]{2})?$/gi,f$3=/hsla?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function d$2({h:e,s:t,l:A,a:i}){return[u$8({h:a$c(e),s:s$a(0,t,100),l:s$a(0,A,100),a:i$a(i)}),"hsl"]}const g$2=/rgba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b$5({r:e,g:t,b:A,a:i}){return[{r:s$a(0,e,255),g:s$a(0,t,255),b:s$a(0,A,255),a:i$a(i)},"rgb"]}var p$3,v$2,m$1=function(e,t,A,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(e,A):n?n.value=A:t.set(e,A),A},y$1=function(e,t,A,i){if("a"===A&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===A?i:"a"===A?i.call(e):i?i.value:t.get(e)};class w$1{constructor(e){var t,A;p$3.set(this,{r:0,g:0,b:0,a:1}),v$2.set(this,"rgb");const i=w$1.Parsers.map((t=>t(e))).find((e=>"invalid"!==e[1]));i?(t=this,A=this,[{set value(e){m$1(t,p$3,e,"f")}}.value,{set value(e){m$1(A,v$2,e,"f")}}.value]=i):m$1(this,v$2,"invalid","f")}get red(){return y$1(this,p$3,"f").r}get blue(){return y$1(this,p$3,"f").b}get green(){return y$1(this,p$3,"f").g}get alpha(){return y$1(this,p$3,"f").a}get hue(){return h$4(y$1(this,p$3,"f")).h}get saturation(){return h$4(y$1(this,p$3,"f")).s}get lightness(){return h$4(y$1(this,p$3,"f")).l}get format(){return y$1(this,v$2,"f")}isValid(){return"invalid"!==y$1(this,v$2,"f")}rgba(){return y$1(this,p$3,"f")}hsla(){return h$4(y$1(this,p$3,"f"))}hexa({round:e=!1}={}){return function(e,t=!1){let{r:A,g:i,b:n,a:a}=e;a&&(a*=255),t&&([A,i,n,a]=[A,i,n,a].map((e=>e&&Math.round(e))));const[r,s,o,l]=[A,i,n,null!=a?a:255].map((e=>e.toString(16).padStart(2,"0").toUpperCase()));return{r:r,g:s,b:o,a:l}}(y$1(this,p$3,"f"),e)}stringRGB({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(y$1(this,p$3,"f")).map(((e,A)=>n$c(e,t[A])));return e?`rgba(${A}, ${i}, ${n}, ${a})`:`rgb(${A}, ${i}, ${n})`}stringHEX({alpha:e=!0}={}){const[t,A,i,n]=Object.values(this.hexa({round:!0}));return`#${t}${A}${i}${e?n:""}`}stringHSL({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.hsla()).map(((e,A)=>n$c(e,t[A])));return e?`hsla(${A}, ${i}%, ${n}%, ${a})`:`hsl(${A}, ${i}%, ${n}%)`}hueTo(e){var t;const{h:A,s:i,l:n,a:a}=this.hsla(),r="number"==typeof e?a$c(e):Number(null!==(t=e$d[e].match(/\d{1,3}/))&&void 0!==t?t:A);return m$1(this,p$3,u$8({h:r,s:i,l:n,a:a}),"f"),this}hueBy(e){const{h:t,s:A,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:a$c(t+e),s:A,l:i,a:n}),"f"),this}saturationTo(e){const{h:t,l:A,a:i}=this.hsla();return m$1(this,p$3,u$8({h:t,s:s$a(0,e,100),l:A,a:i}),"f"),this}saturateBy(e){const{h:t,s:A,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:t,s:s$a(0,A+e,100),l:i,a:n}),"f"),this}desaturateBy(e){return this.saturateBy(-1*e)}lightnessTo(e){const{h:t,s:A,a:i}=this.hsla();return m$1(this,p$3,u$8({h:t,s:A,l:s$a(0,e,100),a:i}),"f"),this}lighterBy(e){const{h:t,s:A,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:t,s:A,l:s$a(0,i+e,100),a:n}),"f"),this}darkerBy(e){return this.lighterBy(-1*e)}alphaTo(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,e,1)}),"f"),this}alphaBy(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,y$1(this,p$3,"f").a+e,1)}),"f"),this}invert({alpha:e=!1}={}){const{r:t,g:A,b:i,a:n}=y$1(this,p$3,"f");return m$1(this,p$3,{r:255-t,g:255-A,b:255-i,a:e?1-n:n},"f"),this}grayscale(){return this.desaturateBy(100)}rotate(e){return this.hueBy(e)}}function $(){return new w$1({r:o$b(255),g:o$b(255),b:o$b(255),a:Math.random()})}function x$1(e){(e=e.filter(((e,t,A)=>A.indexOf(e)===t))).forEach((e=>e(w$1)))}p$3=new WeakMap,v$2=new WeakMap,w$1.Parsers=[function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,g:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i&&"number"==typeof t}(e))return b$5(e);if("string"==typeof e){g$2.lastIndex=0;const t=g$2.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?2.55:.01):+e));return b$5({r:e,g:A,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,g:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i&&"string"==typeof t}(e))return[l$5(e),"hex"];if("string"==typeof e){c$a.lastIndex=0;const t=c$a.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map((e=>1===e.length?e.repeat(2):e));return[l$5({r:e,g:A,b:i,a:null!=n?n:"FF"}),"hex"]}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,s:A,l:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return d$2(e);if("string"==typeof e){f$3.lastIndex=0;const t=f$3.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return d$2({h:e,s:A,l:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}];const j$1=e=>new w$1(e);r$e.QA;var O$1=r$e.ZP,B=r$e.qt;r$e.MX;var e$c={d:(e,t)=>{for(var A in t)e$c.o(t,A)&&!e$c.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$b={};function t$b(e){const t=e%360;return t<0?t+360:t}e$c.d(a$b,{Z:()=>n$b});const n$b=e=>{e.prototype.harmony=function({type:t="analogous",effect:A="tones",amount:i=5}={}){const{h:n,s:a,l:r,a:s}=this.hsla();switch("monochromatic"===t&&(o=i,i=Math.max(2,Math.min(o,10))),t){case"analogous":return[-30,0,30].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"complementary":return[0,180].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"split-complementary":return[0,150,210].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"double-split-complementary":return[-30,0,30,150,210].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"triad":return[0,120,240].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"rectangle":return[0,60,180,240].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"square":return[0,90,180,270].map((t=>new e({h:t$b(n+t),s:a,l:r,a:s})));case"monochromatic":{const t="tones"===A?a:r;let o=("tints"===A?100-t:t)/i;o="tints"===A?o:-1*o;const l=[t];for(let e=0;enew e({h:n,s:t,l:r,a:s}))):l.map((t=>new e({h:n,s:a,l:t,a:s})))}}var o}};var r$d=a$b.Z,a$a={d:(e,t)=>{for(var A in t)a$a.o(t,A)&&!a$a.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t$a={};a$a.d(t$a,{Z:()=>k});const e$b=6/29,n$a=Math.pow(e$b,3),c$9=Math.pow(29/3,3),r$c={x:.96422,y:1,z:.82521};function u$7(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$9(e,t,A){return Math.max(e,Math.min(t,A))}function o$a(e){const t=e%360;return t<0?t+360:t}function l$4(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}function b$4(e){var t;const{Cmin:A,Cmax:i,H:n,delta:a}=l$4(e),r=(i+A)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:o$a(60*n),s:100*s,l:100*r,a:null!==(t=e.a)&&void 0!==t?t:1}}function h$3(e){var t;const{Cmax:A,H:i,delta:n}=l$4(e),a=0===n?0:n/A;return{h:o$a(60*i),s:100*a,v:100*A,a:null!==(t=e.a)&&void 0!==t?t:1}}function v$1(e){const{h:t,a:A}=b$4(e),{r:i,g:n,b:a}=e;return{h:t,w:Math.min(i,n,a)/2.55,b:100*(1-Math.max(i,n,a)/255),a:A}}function i$9(e){const[t,A,i]=u$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=u$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}function m(e){const t=Object.values(i$9(e)).map(((e,t)=>e/(100*Object.values(r$c)[t]))).map((e=>e>n$a?Math.cbrt(e):(c$9*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}function p$2(e){const{l:t,a:A,b:i}=m(e),n=180*Math.atan2(i,A)/Math.PI;return{l:t,c:Math.sqrt(Math.pow(A,2)+Math.pow(i,2)),h:o$a(n),a:e.a}}function f$2(e){const[t,A,i]=Object.values(i$9(e)).map((e=>e/100)),n=A/r$c.y,a=t&&A&&i?t+15*A+3*i:19,r=4*t/a,s=9*A/a,o=r$c.x+15*r$c.y+3*r$c.z,l=4*r$c.x/o,c=9*r$c.y/o;let d=n>n$a?116*Math.cbrt(n)-16:c$9*n,h=13*d*(r-l),u=13*d*(s-c);return d===Number(-0)&&(d=0),h===Number(-0)&&(h=0),u===Number(-0)&&(u=0),{l:d,u:h,v:u,a:e.a}}function M(e){const{x:t,y:A,z:i}=i$9(e),[n,a,r]=u$7([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[t,A,i]);return{u:n,v:a,w:r,a:e.a}}function w(e){let{r:t,g:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(t,A);t-=r,A-=r,i&&A&&(i/=2,A/=2),r+=A,i+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,y:r,b:i,a:e.a}}function O(e){const{r:t,g:A,b:i,a:n}=e,a=1-Math.max(t,A,i)/255,[r,s,o]=1===a?[0,0,0]:[t,A,i].map((e=>100*(1-e/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:n}}function j(e){const{h:t,s:A,v:i,a:n}=e,a=i/100,r=a*(A/100),s=r*(1-Math.abs(t/60%2-1)),o=a-r,l=t<60||300<=t&&t<360?r:120<=t&&t<240?0:s,c=240<=t&&t<360?0:60<=t&&t<180?r:s,d=t<120?0:180<=t&&t<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=n?n:1}}function x(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=u$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=u$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return s$9(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}function y(e){const{l:t,a:A,b:i}=e,n=(t+16)/116,a=n+A/500,r=n-i/200,s=Object.values(r$c),[o,l,c]=[a,n,r].map(((e,t)=>(e>e$b?Math.pow(e,3):3*Math.pow(e$b,2)*(e-4/29))*s[t]*100));return x({x:o,y:l,z:c,a:e.alpha})}const k=e=>{e.prototype.mix=function({color:t="#fff",ratio:A=.5,colorspace:i="luv"}={}){const n=this.rgba(),a=(t instanceof e?t:new e(t)).rgba();let r,s;switch(A=s$9(0,A,1),i){case"hsl":r=Object.values(b$4(n)),s=Object.values(b$4(a));break;case"hsv":r=Object.values(h$3(n)),s=Object.values(h$3(a));break;case"hwb":r=Object.values(v$1(n)),s=Object.values(v$1(a));break;case"lab":r=Object.values(m(n)),s=Object.values(m(a));break;case"lch":r=Object.values(p$2(n)),s=Object.values(p$2(a));break;case"luv":r=Object.values(f$2(n)),s=Object.values(f$2(a));break;case"ryb":r=Object.values(w(n)),s=Object.values(w(a));break;case"uvw":r=Object.values(M(n)),s=Object.values(M(a));break;case"xyz":r=Object.values(i$9(n)),s=Object.values(i$9(a));break;case"cmyk":r=Object.values(O(n)),s=Object.values(O(a));break;default:r=Object.values(n),s=Object.values(a)}const[o,l,c,d,h]=r.map(((e,t)=>r[t]*(1-A)+s[t]*A));switch(i){case"hsl":return new e(function(e){const{h:t,s:A,l:i,a:n}=e,a=i/100,r=A/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(t/60%2-1)),l=a-s/2,c=t<60||300<=t&&t<360?s:120<=t&&t<240?0:o,d=240<=t&&t<360?0:60<=t&&t<180?s:o,h=t<120?0:180<=t&&t<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=n?n:1}}({h:o,s:l,l:c,a:d}));case"hsv":return new e(j({h:o,s:l,v:c,a:d}));case"hwb":return new e(function(e){const{h:t,b:A,w:i,a:n}=e;return j({h:t,s:100===A?0:100-i/(100-A)*100,v:100-A,a:n})}({h:o,w:l,b:c,a:d}));case"lab":return new e(y({l:o,a:l,b:c,alpha:d}));case"lch":return new e(function(e){const{l:t,c:A,h:i}=e;return y({l:t,a:A*Math.cos(i*Math.PI/180),b:A*Math.sin(i*Math.PI/180),alpha:e.a})}({l:o,c:l,h:c,a:d}));case"luv":return new e(function(e){const{l:t,u:A,v:i}=e,n=t>c$9*n$a?Math.pow((t+16)/116,3):t/c$9,a=r$c.x+15*r$c.y+3*r$c.z,r=(52*t/(A&&t?A+13*t*(4*r$c.x/a):1)-1)/3,s=-5*n,o=n*(39*t/(i&&t?i+13*t*(9*r$c.y/a):1)-5),l=r===-1/3?o-s:(o-s)/(r- -1/3);return x({x:100*l,y:100*n,z:100*(r*l+s),a:e.a})}({l:o,u:l,v:c,a:d}));case"ryb":return new e(function(e){let{r:t,y:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(A,i);A-=r,i-=r,i&&r&&(i*=2,r*=2),t+=A,r+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,g:r,b:i,a:e.a}}({r:o,y:l,b:c,a:d}));case"uvw":return new e(function(e){const{u:t,v:A,w:i}=e,[n,a,r]=u$7([[1.5,0,0],[0,1,0],[1.5,-3,2]],[t,A,i]);return x({x:n,y:a,z:r,a:e.a})}({u:o,v:l,w:c,a:d}));case"xyz":return new e(x({x:o,y:l,z:c,a:d}));case"cmyk":return new e(function(e){const{c:t,m:A,y:i,k:n,a:a}=e,[r,s,o]=[t,A,i].map((e=>255*(1-e/100)*(1-n/100)));return{r:r,g:s,b:o,a:a}}({c:o,m:l,y:c,k:d,a:h}));default:return new e({r:o,g:l,b:c,a:d})}}};var z=t$a.Z,r$b={d:(e,t)=>{for(var A in t)r$b.o(t,A)&&!r$b.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},b$3={};r$b.d(b$3,{Z:()=>n$9});const g$1=["rgb(0,0,0)","rgb(0,0,51)","rgb(0,0,102)","rgb(0,0,153)","rgb(0,0,204)","rgb(0,0,255)","rgb(0,51,0)","rgb(0,51,51)","rgb(0,51,102)","rgb(0,51,153)","rgb(0,51,204)","rgb(0,51,255)","rgb(0,102,0)","rgb(0,102,51)","rgb(0,102,102)","rgb(0,102,153)","rgb(0,102,204)","rgb(0,102,255)","rgb(0,153,0)","rgb(0,153,51)","rgb(0,153,102)","rgb(0,153,153)","rgb(0,153,204)","rgb(0,153,255)","rgb(0,204,0)","rgb(0,204,51)","rgb(0,204,102)","rgb(0,204,153)","rgb(0,204,204)","rgb(0,204,255)","rgb(0,255,0)","rgb(0,255,51)","rgb(0,255,102)","rgb(0,255,153)","rgb(0,255,204)","rgb(0,255,255)","rgb(51,0,0)","rgb(51,0,51)","rgb(51,0,102)","rgb(51,0,153)","rgb(51,0,204)","rgb(51,0,255)","rgb(51,51,0)","rgb(51,51,51)","rgb(51,51,102)","rgb(51,51,153)","rgb(51,51,204)","rgb(51,51,255)","rgb(51,102,0)","rgb(51,102,51)","rgb(51,102,102)","rgb(51,102,153)","rgb(51,102,204)","rgb(51,102,255)","rgb(51,153,0)","rgb(51,153,51)","rgb(51,153,102)","rgb(51,153,153)","rgb(51,153,204)","rgb(51,153,255)","rgb(51,204,0)","rgb(51,204,51)","rgb(51,204,102)","rgb(51,204,153)","rgb(51,204,204)","rgb(51,204,255)","rgb(51,255,0)","rgb(51,255,51)","rgb(51,255,102)","rgb(51,255,153)","rgb(51,255,204)","rgb(51,255,255)","rgb(102,0,0)","rgb(102,0,51)","rgb(102,0,102)","rgb(102,0,153)","rgb(102,0,204)","rgb(102,0,255)","rgb(102,51,0)","rgb(102,51,51)","rgb(102,51,102)","rgb(102,51,153)","rgb(102,51,204)","rgb(102,51,255)","rgb(102,102,0)","rgb(102,102,51)","rgb(102,102,102)","rgb(102,102,153)","rgb(102,102,204)","rgb(102,102,255)","rgb(102,153,0)","rgb(102,153,51)","rgb(102,153,102)","rgb(102,153,153)","rgb(102,153,204)","rgb(102,153,255)","rgb(102,204,0)","rgb(102,204,51)","rgb(102,204,102)","rgb(102,204,153)","rgb(102,204,204)","rgb(102,204,255)","rgb(102,255,0)","rgb(102,255,51)","rgb(102,255,102)","rgb(102,255,153)","rgb(102,255,204)","rgb(102,255,255)","rgb(153,0,0)","rgb(153,0,51)","rgb(153,0,102)","rgb(153,0,153)","rgb(153,0,204)","rgb(153,0,255)","rgb(153,51,0)","rgb(153,51,51)","rgb(153,51,102)","rgb(153,51,153)","rgb(153,51,204)","rgb(153,51,255)","rgb(153,102,0)","rgb(153,102,51)","rgb(153,102,102)","rgb(153,102,153)","rgb(153,102,204)","rgb(153,102,255)","rgb(153,153,0)","rgb(153,153,51)","rgb(153,153,102)","rgb(153,153,153)","rgb(153,153,204)","rgb(153,153,255)","rgb(153,204,0)","rgb(153,204,51)","rgb(153,204,102)","rgb(153,204,153)","rgb(153,204,204)","rgb(153,204,255)","rgb(153,255,0)","rgb(153,255,51)","rgb(153,255,102)","rgb(153,255,153)","rgb(153,255,204)","rgb(153,255,255)","rgb(204,0,0)","rgb(204,0,51)","rgb(204,0,102)","rgb(204,0,153)","rgb(204,0,204)","rgb(204,0,255)","rgb(204,51,0)","rgb(204,51,51)","rgb(204,51,102)","rgb(204,51,153)","rgb(204,51,204)","rgb(204,51,255)","rgb(204,102,0)","rgb(204,102,51)","rgb(204,102,102)","rgb(204,102,153)","rgb(204,102,204)","rgb(204,102,255)","rgb(204,153,0)","rgb(204,153,51)","rgb(204,153,102)","rgb(204,153,153)","rgb(204,153,204)","rgb(204,153,255)","rgb(204,204,0)","rgb(204,204,51)","rgb(204,204,102)","rgb(204,204,153)","rgb(204,204,204)","rgb(204,204,255)","rgb(204,255,0)","rgb(204,255,51)","rgb(204,255,102)","rgb(204,255,153)","rgb(204,255,204)","rgb(204,255,255)","rgb(255,0,0)","rgb(255,0,51)","rgb(255,0,102)","rgb(255,0,153)","rgb(255,0,204)","rgb(255,0,255)","rgb(255,51,0)","rgb(255,51,51)","rgb(255,51,102)","rgb(255,51,153)","rgb(255,51,204)","rgb(255,51,255)","rgb(255,102,0)","rgb(255,102,51)","rgb(255,102,102)","rgb(255,102,153)","rgb(255,102,204)","rgb(255,102,255)","rgb(255,153,0)","rgb(255,153,51)","rgb(255,153,102)","rgb(255,153,153)","rgb(255,153,204)","rgb(255,153,255)","rgb(255,204,0)","rgb(255,204,51)","rgb(255,204,102)","rgb(255,204,153)","rgb(255,204,204)","rgb(255,204,255)","rgb(255,255,0)","rgb(255,255,51)","rgb(255,255,102)","rgb(255,255,153)","rgb(255,255,204)","rgb(255,255,255)"];function t$9(e){return(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function o$9(e,t=[0,0,0,1]){var A,i;return null!==(i=null===(A=e.match(/\d{1,3}/g))||void 0===A?void 0:A.map((e=>+e)))&&void 0!==i?i:t}const n$9=e=>{e.prototype.brightness=function({precision:e=4,percentage:t=!1}={}){const{r:A,g:i,b:n}=this.rgba(),a=+((.299*A+.587*i+.114*n)/255).toFixed(e);return t?100*a:a},e.prototype.luminance=function({precision:e=4,percentage:t=!1}={}){const{r:A,g:i,b:n}=this.rgba(),a=+(.2126*t$9(A)+.7152*t$9(i)+.0722*t$9(n)).toFixed(e);return t?100*a:a},e.prototype.contrast=function({bgColor:t="#fff",precision:A=4,ratio:i=!1}={}){const n=this.luminance(),a=(t instanceof e?t:new e(t)).luminance(),r=((Math.max(n,a)+.05)/(Math.min(n,a)+.05)).toFixed(A);return i?r+":1":+r},e.prototype.readableOn=function({bgColor:e="#fff",size:t="body",level:A="minimum"}={}){const i=this.contrast({bgColor:e});return"body"===t&&"enhanced"===A?i>=7:"large"===t&&"minimum"===A?i>=3:i>=4.5},e.prototype.equalTo=function(t="#fff"){const A=Object.values(this.rgba()),i=Object.values((t instanceof e?t:new e(t)).rgba());return A.toString()===i.toString()},e.prototype.isLight=function(){return this.brightness()>=.5},e.prototype.isDark=function(){return!this.isLight()},e.prototype.isCool=function(){const{h:e}=this.hsla();return 75<=e&&e<255},e.prototype.isWarm=function(){return!this.isCool()},e.prototype.isTinted=function(){return this.hsla().l>50},e.prototype.isShaded=function(){return this.hsla().l<50},e.prototype.isToned=function(){return this.hsla().s<100},e.prototype.isPureHue=function({reason:e=!0}={}){return this.isTinted()?!!e&&{pure:!1,reason:"tinted"}:this.isShaded()?!!e&&{pure:!1,reason:"shaded"}:this.isToned()?!!e&&{pure:!1,reason:"toned"}:!e||{pure:!0,reason:"N/A"}},e.prototype.closestCool=function(){const{h:e}=this.hsla();return this.isCool()?this:this.hueTo(e<75?75:254)},e.prototype.closestWarm=function(){const{h:e}=this.hsla();return this.isWarm()?this:this.hueTo(e<165?74:255)},e.prototype.closestPureHue=function(){const{h:t,a:A}=this.hsla(),{r:i,g:n,b:a,a:r}=function(e){const{h:t,s:A,l:i,a:n}=e,a=i/100,r=A/100,s=(1-Math.abs(2*a-1))*r,o=s*(1-Math.abs(t/60%2-1)),l=a-s/2,c=t<60||300<=t&&t<360?s:120<=t&&t<240?0:o,d=240<=t&&t<360?0:60<=t&&t<180?s:o,h=t<120?0:180<=t&&t<300?s:o,[u,g,p]=[c,d,h].map((e=>255*(e+l)));return{r:u,g:g,b:p,a:null!=n?n:1}}({h:t,s:100,l:50,a:A});return new e({r:i,g:n,b:a,a:r})},e.prototype.closestWebSafe=function(){const{r:t,g:A,b:i,a:n}=this.rgba();let[a,r,s]=new Array(3).fill(0),o=Number.POSITIVE_INFINITY,l={r:t,g:A,b:i,a:n};for(let e=0;e{for(var A in t)r$a.o(t,A)&&!r$a.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},g={};r$a.d(g,{Z:()=>a$9});const e$9={maroon:"rgb(128,0,0)","dark red":"rgb(139,0,0)",brown:"rgb(165,42,42)",firebrick:"rgb(178,34,34)",crimson:"rgb(220,20,60)",red:"rgb(255,0,0)",tomato:"rgb(255,99,71)",coral:"rgb(255,127,80)","indian red":"rgb(205,92,92)","light coral":"rgb(240,128,128)","dark salmon":"rgb(233,150,122)",salmon:"rgb(250,128,114)","light salmon":"rgb(255,160,122)","orange red":"rgb(255,69,0)","dark orange":"rgb(255,140,0)",orange:"rgb(255,165,0)",gold:"rgb(255,215,0)","dark golden rod":"rgb(184,134,11)","golden rod":"rgb(218,165,32)","pale golden rod":"rgb(238,232,170)","dark khaki":"rgb(189,183,107)",khaki:"rgb(240,230,140)",olive:"rgb(128,128,0)",yellow:"rgb(255,255,0)","yellow green":"rgb(154,205,50)","dark olive green":"rgb(85,107,47)","olive drab":"rgb(107,142,35)","lawn green":"rgb(124,252,0)","chart reuse":"rgb(127,255,0)","green yellow":"rgb(173,255,47)","dark green":"rgb(0,100,0)",green:"rgb(0,128,0)","forest green":"rgb(34,139,34)",lime:"rgb(0,255,0)","lime green":"rgb(50,205,50)","light green":"rgb(144,238,144)","pale green":"rgb(152,251,152)","dark sea green":"rgb(143,188,143)","medium spring green":"rgb(0,250,154)","spring green":"rgb(0,255,127)","sea green":"rgb(46,139,87)","medium aqua marine":"rgb(102,205,170)","medium sea green":"rgb(60,179,113)","light sea green":"rgb(32,178,170)","dark slate gray":"rgb(47,79,79)",teal:"rgb(0,128,128)","dark cyan":"rgb(0,139,139)",cyan:"rgb(0,255,255)",aqua:"rgb(0,255,255)","light cyan":"rgb(224,255,255)","dark turquoise":"rgb(0,206,209)",turquoise:"rgb(64,224,208)","medium turquoise":"rgb(72,209,204)","pale turquoise":"rgb(175,238,238)","aqua marine":"rgb(127,255,212)","powder blue":"rgb(176,224,230)","cadet blue":"rgb(95,158,160)","steel blue":"rgb(70,130,180)","corn flower blue":"rgb(100,149,237)","deep sky blue":"rgb(0,191,255)","dodger blue":"rgb(30,144,255)","light blue":"rgb(173,216,230)","sky blue":"rgb(135,206,235)","light sky blue":"rgb(135,206,250)","midnight blue":"rgb(25,25,112)",navy:"rgb(0,0,128)","dark blue":"rgb(0,0,139)","medium blue":"rgb(0,0,205)",blue:"rgb(0,0,255)","royal blue":"rgb(65,105,225)","blue violet":"rgb(138,43,226)",indigo:"rgb(75,0,130)","dark slate blue":"rgb(72,61,139)","slate blue":"rgb(106,90,205)","medium slate blue":"rgb(123,104,238)","medium purple":"rgb(147,112,219)","dark magenta":"rgb(139,0,139)","dark violet":"rgb(148,0,211)","dark orchid":"rgb(153,50,204)","medium orchid":"rgb(186,85,211)",purple:"rgb(128,0,128)",thistle:"rgb(216,191,216)",plum:"rgb(221,160,221)",violet:"rgb(238,130,238)",magenta:"rgb(255,0,255)",fuchsia:"rgb(255,0,255)",orchid:"rgb(218,112,214)","medium violet red":"rgb(199,21,133)","pale violet red":"rgb(219,112,147)","deep pink":"rgb(255,20,147)","hot pink":"rgb(255,105,180)","light pink":"rgb(255,182,193)",pink:"rgb(255,192,203)","antique white":"rgb(250,235,215)",beige:"rgb(245,245,220)",bisque:"rgb(255,228,196)","blanched almond":"rgb(255,235,205)",wheat:"rgb(245,222,179)","corn silk":"rgb(255,248,220)","lemon chiffon":"rgb(255,250,205)","light golden rod yellow":"rgb(250,250,210)","light yellow":"rgb(255,255,224)","saddle brown":"rgb(139,69,19)",sienna:"rgb(160,82,45)",chocolate:"rgb(210,105,30)",peru:"rgb(205,133,63)","sandy brown":"rgb(244,164,96)","burly wood":"rgb(222,184,135)",tan:"rgb(210,180,140)","rosy brown":"rgb(188,143,143)",moccasin:"rgb(255,228,181)","navajo white":"rgb(255,222,173)","peach puff":"rgb(255,218,185)","misty rose":"rgb(255,228,225)","lavender blush":"rgb(255,240,245)",linen:"rgb(250,240,230)","old lace":"rgb(253,245,230)","papaya whip":"rgb(255,239,213)","sea shell":"rgb(255,245,238)","mint cream":"rgb(245,255,250)","slate gray":"rgb(112,128,144)","light slate gray":"rgb(119,136,153)","light steel blue":"rgb(176,196,222)",lavender:"rgb(230,230,250)","floral white":"rgb(255,250,240)","alice blue":"rgb(240,248,255)","ghost white":"rgb(248,248,255)",honeydew:"rgb(240,255,240)",ivory:"rgb(255,255,240)",azure:"rgb(240,255,255)",snow:"rgb(255,250,250)",black:"rgb(0,0,0)","dim gray":"rgb(105,105,105)","dim grey":"rgb(105,105,105)",gray:"rgb(128,128,128)",grey:"rgb(128,128,128)","dark gray":"rgb(169,169,169)","dark grey":"rgb(169,169,169)",silver:"rgb(192,192,192)","light gray":"rgb(211,211,211)","light grey":"rgb(211,211,211)",gainsboro:"rgb(220,220,220)",gainsborough:"rgb(220,220,220)","white smoke":"rgb(245,245,245)",white:"rgb(255,255,255)",transparent:"rgba(0,0,0,0)"};function b$2(e,t=[0,0,0,1]){var A,i;return null!==(i=null===(A=e.match(/\d{1,3}/g))||void 0===A?void 0:A.map((e=>+e)))&&void 0!==i?i:t}const a$9=e=>{e.prototype.name=function({exact:e=!0}={}){const{r:t,g:A,b:i,a:n}=this.rgba();if(0===n)return"transparent";const[a,r]=[Object.keys(e$9),Object.values(e$9)];let s;if(e){const e=this.stringRGB({alpha:!1}).replace(/\s/g,"");s=a.find((t=>e$9[t]===e))}else{let e=Number.POSITIVE_INFINITY;for(let n=0;n{for(var A in t)t$8.o(t,A)&&!t$8.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$8={};t$8.d(a$8,{Z:()=>d$1});const n$8=6/29,r$9=Math.pow(n$8,3),o$8=Math.pow(29/3,3),e$8={x:.96422,y:1,z:.82521};function c$8(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$8(e,t,A){return Math.max(e,Math.min(t,A))}function u$6(e){const t=e%360;return t<0?t+360:t}function i$8(e){const{l:t,a:A,b:i}=function(e){const t=Object.values(function(e){const[t,A,i]=c$8([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=c$8([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e)).map(((e,t)=>e/(100*Object.values(e$8)[t]))).map((e=>e>r$9?Math.cbrt(e):(o$8*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}(e),n=180*Math.atan2(i,A)/Math.PI;return{l:t,c:Math.sqrt(Math.pow(A,2)+Math.pow(i,2)),h:u$6(n),a:e.a}}function h$2(e){const{l:t,c:A,h:i}=e;return function(e){const{l:t,a:A,b:i}=e,n=(t+16)/116,a=n+A/500,r=n-i/200,s=Object.values(e$8),[o,l,c]=[a,n,r].map(((e,t)=>(e>n$8?Math.pow(e,3):3*Math.pow(n$8,2)*(e-4/29))*s[t]*100));return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=c$8([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=c$8([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return s$8(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:o,y:l,z:c,a:e.alpha})}({l:t,a:A*Math.cos(i*Math.PI/180),b:A*Math.sin(i*Math.PI/180),alpha:e.a})}const l$2=/lcha?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function p$1({l:e,c:t,h:A,a:i}){return[h$2({l:s$8(0,e,100),c:s$8(0,t,230),h:u$6(A),a:(n=i,void 0!==n?s$8(0,n,1):1)}),"lch"];var n}function f$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,c:A,h:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return p$1(e);if("string"==typeof e){l$2.lastIndex=0;const t=l$2.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?1:1===t?2.3:2===t?3.59:.01):+e));return p$1({l:e,c:A,h:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d$1=e=>{e.prototype.lcha=function(){return i$8(this.rgba())},e.prototype.stringLCH=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.lcha()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`lcha(${A}%, ${i}, ${n}, ${a})`:`lch(${A}%, ${i}, ${n})`},e.Parsers.push(f$1)};var b$1=a$8.Z,t$7={d:(e,t)=>{for(var A in t)t$7.o(t,A)&&!t$7.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$7={};t$7.d(n$7,{Z:()=>l$1});const r$8=Math.pow(6/29,3),e$7=Math.pow(29/3,3);function o$7(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function a$7(e,t,A){return Math.max(e,Math.min(t,A))}function u$5(e){const{l:t,u:A,v:i}=e,n=t>e$7*r$8?Math.pow((t+16)/116,3):t/e$7,a=(52*t/(A&&t?A+13*t*.20916005282038627:1)-1)/3,r=-5*n,s=n*(39*t/(i&&t?i+13*t*(9/18.43985):1)-5),o=a===-1/3?s-r:(s-r)/(a- -1/3);return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=o$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=o$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return a$7(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:100*o,y:100*n,z:100*(a*o+r),a:e.a})}const c$7=/color\s*\(\s*luva?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$7({l:e,u:t,v:A,a:i}){return[u$5({l:a$7(0,e,100),u:a$7(-100,t,100),v:a$7(-100,A,100),a:(n=i,void 0!==n?a$7(0,n,1):1)}),"luv"];var n}function i$7(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,u:A,v:i}=e;return void 0!==t&&void 0!==A&&null!=i}(e))return s$7(e);if("string"==typeof e){c$7.lastIndex=0;const t=c$7.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?1:.01):+e));return s$7({l:e,u:A,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const l$1=e=>{e.prototype.luva=function(){return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=o$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=o$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e)).map((e=>e/100)),n=A/1,a=t&&A&&i?t+15*A+3*i:19,r=4*t/a,s=9*A/a;let o=n>r$8?116*Math.cbrt(n)-16:e$7*n,l=13*o*(r-.20916005282038627),c=13*o*(s-.48807338454488514);return o===Number(-0)&&(o=0),l===Number(-0)&&(l=0),c===Number(-0)&&(c=0),{l:o,u:l,v:c,a:e.a}}(this.rgba())},e.prototype.stringLUV=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.luva()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(luva ${A}%, ${i}%, ${n}%, ${a})`:`color(luv ${A}%, ${i}%, ${n}%)`},e.Parsers.push(i$7)};var v=n$7.Z,t$6={d:(e,t)=>{for(var A in t)t$6.o(t,A)&&!t$6.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$6={};t$6.d(a$6,{Z:()=>d});const n$6=6/29,r$7=Math.pow(n$6,3),e$6=Math.pow(29/3,3),o$6={x:.96422,y:1,z:.82521};function c$6(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$6(e,t,A){return Math.max(e,Math.min(t,A))}function u$4(e){return void 0!==e?s$6(0,e,1):1}function i$6(e){const t=Object.values(function(e){const[t,A,i]=c$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=c$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e)).map(((e,t)=>e/(100*Object.values(o$6)[t]))).map((e=>e>r$7?Math.cbrt(e):(e$6*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}function l(e){const{l:t,a:A,b:i}=e,n=(t+16)/116,a=n+A/500,r=n-i/200,s=Object.values(o$6),[o,l,c]=[a,n,r].map(((e,t)=>(e>n$6?Math.pow(e,3):3*Math.pow(n$6,2)*(e-4/29))*s[t]*100));return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=c$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=c$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return s$6(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:o,y:l,z:c,a:e.alpha})}const p=/laba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b({l:e,a:t,b:A,alpha:i}){return[l({l:s$6(0,e,100),a:s$6(-160,t,160),b:s$6(-160,A,160),alpha:u$4(i)}),"lab"]}function f(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,a:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return b(e);if("string"==typeof e){p.lastIndex=0;const t=p.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?1:.01):+e));return b({l:e,a:A,b:i,alpha:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d=e=>{e.prototype.laba=function(){return i$6(this.rgba())},e.prototype.stringLAB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.laba()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`laba(${A}%, ${i}, ${n}, ${a})`:`lab(${A}%, ${i}, ${n})`},e.Parsers.push(f)};var h$1=a$6.Z,t$5={d:(e,t)=>{for(var A in t)t$5.o(t,A)&&!t$5.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$5={};function r$6(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function o$5(e,t,A){return Math.max(e,Math.min(t,A))}function e$5(e){const{u:t,v:A,w:i}=e,[n,a,r]=r$6([[1.5,0,0],[0,1,0],[1.5,-3,2]],[t,A,i]);return function(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=r$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=r$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return o$5(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}({x:n,y:a,z:r,a:e.a})}t$5.d(n$5,{Z:()=>s$5});const a$5=/color\s*\(\s*uvwa?\s*(\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function u$3({u:e,v:t,w:A,a:i}){return[e$5({u:o$5(0,e,200/3*.96422),v:o$5(0,t,100),w:o$5(-48.211,A,191.2605),a:(n=i,void 0!==n?o$5(0,n,1):1)}),"uvw"];var n}function c$5(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{u:t,v:A,w:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return u$3(e);if("string"==typeof e){a$5.lastIndex=0;const t=a$5.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return u$3({u:e,v:A,w:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const s$5=e=>{e.prototype.uvwa=function(){return function(e){const{x:t,y:A,z:i}=function(e){const[t,A,i]=r$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=r$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(e),[n,a,r]=r$6([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[t,A,i]);return{u:n,v:a,w:r,a:e.a}}(this.rgba())},e.prototype.stringUVW=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.uvwa()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(uvwa ${A}, ${i}, ${n}, ${a})`:`color(uvw ${A}, ${i}, ${n})`},e.Parsers.push(c$5)};var i$5=n$5.Z,t$4={d:(e,t)=>{for(var A in t)t$4.o(t,A)&&!t$4.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$4={};function r$5(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function o$4(e,t,A){return Math.max(e,Math.min(t,A))}function e$4(e){const[t,A,i]=Object.values(function(e){const[t,A,i]=r$5([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}(e)).map((e=>e/100)),[n,a,r]=r$5([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,A,i]).map((e=>{return o$4(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:n,g:a,b:r,a:e.a}}t$4.d(n$4,{Z:()=>u$2});const a$4=/color\s*\(\s*xyza?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$4({x:e,y:t,z:A,a:i}){return[e$4({x:o$4(0,e,96.422),y:o$4(0,t,100),z:o$4(0,A,82.521),a:(n=i,void 0!==n?o$4(0,n,1):1)}),"xyz"];var n}function c$4(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{x:t,y:A,z:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return s$4(e);if("string"==typeof e){a$4.lastIndex=0;const t=a$4.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return s$4({x:e,y:A,z:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$2=e=>{e.prototype.xyza=function(){return function(e){const[t,A,i]=r$5([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,A,i]=r$5([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:A,z:i,a:e.a}}({x:t,y:A,z:i,a:e.a})}(this.rgba())},e.prototype.stringXYZ=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.xyza()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(xyza ${A}, ${i}, ${n}, ${a})`:`color(xyz ${A}, ${i}, ${n})`},e.Parsers.push(c$4)};var i$4=n$4.Z,t$3={d:(e,t)=>{for(var A in t)t$3.o(t,A)&&!t$3.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$3={};function r$4(e,t,A){return Math.max(e,Math.min(t,A))}function a$3(e){const t=e%360;return t<0?t+360:t}function o$3(e){const{h:t,a:A}=function(e){var t;const{Cmin:A,Cmax:i,H:n,delta:a}=function(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}(e),r=(i+A)/2,s=0===a?0:a/(1-Math.abs(2*r-1));return{h:a$3(60*n),s:100*s,l:100*r,a:null!==(t=e.a)&&void 0!==t?t:1}}(e),{r:i,g:n,b:a}=e;return{h:t,w:Math.min(i,n,a)/2.55,b:100*(1-Math.max(i,n,a)/255),a:A}}function e$3(e){const{h:t,b:A,w:i,a:n}=e;return function(e){const{h:t,s:A,v:i,a:n}=e,a=i/100,r=a*(A/100),s=r*(1-Math.abs(t/60%2-1)),o=a-r,l=t<60||300<=t&&t<360?r:120<=t&&t<240?0:s,c=240<=t&&t<360?0:60<=t&&t<180?r:s,d=t<120?0:180<=t&&t<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=n?n:1}}({h:t,s:100===A?0:100-i/(100-A)*100,v:100-A,a:n})}t$3.d(n$3,{Z:()=>u$1});const s$3=/hwba?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function i$3({h:e,w:t,b:A,a:i}){return[e$3({h:a$3(e),w:r$4(0,t,100),b:r$4(0,A,100),a:(n=i,void 0!==n?r$4(0,n,1):1)}),"hwb"];var n}function c$3(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,w:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return i$3(e);if("string"==typeof e){s$3.lastIndex=0;const t=s$3.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return i$3({h:e,w:A,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$1=e=>{e.prototype.hwba=function(){return o$3(this.rgba())},e.prototype.stringHWB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.hwba()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`hwba(${a$3(A)}, ${i}%, ${n}%, ${a})`:`hwb(${a$3(A)}, ${i}%, ${n}%)`},e.Parsers.push(c$3)};var h=n$3.Z,t$2={d:(e,t)=>{for(var A in t)t$2.o(t,A)&&!t$2.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$2={};function r$3(e,t,A){return Math.max(e,Math.min(t,A))}function s$2(e){const t=e%360;return t<0?t+360:t}function e$2(e){const{h:t,s:A,v:i,a:n}=e,a=i/100,r=a*(A/100),s=r*(1-Math.abs(t/60%2-1)),o=a-r,l=t<60||300<=t&&t<360?r:120<=t&&t<240?0:s,c=240<=t&&t<360?0:60<=t&&t<180?r:s,d=t<120?0:180<=t&&t<300?r:s,[h,u,g]=[l,c,d].map((e=>255*(e+o)));return{r:h,g:u,b:g,a:null!=n?n:1}}t$2.d(n$2,{Z:()=>c$2});const a$2=/hsva?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o$2({h:e,s:t,v:A,a:i}){return[e$2({h:s$2(e),s:r$3(0,t,100),v:r$3(0,A,100),a:(n=i,void 0!==n?r$3(0,n,1):1)}),"hsv"];var n}function i$2(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,s:A,v:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return o$2(e);if("string"==typeof e){a$2.lastIndex=0;const t=a$2.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return o$2({h:e,s:A,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const c$2=e=>{e.prototype.hsva=function(){return function(e){var t;const{Cmax:A,H:i,delta:n}=function(e){const[t,A,i]=Object.values(e).map((e=>e/255)),n=Math.max(t,A,i),a=Math.min(t,A,i),r=n-a;return{Cmin:a,Cmax:n,H:0===r?0:n===t?(A-i)/r%6:n===A?(i-t)/r+2:(t-A)/r+4,delta:r}}(e),a=0===n?0:n/A;return{h:s$2(60*i),s:100*a,v:100*A,a:null!==(t=e.a)&&void 0!==t?t:1}}(this.rgba())},e.prototype.stringHSV=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.hsva()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`hsva(${s$2(A)}, ${i}%, ${n}%, ${a})`:`hsv(${s$2(A)}, ${i}%, ${n}%)`},e.Parsers.push(i$2)};var u=n$2.Z,t$1={d:(e,t)=>{for(var A in t)t$1.o(t,A)&&!t$1.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},r$2={};function n$1(e,t,A){return Math.max(e,Math.min(t,A))}function o$1(e){let{r:t,y:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(A,i);A-=r,i-=r,i&&r&&(i*=2,r*=2),t+=A,r+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,g:r,b:i,a:e.a}}t$1.d(r$2,{Z:()=>i$1});const a$1=/color\s*\(\s*ryba?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function e$1({r:e,y:t,b:A,a:i}){return[o$1({r:n$1(0,e,255),y:n$1(0,t,255),b:n$1(0,A,255),a:(n=i,void 0!==n?n$1(0,n,1):1)}),"ryb"];var n}function s$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,y:A,b:i}=e;return void 0!==t&&void 0!==A&&void 0!==i}(e))return e$1(e);if("string"==typeof e){a$1.lastIndex=0;const t=a$1.exec(e);if(t){const[e,A,i,n]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?2.55:.01):+e));return e$1({r:e,y:A,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i$1=e=>{e.prototype.ryba=function(){return function(e){let{r:t,g:A,b:i}=e;const n=Math.min(t,A,i);[t,A,i]=[t,A,i].map((e=>e-n));const a=Math.max(t,A,i);let r=Math.min(t,A);t-=r,A-=r,i&&A&&(i/=2,A/=2),r+=A,i+=A;const s=Math.max(t,r,i);if(s){const e=a/s;[t,r,i]=[t,r,i].map((t=>t*e))}return[t,r,i]=[t,r,i].map((e=>e+n)),{r:t,y:r,b:i,a:e.a}}(this.rgba())},e.prototype.stringRYB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[A,i,n,a]=Object.values(this.ryba()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`color(ryba ${A}, ${i}, ${n}, ${a})`:`color(ryb ${A}, ${i}, ${n})`},e.Parsers.push(s$1)};var c$1=r$2.Z,t={d:(e,A)=>{for(var i in A)t.o(A,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:A[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n={};function e(e,t,A){return Math.max(e,Math.min(t,A))}function r$1(e){const{c:t,m:A,y:i,k:n,a:a}=e,[r,s,o]=[t,A,i].map((e=>255*(1-e/100)*(1-n/100)));return{r:r,g:s,b:o,a:a}}t.d(n,{Z:()=>i});const c=/device-cmyka?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?),?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o({c:t,m:A,y:i,k:n,a:a}){return[r$1({c:e(0,t,100),m:e(0,A,100),y:e(0,i,100),k:e(0,n,100),a:(r=a,void 0!==r?e(0,r,1):1)}),"cmyk"];var r}function a(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{c:t,m:A,y:i,k:n}=e;return void 0!==t&&void 0!==A&&void 0!==i&&void 0!==n}(e))return o(e);if("string"==typeof e){c.lastIndex=0;const t=c.exec(e);if(t){const[e,A,i,n,a]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<4?1:.01):+e));return o({c:e,m:A,y:i,k:n,a:a})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i=e=>{e.prototype.cmyka=function(){return function(e){const{r:t,g:A,b:i,a:n}=e,a=1-Math.max(t,A,i)/255,[r,s,o]=1===a?[0,0,0]:[t,A,i].map((e=>100*(1-e/255-a)/(1-a)));return{c:r,m:s,y:o,k:100*a,a:n}}(this.rgba())},e.prototype.stringCMYK=function({alpha:e=!0,precision:t=[0,0,0,0,1]}={}){const[A,i,n,a,r]=Object.values(this.cmyka()).map(((e,A)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[A])));return e?`device-cmyk(${A}, ${i}, ${n}, ${a}, ${r})`:`device-cmyk(${A}, ${i}, ${n}, ${a})`},e.Parsers.push(a)};var s=n.Z;class ExcalidrawScene{constructor(e=[]){this.type="excalidraw",this.version=2,this.source=GITHUB_RELEASES+PLUGIN_VERSION,this.elements=[],this.elements=e}toExJSON(){return Object.assign(Object.assign({},this),{elements:this.elements.map((e=>Object.assign({},e)))})}}var ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array;function create$1(){var e=new ARRAY_TYPE(16);return ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function clone(e){var t=new ARRAY_TYPE(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function fromValues$1(e,t,A,i,n,a,r,s,o,l,c,d,h,u,g,p){var m=new ARRAY_TYPE(16);return m[0]=e,m[1]=t,m[2]=A,m[3]=i,m[4]=n,m[5]=a,m[6]=r,m[7]=s,m[8]=o,m[9]=l,m[10]=c,m[11]=d,m[12]=h,m[13]=u,m[14]=g,m[15]=p,m}function multiply(e,t,A){var i=t[0],n=t[1],a=t[2],r=t[3],s=t[4],o=t[5],l=t[6],c=t[7],d=t[8],h=t[9],u=t[10],g=t[11],p=t[12],m=t[13],w=t[14],f=t[15],B=A[0],E=A[1],b=A[2],v=A[3];return e[0]=B*i+E*s+b*d+v*p,e[1]=B*n+E*o+b*h+v*m,e[2]=B*a+E*l+b*u+v*w,e[3]=B*r+E*c+b*g+v*f,B=A[4],E=A[5],b=A[6],v=A[7],e[4]=B*i+E*s+b*d+v*p,e[5]=B*n+E*o+b*h+v*m,e[6]=B*a+E*l+b*u+v*w,e[7]=B*r+E*c+b*g+v*f,B=A[8],E=A[9],b=A[10],v=A[11],e[8]=B*i+E*s+b*d+v*p,e[9]=B*n+E*o+b*h+v*m,e[10]=B*a+E*l+b*u+v*w,e[11]=B*r+E*c+b*g+v*f,B=A[12],E=A[13],b=A[14],v=A[15],e[12]=B*i+E*s+b*d+v*p,e[13]=B*n+E*o+b*h+v*m,e[14]=B*a+E*l+b*u+v*w,e[15]=B*r+E*c+b*g+v*f,e}function create(){var e=new ARRAY_TYPE(3);return ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function fromValues(e,t,A){var i=new ARRAY_TYPE(3);return i[0]=e,i[1]=t,i[2]=A,i}function transformMat4(e,t,A){var i=t[0],n=t[1],a=t[2],r=A[3]*i+A[7]*n+A[11]*a+A[15];return r=r||1,e[0]=(A[0]*i+A[4]*n+A[8]*a+A[12])/r,e[1]=(A[1]*i+A[5]*n+A[9]*a+A[13])/r,e[2]=(A[2]*i+A[6]*n+A[10]*a+A[14])/r,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)}),create();const random=new Random(Date.now()),randomInteger=()=>Math.floor(random.next()*2**31),randomId=()=>nanoid$1();function dimensionsFromPoints(e){const t=e.map((([e])=>e)),A=e.map((([,e])=>e)),i=Math.min(...t),n=Math.min(...A);return[Math.max(...t)-i,Math.max(...A)-n]}function getWindingOrder(e){return e.reduce(((e,[t,A],i,n)=>{const a=n[i+1];return((a?a[0]:0)-t)*((a?a[1]:0)+A)+e}),0)>0?"clockwise":"counterclockwise"}var chromaExports={},chroma$1={get exports(){return chromaExports},set exports(e){chromaExports=e}};chroma$1.exports=function(){for(var e=function(e,t,A){return void 0===t&&(t=0),void 0===A&&(A=1),eA?A:e},t=e,A={},i=0,n=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];i255)&&(e._clipped=!0),e[A]=t(e[A],0,255)):3===A&&(e[A]=t(e[A],0,1));return e},limit:e,type:r,unpack:function(e,t){return void 0===t&&(t=null),e.length>=3?Array.prototype.slice.call(e):"object"==s(e[0])&&t?t.split("").filter((function(t){return void 0!==e[0][t]})).map((function(t){return e[0][t]})):e[0]},last:function(e){if(e.length<2)return null;var t=e.length-1;return"string"==o(e[t])?e[t].toLowerCase():null},PI:l,TWOPI:2*l,PITHIRD:l/3,DEG2RAD:l/180,RAD2DEG:180/l},d={format:{},autodetect:[]},h=c.last,u=c.clip_rgb,g=c.type,p=d,m=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=this;if("object"===g(e[0])&&e[0].constructor&&e[0].constructor===this.constructor)return e[0];var i=h(e),n=!1;if(!i){n=!0,p.sorted||(p.autodetect=p.autodetect.sort((function(e,t){return t.p-e.p})),p.sorted=!0);for(var a=0,r=p.autodetect;a4?e[4]:1;return 1===a?[0,0,0,r]:[A>=1?0:255*(1-A)*(1-a),i>=1?0:255*(1-i)*(1-a),n>=1?0:255*(1-n)*(1-a),r]},F=B,x=w,S=d,T=c.unpack,I=c.type,U=v;x.prototype.cmyk=function(){return U(this._rgb)},F.cmyk=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(x,[null].concat(e,["cmyk"])))},S.format.cmyk=y,S.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=T(e,"cmyk"),"array"===I(e)&&4===e.length)return"cmyk"}});var Q=c.unpack,k=c.last,O=function(e){return Math.round(100*e)/100},M=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Q(e,"hsla"),i=k(e)||"lsa";return A[0]=O(A[0]||0),A[1]=O(100*A[1])+"%",A[2]=O(100*A[2])+"%","hsla"===i||A.length>3&&A[3]<1?(A[3]=A.length>3?A[3]:1,i="hsla"):A.length=3,i+"("+A.join(",")+")"},L=c.unpack,D=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=L(e,"rgba"))[0],i=e[1],n=e[2];A/=255,i/=255,n/=255;var a,r,s=Math.min(A,i,n),o=Math.max(A,i,n),l=(o+s)/2;return o===s?(a=0,r=Number.NaN):a=l<.5?(o-s)/(o+s):(o-s)/(2-o-s),A==o?r=(i-n)/(o-s):i==o?r=2+(n-A)/(o-s):n==o&&(r=4+(A-i)/(o-s)),(r*=60)<0&&(r+=360),e.length>3&&void 0!==e[3]?[r,a,l,e[3]]:[r,a,l]},N=c.unpack,H=c.last,R=M,P=D,V=Math.round,K=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=N(e,"rgba"),i=H(e)||"rgb";return"hsl"==i.substr(0,3)?R(P(A),i):(A[0]=V(A[0]),A[1]=V(A[1]),A[2]=V(A[2]),("rgba"===i||A.length>3&&A[3]<1)&&(A[3]=A.length>3?A[3]:1,i="rgba"),i+"("+A.slice(0,"rgb"===i?3:4).join(",")+")")},G=c.unpack,W=Math.round,X=function(){for(var e,t=[],A=arguments.length;A--;)t[A]=arguments[A];var i,n,a,r=(t=G(t,"hsl"))[0],s=t[1],o=t[2];if(0===s)i=n=a=255*o;else{var l=[0,0,0],c=[0,0,0],d=o<.5?o*(1+s):o+s-o*s,h=2*o-d,u=r/360;l[0]=u+1/3,l[1]=u,l[2]=u-1/3;for(var g=0;g<3;g++)l[g]<0&&(l[g]+=1),l[g]>1&&(l[g]-=1),6*l[g]<1?c[g]=h+6*(d-h)*l[g]:2*l[g]<1?c[g]=d:3*l[g]<2?c[g]=h+(d-h)*(2/3-l[g])*6:c[g]=h;i=(e=[W(255*c[0]),W(255*c[1]),W(255*c[2])])[0],n=e[1],a=e[2]}return t.length>3?[i,n,a,t[3]]:[i,n,a,1]},z=X,Y=d,j=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,J=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,Z=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,q=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,_=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,$=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ee=Math.round,te=function(e){var t;if(e=e.toLowerCase().trim(),Y.format.named)try{return Y.format.named(e)}catch(e){}if(t=e.match(j)){for(var A=t.slice(1,4),i=0;i<3;i++)A[i]=+A[i];return A[3]=1,A}if(t=e.match(J)){for(var n=t.slice(1,5),a=0;a<4;a++)n[a]=+n[a];return n}if(t=e.match(Z)){for(var r=t.slice(1,4),s=0;s<3;s++)r[s]=ee(2.55*r[s]);return r[3]=1,r}if(t=e.match(q)){for(var o=t.slice(1,5),l=0;l<3;l++)o[l]=ee(2.55*o[l]);return o[3]=+o[3],o}if(t=e.match(_)){var c=t.slice(1,4);c[1]*=.01,c[2]*=.01;var d=z(c);return d[3]=1,d}if(t=e.match($)){var h=t.slice(1,4);h[1]*=.01,h[2]*=.01;var u=z(h);return u[3]=+t[4],u}};te.test=function(e){return j.test(e)||J.test(e)||Z.test(e)||q.test(e)||_.test(e)||$.test(e)};var Ae=B,ie=w,ne=d,ae=c.type,re=K,se=te;ie.prototype.css=function(e){return re(this._rgb,e)},Ae.css=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(ie,[null].concat(e,["css"])))},ne.format.css=se,ne.autodetect.push({p:5,test:function(e){for(var t=[],A=arguments.length-1;A-- >0;)t[A]=arguments[A+1];if(!t.length&&"string"===ae(e)&&se.test(e))return"css"}});var oe=w,le=B,ce=c.unpack;d.format.gl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=ce(e,"rgba");return A[0]*=255,A[1]*=255,A[2]*=255,A},le.gl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(oe,[null].concat(e,["gl"])))},oe.prototype.gl=function(){var e=this._rgb;return[e[0]/255,e[1]/255,e[2]/255,e[3]]};var de=c.unpack,he=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i=de(e,"rgb"),n=i[0],a=i[1],r=i[2],s=Math.min(n,a,r),o=Math.max(n,a,r),l=o-s,c=100*l/255,d=s/(255-l)*100;return 0===l?A=Number.NaN:(n===o&&(A=(a-r)/l),a===o&&(A=2+(r-n)/l),r===o&&(A=4+(n-a)/l),(A*=60)<0&&(A+=360)),[A,c,d]},ue=c.unpack,ge=Math.floor,pe=function(){for(var e,t,A,i,n,a,r=[],s=arguments.length;s--;)r[s]=arguments[s];var o,l,c,d=(r=ue(r,"hcg"))[0],h=r[1],u=r[2];u*=255;var g=255*h;if(0===h)o=l=c=u;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=ge(d/=60),m=d-p,w=u*(1-h),f=w+g*(1-m),B=w+g*m,E=w+g;switch(p){case 0:o=(e=[E,B,w])[0],l=e[1],c=e[2];break;case 1:o=(t=[f,E,w])[0],l=t[1],c=t[2];break;case 2:o=(A=[w,E,B])[0],l=A[1],c=A[2];break;case 3:o=(i=[w,f,E])[0],l=i[1],c=i[2];break;case 4:o=(n=[B,w,E])[0],l=n[1],c=n[2];break;case 5:o=(a=[E,w,f])[0],l=a[1],c=a[2]}}return[o,l,c,r.length>3?r[3]:1]},me=c.unpack,we=c.type,fe=B,Be=w,Ee=d,be=he;Be.prototype.hcg=function(){return be(this._rgb)},fe.hcg=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Be,[null].concat(e,["hcg"])))},Ee.format.hcg=pe,Ee.autodetect.push({p:1,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=me(e,"hcg"),"array"===we(e)&&3===e.length)return"hcg"}});var ve=c.unpack,Ce=c.last,ye=Math.round,Fe=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=ve(e,"rgba"),i=A[0],n=A[1],a=A[2],r=A[3],s=Ce(e)||"auto";void 0===r&&(r=1),"auto"===s&&(s=r<1?"rgba":"rgb");var o="000000"+((i=ye(i))<<16|(n=ye(n))<<8|(a=ye(a))).toString(16);o=o.substr(o.length-6);var l="0"+ye(255*r).toString(16);switch(l=l.substr(l.length-2),s.toLowerCase()){case"rgba":return"#"+o+l;case"argb":return"#"+l+o;default:return"#"+o}},xe=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Se=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,Te=function(e){if(e.match(xe)){4!==e.length&&7!==e.length||(e=e.substr(1)),3===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]);var t=parseInt(e,16);return[t>>16,t>>8&255,255&t,1]}if(e.match(Se)){5!==e.length&&9!==e.length||(e=e.substr(1)),4===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);var A=parseInt(e,16);return[A>>24&255,A>>16&255,A>>8&255,Math.round((255&A)/255*100)/100]}throw new Error("unknown hex color: "+e)},Ie=B,Ue=w,Qe=c.type,ke=d,Oe=Fe;Ue.prototype.hex=function(e){return Oe(this._rgb,e)},Ie.hex=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Ue,[null].concat(e,["hex"])))},ke.format.hex=Te,ke.autodetect.push({p:4,test:function(e){for(var t=[],A=arguments.length-1;A-- >0;)t[A]=arguments[A+1];if(!t.length&&"string"===Qe(e)&&[3,4,5,6,7,8,9].indexOf(e.length)>=0)return"hex"}});var Me=c.unpack,Le=c.TWOPI,De=Math.min,Ne=Math.sqrt,He=Math.acos,Re=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i=Me(e,"rgb"),n=i[0],a=i[1],r=i[2],s=De(n/=255,a/=255,r/=255),o=(n+a+r)/3,l=o>0?1-s/o:0;return 0===l?A=NaN:(A=(n-a+(n-r))/2,A/=Ne((n-a)*(n-a)+(n-r)*(a-r)),A=He(A),r>a&&(A=Le-A),A/=Le),[360*A,l,o]},Pe=c.unpack,Ve=c.limit,Ke=c.TWOPI,Ge=c.PITHIRD,We=Math.cos,Xe=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i,n,a=(e=Pe(e,"hsi"))[0],r=e[1],s=e[2];return isNaN(a)&&(a=0),isNaN(r)&&(r=0),a>360&&(a-=360),a<0&&(a+=360),(a/=360)<1/3?i=1-((n=(1-r)/3)+(A=(1+r*We(Ke*a)/We(Ge-Ke*a))/3)):a<2/3?n=1-((A=(1-r)/3)+(i=(1+r*We(Ke*(a-=1/3))/We(Ge-Ke*a))/3)):A=1-((i=(1-r)/3)+(n=(1+r*We(Ke*(a-=2/3))/We(Ge-Ke*a))/3)),[255*(A=Ve(s*A*3)),255*(i=Ve(s*i*3)),255*(n=Ve(s*n*3)),e.length>3?e[3]:1]},ze=c.unpack,Ye=c.type,je=B,Je=w,Ze=d,qe=Re;Je.prototype.hsi=function(){return qe(this._rgb)},je.hsi=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Je,[null].concat(e,["hsi"])))},Ze.format.hsi=Xe,Ze.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=ze(e,"hsi"),"array"===Ye(e)&&3===e.length)return"hsi"}});var _e=c.unpack,$e=c.type,et=B,tt=w,At=d,it=D;tt.prototype.hsl=function(){return it(this._rgb)},et.hsl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(tt,[null].concat(e,["hsl"])))},At.format.hsl=X,At.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=_e(e,"hsl"),"array"===$e(e)&&3===e.length)return"hsl"}});var nt=c.unpack,at=Math.min,rt=Math.max,st=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i,n,a=(e=nt(e,"rgb"))[0],r=e[1],s=e[2],o=at(a,r,s),l=rt(a,r,s),c=l-o;return n=l/255,0===l?(A=Number.NaN,i=0):(i=c/l,a===l&&(A=(r-s)/c),r===l&&(A=2+(s-a)/c),s===l&&(A=4+(a-r)/c),(A*=60)<0&&(A+=360)),[A,i,n]},ot=c.unpack,lt=Math.floor,ct=function(){for(var e,t,A,i,n,a,r=[],s=arguments.length;s--;)r[s]=arguments[s];var o,l,c,d=(r=ot(r,"hsv"))[0],h=r[1],u=r[2];if(u*=255,0===h)o=l=c=u;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var g=lt(d/=60),p=d-g,m=u*(1-h),w=u*(1-h*p),f=u*(1-h*(1-p));switch(g){case 0:o=(e=[u,f,m])[0],l=e[1],c=e[2];break;case 1:o=(t=[w,u,m])[0],l=t[1],c=t[2];break;case 2:o=(A=[m,u,f])[0],l=A[1],c=A[2];break;case 3:o=(i=[m,w,u])[0],l=i[1],c=i[2];break;case 4:o=(n=[f,m,u])[0],l=n[1],c=n[2];break;case 5:o=(a=[u,m,w])[0],l=a[1],c=a[2]}}return[o,l,c,r.length>3?r[3]:1]},dt=c.unpack,ht=c.type,ut=B,gt=w,pt=d,mt=st;gt.prototype.hsv=function(){return mt(this._rgb)},ut.hsv=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(gt,[null].concat(e,["hsv"])))},pt.format.hsv=ct,pt.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=dt(e,"hsv"),"array"===ht(e)&&3===e.length)return"hsv"}});var wt={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ft=wt,Bt=c.unpack,Et=Math.pow,bt=function(e){return(e/=255)<=.04045?e/12.92:Et((e+.055)/1.055,2.4)},vt=function(e){return e>ft.t3?Et(e,1/3):e/ft.t2+ft.t0},Ct=function(e,t,A){return e=bt(e),t=bt(t),A=bt(A),[vt((.4124564*e+.3575761*t+.1804375*A)/ft.Xn),vt((.2126729*e+.7151522*t+.072175*A)/ft.Yn),vt((.0193339*e+.119192*t+.9503041*A)/ft.Zn)]},yt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Bt(e,"rgb"),i=A[0],n=A[1],a=A[2],r=Ct(i,n,a),s=r[0],o=r[1],l=116*o-16;return[l<0?0:l,500*(s-o),200*(o-r[2])]},Ft=wt,xt=c.unpack,St=Math.pow,Tt=function(e){return 255*(e<=.00304?12.92*e:1.055*St(e,1/2.4)-.055)},It=function(e){return e>Ft.t1?e*e*e:Ft.t2*(e-Ft.t0)},Ut=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A,i,n,a=(e=xt(e,"lab"))[0],r=e[1],s=e[2];return i=(a+16)/116,A=isNaN(r)?i:i+r/500,n=isNaN(s)?i:i-s/200,i=Ft.Yn*It(i),A=Ft.Xn*It(A),n=Ft.Zn*It(n),[Tt(3.2404542*A-1.5371385*i-.4985314*n),Tt(-.969266*A+1.8760108*i+.041556*n),Tt(.0556434*A-.2040259*i+1.0572252*n),e.length>3?e[3]:1]},Qt=c.unpack,kt=c.type,Ot=B,Mt=w,Lt=d,Dt=yt;Mt.prototype.lab=function(){return Dt(this._rgb)},Ot.lab=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Mt,[null].concat(e,["lab"])))},Lt.format.lab=Ut,Lt.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=Qt(e,"lab"),"array"===kt(e)&&3===e.length)return"lab"}});var Nt=c.unpack,Ht=c.RAD2DEG,Rt=Math.sqrt,Pt=Math.atan2,Vt=Math.round,Kt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Nt(e,"lab"),i=A[0],n=A[1],a=A[2],r=Rt(n*n+a*a),s=(Pt(a,n)*Ht+360)%360;return 0===Vt(1e4*r)&&(s=Number.NaN),[i,r,s]},Gt=c.unpack,Wt=yt,Xt=Kt,zt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Gt(e,"rgb"),i=A[0],n=A[1],a=A[2],r=Wt(i,n,a),s=r[0],o=r[1],l=r[2];return Xt(s,o,l)},Yt=c.unpack,jt=c.DEG2RAD,Jt=Math.sin,Zt=Math.cos,qt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=Yt(e,"lch"),i=A[0],n=A[1],a=A[2];return isNaN(a)&&(a=0),[i,Zt(a*=jt)*n,Jt(a)*n]},_t=c.unpack,$t=qt,eA=Ut,tA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=_t(e,"lch"))[0],i=e[1],n=e[2],a=$t(A,i,n),r=a[0],s=a[1],o=a[2],l=eA(r,s,o);return[l[0],l[1],l[2],e.length>3?e[3]:1]},AA=c.unpack,iA=tA,nA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=AA(e,"hcl").reverse();return iA.apply(void 0,A)},aA=c.unpack,rA=c.type,sA=B,oA=w,lA=d,cA=zt;oA.prototype.lch=function(){return cA(this._rgb)},oA.prototype.hcl=function(){return cA(this._rgb).reverse()},sA.lch=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(oA,[null].concat(e,["lch"])))},sA.hcl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(oA,[null].concat(e,["hcl"])))},lA.format.lch=tA,lA.format.hcl=nA,["lch","hcl"].forEach((function(e){return lA.autodetect.push({p:2,test:function(){for(var t=[],A=arguments.length;A--;)t[A]=arguments[A];if(t=aA(t,e),"array"===rA(t)&&3===t.length)return e}})}));var dA={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},hA=d,uA=c.type,gA=dA,pA=Te,mA=Fe;w.prototype.name=function(){for(var e=mA(this._rgb,"rgb"),t=0,A=Object.keys(gA);t0;)t[A]=arguments[A+1];if(!t.length&&"string"===uA(e)&&gA[e.toLowerCase()])return"named"}});var wA=c.unpack,fA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=wA(e,"rgb");return(A[0]<<16)+(A[1]<<8)+A[2]},BA=c.type,EA=function(e){if("number"==BA(e)&&e>=0&&e<=16777215)return[e>>16,e>>8&255,255&e,1];throw new Error("unknown num color: "+e)},bA=B,vA=w,CA=d,yA=c.type,FA=fA;vA.prototype.num=function(){return FA(this._rgb)},bA.num=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(vA,[null].concat(e,["num"])))},CA.format.num=EA,CA.autodetect.push({p:5,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(1===e.length&&"number"===yA(e[0])&&e[0]>=0&&e[0]<=16777215)return"num"}});var xA=B,SA=w,TA=d,IA=c.unpack,UA=c.type,QA=Math.round;SA.prototype.rgb=function(e){return void 0===e&&(e=!0),!1===e?this._rgb.slice(0,3):this._rgb.slice(0,3).map(QA)},SA.prototype.rgba=function(e){return void 0===e&&(e=!0),this._rgb.slice(0,4).map((function(t,A){return A<3?!1===e?t:QA(t):t}))},xA.rgb=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(SA,[null].concat(e,["rgb"])))},TA.format.rgb=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=IA(e,"rgba");return void 0===A[3]&&(A[3]=1),A},TA.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=IA(e,"rgba"),"array"===UA(e)&&(3===e.length||4===e.length&&"number"==UA(e[3])&&e[3]>=0&&e[3]<=1))return"rgb"}});var kA=Math.log,OA=function(e){var t,A,i,n=e/100;return n<66?(t=255,A=n<6?0:-155.25485562709179-.44596950469579133*(A=n-2)+104.49216199393888*kA(A),i=n<20?0:.8274096064007395*(i=n-10)-254.76935184120902+115.67994401066147*kA(i)):(t=351.97690566805693+.114206453784165*(t=n-55)-40.25366309332127*kA(t),A=325.4494125711974+.07943456536662342*(A=n-50)-28.0852963507957*kA(A),i=255),[t,A,i,1]},MA=OA,LA=c.unpack,DA=Math.round,NA=B,HA=w,RA=d,PA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var A,i=LA(e,"rgb"),n=i[0],a=i[2],r=1e3,s=4e4,o=.4;s-r>o;){var l=MA(A=.5*(s+r));l[2]/l[0]>=a/n?s=A:r=A}return DA(A)};HA.prototype.temp=HA.prototype.kelvin=HA.prototype.temperature=function(){return PA(this._rgb)},NA.temp=NA.kelvin=NA.temperature=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(HA,[null].concat(e,["temp"])))},RA.format.temp=RA.format.kelvin=RA.format.temperature=OA;var VA=c.unpack,KA=Math.cbrt,GA=Math.pow,WA=Math.sign,XA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=VA(e,"rgb"),i=A[0],n=A[1],a=A[2],r=[zA(i/255),zA(n/255),zA(a/255)],s=r[0],o=r[1],l=r[2],c=KA(.4122214708*s+.5363325363*o+.0514459929*l),d=KA(.2119034982*s+.6806995451*o+.1073969566*l),h=KA(.0883024619*s+.2817188376*o+.6299787005*l);return[.2104542553*c+.793617785*d-.0040720468*h,1.9779984951*c-2.428592205*d+.4505937099*h,.0259040371*c+.7827717662*d-.808675766*h]};function zA(e){var t=Math.abs(e);return t<.04045?e/12.92:(WA(e)||1)*GA((t+.055)/1.055,2.4)}var YA=c.unpack,jA=Math.pow,JA=Math.sign,ZA=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=YA(e,"lab"))[0],i=e[1],n=e[2],a=jA(A+.3963377774*i+.2158037573*n,3),r=jA(A-.1055613458*i-.0638541728*n,3),s=jA(A-.0894841775*i-1.291485548*n,3);return[255*qA(4.0767416621*a-3.3077115913*r+.2309699292*s),255*qA(-1.2684380046*a+2.6097574011*r-.3413193965*s),255*qA(-.0041960863*a-.7034186147*r+1.707614701*s),e.length>3?e[3]:1]};function qA(e){var t=Math.abs(e);return t>.0031308?(JA(e)||1)*(1.055*jA(t,1/2.4)-.055):12.92*e}var _A=c.unpack,$A=c.type,ei=B,ti=w,Ai=d,ii=XA;ti.prototype.oklab=function(){return ii(this._rgb)},ei.oklab=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(ti,[null].concat(e,["oklab"])))},Ai.format.oklab=ZA,Ai.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=_A(e,"oklab"),"array"===$A(e)&&3===e.length)return"oklab"}});var ni=c.unpack,ai=XA,ri=Kt,si=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=ni(e,"rgb"),i=A[0],n=A[1],a=A[2],r=ai(i,n,a),s=r[0],o=r[1],l=r[2];return ri(s,o,l)},oi=c.unpack,li=qt,ci=ZA,di=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var A=(e=oi(e,"lch"))[0],i=e[1],n=e[2],a=li(A,i,n),r=a[0],s=a[1],o=a[2],l=ci(r,s,o);return[l[0],l[1],l[2],e.length>3?e[3]:1]},hi=c.unpack,ui=c.type,gi=B,pi=w,mi=d,wi=si;pi.prototype.oklch=function(){return wi(this._rgb)},gi.oklch=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(pi,[null].concat(e,["oklch"])))},mi.format.oklch=di,mi.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=hi(e,"oklch"),"array"===ui(e)&&3===e.length)return"oklch"}});var fi=w,Bi=c.type;fi.prototype.alpha=function(e,t){return void 0===t&&(t=!1),void 0!==e&&"number"===Bi(e)?t?(this._rgb[3]=e,this):new fi([this._rgb[0],this._rgb[1],this._rgb[2],e],"rgb"):this._rgb[3]},w.prototype.clipped=function(){return this._rgb._clipped||!1};var Ei=w,bi=wt;Ei.prototype.darken=function(e){void 0===e&&(e=1);var t=this.lab();return t[0]-=bi.Kn*e,new Ei(t,"lab").alpha(this.alpha(),!0)},Ei.prototype.brighten=function(e){return void 0===e&&(e=1),this.darken(-e)},Ei.prototype.darker=Ei.prototype.darken,Ei.prototype.brighter=Ei.prototype.brighten,w.prototype.get=function(e){var t=e.split("."),A=t[0],i=t[1],n=this[A]();if(i){var a=A.indexOf(i)-("ok"===A.substr(0,2)?2:0);if(a>-1)return n[a];throw new Error("unknown channel "+i+" in mode "+A)}return n};var vi=w,Ci=c.type,yi=Math.pow;vi.prototype.luminance=function(e){if(void 0!==e&&"number"===Ci(e)){if(0===e)return new vi([0,0,0,this._rgb[3]],"rgb");if(1===e)return new vi([255,255,255,this._rgb[3]],"rgb");var t=this.luminance(),A=20,i=function(t,n){var a=t.interpolate(n,.5,"rgb"),r=a.luminance();return Math.abs(e-r)<1e-7||!A--?a:r>e?i(t,a):i(a,n)},n=(t>e?i(new vi([0,0,0]),this):i(this,new vi([255,255,255]))).rgb();return new vi(n.concat([this._rgb[3]]))}return Fi.apply(void 0,this._rgb.slice(0,3))};var Fi=function(e,t,A){return.2126*(e=xi(e))+.7152*(t=xi(t))+.0722*xi(A)},xi=function(e){return(e/=255)<=.03928?e/12.92:yi((e+.055)/1.055,2.4)},Si={},Ti=w,Ii=c.type,Ui=Si,Qi=function(e,t,A){void 0===A&&(A=.5);for(var i=[],n=arguments.length-3;n-- >0;)i[n]=arguments[n+3];var a=i[0]||"lrgb";if(Ui[a]||i.length||(a=Object.keys(Ui)[0]),!Ui[a])throw new Error("interpolation mode "+a+" is not defined");return"object"!==Ii(e)&&(e=new Ti(e)),"object"!==Ii(t)&&(t=new Ti(t)),Ui[a](e,t,A).alpha(e.alpha()+A*(t.alpha()-e.alpha()))},ki=w,Oi=Qi;ki.prototype.mix=ki.prototype.interpolate=function(e,t){void 0===t&&(t=.5);for(var A=[],i=arguments.length-2;i-- >0;)A[i]=arguments[i+2];return Oi.apply(void 0,[this,e,t].concat(A))};var Mi=w;Mi.prototype.premultiply=function(e){void 0===e&&(e=!1);var t=this._rgb,A=t[3];return e?(this._rgb=[t[0]*A,t[1]*A,t[2]*A,A],this):new Mi([t[0]*A,t[1]*A,t[2]*A,A],"rgb")};var Li=w,Di=wt;Li.prototype.saturate=function(e){void 0===e&&(e=1);var t=this.lch();return t[1]+=Di.Kn*e,t[1]<0&&(t[1]=0),new Li(t,"lch").alpha(this.alpha(),!0)},Li.prototype.desaturate=function(e){return void 0===e&&(e=1),this.saturate(-e)};var Ni=w,Hi=c.type;Ni.prototype.set=function(e,t,A){void 0===A&&(A=!1);var i=e.split("."),n=i[0],a=i[1],r=this[n]();if(a){var s=n.indexOf(a)-("ok"===n.substr(0,2)?2:0);if(s>-1){if("string"==Hi(t))switch(t.charAt(0)){case"+":case"-":r[s]+=+t;break;case"*":r[s]*=+t.substr(1);break;case"/":r[s]/=+t.substr(1);break;default:r[s]=+t}else{if("number"!==Hi(t))throw new Error("unsupported value for Color.set");r[s]=t}var o=new Ni(r,n);return A?(this._rgb=o._rgb,this):o}throw new Error("unknown channel "+a+" in mode "+n)}return r};var Ri=w;Si.rgb=function(e,t,A){var i=e._rgb,n=t._rgb;return new Ri(i[0]+A*(n[0]-i[0]),i[1]+A*(n[1]-i[1]),i[2]+A*(n[2]-i[2]),"rgb")};var Pi=w,Vi=Math.sqrt,Ki=Math.pow;Si.lrgb=function(e,t,A){var i=e._rgb,n=i[0],a=i[1],r=i[2],s=t._rgb,o=s[0],l=s[1],c=s[2];return new Pi(Vi(Ki(n,2)*(1-A)+Ki(o,2)*A),Vi(Ki(a,2)*(1-A)+Ki(l,2)*A),Vi(Ki(r,2)*(1-A)+Ki(c,2)*A),"rgb")};var Gi=w;Si.lab=function(e,t,A){var i=e.lab(),n=t.lab();return new Gi(i[0]+A*(n[0]-i[0]),i[1]+A*(n[1]-i[1]),i[2]+A*(n[2]-i[2]),"lab")};var Wi=w,Xi=function(e,t,A,i){var n,a,r,s,o,l,c,d,h,u,g,p,m;return"hsl"===i?(r=e.hsl(),s=t.hsl()):"hsv"===i?(r=e.hsv(),s=t.hsv()):"hcg"===i?(r=e.hcg(),s=t.hcg()):"hsi"===i?(r=e.hsi(),s=t.hsi()):"lch"===i||"hcl"===i?(i="hcl",r=e.hcl(),s=t.hcl()):"oklch"===i&&(r=e.oklch().reverse(),s=t.oklch().reverse()),"h"!==i.substr(0,1)&&"oklch"!==i||(o=(n=r)[0],c=n[1],h=n[2],l=(a=s)[0],d=a[1],u=a[2]),isNaN(o)||isNaN(l)?isNaN(o)?isNaN(l)?p=Number.NaN:(p=l,1!=h&&0!=h||"hsv"==i||(g=d)):(p=o,1!=u&&0!=u||"hsv"==i||(g=c)):p=o+A*(l>o&&l-o>180?l-(o+360):l180?l+360-o:l-o),void 0===g&&(g=c+A*(d-c)),m=h+A*(u-h),new Wi("oklch"===i?[m,g,p]:[p,g,m],i)},zi=Xi,Yi=function(e,t,A){return zi(e,t,A,"lch")};Si.lch=Yi,Si.hcl=Yi;var ji=w;Si.num=function(e,t,A){var i=e.num(),n=t.num();return new ji(i+A*(n-i),"num")};var Ji=Xi;Si.hcg=function(e,t,A){return Ji(e,t,A,"hcg")};var Zi=Xi;Si.hsi=function(e,t,A){return Zi(e,t,A,"hsi")};var qi=Xi;Si.hsl=function(e,t,A){return qi(e,t,A,"hsl")};var _i=Xi;Si.hsv=function(e,t,A){return _i(e,t,A,"hsv")};var $i=w;Si.oklab=function(e,t,A){var i=e.oklab(),n=t.oklab();return new $i(i[0]+A*(n[0]-i[0]),i[1]+A*(n[1]-i[1]),i[2]+A*(n[2]-i[2]),"oklab")};var en=Xi;Si.oklch=function(e,t,A){return en(e,t,A,"oklch")};var tn=w,An=c.clip_rgb,nn=Math.pow,an=Math.sqrt,rn=Math.PI,sn=Math.cos,on=Math.sin,ln=Math.atan2,cn=function(e,t){for(var A=e.length,i=[0,0,0,0],n=0;n.9999999&&(i[3]=1),new tn(An(i))},dn=B,hn=c.type,un=Math.pow,gn=function(e){var t="rgb",A=dn("#ccc"),i=0,n=[0,1],a=[],r=[0,0],s=!1,o=[],l=!1,c=0,d=1,h=!1,u={},g=!0,p=1,m=function(e){if((e=e||["#fff","#000"])&&"string"===hn(e)&&dn.brewer&&dn.brewer[e.toLowerCase()]&&(e=dn.brewer[e.toLowerCase()]),"array"===hn(e)){1===e.length&&(e=[e[0],e[0]]),e=e.slice(0);for(var t=0;t2?function(e){if(null!=s){for(var t=s.length-1,A=0;A=s[A];)A++;return A-1}return 0}(e)/(s.length-2):d!==c?(e-c)/(d-c):1,l=f(l),i||(l=w(l)),1!==p&&(l=un(l,p)),l=r[0]+l*(1-r[0]-r[1]),l=Math.min(1,Math.max(0,l));var h=Math.floor(1e4*l);if(g&&u[h])n=u[h];else{if("array"===hn(o))for(var m=0;m=B&&m===a.length-1){n=o[m];break}if(l>B&&l2){var l=e.map((function(t,A){return A/(e.length-1)})),h=e.map((function(e){return(e-c)/(d-c)}));h.every((function(e,t){return l[t]===e}))||(f=function(e){if(e<=0||e>=1)return e;for(var t=0;e>=h[t+1];)t++;var A=(e-h[t])/(h[t+1]-h[t]);return l[t]+A*(l[t+1]-l[t])})}}return n=[c,d],b},b.mode=function(e){return arguments.length?(t=e,E(),b):t},b.range=function(e,t){return m(e),b},b.out=function(e){return l=e,b},b.spread=function(e){return arguments.length?(i=e,b):i},b.correctLightness=function(e){return null==e&&(e=!0),h=e,E(),w=h?function(e){for(var t=B(0,!0).lab()[0],A=B(1,!0).lab()[0],i=t>A,n=B(e,!0).lab()[0],a=t+(A-t)*e,r=n-a,s=0,o=1,l=20;Math.abs(r)>.01&&l-- >0;)i&&(r*=-1),r<0?(s=e,e+=.5*(o-e)):(o=e,e+=.5*(s-e)),r=(n=B(e,!0).lab()[0])-a;return e}:function(e){return e},b},b.padding=function(e){return null!=e?("number"===hn(e)&&(e=[e,e]),r=e,b):r},b.colors=function(t,A){arguments.length<2&&(A="hex");var i=[];if(0===arguments.length)i=o.slice(0);else if(1===t)i=[b(.5)];else if(t>1){var a=n[0],r=n[1]-a;i=pn(0,t,!1).map((function(e){return b(a+e/(t-1)*r)}))}else{e=[];var l=[];if(s&&s.length>2)for(var c=1,d=s.length,h=1<=d;h?cd;h?c++:c--)l.push(.5*(s[c-1]+s[c]));else l=n;i=l.map((function(e){return b(e)}))}return dn[A]&&(i=i.map((function(e){return e[A]()}))),i},b.cache=function(e){return null!=e?(g=e,b):g},b.gamma=function(e){return null!=e?(p=e,b):p},b.nodata=function(e){return null!=e?(A=dn(e),b):A},b};function pn(e,t,A){for(var i=[],n=ea;n?r++:r--)i.push(r);return i}var mn=w,wn=gn,fn=B,Bn=function(e,t,A){if(!Bn[A])throw new Error("unknown blend mode "+A);return Bn[A](e,t)},En=function(e){return function(t,A){var i=fn(A).rgb(),n=fn(t).rgb();return fn.rgb(e(i,n))}},bn=function(e){return function(t,A){var i=[];return i[0]=e(t[0],A[0]),i[1]=e(t[1],A[1]),i[2]=e(t[2],A[2]),i}};Bn.normal=En(bn((function(e){return e}))),Bn.multiply=En(bn((function(e,t){return e*t/255}))),Bn.screen=En(bn((function(e,t){return 255*(1-(1-e/255)*(1-t/255))}))),Bn.overlay=En(bn((function(e,t){return t<128?2*e*t/255:255*(1-2*(1-e/255)*(1-t/255))}))),Bn.darken=En(bn((function(e,t){return e>t?t:e}))),Bn.lighten=En(bn((function(e,t){return e>t?e:t}))),Bn.dodge=En(bn((function(e,t){return 255===e||(e=t/255*255/(1-e/255))>255?255:e}))),Bn.burn=En(bn((function(e,t){return 255*(1-(1-t/255)/(e/255))})));for(var vn=Bn,Cn=c.type,yn=c.clip_rgb,Fn=c.TWOPI,xn=Math.pow,Sn=Math.sin,Tn=Math.cos,In=B,Un=w,Qn=Math.floor,kn=Math.random,On=r,Mn=Math.log,Ln=Math.pow,Dn=Math.floor,Nn=Math.abs,Hn=function(e,t){void 0===t&&(t=null);var A={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===On(e)&&(e=Object.values(e)),e.forEach((function(e){t&&"object"===On(e)&&(e=e[t]),null==e||isNaN(e)||(A.values.push(e),A.sum+=e,eA.max&&(A.max=e),A.count+=1)})),A.domain=[A.min,A.max],A.limits=function(e,t){return Rn(A,e,t)},A},Rn=function(e,t,A){void 0===t&&(t="equal"),void 0===A&&(A=7),"array"==On(e)&&(e=Hn(e));var i=e.min,n=e.max,a=e.values.sort((function(e,t){return e-t}));if(1===A)return[i,n];var r=[];if("c"===t.substr(0,1)&&(r.push(i),r.push(n)),"e"===t.substr(0,1)){r.push(i);for(var s=1;s 0");var o=Math.LOG10E*Mn(i),l=Math.LOG10E*Mn(n);r.push(i);for(var c=1;c200&&(B=!1)}for(var L={},D=0;D=360;)g-=360;r[u]=g}else r[u]=r[u]/s[u];return h/=i,new tn(r,t).alpha(h>.99999?1:h,!0)},la.bezier=function(e){var t=function(e){var t,A,i,n,a,r,s;if(e=e.map((function(e){return new mn(e)})),2===e.length)t=e.map((function(e){return e.lab()})),a=t[0],r=t[1],n=function(e){var t=[0,1,2].map((function(t){return a[t]+e*(r[t]-a[t])}));return new mn(t,"lab")};else if(3===e.length)A=e.map((function(e){return e.lab()})),a=A[0],r=A[1],s=A[2],n=function(e){var t=[0,1,2].map((function(t){return(1-e)*(1-e)*a[t]+2*(1-e)*e*r[t]+e*e*s[t]}));return new mn(t,"lab")};else if(4===e.length){var o;i=e.map((function(e){return e.lab()})),a=i[0],r=i[1],s=i[2],o=i[3],n=function(e){var t=[0,1,2].map((function(t){return(1-e)*(1-e)*(1-e)*a[t]+3*(1-e)*(1-e)*e*r[t]+3*(1-e)*e*e*s[t]+e*e*e*o[t]}));return new mn(t,"lab")}}else{if(!(e.length>=5))throw new RangeError("No point in running bezier with only one color.");var l,c,d;l=e.map((function(e){return e.lab()})),d=e.length-1,c=function(e){for(var t=[1,1],A=1;Ai?(A+.05)/(i+.05):(i+.05)/(A+.05)},la.deltaE=function(e,t,A,i,n){void 0===A&&(A=1),void 0===i&&(i=1),void 0===n&&(n=1);var a=function(e){return 360*e/(2*_n)},r=function(e){return 2*_n*e/360};e=new Kn(e),t=new Kn(t);var s=Array.from(e.lab()),o=s[0],l=s[1],c=s[2],d=Array.from(t.lab()),h=d[0],u=d[1],g=d[2],p=(o+h)/2,m=(Gn(Wn(l,2)+Wn(c,2))+Gn(Wn(u,2)+Wn(g,2)))/2,w=.5*(1-Gn(Wn(m,7)/(Wn(m,7)+Wn(25,7)))),f=l*(1+w),B=u*(1+w),E=Gn(Wn(f,2)+Wn(c,2)),b=Gn(Wn(B,2)+Wn(g,2)),v=(E+b)/2,C=a(Yn(c,f)),y=a(Yn(g,B)),F=C>=0?C:C+360,x=y>=0?y:y+360,S=jn(F-x)>180?(F+x+360)/2:(F+x)/2,T=1-.17*Jn(r(S-30))+.24*Jn(r(2*S))+.32*Jn(r(3*S+6))-.2*Jn(r(4*S-63)),I=x-F;I=jn(I)<=180?I:x<=F?I+360:I-360,I=2*Gn(E*b)*Zn(r(I)/2);var U=h-o,Q=b-E,k=1+.015*Wn(p-50,2)/Gn(20+Wn(p-50,2)),O=1+.045*v,M=1+.015*v*T,L=30*qn(-Wn((S-275)/25,2)),D=-2*Gn(Wn(v,7)/(Wn(v,7)+Wn(25,7)))*Zn(2*r(L)),N=Gn(Wn(U/(A*k),2)+Wn(Q/(i*O),2)+Wn(I/(n*M),2)+D*(Q/(i*O))*(I/(n*M)));return zn(0,Xn(100,N))},la.distance=function(e,t,A){void 0===A&&(A="lab"),e=new $n(e),t=new $n(t);var i=e.get(A),n=t.get(A),a=0;for(var r in i){var s=(i[r]||0)-(n[r]||0);a+=s*s}return Math.sqrt(a)},la.limits=Pn.limits,la.valid=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];try{return new(Function.prototype.bind.apply(ea,[null].concat(e))),!0}catch(e){return!1}},la.scales=ia,la.colors=dA,la.brewer=oa,la}();var chroma=chromaExports;function hexWithAlpha(e,t){return chroma(e).alpha(t).css()}function has(e,t){return e.hasAttribute(t)}function get(e,t,A){return e.getAttribute(t)||A||""}function getNum(e,t,A){const i=Number(get(e,t));return Number.isNaN(i)?A||0:i}const attrHandlers={stroke:({el:e,exVals:t})=>{const A=get(e,"stroke");t.strokeColor=has(e,"stroke-opacity")?hexWithAlpha(A,getNum(e,"stroke-opacity")):A},"stroke-opacity":({el:e,exVals:t})=>{t.strokeColor=hexWithAlpha(get(e,"stroke","#000000"),getNum(e,"stroke-opacity"))},"stroke-width":({el:e,exVals:t})=>{t.strokeWidth=getNum(e,"stroke-width")},fill:({el:e,exVals:t})=>{const A=get(e,"fill");t.backgroundColor="none"===A?"#00000000":A},"fill-opacity":({el:e,exVals:t})=>{t.backgroundColor=hexWithAlpha(get(e,"fill","#000000"),getNum(e,"fill-opacity"))},opacity:({el:e,exVals:t})=>{t.opacity=getNum(e,"opacity",100)}};function presAttrsToElementValues(e){return[...e.attributes].reduce(((t,A)=>{const i=A.name;return Object.keys(attrHandlers).includes(i)&&attrHandlers[i]({el:e,exVals:t}),t}),{})}function filterAttrsToElementValues(e){const t={};return has(e,"x")&&(t.x=getNum(e,"x")),has(e,"y")&&(t.y=getNum(e,"y")),has(e,"width")&&(t.width=getNum(e,"width")),has(e,"height")&&(t.height=getNum(e,"height")),t}function pointsAttrToPoints(e){let t=[];return has(e,"points")&&(t=get(e,"points").split(" ").map((e=>e.split(",").map(parseFloat)))),t}function getGroupAttrs(e){return e.reduce(((e,{element:t})=>{const A=presAttrsToElementValues(t);return Object.assign(Object.assign({},e),A)}),{})}class Group{constructor(e){this.id=randomId(),this.element=e}}function createExElement(){return{id:randomId(),x:0,y:0,strokeColor:"#000000",backgroundColor:"#000000",fillStyle:"solid",strokeWidth:1,strokeStyle:"solid",roundness:null,roughness:0,opacity:100,width:0,height:0,angle:0,seed:Math.floor(random.next()*2**31),version:0,versionNonce:0,isDeleted:!1,groupIds:[],boundElementIds:null}}function createExRect(){return Object.assign(Object.assign({},createExElement()),{type:"rectangle"})}function createExLine(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}function createExEllipse(){return Object.assign(Object.assign({},createExElement()),{type:"ellipse"})}function createExDraw(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}const transformFunctions={matrix:"matrix",matrix3d:"matrix3d",perspective:"perspective",rotate:"rotate",rotate3d:"rotate3d",rotateX:"rotateX",rotateY:"rotateY",rotateZ:"rotateZ",scale:"scale",scale3d:"scale3d",scaleX:"scaleX",scaleY:"scaleY",scaleZ:"scaleZ",skew:"skew",skewX:"skewX",skewY:"skewY",translate:"translate",translate3d:"translate3d",translateX:"translateX",translateY:"translateY",translateZ:"translateZ"},transformFunctionsArr=Object.keys(transformFunctions),defaultUnits={matrix:"",matrix3d:"",perspective:"perspective",rotate:"deg",rotate3d:"deg",rotateX:"deg",rotateY:"deg",rotateZ:"deg",scale:"",scale3d:"",scaleX:"",scaleY:"",scaleZ:"",skew:"skew",skewX:"deg",skewY:"deg",translate:"px",translate3d:"px",translateX:"px",translateY:"px",translateZ:"px"},svgTransformToCSSTransform=e=>{const t=e.match(/(\w+)\(([^)]*)\)/g);if(!t)return"";const A=t.map((e=>{const t=e.split("(")[0];if(!t)throw new Error("Unable to find transform name");if(!transformFunctionsArr.includes(t))throw new Error(`transform function name "${t}" is not valid`);const A=e.match(/([-+]?[0-9]*\.?[0-9]+)([a-z])*/g);if(!A)return{type:t,values:[]};let i=A.map((e=>{const[A,i]=e.matchAll(/([-+]?[0-9]*\.?[0-9]+)|([a-z])*/g);return{unit:i[0]||defaultUnits[t],value:A[0]}}));return i&&"rotate"===t&&(null==i?void 0:i.length)>1&&(i=[i[0]]),{type:t,values:i}}));return A.map((({type:e,values:t})=>`${e}(${t.map((({unit:e,value:t})=>`${t}${e}`)).join(", ")})`)).join(" ")};function getElementMatrix(e){if(e.hasAttribute("transform")){const t=new DOMMatrix(svgTransformToCSSTransform(e.getAttribute("transform")||""));return multiply(create$1(),create$1(),t.toFloat32Array())}return create$1()}function getTransformMatrix(e,t){return t.map((({element:e})=>getElementMatrix(e))).concat([getElementMatrix(e)]).reduce(((e,t)=>multiply(e,e,t)),create$1())}function transformPoints(e,t){return e.map((([e,A])=>{const[i,n]=transformMat4(create(),fromValues(e,A,1),t);return[i,n]}))}function distance(e,t){return Math.sqrt(distanceSq(e,t))}function distanceSq(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)}function distanceToSegmentSq(e,t,A){const i=distanceSq(t,A);if(0===i)return distanceSq(e,t);let n=((e[0]-t[0])*(A[0]-t[0])+(e[1]-t[1])*(A[1]-t[1]))/i;return n=Math.max(0,Math.min(1,n)),distanceSq(e,lerp(t,A,n))}function lerp(e,t,A){return[e[0]+(t[0]-e[0])*A,e[1]+(t[1]-e[1])*A]}function flatness(e,t){const A=e[t+0],i=e[t+1],n=e[t+2],a=e[t+3];let r=3*i[0]-2*A[0]-a[0];r*=r;let s=3*i[1]-2*A[1]-a[1];s*=s;let o=3*n[0]-2*a[0]-A[0];o*=o;let l=3*n[1]-2*a[1]-A[1];return l*=l,r1&&n.push(A):n.push(A),n.push(e[t+3])}else{const i=.5,a=e[t+0],r=e[t+1],s=e[t+2],o=e[t+3],l=lerp(a,r,i),c=lerp(r,s,i),d=lerp(s,o,i),h=lerp(l,c,i),u=lerp(c,d,i),g=lerp(h,u,i);getPointsOnBezierCurveWithSplitting([a,l,h,g],0,A,n),getPointsOnBezierCurveWithSplitting([g,u,d,o],0,A,n)}return n}function simplify(e,t){return simplifyPoints(e,0,e.length,t)}function simplifyPoints(e,t,A,i,n){const a=n||[],r=e[t],s=e[A-1];let o=0,l=1;for(let i=t+1;io&&(o=t,l=i)}return Math.sqrt(o)>i?(simplifyPoints(e,t,l+1,i,a),simplifyPoints(e,l,A,i,a)):(a.length||a.push(r),a.push(s)),a}function pointsOnBezierCurves(e,t=.15,A){const i=[],n=(e.length-1)/3;for(let A=0;A0?simplifyPoints(i,0,i.length,A):i}const COMMAND=0,NUMBER=1,EOD=2,PARAMS={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function tokenize(e){const t=new Array;for(;""!==e;)if(e.match(/^([ \t\r\n,]+)/))e=e.substr(RegExp.$1.length);else if(e.match(/^([aAcChHlLmMqQsStTvVzZ])/))t[t.length]={type:0,text:RegExp.$1},e=e.substr(RegExp.$1.length);else{if(!e.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];t[t.length]={type:1,text:`${parseFloat(RegExp.$1)}`},e=e.substr(RegExp.$1.length)}return t[t.length]={type:2,text:""},t}function isType(e,t){return e.type===t}function parsePath(e){const t=[],A=tokenize(e);let i="BOD",n=0,a=A[n];for(;!isType(a,2);){let r=0;const s=[];if("BOD"===i){if("M"!==a.text&&"m"!==a.text)return parsePath("M0,0"+e);n++,r=PARAMS[a.text],i=a.text}else isType(a,1)?r=PARAMS[i]:(n++,r=PARAMS[a.text],i=a.text);if(!(n+ri%2?e+A:e+t));a.push({key:"C",data:e}),t=e[4],A=e[5];break}case"Q":a.push({key:"Q",data:[...s]}),t=s[2],A=s[3];break;case"q":{const e=s.map(((e,i)=>i%2?e+A:e+t));a.push({key:"Q",data:e}),t=e[2],A=e[3];break}case"A":a.push({key:"A",data:[...s]}),t=s[5],A=s[6];break;case"a":t+=s[5],A+=s[6],a.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],t,A]});break;case"H":a.push({key:"H",data:[...s]}),t=s[0];break;case"h":t+=s[0],a.push({key:"H",data:[t]});break;case"V":a.push({key:"V",data:[...s]}),A=s[0];break;case"v":A+=s[0],a.push({key:"V",data:[A]});break;case"S":a.push({key:"S",data:[...s]}),t=s[2],A=s[3];break;case"s":{const e=s.map(((e,i)=>i%2?e+A:e+t));a.push({key:"S",data:e}),t=e[2],A=e[3];break}case"T":a.push({key:"T",data:[...s]}),t=s[0],A=s[1];break;case"t":t+=s[0],A+=s[1],a.push({key:"T",data:[t,A]});break;case"Z":case"z":a.push({key:"Z",data:[]}),t=i,A=n}return a}function normalize(e){const t=[];let A="",i=0,n=0,a=0,r=0,s=0,o=0;for(const{key:l,data:c}of e){switch(l){case"M":t.push({key:"M",data:[...c]}),[i,n]=c,[a,r]=c;break;case"C":t.push({key:"C",data:[...c]}),i=c[4],n=c[5],s=c[2],o=c[3];break;case"L":t.push({key:"L",data:[...c]}),[i,n]=c;break;case"H":i=c[0],t.push({key:"L",data:[i,n]});break;case"V":n=c[0],t.push({key:"L",data:[i,n]});break;case"S":{let e=0,a=0;"C"===A||"S"===A?(e=i+(i-s),a=n+(n-o)):(e=i,a=n),t.push({key:"C",data:[e,a,...c]}),s=c[0],o=c[1],i=c[2],n=c[3];break}case"T":{const[e,a]=c;let r=0,l=0;"Q"===A||"T"===A?(r=i+(i-s),l=n+(n-o)):(r=i,l=n);const d=i+2*(r-i)/3,h=n+2*(l-n)/3,u=e+2*(r-e)/3,g=a+2*(l-a)/3;t.push({key:"C",data:[d,h,u,g,e,a]}),s=r,o=l,i=e,n=a;break}case"Q":{const[e,A,a,r]=c,l=i+2*(e-i)/3,d=n+2*(A-n)/3,h=a+2*(e-a)/3,u=r+2*(A-r)/3;t.push({key:"C",data:[l,d,h,u,a,r]}),s=e,o=A,i=a,n=r;break}case"A":{const e=Math.abs(c[0]),A=Math.abs(c[1]),a=c[2],r=c[3],s=c[4],o=c[5],l=c[6];0===e||0===A?(t.push({key:"C",data:[i,n,o,l,o,l]}),i=o,n=l):i===o&&n===l||(arcToCubicCurves(i,n,o,l,e,A,a,r,s).forEach((function(e){t.push({key:"C",data:e})})),i=o,n=l);break}case"Z":t.push({key:"Z",data:[]}),i=a,n=r}A=l}return t}function degToRad(e){return Math.PI*e/180}function rotate(e,t,A){return[e*Math.cos(A)-t*Math.sin(A),e*Math.sin(A)+t*Math.cos(A)]}function arcToCubicCurves(e,t,A,i,n,a,r,s,o,l){const c=degToRad(r);let d=[],h=0,u=0,g=0,p=0;if(l)[h,u,g,p]=l;else{[e,t]=rotate(e,t,-c),[A,i]=rotate(A,i,-c);const r=(e-A)/2,l=(t-i)/2;let d=r*r/(n*n)+l*l/(a*a);d>1&&(d=Math.sqrt(d),n*=d,a*=d);const m=n*n,w=a*a,f=m*w-m*l*l-w*r*r,B=m*l*l+w*r*r,E=(s===o?-1:1)*Math.sqrt(Math.abs(f/B));g=E*n*l/a+(e+A)/2,p=E*-a*r/n+(t+i)/2,h=Math.asin(parseFloat(((t-p)/a).toFixed(9))),u=Math.asin(parseFloat(((i-p)/a).toFixed(9))),eu&&(h-=2*Math.PI),!o&&u>h&&(u-=2*Math.PI)}let m=u-h;if(Math.abs(m)>120*Math.PI/180){const e=u,t=A,s=i;u=o&&u>h?h+120*Math.PI/180*1:h+120*Math.PI/180*-1,d=arcToCubicCurves(A=g+n*Math.cos(u),i=p+a*Math.sin(u),t,s,n,a,r,0,o,[u,e,g,p])}m=u-h;const w=Math.cos(h),f=Math.sin(h),B=Math.cos(u),E=Math.sin(u),b=Math.tan(m/4),v=4/3*n*b,C=4/3*a*b,y=[e,t],F=[e+v*f,t-C*w],x=[A+v*E,i-C*B],S=[A,i];if(F[0]=2*y[0]-F[0],F[1]=2*y[1]-F[1],l)return[F,x,S].concat(d);{d=[F,x,S].concat(d);const e=[];for(let t=0;t{s.length>=4&&a.push(...pointsOnBezierCurves(s,t)),s=[]},l=()=>{o(),a.length&&(n.push(a),a=[])};for(const{key:e,data:t}of i)switch(e){case"M":l(),r=[t[0],t[1]],a.push(r);break;case"L":o(),a.push([t[0],t[1]]);break;case"C":if(!s.length){const e=a.length?a[a.length-1]:r;s.push([e[0],e[1]])}s.push([t[0],t[1]]),s.push([t[2],t[3]]),s.push([t[4],t[5]]);break;case"Z":o(),a.push([r[0],r[1]])}if(l(),!A)return n;const c=[];for(const e of n){const t=simplify(e,A);t.length&&c.push(t)}return c}const SUPPORTED_TAGS=["svg","path","g","use","circle","ellipse","rect","polyline","polygon"],nodeValidator=e=>SUPPORTED_TAGS.includes(e.tagName)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;function createTreeWalker(e){return document.createTreeWalker(e,NodeFilter.SHOW_ALL,{acceptNode:nodeValidator})}const presAttrs=(e,t)=>Object.assign(Object.assign(Object.assign({},getGroupAttrs(t)),presAttrsToElementValues(e)),filterAttrsToElementValues(e)),skippedUseAttrs=["id"],allwaysPassedUseAttrs=["x","y","width","height","href","xlink:href"],getDefElWithCorrectAttrs=(e,t)=>[...t.attributes].reduce(((A,i)=>(skippedUseAttrs.includes(i.value)||e.hasAttribute(i.name)&&!allwaysPassedUseAttrs.includes(i.name)||A.setAttribute(i.name,t.getAttribute(i.name)||""),A)),e.cloneNode()),walkers={svg:e=>{walk(e,e.tw.nextNode())},g:e=>{const t=Object.assign(Object.assign({},e),{tw:createTreeWalker(e.tw.currentNode),groups:[...e.groups,new Group(e.tw.currentNode)]});walk(t,t.tw.nextNode()),walk(e,e.tw.nextSibling())},use:e=>{const{root:t,tw:A,scene:i}=e,n=A.currentNode,a=n.getAttribute("href")||n.getAttribute("xlink:href");if(!a)throw new Error("unable to get id of use element");const r=t.querySelector(a);if(!r)throw new Error(`unable to find def element with id: ${a}`);const s=new ExcalidrawScene,o=getDefElWithCorrectAttrs(r,n);walk(Object.assign(Object.assign({},e),{scene:s,tw:createTreeWalker(o)}),o);const l=s.elements.pop();l&&i.elements.push(l),walk(e,e.tw.nextNode())},circle:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getNum(n,"r",0),r=2*a,s=getNum(n,"x",0)+getNum(n,"cx",0)-a,o=getNum(n,"y",0)+getNum(n,"cy",0)-a,l=getTransformMatrix(n,i),c=fromValues$1(r,0,0,0,0,r,0,0,0,0,1,0,s,o,0,1),d=multiply(create$1(),l,c),h=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(n,i)),{x:d[12],y:d[13],width:d[0],height:d[5],groupIds:i.map((e=>e.id))});A.elements.push(h),walk(e,t.nextNode())},ellipse:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getNum(n,"rx",0),r=getNum(n,"ry",0),s=getNum(n,"cx",0),o=getNum(n,"cy",0),l=getNum(n,"x",0)+s-a,c=getNum(n,"y",0)+o-r,d=2*a,h=2*r,u=getTransformMatrix(n,i),g=fromValues$1(d,0,0,0,0,h,0,0,0,0,1,0,l,c,0,1),p=multiply(create$1(),u,g),m=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(n,i)),{x:p[12],y:p[13],width:p[0],height:p[5],groupIds:i.map((e=>e.id))});A.elements.push(m),walk(e,t.nextNode())},line:e=>{walk(e,e.tw.nextNode())},polygon:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=transformPoints(pointsAttrToPoints(n),getTransformMatrix(n,i)),r=a[0][0],s=a[0][1],o=a.map((([e,t])=>[e-r,t-s])),[l,c]=dimensionsFromPoints(o),d=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(i)),presAttrsToElementValues(n)),{points:o.concat([[0,0]]),x:r,y:s,width:l,height:c});A.elements.push(d),walk(e,e.tw.nextNode())},polyline:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getTransformMatrix(n,i),r=transformPoints(pointsAttrToPoints(n),a),s=r[0][0],o=r[0][1],l=r.map((([e,t])=>[e-s,t-o])),[c,d]=dimensionsFromPoints(l),h=has(n,"fill"),u=get(n,"fill"),g=!h||h&&"none"!==u,p=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(i)),presAttrsToElementValues(n)),{points:l.concat(g?[[0,0]]:[]),x:s,y:o,width:c,height:d});A.elements.push(p),walk(e,e.tw.nextNode())},rect:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getNum(n,"x",0),r=getNum(n,"y",0),s=getNum(n,"width",0),o=getNum(n,"height",0),l=getTransformMatrix(n,i),c=fromValues$1(s,0,0,0,0,o,0,0,0,0,1,0,a,r,0,1),d=multiply(create$1(),l,c),h=n.hasAttribute("rx")||n.hasAttribute("ry"),u=Object.assign(Object.assign(Object.assign({},createExRect()),presAttrs(n,i)),{x:d[12],y:d[13],width:d[0],height:d[5],roundness:h?{type:ROUNDNESS.LEGACY}:null});A.elements.push(u),walk(e,e.tw.nextNode())},path:e=>{const{tw:t,scene:A,groups:i}=e,n=t.currentNode,a=getTransformMatrix(n,i),r=pointsOnPath(get(n,"d")),s=get(n,"fill","black"),o=get(n,"fill-rule","nonzero");let l=[],c=randomId();switch(o){case"nonzero":let e="clockwise";l=r.map(((t,A)=>{const r=transformPoints(t,clone(a)),o=r[0][0],l=r[0][1],[d,h]=dimensionsFromPoints(r),u=r.map((([e,t])=>[e-o,t-l])),g=getWindingOrder(u);0===A&&(e=g,c=randomId());let p=s;return e!==g&&(p="#FFFFFF"),Object.assign(Object.assign(Object.assign(Object.assign({},createExDraw()),{strokeWidth:0,strokeColor:"#00000000"}),presAttrs(n,i)),{points:u,backgroundColor:p,width:d,height:h,x:o+getNum(n,"x",0),y:l+getNum(n,"y",0),groupIds:[c]})}));break;case"evenodd":l=r.map(((e,t)=>{const A=transformPoints(e,clone(a)),r=A[0][0],s=A[0][1],[o,l]=dimensionsFromPoints(A),d=A.map((([e,t])=>[e-r,t-s]));return 0===t&&(c=randomId()),Object.assign(Object.assign(Object.assign({},createExDraw()),presAttrs(n,i)),{points:d,width:o,height:l,x:r+getNum(n,"x",0),y:s+getNum(n,"y",0)})}))}A.elements=A.elements.concat(l),walk(e,t.nextNode())}};function walk(e,t){if(!t)return;const A=t.nodeName;walkers[A]&&walkers[A](e)}const svgToExcalidraw=e=>{const t=(new DOMParser).parseFromString(e,"image/svg+xml"),A=t.querySelectorAll("parsererror"),i=A.length>0;let n=null;if(i)console.error("There were errors while parsing the given SVG: ",[...A].map((e=>e.innerHTML)));else{const e=createTreeWalker(t),A=new ExcalidrawScene;walk({tw:e,scene:A,groups:[],root:t},e.nextNode()),n=A.elements}return{hasErrors:i,errors:i?A:null,content:n}};B([r$d,z,e$a,l$3,b$1,v,h$1,i$5,i$4,h,u,c$1,s]);const{determineFocusDistance:determineFocusDistance,intersectElementWithLine:intersectElementWithLine,getCommonBoundingBox:getCommonBoundingBox,getMaximumGroups:getMaximumGroups,measureText:measureText,getDefaultLineHeight:getDefaultLineHeight}=excalidrawLib,GAP=4;class ExcalidrawAutomate{get obsidian(){return obsidian_module__namespace}constructor(e,t){this.targetView=null,this.mostRecentMarkdownSVG=null,this.onViewUnloadHook=null,this.onViewModeChangeHook=null,this.onLinkHoverHook=null,this.onLinkClickHook=null,this.onDropHook=null,this.onCanvasColorChangeHook=null,this.activeScript=null,this.plugin=e,this.reset(),this.targetView=t}getViewLastPointerPosition(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.currentPosition:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getAPI(e){return new ExcalidrawAutomate(this.plugin,e)}setFillStyle(e){switch(e){case 0:return this.style.fillStyle="hachure","hachure";case 1:return this.style.fillStyle="cross-hatch","cross-hatch";default:return this.style.fillStyle="solid","solid"}}setStrokeStyle(e){switch(e){case 0:return this.style.strokeStyle="solid","solid";case 1:return this.style.strokeStyle="dashed","dashed";default:return this.style.strokeStyle="dotted","dotted"}}setStrokeSharpness(e){return 0===e?(this.style.roundness={type:ROUNDNESS.LEGACY},"round"):(this.style.roundness=null,"sharp")}setFontFamily(e){switch(e){case 1:return this.style.fontFamily=4,getFontFamily(4);case 2:return this.style.fontFamily=2,getFontFamily(2);case 3:return this.style.fontFamily=3,getFontFamily(3);default:return this.style.fontFamily=1,getFontFamily(1)}}setTheme(e){return 0===e?(this.canvas.theme="light","light"):(this.canvas.theme="dark","dark")}addToGroup(e){const t=nanoid();return e.forEach((e=>{var A,i;null===(i=null===(A=this.elementsDict[e])||void 0===A?void 0:A.groupIds)||void 0===i||i.push(t)})),t}async toClipboard(e){const t=e?await getTemplate(this.plugin,e,!1,new EmbeddedFilesLoader(this.plugin),0):null;let A=t?t.elements:[];A=A.concat(this.getElements()),navigator.clipboard.writeText(JSON.stringify({type:"excalidraw/clipboard",elements:A}))}async getSceneFromFile(e){if(!e)return errorMessage("file not found","getScene()"),null;if(!this.isExcalidrawFile(e))return errorMessage("file is not an Excalidraw file","getScene()"),null;const t=await getTemplate(this.plugin,e.path,!1,new EmbeddedFilesLoader(this.plugin),0);return{elements:t.elements,appState:t.appState}}getElements(){const e=[],t=Object.keys(this.elementsDict);for(let A=0;A{let t=e.plaintext?e.plaintext+"\n\n":"";const A=this.getElements().filter((e=>"text"===e.type));return t+="# Text Elements\n",A.forEach((e=>{var A,i;t+=`${null!==(A=e.rawText)&&void 0!==A?A:null!==(i=e.originalText)&&void 0!==i?i:e.text} ^${e.id}\n\n`})),this.getElements().filter((e=>"text"!==e.type&&e.link)).forEach((e=>{t+=`${e.link} ^${e.id}\n\n`})),t+=Object.keys(this.imagesDict).length>0?"\n# Embedded files\n":"",Object.keys(this.imagesDict).forEach((e=>{const A=this.imagesDict[e];A.latex?t+=`${e}: $$${A.latex}$$\n`:t+=`${e}: [[${A.file}]]\n`})),t})()+getMarkdownDrawingSection(JSON.stringify(G,null,"\t"),this.plugin.settings.compress))}async createSVG(e,t=!1,A,i,n,a){return n||(n=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),n&&!A&&(A={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0}),i||(i=new EmbeddedFilesLoader(this.plugin,n?"dark"===n:void 0)),await createSVG(e,t,A,i,n,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,a,this.imagesDict)}async createPNG(e,t=1,A,i,n,a){return n||(n=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),n&&!A&&(A={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0}),i||(i=new EmbeddedFilesLoader(this.plugin,n?"dark"===n:void 0)),await createPNG(e,t,A,i,n,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,a,this.imagesDict)}wrapText(e,t){return wrapTextAtCharLength(e,t,this.plugin.settings.forceWrap)}boxedElement(e,t,A,i,n,a){return{id:e,type:t,x:A,y:i,width:n,height:a,angle:this.style.angle,strokeColor:this.style.strokeColor,backgroundColor:this.style.backgroundColor,fillStyle:this.style.fillStyle,strokeWidth:this.style.strokeWidth,strokeStyle:this.style.strokeStyle,roughness:this.style.roughness,opacity:this.style.opacity,roundness:this.style.strokeSharpness?"round"===this.style.strokeSharpness?{type:ROUNDNESS.ADAPTIVE_RADIUS}:null:this.style.roundness,seed:Math.floor(1e5*Math.random()),version:1,versionNonce:Math.floor(1e9*Math.random()),updated:Date.now(),isDeleted:!1,groupIds:[],boundElements:[],link:null,locked:!1}}addRect(e,t,A,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"rectangle",e,t,A,i),n}addDiamond(e,t,A,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"diamond",e,t,A,i),n}addEllipse(e,t,A,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"ellipse",e,t,A,i),n}addBlob(e,t,A,i){const n=.5*i,a=.5*A,r=a/9,s=.8*n,o=[],l=(A,i)=>{const l=A+Math.random()*r-r/2;o.push([l+Math.random()*r-r/2+A%2*r/6+e,i*Math.sqrt(n*n*(1-l*l/(a*a)))+Math.random()*s-s/2+A%2*s/6+t])};let c;for(c=r/2-a;c<=a-r/2;c+=a/6)l(c,1);for(c=a-r/2;c>=r/2-a;c-=a/6)l(c,-1);o.push(o[0]);const d=this.addLine((e=>{const t=getLineBox(e),n=A/t.w,a=i/t.h;let r;for(r=0;r500){const e=500/Math.max(r.size.width,r.size.height);r.size.width=e*r.size.width,r.size.height=e*r.size.height}return this.elementsDict[n]=this.boxedElement(n,"image",e,t,r.size.width,r.size.height),this.elementsDict[n].fileId=s,this.elementsDict[n].scale=[1,1],n}async addLaTex(e,t,A){const i=nanoid(),n=await tex2dataURL(A,this.plugin);return n?(this.imagesDict[n.fileId]={mimeType:n.mimeType,id:n.fileId,dataURL:n.dataURL,created:n.created,file:null,hasSVGwithBitmap:!1,latex:A},this.elementsDict[i]=this.boxedElement(i,"image",e,t,n.size.width,n.size.height),this.elementsDict[i].fileId=n.fileId,this.elementsDict[i].scale=[1,1],i):null}connectObjects(e,t,A,i,n){if(!this.elementsDict[e]||!this.elementsDict[A])return;if(["line","arrow","freedraw"].includes(this.elementsDict[e].type)||["line","arrow","freedraw"].includes(this.elementsDict[A].type))return;const a=(null==n?void 0:n.padding)?n.padding:10,r=(null==n?void 0:n.numberOfPoints)?n.numberOfPoints:0,s=(e,t)=>{switch(e){case"bottom":return[(t.x+(t.x+t.width))/2,t.y+t.height+a];case"left":return[t.x-a,(t.y+(t.y+t.height))/2];case"right":return[t.x+t.width+a,(t.y+(t.y+t.height))/2];default:return[(t.x+(t.x+t.width))/2,t.y-a]}};let o,l,c,d;const h=this.elementsDict[e],u=this.elementsDict[A];if(!t||!i){const e=h.x+h.width/2,A=u.x+u.width/2,n=h.y+h.height/2,a=u.y+u.height/2;if(!t){const t=intersectElementWithLine(h,[A,a],[e,n],4);0===t.length?[o,l]=[e,n]:[o,l]=t[0]}if(!i){const t=intersectElementWithLine(u,[e,n],[A,a],4);0===t.length?[c,d]=[A,a]:[c,d]=t[0]}}t&&([o,l]=s(t,this.elementsDict[e])),i&&([c,d]=s(i,this.elementsDict[A]));const g=r+2,p=[];for(let e=0;eMath.PI/2&&(i-=Math.PI),this.style.angle=i;const a=this.addText(A.x+A.points[1][0]/2-n.width/2,A.y+A.points[1][1]/2-n.height,t);return this.style.angle=0,a}clear(){this.elementsDict={},this.imagesDict={}}reset(){this.clear(),this.activeScript=null,this.style={strokeColor:"#000000",backgroundColor:"transparent",angle:0,fillStyle:"hachure",strokeWidth:1,strokeStyle:"solid",roughness:1,opacity:100,roundness:null,fontFamily:1,fontSize:20,textAlign:"left",verticalAlign:"top",startArrowHead:null,endArrowHead:"arrow"},this.canvas={theme:"light",viewBackgroundColor:"#FFFFFF",gridSize:0}}isExcalidrawFile(e){return this.plugin.isExcalidrawFile(e)}setView(e){if(!e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(e instanceof ExcalidrawView)this.targetView=e;else{const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}}if("active"==e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(!(e instanceof ExcalidrawView))return;this.targetView=e}if("first"==e){const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}return e instanceof ExcalidrawView&&(this.targetView=e),this.targetView}getExcalidrawAPI(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.excalidrawAPI:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getViewElements(){var e;if(!this.targetView||!(null===(e=this.targetView)||void 0===e?void 0:e._loaded))return errorMessage("targetView not set","getViewElements()"),[];const t=this.targetView.excalidrawAPI;return t?t.getSceneElements():[]}deleteViewElements(e){var t,A,i;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return errorMessage("targetView not set","deleteViewElements()"),!1;const n=null===(i=null===(A=this.targetView)||void 0===A?void 0:A.excalidrawRef)||void 0===i?void 0:i.current;if(!n)return!1;const a=n.getSceneElements(),r=n.getAppState();return this.targetView.updateScene({elements:a.filter((t=>!e.includes(t))),appState:r,commitToHistory:!0}),!0}getViewSelectedElement(){const e=this.getViewSelectedElements();return e?e[0]:null}getViewSelectedElements(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.getViewSelectedElements():(errorMessage("targetView not set","getViewSelectedElements()"),[])}getViewFileForImageElement(e){var t,A,i,n;return this.targetView&&(null===(t=this.targetView)||void 0===t?void 0:t._loaded)?e&&"image"===e.type?null===(n=null===(i=null===(A=this.targetView)||void 0===A?void 0:A.excalidrawData)||void 0===i?void 0:i.getFile(e.fileId))||void 0===n?void 0:n.file:(errorMessage("Must provide an image element as input","getViewFileForImageElement()"),null):(errorMessage("targetView not set","getViewFileForImageElement()"),null)}copyViewElementsToEAforEditing(e){e.forEach((e=>{this.elementsDict[e.id]=cloneElement(e)}))}setViewModeEnabled(e){var t,A,i;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const n=this.targetView;n.updateScene({appState:{viewModeEnabled:e}}),null===(i=null===(A=n.toolsPanelRef)||void 0===A?void 0:A.current)||void 0===i||i.setExcalidrawViewMode(e)}viewUpdateScene(e,t=!1){var A;this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?this.targetView.updateScene(e,t):errorMessage("targetView not set","viewToggleFullScreen()")}viewZoomToElements(e,t){var A;this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?this.targetView.zoomToElements(e,t):errorMessage("targetView not set","viewToggleFullScreen()")}viewToggleFullScreen(e=!1){var t,A,i;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const n=this.targetView,a=n.isFullscreen();e&&(n.updateScene({appState:{viewModeEnabled:!a},commitToHistory:!1}),null===(i=null===(A=this.targetView.toolsPanelRef)||void 0===A?void 0:A.current)||void 0===i||i.setExcalidrawViewMode(!a)),a?n.exitFullscreen():n.gotoFullscreen()}connectObjectWithViewSelectedElement(e,t,A,i){const n=this.getViewSelectedElement();if(!n)return!1;const a=n.id;return this.elementsDict[a]=n,this.connectObjects(e,t,a,A,i),delete this.elementsDict[a],!0}async addElementsToView(e=!1,t=!0,A=!1){var i;if(!this.targetView||!(null===(i=this.targetView)||void 0===i?void 0:i._loaded))return errorMessage("targetView not set","addElementsToView()"),!1;const n=this.getElements();return await this.targetView.addElements(n,e,t,this.imagesDict,A)}registerThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}deregisterThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}getEmbeddedFilesLoader(e){return new EmbeddedFilesLoader(this.plugin,e)}getExportSettings(e,t){return{withBackground:e,withTheme:t}}getBoundingBox(e){const t=getCommonBoundingBox(e);return{topX:t.minX,topY:t.minY,width:t.maxX-t.minX,height:t.maxY-t.minY}}getMaximumGroups(e){return getMaximumGroups(e)}getLargestElement(e){if(!e||0===e.length)return null;let t=e[0];const A=e=>e.height*e.width;let i=A(e[0]);for(let n=1;ni&&(i=a,t=e[n])}return t}getCommonGroupForElements(e){const t=e.map((e=>e.groupIds)).reduce(((e,t)=>t.filter((t=>e.includes(t)))));return t.length>0?t[0]:null}getElementsInTheSameGroupWithElement(e,t){if(!e||!t)return[];const A="text"===e.type&&e.containerId?t.filter((t=>t.id===e.containerId)):[];return 0===e.groupIds.length?1===A.length?[e,A[0]]:[e]:1===A.length?t.filter((t=>t.groupIds.some((t=>e.groupIds.includes(t)))||t===A[0])):t.filter((t=>t.groupIds.some((t=>e.groupIds.includes(t)))))}intersectElementWithLine(e,t,A,i){return intersectElementWithLine(e,t,A,i)}getScriptSettings(){var e;return this.activeScript?null!==(e=this.plugin.settings.scriptEngineSettings[this.activeScript])&&void 0!==e?e:{}:null}async setScriptSettings(e){if(!this.activeScript)return null;this.plugin.settings.scriptEngineSettings[this.activeScript]=e,await this.plugin.saveSettings()}openFileInNewOrAdjacentLeaf(e){if(!(e&&e instanceof obsidian_module.TFile))return null;if(!this.targetView)return null;const t=getNewOrAdjacentLeaf(this.plugin,this.targetView.leaf);return t.openFile(e,{active:!0}),t}measureText(e){var t,A;const i=_measureText(e,this.style.fontSize,this.style.fontFamily,getDefaultLineHeight(this.style.fontFamily));return{width:null!==(t=i.w)&&void 0!==t?t:0,height:null!==(A=i.h)&&void 0!==A?A:0}}async getOriginalImageSize(e){var t;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return errorMessage("targetView not set","getOriginalImageSize()"),null;if(!e||"image"!==e.type)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const A=this.targetView.excalidrawData.getFile(e.fileId);if(!A)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const i="dark"===this.getExcalidrawAPI().getAppState().theme,n=A.getImage(i);return await getImageSize(n)}verifyMinimumPluginVersion(e){return verifyMinimumPluginVersion(e)}isExcalidrawView(e){return e instanceof ExcalidrawView}selectElementsInView(e){var t;this.targetView&&(null===(t=this.targetView)||void 0===t?void 0:t._loaded)?e&&0!==e.length&&this.getExcalidrawAPI().selectElements(e):errorMessage("targetView not set","selectElementsInView()")}generateElementId(){return nanoid()}cloneElement(e){const t=JSON.parse(JSON.stringify(e));return t.id=nanoid(),t}moveViewElementToZIndex(e,t){var A;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return void errorMessage("targetView not set","moveViewElementToZIndex()");const i=this.getExcalidrawAPI(),n=this.getViewElements(),a=n.filter((t=>t.id===e));if(0===a.length)return void errorMessage(`Element (id: ${e}) not found`,"moveViewElementToZIndex");if(t>=n.length)return void i.bringToFront(a);if(t<0)return void i.sendToBack(a);const r=n.indexOf(a[0]);n.splice(t,0,n.splice(r,1)[0]),this.targetView.updateScene({elements:n,commitToHistory:!0})}hexStringToRgb(e){const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}rgbToHexString(e){return O$1({r:e[0],g:e[1],b:e[2]}).stringHEX({alpha:!1})}hslToRgb(e){const t=O$1({h:e[0],s:e[1],l:e[2]});return[t.red,t.green,t.blue]}rgbToHsl(e){const t=O$1({r:e[0],g:e[1],b:e[2]});return[t.hue,t.saturation,t.lightness]}colorNameToHex(e){return COLOR_NAMES.has(e.toLowerCase().trim())?COLOR_NAMES.get(e.toLowerCase().trim()):e.trim()}getCM(e){if(e)return"string"==typeof e&&(e=this.colorNameToHex(e)),O$1(e);log("Creates a CM object. Visit https://github.com/lbragile/ColorMaster for documentation.")}importSVG(e){const t=svgToExcalidraw(e);return t.hasErrors?(new obsidian_module.Notice(`There were errors while parsing the given SVG:\n${[...t.errors].map((e=>e.innerHTML))}`),!1):(this.copyViewElementsToEAforEditing(t.content),!0)}}async function initExcalidrawAutomate(e){await initFonts();const t=new ExcalidrawAutomate(e);return window.ExcalidrawAutomate=t,t}function destroyExcalidrawAutomate(){delete window.ExcalidrawAutomate}function normalizeLinePoints(e){const t=[],[A,i]=e[0];for(let n=0;n-1||t.search("excalidraw-plugin: locked\n")>-1;await a.loadData(t,l,o?TextMode.parsed:TextMode.raw);let d=t.search("# Text Elements\n");-1==d&&(d=t.search("# Drawing\n"));let h=a.scene;A&&await i.loadSceneFiles(a,(e=>{if(e&&0!==e.length){for(const t of e)t.hasSVGwithBitmap&&(c=!0),a.scene.files[t.id]={mimeType:t.mimeType,id:t.id,dataURL:t.dataURL,created:t.created};h=scaleLoadedImage(a.scene,e).scene}}),n);let u=h.elements;if(s.hasGroupref){const t=s.hasSectionref?getTextElementsMatchingQuery(h.elements,["# "+s.sectionref],!0):h.elements.filter((e=>e.id===s.blockref));t.length>0&&(u=e.ea.getElementsInTheSameGroupWithElement(t[0],h.elements))}return s.hasTaskbone&&(u=u.filter((t=>{var A;return"freedraw"===t.type||"image"===t.type&&!e.isExcalidrawFile(null===(A=a.getFile(t.fileId))||void 0===A?void 0:A.file)}))),{elements:u,appState:h.appState,frontmatter:t.substring(0,d),files:h.files,hasSVGwithBitmap:c}}return{elements:[],appState:{},frontmatter:null,files:[],hasSVGwithBitmap:c}}async function createPNG(e,t=1,A,i,n,a,r,s=[],o,l,c,d){var h,u,g,p,m,w,f;i||(i=new EmbeddedFilesLoader(o)),c=null!=c?c:o.settings.exportPaddingSVG;const B=e?await getTemplate(o,e,!0,i,l):null;let E=null!==(h=null==B?void 0:B.elements)&&void 0!==h?h:[];E=E.concat(s);const b=null!=d?d:{};return(null==B?void 0:B.files)&&Object.values(B.files).forEach((e=>{b[e.id]=e})),await getPNG({type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:E,appState:{theme:null!==(g=null!=n?n:null===(u=null==B?void 0:B.appState)||void 0===u?void 0:u.theme)&&void 0!==g?g:a,viewBackgroundColor:null!==(m=null===(p=null==B?void 0:B.appState)||void 0===p?void 0:p.viewBackgroundColor)&&void 0!==m?m:r},files:b},{withBackground:null!==(w=null==A?void 0:A.withBackground)&&void 0!==w?w:o.settings.exportWithBackground,withTheme:null!==(f=null==A?void 0:A.withTheme)&&void 0!==f?f:o.settings.exportWithTheme},c,t)}async function createSVG(e,t=!1,A,i,n,a,r,s=[],o,l,c,d){var h,u,g,p,m,w,f;i||(i=new EmbeddedFilesLoader(o));const B=e?await getTemplate(o,e,!0,i,l):null;let E=null!==(h=null==B?void 0:B.elements)&&void 0!==h?h:[];E=E.concat(s),c=null!=c?c:o.settings.exportPaddingSVG;const b=null!=d?d:{};(null==B?void 0:B.files)&&Object.values(B.files).forEach((e=>{b[e.id]=e}));const v=await getSVG({type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:E,appState:{theme:null!==(g=null!=n?n:null===(u=null==B?void 0:B.appState)||void 0===u?void 0:u.theme)&&void 0!==g?g:a,viewBackgroundColor:null!==(m=null===(p=null==B?void 0:B.appState)||void 0===p?void 0:p.viewBackgroundColor)&&void 0!==m?m:r},files:b},{withBackground:null!==(w=null==A?void 0:A.withBackground)&&void 0!==w?w:o.settings.exportWithBackground,withTheme:null!==(f=null==A?void 0:A.withTheme)&&void 0!==f?f:o.settings.exportWithTheme},c),C=getEmbeddedFilenameParts(e);if(!C.hasGroupref&&(C.hasBlockref||C.hasSectionref)){let e=C.hasSectionref?getTextElementsMatchingQuery(E,["# "+C.sectionref],!0):E.filter((e=>e.id===C.blockref));if(e.length>0){const t=e[0].containerId;t&&(e=e.concat(E.filter((e=>e.id===t))));const A=o.ea.getBoundingBox(e),i=o.ea.getBoundingBox(E);v.viewBox.baseVal.x=A.topX-i.topX,v.viewBox.baseVal.y=A.topY-i.topY,v.viewBox.baseVal.width=A.width+2*c,v.viewBox.baseVal.height=A.height+2*c}}return(null==B?void 0:B.hasSVGwithBitmap)&&v.setAttribute("hasbitmap","true"),t?embedFontsInSVG(v,o):v}function estimateLineBound(e){let t=1/0,A=1/0,i=-1/0,n=-1/0;for(const[a,r]of e)t=Math.min(t,a),A=Math.min(A,r),i=Math.max(i,a),n=Math.max(n,r);return[t,A,i,n]}function estimateBounds(e){const t=getCommonBoundingBox(e);return[t.minX,t.minY,t.maxX,t.maxY]}function repositionElementsToCursor(e,t,A=!1){const[i,n,a,r]=estimateBounds(e);let[s,o]=[0,0];return[s,o]=A?[t.x-(i+a)/2,t.y-(n+r)/2]:[t.x-i,t.y-n],e.forEach((e=>{e.x=e.x+s,e.y=e.y+o})),e}function errorMessage(e,t){switch(e){case"targetView not set":errorlog({where:"ExcalidrawAutomate",source:t,message:"targetView not set, or no longer active. Use setView before calling this function"});break;case"mobile not supported":errorlog({where:"ExcalidrawAutomate",source:t,message:"this function is not avalable on Obsidian Mobile"});break;default:errorlog({where:"ExcalidrawAutomate",source:t,message:null!=e?e:"unknown error"})}}const insertLaTeXToView=e=>{const t=e.plugin.app,A=e.plugin.ea;new Prompt(t,t$d("ENTER_LATEX"),e.plugin.settings.latexBoilerplate,"\\color{red}\\oint_S {E_n dA = \\frac{1}{{\\varepsilon _0 }}} Q_{inside}").openAndGetValue((async t=>{t&&(A.reset(),await A.addLaTex(0,0,t),A.setView(e),A.addElementsToView(!0,!1,!0))}))},search=async e=>{const t=e.plugin.ea;t.reset(),t.setView(e);const A=t.getViewElements().filter((e=>"text"===e.type));if(0===A.length)return;let i=await ScriptEngine.inputPrompt(e,e.plugin,e.plugin.app,"Search for","use quotation marks for exact match","");if(!i)return;const n=i.matchAll(/"(.*?)"/g);let a,r=[];for(;!(a=n.next()).done;)r.push(a.value[1]);i=i.replaceAll(/"(.*?)"/g,""),r=r.concat(i.split(" ").filter((e=>0!==e.length))),t.targetView.selectElementsMatchingQuery(A,r)},getTextElementsMatchingQuery=(e,t,A=!1)=>e&&0!==e.length&&t&&0!==t.length?e.filter((e=>"text"===e.type&&t.some((t=>{if(A){const A=e.rawText.toLowerCase().split("\n")[0].trim().match(/^#*(# .*)/);return!(!A||2!==A.length)&&A[1]===t.toLowerCase()}return e.rawText.toLowerCase().replaceAll("\n"," ").trim().match(t.toLowerCase())})))):[],cloneElement=e=>Object.assign(Object.assign({},e),{version:e.version+1,updated:Date.now(),versionNonce:Math.floor(1e9*Math.random())}),verifyMinimumPluginVersion=e=>PLUGIN_VERSION===e||isVersionNewerThanOther(PLUGIN_VERSION,e),URL$1="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/index-new.md";class ScriptInstallPrompt extends obsidian_module.Modal{constructor(e){super(e.app),this.plugin=e}async onOpen(){this.contentEl.classList.add("excalidraw-scriptengine-install"),this.containerEl.classList.add("excalidraw-scriptengine-install");try{const e=await obsidian_module.request({url:URL$1});if(!e)return new obsidian_module.Notice("Error opening the Excalidraw Script Store page. Please double check that you can access the website. I've logged the link in developer console (press CTRL+SHIFT+i)",5e3),log(URL$1),void this.close();await obsidian_module.MarkdownRenderer.renderMarkdown(e,this.contentEl,"",this.plugin),this.contentEl.querySelectorAll("h1[data-heading],h2[data-heading],h3[data-heading]").forEach((e=>{e.setAttribute("id",e.getAttribute("data-heading"))})),this.contentEl.querySelectorAll("a.internal-link").forEach((e=>{e.removeAttribute("target")}))}catch(e){errorlog({where:"ScriptInstallPrompt.onOpen",error:e}),new obsidian_module.Notice("Could not open ScriptEngine repository"),this.close()}}onClose(){this.contentEl.empty()}}function r(e){var t,A,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.plugin.saveSettings();const e=this.plugin.settings.customPens[this.pen],t=this.view.excalidrawAPI;setPen(e,t),t.setActiveTool({type:"freedraw"})}}async createForm(){const e=e=>{let t="";if(COLOR_NAMES.has(e))return[COLOR_NAMES.get(e),t];const A=(new Option).style;if(A.color=e,A.color){const e=A.color.match(/^[^\d]*(\d*)[^\d]*(\d*)[^\d]*(\d*)[^\d]*([\d\.]*)?/);return e?(t=e[4]?(Math.round(255*parseFloat(e[4]))<<0).toString(16).padStart(2,"0"):"",[`#${(parseInt(e[1])<<0).toString(16).padStart(2,"0")}${(parseInt(e[2])<<0).toString(16).padStart(2,"0")}${(parseInt(e[3])<<0).toString(16).padStart(2,"0")}`,t]):[null,t]}return[null,t]},t=this.plugin.settings.customPens[this.pen],A=this.contentEl;let i,n,a,r,s;A.createEl("h1",{text:"Pen settings"}),new obsidian_module.Setting(A).setName("Pen type").setDesc("Select type of pen").addDropdown((e=>{e.addOption("default","Excalidraw Default").addOption("highlighter","Highlighter").addOption("finetip","Fine tip pen").addOption("fountain","Fountain pen").addOption("marker","Marker with Outline").addOption("thick-thin","Mindmap Thick-Thin").addOption("thin-thick-thin","Mindmap Thin-Thick-Thin").setValue(t.type).onChange((e=>{this.dirty=!0,t.type=e}))})).addButton((e=>e.setButtonText("Apply").onClick((()=>{this.dirty=!0,t.strokeColor=PENS[t.type].strokeColor,t.backgroundColor=PENS[t.type].backgroundColor,t.fillStyle=PENS[t.type].fillStyle,t.strokeWidth=PENS[t.type].strokeWidth,t.roughness=PENS[t.type].roughness,t.penOptions=Object.assign({},PENS[t.type].penOptions),A.empty(),this.createForm()})))),i=new obsidian_module.Setting(A).setName(fragWithHTML(t.freedrawOnly?"Stroke & fill applies to: Freedraw only":"Stroke & fill applies to: All shapes")).setDesc(fragWithHTML('"All shapes" means that if for example, you select a blue pen with dashed fill and then switch to a different tool (e.g. to a line, a circle, an arrow - i.e. not the freedraw tool), those will all have the same blue line and dashed fill.
"Only applies to the freedraw line" means that if for example you are writing black text, and you select a custom pen (e.g. a yellow highlighter), then after using the highlighter you switch to another tool, the previous settings (e.g. black stroke color) will apply to the new shape.')).addToggle((e=>e.setValue(t.freedrawOnly).onChange((e=>{this.dirty=!0,i.setName(fragWithHTML(e?"Stroke & fill applies to: Freedraw only":"Stroke & fill applies to: All shapes")),t.freedrawOnly=e}))));let o,l,c,d,h,u,g,[p,m]=e(t.strokeColor),w=!1;s=new obsidian_module.Setting(A).setName(fragWithHTML(Boolean(t.strokeColor)?"Stroke color: Preset color":"Stroke color: Current")).setDesc(fragWithHTML("Use current stroke color of the canvas, or set a specific preset color for the pen")).addToggle((A=>A.setValue(!Boolean(t.strokeColor)).onChange((A=>{this.dirty=!0,n.settingEl.style.display=A?"none":"",s.setName(fragWithHTML(A?"Stroke color: Current":"Stroke color: Preset color")),A?delete t.strokeColor:(r.getValue()||([p,m]=e("black"),a.setValue(p),r.setValue("black")),t.strokeColor=r.getValue())})))),n=new obsidian_module.Setting(A).setName("Select stroke color").addButton((A=>A.setButtonText("Use Canvas Current").onClick((()=>{var A,i;const n=this.api.getAppState(),s=null!==(i=null===(A=n.resetCustomPen)||void 0===A?void 0:A.currentItemStrokeColor)&&void 0!==i?i:n.currentItemStrokeColor;[p,m]=e(s),t.strokeColor=s,this.dirty=!0,r.setValue(s),w=!0,a.setValue(p)})))).addText((A=>{r=A,A.setValue(t.strokeColor).onChange((A=>{w=!0,this.dirty=!0,t.strokeColor=A,[p,m]=e(A),p&&a.setValue(p)}))})).addColorPicker((e=>{a=e,e.setValue(null!=p?p:"#000000").onChange((e=>{w?w=!1:(this.dirty=!0,t.strokeColor=e+m,r.setValue(e+m))}))})),n.settingEl.style.display=Boolean(t.strokeColor)?"":"none";let[f,B]=e(t.backgroundColor);o=new obsidian_module.Setting(A).setName(fragWithHTML(Boolean(t.backgroundColor)?"Background color: Preset color":"Background color: Current")).setDesc(fragWithHTML("Toggle to use the current background color of the canvas; or a preset color")).addToggle((A=>A.setValue(!Boolean(t.backgroundColor)).onChange((A=>{this.dirty=!0,o.setName(fragWithHTML(A?"Background color: Current":"Background color: Preset color")),c.settingEl.style.display=A?"none":"",l.settingEl.style.display=A||"transparent"===t.backgroundColor?"none":"",A?delete t.backgroundColor:(h.getValue()||([f,B]=e("black"),d.setValue(f),h.setValue("black")),u.setValue(!1))})))),c=new obsidian_module.Setting(A).setName(fragWithHTML("transparent"===t.backgroundColor?"Background: Transparent":"Color: Preset color")).setDesc("Background has color or is transparent").addToggle((e=>{u=e,e.setValue("transparent"===t.backgroundColor).onChange((e=>{this.dirty=!0,l.settingEl.style.display=e?"none":"",g.settingEl.style.display=e?"none":"",c.setName(fragWithHTML(e?"Background: Transparent":"Color: Preset color")),t.backgroundColor=e?"transparent":d.getValue()}))})),c.settingEl.style.display=Boolean(t.backgroundColor)?"":"none";let E,b,v,C,y,F,x,S,T,I=!1;l=new obsidian_module.Setting(A).setName("Background color").addButton((A=>A.setButtonText("Use Canvas Current").onClick((()=>{var A,i;const n=this.api.getAppState(),a=null!==(i=null===(A=n.resetCustomPen)||void 0===A?void 0:A.currentItemBackgroundColor)&&void 0!==i?i:n.currentItemBackgroundColor;[f,B]=e(a),t.backgroundColor=a,this.dirty=!0,h.setValue(a),I=!0,d.setValue(f)})))).addText((A=>{h=A,A.setValue(t.backgroundColor).onChange((A=>{I=!0,this.dirty=!0,t.backgroundColor=A,[f,B]=e(A),f&&d.setValue(f)}))})).addColorPicker((e=>{d=e,e.setValue(null!=f?f:"#000000").onChange((e=>{I?I=!1:(this.dirty=!0,t.backgroundColor=e+B,h.setValue(e+B))}))})),l.settingEl.style.display=Boolean(t.backgroundColor)&&"transparent"!==t.backgroundColor?"":"none",g=new obsidian_module.Setting(A).setName("Fill Style").addDropdown((e=>e.addOption("","Unset").addOption("dots","Dots (⚠ VERY SLOW performance on large objects!)").addOption("zigzag","Zigzag").addOption("zigzag-line","Zigzag-line").addOption("dashed","Dashed").addOption("hachure","Hachure").addOption("cross-hatch","Cross-hatch").addOption("solid","Solid").setValue(t.fillStyle).onChange((e=>{this.dirty=!0,t.fillStyle=e})))),g.settingEl.style.display=Boolean(t.backgroundColor)&&"transparent"!==t.backgroundColor?"":"none",E=new obsidian_module.Setting(A).setName(fragWithHTML(`Sloppiness: ${null===t.roughness?"Not Set":t.roughness<=.5?"Architect (":t.roughness<=1.5?"Artist (":"Cartoonist ("}${null===t.roughness?"":`${t.roughness})`}`)).setDesc("Line sloppiness of the shape fill pattern").addSlider((e=>e.setLimits(-.5,3,.5).setValue(null===t.roughness?-.5:t.roughness).onChange((e=>{this.dirty=!0,t.roughness=-.5===e?null:e,E.setName(fragWithHTML(`Sloppiness: ${null===t.roughness?"Not Set":t.roughness<=.5?"Architect (":t.roughness<=1.5?"Artist (":"Cartoonist ("}${null===t.roughness?"":`${t.roughness})`}`))})))),b=new obsidian_module.Setting(A).setName(fragWithHTML(`Stroke Width ${0===t.strokeWidth?"Not Set":t.strokeWidth}`)).addSlider((e=>e.setLimits(0,5,.5).setValue(t.strokeWidth).onChange((e=>{this.dirty=!0,t.strokeWidth=e,b.setName(fragWithHTML(`Stroke Width ${0===t.strokeWidth?"Not Set":t.strokeWidth}`))})))),new obsidian_module.Setting(A).setName("Highlighter pen?").addToggle((e=>e.setValue(t.penOptions.highlighter).onChange((e=>{this.dirty=!0,t.penOptions.highlighter=e})))),new obsidian_module.Setting(A).setName("Pressure sensitve pen?").setDesc(fragWithHTML("toggle on: pressure sensitive
toggle off: constant pressure")).addToggle((e=>e.setValue(!t.penOptions.constantPressure).onChange((e=>{this.dirty=!0,t.penOptions.constantPressure=!e,v.settingEl.style.display=t.penOptions.constantPressure?"none":""})))),t.penOptions.hasOutline&&0===t.penOptions.outlineWidth&&(t.penOptions.outlineWidth=.5,this.dirty=!0),!t.penOptions.hasOutline&&t.penOptions.outlineWidth>0&&(t.penOptions.outlineWidth=0,this.dirty=!0),C=new obsidian_module.Setting(A).setName(fragWithHTML(0===t.penOptions.outlineWidth?"No outline":`Outline width ${t.penOptions.outlineWidth}`)).setDesc("If the stroke has an outline, this will mean the stroke color is the outline color, and the background color is the pen stroke's fill color. If the pen does not have an outline then the pen color is the stroke color. The Fill Style setting applies to the fill style of the enclosed shape, not of the line itself. The line can only have solid fill.").addSlider((e=>e.setLimits(0,8,.5).setValue(t.penOptions.outlineWidth).onChange((e=>{this.dirty=!0,t.penOptions.outlineWidth=e,t.penOptions.hasOutline=e>0,C.setName(fragWithHTML(0===t.penOptions.outlineWidth?"No outline":`Outline width ${t.penOptions.outlineWidth}`))})))),A.createEl("h2",{text:"Perfect Freehand settings"}),A.createEl("p").innerHTML='Read the Perfect Freehand documentation following this link.',y=new obsidian_module.Setting(A).setName(fragWithHTML(`Thinnning ${t.penOptions.options.thinning}`)).setDesc(fragWithHTML("The effect of pressure on the stroke's size.
To create a stroke with a steady line, set the thinning option to 0.
To create a stroke that gets thinner with pressure instead of thicker, use a negative number for the thinning option.")).addSlider((e=>e.setLimits(-1,1,.05).setValue(t.penOptions.options.thinning).onChange((e=>{this.dirty,y.setName(fragWithHTML(`Thinnning ${e}`)),t.penOptions.options.thinning=e})))),F=new obsidian_module.Setting(A).setName(fragWithHTML(`Smoothing ${t.penOptions.options.smoothing}`)).setDesc(fragWithHTML("How much to soften the stroke's edges.")).addSlider((e=>e.setLimits(0,1,.05).setValue(t.penOptions.options.smoothing).onChange((e=>{this.dirty,F.setName(fragWithHTML(`Smoothing ${e}`)),t.penOptions.options.smoothing=e})))),x=new obsidian_module.Setting(A).setName(fragWithHTML(`Streamline ${t.penOptions.options.streamline}`)).setDesc(fragWithHTML("\tHow much to streamline the stroke.")).addSlider((e=>e.setLimits(0,1,.05).setValue(t.penOptions.options.streamline).onChange((e=>{this.dirty,x.setName(fragWithHTML(`Streamline ${e}`)),t.penOptions.options.streamline=e})))),new obsidian_module.Setting(A).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.easing=e})))),v=new obsidian_module.Setting(A).setName("Simulate Pressure").setDesc("Whether to simulate pressure based on velocity.").addDropdown((e=>e.addOption("true","Always").addOption("false","Never").addOption("","Yes for mouse, No for pen").setValue(!0===t.penOptions.options.simulatePressure?"true":!1===t.penOptions.options.simulatePressure?"false":"").onChange((e=>{switch(this.dirty=!0,e){case"true":t.penOptions.options.simulatePressure=!0;break;case"false":t.penOptions.options.simulatePressure=!1;break;default:delete t.penOptions.options.simulatePressure}})))),v.settingEl.style.display=t.penOptions.constantPressure?"none":"",A.createEl("h3",{text:"Start"}),A.createEl("p",{text:"Tapering options for the start of the line."}),new obsidian_module.Setting(A).setName("Cap Start").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(t.penOptions.options.start.cap).onChange((e=>{this.dirty=!0,t.penOptions.options.start.cap=e})))),S=new obsidian_module.Setting(A).setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.start.taper?"true":t.penOptions.options.start.taper}`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof t.penOptions.options.start.taper?151:t.penOptions.options.start.taper).onChange((e=>{this.dirty,t.penOptions.options.start.taper=151===e||e,S.setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.start.taper?"true":t.penOptions.options.start.taper}`))})))),new obsidian_module.Setting(A).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.start.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.start.easing=e})))),A.createEl("h3",{text:"End"}),A.createEl("p",{text:"Tapering options for the end of the line."}),new obsidian_module.Setting(A).setName("Cap End").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(t.penOptions.options.end.cap).onChange((e=>{this.dirty=!0,t.penOptions.options.end.cap=e})))),T=new obsidian_module.Setting(A).setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.end.taper?"true":t.penOptions.options.end.taper}`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof t.penOptions.options.end.taper?151:t.penOptions.options.end.taper).onChange((e=>{this.dirty,t.penOptions.options.end.taper=151===e||e,T.setName(fragWithHTML(`Taper: ${!0===t.penOptions.options.end.taper?"true":t.penOptions.options.end.taper}`))})))),new obsidian_module.Setting(A).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info click here')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.end.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.end.easing=e}))))}}const ICONS={ExportImage:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("g",{strokeWidth:"1.25"},React__namespace.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),React__namespace.createElement("path",{d:"M15 8h.01"}),React__namespace.createElement("path",{d:"M12 20h-5a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v5"}),React__namespace.createElement("path",{d:"M4 15l4 -4c.928 -.893 2.072 -.893 3 0l4 4"}),React__namespace.createElement("path",{d:"M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"}),React__namespace.createElement("path",{d:"M19 16v6"}),React__namespace.createElement("path",{d:"M22 19l-3 3l-3 -3"}))),Discord:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"var(--icon-fill-color)",stroke:"none",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 640 512"},React__namespace.createElement("path",{d:"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"})),Github:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}),React__namespace.createElement("path",{d:"M9 18c-4.51 2-5-2-7-2"})),YouTube:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M12 19c-2.3 0-6.4-.2-8.1-.6-.7-.2-1.2-.7-1.4-1.4-.3-1.1-.5-3.4-.5-5s.2-3.9.5-5c.2-.7.7-1.2 1.4-1.4C5.6 5.2 9.7 5 12 5s6.4.2 8.1.6c.7.2 1.2.7 1.4 1.4.3 1.1.5 3.4.5 5s-.2 3.9-.5 5c-.2.7-.7 1.2-1.4 1.4-1.7.4-5.8.6-8.1.6 0 0 0 0 0 0z"}),React__namespace.createElement("polygon",{points:"10 15 15 12 10 9"})),heart:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M20.42 4.58a5.4 5.4 0 0 0-7.65 0l-.77.78-.77-.78a5.4 5.4 0 0 0-7.65 0C1.46 6.7 1.33 10.28 4 13l8 8 8-8c2.67-2.72 2.54-6.3.42-8.42z"})),twitter:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"})),exportLibrary:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 190",fill:"var(--icon-fill-color)"},React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M50 10h20v20H50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M50 10h20m-20 0h20m0 0v20m0-20v20m0 0H50m20 0H50m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M90 10h20v20H90"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M90 10h20m-20 0h20m0 0v20m0-20v20m0 0H90m20 0H90m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M130 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M130 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M170 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M170 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M70 50h60v80h20l-50 50-50-50h20V50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M70 50h60m-60 0h60m0 0v80m0-80v80m0 0h20m-20 0h20m0 0-50 50m50-50-50 50m0 0-50-50m50 50-50-50m0 0h20m-20 0h20m0 0V50m0 80V50m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M10 10h20v20H10"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M10 10h20m-20 0h20m0 0v20m0-20v20m0 0H10m20 0H10m0 0V10m0 20V10"}))),insertPDF:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M64 464H96v48H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V288H336V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z"})),insertImage:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"})),insertMD:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"})),insertLaTeX:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"})),insertLink:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"})),search:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7C401.8 87.79 326.8 13.32 235.2 1.723C99.01-15.51-15.51 99.01 1.724 235.2c11.6 91.64 86.08 166.7 177.6 178.9c53.8 7.189 104.3-6.236 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 0C515.9 484.7 515.9 459.3 500.3 443.7zM79.1 208c0-70.58 57.42-128 128-128s128 57.42 128 128c0 70.58-57.42 128-128 128S79.1 278.6 79.1 208z"})),ocr:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"m6 18 6-12 6 12"}),React__namespace.createElement("path",{d:"M8 14h8"}),React__namespace.createElement("path",{d:"M3 7V5a2 2 0 0 1 2-2h2"}),React__namespace.createElement("path",{d:"M17 3h2a2 2 0 0 1 2 2v2"}),React__namespace.createElement("path",{d:"M21 17v2a2 2 0 0 1-2 2h-2"}),React__namespace.createElement("path",{d:"M7 21H5a2 2 0 0 1-2-2v-2"})),scriptEngine:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"4"},React__namespace.createElement("g",{transform:"translate(-8,-8)"},React__namespace.createElement("path",{d:"M24.318 37.983c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749m.126-.104c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749",fill:"none",strokeWidth:"2"}),React__namespace.createElement("path",{d:"M81.235 56.502a23.3 23.3 0 0 1-1.46 8.068 20.785 20.785 0 0 1-1.762 3.72 24.068 24.068 0 0 1-5.337 6.26 22.575 22.575 0 0 1-3.449 2.358 23.726 23.726 0 0 1-7.803 2.803 24.719 24.719 0 0 1-8.333 0 24.102 24.102 0 0 1-4.028-1.074 23.71 23.71 0 0 1-3.776-1.729 23.259 23.259 0 0 1-6.369-5.265 23.775 23.775 0 0 1-2.416-3.353 24.935 24.935 0 0 1-1.762-3.72 23.765 23.765 0 0 1-1.083-3.981 23.454 23.454 0 0 1 0-8.173c.252-1.336.604-2.698 1.083-3.956a24.935 24.935 0 0 1 1.762-3.72 22.587 22.587 0 0 1 2.416-3.378c.881-1.048 1.888-2.017 2.946-2.908a24.38 24.38 0 0 1 3.423-2.357 23.71 23.71 0 0 1 3.776-1.73 21.74 21.74 0 0 1 4.028-1.047 23.437 23.437 0 0 1 8.333 0 24.282 24.282 0 0 1 7.803 2.777 26.198 26.198 0 0 1 3.45 2.357 24.62 24.62 0 0 1 5.336 6.287 20.785 20.785 0 0 1 1.762 3.72 21.32 21.32 0 0 1 1.083 3.955c.251 1.336.302 3.405.377 4.086.05.681.05-.68 0 0",fill:"none"}),React__namespace.createElement("path",{d:"M69.404 56.633c-6.596-3.3-13.216-6.6-19.51-9.744m19.51 9.744c-6.747-3.379-13.493-6.758-19.51-9.744m0 0v19.489m0-19.49v19.49m0 0c4.355-2.148 8.71-4.322 19.51-9.745m-19.51 9.745c3.978-1.965 7.93-3.956 19.51-9.745m0 0h0m0 0h0"}))),openLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),openLinkProperties:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8",fill:"var(--icon-fill-color)"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),switchToMarkdown:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",strokeWidth:"10",fill:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"})),gotoFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 32H32C14.31 32 0 46.31 0 64v96c0 17.69 14.31 32 32 32s32-14.31 32-32V96h64c17.69 0 32-14.31 32-32S145.7 32 128 32zM416 32h-96c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32V64C448 46.31 433.7 32 416 32zM128 416H64v-64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96c0 17.69 14.31 32 32 32h96c17.69 0 32-14.31 32-32S145.7 416 128 416zM416 320c-17.69 0-32 14.31-32 32v64h-64c-17.69 0-32 14.31-32 32s14.31 32 32 32h96c17.69 0 32-14.31 32-32v-96C448 334.3 433.7 320 416 320z"})),exitFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 320H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32v-96C160 334.3 145.7 320 128 320zM416 320h-96c-17.69 0-32 14.31-32 32v96c0 17.69 14.31 32 32 32s32-14.31 32-32v-64h64c17.69 0 32-14.31 32-32S433.7 320 416 320zM320 192h96c17.69 0 32-14.31 32-32s-14.31-32-32-32h-64V64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96C288 177.7 302.3 192 320 192zM128 32C110.3 32 96 46.31 96 64v64H32C14.31 128 0 142.3 0 160s14.31 32 32 32h96c17.69 0 32-14.31 32-32V64C160 46.31 145.7 32 128 32z"})),releaseNotes:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M0 219.2v212.5c0 14.25 11.62 26.25 26.5 27C75.32 461.2 180.2 471.3 240 511.9V245.2C181.4 205.5 79.99 194.8 29.84 192C13.59 191.1 0 203.6 0 219.2zM482.2 192c-50.09 2.848-151.3 13.47-209.1 53.09C272.1 245.2 272 245.3 272 245.5v266.5c60.04-40.39 164.7-50.76 213.5-53.28C500.4 457.9 512 445.9 512 431.7V219.2C512 203.6 498.4 191.1 482.2 192zM352 96c0-53-43-96-96-96S160 43 160 96s43 96 96 96S352 149 352 96z"})),rawMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 60"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"4",d:"M20 10H10m10 0H10m0 0v40m0-40v40m0 0h10m-10 0h10M40 10H30m10 0H30m0 0v40m0-40v40m0 0h10m-10 0h10M60 10h10m-10 0h10m0 0v40m0-40v40m0 0H60m10 0H60M80 10h10m-10 0h10m0 0v40m0-40v40m0 0H80m10 0H80"})),parsedMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M574.1 280.4l-45.38-181.8c-5.875-23.63-21.62-44-43-55.75c-21.5-11.75-46.1-14.13-70.25-6.375l-15.25 5.125c-8.375 2.75-12.87 11.88-10 20.25l5 15.13c2.75 8.375 11.88 12.88 20.25 10.13l13.12-4.375c10.88-3.625 23-3.625 33.25 1.75c10.25 5.375 17.5 14.5 20.38 25.75l38.38 153.9c-22.12-6.875-49.75-12.5-81.13-12.5c-34.88 0-73.1 7-114.9 26.75H251.4C210.5 258.6 171.4 251.6 136.5 251.6c-31.38 0-59 5.625-81.12 12.5l38.38-153.9c2.875-11.25 10.12-20.38 20.5-25.75C124.4 79.12 136.5 79.12 147.4 82.74l13.12 4.375c8.375 2.75 17.5-1.75 20.25-10.13l5-15.13C188.6 53.49 184.1 44.37 175.6 41.62l-15.25-5.125c-23.13-7.75-48.75-5.375-70.13 6.375c-21.37 11.75-37.12 32.13-43 55.75L1.875 280.4C.6251 285.4 .0001 290.6 .0001 295.9v70.25C.0001 428.1 51.63 480 115.3 480h37.13c60.25 0 110.4-46 114.9-105.4l2.875-38.63h35.75l2.875 38.63C313.3 433.1 363.4 480 423.6 480h37.13c63.62 0 115.2-51 115.2-113.9V295.9C576 290.6 575.4 285.5 574.1 280.4zM203.4 369.7c-2 26-24.38 46.25-51 46.25H115.2C87 415.1 64 393.6 64 366.1v-37.5c18.12-6.5 43.38-13 72.62-13c23.88 0 47.25 4.375 69.88 13L203.4 369.7zM512 366.1c0 27.5-23 49.88-51.25 49.88h-37.13c-26.62 0-49-20.25-51-46.25l-3.125-41.13c22.62-8.625 46.13-13 70-13c29 0 54.38 6.5 72.5 13V366.1z"})),convertFile:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",viewBox:"0 110 700 340",xmlns:"http://www.w3.org/2000/svg",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"m593.95 239.4v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4688-1.457-3.1875-2.6445-5.0742-3.5h-1.5742c-1.4727-0.49219-3.0039-0.78516-4.5508-0.875h-124.25c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v87.5h-70v-105.88-1.0508c-0.089844-1.5469-0.38281-3.0781-0.875-4.5508v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4727-1.457-3.1914-2.6445-5.0742-3.5h-1.5742c-1.7031-0.875-3.5352-1.4688-5.4258-1.75h-123.55c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v245c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-52.5h70v122.5c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-192.5-1.0508c-0.14453-1.5547-0.5-3.0859-1.0508-4.5508zm-313.95 110.6h-140v-210h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v87.5h-52.5c-6.2539 0-12.031 3.3359-15.156 8.75s-3.125 12.086 0 17.5 8.9023 8.75 15.156 8.75h52.5zm140 70v-105h27.824l-5.0742 5.0742c-3.7031 3.1719-5.9141 7.7461-6.1055 12.617-0.1875 4.8711 1.668 9.6016 5.1133 13.051 3.4492 3.4453 8.1797 5.3008 13.051 5.1133 4.8711-0.19141 9.4453-2.4023 12.617-6.1055l35-35c3.2578-3.2773 5.0898-7.7148 5.0898-12.336 0-4.625-1.832-9.0586-5.0898-12.34l-35-35c-4.5078-3.8555-10.66-5.1719-16.348-3.4883-5.6875 1.6797-10.137 6.1289-11.816 11.816-1.6836 5.6914-0.37109 11.844 3.4883 16.348l5.0742 5.0742h-27.824v-69.824h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v157.5z"})),cog:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z"})),trayMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M618.1 97.67c-13.02-4.375-27.45 .1562-35.72 11.16L464 266.7l-118.4-157.8c-8.266-11.03-22.64-15.56-35.72-11.16C296.8 102 288 114.2 288 128v256c0 17.69 14.33 32 32 32s32-14.31 32-32v-160l86.41 115.2c12.06 16.12 39.13 16.12 51.19 0L576 224v160c0 17.69 14.33 32 32 32s32-14.31 32-32v-256C640 114.2 631.2 102 618.1 97.67zM224 96.01H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h64v223.1c0 17.69 14.33 31.99 32 31.99s32-14.3 32-31.99V160h64c17.67 0 32-14.31 32-32S241.7 96.01 224 96.01z"})),copyElementLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 260 260","aria-hidden":"true",focusable:"false",role:"img"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"8",d:"M10 10h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0V10m0 40V10M210 10h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0V10m0 40V10M210 210h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0v-40m0 40v-40M10 210h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0v-40m0 40v-40M30 210V50m0 160V50M50 30h160M50 30h160M230 50v160m0-160v160M50 230h160m-160 0h160"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M110 90c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10m0-80c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10M150 90c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10m0-80c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M89.868 130.198c13.36-.03 66.78-.17 80.13-.2m-80.13.2c13.36-.03 66.78-.17 80.13-.2"})),importSVG:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 526 526"},React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"m133.462 71 .33-6.54.97-6.34 1.58-6.13 2.16-5.88 2.69-5.6 3.21-5.27 3.69-4.93 4.13-4.55 4.55-4.13 4.93-3.69 5.27-3.21 5.6-2.69 5.88-2.16 6.13-1.58 6.34-.97 6.54-.33h160v128l.16 3.28.49 3.18.79 3.07 1.07 2.94 1.35 2.8 1.6 2.63 1.84 2.47 2.06 2.27 2.27 2.06 2.47 1.84 2.63 1.6 2.8 1.35 2.94 1.07 3.07.79 3.18.49 3.28.16h128v288l-.33 6.54-.97 6.34-1.58 6.13-2.16 5.88-2.69 5.6-3.21 5.27-3.69 4.93-4.13 4.55-4.55 4.13-4.93 3.69-5.27 3.21-5.6 2.69-5.88 2.16-6.13 1.58-6.34.97-6.54.33h-256l-6.54-.33-6.34-.97-6.13-1.58-5.88-2.16-5.6-2.69-5.27-3.21-4.93-3.69-4.55-4.13-4.13-4.55-3.69-4.93-3.21-5.27-2.69-5.6-2.16-5.88-1.58-6.13-.97-6.34-.33-6.54V343h174.1l-39 39-1.65 1.83-1.43 1.94-1.22 2.05-.99 2.13-.77 2.2-.55 2.25-.33 2.29-.11 2.3.11 2.3.33 2.28.55 2.24.77 2.19.99 2.12 1.22 2.04 1.43 1.93 1.65 1.81 1.83 1.64 1.94 1.42 2.05 1.2 2.13.99 2.2.76 2.25.56 2.29.33 2.3.11 2.3-.1 2.28-.33 2.24-.54 2.19-.77 2.12-.98 2.04-1.21 1.93-1.43 1.81-1.65 80-80 1.65-1.83 1.43-1.94 1.22-2.05.99-2.13.77-2.2.55-2.25.33-2.29.11-2.3-.11-2.3-.33-2.28-.55-2.24-.77-2.19-.99-2.12-1.22-2.04-1.43-1.93-1.65-1.81-80-80-1.83-1.65-1.94-1.43-2.05-1.22-2.13-.99-2.2-.77-2.25-.55-2.29-.33-2.3-.11-2.3.11-2.28.33-2.24.55-2.19.77-2.12.99-2.04 1.22-1.93 1.43-1.81 1.65-1.64 1.83-1.42 1.94-1.2 2.05-.99 2.13-.76 2.2-.56 2.25-.33 2.29-.11 2.3.1 2.3.33 2.28.54 2.24.77 2.19.98 2.12 1.21 2.04 1.43 1.93 1.65 1.81 39 39h-174.1V71"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M133.462 71s0 0 0 0m0 0s0 0 0 0m0 0 .33-6.54m-.33 6.54c.13-2.57.26-5.13.33-6.54m0 0c.36-2.33.72-4.67.97-6.34m-.97 6.34c.35-2.26.69-4.53.97-6.34m0 0c.51-1.99 1.03-3.98 1.58-6.13m-1.58 6.13c.4-1.56.81-3.12 1.58-6.13m0 0c.81-2.22 1.62-4.43 2.16-5.88m-2.16 5.88c.45-1.22.9-2.44 2.16-5.88m0 0c.72-1.51 1.45-3.01 2.69-5.6m-2.69 5.6c.69-1.45 1.39-2.9 2.69-5.6m0 0c.93-1.52 1.86-3.05 3.21-5.27m-3.21 5.27c.97-1.59 1.94-3.18 3.21-5.27m0 0c.86-1.15 1.71-2.29 3.69-4.93m-3.69 4.93c.78-1.04 1.56-2.08 3.69-4.93m0 0c1.53-1.69 3.07-3.38 4.13-4.55m-4.13 4.55c1.54-1.69 3.07-3.38 4.13-4.55m0 0c1.03-.93 2.06-1.87 4.55-4.13m-4.55 4.13c.98-.89 1.97-1.78 4.55-4.13m0 0c1.64-1.23 3.28-2.46 4.93-3.69m-4.93 3.69c1.72-1.29 3.45-2.58 4.93-3.69m0 0c1.11-.68 2.23-1.35 5.27-3.21m-5.27 3.21c1.5-.91 3.01-1.83 5.27-3.21m0 0c1.87-.89 3.73-1.79 5.6-2.69m-5.6 2.69c2.09-1 4.17-2.01 5.6-2.69m0 0c1.72-.64 3.44-1.27 5.88-2.16m-5.88 2.16c1.94-.72 3.89-1.43 5.88-2.16m0 0c2.3-.59 4.6-1.19 6.13-1.58m-6.13 1.58c2.32-.6 4.65-1.2 6.13-1.58m0 0c2.06-.31 4.12-.63 6.34-.97m-6.34.97c2.34-.36 4.69-.72 6.34-.97m0 0c2.05-.1 4.09-.21 6.54-.33m-6.54.33c2.06-.1 4.12-.21 6.54-.33m0 0h160m-160 0h160m0 0v128m0-128v128m0 0s0 0 0 0m0 0s0 0 0 0m0 0 .16 3.28m-.16-3.28c.06 1.16.12 2.32.16 3.28m0 0c.13.82.26 1.64.49 3.18m-.49-3.18c.18 1.13.35 2.26.49 3.18m0 0c.24.95.49 1.91.79 3.07m-.79-3.07c.28 1.1.56 2.2.79 3.07m0 0c.39 1.06.78 2.13 1.07 2.94m-1.07-2.94c.42 1.15.84 2.3 1.07 2.94m0 0c.38.79.76 1.57 1.35 2.8m-1.35-2.8c.4.82.79 1.64 1.35 2.8m0 0c.45.75.91 1.5 1.6 2.63m-1.6-2.63c.4.65.8 1.31 1.6 2.63m0 0c.56.76 1.13 1.52 1.84 2.47m-1.84-2.47c.58.79 1.17 1.57 1.84 2.47m0 0c.75.82 1.5 1.65 2.06 2.27m-2.06-2.27c.75.82 1.5 1.65 2.06 2.27m0 0c.74.66 1.47 1.33 2.27 2.06m-2.27-2.06c.89.81 1.78 1.61 2.27 2.06m0 0c.69.51 1.37 1.02 2.47 1.84m-2.47-1.84c.68.5 1.35 1.01 2.47 1.84m0 0c.81.49 1.62.99 2.63 1.6m-2.63-1.6c.74.45 1.47.9 2.63 1.6m0 0c.72.35 1.43.69 2.8 1.35m-2.8-1.35c.61.3 1.22.59 2.8 1.35m0 0c.85.31 1.69.62 2.94 1.07m-2.94-1.07c1.03.38 2.07.75 2.94 1.07m0 0c.83.22 1.67.43 3.07.79m-3.07-.79 3.07.79m0 0c1.07.16 2.14.33 3.18.49m-3.18-.49c1.2.18 2.39.36 3.18.49m0 0 3.28.16m-3.28-.16c.97.04 1.93.09 3.28.16m0 0h128m-128 0h128m0 0v288m0-288v288m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.1 2.02-.2 4.04-.33 6.54m.33-6.54c-.13 2.52-.26 5.05-.33 6.54m0 0c-.33 2.14-.66 4.29-.97 6.34m.97-6.34c-.32 2.06-.63 4.12-.97 6.34m0 0c-.59 2.28-1.17 4.55-1.58 6.13m1.58-6.13c-.53 2.07-1.07 4.14-1.58 6.13m0 0c-.73 1.99-1.46 3.97-2.16 5.88m2.16-5.88c-.72 1.97-1.44 3.94-2.16 5.88m0 0c-.94 1.97-1.89 3.93-2.69 5.6m2.69-5.6c-.91 1.89-1.82 3.77-2.69 5.6m0 0c-.89 1.46-1.78 2.92-3.21 5.27m3.21-5.27c-.65 1.05-1.29 2.11-3.21 5.27m0 0c-1.13 1.51-2.25 3.01-3.69 4.93m3.69-4.93c-1.29 1.72-2.58 3.44-3.69 4.93m0 0c-1.29 1.42-2.58 2.84-4.13 4.55m4.13-4.55-4.13 4.55m0 0-4.55 4.13m4.55-4.13-4.55 4.13m0 0c-1.2.9-2.41 1.8-4.93 3.69m4.93-3.69-4.93 3.69m0 0c-1.56.95-3.13 1.9-5.27 3.21m5.27-3.21c-1.99 1.21-3.98 2.42-5.27 3.21m0 0c-1.8.86-3.6 1.73-5.6 2.69m5.6-2.69c-1.34.64-2.67 1.28-5.6 2.69m0 0c-2.24.82-4.48 1.65-5.88 2.16m5.88-2.16c-1.38.51-2.77 1.02-5.88 2.16m0 0c-1.46.38-2.93.76-6.13 1.58m6.13-1.58c-1.54.4-3.09.79-6.13 1.58m0 0c-2.12.32-4.24.65-6.34.97m6.34-.97c-2.47.38-4.94.75-6.34.97m0 0c-2.23.11-4.46.22-6.54.33m6.54-.33c-1.97.1-3.93.2-6.54.33m0 0h-256m256 0h-256m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-2.33-.12-4.66-.24-6.54-.33m6.54.33c-1.33-.07-2.65-.13-6.54-.33m0 0c-1.88-.29-3.77-.58-6.34-.97m6.34.97c-2.07-.32-4.14-.63-6.34-.97m0 0c-1.52-.39-3.04-.79-6.13-1.58m6.13 1.58c-2.02-.52-4.04-1.04-6.13-1.58m0 0c-1.6-.59-3.19-1.17-5.88-2.16m5.88 2.16c-1.9-.7-3.8-1.39-5.88-2.16m0 0c-1.41-.68-2.82-1.36-5.6-2.69m5.6 2.69c-1.6-.77-3.2-1.54-5.6-2.69m0 0c-1.4-.86-2.81-1.71-5.27-3.21m5.27 3.21c-2.08-1.27-4.17-2.54-5.27-3.21m0 0c-1.72-1.29-3.43-2.57-4.93-3.69m4.93 3.69c-1.79-1.34-3.57-2.67-4.93-3.69m0 0c-1.18-1.07-2.36-2.15-4.55-4.13m4.55 4.13c-1.64-1.49-3.27-2.97-4.55-4.13m0 0c-1.07-1.19-2.15-2.37-4.13-4.55m4.13 4.55c-1.46-1.61-2.93-3.23-4.13-4.55m0 0-3.69-4.93m3.69 4.93c-.88-1.17-1.76-2.35-3.69-4.93m0 0c-.83-1.37-1.67-2.75-3.21-5.27m3.21 5.27c-1.15-1.89-2.3-3.79-3.21-5.27m0 0c-1.03-2.14-2.05-4.27-2.69-5.6m2.69 5.6c-.68-1.43-1.37-2.85-2.69-5.6m0 0c-.8-2.17-1.59-4.34-2.16-5.88m2.16 5.88c-.82-2.22-1.63-4.44-2.16-5.88m0 0c-.47-1.82-.94-3.64-1.58-6.13m1.58 6.13c-.37-1.44-.74-2.88-1.58-6.13m0 0-.97-6.34m.97 6.34c-.3-1.98-.61-3.97-.97-6.34m0 0c-.13-2.54-.26-5.07-.33-6.54m.33 6.54-.33-6.54m0 0V343m0 112V343m0 0h174.1m-174.1 0h174.1m0 0-39 39m39-39-39 39m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.65.72-1.3 1.44-1.65 1.83m1.65-1.83c-.34.38-.68.76-1.65 1.83m0 0c-.35.47-.7.95-1.43 1.94m1.43-1.94c-.38.5-.75 1.01-1.43 1.94m0 0c-.32.54-.64 1.08-1.22 2.05m1.22-2.05c-.38.64-.76 1.28-1.22 2.05m0 0c-.2.45-.41.89-.99 2.13m.99-2.13c-.38.82-.76 1.64-.99 2.13m0 0c-.18.53-.36 1.05-.77 2.2m.77-2.2c-.3.88-.61 1.75-.77 2.2m0 0c-.15.61-.3 1.22-.55 2.25m.55-2.25c-.16.68-.33 1.35-.55 2.25m0 0-.33 2.29m.33-2.29c-.13.9-.26 1.79-.33 2.29m0 0-.11 2.3m.11-2.3c-.03.59-.06 1.19-.11 2.3m0 0c.03.54.05 1.08.11 2.3m-.11-2.3c.03.72.07 1.44.11 2.3m0 0c.1.71.21 1.43.33 2.28m-.33-2.28c.1.71.21 1.42.33 2.28m0 0c.22.88.44 1.77.55 2.24m-.55-2.24c.16.66.33 1.32.55 2.24m0 0c.26.72.51 1.45.77 2.19m-.77-2.19c.25.69.49 1.39.77 2.19m0 0c.33.7.65 1.4.99 2.12m-.99-2.12c.37.79.74 1.57.99 2.12m0 0c.38.63.75 1.25 1.22 2.04m-1.22-2.04c.4.67.8 1.35 1.22 2.04m0 0c.38.52.77 1.05 1.43 1.93m-1.43-1.93c.38.52.77 1.05 1.43 1.93m0 0c.46.5.91 1 1.65 1.81m-1.65-1.81c.35.39.7.77 1.65 1.81m0 0c.37.33.75.67 1.83 1.64m-1.83-1.64c.43.39.87.78 1.83 1.64m0 0c.62.45 1.25.91 1.94 1.42m-1.94-1.42c.45.32.9.65 1.94 1.42m0 0c.53.3 1.05.61 2.05 1.2m-2.05-1.2c.43.25.86.5 2.05 1.2m0 0c.78.36 1.56.72 2.13.99m-2.13-.99c.54.25 1.08.5 2.13.99m0 0c.67.23 1.33.46 2.2.76m-2.2-.76c.51.17 1.03.35 2.2.76m0 0c.87.22 1.73.43 2.25.56m-2.25-.56c.79.2 1.57.39 2.25.56m0 0 2.29.33m-2.29-.33c.58.08 1.16.16 2.29.33m0 0c.91.04 1.82.09 2.3.11m-2.3-.11c.89.04 1.79.09 2.3.11m0 0c.48-.02.96-.04 2.3-.1m-2.3.1c.73-.03 1.47-.06 2.3-.1m0 0c.61-.09 1.22-.18 2.28-.33m-2.28.33c.58-.09 1.17-.17 2.28-.33m0 0c.79-.19 1.59-.38 2.24-.54m-2.24.54c.88-.21 1.75-.42 2.24-.54m0 0c.7-.25 1.4-.49 2.19-.77m-2.19.77c.5-.18 1.01-.35 2.19-.77m0 0c.56-.26 1.13-.52 2.12-.98m-2.12.98c.69-.31 1.37-.63 2.12-.98m0 0c.63-.37 1.25-.74 2.04-1.21m-2.04 1.21c.8-.48 1.6-.95 2.04-1.21m0 0c.67-.5 1.34-.99 1.93-1.43m-1.93 1.43c.52-.39 1.05-.78 1.93-1.43m0 0c.43-.39.87-.79 1.81-1.65m-1.81 1.65c.42-.38.83-.76 1.81-1.65m0 0 80-80m-80 80 80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c.33-.37.67-.74 1.65-1.83m-1.65 1.83c.63-.7 1.27-1.4 1.65-1.83m0 0c.3-.4.59-.79 1.43-1.94m-1.43 1.94c.42-.57.84-1.13 1.43-1.94m0 0c.4-.68.8-1.35 1.22-2.05m-1.22 2.05c.47-.79.93-1.57 1.22-2.05m0 0c.28-.62.57-1.23.99-2.13m-.99 2.13c.3-.65.6-1.31.99-2.13m0 0c.26-.74.51-1.47.77-2.2m-.77 2.2.77-2.2m0 0 .55-2.25m-.55 2.25c.2-.84.41-1.68.55-2.25m0 0 .33-2.29m-.33 2.29c.11-.75.21-1.49.33-2.29m0 0c.03-.54.05-1.08.11-2.3m-.11 2.3c.04-.91.09-1.81.11-2.3m0 0c-.03-.7-.07-1.41-.11-2.3m.11 2.3c-.04-.75-.07-1.49-.11-2.3m0 0c-.08-.52-.15-1.04-.33-2.28m.33 2.28c-.09-.63-.18-1.26-.33-2.28m0 0-.55-2.24m.55 2.24c-.19-.79-.39-1.58-.55-2.24m0 0-.77-2.19m.77 2.19c-.25-.72-.51-1.44-.77-2.19m0 0c-.23-.5-.46-.99-.99-2.12m.99 2.12c-.39-.83-.78-1.66-.99-2.12m0 0c-.42-.7-.83-1.39-1.22-2.04m1.22 2.04c-.32-.53-.64-1.06-1.22-2.04m0 0c-.47-.64-.95-1.28-1.43-1.93m1.43 1.93c-.47-.63-.94-1.27-1.43-1.93m0 0c-.44-.49-.89-.98-1.65-1.81m1.65 1.81c-.64-.7-1.28-1.4-1.65-1.81m0 0-80-80m80 80-80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.72-.65-1.44-1.3-1.83-1.65m1.83 1.65c-.68-.62-1.37-1.23-1.83-1.65m0 0c-.51-.38-1.02-.75-1.94-1.43m1.94 1.43c-.58-.43-1.17-.87-1.94-1.43m0 0c-.73-.43-1.45-.86-2.05-1.22m2.05 1.22c-.77-.45-1.53-.9-2.05-1.22m0 0c-.46-.21-.93-.43-2.13-.99m2.13.99-2.13-.99m0 0c-.83-.29-1.65-.57-2.2-.77m2.2.77c-.56-.19-1.12-.39-2.2-.77m0 0c-.65-.16-1.29-.31-2.25-.55m2.25.55c-.57-.14-1.13-.27-2.25-.55m0 0c-.74-.11-1.48-.21-2.29-.33m2.29.33c-.51-.07-1.02-.15-2.29-.33m0 0c-.77-.04-1.54-.07-2.3-.11m2.3.11c-.88-.04-1.76-.08-2.3-.11m0 0c-.49.02-.98.05-2.3.11m2.3-.11c-.88.04-1.77.09-2.3.11m0 0c-.62.09-1.23.18-2.28.33m2.28-.33c-.6.09-1.2.17-2.28.33m0 0c-.45.11-.91.22-2.24.55m2.24-.55c-.79.2-1.58.39-2.24.55m0 0c-.56.2-1.12.4-2.19.77m2.19-.77c-.51.18-1.01.36-2.19.77m0 0c-.85.4-1.7.8-2.12.99m2.12-.99c-.51.24-1.02.48-2.12.99m0 0c-.6.36-1.2.71-2.04 1.22m2.04-1.22c-.46.27-.91.55-2.04 1.22m0 0c-.49.36-.99.73-1.93 1.43m1.93-1.43-1.93 1.43m0 0c-.42.38-.85.77-1.81 1.65m1.81-1.65c-.69.63-1.39 1.27-1.81 1.65m0 0-1.64 1.83m1.64-1.83c-.54.6-1.08 1.21-1.64 1.83m0 0c-.53.73-1.07 1.47-1.42 1.94m1.42-1.94c-.36.5-.73 1-1.42 1.94m0 0c-.35.61-.7 1.21-1.2 2.05m1.2-2.05c-.33.58-.67 1.15-1.2 2.05m0 0c-.26.57-.53 1.15-.99 2.13m.99-2.13c-.39.85-.78 1.69-.99 2.13m0 0c-.24.7-.48 1.4-.76 2.2m.76-2.2c-.17.51-.35 1.01-.76 2.2m0 0c-.17.68-.33 1.35-.56 2.25m.56-2.25c-.2.79-.39 1.57-.56 2.25m0 0c-.09.65-.18 1.29-.33 2.29m.33-2.29c-.06.48-.13.95-.33 2.29m0 0c-.03.71-.07 1.43-.11 2.3m.11-2.3-.11 2.3m0 0c.04.86.08 1.73.1 2.3m-.1-2.3c.03.8.07 1.6.1 2.3m0 0c.13.88.25 1.76.33 2.28m-.33-2.28c.11.73.21 1.47.33 2.28m0 0c.18.74.36 1.49.54 2.24m-.54-2.24c.15.64.31 1.28.54 2.24m0 0c.2.57.4 1.15.77 2.19m-.77-2.19c.21.58.41 1.17.77 2.19m0 0c.23.5.46 1.01.98 2.12m-.98-2.12c.35.76.71 1.53.98 2.12m0 0c.38.64.76 1.29 1.21 2.04m-1.21-2.04 1.21 2.04m0 0c.45.6.89 1.21 1.43 1.93m-1.43-1.93c.3.4.6.81 1.43 1.93m0 0 1.65 1.81m-1.65-1.81c.47.52.94 1.03 1.65 1.81m0 0 39 39m-39-39 39 39m0 0h-174.1m174.1 0h-174.1m0 0V71m0 223.9V71m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"18",d:"M135 343.068H31m104 0H31m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.74-.04-1.48-.07-2.46-.12m2.46.12c-.77-.04-1.54-.08-2.46-.12m0 0c-.87-.14-1.75-.27-2.39-.37m2.39.37c-.55-.09-1.1-.17-2.39-.37m0 0c-.87-.22-1.74-.44-2.3-.59m2.3.59c-.62-.15-1.24-.31-2.3-.59m0 0c-.82-.29-1.64-.59-2.21-.8m2.21.8c-.52-.18-1.03-.37-2.21-.8m0 0c-.55-.26-1.09-.52-2.1-1.01m2.1 1.01c-.64-.31-1.28-.61-2.1-1.01m0 0c-.74-.45-1.48-.89-1.98-1.2m1.98 1.2c-.42-.25-.84-.51-1.98-1.2m0 0c-.7-.52-1.41-1.05-1.84-1.38m1.84 1.38c-.37-.28-.75-.56-1.84-1.38m0 0c-.4-.36-.8-.71-1.71-1.54m1.71 1.54c-.35-.31-.7-.63-1.71-1.54m0 0c-.43-.47-.85-.95-1.54-1.71m1.54 1.71c-.61-.68-1.23-1.36-1.54-1.71m0 0c-.29-.38-.58-.76-1.38-1.84m1.38 1.84c-.54-.71-1.08-1.43-1.38-1.84m0 0c-.46-.76-.92-1.52-1.2-1.98m1.2 1.98c-.45-.74-.89-1.47-1.2-1.98m0 0c-.37-.77-.74-1.53-1.01-2.1m1.01 2.1c-.3-.62-.6-1.25-1.01-2.1m0 0c-.2-.54-.39-1.07-.8-2.21m.8 2.21c-.2-.54-.4-1.09-.8-2.21m0 0c-.22-.85-.44-1.71-.59-2.3m.59 2.3c-.12-.46-.24-.92-.59-2.3m0 0c-.11-.72-.22-1.43-.37-2.39m.37 2.39c-.08-.48-.15-.96-.37-2.39m0 0c-.03-.74-.07-1.48-.12-2.46m.12 2.46c-.04-.79-.08-1.59-.12-2.46m0 0c.04-.74.07-1.49.12-2.46m-.12 2.46.12-2.46m0 0c.08-.53.16-1.07.37-2.39m-.37 2.39c.09-.56.17-1.12.37-2.39m0 0c.17-.69.35-1.38.59-2.3m-.59 2.3c.15-.61.31-1.23.59-2.3m0 0c.17-.48.34-.96.8-2.21m-.8 2.21c.2-.55.4-1.1.8-2.21m0 0c.25-.52.49-1.03 1.01-2.1m-1.01 2.1c.36-.76.73-1.52 1.01-2.1m0 0c.43-.72.87-1.44 1.2-1.98m-1.2 1.98c.27-.45.55-.91 1.2-1.98m0 0c.54-.73 1.09-1.47 1.38-1.84m-1.38 1.84c.4-.54.81-1.09 1.38-1.84m0 0c.53-.59 1.07-1.18 1.54-1.71m-1.54 1.71c.59-.66 1.19-1.32 1.54-1.71m0 0c.54-.49 1.08-.97 1.71-1.54m-1.71 1.54c.48-.43.95-.86 1.71-1.54m0 0c.46-.35.92-.7 1.84-1.38m-1.84 1.38c.5-.38 1.01-.76 1.84-1.38m0 0c.52-.32 1.04-.63 1.98-1.2m-1.98 1.2c.72-.44 1.44-.88 1.98-1.2m0 0 2.1-1.01m-2.1 1.01c.84-.4 1.67-.81 2.1-1.01m0 0c.45-.17.91-.33 2.21-.8m-2.21.8c.56-.21 1.12-.41 2.21-.8m0 0c.89-.23 1.79-.46 2.3-.59m-2.3.59c.48-.13.95-.25 2.3-.59m0 0c.51-.08 1.02-.16 2.39-.37m-2.39.37 2.39-.37m0 0c.52-.02 1.03-.05 2.46-.12m-2.46.12c.74-.03 1.48-.07 2.46-.12m0 0 103.34-.27m-103.34.27c30.04-.08 60.08-.16 103.34-.27"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"M517.462 135h-128V7l128 128"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M517.462 135h-128m128 0h-128m0 0V7m0 128V7m0 0 128 128m-128-128 128 128m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"}))),obsidian:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("defs",null,React__namespace.createElement("radialGradient",{id:"b",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-48 -185 123 -32 179 429.7)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".4"}),React__namespace.createElement("stop",{offset:"1","stop-opacity":".1"})),React__namespace.createElement("radialGradient",{id:"c",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(41 -310 229 30 341.6 351.3)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".6"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".1"})),React__namespace.createElement("radialGradient",{id:"d",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(57 -261 178 39 190.5 296.3)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".8"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".4"})),React__namespace.createElement("radialGradient",{id:"e",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-79 -133 153 -90 321.4 464.2)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".3"}),React__namespace.createElement("stop",{offset:"1","stop-opacity":".3"})),React__namespace.createElement("radialGradient",{id:"f",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-29 136 -92 -20 300.7 149.9)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":"0"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".2"})),React__namespace.createElement("radialGradient",{id:"g",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(72 73 -155 153 137.8 225.2)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".2"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".4"})),React__namespace.createElement("radialGradient",{id:"h",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(20 118 -251 43 215.1 273.7)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".1"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".3"})),React__namespace.createElement("radialGradient",{id:"i",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-162 -85 268 -510 374.4 371.7)"},React__namespace.createElement("stop",{"stop-color":"#fff","stop-opacity":".2"}),React__namespace.createElement("stop",{offset:".5","stop-color":"#fff","stop-opacity":".2"}),React__namespace.createElement("stop",{offset:"1","stop-color":"#fff","stop-opacity":".3"})),React__namespace.createElement("filter",{id:"a",x:"80.1",y:"37",width:"351.1",height:"443.2",filterUnits:"userSpaceOnUse","color-interpolation-filters":"sRGB"},React__namespace.createElement("feFlood",{"flood-opacity":"0",result:"BackgroundImageFix"}),React__namespace.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),React__namespace.createElement("feGaussianBlur",{stdDeviation:"6.5",result:"effect1_foregroundBlur_744_9191"}))),React__namespace.createElement("g",{filter:"url(#a)"},React__namespace.createElement("path",{d:"M359.2 437.5c-2.6 19-21.3 33.9-40 28.7-26.5-7.2-57.2-18.6-84.8-20.7l-42.4-3.2a28 28 0 0 1-18-8.3l-73-74.8a27.7 27.7 0 0 1-5.4-30.7s45-98.6 46.8-103.7c1.6-5.1 7.8-49.9 11.4-73.9a28 28 0 0 1 9-16.5L249 57.2a28 28 0 0 1 40.6 3.4l72.6 91.6a29.5 29.5 0 0 1 6.2 18.3c0 17.3 1.5 53 11.2 76a301.3 301.3 0 0 0 35.6 58.2 14 14 0 0 1 1 15.6c-6.3 10.7-18.9 31.3-36.6 57.6a142.2 142.2 0 0 0-20.5 59.6Z",fill:"#000","fill-opacity":".3"})),React__namespace.createElement("path",{id:"arrow",d:"M359.9 434.3c-2.6 19.1-21.3 34-40 28.9-26.4-7.3-57-18.7-84.7-20.8l-42.3-3.2a27.9 27.9 0 0 1-18-8.4l-73-75a27.9 27.9 0 0 1-5.4-31s45.1-99 46.8-104.2c1.7-5.1 7.8-50 11.4-74.2a28 28 0 0 1 9-16.6l86.2-77.5a28 28 0 0 1 40.6 3.5l72.5 92a29.7 29.7 0 0 1 6.2 18.3c0 17.4 1.5 53.2 11.1 76.3a303 303 0 0 0 35.6 58.5 14 14 0 0 1 1.1 15.7c-6.4 10.8-18.9 31.4-36.7 57.9a143.3 143.3 0 0 0-20.4 59.8Z",fill:"#6c31e3"}),React__namespace.createElement("path",{d:"M182.7 436.4c33.9-68.7 33-118 18.5-153-13.2-32.4-37.9-52.8-57.3-65.5-.4 1.9-1 3.7-1.8 5.4L96.5 324.8a27.9 27.9 0 0 0 5.5 31l72.9 75c2.3 2.3 5 4.2 7.8 5.6Z",fill:"url(#b)"}),React__namespace.createElement("path",{d:"M274.9 297c9.1.9 18 2.9 26.8 6.1 27.8 10.4 53.1 33.8 74 78.9 1.5-2.6 3-5.1 4.6-7.5a1222 1222 0 0 0 36.7-57.9 14 14 0 0 0-1-15.7 303 303 0 0 1-35.7-58.5c-9.6-23-11-58.9-11.1-76.3 0-6.6-2.1-13.1-6.2-18.3l-72.5-92-1.2-1.5c5.3 17.5 5 31.5 1.7 44.2-3 11.8-8.6 22.5-14.5 33.8-2 3.8-4 7.7-5.9 11.7a140 140 0 0 0-15.8 58c-1 24.2 3.9 54.5 20 95Z",fill:"url(#c)"}),React__namespace.createElement("path",{d:"M274.8 297c-16.1-40.5-21-70.8-20-95 1-24 8-42 15.8-58l6-11.7c5.8-11.3 11.3-22 14.4-33.8a78.5 78.5 0 0 0-1.7-44.2 28 28 0 0 0-39.4-2l-86.2 77.5a28 28 0 0 0-9 16.6L144.2 216c0 .7-.2 1.3-.3 2 19.4 12.6 44 33 57.3 65.3 2.6 6.4 4.8 13.1 6.4 20.4a200 200 0 0 1 67.2-6.8Z",fill:"url(#d)"}),React__namespace.createElement("path",{d:"M320 463.2c18.6 5.1 37.3-9.8 39.9-29a153 153 0 0 1 15.9-52.2c-21-45.1-46.3-68.5-74-78.9-29.5-11-61.6-7.3-94.2.6 7.3 33.1 3 76.4-24.8 132.7 3.1 1.6 6.6 2.5 10.1 2.8l43.9 3.3c23.8 1.7 59.3 14 83.2 20.7Z",fill:"url(#e)"}),React__namespace.createElement("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M255 200.5c-1.1 24 1.9 51.4 18 91.8l-5-.5c-14.5-42.1-17.7-63.7-16.6-88 1-24.3 8.9-43 16.7-59 2-4 6.6-11.5 8.6-15.3 5.8-11.3 9.7-17.2 13-27.5 4.8-14.4 3.8-21.2 3.2-28 3.7 24.5-10.4 45.8-21 67.5a145 145 0 0 0-17 59Z",fill:"url(#f)"}),React__namespace.createElement("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M206 285.1c2 4.4 3.7 8 4.9 13.5l-4.3 1c-1.7-6.4-3-11-5.5-16.5-14.6-34.3-38-52-57-65 23 12.4 46.7 31.9 61.9 67Z",fill:"url(#g)"}),React__namespace.createElement("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M211.1 303c8 37.5-1 85.2-27.5 131.6 22.2-46 33-90.1 24-131l3.5-.7Z",fill:"url(#h)"}),React__namespace.createElement("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M302.7 299.5c43.5 16.3 60.3 52 72.8 81.9-15.5-31.2-37-65.7-74.4-78.5-28.4-9.8-52.4-8.6-93.5.7l-.9-4c43.6-10 66.4-11.2 96 0Z",fill:"url(#i)"}))},saveIcon=e=>React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:e?"var(--color-accent)":"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),React__namespace.createElement("polyline",{points:"17 21 17 13 7 13 7 21"}),React__namespace.createElement("polyline",{points:"7 3 7 8 15 8"})),penIcon=e=>{var t,A,i,n,a,r,s,o,l,c,d,h;switch(e.type){case"highlighter":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(t=e.strokeColor)&&void 0!==t?t:"var(--icon-fill-color)",strokeWidth:"2",d:"m9 11-6 6v3h9l3-3"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4"}));case"finetip":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:null!==(A=e.strokeColor)&&void 0!==A?A:"var(--icon-fill-color)",stroke:null!==(i=e.strokeColor)&&void 0!==i?i:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{strokeWidth:"2",d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}));case"fountain":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(n=e.strokeColor)&&void 0!==n?n:"var(--icon-fill-color)",d:"m12 19 7-7 3 3-7 7-3-3z"}),React__namespace.createElement("path",{fill:"none",d:"m18 13-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"}),React__namespace.createElement("path",{fill:"none",d:"m2 2 7.586 7.586"}),React__namespace.createElement("circle",{fill:"none",cx:"11",cy:"11",r:"2"}));case"marker":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",fill:null!==(a=e.strokeColor)&&void 0!==a?a:"var(--icon-fill-color)",stroke:null!==(r=e.strokeColor)&&void 0!==r?r:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M331 315l158.4-215L460.1 70.6 245 229 331 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L436.6 8.4C444 2.9 453 0 462.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L350.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H240l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L144 320zM23 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H40c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z"}));case"thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 108 106",strokeWidth:"2",fill:null!==(s=e.strokeColor)&&void 0!==s?s:"var(--icon-fill-color)",stroke:null!==(o=e.strokeColor)&&void 0!==o?o:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m-.58 95.628.22-.89q.22-.89.49-2.44.26-1.54.77-3.35t1.31-3.43q.79-1.61.2-.26-.6 1.34-.03-.14.58-1.49 1.54-2.97.96-1.49 2.54-3.18 1.59-1.68 3.46-2.96 1.86-1.27.81-.54-1.04.73.6-.46 1.64-1.19 2.8-1.81 1.16-.63.16-.08-.99.54 1.21-.5 2.2-1.03 1.11-.58-1.1.45-.03-.07 1.06-.53 2.32-.82 1.26-.3 2.91-.52 1.64-.23 3.05-.18 1.4.05 2.5.12 1.09.07 2.25.24 1.16.17 2.3.49 1.15.32 2.11.78.96.47 2.21 1.01 1.25.55 2.37 1.04t2.34.89q1.22.4 2.5.65 1.29.25 2.44.33 1.16.08 2.35.17 1.18.08 2.26-.1 1.08-.19 2-1.1.92-.91 1.25-1.93.32-1.02.38-2.15t.57.21q.51 1.34-.03-.02-.55-1.37-.96-2.83-.41-1.45.5-.67.92.79-.03-.06-.95-.85-1.52-1.8-.57-.94-1.5-1.52-.93-.57-1.94-1.22-1.01-.65-1.97-1.88-.96-1.22-1.44-2.54-.49-1.32-.65-2.57-.17-1.24-.11-2.35.06-1.11.31-2.91.24-1.79.76-2.77.51-.97 1.29-1.8.77-.84 1.64-1.55.88-.72 1.9-1.33 1.03-.61 2.43-1.15 1.41-.55 2.69-.92 1.29-.37 2.81-.68 1.53-.31 2.83-.58 1.31-.27 2.78-.47 1.47-.2 2.58-.49 1.12-.28 2.19-.58 1.08-.31 2.13-.73 1.05-.42 2.44-1.32 1.39-.9 2.68-1.85 1.3-.95 2.25-1.87.95-.91 2.06-2 1.11-1.09 1.92-1.93.82-.84 1.54-1.82.71-.98 1.4-1.88.69-.9 1.38-1.96.69-1.07 1.25-2.04.55-.97 1.21-1.94.65-.96 1.35-1.79.69-.83 1.46-1.74.77-.9 1.66-1.73.89-.84 2.72-2.31 1.84-1.48 1.84-1.47v.01l-1.1 1.03q-1.1 1.02-1.77 1.92-.68.9-1.39 1.85-.71.96-1.41 1.91-.7.96-1.19 1.92-.48.95-.95 1.92-.46.96-.9 1.95-.43.99-1.02 2.16-.59 1.17-1.17 2.15-.58.97-1.23 2.13t-1.29 2.02q-.64.86-1.3 1.73-.66.88-1.42 1.78-.75.9-1.72 2.03-.97 1.14-1.81 1.89-.85.75-1.98 1.71-1.14.96-2.05 1.61-.91.64-2.42 1.38-1.51.73-2.71 1.21t-2.49.92q-1.3.44-2.35.69-1.06.24-2.1.59-1.03.34-2.06.74-1.03.4-2.29.94-1.26.54-2.27 1.11-1.01.58-1.57 1.57-.56.99-.81 2.06-.25 1.08.56 2.02.8.94-.21-.02-1.02-.96-.01-.48 1 .49 1.87 1.25.87.77 0 0-.88-.77.46-.01 1.34.75 2.6 1.68 1.26.94 2.08 2.03.81 1.09.01.27-.8-.82.3.26 1.11 1.08 1.71 2.1.61 1.02 1.21 2.25.6 1.24.92 2.36.32 1.12-.16.13-.49-.98.02.36.51 1.35.71 2.69.2 1.34.24 2.46.03 1.12-.09 2.42-.13 1.29-.72 3.21-.6 1.92-1.4 3.49-.81 1.58-1.77 2.83-.96 1.24-2.88 2.72-1.92 1.48-2.95 1.85-1.04.36-2.47.76-1.44.41-3.33.72-1.89.32-3.37.41-1.48.09-2.63.15-1.15.05-2.74-.06-1.59-.1-2.8-.29-1.2-.19-3.2-.63-1.99-.45-3.63-.92-1.63-.48-3.28-.79-1.65-.31-2.76-.2-1.11.1-2.21.42-1.11.32.39-.29 1.49-.6-.12.21-1.61.8-.39.19 1.21-.61.29.13-.92.74-1.83 1.34-.92.61.15-.19t.3-.05q-.77.75-1.58 1.57-.81.82.01-.18.82-1 .24.23t-.72 2.72q-.15 1.48-.08 2.4.07.91-.19 2.16-.26 1.26-.81 2.41-.55 1.16-1.36 2.15t-1.84 1.75q-1.03.77-2.21 1.27t-2.44.7q-1.27.2-2.53.1-1.28-.11-2.49-.52-1.22-.41-2.3-1.1-1.08-.68-1.96-1.61-.89-.92-1.52-2.04-.64-1.11-.99-2.34-.36-1.23-.41-2.51l-.04-1.27Z"}));case"thin-thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 114 113",strokeWidth:"2",fill:null!==(l=e.strokeColor)&&void 0!==l?l:"var(--icon-fill-color)",stroke:null!==(c=e.strokeColor)&&void 0!==c?c:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m10 103.405.13-1.22q.14-1.22 1.3-3.16 1.15-1.94 2.74-3.46 1.59-1.53 3.35-2.72 1.77-1.2 4-1.95 2.23-.76 4.45-1t4.86-.4q2.64-.15 5.14-.34 2.51-.19 4.85-.94 2.35-.75 4.55-1.71 2.21-.97 4.16-2.26 1.95-1.3 4.03-2.97 2.07-1.67 3.85-3.05 1.78-1.37 3.72-2.48 1.94-1.11 3.3-2.99 1.36-1.89 2.58-3.74 1.22-1.85-.63-3.42-1.85-1.57-3.82-2.86-1.97-1.3-4.11-2.08-2.15-.78-4.21-1.6-2.06-.81-4.02-1.96-1.96-1.14-3.71-2.48-1.74-1.33-3.37-2.77-1.63-1.43-3.23-3.62-1.6-2.18-2.23-4.64-.62-2.46-.36-4.96.27-2.49 1.19-4.46.91-1.97 2.42-3.7 1.5-1.73 3.5-3.15t4.11-2.28q2.1-.86 4.33-1.44 2.24-.58 4.92-.84 2.68-.26 4.83-.19t4.69.35q2.53.28 4.75.66 2.23.38 4.48.2 2.26-.19 4.43-1.3 2.17-1.12 4.2-2.36 2.04-1.24 3.93-2.43 1.9-1.19 3.84-2.14 1.95-.95 4.04-1.78 2.09-.83 4.56-2.28 2.46-1.46 2.46-1.45h.01q.01 0-1.38 1.3-1.38 1.29-3.08 2.59-1.7 1.3-3.5 2.5t-3.42 2.65q-1.62 1.45-3.18 3-1.57 1.56-3.37 3.13-1.8 1.57-3.6 2.91-1.81 1.33-3.92 2.12t-4.24.92q-2.13.14-4.31.26-2.18.12-4.5.39t-4.56.88q-2.25.61-4.24 1.6-1.99 1-3.83 2.29-1.83 1.29.18 2.44 2.01 1.15 4.2 1.92 2.2.78 4.34 1 2.15.22 4.4.69 2.25.46 4.34 1.16 2.08.71 4.33 1.91 2.25 1.21 4.11 2.73 1.87 1.52 3.68 4.03 1.82 2.5 2.74 5 .93 2.5 1.18 5.03.26 2.53-.04 4.81t-1.4 4.85q-1.09 2.58-2.4 4.26-1.3 1.68-3.1 3.44t-4.02 3.62q-2.23 1.85-4.32 3.07-2.08 1.23-4.34 1.99-2.25.76-4.46 1.96t-4.37 2.14q-2.15.93-4.22 1.81t-4.36 1.35q-2.3.46-4.52.82-2.22.35-4.76.38-2.54.04-4.87-.28t-4.67-.67q-2.34-.35-4.72-.54-2.39-.19-4.64.37-2.25.56-4.16 1.66-1.91 1.11-3.52 2.71-1.61 1.6-2.55 2.39l-.94.78Z"}));default:return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:null!==(d=e.strokeColor)&&void 0!==d?d:"var(--icon-fill-color)",stroke:null!==(h=e.strokeColor)&&void 0!==h?h:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z"}))}},stringToSVG=e=>(e=e.replace(/stroke\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]width\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]height\s*=\s*['"][^"']*['"]/g,"").replace("{const A=t.getAppState();t.updateScene({appState:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({currentStrokeOptions:e.penOptions},e.strokeWidth&&0!==e.strokeWidth?{currentItemStrokeWidth:e.strokeWidth}:null),e.backgroundColor?{currentItemBackgroundColor:e.backgroundColor}:null),e.strokeColor?{currentItemStrokeColor:e.strokeColor}:null),""===e.fillStyle?null:{currentItemFillStyle:e.fillStyle}),e.roughness?null:{currentItemRoughness:e.roughness}),e.freedrawOnly&&!A.resetCustomPen?{resetCustomPen:{currentItemStrokeWidth:A.currentItemStrokeWidth,currentItemBackgroundColor:A.currentItemBackgroundColor,currentItemStrokeColor:A.currentItemStrokeColor,currentItemFillStyle:A.currentItemFillStyle,currentItemRoughness:A.currentItemRoughness}}:null)})},resetStrokeOptions=(e,t,A)=>{t.updateScene({appState:Object.assign(Object.assign(Object.assign({},e?{currentItemStrokeWidth:e.currentItemStrokeWidth,currentItemBackgroundColor:e.currentItemBackgroundColor,currentItemStrokeColor:e.currentItemStrokeColor,currentItemFillStyle:e.currentItemFillStyle,currentItemRoughness:e.currentItemRoughness}:null),{resetCustomPen:null}),A?{currentStrokeOptions:null}:null)})};class ObsidianMenu{constructor(e,t,A){this.plugin=e,this.toolsRef=t,this.view=A,this.renderCustomPens=(e,t)=>{var A;return null===(A=t.customPens)||void 0===A?void 0:A.map(((A,i)=>{const n=this.plugin.settings.customPens[i];return t.resetCustomPen&&"freedraw"!==t.activeTool.type&&t.currentStrokeOptions===n.penOptions&&setTimeout((()=>resetStrokeOptions(t.resetCustomPen,this.view.excalidrawAPI,!1))),!t.resetCustomPen&&"freedraw"===t.activeTool.type&&t.currentStrokeOptions===n.penOptions&&n.freedrawOnly&&setTimeout((()=>setPen(this.activePen,this.view.excalidrawAPI))),this.activePen&&t.resetCustomPen&&"freedraw"===t.activeTool.type&&t.currentStrokeOptions===n.penOptions&&n.freedrawOnly&&(this.activePen.strokeWidth=t.currentItemStrokeWidth,this.activePen.backgroundColor=t.currentItemBackgroundColor,this.activePen.strokeColor=t.currentItemStrokeColor,this.activePen.fillStyle=t.currentItemFillStyle,this.activePen.roughness=t.currentItemRoughness),React__namespace.createElement("label",{key:i,className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{const e=Date.now();if(e-this.clickTimestamp[i]<500){const e=new PenSettingsModal(this.plugin,this.view,i);return void(async()=>{await this.plugin.loadSettings(),e.open()})()}this.clickTimestamp[i]=e;const t=this.view.excalidrawAPI,A=t.getAppState();A.currentStrokeOptions!==n.penOptions||"freedraw"!==A.activeTool.type?(this.activePen=Object.assign({},n),setPen(n,t),t.setActiveTool({type:"freedraw"})):resetStrokeOptions(A.resetCustomPen,t,!0)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":n.type,style:Object.assign({},"freedraw"===t.activeTool.type&&t.currentStrokeOptions===n.penOptions?{background:"var(--color-primary)"}:{})},penIcon(n)))}))},this.longpressTimeout={},this.renderPinnedScriptButtons=(e,t)=>{var A;let i=0;return null===(A=null==t?void 0:t.pinnedScripts)||void 0===A?void 0:A.map(((t,A)=>{var n;const a=this.plugin.scriptEngine.scriptIconMap[t],r=null!==(n=null==a?void 0:a.name)&&void 0!==n?n:"",s=(null==a?void 0:a.svgString)?stringToSVG(a.svgString):ICONS.cog;return this.longpressTimeout[A]||(this.longpressTimeout[A]=0),React__namespace.createElement("label",{key:A,className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onPointerUp:()=>{this.longpressTimeout[A]&&(window.clearTimeout(this.longpressTimeout[A]),this.longpressTimeout[A]=0,(async()=>{const e=app.vault.getAbstractFileByPath(t);e&&e instanceof obsidian_module.TFile&&this.plugin.scriptEngine.executeScript(this.view,await app.vault.read(e),this.plugin.scriptEngine.getScriptName(e),e)})())},onPointerDown:()=>{const e=Date.now();this.longpressTimeout[A]>0&&(window.clearTimeout(this.longpressTimeout[A]),this.longpressTimeout[A]=0),e-i>=500&&(this.longpressTimeout[A]=window.setTimeout((()=>{this.longpressTimeout[A]=0,(async()=>{var e;await this.plugin.loadSettings();const A=this.plugin.settings.pinnedScripts.indexOf(t);A>-1&&(this.plugin.settings.pinnedScripts.splice(A,1),null===(e=this.view.excalidrawAPI)||void 0===e||e.setToast({message:`Pin removed: ${r}`,duration:3e3,closable:!0})),await this.plugin.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))})()}),1500)),i=e}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":r},s))}))},this.renderButton=(e,t)=>React__namespace.createElement(React__namespace.Fragment,null,React__namespace.createElement("label",{className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{this.toolsRef.current.setTheme(t.theme),this.toolsRef.current.toggleVisibility(t.zenModeEnabled||e)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},ICONS.obsidian)),this.renderCustomPens(e,t),this.renderPinnedScriptButtons(e,t)),this.clickTimestamp=Array.from({length:Object.keys(PENS).length},(()=>0))}}class ActionButton extends React__namespace.Component{constructor(e){super(e),this.toastMessageTimeout=0,this.longpressTimeout=0,this.state={visible:!0}}render(){return React__namespace.createElement("button",{style:{},className:"ToolIcon_type_button ToolIcon_size_small ToolIcon_type_button--show ToolIcon",title:this.props.title,onClick:e=>{this.toastMessageTimeout&&(window.clearTimeout(this.toastMessageTimeout),this.toastMessageTimeout=0,this.props.action(e)),this.longpressTimeout&&(window.clearTimeout(this.longpressTimeout),this.longpressTimeout=0)},onPointerDown:e=>{this.toastMessageTimeout=window.setTimeout((()=>{var e;null===(e=this.props.view.excalidrawAPI)||void 0===e||e.setToast({message:this.props.title,duration:3e3,closable:!0}),this.toastMessageTimeout=0}),400),this.longpressTimeout=window.setTimeout((()=>{var t;this.props.longpress?this.props.longpress(e):null===(t=this.props.view.excalidrawAPI)||void 0===t||t.setToast({message:"Cannot pin this action",duration:3e3,closable:!0}),this.longpressTimeout=0}),1500)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},this.props.icon))}}const FIRST_RUN='\nThe Excalidraw Obsidian plugin is much more than "just" a drawing tool. To help you get started here\'s a showcase of the key Excalidraw plugin features.\n\nIf you\'d like to learn more, please subscribe to my YouTube channel: [Visual PKM](https://www.youtube.com/channel/UCC0gns4a9fhVkGkngvSumAQ) where I regularly share videos about Obsidian-Excalidraw and about tools and techniques for Visual Personal Knowledge Management.\n\nThank you & Enjoy!\n\n
\n\n
\n',RELEASE_NOTES={Intro:'After each update you\'ll be prompted with the release notes. You can disable this in plugin settings.\n\nI develop this plugin as a hobby, spending my free time doing this. If you find it valuable, then please say THANK YOU or...\n\n
\n',"1.9.3":'\n## New from Excalidraw.com\n- Eyedropper tool. The eyedropper is triggered with "i". If you hold the ALT key while clicking the color it will set the stroke color of the selected element, else the background color.\n- Flipping multiple elements\n- Improved stencil library rendering performance + the stencil library will remember the scroll position from the previous time it was open\n\n## Fixed\n- Replaced command palette and tab export SVG/PNG/Excalidraw actions with "export image" which will take the user to the export image dialog.\n',"1.9.2":`\n
\n\n
\n\n## New\n- Excalidraw.com Color Picker redesign [#6216](https://github.com/excalidraw/excalidraw/pull/6216)\n- Updated palette loader script in the script library\n- New ExcalidrawAutomate API to load Elements and AppState from another Excalidraw file.\n${String.fromCharCode(96,96,96)}typescript\nasync getSceneFromFile(file: TFile): Promise<{elements: ExcalidrawElement[]; appState: AppState;}>\n${String.fromCharCode(96,96,96)}\n`,"1.9.1":'\n## Updates from Excalidraw.com\n- "Unlock all elements" - new action available via the context menu [#5894](https://github.com/excalidraw/excalidraw/pull/5894)\n- Minor improvements to improve the speed [#6560](https://github.com/excalidraw/excalidraw/pull/6560)\n- Retain Seed on Shift Paste [#6509](https://github.com/excalidraw/excalidraw/pull/6509)\n\n## New/Fixed\n- Clicking on the link handle (top right corner) will open the link in the same window\n- CTRL/CMD click on a link will open the link in a new tab and will focus on the new tab\n- Linking to parts of images. In some cases clicking search results, links, or backlinks did not focus on the right element according to the link. Fixed.\n',"1.9.0":`\n
\n\n
\n\n## Fixed\n- Embedded images, markdowns, PDFs will load one by one, not in one go after a long wait\n\n## New\n- Embed PDF\n\n## New in ExcalidrawAutomate\n- onFileCreateHook: if set this hook is called whenever a new drawing is created using Excalidraw command palette menu actions. If the excalidraw file is created using Templater or other means, the trigger will not fire. [#1124](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1124)\n${String.fromCharCode(96,96,96)}typescript\n onFileCreateHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being created\n view: ExcalidrawView;\n }) => Promise;\n ${String.fromCharCode(96,96,96)}\n`,"1.8.26":"\n## Fixed\n- Dynamic styling did not pick up correctly\n - the accent color with the default Obsidian theme\n - the drawing theme color with the out of the box, default new drawing (not using a template)\n- The Obsidian tools panel did not pick up user scripts when installing your very first script. A reload of Obsidian was required.\n","1.8.25":'\n
\n\n
\n\n## New & improved\n- Multi-link support\n- Updated [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script for better handwritten text support. \n - Add links to text elements\n - Creating wrapped text in transparent sticky notes\n - Add text to arrows and lines\n - Handwriting support on iOS via Scribble\n\n## Fixed\n - The long-standing issue of jumping text\n \n',"1.8.24":`\n## Updates from Excalidraw.com\n- fix: color picker keyboard handling not working\n- fix: center align text when bind to the container via context menu\n- fix: split "Edit selected shape" shortcut\n\n## Fixed\n- BUG: Area embed link of svg inside excalidraw embed entire svg instead of area [#1098](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1098)\n\n## New\n- I updated the [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script with tons of new features. I am still beta testing the script. I will release a demo video in the next few days.\n\n## New in Excalidraw Automate\n- I added many more configuration options for the scriptEngine utils.inputPrompt function. See [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) for a demonstration of this new feature.\n${String.fromCharCode(96,96,96)}typescript\n public static async inputPrompt(\n view: ExcalidrawView,\n plugin: ExcalidrawPlugin,\n app: App,\n header: string,\n placeholder?: string,\n value?: string,\n buttons?: { caption: string; tooltip?:string; action: Function }[],\n lines?: number,\n displayEditorButtons?: boolean,\n customComponents?: (container: HTMLElement) => void\n )\n${String.fromCharCode(96,96,96)}`,"1.8.23":'\n## Fixes\n- Fixed palm rejection to prevent unwanted spikes when using the freedraw tool. ([#1065](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1065))\n- Fixed issue where images disappeared when zoomed in. ([#6417](https://github.com/excalidraw/excalidraw/pull/6417))\n- Autosave will now save the drawing when you change the theme from dark to light or vice versa. ([#1080](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1080))\n- Added padding to short LaTeX formulas to prevent cropping. ([#1053](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1053))\n\n## New Features\n- Added a new command palette action: Toggle to invert default binding behavior. This new feature allows you to switch between normal and inverted mode. In normal mode, arrows will bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects. In inverted mode, arrows will not bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects.\n- You can now set a template LaTeX formula in the plugin settings (under experimental features) to be used when creating a new LaTeX formula. ([#1090](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1090))\n- Redesigned the Image Export dialog. I hope dropdowns are now more intuitive than the toggles were.\n- Added the ability to export only the selected part of a drawing. See the Export dialog for more information.\n- Added a zigzag fill easter egg. See a demo of this feature [here](https://twitter.com/excalidraw/status/1645428942344445952?s=61&t=nivKLx2vgl6hdv2EbW4mZg).\n- Added a new expert function: recolor embedded Excalidraw and SVG images (not JPG, PNG, BMP, WEBP, GIF). See a demo of this feature here:\n\n
\n\n
\n',"1.8.22":`\n## Fixed\n- Styling of custom pen and script buttons in the side panel was inverted.\n- Minor tweaks to dynamic styling. [see this video to understand dynamic styling](https://youtu.be/fypDth_-8q0)\n\n## New\n- New scripts by @threethan:\n - [Auto Draw for Pen](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Auto%20Draw%20for%20Pen.md): Automatically switches between the select and draw tools, based on whether a pen is being used. Supports most pens including Apple Pencil.\n - [Hardware Eraser Support](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Hardware%20Eraser%20Support.md): Adds support for pen inversion, a.k.a. the hardware eraser on the back of your pen. Supports Windows based styluses. Does not suppoprt Apple Pencil or S-Pen.\n- Added separate buttons to support copying link, area or group references to objects on the drawing. [#1063](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1063). See [this video](https://youtu.be/yZQoJg2RCKI) for more details on how this works.\n- Hover preview will no longer trigger for image files (.png, .svg, .jpg, .gif, .webp, .bmp, .ico, .excalidraw)\n- Minor updates to the [Slideshow](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) script. You can download the updated script from the Excalidraw script library. The slideshow will now correctly run also when initiated in a popout window. When the drawing is in a popout window, the slideshow will not be full screen, but will only occupy the popout window. If you run the slideshow from the main Obsidian workspace, it will be displayed in full-screen mode.\n- Updated the Icon Library script to now include image keywords under each of the images to allow searching for keywords (CTRL/CMD+F). I've uploaded the new script to [here](https://gist.github.com/zsviczian/33ff695d5b990de1ebe8b82e541c26ad). If you need further information watch this [video](https://youtu.be/_OEljzZ33H8)\n\n## New in ExcalidrawAutomate\n- ${String.fromCharCode(96)}addText${String.fromCharCode(96)} ${String.fromCharCode(96)}formatting${String.fromCharCode(96)} parameter now accepts ${String.fromCharCode(96)}boxStrokeColor${String.fromCharCode(96)} and ${String.fromCharCode(96)}textVerticalAlign${String.fromCharCode(96)} values.\n${String.fromCharCode(96,96,96)}typescript\naddText(\n topX: number,\n topY: number,\n text: string,\n formatting?: {\n wrapAt?: number;\n width?: number;\n height?: number;\n textAlign?: "left" | "center" | "right";\n box?: boolean | "box" | "blob" | "ellipse" | "diamond";\n boxPadding?: number;\n boxStrokeColor?: string;\n textVerticalAlign?: "top" | "middle" | "bottom";\n },\n id?: string,\n ): string;\n${String.fromCharCode(96,96,96)}\n- new ${String.fromCharCode(96)}onFileOpenHook${String.fromCharCode(96)}. If set, this callback is triggered, when an Excalidraw file is opened. You can use this callback in case you want to do something additional when the file is opened. This will run before the file level script defined in the ${String.fromCharCode(96)}excalidraw-onload-script${String.fromCharCode(96)} frontmatter is executed. Excalidraw will await the result of operations here. Handle with care. If you change data such as the frontmatter of the underlying file, I haven't tested how it will behave.\n${String.fromCharCode(96,96,96)}typescript\nonFileOpenHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being loaded\n view: ExcalidrawView;\n}) => Promise;\n${String.fromCharCode(96,96,96)}`,"1.8.21":'\n## Quality of Life improvements\n- Dynamic Styling (see plugin settings / Display). When Dynamic Styling is enabled it fixes Excalidraw issues with the Minimal Theme\n- New "Invert Colors" script\n\n
\n\n
\n\n### Note\nThe few of you, that are using the Dynamic Styling Templater script, please remove it and restart Obsidian.\n',"1.8.20":"\n## Fixed\n- Excalidraw froze Obsidian in certain rare situations [#1054](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1054)\n- File loading error [#1062](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1062)\n- Embedded images in markdown documents no longer have the line on the side. Image sizing works better. [#1059](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1059)\n- Locked elements will not show a hover preview [#1060](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1060)\n- CTRL/CMD + K correctly triggers add link [#1056](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1056)\n\n## New\n- Grid color adjusts to the view background color\n\nI'm sorry, but the sticky note editing issue on Android with the on-screen keyboard has still not been resolved. If you also experience this error, please help raise the priority with the core Excalidraw team by commenting on this issue: [#6330](https://github.com/excalidraw/excalidraw/issues/6330)\n","1.8.19":"\n## Fixed: Text wrapping issue in sticky notes\n\nI fixed an issue where text would wrap differently and words would disappear during text editing in sticky notes. You can check out the details on [GitHub #6318](https://github.com/excalidraw/excalidraw/issues/6331).\n\nI am aware of three additional issues related to container text editing that are still open. I apologize for any inconvenience caused by the recent change in how text size is calculated on Excalidraw.com, which has had a knock-on effect on Obsidian. I am actively working to address the following issues:\n\n- Pinch zooming while editing text in a text container [GitHub #6331](https://github.com/excalidraw/excalidraw/issues/6331)\n- Container text jumps on edit on Android with on-screen keyboard [GitHub #6330](https://github.com/excalidraw/excalidraw/issues/6330)\n- Shadow text when editing text containers without a keyboard on iOS [GitHub #6329](https://github.com/excalidraw/excalidraw/issues/6329)\n\nThank you for your patience while I work on resolving these issues.\n","1.8.18":`\n## Fixed\n- Text scaling issue introduced in 1.8.17\n- [#1043](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1043): Error handling when ${String.fromCharCode(96)}onCanvasColorChangeHook${String.fromCharCode(96)} is executed. This is used in the [Dynamic Styling Script](https://youtu.be/LtR04fNTKTM). \n`,"1.8.17":'\n## New from Excalidraw.com\n- Improved text wrapping in the ellipse and diamond shapes [6172](https://github.com/excalidraw/excalidraw/pull/6172)\n\n## New\n- Updated slideshow script\n\n
\n\n
\n\n## Fixed: \n- "Save to..." in the Stencil Library menu now works as expected [#1032](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1032)\n',"1.8.16":'\n**!!! Modifier keys have changed, please review the table below !!!**\n[Click this to see the new shortcuts overview image](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\n## Fixed \n- This version was extensively tested and developed on MacOS to remove usability issues.\n- New command palette action to create a new drawing in a new tab\n- Modifier keys to open links in the active window, splitting the current view to the right, in a new tab, or in a popout window now behave consistently both in Excalidraw and when clicking a drawing that is embedded in a markdown note.\n- Drag & Drop properly works from within Obsidian, from a web browser, and from the OS file explorer\n\n
\n\n
\n',"1.8.14":"\n## Fixed\n- text element link gets deleted when the drawing is reloaded\n","1.8.13":'\n## Fixed\n- When changing a text element in markdown mode, the change seem to have showed up when switching back to Excalidraw mode, but then lost these changes when loading the file the next time.\n- Scrolling through a page that has embedded drawings on Obsidian Mobile accidently opens the drawing in Excalidraw when touching the image. Now you need to press and hold to open the image in Excalidraw. [#1003](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1003)\n- The scrollbar is no longer visible when presenting using the SlideShow script\n- Stroke properties could not be changed when custom pen settings had "Stroke & fill applies to: All shapes". It works now.\n\n## QoL\n- Custom pens will remember the stroke changes until you press the pen preset button again.\n - This is a bit hard to explain, let me try... Essentially, when you use a custom pen, it will keep the changes you made to the pen (like changing the stroke width) until you press the pen-prereset button again. So, for example, if you\'re using a mind mapping custom pen and change its color, and then switch to a different tool like text, when you switch back to the freedraw tool using the Excalidraw tools panel, the pen will still have the same color you set earlier, but if you press the mind mapping pen-preset button, it will default back to your custom pen settings including your preset color.\n- Added new buttons to load current stroke color and background color in the pen settings dialog. Also added an edit box so you can configure any valid color string (including with transparency) for pen stroke and background colors. [#991](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/991)\n',"1.8.11":'\n
\n\n
\n\n# New\n- Support for referencing images from the internet in Excalidraw drawings, including YouTube thumbnail support. [#913](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/913)\n - Link to images on the internet without creating a copy in your Vault by holding down the CTRL key while dropping the link or image.\n - Automatic conversion of image URLs and YouTube links into image elements with original links added as a link on the element when pasting. Note, that if you only want to paste the plain text link (not the image), first double-click the canvas to start a new text element, then paste the link.\n- Two new options added to plugin settings:\n - Make mouse wheel zoom by default [#474](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/474)\n - Allow pinch zoom in pen mode [#828](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/828)\n- Update to the [Set Grid](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20Grid.svg) script now saves the grid setting for the current file.\n',"1.8.10":'\n
\n\n
\n\n# QoL improvements\n- You can structure icons in the Obsidian tools panel by moving scripts to folders\n![image|300](https://user-images.githubusercontent.com/14358394/212389592-306130d0-209a-49df-99bb-c538f2155b23.png)\n- I added useful actions to the hamburger menu in both tray-mode and normal-mode. \n![image|150](https://user-images.githubusercontent.com/14358394/212534508-9107fd19-27ab-4415-8abc-bc97c73afc0b.png)\n- I added a new Export Image dialog. You can access the new export screen from the hamburger-menu\n![image|200](https://user-images.githubusercontent.com/14358394/212534654-7a479e23-8d5d-452e-9a18-a9896278aa27.png)\n- Links in help now point to Obsidian-Excalidraw relevant content.\n- I added a welcome screen\n![image|150](https://user-images.githubusercontent.com/14358394/212534568-3cd1e8a1-5b20-4a30-96e4-40d7dac57e33.png)\n- I updated the alternative dark mode / dynamic styling [script](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n',"1.8.9":"\n# Minor QoL improvements\n- When you open a second drawing in the same Excalidraw view (i.e. by navigating a link) and make a change to this drawing, and then press UNDO, the entire drawing disappeared. Redo brought the image back, however, this behavior was frustrating. Not anymore...\n- On iPad\n - when you open the command palette, autozoom resized the drawing. If the Obsidian command palette or some other modal window is shown Excalidraw will not resize the view.\n - when you add a link to the drawing using the Command Palette, sometimes the link was added in a far corner of the drawing outside the current view area. This should be fixed now.","1.8.8":`\n
\n\n
\n\n# New\n- The plugin now includes support for [Perfect Freehand](https://perfect-freehand-example.vercel.app/) pen-options. I've also added a new [Alternative Pens](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Alternative%20Pens.md) script.\n- Embed scene in exported PNG and SVG images [#860](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/860). This means that the export will be a normal PNG or SVG image with the added functionality that if someone loads the image into excalidraw.com it will open as a normal excalidraw file.\n - I've added 2 new Command Palette actions (export PNG, export SVG with embedded scene).\n - If you SHIFT click ${String.fromCharCode(96)} Save as PNG (or SVG)${String.fromCharCode(96)} in the workspace-tab menu, Excalidraw will embed the scene in the export.\n- I updated the [Organic Line](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Organic%20Line.md) script. It has an improved thick-to-thin look and a new thin-to-thick-to-thin line type.\n\n# Fixed\n- Intelligent image width setting [#955](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/955). Before this change, when the embedded image was small, the image would be extended to meet the image width setting in plugin settings. From now on, if the image is smaller than max-width, it will only extend to max-width. You can still set 100% width using custom CSS. See more on that [here](https://github.com/zsviczian/obsidian-excalidraw-plugin#embedded-images).\n\n# New in ExcalidrawAutomate\n- I added the ${String.fromCharCode(96)} plaintext${String.fromCharCode(96)} parameter to ${String.fromCharCode(96)}ExcalidrawAutomate.create${String.fromCharCode(96)} . Using this, you can add some text below the frontmatter but above the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section. Use this for example to add metadata to your file. (e.g. I use this in my Daily Quote template to add a Dataview field for the ${String.fromCharCode(96)}Author::${String.fromCharCode(96)} and add the quote with a standard block reference, so I can easily reference it in other files. I also add the ${String.fromCharCode(96)}#quote${String.fromCharCode(96)} tag to the file using this.)\n- The script running in the ScriptEngine now also receives the ${String.fromCharCode(96)}TFile${String.fromCharCode(96)} object for the script itself. You can access this object during execution via the ${String.fromCharCode(96)}utils.scriptFile${String.fromCharCode(96)} variable. \n`,"1.8.7":'\n## New from Excalidraw.com\n- Support shrinking text containers to their original height when text is removed [#6025](https://github.com/excalidraw/excalidraw/pull/6025)\n
\n\n
\n\n## Fixed\n- removed the white background when editing arrow-label [#6033](https://github.com/excalidraw/excalidraw/pull/6033)\n- Minor style tweaks\n - for embedding Excalidraw into Obsidian Canvas. e.g. dragging no longer accidentally creates an image copy of the drawing, and\n - style tweaks on the Excalidraw canvas\n\n## New\n- If you set a different text color and sticky note border color, now if you change the border color, the text color will not be changed.\n',"1.8.6":`\n## New from Excalidraw.com:\n- Better default radius for rectangles [#5553](https://github.com/excalidraw/excalidraw/pull/5553). Existing drawings will look unchanged, this applies only to new rectangles.\n![image|200](https://user-images.githubusercontent.com/5153846/206264345-59fd7436-e87b-4bc9-ade8-9e6f6a6fd8c1.png)\n> [!attention]- ExcalidrawAutomate technical details\n> - ${String.fromCharCode(96)}strokeSharpness${String.fromCharCode(96)} is now deprecated\n> - use roundness instead\n> - ${String.fromCharCode(96)}roundness === null${String.fromCharCode(96)} is legacy ${String.fromCharCode(96)}strokeSharpness = "sharp"${String.fromCharCode(96)}\n> - ${String.fromCharCode(96)}roundness = { type: RoundnessType; value?: number }${String.fromCharCode(96)}\n> - type: 1, LEGACY, type:2 PROPORTIONAL_RADIUS, type:3 ADAPTIVE_RADIUS: 3\n> - value:\n> - Radius represented as % of element's largest side (width/height).\n> DEFAULT_PROPORTIONAL_RADIUS = 0.25;\n> - Fixed radius for the ADAPTIVE_RADIUS algorithm. In pixels.\n> DEFAULT_ADAPTIVE_RADIUS = 32;\n\n## New\n- For Obsidian 1.1.6 and above\n - Improved embedding into Obsidian Canvas\n - Improved embedding into Markdown documents\n- Added setting under ${String.fromCharCode(96)}Display/Default mode when opening Excalidraw${String.fromCharCode(96)} to always open the drawing in view mode on Mobile, but in normal mode on desktop. [#939](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/939)\n\n## Fixed\n- Zoom reset tooltip appears twice [#942](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/942)\n- Hid export library from library menu as it does not work due to Obsidian limitations. Use the command palette export library instead.\n- Arrow with label did not get exported and embedded correctly [#941](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/941)\n![image|200](https://user-images.githubusercontent.com/22638687/207845868-b352ddb1-7994-4f13-a0b2-f2e19bd72935.png)\n`,"1.8.4":'\n## New from Excalidraw.com\n- Labels on Arrows!!! [#5723](https://github.com/excalidraw/excalidraw/pull/5723)\n - To add a label press "Enter" or "Double click" on the arrow\n - Use "Cmd/Ctrl+double click" to enter the line editor\n\n
\n\n
\n\n## New\n- **Changed behavior**: In the Obsidian markdown editor clicking an Excalidraw image will not open the image (to avoid accidentally opening the image on a tablet). To open a drawing for editing in Excalidraw double click or long-tap on it. [#920](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/920)\n\n## Fixed \n- Text stroke color is not honored when pasting a HEX color string to an Excalidraw canvas open in an Obsidian popout window [#921](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/921)\n- The new [multi-line >> multi-element paste behavior](https://github.com/excalidraw/excalidraw/pull/5786) introduced in the previous release did not work as expected in Obsidian. Now it does.\n',"1.8.2":`\nIntroducing the [Excalidraw Slideshow Script](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) - available in the script store\n
\n\n
\n\n## Fixed\n- Obsidian tools panel gets misplaced after switching Obsidian workspace tabs\n\n## New in ExcalidrawAutomate\n- changed ${String.fromCharCode(96)}viewToggleFullScreen(forceViewMode: boolean = false): void${String.fromCharCode(96)}: the function will toggle view mode on when going to full screen and view mode off when terminating full screen.\n- new functions\n${String.fromCharCode(96,96,96)}typescript\nsetViewModeEnabled(enabled: boolean):void;\nviewUpdateScene(\n scene: {\n elements?: ExcalidrawElement[];\n appState?: AppState;\n files?: BinaryFileData;\n commitToHistory?: boolean;\n },\n restore: boolean = false,\n ):void;\nviewZoomToElements(\n selectElements: boolean,\n elements: ExcalidrawElement[]\n ):void;\n${String.fromCharCode(96,96,96)}\n\n`,"1.8.1":`\n## New and fixes from Excalidraw.com\n- New text paste behavior. Pasting multiline text will generate separate text elements unless you hold down the shift button while pasting [#5786](https://github.com/excalidraw/excalidraw/pull/5786)\n- line editor fixes [#5927](https://github.com/excalidraw/excalidraw/pull/5927)\n\n## Fixed\n- The Command Palette "Insert link" action now inserts the new link at the top drawing layer, not at the bottom.\n- Updated, hopefully, better organized, Plugin Readme.\n\n## New\n- Second attempt at moving to React 18. This upgrade is required to maintain alignment with the core Excalidraw product and to continue to benefit from Excalidraw.com enhancements.\n- Added options to Plugin Settings\n - to disable autozoom when loading a drawing for the first time [#907](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/907)\n - to modify autosave interval. You can now set an autosave interval for desktop and for mobile [#888](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/888)\n\n## New in ExcalidrawAutomate\n- Published the obsidian_module on the ExcalidrawAutomate object. ${String.fromCharCode(96)}ExcalidrawAutomate.obsidian${String.fromCharCode(96)}. Publishing this object will give script developers increased flexibility and control over script automation.\n`,"1.8.0":'\n
\n\n
\n\n## New\n- Optical Character Recognition (OCR). Introducing the MVP (minimum viable product) release of the integration of [Taskbone](https://taskbone.com) OCR into Excalidraw. See the new scan button on the Obsidian tools panel.\n- New and improved full-screen mode\n - Activate using the Obsidian tools panel, the Obsidian Command Palette, or the Alt+F11 shortcut\n - The ESC key no longer closes full-screen\n - Full-screen mode works properly on iOS as well\n- Improved Icon visibility on the Obsidian tools panel\n- Added 3 additional buttons to the tools panel\n - Force save\n - Open link (useful on Mobile devices). In the case of LaTeX equations, the button opens the equation properties.\n - Open the link in a new pane. In the case of embedded markdown documents, the button opens the embed properties.\n\n## Fixed\n- The [deconstruct selected elements into a new drawing](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md) script now also correctly decomposes transcluded text elements.\n',"1.7.30":"\nFix:\n- Forcing the embedded image to always scale to 100% (a feature introduced in [1.7.26](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.7.26)) scaled the embedded excalidraw drawings incorrectly on devices with a pixel ratio of 2 or 3 (e.g. iPads). This is now fixed, however, this fix might retrospectively impact drawings that use this feature. Sorry for that.\n","1.7.29":"\n- This is a big update that accommodates the **UI redesign** on Excalidraw.com [#5780](https://github.com/excalidraw/excalidraw/pull/5780). The change on the surface may seem superficial, however, I had to tweak a number of things to make it work in Obsidian. I hope I found everything that broke and fixed it, if not, I'll try to fix it quickly...\n- This update also comes with changes under the hood that **fix issues with Excalidraw Automate** - paving the way for further scripts, plus some smaller bug fixes.\n- I **reworked text wrapping**. In some cases, text wrapping in SVG exports looked different compared to how the text looked in Excalidraw. This should now be fixed.\n- If you are using the **Experimental Dynamic Styling** of the Excalidraw Toolbar, then I recommend updating your styling script following base on [this](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n","1.7.27":'## New\n- Import SVG drawing as an Excalidraw object. [#679](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/679)\n\n
\n\n
\n\n## Fixed\n- Large drawings freeze on the iPad when opening the file. I implemented a workaround whereby Excalidraw will avoid zoom-to-fit drawings with over 1000 elements. [#863](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/863)\n- Reintroduced copy/paste to the context menu\n',"1.7.26":'## Fixed\n- Transcluded block with a parent bullet does not embed sub-bullet [#853](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/853)\n- Transcluded text will now exclude ^block-references at end of lines\n- Phantom duplicates of the drawing appear when "zoom to fit" results in a zoom value below 10% and there are many objects on the canvas [#850](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/850)\n- CTRL+Wheel will increase/decrease zoom in steps of 5% matching the behavior of the "+" & "-" zoom buttons.\n- Latest updates from Excalidarw.com\n - Freedraw flip not scaling correctly [#5752](https://github.com/excalidraw/excalidraw/pull/5752)\n - Multiple elements resizing regressions [#5586](https://github.com/excalidraw/excalidraw/pull/5586)\n\n## New - power user features\n- Force the embedded image to always scale to 100%. Note: this is a very niche feature with a very particular behavior that I built primarily for myself (even more so than other features in Excalidraw Obsidian - also built primarily for myself 😉)... This will reset your embedded image to 100% size every time you open the Excalidraw drawing, or in case you have embedded an Excalidraw drawing on your canvas inserted using this function, every time you update the embedded drawing, it will be scaled back to 100% size. This means that even if you resize the image on the drawing, it will reset to 100% the next time you open the file or you modify the original embedded object. This feature is useful when you decompose a drawing into separate Excalidraw files, but when combined onto a single canvas you want the individual pieces to maintain their actual sizes. I use this feature to construct Book-on-a-Page summaries from atomic drawings.\n- I added an action to the command palette to temporarily disable/enable Excalidraw autosave. When autosave is disabled, Excalidraw will still save your drawing when changing to another Obsidian window, but it will not save every 10 seconds. On a mobile device (but also on a desktop) this can lead to data loss if you terminate Obsidian abruptly (i.e. swipe the application away, or close Obsidian without first closing the drawing). Use this feature if you find Excalidraw laggy.'};class ReleaseNotes extends obsidian_module.Modal{constructor(e,t,A){super(e),this.plugin=t,this.version=A}onOpen(){var e;this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText(`Welcome to Excalidraw ${null!==(e=this.version)&&void 0!==e?e:""}`),this.createForm()}async onClose(){this.contentEl.empty(),await this.plugin.loadSettings(),this.plugin.settings.previousRelease=PLUGIN_VERSION,await this.plugin.saveSettings()}async createForm(){let e=this.plugin.settings.previousRelease;e=this.version===e?"0.0.0":e;const t=this.version?Object.keys(RELEASE_NOTES).filter((t=>"Intro"===t||isVersionNewerThanOther(t,e))).map((e=>`${"Intro"===e?"":`# ${e}\n`}${RELEASE_NOTES[e]}`)).slice(0,10).join("\n\n---\n"):FIRST_RUN;await obsidian_module.MarkdownRenderer.renderMarkdown(t,this.contentEl,"",this.plugin),this.contentEl.createEl("p",{text:""},(e=>{e.style.textAlign="right",e.createEl("button",{text:"Close"}).onclick=()=>this.close()}))}}var top="top",bottom="bottom",right="right",left="left",auto="auto",basePlacements=[top,bottom,right,left],start="start",end="end",clippingParents="clippingParents",viewport="viewport",popper="popper",reference="reference",variationPlacements=basePlacements.reduce((function(e,t){return e.concat([t+"-"+start,t+"-"+end])}),[]),placements=[].concat(basePlacements,[auto]).reduce((function(e,t){return e.concat([t,t+"-"+start,t+"-"+end])}),[]),beforeRead="beforeRead",read="read",afterRead="afterRead",beforeMain="beforeMain",main="main",afterMain="afterMain",beforeWrite="beforeWrite",write="write",afterWrite="afterWrite",modifierPhases=[beforeRead,read,afterRead,beforeMain,main,afterMain,beforeWrite,write,afterWrite];function getNodeName(e){return e?(e.nodeName||"").toLowerCase():null}function getWindow(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function isElement(e){return e instanceof getWindow(e).Element||e instanceof Element}function isHTMLElement(e){return e instanceof getWindow(e).HTMLElement||e instanceof HTMLElement}function isShadowRoot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof getWindow(e).ShadowRoot||e instanceof ShadowRoot)}function applyStyles(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var A=t.styles[e]||{},i=t.attributes[e]||{},n=t.elements[e];isHTMLElement(n)&&getNodeName(n)&&(Object.assign(n.style,A),Object.keys(i).forEach((function(e){var t=i[e];!1===t?n.removeAttribute(e):n.setAttribute(e,!0===t?"":t)})))}))}function effect$2(e){var t=e.state,A={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,A.popper),t.styles=A,t.elements.arrow&&Object.assign(t.elements.arrow.style,A.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],n=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:A[e]).reduce((function(e,t){return e[t]="",e}),{});isHTMLElement(i)&&getNodeName(i)&&(Object.assign(i.style,a),Object.keys(n).forEach((function(e){i.removeAttribute(e)})))}))}}var applyStyles$1={name:"applyStyles",enabled:!0,phase:"write",fn:applyStyles,effect:effect$2,requires:["computeStyles"]};function getBasePlacement(e){return e.split("-")[0]}var max=Math.max,min=Math.min,round=Math.round;function getUAString(){var e=navigator.userAgentData;return null!=e&&e.brands?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function isLayoutViewport(){return!/^((?!chrome|android).)*safari/i.test(getUAString())}function getBoundingClientRect(e,t,A){void 0===t&&(t=!1),void 0===A&&(A=!1);var i=e.getBoundingClientRect(),n=1,a=1;t&&isHTMLElement(e)&&(n=e.offsetWidth>0&&round(i.width)/e.offsetWidth||1,a=e.offsetHeight>0&&round(i.height)/e.offsetHeight||1);var r=(isElement(e)?getWindow(e):window).visualViewport,s=!isLayoutViewport()&&A,o=(i.left+(s&&r?r.offsetLeft:0))/n,l=(i.top+(s&&r?r.offsetTop:0))/a,c=i.width/n,d=i.height/a;return{width:c,height:d,top:l,right:o+c,bottom:l+d,left:o,x:o,y:l}}function getLayoutRect(e){var t=getBoundingClientRect(e),A=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-A)<=1&&(A=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:A,height:i}}function contains(e,t){var A=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(A&&isShadowRoot(A)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function getComputedStyle$1(e){return getWindow(e).getComputedStyle(e)}function isTableElement(e){return["table","td","th"].indexOf(getNodeName(e))>=0}function getDocumentElement(e){return((isElement(e)?e.ownerDocument:e.document)||window.document).documentElement}function getParentNode(e){return"html"===getNodeName(e)?e:e.assignedSlot||e.parentNode||(isShadowRoot(e)?e.host:null)||getDocumentElement(e)}function getTrueOffsetParent(e){return isHTMLElement(e)&&"fixed"!==getComputedStyle$1(e).position?e.offsetParent:null}function getContainingBlock(e){var t=/firefox/i.test(getUAString());if(/Trident/i.test(getUAString())&&isHTMLElement(e)&&"fixed"===getComputedStyle$1(e).position)return null;var A=getParentNode(e);for(isShadowRoot(A)&&(A=A.host);isHTMLElement(A)&&["html","body"].indexOf(getNodeName(A))<0;){var i=getComputedStyle$1(A);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return A;A=A.parentNode}return null}function getOffsetParent(e){for(var t=getWindow(e),A=getTrueOffsetParent(e);A&&isTableElement(A)&&"static"===getComputedStyle$1(A).position;)A=getTrueOffsetParent(A);return A&&("html"===getNodeName(A)||"body"===getNodeName(A)&&"static"===getComputedStyle$1(A).position)?t:A||getContainingBlock(e)||t}function getMainAxisFromPlacement(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function within(e,t,A){return max(e,min(t,A))}function withinMaxClamp(e,t,A){var i=within(e,t,A);return i>A?A:i}function getFreshSideObject(){return{top:0,right:0,bottom:0,left:0}}function mergePaddingObject(e){return Object.assign({},getFreshSideObject(),e)}function expandToHashMap(e,t){return t.reduce((function(t,A){return t[A]=e,t}),{})}var toPaddingObject=function(e,t){return mergePaddingObject("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:expandToHashMap(e,basePlacements))};function arrow(e){var t,A=e.state,i=e.name,n=e.options,a=A.elements.arrow,r=A.modifiersData.popperOffsets,s=getBasePlacement(A.placement),o=getMainAxisFromPlacement(s),l=[left,right].indexOf(s)>=0?"height":"width";if(a&&r){var c=toPaddingObject(n.padding,A),d=getLayoutRect(a),h="y"===o?top:left,u="y"===o?bottom:right,g=A.rects.reference[l]+A.rects.reference[o]-r[o]-A.rects.popper[l],p=r[o]-A.rects.reference[o],m=getOffsetParent(a),w=m?"y"===o?m.clientHeight||0:m.clientWidth||0:0,f=g/2-p/2,B=c[h],E=w-d[l]-c[u],b=w/2-d[l]/2+f,v=within(B,b,E),C=o;A.modifiersData[i]=((t={})[C]=v,t.centerOffset=v-b,t)}}function effect$1(e){var t=e.state,A=e.options.element,i=void 0===A?"[data-popper-arrow]":A;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&contains(t.elements.popper,i)&&(t.elements.arrow=i)}var arrow$1={name:"arrow",enabled:!0,phase:"main",fn:arrow,effect:effect$1,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function getVariation(e){return e.split("-")[1]}var unsetSides={top:"auto",right:"auto",bottom:"auto",left:"auto"};function roundOffsetsByDPR(e){var t=e.x,A=e.y,i=window.devicePixelRatio||1;return{x:round(t*i)/i||0,y:round(A*i)/i||0}}function mapToStyles(e){var t,A=e.popper,i=e.popperRect,n=e.placement,a=e.variation,r=e.offsets,s=e.position,o=e.gpuAcceleration,l=e.adaptive,c=e.roundOffsets,d=e.isFixed,h=r.x,u=void 0===h?0:h,g=r.y,p=void 0===g?0:g,m="function"==typeof c?c({x:u,y:p}):{x:u,y:p};u=m.x,p=m.y;var w=r.hasOwnProperty("x"),f=r.hasOwnProperty("y"),B=left,E=top,b=window;if(l){var v=getOffsetParent(A),C="clientHeight",y="clientWidth";v===getWindow(A)&&"static"!==getComputedStyle$1(v=getDocumentElement(A)).position&&"absolute"===s&&(C="scrollHeight",y="scrollWidth"),v=v,(n===top||(n===left||n===right)&&a===end)&&(E=bottom,p-=(d&&v===b&&b.visualViewport?b.visualViewport.height:v[C])-i.height,p*=o?1:-1),n!==left&&(n!==top&&n!==bottom||a!==end)||(B=right,u-=(d&&v===b&&b.visualViewport?b.visualViewport.width:v[y])-i.width,u*=o?1:-1)}var F,x=Object.assign({position:s},l&&unsetSides),S=!0===c?roundOffsetsByDPR({x:u,y:p}):{x:u,y:p};return u=S.x,p=S.y,o?Object.assign({},x,((F={})[E]=f?"0":"",F[B]=w?"0":"",F.transform=(b.devicePixelRatio||1)<=1?"translate("+u+"px, "+p+"px)":"translate3d("+u+"px, "+p+"px, 0)",F)):Object.assign({},x,((t={})[E]=f?p+"px":"",t[B]=w?u+"px":"",t.transform="",t))}function computeStyles(e){var t=e.state,A=e.options,i=A.gpuAcceleration,n=void 0===i||i,a=A.adaptive,r=void 0===a||a,s=A.roundOffsets,o=void 0===s||s,l={placement:getBasePlacement(t.placement),variation:getVariation(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:n,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,mapToStyles(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r,roundOffsets:o})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,mapToStyles(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:o})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var computeStyles$1={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:computeStyles,data:{}},passive={passive:!0};function effect(e){var t=e.state,A=e.instance,i=e.options,n=i.scroll,a=void 0===n||n,r=i.resize,s=void 0===r||r,o=getWindow(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&l.forEach((function(e){e.addEventListener("scroll",A.update,passive)})),s&&o.addEventListener("resize",A.update,passive),function(){a&&l.forEach((function(e){e.removeEventListener("scroll",A.update,passive)})),s&&o.removeEventListener("resize",A.update,passive)}}var eventListeners={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:effect,data:{}},hash$1={left:"right",right:"left",bottom:"top",top:"bottom"};function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,(function(e){return hash$1[e]}))}var hash={start:"end",end:"start"};function getOppositeVariationPlacement(e){return e.replace(/start|end/g,(function(e){return hash[e]}))}function getWindowScroll(e){var t=getWindow(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function getWindowScrollBarX(e){return getBoundingClientRect(getDocumentElement(e)).left+getWindowScroll(e).scrollLeft}function getViewportRect(e,t){var A=getWindow(e),i=getDocumentElement(e),n=A.visualViewport,a=i.clientWidth,r=i.clientHeight,s=0,o=0;if(n){a=n.width,r=n.height;var l=isLayoutViewport();(l||!l&&"fixed"===t)&&(s=n.offsetLeft,o=n.offsetTop)}return{width:a,height:r,x:s+getWindowScrollBarX(e),y:o}}function getDocumentRect(e){var t,A=getDocumentElement(e),i=getWindowScroll(e),n=null==(t=e.ownerDocument)?void 0:t.body,a=max(A.scrollWidth,A.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),r=max(A.scrollHeight,A.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),s=-i.scrollLeft+getWindowScrollBarX(e),o=-i.scrollTop;return"rtl"===getComputedStyle$1(n||A).direction&&(s+=max(A.clientWidth,n?n.clientWidth:0)-a),{width:a,height:r,x:s,y:o}}function isScrollParent(e){var t=getComputedStyle$1(e),A=t.overflow,i=t.overflowX,n=t.overflowY;return/auto|scroll|overlay|hidden/.test(A+n+i)}function getScrollParent(e){return["html","body","#document"].indexOf(getNodeName(e))>=0?e.ownerDocument.body:isHTMLElement(e)&&isScrollParent(e)?e:getScrollParent(getParentNode(e))}function listScrollParents(e,t){var A;void 0===t&&(t=[]);var i=getScrollParent(e),n=i===(null==(A=e.ownerDocument)?void 0:A.body),a=getWindow(i),r=n?[a].concat(a.visualViewport||[],isScrollParent(i)?i:[]):i,s=t.concat(r);return n?s:s.concat(listScrollParents(getParentNode(r)))}function rectToClientRect(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function getInnerBoundingClientRect(e,t){var A=getBoundingClientRect(e,!1,"fixed"===t);return A.top=A.top+e.clientTop,A.left=A.left+e.clientLeft,A.bottom=A.top+e.clientHeight,A.right=A.left+e.clientWidth,A.width=e.clientWidth,A.height=e.clientHeight,A.x=A.left,A.y=A.top,A}function getClientRectFromMixedType(e,t,A){return t===viewport?rectToClientRect(getViewportRect(e,A)):isElement(t)?getInnerBoundingClientRect(t,A):rectToClientRect(getDocumentRect(getDocumentElement(e)))}function getClippingParents(e){var t=listScrollParents(getParentNode(e)),A=["absolute","fixed"].indexOf(getComputedStyle$1(e).position)>=0&&isHTMLElement(e)?getOffsetParent(e):e;return isElement(A)?t.filter((function(e){return isElement(e)&&contains(e,A)&&"body"!==getNodeName(e)})):[]}function getClippingRect(e,t,A,i){var n="clippingParents"===t?getClippingParents(e):[].concat(t),a=[].concat(n,[A]),r=a[0],s=a.reduce((function(t,A){var n=getClientRectFromMixedType(e,A,i);return t.top=max(n.top,t.top),t.right=min(n.right,t.right),t.bottom=min(n.bottom,t.bottom),t.left=max(n.left,t.left),t}),getClientRectFromMixedType(e,r,i));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function computeOffsets(e){var t,A=e.reference,i=e.element,n=e.placement,a=n?getBasePlacement(n):null,r=n?getVariation(n):null,s=A.x+A.width/2-i.width/2,o=A.y+A.height/2-i.height/2;switch(a){case top:t={x:s,y:A.y-i.height};break;case bottom:t={x:s,y:A.y+A.height};break;case right:t={x:A.x+A.width,y:o};break;case left:t={x:A.x-i.width,y:o};break;default:t={x:A.x,y:A.y}}var l=a?getMainAxisFromPlacement(a):null;if(null!=l){var c="y"===l?"height":"width";switch(r){case start:t[l]=t[l]-(A[c]/2-i[c]/2);break;case end:t[l]=t[l]+(A[c]/2-i[c]/2)}}return t}function detectOverflow(e,t){void 0===t&&(t={});var A=t,i=A.placement,n=void 0===i?e.placement:i,a=A.strategy,r=void 0===a?e.strategy:a,s=A.boundary,o=void 0===s?clippingParents:s,l=A.rootBoundary,c=void 0===l?viewport:l,d=A.elementContext,h=void 0===d?popper:d,u=A.altBoundary,g=void 0!==u&&u,p=A.padding,m=void 0===p?0:p,w=mergePaddingObject("number"!=typeof m?m:expandToHashMap(m,basePlacements)),f=h===popper?reference:popper,B=e.rects.popper,E=e.elements[g?f:h],b=getClippingRect(isElement(E)?E:E.contextElement||getDocumentElement(e.elements.popper),o,c,r),v=getBoundingClientRect(e.elements.reference),C=computeOffsets({reference:v,element:B,strategy:"absolute",placement:n}),y=rectToClientRect(Object.assign({},B,C)),F=h===popper?y:v,x={top:b.top-F.top+w.top,bottom:F.bottom-b.bottom+w.bottom,left:b.left-F.left+w.left,right:F.right-b.right+w.right},S=e.modifiersData.offset;if(h===popper&&S){var T=S[n];Object.keys(x).forEach((function(e){var t=[right,bottom].indexOf(e)>=0?1:-1,A=[top,bottom].indexOf(e)>=0?"y":"x";x[e]+=T[A]*t}))}return x}function computeAutoPlacement(e,t){void 0===t&&(t={});var A=t,i=A.placement,n=A.boundary,a=A.rootBoundary,r=A.padding,s=A.flipVariations,o=A.allowedAutoPlacements,l=void 0===o?placements:o,c=getVariation(i),d=c?s?variationPlacements:variationPlacements.filter((function(e){return getVariation(e)===c})):basePlacements,h=d.filter((function(e){return l.indexOf(e)>=0}));0===h.length&&(h=d);var u=h.reduce((function(t,A){return t[A]=detectOverflow(e,{placement:A,boundary:n,rootBoundary:a,padding:r})[getBasePlacement(A)],t}),{});return Object.keys(u).sort((function(e,t){return u[e]-u[t]}))}function getExpandedFallbackPlacements(e){if(getBasePlacement(e)===auto)return[];var t=getOppositePlacement(e);return[getOppositeVariationPlacement(e),t,getOppositeVariationPlacement(t)]}function flip(e){var t=e.state,A=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var n=A.mainAxis,a=void 0===n||n,r=A.altAxis,s=void 0===r||r,o=A.fallbackPlacements,l=A.padding,c=A.boundary,d=A.rootBoundary,h=A.altBoundary,u=A.flipVariations,g=void 0===u||u,p=A.allowedAutoPlacements,m=t.options.placement,w=getBasePlacement(m),f=o||(w!==m&&g?getExpandedFallbackPlacements(m):[getOppositePlacement(m)]),B=[m].concat(f).reduce((function(e,A){return e.concat(getBasePlacement(A)===auto?computeAutoPlacement(t,{placement:A,boundary:c,rootBoundary:d,padding:l,flipVariations:g,allowedAutoPlacements:p}):A)}),[]),E=t.rects.reference,b=t.rects.popper,v=new Map,C=!0,y=B[0],F=0;F=0,U=I?"width":"height",Q=detectOverflow(t,{placement:x,boundary:c,rootBoundary:d,altBoundary:h,padding:l}),k=I?T?right:left:T?bottom:top;E[U]>b[U]&&(k=getOppositePlacement(k));var O=getOppositePlacement(k),M=[];if(a&&M.push(Q[S]<=0),s&&M.push(Q[k]<=0,Q[O]<=0),M.every((function(e){return e}))){y=x,C=!1;break}v.set(x,M)}if(C)for(var L=function(e){var t=B.find((function(t){var A=v.get(t);if(A)return A.slice(0,e).every((function(e){return e}))}));if(t)return y=t,"break"},D=g?3:1;D>0&&"break"!==L(D);D--);t.placement!==y&&(t.modifiersData[i]._skip=!0,t.placement=y,t.reset=!0)}}var flip$1={name:"flip",enabled:!0,phase:"main",fn:flip,requiresIfExists:["offset"],data:{_skip:!1}};function getSideOffsets(e,t,A){return void 0===A&&(A={x:0,y:0}),{top:e.top-t.height-A.y,right:e.right-t.width+A.x,bottom:e.bottom-t.height+A.y,left:e.left-t.width-A.x}}function isAnySideFullyClipped(e){return[top,right,bottom,left].some((function(t){return e[t]>=0}))}function hide(e){var t=e.state,A=e.name,i=t.rects.reference,n=t.rects.popper,a=t.modifiersData.preventOverflow,r=detectOverflow(t,{elementContext:"reference"}),s=detectOverflow(t,{altBoundary:!0}),o=getSideOffsets(r,i),l=getSideOffsets(s,n,a),c=isAnySideFullyClipped(o),d=isAnySideFullyClipped(l);t.modifiersData[A]={referenceClippingOffsets:o,popperEscapeOffsets:l,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}var hide$1={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hide};function distanceAndSkiddingToXY(e,t,A){var i=getBasePlacement(e),n=[left,top].indexOf(i)>=0?-1:1,a="function"==typeof A?A(Object.assign({},t,{placement:e})):A,r=a[0],s=a[1];return r=r||0,s=(s||0)*n,[left,right].indexOf(i)>=0?{x:s,y:r}:{x:r,y:s}}function offset(e){var t=e.state,A=e.options,i=e.name,n=A.offset,a=void 0===n?[0,0]:n,r=placements.reduce((function(e,A){return e[A]=distanceAndSkiddingToXY(A,t.rects,a),e}),{}),s=r[t.placement],o=s.x,l=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=o,t.modifiersData.popperOffsets.y+=l),t.modifiersData[i]=r}var offset$1={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:offset};function popperOffsets(e){var t=e.state,A=e.name;t.modifiersData[A]=computeOffsets({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var popperOffsets$1={name:"popperOffsets",enabled:!0,phase:"read",fn:popperOffsets,data:{}};function getAltAxis(e){return"x"===e?"y":"x"}function preventOverflow(e){var t=e.state,A=e.options,i=e.name,n=A.mainAxis,a=void 0===n||n,r=A.altAxis,s=void 0!==r&&r,o=A.boundary,l=A.rootBoundary,c=A.altBoundary,d=A.padding,h=A.tether,u=void 0===h||h,g=A.tetherOffset,p=void 0===g?0:g,m=detectOverflow(t,{boundary:o,rootBoundary:l,padding:d,altBoundary:c}),w=getBasePlacement(t.placement),f=getVariation(t.placement),B=!f,E=getMainAxisFromPlacement(w),b=getAltAxis(E),v=t.modifiersData.popperOffsets,C=t.rects.reference,y=t.rects.popper,F="function"==typeof p?p(Object.assign({},t.rects,{placement:t.placement})):p,x="number"==typeof F?{mainAxis:F,altAxis:F}:Object.assign({mainAxis:0,altAxis:0},F),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,T={x:0,y:0};if(v){if(a){var I,U="y"===E?top:left,Q="y"===E?bottom:right,k="y"===E?"height":"width",O=v[E],M=O+m[U],L=O-m[Q],D=u?-y[k]/2:0,N=f===start?C[k]:y[k],H=f===start?-y[k]:-C[k],R=t.elements.arrow,P=u&&R?getLayoutRect(R):{width:0,height:0},V=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:getFreshSideObject(),K=V[U],G=V[Q],W=within(0,C[k],P[k]),X=B?C[k]/2-D-W-K-x.mainAxis:N-W-K-x.mainAxis,z=B?-C[k]/2+D+W+G+x.mainAxis:H+W+G+x.mainAxis,Y=t.elements.arrow&&getOffsetParent(t.elements.arrow),j=Y?"y"===E?Y.clientTop||0:Y.clientLeft||0:0,J=null!=(I=null==S?void 0:S[E])?I:0,Z=O+z-J,q=within(u?min(M,O+X-J-j):M,O,u?max(L,Z):L);v[E]=q,T[E]=q-O}if(s){var _,$="x"===E?top:left,ee="x"===E?bottom:right,te=v[b],Ae="y"===b?"height":"width",ie=te+m[$],ne=te-m[ee],ae=-1!==[top,left].indexOf(w),re=null!=(_=null==S?void 0:S[b])?_:0,se=ae?ie:te-C[Ae]-y[Ae]-re+x.altAxis,oe=ae?te+C[Ae]+y[Ae]-re-x.altAxis:ne,le=u&&ae?withinMaxClamp(se,te,oe):within(u?se:ie,te,u?oe:ne);v[b]=le,T[b]=le-te}t.modifiersData[i]=T}}var preventOverflow$1={name:"preventOverflow",enabled:!0,phase:"main",fn:preventOverflow,requiresIfExists:["offset"]};function getHTMLElementScroll(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function getNodeScroll(e){return e!==getWindow(e)&&isHTMLElement(e)?getHTMLElementScroll(e):getWindowScroll(e)}function isElementScaled(e){var t=e.getBoundingClientRect(),A=round(t.width)/e.offsetWidth||1,i=round(t.height)/e.offsetHeight||1;return 1!==A||1!==i}function getCompositeRect(e,t,A){void 0===A&&(A=!1);var i=isHTMLElement(t),n=isHTMLElement(t)&&isElementScaled(t),a=getDocumentElement(t),r=getBoundingClientRect(e,n,A),s={scrollLeft:0,scrollTop:0},o={x:0,y:0};return(i||!i&&!A)&&(("body"!==getNodeName(t)||isScrollParent(a))&&(s=getNodeScroll(t)),isHTMLElement(t)?((o=getBoundingClientRect(t,!0)).x+=t.clientLeft,o.y+=t.clientTop):a&&(o.x=getWindowScrollBarX(a))),{x:r.left+s.scrollLeft-o.x,y:r.top+s.scrollTop-o.y,width:r.width,height:r.height}}function order(e){var t=new Map,A=new Set,i=[];function n(e){A.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!A.has(e)){var i=t.get(e);i&&n(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){A.has(e.name)||n(e)})),i}function orderModifiers(e){var t=order(e);return modifierPhases.reduce((function(e,A){return e.concat(t.filter((function(e){return e.phase===A})))}),[])}function debounce(e){var t;return function(){return t||(t=new Promise((function(A){Promise.resolve().then((function(){t=void 0,A(e())}))}))),t}}function mergeByName(e){var t=e.reduce((function(e,t){var A=e[t.name];return e[t.name]=A?Object.assign({},A,t,{options:Object.assign({},A.options,t.options),data:Object.assign({},A.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}var DEFAULT_OPTIONS={placement:"bottom",modifiers:[],strategy:"absolute"};function areValidElements(){for(var e=arguments.length,t=new Array(e),A=0;A(this.setSelectedItem(this.selectedItem-1,!0),!1))),A.register([],"ArrowDown",(()=>(this.setSelectedItem(this.selectedItem+1,!0),!1))),A.register([],"Enter",(e=>(this.useSelectedItem(e),!1))),A.register([],"Tab",(e=>(this.chooseSuggestion(e),!1)))}chooseSuggestion(e){if(!this.items||!this.items.length)return;const t=this.items[this.selectedItem];t&&this.owner.onChooseSuggestion(t,e)}onSuggestionClick(e,t){if(e.preventDefault(),!this.suggestions||!this.suggestions.length)return;const A=this.suggestions.indexOf(t);this.setSelectedItem(A,!1),this.useSelectedItem(e)}onSuggestionMouseover(e,t){if(!this.suggestions||!this.suggestions.length)return;const A=this.suggestions.indexOf(t);this.setSelectedItem(A,!1)}empty(){this.containerEl.empty()}setSuggestions(e){this.containerEl.empty();const t=[];e.forEach((e=>{const A=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(e,A),t.push(A)})),this.items=e,this.suggestions=t,this.setSelectedItem(0,!1)}useSelectedItem(e){if(!this.items||!this.items.length)return;const t=this.items[this.selectedItem];t&&this.owner.selectSuggestion(t,e)}wrap(e,t){return(e%t+t)%t}setSelectedItem(e,t){const A=this.wrap(e,this.suggestions.length),i=this.suggestions[this.selectedItem],n=this.suggestions[A];i&&i.removeClass("is-selected"),n&&n.addClass("is-selected"),this.selectedItem=A,t&&n.scrollIntoView(!1)}}class SuggestionModal extends obsidian_module.FuzzySuggestModal{constructor(e,t,A){super(e),this.items=[],this.scope=new obsidian_module.Scope(this.app.scope),this.emptyStateText="No match found",this.limit=100,this.inputEl=t,this.items=A,this.suggestEl=createDiv("suggestion-container"),this.contentEl=this.suggestEl.createDiv("suggestion"),this.suggester=new Suggester(this,this.contentEl,this.scope),this.scope.register([],"Escape",this.onEscape.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onFocus.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",(e=>{e.preventDefault()}))}empty(){this.suggester.empty()}onInputChanged(){if(this.shouldNotOpen)return;const e=this.modifyInput(this.inputEl.value),t=this.getSuggestions(e);t.length>0?this.suggester.setSuggestions(t.slice(0,this.limit)):this.onNoSuggestion(),this.open()}onFocus(){this.shouldNotOpen=!1,this.onInputChanged()}modifyInput(e){return e}onNoSuggestion(){this.empty(),this.renderSuggestion(null,this.contentEl.createDiv("suggestion-item"))}open(){this.app.keymap.pushScope(this.scope),document.body.appendChild(this.suggestEl),this.popper=createPopper(this.inputEl,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,10]}},{name:"flip",options:{fallbackPlacements:["top"]}}]})}onEscape(){this.close(),this.shouldNotOpen=!0}close(){this.app.keymap.popScope(this.scope),this.suggester.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}createPrompt(e){this.promptEl||(this.promptEl=this.suggestEl.createDiv("prompt-instructions"));const t=this.promptEl.createDiv("prompt-instruction");for(const A of e)t.appendChild(A)}}class FileSuggestionModal extends SuggestionModal{constructor(e,t,A){super(e,t.inputEl,A),this.limit=20,this.files=[...A],this.text=t,this.inputEl.addEventListener("input",(()=>this.getFile()))}getFile(){const e=this.inputEl.value,t=this.app.vault.getAbstractFileByPath(e);t!==this.file&&t instanceof obsidian_module.TFile&&(this.file=t,this.onInputChanged())}getSelectedItem(){return this.file}getItemText(e){return e.path}onChooseItem(e){this.file=e,this.text.setValue(e.path),this.text.onChanged()}selectSuggestion({item:e}){this.file=e,this.text.setValue(e.path),this.onClose(),this.text.onChanged(),this.close()}renderSuggestion(e,t){const{item:A,match:i}=e||{},n=t.createDiv({cls:"suggestion-content"});if(!A)return n.setText(this.emptyStateText),void n.parentElement.addClass("is-selected");const a=A.path.length-A.name.length,r=i.matches.map((e=>createSpan("suggestion-highlight")));for(let e=a;et[0]===e));if(t){const a=r[i.matches.indexOf(t)];n.appendChild(a),a.appendText(A.path.substring(t[0],t[1])),e+=t[1]-t[0]-1}else n.appendText(A.path[e])}t.createDiv({cls:"suggestion-note",text:A.path})}getItems(){return this.files}}const getEA=e=>{try{return window.ExcalidrawAutomate.getAPI(e)}catch(e){return console.log({message:"Excalidraw not available",fn:getEA}),null}};class InsertPDFModal extends obsidian_module.Modal{constructor(e,t){super(app),this.plugin=e,this.view=t,this.borderBox=!0,this.gapSize=20,this.numColumns=1,this.lockAfterImport=!0,this.pagesToImport=[],this.pageDimensions={width:0,height:0},this.importScale=.3,this.dirty=!1,this.setImageSizeMessage=()=>this.imageSizeMessage.innerText=`${Math.round(this.pageDimensions.width*this.importScale)} x ${Math.round(this.pageDimensions.height*this.importScale)}`}open(e){e&&"pdf"===e.extension.toLowerCase()&&(this.pdfFile=e),super.open()}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Import PDF"),this.createForm()}async onClose(){this.dirty&&(this.plugin.settings.pdfImportScale=this.importScale,this.plugin.settings.pdfBorderBox=this.borderBox,this.plugin.settings.pdfGapSize=this.gapSize,this.plugin.settings.pdfNumColumns=this.numColumns,this.plugin.settings.pdfLockAfterImport=this.lockAfterImport,this.plugin.saveSettings()),this.pdfDoc&&(this.pdfDoc.destroy(),this.pdfDoc=null)}async getPageDimensions(e){try{const t=this.plugin.settings.pdfScale,A=createEl("canvas"),i=(await e.getPage(1)).getViewport({scale:t});this.pageDimensions.height=i.height,this.pageDimensions.width=i.width,A.width=0,A.height=0,this.setImageSizeMessage()}catch(e){console.log(e)}}createPageListFromString(e){const t=e=>e.replace(/\D/g,"");return this.pagesToImport=[],e.split(",").forEach((e=>{const A=e.split("-");if(1===A.length){const e=parseInt(t(A[0]));!isNaN(e)&&this.pagesToImport.push(e)}else if(2===A.length){const e=parseInt(t(A[0])),i=parseInt(t(A[1]));if(isNaN(e)||isNaN(i))return;for(let t=e;t<=i;t++)this.pagesToImport.push(t)}})),this.pagesToImport}async createForm(){await this.plugin.loadSettings(),this.borderBox=this.plugin.settings.pdfBorderBox,this.gapSize=this.plugin.settings.pdfGapSize,this.numColumns=this.plugin.settings.pdfNumColumns,this.lockAfterImport=this.plugin.settings.pdfLockAfterImport,this.importScale=this.plugin.settings.pdfImportScale;const e=this.contentEl;let t,A,i,n;const a=()=>this.pdfDoc?0===this.pagesToImport.length?(i.buttonEl.style.display="none",void(n.innerText="Please select pages to import")):Math.max(...this.pagesToImport)<=this.pdfDoc.numPages?(i.buttonEl.style.display="block",void(n.innerText="")):(i.buttonEl.style.display="none",void(n.innerText=`The selected document has ${this.pdfDoc.numPages} pages. Please select pages between 1 and ${this.pdfDoc.numPages}`)):(n.innerText="Please select a PDF file",void(i.buttonEl.style.display="none")),r=()=>{0!==A?t.innerHTML=`There are ${A} pages in the selected document.`:t.innerText="Please select a PDF file"},s=async e=>{this.pdfDoc&&await this.pdfDoc.destroy(),this.pdfDoc=null,e&&(this.pdfDoc=await getPDFDoc(e),this.pdfFile=e,this.pdfDoc?(A=this.pdfDoc.numPages,a(),r(),this.getPageDimensions(this.pdfDoc)):i.setDisabled(!0))},o=new obsidian_module.TextComponent(e);o.inputEl.style.width="100%";const l=new FileSuggestionModal(this.app,o,app.vault.getFiles().filter((e=>"pdf"===e.extension.toLowerCase())));let c,d,h,u;o.onChange((async()=>{const e=l.getSelectedItem();await s(e)})),t=e.createEl("p",{text:""}),r(),new obsidian_module.Setting(e).setName("Pages to import").addText((e=>{d=e,e.setPlaceholder("e.g.: 1,3-5,7,9-10").onChange((e=>{const t=this.createPageListFromString(e);t.length>15?c.innerHTML=`You are importing ${t.length} pages. ⚠️ This may take a while. ⚠️`:c.innerHTML=`You are importing ${t.length} pages.`,a()})),e.inputEl.style.width="100%"})),c=e.createEl("p",{text:""}),new obsidian_module.Setting(e).setName("Add border box").addToggle((e=>e.setValue(this.borderBox).onChange((e=>{this.borderBox=e,this.dirty=!0})))),new obsidian_module.Setting(e).setName("Lock pages on canvas after import").addToggle((e=>e.setValue(this.lockAfterImport).onChange((e=>{this.lockAfterImport=e,this.dirty=!0})))),new obsidian_module.Setting(e).setName("Number of columns").addSlider((e=>e.setLimits(1,100,1).setValue(this.numColumns).onChange((e=>{this.numColumns=e,h.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{h=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.numColumns.toString()}`})),new obsidian_module.Setting(e).setName("Size of gap between pages").addSlider((e=>e.setLimits(10,200,10).setValue(this.gapSize).onChange((e=>{this.gapSize=e,u.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{u=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.gapSize.toString()}`}));const g=new obsidian_module.Setting(e).setName("Imported page size").setDesc(`${this.pageDimensions.width*this.importScale} x ${this.pageDimensions.height*this.importScale}`).addSlider((e=>e.setLimits(.1,1.5,.1).setValue(this.importScale).onChange((e=>{this.importScale=e,this.dirty=!0,this.setImageSizeMessage()}))));this.imageSizeMessage=g.descEl;const p=new obsidian_module.Setting(e).setDesc("Select a document first").addButton((e=>{e.setButtonText("Import PDF").setCta().onClick((async()=>{const e=getEA(this.view);let t=0,A=0;const i=Math.round(this.pageDimensions.width*this.importScale),a=Math.round(this.pageDimensions.height*this.importScale);for(let r=0;re.id)),o=e.getViewElements().filter((e=>s.includes(e.id)));r.selectElements(o),r.zoomToFit(o),this.close()})),i=e,i.buttonEl.style.display="none"}));n=p.descEl,n.addClass("mod-warning"),this.pdfFile?(o.setValue(this.pdfFile.path),await s(this.pdfFile),l.close(),d.inputEl.focus()):o.inputEl.focus(),a()}}class ExportDialog extends obsidian_module.Modal{constructor(e,t,A){super(app),this.plugin=e,this.view=t,this.file=A,this.dirty=!1,this.hasSelectedElements=!1,this.ea=getEA(this.view),this.api=this.ea.getExcalidrawAPI(),this.padding=getExportPadding(this.plugin,this.file),this.scale=getPNGScale(this.plugin,this.file),this.theme=getExportTheme(this.plugin,this.file,this.api.getAppState().theme),this.boundingBox=this.ea.getBoundingBox(this.ea.getViewElements()),this.embedScene=!1,this.exportSelectedOnly=!1,this.saveToVault=!0,this.transparent=!getWithBackground(this.plugin,this.file),this.saveSettings=!1}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Export Image"),this.hasSelectedElements=this.view.getViewSelectedElements().length>0,this.selectedOnlySetting.setVisibility(this.hasSelectedElements)}async onClose(){this.dirty=this.saveSettings}async createForm(){let e,t;this.contentEl.createEl("h1",{text:"Image settings"}),this.contentEl.createEl("p",{text:"Transparency only affects PNGs. Excalidraw files can only be exported outside the Vault. PNGs copied to clipboard may not include the scene."});const A=()=>{const e=Math.round(this.scale*this.boundingBox.width+2*this.padding),t=Math.round(this.scale*this.boundingBox.height+2*this.padding);return fragWithHTML(`The lager the scale, the larger the image.
Scale: ${this.scale}
Image size: ${e}x${t}`)},i=()=>fragWithHTML(`Current image padding is ${this.padding}`);t=new obsidian_module.Setting(this.contentEl).setName("Image padding").setDesc(i()).addSlider((n=>{n.setLimits(0,50,1).setValue(this.padding).onChange((n=>{this.padding=n,e.setDesc(A()),t.setDesc(i())}))})),e=new obsidian_module.Setting(this.contentEl).setName("PNG Scale").setDesc(A()).addSlider((t=>t.setLimits(.5,5,.5).setValue(this.scale).onChange((t=>{this.scale=t,e.setDesc(A())})))),new obsidian_module.Setting(this.contentEl).setName("Export theme").addDropdown((e=>e.addOption("light","Light").addOption("dark","Dark").setValue(this.theme).onChange((e=>{this.theme=e})))),new obsidian_module.Setting(this.contentEl).setName("Background color").addDropdown((e=>e.addOption("transparent","Transparent").addOption("with-color","Use scene background color").setValue(this.transparent?"transparent":"with-color").onChange((e=>{this.transparent="transparent"===e})))),new obsidian_module.Setting(this.contentEl).setName("Save or one-time settings?").addDropdown((e=>e.addOption("save","Save these settings as the preset for this image").addOption("one-time","These are one-time settings").setValue(this.saveSettings?"save":"one-time").onChange((e=>{this.saveSettings="save"===e})))),this.contentEl.createEl("h1",{text:"Export settings"}),new obsidian_module.Setting(this.contentEl).setName("Embed the Excalidraw scene in the exported file?").addDropdown((e=>e.addOption("embed","Embed scene").addOption("no-embed","Do not embed scene").setValue(this.embedScene?"embed":"no-embed").onChange((e=>{this.embedScene="embed"===e})))),DEVICE.isDesktop&&new obsidian_module.Setting(this.contentEl).setName("Where to save the image?").addDropdown((e=>e.addOption("vault","Save image to your Vault").addOption("outside","Export image outside your Vault").setValue(this.saveToVault?"vault":"outside").onChange((e=>{this.saveToVault="vault"===e})))),this.selectedOnlySetting=new obsidian_module.Setting(this.contentEl).setName("Export entire scene or just selected elements?").addDropdown((e=>e.addOption("all","Export entire scene").addOption("selected","Export selected elements").setValue(this.exportSelectedOnly?"selected":"all").onChange((e=>{this.exportSelectedOnly="selected"===e}))));const n=this.contentEl.createDiv({cls:"excalidraw-prompt-buttons-div"});n.createEl("button",{text:"PNG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.savePNG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportPNG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},n.createEl("button",{text:"SVG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.saveSVG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportSVG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},n.createEl("button",{text:"Excalidraw",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportExcalidraw(this.hasSelectedElements&&this.exportSelectedOnly),this.close()},DEVICE.isDesktop&&(n.createEl("button",{text:"PNG to Clipboard",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportPNGToClipboard(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()})}}const TOOLS_PANEL_WIDTH=228;class ToolsPanel extends React__namespace.Component{constructor(e){super(e),this.pos1=0,this.pos2=0,this.pos3=0,this.pos4=0,this.penDownX=0,this.penDownY=0,this.previousWidth=0,this.previousHeight=0,this.onRightEdge=!1,this.onBottomEdge=!1;const t=e.view.plugin.getPackage(e.view.ownerWindow).react;this.containerRef=t.createRef(),this.state={visible:e.visible,top:50,left:200,theme:"dark",excalidrawViewMode:!1,minimized:!1,isDirty:!1,isFullscreen:!1,isPreviewMode:!0,scriptIconMap:{}}}updateScriptIconMap(e){this.setState((()=>({scriptIconMap:e})))}setPreviewMode(e){this.setState((()=>({isPreviewMode:e})))}setFullscreen(e){this.setState((()=>({isFullscreen:e})))}setDirty(e){this.setState((()=>({isDirty:e})))}setExcalidrawViewMode(e){this.setState((()=>({excalidrawViewMode:e})))}toggleVisibility(e){this.setTopCenter(e),this.setState((e=>({visible:!e.visible})))}setTheme(e){this.setState((t=>({theme:e})))}setTopCenter(e){this.setState((()=>({left:(this.containerRef.current.clientWidth-228-(e?0:232))/2+this.containerRef.current.parentElement.offsetLeft+(e?0:232),top:64+this.containerRef.current.parentElement.offsetTop})))}updatePosition(e=0,t=0){this.setState((()=>{const{offsetTop:A,offsetLeft:i,clientWidth:n,clientHeight:a}=this.containerRef.current.firstElementChild,r=A-e,s=i-t,{clientWidth:o,clientHeight:l,offsetTop:c,offsetLeft:d}=this.containerRef.current.parentElement;return this.previousHeight=l,this.previousWidth=o,this.onBottomEdge=r>=l-a+c,this.onRightEdge=s>=o-n+d,{top:r{e.preventDefault(),Math.abs(this.penDownX-this.pos3)>5||Math.abs(this.penDownY-this.pos4)>5||this.setState((e=>({minimized:!e.minimized})))},onPointerDown:e=>{const t=e=>{e.preventDefault(),this.pos1=this.pos3-e.clientX,this.pos2=this.pos4-e.clientY,this.pos3=e.clientX,this.pos4=e.clientY,this.updatePosition(this.pos2,this.pos1)},A=()=>{var e,i;null===(e=this.props.view.ownerDocument)||void 0===e||e.removeEventListener("pointerup",A),null===(i=this.props.view.ownerDocument)||void 0===i||i.removeEventListener("pointermove",t)};e.preventDefault(),this.penDownX=this.pos3=e.clientX,this.penDownY=this.pos4=e.clientY,this.props.view.ownerDocument.addEventListener("pointerup",A),this.props.view.ownerDocument.addEventListener("pointermove",t)}},React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 228 26"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M40,7 h148 M40,13 h148 M40,19 h148"}))),React__namespace.createElement("div",{className:"Island App-menu__left scrollbar",style:{maxHeight:"350px",width:"initial","--padding":2,display:this.state.minimized?"none":"block"}},React__namespace.createElement("div",{className:"panelColumn"},React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Utility actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"scriptEngine",title:t$d("INSTALL_SCRIPT_BUTTON"),action:()=>{new ScriptInstallPrompt(this.props.view.plugin).open()},icon:ICONS.scriptEngine,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"release-notes",title:t$d("READ_RELEASE_NOTES"),action:()=>{new ReleaseNotes(this.props.view.app,this.props.view.plugin,PLUGIN_VERSION).open()},icon:ICONS.releaseNotes,view:this.props.view}),null===this.state.isPreviewMode?React__namespace.createElement(ActionButton,{key:"convert",title:t$d("CONVERT_FILE"),action:()=>{this.props.view.convertExcalidrawToMD()},icon:ICONS.convertFile,view:this.props.view}):React__namespace.createElement(ActionButton,{key:"viewmode",title:this.state.isPreviewMode?t$d("PARSED"):t$d("RAW"),action:()=>{this.state.isPreviewMode?this.props.view.changeTextMode(TextMode.raw):this.props.view.changeTextMode(TextMode.parsed)},icon:this.state.isPreviewMode?ICONS.rawMode:ICONS.parsedMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"tray-mode",title:t$d("TRAY_MODE"),action:()=>{this.props.view.toggleTrayMode()},icon:ICONS.trayMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"fullscreen",title:this.state.isFullscreen?t$d("EXIT_FULLSCREEN"):t$d("GOTO_FULLSCREEN"),action:()=>{this.state.isFullscreen?this.props.view.exitFullscreen():this.props.view.gotoFullscreen()},icon:this.state.isFullscreen?ICONS.exitFullScreen:ICONS.gotoFullScreen,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"search",title:t$d("SEARCH"),action:()=>{search(this.props.view)},icon:ICONS.search,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"ocr",title:t$d("RUN_OCR"),action:e=>{this.props.view.plugin.settings.taskboneEnabled?this.props.view.plugin.taskbone.getTextForView(this.props.view,isCTRL(e)):new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3)},icon:ICONS.ocr,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLink",title:t$d("OPEN_LINK_CLICK"),action:e=>{const t=new MouseEvent("click",{ctrlKey:e.ctrlKey||!(DEVICE.isIOS||DEVICE.isMacOS),metaKey:e.metaKey||DEVICE.isIOS||DEVICE.isMacOS,shiftKey:e.shiftKey,altKey:e.altKey});this.props.view.handleLinkClick(t)},icon:ICONS.openLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLinkProperties",title:t$d("OPEN_LINK_PROPS"),action:()=>{const e=new MouseEvent("click",{ctrlKey:!0,metaKey:!0,shiftKey:!1,altKey:!1});this.props.view.handleLinkClick(e)},icon:ICONS.openLinkProperties,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"save",title:t$d("FORCE_SAVE"),action:()=>{this.props.view.forceSave()},icon:saveIcon(this.state.isDirty),view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Export actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"lib",title:t$d("DOWNLOAD_LIBRARY"),action:()=>{this.props.view.plugin.exportLibrary()},icon:ICONS.exportLibrary,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"exportIMG",title:t$d("EXPORT_IMAGE"),action:()=>{const e=this.props.view;e.exportDialog||(e.exportDialog=new ExportDialog(e.plugin,e,e.file),e.exportDialog.createForm()),e.exportDialog.open()},icon:ICONS.ExportImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"md",title:t$d("OPEN_AS_MD"),action:()=>{this.props.view.openAsMarkdown()},icon:ICONS.switchToMarkdown,view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Insert actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"image",title:t$d("INSERT_IMAGE"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertImageDialog.start(this.props.view)},icon:ICONS.insertImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"pdf",title:t$d("INSERT_PDF"),action:()=>{this.props.centerPointer(),new InsertPDFModal(this.props.view.plugin,this.props.view).open()},icon:ICONS.insertPDF,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"insertMD",title:t$d("INSERT_MD"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertMDDialog.start(this.props.view)},icon:ICONS.insertMD,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"latex",title:t$d("INSERT_LATEX"),action:e=>{isALT(e)?this.props.view.openExternalLink("https://youtu.be/r08wk-58DPk"):(this.props.centerPointer(),insertLaTeXToView(this.props.view))},icon:ICONS.insertLaTeX,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link",title:t$d("INSERT_LINK"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertLinkDialog.start(this.props.view.file.path,this.props.view.addText)},icon:ICONS.insertLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link-to-element",title:t$d("INSERT_LINK_TO_ELEMENT"),action:e=>{isALT(e)?this.props.view.openExternalLink("https://youtu.be/yZQoJg2RCKI"):this.props.view.copyLinkToSelectedElementToClipboard(isCTRL(e)?"group=":isSHIFT(e)?"area=":"")},icon:ICONS.copyElementLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"import-svg",title:t$d("IMPORT_SVG"),action:e=>{this.props.view.plugin.importSVGDialog.start(this.props.view)},icon:ICONS.importSVG,view:this.props.view}))),this.renderScriptButtons(!1),this.renderScriptButtons(!0)))))}renderScriptButtons(e){if(0===Object.keys(this.state.scriptIconMap).length)return"";const t=`${this.props.view.plugin.settings.scriptFolderPath}/Downloaded/`,A=A=>e?A.startsWith(t):!A.startsWith(t);if(0===Object.keys(this.state.scriptIconMap).filter((e=>A(e))).length)return"";const i=new Set;Object.keys(this.state.scriptIconMap).filter((e=>A(e))).forEach((e=>i.add(this.state.scriptIconMap[e].group)));const n=Array.from(i).sort(((e,t)=>e>t?1:-1));return n.push(n.shift()),React__namespace.createElement(React__namespace.Fragment,null,n.map((t=>React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,e?t:""===t?"User":"User/"+t),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},Object.entries(this.state.scriptIconMap).filter((([e,A])=>A.group===t)).sort().map((([e,t])=>React__namespace.createElement(ActionButton,{key:e,title:t.name,action:async()=>{const t=this.props.view,A=t.plugin,i=app.vault.getAbstractFileByPath(e);i&&i instanceof obsidian_module.TFile&&A.scriptEngine.executeScript(t,await app.vault.read(i),A.scriptEngine.getScriptName(i),i)},longpress:async()=>{const A=this.props.view,i=A.excalidrawAPI,n=A.plugin;await n.loadSettings();const a=n.settings.pinnedScripts.indexOf(e);a>-1?(n.settings.pinnedScripts.splice(a,1),null==i||i.setToast({message:`Pin removed: ${t.name}`,duration:3e3,closable:!0})):(n.settings.pinnedScripts.push(e),null==i||i.setToast({message:`Pinned: ${t.name}`,duration:3e3,closable:!0})),await n.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))},icon:t.svgString?stringToSVG(t.svgString):ICONS.cog,view:this.props.view}))))))))}}const getElementsAtPointer=(e,t,A)=>t.filter((t=>{if(A&&t.type!==A)return!1;if(t.locked)return!1;const[i,n,a,r]=rotatedDimensions(t);return i<=e.x&&i+a>=e.x&&n<=e.y&&n+r>=e.y})),getTextElementAtPointer=(e,t)=>{const A=t.excalidrawAPI;if(!A)return{id:null,text:null};const i=getElementsAtPointer(e,A.getSceneElements(),"text");if(0==i.length)return{id:null,text:null};if(1===i.length)return{id:i[0].id,text:i[0].text};const n=i.filter((e=>{const A=t.textMode===TextMode.parsed?t.excalidrawData.getRawText(e.id):e.text;return!!A&&(!!A.match(REG_LINKINDEX_HYPERLINK)||!!REGEX_LINK.getRes(A).next().value)}));return 0==n.length?{id:i[0].id,text:i[0].text}:{id:n[0].id,text:n[0].text}},getImageElementAtPointer=(e,t)=>{const A=t.excalidrawAPI;if(!A)return;const i=getElementsAtPointer(e,A.getSceneElements(),"image");return 0===i.length?{id:null,fileId:null}:i.length>=1?{id:i[0].id,fileId:i[0].fileId}:void 0},getElementWithLinkAtPointer=(e,t)=>{const A=t.excalidrawAPI;if(!A)return;const i=getElementsAtPointer(e,A.getSceneElements()).filter((e=>e.link));return 0===i.length?{id:null,text:null}:i.length>=1?{id:i[0].id,text:i[0].link}:void 0},setDynamicStyle=(e,t,A,i)=>{var n,a,r,s,o,l,c,d,h,u,g,p,m,w;if("none"===i){null===(n=t.excalidrawContainer)||void 0===n||n.removeAttribute("style"),setTimeout((()=>t.updateScene({appState:{dynamicStyle:""}})));const e=null===(s=null===(r=null===(a=t.toolsPanelRef)||void 0===a?void 0:a.current)||void 0===r?void 0:r.containerRef)||void 0===s?void 0:s.current;if(e){let t=e.getAttribute("style");t=t.replace(/\-\-color\-primary.*/,""),e.setAttribute("style",t)}return}t.ownerDocument;const f="light"===(null===(c=null===(l=null===(o=null==t?void 0:t.excalidrawAPI)||void 0===o?void 0:o.getAppState)||void 0===l?void 0:l.call(o))||void 0===c?void 0:c.theme)||"light"===(null===(u=null===(h=null===(d=null==t?void 0:t.excalidrawData)||void 0===d?void 0:d.scene)||void 0===h?void 0:h.appState)||void 0===u?void 0:u.theme),B=()=>f?e.getCM(A):(t=>{const A=e.getCM(t),i=A.lightness;return A.lightnessTo(Math.abs(i-100))})(A),E=B().lightness,b=B().isDark(),v=app.getAccentColor(),C=()=>e.getCM(v),y=()=>e.getCM("#000000").lightnessTo(E),F="gray"===i,x=F?b?y().lighterBy(15):y().darkerBy(15):b?B().lighterBy(15).mix({color:y(),ratio:.6}):B().darkerBy(15).mix({color:y(),ratio:.6}),S=F?b?y().lighterBy(5):y().darkerBy(5):b?B().lighterBy(5).mix({color:y(),ratio:.6}):B().darkerBy(5).mix({color:y(),ratio:.6}),T=B().mix({color:b?"#fbfbfb":"#202020",ratio:.8}),I=e=>e.stringHEX({alpha:!1}),U=`--color-primary: ${I(C())};--color-primary-darker: ${I(C().darkerBy(10))};--color-primary-darkest: ${I(C().darkerBy(10))};--button-gray-1: ${I(x)};--button-gray-2: ${I(S)};--input-border-color: ${I(x)};--input-bg-color: ${I(S)};--input-label-color: ${I(T)};--island-bg-color: ${S.alphaTo(.93).stringHEX()};--popup-secondary-bg-color: ${S.alphaTo(.93).stringHEX()};--icon-fill-color: ${I(T)};--text-primary-color: ${I(T)};--overlay-bg-color: ${S.alphaTo(.6).stringHEX()};--popup-bg-color: ${I(x)};--color-gray-100: ${I(T)};--color-gray-40: ${I(T)};--color-gray-30: ${I(x)};--color-gray-80: ${I(x)};--sidebar-border-color: ${I(x)};--color-primary-light: ${I(C().lighterBy(10))};--button-hover-bg: ${I(x)};--sidebar-bg-color: ${S.alphaTo(.93).stringHEX()};--sidebar-shadow: ${I(x)};--popup-text-color: ${I(T)};--code-normal: ${I(T)};--code-background: ${I(S)};--h1-color: ${I(T)};--h2-color: ${I(T)};--h3-color: ${I(T)};--h4-color: ${I(T)};color: ${I(T)};--select-highlight-color: ${I(x)};`;null===(g=t.excalidrawContainer)||void 0===g||g.setAttribute("style",U),setTimeout((()=>t.updateScene({appState:{dynamicStyle:U}})));const Q=null===(w=null===(m=null===(p=t.toolsPanelRef)||void 0===p?void 0:p.current)||void 0===m?void 0:m.containerRef)||void 0===w?void 0:w.current;if(Q){let e=Q.getAttribute("style");e=e.replace(/\-\-color\-primary.*/,""),Q.setAttribute("style",e+U)}};class MenuLinks{constructor(e,t){this.render=(e,t)=>React__namespace.createElement("div",null,"Hello"),this.plugin=e,this.ref=t}}var TextMode;!function(e){e.parsed="parsed",e.raw="raw"}(TextMode||(TextMode={}));const HIDE="excalidraw-hidden",SHOW="excalidraw-visible",addFiles=async(e,t,A)=>{if(!e||0===e.length||!t)return;const i=t.excalidrawAPI;if(!i)return;if(e=e.filter((e=>e&&e.size&&e.size.height>0&&e.size.width>0)),0===e.length)return;const n=scaleLoadedImage(t.getScene(),e);void 0===A&&(A=n.scene.appState.theme),n.dirty&&t.updateScene({elements:n.scene.elements,appState:n.scene.appState,commitToHistory:!1});for(const i of e)if(t.excalidrawData.hasFile(i.id)&&t.excalidrawData.getFile(i.id).setImage(i.dataURL,i.mimeType,i.size,A,i.hasSVGwithBitmap),t.excalidrawData.hasEquation(i.id)){const e=t.excalidrawData.getEquation(i.id).latex;t.excalidrawData.setEquation(i.id,{latex:e,isLoaded:!0})}i.addFiles(e)},warningUnknowSeriousError=()=>{new obsidian_module.Notice("WARNING: Excalidraw ran into an unknown problem!\n\nThere is a risk that your most recent changes cannot be saved.\n\nTo be on the safe side...\n1) Please select your drawing using CTRL/CMD+A and make a copy with CTRL/CMD+C.\n2) Then create an empty drawing in a new pane by CTRL/CMD+clicking the Excalidraw ribbon button,\n3) and paste your work to the new document with CTRL/CMD+V.",6e4)};class ExcalidrawView extends obsidian_module.TextFileView{constructor(e,t){super(e),this.getScene=null,this.addElements=null,this.getSelectedTextElement=null,this.getSelectedImageElement=null,this.getSelectedElementWithLink=null,this.addText=null,this.refresh=null,this.excalidrawRef=null,this.excalidrawAPI=null,this.excalidrawWrapperRef=null,this.toolsPanelRef=null,this.linksAlwaysOpenInANewPane=!1,this.lastSaveTimestamp=0,this.modifierKeyDown={shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this.currentPosition={x:0,y:0},this.semaphores={popoutUnload:!1,viewunload:!1,scriptsReady:!1,justLoaded:!1,preventAutozoom:!1,autosaving:!1,dirty:null,preventReload:!1,isEditingText:!1,saving:!1,forceSaving:!1,hoverSleep:!1,wheelTimeout:null},this.autosaveTimer=null,this.textMode=TextMode.raw,this.compatibilityMode=!1,this.isEditingTextResetTimer=null,this.id=this.leaf.id,this.getHookServer=()=>{var e;return null!==(e=this.hookServer)&&void 0!==e?e:this.plugin.ea},this.preventReloadResetTimer=null,this.hiddenMobileLeaves=[],this.offsetLeft=0,this.offsetTop=0,this.blockTextModeChange=!1,this.isLoaded=!1,this.activeLoader=null,this.nextLoader=null,this.initialContainerSizeUpdate=!1,this.previousSceneVersion=0,this.previousBackgroundColor="",this.previousTheme="",this.colorChangeTimer=null,this.plugin=t,this.excalidrawData=new ExcalidrawData(t),this.hookServer=t.ea}setHookServer(e){this.hookServer=e||this.plugin.ea}preventAutozoom(){this.semaphores.preventAutozoom=!0,setTimeout((()=>this.semaphores.preventAutozoom=!1),1500)}saveExcalidraw(e){if(!e){if(!this.getScene)return!1;e=this.getScene()}const t=`${this.file.path.substring(0,this.file.path.lastIndexOf(".md"))}.excalidraw`,A=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t));A&&A instanceof obsidian_module.TFile?app.vault.modify(A,JSON.stringify(e,null,"\t")):app.vault.create(t,JSON.stringify(e,null,"\t"))}async exportExcalidraw(e){this.getScene&&this.file&&(app.isMobile?new Prompt(app,"Please provide filename",this.file.basename,"filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidraw`;const t=splitFolderAndFilename(this.file.path).folderpath;await checkAndCreateFolder(t);const A=getNewUniqueFilepath(app.vault,e,t);app.vault.create(A,JSON.stringify(this.getScene(),null,"\t")),new obsidian_module.Notice(`Exported to ${A}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.getScene(e),null,"\t")),`${this.file.basename}.excalidraw`))}async svg(e,t,A){const i=this.exportDialog,n={withBackground:i?!i.transparent:getWithBackground(this.plugin,this.file),withTheme:!0};return await getSVG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=t?t:i?i.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===A?!!i&&i.embedScene:A})}),n,i?i.padding:getExportPadding(this.plugin,this.file))}async saveSVG(e,t){if(!e){if(!this.getScene)return!1;e=this.getScene()}const A=async(A,i)=>{const n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A)),a=await this.svg(e,i,t);if(!a)return;const r=(new XMLSerializer).serializeToString(embedFontsInSVG(a,this.plugin));n&&n instanceof obsidian_module.TFile?await app.vault.modify(n,r):await app.vault.create(A,r)};this.plugin.settings.autoExportLightAndDark?(await A(getIMGFilename(this.file.path,"dark.svg"),"dark"),await A(getIMGFilename(this.file.path,"light.svg"),"light")):await A(getIMGFilename(this.file.path,"svg"))}async exportSVG(e,t){if(!this.getScene||!this.file)return;let A=await this.svg(this.getScene(t),void 0,e);A&&(A=embedFontsInSVG(A,this.plugin),download(null,svgToBase64(A.outerHTML),`${this.file.basename}.svg`))}async png(e,t,A){const i=this.exportDialog,n={withBackground:i?!i.transparent:getWithBackground(this.plugin,this.file),withTheme:!0};return await getPNG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=t?t:i?i.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===A?!!i&&i.embedScene:A})}),n,i?i.padding:getExportPadding(this.plugin,this.file),i?i.scale:getPNGScale(this.plugin,this.file))}async savePNG(e,t){if(!e){if(!this.getScene)return!1;e=this.getScene()}const A=async(A,i)=>{const n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A)),a=await this.png(e,i,t);a&&(n&&n instanceof obsidian_module.TFile?await app.vault.modifyBinary(n,await a.arrayBuffer()):await app.vault.createBinary(A,await a.arrayBuffer()))};this.plugin.settings.autoExportLightAndDark?(await A(getIMGFilename(this.file.path,"dark.png"),"dark"),await A(getIMGFilename(this.file.path,"light.png"),"light")):await A(getIMGFilename(this.file.path,"png"))}async exportPNGToClipboard(e,t){if(!this.getScene||!this.file)return;const A=await this.png(this.getScene(t),void 0,e);A&&await navigator.clipboard.write([new window.ClipboardItem({"image/png":A})])}async exportPNG(e,t){if(!this.getScene||!this.file)return;const A=await this.png(this.getScene(t),void 0,e);if(!A)return;const i=new FileReader;i.readAsDataURL(A);const n=this;i.onloadend=function(){const e=i.result;download(null,e,`${n.file.basename}.png`)}}async save(e=!0,t=!1){if(!this.isLoaded)return;if(this.semaphores.saving)return;this.semaphores.saving=!0;let A=!1;if(this.getScene&&this.excalidrawAPI&&this.isLoaded&&this.file&&app.vault.getAbstractFileByPath(this.file.path)){try{const i=Boolean(null!==this.semaphores.dirty&&this.semaphores.dirty||this.semaphores.autosaving||t),n=this.getScene();if(this.compatibilityMode?await this.excalidrawData.syncElements(n):await this.excalidrawData.syncElements(n,this.excalidrawAPI.getAppState().selectedElementIds)&&!this.semaphores.popoutUnload&&await this.loadDrawing(!1,this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted))),i&&(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=e,await super.save(),A=this.lastSaveTimestamp===this.file.stat.mtime&&!e&&t,this.lastSaveTimestamp=this.file.stat.mtime,this.clearDirty(),e)){const e=this;this.preventReloadResetTimer=setTimeout((()=>e.semaphores.preventReload=!1),2e3)}if(!A&&!this.semaphores.autosaving&&!this.semaphores.viewunload){const e=this.excalidrawData.autoexportPreference;(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportSVG||e===AutoexportPreference.both||e===AutoexportPreference.svg)&&this.saveSVG(),(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportPNG||e===AutoexportPreference.both||e===AutoexportPreference.png)&&this.savePNG(),!this.compatibilityMode&&this.plugin.settings.autoexportExcalidraw&&this.saveExcalidraw()}}catch(e){errorlog({where:"ExcalidrawView.save",fn:this.save,error:e}),warningUnknowSeriousError()}this.semaphores.saving=!1,A&&this.reload(!0,this.file)}else this.semaphores.saving=!1}getViewData(){var e,t,A;if(!this.getScene)return this.data;if(!this.excalidrawData.loaded)return this.data;const i=this.getScene();if(!this.compatibilityMode){let i=this.data.search(/(^%%\n)?# Text Elements\n/m);if(-1==i&&(i=this.data.search(/(%%\n)?# Drawing\n/)),-1==i)return this.data;const n=(null===(e=this.exportDialog)||void 0===e?void 0:e.dirty)&&(null===(t=this.exportDialog)||void 0===t?void 0:t.saveSettings)?[["excalidraw-export-padding",this.exportDialog.padding.toString()],["excalidraw-export-pngscale",this.exportDialog.scale.toString()],["excalidraw-export-dark","dark"===this.exportDialog.theme?"true":"false"],["excalidraw-export-transparent",this.exportDialog.transparent?"true":"false"],[FRONTMATTER_KEY,this.textMode===TextMode.raw?"raw":"parsed"]]:[[FRONTMATTER_KEY,this.textMode===TextMode.raw?"raw":"parsed"]];(null===(A=this.exportDialog)||void 0===A?void 0:A.dirty)&&(this.exportDialog.dirty=!1);let a=updateFrontmatterInString(this.data.substring(0,i),n);const r=/(^---[\w\W]*?---\n)(!\[\[.*?]]\n(%%\n)?)/m;a.match(r)&&(a=a.replace(r,"$1")),this.excalidrawData.disableCompression||(this.excalidrawData.disableCompression=this.isEditedAsMarkdownInOtherView());const s=a+this.excalidrawData.generateMD(this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted)));return this.excalidrawData.disableCompression=!1,s}return this.compatibilityMode?JSON.stringify(i,null,"\t"):this.data}restoreMobileLeaves(){this.hiddenMobileLeaves.length>0&&(this.hiddenMobileLeaves.forEach((e=>{e[0].containerEl.style.display=e[1]})),this.hiddenMobileLeaves=[])}toggleDisableBinding(){const e=!this.excalidrawAPI.getAppState().invertBindingBehaviour;this.updateScene({appState:{invertBindingBehaviour:e}}),new obsidian_module.Notice(e?"Inverted Mode: Default arrow binding is now disabled. Use CTRL/CMD to temporarily enable binding when needed.":"Normal Mode: Arrow binding is now enabled. Use CTRL/CMD to temporarily disable binding when needed.")}gotoFullscreen(){this.plugin.leafChangeTimeout&&(clearTimeout(this.plugin.leafChangeTimeout),this.plugin.leafChangeTimeout=null),this.excalidrawWrapperRef&&(this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!0),(e=>{for(;e&&!e.hasClass("workspace-split");)e.addClass(SHOW),e=e.parentElement;e&&e.addClass(SHOW);const t=this.ownerDocument;t.body.querySelectorAll(`div.workspace-split:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),t.body.querySelector(`div.workspace-leaf-content.${SHOW} > .view-header`).addClass(HIDE),t.body.querySelectorAll(`div.workspace-tab-container.${SHOW} > div.workspace-leaf:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll(`div.workspace-tabs.${SHOW} > div.workspace-tab-header-container`).forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll(`div.workspace-split.${SHOW} > div.workspace-tabs:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll("div.workspace-ribbon").forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll("div.mobile-navbar").forEach((e=>e.addClass(HIDE))),t.body.querySelectorAll("div.status-bar").forEach((e=>e.addClass(HIDE)))})(this.contentEl))}isFullscreen(){return Boolean(document.body.querySelector(".excalidraw-hidden"))}exitFullscreen(){this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!1);const e=this.ownerDocument;e.querySelectorAll(".excalidraw-hidden").forEach((e=>e.removeClass(HIDE))),e.querySelectorAll(".excalidraw-visible").forEach((e=>e.removeClass(SHOW)))}removeLinkTooltip(){const e=this.ownerDocument.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");e&&e.classList.remove("excalidraw-tooltip--visible")}handleLinkHookCall(e,t,A){if(this.getHookServer().onLinkClickHook)try{if(!this.getHookServer().onLinkClickHook(e,t,A,this,this.getHookServer()))return!0}catch(e){errorlog({where:"ExcalidrawView.onLinkOpen",fn:this.getHookServer().onLinkClickHook,error:e})}return!1}openExternalLink(e,t){return!!e.match(REG_LINKINDEX_HYPERLINK)&&(window.open(e,"_blank"),!0)}openTagSearch(e){const t=e.matchAll(/#([\p{Letter}\p{Emoji_Presentation}\p{Number}\/_-]+)/gu).next();if(!t.value||t.value.length<2)return;const A=app.workspace.getLeavesOfType("search");0!=A.length&&(A[0].view.setQuery(`tag:${t.value[1]}`),app.workspace.revealLeaf(A[0]),this.isFullscreen()&&this.exitFullscreen())}async linkClick(e,t,A,i,n){var a,r,s,o,l;t||(t={id:null,text:null}),A||(A={id:null,fileId:null}),i||(i={id:null,text:null}),n||(n={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,altKey:e.altKey});const c=linkClickModifierType(n);let d=null,h=null,u=null;if((null==t?void 0:t.id)||(null==i?void 0:i.id)){if(u=null!==(a=null==i?void 0:i.text)&&void 0!==a?a:this.textMode===TextMode.parsed?this.excalidrawData.getRawText(t.id):t.text,!u)return;u=u.replaceAll("\n","");const A=null!==(r=t.id)&&void 0!==r?r:i.id,n=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A))[0];if(this.handleLinkHookCall(n,u,e))return;if(this.openExternalLink(u))return;const s=REGEX_LINK.getResList(u);let o=s[0];if(s.length>1&&(o=await ScriptEngine.suggester(app,s.filter((e=>Boolean(e.value))).map((e=>REGEX_LINK.getLink(e))),s.filter((e=>Boolean(e.value))),"Select link to open"),!o))return;if(!o.value)return void this.openTagSearch(u);if(u=REGEX_LINK.getLink(o),this.openExternalLink(u))return;if(u.search("#")>-1){const e=getLinkParts(u,this.file);h=`#${e.isBlockRef?"^":""}${e.ref}`,u=e.path}if(u.match(REG_LINKINDEX_INVALIDCHARS))return void new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3);d=this.app.metadataCache.getFirstLinkpathDest(u,this.file.path)}if(null==A?void 0:A.id){if(this.excalidrawData.hasEquation(A.fileId)){const e=this.excalidrawData.getEquation(A.fileId).latex;return void new Prompt(app,t$d("ENTER_LATEX"),e,"").openAndGetValue((async t=>{t&&t!==e&&(this.excalidrawData.setEquation(A.fileId,{latex:t,isLoaded:!1}),await this.save(!1),await updateEquation(t,A.fileId,this,addFiles,this.plugin),this.setDirty(1))}))}if(await this.save(!1),this.excalidrawData.hasFile(A.fileId)){const e=this.excalidrawData.getFile(A.fileId);if(e.isHyperlink)return void window.open(e.hyperlink,"_blank");if("md-properties"===c&&"md"===e.file.extension&&!this.plugin.isExcalidrawFile(e.file))return void new Prompt(app,"Customize the link",e.linkParts.original,"","Do not add [[square brackets]] around the filename!
Follow this format when editing your link:
filename#^blockref|WIDTHxMAXHEIGHT").openAndGetValue((async t=>{t&&e.linkParts.original!==t&&(e.resetImage(this.file.path,t),await this.save(!1),await this.loadSceneFiles(),this.setDirty(2))}));u=e.file.path,d=e.file,"pdf"===d.extension.toLowerCase()&&(h=null===(s=e.linkParts.original.match(/(#.*)$/))||void 0===s?void 0:s[1])}}if(!u)return void new obsidian_module.Notice(t$d("LINK_BUTTON_CLICK_NO_TEXT"),2e4);const g=null!==(l=null!==(o=A.id)&&void 0!==o?o:t.id)&&void 0!==l?l:i.id,p=this.excalidrawAPI.getSceneElements().filter((e=>e.id===g))[0];if(!this.handleLinkHookCall(p,u,e))try{if("active-pane"!==c&&this.isFullscreen()&&this.exitFullscreen(),!d)return void new NewFileActions(this.plugin,u,n,this).open();this.linksAlwaysOpenInANewPane&&(n.ctrlKey=!0,n.altKey=!0);const e=getLeaf(this.plugin,this.leaf,n);await e.openFile(d,h?{active:!this.linksAlwaysOpenInANewPane,eState:{subpath:h}}:void 0)}catch(e){new obsidian_module.Notice(e,4e3)}}async handleLinkClick(e){this.removeLinkTooltip();const t=this.getSelectedTextElement(),A=(null==t?void 0:t.id)?null:this.getSelectedImageElement(),i=(null==A?void 0:A.id)||(null==t?void 0:t.id)?null:this.getSelectedElementWithLink();this.linkClick(e,t,A,i)}onResize(){var e,t;if(this.plugin.leafChangeTimeout)return;const A=this.excalidrawAPI;this.plugin.settings.zoomToFitOnResize&&this.excalidrawRef&&!this.semaphores.isEditingText&&A&&"text"!==(null===(t=null===(e=A.getAppState())||void 0===e?void 0:e.editingElement)||void 0===t?void 0:t.type)&&this.zoomToFit(!1)}getSceneVersion(e){return this.excalidrawGetSceneVersion||(this.excalidrawGetSceneVersion=this.plugin.getPackage(this.ownerWindow).excalidrawLib.getSceneVersion),this.excalidrawGetSceneVersion(e.filter((e=>!e.isDeleted)))}async forceSave(e=!1){this.semaphores.autosaving||this.semaphores.saving?e||new obsidian_module.Notice("Force Save aborted because saving is in progress)"):(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=!1,this.semaphores.forceSaving=!0,await this.save(!1,!0),this.plugin.triggerEmbedUpdates(),this.loadSceneFiles(),this.semaphores.forceSaving=!1,e||new obsidian_module.Notice("Save successful",1e3))}onload(){const e=Boolean(void 0===this.containerEl.onWindowMigrated);app.isMobile||e||this.containerEl.onWindowMigrated((()=>this.leaf.rebuildView()));const t=app.isMobile?document:this.containerEl.ownerDocument;this.ownerDocument=t,this.ownerWindow=this.ownerDocument.defaultView,this.plugin.getPackage(this.ownerWindow),this.semaphores.scriptsReady=!0,this.wheelEvent=e=>{this.semaphores.wheelTimeout&&clearTimeout(this.semaphores.wheelTimeout),this.semaphores.hoverSleep&&this.clearHoverPreview&&this.clearHoverPreview(),this.semaphores.wheelTimeout=setTimeout((()=>{clearTimeout(this.semaphores.wheelTimeout),this.semaphores.wheelTimeout=null}),1e3)},this.containerEl.addEventListener("wheel",this.wheelEvent,{passive:!1}),this.addAction("ScriptEngine",t$d("INSTALL_SCRIPT_BUTTON"),(()=>{new ScriptInstallPrompt(this.plugin).open()})),this.diskIcon=this.addAction("save",t$d("FORCE_SAVE"),(async()=>this.forceSave())),this.textIsRaw_Element=this.addAction("presentation",t$d("RAW"),(()=>this.changeTextMode(TextMode.parsed))),this.textIsParsed_Element=this.addAction("quote-glyph",t$d("PARSED"),(()=>this.changeTextMode(TextMode.raw))),this.linkAction_Element=this.addAction("link",t$d("OPEN_LINK"),(e=>this.handleLinkClick(e))),app.isMobile||this.addAction("fullscreen","Use the action on the Excalidraw Obsidian Panel or the Command Palette to exit fullscreen mode. You can set up a hotkey for toggling fullscreen mode in Obsidian settings under Hotkeys.",(()=>this.gotoFullscreen()));const A=this;app.workspace.onLayoutReady((async()=>{A.contentEl.addClass("excalidraw-view"),await A.addSlidingPanesListner(),A.addParentMoveObserver(),A.onKeyUp=e=>{A.modifierKeyDown={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}},A.onKeyDown=e=>{this.modifierKeyDown={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}},A.ownerWindow.addEventListener("keydown",A.onKeyDown,!1),A.ownerWindow.addEventListener("keyup",A.onKeyUp,!1)})),this.setupAutosaveTimer(),super.onload()}async addSlidingPanesListner(){const e=this;this.slidingPanesListner=()=>{e.refresh&&e.refresh()};let t=app.workspace.rootSplit;for(;!t;)await sleep(50),t=app.workspace.rootSplit;t.containerEl.addEventListener("scroll",this.slidingPanesListner)}removeSlidingPanesListner(){var e;this.slidingPanesListner&&(null===(e=app.workspace.rootSplit.containerEl)||void 0===e||e.removeEventListener("scroll",this.slidingPanesListner))}addParentMoveObserver(){var e;const t=null!==(e=getParentOfClass(this.containerEl,"popover"))&&void 0!==e?e:getParentOfClass(this.containerEl,"workspace-leaf");if(!t)return;const A=t.classList.contains("popover");this.offsetLeft=t.offsetLeft,this.offsetTop=t.offsetTop;const i=this;this.parentMoveObserver=new MutationObserver((async e=>{const t=e[0].target;if(!(t instanceof HTMLElement))return;const{offsetLeft:A,offsetTop:n}=t;A===i.offsetLeft&&n==i.offsetTop||(i.refresh&&i.refresh(),i.offsetLeft=A,i.offsetTop=n)})),this.parentMoveObserver.observe(t,{attributeOldValue:!0,attributeFilter:A?["data-x","data-y"]:["class","style"]})}removeParentMoveObserver(){this.parentMoveObserver&&this.parentMoveObserver.disconnect()}setTheme(e){const t=this.excalidrawAPI;if(!this.excalidrawRef||!t)return;if(this.file&&hasExportTheme(this.plugin,this.file))return;const A=t.getAppState();this.excalidrawData.scene.theme=e,this.updateScene({appState:Object.assign(Object.assign({},A),{theme:e}),commitToHistory:!1})}async changeTextMode(e,t=!0){if(this.compatibilityMode)return;if(this.blockTextModeChange)return;this.blockTextModeChange=!0,this.textMode=e,e===TextMode.parsed?(this.textIsRaw_Element.hide(),this.textIsParsed_Element.show()):(this.textIsRaw_Element.show(),this.textIsParsed_Element.hide()),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setPreviewMode(e===TextMode.parsed);const A=this.excalidrawAPI;A&&t&&(await this.save(),this.preventAutozoom(),await this.excalidrawData.loadData(this.data,this.file,this.textMode),this.excalidrawData.scene.appState.theme=A.getAppState().theme,await this.loadDrawing(!1),A.history.clear()),this.prevTextMode=this.textMode,this.blockTextModeChange=!1}setupAutosaveTimer(){const e=async()=>{var t;if(!this.isLoaded)return void(this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval));const A=this.excalidrawAPI;if(!A)return void warningUnknowSeriousError();const i=A.getAppState(),n=null!==i.editingElement;if(this.refresh(),!this.semaphores.dirty||this.semaphores.dirty!=(null===(t=this.file)||void 0===t?void 0:t.path)||!this.plugin.settings.autosave||this.semaphores.forceSaving||this.semaphores.autosaving||n||null!==i.draggingElement)this.autosaveTimer=setTimeout(e,this.plugin.activeExcalidrawView===this&&this.semaphores.dirty&&this.plugin.settings.autosave?1e3:this.plugin.settings.autosaveInterval);else{if(this.autosaveTimer=null,this.excalidrawRef){this.semaphores.autosaving=!0;const e=this;this.save().then((()=>e.semaphores.autosaving=!1))}this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}};this.autosaveTimer&&(clearTimeout(this.autosaveTimer),this.autosaveTimer=null),this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}onunload(){var e,t,A,i,n,a;if(this.restoreMobileLeaves(),this.semaphores.viewunload=!0,this.semaphores.popoutUnload=this.ownerDocument!==document&&0===this.ownerDocument.body.querySelectorAll(".workspace-tab-header").length,null===(e=this.ownerWindow)||void 0===e||e.removeEventListener("keydown",this.onKeyDown,!1),null===(t=this.ownerWindow)||void 0===t||t.removeEventListener("keyup",this.onKeyUp,!1),this.containerEl.removeEventListener("wheel",this.wheelEvent,!1),this.getHookServer().onViewUnloadHook)try{this.getHookServer().onViewUnloadHook(this)}catch(e){errorlog({where:"ExcalidrawView.onunload",fn:this.getHookServer().onViewUnloadHook,error:e})}const r=null===(i=null===(A=this.containerEl)||void 0===A?void 0:A.ownerDocument)||void 0===i?void 0:i.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");r&&(null===(a=null===(n=this.containerEl)||void 0===n?void 0:n.ownerDocument)||void 0===a||a.body.removeChild(r)),this.removeParentMoveObserver(),this.removeSlidingPanesListner(),this.autosaveTimer&&(clearInterval(this.autosaveTimer),this.autosaveTimer=null)}async reload(e=!1,t){if(this.semaphores.preventReload)return void(this.semaphores.preventReload=!1);if(this.semaphores.saving)return;if(this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),this.compatibilityMode)return void this.clearDirty();const A=this.excalidrawAPI;if(!this.excalidrawRef||!this.file||!A)return;const i=t&&t===this.file;i&&(this.data=await app.vault.read(t),this.preventAutozoom()),e?await this.excalidrawData.loadData(this.data,this.file,this.textMode):await this.excalidrawData.setTextMode(this.textMode),this.excalidrawData.scene.appState.theme=A.getAppState().theme,await this.loadDrawing(i),this.clearDirty()}async zoomToElementId(e,t){let A=0;for(;!this.excalidrawAPI&&A++<100;)await sleep(50);const i=this.excalidrawAPI;if(!i)return;const n=i.getSceneElements();let a=n.filter((t=>t.id===e));if(0!==a.length){if(t){const e=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],n);e.length>0&&(a=e)}this.preventAutozoom(),this.zoomToElements(!i.getAppState().viewModeEnabled,a)}}setEphemeralState(e){if(!e)return;const t=this;let A=null;e.match&&e.match.content&&e.match.matches&&1===e.match.matches.length&&2===e.match.matches[0].length&&(A=[e.match.content.substring(e.match.matches[0][0],e.match.matches[0][1])]);const i=async()=>{var e,A;let i=0;for(;(t.semaphores.justLoaded||!t.isLoaded||!t.excalidrawAPI||(null===(A=null===(e=t.excalidrawAPI)||void 0===e?void 0:e.getAppState())||void 0===A?void 0:A.isLoading))&&i++<100;)await sleep(50)},n=getEmbeddedFilenameParts(e.subpath);n.hasBlockref&&setTimeout((async()=>{await i(),setTimeout((()=>t.zoomToElementId(n.blockref,n.hasGroupref)))})),n.hasSectionref?A=[`# ${n.sectionref}`]:e.line&&e.line>0&&(A=[this.data.split("\n")[e.line-1]]),A&&setTimeout((async()=>{await i();const e=t.excalidrawAPI;if(!e)return;if(e.getAppState().isLoading)return;const a=e.getSceneElements();if(1===A.length&&A[0].startsWith("[")){let i=REGEX_LINK.getResList(A[0])[0];if(i){const A=REGEX_LINK.getLink(i);if(A){const i=t.plugin.app.metadataCache.getFirstLinkpathDest(A,t.file.path);if(i){let A=[];if(t.excalidrawData.files.forEach(((e,t)=>{var n;(null===(n=e.file)||void 0===n?void 0:n.path)===i.path&&A.push(t)})),A.length>0){const i=a.filter((e=>"image"===e.type&&A.includes(e.fileId)));i.length>0&&(this.preventAutozoom(),setTimeout((()=>t.zoomToElements(!e.getAppState().viewModeEnabled,i))))}}}}}t.selectElementsMatchingQuery(a,A,!e.getAppState().viewModeEnabled,n.hasSectionref,n.hasGroupref)})),super.setEphemeralState(e)}clear(){delete this.exportDialog;const e=this.excalidrawAPI;this.excalidrawRef&&e&&(this.activeLoader&&(this.activeLoader.terminate=!0,this.activeLoader=null),this.nextLoader=null,e.resetScene(),this.previousSceneVersion=0)}async setViewData(e,t=!1){this.isLoaded=!1,this.file&&(this.plugin.settings.showNewVersionNotification&&checkExcalidrawVersion(app),t&&this.clear(),this.lastSaveTimestamp=this.file.stat.mtime,e=this.data=e.replaceAll("\r\n","\n").replaceAll("\r","\n"),app.workspace.onLayoutReady((async()=>{if(this.compatibilityMode="excalidraw"===this.file.extension,await this.plugin.loadSettings(),this.compatibilityMode)this.textIsRaw_Element.hide(),this.textIsParsed_Element.hide(),this.linkAction_Element.hide(),this.textMode=TextMode.raw,await this.excalidrawData.loadLegacyData(e,this.file),this.plugin.settings.compatibilityMode||new obsidian_module.Notice(t$d("COMPATIBILITY_MODE"),4e3),this.excalidrawData.disableCompression=!0;else{this.linkAction_Element.show(),this.excalidrawData.disableCompression=!1;const t=getTextMode(e);this.changeTextMode(t,!1);try{if(!await this.excalidrawData.loadData(e,this.file,this.textMode))return}catch(e){return errorlog({where:"ExcalidrawView.setViewData",error:e}),new obsidian_module.Notice(`Error loading drawing:\n${e.message}${"Cannot read property 'index' of undefined"===e.message?"\n'# Drawing' section is likely missing":""}\n\nTry manually fixing the file or restoring an earlier version from sync history.`,1e4),void this.setMarkdownView()}}if(await this.loadDrawing(!0),this.plugin.ea.onFileOpenHook)try{await this.plugin.ea.onFileOpenHook({ea:getEA(this),excalidrawFile:this.file,view:this})}catch(e){errorlog({where:"ExcalidrawView.setViewData.onFileOpenHook",error:e})}const t=this.excalidrawData.getOnLoadScript();if(t){const e=this,A=this.file.basename+"-onlaod-script",i=()=>{e.excalidrawAPI?e.plugin.scriptEngine.executeScript(e,t,A,this.file):setTimeout(i,200)};i()}this.isLoaded=!0})))}getGridColor(e){const t=this.plugin.ea.getCM(e);return t.isDark()?t.lighterBy(5):t.darkerBy(5),t.stringHEX()}async loadSceneFiles(){if(!this.excalidrawAPI)return;const e=new EmbeddedFilesLoader(this.plugin),t=e=>{this.nextLoader=null,this.activeLoader=e,e.loadSceneFiles(this.excalidrawData,((e,A,i=!0)=>{e&&(addFiles(e,this,A),i&&(this.activeLoader=null,this.nextLoader?t(this.nextLoader):this.excalidrawData.getFiles().some((e=>{if(e&&!e.file&&e.attemptCounter<30){const e=this,t=this.file.path;return setTimeout((async()=>{e&&e.excalidrawAPI&&t===e.file.path&&e.loadSceneFiles()}),2e3),!0}return!1}))))}),0)};this.activeLoader?this.nextLoader=e:t(e)}async synchronizeWithData(e){let t=0;for(;this.semaphores.saving&&t++<30;)await sleep(100);if(t>=30)return void errorlog({where:"ExcalidrawView.synchronizeWithData",message:`Aborting sync with received file (${this.file.path}) because semaphores.saving remained true for ower 3 seconds`,fn:this.synchronizeWithData});this.semaphores.saving=!0;let A=!1;try{const t=e.deletedElements.map((e=>e.id)),i=this.excalidrawAPI.getSceneElements().filter((e=>!t.contains(e.id))),n=i.map((e=>e.id)),a=t=>{switch(t.type){case"text":this.excalidrawData.textElements.set(t.id,e.textElements.get(t.id));break;case"image":e.getFile(t.fileId)?(this.excalidrawData.setFile(t.fileId,e.getFile(t.fileId)),A=!0):e.getEquation(t.fileId)&&(this.excalidrawData.setEquation(t.fileId,e.getEquation(t.fileId)),A=!0)}e.elementLinks.has(t.id)&&this.excalidrawData.elementLinks.set(t.id,e.elementLinks.get(t.id))};e.scene.elements.forEach(((t,r,s)=>{const o=i.filter((e=>e.id===t.id))[0];if(o&&(o.version0&&a.viewModeEnabled,l=this.isLoaded?s.getAppState().zenModeEnabled:a.zenModeEnabled;s.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),this.updateScene({elements:n.elements.concat(null!=t?t:[]),files:n.files,commitToHistory:!0},e),this.updateScene({appState:Object.assign(Object.assign(Object.assign({},n.appState),this.excalidrawData.selectedElementIds?this.excalidrawData.selectedElementIds:{}),{zenModeEnabled:l,viewModeEnabled:o,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:r,penDetected:r,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)})}),app.workspace.getActiveViewOfType(ExcalidrawView)===this.leaf.view&&this.excalidrawWrapperRef&&(null===(i=null===(A=this.excalidrawWrapperRef.current)||void 0===A?void 0:A.firstElementChild)||void 0===i||i.focus()),this.onAfterLoadScene()}else this.instantiateExcalidraw({elements:n.elements,appState:Object.assign(Object.assign({},n.appState),{zenModeEnabled:a.zenModeEnabled,viewModeEnabled:n.elements.length>0&&a.viewModeEnabled,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:r,penDetected:r,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}),files:n.files,libraryItems:await this.getLibrary()});const o=null!==this.data.match(/```compressed\-json\n/gm);this.compatibilityMode||this.plugin.settings.compress===o||this.isEditedAsMarkdownInOtherView()||this.setDirty(4)}isEditedAsMarkdownInOtherView(){return app.workspace.getLeavesOfType("markdown").filter((e=>e.view.file===this.file)).length>0}onAfterLoadScene(){this.loadSceneFiles(),this.updateContainerSize(null,!0),this.initializeToolsIconPanelAfterLoading()}setDirty(e){var t,A;this.semaphores.dirty=null===(t=this.file)||void 0===t?void 0:t.path,this.diskIcon.querySelector("svg").addClass("excalidraw-dirty"),!this.semaphores.viewunload&&(null===(A=this.toolsPanelRef)||void 0===A?void 0:A.current)&&this.toolsPanelRef.current.setDirty(!0),app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="var(--color-accent)")}clearDirty(){var e;if(this.semaphores.viewunload)return;const t=this.excalidrawAPI;if(!t)return;this.semaphores.dirty=null,(null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current)&&this.toolsPanelRef.current.setDirty(!1);const A=t.getSceneElements();A&&(this.previousSceneVersion=this.getSceneVersion(A)),this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="")}initializeToolsIconPanelAfterLoading(){var e;if(this.semaphores.viewunload)return;const t=this.excalidrawAPI;if(!t)return;const A=t.getAppState(),i=null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current;i&&(i.setTheme(A.theme),i.setExcalidrawViewMode(A.viewModeEnabled),i.setPreviewMode(this.compatibilityMode?null:this.textMode===TextMode.parsed),i.updateScriptIconMap(this.plugin.scriptEngine.scriptIconMap))}canAcceptExtension(e){return"excalidraw"===e}getDisplayText(){return this.file?this.file.basename:t$d("NOFILE")}getViewType(){return"excalidraw"}getIcon(){return ICON_NAME}setMarkdownView(){this.plugin.excalidrawFileModes[this.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}async openAsMarkdown(){!0===this.plugin.settings.compress&&(this.excalidrawData.disableCompression=!0,await this.save(!0,!0)),this.setMarkdownView()}async convertExcalidrawToMD(){await this.save(),this.plugin.openDrawing(await this.plugin.convertSingleExcalidrawToMD(this.file),"active-pane",!0)}async addYouTubeThumbnail(e){const t=await getYouTubeThumbnailLink(e),A=getEA(this),i=await A.addImage(0,0,t);A.getElement(i).link=e,A.addElementsToView(!0,!0,!0)}async addImageWithURL(e){const t=getEA(this);await t.addImage(0,0,e),t.addElementsToView(!0,!0,!0)}async addImageSaveToVault(e){const t=getEA(this),A=getMimeType(getURLImageExtension(e)),i=await getDataURLFromURL(e,A,3e3),n=await generateIdFromFile((new TextEncoder).encode(i)),a=await this.excalidrawData.saveDataURLtoVault(i,A,n);await t.addImage(0,0,a),t.addElementsToView(!0,!0,!0)}async addTextWithIframely(e){var t;const A=await this.addText(e),i=`http://iframely.server.crestify.com/iframely?url=${e}`;try{const n=JSON.parse(await obsidian_module.request({url:i}));if(!n||n.error||!(null===(t=n.meta)||void 0===t?void 0:t.title))return;const a=getEA(this),r=a.getViewElements().filter((e=>e.id===A));1===r.length&&(r[0].text=r[0].originalText=r[0].rawText=`[${n.meta.title}](${e})`,a.copyViewElementsToEAforEditing(r),a.addElementsToView(!1,!1,!1))}catch(e){}}onPaneMenu(e,t){this.excalidrawAPI&&this.getViewSelectedElements().some((e=>"text"===e.type))&&e.addItem((e=>{e.setTitle(t$d("OPEN_LINK")).setIcon("external-link").setSection("pane").onClick((e=>{this.handleLinkClick(e)}))})),this.compatibilityMode?e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE")).onClick((()=>this.convertExcalidrawToMD())).setSection("pane")})):e.addItem((e=>{e.setTitle(t$d("OPEN_AS_MD")).setIcon("document").onClick((()=>{this.openAsMarkdown()})).setSection("pane")})),e.addItem((e=>{e.setTitle(t$d("EXPORT_IMAGE")).setIcon("export-img").setSection("pane").onClick((async e=>{this.getScene&&this.file&&(this.exportDialog||(this.exportDialog=new ExportDialog(this.plugin,this,this.file),this.exportDialog.createForm()),this.exportDialog.open())})).setSection("pane")})).addItem((e=>{e.setTitle(t$d("INSTALL_SCRIPT_BUTTON")).setIcon("ScriptEngine").setSection("pane").onClick((()=>{new ScriptInstallPrompt(this.plugin).open()}))})),super.onPaneMenu(e,t)}async getLibrary(){var e;const t=this.plugin.getStencilLibrary();return(null==t?void 0:t.library)?t.library:null!==(e=null==t?void 0:t.libraryItems)&&void 0!==e?e:[]}async instantiateExcalidraw(e){for(;!this.semaphores.scriptsReady;)await sleep(50);const t=this.plugin.getPackage(this.ownerWindow).react,A=this.plugin.getPackage(this.ownerWindow).reactDOM;this.clearDirty();const i=t.createElement((()=>{const A=t.useRef(null),i=t.useRef(null),n=t.useRef(null),[a,r]=t.useState({width:void 0,height:void 0});let s=null,o=null,l=null,c=Date.now(),d=!1;this.toolsPanelRef=i,this.obsidianMenu=new ObsidianMenu(this.plugin,i,this),this.menuLinks=new MenuLinks(this.plugin,n);const h=()=>{let e,t;const A=new Promise(((A,i)=>{e=A,t=i}));return A.resolve=e,A.reject=t,A},u=t.useMemo((()=>({current:{readyPromise:h()}})),[]);t.useEffect((()=>{u.current.readyPromise.then((e=>{this.excalidrawAPI=e,e.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),setTimeout((()=>{var e,t,A;this.onAfterLoadScene(),this.excalidrawContainer=null===(t=null===(e=this.excalidrawWrapperRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.firstElementChild,null===(A=this.excalidrawContainer)||void 0===A||A.focus()}))}))}),[u]),this.excalidrawRef=u,this.excalidrawWrapperRef=A,t.useEffect((()=>{r({width:this.contentEl.clientWidth,height:this.contentEl.clientHeight});const e=()=>{try{const e=this.contentEl.clientWidth,t=this.contentEl.clientHeight;if(0===e||0===t)return;r({width:e,height:t}),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.updatePosition(),this.ownerDocument!==document&&this.refresh()}catch(e){errorlog({where:"Excalidraw React-Wrapper, onResize",error:e})}};return this.ownerWindow.addEventListener("resize",e),()=>{var t;return null===(t=this.ownerWindow)||void 0===t?void 0:t.removeEventListener("resize",e)}}),[A]),this.getSelectedTextElement=()=>{var e;const t=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!t)return{id:null,text:null};if(t.getAppState().viewModeEnabled){if(s){const e=s;return s=null,e}return{id:null,text:null}}const A=t.getSceneElements().filter((e=>e.id===Object.keys(t.getAppState().selectedElementIds)[0]));if(0===A.length)return{id:null,text:null};if("text"===A[0].type)return{id:A[0].id,text:A[0].text};if(["image","arrow"].contains(A[0].type))return{id:null,text:null};const i=null===(e=A[0].boundElements)||void 0===e?void 0:e.filter((e=>"text"===e.type));if((null==i?void 0:i.length)>0){const e=t.getSceneElements().filter((e=>e.id===i[0].id));if(e.length>0)return{id:e[0].id,text:e[0].text}}if(0===A[0].groupIds.length)return{id:null,text:null};const n=A[0].groupIds[0],a=t.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(n)})).filter((e=>"text"===e.type));return 0===a.length?{id:null,text:null}:{id:A[0].id,text:A[0].text}},this.getSelectedImageElement=()=>{const e=this.excalidrawAPI;if(!e)return{id:null,fileId:null};if(e.getAppState().viewModeEnabled){if(o){const e=o;return o=null,e}return{id:null,fileId:null}}const t=e.getSceneElements().filter((t=>t.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,fileId:null};if("image"==t[0].type)return{id:t[0].id,fileId:t[0].fileId};if("text"===t[0].type)return{id:null,fileId:null};if(0===t[0].groupIds.length)return{id:null,fileId:null};const A=t[0].groupIds[0],i=e.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(A)})).filter((e=>"image"==e.type));return 0===i.length?{id:null,fileId:null}:{id:i[0].id,fileId:i[0].fileId}},this.getSelectedElementWithLink=()=>{const e=this.excalidrawAPI;if(!e)return{id:null,text:null};if(e.getAppState().viewModeEnabled){if(l){const e=l;return l=null,e}return{id:null,text:null}}const t=e.getSceneElements().filter((t=>t.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,text:null};if(t[0].link)return{id:t[0].id,text:t[0].link};if(0===t[0].groupIds.length)return{id:null,text:null};const A=t[0].groupIds[0],i=e.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(A)})).filter((e=>e.link));return 0===i.length?{id:null,text:null}:{id:i[0].id,text:i[0].link}},this.addText=async(e,t,A=!0)=>{var i,n,a,r,s;const o=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!o)return;const l=o.getAppState(),c=this.plugin.ea.getAPI(this);c.style.strokeColor=null!==(i=l.currentItemStrokeColor)&&void 0!==i?i:"black",c.style.opacity=null!==(n=l.currentItemOpacity)&&void 0!==n?n:1,c.style.fontFamily=null!==(a=null!=t?t:l.currentItemFontFamily)&&void 0!==a?a:1,c.style.fontSize=null!==(r=l.currentItemFontSize)&&void 0!==r?r:20,c.style.textAlign=null!==(s=l.currentItemTextAlign)&&void 0!==s?s:"left";const{width:d,height:h}=l,g=viewportCoordsToSceneCoords({clientX:0,clientY:0},l),p=viewportCoordsToSceneCoords({clientX:d,clientY:h},l),m=g.x>this.currentPosition.x||p.xthis.currentPosition.y||p.y{const a=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!a)return!1;const r=e.filter((e=>"text"==e.type));for(let e=0;ee.id)),o=a.getSceneElements(),l=[];for(let t=0;te.id===A))[0],l.push(A))}const c=n?o.concat(e.filter((e=>!l.includes(e.id)))):e.filter((e=>!l.includes(e.id))).concat(o);if(this.updateScene({elements:c,commitToHistory:!0},!0),i&&Object.keys(i).length>0){const e=[];Object.keys(i).forEach((t=>{if(e.push({mimeType:i[t].mimeType,id:i[t].id,dataURL:i[t].dataURL,created:i[t].created}),i[t].file||i[t].isHyperlink){const e=new EmbeddedFile(this.plugin,this.file.path,i[t].isHyperlink?i[t].hyperlink:i[t].file),A=a.getAppState();e.setImage(i[t].dataURL,i[t].mimeType,i[t].size,"dark"===A.theme,i[t].hasSVGwithBitmap),this.excalidrawData.setFile(i[t].id,e)}i[t].latex&&this.excalidrawData.setEquation(i[t].id,{latex:i[t].latex,isLoaded:!0})})),a.addFiles(e)}return a.updateContainerSize(a.getSceneElements().filter((e=>s.includes(e.id))).filter(isContainer)),A?await this.save(!1):this.setDirty(5),!0},this.getScene=e=>{const t=this.excalidrawAPI;if(!(null==u?void 0:u.current)||!t)return null;const A=e?this.getViewSelectedElements():t.getSceneElements(),i=t.getAppState(),n=Object.assign({},t.getFiles());if(n){const e=A.filter((e=>"image"===e.type)).map((e=>e.fileId)),t=Object.keys(n).filter((t=>!e.contains(t)));t.forEach((e=>delete n[e]))}return{type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:A,appState:{theme:i.theme,viewBackgroundColor:i.viewBackgroundColor,currentItemStrokeColor:i.currentItemStrokeColor,currentItemBackgroundColor:i.currentItemBackgroundColor,currentItemFillStyle:i.currentItemFillStyle,currentItemStrokeWidth:i.currentItemStrokeWidth,currentItemStrokeStyle:i.currentItemStrokeStyle,currentItemRoughness:i.currentItemRoughness,currentItemOpacity:i.currentItemOpacity,currentItemFontFamily:i.currentItemFontFamily,currentItemFontSize:i.currentItemFontSize,currentItemTextAlign:i.currentItemTextAlign,currentItemStartArrowhead:i.currentItemStartArrowhead,currentItemEndArrowhead:i.currentItemEndArrowhead,scrollX:i.scrollX,scrollY:i.scrollY,zoom:i.zoom,currentItemRoundness:i.currentItemRoundness,gridSize:i.gridSize,colorPalette:i.colorPalette,currentStrokeOptions:i.currentStrokeOptions,previousGridSize:i.previousGridSize},prevTextMode:this.prevTextMode,files:n}},this.refresh=()=>{if(0===this.contentEl.clientWidth||0===this.contentEl.clientHeight)return;const e=this.excalidrawAPI;(null==u?void 0:u.current)&&e&&e.refresh()};let g={x:0,y:0},p=null;this.clearHoverPreview=()=>{if(p){const e=new MouseEvent("click",{view:this.ownerWindow,bubbles:!0,cancelable:!0});p.dispatchEvent(e),p=null}};const m=e=>{var t,A,i,n,a;const r=null===(t=app.dragManager.draggable)||void 0===t?void 0:t.files;return r&&r[0]==this.file&&(r.shift(),app.dragManager.draggable.title=`${r.length} files`),["file","files"].includes(null===(A=app.dragManager.draggable)||void 0===A?void 0:A.type)?"link":(null===(i=e.types)||void 0===i?void 0:i.includes("text/html"))||(null===(n=e.types)||void 0===n?void 0:n.includes("text/plain"))||(null===(a=e.types)||void 0===a?void 0:a.includes("Files"))?"copy":void 0};let w=!1;const f=()=>{if(s=getTextElementAtPointer(this.currentPosition,this),s&&s.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(s=null)}if(o=getImageElementAtPointer(this.currentPosition,this),o&&o.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(o=null)}if(l=getElementWithLinkAtPointer(this.currentPosition,this),l&&l.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(l=null)}};let B=null;const E=(e,t)=>{var A,i;if(!B)return;if(null===(i=null===(A=this.excalidrawAPI)||void 0===A?void 0:A.getAppState())||void 0===i?void 0:i.editingElement)return;if(this.semaphores.wheelTimeout)return;if(!e){if(!this.currentPosition)return;e="";const A=getTextElementAtPointer(this.currentPosition,this);if(A&&A.text){t=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A.id))[0];const i=this.textMode===TextMode.parsed?this.excalidrawData.getRawText(A.id):A.text;if(!i)return;if(i.match(REG_LINKINDEX_HYPERLINK))return;const n=REGEX_LINK.getRes(i).next();if(!n.value)return;if((e=REGEX_LINK.getLink(n)).match(REG_LINKINDEX_HYPERLINK))return}else{const A=getImageElementAtPointer(this.currentPosition,this);if(t=this.excalidrawAPI.getSceneElements().filter((e=>e.id===A.id))[0],!A||!A.fileId)return;if(!this.excalidrawData.hasFile(A.fileId))return;const i=this.excalidrawData.getFile(A.fileId);if(i.isHyperlink)return;if(IMAGE_TYPES.contains(i.file.extension))return;if("pdf"===i.file.extension.toLowerCase())return;if(this.plugin.ea.isExcalidrawFile(i.file))return;const n=i.linkParts.ref?`#${i.linkParts.isBlockRef?"^":""}${i.linkParts.ref}`:"";e=i.file.path+n}}if(this.getHookServer().onLinkHoverHook)try{if(!this.getHookServer().onLinkHoverHook(t,e,this,this.getHookServer()))return}catch(e){errorlog({where:"ExcalidrawView.showHoverPreview",fn:this.getHookServer().onLinkHoverHook,error:e})}if(this.semaphores.hoverSleep)return;const n=app.metadataCache.getFirstLinkpathDest(e.split("#")[0],this.file.path);if(!n)return;if(this.ownerDocument.querySelector(`div.popover-title[data-path="${n.path}"]`))return;this.semaphores.hoverSleep=!0;const a=this;if(setTimeout((()=>a.semaphores.hoverSleep=!1),500),this.plugin.hover.linkText=e,this.plugin.hover.sourcePath=this.file.path,p=this.contentEl,app.workspace.trigger("hover-link",{event:B,source:"excalidraw",hoverParent:p,targetEl:p,linktext:this.plugin.hover.linkText,sourcePath:this.plugin.hover.sourcePath}),g=this.currentPosition,this.isFullscreen()){const e=this;setTimeout((()=>{var t,A,i,a;const r=null!==(a=null===(i=null===(A=null===(t=this.ownerDocument.querySelector(`div.popover-title[data-path="${n.path}"]`))||void 0===t?void 0:t.parentElement)||void 0===A?void 0:A.parentElement)||void 0===i?void 0:i.parentElement)&&void 0!==a?a:this.ownerDocument.body.querySelector("div.popover");r&&e.contentEl.append(r)}),400)}},{Excalidraw:b,MainMenu:v,WelcomeScreen:C}=this.plugin.getPackage(this.ownerWindow).excalidrawLib,y=t.createElement("div",{className:"excalidraw-wrapper",ref:A,key:"abc",tabIndex:0,onKeyDown:e=>{e.target!==y.ref.current&&(this.isFullscreen()&&e.keyCode===KEYCODE.ESC&&this.exitFullscreen(),!isCTRL(e)||isSHIFT(e)||isALT(e)||E())},onPointerDown:e=>{(isCTRL(e)||isMETA(e))&&(!this.plugin.settings.allowCtrlClick&&isMETA(e)||setTimeout((()=>{(this.getSelectedTextElement().id||this.getSelectedImageElement().id||this.getSelectedElementWithLink().id)&&this.handleLinkClick(e)})))},onMouseMove:e=>{B=e.nativeEvent},onMouseOver:()=>{this.clearHoverPreview()},onDragOver:e=>{const t=m(e.dataTransfer);if(t){this.draginfoDiv||(this.draginfoDiv=createDiv({cls:"excalidraw-draginfo"}),this.ownerDocument.body.appendChild(this.draginfoDiv));let A="";if(app.dragManager.draggable)switch(internalDragModifierType(e)){case"image":A="Embed image";break;case"image-fullsize":A="Embed image @100%";break;case"link":A="Insert link"}else if(1===e.dataTransfer.types.length&&e.dataTransfer.types.includes("Files"))A="External file";else switch(externalDragModifierType(e)){case"image-import":A="Import image to Vault";break;case"image-url":A="Insert image/thumbnail with URL";break;case"insert-link":A="Insert link"}this.draginfoDiv.innerText!==A&&(this.draginfoDiv.innerText=A);const i=e.clientY-8*parseFloat(getComputedStyle(this.draginfoDiv).fontSize)+"px",n=e.clientX-this.draginfoDiv.clientWidth/2+"px";return this.draginfoDiv.style.top!==i&&(this.draginfoDiv.style.top=i),this.draginfoDiv.style.left!==n&&(this.draginfoDiv.style.left=n),e.dataTransfer.dropEffect=t,e.preventDefault(),!1}},onDragLeave:()=>{this.draginfoDiv&&(this.ownerDocument.body.removeChild(this.draginfoDiv),delete this.draginfoDiv)}},t.createElement(b,{ref:u,width:a.width,height:a.height,UIOptions:{canvasActions:{loadScene:!1,saveScene:!1,saveAsScene:!1,export:!1,saveAsImage:!1,saveToActiveFile:!1}},initState:null==e?void 0:e.appState,initialData:e,detectScroll:!0,onPointerUpdate:e=>{if(this.currentPosition=e.pointer,p&&(Math.abs(g.x-e.pointer.x)>50||Math.abs(g.y-e.pointer.y)>50)&&this.clearHoverPreview(),w){if(!d&&"down"===e.button){if(d=!0,isCTRL(this.modifierKeyDown)||isMETA(this.modifierKeyDown))return void f();const e=Date.now();return e-c<600&&e-c>40&&f(),void(c=e)}"up"===e.button&&(d=!1),(isCTRL(this.modifierKeyDown)||this.excalidrawAPI.getAppState().isViewModeEnabled&&this.plugin.settings.hoverPreviewWithoutCTRL)&&E()}},libraryReturnUrl:"app://obsidian.md",autoFocus:!0,onChange:(e,t)=>{var A,i,n,a;const r=()=>{if(setTimeout((()=>this.updateScene({appState:{gridColor:this.getGridColor(t.viewBackgroundColor)}}))),setDynamicStyle(this.plugin.ea,this,t.viewBackgroundColor,this.plugin.settings.dynamicStyling),this.plugin.ea.onCanvasColorChangeHook)try{this.plugin.ea.onCanvasColorChangeHook(this.plugin.ea,this,t.viewBackgroundColor)}catch(e){errorlog({where:r,source:this.plugin.ea.onCanvasColorChangeHook,error:e,message:"ea.onCanvasColorChangeHook exception"})}};if(w=t.viewModeEnabled,this.semaphores.justLoaded){if((null!==(a=null===(n=null===(i=null===(A=this.excalidrawData)||void 0===A?void 0:A.scene)||void 0===i?void 0:i.elements)||void 0===n?void 0:n.length)&&void 0!==a?a:0)>0&&0===e.length)return;return this.semaphores.justLoaded=!1,!this.semaphores.preventAutozoom&&this.plugin.settings.zoomToFitOnOpen&&this.zoomToFit(!1,!0),this.previousSceneVersion=this.getSceneVersion(e),this.previousBackgroundColor=t.viewBackgroundColor,this.previousTheme=t.theme,void r()}if(t.theme!==this.previousTheme&&this.file===this.excalidrawData.file&&(this.previousTheme=t.theme,this.setDirty(5)),t.viewBackgroundColor!==this.previousBackgroundColor&&this.file===this.excalidrawData.file&&(this.previousBackgroundColor=t.viewBackgroundColor,this.setDirty(6),this.colorChangeTimer&&clearTimeout(this.colorChangeTimer),this.colorChangeTimer=setTimeout((()=>{r(),this.colorChangeTimer=null}),50)),!this.semaphores.dirty&&null===t.editingElement&&null===t.editingLinearElement){const t=this.getSceneVersion(e);(t>0||0===t&&e.length>0)&&t!==this.previousSceneVersion&&(this.previousSceneVersion=t,this.setDirty(6))}},onLibraryChange:e=>{(async()=>{const t={type:"excalidrawlib",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,libraryItems:e};this.plugin.setStencilLibrary(t),await this.plugin.saveSettings()})()},renderTopRightUI:this.obsidianMenu.renderButton,onPaste:e=>{if(e&&e.text&&hyperlinkIsYouTubeLink(e.text))return this.addYouTubeThumbnail(e.text),!1;if(e&&e.text&&hyperlinkIsImage(e.text))return this.addImageWithURL(e.text),!1;if(e.elements){const e=this;setTimeout((()=>e.save(!1)),300)}return!0},onThemeChange:async e=>{var t;this.excalidrawData.scene.appState.theme=e,this.loadSceneFiles(),null===(t=null==i?void 0:i.current)||void 0===t||t.setTheme(e),setDynamicStyle(this.plugin.ea,this,this.previousBackgroundColor,this.plugin.settings.dynamicStyling)},ownerDocument:this.ownerDocument,ownerWindow:this.ownerWindow,onDrop:e=>{this.draginfoDiv&&(this.ownerDocument.body.removeChild(this.draginfoDiv),delete this.draginfoDiv);const t=this.excalidrawAPI;if(!t)return!1;const A=t.getAppState();this.currentPosition=viewportCoordsToSceneCoords({clientX:e.clientX,clientY:e.clientY},A);const i=app.dragManager.draggable,n=internalDragModifierType(e),a=externalDragModifierType(e),r=(t,A,n)=>{if(!this.getHookServer().onDropHook)return!1;try{return this.getHookServer().onDropHook({ea:this.getHookServer(),event:e,draggable:i,type:t,payload:{files:A,text:n},excalidrawFile:this.file,view:this,pointerPosition:this.currentPosition})}catch(e){return new obsidian_module.Notice("on drop hook error. See console log for details"),errorlog({where:"ExcalidrawView.onDrop",error:e}),!1}};switch(null==i?void 0:i.type){case"file":if(!r("file",[i.file],null)){if(i.file.path.match(REG_LINKINDEX_INVALIDCHARS))return new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3),!1;if(["image","image-fullsize"].contains(n)&&(IMAGE_TYPES.contains(i.file.extension)||"md"===i.file.extension||"pdf"===i.file.extension.toLowerCase())){const e=getEA(this);return"pdf"===i.file.extension.toLowerCase()?new InsertPDFModal(this.plugin,this).open(i.file):(async()=>{e.canvas.theme=t.getAppState().theme,await e.addImage(this.currentPosition.x,this.currentPosition.y,i.file,!("image-fullsize"===n)),e.addElementsToView(!1,!1,!0)})(),!1}this.addText(`[[${app.metadataCache.fileToLinktext(i.file,this.file.path,!0)}]]`)}return!1;case"files":return r("file",i.files,null)||(async()=>{if(["image","image-fullsize"].contains(n)){const e=getEA(this);e.canvas.theme=t.getAppState().theme;let A=0;for(const t of i.files)(IMAGE_TYPES.contains(t.extension)||"md"===t.extension)&&(await e.addImage(this.currentPosition.x+50*A,this.currentPosition.y+50*A,t,!("image-fullsize"===n)),A++,await e.addElementsToView(!1,!1,!0)),"pdf"===t.extension.toLowerCase()&&new InsertPDFModal(this.plugin,this).open(t)}else{for(const e of i.files)await this.addText(`[[${app.metadataCache.fileToLinktext(e,this.file.path,!0)}]]`,void 0,!1),this.currentPosition.y+=2*A.currentItemFontSize;this.save(!1)}})(),!1}if(e.dataTransfer.types.includes("Files")){if(e.dataTransfer.types.includes("text/plain")){const t=e.dataTransfer.getData("text");if(t&&r("text",null,t))return!1;if(t&&"image-url"===a&&hyperlinkIsImage(t))return this.addImageWithURL(t),!1;if(t&&"insert-link"===a)return this.plugin.settings.iframelyAllowed&&t.match(/^https?:\/\/\S*$/)?(this.addTextWithIframely(t),!1):(this.addText(t),!1)}if(e.dataTransfer.types.includes("text/html")){const t=e.dataTransfer.getData("text/html").match(/src=["']([^"']*)["']/);if(t&&"image-url"===a&&hyperlinkIsImage(t[1]))return this.addImageWithURL(t[1]),!1;if(t&&"insert-link"===a)return this.plugin.settings.iframelyAllowed&&t[1].match(/^https?:\/\/\S*$/)?(this.addTextWithIframely(t[1]),!1):(this.addText(t[1]),!1)}return!0}if(e.dataTransfer.types.includes("text/plain")||e.dataTransfer.types.includes("text/uri-list")||e.dataTransfer.types.includes("text/html")){const t=e.dataTransfer.getData("text/html").match(/src=["']([^"']*)["']/),A=t?t[1]:"",i=e.dataTransfer.getData("text"),n=e.dataTransfer.getData("text/uri-list");let s=t?A:i;if(s&&""!==s||(s=n),!s||""===s)return!0;if(!r("text",null,s)){if(s&&"image-url"===a&&hyperlinkIsYouTubeLink(s))return this.addYouTubeThumbnail(s),!1;if(n&&"image-url"===a&&hyperlinkIsYouTubeLink(n))return this.addYouTubeThumbnail(n),!1;if(s&&"image-url"===a&&hyperlinkIsImage(s))return this.addImageWithURL(s),!1;if(n&&"image-url"===a&&hyperlinkIsImage(n))return this.addImageWithURL(n),!1;if(s&&"image-import"===a&&hyperlinkIsImage(s))return this.addImageSaveToVault(s),!1;if(n&&"image-import"===a&&hyperlinkIsImage(n))return this.addImageSaveToVault(n),!1;if(this.plugin.settings.iframelyAllowed&&s.match(/^https?:\/\/\S*$/))return this.addTextWithIframely(s),!1;if(s.startsWith("obsidian://open?vault=")){const t=e.dataTransfer.getData("text/html");if(t){const e=t.match(/href="app:\/\/obsidian\.md\/(.*?)"/);if(2===e.length){const t=decodeURIComponent(e[1]).split("#"),A=app.vault.getAbstractFileByPath(t[0]);if(A&&A instanceof obsidian_module.TFile){const e=app.metadataCache.fileToLinktext(A,this.file.path);return void this.addText(`[[${e+(t.length>1?"#"+t[1]+"|"+e:"")}]]`)}return this.addText(`[[${decodeURIComponent(e[1])}]]`),!1}}const A=s.split("file=");if(2===A.length)return this.addText(`[[${decodeURIComponent(A[1])}]]`),!1}this.addText(s.replace(/(!\[\[.*#[^\]]*\]\])/g,"$1{40}"))}return!1}return!r("unknown",null,null)},onBeforeTextEdit:e=>{var t;if(clearTimeout(this.isEditingTextResetTimer),this.isEditingTextResetTimer=null,this.semaphores.isEditingText=!0,this.compatibilityMode)return null!==(t=e.originalText)&&void 0!==t?t:e.text;return this.excalidrawData.getRawText(e.id)||e.rawText},onBeforeTextSubmit:(e,t,A,i)=>{const n=this.excalidrawAPI;if(!n)return[null,null,null];const a="PASTING EXCALIDRAW ELEMENTS AS A TEXT ELEMENT IS NOT ALLOWED";if(t.startsWith('{"type":"excalidraw/clipboard","elements":[{"'))return setTimeout((()=>{const t=this.excalidrawAPI.getSceneElements(),A=t.filter((t=>t.id===e.id));if(1===A.length){const e=cloneElement(A[0]);e.rawText=a,t[t.indexOf(A[0])]=e,this.excalidrawData.setTextElement(e.id,a,a,(()=>{})),this.updateScene({elements:t}),n.history.clear()}})),[a,a,null];if(this.semaphores.isEditingText=!0,this.isEditingTextResetTimer=setTimeout((()=>{this.semaphores.isEditingText=!1,this.isEditingTextResetTimer=null}),1500),i)return this.excalidrawData.deleteTextElement(e.id),this.setDirty(7),[null,null,null];const r=e.containerId;if(t!==e.text||A!==e.originalText||!this.excalidrawData.getRawText(e.id)){this.setDirty(8);const[i,a,s]=this.excalidrawData.setTextElement(e.id,t,A,(async(t,A)=>{var i,a;if(this.textMode===TextMode.raw)return;const r=this.excalidrawAPI.getSceneElements(),s=r.filter((t=>t.id===e.id));if(1===s.length){const e=cloneElement(s[0]),o=s[0].containerId?null===(a=null===(i=n.getSceneElements().filter((e=>e.id===s[0].containerId)))||void 0===i?void 0:i[0])||void 0===a?void 0:a.type:void 0;this.excalidrawData.updateTextElement(e,t,A,!0,o),r[r.indexOf(s[0])]=e,this.updateScene({elements:r}),e.containerId&&this.updateContainerSize(e.containerId)}n.history.clear()}));return i?(r&&this.updateContainerSize(r,!0),this.textMode===TextMode.raw?[t,A,s]:t===i?s?[i,a,s]:[null,null,null]:(n.history.clear(),[i,a,s])):[null,null,null]}return r&&this.updateContainerSize(r,!0),this.textMode===TextMode.parsed?this.excalidrawData.getParsedText(e.id):[null,null,null]},onLinkOpen:async(e,t)=>{var A;if(t.preventDefault(),!e)return;let i=e.link;if(!i||""===i)return;setTimeout((()=>this.removeLinkTooltip()),500);let n=null===(A=null==t?void 0:t.detail)||void 0===A?void 0:A.nativeEvent;if(!this.handleLinkHookCall(e,e.link,n)&&!this.openExternalLink(e.link,isSHIFT(n)||isCTRL(n)||isMETA(n)||isALT(n)?void 0:e)){if("text"===e.type){const t=e.rawText.replaceAll("\n","");REGEX_LINK.getResList(t).filter((e=>Boolean(e.value))).length>1&&(i=t)}n.shiftKey||n.ctrlKey||n.metaKey||n.altKey||(n={shiftKey:!0,ctrlKey:!1,metaKey:!1,altKey:!1}),this.linkClick(n,null,null,{id:e.id,text:i},emulateCTRLClickForLinks(n))}},onLinkHover:(e,t)=>{if(e&&(this.plugin.settings.hoverPreviewWithoutCTRL||isCTRL(t))){B=t,B.ctrlKey=!(DEVICE.isIOS||DEVICE.isMacOS)||B.ctrlKey,B.metaKey=DEVICE.isIOS||DEVICE.isMacOS||B.metaKey;const A=e.link;if(!A||""===A)return;if(A.startsWith("[[")){const t=A.match(/\[\[(?.*?)\]\]/);if(!t)return;let i=t.groups.link;E(i,e)}}},onViewModeChange:e=>{var t,A;if(this.semaphores.viewunload||null===(A=null===(t=this.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===A||A.setExcalidrawViewMode(e),this.getHookServer().onViewModeChangeHook)try{this.getHookServer().onViewModeChangeHook(e,this,this.getHookServer())}catch(e){errorlog({where:"ExcalidrawView.onViewModeChange",fn:this.getHookServer().onViewModeChangeHook,error:e})}}},t.createElement(v,{},t.createElement(v.DefaultItems.ChangeCanvasBackground),t.createElement(v.DefaultItems.ToggleTheme),t.createElement(v.Separator),DEVICE.isPhone?null:t.createElement(v.Item,{icon:ICONS.trayMode,"aria-label":"Tray-mode offers an alternative, more spacious canvas",onSelect:()=>{this.toggleTrayMode()}},"Toggle tray-mode"),t.createElement(v.Item,{icon:saveIcon(!1),"aria-label":t$d("FORCE_SAVE"),onSelect:()=>{this.forceSave()}},"Save"),t.createElement(v.Item,{icon:ICONS.scriptEngine,"aria-label":"Explore the Excalidraw Script Library",onSelect:()=>{new ScriptInstallPrompt(this.plugin).open()}},"Script Library"),t.createElement(v.Item,{icon:ICONS.ExportImage,"aria-label":"Export image as PNG, SVG, or Excalidraw file",onSelect:()=>{this.exportDialog||(this.exportDialog=new ExportDialog(this.plugin,this,this.file),this.exportDialog.createForm()),this.exportDialog.open()}},"Export Image..."),t.createElement(v.Item,{icon:ICONS.switchToMarkdown,"aria-label":"Switch to markdown view",onSelect:()=>{this.openAsMarkdown()}},"Open as Markdown"),t.createElement(v.Separator),t.createElement(v.DefaultItems.Help),t.createElement(v.DefaultItems.ClearCanvas)),t.createElement(C,{},t.createElement(C.Center,{},t.createElement(C.Center.Logo),t.createElement(C.Center.Heading,{},'Type "Excalidraw" in the Command Palette',t.createElement("br"),"Explore the Obsidian Menu in the top right",t.createElement("br"),"Visit the Script Library",t.createElement("br"),"Find help in the hamburger-menu"),t.createElement(C.Center.Menu,{},t.createElement(C.Center.MenuItemLink,{icon:ICONS.YouTube,href:"https://www.youtube.com/@VisualPKM",shortcut:null,"aria-label":"Visual PKM YouTube Channel"}," Check out the Visual PKM YouTube channel."),t.createElement(C.Center.MenuItemLink,{icon:ICONS.Discord,href:"https://discord.gg/DyfAXFwUHc",shortcut:null,"aria-label":"Join the Visual Thinking Discord Server"}," Join the Visual Thinking Discord Server"),t.createElement(C.Center.MenuItemLink,{icon:ICONS.twitter,href:"https://twitter.com/zsviczian",shortcut:null,"aria-label":"Follow me on Twitter"}," Follow me on Twitter"),t.createElement(C.Center.MenuItemLink,{icon:ICONS.heart,href:"https://ko-fi.com/zsolt",shortcut:null,"aria-label":"Donate to support Excalidraw-Obsidian"},' Say "Thank You" & support the plugin.'))))),t.createElement(ToolsPanel,{ref:i,visible:!1,view:this,centerPointer:()=>{const e=this.excalidrawAPI;if(!u||!u.current||!e)return;const t=e.getAppState(),{width:A,height:i}=t;this.currentPosition=viewportCoordsToSceneCoords({clientX:A/2,clientY:i/2},t)}})),F=t.useRef(new ResizeObserver((e=>{if(!i||!i.current)return;const{width:t,height:A}=e[0].contentRect;if(0===t||0===A)return;const n=i.current.onRightEdge?i.current.previousWidth-t:0,a=i.current.onBottomEdge?i.current.previousHeight-A:0;i.current.updatePosition(a,n)})));return t.useEffect((()=>((null==i?void 0:i.current)&&F.current.observe(i.current.containerRef.current),()=>{F.current.unobserve(i.current.containerRef.current)})),[i,F]),t.createElement(t.Fragment,null,y)}));A.createRoot(this.contentEl).render(i)}updateContainerSize(e,t=!1){const A=this.excalidrawAPI;if(!A)return;const i=()=>{const t=e?A.getSceneElements().filter((t=>t.id===e&&"arrow"!==t.type)):A.getSceneElements().filter(isContainer);t.length>0&&(this.initialContainerSizeUpdate&&(this.semaphores.justLoaded=!0),A.updateContainerSize(t)),this.initialContainerSizeUpdate=!1};t?setTimeout((()=>i()),50):i()}zoomToFit(e=!0,t=!1){if(document.body.querySelector("div.modal-container"))return;const A=this.excalidrawAPI;if(!A||!this.excalidrawRef||this.semaphores.isEditingText||this.semaphores.preventAutozoom)return;const i=this.plugin.settings.zoomToFitMaxLevel,n=A.getSceneElements().filter((e=>e.width<1e4&&e.height<1e4));app.isMobile&&n.length>1e3||n.length>2500?t&&A.scrollToContent():e?setTimeout((()=>A.zoomToFit(n,i,this.isFullscreen()?0:.05)),100):A.zoomToFit(n,i,this.isFullscreen()?0:.05)}updatePinnedScripts(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{pinnedScripts:this.plugin.settings.pinnedScripts}})}updatePinnedCustomPens(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}})}updatePinchZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowPinchZoom:this.plugin.settings.allowPinchZoom}})}updateWheelZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowWheelZoom:this.plugin.settings.allowWheelZoom}})}async toggleTrayMode(){const e=this.excalidrawAPI;if(!e)return!1;const t=e.getAppState();e.updateScene({appState:{trayModeEnabled:!t.trayModeEnabled}}),await this.plugin.loadSettings(),this.plugin.settings.defaultTrayMode=!t.trayModeEnabled,this.plugin.saveSettings()}selectElementsMatchingQuery(e,t,A=!0,i=!1,n=!1){let a=getTextElementsMatchingQuery(e.filter((e=>"text"===e.type)),t,i);if(0!==a.length){if(n){const t=this.plugin.ea.getElementsInTheSameGroupWithElement(a[0],e);t.length>0&&(a=t)}this.zoomToElements(A,a)}else new obsidian_module.Notice("I could not find a matching text element")}zoomToElements(e,t){const A=this.excalidrawAPI;if(!A)return;const i=this.plugin.settings.zoomToFitMaxLevel;e&&A.selectElements(t),A.zoomToFit(t,i,.05)}getViewSelectedElements(){var e;const t=this.excalidrawAPI;if(!t)return[];const A=null===(e=t.getAppState())||void 0===e?void 0:e.selectedElementIds;if(!A)return[];const i=Object.keys(A);if(!i)return[];const n=t.getSceneElements().filter((e=>i.includes(e.id))),a=n.filter((e=>e.boundElements&&e.boundElements.filter((e=>"text"===e.type)).length>0)).map((e=>e.boundElements.filter((e=>"text"===e.type)).map((e=>e.id))[0])),r=n.map((e=>e.id)).concat(a);return t.getSceneElements().filter((e=>r.contains(e.id)))}async copyLinkToSelectedElementToClipboard(e){const t=this.getViewSelectedElements();if(t.length<1)return void new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_ERROR"));let A;if(2===t.length){const e=t.filter((e=>"text"===e.type));1===e.length&&e[0].containerId&&1===t.filter((e=>e.boundElements.some((e=>"text"===e.type)))).length&&(A=e[0].id)}A||(A=1===t.length?t[0].id:this.plugin.ea.getLargestElement(t).id);const i=await ScriptEngine.inputPrompt(this,this.plugin,app,"Set link alias","Leave empty if you do not want to set an alias","",[{caption:"Link",action:()=>{e=""}},{caption:"Area",action:()=>{e="area="}},{caption:"Group",action:()=>{e="group="}}]);navigator.clipboard.writeText(`${e.length>0?"!":""}[[${this.file.path}#^${e}${A}${i?`|${i}`:""}]]`),new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_READY"))}updateScene(e,t=!1){const A=this.excalidrawAPI;if(!A)return;const i=e.elements&&t;i&&(e.elements=A.restore(e).elements);try{A.updateScene(e)}catch(t){if(errorlog({where:"ExcalidrawView.updateScene 1st attempt",fn:this.updateScene,error:t,scene:e,willDoSecondAttempt:!i}),i)warningUnknowSeriousError();else try{e.elements=A.restore(e).elements,A.updateScene(e)}catch(t){errorlog({where:"ExcalidrawView.updateScene 2nd attempt",fn:this.updateScene,error:t,scene:e}),warningUnknowSeriousError()}}}}function getTextMode(e){return e.search("excalidraw-plugin: parsed\n")>-1||e.search("excalidraw-plugin: locked\n")>-1?TextMode.parsed:TextMode.raw}const DEFAULT_SETTINGS={folder:"Excalidraw",embedUseExcalidrawFolder:!1,templateFilePath:"Excalidraw/Template.excalidraw",scriptFolderPath:"Excalidraw/Scripts",compress:!1,autosave:!0,autosaveInterval:15e3,autosaveIntervalDesktop:15e3,autosaveIntervalMobile:1e4,drawingFilenamePrefix:"Drawing ",drawingEmbedPrefixWithFilename:!0,drawingFilnameEmbedPostfix:" ",drawingFilenameDateTime:"YYYY-MM-DD HH.mm.ss",useExcalidrawExtension:!0,displaySVGInPreview:!0,displayExportedImageIfAvailable:!1,previewMatchObsidianTheme:!1,width:"400",dynamicStyling:"colorful",isLeftHanded:!1,matchTheme:!1,matchThemeAlways:!1,matchThemeTrigger:!1,defaultMode:"normal",defaultPenMode:"never",allowPinchZoom:!1,allowWheelZoom:!1,zoomToFitOnOpen:!0,zoomToFitOnResize:!0,zoomToFitMaxLevel:2,linkPrefix:"📍",urlPrefix:"🌐",parseTODO:!1,todo:"☐",done:"🗹",hoverPreviewWithoutCTRL:!1,linkOpacity:1,openInAdjacentPane:!1,openInMainWorkspace:!0,showLinkBrackets:!0,allowCtrlClick:!0,forceWrap:!1,pageTransclusionCharLimit:200,wordWrappingDefault:0,removeTransclusionQuoteSigns:!0,iframelyAllowed:!0,pngExportScale:1,exportWithTheme:!0,exportWithBackground:!0,exportPaddingSVG:10,keepInSync:!1,autoexportSVG:!1,autoexportPNG:!1,autoExportLightAndDark:!1,autoexportExcalidraw:!1,embedType:"excalidraw",embedWikiLink:!0,syncExcalidraw:!1,experimentalFileType:!1,experimentalFileTag:"✏️",experimentalLivePreview:!0,experimentalEnableFourthFont:!1,experimantalFourthFont:"Virgil",fieldSuggester:!0,compatibilityMode:!1,drawingOpenCount:0,library:"deprecated",library2:{type:"excalidrawlib",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,libraryItems:[]},imageElementNotice:!0,mdSVGwidth:500,mdSVGmaxHeight:800,mdFont:"Virgil",mdFontColor:"Black",mdBorderColor:"Black",mdCSS:"",scriptEngineSettings:{},defaultTrayMode:!0,previousRelease:"0.0.0",showReleaseNotes:!0,showNewVersionNotification:!0,mathjaxSourceURL:"https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js",latexBoilerplate:"\\color{blue}",taskboneEnabled:!1,taskboneAPIkey:"",pinnedScripts:[],customPens:[Object.assign({},PENS.default),Object.assign({},PENS.highlighter),Object.assign({},PENS.finetip),Object.assign({},PENS.fountain),Object.assign({},PENS.marker),Object.assign({},PENS["thick-thin"]),Object.assign({},PENS["thin-thick-thin"]),Object.assign({},PENS.default),Object.assign({},PENS.default),Object.assign({},PENS.default)],numberOfCustomPens:0,pdfScale:4,pdfBorderBox:!0,pdfGapSize:20,pdfLockAfterImport:!0,pdfNumColumns:1,pdfImportScale:.3};class ExcalidrawSettingTab extends obsidian_module.PluginSettingTab{constructor(e,t){super(e,t),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1,this.requestUpdatePinnedPens=!1,this.requestUpdateDynamicStyling=!1,this.reloadMathJax=!1,this.plugin=t}applySettingsUpdate(e=!1){e&&(this.requestReloadDrawings=!0)}async hide(){if(this.plugin.settings.scriptFolderPath=obsidian_module.normalizePath(this.plugin.settings.scriptFolderPath),"/"!==this.plugin.settings.scriptFolderPath&&""!==this.plugin.settings.scriptFolderPath||(this.plugin.settings.scriptFolderPath="Excalidraw/Scripts"),this.plugin.saveSettings(),this.requestUpdatePinnedPens&&app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.requestUpdateDynamicStyling&&app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&setDynamicStyle(this.plugin.ea,e.view,e.view.previousBackgroundColor,this.plugin.settings.dynamicStyling)})),this.requestReloadDrawings){const e=app.workspace.getLeavesOfType("excalidraw");for(const t of e)t.view instanceof ExcalidrawView&&(await t.view.save(!1),await t.view.reload(!0));this.requestEmbedUpdate=!0}this.requestEmbedUpdate&&this.plugin.triggerEmbedUpdates(),this.plugin.scriptEngine.updateScriptPath(),this.reloadMathJax&&this.plugin.loadMathJax()}async display(){var e;await this.plugin.loadSettings(),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1;const{containerEl:t}=this;t.addClass("excalidraw-settings"),this.containerEl.empty();const A=t.createDiv("coffee");A.addClass("ex-coffee-div"),A.createEl("a",{href:"https://ko-fi.com/zsolt"}).createEl("img",{attr:{src:"https://cdn.ko-fi.com/cdn/kofi3.png?v=3"}}).height=45,new obsidian_module.Setting(t).setName(t$d("RELEASE_NOTES_NAME")).setDesc(fragWithHTML(t$d("RELEASE_NOTES_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showReleaseNotes).onChange((async e=>{this.plugin.settings.showReleaseNotes=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("NEWVERSION_NOTIFICATION_NAME")).setDesc(fragWithHTML(t$d("NEWVERSION_NOTIFICATION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showNewVersionNotification).onChange((async e=>{this.plugin.settings.showNewVersionNotification=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOLDER_NAME")).setDesc(fragWithHTML(t$d("FOLDER_DESC"))).addText((e=>e.setPlaceholder("Excalidraw").setValue(this.plugin.settings.folder).onChange((async e=>{this.plugin.settings.folder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOLDER_EMBED_NAME")).setDesc(fragWithHTML(t$d("FOLDER_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedUseExcalidrawFolder).onChange((async e=>{this.plugin.settings.embedUseExcalidrawFolder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TEMPLATE_NAME")).setDesc(fragWithHTML(t$d("TEMPLATE_DESC"))).addText((e=>e.setPlaceholder("Excalidraw/Template").setValue(this.plugin.settings.templateFilePath).onChange((async e=>{this.plugin.settings.templateFilePath=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("SCRIPT_FOLDER_NAME")).setDesc(fragWithHTML(t$d("SCRIPT_FOLDER_DESC"))).addText((e=>e.setPlaceholder("Excalidraw/Scripts").setValue(this.plugin.settings.scriptFolderPath).onChange((async e=>{this.plugin.settings.scriptFolderPath=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("SAVING_HEAD")}),new obsidian_module.Setting(t).setName(t$d("COMPRESS_NAME")).setDesc(fragWithHTML(t$d("COMPRESS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compress).onChange((async e=>{this.plugin.settings.compress=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AUTOSAVE_INTERVAL_DESKTOP_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_DESKTOP_DESC"))).addDropdown((e=>e.addOption("15000","Frequent (every 15 seconds)").addOption("60000","Moderate (every 60 seconds)").addOption("300000","Rare (every 5 minutes)").addOption("900000","Practically never (every 15 minutes)").setValue(this.plugin.settings.autosaveIntervalDesktop.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalDesktop=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AUTOSAVE_INTERVAL_MOBILE_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_MOBILE_DESC"))).addDropdown((e=>e.addOption("10000","Frequent (every 10 seconds)").addOption("30000","Moderate (every 30 seconds)").addOption("60000","Rare (every 1 minute)").addOption("300000","Practically never (every 5 minutes)").setValue(this.plugin.settings.autosaveIntervalMobile.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalMobile=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("FILENAME_HEAD")}),t.createDiv("",(e=>{e.innerHTML=t$d("FILENAME_DESC")}));const i=()=>`${t$d("FILENAME_SAMPLE")}${getDrawingFilename(this.plugin.settings)}
${t$d("FILENAME_EMBED_SAMPLE")}${getEmbedFilename("{NOTE_NAME}",this.plugin.settings)}`,n=t.createEl("p",{text:""});let a,r,s,o,l,c,d;n.innerHTML=i(),new obsidian_module.Setting(t).setName(t$d("FILENAME_PREFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_DESC"))).addText((e=>e.setPlaceholder("Drawing ").setValue(this.plugin.settings.drawingFilenamePrefix).onChange((async t=>{this.plugin.settings.drawingFilenamePrefix=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenamePrefix),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_PREFIX_EMBED_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.drawingEmbedPrefixWithFilename).onChange((async e=>{this.plugin.settings.drawingEmbedPrefixWithFilename=e,n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_POSTFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_POSTFIX_DESC"))).addText((e=>e.setPlaceholder("").setValue(this.plugin.settings.drawingFilnameEmbedPostfix).onChange((async t=>{this.plugin.settings.drawingFilnameEmbedPostfix=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilnameEmbedPostfix),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_DATE_NAME")).setDesc(fragWithHTML(t$d("FILENAME_DATE_DESC"))).addText((e=>e.setPlaceholder("YYYY-MM-DD HH.mm.ss").setValue(this.plugin.settings.drawingFilenameDateTime).onChange((async t=>{this.plugin.settings.drawingFilenameDateTime=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenameDateTime),n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_EXCALIDRAW_EXTENSION_NAME")).setDesc(fragWithHTML(t$d("FILENAME_EXCALIDRAW_EXTENSION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.useExcalidrawExtension).onChange((async e=>{this.plugin.settings.useExcalidrawExtension=e,n.innerHTML=i(),this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("DISPLAY_HEAD")}),new obsidian_module.Setting(t).setName(t$d("DYNAMICSTYLE_NAME")).setDesc(fragWithHTML(t$d("DYNAMICSTYLE_DESC"))).addDropdown((e=>e.addOption("none","Dynamic Styling OFF").addOption("colorful","Match color").addOption("gray","Gray, match tone").setValue(this.plugin.settings.dynamicStyling).onChange((async e=>{this.requestUpdateDynamicStyling=!0,this.plugin.settings.dynamicStyling=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LEFTHANDED_MODE_NAME")).setDesc(fragWithHTML(t$d("LEFTHANDED_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.isLeftHanded).onChange((async e=>{this.plugin.settings.isLeftHanded=e,setLeftHandedMode(e),setTimeout((()=>setLeftHandedMode(e))),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchTheme).onChange((async e=>{this.plugin.settings.matchTheme=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_ALWAYS_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_ALWAYS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeAlways).onChange((async e=>{this.plugin.settings.matchThemeAlways=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_TRIGGER_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_TRIGGER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeTrigger).onChange((async e=>{this.plugin.settings.matchThemeTrigger=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_OPEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_OPEN_MODE_DESC"))).addDropdown((e=>e.addOption("normal","Always in normal-mode").addOption("zen","Always in zen-mode").addOption("view","Always in view-mode").addOption("view-mobile","Usually normal, but view-mode on Phone").setValue(this.plugin.settings.defaultMode).onChange((async e=>{this.plugin.settings.defaultMode=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_PEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PEN_MODE_DESC"))).addDropdown((e=>e.addOption("never","Never").addOption("mobile","On Obsidian Mobile").addOption("always","Always").setValue(this.plugin.settings.defaultPenMode).onChange((async e=>{this.plugin.settings.defaultPenMode=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_PINCHZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PINCHZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowPinchZoom).onChange((async e=>{this.plugin.settings.allowPinchZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinchZoom()})),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_WHEELZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_WHEELZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowWheelZoom).onChange((async e=>{this.plugin.settings.allowWheelZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updateWheelZoom()})),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_ONOPEN_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_ONOPEN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnOpen).onChange((async e=>{this.plugin.settings.zoomToFitOnOpen=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnResize).onChange((async e=>{this.plugin.settings.zoomToFitOnResize=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_MAX_LEVEL_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_MAX_LEVEL_DESC"))).addSlider((e=>e.setLimits(.5,10,.5).setValue(this.plugin.settings.zoomToFitMaxLevel).onChange((async e=>{a.innerText=` ${e.toString()}`,this.plugin.settings.zoomToFitMaxLevel=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{a=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.zoomToFitMaxLevel.toString()}`})),this.containerEl.createEl("h1",{text:t$d("LINKS_HEAD")}),this.containerEl.createEl("span",void 0,(e=>e.innerHTML=t$d("LINKS_DESC"))),new obsidian_module.Setting(t).setName(t$d("ADJACENT_PANE_NAME")).setDesc(fragWithHTML(t$d("ADJACENT_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInAdjacentPane).onChange((async e=>{this.plugin.settings.openInAdjacentPane=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MAINWORKSPACE_PANE_NAME")).setDesc(fragWithHTML(t$d("MAINWORKSPACE_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInMainWorkspace).onChange((async e=>{this.plugin.settings.openInMainWorkspace=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(fragWithHTML(t$d("LINK_BRACKETS_NAME"))).setDesc(fragWithHTML(t$d("LINK_BRACKETS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showLinkBrackets).onChange((e=>{this.plugin.settings.showLinkBrackets=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("LINK_PREFIX_NAME")).setDesc(fragWithHTML(t$d("LINK_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.linkPrefix).onChange((e=>{this.plugin.settings.linkPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("URL_PREFIX_NAME")).setDesc(fragWithHTML(t$d("URL_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.urlPrefix).onChange((e=>{this.plugin.settings.urlPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("PARSE_TODO_NAME")).setDesc(fragWithHTML(t$d("PARSE_TODO_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.parseTODO).onChange((e=>{this.plugin.settings.parseTODO=e,r.setDisabled(!e),s.setDisabled(!e),this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("TODO_NAME")).setDesc(fragWithHTML(t$d("TODO_DESC"))).addText((e=>{r=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.todo).onChange((e=>{this.plugin.settings.todo=e,this.applySettingsUpdate(!0)}))})),r.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(t).setName(t$d("DONE_NAME")).setDesc(fragWithHTML(t$d("DONE_DESC"))).setDisabled(!this.plugin.settings.parseTODO).addText((e=>{s=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.done).onChange((e=>{this.plugin.settings.done=e,this.applySettingsUpdate(!0)}))})),s.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(t).setName(t$d("LINKOPACITY_NAME")).setDesc(fragWithHTML(t$d("LINKOPACITY_DESC"))).addSlider((e=>e.setLimits(0,1,.05).setValue(this.plugin.settings.linkOpacity).onChange((async e=>{o.innerText=` ${e.toString()}`,this.plugin.settings.linkOpacity=e,this.applySettingsUpdate(!0)})))).settingEl.createDiv("",(e=>{o=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.linkOpacity.toString()}`})),new obsidian_module.Setting(t).setName(t$d("HOVERPREVIEW_NAME")).setDesc(fragWithHTML(t$d("HOVERPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.hoverPreviewWithoutCTRL).onChange((async e=>{this.plugin.settings.hoverPreviewWithoutCTRL=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LINK_CTRL_CLICK_NAME")).setDesc(fragWithHTML(t$d("LINK_CTRL_CLICK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowCtrlClick).onChange((async e=>{this.plugin.settings.allowCtrlClick=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TRANSCLUSION_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_WRAP_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.forceWrap).onChange((async e=>{this.plugin.settings.forceWrap=e,this.applySettingsUpdate(!0)})))).descEl.innerHTML=`![[doc#^ref]]{number} ${t$d("TRANSCLUSION_WRAP_DESC")}`,new obsidian_module.Setting(t).setName(t$d("PAGE_TRANSCLUSION_CHARCOUNT_NAME")).setDesc(fragWithHTML(t$d("PAGE_TRANSCLUSION_CHARCOUNT_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.pageTransclusionCharLimit.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.pageTransclusionCharLimit=10,void this.applySettingsUpdate(!0);this.plugin.settings.pageTransclusionCharLimit=A,e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("TRANSCLUSION_DEFAULT_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_DEFAULT_WRAP_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.wordWrappingDefault.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.wordWrappingDefault.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.wordWrappingDefault=0,void this.applySettingsUpdate(!0);this.plugin.settings.wordWrappingDefault=A,e.setValue(this.plugin.settings.wordWrappingDefault.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("QUOTE_TRANSCLUSION_REMOVE_NAME")).setDesc(fragWithHTML(t$d("QUOTE_TRANSCLUSION_REMOVE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.removeTransclusionQuoteSigns).onChange((e=>{this.plugin.settings.removeTransclusionQuoteSigns=e,this.requestEmbedUpdate=!0,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("GET_URL_TITLE_NAME")).setDesc(fragWithHTML(t$d("GET_URL_TITLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.iframelyAllowed).onChange((async e=>{this.plugin.settings.iframelyAllowed=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("MD_HEAD")}),this.containerEl.createEl("p",{text:t$d("MD_HEAD_DESC")}),new obsidian_module.Setting(t).setName(t$d("MD_TRANSCLUDE_WIDTH_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_WIDTH_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 500").setValue(this.plugin.settings.mdSVGwidth.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.mdSVGwidth.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.mdSVGwidth=500,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGwidth=A,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGwidth.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("MD_TRANSCLUDE_HEIGHT_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_HEIGHT_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 800").setValue(this.plugin.settings.mdSVGmaxHeight.toString()).onChange((async t=>{const A=parseInt(t);if(isNaN(A)&&""!==t)e.setValue(this.plugin.settings.mdSVGmaxHeight.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.mdSVGmaxHeight=800,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGmaxHeight=A,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGmaxHeight.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_FONT_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),e.addOption("Cascadia","Cascadia"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2"].contains(e.extension))).forEach((t=>{e.addOption(t.path,t.name)})),e.setValue(this.plugin.settings.mdFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFont=e,this.applySettingsUpdate(!0)}))})),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdFontColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFontColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_BORDER_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_BORDER_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdBorderColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdBorderColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("MD_CSS_NAME")).setDesc(fragWithHTML(t$d("MD_CSS_DESC"))).addText((e=>e.setPlaceholder("filename of css file in vault").setValue(this.plugin.settings.mdCSS).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdCSS=e,this.applySettingsUpdate(!0)})))),this.containerEl.createEl("h1",{text:t$d("EMBED_HEAD")}),new obsidian_module.Setting(t).setName(t$d("EMBED_PREVIEW_SVG_NAME")).setDesc(fragWithHTML(t$d("EMBED_PREVIEW_SVG_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.displaySVGInPreview).onChange((async e=>{this.plugin.settings.displaySVGInPreview=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EMBED_REUSE_EXPORTED_IMAGE_NAME")).setDesc(fragWithHTML(t$d("EMBED_REUSE_EXPORTED_IMAGE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.displayExportedImageIfAvailable).onChange((async e=>{this.plugin.settings.displayExportedImageIfAvailable=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("PREVIEW_MATCH_OBSIDIAN_NAME")).setDesc(fragWithHTML(t$d("PREVIEW_MATCH_OBSIDIAN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.previewMatchObsidianTheme).onChange((async e=>{this.plugin.settings.previewMatchObsidianTheme=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EMBED_WIDTH_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIDTH_DESC"))).addText((e=>e.setPlaceholder("400").setValue(this.plugin.settings.width).onChange((async e=>{this.plugin.settings.width=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(t).setName(t$d("EMBED_TYPE_NAME")).setDesc(fragWithHTML(t$d("EMBED_TYPE_DESC"))).addDropdown((async e=>{l=e,l.addOption("excalidraw","excalidraw"),this.plugin.settings.autoexportPNG?l.addOption("PNG","PNG"):"PNG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),this.plugin.settings.autoexportSVG?l.addOption("SVG","SVG"):"SVG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),l.setValue(this.plugin.settings.embedType).onChange((async e=>{this.plugin.settings.embedType=e,this.applySettingsUpdate()}))})),new obsidian_module.Setting(t).setName(t$d("EMBED_WIKILINK_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIKILINK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedWikiLink).onChange((async e=>{this.plugin.settings.embedWikiLink=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_PNG_SCALE_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_SCALE_DESC"))).addSlider((e=>e.setLimits(1,5,.5).setValue(this.plugin.settings.pngExportScale).onChange((async e=>{c.innerText=` ${e.toString()}`,this.plugin.settings.pngExportScale=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{c=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.pngExportScale.toString()}`})),new obsidian_module.Setting(t).setName(t$d("EXPORT_BACKGROUND_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BACKGROUND_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithBackground).onChange((async e=>{this.plugin.settings.exportWithBackground=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_PADDING_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PADDING_DESC"))).addSlider((e=>e.setLimits(0,50,5).setValue(this.plugin.settings.exportPaddingSVG).onChange((async e=>{d.innerText=` ${e.toString()}`,this.plugin.settings.exportPaddingSVG=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{d=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.exportPaddingSVG.toString()}`})),new obsidian_module.Setting(t).setName(t$d("EXPORT_THEME_NAME")).setDesc(fragWithHTML(t$d("EXPORT_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithTheme).onChange((async e=>{this.plugin.settings.exportWithTheme=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),this.containerEl.createEl("h1",{text:t$d("EXPORT_HEAD")}),new obsidian_module.Setting(t).setName(t$d("EXPORT_SYNC_NAME")).setDesc(fragWithHTML(t$d("EXPORT_SYNC_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.keepInSync).onChange((async e=>{this.plugin.settings.keepInSync=e,this.applySettingsUpdate()}))));const h=e=>{let t=0;for(t=0;te.setValue(this.plugin.settings.autoexportSVG).onChange((async e=>{e?l.addOption("SVG","SVG"):("SVG"===this.plugin.settings.embedType&&(l.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),h("SVG")),this.plugin.settings.autoexportSVG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_PNG_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportPNG).onChange((async e=>{e?l.addOption("PNG","PNG"):("PNG"===this.plugin.settings.embedType&&(l.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),h("PNG")),this.plugin.settings.autoexportPNG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_BOTH_DARK_AND_LIGHT_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BOTH_DARK_AND_LIGHT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoExportLightAndDark).onChange((async e=>{this.plugin.settings.autoExportLightAndDark=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("COMPATIBILITY_HEAD")}),new obsidian_module.Setting(t).setName(t$d("COMPATIBILITY_MODE_NAME")).setDesc(fragWithHTML(t$d("COMPATIBILITY_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compatibilityMode).onChange((async e=>{this.plugin.settings.compatibilityMode=e,n.innerHTML=i(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("EXPORT_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportExcalidraw).onChange((async e=>{this.plugin.settings.autoexportExcalidraw=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("SYNC_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("SYNC_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.syncExcalidraw).onChange((async e=>{this.plugin.settings.syncExcalidraw=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h1",{text:t$d("NONSTANDARD_HEAD")}),this.containerEl.createEl("p",{text:t$d("NONSTANDARD_DESC")}),new obsidian_module.Setting(t).setName(t$d("CUSTOM_PEN_NAME")).setDesc(t$d("CUSTOM_PEN_DESC")).addDropdown((e=>e.addOption("0","0").addOption("1","1").addOption("2","2").addOption("3","3").addOption("4","4").addOption("5","5").addOption("6","6").addOption("7","7").addOption("8","8").addOption("9","9").addOption("10","10").setValue(this.plugin.settings.numberOfCustomPens.toString()).onChange((e=>{this.plugin.settings.numberOfCustomPens=parseInt(e),this.requestUpdatePinnedPens=!0,this.applySettingsUpdate(!1)})))),new obsidian_module.Setting(t).setName(t$d("ENABLE_FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("ENABLE_FOURTH_FONT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalEnableFourthFont).onChange((async e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimentalEnableFourthFont=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("FOURTH_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2"].contains(e.extension))).forEach((t=>{e.addOption(t.path,t.name)})),e.setValue(this.plugin.settings.experimantalFourthFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimantalFourthFont=e,this.applySettingsUpdate(!0),this.plugin.initializeFourthFont()}))})),this.containerEl.createEl("h1",{text:t$d("EXPERIMENTAL_HEAD")}),this.containerEl.createEl("p",{text:t$d("EXPERIMENTAL_DESC")}),new obsidian_module.Setting(t).setName(t$d("MATHJAX_NAME")).setDesc(t$d("MATHJAX_DESC")).addDropdown((e=>{e.addOption("https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js","jsdelivr").addOption("https://unpkg.com/mathjax@3.2.1/es5/tex-svg.js","unpkg").addOption("https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.1/es5/tex-svg-full.min.js","cdnjs").setValue(this.plugin.settings.mathjaxSourceURL).onChange((e=>{this.plugin.settings.mathjaxSourceURL=e,this.reloadMathJax=!0,this.applySettingsUpdate()}))})),new obsidian_module.Setting(t).setName(t$d("LATEX_DEFAULT_NAME")).setDesc(fragWithHTML(t$d("LATEX_DEFAULT_DESC"))).addText((e=>e.setValue(this.plugin.settings.latexBoilerplate).onChange((e=>{this.plugin.settings.latexBoilerplate=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FIELD_SUGGESTER_NAME")).setDesc(fragWithHTML(t$d("FIELD_SUGGESTER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.fieldSuggester).onChange((async e=>{this.plugin.settings.fieldSuggester=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILETYPE_NAME")).setDesc(fragWithHTML(t$d("FILETYPE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalFileType).onChange((async e=>{this.plugin.settings.experimentalFileType=e,this.plugin.experimentalFileTypeDisplayToggle(e),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILETAG_NAME")).setDesc(fragWithHTML(t$d("FILETAG_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.experimentalFileTag).onChange((async e=>{this.plugin.settings.experimentalFileTag=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LIVEPREVIEW_NAME")).setDesc(fragWithHTML(t$d("LIVEPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalLivePreview).onChange((async e=>{this.plugin.settings.experimentalLivePreview=e,this.applySettingsUpdate()})))),this.containerEl.createEl("h2",{text:t$d("TASKBONE_HEAD")}),this.containerEl.createEl("p",{text:t$d("TASKBONE_DESC")}),new obsidian_module.Setting(t).setName(t$d("TASKBONE_ENABLE_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_ENABLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.taskboneEnabled).onChange((async e=>{if(u.setDisabled(!e),this.plugin.settings.taskboneEnabled=e,""===this.plugin.settings.taskboneAPIkey){const e=await this.plugin.taskbone.initialize(!1);e&&u.setValue(e)}this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TASKBONE_APIKEY_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_APIKEY_DESC"))).addText((e=>{u=e,u.setValue(this.plugin.settings.taskboneAPIkey).onChange((async e=>{this.plugin.settings.taskboneAPIkey=e,this.applySettingsUpdate()})).setDisabled(!this.plugin.settings.taskboneEnabled)}));const g=null===(e=this.plugin.scriptEngine.getListofScripts())||void 0===e?void 0:e.map((e=>this.plugin.scriptEngine.getScriptName(e)));if(Object.keys(this.plugin.settings.scriptEngineSettings).length>0&&g){const e=(e,t)=>{const A=this.plugin.settings.scriptEngineSettings[e][t];return"object"==typeof A?A.height:null},A=(e,t)=>{const A=this.plugin.settings.scriptEngineSettings[e][t];return"object"==typeof A?A.value:A},i=(e,t,A)=>{"object"==typeof this.plugin.settings.scriptEngineSettings[e][t]?this.plugin.settings.scriptEngineSettings[e][t].value=A:this.plugin.settings.scriptEngineSettings[e][t]=A},n=(e,n,a)=>{new obsidian_module.Setting(t).setName(n).setDesc(fragWithHTML(null!=a?a:"")).addToggle((t=>t.setValue(A(e,n)).onChange((async t=>{i(e,n,t),this.applySettingsUpdate()}))))},a=(n,a,r,s)=>{s&&"[object Array]"===Object.prototype.toString.call(s)&&s.length>0?new obsidian_module.Setting(t).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addDropdown((e=>{s.forEach((t=>e.addOption(t.toString(),t.toString()))),e.setValue(A(n,a)).onChange((async e=>{i(n,a,e),this.applySettingsUpdate()}))})):e(n,a)?new obsidian_module.Setting(t).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addTextArea((t=>{t.inputEl.style.minHeight=e(n,a),t.inputEl.style.minWidth="400px",t.setValue(A(n,a)).onChange((async e=>{i(n,a,e),this.applySettingsUpdate()}))})):new obsidian_module.Setting(t).setName(a).setDesc(fragWithHTML(null!=r?r:"")).addText((e=>e.setValue(A(n,a)).onChange((async e=>{i(n,a,e),this.applySettingsUpdate()}))))},r=(e,n,a)=>{new obsidian_module.Setting(t).setName(n).setDesc(fragWithHTML(null!=a?a:"")).addText((t=>t.setPlaceholder("Enter a number").setValue(A(e,n).toString()).onChange((async a=>{const r=parseFloat(a);isNaN(r)&&""!==a?t.setValue(A(e,n).toString()):(i(e,n,isNaN(r)?0:r),this.applySettingsUpdate())}))))};this.containerEl.createEl("h1",{text:t$d("SCRIPT_SETTINGS_HEAD")}),Object.keys(this.plugin.settings.scriptEngineSettings).filter((e=>g.contains(e))).forEach((e=>{const t=this.plugin.settings.scriptEngineSettings[e],A=Object.values(t);0===A.length||A.length>0&&0===A.map((e=>e.hidden?0:1)).reduce(((e,t)=>e+t))||(this.containerEl.createEl("h3",{text:e}),Object.keys(t).forEach((A=>{var i;const s=t[A];switch(typeof(null!==(i=s.value)&&void 0!==i?i:s)){case"boolean":s.hidden||n(e,A,s.description);break;case"string":s.hidden||a(e,A,s.description,s.valueset);break;case"number":s.hidden||r(e,A,s.description)}})))}))}}}var openDialogAction;!function(e){e[e.openFile=0]="openFile",e[e.insertLinkToDrawing=1]="insertLinkToDrawing"}(openDialogAction||(openDialogAction={}));class OpenFileDialog extends obsidian_module.FuzzySuggestModal{constructor(e,t){super(e),this.app=e,this.action=openDialogAction.openFile,this.plugin=t,this.onNewPane=!1,this.limit=20,this.setInstructions([{command:t$d("TYPE_FILENAME"),purpose:""}]),this.inputEl.onkeyup=e=>{"Enter"==e.key&&this.action==openDialogAction.openFile&&this.containerEl.innerText.includes(EMPTY_MESSAGE)&&(this.plugin.createAndOpenDrawing(`${this.plugin.settings.folder}/${this.inputEl.value}.excalidraw.md`,this.onNewPane?"new-pane":"active-pane"),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){switch(this.action){case openDialogAction.openFile:this.plugin.openDrawing(e,this.onNewPane?"new-pane":"active-pane",!0);break;case openDialogAction.insertLinkToDrawing:this.plugin.embedDrawing(e)}}start(e,t){switch(this.action=e,this.onNewPane=t,e){case openDialogAction.openFile:this.emptyStateText=EMPTY_MESSAGE,this.setPlaceholder(t$d("SELECT_FILE_OR_TYPE_NEW"));break;case openDialogAction.insertLinkToDrawing:this.emptyStateText=t$d("NO_MATCH"),this.setPlaceholder(t$d("SELECT_TO_EMBED"))}this.open()}}class InsertLinkDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e),this.app=e,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_FILE_TO_LINK")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return this.app.metadataCache.getLinkSuggestions().filter((e=>!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path+(e.alias?`|${e.alias}`:"")}onChooseItem(e){let t=e.path;e.file&&(t=this.app.metadataCache.fileToLinktext(e.file,this.drawingPath,!0)),this.addText(`[[${t+(e.alias?`|${e.alias}`:"")}]]`)}start(e,t){this.addText=t,this.drawingPath=e,this.open()}}class InsertImageDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE_WITH_OPTION_TO_SCALE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH"),this.inputEl.onkeyup=e=>{"Enter"===e.key&&scaleToFullsizeModifier(e)&&this.chooser.values&&(this.onChooseItem(this.chooser.values[this.chooser.selectedItem].item,new KeyboardEvent("keypress",{shiftKey:!0,metaKey:!(DEVICE.isIOS||DEVICE.isMacOS),ctrlKey:DEVICE.isIOS||DEVICE.isMacOS})),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>(IMAGE_TYPES.contains(e.extension)||this.plugin.isExcalidrawFile(e))&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}onChooseItem(e,t){const A=this.plugin.ea.getAPI(this.view);A.canvas.theme=this.view.excalidrawAPI.getAppState().theme;const i=scaleToFullsizeModifier(t);(async()=>{await A.addImage(0,0,e,!i),A.addElementsToView(!0,!1,!0)})()}start(e){this.view=e,this.open()}}class ImportSVGDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"svg"===e.extension&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}async onChooseItem(e,t){if(!e)return;const A=this.plugin.ea;A.reset(),A.setView(this.view);const i=await app.vault.read(e);i&&""!==i&&(A.importSVG(i),A.addElementsToView(!0,!0,!0))}start(e){this.view=e,this.open()}}class InsertMDDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_MD")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"md"===e.extension&&!this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){const t=this.plugin.ea;t.reset(),t.setView(this.view),(async()=>{await t.addImage(0,0,e),t.addElementsToView(!0,!1,!0)})()}start(e){this.view=e,this.open()}}function around(e,t){const A=Object.keys(t).map((A=>around1(e,A,t[A])));return 1===A.length?A[0]:function(){A.forEach((e=>e()))}}function around1(e,t,A){const i=e[t],n=e.hasOwnProperty(t);let a=A(i);return i&&Object.setPrototypeOf(a,i),Object.setPrototypeOf(r,a),e[t]=r,s;function r(...A){return a===i&&e[t]===r&&s(),a.apply(this,A)}function s(){e[t]===r&&(n?e[t]=i:delete e[t]),a!==i&&(a=i,Object.setPrototypeOf(r,i||Function))}}let plugin,vault,metadataCache;const getDefaultWidth=e=>{const t=parseInt(e.settings.width);return isNaN(t)||0===t||null===t?"400":e.settings.width},initializeMarkdownPostProcessor=e=>{plugin=e,vault=e.app.vault,metadataCache=e.app.metadataCache},getIMG=async(e,t=!1)=>{var A;let i=e.file;if(!e.file){const t=vault.getAbstractFileByPath(null===(A=e.fname)||void 0===A?void 0:A.split("#")[0]);if(!(t&&t instanceof obsidian_module.TFile))return null;i=t}const n=getEmbeddedFilenameParts(e.fname);e.style=e.style.replaceAll(" ","-");const a=hasExportTheme(plugin,i)?getExportTheme(plugin,i,"light"):void 0,r={withBackground:getWithBackground(plugin,i),withTheme:!!a||plugin.settings.exportWithTheme},s=createEl("img");let o=`max-width:${e.fwidth}${e.fwidth.match(/\d$/)?"px":""}; `;e.fheight&&(o+=`height:${e.fheight}px;`),t||s.setAttribute("style",o),s.addClass(e.style),s.addClass("excalidraw-embedded-img");const l=null!=a?a:plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":plugin.settings.exportWithTheme?void 0:"light";l&&(r.withTheme=!0);const c=new EmbeddedFilesLoader(plugin,l?"dark"===l:void 0);if(!plugin.settings.displaySVGInPreview){const t=parseInt(e.fwidth),A=t>=2400?5:t>=1800?4:t>=1200?3:t>=600?2:1,a=n.hasGroupref?void 0:await getQuickImagePreview(plugin,i.path,"png"),o=null!=a?a:await createPNG(n.hasGroupref?n.filepath+n.linkpartReference:i.path,A,r,c,l,null,null,[],plugin,0);return o?(s.src=URL.createObjectURL(o),s):null}if(!n.hasBlockref&&!n.hasSectionref){const e=await getQuickImagePreview(plugin,i.path,"svg");if(e)return s.setAttribute("src",svgToBase64(e)),s}const d=(await createSVG(n.hasGroupref||n.hasBlockref||n.hasSectionref?n.filepath+n.linkpartReference:i.path,!0,r,c,l,null,null,[],plugin,0,getExportPadding(plugin,i))).outerHTML;let h=null;const u=document.createElement("div");u.innerHTML=d;const g=u.firstChild;return g instanceof SVGSVGElement&&(h=g),h?(h=embedFontsInSVG(h,plugin),h.removeAttribute("width"),h.removeAttribute("height"),s.setAttribute("src",svgToBase64(h.outerHTML)),s):null},createImgElement=async(e,t=!1)=>{const A=await getIMG(e,t);let i;A.setAttribute("fileSource",e.fname),e.fwidth&&A.setAttribute("w",e.fwidth),e.fheight&&A.setAttribute("h",e.fheight),A.setAttribute("draggable","false"),A.setAttribute("onCanvas",t?"true":"false");const n=e=>{if(e.target instanceof Element&&"img"!=e.target.tagName.toLowerCase())return;const t=A.getAttribute("fileSource");if(t){const A=t.match(/([^#]*)(.*)/);if(!A)return;plugin.openDrawing(vault.getAbstractFileByPath(A[1]),linkClickModifierType(e),!0,A[2])}};let a;return A.addEventListener("pointermove",(e=>{i&&(Math.abs(e.screenX-a.screenX)>10||Math.abs(e.screenY-a.screenY)>10)&&(clearTimeout(i),i=null)})),A.addEventListener("pointerdown",(e=>{var t;(null===(t=null==A?void 0:A.parentElement)||void 0===t?void 0:t.hasClass("canvas-node-content"))||(i=setTimeout((()=>n(e)),500),a=e)})),A.addEventListener("pointerup",(()=>{i&&clearTimeout(i),i=null})),A.addEventListener("dblclick",n),A.addEventListener(RERENDER_EVENT,(async e=>{e.stopPropagation();const t=A.parentElement,i=A.style.maxWidth,n=A.style.maxHeight,a=A.getAttribute("fileSource"),r="true"===A.getAttribute("onCanvas"),s=await createImgElement({fname:a,fwidth:A.getAttribute("w"),fheight:A.getAttribute("h"),style:A.getAttribute("class")},r);t.empty(),r||(s.style.maxHeight=n,s.style.maxWidth=i),s.setAttribute("fileSource",a),t.append(s)})),A},createImageDiv=async(e,t=!1)=>{const A=await createImgElement(e,t);return createDiv(e.style,(e=>e.append(A)))},processReadingMode=async(e,t)=>{var A;for(const i of e){const e=null===(A=i.getAttribute("src"))||void 0===A?void 0:A.split("#")[0];if(!e)continue;const n=metadataCache.getFirstLinkpathDest(e,t.sourcePath);if(n&&n instanceof obsidian_module.TFile&&plugin.isExcalidrawFile(n)){if(isTextOnlyEmbed(i))continue;i.parentElement.replaceChild(await processInternalEmbed(i,n),i)}}},processInternalEmbed=async(e,t)=>{const A={fname:"",fheight:"",fwidth:"",style:""},i=e.getAttribute("src");if(!i)return;e.removeClass("markdown-embed"),e.removeClass("inline-embed"),e.addClass("media-embed"),e.addClass("image-embed"),A.fwidth=e.getAttribute("width")?e.getAttribute("width"):getDefaultWidth(plugin),A.fheight=e.getAttribute("height");let n=e.getAttribute("alt");A.style="excalidraw-svg",processAltText(i.split("#")[0],n,A);const a=getEmbeddedFilenameParts(i);return A.fname=(null==t?void 0:t.path)+(a.hasBlockref||a.hasSectionref?a.linkpartReference:""),A.file=t,await createImageDiv(A)},processAltText=(e,t,A)=>{var i,n;if(t&&!t.startsWith(e)){const a=t.match(/[^\|\d]*\|?((\d*%?)x?(\d*%?))?\|?(.*)/);A.fwidth=null!==(i=a[2])&&void 0!==i?i:A.fwidth,A.fheight=null!==(n=a[3])&&void 0!==n?n:A.fheight,a[4]&&!a[4].startsWith(e)&&(A.style=`excalidraw-svg-${a[4]}`),a[4]&&""!==a[4]||a[2]&&""!==a[2]||!a[0]||""===a[0]||(A.style=`excalidraw-svg-${a[0]}`)}},isTextOnlyEmbed=e=>{const t=e.getAttribute("src");if(!t)return!0;const A=getEmbeddedFilenameParts(t);return!(A.hasArearef||A.hasGroupref)&&(A.hasBlockref||A.hasSectionref)},tmpObsidianWYSIWYG=async(e,t)=>{const A=app.vault.getAbstractFileByPath(t.sourcePath);if(!(A instanceof obsidian_module.TFile))return;if(!plugin.isExcalidrawFile(A))return;if(t.remainingNestLevel<4)return;const i=t.containerEl;let n=i;for(;!n.hasClass("dataview")&&!n.hasClass("cm-preview-code-block")&&!n.hasClass("cm-embed-block")&&!n.hasClass("internal-embed")&&!n.hasClass("markdown-reading-view")&&!n.hasClass("markdown-embed")&&n.parentElement;)n=n.parentElement;if(n.hasClass("dataview")||n.hasClass("cm-preview-code-block")||n.hasClass("cm-embed-block"))return;const a={fname:t.sourcePath,fheight:"",fwidth:getDefaultWidth(plugin),style:"excalidraw-svg"};a.file=A;const r=n.hasClass("markdown-embed"),s=n.hasClass("markdown-reading-view");if(!n.hasClass("internal-embed")&&(r||s)){const t=Boolean(e.querySelector(".frontmatter"));if(e.empty(),!t)return void(e.parentElement===i&&i.removeChild(e));n.empty();const A=n.hasClass("canvas-node-content"),s=await createImageDiv(a,A);return r?(n.removeClass("markdown-embed"),n.removeClass("inline-embed"),n.addClass("media-embed"),n.addClass("image-embed"),!A&&s.firstChild instanceof HTMLElement&&(s.firstChild.style.maxHeight="100%",s.firstChild.style.maxWidth=null),void n.appendChild(s.firstChild)):void n.appendChild(s)}if(isTextOnlyEmbed(n))return;if(e.empty(),n.hasAttribute("ready"))return;n.setAttribute("ready",""),n.empty();const o=await processInternalEmbed(n,A);n.appendChild(o);let l=null;const c=new MutationObserver((e=>{var t;["alt","width","height"].contains(null===(t=e[0])||void 0===t?void 0:t.attributeName)&&(l&&clearTimeout(l),l=setTimeout((async()=>{l=null,n.empty();const e=await processInternalEmbed(n,A);n.appendChild(e)}),500))}));c.observe(n,{attributes:!0})},markdownPostProcessor=async(e,t)=>{var A;const i=e.querySelectorAll(".internal-embed");0!==i.length?Boolean(null===(A=t.frontmatter)||void 0===A?void 0:A.hasOwnProperty("excalidraw-plugin"))?e.style.display="none":await processReadingMode(i,t):tmpObsidianWYSIWYG(e,t)},hoverEvent=e=>{e.linktext?(plugin.hover.linkText=e.linktext,plugin.hover.sourcePath=e.sourcePath):plugin.hover.linkText=null},observer=new MutationObserver((async e=>{if(0==e.length)return;if(!plugin.hover.linkText)return;const t=metadataCache.getFirstLinkpathDest(plugin.hover.linkText,plugin.hover.sourcePath?plugin.hover.sourcePath:"");if(!t)return;if(!(t instanceof obsidian_module.TFile))return;if("excalidraw"!==t.extension)return;const A=getIMGFilename(t.path,"svg"),i=vault.getAbstractFileByPath(A);if(i&&i instanceof obsidian_module.TFile)return;const n=getIMGFilename(t.path,"png"),a=vault.getAbstractFileByPath(n);if(a&&a instanceof obsidian_module.TFile)return;if(!plugin.hover.linkText)return;if(1!=e.length)return;if(1!=e[0].addedNodes.length)return;if("popover hover-popover file-embed is-loaded"!=!e[0].addedNodes[0].classNames)return;const r=e[0].addedNodes[0];r.empty();const s=await getIMG({file:t,fname:t.path,fwidth:"300",fheight:null,style:"excalidraw-svg"}),o=createDiv("",(async e=>{e.appendChild(s),e.setAttribute("src",t.path),e.onClickEvent((t=>{t.stopImmediatePropagation();const A=e.getAttribute("src");A&&plugin.openDrawing(vault.getAbstractFileByPath(A),linkClickModifierType(t))}))}));r.appendChild(o)})),EXCALIDRAW_AUTOMATE_INFO=[{field:"plugin",code:null,desc:"The ExcalidrawPlugin object",after:""},{field:"elementsDict",code:null,desc:"The {} dictionary object, contains the ExcalidrawElements currently edited in Automate indexed by el.id",after:'[""]'},{field:"imagesDict",code:null,desc:"the images files including DataURL, indexed by fileId",after:'[""]'},{field:"style.strokeColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.backgroundColor",code:"[string]",desc:"A valid css color. See W3 School Colors for more.",after:""},{field:"style.angle",code:"[number]",desc:"Rotation of the object in radian",after:""},{field:"style.fillStyle",code:"[string]",desc:"'hachure' | 'cross-hatch' | 'solid'",after:""},{field:"style.strokeWidth",code:"[number]",desc:null,after:""},{field:"style.strokeStyle",code:"[string]",desc:"'solid' | 'dashed' | 'dotted'",after:""},{field:"style.roughness",code:"[number]",desc:"0:Architect\n1:Artist\n2:Cartoonist",after:""},{field:"style.opacity",code:"[number]",desc:"100: Fully opaque\n0: Fully transparent",after:""},{field:"style.roundness",code:"[null | { type: RoundnessType; value?: number };]",desc:"set to null for 'sharp', else the stroke will be 'round'
type: 1==LEGACY,
2==PROPORTIONAL RADIUS,
3==ADAPTIVE RADIUS, value: adaptive factor defaults to 32",after:""},{field:"style.fontFamily",code:"[number]",desc:"1: Virgil, 2:Helvetica, 3:Cascadia, 4:LocalFont",after:""},{field:"style.fontSize",code:"[number]",desc:null,after:""},{field:"style.textAlign",code:"[string]",desc:"'left' | 'right' | 'center'",after:""},{field:"style.verticalAlign",code:"[string]",desc:"For future use, has no effect currently; 'top' | 'bottom' | 'middle'",after:""},{field:"style.startArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"style.endArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"canvas.theme",code:"[string]",desc:"'dark' | 'light'",after:""},{field:"canvas.viewBackgroundColor",code:"[string]",desc:"A valid css color.\nSee W3 School Colors for more.",after:""},{field:"canvas.gridSize",code:"[number]",desc:null,after:""},{field:"setStrokeSharpness",code:"setStrokeSharpness(sharpness: number): void;",desc:"Set ea.style.roundness. 0: is the legacy value, 3: is the current default value, null is sharp",after:""},{field:"addToGroup",code:"addToGroup(objectIds: []): string;",desc:null,after:""},{field:"toClipboard",code:"toClipboard(templatePath?: string): void;",desc:"Copies current elements using template to clipboard, ready to be pasted into an excalidraw canvas",after:""},{field:"getSceneFromFile",code:"async getSceneFromFile(file: TFile): Promise<{elements: ExcalidrawElement[]; appState: AppState;}>;",desc:"returns the elements and appState from a file, if the file is not an excalidraw file, it will return null",after:""},{field:"getElements",code:"getElements(): ExcalidrawElement[];",desc:"Get all elements from ExcalidrawAutomate elementsDict",after:""},{field:"getElement",code:"getElement(id: string): ExcalidrawElement;",desc:"Get single element from ExcalidrawAutomate elementsDict",after:""},{field:"create",code:'create(params?: {filename?: string, foldername?: string, templatePath?: string, onNewPane?: boolean, frontmatterKeys?: { "excalidraw-plugin"?: "raw" | "parsed", "excalidraw-link-prefix"?: string, "excalidraw-link-brackets"?: boolean, "excalidraw-url-prefix"?: string,},}): Promise;',desc:"Create a drawing and save it to filename.\nIf filename is null: default filename as defined in Excalidraw settings.\nIf folder is null: default folder as defined in Excalidraw settings\n",after:""},{field:"createSVG",code:"createSVG(templatePath?: string, embedFont?: boolean, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"createPNG",code:"createPNG(templatePath?: string, scale?: number, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"wrapText",code:"wrapText(text: string, lineLen: number): string;",desc:null,after:""},{field:"addRect",code:"addRect(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addDiamond",code:"addDiamond(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addEllipse",code:"addEllipse(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addBlob",code:"addBlob(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"refreshTextElementSize",code:"refreshTextElementSize(id: string);",desc:"Refreshes the size of the text element. Intended to be used when you copyViewElementsToEAforEditing() and then change the text in a text element and want to update the size of the text element to fit the modifid contents.",after:""},{field:"addText",code:'addText(topX: number, topY: number, text: string, formatting?: {wrapAt?: number; width?: number; height?: number; textAlign?: "left" | "center" | "right"; textVerticalAlign: "top" | "middle" | "bottom"; box?: boolean | "box" | "blob" | "ellipse" | "diamond"; boxPadding?: number; boxStrokeColor?: string;}, id?: string,): string;',desc:"If box is !null, then text will be boxed\nThe function returns the id of the TextElement. If the text element is boxed i.e. it is a sticky note, then the id of the container object",after:""},{field:"addLine",code:"addLine(points: [[x: number, y: number]]): string;",desc:null,after:""},{field:"addArrow",code:"addArrow(points: [[x: number, y: number]], formatting?: { startArrowHead?: string; endArrowHead?: string; startObjectId?: string; endObjectId?: string;},): string;",desc:null,after:""},{field:"addImage",code:"addImage(topX: number, topY: number, imageFile: TFile, scale: boolean): Promise;",desc:"set scale to false if you want to embed the image at 100% of its original size. Default is true which will insert a scaled image",after:""},{field:"addLaTex",code:"addLaTex(topX: number, topY: number, tex: string): Promise;",desc:null,after:""},{field:"connectObjects",code:"connectObjects(objectA: string, connectionA: ConnectionPoint, objectB: string, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): string;",desc:'type ConnectionPoint = "top" | "bottom" | "left" | "right" | null\nWhen null is passed as ConnectionPoint then Excalidraw will automatically decide\nnumberOfPoints is the number of points on the line. Default is 0 i.e. line will only have a start and end point.\nArrowHead: "triangle"|"dot"|"arrow"|"bar"|null',after:""},{field:"addLabelToLine",code:"addLabelToLine(lineId: string, label: string): string;",desc:"Adds a text label to a line or arrow. Currently only works with a simple straight 2-point (start & end) line",after:""},{field:"clear",code:"clear(): void;",desc:"Clears elementsDict and imagesDict only",after:""},{field:"reset",code:"reset(): void;",desc:"clear() + reset all style values to default",after:""},{field:"isExcalidrawFile",code:"isExcalidrawFile(f: TFile): boolean;",desc:"Returns true if MD file is an Excalidraw file",after:""},{field:"targetView",code:"targetView: ExcalidrawView;",desc:"The Obsidian view currently edited",after:""},{field:"setView",code:'setView(view: ExcalidrawView | "first" | "active"): ExcalidrawView;',desc:null,after:""},{field:"getExcalidrawAPI",code:"getExcalidrawAPI(): any;",desc:"Excalidraw API",after:""},{field:"getViewElements",code:"getViewElements(): ExcalidrawElement[];",desc:"Get elements in View",after:""},{field:"deleteViewElements",code:"deleteViewElements(el: ExcalidrawElement[]): boolean;",desc:null,after:""},{field:"getViewSelectedElement",code:"getViewSelectedElement(): ExcalidrawElement;",desc:"Get the selected element in the view, if more are selected, get the first",after:""},{field:"getViewSelectedElements",code:"getViewSelectedElements(): ExcalidrawElement[];",desc:null,after:""},{field:"getViewFileForImageElement",code:"getViewFileForImageElement(el: ExcalidrawElement): TFile | null;",desc:"Returns the TFile file handle for the image element",after:""},{field:"copyViewElementsToEAforEditing",code:"copyViewElementsToEAforEditing(elements: ExcalidrawElement[]): void;",desc:"Copies elements from view to elementsDict for editing",after:""},{field:"viewToggleFullScreen",code:"viewToggleFullScreen(forceViewMode?: boolean): void;",desc:null,after:""},{field:"connectObjectWithViewSelectedElement",code:"connectObjectWithViewSelectedElement(objectA: string, connectionA: ConnectionPoint, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): boolean;",desc:"Connect an object to the selected element in the view\nSee tooltip for connectObjects for details",after:""},{field:"addElementsToView",code:"addElementsToView(repositionToCursor?: boolean, save?: boolean, newElementsOnTop?: boolean,): Promise;",desc:"Adds elements from elementsDict to the current view\nrepositionToCursor: default is false\nsave: default is true\nnewElementsOnTop: default is false, i.e. the new elements get to the bottom of the stack\nnewElementsOnTop controls whether elements created with ExcalidrawAutomate are added at the bottom of the stack or the top of the stack of elements already in the view\nNote that elements copied to the view with copyViewElementsToEAforEditing retain their position in the stack of elements in the view even if modified using EA",after:""},{field:"onDropHook",code:'onDropHook(data: {ea: ExcalidrawAutomate, event: React.DragEvent, draggable: any, type: "file" | "text" | "unknown", payload: {files: TFile[], text: string,}, excalidrawFile: TFile, view: ExcalidrawView, pointerPosition: { x: number, y: number},}): boolean;',desc:"If set Excalidraw will call this function onDrop events.\nA return of true will stop the default onDrop processing in Excalidraw.\n\ndraggable is the Obsidian draggable object\nfiles is the array of dropped files\nexcalidrawFile is the file receiving the drop event\nview is the excalidraw view receiving the drop.\npointerPosition is the pointer position on canvas at the time of drop.",after:""},{field:"mostRecentMarkdownSVG",code:"mostRecentMarkdownSVG: SVGSVGElement;",desc:"Markdown renderer will drop a copy of the most recent SVG here for debugging purposes",after:""},{field:"getEmbeddedFilesLoader",code:"getEmbeddedFilesLoader(isDark?: boolean): EmbeddedFilesLoader;",desc:"Utility function to generate EmbeddedFilesLoader object",after:""},{field:"getExportSettings",code:"getExportSettings(withBackground: boolean, withTheme: boolean,): ExportSettings;",desc:"Utility function to generate ExportSettings object",after:""},{field:"getBoundingBox",code:"getBoundingBox(elements: ExcalidrawElement[]): {topX: number, topY: number, width: number, height: number,};",desc:"Gets the bounding box of elements. The bounding box is the box encapsulating all of the elements completely.",after:""},{field:"getMaximumGroups",code:"getMaximumGroups(elements: ExcalidrawElement[]): ExcalidrawElement[][];",desc:"Elements grouped by the highest level groups",after:""},{field:"getLargestElement",code:"getLargestElement(elements: ExcalidrawElement[]): ExcalidrawElement;",desc:"Gets the largest element from a group. useful when a text element is grouped with a box, and you want to connect an arrow to the box",after:""},{field:"intersectElementWithLine",code:"intersectElementWithLine(element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], gap?: number,): Point[];",desc:"If gap is given, the element is inflated by this value.\nReturns 2 or 0 intersection points between line going through `a` and `b` and the `element`, in ascending order of distance from `a`.",after:""},{field:"getCommonGroupForElements",code:"getCommonGroupForElements(elements: ExcalidrawElement[]): string;",desc:"Gets the groupId for the group that contains all the elements, or null if such a group does not exist",after:""},{field:"getElementsInTheSameGroupWithElement",code:"getElementsInTheSameGroupWithElement(element: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];",desc:"Gets all the elements from elements[] that share one or more groupIds with element.",after:""},{field:"activeScript",code:"activeScript: string;",desc:"Mandatory to set before calling the get and set ScriptSettings functions. Set automatically by the ScriptEngine\nSee for more details: Script Engine Help",after:""},{field:"getScriptSettings",code:"getScriptSettings(): {};",desc:"Returns script settings. Saves settings in plugin settings, under the activeScript key. See for more details: Script Engine Help",after:""},{field:"setScriptSettings",code:"setScriptSettings(settings: any): Promise;",desc:"Sets script settings.\nSee for more details: Script Engine Help",after:""},{field:"openFileInNewOrAdjacentLeaf",code:"openFileInNewOrAdjacentLeaf(file: TFile): WorkspaceLeaf;",desc:"Open a file in a new workspaceleaf or reuse an existing adjacent leaf depending on Excalidraw Plugin Settings",after:""},{field:"measureText",code:"measureText(text: string): { width: number; height: number };",desc:"Measures text size based on current style settings",after:""},{field:"verifyMinimumPluginVersion",code:"verifyMinimumPluginVersion(requiredVersion: string): boolean;",desc:'Returns true if plugin version is >= than required\nrecommended use:\nif(!ea.verifyMinimumPluginVersion || !ea.verifyMinimumPluginVersion("1.5.20")) {new Notice("message");return;}',after:""},{field:"selectElementsInView",code:"selectElementsInView(elements: ExcalidrawElement[]):void;",desc:"Elements provided will be set as selected in the targetView.",after:""},{field:"generateElementId",code:"generateElementId(): string;",desc:"Returns an 8 character long random id",after:""},{field:"cloneElement",code:"cloneElement(element: ExcalidrawElement): ExcalidrawElement;",desc:"Returns a clone of the element with a new element id",after:""},{field:"moveViewElementToZIndex",code:"moveViewElementToZIndex(elementId:number, newZIndex:number): void;",desc:"Moves the element to a specific position in the z-index",after:""},{field:"hexStringToRgb",code:"hexStringToRgb(color: string):number[];",desc:"Converts a HEX color to an RGB number array. #FF0000 to [255,0,0]",after:""},{field:"rgbToHexString",code:"rgbToHexString(color: number[]):string;",desc:"Converts an RGB number array to a HEX string. [255,0,0] to #FF0000",after:""},{field:"hslToRgb",code:"hslToRgb(color: number[]):number[];",desc:"Converts an HSL number array to an RGB number array. [0,100,50] to [255,0,0]",after:""},{field:"rgbToHsl",code:"rgbToHsl(color:number[]):number[];",desc:"Converts an RGB number array to an HSL number array. [255,0,0] to [0,100,50]",after:""},{field:"colorNameToHex",code:"colorNameToHex(color:string):string;",desc:"Converts a CSS color name to its HEX color equivalent. 'White' to #FFFFFF",after:""},{field:"obsidian",code:"obsidian",desc:"Access functions and objects available on the Obsidian Module",after:""},{field:"setViewModeEnabled",code:"setViewModeEnabled(enabled: boolean): void;",desc:"Sets Excalidraw in the targetView to view-mode",after:""},{field:"viewUpdateScene",code:"viewUpdateScene(scene:{elements?:ExcalidrawElement[],appState?: AppState,files?: BinaryFileData,commitToHistory?: boolean,},restore:boolean=false):void",desc:"Calls the ExcalidrawAPI updateScene function for the targetView. When restore=true, excalidraw will try to correct errors in the scene such as setting default values to missing element properties.",after:""},{field:"viewZoomToElements",code:"viewZoomToElements(selectElements: boolean,elements: ExcalidrawElement[]):void",desc:"Zoom tarteView to fit elements provided as input. elements === [] will zoom to fit the entire scene. SelectElements toggles whether the elements should be in a selected state at the end of the operation.",after:""}],EXCALIDRAW_SCRIPTENGINE_INFO=[{field:"inputPrompt",code:"inputPrompt: (header: string, placeholder?: string, value?: string, buttons?: {caption:string, tooltip?:string, action:Function}[], lines?: number, displayEditorButtons?: boolean, customComponents?: (container: HTMLElement) => void, blockPointerInputOutsideModal?: boolean);",desc:"Opens a prompt that asks for an input.\nReturns a string with the input.\nYou need to await the result of inputPrompt.\nEditor buttons are text editing buttons like delete, enter, allcaps - these are only displayed if lines is greater than 1 \nCustom components are components that you can add to the prompt. These will be displayed between the text input area and the buttons.\nblockPointerInputOutsideModal will block pointer input outside the modal. This is useful if you want to prevent the user accidently closing the modal or interacting with the excalidraw canvas while the prompt is open.\nbuttons.action(input: string) => string\nThe button action function will receive the actual input string. If action returns null, input will be unchanged. If action returns a string, input will receive that value when the promise is resolved. example:\nlet fileType = '';\nconst filename = await utils.inputPrompt (\n 'Filename',\n '',\n '',\n, [\n {\n caption: 'Markdown',\n action: ()=>{fileType='md';return;}\n },\n {\n caption: 'Excalidraw',\n action: ()=>{fileType='ex';return;}\n }\n ]\n);",after:""},{field:"suggester",code:"suggester: (displayItems: string[], items: any[], hint?: string, instructions?:Instruction[]);",desc:"Opens a suggester. Displays the displayItems and returns the corresponding item from items[]\nYou need to await the result of suggester.\nIf the user cancels (ESC), suggester will return undefined\nHint and instructions are optional\n\ninterface Instruction {command: string;purpose: string;}",after:""},{field:"scriptFile",code:"scriptFile: TFile",desc:"The TFile of the currently running script",after:""}],FRONTMATTER_KEYS_INFO=[{field:"plugin",code:null,desc:"Denotes an excalidraw file. If key is not present, the file will not be recognized as an Excalidarw file. Valid values are 'parsed' and 'raw'",after:": parsed"},{field:"link-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid internal link. Set to empty string if you do not want to show a prefix",after:': "📍"'},{field:"url-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid external link. Set to empty string if you do not want to show a prefix",after:': "🌐"'},{field:"link-brackets",code:null,desc:"Set to true, if you want to display [[square brackets]] around the links in Text Elements",after:": true"},{field:"default-mode",code:null,desc:"Specifies how Excalidraw should open by default. Valid values are: view|zen",after:": view"},{field:"linkbutton-opacity",code:null,desc:"The opacity of the blue link button in the top right of the element overriding the respective setting in plugin settings. Valid values are between 0 and 1, where 0 means the button is transparent.",after:": 0.5"},{field:"onload-script",code:null,desc:"The value of this field will be executed as javascript code using the Script Engine environment. Use this to initiate custom actions or logic when loading your drawing.",after:': "new Notice(`Hello World!\\n\\nFile: ${ea.targetView.file.basename}`);"'},{field:"font",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: Virgil|Cascadia|font_file_name.extension",after:": Virgil"},{field:"font-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"border-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"css",code:null,desc:'This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this front matter keys to your markdown document. Valid values are: "css-filename|css snippet"',after:': ""'},{field:"export-transparent",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Transparent / false == with background",after:": true"},{field:"export-dark",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Dark mode / false == light mode",after:": true"},{field:"export-padding",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects both SVG and PNG export. Specify the export padding for the image.",after:": 5"},{field:"export-pngscale",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects export to PNG. Specify the export scale for the image. The typical range is between 0.5 and 5, but you can experiment with other values as well.",after:": 1"},{field:"autoexport",code:null,desc:"Override autoexport settings for this file. Valid values are\nnone\nboth\npng\nsvg",after:": png"}];class FieldSuggester extends obsidian_module.EditorSuggest{constructor(e){super(e.app),this.getSuggestions=e=>{const t=e.query.toLowerCase();return("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).map((e=>e.field)).filter((e=>e.toLowerCase().includes(t)))},this.plugin=e}onTrigger(e,t,A){var i,n,a,r,s;if(this.plugin.settings.fieldSuggester){const A=t.getLine(e.line).substring(0,e.ch),o=null!==(r=null!==(n=null===(i=A.match(/^excalidraw-(.*)$/))||void 0===i?void 0:i[1])&&void 0!==n?n:null===(a=A.match(/(^ea|\Wea)\.([\w\.]*)$/))||void 0===a?void 0:a[2])&&void 0!==r?r:null===(s=A.match(/(^utils|\Wutils)\.([\w\.]*)$/))||void 0===s?void 0:s[2];if(void 0!==o)return this.suggestType=A.match(/^excalidraw-(.*)$/)?"excalidraw":A.match(/(^ea|\Wea)\.([\w\.]*)$/)?"ea":"utils",this.latestTriggerInfo={end:e,start:{ch:e.ch-o.length,line:e.line},query:o},this.latestTriggerInfo}return null}renderSuggestion(e,t){const A=e.replace("ea"===this.suggestType?"ea.":"utils"===this.suggestType?"utils.":"excalidraw-",""),i=("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).find((t=>t.field===e));t.createEl("b",{text:A}),t.createEl("br"),i.code&&t.createEl("code",{text:i.code}),i.desc&&t.createDiv("div",(e=>e.innerHTML=i.desc))}selectSuggestion(e){var t;const{context:A}=this;if(A){const i="ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO,n=`${e}${null===(t=i.find((t=>t.field===e)))||void 0===t?void 0:t.after}`;if(A.editor.replaceRange(n,this.latestTriggerInfo.start,this.latestTriggerInfo.end),this.latestTriggerInfo.start.ch===this.latestTriggerInfo.end.ch){const e=this.latestTriggerInfo.end;e.ch+=n.length,A.editor.setCursor(e)}}}}class FrontmatterEditor{constructor(e){this.initialized=!1,this.dataWOfrontmatter=e;const t=(e=e.replaceAll("\r\n","\n").replaceAll("\r","\n")).split(/^---(?:.|\n)*(?:^---\n)/gm);2===t.length&&(this.dataWOfrontmatter=t[1],this.frontmatterStr=e.match(/^---((?:.|\n)*)(?:^---\n)/gm)[0].replaceAll(/(^---\n|^\n)/gm,"").trim()+"\n",this.initialized=!0)}hasKey(e){if(!this.initialized)return!1;const t=new RegExp(`^${e}:`,"gm");return Boolean(this.frontmatterStr.match(t))}setKey(e,t){if(this.initialized)if(t=t.replaceAll("\r\n","\n").replaceAll("\r","\n").replaceAll(":",";").trim().split("\n").join(" "),this.hasKey(e)){const A=new RegExp(`^${e}:.*\\n(?:\\s\\s.*\\n)*`,"gm");this.frontmatterStr=this.frontmatterStr.split(A).join("\n").trim()+`\n${e}: ${t}`}else this.frontmatterStr=this.frontmatterStr.trim()+`\n${e}: ${t}`}get data(){return this.initialized?["---",this.frontmatterStr,"---",this.dataWOfrontmatter].join("\n"):this.dataWOfrontmatter}}const TASKBONE_URL="https://api.taskbone.com/",TASKBONE_OCR_FN="execute?id=60f394af-85f6-40bc-9613-5d26dc283cbb";class Taskbone{get apiKey(){return this.plugin.settings.taskboneAPIkey}constructor(e){this.plugin=e}async initialize(e=!0){var t;if(""!==this.plugin.settings.taskboneAPIkey)return;const A=await obsidian_module.requestUrl({url:`${TASKBONE_URL}users/excalidraw-obsidian/identities`,method:"post",contentType:"application/json",throw:!1});if(!A)return;const i=null===(t=A.json)||void 0===t?void 0:t.apiKey;return i&&"string"==typeof i&&(e&&await this.plugin.loadSettings(),this.plugin.settings.taskboneAPIkey=i,e&&await this.plugin.saveSettings()),i}async getTextForView(e,t){await e.forceSave(!0);const A=e.excalidrawAPI.getSceneElements().filter((t=>{var A;return"freedraw"===t.type||"image"===t.type&&!this.plugin.isExcalidrawFile(null===(A=e.excalidrawData.getFile(t.fileId))||void 0===A?void 0:A.file)}));if(0===A.length)return void new obsidian_module.Notice("Aborting OCR because there are no image or freedraw elements on the canvas.",4e3);const i=new FrontmatterEditor(e.data);if(i.hasKey("taskbone-ocr")&&!t)return void new obsidian_module.Notice("The drawing has already been processed, you will find the result in the frontmatter in markdown view mode. If you ran the command from the Obsidian Panel in Excalidraw then you can CTRL(CMD)+click the command to force the rescaning.",4e3);const n=this.plugin.ea.getBoundingBox(A),a=n.width*n.height,r=Math.sqrt(36e4/a),s=Math.sqrt(a/16e6),o=r>1?r:s>1?1/s:1,l=new EmbeddedFilesLoader(this.plugin,!1),c=await createPNG(e.file.path+"#^taskbone",o,{withBackground:!0,withTheme:!0},l,"light",null,null,[],this.plugin,0),d=await this.getTextForImage(c);d&&(i.setKey("taskbone-ocr",d),e.data=i.data,e.save(!1),window.navigator.clipboard.writeText(d),new obsidian_module.Notice("I placed the recognized in the drawing's frontmatter and onto the system clipboard."))}async getTextForImage(e){""===this.apiKey&&await this.initialize();const t={records:[{image:await blobToBase64(e)}]},A=await obsidian_module.requestUrl({url:"https://api.taskbone.com/execute?id=60f394af-85f6-40bc-9613-5d26dc283cbb",method:"post",contentType:"application/json",body:JSON.stringify(t),headers:{authorization:`Bearer ${this.apiKey}`},throw:!1}),i=null==A?void 0:A.json;return i&&200===A.status?i.records[0].text:(new obsidian_module.Notice("Something went wrong while processing your request. Please check developer console for more information"),void log(A))}}class ExcalidrawPlugin extends obsidian_module.Plugin{constructor(e,t){super(e,t),this.excalidrawFiles=new Set,this.excalidrawFileModes={},this._loaded=!1,this.activeExcalidrawView=null,this.lastActiveExcalidrawFilePath=null,this.hover={linkText:null,sourcePath:null},this.opencount=0,this.filesMaster=null,this.equationsMaster=null,this.mathjax=null,this.mathjaxDiv=null,this.mathjaxLoaderFinished=!1,this.fourthFontDef=VIRGIL_FONT,this.packageMap=new WeakMap,this.leafChangeTimeout=null,this.popScope=null,this.filesMaster=new Map,this.equationsMaster=new Map}getPackage(e){if(e===window)return{react:react,reactDOM:reactDOM,excalidrawLib:excalidrawLib};if(this.packageMap.has(e))return this.packageMap.get(e);const{react:t,reactDOM:A,excalidrawLib:i}=e.eval.call(e,`(function() {\n ${lzStringExports.decompressFromBase64(EXCALIDRAW_PACKAGES)};\n return {react:React,reactDOM:ReactDOM,excalidrawLib:ExcalidrawLib};\n })()`);return this.packageMap.set(e,{react:t,reactDOM:A,excalidrawLib:i}),{react:t,reactDOM:A,excalidrawLib:i}}async onload(){if(obsidian_module.addIcon(ICON_NAME,EXCALIDRAW_ICON),obsidian_module.addIcon("ScriptEngine",SCRIPTENGINE_ICON),obsidian_module.addIcon("export-img",EXPORT_IMG_ICON),await this.loadSettings({reEnableAutosave:!0}),this.addSettingTab(new ExcalidrawSettingTab(this.app,this)),this.ea=await initExcalidrawAutomate(this),this.registerView("excalidraw",(e=>new ExcalidrawView(e,this))),this.registerExtensions(["excalidraw"],"excalidraw"),this.addMarkdownPostProcessor(),this.registerInstallCodeblockProcessor(),this.addThemeObserver(),this.experimentalFileTypeDisplayToggle(this.settings.experimentalFileType),this.registerCommands(),this.registerEventListeners(),this.initializeFourthFont(),this.registerEditorSuggest(new FieldSuggester(this)),this.registerMonkeyPatches(),this.settings.showReleaseNotes){const e="0.0.0"===this.settings.previousRelease;isVersionNewerThanOther(PLUGIN_VERSION,this.settings.previousRelease)&&new ReleaseNotes(this.app,this,e?null:PLUGIN_VERSION).open()}this.switchToExcalidarwAfterLoad(),this.loadMathJax();const e=this;this.app.workspace.onLayoutReady((()=>{this.scriptEngine=new ScriptEngine(e)})),this.taskbone=new Taskbone(this)}initializeFourthFont(){this.app.workspace.onLayoutReady((async()=>{const e=await getFontDataURL(this.app,this.settings.experimantalFourthFont,"","LocalFont"),t=""===e.dataURL?VIRGIL_DATAURL:e.dataURL;this.fourthFontDef=e.fontDef;const A=new Set;app.workspace.iterateAllLeaves((e=>{const i=app.isMobile?document:e.view.containerEl.ownerDocument;if(!i)return;if(A.has(i))return;A.add(i);const n=i.createElement("style");n.id="local-font-stylesheet",n.textContent=`\n @font-face {\n font-family: 'LocalFont';\n src: url("${t}");\n font-display: swap;\n }\n `;const a=i.getElementById(n.id);i.head.appendChild(n),a&&i.head.removeChild(a),i.fonts.load("20px LocalFont")}))}))}loadMathJax(){const e=this;this.app.workspace.onLayoutReady((async()=>{await obsidian_module.loadMathJax();try{e.mathjaxDiv&&(document.body.removeChild(e.mathjaxDiv),e.mathjax=null,e.mathjaxLoaderFinished=!1),e.mathjaxDiv=document.body.createDiv(),e.mathjaxDiv.title="Excalidraw MathJax Support",e.mathjaxDiv.style.display="none";const t=e.mathjaxDiv.createEl("iframe");t.title="Excalidraw MathJax Support";const A=t.contentWindow.document,i=A.createElement("script");i.type="text/javascript",i.onload=()=>{const A=t.contentWindow;A.MathJax.startup.pagePromise.then((async()=>{const t=app.vault.getAbstractFileByPath("preamble.sty"),i=t&&t instanceof obsidian_module.TFile?await app.vault.read(t):null;try{i&&await A.MathJax.tex2svg(i)}catch(t){errorlog({where:e.loadMathJax,description:"Unexpected error while loading preamble.sty",error:t})}e.mathjax=A.MathJax,e.mathjaxLoaderFinished=!0}))},i.src=e.settings.mathjaxSourceURL,A.head.appendChild(i)}catch(t){new obsidian_module.Notice("Excalidraw: Error initializing LaTeX support"),e.mathjaxLoaderFinished=!0}}))}switchToExcalidarwAfterLoad(){const e=this;this.app.workspace.onLayoutReady((()=>{let t;for(t of app.workspace.getLeavesOfType("markdown"))t.view instanceof obsidian_module.MarkdownView&&e.isExcalidrawFile(t.view.file)&&(e.excalidrawFileModes[t.id||t.view.file.path]="excalidraw",e.setExcalidrawView(t))}))}forceSaveActiveView(e){if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.forceSave(),!0)}registerInstallCodeblockProcessor(){const e=async(e,t)=>{let A=null;try{const e=t.parentElement.querySelector(`a[href="#${t.previousElementSibling.getAttribute("data-heading")}"]`);e.style.paddingRight="10px",A=e.parentElement.createEl("button",null,(e=>{e.setText(t$d("UPDATE_SCRIPT")),e.addClass("mod-muted"),e.style.backgroundColor="var(--interactive-success)",e.style.display="none"}))}catch(t){errorlog({where:"this.registerInstallCodeblockProcessor",source:e,error:t})}e=e.trim(),t.createEl("button",null,(async t=>{var i;const n=e=>{switch(A&&(A.style.display="none"),e){case"CHECKING":t.setText(t$d("CHECKING_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)";break;case"INSTALL":t.setText(t$d("INSTALL_SCRIPT")),t.style.backgroundColor="var(--interactive-accent)";break;case"UPTODATE":t.setText(t$d("UPTODATE_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)";break;case"UPDATE":t.setText(t$d("UPDATE_SCRIPT")),t.style.backgroundColor="var(--interactive-success)",A&&(A.style.display=null);break;case"ERROR":t.setText(t$d("UNABLETOCHECK_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)"}};t.addClass("mod-muted");let a=e;try{a=decodeURI(e)}catch(t){errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",source:e,error:t})}const r=a.substring(a.lastIndexOf("/")+1),s=`${this.settings.scriptFolderPath}/Downloaded`,o=app.vault.getFiles().filter((e=>e.path.startsWith(s)&&e.name===r)).sort(((e,t)=>e.path>t.path?1:-1));let l=o[0];const c=null!==(i=null==l?void 0:l.path)&&void 0!==i?i:`${s}/${r}`,d=getIMGFilename(c,"svg");let h=this.app.vault.getAbstractFileByPath(d);if(n(l?"CHECKING":"INSTALL"),t.onclick=async()=>{const t=async(e,t,A)=>{const i=await obsidian_module.request({url:e});return!i||i.startsWith("404: Not Found")?null:(t?await this.app.vault.modify(t,i):(await checkAndCreateFolder(s),t=await this.app.vault.create(A,i)),t)};try{if(l=await t(e,l,c),!l)throw n("ERROR"),"File not found";h=await t(getIMGFilename(e,"svg"),h,d),n("UPTODATE"),0===Object.keys(this.scriptEngine.scriptIconMap).length&&this.scriptEngine.loadScripts(),new obsidian_module.Notice(`Installed: ${l.basename}`)}catch(e){new obsidian_module.Notice(`Error installing script: ${r}`),errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",error:e})}},A&&(A.onclick=t.onclick),!(l&&l instanceof obsidian_module.TFile))return;const u=new Map;JSON.parse(await obsidian_module.request({url:"https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/directory-info.json"})).forEach((e=>u.set(e.fname,e.mtime)));const g=(e,t)=>{if(0===u.size||!u.has(e))return"ERROR";const A=u.get(e);return!t||A>t.stat.mtime?"UPDATE":"UPTODATE"},p=g(r,l),m=g(getIMGFilename(r,"svg"),h&&h instanceof obsidian_module.TFile?h:null);n("UPTODATE"===p&&"UPTODATE"===m||"UPTODATE"===p&&"ERROR"===m?"UPTODATE":"ERROR"===p?"ERROR":"UPDATE"===p||"UPDATE"===m?"UPDATE":"UPTODATE")}))};this.registerMarkdownCodeBlockProcessor(SCRIPT_INSTALL_CODEBLOCK,(async(t,A)=>{A.addEventListener(RERENDER_EVENT,(async i=>{i.stopPropagation(),A.empty(),e(t,A)})),e(t,A)}))}addMarkdownPostProcessor(){initializeMarkdownPostProcessor(this),this.registerMarkdownPostProcessor(markdownPostProcessor),this.registerEvent(this.app.workspace.on("hover-link",hoverEvent)),this.observer=observer,this.observer.observe(document,{childList:!0,subtree:!0})}addThemeObserver(){this.themeObserver=new MutationObserver((async e=>{var t,A,i,n,a,r,s,o;if(!this.settings.matchThemeTrigger)return;if((null===(t=e[0])||void 0===t?void 0:t.oldValue)===(null===(i=null===(A=e[0])||void 0===A?void 0:A.target)||void 0===i?void 0:i.getAttribute("class")))return;if((null===(a=null===(n=e[0])||void 0===n?void 0:n.oldValue)||void 0===a?void 0:a.includes("theme-dark"))===(null===(o=null===(s=null===(r=e[0])||void 0===r?void 0:r.target)||void 0===s?void 0:s.classList)||void 0===o?void 0:o.contains("theme-dark")))return;const l=isObsidianThemeDark()?"dark":"light";this.app.workspace.getLeavesOfType("excalidraw").forEach((e=>{const t=e.view;t.file&&t.excalidrawRef&&t.setTheme(l)}))})),this.themeObserver.observe(document.body,{attributeOldValue:!0,attributeFilter:["class"]})}experimentalFileTypeDisplayToggle(e){e?this.experimentalFileTypeDisplay():(this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.fileExplorerObserver=null)}experimentalFileTypeDisplay(){const e=e=>{if(1!=e.childElementCount)return;const t=e.getAttribute("data-path");if(!t)return;const A=this.app.vault.getAbstractFileByPath(t);A&&A instanceof obsidian_module.TFile&&this.isExcalidrawFile(A)&&e.insertBefore(createDiv({cls:"nav-file-tag",text:this.settings.experimentalFileTag}),e.firstChild)};this.fileExplorerObserver=new MutationObserver((t=>{const A=t.filter((e=>e.addedNodes.length>0));A.forEach((t=>{t.addedNodes.forEach((t=>{t instanceof Element&&t.querySelectorAll(".nav-file-title").forEach(e)}))}))}));const t=this;this.app.workspace.onLayoutReady((()=>{document.querySelectorAll(".nav-file-title").forEach(e),t.fileExplorerObserver.observe(document.querySelector(".workspace"),{childList:!0,subtree:!0})}))}registerCommands(){this.openDialog=new OpenFileDialog(this.app,this),this.insertLinkDialog=new InsertLinkDialog(this.app),this.insertImageDialog=new InsertImageDialog(this),this.importSVGDialog=new ImportSVGDialog(this),this.insertMDDialog=new InsertMDDialog(this),this.addRibbonIcon(ICON_NAME,t$d("CREATE_NEW"),(async e=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),linkClickModifierType(emulateCTRLClickForLinks(e)))})),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{e.addItem((e=>{e.setTitle(t$d("CREATE_NEW")).setIcon(ICON_NAME).onClick((e=>{let A=t.path;t instanceof obsidian_module.TFile&&(A=obsidian_module.normalizePath(t.path.substr(0,t.path.lastIndexOf(t.name)))),this.createAndOpenDrawing(getDrawingFilename(this.settings),linkClickModifierType(emulateCTRLClickForLinks(e)),A)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{t instanceof obsidian_module.TFile&&"excalidraw"==t.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_KEEP_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(t,!1,!1)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{t instanceof obsidian_module.TFile&&"excalidraw"==t.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_REPLACE_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(t,!0,!0)}))}))}))),this.addCommand({id:"excalidraw-disable-autosave",name:t$d("TEMPORARY_DISABLE_AUTOSAVE"),checkCallback:e=>!!this.settings.autosave&&(e||(this.settings.autosave=!1),!0)}),this.addCommand({id:"excalidraw-enable-autosave",name:t$d("TEMPORARY_ENABLE_AUTOSAVE"),checkCallback:e=>!this.settings.autosave&&(e||(this.settings.autosave=!0),!0)}),this.addCommand({id:"excalidraw-download-lib",name:t$d("DOWNLOAD_LIBRARY"),callback:this.exportLibrary}),this.addCommand({id:"excalidraw-open",name:t$d("OPEN_EXISTING_NEW_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!0)}}),this.addCommand({id:"excalidraw-open-on-current",name:t$d("OPEN_EXISTING_ACTIVE_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!1)}}),this.addCommand({id:"excalidraw-insert-transclusion",name:t$d("TRANSCLUDE"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(this.openDialog.start(openDialogAction.insertLinkToDrawing,!1),!0)}),this.addCommand({id:"excalidraw-insert-last-active-transclusion",name:t$d("TRANSCLUDE_MOST_RECENT"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView))&&null!=this.lastActiveExcalidrawFilePath;const t=this.app.vault.getAbstractFileByPath(this.lastActiveExcalidrawFilePath);return t instanceof obsidian_module.TFile&&(this.embedDrawing(t),!0)}}),this.addCommand({id:"excalidraw-autocreate",name:t$d("NEW_IN_NEW_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-pane")}}),this.addCommand({id:"excalidraw-autocreate-newtab",name:t$d("NEW_IN_NEW_TAB"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-tab")}}),this.addCommand({id:"excalidraw-autocreate-on-current",name:t$d("NEW_IN_ACTIVE_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"active-pane")}}),this.addCommand({id:"excalidraw-autocreate-popout",name:t$d("NEW_IN_POPOUT_WINDOW"),checkCallback:e=>{if(e)return!app.isMobile;this.createAndOpenDrawing(getDrawingFilename(this.settings),"popout-window")}});const e=async e=>{const t=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!t)return;const A=getEmbedFilename(t.file.basename,this.settings),i=this.settings.embedUseExcalidrawFolder?null:(await getAttachmentsFolderAndFilePath(this.app,t.file.path,A)).folder,n=await this.createDrawing(A,i);await this.embedDrawing(n),this.openDrawing(n,e,!0,void 0,!0)};this.addCommand({id:"excalidraw-autocreate-and-embed",name:t$d("NEW_IN_NEW_PANE_EMBED"),checkCallback:t=>t?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("new-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-new-tab",name:t$d("NEW_IN_NEW_TAB_EMBED"),checkCallback:t=>t?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("new-tab"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-on-current",name:t$d("NEW_IN_ACTIVE_PANE_EMBED"),checkCallback:t=>t?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("active-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-popout",name:t$d("NEW_IN_POPOUT_WINDOW_EMBED"),checkCallback:t=>t?!app.isMobile&&Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("popout-window"),!0)}),this.addCommand({id:"run-ocr",name:t$d("RUN_OCR"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return e?Boolean(t):!!t&&(this.settings.taskboneEnabled?(this.taskbone.getTextForView(t,!1),!0):(new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3),!0))}}),this.addCommand({id:"search-text",name:t$d("SEARCH"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(search(t),!0)}}),this.addCommand({id:"fullscreen",name:t$d("TOGGLE_FULLSCREEN"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.isFullscreen()?t.exitFullscreen():t.gotoFullscreen(),!0)}}),this.addCommand({id:"disable-binding",name:t$d("TOGGLE_DISABLEBINDING"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.toggleDisableBinding(),!0)}}),this.addCommand({id:"export-image",name:t$d("EXPORT_IMAGE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.exportDialog||(t.exportDialog=new ExportDialog(this,t,t.file),t.exportDialog.createForm()),t.exportDialog.open(),!0)}}),this.forceSaveCommand=this.addCommand({id:"save",hotkeys:[{modifiers:["Ctrl"],key:"s"}],name:t$d("FORCE_SAVE"),checkCallback:e=>this.forceSaveActiveView(e)}),this.addCommand({id:"toggle-lock",hotkeys:[{modifiers:["Ctrl","Shift"],key:"e"}],name:t$d("TOGGLE_LOCK"),checkCallback:e=>{if(e)return!!Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))&&!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode;const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!t||t.compatibilityMode||(t.changeTextMode(t.textMode===TextMode.parsed?TextMode.raw:TextMode.parsed),0))}}),this.addCommand({id:"scriptengine-store",name:t$d("INSTALL_SCRIPT_BUTTON"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ScriptInstallPrompt(this).open(),!0)}),this.addCommand({id:"delete-file",name:t$d("DELETE_FILE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(t){this.ea.reset(),this.ea.setView(t);const e=this.ea.getViewSelectedElement();if("image"!==e.type)return new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0;const A=this.ea.getViewFileForImageElement(e);return A?(this.app.vault.delete(A),this.ea.deleteViewElements([e]),!0):(new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0)}return!1}}),this.addCommand({id:"insert-link",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertLinkDialog.start(t.file.path,t.addText),!0)}}),this.addCommand({id:"insert-link-to-element",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK_TO_ELEMENT_NORMAL"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard(""),!0)}}),this.addCommand({id:"insert-link-to-element-group",name:t$d("INSERT_LINK_TO_ELEMENT_GROUP"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard("group="),!0)}}),this.addCommand({id:"insert-link-to-element-area",name:t$d("INSERT_LINK_TO_ELEMENT_AREA"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard("area="),!0)}}),this.addCommand({id:"toggle-lefthanded-mode",name:t$d("TOGGLE_LEFTHANDED_MODE"),checkCallback:e=>{if(e){if(this.app.workspace.getActiveViewOfType(ExcalidrawView)){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView),t=null==e?void 0:e.excalidrawAPI;return!!t&&!!t.getAppState().trayModeEnabled}return!1}return this.app.workspace.getActiveViewOfType(ExcalidrawView),(async()=>{const e=this.settings.isLeftHanded;await this.loadSettings({applyLefthandedMode:!1}),this.settings.isLeftHanded=!e,this.saveSettings(),setLeftHandedMode(!e),setTimeout((()=>setLeftHandedMode(!e)))})(),!0}}),this.addCommand({id:"reset-image-to-100",name:t$d("RESET_IMG_TO_100"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!t)return!1;if(!t.excalidrawAPI)return!1;const A=t.getViewSelectedElements().filter((e=>"image"===e.type));if(1!==A.length)return e||new obsidian_module.Notice("Select a single image element and try again"),!1;const i=A[0];return t.excalidrawData.getFile(i.fileId)?!!e||void(async()=>{const e=new ExcalidrawAutomate(this,t),n=await e.getOriginalImageSize(i);if(n){e.copyViewElementsToEAforEditing(A);const t=e.getElement(i.id);t.width=n.width,t.height=n.height,e.addElementsToView(!1,!1,!1)}})():(e||new obsidian_module.Notice("Select a single image element and try again"),!1)}}),this.addCommand({id:"insert-image",name:t$d("INSERT_IMAGE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertImageDialog.start(t),!0)}}),this.addCommand({id:"import-svg",name:t$d("IMPORT_SVG"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.importSVGDialog.start(t),!0)}}),this.addCommand({id:"release-notes",name:t$d("READ_RELEASE_NOTES"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ReleaseNotes(this.app,this,PLUGIN_VERSION).open(),!0)}),this.addCommand({id:"tray-mode",name:t$d("TRAY_MODE"),checkCallback:e=>{if(e){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!e||!e.excalidrawRef)return!1;const t=e.excalidrawAPI.getAppState();return!t.zenModeEnabled&&!t.viewModeEnabled}const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!t||!t.excalidrawAPI||(t.toggleTrayMode(),0))}}),this.addCommand({id:"insert-md",name:t$d("INSERT_MD"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertMDDialog.start(t),!0)}}),this.addCommand({id:"insert-pdf",name:t$d("INSERT_PDF"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(new InsertPDFModal(this,t).open(),!0)}}),this.addCommand({id:"insert-LaTeX-symbol",name:t$d("INSERT_LATEX"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(insertLaTeXToView(t),!0)}}),this.addCommand({id:"toggle-excalidraw-view",name:t$d("TOGGLE_MODE"),checkCallback:e=>{const t=this.app.workspace.getActiveFile();if(!t)return!1;const A=this.isExcalidrawFile(t);if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))?!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode:A;const i=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(i){const e=i.leaf;return this.excalidrawFileModes[e.id||t.path]="markdown",void this.setMarkdownView(e)}const n=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(n&&A){const e=n.leaf;return this.excalidrawFileModes[e.id||t.path]="excalidraw",void this.setExcalidrawView(e)}}}),this.addCommand({id:"convert-to-excalidraw",name:t$d("CONVERT_NOTE_TO_EXCALIDRAW"),checkCallback:e=>{const t=this.app.workspace.getActiveFile(),A=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!t||!A)return!1;const i=0===t.stat.size;if(e)return i;i&&(async()=>{await this.app.vault.modify(t,await this.getBlankDrawing()),this.setExcalidrawView(A.leaf)})()}}),this.addCommand({id:"convert-excalidraw",name:t$d("CONVERT_EXCALIDRAW"),checkCallback:e=>{if(e){const e=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));return e.length>0}return this.convertExcalidrawToMD(),!0}})}async convertSingleExcalidrawToMD(e,t=!1,A=!1){const i=await this.app.vault.read(e),n=e.name.substring(0,e.name.lastIndexOf(".excalidraw"))+(t?".md":".excalidraw.md"),a=getNewUniqueFilepath(this.app.vault,n,obsidian_module.normalizePath(e.path.substring(0,e.path.lastIndexOf(e.name))));log(a);const r=await this.app.vault.create(a,FRONTMATTER+await this.exportSceneToMD(i));return this.settings.keepInSync&&EXPORT_TYPES.forEach((t=>{const A=e.path.substring(0,e.path.lastIndexOf(".excalidraw"))+t,i=this.app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A));if(i&&i instanceof obsidian_module.TFile){const e=a.substring(0,a.lastIndexOf(".md"))+t;this.app.fileManager.renameFile(i,e)}})),A||this.app.vault.delete(e),r}async convertExcalidrawToMD(e=!1,t=!1){const A=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));for(const i of A)this.convertSingleExcalidrawToMD(i,e,t);new obsidian_module.Notice(`Converted ${A.length} files.`)}registerMonkeyPatches(){this.registerEvent(app.workspace.on("editor-menu",((e,t,A)=>{if(!(A&&A instanceof obsidian_module.MarkdownView))return;const i=A.file,n=A.leaf;if(!A.file)return;const a=this.app.metadataCache.getFileCache(i);(null==a?void 0:a.frontmatter)&&a.frontmatter[FRONTMATTER_KEY]&&e.addItem((e=>e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("excalidraw").onClick((()=>{this.excalidrawFileModes[n.id||i.path]="excalidraw",this.setExcalidrawView(n)}))))}))),this.registerEvent(app.workspace.on("file-menu",((e,t,A,i)=>{if(!(i&&i.view instanceof obsidian_module.MarkdownView))return;if(!(t instanceof obsidian_module.TFile))return;const n=this.app.metadataCache.getFileCache(t);(null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]&&(e.addItem((e=>{e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("pane").onClick((()=>{this.excalidrawFileModes[i.id||t.path]="excalidraw",this.setExcalidrawView(i)}))})),e.items.unshift(e.items.pop()))})));const e=this;this.register(around(obsidian_module.WorkspaceLeaf.prototype,{detach:t=>function(){var A;const i=null===(A=this.view)||void 0===A?void 0:A.getState();return(null==i?void 0:i.file)&&e.excalidrawFileModes[this.id||i.file]&&delete e.excalidrawFileModes[this.id||i.file],t.apply(this)},setViewState:t=>function(A,...i){var n;if(e._loaded&&"markdown"===A.type&&(null===(n=A.state)||void 0===n?void 0:n.file)&&"markdown"!==e.excalidrawFileModes[this.id||A.state.file]){const n=app.metadataCache.getCache(A.state.file);if((null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]){const n=Object.assign(Object.assign({},A),{type:"excalidraw"});return e.excalidrawFileModes[A.state.file]="excalidraw",t.apply(this,[n,...i])}}return t.apply(this,[A,...i])}}))}registerEventListeners(){const e=this;this.app.workspace.onLayoutReady((async()=>{e.registerEvent(app.vault.on("rename",(async(t,A)=>{t instanceof obsidian_module.TFile&&e.isExcalidrawFile(t)&&e.settings.keepInSync&&[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const i=getIMGFilename(A,e),n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(i));if(n&&n instanceof obsidian_module.TFile){const A=getIMGFilename(t.path,e);await app.fileManager.renameFile(n,A)}}))}))),e.registerEvent(app.vault.on("modify",(async t=>{app.workspace.getLeavesOfType("excalidraw").forEach((async A=>{const i=A.view;if(i.file&&(i.file.path===t.path||"excalidraw"===t.extension&&`${t.path.substring(0,t.path.lastIndexOf(".excalidraw"))}.md`===i.file.path)){if(i.semaphores.preventReload)return void(i.semaphores.preventReload=!1);if(i.lastSaveTimestamp+3e5{if(!(t instanceof obsidian_module.TFile))return;const A=this.excalidrawFiles.has(t);if(this.updateFileCache(t,void 0,!0),!A)return;const i=app.workspace.getLeavesOfType("excalidraw");for(let e=0;e{[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const A=getIMGFilename(t.path,e),i=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A));i&&i instanceof obsidian_module.TFile&&await app.vault.delete(i)}))}),500)}))),e.registerEvent(app.workspace.on("active-leaf-change",(async t=>{var A;e.leafChangeTimeout&&clearTimeout(e.leafChangeTimeout),e.leafChangeTimeout=setTimeout((()=>{e.leafChangeTimeout=null}),1e3);const i=e.activeExcalidrawView,n=t.view instanceof ExcalidrawView?t.view:null; //!Temporary hack -if(e.activeExcalidrawView=i,i&&(e.lastActiveExcalidrawFilePath=null===(t=i.file)||void 0===t?void 0:t.path),app.isMobile&&i&&!n){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="relative")}if(app.isMobile&&!i&&n){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="")}if(n&&n!==i&&(n.leaf!==A&&n.semaphores.dirty&&!n.semaphores.viewunload&&await n.save(!0),n.file&&e.triggerEmbedUpdates(n.file.path)),i&&(!n||n.leaf!==A)){const e=i.file;i.file&&setTimeout((()=>{var A;i&&i._loaded&&(null===(A=i.file)||void 0===A?void 0:A.path)===(null==e?void 0:e.path)&&(i.activeLoader||i.loadSceneFiles())}),2e3)}if(i&&i._loaded&&i.isLoaded&&i.excalidrawAPI&&e.ea.onCanvasColorChangeHook&&e.ea.onCanvasColorChangeHook(e.ea,i,i.excalidrawAPI.getAppState().viewBackgroundColor),e.popScope&&(e.popScope(),e.popScope=null),i){const A=e.app.keymap.getRootScope(),t=A.register(["Mod"],"Enter",(()=>!0)),n=e.forceSaveCommand&&"s"===e.forceSaveCommand.hotkeys[0].key&&e.forceSaveCommand.hotkeys[0].modifiers.includes("Ctrl")?A.register(["Ctrl"],"s",(()=>e.forceSaveActiveView(!1))):void 0;A.keys.unshift(A.keys.pop()),e.popScope=()=>{A.unregister(t),Boolean(n)&&A.unregister(n)}}}))),e.addFileSaveTriggerEventHandlers();const A=app.metadataCache;A.getCachedFiles().forEach((t=>{var n;const i=null===(n=A.getCache(t))||void 0===n?void 0:n.frontmatter;(i&&void 0!==i[FRONTMATTER_KEY]||t.match(/\.excalidraw$/))&&e.updateFileCache(app.vault.getAbstractFileByPath(t),i)})),this.registerEvent(A.on("changed",((e,A,t)=>this.updateFileCache(e,null==t?void 0:t.frontmatter))))}))}addFileSaveTriggerEventHandlers(){this.registerEvent(this.app.workspace.on("click",(e=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&(!e.target||"excalidraw__canvas"!==e.target.className&&!getParentOfClass(e.target,"excalidraw-wrapper"))&&this.activeExcalidrawView.save()}))),this.registerEvent(this.app.workspace.on("file-menu",(()=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()}))),this.modalContainerObserver=new MutationObserver((async e=>{1===e.length&&"childList"===e[0].type&&1===e[0].addedNodes.length&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()})),this.modalContainerObserver.observe(document.body,{childList:!0});const e=document.querySelector(".workspace-drawer.mod-left"),A=document.querySelector(".workspace-drawer.mod-right");if(e||A){const t=async e=>{"display: none;"===e[0].oldValue&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()},n={attributeOldValue:!0,attributeFilter:["style"]};e&&(this.workspaceDrawerLeftObserver=new MutationObserver(t),this.workspaceDrawerLeftObserver.observe(e,n)),A&&(this.workspaceDrawerRightObserver=new MutationObserver(t),this.workspaceDrawerRightObserver.observe(A,n))}}updateFileCache(e,A,t=!1){A&&void 0!==A[FRONTMATTER_KEY]?this.excalidrawFiles.add(e):t||"excalidraw"!==e.extension?this.excalidrawFiles.delete(e):this.excalidrawFiles.add(e)}onunload(){destroyExcalidrawAutomate(),this.popScope&&(this.popScope(),this.popScope=null),this.observer.disconnect(),this.themeObserver.disconnect(),this.modalContainerObserver.disconnect(),this.workspaceDrawerLeftObserver&&this.workspaceDrawerLeftObserver.disconnect(),this.workspaceDrawerRightObserver&&this.workspaceDrawerRightObserver.disconnect(),this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.app.workspace.getLeavesOfType("excalidraw").forEach((e=>{this.setMarkdownView(e)})),this.mathjaxDiv&&document.body.removeChild(this.mathjaxDiv),Object.values(this.packageMap).forEach((e=>{delete e.excalidrawLib,delete e.reactDOM,delete e.react}))}async embedDrawing(e){const A=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(A&&A.file){const t=this.app.metadataCache.fileToLinktext(e,A.file.path,"excalidraw"===this.settings.embedType),n=A.editor;if("excalidraw"===this.settings.embedType)return n.replaceSelection(this.settings.embedWikiLink?`![[${t}]]`:`![](${encodeURI(t)})`),void n.focus();let i=this.settings.autoExportLightAndDark?getExportTheme(this,e,this.settings.exportWithTheme&&isObsidianThemeDark()?"dark":"light"):"";i=""===i?"":i+".";const a=getIMGFilename(t,i+this.settings.embedType.toLowerCase()),r=getIMGFilename(e.path,i+this.settings.embedType.toLowerCase()),s="dark."===i?"light.":"dark.",o=getIMGFilename(t,s+this.settings.embedType.toLowerCase());this.app.vault.getAbstractFileByPath(r)||(await this.app.vault.create(r,""),await sleep$1(200)),n.replaceSelection(this.settings.embedWikiLink?`![[${a}]]\n%%[[${t}|🖋 Edit in Excalidraw]]${o?", and the [["+o+"|"+s.split(".")[0]+" exported image]]":""}%%`:`![](${encodeURI(a)})\n%%[🖋 Edit in Excalidraw](${encodeURI(t)})${o?", and the ["+s.split(".")[0]+" exported image]("+encodeURI(o)+")":""}%%`),n.focus()}}async loadSettings(e={applyLefthandedMode:!0,reEnableAutosave:!1}){void 0===e.applyLefthandedMode&&(e.applyLefthandedMode=!0),void 0===e.reEnableAutosave&&(e.reEnableAutosave=!1),this.settings=Object.assign({},DEFAULT_SETTINGS,await this.loadData()),e.applyLefthandedMode&&setLeftHandedMode(this.settings.isLeftHanded),e.reEnableAutosave&&(this.settings.autosave=!0),this.settings.autosaveInterval=app.isMobile?this.settings.autosaveIntervalMobile:this.settings.autosaveIntervalDesktop}async saveSettings(){await this.saveData(this.settings)}getStencilLibrary(){return""===this.settings.library||"deprecated"===this.settings.library?this.settings.library2:JSON_parse(this.settings.library)}setStencilLibrary(e){this.settings.library="deprecated",this.settings.library2=e}triggerEmbedUpdates(e){const A=new Set;app.workspace.iterateAllLeaves((t=>{const n=app.isMobile?document:t.view.containerEl.ownerDocument;if(!n)return;if(A.has(n))return;A.add(n);const i=n.createEvent("Event");i.initEvent(RERENDER_EVENT,!0,!1),n.querySelectorAll("img[class^='excalidraw-svg']"+(e?`[fileSource='${e.replaceAll("'","\\'")}']`:"")).forEach((e=>e.dispatchEvent(i)))}))}openDrawing(e,A,t=!1,n){let i;"popout-window"===A?i=app.workspace.openPopoutLeaf():(i=this.app.workspace.getLeaf(!1),"empty"!==i.view.getViewType()&&"new-pane"===A&&(i=getNewOrAdjacentLeaf(this,i))),i.openFile(e,n&&""!==n?{active:t,eState:{subpath:n}}:{active:t})}async getBlankDrawing(){const e=this.app.metadataCache.getFirstLinkpathDest(obsidian_module.normalizePath(this.settings.templateFilePath),"");if(e&&e instanceof obsidian_module.TFile&&("md"==e.extension&&!this.settings.compatibilityMode||"excalidraw"==e.extension&&this.settings.compatibilityMode)){const A=await this.app.vault.read(e);if(A)return this.settings.matchTheme?changeThemeOfExcalidrawMD(A):A}if(this.settings.compatibilityMode)return this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;const A=this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;return`${FRONTMATTER}\n${getMarkdownDrawingSection(A,this.settings.compress)}`}async exportSceneToMD(e){var A,t;if(!e)return"";const n=null===(A=JSON_parse(e).elements)||void 0===A?void 0:A.filter((e=>"text"==e.type));let i,a="# Text Elements\n";for(const A of n)i=A.id,A.id.length>8&&(i=nanoid(),e=e.replaceAll(A.id,i)),a+=`${null!==(t=A.originalText)&&void 0!==t?t:A.text} ^${i}\n\n`;return a+getMarkdownDrawingSection(JSON.stringify(JSON_parse(e),null,"\t"),this.settings.compress)}async createDrawing(e,A,t){const n=obsidian_module.normalizePath(A||this.settings.folder);await checkAndCreateFolder(n);const i=getNewUniqueFilepath(this.app.vault,e,n),a=await this.app.vault.create(i,null!=t?t:await this.getBlankDrawing());let r=0;for(;a instanceof obsidian_module.TFile&&!this.isExcalidrawFile(a)&&r++<10;)await sleep$1(50);return r>10&&errorlog({file:a,error:"new drawing not recognized as an excalidraw file",fn:this.createDrawing}),a}async createAndOpenDrawing(e,A,t,n){const i=await this.createDrawing(e,t,n);return this.openDrawing(i,A,!0),i.path}async setMarkdownView(e){const A=e.view.getState();await e.setViewState({type:"excalidraw",state:{file:null}}),await e.setViewState({type:"markdown",state:A,popstate:!0},{focus:!0})}async setExcalidrawView(e){await e.setViewState({type:"excalidraw",state:e.view.getState(),popstate:!0})}isExcalidrawFile(e){if(!e)return!1;if("excalidraw"===e.extension)return!0;const A=e?this.app.metadataCache.getFileCache(e):null;return!!(null==A?void 0:A.frontmatter)&&!!A.frontmatter[FRONTMATTER_KEY]}async exportLibrary(){this.app.isMobile?new Prompt(this.app,"Please provide a filename","my-library","filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidrawlib`;const A=obsidian_module.normalizePath(this.settings.folder);await checkAndCreateFolder(A);const t=getNewUniqueFilepath(this.app.vault,e,A);this.app.vault.create(t,this.settings.library),new obsidian_module.Notice(`Exported library to ${t}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.settings.library2,null,"\t")),"my-obsidian-library.excalidrawlib")}}module.exports=ExcalidrawPlugin; +if(e.activeExcalidrawView=n,n&&(e.lastActiveExcalidrawFilePath=null===(A=n.file)||void 0===A?void 0:A.path),app.isMobile&&n&&!i){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="relative")}if(app.isMobile&&!n&&i){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="")}if(i&&i!==n&&(i.leaf!==t&&i.semaphores.dirty&&!i.semaphores.viewunload&&await i.save(!0),i.file&&e.triggerEmbedUpdates(i.file.path)),n&&(!i||i.leaf!==t)){const e=n.file;n.file&&setTimeout((()=>{var t;n&&n._loaded&&(null===(t=n.file)||void 0===t?void 0:t.path)===(null==e?void 0:e.path)&&(n.activeLoader||n.loadSceneFiles())}),2e3)}if(n&&n._loaded&&n.isLoaded&&n.excalidrawAPI&&e.ea.onCanvasColorChangeHook&&e.ea.onCanvasColorChangeHook(e.ea,n,n.excalidrawAPI.getAppState().viewBackgroundColor),e.popScope&&(e.popScope(),e.popScope=null),n){const t=e.app.keymap.getRootScope(),A=t.register(["Mod"],"Enter",(()=>!0));t.keys.unshift(t.keys.pop());const i=t.register(["Mod"],"k",(()=>!0));t.keys.unshift(t.keys.pop());const n=t.register(["Mod"],"f",(()=>{const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(search(e),!0)}));t.keys.unshift(t.keys.pop());const a=e.forceSaveCommand&&"s"===e.forceSaveCommand.hotkeys[0].key&&e.forceSaveCommand.hotkeys[0].modifiers.includes("Ctrl")?t.register(["Ctrl"],"s",(()=>e.forceSaveActiveView(!1))):void 0;a&&t.keys.unshift(t.keys.pop()),e.popScope=()=>{t.unregister(A),t.unregister(i),t.unregister(n),Boolean(a)&&t.unregister(a)}}}))),e.addFileSaveTriggerEventHandlers();const t=app.metadataCache;t.getCachedFiles().forEach((A=>{var i;const n=null===(i=t.getCache(A))||void 0===i?void 0:i.frontmatter;(n&&void 0!==n[FRONTMATTER_KEY]||A.match(/\.excalidraw$/))&&e.updateFileCache(app.vault.getAbstractFileByPath(A),n)})),this.registerEvent(t.on("changed",((e,t,A)=>this.updateFileCache(e,null==A?void 0:A.frontmatter))))}))}addFileSaveTriggerEventHandlers(){this.registerEvent(this.app.workspace.on("click",(e=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&(!e.target||"excalidraw__canvas"!==e.target.className&&!getParentOfClass(e.target,"excalidraw-wrapper"))&&this.activeExcalidrawView.save()}))),this.registerEvent(this.app.workspace.on("file-menu",(()=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()}))),this.modalContainerObserver=new MutationObserver((async e=>{1===e.length&&"childList"===e[0].type&&1===e[0].addedNodes.length&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()})),this.modalContainerObserver.observe(document.body,{childList:!0});const e=document.querySelector(".workspace-drawer.mod-left"),t=document.querySelector(".workspace-drawer.mod-right");if(e||t){const A=async e=>{"display: none;"===e[0].oldValue&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()},i={attributeOldValue:!0,attributeFilter:["style"]};e&&(this.workspaceDrawerLeftObserver=new MutationObserver(A),this.workspaceDrawerLeftObserver.observe(e,i)),t&&(this.workspaceDrawerRightObserver=new MutationObserver(A),this.workspaceDrawerRightObserver.observe(t,i))}}updateFileCache(e,t,A=!1){t&&void 0!==t[FRONTMATTER_KEY]?this.excalidrawFiles.add(e):A||"excalidraw"!==e.extension?this.excalidrawFiles.delete(e):this.excalidrawFiles.add(e)}onunload(){destroyExcalidrawAutomate(),this.popScope&&(this.popScope(),this.popScope=null),this.observer.disconnect(),this.themeObserver.disconnect(),this.modalContainerObserver.disconnect(),this.workspaceDrawerLeftObserver&&this.workspaceDrawerLeftObserver.disconnect(),this.workspaceDrawerRightObserver&&this.workspaceDrawerRightObserver.disconnect(),this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.app.workspace.getLeavesOfType("excalidraw").forEach((e=>{this.setMarkdownView(e)})),this.mathjaxDiv&&document.body.removeChild(this.mathjaxDiv),Object.values(this.packageMap).forEach((e=>{delete e.excalidrawLib,delete e.reactDOM,delete e.react}))}async embedDrawing(e){const t=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(t&&t.file){const A=this.app.metadataCache.fileToLinktext(e,t.file.path,"excalidraw"===this.settings.embedType),i=t.editor;if("excalidraw"===this.settings.embedType)return i.replaceSelection(this.settings.embedWikiLink?`![[${A}]]`:`![](${encodeURI(A)})`),void i.focus();let n=this.settings.autoExportLightAndDark?getExportTheme(this,e,this.settings.exportWithTheme&&isObsidianThemeDark()?"dark":"light"):"";n=""===n?"":n+".";const a=getIMGFilename(A,n+this.settings.embedType.toLowerCase()),r=getIMGFilename(e.path,n+this.settings.embedType.toLowerCase()),s="dark."===n?"light.":"dark.",o=getIMGFilename(A,s+this.settings.embedType.toLowerCase());this.app.vault.getAbstractFileByPath(r)||(await this.app.vault.create(r,""),await sleep$1(200)),i.replaceSelection(this.settings.embedWikiLink?`![[${a}]]\n%%[[${A}|🖋 Edit in Excalidraw]]${o?", and the [["+o+"|"+s.split(".")[0]+" exported image]]":""}%%`:`![](${encodeURI(a)})\n%%[🖋 Edit in Excalidraw](${encodeURI(A)})${o?", and the ["+s.split(".")[0]+" exported image]("+encodeURI(o)+")":""}%%`),i.focus()}}async loadSettings(e={applyLefthandedMode:!0,reEnableAutosave:!1}){void 0===e.applyLefthandedMode&&(e.applyLefthandedMode=!0),void 0===e.reEnableAutosave&&(e.reEnableAutosave=!1),this.settings=Object.assign({},DEFAULT_SETTINGS,await this.loadData()),e.applyLefthandedMode&&setLeftHandedMode(this.settings.isLeftHanded),e.reEnableAutosave&&(this.settings.autosave=!0),this.settings.autosaveInterval=app.isMobile?this.settings.autosaveIntervalMobile:this.settings.autosaveIntervalDesktop}async saveSettings(){await this.saveData(this.settings)}getStencilLibrary(){return""===this.settings.library||"deprecated"===this.settings.library?this.settings.library2:JSON_parse(this.settings.library)}setStencilLibrary(e){this.settings.library="deprecated",this.settings.library2=e}triggerEmbedUpdates(e){const t=new Set;app.workspace.iterateAllLeaves((A=>{const i=app.isMobile?document:A.view.containerEl.ownerDocument;if(!i)return;if(t.has(i))return;t.add(i);const n=i.createEvent("Event");n.initEvent(RERENDER_EVENT,!0,!1),i.querySelectorAll("img[class^='excalidraw-svg']"+(e?`[fileSource='${e.replaceAll("'","\\'")}']`:"")).forEach((e=>e.dispatchEvent(n)))}))}openDrawing(e,t,A=!1,i,n=!1){let a;"md-properties"===t&&(t="new-tab"),"popout-window"===t&&(a=app.workspace.openPopoutLeaf()),"new-tab"===t&&(a=app.workspace.getLeaf("tab")),a||(a=this.app.workspace.getLeaf(!1),"empty"!==a.view.getViewType()&&"new-pane"===t&&(a=getNewOrAdjacentLeaf(this,a))),a.openFile(e,i&&""!==i?{active:A,eState:{subpath:i}}:{active:A}).then((()=>{if(n&&this.ea.onFileCreateHook)try{this.ea.onFileCreateHook({ea:this.ea,excalidrawFile:e,view:a.view})}catch(e){console.error(e)}}))}async getBlankDrawing(){const e=this.app.metadataCache.getFirstLinkpathDest(obsidian_module.normalizePath(this.settings.templateFilePath),"");if(e&&e instanceof obsidian_module.TFile&&("md"==e.extension&&!this.settings.compatibilityMode||"excalidraw"==e.extension&&this.settings.compatibilityMode)){const t=await this.app.vault.read(e);if(t)return this.settings.matchTheme?changeThemeOfExcalidrawMD(t):t}if(this.settings.compatibilityMode)return this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;const t=this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;return`${FRONTMATTER}\n${getMarkdownDrawingSection(t,this.settings.compress)}`}async exportSceneToMD(e){var t,A;if(!e)return"";const i=null===(t=JSON_parse(e).elements)||void 0===t?void 0:t.filter((e=>"text"==e.type));let n,a="# Text Elements\n";for(const t of i)n=t.id,t.id.length>8&&(n=nanoid(),e=e.replaceAll(t.id,n)),a+=`${null!==(A=t.originalText)&&void 0!==A?A:t.text} ^${n}\n\n`;return a+getMarkdownDrawingSection(JSON.stringify(JSON_parse(e),null,"\t"),this.settings.compress)}async createDrawing(e,t,A){const i=obsidian_module.normalizePath(t||this.settings.folder);await checkAndCreateFolder(i);const n=getNewUniqueFilepath(this.app.vault,e,i),a=await this.app.vault.create(n,null!=A?A:await this.getBlankDrawing());let r=0;for(;a instanceof obsidian_module.TFile&&!this.isExcalidrawFile(a)&&r++<10;)await sleep$1(50);return r>10&&errorlog({file:a,error:"new drawing not recognized as an excalidraw file",fn:this.createDrawing}),a}async createAndOpenDrawing(e,t,A,i){const n=await this.createDrawing(e,A,i);return this.openDrawing(n,t,!0,void 0,!0),n.path}async setMarkdownView(e){const t=e.view.getState();await e.setViewState({type:"excalidraw",state:{file:null}}),await e.setViewState({type:"markdown",state:t,popstate:!0},{focus:!0})}async setExcalidrawView(e){await e.setViewState({type:"excalidraw",state:e.view.getState(),popstate:!0})}isExcalidrawFile(e){if(!e)return!1;if("excalidraw"===e.extension)return!0;const t=e?this.app.metadataCache.getFileCache(e):null;return!!(null==t?void 0:t.frontmatter)&&!!t.frontmatter[FRONTMATTER_KEY]}async exportLibrary(){this.app.isMobile?new Prompt(this.app,"Please provide a filename","my-library","filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidrawlib`;const t=obsidian_module.normalizePath(this.settings.folder);await checkAndCreateFolder(t);const A=getNewUniqueFilepath(this.app.vault,e,t);this.app.vault.create(A,this.settings.library),new obsidian_module.Notice(`Exported library to ${A}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.settings.library2,null,"\t")),"my-obsidian-library.excalidrawlib")}}module.exports=ExcalidrawPlugin; diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json b/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json index 75e41c6..bc85776 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json @@ -1,8 +1,8 @@ { "id": "obsidian-excalidraw-plugin", "name": "Excalidraw", - "version": "1.8.14", - "minAppVersion": "1.0.0", + "version": "1.9.3", + "minAppVersion": "1.1.6", "description": "An Obsidian plugin to edit and view Excalidraw drawings", "author": "Zsolt Viczian", "authorUrl": "https://zsolt.blog", diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css b/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css index b0d08fc..6c3870b 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css @@ -21,6 +21,10 @@ display: none; } +img.excalidraw-embedded-img { + width: 100%; +} + img.excalidraw-svg-right-wrap { float: right; margin: 0px 0px 20px 20px; @@ -326,4 +330,18 @@ label.color-input-container > input { .excalidraw-settings input { min-width: 10em; +} + +div.excalidraw-draginfo { + position: absolute; + z-index: 1000; + color: var(--text-normal); + padding: 3px; + background: var(--color-base-40); + display: block; + border-radius: 5px; +} + +.excalidraw [data-radix-popper-content-wrapper] { + position: absolute !important; } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-git/main.js b/.obsidian/plugins/obsidian-git/main.js index 72463ce..7debbee 100644 --- a/.obsidian/plugins/obsidian-git/main.js +++ b/.obsidian/plugins/obsidian-git/main.js @@ -9,38 +9,42 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; -var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[Object.keys(fn)[0]])(fn = 0)), res; + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { - __markAsModule(target); for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; -var __reExport = (target, module2, desc) => { - if (module2 && typeof module2 === "object" || typeof module2 === "function") { - for (let key2 of __getOwnPropNames(module2)) - if (!__hasOwnProp.call(target, key2) && key2 !== "default") - __defProp(target, key2, { get: () => module2[key2], enumerable: !(desc = __getOwnPropDesc(module2, key2)) || desc.enumerable }); +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key2 of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key2) && key2 !== except) + __defProp(to, key2, { get: () => from[key2], enumerable: !(desc = __getOwnPropDesc(from, key2)) || desc.enumerable }); } - return target; -}; -var __toModule = (module2) => { - return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2); + return to; }; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js var require_base64_js = __commonJS({ - "node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js"(exports2) { "use strict"; - exports.byteLength = byteLength; - exports.toByteArray = toByteArray; - exports.fromByteArray = fromByteArray; + init_polyfill_buffer(); + exports2.byteLength = byteLength; + exports2.toByteArray = toByteArray; + exports2.fromByteArray = fromByteArray; var lookup = []; var revLookup = []; var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; @@ -122,10 +126,14 @@ var require_base64_js = __commonJS({ } if (extraBytes === 1) { tmp = uint8[len2 - 1]; - parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "=="); + parts.push( + lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==" + ); } else if (extraBytes === 2) { tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1]; - parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "="); + parts.push( + lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=" + ); } return parts.join(""); } @@ -134,9 +142,9 @@ var require_base64_js = __commonJS({ // node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js var require_ieee754 = __commonJS({ - "node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js"(exports) { + "node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js"(exports2) { init_polyfill_buffer(); - exports.read = function(buffer2, offset, isLE, mLen, nBytes) { + exports2.read = function(buffer2, offset, isLE, mLen, nBytes) { var e, m; var eLen = nBytes * 8 - mLen - 1; var eMax = (1 << eLen) - 1; @@ -166,7 +174,7 @@ var require_ieee754 = __commonJS({ } return (s ? -1 : 1) * m * Math.pow(2, e - mLen); }; - exports.write = function(buffer2, value, offset, isLE, mLen, nBytes) { + exports2.write = function(buffer2, value, offset, isLE, mLen, nBytes) { var e, m, c; var eLen = nBytes * 8 - mLen - 1; var eMax = (1 << eLen) - 1; @@ -218,20 +226,22 @@ var require_ieee754 = __commonJS({ // node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js var require_buffer = __commonJS({ - "node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js"(exports2) { "use strict"; + init_polyfill_buffer(); var base64 = require_base64_js(); var ieee754 = require_ieee754(); var customInspectSymbol = typeof Symbol === "function" && typeof Symbol["for"] === "function" ? Symbol["for"]("nodejs.util.inspect.custom") : null; - exports.Buffer = Buffer3; - exports.SlowBuffer = SlowBuffer; - exports.INSPECT_MAX_BYTES = 50; + exports2.Buffer = Buffer2; + exports2.SlowBuffer = SlowBuffer; + exports2.INSPECT_MAX_BYTES = 50; var K_MAX_LENGTH = 2147483647; - exports.kMaxLength = K_MAX_LENGTH; - Buffer3.TYPED_ARRAY_SUPPORT = typedArraySupport(); - if (!Buffer3.TYPED_ARRAY_SUPPORT && typeof console !== "undefined" && typeof console.error === "function") { - console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."); + exports2.kMaxLength = K_MAX_LENGTH; + Buffer2.TYPED_ARRAY_SUPPORT = typedArraySupport(); + if (!Buffer2.TYPED_ARRAY_SUPPORT && typeof console !== "undefined" && typeof console.error === "function") { + console.error( + "This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support." + ); } function typedArraySupport() { try { @@ -246,18 +256,18 @@ var require_buffer = __commonJS({ return false; } } - Object.defineProperty(Buffer3.prototype, "parent", { + Object.defineProperty(Buffer2.prototype, "parent", { enumerable: true, get: function() { - if (!Buffer3.isBuffer(this)) + if (!Buffer2.isBuffer(this)) return void 0; return this.buffer; } }); - Object.defineProperty(Buffer3.prototype, "offset", { + Object.defineProperty(Buffer2.prototype, "offset", { enumerable: true, get: function() { - if (!Buffer3.isBuffer(this)) + if (!Buffer2.isBuffer(this)) return void 0; return this.byteOffset; } @@ -267,28 +277,32 @@ var require_buffer = __commonJS({ throw new RangeError('The value "' + length + '" is invalid for option "size"'); } const buf = new Uint8Array(length); - Object.setPrototypeOf(buf, Buffer3.prototype); + Object.setPrototypeOf(buf, Buffer2.prototype); return buf; } - function Buffer3(arg, encodingOrOffset, length) { + function Buffer2(arg, encodingOrOffset, length) { if (typeof arg === "number") { if (typeof encodingOrOffset === "string") { - throw new TypeError('The "string" argument must be of type string. Received type number'); + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ); } return allocUnsafe(arg); } return from(arg, encodingOrOffset, length); } - Buffer3.poolSize = 8192; + Buffer2.poolSize = 8192; function from(value, encodingOrOffset, length) { if (typeof value === "string") { - return fromString(value, encodingOrOffset); + return fromString2(value, encodingOrOffset); } if (ArrayBuffer.isView(value)) { return fromArrayView(value); } if (value == null) { - throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value); + throw new TypeError( + "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value + ); } if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { return fromArrayBuffer(value, encodingOrOffset, length); @@ -297,25 +311,29 @@ var require_buffer = __commonJS({ return fromArrayBuffer(value, encodingOrOffset, length); } if (typeof value === "number") { - throw new TypeError('The "value" argument must not be of type number. Received type number'); + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ); } const valueOf = value.valueOf && value.valueOf(); if (valueOf != null && valueOf !== value) { - return Buffer3.from(valueOf, encodingOrOffset, length); + return Buffer2.from(valueOf, encodingOrOffset, length); } const b = fromObject(value); if (b) return b; if (typeof Symbol !== "undefined" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === "function") { - return Buffer3.from(value[Symbol.toPrimitive]("string"), encodingOrOffset, length); + return Buffer2.from(value[Symbol.toPrimitive]("string"), encodingOrOffset, length); } - throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value); + throw new TypeError( + "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value + ); } - Buffer3.from = function(value, encodingOrOffset, length) { + Buffer2.from = function(value, encodingOrOffset, length) { return from(value, encodingOrOffset, length); }; - Object.setPrototypeOf(Buffer3.prototype, Uint8Array.prototype); - Object.setPrototypeOf(Buffer3, Uint8Array); + Object.setPrototypeOf(Buffer2.prototype, Uint8Array.prototype); + Object.setPrototypeOf(Buffer2, Uint8Array); function assertSize(size) { if (typeof size !== "number") { throw new TypeError('"size" argument must be of type number'); @@ -333,24 +351,24 @@ var require_buffer = __commonJS({ } return createBuffer(size); } - Buffer3.alloc = function(size, fill, encoding) { + Buffer2.alloc = function(size, fill, encoding) { return alloc(size, fill, encoding); }; function allocUnsafe(size) { assertSize(size); return createBuffer(size < 0 ? 0 : checked(size) | 0); } - Buffer3.allocUnsafe = function(size) { + Buffer2.allocUnsafe = function(size) { return allocUnsafe(size); }; - Buffer3.allocUnsafeSlow = function(size) { + Buffer2.allocUnsafeSlow = function(size) { return allocUnsafe(size); }; - function fromString(string, encoding) { + function fromString2(string, encoding) { if (typeof encoding !== "string" || encoding === "") { encoding = "utf8"; } - if (!Buffer3.isEncoding(encoding)) { + if (!Buffer2.isEncoding(encoding)) { throw new TypeError("Unknown encoding: " + encoding); } const length = byteLength(string, encoding) | 0; @@ -391,11 +409,11 @@ var require_buffer = __commonJS({ } else { buf = new Uint8Array(array, byteOffset, length); } - Object.setPrototypeOf(buf, Buffer3.prototype); + Object.setPrototypeOf(buf, Buffer2.prototype); return buf; } function fromObject(obj) { - if (Buffer3.isBuffer(obj)) { + if (Buffer2.isBuffer(obj)) { const len = checked(obj.length) | 0; const buf = createBuffer(len); if (buf.length === 0) { @@ -424,18 +442,20 @@ var require_buffer = __commonJS({ if (+length != length) { length = 0; } - return Buffer3.alloc(+length); + return Buffer2.alloc(+length); } - Buffer3.isBuffer = function isBuffer(b) { - return b != null && b._isBuffer === true && b !== Buffer3.prototype; + Buffer2.isBuffer = function isBuffer(b) { + return b != null && b._isBuffer === true && b !== Buffer2.prototype; }; - Buffer3.compare = function compare(a, b) { + Buffer2.compare = function compare(a, b) { if (isInstance(a, Uint8Array)) - a = Buffer3.from(a, a.offset, a.byteLength); + a = Buffer2.from(a, a.offset, a.byteLength); if (isInstance(b, Uint8Array)) - b = Buffer3.from(b, b.offset, b.byteLength); - if (!Buffer3.isBuffer(a) || !Buffer3.isBuffer(b)) { - throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'); + b = Buffer2.from(b, b.offset, b.byteLength); + if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ); } if (a === b) return 0; @@ -454,7 +474,7 @@ var require_buffer = __commonJS({ return 1; return 0; }; - Buffer3.isEncoding = function isEncoding(encoding) { + Buffer2.isEncoding = function isEncoding(encoding) { switch (String(encoding).toLowerCase()) { case "hex": case "utf8": @@ -472,12 +492,12 @@ var require_buffer = __commonJS({ return false; } }; - Buffer3.concat = function concat(list, length) { + Buffer2.concat = function concat(list, length) { if (!Array.isArray(list)) { throw new TypeError('"list" argument must be an Array of Buffers'); } if (list.length === 0) { - return Buffer3.alloc(0); + return Buffer2.alloc(0); } let i; if (length === void 0) { @@ -486,19 +506,23 @@ var require_buffer = __commonJS({ length += list[i].length; } } - const buffer2 = Buffer3.allocUnsafe(length); + const buffer2 = Buffer2.allocUnsafe(length); let pos = 0; for (i = 0; i < list.length; ++i) { let buf = list[i]; if (isInstance(buf, Uint8Array)) { if (pos + buf.length > buffer2.length) { - if (!Buffer3.isBuffer(buf)) - buf = Buffer3.from(buf); + if (!Buffer2.isBuffer(buf)) + buf = Buffer2.from(buf); buf.copy(buffer2, pos); } else { - Uint8Array.prototype.set.call(buffer2, buf, pos); + Uint8Array.prototype.set.call( + buffer2, + buf, + pos + ); } - } else if (!Buffer3.isBuffer(buf)) { + } else if (!Buffer2.isBuffer(buf)) { throw new TypeError('"list" argument must be an Array of Buffers'); } else { buf.copy(buffer2, pos); @@ -508,14 +532,16 @@ var require_buffer = __commonJS({ return buffer2; }; function byteLength(string, encoding) { - if (Buffer3.isBuffer(string)) { + if (Buffer2.isBuffer(string)) { return string.length; } if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { return string.byteLength; } if (typeof string !== "string") { - throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string); + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string + ); } const len = string.length; const mustMatch = arguments.length > 2 && arguments[2] === true; @@ -549,7 +575,7 @@ var require_buffer = __commonJS({ } } } - Buffer3.byteLength = byteLength; + Buffer2.byteLength = byteLength; function slowToString(encoding, start, end) { let loweredCase = false; if (start === void 0 || start < 0) { @@ -598,13 +624,13 @@ var require_buffer = __commonJS({ } } } - Buffer3.prototype._isBuffer = true; + Buffer2.prototype._isBuffer = true; function swap(b, n, m) { const i = b[n]; b[n] = b[m]; b[m] = i; } - Buffer3.prototype.swap16 = function swap16() { + Buffer2.prototype.swap16 = function swap16() { const len = this.length; if (len % 2 !== 0) { throw new RangeError("Buffer size must be a multiple of 16-bits"); @@ -614,7 +640,7 @@ var require_buffer = __commonJS({ } return this; }; - Buffer3.prototype.swap32 = function swap32() { + Buffer2.prototype.swap32 = function swap32() { const len = this.length; if (len % 4 !== 0) { throw new RangeError("Buffer size must be a multiple of 32-bits"); @@ -625,7 +651,7 @@ var require_buffer = __commonJS({ } return this; }; - Buffer3.prototype.swap64 = function swap64() { + Buffer2.prototype.swap64 = function swap64() { const len = this.length; if (len % 8 !== 0) { throw new RangeError("Buffer size must be a multiple of 64-bits"); @@ -638,7 +664,7 @@ var require_buffer = __commonJS({ } return this; }; - Buffer3.prototype.toString = function toString() { + Buffer2.prototype.toString = function toString() { const length = this.length; if (length === 0) return ""; @@ -646,31 +672,33 @@ var require_buffer = __commonJS({ return utf8Slice(this, 0, length); return slowToString.apply(this, arguments); }; - Buffer3.prototype.toLocaleString = Buffer3.prototype.toString; - Buffer3.prototype.equals = function equals2(b) { - if (!Buffer3.isBuffer(b)) + Buffer2.prototype.toLocaleString = Buffer2.prototype.toString; + Buffer2.prototype.equals = function equals2(b) { + if (!Buffer2.isBuffer(b)) throw new TypeError("Argument must be a Buffer"); if (this === b) return true; - return Buffer3.compare(this, b) === 0; + return Buffer2.compare(this, b) === 0; }; - Buffer3.prototype.inspect = function inspect() { + Buffer2.prototype.inspect = function inspect() { let str = ""; - const max = exports.INSPECT_MAX_BYTES; + const max = exports2.INSPECT_MAX_BYTES; str = this.toString("hex", 0, max).replace(/(.{2})/g, "$1 ").trim(); if (this.length > max) str += " ... "; return ""; }; if (customInspectSymbol) { - Buffer3.prototype[customInspectSymbol] = Buffer3.prototype.inspect; + Buffer2.prototype[customInspectSymbol] = Buffer2.prototype.inspect; } - Buffer3.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { + Buffer2.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { if (isInstance(target, Uint8Array)) { - target = Buffer3.from(target, target.offset, target.byteLength); + target = Buffer2.from(target, target.offset, target.byteLength); } - if (!Buffer3.isBuffer(target)) { - throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target); + if (!Buffer2.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target + ); } if (start === void 0) { start = 0; @@ -749,9 +777,9 @@ var require_buffer = __commonJS({ return -1; } if (typeof val === "string") { - val = Buffer3.from(val, encoding); + val = Buffer2.from(val, encoding); } - if (Buffer3.isBuffer(val)) { + if (Buffer2.isBuffer(val)) { if (val.length === 0) { return -1; } @@ -824,13 +852,13 @@ var require_buffer = __commonJS({ } return -1; } - Buffer3.prototype.includes = function includes(val, byteOffset, encoding) { + Buffer2.prototype.includes = function includes(val, byteOffset, encoding) { return this.indexOf(val, byteOffset, encoding) !== -1; }; - Buffer3.prototype.indexOf = function indexOf(val, byteOffset, encoding) { + Buffer2.prototype.indexOf = function indexOf(val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, true); }; - Buffer3.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { + Buffer2.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, false); }; function hexWrite(buf, string, offset, length) { @@ -869,7 +897,7 @@ var require_buffer = __commonJS({ function ucs2Write(buf, string, offset, length) { return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); } - Buffer3.prototype.write = function write(string, offset, length, encoding) { + Buffer2.prototype.write = function write(string, offset, length, encoding) { if (offset === void 0) { encoding = "utf8"; length = this.length; @@ -889,7 +917,9 @@ var require_buffer = __commonJS({ length = void 0; } } else { - throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); + throw new Error( + "Buffer.write(string, encoding, offset[, length]) is no longer supported" + ); } const remaining = this.length - offset; if (length === void 0 || length > remaining) @@ -926,7 +956,7 @@ var require_buffer = __commonJS({ } } }; - Buffer3.prototype.toJSON = function toJSON() { + Buffer2.prototype.toJSON = function toJSON() { return { type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0) @@ -1008,7 +1038,10 @@ var require_buffer = __commonJS({ let res = ""; let i = 0; while (i < len) { - res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)); + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ); } return res; } @@ -1048,7 +1081,7 @@ var require_buffer = __commonJS({ } return res; } - Buffer3.prototype.slice = function slice(start, end) { + Buffer2.prototype.slice = function slice(start, end) { const len = this.length; start = ~~start; end = end === void 0 ? len : ~~end; @@ -1069,7 +1102,7 @@ var require_buffer = __commonJS({ if (end < start) end = start; const newBuf = this.subarray(start, end); - Object.setPrototypeOf(newBuf, Buffer3.prototype); + Object.setPrototypeOf(newBuf, Buffer2.prototype); return newBuf; }; function checkOffset(offset, ext, length) { @@ -1078,7 +1111,7 @@ var require_buffer = __commonJS({ if (offset + ext > length) throw new RangeError("Trying to access beyond buffer length"); } - Buffer3.prototype.readUintLE = Buffer3.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) { + Buffer2.prototype.readUintLE = Buffer2.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) { offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; if (!noAssert) @@ -1091,7 +1124,7 @@ var require_buffer = __commonJS({ } return val; }; - Buffer3.prototype.readUintBE = Buffer3.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) { + Buffer2.prototype.readUintBE = Buffer2.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) { offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; if (!noAssert) { @@ -1104,37 +1137,37 @@ var require_buffer = __commonJS({ } return val; }; - Buffer3.prototype.readUint8 = Buffer3.prototype.readUInt8 = function readUInt8(offset, noAssert) { + Buffer2.prototype.readUint8 = Buffer2.prototype.readUInt8 = function readUInt8(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 1, this.length); return this[offset]; }; - Buffer3.prototype.readUint16LE = Buffer3.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { + Buffer2.prototype.readUint16LE = Buffer2.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); return this[offset] | this[offset + 1] << 8; }; - Buffer3.prototype.readUint16BE = Buffer3.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { + Buffer2.prototype.readUint16BE = Buffer2.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); return this[offset] << 8 | this[offset + 1]; }; - Buffer3.prototype.readUint32LE = Buffer3.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { + Buffer2.prototype.readUint32LE = Buffer2.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216; }; - Buffer3.prototype.readUint32BE = Buffer3.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { + Buffer2.prototype.readUint32BE = Buffer2.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); }; - Buffer3.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) { + Buffer2.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) { offset = offset >>> 0; validateNumber(offset, "offset"); const first2 = this[offset]; @@ -1146,7 +1179,7 @@ var require_buffer = __commonJS({ const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last2 * 2 ** 24; return BigInt(lo) + (BigInt(hi) << BigInt(32)); }); - Buffer3.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) { + Buffer2.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) { offset = offset >>> 0; validateNumber(offset, "offset"); const first2 = this[offset]; @@ -1158,7 +1191,7 @@ var require_buffer = __commonJS({ const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last2; return (BigInt(hi) << BigInt(32)) + BigInt(lo); }); - Buffer3.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) { + Buffer2.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) { offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; if (!noAssert) @@ -1174,7 +1207,7 @@ var require_buffer = __commonJS({ val -= Math.pow(2, 8 * byteLength2); return val; }; - Buffer3.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) { + Buffer2.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) { offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; if (!noAssert) @@ -1190,7 +1223,7 @@ var require_buffer = __commonJS({ val -= Math.pow(2, 8 * byteLength2); return val; }; - Buffer3.prototype.readInt8 = function readInt8(offset, noAssert) { + Buffer2.prototype.readInt8 = function readInt8(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 1, this.length); @@ -1198,33 +1231,33 @@ var require_buffer = __commonJS({ return this[offset]; return (255 - this[offset] + 1) * -1; }; - Buffer3.prototype.readInt16LE = function readInt16LE(offset, noAssert) { + Buffer2.prototype.readInt16LE = function readInt16LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); const val = this[offset] | this[offset + 1] << 8; return val & 32768 ? val | 4294901760 : val; }; - Buffer3.prototype.readInt16BE = function readInt16BE(offset, noAssert) { + Buffer2.prototype.readInt16BE = function readInt16BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); const val = this[offset + 1] | this[offset] << 8; return val & 32768 ? val | 4294901760 : val; }; - Buffer3.prototype.readInt32LE = function readInt32LE(offset, noAssert) { + Buffer2.prototype.readInt32LE = function readInt32LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; }; - Buffer3.prototype.readInt32BE = function readInt32BE(offset, noAssert) { + Buffer2.prototype.readInt32BE = function readInt32BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; }; - Buffer3.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) { + Buffer2.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) { offset = offset >>> 0; validateNumber(offset, "offset"); const first2 = this[offset]; @@ -1235,7 +1268,7 @@ var require_buffer = __commonJS({ const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last2 << 24); return (BigInt(val) << BigInt(32)) + BigInt(first2 + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24); }); - Buffer3.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) { + Buffer2.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) { offset = offset >>> 0; validateNumber(offset, "offset"); const first2 = this[offset]; @@ -1243,42 +1276,43 @@ var require_buffer = __commonJS({ if (first2 === void 0 || last2 === void 0) { boundsError(offset, this.length - 8); } - const val = (first2 << 24) + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset]; + const val = (first2 << 24) + // Overflow + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset]; return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last2); }); - Buffer3.prototype.readFloatLE = function readFloatLE(offset, noAssert) { + Buffer2.prototype.readFloatLE = function readFloatLE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return ieee754.read(this, offset, true, 23, 4); }; - Buffer3.prototype.readFloatBE = function readFloatBE(offset, noAssert) { + Buffer2.prototype.readFloatBE = function readFloatBE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return ieee754.read(this, offset, false, 23, 4); }; - Buffer3.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { + Buffer2.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 8, this.length); return ieee754.read(this, offset, true, 52, 8); }; - Buffer3.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { + Buffer2.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 8, this.length); return ieee754.read(this, offset, false, 52, 8); }; function checkInt(buf, value, offset, ext, max, min) { - if (!Buffer3.isBuffer(buf)) + if (!Buffer2.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); if (offset + ext > buf.length) throw new RangeError("Index out of range"); } - Buffer3.prototype.writeUintLE = Buffer3.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) { + Buffer2.prototype.writeUintLE = Buffer2.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) { value = +value; offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; @@ -1294,7 +1328,7 @@ var require_buffer = __commonJS({ } return offset + byteLength2; }; - Buffer3.prototype.writeUintBE = Buffer3.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) { + Buffer2.prototype.writeUintBE = Buffer2.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) { value = +value; offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; @@ -1310,7 +1344,7 @@ var require_buffer = __commonJS({ } return offset + byteLength2; }; - Buffer3.prototype.writeUint8 = Buffer3.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { + Buffer2.prototype.writeUint8 = Buffer2.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) @@ -1318,7 +1352,7 @@ var require_buffer = __commonJS({ this[offset] = value & 255; return offset + 1; }; - Buffer3.prototype.writeUint16LE = Buffer3.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { + Buffer2.prototype.writeUint16LE = Buffer2.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) @@ -1327,7 +1361,7 @@ var require_buffer = __commonJS({ this[offset + 1] = value >>> 8; return offset + 2; }; - Buffer3.prototype.writeUint16BE = Buffer3.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { + Buffer2.prototype.writeUint16BE = Buffer2.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) @@ -1336,7 +1370,7 @@ var require_buffer = __commonJS({ this[offset + 1] = value & 255; return offset + 2; }; - Buffer3.prototype.writeUint32LE = Buffer3.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { + Buffer2.prototype.writeUint32LE = Buffer2.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) @@ -1347,7 +1381,7 @@ var require_buffer = __commonJS({ this[offset] = value & 255; return offset + 4; }; - Buffer3.prototype.writeUint32BE = Buffer3.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { + Buffer2.prototype.writeUint32BE = Buffer2.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) @@ -1398,13 +1432,13 @@ var require_buffer = __commonJS({ buf[offset] = hi; return offset + 8; } - Buffer3.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) { + Buffer2.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) { return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff")); }); - Buffer3.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) { + Buffer2.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) { return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff")); }); - Buffer3.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) { + Buffer2.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) { @@ -1423,7 +1457,7 @@ var require_buffer = __commonJS({ } return offset + byteLength2; }; - Buffer3.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) { + Buffer2.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) { @@ -1442,7 +1476,7 @@ var require_buffer = __commonJS({ } return offset + byteLength2; }; - Buffer3.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { + Buffer2.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) @@ -1452,7 +1486,7 @@ var require_buffer = __commonJS({ this[offset] = value & 255; return offset + 1; }; - Buffer3.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { + Buffer2.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) @@ -1461,7 +1495,7 @@ var require_buffer = __commonJS({ this[offset + 1] = value >>> 8; return offset + 2; }; - Buffer3.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { + Buffer2.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) @@ -1470,7 +1504,7 @@ var require_buffer = __commonJS({ this[offset + 1] = value & 255; return offset + 2; }; - Buffer3.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { + Buffer2.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) @@ -1481,7 +1515,7 @@ var require_buffer = __commonJS({ this[offset + 3] = value >>> 24; return offset + 4; }; - Buffer3.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { + Buffer2.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) @@ -1494,10 +1528,10 @@ var require_buffer = __commonJS({ this[offset + 3] = value & 255; return offset + 4; }; - Buffer3.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) { + Buffer2.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) { return wrtBigUInt64LE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); }); - Buffer3.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) { + Buffer2.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) { return wrtBigUInt64BE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); }); function checkIEEE754(buf, value, offset, ext, max, min) { @@ -1515,10 +1549,10 @@ var require_buffer = __commonJS({ ieee754.write(buf, value, offset, littleEndian, 23, 4); return offset + 4; } - Buffer3.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { + Buffer2.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { return writeFloat(this, value, offset, true, noAssert); }; - Buffer3.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { + Buffer2.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { return writeFloat(this, value, offset, false, noAssert); }; function writeDouble(buf, value, offset, littleEndian, noAssert) { @@ -1530,14 +1564,14 @@ var require_buffer = __commonJS({ ieee754.write(buf, value, offset, littleEndian, 52, 8); return offset + 8; } - Buffer3.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { + Buffer2.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { return writeDouble(this, value, offset, true, noAssert); }; - Buffer3.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { + Buffer2.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { return writeDouble(this, value, offset, false, noAssert); }; - Buffer3.prototype.copy = function copy2(target, targetStart, start, end) { - if (!Buffer3.isBuffer(target)) + Buffer2.prototype.copy = function copy2(target, targetStart, start, end) { + if (!Buffer2.isBuffer(target)) throw new TypeError("argument should be a Buffer"); if (!start) start = 0; @@ -1569,11 +1603,15 @@ var require_buffer = __commonJS({ if (this === target && typeof Uint8Array.prototype.copyWithin === "function") { this.copyWithin(targetStart, start, end); } else { - Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart); + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ); } return len; }; - Buffer3.prototype.fill = function fill(val, start, end, encoding) { + Buffer2.prototype.fill = function fill(val, start, end, encoding) { if (typeof val === "string") { if (typeof start === "string") { encoding = start; @@ -1586,7 +1624,7 @@ var require_buffer = __commonJS({ if (encoding !== void 0 && typeof encoding !== "string") { throw new TypeError("encoding must be a string"); } - if (typeof encoding === "string" && !Buffer3.isEncoding(encoding)) { + if (typeof encoding === "string" && !Buffer2.isEncoding(encoding)) { throw new TypeError("Unknown encoding: " + encoding); } if (val.length === 1) { @@ -1616,7 +1654,7 @@ var require_buffer = __commonJS({ this[i] = val; } } else { - const bytes = Buffer3.isBuffer(val) ? val : Buffer3.from(val, encoding); + const bytes = Buffer2.isBuffer(val) ? val : Buffer2.from(val, encoding); const len = bytes.length; if (len === 0) { throw new TypeError('The value "' + val + '" is invalid for argument "value"'); @@ -1657,30 +1695,42 @@ var require_buffer = __commonJS({ } }; } - E("ERR_BUFFER_OUT_OF_BOUNDS", function(name) { - if (name) { - return `${name} is outside of buffer bounds`; - } - return "Attempt to access memory outside buffer bounds"; - }, RangeError); - E("ERR_INVALID_ARG_TYPE", function(name, actual) { - return `The "${name}" argument must be of type number. Received type ${typeof actual}`; - }, TypeError); - E("ERR_OUT_OF_RANGE", function(str, range, input) { - let msg = `The value of "${str}" is out of range.`; - let received = input; - if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { - received = addNumericalSeparator(String(input)); - } else if (typeof input === "bigint") { - received = String(input); - if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) { - received = addNumericalSeparator(received); + E( + "ERR_BUFFER_OUT_OF_BOUNDS", + function(name) { + if (name) { + return `${name} is outside of buffer bounds`; } - received += "n"; - } - msg += ` It must be ${range}. Received ${received}`; - return msg; - }, RangeError); + return "Attempt to access memory outside buffer bounds"; + }, + RangeError + ); + E( + "ERR_INVALID_ARG_TYPE", + function(name, actual) { + return `The "${name}" argument must be of type number. Received type ${typeof actual}`; + }, + TypeError + ); + E( + "ERR_OUT_OF_RANGE", + function(str, range, input) { + let msg = `The value of "${str}" is out of range.`; + let received = input; + if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { + received = addNumericalSeparator(String(input)); + } else if (typeof input === "bigint") { + received = String(input); + if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) { + received = addNumericalSeparator(received); + } + received += "n"; + } + msg += ` It must be ${range}. Received ${received}`; + return msg; + }, + RangeError + ); function addNumericalSeparator(val) { let res = ""; let i = val.length; @@ -1726,7 +1776,11 @@ var require_buffer = __commonJS({ if (length < 0) { throw new errors.ERR_BUFFER_OUT_OF_BOUNDS(); } - throw new errors.ERR_OUT_OF_RANGE(type || "offset", `>= ${type ? 1 : 0} and <= ${length}`, value); + throw new errors.ERR_OUT_OF_RANGE( + type || "offset", + `>= ${type ? 1 : 0} and <= ${length}`, + value + ); } var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; function base64clean(str) { @@ -1780,15 +1834,27 @@ var require_buffer = __commonJS({ } else if (codePoint < 2048) { if ((units -= 2) < 0) break; - bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128); + bytes.push( + codePoint >> 6 | 192, + codePoint & 63 | 128 + ); } else if (codePoint < 65536) { if ((units -= 3) < 0) break; - bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128); + bytes.push( + codePoint >> 12 | 224, + codePoint >> 6 & 63 | 128, + codePoint & 63 | 128 + ); } else if (codePoint < 1114112) { if ((units -= 4) < 0) break; - bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128); + bytes.push( + codePoint >> 18 | 240, + codePoint >> 12 & 63 | 128, + codePoint >> 6 & 63 | 128, + codePoint & 63 | 128 + ); } else { throw new Error("Invalid code point"); } @@ -1855,34 +1921,36 @@ var require_buffer = __commonJS({ }); // polyfill_buffer.js -var import_obsidian, buffer, Buffer2; +var import_obsidian, buffer, Buffer; var init_polyfill_buffer = __esm({ "polyfill_buffer.js"() { - import_obsidian = __toModule(require("obsidian")); + import_obsidian = require("obsidian"); if (import_obsidian.Platform.isMobileApp) { buffer = require_buffer().Buffer; } else { buffer = global.Buffer; } - Buffer2 = buffer; + Buffer = buffer; } }); // node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/lib/index.js var require_lib = __commonJS({ - "node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/lib/index.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/lib/index.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); var AsyncLock2 = function(opts) { opts = opts || {}; this.Promise = opts.Promise || Promise; - this.queues = Object.create(null); + this.queues = /* @__PURE__ */ Object.create(null); this.domainReentrant = opts.domainReentrant || false; if (this.domainReentrant) { if (typeof process === "undefined" || typeof process.domain === "undefined") { - throw new Error("Domain-reentrant locks require `process.domain` to exist. Please flip `opts.domainReentrant = false`, use a NodeJS version that still implements Domain, or install a browser polyfill."); + throw new Error( + "Domain-reentrant locks require `process.domain` to exist. Please flip `opts.domainReentrant = false`, use a NodeJS version that still implements Domain, or install a browser polyfill." + ); } - this.domains = Object.create(null); + this.domains = /* @__PURE__ */ Object.create(null); } this.timeout = opts.timeout || AsyncLock2.DEFAULT_TIMEOUT; this.maxOccupationTime = opts.maxOccupationTime || AsyncLock2.DEFAULT_MAX_OCCUPATION_TIME; @@ -1920,7 +1988,7 @@ var require_lib = __commonJS({ var timer = null; var occupationTimer = null; var executionTimer = null; - var self3 = this; + var self2 = this; var done = function(locked, err, ret) { if (occupationTimer) { clearTimeout(occupationTimer); @@ -1931,11 +1999,11 @@ var require_lib = __commonJS({ executionTimer = null; } if (locked) { - if (!!self3.queues[key2] && self3.queues[key2].length === 0) { - delete self3.queues[key2]; + if (!!self2.queues[key2] && self2.queues[key2].length === 0) { + delete self2.queues[key2]; } - if (self3.domainReentrant) { - delete self3.domains[key2]; + if (self2.domainReentrant) { + delete self2.domains[key2]; } } if (!resolved) { @@ -1953,8 +2021,8 @@ var require_lib = __commonJS({ resolved = true; } if (locked) { - if (!!self3.queues[key2] && self3.queues[key2].length > 0) { - self3.queues[key2].shift()(); + if (!!self2.queues[key2] && self2.queues[key2].length > 0) { + self2.queues[key2].shift()(); } } }; @@ -1966,13 +2034,13 @@ var require_lib = __commonJS({ clearTimeout(timer); timer = null; } - if (self3.domainReentrant && locked) { - self3.domains[key2] = process.domain; + if (self2.domainReentrant && locked) { + self2.domains[key2] = process.domain; } - var maxExecutionTime = opts.maxExecutionTime || self3.maxExecutionTime; + var maxExecutionTime = opts.maxExecutionTime || self2.maxExecutionTime; if (maxExecutionTime) { executionTimer = setTimeout(function() { - if (!!self3.queues[key2]) { + if (!!self2.queues[key2]) { done(locked, new Error("Maximum execution time is exceeded " + key2)); } }, maxExecutionTime); @@ -1993,7 +2061,7 @@ var require_lib = __commonJS({ } } } else { - self3._promiseTry(function() { + self2._promiseTry(function() { return fn(); }).then(function(ret) { done(locked, void 0, ret); @@ -2002,26 +2070,26 @@ var require_lib = __commonJS({ }); } }; - if (self3.domainReentrant && !!process.domain) { + if (self2.domainReentrant && !!process.domain) { exec = process.domain.bind(exec); } - if (!self3.queues[key2]) { - self3.queues[key2] = []; + if (!self2.queues[key2]) { + self2.queues[key2] = []; exec(true); - } else if (self3.domainReentrant && !!process.domain && process.domain === self3.domains[key2]) { + } else if (self2.domainReentrant && !!process.domain && process.domain === self2.domains[key2]) { exec(false); - } else if (self3.queues[key2].length >= self3.maxPending) { + } else if (self2.queues[key2].length >= self2.maxPending) { done(false, new Error("Too many pending tasks in queue " + key2)); } else { var taskFn = function() { exec(true); }; if (opts.skipQueue) { - self3.queues[key2].unshift(taskFn); + self2.queues[key2].unshift(taskFn); } else { - self3.queues[key2].push(taskFn); + self2.queues[key2].push(taskFn); } - var timeout = opts.timeout || self3.timeout; + var timeout = opts.timeout || self2.timeout; if (timeout) { timer = setTimeout(function() { timer = null; @@ -2029,10 +2097,10 @@ var require_lib = __commonJS({ }, timeout); } } - var maxOccupationTime = opts.maxOccupationTime || self3.maxOccupationTime; + var maxOccupationTime = opts.maxOccupationTime || self2.maxOccupationTime; if (maxOccupationTime) { occupationTimer = setTimeout(function() { - if (!!self3.queues[key2]) { + if (!!self2.queues[key2]) { done(false, new Error("Maximum occupation time is exceeded in queue " + key2)); } }, maxOccupationTime); @@ -2046,10 +2114,10 @@ var require_lib = __commonJS({ opts = cb; cb = null; } - var self3 = this; + var self2 = this; var getFn = function(key2, fn2) { return function(cb2) { - self3.acquire(key2, fn2, cb2, opts); + self2.acquire(key2, fn2, cb2, opts); }; }; var fnx = keys.reduceRight(function(prev, key2) { @@ -2093,16 +2161,16 @@ var require_lib = __commonJS({ // node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/index.js var require_async_lock = __commonJS({ - "node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/index.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/index.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); module2.exports = require_lib(); } }); // node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js var require_inherits_browser = __commonJS({ - "node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js"(exports, module2) { + "node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js"(exports2, module2) { init_polyfill_buffer(); if (typeof Object.create === "function") { module2.exports = function inherits(ctor, superCtor) { @@ -2135,37 +2203,37 @@ var require_inherits_browser = __commonJS({ // node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js var require_safe_buffer = __commonJS({ - "node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js"(exports, module2) { + "node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js"(exports2, module2) { init_polyfill_buffer(); var buffer2 = require_buffer(); - var Buffer3 = buffer2.Buffer; + var Buffer2 = buffer2.Buffer; function copyProps(src, dst) { for (var key2 in src) { dst[key2] = src[key2]; } } - if (Buffer3.from && Buffer3.alloc && Buffer3.allocUnsafe && Buffer3.allocUnsafeSlow) { + if (Buffer2.from && Buffer2.alloc && Buffer2.allocUnsafe && Buffer2.allocUnsafeSlow) { module2.exports = buffer2; } else { - copyProps(buffer2, exports); - exports.Buffer = SafeBuffer; + copyProps(buffer2, exports2); + exports2.Buffer = SafeBuffer; } function SafeBuffer(arg, encodingOrOffset, length) { - return Buffer3(arg, encodingOrOffset, length); + return Buffer2(arg, encodingOrOffset, length); } - SafeBuffer.prototype = Object.create(Buffer3.prototype); - copyProps(Buffer3, SafeBuffer); + SafeBuffer.prototype = Object.create(Buffer2.prototype); + copyProps(Buffer2, SafeBuffer); SafeBuffer.from = function(arg, encodingOrOffset, length) { if (typeof arg === "number") { throw new TypeError("Argument must not be a number"); } - return Buffer3(arg, encodingOrOffset, length); + return Buffer2(arg, encodingOrOffset, length); }; SafeBuffer.alloc = function(size, fill, encoding) { if (typeof size !== "number") { throw new TypeError("Argument must be a number"); } - var buf = Buffer3(size); + var buf = Buffer2(size); if (fill !== void 0) { if (typeof encoding === "string") { buf.fill(fill, encoding); @@ -2181,7 +2249,7 @@ var require_safe_buffer = __commonJS({ if (typeof size !== "number") { throw new TypeError("Argument must be a number"); } - return Buffer3(size); + return Buffer2(size); }; SafeBuffer.allocUnsafeSlow = function(size) { if (typeof size !== "number") { @@ -2194,11 +2262,11 @@ var require_safe_buffer = __commonJS({ // node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/hash.js var require_hash = __commonJS({ - "node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/hash.js"(exports, module2) { + "node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/hash.js"(exports2, module2) { init_polyfill_buffer(); - var Buffer3 = require_safe_buffer().Buffer; + var Buffer2 = require_safe_buffer().Buffer; function Hash2(blockSize, finalSize) { - this._block = Buffer3.alloc(blockSize); + this._block = Buffer2.alloc(blockSize); this._finalSize = finalSize; this._blockSize = blockSize; this._len = 0; @@ -2206,7 +2274,7 @@ var require_hash = __commonJS({ Hash2.prototype.update = function(data, enc) { if (typeof data === "string") { enc = enc || "utf8"; - data = Buffer3.from(data, enc); + data = Buffer2.from(data, enc); } var block = this._block; var blockSize = this._blockSize; @@ -2257,12 +2325,12 @@ var require_hash = __commonJS({ // node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/sha1.js var require_sha1 = __commonJS({ - "node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/sha1.js"(exports, module2) { + "node_modules/.pnpm/sha.js@2.4.11/node_modules/sha.js/sha1.js"(exports2, module2) { init_polyfill_buffer(); var inherits = require_inherits_browser(); var Hash2 = require_hash(); - var Buffer3 = require_safe_buffer().Buffer; - var K = [ + var Buffer2 = require_safe_buffer().Buffer; + var K2 = [ 1518500249, 1859775393, 2400959708 | 0, @@ -2312,7 +2380,7 @@ var require_sha1 = __commonJS({ W2[i] = rotl1(W2[i - 3] ^ W2[i - 8] ^ W2[i - 14] ^ W2[i - 16]); for (var j = 0; j < 80; ++j) { var s = ~~(j / 20); - var t = rotl5(a) + ft(s, b, c, d) + e + W2[j] + K[s] | 0; + var t = rotl5(a) + ft(s, b, c, d) + e + W2[j] + K2[s] | 0; e = d; d = c; c = rotl30(b); @@ -2326,7 +2394,7 @@ var require_sha1 = __commonJS({ this._e = e + this._e | 0; }; Sha1.prototype._hash = function() { - var H = Buffer3.allocUnsafe(20); + var H = Buffer2.allocUnsafe(20); H.writeInt32BE(this._a | 0, 0); H.writeInt32BE(this._b | 0, 4); H.writeInt32BE(this._c | 0, 8); @@ -2340,14 +2408,14 @@ var require_sha1 = __commonJS({ // node_modules/.pnpm/crc-32@1.2.2/node_modules/crc-32/crc32.js var require_crc32 = __commonJS({ - "node_modules/.pnpm/crc-32@1.2.2/node_modules/crc-32/crc32.js"(exports) { + "node_modules/.pnpm/crc-32@1.2.2/node_modules/crc-32/crc32.js"(exports2) { init_polyfill_buffer(); var CRC32; (function(factory) { if (typeof DO_NOT_EXPORT_CRC === "undefined") { - if (typeof exports === "object") { - factory(exports); - } else if (typeof define === "function" && define.amd) { + if ("object" === typeof exports2) { + factory(exports2); + } else if ("function" === typeof define && define.amd) { define(function() { var module3 = {}; factory(module3); @@ -2445,14 +2513,14 @@ var require_crc32 = __commonJS({ // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/utils/common.js var require_common = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/utils/common.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/utils/common.js"(exports2) { "use strict"; + init_polyfill_buffer(); var TYPED_OK = typeof Uint8Array !== "undefined" && typeof Uint16Array !== "undefined" && typeof Int32Array !== "undefined"; function _has(obj, key2) { return Object.prototype.hasOwnProperty.call(obj, key2); } - exports.assign = function(obj) { + exports2.assign = function(obj) { var sources = Array.prototype.slice.call(arguments, 1); while (sources.length) { var source = sources.shift(); @@ -2470,7 +2538,7 @@ var require_common = __commonJS({ } return obj; }; - exports.shrinkBuf = function(buf, size) { + exports2.shrinkBuf = function(buf, size) { if (buf.length === size) { return buf; } @@ -2490,6 +2558,7 @@ var require_common = __commonJS({ dest[dest_offs + i] = src[src_offs + i]; } }, + // Join array of chunks to single array. flattenChunks: function(chunks) { var i, l, len, pos, chunk, result; len = 0; @@ -2512,32 +2581,33 @@ var require_common = __commonJS({ dest[dest_offs + i] = src[src_offs + i]; } }, + // Join array of chunks to single array. flattenChunks: function(chunks) { return [].concat.apply([], chunks); } }; - exports.setTyped = function(on) { + exports2.setTyped = function(on) { if (on) { - exports.Buf8 = Uint8Array; - exports.Buf16 = Uint16Array; - exports.Buf32 = Int32Array; - exports.assign(exports, fnTyped); + exports2.Buf8 = Uint8Array; + exports2.Buf16 = Uint16Array; + exports2.Buf32 = Int32Array; + exports2.assign(exports2, fnTyped); } else { - exports.Buf8 = Array; - exports.Buf16 = Array; - exports.Buf32 = Array; - exports.assign(exports, fnUntyped); + exports2.Buf8 = Array; + exports2.Buf16 = Array; + exports2.Buf32 = Array; + exports2.assign(exports2, fnUntyped); } }; - exports.setTyped(TYPED_OK); + exports2.setTyped(TYPED_OK); } }); // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/trees.js var require_trees = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/trees.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/trees.js"(exports2) { "use strict"; + init_polyfill_buffer(); var utils = require_common(); var Z_FIXED = 4; var Z_BINARY = 0; @@ -2567,9 +2637,18 @@ var require_trees = __commonJS({ var REP_3_6 = 16; var REPZ_3_10 = 17; var REPZ_11_138 = 18; - var extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]; - var extra_dbits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]; - var extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]; + var extra_lbits = ( + /* extra bits for each length code */ + [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0] + ); + var extra_dbits = ( + /* extra bits for each distance code */ + [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13] + ); + var extra_blbits = ( + /* extra bits for each bit length code */ + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7] + ); var bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; var DIST_CODE_LEN = 512; var static_ltree = new Array((L_CODES + 2) * 2); @@ -2619,7 +2698,12 @@ var require_trees = __commonJS({ } } function send_code(s, c, tree) { - send_bits(s, tree[c * 2], tree[c * 2 + 1]); + send_bits( + s, + tree[c * 2], + tree[c * 2 + 1] + /*.Len*/ + ); } function bi_reverse(code, len) { var res = 0; @@ -2908,19 +2992,44 @@ var require_trees = __commonJS({ } node = elems; do { - n = s.heap[1]; - s.heap[1] = s.heap[s.heap_len--]; - pqdownheap(s, tree, 1); - m = s.heap[1]; + n = s.heap[ + 1 + /*SMALLEST*/ + ]; + s.heap[ + 1 + /*SMALLEST*/ + ] = s.heap[s.heap_len--]; + pqdownheap( + s, + tree, + 1 + /*SMALLEST*/ + ); + m = s.heap[ + 1 + /*SMALLEST*/ + ]; s.heap[--s.heap_max] = n; s.heap[--s.heap_max] = m; tree[node * 2] = tree[n * 2] + tree[m * 2]; s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; tree[n * 2 + 1] = tree[m * 2 + 1] = node; - s.heap[1] = node++; - pqdownheap(s, tree, 1); + s.heap[ + 1 + /*SMALLEST*/ + ] = node++; + pqdownheap( + s, + tree, + 1 + /*SMALLEST*/ + ); } while (s.heap_len >= 2); - s.heap[--s.heap_max] = s.heap[1]; + s.heap[--s.heap_max] = s.heap[ + 1 + /*SMALLEST*/ + ]; gen_bitlen(s, desc); gen_codes(tree, max_code, s.bl_count); } @@ -3129,19 +3238,19 @@ var require_trees = __commonJS({ } return s.last_lit === s.lit_bufsize - 1; } - exports._tr_init = _tr_init; - exports._tr_stored_block = _tr_stored_block; - exports._tr_flush_block = _tr_flush_block; - exports._tr_tally = _tr_tally; - exports._tr_align = _tr_align; + exports2._tr_init = _tr_init; + exports2._tr_stored_block = _tr_stored_block; + exports2._tr_flush_block = _tr_flush_block; + exports2._tr_tally = _tr_tally; + exports2._tr_align = _tr_align; } }); // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/adler32.js var require_adler32 = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/adler32.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/adler32.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); function adler32(adler, buf, len, pos) { var s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0; while (len !== 0) { @@ -3162,9 +3271,9 @@ var require_adler32 = __commonJS({ // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/crc32.js var require_crc322 = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/crc32.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/crc32.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); function makeTable() { var c, table = []; for (var n = 0; n < 256; n++) { @@ -3191,28 +3300,37 @@ var require_crc322 = __commonJS({ // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/messages.js var require_messages = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/messages.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/messages.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); module2.exports = { 2: "need dictionary", + /* Z_NEED_DICT 2 */ 1: "stream end", + /* Z_STREAM_END 1 */ 0: "", + /* Z_OK 0 */ "-1": "file error", + /* Z_ERRNO (-1) */ "-2": "stream error", + /* Z_STREAM_ERROR (-2) */ "-3": "data error", + /* Z_DATA_ERROR (-3) */ "-4": "insufficient memory", + /* Z_MEM_ERROR (-4) */ "-5": "buffer error", + /* Z_BUF_ERROR (-5) */ "-6": "incompatible version" + /* Z_VERSION_ERROR (-6) */ }; } }); // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/deflate.js var require_deflate = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/deflate.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/deflate.js"(exports2) { "use strict"; + init_polyfill_buffer(); var utils = require_common(); var trees = require_trees(); var adler32 = require_adler32(); @@ -3730,16 +3848,27 @@ var require_deflate = __commonJS({ } var configuration_table; configuration_table = [ + /* good lazy nice chain */ new Config(0, 0, 0, 0, deflate_stored), + /* 0 store only */ new Config(4, 4, 8, 4, deflate_fast), + /* 1 max speed, no lazy matches */ new Config(4, 5, 16, 8, deflate_fast), + /* 2 */ new Config(4, 6, 32, 32, deflate_fast), + /* 3 */ new Config(4, 4, 16, 16, deflate_slow), + /* 4 lazy matches */ new Config(8, 16, 32, 32, deflate_slow), + /* 5 */ new Config(8, 16, 128, 128, deflate_slow), + /* 6 */ new Config(8, 32, 128, 256, deflate_slow), + /* 7 */ new Config(32, 128, 258, 1024, deflate_slow), + /* 8 */ new Config(32, 258, 258, 4096, deflate_slow) + /* 9 max compression */ ]; function lm_init(s) { s.window_size = 2 * s.w_size; @@ -3857,7 +3986,7 @@ var require_deflate = __commonJS({ strm.state.gzhead = head; return Z_OK; } - function deflateInit2(strm, level, method, windowBits, memLevel, strategy) { + function deflateInit2(strm, level, method2, windowBits, memLevel, strategy) { if (!strm) { return Z_STREAM_ERROR; } @@ -3872,7 +4001,7 @@ var require_deflate = __commonJS({ wrap = 2; windowBits -= 16; } - if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) { + if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method2 !== Z_DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) { return err(strm, Z_STREAM_ERROR); } if (windowBits === 8) { @@ -3900,7 +4029,7 @@ var require_deflate = __commonJS({ s.l_buf = (1 + 2) * s.lit_bufsize; s.level = level; s.strategy = strategy; - s.method = method; + s.method = method2; return deflateReset(strm); } function deflateInit(strm, level) { @@ -3935,7 +4064,10 @@ var require_deflate = __commonJS({ put_byte(s, OS_CODE); s.status = BUSY_STATE; } else { - put_byte(s, (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16)); + put_byte( + s, + (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16) + ); put_byte(s, s.gzhead.time & 255); put_byte(s, s.gzhead.time >> 8 & 255); put_byte(s, s.gzhead.time >> 16 & 255); @@ -4232,23 +4364,23 @@ var require_deflate = __commonJS({ s.wrap = wrap; return Z_OK; } - exports.deflateInit = deflateInit; - exports.deflateInit2 = deflateInit2; - exports.deflateReset = deflateReset; - exports.deflateResetKeep = deflateResetKeep; - exports.deflateSetHeader = deflateSetHeader; - exports.deflate = deflate2; - exports.deflateEnd = deflateEnd; - exports.deflateSetDictionary = deflateSetDictionary; - exports.deflateInfo = "pako deflate (from Nodeca project)"; + exports2.deflateInit = deflateInit; + exports2.deflateInit2 = deflateInit2; + exports2.deflateReset = deflateReset; + exports2.deflateResetKeep = deflateResetKeep; + exports2.deflateSetHeader = deflateSetHeader; + exports2.deflate = deflate2; + exports2.deflateEnd = deflateEnd; + exports2.deflateSetDictionary = deflateSetDictionary; + exports2.deflateInfo = "pako deflate (from Nodeca project)"; } }); // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/utils/strings.js var require_strings = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/utils/strings.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/utils/strings.js"(exports2) { "use strict"; + init_polyfill_buffer(); var utils = require_common(); var STR_APPLY_OK = true; var STR_APPLY_UIA_OK = true; @@ -4268,7 +4400,7 @@ var require_strings = __commonJS({ } var q; _utf8len[254] = _utf8len[254] = 1; - exports.string2buf = function(str) { + exports2.string2buf = function(str) { var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0; for (m_pos = 0; m_pos < str_len; m_pos++) { c = str.charCodeAt(m_pos); @@ -4321,17 +4453,17 @@ var require_strings = __commonJS({ } return result; } - exports.buf2binstring = function(buf) { + exports2.buf2binstring = function(buf) { return buf2binstring(buf, buf.length); }; - exports.binstring2buf = function(str) { + exports2.binstring2buf = function(str) { var buf = new utils.Buf8(str.length); for (var i = 0, len = buf.length; i < len; i++) { buf[i] = str.charCodeAt(i); } return buf; }; - exports.buf2string = function(buf, max) { + exports2.buf2string = function(buf, max) { var i, out, c, c_len; var len = max || buf.length; var utf16buf = new Array(len * 2); @@ -4366,7 +4498,7 @@ var require_strings = __commonJS({ } return buf2binstring(utf16buf, out); }; - exports.utf8border = function(buf, max) { + exports2.utf8border = function(buf, max) { var pos; max = max || buf.length; if (max > buf.length) { @@ -4389,9 +4521,9 @@ var require_strings = __commonJS({ // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/zstream.js var require_zstream = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/zstream.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/zstream.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); function ZStream() { this.input = null; this.next_in = 0; @@ -4412,9 +4544,9 @@ var require_zstream = __commonJS({ // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/deflate.js var require_deflate2 = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/deflate.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/deflate.js"(exports2) { "use strict"; + init_polyfill_buffer(); var zlib_deflate = require_deflate(); var utils = require_common(); var strings = require_strings(); @@ -4453,7 +4585,14 @@ var require_deflate2 = __commonJS({ this.chunks = []; this.strm = new ZStream(); this.strm.avail_out = 0; - var status2 = zlib_deflate.deflateInit2(this.strm, opt.level, opt.method, opt.windowBits, opt.memLevel, opt.strategy); + var status2 = zlib_deflate.deflateInit2( + this.strm, + opt.level, + opt.method, + opt.windowBits, + opt.memLevel, + opt.strategy + ); if (status2 !== Z_OK) { throw new Error(msg[status2]); } @@ -4559,18 +4698,18 @@ var require_deflate2 = __commonJS({ options.gzip = true; return deflate2(input, options); } - exports.Deflate = Deflate; - exports.deflate = deflate2; - exports.deflateRaw = deflateRaw; - exports.gzip = gzip; + exports2.Deflate = Deflate; + exports2.deflate = deflate2; + exports2.deflateRaw = deflateRaw; + exports2.gzip = gzip; } }); // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inffast.js var require_inffast = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inffast.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inffast.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); var BAD = 30; var TYPE = 12; module2.exports = function inflate_fast(strm, start) { @@ -4798,9 +4937,9 @@ var require_inffast = __commonJS({ // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inftrees.js var require_inftrees = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inftrees.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inftrees.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); var utils = require_common(); var MAXBITS = 15; var ENOUGH_LENS = 852; @@ -4809,6 +4948,7 @@ var require_inftrees = __commonJS({ var LENS = 1; var DISTS = 2; var lbase = [ + /* Length codes 257..285 base */ 3, 4, 5, @@ -4842,6 +4982,7 @@ var require_inftrees = __commonJS({ 0 ]; var lext = [ + /* Length codes 257..285 extra */ 16, 16, 16, @@ -4875,6 +5016,7 @@ var require_inftrees = __commonJS({ 78 ]; var dbase = [ + /* Distance codes 0..29 base */ 1, 2, 3, @@ -4909,6 +5051,7 @@ var require_inftrees = __commonJS({ 0 ]; var dext = [ + /* Distance codes 0..29 extra */ 16, 16, 16, @@ -4947,7 +5090,7 @@ var require_inftrees = __commonJS({ var len = 0; var sym = 0; var min = 0, max = 0; - var root = 0; + var root2 = 0; var curr = 0; var drop = 0; var left = 0; @@ -4972,14 +5115,14 @@ var require_inftrees = __commonJS({ for (sym = 0; sym < codes; sym++) { count[lens[lens_index + sym]]++; } - root = bits; + root2 = bits; for (max = MAXBITS; max >= 1; max--) { if (count[max] !== 0) { break; } } - if (root > max) { - root = max; + if (root2 > max) { + root2 = max; } if (max === 0) { table[table_index++] = 1 << 24 | 64 << 16 | 0; @@ -4992,8 +5135,8 @@ var require_inftrees = __commonJS({ break; } } - if (root < min) { - root = min; + if (root2 < min) { + root2 = min; } left = 1; for (len = 1; len <= MAXBITS; len++) { @@ -5033,10 +5176,10 @@ var require_inftrees = __commonJS({ sym = 0; len = min; next = table_index; - curr = root; + curr = root2; drop = 0; low = -1; - used = 1 << root; + used = 1 << root2; mask = used - 1; if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) { return 1; @@ -5077,9 +5220,9 @@ var require_inftrees = __commonJS({ } len = lens[lens_index + work[sym]]; } - if (len > root && (huff & mask) !== low) { + if (len > root2 && (huff & mask) !== low) { if (drop === 0) { - drop = root; + drop = root2; } next += min; curr = len - drop; @@ -5097,13 +5240,13 @@ var require_inftrees = __commonJS({ return 1; } low = huff & mask; - table[low] = root << 24 | curr << 16 | next - table_index | 0; + table[low] = root2 << 24 | curr << 16 | next - table_index | 0; } } if (huff !== 0) { table[next + huff] = len - drop << 24 | 64 << 16 | 0; } - opts.bits = root; + opts.bits = root2; return 0; }; } @@ -5111,9 +5254,9 @@ var require_inftrees = __commonJS({ // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inflate.js var require_inflate = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inflate.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inflate.js"(exports2) { "use strict"; + init_polyfill_buffer(); var utils = require_common(); var adler32 = require_adler32(); var crc322 = require_crc322(); @@ -5138,7 +5281,7 @@ var require_inflate = __commonJS({ var TIME = 3; var OS = 4; var EXLEN = 5; - var EXTRA = 6; + var EXTRA2 = 6; var NAME = 7; var COMMENT = 8; var HCRC = 9; @@ -5378,7 +5521,10 @@ var require_inflate = __commonJS({ var hbuf = new utils.Buf8(4); var opts; var n; - var order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; + var order = ( + /* permutation of code lengths */ + [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15] + ); if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) { return Z_STREAM_ERROR; } @@ -5427,7 +5573,8 @@ var require_inflate = __commonJS({ if (state.head) { state.head.done = false; } - if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) { + if (!(state.wrap & 1) || /* check if zlib header allowed */ + (((hold & 255) << 8) + (hold >> 8)) % 31) { strm.msg = "incorrect header check"; state.mode = BAD; break; @@ -5551,8 +5698,8 @@ var require_inflate = __commonJS({ } else if (state.head) { state.head.extra = null; } - state.mode = EXTRA; - case EXTRA: + state.mode = EXTRA2; + case EXTRA2: if (state.flags & 1024) { copy2 = state.length; if (copy2 > have) { @@ -5564,7 +5711,16 @@ var require_inflate = __commonJS({ if (!state.head.extra) { state.head.extra = new Array(state.head.extra_len); } - utils.arraySet(state.head.extra, input, next, copy2, len); + utils.arraySet( + state.head.extra, + input, + next, + // extra field is limited to 65536 bytes + // - no need for additional size check + copy2, + /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ + len + ); } if (state.flags & 512) { state.check = crc322(state.check, input, copy2, next); @@ -6177,7 +6333,8 @@ var require_inflate = __commonJS({ strm.total_out += _out; state.total += _out; if (_out) { - strm.adler = state.check = state.flags ? crc322(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out); + strm.adler = state.check = /*UPDATE(state.check, put - _out, _out);*/ + state.flags ? crc322(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out); } _out = left; if ((state.flags ? hold : zswap32(hold)) !== state.check) { @@ -6239,7 +6396,8 @@ var require_inflate = __commonJS({ strm.total_out += _out; state.total += _out; if (state.wrap && _out) { - strm.adler = state.check = state.flags ? crc322(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out); + strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ + state.flags ? crc322(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out); } strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); if ((_in === 0 && _out === 0 || flush2 === Z_FINISH) && ret === Z_OK) { @@ -6298,25 +6456,26 @@ var require_inflate = __commonJS({ state.havedict = 1; return Z_OK; } - exports.inflateReset = inflateReset; - exports.inflateReset2 = inflateReset2; - exports.inflateResetKeep = inflateResetKeep; - exports.inflateInit = inflateInit; - exports.inflateInit2 = inflateInit2; - exports.inflate = inflate2; - exports.inflateEnd = inflateEnd; - exports.inflateGetHeader = inflateGetHeader; - exports.inflateSetDictionary = inflateSetDictionary; - exports.inflateInfo = "pako inflate (from Nodeca project)"; + exports2.inflateReset = inflateReset; + exports2.inflateReset2 = inflateReset2; + exports2.inflateResetKeep = inflateResetKeep; + exports2.inflateInit = inflateInit; + exports2.inflateInit2 = inflateInit2; + exports2.inflate = inflate2; + exports2.inflateEnd = inflateEnd; + exports2.inflateGetHeader = inflateGetHeader; + exports2.inflateSetDictionary = inflateSetDictionary; + exports2.inflateInfo = "pako inflate (from Nodeca project)"; } }); // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/constants.js var require_constants = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/constants.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/constants.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); module2.exports = { + /* Allowed flush values; see deflate() and inflate() below for details */ Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, @@ -6324,13 +6483,19 @@ var require_constants = __commonJS({ Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, + /* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, + //Z_MEM_ERROR: -4, Z_BUF_ERROR: -5, + //Z_VERSION_ERROR: -6, + /* compression levels */ Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, @@ -6340,19 +6505,23 @@ var require_constants = __commonJS({ Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, + /* Possible values of the data_type field (though see inflate()) */ Z_BINARY: 0, Z_TEXT: 1, + //Z_ASCII: 1, // = Z_TEXT (deprecated) Z_UNKNOWN: 2, + /* The deflate compression method */ Z_DEFLATED: 8 + //Z_NULL: null // Use -1 or null inline, depending on var type }; } }); // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/gzheader.js var require_gzheader = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/gzheader.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/gzheader.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); function GZheader() { this.text = 0; this.time = 0; @@ -6371,9 +6540,9 @@ var require_gzheader = __commonJS({ // node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/inflate.js var require_inflate2 = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/inflate.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/inflate.js"(exports2) { "use strict"; + init_polyfill_buffer(); var zlib_inflate = require_inflate(); var utils = require_common(); var strings = require_strings(); @@ -6411,7 +6580,10 @@ var require_inflate2 = __commonJS({ this.chunks = []; this.strm = new ZStream(); this.strm.avail_out = 0; - var status2 = zlib_inflate.inflateInit2(this.strm, opt.windowBits); + var status2 = zlib_inflate.inflateInit2( + this.strm, + opt.windowBits + ); if (status2 !== c.Z_OK) { throw new Error(msg[status2]); } @@ -6535,18 +6707,18 @@ var require_inflate2 = __commonJS({ options.raw = true; return inflate2(input, options); } - exports.Inflate = Inflate; - exports.inflate = inflate2; - exports.inflateRaw = inflateRaw; - exports.ungzip = inflate2; + exports2.Inflate = Inflate; + exports2.inflate = inflate2; + exports2.inflateRaw = inflateRaw; + exports2.ungzip = inflate2; } }); // node_modules/.pnpm/pako@1.0.11/node_modules/pako/index.js var require_pako = __commonJS({ - "node_modules/.pnpm/pako@1.0.11/node_modules/pako/index.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/pako@1.0.11/node_modules/pako/index.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); var assign2 = require_common().assign; var deflate2 = require_deflate2(); var inflate2 = require_inflate2(); @@ -6557,265 +6729,11 @@ var require_pako = __commonJS({ } }); -// node_modules/.pnpm/ignore@5.2.4/node_modules/ignore/index.js -var require_ignore = __commonJS({ - "node_modules/.pnpm/ignore@5.2.4/node_modules/ignore/index.js"(exports, module2) { - init_polyfill_buffer(); - function makeArray(subject) { - return Array.isArray(subject) ? subject : [subject]; - } - var EMPTY = ""; - var SPACE = " "; - var ESCAPE = "\\"; - var REGEX_TEST_BLANK_LINE = /^\s+$/; - var REGEX_INVALID_TRAILING_BACKSLASH = /(?:[^\\]|^)\\$/; - var REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/; - var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/; - var REGEX_SPLITALL_CRLF = /\r?\n/g; - var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/; - var SLASH = "/"; - var TMP_KEY_IGNORE = "node-ignore"; - if (typeof Symbol !== "undefined") { - TMP_KEY_IGNORE = Symbol.for("node-ignore"); - } - var KEY_IGNORE = TMP_KEY_IGNORE; - var define2 = (object, key2, value) => Object.defineProperty(object, key2, { value }); - var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g; - var RETURN_FALSE = () => false; - var sanitizeRange = (range) => range.replace(REGEX_REGEXP_RANGE, (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) ? match : EMPTY); - var cleanRangeBackSlash = (slashes) => { - const { length } = slashes; - return slashes.slice(0, length - length % 2); - }; - var REPLACERS = [ - [ - /\\?\s+$/, - (match) => match.indexOf("\\") === 0 ? SPACE : EMPTY - ], - [ - /\\\s/g, - () => SPACE - ], - [ - /[\\$.|*+(){^]/g, - (match) => `\\${match}` - ], - [ - /(?!\\)\?/g, - () => "[^/]" - ], - [ - /^\//, - () => "^" - ], - [ - /\//g, - () => "\\/" - ], - [ - /^\^*\\\*\\\*\\\//, - () => "^(?:.*\\/)?" - ], - [ - /^(?=[^^])/, - function startingReplacer() { - return !/\/(?!$)/.test(this) ? "(?:^|\\/)" : "^"; - } - ], - [ - /\\\/\\\*\\\*(?=\\\/|$)/g, - (_, index2, str) => index2 + 6 < str.length ? "(?:\\/[^\\/]+)*" : "\\/.+" - ], - [ - /(^|[^\\]+)(\\\*)+(?=.+)/g, - (_, p1, p2) => { - const unescaped = p2.replace(/\\\*/g, "[^\\/]*"); - return p1 + unescaped; - } - ], - [ - /\\\\\\(?=[$.|*+(){^])/g, - () => ESCAPE - ], - [ - /\\\\/g, - () => ESCAPE - ], - [ - /(\\)?\[([^\]/]*?)(\\*)($|\])/g, - (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE ? `\\[${range}${cleanRangeBackSlash(endEscape)}${close}` : close === "]" ? endEscape.length % 2 === 0 ? `[${sanitizeRange(range)}${endEscape}]` : "[]" : "[]" - ], - [ - /(?:[^*])$/, - (match) => /\/$/.test(match) ? `${match}$` : `${match}(?=$|\\/$)` - ], - [ - /(\^|\\\/)?\\\*$/, - (_, p1) => { - const prefix = p1 ? `${p1}[^/]+` : "[^/]*"; - return `${prefix}(?=$|\\/$)`; - } - ] - ]; - var regexCache = Object.create(null); - var makeRegex = (pattern, ignoreCase) => { - let source = regexCache[pattern]; - if (!source) { - source = REPLACERS.reduce((prev, current) => prev.replace(current[0], current[1].bind(pattern)), pattern); - regexCache[pattern] = source; - } - return ignoreCase ? new RegExp(source, "i") : new RegExp(source); - }; - var isString = (subject) => typeof subject === "string"; - var checkPattern = (pattern) => pattern && isString(pattern) && !REGEX_TEST_BLANK_LINE.test(pattern) && !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern) && pattern.indexOf("#") !== 0; - var splitPattern = (pattern) => pattern.split(REGEX_SPLITALL_CRLF); - var IgnoreRule = class { - constructor(origin, pattern, negative, regex2) { - this.origin = origin; - this.pattern = pattern; - this.negative = negative; - this.regex = regex2; - } - }; - var createRule = (pattern, ignoreCase) => { - const origin = pattern; - let negative = false; - if (pattern.indexOf("!") === 0) { - negative = true; - pattern = pattern.substr(1); - } - pattern = pattern.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, "!").replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, "#"); - const regex2 = makeRegex(pattern, ignoreCase); - return new IgnoreRule(origin, pattern, negative, regex2); - }; - var throwError = (message, Ctor) => { - throw new Ctor(message); - }; - var checkPath = (path2, originalPath, doThrow) => { - if (!isString(path2)) { - return doThrow(`path must be a string, but got \`${originalPath}\``, TypeError); - } - if (!path2) { - return doThrow(`path must not be empty`, TypeError); - } - if (checkPath.isNotRelative(path2)) { - const r = "`path.relative()`d"; - return doThrow(`path should be a ${r} string, but got "${originalPath}"`, RangeError); - } - return true; - }; - var isNotRelative = (path2) => REGEX_TEST_INVALID_PATH.test(path2); - checkPath.isNotRelative = isNotRelative; - checkPath.convert = (p) => p; - var Ignore = class { - constructor({ - ignorecase = true, - ignoreCase = ignorecase, - allowRelativePaths = false - } = {}) { - define2(this, KEY_IGNORE, true); - this._rules = []; - this._ignoreCase = ignoreCase; - this._allowRelativePaths = allowRelativePaths; - this._initCache(); - } - _initCache() { - this._ignoreCache = Object.create(null); - this._testCache = Object.create(null); - } - _addPattern(pattern) { - if (pattern && pattern[KEY_IGNORE]) { - this._rules = this._rules.concat(pattern._rules); - this._added = true; - return; - } - if (checkPattern(pattern)) { - const rule = createRule(pattern, this._ignoreCase); - this._added = true; - this._rules.push(rule); - } - } - add(pattern) { - this._added = false; - makeArray(isString(pattern) ? splitPattern(pattern) : pattern).forEach(this._addPattern, this); - if (this._added) { - this._initCache(); - } - return this; - } - addPattern(pattern) { - return this.add(pattern); - } - _testOne(path2, checkUnignored) { - let ignored = false; - let unignored = false; - this._rules.forEach((rule) => { - const { negative } = rule; - if (unignored === negative && ignored !== unignored || negative && !ignored && !unignored && !checkUnignored) { - return; - } - const matched = rule.regex.test(path2); - if (matched) { - ignored = !negative; - unignored = negative; - } - }); - return { - ignored, - unignored - }; - } - _test(originalPath, cache, checkUnignored, slices) { - const path2 = originalPath && checkPath.convert(originalPath); - checkPath(path2, originalPath, this._allowRelativePaths ? RETURN_FALSE : throwError); - return this._t(path2, cache, checkUnignored, slices); - } - _t(path2, cache, checkUnignored, slices) { - if (path2 in cache) { - return cache[path2]; - } - if (!slices) { - slices = path2.split(SLASH); - } - slices.pop(); - if (!slices.length) { - return cache[path2] = this._testOne(path2, checkUnignored); - } - const parent = this._t(slices.join(SLASH) + SLASH, cache, checkUnignored, slices); - return cache[path2] = parent.ignored ? parent : this._testOne(path2, checkUnignored); - } - ignores(path2) { - return this._test(path2, this._ignoreCache, false).ignored; - } - createFilter() { - return (path2) => !this.ignores(path2); - } - filter(paths) { - return makeArray(paths).filter(this.createFilter()); - } - test(path2) { - return this._test(path2, this._testCache, true); - } - }; - var factory = (options) => new Ignore(options); - var isPathValid = (path2) => checkPath(path2 && checkPath.convert(path2), path2, RETURN_FALSE); - factory.isPathValid = isPathValid; - factory.default = factory; - module2.exports = factory; - if (typeof process !== "undefined" && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === "win32")) { - const makePosix = (str) => /^\\\\\?\\/.test(str) || /["<>|\u0000-\u001F]+/u.test(str) ? str : str.replace(/\\/g, "/"); - checkPath.convert = makePosix; - const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i; - checkPath.isNotRelative = (path2) => REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path2) || isNotRelative(path2); - } - } -}); - // node_modules/.pnpm/pify@4.0.1/node_modules/pify/index.js var require_pify = __commonJS({ - "node_modules/.pnpm/pify@4.0.1/node_modules/pify/index.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/pify@4.0.1/node_modules/pify/index.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); var processFn = (fn, options) => function(...args) { const P = options.promiseModule; return new P((resolve, reject) => { @@ -6877,11 +6795,385 @@ var require_pify = __commonJS({ } }); +// node_modules/.pnpm/ignore@5.2.4/node_modules/ignore/index.js +var require_ignore = __commonJS({ + "node_modules/.pnpm/ignore@5.2.4/node_modules/ignore/index.js"(exports2, module2) { + init_polyfill_buffer(); + function makeArray(subject) { + return Array.isArray(subject) ? subject : [subject]; + } + var EMPTY = ""; + var SPACE = " "; + var ESCAPE = "\\"; + var REGEX_TEST_BLANK_LINE = /^\s+$/; + var REGEX_INVALID_TRAILING_BACKSLASH = /(?:[^\\]|^)\\$/; + var REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/; + var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/; + var REGEX_SPLITALL_CRLF = /\r?\n/g; + var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/; + var SLASH = "/"; + var TMP_KEY_IGNORE = "node-ignore"; + if (typeof Symbol !== "undefined") { + TMP_KEY_IGNORE = Symbol.for("node-ignore"); + } + var KEY_IGNORE = TMP_KEY_IGNORE; + var define2 = (object, key2, value) => Object.defineProperty(object, key2, { value }); + var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g; + var RETURN_FALSE = () => false; + var sanitizeRange = (range) => range.replace( + REGEX_REGEXP_RANGE, + (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) ? match : EMPTY + ); + var cleanRangeBackSlash = (slashes) => { + const { length } = slashes; + return slashes.slice(0, length - length % 2); + }; + var REPLACERS = [ + // > Trailing spaces are ignored unless they are quoted with backslash ("\") + [ + // (a\ ) -> (a ) + // (a ) -> (a) + // (a \ ) -> (a ) + /\\?\s+$/, + (match) => match.indexOf("\\") === 0 ? SPACE : EMPTY + ], + // replace (\ ) with ' ' + [ + /\\\s/g, + () => SPACE + ], + // Escape metacharacters + // which is written down by users but means special for regular expressions. + // > There are 12 characters with special meanings: + // > - the backslash \, + // > - the caret ^, + // > - the dollar sign $, + // > - the period or dot ., + // > - the vertical bar or pipe symbol |, + // > - the question mark ?, + // > - the asterisk or star *, + // > - the plus sign +, + // > - the opening parenthesis (, + // > - the closing parenthesis ), + // > - and the opening square bracket [, + // > - the opening curly brace {, + // > These special characters are often called "metacharacters". + [ + /[\\$.|*+(){^]/g, + (match) => `\\${match}` + ], + [ + // > a question mark (?) matches a single character + /(?!\\)\?/g, + () => "[^/]" + ], + // leading slash + [ + // > A leading slash matches the beginning of the pathname. + // > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c". + // A leading slash matches the beginning of the pathname + /^\//, + () => "^" + ], + // replace special metacharacter slash after the leading slash + [ + /\//g, + () => "\\/" + ], + [ + // > A leading "**" followed by a slash means match in all directories. + // > For example, "**/foo" matches file or directory "foo" anywhere, + // > the same as pattern "foo". + // > "**/foo/bar" matches file or directory "bar" anywhere that is directly + // > under directory "foo". + // Notice that the '*'s have been replaced as '\\*' + /^\^*\\\*\\\*\\\//, + // '**/foo' <-> 'foo' + () => "^(?:.*\\/)?" + ], + // starting + [ + // there will be no leading '/' + // (which has been replaced by section "leading slash") + // If starts with '**', adding a '^' to the regular expression also works + /^(?=[^^])/, + function startingReplacer() { + return !/\/(?!$)/.test(this) ? "(?:^|\\/)" : "^"; + } + ], + // two globstars + [ + // Use lookahead assertions so that we could match more than one `'/**'` + /\\\/\\\*\\\*(?=\\\/|$)/g, + // Zero, one or several directories + // should not use '*', or it will be replaced by the next replacer + // Check if it is not the last `'/**'` + (_, index2, str) => index2 + 6 < str.length ? "(?:\\/[^\\/]+)*" : "\\/.+" + ], + // normal intermediate wildcards + [ + // Never replace escaped '*' + // ignore rule '\*' will match the path '*' + // 'abc.*/' -> go + // 'abc.*' -> skip this rule, + // coz trailing single wildcard will be handed by [trailing wildcard] + /(^|[^\\]+)(\\\*)+(?=.+)/g, + // '*.js' matches '.js' + // '*.js' doesn't match 'abc' + (_, p1, p2) => { + const unescaped = p2.replace(/\\\*/g, "[^\\/]*"); + return p1 + unescaped; + } + ], + [ + // unescape, revert step 3 except for back slash + // For example, if a user escape a '\\*', + // after step 3, the result will be '\\\\\\*' + /\\\\\\(?=[$.|*+(){^])/g, + () => ESCAPE + ], + [ + // '\\\\' -> '\\' + /\\\\/g, + () => ESCAPE + ], + [ + // > The range notation, e.g. [a-zA-Z], + // > can be used to match one of the characters in a range. + // `\` is escaped by step 3 + /(\\)?\[([^\]/]*?)(\\*)($|\])/g, + (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE ? `\\[${range}${cleanRangeBackSlash(endEscape)}${close}` : close === "]" ? endEscape.length % 2 === 0 ? `[${sanitizeRange(range)}${endEscape}]` : "[]" : "[]" + ], + // ending + [ + // 'js' will not match 'js.' + // 'ab' will not match 'abc' + /(?:[^*])$/, + // WTF! + // https://git-scm.com/docs/gitignore + // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1) + // which re-fixes #24, #38 + // > If there is a separator at the end of the pattern then the pattern + // > will only match directories, otherwise the pattern can match both + // > files and directories. + // 'js*' will not match 'a.js' + // 'js/' will not match 'a.js' + // 'js' will match 'a.js' and 'a.js/' + (match) => /\/$/.test(match) ? `${match}$` : `${match}(?=$|\\/$)` + ], + // trailing wildcard + [ + /(\^|\\\/)?\\\*$/, + (_, p1) => { + const prefix = p1 ? `${p1}[^/]+` : "[^/]*"; + return `${prefix}(?=$|\\/$)`; + } + ] + ]; + var regexCache = /* @__PURE__ */ Object.create(null); + var makeRegex = (pattern, ignoreCase) => { + let source = regexCache[pattern]; + if (!source) { + source = REPLACERS.reduce( + (prev, current) => prev.replace(current[0], current[1].bind(pattern)), + pattern + ); + regexCache[pattern] = source; + } + return ignoreCase ? new RegExp(source, "i") : new RegExp(source); + }; + var isString = (subject) => typeof subject === "string"; + var checkPattern = (pattern) => pattern && isString(pattern) && !REGEX_TEST_BLANK_LINE.test(pattern) && !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern) && pattern.indexOf("#") !== 0; + var splitPattern = (pattern) => pattern.split(REGEX_SPLITALL_CRLF); + var IgnoreRule = class { + constructor(origin, pattern, negative, regex2) { + this.origin = origin; + this.pattern = pattern; + this.negative = negative; + this.regex = regex2; + } + }; + var createRule = (pattern, ignoreCase) => { + const origin = pattern; + let negative = false; + if (pattern.indexOf("!") === 0) { + negative = true; + pattern = pattern.substr(1); + } + pattern = pattern.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, "!").replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, "#"); + const regex2 = makeRegex(pattern, ignoreCase); + return new IgnoreRule( + origin, + pattern, + negative, + regex2 + ); + }; + var throwError = (message, Ctor) => { + throw new Ctor(message); + }; + var checkPath = (path2, originalPath, doThrow) => { + if (!isString(path2)) { + return doThrow( + `path must be a string, but got \`${originalPath}\``, + TypeError + ); + } + if (!path2) { + return doThrow(`path must not be empty`, TypeError); + } + if (checkPath.isNotRelative(path2)) { + const r = "`path.relative()`d"; + return doThrow( + `path should be a ${r} string, but got "${originalPath}"`, + RangeError + ); + } + return true; + }; + var isNotRelative = (path2) => REGEX_TEST_INVALID_PATH.test(path2); + checkPath.isNotRelative = isNotRelative; + checkPath.convert = (p) => p; + var Ignore = class { + constructor({ + ignorecase = true, + ignoreCase = ignorecase, + allowRelativePaths = false + } = {}) { + define2(this, KEY_IGNORE, true); + this._rules = []; + this._ignoreCase = ignoreCase; + this._allowRelativePaths = allowRelativePaths; + this._initCache(); + } + _initCache() { + this._ignoreCache = /* @__PURE__ */ Object.create(null); + this._testCache = /* @__PURE__ */ Object.create(null); + } + _addPattern(pattern) { + if (pattern && pattern[KEY_IGNORE]) { + this._rules = this._rules.concat(pattern._rules); + this._added = true; + return; + } + if (checkPattern(pattern)) { + const rule = createRule(pattern, this._ignoreCase); + this._added = true; + this._rules.push(rule); + } + } + // @param {Array | string | Ignore} pattern + add(pattern) { + this._added = false; + makeArray( + isString(pattern) ? splitPattern(pattern) : pattern + ).forEach(this._addPattern, this); + if (this._added) { + this._initCache(); + } + return this; + } + // legacy + addPattern(pattern) { + return this.add(pattern); + } + // | ignored : unignored + // negative | 0:0 | 0:1 | 1:0 | 1:1 + // -------- | ------- | ------- | ------- | -------- + // 0 | TEST | TEST | SKIP | X + // 1 | TESTIF | SKIP | TEST | X + // - SKIP: always skip + // - TEST: always test + // - TESTIF: only test if checkUnignored + // - X: that never happen + // @param {boolean} whether should check if the path is unignored, + // setting `checkUnignored` to `false` could reduce additional + // path matching. + // @returns {TestResult} true if a file is ignored + _testOne(path2, checkUnignored) { + let ignored = false; + let unignored = false; + this._rules.forEach((rule) => { + const { negative } = rule; + if (unignored === negative && ignored !== unignored || negative && !ignored && !unignored && !checkUnignored) { + return; + } + const matched = rule.regex.test(path2); + if (matched) { + ignored = !negative; + unignored = negative; + } + }); + return { + ignored, + unignored + }; + } + // @returns {TestResult} + _test(originalPath, cache, checkUnignored, slices) { + const path2 = originalPath && checkPath.convert(originalPath); + checkPath( + path2, + originalPath, + this._allowRelativePaths ? RETURN_FALSE : throwError + ); + return this._t(path2, cache, checkUnignored, slices); + } + _t(path2, cache, checkUnignored, slices) { + if (path2 in cache) { + return cache[path2]; + } + if (!slices) { + slices = path2.split(SLASH); + } + slices.pop(); + if (!slices.length) { + return cache[path2] = this._testOne(path2, checkUnignored); + } + const parent = this._t( + slices.join(SLASH) + SLASH, + cache, + checkUnignored, + slices + ); + return cache[path2] = parent.ignored ? parent : this._testOne(path2, checkUnignored); + } + ignores(path2) { + return this._test(path2, this._ignoreCache, false).ignored; + } + createFilter() { + return (path2) => !this.ignores(path2); + } + filter(paths) { + return makeArray(paths).filter(this.createFilter()); + } + // @returns {TestResult} + test(path2) { + return this._test(path2, this._testCache, true); + } + }; + var factory = (options) => new Ignore(options); + var isPathValid = (path2) => checkPath(path2 && checkPath.convert(path2), path2, RETURN_FALSE); + factory.isPathValid = isPathValid; + factory.default = factory; + module2.exports = factory; + if ( + // Detect `process` so that it can run in browsers. + typeof process !== "undefined" && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === "win32") + ) { + const makePosix = (str) => /^\\\\\?\\/.test(str) || /["<>|\u0000-\u001F]+/u.test(str) ? str : str.replace(/\\/g, "/"); + checkPath.convert = makePosix; + const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i; + checkPath.isNotRelative = (path2) => REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path2) || isNotRelative(path2); + } + } +}); + // node_modules/.pnpm/clean-git-ref@2.0.1/node_modules/clean-git-ref/lib/index.js var require_lib2 = __commonJS({ - "node_modules/.pnpm/clean-git-ref@2.0.1/node_modules/clean-git-ref/lib/index.js"(exports, module2) { - init_polyfill_buffer(); + "node_modules/.pnpm/clean-git-ref@2.0.1/node_modules/clean-git-ref/lib/index.js"(exports2, module2) { "use strict"; + init_polyfill_buffer(); function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); } @@ -6913,7 +7205,7 @@ var require_lib2 = __commonJS({ // node_modules/.pnpm/diff3@0.0.3/node_modules/diff3/onp.js var require_onp = __commonJS({ - "node_modules/.pnpm/diff3@0.0.3/node_modules/diff3/onp.js"(exports, module2) { + "node_modules/.pnpm/diff3@0.0.3/node_modules/diff3/onp.js"(exports2, module2) { init_polyfill_buffer(); module2.exports = function(a_, b_) { var a = a_, b = b_, m = a.length, n = b.length, reverse = false, ed = null, offset = m + 1, path2 = [], pathposi = [], ses = [], lcs = "", SES_DELETE = -1, SES_COMMON = 0, SES_ADD = 1; @@ -7043,14 +7335,14 @@ var require_onp = __commonJS({ // node_modules/.pnpm/diff3@0.0.3/node_modules/diff3/diff3.js var require_diff3 = __commonJS({ - "node_modules/.pnpm/diff3@0.0.3/node_modules/diff3/diff3.js"(exports, module2) { + "node_modules/.pnpm/diff3@0.0.3/node_modules/diff3/diff3.js"(exports2, module2) { init_polyfill_buffer(); var onp = require_onp(); function longestCommonSubsequence(file1, file2) { var diff2 = new onp(file1, file2); diff2.compose(); var ses = diff2.getses(); - var root; + var root2; var prev; var file1RevIdx = file1.length - 1, file2RevIdx = file2.length - 1; for (var i = ses.length - 1; i >= 0; --i) { @@ -7063,12 +7355,12 @@ var require_diff3 = __commonJS({ }; prev = prev.chain; } else { - root = { + root2 = { file1index: file1RevIdx, file2index: file2RevIdx, chain: null }; - prev = root; + prev = root2; } file1RevIdx--; file2RevIdx--; @@ -7087,7 +7379,7 @@ var require_diff3 = __commonJS({ return tail; } prev.chain = tail; - return root; + return root2; } function diffIndices(file1, file2) { var result = []; @@ -7249,7 +7541,7 @@ var require_diff3 = __commonJS({ // node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js var require_ms = __commonJS({ - "node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js"(exports, module2) { + "node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js"(exports2, module2) { init_polyfill_buffer(); var s = 1e3; var m = s * 60; @@ -7265,14 +7557,18 @@ var require_ms = __commonJS({ } else if (type === "number" && isFinite(val)) { return options.long ? fmtLong(val) : fmtShort(val); } - throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val)); + throw new Error( + "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) + ); }; function parse2(str) { str = String(str); if (str.length > 100) { return; } - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str); + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); if (!match) { return; } @@ -7362,7 +7658,7 @@ var require_ms = __commonJS({ // node_modules/.pnpm/debug@4.3.4_supports-color@7.2.0/node_modules/debug/src/common.js var require_common2 = __commonJS({ - "node_modules/.pnpm/debug@4.3.4_supports-color@7.2.0/node_modules/debug/src/common.js"(exports, module2) { + "node_modules/.pnpm/debug@4.3.4_supports-color@7.2.0/node_modules/debug/src/common.js"(exports2, module2) { init_polyfill_buffer(); function setup(env) { createDebug.debug = createDebug; @@ -7393,16 +7689,16 @@ var require_common2 = __commonJS({ let enableOverride = null; let namespacesCache; let enabledCache; - function debug2(...args) { - if (!debug2.enabled) { + function debug3(...args) { + if (!debug3.enabled) { return; } - const self3 = debug2; - const curr = Number(new Date()); + const self2 = debug3; + const curr = Number(/* @__PURE__ */ new Date()); const ms = curr - (prevTime || curr); - self3.diff = ms; - self3.prev = prevTime; - self3.curr = curr; + self2.diff = ms; + self2.prev = prevTime; + self2.curr = curr; prevTime = curr; args[0] = createDebug.coerce(args[0]); if (typeof args[0] !== "string") { @@ -7417,22 +7713,22 @@ var require_common2 = __commonJS({ const formatter = createDebug.formatters[format]; if (typeof formatter === "function") { const val = args[index2]; - match = formatter.call(self3, val); + match = formatter.call(self2, val); args.splice(index2, 1); index2--; } return match; }); - createDebug.formatArgs.call(self3, args); - const logFn = self3.log || createDebug.log; - logFn.apply(self3, args); + createDebug.formatArgs.call(self2, args); + const logFn = self2.log || createDebug.log; + logFn.apply(self2, args); } - debug2.namespace = namespace; - debug2.useColors = createDebug.useColors(); - debug2.color = createDebug.selectColor(namespace); - debug2.extend = extend; - debug2.destroy = createDebug.destroy; - Object.defineProperty(debug2, "enabled", { + debug3.namespace = namespace; + debug3.useColors = createDebug.useColors(); + debug3.color = createDebug.selectColor(namespace); + debug3.extend = extend; + debug3.destroy = createDebug.destroy; + Object.defineProperty(debug3, "enabled", { enumerable: true, configurable: false, get: () => { @@ -7450,9 +7746,9 @@ var require_common2 = __commonJS({ } }); if (typeof createDebug.init === "function") { - createDebug.init(debug2); + createDebug.init(debug3); } - return debug2; + return debug3; } function extend(namespace, delimiter) { const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); @@ -7526,14 +7822,14 @@ var require_common2 = __commonJS({ // node_modules/.pnpm/debug@4.3.4_supports-color@7.2.0/node_modules/debug/src/browser.js var require_browser = __commonJS({ - "node_modules/.pnpm/debug@4.3.4_supports-color@7.2.0/node_modules/debug/src/browser.js"(exports, module2) { + "node_modules/.pnpm/debug@4.3.4_supports-color@7.2.0/node_modules/debug/src/browser.js"(exports2, module2) { init_polyfill_buffer(); - exports.formatArgs = formatArgs; - exports.save = save; - exports.load = load; - exports.useColors = useColors; - exports.storage = localstorage(); - exports.destroy = (() => { + exports2.formatArgs = formatArgs; + exports2.save = save; + exports2.load = load; + exports2.useColors = useColors; + exports2.storage = localstorage(); + exports2.destroy = (() => { let warned = false; return () => { if (!warned) { @@ -7542,7 +7838,7 @@ var require_browser = __commonJS({ } }; })(); - exports.colors = [ + exports2.colors = [ "#0000CC", "#0000FF", "#0033CC", @@ -7627,7 +7923,11 @@ var require_browser = __commonJS({ if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { return false; } - return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); } function formatArgs(args) { args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff); @@ -7649,14 +7949,14 @@ var require_browser = __commonJS({ }); args.splice(lastC, 0, c); } - exports.log = console.debug || console.log || (() => { + exports2.log = console.debug || console.log || (() => { }); function save(namespaces) { try { if (namespaces) { - exports.storage.setItem("debug", namespaces); + exports2.storage.setItem("debug", namespaces); } else { - exports.storage.removeItem("debug"); + exports2.storage.removeItem("debug"); } } catch (error) { } @@ -7664,7 +7964,7 @@ var require_browser = __commonJS({ function load() { let r; try { - r = exports.storage.getItem("debug"); + r = exports2.storage.getItem("debug"); } catch (error) { } if (!r && typeof process !== "undefined" && "env" in process) { @@ -7678,7 +7978,7 @@ var require_browser = __commonJS({ } catch (error) { } } - module2.exports = require_common2()(exports); + module2.exports = require_common2()(exports2); var { formatters } = module2.exports; formatters.j = function(v) { try { @@ -7692,13 +7992,13 @@ var require_browser = __commonJS({ // node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@7.2.0/node_modules/@kwsites/file-exists/dist/src/index.js var require_src = __commonJS({ - "node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@7.2.0/node_modules/@kwsites/file-exists/dist/src/index.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@7.2.0/node_modules/@kwsites/file-exists/dist/src/index.js"(exports2) { "use strict"; - var __importDefault = exports && exports.__importDefault || function(mod) { + init_polyfill_buffer(); + var __importDefault = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; - Object.defineProperty(exports, "__esModule", { value: true }); + Object.defineProperty(exports2, "__esModule", { value: true }); var fs_1 = require("fs"); var debug_1 = __importDefault(require_browser()); var log2 = debug_1.default("@kwsites/file-exists"); @@ -7725,38 +8025,38 @@ var require_src = __commonJS({ throw e; } } - function exists2(path2, type = exports.READABLE) { - return check(path2, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0); + function exists2(path2, type = exports2.READABLE) { + return check(path2, (type & exports2.FILE) > 0, (type & exports2.FOLDER) > 0); } - exports.exists = exists2; - exports.FILE = 1; - exports.FOLDER = 2; - exports.READABLE = exports.FILE + exports.FOLDER; + exports2.exists = exists2; + exports2.FILE = 1; + exports2.FOLDER = 2; + exports2.READABLE = exports2.FILE + exports2.FOLDER; } }); // node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@7.2.0/node_modules/@kwsites/file-exists/dist/index.js var require_dist = __commonJS({ - "node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@7.2.0/node_modules/@kwsites/file-exists/dist/index.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/@kwsites+file-exists@1.1.1_supports-color@7.2.0/node_modules/@kwsites/file-exists/dist/index.js"(exports2) { "use strict"; + init_polyfill_buffer(); function __export3(m) { for (var p in m) - if (!exports.hasOwnProperty(p)) - exports[p] = m[p]; + if (!exports2.hasOwnProperty(p)) + exports2[p] = m[p]; } - Object.defineProperty(exports, "__esModule", { value: true }); + Object.defineProperty(exports2, "__esModule", { value: true }); __export3(require_src()); } }); // node_modules/.pnpm/@kwsites+promise-deferred@1.1.1/node_modules/@kwsites/promise-deferred/dist/index.js var require_dist2 = __commonJS({ - "node_modules/.pnpm/@kwsites+promise-deferred@1.1.1/node_modules/@kwsites/promise-deferred/dist/index.js"(exports) { - init_polyfill_buffer(); + "node_modules/.pnpm/@kwsites+promise-deferred@1.1.1/node_modules/@kwsites/promise-deferred/dist/index.js"(exports2) { "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.createDeferred = exports.deferred = void 0; + init_polyfill_buffer(); + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.createDeferred = exports2.deferred = void 0; function deferred2() { let done; let fail; @@ -7787,15 +8087,4470 @@ var require_dist2 = __commonJS({ } }; } - exports.deferred = deferred2; - exports.createDeferred = deferred2; - exports.default = deferred2; + exports2.deferred = deferred2; + exports2.createDeferred = deferred2; + exports2.default = deferred2; + } +}); + +// node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js +var require_color_name = __commonJS({ + "node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] + }; + } +}); + +// node_modules/.pnpm/css-unit-converter@1.1.2/node_modules/css-unit-converter/index.js +var require_css_unit_converter = __commonJS({ + "node_modules/.pnpm/css-unit-converter@1.1.2/node_modules/css-unit-converter/index.js"(exports2, module2) { + init_polyfill_buffer(); + var conversions = { + // length + "px": { + "px": 1, + "cm": 96 / 2.54, + "mm": 96 / 25.4, + "in": 96, + "pt": 96 / 72, + "pc": 16 + }, + "cm": { + "px": 2.54 / 96, + "cm": 1, + "mm": 0.1, + "in": 2.54, + "pt": 2.54 / 72, + "pc": 2.54 / 6 + }, + "mm": { + "px": 25.4 / 96, + "cm": 10, + "mm": 1, + "in": 25.4, + "pt": 25.4 / 72, + "pc": 25.4 / 6 + }, + "in": { + "px": 1 / 96, + "cm": 1 / 2.54, + "mm": 1 / 25.4, + "in": 1, + "pt": 1 / 72, + "pc": 1 / 6 + }, + "pt": { + "px": 0.75, + "cm": 72 / 2.54, + "mm": 72 / 25.4, + "in": 72, + "pt": 1, + "pc": 12 + }, + "pc": { + "px": 6 / 96, + "cm": 6 / 2.54, + "mm": 6 / 25.4, + "in": 6, + "pt": 6 / 72, + "pc": 1 + }, + // angle + "deg": { + "deg": 1, + "grad": 0.9, + "rad": 180 / Math.PI, + "turn": 360 + }, + "grad": { + "deg": 400 / 360, + "grad": 1, + "rad": 200 / Math.PI, + "turn": 400 + }, + "rad": { + "deg": Math.PI / 180, + "grad": Math.PI / 200, + "rad": 1, + "turn": Math.PI * 2 + }, + "turn": { + "deg": 1 / 360, + "grad": 1 / 400, + "rad": 0.5 / Math.PI, + "turn": 1 + }, + // time + "s": { + "s": 1, + "ms": 1 / 1e3 + }, + "ms": { + "s": 1e3, + "ms": 1 + }, + // frequency + "Hz": { + "Hz": 1, + "kHz": 1e3 + }, + "kHz": { + "Hz": 1 / 1e3, + "kHz": 1 + }, + // resolution + "dpi": { + "dpi": 1, + "dpcm": 1 / 2.54, + "dppx": 1 / 96 + }, + "dpcm": { + "dpi": 2.54, + "dpcm": 1, + "dppx": 2.54 / 96 + }, + "dppx": { + "dpi": 96, + "dpcm": 96 / 2.54, + "dppx": 1 + } + }; + module2.exports = function(value, sourceUnit, targetUnit, precision) { + if (!conversions.hasOwnProperty(targetUnit)) + throw new Error("Cannot convert to " + targetUnit); + if (!conversions[targetUnit].hasOwnProperty(sourceUnit)) + throw new Error("Cannot convert from " + sourceUnit + " to " + targetUnit); + var converted = conversions[targetUnit][sourceUnit] * value; + if (precision !== false) { + precision = Math.pow(10, parseInt(precision) || 5); + return Math.round(converted * precision) / precision; + } + return converted; + }; + } +}); + +// node_modules/.pnpm/css-color-converter@2.0.0/node_modules/css-color-converter/lib/index.js +var require_lib3 = __commonJS({ + "node_modules/.pnpm/css-color-converter@2.0.0/node_modules/css-color-converter/lib/index.js"(exports2) { + "use strict"; + init_polyfill_buffer(); + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.fromRgba = fromRgba; + exports2.fromRgb = fromRgb; + exports2.fromHsla = fromHsla; + exports2.fromHsl = fromHsl; + exports2.fromString = fromString2; + exports2["default"] = void 0; + var _colorName = _interopRequireDefault(require_color_name()); + var _cssUnitConverter = _interopRequireDefault(require_css_unit_converter()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _classCallCheck(instance10, Constructor) { + if (!(instance10 instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) + _defineProperties(Constructor.prototype, protoProps); + if (staticProps) + _defineProperties(Constructor, staticProps); + return Constructor; + } + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray2(arr, i) || _nonIterableRest(); + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray2(o, minLen) { + if (!o) + return; + if (typeof o === "string") + return _arrayLikeToArray2(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) + n = o.constructor.name; + if (n === "Map" || n === "Set") + return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) + return _arrayLikeToArray2(o, minLen); + } + function _arrayLikeToArray2(arr, len) { + if (len == null || len > arr.length) + len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) { + arr2[i] = arr[i]; + } + return arr2; + } + function _iterableToArrayLimit(arr, i) { + if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) + return; + var _arr = []; + var _n = true; + var _d = false; + var _e = void 0; + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + if (i && _arr.length === i) + break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) + _i["return"](); + } finally { + if (_d) + throw _e; + } + } + return _arr; + } + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) + return arr; + } + var hex = /^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?$/; + var shortHex = /^#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])?$/; + var rgb = /^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*(0|1|0?\.\d+|\d+%))?\s*\)$/; + var rgbfn = /^rgba?\(\s*(\d+)\s+(\d+)\s+(\d+)(?:\s*\/\s*(0|1|0?\.\d+|\d+%))?\s*\)$/; + var rgbperc = /^rgba?\(\s*(\d+%)\s*,\s*(\d+%)\s*,\s*(\d+%)(?:\s*,\s*(0|1|0?\.\d+|\d+%))?\s*\)$/; + var rgbpercfn = /^rgba?\(\s*(\d+%)\s+(\d+%)\s+(\d+%)(?:\s*\/\s*(0|1|0?\.\d+|\d+%))?\s*\)$/; + var hsl = /^hsla?\(\s*(\d+)(deg|rad|grad|turn)?\s*,\s*(\d+)%\s*,\s*(\d+)%(?:\s*,\s*(0|1|0?\.\d+|\d+%))?\s*\)$/; + function contains2(haystack, needle) { + return haystack.indexOf(needle) > -1; + } + function rgbToHsl(r, g, b) { + var rprim = r / 255; + var gprim = g / 255; + var bprim = b / 255; + var cmax = Math.max(rprim, gprim, bprim); + var cmin = Math.min(rprim, gprim, bprim); + var delta = cmax - cmin; + var l = (cmax + cmin) / 2; + if (delta === 0) { + return [0, 0, l * 100]; + } + var s = delta / (1 - Math.abs(2 * l - 1)); + var h = function() { + switch (cmax) { + case rprim: { + return (gprim - bprim) / delta % 6; + } + case gprim: { + return (bprim - rprim) / delta + 2; + } + default: { + return (rprim - gprim) / delta + 4; + } + } + }(); + return [h * 60, s * 100, l * 100]; + } + function hslToRgb(h, s, l) { + var hprim = h / 60; + var sprim = s / 100; + var lprim = l / 100; + var c = (1 - Math.abs(2 * lprim - 1)) * sprim; + var x = c * (1 - Math.abs(hprim % 2 - 1)); + var m = lprim - c / 2; + var _ref = function() { + if (hprim < 1) + return [c, x, 0]; + if (hprim < 2) + return [x, c, 0]; + if (hprim < 3) + return [0, c, x]; + if (hprim < 4) + return [0, x, c]; + if (hprim < 5) + return [x, 0, c]; + return [c, 0, x]; + }(), _ref2 = _slicedToArray(_ref, 3), rprim = _ref2[0], gprim = _ref2[1], bprim = _ref2[2]; + return [(rprim + m) * 255, (gprim + m) * 255, (bprim + m) * 255]; + } + var Color = /* @__PURE__ */ function() { + function Color2(_ref3) { + var _ref4 = _slicedToArray(_ref3, 4), r = _ref4[0], g = _ref4[1], b = _ref4[2], a = _ref4[3]; + _classCallCheck(this, Color2); + this.values = [Math.max(Math.min(parseInt(r, 10), 255), 0), Math.max(Math.min(parseInt(g, 10), 255), 0), Math.max(Math.min(parseInt(b, 10), 255), 0), a == null ? 1 : Math.max(Math.min(parseFloat(a), 255), 0)]; + } + _createClass(Color2, [{ + key: "toRgbString", + value: function toRgbString() { + var _this$values = _slicedToArray(this.values, 4), r = _this$values[0], g = _this$values[1], b = _this$values[2], a = _this$values[3]; + if (a === 1) { + return "rgb(".concat(r, ", ").concat(g, ", ").concat(b, ")"); + } + return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(a, ")"); + } + }, { + key: "toHslString", + value: function toHslString() { + var _this$toHslaArray = this.toHslaArray(), _this$toHslaArray2 = _slicedToArray(_this$toHslaArray, 4), h = _this$toHslaArray2[0], s = _this$toHslaArray2[1], l = _this$toHslaArray2[2], a = _this$toHslaArray2[3]; + if (a === 1) { + return "hsl(".concat(h, ", ").concat(s, "%, ").concat(l, "%)"); + } + return "hsla(".concat(h, ", ").concat(s, "%, ").concat(l, "%, ").concat(a, ")"); + } + }, { + key: "toHexString", + value: function toHexString() { + var _this$values2 = _slicedToArray(this.values, 4), r = _this$values2[0], g = _this$values2[1], b = _this$values2[2], a = _this$values2[3]; + r = Number(r).toString(16).padStart(2, "0"); + g = Number(g).toString(16).padStart(2, "0"); + b = Number(b).toString(16).padStart(2, "0"); + a = a < 1 ? parseInt(a * 255, 10).toString(16).padStart(2, "0") : ""; + return "#".concat(r).concat(g).concat(b).concat(a); + } + }, { + key: "toRgbaArray", + value: function toRgbaArray() { + return this.values; + } + }, { + key: "toHslaArray", + value: function toHslaArray() { + var _this$values3 = _slicedToArray(this.values, 4), r = _this$values3[0], g = _this$values3[1], b = _this$values3[2], a = _this$values3[3]; + var _rgbToHsl = rgbToHsl(r, g, b), _rgbToHsl2 = _slicedToArray(_rgbToHsl, 3), h = _rgbToHsl2[0], s = _rgbToHsl2[1], l = _rgbToHsl2[2]; + return [h, s, l, a]; + } + }]); + return Color2; + }(); + function fromRgba(_ref5) { + var _ref6 = _slicedToArray(_ref5, 4), r = _ref6[0], g = _ref6[1], b = _ref6[2], a = _ref6[3]; + return new Color([r, g, b, a]); + } + function fromRgb(_ref7) { + var _ref8 = _slicedToArray(_ref7, 3), r = _ref8[0], g = _ref8[1], b = _ref8[2]; + return fromRgba([r, g, b, 1]); + } + function fromHsla(_ref9) { + var _ref10 = _slicedToArray(_ref9, 4), h = _ref10[0], s = _ref10[1], l = _ref10[2], a = _ref10[3]; + var _hslToRgb = hslToRgb(h, s, l), _hslToRgb2 = _slicedToArray(_hslToRgb, 3), r = _hslToRgb2[0], g = _hslToRgb2[1], b = _hslToRgb2[2]; + return fromRgba([r, g, b, a]); + } + function fromHsl(_ref11) { + var _ref12 = _slicedToArray(_ref11, 3), h = _ref12[0], s = _ref12[1], l = _ref12[2]; + return fromHsla([h, s, l, 1]); + } + function fromHexString(str) { + var _ref13 = hex.exec(str) || shortHex.exec(str), _ref14 = _slicedToArray(_ref13, 5), r = _ref14[1], g = _ref14[2], b = _ref14[3], a = _ref14[4]; + r = parseInt(r.length < 2 ? r.repeat(2) : r, 16); + g = parseInt(g.length < 2 ? g.repeat(2) : g, 16); + b = parseInt(b.length < 2 ? b.repeat(2) : b, 16); + a = a && (parseInt(a.length < 2 ? a.repeat(2) : a, 16) / 255).toPrecision(1) || 1; + return fromRgba([r, g, b, a]); + } + function fromRgbString(str) { + var _ref15 = rgb.exec(str) || rgbperc.exec(str) || rgbfn.exec(str) || rgbpercfn.exec(str), _ref16 = _slicedToArray(_ref15, 5), r = _ref16[1], g = _ref16[2], b = _ref16[3], a = _ref16[4]; + r = contains2(r, "%") ? parseInt(r, 10) * 255 / 100 : parseInt(r, 10); + g = contains2(g, "%") ? parseInt(g, 10) * 255 / 100 : parseInt(g, 10); + b = contains2(b, "%") > 0 ? parseInt(b, 10) * 255 / 100 : parseInt(b, 10); + a = a === void 0 ? 1 : parseFloat(a) / (contains2(a, "%") ? 100 : 1); + return fromRgba([r, g, b, a]); + } + function fromHslString(str) { + var _hsl$exec = hsl.exec(str), _hsl$exec2 = _slicedToArray(_hsl$exec, 6), h = _hsl$exec2[1], unit = _hsl$exec2[2], s = _hsl$exec2[3], l = _hsl$exec2[4], a = _hsl$exec2[5]; + unit = unit || "deg"; + h = (0, _cssUnitConverter["default"])(parseFloat(h), unit, "deg"); + s = parseFloat(s); + l = parseFloat(l); + a = a === void 0 ? 1 : parseFloat(a) / (contains2(a, "%") ? 100 : 1); + return fromHsla([h, s, l, a]); + } + function fromString2(str) { + if (_colorName["default"][str]) { + return fromRgb(_colorName["default"][str]); + } + if (hex.test(str) || shortHex.test(str)) { + return fromHexString(str); + } + if (rgb.test(str) || rgbperc.test(str) || rgbfn.test(str) || rgbpercfn.test(str)) { + return fromRgbString(str); + } + if (hsl.test(str)) { + return fromHslString(str); + } + return null; + } + var _default = { + fromString: fromString2, + fromRgb, + fromRgba, + fromHsl, + fromHsla + }; + exports2["default"] = _default; + } +}); + +// node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/isArguments.js +var require_isArguments = __commonJS({ + "node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/isArguments.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var toStr = Object.prototype.toString; + module2.exports = function isArguments(value) { + var str = toStr.call(value); + var isArgs = str === "[object Arguments]"; + if (!isArgs) { + isArgs = str !== "[object Array]" && value !== null && typeof value === "object" && typeof value.length === "number" && value.length >= 0 && toStr.call(value.callee) === "[object Function]"; + } + return isArgs; + }; + } +}); + +// node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/implementation.js +var require_implementation = __commonJS({ + "node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/implementation.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var keysShim; + if (!Object.keys) { + has = Object.prototype.hasOwnProperty; + toStr = Object.prototype.toString; + isArgs = require_isArguments(); + isEnumerable = Object.prototype.propertyIsEnumerable; + hasDontEnumBug = !isEnumerable.call({ toString: null }, "toString"); + hasProtoEnumBug = isEnumerable.call(function() { + }, "prototype"); + dontEnums = [ + "toString", + "toLocaleString", + "valueOf", + "hasOwnProperty", + "isPrototypeOf", + "propertyIsEnumerable", + "constructor" + ]; + equalsConstructorPrototype = function(o) { + var ctor = o.constructor; + return ctor && ctor.prototype === o; + }; + excludedKeys = { + $applicationCache: true, + $console: true, + $external: true, + $frame: true, + $frameElement: true, + $frames: true, + $innerHeight: true, + $innerWidth: true, + $onmozfullscreenchange: true, + $onmozfullscreenerror: true, + $outerHeight: true, + $outerWidth: true, + $pageXOffset: true, + $pageYOffset: true, + $parent: true, + $scrollLeft: true, + $scrollTop: true, + $scrollX: true, + $scrollY: true, + $self: true, + $webkitIndexedDB: true, + $webkitStorageInfo: true, + $window: true + }; + hasAutomationEqualityBug = function() { + if (typeof window === "undefined") { + return false; + } + for (var k in window) { + try { + if (!excludedKeys["$" + k] && has.call(window, k) && window[k] !== null && typeof window[k] === "object") { + try { + equalsConstructorPrototype(window[k]); + } catch (e) { + return true; + } + } + } catch (e) { + return true; + } + } + return false; + }(); + equalsConstructorPrototypeIfNotBuggy = function(o) { + if (typeof window === "undefined" || !hasAutomationEqualityBug) { + return equalsConstructorPrototype(o); + } + try { + return equalsConstructorPrototype(o); + } catch (e) { + return false; + } + }; + keysShim = function keys(object) { + var isObject = object !== null && typeof object === "object"; + var isFunction = toStr.call(object) === "[object Function]"; + var isArguments = isArgs(object); + var isString = isObject && toStr.call(object) === "[object String]"; + var theKeys = []; + if (!isObject && !isFunction && !isArguments) { + throw new TypeError("Object.keys called on a non-object"); + } + var skipProto = hasProtoEnumBug && isFunction; + if (isString && object.length > 0 && !has.call(object, 0)) { + for (var i = 0; i < object.length; ++i) { + theKeys.push(String(i)); + } + } + if (isArguments && object.length > 0) { + for (var j = 0; j < object.length; ++j) { + theKeys.push(String(j)); + } + } else { + for (var name in object) { + if (!(skipProto && name === "prototype") && has.call(object, name)) { + theKeys.push(String(name)); + } + } + } + if (hasDontEnumBug) { + var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); + for (var k = 0; k < dontEnums.length; ++k) { + if (!(skipConstructor && dontEnums[k] === "constructor") && has.call(object, dontEnums[k])) { + theKeys.push(dontEnums[k]); + } + } + } + return theKeys; + }; + } + var has; + var toStr; + var isArgs; + var isEnumerable; + var hasDontEnumBug; + var hasProtoEnumBug; + var dontEnums; + var equalsConstructorPrototype; + var excludedKeys; + var hasAutomationEqualityBug; + var equalsConstructorPrototypeIfNotBuggy; + module2.exports = keysShim; + } +}); + +// node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/index.js +var require_object_keys = __commonJS({ + "node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var slice = Array.prototype.slice; + var isArgs = require_isArguments(); + var origKeys = Object.keys; + var keysShim = origKeys ? function keys(o) { + return origKeys(o); + } : require_implementation(); + var originalKeys = Object.keys; + keysShim.shim = function shimObjectKeys() { + if (Object.keys) { + var keysWorksWithArguments = function() { + var args = Object.keys(arguments); + return args && args.length === arguments.length; + }(1, 2); + if (!keysWorksWithArguments) { + Object.keys = function keys(object) { + if (isArgs(object)) { + return originalKeys(slice.call(object)); + } + return originalKeys(object); + }; + } + } else { + Object.keys = keysShim; + } + return Object.keys || keysShim; + }; + module2.exports = keysShim; + } +}); + +// node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/shams.js +var require_shams = __commonJS({ + "node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/shams.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = function hasSymbols() { + if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") { + return false; + } + if (typeof Symbol.iterator === "symbol") { + return true; + } + var obj = {}; + var sym = Symbol("test"); + var symObj = Object(sym); + if (typeof sym === "string") { + return false; + } + if (Object.prototype.toString.call(sym) !== "[object Symbol]") { + return false; + } + if (Object.prototype.toString.call(symObj) !== "[object Symbol]") { + return false; + } + var symVal = 42; + obj[sym] = symVal; + for (sym in obj) { + return false; + } + if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) { + return false; + } + if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) { + return false; + } + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { + return false; + } + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { + return false; + } + if (typeof Object.getOwnPropertyDescriptor === "function") { + var descriptor = Object.getOwnPropertyDescriptor(obj, sym); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { + return false; + } + } + return true; + }; + } +}); + +// node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/index.js +var require_has_symbols = __commonJS({ + "node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var origSymbol = typeof Symbol !== "undefined" && Symbol; + var hasSymbolSham = require_shams(); + module2.exports = function hasNativeSymbols() { + if (typeof origSymbol !== "function") { + return false; + } + if (typeof Symbol !== "function") { + return false; + } + if (typeof origSymbol("foo") !== "symbol") { + return false; + } + if (typeof Symbol("bar") !== "symbol") { + return false; + } + return hasSymbolSham(); + }; + } +}); + +// node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/implementation.js +var require_implementation2 = __commonJS({ + "node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/implementation.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; + var slice = Array.prototype.slice; + var toStr = Object.prototype.toString; + var funcType = "[object Function]"; + module2.exports = function bind(that) { + var target = this; + if (typeof target !== "function" || toStr.call(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slice.call(arguments, 1); + var bound; + var binder = function() { + if (this instanceof bound) { + var result = target.apply( + this, + args.concat(slice.call(arguments)) + ); + if (Object(result) === result) { + return result; + } + return this; + } else { + return target.apply( + that, + args.concat(slice.call(arguments)) + ); + } + }; + var boundLength = Math.max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs.push("$" + i); + } + bound = Function("binder", "return function (" + boundArgs.join(",") + "){ return binder.apply(this,arguments); }")(binder); + if (target.prototype) { + var Empty = function Empty2() { + }; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + return bound; + }; + } +}); + +// node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/index.js +var require_function_bind = __commonJS({ + "node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var implementation = require_implementation2(); + module2.exports = Function.prototype.bind || implementation; + } +}); + +// node_modules/.pnpm/has@1.0.3/node_modules/has/src/index.js +var require_src2 = __commonJS({ + "node_modules/.pnpm/has@1.0.3/node_modules/has/src/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var bind = require_function_bind(); + module2.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); + } +}); + +// node_modules/.pnpm/get-intrinsic@1.2.0/node_modules/get-intrinsic/index.js +var require_get_intrinsic = __commonJS({ + "node_modules/.pnpm/get-intrinsic@1.2.0/node_modules/get-intrinsic/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var undefined2; + var $SyntaxError = SyntaxError; + var $Function = Function; + var $TypeError = TypeError; + var getEvalledConstructor = function(expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); + } catch (e) { + } + }; + var $gOPD = Object.getOwnPropertyDescriptor; + if ($gOPD) { + try { + $gOPD({}, ""); + } catch (e) { + $gOPD = null; + } + } + var throwTypeError = function() { + throw new $TypeError(); + }; + var ThrowTypeError = $gOPD ? function() { + try { + arguments.callee; + return throwTypeError; + } catch (calleeThrows) { + try { + return $gOPD(arguments, "callee").get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }() : throwTypeError; + var hasSymbols = require_has_symbols()(); + var getProto = Object.getPrototypeOf || function(x) { + return x.__proto__; + }; + var needsEval = {}; + var TypedArray = typeof Uint8Array === "undefined" ? undefined2 : getProto(Uint8Array); + var INTRINSICS = { + "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, + "%Array%": Array, + "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, + "%ArrayIteratorPrototype%": hasSymbols ? getProto([][Symbol.iterator]()) : undefined2, + "%AsyncFromSyncIteratorPrototype%": undefined2, + "%AsyncFunction%": needsEval, + "%AsyncGenerator%": needsEval, + "%AsyncGeneratorFunction%": needsEval, + "%AsyncIteratorPrototype%": needsEval, + "%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics, + "%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt, + "%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array, + "%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array, + "%Boolean%": Boolean, + "%DataView%": typeof DataView === "undefined" ? undefined2 : DataView, + "%Date%": Date, + "%decodeURI%": decodeURI, + "%decodeURIComponent%": decodeURIComponent, + "%encodeURI%": encodeURI, + "%encodeURIComponent%": encodeURIComponent, + "%Error%": Error, + "%eval%": eval, + // eslint-disable-line no-eval + "%EvalError%": EvalError, + "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, + "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, + "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, + "%Function%": $Function, + "%GeneratorFunction%": needsEval, + "%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array, + "%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array, + "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, + "%isFinite%": isFinite, + "%isNaN%": isNaN, + "%IteratorPrototype%": hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined2, + "%JSON%": typeof JSON === "object" ? JSON : undefined2, + "%Map%": typeof Map === "undefined" ? undefined2 : Map, + "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()), + "%Math%": Math, + "%Number%": Number, + "%Object%": Object, + "%parseFloat%": parseFloat, + "%parseInt%": parseInt, + "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, + "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, + "%RangeError%": RangeError, + "%ReferenceError%": ReferenceError, + "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, + "%RegExp%": RegExp, + "%Set%": typeof Set === "undefined" ? undefined2 : Set, + "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()), + "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, + "%String%": String, + "%StringIteratorPrototype%": hasSymbols ? getProto(""[Symbol.iterator]()) : undefined2, + "%Symbol%": hasSymbols ? Symbol : undefined2, + "%SyntaxError%": $SyntaxError, + "%ThrowTypeError%": ThrowTypeError, + "%TypedArray%": TypedArray, + "%TypeError%": $TypeError, + "%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array, + "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, + "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, + "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, + "%URIError%": URIError, + "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, + "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, + "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet + }; + try { + null.error; + } catch (e) { + errorProto = getProto(getProto(e)); + INTRINSICS["%Error.prototype%"] = errorProto; + } + var errorProto; + var doEval = function doEval2(name) { + var value; + if (name === "%AsyncFunction%") { + value = getEvalledConstructor("async function () {}"); + } else if (name === "%GeneratorFunction%") { + value = getEvalledConstructor("function* () {}"); + } else if (name === "%AsyncGeneratorFunction%") { + value = getEvalledConstructor("async function* () {}"); + } else if (name === "%AsyncGenerator%") { + var fn = doEval2("%AsyncGeneratorFunction%"); + if (fn) { + value = fn.prototype; + } + } else if (name === "%AsyncIteratorPrototype%") { + var gen = doEval2("%AsyncGenerator%"); + if (gen) { + value = getProto(gen.prototype); + } + } + INTRINSICS[name] = value; + return value; + }; + var LEGACY_ALIASES = { + "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], + "%ArrayPrototype%": ["Array", "prototype"], + "%ArrayProto_entries%": ["Array", "prototype", "entries"], + "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], + "%ArrayProto_keys%": ["Array", "prototype", "keys"], + "%ArrayProto_values%": ["Array", "prototype", "values"], + "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], + "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], + "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], + "%BooleanPrototype%": ["Boolean", "prototype"], + "%DataViewPrototype%": ["DataView", "prototype"], + "%DatePrototype%": ["Date", "prototype"], + "%ErrorPrototype%": ["Error", "prototype"], + "%EvalErrorPrototype%": ["EvalError", "prototype"], + "%Float32ArrayPrototype%": ["Float32Array", "prototype"], + "%Float64ArrayPrototype%": ["Float64Array", "prototype"], + "%FunctionPrototype%": ["Function", "prototype"], + "%Generator%": ["GeneratorFunction", "prototype"], + "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], + "%Int8ArrayPrototype%": ["Int8Array", "prototype"], + "%Int16ArrayPrototype%": ["Int16Array", "prototype"], + "%Int32ArrayPrototype%": ["Int32Array", "prototype"], + "%JSONParse%": ["JSON", "parse"], + "%JSONStringify%": ["JSON", "stringify"], + "%MapPrototype%": ["Map", "prototype"], + "%NumberPrototype%": ["Number", "prototype"], + "%ObjectPrototype%": ["Object", "prototype"], + "%ObjProto_toString%": ["Object", "prototype", "toString"], + "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], + "%PromisePrototype%": ["Promise", "prototype"], + "%PromiseProto_then%": ["Promise", "prototype", "then"], + "%Promise_all%": ["Promise", "all"], + "%Promise_reject%": ["Promise", "reject"], + "%Promise_resolve%": ["Promise", "resolve"], + "%RangeErrorPrototype%": ["RangeError", "prototype"], + "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], + "%RegExpPrototype%": ["RegExp", "prototype"], + "%SetPrototype%": ["Set", "prototype"], + "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], + "%StringPrototype%": ["String", "prototype"], + "%SymbolPrototype%": ["Symbol", "prototype"], + "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], + "%TypedArrayPrototype%": ["TypedArray", "prototype"], + "%TypeErrorPrototype%": ["TypeError", "prototype"], + "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], + "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], + "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], + "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], + "%URIErrorPrototype%": ["URIError", "prototype"], + "%WeakMapPrototype%": ["WeakMap", "prototype"], + "%WeakSetPrototype%": ["WeakSet", "prototype"] + }; + var bind = require_function_bind(); + var hasOwn = require_src2(); + var $concat = bind.call(Function.call, Array.prototype.concat); + var $spliceApply = bind.call(Function.apply, Array.prototype.splice); + var $replace = bind.call(Function.call, String.prototype.replace); + var $strSlice = bind.call(Function.call, String.prototype.slice); + var $exec = bind.call(Function.call, RegExp.prototype.exec); + var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; + var reEscapeChar = /\\(\\)?/g; + var stringToPath = function stringToPath2(string) { + var first2 = $strSlice(string, 0, 1); + var last2 = $strSlice(string, -1); + if (first2 === "%" && last2 !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`"); + } else if (last2 === "%" && first2 !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`"); + } + var result = []; + $replace(string, rePropName, function(match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match; + }); + return result; + }; + var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = "%" + alias[0] + "%"; + } + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === "undefined" && !allowMissing) { + throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!"); + } + return { + alias, + name: intrinsicName, + value + }; + } + throw new $SyntaxError("intrinsic " + name + " does not exist!"); + }; + module2.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== "string" || name.length === 0) { + throw new $TypeError("intrinsic name must be a non-empty string"); + } + if (arguments.length > 1 && typeof allowMissing !== "boolean") { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name"); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ""; + var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first2 = $strSlice(part, 0, 1); + var last2 = $strSlice(part, -1); + if ((first2 === '"' || first2 === "'" || first2 === "`" || (last2 === '"' || last2 === "'" || last2 === "`")) && first2 !== last2) { + throw new $SyntaxError("property names with quotes must have matching quotes"); + } + if (part === "constructor" || !isOwn) { + skipFurtherCaching = true; + } + intrinsicBaseName += "." + part; + intrinsicRealName = "%" + intrinsicBaseName + "%"; + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available."); + } + return void 0; + } + if ($gOPD && i + 1 >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + if (isOwn && "get" in desc && !("originalValue" in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; + }; + } +}); + +// node_modules/.pnpm/has-property-descriptors@1.0.0/node_modules/has-property-descriptors/index.js +var require_has_property_descriptors = __commonJS({ + "node_modules/.pnpm/has-property-descriptors@1.0.0/node_modules/has-property-descriptors/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var GetIntrinsic = require_get_intrinsic(); + var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); + var hasPropertyDescriptors = function hasPropertyDescriptors2() { + if ($defineProperty) { + try { + $defineProperty({}, "a", { value: 1 }); + return true; + } catch (e) { + return false; + } + } + return false; + }; + hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() { + if (!hasPropertyDescriptors()) { + return null; + } + try { + return $defineProperty([], "length", { value: 1 }).length !== 1; + } catch (e) { + return true; + } + }; + module2.exports = hasPropertyDescriptors; + } +}); + +// node_modules/.pnpm/define-properties@1.2.0/node_modules/define-properties/index.js +var require_define_properties = __commonJS({ + "node_modules/.pnpm/define-properties@1.2.0/node_modules/define-properties/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var keys = require_object_keys(); + var hasSymbols = typeof Symbol === "function" && typeof Symbol("foo") === "symbol"; + var toStr = Object.prototype.toString; + var concat = Array.prototype.concat; + var origDefineProperty = Object.defineProperty; + var isFunction = function(fn) { + return typeof fn === "function" && toStr.call(fn) === "[object Function]"; + }; + var hasPropertyDescriptors = require_has_property_descriptors()(); + var supportsDescriptors = origDefineProperty && hasPropertyDescriptors; + var defineProperty = function(object, name, value, predicate) { + if (name in object) { + if (predicate === true) { + if (object[name] === value) { + return; + } + } else if (!isFunction(predicate) || !predicate()) { + return; + } + } + if (supportsDescriptors) { + origDefineProperty(object, name, { + configurable: true, + enumerable: false, + value, + writable: true + }); + } else { + object[name] = value; + } + }; + var defineProperties = function(object, map) { + var predicates = arguments.length > 2 ? arguments[2] : {}; + var props = keys(map); + if (hasSymbols) { + props = concat.call(props, Object.getOwnPropertySymbols(map)); + } + for (var i = 0; i < props.length; i += 1) { + defineProperty(object, props[i], map[props[i]], predicates[props[i]]); + } + }; + defineProperties.supportsDescriptors = !!supportsDescriptors; + module2.exports = defineProperties; + } +}); + +// node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/index.js +var require_call_bind = __commonJS({ + "node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var bind = require_function_bind(); + var GetIntrinsic = require_get_intrinsic(); + var $apply = GetIntrinsic("%Function.prototype.apply%"); + var $call = GetIntrinsic("%Function.prototype.call%"); + var $reflectApply = GetIntrinsic("%Reflect.apply%", true) || bind.call($call, $apply); + var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); + var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); + var $max = GetIntrinsic("%Math.max%"); + if ($defineProperty) { + try { + $defineProperty({}, "a", { value: 1 }); + } catch (e) { + $defineProperty = null; + } + } + module2.exports = function callBind(originalFunction) { + var func = $reflectApply(bind, $call, arguments); + if ($gOPD && $defineProperty) { + var desc = $gOPD(func, "length"); + if (desc.configurable) { + $defineProperty( + func, + "length", + { value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) } + ); + } + } + return func; + }; + var applyBind = function applyBind2() { + return $reflectApply(bind, $apply, arguments); + }; + if ($defineProperty) { + $defineProperty(module2.exports, "apply", { value: applyBind }); + } else { + module2.exports.apply = applyBind; + } + } +}); + +// node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/callBound.js +var require_callBound = __commonJS({ + "node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/callBound.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var GetIntrinsic = require_get_intrinsic(); + var callBind = require_call_bind(); + var $indexOf = callBind(GetIntrinsic("String.prototype.indexOf")); + module2.exports = function callBoundIntrinsic(name, allowMissing) { + var intrinsic = GetIntrinsic(name, !!allowMissing); + if (typeof intrinsic === "function" && $indexOf(name, ".prototype.") > -1) { + return callBind(intrinsic); + } + return intrinsic; + }; + } +}); + +// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/implementation.js +var require_implementation3 = __commonJS({ + "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/implementation.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var objectKeys = require_object_keys(); + var hasSymbols = require_shams()(); + var callBound = require_callBound(); + var toObject = Object; + var $push = callBound("Array.prototype.push"); + var $propIsEnumerable = callBound("Object.prototype.propertyIsEnumerable"); + var originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null; + module2.exports = function assign2(target, source1) { + if (target == null) { + throw new TypeError("target must be an object"); + } + var to = toObject(target); + if (arguments.length === 1) { + return to; + } + for (var s = 1; s < arguments.length; ++s) { + var from = toObject(arguments[s]); + var keys = objectKeys(from); + var getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols); + if (getSymbols) { + var syms = getSymbols(from); + for (var j = 0; j < syms.length; ++j) { + var key2 = syms[j]; + if ($propIsEnumerable(from, key2)) { + $push(keys, key2); + } + } + } + for (var i = 0; i < keys.length; ++i) { + var nextKey = keys[i]; + if ($propIsEnumerable(from, nextKey)) { + var propValue = from[nextKey]; + to[nextKey] = propValue; + } + } + } + return to; + }; + } +}); + +// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/polyfill.js +var require_polyfill = __commonJS({ + "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/polyfill.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var implementation = require_implementation3(); + var lacksProperEnumerationOrder = function() { + if (!Object.assign) { + return false; + } + var str = "abcdefghijklmnopqrst"; + var letters = str.split(""); + var map = {}; + for (var i = 0; i < letters.length; ++i) { + map[letters[i]] = letters[i]; + } + var obj = Object.assign({}, map); + var actual = ""; + for (var k in obj) { + actual += k; + } + return str !== actual; + }; + var assignHasPendingExceptions = function() { + if (!Object.assign || !Object.preventExtensions) { + return false; + } + var thrower = Object.preventExtensions({ 1: 2 }); + try { + Object.assign(thrower, "xy"); + } catch (e) { + return thrower[1] === "y"; + } + return false; + }; + module2.exports = function getPolyfill() { + if (!Object.assign) { + return implementation; + } + if (lacksProperEnumerationOrder()) { + return implementation; + } + if (assignHasPendingExceptions()) { + return implementation; + } + return Object.assign; + }; + } +}); + +// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/shim.js +var require_shim = __commonJS({ + "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/shim.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var define2 = require_define_properties(); + var getPolyfill = require_polyfill(); + module2.exports = function shimAssign() { + var polyfill = getPolyfill(); + define2( + Object, + { assign: polyfill }, + { assign: function() { + return Object.assign !== polyfill; + } } + ); + return polyfill; + }; + } +}); + +// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/index.js +var require_object = __commonJS({ + "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var defineProperties = require_define_properties(); + var callBind = require_call_bind(); + var implementation = require_implementation3(); + var getPolyfill = require_polyfill(); + var shim = require_shim(); + var polyfill = callBind.apply(getPolyfill()); + var bound = function assign2(target, source1) { + return polyfill(Object, arguments); + }; + defineProperties(bound, { + getPolyfill, + implementation, + shim + }); + module2.exports = bound; + } +}); + +// node_modules/.pnpm/functions-have-names@1.2.3/node_modules/functions-have-names/index.js +var require_functions_have_names = __commonJS({ + "node_modules/.pnpm/functions-have-names@1.2.3/node_modules/functions-have-names/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var functionsHaveNames = function functionsHaveNames2() { + return typeof function f() { + }.name === "string"; + }; + var gOPD = Object.getOwnPropertyDescriptor; + if (gOPD) { + try { + gOPD([], "length"); + } catch (e) { + gOPD = null; + } + } + functionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() { + if (!functionsHaveNames() || !gOPD) { + return false; + } + var desc = gOPD(function() { + }, "name"); + return !!desc && !!desc.configurable; + }; + var $bind = Function.prototype.bind; + functionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() { + return functionsHaveNames() && typeof $bind === "function" && function f() { + }.bind().name !== ""; + }; + module2.exports = functionsHaveNames; + } +}); + +// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/implementation.js +var require_implementation4 = __commonJS({ + "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/implementation.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var functionsHaveConfigurableNames = require_functions_have_names().functionsHaveConfigurableNames(); + var $Object = Object; + var $TypeError = TypeError; + module2.exports = function flags() { + if (this != null && this !== $Object(this)) { + throw new $TypeError("RegExp.prototype.flags getter called on non-object"); + } + var result = ""; + if (this.hasIndices) { + result += "d"; + } + if (this.global) { + result += "g"; + } + if (this.ignoreCase) { + result += "i"; + } + if (this.multiline) { + result += "m"; + } + if (this.dotAll) { + result += "s"; + } + if (this.unicode) { + result += "u"; + } + if (this.unicodeSets) { + result += "v"; + } + if (this.sticky) { + result += "y"; + } + return result; + }; + if (functionsHaveConfigurableNames && Object.defineProperty) { + Object.defineProperty(module2.exports, "name", { value: "get flags" }); + } + } +}); + +// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/polyfill.js +var require_polyfill2 = __commonJS({ + "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/polyfill.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var implementation = require_implementation4(); + var supportsDescriptors = require_define_properties().supportsDescriptors; + var $gOPD = Object.getOwnPropertyDescriptor; + module2.exports = function getPolyfill() { + if (supportsDescriptors && /a/mig.flags === "gim") { + var descriptor = $gOPD(RegExp.prototype, "flags"); + if (descriptor && typeof descriptor.get === "function" && typeof RegExp.prototype.dotAll === "boolean" && typeof RegExp.prototype.hasIndices === "boolean") { + var calls = ""; + var o = {}; + Object.defineProperty(o, "hasIndices", { + get: function() { + calls += "d"; + } + }); + Object.defineProperty(o, "sticky", { + get: function() { + calls += "y"; + } + }); + if (calls === "dy") { + return descriptor.get; + } + } + } + return implementation; + }; + } +}); + +// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/shim.js +var require_shim2 = __commonJS({ + "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/shim.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var supportsDescriptors = require_define_properties().supportsDescriptors; + var getPolyfill = require_polyfill2(); + var gOPD = Object.getOwnPropertyDescriptor; + var defineProperty = Object.defineProperty; + var TypeErr = TypeError; + var getProto = Object.getPrototypeOf; + var regex2 = /a/; + module2.exports = function shimFlags() { + if (!supportsDescriptors || !getProto) { + throw new TypeErr("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors"); + } + var polyfill = getPolyfill(); + var proto = getProto(regex2); + var descriptor = gOPD(proto, "flags"); + if (!descriptor || descriptor.get !== polyfill) { + defineProperty(proto, "flags", { + configurable: true, + enumerable: false, + get: polyfill + }); + } + return polyfill; + }; + } +}); + +// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/index.js +var require_regexp_prototype = __commonJS({ + "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var define2 = require_define_properties(); + var callBind = require_call_bind(); + var implementation = require_implementation4(); + var getPolyfill = require_polyfill2(); + var shim = require_shim2(); + var flagsBound = callBind(getPolyfill()); + define2(flagsBound, { + getPolyfill, + implementation, + shim + }); + module2.exports = flagsBound; + } +}); + +// node_modules/.pnpm/has-tostringtag@1.0.0/node_modules/has-tostringtag/shams.js +var require_shams2 = __commonJS({ + "node_modules/.pnpm/has-tostringtag@1.0.0/node_modules/has-tostringtag/shams.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var hasSymbols = require_shams(); + module2.exports = function hasToStringTagShams() { + return hasSymbols() && !!Symbol.toStringTag; + }; + } +}); + +// node_modules/.pnpm/is-arguments@1.1.1/node_modules/is-arguments/index.js +var require_is_arguments = __commonJS({ + "node_modules/.pnpm/is-arguments@1.1.1/node_modules/is-arguments/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var hasToStringTag = require_shams2()(); + var callBound = require_callBound(); + var $toString = callBound("Object.prototype.toString"); + var isStandardArguments = function isArguments(value) { + if (hasToStringTag && value && typeof value === "object" && Symbol.toStringTag in value) { + return false; + } + return $toString(value) === "[object Arguments]"; + }; + var isLegacyArguments = function isArguments(value) { + if (isStandardArguments(value)) { + return true; + } + return value !== null && typeof value === "object" && typeof value.length === "number" && value.length >= 0 && $toString(value) !== "[object Array]" && $toString(value.callee) === "[object Function]"; + }; + var supportsStandardArguments = function() { + return isStandardArguments(arguments); + }(); + isStandardArguments.isLegacyArguments = isLegacyArguments; + module2.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments; + } +}); + +// (disabled):node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/util.inspect +var require_util = __commonJS({ + "(disabled):node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/util.inspect"() { + init_polyfill_buffer(); + } +}); + +// node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/index.js +var require_object_inspect = __commonJS({ + "node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/index.js"(exports2, module2) { + init_polyfill_buffer(); + var hasMap = typeof Map === "function" && Map.prototype; + var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; + var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === "function" ? mapSizeDescriptor.get : null; + var mapForEach = hasMap && Map.prototype.forEach; + var hasSet = typeof Set === "function" && Set.prototype; + var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null; + var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === "function" ? setSizeDescriptor.get : null; + var setForEach = hasSet && Set.prototype.forEach; + var hasWeakMap = typeof WeakMap === "function" && WeakMap.prototype; + var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; + var hasWeakSet = typeof WeakSet === "function" && WeakSet.prototype; + var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; + var hasWeakRef = typeof WeakRef === "function" && WeakRef.prototype; + var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; + var booleanValueOf = Boolean.prototype.valueOf; + var objectToString2 = Object.prototype.toString; + var functionToString = Function.prototype.toString; + var $match = String.prototype.match; + var $slice = String.prototype.slice; + var $replace = String.prototype.replace; + var $toUpperCase = String.prototype.toUpperCase; + var $toLowerCase = String.prototype.toLowerCase; + var $test = RegExp.prototype.test; + var $concat = Array.prototype.concat; + var $join = Array.prototype.join; + var $arrSlice = Array.prototype.slice; + var $floor = Math.floor; + var bigIntValueOf = typeof BigInt === "function" ? BigInt.prototype.valueOf : null; + var gOPS = Object.getOwnPropertySymbols; + var symToString = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? Symbol.prototype.toString : null; + var hasShammedSymbols = typeof Symbol === "function" && typeof Symbol.iterator === "object"; + var toStringTag = typeof Symbol === "function" && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? "object" : "symbol") ? Symbol.toStringTag : null; + var isEnumerable = Object.prototype.propertyIsEnumerable; + var gPO = (typeof Reflect === "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function(O) { + return O.__proto__; + } : null); + function addNumericSeparator(num2, str) { + if (num2 === Infinity || num2 === -Infinity || num2 !== num2 || num2 && num2 > -1e3 && num2 < 1e3 || $test.call(/e/, str)) { + return str; + } + var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; + if (typeof num2 === "number") { + var int = num2 < 0 ? -$floor(-num2) : $floor(num2); + if (int !== num2) { + var intStr = String(int); + var dec = $slice.call(str, intStr.length + 1); + return $replace.call(intStr, sepRegex, "$&_") + "." + $replace.call($replace.call(dec, /([0-9]{3})/g, "$&_"), /_$/, ""); + } + } + return $replace.call(str, sepRegex, "$&_"); + } + var utilInspect = require_util(); + var inspectCustom = utilInspect.custom; + var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; + module2.exports = function inspect_(obj, options, depth, seen) { + var opts = options || {}; + if (has(opts, "quoteStyle") && (opts.quoteStyle !== "single" && opts.quoteStyle !== "double")) { + throw new TypeError('option "quoteStyle" must be "single" or "double"'); + } + if (has(opts, "maxStringLength") && (typeof opts.maxStringLength === "number" ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity : opts.maxStringLength !== null)) { + throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); + } + var customInspect = has(opts, "customInspect") ? opts.customInspect : true; + if (typeof customInspect !== "boolean" && customInspect !== "symbol") { + throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`"); + } + if (has(opts, "indent") && opts.indent !== null && opts.indent !== " " && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)) { + throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); + } + if (has(opts, "numericSeparator") && typeof opts.numericSeparator !== "boolean") { + throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); + } + var numericSeparator = opts.numericSeparator; + if (typeof obj === "undefined") { + return "undefined"; + } + if (obj === null) { + return "null"; + } + if (typeof obj === "boolean") { + return obj ? "true" : "false"; + } + if (typeof obj === "string") { + return inspectString(obj, opts); + } + if (typeof obj === "number") { + if (obj === 0) { + return Infinity / obj > 0 ? "0" : "-0"; + } + var str = String(obj); + return numericSeparator ? addNumericSeparator(obj, str) : str; + } + if (typeof obj === "bigint") { + var bigIntStr = String(obj) + "n"; + return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; + } + var maxDepth = typeof opts.depth === "undefined" ? 5 : opts.depth; + if (typeof depth === "undefined") { + depth = 0; + } + if (depth >= maxDepth && maxDepth > 0 && typeof obj === "object") { + return isArray(obj) ? "[Array]" : "[Object]"; + } + var indent2 = getIndent(opts, depth); + if (typeof seen === "undefined") { + seen = []; + } else if (indexOf(seen, obj) >= 0) { + return "[Circular]"; + } + function inspect(value, from, noIndent) { + if (from) { + seen = $arrSlice.call(seen); + seen.push(from); + } + if (noIndent) { + var newOpts = { + depth: opts.depth + }; + if (has(opts, "quoteStyle")) { + newOpts.quoteStyle = opts.quoteStyle; + } + return inspect_(value, newOpts, depth + 1, seen); + } + return inspect_(value, opts, depth + 1, seen); + } + if (typeof obj === "function" && !isRegExp(obj)) { + var name = nameOf(obj); + var keys = arrObjKeys(obj, inspect); + return "[Function" + (name ? ": " + name : " (anonymous)") + "]" + (keys.length > 0 ? " { " + $join.call(keys, ", ") + " }" : ""); + } + if (isSymbol(obj)) { + var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, "$1") : symToString.call(obj); + return typeof obj === "object" && !hasShammedSymbols ? markBoxed(symString) : symString; + } + if (isElement(obj)) { + var s = "<" + $toLowerCase.call(String(obj.nodeName)); + var attrs = obj.attributes || []; + for (var i = 0; i < attrs.length; i++) { + s += " " + attrs[i].name + "=" + wrapQuotes(quote(attrs[i].value), "double", opts); + } + s += ">"; + if (obj.childNodes && obj.childNodes.length) { + s += "..."; + } + s += ""; + return s; + } + if (isArray(obj)) { + if (obj.length === 0) { + return "[]"; + } + var xs = arrObjKeys(obj, inspect); + if (indent2 && !singleLineValues(xs)) { + return "[" + indentedJoin(xs, indent2) + "]"; + } + return "[ " + $join.call(xs, ", ") + " ]"; + } + if (isError(obj)) { + var parts = arrObjKeys(obj, inspect); + if (!("cause" in Error.prototype) && "cause" in obj && !isEnumerable.call(obj, "cause")) { + return "{ [" + String(obj) + "] " + $join.call($concat.call("[cause]: " + inspect(obj.cause), parts), ", ") + " }"; + } + if (parts.length === 0) { + return "[" + String(obj) + "]"; + } + return "{ [" + String(obj) + "] " + $join.call(parts, ", ") + " }"; + } + if (typeof obj === "object" && customInspect) { + if (inspectSymbol && typeof obj[inspectSymbol] === "function" && utilInspect) { + return utilInspect(obj, { depth: maxDepth - depth }); + } else if (customInspect !== "symbol" && typeof obj.inspect === "function") { + return obj.inspect(); + } + } + if (isMap(obj)) { + var mapParts = []; + if (mapForEach) { + mapForEach.call(obj, function(value, key2) { + mapParts.push(inspect(key2, obj, true) + " => " + inspect(value, obj)); + }); + } + return collectionOf("Map", mapSize.call(obj), mapParts, indent2); + } + if (isSet(obj)) { + var setParts = []; + if (setForEach) { + setForEach.call(obj, function(value) { + setParts.push(inspect(value, obj)); + }); + } + return collectionOf("Set", setSize.call(obj), setParts, indent2); + } + if (isWeakMap(obj)) { + return weakCollectionOf("WeakMap"); + } + if (isWeakSet(obj)) { + return weakCollectionOf("WeakSet"); + } + if (isWeakRef(obj)) { + return weakCollectionOf("WeakRef"); + } + if (isNumber(obj)) { + return markBoxed(inspect(Number(obj))); + } + if (isBigInt(obj)) { + return markBoxed(inspect(bigIntValueOf.call(obj))); + } + if (isBoolean(obj)) { + return markBoxed(booleanValueOf.call(obj)); + } + if (isString(obj)) { + return markBoxed(inspect(String(obj))); + } + if (!isDate(obj) && !isRegExp(obj)) { + var ys = arrObjKeys(obj, inspect); + var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; + var protoTag = obj instanceof Object ? "" : "null prototype"; + var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? "Object" : ""; + var constructorTag = isPlainObject || typeof obj.constructor !== "function" ? "" : obj.constructor.name ? obj.constructor.name + " " : ""; + var tag2 = constructorTag + (stringTag || protoTag ? "[" + $join.call($concat.call([], stringTag || [], protoTag || []), ": ") + "] " : ""); + if (ys.length === 0) { + return tag2 + "{}"; + } + if (indent2) { + return tag2 + "{" + indentedJoin(ys, indent2) + "}"; + } + return tag2 + "{ " + $join.call(ys, ", ") + " }"; + } + return String(obj); + }; + function wrapQuotes(s, defaultStyle, opts) { + var quoteChar = (opts.quoteStyle || defaultStyle) === "double" ? '"' : "'"; + return quoteChar + s + quoteChar; + } + function quote(s) { + return $replace.call(String(s), /"/g, """); + } + function isArray(obj) { + return toStr(obj) === "[object Array]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); + } + function isDate(obj) { + return toStr(obj) === "[object Date]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); + } + function isRegExp(obj) { + return toStr(obj) === "[object RegExp]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); + } + function isError(obj) { + return toStr(obj) === "[object Error]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); + } + function isString(obj) { + return toStr(obj) === "[object String]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); + } + function isNumber(obj) { + return toStr(obj) === "[object Number]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); + } + function isBoolean(obj) { + return toStr(obj) === "[object Boolean]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); + } + function isSymbol(obj) { + if (hasShammedSymbols) { + return obj && typeof obj === "object" && obj instanceof Symbol; + } + if (typeof obj === "symbol") { + return true; + } + if (!obj || typeof obj !== "object" || !symToString) { + return false; + } + try { + symToString.call(obj); + return true; + } catch (e) { + } + return false; + } + function isBigInt(obj) { + if (!obj || typeof obj !== "object" || !bigIntValueOf) { + return false; + } + try { + bigIntValueOf.call(obj); + return true; + } catch (e) { + } + return false; + } + var hasOwn = Object.prototype.hasOwnProperty || function(key2) { + return key2 in this; + }; + function has(obj, key2) { + return hasOwn.call(obj, key2); + } + function toStr(obj) { + return objectToString2.call(obj); + } + function nameOf(f) { + if (f.name) { + return f.name; + } + var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); + if (m) { + return m[1]; + } + return null; + } + function indexOf(xs, x) { + if (xs.indexOf) { + return xs.indexOf(x); + } + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) { + return i; + } + } + return -1; + } + function isMap(x) { + if (!mapSize || !x || typeof x !== "object") { + return false; + } + try { + mapSize.call(x); + try { + setSize.call(x); + } catch (s) { + return true; + } + return x instanceof Map; + } catch (e) { + } + return false; + } + function isWeakMap(x) { + if (!weakMapHas || !x || typeof x !== "object") { + return false; + } + try { + weakMapHas.call(x, weakMapHas); + try { + weakSetHas.call(x, weakSetHas); + } catch (s) { + return true; + } + return x instanceof WeakMap; + } catch (e) { + } + return false; + } + function isWeakRef(x) { + if (!weakRefDeref || !x || typeof x !== "object") { + return false; + } + try { + weakRefDeref.call(x); + return true; + } catch (e) { + } + return false; + } + function isSet(x) { + if (!setSize || !x || typeof x !== "object") { + return false; + } + try { + setSize.call(x); + try { + mapSize.call(x); + } catch (m) { + return true; + } + return x instanceof Set; + } catch (e) { + } + return false; + } + function isWeakSet(x) { + if (!weakSetHas || !x || typeof x !== "object") { + return false; + } + try { + weakSetHas.call(x, weakSetHas); + try { + weakMapHas.call(x, weakMapHas); + } catch (s) { + return true; + } + return x instanceof WeakSet; + } catch (e) { + } + return false; + } + function isElement(x) { + if (!x || typeof x !== "object") { + return false; + } + if (typeof HTMLElement !== "undefined" && x instanceof HTMLElement) { + return true; + } + return typeof x.nodeName === "string" && typeof x.getAttribute === "function"; + } + function inspectString(str, opts) { + if (str.length > opts.maxStringLength) { + var remaining = str.length - opts.maxStringLength; + var trailer = "... " + remaining + " more character" + (remaining > 1 ? "s" : ""); + return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; + } + var s = $replace.call($replace.call(str, /(['\\])/g, "\\$1"), /[\x00-\x1f]/g, lowbyte); + return wrapQuotes(s, "single", opts); + } + function lowbyte(c) { + var n = c.charCodeAt(0); + var x = { + 8: "b", + 9: "t", + 10: "n", + 12: "f", + 13: "r" + }[n]; + if (x) { + return "\\" + x; + } + return "\\x" + (n < 16 ? "0" : "") + $toUpperCase.call(n.toString(16)); + } + function markBoxed(str) { + return "Object(" + str + ")"; + } + function weakCollectionOf(type) { + return type + " { ? }"; + } + function collectionOf(type, size, entries, indent2) { + var joinedEntries = indent2 ? indentedJoin(entries, indent2) : $join.call(entries, ", "); + return type + " (" + size + ") {" + joinedEntries + "}"; + } + function singleLineValues(xs) { + for (var i = 0; i < xs.length; i++) { + if (indexOf(xs[i], "\n") >= 0) { + return false; + } + } + return true; + } + function getIndent(opts, depth) { + var baseIndent; + if (opts.indent === " ") { + baseIndent = " "; + } else if (typeof opts.indent === "number" && opts.indent > 0) { + baseIndent = $join.call(Array(opts.indent + 1), " "); + } else { + return null; + } + return { + base: baseIndent, + prev: $join.call(Array(depth + 1), baseIndent) + }; + } + function indentedJoin(xs, indent2) { + if (xs.length === 0) { + return ""; + } + var lineJoiner = "\n" + indent2.prev + indent2.base; + return lineJoiner + $join.call(xs, "," + lineJoiner) + "\n" + indent2.prev; + } + function arrObjKeys(obj, inspect) { + var isArr = isArray(obj); + var xs = []; + if (isArr) { + xs.length = obj.length; + for (var i = 0; i < obj.length; i++) { + xs[i] = has(obj, i) ? inspect(obj[i], obj) : ""; + } + } + var syms = typeof gOPS === "function" ? gOPS(obj) : []; + var symMap; + if (hasShammedSymbols) { + symMap = {}; + for (var k = 0; k < syms.length; k++) { + symMap["$" + syms[k]] = syms[k]; + } + } + for (var key2 in obj) { + if (!has(obj, key2)) { + continue; + } + if (isArr && String(Number(key2)) === key2 && key2 < obj.length) { + continue; + } + if (hasShammedSymbols && symMap["$" + key2] instanceof Symbol) { + continue; + } else if ($test.call(/[^\w$]/, key2)) { + xs.push(inspect(key2, obj) + ": " + inspect(obj[key2], obj)); + } else { + xs.push(key2 + ": " + inspect(obj[key2], obj)); + } + } + if (typeof gOPS === "function") { + for (var j = 0; j < syms.length; j++) { + if (isEnumerable.call(obj, syms[j])) { + xs.push("[" + inspect(syms[j]) + "]: " + inspect(obj[syms[j]], obj)); + } + } + } + return xs; + } + } +}); + +// node_modules/.pnpm/side-channel@1.0.4/node_modules/side-channel/index.js +var require_side_channel = __commonJS({ + "node_modules/.pnpm/side-channel@1.0.4/node_modules/side-channel/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var GetIntrinsic = require_get_intrinsic(); + var callBound = require_callBound(); + var inspect = require_object_inspect(); + var $TypeError = GetIntrinsic("%TypeError%"); + var $WeakMap = GetIntrinsic("%WeakMap%", true); + var $Map = GetIntrinsic("%Map%", true); + var $weakMapGet = callBound("WeakMap.prototype.get", true); + var $weakMapSet = callBound("WeakMap.prototype.set", true); + var $weakMapHas = callBound("WeakMap.prototype.has", true); + var $mapGet = callBound("Map.prototype.get", true); + var $mapSet = callBound("Map.prototype.set", true); + var $mapHas = callBound("Map.prototype.has", true); + var listGetNode = function(list, key2) { + for (var prev = list, curr; (curr = prev.next) !== null; prev = curr) { + if (curr.key === key2) { + prev.next = curr.next; + curr.next = list.next; + list.next = curr; + return curr; + } + } + }; + var listGet = function(objects, key2) { + var node = listGetNode(objects, key2); + return node && node.value; + }; + var listSet = function(objects, key2, value) { + var node = listGetNode(objects, key2); + if (node) { + node.value = value; + } else { + objects.next = { + // eslint-disable-line no-param-reassign + key: key2, + next: objects.next, + value + }; + } + }; + var listHas = function(objects, key2) { + return !!listGetNode(objects, key2); + }; + module2.exports = function getSideChannel() { + var $wm; + var $m; + var $o; + var channel = { + assert: function(key2) { + if (!channel.has(key2)) { + throw new $TypeError("Side channel does not contain " + inspect(key2)); + } + }, + get: function(key2) { + if ($WeakMap && key2 && (typeof key2 === "object" || typeof key2 === "function")) { + if ($wm) { + return $weakMapGet($wm, key2); + } + } else if ($Map) { + if ($m) { + return $mapGet($m, key2); + } + } else { + if ($o) { + return listGet($o, key2); + } + } + }, + has: function(key2) { + if ($WeakMap && key2 && (typeof key2 === "object" || typeof key2 === "function")) { + if ($wm) { + return $weakMapHas($wm, key2); + } + } else if ($Map) { + if ($m) { + return $mapHas($m, key2); + } + } else { + if ($o) { + return listHas($o, key2); + } + } + return false; + }, + set: function(key2, value) { + if ($WeakMap && key2 && (typeof key2 === "object" || typeof key2 === "function")) { + if (!$wm) { + $wm = new $WeakMap(); + } + $weakMapSet($wm, key2, value); + } else if ($Map) { + if (!$m) { + $m = new $Map(); + } + $mapSet($m, key2, value); + } else { + if (!$o) { + $o = { key: {}, next: null }; + } + listSet($o, key2, value); + } + } + }; + return channel; + }; + } +}); + +// node_modules/.pnpm/internal-slot@1.0.5/node_modules/internal-slot/index.js +var require_internal_slot = __commonJS({ + "node_modules/.pnpm/internal-slot@1.0.5/node_modules/internal-slot/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var GetIntrinsic = require_get_intrinsic(); + var has = require_src2(); + var channel = require_side_channel()(); + var $TypeError = GetIntrinsic("%TypeError%"); + var SLOT = { + assert: function(O, slot) { + if (!O || typeof O !== "object" && typeof O !== "function") { + throw new $TypeError("`O` is not an object"); + } + if (typeof slot !== "string") { + throw new $TypeError("`slot` must be a string"); + } + channel.assert(O); + if (!SLOT.has(O, slot)) { + throw new $TypeError("`" + slot + "` is not present on `O`"); + } + }, + get: function(O, slot) { + if (!O || typeof O !== "object" && typeof O !== "function") { + throw new $TypeError("`O` is not an object"); + } + if (typeof slot !== "string") { + throw new $TypeError("`slot` must be a string"); + } + var slots = channel.get(O); + return slots && slots["$" + slot]; + }, + has: function(O, slot) { + if (!O || typeof O !== "object" && typeof O !== "function") { + throw new $TypeError("`O` is not an object"); + } + if (typeof slot !== "string") { + throw new $TypeError("`slot` must be a string"); + } + var slots = channel.get(O); + return !!slots && has(slots, "$" + slot); + }, + set: function(O, slot, V) { + if (!O || typeof O !== "object" && typeof O !== "function") { + throw new $TypeError("`O` is not an object"); + } + if (typeof slot !== "string") { + throw new $TypeError("`slot` must be a string"); + } + var slots = channel.get(O); + if (!slots) { + slots = {}; + channel.set(O, slots); + } + slots["$" + slot] = V; + } + }; + if (Object.freeze) { + Object.freeze(SLOT); + } + module2.exports = SLOT; + } +}); + +// node_modules/.pnpm/stop-iteration-iterator@1.0.0/node_modules/stop-iteration-iterator/index.js +var require_stop_iteration_iterator = __commonJS({ + "node_modules/.pnpm/stop-iteration-iterator@1.0.0/node_modules/stop-iteration-iterator/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var SLOT = require_internal_slot(); + var $SyntaxError = SyntaxError; + var $StopIteration = typeof StopIteration === "object" ? StopIteration : null; + module2.exports = function getStopIterationIterator(origIterator) { + if (!$StopIteration) { + throw new $SyntaxError("this environment lacks StopIteration"); + } + SLOT.set(origIterator, "[[Done]]", false); + var siIterator = { + next: function next() { + var iterator = SLOT.get(this, "[[Iterator]]"); + var done = SLOT.get(iterator, "[[Done]]"); + try { + return { + done, + value: done ? void 0 : iterator.next() + }; + } catch (e) { + SLOT.set(iterator, "[[Done]]", true); + if (e !== $StopIteration) { + throw e; + } + return { + done: true, + value: void 0 + }; + } + } + }; + SLOT.set(siIterator, "[[Iterator]]", origIterator); + return siIterator; + }; + } +}); + +// node_modules/.pnpm/isarray@2.0.5/node_modules/isarray/index.js +var require_isarray = __commonJS({ + "node_modules/.pnpm/isarray@2.0.5/node_modules/isarray/index.js"(exports2, module2) { + init_polyfill_buffer(); + var toString = {}.toString; + module2.exports = Array.isArray || function(arr) { + return toString.call(arr) == "[object Array]"; + }; + } +}); + +// node_modules/.pnpm/is-string@1.0.7/node_modules/is-string/index.js +var require_is_string = __commonJS({ + "node_modules/.pnpm/is-string@1.0.7/node_modules/is-string/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var strValue = String.prototype.valueOf; + var tryStringObject = function tryStringObject2(value) { + try { + strValue.call(value); + return true; + } catch (e) { + return false; + } + }; + var toStr = Object.prototype.toString; + var strClass = "[object String]"; + var hasToStringTag = require_shams2()(); + module2.exports = function isString(value) { + if (typeof value === "string") { + return true; + } + if (typeof value !== "object") { + return false; + } + return hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass; + }; + } +}); + +// node_modules/.pnpm/is-map@2.0.2/node_modules/is-map/index.js +var require_is_map = __commonJS({ + "node_modules/.pnpm/is-map@2.0.2/node_modules/is-map/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var $Map = typeof Map === "function" && Map.prototype ? Map : null; + var $Set = typeof Set === "function" && Set.prototype ? Set : null; + var exported; + if (!$Map) { + exported = function isMap(x) { + return false; + }; + } + var $mapHas = $Map ? Map.prototype.has : null; + var $setHas = $Set ? Set.prototype.has : null; + if (!exported && !$mapHas) { + exported = function isMap(x) { + return false; + }; + } + module2.exports = exported || function isMap(x) { + if (!x || typeof x !== "object") { + return false; + } + try { + $mapHas.call(x); + if ($setHas) { + try { + $setHas.call(x); + } catch (e) { + return true; + } + } + return x instanceof $Map; + } catch (e) { + } + return false; + }; + } +}); + +// node_modules/.pnpm/is-set@2.0.2/node_modules/is-set/index.js +var require_is_set = __commonJS({ + "node_modules/.pnpm/is-set@2.0.2/node_modules/is-set/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var $Map = typeof Map === "function" && Map.prototype ? Map : null; + var $Set = typeof Set === "function" && Set.prototype ? Set : null; + var exported; + if (!$Set) { + exported = function isSet(x) { + return false; + }; + } + var $mapHas = $Map ? Map.prototype.has : null; + var $setHas = $Set ? Set.prototype.has : null; + if (!exported && !$setHas) { + exported = function isSet(x) { + return false; + }; + } + module2.exports = exported || function isSet(x) { + if (!x || typeof x !== "object") { + return false; + } + try { + $setHas.call(x); + if ($mapHas) { + try { + $mapHas.call(x); + } catch (e) { + return true; + } + } + return x instanceof $Set; + } catch (e) { + } + return false; + }; + } +}); + +// node_modules/.pnpm/es-get-iterator@1.1.3/node_modules/es-get-iterator/index.js +var require_es_get_iterator = __commonJS({ + "node_modules/.pnpm/es-get-iterator@1.1.3/node_modules/es-get-iterator/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var isArguments = require_is_arguments(); + var getStopIterationIterator = require_stop_iteration_iterator(); + if (require_has_symbols()() || require_shams()()) { + $iterator = Symbol.iterator; + module2.exports = function getIterator3(iterable) { + if (iterable != null && typeof iterable[$iterator] !== "undefined") { + return iterable[$iterator](); + } + if (isArguments(iterable)) { + return Array.prototype[$iterator].call(iterable); + } + }; + } else { + isArray = require_isarray(); + isString = require_is_string(); + GetIntrinsic = require_get_intrinsic(); + $Map = GetIntrinsic("%Map%", true); + $Set = GetIntrinsic("%Set%", true); + callBound = require_callBound(); + $arrayPush = callBound("Array.prototype.push"); + $charCodeAt = callBound("String.prototype.charCodeAt"); + $stringSlice = callBound("String.prototype.slice"); + advanceStringIndex = function advanceStringIndex2(S, index2) { + var length = S.length; + if (index2 + 1 >= length) { + return index2 + 1; + } + var first2 = $charCodeAt(S, index2); + if (first2 < 55296 || first2 > 56319) { + return index2 + 1; + } + var second = $charCodeAt(S, index2 + 1); + if (second < 56320 || second > 57343) { + return index2 + 1; + } + return index2 + 2; + }; + getArrayIterator = function getArrayIterator2(arraylike) { + var i = 0; + return { + next: function next() { + var done = i >= arraylike.length; + var value; + if (!done) { + value = arraylike[i]; + i += 1; + } + return { + done, + value + }; + } + }; + }; + getNonCollectionIterator = function getNonCollectionIterator2(iterable, noPrimordialCollections) { + if (isArray(iterable) || isArguments(iterable)) { + return getArrayIterator(iterable); + } + if (isString(iterable)) { + var i = 0; + return { + next: function next() { + var nextIndex = advanceStringIndex(iterable, i); + var value = $stringSlice(iterable, i, nextIndex); + i = nextIndex; + return { + done: nextIndex > iterable.length, + value + }; + } + }; + } + if (noPrimordialCollections && typeof iterable["_es6-shim iterator_"] !== "undefined") { + return iterable["_es6-shim iterator_"](); + } + }; + if (!$Map && !$Set) { + module2.exports = function getIterator3(iterable) { + if (iterable != null) { + return getNonCollectionIterator(iterable, true); + } + }; + } else { + isMap = require_is_map(); + isSet = require_is_set(); + $mapForEach = callBound("Map.prototype.forEach", true); + $setForEach = callBound("Set.prototype.forEach", true); + if (typeof process === "undefined" || !process.versions || !process.versions.node) { + $mapIterator = callBound("Map.prototype.iterator", true); + $setIterator = callBound("Set.prototype.iterator", true); + } + $mapAtAtIterator = callBound("Map.prototype.@@iterator", true) || callBound("Map.prototype._es6-shim iterator_", true); + $setAtAtIterator = callBound("Set.prototype.@@iterator", true) || callBound("Set.prototype._es6-shim iterator_", true); + getCollectionIterator = function getCollectionIterator2(iterable) { + if (isMap(iterable)) { + if ($mapIterator) { + return getStopIterationIterator($mapIterator(iterable)); + } + if ($mapAtAtIterator) { + return $mapAtAtIterator(iterable); + } + if ($mapForEach) { + var entries = []; + $mapForEach(iterable, function(v, k) { + $arrayPush(entries, [k, v]); + }); + return getArrayIterator(entries); + } + } + if (isSet(iterable)) { + if ($setIterator) { + return getStopIterationIterator($setIterator(iterable)); + } + if ($setAtAtIterator) { + return $setAtAtIterator(iterable); + } + if ($setForEach) { + var values = []; + $setForEach(iterable, function(v) { + $arrayPush(values, v); + }); + return getArrayIterator(values); + } + } + }; + module2.exports = function getIterator3(iterable) { + return getCollectionIterator(iterable) || getNonCollectionIterator(iterable); + }; + } + } + var $iterator; + var isArray; + var isString; + var GetIntrinsic; + var $Map; + var $Set; + var callBound; + var $arrayPush; + var $charCodeAt; + var $stringSlice; + var advanceStringIndex; + var getArrayIterator; + var getNonCollectionIterator; + var isMap; + var isSet; + var $mapForEach; + var $setForEach; + var $mapIterator; + var $setIterator; + var $mapAtAtIterator; + var $setAtAtIterator; + var getCollectionIterator; + } +}); + +// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/implementation.js +var require_implementation5 = __commonJS({ + "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/implementation.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var numberIsNaN = function(value) { + return value !== value; + }; + module2.exports = function is(a, b) { + if (a === 0 && b === 0) { + return 1 / a === 1 / b; + } + if (a === b) { + return true; + } + if (numberIsNaN(a) && numberIsNaN(b)) { + return true; + } + return false; + }; + } +}); + +// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/polyfill.js +var require_polyfill3 = __commonJS({ + "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/polyfill.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var implementation = require_implementation5(); + module2.exports = function getPolyfill() { + return typeof Object.is === "function" ? Object.is : implementation; + }; + } +}); + +// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/shim.js +var require_shim3 = __commonJS({ + "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/shim.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var getPolyfill = require_polyfill3(); + var define2 = require_define_properties(); + module2.exports = function shimObjectIs() { + var polyfill = getPolyfill(); + define2(Object, { is: polyfill }, { + is: function testObjectIs() { + return Object.is !== polyfill; + } + }); + return polyfill; + }; + } +}); + +// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/index.js +var require_object_is = __commonJS({ + "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var define2 = require_define_properties(); + var callBind = require_call_bind(); + var implementation = require_implementation5(); + var getPolyfill = require_polyfill3(); + var shim = require_shim3(); + var polyfill = callBind(getPolyfill(), Object); + define2(polyfill, { + getPolyfill, + implementation, + shim + }); + module2.exports = polyfill; + } +}); + +// node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js +var require_is_callable = __commonJS({ + "node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var fnToStr = Function.prototype.toString; + var reflectApply = typeof Reflect === "object" && Reflect !== null && Reflect.apply; + var badArrayLike; + var isCallableMarker; + if (typeof reflectApply === "function" && typeof Object.defineProperty === "function") { + try { + badArrayLike = Object.defineProperty({}, "length", { + get: function() { + throw isCallableMarker; + } + }); + isCallableMarker = {}; + reflectApply(function() { + throw 42; + }, null, badArrayLike); + } catch (_) { + if (_ !== isCallableMarker) { + reflectApply = null; + } + } + } else { + reflectApply = null; + } + var constructorRegex = /^\s*class\b/; + var isES6ClassFn = function isES6ClassFunction(value) { + try { + var fnStr = fnToStr.call(value); + return constructorRegex.test(fnStr); + } catch (e) { + return false; + } + }; + var tryFunctionObject = function tryFunctionToStr(value) { + try { + if (isES6ClassFn(value)) { + return false; + } + fnToStr.call(value); + return true; + } catch (e) { + return false; + } + }; + var toStr = Object.prototype.toString; + var objectClass = "[object Object]"; + var fnClass = "[object Function]"; + var genClass = "[object GeneratorFunction]"; + var ddaClass = "[object HTMLAllCollection]"; + var ddaClass2 = "[object HTML document.all class]"; + var ddaClass3 = "[object HTMLCollection]"; + var hasToStringTag = typeof Symbol === "function" && !!Symbol.toStringTag; + var isIE68 = !(0 in [,]); + var isDDA = function isDocumentDotAll() { + return false; + }; + if (typeof document === "object") { + all = document.all; + if (toStr.call(all) === toStr.call(document.all)) { + isDDA = function isDocumentDotAll(value) { + if ((isIE68 || !value) && (typeof value === "undefined" || typeof value === "object")) { + try { + var str = toStr.call(value); + return (str === ddaClass || str === ddaClass2 || str === ddaClass3 || str === objectClass) && value("") == null; + } catch (e) { + } + } + return false; + }; + } + } + var all; + module2.exports = reflectApply ? function isCallable(value) { + if (isDDA(value)) { + return true; + } + if (!value) { + return false; + } + if (typeof value !== "function" && typeof value !== "object") { + return false; + } + try { + reflectApply(value, null, badArrayLike); + } catch (e) { + if (e !== isCallableMarker) { + return false; + } + } + return !isES6ClassFn(value) && tryFunctionObject(value); + } : function isCallable(value) { + if (isDDA(value)) { + return true; + } + if (!value) { + return false; + } + if (typeof value !== "function" && typeof value !== "object") { + return false; + } + if (hasToStringTag) { + return tryFunctionObject(value); + } + if (isES6ClassFn(value)) { + return false; + } + var strClass = toStr.call(value); + if (strClass !== fnClass && strClass !== genClass && !/^\[object HTML/.test(strClass)) { + return false; + } + return tryFunctionObject(value); + }; + } +}); + +// node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js +var require_for_each = __commonJS({ + "node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var isCallable = require_is_callable(); + var toStr = Object.prototype.toString; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var forEachArray = function forEachArray2(array, iterator, receiver) { + for (var i = 0, len = array.length; i < len; i++) { + if (hasOwnProperty.call(array, i)) { + if (receiver == null) { + iterator(array[i], i, array); + } else { + iterator.call(receiver, array[i], i, array); + } + } + } + }; + var forEachString = function forEachString2(string, iterator, receiver) { + for (var i = 0, len = string.length; i < len; i++) { + if (receiver == null) { + iterator(string.charAt(i), i, string); + } else { + iterator.call(receiver, string.charAt(i), i, string); + } + } + }; + var forEachObject = function forEachObject2(object, iterator, receiver) { + for (var k in object) { + if (hasOwnProperty.call(object, k)) { + if (receiver == null) { + iterator(object[k], k, object); + } else { + iterator.call(receiver, object[k], k, object); + } + } + } + }; + var forEach2 = function forEach3(list, iterator, thisArg) { + if (!isCallable(iterator)) { + throw new TypeError("iterator must be a function"); + } + var receiver; + if (arguments.length >= 3) { + receiver = thisArg; + } + if (toStr.call(list) === "[object Array]") { + forEachArray(list, iterator, receiver); + } else if (typeof list === "string") { + forEachString(list, iterator, receiver); + } else { + forEachObject(list, iterator, receiver); + } + }; + module2.exports = forEach2; + } +}); + +// node_modules/.pnpm/available-typed-arrays@1.0.5/node_modules/available-typed-arrays/index.js +var require_available_typed_arrays = __commonJS({ + "node_modules/.pnpm/available-typed-arrays@1.0.5/node_modules/available-typed-arrays/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var possibleNames = [ + "BigInt64Array", + "BigUint64Array", + "Float32Array", + "Float64Array", + "Int16Array", + "Int32Array", + "Int8Array", + "Uint16Array", + "Uint32Array", + "Uint8Array", + "Uint8ClampedArray" + ]; + var g = typeof globalThis === "undefined" ? global : globalThis; + module2.exports = function availableTypedArrays() { + var out = []; + for (var i = 0; i < possibleNames.length; i++) { + if (typeof g[possibleNames[i]] === "function") { + out[out.length] = possibleNames[i]; + } + } + return out; + }; + } +}); + +// node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js +var require_gopd = __commonJS({ + "node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var GetIntrinsic = require_get_intrinsic(); + var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); + if ($gOPD) { + try { + $gOPD([], "length"); + } catch (e) { + $gOPD = null; + } + } + module2.exports = $gOPD; + } +}); + +// node_modules/.pnpm/is-typed-array@1.1.10/node_modules/is-typed-array/index.js +var require_is_typed_array = __commonJS({ + "node_modules/.pnpm/is-typed-array@1.1.10/node_modules/is-typed-array/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var forEach2 = require_for_each(); + var availableTypedArrays = require_available_typed_arrays(); + var callBound = require_callBound(); + var $toString = callBound("Object.prototype.toString"); + var hasToStringTag = require_shams2()(); + var gOPD = require_gopd(); + var g = typeof globalThis === "undefined" ? global : globalThis; + var typedArrays = availableTypedArrays(); + var $indexOf = callBound("Array.prototype.indexOf", true) || function indexOf(array, value) { + for (var i = 0; i < array.length; i += 1) { + if (array[i] === value) { + return i; + } + } + return -1; + }; + var $slice = callBound("String.prototype.slice"); + var toStrTags = {}; + var getPrototypeOf = Object.getPrototypeOf; + if (hasToStringTag && gOPD && getPrototypeOf) { + forEach2(typedArrays, function(typedArray) { + var arr = new g[typedArray](); + if (Symbol.toStringTag in arr) { + var proto = getPrototypeOf(arr); + var descriptor = gOPD(proto, Symbol.toStringTag); + if (!descriptor) { + var superProto = getPrototypeOf(proto); + descriptor = gOPD(superProto, Symbol.toStringTag); + } + toStrTags[typedArray] = descriptor.get; + } + }); + } + var tryTypedArrays = function tryAllTypedArrays(value) { + var anyTrue = false; + forEach2(toStrTags, function(getter, typedArray) { + if (!anyTrue) { + try { + anyTrue = getter.call(value) === typedArray; + } catch (e) { + } + } + }); + return anyTrue; + }; + module2.exports = function isTypedArray(value) { + if (!value || typeof value !== "object") { + return false; + } + if (!hasToStringTag || !(Symbol.toStringTag in value)) { + var tag2 = $slice($toString(value), 8, -1); + return $indexOf(typedArrays, tag2) > -1; + } + if (!gOPD) { + return false; + } + return tryTypedArrays(value); + }; + } +}); + +// node_modules/.pnpm/is-array-buffer@3.0.2/node_modules/is-array-buffer/index.js +var require_is_array_buffer = __commonJS({ + "node_modules/.pnpm/is-array-buffer@3.0.2/node_modules/is-array-buffer/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var callBind = require_call_bind(); + var callBound = require_callBound(); + var GetIntrinsic = require_get_intrinsic(); + var isTypedArray = require_is_typed_array(); + var $ArrayBuffer = GetIntrinsic("ArrayBuffer", true); + var $Float32Array = GetIntrinsic("Float32Array", true); + var $byteLength = callBound("ArrayBuffer.prototype.byteLength", true); + var abSlice = $ArrayBuffer && !$byteLength && new $ArrayBuffer().slice; + var $abSlice = abSlice && callBind(abSlice); + module2.exports = $byteLength || $abSlice ? function isArrayBuffer(obj) { + if (!obj || typeof obj !== "object") { + return false; + } + try { + if ($byteLength) { + $byteLength(obj); + } else { + $abSlice(obj, 0); + } + return true; + } catch (e) { + return false; + } + } : $Float32Array ? function IsArrayBuffer(obj) { + try { + return new $Float32Array(obj).buffer === obj && !isTypedArray(obj); + } catch (e) { + return typeof obj === "object" && e.name === "RangeError"; + } + } : function isArrayBuffer(obj) { + return false; + }; + } +}); + +// node_modules/.pnpm/is-date-object@1.0.5/node_modules/is-date-object/index.js +var require_is_date_object = __commonJS({ + "node_modules/.pnpm/is-date-object@1.0.5/node_modules/is-date-object/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var getDay = Date.prototype.getDay; + var tryDateObject = function tryDateGetDayCall(value) { + try { + getDay.call(value); + return true; + } catch (e) { + return false; + } + }; + var toStr = Object.prototype.toString; + var dateClass = "[object Date]"; + var hasToStringTag = require_shams2()(); + module2.exports = function isDateObject(value) { + if (typeof value !== "object" || value === null) { + return false; + } + return hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass; + }; + } +}); + +// node_modules/.pnpm/is-regex@1.1.4/node_modules/is-regex/index.js +var require_is_regex = __commonJS({ + "node_modules/.pnpm/is-regex@1.1.4/node_modules/is-regex/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var callBound = require_callBound(); + var hasToStringTag = require_shams2()(); + var has; + var $exec; + var isRegexMarker; + var badStringifier; + if (hasToStringTag) { + has = callBound("Object.prototype.hasOwnProperty"); + $exec = callBound("RegExp.prototype.exec"); + isRegexMarker = {}; + throwRegexMarker = function() { + throw isRegexMarker; + }; + badStringifier = { + toString: throwRegexMarker, + valueOf: throwRegexMarker + }; + if (typeof Symbol.toPrimitive === "symbol") { + badStringifier[Symbol.toPrimitive] = throwRegexMarker; + } + } + var throwRegexMarker; + var $toString = callBound("Object.prototype.toString"); + var gOPD = Object.getOwnPropertyDescriptor; + var regexClass = "[object RegExp]"; + module2.exports = hasToStringTag ? function isRegex(value) { + if (!value || typeof value !== "object") { + return false; + } + var descriptor = gOPD(value, "lastIndex"); + var hasLastIndexDataProperty = descriptor && has(descriptor, "value"); + if (!hasLastIndexDataProperty) { + return false; + } + try { + $exec(value, badStringifier); + } catch (e) { + return e === isRegexMarker; + } + } : function isRegex(value) { + if (!value || typeof value !== "object" && typeof value !== "function") { + return false; + } + return $toString(value) === regexClass; + }; + } +}); + +// node_modules/.pnpm/is-shared-array-buffer@1.0.2/node_modules/is-shared-array-buffer/index.js +var require_is_shared_array_buffer = __commonJS({ + "node_modules/.pnpm/is-shared-array-buffer@1.0.2/node_modules/is-shared-array-buffer/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var callBound = require_callBound(); + var $byteLength = callBound("SharedArrayBuffer.prototype.byteLength", true); + module2.exports = $byteLength ? function isSharedArrayBuffer(obj) { + if (!obj || typeof obj !== "object") { + return false; + } + try { + $byteLength(obj); + return true; + } catch (e) { + return false; + } + } : function isSharedArrayBuffer(obj) { + return false; + }; + } +}); + +// node_modules/.pnpm/is-number-object@1.0.7/node_modules/is-number-object/index.js +var require_is_number_object = __commonJS({ + "node_modules/.pnpm/is-number-object@1.0.7/node_modules/is-number-object/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var numToStr = Number.prototype.toString; + var tryNumberObject = function tryNumberObject2(value) { + try { + numToStr.call(value); + return true; + } catch (e) { + return false; + } + }; + var toStr = Object.prototype.toString; + var numClass = "[object Number]"; + var hasToStringTag = require_shams2()(); + module2.exports = function isNumberObject(value) { + if (typeof value === "number") { + return true; + } + if (typeof value !== "object") { + return false; + } + return hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass; + }; + } +}); + +// node_modules/.pnpm/is-boolean-object@1.1.2/node_modules/is-boolean-object/index.js +var require_is_boolean_object = __commonJS({ + "node_modules/.pnpm/is-boolean-object@1.1.2/node_modules/is-boolean-object/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var callBound = require_callBound(); + var $boolToStr = callBound("Boolean.prototype.toString"); + var $toString = callBound("Object.prototype.toString"); + var tryBooleanObject = function booleanBrandCheck(value) { + try { + $boolToStr(value); + return true; + } catch (e) { + return false; + } + }; + var boolClass = "[object Boolean]"; + var hasToStringTag = require_shams2()(); + module2.exports = function isBoolean(value) { + if (typeof value === "boolean") { + return true; + } + if (value === null || typeof value !== "object") { + return false; + } + return hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : $toString(value) === boolClass; + }; + } +}); + +// node_modules/.pnpm/is-symbol@1.0.4/node_modules/is-symbol/index.js +var require_is_symbol = __commonJS({ + "node_modules/.pnpm/is-symbol@1.0.4/node_modules/is-symbol/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var toStr = Object.prototype.toString; + var hasSymbols = require_has_symbols()(); + if (hasSymbols) { + symToStr = Symbol.prototype.toString; + symStringRegex = /^Symbol\(.*\)$/; + isSymbolObject = function isRealSymbolObject(value) { + if (typeof value.valueOf() !== "symbol") { + return false; + } + return symStringRegex.test(symToStr.call(value)); + }; + module2.exports = function isSymbol(value) { + if (typeof value === "symbol") { + return true; + } + if (toStr.call(value) !== "[object Symbol]") { + return false; + } + try { + return isSymbolObject(value); + } catch (e) { + return false; + } + }; + } else { + module2.exports = function isSymbol(value) { + return false; + }; + } + var symToStr; + var symStringRegex; + var isSymbolObject; + } +}); + +// node_modules/.pnpm/has-bigints@1.0.2/node_modules/has-bigints/index.js +var require_has_bigints = __commonJS({ + "node_modules/.pnpm/has-bigints@1.0.2/node_modules/has-bigints/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var $BigInt = typeof BigInt !== "undefined" && BigInt; + module2.exports = function hasNativeBigInts() { + return typeof $BigInt === "function" && typeof BigInt === "function" && typeof $BigInt(42) === "bigint" && typeof BigInt(42) === "bigint"; + }; + } +}); + +// node_modules/.pnpm/is-bigint@1.0.4/node_modules/is-bigint/index.js +var require_is_bigint = __commonJS({ + "node_modules/.pnpm/is-bigint@1.0.4/node_modules/is-bigint/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var hasBigInts = require_has_bigints()(); + if (hasBigInts) { + bigIntValueOf = BigInt.prototype.valueOf; + tryBigInt = function tryBigIntObject(value) { + try { + bigIntValueOf.call(value); + return true; + } catch (e) { + } + return false; + }; + module2.exports = function isBigInt(value) { + if (value === null || typeof value === "undefined" || typeof value === "boolean" || typeof value === "string" || typeof value === "number" || typeof value === "symbol" || typeof value === "function") { + return false; + } + if (typeof value === "bigint") { + return true; + } + return tryBigInt(value); + }; + } else { + module2.exports = function isBigInt(value) { + return false; + }; + } + var bigIntValueOf; + var tryBigInt; + } +}); + +// node_modules/.pnpm/which-boxed-primitive@1.0.2/node_modules/which-boxed-primitive/index.js +var require_which_boxed_primitive = __commonJS({ + "node_modules/.pnpm/which-boxed-primitive@1.0.2/node_modules/which-boxed-primitive/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var isString = require_is_string(); + var isNumber = require_is_number_object(); + var isBoolean = require_is_boolean_object(); + var isSymbol = require_is_symbol(); + var isBigInt = require_is_bigint(); + module2.exports = function whichBoxedPrimitive(value) { + if (value == null || typeof value !== "object" && typeof value !== "function") { + return null; + } + if (isString(value)) { + return "String"; + } + if (isNumber(value)) { + return "Number"; + } + if (isBoolean(value)) { + return "Boolean"; + } + if (isSymbol(value)) { + return "Symbol"; + } + if (isBigInt(value)) { + return "BigInt"; + } + }; + } +}); + +// node_modules/.pnpm/is-weakmap@2.0.1/node_modules/is-weakmap/index.js +var require_is_weakmap = __commonJS({ + "node_modules/.pnpm/is-weakmap@2.0.1/node_modules/is-weakmap/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var $WeakMap = typeof WeakMap === "function" && WeakMap.prototype ? WeakMap : null; + var $WeakSet = typeof WeakSet === "function" && WeakSet.prototype ? WeakSet : null; + var exported; + if (!$WeakMap) { + exported = function isWeakMap(x) { + return false; + }; + } + var $mapHas = $WeakMap ? $WeakMap.prototype.has : null; + var $setHas = $WeakSet ? $WeakSet.prototype.has : null; + if (!exported && !$mapHas) { + exported = function isWeakMap(x) { + return false; + }; + } + module2.exports = exported || function isWeakMap(x) { + if (!x || typeof x !== "object") { + return false; + } + try { + $mapHas.call(x, $mapHas); + if ($setHas) { + try { + $setHas.call(x, $setHas); + } catch (e) { + return true; + } + } + return x instanceof $WeakMap; + } catch (e) { + } + return false; + }; + } +}); + +// node_modules/.pnpm/is-weakset@2.0.2/node_modules/is-weakset/index.js +var require_is_weakset = __commonJS({ + "node_modules/.pnpm/is-weakset@2.0.2/node_modules/is-weakset/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var GetIntrinsic = require_get_intrinsic(); + var callBound = require_callBound(); + var $WeakSet = GetIntrinsic("%WeakSet%", true); + var $setHas = callBound("WeakSet.prototype.has", true); + if ($setHas) { + $mapHas = callBound("WeakMap.prototype.has", true); + module2.exports = function isWeakSet(x) { + if (!x || typeof x !== "object") { + return false; + } + try { + $setHas(x, $setHas); + if ($mapHas) { + try { + $mapHas(x, $mapHas); + } catch (e) { + return true; + } + } + return x instanceof $WeakSet; + } catch (e) { + } + return false; + }; + } else { + module2.exports = function isWeakSet(x) { + return false; + }; + } + var $mapHas; + } +}); + +// node_modules/.pnpm/which-collection@1.0.1/node_modules/which-collection/index.js +var require_which_collection = __commonJS({ + "node_modules/.pnpm/which-collection@1.0.1/node_modules/which-collection/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var isMap = require_is_map(); + var isSet = require_is_set(); + var isWeakMap = require_is_weakmap(); + var isWeakSet = require_is_weakset(); + module2.exports = function whichCollection(value) { + if (value && typeof value === "object") { + if (isMap(value)) { + return "Map"; + } + if (isSet(value)) { + return "Set"; + } + if (isWeakMap(value)) { + return "WeakMap"; + } + if (isWeakSet(value)) { + return "WeakSet"; + } + } + return false; + }; + } +}); + +// node_modules/.pnpm/which-typed-array@1.1.9/node_modules/which-typed-array/index.js +var require_which_typed_array = __commonJS({ + "node_modules/.pnpm/which-typed-array@1.1.9/node_modules/which-typed-array/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var forEach2 = require_for_each(); + var availableTypedArrays = require_available_typed_arrays(); + var callBound = require_callBound(); + var gOPD = require_gopd(); + var $toString = callBound("Object.prototype.toString"); + var hasToStringTag = require_shams2()(); + var g = typeof globalThis === "undefined" ? global : globalThis; + var typedArrays = availableTypedArrays(); + var $slice = callBound("String.prototype.slice"); + var toStrTags = {}; + var getPrototypeOf = Object.getPrototypeOf; + if (hasToStringTag && gOPD && getPrototypeOf) { + forEach2(typedArrays, function(typedArray) { + if (typeof g[typedArray] === "function") { + var arr = new g[typedArray](); + if (Symbol.toStringTag in arr) { + var proto = getPrototypeOf(arr); + var descriptor = gOPD(proto, Symbol.toStringTag); + if (!descriptor) { + var superProto = getPrototypeOf(proto); + descriptor = gOPD(superProto, Symbol.toStringTag); + } + toStrTags[typedArray] = descriptor.get; + } + } + }); + } + var tryTypedArrays = function tryAllTypedArrays(value) { + var foundName = false; + forEach2(toStrTags, function(getter, typedArray) { + if (!foundName) { + try { + var name = getter.call(value); + if (name === typedArray) { + foundName = name; + } + } catch (e) { + } + } + }); + return foundName; + }; + var isTypedArray = require_is_typed_array(); + module2.exports = function whichTypedArray(value) { + if (!isTypedArray(value)) { + return false; + } + if (!hasToStringTag || !(Symbol.toStringTag in value)) { + return $slice($toString(value), 8, -1); + } + return tryTypedArrays(value); + }; + } +}); + +// node_modules/.pnpm/array-buffer-byte-length@1.0.0/node_modules/array-buffer-byte-length/index.js +var require_array_buffer_byte_length = __commonJS({ + "node_modules/.pnpm/array-buffer-byte-length@1.0.0/node_modules/array-buffer-byte-length/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var callBound = require_callBound(); + var $byteLength = callBound("ArrayBuffer.prototype.byteLength", true); + var isArrayBuffer = require_is_array_buffer(); + module2.exports = function byteLength(ab) { + if (!isArrayBuffer(ab)) { + return NaN; + } + return $byteLength ? $byteLength(ab) : ab.byteLength; + }; + } +}); + +// node_modules/.pnpm/deep-equal@2.2.1/node_modules/deep-equal/index.js +var require_deep_equal = __commonJS({ + "node_modules/.pnpm/deep-equal@2.2.1/node_modules/deep-equal/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var assign2 = require_object(); + var callBound = require_callBound(); + var flags = require_regexp_prototype(); + var GetIntrinsic = require_get_intrinsic(); + var getIterator3 = require_es_get_iterator(); + var getSideChannel = require_side_channel(); + var is = require_object_is(); + var isArguments = require_is_arguments(); + var isArray = require_isarray(); + var isArrayBuffer = require_is_array_buffer(); + var isDate = require_is_date_object(); + var isRegex = require_is_regex(); + var isSharedArrayBuffer = require_is_shared_array_buffer(); + var objectKeys = require_object_keys(); + var whichBoxedPrimitive = require_which_boxed_primitive(); + var whichCollection = require_which_collection(); + var whichTypedArray = require_which_typed_array(); + var byteLength = require_array_buffer_byte_length(); + var sabByteLength = callBound("SharedArrayBuffer.prototype.byteLength", true); + var $getTime = callBound("Date.prototype.getTime"); + var gPO = Object.getPrototypeOf; + var $objToString = callBound("Object.prototype.toString"); + var $Set = GetIntrinsic("%Set%", true); + var $mapHas = callBound("Map.prototype.has", true); + var $mapGet = callBound("Map.prototype.get", true); + var $mapSize = callBound("Map.prototype.size", true); + var $setAdd = callBound("Set.prototype.add", true); + var $setDelete = callBound("Set.prototype.delete", true); + var $setHas = callBound("Set.prototype.has", true); + var $setSize = callBound("Set.prototype.size", true); + function setHasEqualElement(set, val1, opts, channel) { + var i = getIterator3(set); + var result; + while ((result = i.next()) && !result.done) { + if (internalDeepEqual(val1, result.value, opts, channel)) { + $setDelete(set, result.value); + return true; + } + } + return false; + } + function findLooseMatchingPrimitives(prim) { + if (typeof prim === "undefined") { + return null; + } + if (typeof prim === "object") { + return void 0; + } + if (typeof prim === "symbol") { + return false; + } + if (typeof prim === "string" || typeof prim === "number") { + return +prim === +prim; + } + return true; + } + function mapMightHaveLoosePrim(a, b, prim, item, opts, channel) { + var altValue = findLooseMatchingPrimitives(prim); + if (altValue != null) { + return altValue; + } + var curB = $mapGet(b, altValue); + var looseOpts = assign2({}, opts, { strict: false }); + if (typeof curB === "undefined" && !$mapHas(b, altValue) || !internalDeepEqual(item, curB, looseOpts, channel)) { + return false; + } + return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel); + } + function setMightHaveLoosePrim(a, b, prim) { + var altValue = findLooseMatchingPrimitives(prim); + if (altValue != null) { + return altValue; + } + return $setHas(b, altValue) && !$setHas(a, altValue); + } + function mapHasEqualEntry(set, map, key1, item1, opts, channel) { + var i = getIterator3(set); + var result; + var key2; + while ((result = i.next()) && !result.done) { + key2 = result.value; + if ( + // eslint-disable-next-line no-use-before-define + internalDeepEqual(key1, key2, opts, channel) && internalDeepEqual(item1, $mapGet(map, key2), opts, channel) + ) { + $setDelete(set, key2); + return true; + } + } + return false; + } + function internalDeepEqual(actual, expected, options, channel) { + var opts = options || {}; + if (opts.strict ? is(actual, expected) : actual === expected) { + return true; + } + var actualBoxed = whichBoxedPrimitive(actual); + var expectedBoxed = whichBoxedPrimitive(expected); + if (actualBoxed !== expectedBoxed) { + return false; + } + if (!actual || !expected || typeof actual !== "object" && typeof expected !== "object") { + return opts.strict ? is(actual, expected) : actual == expected; + } + var hasActual = channel.has(actual); + var hasExpected = channel.has(expected); + var sentinel; + if (hasActual && hasExpected) { + if (channel.get(actual) === channel.get(expected)) { + return true; + } + } else { + sentinel = {}; + } + if (!hasActual) { + channel.set(actual, sentinel); + } + if (!hasExpected) { + channel.set(expected, sentinel); + } + return objEquiv(actual, expected, opts, channel); + } + function isBuffer(x) { + if (!x || typeof x !== "object" || typeof x.length !== "number") { + return false; + } + if (typeof x.copy !== "function" || typeof x.slice !== "function") { + return false; + } + if (x.length > 0 && typeof x[0] !== "number") { + return false; + } + return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x)); + } + function setEquiv(a, b, opts, channel) { + if ($setSize(a) !== $setSize(b)) { + return false; + } + var iA = getIterator3(a); + var iB = getIterator3(b); + var resultA; + var resultB; + var set; + while ((resultA = iA.next()) && !resultA.done) { + if (resultA.value && typeof resultA.value === "object") { + if (!set) { + set = new $Set(); + } + $setAdd(set, resultA.value); + } else if (!$setHas(b, resultA.value)) { + if (opts.strict) { + return false; + } + if (!setMightHaveLoosePrim(a, b, resultA.value)) { + return false; + } + if (!set) { + set = new $Set(); + } + $setAdd(set, resultA.value); + } + } + if (set) { + while ((resultB = iB.next()) && !resultB.done) { + if (resultB.value && typeof resultB.value === "object") { + if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) { + return false; + } + } else if (!opts.strict && !$setHas(a, resultB.value) && !setHasEqualElement(set, resultB.value, opts.strict, channel)) { + return false; + } + } + return $setSize(set) === 0; + } + return true; + } + function mapEquiv(a, b, opts, channel) { + if ($mapSize(a) !== $mapSize(b)) { + return false; + } + var iA = getIterator3(a); + var iB = getIterator3(b); + var resultA; + var resultB; + var set; + var key2; + var item1; + var item2; + while ((resultA = iA.next()) && !resultA.done) { + key2 = resultA.value[0]; + item1 = resultA.value[1]; + if (key2 && typeof key2 === "object") { + if (!set) { + set = new $Set(); + } + $setAdd(set, key2); + } else { + item2 = $mapGet(b, key2); + if (typeof item2 === "undefined" && !$mapHas(b, key2) || !internalDeepEqual(item1, item2, opts, channel)) { + if (opts.strict) { + return false; + } + if (!mapMightHaveLoosePrim(a, b, key2, item1, opts, channel)) { + return false; + } + if (!set) { + set = new $Set(); + } + $setAdd(set, key2); + } + } + } + if (set) { + while ((resultB = iB.next()) && !resultB.done) { + key2 = resultB.value[0]; + item2 = resultB.value[1]; + if (key2 && typeof key2 === "object") { + if (!mapHasEqualEntry(set, a, key2, item2, opts, channel)) { + return false; + } + } else if (!opts.strict && (!a.has(key2) || !internalDeepEqual($mapGet(a, key2), item2, opts, channel)) && !mapHasEqualEntry(set, a, key2, item2, assign2({}, opts, { strict: false }), channel)) { + return false; + } + } + return $setSize(set) === 0; + } + return true; + } + function objEquiv(a, b, opts, channel) { + var i, key2; + if (typeof a !== typeof b) { + return false; + } + if (a == null || b == null) { + return false; + } + if ($objToString(a) !== $objToString(b)) { + return false; + } + if (isArguments(a) !== isArguments(b)) { + return false; + } + var aIsArray = isArray(a); + var bIsArray = isArray(b); + if (aIsArray !== bIsArray) { + return false; + } + var aIsError = a instanceof Error; + var bIsError = b instanceof Error; + if (aIsError !== bIsError) { + return false; + } + if (aIsError || bIsError) { + if (a.name !== b.name || a.message !== b.message) { + return false; + } + } + var aIsRegex = isRegex(a); + var bIsRegex = isRegex(b); + if (aIsRegex !== bIsRegex) { + return false; + } + if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) { + return false; + } + var aIsDate = isDate(a); + var bIsDate = isDate(b); + if (aIsDate !== bIsDate) { + return false; + } + if (aIsDate || bIsDate) { + if ($getTime(a) !== $getTime(b)) { + return false; + } + } + if (opts.strict && gPO && gPO(a) !== gPO(b)) { + return false; + } + var aWhich = whichTypedArray(a); + var bWhich = whichTypedArray(b); + if ((aWhich || bWhich) && aWhich !== bWhich) { + return false; + } + var aIsBuffer = isBuffer(a); + var bIsBuffer = isBuffer(b); + if (aIsBuffer !== bIsBuffer) { + return false; + } + if (aIsBuffer || bIsBuffer) { + if (a.length !== b.length) { + return false; + } + for (i = 0; i < a.length; i++) { + if (a[i] !== b[i]) { + return false; + } + } + return true; + } + var aIsArrayBuffer = isArrayBuffer(a); + var bIsArrayBuffer = isArrayBuffer(b); + if (aIsArrayBuffer !== bIsArrayBuffer) { + return false; + } + if (aIsArrayBuffer || bIsArrayBuffer) { + if (byteLength(a) !== byteLength(b)) { + return false; + } + return typeof Uint8Array === "function" && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel); + } + var aIsSAB = isSharedArrayBuffer(a); + var bIsSAB = isSharedArrayBuffer(b); + if (aIsSAB !== bIsSAB) { + return false; + } + if (aIsSAB || bIsSAB) { + if (sabByteLength(a) !== sabByteLength(b)) { + return false; + } + return typeof Uint8Array === "function" && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel); + } + if (typeof a !== typeof b) { + return false; + } + var ka = objectKeys(a); + var kb = objectKeys(b); + if (ka.length !== kb.length) { + return false; + } + ka.sort(); + kb.sort(); + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) { + return false; + } + } + for (i = ka.length - 1; i >= 0; i--) { + key2 = ka[i]; + if (!internalDeepEqual(a[key2], b[key2], opts, channel)) { + return false; + } + } + var aCollection = whichCollection(a); + var bCollection = whichCollection(b); + if (aCollection !== bCollection) { + return false; + } + if (aCollection === "Set" || bCollection === "Set") { + return setEquiv(a, b, opts, channel); + } + if (aCollection === "Map") { + return mapEquiv(a, b, opts, channel); + } + return true; + } + module2.exports = function deepEqual2(a, b, opts) { + return internalDeepEqual(a, b, opts, getSideChannel()); + }; + } +}); + +// node_modules/.pnpm/js-sha256@0.9.0/node_modules/js-sha256/src/sha256.js +var require_sha256 = __commonJS({ + "node_modules/.pnpm/js-sha256@0.9.0/node_modules/js-sha256/src/sha256.js"(exports, module) { + init_polyfill_buffer(); + (function() { + "use strict"; + var ERROR = "input is invalid type"; + var WINDOW = typeof window === "object"; + var root = WINDOW ? window : {}; + if (root.JS_SHA256_NO_WINDOW) { + WINDOW = false; + } + var WEB_WORKER = !WINDOW && typeof self === "object"; + var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node; + if (NODE_JS) { + root = global; + } else if (WEB_WORKER) { + root = self; + } + var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === "object" && module.exports; + var AMD = typeof define === "function" && define.amd; + var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined"; + var HEX_CHARS = "0123456789abcdef".split(""); + var EXTRA = [-2147483648, 8388608, 32768, 128]; + var SHIFT = [24, 16, 8, 0]; + var K = [ + 1116352408, + 1899447441, + 3049323471, + 3921009573, + 961987163, + 1508970993, + 2453635748, + 2870763221, + 3624381080, + 310598401, + 607225278, + 1426881987, + 1925078388, + 2162078206, + 2614888103, + 3248222580, + 3835390401, + 4022224774, + 264347078, + 604807628, + 770255983, + 1249150122, + 1555081692, + 1996064986, + 2554220882, + 2821834349, + 2952996808, + 3210313671, + 3336571891, + 3584528711, + 113926993, + 338241895, + 666307205, + 773529912, + 1294757372, + 1396182291, + 1695183700, + 1986661051, + 2177026350, + 2456956037, + 2730485921, + 2820302411, + 3259730800, + 3345764771, + 3516065817, + 3600352804, + 4094571909, + 275423344, + 430227734, + 506948616, + 659060556, + 883997877, + 958139571, + 1322822218, + 1537002063, + 1747873779, + 1955562222, + 2024104815, + 2227730452, + 2361852424, + 2428436474, + 2756734187, + 3204031479, + 3329325298 + ]; + var OUTPUT_TYPES = ["hex", "array", "digest", "arrayBuffer"]; + var blocks = []; + if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) { + Array.isArray = function(obj) { + return Object.prototype.toString.call(obj) === "[object Array]"; + }; + } + if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) { + ArrayBuffer.isView = function(obj) { + return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer; + }; + } + var createOutputMethod = function(outputType, is2242) { + return function(message) { + return new Sha256(is2242, true).update(message)[outputType](); + }; + }; + var createMethod = function(is2242) { + var method2 = createOutputMethod("hex", is2242); + if (NODE_JS) { + method2 = nodeWrap(method2, is2242); + } + method2.create = function() { + return new Sha256(is2242); + }; + method2.update = function(message) { + return method2.create().update(message); + }; + for (var i = 0; i < OUTPUT_TYPES.length; ++i) { + var type = OUTPUT_TYPES[i]; + method2[type] = createOutputMethod(type, is2242); + } + return method2; + }; + var nodeWrap = function(method, is224) { + var crypto = eval("require('crypto')"); + var Buffer = eval("require('buffer').Buffer"); + var algorithm = is224 ? "sha224" : "sha256"; + var nodeMethod = function(message) { + if (typeof message === "string") { + return crypto.createHash(algorithm).update(message, "utf8").digest("hex"); + } else { + if (message === null || message === void 0) { + throw new Error(ERROR); + } else if (message.constructor === ArrayBuffer) { + message = new Uint8Array(message); + } + } + if (Array.isArray(message) || ArrayBuffer.isView(message) || message.constructor === Buffer) { + return crypto.createHash(algorithm).update(new Buffer(message)).digest("hex"); + } else { + return method(message); + } + }; + return nodeMethod; + }; + var createHmacOutputMethod = function(outputType, is2242) { + return function(key2, message) { + return new HmacSha256(key2, is2242, true).update(message)[outputType](); + }; + }; + var createHmacMethod = function(is2242) { + var method2 = createHmacOutputMethod("hex", is2242); + method2.create = function(key2) { + return new HmacSha256(key2, is2242); + }; + method2.update = function(key2, message) { + return method2.create(key2).update(message); + }; + for (var i = 0; i < OUTPUT_TYPES.length; ++i) { + var type = OUTPUT_TYPES[i]; + method2[type] = createHmacOutputMethod(type, is2242); + } + return method2; + }; + function Sha256(is2242, sharedMemory) { + if (sharedMemory) { + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + this.blocks = blocks; + } else { + this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + if (is2242) { + this.h0 = 3238371032; + this.h1 = 914150663; + this.h2 = 812702999; + this.h3 = 4144912697; + this.h4 = 4290775857; + this.h5 = 1750603025; + this.h6 = 1694076839; + this.h7 = 3204075428; + } else { + this.h0 = 1779033703; + this.h1 = 3144134277; + this.h2 = 1013904242; + this.h3 = 2773480762; + this.h4 = 1359893119; + this.h5 = 2600822924; + this.h6 = 528734635; + this.h7 = 1541459225; + } + this.block = this.start = this.bytes = this.hBytes = 0; + this.finalized = this.hashed = false; + this.first = true; + this.is224 = is2242; + } + Sha256.prototype.update = function(message) { + if (this.finalized) { + return; + } + var notString, type = typeof message; + if (type !== "string") { + if (type === "object") { + if (message === null) { + throw new Error(ERROR); + } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) { + message = new Uint8Array(message); + } else if (!Array.isArray(message)) { + if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) { + throw new Error(ERROR); + } + } + } else { + throw new Error(ERROR); + } + notString = true; + } + var code, index2 = 0, i, length = message.length, blocks2 = this.blocks; + while (index2 < length) { + if (this.hashed) { + this.hashed = false; + blocks2[0] = this.block; + blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0; + } + if (notString) { + for (i = this.start; index2 < length && i < 64; ++index2) { + blocks2[i >> 2] |= message[index2] << SHIFT[i++ & 3]; + } + } else { + for (i = this.start; index2 < length && i < 64; ++index2) { + code = message.charCodeAt(index2); + if (code < 128) { + blocks2[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 2048) { + blocks2[i >> 2] |= (192 | code >> 6) << SHIFT[i++ & 3]; + blocks2[i >> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; + } else if (code < 55296 || code >= 57344) { + blocks2[i >> 2] |= (224 | code >> 12) << SHIFT[i++ & 3]; + blocks2[i >> 2] |= (128 | code >> 6 & 63) << SHIFT[i++ & 3]; + blocks2[i >> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; + } else { + code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index2) & 1023); + blocks2[i >> 2] |= (240 | code >> 18) << SHIFT[i++ & 3]; + blocks2[i >> 2] |= (128 | code >> 12 & 63) << SHIFT[i++ & 3]; + blocks2[i >> 2] |= (128 | code >> 6 & 63) << SHIFT[i++ & 3]; + blocks2[i >> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; + } + } + } + this.lastByteIndex = i; + this.bytes += i - this.start; + if (i >= 64) { + this.block = blocks2[16]; + this.start = i - 64; + this.hash(); + this.hashed = true; + } else { + this.start = i; + } + } + if (this.bytes > 4294967295) { + this.hBytes += this.bytes / 4294967296 << 0; + this.bytes = this.bytes % 4294967296; + } + return this; + }; + Sha256.prototype.finalize = function() { + if (this.finalized) { + return; + } + this.finalized = true; + var blocks2 = this.blocks, i = this.lastByteIndex; + blocks2[16] = this.block; + blocks2[i >> 2] |= EXTRA[i & 3]; + this.block = blocks2[16]; + if (i >= 56) { + if (!this.hashed) { + this.hash(); + } + blocks2[0] = this.block; + blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0; + } + blocks2[14] = this.hBytes << 3 | this.bytes >>> 29; + blocks2[15] = this.bytes << 3; + this.hash(); + }; + Sha256.prototype.hash = function() { + var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6, h = this.h7, blocks2 = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc; + for (j = 16; j < 64; ++j) { + t1 = blocks2[j - 15]; + s0 = (t1 >>> 7 | t1 << 25) ^ (t1 >>> 18 | t1 << 14) ^ t1 >>> 3; + t1 = blocks2[j - 2]; + s1 = (t1 >>> 17 | t1 << 15) ^ (t1 >>> 19 | t1 << 13) ^ t1 >>> 10; + blocks2[j] = blocks2[j - 16] + s0 + blocks2[j - 7] + s1 << 0; + } + bc = b & c; + for (j = 0; j < 64; j += 4) { + if (this.first) { + if (this.is224) { + ab = 300032; + t1 = blocks2[0] - 1413257819; + h = t1 - 150054599 << 0; + d = t1 + 24177077 << 0; + } else { + ab = 704751109; + t1 = blocks2[0] - 210244248; + h = t1 - 1521486534 << 0; + d = t1 + 143694565 << 0; + } + this.first = false; + } else { + s0 = (a >>> 2 | a << 30) ^ (a >>> 13 | a << 19) ^ (a >>> 22 | a << 10); + s1 = (e >>> 6 | e << 26) ^ (e >>> 11 | e << 21) ^ (e >>> 25 | e << 7); + ab = a & b; + maj = ab ^ a & c ^ bc; + ch = e & f ^ ~e & g; + t1 = h + s1 + ch + K[j] + blocks2[j]; + t2 = s0 + maj; + h = d + t1 << 0; + d = t1 + t2 << 0; + } + s0 = (d >>> 2 | d << 30) ^ (d >>> 13 | d << 19) ^ (d >>> 22 | d << 10); + s1 = (h >>> 6 | h << 26) ^ (h >>> 11 | h << 21) ^ (h >>> 25 | h << 7); + da = d & a; + maj = da ^ d & b ^ ab; + ch = h & e ^ ~h & f; + t1 = g + s1 + ch + K[j + 1] + blocks2[j + 1]; + t2 = s0 + maj; + g = c + t1 << 0; + c = t1 + t2 << 0; + s0 = (c >>> 2 | c << 30) ^ (c >>> 13 | c << 19) ^ (c >>> 22 | c << 10); + s1 = (g >>> 6 | g << 26) ^ (g >>> 11 | g << 21) ^ (g >>> 25 | g << 7); + cd = c & d; + maj = cd ^ c & a ^ da; + ch = g & h ^ ~g & e; + t1 = f + s1 + ch + K[j + 2] + blocks2[j + 2]; + t2 = s0 + maj; + f = b + t1 << 0; + b = t1 + t2 << 0; + s0 = (b >>> 2 | b << 30) ^ (b >>> 13 | b << 19) ^ (b >>> 22 | b << 10); + s1 = (f >>> 6 | f << 26) ^ (f >>> 11 | f << 21) ^ (f >>> 25 | f << 7); + bc = b & c; + maj = bc ^ b & d ^ cd; + ch = f & g ^ ~f & h; + t1 = e + s1 + ch + K[j + 3] + blocks2[j + 3]; + t2 = s0 + maj; + e = a + t1 << 0; + a = t1 + t2 << 0; + } + this.h0 = this.h0 + a << 0; + this.h1 = this.h1 + b << 0; + this.h2 = this.h2 + c << 0; + this.h3 = this.h3 + d << 0; + this.h4 = this.h4 + e << 0; + this.h5 = this.h5 + f << 0; + this.h6 = this.h6 + g << 0; + this.h7 = this.h7 + h << 0; + }; + Sha256.prototype.hex = function() { + this.finalize(); + var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7; + var hex = HEX_CHARS[h0 >> 28 & 15] + HEX_CHARS[h0 >> 24 & 15] + HEX_CHARS[h0 >> 20 & 15] + HEX_CHARS[h0 >> 16 & 15] + HEX_CHARS[h0 >> 12 & 15] + HEX_CHARS[h0 >> 8 & 15] + HEX_CHARS[h0 >> 4 & 15] + HEX_CHARS[h0 & 15] + HEX_CHARS[h1 >> 28 & 15] + HEX_CHARS[h1 >> 24 & 15] + HEX_CHARS[h1 >> 20 & 15] + HEX_CHARS[h1 >> 16 & 15] + HEX_CHARS[h1 >> 12 & 15] + HEX_CHARS[h1 >> 8 & 15] + HEX_CHARS[h1 >> 4 & 15] + HEX_CHARS[h1 & 15] + HEX_CHARS[h2 >> 28 & 15] + HEX_CHARS[h2 >> 24 & 15] + HEX_CHARS[h2 >> 20 & 15] + HEX_CHARS[h2 >> 16 & 15] + HEX_CHARS[h2 >> 12 & 15] + HEX_CHARS[h2 >> 8 & 15] + HEX_CHARS[h2 >> 4 & 15] + HEX_CHARS[h2 & 15] + HEX_CHARS[h3 >> 28 & 15] + HEX_CHARS[h3 >> 24 & 15] + HEX_CHARS[h3 >> 20 & 15] + HEX_CHARS[h3 >> 16 & 15] + HEX_CHARS[h3 >> 12 & 15] + HEX_CHARS[h3 >> 8 & 15] + HEX_CHARS[h3 >> 4 & 15] + HEX_CHARS[h3 & 15] + HEX_CHARS[h4 >> 28 & 15] + HEX_CHARS[h4 >> 24 & 15] + HEX_CHARS[h4 >> 20 & 15] + HEX_CHARS[h4 >> 16 & 15] + HEX_CHARS[h4 >> 12 & 15] + HEX_CHARS[h4 >> 8 & 15] + HEX_CHARS[h4 >> 4 & 15] + HEX_CHARS[h4 & 15] + HEX_CHARS[h5 >> 28 & 15] + HEX_CHARS[h5 >> 24 & 15] + HEX_CHARS[h5 >> 20 & 15] + HEX_CHARS[h5 >> 16 & 15] + HEX_CHARS[h5 >> 12 & 15] + HEX_CHARS[h5 >> 8 & 15] + HEX_CHARS[h5 >> 4 & 15] + HEX_CHARS[h5 & 15] + HEX_CHARS[h6 >> 28 & 15] + HEX_CHARS[h6 >> 24 & 15] + HEX_CHARS[h6 >> 20 & 15] + HEX_CHARS[h6 >> 16 & 15] + HEX_CHARS[h6 >> 12 & 15] + HEX_CHARS[h6 >> 8 & 15] + HEX_CHARS[h6 >> 4 & 15] + HEX_CHARS[h6 & 15]; + if (!this.is224) { + hex += HEX_CHARS[h7 >> 28 & 15] + HEX_CHARS[h7 >> 24 & 15] + HEX_CHARS[h7 >> 20 & 15] + HEX_CHARS[h7 >> 16 & 15] + HEX_CHARS[h7 >> 12 & 15] + HEX_CHARS[h7 >> 8 & 15] + HEX_CHARS[h7 >> 4 & 15] + HEX_CHARS[h7 & 15]; + } + return hex; + }; + Sha256.prototype.toString = Sha256.prototype.hex; + Sha256.prototype.digest = function() { + this.finalize(); + var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7; + var arr = [ + h0 >> 24 & 255, + h0 >> 16 & 255, + h0 >> 8 & 255, + h0 & 255, + h1 >> 24 & 255, + h1 >> 16 & 255, + h1 >> 8 & 255, + h1 & 255, + h2 >> 24 & 255, + h2 >> 16 & 255, + h2 >> 8 & 255, + h2 & 255, + h3 >> 24 & 255, + h3 >> 16 & 255, + h3 >> 8 & 255, + h3 & 255, + h4 >> 24 & 255, + h4 >> 16 & 255, + h4 >> 8 & 255, + h4 & 255, + h5 >> 24 & 255, + h5 >> 16 & 255, + h5 >> 8 & 255, + h5 & 255, + h6 >> 24 & 255, + h6 >> 16 & 255, + h6 >> 8 & 255, + h6 & 255 + ]; + if (!this.is224) { + arr.push(h7 >> 24 & 255, h7 >> 16 & 255, h7 >> 8 & 255, h7 & 255); + } + return arr; + }; + Sha256.prototype.array = Sha256.prototype.digest; + Sha256.prototype.arrayBuffer = function() { + this.finalize(); + var buffer2 = new ArrayBuffer(this.is224 ? 28 : 32); + var dataView = new DataView(buffer2); + dataView.setUint32(0, this.h0); + dataView.setUint32(4, this.h1); + dataView.setUint32(8, this.h2); + dataView.setUint32(12, this.h3); + dataView.setUint32(16, this.h4); + dataView.setUint32(20, this.h5); + dataView.setUint32(24, this.h6); + if (!this.is224) { + dataView.setUint32(28, this.h7); + } + return buffer2; + }; + function HmacSha256(key2, is2242, sharedMemory) { + var i, type = typeof key2; + if (type === "string") { + var bytes = [], length = key2.length, index2 = 0, code; + for (i = 0; i < length; ++i) { + code = key2.charCodeAt(i); + if (code < 128) { + bytes[index2++] = code; + } else if (code < 2048) { + bytes[index2++] = 192 | code >> 6; + bytes[index2++] = 128 | code & 63; + } else if (code < 55296 || code >= 57344) { + bytes[index2++] = 224 | code >> 12; + bytes[index2++] = 128 | code >> 6 & 63; + bytes[index2++] = 128 | code & 63; + } else { + code = 65536 + ((code & 1023) << 10 | key2.charCodeAt(++i) & 1023); + bytes[index2++] = 240 | code >> 18; + bytes[index2++] = 128 | code >> 12 & 63; + bytes[index2++] = 128 | code >> 6 & 63; + bytes[index2++] = 128 | code & 63; + } + } + key2 = bytes; + } else { + if (type === "object") { + if (key2 === null) { + throw new Error(ERROR); + } else if (ARRAY_BUFFER && key2.constructor === ArrayBuffer) { + key2 = new Uint8Array(key2); + } else if (!Array.isArray(key2)) { + if (!ARRAY_BUFFER || !ArrayBuffer.isView(key2)) { + throw new Error(ERROR); + } + } + } else { + throw new Error(ERROR); + } + } + if (key2.length > 64) { + key2 = new Sha256(is2242, true).update(key2).array(); + } + var oKeyPad = [], iKeyPad = []; + for (i = 0; i < 64; ++i) { + var b = key2[i] || 0; + oKeyPad[i] = 92 ^ b; + iKeyPad[i] = 54 ^ b; + } + Sha256.call(this, is2242, sharedMemory); + this.update(iKeyPad); + this.oKeyPad = oKeyPad; + this.inner = true; + this.sharedMemory = sharedMemory; + } + HmacSha256.prototype = new Sha256(); + HmacSha256.prototype.finalize = function() { + Sha256.prototype.finalize.call(this); + if (this.inner) { + this.inner = false; + var innerHash = this.array(); + Sha256.call(this, this.is224, this.sharedMemory); + this.update(this.oKeyPad); + this.update(innerHash); + Sha256.prototype.finalize.call(this); + } + }; + var exports = createMethod(); + exports.sha256 = exports; + exports.sha224 = createMethod(true); + exports.sha256.hmac = createHmacMethod(); + exports.sha224.hmac = createHmacMethod(true); + if (COMMON_JS) { + module.exports = exports; + } else { + root.sha256 = exports.sha256; + root.sha224 = exports.sha224; + if (AMD) { + define(function() { + return exports; + }); + } + } + })(); } }); // node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/compiler.js var require_compiler = __commonJS({ - "node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/compiler.js"(exports) { + "node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/compiler.js"(exports2) { init_polyfill_buffer(); (function(Hogan4) { var rIsWhitespace = /\S/, rQuot = /\"/g, rNewline = /\n/g, rCr = /\r/g, rSlash = /\\/g, rLineSep = /\u2028/, rParagraphSep = /\u2029/; @@ -7849,7 +12604,9 @@ var require_compiler = __commonJS({ lineStart = tokens.length; } function changeDelimiters(text3, index2) { - var close = "=" + ctag, closeIndex = text3.indexOf(close, index2), delimiters2 = trim(text3.substring(text3.indexOf("=", index2) + 1, closeIndex)).split(" "); + var close = "=" + ctag, closeIndex = text3.indexOf(close, index2), delimiters2 = trim( + text3.substring(text3.indexOf("=", index2) + 1, closeIndex) + ).split(" "); otag = delimiters2[0]; ctag = delimiters2[delimiters2.length - 1]; return closeIndex + close.length - 1; @@ -8116,13 +12873,13 @@ var require_compiler = __commonJS({ template = this.generate(this.parse(this.scan(text2, options.delimiters), text2, options), text2, options); return this.cache[key2] = template; }; - })(typeof exports !== "undefined" ? exports : Hogan); + })(typeof exports2 !== "undefined" ? exports2 : Hogan); } }); // node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/template.js var require_template = __commonJS({ - "node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/template.js"(exports) { + "node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/template.js"(exports2) { init_polyfill_buffer(); var Hogan4 = {}; (function(Hogan5) { @@ -8137,17 +12894,22 @@ var require_template = __commonJS({ this.buf = ""; }; Hogan5.Template.prototype = { + // render: replaced by generated code. r: function(context, partials, indent2) { return ""; }, + // variable escaping v: hoganEscape, + // triple stache t: coerceToString, render: function render2(context, partials, indent2) { return this.ri([context], partials || {}, indent2); }, + // render internal -- a hook for overrides that catches partials too ri: function(context, partials, indent2) { return this.r(context, partials, indent2); }, + // ensurePartial ep: function(symbol, partials) { var partial = this.partials[symbol]; var template = partials[partial.name]; @@ -8172,11 +12934,19 @@ var require_template = __commonJS({ partials.stackText[key] = this.activeSub !== void 0 && partials.stackText[this.activeSub] ? partials.stackText[this.activeSub] : this.text; } } - template = createSpecializedPartial(template, partial.subs, partial.partials, this.stackSubs, this.stackPartials, partials.stackText); + template = createSpecializedPartial( + template, + partial.subs, + partial.partials, + this.stackSubs, + this.stackPartials, + partials.stackText + ); } this.partials[symbol].instance = template; return template; }, + // tries to find a partial in the current scope and render it rp: function(symbol, context, partials, indent2) { var partial = this.ep(symbol, partials); if (!partial) { @@ -8184,6 +12954,7 @@ var require_template = __commonJS({ } return partial.ri(context, partials, indent2); }, + // render a section rs: function(context, partials, section) { var tail = context[context.length - 1]; if (!isArray(tail)) { @@ -8196,6 +12967,7 @@ var require_template = __commonJS({ context.pop(); } }, + // maybe start a section s: function(val, ctx, partials, inverted, start, end, tags) { var pass; if (isArray(val) && val.length === 0) { @@ -8210,6 +12982,7 @@ var require_template = __commonJS({ } return pass; }, + // find values with dotted names d: function(key2, ctx, partials, returnFound) { var found, names = key2.split("."), val = this.f(names[0], ctx, partials, returnFound), doModelGet = this.options.modelGet, cx = null; if (key2 === "." && isArray(ctx[ctx.length - 2])) { @@ -8235,6 +13008,7 @@ var require_template = __commonJS({ } return val; }, + // find values with normal names f: function(key2, ctx, partials, returnFound) { var val = false, v = null, found = false, doModelGet = this.options.modelGet; for (var i = ctx.length - 1; i >= 0; i--) { @@ -8253,6 +13027,7 @@ var require_template = __commonJS({ } return val; }, + // higher order templates ls: function(func, cx, partials, text2, tags) { var oldTags = this.options.delimiters; this.options.delimiters = tags; @@ -8260,12 +13035,14 @@ var require_template = __commonJS({ this.options.delimiters = oldTags; return false; }, + // compile text ct: function(text2, cx, partials) { if (this.options.disableLambda) { throw new Error("Lambda features disabled."); } return this.c.compile(text2, this.options).render(cx, partials); }, + // template result buffering b: function(s) { this.buf += s; }, @@ -8274,6 +13051,7 @@ var require_template = __commonJS({ this.buf = ""; return r; }, + // method replace section ms: function(func, ctx, partials, inverted, start, end, tags) { var textSource, cx = ctx[ctx.length - 1], result = func.call(cx); if (typeof result == "function") { @@ -8286,6 +13064,7 @@ var require_template = __commonJS({ } return result; }, + // method replace variable mv: function(func, ctx, partials) { var cx = ctx[ctx.length - 1]; var result = func.call(cx); @@ -8314,15 +13093,15 @@ var require_template = __commonJS({ } return val; } - function createSpecializedPartial(instance6, subs, partials, stackSubs, stackPartials, stackText) { + function createSpecializedPartial(instance10, subs, partials, stackSubs, stackPartials, stackText) { function PartialTemplate() { } ; - PartialTemplate.prototype = instance6; + PartialTemplate.prototype = instance10; function Substitutions() { } ; - Substitutions.prototype = instance6.subs; + Substitutions.prototype = instance10.subs; var key2; var partial = new PartialTemplate(); partial.subs = new Substitutions(); @@ -8360,13 +13139,13 @@ var require_template = __commonJS({ var isArray = Array.isArray || function(a) { return Object.prototype.toString.call(a) === "[object Array]"; }; - })(typeof exports !== "undefined" ? exports : Hogan4); + })(typeof exports2 !== "undefined" ? exports2 : Hogan4); } }); // node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/hogan.js var require_hogan = __commonJS({ - "node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/hogan.js"(exports, module2) { + "node_modules/.pnpm/hogan.js@3.0.2/node_modules/hogan.js/lib/hogan.js"(exports2, module2) { init_polyfill_buffer(); var Hogan4 = require_compiler(); Hogan4.Template = require_template().Template; @@ -8377,1442 +13156,2649 @@ var require_hogan = __commonJS({ // node_modules/.pnpm/feather-icons@4.29.0/node_modules/feather-icons/dist/feather.js var require_feather = __commonJS({ - "node_modules/.pnpm/feather-icons@4.29.0/node_modules/feather-icons/dist/feather.js"(exports, module2) { + "node_modules/.pnpm/feather-icons@4.29.0/node_modules/feather-icons/dist/feather.js"(exports2, module2) { init_polyfill_buffer(); - (function webpackUniversalModuleDefinition(root, factory) { - if (typeof exports === "object" && typeof module2 === "object") + (function webpackUniversalModuleDefinition(root2, factory) { + if (typeof exports2 === "object" && typeof module2 === "object") module2.exports = factory(); else if (typeof define === "function" && define.amd) define([], factory); - else if (typeof exports === "object") - exports["feather"] = factory(); + else if (typeof exports2 === "object") + exports2["feather"] = factory(); else - root["feather"] = factory(); - })(typeof self !== "undefined" ? self : exports, function() { - return function(modules) { - var installedModules = {}; - function __webpack_require__(moduleId) { - if (installedModules[moduleId]) { - return installedModules[moduleId].exports; - } - var module3 = installedModules[moduleId] = { - i: moduleId, - l: false, - exports: {} - }; - modules[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); - module3.l = true; - return module3.exports; - } - __webpack_require__.m = modules; - __webpack_require__.c = installedModules; - __webpack_require__.d = function(exports2, name, getter) { - if (!__webpack_require__.o(exports2, name)) { - Object.defineProperty(exports2, name, { - configurable: false, - enumerable: true, - get: getter - }); - } - }; - __webpack_require__.r = function(exports2) { - Object.defineProperty(exports2, "__esModule", { value: true }); - }; - __webpack_require__.n = function(module3) { - var getter = module3 && module3.__esModule ? function getDefault() { - return module3["default"]; - } : function getModuleExports() { - return module3; - }; - __webpack_require__.d(getter, "a", getter); - return getter; - }; - __webpack_require__.o = function(object, property) { - return Object.prototype.hasOwnProperty.call(object, property); - }; - __webpack_require__.p = ""; - return __webpack_require__(__webpack_require__.s = 0); - }({ - "./dist/icons.json": function(module3) { - module3.exports = { "activity": '', "airplay": '', "alert-circle": '', "alert-octagon": '', "alert-triangle": '', "align-center": '', "align-justify": '', "align-left": '', "align-right": '', "anchor": '', "aperture": '', "archive": '', "arrow-down-circle": '', "arrow-down-left": '', "arrow-down-right": '', "arrow-down": '', "arrow-left-circle": '', "arrow-left": '', "arrow-right-circle": '', "arrow-right": '', "arrow-up-circle": '', "arrow-up-left": '', "arrow-up-right": '', "arrow-up": '', "at-sign": '', "award": '', "bar-chart-2": '', "bar-chart": '', "battery-charging": '', "battery": '', "bell-off": '', "bell": '', "bluetooth": '', "bold": '', "book-open": '', "book": '', "bookmark": '', "box": '', "briefcase": '', "calendar": '', "camera-off": '', "camera": '', "cast": '', "check-circle": '', "check-square": '', "check": '', "chevron-down": '', "chevron-left": '', "chevron-right": '', "chevron-up": '', "chevrons-down": '', "chevrons-left": '', "chevrons-right": '', "chevrons-up": '', "chrome": '', "circle": '', "clipboard": '', "clock": '', "cloud-drizzle": '', "cloud-lightning": '', "cloud-off": '', "cloud-rain": '', "cloud-snow": '', "cloud": '', "code": '', "codepen": '', "codesandbox": '', "coffee": '', "columns": '', "command": '', "compass": '', "copy": '', "corner-down-left": '', "corner-down-right": '', "corner-left-down": '', "corner-left-up": '', "corner-right-down": '', "corner-right-up": '', "corner-up-left": '', "corner-up-right": '', "cpu": '', "credit-card": '', "crop": '', "crosshair": '', "database": '', "delete": '', "disc": '', "divide-circle": '', "divide-square": '', "divide": '', "dollar-sign": '', "download-cloud": '', "download": '', "dribbble": '', "droplet": '', "edit-2": '', "edit-3": '', "edit": '', "external-link": '', "eye-off": '', "eye": '', "facebook": '', "fast-forward": '', "feather": '', "figma": '', "file-minus": '', "file-plus": '', "file-text": '', "file": '', "film": '', "filter": '', "flag": '', "folder-minus": '', "folder-plus": '', "folder": '', "framer": '', "frown": '', "gift": '', "git-branch": '', "git-commit": '', "git-merge": '', "git-pull-request": '', "github": '', "gitlab": '', "globe": '', "grid": '', "hard-drive": '', "hash": '', "headphones": '', "heart": '', "help-circle": '', "hexagon": '', "home": '', "image": '', "inbox": '', "info": '', "instagram": '', "italic": '', "key": '', "layers": '', "layout": '', "life-buoy": '', "link-2": '', "link": '', "linkedin": '', "list": '', "loader": '', "lock": '', "log-in": '', "log-out": '', "mail": '', "map-pin": '', "map": '', "maximize-2": '', "maximize": '', "meh": '', "menu": '', "message-circle": '', "message-square": '', "mic-off": '', "mic": '', "minimize-2": '', "minimize": '', "minus-circle": '', "minus-square": '', "minus": '', "monitor": '', "moon": '', "more-horizontal": '', "more-vertical": '', "mouse-pointer": '', "move": '', "music": '', "navigation-2": '', "navigation": '', "octagon": '', "package": '', "paperclip": '', "pause-circle": '', "pause": '', "pen-tool": '', "percent": '', "phone-call": '', "phone-forwarded": '', "phone-incoming": '', "phone-missed": '', "phone-off": '', "phone-outgoing": '', "phone": '', "pie-chart": '', "play-circle": '', "play": '', "plus-circle": '', "plus-square": '', "plus": '', "pocket": '', "power": '', "printer": '', "radio": '', "refresh-ccw": '', "refresh-cw": '', "repeat": '', "rewind": '', "rotate-ccw": '', "rotate-cw": '', "rss": '', "save": '', "scissors": '', "search": '', "send": '', "server": '', "settings": '', "share-2": '', "share": '', "shield-off": '', "shield": '', "shopping-bag": '', "shopping-cart": '', "shuffle": '', "sidebar": '', "skip-back": '', "skip-forward": '', "slack": '', "slash": '', "sliders": '', "smartphone": '', "smile": '', "speaker": '', "square": '', "star": '', "stop-circle": '', "sun": '', "sunrise": '', "sunset": '', "table": '', "tablet": '', "tag": '', "target": '', "terminal": '', "thermometer": '', "thumbs-down": '', "thumbs-up": '', "toggle-left": '', "toggle-right": '', "tool": '', "trash-2": '', "trash": '', "trello": '', "trending-down": '', "trending-up": '', "triangle": '', "truck": '', "tv": '', "twitch": '', "twitter": '', "type": '', "umbrella": '', "underline": '', "unlock": '', "upload-cloud": '', "upload": '', "user-check": '', "user-minus": '', "user-plus": '', "user-x": '', "user": '', "users": '', "video-off": '', "video": '', "voicemail": '', "volume-1": '', "volume-2": '', "volume-x": '', "volume": '', "watch": '', "wifi-off": '', "wifi": '', "wind": '', "x-circle": '', "x-octagon": '', "x-square": '', "x": '', "youtube": '', "zap-off": '', "zap": '', "zoom-in": '', "zoom-out": '' }; - }, - "./node_modules/classnames/dedupe.js": function(module3, exports2, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; - (function() { - "use strict"; - var classNames = function() { - function StorageObject() { - } - StorageObject.prototype = Object.create(null); - function _parseArray(resultSet, array) { - var length = array.length; - for (var i = 0; i < length; ++i) { - _parse(resultSet, array[i]); - } - } - var hasOwn = {}.hasOwnProperty; - function _parseNumber(resultSet, num2) { - resultSet[num2] = true; - } - function _parseObject(resultSet, object) { - for (var k in object) { - if (hasOwn.call(object, k)) { - resultSet[k] = !!object[k]; - } - } - } - var SPACE = /\s+/; - function _parseString(resultSet, str) { - var array = str.split(SPACE); - var length = array.length; - for (var i = 0; i < length; ++i) { - resultSet[array[i]] = true; - } - } - function _parse(resultSet, arg) { - if (!arg) - return; - var argType = typeof arg; - if (argType === "string") { - _parseString(resultSet, arg); - } else if (Array.isArray(arg)) { - _parseArray(resultSet, arg); - } else if (argType === "object") { - _parseObject(resultSet, arg); - } else if (argType === "number") { - _parseNumber(resultSet, arg); - } - } - function _classNames() { - var len = arguments.length; - var args = Array(len); - for (var i = 0; i < len; i++) { - args[i] = arguments[i]; - } - var classSet = new StorageObject(); - _parseArray(classSet, args); - var list = []; - for (var k in classSet) { - if (classSet[k]) { - list.push(k); - } - } - return list.join(" "); - } - return _classNames; - }(); - if (typeof module3 !== "undefined" && module3.exports) { - module3.exports = classNames; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() { - return classNames; - }.apply(exports2, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module3.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else { + root2["feather"] = factory(); + })(typeof self !== "undefined" ? self : exports2, function() { + return ( + /******/ + function(modules) { + var installedModules = {}; + function __webpack_require__(moduleId) { + if (installedModules[moduleId]) { + return installedModules[moduleId].exports; } - })(); - }, - "./node_modules/core-js/es/array/from.js": function(module3, exports2, __webpack_require__) { - __webpack_require__("./node_modules/core-js/modules/es.string.iterator.js"); - __webpack_require__("./node_modules/core-js/modules/es.array.from.js"); - var path2 = __webpack_require__("./node_modules/core-js/internals/path.js"); - module3.exports = path2.Array.from; - }, - "./node_modules/core-js/internals/a-function.js": function(module3, exports2) { - module3.exports = function(it) { - if (typeof it != "function") { - throw TypeError(String(it) + " is not a function"); - } - return it; - }; - }, - "./node_modules/core-js/internals/an-object.js": function(module3, exports2, __webpack_require__) { - var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js"); - module3.exports = function(it) { - if (!isObject(it)) { - throw TypeError(String(it) + " is not an object"); - } - return it; - }; - }, - "./node_modules/core-js/internals/array-from.js": function(module3, exports2, __webpack_require__) { - "use strict"; - var bind = __webpack_require__("./node_modules/core-js/internals/bind-context.js"); - var toObject = __webpack_require__("./node_modules/core-js/internals/to-object.js"); - var callWithSafeIterationClosing = __webpack_require__("./node_modules/core-js/internals/call-with-safe-iteration-closing.js"); - var isArrayIteratorMethod = __webpack_require__("./node_modules/core-js/internals/is-array-iterator-method.js"); - var toLength = __webpack_require__("./node_modules/core-js/internals/to-length.js"); - var createProperty = __webpack_require__("./node_modules/core-js/internals/create-property.js"); - var getIteratorMethod = __webpack_require__("./node_modules/core-js/internals/get-iterator-method.js"); - module3.exports = function from(arrayLike) { - var O = toObject(arrayLike); - var C = typeof this == "function" ? this : Array; - var argumentsLength = arguments.length; - var mapfn = argumentsLength > 1 ? arguments[1] : void 0; - var mapping = mapfn !== void 0; - var index2 = 0; - var iteratorMethod = getIteratorMethod(O); - var length, result, step, iterator; - if (mapping) - mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2); - if (iteratorMethod != void 0 && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { - iterator = iteratorMethod.call(O); - result = new C(); - for (; !(step = iterator.next()).done; index2++) { - createProperty(result, index2, mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index2], true) : step.value); - } - } else { - length = toLength(O.length); - result = new C(length); - for (; length > index2; index2++) { - createProperty(result, index2, mapping ? mapfn(O[index2], index2) : O[index2]); - } - } - result.length = index2; - return result; - }; - }, - "./node_modules/core-js/internals/array-includes.js": function(module3, exports2, __webpack_require__) { - var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js"); - var toLength = __webpack_require__("./node_modules/core-js/internals/to-length.js"); - var toAbsoluteIndex = __webpack_require__("./node_modules/core-js/internals/to-absolute-index.js"); - module3.exports = function(IS_INCLUDES) { - return function($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = toLength(O.length); - var index2 = toAbsoluteIndex(fromIndex, length); - var value; - if (IS_INCLUDES && el != el) - while (length > index2) { - value = O[index2++]; - if (value != value) - return true; - } - else - for (; length > index2; index2++) - if (IS_INCLUDES || index2 in O) { - if (O[index2] === el) - return IS_INCLUDES || index2 || 0; - } - return !IS_INCLUDES && -1; + var module3 = installedModules[moduleId] = { + /******/ + i: moduleId, + /******/ + l: false, + /******/ + exports: {} + /******/ }; + modules[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); + module3.l = true; + return module3.exports; + } + __webpack_require__.m = modules; + __webpack_require__.c = installedModules; + __webpack_require__.d = function(exports3, name, getter) { + if (!__webpack_require__.o(exports3, name)) { + Object.defineProperty(exports3, name, { + /******/ + configurable: false, + /******/ + enumerable: true, + /******/ + get: getter + /******/ + }); + } }; - }, - "./node_modules/core-js/internals/bind-context.js": function(module3, exports2, __webpack_require__) { - var aFunction = __webpack_require__("./node_modules/core-js/internals/a-function.js"); - module3.exports = function(fn, that, length) { - aFunction(fn); - if (that === void 0) - return fn; - switch (length) { - case 0: + __webpack_require__.r = function(exports3) { + Object.defineProperty(exports3, "__esModule", { value: true }); + }; + __webpack_require__.n = function(module3) { + var getter = module3 && module3.__esModule ? ( + /******/ + function getDefault() { + return module3["default"]; + } + ) : ( + /******/ + function getModuleExports() { + return module3; + } + ); + __webpack_require__.d(getter, "a", getter); + return getter; + }; + __webpack_require__.o = function(object, property) { + return Object.prototype.hasOwnProperty.call(object, property); + }; + __webpack_require__.p = ""; + return __webpack_require__(__webpack_require__.s = 0); + }({ + /***/ + "./dist/icons.json": ( + /*!*************************!*\ + !*** ./dist/icons.json ***! + \*************************/ + /*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, divide-circle, divide-square, divide, dollar-sign, download-cloud, download, dribbble, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, table, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ + /***/ + function(module3) { + module3.exports = { "activity": '', "airplay": '', "alert-circle": '', "alert-octagon": '', "alert-triangle": '', "align-center": '', "align-justify": '', "align-left": '', "align-right": '', "anchor": '', "aperture": '', "archive": '', "arrow-down-circle": '', "arrow-down-left": '', "arrow-down-right": '', "arrow-down": '', "arrow-left-circle": '', "arrow-left": '', "arrow-right-circle": '', "arrow-right": '', "arrow-up-circle": '', "arrow-up-left": '', "arrow-up-right": '', "arrow-up": '', "at-sign": '', "award": '', "bar-chart-2": '', "bar-chart": '', "battery-charging": '', "battery": '', "bell-off": '', "bell": '', "bluetooth": '', "bold": '', "book-open": '', "book": '', "bookmark": '', "box": '', "briefcase": '', "calendar": '', "camera-off": '', "camera": '', "cast": '', "check-circle": '', "check-square": '', "check": '', "chevron-down": '', "chevron-left": '', "chevron-right": '', "chevron-up": '', "chevrons-down": '', "chevrons-left": '', "chevrons-right": '', "chevrons-up": '', "chrome": '', "circle": '', "clipboard": '', "clock": '', "cloud-drizzle": '', "cloud-lightning": '', "cloud-off": '', "cloud-rain": '', "cloud-snow": '', "cloud": '', "code": '', "codepen": '', "codesandbox": '', "coffee": '', "columns": '', "command": '', "compass": '', "copy": '', "corner-down-left": '', "corner-down-right": '', "corner-left-down": '', "corner-left-up": '', "corner-right-down": '', "corner-right-up": '', "corner-up-left": '', "corner-up-right": '', "cpu": '', "credit-card": '', "crop": '', "crosshair": '', "database": '', "delete": '', "disc": '', "divide-circle": '', "divide-square": '', "divide": '', "dollar-sign": '', "download-cloud": '', "download": '', "dribbble": '', "droplet": '', "edit-2": '', "edit-3": '', "edit": '', "external-link": '', "eye-off": '', "eye": '', "facebook": '', "fast-forward": '', "feather": '', "figma": '', "file-minus": '', "file-plus": '', "file-text": '', "file": '', "film": '', "filter": '', "flag": '', "folder-minus": '', "folder-plus": '', "folder": '', "framer": '', "frown": '', "gift": '', "git-branch": '', "git-commit": '', "git-merge": '', "git-pull-request": '', "github": '', "gitlab": '', "globe": '', "grid": '', "hard-drive": '', "hash": '', "headphones": '', "heart": '', "help-circle": '', "hexagon": '', "home": '', "image": '', "inbox": '', "info": '', "instagram": '', "italic": '', "key": '', "layers": '', "layout": '', "life-buoy": '', "link-2": '', "link": '', "linkedin": '', "list": '', "loader": '', "lock": '', "log-in": '', "log-out": '', "mail": '', "map-pin": '', "map": '', "maximize-2": '', "maximize": '', "meh": '', "menu": '', "message-circle": '', "message-square": '', "mic-off": '', "mic": '', "minimize-2": '', "minimize": '', "minus-circle": '', "minus-square": '', "minus": '', "monitor": '', "moon": '', "more-horizontal": '', "more-vertical": '', "mouse-pointer": '', "move": '', "music": '', "navigation-2": '', "navigation": '', "octagon": '', "package": '', "paperclip": '', "pause-circle": '', "pause": '', "pen-tool": '', "percent": '', "phone-call": '', "phone-forwarded": '', "phone-incoming": '', "phone-missed": '', "phone-off": '', "phone-outgoing": '', "phone": '', "pie-chart": '', "play-circle": '', "play": '', "plus-circle": '', "plus-square": '', "plus": '', "pocket": '', "power": '', "printer": '', "radio": '', "refresh-ccw": '', "refresh-cw": '', "repeat": '', "rewind": '', "rotate-ccw": '', "rotate-cw": '', "rss": '', "save": '', "scissors": '', "search": '', "send": '', "server": '', "settings": '', "share-2": '', "share": '', "shield-off": '', "shield": '', "shopping-bag": '', "shopping-cart": '', "shuffle": '', "sidebar": '', "skip-back": '', "skip-forward": '', "slack": '', "slash": '', "sliders": '', "smartphone": '', "smile": '', "speaker": '', "square": '', "star": '', "stop-circle": '', "sun": '', "sunrise": '', "sunset": '', "table": '', "tablet": '', "tag": '', "target": '', "terminal": '', "thermometer": '', "thumbs-down": '', "thumbs-up": '', "toggle-left": '', "toggle-right": '', "tool": '', "trash-2": '', "trash": '', "trello": '', "trending-down": '', "trending-up": '', "triangle": '', "truck": '', "tv": '', "twitch": '', "twitter": '', "type": '', "umbrella": '', "underline": '', "unlock": '', "upload-cloud": '', "upload": '', "user-check": '', "user-minus": '', "user-plus": '', "user-x": '', "user": '', "users": '', "video-off": '', "video": '', "voicemail": '', "volume-1": '', "volume-2": '', "volume-x": '', "volume": '', "watch": '', "wifi-off": '', "wifi": '', "wind": '', "x-circle": '', "x-octagon": '', "x-square": '', "x": '', "youtube": '', "zap-off": '', "zap": '', "zoom-in": '', "zoom-out": '' }; + } + ), + /***/ + "./node_modules/classnames/dedupe.js": ( + /*!*******************************************!*\ + !*** ./node_modules/classnames/dedupe.js ***! + \*******************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; + (function() { + "use strict"; + var classNames = function() { + function StorageObject() { + } + StorageObject.prototype = /* @__PURE__ */ Object.create(null); + function _parseArray(resultSet, array) { + var length = array.length; + for (var i = 0; i < length; ++i) { + _parse(resultSet, array[i]); + } + } + var hasOwn = {}.hasOwnProperty; + function _parseNumber(resultSet, num2) { + resultSet[num2] = true; + } + function _parseObject(resultSet, object) { + for (var k in object) { + if (hasOwn.call(object, k)) { + resultSet[k] = !!object[k]; + } + } + } + var SPACE = /\s+/; + function _parseString(resultSet, str) { + var array = str.split(SPACE); + var length = array.length; + for (var i = 0; i < length; ++i) { + resultSet[array[i]] = true; + } + } + function _parse(resultSet, arg) { + if (!arg) + return; + var argType = typeof arg; + if (argType === "string") { + _parseString(resultSet, arg); + } else if (Array.isArray(arg)) { + _parseArray(resultSet, arg); + } else if (argType === "object") { + _parseObject(resultSet, arg); + } else if (argType === "number") { + _parseNumber(resultSet, arg); + } + } + function _classNames() { + var len = arguments.length; + var args = Array(len); + for (var i = 0; i < len; i++) { + args[i] = arguments[i]; + } + var classSet = new StorageObject(); + _parseArray(classSet, args); + var list = []; + for (var k in classSet) { + if (classSet[k]) { + list.push(k); + } + } + return list.join(" "); + } + return _classNames; + }(); + if (typeof module3 !== "undefined" && module3.exports) { + module3.exports = classNames; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() { + return classNames; + }.apply(exports3, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module3.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else { + } + })(); + } + ), + /***/ + "./node_modules/core-js/es/array/from.js": ( + /*!***********************************************!*\ + !*** ./node_modules/core-js/es/array/from.js ***! + \***********************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + __webpack_require__( + /*! ../../modules/es.string.iterator */ + "./node_modules/core-js/modules/es.string.iterator.js" + ); + __webpack_require__( + /*! ../../modules/es.array.from */ + "./node_modules/core-js/modules/es.array.from.js" + ); + var path2 = __webpack_require__( + /*! ../../internals/path */ + "./node_modules/core-js/internals/path.js" + ); + module3.exports = path2.Array.from; + } + ), + /***/ + "./node_modules/core-js/internals/a-function.js": ( + /*!******************************************************!*\ + !*** ./node_modules/core-js/internals/a-function.js ***! + \******************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + module3.exports = function(it) { + if (typeof it != "function") { + throw TypeError(String(it) + " is not a function"); + } + return it; + }; + } + ), + /***/ + "./node_modules/core-js/internals/an-object.js": ( + /*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/an-object.js ***! + \*****************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var isObject = __webpack_require__( + /*! ../internals/is-object */ + "./node_modules/core-js/internals/is-object.js" + ); + module3.exports = function(it) { + if (!isObject(it)) { + throw TypeError(String(it) + " is not an object"); + } + return it; + }; + } + ), + /***/ + "./node_modules/core-js/internals/array-from.js": ( + /*!******************************************************!*\ + !*** ./node_modules/core-js/internals/array-from.js ***! + \******************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + var bind = __webpack_require__( + /*! ../internals/bind-context */ + "./node_modules/core-js/internals/bind-context.js" + ); + var toObject = __webpack_require__( + /*! ../internals/to-object */ + "./node_modules/core-js/internals/to-object.js" + ); + var callWithSafeIterationClosing = __webpack_require__( + /*! ../internals/call-with-safe-iteration-closing */ + "./node_modules/core-js/internals/call-with-safe-iteration-closing.js" + ); + var isArrayIteratorMethod = __webpack_require__( + /*! ../internals/is-array-iterator-method */ + "./node_modules/core-js/internals/is-array-iterator-method.js" + ); + var toLength = __webpack_require__( + /*! ../internals/to-length */ + "./node_modules/core-js/internals/to-length.js" + ); + var createProperty = __webpack_require__( + /*! ../internals/create-property */ + "./node_modules/core-js/internals/create-property.js" + ); + var getIteratorMethod = __webpack_require__( + /*! ../internals/get-iterator-method */ + "./node_modules/core-js/internals/get-iterator-method.js" + ); + module3.exports = function from(arrayLike) { + var O = toObject(arrayLike); + var C = typeof this == "function" ? this : Array; + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : void 0; + var mapping = mapfn !== void 0; + var index2 = 0; + var iteratorMethod = getIteratorMethod(O); + var length, result, step, iterator; + if (mapping) + mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2); + if (iteratorMethod != void 0 && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { + iterator = iteratorMethod.call(O); + result = new C(); + for (; !(step = iterator.next()).done; index2++) { + createProperty( + result, + index2, + mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index2], true) : step.value + ); + } + } else { + length = toLength(O.length); + result = new C(length); + for (; length > index2; index2++) { + createProperty(result, index2, mapping ? mapfn(O[index2], index2) : O[index2]); + } + } + result.length = index2; + return result; + }; + } + ), + /***/ + "./node_modules/core-js/internals/array-includes.js": ( + /*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/array-includes.js ***! + \**********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var toIndexedObject = __webpack_require__( + /*! ../internals/to-indexed-object */ + "./node_modules/core-js/internals/to-indexed-object.js" + ); + var toLength = __webpack_require__( + /*! ../internals/to-length */ + "./node_modules/core-js/internals/to-length.js" + ); + var toAbsoluteIndex = __webpack_require__( + /*! ../internals/to-absolute-index */ + "./node_modules/core-js/internals/to-absolute-index.js" + ); + module3.exports = function(IS_INCLUDES) { + return function($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = toLength(O.length); + var index2 = toAbsoluteIndex(fromIndex, length); + var value; + if (IS_INCLUDES && el != el) + while (length > index2) { + value = O[index2++]; + if (value != value) + return true; + } + else + for (; length > index2; index2++) + if (IS_INCLUDES || index2 in O) { + if (O[index2] === el) + return IS_INCLUDES || index2 || 0; + } + return !IS_INCLUDES && -1; + }; + }; + } + ), + /***/ + "./node_modules/core-js/internals/bind-context.js": ( + /*!********************************************************!*\ + !*** ./node_modules/core-js/internals/bind-context.js ***! + \********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var aFunction = __webpack_require__( + /*! ../internals/a-function */ + "./node_modules/core-js/internals/a-function.js" + ); + module3.exports = function(fn, that, length) { + aFunction(fn); + if (that === void 0) + return fn; + switch (length) { + case 0: + return function() { + return fn.call(that); + }; + case 1: + return function(a) { + return fn.call(that, a); + }; + case 2: + return function(a, b) { + return fn.call(that, a, b); + }; + case 3: + return function(a, b, c) { + return fn.call(that, a, b, c); + }; + } return function() { - return fn.call(that); - }; - case 1: - return function(a) { - return fn.call(that, a); - }; - case 2: - return function(a, b) { - return fn.call(that, a, b); - }; - case 3: - return function(a, b, c) { - return fn.call(that, a, b, c); + return fn.apply(that, arguments); }; + }; } - return function() { - return fn.apply(that, arguments); - }; - }; - }, - "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": function(module3, exports2, __webpack_require__) { - var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); - module3.exports = function(iterator, fn, value, ENTRIES) { - try { - return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); - } catch (error) { - var returnMethod = iterator["return"]; - if (returnMethod !== void 0) - anObject(returnMethod.call(iterator)); - throw error; + ), + /***/ + "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": ( + /*!****************************************************************************!*\ + !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! + \****************************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var anObject = __webpack_require__( + /*! ../internals/an-object */ + "./node_modules/core-js/internals/an-object.js" + ); + module3.exports = function(iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); + } catch (error) { + var returnMethod = iterator["return"]; + if (returnMethod !== void 0) + anObject(returnMethod.call(iterator)); + throw error; + } + }; } - }; - }, - "./node_modules/core-js/internals/check-correctness-of-iteration.js": function(module3, exports2, __webpack_require__) { - var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); - var ITERATOR = wellKnownSymbol("iterator"); - var SAFE_CLOSING = false; - try { - var called = 0; - var iteratorWithReturn = { - next: function() { - return { done: !!called++ }; - }, - "return": function() { - SAFE_CLOSING = true; - } - }; - iteratorWithReturn[ITERATOR] = function() { - return this; - }; - Array.from(iteratorWithReturn, function() { - throw 2; - }); - } catch (error) { - } - module3.exports = function(exec, SKIP_CLOSING) { - if (!SKIP_CLOSING && !SAFE_CLOSING) - return false; - var ITERATION_SUPPORT = false; - try { - var object = {}; - object[ITERATOR] = function() { - return { + ), + /***/ + "./node_modules/core-js/internals/check-correctness-of-iteration.js": ( + /*!**************************************************************************!*\ + !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***! + \**************************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var wellKnownSymbol = __webpack_require__( + /*! ../internals/well-known-symbol */ + "./node_modules/core-js/internals/well-known-symbol.js" + ); + var ITERATOR = wellKnownSymbol("iterator"); + var SAFE_CLOSING = false; + try { + var called = 0; + var iteratorWithReturn = { next: function() { - return { done: ITERATION_SUPPORT = true }; + return { done: !!called++ }; + }, + "return": function() { + SAFE_CLOSING = true; } }; - }; - exec(object); - } catch (error) { - } - return ITERATION_SUPPORT; - }; - }, - "./node_modules/core-js/internals/classof-raw.js": function(module3, exports2) { - var toString = {}.toString; - module3.exports = function(it) { - return toString.call(it).slice(8, -1); - }; - }, - "./node_modules/core-js/internals/classof.js": function(module3, exports2, __webpack_require__) { - var classofRaw = __webpack_require__("./node_modules/core-js/internals/classof-raw.js"); - var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); - var TO_STRING_TAG = wellKnownSymbol("toStringTag"); - var CORRECT_ARGUMENTS = classofRaw(function() { - return arguments; - }()) == "Arguments"; - var tryGet = function(it, key2) { - try { - return it[key2]; - } catch (error) { - } - }; - module3.exports = function(it) { - var O, tag2, result; - return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag2 = tryGet(O = Object(it), TO_STRING_TAG)) == "string" ? tag2 : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && typeof O.callee == "function" ? "Arguments" : result; - }; - }, - "./node_modules/core-js/internals/copy-constructor-properties.js": function(module3, exports2, __webpack_require__) { - var has = __webpack_require__("./node_modules/core-js/internals/has.js"); - var ownKeys = __webpack_require__("./node_modules/core-js/internals/own-keys.js"); - var getOwnPropertyDescriptorModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-descriptor.js"); - var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js"); - module3.exports = function(target, source) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key2 = keys[i]; - if (!has(target, key2)) - defineProperty(target, key2, getOwnPropertyDescriptor(source, key2)); - } - }; - }, - "./node_modules/core-js/internals/correct-prototype-getter.js": function(module3, exports2, __webpack_require__) { - var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); - module3.exports = !fails(function() { - function F() { - } - F.prototype.constructor = null; - return Object.getPrototypeOf(new F()) !== F.prototype; - }); - }, - "./node_modules/core-js/internals/create-iterator-constructor.js": function(module3, exports2, __webpack_require__) { - "use strict"; - var IteratorPrototype = __webpack_require__("./node_modules/core-js/internals/iterators-core.js").IteratorPrototype; - var create = __webpack_require__("./node_modules/core-js/internals/object-create.js"); - var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js"); - var setToStringTag = __webpack_require__("./node_modules/core-js/internals/set-to-string-tag.js"); - var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js"); - var returnThis = function() { - return this; - }; - module3.exports = function(IteratorConstructor, NAME, next) { - var TO_STRING_TAG = NAME + " Iterator"; - IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); - setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); - Iterators[TO_STRING_TAG] = returnThis; - return IteratorConstructor; - }; - }, - "./node_modules/core-js/internals/create-property-descriptor.js": function(module3, exports2) { - module3.exports = function(bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value - }; - }; - }, - "./node_modules/core-js/internals/create-property.js": function(module3, exports2, __webpack_require__) { - "use strict"; - var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js"); - var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js"); - var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js"); - module3.exports = function(object, key2, value) { - var propertyKey = toPrimitive(key2); - if (propertyKey in object) - definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); - else - object[propertyKey] = value; - }; - }, - "./node_modules/core-js/internals/define-iterator.js": function(module3, exports2, __webpack_require__) { - "use strict"; - var $ = __webpack_require__("./node_modules/core-js/internals/export.js"); - var createIteratorConstructor = __webpack_require__("./node_modules/core-js/internals/create-iterator-constructor.js"); - var getPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-get-prototype-of.js"); - var setPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-set-prototype-of.js"); - var setToStringTag = __webpack_require__("./node_modules/core-js/internals/set-to-string-tag.js"); - var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); - var redefine = __webpack_require__("./node_modules/core-js/internals/redefine.js"); - var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); - var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js"); - var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js"); - var IteratorsCore = __webpack_require__("./node_modules/core-js/internals/iterators-core.js"); - var IteratorPrototype = IteratorsCore.IteratorPrototype; - var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; - var ITERATOR = wellKnownSymbol("iterator"); - var KEYS = "keys"; - var VALUES = "values"; - var ENTRIES = "entries"; - var returnThis = function() { - return this; - }; - module3.exports = function(Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor(IteratorConstructor, NAME, next); - var getIterationMethod = function(KIND) { - if (KIND === DEFAULT && defaultIterator) - return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) - return IterablePrototype[KIND]; - switch (KIND) { - case KEYS: - return function keys() { - return new IteratorConstructor(this, KIND); - }; - case VALUES: - return function values() { - return new IteratorConstructor(this, KIND); - }; - case ENTRIES: - return function entries() { - return new IteratorConstructor(this, KIND); - }; + iteratorWithReturn[ITERATOR] = function() { + return this; + }; + Array.from(iteratorWithReturn, function() { + throw 2; + }); + } catch (error) { } - return function() { - return new IteratorConstructor(this); + module3.exports = function(exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) + return false; + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function() { + return { + next: function() { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { + } + return ITERATION_SUPPORT; }; - }; - var TO_STRING_TAG = NAME + " Iterator"; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype["@@iterator"] || DEFAULT && IterablePrototype[DEFAULT]; - var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME == "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf) { - setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); - } else if (typeof CurrentIteratorPrototype[ITERATOR] != "function") { - hide(CurrentIteratorPrototype, ITERATOR, returnThis); + } + ), + /***/ + "./node_modules/core-js/internals/classof-raw.js": ( + /*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/classof-raw.js ***! + \*******************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + var toString = {}.toString; + module3.exports = function(it) { + return toString.call(it).slice(8, -1); + }; + } + ), + /***/ + "./node_modules/core-js/internals/classof.js": ( + /*!***************************************************!*\ + !*** ./node_modules/core-js/internals/classof.js ***! + \***************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var classofRaw = __webpack_require__( + /*! ../internals/classof-raw */ + "./node_modules/core-js/internals/classof-raw.js" + ); + var wellKnownSymbol = __webpack_require__( + /*! ../internals/well-known-symbol */ + "./node_modules/core-js/internals/well-known-symbol.js" + ); + var TO_STRING_TAG = wellKnownSymbol("toStringTag"); + var CORRECT_ARGUMENTS = classofRaw(function() { + return arguments; + }()) == "Arguments"; + var tryGet = function(it, key2) { + try { + return it[key2]; + } catch (error) { + } + }; + module3.exports = function(it) { + var O, tag2, result; + return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag2 = tryGet(O = Object(it), TO_STRING_TAG)) == "string" ? tag2 : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && typeof O.callee == "function" ? "Arguments" : result; + }; + } + ), + /***/ + "./node_modules/core-js/internals/copy-constructor-properties.js": ( + /*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! + \***********************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var has = __webpack_require__( + /*! ../internals/has */ + "./node_modules/core-js/internals/has.js" + ); + var ownKeys = __webpack_require__( + /*! ../internals/own-keys */ + "./node_modules/core-js/internals/own-keys.js" + ); + var getOwnPropertyDescriptorModule = __webpack_require__( + /*! ../internals/object-get-own-property-descriptor */ + "./node_modules/core-js/internals/object-get-own-property-descriptor.js" + ); + var definePropertyModule = __webpack_require__( + /*! ../internals/object-define-property */ + "./node_modules/core-js/internals/object-define-property.js" + ); + module3.exports = function(target, source) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key2 = keys[i]; + if (!has(target, key2)) + defineProperty(target, key2, getOwnPropertyDescriptor(source, key2)); + } + }; + } + ), + /***/ + "./node_modules/core-js/internals/correct-prototype-getter.js": ( + /*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***! + \********************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var fails = __webpack_require__( + /*! ../internals/fails */ + "./node_modules/core-js/internals/fails.js" + ); + module3.exports = !fails(function() { + function F() { + } + F.prototype.constructor = null; + return Object.getPrototypeOf(new F()) !== F.prototype; + }); + } + ), + /***/ + "./node_modules/core-js/internals/create-iterator-constructor.js": ( + /*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***! + \***********************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + var IteratorPrototype = __webpack_require__( + /*! ../internals/iterators-core */ + "./node_modules/core-js/internals/iterators-core.js" + ).IteratorPrototype; + var create = __webpack_require__( + /*! ../internals/object-create */ + "./node_modules/core-js/internals/object-create.js" + ); + var createPropertyDescriptor = __webpack_require__( + /*! ../internals/create-property-descriptor */ + "./node_modules/core-js/internals/create-property-descriptor.js" + ); + var setToStringTag = __webpack_require__( + /*! ../internals/set-to-string-tag */ + "./node_modules/core-js/internals/set-to-string-tag.js" + ); + var Iterators = __webpack_require__( + /*! ../internals/iterators */ + "./node_modules/core-js/internals/iterators.js" + ); + var returnThis = function() { + return this; + }; + module3.exports = function(IteratorConstructor, NAME, next) { + var TO_STRING_TAG = NAME + " Iterator"; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; + }; + } + ), + /***/ + "./node_modules/core-js/internals/create-property-descriptor.js": ( + /*!**********************************************************************!*\ + !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! + \**********************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + module3.exports = function(bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value + }; + }; + } + ), + /***/ + "./node_modules/core-js/internals/create-property.js": ( + /*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/create-property.js ***! + \***********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + var toPrimitive = __webpack_require__( + /*! ../internals/to-primitive */ + "./node_modules/core-js/internals/to-primitive.js" + ); + var definePropertyModule = __webpack_require__( + /*! ../internals/object-define-property */ + "./node_modules/core-js/internals/object-define-property.js" + ); + var createPropertyDescriptor = __webpack_require__( + /*! ../internals/create-property-descriptor */ + "./node_modules/core-js/internals/create-property-descriptor.js" + ); + module3.exports = function(object, key2, value) { + var propertyKey = toPrimitive(key2); + if (propertyKey in object) + definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else + object[propertyKey] = value; + }; + } + ), + /***/ + "./node_modules/core-js/internals/define-iterator.js": ( + /*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/define-iterator.js ***! + \***********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + var $ = __webpack_require__( + /*! ../internals/export */ + "./node_modules/core-js/internals/export.js" + ); + var createIteratorConstructor = __webpack_require__( + /*! ../internals/create-iterator-constructor */ + "./node_modules/core-js/internals/create-iterator-constructor.js" + ); + var getPrototypeOf = __webpack_require__( + /*! ../internals/object-get-prototype-of */ + "./node_modules/core-js/internals/object-get-prototype-of.js" + ); + var setPrototypeOf = __webpack_require__( + /*! ../internals/object-set-prototype-of */ + "./node_modules/core-js/internals/object-set-prototype-of.js" + ); + var setToStringTag = __webpack_require__( + /*! ../internals/set-to-string-tag */ + "./node_modules/core-js/internals/set-to-string-tag.js" + ); + var hide = __webpack_require__( + /*! ../internals/hide */ + "./node_modules/core-js/internals/hide.js" + ); + var redefine = __webpack_require__( + /*! ../internals/redefine */ + "./node_modules/core-js/internals/redefine.js" + ); + var wellKnownSymbol = __webpack_require__( + /*! ../internals/well-known-symbol */ + "./node_modules/core-js/internals/well-known-symbol.js" + ); + var IS_PURE = __webpack_require__( + /*! ../internals/is-pure */ + "./node_modules/core-js/internals/is-pure.js" + ); + var Iterators = __webpack_require__( + /*! ../internals/iterators */ + "./node_modules/core-js/internals/iterators.js" + ); + var IteratorsCore = __webpack_require__( + /*! ../internals/iterators-core */ + "./node_modules/core-js/internals/iterators-core.js" + ); + var IteratorPrototype = IteratorsCore.IteratorPrototype; + var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; + var ITERATOR = wellKnownSymbol("iterator"); + var KEYS = "keys"; + var VALUES = "values"; + var ENTRIES = "entries"; + var returnThis = function() { + return this; + }; + module3.exports = function(Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + var getIterationMethod = function(KIND) { + if (KIND === DEFAULT && defaultIterator) + return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) + return IterablePrototype[KIND]; + switch (KIND) { + case KEYS: + return function keys() { + return new IteratorConstructor(this, KIND); + }; + case VALUES: + return function values() { + return new IteratorConstructor(this, KIND); + }; + case ENTRIES: + return function entries() { + return new IteratorConstructor(this, KIND); + }; + } + return function() { + return new IteratorConstructor(this); + }; + }; + var TO_STRING_TAG = NAME + " Iterator"; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype["@@iterator"] || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (typeof CurrentIteratorPrototype[ITERATOR] != "function") { + hide(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) + Iterators[TO_STRING_TAG] = returnThis; } } - setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); - if (IS_PURE) - Iterators[TO_STRING_TAG] = returnThis; - } - } - if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { - INCORRECT_VALUES_NAME = true; - defaultIterator = function values() { - return nativeIterator.call(this); - }; - } - if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { - hide(IterablePrototype, ITERATOR, defaultIterator); - } - Iterators[NAME] = defaultIterator; - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES) - }; - if (FORCED) - for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - redefine(IterablePrototype, KEY, methods[KEY]); - } + if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { + return nativeIterator.call(this); + }; } - else - $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + hide(IterablePrototype, ITERATOR, defaultIterator); + } + Iterators[NAME] = defaultIterator; + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) + for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + redefine(IterablePrototype, KEY, methods[KEY]); + } + } + else + $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + return methods; + }; } - return methods; - }; - }, - "./node_modules/core-js/internals/descriptors.js": function(module3, exports2, __webpack_require__) { - var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); - module3.exports = !fails(function() { - return Object.defineProperty({}, "a", { get: function() { - return 7; - } }).a != 7; - }); - }, - "./node_modules/core-js/internals/document-create-element.js": function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__("./node_modules/core-js/internals/global.js"); - var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js"); - var document2 = global2.document; - var exist = isObject(document2) && isObject(document2.createElement); - module3.exports = function(it) { - return exist ? document2.createElement(it) : {}; - }; - }, - "./node_modules/core-js/internals/enum-bug-keys.js": function(module3, exports2) { - module3.exports = [ - "constructor", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "toLocaleString", - "toString", - "valueOf" - ]; - }, - "./node_modules/core-js/internals/export.js": function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__("./node_modules/core-js/internals/global.js"); - var getOwnPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); - var redefine = __webpack_require__("./node_modules/core-js/internals/redefine.js"); - var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js"); - var copyConstructorProperties = __webpack_require__("./node_modules/core-js/internals/copy-constructor-properties.js"); - var isForced = __webpack_require__("./node_modules/core-js/internals/is-forced.js"); - module3.exports = function(options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key2, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global2; - } else if (STATIC) { - target = global2[TARGET] || setGlobal(TARGET, {}); - } else { - target = (global2[TARGET] || {}).prototype; + ), + /***/ + "./node_modules/core-js/internals/descriptors.js": ( + /*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/descriptors.js ***! + \*******************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var fails = __webpack_require__( + /*! ../internals/fails */ + "./node_modules/core-js/internals/fails.js" + ); + module3.exports = !fails(function() { + return Object.defineProperty({}, "a", { get: function() { + return 7; + } }).a != 7; + }); } - if (target) - for (key2 in source) { - sourceProperty = source[key2]; - if (options.noTargetGet) { - descriptor = getOwnPropertyDescriptor(target, key2); - targetProperty = descriptor && descriptor.value; + ), + /***/ + "./node_modules/core-js/internals/document-create-element.js": ( + /*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/document-create-element.js ***! + \*******************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var global2 = __webpack_require__( + /*! ../internals/global */ + "./node_modules/core-js/internals/global.js" + ); + var isObject = __webpack_require__( + /*! ../internals/is-object */ + "./node_modules/core-js/internals/is-object.js" + ); + var document2 = global2.document; + var exist = isObject(document2) && isObject(document2.createElement); + module3.exports = function(it) { + return exist ? document2.createElement(it) : {}; + }; + } + ), + /***/ + "./node_modules/core-js/internals/enum-bug-keys.js": ( + /*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! + \*********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + module3.exports = [ + "constructor", + "hasOwnProperty", + "isPrototypeOf", + "propertyIsEnumerable", + "toLocaleString", + "toString", + "valueOf" + ]; + } + ), + /***/ + "./node_modules/core-js/internals/export.js": ( + /*!**************************************************!*\ + !*** ./node_modules/core-js/internals/export.js ***! + \**************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var global2 = __webpack_require__( + /*! ../internals/global */ + "./node_modules/core-js/internals/global.js" + ); + var getOwnPropertyDescriptor = __webpack_require__( + /*! ../internals/object-get-own-property-descriptor */ + "./node_modules/core-js/internals/object-get-own-property-descriptor.js" + ).f; + var hide = __webpack_require__( + /*! ../internals/hide */ + "./node_modules/core-js/internals/hide.js" + ); + var redefine = __webpack_require__( + /*! ../internals/redefine */ + "./node_modules/core-js/internals/redefine.js" + ); + var setGlobal = __webpack_require__( + /*! ../internals/set-global */ + "./node_modules/core-js/internals/set-global.js" + ); + var copyConstructorProperties = __webpack_require__( + /*! ../internals/copy-constructor-properties */ + "./node_modules/core-js/internals/copy-constructor-properties.js" + ); + var isForced = __webpack_require__( + /*! ../internals/is-forced */ + "./node_modules/core-js/internals/is-forced.js" + ); + module3.exports = function(options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key2, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global2; + } else if (STATIC) { + target = global2[TARGET] || setGlobal(TARGET, {}); + } else { + target = (global2[TARGET] || {}).prototype; + } + if (target) + for (key2 in source) { + sourceProperty = source[key2]; + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor(target, key2); + targetProperty = descriptor && descriptor.value; + } else + targetProperty = target[key2]; + FORCED = isForced(GLOBAL ? key2 : TARGET + (STATIC ? "." : "#") + key2, options.forced); + if (!FORCED && targetProperty !== void 0) { + if (typeof sourceProperty === typeof targetProperty) + continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + if (options.sham || targetProperty && targetProperty.sham) { + hide(sourceProperty, "sham", true); + } + redefine(target, key2, sourceProperty, options); + } + }; + } + ), + /***/ + "./node_modules/core-js/internals/fails.js": ( + /*!*************************************************!*\ + !*** ./node_modules/core-js/internals/fails.js ***! + \*************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + module3.exports = function(exec) { + try { + return !!exec(); + } catch (error) { + return true; + } + }; + } + ), + /***/ + "./node_modules/core-js/internals/function-to-string.js": ( + /*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/function-to-string.js ***! + \**************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var shared = __webpack_require__( + /*! ../internals/shared */ + "./node_modules/core-js/internals/shared.js" + ); + module3.exports = shared("native-function-to-string", Function.toString); + } + ), + /***/ + "./node_modules/core-js/internals/get-iterator-method.js": ( + /*!***************************************************************!*\ + !*** ./node_modules/core-js/internals/get-iterator-method.js ***! + \***************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var classof = __webpack_require__( + /*! ../internals/classof */ + "./node_modules/core-js/internals/classof.js" + ); + var Iterators = __webpack_require__( + /*! ../internals/iterators */ + "./node_modules/core-js/internals/iterators.js" + ); + var wellKnownSymbol = __webpack_require__( + /*! ../internals/well-known-symbol */ + "./node_modules/core-js/internals/well-known-symbol.js" + ); + var ITERATOR = wellKnownSymbol("iterator"); + module3.exports = function(it) { + if (it != void 0) + return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)]; + }; + } + ), + /***/ + "./node_modules/core-js/internals/global.js": ( + /*!**************************************************!*\ + !*** ./node_modules/core-js/internals/global.js ***! + \**************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + (function(global2) { + var O = "object"; + var check = function(it) { + return it && it.Math == Math && it; + }; + module3.exports = // eslint-disable-next-line no-undef + check(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof global2 == O && global2) || // eslint-disable-next-line no-new-func + Function("return this")(); + }).call(this, __webpack_require__( + /*! ./../../webpack/buildin/global.js */ + "./node_modules/webpack/buildin/global.js" + )); + } + ), + /***/ + "./node_modules/core-js/internals/has.js": ( + /*!***********************************************!*\ + !*** ./node_modules/core-js/internals/has.js ***! + \***********************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + var hasOwnProperty = {}.hasOwnProperty; + module3.exports = function(it, key2) { + return hasOwnProperty.call(it, key2); + }; + } + ), + /***/ + "./node_modules/core-js/internals/hidden-keys.js": ( + /*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/hidden-keys.js ***! + \*******************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + module3.exports = {}; + } + ), + /***/ + "./node_modules/core-js/internals/hide.js": ( + /*!************************************************!*\ + !*** ./node_modules/core-js/internals/hide.js ***! + \************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var DESCRIPTORS = __webpack_require__( + /*! ../internals/descriptors */ + "./node_modules/core-js/internals/descriptors.js" + ); + var definePropertyModule = __webpack_require__( + /*! ../internals/object-define-property */ + "./node_modules/core-js/internals/object-define-property.js" + ); + var createPropertyDescriptor = __webpack_require__( + /*! ../internals/create-property-descriptor */ + "./node_modules/core-js/internals/create-property-descriptor.js" + ); + module3.exports = DESCRIPTORS ? function(object, key2, value) { + return definePropertyModule.f(object, key2, createPropertyDescriptor(1, value)); + } : function(object, key2, value) { + object[key2] = value; + return object; + }; + } + ), + /***/ + "./node_modules/core-js/internals/html.js": ( + /*!************************************************!*\ + !*** ./node_modules/core-js/internals/html.js ***! + \************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var global2 = __webpack_require__( + /*! ../internals/global */ + "./node_modules/core-js/internals/global.js" + ); + var document2 = global2.document; + module3.exports = document2 && document2.documentElement; + } + ), + /***/ + "./node_modules/core-js/internals/ie8-dom-define.js": ( + /*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! + \**********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var DESCRIPTORS = __webpack_require__( + /*! ../internals/descriptors */ + "./node_modules/core-js/internals/descriptors.js" + ); + var fails = __webpack_require__( + /*! ../internals/fails */ + "./node_modules/core-js/internals/fails.js" + ); + var createElement = __webpack_require__( + /*! ../internals/document-create-element */ + "./node_modules/core-js/internals/document-create-element.js" + ); + module3.exports = !DESCRIPTORS && !fails(function() { + return Object.defineProperty(createElement("div"), "a", { + get: function() { + return 7; + } + }).a != 7; + }); + } + ), + /***/ + "./node_modules/core-js/internals/indexed-object.js": ( + /*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/indexed-object.js ***! + \**********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var fails = __webpack_require__( + /*! ../internals/fails */ + "./node_modules/core-js/internals/fails.js" + ); + var classof = __webpack_require__( + /*! ../internals/classof-raw */ + "./node_modules/core-js/internals/classof-raw.js" + ); + var split = "".split; + module3.exports = fails(function() { + return !Object("z").propertyIsEnumerable(0); + }) ? function(it) { + return classof(it) == "String" ? split.call(it, "") : Object(it); + } : Object; + } + ), + /***/ + "./node_modules/core-js/internals/internal-state.js": ( + /*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/internal-state.js ***! + \**********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var NATIVE_WEAK_MAP = __webpack_require__( + /*! ../internals/native-weak-map */ + "./node_modules/core-js/internals/native-weak-map.js" + ); + var global2 = __webpack_require__( + /*! ../internals/global */ + "./node_modules/core-js/internals/global.js" + ); + var isObject = __webpack_require__( + /*! ../internals/is-object */ + "./node_modules/core-js/internals/is-object.js" + ); + var hide = __webpack_require__( + /*! ../internals/hide */ + "./node_modules/core-js/internals/hide.js" + ); + var objectHas = __webpack_require__( + /*! ../internals/has */ + "./node_modules/core-js/internals/has.js" + ); + var sharedKey = __webpack_require__( + /*! ../internals/shared-key */ + "./node_modules/core-js/internals/shared-key.js" + ); + var hiddenKeys = __webpack_require__( + /*! ../internals/hidden-keys */ + "./node_modules/core-js/internals/hidden-keys.js" + ); + var WeakMap2 = global2.WeakMap; + var set, get, has; + var enforce = function(it) { + return has(it) ? get(it) : set(it, {}); + }; + var getterFor = function(TYPE) { + return function(it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError("Incompatible receiver, " + TYPE + " required"); + } + return state; + }; + }; + if (NATIVE_WEAK_MAP) { + var store = new WeakMap2(); + var wmget = store.get; + var wmhas = store.has; + var wmset = store.set; + set = function(it, metadata) { + wmset.call(store, it, metadata); + return metadata; + }; + get = function(it) { + return wmget.call(store, it) || {}; + }; + has = function(it) { + return wmhas.call(store, it); + }; + } else { + var STATE = sharedKey("state"); + hiddenKeys[STATE] = true; + set = function(it, metadata) { + hide(it, STATE, metadata); + return metadata; + }; + get = function(it) { + return objectHas(it, STATE) ? it[STATE] : {}; + }; + has = function(it) { + return objectHas(it, STATE); + }; + } + module3.exports = { + set, + get, + has, + enforce, + getterFor + }; + } + ), + /***/ + "./node_modules/core-js/internals/is-array-iterator-method.js": ( + /*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***! + \********************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var wellKnownSymbol = __webpack_require__( + /*! ../internals/well-known-symbol */ + "./node_modules/core-js/internals/well-known-symbol.js" + ); + var Iterators = __webpack_require__( + /*! ../internals/iterators */ + "./node_modules/core-js/internals/iterators.js" + ); + var ITERATOR = wellKnownSymbol("iterator"); + var ArrayPrototype = Array.prototype; + module3.exports = function(it) { + return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); + }; + } + ), + /***/ + "./node_modules/core-js/internals/is-forced.js": ( + /*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-forced.js ***! + \*****************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var fails = __webpack_require__( + /*! ../internals/fails */ + "./node_modules/core-js/internals/fails.js" + ); + var replacement = /#|\.prototype\./; + var isForced = function(feature, detection) { + var value = data[normalize2(feature)]; + return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == "function" ? fails(detection) : !!detection; + }; + var normalize2 = isForced.normalize = function(string) { + return String(string).replace(replacement, ".").toLowerCase(); + }; + var data = isForced.data = {}; + var NATIVE = isForced.NATIVE = "N"; + var POLYFILL = isForced.POLYFILL = "P"; + module3.exports = isForced; + } + ), + /***/ + "./node_modules/core-js/internals/is-object.js": ( + /*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-object.js ***! + \*****************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + module3.exports = function(it) { + return typeof it === "object" ? it !== null : typeof it === "function"; + }; + } + ), + /***/ + "./node_modules/core-js/internals/is-pure.js": ( + /*!***************************************************!*\ + !*** ./node_modules/core-js/internals/is-pure.js ***! + \***************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + module3.exports = false; + } + ), + /***/ + "./node_modules/core-js/internals/iterators-core.js": ( + /*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/iterators-core.js ***! + \**********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + var getPrototypeOf = __webpack_require__( + /*! ../internals/object-get-prototype-of */ + "./node_modules/core-js/internals/object-get-prototype-of.js" + ); + var hide = __webpack_require__( + /*! ../internals/hide */ + "./node_modules/core-js/internals/hide.js" + ); + var has = __webpack_require__( + /*! ../internals/has */ + "./node_modules/core-js/internals/has.js" + ); + var wellKnownSymbol = __webpack_require__( + /*! ../internals/well-known-symbol */ + "./node_modules/core-js/internals/well-known-symbol.js" + ); + var IS_PURE = __webpack_require__( + /*! ../internals/is-pure */ + "./node_modules/core-js/internals/is-pure.js" + ); + var ITERATOR = wellKnownSymbol("iterator"); + var BUGGY_SAFARI_ITERATORS = false; + var returnThis = function() { + return this; + }; + var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + if ([].keys) { + arrayIterator = [].keys(); + if (!("next" in arrayIterator)) + BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) + IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } + } + if (IteratorPrototype == void 0) + IteratorPrototype = {}; + if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) + hide(IteratorPrototype, ITERATOR, returnThis); + module3.exports = { + IteratorPrototype, + BUGGY_SAFARI_ITERATORS + }; + } + ), + /***/ + "./node_modules/core-js/internals/iterators.js": ( + /*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/iterators.js ***! + \*****************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + module3.exports = {}; + } + ), + /***/ + "./node_modules/core-js/internals/native-symbol.js": ( + /*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/native-symbol.js ***! + \*********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var fails = __webpack_require__( + /*! ../internals/fails */ + "./node_modules/core-js/internals/fails.js" + ); + module3.exports = !!Object.getOwnPropertySymbols && !fails(function() { + return !String(Symbol()); + }); + } + ), + /***/ + "./node_modules/core-js/internals/native-weak-map.js": ( + /*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/native-weak-map.js ***! + \***********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var global2 = __webpack_require__( + /*! ../internals/global */ + "./node_modules/core-js/internals/global.js" + ); + var nativeFunctionToString = __webpack_require__( + /*! ../internals/function-to-string */ + "./node_modules/core-js/internals/function-to-string.js" + ); + var WeakMap2 = global2.WeakMap; + module3.exports = typeof WeakMap2 === "function" && /native code/.test(nativeFunctionToString.call(WeakMap2)); + } + ), + /***/ + "./node_modules/core-js/internals/object-create.js": ( + /*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/object-create.js ***! + \*********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var anObject = __webpack_require__( + /*! ../internals/an-object */ + "./node_modules/core-js/internals/an-object.js" + ); + var defineProperties = __webpack_require__( + /*! ../internals/object-define-properties */ + "./node_modules/core-js/internals/object-define-properties.js" + ); + var enumBugKeys = __webpack_require__( + /*! ../internals/enum-bug-keys */ + "./node_modules/core-js/internals/enum-bug-keys.js" + ); + var hiddenKeys = __webpack_require__( + /*! ../internals/hidden-keys */ + "./node_modules/core-js/internals/hidden-keys.js" + ); + var html2 = __webpack_require__( + /*! ../internals/html */ + "./node_modules/core-js/internals/html.js" + ); + var documentCreateElement = __webpack_require__( + /*! ../internals/document-create-element */ + "./node_modules/core-js/internals/document-create-element.js" + ); + var sharedKey = __webpack_require__( + /*! ../internals/shared-key */ + "./node_modules/core-js/internals/shared-key.js" + ); + var IE_PROTO = sharedKey("IE_PROTO"); + var PROTOTYPE = "prototype"; + var Empty = function() { + }; + var createDict = function() { + var iframe = documentCreateElement("iframe"); + var length = enumBugKeys.length; + var lt = "<"; + var script = "script"; + var gt = ">"; + var js = "java" + script + ":"; + var iframeDocument; + iframe.style.display = "none"; + html2.appendChild(iframe); + iframe.src = String(js); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + script + gt + "document.F=Object" + lt + "/" + script + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (length--) + delete createDict[PROTOTYPE][enumBugKeys[length]]; + return createDict(); + }; + module3.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + result[IE_PROTO] = O; } else - targetProperty = target[key2]; - FORCED = isForced(GLOBAL ? key2 : TARGET + (STATIC ? "." : "#") + key2, options.forced); - if (!FORCED && targetProperty !== void 0) { - if (typeof sourceProperty === typeof targetProperty) - continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - if (options.sham || targetProperty && targetProperty.sham) { - hide(sourceProperty, "sham", true); - } - redefine(target, key2, sourceProperty, options); - } - }; - }, - "./node_modules/core-js/internals/fails.js": function(module3, exports2) { - module3.exports = function(exec) { - try { - return !!exec(); - } catch (error) { - return true; + result = createDict(); + return Properties === void 0 ? result : defineProperties(result, Properties); + }; + hiddenKeys[IE_PROTO] = true; } - }; - }, - "./node_modules/core-js/internals/function-to-string.js": function(module3, exports2, __webpack_require__) { - var shared = __webpack_require__("./node_modules/core-js/internals/shared.js"); - module3.exports = shared("native-function-to-string", Function.toString); - }, - "./node_modules/core-js/internals/get-iterator-method.js": function(module3, exports2, __webpack_require__) { - var classof = __webpack_require__("./node_modules/core-js/internals/classof.js"); - var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js"); - var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); - var ITERATOR = wellKnownSymbol("iterator"); - module3.exports = function(it) { - if (it != void 0) - return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)]; - }; - }, - "./node_modules/core-js/internals/global.js": function(module3, exports2, __webpack_require__) { - (function(global2) { - var O = "object"; - var check = function(it) { - return it && it.Math == Math && it; - }; - module3.exports = check(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof global2 == O && global2) || Function("return this")(); - }).call(this, __webpack_require__("./node_modules/webpack/buildin/global.js")); - }, - "./node_modules/core-js/internals/has.js": function(module3, exports2) { - var hasOwnProperty = {}.hasOwnProperty; - module3.exports = function(it, key2) { - return hasOwnProperty.call(it, key2); - }; - }, - "./node_modules/core-js/internals/hidden-keys.js": function(module3, exports2) { - module3.exports = {}; - }, - "./node_modules/core-js/internals/hide.js": function(module3, exports2, __webpack_require__) { - var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js"); - var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js"); - var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js"); - module3.exports = DESCRIPTORS ? function(object, key2, value) { - return definePropertyModule.f(object, key2, createPropertyDescriptor(1, value)); - } : function(object, key2, value) { - object[key2] = value; - return object; - }; - }, - "./node_modules/core-js/internals/html.js": function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__("./node_modules/core-js/internals/global.js"); - var document2 = global2.document; - module3.exports = document2 && document2.documentElement; - }, - "./node_modules/core-js/internals/ie8-dom-define.js": function(module3, exports2, __webpack_require__) { - var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js"); - var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); - var createElement = __webpack_require__("./node_modules/core-js/internals/document-create-element.js"); - module3.exports = !DESCRIPTORS && !fails(function() { - return Object.defineProperty(createElement("div"), "a", { - get: function() { - return 7; - } - }).a != 7; - }); - }, - "./node_modules/core-js/internals/indexed-object.js": function(module3, exports2, __webpack_require__) { - var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); - var classof = __webpack_require__("./node_modules/core-js/internals/classof-raw.js"); - var split = "".split; - module3.exports = fails(function() { - return !Object("z").propertyIsEnumerable(0); - }) ? function(it) { - return classof(it) == "String" ? split.call(it, "") : Object(it); - } : Object; - }, - "./node_modules/core-js/internals/internal-state.js": function(module3, exports2, __webpack_require__) { - var NATIVE_WEAK_MAP = __webpack_require__("./node_modules/core-js/internals/native-weak-map.js"); - var global2 = __webpack_require__("./node_modules/core-js/internals/global.js"); - var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js"); - var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); - var objectHas = __webpack_require__("./node_modules/core-js/internals/has.js"); - var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js"); - var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js"); - var WeakMap2 = global2.WeakMap; - var set, get, has; - var enforce = function(it) { - return has(it) ? get(it) : set(it, {}); - }; - var getterFor = function(TYPE) { - return function(it) { - var state; - if (!isObject(it) || (state = get(it)).type !== TYPE) { - throw TypeError("Incompatible receiver, " + TYPE + " required"); - } - return state; - }; - }; - if (NATIVE_WEAK_MAP) { - var store = new WeakMap2(); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; - set = function(it, metadata) { - wmset.call(store, it, metadata); - return metadata; - }; - get = function(it) { - return wmget.call(store, it) || {}; - }; - has = function(it) { - return wmhas.call(store, it); - }; - } else { - var STATE = sharedKey("state"); - hiddenKeys[STATE] = true; - set = function(it, metadata) { - hide(it, STATE, metadata); - return metadata; - }; - get = function(it) { - return objectHas(it, STATE) ? it[STATE] : {}; - }; - has = function(it) { - return objectHas(it, STATE); - }; - } - module3.exports = { - set, - get, - has, - enforce, - getterFor - }; - }, - "./node_modules/core-js/internals/is-array-iterator-method.js": function(module3, exports2, __webpack_require__) { - var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); - var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js"); - var ITERATOR = wellKnownSymbol("iterator"); - var ArrayPrototype = Array.prototype; - module3.exports = function(it) { - return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); - }; - }, - "./node_modules/core-js/internals/is-forced.js": function(module3, exports2, __webpack_require__) { - var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); - var replacement = /#|\.prototype\./; - var isForced = function(feature, detection) { - var value = data[normalize(feature)]; - return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == "function" ? fails(detection) : !!detection; - }; - var normalize = isForced.normalize = function(string) { - return String(string).replace(replacement, ".").toLowerCase(); - }; - var data = isForced.data = {}; - var NATIVE = isForced.NATIVE = "N"; - var POLYFILL = isForced.POLYFILL = "P"; - module3.exports = isForced; - }, - "./node_modules/core-js/internals/is-object.js": function(module3, exports2) { - module3.exports = function(it) { - return typeof it === "object" ? it !== null : typeof it === "function"; - }; - }, - "./node_modules/core-js/internals/is-pure.js": function(module3, exports2) { - module3.exports = false; - }, - "./node_modules/core-js/internals/iterators-core.js": function(module3, exports2, __webpack_require__) { - "use strict"; - var getPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-get-prototype-of.js"); - var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); - var has = __webpack_require__("./node_modules/core-js/internals/has.js"); - var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); - var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js"); - var ITERATOR = wellKnownSymbol("iterator"); - var BUGGY_SAFARI_ITERATORS = false; - var returnThis = function() { - return this; - }; - var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; - if ([].keys) { - arrayIterator = [].keys(); - if (!("next" in arrayIterator)) - BUGGY_SAFARI_ITERATORS = true; - else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) - IteratorPrototype = PrototypeOfArrayIteratorPrototype; + ), + /***/ + "./node_modules/core-js/internals/object-define-properties.js": ( + /*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/object-define-properties.js ***! + \********************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var DESCRIPTORS = __webpack_require__( + /*! ../internals/descriptors */ + "./node_modules/core-js/internals/descriptors.js" + ); + var definePropertyModule = __webpack_require__( + /*! ../internals/object-define-property */ + "./node_modules/core-js/internals/object-define-property.js" + ); + var anObject = __webpack_require__( + /*! ../internals/an-object */ + "./node_modules/core-js/internals/an-object.js" + ); + var objectKeys = __webpack_require__( + /*! ../internals/object-keys */ + "./node_modules/core-js/internals/object-keys.js" + ); + module3.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = objectKeys(Properties); + var length = keys.length; + var i = 0; + var key2; + while (length > i) + definePropertyModule.f(O, key2 = keys[i++], Properties[key2]); + return O; + }; } - } - if (IteratorPrototype == void 0) - IteratorPrototype = {}; - if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) - hide(IteratorPrototype, ITERATOR, returnThis); - module3.exports = { - IteratorPrototype, - BUGGY_SAFARI_ITERATORS - }; - }, - "./node_modules/core-js/internals/iterators.js": function(module3, exports2) { - module3.exports = {}; - }, - "./node_modules/core-js/internals/native-symbol.js": function(module3, exports2, __webpack_require__) { - var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); - module3.exports = !!Object.getOwnPropertySymbols && !fails(function() { - return !String(Symbol()); - }); - }, - "./node_modules/core-js/internals/native-weak-map.js": function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__("./node_modules/core-js/internals/global.js"); - var nativeFunctionToString = __webpack_require__("./node_modules/core-js/internals/function-to-string.js"); - var WeakMap2 = global2.WeakMap; - module3.exports = typeof WeakMap2 === "function" && /native code/.test(nativeFunctionToString.call(WeakMap2)); - }, - "./node_modules/core-js/internals/object-create.js": function(module3, exports2, __webpack_require__) { - var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); - var defineProperties = __webpack_require__("./node_modules/core-js/internals/object-define-properties.js"); - var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js"); - var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js"); - var html2 = __webpack_require__("./node_modules/core-js/internals/html.js"); - var documentCreateElement = __webpack_require__("./node_modules/core-js/internals/document-create-element.js"); - var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js"); - var IE_PROTO = sharedKey("IE_PROTO"); - var PROTOTYPE = "prototype"; - var Empty = function() { - }; - var createDict = function() { - var iframe = documentCreateElement("iframe"); - var length = enumBugKeys.length; - var lt = "<"; - var script = "script"; - var gt = ">"; - var js = "java" + script + ":"; - var iframeDocument; - iframe.style.display = "none"; - html2.appendChild(iframe); - iframe.src = String(js); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + script + gt + "document.F=Object" + lt + "/" + script + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (length--) - delete createDict[PROTOTYPE][enumBugKeys[length]]; - return createDict(); - }; - module3.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - result[IE_PROTO] = O; - } else - result = createDict(); - return Properties === void 0 ? result : defineProperties(result, Properties); - }; - hiddenKeys[IE_PROTO] = true; - }, - "./node_modules/core-js/internals/object-define-properties.js": function(module3, exports2, __webpack_require__) { - var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js"); - var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js"); - var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); - var objectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys.js"); - module3.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = objectKeys(Properties); - var length = keys.length; - var i = 0; - var key2; - while (length > i) - definePropertyModule.f(O, key2 = keys[i++], Properties[key2]); - return O; - }; - }, - "./node_modules/core-js/internals/object-define-property.js": function(module3, exports2, __webpack_require__) { - var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js"); - var IE8_DOM_DEFINE = __webpack_require__("./node_modules/core-js/internals/ie8-dom-define.js"); - var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); - var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js"); - var nativeDefineProperty = Object.defineProperty; - exports2.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) + ), + /***/ + "./node_modules/core-js/internals/object-define-property.js": ( + /*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-define-property.js ***! + \******************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var DESCRIPTORS = __webpack_require__( + /*! ../internals/descriptors */ + "./node_modules/core-js/internals/descriptors.js" + ); + var IE8_DOM_DEFINE = __webpack_require__( + /*! ../internals/ie8-dom-define */ + "./node_modules/core-js/internals/ie8-dom-define.js" + ); + var anObject = __webpack_require__( + /*! ../internals/an-object */ + "./node_modules/core-js/internals/an-object.js" + ); + var toPrimitive = __webpack_require__( + /*! ../internals/to-primitive */ + "./node_modules/core-js/internals/to-primitive.js" + ); + var nativeDefineProperty = Object.defineProperty; + exports3.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) + try { + return nativeDefineProperty(O, P, Attributes); + } catch (error) { + } + if ("get" in Attributes || "set" in Attributes) + throw TypeError("Accessors not supported"); + if ("value" in Attributes) + O[P] = Attributes.value; + return O; + }; + } + ), + /***/ + "./node_modules/core-js/internals/object-get-own-property-descriptor.js": ( + /*!******************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! + \******************************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var DESCRIPTORS = __webpack_require__( + /*! ../internals/descriptors */ + "./node_modules/core-js/internals/descriptors.js" + ); + var propertyIsEnumerableModule = __webpack_require__( + /*! ../internals/object-property-is-enumerable */ + "./node_modules/core-js/internals/object-property-is-enumerable.js" + ); + var createPropertyDescriptor = __webpack_require__( + /*! ../internals/create-property-descriptor */ + "./node_modules/core-js/internals/create-property-descriptor.js" + ); + var toIndexedObject = __webpack_require__( + /*! ../internals/to-indexed-object */ + "./node_modules/core-js/internals/to-indexed-object.js" + ); + var toPrimitive = __webpack_require__( + /*! ../internals/to-primitive */ + "./node_modules/core-js/internals/to-primitive.js" + ); + var has = __webpack_require__( + /*! ../internals/has */ + "./node_modules/core-js/internals/has.js" + ); + var IE8_DOM_DEFINE = __webpack_require__( + /*! ../internals/ie8-dom-define */ + "./node_modules/core-js/internals/ie8-dom-define.js" + ); + var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + exports3.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) + try { + return nativeGetOwnPropertyDescriptor(O, P); + } catch (error) { + } + if (has(O, P)) + return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); + }; + } + ), + /***/ + "./node_modules/core-js/internals/object-get-own-property-names.js": ( + /*!*************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! + \*************************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var internalObjectKeys = __webpack_require__( + /*! ../internals/object-keys-internal */ + "./node_modules/core-js/internals/object-keys-internal.js" + ); + var enumBugKeys = __webpack_require__( + /*! ../internals/enum-bug-keys */ + "./node_modules/core-js/internals/enum-bug-keys.js" + ); + var hiddenKeys = enumBugKeys.concat("length", "prototype"); + exports3.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); + }; + } + ), + /***/ + "./node_modules/core-js/internals/object-get-own-property-symbols.js": ( + /*!***************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! + \***************************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + exports3.f = Object.getOwnPropertySymbols; + } + ), + /***/ + "./node_modules/core-js/internals/object-get-prototype-of.js": ( + /*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***! + \*******************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var has = __webpack_require__( + /*! ../internals/has */ + "./node_modules/core-js/internals/has.js" + ); + var toObject = __webpack_require__( + /*! ../internals/to-object */ + "./node_modules/core-js/internals/to-object.js" + ); + var sharedKey = __webpack_require__( + /*! ../internals/shared-key */ + "./node_modules/core-js/internals/shared-key.js" + ); + var CORRECT_PROTOTYPE_GETTER = __webpack_require__( + /*! ../internals/correct-prototype-getter */ + "./node_modules/core-js/internals/correct-prototype-getter.js" + ); + var IE_PROTO = sharedKey("IE_PROTO"); + var ObjectPrototype = Object.prototype; + module3.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function(O) { + O = toObject(O); + if (has(O, IE_PROTO)) + return O[IE_PROTO]; + if (typeof O.constructor == "function" && O instanceof O.constructor) { + return O.constructor.prototype; + } + return O instanceof Object ? ObjectPrototype : null; + }; + } + ), + /***/ + "./node_modules/core-js/internals/object-keys-internal.js": ( + /*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/object-keys-internal.js ***! + \****************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var has = __webpack_require__( + /*! ../internals/has */ + "./node_modules/core-js/internals/has.js" + ); + var toIndexedObject = __webpack_require__( + /*! ../internals/to-indexed-object */ + "./node_modules/core-js/internals/to-indexed-object.js" + ); + var arrayIncludes = __webpack_require__( + /*! ../internals/array-includes */ + "./node_modules/core-js/internals/array-includes.js" + ); + var hiddenKeys = __webpack_require__( + /*! ../internals/hidden-keys */ + "./node_modules/core-js/internals/hidden-keys.js" + ); + var arrayIndexOf = arrayIncludes(false); + module3.exports = function(object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key2; + for (key2 in O) + !has(hiddenKeys, key2) && has(O, key2) && result.push(key2); + while (names.length > i) + if (has(O, key2 = names[i++])) { + ~arrayIndexOf(result, key2) || result.push(key2); + } + return result; + }; + } + ), + /***/ + "./node_modules/core-js/internals/object-keys.js": ( + /*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/object-keys.js ***! + \*******************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var internalObjectKeys = __webpack_require__( + /*! ../internals/object-keys-internal */ + "./node_modules/core-js/internals/object-keys-internal.js" + ); + var enumBugKeys = __webpack_require__( + /*! ../internals/enum-bug-keys */ + "./node_modules/core-js/internals/enum-bug-keys.js" + ); + module3.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); + }; + } + ), + /***/ + "./node_modules/core-js/internals/object-property-is-enumerable.js": ( + /*!*************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! + \*************************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + var nativePropertyIsEnumerable = {}.propertyIsEnumerable; + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); + exports3.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; + } : nativePropertyIsEnumerable; + } + ), + /***/ + "./node_modules/core-js/internals/object-set-prototype-of.js": ( + /*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***! + \*******************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var validateSetPrototypeOfArguments = __webpack_require__( + /*! ../internals/validate-set-prototype-of-arguments */ + "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js" + ); + module3.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() { + var correctSetter = false; + var test = {}; + var setter; + try { + setter = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set; + setter.call(test, []); + correctSetter = test instanceof Array; + } catch (error) { + } + return function setPrototypeOf(O, proto) { + validateSetPrototypeOfArguments(O, proto); + if (correctSetter) + setter.call(O, proto); + else + O.__proto__ = proto; + return O; + }; + }() : void 0); + } + ), + /***/ + "./node_modules/core-js/internals/own-keys.js": ( + /*!****************************************************!*\ + !*** ./node_modules/core-js/internals/own-keys.js ***! + \****************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var global2 = __webpack_require__( + /*! ../internals/global */ + "./node_modules/core-js/internals/global.js" + ); + var getOwnPropertyNamesModule = __webpack_require__( + /*! ../internals/object-get-own-property-names */ + "./node_modules/core-js/internals/object-get-own-property-names.js" + ); + var getOwnPropertySymbolsModule = __webpack_require__( + /*! ../internals/object-get-own-property-symbols */ + "./node_modules/core-js/internals/object-get-own-property-symbols.js" + ); + var anObject = __webpack_require__( + /*! ../internals/an-object */ + "./node_modules/core-js/internals/an-object.js" + ); + var Reflect2 = global2.Reflect; + module3.exports = Reflect2 && Reflect2.ownKeys || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; + }; + } + ), + /***/ + "./node_modules/core-js/internals/path.js": ( + /*!************************************************!*\ + !*** ./node_modules/core-js/internals/path.js ***! + \************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + module3.exports = __webpack_require__( + /*! ../internals/global */ + "./node_modules/core-js/internals/global.js" + ); + } + ), + /***/ + "./node_modules/core-js/internals/redefine.js": ( + /*!****************************************************!*\ + !*** ./node_modules/core-js/internals/redefine.js ***! + \****************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var global2 = __webpack_require__( + /*! ../internals/global */ + "./node_modules/core-js/internals/global.js" + ); + var shared = __webpack_require__( + /*! ../internals/shared */ + "./node_modules/core-js/internals/shared.js" + ); + var hide = __webpack_require__( + /*! ../internals/hide */ + "./node_modules/core-js/internals/hide.js" + ); + var has = __webpack_require__( + /*! ../internals/has */ + "./node_modules/core-js/internals/has.js" + ); + var setGlobal = __webpack_require__( + /*! ../internals/set-global */ + "./node_modules/core-js/internals/set-global.js" + ); + var nativeFunctionToString = __webpack_require__( + /*! ../internals/function-to-string */ + "./node_modules/core-js/internals/function-to-string.js" + ); + var InternalStateModule = __webpack_require__( + /*! ../internals/internal-state */ + "./node_modules/core-js/internals/internal-state.js" + ); + var getInternalState = InternalStateModule.get; + var enforceInternalState = InternalStateModule.enforce; + var TEMPLATE = String(nativeFunctionToString).split("toString"); + shared("inspectSource", function(it) { + return nativeFunctionToString.call(it); + }); + (module3.exports = function(O, key2, value, options) { + var unsafe = options ? !!options.unsafe : false; + var simple2 = options ? !!options.enumerable : false; + var noTargetGet = options ? !!options.noTargetGet : false; + if (typeof value == "function") { + if (typeof key2 == "string" && !has(value, "name")) + hide(value, "name", key2); + enforceInternalState(value).source = TEMPLATE.join(typeof key2 == "string" ? key2 : ""); + } + if (O === global2) { + if (simple2) + O[key2] = value; + else + setGlobal(key2, value); + return; + } else if (!unsafe) { + delete O[key2]; + } else if (!noTargetGet && O[key2]) { + simple2 = true; + } + if (simple2) + O[key2] = value; + else + hide(O, key2, value); + })(Function.prototype, "toString", function toString() { + return typeof this == "function" && getInternalState(this).source || nativeFunctionToString.call(this); + }); + } + ), + /***/ + "./node_modules/core-js/internals/require-object-coercible.js": ( + /*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/require-object-coercible.js ***! + \********************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + module3.exports = function(it) { + if (it == void 0) + throw TypeError("Can't call method on " + it); + return it; + }; + } + ), + /***/ + "./node_modules/core-js/internals/set-global.js": ( + /*!******************************************************!*\ + !*** ./node_modules/core-js/internals/set-global.js ***! + \******************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var global2 = __webpack_require__( + /*! ../internals/global */ + "./node_modules/core-js/internals/global.js" + ); + var hide = __webpack_require__( + /*! ../internals/hide */ + "./node_modules/core-js/internals/hide.js" + ); + module3.exports = function(key2, value) { + try { + hide(global2, key2, value); + } catch (error) { + global2[key2] = value; + } + return value; + }; + } + ), + /***/ + "./node_modules/core-js/internals/set-to-string-tag.js": ( + /*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/set-to-string-tag.js ***! + \*************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var defineProperty = __webpack_require__( + /*! ../internals/object-define-property */ + "./node_modules/core-js/internals/object-define-property.js" + ).f; + var has = __webpack_require__( + /*! ../internals/has */ + "./node_modules/core-js/internals/has.js" + ); + var wellKnownSymbol = __webpack_require__( + /*! ../internals/well-known-symbol */ + "./node_modules/core-js/internals/well-known-symbol.js" + ); + var TO_STRING_TAG = wellKnownSymbol("toStringTag"); + module3.exports = function(it, TAG, STATIC) { + if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { + defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); + } + }; + } + ), + /***/ + "./node_modules/core-js/internals/shared-key.js": ( + /*!******************************************************!*\ + !*** ./node_modules/core-js/internals/shared-key.js ***! + \******************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var shared = __webpack_require__( + /*! ../internals/shared */ + "./node_modules/core-js/internals/shared.js" + ); + var uid = __webpack_require__( + /*! ../internals/uid */ + "./node_modules/core-js/internals/uid.js" + ); + var keys = shared("keys"); + module3.exports = function(key2) { + return keys[key2] || (keys[key2] = uid(key2)); + }; + } + ), + /***/ + "./node_modules/core-js/internals/shared.js": ( + /*!**************************************************!*\ + !*** ./node_modules/core-js/internals/shared.js ***! + \**************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var global2 = __webpack_require__( + /*! ../internals/global */ + "./node_modules/core-js/internals/global.js" + ); + var setGlobal = __webpack_require__( + /*! ../internals/set-global */ + "./node_modules/core-js/internals/set-global.js" + ); + var IS_PURE = __webpack_require__( + /*! ../internals/is-pure */ + "./node_modules/core-js/internals/is-pure.js" + ); + var SHARED = "__core-js_shared__"; + var store = global2[SHARED] || setGlobal(SHARED, {}); + (module3.exports = function(key2, value) { + return store[key2] || (store[key2] = value !== void 0 ? value : {}); + })("versions", []).push({ + version: "3.1.3", + mode: IS_PURE ? "pure" : "global", + copyright: "\xA9 2019 Denis Pushkarev (zloirock.ru)" + }); + } + ), + /***/ + "./node_modules/core-js/internals/string-at.js": ( + /*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/string-at.js ***! + \*****************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var toInteger = __webpack_require__( + /*! ../internals/to-integer */ + "./node_modules/core-js/internals/to-integer.js" + ); + var requireObjectCoercible = __webpack_require__( + /*! ../internals/require-object-coercible */ + "./node_modules/core-js/internals/require-object-coercible.js" + ); + module3.exports = function(that, pos, CONVERT_TO_STRING) { + var S = String(requireObjectCoercible(that)); + var position = toInteger(pos); + var size = S.length; + var first2, second; + if (position < 0 || position >= size) + return CONVERT_TO_STRING ? "" : void 0; + first2 = S.charCodeAt(position); + return first2 < 55296 || first2 > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first2 : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first2 - 55296 << 10) + (second - 56320) + 65536; + }; + } + ), + /***/ + "./node_modules/core-js/internals/to-absolute-index.js": ( + /*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/to-absolute-index.js ***! + \*************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var toInteger = __webpack_require__( + /*! ../internals/to-integer */ + "./node_modules/core-js/internals/to-integer.js" + ); + var max = Math.max; + var min = Math.min; + module3.exports = function(index2, length) { + var integer = toInteger(index2); + return integer < 0 ? max(integer + length, 0) : min(integer, length); + }; + } + ), + /***/ + "./node_modules/core-js/internals/to-indexed-object.js": ( + /*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/to-indexed-object.js ***! + \*************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var IndexedObject = __webpack_require__( + /*! ../internals/indexed-object */ + "./node_modules/core-js/internals/indexed-object.js" + ); + var requireObjectCoercible = __webpack_require__( + /*! ../internals/require-object-coercible */ + "./node_modules/core-js/internals/require-object-coercible.js" + ); + module3.exports = function(it) { + return IndexedObject(requireObjectCoercible(it)); + }; + } + ), + /***/ + "./node_modules/core-js/internals/to-integer.js": ( + /*!******************************************************!*\ + !*** ./node_modules/core-js/internals/to-integer.js ***! + \******************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + var ceil = Math.ceil; + var floor = Math.floor; + module3.exports = function(argument) { + return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); + }; + } + ), + /***/ + "./node_modules/core-js/internals/to-length.js": ( + /*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-length.js ***! + \*****************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var toInteger = __webpack_require__( + /*! ../internals/to-integer */ + "./node_modules/core-js/internals/to-integer.js" + ); + var min = Math.min; + module3.exports = function(argument) { + return argument > 0 ? min(toInteger(argument), 9007199254740991) : 0; + }; + } + ), + /***/ + "./node_modules/core-js/internals/to-object.js": ( + /*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-object.js ***! + \*****************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var requireObjectCoercible = __webpack_require__( + /*! ../internals/require-object-coercible */ + "./node_modules/core-js/internals/require-object-coercible.js" + ); + module3.exports = function(argument) { + return Object(requireObjectCoercible(argument)); + }; + } + ), + /***/ + "./node_modules/core-js/internals/to-primitive.js": ( + /*!********************************************************!*\ + !*** ./node_modules/core-js/internals/to-primitive.js ***! + \********************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var isObject = __webpack_require__( + /*! ../internals/is-object */ + "./node_modules/core-js/internals/is-object.js" + ); + module3.exports = function(it, S) { + if (!isObject(it)) + return it; + var fn, val; + if (S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it))) + return val; + if (typeof (fn = it.valueOf) == "function" && !isObject(val = fn.call(it))) + return val; + if (!S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it))) + return val; + throw TypeError("Can't convert object to primitive value"); + }; + } + ), + /***/ + "./node_modules/core-js/internals/uid.js": ( + /*!***********************************************!*\ + !*** ./node_modules/core-js/internals/uid.js ***! + \***********************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + var id = 0; + var postfix = Math.random(); + module3.exports = function(key2) { + return "Symbol(".concat(key2 === void 0 ? "" : key2, ")_", (++id + postfix).toString(36)); + }; + } + ), + /***/ + "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js": ( + /*!*******************************************************************************!*\ + !*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***! + \*******************************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var isObject = __webpack_require__( + /*! ../internals/is-object */ + "./node_modules/core-js/internals/is-object.js" + ); + var anObject = __webpack_require__( + /*! ../internals/an-object */ + "./node_modules/core-js/internals/an-object.js" + ); + module3.exports = function(O, proto) { + anObject(O); + if (!isObject(proto) && proto !== null) { + throw TypeError("Can't set " + String(proto) + " as a prototype"); + } + }; + } + ), + /***/ + "./node_modules/core-js/internals/well-known-symbol.js": ( + /*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/well-known-symbol.js ***! + \*************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var global2 = __webpack_require__( + /*! ../internals/global */ + "./node_modules/core-js/internals/global.js" + ); + var shared = __webpack_require__( + /*! ../internals/shared */ + "./node_modules/core-js/internals/shared.js" + ); + var uid = __webpack_require__( + /*! ../internals/uid */ + "./node_modules/core-js/internals/uid.js" + ); + var NATIVE_SYMBOL = __webpack_require__( + /*! ../internals/native-symbol */ + "./node_modules/core-js/internals/native-symbol.js" + ); + var Symbol2 = global2.Symbol; + var store = shared("wks"); + module3.exports = function(name) { + return store[name] || (store[name] = NATIVE_SYMBOL && Symbol2[name] || (NATIVE_SYMBOL ? Symbol2 : uid)("Symbol." + name)); + }; + } + ), + /***/ + "./node_modules/core-js/modules/es.array.from.js": ( + /*!*******************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.from.js ***! + \*******************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + var $ = __webpack_require__( + /*! ../internals/export */ + "./node_modules/core-js/internals/export.js" + ); + var from = __webpack_require__( + /*! ../internals/array-from */ + "./node_modules/core-js/internals/array-from.js" + ); + var checkCorrectnessOfIteration = __webpack_require__( + /*! ../internals/check-correctness-of-iteration */ + "./node_modules/core-js/internals/check-correctness-of-iteration.js" + ); + var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) { + Array.from(iterable); + }); + $({ target: "Array", stat: true, forced: INCORRECT_ITERATION }, { + from + }); + } + ), + /***/ + "./node_modules/core-js/modules/es.string.iterator.js": ( + /*!************************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.iterator.js ***! + \************************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + var codePointAt = __webpack_require__( + /*! ../internals/string-at */ + "./node_modules/core-js/internals/string-at.js" + ); + var InternalStateModule = __webpack_require__( + /*! ../internals/internal-state */ + "./node_modules/core-js/internals/internal-state.js" + ); + var defineIterator = __webpack_require__( + /*! ../internals/define-iterator */ + "./node_modules/core-js/internals/define-iterator.js" + ); + var STRING_ITERATOR = "String Iterator"; + var setInternalState = InternalStateModule.set; + var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + defineIterator(String, "String", function(iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: String(iterated), + index: 0 + }); + }, function next() { + var state = getInternalState(this); + var string = state.string; + var index2 = state.index; + var point; + if (index2 >= string.length) + return { value: void 0, done: true }; + point = codePointAt(string, index2, true); + state.index += point.length; + return { value: point, done: false }; + }); + } + ), + /***/ + "./node_modules/webpack/buildin/global.js": ( + /*!***********************************!*\ + !*** (webpack)/buildin/global.js ***! + \***********************************/ + /*! no static exports found */ + /***/ + function(module3, exports3) { + var g; + g = function() { + return this; + }(); try { - return nativeDefineProperty(O, P, Attributes); - } catch (error) { + g = g || Function("return this")() || (1, eval)("this"); + } catch (e) { + if (typeof window === "object") + g = window; } - if ("get" in Attributes || "set" in Attributes) - throw TypeError("Accessors not supported"); - if ("value" in Attributes) - O[P] = Attributes.value; - return O; - }; - }, - "./node_modules/core-js/internals/object-get-own-property-descriptor.js": function(module3, exports2, __webpack_require__) { - var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js"); - var propertyIsEnumerableModule = __webpack_require__("./node_modules/core-js/internals/object-property-is-enumerable.js"); - var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js"); - var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js"); - var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js"); - var has = __webpack_require__("./node_modules/core-js/internals/has.js"); - var IE8_DOM_DEFINE = __webpack_require__("./node_modules/core-js/internals/ie8-dom-define.js"); - var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - exports2.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) - try { - return nativeGetOwnPropertyDescriptor(O, P); - } catch (error) { + module3.exports = g; + } + ), + /***/ + "./src/default-attrs.json": ( + /*!********************************!*\ + !*** ./src/default-attrs.json ***! + \********************************/ + /*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */ + /***/ + function(module3) { + module3.exports = { "xmlns": "http://www.w3.org/2000/svg", "width": 24, "height": 24, "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round" }; + } + ), + /***/ + "./src/icon.js": ( + /*!*********************!*\ + !*** ./src/icon.js ***! + \*********************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + Object.defineProperty(exports3, "__esModule", { + value: true + }); + var _extends = Object.assign || function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key2 in source) { + if (Object.prototype.hasOwnProperty.call(source, key2)) { + target[key2] = source[key2]; + } + } + } + return target; + }; + var _createClass = function() { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function(Constructor, protoProps, staticProps) { + if (protoProps) + defineProperties(Constructor.prototype, protoProps); + if (staticProps) + defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + var _dedupe = __webpack_require__( + /*! classnames/dedupe */ + "./node_modules/classnames/dedupe.js" + ); + var _dedupe2 = _interopRequireDefault(_dedupe); + var _defaultAttrs = __webpack_require__( + /*! ./default-attrs.json */ + "./src/default-attrs.json" + ); + var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; } - if (has(O, P)) - return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); - }; - }, - "./node_modules/core-js/internals/object-get-own-property-names.js": function(module3, exports2, __webpack_require__) { - var internalObjectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys-internal.js"); - var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js"); - var hiddenKeys = enumBugKeys.concat("length", "prototype"); - exports2.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); - }; - }, - "./node_modules/core-js/internals/object-get-own-property-symbols.js": function(module3, exports2) { - exports2.f = Object.getOwnPropertySymbols; - }, - "./node_modules/core-js/internals/object-get-prototype-of.js": function(module3, exports2, __webpack_require__) { - var has = __webpack_require__("./node_modules/core-js/internals/has.js"); - var toObject = __webpack_require__("./node_modules/core-js/internals/to-object.js"); - var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js"); - var CORRECT_PROTOTYPE_GETTER = __webpack_require__("./node_modules/core-js/internals/correct-prototype-getter.js"); - var IE_PROTO = sharedKey("IE_PROTO"); - var ObjectPrototype = Object.prototype; - module3.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function(O) { - O = toObject(O); - if (has(O, IE_PROTO)) - return O[IE_PROTO]; - if (typeof O.constructor == "function" && O instanceof O.constructor) { - return O.constructor.prototype; - } - return O instanceof Object ? ObjectPrototype : null; - }; - }, - "./node_modules/core-js/internals/object-keys-internal.js": function(module3, exports2, __webpack_require__) { - var has = __webpack_require__("./node_modules/core-js/internals/has.js"); - var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js"); - var arrayIncludes = __webpack_require__("./node_modules/core-js/internals/array-includes.js"); - var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js"); - var arrayIndexOf = arrayIncludes(false); - module3.exports = function(object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key2; - for (key2 in O) - !has(hiddenKeys, key2) && has(O, key2) && result.push(key2); - while (names.length > i) - if (has(O, key2 = names[i++])) { - ~arrayIndexOf(result, key2) || result.push(key2); - } - return result; - }; - }, - "./node_modules/core-js/internals/object-keys.js": function(module3, exports2, __webpack_require__) { - var internalObjectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys-internal.js"); - var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js"); - module3.exports = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys); - }; - }, - "./node_modules/core-js/internals/object-property-is-enumerable.js": function(module3, exports2, __webpack_require__) { - "use strict"; - var nativePropertyIsEnumerable = {}.propertyIsEnumerable; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); - exports2.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; - } : nativePropertyIsEnumerable; - }, - "./node_modules/core-js/internals/object-set-prototype-of.js": function(module3, exports2, __webpack_require__) { - var validateSetPrototypeOfArguments = __webpack_require__("./node_modules/core-js/internals/validate-set-prototype-of-arguments.js"); - module3.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() { - var correctSetter = false; - var test = {}; - var setter; - try { - setter = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set; - setter.call(test, []); - correctSetter = test instanceof Array; - } catch (error) { - } - return function setPrototypeOf(O, proto) { - validateSetPrototypeOfArguments(O, proto); - if (correctSetter) - setter.call(O, proto); - else - O.__proto__ = proto; - return O; - }; - }() : void 0); - }, - "./node_modules/core-js/internals/own-keys.js": function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__("./node_modules/core-js/internals/global.js"); - var getOwnPropertyNamesModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-names.js"); - var getOwnPropertySymbolsModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-symbols.js"); - var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); - var Reflect = global2.Reflect; - module3.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; - }; - }, - "./node_modules/core-js/internals/path.js": function(module3, exports2, __webpack_require__) { - module3.exports = __webpack_require__("./node_modules/core-js/internals/global.js"); - }, - "./node_modules/core-js/internals/redefine.js": function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__("./node_modules/core-js/internals/global.js"); - var shared = __webpack_require__("./node_modules/core-js/internals/shared.js"); - var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); - var has = __webpack_require__("./node_modules/core-js/internals/has.js"); - var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js"); - var nativeFunctionToString = __webpack_require__("./node_modules/core-js/internals/function-to-string.js"); - var InternalStateModule = __webpack_require__("./node_modules/core-js/internals/internal-state.js"); - var getInternalState = InternalStateModule.get; - var enforceInternalState = InternalStateModule.enforce; - var TEMPLATE = String(nativeFunctionToString).split("toString"); - shared("inspectSource", function(it) { - return nativeFunctionToString.call(it); - }); - (module3.exports = function(O, key2, value, options) { - var unsafe = options ? !!options.unsafe : false; - var simple = options ? !!options.enumerable : false; - var noTargetGet = options ? !!options.noTargetGet : false; - if (typeof value == "function") { - if (typeof key2 == "string" && !has(value, "name")) - hide(value, "name", key2); - enforceInternalState(value).source = TEMPLATE.join(typeof key2 == "string" ? key2 : ""); - } - if (O === global2) { - if (simple) - O[key2] = value; - else - setGlobal(key2, value); - return; - } else if (!unsafe) { - delete O[key2]; - } else if (!noTargetGet && O[key2]) { - simple = true; - } - if (simple) - O[key2] = value; - else - hide(O, key2, value); - })(Function.prototype, "toString", function toString() { - return typeof this == "function" && getInternalState(this).source || nativeFunctionToString.call(this); - }); - }, - "./node_modules/core-js/internals/require-object-coercible.js": function(module3, exports2) { - module3.exports = function(it) { - if (it == void 0) - throw TypeError("Can't call method on " + it); - return it; - }; - }, - "./node_modules/core-js/internals/set-global.js": function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__("./node_modules/core-js/internals/global.js"); - var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); - module3.exports = function(key2, value) { - try { - hide(global2, key2, value); - } catch (error) { - global2[key2] = value; - } - return value; - }; - }, - "./node_modules/core-js/internals/set-to-string-tag.js": function(module3, exports2, __webpack_require__) { - var defineProperty = __webpack_require__("./node_modules/core-js/internals/object-define-property.js").f; - var has = __webpack_require__("./node_modules/core-js/internals/has.js"); - var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); - var TO_STRING_TAG = wellKnownSymbol("toStringTag"); - module3.exports = function(it, TAG, STATIC) { - if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { - defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); - } - }; - }, - "./node_modules/core-js/internals/shared-key.js": function(module3, exports2, __webpack_require__) { - var shared = __webpack_require__("./node_modules/core-js/internals/shared.js"); - var uid = __webpack_require__("./node_modules/core-js/internals/uid.js"); - var keys = shared("keys"); - module3.exports = function(key2) { - return keys[key2] || (keys[key2] = uid(key2)); - }; - }, - "./node_modules/core-js/internals/shared.js": function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__("./node_modules/core-js/internals/global.js"); - var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js"); - var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js"); - var SHARED = "__core-js_shared__"; - var store = global2[SHARED] || setGlobal(SHARED, {}); - (module3.exports = function(key2, value) { - return store[key2] || (store[key2] = value !== void 0 ? value : {}); - })("versions", []).push({ - version: "3.1.3", - mode: IS_PURE ? "pure" : "global", - copyright: "\xA9 2019 Denis Pushkarev (zloirock.ru)" - }); - }, - "./node_modules/core-js/internals/string-at.js": function(module3, exports2, __webpack_require__) { - var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js"); - var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js"); - module3.exports = function(that, pos, CONVERT_TO_STRING) { - var S = String(requireObjectCoercible(that)); - var position = toInteger(pos); - var size = S.length; - var first2, second; - if (position < 0 || position >= size) - return CONVERT_TO_STRING ? "" : void 0; - first2 = S.charCodeAt(position); - return first2 < 55296 || first2 > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first2 : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first2 - 55296 << 10) + (second - 56320) + 65536; - }; - }, - "./node_modules/core-js/internals/to-absolute-index.js": function(module3, exports2, __webpack_require__) { - var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js"); - var max = Math.max; - var min = Math.min; - module3.exports = function(index2, length) { - var integer = toInteger(index2); - return integer < 0 ? max(integer + length, 0) : min(integer, length); - }; - }, - "./node_modules/core-js/internals/to-indexed-object.js": function(module3, exports2, __webpack_require__) { - var IndexedObject = __webpack_require__("./node_modules/core-js/internals/indexed-object.js"); - var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js"); - module3.exports = function(it) { - return IndexedObject(requireObjectCoercible(it)); - }; - }, - "./node_modules/core-js/internals/to-integer.js": function(module3, exports2) { - var ceil = Math.ceil; - var floor = Math.floor; - module3.exports = function(argument) { - return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); - }; - }, - "./node_modules/core-js/internals/to-length.js": function(module3, exports2, __webpack_require__) { - var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js"); - var min = Math.min; - module3.exports = function(argument) { - return argument > 0 ? min(toInteger(argument), 9007199254740991) : 0; - }; - }, - "./node_modules/core-js/internals/to-object.js": function(module3, exports2, __webpack_require__) { - var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js"); - module3.exports = function(argument) { - return Object(requireObjectCoercible(argument)); - }; - }, - "./node_modules/core-js/internals/to-primitive.js": function(module3, exports2, __webpack_require__) { - var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js"); - module3.exports = function(it, S) { - if (!isObject(it)) - return it; - var fn, val; - if (S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it))) - return val; - if (typeof (fn = it.valueOf) == "function" && !isObject(val = fn.call(it))) - return val; - if (!S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it))) - return val; - throw TypeError("Can't convert object to primitive value"); - }; - }, - "./node_modules/core-js/internals/uid.js": function(module3, exports2) { - var id = 0; - var postfix = Math.random(); - module3.exports = function(key2) { - return "Symbol(".concat(key2 === void 0 ? "" : key2, ")_", (++id + postfix).toString(36)); - }; - }, - "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js": function(module3, exports2, __webpack_require__) { - var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js"); - var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); - module3.exports = function(O, proto) { - anObject(O); - if (!isObject(proto) && proto !== null) { - throw TypeError("Can't set " + String(proto) + " as a prototype"); - } - }; - }, - "./node_modules/core-js/internals/well-known-symbol.js": function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__("./node_modules/core-js/internals/global.js"); - var shared = __webpack_require__("./node_modules/core-js/internals/shared.js"); - var uid = __webpack_require__("./node_modules/core-js/internals/uid.js"); - var NATIVE_SYMBOL = __webpack_require__("./node_modules/core-js/internals/native-symbol.js"); - var Symbol2 = global2.Symbol; - var store = shared("wks"); - module3.exports = function(name) { - return store[name] || (store[name] = NATIVE_SYMBOL && Symbol2[name] || (NATIVE_SYMBOL ? Symbol2 : uid)("Symbol." + name)); - }; - }, - "./node_modules/core-js/modules/es.array.from.js": function(module3, exports2, __webpack_require__) { - var $ = __webpack_require__("./node_modules/core-js/internals/export.js"); - var from = __webpack_require__("./node_modules/core-js/internals/array-from.js"); - var checkCorrectnessOfIteration = __webpack_require__("./node_modules/core-js/internals/check-correctness-of-iteration.js"); - var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) { - Array.from(iterable); - }); - $({ target: "Array", stat: true, forced: INCORRECT_ITERATION }, { - from - }); - }, - "./node_modules/core-js/modules/es.string.iterator.js": function(module3, exports2, __webpack_require__) { - "use strict"; - var codePointAt = __webpack_require__("./node_modules/core-js/internals/string-at.js"); - var InternalStateModule = __webpack_require__("./node_modules/core-js/internals/internal-state.js"); - var defineIterator = __webpack_require__("./node_modules/core-js/internals/define-iterator.js"); - var STRING_ITERATOR = "String Iterator"; - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); - defineIterator(String, "String", function(iterated) { - setInternalState(this, { - type: STRING_ITERATOR, - string: String(iterated), - index: 0 - }); - }, function next() { - var state = getInternalState(this); - var string = state.string; - var index2 = state.index; - var point; - if (index2 >= string.length) - return { value: void 0, done: true }; - point = codePointAt(string, index2, true); - state.index += point.length; - return { value: point, done: false }; - }); - }, - "./node_modules/webpack/buildin/global.js": function(module3, exports2) { - var g; - g = function() { - return this; - }(); - try { - g = g || Function("return this")() || (1, eval)("this"); - } catch (e) { - if (typeof window === "object") - g = window; - } - module3.exports = g; - }, - "./src/default-attrs.json": function(module3) { - module3.exports = { "xmlns": "http://www.w3.org/2000/svg", "width": 24, "height": 24, "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round" }; - }, - "./src/icon.js": function(module3, exports2, __webpack_require__) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { - value: true - }); - var _extends = Object.assign || function(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var key2 in source) { - if (Object.prototype.hasOwnProperty.call(source, key2)) { - target[key2] = source[key2]; + function _classCallCheck(instance10, Constructor) { + if (!(instance10 instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); } } - } - return target; - }; - var _createClass = function() { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); + var Icon = function() { + function Icon2(name, contents) { + var tags = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; + _classCallCheck(this, Icon2); + this.name = name; + this.contents = contents; + this.tags = tags; + this.attrs = _extends({}, _defaultAttrs2.default, { class: "feather feather-" + name }); + } + _createClass(Icon2, [{ + key: "toSvg", + value: function toSvg() { + var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) }); + return "" + this.contents + ""; + } + /** + * Return string representation of an `Icon`. + * + * Added for backward compatibility. If old code expects `feather.icons.` + * to be a string, `toString()` will get implicitly called. + * + * @returns {string} + */ + }, { + key: "toString", + value: function toString() { + return this.contents; + } + }]); + return Icon2; + }(); + function attrsToString(attrs) { + return Object.keys(attrs).map(function(key2) { + return key2 + '="' + attrs[key2] + '"'; + }).join(" "); } + exports3.default = Icon; } - return function(Constructor, protoProps, staticProps) { - if (protoProps) - defineProperties(Constructor.prototype, protoProps); - if (staticProps) - defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - var _dedupe = __webpack_require__("./node_modules/classnames/dedupe.js"); - var _dedupe2 = _interopRequireDefault(_dedupe); - var _defaultAttrs = __webpack_require__("./src/default-attrs.json"); - var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _classCallCheck(instance6, Constructor) { - if (!(instance6 instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); + ), + /***/ + "./src/icons.js": ( + /*!**********************!*\ + !*** ./src/icons.js ***! + \**********************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + Object.defineProperty(exports3, "__esModule", { + value: true + }); + var _icon = __webpack_require__( + /*! ./icon */ + "./src/icon.js" + ); + var _icon2 = _interopRequireDefault(_icon); + var _icons = __webpack_require__( + /*! ../dist/icons.json */ + "./dist/icons.json" + ); + var _icons2 = _interopRequireDefault(_icons); + var _tags = __webpack_require__( + /*! ./tags.json */ + "./src/tags.json" + ); + var _tags2 = _interopRequireDefault(_tags); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + exports3.default = Object.keys(_icons2.default).map(function(key2) { + return new _icon2.default(key2, _icons2.default[key2], _tags2.default[key2]); + }).reduce(function(object, icon) { + object[icon.name] = icon; + return object; + }, {}); } - } - var Icon = function() { - function Icon2(name, contents) { - var tags = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; - _classCallCheck(this, Icon2); - this.name = name; - this.contents = contents; - this.tags = tags; - this.attrs = _extends({}, _defaultAttrs2.default, { class: "feather feather-" + name }); + ), + /***/ + "./src/index.js": ( + /*!**********************!*\ + !*** ./src/index.js ***! + \**********************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + var _icons = __webpack_require__( + /*! ./icons */ + "./src/icons.js" + ); + var _icons2 = _interopRequireDefault(_icons); + var _toSvg = __webpack_require__( + /*! ./to-svg */ + "./src/to-svg.js" + ); + var _toSvg2 = _interopRequireDefault(_toSvg); + var _replace = __webpack_require__( + /*! ./replace */ + "./src/replace.js" + ); + var _replace2 = _interopRequireDefault(_replace); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + module3.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default }; } - _createClass(Icon2, [{ - key: "toSvg", - value: function toSvg() { + ), + /***/ + "./src/replace.js": ( + /*!************************!*\ + !*** ./src/replace.js ***! + \************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + Object.defineProperty(exports3, "__esModule", { + value: true + }); + var _extends = Object.assign || function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key2 in source) { + if (Object.prototype.hasOwnProperty.call(source, key2)) { + target[key2] = source[key2]; + } + } + } + return target; + }; + var _dedupe = __webpack_require__( + /*! classnames/dedupe */ + "./node_modules/classnames/dedupe.js" + ); + var _dedupe2 = _interopRequireDefault(_dedupe); + var _icons = __webpack_require__( + /*! ./icons */ + "./src/icons.js" + ); + var _icons2 = _interopRequireDefault(_icons); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function replace() { var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) }); - return "" + this.contents + ""; - } - }, { - key: "toString", - value: function toString() { - return this.contents; - } - }]); - return Icon2; - }(); - function attrsToString(attrs) { - return Object.keys(attrs).map(function(key2) { - return key2 + '="' + attrs[key2] + '"'; - }).join(" "); - } - exports2.default = Icon; - }, - "./src/icons.js": function(module3, exports2, __webpack_require__) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { - value: true - }); - var _icon = __webpack_require__("./src/icon.js"); - var _icon2 = _interopRequireDefault(_icon); - var _icons = __webpack_require__("./dist/icons.json"); - var _icons2 = _interopRequireDefault(_icons); - var _tags = __webpack_require__("./src/tags.json"); - var _tags2 = _interopRequireDefault(_tags); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - exports2.default = Object.keys(_icons2.default).map(function(key2) { - return new _icon2.default(key2, _icons2.default[key2], _tags2.default[key2]); - }).reduce(function(object, icon) { - object[icon.name] = icon; - return object; - }, {}); - }, - "./src/index.js": function(module3, exports2, __webpack_require__) { - "use strict"; - var _icons = __webpack_require__("./src/icons.js"); - var _icons2 = _interopRequireDefault(_icons); - var _toSvg = __webpack_require__("./src/to-svg.js"); - var _toSvg2 = _interopRequireDefault(_toSvg); - var _replace = __webpack_require__("./src/replace.js"); - var _replace2 = _interopRequireDefault(_replace); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - module3.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default }; - }, - "./src/replace.js": function(module3, exports2, __webpack_require__) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { - value: true - }); - var _extends = Object.assign || function(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var key2 in source) { - if (Object.prototype.hasOwnProperty.call(source, key2)) { - target[key2] = source[key2]; + if (typeof document === "undefined") { + throw new Error("`feather.replace()` only works in a browser environment."); } + var elementsToReplace = document.querySelectorAll("[data-feather]"); + Array.from(elementsToReplace).forEach(function(element2) { + return replaceElement(element2, attrs); + }); } + function replaceElement(element2) { + var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + var elementAttrs = getAttrs(element2); + var name = elementAttrs["data-feather"]; + delete elementAttrs["data-feather"]; + var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) })); + var svgDocument = new DOMParser().parseFromString(svgString, "image/svg+xml"); + var svgElement = svgDocument.querySelector("svg"); + element2.parentNode.replaceChild(svgElement, element2); + } + function getAttrs(element2) { + return Array.from(element2.attributes).reduce(function(attrs, attr2) { + attrs[attr2.name] = attr2.value; + return attrs; + }, {}); + } + exports3.default = replace; } - return target; - }; - var _dedupe = __webpack_require__("./node_modules/classnames/dedupe.js"); - var _dedupe2 = _interopRequireDefault(_dedupe); - var _icons = __webpack_require__("./src/icons.js"); - var _icons2 = _interopRequireDefault(_icons); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function replace() { - var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - if (typeof document === "undefined") { - throw new Error("`feather.replace()` only works in a browser environment."); + ), + /***/ + "./src/tags.json": ( + /*!***********************!*\ + !*** ./src/tags.json ***! + \***********************/ + /*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, chevron-down, chevron-up, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-bouy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ + /***/ + function(module3) { + module3.exports = { "activity": ["pulse", "health", "action", "motion"], "airplay": ["stream", "cast", "mirroring"], "alert-circle": ["warning", "alert", "danger"], "alert-octagon": ["warning", "alert", "danger"], "alert-triangle": ["warning", "alert", "danger"], "align-center": ["text alignment", "center"], "align-justify": ["text alignment", "justified"], "align-left": ["text alignment", "left"], "align-right": ["text alignment", "right"], "anchor": [], "archive": ["index", "box"], "at-sign": ["mention", "at", "email", "message"], "award": ["achievement", "badge"], "aperture": ["camera", "photo"], "bar-chart": ["statistics", "diagram", "graph"], "bar-chart-2": ["statistics", "diagram", "graph"], "battery": ["power", "electricity"], "battery-charging": ["power", "electricity"], "bell": ["alarm", "notification", "sound"], "bell-off": ["alarm", "notification", "silent"], "bluetooth": ["wireless"], "book-open": ["read", "library"], "book": ["read", "dictionary", "booklet", "magazine", "library"], "bookmark": ["read", "clip", "marker", "tag"], "box": ["cube"], "briefcase": ["work", "bag", "baggage", "folder"], "calendar": ["date"], "camera": ["photo"], "cast": ["chromecast", "airplay"], "chevron-down": ["expand"], "chevron-up": ["collapse"], "circle": ["off", "zero", "record"], "clipboard": ["copy"], "clock": ["time", "watch", "alarm"], "cloud-drizzle": ["weather", "shower"], "cloud-lightning": ["weather", "bolt"], "cloud-rain": ["weather"], "cloud-snow": ["weather", "blizzard"], "cloud": ["weather"], "codepen": ["logo"], "codesandbox": ["logo"], "code": ["source", "programming"], "coffee": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"], "columns": ["layout"], "command": ["keyboard", "cmd", "terminal", "prompt"], "compass": ["navigation", "safari", "travel", "direction"], "copy": ["clone", "duplicate"], "corner-down-left": ["arrow", "return"], "corner-down-right": ["arrow"], "corner-left-down": ["arrow"], "corner-left-up": ["arrow"], "corner-right-down": ["arrow"], "corner-right-up": ["arrow"], "corner-up-left": ["arrow"], "corner-up-right": ["arrow"], "cpu": ["processor", "technology"], "credit-card": ["purchase", "payment", "cc"], "crop": ["photo", "image"], "crosshair": ["aim", "target"], "database": ["storage", "memory"], "delete": ["remove"], "disc": ["album", "cd", "dvd", "music"], "dollar-sign": ["currency", "money", "payment"], "droplet": ["water"], "edit": ["pencil", "change"], "edit-2": ["pencil", "change"], "edit-3": ["pencil", "change"], "eye": ["view", "watch"], "eye-off": ["view", "watch", "hide", "hidden"], "external-link": ["outbound"], "facebook": ["logo", "social"], "fast-forward": ["music"], "figma": ["logo", "design", "tool"], "file-minus": ["delete", "remove", "erase"], "file-plus": ["add", "create", "new"], "file-text": ["data", "txt", "pdf"], "film": ["movie", "video"], "filter": ["funnel", "hopper"], "flag": ["report"], "folder-minus": ["directory"], "folder-plus": ["directory"], "folder": ["directory"], "framer": ["logo", "design", "tool"], "frown": ["emoji", "face", "bad", "sad", "emotion"], "gift": ["present", "box", "birthday", "party"], "git-branch": ["code", "version control"], "git-commit": ["code", "version control"], "git-merge": ["code", "version control"], "git-pull-request": ["code", "version control"], "github": ["logo", "version control"], "gitlab": ["logo", "version control"], "globe": ["world", "browser", "language", "translate"], "hard-drive": ["computer", "server", "memory", "data"], "hash": ["hashtag", "number", "pound"], "headphones": ["music", "audio", "sound"], "heart": ["like", "love", "emotion"], "help-circle": ["question mark"], "hexagon": ["shape", "node.js", "logo"], "home": ["house", "living"], "image": ["picture"], "inbox": ["email"], "instagram": ["logo", "camera"], "key": ["password", "login", "authentication", "secure"], "layers": ["stack"], "layout": ["window", "webpage"], "life-bouy": ["help", "life ring", "support"], "link": ["chain", "url"], "link-2": ["chain", "url"], "linkedin": ["logo", "social media"], "list": ["options"], "lock": ["security", "password", "secure"], "log-in": ["sign in", "arrow", "enter"], "log-out": ["sign out", "arrow", "exit"], "mail": ["email", "message"], "map-pin": ["location", "navigation", "travel", "marker"], "map": ["location", "navigation", "travel"], "maximize": ["fullscreen"], "maximize-2": ["fullscreen", "arrows", "expand"], "meh": ["emoji", "face", "neutral", "emotion"], "menu": ["bars", "navigation", "hamburger"], "message-circle": ["comment", "chat"], "message-square": ["comment", "chat"], "mic-off": ["record", "sound", "mute"], "mic": ["record", "sound", "listen"], "minimize": ["exit fullscreen", "close"], "minimize-2": ["exit fullscreen", "arrows", "close"], "minus": ["subtract"], "monitor": ["tv", "screen", "display"], "moon": ["dark", "night"], "more-horizontal": ["ellipsis"], "more-vertical": ["ellipsis"], "mouse-pointer": ["arrow", "cursor"], "move": ["arrows"], "music": ["note"], "navigation": ["location", "travel"], "navigation-2": ["location", "travel"], "octagon": ["stop"], "package": ["box", "container"], "paperclip": ["attachment"], "pause": ["music", "stop"], "pause-circle": ["music", "audio", "stop"], "pen-tool": ["vector", "drawing"], "percent": ["discount"], "phone-call": ["ring"], "phone-forwarded": ["call"], "phone-incoming": ["call"], "phone-missed": ["call"], "phone-off": ["call", "mute"], "phone-outgoing": ["call"], "phone": ["call"], "play": ["music", "start"], "pie-chart": ["statistics", "diagram"], "play-circle": ["music", "start"], "plus": ["add", "new"], "plus-circle": ["add", "new"], "plus-square": ["add", "new"], "pocket": ["logo", "save"], "power": ["on", "off"], "printer": ["fax", "office", "device"], "radio": ["signal"], "refresh-cw": ["synchronise", "arrows"], "refresh-ccw": ["arrows"], "repeat": ["loop", "arrows"], "rewind": ["music"], "rotate-ccw": ["arrow"], "rotate-cw": ["arrow"], "rss": ["feed", "subscribe"], "save": ["floppy disk"], "scissors": ["cut"], "search": ["find", "magnifier", "magnifying glass"], "send": ["message", "mail", "email", "paper airplane", "paper aeroplane"], "settings": ["cog", "edit", "gear", "preferences"], "share-2": ["network", "connections"], "shield": ["security", "secure"], "shield-off": ["security", "insecure"], "shopping-bag": ["ecommerce", "cart", "purchase", "store"], "shopping-cart": ["ecommerce", "cart", "purchase", "store"], "shuffle": ["music"], "skip-back": ["music"], "skip-forward": ["music"], "slack": ["logo"], "slash": ["ban", "no"], "sliders": ["settings", "controls"], "smartphone": ["cellphone", "device"], "smile": ["emoji", "face", "happy", "good", "emotion"], "speaker": ["audio", "music"], "star": ["bookmark", "favorite", "like"], "stop-circle": ["media", "music"], "sun": ["brightness", "weather", "light"], "sunrise": ["weather", "time", "morning", "day"], "sunset": ["weather", "time", "evening", "night"], "tablet": ["device"], "tag": ["label"], "target": ["logo", "bullseye"], "terminal": ["code", "command line", "prompt"], "thermometer": ["temperature", "celsius", "fahrenheit", "weather"], "thumbs-down": ["dislike", "bad", "emotion"], "thumbs-up": ["like", "good", "emotion"], "toggle-left": ["on", "off", "switch"], "toggle-right": ["on", "off", "switch"], "tool": ["settings", "spanner"], "trash": ["garbage", "delete", "remove", "bin"], "trash-2": ["garbage", "delete", "remove", "bin"], "triangle": ["delta"], "truck": ["delivery", "van", "shipping", "transport", "lorry"], "tv": ["television", "stream"], "twitch": ["logo"], "twitter": ["logo", "social"], "type": ["text"], "umbrella": ["rain", "weather"], "unlock": ["security"], "user-check": ["followed", "subscribed"], "user-minus": ["delete", "remove", "unfollow", "unsubscribe"], "user-plus": ["new", "add", "create", "follow", "subscribe"], "user-x": ["delete", "remove", "unfollow", "unsubscribe", "unavailable"], "user": ["person", "account"], "users": ["group"], "video-off": ["camera", "movie", "film"], "video": ["camera", "movie", "film"], "voicemail": ["phone"], "volume": ["music", "sound", "mute"], "volume-1": ["music", "sound"], "volume-2": ["music", "sound"], "volume-x": ["music", "sound", "mute"], "watch": ["clock", "time"], "wifi-off": ["disabled"], "wifi": ["connection", "signal", "wireless"], "wind": ["weather", "air"], "x-circle": ["cancel", "close", "delete", "remove", "times", "clear"], "x-octagon": ["delete", "stop", "alert", "warning", "times", "clear"], "x-square": ["cancel", "close", "delete", "remove", "times", "clear"], "x": ["cancel", "close", "delete", "remove", "times", "clear"], "youtube": ["logo", "video", "play"], "zap-off": ["flash", "camera", "lightning"], "zap": ["flash", "camera", "lightning"], "zoom-in": ["magnifying glass"], "zoom-out": ["magnifying glass"] }; } - var elementsToReplace = document.querySelectorAll("[data-feather]"); - Array.from(elementsToReplace).forEach(function(element2) { - return replaceElement(element2, attrs); - }); - } - function replaceElement(element2) { - var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - var elementAttrs = getAttrs(element2); - var name = elementAttrs["data-feather"]; - delete elementAttrs["data-feather"]; - var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) })); - var svgDocument = new DOMParser().parseFromString(svgString, "image/svg+xml"); - var svgElement = svgDocument.querySelector("svg"); - element2.parentNode.replaceChild(svgElement, element2); - } - function getAttrs(element2) { - return Array.from(element2.attributes).reduce(function(attrs, attr2) { - attrs[attr2.name] = attr2.value; - return attrs; - }, {}); - } - exports2.default = replace; - }, - "./src/tags.json": function(module3) { - module3.exports = { "activity": ["pulse", "health", "action", "motion"], "airplay": ["stream", "cast", "mirroring"], "alert-circle": ["warning", "alert", "danger"], "alert-octagon": ["warning", "alert", "danger"], "alert-triangle": ["warning", "alert", "danger"], "align-center": ["text alignment", "center"], "align-justify": ["text alignment", "justified"], "align-left": ["text alignment", "left"], "align-right": ["text alignment", "right"], "anchor": [], "archive": ["index", "box"], "at-sign": ["mention", "at", "email", "message"], "award": ["achievement", "badge"], "aperture": ["camera", "photo"], "bar-chart": ["statistics", "diagram", "graph"], "bar-chart-2": ["statistics", "diagram", "graph"], "battery": ["power", "electricity"], "battery-charging": ["power", "electricity"], "bell": ["alarm", "notification", "sound"], "bell-off": ["alarm", "notification", "silent"], "bluetooth": ["wireless"], "book-open": ["read", "library"], "book": ["read", "dictionary", "booklet", "magazine", "library"], "bookmark": ["read", "clip", "marker", "tag"], "box": ["cube"], "briefcase": ["work", "bag", "baggage", "folder"], "calendar": ["date"], "camera": ["photo"], "cast": ["chromecast", "airplay"], "chevron-down": ["expand"], "chevron-up": ["collapse"], "circle": ["off", "zero", "record"], "clipboard": ["copy"], "clock": ["time", "watch", "alarm"], "cloud-drizzle": ["weather", "shower"], "cloud-lightning": ["weather", "bolt"], "cloud-rain": ["weather"], "cloud-snow": ["weather", "blizzard"], "cloud": ["weather"], "codepen": ["logo"], "codesandbox": ["logo"], "code": ["source", "programming"], "coffee": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"], "columns": ["layout"], "command": ["keyboard", "cmd", "terminal", "prompt"], "compass": ["navigation", "safari", "travel", "direction"], "copy": ["clone", "duplicate"], "corner-down-left": ["arrow", "return"], "corner-down-right": ["arrow"], "corner-left-down": ["arrow"], "corner-left-up": ["arrow"], "corner-right-down": ["arrow"], "corner-right-up": ["arrow"], "corner-up-left": ["arrow"], "corner-up-right": ["arrow"], "cpu": ["processor", "technology"], "credit-card": ["purchase", "payment", "cc"], "crop": ["photo", "image"], "crosshair": ["aim", "target"], "database": ["storage", "memory"], "delete": ["remove"], "disc": ["album", "cd", "dvd", "music"], "dollar-sign": ["currency", "money", "payment"], "droplet": ["water"], "edit": ["pencil", "change"], "edit-2": ["pencil", "change"], "edit-3": ["pencil", "change"], "eye": ["view", "watch"], "eye-off": ["view", "watch", "hide", "hidden"], "external-link": ["outbound"], "facebook": ["logo", "social"], "fast-forward": ["music"], "figma": ["logo", "design", "tool"], "file-minus": ["delete", "remove", "erase"], "file-plus": ["add", "create", "new"], "file-text": ["data", "txt", "pdf"], "film": ["movie", "video"], "filter": ["funnel", "hopper"], "flag": ["report"], "folder-minus": ["directory"], "folder-plus": ["directory"], "folder": ["directory"], "framer": ["logo", "design", "tool"], "frown": ["emoji", "face", "bad", "sad", "emotion"], "gift": ["present", "box", "birthday", "party"], "git-branch": ["code", "version control"], "git-commit": ["code", "version control"], "git-merge": ["code", "version control"], "git-pull-request": ["code", "version control"], "github": ["logo", "version control"], "gitlab": ["logo", "version control"], "globe": ["world", "browser", "language", "translate"], "hard-drive": ["computer", "server", "memory", "data"], "hash": ["hashtag", "number", "pound"], "headphones": ["music", "audio", "sound"], "heart": ["like", "love", "emotion"], "help-circle": ["question mark"], "hexagon": ["shape", "node.js", "logo"], "home": ["house", "living"], "image": ["picture"], "inbox": ["email"], "instagram": ["logo", "camera"], "key": ["password", "login", "authentication", "secure"], "layers": ["stack"], "layout": ["window", "webpage"], "life-bouy": ["help", "life ring", "support"], "link": ["chain", "url"], "link-2": ["chain", "url"], "linkedin": ["logo", "social media"], "list": ["options"], "lock": ["security", "password", "secure"], "log-in": ["sign in", "arrow", "enter"], "log-out": ["sign out", "arrow", "exit"], "mail": ["email", "message"], "map-pin": ["location", "navigation", "travel", "marker"], "map": ["location", "navigation", "travel"], "maximize": ["fullscreen"], "maximize-2": ["fullscreen", "arrows", "expand"], "meh": ["emoji", "face", "neutral", "emotion"], "menu": ["bars", "navigation", "hamburger"], "message-circle": ["comment", "chat"], "message-square": ["comment", "chat"], "mic-off": ["record", "sound", "mute"], "mic": ["record", "sound", "listen"], "minimize": ["exit fullscreen", "close"], "minimize-2": ["exit fullscreen", "arrows", "close"], "minus": ["subtract"], "monitor": ["tv", "screen", "display"], "moon": ["dark", "night"], "more-horizontal": ["ellipsis"], "more-vertical": ["ellipsis"], "mouse-pointer": ["arrow", "cursor"], "move": ["arrows"], "music": ["note"], "navigation": ["location", "travel"], "navigation-2": ["location", "travel"], "octagon": ["stop"], "package": ["box", "container"], "paperclip": ["attachment"], "pause": ["music", "stop"], "pause-circle": ["music", "audio", "stop"], "pen-tool": ["vector", "drawing"], "percent": ["discount"], "phone-call": ["ring"], "phone-forwarded": ["call"], "phone-incoming": ["call"], "phone-missed": ["call"], "phone-off": ["call", "mute"], "phone-outgoing": ["call"], "phone": ["call"], "play": ["music", "start"], "pie-chart": ["statistics", "diagram"], "play-circle": ["music", "start"], "plus": ["add", "new"], "plus-circle": ["add", "new"], "plus-square": ["add", "new"], "pocket": ["logo", "save"], "power": ["on", "off"], "printer": ["fax", "office", "device"], "radio": ["signal"], "refresh-cw": ["synchronise", "arrows"], "refresh-ccw": ["arrows"], "repeat": ["loop", "arrows"], "rewind": ["music"], "rotate-ccw": ["arrow"], "rotate-cw": ["arrow"], "rss": ["feed", "subscribe"], "save": ["floppy disk"], "scissors": ["cut"], "search": ["find", "magnifier", "magnifying glass"], "send": ["message", "mail", "email", "paper airplane", "paper aeroplane"], "settings": ["cog", "edit", "gear", "preferences"], "share-2": ["network", "connections"], "shield": ["security", "secure"], "shield-off": ["security", "insecure"], "shopping-bag": ["ecommerce", "cart", "purchase", "store"], "shopping-cart": ["ecommerce", "cart", "purchase", "store"], "shuffle": ["music"], "skip-back": ["music"], "skip-forward": ["music"], "slack": ["logo"], "slash": ["ban", "no"], "sliders": ["settings", "controls"], "smartphone": ["cellphone", "device"], "smile": ["emoji", "face", "happy", "good", "emotion"], "speaker": ["audio", "music"], "star": ["bookmark", "favorite", "like"], "stop-circle": ["media", "music"], "sun": ["brightness", "weather", "light"], "sunrise": ["weather", "time", "morning", "day"], "sunset": ["weather", "time", "evening", "night"], "tablet": ["device"], "tag": ["label"], "target": ["logo", "bullseye"], "terminal": ["code", "command line", "prompt"], "thermometer": ["temperature", "celsius", "fahrenheit", "weather"], "thumbs-down": ["dislike", "bad", "emotion"], "thumbs-up": ["like", "good", "emotion"], "toggle-left": ["on", "off", "switch"], "toggle-right": ["on", "off", "switch"], "tool": ["settings", "spanner"], "trash": ["garbage", "delete", "remove", "bin"], "trash-2": ["garbage", "delete", "remove", "bin"], "triangle": ["delta"], "truck": ["delivery", "van", "shipping", "transport", "lorry"], "tv": ["television", "stream"], "twitch": ["logo"], "twitter": ["logo", "social"], "type": ["text"], "umbrella": ["rain", "weather"], "unlock": ["security"], "user-check": ["followed", "subscribed"], "user-minus": ["delete", "remove", "unfollow", "unsubscribe"], "user-plus": ["new", "add", "create", "follow", "subscribe"], "user-x": ["delete", "remove", "unfollow", "unsubscribe", "unavailable"], "user": ["person", "account"], "users": ["group"], "video-off": ["camera", "movie", "film"], "video": ["camera", "movie", "film"], "voicemail": ["phone"], "volume": ["music", "sound", "mute"], "volume-1": ["music", "sound"], "volume-2": ["music", "sound"], "volume-x": ["music", "sound", "mute"], "watch": ["clock", "time"], "wifi-off": ["disabled"], "wifi": ["connection", "signal", "wireless"], "wind": ["weather", "air"], "x-circle": ["cancel", "close", "delete", "remove", "times", "clear"], "x-octagon": ["delete", "stop", "alert", "warning", "times", "clear"], "x-square": ["cancel", "close", "delete", "remove", "times", "clear"], "x": ["cancel", "close", "delete", "remove", "times", "clear"], "youtube": ["logo", "video", "play"], "zap-off": ["flash", "camera", "lightning"], "zap": ["flash", "camera", "lightning"], "zoom-in": ["magnifying glass"], "zoom-out": ["magnifying glass"] }; - }, - "./src/to-svg.js": function(module3, exports2, __webpack_require__) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { - value: true - }); - var _icons = __webpack_require__("./src/icons.js"); - var _icons2 = _interopRequireDefault(_icons); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function toSvg(name) { - var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."); - if (!name) { - throw new Error("The required `key` (icon name) parameter is missing."); + ), + /***/ + "./src/to-svg.js": ( + /*!***********************!*\ + !*** ./src/to-svg.js ***! + \***********************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + "use strict"; + Object.defineProperty(exports3, "__esModule", { + value: true + }); + var _icons = __webpack_require__( + /*! ./icons */ + "./src/icons.js" + ); + var _icons2 = _interopRequireDefault(_icons); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function toSvg(name) { + var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."); + if (!name) { + throw new Error("The required `key` (icon name) parameter is missing."); + } + if (!_icons2.default[name]) { + throw new Error("No icon matching '" + name + "'. See the complete list of icons at https://feathericons.com"); + } + return _icons2.default[name].toSvg(attrs); + } + exports3.default = toSvg; } - if (!_icons2.default[name]) { - throw new Error("No icon matching '" + name + "'. See the complete list of icons at https://feathericons.com"); + ), + /***/ + 0: ( + /*!**************************************************!*\ + !*** multi core-js/es/array/from ./src/index.js ***! + \**************************************************/ + /*! no static exports found */ + /***/ + function(module3, exports3, __webpack_require__) { + __webpack_require__( + /*! core-js/es/array/from */ + "./node_modules/core-js/es/array/from.js" + ); + module3.exports = __webpack_require__( + /*! /home/runner/work/feather/feather/src/index.js */ + "./src/index.js" + ); } - return _icons2.default[name].toSvg(attrs); - } - exports2.default = toSvg; - }, - 0: function(module3, exports2, __webpack_require__) { - __webpack_require__("./node_modules/core-js/es/array/from.js"); - module3.exports = __webpack_require__("./src/index.js"); - } - }); + ) + /******/ + }) + ); }); } }); // src/main.ts -__export(exports, { +var main_exports = {}; +__export(main_exports, { default: () => ObsidianGit }); +module.exports = __toCommonJS(main_exports); init_polyfill_buffer(); -// node_modules/.pnpm/isomorphic-git@1.21.0/node_modules/isomorphic-git/index.js +// node_modules/.pnpm/isomorphic-git@1.23.0/node_modules/isomorphic-git/index.js init_polyfill_buffer(); -var import_async_lock = __toModule(require_async_lock()); -var import_sha1 = __toModule(require_sha1()); -var import_crc_32 = __toModule(require_crc32()); -var import_pako = __toModule(require_pako()); -var import_ignore = __toModule(require_ignore()); -var import_pify = __toModule(require_pify()); -var import_clean_git_ref = __toModule(require_lib2()); -var import_diff3 = __toModule(require_diff3()); +var import_async_lock = __toESM(require_async_lock(), 1); +var import_sha1 = __toESM(require_sha1(), 1); +var import_crc_32 = __toESM(require_crc32(), 1); +var import_pako = __toESM(require_pako(), 1); +var import_pify = __toESM(require_pify(), 1); +var import_ignore = __toESM(require_ignore(), 1); +var import_clean_git_ref = __toESM(require_lib2(), 1); +var import_diff3 = __toESM(require_diff3(), 1); var BaseError = class extends Error { constructor(message) { super(message); @@ -9839,15 +15825,36 @@ var BaseError = class extends Error { return true; } }; +var UnmergedPathsError = class extends BaseError { + /** + * @param {Array} filepaths + */ + constructor(filepaths) { + super( + `Modifying the index is not possible because you have unmerged files: ${filepaths.toString}. Fix them up in the work tree, and then use 'git add/rm as appropriate to mark resolution and make a commit.` + ); + this.code = this.name = UnmergedPathsError.code; + this.data = { filepaths }; + } +}; +UnmergedPathsError.code = "UnmergedPathsError"; var InternalError = class extends BaseError { + /** + * @param {string} message + */ constructor(message) { - super(`An internal error caused this command to fail. Please file a bug report at https://github.com/isomorphic-git/isomorphic-git/issues with this error message: ${message}`); + super( + `An internal error caused this command to fail. Please file a bug report at https://github.com/isomorphic-git/isomorphic-git/issues with this error message: ${message}` + ); this.code = this.name = InternalError.code; this.data = { message }; } }; InternalError.code = "InternalError"; var UnsafeFilepathError = class extends BaseError { + /** + * @param {string} filepath + */ constructor(filepath) { super(`The filepath "${filepath}" contains unsafe character sequences`); this.code = this.name = UnsafeFilepathError.code; @@ -9954,8 +15961,18 @@ function SecondsNanoseconds(givenSeconds, givenNanoseconds, milliseconds, date) return [seconds, nanoseconds]; } function normalizeStats(e) { - const [ctimeSeconds, ctimeNanoseconds] = SecondsNanoseconds(e.ctimeSeconds, e.ctimeNanoseconds, e.ctimeMs, e.ctime); - const [mtimeSeconds, mtimeNanoseconds] = SecondsNanoseconds(e.mtimeSeconds, e.mtimeNanoseconds, e.mtimeMs, e.mtime); + const [ctimeSeconds, ctimeNanoseconds] = SecondsNanoseconds( + e.ctimeSeconds, + e.ctimeNanoseconds, + e.ctimeMs, + e.ctime + ); + const [mtimeSeconds, mtimeNanoseconds] = SecondsNanoseconds( + e.mtimeSeconds, + e.mtimeNanoseconds, + e.mtimeMs, + e.mtime + ); return { ctimeSeconds: ctimeSeconds % MAX_UINT32, ctimeNanoseconds: ctimeNanoseconds % MAX_UINT32, @@ -9966,6 +15983,8 @@ function normalizeStats(e) { mode: normalizeMode(e.mode % MAX_UINT32), uid: e.uid % MAX_UINT32, gid: e.gid % MAX_UINT32, + // size of -1 happens over a BrowserFS HTTP Backend that doesn't serve Content-Length headers + // (like the Karma webserver) because BrowserFS HTTP Backend uses HTTP HEAD requests to do fs.stat size: e.size > -1 ? e.size % MAX_UINT32 : 0 }; } @@ -10012,16 +16031,36 @@ function parseCacheEntryFlags(bits) { function renderCacheEntryFlags(entry) { const flags = entry.flags; flags.extended = false; - flags.nameLength = Math.min(Buffer2.from(entry.path).length, 4095); + flags.nameLength = Math.min(Buffer.from(entry.path).length, 4095); return (flags.assumeValid ? 32768 : 0) + (flags.extended ? 16384 : 0) + ((flags.stage & 3) << 12) + (flags.nameLength & 4095); } var GitIndex = class { - constructor(entries) { + /*:: + _entries: Map + _dirty: boolean // Used to determine if index needs to be saved to filesystem + */ + constructor(entries, unmergedPaths) { this._dirty = false; - this._entries = entries || new Map(); + this._unmergedPaths = unmergedPaths || /* @__PURE__ */ new Set(); + this._entries = entries || /* @__PURE__ */ new Map(); + } + _addEntry(entry) { + if (entry.flags.stage === 0) { + entry.stages = [entry]; + this._entries.set(entry.path, entry); + this._unmergedPaths.delete(entry.path); + } else { + let existingEntry = this._entries.get(entry.path); + if (!existingEntry) { + this._entries.set(entry.path, entry); + existingEntry = entry; + } + existingEntry.stages[entry.flags.stage] = entry; + this._unmergedPaths.add(entry.path); + } } static async from(buffer2) { - if (Buffer2.isBuffer(buffer2)) { + if (Buffer.isBuffer(buffer2)) { return GitIndex.fromBuffer(buffer2); } else if (buffer2 === null) { return new GitIndex(null); @@ -10033,10 +16072,12 @@ var GitIndex = class { const shaComputed = await shasum(buffer2.slice(0, -20)); const shaClaimed = buffer2.slice(-20).toString("hex"); if (shaClaimed !== shaComputed) { - throw new InternalError(`Invalid checksum in GitIndex buffer: expected ${shaClaimed} but saw ${shaComputed}`); + throw new InternalError( + `Invalid checksum in GitIndex buffer: expected ${shaClaimed} but saw ${shaComputed}` + ); } + const index2 = new GitIndex(); const reader = new BufferCursor(buffer2); - const _entries = new Map(); const magic = reader.toString("utf8", 4); if (magic !== "DIRC") { throw new InternalError(`Inavlid dircache magic file number: ${magic}`); @@ -10076,15 +16117,21 @@ var GitIndex = class { while (padding--) { const tmp = reader.readUInt8(); if (tmp !== 0) { - throw new InternalError(`Expected 1-8 null characters but got '${tmp}' after ${entry.path}`); + throw new InternalError( + `Expected 1-8 null characters but got '${tmp}' after ${entry.path}` + ); } else if (reader.eof()) { throw new InternalError("Unexpected end of file"); } } - _entries.set(entry.path, entry); + entry.stages = []; + index2._addEntry(entry); i++; } - return new GitIndex(_entries); + return index2; + } + get unmergedPaths() { + return [...this._unmergedPaths]; } get entries() { return [...this._entries.values()].sort(comparePath); @@ -10092,14 +16139,33 @@ var GitIndex = class { get entriesMap() { return this._entries; } + get entriesFlat() { + return [...this.entries].flatMap((entry) => { + return entry.stages.length > 1 ? entry.stages.filter((x) => x) : entry; + }); + } *[Symbol.iterator]() { for (const entry of this.entries) { yield entry; } } - insert({ filepath, stats, oid }) { + insert({ filepath, stats, oid, stage = 0 }) { + if (!stats) { + stats = { + ctimeSeconds: 0, + ctimeNanoseconds: 0, + mtimeSeconds: 0, + mtimeNanoseconds: 0, + dev: 0, + ino: 0, + mode: 0, + uid: 0, + gid: 0, + size: 0 + }; + } stats = normalizeStats(stats); - const bfilepath = Buffer2.from(filepath); + const bfilepath = Buffer.from(filepath); const entry = { ctimeSeconds: stats.ctimeSeconds, ctimeNanoseconds: stats.ctimeNanoseconds, @@ -10107,6 +16173,9 @@ var GitIndex = class { mtimeNanoseconds: stats.mtimeNanoseconds, dev: stats.dev, ino: stats.ino, + // We provide a fallback value for `mode` here because not all fs + // implementations assign it, but we use it in GitTree. + // '100644' is for a "regular non-executable file" mode: stats.mode || 33188, uid: stats.uid, gid: stats.gid, @@ -10116,11 +16185,12 @@ var GitIndex = class { flags: { assumeValid: false, extended: false, - stage: 0, + stage, nameLength: bfilepath.length < 4095 ? bfilepath.length : 4095 - } + }, + stages: [] }; - this._entries.set(entry.path, entry); + this._addEntry(entry); this._dirty = true; } delete({ filepath }) { @@ -10133,6 +16203,9 @@ var GitIndex = class { } } } + if (this._unmergedPaths.has(filepath)) { + this._unmergedPaths.delete(filepath); + } this._dirty = true; } clear() { @@ -10145,36 +16218,49 @@ var GitIndex = class { render() { return this.entries.map((entry) => `${entry.mode.toString(8)} ${entry.oid} ${entry.path}`).join("\n"); } + static async _entryToBuffer(entry) { + const bpath = Buffer.from(entry.path); + const length = Math.ceil((62 + bpath.length + 1) / 8) * 8; + const written = Buffer.alloc(length); + const writer = new BufferCursor(written); + const stat = normalizeStats(entry); + writer.writeUInt32BE(stat.ctimeSeconds); + writer.writeUInt32BE(stat.ctimeNanoseconds); + writer.writeUInt32BE(stat.mtimeSeconds); + writer.writeUInt32BE(stat.mtimeNanoseconds); + writer.writeUInt32BE(stat.dev); + writer.writeUInt32BE(stat.ino); + writer.writeUInt32BE(stat.mode); + writer.writeUInt32BE(stat.uid); + writer.writeUInt32BE(stat.gid); + writer.writeUInt32BE(stat.size); + writer.write(entry.oid, 20, "hex"); + writer.writeUInt16BE(renderCacheEntryFlags(entry)); + writer.write(entry.path, bpath.length, "utf8"); + return written; + } async toObject() { - const header = Buffer2.alloc(12); + const header = Buffer.alloc(12); const writer = new BufferCursor(header); writer.write("DIRC", 4, "utf8"); writer.writeUInt32BE(2); - writer.writeUInt32BE(this.entries.length); - const body = Buffer2.concat(this.entries.map((entry) => { - const bpath = Buffer2.from(entry.path); - const length = Math.ceil((62 + bpath.length + 1) / 8) * 8; - const written = Buffer2.alloc(length); - const writer2 = new BufferCursor(written); - const stat = normalizeStats(entry); - writer2.writeUInt32BE(stat.ctimeSeconds); - writer2.writeUInt32BE(stat.ctimeNanoseconds); - writer2.writeUInt32BE(stat.mtimeSeconds); - writer2.writeUInt32BE(stat.mtimeNanoseconds); - writer2.writeUInt32BE(stat.dev); - writer2.writeUInt32BE(stat.ino); - writer2.writeUInt32BE(stat.mode); - writer2.writeUInt32BE(stat.uid); - writer2.writeUInt32BE(stat.gid); - writer2.writeUInt32BE(stat.size); - writer2.write(entry.oid, 20, "hex"); - writer2.writeUInt16BE(renderCacheEntryFlags(entry)); - writer2.write(entry.path, bpath.length, "utf8"); - return written; - })); - const main = Buffer2.concat([header, body]); + writer.writeUInt32BE(this.entriesFlat.length); + let entryBuffers = []; + for (const entry of this.entries) { + entryBuffers.push(GitIndex._entryToBuffer(entry)); + if (entry.stages.length > 1) { + for (const stage of entry.stages) { + if (stage && stage !== entry) { + entryBuffers.push(GitIndex._entryToBuffer(stage)); + } + } + } + } + entryBuffers = await Promise.all(entryBuffers); + const body = Buffer.concat(entryBuffers); + const main = Buffer.concat([header, body]); const sum = await shasum(main); - return Buffer2.concat([main, Buffer2.from(sum, "hex")]); + return Buffer.concat([main, Buffer.from(sum, "hex")]); } }; function compareStats(entry, stats) { @@ -10187,8 +16273,8 @@ var lock = null; var IndexCache = Symbol("IndexCache"); function createCache() { return { - map: new Map(), - stats: new Map() + map: /* @__PURE__ */ new Map(), + stats: /* @__PURE__ */ new Map() }; } async function updateCachedIndexFile(fs, filepath, cache) { @@ -10210,18 +16296,31 @@ async function isIndexStale(fs, filepath, cache) { return compareStats(savedStats, currStats); } var GitIndexManager = class { - static async acquire({ fs, gitdir, cache }, closure) { + /** + * + * @param {object} opts + * @param {import('../models/FileSystem.js').FileSystem} opts.fs + * @param {string} opts.gitdir + * @param {object} opts.cache + * @param {bool} opts.allowUnmerged + * @param {function(GitIndex): any} closure + */ + static async acquire({ fs, gitdir, cache, allowUnmerged = true }, closure) { if (!cache[IndexCache]) cache[IndexCache] = createCache(); const filepath = `${gitdir}/index`; if (lock === null) lock = new import_async_lock.default({ maxPending: Infinity }); let result; + let unmergedPaths = []; await lock.acquire(filepath, async () => { if (await isIndexStale(fs, filepath, cache[IndexCache])) { await updateCachedIndexFile(fs, filepath, cache[IndexCache]); } const index2 = cache[IndexCache].map.get(filepath); + unmergedPaths = index2.unmergedPaths; + if (unmergedPaths.length && !allowUnmerged) + throw new UnmergedPathsError(unmergedPaths); result = await closure(index2); if (index2._dirty) { const buffer2 = await index2.toObject(); @@ -10249,7 +16348,7 @@ function dirname(path2) { return path2.slice(0, last2); } function flatFileListToDirectoryStructure(files) { - const inodes = new Map(); + const inodes = /* @__PURE__ */ new Map(); const mkdir = function(name) { if (!inodes.has(name)) { const dir = { @@ -10273,6 +16372,7 @@ function flatFileListToDirectoryStructure(files) { fullpath: name, basename: basename(name), metadata, + // This recursively generates any missing parent folders. parent: mkdir(dirname(name)), children: [] }; @@ -10305,9 +16405,12 @@ function mode2type(mode) { } var GitWalkerIndex = class { constructor({ fs, gitdir, cache }) { - this.treePromise = GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - return flatFileListToDirectoryStructure(index2.entries); - }); + this.treePromise = GitIndexManager.acquire( + { fs, gitdir, cache }, + async function(index2) { + return flatFileListToDirectoryStructure(index2.entries); + } + ); const walker = this; this.ConstructEntry = class StageEntry { constructor(fullpath) { @@ -10366,7 +16469,9 @@ var GitWalkerIndex = class { const tree = await this.treePromise; const inode = tree.get(entry._fullpath); if (!inode) { - throw new Error(`ENOENT: no such file or directory, lstat '${entry._fullpath}'`); + throw new Error( + `ENOENT: no such file or directory, lstat '${entry._fullpath}'` + ); } const stats = inode.type === "tree" ? {} : normalizeStats(inode.metadata); entry._type = inode.type === "tree" ? "tree" : mode2type(stats.mode); @@ -10392,7 +16497,7 @@ var GitWalkerIndex = class { }; var GitWalkSymbol = Symbol("GitWalkSymbol"); function STAGE() { - const o = Object.create(null); + const o = /* @__PURE__ */ Object.create(null); Object.defineProperty(o, GitWalkSymbol, { value: function({ fs, gitdir, cache }) { return new GitWalkerIndex({ fs, gitdir, cache }); @@ -10402,6 +16507,9 @@ function STAGE() { return o; } var NotFoundError = class extends BaseError { + /** + * @param {string} what + */ constructor(what) { super(`Could not find ${what}.`); this.code = this.name = NotFoundError.code; @@ -10410,14 +16518,25 @@ var NotFoundError = class extends BaseError { }; NotFoundError.code = "NotFoundError"; var ObjectTypeError = class extends BaseError { + /** + * @param {string} oid + * @param {'blob'|'commit'|'tag'|'tree'} actual + * @param {'blob'|'commit'|'tag'|'tree'} expected + * @param {string} [filepath] + */ constructor(oid, actual, expected, filepath) { - super(`Object ${oid} ${filepath ? `at ${filepath}` : ""}was anticipated to be a ${expected} but it is a ${actual}.`); + super( + `Object ${oid} ${filepath ? `at ${filepath}` : ""}was anticipated to be a ${expected} but it is a ${actual}.` + ); this.code = this.name = ObjectTypeError.code; this.data = { oid, actual, expected, filepath }; } }; ObjectTypeError.code = "ObjectTypeError"; var InvalidOidError = class extends BaseError { + /** + * @param {string} value + */ constructor(value) { super(`Expected a 40-char hex object id but saw "${value}".`); this.code = this.name = InvalidOidError.code; @@ -10426,6 +16545,9 @@ var InvalidOidError = class extends BaseError { }; InvalidOidError.code = "InvalidOidError"; var NoRefspecError = class extends BaseError { + /** + * @param {string} remote + */ constructor(remote) { super(`Could not find a fetch refspec for remote "${remote}". Make sure the config file has an entry like the following: [remote "${remote}"] @@ -10438,7 +16560,7 @@ var NoRefspecError = class extends BaseError { NoRefspecError.code = "NoRefspecError"; var GitPackedRefs = class { constructor(text2) { - this.refs = new Map(); + this.refs = /* @__PURE__ */ new Map(); this.parsedConfig = []; if (text2) { let key2 = null; @@ -10598,7 +16720,9 @@ var bool = (val) => { return true; if (val === "false" || val === "no" || val === "off") return false; - throw Error(`Expected 'true', 'false', 'yes', 'no', 'on', or 'off', but got ${val}`); + throw Error( + `Expected 'true', 'false', 'yes', 'no', 'on', or 'off', but got ${val}` + ); }; var schema = { core: { @@ -10725,7 +16849,9 @@ var GitConfig = class { return this.parsedConfig.filter((config) => config.section === section && config.isSection).map((config) => config.subsection); } async deleteSection(section, subsection) { - this.parsedConfig = this.parsedConfig.filter((config) => !(config.section === section && config.subsection === subsection)); + this.parsedConfig = this.parsedConfig.filter( + (config) => !(config.section === section && config.subsection === subsection) + ); } async append(path2, value) { return this.set(path2, value, true); @@ -10738,7 +16864,10 @@ var GitConfig = class { path: normalizedPath, sectionPath } = normalizePath$1(path2); - const configIndex = findLastIndex(this.parsedConfig, (config) => config.path === normalizedPath); + const configIndex = findLastIndex( + this.parsedConfig, + (config) => config.path === normalizedPath + ); if (value == null) { if (configIndex !== -1) { this.parsedConfig.splice(configIndex, 1); @@ -10757,7 +16886,9 @@ var GitConfig = class { this.parsedConfig[configIndex] = modifiedConfig; } } else { - const sectionIndex = this.parsedConfig.findIndex((config) => config.path === sectionPath); + const sectionIndex = this.parsedConfig.findIndex( + (config) => config.path === sectionPath + ); const newConfig = { section, subsection, @@ -10846,7 +16977,7 @@ var GitRefManager = class { refspecs.unshift(`+HEAD:refs/remotes/${remote}/HEAD`); } const refspec = GitRefSpecSet.from(refspecs); - const actualRefsToWrite = new Map(); + const actualRefsToWrite = /* @__PURE__ */ new Map(); if (pruneTags) { const tags2 = await GitRefManager.listRefs({ fs, @@ -10906,6 +17037,7 @@ var GitRefManager = class { } return { pruned }; } + // TODO: make this less crude? static async writeRef({ fs, gitdir, ref, value }) { if (!value.match(/[0-9a-f]{40}/)) { throw new InvalidOidError(value); @@ -10935,6 +17067,14 @@ var GitRefManager = class { await fs.write(`${gitdir}/packed-refs`, text2, { encoding: "utf8" }); } } + /** + * @param {object} args + * @param {import('../models/FileSystem.js').FileSystem} args.fs + * @param {string} args.gitdir + * @param {string} args.ref + * @param {number} [args.depth] + * @returns {Promise} + */ static async resolve({ fs, gitdir, ref, depth = void 0 }) { if (depth !== void 0) { depth--; @@ -11023,6 +17163,7 @@ var GitRefManager = class { const packed = GitPackedRefs.from(text2); return packed.refs; } + // List all the refs that match the `filepath` prefix static async listRefs({ fs, gitdir, filepath }) { const packedMap = GitRefManager.packedRefs({ fs, gitdir }); let files = null; @@ -11090,11 +17231,15 @@ function parseBuffer(buffer2) { while (cursor < buffer2.length) { const space2 = buffer2.indexOf(32, cursor); if (space2 === -1) { - throw new InternalError(`GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next space character.`); + throw new InternalError( + `GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next space character.` + ); } const nullchar = buffer2.indexOf(0, cursor); if (nullchar === -1) { - throw new InternalError(`GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next null character.`); + throw new InternalError( + `GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next null character.` + ); } let mode = buffer2.slice(cursor, space2).toString("utf8"); if (mode === "40000") @@ -11138,7 +17283,7 @@ function nudgeIntoShape(entry) { } var GitTree = class { constructor(entries) { - if (Buffer2.isBuffer(entries)) { + if (Buffer.isBuffer(entries)) { this._entries = parseBuffer(entries); } else if (Array.isArray(entries)) { this._entries = entries.map(nudgeIntoShape); @@ -11156,15 +17301,20 @@ var GitTree = class { toObject() { const entries = [...this._entries]; entries.sort(compareTreeEntryPath); - return Buffer2.concat(entries.map((entry) => { - const mode = Buffer2.from(entry.mode.replace(/^0/, "")); - const space2 = Buffer2.from(" "); - const path2 = Buffer2.from(entry.path, "utf8"); - const nullchar = Buffer2.from([0]); - const oid = Buffer2.from(entry.oid, "hex"); - return Buffer2.concat([mode, space2, path2, nullchar, oid]); - })); + return Buffer.concat( + entries.map((entry) => { + const mode = Buffer.from(entry.mode.replace(/^0/, "")); + const space2 = Buffer.from(" "); + const path2 = Buffer.from(entry.path, "utf8"); + const nullchar = Buffer.from([0]); + const oid = Buffer.from(entry.oid, "hex"); + return Buffer.concat([mode, space2, path2, nullchar, oid]); + }) + ); } + /** + * @returns {TreeEntry[]} + */ entries() { return this._entries; } @@ -11176,9 +17326,9 @@ var GitTree = class { }; var GitObject = class { static wrap({ type, object }) { - return Buffer2.concat([ - Buffer2.from(`${type} ${object.byteLength.toString()}\0`), - Buffer2.from(object) + return Buffer.concat([ + Buffer.from(`${type} ${object.byteLength.toString()}\0`), + Buffer.from(object) ]); } static unwrap(buffer2) { @@ -11188,11 +17338,13 @@ var GitObject = class { const length = buffer2.slice(s + 1, i).toString("utf8"); const actualLength = buffer2.length - (i + 1); if (parseInt(length) !== actualLength) { - throw new InternalError(`Length mismatch: expected ${length} bytes but got ${actualLength} instead.`); + throw new InternalError( + `Length mismatch: expected ${length} bytes but got ${actualLength} instead.` + ); } return { type, - object: Buffer2.from(buffer2.slice(i + 1)) + object: Buffer.from(buffer2.slice(i + 1)) }; } }; @@ -11208,7 +17360,9 @@ function applyDelta(delta, source) { const reader = new BufferCursor(delta); const sourceSize = readVarIntLE(reader); if (sourceSize !== source.byteLength) { - throw new InternalError(`applyDelta expected source buffer to be ${sourceSize} bytes but the provided buffer was ${source.length} bytes`); + throw new InternalError( + `applyDelta expected source buffer to be ${sourceSize} bytes but the provided buffer was ${source.length} bytes` + ); } const targetSize = readVarIntLE(reader); let target; @@ -11216,7 +17370,7 @@ function applyDelta(delta, source) { if (firstOp.byteLength === targetSize) { target = firstOp; } else { - target = Buffer2.alloc(targetSize); + target = Buffer.alloc(targetSize); const writer = new BufferCursor(target); writer.copy(firstOp); while (!reader.eof()) { @@ -11224,7 +17378,9 @@ function applyDelta(delta, source) { } const tell = writer.tell(); if (targetSize !== tell) { - throw new InternalError(`applyDelta expected target buffer to be ${targetSize} bytes but the resulting buffer was ${tell} bytes`); + throw new InternalError( + `applyDelta expected target buffer to be ${targetSize} bytes but the resulting buffer was ${tell} bytes` + ); } } return target; @@ -11369,7 +17525,7 @@ var StreamReader = class { this._ended = true; } if (value) { - value = Buffer2.from(value); + value = Buffer.from(value); } return value; } @@ -11396,7 +17552,7 @@ var StreamReader = class { break; buffers.push(nextbuffer); } - this.buffer = Buffer2.concat(buffers); + this.buffer = Buffer.concat(buffers); } async _loadnext() { this._discardedBytes += this.buffer.length; @@ -11441,7 +17597,9 @@ async function listpack(stream, onData) { } if (inflator.result) { if (inflator.result.length !== length) { - throw new InternalError(`Inflated object size is different from that stated in packfile.`); + throw new InternalError( + `Inflated object size is different from that stated in packfile.` + ); } await reader.undo(); await reader.read(chunk.length - inflator.strm.avail_in); @@ -11483,7 +17641,7 @@ async function parseHeader(reader) { shift += 7; bytes.push(byte); } while (byte & 128); - reference = Buffer2.from(bytes); + reference = Buffer.from(bytes); } if (type === 7) { const buf = await reader.read(20); @@ -11548,10 +17706,14 @@ var GitPackIndex = class { } const version2 = reader.readUInt32BE(); if (version2 !== 2) { - throw new InternalError(`Unable to read version ${version2} packfile IDX. (Only version 2 supported)`); + throw new InternalError( + `Unable to read version ${version2} packfile IDX. (Only version 2 supported)` + ); } if (idx.byteLength > 2048 * 1024 * 1024) { - throw new InternalError(`To keep implementation simple, I haven't implemented the layer 5 feature needed to support packfiles > 2GB in size.`); + throw new InternalError( + `To keep implementation simple, I haven't implemented the layer 5 feature needed to support packfiles > 2GB in size.` + ); } reader.seek(reader.tell() + 4 * 255); const size = reader.readUInt32BE(); @@ -11561,7 +17723,7 @@ var GitPackIndex = class { hashes[i] = hash2; } reader.seek(reader.tell() + 4 * size); - const offsets = new Map(); + const offsets = /* @__PURE__ */ new Map(); for (let i = 0; i < size; i++) { offsets.set(hashes[i], reader.readUInt32BE()); } @@ -11587,13 +17749,15 @@ var GitPackIndex = class { const packfileSha = pack.slice(-20).toString("hex"); const hashes = []; const crcs = {}; - const offsets = new Map(); + const offsets = /* @__PURE__ */ new Map(); let totalObjectCount = null; let lastPercent = null; await listpack([pack], async ({ data, type, reference, offset, num: num2 }) => { if (totalObjectCount === null) totalObjectCount = num2; - const percent = Math.floor((totalObjectCount - num2) * 100 / totalObjectCount); + const percent = Math.floor( + (totalObjectCount - num2) * 100 / totalObjectCount + ); if (percent !== lastPercent) { if (onProgress) { await onProgress({ @@ -11678,11 +17842,11 @@ var GitPackIndex = class { async toBuffer() { const buffers = []; const write = (str, encoding) => { - buffers.push(Buffer2.from(str, encoding)); + buffers.push(Buffer.from(str, encoding)); }; write("ff744f63", "hex"); write("00000002", "hex"); - const fanoutBuffer = new BufferCursor(Buffer2.alloc(256 * 4)); + const fanoutBuffer = new BufferCursor(Buffer.alloc(256 * 4)); for (let i = 0; i < 256; i++) { let count = 0; for (const hash2 of this.hashes) { @@ -11695,22 +17859,22 @@ var GitPackIndex = class { for (const hash2 of this.hashes) { write(hash2, "hex"); } - const crcsBuffer = new BufferCursor(Buffer2.alloc(this.hashes.length * 4)); + const crcsBuffer = new BufferCursor(Buffer.alloc(this.hashes.length * 4)); for (const hash2 of this.hashes) { crcsBuffer.writeUInt32BE(this.crcs[hash2]); } buffers.push(crcsBuffer.buffer); - const offsetsBuffer = new BufferCursor(Buffer2.alloc(this.hashes.length * 4)); + const offsetsBuffer = new BufferCursor(Buffer.alloc(this.hashes.length * 4)); for (const hash2 of this.hashes) { offsetsBuffer.writeUInt32BE(this.offsets.get(hash2)); } buffers.push(offsetsBuffer.buffer); write(this.packfileSha, "hex"); - const totalBuffer = Buffer2.concat(buffers); + const totalBuffer = Buffer.concat(buffers); const sha = await shasum(totalBuffer); - const shaBuffer = Buffer2.alloc(20); + const shaBuffer = Buffer.alloc(20); shaBuffer.write(sha, "hex"); - return Buffer2.concat([totalBuffer, shaBuffer]); + return Buffer.concat([totalBuffer, shaBuffer]); } async load({ pack }) { this.pack = pack; @@ -11744,7 +17908,9 @@ var GitPackIndex = class { 112: "ref_delta" }; if (!this.pack) { - throw new InternalError("Tried to read from a GitPackIndex with no packfile loaded into memory"); + throw new InternalError( + "Tried to read from a GitPackIndex with no packfile loaded into memory" + ); } const raw = (await this.pack).slice(start); const reader = new BufferCursor(raw); @@ -11772,12 +17938,14 @@ var GitPackIndex = class { ({ object: base, type } = await this.read({ oid })); } const buffer2 = raw.slice(reader.tell()); - object = Buffer2.from(await inflate(buffer2)); + object = Buffer.from(await inflate(buffer2)); if (object.byteLength !== length) { - throw new InternalError(`Packfile told us object would have length ${length} but it had length ${object.byteLength}`); + throw new InternalError( + `Packfile told us object would have length ${length} but it had length ${object.byteLength}` + ); } if (base) { - object = Buffer2.from(applyDelta(object, base)); + object = Buffer.from(applyDelta(object, base)); } if (this.readDepth > 3) { this.offsetCache[start] = { type, object }; @@ -11805,7 +17973,7 @@ function readPackIndex({ emitterPrefix }) { if (!cache[PackfileCache]) - cache[PackfileCache] = new Map(); + cache[PackfileCache] = /* @__PURE__ */ new Map(); let p = cache[PackfileCache].get(filename); if (!p) { p = loadPackIndex({ @@ -11862,7 +18030,7 @@ async function _readObject({ const getExternalRefDelta = (oid2) => _readObject({ fs, cache, gitdir, oid: oid2 }); let result; if (oid === "4b825dc642cb6eb9a060e54bf8d69288fbee4904") { - result = { format: "wrapped", object: Buffer2.from(`tree 0\0`) }; + result = { format: "wrapped", object: Buffer.from(`tree 0\0`) }; } if (!result) { result = await readObjectLoose({ fs, gitdir, oid }); @@ -11883,7 +18051,7 @@ async function _readObject({ return result; } if (result.format === "deflated") { - result.object = Buffer2.from(await inflate(result.object)); + result.object = Buffer.from(await inflate(result.object)); result.format = "wrapped"; } if (result.format === "wrapped") { @@ -11892,7 +18060,9 @@ async function _readObject({ } const sha = await shasum(result.object); if (sha !== oid) { - throw new InternalError(`SHA check failed! Expected ${oid}, computed ${sha}`); + throw new InternalError( + `SHA check failed! Expected ${oid}, computed ${sha}` + ); } const { object, type } = GitObject.unwrap(result.object); result.type = type; @@ -11907,32 +18077,61 @@ async function _readObject({ throw new InternalError(`invalid format "${result.format}"`); } var AlreadyExistsError = class extends BaseError { + /** + * @param {'note'|'remote'|'tag'|'branch'} noun + * @param {string} where + * @param {boolean} canForce + */ constructor(noun, where, canForce = true) { - super(`Failed to create ${noun} at ${where} because it already exists.${canForce ? ` (Hint: use 'force: true' parameter to overwrite existing ${noun}.)` : ""}`); + super( + `Failed to create ${noun} at ${where} because it already exists.${canForce ? ` (Hint: use 'force: true' parameter to overwrite existing ${noun}.)` : ""}` + ); this.code = this.name = AlreadyExistsError.code; this.data = { noun, where, canForce }; } }; AlreadyExistsError.code = "AlreadyExistsError"; var AmbiguousError = class extends BaseError { + /** + * @param {'oids'|'refs'} nouns + * @param {string} short + * @param {string[]} matches + */ constructor(nouns, short, matches) { - super(`Found multiple ${nouns} matching "${short}" (${matches.join(", ")}). Use a longer abbreviation length to disambiguate them.`); + super( + `Found multiple ${nouns} matching "${short}" (${matches.join( + ", " + )}). Use a longer abbreviation length to disambiguate them.` + ); this.code = this.name = AmbiguousError.code; this.data = { nouns, short, matches }; } }; AmbiguousError.code = "AmbiguousError"; var CheckoutConflictError = class extends BaseError { + /** + * @param {string[]} filepaths + */ constructor(filepaths) { - super(`Your local changes to the following files would be overwritten by checkout: ${filepaths.join(", ")}`); + super( + `Your local changes to the following files would be overwritten by checkout: ${filepaths.join( + ", " + )}` + ); this.code = this.name = CheckoutConflictError.code; this.data = { filepaths }; } }; CheckoutConflictError.code = "CheckoutConflictError"; var CommitNotFetchedError = class extends BaseError { + /** + * @param {string} ref + * @param {string} oid + */ constructor(ref, oid) { - super(`Failed to checkout "${ref}" because commit ${oid} is not available locally. Do a git fetch to make the branch available locally.`); + super( + `Failed to checkout "${ref}" because commit ${oid} is not available locally. Do a git fetch to make the branch available locally.` + ); this.code = this.name = CommitNotFetchedError.code; this.data = { ref, oid }; } @@ -11955,6 +18154,10 @@ var FastForwardError = class extends BaseError { }; FastForwardError.code = "FastForwardError"; var GitPushError = class extends BaseError { + /** + * @param {string} prettyDetails + * @param {PushResult} result + */ constructor(prettyDetails, result) { super(`One or more branches were not updated: ${prettyDetails}`); this.code = this.name = GitPushError.code; @@ -11963,6 +18166,11 @@ var GitPushError = class extends BaseError { }; GitPushError.code = "GitPushError"; var HttpError = class extends BaseError { + /** + * @param {number} statusCode + * @param {string} statusMessage + * @param {string} response + */ constructor(statusCode, statusMessage, response) { super(`HTTP Error: ${statusCode} ${statusMessage}`); this.code = this.name = HttpError.code; @@ -11971,6 +18179,9 @@ var HttpError = class extends BaseError { }; HttpError.code = "HttpError"; var InvalidFilepathError = class extends BaseError { + /** + * @param {'leading-slash'|'trailing-slash'|'directory'} [reason] + */ constructor(reason) { let message = "invalid filepath"; if (reason === "leading-slash" || reason === "trailing-slash") { @@ -11985,14 +18196,24 @@ var InvalidFilepathError = class extends BaseError { }; InvalidFilepathError.code = "InvalidFilepathError"; var InvalidRefNameError = class extends BaseError { + /** + * @param {string} ref + * @param {string} suggestion + * @param {boolean} canForce + */ constructor(ref, suggestion) { - super(`"${ref}" would be an invalid git reference. (Hint: a valid alternative would be "${suggestion}".)`); + super( + `"${ref}" would be an invalid git reference. (Hint: a valid alternative would be "${suggestion}".)` + ); this.code = this.name = InvalidRefNameError.code; this.data = { ref, suggestion }; } }; InvalidRefNameError.code = "InvalidRefNameError"; var MaxDepthError = class extends BaseError { + /** + * @param {number} depth + */ constructor(depth) { super(`Maximum search depth of ${depth} exceeded.`); this.code = this.name = MaxDepthError.code; @@ -12009,32 +18230,53 @@ var MergeNotSupportedError = class extends BaseError { }; MergeNotSupportedError.code = "MergeNotSupportedError"; var MergeConflictError = class extends BaseError { + /** + * @param {Array} filepaths + */ constructor(filepaths) { - super(`Automatic merge failed with one or more merge conflicts in the following files: ${filepaths.toString()}. Fix conflicts then commit the result.`); + super( + `Automatic merge failed with one or more merge conflicts in the following files: ${filepaths.toString()}. Fix conflicts then commit the result.` + ); this.code = this.name = MergeConflictError.code; this.data = { filepaths }; } }; MergeConflictError.code = "MergeConflictError"; var MissingNameError = class extends BaseError { + /** + * @param {'author'|'committer'|'tagger'} role + */ constructor(role) { - super(`No name was provided for ${role} in the argument or in the .git/config file.`); + super( + `No name was provided for ${role} in the argument or in the .git/config file.` + ); this.code = this.name = MissingNameError.code; this.data = { role }; } }; MissingNameError.code = "MissingNameError"; var MissingParameterError = class extends BaseError { + /** + * @param {string} parameter + */ constructor(parameter) { - super(`The function requires a "${parameter}" parameter but none was provided.`); + super( + `The function requires a "${parameter}" parameter but none was provided.` + ); this.code = this.name = MissingParameterError.code; this.data = { parameter }; } }; MissingParameterError.code = "MissingParameterError"; var MultipleGitError = class extends BaseError { + /** + * @param {Error[]} errors + * @param {string} message + */ constructor(errors) { - super(`There are multiple errors that were thrown by the method. Please refer to the "errors" property to see more`); + super( + `There are multiple errors that were thrown by the method. Please refer to the "errors" property to see more` + ); this.code = this.name = MultipleGitError.code; this.data = { errors }; this.errors = errors; @@ -12042,6 +18284,10 @@ var MultipleGitError = class extends BaseError { }; MultipleGitError.code = "MultipleGitError"; var ParseError = class extends BaseError { + /** + * @param {string} expected + * @param {string} actual + */ constructor(expected, actual) { super(`Expected "${expected}" but received "${actual}".`); this.code = this.name = ParseError.code; @@ -12050,6 +18296,9 @@ var ParseError = class extends BaseError { }; ParseError.code = "ParseError"; var PushRejectedError = class extends BaseError { + /** + * @param {'not-fast-forward'|'tag-exists'} reason + */ constructor(reason) { let message = ""; if (reason === "not-fast-forward") { @@ -12064,30 +18313,52 @@ var PushRejectedError = class extends BaseError { }; PushRejectedError.code = "PushRejectedError"; var RemoteCapabilityError = class extends BaseError { + /** + * @param {'shallow'|'deepen-since'|'deepen-not'|'deepen-relative'} capability + * @param {'depth'|'since'|'exclude'|'relative'} parameter + */ constructor(capability, parameter) { - super(`Remote does not support the "${capability}" so the "${parameter}" parameter cannot be used.`); + super( + `Remote does not support the "${capability}" so the "${parameter}" parameter cannot be used.` + ); this.code = this.name = RemoteCapabilityError.code; this.data = { capability, parameter }; } }; RemoteCapabilityError.code = "RemoteCapabilityError"; var SmartHttpError = class extends BaseError { + /** + * @param {string} preview + * @param {string} response + */ constructor(preview, response) { - super(`Remote did not reply using the "smart" HTTP protocol. Expected "001e# service=git-upload-pack" but received: ${preview}`); + super( + `Remote did not reply using the "smart" HTTP protocol. Expected "001e# service=git-upload-pack" but received: ${preview}` + ); this.code = this.name = SmartHttpError.code; this.data = { preview, response }; } }; SmartHttpError.code = "SmartHttpError"; var UnknownTransportError = class extends BaseError { + /** + * @param {string} url + * @param {string} transport + * @param {string} [suggestion] + */ constructor(url, transport, suggestion) { - super(`Git remote "${url}" uses an unrecognized transport protocol: "${transport}"`); + super( + `Git remote "${url}" uses an unrecognized transport protocol: "${transport}"` + ); this.code = this.name = UnknownTransportError.code; this.data = { url, transport, suggestion }; } }; UnknownTransportError.code = "UnknownTransportError"; var UrlParseError = class extends BaseError { + /** + * @param {string} url + */ constructor(url) { super(`Cannot parse remote URL: "${url}"`); this.code = this.name = UrlParseError.code; @@ -12103,6 +18374,19 @@ var UserCanceledError = class extends BaseError { } }; UserCanceledError.code = "UserCanceledError"; +var IndexResetError = class extends BaseError { + /** + * @param {Array} filepaths + */ + constructor(filepath) { + super( + `Could not merge index: Entry for '${filepath}' is not up to date. Either reset the index entry to HEAD, or stage your unstaged chages.` + ); + this.code = this.name = IndexResetError.code; + this.data = { filepath }; + } +}; +IndexResetError.code = "IndexResetError"; var Errors = /* @__PURE__ */ Object.freeze({ __proto__: null, AlreadyExistsError, @@ -12133,7 +18417,9 @@ var Errors = /* @__PURE__ */ Object.freeze({ UnknownTransportError, UnsafeFilepathError, UrlParseError, - UserCanceledError + UserCanceledError, + UnmergedPathsError, + IndexResetError }); function formatAuthor({ name, email, timestamp, timezoneOffset }) { timezoneOffset = formatTimezoneOffset(timezoneOffset); @@ -12165,7 +18451,9 @@ function normalizeNewlines(str) { return str; } function parseAuthor(author) { - const [, name, email, timestamp, offset] = author.match(/^(.*) <(.*)> (.*) (.*)$/); + const [, name, email, timestamp, offset] = author.match( + /^(.*) <(.*)> (.*) (.*)$/ + ); return { name, email, @@ -12185,12 +18473,14 @@ var GitAnnotatedTag = class { constructor(tag2) { if (typeof tag2 === "string") { this._tag = tag2; - } else if (Buffer2.isBuffer(tag2)) { + } else if (Buffer.isBuffer(tag2)) { this._tag = tag2.toString("utf8"); } else if (typeof tag2 === "object") { this._tag = GitAnnotatedTag.render(tag2); } else { - throw new InternalError("invalid type passed to GitAnnotatedTag constructor"); + throw new InternalError( + "invalid type passed to GitAnnotatedTag constructor" + ); } } static from(tag2) { @@ -12258,14 +18548,17 @@ ${obj.gpgsig ? obj.gpgsig : ""}`; gpgsig() { if (this._tag.indexOf("\n-----BEGIN PGP SIGNATURE-----") === -1) return; - const signature = this._tag.slice(this._tag.indexOf("-----BEGIN PGP SIGNATURE-----"), this._tag.indexOf("-----END PGP SIGNATURE-----") + "-----END PGP SIGNATURE-----".length); + const signature = this._tag.slice( + this._tag.indexOf("-----BEGIN PGP SIGNATURE-----"), + this._tag.indexOf("-----END PGP SIGNATURE-----") + "-----END PGP SIGNATURE-----".length + ); return normalizeNewlines(signature); } payload() { return this.withoutSignature() + "\n"; } toObject() { - return Buffer2.from(this._tag, "utf8"); + return Buffer.from(this._tag, "utf8"); } static async sign(tag2, sign, secretKey) { const payload = tag2.payload(); @@ -12285,7 +18578,7 @@ var GitCommit = class { constructor(commit2) { if (typeof commit2 === "string") { this._commit = commit2; - } else if (Buffer2.isBuffer(commit2)) { + } else if (Buffer.isBuffer(commit2)) { this._commit = commit2.toString("utf8"); } else if (typeof commit2 === "object") { this._commit = GitCommit.render(commit2); @@ -12296,18 +18589,22 @@ var GitCommit = class { static fromPayloadSignature({ payload, signature }) { const headers = GitCommit.justHeaders(payload); const message = GitCommit.justMessage(payload); - const commit2 = normalizeNewlines(headers + "\ngpgsig" + indent(signature) + "\n" + message); + const commit2 = normalizeNewlines( + headers + "\ngpgsig" + indent(signature) + "\n" + message + ); return new GitCommit(commit2); } static from(commit2) { return new GitCommit(commit2); } toObject() { - return Buffer2.from(this._commit, "utf8"); + return Buffer.from(this._commit, "utf8"); } + // Todo: allow setting the headers and message headers() { return this.parseHeaders(); } + // Todo: allow setting the headers and message message() { return GitCommit.justMessage(this._commit); } @@ -12390,11 +18687,16 @@ var GitCommit = class { if (commit2.indexOf("\ngpgsig") === -1) return commit2; const headers = commit2.slice(0, commit2.indexOf("\ngpgsig")); - const message = commit2.slice(commit2.indexOf("-----END PGP SIGNATURE-----\n") + "-----END PGP SIGNATURE-----\n".length); + const message = commit2.slice( + commit2.indexOf("-----END PGP SIGNATURE-----\n") + "-----END PGP SIGNATURE-----\n".length + ); return normalizeNewlines(headers + "\n" + message); } isolateSignature() { - const signature = this._commit.slice(this._commit.indexOf("-----BEGIN PGP SIGNATURE-----"), this._commit.indexOf("-----END PGP SIGNATURE-----") + "-----END PGP SIGNATURE-----".length); + const signature = this._commit.slice( + this._commit.indexOf("-----BEGIN PGP SIGNATURE-----"), + this._commit.indexOf("-----END PGP SIGNATURE-----") + "-----END PGP SIGNATURE-----".length + ); return outdent(signature); } static async sign(commit2, sign, secretKey) { @@ -12431,7 +18733,7 @@ var GitWalkerRepo = class { this.cache = cache; this.gitdir = gitdir; this.mapPromise = (async () => { - const map = new Map(); + const map = /* @__PURE__ */ new Map(); let oid; try { oid = await GitRefManager.resolve({ fs, gitdir, ref }); @@ -12539,7 +18841,7 @@ var GitWalkerRepo = class { } }; function TREE({ ref = "HEAD" } = {}) { - const o = Object.create(null); + const o = /* @__PURE__ */ Object.create(null); Object.defineProperty(o, GitWalkSymbol, { value: function({ fs, gitdir, cache }) { return new GitWalkerRepo({ fs, gitdir, ref, cache }); @@ -12606,7 +18908,9 @@ var GitWalkerFs = class { const { fs, dir } = this; let stat = await fs.lstat(`${dir}/${entry._fullpath}`); if (!stat) { - throw new Error(`ENOENT: no such file or directory, lstat '${entry._fullpath}'`); + throw new Error( + `ENOENT: no such file or directory, lstat '${entry._fullpath}'` + ); } let type = stat.isDirectory() ? "tree" : "blob"; if (type === "blob" && !stat.isFile() && !stat.isSymbolicLink()) { @@ -12650,7 +18954,9 @@ var GitWalkerFs = class { if (content === void 0) { oid = void 0; } else { - oid = await shasum(GitObject.wrap({ type: "blob", object: await entry.content() })); + oid = await shasum( + GitObject.wrap({ type: "blob", object: await entry.content() }) + ); if (stage && oid === stage.oid && stats.mode === stage.mode && compareStats(stats, stage)) { index2.insert({ filepath: entry._fullpath, @@ -12669,7 +18975,7 @@ var GitWalkerFs = class { } }; function WORKDIR() { - const o = Object.create(null); + const o = /* @__PURE__ */ Object.create(null); Object.defineProperty(o, GitWalkSymbol, { value: function({ fs, dir, gitdir, cache }) { return new GitWalkerFs({ fs, dir, gitdir, cache }); @@ -12678,6 +18984,427 @@ function WORKDIR() { Object.freeze(o); return o; } +function arrayRange(start, end) { + const length = end - start; + return Array.from({ length }, (_, i) => start + i); +} +var flat = typeof Array.prototype.flat === "undefined" ? (entries) => entries.reduce((acc, x) => acc.concat(x), []) : (entries) => entries.flat(); +var RunningMinimum = class { + constructor() { + this.value = null; + } + consider(value) { + if (value === null || value === void 0) + return; + if (this.value === null) { + this.value = value; + } else if (value < this.value) { + this.value = value; + } + } + reset() { + this.value = null; + } +}; +function* unionOfIterators(sets) { + const min = new RunningMinimum(); + let minimum; + const heads = []; + const numsets = sets.length; + for (let i = 0; i < numsets; i++) { + heads[i] = sets[i].next().value; + if (heads[i] !== void 0) { + min.consider(heads[i]); + } + } + if (min.value === null) + return; + while (true) { + const result = []; + minimum = min.value; + min.reset(); + for (let i = 0; i < numsets; i++) { + if (heads[i] !== void 0 && heads[i] === minimum) { + result[i] = heads[i]; + heads[i] = sets[i].next().value; + } else { + result[i] = null; + } + if (heads[i] !== void 0) { + min.consider(heads[i]); + } + } + yield result; + if (min.value === null) + return; + } +} +async function _walk({ + fs, + cache, + dir, + gitdir, + trees, + // @ts-ignore + map = async (_, entry) => entry, + // The default reducer is a flatmap that filters out undefineds. + reduce = async (parent, children2) => { + const flatten = flat(children2); + if (parent !== void 0) + flatten.unshift(parent); + return flatten; + }, + // The default iterate function walks all children concurrently + iterate = (walk2, children2) => Promise.all([...children2].map(walk2)) +}) { + const walkers = trees.map( + (proxy) => proxy[GitWalkSymbol]({ fs, dir, gitdir, cache }) + ); + const root2 = new Array(walkers.length).fill("."); + const range = arrayRange(0, walkers.length); + const unionWalkerFromReaddir = async (entries) => { + range.map((i) => { + entries[i] = entries[i] && new walkers[i].ConstructEntry(entries[i]); + }); + const subdirs = await Promise.all( + range.map((i) => entries[i] ? walkers[i].readdir(entries[i]) : []) + ); + const iterators = subdirs.map((array) => array === null ? [] : array).map((array) => array[Symbol.iterator]()); + return { + entries, + children: unionOfIterators(iterators) + }; + }; + const walk2 = async (root3) => { + const { entries, children: children2 } = await unionWalkerFromReaddir(root3); + const fullpath = entries.find((entry) => entry && entry._fullpath)._fullpath; + const parent = await map(fullpath, entries); + if (parent !== null) { + let walkedChildren = await iterate(walk2, children2); + walkedChildren = walkedChildren.filter((x) => x !== void 0); + return reduce(parent, walkedChildren); + } + }; + return walk2(root2); +} +async function rmRecursive(fs, filepath) { + const entries = await fs.readdir(filepath); + if (entries == null) { + await fs.rm(filepath); + } else if (entries.length) { + await Promise.all( + entries.map((entry) => { + const subpath = join(filepath, entry); + return fs.lstat(subpath).then((stat) => { + if (!stat) + return; + return stat.isDirectory() ? rmRecursive(fs, subpath) : fs.rm(subpath); + }); + }) + ).then(() => fs.rmdir(filepath)); + } else { + await fs.rmdir(filepath); + } +} +var FileSystem = class { + constructor(fs) { + if (typeof fs._original_unwrapped_fs !== "undefined") + return fs; + const promises = Object.getOwnPropertyDescriptor(fs, "promises"); + if (promises && promises.enumerable) { + this._readFile = fs.promises.readFile.bind(fs.promises); + this._writeFile = fs.promises.writeFile.bind(fs.promises); + this._mkdir = fs.promises.mkdir.bind(fs.promises); + if (fs.promises.rm) { + this._rm = fs.promises.rm.bind(fs.promises); + } else if (fs.promises.rmdir.length > 1) { + this._rm = fs.promises.rmdir.bind(fs.promises); + } else { + this._rm = rmRecursive.bind(null, this); + } + this._rmdir = fs.promises.rmdir.bind(fs.promises); + this._unlink = fs.promises.unlink.bind(fs.promises); + this._stat = fs.promises.stat.bind(fs.promises); + this._lstat = fs.promises.lstat.bind(fs.promises); + this._readdir = fs.promises.readdir.bind(fs.promises); + this._readlink = fs.promises.readlink.bind(fs.promises); + this._symlink = fs.promises.symlink.bind(fs.promises); + } else { + this._readFile = (0, import_pify.default)(fs.readFile.bind(fs)); + this._writeFile = (0, import_pify.default)(fs.writeFile.bind(fs)); + this._mkdir = (0, import_pify.default)(fs.mkdir.bind(fs)); + if (fs.rm) { + this._rm = (0, import_pify.default)(fs.rm.bind(fs)); + } else if (fs.rmdir.length > 2) { + this._rm = (0, import_pify.default)(fs.rmdir.bind(fs)); + } else { + this._rm = rmRecursive.bind(null, this); + } + this._rmdir = (0, import_pify.default)(fs.rmdir.bind(fs)); + this._unlink = (0, import_pify.default)(fs.unlink.bind(fs)); + this._stat = (0, import_pify.default)(fs.stat.bind(fs)); + this._lstat = (0, import_pify.default)(fs.lstat.bind(fs)); + this._readdir = (0, import_pify.default)(fs.readdir.bind(fs)); + this._readlink = (0, import_pify.default)(fs.readlink.bind(fs)); + this._symlink = (0, import_pify.default)(fs.symlink.bind(fs)); + } + this._original_unwrapped_fs = fs; + } + /** + * Return true if a file exists, false if it doesn't exist. + * Rethrows errors that aren't related to file existance. + */ + async exists(filepath, options = {}) { + try { + await this._stat(filepath); + return true; + } catch (err) { + if (err.code === "ENOENT" || err.code === "ENOTDIR") { + return false; + } else { + console.log('Unhandled error in "FileSystem.exists()" function', err); + throw err; + } + } + } + /** + * Return the contents of a file if it exists, otherwise returns null. + * + * @param {string} filepath + * @param {object} [options] + * + * @returns {Promise} + */ + async read(filepath, options = {}) { + try { + let buffer2 = await this._readFile(filepath, options); + if (typeof buffer2 !== "string") { + buffer2 = Buffer.from(buffer2); + } + return buffer2; + } catch (err) { + return null; + } + } + /** + * Write a file (creating missing directories if need be) without throwing errors. + * + * @param {string} filepath + * @param {Buffer|Uint8Array|string} contents + * @param {object|string} [options] + */ + async write(filepath, contents, options = {}) { + try { + await this._writeFile(filepath, contents, options); + return; + } catch (err) { + await this.mkdir(dirname(filepath)); + await this._writeFile(filepath, contents, options); + } + } + /** + * Make a directory (or series of nested directories) without throwing an error if it already exists. + */ + async mkdir(filepath, _selfCall = false) { + try { + await this._mkdir(filepath); + return; + } catch (err) { + if (err === null) + return; + if (err.code === "EEXIST") + return; + if (_selfCall) + throw err; + if (err.code === "ENOENT") { + const parent = dirname(filepath); + if (parent === "." || parent === "/" || parent === filepath) + throw err; + await this.mkdir(parent); + await this.mkdir(filepath, true); + } + } + } + /** + * Delete a file without throwing an error if it is already deleted. + */ + async rm(filepath) { + try { + await this._unlink(filepath); + } catch (err) { + if (err.code !== "ENOENT") + throw err; + } + } + /** + * Delete a directory without throwing an error if it is already deleted. + */ + async rmdir(filepath, opts) { + try { + if (opts && opts.recursive) { + await this._rm(filepath, opts); + } else { + await this._rmdir(filepath); + } + } catch (err) { + if (err.code !== "ENOENT") + throw err; + } + } + /** + * Read a directory without throwing an error is the directory doesn't exist + */ + async readdir(filepath) { + try { + const names = await this._readdir(filepath); + names.sort(compareStrings); + return names; + } catch (err) { + if (err.code === "ENOTDIR") + return null; + return []; + } + } + /** + * Return a flast list of all the files nested inside a directory + * + * Based on an elegant concurrent recursive solution from SO + * https://stackoverflow.com/a/45130990/2168416 + */ + async readdirDeep(dir) { + const subdirs = await this._readdir(dir); + const files = await Promise.all( + subdirs.map(async (subdir) => { + const res = dir + "/" + subdir; + return (await this._stat(res)).isDirectory() ? this.readdirDeep(res) : res; + }) + ); + return files.reduce((a, f) => a.concat(f), []); + } + /** + * Return the Stats of a file/symlink if it exists, otherwise returns null. + * Rethrows errors that aren't related to file existance. + */ + async lstat(filename) { + try { + const stats = await this._lstat(filename); + return stats; + } catch (err) { + if (err.code === "ENOENT") { + return null; + } + throw err; + } + } + /** + * Reads the contents of a symlink if it exists, otherwise returns null. + * Rethrows errors that aren't related to file existance. + */ + async readlink(filename, opts = { encoding: "buffer" }) { + try { + const link = await this._readlink(filename, opts); + return Buffer.isBuffer(link) ? link : Buffer.from(link); + } catch (err) { + if (err.code === "ENOENT") { + return null; + } + throw err; + } + } + /** + * Write the contents of buffer to a symlink. + */ + async writelink(filename, buffer2) { + return this._symlink(buffer2.toString("utf8"), filename); + } +}; +function assertParameter(name, value) { + if (value === void 0) { + throw new MissingParameterError(name); + } +} +async function modified(entry, base) { + if (!entry && !base) + return false; + if (entry && !base) + return true; + if (!entry && base) + return true; + if (await entry.type() === "tree" && await base.type() === "tree") { + return false; + } + if (await entry.type() === await base.type() && await entry.mode() === await base.mode() && await entry.oid() === await base.oid()) { + return false; + } + return true; +} +async function abortMerge({ + fs: _fs, + dir, + gitdir = join(dir, ".git"), + commit: commit2 = "HEAD", + cache = {} +}) { + try { + assertParameter("fs", _fs); + assertParameter("dir", dir); + assertParameter("gitdir", gitdir); + const fs = new FileSystem(_fs); + const trees = [TREE({ ref: commit2 }), WORKDIR(), STAGE()]; + let unmergedPaths = []; + await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { + unmergedPaths = index2.unmergedPaths; + }); + const results = await _walk({ + fs, + cache, + dir, + gitdir, + trees, + map: async function(path2, [head, workdir, index2]) { + const staged = !await modified(workdir, index2); + const unmerged = unmergedPaths.includes(path2); + const unmodified = !await modified(index2, head); + if (staged || unmerged) { + return head ? { + path: path2, + mode: await head.mode(), + oid: await head.oid(), + type: await head.type(), + content: await head.content() + } : void 0; + } + if (unmodified) + return false; + else + throw new IndexResetError(path2); + } + }); + await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { + for (const entry of results) { + if (entry === false) + continue; + if (!entry) { + await fs.rmdir(`${dir}/${entry.path}`, { recursive: true }); + index2.delete({ filepath: entry.path }); + continue; + } + if (entry.type === "blob") { + const content = new TextDecoder().decode(entry.content); + await fs.write(`${dir}/${entry.path}`, content, { mode: entry.mode }); + index2.insert({ + filepath: entry.path, + oid: entry.oid, + stage: 0 + }); + } + } + }); + } catch (err) { + err.caller = "git.abortMerge"; + throw err; + } +} var GitIgnoreManager = class { static async isIgnored({ fs, dir, gitdir = join(dir, ".git"), filepath }) { if (basename(filepath) === ".git") @@ -12727,188 +19454,11 @@ var GitIgnoreManager = class { return ignoredStatus; } }; -async function rmRecursive(fs, filepath) { - const entries = await fs.readdir(filepath); - if (entries == null) { - await fs.rm(filepath); - } else if (entries.length) { - await Promise.all(entries.map((entry) => { - const subpath = join(filepath, entry); - return fs.lstat(subpath).then((stat) => { - if (!stat) - return; - return stat.isDirectory() ? rmRecursive(fs, subpath) : fs.rm(subpath); - }); - })).then(() => fs.rmdir(filepath)); - } else { - await fs.rmdir(filepath); - } -} -var FileSystem = class { - constructor(fs) { - if (typeof fs._original_unwrapped_fs !== "undefined") - return fs; - const promises = Object.getOwnPropertyDescriptor(fs, "promises"); - if (promises && promises.enumerable) { - this._readFile = fs.promises.readFile.bind(fs.promises); - this._writeFile = fs.promises.writeFile.bind(fs.promises); - this._mkdir = fs.promises.mkdir.bind(fs.promises); - if (fs.promises.rm) { - this._rm = fs.promises.rm.bind(fs.promises); - } else if (fs.promises.rmdir.length > 1) { - this._rm = fs.promises.rmdir.bind(fs.promises); - } else { - this._rm = rmRecursive.bind(null, this); - } - this._rmdir = fs.promises.rmdir.bind(fs.promises); - this._unlink = fs.promises.unlink.bind(fs.promises); - this._stat = fs.promises.stat.bind(fs.promises); - this._lstat = fs.promises.lstat.bind(fs.promises); - this._readdir = fs.promises.readdir.bind(fs.promises); - this._readlink = fs.promises.readlink.bind(fs.promises); - this._symlink = fs.promises.symlink.bind(fs.promises); - } else { - this._readFile = (0, import_pify.default)(fs.readFile.bind(fs)); - this._writeFile = (0, import_pify.default)(fs.writeFile.bind(fs)); - this._mkdir = (0, import_pify.default)(fs.mkdir.bind(fs)); - if (fs.rm) { - this._rm = (0, import_pify.default)(fs.rm.bind(fs)); - } else if (fs.rmdir.length > 2) { - this._rm = (0, import_pify.default)(fs.rmdir.bind(fs)); - } else { - this._rm = rmRecursive.bind(null, this); - } - this._rmdir = (0, import_pify.default)(fs.rmdir.bind(fs)); - this._unlink = (0, import_pify.default)(fs.unlink.bind(fs)); - this._stat = (0, import_pify.default)(fs.stat.bind(fs)); - this._lstat = (0, import_pify.default)(fs.lstat.bind(fs)); - this._readdir = (0, import_pify.default)(fs.readdir.bind(fs)); - this._readlink = (0, import_pify.default)(fs.readlink.bind(fs)); - this._symlink = (0, import_pify.default)(fs.symlink.bind(fs)); - } - this._original_unwrapped_fs = fs; - } - async exists(filepath, options = {}) { - try { - await this._stat(filepath); - return true; - } catch (err) { - if (err.code === "ENOENT" || err.code === "ENOTDIR") { - return false; - } else { - console.log('Unhandled error in "FileSystem.exists()" function', err); - throw err; - } - } - } - async read(filepath, options = {}) { - try { - let buffer2 = await this._readFile(filepath, options); - if (typeof buffer2 !== "string") { - buffer2 = Buffer2.from(buffer2); - } - return buffer2; - } catch (err) { - return null; - } - } - async write(filepath, contents, options = {}) { - try { - await this._writeFile(filepath, contents, options); - return; - } catch (err) { - await this.mkdir(dirname(filepath)); - await this._writeFile(filepath, contents, options); - } - } - async mkdir(filepath, _selfCall = false) { - try { - await this._mkdir(filepath); - return; - } catch (err) { - if (err === null) - return; - if (err.code === "EEXIST") - return; - if (_selfCall) - throw err; - if (err.code === "ENOENT") { - const parent = dirname(filepath); - if (parent === "." || parent === "/" || parent === filepath) - throw err; - await this.mkdir(parent); - await this.mkdir(filepath, true); - } - } - } - async rm(filepath) { - try { - await this._unlink(filepath); - } catch (err) { - if (err.code !== "ENOENT") - throw err; - } - } - async rmdir(filepath, opts) { - try { - if (opts && opts.recursive) { - await this._rm(filepath, opts); - } else { - await this._rmdir(filepath); - } - } catch (err) { - if (err.code !== "ENOENT") - throw err; - } - } - async readdir(filepath) { - try { - const names = await this._readdir(filepath); - names.sort(compareStrings); - return names; - } catch (err) { - if (err.code === "ENOTDIR") - return null; - return []; - } - } - async readdirDeep(dir) { - const subdirs = await this._readdir(dir); - const files = await Promise.all(subdirs.map(async (subdir) => { - const res = dir + "/" + subdir; - return (await this._stat(res)).isDirectory() ? this.readdirDeep(res) : res; - })); - return files.reduce((a, f) => a.concat(f), []); - } - async lstat(filename) { - try { - const stats = await this._lstat(filename); - return stats; - } catch (err) { - if (err.code === "ENOENT") { - return null; - } - throw err; - } - } - async readlink(filename, opts = { encoding: "buffer" }) { - try { - const link = await this._readlink(filename, opts); - return Buffer2.isBuffer(link) ? link : Buffer2.from(link); - } catch (err) { - if (err.code === "ENOENT") { - return null; - } - throw err; - } - } - async writelink(filename, buffer2) { - return this._symlink(buffer2.toString("utf8"), filename); - } -}; async function writeObjectLoose({ fs, gitdir, object, format, oid }) { if (format !== "deflated") { - throw new InternalError("GitObjectStoreLoose expects objects to write to be in deflated format"); + throw new InternalError( + "GitObjectStoreLoose expects objects to write to be in deflated format" + ); } const source = `objects/${oid.slice(0, 2)}/${oid.slice(2)}`; const filepath = `${gitdir}/${source}`; @@ -12951,18 +19501,13 @@ async function _writeObject({ object = GitObject.wrap({ type, object }); } oid = await shasum(object); - object = Buffer2.from(await deflate(object)); + object = Buffer.from(await deflate(object)); } if (!dryRun) { await writeObjectLoose({ fs, gitdir, object, format: "deflated", oid }); } return oid; } -function assertParameter(name, value) { - if (value === void 0) { - throw new MissingParameterError(name); - } -} function posixifyPathBuffer(buffer2) { let idx; while (~(idx = buffer2.indexOf(92))) @@ -13009,14 +19554,16 @@ async function addToIndex({ dir, gitdir, fs, filepath, index: index2, force }) { throw new NotFoundError(currentFilepath); if (stats.isDirectory()) { const children2 = await fs.readdir(join(dir, currentFilepath)); - const promises2 = children2.map((child) => addToIndex({ - dir, - gitdir, - fs, - filepath: [join(currentFilepath, child)], - index: index2, - force - })); + const promises2 = children2.map( + (child) => addToIndex({ + dir, + gitdir, + fs, + filepath: [join(currentFilepath, child)], + index: index2, + force + }) + ); await Promise.all(promises2); } else { const object = stats.isSymbolicLink() ? await fs.readlink(join(dir, currentFilepath)).then(posixifyPathBuffer) : await fs.read(join(dir, currentFilepath)); @@ -13060,56 +19607,61 @@ async function _commit({ depth: 2 }); } - return GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - const inodes = flatFileListToDirectoryStructure(index2.entries); - const inode = inodes.get("."); - if (!tree) { - tree = await constructTree({ fs, gitdir, inode, dryRun }); - } - if (!parent) { - try { - parent = [ - await GitRefManager.resolve({ - fs, - gitdir, - ref - }) - ]; - } catch (err) { - parent = []; + return GitIndexManager.acquire( + { fs, gitdir, cache, allowUnmerged: false }, + async function(index2) { + const inodes = flatFileListToDirectoryStructure(index2.entries); + const inode = inodes.get("."); + if (!tree) { + tree = await constructTree({ fs, gitdir, inode, dryRun }); } - } else { - parent = await Promise.all(parent.map((p) => { - return GitRefManager.resolve({ fs, gitdir, ref: p }); - })); - } - let comm = GitCommit.from({ - tree, - parent, - author, - committer, - message - }); - if (signingKey) { - comm = await GitCommit.sign(comm, onSign, signingKey); - } - const oid = await _writeObject({ - fs, - gitdir, - type: "commit", - object: comm.toObject(), - dryRun - }); - if (!noUpdateBranch && !dryRun) { - await GitRefManager.writeRef({ + if (!parent) { + try { + parent = [ + await GitRefManager.resolve({ + fs, + gitdir, + ref + }) + ]; + } catch (err) { + parent = []; + } + } else { + parent = await Promise.all( + parent.map((p) => { + return GitRefManager.resolve({ fs, gitdir, ref: p }); + }) + ); + } + let comm = GitCommit.from({ + tree, + parent, + author, + committer, + message + }); + if (signingKey) { + comm = await GitCommit.sign(comm, onSign, signingKey); + } + const oid = await _writeObject({ fs, gitdir, - ref, - value: oid + type: "commit", + object: comm.toObject(), + dryRun }); + if (!noUpdateBranch && !dryRun) { + await GitRefManager.writeRef({ + fs, + gitdir, + ref, + value: oid + }); + } + return oid; } - return oid; - }); + ); } async function constructTree({ fs, gitdir, inode, dryRun }) { const children2 = inode.children; @@ -13182,7 +19734,7 @@ async function _resolveFilepath({ oid: entry.oid }); if (type !== "tree") { - throw new ObjectTypeError(oid, type, "blob", filepath); + throw new ObjectTypeError(oid, type, "tree", filepath); } tree = GitTree.from(object); return _resolveFilepath({ @@ -13265,7 +19817,7 @@ async function _addNote({ } } if (typeof note === "string") { - note = Buffer2.from(note, "utf8"); + note = Buffer.from(note, "utf8"); } const noteOid = await _writeObject({ fs, @@ -13391,7 +19943,10 @@ async function _addRemote({ fs, gitdir, remote, url, force }) { } } await config.set(`remote.${remote}.url`, url); - await config.set(`remote.${remote}.fetch`, `+refs/heads/*:refs/remotes/${remote}/*`); + await config.set( + `remote.${remote}.fetch`, + `+refs/heads/*:refs/remotes/${remote}/*` + ); await GitConfigManager.save({ fs, gitdir, config }); } async function addRemote({ @@ -13565,110 +20120,14 @@ async function branch({ throw err; } } -function arrayRange(start, end) { - const length = end - start; - return Array.from({ length }, (_, i) => start + i); -} -var flat = typeof Array.prototype.flat === "undefined" ? (entries) => entries.reduce((acc, x) => acc.concat(x), []) : (entries) => entries.flat(); -var RunningMinimum = class { - constructor() { - this.value = null; - } - consider(value) { - if (value === null || value === void 0) - return; - if (this.value === null) { - this.value = value; - } else if (value < this.value) { - this.value = value; - } - } - reset() { - this.value = null; - } -}; -function* unionOfIterators(sets) { - const min = new RunningMinimum(); - let minimum; - const heads = []; - const numsets = sets.length; - for (let i = 0; i < numsets; i++) { - heads[i] = sets[i].next().value; - if (heads[i] !== void 0) { - min.consider(heads[i]); - } - } - if (min.value === null) - return; - while (true) { - const result = []; - minimum = min.value; - min.reset(); - for (let i = 0; i < numsets; i++) { - if (heads[i] !== void 0 && heads[i] === minimum) { - result[i] = heads[i]; - heads[i] = sets[i].next().value; - } else { - result[i] = null; - } - if (heads[i] !== void 0) { - min.consider(heads[i]); - } - } - yield result; - if (min.value === null) - return; - } -} -async function _walk({ - fs, - cache, - dir, - gitdir, - trees, - map = async (_, entry) => entry, - reduce = async (parent, children2) => { - const flatten = flat(children2); - if (parent !== void 0) - flatten.unshift(parent); - return flatten; - }, - iterate = (walk2, children2) => Promise.all([...children2].map(walk2)) -}) { - const walkers = trees.map((proxy) => proxy[GitWalkSymbol]({ fs, dir, gitdir, cache })); - const root = new Array(walkers.length).fill("."); - const range = arrayRange(0, walkers.length); - const unionWalkerFromReaddir = async (entries) => { - range.map((i) => { - entries[i] = entries[i] && new walkers[i].ConstructEntry(entries[i]); - }); - const subdirs = await Promise.all(range.map((i) => entries[i] ? walkers[i].readdir(entries[i]) : [])); - const iterators = subdirs.map((array) => array === null ? [] : array).map((array) => array[Symbol.iterator]()); - return { - entries, - children: unionOfIterators(iterators) - }; - }; - const walk2 = async (root2) => { - const { entries, children: children2 } = await unionWalkerFromReaddir(root2); - const fullpath = entries.find((entry) => entry && entry._fullpath)._fullpath; - const parent = await map(fullpath, entries); - if (parent !== null) { - let walkedChildren = await iterate(walk2, children2); - walkedChildren = walkedChildren.filter((x) => x !== void 0); - return reduce(parent, walkedChildren); - } - }; - return walk2(root); -} -var worthWalking = (filepath, root) => { - if (filepath === "." || root == null || root.length === 0 || root === ".") { +var worthWalking = (filepath, root2) => { + if (filepath === "." || root2 == null || root2.length === 0 || root2 === ".") { return true; } - if (root.length >= filepath.length) { - return root.startsWith(filepath); + if (root2.length >= filepath.length) { + return root2.startsWith(filepath); } else { - return filepath.startsWith(root); + return filepath.startsWith(root2); } }; async function _checkout({ @@ -13731,11 +20190,11 @@ async function _checkout({ throw err; } } - const conflicts2 = ops.filter(([method]) => method === "conflict").map(([method, fullpath]) => fullpath); + const conflicts2 = ops.filter(([method2]) => method2 === "conflict").map(([method2, fullpath]) => fullpath); if (conflicts2.length > 0) { throw new CheckoutConflictError(conflicts2); } - const errors = ops.filter(([method]) => method === "error").map(([method, fullpath]) => fullpath); + const errors = ops.filter(([method2]) => method2 === "error").map(([method2, fullpath]) => fullpath); if (errors.length > 0) { throw new InternalError(errors.join(", ")); } @@ -13745,27 +20204,31 @@ async function _checkout({ let count = 0; const total = ops.length; await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - await Promise.all(ops.filter(([method]) => method === "delete" || method === "delete-index").map(async function([method, fullpath]) { - const filepath = `${dir}/${fullpath}`; - if (method === "delete") { - await fs.rm(filepath); - } - index2.delete({ filepath: fullpath }); - if (onProgress) { - await onProgress({ - phase: "Updating workdir", - loaded: ++count, - total - }); - } - })); + await Promise.all( + ops.filter( + ([method2]) => method2 === "delete" || method2 === "delete-index" + ).map(async function([method2, fullpath]) { + const filepath = `${dir}/${fullpath}`; + if (method2 === "delete") { + await fs.rm(filepath); + } + index2.delete({ filepath: fullpath }); + if (onProgress) { + await onProgress({ + phase: "Updating workdir", + loaded: ++count, + total + }); + } + }) + ); }); await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - for (const [method, fullpath] of ops) { - if (method === "rmdir" || method === "rmdir-index") { + for (const [method2, fullpath] of ops) { + if (method2 === "rmdir" || method2 === "rmdir-index") { const filepath = `${dir}/${fullpath}`; try { - if (method === "rmdir-index") { + if (method2 === "rmdir-index") { index2.delete({ filepath: fullpath }); } await fs.rmdir(filepath); @@ -13778,7 +20241,9 @@ async function _checkout({ } } catch (e) { if (e.code === "ENOTEMPTY") { - console.log(`Did not delete ${fullpath} because directory is not empty`); + console.log( + `Did not delete ${fullpath} because directory is not empty` + ); } else { throw e; } @@ -13786,59 +20251,67 @@ async function _checkout({ } } }); - await Promise.all(ops.filter(([method]) => method === "mkdir" || method === "mkdir-index").map(async function([_, fullpath]) { - const filepath = `${dir}/${fullpath}`; - await fs.mkdir(filepath); - if (onProgress) { - await onProgress({ - phase: "Updating workdir", - loaded: ++count, - total - }); - } - })); - await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - await Promise.all(ops.filter(([method]) => method === "create" || method === "create-index" || method === "update" || method === "mkdir-index").map(async function([method, fullpath, oid2, mode, chmod]) { + await Promise.all( + ops.filter(([method2]) => method2 === "mkdir" || method2 === "mkdir-index").map(async function([_, fullpath]) { const filepath = `${dir}/${fullpath}`; - try { - if (method !== "create-index" && method !== "mkdir-index") { - const { object } = await _readObject({ fs, cache, gitdir, oid: oid2 }); - if (chmod) { - await fs.rm(filepath); - } - if (mode === 33188) { - await fs.write(filepath, object); - } else if (mode === 33261) { - await fs.write(filepath, object, { mode: 511 }); - } else if (mode === 40960) { - await fs.writelink(filepath, object); - } else { - throw new InternalError(`Invalid mode 0o${mode.toString(8)} detected in blob ${oid2}`); - } - } - const stats = await fs.lstat(filepath); - if (mode === 33261) { - stats.mode = 493; - } - if (method === "mkdir-index") { - stats.mode = 57344; - } - index2.insert({ - filepath: fullpath, - stats, - oid: oid2 + await fs.mkdir(filepath); + if (onProgress) { + await onProgress({ + phase: "Updating workdir", + loaded: ++count, + total }); - if (onProgress) { - await onProgress({ - phase: "Updating workdir", - loaded: ++count, - total - }); - } - } catch (e) { - console.log(e); } - })); + }) + ); + await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { + await Promise.all( + ops.filter( + ([method2]) => method2 === "create" || method2 === "create-index" || method2 === "update" || method2 === "mkdir-index" + ).map(async function([method2, fullpath, oid2, mode, chmod]) { + const filepath = `${dir}/${fullpath}`; + try { + if (method2 !== "create-index" && method2 !== "mkdir-index") { + const { object } = await _readObject({ fs, cache, gitdir, oid: oid2 }); + if (chmod) { + await fs.rm(filepath); + } + if (mode === 33188) { + await fs.write(filepath, object); + } else if (mode === 33261) { + await fs.write(filepath, object, { mode: 511 }); + } else if (mode === 40960) { + await fs.writelink(filepath, object); + } else { + throw new InternalError( + `Invalid mode 0o${mode.toString(8)} detected in blob ${oid2}` + ); + } + } + const stats = await fs.lstat(filepath); + if (mode === 33261) { + stats.mode = 493; + } + if (method2 === "mkdir-index") { + stats.mode = 57344; + } + index2.insert({ + filepath: fullpath, + stats, + oid: oid2 + }); + if (onProgress) { + await onProgress({ + phase: "Updating workdir", + loaded: ++count, + total + }); + } + } catch (e) { + console.log(e); + } + }) + ); }); } if (!noUpdateHead) { @@ -14083,6 +20556,7 @@ async function analyze({ } } }, + // Modify the default flat mapping reduce: async function(parent, children2) { children2 = flat(children2); if (!parent) { @@ -14178,7 +20652,7 @@ function translateSSHtoHTTP(url) { return url; } function calculateBasicAuthHeader({ username = "", password = "" }) { - return `Basic ${Buffer2.from(`${username}:${password}`).toString("base64")}`; + return `Basic ${Buffer.from(`${username}:${password}`).toString("base64")}`; } async function forAwait(iterable, cb) { const iter = getIterator(iterable); @@ -14222,18 +20696,18 @@ function padHex(b, n) { } var GitPktLine = class { static flush() { - return Buffer2.from("0000", "utf8"); + return Buffer.from("0000", "utf8"); } static delim() { - return Buffer2.from("0001", "utf8"); + return Buffer.from("0001", "utf8"); } static encode(line) { if (typeof line === "string") { - line = Buffer2.from(line); + line = Buffer.from(line); } const length = line.length + 4; const hexlength = padHex(4, length); - return Buffer2.concat([Buffer2.from(hexlength, "utf8"), line]); + return Buffer.concat([Buffer.from(hexlength, "utf8"), line]); } static streamReader(stream) { const reader = new StreamReader(stream); @@ -14280,9 +20754,9 @@ async function parseCapabilitiesV2(read) { return { protocolVersion: 2, capabilities2 }; } async function parseRefsAdResponse(stream, { service }) { - const capabilities = new Set(); - const refs = new Map(); - const symrefs = new Map(); + const capabilities = /* @__PURE__ */ new Set(); + const refs = /* @__PURE__ */ new Map(); + const symrefs = /* @__PURE__ */ new Map(); const read = GitPktLine.streamReader(stream); let lineOne = await read(); while (lineOne === null) @@ -14330,7 +20804,10 @@ async function parseRefsAdResponse(stream, { service }) { function splitAndAssert(line, sep2, expected) { const split = line.trim().split(sep2); if (split.length !== 2) { - throw new ParseError(`Two strings separated by '${expected}'`, line.toString("utf8")); + throw new ParseError( + `Two strings separated by '${expected}'`, + line.toString("utf8") + ); } return split; } @@ -14345,7 +20822,7 @@ var updateHeaders = (headers, auth) => { }; var stringifyBody = async (res) => { try { - const data = Buffer2.from(await collect(res.body)); + const data = Buffer.from(await collect(res.body)); const response = data.toString("utf8"); const preview = response.length < 256 ? response : response.slice(0, 256) + "..."; return { preview, response, data }; @@ -14357,6 +20834,19 @@ var GitRemoteHTTP = class { static async capabilities() { return ["discover", "connect"]; } + /** + * @param {Object} args + * @param {HttpClient} args.http + * @param {ProgressCallback} [args.onProgress] + * @param {AuthCallback} [args.onAuth] + * @param {AuthFailureCallback} [args.onAuthFailure] + * @param {AuthSuccessCallback} [args.onAuthSuccess] + * @param {string} [args.corsProxy] + * @param {string} args.service + * @param {string} args.url + * @param {Object} args.headers + * @param {1 | 2} args.protocolVersion - Git Protocol Version + */ static async discover({ http, onProgress, @@ -14426,6 +20916,17 @@ var GitRemoteHTTP = class { } } } + /** + * @param {Object} args + * @param {HttpClient} args.http + * @param {ProgressCallback} [args.onProgress] + * @param {string} [args.corsProxy] + * @param {string} args.service + * @param {string} args.url + * @param {Object} [args.headers] + * @param {any} args.body + * @param {any} args.auth + */ static async connect({ http, onProgress, @@ -14483,7 +20984,7 @@ function parseRemoteUrl({ url }) { } var GitRemoteManager = class { static getRemoteHelperFor({ url }) { - const remoteHelpers = new Map(); + const remoteHelpers = /* @__PURE__ */ new Map(); remoteHelpers.set("http", GitRemoteHTTP); remoteHelpers.set("https", GitRemoteHTTP); const parts = parseRemoteUrl({ url }); @@ -14493,7 +20994,11 @@ var GitRemoteManager = class { if (remoteHelpers.has(parts.transport)) { return remoteHelpers.get(parts.transport); } - throw new UnknownTransportError(url, parts.transport, parts.transport === "ssh" ? translateSSHtoHTTP(url) : void 0); + throw new UnknownTransportError( + url, + parts.transport, + parts.transport === "ssh" ? translateSSHtoHTTP(url) : void 0 + ); } }; var lock$1 = null; @@ -14502,7 +21007,7 @@ var GitShallowManager = class { if (lock$1 === null) lock$1 = new import_async_lock.default(); const filepath = join(gitdir, "shallow"); - const oids = new Set(); + const oids = /* @__PURE__ */ new Set(); await lock$1.acquire(filepath, async function() { const text2 = await fs.read(filepath, { encoding: "utf8" }); if (text2 === null) @@ -14596,8 +21101,8 @@ function filterCapabilities(server, client) { } var pkg = { name: "isomorphic-git", - version: "1.21.0", - agent: "git/isomorphic-git@1.21.0" + version: "1.23.0", + agent: "git/isomorphic-git@1.23.0" }; var FIFO = class { constructor() { @@ -14635,7 +21140,9 @@ var FIFO = class { return { done: true }; } if (this._waiting) { - throw Error("You cannot call read until the previous call to read has returned!"); + throw Error( + "You cannot call read until the previous call to read has returned!" + ); } return new Promise((resolve) => { this._waiting = resolve; @@ -14721,6 +21228,73 @@ var GitSideBand = class { progress }; } + // static mux ({ + // protocol, // 'side-band' or 'side-band-64k' + // packetlines, + // packfile, + // progress, + // error + // }) { + // const MAX_PACKET_LENGTH = protocol === 'side-band-64k' ? 999 : 65519 + // let output = new PassThrough() + // packetlines.on('data', data => { + // if (data === null) { + // output.write(GitPktLine.flush()) + // } else { + // output.write(GitPktLine.encode(data)) + // } + // }) + // let packfileWasEmpty = true + // let packfileEnded = false + // let progressEnded = false + // let errorEnded = false + // let goodbye = Buffer.concat([ + // GitPktLine.encode(Buffer.from('010A', 'hex')), + // GitPktLine.flush() + // ]) + // packfile + // .on('data', data => { + // packfileWasEmpty = false + // const buffers = splitBuffer(data, MAX_PACKET_LENGTH) + // for (const buffer of buffers) { + // output.write( + // GitPktLine.encode(Buffer.concat([Buffer.from('01', 'hex'), buffer])) + // ) + // } + // }) + // .on('end', () => { + // packfileEnded = true + // if (!packfileWasEmpty) output.write(goodbye) + // if (progressEnded && errorEnded) output.end() + // }) + // progress + // .on('data', data => { + // const buffers = splitBuffer(data, MAX_PACKET_LENGTH) + // for (const buffer of buffers) { + // output.write( + // GitPktLine.encode(Buffer.concat([Buffer.from('02', 'hex'), buffer])) + // ) + // } + // }) + // .on('end', () => { + // progressEnded = true + // if (packfileEnded && errorEnded) output.end() + // }) + // error + // .on('data', data => { + // const buffers = splitBuffer(data, MAX_PACKET_LENGTH) + // for (const buffer of buffers) { + // output.write( + // GitPktLine.encode(Buffer.concat([Buffer.from('03', 'hex'), buffer])) + // ) + // } + // }) + // .on('end', () => { + // errorEnded = true + // if (progressEnded && packfileEnded) output.end() + // }) + // return output + // } }; async function parseUploadPackResponse(stream) { const { packetlines, packfile, progress } = GitSideBand.demux(stream); @@ -14785,8 +21359,10 @@ function writeUploadPackRequest({ `)); } if (since !== null) { - packstream.push(GitPktLine.encode(`deepen-since ${Math.floor(since.valueOf() / 1e3)} -`)); + packstream.push( + GitPktLine.encode(`deepen-since ${Math.floor(since.valueOf() / 1e3)} +`) + ); } for (const oid of exclude) { packstream.push(GitPktLine.encode(`deepen-not ${oid} @@ -14819,7 +21395,7 @@ async function _fetch({ depth = null, since = null, exclude = [], - relative = false, + relative: relative2 = false, tags = false, singleBranch = false, headers = {}, @@ -14867,7 +21443,7 @@ async function _fetch({ if (exclude.length > 0 && !remoteHTTP.capabilities.has("deepen-not")) { throw new RemoteCapabilityError("deepen-not", "exclude"); } - if (relative === true && !remoteHTTP.capabilities.has("deepen-relative")) { + if (relative2 === true && !remoteHTTP.capabilities.has("deepen-relative")) { throw new RemoteCapabilityError("deepen-relative", "relative"); } const { oid, fullref } = GitRefManager.resolveAgainstMap({ @@ -14880,14 +21456,22 @@ async function _fetch({ } remoteRefs.delete(remoteRef2); } - const capabilities = filterCapabilities([...remoteHTTP.capabilities], [ - "multi_ack_detailed", - "no-done", - "side-band-64k", - "ofs-delta", - `agent=${pkg.agent}` - ]); - if (relative) + const capabilities = filterCapabilities( + [...remoteHTTP.capabilities], + [ + "multi_ack_detailed", + "no-done", + "side-band-64k", + // Note: I removed 'thin-pack' option since our code doesn't "fatten" packfiles, + // which is necessary for compatibility with git. It was the cause of mysterious + // 'fatal: pack has [x] unresolved deltas' errors that plagued us for some time. + // isomorphic-git is perfectly happy with thin packfiles in .git/objects/pack but + // canonical git it turns out is NOT. + "ofs-delta", + `agent=${pkg.agent}` + ] + ); + if (relative2) capabilities.push("deepen-relative"); const wants = singleBranch ? [oid] : remoteRefs.values(); const haveRefs = singleBranch ? [ref] : await GitRefManager.listRefs({ @@ -14918,7 +21502,7 @@ async function _fetch({ since, exclude }); - const packbuffer = Buffer2.from(await collect(packstream)); + const packbuffer = Buffer.from(await collect(packstream)); const raw = await GitRemoteHTTP2.connect({ http, onProgress, @@ -14938,7 +21522,9 @@ async function _fetch({ try { const { object } = await _readObject({ fs, cache, gitdir, oid: oid2 }); const commit2 = new GitCommit(object); - const hasParents = await Promise.all(commit2.headers().parent.map((oid3) => hasObject({ fs, cache, gitdir, oid: oid3 }))); + const hasParents = await Promise.all( + commit2.headers().parent.map((oid3) => hasObject({ fs, cache, gitdir, oid: oid3 })) + ); const haveAllParents = hasParents.length === 0 || hasParents.every((has) => has); if (!haveAllParents) { oids.add(oid2); @@ -14953,8 +21539,8 @@ async function _fetch({ } await GitShallowManager.write({ fs, gitdir, oids }); if (singleBranch) { - const refs = new Map([[fullref, oid]]); - const symrefs = new Map(); + const refs = /* @__PURE__ */ new Map([[fullref, oid]]); + const symrefs = /* @__PURE__ */ new Map(); let bail = 10; let key2 = fullref; while (bail--) { @@ -15030,7 +21616,7 @@ async function _fetch({ } }); } - const packfile = Buffer2.from(await collect(response.packfile)); + const packfile = Buffer.from(await collect(response.packfile)); const packfileSha = packfile.slice(-20).toString("hex"); const res = { defaultBranch: response.HEAD, @@ -15078,11 +21664,14 @@ async function _init({ for (const folder of folders) { await fs.mkdir(folder); } - await fs.write(gitdir + "/config", `[core] + await fs.write( + gitdir + "/config", + `[core] repositoryformatversion = 0 filemode = false bare = ${bare} -` + (bare ? "" : " logallrefupdates = true\n") + " symlinks = false\n ignorecase = true\n"); +` + (bare ? "" : " logallrefupdates = true\n") + " symlinks = false\n ignorecase = true\n" + ); await fs.write(gitdir + "/HEAD", `ref: refs/heads/${defaultBranch} `); } @@ -15104,7 +21693,7 @@ async function _clone({ depth, since, exclude, - relative, + relative: relative2, singleBranch, noCheckout, noTags, @@ -15134,7 +21723,7 @@ async function _clone({ depth, since, exclude, - relative, + relative: relative2, singleBranch, headers, tags: !noTags @@ -15175,7 +21764,7 @@ async function clone({ depth = void 0, since = void 0, exclude = [], - relative = false, + relative: relative2 = false, singleBranch = false, noCheckout = false, noTags = false, @@ -15208,7 +21797,7 @@ async function clone({ depth, since, exclude, - relative, + relative: relative2, singleBranch, noCheckout, noTags, @@ -15471,10 +22060,10 @@ async function _findMergeBase({ fs, cache, gitdir, oids }) { const passes = oids.length; let heads = oids.map((oid, index2) => ({ index: index2, oid })); while (heads.length) { - const result = new Set(); + const result = /* @__PURE__ */ new Set(); for (const { oid, index: index2 } of heads) { if (!visits[oid]) - visits[oid] = new Set(); + visits[oid] = /* @__PURE__ */ new Set(); visits[oid].add(index2); if (visits[oid].size === passes) { result.add(oid); @@ -15483,7 +22072,7 @@ async function _findMergeBase({ fs, cache, gitdir, oids }) { if (result.size > 0) { return [...result]; } - const newheads = new Map(); + const newheads = /* @__PURE__ */ new Map(); for (const { oid, index: index2 } of heads) { try { const { object } = await _readObject({ fs, cache, gitdir, oid }); @@ -15538,6 +22127,7 @@ async function mergeTree({ cache, dir, gitdir = join(dir, ".git"), + index: index2, ourOid, baseOid, theirOid, @@ -15552,7 +22142,6 @@ async function mergeTree({ const baseTree = TREE({ ref: baseOid }); const theirTree = TREE({ ref: theirOid }); const unmergedFiles = []; - let cleanMerge = true; const results = await _walk({ fs, cache, @@ -15601,9 +22190,21 @@ async function mergeTree({ baseName, theirName, mergeDriver - }).then((r) => { - cleanMerge = cleanMerge && r.cleanMerge; - unmergedFiles.push(filepath); + }).then(async (r) => { + if (!r.cleanMerge) { + unmergedFiles.push(filepath); + if (!abortOnConflict) { + const baseOid2 = await base.oid(); + const ourOid2 = await ours.oid(); + const theirOid2 = await theirs.oid(); + index2.delete({ filepath }); + index2.insert({ filepath, oid: baseOid2, stage: 1 }); + index2.insert({ filepath, oid: ourOid2, stage: 2 }); + index2.insert({ filepath, oid: theirOid2, stage: 3 }); + } + } else if (!abortOnConflict) { + index2.insert({ filepath, oid: r.mergeResult.oid, stage: 0 }); + } return r.mergeResult; }); } @@ -15611,7 +22212,11 @@ async function mergeTree({ } } }, - reduce: async (parent, children2) => { + /** + * @param {TreeEntry} [parent] + * @param {Array} children + */ + reduce: unmergedFiles.length !== 0 && (!dir || abortOnConflict) ? void 0 : async (parent, children2) => { const entries = children2.filter(Boolean); if (!parent) return; @@ -15632,7 +22237,7 @@ async function mergeTree({ return parent; } }); - if (!cleanMerge) { + if (unmergedFiles.length !== 0) { if (dir && !abortOnConflict) { await _walk({ fs, @@ -15651,25 +22256,10 @@ async function mergeTree({ } }); } - throw new MergeConflictError(unmergedFiles); + return new MergeConflictError(unmergedFiles); } return results.oid; } -async function modified(entry, base) { - if (!entry && !base) - return false; - if (entry && !base) - return true; - if (!entry && base) - return true; - if (await entry.type() === "tree" && await base.type() === "tree") { - return false; - } - if (await entry.type() === await base.type() && await entry.mode() === await base.mode() && await entry.oid() === await base.oid()) { - return false; - } - return true; -} async function mergeBlobs({ fs, gitdir, @@ -15703,9 +22293,9 @@ async function mergeBlobs({ mergeResult: { mode, path: path2, oid: await ours.oid(), type } }; } - const ourContent = Buffer2.from(await ours.content()).toString("utf8"); - const baseContent = Buffer2.from(await base.content()).toString("utf8"); - const theirContent = Buffer2.from(await theirs.content()).toString("utf8"); + const ourContent = Buffer.from(await ours.content()).toString("utf8"); + const baseContent = Buffer.from(await base.content()).toString("utf8"); + const theirContent = Buffer.from(await theirs.content()).toString("utf8"); const { mergedText, cleanMerge } = await mergeDriver({ branches: [baseName, ourName, theirName], contents: [baseContent, ourContent, theirContent], @@ -15715,7 +22305,7 @@ async function mergeBlobs({ fs, gitdir, type: "blob", - object: Buffer2.from(mergedText, "utf8"), + object: Buffer.from(mergedText, "utf8"), dryRun }); return { cleanMerge, mergeResult: { mode, path: path2, oid, type } }; @@ -15790,23 +22380,33 @@ async function _merge({ if (fastForwardOnly) { throw new FastForwardError(); } - const tree = await mergeTree({ - fs, - cache, - dir, - gitdir, - ourOid, - theirOid, - baseOid, - ourName: abbreviateRef(ours), - baseName: "base", - theirName: abbreviateRef(theirs), - dryRun, - abortOnConflict, - mergeDriver - }); + const tree = await GitIndexManager.acquire( + { fs, gitdir, cache, allowUnmerged: false }, + async (index2) => { + return mergeTree({ + fs, + cache, + dir, + gitdir, + index: index2, + ourOid, + theirOid, + baseOid, + ourName: abbreviateRef(ours), + baseName: "base", + theirName: abbreviateRef(theirs), + dryRun, + abortOnConflict, + mergeDriver + }); + } + ); + if (tree instanceof MergeConflictError) + throw tree; if (!message) { - message = `Merge branch '${abbreviateRef(theirs)}' into ${abbreviateRef(ours)}`; + message = `Merge branch '${abbreviateRef(theirs)}' into ${abbreviateRef( + ours + )}`; } const oid = await _commit({ fs, @@ -15988,7 +22588,7 @@ async function fetch({ depth = null, since = null, exclude = [], - relative = false, + relative: relative2 = false, tags = false, singleBranch = false, headers = {}, @@ -16018,7 +22618,7 @@ async function fetch({ depth, since, exclude, - relative, + relative: relative2, tags, singleBranch, headers, @@ -16262,9 +22862,9 @@ async function hashBlob({ object }) { try { assertParameter("object", object); if (typeof object === "string") { - object = Buffer2.from(object, "utf8"); + object = Buffer.from(object, "utf8"); } else { - object = Buffer2.from(object); + object = Buffer.from(object); } const type = "blob"; const { oid, object: _object } = await hashObject({ @@ -16373,7 +22973,7 @@ async function _isDescendent({ if (oid === ancestor) return false; const queue = [oid]; - const visited = new Set(); + const visited = /* @__PURE__ */ new Set(); let searchdepth = 0; while (queue.length) { if (searchdepth++ === depth) { @@ -16583,10 +23183,12 @@ async function listNotes({ async function _listRemotes({ fs, gitdir }) { const config = await GitConfigManager.get({ fs, gitdir }); const remoteNames = await config.getSubsections("remote"); - const remotes = Promise.all(remoteNames.map(async (remote) => { - const url = await config.get(`remote.${remote}.url`); - return { remote, url }; - })); + const remotes = Promise.all( + remoteNames.map(async (remote) => { + const url = await config.get(`remote.${remote}.url`); + return { remote, url }; + }) + ); return remotes; } async function listRemotes({ fs, dir, gitdir = join(dir, ".git") }) { @@ -16927,6 +23529,7 @@ async function log({ ref = "HEAD", depth, since, + // Date force, follow, cache = {} @@ -17031,7 +23634,7 @@ async function _pack({ const hash2 = new import_sha1.default(); const outputStream = []; function write(chunk, enc) { - const buff = Buffer2.from(chunk, enc); + const buff = Buffer.from(chunk, enc); outputStream.push(buff); hash2.update(buff); } @@ -17049,7 +23652,7 @@ async function _pack({ write(padHex(2, byte), "hex"); length = length >>> 7; } - write(Buffer2.from(await deflate(object))); + write(Buffer.from(await deflate(object))); } write("PACK"); write("00000002", "hex"); @@ -17064,7 +23667,7 @@ async function _pack({ } async function _packObjects({ fs, cache, gitdir, oids, write }) { const buffers = await _pack({ fs, cache, gitdir, oids }); - const packfile = Buffer2.from(await collect(buffers)); + const packfile = Buffer.from(await collect(buffers)); const packfileSha = packfile.slice(-20).toString("hex"); const filename = `pack-${packfileSha}.pack`; if (write) { @@ -17181,8 +23784,8 @@ async function listCommitsAndTags({ finish }) { const shallows = await GitShallowManager.read({ fs, gitdir }); - const startingSet = new Set(); - const finishingSet = new Set(); + const startingSet = /* @__PURE__ */ new Set(); + const finishingSet = /* @__PURE__ */ new Set(); for (const ref of start) { startingSet.add(await GitRefManager.resolve({ fs, gitdir, ref })); } @@ -17193,7 +23796,7 @@ async function listCommitsAndTags({ } catch (err) { } } - const visited = new Set(); + const visited = /* @__PURE__ */ new Set(); async function walk2(oid) { visited.add(oid); const { type, object } = await _readObject({ fs, cache, gitdir, oid }); @@ -17227,7 +23830,7 @@ async function listObjects({ gitdir = join(dir, ".git"), oids }) { - const visited = new Set(); + const visited = /* @__PURE__ */ new Set(); async function walk2(oid) { if (visited.has(oid)) return; @@ -17302,8 +23905,12 @@ async function writeReceivePackRequest({ const packstream = []; let capsFirstLine = `\0 ${capabilities.join(" ")}`; for (const trip of triplets) { - packstream.push(GitPktLine.encode(`${trip.oldoid} ${trip.oid} ${trip.fullRef}${capsFirstLine} -`)); + packstream.push( + GitPktLine.encode( + `${trip.oldoid} ${trip.oid} ${trip.fullRef}${capsFirstLine} +` + ) + ); capsFirstLine = ""; } packstream.push(GitPktLine.flush()); @@ -17379,10 +23986,10 @@ async function _push({ } const oldoid = httpRemote.refs.get(fullRemoteRef) || "0000000000000000000000000000000000000000"; const thinPack = !httpRemote.capabilities.has("no-thin"); - let objects = new Set(); + let objects = /* @__PURE__ */ new Set(); if (!_delete) { const finish = [...httpRemote.refs.values()]; - let skipObjects = new Set(); + let skipObjects = /* @__PURE__ */ new Set(); if (oldoid !== "0000000000000000000000000000000000000000") { const mergebase = await _findMergeBase({ fs, @@ -17447,7 +24054,10 @@ async function _push({ } } } - const capabilities = filterCapabilities([...httpRemote.capabilities], ["report-status", "side-band-64k", `agent=${pkg.agent}`]); + const capabilities = filterCapabilities( + [...httpRemote.capabilities], + ["report-status", "side-band-64k", `agent=${pkg.agent}`] + ); const packstream1 = await writeReceivePackRequest({ capabilities, triplets: [{ oldoid, oid, fullRef: fullRemoteRef }] @@ -17480,7 +24090,10 @@ async function _push({ result.headers = res.headers; } if (remote && result.ok && result.refs[fullRemoteRef].ok) { - const ref2 = `refs/remotes/${remote}/${fullRemoteRef.replace("refs/heads", "")}`; + const ref2 = `refs/remotes/${remote}/${fullRemoteRef.replace( + "refs/heads", + "" + )}`; if (_delete) { await GitRefManager.deleteRef({ fs, gitdir, ref: ref2 }); } else { @@ -17714,7 +24327,11 @@ async function readObject({ result.object = GitAnnotatedTag.from(result.object).parse(); break; default: - throw new ObjectTypeError(result.oid, result.type, "blob|commit|tag|tree"); + throw new ObjectTypeError( + result.oid, + result.type, + "blob|commit|tag|tree" + ); } } else if (result.format === "deflated" || result.format === "wrapped") { result.type = result.format; @@ -17801,9 +24418,12 @@ async function remove({ assertParameter("fs", _fs); assertParameter("gitdir", gitdir); assertParameter("filepath", filepath); - await GitIndexManager.acquire({ fs: new FileSystem(_fs), gitdir, cache }, async function(index2) { - index2.delete({ filepath }); - }); + await GitIndexManager.acquire( + { fs: new FileSystem(_fs), gitdir, cache }, + async function(index2) { + index2.delete({ filepath }); + } + ); } catch (err) { err.caller = "git.remove"; throw err; @@ -18000,8 +24620,8 @@ async function resetIndex({ } } let stats = { - ctime: new Date(0), - mtime: new Date(0), + ctime: /* @__PURE__ */ new Date(0), + mtime: /* @__PURE__ */ new Date(0), dev: 0, ino: 0, mode: 0, @@ -18108,13 +24728,16 @@ async function status({ tree: headTree, path: filepath }); - const indexEntry = await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - for (const entry of index2) { - if (entry.path === filepath) - return entry; + const indexEntry = await GitIndexManager.acquire( + { fs, gitdir, cache }, + async function(index2) { + for (const entry of index2) { + if (entry.path === filepath) + return entry; + } + return null; } - return null; - }); + ); const stats = await fs.lstat(join(dir, filepath)); const H = treeOid !== null; const I = indexEntry !== null; @@ -18174,9 +24797,9 @@ async function status({ async function getOidAtPath({ fs, cache, gitdir, tree, path: path2 }) { if (typeof path2 === "string") path2 = path2.split("/"); - const dirname2 = path2.shift(); + const dirname3 = path2.shift(); for (const entry of tree) { - if (entry.path === dirname2) { + if (entry.path === dirname3) { if (path2.length === 0) { return entry.oid; } @@ -18334,29 +24957,34 @@ async function updateIndex({ assertParameter("filepath", filepath); const fs = new FileSystem(_fs); if (remove3) { - return await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { - let fileStats2; - if (!force) { - fileStats2 = await fs.lstat(join(dir, filepath)); - if (fileStats2) { - if (fileStats2.isDirectory()) { - throw new InvalidFilepathError("directory"); + return await GitIndexManager.acquire( + { fs, gitdir, cache }, + async function(index2) { + let fileStats2; + if (!force) { + fileStats2 = await fs.lstat(join(dir, filepath)); + if (fileStats2) { + if (fileStats2.isDirectory()) { + throw new InvalidFilepathError("directory"); + } + return; } - return; + } + if (index2.has({ filepath })) { + index2.delete({ + filepath + }); } } - if (index2.has({ filepath })) { - index2.delete({ - filepath - }); - } - }); + ); } let fileStats; if (!oid) { fileStats = await fs.lstat(join(dir, filepath)); if (!fileStats) { - throw new NotFoundError(`file at "${filepath}" on disk and "remove" not set`); + throw new NotFoundError( + `file at "${filepath}" on disk and "remove" not set` + ); } if (fileStats.isDirectory()) { throw new InvalidFilepathError("directory"); @@ -18364,11 +24992,13 @@ async function updateIndex({ } return await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { if (!add2 && !index2.has({ filepath })) { - throw new NotFoundError(`file at "${filepath}" in index and "add" not set`); + throw new NotFoundError( + `file at "${filepath}" in index and "add" not set` + ); } let stats = { - ctime: new Date(0), - mtime: new Date(0), + ctime: /* @__PURE__ */ new Date(0), + mtime: /* @__PURE__ */ new Date(0), dev: 0, ino: 0, mode, @@ -18505,7 +25135,7 @@ async function writeObject({ object = GitTree.from(object).toObject(); break; case "blob": - object = Buffer2.from(object, encoding); + object = Buffer.from(object, encoding); break; case "tag": object = GitAnnotatedTag.from(object).toObject(); @@ -18622,6 +25252,7 @@ var index = { TREE, WORKDIR, add, + abortMerge, addNote, addRemote, annotatedTag, @@ -18688,1668 +25319,27 @@ var index = { var isomorphic_git_default = index; // src/main.ts -var import_obsidian23 = __toModule(require("obsidian")); +var import_obsidian30 = require("obsidian"); -// src/promiseQueue.ts +// src/lineAuthor/lineAuthorIntegration.ts init_polyfill_buffer(); -var PromiseQueue = class { - constructor() { - this.tasks = []; - } - addTask(task) { - this.tasks.push(task); - if (this.tasks.length === 1) { - this.handleTask(); - } - } - async handleTask() { - if (this.tasks.length > 0) { - this.tasks[0]().finally(() => { - this.tasks.shift(); - this.handleTask(); - }); - } - } -}; +var import_obsidian12 = require("obsidian"); -// src/settings.ts +// src/gitManager/simpleGit.ts init_polyfill_buffer(); -var import_obsidian7 = __toModule(require("obsidian")); +var import_child_process2 = require("child_process"); +var import_debug2 = __toESM(require_browser()); +var import_obsidian4 = require("obsidian"); +var path = __toESM(require("path")); +var import_path = require("path"); -// src/isomorphicGit.ts +// node_modules/.pnpm/github.com+Vinzent03+git-js@6b9a2d899bc8256e38a1d6f0b8a88116ba2bf56a_supports-color@7.2.0/node_modules/simple-git/dist/esm/index.js init_polyfill_buffer(); - -// node_modules/.pnpm/diff@5.1.0/node_modules/diff/lib/index.mjs -init_polyfill_buffer(); -function Diff() { -} -Diff.prototype = { - diff: function diff(oldString, newString) { - var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - var callback = options.callback; - if (typeof options === "function") { - callback = options; - options = {}; - } - this.options = options; - var self3 = this; - function done(value) { - if (callback) { - setTimeout(function() { - callback(void 0, value); - }, 0); - return true; - } else { - return value; - } - } - oldString = this.castInput(oldString); - newString = this.castInput(newString); - oldString = this.removeEmpty(this.tokenize(oldString)); - newString = this.removeEmpty(this.tokenize(newString)); - var newLen = newString.length, oldLen = oldString.length; - var editLength = 1; - var maxEditLength = newLen + oldLen; - if (options.maxEditLength) { - maxEditLength = Math.min(maxEditLength, options.maxEditLength); - } - var bestPath = [{ - newPos: -1, - components: [] - }]; - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { - return done([{ - value: this.join(newString), - count: newString.length - }]); - } - function execEditLength() { - for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { - var basePath = void 0; - var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - if (addPath) { - bestPath[diagonalPath - 1] = void 0; - } - var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; - if (!canAdd && !canRemove) { - bestPath[diagonalPath] = void 0; - continue; - } - if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { - basePath = clonePath(removePath); - self3.pushComponent(basePath.components, void 0, true); - } else { - basePath = addPath; - basePath.newPos++; - self3.pushComponent(basePath.components, true, void 0); - } - _oldPos = self3.extractCommon(basePath, newString, oldString, diagonalPath); - if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { - return done(buildValues(self3, basePath.components, newString, oldString, self3.useLongestToken)); - } else { - bestPath[diagonalPath] = basePath; - } - } - editLength++; - } - if (callback) { - (function exec() { - setTimeout(function() { - if (editLength > maxEditLength) { - return callback(); - } - if (!execEditLength()) { - exec(); - } - }, 0); - })(); - } else { - while (editLength <= maxEditLength) { - var ret = execEditLength(); - if (ret) { - return ret; - } - } - } - }, - pushComponent: function pushComponent(components, added, removed) { - var last2 = components[components.length - 1]; - if (last2 && last2.added === added && last2.removed === removed) { - components[components.length - 1] = { - count: last2.count + 1, - added, - removed - }; - } else { - components.push({ - count: 1, - added, - removed - }); - } - }, - extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0; - while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { - newPos++; - oldPos++; - commonCount++; - } - if (commonCount) { - basePath.components.push({ - count: commonCount - }); - } - basePath.newPos = newPos; - return oldPos; - }, - equals: function equals(left, right) { - if (this.options.comparator) { - return this.options.comparator(left, right); - } else { - return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); - } - }, - removeEmpty: function removeEmpty(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - if (array[i]) { - ret.push(array[i]); - } - } - return ret; - }, - castInput: function castInput(value) { - return value; - }, - tokenize: function tokenize(value) { - return value.split(""); - }, - join: function join2(chars) { - return chars.join(""); - } -}; -function buildValues(diff2, components, newString, oldString, useLongestToken) { - var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; - for (; componentPos < componentLen; componentPos++) { - var component = components[componentPos]; - if (!component.removed) { - if (!component.added && useLongestToken) { - var value = newString.slice(newPos, newPos + component.count); - value = value.map(function(value2, i) { - var oldValue = oldString[oldPos + i]; - return oldValue.length > value2.length ? oldValue : value2; - }); - component.value = diff2.join(value); - } else { - component.value = diff2.join(newString.slice(newPos, newPos + component.count)); - } - newPos += component.count; - if (!component.added) { - oldPos += component.count; - } - } else { - component.value = diff2.join(oldString.slice(oldPos, oldPos + component.count)); - oldPos += component.count; - if (componentPos && components[componentPos - 1].added) { - var tmp = components[componentPos - 1]; - components[componentPos - 1] = components[componentPos]; - components[componentPos] = tmp; - } - } - } - var lastComponent = components[componentLen - 1]; - if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff2.equals("", lastComponent.value)) { - components[componentLen - 2].value += lastComponent.value; - components.pop(); - } - return components; -} -function clonePath(path2) { - return { - newPos: path2.newPos, - components: path2.components.slice(0) - }; -} -var characterDiff = new Diff(); -function diffChars(oldStr, newStr, options) { - return characterDiff.diff(oldStr, newStr, options); -} -var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; -var reWhitespace = /\S/; -var wordDiff = new Diff(); -wordDiff.equals = function(left, right) { - if (this.options.ignoreCase) { - left = left.toLowerCase(); - right = right.toLowerCase(); - } - return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); -}; -wordDiff.tokenize = function(value) { - var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); - for (var i = 0; i < tokens.length - 1; i++) { - if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { - tokens[i] += tokens[i + 2]; - tokens.splice(i + 1, 2); - i--; - } - } - return tokens; -}; -function diffWordsWithSpace(oldStr, newStr, options) { - return wordDiff.diff(oldStr, newStr, options); -} -var lineDiff = new Diff(); -lineDiff.tokenize = function(value) { - var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); - if (!linesAndNewlines[linesAndNewlines.length - 1]) { - linesAndNewlines.pop(); - } - for (var i = 0; i < linesAndNewlines.length; i++) { - var line = linesAndNewlines[i]; - if (i % 2 && !this.options.newlineIsToken) { - retLines[retLines.length - 1] += line; - } else { - if (this.options.ignoreWhitespace) { - line = line.trim(); - } - retLines.push(line); - } - } - return retLines; -}; -function diffLines(oldStr, newStr, callback) { - return lineDiff.diff(oldStr, newStr, callback); -} -var sentenceDiff = new Diff(); -sentenceDiff.tokenize = function(value) { - return value.split(/(\S.+?[.!?])(?=\s+|$)/); -}; -var cssDiff = new Diff(); -cssDiff.tokenize = function(value) { - return value.split(/([{}:;,]|\s+)/); -}; -function _typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function(obj2) { - return typeof obj2; - }; - } else { - _typeof = function(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); -} -function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); -} -function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) - return _arrayLikeToArray(arr); -} -function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) - return Array.from(iter); -} -function _unsupportedIterableToArray(o, minLen) { - if (!o) - return; - if (typeof o === "string") - return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) - n = o.constructor.name; - if (n === "Map" || n === "Set") - return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) - return _arrayLikeToArray(o, minLen); -} -function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) - len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) - arr2[i] = arr[i]; - return arr2; -} -function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); -} -var objectPrototypeToString = Object.prototype.toString; -var jsonDiff = new Diff(); -jsonDiff.useLongestToken = true; -jsonDiff.tokenize = lineDiff.tokenize; -jsonDiff.castInput = function(value) { - var _this$options = this.options, undefinedReplacement = _this$options.undefinedReplacement, _this$options$stringi = _this$options.stringifyReplacer, stringifyReplacer = _this$options$stringi === void 0 ? function(k, v) { - return typeof v === "undefined" ? undefinedReplacement : v; - } : _this$options$stringi; - return typeof value === "string" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, " "); -}; -jsonDiff.equals = function(left, right) { - return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1")); -}; -function canonicalize(obj, stack, replacementStack, replacer, key2) { - stack = stack || []; - replacementStack = replacementStack || []; - if (replacer) { - obj = replacer(key2, obj); - } - var i; - for (i = 0; i < stack.length; i += 1) { - if (stack[i] === obj) { - return replacementStack[i]; - } - } - var canonicalizedObj; - if (objectPrototypeToString.call(obj) === "[object Array]") { - stack.push(obj); - canonicalizedObj = new Array(obj.length); - replacementStack.push(canonicalizedObj); - for (i = 0; i < obj.length; i += 1) { - canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key2); - } - stack.pop(); - replacementStack.pop(); - return canonicalizedObj; - } - if (obj && obj.toJSON) { - obj = obj.toJSON(); - } - if (_typeof(obj) === "object" && obj !== null) { - stack.push(obj); - canonicalizedObj = {}; - replacementStack.push(canonicalizedObj); - var sortedKeys = [], _key; - for (_key in obj) { - if (obj.hasOwnProperty(_key)) { - sortedKeys.push(_key); - } - } - sortedKeys.sort(); - for (i = 0; i < sortedKeys.length; i += 1) { - _key = sortedKeys[i]; - canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); - } - stack.pop(); - replacementStack.pop(); - } else { - canonicalizedObj = obj; - } - return canonicalizedObj; -} -var arrayDiff = new Diff(); -arrayDiff.tokenize = function(value) { - return value.slice(); -}; -arrayDiff.join = arrayDiff.removeEmpty = function(value) { - return value; -}; -function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { - if (!options) { - options = {}; - } - if (typeof options.context === "undefined") { - options.context = 4; - } - var diff2 = diffLines(oldStr, newStr, options); - if (!diff2) { - return; - } - diff2.push({ - value: "", - lines: [] - }); - function contextLines(lines) { - return lines.map(function(entry) { - return " " + entry; - }); - } - var hunks = []; - var oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1; - var _loop = function _loop2(i2) { - var current = diff2[i2], lines = current.lines || current.value.replace(/\n$/, "").split("\n"); - current.lines = lines; - if (current.added || current.removed) { - var _curRange; - if (!oldRangeStart) { - var prev = diff2[i2 - 1]; - oldRangeStart = oldLine; - newRangeStart = newLine; - if (prev) { - curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; - oldRangeStart -= curRange.length; - newRangeStart -= curRange.length; - } - } - (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function(entry) { - return (current.added ? "+" : "-") + entry; - }))); - if (current.added) { - newLine += lines.length; - } else { - oldLine += lines.length; - } - } else { - if (oldRangeStart) { - if (lines.length <= options.context * 2 && i2 < diff2.length - 2) { - var _curRange2; - (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines))); - } else { - var _curRange3; - var contextSize = Math.min(lines.length, options.context); - (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize)))); - var hunk = { - oldStart: oldRangeStart, - oldLines: oldLine - oldRangeStart + contextSize, - newStart: newRangeStart, - newLines: newLine - newRangeStart + contextSize, - lines: curRange - }; - if (i2 >= diff2.length - 2 && lines.length <= options.context) { - var oldEOFNewline = /\n$/.test(oldStr); - var newEOFNewline = /\n$/.test(newStr); - var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; - if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) { - curRange.splice(hunk.oldLines, 0, "\\ No newline at end of file"); - } - if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) { - curRange.push("\\ No newline at end of file"); - } - } - hunks.push(hunk); - oldRangeStart = 0; - newRangeStart = 0; - curRange = []; - } - } - oldLine += lines.length; - newLine += lines.length; - } - }; - for (var i = 0; i < diff2.length; i++) { - _loop(i); - } - return { - oldFileName, - newFileName, - oldHeader, - newHeader, - hunks - }; -} -function formatPatch(diff2) { - var ret = []; - if (diff2.oldFileName == diff2.newFileName) { - ret.push("Index: " + diff2.oldFileName); - } - ret.push("==================================================================="); - ret.push("--- " + diff2.oldFileName + (typeof diff2.oldHeader === "undefined" ? "" : " " + diff2.oldHeader)); - ret.push("+++ " + diff2.newFileName + (typeof diff2.newHeader === "undefined" ? "" : " " + diff2.newHeader)); - for (var i = 0; i < diff2.hunks.length; i++) { - var hunk = diff2.hunks[i]; - if (hunk.oldLines === 0) { - hunk.oldStart -= 1; - } - if (hunk.newLines === 0) { - hunk.newStart -= 1; - } - ret.push("@@ -" + hunk.oldStart + "," + hunk.oldLines + " +" + hunk.newStart + "," + hunk.newLines + " @@"); - ret.push.apply(ret, hunk.lines); - } - return ret.join("\n") + "\n"; -} -function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { - return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)); -} -function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { - return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); -} - -// src/isomorphicGit.ts -var import_obsidian5 = __toModule(require("obsidian")); - -// src/gitManager.ts -init_polyfill_buffer(); -var GitManager = class { - constructor(plugin) { - this.plugin = plugin; - this.app = plugin.app; - } - getVaultPath(path2) { - if (this.plugin.settings.basePath) { - return this.plugin.settings.basePath + "/" + path2; - } else { - return path2; - } - } - getPath(path2, relativeToVault) { - return relativeToVault && this.plugin.settings.basePath.length > 0 ? path2.substring(this.plugin.settings.basePath.length + 1) : path2; - } - _getTreeStructure(children2, beginLength = 0) { - const list = []; - children2 = [...children2]; - while (children2.length > 0) { - const first2 = children2.first(); - const restPath = first2.path.substring(beginLength); - if (restPath.contains("/")) { - const title = restPath.substring(0, restPath.indexOf("/")); - const childrenWithSameTitle = children2.filter((item) => { - return item.path.substring(beginLength).startsWith(title + "/"); - }); - childrenWithSameTitle.forEach((item) => children2.remove(item)); - const path2 = first2.path.substring(0, restPath.indexOf("/") + beginLength); - list.push({ - title, - path: path2, - vaultPath: this.getVaultPath(path2), - children: this._getTreeStructure(childrenWithSameTitle, (beginLength > 0 ? beginLength + title.length : title.length) + 1) - }); - } else { - list.push({ - title: restPath, - statusResult: first2, - path: first2.path, - vaultPath: this.getVaultPath(first2.path) - }); - children2.remove(first2); - } - } - return list; - } - simplify(tree) { - var _a2, _b, _c, _d; - for (const node of tree) { - while (true) { - const singleChild = ((_a2 = node.children) == null ? void 0 : _a2.length) == 1; - const singleChildIsDir = ((_c = (_b = node.children) == null ? void 0 : _b.first()) == null ? void 0 : _c.statusResult) == void 0; - if (!(node.children != void 0 && singleChild && singleChildIsDir)) - break; - const child = node.children.first(); - node.title += "/" + child.title; - node.statusResult = child.statusResult; - node.path = child.path; - node.vaultPath = child.vaultPath; - node.children = child.children; - } - if (node.children != void 0) { - this.simplify(node.children); - } - (_d = node.children) == null ? void 0 : _d.sort((a, b) => { - const dirCompare = (b.statusResult == void 0 ? 1 : 0) - (a.statusResult == void 0 ? 1 : 0); - if (dirCompare != 0) { - return dirCompare; - } else { - return a.title.localeCompare(b.title); - } - }); - } - return tree.sort((a, b) => { - const dirCompare = (b.statusResult == void 0 ? 1 : 0) - (a.statusResult == void 0 ? 1 : 0); - if (dirCompare != 0) { - return dirCompare; - } else { - return a.title.localeCompare(b.title); - } - }); - } - getTreeStructure(children2) { - const tree = this._getTreeStructure(children2); - const res = this.simplify(tree); - return res; - } - async formatCommitMessage(template) { - let status2; - if (template.includes("{{numFiles}}")) { - status2 = await this.status(); - const numFiles = status2.staged.length; - template = template.replace("{{numFiles}}", String(numFiles)); - } - if (template.includes("{{hostname}}")) { - const hostname = this.plugin.localStorage.getHostname() || ""; - template = template.replace("{{hostname}}", hostname); - } - if (template.includes("{{files}}")) { - status2 = status2 != null ? status2 : await this.status(); - const changeset = {}; - status2.staged.forEach((value) => { - if (value.index in changeset) { - changeset[value.index].push(value.path); - } else { - changeset[value.index] = [value.path]; - } - }); - const chunks = []; - for (const [action, files2] of Object.entries(changeset)) { - chunks.push(action + " " + files2.join(" ")); - } - const files = chunks.join(", "); - template = template.replace("{{files}}", files); - } - const moment = window.moment; - template = template.replace("{{date}}", moment().format(this.plugin.settings.commitDateFormat)); - if (this.plugin.settings.listChangedFilesInMessageBody) { - template = template + "\n\nAffected files:\n" + (status2 != null ? status2 : await this.status()).staged.map((e) => e.path).join("\n"); - } - return template; - } -}; - -// src/myAdapter.ts -init_polyfill_buffer(); -var import_obsidian2 = __toModule(require("obsidian")); -var MyAdapter = class { - constructor(vault, plugin) { - this.plugin = plugin; - this.promises = {}; - this.adapter = vault.adapter; - this.vault = vault; - this.promises.readFile = this.readFile.bind(this); - this.promises.writeFile = this.writeFile.bind(this); - this.promises.readdir = this.readdir.bind(this); - this.promises.mkdir = this.mkdir.bind(this); - this.promises.rmdir = this.rmdir.bind(this); - this.promises.stat = this.stat.bind(this); - this.promises.unlink = this.unlink.bind(this); - this.promises.lstat = this.lstat.bind(this); - this.promises.readlink = this.readlink.bind(this); - this.promises.symlink = this.symlink.bind(this); - } - async readFile(path2, opts) { - var _a2; - this.maybeLog("Read: " + path2 + JSON.stringify(opts)); - if (opts == "utf8" || opts.encoding == "utf8") { - const file = this.vault.getAbstractFileByPath(path2); - if (file instanceof import_obsidian2.TFile) { - this.maybeLog("Reuse"); - return this.vault.read(file); - } else { - return this.adapter.read(path2); - } - } else { - if (path2.endsWith(this.gitDir + "/index")) { - return (_a2 = this.index) != null ? _a2 : this.adapter.readBinary(path2); - } - const file = this.vault.getAbstractFileByPath(path2); - if (file instanceof import_obsidian2.TFile) { - this.maybeLog("Reuse"); - return this.vault.readBinary(file); - } else { - return this.adapter.readBinary(path2); - } - } - } - async writeFile(path2, data) { - this.maybeLog("Write: " + path2); - if (typeof data === "string") { - const file = this.vault.getAbstractFileByPath(path2); - if (file instanceof import_obsidian2.TFile) { - return this.vault.modify(file, data); - } else { - return this.adapter.write(path2, data); - } - } else { - if (path2.endsWith(this.gitDir + "/index")) { - this.index = data; - this.indexmtime = Date.now(); - } else { - const file = this.vault.getAbstractFileByPath(path2); - if (file instanceof import_obsidian2.TFile) { - return this.vault.modifyBinary(file, data); - } else { - return this.adapter.writeBinary(path2, data); - } - } - } - } - async readdir(path2) { - if (path2 === ".") - path2 = "/"; - const res = await this.adapter.list(path2); - const all = [...res.files, ...res.folders]; - let formattedAll; - if (path2 !== "/") { - formattedAll = all.map((e) => (0, import_obsidian2.normalizePath)(e.substring(path2.length))); - } else { - formattedAll = all; - } - return formattedAll; - } - async mkdir(path2) { - return this.adapter.mkdir(path2); - } - async rmdir(path2, opts) { - var _a2, _b; - return this.adapter.rmdir(path2, (_b = (_a2 = opts == null ? void 0 : opts.options) == null ? void 0 : _a2.recursive) != null ? _b : false); - } - async stat(path2) { - if (path2.endsWith(this.gitDir + "/index")) { - if (this.index !== void 0 && this.indexctime != void 0 && this.indexmtime != void 0) { - return { - isFile: () => true, - isDirectory: () => false, - isSymbolicLink: () => false, - size: this.index.length, - type: "file", - ctimeMs: this.indexctime, - mtimeMs: this.indexmtime - }; - } else { - const stat = await this.adapter.stat(path2); - if (stat == void 0) { - throw { "code": "ENOENT" }; - } - this.indexctime = stat.ctime; - this.indexmtime = stat.mtime; - return { - ctimeMs: stat.ctime, - mtimeMs: stat.mtime, - size: stat.size, - type: "file", - isFile: () => true, - isDirectory: () => false, - isSymbolicLink: () => false - }; - } - } - if (path2 === ".") - path2 = "/"; - const file = this.vault.getAbstractFileByPath(path2); - this.maybeLog("Stat: " + path2); - if (file instanceof import_obsidian2.TFile) { - this.maybeLog("Reuse stat"); - return { - ctimeMs: file.stat.ctime, - mtimeMs: file.stat.mtime, - size: file.stat.size, - type: "file", - isFile: () => true, - isDirectory: () => false, - isSymbolicLink: () => false - }; - } else { - const stat = await this.adapter.stat(path2); - if (stat) { - return { - ctimeMs: stat.ctime, - mtimeMs: stat.mtime, - size: stat.size, - type: stat.type === "folder" ? "directory" : stat.type, - isFile: () => stat.type === "file", - isDirectory: () => stat.type === "folder", - isSymbolicLink: () => false - }; - } else { - throw { "code": "ENOENT" }; - } - } - } - async unlink(path2) { - return this.adapter.remove(path2); - } - async lstat(path2) { - return this.stat(path2); - } - async readlink(path2) { - throw new Error(`readlink of (${path2}) is not implemented.`); - } - async symlink(path2) { - throw new Error(`symlink of (${path2}) is not implemented.`); - } - async saveAndClear() { - if (this.index !== void 0) { - await this.adapter.writeBinary(this.plugin.gitManager.getVaultPath(this.gitDir + "/index"), this.index, { - ctime: this.indexctime, - mtime: this.indexmtime - }); - } - this.index = void 0; - this.indexctime = void 0; - this.indexmtime = void 0; - } - get gitDir() { - var _a2; - return (_a2 = this.plugin.settings.gitDir) != null ? _a2 : ".git"; - } - maybeLog(text2) { - } -}; - -// src/types.ts -init_polyfill_buffer(); -var PluginState; -(function(PluginState2) { - PluginState2[PluginState2["idle"] = 0] = "idle"; - PluginState2[PluginState2["status"] = 1] = "status"; - PluginState2[PluginState2["pull"] = 2] = "pull"; - PluginState2[PluginState2["add"] = 3] = "add"; - PluginState2[PluginState2["commit"] = 4] = "commit"; - PluginState2[PluginState2["push"] = 5] = "push"; - PluginState2[PluginState2["conflicted"] = 6] = "conflicted"; -})(PluginState || (PluginState = {})); -var FileType; -(function(FileType2) { - FileType2[FileType2["staged"] = 0] = "staged"; - FileType2[FileType2["changed"] = 1] = "changed"; - FileType2[FileType2["pulled"] = 2] = "pulled"; -})(FileType || (FileType = {})); - -// src/ui/modals/generalModal.ts -init_polyfill_buffer(); -var import_obsidian3 = __toModule(require("obsidian")); -var generalModalConfigDefaults = { - options: [], - placeholder: "", - allowEmpty: false, - onlySelection: false, - initialValue: void 0 -}; -var GeneralModal = class extends import_obsidian3.SuggestModal { - constructor(config) { - super(app); - this.config = { ...generalModalConfigDefaults, ...config }; - this.setPlaceholder(this.config.placeholder); - } - open() { - super.open(); - if (this.config.initialValue != void 0) { - this.inputEl.value = this.config.initialValue; - this.inputEl.dispatchEvent(new Event("input")); - } - return new Promise((resolve) => { - this.resolve = resolve; - }); - } - selectSuggestion(value, evt) { - if (this.resolve) { - let res; - if (this.config.allowEmpty && value === " ") - res = ""; - else if (value === "...") - res = void 0; - else - res = value; - this.resolve(res); - } - super.selectSuggestion(value, evt); - } - onClose() { - if (this.resolve) - this.resolve(void 0); - } - getSuggestions(query) { - if (this.config.onlySelection) { - return this.config.options; - } else if (this.config.allowEmpty) { - return [query.length > 0 ? query : " ", ...this.config.options]; - } else { - return [query.length > 0 ? query : "...", ...this.config.options]; - } - } - renderSuggestion(value, el) { - el.setText(value); - } - onChooseSuggestion(item, evt) { - } -}; - -// src/utils.ts -init_polyfill_buffer(); -var import_obsidian4 = __toModule(require("obsidian")); -var worthWalking2 = (filepath, root) => { - if (filepath === "." || root == null || root.length === 0 || root === ".") { - return true; - } - if (root.length >= filepath.length) { - return root.startsWith(filepath); - } else { - return filepath.startsWith(root); - } -}; -function getNewLeaf(event) { - let leaf; - if (event) { - if (event.button === 0 || event.button === 1) { - const type = import_obsidian4.Keymap.isModEvent(event); - leaf = app.workspace.getLeaf(type); - } - } else { - leaf = app.workspace.getLeaf(false); - } - return leaf; -} - -// src/isomorphicGit.ts -var IsomorphicGit = class extends GitManager { - constructor(plugin) { - super(plugin); - this.FILE = 0; - this.HEAD = 1; - this.WORKDIR = 2; - this.STAGE = 3; - this.status_mapping = { - "000": " ", - "003": "AD", - "020": "??", - "022": "A ", - "023": "AM", - "100": "D ", - "101": " D", - "103": "MD", - "110": "DA", - "111": " ", - "120": "DA", - "121": " M", - "122": "M ", - "123": "MM" - }; - this.noticeLength = 999999; - this.fs = new MyAdapter(this.app.vault, this.plugin); - } - getRepo() { - var _a2; - return { - fs: this.fs, - dir: this.plugin.settings.basePath, - gitdir: (_a2 = this.plugin.settings.gitDir) != null ? _a2 : void 0, - onAuth: () => { - var _a3, _b; - return { - username: (_a3 = this.plugin.localStorage.getUsername()) != null ? _a3 : void 0, - password: (_b = this.plugin.localStorage.getPassword()) != null ? _b : void 0 - }; - }, - onAuthFailure: async () => { - new import_obsidian5.Notice("Authentication failed. Please try with different credentials"); - const username = await new GeneralModal({ placeholder: "Specify your username" }).open(); - if (username) { - const password = await new GeneralModal({ placeholder: "Specify your password/personal access token" }).open(); - if (password) { - this.plugin.localStorage.setUsername(username); - this.plugin.localStorage.setPassword(password); - return { - username, - password - }; - } - } - return { cancel: true }; - }, - http: { - async request({ - url, - method, - headers, - body - }) { - if (body) { - body = await collect2(body); - body = body.buffer; - } - const res = await (0, import_obsidian5.requestUrl)({ url, method, headers, body, throw: false }); - return { - url, - method, - headers: res.headers, - body: [new Uint8Array(res.arrayBuffer)], - statusCode: res.status, - statusMessage: res.status.toString() - }; - } - } - }; - } - async wrapFS(call) { - try { - const res = await call; - await this.fs.saveAndClear(); - return res; - } catch (error) { - await this.fs.saveAndClear(); - throw error; - } - } - async status() { - let notice; - const timeout = window.setTimeout(function() { - notice = new import_obsidian5.Notice("This takes longer: Getting status", this.noticeLength); - }, 2e4); - try { - this.plugin.setState(PluginState.status); - const status2 = (await this.wrapFS(isomorphic_git_default.statusMatrix({ ...this.getRepo() }))).map((row) => this.getFileStatusResult(row)); - const changed = status2.filter((fileStatus) => fileStatus.working_dir !== " "); - const staged = status2.filter((fileStatus) => fileStatus.index !== " " && fileStatus.index !== "U"); - const conflicted = []; - window.clearTimeout(timeout); - notice == null ? void 0 : notice.hide(); - return { changed, staged, conflicted }; - } catch (error) { - window.clearTimeout(timeout); - notice == null ? void 0 : notice.hide(); - this.plugin.displayError(error); - throw error; - } - } - async commitAll({ message, status: status2, unstagedFiles }) { - try { - await this.stageAll({ status: status2, unstagedFiles }); - return this.commit(message); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async commit(message) { - try { - this.plugin.setState(PluginState.commit); - const formatMessage = await this.formatCommitMessage(message); - const hadConflict = this.plugin.localStorage.getConflict() === "true"; - let parent = void 0; - if (hadConflict) { - const branchInfo = await this.branchInfo(); - parent = [branchInfo.current, branchInfo.tracking]; - } - await this.wrapFS(isomorphic_git_default.commit({ - ...this.getRepo(), - message: formatMessage, - parent - })); - this.plugin.localStorage.setConflict("false"); - return; - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async stage(filepath, relativeToVault) { - const gitPath = this.getPath(filepath, relativeToVault); - let vaultPath; - if (relativeToVault) { - vaultPath = filepath; - } else { - vaultPath = this.getVaultPath(filepath); - } - try { - this.plugin.setState(PluginState.add); - if (await this.app.vault.adapter.exists(vaultPath)) { - await this.wrapFS(isomorphic_git_default.add({ ...this.getRepo(), filepath: gitPath })); - } else { - await this.wrapFS(isomorphic_git_default.remove({ ...this.getRepo(), filepath: gitPath })); - } - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async stageAll({ dir, status: status2, unstagedFiles }) { - try { - if (status2) { - await Promise.all(status2.changed.map((file) => file.working_dir !== "D" ? this.wrapFS(isomorphic_git_default.add({ ...this.getRepo(), filepath: file.path })) : isomorphic_git_default.remove({ ...this.getRepo(), filepath: file.path }))); - } else { - const filesToStage = unstagedFiles != null ? unstagedFiles : await this.getUnstagedFiles(dir != null ? dir : "."); - await Promise.all(filesToStage.map(({ filepath, deleted }) => deleted ? isomorphic_git_default.remove({ ...this.getRepo(), filepath }) : this.wrapFS(isomorphic_git_default.add({ ...this.getRepo(), filepath })))); - } - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async unstage(filepath, relativeToVault) { - try { - this.plugin.setState(PluginState.add); - filepath = this.getPath(filepath, relativeToVault); - await this.wrapFS(isomorphic_git_default.resetIndex({ ...this.getRepo(), filepath })); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async unstageAll({ dir, status: status2 }) { - try { - let staged; - if (status2) { - staged = status2.staged.map((file) => file.path); - } else { - const res = await this.getStagedFiles(dir != null ? dir : "."); - staged = res.map(({ filepath }) => filepath); - } - await this.wrapFS(Promise.all(staged.map((file) => isomorphic_git_default.resetIndex({ ...this.getRepo(), filepath: file })))); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async discard(filepath) { - try { - this.plugin.setState(PluginState.add); - await this.wrapFS(isomorphic_git_default.checkout({ ...this.getRepo(), filepaths: [filepath], force: true })); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async discardAll({ dir, status: status2 }) { - let files = []; - if (status2) { - if (dir != void 0) { - files = status2.changed.filter((file) => file.path.startsWith(dir)).map((file) => file.path); - } else { - files = status2.changed.map((file) => file.path); - } - } else { - files = (await this.getUnstagedFiles(dir)).map(({ filepath }) => filepath); - } - try { - await this.wrapFS(isomorphic_git_default.checkout({ ...this.getRepo(), filepaths: files, force: true })); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - getProgressText(action, event) { - let out = `${action} progress:`; - if (event.phase) { - out = `${out} ${event.phase}:`; - } - if (event.loaded) { - out = `${out} ${event.loaded}`; - if (event.total) { - out = `${out} of ${event.total}`; - } - } - return out; - } - resolveRef(ref) { - return this.wrapFS(isomorphic_git_default.resolveRef({ ...this.getRepo(), ref })); - } - async pull() { - const progressNotice = this.showNotice("Initializing pull"); - try { - this.plugin.setState(PluginState.pull); - const localCommit = await this.resolveRef("HEAD"); - await this.fetch(); - const branchInfo = await this.branchInfo(); - await this.wrapFS(isomorphic_git_default.merge({ - ...this.getRepo(), - ours: branchInfo.current, - theirs: branchInfo.tracking, - abortOnConflict: false - })); - await this.wrapFS(isomorphic_git_default.checkout({ - ...this.getRepo(), - ref: branchInfo.current, - onProgress: (progress) => { - if (progressNotice !== void 0) { - progressNotice.noticeEl.innerText = this.getProgressText("Checkout", progress); - } - }, - remote: branchInfo.remote - })); - progressNotice == null ? void 0 : progressNotice.hide(); - const upstreamCommit = await this.resolveRef("HEAD"); - this.plugin.lastUpdate = Date.now(); - const changedFiles = await this.getFileChangesCount(localCommit, upstreamCommit); - this.showNotice("Finished pull", false); - return changedFiles.map((file) => ({ - path: file.path, - working_dir: "P", - index: "P", - vault_path: this.getVaultPath(file.path) - })); - } catch (error) { - progressNotice == null ? void 0 : progressNotice.hide(); - if (error instanceof Errors.MergeConflictError) { - this.plugin.handleConflict(error.data.filepaths.map((file) => this.getVaultPath(file))); - } - this.plugin.displayError(error); - throw error; - } - } - async push() { - if (!await this.canPush()) { - return 0; - } - const progressNotice = this.showNotice("Initializing push"); - try { - this.plugin.setState(PluginState.status); - const status2 = await this.branchInfo(); - const trackingBranch = status2.tracking; - const currentBranch2 = status2.current; - const numChangedFiles = (await this.getFileChangesCount(currentBranch2, trackingBranch)).length; - this.plugin.setState(PluginState.push); - await this.wrapFS(isomorphic_git_default.push({ - ...this.getRepo(), - onProgress: (progress) => { - if (progressNotice !== void 0) { - progressNotice.noticeEl.innerText = this.getProgressText("Pushing", progress); - } - } - })); - progressNotice == null ? void 0 : progressNotice.hide(); - return numChangedFiles; - } catch (error) { - progressNotice == null ? void 0 : progressNotice.hide(); - this.plugin.displayError(error); - throw error; - } - } - async canPush() { - const status2 = await this.branchInfo(); - const trackingBranch = status2.tracking; - const currentBranch2 = status2.current; - const current = await this.resolveRef(currentBranch2); - const tracking = await this.resolveRef(trackingBranch); - return current != tracking; - } - async checkRequirements() { - const headExists = await this.plugin.app.vault.adapter.exists(`${this.getRepo().dir}/.git/HEAD`); - return headExists ? "valid" : "missing-repo"; - } - async branchInfo() { - var _a2, _b; - try { - const current = await isomorphic_git_default.currentBranch(this.getRepo()) || ""; - const branches = await isomorphic_git_default.listBranches(this.getRepo()); - const remote = (_a2 = await this.getConfig(`branch.${current}.remote`)) != null ? _a2 : "origin"; - const trackingBranch = (_b = await this.getConfig(`branch.${current}.merge`)) == null ? void 0 : _b.split("refs/heads")[1]; - const tracking = trackingBranch ? remote + trackingBranch : void 0; - return { - current, - tracking, - branches, - remote - }; - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async getCurrentRemote() { - var _a2; - const current = await isomorphic_git_default.currentBranch(this.getRepo()) || ""; - const remote = (_a2 = await this.getConfig(`branch.${current}.remote`)) != null ? _a2 : "origin"; - return remote; - } - async checkout(branch2) { - try { - return this.wrapFS(isomorphic_git_default.checkout({ - ...this.getRepo(), - ref: branch2 - })); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async createBranch(branch2) { - try { - await this.wrapFS(isomorphic_git_default.branch({ ...this.getRepo(), ref: branch2, checkout: true })); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async deleteBranch(branch2) { - try { - await this.wrapFS(isomorphic_git_default.deleteBranch({ ...this.getRepo(), ref: branch2 })); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async branchIsMerged(branch2) { - return true; - } - async init() { - try { - await this.wrapFS(isomorphic_git_default.init(this.getRepo())); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async clone(url, dir) { - const progressNotice = this.showNotice("Initializing clone"); - try { - await this.wrapFS(isomorphic_git_default.clone({ - ...this.getRepo(), - dir, - url, - onProgress: (progress) => { - if (progressNotice !== void 0) { - progressNotice.noticeEl.innerText = this.getProgressText("Cloning", progress); - } - } - })); - progressNotice == null ? void 0 : progressNotice.hide(); - } catch (error) { - progressNotice == null ? void 0 : progressNotice.hide(); - this.plugin.displayError(error); - throw error; - } - } - async setConfig(path2, value) { - try { - return this.wrapFS(isomorphic_git_default.setConfig({ - ...this.getRepo(), - path: path2, - value - })); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async getConfig(path2) { - try { - return this.wrapFS(isomorphic_git_default.getConfig({ - ...this.getRepo(), - path: path2 - })); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async fetch(remote) { - const progressNotice = this.showNotice("Initializing fetch"); - try { - const args = { - ...this.getRepo(), - onProgress: (progress) => { - if (progressNotice !== void 0) { - progressNotice.noticeEl.innerText = this.getProgressText("Fetching", progress); - } - }, - remote: remote != null ? remote : await this.getCurrentRemote() - }; - await this.wrapFS(isomorphic_git_default.fetch(args)); - progressNotice == null ? void 0 : progressNotice.hide(); - } catch (error) { - this.plugin.displayError(error); - progressNotice == null ? void 0 : progressNotice.hide(); - throw error; - } - } - async setRemote(name, url) { - try { - await this.wrapFS(isomorphic_git_default.addRemote({ ...this.getRepo(), remote: name, url, force: true })); - } catch (error) { - this.plugin.displayError(error); - throw error; - } - } - async getRemoteBranches(remote) { - let remoteBranches = []; - remoteBranches.push(...await this.wrapFS(isomorphic_git_default.listBranches({ ...this.getRepo(), remote }))); - remoteBranches.remove("HEAD"); - remoteBranches = remoteBranches.map((e) => `${remote}/${e}`); - return remoteBranches; - } - async getRemotes() { - return (await this.wrapFS(isomorphic_git_default.listRemotes({ ...this.getRepo() }))).map((remoteUrl) => remoteUrl.remote); - } - async removeRemote(remoteName) { - await this.wrapFS(isomorphic_git_default.deleteRemote({ ...this.getRepo(), remote: remoteName })); - } - async getRemoteUrl(remote) { - var _a2; - return (_a2 = (await this.wrapFS(isomorphic_git_default.listRemotes({ ...this.getRepo() }))).filter((item) => item.remote == remote)[0]) == null ? void 0 : _a2.url; - } - updateBasePath(basePath) { - this.getRepo().dir = basePath; - } - async updateUpstreamBranch(remoteBranch) { - const [remote, branch2] = remoteBranch.split("/"); - const branchInfo = await this.branchInfo(); - await this.setConfig(`branch.${branchInfo.current}.merge`, `refs/heads/${branch2}`); - await this.setConfig(`branch.${branch2}.remote`, remote); - } - updateGitPath(gitPath) { - return; - } - async getFileChangesCount(commitHash1, commitHash2) { - return this.walkDifference({ walkers: [isomorphic_git_default.TREE({ ref: commitHash1 }), isomorphic_git_default.TREE({ ref: commitHash2 })] }); - } - async walkDifference({ walkers, dir: base }) { - const res = await this.wrapFS(isomorphic_git_default.walk({ - ...this.getRepo(), - trees: walkers, - map: async function(filepath, [A, B]) { - if (!worthWalking2(filepath, base)) { - return null; - } - if (await (A == null ? void 0 : A.type()) === "tree" || await (B == null ? void 0 : B.type()) === "tree") { - return; - } - const Aoid = await (A == null ? void 0 : A.oid()); - const Boid = await (B == null ? void 0 : B.oid()); - let type = "equal"; - if (Aoid !== Boid) { - type = "modify"; - } - if (Aoid === void 0) { - type = "add"; - } - if (Boid === void 0) { - type = "remove"; - } - if (Aoid === void 0 && Boid === void 0) { - console.log("Something weird happened:"); - console.log(A); - console.log(B); - } - if (type === "equal") { - return; - } - return { - path: filepath, - type - }; - } - })); - return res; - } - async getStagedFiles(dir = ".") { - const res = await this.walkDifference({ - walkers: [isomorphic_git_default.TREE({ ref: "HEAD" }), isomorphic_git_default.STAGE()], - dir - }); - return res.map((file) => { - return { - vault_path: this.getVaultPath(file.path), - filepath: file.path - }; - }); - } - async getUnstagedFiles(base = ".") { - let notice; - const timeout = window.setTimeout(function() { - notice = new import_obsidian5.Notice("This takes longer: Getting status", this.noticeLength); - }, 2e4); - try { - const repo = this.getRepo(); - const res = await this.wrapFS(isomorphic_git_default.walk({ - ...repo, - trees: [isomorphic_git_default.WORKDIR(), isomorphic_git_default.STAGE()], - map: async function(filepath, [workdir, stage]) { - if (!stage && workdir) { - const isIgnored2 = await isomorphic_git_default.isIgnored({ - ...repo, - filepath - }); - if (isIgnored2) { - return null; - } - } - if (!worthWalking2(filepath, base)) { - return null; - } - const [workdirType, stageType] = await Promise.all([ - workdir && workdir.type(), - stage && stage.type() - ]); - const isBlob = [workdirType, stageType].includes("blob"); - if ((workdirType === "tree" || workdirType === "special") && !isBlob) - return; - if (stageType === "commit") - return null; - if ((stageType === "tree" || stageType === "special") && !isBlob) - return; - const stageOid = stageType === "blob" ? await stage.oid() : void 0; - let workdirOid; - if (workdirType === "blob" && stageType !== "blob") { - workdirOid = "42"; - } else if (workdirType === "blob") { - workdirOid = await workdir.oid(); - } - if (!workdirOid) { - return { - filepath, - deleted: true - }; - } - if (workdirOid !== stageOid) { - return { - filepath, - deleted: false - }; - } - return null; - } - })); - window.clearTimeout(timeout); - notice == null ? void 0 : notice.hide(); - return res; - } catch (error) { - window.clearTimeout(timeout); - notice == null ? void 0 : notice.hide(); - this.plugin.displayError(error); - throw error; - } - } - async getDiffString(filePath, stagedChanges = false) { - const map = async (file, [A]) => { - if (filePath == file) { - const oid = await A.oid(); - const contents = await isomorphic_git_default.readBlob({ ...this.getRepo(), oid }); - return contents.blob; - } - }; - const stagedBlob = (await isomorphic_git_default.walk({ - ...this.getRepo(), - trees: [isomorphic_git_default.STAGE()], - map - })).first(); - const stagedContent = new TextDecoder().decode(stagedBlob); - if (stagedChanges) { - const headBlob = await readBlob({ ...this.getRepo(), filepath: filePath, oid: await this.resolveRef("HEAD") }); - const headContent = new TextDecoder().decode(headBlob.blob); - const diff2 = createPatch(filePath, headContent, stagedContent); - return diff2; - } else { - let workdirContent; - if (await app.vault.adapter.exists(filePath)) { - workdirContent = await app.vault.adapter.read(filePath); - } else { - workdirContent = ""; - } - const diff2 = createPatch(filePath, stagedContent, workdirContent); - return diff2; - } - } - async getLastCommitTime() { - const repo = this.getRepo(); - const oid = await this.resolveRef("HEAD"); - const commit2 = await isomorphic_git_default.readCommit({ ...repo, oid }); - const date = commit2.commit.committer.timestamp; - return new Date(date * 1e3); - } - getFileStatusResult(row) { - const status2 = this.status_mapping[`${row[this.HEAD]}${row[this.WORKDIR]}${row[this.STAGE]}`]; - return { - index: status2[0] == "?" ? "U" : status2[0], - working_dir: status2[1] == "?" ? "U" : status2[1], - path: row[this.FILE], - vault_path: this.getVaultPath(row[this.FILE]) - }; - } - showNotice(message, infinity = true) { - if (!this.plugin.settings.disablePopups) { - return new import_obsidian5.Notice(message, infinity ? this.noticeLength : void 0); - } - } -}; -function fromValue2(value) { - let queue = [value]; - return { - next() { - return Promise.resolve({ done: queue.length === 0, value: queue.pop() }); - }, - return() { - queue = []; - return {}; - }, - [Symbol.asyncIterator]() { - return this; - } - }; -} -function getIterator2(iterable) { - if (iterable[Symbol.asyncIterator]) { - return iterable[Symbol.asyncIterator](); - } - if (iterable[Symbol.iterator]) { - return iterable[Symbol.iterator](); - } - if (iterable.next) { - return iterable; - } - return fromValue2(iterable); -} -async function forAwait2(iterable, cb) { - const iter = getIterator2(iterable); - while (true) { - const { value, done } = await iter.next(); - if (value) - await cb(value); - if (done) - break; - } - if (iter.return) - iter.return(); -} -async function collect2(iterable) { - let size = 0; - const buffers = []; - await forAwait2(iterable, (value) => { - buffers.push(value); - size += value.byteLength; - }); - const result = new Uint8Array(size); - let nextIndex = 0; - for (const buffer2 of buffers) { - result.set(buffer2, nextIndex); - nextIndex += buffer2.byteLength; - } - return result; -} - -// src/simpleGit.ts -init_polyfill_buffer(); -var import_child_process2 = __toModule(require("child_process")); -var import_obsidian6 = __toModule(require("obsidian")); -var path = __toModule(require("path")); -var import_path = __toModule(require("path")); - -// node_modules/.pnpm/simple-git@3.15.1_supports-color@7.2.0/node_modules/simple-git/dist/esm/index.js -init_polyfill_buffer(); -var import_file_exists = __toModule(require_dist()); -var import_debug = __toModule(require_browser()); -var import_child_process = __toModule(require("child_process")); -var import_promise_deferred = __toModule(require_dist2()); -var import_promise_deferred2 = __toModule(require_dist2()); +var import_file_exists = __toESM(require_dist(), 1); +var import_debug = __toESM(require_browser(), 1); +var import_child_process = require("child_process"); +var import_promise_deferred = __toESM(require_dist2(), 1); +var import_promise_deferred2 = __toESM(require_dist2(), 1); var __defProp2 = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; @@ -20371,7 +25361,7 @@ var __spreadValues = (a, b) => { return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); -var __markAsModule2 = (target) => __defProp2(target, "__esModule", { value: true }); +var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); var __esm2 = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])(fn = 0)), res; }; @@ -20382,7 +25372,7 @@ var __export2 = (target, all) => { for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); }; -var __reExport2 = (target, module2, copyDefault, desc) => { +var __reExport = (target, module2, copyDefault, desc) => { if (module2 && typeof module2 === "object" || typeof module2 === "function") { for (let key2 of __getOwnPropNames2(module2)) if (!__hasOwnProp2.call(target, key2) && (copyDefault || key2 !== "default")) @@ -20390,9 +25380,9 @@ var __reExport2 = (target, module2, copyDefault, desc) => { } return target; }; -var __toCommonJS = /* @__PURE__ */ ((cache) => { +var __toCommonJS2 = /* @__PURE__ */ ((cache) => { return (module2, temp) => { - return cache && cache.get(module2) || (temp = __reExport2(__markAsModule2({}), module2, 1), cache && cache.set(module2, temp), temp); + return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp); }; })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0); var __async = (__this, __arguments, generator) => { @@ -20537,7 +25527,7 @@ function prefixedArray(input, prefix) { return output; } function bufferToString(input) { - return (Array.isArray(input) ? Buffer2.concat(input) : input).toString("utf-8"); + return (Array.isArray(input) ? Buffer.concat(input) : input).toString("utf-8"); } function pick(source, properties) { return Object.assign({}, ...properties.map((property) => property in source ? { [property]: source[property] } : {})); @@ -20876,7 +25866,7 @@ var init_check_is_repo = __esm2({ })(CheckRepoActions || {}); onError = ({ exitCode }, error, done, fail) => { if (exitCode === 128 && isNotRepoMessage(error)) { - return done(Buffer2.from("false")); + return done(Buffer.from("false")); } fail(error); }; @@ -21202,7 +26192,11 @@ function listConfigTask(scope) { function config_default() { return { addConfig(key2, value, ...rest) { - return this._runTask(addConfigTask(key2, value, rest[0] === true, asConfigScope(rest[1], "local")), trailingFunctionArgument(arguments)); + return this._runTask(addConfigTask(key2, value, rest[0] === true, asConfigScope( + rest[1], + "local" + /* local */ + )), trailingFunctionArgument(arguments)); }, getConfig(key2, scope) { return this._runTask(getConfigTask(key2, asConfigScope(scope, void 0)), trailingFunctionArgument(arguments)); @@ -21382,9 +26376,9 @@ function createLogger(label, verbose, initialStep, infoDebugger = createLog()) { } function step(phase) { const stepPrefix = phase && `[${phase}]` || ""; - const debug2 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP; - const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug2); - return Object.assign(debugDebugger ? debug2 : info, { + const debug22 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP; + const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug22); + return Object.assign(debugDebugger ? debug22 : info, { label, sibling, info, @@ -21397,7 +26391,7 @@ var init_git_logger = __esm2({ init_utils(); import_debug.default.formatters.L = (value) => String(filterHasLength(value) ? value.length : "-"); import_debug.default.formatters.B = (value) => { - if (Buffer2.isBuffer(value)) { + if (Buffer.isBuffer(value)) { return value.toString("utf8"); } return objectToString(value); @@ -21478,7 +26472,7 @@ function pluginContext(task, commands) { function onErrorReceived(target, logger) { return (err) => { logger(`[ERROR] child process exception %o`, err); - target.push(Buffer2.from(String(err.stack), "ascii")); + target.push(Buffer.from(String(err.stack), "ascii")); }; } function onDataReceived(target, name, logger, output) { @@ -21574,7 +26568,7 @@ var init_git_executor_chain = __esm2({ return task.onError(result, error, (newStdOut) => { logger.info(`custom error handler treated as success`); logger(`custom error returned a %s`, objectToString(newStdOut)); - done(new GitOutputStreams(Array.isArray(newStdOut) ? Buffer2.concat(newStdOut) : newStdOut, Buffer2.concat(stdErr))); + done(new GitOutputStreams(Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut, Buffer.concat(stdErr))); }, fail); } if (error) { @@ -21582,7 +26576,7 @@ var init_git_executor_chain = __esm2({ return fail(error); } logger.info(`retrieving task output complete`); - done(new GitOutputStreams(Buffer2.concat(stdOut), Buffer2.concat(stdErr))); + done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr))); }); } gitResponse(task, command, args, outputHandler, logger) { @@ -21716,12 +26710,12 @@ var init_task_callback = __esm2({ init_utils(); } }); -function changeWorkingDirectoryTask(directory, root) { - return adhocExecTask((instance6) => { +function changeWorkingDirectoryTask(directory, root2) { + return adhocExecTask((instance10) => { if (!folderExists(directory)) { throw new Error(`Git.cwd: cannot change to non-directory "${directory}"`); } - return (root || instance6).cwd = directory; + return (root2 || instance10).cwd = directory; }); } var init_change_working_directory = __esm2({ @@ -21730,6 +26724,32 @@ var init_change_working_directory = __esm2({ init_task(); } }); +function checkoutTask(args) { + const commands = ["checkout", ...args]; + if (commands[1] === "-b" && commands.includes("-B")) { + commands[1] = remove2(commands, "-B"); + } + return straightThroughStringTask(commands); +} +function checkout_default() { + return { + checkout() { + return this._runTask(checkoutTask(getTrailingOptions(arguments, 1)), trailingFunctionArgument(arguments)); + }, + checkoutBranch(branchName, startPoint) { + return this._runTask(checkoutTask(["-b", branchName, startPoint, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments)); + }, + checkoutLocalBranch(branchName) { + return this._runTask(checkoutTask(["-b", branchName, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments)); + } + }; +} +var init_checkout = __esm2({ + "src/lib/tasks/checkout.ts"() { + init_utils(); + init_task(); + } +}); function parseCommitResult(stdOut) { const result = { author: null, @@ -21749,10 +26769,10 @@ var init_parse_commit = __esm2({ "src/lib/parsers/parse-commit.ts"() { init_utils(); parsers = [ - new LineParser(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/, (result, [branch2, root, commit2]) => { + new LineParser(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/, (result, [branch2, root2, commit2]) => { result.branch = branch2; result.commit = commit2; - result.root = !!root; + result.root = !!root2; }), new LineParser(/\s*Author:\s(.+)/i, (result, [author]) => { const parts = author.split("<"); @@ -21782,11 +26802,6 @@ var init_parse_commit = __esm2({ ]; } }); -var commit_exports = {}; -__export2(commit_exports, { - commitTask: () => commitTask, - default: () => commit_default -}); function commitTask(message, files, customArgs) { const commands = [ "-c", @@ -22002,11 +27017,12 @@ var init_parse_diff_summary = __esm2({ }) ]; nameStatusParser = [ - new LineParser(/([ACDMRTUXB])\s*(.+)$/, (result, [_status, file]) => { + new LineParser(/([ACDMRTUXB])([0-9][0-9][0-9])?\t(.[^\t]+)\t?(.*)?$/, (result, [status2, _similarity, from, to]) => { result.changed++; result.files.push({ - file, + file: to != null ? to : from, changes: 0, + status: status2, insertions: 0, deletions: 0, binary: false @@ -22014,11 +27030,26 @@ var init_parse_diff_summary = __esm2({ }) ]; diffSummaryParsers = { - [""]: statParser, - ["--stat"]: statParser, - ["--numstat"]: numStatParser, - ["--name-status"]: nameStatusParser, - ["--name-only"]: nameOnlyParser + [ + "" + /* NONE */ + ]: statParser, + [ + "--stat" + /* STAT */ + ]: statParser, + [ + "--numstat" + /* NUM_STAT */ + ]: numStatParser, + [ + "--name-status" + /* NAME_STATUS */ + ]: nameStatusParser, + [ + "--name-only" + /* NAME_ONLY */ + ]: nameOnlyParser }; } }); @@ -22495,7 +27526,7 @@ var init_parse_push = __esm2({ local }); }), - new LineParser(/^[*-=]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => { + new LineParser(/^[=*-]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => { result.pushed.push(pushResultPushedItem(local, remote, type)); }), new LineParser(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/, (result, [local, remote, remoteName]) => { @@ -22662,9 +27693,25 @@ var init_StatusSummary = __esm2({ append(_result.ignored = _result.ignored || [], _file); }), parser2("?", "?", (result, file) => append(result.not_added, file)), - ...conflicts("A", "A", "U"), - ...conflicts("D", "D", "U"), - ...conflicts("U", "A", "D", "U"), + ...conflicts( + "A", + "A", + "U" + /* UNMERGED */ + ), + ...conflicts( + "D", + "D", + "U" + /* UNMERGED */ + ), + ...conflicts( + "U", + "A", + "D", + "U" + /* UNMERGED */ + ), [ "##", (result, line) => { @@ -22756,7 +27803,7 @@ function version_default() { parser: versionParser, onError(result, error, done, fail) { if (result.exitCode === -2) { - return done(Buffer2.from(NOT_INSTALLED)); + return done(Buffer.from(NOT_INSTALLED)); } fail(error); } @@ -22795,6 +27842,7 @@ var init_simple_git_api = __esm2({ "src/lib/simple-git-api.ts"() { init_task_callback(); init_change_working_directory(); + init_checkout(); init_commit(); init_config(); init_grep(); @@ -22869,7 +27917,7 @@ var init_simple_git_api = __esm2({ return this._runTask(statusTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments)); } }; - Object.assign(SimpleGitApi.prototype, commit_default(), config_default(), grep_default(), log_default(), version_default()); + Object.assign(SimpleGitApi.prototype, checkout_default(), commit_default(), config_default(), grep_default(), log_default(), version_default()); } }); var scheduler_exports = {}; @@ -23528,11 +28576,11 @@ var init_tag = __esm2({ } }); var require_git = __commonJS2({ - "src/git.js"(exports, module2) { - var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports)); - var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports)); - var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports)); - var { configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports)); + "src/git.js"(exports2, module2) { + var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS2(git_executor_exports)); + var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS2(simple_git_api_exports)); + var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS2(scheduler_exports)); + var { configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS2(task_exports)); var { asArray: asArray2, filterArray: filterArray2, @@ -23543,41 +28591,40 @@ var require_git = __commonJS2({ getTrailingOptions: getTrailingOptions2, trailingFunctionArgument: trailingFunctionArgument2, trailingOptionsArgument: trailingOptionsArgument2 - } = (init_utils(), __toCommonJS(utils_exports)); - var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS(apply_patch_exports)); + } = (init_utils(), __toCommonJS2(utils_exports)); + var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS2(apply_patch_exports)); var { branchTask: branchTask2, branchLocalTask: branchLocalTask2, deleteBranchesTask: deleteBranchesTask2, deleteBranchTask: deleteBranchTask2 - } = (init_branch(), __toCommonJS(branch_exports)); - var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS(check_ignore_exports)); - var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports)); - var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports)); - var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports)); - var { commitTask: commitTask2 } = (init_commit(), __toCommonJS(commit_exports)); - var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports)); - var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports)); - var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports)); - var { pullTask: pullTask2 } = (init_pull(), __toCommonJS(pull_exports)); - var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS(push_exports)); + } = (init_branch(), __toCommonJS2(branch_exports)); + var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS2(check_ignore_exports)); + var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS2(check_is_repo_exports)); + var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS2(clone_exports)); + var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS2(clean_exports)); + var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS2(diff_exports)); + var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS2(fetch_exports)); + var { moveTask: moveTask2 } = (init_move(), __toCommonJS2(move_exports)); + var { pullTask: pullTask2 } = (init_pull(), __toCommonJS2(pull_exports)); + var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS2(push_exports)); var { addRemoteTask: addRemoteTask2, getRemotesTask: getRemotesTask2, listRemotesTask: listRemotesTask2, remoteTask: remoteTask2, removeRemoteTask: removeRemoteTask2 - } = (init_remote(), __toCommonJS(remote_exports)); - var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS(reset_exports)); - var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS(stash_list_exports)); + } = (init_remote(), __toCommonJS2(remote_exports)); + var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS2(reset_exports)); + var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS2(stash_list_exports)); var { addSubModuleTask: addSubModuleTask2, initSubModuleTask: initSubModuleTask2, subModuleTask: subModuleTask2, updateSubModuleTask: updateSubModuleTask2 - } = (init_sub_module(), __toCommonJS(sub_module_exports)); - var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS(tag_exports)); - var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS(task_exports)); + } = (init_sub_module(), __toCommonJS2(sub_module_exports)); + var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS2(tag_exports)); + var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS2(task_exports)); function Git2(options, plugins) { this._executor = new GitExecutor2(options.binary, options.baseDir, new Scheduler2(options.maxConcurrentProcesses), plugins); this._trimmed = options.trimmed; @@ -23654,16 +28701,6 @@ var require_git = __commonJS2({ Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) { return this._runTask(addAnnotatedTagTask2(tagName, tagMessage), trailingFunctionArgument2(arguments)); }; - Git2.prototype.checkout = function() { - const commands = ["checkout", ...getTrailingOptions2(arguments, true)]; - return this._runTask(straightThroughStringTask2(commands), trailingFunctionArgument2(arguments)); - }; - Git2.prototype.checkoutBranch = function(branchName, startPoint, then) { - return this.checkout(["-b", branchName, startPoint], trailingFunctionArgument2(arguments)); - }; - Git2.prototype.checkoutLocalBranch = function(branchName, then) { - return this.checkout(["-b", branchName], trailingFunctionArgument2(arguments)); - }; Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) { return this._runTask(deleteBranchTask2(branchName, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments)); }; @@ -23866,15 +28903,28 @@ function preventProtocolOverride(arg, next) { } throw new GitPluginError(void 0, "unsafe", "Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol"); } +function preventUploadPack(arg, method2) { + if (/^\s*--(upload|receive)-pack/.test(arg)) { + throw new GitPluginError(void 0, "unsafe", `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`); + } + if (method2 === "clone" && /^\s*-u\b/.test(arg)) { + throw new GitPluginError(void 0, "unsafe", `Use of clone with option -u is not permitted without enabling allowUnsafePack`); + } + if (method2 === "push" && /^\s*--exec\b/.test(arg)) { + throw new GitPluginError(void 0, "unsafe", `Use of push with option --exec is not permitted without enabling allowUnsafePack`); + } +} function blockUnsafeOperationsPlugin({ - allowUnsafeProtocolOverride = false + allowUnsafeProtocolOverride = false, + allowUnsafePack = false } = {}) { return { type: "spawn.args", - action(args, _context) { + action(args, context) { args.forEach((current, index2) => { const next = index2 < args.length ? args[index2 + 1] : ""; allowUnsafeProtocolOverride || preventProtocolOverride(current, next); + allowUnsafePack || preventUploadPack(current, context.method); }); return args; } @@ -23962,7 +29012,7 @@ function isTaskError(result) { return !!(result.exitCode && result.stdErr.length); } function getErrorMessage(result) { - return Buffer2.concat([...result.stdOut, ...result.stdErr]); + return Buffer.concat([...result.stdOut, ...result.stdErr]); } function errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) { return (error, result) => { @@ -23981,7 +29031,7 @@ function errorDetectionPlugin(config) { stdOut: context.stdOut, exitCode: context.exitCode }); - if (Buffer2.isBuffer(error)) { + if (Buffer.isBuffer(error)) { return { error: new GitError(void 0, error.toString("utf-8")) }; } return { @@ -24064,7 +29114,9 @@ function spawnOptionsPlugin(spawnOptions) { }; } function timeoutPlugin({ - block + block, + stdErr = true, + stdOut = true }) { if (block > 0) { return { @@ -24088,8 +29140,8 @@ function timeoutPlugin({ stop(); context.kill(new GitPluginError(void 0, "timeout", `block timeout reached`)); } - (_a2 = context.spawned.stdout) == null ? void 0 : _a2.on("data", wait3); - (_b = context.spawned.stderr) == null ? void 0 : _b.on("data", wait3); + stdOut && ((_a2 = context.spawned.stdout) == null ? void 0 : _a2.on("data", wait3)); + stdErr && ((_b = context.spawned.stderr) == null ? void 0 : _b.on("data", wait3)); context.spawned.on("exit", stop); context.spawned.on("close", stop); wait3(); @@ -24121,7 +29173,307 @@ function gitInstanceFactory(baseDir, options) { init_git_response_error(); var esm_default = gitInstanceFactory; -// src/simpleGit.ts +// src/constants.ts +init_polyfill_buffer(); +var import_obsidian2 = require("obsidian"); +var DATE_FORMAT = "YYYY-MM-DD"; +var DATE_TIME_FORMAT_MINUTES = `${DATE_FORMAT} HH:mm`; +var DATE_TIME_FORMAT_SECONDS = `${DATE_FORMAT} HH:mm:ss`; +var GIT_LINE_AUTHORING_MOVEMENT_DETECTION_MINIMAL_LENGTH = 40; +var DEFAULT_SETTINGS = { + commitMessage: "vault backup: {{date}}", + commitDateFormat: DATE_TIME_FORMAT_SECONDS, + autoSaveInterval: 0, + autoPushInterval: 0, + autoPullInterval: 0, + autoPullOnBoot: false, + disablePush: false, + pullBeforePush: true, + disablePopups: false, + listChangedFilesInMessageBody: false, + showStatusBar: true, + updateSubmodules: false, + syncMethod: "merge", + customMessageOnAutoBackup: false, + autoBackupAfterFileChange: false, + treeStructure: false, + refreshSourceControl: import_obsidian2.Platform.isDesktopApp, + basePath: "", + differentIntervalCommitAndPush: false, + changedFilesInStatusBar: false, + showedMobileNotice: false, + refreshSourceControlTimer: 7e3, + showBranchStatusBar: true, + setLastSaveToLastCommit: false, + submoduleRecurseCheckout: false, + gitDir: "", + showFileMenu: true, + lineAuthor: { + show: false, + followMovement: "inactive", + authorDisplay: "initials", + showCommitHash: false, + dateTimeFormatOptions: "date", + dateTimeFormatCustomString: DATE_TIME_FORMAT_MINUTES, + dateTimeTimezone: "viewer-local", + coloringMaxAge: "1y", + // colors were picked via: + // https://color.adobe.com/de/create/color-accessibility + colorNew: { r: 255, g: 150, b: 150 }, + colorOld: { r: 120, g: 160, b: 255 }, + textColorCss: "var(--text-muted)", + // more pronounced than line numbers, but less than the content text + ignoreWhitespace: false, + gutterSpacingFallbackLength: 5 + } +}; +var SOURCE_CONTROL_VIEW_CONFIG = { + type: "git-view", + name: "Source Control", + icon: "git-pull-request" +}; +var HISTORY_VIEW_CONFIG = { + type: "git-history-view", + name: "History", + icon: "history" +}; +var DIFF_VIEW_CONFIG = { + type: "diff-view", + name: "Diff View", + icon: "git-pull-request" +}; + +// src/types.ts +init_polyfill_buffer(); +function mergeSettingsByPriority(low, high) { + const lineAuthor = Object.assign({}, low.lineAuthor, high.lineAuthor); + return Object.assign({}, low, high, { lineAuthor }); +} + +// src/utils.ts +init_polyfill_buffer(); +var cssColorConverter = __toESM(require_lib3()); +var import_deep_equal = __toESM(require_deep_equal()); +var import_obsidian3 = require("obsidian"); +var worthWalking2 = (filepath, root2) => { + if (filepath === "." || root2 == null || root2.length === 0 || root2 === ".") { + return true; + } + if (root2.length >= filepath.length) { + return root2.startsWith(filepath); + } else { + return filepath.startsWith(root2); + } +}; +function getNewLeaf(event) { + let leaf; + if (event) { + if (event.button === 0 || event.button === 1) { + const type = import_obsidian3.Keymap.isModEvent(event); + leaf = app.workspace.getLeaf(type); + } + } else { + leaf = app.workspace.getLeaf(false); + } + return leaf; +} +function impossibleBranch(x) { + throw new Error("Impossible branch: " + x); +} +function rgbToString(rgb) { + return `rgb(${rgb.r},${rgb.g},${rgb.b})`; +} +function convertToRgb(str) { + var _a2; + const color = (_a2 = cssColorConverter.fromString(str)) == null ? void 0 : _a2.toRgbaArray(); + if (color === void 0) { + return void 0; + } + const [r, g, b] = color; + return { r, g, b }; +} +function momentToEpochSeconds(instant) { + return instant.diff(import_obsidian3.moment.unix(0), "seconds"); +} +function median(array) { + if (array.length === 0) + return void 0; + return array.slice().sort()[Math.floor(array.length / 2)]; +} +function strictDeepEqual(a, b) { + return (0, import_deep_equal.default)(a, b, { strict: true }); +} +function resizeToLength(original, desiredLength, fillChar) { + if (original.length <= desiredLength) { + const prefix = new Array(desiredLength - original.length).fill(fillChar).join(""); + return prefix + original; + } else { + return original.substring(original.length - desiredLength); + } +} +function prefixOfLengthAsWhitespace(toBeRenderedText, whitespacePrefixLength) { + if (whitespacePrefixLength <= 0) + return toBeRenderedText; + const whitespacePrefix = new Array(whitespacePrefixLength).fill(" ").join(""); + const originalSuffix = toBeRenderedText.substring( + whitespacePrefixLength, + toBeRenderedText.length + ); + return whitespacePrefix + originalSuffix; +} +function between(l, x, r) { + return l <= x && x <= r; +} +function splitRemoteBranch(remoteBranch) { + const [remote, ...branch2] = remoteBranch.split("/"); + return [remote, branch2.length === 0 ? void 0 : branch2.join("/")]; +} +function getDisplayPath(path2) { + if (path2.endsWith("/")) + return path2; + return path2.split("/").last().replace(".md", ""); +} + +// src/gitManager/gitManager.ts +init_polyfill_buffer(); +var GitManager = class { + constructor(plugin) { + this.plugin = plugin; + this.app = plugin.app; + } + getVaultPath(path2) { + if (this.plugin.settings.basePath) { + return this.plugin.settings.basePath + "/" + path2; + } else { + return path2; + } + } + asRepositoryRelativePath(path2, relativeToVault) { + return relativeToVault && this.plugin.settings.basePath.length > 0 ? path2.substring(this.plugin.settings.basePath.length + 1) : path2; + } + _getTreeStructure(children2, beginLength = 0) { + const list = []; + children2 = [...children2]; + while (children2.length > 0) { + const first2 = children2.first(); + const restPath = first2.path.substring(beginLength); + if (restPath.contains("/")) { + const title = restPath.substring(0, restPath.indexOf("/")); + const childrenWithSameTitle = children2.filter((item) => { + return item.path.substring(beginLength).startsWith(title + "/"); + }); + childrenWithSameTitle.forEach((item) => children2.remove(item)); + const path2 = first2.path.substring( + 0, + restPath.indexOf("/") + beginLength + ); + list.push({ + title, + path: path2, + vaultPath: this.getVaultPath(path2), + children: this._getTreeStructure( + childrenWithSameTitle, + (beginLength > 0 ? beginLength + title.length : title.length) + 1 + ) + }); + } else { + list.push({ + title: restPath, + data: first2, + path: first2.path, + vaultPath: this.getVaultPath(first2.path) + }); + children2.remove(first2); + } + } + return list; + } + /* + * Sorts the children and simplifies the title + * If a node only contains another subdirectory, that subdirectory is moved up one level and integrated into the parent node + */ + simplify(tree) { + var _a2, _b, _c, _d; + for (const node of tree) { + while (true) { + const singleChild = ((_a2 = node.children) == null ? void 0 : _a2.length) == 1; + const singleChildIsDir = ((_c = (_b = node.children) == null ? void 0 : _b.first()) == null ? void 0 : _c.data) == void 0; + if (!(node.children != void 0 && singleChild && singleChildIsDir)) + break; + const child = node.children.first(); + node.title += "/" + child.title; + node.data = child.data; + node.path = child.path; + node.vaultPath = child.vaultPath; + node.children = child.children; + } + if (node.children != void 0) { + this.simplify(node.children); + } + (_d = node.children) == null ? void 0 : _d.sort((a, b) => { + const dirCompare = (b.data == void 0 ? 1 : 0) - (a.data == void 0 ? 1 : 0); + if (dirCompare != 0) { + return dirCompare; + } else { + return a.title.localeCompare(b.title); + } + }); + } + return tree.sort((a, b) => { + const dirCompare = (b.data == void 0 ? 1 : 0) - (a.data == void 0 ? 1 : 0); + if (dirCompare != 0) { + return dirCompare; + } else { + return a.title.localeCompare(b.title); + } + }); + } + getTreeStructure(children2) { + const tree = this._getTreeStructure(children2); + const res = this.simplify(tree); + return res; + } + async formatCommitMessage(template) { + let status2; + if (template.includes("{{numFiles}}")) { + status2 = await this.status(); + const numFiles = status2.staged.length; + template = template.replace("{{numFiles}}", String(numFiles)); + } + if (template.includes("{{hostname}}")) { + const hostname = this.plugin.localStorage.getHostname() || ""; + template = template.replace("{{hostname}}", hostname); + } + if (template.includes("{{files}}")) { + status2 = status2 != null ? status2 : await this.status(); + const changeset = {}; + status2.staged.forEach((value) => { + if (value.index in changeset) { + changeset[value.index].push(value.path); + } else { + changeset[value.index] = [value.path]; + } + }); + const chunks = []; + for (const [action, files2] of Object.entries(changeset)) { + chunks.push(action + " " + files2.join(" ")); + } + const files = chunks.join(", "); + template = template.replace("{{files}}", files); + } + const moment5 = window.moment; + template = template.replace( + "{{date}}", + moment5().format(this.plugin.settings.commitDateFormat) + ); + if (this.plugin.settings.listChangedFilesInMessageBody) { + template = template + "\n\nAffected files:\n" + (status2 != null ? status2 : await this.status()).staged.map((e) => e.path).join("\n"); + } + return template; + } +}; + +// src/gitManager/simpleGit.ts var SimpleGit = class extends GitManager { constructor(plugin) { super(plugin); @@ -24132,11 +29484,13 @@ var SimpleGit = class extends GitManager { const path2 = adapter.getBasePath(); let basePath = path2; if (this.plugin.settings.basePath) { - const exists2 = await adapter.exists((0, import_obsidian6.normalizePath)(this.plugin.settings.basePath)); + const exists2 = await adapter.exists( + (0, import_obsidian4.normalizePath)(this.plugin.settings.basePath) + ); if (exists2) { basePath = path2 + import_path.sep + this.plugin.settings.basePath; } else if (!ignoreError) { - new import_obsidian6.Notice("ObsidianGit: Base path does not exist"); + new import_obsidian4.Notice("ObsidianGit: Base path does not exist"); } } this.git = esm_default({ @@ -24158,15 +29512,16 @@ var SimpleGit = class extends GitManager { const [key2, value] = envVar.split("="); process.env[key2] = value; } - const debug2 = require_browser(); - debug2.enable("simple-git"); - await this.git.cwd(await this.git.revparse("--show-toplevel")); + import_debug2.default.enable("simple-git"); + if (await this.git.checkIsRepo()) { + await this.git.cwd(await this.git.revparse("--show-toplevel")); + } } } async status() { - this.plugin.setState(PluginState.status); + this.plugin.setState(1 /* status */); const status2 = await this.git.status((err) => this.onError(err)); - this.plugin.setState(PluginState.idle); + this.plugin.setState(0 /* idle */); return { changed: status2.files.filter((e) => e.working_dir !== " ").map((e) => { const res = this.formatPath(e); @@ -24186,9 +29541,21 @@ var SimpleGit = class extends GitManager { vault_path: this.getVaultPath(res.path) }; }), - conflicted: status2.conflicted.map((path2) => this.formatPath({ path: path2 }).path) + conflicted: status2.conflicted.map( + (path2) => this.formatPath({ path: path2 }).path + ) }; } + async submoduleAwareHeadRevisonInContainingDirectory(filepath) { + const repoPath = this.asRepositoryRelativePath(filepath, true); + const containingDirectory = path.dirname(repoPath); + const args = ["-C", containingDirectory, "rev-parse", "HEAD"]; + const result = this.git.raw(args); + result.catch( + (err) => console.warn("obsidian-git: rev-parse error:", err) + ); + return result; + } async getSubmodulePaths() { return new Promise(async (resolve) => { this.git.outputHandler(async (cmd, stdout, stderr, args) => { @@ -24196,7 +29563,7 @@ var SimpleGit = class extends GitManager { return; } let body = ""; - const root = this.app.vault.adapter.getBasePath() + (this.plugin.settings.basePath ? "/" + this.plugin.settings.basePath : ""); + const root2 = this.app.vault.adapter.getBasePath() + (this.plugin.settings.basePath ? "/" + this.plugin.settings.basePath : ""); stdout.on("data", (chunk) => { body += chunk.toString("utf8"); }); @@ -24205,7 +29572,7 @@ var SimpleGit = class extends GitManager { const strippedSubmods = submods.map((i) => { const submod = i.match(/'([^']*)'/); if (submod != void 0) { - return root + "/" + submod[1] + import_path.sep; + return root2 + "/" + submod[1] + import_path.sep; } }).filter((i) => !!i); strippedSubmods.reverse(); @@ -24217,6 +29584,7 @@ var SimpleGit = class extends GitManager { }); }); } + //Remove wrong `"` like "My file.md" formatPath(path2, renamed = false) { function format(path3) { if (path3 == void 0) @@ -24238,64 +29606,137 @@ var SimpleGit = class extends GitManager { }; } } + async blame(path2, trackMovement, ignoreWhitespace) { + path2 = this.asRepositoryRelativePath(path2, true); + if (!await this.isTracked(path2)) + return "untracked"; + const inSubmodule = await this.getSubmoduleOfFile(path2); + const args = inSubmodule ? ["-C", inSubmodule.submodule] : []; + const relativePath = inSubmodule ? inSubmodule.relativeFilepath : path2; + args.push("blame", "--porcelain"); + if (ignoreWhitespace) + args.push("-w"); + const trackCArg = `-C${GIT_LINE_AUTHORING_MOVEMENT_DETECTION_MINIMAL_LENGTH}`; + switch (trackMovement) { + case "inactive": + break; + case "same-commit": + args.push("-C", trackCArg); + break; + case "all-commits": + args.push("-C", "-C", trackCArg); + break; + default: + impossibleBranch(trackMovement); + } + args.push("--", relativePath); + const rawBlame = await this.git.raw( + args, + (err) => err && console.warn("git-blame", err) + ); + return parseBlame(rawBlame); + } + async isTracked(path2) { + const inSubmodule = await this.getSubmoduleOfFile(path2); + const args = inSubmodule ? ["-C", inSubmodule.submodule] : []; + const relativePath = inSubmodule ? inSubmodule.relativeFilepath : path2; + args.push("ls-files", "--", relativePath); + return this.git.raw(args, (err) => err && console.warn("ls-files", err)).then((x) => x.trim() !== ""); + } async commitAll({ message }) { if (this.plugin.settings.updateSubmodules) { - this.plugin.setState(PluginState.commit); + this.plugin.setState(4 /* commit */); const submodulePaths = await this.getSubmodulePaths(); for (const item of submodulePaths) { await this.git.cwd({ path: item, root: false }).add("-A", (err) => this.onError(err)); - await this.git.cwd({ path: item, root: false }).commit(await this.formatCommitMessage(message), (err) => this.onError(err)); + await this.git.cwd({ path: item, root: false }).commit( + await this.formatCommitMessage(message), + (err) => this.onError(err) + ); } } - this.plugin.setState(PluginState.add); + this.plugin.setState(3 /* add */); await this.git.add("-A", (err) => this.onError(err)); - this.plugin.setState(PluginState.commit); - return (await this.git.commit(await this.formatCommitMessage(message), (err) => this.onError(err))).summary.changes; + this.plugin.setState(4 /* commit */); + const res = await this.git.commit( + await this.formatCommitMessage(message), + (err) => this.onError(err) + ); + dispatchEvent(new CustomEvent("git-head-update")); + return res.summary.changes; } async commit(message) { - this.plugin.setState(PluginState.commit); - const res = (await this.git.commit(await this.formatCommitMessage(message), (err) => this.onError(err))).summary.changes; - this.plugin.setState(PluginState.idle); + this.plugin.setState(4 /* commit */); + const res = (await this.git.commit( + await this.formatCommitMessage(message), + (err) => this.onError(err) + )).summary.changes; + dispatchEvent(new CustomEvent("git-head-update")); + this.plugin.setState(0 /* idle */); return res; } async stage(path2, relativeToVault) { - this.plugin.setState(PluginState.add); - path2 = this.getPath(path2, relativeToVault); + this.plugin.setState(3 /* add */); + path2 = this.asRepositoryRelativePath(path2, relativeToVault); await this.git.add(["--", path2], (err) => this.onError(err)); - this.plugin.setState(PluginState.idle); + this.plugin.setState(0 /* idle */); } async stageAll({ dir }) { - this.plugin.setState(PluginState.add); + this.plugin.setState(3 /* add */); await this.git.add(dir != null ? dir : "-A", (err) => this.onError(err)); - this.plugin.setState(PluginState.idle); + this.plugin.setState(0 /* idle */); } async unstageAll({ dir }) { - this.plugin.setState(PluginState.add); - await this.git.reset(dir != void 0 ? ["--", dir] : [], (err) => this.onError(err)); - this.plugin.setState(PluginState.idle); + this.plugin.setState(3 /* add */); + await this.git.reset( + dir != void 0 ? ["--", dir] : [], + (err) => this.onError(err) + ); + this.plugin.setState(0 /* idle */); } async unstage(path2, relativeToVault) { - this.plugin.setState(PluginState.add); - path2 = this.getPath(path2, relativeToVault); + this.plugin.setState(3 /* add */); + path2 = this.asRepositoryRelativePath(path2, relativeToVault); await this.git.reset(["--", path2], (err) => this.onError(err)); - this.plugin.setState(PluginState.idle); + this.plugin.setState(0 /* idle */); } async discard(filepath) { - this.plugin.setState(PluginState.add); + this.plugin.setState(3 /* add */); await this.git.checkout(["--", filepath], (err) => this.onError(err)); - this.plugin.setState(PluginState.idle); + this.plugin.setState(0 /* idle */); + } + async hashObject(filepath) { + filepath = this.asRepositoryRelativePath(filepath, true); + const inSubmodule = await this.getSubmoduleOfFile(filepath); + const args = inSubmodule ? ["-C", inSubmodule.submodule] : []; + const relativeFilepath = inSubmodule ? inSubmodule.relativeFilepath : filepath; + args.push("hash-object", "--", relativeFilepath); + const revision = this.git.raw(args); + revision.catch( + (err) => err && console.warn("obsidian-git. hash-object failed:", err == null ? void 0 : err.message) + ); + return revision; } async discardAll({ dir }) { return this.discard(dir != null ? dir : "."); } async pull() { - this.plugin.setState(PluginState.pull); + this.plugin.setState(2 /* pull */); if (this.plugin.settings.updateSubmodules) - await this.git.subModule(["update", "--remote", "--merge", "--recursive"], (err) => this.onError(err)); + await this.git.subModule( + ["update", "--remote", "--merge", "--recursive"], + (err) => this.onError(err) + ); const branchInfo = await this.branchInfo(); - const localCommit = await this.git.revparse([branchInfo.current], (err) => this.onError(err)); + const localCommit = await this.git.revparse( + [branchInfo.current], + (err) => this.onError(err) + ); await this.git.fetch((err) => this.onError(err)); - const upstreamCommit = await this.git.revparse([branchInfo.tracking], (err) => this.onError(err)); + const upstreamCommit = await this.git.revparse( + [branchInfo.tracking], + (err) => this.onError(err) + ); if (localCommit !== upstreamCommit) { if (this.plugin.settings.syncMethod === "merge" || this.plugin.settings.syncMethod === "rebase") { try { @@ -24307,19 +29748,37 @@ var SimpleGit = class extends GitManager { await this.git.rebase([branchInfo.tracking]); } } catch (err) { - this.plugin.displayError(`Pull failed (${this.plugin.settings.syncMethod}): ${err.message}`); + this.plugin.displayError( + `Pull failed (${this.plugin.settings.syncMethod}): ${err.message}` + ); return; } } else if (this.plugin.settings.syncMethod === "reset") { try { - await this.git.raw(["update-ref", `refs/heads/${branchInfo.current}`, upstreamCommit], (err) => this.onError(err)); + await this.git.raw( + [ + "update-ref", + `refs/heads/${branchInfo.current}`, + upstreamCommit + ], + (err) => this.onError(err) + ); await this.unstageAll({}); } catch (err) { - this.plugin.displayError(`Sync failed (${this.plugin.settings.syncMethod}): ${err.message}`); + this.plugin.displayError( + `Sync failed (${this.plugin.settings.syncMethod}): ${err.message}` + ); } } - const afterMergeCommit = await this.git.revparse([branchInfo.current], (err) => this.onError(err)); - const filesChanged = await this.git.diff([`${localCommit}..${afterMergeCommit}`, "--name-only"]); + dispatchEvent(new CustomEvent("git-head-update")); + const afterMergeCommit = await this.git.revparse( + [branchInfo.current], + (err) => this.onError(err) + ); + const filesChanged = await this.git.diff([ + `${localCommit}..${afterMergeCommit}`, + "--name-only" + ]); return filesChanged.split(/\r\n|\r|\n/).filter((value) => value.length > 0).map((e) => { return { path: e, @@ -24332,16 +29791,39 @@ var SimpleGit = class extends GitManager { } } async push() { - this.plugin.setState(PluginState.status); + this.plugin.setState(1 /* status */); const status2 = await this.git.status(); const trackingBranch = status2.tracking; const currentBranch2 = status2.current; - const remoteChangedFiles = (await this.git.diffSummary([currentBranch2, trackingBranch, "--"], (err) => this.onError(err))).changed; - this.plugin.setState(PluginState.push); + const remoteChangedFiles = (await this.git.diffSummary( + [currentBranch2, trackingBranch, "--"], + (err) => this.onError(err) + )).changed; + this.plugin.setState(5 /* push */); if (this.plugin.settings.updateSubmodules) { - await this.git.env({ ...process.env, "OBSIDIAN_GIT": 1 }).subModule(["foreach", "--recursive", `tracking=$(git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"); echo $tracking; if [ ! -z "$(git diff --shortstat $tracking)" ]; then git push; fi`], (err) => this.onError(err)); + await this.git.env({ ...process.env, OBSIDIAN_GIT: 1 }).subModule( + [ + "foreach", + "--recursive", + `tracking=$(git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"); echo $tracking; if [ ! -z "$(git diff --shortstat $tracking)" ]; then git push; fi` + ], + (err) => this.onError(err) + ); } - await this.git.env({ ...process.env, "OBSIDIAN_GIT": 1 }).push((err) => this.onError(err)); + await this.git.env({ ...process.env, OBSIDIAN_GIT: 1 }).push((err) => this.onError(err)); + return remoteChangedFiles; + } + async getUnpushedCommits() { + const status2 = await this.git.status(); + const trackingBranch = status2.tracking; + const currentBranch2 = status2.current; + if (trackingBranch == null || currentBranch2 == null) { + return 0; + } + const remoteChangedFiles = (await this.git.diffSummary( + [currentBranch2, trackingBranch, "--"], + (err) => this.onError(err) + )).changed; return remoteChangedFiles; } async canPush() { @@ -24365,7 +29847,10 @@ var SimpleGit = class extends GitManager { } async branchInfo() { const status2 = await this.git.status((err) => this.onError(err)); - const branches = await this.git.branch(["--no-color"], (err) => this.onError(err)); + const branches = await this.git.branch( + ["--no-color"], + (err) => this.onError(err) + ); return { current: status2.current || void 0, tracking: status2.tracking || void 0, @@ -24373,23 +29858,61 @@ var SimpleGit = class extends GitManager { }; } async getRemoteUrl(remote) { - return await this.git.remote(["get-url", remote], (err, url) => this.onError(err)) || void 0; + return await this.git.remote( + ["get-url", remote], + (err, url) => this.onError(err) + ) || void 0; } - async log(file, relativeToVault = true) { - const path2 = this.getPath(file, relativeToVault); - const res = await this.git.log({ file: path2 }, (err) => this.onError(err)); - return res.all; + // https://github.com/kometenstaub/obsidian-version-history-diff/issues/3 + async log(file, relativeToVault = true, limit) { + let path2; + if (file) { + path2 = this.asRepositoryRelativePath(file, relativeToVault); + } + const res = await this.git.log( + { + file: path2, + maxCount: limit, + "-m": null, + "--name-status": null + }, + (err) => this.onError(err) + ); + return res.all.map((e) => { + var _a2, _b; + return { + ...e, + refs: e.refs.split(", "), + diff: { + ...e.diff, + files: e.diff.files.map((f) => ({ + ...f, + status: f.status, + path: f.file, + hash: e.hash, + vault_path: this.getVaultPath(f.file) + })) + }, + fileName: (_b = (_a2 = e.diff) == null ? void 0 : _a2.files.first()) == null ? void 0 : _b.file + }; + }); } async show(commitHash, file, relativeToVault = true) { - const path2 = this.getPath(file, relativeToVault); - return this.git.show([commitHash + ":" + path2], (err) => this.onError(err)); + const path2 = this.asRepositoryRelativePath(file, relativeToVault); + return this.git.show( + [commitHash + ":" + path2], + (err) => this.onError(err) + ); } - async checkout(branch2) { + async checkout(branch2, remote) { + if (remote) { + branch2 = `${remote}/${branch2}`; + } await this.git.checkout(branch2, (err) => this.onError(err)); if (this.plugin.settings.submoduleRecurseCheckout) { const submodulePaths = await this.getSubmodulePaths(); for (const submodulePath of submodulePaths) { - let branchSummary = await this.git.cwd({ path: submodulePath, root: false }).branch(); + const branchSummary = await this.git.cwd({ path: submodulePath, root: false }).branch(); if (Object.keys(branchSummary.branches).includes(branch2)) { await this.git.cwd({ path: submodulePath, root: false }).checkout(branch2, (err) => this.onError(err)); } @@ -24400,17 +29923,31 @@ var SimpleGit = class extends GitManager { await this.git.checkout(["-b", branch2], (err) => this.onError(err)); } async deleteBranch(branch2, force) { - await this.git.branch([force ? "-D" : "-d", branch2], (err) => this.onError(err)); + await this.git.branch( + [force ? "-D" : "-d", branch2], + (err) => this.onError(err) + ); } async branchIsMerged(branch2) { - const notMergedBranches = await this.git.branch(["--no-merged"], (err) => this.onError(err)); + const notMergedBranches = await this.git.branch( + ["--no-merged"], + (err) => this.onError(err) + ); return !notMergedBranches.all.contains(branch2); } async init() { await this.git.init(false, (err) => this.onError(err)); } - async clone(url, dir) { - await this.git.clone(url, path.join(this.app.vault.adapter.getBasePath(), dir), [], (err) => this.onError(err)); + async clone(url, dir, depth) { + await this.git.clone( + url, + path.join( + this.app.vault.adapter.getBasePath(), + dir + ), + depth ? ["--depth", `${depth}`] : [], + (err) => this.onError(err) + ); } async setConfig(path2, value) { if (value == void 0) { @@ -24420,21 +29957,36 @@ var SimpleGit = class extends GitManager { } } async getConfig(path2) { - const config = await this.git.listConfig("local", (err) => this.onError(err)); + const config = await this.git.listConfig( + "local", + (err) => this.onError(err) + ); return config.all[path2]; } async fetch(remote) { - await this.git.fetch(remote != void 0 ? [remote] : [], (err) => this.onError(err)); + await this.git.fetch( + remote != void 0 ? [remote] : [], + (err) => this.onError(err) + ); } async setRemote(name, url) { if ((await this.getRemotes()).includes(name)) - await this.git.remote(["set-url", name, url], (err) => this.onError(err)); + await this.git.remote( + ["set-url", name, url], + (err) => this.onError(err) + ); else { - await this.git.remote(["add", name, url], (err) => this.onError(err)); + await this.git.remote( + ["add", name, url], + (err) => this.onError(err) + ); } } async getRemoteBranches(remote) { - const res = await this.git.branch(["-r", "--list", `${remote}*`], (err) => this.onError(err)); + const res = await this.git.branch( + ["-r", "--list", `${remote}*`], + (err) => this.onError(err) + ); console.log(remote); console.log(res); const list = []; @@ -24463,7 +30015,14 @@ var SimpleGit = class extends GitManager { await this.git.branch(["--set-upstream", remoteBranch]); } catch (e2) { console.error(e2); - await this.git.push(["--set-upstream", ...remoteBranch.split("/")], (err) => this.onError(err)); + await this.git.push( + // A type error occurs here because the third element could be undefined. + // However, it is unlikely to be undefined due to the `remoteBranch`'s format, and error handling is in place. + // Therefore, we temporarily ignore the error. + // @ts-ignore + ["--set-upstream", ...splitRemoteBranch(remoteBranch)], + (err) => this.onError(err) + ); } } } @@ -24473,15 +30032,47 @@ var SimpleGit = class extends GitManager { updateBasePath(basePath) { this.setGitInstance(true); } - async getDiffString(filePath, stagedChanges = false) { + async getDiffString(filePath, stagedChanges = false, hash2) { if (stagedChanges) return await this.git.diff(["--cached", "--", filePath]); + if (hash2) + return await this.git.show([`${hash2}`, "--", filePath]); else return await this.git.diff(["--", filePath]); } async diff(file, commit1, commit2) { return await this.git.diff([`${commit1}..${commit2}`, "--", file]); } + async getSubmoduleOfFile(repositoryRelativeFile) { + let submoduleRoot = await this.git.raw( + [ + "-C", + path.dirname(repositoryRelativeFile), + "rev-parse", + "--show-toplevel" + ], + (err) => err && console.warn("get-submodule-of-file", err == null ? void 0 : err.message) + ); + submoduleRoot = submoduleRoot.trim(); + const superProject = await this.git.raw( + [ + "-C", + path.dirname(repositoryRelativeFile), + "rev-parse", + "--show-superproject-working-tree" + ], + (err) => err && console.warn("get-submodule-of-file", err == null ? void 0 : err.message) + ); + if (superProject.trim() === "") { + return void 0; + } + const fsAdapter = this.app.vault.adapter; + const absolutePath = fsAdapter.getFullPath( + path.normalize(repositoryRelativeFile) + ); + const newRelativePath = path.relative(submoduleRoot, absolutePath); + return { submodule: submoduleRoot, relativeFilepath: newRelativePath }; + } async getLastCommitTime() { const res = await this.git.log({ n: 1 }, (err) => this.onError(err)); if (res != null && res.latest != null) { @@ -24489,9 +30080,13 @@ var SimpleGit = class extends GitManager { } } isGitInstalled() { - const command = (0, import_child_process2.spawnSync)(this.plugin.localStorage.getGitPath() || "git", ["--version"], { - stdio: "ignore" - }); + const command = (0, import_child_process2.spawnSync)( + this.plugin.localStorage.getGitPath() || "git", + ["--version"], + { + stdio: "ignore" + } + ); if (command.error) { console.error(command.error); return false; @@ -24500,23 +30095,1944 @@ var SimpleGit = class extends GitManager { } onError(error) { if (error) { - const networkFailure = error.message.contains("Could not resolve host") || error.message.match(/ssh: connect to host .*? port .*?: Operation timed out/) || error.message.match(/ssh: connect to host .*? port .*?: Network is unreachable/); + const networkFailure = error.message.contains("Could not resolve host") || error.message.match( + /ssh: connect to host .*? port .*?: Operation timed out/ + ) || error.message.match( + /ssh: connect to host .*? port .*?: Network is unreachable/ + ); if (!networkFailure) { this.plugin.displayError(error.message); - this.plugin.setState(PluginState.idle); + this.plugin.setState(0 /* idle */); } else if (!this.plugin.offlineMode) { - this.plugin.displayError("Git: Going into offline mode. Future network errors will no longer be displayed.", 2e3); + this.plugin.displayError( + "Git: Going into offline mode. Future network errors will no longer be displayed.", + 2e3 + ); } if (networkFailure) { this.plugin.offlineMode = true; - this.plugin.setState(PluginState.idle); + this.plugin.setState(0 /* idle */); } } } }; +var zeroCommit = { + hash: "000000", + isZeroCommit: true, + summary: "" +}; +function parseBlame(blameOutputUnnormalized) { + const blameOutput = blameOutputUnnormalized.replace("\r\n", "\n"); + const blameLines = blameOutput.split("\n"); + const result = { + commits: /* @__PURE__ */ new Map(), + hashPerLine: [void 0], + // one-based indices + originalFileLineNrPerLine: [void 0], + finalFileLineNrPerLine: [void 0], + groupSizePerStartingLine: /* @__PURE__ */ new Map() + }; + let line = 1; + for (let bi = 0; bi < blameLines.length; ) { + if (startsWithNonWhitespace(blameLines[bi])) { + const lineInfo = blameLines[bi].split(" "); + const commitHash = parseLineInfoInto(lineInfo, line, result); + bi++; + for (; startsWithNonWhitespace(blameLines[bi]); bi++) { + const spaceSeparatedHeaderValues = blameLines[bi].split(" "); + parseHeaderInto(spaceSeparatedHeaderValues, result, line); + } + finalizeBlameCommitInfo(result.commits.get(commitHash)); + line += 1; + } else if (blameLines[bi] === "" && bi === blameLines.length - 1) { + } else { + throw Error( + `Expected non-whitespace line or EOF, but found: ${blameLines[bi]}` + ); + } + bi++; + } + return result; +} +function parseLineInfoInto(lineInfo, line, result) { + const hash2 = lineInfo[0]; + result.hashPerLine.push(hash2); + result.originalFileLineNrPerLine.push(parseInt(lineInfo[1])); + result.finalFileLineNrPerLine.push(parseInt(lineInfo[2])); + lineInfo.length >= 4 && result.groupSizePerStartingLine.set(line, parseInt(lineInfo[3])); + if (parseInt(lineInfo[2]) !== line) { + throw Error( + `git-blame output is out of order: ${line} vs ${lineInfo[2]}` + ); + } + return hash2; +} +function parseHeaderInto(header, out, line) { + const key2 = header[0]; + const value = header.slice(1).join(" "); + const commitHash = out.hashPerLine[line]; + const commit2 = out.commits.get(commitHash) || { + hash: commitHash, + author: {}, + committer: {}, + previous: {} + }; + switch (key2) { + case "summary": + commit2.summary = value; + break; + case "author": + commit2.author.name = value; + break; + case "author-mail": + commit2.author.email = removeEmailBrackets(value); + break; + case "author-time": + commit2.author.epochSeconds = parseInt(value); + break; + case "author-tz": + commit2.author.tz = value; + break; + case "committer": + commit2.committer.name = value; + break; + case "committer-mail": + commit2.committer.email = removeEmailBrackets(value); + break; + case "committer-time": + commit2.committer.epochSeconds = parseInt(value); + break; + case "committer-tz": + commit2.committer.tz = value; + break; + case "previous": + commit2.previous.commitHash = value; + break; + case "filename": + commit2.previous.filename = value; + break; + } + out.commits.set(commitHash, commit2); +} +function finalizeBlameCommitInfo(commit2) { + if (commit2.summary === void 0) { + throw Error(`Summary not provided for commit: ${commit2.hash}`); + } + if (isUndefinedOrEmptyObject(commit2.author)) { + commit2.author = void 0; + } + if (isUndefinedOrEmptyObject(commit2.committer)) { + commit2.committer = void 0; + } + if (isUndefinedOrEmptyObject(commit2.previous)) { + commit2.previous = void 0; + } + commit2.isZeroCommit = Boolean(commit2.hash.match(/^0*$/)); +} +function isUndefinedOrEmptyObject(obj) { + return !obj || Object.keys(obj).length === 0; +} +function startsWithNonWhitespace(str) { + return str.length > 0 && str[0].trim() === str[0]; +} +function removeEmailBrackets(gitEmail) { + const prefixCleaned = gitEmail.startsWith("<") ? gitEmail.substring(1) : gitEmail; + return prefixCleaned.endsWith(">") ? prefixCleaned.substring(0, prefixCleaned.length - 1) : prefixCleaned; +} -// src/settings.ts -var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { +// src/lineAuthor/lineAuthorProvider.ts +init_polyfill_buffer(); +var import_state4 = require("@codemirror/state"); + +// src/lineAuthor/control.ts +init_polyfill_buffer(); +var import_state2 = require("@codemirror/state"); +var import_obsidian9 = require("obsidian"); + +// src/lineAuthor/eventsPerFilepath.ts +init_polyfill_buffer(); +var SECONDS = 1e3; +var REMOVE_STALES_FREQUENCY = 60 * SECONDS; +var EventsPerFilePath = class { + constructor() { + this.eventsPerFilepath = /* @__PURE__ */ new Map(); + this.startRemoveStalesSubscribersInterval(); + } + /** + * Run the {@link handler} on the subscribers to {@link filepath}. + */ + ifFilepathDefinedTransformSubscribers(filepath, handler) { + if (!filepath) + return; + this.ensureInitialized(filepath); + return handler(this.eventsPerFilepath.get(filepath)); + } + forEachSubscriber(handler) { + this.eventsPerFilepath.forEach((subs) => subs.forEach(handler)); + } + ensureInitialized(filepath) { + if (!this.eventsPerFilepath.get(filepath)) + this.eventsPerFilepath.set(filepath, /* @__PURE__ */ new Set()); + } + startRemoveStalesSubscribersInterval() { + this.removeStalesSubscribersTimer = window.setInterval( + () => this == null ? void 0 : this.forEachSubscriber((las) => las == null ? void 0 : las.removeIfStale()), + REMOVE_STALES_FREQUENCY + ); + } + clear() { + window.clearInterval(this.removeStalesSubscribersTimer); + this.eventsPerFilepath.clear(); + } +}; +var eventsPerFilePathSingleton = new EventsPerFilePath(); + +// src/lineAuthor/model.ts +init_polyfill_buffer(); +var import_state = require("@codemirror/state"); +var import_js_sha256 = __toESM(require_sha256()); + +// src/setting/settings.ts +init_polyfill_buffer(); +var import_obsidian8 = require("obsidian"); + +// src/gitManager/isomorphicGit.ts +init_polyfill_buffer(); + +// node_modules/.pnpm/diff@5.1.0/node_modules/diff/lib/index.mjs +init_polyfill_buffer(); +function Diff() { +} +Diff.prototype = { + diff: function diff(oldString, newString) { + var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var callback = options.callback; + if (typeof options === "function") { + callback = options; + options = {}; + } + this.options = options; + var self2 = this; + function done(value) { + if (callback) { + setTimeout(function() { + callback(void 0, value); + }, 0); + return true; + } else { + return value; + } + } + oldString = this.castInput(oldString); + newString = this.castInput(newString); + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + var newLen = newString.length, oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + if (options.maxEditLength) { + maxEditLength = Math.min(maxEditLength, options.maxEditLength); + } + var bestPath = [{ + newPos: -1, + components: [] + }]; + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + return done([{ + value: this.join(newString), + count: newString.length + }]); + } + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = void 0; + var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + if (addPath) { + bestPath[diagonalPath - 1] = void 0; + } + var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + if (!canAdd && !canRemove) { + bestPath[diagonalPath] = void 0; + continue; + } + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self2.pushComponent(basePath.components, void 0, true); + } else { + basePath = addPath; + basePath.newPos++; + self2.pushComponent(basePath.components, true, void 0); + } + _oldPos = self2.extractCommon(basePath, newString, oldString, diagonalPath); + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues(self2, basePath.components, newString, oldString, self2.useLongestToken)); + } else { + bestPath[diagonalPath] = basePath; + } + } + editLength++; + } + if (callback) { + (function exec() { + setTimeout(function() { + if (editLength > maxEditLength) { + return callback(); + } + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + if (ret) { + return ret; + } + } + } + }, + pushComponent: function pushComponent(components, added, removed) { + var last2 = components[components.length - 1]; + if (last2 && last2.added === added && last2.removed === removed) { + components[components.length - 1] = { + count: last2.count + 1, + added, + removed + }; + } else { + components.push({ + count: 1, + added, + removed + }); + } + }, + extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0; + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + if (commonCount) { + basePath.components.push({ + count: commonCount + }); + } + basePath.newPos = newPos; + return oldPos; + }, + equals: function equals(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + removeEmpty: function removeEmpty(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + return ret; + }, + castInput: function castInput(value) { + return value; + }, + tokenize: function tokenize(value) { + return value.split(""); + }, + join: function join3(chars) { + return chars.join(""); + } +}; +function buildValues(diff2, components, newString, oldString, useLongestToken) { + var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function(value2, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value2.length ? oldValue : value2; + }); + component.value = diff2.join(value); + } else { + component.value = diff2.join(newString.slice(newPos, newPos + component.count)); + } + newPos += component.count; + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff2.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } + var lastComponent = components[componentLen - 1]; + if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff2.equals("", lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + return components; +} +function clonePath(path2) { + return { + newPos: path2.newPos, + components: path2.components.slice(0) + }; +} +var characterDiff = new Diff(); +function diffChars(oldStr, newStr, options) { + return characterDiff.diff(oldStr, newStr, options); +} +var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; +var reWhitespace = /\S/; +var wordDiff = new Diff(); +wordDiff.equals = function(left, right) { + if (this.options.ignoreCase) { + left = left.toLowerCase(); + right = right.toLowerCase(); + } + return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); +}; +wordDiff.tokenize = function(value) { + var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); + for (var i = 0; i < tokens.length - 1; i++) { + if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { + tokens[i] += tokens[i + 2]; + tokens.splice(i + 1, 2); + i--; + } + } + return tokens; +}; +function diffWordsWithSpace(oldStr, newStr, options) { + return wordDiff.diff(oldStr, newStr, options); +} +var lineDiff = new Diff(); +lineDiff.tokenize = function(value) { + var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + if (i % 2 && !this.options.newlineIsToken) { + retLines[retLines.length - 1] += line; + } else { + if (this.options.ignoreWhitespace) { + line = line.trim(); + } + retLines.push(line); + } + } + return retLines; +}; +function diffLines(oldStr, newStr, callback) { + return lineDiff.diff(oldStr, newStr, callback); +} +var sentenceDiff = new Diff(); +sentenceDiff.tokenize = function(value) { + return value.split(/(\S.+?[.!?])(?=\s+|$)/); +}; +var cssDiff = new Diff(); +cssDiff.tokenize = function(value) { + return value.split(/([{}:;,]|\s+)/); +}; +function _typeof(obj) { + "@babel/helpers - typeof"; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function(obj2) { + return typeof obj2; + }; + } else { + _typeof = function(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }; + } + return _typeof(obj); +} +function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); +} +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) + return _arrayLikeToArray(arr); +} +function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) + return Array.from(iter); +} +function _unsupportedIterableToArray(o, minLen) { + if (!o) + return; + if (typeof o === "string") + return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) + n = o.constructor.name; + if (n === "Map" || n === "Set") + return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) + return _arrayLikeToArray(o, minLen); +} +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) + len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) + arr2[i] = arr[i]; + return arr2; +} +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +var objectPrototypeToString = Object.prototype.toString; +var jsonDiff = new Diff(); +jsonDiff.useLongestToken = true; +jsonDiff.tokenize = lineDiff.tokenize; +jsonDiff.castInput = function(value) { + var _this$options = this.options, undefinedReplacement = _this$options.undefinedReplacement, _this$options$stringi = _this$options.stringifyReplacer, stringifyReplacer = _this$options$stringi === void 0 ? function(k, v) { + return typeof v === "undefined" ? undefinedReplacement : v; + } : _this$options$stringi; + return typeof value === "string" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, " "); +}; +jsonDiff.equals = function(left, right) { + return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1")); +}; +function canonicalize(obj, stack, replacementStack, replacer, key2) { + stack = stack || []; + replacementStack = replacementStack || []; + if (replacer) { + obj = replacer(key2, obj); + } + var i; + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + var canonicalizedObj; + if ("[object Array]" === objectPrototypeToString.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key2); + } + stack.pop(); + replacementStack.pop(); + return canonicalizedObj; + } + if (obj && obj.toJSON) { + obj = obj.toJSON(); + } + if (_typeof(obj) === "object" && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + var sortedKeys = [], _key; + for (_key in obj) { + if (obj.hasOwnProperty(_key)) { + sortedKeys.push(_key); + } + } + sortedKeys.sort(); + for (i = 0; i < sortedKeys.length; i += 1) { + _key = sortedKeys[i]; + canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); + } + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + return canonicalizedObj; +} +var arrayDiff = new Diff(); +arrayDiff.tokenize = function(value) { + return value.slice(); +}; +arrayDiff.join = arrayDiff.removeEmpty = function(value) { + return value; +}; +function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + if (!options) { + options = {}; + } + if (typeof options.context === "undefined") { + options.context = 4; + } + var diff2 = diffLines(oldStr, newStr, options); + if (!diff2) { + return; + } + diff2.push({ + value: "", + lines: [] + }); + function contextLines(lines) { + return lines.map(function(entry) { + return " " + entry; + }); + } + var hunks = []; + var oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1; + var _loop = function _loop2(i2) { + var current = diff2[i2], lines = current.lines || current.value.replace(/\n$/, "").split("\n"); + current.lines = lines; + if (current.added || current.removed) { + var _curRange; + if (!oldRangeStart) { + var prev = diff2[i2 - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + if (prev) { + curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } + (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function(entry) { + return (current.added ? "+" : "-") + entry; + }))); + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + if (oldRangeStart) { + if (lines.length <= options.context * 2 && i2 < diff2.length - 2) { + var _curRange2; + (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines))); + } else { + var _curRange3; + var contextSize = Math.min(lines.length, options.context); + (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize)))); + var hunk = { + oldStart: oldRangeStart, + oldLines: oldLine - oldRangeStart + contextSize, + newStart: newRangeStart, + newLines: newLine - newRangeStart + contextSize, + lines: curRange + }; + if (i2 >= diff2.length - 2 && lines.length <= options.context) { + var oldEOFNewline = /\n$/.test(oldStr); + var newEOFNewline = /\n$/.test(newStr); + var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; + if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) { + curRange.splice(hunk.oldLines, 0, "\\ No newline at end of file"); + } + if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) { + curRange.push("\\ No newline at end of file"); + } + } + hunks.push(hunk); + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + oldLine += lines.length; + newLine += lines.length; + } + }; + for (var i = 0; i < diff2.length; i++) { + _loop(i); + } + return { + oldFileName, + newFileName, + oldHeader, + newHeader, + hunks + }; +} +function formatPatch(diff2) { + var ret = []; + if (diff2.oldFileName == diff2.newFileName) { + ret.push("Index: " + diff2.oldFileName); + } + ret.push("==================================================================="); + ret.push("--- " + diff2.oldFileName + (typeof diff2.oldHeader === "undefined" ? "" : " " + diff2.oldHeader)); + ret.push("+++ " + diff2.newFileName + (typeof diff2.newHeader === "undefined" ? "" : " " + diff2.newHeader)); + for (var i = 0; i < diff2.hunks.length; i++) { + var hunk = diff2.hunks[i]; + if (hunk.oldLines === 0) { + hunk.oldStart -= 1; + } + if (hunk.newLines === 0) { + hunk.newStart -= 1; + } + ret.push("@@ -" + hunk.oldStart + "," + hunk.oldLines + " +" + hunk.newStart + "," + hunk.newLines + " @@"); + ret.push.apply(ret, hunk.lines); + } + return ret.join("\n") + "\n"; +} +function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)); +} +function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { + return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); +} + +// src/gitManager/isomorphicGit.ts +var import_obsidian7 = require("obsidian"); + +// src/ui/modals/generalModal.ts +init_polyfill_buffer(); +var import_obsidian5 = require("obsidian"); +var generalModalConfigDefaults = { + options: [], + placeholder: "", + allowEmpty: false, + onlySelection: false, + initialValue: void 0 +}; +var GeneralModal = class extends import_obsidian5.SuggestModal { + constructor(config) { + super(app); + this.config = { ...generalModalConfigDefaults, ...config }; + this.setPlaceholder(this.config.placeholder); + } + open() { + super.open(); + if (this.config.initialValue != void 0) { + this.inputEl.value = this.config.initialValue; + this.inputEl.dispatchEvent(new Event("input")); + } + return new Promise((resolve) => { + this.resolve = resolve; + }); + } + selectSuggestion(value, evt) { + if (this.resolve) { + let res; + if (this.config.allowEmpty && value === " ") + res = ""; + else if (value === "...") + res = void 0; + else + res = value; + this.resolve(res); + } + super.selectSuggestion(value, evt); + } + onClose() { + if (this.resolve) + this.resolve(void 0); + } + getSuggestions(query) { + if (this.config.onlySelection) { + return this.config.options; + } else if (this.config.allowEmpty) { + return [query.length > 0 ? query : " ", ...this.config.options]; + } else { + return [query.length > 0 ? query : "...", ...this.config.options]; + } + } + renderSuggestion(value, el) { + el.setText(value); + } + onChooseSuggestion(item, evt) { + } +}; + +// src/gitManager/myAdapter.ts +init_polyfill_buffer(); +var import_obsidian6 = require("obsidian"); +var MyAdapter = class { + constructor(vault, plugin) { + this.plugin = plugin; + this.promises = {}; + this.adapter = vault.adapter; + this.vault = vault; + this.lastBasePath = this.plugin.settings.basePath; + this.promises.readFile = this.readFile.bind(this); + this.promises.writeFile = this.writeFile.bind(this); + this.promises.readdir = this.readdir.bind(this); + this.promises.mkdir = this.mkdir.bind(this); + this.promises.rmdir = this.rmdir.bind(this); + this.promises.stat = this.stat.bind(this); + this.promises.unlink = this.unlink.bind(this); + this.promises.lstat = this.lstat.bind(this); + this.promises.readlink = this.readlink.bind(this); + this.promises.symlink = this.symlink.bind(this); + } + async readFile(path2, opts) { + var _a2; + this.maybeLog("Read: " + path2 + JSON.stringify(opts)); + if (opts == "utf8" || opts.encoding == "utf8") { + const file = this.vault.getAbstractFileByPath(path2); + if (file instanceof import_obsidian6.TFile) { + this.maybeLog("Reuse"); + return this.vault.read(file); + } else { + return this.adapter.read(path2); + } + } else { + if (path2.endsWith(this.gitDir + "/index")) { + if (this.plugin.settings.basePath != this.lastBasePath) { + this.clearIndex(); + this.lastBasePath = this.plugin.settings.basePath; + return this.adapter.readBinary(path2); + } + return (_a2 = this.index) != null ? _a2 : this.adapter.readBinary(path2); + } + const file = this.vault.getAbstractFileByPath(path2); + if (file instanceof import_obsidian6.TFile) { + this.maybeLog("Reuse"); + return this.vault.readBinary(file); + } else { + return this.adapter.readBinary(path2); + } + } + } + async writeFile(path2, data) { + this.maybeLog("Write: " + path2); + if (typeof data === "string") { + const file = this.vault.getAbstractFileByPath(path2); + if (file instanceof import_obsidian6.TFile) { + return this.vault.modify(file, data); + } else { + return this.adapter.write(path2, data); + } + } else { + if (path2.endsWith(this.gitDir + "/index")) { + this.index = data; + this.indexmtime = Date.now(); + } else { + const file = this.vault.getAbstractFileByPath(path2); + if (file instanceof import_obsidian6.TFile) { + return this.vault.modifyBinary(file, data); + } else { + return this.adapter.writeBinary(path2, data); + } + } + } + } + async readdir(path2) { + if (path2 === ".") + path2 = "/"; + const res = await this.adapter.list(path2); + const all = [...res.files, ...res.folders]; + let formattedAll; + if (path2 !== "/") { + formattedAll = all.map( + (e) => (0, import_obsidian6.normalizePath)(e.substring(path2.length)) + ); + } else { + formattedAll = all; + } + return formattedAll; + } + async mkdir(path2) { + return this.adapter.mkdir(path2); + } + async rmdir(path2, opts) { + var _a2, _b; + return this.adapter.rmdir(path2, (_b = (_a2 = opts == null ? void 0 : opts.options) == null ? void 0 : _a2.recursive) != null ? _b : false); + } + async stat(path2) { + if (path2.endsWith(this.gitDir + "/index")) { + if (this.index !== void 0 && this.indexctime != void 0 && this.indexmtime != void 0) { + return { + isFile: () => true, + isDirectory: () => false, + isSymbolicLink: () => false, + size: this.index.length, + type: "file", + ctimeMs: this.indexctime, + mtimeMs: this.indexmtime + }; + } else { + const stat = await this.adapter.stat(path2); + if (stat == void 0) { + throw { code: "ENOENT" }; + } + this.indexctime = stat.ctime; + this.indexmtime = stat.mtime; + return { + ctimeMs: stat.ctime, + mtimeMs: stat.mtime, + size: stat.size, + type: "file", + isFile: () => true, + isDirectory: () => false, + isSymbolicLink: () => false + }; + } + } + if (path2 === ".") + path2 = "/"; + const file = this.vault.getAbstractFileByPath(path2); + this.maybeLog("Stat: " + path2); + if (file instanceof import_obsidian6.TFile) { + this.maybeLog("Reuse stat"); + return { + ctimeMs: file.stat.ctime, + mtimeMs: file.stat.mtime, + size: file.stat.size, + type: "file", + isFile: () => true, + isDirectory: () => false, + isSymbolicLink: () => false + }; + } else { + const stat = await this.adapter.stat(path2); + if (stat) { + return { + ctimeMs: stat.ctime, + mtimeMs: stat.mtime, + size: stat.size, + type: stat.type === "folder" ? "directory" : stat.type, + isFile: () => stat.type === "file", + isDirectory: () => stat.type === "folder", + isSymbolicLink: () => false + }; + } else { + throw { code: "ENOENT" }; + } + } + } + async unlink(path2) { + return this.adapter.remove(path2); + } + async lstat(path2) { + return this.stat(path2); + } + async readlink(path2) { + throw new Error(`readlink of (${path2}) is not implemented.`); + } + async symlink(path2) { + throw new Error(`symlink of (${path2}) is not implemented.`); + } + async saveAndClear() { + if (this.index !== void 0) { + await this.adapter.writeBinary( + this.plugin.gitManager.getVaultPath(this.gitDir + "/index"), + this.index, + { + ctime: this.indexctime, + mtime: this.indexmtime + } + ); + } + this.clearIndex(); + } + clearIndex() { + this.index = void 0; + this.indexctime = void 0; + this.indexmtime = void 0; + } + get gitDir() { + return this.plugin.settings.gitDir || ".git"; + } + maybeLog(text2) { + } +}; + +// src/gitManager/isomorphicGit.ts +var IsomorphicGit = class extends GitManager { + constructor(plugin) { + super(plugin); + this.FILE = 0; + this.HEAD = 1; + this.WORKDIR = 2; + this.STAGE = 3; + // Mapping from statusMatrix to git status codes based off git status --short + // See: https://isomorphic-git.org/docs/en/statusMatrix + this.status_mapping = { + "000": " ", + "003": "AD", + "020": "??", + "022": "A ", + "023": "AM", + "100": "D ", + "101": " D", + "103": "MD", + "110": "DA", + // Technically, two files: first one is deleted "D " and second one is untracked "??" + "111": " ", + "120": "DA", + // Same as "110" + "121": " M", + "122": "M ", + "123": "MM" + }; + this.noticeLength = 999999; + this.fs = new MyAdapter(this.app.vault, this.plugin); + } + getRepo() { + return { + fs: this.fs, + dir: this.plugin.settings.basePath, + gitdir: this.plugin.settings.gitDir || void 0, + onAuth: () => { + var _a2, _b; + return { + username: (_a2 = this.plugin.localStorage.getUsername()) != null ? _a2 : void 0, + password: (_b = this.plugin.localStorage.getPassword()) != null ? _b : void 0 + }; + }, + onAuthFailure: async () => { + new import_obsidian7.Notice( + "Authentication failed. Please try with different credentials" + ); + const username = await new GeneralModal({ + placeholder: "Specify your username" + }).open(); + if (username) { + const password = await new GeneralModal({ + placeholder: "Specify your password/personal access token" + }).open(); + if (password) { + this.plugin.localStorage.setUsername(username); + this.plugin.localStorage.setPassword(password); + return { + username, + password + }; + } + } + return { cancel: true }; + }, + http: { + async request({ + url, + method: method2, + headers, + body + }) { + if (body) { + body = await collect2(body); + body = body.buffer; + } + const res = await (0, import_obsidian7.requestUrl)({ + url, + method: method2, + headers, + body, + throw: false + }); + return { + url, + method: method2, + headers: res.headers, + body: [new Uint8Array(res.arrayBuffer)], + statusCode: res.status, + statusMessage: res.status.toString() + }; + } + } + }; + } + async wrapFS(call) { + try { + const res = await call; + await this.fs.saveAndClear(); + return res; + } catch (error) { + await this.fs.saveAndClear(); + throw error; + } + } + async status() { + let notice; + const timeout = window.setTimeout(function() { + notice = new import_obsidian7.Notice( + "This takes longer: Getting status", + this.noticeLength + ); + }, 2e4); + try { + this.plugin.setState(1 /* status */); + const status2 = (await this.wrapFS(isomorphic_git_default.statusMatrix({ ...this.getRepo() }))).map((row) => this.getFileStatusResult(row)); + const changed = status2.filter( + (fileStatus) => fileStatus.working_dir !== " " + ); + const staged = status2.filter( + (fileStatus) => fileStatus.index !== " " && fileStatus.index !== "U" + ); + const conflicted = []; + window.clearTimeout(timeout); + notice == null ? void 0 : notice.hide(); + return { changed, staged, conflicted }; + } catch (error) { + window.clearTimeout(timeout); + notice == null ? void 0 : notice.hide(); + this.plugin.displayError(error); + throw error; + } + } + async commitAll({ + message, + status: status2, + unstagedFiles + }) { + try { + await this.checkAuthorInfo(); + await this.stageAll({ status: status2, unstagedFiles }); + return this.commit(message); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async commit(message) { + try { + await this.checkAuthorInfo(); + this.plugin.setState(4 /* commit */); + const formatMessage = await this.formatCommitMessage(message); + const hadConflict = this.plugin.localStorage.getConflict() === "true"; + let parent = void 0; + if (hadConflict) { + const branchInfo = await this.branchInfo(); + parent = [branchInfo.current, branchInfo.tracking]; + } + await this.wrapFS( + isomorphic_git_default.commit({ + ...this.getRepo(), + message: formatMessage, + parent + }) + ); + this.plugin.localStorage.setConflict("false"); + return; + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async stage(filepath, relativeToVault) { + const gitPath = this.asRepositoryRelativePath( + filepath, + relativeToVault + ); + let vaultPath; + if (relativeToVault) { + vaultPath = filepath; + } else { + vaultPath = this.getVaultPath(filepath); + } + try { + this.plugin.setState(3 /* add */); + if (await this.app.vault.adapter.exists(vaultPath)) { + await this.wrapFS( + isomorphic_git_default.add({ ...this.getRepo(), filepath: gitPath }) + ); + } else { + await this.wrapFS( + isomorphic_git_default.remove({ ...this.getRepo(), filepath: gitPath }) + ); + } + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async stageAll({ + dir, + status: status2, + unstagedFiles + }) { + try { + if (status2) { + await Promise.all( + status2.changed.map( + (file) => file.working_dir !== "D" ? this.wrapFS( + isomorphic_git_default.add({ + ...this.getRepo(), + filepath: file.path + }) + ) : isomorphic_git_default.remove({ + ...this.getRepo(), + filepath: file.path + }) + ) + ); + } else { + const filesToStage = unstagedFiles != null ? unstagedFiles : await this.getUnstagedFiles(dir != null ? dir : "."); + await Promise.all( + filesToStage.map( + ({ filepath, deleted }) => deleted ? isomorphic_git_default.remove({ ...this.getRepo(), filepath }) : this.wrapFS( + isomorphic_git_default.add({ ...this.getRepo(), filepath }) + ) + ) + ); + } + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async unstage(filepath, relativeToVault) { + try { + this.plugin.setState(3 /* add */); + filepath = this.asRepositoryRelativePath(filepath, relativeToVault); + await this.wrapFS( + isomorphic_git_default.resetIndex({ ...this.getRepo(), filepath }) + ); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async unstageAll({ + dir, + status: status2 + }) { + try { + let staged; + if (status2) { + staged = status2.staged.map((file) => file.path); + } else { + const res = await this.getStagedFiles(dir != null ? dir : "."); + staged = res.map(({ filepath }) => filepath); + } + await this.wrapFS( + Promise.all( + staged.map( + (file) => isomorphic_git_default.resetIndex({ ...this.getRepo(), filepath: file }) + ) + ) + ); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async discard(filepath) { + try { + this.plugin.setState(3 /* add */); + await this.wrapFS( + isomorphic_git_default.checkout({ + ...this.getRepo(), + filepaths: [filepath], + force: true + }) + ); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async discardAll({ + dir, + status: status2 + }) { + let files = []; + if (status2) { + if (dir != void 0) { + files = status2.changed.filter((file) => file.path.startsWith(dir)).map((file) => file.path); + } else { + files = status2.changed.map((file) => file.path); + } + } else { + files = (await this.getUnstagedFiles(dir)).map( + ({ filepath }) => filepath + ); + } + try { + await this.wrapFS( + isomorphic_git_default.checkout({ + ...this.getRepo(), + filepaths: files, + force: true + }) + ); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + getProgressText(action, event) { + let out = `${action} progress:`; + if (event.phase) { + out = `${out} ${event.phase}:`; + } + if (event.loaded) { + out = `${out} ${event.loaded}`; + if (event.total) { + out = `${out} of ${event.total}`; + } + } + return out; + } + resolveRef(ref) { + return this.wrapFS(isomorphic_git_default.resolveRef({ ...this.getRepo(), ref })); + } + async pull() { + const progressNotice = this.showNotice("Initializing pull"); + try { + this.plugin.setState(2 /* pull */); + const localCommit = await this.resolveRef("HEAD"); + await this.fetch(); + const branchInfo = await this.branchInfo(); + await this.checkAuthorInfo(); + const mergeRes = await this.wrapFS( + isomorphic_git_default.merge({ + ...this.getRepo(), + ours: branchInfo.current, + theirs: branchInfo.tracking, + abortOnConflict: false + }) + ); + if (!mergeRes.alreadyMerged) { + await this.wrapFS( + isomorphic_git_default.checkout({ + ...this.getRepo(), + ref: branchInfo.current, + onProgress: (progress) => { + if (progressNotice !== void 0) { + progressNotice.noticeEl.innerText = this.getProgressText("Checkout", progress); + } + }, + remote: branchInfo.remote + }) + ); + } + progressNotice == null ? void 0 : progressNotice.hide(); + const upstreamCommit = await this.resolveRef("HEAD"); + const changedFiles = await this.getFileChangesCount( + localCommit, + upstreamCommit + ); + this.showNotice("Finished pull", false); + return changedFiles.map((file) => ({ + path: file.path, + working_dir: "P", + index: "P", + vault_path: this.getVaultPath(file.path) + })); + } catch (error) { + progressNotice == null ? void 0 : progressNotice.hide(); + if (error instanceof Errors.MergeConflictError) { + this.plugin.handleConflict( + error.data.filepaths.map((file) => this.getVaultPath(file)) + ); + } + this.plugin.displayError(error); + throw error; + } + } + async push() { + if (!await this.canPush()) { + return 0; + } + const progressNotice = this.showNotice("Initializing push"); + try { + this.plugin.setState(1 /* status */); + const status2 = await this.branchInfo(); + const trackingBranch = status2.tracking; + const currentBranch2 = status2.current; + const numChangedFiles = (await this.getFileChangesCount(currentBranch2, trackingBranch)).length; + this.plugin.setState(5 /* push */); + await this.wrapFS( + isomorphic_git_default.push({ + ...this.getRepo(), + onProgress: (progress) => { + if (progressNotice !== void 0) { + progressNotice.noticeEl.innerText = this.getProgressText("Pushing", progress); + } + } + }) + ); + progressNotice == null ? void 0 : progressNotice.hide(); + return numChangedFiles; + } catch (error) { + progressNotice == null ? void 0 : progressNotice.hide(); + this.plugin.displayError(error); + throw error; + } + } + async getUnpushedCommits() { + const status2 = await this.branchInfo(); + const trackingBranch = status2.tracking; + const currentBranch2 = status2.current; + if (trackingBranch == null || currentBranch2 == null) { + return 0; + } + const localCommit = await this.resolveRef(currentBranch2); + const upstreamCommit = await this.resolveRef(trackingBranch); + const changedFiles = await this.getFileChangesCount( + localCommit, + upstreamCommit + ); + return changedFiles.length; + } + async canPush() { + const status2 = await this.branchInfo(); + const trackingBranch = status2.tracking; + const currentBranch2 = status2.current; + const current = await this.resolveRef(currentBranch2); + const tracking = await this.resolveRef(trackingBranch); + return current != tracking; + } + async checkRequirements() { + const headExists = await this.plugin.app.vault.adapter.exists( + `${this.getRepo().dir}/.git/HEAD` + ); + return headExists ? "valid" : "missing-repo"; + } + async branchInfo() { + var _a2, _b; + try { + const current = await isomorphic_git_default.currentBranch(this.getRepo()) || ""; + const branches = await isomorphic_git_default.listBranches(this.getRepo()); + const remote = (_a2 = await this.getConfig(`branch.${current}.remote`)) != null ? _a2 : "origin"; + const trackingBranch = (_b = await this.getConfig(`branch.${current}.merge`)) == null ? void 0 : _b.split("refs/heads")[1]; + const tracking = trackingBranch ? remote + trackingBranch : void 0; + return { + current, + tracking, + branches, + remote + }; + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async getCurrentRemote() { + var _a2; + const current = await isomorphic_git_default.currentBranch(this.getRepo()) || ""; + const remote = (_a2 = await this.getConfig(`branch.${current}.remote`)) != null ? _a2 : "origin"; + return remote; + } + async checkout(branch2, remote) { + try { + return this.wrapFS( + isomorphic_git_default.checkout({ + ...this.getRepo(), + ref: branch2, + force: !!remote, + remote + }) + ); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async createBranch(branch2) { + try { + await this.wrapFS( + isomorphic_git_default.branch({ ...this.getRepo(), ref: branch2, checkout: true }) + ); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async deleteBranch(branch2) { + try { + await this.wrapFS( + isomorphic_git_default.deleteBranch({ ...this.getRepo(), ref: branch2 }) + ); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async branchIsMerged(branch2) { + return true; + } + async init() { + try { + await this.wrapFS(isomorphic_git_default.init(this.getRepo())); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async clone(url, dir, depth) { + const progressNotice = this.showNotice("Initializing clone"); + try { + await this.wrapFS( + isomorphic_git_default.clone({ + ...this.getRepo(), + dir, + url, + depth, + onProgress: (progress) => { + if (progressNotice !== void 0) { + progressNotice.noticeEl.innerText = this.getProgressText("Cloning", progress); + } + } + }) + ); + progressNotice == null ? void 0 : progressNotice.hide(); + } catch (error) { + progressNotice == null ? void 0 : progressNotice.hide(); + this.plugin.displayError(error); + throw error; + } + } + async setConfig(path2, value) { + try { + return this.wrapFS( + isomorphic_git_default.setConfig({ + ...this.getRepo(), + path: path2, + value + }) + ); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async getConfig(path2) { + try { + return this.wrapFS( + isomorphic_git_default.getConfig({ + ...this.getRepo(), + path: path2 + }) + ); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async fetch(remote) { + const progressNotice = this.showNotice("Initializing fetch"); + try { + const args = { + ...this.getRepo(), + onProgress: (progress) => { + if (progressNotice !== void 0) { + progressNotice.noticeEl.innerText = this.getProgressText("Fetching", progress); + } + }, + remote: remote != null ? remote : await this.getCurrentRemote() + }; + await this.wrapFS(isomorphic_git_default.fetch(args)); + progressNotice == null ? void 0 : progressNotice.hide(); + } catch (error) { + this.plugin.displayError(error); + progressNotice == null ? void 0 : progressNotice.hide(); + throw error; + } + } + async setRemote(name, url) { + try { + await this.wrapFS( + isomorphic_git_default.addRemote({ + ...this.getRepo(), + remote: name, + url, + force: true + }) + ); + } catch (error) { + this.plugin.displayError(error); + throw error; + } + } + async getRemoteBranches(remote) { + let remoteBranches = []; + remoteBranches.push( + ...await this.wrapFS( + isomorphic_git_default.listBranches({ ...this.getRepo(), remote }) + ) + ); + remoteBranches.remove("HEAD"); + remoteBranches = remoteBranches.map((e) => `${remote}/${e}`); + return remoteBranches; + } + async getRemotes() { + return (await this.wrapFS(isomorphic_git_default.listRemotes({ ...this.getRepo() }))).map( + (remoteUrl) => remoteUrl.remote + ); + } + async removeRemote(remoteName) { + await this.wrapFS( + isomorphic_git_default.deleteRemote({ ...this.getRepo(), remote: remoteName }) + ); + } + async getRemoteUrl(remote) { + var _a2; + return (_a2 = (await this.wrapFS(isomorphic_git_default.listRemotes({ ...this.getRepo() }))).filter((item) => item.remote == remote)[0]) == null ? void 0 : _a2.url; + } + async log(_, __ = true, limit) { + const logs = await this.wrapFS( + isomorphic_git_default.log({ ...this.getRepo(), depth: limit }) + ); + return Promise.all( + logs.map(async (log2) => { + const completeMessage = log2.commit.message.split("\n\n"); + return { + message: completeMessage[0], + body: completeMessage.slice(1).join("\n\n"), + date: new Date( + log2.commit.committer.timestamp + ).toDateString(), + diff: { + changed: 0, + files: (await this.getFileChangesCount( + log2.commit.parent.first(), + log2.oid + )).map((item) => { + return { + path: item.path, + status: item.type, + vault_path: this.getVaultPath(item.path), + hash: log2.oid, + binary: void 0 + }; + }) + }, + hash: log2.oid, + refs: [] + }; + }) + ); + } + updateBasePath(basePath) { + this.getRepo().dir = basePath; + } + async updateUpstreamBranch(remoteBranch) { + const [remote, branch2] = splitRemoteBranch(remoteBranch); + const branchInfo = await this.branchInfo(); + await this.setConfig( + `branch.${branchInfo.current}.merge`, + `refs/heads/${branch2}` + ); + await this.setConfig(`branch.${branch2}.remote`, remote); + } + updateGitPath(gitPath) { + return; + } + async getFileChangesCount(commitHash1, commitHash2) { + return this.walkDifference({ + walkers: [ + isomorphic_git_default.TREE({ ref: commitHash1 }), + isomorphic_git_default.TREE({ ref: commitHash2 }) + ] + }); + } + async walkDifference({ + walkers, + dir: base + }) { + const res = await this.wrapFS( + isomorphic_git_default.walk({ + ...this.getRepo(), + trees: walkers, + map: async function(filepath, [A, B]) { + if (!worthWalking2(filepath, base)) { + return null; + } + if (await (A == null ? void 0 : A.type()) === "tree" || await (B == null ? void 0 : B.type()) === "tree") { + return; + } + const Aoid = await (A == null ? void 0 : A.oid()); + const Boid = await (B == null ? void 0 : B.oid()); + let type = "equal"; + if (Aoid !== Boid) { + type = "M"; + } + if (Aoid === void 0) { + type = "A"; + } + if (Boid === void 0) { + type = "D"; + } + if (Aoid === void 0 && Boid === void 0) { + console.log("Something weird happened:"); + console.log(A); + console.log(B); + } + if (type === "equal") { + return; + } + return { + path: filepath, + type + }; + } + }) + ); + return res; + } + async getStagedFiles(dir = ".") { + const res = await this.walkDifference({ + walkers: [isomorphic_git_default.TREE({ ref: "HEAD" }), isomorphic_git_default.STAGE()], + dir + }); + return res.map((file) => { + return { + vault_path: this.getVaultPath(file.path), + filepath: file.path + }; + }); + } + async getUnstagedFiles(base = ".") { + let notice; + const timeout = window.setTimeout(function() { + notice = new import_obsidian7.Notice( + "This takes longer: Getting status", + this.noticeLength + ); + }, 2e4); + try { + const repo = this.getRepo(); + const res = await this.wrapFS( + //Modified from `git.statusMatrix` + isomorphic_git_default.walk({ + ...repo, + trees: [isomorphic_git_default.WORKDIR(), isomorphic_git_default.STAGE()], + map: async function(filepath, [workdir, stage]) { + if (!stage && workdir) { + const isIgnored2 = await isomorphic_git_default.isIgnored({ + ...repo, + filepath + }); + if (isIgnored2) { + return null; + } + } + if (!worthWalking2(filepath, base)) { + return null; + } + const [workdirType, stageType] = await Promise.all([ + workdir && workdir.type(), + stage && stage.type() + ]); + const isBlob = [workdirType, stageType].includes( + "blob" + ); + if ((workdirType === "tree" || workdirType === "special") && !isBlob) + return; + if (stageType === "commit") + return null; + if ((stageType === "tree" || stageType === "special") && !isBlob) + return; + const stageOid = stageType === "blob" ? await stage.oid() : void 0; + let workdirOid; + if (workdirType === "blob" && stageType !== "blob") { + workdirOid = "42"; + } else if (workdirType === "blob") { + workdirOid = await workdir.oid(); + } + if (!workdirOid) { + return { + filepath, + deleted: true + }; + } + if (workdirOid !== stageOid) { + return { + filepath, + deleted: false + }; + } + return null; + } + }) + ); + window.clearTimeout(timeout); + notice == null ? void 0 : notice.hide(); + return res; + } catch (error) { + window.clearTimeout(timeout); + notice == null ? void 0 : notice.hide(); + this.plugin.displayError(error); + throw error; + } + } + async getDiffString(filePath, stagedChanges = false, hash2) { + const vaultPath = this.getVaultPath(filePath); + const map = async (file, [A]) => { + if (filePath == file) { + const oid = await A.oid(); + const contents = await isomorphic_git_default.readBlob({ + ...this.getRepo(), + oid + }); + return contents.blob; + } + }; + if (hash2) { + const commitContent = await readBlob({ + ...this.getRepo(), + filepath: filePath, + oid: hash2 + }).then((headBlob) => new TextDecoder().decode(headBlob.blob)).catch((err) => { + if (err instanceof isomorphic_git_default.Errors.NotFoundError) + return void 0; + throw err; + }); + const commit2 = await isomorphic_git_default.readCommit({ + ...this.getRepo(), + oid: hash2 + }); + const previousContent = await readBlob({ + ...this.getRepo(), + filepath: filePath, + oid: commit2.commit.parent.first() + }).then((headBlob) => new TextDecoder().decode(headBlob.blob)).catch((err) => { + if (err instanceof isomorphic_git_default.Errors.NotFoundError) + return void 0; + throw err; + }); + const diff2 = createPatch( + vaultPath, + previousContent != null ? previousContent : "", + commitContent != null ? commitContent : "" + ); + return diff2; + } + const stagedBlob = (await isomorphic_git_default.walk({ + ...this.getRepo(), + trees: [isomorphic_git_default.STAGE()], + map + })).first(); + const stagedContent = new TextDecoder().decode(stagedBlob); + if (stagedChanges) { + const headContent = await this.resolveRef("HEAD").then( + (oid) => readBlob({ + ...this.getRepo(), + filepath: filePath, + oid + }) + ).then((headBlob) => new TextDecoder().decode(headBlob.blob)).catch((err) => { + if (err instanceof isomorphic_git_default.Errors.NotFoundError) + return void 0; + throw err; + }); + const diff2 = createPatch( + vaultPath, + headContent != null ? headContent : "", + stagedContent + ); + return diff2; + } else { + let workdirContent; + if (await app.vault.adapter.exists(vaultPath)) { + workdirContent = await app.vault.adapter.read(vaultPath); + } else { + workdirContent = ""; + } + const diff2 = createPatch(vaultPath, stagedContent, workdirContent); + return diff2; + } + } + async getLastCommitTime() { + const repo = this.getRepo(); + const oid = await this.resolveRef("HEAD"); + const commit2 = await isomorphic_git_default.readCommit({ ...repo, oid }); + const date = commit2.commit.committer.timestamp; + return new Date(date * 1e3); + } + getFileStatusResult(row) { + const status2 = this.status_mapping[`${row[this.HEAD]}${row[this.WORKDIR]}${row[this.STAGE]}`]; + return { + index: status2[0] == "?" ? "U" : status2[0], + working_dir: status2[1] == "?" ? "U" : status2[1], + path: row[this.FILE], + vault_path: this.getVaultPath(row[this.FILE]) + }; + } + async checkAuthorInfo() { + const name = await this.getConfig("user.name"); + const email = await this.getConfig("user.email"); + if (!name || !email) { + throw "Git author information is not set. Please set it in the settings."; + } + } + showNotice(message, infinity = true) { + if (!this.plugin.settings.disablePopups) { + return new import_obsidian7.Notice( + message, + infinity ? this.noticeLength : void 0 + ); + } + } +}; +function fromValue2(value) { + let queue = [value]; + return { + next() { + return Promise.resolve({ + done: queue.length === 0, + value: queue.pop() + }); + }, + return() { + queue = []; + return {}; + }, + [Symbol.asyncIterator]() { + return this; + } + }; +} +function getIterator2(iterable) { + if (iterable[Symbol.asyncIterator]) { + return iterable[Symbol.asyncIterator](); + } + if (iterable[Symbol.iterator]) { + return iterable[Symbol.iterator](); + } + if (iterable.next) { + return iterable; + } + return fromValue2(iterable); +} +async function forAwait2(iterable, cb) { + const iter = getIterator2(iterable); + while (true) { + const { value, done } = await iter.next(); + if (value) + await cb(value); + if (done) + break; + } + if (iter.return) + iter.return(); +} +async function collect2(iterable) { + let size = 0; + const buffers = []; + await forAwait2(iterable, (value) => { + buffers.push(value); + size += value.byteLength; + }); + const result = new Uint8Array(size); + let nextIndex = 0; + for (const buffer2 of buffers) { + result.set(buffer2, nextIndex); + nextIndex += buffer2.byteLength; + } + return result; +} + +// src/setting/settings.ts +var FORMAT_STRING_REFERENCE_URL = "https://momentjs.com/docs/#/parsing/string-format/"; +var LINE_AUTHOR_FEATURE_WIKI_LINK = "https://publish.obsidian.md/git-doc/Line+Authoring"; +var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { + constructor() { + super(...arguments); + this.lineAuthorColorSettings = /* @__PURE__ */ new Map(); + } + // narrow type from PluginSettingTab.plugin + get settings() { + return this.plugin.settings; + } display() { const { containerEl } = this; const plugin = this.plugin; @@ -24525,129 +32041,205 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { containerEl.empty(); containerEl.createEl("h2", { text: "Git Backup settings" }); if (!gitReady) { - containerEl.createEl("p", { text: "Git is not ready. When all settings are correct you can configure auto backup, etc." }); + containerEl.createEl("p", { + text: "Git is not ready. When all settings are correct you can configure auto backup, etc." + }); } if (gitReady) { containerEl.createEl("br"); containerEl.createEl("h3", { text: "Automatic" }); - new import_obsidian7.Setting(containerEl).setName("Split automatic commit and push").setDesc("Enable to use separate timer for commit and push").addToggle((toggle) => toggle.setValue(plugin.settings.differentIntervalCommitAndPush).onChange((value) => { - plugin.settings.differentIntervalCommitAndPush = value; - plugin.saveSettings(); - plugin.clearAutoBackup(); - plugin.clearAutoPush(); - if (plugin.settings.autoSaveInterval > 0) { - plugin.startAutoBackup(plugin.settings.autoSaveInterval); - } - if (value && plugin.settings.autoPushInterval > 0) { - plugin.startAutoPush(plugin.settings.autoPushInterval); - } - this.display(); - })); - new import_obsidian7.Setting(containerEl).setName(`Vault ${commitOrBackup} interval (minutes)`).setDesc(`${plugin.settings.differentIntervalCommitAndPush ? "Commit" : "Commit and push"} changes every X minutes. Set to 0 (default) to disable. (See below setting for further configuration!)`).addText((text2) => text2.setValue(String(plugin.settings.autoSaveInterval)).onChange((value) => { - if (!isNaN(Number(value))) { - plugin.settings.autoSaveInterval = Number(value); - plugin.saveSettings(); - if (plugin.settings.autoSaveInterval > 0) { - plugin.clearAutoBackup(); - plugin.startAutoBackup(plugin.settings.autoSaveInterval); - new import_obsidian7.Notice(`Automatic ${commitOrBackup} enabled! Every ${plugin.settings.autoSaveInterval} minutes.`); - } else if (plugin.settings.autoSaveInterval <= 0) { - plugin.clearAutoBackup() && new import_obsidian7.Notice(`Automatic ${commitOrBackup} disabled!`); - } - } else { - new import_obsidian7.Notice("Please specify a valid number."); - } - })); - if (!plugin.settings.setLastSaveToLastCommit) - new import_obsidian7.Setting(containerEl).setName(`Auto Backup after file change`).setDesc(`If turned on, do auto ${commitOrBackup} every ${plugin.settings.autoSaveInterval} minutes after last change. This also prevents auto ${commitOrBackup} while editing a file. If turned off, it's independent from last the change.`).addToggle((toggle) => toggle.setValue(plugin.settings.autoBackupAfterFileChange).onChange((value) => { - plugin.settings.autoBackupAfterFileChange = value; - this.display(); + new import_obsidian8.Setting(containerEl).setName("Split automatic commit and push").setDesc("Enable to use separate timer for commit and push").addToggle( + (toggle) => toggle.setValue( + plugin.settings.differentIntervalCommitAndPush + ).onChange((value) => { + plugin.settings.differentIntervalCommitAndPush = value; plugin.saveSettings(); plugin.clearAutoBackup(); + plugin.clearAutoPush(); if (plugin.settings.autoSaveInterval > 0) { - plugin.startAutoBackup(plugin.settings.autoSaveInterval); + plugin.startAutoBackup( + plugin.settings.autoSaveInterval + ); + } + if (value && plugin.settings.autoPushInterval > 0) { + plugin.startAutoPush( + plugin.settings.autoPushInterval + ); } - })); - if (!plugin.settings.autoBackupAfterFileChange) - new import_obsidian7.Setting(containerEl).setName(`Auto ${commitOrBackup} after lastest commit`).setDesc(`If turned on, set last auto ${commitOrBackup} time to lastest commit`).addToggle((toggle) => toggle.setValue(plugin.settings.setLastSaveToLastCommit).onChange(async (value) => { - plugin.settings.setLastSaveToLastCommit = value; - plugin.saveSettings(); this.display(); - plugin.clearAutoBackup(); - await plugin.setUpAutoBackup(); - })); - if (plugin.settings.differentIntervalCommitAndPush) { - new import_obsidian7.Setting(containerEl).setName(`Vault push interval (minutes)`).setDesc("Push changes every X minutes. Set to 0 (default) to disable.").addText((text2) => text2.setValue(String(plugin.settings.autoPushInterval)).onChange((value) => { + }) + ); + new import_obsidian8.Setting(containerEl).setName(`Vault ${commitOrBackup} interval (minutes)`).setDesc( + `${plugin.settings.differentIntervalCommitAndPush ? "Commit" : "Commit and push"} changes every X minutes. Set to 0 (default) to disable. (See below setting for further configuration!)` + ).addText( + (text2) => text2.setValue(String(plugin.settings.autoSaveInterval)).onChange((value) => { if (!isNaN(Number(value))) { - plugin.settings.autoPushInterval = Number(value); + plugin.settings.autoSaveInterval = Number(value); plugin.saveSettings(); - if (plugin.settings.autoPushInterval > 0) { - plugin.clearAutoPush(); - plugin.startAutoPush(plugin.settings.autoPushInterval); - new import_obsidian7.Notice(`Automatic push enabled! Every ${plugin.settings.autoPushInterval} minutes.`); - } else if (plugin.settings.autoPushInterval <= 0) { - plugin.clearAutoPush() && new import_obsidian7.Notice("Automatic push disabled!"); + if (plugin.settings.autoSaveInterval > 0) { + plugin.clearAutoBackup(); + plugin.startAutoBackup( + plugin.settings.autoSaveInterval + ); + new import_obsidian8.Notice( + `Automatic ${commitOrBackup} enabled! Every ${plugin.settings.autoSaveInterval} minutes.` + ); + } else if (plugin.settings.autoSaveInterval <= 0) { + plugin.clearAutoBackup() && new import_obsidian8.Notice( + `Automatic ${commitOrBackup} disabled!` + ); } } else { - new import_obsidian7.Notice("Please specify a valid number."); + new import_obsidian8.Notice("Please specify a valid number."); } - })); + }) + ); + if (!plugin.settings.setLastSaveToLastCommit) + new import_obsidian8.Setting(containerEl).setName(`Auto Backup after file change`).setDesc( + `If turned on, do auto ${commitOrBackup} every ${plugin.settings.autoSaveInterval} minutes after last change. This also prevents auto ${commitOrBackup} while editing a file. If turned off, it's independent from the last change.` + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.autoBackupAfterFileChange).onChange((value) => { + plugin.settings.autoBackupAfterFileChange = value; + this.display(); + plugin.saveSettings(); + plugin.clearAutoBackup(); + if (plugin.settings.autoSaveInterval > 0) { + plugin.startAutoBackup( + plugin.settings.autoSaveInterval + ); + } + }) + ); + if (!plugin.settings.autoBackupAfterFileChange) + new import_obsidian8.Setting(containerEl).setName(`Auto ${commitOrBackup} after latest commit`).setDesc( + `If turned on, set last auto ${commitOrBackup} time to latest commit` + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.setLastSaveToLastCommit).onChange(async (value) => { + plugin.settings.setLastSaveToLastCommit = value; + plugin.saveSettings(); + this.display(); + plugin.clearAutoBackup(); + await plugin.setUpAutoBackup(); + }) + ); + if (plugin.settings.differentIntervalCommitAndPush) { + new import_obsidian8.Setting(containerEl).setName(`Vault push interval (minutes)`).setDesc( + "Push changes every X minutes. Set to 0 (default) to disable." + ).addText( + (text2) => text2.setValue(String(plugin.settings.autoPushInterval)).onChange((value) => { + if (!isNaN(Number(value))) { + plugin.settings.autoPushInterval = Number(value); + plugin.saveSettings(); + if (plugin.settings.autoPushInterval > 0) { + plugin.clearAutoPush(); + plugin.startAutoPush( + plugin.settings.autoPushInterval + ); + new import_obsidian8.Notice( + `Automatic push enabled! Every ${plugin.settings.autoPushInterval} minutes.` + ); + } else if (plugin.settings.autoPushInterval <= 0) { + plugin.clearAutoPush() && new import_obsidian8.Notice( + "Automatic push disabled!" + ); + } + } else { + new import_obsidian8.Notice( + "Please specify a valid number." + ); + } + }) + ); } - new import_obsidian7.Setting(containerEl).setName("Auto pull interval (minutes)").setDesc("Pull changes every X minutes. Set to 0 (default) to disable.").addText((text2) => text2.setValue(String(plugin.settings.autoPullInterval)).onChange((value) => { - if (!isNaN(Number(value))) { - plugin.settings.autoPullInterval = Number(value); - plugin.saveSettings(); - if (plugin.settings.autoPullInterval > 0) { - plugin.clearAutoPull(); - plugin.startAutoPull(plugin.settings.autoPullInterval); - new import_obsidian7.Notice(`Automatic pull enabled! Every ${plugin.settings.autoPullInterval} minutes.`); - } else if (plugin.settings.autoPullInterval <= 0) { - plugin.clearAutoPull() && new import_obsidian7.Notice("Automatic pull disabled!"); + new import_obsidian8.Setting(containerEl).setName("Auto pull interval (minutes)").setDesc( + "Pull changes every X minutes. Set to 0 (default) to disable." + ).addText( + (text2) => text2.setValue(String(plugin.settings.autoPullInterval)).onChange((value) => { + if (!isNaN(Number(value))) { + plugin.settings.autoPullInterval = Number(value); + plugin.saveSettings(); + if (plugin.settings.autoPullInterval > 0) { + plugin.clearAutoPull(); + plugin.startAutoPull( + plugin.settings.autoPullInterval + ); + new import_obsidian8.Notice( + `Automatic pull enabled! Every ${plugin.settings.autoPullInterval} minutes.` + ); + } else if (plugin.settings.autoPullInterval <= 0) { + plugin.clearAutoPull() && new import_obsidian8.Notice("Automatic pull disabled!"); + } + } else { + new import_obsidian8.Notice("Please specify a valid number."); } - } else { - new import_obsidian7.Notice("Please specify a valid number."); - } - })); - new import_obsidian7.Setting(containerEl).setName("Specify custom commit message on auto backup").setDesc("You will get a pop up to specify your message").addToggle((toggle) => toggle.setValue(plugin.settings.customMessageOnAutoBackup).onChange((value) => { - plugin.settings.customMessageOnAutoBackup = value; - plugin.saveSettings(); - })); - new import_obsidian7.Setting(containerEl).setName("Commit message on auto backup/commit").setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below) and {{numFiles}} (number of changed files in the commit)").addText((text2) => text2.setPlaceholder("vault backup: {{date}}").setValue(plugin.settings.autoCommitMessage).onChange((value) => { - plugin.settings.autoCommitMessage = value; - plugin.saveSettings(); - })); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Specify custom commit message on auto backup").setDesc("You will get a pop up to specify your message").addToggle( + (toggle) => toggle.setValue(plugin.settings.customMessageOnAutoBackup).onChange((value) => { + plugin.settings.customMessageOnAutoBackup = value; + plugin.saveSettings(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Commit message on auto backup/commit").setDesc( + "Available placeholders: {{date}} (see below), {{hostname}} (see below) and {{numFiles}} (number of changed files in the commit)" + ).addText( + (text2) => text2.setPlaceholder("vault backup: {{date}}").setValue(plugin.settings.autoCommitMessage).onChange((value) => { + plugin.settings.autoCommitMessage = value; + plugin.saveSettings(); + }) + ); containerEl.createEl("br"); containerEl.createEl("h3", { text: "Commit message" }); - new import_obsidian7.Setting(containerEl).setName("Commit message on manual backup/commit").setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below) and {{numFiles}} (number of changed files in the commit)").addText((text2) => text2.setPlaceholder("vault backup: {{date}}").setValue(plugin.settings.commitMessage ? plugin.settings.commitMessage : "").onChange((value) => { - plugin.settings.commitMessage = value; - plugin.saveSettings(); - })); - new import_obsidian7.Setting(containerEl).setName("{{date}} placeholder format").setDesc('Specify custom date format. E.g. "YYYY-MM-DD HH:mm:ss"').addText((text2) => text2.setPlaceholder(plugin.settings.commitDateFormat).setValue(plugin.settings.commitDateFormat).onChange(async (value) => { - plugin.settings.commitDateFormat = value; - await plugin.saveSettings(); - })); - new import_obsidian7.Setting(containerEl).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device.").addText((text2) => { - var _a2; - return text2.setValue((_a2 = plugin.localStorage.getHostname()) != null ? _a2 : "").onChange(async (value) => { - plugin.localStorage.setHostname(value); - }); - }); - new import_obsidian7.Setting(containerEl).setName("Preview commit message").addButton((button) => button.setButtonText("Preview").onClick(async () => { - const commitMessagePreview = await plugin.gitManager.formatCommitMessage(plugin.settings.commitMessage); - new import_obsidian7.Notice(`${commitMessagePreview}`); - })); - new import_obsidian7.Setting(containerEl).setName("List filenames affected by commit in the commit body").addToggle((toggle) => toggle.setValue(plugin.settings.listChangedFilesInMessageBody).onChange((value) => { - plugin.settings.listChangedFilesInMessageBody = value; - plugin.saveSettings(); - })); + new import_obsidian8.Setting(containerEl).setName("Commit message on manual backup/commit").setDesc( + "Available placeholders: {{date}} (see below), {{hostname}} (see below) and {{numFiles}} (number of changed files in the commit)" + ).addText( + (text2) => text2.setPlaceholder("vault backup: {{date}}").setValue( + plugin.settings.commitMessage ? plugin.settings.commitMessage : "" + ).onChange((value) => { + plugin.settings.commitMessage = value; + plugin.saveSettings(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("{{date}} placeholder format").setDesc( + `Specify custom date format. E.g. "${DATE_TIME_FORMAT_SECONDS}"` + ).addText( + (text2) => text2.setPlaceholder(plugin.settings.commitDateFormat).setValue(plugin.settings.commitDateFormat).onChange(async (value) => { + plugin.settings.commitDateFormat = value; + await plugin.saveSettings(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device.").addText( + (text2) => { + var _a2; + return text2.setValue((_a2 = plugin.localStorage.getHostname()) != null ? _a2 : "").onChange(async (value) => { + plugin.localStorage.setHostname(value); + }); + } + ); + new import_obsidian8.Setting(containerEl).setName("Preview commit message").addButton( + (button) => button.setButtonText("Preview").onClick(async () => { + const commitMessagePreview = await plugin.gitManager.formatCommitMessage( + plugin.settings.commitMessage + ); + new import_obsidian8.Notice(`${commitMessagePreview}`); + }) + ); + new import_obsidian8.Setting(containerEl).setName("List filenames affected by commit in the commit body").addToggle( + (toggle) => toggle.setValue(plugin.settings.listChangedFilesInMessageBody).onChange((value) => { + plugin.settings.listChangedFilesInMessageBody = value; + plugin.saveSettings(); + }) + ); containerEl.createEl("br"); containerEl.createEl("h3", { text: "Backup" }); if (plugin.gitManager instanceof SimpleGit) - new import_obsidian7.Setting(containerEl).setName("Sync Method").setDesc("Selects the method used for handling new changes found in your remote git repository.").addDropdown((dropdown) => { + new import_obsidian8.Setting(containerEl).setName("Sync Method").setDesc( + "Selects the method used for handling new changes found in your remote git repository." + ).addDropdown((dropdown) => { const options = { - "merge": "Merge", - "rebase": "Rebase", - "reset": "Other sync service (Only updates the HEAD without touching the working directory)" + merge: "Merge", + rebase: "Rebase", + reset: "Other sync service (Only updates the HEAD without touching the working directory)" }; dropdown.addOptions(options); dropdown.setValue(plugin.settings.syncMethod); @@ -24656,54 +32248,104 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { plugin.saveSettings(); }); }); - new import_obsidian7.Setting(containerEl).setName("Pull updates on startup").setDesc("Automatically pull updates when Obsidian starts").addToggle((toggle) => toggle.setValue(plugin.settings.autoPullOnBoot).onChange((value) => { - plugin.settings.autoPullOnBoot = value; - plugin.saveSettings(); - })); - new import_obsidian7.Setting(containerEl).setName("Push on backup").setDesc("Disable to only commit changes").addToggle((toggle) => toggle.setValue(!plugin.settings.disablePush).onChange((value) => { - plugin.settings.disablePush = !value; - plugin.saveSettings(); - })); - new import_obsidian7.Setting(containerEl).setName("Pull changes before push").setDesc("Commit -> pull -> push (Only if pushing is enabled)").addToggle((toggle) => toggle.setValue(plugin.settings.pullBeforePush).onChange((value) => { - plugin.settings.pullBeforePush = value; - plugin.saveSettings(); - })); + new import_obsidian8.Setting(containerEl).setName("Pull updates on startup").setDesc("Automatically pull updates when Obsidian starts").addToggle( + (toggle) => toggle.setValue(plugin.settings.autoPullOnBoot).onChange((value) => { + plugin.settings.autoPullOnBoot = value; + plugin.saveSettings(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Push on backup").setDesc("Disable to only commit changes").addToggle( + (toggle) => toggle.setValue(!plugin.settings.disablePush).onChange((value) => { + plugin.settings.disablePush = !value; + plugin.saveSettings(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Pull changes before push").setDesc("Commit -> pull -> push (Only if pushing is enabled)").addToggle( + (toggle) => toggle.setValue(plugin.settings.pullBeforePush).onChange((value) => { + plugin.settings.pullBeforePush = value; + plugin.saveSettings(); + }) + ); + if (plugin.gitManager instanceof SimpleGit) { + containerEl.createEl("br"); + containerEl.createEl("h3", { text: "Line author information" }); + this.addLineAuthorInfoSettings(); + } } containerEl.createEl("br"); containerEl.createEl("h3", { text: "Miscellaneous" }); - new import_obsidian7.Setting(containerEl).setName("Automatically refresh Source Control View on file changes").setDesc("On slower machines this may cause lags. If so, just disable this option").addToggle((toggle) => toggle.setValue(plugin.settings.refreshSourceControl).onChange((value) => { - plugin.settings.refreshSourceControl = value; - plugin.saveSettings(); - })); - new import_obsidian7.Setting(containerEl).setName("Source Control View refresh interval").setDesc("Milliseconds to wait after file change before refreshing the Source Control View").addText((toggle) => toggle.setValue(plugin.settings.refreshSourceControlTimer.toString()).setPlaceholder("7000").onChange((value) => { - plugin.settings.refreshSourceControlTimer = Math.max(parseInt(value), 500); - plugin.saveSettings(); - plugin.setRefreshDebouncer(); - })); - new import_obsidian7.Setting(containerEl).setName("Disable notifications").setDesc("Disable notifications for git operations to minimize distraction (refer to status bar for updates). Errors are still shown as notifications even if you enable this setting").addToggle((toggle) => toggle.setValue(plugin.settings.disablePopups).onChange((value) => { - plugin.settings.disablePopups = value; - plugin.saveSettings(); - })); - new import_obsidian7.Setting(containerEl).setName("Show status bar").setDesc("Obsidian must be restarted for the changes to take affect").addToggle((toggle) => toggle.setValue(plugin.settings.showStatusBar).onChange((value) => { - plugin.settings.showStatusBar = value; - plugin.saveSettings(); - })); - new import_obsidian7.Setting(containerEl).setName("Show branch status bar").setDesc("Obsidian must be restarted for the changes to take affect").addToggle((toggle) => toggle.setValue(plugin.settings.showBranchStatusBar).onChange((value) => { - plugin.settings.showBranchStatusBar = value; - plugin.saveSettings(); - })); - new import_obsidian7.Setting(containerEl).setName("Show changes files count in status bar").addToggle((toggle) => toggle.setValue(plugin.settings.changedFilesInStatusBar).onChange((value) => { - plugin.settings.changedFilesInStatusBar = value; - plugin.saveSettings(); - })); + new import_obsidian8.Setting(containerEl).setName( + "Automatically refresh Source Control View on file changes" + ).setDesc( + "On slower machines this may cause lags. If so, just disable this option" + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.refreshSourceControl).onChange((value) => { + plugin.settings.refreshSourceControl = value; + plugin.saveSettings(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Source Control View refresh interval").setDesc( + "Milliseconds to wait after file change before refreshing the Source Control View" + ).addText( + (toggle) => toggle.setValue( + plugin.settings.refreshSourceControlTimer.toString() + ).setPlaceholder("7000").onChange((value) => { + plugin.settings.refreshSourceControlTimer = Math.max( + parseInt(value), + 500 + ); + plugin.saveSettings(); + plugin.setRefreshDebouncer(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Disable notifications").setDesc( + "Disable notifications for git operations to minimize distraction (refer to status bar for updates). Errors are still shown as notifications even if you enable this setting" + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.disablePopups).onChange((value) => { + plugin.settings.disablePopups = value; + plugin.saveSettings(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Show status bar").setDesc( + "Obsidian must be restarted for the changes to take affect" + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.showStatusBar).onChange((value) => { + plugin.settings.showStatusBar = value; + plugin.saveSettings(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Show stage/unstage button in file menu").addToggle( + (toggle) => toggle.setValue(plugin.settings.showFileMenu).onChange((value) => { + plugin.settings.showFileMenu = value; + plugin.saveSettings(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Show branch status bar").setDesc( + "Obsidian must be restarted for the changes to take affect" + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.showBranchStatusBar).onChange((value) => { + plugin.settings.showBranchStatusBar = value; + plugin.saveSettings(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Show changes files count in status bar").addToggle( + (toggle) => toggle.setValue(plugin.settings.changedFilesInStatusBar).onChange((value) => { + plugin.settings.changedFilesInStatusBar = value; + plugin.saveSettings(); + }) + ); containerEl.createEl("br"); if (plugin.gitManager instanceof IsomorphicGit) { - containerEl.createEl("h3", { text: "Authentication/Commit Author" }); + containerEl.createEl("h3", { + text: "Authentication/Commit Author" + }); } else { containerEl.createEl("h3", { text: "Commit Author" }); } if (plugin.gitManager instanceof IsomorphicGit) - new import_obsidian7.Setting(containerEl).setName("Username on your git server. E.g. your username on GitHub").addText((cb) => { + new import_obsidian8.Setting(containerEl).setName( + "Username on your git server. E.g. your username on GitHub" + ).addText((cb) => { var _a2; cb.setValue((_a2 = plugin.localStorage.getUsername()) != null ? _a2 : ""); cb.onChange((value) => { @@ -24711,7 +32353,9 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { }); }); if (plugin.gitManager instanceof IsomorphicGit) - new import_obsidian7.Setting(containerEl).setName("Password/Personal access token").setDesc("Type in your password. You won't be able to see it again.").addText((cb) => { + new import_obsidian8.Setting(containerEl).setName("Password/Personal access token").setDesc( + "Type in your password. You won't be able to see it again." + ).addText((cb) => { cb.inputEl.autocapitalize = "off"; cb.inputEl.autocomplete = "off"; cb.inputEl.spellcheck = false; @@ -24719,36 +32363,52 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { plugin.localStorage.setPassword(value); }); }); - if (gitReady) - new import_obsidian7.Setting(containerEl).setName("Author name for commit").addText(async (cb) => { + if (plugin.gitReady) + new import_obsidian8.Setting(containerEl).setName("Author name for commit").addText(async (cb) => { cb.setValue(await plugin.gitManager.getConfig("user.name")); cb.onChange((value) => { - plugin.gitManager.setConfig("user.name", value == "" ? void 0 : value); + plugin.gitManager.setConfig( + "user.name", + value == "" ? void 0 : value + ); }); }); - if (gitReady) - new import_obsidian7.Setting(containerEl).setName("Author email for commit").addText(async (cb) => { - cb.setValue(await plugin.gitManager.getConfig("user.email")); + if (plugin.gitReady) + new import_obsidian8.Setting(containerEl).setName("Author email for commit").addText(async (cb) => { + cb.setValue( + await plugin.gitManager.getConfig("user.email") + ); cb.onChange((value) => { - plugin.gitManager.setConfig("user.email", value == "" ? void 0 : value); + plugin.gitManager.setConfig( + "user.email", + value == "" ? void 0 : value + ); }); }); containerEl.createEl("br"); containerEl.createEl("h3", { text: "Advanced" }); if (plugin.gitManager instanceof SimpleGit) { - new import_obsidian7.Setting(containerEl).setName("Update submodules").setDesc('"Create backup" and "pull" takes care of submodules. Missing features: Conflicted files, count of pulled/pushed/committed files. Tracking branch needs to be set for each submodule').addToggle((toggle) => toggle.setValue(plugin.settings.updateSubmodules).onChange((value) => { - plugin.settings.updateSubmodules = value; - plugin.saveSettings(); - })); - if (plugin.settings.updateSubmodules) { - new import_obsidian7.Setting(containerEl).setName("Submodule recurse checkout/switch").setDesc("Whenever a checkout happens on the root repository, recurse the checkout on the submodules (if the branches exist).").addToggle((toggle) => toggle.setValue(plugin.settings.submoduleRecurseCheckout).onChange((value) => { - plugin.settings.submoduleRecurseCheckout = value; + new import_obsidian8.Setting(containerEl).setName("Update submodules").setDesc( + '"Create backup" and "pull" takes care of submodules. Missing features: Conflicted files, count of pulled/pushed/committed files. Tracking branch needs to be set for each submodule' + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.updateSubmodules).onChange((value) => { + plugin.settings.updateSubmodules = value; plugin.saveSettings(); - })); + }) + ); + if (plugin.settings.updateSubmodules) { + new import_obsidian8.Setting(containerEl).setName("Submodule recurse checkout/switch").setDesc( + "Whenever a checkout happens on the root repository, recurse the checkout on the submodules (if the branches exist)." + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.submoduleRecurseCheckout).onChange((value) => { + plugin.settings.submoduleRecurseCheckout = value; + plugin.saveSettings(); + }) + ); } } if (plugin.gitManager instanceof SimpleGit) - new import_obsidian7.Setting(containerEl).setName("Custom Git binary path").addText((cb) => { + new import_obsidian8.Setting(containerEl).setName("Custom Git binary path").addText((cb) => { var _a2; cb.setValue((_a2 = plugin.localStorage.getGitPath()) != null ? _a2 : ""); cb.setPlaceholder("git"); @@ -24758,7 +32418,9 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { }); }); if (plugin.gitManager instanceof SimpleGit) - new import_obsidian7.Setting(containerEl).setName("Additional environment variables").setDesc("Use each line for a new environment variable in the format KEY=VALUE").addTextArea((cb) => { + new import_obsidian8.Setting(containerEl).setName("Additional environment variables").setDesc( + "Use each line for a new environment variable in the format KEY=VALUE" + ).addTextArea((cb) => { cb.setPlaceholder("GIT_DIR=/path/to/git/dir"); cb.setValue(plugin.localStorage.getEnvVars().join("\n")); cb.onChange((value) => { @@ -24766,24 +32428,28 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { }); }); if (plugin.gitManager instanceof SimpleGit) - new import_obsidian7.Setting(containerEl).setName("Additional PATH environment variable paths").setDesc("Use each line for one path").addTextArea((cb) => { + new import_obsidian8.Setting(containerEl).setName("Additional PATH environment variable paths").setDesc("Use each line for one path").addTextArea((cb) => { cb.setValue(plugin.localStorage.getPATHPaths().join("\n")); cb.onChange((value) => { plugin.localStorage.setPATHPaths(value.split("\n")); }); }); if (plugin.gitManager instanceof SimpleGit) - new import_obsidian7.Setting(containerEl).setName("Reload with new environment variables").setDesc("Removing previously added environment variables will not take effect until Obsidian is restarted.").addButton((cb) => { + new import_obsidian8.Setting(containerEl).setName("Reload with new environment variables").setDesc( + "Removing previously added environment variables will not take effect until Obsidian is restarted." + ).addButton((cb) => { cb.setButtonText("Reload"); cb.setCta(); cb.onClick(() => { plugin.gitManager.setGitInstance(); }); }); - new import_obsidian7.Setting(containerEl).setName("Custom base path (Git repository path)").setDesc(` + new import_obsidian8.Setting(containerEl).setName("Custom base path (Git repository path)").setDesc( + ` Sets the relative path to the vault from which the Git binary should be executed. Mostly used to set the path to the Git repository, which is only required if the Git repository is below the vault root directory. Use "\\" instead of "/" on Windows. - `).addText((cb) => { + ` + ).addText((cb) => { cb.setValue(plugin.settings.basePath); cb.setPlaceholder("directory/directory-with-git-repo"); cb.onChange((value) => { @@ -24792,7 +32458,9 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { plugin.gitManager.updateBasePath(value || ""); }); }); - new import_obsidian7.Setting(containerEl).setName("Custom Git directory path (Instead of '.git')").setDesc(`Requires restart of Obsidian to take effect. Use "\\" instead of "/" on Windows.`).addText((cb) => { + new import_obsidian8.Setting(containerEl).setName("Custom Git directory path (Instead of '.git')").setDesc( + `Requires restart of Obsidian to take effect. Use "\\" instead of "/" on Windows.` + ).addText((cb) => { cb.setValue(plugin.settings.gitDir); cb.setPlaceholder(".git"); cb.onChange((value) => { @@ -24800,35 +32468,1418 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab { plugin.saveSettings(); }); }); - new import_obsidian7.Setting(containerEl).setName("Disable on this device").addToggle((toggle) => toggle.setValue(plugin.localStorage.getPluginDisabled()).onChange((value) => { - plugin.localStorage.setPluginDisabled(value); - if (value) { - plugin.unloadPlugin(); - } else { - plugin.loadPlugin(); - } - new import_obsidian7.Notice("Obsidian must be restarted for the changes to take affect"); - })); - new import_obsidian7.Setting(containerEl).setName("Donate").setDesc("If you like this Plugin, consider donating to support continued development.").addButton((bt) => { + new import_obsidian8.Setting(containerEl).setName("Disable on this device").addToggle( + (toggle) => toggle.setValue(plugin.localStorage.getPluginDisabled()).onChange((value) => { + plugin.localStorage.setPluginDisabled(value); + if (value) { + plugin.unloadPlugin(); + } else { + plugin.loadPlugin(); + } + new import_obsidian8.Notice( + "Obsidian must be restarted for the changes to take affect" + ); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Donate").setDesc( + "If you like this Plugin, consider donating to support continued development." + ).addButton((bt) => { bt.buttonEl.outerHTML = "Buy Me a Coffee at ko-fi.com"; }); const info = containerEl.createDiv(); info.setAttr("align", "center"); - info.setText("Debugging and logging:\nYou can always see the logs of this and every other plugin by opening the console with"); + info.setText( + "Debugging and logging:\nYou can always see the logs of this and every other plugin by opening the console with" + ); const keys = containerEl.createDiv(); keys.setAttr("align", "center"); keys.addClass("obsidian-git-shortcuts"); - if (import_obsidian7.Platform.isMacOS === true) { + if (import_obsidian8.Platform.isMacOS === true) { keys.createEl("kbd", { text: "CMD (\u2318) + OPTION (\u2325) + I" }); } else { keys.createEl("kbd", { text: "CTRL + SHIFT + I" }); } } + configureLineAuthorShowStatus(show) { + this.settings.lineAuthor.show = show; + this.plugin.saveSettings(); + if (show) + this.plugin.lineAuthoringFeature.activateFeature(); + else + this.plugin.lineAuthoringFeature.deactivateFeature(); + } + /** + * Persists the setting {@link key} with value {@link value} and + * refreshes the line author info views. + */ + lineAuthorSettingHandler(key2, value) { + this.settings.lineAuthor[key2] = value; + this.plugin.saveSettings(); + this.plugin.lineAuthoringFeature.refreshLineAuthorViews(); + } + /** + * Ensure, that certain last shown values are persisten in the settings. + * + * Necessary for the line author info gutter context menus. + */ + beforeSaveSettings() { + const laSettings = this.settings.lineAuthor; + if (laSettings.authorDisplay !== "hide") { + laSettings.lastShownAuthorDisplay = laSettings.authorDisplay; + } + if (laSettings.dateTimeFormatOptions !== "hide") { + laSettings.lastShownDateTimeFormatOptions = laSettings.dateTimeFormatOptions; + } + } + addLineAuthorInfoSettings() { + const baseLineAuthorInfoSetting = new import_obsidian8.Setting(this.containerEl).setName( + "Show commit authoring information next to each line" + ); + if (!this.plugin.lineAuthoringFeature.isAvailableOnCurrentPlatform()) { + baseLineAuthorInfoSetting.setDesc("Only available on desktop currently.").setDisabled(true); + } + baseLineAuthorInfoSetting.descEl.innerHTML = ` + Feature guide and quick examples
+ The commit hash, author name and authoring date can all be individually toggled.
Hide everything, to only show the age-colored sidebar.`; + baseLineAuthorInfoSetting.addToggle( + (toggle) => toggle.setValue(this.settings.lineAuthor.show).onChange((value) => { + this.configureLineAuthorShowStatus(value); + this.display(); + }) + ); + if (this.settings.lineAuthor.show) { + const trackMovement = new import_obsidian8.Setting(this.containerEl).setName("Follow movement and copies across files and commits").setDesc("").addDropdown((dropdown) => { + dropdown.addOptions({ + inactive: "Do not follow (default)", + "same-commit": "Follow within same commit", + "all-commits": "Follow within all commits (maybe slow)" + }); + dropdown.setValue(this.settings.lineAuthor.followMovement); + dropdown.onChange( + (value) => this.lineAuthorSettingHandler("followMovement", value) + ); + }); + trackMovement.descEl.innerHTML = ` + By default (deactivated), each line only shows the newest commit where it was changed. +
+ With same commit, cut-copy-paste-ing of text is followed within the same commit and the original commit of authoring will be shown. +
+ With all commits, cut-copy-paste-ing text inbetween multiple commits will be detected. +
+ It uses git-blame and + for matches (at least ${GIT_LINE_AUTHORING_MOVEMENT_DETECTION_MINIMAL_LENGTH} characters) within the same (or all) commit(s), the originating commit's information is shown.`; + new import_obsidian8.Setting(this.containerEl).setName("Show commit hash").addToggle((tgl) => { + tgl.setValue(this.settings.lineAuthor.showCommitHash); + tgl.onChange( + async (value) => this.lineAuthorSettingHandler("showCommitHash", value) + ); + }); + new import_obsidian8.Setting(this.containerEl).setName("Author name display").setDesc("If and how the author is displayed").addDropdown((dropdown) => { + const options = { + hide: "Hide", + initials: "Initials (default)", + "first name": "First name", + "last name": "Last name", + full: "Full name" + }; + dropdown.addOptions(options); + dropdown.setValue(this.settings.lineAuthor.authorDisplay); + dropdown.onChange( + async (value) => this.lineAuthorSettingHandler("authorDisplay", value) + ); + }); + new import_obsidian8.Setting(this.containerEl).setName("Authoring date display").setDesc( + "If and how the date and time of authoring the line is displayed" + ).addDropdown((dropdown) => { + const options = { + hide: "Hide", + date: "Date (default)", + datetime: "Date and time", + "natural language": "Natural language", + custom: "Custom" + }; + dropdown.addOptions(options); + dropdown.setValue( + this.settings.lineAuthor.dateTimeFormatOptions + ); + dropdown.onChange( + async (value) => { + this.lineAuthorSettingHandler( + "dateTimeFormatOptions", + value + ); + this.display(); + } + ); + }); + if (this.settings.lineAuthor.dateTimeFormatOptions === "custom") { + const dateTimeFormatCustomStringSetting = new import_obsidian8.Setting( + this.containerEl + ); + dateTimeFormatCustomStringSetting.setName("Custom authoring date format").addText((cb) => { + cb.setValue( + this.settings.lineAuthor.dateTimeFormatCustomString + ); + cb.setPlaceholder("YYYY-MM-DD HH:mm"); + cb.onChange((value) => { + this.lineAuthorSettingHandler( + "dateTimeFormatCustomString", + value + ); + dateTimeFormatCustomStringSetting.descEl.innerHTML = this.previewCustomDateTimeDescriptionHtml( + value + ); + }); + }); + dateTimeFormatCustomStringSetting.descEl.innerHTML = this.previewCustomDateTimeDescriptionHtml( + this.settings.lineAuthor.dateTimeFormatCustomString + ); + } + new import_obsidian8.Setting(this.containerEl).setName("Authoring date display timezone").addDropdown((dropdown) => { + const options = { + "viewer-local": "My local (default)", + "author-local": "Author's local", + utc0000: "UTC+0000/Z" + }; + dropdown.addOptions(options); + dropdown.setValue( + this.settings.lineAuthor.dateTimeTimezone + ); + dropdown.onChange( + async (value) => this.lineAuthorSettingHandler("dateTimeTimezone", value) + ); + }).descEl.innerHTML = ` + The time-zone in which the authoring date should be shown. + Either your local time-zone (default), + the author's time-zone during commit creation or + UTC\xB100:00. + `; + const oldestAgeSetting = new import_obsidian8.Setting(this.containerEl).setName( + "Oldest age in coloring" + ); + oldestAgeSetting.descEl.innerHTML = this.previewOldestAgeDescriptionHtml( + this.settings.lineAuthor.coloringMaxAge + )[0]; + oldestAgeSetting.addText((text2) => { + text2.setPlaceholder("1y"); + text2.setValue(this.settings.lineAuthor.coloringMaxAge); + text2.onChange((value) => { + const [preview, valid] = this.previewOldestAgeDescriptionHtml(value); + oldestAgeSetting.descEl.innerHTML = preview; + if (valid) { + this.lineAuthorSettingHandler("coloringMaxAge", value); + this.refreshColorSettingsName("oldest"); + } + }); + }); + this.createColorSetting("newest"); + this.createColorSetting("oldest"); + new import_obsidian8.Setting(this.containerEl).setName("Text color").addText((field) => { + field.setValue(this.settings.lineAuthor.textColorCss); + field.onChange((value) => { + this.lineAuthorSettingHandler("textColorCss", value); + }); + }).descEl.innerHTML = ` + The CSS color of the gutter text.
+ + It is higly recommended to use + + CSS variables + defined by themes + (e.g.
var(--text-muted)
or +
var(--text-on-accent)
, + because they automatically adapt to theme changes.
+ + See: + List of available CSS variables in Obsidian + + `; + new import_obsidian8.Setting(this.containerEl).setName("Ignore whitespace and newlines in changes").addToggle((tgl) => { + tgl.setValue(this.settings.lineAuthor.ignoreWhitespace); + tgl.onChange( + (value) => this.lineAuthorSettingHandler("ignoreWhitespace", value) + ); + }).descEl.innerHTML = ` + Whitespace and newlines are interpreted as + part of the document and in changes + by default (hence not ignored). + This makes the last line being shown as 'changed' + when a new subsequent line is added, + even if the previously last line's text is the same. +
+ If you don't care about purely-whitespace changes + (e.g. list nesting / quote indentation changes), + then activating this will provide more meaningful change detection. + `; + } + } + createColorSetting(which) { + const setting = new import_obsidian8.Setting(this.containerEl).setName("").addText((text2) => { + const color = pickColor(which, this.settings.lineAuthor); + const defaultColor = pickColor( + which, + DEFAULT_SETTINGS.lineAuthor + ); + text2.setPlaceholder(rgbToString(defaultColor)); + text2.setValue(rgbToString(color)); + text2.onChange((colorNew) => { + const rgb = convertToRgb(colorNew); + if (rgb !== void 0) { + const key2 = which === "newest" ? "colorNew" : "colorOld"; + this.lineAuthorSettingHandler(key2, rgb); + } + this.refreshColorSettingsDesc(which, rgb); + }); + }); + this.lineAuthorColorSettings.set(which, setting); + this.refreshColorSettingsName(which); + this.refreshColorSettingsDesc( + which, + pickColor(which, this.settings.lineAuthor) + ); + } + refreshColorSettingsName(which) { + const settingsDom = this.lineAuthorColorSettings.get(which); + if (settingsDom) { + const whichDescriber = which === "oldest" ? `oldest (${this.settings.lineAuthor.coloringMaxAge} or older)` : "newest"; + settingsDom.nameEl.innerText = `Color for ${whichDescriber} commits`; + } + } + refreshColorSettingsDesc(which, rgb) { + const settingsDom = this.lineAuthorColorSettings.get(which); + if (settingsDom) { + settingsDom.descEl.innerHTML = this.colorSettingPreviewDescHtml( + which, + this.settings.lineAuthor, + rgb !== void 0 + ); + } + } + colorSettingPreviewDescHtml(which, laSettings, colorIsValid) { + const rgbStr = colorIsValid ? previewColor(which, laSettings) : `rgba(127,127,127,0.3)`; + const today = import_obsidian8.moment.unix(import_obsidian8.moment.now() / 1e3).format("YYYY-MM-DD"); + const text2 = colorIsValid ? `abcdef Author Name ${today}` : "invalid color"; + const preview = `
${text2}
`; + return `Supports 'rgb(r,g,b)', 'hsl(h,s,l)', hex (#) and + named colors (e.g. 'black', 'purple'). Color preview: ${preview}`; + } + previewCustomDateTimeDescriptionHtml(dateTimeFormatCustomString) { + const formattedDateTime = (0, import_obsidian8.moment)().format(dateTimeFormatCustomString); + return `
Format string to display the authoring date.
Currently: ${formattedDateTime}`; + } + previewOldestAgeDescriptionHtml(coloringMaxAge) { + const duration = parseColoringMaxAgeDuration(coloringMaxAge); + const durationString = duration !== void 0 ? `${duration.asDays()} days` : "invalid!"; + return [ + `The oldest age in the line author coloring. Everything older will have the same color. +
Smallest valid age is "1d". Currently: ${durationString}`, + duration + ]; + } +}; +function pickColor(which, las) { + return which === "oldest" ? las.colorOld : las.colorNew; +} +function parseColoringMaxAgeDuration(durationString) { + const duration = import_obsidian8.moment.duration("P" + durationString.toUpperCase()); + return duration.isValid() && duration.asDays() && duration.asDays() >= 1 ? duration : void 0; +} + +// src/lineAuthor/model.ts +function lineAuthoringId(head, objHash, path2) { + if (head === void 0 || objHash === void 0 || path2 === void 0) { + return void 0; + } + return `head${head}-obj${objHash}-path${path2}`; +} +var LineAuthoringContainerType = import_state.Annotation.define(); +function newComputationResultAsTransaction(key2, la, state) { + return state.update({ + annotations: LineAuthoringContainerType.of({ + key: key2, + la, + lineOffsetsFromUnsavedChanges: /* @__PURE__ */ new Map() + }) + }); +} +function getLineAuthorAnnotation(tr) { + return tr.annotation(LineAuthoringContainerType); +} +var lineAuthorState = import_state.StateField.define({ + create: (_state) => void 0, + /** + * The state can be updated from either an annotated transaction containing + * the newest line authoring (for the saved document) - or from + * unsaved changes of the document as the user is actively typing in the editor. + * + * In the first case, we take the new line authoring and discard anything we had remembered + * from unsaved changes. In the second case, we use the unsaved changes in {@link enrichUnsavedChanges} to pre-compute information to immediately update the + * line author gutter without needing to wait until the document is saved and the + * line authoring is properly computed. + */ + update: (previous, transaction) => { + var _a2; + return (_a2 = getLineAuthorAnnotation(transaction)) != null ? _a2 : enrichUnsavedChanges(transaction, previous); + }, + // compare cache keys. + // equality rate is >= 95% :) + // hence avoids recomputation of views + compare: (l, r) => (l == null ? void 0 : l.key) === (r == null ? void 0 : r.key) +}); +function laStateDigest(laState) { + var _a2; + const digest = import_js_sha256.sha256.create(); + if (!laState) + return digest; + const { la, key: key2, lineOffsetsFromUnsavedChanges } = laState; + digest.update(la === "untracked" ? "t" : "f"); + digest.update(key2); + for (const [k, v] of (_a2 = lineOffsetsFromUnsavedChanges.entries()) != null ? _a2 : []) + digest.update([k, v]); + return digest; +} +var latestSettings = { + get: void 0, + save: void 0 +}; +function provideSettingsAccess(settingsGetter, settingsSetter) { + latestSettings.get = settingsGetter; + latestSettings.save = settingsSetter; +} +function maxAgeInDaysFromSettings(settings) { + var _a2, _b; + return (_b = (_a2 = parseColoringMaxAgeDuration(settings.coloringMaxAge)) == null ? void 0 : _a2.asDays()) != null ? _b : parseColoringMaxAgeDuration( + DEFAULT_SETTINGS.lineAuthor.coloringMaxAge + ).asDays(); +} +function enrichUnsavedChanges(tr, prev) { + if (!prev) + return void 0; + if (!tr.changes.empty) { + tr.changes.iterChanges((fromA, toA, fromB, toB) => { + var _a2; + const oldDoc = tr.startState.doc; + const { newDoc } = tr; + const beforeFrom = oldDoc.lineAt(fromA).number; + const beforeTo = oldDoc.lineAt(toA).number; + const afterFrom = newDoc.lineAt(fromB).number; + const afterTo = newDoc.lineAt(toB).number; + const beforeLen = beforeTo - beforeFrom + 1; + const afterLen = afterTo - afterFrom + 1; + for (let afterI = afterFrom; afterI <= afterTo; afterI++) { + let offset = (_a2 = prev.lineOffsetsFromUnsavedChanges.get(afterI)) != null ? _a2 : 0; + const isLastLine = afterTo === afterI; + const changeInNumberOfLines = afterLen - beforeLen; + if (isLastLine) + offset += changeInNumberOfLines; + prev.lineOffsetsFromUnsavedChanges.set(afterI, offset); + } + }); + } + return prev; +} + +// src/lineAuthor/control.ts +var LineAuthoringSubscriber = class { + // remember path to detect and adapt to renames + constructor(state) { + this.state = state; + this.subscribeMe(); + } + async notifyLineAuthoring(id, la) { + if (this.view === void 0) { + console.warn( + `Obsidian Git: View is not defined for editor cache key. Unforeseen situation. id: ${id}` + ); + return; + } + const state = this.view.state; + const transaction = newComputationResultAsTransaction(id, la, state); + this.view.dispatch(transaction); + } + updateToNewState(state) { + const filepathChanged = this.lastSeenPath && this.filepath != this.lastSeenPath; + this.state = state; + if (filepathChanged) { + this.unsubscribeMe(this.lastSeenPath); + this.subscribeMe(); + } + return this; + } + removeIfStale() { + if (this.view.destroyed) { + this.unsubscribeMe(this.lastSeenPath); + } + } + subscribeMe() { + if (this.filepath === void 0) + return; + eventsPerFilePathSingleton.ifFilepathDefinedTransformSubscribers( + this.filepath, + (subs) => subs.add(this) + ); + this.lastSeenPath = this.filepath; + } + unsubscribeMe(oldFilepath) { + eventsPerFilePathSingleton.ifFilepathDefinedTransformSubscribers( + oldFilepath, + (subs) => subs.delete(this) + ); + } + get filepath() { + var _a2, _b; + return (_b = (_a2 = this.state.field(import_obsidian9.editorViewField)) == null ? void 0 : _a2.file) == null ? void 0 : _b.path; + } + get view() { + return this.state.field(import_obsidian9.editorEditorField); + } +}; +var subscribeNewEditor = import_state2.StateField.define({ + create: (state) => new LineAuthoringSubscriber(state), + update: (v, transaction) => v.updateToNewState(transaction.state), + compare: (a, b) => a === b +}); + +// src/lineAuthor/view/cache.ts +init_polyfill_buffer(); +function clearViewCache() { + longestRenderedGutter = void 0; + renderedAgeInDaysForAdaptiveInitialColoring = []; + ageIdx = 0; + gutterInstances.clear(); + gutterMarkersRangeSet.clear(); + attachedGutterElements.clear(); +} +var longestRenderedGutter = void 0; +var getLongestRenderedGutter = () => longestRenderedGutter; +function conditionallyUpdateLongestRenderedGutter(gutter2, text2) { + var _a2; + const length = text2.length; + if (length < ((_a2 = longestRenderedGutter == null ? void 0 : longestRenderedGutter.length) != null ? _a2 : 0)) + return; + longestRenderedGutter = { gutter: gutter2, length, text: text2 }; + const settings = latestSettings.get(); + if (length !== settings.gutterSpacingFallbackLength) { + settings.gutterSpacingFallbackLength = length; + latestSettings.save(settings); + } +} +var renderedAgeInDaysForAdaptiveInitialColoring = []; +var ADAPTIVE_INITIAL_COLORING_AGE_CACHE_SIZE = 15; +var ageIdx = 0; +function recordRenderedAgeInDays(age) { + renderedAgeInDaysForAdaptiveInitialColoring[ageIdx] = age; + ageIdx = (ageIdx + 1) % ADAPTIVE_INITIAL_COLORING_AGE_CACHE_SIZE; +} +function computeAdaptiveInitialColoringAgeInDays() { + return median(renderedAgeInDaysForAdaptiveInitialColoring); +} +var gutterInstances = /* @__PURE__ */ new Map(); +var gutterMarkersRangeSet = /* @__PURE__ */ new Map(); +var attachedGutterElements = /* @__PURE__ */ new Set(); + +// src/lineAuthor/view/view.ts +init_polyfill_buffer(); +var import_state3 = require("@codemirror/state"); +var import_view2 = require("@codemirror/view"); + +// src/lineAuthor/view/gutter/gutter.ts +init_polyfill_buffer(); +var import_view = require("@codemirror/view"); +var import_js_sha2562 = __toESM(require_sha256()); +var import_obsidian10 = require("obsidian"); + +// src/lineAuthor/view/contextMenu.ts +init_polyfill_buffer(); + +// src/lineAuthor/view/gutter/gutterElementSearch.ts +init_polyfill_buffer(); +var mouseXY = { x: -10, y: -10 }; +function prepareGutterSearchForContextMenuHandling() { + if (mouseXY.x === -10) { + window.addEventListener("mousedown", (e) => { + mouseXY.x = e.clientX; + mouseXY.y = e.clientY; + }); + } +} +function findGutterElementUnderMouse() { + for (const elt of attachedGutterElements) { + if (contains(elt, mouseXY)) + return elt; + } +} +function contains(elt, pt) { + const { x, y, width, height } = elt.getBoundingClientRect(); + return x <= pt.x && pt.x <= x + width && y <= pt.y && pt.y <= y + height; +} + +// src/pluginGlobalRef.ts +init_polyfill_buffer(); +var pluginRef = {}; + +// src/lineAuthor/view/contextMenu.ts +var COMMIT_ATTR = "data-commit"; +function handleContextMenu(menu, editor, _mdv) { + if (editor.hasFocus()) + return; + const gutterElement = findGutterElementUnderMouse(); + if (!gutterElement) + return; + const info = getCommitInfo(gutterElement); + if (!info) + return; + if (!info.isZeroCommit && !info.isWaitingGutter) { + addCopyHashMenuItem(info, menu); + } + addConfigurableLineAuthorSettings("showCommitHash", menu); + addConfigurableLineAuthorSettings("authorDisplay", menu); + addConfigurableLineAuthorSettings("dateTimeFormatOptions", menu); +} +function addCopyHashMenuItem(commit2, menu) { + menu.addItem( + (item) => item.setTitle("Copy commit hash").setIcon("copy").setSection("obs-git-line-author-copy").onClick((_e) => navigator.clipboard.writeText(commit2.hash)) + ); +} +function addConfigurableLineAuthorSettings(key2, menu) { + var _a2, _b; + let title; + let actionNewValue; + const settings = pluginRef.plugin.settings.lineAuthor; + const currentValue = settings[key2]; + const currentlyShown = typeof currentValue === "boolean" ? currentValue : currentValue !== "hide"; + const defaultValue = DEFAULT_SETTINGS.lineAuthor[key2]; + if (key2 === "showCommitHash") { + title = "Show commit hash"; + actionNewValue = !currentValue; + } else if (key2 === "authorDisplay") { + const showOption = (_a2 = settings.lastShownAuthorDisplay) != null ? _a2 : defaultValue; + title = "Show author " + (currentlyShown ? currentValue : showOption); + actionNewValue = currentlyShown ? "hide" : showOption; + } else if (key2 === "dateTimeFormatOptions") { + const showOption = (_b = settings.lastShownDateTimeFormatOptions) != null ? _b : defaultValue; + title = "Show " + (currentlyShown ? currentValue : showOption); + title += !title.contains("date") ? " date" : ""; + actionNewValue = currentlyShown ? "hide" : showOption; + } else { + impossibleBranch(key2); + } + menu.addItem( + (item) => item.setTitle(title).setSection("obs-git-line-author-configure").setChecked(currentlyShown).onClick( + (_e) => { + var _a3, _b2; + return (_b2 = (_a3 = pluginRef.plugin) == null ? void 0 : _a3.settingsTab) == null ? void 0 : _b2.lineAuthorSettingHandler( + key2, + actionNewValue + ); + } + ) + ); +} +function enrichCommitInfoForContextMenu(commit2, isWaitingGutter, elt) { + elt.setAttr( + COMMIT_ATTR, + JSON.stringify({ + hash: commit2.hash, + isZeroCommit: commit2.isZeroCommit, + isWaitingGutter + }) + ); +} +function getCommitInfo(elt) { + const commitInfoStr = elt.getAttr(COMMIT_ATTR); + return commitInfoStr ? JSON.parse(commitInfoStr) : void 0; +} + +// src/lineAuthor/view/gutter/coloring.ts +init_polyfill_buffer(); +function previewColor(which, settings) { + return which === "oldest" ? coloringBasedOnCommitAge(0, false, settings).color : coloringBasedOnCommitAge(void 0, true, settings).color; +} +function coloringBasedOnCommitAge(commitAuthorEpochSeonds, isZeroCommit, settings) { + const maxAgeInDays = maxAgeInDaysFromSettings(settings); + const epochSecondsNow = Date.now() / 1e3; + const authoringEpochSeconds = commitAuthorEpochSeonds != null ? commitAuthorEpochSeonds : 0; + const secondsSinceCommit = isZeroCommit ? 0 : epochSecondsNow - authoringEpochSeconds; + const daysSinceCommit = secondsSinceCommit / 60 / 60 / 24; + const x = Math.pow( + Math.clamp(daysSinceCommit / maxAgeInDays, 0, 1), + 1 / 2.3 + ); + const dark = isDarkMode(); + const color0 = settings.colorNew; + const color1 = settings.colorOld; + const scaling = dark ? 0.4 : 1; + const r = lin(color0.r, color1.r, x) * scaling; + const g = lin(color0.g, color1.g, x) * scaling; + const b = lin(color0.b, color1.b, x) * scaling; + const a = dark ? 0.75 : 0.25; + return { color: `rgba(${r},${g},${b},${a})`, daysSinceCommit }; +} +function lin(z0, z1, x) { + return z0 + (z1 - z0) * x; +} +function isDarkMode() { + const obsidian = window == null ? void 0 : window.app; + return (obsidian == null ? void 0 : obsidian.getTheme()) === "obsidian"; +} +function setTextColorCssBasedOnSetting(settings) { + document.body.style.setProperty( + "--obs-git-gutter-text", + settings.textColorCss + ); +} + +// src/lineAuthor/view/gutter/commitChoice.ts +init_polyfill_buffer(); +function chooseNewestCommit(lineAuthoring, startLine, endLine) { + let newest = void 0; + for (let line = startLine; line <= endLine; line++) { + const currentHash = lineAuthoring.hashPerLine[line]; + const currentCommit = lineAuthoring.commits.get(currentHash); + if (!newest || currentCommit.isZeroCommit || isNewerThan(currentCommit, newest)) { + newest = currentCommit; + } + } + return newest; +} +function isNewerThan(left, right) { + var _a2, _b, _c, _d; + const l = (_b = (_a2 = left.author) == null ? void 0 : _a2.epochSeconds) != null ? _b : 0; + const r = (_d = (_c = right.author) == null ? void 0 : _c.epochSeconds) != null ? _d : 0; + return l > r; +} + +// src/lineAuthor/view/gutter/gutter.ts +var VALUE_NOT_FOUND_FALLBACK = "-"; +var NEW_CHANGE_CHARACTER = "+"; +var NEW_CHANGE_NUMBER_OF_CHARACTERS = 3; +var DIFFERING_AUTHOR_COMMITTER_MARKER = "*"; +var NON_WHITESPACE_REGEXP = /\S/g; +var UNINTRUSIVE_CHARACTER_FOR_WAITING_RENDERING = "%"; +var TextGutter = class extends import_view.GutterMarker { + constructor(text2) { + super(); + this.text = text2; + } + eq(other) { + return this.text === (other == null ? void 0 : other.text); + } + toDOM() { + return document.createTextNode(this.text); + } + destroy(dom) { + if (!document.body.contains(dom)) + dom.remove(); + } +}; +var LineAuthoringGutter = class extends import_view.GutterMarker { + /** + * **This should only be called {@link lineAuthoringGutterMarker}!** + * + * We want to avoid creating the same instance multiple times for improved performance. + */ + constructor(lineAuthoring, startLine, endLine, key2, settings, options) { + super(); + this.lineAuthoring = lineAuthoring; + this.startLine = startLine; + this.endLine = endLine; + this.key = key2; + this.settings = settings; + this.options = options; + this.point = false; + this.elementClass = "obs-git-blame-gutter"; + } + // Equality used by CodeMirror for optimisations + eq(other) { + return this.key === (other == null ? void 0 : other.key) && this.startLine === (other == null ? void 0 : other.startLine) && this.endLine === (other == null ? void 0 : other.endLine) && (this == null ? void 0 : this.options) === (other == null ? void 0 : other.options); + } + /** + * Renders to a Html node. + * + * It choses the newest commit within the line-range, + * renders it, makes adjustments for fake-commits and finally warps + * it into HTML. + * + * The DOM is actually precomputed with {@link computeDom}, + * which provides a finaliser to run before the DOM is handed over to CodeMirror. + * This is done, because this method is called frequently. It is called, + * whenever a gutter gets into the viewport and needs to be rendered. + * + * The age in days is recorded via {@link recordRenderedAgeInDays} to enable adaptive coloring. + */ + toDOM() { + var _a2; + this.precomputedDomProvider = (_a2 = this.precomputedDomProvider) != null ? _a2 : this.computeDom(); + return this.precomputedDomProvider(); + } + destroy(dom) { + if (!document.body.contains(dom)) { + dom.remove(); + attachedGutterElements.delete(dom); + } + } + /** + * Prepares the DOM for this gutter. + */ + computeDom() { + const commit2 = chooseNewestCommit( + this.lineAuthoring, + this.startLine, + this.endLine + ); + let toBeRenderedText = commit2.isZeroCommit ? "" : this.renderNonZeroCommit(commit2); + const isTrueCommit = !commit2.isZeroCommit && this.options !== "waiting-for-result"; + if (isTrueCommit) { + conditionallyUpdateLongestRenderedGutter(this, toBeRenderedText); + } else { + toBeRenderedText = this.adaptTextForFakeCommit( + commit2, + toBeRenderedText, + this.options + ); + } + const domProvider = this.createHtmlNode( + commit2, + toBeRenderedText, + this.options === "waiting-for-result" + ); + return domProvider; + } + createHtmlNode(commit2, text2, isWaitingGutter) { + var _a2; + const templateElt = window.createDiv(); + templateElt.innerText = text2; + const { color, daysSinceCommit } = coloringBasedOnCommitAge( + (_a2 = commit2 == null ? void 0 : commit2.author) == null ? void 0 : _a2.epochSeconds, + commit2 == null ? void 0 : commit2.isZeroCommit, + this.settings + ); + templateElt.style.backgroundColor = color; + enrichCommitInfoForContextMenu(commit2, isWaitingGutter, templateElt); + function prepareForDomAttachment() { + const elt = templateElt.cloneNode(true); + attachedGutterElements.add(elt); + if (!isWaitingGutter) + recordRenderedAgeInDays(daysSinceCommit); + return elt; + } + return prepareForDomAttachment; + } + renderNonZeroCommit(commit2) { + const optionalShortHash = this.settings.showCommitHash ? this.renderHash(commit2) : ""; + const optionalAuthorName = this.settings.authorDisplay === "hide" ? "" : `${this.renderAuthorName( + commit2, + this.settings.authorDisplay + )}`; + const optionalAuthoringDate = this.settings.dateTimeFormatOptions === "hide" ? "" : `${this.renderAuthoringDate( + commit2, + this.settings.dateTimeFormatOptions, + this.settings.dateTimeFormatCustomString, + this.settings.dateTimeTimezone + )}`; + const parts = [ + optionalShortHash, + optionalAuthorName, + optionalAuthoringDate + ]; + return parts.filter((x) => x.length >= 1).join(" "); + } + renderHash(nonZeroCommit) { + return nonZeroCommit.hash.substring(0, 6); + } + renderAuthorName(nonZeroCommit, authorDisplay) { + var _a2, _b, _c, _d; + const name = (_b = (_a2 = nonZeroCommit == null ? void 0 : nonZeroCommit.author) == null ? void 0 : _a2.name) != null ? _b : ""; + const words = name.split(" ").filter((word) => word.length >= 1); + let rendered; + switch (authorDisplay) { + case "initials": + rendered = words.map((word) => word[0].toUpperCase()).join(""); + break; + case "first name": + rendered = (_c = words.first()) != null ? _c : VALUE_NOT_FOUND_FALLBACK; + break; + case "last name": + rendered = (_d = words.last()) != null ? _d : VALUE_NOT_FOUND_FALLBACK; + break; + case "full": + rendered = name; + break; + default: + return impossibleBranch(authorDisplay); + } + if (!strictDeepEqual(nonZeroCommit == null ? void 0 : nonZeroCommit.author, nonZeroCommit == null ? void 0 : nonZeroCommit.committer)) { + rendered = rendered + DIFFERING_AUTHOR_COMMITTER_MARKER; + } + return rendered; + } + renderAuthoringDate(nonZeroCommit, dateTimeFormatOptions, dateTimeFormatCustomString, dateTimeTimezone) { + var _a2; + const FALLBACK_COMMIT_DATE = "?"; + if (((_a2 = nonZeroCommit == null ? void 0 : nonZeroCommit.author) == null ? void 0 : _a2.epochSeconds) === void 0) + return FALLBACK_COMMIT_DATE; + let dateTimeFormatting; + switch (dateTimeFormatOptions) { + case "date": + dateTimeFormatting = DATE_FORMAT; + break; + case "datetime": + dateTimeFormatting = DATE_TIME_FORMAT_MINUTES; + break; + case "custom": + dateTimeFormatting = dateTimeFormatCustomString; + break; + case "natural language": + dateTimeFormatting = (time) => { + const diff2 = time.diff((0, import_obsidian10.moment)()); + const addFluentSuffix = true; + return import_obsidian10.moment.duration(diff2).humanize(addFluentSuffix); + }; + break; + default: + return impossibleBranch(dateTimeFormatOptions); + } + let authoringDate = import_obsidian10.moment.unix( + nonZeroCommit.author.epochSeconds + ); + switch (dateTimeTimezone) { + case "viewer-local": + break; + case "author-local": + authoringDate = authoringDate.utcOffset( + nonZeroCommit.author.tz + ); + dateTimeFormatting += " Z"; + break; + case "utc0000": + authoringDate = authoringDate.utc(); + dateTimeFormatting += "[Z]"; + break; + default: + return impossibleBranch(dateTimeTimezone); + } + if (typeof dateTimeFormatting === "string") { + return authoringDate.format(dateTimeFormatting); + } else { + return dateTimeFormatting(authoringDate); + } + } + adaptTextForFakeCommit(commit2, toBeRenderedText, options) { + var _a2, _b, _c, _d; + const original = (_b = (_a2 = getLongestRenderedGutter()) == null ? void 0 : _a2.text) != null ? _b : toBeRenderedText; + const fillCharacter = options !== "waiting-for-result" && commit2.isZeroCommit ? NEW_CHANGE_CHARACTER : UNINTRUSIVE_CHARACTER_FOR_WAITING_RENDERING; + toBeRenderedText = original.replace( + NON_WHITESPACE_REGEXP, + fillCharacter + ); + const desiredTextLength = (_d = (_c = latestSettings.get()) == null ? void 0 : _c.gutterSpacingFallbackLength) != null ? _d : toBeRenderedText.length; + toBeRenderedText = resizeToLength( + toBeRenderedText, + desiredTextLength, + fillCharacter + ); + if (options !== "waiting-for-result" && commit2.isZeroCommit) { + const numberOfLastCharactersToKeep = Math.min( + desiredTextLength, + NEW_CHANGE_NUMBER_OF_CHARACTERS + ); + toBeRenderedText = prefixOfLengthAsWhitespace( + toBeRenderedText, + desiredTextLength - numberOfLastCharactersToKeep + ); + } + return toBeRenderedText; + } +}; +function lineAuthoringGutterMarker(la, startLine, endLine, key2, settings, options) { + const digest = import_js_sha2562.sha256.create(); + digest.update(Object.values(settings).join(",")); + digest.update(`s${startLine}-e${endLine}-k${key2}-o${options}`); + const cacheKey = digest.hex(); + const cached = gutterInstances.get(cacheKey); + if (cached) + return cached; + const result = new LineAuthoringGutter( + la, + startLine, + endLine, + key2, + settings, + options + ); + gutterInstances.set(cacheKey, result); + return result; +} + +// src/lineAuthor/view/gutter/initial.ts +init_polyfill_buffer(); +var import_obsidian11 = require("obsidian"); +function initialSpacingGutter() { + var _a2, _b; + const length = (_b = (_a2 = latestSettings.get()) == null ? void 0 : _a2.gutterSpacingFallbackLength) != null ? _b : DEFAULT_SETTINGS.lineAuthor.gutterSpacingFallbackLength; + return new TextGutter(Array(length).fill("-").join("")); +} +function initialLineAuthoringGutter(settings) { + const { lineAuthoring, ageForInitialRender } = adaptiveInitialColoredWaitingLineAuthoring(settings); + return lineAuthoringGutterMarker( + lineAuthoring, + 1, + 1, + "initialGutter" + ageForInitialRender, + // use a age coloring based cache key + settings, + "waiting-for-result" + ); +} +function adaptiveInitialColoredWaitingLineAuthoring(settings) { + var _a2; + const ageForInitialRender = (_a2 = computeAdaptiveInitialColoringAgeInDays()) != null ? _a2 : maxAgeInDaysFromSettings(settings) * 0.25; + const slightlyOlderAgeForInitialRender = (0, import_obsidian11.moment)().add( + -ageForInitialRender, + "days" + ); + const dummyAuthor = { + name: "", + epochSeconds: momentToEpochSeconds(slightlyOlderAgeForInitialRender), + tz: "+0000" + }; + const dummyCommit = { + hash: "waiting-for-result", + author: dummyAuthor, + committer: dummyAuthor, + isZeroCommit: false + }; + return { + lineAuthoring: { + hashPerLine: [void 0, "waiting-for-result"], + commits: /* @__PURE__ */ new Map([["waiting-for-result", dummyCommit]]) + }, + ageForInitialRender + }; +} + +// src/lineAuthor/view/gutter/untrackedFile.ts +init_polyfill_buffer(); +function newUntrackedFileGutter(key2, settings) { + const dummyLineAuthoring = { + hashPerLine: [void 0, "000000"], + commits: /* @__PURE__ */ new Map([["000000", zeroCommit]]) + }; + return lineAuthoringGutterMarker(dummyLineAuthoring, 1, 1, key2, settings); +} + +// src/lineAuthor/view/view.ts +var UNDISPLAYED = new TextGutter(""); +var lineAuthorGutter = (0, import_view2.gutter)({ + class: "line-author-gutter-container", + markers(view) { + const lineAuthoring = view.state.field(lineAuthorState, false); + return lineAuthoringGutterMarkersRangeSet(view, lineAuthoring); + }, + lineMarkerChange(update2) { + const newLineAuthoringId = laStateDigest( + update2.state.field(lineAuthorState) + ); + const oldLineAuthoringId = laStateDigest( + update2.startState.field(lineAuthorState) + ); + return oldLineAuthoringId !== newLineAuthoringId; + }, + renderEmptyElements: true, + initialSpacer: (view) => { + temporaryWorkaroundGutterSpacingForRenderedLineAuthoring(view); + return initialSpacingGutter(); + }, + updateSpacer: (_sp, update2) => { + var _a2, _b; + temporaryWorkaroundGutterSpacingForRenderedLineAuthoring(update2.view); + return (_b = (_a2 = getLongestRenderedGutter()) == null ? void 0 : _a2.gutter) != null ? _b : initialSpacingGutter(); + } +}); +function lineAuthoringGutterMarkersRangeSet(view, optLA) { + const digest = laStateDigest(optLA); + const doc = view.state.doc; + const lineBlockEndPos = /* @__PURE__ */ new Map(); + for (let line = 1; line <= doc.lines; line++) { + const from = doc.line(line).from; + const to = view.lineBlockAt(from).to; + lineBlockEndPos.set(line, [from, to]); + digest.update([from, to, 0]); + } + const laSettings = latestSettings.get(); + digest.update("s" + Object.values(latestSettings).join(",")); + const cacheKey = digest.hex(); + const cached = gutterMarkersRangeSet.get(cacheKey); + if (cached) + return cached; + const { result, allowCache } = computeLineAuthoringGutterMarkersRangeSet( + doc, + lineBlockEndPos, + laSettings, + optLA + ); + if (allowCache) + gutterMarkersRangeSet.set(cacheKey, result); + return result; +} +function computeLineAuthoringGutterMarkersRangeSet(doc, blocksPerLine, settings, optLA) { + let allowCache = true; + const docLastLine = doc.lines; + const ranges = []; + function add2(from, to, gutter2) { + return ranges.push(gutter2.range(from, to)); + } + const lineFrom = computeLineMappingForUnsavedChanges(docLastLine, optLA); + const emptyDoc = doc.length === 0; + const lastLineIsEmpty = doc.iterLines(docLastLine, docLastLine + 1).next().value === ""; + for (let startLine = 1; startLine <= docLastLine; startLine++) { + const [from, to] = blocksPerLine.get(startLine); + const endLine = doc.lineAt(to).number; + if (emptyDoc) { + add2(from, to, UNDISPLAYED); + continue; + } + if (startLine === docLastLine && lastLineIsEmpty) { + add2(from, to, UNDISPLAYED); + continue; + } + if (optLA === void 0) { + add2(from, to, initialLineAuthoringGutter(settings)); + allowCache = false; + continue; + } + const { key: key2, la } = optLA; + if (la === "untracked") { + add2(from, to, newUntrackedFileGutter(la, settings)); + continue; + } + const lastAuthorLine = la.hashPerLine.length - 1; + const laStartLine = lineFrom[startLine]; + const laEndLine = lineFrom[endLine]; + if (laEndLine && laEndLine > lastAuthorLine) { + add2(from, to, UNDISPLAYED); + } + if (laStartLine !== void 0 && between(1, laStartLine, lastAuthorLine) && laEndLine !== void 0 && between(1, laEndLine, lastAuthorLine)) { + add2( + from, + to, + lineAuthoringGutterMarker( + la, + laStartLine, + laEndLine, + key2, + settings + ) + ); + continue; + } + if (lastAuthorLine < 1) { + add2(from, to, initialLineAuthoringGutter(settings)); + allowCache = false; + continue; + } + const start = Math.clamp(laStartLine != null ? laStartLine : startLine, 1, lastAuthorLine); + const end = Math.clamp(laEndLine != null ? laEndLine : endLine, 1, lastAuthorLine); + add2( + from, + to, + lineAuthoringGutterMarker( + la, + start, + end, + key2 + "computing", + settings, + "waiting-for-result" + ) + ); + } + return { result: import_state3.RangeSet.of( + ranges, + /* sort = */ + true + ), allowCache }; +} +function computeLineMappingForUnsavedChanges(docLastLine, optLA) { + if (!(optLA == null ? void 0 : optLA.lineOffsetsFromUnsavedChanges)) { + return Array.from(new Array(docLastLine + 1), (ln) => ln); + } + const lineFrom = [void 0]; + let cumulativeLineOffset = 0; + for (let ln = 1; ln <= docLastLine; ln++) { + const unsavedChanges = optLA.lineOffsetsFromUnsavedChanges.get(ln); + cumulativeLineOffset += unsavedChanges != null ? unsavedChanges : 0; + lineFrom[ln] = unsavedChanges === void 0 ? ln - cumulativeLineOffset : void 0; + } + return lineFrom; +} +function temporaryWorkaroundGutterSpacingForRenderedLineAuthoring(view) { + const guttersContainers = view.dom.querySelectorAll( + ".cm-gutters" + ); + guttersContainers.forEach((cont) => { + if (!(cont == null ? void 0 : cont.style)) + return; + if (!cont.style.marginLeft) { + cont.style.marginLeft = "unset"; + } + }); +} + +// src/lineAuthor/lineAuthorProvider.ts +var LineAuthorProvider = class { + constructor(plugin) { + this.plugin = plugin; + /** + * Saves all computed line authoring results. + * + * See {@link LineAuthoringId} + */ + this.lineAuthorings = /* @__PURE__ */ new Map(); + } + async trackChanged(file) { + this.trackChangedHelper(file).catch((reason) => { + console.warn("Obsidian Git: Error in trackChanged." + reason); + return Promise.reject(reason); + }); + } + async trackChangedHelper(file) { + if (!file) + return; + if (file.path === void 0) { + console.warn( + "Obsidian Git: Attempted to track change of undefined filepath. Unforeseen situation." + ); + return; + } + this.computeLineAuthorInfo(file.path); + } + destroy() { + this.lineAuthorings.clear(); + eventsPerFilePathSingleton.clear(); + clearViewCache(); + } + async computeLineAuthorInfo(filepath) { + const gitManager = this.plugin.lineAuthoringFeature.isAvailableOnCurrentPlatform().gitManager; + const headRevision = await gitManager.submoduleAwareHeadRevisonInContainingDirectory( + filepath + ); + const fileHash = await gitManager.hashObject(filepath); + const key2 = lineAuthoringId(headRevision, fileHash, filepath); + if (key2 === void 0) { + return; + } + if (this.lineAuthorings.has(key2)) { + } else { + const gitAuthorResult = await gitManager.blame( + filepath, + this.plugin.settings.lineAuthor.followMovement, + this.plugin.settings.lineAuthor.ignoreWhitespace + ); + this.lineAuthorings.set(key2, gitAuthorResult); + } + this.notifyComputationResultToSubscribers(filepath, key2); + } + notifyComputationResultToSubscribers(filepath, key2) { + eventsPerFilePathSingleton.ifFilepathDefinedTransformSubscribers( + filepath, + async (subs) => subs.forEach( + (sub) => sub.notifyLineAuthoring(key2, this.lineAuthorings.get(key2)) + ) + ); + } +}; +var enabledLineAuthorInfoExtensions = import_state4.Prec.high([ + subscribeNewEditor, + lineAuthorState, + lineAuthorGutter +]); + +// src/lineAuthor/lineAuthorIntegration.ts +var LineAuthoringFeature = class { + constructor(plg) { + this.plg = plg; + this.codeMirrorExtensions = []; + this.handleWorkspaceLeaf = (leaf) => { + const obsView = leaf == null ? void 0 : leaf.view; + const file = obsView == null ? void 0 : obsView.file; + if (!this.lineAuthorInfoProvider) { + console.warn( + "Obsidian Git: undefined lineAuthorInfoProvider. Unexpected situation." + ); + return; + } + if (file === void 0 || (obsView == null ? void 0 : obsView.allowNoFile) === true) + return; + this.lineAuthorInfoProvider.trackChanged(file); + }; + } + // ========================= INIT and DE-INIT ========================== + onLoadPlugin() { + this.plg.registerEditorExtension(this.codeMirrorExtensions); + provideSettingsAccess( + () => this.plg.settings.lineAuthor, + (laSettings) => { + this.plg.settings.lineAuthor = laSettings; + this.plg.saveSettings(); + } + ); + } + conditionallyActivateBySettings() { + if (this.plg.settings.lineAuthor.show) { + this.activateFeature(); + } + } + activateFeature() { + try { + if (!this.isAvailableOnCurrentPlatform()) + return; + setTextColorCssBasedOnSetting(this.plg.settings.lineAuthor); + this.lineAuthorInfoProvider = new LineAuthorProvider(this.plg); + this.createEventHandlers(); + this.activateCodeMirrorExtensions(); + console.log(this.plg.manifest.name + ": Enabled line authoring."); + } catch (e) { + console.warn( + "Obsidian Git: Error while loading line authoring feature.", + e + ); + this.deactivateFeature(); + } + } + /** + * Deactivates the feature. This function is very defensive, as it is also + * called to cleanup, if a critical error in the line authoring has occurred. + */ + deactivateFeature() { + var _a2; + this.destroyEventHandlers(); + this.deactivateCodeMirrorExtensions(); + (_a2 = this.lineAuthorInfoProvider) == null ? void 0 : _a2.destroy(); + this.lineAuthorInfoProvider = void 0; + console.log(this.plg.manifest.name + ": Disabled line authoring."); + } + isAvailableOnCurrentPlatform() { + return { + available: this.plg.useSimpleGit && import_obsidian12.Platform.isDesktopApp, + gitManager: this.plg.gitManager instanceof SimpleGit ? this.plg.gitManager : void 0 + }; + } + // ========================= REFRESH ========================== + refreshLineAuthorViews() { + if (this.plg.settings.lineAuthor.show) { + this.deactivateFeature(); + this.activateFeature(); + } + } + // ========================= CODEMIRROR EXTENSIONS ========================== + activateCodeMirrorExtensions() { + this.codeMirrorExtensions.push(enabledLineAuthorInfoExtensions); + this.plg.app.workspace.updateOptions(); + this.plg.app.workspace.iterateAllLeaves(this.handleWorkspaceLeaf); + } + deactivateCodeMirrorExtensions() { + for (const ext of this.codeMirrorExtensions) { + this.codeMirrorExtensions.remove(ext); + } + this.plg.app.workspace.updateOptions(); + } + // ========================= HANDLERS ========================== + createEventHandlers() { + this.gutterContextMenuEvent = this.createGutterContextMenuHandler(); + this.fileOpenEvent = this.createFileOpenEvent(); + this.workspaceLeafChangeEvent = this.createWorkspaceLeafChangeEvent(); + this.fileModificationEvent = this.createVaultFileModificationHandler(); + this.refreshOnCssChangeEvent = this.createCssRefreshHandler(); + this.fileRenameEvent = this.createFileRenameEvent(); + prepareGutterSearchForContextMenuHandling(); + this.plg.registerEvent(this.gutterContextMenuEvent); + this.plg.registerEvent(this.refreshOnCssChangeEvent); + this.plg.registerEvent(this.fileOpenEvent); + this.plg.registerEvent(this.workspaceLeafChangeEvent); + this.plg.registerEvent(this.fileModificationEvent); + this.plg.registerEvent(this.fileRenameEvent); + } + destroyEventHandlers() { + this.plg.app.workspace.offref(this.refreshOnCssChangeEvent); + this.plg.app.workspace.offref(this.fileOpenEvent); + this.plg.app.workspace.offref(this.workspaceLeafChangeEvent); + this.plg.app.workspace.offref(this.refreshOnCssChangeEvent); + this.plg.app.vault.offref(this.fileRenameEvent); + this.plg.app.workspace.offref(this.gutterContextMenuEvent); + } + createFileOpenEvent() { + return this.plg.app.workspace.on( + "file-open", + (file) => { + var _a2; + return (_a2 = this.lineAuthorInfoProvider) == null ? void 0 : _a2.trackChanged(file); + } + ); + } + createWorkspaceLeafChangeEvent() { + return this.plg.app.workspace.on( + "active-leaf-change", + this.handleWorkspaceLeaf + ); + } + createFileRenameEvent() { + return this.plg.app.vault.on( + "rename", + (file, _old) => { + var _a2; + return file instanceof import_obsidian12.TFile && ((_a2 = this.lineAuthorInfoProvider) == null ? void 0 : _a2.trackChanged(file)); + } + ); + } + createVaultFileModificationHandler() { + return this.plg.app.vault.on( + "modify", + (anyPath) => { + var _a2; + return anyPath instanceof import_obsidian12.TFile && ((_a2 = this.lineAuthorInfoProvider) == null ? void 0 : _a2.trackChanged(anyPath)); + } + ); + } + createCssRefreshHandler() { + return this.plg.app.workspace.on( + "css-change", + () => this.refreshLineAuthorViews() + ); + } + createGutterContextMenuHandler() { + return this.plg.app.workspace.on("editor-menu", handleContextMenu); + } +}; + +// src/promiseQueue.ts +init_polyfill_buffer(); +var PromiseQueue = class { + constructor() { + this.tasks = []; + } + addTask(task) { + this.tasks.push(task); + if (this.tasks.length === 1) { + this.handleTask(); + } + } + async handleTask() { + if (this.tasks.length > 0) { + this.tasks[0]().finally(() => { + this.tasks.shift(); + this.handleTask(); + }); + } + } }; // src/statusBar.ts init_polyfill_buffer(); -var import_obsidian8 = __toModule(require("obsidian")); +var import_obsidian13 = require("obsidian"); var StatusBar = class { constructor(statusBarEl, plugin) { this.statusBarEl = statusBarEl; @@ -24836,6 +33887,7 @@ var StatusBar = class { this.messages = []; this.base = "obsidian-git-statusbar-"; this.statusBarEl.setAttribute("aria-label-position", "top"); + addEventListener("git-refresh", this.refreshCommitTimestamp.bind(this)); } displayMessage(message, timeout) { this.messages.push({ @@ -24871,75 +33923,89 @@ var StatusBar = class { this.iconEl.style.float = "left"; } switch (this.plugin.state) { - case PluginState.idle: - this.displayFromNow(this.plugin.lastUpdate); + case 0 /* idle */: + this.displayFromNow(); break; - case PluginState.status: + case 1 /* status */: this.statusBarEl.ariaLabel = "Checking repository status..."; - (0, import_obsidian8.setIcon)(this.iconEl, "refresh-cw"); + (0, import_obsidian13.setIcon)(this.iconEl, "refresh-cw"); this.statusBarEl.addClass(this.base + "status"); break; - case PluginState.add: + case 3 /* add */: this.statusBarEl.ariaLabel = "Adding files..."; - (0, import_obsidian8.setIcon)(this.iconEl, "refresh-w"); + (0, import_obsidian13.setIcon)(this.iconEl, "refresh-w"); this.statusBarEl.addClass(this.base + "add"); break; - case PluginState.commit: + case 4 /* commit */: this.statusBarEl.ariaLabel = "Committing changes..."; - (0, import_obsidian8.setIcon)(this.iconEl, "git-commit"); + (0, import_obsidian13.setIcon)(this.iconEl, "git-commit"); this.statusBarEl.addClass(this.base + "commit"); break; - case PluginState.push: + case 5 /* push */: this.statusBarEl.ariaLabel = "Pushing changes..."; - (0, import_obsidian8.setIcon)(this.iconEl, "upload"); + (0, import_obsidian13.setIcon)(this.iconEl, "upload"); this.statusBarEl.addClass(this.base + "push"); break; - case PluginState.pull: + case 2 /* pull */: this.statusBarEl.ariaLabel = "Pulling changes..."; - (0, import_obsidian8.setIcon)(this.iconEl, "download"); + (0, import_obsidian13.setIcon)(this.iconEl, "download"); this.statusBarEl.addClass(this.base + "pull"); break; - case PluginState.conflicted: + case 6 /* conflicted */: this.statusBarEl.ariaLabel = "You have conflict files..."; - (0, import_obsidian8.setIcon)(this.iconEl, "alert-circle"); + (0, import_obsidian13.setIcon)(this.iconEl, "alert-circle"); this.statusBarEl.addClass(this.base + "conflict"); break; default: this.statusBarEl.ariaLabel = "Failed on initialization!"; - (0, import_obsidian8.setIcon)(this.iconEl, "alert-triangle"); + (0, import_obsidian13.setIcon)(this.iconEl, "alert-triangle"); this.statusBarEl.addClass(this.base + "failed-init"); break; } } - displayFromNow(timestamp) { + displayFromNow() { + var _a2; + const timestamp = this.lastCommitTimestamp; if (timestamp) { - const moment = window.moment; - const fromNow = moment(timestamp).fromNow(); - this.statusBarEl.ariaLabel = `${this.plugin.offlineMode ? "Offline: " : ""}Last Git update: ${fromNow}`; + const moment5 = window.moment; + const fromNow = moment5(timestamp).fromNow(); + this.statusBarEl.ariaLabel = `${this.plugin.offlineMode ? "Offline: " : ""}Last Commit: ${fromNow}`; + if ((_a2 = this.unPushedCommits) != null ? _a2 : 0 > 0) { + this.statusBarEl.ariaLabel += ` +(${this.unPushedCommits} unpushed commits)`; + } } else { this.statusBarEl.ariaLabel = this.plugin.offlineMode ? "Git is offline" : "Git is ready"; } if (this.plugin.offlineMode) { - (0, import_obsidian8.setIcon)(this.iconEl, "globe"); + (0, import_obsidian13.setIcon)(this.iconEl, "globe"); } else { - (0, import_obsidian8.setIcon)(this.iconEl, "check"); + (0, import_obsidian13.setIcon)(this.iconEl, "check"); } if (this.plugin.settings.changedFilesInStatusBar && this.plugin.cachedStatus) { - this.textEl.setText(this.plugin.cachedStatus.changed.length.toString()); + this.textEl.setText( + this.plugin.cachedStatus.changed.length.toString() + ); } this.statusBarEl.addClass(this.base + "idle"); } + async refreshCommitTimestamp() { + this.lastCommitTimestamp = await this.plugin.gitManager.getLastCommitTime(); + this.unPushedCommits = await this.plugin.gitManager.getUnpushedCommits(); + } }; // src/ui/modals/changedFilesModal.ts init_polyfill_buffer(); -var import_obsidian9 = __toModule(require("obsidian")); -var ChangedFilesModal = class extends import_obsidian9.FuzzySuggestModal { +var import_obsidian14 = require("obsidian"); +var ChangedFilesModal = class extends import_obsidian14.FuzzySuggestModal { constructor(plugin, changedFiles) { super(plugin.app); this.plugin = plugin; this.changedFiles = changedFiles; - this.setPlaceholder("Not supported files will be opened by default app!"); + this.setPlaceholder( + "Not supported files will be opened by default app!" + ); } getItems() { return this.changedFiles; @@ -24957,7 +34023,10 @@ var ChangedFilesModal = class extends import_obsidian9.FuzzySuggestModal { return `${working_dir}${index2} | ${item.vault_path}`; } onChooseItem(item, _) { - if (this.plugin.app.metadataCache.getFirstLinkpathDest(item.vault_path, "") == null) { + if (this.plugin.app.metadataCache.getFirstLinkpathDest( + item.vault_path, + "" + ) == null) { this.app.openWithDefaultApp(item.vault_path); } else { this.plugin.app.workspace.openLinkText(item.vault_path, "/"); @@ -24967,14 +34036,16 @@ var ChangedFilesModal = class extends import_obsidian9.FuzzySuggestModal { // src/ui/modals/customMessageModal.ts init_polyfill_buffer(); -var import_obsidian10 = __toModule(require("obsidian")); -var CustomMessageModal = class extends import_obsidian10.SuggestModal { +var import_obsidian15 = require("obsidian"); +var CustomMessageModal = class extends import_obsidian15.SuggestModal { constructor(plugin, fromAutoBackup) { super(plugin.app); this.fromAutoBackup = fromAutoBackup; this.resolve = null; this.plugin = plugin; - this.setPlaceholder("Type your message and select optional the version with the added date."); + this.setPlaceholder( + "Type your message and select optional the version with the added date." + ); } open() { super.open(); @@ -25004,48 +34075,82 @@ var CustomMessageModal = class extends import_obsidian10.SuggestModal { } }; -// src/constants.ts +// src/openInGitHub.ts init_polyfill_buffer(); -var import_obsidian11 = __toModule(require("obsidian")); -var DEFAULT_SETTINGS = { - commitMessage: "vault backup: {{date}}", - autoCommitMessage: void 0, - commitDateFormat: "YYYY-MM-DD HH:mm:ss", - autoSaveInterval: 0, - autoPushInterval: 0, - autoPullInterval: 0, - autoPullOnBoot: false, - disablePush: false, - pullBeforePush: true, - disablePopups: false, - listChangedFilesInMessageBody: false, - showStatusBar: true, - updateSubmodules: false, - syncMethod: "merge", - customMessageOnAutoBackup: false, - autoBackupAfterFileChange: false, - treeStructure: false, - refreshSourceControl: import_obsidian11.Platform.isDesktopApp, - basePath: "", - differentIntervalCommitAndPush: false, - changedFilesInStatusBar: false, - showedMobileNotice: false, - refreshSourceControlTimer: 7e3, - showBranchStatusBar: true, - setLastSaveToLastCommit: false -}; -var GIT_VIEW_CONFIG = { - type: "git-view", - name: "Source Control", - icon: "git-pull-request" -}; -var DIFF_VIEW_CONFIG = { - type: "diff-view", - name: "Diff View", - icon: "git-pull-request" -}; +var import_obsidian16 = require("obsidian"); +async function openLineInGitHub(editor, file, manager) { + const data = await getData(manager); + if (data.result === "failure") { + new import_obsidian16.Notice(data.reason); + return; + } + const { isGitHub, branch: branch2, repo, user } = data; + if (isGitHub) { + const path2 = manager.asRepositoryRelativePath(file.path, true); + const from = editor.getCursor("from").line + 1; + const to = editor.getCursor("to").line + 1; + if (from === to) { + window.open( + `https://github.com/${user}/${repo}/blob/${branch2}/${path2}?plain=1#L${from}` + ); + } else { + window.open( + `https://github.com/${user}/${repo}/blob/${branch2}/${path2}?plain=1#L${from}-L${to}` + ); + } + } else { + new import_obsidian16.Notice("It seems like you are not using GitHub"); + } +} +async function openHistoryInGitHub(file, manager) { + const data = await getData(manager); + if (data.result === "failure") { + new import_obsidian16.Notice(data.reason); + return; + } + const { isGitHub, branch: branch2, repo, user } = data; + const path2 = manager.asRepositoryRelativePath(file.path, true); + if (isGitHub) { + window.open( + `https://github.com/${user}/${repo}/commits/${branch2}/${path2}` + ); + } else { + new import_obsidian16.Notice("It seems like you are not using GitHub"); + } +} +async function getData(manager) { + const branchInfo = await manager.branchInfo(); + const remoteBranch = branchInfo.tracking; + const branch2 = branchInfo.current; + if (remoteBranch == null) { + return { + result: "failure", + reason: "Remote branch is not configured" + }; + } + if (branch2 == null) { + return { + result: "failure", + reason: "Failed to get current branch name" + }; + } + const remote = remoteBranch.substring(0, remoteBranch.indexOf("/")); + const remoteUrl = await manager.getConfig( + `remote.${remote}.url` + ); + const [isGitHub, httpsUser, httpsRepo, sshUser, sshRepo] = remoteUrl.match( + /(?:^https:\/\/github\.com\/(.*)\/(.*)\.git$)|(?:^git@github\.com:(.*)\/(.*)\.git$)/ + ); + return { + result: "success", + isGitHub: !!isGitHub, + repo: httpsRepo || sshRepo, + user: httpsUser || sshUser, + branch: branch2 + }; +} -// src/localStorageSettings.ts +// src/setting/localStorageSettings.ts init_polyfill_buffer(); var LocalStorageSettings = class { constructor(plugin) { @@ -25053,7 +34158,16 @@ var LocalStorageSettings = class { this.prefix = this.plugin.manifest.id + ":"; } migrate() { - const keys = ["password", "hostname", "conflict", "lastAutoPull", "lastAutoBackup", "lastAutoPush", "gitPath", "pluginDisabled"]; + const keys = [ + "password", + "hostname", + "conflict", + "lastAutoPull", + "lastAutoBackup", + "lastAutoPush", + "gitPath", + "pluginDisabled" + ]; for (const key2 of keys) { const old = localStorage.getItem(this.prefix + key2); if (app.loadLocalStorage(this.prefix + key2) == null && old != null) { @@ -25121,10 +34235,15 @@ var LocalStorageSettings = class { } getEnvVars() { var _a2; - return JSON.parse((_a2 = app.loadLocalStorage(this.prefix + "envVars")) != null ? _a2 : "[]"); + return JSON.parse( + (_a2 = app.loadLocalStorage(this.prefix + "envVars")) != null ? _a2 : "[]" + ); } setEnvVars(value) { - return app.saveLocalStorage(this.prefix + "envVars", JSON.stringify(value)); + return app.saveLocalStorage( + this.prefix + "envVars", + JSON.stringify(value) + ); } getPluginDisabled() { return app.loadLocalStorage(this.prefix + "pluginDisabled") == "true"; @@ -25134,58 +34253,16 @@ var LocalStorageSettings = class { } }; -// src/openInGitHub.ts -init_polyfill_buffer(); -var import_obsidian12 = __toModule(require("obsidian")); -async function openLineInGitHub(editor, file, manager) { - const { isGitHub, branch: branch2, repo, user } = await getData(manager); - if (isGitHub) { - const path2 = manager.getPath(file.path, true); - const from = editor.getCursor("from").line + 1; - const to = editor.getCursor("to").line + 1; - if (from === to) { - window.open(`https://github.com/${user}/${repo}/blob/${branch2}/${path2}?plain=1#L${from}`); - } else { - window.open(`https://github.com/${user}/${repo}/blob/${branch2}/${path2}?plain=1#L${from}-L${to}`); - } - } else { - new import_obsidian12.Notice("It seems like you are not using GitHub"); - } -} -async function openHistoryInGitHub(file, manager) { - const { isGitHub, branch: branch2, repo, user } = await getData(manager); - const path2 = manager.getPath(file.path, true); - if (isGitHub) { - window.open(`https://github.com/${user}/${repo}/commits/${branch2}/${path2}`); - } else { - new import_obsidian12.Notice("It seems like you are not using GitHub"); - } -} -async function getData(manager) { - const branchInfo = await manager.branchInfo(); - const remoteBranch = branchInfo.tracking; - const branch2 = branchInfo.current; - const remote = remoteBranch.substring(0, remoteBranch.indexOf("/")); - const remoteUrl = await manager.getConfig(`remote.${remote}.url`); - const [isGitHub, httpsUser, httpsRepo, sshUser, sshRepo] = remoteUrl.match(/(?:^https:\/\/github\.com\/(.*)\/(.*)\.git$)|(?:^git@github\.com:(.*)\/(.*)\.git$)/); - return { - isGitHub: !!isGitHub, - repo: httpsRepo || sshRepo, - user: httpsUser || sshUser, - branch: branch2 - }; -} - // src/ui/diff/diffView.ts init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/diff2html.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/diff2html.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/diff-parser.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/diff-parser.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/types.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/types.js init_polyfill_buffer(); var LineType; (function(LineType2) { @@ -25207,7 +34284,7 @@ var DiffStyleType = { CHAR: "char" }; -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/utils.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/utils.js init_polyfill_buffer(); var specials = [ "-", @@ -25245,7 +34322,7 @@ function hashCode(text2) { return hash2; } -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/diff-parser.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/diff-parser.js var __spreadArray = function(to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { @@ -25423,7 +34500,7 @@ function parse(diffInput, config) { var prevLine = diffLines2[lineIndex - 1]; var nxtLine = diffLines2[lineIndex + 1]; var afterNxtLine = diffLines2[lineIndex + 2]; - if (line.startsWith("diff")) { + if (line.startsWith("diff --git") || line.startsWith("diff --combined")) { startFile(); var gitDiffStart = /^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/; if (values = gitDiffStart.exec(line)) { @@ -25436,6 +34513,19 @@ function parse(diffInput, config) { currentFile.isGitDiff = true; return; } + if (line.startsWith("Binary files") && !(currentFile === null || currentFile === void 0 ? void 0 : currentFile.isGitDiff)) { + startFile(); + var unixDiffBinaryStart = /^Binary files "?([a-ciow]\/.+)"? and "?([a-ciow]\/.+)"? differ/; + if (values = unixDiffBinaryStart.exec(line)) { + possibleOldName = getFilename(values[1], void 0, config.dstPrefix); + possibleNewName = getFilename(values[2], void 0, config.srcPrefix); + } + if (currentFile === null) { + throw new Error("Where is my file !!!"); + } + currentFile.isBinary = true; + return; + } if (!currentFile || !currentFile.isGitDiff && currentFile && line.startsWith(oldFileNameHeader) && nxtLine.startsWith(newFileNameHeader) && afterNxtLine.startsWith(hunkHeaderPrefix)) { startFile(); } @@ -25541,13 +34631,13 @@ function parse(diffInput, config) { return files; } -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/file-list-renderer.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/file-list-renderer.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/render-utils.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/render-utils.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/rematch.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/rematch.js init_polyfill_buffer(); function levenshtein(a, b) { if (a.length === 0) { @@ -25587,7 +34677,7 @@ function newDistanceFn(str) { function newMatcherFn(distance2) { function findBestMatch(a, b, cache) { if (cache === void 0) { - cache = new Map(); + cache = /* @__PURE__ */ new Map(); } var bestMatchDist = Infinity; var bestMatch; @@ -25612,7 +34702,7 @@ function newMatcherFn(distance2) { level = 0; } if (cache === void 0) { - cache = new Map(); + cache = /* @__PURE__ */ new Map(); } var bm = findBestMatch(a, b, cache); if (!bm || a.length + b.length < 3) { @@ -25641,7 +34731,7 @@ function newMatcherFn(distance2) { return group; } -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/render-utils.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/render-utils.js var __assign = function() { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { @@ -25831,7 +34921,7 @@ function diffHighlight(diffLine1, diffLine2, isCombined, config) { }; } -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/file-list-renderer.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/file-list-renderer.js var baseTemplatesPath = "file-summary"; var iconsBaseTemplatesPath = "icon"; function render(diffFiles, hoganUtils) { @@ -25853,7 +34943,7 @@ function render(diffFiles, hoganUtils) { }); } -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/line-by-line-renderer.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/line-by-line-renderer.js init_polyfill_buffer(); var __assign2 = function() { __assign2 = Object.assign || function(t) { @@ -25935,14 +35025,14 @@ var LineByLineRenderer = function() { if (oldLines.length && newLines.length && !contextLines.length) { _this.applyRematchMatching(oldLines, newLines, matcher2).map(function(_a3) { var oldLines2 = _a3[0], newLines2 = _a3[1]; - var _b2 = _this.processChangedLines(file.isCombined, oldLines2, newLines2), left2 = _b2.left, right2 = _b2.right; + var _b2 = _this.processChangedLines(file, file.isCombined, oldLines2, newLines2), left2 = _b2.left, right2 = _b2.right; lines += left2; lines += right2; }); } else if (contextLines.length) { contextLines.forEach(function(line) { var _a3 = deconstructLine(line.content, file.isCombined), prefix = _a3.prefix, content = _a3.content; - lines += _this.generateSingleLineHtml({ + lines += _this.generateSingleLineHtml(file, { type: CSSLineClass.CONTEXT, prefix, content, @@ -25951,7 +35041,7 @@ var LineByLineRenderer = function() { }); }); } else if (oldLines.length || newLines.length) { - var _b = _this.processChangedLines(file.isCombined, oldLines, newLines), left = _b.left, right = _b.right; + var _b = _this.processChangedLines(file, file.isCombined, oldLines, newLines), left = _b.left, right = _b.right; lines += left; lines += right; } else { @@ -25997,7 +35087,7 @@ var LineByLineRenderer = function() { var doMatching = comparisons < this.config.matchingMaxComparisons && maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison && (this.config.matching === "lines" || this.config.matching === "words"); return doMatching ? matcher2(oldLines, newLines) : [[oldLines, newLines]]; }; - LineByLineRenderer2.prototype.processChangedLines = function(isCombined, oldLines, newLines) { + LineByLineRenderer2.prototype.processChangedLines = function(file, isCombined, oldLines, newLines) { var fileHtml = { right: "", left: "" @@ -26017,19 +35107,19 @@ var LineByLineRenderer = function() { content: diff2.newLine.content, type: CSSLineClass.INSERT_CHANGES } : __assign2(__assign2({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { oldNumber: newLine.oldNumber, newNumber: newLine.newNumber }) : void 0; - var _a2 = this.generateLineHtml(preparedOldLine, preparedNewLine), left = _a2.left, right = _a2.right; + var _a2 = this.generateLineHtml(file, preparedOldLine, preparedNewLine), left = _a2.left, right = _a2.right; fileHtml.left += left; fileHtml.right += right; } return fileHtml; }; - LineByLineRenderer2.prototype.generateLineHtml = function(oldLine, newLine) { + LineByLineRenderer2.prototype.generateLineHtml = function(file, oldLine, newLine) { return { - left: this.generateSingleLineHtml(oldLine), - right: this.generateSingleLineHtml(newLine) + left: this.generateSingleLineHtml(file, oldLine), + right: this.generateSingleLineHtml(file, newLine) }; }; - LineByLineRenderer2.prototype.generateSingleLineHtml = function(line) { + LineByLineRenderer2.prototype.generateSingleLineHtml = function(file, line) { if (line === void 0) return ""; var lineNumberHtml = this.hoganUtils.render(baseTemplatesPath2, "numbers", { @@ -26042,14 +35132,16 @@ var LineByLineRenderer = function() { contentClass: "d2h-code-line", prefix: line.prefix === " " ? " " : line.prefix, content: line.content, - lineNumber: lineNumberHtml + lineNumber: lineNumberHtml, + line, + file }); }; return LineByLineRenderer2; }(); var line_by_line_renderer_default = LineByLineRenderer; -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/side-by-side-renderer.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/side-by-side-renderer.js init_polyfill_buffer(); var __assign3 = function() { __assign3 = Object.assign || function(t) { @@ -26258,13 +35350,13 @@ var SideBySideRenderer = function() { }(); var side_by_side_renderer_default = SideBySideRenderer; -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/hoganjs-utils.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/hoganjs-utils.js init_polyfill_buffer(); -var Hogan3 = __toModule(require_hogan()); +var Hogan3 = __toESM(require_hogan()); -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/diff2html-templates.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/diff2html-templates.js init_polyfill_buffer(); -var Hogan2 = __toModule(require_hogan()); +var Hogan2 = __toESM(require_hogan()); var defaultTemplates = {}; defaultTemplates["file-summary-line"] = new Hogan2.Template({ code: function(c, p, i) { var t = this; @@ -26342,7 +35434,16 @@ defaultTemplates["generic-block-header"] = new Hogan2.Template({ code: function( t.b('
'); - t.b(t.t(t.f("blockHeader", c, p, 0))); + if (t.s(t.f("blockHeader", c, p, 1), c, p, 0, 156, 173, "{{ }}")) { + t.rs(c, p, function(c2, p2, t2) { + t2.b(t2.t(t2.f("blockHeader", c2, p2, 0))); + }); + c.pop(); + } + if (!t.s(t.f("blockHeader", c, p, 1), c, p, 1, 0, 0, "")) { + t.b(" "); + } + ; t.b("
"); t.b("\n" + i); t.b(" "); @@ -26658,7 +35759,7 @@ defaultTemplates["tag-file-renamed"] = new Hogan2.Template({ code: function(c, p return t.fl(); }, partials: {}, subs: {} }); -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/hoganjs-utils.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/hoganjs-utils.js var __assign4 = function() { __assign4 = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { @@ -26704,7 +35805,7 @@ var HoganJsUtils = function() { }(); var hoganjs_utils_default = HoganJsUtils; -// node_modules/.pnpm/diff2html@3.4.22/node_modules/diff2html/lib-esm/diff2html.js +// node_modules/.pnpm/diff2html@3.4.35/node_modules/diff2html/lib-esm/diff2html.js var __assign5 = function() { __assign5 = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { @@ -26731,15 +35832,18 @@ function html(diffInput, configuration) { } // src/ui/diff/diffView.ts -var import_obsidian13 = __toModule(require("obsidian")); -var DiffView = class extends import_obsidian13.ItemView { +var import_obsidian17 = require("obsidian"); +var DiffView = class extends import_obsidian17.ItemView { constructor(leaf, plugin) { super(leaf); this.plugin = plugin; this.gettingDiff = false; + this.gitRefreshBind = this.refresh.bind(this); + this.gitViewRefreshBind = this.refresh.bind(this); this.parser = new DOMParser(); this.navigation = true; - addEventListener("git-refresh", this.refresh.bind(this)); + addEventListener("git-refresh", this.gitRefreshBind); + addEventListener("git-view-refresh", this.gitViewRefreshBind); } getViewType() { return DIFF_VIEW_CONFIG.type; @@ -26766,7 +35870,8 @@ var DiffView = class extends import_obsidian13.ItemView { return this.state; } onClose() { - removeEventListener("git-refresh", this.refresh.bind(this)); + removeEventListener("git-refresh", this.gitRefreshBind); + removeEventListener("git-view-refresh", this.gitViewRefreshBind); return super.onClose(); } onOpen() { @@ -26777,100 +35882,52 @@ var DiffView = class extends import_obsidian13.ItemView { var _a2; if (((_a2 = this.state) == null ? void 0 : _a2.file) && !this.gettingDiff && this.plugin.gitManager) { this.gettingDiff = true; - let diff2 = await this.plugin.gitManager.getDiffString(this.state.file, this.state.staged); - this.contentEl.empty(); - if (!diff2) { - const content = await this.app.vault.adapter.read(this.plugin.gitManager.getVaultPath(this.state.file)); - const header = `--- /dev/null + try { + let diff2 = await this.plugin.gitManager.getDiffString( + this.state.file, + this.state.staged, + this.state.hash + ); + this.contentEl.empty(); + if (!diff2) { + if (this.plugin.gitManager instanceof SimpleGit && await this.plugin.gitManager.isTracked( + this.state.file + )) { + diff2 = [ + `--- ${this.state.file}`, + `+++ ${this.state.file}`, + "" + ].join("\n"); + } else { + const content = await this.app.vault.adapter.read( + this.plugin.gitManager.getVaultPath(this.state.file) + ); + const header = `--- /dev/null +++ ${this.state.file} @@ -0,0 +1,${content.split("\n").length} @@`; - diff2 = [...header.split("\n"), ...content.split("\n").map((line) => `+${line}`)].join("\n"); + diff2 = [ + ...header.split("\n"), + ...content.split("\n").map((line) => `+${line}`) + ].join("\n"); + } + } + const diffEl = this.parser.parseFromString(html(diff2), "text/html").querySelector(".d2h-file-diff"); + this.contentEl.append(diffEl); + } finally { + this.gettingDiff = false; } - const diffEl = this.parser.parseFromString(html(diff2), "text/html").querySelector(".d2h-file-diff"); - this.contentEl.append(diffEl); - this.gettingDiff = false; } } }; -// src/ui/modals/branchModal.ts +// src/ui/history/historyView.ts init_polyfill_buffer(); -var import_obsidian14 = __toModule(require("obsidian")); -var BranchModal = class extends import_obsidian14.FuzzySuggestModal { - constructor(branches) { - super(app); - this.branches = branches; - this.setPlaceholder("Select branch to checkout"); - } - getItems() { - return this.branches; - } - getItemText(item) { - return item; - } - onChooseItem(item, evt) { - this.resolve(item); - } - open() { - super.open(); - return new Promise((resolve) => { - this.resolve = resolve; - }); - } - async onClose() { - await new Promise((resolve) => setTimeout(resolve, 10)); - if (this.resolve) - this.resolve(void 0); - } -}; +var import_obsidian20 = require("obsidian"); -// src/ui/modals/ignoreModal.ts -init_polyfill_buffer(); -var import_obsidian15 = __toModule(require("obsidian")); -var IgnoreModal = class extends import_obsidian15.Modal { - constructor(app2, content) { - super(app2); - this.content = content; - this.resolve = null; - } - open() { - super.open(); - return new Promise((resolve) => { - this.resolve = resolve; - }); - } - onOpen() { - const { contentEl, titleEl } = this; - titleEl.setText("Edit .gitignore"); - const div = contentEl.createDiv(); - const text2 = div.createEl("textarea", { - text: this.content, - cls: ["obsidian-git-textarea"], - attr: { rows: 10, cols: 30, wrap: "off" } - }); - div.createEl("button", { - cls: ["mod-cta", "obsidian-git-center-button"], - text: "Save" - }).addEventListener("click", async () => { - this.resolve(text2.value); - this.close(); - }); - } - onClose() { - const { contentEl } = this; - this.resolve(void 0); - contentEl.empty(); - } -}; - -// src/ui/sidebar/sidebarView.ts -init_polyfill_buffer(); -var import_obsidian22 = __toModule(require("obsidian")); - -// src/ui/sidebar/gitView.svelte +// src/ui/history/historyView.svelte init_polyfill_buffer(); -// node_modules/.pnpm/svelte@3.55.0/node_modules/svelte/internal/index.mjs +// node_modules/.pnpm/svelte@3.59.0/node_modules/svelte/internal/index.mjs init_polyfill_buffer(); function noop() { } @@ -26879,7 +35936,7 @@ function run(fn) { return fn(); } function blank_object() { - return Object.create(null); + return /* @__PURE__ */ Object.create(null); } function run_all(fns) { fns.forEach(run); @@ -26896,7 +35953,7 @@ function is_empty(obj) { var is_client = typeof window !== "undefined"; var now = is_client ? () => window.performance.now() : () => Date.now(); var raf = is_client ? (cb) => requestAnimationFrame(cb) : noop; -var tasks = new Set(); +var tasks = /* @__PURE__ */ new Set(); function run_tasks(now2) { tasks.forEach((task) => { if (!task.c(now2)) { @@ -26920,6 +35977,32 @@ function loop(callback) { } }; } +var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : global; +var ResizeObserverSingleton = class { + constructor(options) { + this.options = options; + this._listeners = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; + } + observe(element2, listener) { + this._listeners.set(element2, listener); + this._getObserver().observe(element2, this.options); + return () => { + this._listeners.delete(element2); + this._observer.unobserve(element2); + }; + } + _getObserver() { + var _a2; + return (_a2 = this._observer) !== null && _a2 !== void 0 ? _a2 : this._observer = new ResizeObserver((entries) => { + var _a3; + for (const entry of entries) { + ResizeObserverSingleton.entries.set(entry.target, entry); + (_a3 = this._listeners.get(entry.target)) === null || _a3 === void 0 ? void 0 : _a3(entry); + } + }); + } +}; +ResizeObserverSingleton.entries = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; var is_hydrating = false; function start_hydrating() { is_hydrating = true; @@ -26942,9 +36025,9 @@ function append_styles(target, style_sheet_id, styles) { function get_root_for_style(node) { if (!node) return document; - const root = node.getRootNode ? node.getRootNode() : node.ownerDocument; - if (root && root.host) { - return root; + const root2 = node.getRootNode ? node.getRootNode() : node.ownerDocument; + if (root2 && root2.host) { + return root2; } return node.ownerDocument; } @@ -26987,10 +36070,10 @@ function listen(node, event, handler, options) { node.addEventListener(event, handler, options); return () => node.removeEventListener(event, handler, options); } -function self2(fn) { +function stop_propagation(fn) { return function(event) { - if (event.target === this) - fn.call(this, event); + event.stopPropagation(); + return fn.call(this, event); }; } function attr(node, attribute, value) { @@ -27004,14 +36087,15 @@ function children(element2) { } function set_data(text2, data) { data = "" + data; - if (text2.wholeText !== data) - text2.data = data; + if (text2.data === data) + return; + text2.data = data; } function set_input_value(input, value) { input.value = value == null ? "" : value; } function set_style(node, key2, value, important) { - if (value === null) { + if (value == null) { node.style.removeProperty(key2); } else { node.style.setProperty(key2, value, important ? "important" : ""); @@ -27025,7 +36109,7 @@ function custom_event(type, detail, { bubbles = false, cancelable = false } = {} e.initCustomEvent(type, bubbles, cancelable, detail); return e; } -var managed_styles = new Map(); +var managed_styles = /* @__PURE__ */ new Map(); var active = 0; function hash(str) { let hash2 = 5381; @@ -27063,7 +36147,10 @@ function create_rule(node, a, b, duration, delay2, ease, fn, uid = 0) { } function delete_rule(node, name) { const previous = (node.style.animation || "").split(", "); - const next = previous.filter(name ? (anim) => anim.indexOf(name) < 0 : (anim) => anim.indexOf("__svelte") === -1); + const next = previous.filter( + name ? (anim) => anim.indexOf(name) < 0 : (anim) => anim.indexOf("__svelte") === -1 + // remove all Svelte animations + ); const deleted = previous.length - next.length; if (deleted) { node.style.animation = next.join(", "); @@ -27106,7 +36193,7 @@ var dirty_components = []; var binding_callbacks = []; var render_callbacks = []; var flush_callbacks = []; -var resolved_promise = Promise.resolve(); +var resolved_promise = /* @__PURE__ */ Promise.resolve(); var update_scheduled = false; function schedule_update() { if (!update_scheduled) { @@ -27117,16 +36204,25 @@ function schedule_update() { function add_render_callback(fn) { render_callbacks.push(fn); } -var seen_callbacks = new Set(); +var seen_callbacks = /* @__PURE__ */ new Set(); var flushidx = 0; function flush() { + if (flushidx !== 0) { + return; + } const saved_component = current_component; do { - while (flushidx < dirty_components.length) { - const component = dirty_components[flushidx]; - flushidx++; - set_current_component(component); - update(component.$$); + try { + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); + } + } catch (e) { + dirty_components.length = 0; + flushidx = 0; + throw e; } set_current_component(null); dirty_components.length = 0; @@ -27159,6 +36255,13 @@ function update($$) { $$.after_update.forEach(add_render_callback); } } +function flush_render_callbacks(fns) { + const filtered = []; + const targets = []; + render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)); + targets.forEach((c) => c()); + render_callbacks = filtered; +} var promise; function wait() { if (!promise) { @@ -27172,13 +36275,14 @@ function wait() { function dispatch(node, direction, kind) { node.dispatchEvent(custom_event(`${direction ? "intro" : "outro"}${kind}`)); } -var outroing = new Set(); +var outroing = /* @__PURE__ */ new Set(); var outros; function group_outros() { outros = { r: 0, c: [], p: outros + // parent group }; } function check_outros() { @@ -27307,8 +36411,7 @@ function create_bidirectional_transition(node, fn, params, intro) { } }; } -var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : global; -var boolean_attributes = new Set([ +var _boolean_attributes = [ "allowfullscreen", "allowpaymentrequest", "async", @@ -27323,7 +36426,6 @@ var boolean_attributes = new Set([ "hidden", "inert", "ismap", - "itemscope", "loop", "multiple", "muted", @@ -27335,7 +36437,8 @@ var boolean_attributes = new Set([ "required", "reversed", "selected" -]); +]; +var boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]); function create_component(block) { block && block.c(); } @@ -27358,6 +36461,7 @@ function mount_component(component, target, anchor, customElement) { function destroy_component(component, detaching) { const $$ = component.$$; if ($$.fragment !== null) { + flush_render_callbacks($$.after_update); run_all($$.on_destroy); $$.fragment && $$.fragment.d(detaching); $$.on_destroy = $$.fragment = null; @@ -27372,22 +36476,25 @@ function make_dirty(component, i) { } component.$$.dirty[i / 31 | 0] |= 1 << i % 31; } -function init2(component, options, instance6, create_fragment6, not_equal, props, append_styles2, dirty = [-1]) { +function init2(component, options, instance10, create_fragment10, not_equal, props, append_styles2, dirty = [-1]) { const parent_component = current_component; set_current_component(component); const $$ = component.$$ = { fragment: null, ctx: [], + // state props, update: noop, not_equal, bound: blank_object(), + // lifecycle on_mount: [], on_destroy: [], on_disconnect: [], before_update: [], after_update: [], context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else callbacks: blank_object(), dirty, skip_bound: false, @@ -27395,7 +36502,7 @@ function init2(component, options, instance6, create_fragment6, not_equal, props }; append_styles2 && append_styles2($$.root); let ready = false; - $$.ctx = instance6 ? instance6(component, options.props || {}, (i, ret, ...rest) => { + $$.ctx = instance10 ? instance10(component, options.props || {}, (i, ret, ...rest) => { const value = rest.length ? rest[0] : ret; if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { if (!$$.skip_bound && $$.bound[i]) @@ -27408,7 +36515,7 @@ function init2(component, options, instance6, create_fragment6, not_equal, props $$.update(); ready = true; run_all($$.before_update); - $$.fragment = create_fragment6 ? create_fragment6($$.ctx) : false; + $$.fragment = create_fragment10 ? create_fragment10($$.ctx) : false; if (options.target) { if (options.hydrate) { start_hydrating(); @@ -27497,45 +36604,1875 @@ var SvelteComponent = class { } }; -// src/ui/sidebar/gitView.svelte -var import_obsidian21 = __toModule(require("obsidian")); +// node_modules/.pnpm/tslib@2.5.0/node_modules/tslib/tslib.es6.js +init_polyfill_buffer(); +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} -// node_modules/.pnpm/svelte@3.55.0/node_modules/svelte/index.mjs +// src/ui/history/historyView.svelte +var import_obsidian19 = require("obsidian"); + +// node_modules/.pnpm/svelte@3.59.0/node_modules/svelte/index.mjs init_polyfill_buffer(); -// node_modules/.pnpm/svelte@3.55.0/node_modules/svelte/transition/index.mjs +// src/ui/history/components/logComponent.svelte init_polyfill_buffer(); -// node_modules/.pnpm/svelte@3.55.0/node_modules/svelte/easing/index.mjs +// node_modules/.pnpm/svelte@3.59.0/node_modules/svelte/transition/index.mjs +init_polyfill_buffer(); + +// node_modules/.pnpm/svelte@3.59.0/node_modules/svelte/easing/index.mjs init_polyfill_buffer(); function cubicOut(t) { const f = t - 1; return f * f * f + 1; } -// node_modules/.pnpm/svelte@3.55.0/node_modules/svelte/transition/index.mjs -function slide(node, { delay: delay2 = 0, duration = 400, easing = cubicOut } = {}) { +// node_modules/.pnpm/svelte@3.59.0/node_modules/svelte/transition/index.mjs +function slide(node, { delay: delay2 = 0, duration = 400, easing = cubicOut, axis = "y" } = {}) { const style = getComputedStyle(node); const opacity = +style.opacity; - const height = parseFloat(style.height); - const padding_top = parseFloat(style.paddingTop); - const padding_bottom = parseFloat(style.paddingBottom); - const margin_top = parseFloat(style.marginTop); - const margin_bottom = parseFloat(style.marginBottom); - const border_top_width = parseFloat(style.borderTopWidth); - const border_bottom_width = parseFloat(style.borderBottomWidth); + const primary_property = axis === "y" ? "height" : "width"; + const primary_property_value = parseFloat(style[primary_property]); + const secondary_properties = axis === "y" ? ["top", "bottom"] : ["left", "right"]; + const capitalized_secondary_properties = secondary_properties.map((e) => `${e[0].toUpperCase()}${e.slice(1)}`); + const padding_start_value = parseFloat(style[`padding${capitalized_secondary_properties[0]}`]); + const padding_end_value = parseFloat(style[`padding${capitalized_secondary_properties[1]}`]); + const margin_start_value = parseFloat(style[`margin${capitalized_secondary_properties[0]}`]); + const margin_end_value = parseFloat(style[`margin${capitalized_secondary_properties[1]}`]); + const border_width_start_value = parseFloat(style[`border${capitalized_secondary_properties[0]}Width`]); + const border_width_end_value = parseFloat(style[`border${capitalized_secondary_properties[1]}Width`]); return { delay: delay2, duration, easing, - css: (t) => `overflow: hidden;opacity: ${Math.min(t * 20, 1) * opacity};height: ${t * height}px;padding-top: ${t * padding_top}px;padding-bottom: ${t * padding_bottom}px;margin-top: ${t * margin_top}px;margin-bottom: ${t * margin_bottom}px;border-top-width: ${t * border_top_width}px;border-bottom-width: ${t * border_bottom_width}px;` + css: (t) => `overflow: hidden;opacity: ${Math.min(t * 20, 1) * opacity};${primary_property}: ${t * primary_property_value}px;padding-${secondary_properties[0]}: ${t * padding_start_value}px;padding-${secondary_properties[1]}: ${t * padding_end_value}px;margin-${secondary_properties[0]}: ${t * margin_start_value}px;margin-${secondary_properties[1]}: ${t * margin_end_value}px;border-${secondary_properties[0]}-width: ${t * border_width_start_value}px;border-${secondary_properties[1]}-width: ${t * border_width_end_value}px;` }; } +// src/ui/history/components/logFileComponent.svelte +init_polyfill_buffer(); +var import_obsidian18 = require("obsidian"); +function add_css(target) { + append_styles(target, "svelte-pmbo0n", "main.svelte-pmbo0n .nav-file-title-content.svelte-pmbo0n{display:flex;align-items:center}"); +} +function create_if_block(ctx) { + let div; + let mounted; + let dispose; + return { + c() { + div = element("div"); + attr(div, "data-icon", "go-to-file"); + attr(div, "aria-label", "Open File"); + attr(div, "class", "clickable-icon"); + }, + m(target, anchor) { + insert(target, div, anchor); + ctx[7](div); + if (!mounted) { + dispose = [ + listen(div, "auxclick", stop_propagation( + /*open*/ + ctx[4] + )), + listen(div, "click", stop_propagation( + /*open*/ + ctx[4] + )) + ]; + mounted = true; + } + }, + p: noop, + d(detaching) { + if (detaching) + detach(div); + ctx[7](null); + mounted = false; + run_all(dispose); + } + }; +} +function create_fragment(ctx) { + let main; + let div3; + let div0; + let t0_value = getDisplayPath( + /*diff*/ + ctx[0].vault_path + ) + ""; + let t0; + let t1; + let div2; + let div1; + let show_if = ( + /*view*/ + ctx[1].app.vault.getAbstractFileByPath( + /*diff*/ + ctx[0].vault_path + ) + ); + let t2; + let span; + let t3_value = ( + /*diff*/ + ctx[0].status + "" + ); + let t3; + let span_data_type_value; + let div3_aria_label_value; + let mounted; + let dispose; + let if_block = show_if && create_if_block(ctx); + return { + c() { + main = element("main"); + div3 = element("div"); + div0 = element("div"); + t0 = text(t0_value); + t1 = space(); + div2 = element("div"); + div1 = element("div"); + if (if_block) + if_block.c(); + t2 = space(); + span = element("span"); + t3 = text(t3_value); + attr(div0, "class", "tree-item-inner nav-file-title-content svelte-pmbo0n"); + attr(div1, "class", "buttons"); + attr(span, "class", "type"); + attr(span, "data-type", span_data_type_value = /*diff*/ + ctx[0].status); + attr(div2, "class", "git-tools"); + attr(div3, "class", "tree-item-self is-clickable nav-file-title"); + attr( + div3, + "aria-label-position", + /*side*/ + ctx[3] + ); + attr(div3, "aria-label", div3_aria_label_value = /*diff*/ + ctx[0].vault_path); + attr(main, "class", "tree-item nav-file svelte-pmbo0n"); + }, + m(target, anchor) { + insert(target, main, anchor); + append2(main, div3); + append2(div3, div0); + append2(div0, t0); + append2(div3, t1); + append2(div3, div2); + append2(div2, div1); + if (if_block) + if_block.m(div1, null); + append2(div2, t2); + append2(div2, span); + append2(span, t3); + if (!mounted) { + dispose = [ + listen(main, "click", stop_propagation( + /*showDiff*/ + ctx[5] + )), + listen(main, "auxclick", stop_propagation( + /*showDiff*/ + ctx[5] + )), + listen( + main, + "focus", + /*focus_handler*/ + ctx[6] + ) + ]; + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (dirty & /*diff*/ + 1 && t0_value !== (t0_value = getDisplayPath( + /*diff*/ + ctx2[0].vault_path + ) + "")) + set_data(t0, t0_value); + if (dirty & /*view, diff*/ + 3) + show_if = /*view*/ + ctx2[1].app.vault.getAbstractFileByPath( + /*diff*/ + ctx2[0].vault_path + ); + if (show_if) { + if (if_block) { + if_block.p(ctx2, dirty); + } else { + if_block = create_if_block(ctx2); + if_block.c(); + if_block.m(div1, null); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + if (dirty & /*diff*/ + 1 && t3_value !== (t3_value = /*diff*/ + ctx2[0].status + "")) + set_data(t3, t3_value); + if (dirty & /*diff*/ + 1 && span_data_type_value !== (span_data_type_value = /*diff*/ + ctx2[0].status)) { + attr(span, "data-type", span_data_type_value); + } + if (dirty & /*side*/ + 8) { + attr( + div3, + "aria-label-position", + /*side*/ + ctx2[3] + ); + } + if (dirty & /*diff*/ + 1 && div3_aria_label_value !== (div3_aria_label_value = /*diff*/ + ctx2[0].vault_path)) { + attr(div3, "aria-label", div3_aria_label_value); + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) + detach(main); + if (if_block) + if_block.d(); + mounted = false; + run_all(dispose); + } + }; +} +function instance($$self, $$props, $$invalidate) { + let side; + let { diff: diff2 } = $$props; + let { view } = $$props; + let buttons = []; + window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian18.setIcon)(b, b.getAttr("data-icon"))), 0); + function open(event) { + var _a2; + const file = view.app.vault.getAbstractFileByPath(diff2.vault_path); + if (file instanceof import_obsidian18.TFile) { + (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); + } + } + function showDiff(event) { + var _a2; + (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.setViewState({ + type: DIFF_VIEW_CONFIG.type, + active: true, + state: { + file: diff2.path, + staged: false, + hash: diff2.hash + } + }); + } + function focus_handler(event) { + bubble.call(this, $$self, event); + } + function div_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + buttons[0] = $$value; + $$invalidate(2, buttons); + }); + } + $$self.$$set = ($$props2) => { + if ("diff" in $$props2) + $$invalidate(0, diff2 = $$props2.diff); + if ("view" in $$props2) + $$invalidate(1, view = $$props2.view); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*view*/ + 2) { + $: + $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + } + }; + return [diff2, view, buttons, side, open, showDiff, focus_handler, div_binding]; +} +var LogFileComponent = class extends SvelteComponent { + constructor(options) { + super(); + init2(this, options, instance, create_fragment, safe_not_equal, { diff: 0, view: 1 }, add_css); + } +}; +var logFileComponent_default = LogFileComponent; + +// src/ui/history/components/logTreeComponent.svelte +init_polyfill_buffer(); +function add_css2(target) { + append_styles(target, "svelte-1lnl15d", "main.svelte-1lnl15d .nav-folder-title-content.svelte-1lnl15d{display:flex;align-items:center}"); +} +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[8] = list[i]; + return child_ctx; +} +function create_else_block(ctx) { + let div4; + let div3; + let div0; + let t0; + let div1; + let t1; + let div2; + let t2_value = ( + /*entity*/ + ctx[8].title + "" + ); + let t2; + let div3_aria_label_value; + let t3; + let t4; + let current; + let mounted; + let dispose; + function click_handler() { + return ( + /*click_handler*/ + ctx[7]( + /*entity*/ + ctx[8] + ) + ); + } + let if_block = !/*closed*/ + ctx[4][ + /*entity*/ + ctx[8].title + ] && create_if_block_1(ctx); + return { + c() { + div4 = element("div"); + div3 = element("div"); + div0 = element("div"); + t0 = space(); + div1 = element("div"); + div1.innerHTML = ``; + t1 = space(); + div2 = element("div"); + t2 = text(t2_value); + t3 = space(); + if (if_block) + if_block.c(); + t4 = space(); + attr(div0, "data-icon", "folder"); + set_style(div0, "padding-right", "5px"); + set_style(div0, "display", "flex"); + attr(div1, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); + attr(div2, "class", "tree-item-inner nav-folder-title-content svelte-1lnl15d"); + attr(div3, "class", "tree-item-self is-clickable nav-folder-title"); + attr( + div3, + "aria-label-position", + /*side*/ + ctx[5] + ); + attr(div3, "aria-label", div3_aria_label_value = /*entity*/ + ctx[8].vaultPath); + attr(div4, "class", "tree-item nav-folder"); + toggle_class( + div4, + "is-collapsed", + /*closed*/ + ctx[4][ + /*entity*/ + ctx[8].title + ] + ); + }, + m(target, anchor) { + insert(target, div4, anchor); + append2(div4, div3); + append2(div3, div0); + append2(div3, t0); + append2(div3, div1); + append2(div3, t1); + append2(div3, div2); + append2(div2, t2); + append2(div4, t3); + if (if_block) + if_block.m(div4, null); + append2(div4, t4); + current = true; + if (!mounted) { + dispose = listen(div3, "click", click_handler); + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if ((!current || dirty & /*hierarchy*/ + 1) && t2_value !== (t2_value = /*entity*/ + ctx[8].title + "")) + set_data(t2, t2_value); + if (!current || dirty & /*side*/ + 32) { + attr( + div3, + "aria-label-position", + /*side*/ + ctx[5] + ); + } + if (!current || dirty & /*hierarchy*/ + 1 && div3_aria_label_value !== (div3_aria_label_value = /*entity*/ + ctx[8].vaultPath)) { + attr(div3, "aria-label", div3_aria_label_value); + } + if (!/*closed*/ + ctx[4][ + /*entity*/ + ctx[8].title + ]) { + if (if_block) { + if_block.p(ctx, dirty); + if (dirty & /*closed, hierarchy*/ + 17) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_1(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(div4, t4); + } + } else if (if_block) { + group_outros(); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + check_outros(); + } + if (!current || dirty & /*closed, hierarchy*/ + 17) { + toggle_class( + div4, + "is-collapsed", + /*closed*/ + ctx[4][ + /*entity*/ + ctx[8].title + ] + ); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) + detach(div4); + if (if_block) + if_block.d(); + mounted = false; + dispose(); + } + }; +} +function create_if_block2(ctx) { + let div; + let logfilecomponent; + let t; + let current; + logfilecomponent = new logFileComponent_default({ + props: { + diff: ( + /*entity*/ + ctx[8].data + ), + view: ( + /*view*/ + ctx[2] + ) + } + }); + return { + c() { + div = element("div"); + create_component(logfilecomponent.$$.fragment); + t = space(); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(logfilecomponent, div, null); + append2(div, t); + current = true; + }, + p(ctx2, dirty) { + const logfilecomponent_changes = {}; + if (dirty & /*hierarchy*/ + 1) + logfilecomponent_changes.diff = /*entity*/ + ctx2[8].data; + if (dirty & /*view*/ + 4) + logfilecomponent_changes.view = /*view*/ + ctx2[2]; + logfilecomponent.$set(logfilecomponent_changes); + }, + i(local) { + if (current) + return; + transition_in(logfilecomponent.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(logfilecomponent.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) + detach(div); + destroy_component(logfilecomponent); + } + }; +} +function create_if_block_1(ctx) { + let div; + let logtreecomponent; + let div_transition; + let current; + logtreecomponent = new LogTreeComponent({ + props: { + hierarchy: ( + /*entity*/ + ctx[8] + ), + plugin: ( + /*plugin*/ + ctx[1] + ), + view: ( + /*view*/ + ctx[2] + ) + } + }); + return { + c() { + div = element("div"); + create_component(logtreecomponent.$$.fragment); + attr(div, "class", "tree-item-children nav-folder-children"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(logtreecomponent, div, null); + current = true; + }, + p(ctx2, dirty) { + const logtreecomponent_changes = {}; + if (dirty & /*hierarchy*/ + 1) + logtreecomponent_changes.hierarchy = /*entity*/ + ctx2[8]; + if (dirty & /*plugin*/ + 2) + logtreecomponent_changes.plugin = /*plugin*/ + ctx2[1]; + if (dirty & /*view*/ + 4) + logtreecomponent_changes.view = /*view*/ + ctx2[2]; + logtreecomponent.$set(logtreecomponent_changes); + }, + i(local) { + if (current) + return; + transition_in(logtreecomponent.$$.fragment, local); + if (local) { + add_render_callback(() => { + if (!current) + return; + if (!div_transition) + div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); + div_transition.run(1); + }); + } + current = true; + }, + o(local) { + transition_out(logtreecomponent.$$.fragment, local); + if (local) { + if (!div_transition) + div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); + div_transition.run(0); + } + current = false; + }, + d(detaching) { + if (detaching) + detach(div); + destroy_component(logtreecomponent); + if (detaching && div_transition) + div_transition.end(); + } + }; +} +function create_each_block(ctx) { + let current_block_type_index; + let if_block; + let if_block_anchor; + let current; + const if_block_creators = [create_if_block2, create_else_block]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*entity*/ + ctx2[8].data + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if_blocks[current_block_type_index].m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + if_block.p(ctx2, dirty); + } + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if_blocks[current_block_type_index].d(detaching); + if (detaching) + detach(if_block_anchor); + } + }; +} +function create_fragment2(ctx) { + let main; + let current; + let each_value = ( + /*hierarchy*/ + ctx[0].children + ); + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + const out = (i) => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + return { + c() { + main = element("main"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(main, "class", "svelte-1lnl15d"); + toggle_class( + main, + "topLevel", + /*topLevel*/ + ctx[3] + ); + }, + m(target, anchor) { + insert(target, main, anchor); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(main, null); + } + } + current = true; + }, + p(ctx2, [dirty]) { + if (dirty & /*hierarchy, view, closed, plugin, side, fold*/ + 119) { + each_value = /*hierarchy*/ + ctx2[0].children; + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(main, null); + } + } + group_outros(); + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + check_outros(); + } + if (!current || dirty & /*topLevel*/ + 8) { + toggle_class( + main, + "topLevel", + /*topLevel*/ + ctx2[3] + ); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) + detach(main); + destroy_each(each_blocks, detaching); + } + }; +} +function instance2($$self, $$props, $$invalidate) { + let side; + let { hierarchy } = $$props; + let { plugin } = $$props; + let { view } = $$props; + let { topLevel = false } = $$props; + const closed = {}; + function fold(item) { + $$invalidate(4, closed[item.title] = !closed[item.title], closed); + } + const click_handler = (entity) => fold(entity); + $$self.$$set = ($$props2) => { + if ("hierarchy" in $$props2) + $$invalidate(0, hierarchy = $$props2.hierarchy); + if ("plugin" in $$props2) + $$invalidate(1, plugin = $$props2.plugin); + if ("view" in $$props2) + $$invalidate(2, view = $$props2.view); + if ("topLevel" in $$props2) + $$invalidate(3, topLevel = $$props2.topLevel); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*view*/ + 4) { + $: + $$invalidate(5, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + } + }; + return [hierarchy, plugin, view, topLevel, closed, side, fold, click_handler]; +} +var LogTreeComponent = class extends SvelteComponent { + constructor(options) { + super(); + init2( + this, + options, + instance2, + create_fragment2, + safe_not_equal, + { + hierarchy: 0, + plugin: 1, + view: 2, + topLevel: 3 + }, + add_css2 + ); + } +}; +var logTreeComponent_default = LogTreeComponent; + +// src/ui/history/components/logComponent.svelte +function add_css3(target) { + append_styles(target, "svelte-1t6egnt", ".git-ref.svelte-1t6egnt{color:var(--text-accent)}"); +} +function get_each_context2(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[8] = list[i]; + return child_ctx; +} +function create_if_block_2(ctx) { + let div; + let t_value = ( + /*log*/ + ctx[0].refs.join(", ") + "" + ); + let t; + return { + c() { + div = element("div"); + t = text(t_value); + attr(div, "class", "git-ref svelte-1t6egnt"); + }, + m(target, anchor) { + insert(target, div, anchor); + append2(div, t); + }, + p(ctx2, dirty) { + if (dirty & /*log*/ + 1 && t_value !== (t_value = /*log*/ + ctx2[0].refs.join(", ") + "")) + set_data(t, t_value); + }, + d(detaching) { + if (detaching) + detach(div); + } + }; +} +function create_if_block3(ctx) { + let div; + let current_block_type_index; + let if_block; + let div_transition; + let current; + const if_block_creators = [create_if_block_12, create_else_block2]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*showTree*/ + ctx2[2] + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + div = element("div"); + if_block.c(); + attr(div, "class", "tree-item-children nav-folder-children"); + }, + m(target, anchor) { + insert(target, div, anchor); + if_blocks[current_block_type_index].m(div, null); + current = true; + }, + p(ctx2, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + if_block.p(ctx2, dirty); + } + transition_in(if_block, 1); + if_block.m(div, null); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + if (local) { + add_render_callback(() => { + if (!current) + return; + if (!div_transition) + div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); + div_transition.run(1); + }); + } + current = true; + }, + o(local) { + transition_out(if_block); + if (local) { + if (!div_transition) + div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); + div_transition.run(0); + } + current = false; + }, + d(detaching) { + if (detaching) + detach(div); + if_blocks[current_block_type_index].d(); + if (detaching && div_transition) + div_transition.end(); + } + }; +} +function create_else_block2(ctx) { + let each_1_anchor; + let current; + let each_value = ( + /*log*/ + ctx[0].diff.files + ); + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i)); + } + const out = (i) => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + return { + c() { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + each_1_anchor = empty(); + }, + m(target, anchor) { + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(target, anchor); + } + } + insert(target, each_1_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + if (dirty & /*view, log*/ + 3) { + each_value = /*log*/ + ctx2[0].diff.files; + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context2(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block2(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } + group_outros(); + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + check_outros(); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + destroy_each(each_blocks, detaching); + if (detaching) + detach(each_1_anchor); + } + }; +} +function create_if_block_12(ctx) { + let logtreecomponent; + let current; + logtreecomponent = new logTreeComponent_default({ + props: { + hierarchy: ( + /*logsHierarchy*/ + ctx[6] + ), + plugin: ( + /*plugin*/ + ctx[3] + ), + view: ( + /*view*/ + ctx[1] + ), + topLevel: true + } + }); + return { + c() { + create_component(logtreecomponent.$$.fragment); + }, + m(target, anchor) { + mount_component(logtreecomponent, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const logtreecomponent_changes = {}; + if (dirty & /*logsHierarchy*/ + 64) + logtreecomponent_changes.hierarchy = /*logsHierarchy*/ + ctx2[6]; + if (dirty & /*plugin*/ + 8) + logtreecomponent_changes.plugin = /*plugin*/ + ctx2[3]; + if (dirty & /*view*/ + 2) + logtreecomponent_changes.view = /*view*/ + ctx2[1]; + logtreecomponent.$set(logtreecomponent_changes); + }, + i(local) { + if (current) + return; + transition_in(logtreecomponent.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(logtreecomponent.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(logtreecomponent, detaching); + } + }; +} +function create_each_block2(ctx) { + let logfilecomponent; + let current; + logfilecomponent = new logFileComponent_default({ + props: { + view: ( + /*view*/ + ctx[1] + ), + diff: ( + /*file*/ + ctx[8] + ) + } + }); + return { + c() { + create_component(logfilecomponent.$$.fragment); + }, + m(target, anchor) { + mount_component(logfilecomponent, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const logfilecomponent_changes = {}; + if (dirty & /*view*/ + 2) + logfilecomponent_changes.view = /*view*/ + ctx2[1]; + if (dirty & /*log*/ + 1) + logfilecomponent_changes.diff = /*file*/ + ctx2[8]; + logfilecomponent.$set(logfilecomponent_changes); + }, + i(local) { + if (current) + return; + transition_in(logfilecomponent.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(logfilecomponent.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(logfilecomponent, detaching); + } + }; +} +function create_fragment3(ctx) { + let main; + let div4; + let div3; + let div0; + let t0; + let div2; + let t1; + let div1; + let t2_value = ( + /*log*/ + ctx[0].message + "" + ); + let t2; + let div1_aria_label_value; + let t3; + let current; + let mounted; + let dispose; + let if_block0 = ( + /*log*/ + ctx[0].refs.length > 0 && create_if_block_2(ctx) + ); + let if_block1 = !/*isCollapsed*/ + ctx[4] && create_if_block3(ctx); + return { + c() { + main = element("main"); + div4 = element("div"); + div3 = element("div"); + div0 = element("div"); + div0.innerHTML = ``; + t0 = space(); + div2 = element("div"); + if (if_block0) + if_block0.c(); + t1 = space(); + div1 = element("div"); + t2 = text(t2_value); + t3 = space(); + if (if_block1) + if_block1.c(); + attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); + attr(div1, "class", "tree-item-inner nav-folder-title-content"); + attr(div1, "aria-label", div1_aria_label_value = /*log*/ + ctx[0].message); + attr( + div1, + "aria-label-position", + /*side*/ + ctx[5] + ); + attr(div3, "class", "tree-item-self is-clickable nav-folder-title"); + attr(div4, "class", "tree-item nav-folder"); + toggle_class( + div4, + "is-collapsed", + /*isCollapsed*/ + ctx[4] + ); + }, + m(target, anchor) { + insert(target, main, anchor); + append2(main, div4); + append2(div4, div3); + append2(div3, div0); + append2(div3, t0); + append2(div3, div2); + if (if_block0) + if_block0.m(div2, null); + append2(div2, t1); + append2(div2, div1); + append2(div1, t2); + append2(div4, t3); + if (if_block1) + if_block1.m(div4, null); + current = true; + if (!mounted) { + dispose = listen( + div3, + "click", + /*click_handler*/ + ctx[7] + ); + mounted = true; + } + }, + p(ctx2, [dirty]) { + if ( + /*log*/ + ctx2[0].refs.length > 0 + ) { + if (if_block0) { + if_block0.p(ctx2, dirty); + } else { + if_block0 = create_if_block_2(ctx2); + if_block0.c(); + if_block0.m(div2, t1); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + if ((!current || dirty & /*log*/ + 1) && t2_value !== (t2_value = /*log*/ + ctx2[0].message + "")) + set_data(t2, t2_value); + if (!current || dirty & /*log*/ + 1 && div1_aria_label_value !== (div1_aria_label_value = /*log*/ + ctx2[0].message)) { + attr(div1, "aria-label", div1_aria_label_value); + } + if (!current || dirty & /*side*/ + 32) { + attr( + div1, + "aria-label-position", + /*side*/ + ctx2[5] + ); + } + if (!/*isCollapsed*/ + ctx2[4]) { + if (if_block1) { + if_block1.p(ctx2, dirty); + if (dirty & /*isCollapsed*/ + 16) { + transition_in(if_block1, 1); + } + } else { + if_block1 = create_if_block3(ctx2); + if_block1.c(); + transition_in(if_block1, 1); + if_block1.m(div4, null); + } + } else if (if_block1) { + group_outros(); + transition_out(if_block1, 1, 1, () => { + if_block1 = null; + }); + check_outros(); + } + if (!current || dirty & /*isCollapsed*/ + 16) { + toggle_class( + div4, + "is-collapsed", + /*isCollapsed*/ + ctx2[4] + ); + } + }, + i(local) { + if (current) + return; + transition_in(if_block1); + current = true; + }, + o(local) { + transition_out(if_block1); + current = false; + }, + d(detaching) { + if (detaching) + detach(main); + if (if_block0) + if_block0.d(); + if (if_block1) + if_block1.d(); + mounted = false; + dispose(); + } + }; +} +function instance3($$self, $$props, $$invalidate) { + let logsHierarchy; + let side; + let { log: log2 } = $$props; + let { view } = $$props; + let { showTree } = $$props; + let { plugin } = $$props; + let isCollapsed = true; + const click_handler = () => $$invalidate(4, isCollapsed = !isCollapsed); + $$self.$$set = ($$props2) => { + if ("log" in $$props2) + $$invalidate(0, log2 = $$props2.log); + if ("view" in $$props2) + $$invalidate(1, view = $$props2.view); + if ("showTree" in $$props2) + $$invalidate(2, showTree = $$props2.showTree); + if ("plugin" in $$props2) + $$invalidate(3, plugin = $$props2.plugin); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*plugin, log*/ + 9) { + $: + $$invalidate(6, logsHierarchy = { + title: "", + path: "", + vaultPath: "", + children: plugin.gitManager.getTreeStructure(log2.diff.files) + }); + } + if ($$self.$$.dirty & /*view*/ + 2) { + $: + $$invalidate(5, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + } + }; + return [log2, view, showTree, plugin, isCollapsed, side, logsHierarchy, click_handler]; +} +var LogComponent = class extends SvelteComponent { + constructor(options) { + super(); + init2(this, options, instance3, create_fragment3, safe_not_equal, { log: 0, view: 1, showTree: 2, plugin: 3 }, add_css3); + } +}; +var logComponent_default = LogComponent; + +// src/ui/history/historyView.svelte +function get_each_context3(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[11] = list[i]; + return child_ctx; +} +function create_if_block4(ctx) { + let div1; + let div0; + let current; + let each_value = ( + /*logs*/ + ctx[6] + ); + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block3(get_each_context3(ctx, each_value, i)); + } + const out = (i) => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + return { + c() { + div1 = element("div"); + div0 = element("div"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(div0, "class", "tree-item-children nav-folder-children"); + attr(div1, "class", "tree-item nav-folder mod-root"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append2(div1, div0); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div0, null); + } + } + current = true; + }, + p(ctx2, dirty) { + if (dirty & /*view, showTree, logs, plugin*/ + 71) { + each_value = /*logs*/ + ctx2[6]; + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context3(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block3(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(div0, null); + } + } + group_outros(); + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + check_outros(); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) + detach(div1); + destroy_each(each_blocks, detaching); + } + }; +} +function create_each_block3(ctx) { + let logcomponent; + let current; + logcomponent = new logComponent_default({ + props: { + view: ( + /*view*/ + ctx[1] + ), + showTree: ( + /*showTree*/ + ctx[2] + ), + log: ( + /*log*/ + ctx[11] + ), + plugin: ( + /*plugin*/ + ctx[0] + ) + } + }); + return { + c() { + create_component(logcomponent.$$.fragment); + }, + m(target, anchor) { + mount_component(logcomponent, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const logcomponent_changes = {}; + if (dirty & /*view*/ + 2) + logcomponent_changes.view = /*view*/ + ctx2[1]; + if (dirty & /*showTree*/ + 4) + logcomponent_changes.showTree = /*showTree*/ + ctx2[2]; + if (dirty & /*logs*/ + 64) + logcomponent_changes.log = /*log*/ + ctx2[11]; + if (dirty & /*plugin*/ + 1) + logcomponent_changes.plugin = /*plugin*/ + ctx2[0]; + logcomponent.$set(logcomponent_changes); + }, + i(local) { + if (current) + return; + transition_in(logcomponent.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(logcomponent.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(logcomponent, detaching); + } + }; +} +function create_fragment4(ctx) { + let main; + let div3; + let div2; + let div0; + let t0; + let div1; + let t1; + let div4; + let current; + let mounted; + let dispose; + let if_block = ( + /*logs*/ + ctx[6] && create_if_block4(ctx) + ); + return { + c() { + main = element("main"); + div3 = element("div"); + div2 = element("div"); + div0 = element("div"); + t0 = space(); + div1 = element("div"); + t1 = space(); + div4 = element("div"); + if (if_block) + if_block.c(); + attr(div0, "id", "layoutChange"); + attr(div0, "class", "clickable-icon nav-action-button"); + attr(div0, "aria-label", "Change Layout"); + attr(div1, "id", "refresh"); + attr(div1, "class", "clickable-icon nav-action-button"); + attr(div1, "data-icon", "refresh-cw"); + attr(div1, "aria-label", "Refresh"); + set_style(div1, "margin", "1px"); + toggle_class( + div1, + "loading", + /*loading*/ + ctx[4] + ); + attr(div2, "class", "nav-buttons-container"); + attr(div3, "class", "nav-header"); + attr(div4, "class", "nav-files-container"); + set_style(div4, "position", "relative"); + }, + m(target, anchor) { + insert(target, main, anchor); + append2(main, div3); + append2(div3, div2); + append2(div2, div0); + ctx[7](div0); + append2(div2, t0); + append2(div2, div1); + ctx[9](div1); + append2(main, t1); + append2(main, div4); + if (if_block) + if_block.m(div4, null); + current = true; + if (!mounted) { + dispose = [ + listen( + div0, + "click", + /*click_handler*/ + ctx[8] + ), + listen(div1, "click", triggerRefresh) + ]; + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (!current || dirty & /*loading*/ + 16) { + toggle_class( + div1, + "loading", + /*loading*/ + ctx2[4] + ); + } + if ( + /*logs*/ + ctx2[6] + ) { + if (if_block) { + if_block.p(ctx2, dirty); + if (dirty & /*logs*/ + 64) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block4(ctx2); + if_block.c(); + transition_in(if_block, 1); + if_block.m(div4, null); + } + } else if (if_block) { + group_outros(); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + check_outros(); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) + detach(main); + ctx[7](null); + ctx[9](null); + if (if_block) + if_block.d(); + mounted = false; + run_all(dispose); + } + }; +} +function triggerRefresh() { + dispatchEvent(new CustomEvent("git-refresh")); +} +function instance4($$self, $$props, $$invalidate) { + let { plugin } = $$props; + let { view } = $$props; + let loading; + let buttons = []; + let logs; + let showTree = plugin.settings.treeStructure; + let layoutBtn; + addEventListener("git-view-refresh", refresh); + plugin.app.workspace.onLayoutReady(() => { + window.setTimeout( + () => { + buttons.forEach((btn) => (0, import_obsidian19.setIcon)(btn, btn.getAttr("data-icon"), 16)); + (0, import_obsidian19.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + }, + 0 + ); + }); + onDestroy(() => { + removeEventListener("git-view-refresh", refresh); + }); + function refresh() { + return __awaiter(this, void 0, void 0, function* () { + $$invalidate(4, loading = true); + const isSimpleGit = plugin.gitManager instanceof SimpleGit; + $$invalidate(6, logs = yield plugin.gitManager.log(void 0, false, isSimpleGit ? 50 : 10)); + $$invalidate(4, loading = false); + }); + } + function div0_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + layoutBtn = $$value; + $$invalidate(3, layoutBtn); + }); + } + const click_handler = () => { + $$invalidate(2, showTree = !showTree); + $$invalidate(0, plugin.settings.treeStructure = showTree, plugin); + plugin.saveSettings(); + }; + function div1_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + buttons[6] = $$value; + $$invalidate(5, buttons); + }); + } + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + if ("view" in $$props2) + $$invalidate(1, view = $$props2.view); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*layoutBtn, showTree*/ + 12) { + $: { + if (layoutBtn) { + layoutBtn.empty(); + (0, import_obsidian19.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + } + } + } + }; + return [ + plugin, + view, + showTree, + layoutBtn, + loading, + buttons, + logs, + div0_binding, + click_handler, + div1_binding + ]; +} +var HistoryView = class extends SvelteComponent { + constructor(options) { + super(); + init2(this, options, instance4, create_fragment4, safe_not_equal, { plugin: 0, view: 1 }); + } +}; +var historyView_default = HistoryView; + +// src/ui/history/historyView.ts +var HistoryView2 = class extends import_obsidian20.ItemView { + constructor(leaf, plugin) { + super(leaf); + this.plugin = plugin; + this.hoverPopover = null; + } + getViewType() { + return HISTORY_VIEW_CONFIG.type; + } + getDisplayText() { + return HISTORY_VIEW_CONFIG.name; + } + getIcon() { + return HISTORY_VIEW_CONFIG.icon; + } + onClose() { + return super.onClose(); + } + onOpen() { + this._view = new historyView_default({ + target: this.contentEl, + props: { + plugin: this.plugin, + view: this + } + }); + return super.onOpen(); + } +}; + +// src/ui/modals/branchModal.ts +init_polyfill_buffer(); +var import_obsidian21 = require("obsidian"); +var BranchModal = class extends import_obsidian21.FuzzySuggestModal { + constructor(branches) { + super(app); + this.branches = branches; + this.setPlaceholder("Select branch to checkout"); + } + getItems() { + return this.branches; + } + getItemText(item) { + return item; + } + onChooseItem(item, evt) { + this.resolve(item); + } + open() { + super.open(); + return new Promise((resolve) => { + this.resolve = resolve; + }); + } + async onClose() { + await new Promise((resolve) => setTimeout(resolve, 10)); + if (this.resolve) + this.resolve(void 0); + } +}; + +// src/ui/modals/ignoreModal.ts +init_polyfill_buffer(); +var import_obsidian22 = require("obsidian"); +var IgnoreModal = class extends import_obsidian22.Modal { + constructor(app2, content) { + super(app2); + this.content = content; + this.resolve = null; + } + open() { + super.open(); + return new Promise((resolve) => { + this.resolve = resolve; + }); + } + onOpen() { + const { contentEl, titleEl } = this; + titleEl.setText("Edit .gitignore"); + const div = contentEl.createDiv(); + const text2 = div.createEl("textarea", { + text: this.content, + cls: ["obsidian-git-textarea"], + attr: { rows: 10, cols: 30, wrap: "off" } + }); + div.createEl("button", { + cls: ["mod-cta", "obsidian-git-center-button"], + text: "Save" + }).addEventListener("click", async () => { + this.resolve(text2.value); + this.close(); + }); + } + onClose() { + const { contentEl } = this; + this.resolve(void 0); + contentEl.empty(); + } +}; + +// src/ui/sourceControl/sourceControl.ts +init_polyfill_buffer(); +var import_obsidian29 = require("obsidian"); + +// src/ui/sourceControl/sourceControl.svelte +init_polyfill_buffer(); +var import_obsidian28 = require("obsidian"); + // src/ui/modals/discardModal.ts init_polyfill_buffer(); -var import_obsidian16 = __toModule(require("obsidian")); -var DiscardModal = class extends import_obsidian16.Modal { +var import_obsidian23 = require("obsidian"); +var DiscardModal = class extends import_obsidian23.Modal { constructor(app2, deletion, filename) { super(app2); this.deletion = deletion; @@ -27551,7 +38488,9 @@ var DiscardModal = class extends import_obsidian16.Modal { onOpen() { const { contentEl, titleEl } = this; titleEl.setText(`${this.deletion ? "Delete" : "Discard"} this file?`); - contentEl.createEl("p").setText(`Do you really want to ${this.deletion ? "delete" : "discard the changes of"} "${this.filename}"`); + contentEl.createEl("p").setText( + `Do you really want to ${this.deletion ? "delete" : "discard the changes of"} "${this.filename}"` + ); const div = contentEl.createDiv({ cls: "modal-button-container" }); const discard = div.createEl("button", { cls: "mod-warning", @@ -27587,17 +38526,17 @@ var DiscardModal = class extends import_obsidian16.Modal { } }; -// src/ui/sidebar/components/fileComponent.svelte +// src/ui/sourceControl/components/fileComponent.svelte init_polyfill_buffer(); -var import_obsidian18 = __toModule(require("obsidian")); +var import_obsidian25 = require("obsidian"); -// node_modules/.pnpm/obsidian-community-lib@2.0.2/node_modules/obsidian-community-lib/dist/index.js +// node_modules/.pnpm/obsidian-community-lib@2.0.2_fbkkrmn4giwwsr5htt45gr2jni/node_modules/obsidian-community-lib/dist/index.js init_polyfill_buffer(); -// node_modules/.pnpm/obsidian-community-lib@2.0.2/node_modules/obsidian-community-lib/dist/utils.js +// node_modules/.pnpm/obsidian-community-lib@2.0.2_fbkkrmn4giwwsr5htt45gr2jni/node_modules/obsidian-community-lib/dist/utils.js init_polyfill_buffer(); -var feather = __toModule(require_feather()); -var import_obsidian17 = __toModule(require("obsidian")); +var feather = __toESM(require_feather()); +var import_obsidian24 = require("obsidian"); function hoverPreview(event, view, to) { const targetEl = event.target; app.workspace.trigger("hover-link", { @@ -27609,11 +38548,11 @@ function hoverPreview(event, view, to) { }); } -// src/ui/sidebar/components/fileComponent.svelte -function add_css(target) { - append_styles(target, "svelte-wn85nz", "main.svelte-wn85nz .nav-file-title-content.svelte-wn85nz.svelte-wn85nz{display:flex;align-items:center}main.svelte-wn85nz .tools.svelte-wn85nz.svelte-wn85nz{display:flex;margin-left:auto}main.svelte-wn85nz .tools .type.svelte-wn85nz.svelte-wn85nz{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}main.svelte-wn85nz .tools .type[data-type=M].svelte-wn85nz.svelte-wn85nz{color:orange}main.svelte-wn85nz .tools .type[data-type=D].svelte-wn85nz.svelte-wn85nz{color:red}main.svelte-wn85nz .tools .buttons.svelte-wn85nz.svelte-wn85nz{display:flex}main.svelte-wn85nz .tools .buttons.svelte-wn85nz>.svelte-wn85nz{padding:0 0;height:auto}"); +// src/ui/sourceControl/components/fileComponent.svelte +function add_css4(target) { + append_styles(target, "svelte-pmbo0n", "main.svelte-pmbo0n .nav-file-title-content.svelte-pmbo0n{display:flex;align-items:center}"); } -function create_if_block(ctx) { +function create_if_block5(ctx) { let div; let mounted; let dispose; @@ -27622,15 +38561,21 @@ function create_if_block(ctx) { div = element("div"); attr(div, "data-icon", "go-to-file"); attr(div, "aria-label", "Open File"); - attr(div, "class", "clickable-icon svelte-wn85nz"); + attr(div, "class", "clickable-icon"); }, m(target, anchor) { insert(target, div, anchor); ctx[11](div); if (!mounted) { dispose = [ - listen(div, "auxclick", ctx[5]), - listen(div, "click", ctx[5]) + listen(div, "auxclick", stop_propagation( + /*open*/ + ctx[5] + )), + listen(div, "click", stop_propagation( + /*open*/ + ctx[5] + )) ]; mounted = true; } @@ -27645,30 +38590,41 @@ function create_if_block(ctx) { } }; } -function create_fragment(ctx) { - var _a2; +function create_fragment5(ctx) { let main; let div6; let div0; - let t0_value = ((_a2 = ctx[0].vault_path.split("/").last()) == null ? void 0 : _a2.replace(".md", "")) + ""; + let t0_value = getDisplayPath( + /*change*/ + ctx[0].vault_path + ) + ""; let t0; let t1; let div5; let div3; - let show_if = ctx[1].app.vault.getAbstractFileByPath(ctx[0].vault_path); + let show_if = ( + /*view*/ + ctx[1].app.vault.getAbstractFileByPath( + /*change*/ + ctx[0].vault_path + ) + ); let t2; let div1; let t3; let div2; let t4; let div4; - let t5_value = ctx[0].working_dir + ""; + let t5_value = ( + /*change*/ + ctx[0].working_dir + "" + ); let t5; let div4_data_type_value; let div6_aria_label_value; let mounted; let dispose; - let if_block = show_if && create_if_block(ctx); + let if_block = show_if && create_if_block5(ctx); return { c() { main = element("main"); @@ -27687,21 +38643,28 @@ function create_fragment(ctx) { t4 = space(); div4 = element("div"); t5 = text(t5_value); - attr(div0, "class", "nav-file-title-content svelte-wn85nz"); + attr(div0, "class", "tree-item-inner nav-file-title-content svelte-pmbo0n"); attr(div1, "data-icon", "undo"); attr(div1, "aria-label", "Discard"); - attr(div1, "class", "clickable-icon svelte-wn85nz"); + attr(div1, "class", "clickable-icon"); attr(div2, "data-icon", "plus"); attr(div2, "aria-label", "Stage"); - attr(div2, "class", "clickable-icon svelte-wn85nz"); - attr(div3, "class", "buttons svelte-wn85nz"); - attr(div4, "class", "type svelte-wn85nz"); - attr(div4, "data-type", div4_data_type_value = ctx[0].working_dir); - attr(div5, "class", "tools svelte-wn85nz"); - attr(div6, "class", "nav-file-title"); - attr(div6, "aria-label-position", ctx[3]); - attr(div6, "aria-label", div6_aria_label_value = ctx[0].vault_path.split("/").last() != ctx[0].vault_path ? ctx[0].vault_path : ""); - attr(main, "class", "nav-file svelte-wn85nz"); + attr(div2, "class", "clickable-icon"); + attr(div3, "class", "buttons"); + attr(div4, "class", "type"); + attr(div4, "data-type", div4_data_type_value = /*change*/ + ctx[0].working_dir); + attr(div5, "class", "git-tools"); + attr(div6, "class", "tree-item-self is-clickable nav-file-title"); + attr( + div6, + "aria-label-position", + /*side*/ + ctx[3] + ); + attr(div6, "aria-label", div6_aria_label_value = /*change*/ + ctx[0].vault_path); + attr(main, "class", "tree-item nav-file svelte-pmbo0n"); }, m(target, anchor) { insert(target, main, anchor); @@ -27724,30 +38687,57 @@ function create_fragment(ctx) { append2(div4, t5); if (!mounted) { dispose = [ - listen(div0, "click", ctx[7]), - listen(div0, "auxclick", ctx[7]), - listen(div1, "click", ctx[8]), - listen(div2, "click", ctx[6]), - listen(div6, "click", self2(ctx[7])), - listen(div6, "auxclick", self2(ctx[7])), - listen(main, "mouseover", ctx[4]), - listen(main, "click", self2(ctx[7])), - listen(main, "focus", ctx[10]) + listen(div1, "click", stop_propagation( + /*discard*/ + ctx[8] + )), + listen(div2, "click", stop_propagation( + /*stage*/ + ctx[6] + )), + listen( + main, + "mouseover", + /*hover*/ + ctx[4] + ), + listen(main, "click", stop_propagation( + /*showDiff*/ + ctx[7] + )), + listen(main, "auxclick", stop_propagation( + /*showDiff*/ + ctx[7] + )), + listen( + main, + "focus", + /*focus_handler*/ + ctx[10] + ) ]; mounted = true; } }, p(ctx2, [dirty]) { - var _a3; - if (dirty & 1 && t0_value !== (t0_value = ((_a3 = ctx2[0].vault_path.split("/").last()) == null ? void 0 : _a3.replace(".md", "")) + "")) + if (dirty & /*change*/ + 1 && t0_value !== (t0_value = getDisplayPath( + /*change*/ + ctx2[0].vault_path + ) + "")) set_data(t0, t0_value); - if (dirty & 3) - show_if = ctx2[1].app.vault.getAbstractFileByPath(ctx2[0].vault_path); + if (dirty & /*view, change*/ + 3) + show_if = /*view*/ + ctx2[1].app.vault.getAbstractFileByPath( + /*change*/ + ctx2[0].vault_path + ); if (show_if) { if (if_block) { if_block.p(ctx2, dirty); } else { - if_block = create_if_block(ctx2); + if_block = create_if_block5(ctx2); if_block.c(); if_block.m(div3, t2); } @@ -27755,15 +38745,27 @@ function create_fragment(ctx) { if_block.d(1); if_block = null; } - if (dirty & 1 && t5_value !== (t5_value = ctx2[0].working_dir + "")) + if (dirty & /*change*/ + 1 && t5_value !== (t5_value = /*change*/ + ctx2[0].working_dir + "")) set_data(t5, t5_value); - if (dirty & 1 && div4_data_type_value !== (div4_data_type_value = ctx2[0].working_dir)) { + if (dirty & /*change*/ + 1 && div4_data_type_value !== (div4_data_type_value = /*change*/ + ctx2[0].working_dir)) { attr(div4, "data-type", div4_data_type_value); } - if (dirty & 8) { - attr(div6, "aria-label-position", ctx2[3]); + if (dirty & /*side*/ + 8) { + attr( + div6, + "aria-label-position", + /*side*/ + ctx2[3] + ); } - if (dirty & 1 && div6_aria_label_value !== (div6_aria_label_value = ctx2[0].vault_path.split("/").last() != ctx2[0].vault_path ? ctx2[0].vault_path : "")) { + if (dirty & /*change*/ + 1 && div6_aria_label_value !== (div6_aria_label_value = /*change*/ + ctx2[0].vault_path)) { attr(div6, "aria-label", div6_aria_label_value); } }, @@ -27781,23 +38783,23 @@ function create_fragment(ctx) { } }; } -function instance($$self, $$props, $$invalidate) { +function instance5($$self, $$props, $$invalidate) { let side; let { change } = $$props; let { view } = $$props; let { manager } = $$props; let buttons = []; - window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian18.setIcon)(b, b.getAttr("data-icon"))), 0); + window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian25.setIcon)(b, b.getAttr("data-icon"))), 0); function hover(event) { - if (!change.path.startsWith(view.app.vault.configDir) || !change.path.startsWith(".")) { - hoverPreview(event, view, change.vault_path.split("/").last().replace(".md", "")); + if (app.vault.getAbstractFileByPath(change.vault_path)) { + hoverPreview(event, view, change.vault_path); } } function open(event) { var _a2; const file = view.app.vault.getAbstractFileByPath(change.vault_path); console.log(event); - if (file instanceof import_obsidian18.TFile) { + if (file instanceof import_obsidian25.TFile) { (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } @@ -27860,7 +38862,8 @@ function instance($$self, $$props, $$invalidate) { $$invalidate(9, manager = $$props2.manager); }; $$self.$$.update = () => { - if ($$self.$$.dirty & 2) { + if ($$self.$$.dirty & /*view*/ + 2) { $: $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } @@ -27885,28 +38888,33 @@ function instance($$self, $$props, $$invalidate) { var FileComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance, create_fragment, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css); + init2(this, options, instance5, create_fragment5, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css4); } }; var fileComponent_default = FileComponent; -// src/ui/sidebar/components/pulledFileComponent.svelte +// src/ui/sourceControl/components/pulledFileComponent.svelte init_polyfill_buffer(); -var import_obsidian19 = __toModule(require("obsidian")); -function add_css2(target) { - append_styles(target, "svelte-sajhpp", "main.svelte-sajhpp .nav-file-title-content.svelte-sajhpp{display:flex;align-items:center}main.svelte-sajhpp .tools.svelte-sajhpp{display:flex;margin-left:auto}main.svelte-sajhpp .tools .type.svelte-sajhpp{padding-left:var(--size-2-1);display:flex;align-items:center;justify-content:center}main.svelte-sajhpp .tools .type[data-type=M].svelte-sajhpp{color:orange}main.svelte-sajhpp .tools .type[data-type=D].svelte-sajhpp{color:red}"); +var import_obsidian26 = require("obsidian"); +function add_css5(target) { + append_styles(target, "svelte-pmbo0n", "main.svelte-pmbo0n .nav-file-title-content.svelte-pmbo0n{display:flex;align-items:center}"); } -function create_fragment2(ctx) { - var _a2; +function create_fragment6(ctx) { let main; let div2; let div0; - let t0_value = ((_a2 = ctx[0].vault_path.split("/").last()) == null ? void 0 : _a2.replace(".md", "")) + ""; + let t0_value = getDisplayPath( + /*change*/ + ctx[0].vault_path + ) + ""; let t0; let t1; let div1; let span; - let t2_value = ctx[0].working_dir + ""; + let t2_value = ( + /*change*/ + ctx[0].working_dir + "" + ); let t2; let span_data_type_value; let div2_aria_label_value; @@ -27922,14 +38930,21 @@ function create_fragment2(ctx) { div1 = element("div"); span = element("span"); t2 = text(t2_value); - attr(div0, "class", "nav-file-title-content svelte-sajhpp"); - attr(span, "class", "type svelte-sajhpp"); - attr(span, "data-type", span_data_type_value = ctx[0].working_dir); - attr(div1, "class", "tools svelte-sajhpp"); - attr(div2, "class", "nav-file-title"); - attr(div2, "aria-label-position", ctx[1]); - attr(div2, "aria-label", div2_aria_label_value = ctx[0].vault_path.split("/").last() != ctx[0].vault_path ? ctx[0].vault_path : ""); - attr(main, "class", "nav-file svelte-sajhpp"); + attr(div0, "class", "tree-item-inner nav-file-title-content svelte-pmbo0n"); + attr(span, "class", "type"); + attr(span, "data-type", span_data_type_value = /*change*/ + ctx[0].working_dir); + attr(div1, "class", "git-tools"); + attr(div2, "class", "tree-item-self is-clickable nav-file-title"); + attr( + div2, + "aria-label-position", + /*side*/ + ctx[1] + ); + attr(div2, "aria-label", div2_aria_label_value = /*change*/ + ctx[0].vault_path); + attr(main, "class", "tree-item nav-file svelte-pmbo0n"); }, m(target, anchor) { insert(target, main, anchor); @@ -27942,26 +38957,58 @@ function create_fragment2(ctx) { append2(span, t2); if (!mounted) { dispose = [ - listen(main, "mouseover", ctx[2]), - listen(main, "click", ctx[3]), - listen(main, "focus", ctx[5]) + listen( + main, + "mouseover", + /*hover*/ + ctx[2] + ), + listen(main, "click", stop_propagation( + /*open*/ + ctx[3] + )), + listen(main, "auxclick", stop_propagation( + /*open*/ + ctx[3] + )), + listen( + main, + "focus", + /*focus_handler*/ + ctx[5] + ) ]; mounted = true; } }, p(ctx2, [dirty]) { - var _a3; - if (dirty & 1 && t0_value !== (t0_value = ((_a3 = ctx2[0].vault_path.split("/").last()) == null ? void 0 : _a3.replace(".md", "")) + "")) + if (dirty & /*change*/ + 1 && t0_value !== (t0_value = getDisplayPath( + /*change*/ + ctx2[0].vault_path + ) + "")) set_data(t0, t0_value); - if (dirty & 1 && t2_value !== (t2_value = ctx2[0].working_dir + "")) + if (dirty & /*change*/ + 1 && t2_value !== (t2_value = /*change*/ + ctx2[0].working_dir + "")) set_data(t2, t2_value); - if (dirty & 1 && span_data_type_value !== (span_data_type_value = ctx2[0].working_dir)) { + if (dirty & /*change*/ + 1 && span_data_type_value !== (span_data_type_value = /*change*/ + ctx2[0].working_dir)) { attr(span, "data-type", span_data_type_value); } - if (dirty & 2) { - attr(div2, "aria-label-position", ctx2[1]); + if (dirty & /*side*/ + 2) { + attr( + div2, + "aria-label-position", + /*side*/ + ctx2[1] + ); } - if (dirty & 1 && div2_aria_label_value !== (div2_aria_label_value = ctx2[0].vault_path.split("/").last() != ctx2[0].vault_path ? ctx2[0].vault_path : "")) { + if (dirty & /*change*/ + 1 && div2_aria_label_value !== (div2_aria_label_value = /*change*/ + ctx2[0].vault_path)) { attr(div2, "aria-label", div2_aria_label_value); } }, @@ -27975,19 +39022,19 @@ function create_fragment2(ctx) { } }; } -function instance2($$self, $$props, $$invalidate) { +function instance6($$self, $$props, $$invalidate) { let side; let { change } = $$props; let { view } = $$props; function hover(event) { - if (!change.path.startsWith(view.app.vault.configDir) || !change.path.startsWith(".")) { - hoverPreview(event, view, change.vault_path.split("/").last().replace(".md", "")); + if (app.vault.getAbstractFileByPath(change.vault_path)) { + hoverPreview(event, view, change.vault_path); } } function open(event) { var _a2; const file = view.app.vault.getAbstractFileByPath(change.vault_path); - if (file instanceof import_obsidian19.TFile) { + if (file instanceof import_obsidian26.TFile) { (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } @@ -28001,7 +39048,8 @@ function instance2($$self, $$props, $$invalidate) { $$invalidate(4, view = $$props2.view); }; $$self.$$.update = () => { - if ($$self.$$.dirty & 16) { + if ($$self.$$.dirty & /*view*/ + 16) { $: $$invalidate(1, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } @@ -28011,18 +39059,18 @@ function instance2($$self, $$props, $$invalidate) { var PulledFileComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance2, create_fragment2, safe_not_equal, { change: 0, view: 4 }, add_css2); + init2(this, options, instance6, create_fragment6, safe_not_equal, { change: 0, view: 4 }, add_css5); } }; var pulledFileComponent_default = PulledFileComponent; -// src/ui/sidebar/components/stagedFileComponent.svelte +// src/ui/sourceControl/components/stagedFileComponent.svelte init_polyfill_buffer(); -var import_obsidian20 = __toModule(require("obsidian")); -function add_css3(target) { - append_styles(target, "svelte-wn85nz", "main.svelte-wn85nz .nav-file-title-content.svelte-wn85nz.svelte-wn85nz{display:flex;align-items:center}main.svelte-wn85nz .tools.svelte-wn85nz.svelte-wn85nz{display:flex;margin-left:auto}main.svelte-wn85nz .tools .type.svelte-wn85nz.svelte-wn85nz{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}main.svelte-wn85nz .tools .type[data-type=M].svelte-wn85nz.svelte-wn85nz{color:orange}main.svelte-wn85nz .tools .type[data-type=D].svelte-wn85nz.svelte-wn85nz{color:red}main.svelte-wn85nz .tools .buttons.svelte-wn85nz.svelte-wn85nz{display:flex}main.svelte-wn85nz .tools .buttons.svelte-wn85nz>.svelte-wn85nz{padding:0 0;height:auto}"); +var import_obsidian27 = require("obsidian"); +function add_css6(target) { + append_styles(target, "svelte-pmbo0n", "main.svelte-pmbo0n .nav-file-title-content.svelte-pmbo0n{display:flex;align-items:center}"); } -function create_if_block2(ctx) { +function create_if_block6(ctx) { let div; let mounted; let dispose; @@ -28031,13 +39079,16 @@ function create_if_block2(ctx) { div = element("div"); attr(div, "data-icon", "go-to-file"); attr(div, "aria-label", "Open File"); - attr(div, "class", "clickable-icon svelte-wn85nz"); + attr(div, "class", "clickable-icon"); }, m(target, anchor) { insert(target, div, anchor); - ctx[11](div); + ctx[10](div); if (!mounted) { - dispose = listen(div, "click", ctx[6]); + dispose = listen(div, "click", stop_propagation( + /*open*/ + ctx[5] + )); mounted = true; } }, @@ -28045,34 +39096,45 @@ function create_if_block2(ctx) { d(detaching) { if (detaching) detach(div); - ctx[11](null); + ctx[10](null); mounted = false; dispose(); } }; } -function create_fragment3(ctx) { - var _a2; +function create_fragment7(ctx) { let main; let div5; let div0; - let t0_value = ((_a2 = ctx[3].split("/").last()) == null ? void 0 : _a2.replace(".md", "")) + ""; + let t0_value = getDisplayPath( + /*change*/ + ctx[0].vault_path + ) + ""; let t0; let t1; let div4; let div2; - let show_if = ctx[1].app.vault.getAbstractFileByPath(ctx[3]); + let show_if = ( + /*view*/ + ctx[1].app.vault.getAbstractFileByPath( + /*change*/ + ctx[0].vault_path + ) + ); let t2; let div1; let t3; let div3; - let t4_value = ctx[0].index + ""; + let t4_value = ( + /*change*/ + ctx[0].index + "" + ); let t4; let div3_data_type_value; let div5_aria_label_value; let mounted; let dispose; - let if_block = show_if && create_if_block2(ctx); + let if_block = show_if && create_if_block6(ctx); return { c() { main = element("main"); @@ -28089,18 +39151,25 @@ function create_fragment3(ctx) { t3 = space(); div3 = element("div"); t4 = text(t4_value); - attr(div0, "class", "nav-file-title-content svelte-wn85nz"); + attr(div0, "class", "tree-item-inner nav-file-title-content svelte-pmbo0n"); attr(div1, "data-icon", "minus"); attr(div1, "aria-label", "Unstage"); - attr(div1, "class", "clickable-icon svelte-wn85nz"); - attr(div2, "class", "buttons svelte-wn85nz"); - attr(div3, "class", "type svelte-wn85nz"); - attr(div3, "data-type", div3_data_type_value = ctx[0].index); - attr(div4, "class", "tools svelte-wn85nz"); - attr(div5, "class", "nav-file-title"); - attr(div5, "aria-label-position", ctx[4]); - attr(div5, "aria-label", div5_aria_label_value = ctx[3].split("/").last() != ctx[3] ? ctx[3] : ""); - attr(main, "class", "nav-file svelte-wn85nz"); + attr(div1, "class", "clickable-icon"); + attr(div2, "class", "buttons"); + attr(div3, "class", "type"); + attr(div3, "data-type", div3_data_type_value = /*change*/ + ctx[0].index); + attr(div4, "class", "git-tools"); + attr(div5, "class", "tree-item-self is-clickable nav-file-title"); + attr( + div5, + "aria-label-position", + /*side*/ + ctx[3] + ); + attr(div5, "aria-label", div5_aria_label_value = /*change*/ + ctx[0].vault_path); + attr(main, "class", "tree-item nav-file svelte-pmbo0n"); }, m(target, anchor) { insert(target, main, anchor); @@ -28114,34 +39183,59 @@ function create_fragment3(ctx) { if_block.m(div2, null); append2(div2, t2); append2(div2, div1); - ctx[12](div1); + ctx[11](div1); append2(div4, t3); append2(div4, div3); append2(div3, t4); if (!mounted) { dispose = [ - listen(div0, "click", ctx[7]), - listen(div0, "auxclick", ctx[7]), - listen(div1, "click", ctx[8]), - listen(div5, "click", self2(ctx[7])), - listen(main, "mouseover", ctx[5]), - listen(main, "focus", ctx[10]), - listen(main, "click", self2(ctx[7])) + listen(div1, "click", stop_propagation( + /*unstage*/ + ctx[7] + )), + listen( + main, + "mouseover", + /*hover*/ + ctx[4] + ), + listen( + main, + "focus", + /*focus_handler*/ + ctx[9] + ), + listen(main, "click", stop_propagation( + /*showDiff*/ + ctx[6] + )), + listen(main, "auxclick", stop_propagation( + /*showDiff*/ + ctx[6] + )) ]; mounted = true; } }, p(ctx2, [dirty]) { - var _a3; - if (dirty & 8 && t0_value !== (t0_value = ((_a3 = ctx2[3].split("/").last()) == null ? void 0 : _a3.replace(".md", "")) + "")) + if (dirty & /*change*/ + 1 && t0_value !== (t0_value = getDisplayPath( + /*change*/ + ctx2[0].vault_path + ) + "")) set_data(t0, t0_value); - if (dirty & 10) - show_if = ctx2[1].app.vault.getAbstractFileByPath(ctx2[3]); + if (dirty & /*view, change*/ + 3) + show_if = /*view*/ + ctx2[1].app.vault.getAbstractFileByPath( + /*change*/ + ctx2[0].vault_path + ); if (show_if) { if (if_block) { if_block.p(ctx2, dirty); } else { - if_block = create_if_block2(ctx2); + if_block = create_if_block6(ctx2); if_block.c(); if_block.m(div2, t2); } @@ -28149,15 +39243,27 @@ function create_fragment3(ctx) { if_block.d(1); if_block = null; } - if (dirty & 1 && t4_value !== (t4_value = ctx2[0].index + "")) + if (dirty & /*change*/ + 1 && t4_value !== (t4_value = /*change*/ + ctx2[0].index + "")) set_data(t4, t4_value); - if (dirty & 1 && div3_data_type_value !== (div3_data_type_value = ctx2[0].index)) { + if (dirty & /*change*/ + 1 && div3_data_type_value !== (div3_data_type_value = /*change*/ + ctx2[0].index)) { attr(div3, "data-type", div3_data_type_value); } - if (dirty & 16) { - attr(div5, "aria-label-position", ctx2[4]); + if (dirty & /*side*/ + 8) { + attr( + div5, + "aria-label-position", + /*side*/ + ctx2[3] + ); } - if (dirty & 8 && div5_aria_label_value !== (div5_aria_label_value = ctx2[3].split("/").last() != ctx2[3] ? ctx2[3] : "")) { + if (dirty & /*change*/ + 1 && div5_aria_label_value !== (div5_aria_label_value = /*change*/ + ctx2[0].vault_path)) { attr(div5, "aria-label", div5_aria_label_value); } }, @@ -28168,29 +39274,29 @@ function create_fragment3(ctx) { detach(main); if (if_block) if_block.d(); - ctx[12](null); + ctx[11](null); mounted = false; run_all(dispose); } }; } -function instance3($$self, $$props, $$invalidate) { +function instance7($$self, $$props, $$invalidate) { let formattedPath; let side; let { change } = $$props; let { view } = $$props; let { manager } = $$props; let buttons = []; - window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian20.setIcon)(b, b.getAttr("data-icon"), 16)), 0); + window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian27.setIcon)(b, b.getAttr("data-icon"), 16)), 0); function hover(event) { - if (!change.path.startsWith(view.app.vault.configDir) || !change.path.startsWith(".")) { - hoverPreview(event, view, formattedPath.split("/").last().replace(".md", "")); + if (app.vault.getAbstractFileByPath(change.vault_path)) { + hoverPreview(event, view, change.vault_path); } } function open(event) { var _a2; const file = view.app.vault.getAbstractFileByPath(change.vault_path); - if (file instanceof import_obsidian20.TFile) { + if (file instanceof import_obsidian27.TFile) { (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } @@ -28228,23 +39334,24 @@ function instance3($$self, $$props, $$invalidate) { if ("view" in $$props2) $$invalidate(1, view = $$props2.view); if ("manager" in $$props2) - $$invalidate(9, manager = $$props2.manager); + $$invalidate(8, manager = $$props2.manager); }; $$self.$$.update = () => { - if ($$self.$$.dirty & 1) { + if ($$self.$$.dirty & /*change*/ + 1) { $: - $$invalidate(3, formattedPath = change.vault_path); + formattedPath = change.vault_path; } - if ($$self.$$.dirty & 2) { + if ($$self.$$.dirty & /*view*/ + 2) { $: - $$invalidate(4, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } }; return [ change, view, buttons, - formattedPath, side, hover, open, @@ -28259,22 +39366,22 @@ function instance3($$self, $$props, $$invalidate) { var StagedFileComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance3, create_fragment3, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css3); + init2(this, options, instance7, create_fragment7, safe_not_equal, { change: 0, view: 1, manager: 8 }, add_css6); } }; var stagedFileComponent_default = StagedFileComponent; -// src/ui/sidebar/components/treeComponent.svelte +// src/ui/sourceControl/components/treeComponent.svelte init_polyfill_buffer(); -function add_css4(target) { - append_styles(target, "svelte-148wteu", "main.svelte-148wteu .nav-folder-title-content.svelte-148wteu.svelte-148wteu{display:flex;align-items:center}main.svelte-148wteu .tools.svelte-148wteu.svelte-148wteu{display:flex;margin-left:auto}main.svelte-148wteu .tools .buttons.svelte-148wteu.svelte-148wteu{display:flex}main.svelte-148wteu .tools .buttons.svelte-148wteu>.svelte-148wteu{padding:0 0;height:auto}"); +function add_css7(target) { + append_styles(target, "svelte-1lnl15d", "main.svelte-1lnl15d .nav-folder-title-content.svelte-1lnl15d{display:flex;align-items:center}"); } -function get_each_context(ctx, list, i) { +function get_each_context4(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[17] = list[i]; + child_ctx[15] = list[i]; return child_ctx; } -function create_else_block(ctx) { +function create_else_block3(ctx) { let div7; let div6; let div0; @@ -28282,7 +39389,10 @@ function create_else_block(ctx) { let div1; let t1; let div2; - let t2_value = ctx[17].title + ""; + let t2_value = ( + /*entity*/ + ctx[15].title + "" + ); let t2; let t3; let div5; @@ -28295,23 +39405,30 @@ function create_else_block(ctx) { let current; let mounted; let dispose; - function click_handler() { - return ctx[11](ctx[17]); - } - function click_handler_1() { - return ctx[12](ctx[17]); - } function select_block_type_2(ctx2, dirty) { - if (ctx2[3] == FileType.staged) + if ( + /*fileType*/ + ctx2[3] == 0 /* staged */ + ) return create_if_block_5; return create_else_block_1; } let current_block_type = select_block_type_2(ctx, -1); let if_block0 = current_block_type(ctx); - function click_handler_5() { - return ctx[16](ctx[17]); + let if_block1 = !/*closed*/ + ctx[5][ + /*entity*/ + ctx[15].title + ] && create_if_block_4(ctx); + function click_handler_3() { + return ( + /*click_handler_3*/ + ctx[14]( + /*entity*/ + ctx[15] + ) + ); } - let if_block1 = !ctx[5][ctx[17].title] && create_if_block_4(ctx); return { c() { div7 = element("div"); @@ -28336,17 +39453,30 @@ function create_else_block(ctx) { attr(div0, "data-icon", "folder"); set_style(div0, "padding-right", "5px"); set_style(div0, "display", "flex"); - attr(div1, "class", "nav-folder-collapse-indicator collapse-icon"); - attr(div2, "class", "nav-folder-title-content svelte-148wteu"); + attr(div1, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); + attr(div2, "class", "tree-item-inner nav-folder-title-content svelte-1lnl15d"); set_style(div3, "width", "11px"); - attr(div3, "class", "svelte-148wteu"); - attr(div4, "class", "buttons svelte-148wteu"); - attr(div5, "class", "tools svelte-148wteu"); - attr(div6, "class", "nav-folder-title"); - attr(div6, "aria-label-position", ctx[6]); - attr(div6, "aria-label", div6_aria_label_value = ctx[17].vaultPath.split("/").last() != ctx[17].vaultPath ? ctx[17].vaultPath : ""); - attr(div7, "class", "nav-folder"); - toggle_class(div7, "is-collapsed", ctx[5][ctx[17].title]); + attr(div4, "class", "buttons"); + attr(div5, "class", "git-tools"); + attr(div6, "class", "tree-item-self is-clickable nav-folder-title"); + attr( + div6, + "aria-label-position", + /*side*/ + ctx[6] + ); + attr(div6, "aria-label", div6_aria_label_value = /*entity*/ + ctx[15].vaultPath); + attr(div7, "class", "tree-item nav-folder"); + toggle_class( + div7, + "is-collapsed", + /*closed*/ + ctx[5][ + /*entity*/ + ctx[15].title + ] + ); }, m(target, anchor) { insert(target, div7, anchor); @@ -28369,17 +39499,15 @@ function create_else_block(ctx) { append2(div7, t6); current = true; if (!mounted) { - dispose = [ - listen(div1, "click", click_handler), - listen(div2, "click", click_handler_1), - listen(div6, "click", self2(click_handler_5)) - ]; + dispose = listen(div7, "click", click_handler_3); mounted = true; } }, p(new_ctx, dirty) { ctx = new_ctx; - if ((!current || dirty & 1) && t2_value !== (t2_value = ctx[17].title + "")) + if ((!current || dirty & /*hierarchy*/ + 1) && t2_value !== (t2_value = /*entity*/ + ctx[15].title + "")) set_data(t2, t2_value); if (current_block_type === (current_block_type = select_block_type_2(ctx, dirty)) && if_block0) { if_block0.p(ctx, dirty); @@ -28391,16 +39519,29 @@ function create_else_block(ctx) { if_block0.m(div4, t4); } } - if (!current || dirty & 64) { - attr(div6, "aria-label-position", ctx[6]); + if (!current || dirty & /*side*/ + 64) { + attr( + div6, + "aria-label-position", + /*side*/ + ctx[6] + ); } - if (!current || dirty & 1 && div6_aria_label_value !== (div6_aria_label_value = ctx[17].vaultPath.split("/").last() != ctx[17].vaultPath ? ctx[17].vaultPath : "")) { + if (!current || dirty & /*hierarchy*/ + 1 && div6_aria_label_value !== (div6_aria_label_value = /*entity*/ + ctx[15].vaultPath)) { attr(div6, "aria-label", div6_aria_label_value); } - if (!ctx[5][ctx[17].title]) { + if (!/*closed*/ + ctx[5][ + /*entity*/ + ctx[15].title + ]) { if (if_block1) { if_block1.p(ctx, dirty); - if (dirty & 33) { + if (dirty & /*closed, hierarchy*/ + 33) { transition_in(if_block1, 1); } } else { @@ -28416,8 +39557,17 @@ function create_else_block(ctx) { }); check_outros(); } - if (!current || dirty & 33) { - toggle_class(div7, "is-collapsed", ctx[5][ctx[17].title]); + if (!current || dirty & /*closed, hierarchy*/ + 33) { + toggle_class( + div7, + "is-collapsed", + /*closed*/ + ctx[5][ + /*entity*/ + ctx[15].title + ] + ); } }, i(local) { @@ -28437,24 +39587,33 @@ function create_else_block(ctx) { if (if_block1) if_block1.d(); mounted = false; - run_all(dispose); + dispose(); } }; } -function create_if_block3(ctx) { +function create_if_block7(ctx) { let div; let current_block_type_index; let if_block; let t; let current; - const if_block_creators = [create_if_block_1, create_if_block_2, create_if_block_3]; + const if_block_creators = [create_if_block_13, create_if_block_22, create_if_block_3]; const if_blocks = []; function select_block_type_1(ctx2, dirty) { - if (ctx2[3] == FileType.staged) + if ( + /*fileType*/ + ctx2[3] == 0 /* staged */ + ) return 0; - if (ctx2[3] == FileType.changed) + if ( + /*fileType*/ + ctx2[3] == 1 /* changed */ + ) return 1; - if (ctx2[3] == FileType.pulled) + if ( + /*fileType*/ + ctx2[3] == 2 /* pulled */ + ) return 2; return -1; } @@ -28531,11 +39690,23 @@ function create_else_block_1(ctx) { let div1; let mounted; let dispose; - function click_handler_3() { - return ctx[14](ctx[17]); + function click_handler_1() { + return ( + /*click_handler_1*/ + ctx[12]( + /*entity*/ + ctx[15] + ) + ); } - function click_handler_4() { - return ctx[15](ctx[17]); + function click_handler_2() { + return ( + /*click_handler_2*/ + ctx[13]( + /*entity*/ + ctx[15] + ) + ); } return { c() { @@ -28546,10 +39717,10 @@ function create_else_block_1(ctx) { div1.innerHTML = ``; attr(div0, "data-icon", "undo"); attr(div0, "aria-label", "Discard"); - attr(div0, "class", "clickable-icon svelte-148wteu"); + attr(div0, "class", "clickable-icon"); attr(div1, "data-icon", "plus"); attr(div1, "aria-label", "Stage"); - attr(div1, "class", "clickable-icon svelte-148wteu"); + attr(div1, "class", "clickable-icon"); }, m(target, anchor) { insert(target, div0, anchor); @@ -28557,8 +39728,8 @@ function create_else_block_1(ctx) { insert(target, div1, anchor); if (!mounted) { dispose = [ - listen(div0, "click", click_handler_3), - listen(div1, "click", click_handler_4) + listen(div0, "click", stop_propagation(click_handler_1)), + listen(div1, "click", stop_propagation(click_handler_2)) ]; mounted = true; } @@ -28582,8 +39753,14 @@ function create_if_block_5(ctx) { let div; let mounted; let dispose; - function click_handler_2() { - return ctx[13](ctx[17]); + function click_handler() { + return ( + /*click_handler*/ + ctx[11]( + /*entity*/ + ctx[15] + ) + ); } return { c() { @@ -28591,12 +39768,12 @@ function create_if_block_5(ctx) { div.innerHTML = ``; attr(div, "data-icon", "minus"); attr(div, "aria-label", "Unstage"); - attr(div, "class", "clickable-icon svelte-148wteu"); + attr(div, "class", "clickable-icon"); }, m(target, anchor) { insert(target, div, anchor); if (!mounted) { - dispose = listen(div, "click", click_handler_2); + dispose = listen(div, "click", stop_propagation(click_handler)); mounted = true; } }, @@ -28618,17 +39795,29 @@ function create_if_block_4(ctx) { let current; treecomponent = new TreeComponent({ props: { - hierarchy: ctx[17], - plugin: ctx[1], - view: ctx[2], - fileType: ctx[3] + hierarchy: ( + /*entity*/ + ctx[15] + ), + plugin: ( + /*plugin*/ + ctx[1] + ), + view: ( + /*view*/ + ctx[2] + ), + fileType: ( + /*fileType*/ + ctx[3] + ) } }); return { c() { div = element("div"); create_component(treecomponent.$$.fragment); - attr(div, "class", "nav-folder-children"); + attr(div, "class", "tree-item-children nav-folder-children"); }, m(target, anchor) { insert(target, div, anchor); @@ -28637,14 +39826,22 @@ function create_if_block_4(ctx) { }, p(ctx2, dirty) { const treecomponent_changes = {}; - if (dirty & 1) - treecomponent_changes.hierarchy = ctx2[17]; - if (dirty & 2) - treecomponent_changes.plugin = ctx2[1]; - if (dirty & 4) - treecomponent_changes.view = ctx2[2]; - if (dirty & 8) - treecomponent_changes.fileType = ctx2[3]; + if (dirty & /*hierarchy*/ + 1) + treecomponent_changes.hierarchy = /*entity*/ + ctx2[15]; + if (dirty & /*plugin*/ + 2) + treecomponent_changes.plugin = /*plugin*/ + ctx2[1]; + if (dirty & /*view*/ + 4) + treecomponent_changes.view = /*view*/ + ctx2[2]; + if (dirty & /*fileType*/ + 8) + treecomponent_changes.fileType = /*fileType*/ + ctx2[3]; treecomponent.$set(treecomponent_changes); }, i(local) { @@ -28653,6 +39850,8 @@ function create_if_block_4(ctx) { transition_in(treecomponent.$$.fragment, local); if (local) { add_render_callback(() => { + if (!current) + return; if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); div_transition.run(1); @@ -28683,8 +39882,14 @@ function create_if_block_3(ctx) { let current; pulledfilecomponent = new pulledFileComponent_default({ props: { - change: ctx[17].statusResult, - view: ctx[2] + change: ( + /*entity*/ + ctx[15].data + ), + view: ( + /*view*/ + ctx[2] + ) } }); return { @@ -28697,10 +39902,14 @@ function create_if_block_3(ctx) { }, p(ctx2, dirty) { const pulledfilecomponent_changes = {}; - if (dirty & 1) - pulledfilecomponent_changes.change = ctx2[17].statusResult; - if (dirty & 4) - pulledfilecomponent_changes.view = ctx2[2]; + if (dirty & /*hierarchy*/ + 1) + pulledfilecomponent_changes.change = /*entity*/ + ctx2[15].data; + if (dirty & /*view*/ + 4) + pulledfilecomponent_changes.view = /*view*/ + ctx2[2]; pulledfilecomponent.$set(pulledfilecomponent_changes); }, i(local) { @@ -28718,14 +39927,23 @@ function create_if_block_3(ctx) { } }; } -function create_if_block_2(ctx) { +function create_if_block_22(ctx) { let filecomponent; let current; filecomponent = new fileComponent_default({ props: { - change: ctx[17].statusResult, - manager: ctx[1].gitManager, - view: ctx[2] + change: ( + /*entity*/ + ctx[15].data + ), + manager: ( + /*plugin*/ + ctx[1].gitManager + ), + view: ( + /*view*/ + ctx[2] + ) } }); return { @@ -28738,12 +39956,18 @@ function create_if_block_2(ctx) { }, p(ctx2, dirty) { const filecomponent_changes = {}; - if (dirty & 1) - filecomponent_changes.change = ctx2[17].statusResult; - if (dirty & 2) - filecomponent_changes.manager = ctx2[1].gitManager; - if (dirty & 4) - filecomponent_changes.view = ctx2[2]; + if (dirty & /*hierarchy*/ + 1) + filecomponent_changes.change = /*entity*/ + ctx2[15].data; + if (dirty & /*plugin*/ + 2) + filecomponent_changes.manager = /*plugin*/ + ctx2[1].gitManager; + if (dirty & /*view*/ + 4) + filecomponent_changes.view = /*view*/ + ctx2[2]; filecomponent.$set(filecomponent_changes); }, i(local) { @@ -28761,14 +39985,23 @@ function create_if_block_2(ctx) { } }; } -function create_if_block_1(ctx) { +function create_if_block_13(ctx) { let stagedfilecomponent; let current; stagedfilecomponent = new stagedFileComponent_default({ props: { - change: ctx[17].statusResult, - manager: ctx[1].gitManager, - view: ctx[2] + change: ( + /*entity*/ + ctx[15].data + ), + manager: ( + /*plugin*/ + ctx[1].gitManager + ), + view: ( + /*view*/ + ctx[2] + ) } }); return { @@ -28781,12 +40014,18 @@ function create_if_block_1(ctx) { }, p(ctx2, dirty) { const stagedfilecomponent_changes = {}; - if (dirty & 1) - stagedfilecomponent_changes.change = ctx2[17].statusResult; - if (dirty & 2) - stagedfilecomponent_changes.manager = ctx2[1].gitManager; - if (dirty & 4) - stagedfilecomponent_changes.view = ctx2[2]; + if (dirty & /*hierarchy*/ + 1) + stagedfilecomponent_changes.change = /*entity*/ + ctx2[15].data; + if (dirty & /*plugin*/ + 2) + stagedfilecomponent_changes.manager = /*plugin*/ + ctx2[1].gitManager; + if (dirty & /*view*/ + 4) + stagedfilecomponent_changes.view = /*view*/ + ctx2[2]; stagedfilecomponent.$set(stagedfilecomponent_changes); }, i(local) { @@ -28804,15 +40043,18 @@ function create_if_block_1(ctx) { } }; } -function create_each_block(ctx) { +function create_each_block4(ctx) { let current_block_type_index; let if_block; let if_block_anchor; let current; - const if_block_creators = [create_if_block3, create_else_block]; + const if_block_creators = [create_if_block7, create_else_block3]; const if_blocks = []; function select_block_type(ctx2, dirty) { - if (ctx2[17].statusResult) + if ( + /*entity*/ + ctx2[15].data + ) return 0; return 1; } @@ -28867,13 +40109,16 @@ function create_each_block(ctx) { } }; } -function create_fragment4(ctx) { +function create_fragment8(ctx) { let main; let current; - let each_value = ctx[0].children; + let each_value = ( + /*hierarchy*/ + ctx[0].children + ); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + each_blocks[i] = create_each_block4(get_each_context4(ctx, each_value, i)); } const out = (i) => transition_out(each_blocks[i], 1, 1, () => { each_blocks[i] = null; @@ -28884,27 +40129,36 @@ function create_fragment4(ctx) { for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(main, "class", "svelte-148wteu"); - toggle_class(main, "topLevel", ctx[4]); + attr(main, "class", "svelte-1lnl15d"); + toggle_class( + main, + "topLevel", + /*topLevel*/ + ctx[4] + ); }, m(target, anchor) { insert(target, main, anchor); for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(main, null); + if (each_blocks[i]) { + each_blocks[i].m(main, null); + } } current = true; }, p(ctx2, [dirty]) { - if (dirty & 2031) { - each_value = ctx2[0].children; + if (dirty & /*hierarchy, plugin, view, fileType, FileType, closed, fold, side, unstage, stage, discard*/ + 2031) { + each_value = /*hierarchy*/ + ctx2[0].children; let i; for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context(ctx2, each_value, i); + const child_ctx = get_each_context4(ctx2, each_value, i); if (each_blocks[i]) { each_blocks[i].p(child_ctx, dirty); transition_in(each_blocks[i], 1); } else { - each_blocks[i] = create_each_block(child_ctx); + each_blocks[i] = create_each_block4(child_ctx); each_blocks[i].c(); transition_in(each_blocks[i], 1); each_blocks[i].m(main, null); @@ -28916,8 +40170,14 @@ function create_fragment4(ctx) { } check_outros(); } - if (!current || dirty & 16) { - toggle_class(main, "topLevel", ctx2[4]); + if (!current || dirty & /*topLevel*/ + 16) { + toggle_class( + main, + "topLevel", + /*topLevel*/ + ctx2[4] + ); } }, i(local) { @@ -28942,7 +40202,7 @@ function create_fragment4(ctx) { } }; } -function instance4($$self, $$props, $$invalidate) { +function instance8($$self, $$props, $$invalidate) { let side; let { hierarchy } = $$props; let { plugin } = $$props; @@ -28975,12 +40235,10 @@ function instance4($$self, $$props, $$invalidate) { function fold(item) { $$invalidate(5, closed[item.title] = !closed[item.title], closed); } - const click_handler = (entity) => fold(entity); - const click_handler_1 = (entity) => fold(entity); - const click_handler_2 = (entity) => unstage(entity.path); - const click_handler_3 = (entity) => discard(entity); - const click_handler_4 = (entity) => stage(entity.path); - const click_handler_5 = (entity) => fold(entity); + const click_handler = (entity) => unstage(entity.path); + const click_handler_1 = (entity) => discard(entity); + const click_handler_2 = (entity) => stage(entity.path); + const click_handler_3 = (entity) => fold(entity); $$self.$$set = ($$props2) => { if ("hierarchy" in $$props2) $$invalidate(0, hierarchy = $$props2.hierarchy); @@ -28994,7 +40252,8 @@ function instance4($$self, $$props, $$invalidate) { $$invalidate(4, topLevel = $$props2.topLevel); }; $$self.$$.update = () => { - if ($$self.$$.dirty & 4) { + if ($$self.$$.dirty & /*view*/ + 4) { $: $$invalidate(6, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } @@ -29014,42 +40273,48 @@ function instance4($$self, $$props, $$invalidate) { click_handler, click_handler_1, click_handler_2, - click_handler_3, - click_handler_4, - click_handler_5 + click_handler_3 ]; } var TreeComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance4, create_fragment4, safe_not_equal, { - hierarchy: 0, - plugin: 1, - view: 2, - fileType: 3, - topLevel: 4 - }, add_css4); + init2( + this, + options, + instance8, + create_fragment8, + safe_not_equal, + { + hierarchy: 0, + plugin: 1, + view: 2, + fileType: 3, + topLevel: 4 + }, + add_css7 + ); } }; var treeComponent_default = TreeComponent; -// src/ui/sidebar/gitView.svelte -function add_css5(target) { - append_styles(target, "svelte-fnxzfa", `.commit-msg-input.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field)}.git-commit-msg.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto}main.svelte-fnxzfa .tools.svelte-fnxzfa.svelte-fnxzfa{display:flex;margin-left:auto}main.svelte-fnxzfa .tools .buttons.svelte-fnxzfa.svelte-fnxzfa{display:flex}main.svelte-fnxzfa .tools .buttons.svelte-fnxzfa>.svelte-fnxzfa{padding:0 0;height:auto}main.svelte-fnxzfa .tools .files-count.svelte-fnxzfa.svelte-fnxzfa{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}.git-commit-msg-clear-button.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out}.git-commit-msg-clear-button.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa:after{content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,");-webkit-mask-repeat:no-repeat}.tree-item-flair.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{margin-left:auto;align-items:center}`); +// src/ui/sourceControl/sourceControl.svelte +function add_css8(target) { + append_styles(target, "svelte-48bivb", `.commit-msg-input.svelte-48bivb.svelte-48bivb{width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field)}.git-commit-msg.svelte-48bivb.svelte-48bivb{position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto}main.svelte-48bivb .git-tools .files-count.svelte-48bivb{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}.git-commit-msg-clear-button.svelte-48bivb.svelte-48bivb{position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out}.git-commit-msg-clear-button.svelte-48bivb.svelte-48bivb:after{content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,");-webkit-mask-repeat:no-repeat}`); } -function get_each_context2(ctx, list, i) { +function get_each_context5(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[45] = list[i]; + child_ctx[40] = list[i]; return child_ctx; } function get_each_context_1(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[45] = list[i]; + child_ctx[40] = list[i]; return child_ctx; } function get_each_context_2(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[50] = list[i]; + child_ctx[45] = list[i]; return child_ctx; } function create_if_block_8(ctx) { @@ -29060,13 +40325,18 @@ function create_if_block_8(ctx) { return { c() { div = element("div"); - attr(div, "class", "git-commit-msg-clear-button svelte-fnxzfa"); + attr(div, "class", "git-commit-msg-clear-button svelte-48bivb"); attr(div, "aria-label", div_aria_label_value = "Clear"); }, m(target, anchor) { insert(target, div, anchor); if (!mounted) { - dispose = listen(div, "click", ctx[33]); + dispose = listen( + div, + "click", + /*click_handler_1*/ + ctx[33] + ); mounted = true; } }, @@ -29079,7 +40349,7 @@ function create_if_block_8(ctx) { } }; } -function create_if_block4(ctx) { +function create_if_block8(ctx) { let div18; let div17; let div7; @@ -29093,7 +40363,10 @@ function create_if_block4(ctx) { let div2; let t3; let div4; - let t4_value = ctx[6].staged.length + ""; + let t4_value = ( + /*status*/ + ctx[6].staged.length + "" + ); let t4; let t5; let t6; @@ -29110,16 +40383,28 @@ function create_if_block4(ctx) { let div11; let t11; let div13; - let t12_value = ctx[6].changed.length + ""; + let t12_value = ( + /*status*/ + ctx[6].changed.length + "" + ); let t12; let t13; let t14; let current; let mounted; let dispose; - let if_block0 = ctx[13] && create_if_block_6(ctx); - let if_block1 = ctx[12] && create_if_block_42(ctx); - let if_block2 = ctx[7].length > 0 && create_if_block_12(ctx); + let if_block0 = ( + /*stagedOpen*/ + ctx[13] && create_if_block_6(ctx) + ); + let if_block1 = ( + /*changesOpen*/ + ctx[12] && create_if_block_42(ctx) + ); + let if_block2 = ( + /*lastPulledFiles*/ + ctx[7].length > 0 && create_if_block_14(ctx) + ); return { c() { div18 = element("div"); @@ -29167,33 +40452,35 @@ function create_if_block4(ctx) { t14 = space(); if (if_block2) if_block2.c(); - attr(div0, "class", "nav-folder-collapse-indicator collapse-icon"); - attr(div1, "class", "nav-folder-title-content"); + attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); + attr(div1, "class", "tree-item-inner nav-folder-title-content"); attr(div2, "data-icon", "minus"); attr(div2, "aria-label", "Unstage"); - attr(div2, "class", "clickable-icon svelte-fnxzfa"); - attr(div3, "class", "buttons svelte-fnxzfa"); - attr(div4, "class", "files-count svelte-fnxzfa"); - attr(div5, "class", "tools svelte-fnxzfa"); - attr(div6, "class", "nav-folder-title"); - attr(div7, "class", "staged nav-folder"); - toggle_class(div7, "is-collapsed", !ctx[13]); - attr(div8, "class", "nav-folder-collapse-indicator collapse-icon"); - attr(div9, "class", "nav-folder-title-content"); + attr(div2, "class", "clickable-icon"); + attr(div3, "class", "buttons"); + attr(div4, "class", "files-count svelte-48bivb"); + attr(div5, "class", "git-tools"); + attr(div6, "class", "tree-item-self is-clickable nav-folder-title"); + attr(div7, "class", "staged tree-item nav-folder"); + toggle_class(div7, "is-collapsed", !/*stagedOpen*/ + ctx[13]); + attr(div8, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); + attr(div9, "class", "tree-item-inner nav-folder-title-content"); attr(div10, "data-icon", "undo"); attr(div10, "aria-label", "Discard"); - attr(div10, "class", "clickable-icon svelte-fnxzfa"); + attr(div10, "class", "clickable-icon"); attr(div11, "data-icon", "plus"); attr(div11, "aria-label", "Stage"); - attr(div11, "class", "clickable-icon svelte-fnxzfa"); - attr(div12, "class", "buttons svelte-fnxzfa"); - attr(div13, "class", "files-count svelte-fnxzfa"); - attr(div14, "class", "tools svelte-fnxzfa"); - attr(div15, "class", "nav-folder-title"); + attr(div11, "class", "clickable-icon"); + attr(div12, "class", "buttons"); + attr(div13, "class", "files-count svelte-48bivb"); + attr(div14, "class", "git-tools"); + attr(div15, "class", "tree-item-self is-clickable nav-folder-title"); attr(div16, "class", "changes nav-folder"); - toggle_class(div16, "is-collapsed", !ctx[12]); - attr(div17, "class", "nav-folder-children"); - attr(div18, "class", "nav-folder mod-root"); + toggle_class(div16, "is-collapsed", !/*changesOpen*/ + ctx[12]); + attr(div17, "class", "tree-item-children nav-folder-children"); + attr(div18, "class", "tree-item nav-folder mod-root"); }, m(target, anchor) { insert(target, div18, anchor); @@ -29207,7 +40494,7 @@ function create_if_block4(ctx) { append2(div6, div5); append2(div5, div3); append2(div3, div2); - ctx[36](div2); + ctx[34](div2); append2(div5, t3); append2(div5, div4); append2(div4, t4); @@ -29226,7 +40513,7 @@ function create_if_block4(ctx) { append2(div12, div10); append2(div12, t10); append2(div12, div11); - ctx[41](div11); + ctx[36](div11); append2(div14, t11); append2(div14, div13); append2(div13, t12); @@ -29239,26 +40526,47 @@ function create_if_block4(ctx) { current = true; if (!mounted) { dispose = [ - listen(div0, "click", ctx[34]), - listen(div1, "click", ctx[35]), - listen(div2, "click", ctx[19]), - listen(div6, "click", self2(ctx[37])), - listen(div8, "click", ctx[38]), - listen(div9, "click", ctx[39]), - listen(div10, "click", ctx[40]), - listen(div11, "click", ctx[18]), - listen(div15, "click", self2(ctx[42])) + listen(div2, "click", stop_propagation( + /*unstageAll*/ + ctx[19] + )), + listen( + div6, + "click", + /*click_handler_2*/ + ctx[35] + ), + listen(div10, "click", stop_propagation( + /*discard*/ + ctx[22] + )), + listen(div11, "click", stop_propagation( + /*stageAll*/ + ctx[18] + )), + listen( + div15, + "click", + /*click_handler_3*/ + ctx[37] + ) ]; mounted = true; } }, p(ctx2, dirty) { - if ((!current || dirty[0] & 64) && t4_value !== (t4_value = ctx2[6].staged.length + "")) + if ((!current || dirty[0] & /*status*/ + 64) && t4_value !== (t4_value = /*status*/ + ctx2[6].staged.length + "")) set_data(t4, t4_value); - if (ctx2[13]) { + if ( + /*stagedOpen*/ + ctx2[13] + ) { if (if_block0) { if_block0.p(ctx2, dirty); - if (dirty[0] & 8192) { + if (dirty[0] & /*stagedOpen*/ + 8192) { transition_in(if_block0, 1); } } else { @@ -29274,15 +40582,23 @@ function create_if_block4(ctx) { }); check_outros(); } - if (!current || dirty[0] & 8192) { - toggle_class(div7, "is-collapsed", !ctx2[13]); + if (!current || dirty[0] & /*stagedOpen*/ + 8192) { + toggle_class(div7, "is-collapsed", !/*stagedOpen*/ + ctx2[13]); } - if ((!current || dirty[0] & 64) && t12_value !== (t12_value = ctx2[6].changed.length + "")) + if ((!current || dirty[0] & /*status*/ + 64) && t12_value !== (t12_value = /*status*/ + ctx2[6].changed.length + "")) set_data(t12, t12_value); - if (ctx2[12]) { + if ( + /*changesOpen*/ + ctx2[12] + ) { if (if_block1) { if_block1.p(ctx2, dirty); - if (dirty[0] & 4096) { + if (dirty[0] & /*changesOpen*/ + 4096) { transition_in(if_block1, 1); } } else { @@ -29298,17 +40614,23 @@ function create_if_block4(ctx) { }); check_outros(); } - if (!current || dirty[0] & 4096) { - toggle_class(div16, "is-collapsed", !ctx2[12]); + if (!current || dirty[0] & /*changesOpen*/ + 4096) { + toggle_class(div16, "is-collapsed", !/*changesOpen*/ + ctx2[12]); } - if (ctx2[7].length > 0) { + if ( + /*lastPulledFiles*/ + ctx2[7].length > 0 + ) { if (if_block2) { if_block2.p(ctx2, dirty); - if (dirty[0] & 128) { + if (dirty[0] & /*lastPulledFiles*/ + 128) { transition_in(if_block2, 1); } } else { - if_block2 = create_if_block_12(ctx2); + if_block2 = create_if_block_14(ctx2); if_block2.c(); transition_in(if_block2, 1); if_block2.m(div17, null); @@ -29338,10 +40660,10 @@ function create_if_block4(ctx) { d(detaching) { if (detaching) detach(div18); - ctx[36](null); + ctx[34](null); if (if_block0) if_block0.d(); - ctx[41](null); + ctx[36](null); if (if_block1) if_block1.d(); if (if_block2) @@ -29360,7 +40682,10 @@ function create_if_block_6(ctx) { const if_block_creators = [create_if_block_7, create_else_block_2]; const if_blocks = []; function select_block_type(ctx2, dirty) { - if (ctx2[3]) + if ( + /*showTree*/ + ctx2[3] + ) return 0; return 1; } @@ -29370,7 +40695,7 @@ function create_if_block_6(ctx) { c() { div = element("div"); if_block.c(); - attr(div, "class", "nav-folder-children"); + attr(div, "class", "tree-item-children nav-folder-children"); }, m(target, anchor) { insert(target, div, anchor); @@ -29405,6 +40730,8 @@ function create_if_block_6(ctx) { transition_in(if_block); if (local) { add_render_callback(() => { + if (!current) + return; if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); div_transition.run(1); @@ -29433,7 +40760,10 @@ function create_if_block_6(ctx) { function create_else_block_2(ctx) { let each_1_anchor; let current; - let each_value_2 = ctx[6].staged; + let each_value_2 = ( + /*status*/ + ctx[6].staged + ); let each_blocks = []; for (let i = 0; i < each_value_2.length; i += 1) { each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i)); @@ -29450,14 +40780,18 @@ function create_else_block_2(ctx) { }, m(target, anchor) { for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(target, anchor); + if (each_blocks[i]) { + each_blocks[i].m(target, anchor); + } } insert(target, each_1_anchor, anchor); current = true; }, p(ctx2, dirty) { - if (dirty[0] & 67) { - each_value_2 = ctx2[6].staged; + if (dirty[0] & /*status, view, plugin*/ + 67) { + each_value_2 = /*status*/ + ctx2[6].staged; let i; for (i = 0; i < each_value_2.length; i += 1) { const child_ctx = get_each_context_2(ctx2, each_value_2, i); @@ -29505,10 +40839,19 @@ function create_if_block_7(ctx) { let current; treecomponent = new treeComponent_default({ props: { - hierarchy: ctx[10], - plugin: ctx[0], - view: ctx[1], - fileType: FileType.staged, + hierarchy: ( + /*stagedHierarchy*/ + ctx[10] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + view: ( + /*view*/ + ctx[1] + ), + fileType: 0 /* staged */, topLevel: true } }); @@ -29522,12 +40865,18 @@ function create_if_block_7(ctx) { }, p(ctx2, dirty) { const treecomponent_changes = {}; - if (dirty[0] & 1024) - treecomponent_changes.hierarchy = ctx2[10]; - if (dirty[0] & 1) - treecomponent_changes.plugin = ctx2[0]; - if (dirty[0] & 2) - treecomponent_changes.view = ctx2[1]; + if (dirty[0] & /*stagedHierarchy*/ + 1024) + treecomponent_changes.hierarchy = /*stagedHierarchy*/ + ctx2[10]; + if (dirty[0] & /*plugin*/ + 1) + treecomponent_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty[0] & /*view*/ + 2) + treecomponent_changes.view = /*view*/ + ctx2[1]; treecomponent.$set(treecomponent_changes); }, i(local) { @@ -29550,9 +40899,18 @@ function create_each_block_2(ctx) { let current; stagedfilecomponent = new stagedFileComponent_default({ props: { - change: ctx[50], - view: ctx[1], - manager: ctx[0].gitManager + change: ( + /*stagedFile*/ + ctx[45] + ), + view: ( + /*view*/ + ctx[1] + ), + manager: ( + /*plugin*/ + ctx[0].gitManager + ) } }); return { @@ -29565,12 +40923,18 @@ function create_each_block_2(ctx) { }, p(ctx2, dirty) { const stagedfilecomponent_changes = {}; - if (dirty[0] & 64) - stagedfilecomponent_changes.change = ctx2[50]; - if (dirty[0] & 2) - stagedfilecomponent_changes.view = ctx2[1]; - if (dirty[0] & 1) - stagedfilecomponent_changes.manager = ctx2[0].gitManager; + if (dirty[0] & /*status*/ + 64) + stagedfilecomponent_changes.change = /*stagedFile*/ + ctx2[45]; + if (dirty[0] & /*view*/ + 2) + stagedfilecomponent_changes.view = /*view*/ + ctx2[1]; + if (dirty[0] & /*plugin*/ + 1) + stagedfilecomponent_changes.manager = /*plugin*/ + ctx2[0].gitManager; stagedfilecomponent.$set(stagedfilecomponent_changes); }, i(local) { @@ -29597,7 +40961,10 @@ function create_if_block_42(ctx) { const if_block_creators = [create_if_block_52, create_else_block_12]; const if_blocks = []; function select_block_type_1(ctx2, dirty) { - if (ctx2[3]) + if ( + /*showTree*/ + ctx2[3] + ) return 0; return 1; } @@ -29607,7 +40974,7 @@ function create_if_block_42(ctx) { c() { div = element("div"); if_block.c(); - attr(div, "class", "nav-folder-children"); + attr(div, "class", "tree-item-children nav-folder-children"); }, m(target, anchor) { insert(target, div, anchor); @@ -29642,6 +41009,8 @@ function create_if_block_42(ctx) { transition_in(if_block); if (local) { add_render_callback(() => { + if (!current) + return; if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); div_transition.run(1); @@ -29670,7 +41039,10 @@ function create_if_block_42(ctx) { function create_else_block_12(ctx) { let each_1_anchor; let current; - let each_value_1 = ctx[6].changed; + let each_value_1 = ( + /*status*/ + ctx[6].changed + ); let each_blocks = []; for (let i = 0; i < each_value_1.length; i += 1) { each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); @@ -29687,14 +41059,18 @@ function create_else_block_12(ctx) { }, m(target, anchor) { for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(target, anchor); + if (each_blocks[i]) { + each_blocks[i].m(target, anchor); + } } insert(target, each_1_anchor, anchor); current = true; }, p(ctx2, dirty) { - if (dirty[0] & 67) { - each_value_1 = ctx2[6].changed; + if (dirty[0] & /*status, view, plugin*/ + 67) { + each_value_1 = /*status*/ + ctx2[6].changed; let i; for (i = 0; i < each_value_1.length; i += 1) { const child_ctx = get_each_context_1(ctx2, each_value_1, i); @@ -29742,10 +41118,19 @@ function create_if_block_52(ctx) { let current; treecomponent = new treeComponent_default({ props: { - hierarchy: ctx[9], - plugin: ctx[0], - view: ctx[1], - fileType: FileType.changed, + hierarchy: ( + /*changeHierarchy*/ + ctx[9] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + view: ( + /*view*/ + ctx[1] + ), + fileType: 1 /* changed */, topLevel: true } }); @@ -29759,12 +41144,18 @@ function create_if_block_52(ctx) { }, p(ctx2, dirty) { const treecomponent_changes = {}; - if (dirty[0] & 512) - treecomponent_changes.hierarchy = ctx2[9]; - if (dirty[0] & 1) - treecomponent_changes.plugin = ctx2[0]; - if (dirty[0] & 2) - treecomponent_changes.view = ctx2[1]; + if (dirty[0] & /*changeHierarchy*/ + 512) + treecomponent_changes.hierarchy = /*changeHierarchy*/ + ctx2[9]; + if (dirty[0] & /*plugin*/ + 1) + treecomponent_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty[0] & /*view*/ + 2) + treecomponent_changes.view = /*view*/ + ctx2[1]; treecomponent.$set(treecomponent_changes); }, i(local) { @@ -29787,12 +41178,21 @@ function create_each_block_1(ctx) { let current; filecomponent = new fileComponent_default({ props: { - change: ctx[45], - view: ctx[1], - manager: ctx[0].gitManager + change: ( + /*change*/ + ctx[40] + ), + view: ( + /*view*/ + ctx[1] + ), + manager: ( + /*plugin*/ + ctx[0].gitManager + ) } }); - filecomponent.$on("git-refresh", triggerRefresh); + filecomponent.$on("git-refresh", triggerRefresh2); return { c() { create_component(filecomponent.$$.fragment); @@ -29803,12 +41203,18 @@ function create_each_block_1(ctx) { }, p(ctx2, dirty) { const filecomponent_changes = {}; - if (dirty[0] & 64) - filecomponent_changes.change = ctx2[45]; - if (dirty[0] & 2) - filecomponent_changes.view = ctx2[1]; - if (dirty[0] & 1) - filecomponent_changes.manager = ctx2[0].gitManager; + if (dirty[0] & /*status*/ + 64) + filecomponent_changes.change = /*change*/ + ctx2[40]; + if (dirty[0] & /*view*/ + 2) + filecomponent_changes.view = /*view*/ + ctx2[1]; + if (dirty[0] & /*plugin*/ + 1) + filecomponent_changes.manager = /*plugin*/ + ctx2[0].gitManager; filecomponent.$set(filecomponent_changes); }, i(local) { @@ -29826,7 +41232,7 @@ function create_each_block_1(ctx) { } }; } -function create_if_block_12(ctx) { +function create_if_block_14(ctx) { let div3; let div2; let div0; @@ -29834,13 +41240,19 @@ function create_if_block_12(ctx) { let div1; let t2; let span; - let t3_value = ctx[7].length + ""; + let t3_value = ( + /*lastPulledFiles*/ + ctx[7].length + "" + ); let t3; let t4; let current; let mounted; let dispose; - let if_block = ctx[14] && create_if_block_22(ctx); + let if_block = ( + /*lastPulledFilesOpen*/ + ctx[14] && create_if_block_23(ctx) + ); return { c() { div3 = element("div"); @@ -29856,12 +41268,13 @@ function create_if_block_12(ctx) { t4 = space(); if (if_block) if_block.c(); - attr(div0, "class", "nav-folder-collapse-indicator collapse-icon"); - attr(div1, "class", "nav-folder-title-content"); - attr(span, "class", "tree-item-flair svelte-fnxzfa"); - attr(div2, "class", "nav-folder-title"); + attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); + attr(div1, "class", "tree-item-inner nav-folder-title-content"); + attr(span, "class", "tree-item-flair"); + attr(div2, "class", "tree-item-self is-clickable nav-folder-title"); attr(div3, "class", "pulled nav-folder"); - toggle_class(div3, "is-collapsed", !ctx[14]); + toggle_class(div3, "is-collapsed", !/*lastPulledFilesOpen*/ + ctx[14]); }, m(target, anchor) { insert(target, div3, anchor); @@ -29877,21 +41290,32 @@ function create_if_block_12(ctx) { if_block.m(div3, null); current = true; if (!mounted) { - dispose = listen(div2, "click", ctx[43]); + dispose = listen( + div2, + "click", + /*click_handler_4*/ + ctx[38] + ); mounted = true; } }, p(ctx2, dirty) { - if ((!current || dirty[0] & 128) && t3_value !== (t3_value = ctx2[7].length + "")) + if ((!current || dirty[0] & /*lastPulledFiles*/ + 128) && t3_value !== (t3_value = /*lastPulledFiles*/ + ctx2[7].length + "")) set_data(t3, t3_value); - if (ctx2[14]) { + if ( + /*lastPulledFilesOpen*/ + ctx2[14] + ) { if (if_block) { if_block.p(ctx2, dirty); - if (dirty[0] & 16384) { + if (dirty[0] & /*lastPulledFilesOpen*/ + 16384) { transition_in(if_block, 1); } } else { - if_block = create_if_block_22(ctx2); + if_block = create_if_block_23(ctx2); if_block.c(); transition_in(if_block, 1); if_block.m(div3, null); @@ -29903,8 +41327,10 @@ function create_if_block_12(ctx) { }); check_outros(); } - if (!current || dirty[0] & 16384) { - toggle_class(div3, "is-collapsed", !ctx2[14]); + if (!current || dirty[0] & /*lastPulledFilesOpen*/ + 16384) { + toggle_class(div3, "is-collapsed", !/*lastPulledFilesOpen*/ + ctx2[14]); } }, i(local) { @@ -29927,16 +41353,19 @@ function create_if_block_12(ctx) { } }; } -function create_if_block_22(ctx) { +function create_if_block_23(ctx) { let div; let current_block_type_index; let if_block; let div_transition; let current; - const if_block_creators = [create_if_block_32, create_else_block2]; + const if_block_creators = [create_if_block_32, create_else_block4]; const if_blocks = []; function select_block_type_2(ctx2, dirty) { - if (ctx2[3]) + if ( + /*showTree*/ + ctx2[3] + ) return 0; return 1; } @@ -29946,7 +41375,7 @@ function create_if_block_22(ctx) { c() { div = element("div"); if_block.c(); - attr(div, "class", "nav-folder-children"); + attr(div, "class", "tree-item-children nav-folder-children"); }, m(target, anchor) { insert(target, div, anchor); @@ -29981,6 +41410,8 @@ function create_if_block_22(ctx) { transition_in(if_block); if (local) { add_render_callback(() => { + if (!current) + return; if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); div_transition.run(1); @@ -30006,13 +41437,16 @@ function create_if_block_22(ctx) { } }; } -function create_else_block2(ctx) { +function create_else_block4(ctx) { let each_1_anchor; let current; - let each_value = ctx[7]; + let each_value = ( + /*lastPulledFiles*/ + ctx[7] + ); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i)); + each_blocks[i] = create_each_block5(get_each_context5(ctx, each_value, i)); } const out = (i) => transition_out(each_blocks[i], 1, 1, () => { each_blocks[i] = null; @@ -30026,22 +41460,26 @@ function create_else_block2(ctx) { }, m(target, anchor) { for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(target, anchor); + if (each_blocks[i]) { + each_blocks[i].m(target, anchor); + } } insert(target, each_1_anchor, anchor); current = true; }, p(ctx2, dirty) { - if (dirty[0] & 130) { - each_value = ctx2[7]; + if (dirty[0] & /*lastPulledFiles, view*/ + 130) { + each_value = /*lastPulledFiles*/ + ctx2[7]; let i; for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context2(ctx2, each_value, i); + const child_ctx = get_each_context5(ctx2, each_value, i); if (each_blocks[i]) { each_blocks[i].p(child_ctx, dirty); transition_in(each_blocks[i], 1); } else { - each_blocks[i] = create_each_block2(child_ctx); + each_blocks[i] = create_each_block5(child_ctx); each_blocks[i].c(); transition_in(each_blocks[i], 1); each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); @@ -30081,10 +41519,19 @@ function create_if_block_32(ctx) { let current; treecomponent = new treeComponent_default({ props: { - hierarchy: ctx[11], - plugin: ctx[0], - view: ctx[1], - fileType: FileType.pulled, + hierarchy: ( + /*lastPulledFilesHierarchy*/ + ctx[11] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + view: ( + /*view*/ + ctx[1] + ), + fileType: 2 /* pulled */, topLevel: true } }); @@ -30098,12 +41545,18 @@ function create_if_block_32(ctx) { }, p(ctx2, dirty) { const treecomponent_changes = {}; - if (dirty[0] & 2048) - treecomponent_changes.hierarchy = ctx2[11]; - if (dirty[0] & 1) - treecomponent_changes.plugin = ctx2[0]; - if (dirty[0] & 2) - treecomponent_changes.view = ctx2[1]; + if (dirty[0] & /*lastPulledFilesHierarchy*/ + 2048) + treecomponent_changes.hierarchy = /*lastPulledFilesHierarchy*/ + ctx2[11]; + if (dirty[0] & /*plugin*/ + 1) + treecomponent_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty[0] & /*view*/ + 2) + treecomponent_changes.view = /*view*/ + ctx2[1]; treecomponent.$set(treecomponent_changes); }, i(local) { @@ -30121,16 +41574,22 @@ function create_if_block_32(ctx) { } }; } -function create_each_block2(ctx) { +function create_each_block5(ctx) { let pulledfilecomponent; let current; pulledfilecomponent = new pulledFileComponent_default({ props: { - change: ctx[45], - view: ctx[1] + change: ( + /*change*/ + ctx[40] + ), + view: ( + /*view*/ + ctx[1] + ) } }); - pulledfilecomponent.$on("git-refresh", triggerRefresh); + pulledfilecomponent.$on("git-refresh", triggerRefresh2); return { c() { create_component(pulledfilecomponent.$$.fragment); @@ -30141,10 +41600,14 @@ function create_each_block2(ctx) { }, p(ctx2, dirty) { const pulledfilecomponent_changes = {}; - if (dirty[0] & 128) - pulledfilecomponent_changes.change = ctx2[45]; - if (dirty[0] & 2) - pulledfilecomponent_changes.view = ctx2[1]; + if (dirty[0] & /*lastPulledFiles*/ + 128) + pulledfilecomponent_changes.change = /*change*/ + ctx2[40]; + if (dirty[0] & /*view*/ + 2) + pulledfilecomponent_changes.view = /*view*/ + ctx2[1]; pulledfilecomponent.$set(pulledfilecomponent_changes); }, i(local) { @@ -30162,7 +41625,7 @@ function create_each_block2(ctx) { } }; } -function create_fragment5(ctx) { +function create_fragment9(ctx) { let main; let div9; let div8; @@ -30190,8 +41653,16 @@ function create_fragment5(ctx) { let current; let mounted; let dispose; - let if_block0 = ctx[2] && create_if_block_8(ctx); - let if_block1 = ctx[6] && ctx[10] && ctx[9] && create_if_block4(ctx); + let if_block0 = ( + /*commitMessage*/ + ctx[2] && create_if_block_8(ctx) + ); + let if_block1 = ( + /*status*/ + ctx[6] && /*stagedHierarchy*/ + ctx[10] && /*changeHierarchy*/ + ctx[9] && create_if_block8(ctx) + ); return { c() { main = element("main"); @@ -30254,18 +41725,27 @@ function create_fragment5(ctx) { attr(div7, "data-icon", "refresh-cw"); attr(div7, "aria-label", "Refresh"); set_style(div7, "margin", "1px"); - toggle_class(div7, "loading", ctx[5]); + toggle_class( + div7, + "loading", + /*loading*/ + ctx[5] + ); attr(div8, "class", "nav-buttons-container"); attr(div9, "class", "nav-header"); - attr(textarea, "rows", ctx[15]); - attr(textarea, "class", "commit-msg-input svelte-fnxzfa"); - attr(textarea, "type", "text"); + attr( + textarea, + "rows", + /*rows*/ + ctx[15] + ); + attr(textarea, "class", "commit-msg-input svelte-48bivb"); attr(textarea, "spellcheck", "true"); attr(textarea, "placeholder", "Commit Message"); - attr(div10, "class", "git-commit-msg svelte-fnxzfa"); + attr(div10, "class", "git-commit-msg svelte-48bivb"); attr(div11, "class", "nav-files-container"); set_style(div11, "position", "relative"); - attr(main, "class", "svelte-fnxzfa"); + attr(main, "class", "svelte-48bivb"); }, m(target, anchor) { insert(target, main, anchor); @@ -30297,7 +41777,11 @@ function create_fragment5(ctx) { append2(main, t7); append2(main, div10); append2(div10, textarea); - set_input_value(textarea, ctx[2]); + set_input_value( + textarea, + /*commitMessage*/ + ctx[2] + ); append2(div10, t8); if (if_block0) if_block0.m(div10, null); @@ -30308,30 +41792,90 @@ function create_fragment5(ctx) { current = true; if (!mounted) { dispose = [ - listen(div0, "click", ctx[17]), - listen(div1, "click", ctx[16]), - listen(div2, "click", ctx[18]), - listen(div3, "click", ctx[19]), - listen(div4, "click", ctx[20]), - listen(div5, "click", ctx[21]), - listen(div6, "click", ctx[30]), - listen(div7, "click", triggerRefresh), - listen(textarea, "input", ctx[32]) + listen( + div0, + "click", + /*backup*/ + ctx[17] + ), + listen( + div1, + "click", + /*commit*/ + ctx[16] + ), + listen( + div2, + "click", + /*stageAll*/ + ctx[18] + ), + listen( + div3, + "click", + /*unstageAll*/ + ctx[19] + ), + listen( + div4, + "click", + /*push*/ + ctx[20] + ), + listen( + div5, + "click", + /*pull*/ + ctx[21] + ), + listen( + div6, + "click", + /*click_handler*/ + ctx[30] + ), + listen(div7, "click", triggerRefresh2), + listen( + textarea, + "input", + /*textarea_input_handler*/ + ctx[32] + ) ]; mounted = true; } }, p(ctx2, dirty) { - if (!current || dirty[0] & 32) { - toggle_class(div7, "loading", ctx2[5]); + if (!current || dirty[0] & /*loading*/ + 32) { + toggle_class( + div7, + "loading", + /*loading*/ + ctx2[5] + ); } - if (!current || dirty[0] & 32768) { - attr(textarea, "rows", ctx2[15]); + if (!current || dirty[0] & /*rows*/ + 32768) { + attr( + textarea, + "rows", + /*rows*/ + ctx2[15] + ); } - if (dirty[0] & 4) { - set_input_value(textarea, ctx2[2]); + if (dirty[0] & /*commitMessage*/ + 4) { + set_input_value( + textarea, + /*commitMessage*/ + ctx2[2] + ); } - if (ctx2[2]) { + if ( + /*commitMessage*/ + ctx2[2] + ) { if (if_block0) { if_block0.p(ctx2, dirty); } else { @@ -30343,14 +41887,20 @@ function create_fragment5(ctx) { if_block0.d(1); if_block0 = null; } - if (ctx2[6] && ctx2[10] && ctx2[9]) { + if ( + /*status*/ + ctx2[6] && /*stagedHierarchy*/ + ctx2[10] && /*changeHierarchy*/ + ctx2[9] + ) { if (if_block1) { if_block1.p(ctx2, dirty); - if (dirty[0] & 1600) { + if (dirty[0] & /*status, stagedHierarchy, changeHierarchy*/ + 1600) { transition_in(if_block1, 1); } } else { - if_block1 = create_if_block4(ctx2); + if_block1 = create_if_block8(ctx2); if_block1.c(); transition_in(if_block1, 1); if_block1.m(div11, null); @@ -30393,10 +41943,10 @@ function create_fragment5(ctx) { } }; } -function triggerRefresh() { +function triggerRefresh2() { dispatchEvent(new CustomEvent("git-refresh")); } -function instance5($$self, $$props, $$invalidate) { +function instance9($$self, $$props, $$invalidate) { let rows; let { plugin } = $$props; let { view } = $$props; @@ -30415,107 +41965,116 @@ function instance5($$self, $$props, $$invalidate) { let layoutBtn; addEventListener("git-view-refresh", refresh); plugin.app.workspace.onLayoutReady(() => { - window.setTimeout(() => { - buttons.forEach((btn) => (0, import_obsidian21.setIcon)(btn, btn.getAttr("data-icon"), 16)); - (0, import_obsidian21.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); - }, 0); + window.setTimeout( + () => { + buttons.forEach((btn) => (0, import_obsidian28.setIcon)(btn, btn.getAttr("data-icon"), 16)); + (0, import_obsidian28.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + }, + 0 + ); }); onDestroy(() => { removeEventListener("git-view-refresh", refresh); }); - async function commit2() { - $$invalidate(5, loading = true); - if (status2) { - if (await plugin.hasTooBigFiles(status2.staged)) { - plugin.setState(PluginState.idle); - return false; + function commit2() { + return __awaiter(this, void 0, void 0, function* () { + $$invalidate(5, loading = true); + if (status2) { + if (yield plugin.hasTooBigFiles(status2.staged)) { + plugin.setState(0 /* idle */); + return false; + } + plugin.promiseQueue.addTask(() => plugin.gitManager.commit(commitMessage).then(() => { + if (commitMessage !== plugin.settings.commitMessage) { + $$invalidate(2, commitMessage = ""); + } + plugin.setUpAutoBackup(); + }).finally(triggerRefresh2)); } - plugin.gitManager.commit(commitMessage).then(() => { - if (commitMessage !== plugin.settings.commitMessage) { - $$invalidate(2, commitMessage = ""); - } - plugin.setUpAutoBackup(); - }).finally(triggerRefresh); - } + }); } - async function backup() { - $$invalidate(5, loading = true); - if (status2) { - plugin.createBackup(false, false, commitMessage).then(() => { - if (commitMessage !== plugin.settings.commitMessage) { - $$invalidate(2, commitMessage = ""); - } - }).finally(triggerRefresh); - } + function backup() { + return __awaiter(this, void 0, void 0, function* () { + $$invalidate(5, loading = true); + if (status2) { + plugin.promiseQueue.addTask(() => plugin.createBackup(false, false, commitMessage).then(() => { + if (commitMessage !== plugin.settings.commitMessage) { + $$invalidate(2, commitMessage = ""); + } + }).finally(triggerRefresh2)); + } + }); } - async function refresh() { - if (!plugin.gitReady) { - $$invalidate(6, status2 = void 0); - return; - } - $$invalidate(6, status2 = plugin.cachedStatus); - if (plugin.lastPulledFiles && plugin.lastPulledFiles != lastPulledFiles) { - $$invalidate(7, lastPulledFiles = plugin.lastPulledFiles); - $$invalidate(11, lastPulledFilesHierarchy = { - title: "", - path: "", - vaultPath: "", - children: plugin.gitManager.getTreeStructure(lastPulledFiles) - }); - } - if (status2) { - const sort = (a, b) => { - return a.vault_path.split("/").last().localeCompare(b.vault_path.split("/").last()); - }; - status2.changed.sort(sort); - status2.staged.sort(sort); - if (status2.changed.length + status2.staged.length > 500) { + function refresh() { + return __awaiter(this, void 0, void 0, function* () { + if (!plugin.gitReady) { $$invalidate(6, status2 = void 0); - if (!plugin.loading) { - plugin.displayError("Too many changes to display"); + return; + } + $$invalidate(6, status2 = plugin.cachedStatus); + if (plugin.lastPulledFiles && plugin.lastPulledFiles != lastPulledFiles) { + $$invalidate(7, lastPulledFiles = plugin.lastPulledFiles); + $$invalidate(11, lastPulledFilesHierarchy = { + title: "", + path: "", + vaultPath: "", + children: plugin.gitManager.getTreeStructure(lastPulledFiles) + }); + } + if (status2) { + const sort = (a, b) => { + return a.vault_path.split("/").last().localeCompare(getDisplayPath(b.vault_path)); + }; + status2.changed.sort(sort); + status2.staged.sort(sort); + if (status2.changed.length + status2.staged.length > 500) { + $$invalidate(6, status2 = void 0); + if (!plugin.loading) { + plugin.displayError("Too many changes to display"); + } + } else { + $$invalidate(9, changeHierarchy = { + title: "", + path: "", + vaultPath: "", + children: plugin.gitManager.getTreeStructure(status2.changed) + }); + $$invalidate(10, stagedHierarchy = { + title: "", + path: "", + vaultPath: "", + children: plugin.gitManager.getTreeStructure(status2.staged) + }); } } else { - $$invalidate(9, changeHierarchy = { - title: "", - path: "", - vaultPath: "", - children: plugin.gitManager.getTreeStructure(status2.changed) - }); - $$invalidate(10, stagedHierarchy = { - title: "", - path: "", - vaultPath: "", - children: plugin.gitManager.getTreeStructure(status2.staged) - }); + $$invalidate(9, changeHierarchy = void 0); + $$invalidate(10, stagedHierarchy = void 0); } - } else { - $$invalidate(9, changeHierarchy = void 0); - $$invalidate(10, stagedHierarchy = void 0); - } - $$invalidate(5, loading = plugin.loading); + $$invalidate(5, loading = plugin.loading); + }); } function stageAll() { $$invalidate(5, loading = true); - plugin.gitManager.stageAll({ status: status2 }).finally(triggerRefresh); + plugin.promiseQueue.addTask(() => plugin.gitManager.stageAll({ status: status2 }).finally(triggerRefresh2)); } function unstageAll() { $$invalidate(5, loading = true); - plugin.gitManager.unstageAll({ status: status2 }).finally(triggerRefresh); + plugin.promiseQueue.addTask(() => plugin.gitManager.unstageAll({ status: status2 }).finally(triggerRefresh2)); } function push2() { $$invalidate(5, loading = true); - plugin.push().finally(triggerRefresh); + plugin.promiseQueue.addTask(() => plugin.push().finally(triggerRefresh2)); } function pull2() { $$invalidate(5, loading = true); - plugin.pullChangesFromRemote().finally(triggerRefresh); + plugin.promiseQueue.addTask(() => plugin.pullChangesFromRemote().finally(triggerRefresh2)); } function discard() { new DiscardModal(view.app, false, plugin.gitManager.getVaultPath("/")).myOpen().then((shouldDiscard) => { if (shouldDiscard === true) { - plugin.gitManager.discardAll({ status: plugin.cachedStatus }).finally(() => { + plugin.promiseQueue.addTask(() => plugin.gitManager.discardAll({ status: plugin.cachedStatus }).finally(() => { dispatchEvent(new CustomEvent("git-refresh")); - }); + })); } }); } @@ -30577,26 +42136,21 @@ function instance5($$self, $$props, $$invalidate) { $$invalidate(2, commitMessage); } const click_handler_1 = () => $$invalidate(2, commitMessage = ""); - const click_handler_2 = () => $$invalidate(13, stagedOpen = !stagedOpen); - const click_handler_3 = () => $$invalidate(13, stagedOpen = !stagedOpen); function div2_binding_1($$value) { binding_callbacks[$$value ? "unshift" : "push"](() => { buttons[8] = $$value; $$invalidate(8, buttons); }); } - const click_handler_4 = () => $$invalidate(13, stagedOpen = !stagedOpen); - const click_handler_5 = () => $$invalidate(12, changesOpen = !changesOpen); - const click_handler_6 = () => $$invalidate(12, changesOpen = !changesOpen); - const click_handler_7 = () => discard(); + const click_handler_2 = () => $$invalidate(13, stagedOpen = !stagedOpen); function div11_binding($$value) { binding_callbacks[$$value ? "unshift" : "push"](() => { buttons[9] = $$value; $$invalidate(8, buttons); }); } - const click_handler_8 = () => $$invalidate(12, changesOpen = !changesOpen); - const click_handler_9 = () => $$invalidate(14, lastPulledFilesOpen = !lastPulledFilesOpen); + const click_handler_3 = () => $$invalidate(12, changesOpen = !changesOpen); + const click_handler_4 = () => $$invalidate(14, lastPulledFilesOpen = !lastPulledFilesOpen); $$self.$$set = ($$props2) => { if ("plugin" in $$props2) $$invalidate(0, plugin = $$props2.plugin); @@ -30604,15 +42158,17 @@ function instance5($$self, $$props, $$invalidate) { $$invalidate(1, view = $$props2.view); }; $$self.$$.update = () => { - if ($$self.$$.dirty[0] & 24) { + if ($$self.$$.dirty[0] & /*layoutBtn, showTree*/ + 24) { $: { if (layoutBtn) { layoutBtn.empty(); - (0, import_obsidian21.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + (0, import_obsidian28.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); } } } - if ($$self.$$.dirty[0] & 4) { + if ($$self.$$.dirty[0] & /*commitMessage*/ + 4) { $: $$invalidate(15, rows = (commitMessage.match(/\n/g) || []).length + 1 || 1); } @@ -30652,47 +42208,42 @@ function instance5($$self, $$props, $$invalidate) { div7_binding, textarea_input_handler, click_handler_1, - click_handler_2, - click_handler_3, div2_binding_1, - click_handler_4, - click_handler_5, - click_handler_6, - click_handler_7, + click_handler_2, div11_binding, - click_handler_8, - click_handler_9 + click_handler_3, + click_handler_4 ]; } -var GitView = class extends SvelteComponent { +var SourceControl = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance5, create_fragment5, safe_not_equal, { plugin: 0, view: 1 }, add_css5, [-1, -1]); + init2(this, options, instance9, create_fragment9, safe_not_equal, { plugin: 0, view: 1 }, add_css8, [-1, -1]); } }; -var gitView_default = GitView; +var sourceControl_default = SourceControl; -// src/ui/sidebar/sidebarView.ts -var GitView2 = class extends import_obsidian22.ItemView { +// src/ui/sourceControl/sourceControl.ts +var GitView = class extends import_obsidian29.ItemView { constructor(leaf, plugin) { super(leaf); this.plugin = plugin; this.hoverPopover = null; } getViewType() { - return GIT_VIEW_CONFIG.type; + return SOURCE_CONTROL_VIEW_CONFIG.type; } getDisplayText() { - return GIT_VIEW_CONFIG.name; + return SOURCE_CONTROL_VIEW_CONFIG.name; } getIcon() { - return GIT_VIEW_CONFIG.icon; + return SOURCE_CONTROL_VIEW_CONFIG.icon; } onClose() { return super.onClose(); } onOpen() { - this._view = new gitView_default({ + this._view = new sourceControl_default({ target: this.contentEl, props: { plugin: this.plugin, @@ -30729,7 +42280,7 @@ var BranchStatusBar = class { }; // src/main.ts -var ObsidianGit = class extends import_obsidian23.Plugin { +var ObsidianGit = class extends import_obsidian30.Plugin { constructor() { super(...arguments); this.gitReady = false; @@ -30737,6 +42288,7 @@ var ObsidianGit = class extends import_obsidian23.Plugin { this.conflictOutputFile = "conflict-files-obsidian-git.md"; this.offlineMode = false; this.loading = false; + this.lineAuthoringFeature = new LineAuthoringFeature(this); } setState(state) { var _a2; @@ -30748,8 +42300,13 @@ var ObsidianGit = class extends import_obsidian23.Plugin { return this.cachedStatus; } async refresh() { - const gitView = this.app.workspace.getLeavesOfType(GIT_VIEW_CONFIG.type); - if (this.settings.changedFilesInStatusBar || gitView.length > 0) { + const gitView = this.app.workspace.getLeavesOfType( + SOURCE_CONTROL_VIEW_CONFIG.type + ); + const historyView = this.app.workspace.getLeavesOfType( + HISTORY_VIEW_CONFIG.type + ); + if (this.settings.changedFilesInStatusBar || gitView.length > 0 || historyView.length > 0) { this.loading = true; dispatchEvent(new CustomEvent("git-view-refresh")); await this.updateCachedStatus(); @@ -30757,29 +42314,42 @@ var ObsidianGit = class extends import_obsidian23.Plugin { dispatchEvent(new CustomEvent("git-view-refresh")); } } + async refreshUpdatedHead() { + this.lineAuthoringFeature.refreshLineAuthorViews(); + } async onload() { console.log("loading " + this.manifest.name + " plugin"); + pluginRef.plugin = this; this.localStorage = new LocalStorageSettings(this); this.localStorage.migrate(); await this.loadSettings(); this.migrateSettings(); - this.addSettingTab(new ObsidianGitSettingsTab(this.app, this)); + this.settingsTab = new ObsidianGitSettingsTab(this.app, this); + this.addSettingTab(this.settingsTab); if (!this.localStorage.getPluginDisabled()) { this.loadPlugin(); } } async loadPlugin() { addEventListener("git-refresh", this.refresh.bind(this)); - this.registerView(GIT_VIEW_CONFIG.type, (leaf) => { - return new GitView2(leaf, this); + addEventListener("git-head-update", this.refreshUpdatedHead.bind(this)); + this.registerView(SOURCE_CONTROL_VIEW_CONFIG.type, (leaf) => { + return new GitView(leaf, this); + }); + this.registerView(HISTORY_VIEW_CONFIG.type, (leaf) => { + return new HistoryView2(leaf, this); }); this.registerView(DIFF_VIEW_CONFIG.type, (leaf) => { return new DiffView(leaf, this); }); - this.app.workspace.registerHoverLinkSource(GIT_VIEW_CONFIG.type, { - display: "Git View", - defaultMod: true - }); + this.lineAuthoringFeature.onLoadPlugin(); + this.app.workspace.registerHoverLinkSource( + SOURCE_CONTROL_VIEW_CONFIG.type, + { + display: "Git View", + defaultMod: true + } + ); this.setRefreshDebouncer(); this.addCommand({ id: "edit-gitignore", @@ -30802,12 +42372,34 @@ var ObsidianGit = class extends import_obsidian23.Plugin { id: "open-git-view", name: "Open source control view", callback: async () => { - const leafs = this.app.workspace.getLeavesOfType(GIT_VIEW_CONFIG.type); + const leafs = this.app.workspace.getLeavesOfType( + SOURCE_CONTROL_VIEW_CONFIG.type + ); let leaf; if (leafs.length === 0) { leaf = this.app.workspace.getRightLeaf(false); await leaf.setViewState({ - type: GIT_VIEW_CONFIG.type + type: SOURCE_CONTROL_VIEW_CONFIG.type + }); + } else { + leaf = leafs.first(); + } + this.app.workspace.revealLeaf(leaf); + dispatchEvent(new CustomEvent("git-refresh")); + } + }); + this.addCommand({ + id: "open-history-view", + name: "Open history view", + callback: async () => { + const leafs = this.app.workspace.getLeavesOfType( + HISTORY_VIEW_CONFIG.type + ); + let leaf; + if (leafs.length === 0) { + leaf = this.app.workspace.getRightLeaf(false); + await leaf.setViewState({ + type: HISTORY_VIEW_CONFIG.type }); } else { leaf = leafs.first(); @@ -30830,7 +42422,10 @@ var ObsidianGit = class extends import_obsidian23.Plugin { active: true, state: { staged: false, - file: this.gitManager.getPath(file.path, true) + file: this.gitManager.asRepositoryRelativePath( + file.path, + true + ) } }); } @@ -30851,6 +42446,11 @@ var ObsidianGit = class extends import_obsidian23.Plugin { name: "Pull", callback: () => this.promiseQueue.addTask(() => this.pullChangesFromRemote()) }); + this.addCommand({ + id: "switch-to-remote-branch", + name: "Switch to remote branch", + callback: () => this.promiseQueue.addTask(() => this.switchRemoteBranch()) + }); this.addCommand({ id: "add-to-gitignore", name: "Add file to gitignore", @@ -30859,7 +42459,13 @@ var ObsidianGit = class extends import_obsidian23.Plugin { if (checking) { return file !== null; } else { - app.vault.adapter.append(this.gitManager.getVaultPath(".gitignore"), "\n" + this.gitManager.getPath(file.path, true)).then(() => { + app.vault.adapter.append( + this.gitManager.getVaultPath(".gitignore"), + "\n" + this.gitManager.asRepositoryRelativePath( + file.path, + true + ) + ).then(() => { this.refresh(); }); } @@ -30886,33 +42492,41 @@ var ObsidianGit = class extends import_obsidian23.Plugin { this.addCommand({ id: "commit", name: "Commit all changes", - callback: () => this.promiseQueue.addTask(() => this.commit({ fromAutoBackup: false })) + callback: () => this.promiseQueue.addTask( + () => this.commit({ fromAutoBackup: false }) + ) }); this.addCommand({ id: "commit-specified-message", name: "Commit all changes with specific message", - callback: () => this.promiseQueue.addTask(() => this.commit({ - fromAutoBackup: false, - requestCustomMessage: true - })) + callback: () => this.promiseQueue.addTask( + () => this.commit({ + fromAutoBackup: false, + requestCustomMessage: true + }) + ) }); this.addCommand({ id: "commit-staged", name: "Commit staged", - callback: () => this.promiseQueue.addTask(() => this.commit({ - fromAutoBackup: false, - requestCustomMessage: false, - onlyStaged: true - })) + callback: () => this.promiseQueue.addTask( + () => this.commit({ + fromAutoBackup: false, + requestCustomMessage: false, + onlyStaged: true + }) + ) }); this.addCommand({ id: "commit-staged-specified-message", name: "Commit staged with specific message", - callback: () => this.promiseQueue.addTask(() => this.commit({ - fromAutoBackup: false, - requestCustomMessage: true, - onlyStaged: true - })) + callback: () => this.promiseQueue.addTask( + () => this.commit({ + fromAutoBackup: false, + requestCustomMessage: true, + onlyStaged: true + }) + ) }); this.addCommand({ id: "push2", @@ -30957,18 +42571,29 @@ var ObsidianGit = class extends import_obsidian23.Plugin { id: "delete-repo", name: "CAUTION: Delete repository", callback: async () => { - const repoExists = await this.app.vault.adapter.exists(`${this.settings.basePath}/.git`); + const repoExists = await this.app.vault.adapter.exists( + `${this.settings.basePath}/.git` + ); if (repoExists) { - const modal = new GeneralModal({ options: ["NO", "YES"], placeholder: "Do you really want to delete the repository (.git directory)? This action cannot be undone.", onlySelection: true }); + const modal = new GeneralModal({ + options: ["NO", "YES"], + placeholder: "Do you really want to delete the repository (.git directory)? This action cannot be undone.", + onlySelection: true + }); const shouldDelete = await modal.open() === "YES"; if (shouldDelete) { - await this.app.vault.adapter.rmdir(`${this.settings.basePath}/.git`, true); - new import_obsidian23.Notice("Successfully deleted repository. Reloading plugin..."); + await this.app.vault.adapter.rmdir( + `${this.settings.basePath}/.git`, + true + ); + new import_obsidian30.Notice( + "Successfully deleted repository. Reloading plugin..." + ); this.unloadPlugin(); this.init(); } } else { - new import_obsidian23.Notice("No repository found"); + new import_obsidian30.Notice("No repository found"); } } }); @@ -30989,7 +42614,7 @@ var ObsidianGit = class extends import_obsidian23.Plugin { if (!await this.isAllInitialized()) return; const status2 = await this.gitManager.status(); - this.setState(PluginState.idle); + this.setState(0 /* idle */); if (status2.changed.length + status2.staged.length > 500) { this.displayError("Too many changes to display"); return; @@ -31018,48 +42643,93 @@ var ObsidianGit = class extends import_obsidian23.Plugin { this.deleteBranch(); } }); - this.registerEvent(this.app.workspace.on("file-menu", (menu, file, source) => { - this.handleFileMenu(menu, file, source); - })); + this.addCommand({ + id: "discard-all", + name: "CAUTION: Discard all changes", + callback: async () => { + if (!await this.isAllInitialized()) + return false; + const modal = new GeneralModal({ + options: ["NO", "YES"], + placeholder: "Do you want to discard all changes to tracked files? This action cannot be undone.", + onlySelection: true + }); + const shouldDiscardAll = await modal.open() === "YES"; + if (shouldDiscardAll) { + this.promiseQueue.addTask(() => this.discardAll()); + } + } + }); + this.addCommand({ + id: "toggle-line-author-info", + name: "Toggle line author information", + callback: () => { + var _a2; + return (_a2 = this.settingsTab) == null ? void 0 : _a2.configureLineAuthorShowStatus( + !this.settings.lineAuthor.show + ); + } + }); + this.registerEvent( + this.app.workspace.on("file-menu", (menu, file, source) => { + this.handleFileMenu(menu, file, source); + }) + ); if (this.settings.showStatusBar) { const statusBarEl = this.addStatusBarItem(); this.statusBar = new StatusBar(statusBarEl, this); - this.registerInterval(window.setInterval(() => { - var _a2; - return (_a2 = this.statusBar) == null ? void 0 : _a2.display(); - }, 1e3)); + this.registerInterval( + window.setInterval(() => { + var _a2; + return (_a2 = this.statusBar) == null ? void 0 : _a2.display(); + }, 1e3) + ); } - if (import_obsidian23.Platform.isDesktop && this.settings.showBranchStatusBar) { + if (import_obsidian30.Platform.isDesktop && this.settings.showBranchStatusBar) { const branchStatusBarEl = this.addStatusBarItem(); this.branchBar = new BranchStatusBar(branchStatusBarEl, this); - this.registerInterval(window.setInterval(() => { - var _a2; - return (_a2 = this.branchBar) == null ? void 0 : _a2.display(); - }, 6e4)); + this.registerInterval( + window.setInterval(() => { + var _a2; + return (_a2 = this.branchBar) == null ? void 0 : _a2.display(); + }, 6e4) + ); } this.app.workspace.onLayoutReady(() => this.init()); } setRefreshDebouncer() { var _a2; (_a2 = this.debRefresh) == null ? void 0 : _a2.cancel(); - this.debRefresh = (0, import_obsidian23.debounce)(() => { - if (this.settings.refreshSourceControl) { - this.refresh(); - } - }, this.settings.refreshSourceControlTimer, true); + this.debRefresh = (0, import_obsidian30.debounce)( + () => { + if (this.settings.refreshSourceControl) { + this.refresh(); + } + }, + this.settings.refreshSourceControlTimer, + true + ); } async showNotices() { const length = 1e4; - if (this.manifest.id === "obsidian-git" && import_obsidian23.Platform.isDesktopApp && !this.settings.showedMobileNotice) { - new import_obsidian23.Notice("Obsidian Git is now available on mobile! Please read the plugin's README for more information.", length); + if (this.manifest.id === "obsidian-git" && import_obsidian30.Platform.isDesktopApp && !this.settings.showedMobileNotice) { + new import_obsidian30.Notice( + "Obsidian Git is now available on mobile! Please read the plugin's README for more information.", + length + ); this.settings.showedMobileNotice = true; await this.saveSettings(); } if (this.manifest.id === "obsidian-git-isomorphic") { - new import_obsidian23.Notice("Obsidian Git Mobile is now deprecated. Please uninstall it and install Obsidian Git instead.", length); + new import_obsidian30.Notice( + "Obsidian Git Mobile is now deprecated. Please uninstall it and install Obsidian Git instead.", + length + ); } } handleFileMenu(menu, file, source) { + if (!this.settings.showFileMenu) + return; if (source !== "file-explorer-context-menu") { return; } @@ -31071,10 +42741,15 @@ var ObsidianGit = class extends import_obsidian23.Plugin { menu.addItem((item) => { item.setTitle(`Git: Stage`).setIcon("plus-circle").setSection("action").onClick((_) => { this.promiseQueue.addTask(async () => { - if (file instanceof import_obsidian23.TFile) { + if (file instanceof import_obsidian30.TFile) { await this.gitManager.stage(file.path, true); } else { - await this.gitManager.stageAll({ dir: this.gitManager.getPath(file.path, true) }); + await this.gitManager.stageAll({ + dir: this.gitManager.asRepositoryRelativePath( + file.path, + true + ) + }); } this.displayMessage(`Staged ${file.path}`); }); @@ -31083,10 +42758,15 @@ var ObsidianGit = class extends import_obsidian23.Plugin { menu.addItem((item) => { item.setTitle(`Git: Unstage`).setIcon("minus-circle").setSection("action").onClick((_) => { this.promiseQueue.addTask(async () => { - if (file instanceof import_obsidian23.TFile) { + if (file instanceof import_obsidian30.TFile) { await this.gitManager.unstage(file.path, true); } else { - await this.gitManager.unstageAll({ dir: this.gitManager.getPath(file.path, true) }); + await this.gitManager.unstageAll({ + dir: this.gitManager.asRepositoryRelativePath( + file.path, + true + ) + }); } this.displayMessage(`Unstaged ${file.path}`); }); @@ -31117,10 +42797,15 @@ var ObsidianGit = class extends import_obsidian23.Plugin { unloadPlugin() { this.gitReady = false; dispatchEvent(new CustomEvent("git-refresh")); + this.lineAuthoringFeature.deactivateFeature(); this.clearAutoPull(); this.clearAutoPush(); this.clearAutoBackup(); removeEventListener("git-refresh", this.refresh.bind(this)); + removeEventListener( + "git-head-update", + this.refreshUpdatedHead.bind(this) + ); this.app.metadataCache.offref(this.modifyEvent); this.app.metadataCache.offref(this.deleteEvent); this.app.metadataCache.offref(this.createEvent); @@ -31128,7 +42813,9 @@ var ObsidianGit = class extends import_obsidian23.Plugin { this.debRefresh.cancel(); } async onunload() { - this.app.workspace.unregisterHoverLinkSource(GIT_VIEW_CONFIG.type); + this.app.workspace.unregisterHoverLinkSource( + SOURCE_CONTROL_VIEW_CONFIG.type + ); this.unloadPlugin(); console.log("unloading " + this.manifest.name + " plugin"); } @@ -31137,12 +42824,14 @@ var ObsidianGit = class extends import_obsidian23.Plugin { if (data == void 0) { data = { showedMobileNotice: true }; } - this.settings = Object.assign({}, DEFAULT_SETTINGS, data); + this.settings = mergeSettingsByPriority(DEFAULT_SETTINGS, data); } async saveSettings() { + var _a2; + (_a2 = this.settingsTab) == null ? void 0 : _a2.beforeSaveSettings(); await this.saveData(this.settings); } - async saveLastAuto(date, mode) { + saveLastAuto(date, mode) { if (mode === "backup") { this.localStorage.setLastAutoBackup(date.toString()); } else if (mode === "pull") { @@ -31151,19 +42840,22 @@ var ObsidianGit = class extends import_obsidian23.Plugin { this.localStorage.setLastAutoPush(date.toString()); } } - async loadLastAuto() { + loadLastAuto() { var _a2, _b, _c; return { - "backup": new Date((_a2 = this.localStorage.getLastAutoBackup()) != null ? _a2 : ""), - "pull": new Date((_b = this.localStorage.getLastAutoPull()) != null ? _b : ""), - "push": new Date((_c = this.localStorage.getLastAutoPush()) != null ? _c : "") + backup: new Date((_a2 = this.localStorage.getLastAutoBackup()) != null ? _a2 : ""), + pull: new Date((_b = this.localStorage.getLastAutoPull()) != null ? _b : ""), + push: new Date((_c = this.localStorage.getLastAutoPush()) != null ? _c : "") }; } + get useSimpleGit() { + return import_obsidian30.Platform.isDesktopApp; + } async init() { var _a2; this.showNotices(); try { - if (import_obsidian23.Platform.isDesktopApp) { + if (this.useSimpleGit) { this.gitManager = new SimpleGit(this); await this.gitManager.setGitInstance(); } else { @@ -31175,11 +42867,14 @@ var ObsidianGit = class extends import_obsidian23.Plugin { this.displayError("Cannot run git command"); break; case "missing-repo": - new import_obsidian23.Notice("Can't find a valid git repository. Please create one via the given command or clone an existing repo."); + new import_obsidian30.Notice( + "Can't find a valid git repository. Please create one via the given command or clone an existing repo.", + 1e4 + ); break; case "valid": this.gitReady = true; - this.setState(PluginState.idle); + this.setState(0 /* idle */); this.modifyEvent = this.app.vault.on("modify", () => { this.debRefresh(); }); @@ -31197,14 +42892,19 @@ var ObsidianGit = class extends import_obsidian23.Plugin { this.registerEvent(this.createEvent); this.registerEvent(this.renameEvent); (_a2 = this.branchBar) == null ? void 0 : _a2.display(); + this.lineAuthoringFeature.conditionallyActivateBySettings(); dispatchEvent(new CustomEvent("git-refresh")); if (this.settings.autoPullOnBoot) { - this.promiseQueue.addTask(() => this.pullChangesFromRemote()); + this.promiseQueue.addTask( + () => this.pullChangesFromRemote() + ); } this.setUpAutos(); break; default: - console.log("Something weird happened. The 'checkRequirements' result is " + result); + console.log( + "Something weird happened. The 'checkRequirements' result is " + result + ); } } catch (error) { this.displayError(error); @@ -31213,7 +42913,7 @@ var ObsidianGit = class extends import_obsidian23.Plugin { } async createNewRepo() { await this.gitManager.init(); - new import_obsidian23.Notice("Initialized new repo"); + new import_obsidian30.Notice("Initialized new repo"); await this.init(); } async cloneNewRepo() { @@ -31230,45 +42930,83 @@ var ObsidianGit = class extends import_obsidian23.Plugin { if (dir === confirmOption) { dir = "."; } - dir = (0, import_obsidian23.normalizePath)(dir); + dir = (0, import_obsidian30.normalizePath)(dir); if (dir === "/") { dir = "."; } if (dir === ".") { - const modal2 = new GeneralModal({ options: ["NO", "YES"], placeholder: `Does your remote repo contain a ${app.vault.configDir} directory at the root?`, onlySelection: true }); + const modal2 = new GeneralModal({ + options: ["NO", "YES"], + placeholder: `Does your remote repo contain a ${app.vault.configDir} directory at the root?`, + onlySelection: true + }); const containsConflictDir = await modal2.open(); if (containsConflictDir === void 0) { - new import_obsidian23.Notice("Aborted clone"); + new import_obsidian30.Notice("Aborted clone"); return; } else if (containsConflictDir === "YES") { const confirmOption2 = "DELETE ALL YOUR LOCAL CONFIG AND PLUGINS"; - const modal3 = new GeneralModal({ options: ["Abort clone", confirmOption2], placeholder: `To avoid conflicts, the local ${app.vault.configDir} directory needs to be deleted.`, onlySelection: true }); + const modal3 = new GeneralModal({ + options: ["Abort clone", confirmOption2], + placeholder: `To avoid conflicts, the local ${app.vault.configDir} directory needs to be deleted.`, + onlySelection: true + }); const shouldDelete = await modal3.open() === confirmOption2; if (shouldDelete) { - await this.app.vault.adapter.rmdir(app.vault.configDir, true); + await this.app.vault.adapter.rmdir( + app.vault.configDir, + true + ); } else { - new import_obsidian23.Notice("Aborted clone"); + new import_obsidian30.Notice("Aborted clone"); return; } } } - new import_obsidian23.Notice(`Cloning new repo into "${dir}"`); - await this.gitManager.clone(url, dir); - new import_obsidian23.Notice("Cloned new repo."); - new import_obsidian23.Notice("Please restart Obsidian"); - if (dir && dir !== ".") { + const depth = await new GeneralModal({ + placeholder: "Specify depth of clone. Leave empty for full clone.", + allowEmpty: true + }).open(); + let depthInt = void 0; + if (depth !== "") { + depthInt = parseInt(depth); + if (isNaN(depthInt)) { + new import_obsidian30.Notice("Invalid depth. Aborting clone."); + return; + } + } + new import_obsidian30.Notice(`Cloning new repo into "${dir}"`); + const oldBase = this.settings.basePath; + const customDir = dir && dir !== "."; + if (customDir) { this.settings.basePath = dir; + } + try { + await this.gitManager.clone(url, dir, depthInt); + } catch (error) { + this.settings.basePath = oldBase; + this.saveSettings(); + throw error; + } + new import_obsidian30.Notice("Cloned new repo."); + new import_obsidian30.Notice("Please restart Obsidian"); + if (customDir) { this.saveSettings(); } } } } + /** + * Retries to call `this.init()` if necessary, otherwise returns directly + * @returns true if `this.gitManager` is ready to be used, false if not. + */ async isAllInitialized() { if (!this.gitReady) { await this.init(); } return this.gitReady; } + ///Used for command async pullChangesFromRemote() { if (!await this.isAllInitialized()) return; @@ -31280,13 +43018,14 @@ var ObsidianGit = class extends import_obsidian23.Plugin { if (this.gitManager instanceof SimpleGit) { const status2 = await this.gitManager.status(); if (status2.conflicted.length > 0) { - this.displayError(`You have conflicts in ${status2.conflicted.length} ${status2.conflicted.length == 1 ? "file" : "files"}`); + this.displayError( + `You have conflicts in ${status2.conflicted.length} ${status2.conflicted.length == 1 ? "file" : "files"}` + ); this.handleConflict(status2.conflicted); } } dispatchEvent(new CustomEvent("git-refresh")); - this.lastUpdate = Date.now(); - this.setState(PluginState.idle); + this.setState(0 /* idle */); } async createBackup(fromAutoBackup, requestCustomMessage = false, commitMessage) { if (!await this.isAllInitialized()) @@ -31294,7 +43033,11 @@ var ObsidianGit = class extends import_obsidian23.Plugin { if (this.settings.syncMethod == "reset" && this.settings.pullBeforePush) { await this.pull(); } - if (!await this.commit({ fromAutoBackup, requestCustomMessage, commitMessage })) + if (!await this.commit({ + fromAutoBackup, + requestCustomMessage, + commitMessage + })) return; if (!this.settings.disablePush) { if (await this.gitManager.canPush()) { @@ -31306,8 +43049,9 @@ var ObsidianGit = class extends import_obsidian23.Plugin { this.displayMessage("No changes to push"); } } - this.setState(PluginState.idle); + this.setState(0 /* idle */); } + // Returns true if commit was successfully async commit({ fromAutoBackup, requestCustomMessage = false, @@ -31316,22 +43060,30 @@ var ObsidianGit = class extends import_obsidian23.Plugin { }) { if (!await this.isAllInitialized()) return false; - const hadConflict = this.localStorage.getConflict() === "true"; + let hadConflict = this.localStorage.getConflict() === "true"; let changedFiles; let status2; let unstagedFiles; if (this.gitManager instanceof SimpleGit) { this.mayDeleteConflictFile(); status2 = await this.updateCachedStatus(); + if (status2.conflicted.length == 0) { + this.localStorage.setConflict("false"); + hadConflict = false; + } if (fromAutoBackup && status2.conflicted.length > 0) { - this.displayError(`Did not commit, because you have conflicts in ${status2.conflicted.length} ${status2.conflicted.length == 1 ? "file" : "files"}. Please resolve them and commit per command.`); + this.displayError( + `Did not commit, because you have conflicts in ${status2.conflicted.length} ${status2.conflicted.length == 1 ? "file" : "files"}. Please resolve them and commit per command.` + ); this.handleConflict(status2.conflicted); return false; } changedFiles = [...status2.changed, ...status2.staged]; } else if (fromAutoBackup && hadConflict) { - this.setState(PluginState.conflicted); - this.displayError(`Did not commit, because you have conflicts. Please resolve them and commit per command.`); + this.setState(6 /* conflicted */); + this.displayError( + `Did not commit, because you have conflicts. Please resolve them and commit per command.` + ); return false; } else if (hadConflict) { await this.mayDeleteConflictFile(); @@ -31342,24 +43094,31 @@ var ObsidianGit = class extends import_obsidian23.Plugin { changedFiles = await this.gitManager.getStagedFiles(); } else { unstagedFiles = await this.gitManager.getUnstagedFiles(); - changedFiles = unstagedFiles.map(({ filepath }) => ({ vault_path: this.gitManager.getVaultPath(filepath) })); + changedFiles = unstagedFiles.map(({ filepath }) => ({ + vault_path: this.gitManager.getVaultPath(filepath) + })); } } if (await this.hasTooBigFiles(changedFiles)) { - this.setState(PluginState.idle); + this.setState(0 /* idle */); return false; } if (changedFiles.length !== 0 || hadConflict) { let cmtMessage = commitMessage != null ? commitMessage : commitMessage = fromAutoBackup ? this.settings.autoCommitMessage : this.settings.commitMessage; if (fromAutoBackup && this.settings.customMessageOnAutoBackup || requestCustomMessage) { if (!this.settings.disablePopups && fromAutoBackup) { - new import_obsidian23.Notice("Auto backup: Please enter a custom commit message. Leave empty to abort"); + new import_obsidian30.Notice( + "Auto backup: Please enter a custom commit message. Leave empty to abort" + ); } - const tempMessage = await new CustomMessageModal(this, true).open(); + const tempMessage = await new CustomMessageModal( + this, + true + ).open(); if (tempMessage != void 0 && tempMessage != "" && tempMessage != "...") { cmtMessage = tempMessage; } else { - this.setState(PluginState.idle); + this.setState(0 /* idle */); return false; } } @@ -31367,7 +43126,20 @@ var ObsidianGit = class extends import_obsidian23.Plugin { if (onlyStaged) { committedFiles = await this.gitManager.commit(cmtMessage); } else { - committedFiles = await this.gitManager.commitAll({ message: cmtMessage, status: status2, unstagedFiles }); + committedFiles = await this.gitManager.commitAll({ + // A type error occurs here because `this.settings.autoCommitMessage` is possibly undefined. + // However, since `this.settings.autoCommitMessage` is always set to string in `this.migrateSettings`, + // `undefined` is never passed here. Therefore, temporarily ignore this error. + // @ts-ignore + message: cmtMessage, + status: status2, + unstagedFiles + }); + } + if (this.gitManager instanceof SimpleGit) { + if ((await this.updateCachedStatus()).conflicted.length == 0) { + this.localStorage.setConflict("false"); + } } let roughly = false; if (committedFiles === void 0) { @@ -31375,30 +43147,37 @@ var ObsidianGit = class extends import_obsidian23.Plugin { committedFiles = changedFiles.length; } this.setUpAutoBackup(); - this.displayMessage(`Committed${roughly ? " approx." : ""} ${committedFiles} ${committedFiles == 1 ? "file" : "files"}`); + this.displayMessage( + `Committed${roughly ? " approx." : ""} ${committedFiles} ${committedFiles == 1 ? "file" : "files"}` + ); } else { this.displayMessage("No changes to commit"); } dispatchEvent(new CustomEvent("git-refresh")); - this.setState(PluginState.idle); + this.setState(0 /* idle */); return true; } async hasTooBigFiles(files) { - var _a2; const branchInfo = await this.gitManager.branchInfo(); - const remote = (_a2 = branchInfo.tracking) == null ? void 0 : _a2.split("/")[0]; + const remote = branchInfo.tracking ? splitRemoteBranch(branchInfo.tracking)[0] : null; if (remote) { const remoteUrl = await this.gitManager.getRemoteUrl(remote); if (remoteUrl == null ? void 0 : remoteUrl.includes("github.com")) { const tooBigFiles = files.filter((f) => { - const file = this.app.vault.getAbstractFileByPath(f.vault_path); - if (file instanceof import_obsidian23.TFile) { + const file = this.app.vault.getAbstractFileByPath( + f.vault_path + ); + if (file instanceof import_obsidian30.TFile) { return file.stat.size >= 1e8; } return false; }); if (tooBigFiles.length > 0) { - this.displayError(`Did not commit, because following files are too big: ${tooBigFiles.map((e) => e.vault_path)}. Please remove them.`); + this.displayError( + `Did not commit, because following files are too big: ${tooBigFiles.map( + (e) => e.vault_path + )}. Please remove them.` + ); return true; } } @@ -31416,29 +43195,34 @@ var ObsidianGit = class extends import_obsidian23.Plugin { await this.mayDeleteConflictFile(); let status2; if (this.gitManager instanceof SimpleGit && (status2 = await this.updateCachedStatus()).conflicted.length > 0) { - this.displayError(`Cannot push. You have conflicts in ${status2.conflicted.length} ${status2.conflicted.length == 1 ? "file" : "files"}`); + this.displayError( + `Cannot push. You have conflicts in ${status2.conflicted.length} ${status2.conflicted.length == 1 ? "file" : "files"}` + ); this.handleConflict(status2.conflicted); return false; } else if (this.gitManager instanceof IsomorphicGit && hadConflict) { this.displayError(`Cannot push. You have conflicts`); - this.setState(PluginState.conflicted); + this.setState(6 /* conflicted */); return false; } { console.log("Pushing...."); const pushedFiles = await this.gitManager.push(); console.log("Pushed!", pushedFiles); - this.lastUpdate = Date.now(); if (pushedFiles > 0) { - this.displayMessage(`Pushed ${pushedFiles} ${pushedFiles == 1 ? "file" : "files"} to remote`); + this.displayMessage( + `Pushed ${pushedFiles} ${pushedFiles == 1 ? "file" : "files"} to remote` + ); } else { this.displayMessage(`No changes to push`); } this.offlineMode = false; - this.setState(PluginState.idle); + this.setState(0 /* idle */); return true; } } + /// Used for internals + /// Returns whether the pull added a commit or not. async pull() { if (!await this.remotesAreSet()) { return false; @@ -31446,16 +43230,20 @@ var ObsidianGit = class extends import_obsidian23.Plugin { const pulledFiles = await this.gitManager.pull() || []; this.offlineMode = false; if (pulledFiles.length > 0) { - this.displayMessage(`Pulled ${pulledFiles.length} ${pulledFiles.length == 1 ? "file" : "files"} from remote`); + this.displayMessage( + `Pulled ${pulledFiles.length} ${pulledFiles.length == 1 ? "file" : "files"} from remote` + ); this.lastPulledFiles = pulledFiles; } return pulledFiles.length != 0; } async mayDeleteConflictFile() { - const file = this.app.vault.getAbstractFileByPath(this.conflictOutputFile); + const file = this.app.vault.getAbstractFileByPath( + this.conflictOutputFile + ); if (file) { this.app.workspace.iterateAllLeaves((leaf) => { - if (leaf.view instanceof import_obsidian23.MarkdownView && leaf.view.file.path == file.path) { + if (leaf.view instanceof import_obsidian30.MarkdownView && leaf.view.file.path == file.path) { leaf.detach(); } }); @@ -31468,7 +43256,7 @@ var ObsidianGit = class extends import_obsidian23.Plugin { await this.gitManager.stage(file.path, true); this.displayMessage(`Staged ${file.path}`); dispatchEvent(new CustomEvent("git-refresh")); - this.setState(PluginState.idle); + this.setState(0 /* idle */); return true; } async unstageFile(file) { @@ -31477,7 +43265,7 @@ var ObsidianGit = class extends import_obsidian23.Plugin { await this.gitManager.unstage(file.path, true); this.displayMessage(`Unstaged ${file.path}`); dispatchEvent(new CustomEvent("git-refresh")); - this.setState(PluginState.idle); + this.setState(0 /* idle */); return true; } async switchBranch() { @@ -31485,7 +43273,9 @@ var ObsidianGit = class extends import_obsidian23.Plugin { if (!await this.isAllInitialized()) return; const branchInfo = await this.gitManager.branchInfo(); - const selectedBranch = await new BranchModal(branchInfo.branches).open(); + const selectedBranch = await new BranchModal( + branchInfo.branches + ).open(); if (selectedBranch != void 0) { await this.gitManager.checkout(selectedBranch); this.displayMessage(`Switched to ${selectedBranch}`); @@ -31493,11 +43283,26 @@ var ObsidianGit = class extends import_obsidian23.Plugin { return selectedBranch; } } + async switchRemoteBranch() { + var _a2; + if (!await this.isAllInitialized()) + return; + const selectedBranch = await this.selectRemoteBranch() || ""; + const [remote, branch2] = splitRemoteBranch(selectedBranch); + if (branch2 != void 0 && remote != void 0) { + await this.gitManager.checkout(branch2, remote); + this.displayMessage(`Switched to ${selectedBranch}`); + (_a2 = this.branchBar) == null ? void 0 : _a2.display(); + return selectedBranch; + } + } async createBranch() { var _a2; if (!await this.isAllInitialized()) return; - const newBranch = await new GeneralModal({ placeholder: "Create new branch" }).open(); + const newBranch = await new GeneralModal({ + placeholder: "Create new branch" + }).open(); if (newBranch != void 0) { await this.gitManager.createBranch(newBranch); this.displayMessage(`Created new branch ${newBranch}`); @@ -31512,11 +43317,20 @@ var ObsidianGit = class extends import_obsidian23.Plugin { const branchInfo = await this.gitManager.branchInfo(); if (branchInfo.current) branchInfo.branches.remove(branchInfo.current); - const branch2 = await new GeneralModal({ options: branchInfo.branches, placeholder: "Delete branch", onlySelection: true }).open(); + const branch2 = await new GeneralModal({ + options: branchInfo.branches, + placeholder: "Delete branch", + onlySelection: true + }).open(); if (branch2 != void 0) { let force = false; - if (!await this.gitManager.branchIsMerged(branch2)) { - const forceAnswer = await new GeneralModal({ options: ["YES", "NO"], placeholder: "This branch isn't merged into HEAD. Force delete?", onlySelection: true }).open(); + const merged = await this.gitManager.branchIsMerged(branch2); + if (!merged) { + const forceAnswer = await new GeneralModal({ + options: ["YES", "NO"], + placeholder: "This branch isn't merged into HEAD. Force delete?", + onlySelection: true + }).open(); if (forceAnswer !== "YES") { return; } @@ -31530,11 +43344,11 @@ var ObsidianGit = class extends import_obsidian23.Plugin { } async remotesAreSet() { if (!(await this.gitManager.branchInfo()).tracking) { - new import_obsidian23.Notice("No upstream branch is set. Please select one."); + new import_obsidian30.Notice("No upstream branch is set. Please select one."); const remoteBranch = await this.selectRemoteBranch(); if (remoteBranch == void 0) { this.displayError("Aborted. No upstream-branch is set!", 1e4); - this.setState(PluginState.idle); + this.setState(0 /* idle */); return false; } else { await this.gitManager.updateUpstreamBranch(remoteBranch); @@ -31554,8 +43368,10 @@ var ObsidianGit = class extends import_obsidian23.Plugin { if (!this.timeoutIDBackup && !this.onFileModifyEventRef) { const lastAutos = await this.loadLastAuto(); if (this.settings.autoSaveInterval > 0) { - const now2 = new Date(); - const diff2 = this.settings.autoSaveInterval - Math.round((now2.getTime() - lastAutos.backup.getTime()) / 1e3 / 60); + const now2 = /* @__PURE__ */ new Date(); + const diff2 = this.settings.autoSaveInterval - Math.round( + (now2.getTime() - lastAutos.backup.getTime()) / 1e3 / 60 + ); this.startAutoBackup(diff2 <= 0 ? 0 : diff2); } } @@ -31564,34 +43380,59 @@ var ObsidianGit = class extends import_obsidian23.Plugin { this.setUpAutoBackup(); const lastAutos = await this.loadLastAuto(); if (this.settings.differentIntervalCommitAndPush && this.settings.autoPushInterval > 0) { - const now2 = new Date(); - const diff2 = this.settings.autoPushInterval - Math.round((now2.getTime() - lastAutos.push.getTime()) / 1e3 / 60); + const now2 = /* @__PURE__ */ new Date(); + const diff2 = this.settings.autoPushInterval - Math.round( + (now2.getTime() - lastAutos.push.getTime()) / 1e3 / 60 + ); this.startAutoPush(diff2 <= 0 ? 0 : diff2); } if (this.settings.autoPullInterval > 0) { - const now2 = new Date(); - const diff2 = this.settings.autoPullInterval - Math.round((now2.getTime() - lastAutos.pull.getTime()) / 1e3 / 60); + const now2 = /* @__PURE__ */ new Date(); + const diff2 = this.settings.autoPullInterval - Math.round( + (now2.getTime() - lastAutos.pull.getTime()) / 1e3 / 60 + ); this.startAutoPull(diff2 <= 0 ? 0 : diff2); } } + async discardAll() { + await this.gitManager.discardAll({ + status: this.cachedStatus + }); + new import_obsidian30.Notice( + "All local changes have been discarded. New files remain untouched." + ); + } clearAutos() { this.clearAutoBackup(); this.clearAutoPush(); this.clearAutoPull(); } startAutoBackup(minutes) { - const time = (minutes != null ? minutes : this.settings.autoSaveInterval) * 6e4; + let time = (minutes != null ? minutes : this.settings.autoSaveInterval) * 6e4; if (this.settings.autoBackupAfterFileChange) { if (minutes === 0) { this.doAutoBackup(); } else { - this.onFileModifyEventRef = this.app.vault.on("modify", () => this.autoBackupDebouncer()); - this.autoBackupDebouncer = (0, import_obsidian23.debounce)(() => this.doAutoBackup(), time, true); + this.onFileModifyEventRef = this.app.vault.on( + "modify", + () => this.autoBackupDebouncer() + ); + this.autoBackupDebouncer = (0, import_obsidian30.debounce)( + () => this.doAutoBackup(), + time, + true + ); } } else { - this.timeoutIDBackup = window.setTimeout(() => this.doAutoBackup(), time); + if (time > 2147483647) + time = 2147483647; + this.timeoutIDBackup = window.setTimeout( + () => this.doAutoBackup(), + time + ); } } + // This is used for both auto backup and commit doAutoBackup() { this.promiseQueue.addTask(() => { if (this.settings.differentIntervalCommitAndPush) { @@ -31600,25 +43441,31 @@ var ObsidianGit = class extends import_obsidian23.Plugin { return this.createBackup(true); } }); - this.saveLastAuto(new Date(), "backup"); + this.saveLastAuto(/* @__PURE__ */ new Date(), "backup"); this.saveSettings(); this.startAutoBackup(); } startAutoPull(minutes) { + let time = (minutes != null ? minutes : this.settings.autoPullInterval) * 6e4; + if (time > 2147483647) + time = 2147483647; this.timeoutIDPull = window.setTimeout(() => { this.promiseQueue.addTask(() => this.pullChangesFromRemote()); - this.saveLastAuto(new Date(), "pull"); + this.saveLastAuto(/* @__PURE__ */ new Date(), "pull"); this.saveSettings(); this.startAutoPull(); - }, (minutes != null ? minutes : this.settings.autoPullInterval) * 6e4); + }, time); } startAutoPush(minutes) { + let time = (minutes != null ? minutes : this.settings.autoPushInterval) * 6e4; + if (time > 2147483647) + time = 2147483647; this.timeoutIDPush = window.setTimeout(() => { this.promiseQueue.addTask(() => this.push()); - this.saveLastAuto(new Date(), "push"); + this.saveLastAuto(/* @__PURE__ */ new Date(), "push"); this.saveSettings(); this.startAutoPush(); - }, (minutes != null ? minutes : this.settings.autoPushInterval) * 6e4); + }, time); } clearAutoBackup() { var _a2; @@ -31653,7 +43500,7 @@ var ObsidianGit = class extends import_obsidian23.Plugin { return false; } async handleConflict(conflicted) { - this.setState(PluginState.conflicted); + this.setState(6 /* conflicted */); this.localStorage.setConflict("true"); let lines; if (conflicted !== void 0) { @@ -31665,8 +43512,11 @@ var ObsidianGit = class extends import_obsidian23.Plugin { "", ...conflicted.map((e) => { const file = this.app.vault.getAbstractFileByPath(e); - if (file instanceof import_obsidian23.TFile) { - const link = this.app.metadataCache.fileToLinktext(file, "/"); + if (file instanceof import_obsidian30.TFile) { + const link = this.app.metadataCache.fileToLinktext( + file, + "/" + ); return `- [[${link}]]`; } else { return `- Not a file: ${e}`; @@ -31715,13 +43565,21 @@ I strongly recommend to use "Source mode" for viewing the conflicted files. For remotes = await this.gitManager.getRemotes(); } } - const nameModal = new GeneralModal({ options: remotes, placeholder: "Select or create a new remote by typing its name and selecting it" }); + const nameModal = new GeneralModal({ + options: remotes, + placeholder: "Select or create a new remote by typing its name and selecting it" + }); const remoteName = selectedRemote != null ? selectedRemote : await nameModal.open(); if (remoteName) { this.displayMessage("Fetching remote branches"); await this.gitManager.fetch(remoteName); - const branches = await this.gitManager.getRemoteBranches(remoteName); - const branchModal = new GeneralModal({ options: branches, placeholder: "Select or create a new remote branch by typing its name and selecting it" }); + const branches = await this.gitManager.getRemoteBranches( + remoteName + ); + const branchModal = new GeneralModal({ + options: branches, + placeholder: "Select or create a new remote branch by typing its name and selecting it" + }); return await branchModal.open(); } } @@ -31729,7 +43587,10 @@ I strongly recommend to use "Source mode" for viewing the conflicted files. For if (!await this.isAllInitialized()) return; const remotes = await this.gitManager.getRemotes(); - const nameModal = new GeneralModal({ options: remotes, placeholder: "Select a remote" }); + const nameModal = new GeneralModal({ + options: remotes, + placeholder: "Select a remote" + }); const remoteName = await nameModal.open(); if (remoteName) { this.gitManager.removeRemote(remoteName); @@ -31749,37 +43610,60 @@ I strongly recommend to use "Source mode" for viewing the conflicted files. For this.app.workspace.openLinkText(this.conflictOutputFile, "/", true); } } + // region: displaying / formatting messages displayMessage(message, timeout = 4 * 1e3) { var _a2; (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout); if (!this.settings.disablePopups) { - new import_obsidian23.Notice(message, 5 * 1e3); + new import_obsidian30.Notice(message, 5 * 1e3); } console.log(`git obsidian message: ${message}`); } displayError(message, timeout = 10 * 1e3) { var _a2; if (message instanceof Errors.UserCanceledError) { - new import_obsidian23.Notice("Aborted"); + new import_obsidian30.Notice("Aborted"); return; } message = message.toString(); - new import_obsidian23.Notice(message, timeout); + new import_obsidian30.Notice(message, timeout); console.log(`git obsidian error: ${message}`); (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout); } }; -/*! - Copyright (c) 2016 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames +/*! Bundled license information: + +ieee754/index.js: + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) + +buffer/index.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + +safe-buffer/index.js: + (*! safe-buffer. MIT License. Feross Aboukhadijeh *) + +crc-32/crc32.js: + (*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com *) + +js-sha256/src/sha256.js: + (** + * [js-sha256]{@link https://github.com/emn178/js-sha256} + * + * @version 0.9.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + *) + +feather-icons/dist/feather.js: + (*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames + *) */ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ -/*! safe-buffer. MIT License. Feross Aboukhadijeh */ diff --git a/.obsidian/plugins/obsidian-git/manifest.json b/.obsidian/plugins/obsidian-git/manifest.json index 6202677..a3162b5 100644 --- a/.obsidian/plugins/obsidian-git/manifest.json +++ b/.obsidian/plugins/obsidian-git/manifest.json @@ -5,5 +5,5 @@ "isDesktopOnly": false, "fundingUrl": "https://ko-fi.com/vinzent", "js": "main.js", - "version": "2.16.0" + "version": "2.20.3" } diff --git a/.obsidian/plugins/obsidian-git/styles.css b/.obsidian/plugins/obsidian-git/styles.css index e496c17..39cdb13 100644 --- a/.obsidian/plugins/obsidian-git/styles.css +++ b/.obsidian/plugins/obsidian-git/styles.css @@ -12,6 +12,10 @@ padding: 0; } +.workspace-leaf-content[data-type='git-history-view'] .view-content { + padding: 0; +} + .loading>svg { animation: 2s linear infinite loading; transform-origin: 50% 50%; @@ -42,21 +46,30 @@ .tooltip.mod-right { overflow-wrap: break-word; } - -.obsidian-git-shortcuts { - margin: 10px; -} - -.diff-err { - height: 100%; +.git-tools { + display: flex; + margin-left: auto; +} +.git-tools .type { + padding-left: var(--size-2-1); display: flex; - justify-content: center; - flex-direction: column; align-items: center; + justify-content: center; + width: 11px; } -.diff-err-sign { - font-size: 2em; +.git-tools .type[data-type="M"] { + color: orange; +} +.git-tools .type[data-type="D"] { + color: red; +} +.git-tools .buttons { + display: flex; +} +.git-tools .buttons > * { + padding: 0 0; + height: auto; } .workspace-leaf-content[data-type="diff-view"] .d2h-d-none { @@ -471,4 +484,24 @@ .workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag { border: 1px solid #3572b0; -} \ No newline at end of file +} + +/* ====================== Line Authoring Information ====================== */ + +.cm-gutterElement.obs-git-blame-gutter { + /* Add background color to spacing inbetween and around the gutter for better aesthetics */ + border-width: 0px 2px 0.2px 2px; + border-style: solid; + border-color: var(--background-secondary); + background-color: var(--background-secondary); +} + +.cm-gutterElement.obs-git-blame-gutter > div, .line-author-settings-preview { + /* delegate text color to settings */ + color: var(--obs-git-gutter-text); + font-family: monospace; + height: 100%; /* ensure, that age-based background color occupies entire parent */ + text-align: right; + padding: 0px 6px 0px 6px; + white-space: pre; /* Keep spaces and do not collapse them. */ +} diff --git a/.obsidian/plugins/obsidian-linter/data.json b/.obsidian/plugins/obsidian-linter/data.json index 1a89138..b79562a 100644 --- a/.obsidian/plugins/obsidian-linter/data.json +++ b/.obsidian/plugins/obsidian-linter/data.json @@ -1,225 +1,228 @@ { "ruleConfigs": { - "Escape YAML Special Characters": { - "Escapes colons with a space after them (: ), single quotes ('), and double quotes (\") in YAML.": false, - "Try to Escape Single Line Arrays": false + "escape-yaml-special-characters": { + "enabled": false, + "try-to-escape-single-line-arrays": false }, - "Force YAML Escape": { - "Escapes the values for the specified YAML keys.": false, - "Force YAML Escape on Keys": "" + "force-yaml-escape": { + "enabled": false, + "force-yaml-escape-keys": "" }, - "Format Tags in YAML": { - "Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid.": false + "format-tags-in-yaml": { + "enabled": false }, - "Format Yaml Array": { - "Allows for the formatting of regular yaml arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific yaml formats. Note that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array.": false, - "Format yaml aliases section": true, - "Format yaml tags section": true, - "Default yaml array section style": "single-line", - "Format yaml array sections": true, - "Force key values to be single-line arrays": "", - "Force key values to be multi-line arrays": "" + "format-yaml-array": { + "enabled": false, + "alias-key": true, + "tag-key": true, + "default-array-style": "single-line", + "default-array-keys": true, + "force-single-line-array-style": "", + "force-multi-line-array-style": "" }, - "Insert YAML attributes": { - "Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line.": false, - "Text to insert": "aliases: \ntags: " + "insert-yaml-attributes": { + "enabled": false, + "text-to-insert": "aliases: \ntags: " }, - "Move Tags to Yaml": { - "Move all tags to Yaml frontmatter of the document.": false, - "Body tag operation": "Nothing", - "Tags to ignore": "" + "move-tags-to-yaml": { + "enabled": false, + "how-to-handle-existing-tags": "Nothing", + "tags-to-ignore": "" }, - "Remove YAML Keys": { - "Removes the YAML keys specified": false, - "YAML Keys to Remove": "" + "remove-yaml-keys": { + "enabled": false, + "yaml-keys-to-remove": "" }, - "YAML Key Sort": { - "Sorts the YAML keys based on the order and priority specified. Note: may remove blank lines as well.": false, - "YAML Key Priority Sort Order": "", - "Priority Keys at Start of YAML": true, - "YAML Sort Order for Other Keys": "None" + "yaml-key-sort": { + "enabled": false, + "yaml-key-priority-sort-order": "", + "priority-keys-at-start-of-yaml": true, + "yaml-sort-order-for-other-keys": "None" }, - "YAML Timestamp": { - "Keep track of the date the file was last edited in the YAML front matter. Gets dates from file metadata.": false, - "Date Created": true, - "Date Created Key": "date created", - "Date Modified": true, - "Date Modified Key": "date modified", - "Format": "dddd, MMMM Do YYYY, h:mm:ss a" + "yaml-timestamp": { + "enabled": false, + "date-created": true, + "date-created-key": "date created", + "force-retention-of-create-value": false, + "date-modified": true, + "date-modified-key": "date modified", + "format": "dddd, MMMM Do YYYY, h:mm:ss a" }, - "YAML Title": { - "Inserts the title of the file into the YAML frontmatter. Gets the title from the first H1 or filename if there is no H1.": false, - "Title Key": "title" + "yaml-title": { + "enabled": false, + "title-key": "title", + "mode": "first-h1-or-filename-if-h1-missing" }, - "YAML Title Alias": { - "Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename.": false, - "Preserve existing aliases section style": true, - "Keep alias that matches the filename": false, - "Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes": true + "yaml-title-alias": { + "enabled": false, + "preserve-existing-alias-section-style": true, + "keep-alias-that-matches-the-filename": false, + "use-yaml-key-to-keep-track-of-old-filename-or-heading": true }, - "Capitalize Headings": { - "Headings should be formatted with capitalization": false, - "Style": "Title Case", - "Ignore Cased Words": true, - "Ignore Words": "macOS, iOS, iPhone, iPad, JavaScript, TypeScript, AppleScript, I", - "Lowercase Words": "a, an, the, aboard, about, abt., above, abreast, absent, across, after, against, along, aloft, alongside, amid, amidst, mid, midst, among, amongst, anti, apropos, around, round, as, aslant, astride, at, atop, ontop, bar, barring, before, B4, behind, below, beneath, neath, beside, besides, between, 'tween, beyond, but, by, chez, circa, c., ca., come, concerning, contra, counting, cum, despite, spite, down, during, effective, ere, except, excepting, excluding, failing, following, for, from, in, including, inside, into, less, like, minus, modulo, mod, near, nearer, nearest, next, notwithstanding, of, o', off, offshore, on, onto, opposite, out, outside, over, o'er, pace, past, pending, per, plus, post, pre, pro, qua, re, regarding, respecting, sans, save, saving, short, since, sub, than, through, thru, throughout, thruout, till, times, to, t', touching, toward, towards, under, underneath, unlike, until, unto, up, upon, versus, vs., v., via, vice, vis-à-vis, wanting, with, w/, w., c̄, within, w/i, without, 'thout, w/o, abroad, adrift, aft, afterward, afterwards, ahead, apart, ashore, aside, away, back, backward, backwards, beforehand, downhill, downstage, downstairs, downstream, downward, downwards, downwind, east, eastward, eastwards, forth, forward, forwards, heavenward, heavenwards, hence, henceforth, here, hereby, herein, hereof, hereto, herewith, home, homeward, homewards, indoors, inward, inwards, leftward, leftwards, north, northeast, northward, northwards, northwest, now, onward, onwards, outdoors, outward, outwards, overboard, overhead, overland, overseas, rightward, rightwards, seaward, seawards, skywards, skyward, south, southeast, southwards, southward, southwest, then, thence, thenceforth, there, thereby, therein, thereof, thereto, therewith, together, underfoot, underground, uphill, upstage, upstairs, upstream, upward, upwards, upwind, west, westward, westwards, when, whence, where, whereby, wherein, whereto, wherewith, although, because, considering, given, granted, if, lest, once, provided, providing, seeing, so, supposing, though, unless, whenever, whereas, wherever, while, whilst, ago, according to, as regards, counter to, instead of, owing to, pertaining to, at the behest of, at the expense of, at the hands of, at risk of, at the risk of, at variance with, by dint of, by means of, by virtue of, by way of, for the sake of, for sake of, for lack of, for want of, from want of, in accordance with, in addition to, in case of, in charge of, in compliance with, in conformity with, in contact with, in exchange for, in favor of, in front of, in lieu of, in light of, in the light of, in line with, in place of, in point of, in quest of, in relation to, in regard to, with regard to, in respect to, with respect to, in return for, in search of, in step with, in touch with, in terms of, in the name of, in view of, on account of, on behalf of, on grounds of, on the grounds of, on the part of, on top of, with a view to, with the exception of, à la, a la, as soon as, as well as, close to, due to, far from, in case, other than, prior to, pursuant to, regardless of, subsequent to, as long as, as much as, as far as, by the time, in as much as, inasmuch, in order to, in order that, even, provide that, if only, whether, whose, whoever, why, how, or not, whatever, what, both, and, or, not only, but also, either, neither, nor, just, rather, no sooner, such, that, yet, is, it" + "capitalize-headings": { + "enabled": false, + "style": "Title Case", + "ignore-case-words": true, + "ignore-words": "macOS, iOS, iPhone, iPad, JavaScript, TypeScript, AppleScript, I", + "lowercase-words": "a, an, the, aboard, about, abt., above, abreast, absent, across, after, against, along, aloft, alongside, amid, amidst, mid, midst, among, amongst, anti, apropos, around, round, as, aslant, astride, at, atop, ontop, bar, barring, before, B4, behind, below, beneath, neath, beside, besides, between, 'tween, beyond, but, by, chez, circa, c., ca., come, concerning, contra, counting, cum, despite, spite, down, during, effective, ere, except, excepting, excluding, failing, following, for, from, in, including, inside, into, less, like, minus, modulo, mod, near, nearer, nearest, next, notwithstanding, of, o', off, offshore, on, onto, opposite, out, outside, over, o'er, pace, past, pending, per, plus, post, pre, pro, qua, re, regarding, respecting, sans, save, saving, short, since, sub, than, through, thru, throughout, thruout, till, times, to, t', touching, toward, towards, under, underneath, unlike, until, unto, up, upon, versus, vs., v., via, vice, vis-à-vis, wanting, with, w/, w., c̄, within, w/i, without, 'thout, w/o, abroad, adrift, aft, afterward, afterwards, ahead, apart, ashore, aside, away, back, backward, backwards, beforehand, downhill, downstage, downstairs, downstream, downward, downwards, downwind, east, eastward, eastwards, forth, forward, forwards, heavenward, heavenwards, hence, henceforth, here, hereby, herein, hereof, hereto, herewith, home, homeward, homewards, indoors, inward, inwards, leftward, leftwards, north, northeast, northward, northwards, northwest, now, onward, onwards, outdoors, outward, outwards, overboard, overhead, overland, overseas, rightward, rightwards, seaward, seawards, skywards, skyward, south, southeast, southwards, southward, southwest, then, thence, thenceforth, there, thereby, therein, thereof, thereto, therewith, together, underfoot, underground, uphill, upstage, upstairs, upstream, upward, upwards, upwind, west, westward, westwards, when, whence, where, whereby, wherein, whereto, wherewith, although, because, considering, given, granted, if, lest, once, provided, providing, seeing, so, supposing, though, unless, whenever, whereas, wherever, while, whilst, ago, according to, as regards, counter to, instead of, owing to, pertaining to, at the behest of, at the expense of, at the hands of, at risk of, at the risk of, at variance with, by dint of, by means of, by virtue of, by way of, for the sake of, for sake of, for lack of, for want of, from want of, in accordance with, in addition to, in case of, in charge of, in compliance with, in conformity with, in contact with, in exchange for, in favor of, in front of, in lieu of, in light of, in the light of, in line with, in place of, in point of, in quest of, in relation to, in regard to, with regard to, in respect to, with respect to, in return for, in search of, in step with, in touch with, in terms of, in the name of, in view of, on account of, on behalf of, on grounds of, on the grounds of, on the part of, on top of, with a view to, with the exception of, à la, a la, as soon as, as well as, close to, due to, far from, in case, other than, prior to, pursuant to, regardless of, subsequent to, as long as, as much as, as far as, by the time, in as much as, inasmuch, in order to, in order that, even, provide that, if only, whether, whose, whoever, why, how, or not, whatever, what, both, and, or, not only, but also, either, neither, nor, just, rather, no sooner, such, that, yet, is, it" }, - "File Name Heading": { - "Inserts the file name as a H1 heading if no H1 heading exists.": false + "file-name-heading": { + "enabled": false }, - "Header Increment": { - "Heading levels should only increment by one level at a time": false, - "Start Header Increment at Heading Level 2": false + "header-increment": { + "enabled": false, + "start-at-h2": false }, - "Headings Start Line": { - "Headings that do not start a line will have their preceding whitespace removed to make sure they get recognized as headers.": false + "headings-start-line": { + "enabled": false }, - "Remove Trailing Punctuation in Heading": { - "Removes the specified punctuation from the end of headings making sure to ignore the semicolon at the end of [HTML entity references](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references).": false, - "Trailing Punctuation": ".,;:!。,;:!" + "remove-trailing-punctuation-in-heading": { + "enabled": false, + "punctuation-to-remove": ".,;:!。,;:!" }, - "Footnote after Punctuation": { - "Ensures that footnote references are placed after punctuation, not before.": false + "footnote-after-punctuation": { + "enabled": false }, - "Move Footnotes to the bottom": { - "Move all footnotes to the bottom of the document.": false + "move-footnotes-to-the-bottom": { + "enabled": false }, - "Re-Index Footnotes": { - "Re-indexes footnote keys and footnote, based on the order of occurrence (NOTE: This rule deliberately does *not* preserve the relation between key and footnote, to be able to re-index duplicate keys.)": false + "re-index-footnotes": { + "enabled": false }, - "Auto-correct Common Misspellings": { - "Uses a dictionary of common misspellings to automatically convert them to their proper spellings. See [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) for the full list of auto-corrected words.": false, - "Ignore Words": "" + "auto-correct-common-misspellings": { + "enabled": false, + "ignore-words": "" }, - "Convert Bullet List Markers": { - "Converts common bullet list marker symbols to markdown list markers.": false + "convert-bullet-list-markers": { + "enabled": false }, - "Emphasis Style": { - "Makes sure the emphasis style is consistent.": false, - "Style": "consistent" + "emphasis-style": { + "enabled": false, + "style": "consistent" }, - "No Bare URLs": { - "Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes.": false + "no-bare-urls": { + "enabled": false }, - "Ordered List Style": { - "Makes sure that ordered lists follow the style specified. Note that 2 spaces or 1 tab is considered to be an indentation level.": false, - "Number Style": "ascending", - "Ordered List Indicator End Style": "." + "ordered-list-style": { + "enabled": false, + "number-style": "ascending", + "list-end-style": "." }, - "Proper Ellipsis": { - "Replaces three consecutive dots with an ellipsis.": false + "proper-ellipsis": { + "enabled": false }, - "Remove Consecutive List Markers": { - "Removes consecutive list markers. Useful when copy-pasting list items.": false + "remove-consecutive-list-markers": { + "enabled": false }, - "Remove Empty List Markers": { - "Removes empty list markers, i.e. list items without content.": false + "remove-empty-list-markers": { + "enabled": false }, - "Remove Hyphenated Line Breaks": { - "Removes hyphenated line breaks. Useful when pasting text from textbooks.": false + "remove-hyphenated-line-breaks": { + "enabled": false }, - "Remove Multiple Spaces": { - "Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. ": false + "remove-multiple-spaces": { + "enabled": false }, - "Strong Style": { - "Makes sure the strong style is consistent.": false, - "Style": "consistent" + "strong-style": { + "enabled": false, + "style": "consistent" }, - "Two Spaces Between Lines with Content": { - "Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items": false + "two-spaces-between-lines-with-content": { + "enabled": false }, - "Unordered List Style": { - "Makes sure that unordered lists follow the style specified.": false, - "List item style": "consistent" + "unordered-list-style": { + "enabled": false, + "list-style": "consistent" }, - "Compact YAML": { - "Removes leading and trailing blank lines in the YAML front matter.": false, - "Inner New Lines": false + "compact-yaml": { + "enabled": false, + "inner-new-lines": false }, - "Consecutive blank lines": { - "There should be at most one consecutive blank line.": false + "consecutive-blank-lines": { + "enabled": false }, - "Convert Spaces to Tabs": { - "Converts leading spaces to tabs.": false, - "Tabsize": 4 + "convert-spaces-to-tabs": { + "enabled": false, + "tabsize": 4 }, - "Empty Line Around Blockquotes": { - "Ensures that there is an empty line around blockquotes unless they start or end a document. **Note that an empty line is either one less level of nesting for blockquotes or a newline character.**": false + "empty-line-around-blockquotes": { + "enabled": false }, - "Empty Line Around Code Fences": { - "Ensures that there is an empty line around code fences unless they start or end a document.": false + "empty-line-around-code-fences": { + "enabled": false }, - "Empty Line Around Math Blocks": { - "Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math.": false + "empty-line-around-math-blocks": { + "enabled": false }, - "Empty Line Around Tables": { - "Ensures that there is an empty line around github flavored tables unless they start or end a document.": false + "empty-line-around-tables": { + "enabled": false }, - "Heading blank lines": { - "All headings have a blank line both before and after (except where the heading is at the beginning or end of the document).": false, - "Bottom": true, - "Empty Line Between Yaml and Header": true + "heading-blank-lines": { + "enabled": false, + "bottom": true, + "empty-line-after-yaml": true }, - "Line Break at Document End": { - "Ensures that there is exactly one line break at the end of a document.": false + "line-break-at-document-end": { + "enabled": false }, - "Move Math Block Indicators to Their Own Line": { - "Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math.": false + "move-math-block-indicators-to-their-own-line": { + "enabled": false }, - "Paragraph blank lines": { - "All paragraphs should have exactly one blank line both before and after.": false + "paragraph-blank-lines": { + "enabled": false }, - "Remove Empty Lines Between List Markers and Checklists": { - "There should not be any empty lines between list markers and checklists.": false + "remove-empty-lines-between-list-markers-and-checklists": { + "enabled": false }, - "Remove link spacing": { - "Removes spacing around link text.": false + "remove-link-spacing": { + "enabled": false }, - "Remove Space around Characters": { - "Ensures that certain characters are not surrounded by whitespace (either single spaces or a tab). Note that this may causes issues with markdown format in some cases.": false, - "Include Fullwidth Forms": true, - "Include CJK Symbols and Punctuation": true, - "Include Dashes": true, - "Other symbols": "" + "remove-space-around-characters": { + "enabled": false, + "include-fullwidth-forms": true, + "include-cjk-symbols-and-punctuation": true, + "include-dashes": true, + "other-symbols": "" }, - "Space after list markers": { - "There should be a single space after list markers and checkboxes.": false + "space-after-list-markers": { + "enabled": false }, - "Space between Chinese Japanese or Korean and English or numbers": { - "Ensures that Chinese, Japanese, or Korean and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)": false + "space-between-chinese-japanese-or-korean-and-english-or-numbers": { + "enabled": false }, - "Trailing spaces": { - "Removes extra spaces after every line.": false, - "Two Space Linebreak": false + "trailing-spaces": { + "enabled": false, + "twp-space-line-break": false }, - "Add Blockquote Indentation on Paste": { - "Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting": false + "add-blockquote-indentation-on-paste": { + "enabled": false }, - "Prevent Double Checklist Indicator on Paste": { - "Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator": false + "prevent-double-checklist-indicator-on-paste": { + "enabled": false }, - "Prevent Double List Item Indicator on Paste": { - "Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator": false + "prevent-double-list-item-indicator-on-paste": { + "enabled": false }, - "Proper Ellipsis on Paste": { - "Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste": false + "proper-ellipsis-on-paste": { + "enabled": false }, - "Remove Hyphens on Paste": { - "Removes hyphens from the text to paste": false + "remove-hyphens-on-paste": { + "enabled": false }, - "Remove Leading or Trailing Whitespace on Paste": { - "Removes any leading non-tab whitespace and all trailing whitespace for the text to paste": false + "remove-leading-or-trailing-whitespace-on-paste": { + "enabled": false }, - "Remove Leftover Footnotes from Quote on Paste": { - "Removes any leftover footnote references for the text to paste": false + "remove-leftover-footnotes-from-quote-on-paste": { + "enabled": false }, - "Remove Multiple Blank Lines on Paste": { - "Condenses multiple blank lines down into one blank line for the text to paste": false + "remove-multiple-blank-lines-on-paste": { + "enabled": false } }, "lintOnSave": false, "recordLintOnSaveLogs": false, "displayChanged": true, + "settingsConvertedToConfigKeyValues": true, "foldersToIgnore": [], "linterLocale": "system-default", "logLevel": 4, diff --git a/.obsidian/plugins/obsidian-linter/main.js b/.obsidian/plugins/obsidian-linter/main.js index 23d2255..716e349 100644 --- a/.obsidian/plugins/obsidian-linter/main.js +++ b/.obsidian/plugins/obsidian-linter/main.js @@ -3,99 +3,121 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var $d=Object.create;var sn=Object.defineProperty;var Xo=Object.getOwnPropertyDescriptor;var Nd=Object.getOwnPropertyNames;var Hd=Object.getPrototypeOf,Yd=Object.prototype.hasOwnProperty;var el=(e,i)=>()=>(i||e((i={exports:{}}).exports,i),i.exports),il=(e,i)=>{for(var t in i)sn(e,t,{get:i[t],enumerable:!0})},tl=(e,i,t,n)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of Nd(i))!Yd.call(e,r)&&r!==t&&sn(e,r,{get:()=>i[r],enumerable:!(n=Xo(i,r))||n.enumerable});return e};var Hr=(e,i,t)=>(t=e!=null?$d(Hd(e)):{},tl(i||!e||!e.__esModule?sn(t,"default",{value:e,enumerable:!0}):t,e)),Kd=e=>tl(sn({},"__esModule",{value:!0}),e),T=(e,i,t,n)=>{for(var r=n>1?void 0:n?Xo(i,t):i,a=e.length-1,s;a>=0;a--)(s=e[a])&&(r=(n?s(i,t,r):s(r))||r);return n&&r&&sn(i,t,r),r};var nl=(e,i,t)=>{if(!i.has(e))throw TypeError("Cannot "+t)};var Ve=(e,i,t)=>(nl(e,i,"read from private field"),t?t.call(e):i.get(e)),At=(e,i,t)=>{if(i.has(e))throw TypeError("Cannot add the same private member more than once");i instanceof WeakSet?i.add(e):i.set(e,t)},rl=(e,i,t,n)=>(nl(e,i,"write to private field"),n?n.call(e,t):i.set(e,t),t);var sc=el((Uy,Rt)=>{var L=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},J=-1,ie=1,V=0;L.Diff=function(e,i){return[e,i]};L.prototype.diff_main=function(e,i,t,n){typeof n>"u"&&(this.Diff_Timeout<=0?n=Number.MAX_VALUE:n=new Date().getTime()+this.Diff_Timeout*1e3);var r=n;if(e==null||i==null)throw new Error("Null input. (diff_main)");if(e==i)return e?[new L.Diff(V,e)]:[];typeof t>"u"&&(t=!0);var a=t,s=this.diff_commonPrefix(e,i),o=e.substring(0,s);e=e.substring(s),i=i.substring(s),s=this.diff_commonSuffix(e,i);var l=e.substring(e.length-s);e=e.substring(0,e.length-s),i=i.substring(0,i.length-s);var d=this.diff_compute_(e,i,a,r);return o&&d.unshift(new L.Diff(V,o)),l&&d.push(new L.Diff(V,l)),this.diff_cleanupMerge(d),d};L.prototype.diff_compute_=function(e,i,t,n){var r;if(!e)return[new L.Diff(ie,i)];if(!i)return[new L.Diff(J,e)];var a=e.length>i.length?e:i,s=e.length>i.length?i:e,o=a.indexOf(s);if(o!=-1)return r=[new L.Diff(ie,a.substring(0,o)),new L.Diff(V,s),new L.Diff(ie,a.substring(o+s.length))],e.length>i.length&&(r[0][0]=r[2][0]=J),r;if(s.length==1)return[new L.Diff(J,e),new L.Diff(ie,i)];var l=this.diff_halfMatch_(e,i);if(l){var d=l[0],c=l[1],u=l[2],m=l[3],g=l[4],h=this.diff_main(d,u,t,n),f=this.diff_main(c,m,t,n);return h.concat([new L.Diff(V,g)],f)}return t&&e.length>100&&i.length>100?this.diff_lineMode_(e,i,n):this.diff_bisect_(e,i,n)};L.prototype.diff_lineMode_=function(e,i,t){var n=this.diff_linesToChars_(e,i);e=n.chars1,i=n.chars2;var r=n.lineArray,a=this.diff_main(e,i,!1,t);this.diff_charsToLines_(a,r),this.diff_cleanupSemantic(a),a.push(new L.Diff(V,""));for(var s=0,o=0,l=0,d="",c="";s=1&&l>=1){a.splice(s-o-l,o+l),s=s-o-l;for(var u=this.diff_main(d,c,!1,t),m=u.length-1;m>=0;m--)a.splice(s,0,u[m]);s=s+u.length}l=0,o=0,d="",c="";break}s++}return a.pop(),a};L.prototype.diff_bisect_=function(e,i,t){for(var n=e.length,r=i.length,a=Math.ceil((n+r)/2),s=a,o=2*a,l=new Array(o),d=new Array(o),c=0;ct);b++){for(var A=-b+g;A<=b-h;A+=2){var O=s+A,C;A==-b||A!=b&&l[O-1]n)h+=2;else if(M>r)g+=2;else if(m){var S=s+u-A;if(S>=0&&S=q)return this.diff_bisectSplit_(e,i,C,M,t)}}}for(var _=-b+f;_<=b-v;_+=2){var S=s+_,q;_==-b||_!=b&&d[S-1]n)v+=2;else if(D>r)f+=2;else if(!m){var O=s+u-_;if(O>=0&&O=q)return this.diff_bisectSplit_(e,i,C,M,t)}}}}return[new L.Diff(J,e),new L.Diff(ie,i)]};L.prototype.diff_bisectSplit_=function(e,i,t,n,r){var a=e.substring(0,t),s=i.substring(0,n),o=e.substring(t),l=i.substring(n),d=this.diff_main(a,s,!1,r),c=this.diff_main(o,l,!1,r);return d.concat(c)};L.prototype.diff_linesToChars_=function(e,i){var t=[],n={};t[0]="";function r(l){for(var d="",c=0,u=-1,m=t.length;un?e=e.substring(t-n):ti.length?e:i,n=e.length>i.length?i:e;if(t.length<4||n.length*2=h.length?[C,M,S,q,O]:null}var s=a(t,n,Math.ceil(t.length/4)),o=a(t,n,Math.ceil(t.length/2)),l;if(!s&&!o)return null;o?s?l=s[4].length>o[4].length?s:o:l=o:l=s;var d,c,u,m;e.length>i.length?(d=l[0],c=l[1],u=l[2],m=l[3]):(u=l[0],m=l[1],d=l[2],c=l[3]);var g=l[4];return[d,c,u,m,g]};L.prototype.diff_cleanupSemantic=function(e){for(var i=!1,t=[],n=0,r=null,a=0,s=0,o=0,l=0,d=0;a0?t[n-1]:-1,s=0,o=0,l=0,d=0,r=null,i=!0)),a++;for(i&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),a=1;a=g?(m>=c.length/2||m>=u.length/2)&&(e.splice(a,0,new L.Diff(V,u.substring(0,m))),e[a-1][1]=c.substring(0,c.length-m),e[a+1][1]=u.substring(m),a++):(g>=c.length/2||g>=u.length/2)&&(e.splice(a,0,new L.Diff(V,c.substring(0,g))),e[a-1][0]=ie,e[a-1][1]=u.substring(0,u.length-g),e[a+1][0]=J,e[a+1][1]=c.substring(g),a++),a++}a++}};L.prototype.diff_cleanupSemanticLossless=function(e){function i(g,h){if(!g||!h)return 6;var f=g.charAt(g.length-1),v=h.charAt(0),b=f.match(L.nonAlphaNumericRegex_),A=v.match(L.nonAlphaNumericRegex_),O=b&&f.match(L.whitespaceRegex_),C=A&&v.match(L.whitespaceRegex_),M=O&&f.match(L.linebreakRegex_),S=C&&v.match(L.linebreakRegex_),q=M&&g.match(L.blanklineEndRegex_),_=S&&h.match(L.blanklineStartRegex_);return q||_?5:M||S?4:b&&!O&&C?3:O||C?2:b||A?1:0}for(var t=1;t=u&&(u=m,l=n,d=r,c=a)}e[t-1][1]!=l&&(l?e[t-1][1]=l:(e.splice(t-1,1),t--),e[t][1]=d,c?e[t+1][1]=c:(e.splice(t+1,1),t--))}t++}};L.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;L.whitespaceRegex_=/\s/;L.linebreakRegex_=/[\r\n]/;L.blanklineEndRegex_=/\n\r?\n$/;L.blanklineStartRegex_=/^\r?\n\r?\n/;L.prototype.diff_cleanupEfficiency=function(e){for(var i=!1,t=[],n=0,r=null,a=0,s=!1,o=!1,l=!1,d=!1;a0?t[n-1]:-1,l=d=!1),i=!0)),a++;i&&this.diff_cleanupMerge(e)};L.prototype.diff_cleanupMerge=function(e){e.push(new L.Diff(V,""));for(var i=0,t=0,n=0,r="",a="",s;i1?(t!==0&&n!==0&&(s=this.diff_commonPrefix(a,r),s!==0&&(i-t-n>0&&e[i-t-n-1][0]==V?e[i-t-n-1][1]+=a.substring(0,s):(e.splice(0,0,new L.Diff(V,a.substring(0,s))),i++),a=a.substring(s),r=r.substring(s)),s=this.diff_commonSuffix(a,r),s!==0&&(e[i][1]=a.substring(a.length-s)+e[i][1],a=a.substring(0,a.length-s),r=r.substring(0,r.length-s))),i-=t+n,e.splice(i,t+n),r.length&&(e.splice(i,0,new L.Diff(J,r)),i++),a.length&&(e.splice(i,0,new L.Diff(ie,a)),i++),i++):i!==0&&e[i-1][0]==V?(e[i-1][1]+=e[i][1],e.splice(i,1)):i++,n=0,t=0,r="",a="";break}e[e.length-1][1]===""&&e.pop();var o=!1;for(i=1;ii));s++)r=t,a=n;return e.length!=s&&e[s][0]===J?a:a+(i-r)};L.prototype.diff_prettyHtml=function(e){for(var i=[],t=/&/g,n=//g,a=/\n/g,s=0;s");switch(o){case ie:i[s]=''+d+"";break;case J:i[s]=''+d+"";break;case V:i[s]=""+d+"";break}}return i.join("")};L.prototype.diff_text1=function(e){for(var i=[],t=0;tthis.Match_MaxBits)throw new Error("Pattern too long for this browser.");var n=this.match_alphabet_(i),r=this;function a(C,M){var S=C/i.length,q=Math.abs(t-M);return r.Match_Distance?S+q/r.Match_Distance:q?1:S}var s=this.Match_Threshold,o=e.indexOf(i,t);o!=-1&&(s=Math.min(a(0,o),s),o=e.lastIndexOf(i,t+i.length),o!=-1&&(s=Math.min(a(0,o),s)));var l=1<=h;b--){var A=n[e.charAt(b-1)];if(g===0?v[b]=(v[b+1]<<1|1)&A:v[b]=(v[b+1]<<1|1)&A|((m[b+1]|m[b])<<1|1)|m[b+1],v[b]&l){var O=a(g,b-1);if(O<=s)if(s=O,o=b-1,o>t)h=Math.max(1,2*t-o);else break}}if(a(g+1,t)>s)break;m=v}return o};L.prototype.match_alphabet_=function(e){for(var i={},t=0;t"u")n=e,r=this.diff_main(n,i,!0),r.length>2&&(this.diff_cleanupSemantic(r),this.diff_cleanupEfficiency(r));else if(e&&typeof e=="object"&&typeof i>"u"&&typeof t>"u")r=e,n=this.diff_text1(r);else if(typeof e=="string"&&i&&typeof i=="object"&&typeof t>"u")n=e,r=i;else if(typeof e=="string"&&typeof i=="string"&&t&&typeof t=="object")n=e,r=t;else throw new Error("Unknown call format to patch_make.");if(r.length===0)return[];for(var a=[],s=new L.patch_obj,o=0,l=0,d=0,c=n,u=n,m=0;m=2*this.Patch_Margin&&o&&(this.patch_addContext_(s,c),a.push(s),s=new L.patch_obj,o=0,c=u,l=d);break}g!==ie&&(l+=h.length),g!==J&&(d+=h.length)}return o&&(this.patch_addContext_(s,c),a.push(s)),a};L.prototype.patch_deepCopy=function(e){for(var i=[],t=0;tthis.Match_MaxBits?(l=this.match_main(i,o.substring(0,this.Match_MaxBits),s),l!=-1&&(d=this.match_main(i,o.substring(o.length-this.Match_MaxBits),s+o.length-this.Match_MaxBits),(d==-1||l>=d)&&(l=-1))):l=this.match_main(i,o,s),l==-1)r[a]=!1,n-=e[a].length2-e[a].length1;else{r[a]=!0,n=l-s;var c;if(d==-1?c=i.substring(l,l+o.length):c=i.substring(l,d+this.Match_MaxBits),o==c)i=i.substring(0,l)+this.diff_text2(e[a].diffs)+i.substring(l+o.length);else{var u=this.diff_main(o,c,!1);if(o.length>this.Match_MaxBits&&this.diff_levenshtein(u)/o.length>this.Patch_DeleteThreshold)r[a]=!1;else{this.diff_cleanupSemanticLossless(u);for(var m=0,g,h=0;ha[0][1].length){var s=i-a[0][1].length;a[0][1]=t.substring(a[0][1].length)+a[0][1],r.start1-=s,r.start2-=s,r.length1+=s,r.length2+=s}if(r=e[e.length-1],a=r.diffs,a.length==0||a[a.length-1][0]!=V)a.push(new L.Diff(V,t)),r.length1+=i,r.length2+=i;else if(i>a[a.length-1][1].length){var s=i-a[a.length-1][1].length;a[a.length-1][1]+=t.substring(0,s),r.length1+=s,r.length2+=s}return t};L.prototype.patch_splitMax=function(e){for(var i=this.Match_MaxBits,t=0;t2*i?(o.length1+=c.length,r+=c.length,l=!1,o.diffs.push(new L.Diff(d,c)),n.diffs.shift()):(c=c.substring(0,i-o.length1-this.Patch_Margin),o.length1+=c.length,r+=c.length,d===V?(o.length2+=c.length,a+=c.length):l=!1,o.diffs.push(new L.Diff(d,c)),c==n.diffs[0][1]?n.diffs.shift():n.diffs[0][1]=n.diffs[0][1].substring(c.length))}s=this.diff_text2(o.diffs),s=s.substring(s.length-this.Patch_Margin);var u=this.diff_text1(n.diffs).substring(0,this.Patch_Margin);u!==""&&(o.length1+=u.length,o.length2+=u.length,o.diffs.length!==0&&o.diffs[o.diffs.length-1][0]===V?o.diffs[o.diffs.length-1][1]+=u:o.diffs.push(new L.Diff(V,u))),l||e.splice(++t,0,o)}}};L.prototype.patch_toText=function(e){for(var i=[],t=0;t{(function(e,i){"use strict";typeof define=="function"&&define.amd?define(i):typeof ua=="object"&&ua.exports?ua.exports=i():e.log=i()})(oc,function(){"use strict";var e=function(){},i="undefined",t=typeof window!==i&&typeof window.navigator!==i&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function r(h,f){var v=h[f];if(typeof v.bind=="function")return v.bind(h);try{return Function.prototype.bind.call(v,h)}catch{return function(){return Function.prototype.apply.apply(v,[h,arguments])}}}function a(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function s(h){return h==="debug"&&(h="log"),typeof console===i?!1:h==="trace"&&t?a:console[h]!==void 0?r(console,h):console.log!==void 0?r(console,"log"):e}function o(h,f){for(var v=0;v=0&&_<=b.levels.SILENT){if(A=_,D!==!1&&C(_),o.call(b,_,h),typeof console===i&&_hs});module.exports=Kd(wy);var se=require("obsidian");function xl(e){return typeof e>"u"||e===null}function Wd(e){return typeof e=="object"&&e!==null}function Vd(e){return Array.isArray(e)?e:xl(e)?[]:[e]}function Ud(e,i){var t,n,r,a;if(i)for(a=Object.keys(i),t=0,n=a.length;t()=>(t||e((t={exports:{}}).exports,t),t.exports),Rl=(e,t)=>{for(var i in t)mn(e,i,{get:t[i],enumerable:!0})},Dl=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of vp(t))!wp.call(e,r)&&r!==i&&mn(e,r,{get:()=>t[r],enumerable:!(n=Fl(t,r))||n.enumerable});return e};var gn=(e,t,i)=>(i=e!=null?bp(xp(e)):{},Dl(t||!e||!e.__esModule?mn(i,"default",{value:e,enumerable:!0}):i,e)),kp=e=>Dl(mn({},"__esModule",{value:!0}),e),T=(e,t,i,n)=>{for(var r=n>1?void 0:n?Fl(t,i):t,a=e.length-1,s;a>=0;a--)(s=e[a])&&(r=(n?s(t,i,r):s(r))||r);return n&&r&&mn(t,i,r),r};var Nl=(e,t,i)=>{if(!t.has(e))throw TypeError("Cannot "+i)};var Ue=(e,t,i)=>(Nl(e,t,"read from private field"),i?i.call(e):t.get(e)),Bt=(e,t,i)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,i)},jl=(e,t,i,n)=>(Nl(e,t,"write to private field"),n?n.call(e,i):t.set(e,i),i);var sa=Jr((Lc,aa)=>{(function(e,t){"use strict";typeof define=="function"&&define.amd?define(t):typeof aa=="object"&&aa.exports?aa.exports=t():e.log=t()})(Lc,function(){"use strict";var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function r(h,v){var w=h[v];if(typeof w.bind=="function")return w.bind(h);try{return Function.prototype.bind.call(w,h)}catch{return function(){return Function.prototype.apply.apply(w,[h,arguments])}}}function a(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function s(h){return h==="debug"&&(h="log"),typeof console===t?!1:h==="trace"&&i?a:console[h]!==void 0?r(console,h):console.log!==void 0?r(console,"log"):e}function o(h,v){for(var w=0;w=0&&M<=z.levels.SILENT){if(S=M,D!==!1&&q(M),o.call(z,M,h),typeof console===t&&M{var C=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},ee=-1,te=1,W=0;C.Diff=function(e,t){return[e,t]};C.prototype.diff_main=function(e,t,i,n){typeof n>"u"&&(this.Diff_Timeout<=0?n=Number.MAX_VALUE:n=new Date().getTime()+this.Diff_Timeout*1e3);var r=n;if(e==null||t==null)throw new Error("Null input. (diff_main)");if(e==t)return e?[new C.Diff(W,e)]:[];typeof i>"u"&&(i=!0);var a=i,s=this.diff_commonPrefix(e,t),o=e.substring(0,s);e=e.substring(s),t=t.substring(s),s=this.diff_commonSuffix(e,t);var l=e.substring(e.length-s);e=e.substring(0,e.length-s),t=t.substring(0,t.length-s);var d=this.diff_compute_(e,t,a,r);return o&&d.unshift(new C.Diff(W,o)),l&&d.push(new C.Diff(W,l)),this.diff_cleanupMerge(d),d};C.prototype.diff_compute_=function(e,t,i,n){var r;if(!e)return[new C.Diff(te,t)];if(!t)return[new C.Diff(ee,e)];var a=e.length>t.length?e:t,s=e.length>t.length?t:e,o=a.indexOf(s);if(o!=-1)return r=[new C.Diff(te,a.substring(0,o)),new C.Diff(W,s),new C.Diff(te,a.substring(o+s.length))],e.length>t.length&&(r[0][0]=r[2][0]=ee),r;if(s.length==1)return[new C.Diff(ee,e),new C.Diff(te,t)];var l=this.diff_halfMatch_(e,t);if(l){var d=l[0],c=l[1],u=l[2],m=l[3],g=l[4],h=this.diff_main(d,u,i,n),v=this.diff_main(c,m,i,n);return h.concat([new C.Diff(W,g)],v)}return i&&e.length>100&&t.length>100?this.diff_lineMode_(e,t,n):this.diff_bisect_(e,t,n)};C.prototype.diff_lineMode_=function(e,t,i){var n=this.diff_linesToChars_(e,t);e=n.chars1,t=n.chars2;var r=n.lineArray,a=this.diff_main(e,t,!1,i);this.diff_charsToLines_(a,r),this.diff_cleanupSemantic(a),a.push(new C.Diff(W,""));for(var s=0,o=0,l=0,d="",c="";s=1&&l>=1){a.splice(s-o-l,o+l),s=s-o-l;for(var u=this.diff_main(d,c,!1,i),m=u.length-1;m>=0;m--)a.splice(s,0,u[m]);s=s+u.length}l=0,o=0,d="",c="";break}s++}return a.pop(),a};C.prototype.diff_bisect_=function(e,t,i){for(var n=e.length,r=t.length,a=Math.ceil((n+r)/2),s=a,o=2*a,l=new Array(o),d=new Array(o),c=0;ci);z++){for(var S=-z+g;S<=z-h;S+=2){var L=s+S,q;S==-z||S!=z&&l[L-1]n)h+=2;else if(_>r)g+=2;else if(m){var A=s+u-S;if(A>=0&&A=F)return this.diff_bisectSplit_(e,t,q,_,i)}}}for(var M=-z+v;M<=z-w;M+=2){var A=s+M,F;M==-z||M!=z&&d[A-1]n)w+=2;else if(D>r)v+=2;else if(!m){var L=s+u-M;if(L>=0&&L=F)return this.diff_bisectSplit_(e,t,q,_,i)}}}}return[new C.Diff(ee,e),new C.Diff(te,t)]};C.prototype.diff_bisectSplit_=function(e,t,i,n,r){var a=e.substring(0,i),s=t.substring(0,n),o=e.substring(i),l=t.substring(n),d=this.diff_main(a,s,!1,r),c=this.diff_main(o,l,!1,r);return d.concat(c)};C.prototype.diff_linesToChars_=function(e,t){var i=[],n={};i[0]="";function r(l){for(var d="",c=0,u=-1,m=i.length;un?e=e.substring(i-n):it.length?e:t,n=e.length>t.length?t:e;if(i.length<4||n.length*2=h.length?[q,_,A,F,L]:null}var s=a(i,n,Math.ceil(i.length/4)),o=a(i,n,Math.ceil(i.length/2)),l;if(!s&&!o)return null;o?s?l=s[4].length>o[4].length?s:o:l=o:l=s;var d,c,u,m;e.length>t.length?(d=l[0],c=l[1],u=l[2],m=l[3]):(u=l[0],m=l[1],d=l[2],c=l[3]);var g=l[4];return[d,c,u,m,g]};C.prototype.diff_cleanupSemantic=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=0,o=0,l=0,d=0;a0?i[n-1]:-1,s=0,o=0,l=0,d=0,r=null,t=!0)),a++;for(t&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),a=1;a=g?(m>=c.length/2||m>=u.length/2)&&(e.splice(a,0,new C.Diff(W,u.substring(0,m))),e[a-1][1]=c.substring(0,c.length-m),e[a+1][1]=u.substring(m),a++):(g>=c.length/2||g>=u.length/2)&&(e.splice(a,0,new C.Diff(W,c.substring(0,g))),e[a-1][0]=te,e[a-1][1]=u.substring(0,u.length-g),e[a+1][0]=ee,e[a+1][1]=c.substring(g),a++),a++}a++}};C.prototype.diff_cleanupSemanticLossless=function(e){function t(g,h){if(!g||!h)return 6;var v=g.charAt(g.length-1),w=h.charAt(0),z=v.match(C.nonAlphaNumericRegex_),S=w.match(C.nonAlphaNumericRegex_),L=z&&v.match(C.whitespaceRegex_),q=S&&w.match(C.whitespaceRegex_),_=L&&v.match(C.linebreakRegex_),A=q&&w.match(C.linebreakRegex_),F=_&&g.match(C.blanklineEndRegex_),M=A&&h.match(C.blanklineStartRegex_);return F||M?5:_||A?4:z&&!L&&q?3:L||q?2:z||S?1:0}for(var i=1;i=u&&(u=m,l=n,d=r,c=a)}e[i-1][1]!=l&&(l?e[i-1][1]=l:(e.splice(i-1,1),i--),e[i][1]=d,c?e[i+1][1]=c:(e.splice(i+1,1),i--))}i++}};C.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;C.whitespaceRegex_=/\s/;C.linebreakRegex_=/[\r\n]/;C.blanklineEndRegex_=/\n\r?\n$/;C.blanklineStartRegex_=/^\r?\n\r?\n/;C.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=!1,o=!1,l=!1,d=!1;a0?i[n-1]:-1,l=d=!1),t=!0)),a++;t&&this.diff_cleanupMerge(e)};C.prototype.diff_cleanupMerge=function(e){e.push(new C.Diff(W,""));for(var t=0,i=0,n=0,r="",a="",s;t1?(i!==0&&n!==0&&(s=this.diff_commonPrefix(a,r),s!==0&&(t-i-n>0&&e[t-i-n-1][0]==W?e[t-i-n-1][1]+=a.substring(0,s):(e.splice(0,0,new C.Diff(W,a.substring(0,s))),t++),a=a.substring(s),r=r.substring(s)),s=this.diff_commonSuffix(a,r),s!==0&&(e[t][1]=a.substring(a.length-s)+e[t][1],a=a.substring(0,a.length-s),r=r.substring(0,r.length-s))),t-=i+n,e.splice(t,i+n),r.length&&(e.splice(t,0,new C.Diff(ee,r)),t++),a.length&&(e.splice(t,0,new C.Diff(te,a)),t++),t++):t!==0&&e[t-1][0]==W?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,n=0,i=0,r="",a="";break}e[e.length-1][1]===""&&e.pop();var o=!1;for(t=1;tt));s++)r=i,a=n;return e.length!=s&&e[s][0]===ee?a:a+(t-r)};C.prototype.diff_prettyHtml=function(e){for(var t=[],i=/&/g,n=//g,a=/\n/g,s=0;s");switch(o){case te:t[s]=''+d+"";break;case ee:t[s]=''+d+"";break;case W:t[s]=""+d+"";break}}return t.join("")};C.prototype.diff_text1=function(e){for(var t=[],i=0;ithis.Match_MaxBits)throw new Error("Pattern too long for this browser.");var n=this.match_alphabet_(t),r=this;function a(q,_){var A=q/t.length,F=Math.abs(i-_);return r.Match_Distance?A+F/r.Match_Distance:F?1:A}var s=this.Match_Threshold,o=e.indexOf(t,i);o!=-1&&(s=Math.min(a(0,o),s),o=e.lastIndexOf(t,i+t.length),o!=-1&&(s=Math.min(a(0,o),s)));var l=1<=h;z--){var S=n[e.charAt(z-1)];if(g===0?w[z]=(w[z+1]<<1|1)&S:w[z]=(w[z+1]<<1|1)&S|((m[z+1]|m[z])<<1|1)|m[z+1],w[z]&l){var L=a(g,z-1);if(L<=s)if(s=L,o=z-1,o>i)h=Math.max(1,2*i-o);else break}}if(a(g+1,i)>s)break;m=w}return o};C.prototype.match_alphabet_=function(e){for(var t={},i=0;i"u")n=e,r=this.diff_main(n,t,!0),r.length>2&&(this.diff_cleanupSemantic(r),this.diff_cleanupEfficiency(r));else if(e&&typeof e=="object"&&typeof t>"u"&&typeof i>"u")r=e,n=this.diff_text1(r);else if(typeof e=="string"&&t&&typeof t=="object"&&typeof i>"u")n=e,r=t;else if(typeof e=="string"&&typeof t=="string"&&i&&typeof i=="object")n=e,r=i;else throw new Error("Unknown call format to patch_make.");if(r.length===0)return[];for(var a=[],s=new C.patch_obj,o=0,l=0,d=0,c=n,u=n,m=0;m=2*this.Patch_Margin&&o&&(this.patch_addContext_(s,c),a.push(s),s=new C.patch_obj,o=0,c=u,l=d);break}g!==te&&(l+=h.length),g!==ee&&(d+=h.length)}return o&&(this.patch_addContext_(s,c),a.push(s)),a};C.prototype.patch_deepCopy=function(e){for(var t=[],i=0;ithis.Match_MaxBits?(l=this.match_main(t,o.substring(0,this.Match_MaxBits),s),l!=-1&&(d=this.match_main(t,o.substring(o.length-this.Match_MaxBits),s+o.length-this.Match_MaxBits),(d==-1||l>=d)&&(l=-1))):l=this.match_main(t,o,s),l==-1)r[a]=!1,n-=e[a].length2-e[a].length1;else{r[a]=!0,n=l-s;var c;if(d==-1?c=t.substring(l,l+o.length):c=t.substring(l,d+this.Match_MaxBits),o==c)t=t.substring(0,l)+this.diff_text2(e[a].diffs)+t.substring(l+o.length);else{var u=this.diff_main(o,c,!1);if(o.length>this.Match_MaxBits&&this.diff_levenshtein(u)/o.length>this.Patch_DeleteThreshold)r[a]=!1;else{this.diff_cleanupSemanticLossless(u);for(var m=0,g,h=0;ha[0][1].length){var s=t-a[0][1].length;a[0][1]=i.substring(a[0][1].length)+a[0][1],r.start1-=s,r.start2-=s,r.length1+=s,r.length2+=s}if(r=e[e.length-1],a=r.diffs,a.length==0||a[a.length-1][0]!=W)a.push(new C.Diff(W,i)),r.length1+=t,r.length2+=t;else if(t>a[a.length-1][1].length){var s=t-a[a.length-1][1].length;a[a.length-1][1]+=i.substring(0,s),r.length1+=s,r.length2+=s}return i};C.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,i=0;i2*t?(o.length1+=c.length,r+=c.length,l=!1,o.diffs.push(new C.Diff(d,c)),n.diffs.shift()):(c=c.substring(0,t-o.length1-this.Patch_Margin),o.length1+=c.length,r+=c.length,d===W?(o.length2+=c.length,a+=c.length):l=!1,o.diffs.push(new C.Diff(d,c)),c==n.diffs[0][1]?n.diffs.shift():n.diffs[0][1]=n.diffs[0][1].substring(c.length))}s=this.diff_text2(o.diffs),s=s.substring(s.length-this.Patch_Margin);var u=this.diff_text1(n.diffs).substring(0,this.Patch_Margin);u!==""&&(o.length1+=u.length,o.length2+=u.length,o.diffs.length!==0&&o.diffs[o.diffs.length-1][0]===W?o.diffs[o.diffs.length-1][1]+=u:o.diffs.push(new C.Diff(W,u))),l||e.splice(++i,0,o)}}};C.prototype.patch_toText=function(e){for(var t=[],i=0;i{Ru.exports=zv;var vb=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],xb=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wb=["Su","Mo","Tu","We","Th","Fr","Sa"],fs=["January","February","March","April","May","June","July","August","September","October","November","December"],kb=["ACDT","ACST","ACWT","ADT","ACT","AEDT","AEST","AFT","AKDT","AKST","ALMT","AMT","AMST","ANAT","ANAST","AQTT","ART","AST","AWDT","AWST","AZOT","AZOST","AZT","AZST","BNT","BDT","BOT","BRT","BRST","BST","BTT","B","CAST","CAT","CCT","CDT","CEDT","CEST","CET","CHADT","CHAST","CHOT","CHOST","CHsT","CHUT","CIT","CKT","CLST","CLT","COT","CST","CVT","CWST","CXT","C","DAVT","DDUT","DST","EASST","EAST","EAT","ECT","EDT","EEDT","EEST","EET","EGT","EGST","EST","E","EIT","FET","FJT","FJST","FKST","FKT","FNT","F","GALT","GAMT","GET","GFT","GILT","GMT","GST","GYT","G","HADT","HAST","HKT","HOVT","HOVST","HST","ICT","IDT","IOT","IRDT","IRKT","IRKST","IRST","IST","JST","KGT","KOST","KRAT","KRAST","KST","KUYT","LHDT","LHST","LINT","L","MAGT","MAGST","MART","MAWT","MDT","MeST","MHT","MIST","MMT","MSD","MSK","MST","MUT","MVT","MYT","NCT","NDT","NFT","N","NOVT","NOVST","NPT","NRT","NST","NT","NUT","NZDT","NZST","OMST","OMSST","ORAT","O","PDT","PET","PETT","PETST","PGT","PHT","PHOT","PKT","PMDT","PMST","PONT","PST","PWT","PYT","PYST","P","QYZT","RET","ROTT","R","SAKT","SAMT","SAST","SBT","SCT","SGT","SRT","SLT","SLST","SRET","SST","SYOT","TAHT","TFT","TJT","TKT","TLT","TMT","TOT","TRUT","TVT","T","ULAT","ULAST","UTC","UYST","UYT","UZT","U","VET","VLAT","VLAST","VOLT","VUT","V","WAKT","WAT","WAST","WDT","WEDT","WEST","WET","WFT","WGT","WGST","WIB","WIT","WITA","WST","WT","YAKT","YAKST","YAP","YEK","YEKS"],ys=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],zb=new RegExp(vb.join("|"),"i"),Sb=new RegExp(xb.join("|"),"i"),Tb=new RegExp("\\b("+wb.join("|")+")\\b","i"),Ab=new RegExp(fs.join("|"),"i"),Eb=new RegExp(ys.join("|"),"i"),Lb=new RegExp("\\b("+kb.join("|")+")\\b","i"),Ob=/(\d+)(st|nd|rd|th)\b/i,Cb=/(\d{1,4})([/.-])(\d{1,2})[/.-](\d{1,4})/,qb=/((\+|-)(12:00|11:00|10:00|09:30|09:00|08:00|07:00|06:00|05:00|04:00|03:30|03:00|02:00|01:00|00:00|01:00|02:00|03:00|03:30|04:00|04:30|05:00|05:30|05:45|06:00|06:30|07:00|08:00|08:45|09:00|09:30|10:00|10:30|11:00|12:00|12:45|13:00|14:00))$/,Mb=/((\+|-)(1200|1100|1000|0930|0900|0800|0700|0600|0500|0400|0330|0300|0200|0100|0000|0100|0200|0300|0330|0400|0430|0500|0530|0545|0600|0630|0700|0800|0845|0900|0930|1000|1030|1100|1200|1245|1300|1400))$/,Jt="("+["AM?","PM?"].join("|")+")",Ib=new RegExp("0\\d\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+Jt,"i"),_b=new RegExp("0\\d\\:\\d{1,2}(\\s*)"+Jt,"i"),Bb=new RegExp("0\\d(\\s*)"+Jt,"i"),Fb=new RegExp("\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+Jt,"i"),Rb=new RegExp("\\d{1,2}\\:\\d{1,2}(\\s*)"+Jt,"i"),Db=new RegExp("\\d{1,2}(\\s*)"+Jt,"i"),Nb=new RegExp("\\d{1,2}"),jb=new RegExp(fs.join("|")+"-\\d{2}","i"),Pb=new RegExp(ys.join("|")+"-\\d{2}","i"),yl=new RegExp("(\\d{1,2})(\\D+)("+fs.join("|")+"|"+ys.join("|")+")(\\2)('?\\d{2,4})"),Kb=/\d{2}:\d{2}:\d{2}\.\d{3}/,$b=/\d{2}:\d{2}:\d{2}\.\d{2}/,Hb=/\d{2}:\d{2}:\d{2}\.\d{1}/,Yb=/T\d{2}:\d{2}:\d{2}/,Wb=/0\d:\d{2}:\d{2}/,Vb=/0\d:\d{2}/,Ub=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}/,Gb=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{3}/,Qb=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{2}/,Zb=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{1}/,Jb=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]/,Xb=/24:00:\d{2}/,ev=/24:00:\d{2}\.\d{3}/,iv=/24:00:\d{2}\.\d{2}/,tv=/24:00:\d{2}\.\d{1}/,nv=/24:00/,rv=/\d{4}/,av=/\d{2}/,sv=/'\d{2}/,Mu=/0\d/,Iu=/\d{1,2}/,ov=/0\d/,lv=/\d{1,2}/,cv=/^([1-9])\/([1-9]|0[1-9])$/,dv=/^([1-9])\/(1[012])$/,uv=/^(0[1-9]|[12][0-9]|3[01])\/([1-9])$/,pv=/^(0[1-9]|[12][0-9]|3[01])\/(1[012]|0[1-9])$/,mv=/^([1-9])(\D)([1-9][0-9])$/,gv=/^([1-9])(\D)([0][0-9])$/,hv=/^(0[1-9]|1[012])(\D)([1-9][0-9])$/,fv=/^(0[1-9]|1[012])(\D)([0][0-9])$/,bl=/([/][M]|[M][/]|[MM]|[MMMM])/,_u=/(D)/,vl=/(Y)/,Bu=/\d+\D.+$/,Fu=/\D+(\d+)($|Z)/,yv=/M\s*\d{1,2}\b.+$/,bv=/M\D+(0[1-9])\b.+$/,hs=/\d+\s+(H|h|k)/,vv=/\b(at)\b/i,xv=/\d{13}/,wv=/\d{10}/,kv={"/":"MDY",".":"DMY","-":"YMD"};function zv(e,t){var i=e.toString();if(t=t||{},t.preferredOrder=t.preferredOrder||kv,i=i.replace(xv,"x"),i=i.replace(wv,"X"),i=i.replace(vv,"[$1]"),i.match(yl)){let[,d,c,u,m,g]=i.match(yl),h=[];d.length===2&&d[0]==="0"||t.preferLongFormat?h.push("DD"):h.push("D"),h.push(c),u.match(fs)?h.push("MMMM"):u.match(ys)?h.push("MMM"):h.push(u),h.push(m),g[0]==="'"?h.push("'YY"):g.length===2?h.push("YY"):(g.length,h.push("YYYY"));var n=h.join("");i=i.replace(yl,n)}i=i.replace(zb,"dddd"),i=i.replace(Sb,"ddd"),i=i.replace(Tb,"dd"),i=i.replace(Ob,"Do"),i=i.replace(Ab,"MMMM"),i=i.replace(Eb,"MMM"),i=i.replace(Cb,Sv.bind(null,t)),i=i.replace(Lb,d=>"["+d+"]"),i=i.replace(qb,"Z"),i=i.replace(Mb,"ZZ"),i=i.replace(Kb,"HH:mm:ss.SSS"),i=i.replace($b,"HH:mm:ss.SS"),i=i.replace(Hb,"HH:mm:ss.S"),i=i.replace(Yb,"THH:mm:ss");function r(d){return function(c,u,m){return d+u+(m[0].toUpperCase()===m[0]?"A":"a")}}if(i=i.replace(Ib,r("hh:mm:ss")),i=i.replace(Fb,r("h:mm:ss")),i=i.replace(_b,r("hh:mm")),i=i.replace(Rb,r("h:mm")),i=i.replace(Bb,r("hh")),i=i.replace(Db,r("h")),i=i.replace(Wb,"HH:mm:ss"),i=i.replace(Gb,"H:mm:ss.SSS"),i=i.replace(ev,(t.preferLongFormat?"kk":"k")+":mm:ss.SSS"),i=i.replace(Qb,"H:mm:ss.SS"),i=i.replace(iv,(t.preferLongFormat?"kk":"k")+":mm:ss.SS"),i=i.replace(Zb,"H:mm:ss.S"),i=i.replace(tv,(t.preferLongFormat?"kk":"k")+":mm:ss.S"),i=i.replace(Ub,"H:mm:ss"),i=i.replace(Xb,(t.preferLongFormat?"kk":"k")+":mm:ss"),i=i.replace(Vb,"HH:mm"),i=i.replace(Jb,"H:mm"),i=i.replace(nv,(t.preferLongFormat?"kk":"k")+":mm"),i=i.replace(rv,"YYYY"),i=i.replace(sv,"'YY"),i=i.replace(jb,"MMMM-YY"),i=i.replace(Pb,"MMM-YY"),i=i.replace(cv,"D/M"),i=i.replace(dv,"D/MM"),i=i.replace(uv,"DD/M"),i=i.replace(pv,"DD/MM"),i=i.replace(mv,"M$2YY"),i=i.replace(hv,"MM$2YY"),i=i.replace(gv,"M$2DD"),i=i.replace(fv,"MM$2DD"),i.match(bl)){var a=/0\d\.\d{2}|\d{2}\.\d{2}/,s=/\d{1}\.\d{2}/;i=i.replace(a,"H.mm"),i=i.replace(s,"h.mm")}if(!i.match(bl)&&i.match(vl)&&(i=i.replace(ov,"MM")),!i.match(bl)&&i.match(vl)&&(i=i.replace(lv,t.preferLongFormat?"MM":"M")),i.match(bv)&&!i.match(hs)&&(i=i.replace(Mu,"DD")),i.match(yv)&&!i.match(hs)&&(i=i.replace(Iu,t.preferLongFormat?"DD":"D")),!i.match(_u)&&i.match(Bu)&&!i.match(hs)&&(i=i.replace(Mu,"DD")),!i.match(_u)&&i.match(Bu)&&!i.match(hs)&&(i=i.replace(Iu,t.preferLongFormat?"DD":"D")),i.match(vl)||(i=i.replace(av,"YY")),i.match(Fu)){var o=i.match(Fu)[1],l;o==="00"?l="HH":o==="24"?l=t.preferLongFormat?"kk":"k":o>12?l=t.preferLongFormat?"HH":"H":o[0]==="0"?l=t.preferLongFormat?"hh":"h":l=t.preferLongFormat?"hh":"k",i=i.replace(Nb,l)}return i.length<1&&(i=void 0),i}function Sv(e,t,i,n,r,a){var s,o=0,l=1,d=2,c=[i.length===1,r.length===1,a.length===1],u=[i[0]==="0",r[0]==="0",a[0]==="0"],m=i.length===4,g=r.length===4,h=a.length===4,v=typeof e.preferredOrder=="string"?e.preferredOrder:e.preferredOrder[n];i=parseInt(i,10),r=parseInt(r,10),a=parseInt(a,10),s=[i,r,a],v=v.toUpperCase();var w=function(S,L){c[S]!==c[L]&&!u[S]&&!u[L]&&(c[S]=!0,c[L]=!0)};if(i>31)return w(l,d),s[0]=m?"YYYY":"YY",s[1]=c[l]?"M":"MM",s[2]=c[d]?"D":"DD",s.join(n);if(i>12)return w(o,l),s[0]=c[o]?"D":"DD",s[1]=c[l]?"M":"MM",s[2]=h?"YYYY":"YY",s.join(n);if(r>12)return w(o,l),s[0]=c[o]?"M":"MM",s[1]=c[l]?"D":"DD",s[2]=h?"YYYY":"YY",s.join(n);if(a>31)return s[2]=h?"YYYY":"YY",v[0]==="M"&&i<13?(w(o,l),s[0]=c[o]?"M":"MM",s[1]=c[l]?"D":"DD",s.join(n)):(w(o,l),s[0]=c[o]?"D":"DD",s[1]=c[l]?"M":"MM",s.join(n));let z=[m,g,h];return w(v.indexOf("D"),v.indexOf("M")),s[v.indexOf("D")]=c[v.indexOf("D")]?"D":"DD",s[v.indexOf("M")]=c[v.indexOf("M")]?"M":"MM",s[v.indexOf("Y")]=z[v.indexOf("Y")]?"YYYY":"YY",s.join(n)}});var Pu=Jr((hM,ju)=>{var Nu=Du();ju.exports=Nu;typeof window<"u"&&window.moment&&(window.moment.parseFormat=Nu)});var Ox={};Rl(Ox,{default:()=>Rs});module.exports=kp(Ox);var oe=require("obsidian");function tc(e){return typeof e>"u"||e===null}function zp(e){return typeof e=="object"&&e!==null}function Sp(e){return Array.isArray(e)?e:tc(e)?[]:[e]}function Tp(e,t){var i,n,r,a;if(t)for(a=Object.keys(t),i=0,n=a.length;io&&(a=" ... ",i=n-o+a.length),t-n>o&&(s=" ...",t=n+o-s.length),{str:a+e.slice(i,t).replace(/\t/g,"\u2192")+s,pos:n-i+a.length}}function xs(e,i){return ye.repeat(" ",i-e.length)+e}function nu(e,i){if(i=Object.create(i||null),!e.buffer)return null;i.maxLength||(i.maxLength=79),typeof i.indent!="number"&&(i.indent=1),typeof i.linesBefore!="number"&&(i.linesBefore=3),typeof i.linesAfter!="number"&&(i.linesAfter=2);for(var t=/\r?\n|\r|\0/g,n=[0],r=[],a,s=-1;a=t.exec(e.buffer);)r.push(a.index),n.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var o="",l,d,c=Math.min(e.line+i.linesAfter,r.length).toString().length,u=i.maxLength-(i.indent+c+3);for(l=1;l<=i.linesBefore&&!(s-l<0);l++)d=vs(e.buffer,n[s-l],r[s-l],e.position-(n[s]-n[s-l]),u),o=ye.repeat(" ",i.indent)+xs((e.line-l+1).toString(),c)+" | "+d.str+` -`+o;for(d=vs(e.buffer,n[s],r[s],e.position,u),o+=ye.repeat(" ",i.indent)+xs((e.line+1).toString(),c)+" | "+d.str+` -`,o+=ye.repeat("-",i.indent+c+3+d.pos)+`^ -`,l=1;l<=i.linesAfter&&!(s+l>=r.length);l++)d=vs(e.buffer,n[s+l],r[s+l],e.position-(n[s]-n[s+l]),u),o+=ye.repeat(" ",i.indent)+xs((e.line+l+1).toString(),c)+" | "+d.str+` -`;return o.replace(/\n$/,"")}var ru=nu,au=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],su=["scalar","sequence","mapping"];function ou(e){var i={};return e!==null&&Object.keys(e).forEach(function(t){e[t].forEach(function(n){i[String(n)]=t})}),i}function lu(e,i){if(i=i||{},Object.keys(i).forEach(function(t){if(au.indexOf(t)===-1)throw new De('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}),this.options=i,this.tag=e,this.kind=i.kind||null,this.resolve=i.resolve||function(){return!0},this.construct=i.construct||function(t){return t},this.instanceOf=i.instanceOf||null,this.predicate=i.predicate||null,this.represent=i.represent||null,this.representName=i.representName||null,this.defaultStyle=i.defaultStyle||null,this.multi=i.multi||!1,this.styleAliases=ou(i.styleAliases||null),su.indexOf(this.kind)===-1)throw new De('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var Be=lu;function al(e,i){var t=[];return e[i].forEach(function(n){var r=t.length;t.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(r=s)}),t[r]=n}),t}function cu(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},i,t;function n(r){r.multi?(e.multi[r.kind].push(r),e.multi.fallback.push(r)):e[r.kind][r.tag]=e.fallback[r.tag]=r}for(i=0,t=arguments.length;i=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Lu=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function qu(e){return!(e===null||!Lu.test(e)||e[e.length-1]==="_")}function _u(e){var i,t;return i=e.replace(/_/g,"").toLowerCase(),t=i[0]==="-"?-1:1,"+-".indexOf(i[0])>=0&&(i=i.slice(1)),i===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:i===".nan"?NaN:t*parseFloat(i,10)}var Mu=/^[-+]?[0-9]+e/;function Bu(e,i){var t;if(isNaN(e))switch(i){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(i){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(i){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(ye.isNegativeZero(e))return"-0.0";return t=e.toString(10),Mu.test(t)?t.replace("e",".e"):t}function Iu(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||ye.isNegativeZero(e))}var Fu=new Be("tag:yaml.org,2002:float",{kind:"scalar",resolve:qu,construct:_u,predicate:Iu,represent:Bu,defaultStyle:"lowercase"}),Ru=gu.extend({implicit:[bu,ku,Cu,Fu]}),ju=Ru,kl=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),zl=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function Du(e){return e===null?!1:kl.exec(e)!==null||zl.exec(e)!==null}function Pu(e){var i,t,n,r,a,s,o,l=0,d=null,c,u,m;if(i=kl.exec(e),i===null&&(i=zl.exec(e)),i===null)throw new Error("Date resolve error");if(t=+i[1],n=+i[2]-1,r=+i[3],!i[4])return new Date(Date.UTC(t,n,r));if(a=+i[4],s=+i[5],o=+i[6],i[7]){for(l=i[7].slice(0,3);l.length<3;)l+="0";l=+l}return i[9]&&(c=+i[10],u=+(i[11]||0),d=(c*60+u)*6e4,i[9]==="-"&&(d=-d)),m=new Date(Date.UTC(t,n,r,a,s,o,l)),d&&m.setTime(m.getTime()-d),m}function $u(e){return e.toISOString()}var Nu=new Be("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:Du,construct:Pu,instanceOf:Date,represent:$u});function Hu(e){return e==="<<"||e===null}var Yu=new Be("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Hu}),Es=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function Ku(e){if(e===null)return!1;var i,t,n=0,r=e.length,a=Es;for(t=0;t64)){if(i<0)return!1;n+=6}return n%8===0}function Wu(e){var i,t,n=e.replace(/[\r\n=]/g,""),r=n.length,a=Es,s=0,o=[];for(i=0;i>16&255),o.push(s>>8&255),o.push(s&255)),s=s<<6|a.indexOf(n.charAt(i));return t=r%4*6,t===0?(o.push(s>>16&255),o.push(s>>8&255),o.push(s&255)):t===18?(o.push(s>>10&255),o.push(s>>2&255)):t===12&&o.push(s>>4&255),new Uint8Array(o)}function Vu(e){var i="",t=0,n,r,a=e.length,s=Es;for(n=0;n>18&63],i+=s[t>>12&63],i+=s[t>>6&63],i+=s[t&63]),t=(t<<8)+e[n];return r=a%3,r===0?(i+=s[t>>18&63],i+=s[t>>12&63],i+=s[t>>6&63],i+=s[t&63]):r===2?(i+=s[t>>10&63],i+=s[t>>4&63],i+=s[t<<2&63],i+=s[64]):r===1&&(i+=s[t>>2&63],i+=s[t<<4&63],i+=s[64],i+=s[64]),i}function Uu(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var Gu=new Be("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Ku,construct:Wu,predicate:Uu,represent:Vu}),Zu=Object.prototype.hasOwnProperty,Qu=Object.prototype.toString;function Ju(e){if(e===null)return!0;var i=[],t,n,r,a,s,o=e;for(t=0,n=o.length;t>10)+55296,(e-65536&1023)+56320)}var Cl=new Array(256),Ll=new Array(256);for(Ui=0;Ui<256;Ui++)Cl[Ui]=ll(Ui)?1:0,Ll[Ui]=ll(Ui);var Ui;function yp(e,i){this.input=e,this.filename=i.filename||null,this.schema=i.schema||Sl,this.onWarning=i.onWarning||null,this.legacy=i.legacy||!1,this.json=i.json||!1,this.listener=i.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function ql(e,i){var t={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return t.snippet=ru(t),new De(i,t)}function P(e,i){throw ql(e,i)}function Wr(e,i){e.onWarning&&e.onWarning.call(null,ql(e,i))}var cl={YAML:function(i,t,n){var r,a,s;i.version!==null&&P(i,"duplication of %YAML directive"),n.length!==1&&P(i,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),r===null&&P(i,"ill-formed argument of the YAML directive"),a=parseInt(r[1],10),s=parseInt(r[2],10),a!==1&&P(i,"unacceptable YAML version of the document"),i.version=n[0],i.checkLineBreaks=s<2,s!==1&&s!==2&&Wr(i,"unsupported YAML version of the document")},TAG:function(i,t,n){var r,a;n.length!==2&&P(i,"TAG directive accepts exactly two arguments"),r=n[0],a=n[1],El.test(r)||P(i,"ill-formed tag handle (first argument) of the TAG directive"),Ii.call(i.tagMap,r)&&P(i,'there is a previously declared suffix for "'+r+'" tag handle'),Al.test(a)||P(i,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{P(i,"tag prefix is malformed: "+a)}i.tagMap[r]=a}};function Bi(e,i,t,n){var r,a,s,o;if(i1&&(e.result+=ye.repeat(` -`,i-1))}function bp(e,i,t){var n,r,a,s,o,l,d,c,u=e.kind,m=e.result,g;if(g=e.input.charCodeAt(e.position),Ke(g)||Lt(g)||g===35||g===38||g===42||g===33||g===124||g===62||g===39||g===34||g===37||g===64||g===96||(g===63||g===45)&&(r=e.input.charCodeAt(e.position+1),Ke(r)||t&&Lt(r)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,o=!1;g!==0;){if(g===58){if(r=e.input.charCodeAt(e.position+1),Ke(r)||t&&Lt(r))break}else if(g===35){if(n=e.input.charCodeAt(e.position-1),Ke(n))break}else{if(e.position===e.lineStart&&Gr(e)||t&&Lt(g))break;if(gi(g))if(l=e.line,d=e.lineStart,c=e.lineIndent,ge(e,!1,-1),e.lineIndent>=i){o=!0,g=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=d,e.lineIndent=c;break}}o&&(Bi(e,a,s,!1),Cs(e,e.line-l),a=s=e.position,o=!1),Gi(g)||(s=e.position+1),g=e.input.charCodeAt(++e.position)}return Bi(e,a,s,!1),e.result?!0:(e.kind=u,e.result=m,!1)}function vp(e,i){var t,n,r;if(t=e.input.charCodeAt(e.position),t!==39)return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;(t=e.input.charCodeAt(e.position))!==0;)if(t===39)if(Bi(e,n,e.position,!0),t=e.input.charCodeAt(++e.position),t===39)n=e.position,e.position++,r=e.position;else return!0;else gi(t)?(Bi(e,n,r,!0),Cs(e,ge(e,!1,i)),n=r=e.position):e.position===e.lineStart&&Gr(e)?P(e,"unexpected end of the document within a single quoted scalar"):(e.position++,r=e.position);P(e,"unexpected end of the stream within a single quoted scalar")}function xp(e,i){var t,n,r,a,s,o;if(o=e.input.charCodeAt(e.position),o!==34)return!1;for(e.kind="scalar",e.result="",e.position++,t=n=e.position;(o=e.input.charCodeAt(e.position))!==0;){if(o===34)return Bi(e,t,e.position,!0),e.position++,!0;if(o===92){if(Bi(e,t,e.position,!0),o=e.input.charCodeAt(++e.position),gi(o))ge(e,!1,i);else if(o<256&&Cl[o])e.result+=Ll[o],e.position++;else if((s=gp(o))>0){for(r=s,a=0;r>0;r--)o=e.input.charCodeAt(++e.position),(s=mp(o))>=0?a=(a<<4)+s:P(e,"expected hexadecimal character");e.result+=fp(a),e.position++}else P(e,"unknown escape sequence");t=n=e.position}else gi(o)?(Bi(e,t,n,!0),Cs(e,ge(e,!1,i)),t=n=e.position):e.position===e.lineStart&&Gr(e)?P(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}P(e,"unexpected end of the stream within a double quoted scalar")}function wp(e,i){var t=!0,n,r,a,s=e.tag,o,l=e.anchor,d,c,u,m,g,h=Object.create(null),f,v,b,A;if(A=e.input.charCodeAt(e.position),A===91)c=93,g=!1,o=[];else if(A===123)c=125,g=!0,o={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=o),A=e.input.charCodeAt(++e.position);A!==0;){if(ge(e,!0,i),A=e.input.charCodeAt(e.position),A===c)return e.position++,e.tag=s,e.anchor=l,e.kind=g?"mapping":"sequence",e.result=o,!0;t?A===44&&P(e,"expected the node content, but found ','"):P(e,"missed comma between flow collection entries"),v=f=b=null,u=m=!1,A===63&&(d=e.input.charCodeAt(e.position+1),Ke(d)&&(u=m=!0,e.position++,ge(e,!0,i))),n=e.line,r=e.lineStart,a=e.position,_t(e,i,Yr,!1,!0),v=e.tag,f=e.result,ge(e,!0,i),A=e.input.charCodeAt(e.position),(m||e.line===n)&&A===58&&(u=!0,A=e.input.charCodeAt(++e.position),ge(e,!0,i),_t(e,i,Yr,!1,!0),b=e.result),g?qt(e,o,h,v,f,b,n,r,a):u?o.push(qt(e,null,h,v,f,b,n,r,a)):o.push(f),ge(e,!0,i),A=e.input.charCodeAt(e.position),A===44?(t=!0,A=e.input.charCodeAt(++e.position)):t=!1}P(e,"unexpected end of the stream within a flow collection")}function kp(e,i){var t,n,r=ws,a=!1,s=!1,o=i,l=0,d=!1,c,u;if(u=e.input.charCodeAt(e.position),u===124)n=!1;else if(u===62)n=!0;else return!1;for(e.kind="scalar",e.result="";u!==0;)if(u=e.input.charCodeAt(++e.position),u===43||u===45)ws===r?r=u===43?sl:cp:P(e,"repeat of a chomping mode identifier");else if((c=hp(u))>=0)c===0?P(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?P(e,"repeat of an indentation width identifier"):(o=i+c-1,s=!0);else break;if(Gi(u)){do u=e.input.charCodeAt(++e.position);while(Gi(u));if(u===35)do u=e.input.charCodeAt(++e.position);while(!gi(u)&&u!==0)}for(;u!==0;){for(As(e),e.lineIndent=0,u=e.input.charCodeAt(e.position);(!s||e.lineIndento&&(o=e.lineIndent),gi(u)){l++;continue}if(e.lineIndenti)&&l!==0)P(e,"bad indentation of a sequence entry");else if(e.lineIndenti)&&(v&&(s=e.line,o=e.lineStart,l=e.position),_t(e,i,Kr,!0,r)&&(v?h=e.result:f=e.result),v||(qt(e,u,m,g,h,f,s,o,l),g=h=f=null),ge(e,!0,-1),A=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>i)&&A!==0)P(e,"bad indentation of a mapping entry");else if(e.lineIndenti?l=1:e.lineIndent===i?l=0:e.lineIndenti?l=1:e.lineIndent===i?l=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),u=0,m=e.implicitTypes.length;u"),e.result!==null&&h.kind!==e.kind&&P(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+h.kind+'", not "'+e.kind+'"'),h.resolve(e.result,e.tag)?(e.result=h.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):P(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||c}function Ep(e){var i=e.position,t,n,r,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(ge(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),t=e.position;s!==0&&!Ke(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(t,e.position),r=[],n.length<1&&P(e,"directive name must not be less than one character in length");s!==0;){for(;Gi(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!gi(s));break}if(gi(s))break;for(t=e.position;s!==0&&!Ke(s);)s=e.input.charCodeAt(++e.position);r.push(e.input.slice(t,e.position))}s!==0&&As(e),Ii.call(cl,n)?cl[n](e,n,r):Wr(e,'unknown document directive "'+n+'"')}if(ge(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,ge(e,!0,-1)):a&&P(e,"directives end mark is expected"),_t(e,e.lineIndent-1,Kr,!1,!0),ge(e,!0,-1),e.checkLineBreaks&&up.test(e.input.slice(i,e.position))&&Wr(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Gr(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,ge(e,!0,-1));return}if(e.position"u"&&(t=i,i=null);var n=_l(e,t);if(typeof i!="function")return n;for(var r=0,a=n.length;ro&&(a=" ... ",t=n-o+a.length),i-n>o&&(s=" ...",i=n+o-s.length),{str:a+e.slice(t,i).replace(/\t/g,"\u2192")+s,pos:n-t+a.length}}function $s(e,t){return xe.repeat(" ",t-e.length)+e}function _p(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var i=/\r?\n|\r|\0/g,n=[0],r=[],a,s=-1;a=i.exec(e.buffer);)r.push(a.index),n.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var o="",l,d,c=Math.min(e.line+t.linesAfter,r.length).toString().length,u=t.maxLength-(t.indent+c+3);for(l=1;l<=t.linesBefore&&!(s-l<0);l++)d=Ks(e.buffer,n[s-l],r[s-l],e.position-(n[s]-n[s-l]),u),o=xe.repeat(" ",t.indent)+$s((e.line-l+1).toString(),c)+" | "+d.str+` +`+o;for(d=Ks(e.buffer,n[s],r[s],e.position,u),o+=xe.repeat(" ",t.indent)+$s((e.line+1).toString(),c)+" | "+d.str+` +`,o+=xe.repeat("-",t.indent+c+3+d.pos)+`^ +`,l=1;l<=t.linesAfter&&!(s+l>=r.length);l++)d=Ks(e.buffer,n[s+l],r[s+l],e.position-(n[s]-n[s+l]),u),o+=xe.repeat(" ",t.indent)+$s((e.line+l+1).toString(),c)+" | "+d.str+` +`;return o.replace(/\n$/,"")}var Bp=_p,Fp=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Rp=["scalar","sequence","mapping"];function Dp(e){var t={};return e!==null&&Object.keys(e).forEach(function(i){e[i].forEach(function(n){t[String(n)]=i})}),t}function Np(e,t){if(t=t||{},Object.keys(t).forEach(function(i){if(Fp.indexOf(i)===-1)throw new Ne('Unknown option "'+i+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(i){return i},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=Dp(t.styleAliases||null),Rp.indexOf(this.kind)===-1)throw new Ne('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var Ie=Np;function Pl(e,t){var i=[];return e[t].forEach(function(n){var r=i.length;i.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(r=s)}),i[r]=n}),i}function jp(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,i;function n(r){r.multi?(e.multi[r.kind].push(r),e.multi.fallback.push(r)):e[r.kind][r.tag]=e.fallback[r.tag]=r}for(t=0,i=arguments.length;t=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),om=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function lm(e){return!(e===null||!om.test(e)||e[e.length-1]==="_")}function cm(e){var t,i;return t=e.replace(/_/g,"").toLowerCase(),i=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?i===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:i*parseFloat(t,10)}var dm=/^[-+]?[0-9]+e/;function um(e,t){var i;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(xe.isNegativeZero(e))return"-0.0";return i=e.toString(10),dm.test(i)?i.replace("e",".e"):i}function pm(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||xe.isNegativeZero(e))}var mm=new Ie("tag:yaml.org,2002:float",{kind:"scalar",resolve:lm,construct:cm,predicate:pm,represent:um,defaultStyle:"lowercase"}),gm=Yp.extend({implicit:[Gp,Xp,sm,mm]}),hm=gm,rc=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),ac=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function fm(e){return e===null?!1:rc.exec(e)!==null||ac.exec(e)!==null}function ym(e){var t,i,n,r,a,s,o,l=0,d=null,c,u,m;if(t=rc.exec(e),t===null&&(t=ac.exec(e)),t===null)throw new Error("Date resolve error");if(i=+t[1],n=+t[2]-1,r=+t[3],!t[4])return new Date(Date.UTC(i,n,r));if(a=+t[4],s=+t[5],o=+t[6],t[7]){for(l=t[7].slice(0,3);l.length<3;)l+="0";l=+l}return t[9]&&(c=+t[10],u=+(t[11]||0),d=(c*60+u)*6e4,t[9]==="-"&&(d=-d)),m=new Date(Date.UTC(i,n,r,a,s,o,l)),d&&m.setTime(m.getTime()-d),m}function bm(e){return e.toISOString()}var vm=new Ie("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:fm,construct:ym,instanceOf:Date,represent:bm});function xm(e){return e==="<<"||e===null}var wm=new Ie("tag:yaml.org,2002:merge",{kind:"scalar",resolve:xm}),Qs=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function km(e){if(e===null)return!1;var t,i,n=0,r=e.length,a=Qs;for(i=0;i64)){if(t<0)return!1;n+=6}return n%8===0}function zm(e){var t,i,n=e.replace(/[\r\n=]/g,""),r=n.length,a=Qs,s=0,o=[];for(t=0;t>16&255),o.push(s>>8&255),o.push(s&255)),s=s<<6|a.indexOf(n.charAt(t));return i=r%4*6,i===0?(o.push(s>>16&255),o.push(s>>8&255),o.push(s&255)):i===18?(o.push(s>>10&255),o.push(s>>2&255)):i===12&&o.push(s>>4&255),new Uint8Array(o)}function Sm(e){var t="",i=0,n,r,a=e.length,s=Qs;for(n=0;n>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]),i=(i<<8)+e[n];return r=a%3,r===0?(t+=s[i>>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]):r===2?(t+=s[i>>10&63],t+=s[i>>4&63],t+=s[i<<2&63],t+=s[64]):r===1&&(t+=s[i>>2&63],t+=s[i<<4&63],t+=s[64],t+=s[64]),t}function Tm(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var Am=new Ie("tag:yaml.org,2002:binary",{kind:"scalar",resolve:km,construct:zm,predicate:Tm,represent:Sm}),Em=Object.prototype.hasOwnProperty,Lm=Object.prototype.toString;function Om(e){if(e===null)return!0;var t=[],i,n,r,a,s,o=e;for(i=0,n=o.length;i>10)+55296,(e-65536&1023)+56320)}var uc=new Array(256),pc=new Array(256);for(Ji=0;Ji<256;Ji++)uc[Ji]=Hl(Ji)?1:0,pc[Ji]=Hl(Ji);var Ji;function Um(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||sc,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function mc(e,t){var i={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return i.snippet=Bp(i),new Ne(t,i)}function P(e,t){throw mc(e,t)}function ia(e,t){e.onWarning&&e.onWarning.call(null,mc(e,t))}var Yl={YAML:function(t,i,n){var r,a,s;t.version!==null&&P(t,"duplication of %YAML directive"),n.length!==1&&P(t,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),r===null&&P(t,"ill-formed argument of the YAML directive"),a=parseInt(r[1],10),s=parseInt(r[2],10),a!==1&&P(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&ia(t,"unsupported YAML version of the document")},TAG:function(t,i,n){var r,a;n.length!==2&&P(t,"TAG directive accepts exactly two arguments"),r=n[0],a=n[1],cc.test(r)||P(t,"ill-formed tag handle (first argument) of the TAG directive"),Ri.call(t.tagMap,r)&&P(t,'there is a previously declared suffix for "'+r+'" tag handle'),dc.test(a)||P(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{P(t,"tag prefix is malformed: "+a)}t.tagMap[r]=a}};function Fi(e,t,i,n){var r,a,s,o;if(t1&&(e.result+=xe.repeat(` +`,t-1))}function Gm(e,t,i){var n,r,a,s,o,l,d,c,u=e.kind,m=e.result,g;if(g=e.input.charCodeAt(e.position),We(g)||Rt(g)||g===35||g===38||g===42||g===33||g===124||g===62||g===39||g===34||g===37||g===64||g===96||(g===63||g===45)&&(r=e.input.charCodeAt(e.position+1),We(r)||i&&Rt(r)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,o=!1;g!==0;){if(g===58){if(r=e.input.charCodeAt(e.position+1),We(r)||i&&Rt(r))break}else if(g===35){if(n=e.input.charCodeAt(e.position-1),We(n))break}else{if(e.position===e.lineStart&&ra(e)||i&&Rt(g))break;if(hi(g))if(l=e.line,d=e.lineStart,c=e.lineIndent,he(e,!1,-1),e.lineIndent>=t){o=!0,g=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=d,e.lineIndent=c;break}}o&&(Fi(e,a,s,!1),Js(e,e.line-l),a=s=e.position,o=!1),Xi(g)||(s=e.position+1),g=e.input.charCodeAt(++e.position)}return Fi(e,a,s,!1),e.result?!0:(e.kind=u,e.result=m,!1)}function Qm(e,t){var i,n,r;if(i=e.input.charCodeAt(e.position),i!==39)return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;(i=e.input.charCodeAt(e.position))!==0;)if(i===39)if(Fi(e,n,e.position,!0),i=e.input.charCodeAt(++e.position),i===39)n=e.position,e.position++,r=e.position;else return!0;else hi(i)?(Fi(e,n,r,!0),Js(e,he(e,!1,t)),n=r=e.position):e.position===e.lineStart&&ra(e)?P(e,"unexpected end of the document within a single quoted scalar"):(e.position++,r=e.position);P(e,"unexpected end of the stream within a single quoted scalar")}function Zm(e,t){var i,n,r,a,s,o;if(o=e.input.charCodeAt(e.position),o!==34)return!1;for(e.kind="scalar",e.result="",e.position++,i=n=e.position;(o=e.input.charCodeAt(e.position))!==0;){if(o===34)return Fi(e,i,e.position,!0),e.position++,!0;if(o===92){if(Fi(e,i,e.position,!0),o=e.input.charCodeAt(++e.position),hi(o))he(e,!1,t);else if(o<256&&uc[o])e.result+=pc[o],e.position++;else if((s=Ym(o))>0){for(r=s,a=0;r>0;r--)o=e.input.charCodeAt(++e.position),(s=Hm(o))>=0?a=(a<<4)+s:P(e,"expected hexadecimal character");e.result+=Vm(a),e.position++}else P(e,"unknown escape sequence");i=n=e.position}else hi(o)?(Fi(e,i,n,!0),Js(e,he(e,!1,t)),i=n=e.position):e.position===e.lineStart&&ra(e)?P(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}P(e,"unexpected end of the stream within a double quoted scalar")}function Jm(e,t){var i=!0,n,r,a,s=e.tag,o,l=e.anchor,d,c,u,m,g,h=Object.create(null),v,w,z,S;if(S=e.input.charCodeAt(e.position),S===91)c=93,g=!1,o=[];else if(S===123)c=125,g=!0,o={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=o),S=e.input.charCodeAt(++e.position);S!==0;){if(he(e,!0,t),S=e.input.charCodeAt(e.position),S===c)return e.position++,e.tag=s,e.anchor=l,e.kind=g?"mapping":"sequence",e.result=o,!0;i?S===44&&P(e,"expected the node content, but found ','"):P(e,"missed comma between flow collection entries"),w=v=z=null,u=m=!1,S===63&&(d=e.input.charCodeAt(e.position+1),We(d)&&(u=m=!0,e.position++,he(e,!0,t))),n=e.line,r=e.lineStart,a=e.position,Nt(e,t,Xr,!1,!0),w=e.tag,v=e.result,he(e,!0,t),S=e.input.charCodeAt(e.position),(m||e.line===n)&&S===58&&(u=!0,S=e.input.charCodeAt(++e.position),he(e,!0,t),Nt(e,t,Xr,!1,!0),z=e.result),g?Dt(e,o,h,w,v,z,n,r,a):u?o.push(Dt(e,null,h,w,v,z,n,r,a)):o.push(v),he(e,!0,t),S=e.input.charCodeAt(e.position),S===44?(i=!0,S=e.input.charCodeAt(++e.position)):i=!1}P(e,"unexpected end of the stream within a flow collection")}function Xm(e,t){var i,n,r=Hs,a=!1,s=!1,o=t,l=0,d=!1,c,u;if(u=e.input.charCodeAt(e.position),u===124)n=!1;else if(u===62)n=!0;else return!1;for(e.kind="scalar",e.result="";u!==0;)if(u=e.input.charCodeAt(++e.position),u===43||u===45)Hs===r?r=u===43?Kl:jm:P(e,"repeat of a chomping mode identifier");else if((c=Wm(u))>=0)c===0?P(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?P(e,"repeat of an indentation width identifier"):(o=t+c-1,s=!0);else break;if(Xi(u)){do u=e.input.charCodeAt(++e.position);while(Xi(u));if(u===35)do u=e.input.charCodeAt(++e.position);while(!hi(u)&&u!==0)}for(;u!==0;){for(Zs(e),e.lineIndent=0,u=e.input.charCodeAt(e.position);(!s||e.lineIndento&&(o=e.lineIndent),hi(u)){l++;continue}if(e.lineIndentt)&&l!==0)P(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(w&&(s=e.line,o=e.lineStart,l=e.position),Nt(e,t,ea,!0,r)&&(w?h=e.result:v=e.result),w||(Dt(e,u,m,g,h,v,s,o,l),g=h=v=null),he(e,!0,-1),S=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&S!==0)P(e,"bad indentation of a mapping entry");else if(e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),u=0,m=e.implicitTypes.length;u"),e.result!==null&&h.kind!==e.kind&&P(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+h.kind+'", not "'+e.kind+'"'),h.resolve(e.result,e.tag)?(e.result=h.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):P(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||c}function rg(e){var t=e.position,i,n,r,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(he(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),i=e.position;s!==0&&!We(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(i,e.position),r=[],n.length<1&&P(e,"directive name must not be less than one character in length");s!==0;){for(;Xi(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!hi(s));break}if(hi(s))break;for(i=e.position;s!==0&&!We(s);)s=e.input.charCodeAt(++e.position);r.push(e.input.slice(i,e.position))}s!==0&&Zs(e),Ri.call(Yl,n)?Yl[n](e,n,r):ia(e,'unknown document directive "'+n+'"')}if(he(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,he(e,!0,-1)):a&&P(e,"directives end mark is expected"),Nt(e,e.lineIndent-1,ea,!1,!0),he(e,!0,-1),e.checkLineBreaks&&Km.test(e.input.slice(t,e.position))&&ia(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&ra(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,he(e,!0,-1));return}if(e.position"u"&&(i=t,t=null);var n=gc(e,i);if(typeof t!="function")return n;for(var r=0,a=n.length;r=55296&&t<=56319&&i+1=56320&&n<=57343)?(t-55296)*1024+n-56320+65536:t}function $l(e){var i=/^\n* /;return i.test(e)}var Nl=1,Ts=2,Hl=3,Yl=4,Ct=5;function nm(e,i,t,n,r,a,s,o){var l,d=0,c=null,u=!1,m=!1,g=n!==-1,h=-1,f=im(on(e,0))&&tm(on(e,e.length-1));if(i||s)for(l=0;l=65536?l+=2:l++){if(d=on(e,l),!un(d))return Ct;f=f&&gl(d,c,o),c=d}else{for(l=0;l=65536?l+=2:l++){if(d=on(e,l),d===cn)u=!0,g&&(m=m||l-h-1>n&&e[h+1]!==" ",h=l);else if(!un(d))return Ct;f=f&&gl(d,c,o),c=d}m=m||g&&l-h-1>n&&e[h+1]!==" "}return!u&&!m?f&&!s&&!r(e)?Nl:a===dn?Ct:Ts:t>9&&$l(e)?Ct:s?a===dn?Ct:Ts:m?Yl:Hl}function rm(e,i,t,n,r){e.dump=function(){if(i.length===0)return e.quotingType===dn?'""':"''";if(!e.noCompatMode&&(Up.indexOf(i)!==-1||Gp.test(i)))return e.quotingType===dn?'"'+i+'"':"'"+i+"'";var a=e.indent*Math.max(1,t),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),o=n||e.flowLevel>-1&&t>=e.flowLevel;function l(d){return em(e,d)}switch(nm(i,o,e.indent,s,l,e.quotingType,e.forceQuotes&&!n,r)){case Nl:return i;case Ts:return"'"+i.replace(/'/g,"''")+"'";case Hl:return"|"+hl(i,e.indent)+fl(pl(i,a));case Yl:return">"+hl(i,e.indent)+fl(pl(am(i,s),a));case Ct:return'"'+sm(i)+'"';default:throw new De("impossible error: invalid scalar style")}}()}function hl(e,i){var t=$l(e)?String(i):"",n=e[e.length-1]===` +`&&(a+=i),a+=s;return a}function Vs(e,t){return` +`+xe.repeat(" ",e.indent*t)}function qg(e,t){var i,n,r;for(i=0,n=e.implicitTypes.length;i=55296&&i<=56319&&t+1=56320&&n<=57343)?(i-55296)*1024+n-56320+65536:i}function zc(e){var t=/^\n* /;return t.test(e)}var Sc=1,Us=2,Tc=3,Ac=4,Ft=5;function _g(e,t,i,n,r,a,s,o){var l,d=0,c=null,u=!1,m=!1,g=n!==-1,h=-1,v=Mg(hn(e,0))&&Ig(hn(e,e.length-1));if(t||s)for(l=0;l=65536?l+=2:l++){if(d=hn(e,l),!vn(d))return Ft;v=v&&Ql(d,c,o),c=d}else{for(l=0;l=65536?l+=2:l++){if(d=hn(e,l),d===yn)u=!0,g&&(m=m||l-h-1>n&&e[h+1]!==" ",h=l);else if(!vn(d))return Ft;v=v&&Ql(d,c,o),c=d}m=m||g&&l-h-1>n&&e[h+1]!==" "}return!u&&!m?v&&!s&&!r(e)?Sc:a===bn?Ft:Us:i>9&&zc(e)?Ft:s?a===bn?Ft:Us:m?Ac:Tc}function Bg(e,t,i,n,r){e.dump=function(){if(t.length===0)return e.quotingType===bn?'""':"''";if(!e.noCompatMode&&(Tg.indexOf(t)!==-1||Ag.test(t)))return e.quotingType===bn?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,i),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),o=n||e.flowLevel>-1&&i>=e.flowLevel;function l(d){return qg(e,d)}switch(_g(t,o,e.indent,s,l,e.quotingType,e.forceQuotes&&!n,r)){case Sc:return t;case Us:return"'"+t.replace(/'/g,"''")+"'";case Tc:return"|"+Zl(t,e.indent)+Jl(Ul(t,a));case Ac:return">"+Zl(t,e.indent)+Jl(Ul(Fg(t,s),a));case Ft:return'"'+Rg(t)+'"';default:throw new Ne("impossible error: invalid scalar style")}}()}function Zl(e,t){var i=zc(e)?String(t):"",n=e[e.length-1]===` `,r=n&&(e[e.length-2]===` `||e===` -`),a=r?"+":n?"":"-";return t+a+` -`}function fl(e){return e[e.length-1]===` -`?e.slice(0,-1):e}function am(e,i){for(var t=/(\n+)([^\n]*)/g,n=function(){var d=e.indexOf(` -`);return d=d!==-1?d:e.length,t.lastIndex=d,yl(e.slice(0,d),i)}(),r=e[0]===` -`||e[0]===" ",a,s;s=t.exec(e);){var o=s[1],l=s[2];a=l[0]===" ",n+=o+(!r&&!a&&l!==""?` -`:"")+yl(l,i),r=a}return n}function yl(e,i){if(e===""||e[0]===" ")return e;for(var t=/ [^ ]/g,n,r=0,a,s=0,o=0,l="";n=t.exec(e);)o=n.index,o-r>i&&(a=s>r?s:o,l+=` +`),a=r?"+":n?"":"-";return i+a+` +`}function Jl(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function Fg(e,t){for(var i=/(\n+)([^\n]*)/g,n=function(){var d=e.indexOf(` +`);return d=d!==-1?d:e.length,i.lastIndex=d,Xl(e.slice(0,d),t)}(),r=e[0]===` +`||e[0]===" ",a,s;s=i.exec(e);){var o=s[1],l=s[2];a=l[0]===" ",n+=o+(!r&&!a&&l!==""?` +`:"")+Xl(l,t),r=a}return n}function Xl(e,t){if(e===""||e[0]===" ")return e;for(var i=/ [^ ]/g,n,r=0,a,s=0,o=0,l="";n=i.exec(e);)o=n.index,o-r>t&&(a=s>r?s:o,l+=` `+e.slice(r,a),r=a+1),s=o;return l+=` -`,e.length-r>i&&s>r?l+=e.slice(r,s)+` -`+e.slice(s+1):l+=e.slice(r),l.slice(1)}function sm(e){for(var i="",t=0,n,r=0;r=65536?r+=2:r++)t=on(e,r),n=Ie[t],!n&&un(t)?(i+=e[r],t>=65536&&(i+=e[r+1])):i+=n||Qp(t);return i}function om(e,i,t){var n="",r=e.tag,a,s,o;for(a=0,s=t.length;a"u"&&Ai(e,i,null,!1,!1))&&(n!==""&&(n+=","+(e.condenseFlow?"":" ")),n+=e.dump);e.tag=r,e.dump="["+n+"]"}function bl(e,i,t,n){var r="",a=e.tag,s,o,l;for(s=0,o=t.length;s"u"&&Ai(e,i+1,null,!0,!0,!1,!0))&&((!n||r!=="")&&(r+=Ss(e,i)),e.dump&&cn===e.dump.charCodeAt(0)?r+="-":r+="- ",r+=e.dump);e.tag=a,e.dump=r||"[]"}function lm(e,i,t){var n="",r=e.tag,a=Object.keys(t),s,o,l,d,c;for(s=0,o=a.length;s1024&&(c+="? "),c+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Ai(e,i,d,!1,!1)&&(c+=e.dump,n+=c));e.tag=r,e.dump="{"+n+"}"}function cm(e,i,t,n){var r="",a=e.tag,s=Object.keys(t),o,l,d,c,u,m;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new De("sortKeys must be a boolean or a function");for(o=0,l=s.length;o1024,u&&(e.dump&&cn===e.dump.charCodeAt(0)?m+="?":m+="? "),m+=e.dump,u&&(m+=Ss(e,i)),Ai(e,i+1,c,!0,u)&&(e.dump&&cn===e.dump.charCodeAt(0)?m+=":":m+=": ",m+=e.dump,r+=m));e.tag=a,e.dump=r||"{}"}function vl(e,i,t){var n,r,a,s,o,l;for(r=t?e.explicitTypes:e.implicitTypes,a=0,s=r.length;a tag resolver accepts not "'+l+'" style');e.dump=n}return!0}return!1}function Ai(e,i,t,n,r,a,s){e.tag=null,e.dump=t,vl(e,t,!1)||vl(e,t,!0);var o=Bl.call(e.dump),l=n,d;n&&(n=e.flowLevel<0||e.flowLevel>i);var c=o==="[object Object]"||o==="[object Array]",u,m;if(c&&(u=e.duplicates.indexOf(t),m=u!==-1),(e.tag!==null&&e.tag!=="?"||m||e.indent!==2&&i>0)&&(r=!1),m&&e.usedDuplicates[u])e.dump="*ref_"+u;else{if(c&&m&&!e.usedDuplicates[u]&&(e.usedDuplicates[u]=!0),o==="[object Object]")n&&Object.keys(e.dump).length!==0?(cm(e,i,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(lm(e,i,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object Array]")n&&e.dump.length!==0?(e.noArrayIndent&&!s&&i>0?bl(e,i-1,e.dump,r):bl(e,i,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(om(e,i,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object String]")e.tag!=="?"&&rm(e,e.dump,i,a,l);else{if(o==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new De("unacceptable kind of an object to dump "+o)}e.tag!==null&&e.tag!=="?"&&(d=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?d="!"+d:d.slice(0,18)==="tag:yaml.org,2002:"?d="!!"+d.slice(18):d="!<"+d+">",e.dump=d+" "+e.dump)}return!0}function dm(e,i){var t=[],n=[],r,a;for(Os(e,t,n),r=0,a=n.length;r0){let l=s.split(` -`);a=l[l.length-1]??"",a=a.trimEnd();let d=0;for(;l.length-(2+d)>=0;){let c=l[l.length-(2+d)];if(!Fi(a,c)&&(!n||!Fi("",c,!0)))break;d++}l.splice(l.length-(1+d),d),l.length>1&&(n&&l[l.length-2].match(/^> ?.*$/m)||!n&&!Fi(a,l[l.length-2])?l.splice(l.length-1,0,a):Fi("",l[l.length-2],!0)||l.splice(l.length-1,0,"")),s=l.join(` -`)}let o=e.substring(t);if(o.length>0){let l=o.split(` -`),d=0;for(;d+11&&(n&&l[1].match(/^> ?.*$/m)||!n&&!Fi(a,l[1])?l.splice(1,0,a):n&&!Fi("",l[1])&&l.splice(1,0,"")),o=l.join(` -`)}return s+r+o}function Ul(e,i=0){let t=3735928559^i,n=1103547991^i;for(let r=0,a;r>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(t^t>>>13,3266489909),4294967296*(2097151&n)+(t>>>0)}function Gl(e){return e=e.replaceAll("\\b","\b"),e=e.replaceAll("\\f","\f"),e=e.replaceAll("\\n",` -`),e=e.replaceAll("\\r","\r"),e=e.replaceAll("\\t"," "),e=e.replaceAll("\\v","\v"),e}var Ri=/^([ \t]*)(#+)([ \t]+)([^\n\r]*?)([ \t]+#+)?$/gm,Zl=`^XXX\\.*? -(?:((?:.| -)*?) -)?XXX(?=\\s|$)$`,Se=/^---\n((?:(((?!---)(?:.|\n)*?)\n)?))---(?=\n|$)/,gm=Zl.replaceAll("X","`"),hm=Zl.replaceAll("X","~"),fm=`^(( |( {4})).* -)+`,_y=new RegExp(`${gm}|${hm}|${fm}`,"gm"),Qr=/(!?)\[{2}([^\][\n|]+)(\|([^\][\n|]+))?\]{2}/g,pn=/(!?)\[([^[]*)\](\(.*\))/g,mn=/(\s|^)(#[^\s#;.,>\\s*)*",_s=/^((((>[ ]?)*)|([ ]{0,3}))\[.*?\][ \t]*\n)?((((>[ ]?)*)|([ ]{0,3}))\S+.*?\|.*?\n([^\n]*?\|[^\n]*?\n)*?)?(((>[ ]?)*)|([ ]{0,3}))[|\-+:.][ \-+|:.]*?\|[ \-+|:.]*(?:\n?[^\n]*?\|([^\n]*?)*)+/gm,Bt=/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s`\]'"‘’“”>]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s`\]'"‘’“”>]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s`\]'"‘’“”>]{2,}|www\.[a-zA-Z0-9]+\.[^\s`\]'"‘’“”>]{2,})/gi,Jl=/]+)>((?:.(?!<\/a>))*.)<\/a>/g;function We(e){return e.replace(/\$/g,"$$$$")}function Zr(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Xl(e){let i=e.match(Qr);if(i){for(let t of i)if(t.includes("|")){let n=t.indexOf("|"),r=t.substring(0,n+1)+t.substring(n+1,t.length-2).trim()+"]]";e=e.replace(t,r)}}return e}function ec(e){let i=e.match(_s);if(i==null)return e;for(let t of i){let n=e.indexOf(t),r=n+t.length;if(t.trim().startsWith(">"))for(;e.charAt(n).trim()===""||e.charAt(n)===">";)n++;e=Qi(e,n,r)}return e}function Xr(e){let i=e.match(/^#\s+(.*)/m);if(i&&i[1]){let t=i[1];return t=t.replaceAll(Qr,(n,r,a,s)=>s!=null?s.replace("|",""):a),t.replaceAll(pn,"$2")}return""}function ic(e){return[...e.matchAll(mn)].map(i=>i[2])}var Bs="tag",hn="tags",fn=[Bs,hn],ym="alias",Is="aliases",yn=[ym,Is],bn="linter-yaml-title-alias";function hi(e){return e.match(Se)===null&&(e=`--- ---- -`+e),e}function Te(e,i){if(!e.match(Se))return e;let t=e.match(Se)[0],n=i(t);return e=e.replace(t,We(n)),e}function Fs(e){return new RegExp(`^([\\t ]*)${e}:[ \\t]*(\\S.*|(?:(?:\\n *- \\S.*)|((?:\\n *- *))*|(\\n([ \\t]+[^\\n]*))*)*)\\n`,"m")}function Oe(e,i,t){let n=`${i}:${t} -`,r=!1,a=e.replace(Fs(i),(s,o)=>(r=!0,o+n));return r||(a=`${e}${n}`),a}function Ee(e,i){let t=e.match(Fs(i));return t==null?null:t[2]}function Ji(e,i){return e.replace(Fs(i),"")}function Xe(e){if(e==null)return null;let i=Kl(e.replace(/\n(\t)+/g,` - `));return i??{}}function Ue(e,i,t,n){switch(typeof e=="string"&&(e=[e]),i){case"single-line":return e==null||e.length===0?" []":" "+Ms(e);case"multi-line":if(e==null||e.length===0)return` - - `;if(n)for(let r=0;rt!="");if(e.includes(` -`)){let i=e.split(/[ \t]*\n[ \t]*-[ \t]*/);return i.splice(0,1),i=i.filter(t=>t!=""),i==null||i.length===0?null:i}return e}function ia(e){if(e==null)return[];let i=[],t=[];Array.isArray(e)?t=e:e.includes(",")?t=ea(e,","):t=ea(e," ");for(let n of t)i.push(n.trim());return i}function ta(e){return typeof e=="string"?ea(e,","):e}function ea(e,i=","){if(e==""||e==null)return null;if(i.length>1)throw new Error("delimiter is only allowed to be a single character");let t=[],n="",r=0;for(;r1&&(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"'))}function yi(e,i,t=!1){if(na(e))return e;let n=e.includes("'"),r=e.includes('"'),a=e.includes(": ");return!n&&!r&&!a&&!t||n&&r?e:n?`"${e}"`:r?`'${e}'`:`${i}${e}${i}`}var Ft=require("obsidian");var tc=require("obsidian");function Ae(e,i){tc.MarkdownRenderer.renderMarkdown(e,i,"",null);let t=i.innerHTML.trim();t.startsWith("

")&&(t=t.substring(3)),t.endsWith("

")&&(t=t.substring(0,t.length-4)),i.innerHTML=t}function ei(e){e.addClass("linter-visually-hidden")}function bi(e){e.removeClass("linter-visually-hidden")}var Xi=class{constructor(i,t,n,r){this.name=i,this.description=t,this.defaultValue=n,this.searchInfo={name:i,description:t},r&&(this.ruleName=r)}setOption(i,t){t.ruleConfigs[this.ruleName][this.name]=i}},It=class extends Xi{display(t,n,r){let a=new Ft.Setting(t).addToggle(s=>{s.setValue(n.ruleConfigs[this.ruleName][this.name]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});Ae(this.name,a.nameEl),Ae(this.description,a.descEl),a.settingEl.style.border="none"}},vn=class extends Xi{display(t,n,r){let a=new Ft.Setting(t).addText(s=>{s.setValue(n.ruleConfigs[this.ruleName][this.name]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});Ae(this.name,a.nameEl),Ae(this.description,a.descEl),a.settingEl.style.border="none"}},ra=class extends Xi{display(t,n,r){let a=new Ft.Setting(t).addTextArea(s=>{s.setValue(n.ruleConfigs[this.ruleName][this.name]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});Ae(this.name,a.nameEl),Ae(this.description,a.descEl),a.settingEl.style.border="none"}},aa=class extends Xi{display(t,n,r){let a=new Ft.Setting(t).addMomentFormat(s=>{s.setValue(n.ruleConfigs[this.ruleName][this.name]),s.setPlaceholder("dddd, MMMM Do YYYY, h:mm:ss a"),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});Ae(this.name,a.nameEl),Ae(this.description,a.descEl),a.settingEl.style.border="none"}},sa=class{constructor(i,t){this.value=i,this.description=t}},oa=class extends Xi{constructor(t,n,r,a,s){super(t,n,r,s);this.options=a,this.searchInfo.options=a}display(t,n,r){let a=new Ft.Setting(t).addDropdown(s=>{for(let o of this.options)s.addOption(o.value,o.value);s.setValue(n.ruleConfigs[this.ruleName][this.name]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});Ae(this.name,a.nameEl),Ae(this.description,a.descEl),a.settingEl.style.border="none"}};var ji=class extends Error{constructor(i,t){super(i),this.cause=t??null,this.stack=t.stack??null,Object.setPrototypeOf(this,ji.prototype)}};var j=(s=>(s.YAML="YAML",s.HEADING="Heading",s.FOOTNOTE="Footnote",s.CONTENT="Content",s.SPACING="Spacing",s.PASTE="Paste",s))(j||{}),la=class{constructor(i,t,n,r,a,s=[],o=!1){this.name=i,this.description=t,this.type=n,this.apply=r,this.examples=a,s.unshift(new It(this.description,"",!1));for(let l of s)l.ruleName=i;this.options=s,this.hasSpecialExecutionOrder=o}alias(){return this.name.replace(/ /g,"-").toLowerCase()}getDefaultOptions(){let i={};for(let t of this.options)i[t.name]=t.defaultValue;return i}getOptions(i){return i.ruleConfigs[this.name]}getURL(){return"https://github.com/platers/obsidian-linter/blob/master/docs/rules.md"+"#"+this.alias()}enabledOptionName(){return this.options[0].name}},ca=class{constructor(i,t,n,r={}){this.description=i,this.options=r,this.before=t,this.after=n}},nc=Object.values(j);function rc(e){let i=e.match(Se);if(!i)return[];let t=i[1],n=Ee(t,"disabled rules");if(n==null)return[];let r=n.includes(` -`)?`disabled rules: -`:"disabled rules: ";r+=n;let s=Xe(r)["disabled rules"];return s?(typeof s=="string"&&(s=[s]),s.includes("all")?et.map(o=>o.alias()):s):[]}var et=[],bm={},xn=new Map;function ac(e){et.push(e),et.sort((i,t)=>nc.indexOf(i.type)-nc.indexOf(t.type)||i.name.localeCompare(t.name)),bm[e.alias()]=e,xn.has(e.type)?xn.get(e.type).push(e):xn.set(e.type,[e])}function da(e,i){let t;throw e instanceof Wl?(t=e.toString(),t=`error in the yaml: ${t.substring(t.indexOf(":")+1)}`):t=`unknown error: ${e.message}`,new ji(`"${i}" encountered an ${t}`,e)}var Xt=Hr(sc());function vm(e){for(var i=[],t=1;t":""))+")"})),m;function m(){let g=[],h,f,v;if((!i||r(o,l,d[d.length-1]||null))&&(g=Om(t(o,d)),g[0]===cc))return g;if(o.children&&g[0]!==Tm)for(f=(n?o.children.length:-1)+a,v=d.concat(o);f>-1&&fr?0:r+i:i=i>r?r:i,t=t>0?t:0,n.length<1e4)s=Array.from(n),s.unshift(i,t),[].splice.apply(e,s);else for(t&&[].splice.apply(e,[i,t]);a0?(_e(e,e.length,0,i),e):i}var pc=/[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/;var Ge=Di(/[A-Za-z]/),Tn=Di(/\d/),mc=Di(/[\dA-Fa-f]/),$e=Di(/[\dA-Za-z]/),gc=Di(/[!-/:-@[-`{-~]/),Ps=Di(/[#-'*+\--9=?A-Z^-~]/);function On(e){return e!==null&&(e<32||e===127)}function ae(e){return e!==null&&(e<0||e===32)}function F(e){return e!==null&&e<-2}function G(e){return e===-2||e===-1||e===32}var hc=Di(/\s/),fc=Di(pc);function Di(e){return i;function i(t){return t!==null&&e.test(String.fromCharCode(t))}}function $s(e){if(e===null||ae(e)||hc(e))return 1;if(fc(e))return 2}function Pt(e,i,t){let n=[],r=-1;for(;++r1&&e[t][1].end.offset-e[t][1].start.offset>1?2:1;let u=Object.assign({},e[n][1].end),m=Object.assign({},e[t][1].start);yc(u,-l),yc(m,l),s={type:l>1?"strongSequence":"emphasisSequence",start:u,end:Object.assign({},e[n][1].end)},o={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[t][1].start),end:m},a={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[t][1].start)},r={type:l>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},o.end)},e[n][1].end=Object.assign({},s.start),e[t][1].start=Object.assign({},o.end),d=[],e[n][1].end.offset-e[n][1].start.offset&&(d=Pe(d,[["enter",e[n][1],i],["exit",e[n][1],i]])),d=Pe(d,[["enter",r,i],["enter",s,i],["exit",s,i],["enter",a,i]]),d=Pe(d,Pt(i.parser.constructs.insideSpan.null,e.slice(n+1,t),i)),d=Pe(d,[["exit",a,i],["enter",o,i],["exit",o,i],["exit",r,i]]),e[t][1].end.offset-e[t][1].start.offset?(c=2,d=Pe(d,[["enter",e[t][1],i],["exit",e[t][1],i]])):c=0,_e(e,n-1,t-n+3,d),t=n+d.length-c-2;break}}for(t=-1;++t=4?s(d):t(d)}function s(d){return d===null?l(d):F(d)?e.attempt(Rm,s,l)(d):(e.enter("codeFlowValue"),o(d))}function o(d){return d===null||F(d)?(e.exit("codeFlowValue"),s(d)):(e.consume(d),o)}function l(d){return e.exit("codeIndented"),i(d)}}function Dm(e,i,t){let n=this;return r;function r(s){return n.parser.lazy[n.now().line]?t(s):F(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),r):N(e,a,"linePrefix",4+1)(s)}function a(s){let o=n.events[n.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?i(s):F(s)?r(s):t(s)}}var Hs={name:"codeText",tokenize:Nm,resolve:Pm,previous:$m};function Pm(e){let i=e.length-4,t=3,n,r;if((e[t][1].type==="lineEnding"||e[t][1].type==="space")&&(e[i][1].type==="lineEnding"||e[i][1].type==="space")){for(n=t;++n=4?i(s):e.interrupt(n.parser.constructs.flow,t,i)(s)}}function za(e,i,t,n,r,a,s,o,l){let d=l||Number.POSITIVE_INFINITY,c=0;return u;function u(b){return b===60?(e.enter(n),e.enter(r),e.enter(a),e.consume(b),e.exit(a),m):b===null||b===41||On(b)?t(b):(e.enter(n),e.enter(s),e.enter(o),e.enter("chunkString",{contentType:"string"}),f(b))}function m(b){return b===62?(e.enter(a),e.consume(b),e.exit(a),e.exit(r),e.exit(n),i):(e.enter(o),e.enter("chunkString",{contentType:"string"}),g(b))}function g(b){return b===62?(e.exit("chunkString"),e.exit(o),m(b)):b===null||b===60||F(b)?t(b):(e.consume(b),b===92?h:g)}function h(b){return b===60||b===62||b===92?(e.consume(b),g):g(b)}function f(b){return b===40?++c>d?t(b):(e.consume(b),f):b===41?c--?(e.consume(b),f):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),i(b)):b===null||ae(b)?c?t(b):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),i(b)):On(b)?t(b):(e.consume(b),b===92?v:f)}function v(b){return b===40||b===41||b===92?(e.consume(b),f):f(b)}}function Sa(e,i,t,n,r,a){let s=this,o=0,l;return d;function d(g){return e.enter(n),e.enter(r),e.consume(g),e.exit(r),e.enter(a),c}function c(g){return g===null||g===91||g===93&&!l||g===94&&!o&&"_hiddenFootnoteSupport"in s.parser.constructs||o>999?t(g):g===93?(e.exit(a),e.enter(r),e.consume(g),e.exit(r),e.exit(n),i):F(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),u(g))}function u(g){return g===null||g===91||g===93||F(g)||o++>999?(e.exit("chunkString"),c(g)):(e.consume(g),l=l||!G(g),g===92?m:u)}function m(g){return g===91||g===92||g===93?(e.consume(g),o++,u):u(g)}}function Ta(e,i,t,n,r,a){let s;return o;function o(m){return e.enter(n),e.enter(r),e.consume(m),e.exit(r),s=m===40?41:m,l}function l(m){return m===s?(e.enter(r),e.consume(m),e.exit(r),e.exit(n),i):(e.enter(a),d(m))}function d(m){return m===s?(e.exit(a),l(s)):m===null?t(m):F(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),N(e,d,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(m))}function c(m){return m===s||m===null||F(m)?(e.exit("chunkString"),d(m)):(e.consume(m),m===92?u:c)}function u(m){return m===s||m===92?(e.consume(m),c):c(m)}}function it(e,i){let t;return n;function n(r){return F(r)?(e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),t=!0,n):G(r)?N(e,n,t?"linePrefix":"lineSuffix")(r):i(r)}}function Fe(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var Ks={name:"definition",tokenize:Gm},Um={tokenize:Zm,partial:!0};function Gm(e,i,t){let n=this,r;return a;function a(l){return e.enter("definition"),Sa.call(n,e,s,t,"definitionLabel","definitionLabelMarker","definitionLabelString")(l)}function s(l){return r=Fe(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),l===58?(e.enter("definitionMarker"),e.consume(l),e.exit("definitionMarker"),it(e,za(e,e.attempt(Um,N(e,o,"whitespace"),N(e,o,"whitespace")),t,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):t(l)}function o(l){return l===null||F(l)?(e.exit("definition"),n.parser.defined.includes(r)||n.parser.defined.push(r),i(l)):t(l)}}function Zm(e,i,t){return n;function n(s){return ae(s)?it(e,r)(s):t(s)}function r(s){return s===34||s===39||s===40?Ta(e,N(e,a,"whitespace"),t,"definitionTitle","definitionTitleMarker","definitionTitleString")(s):t(s)}function a(s){return s===null||F(s)?i(s):t(s)}}var Ws={name:"hardBreakEscape",tokenize:Qm};function Qm(e,i,t){return n;function n(a){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(a),r}function r(a){return F(a)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),i(a)):t(a)}}var Vs={name:"headingAtx",tokenize:Xm,resolve:Jm};function Jm(e,i){let t=e.length-2,n=3,r,a;return e[n][1].type==="whitespace"&&(n+=2),t-2>n&&e[t][1].type==="whitespace"&&(t-=2),e[t][1].type==="atxHeadingSequence"&&(n===t-1||t-4>n&&e[t-2][1].type==="whitespace")&&(t-=n+1===t?2:4),t>n&&(r={type:"atxHeadingText",start:e[n][1].start,end:e[t][1].end},a={type:"chunkText",start:e[n][1].start,end:e[t][1].end,contentType:"text"},_e(e,n,t-n+1,[["enter",r,i],["enter",a,i],["exit",a,i],["exit",r,i]])),e}function Xm(e,i,t){let n=this,r=0;return a;function a(c){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),s(c)}function s(c){return c===35&&r++<6?(e.consume(c),s):c===null||ae(c)?(e.exit("atxHeadingSequence"),n.interrupt?i(c):o(c)):t(c)}function o(c){return c===35?(e.enter("atxHeadingSequence"),l(c)):c===null||F(c)?(e.exit("atxHeading"),i(c)):G(c)?N(e,o,"whitespace")(c):(e.enter("atxHeadingText"),d(c))}function l(c){return c===35?(e.consume(c),l):(e.exit("atxHeadingSequence"),o(c))}function d(c){return c===null||c===35||ae(c)?(e.exit("atxHeadingText"),o(c)):(e.consume(c),d)}}var vc=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Us=["pre","script","style","textarea"];var Gs={name:"htmlFlow",tokenize:tg,resolveTo:ig,concrete:!0},eg={tokenize:ng,partial:!0};function ig(e){let i=e.length;for(;i--&&!(e[i][0]==="enter"&&e[i][1].type==="htmlFlow"););return i>1&&e[i-2][1].type==="linePrefix"&&(e[i][1].start=e[i-2][1].start,e[i+1][1].start=e[i-2][1].start,e.splice(i-2,2)),e}function tg(e,i,t){let n=this,r,a,s,o,l;return d;function d(w){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(w),c}function c(w){return w===33?(e.consume(w),u):w===47?(e.consume(w),h):w===63?(e.consume(w),r=3,n.interrupt?i:ce):Ge(w)?(e.consume(w),s=String.fromCharCode(w),a=!0,f):t(w)}function u(w){return w===45?(e.consume(w),r=2,m):w===91?(e.consume(w),r=5,s="CDATA[",o=0,g):Ge(w)?(e.consume(w),r=4,n.interrupt?i:ce):t(w)}function m(w){return w===45?(e.consume(w),n.interrupt?i:ce):t(w)}function g(w){return w===s.charCodeAt(o++)?(e.consume(w),o===s.length?n.interrupt?i:$:g):t(w)}function h(w){return Ge(w)?(e.consume(w),s=String.fromCharCode(w),f):t(w)}function f(w){return w===null||w===47||w===62||ae(w)?w!==47&&a&&Us.includes(s.toLowerCase())?(r=1,n.interrupt?i(w):$(w)):vc.includes(s.toLowerCase())?(r=6,w===47?(e.consume(w),v):n.interrupt?i(w):$(w)):(r=7,n.interrupt&&!n.parser.lazy[n.now().line]?t(w):a?A(w):b(w)):w===45||$e(w)?(e.consume(w),s+=String.fromCharCode(w),f):t(w)}function v(w){return w===62?(e.consume(w),n.interrupt?i:$):t(w)}function b(w){return G(w)?(e.consume(w),b):D(w)}function A(w){return w===47?(e.consume(w),D):w===58||w===95||Ge(w)?(e.consume(w),O):G(w)?(e.consume(w),A):D(w)}function O(w){return w===45||w===46||w===58||w===95||$e(w)?(e.consume(w),O):C(w)}function C(w){return w===61?(e.consume(w),M):G(w)?(e.consume(w),C):A(w)}function M(w){return w===null||w===60||w===61||w===62||w===96?t(w):w===34||w===39?(e.consume(w),l=w,S):G(w)?(e.consume(w),M):(l=null,q(w))}function S(w){return w===null||F(w)?t(w):w===l?(e.consume(w),_):(e.consume(w),S)}function q(w){return w===null||w===34||w===39||w===60||w===61||w===62||w===96||ae(w)?C(w):(e.consume(w),q)}function _(w){return w===47||w===62||G(w)?A(w):t(w)}function D(w){return w===62?(e.consume(w),Y):t(w)}function Y(w){return G(w)?(e.consume(w),Y):w===null||F(w)?$(w):t(w)}function $(w){return w===45&&r===2?(e.consume(w),X):w===60&&r===1?(e.consume(w),Z):w===62&&r===4?(e.consume(w),ne):w===63&&r===3?(e.consume(w),ce):w===93&&r===5?(e.consume(w),le):F(w)&&(r===6||r===7)?e.check(eg,ne,K)(w):w===null||F(w)?K(w):(e.consume(w),$)}function K(w){return e.exit("htmlFlowData"),B(w)}function B(w){return w===null?k(w):F(w)?e.attempt({tokenize:W,partial:!0},B,k)(w):(e.enter("htmlFlowData"),$(w))}function W(w,pi,He){return je;function je(Ye){return w.enter("lineEnding"),w.consume(Ye),w.exit("lineEnding"),ai}function ai(Ye){return n.parser.lazy[n.now().line]?He(Ye):pi(Ye)}}function X(w){return w===45?(e.consume(w),ce):$(w)}function Z(w){return w===47?(e.consume(w),s="",oe):$(w)}function oe(w){return w===62&&Us.includes(s.toLowerCase())?(e.consume(w),ne):Ge(w)&&s.length<8?(e.consume(w),s+=String.fromCharCode(w),oe):$(w)}function le(w){return w===93?(e.consume(w),ce):$(w)}function ce(w){return w===62?(e.consume(w),ne):w===45&&r===2?(e.consume(w),ce):$(w)}function ne(w){return w===null||F(w)?(e.exit("htmlFlowData"),k(w)):(e.consume(w),ne)}function k(w){return e.exit("htmlFlow"),i(w)}}function ng(e,i,t){return n;function n(r){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),e.attempt(xi,i,t)}}var Zs={name:"htmlText",tokenize:rg};function rg(e,i,t){let n=this,r,a,s,o;return l;function l(k){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(k),d}function d(k){return k===33?(e.consume(k),c):k===47?(e.consume(k),q):k===63?(e.consume(k),M):Ge(k)?(e.consume(k),Y):t(k)}function c(k){return k===45?(e.consume(k),u):k===91?(e.consume(k),a="CDATA[",s=0,v):Ge(k)?(e.consume(k),C):t(k)}function u(k){return k===45?(e.consume(k),m):t(k)}function m(k){return k===null||k===62?t(k):k===45?(e.consume(k),g):h(k)}function g(k){return k===null||k===62?t(k):h(k)}function h(k){return k===null?t(k):k===45?(e.consume(k),f):F(k)?(o=h,le(k)):(e.consume(k),h)}function f(k){return k===45?(e.consume(k),ne):h(k)}function v(k){return k===a.charCodeAt(s++)?(e.consume(k),s===a.length?b:v):t(k)}function b(k){return k===null?t(k):k===93?(e.consume(k),A):F(k)?(o=b,le(k)):(e.consume(k),b)}function A(k){return k===93?(e.consume(k),O):b(k)}function O(k){return k===62?ne(k):k===93?(e.consume(k),O):b(k)}function C(k){return k===null||k===62?ne(k):F(k)?(o=C,le(k)):(e.consume(k),C)}function M(k){return k===null?t(k):k===63?(e.consume(k),S):F(k)?(o=M,le(k)):(e.consume(k),M)}function S(k){return k===62?ne(k):M(k)}function q(k){return Ge(k)?(e.consume(k),_):t(k)}function _(k){return k===45||$e(k)?(e.consume(k),_):D(k)}function D(k){return F(k)?(o=D,le(k)):G(k)?(e.consume(k),D):ne(k)}function Y(k){return k===45||$e(k)?(e.consume(k),Y):k===47||k===62||ae(k)?$(k):t(k)}function $(k){return k===47?(e.consume(k),ne):k===58||k===95||Ge(k)?(e.consume(k),K):F(k)?(o=$,le(k)):G(k)?(e.consume(k),$):ne(k)}function K(k){return k===45||k===46||k===58||k===95||$e(k)?(e.consume(k),K):B(k)}function B(k){return k===61?(e.consume(k),W):F(k)?(o=B,le(k)):G(k)?(e.consume(k),B):$(k)}function W(k){return k===null||k===60||k===61||k===62||k===96?t(k):k===34||k===39?(e.consume(k),r=k,X):F(k)?(o=W,le(k)):G(k)?(e.consume(k),W):(e.consume(k),r=void 0,oe)}function X(k){return k===r?(e.consume(k),Z):k===null?t(k):F(k)?(o=X,le(k)):(e.consume(k),X)}function Z(k){return k===62||k===47||ae(k)?$(k):t(k)}function oe(k){return k===null||k===34||k===39||k===60||k===61||k===96?t(k):k===62||ae(k)?$(k):(e.consume(k),oe)}function le(k){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(k),e.exit("lineEnding"),N(e,ce,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function ce(k){return e.enter("htmlTextData"),o(k)}function ne(k){return k===62?(e.consume(k),e.exit("htmlTextData"),e.exit("htmlText"),i):t(k)}}var tt={name:"labelEnd",tokenize:dg,resolveTo:cg,resolveAll:lg},ag={tokenize:ug},sg={tokenize:pg},og={tokenize:mg};function lg(e){let i=-1,t;for(;++i999?t(m):m===93?s?(e.exit("chunkString"),g=e.exit("gfmFootnoteCallString"),r.includes(Fe(n.sliceSerialize(g)))?u(m):t(m)):t(m):(e.consume(m),ae(m)||(s=!0),m===92?c:d)}function c(m){return m===91||m===92||m===93?(e.consume(m),a++,d):d(m)}function u(m){return e.enter("gfmFootnoteCallLabelMarker"),e.consume(m),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),i}}function qg(e,i,t){let n=this,r=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),a,s=0,o;return l;function l(f){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(f),e.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(f){return f===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(f),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),c):t(f)}function c(f){let v;return f===null||f===91||s>999?t(f):f===93?o?(v=e.exit("gfmFootnoteDefinitionLabelString"),a=Fe(n.sliceSerialize(v)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(f),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),g):t(f):F(f)?(e.enter("lineEnding"),e.consume(f),e.exit("lineEnding"),s++,c):(e.enter("chunkString").contentType="string",u(f))}function u(f){return f===null||F(f)||f===91||f===93||s>999?(e.exit("chunkString"),c(f)):(ae(f)||(o=!0),s++,e.consume(f),f===92?m:u)}function m(f){return f===91||f===92||f===93?(e.consume(f),s++,u):u(f)}function g(f){return f===58?(e.enter("definitionMarker"),e.consume(f),e.exit("definitionMarker"),N(e,h,"gfmFootnoteDefinitionWhitespace")):t(f)}function h(f){return r.includes(a)||r.push(a),i(f)}}function _g(e,i,t){return e.check(xi,i,e.attempt(Eg,i,t))}function Mg(e){e.exit("gfmFootnoteDefinition")}function Bg(e,i,t){let n=this;return N(e,r,"gfmFootnoteDefinitionIndent",4+1);function r(a){let s=n.events[n.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?i(a):t(a)}}var Ig={tokenize:Fg},eo={text:{[91]:Ig}};function Fg(e,i,t){let n=this;return r;function r(o){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?t(o):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(o),e.exit("taskListCheckMarker"),a)}function a(o){return ae(o)?(e.enter("taskListCheckValueUnchecked"),e.consume(o),e.exit("taskListCheckValueUnchecked"),s):o===88||o===120?(e.enter("taskListCheckValueChecked"),e.consume(o),e.exit("taskListCheckValueChecked"),s):t(o)}function s(o){return o===93?(e.enter("taskListCheckMarker"),e.consume(o),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),e.check({tokenize:Rg},i,t)):t(o)}}function Rg(e,i,t){let n=this;return N(e,r,"whitespace");function r(a){let s=n.events[n.events.length-1];return(s&&s[1].type==="whitespace"||F(a))&&a!==null?i(a):t(a)}}var xc={}.hasOwnProperty;function Ea(e){let i={},t=-1;for(;++ts))return;let q=i.events.length,_=q,D,Y;for(;_--;)if(i.events[_][0]==="exit"&&i.events[_][1].type==="chunkFlow"){if(D){Y=i.events[_][1].end;break}D=!0}for(b(n),S=q;SO;){let M=t[C];i.containerState=M[1],M[0].exit.call(i,e)}t.length=O}function A(){r.write([null]),a=void 0,r=void 0,i.containerState._closeFlow=void 0}}function Vg(e,i,t){return N(e,e.attempt(this.parser.constructs.document,i,t),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}var Lc={tokenize:Ug};function Ug(e){let i=this,t=e.attempt(xi,n,e.attempt(this.parser.constructs.flowInitial,r,N(e,e.attempt(this.parser.constructs.flow,r,e.attempt(Ys,r)),"linePrefix")));return t;function n(a){if(a===null){e.consume(a);return}return e.enter("lineEndingBlank"),e.consume(a),e.exit("lineEndingBlank"),i.currentConstruct=void 0,t}function r(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),i.currentConstruct=void 0,t}}var qc={resolveAll:Ic()},_c=Bc("string"),Mc=Bc("text");function Bc(e){return{tokenize:i,resolveAll:Ic(e==="text"?Gg:void 0)};function i(t){let n=this,r=this.parser.constructs[e],a=t.attempt(r,s,o);return s;function s(c){return d(c)?a(c):o(c)}function o(c){if(c===null){t.consume(c);return}return t.enter("data"),t.consume(c),l}function l(c){return d(c)?(t.exit("data"),a(c)):(t.consume(c),l)}function d(c){if(c===null)return!0;let u=r[c],m=-1;if(u)for(;++m-1&&(s[0]=s[0].slice(n)),a>0&&s.push(e[r].slice(0,a))),s}function Qg(e,i){let t=-1,n=[],r;for(;++tt&&s>r?l+=e.slice(r,s)+` +`+e.slice(s+1):l+=e.slice(r),l.slice(1)}function Rg(e){for(var t="",i=0,n,r=0;r=65536?r+=2:r++)i=hn(e,r),n=_e[i],!n&&vn(i)?(t+=e[r],i>=65536&&(t+=e[r+1])):t+=n||Lg(i);return t}function Dg(e,t,i){var n="",r=e.tag,a,s,o;for(a=0,s=i.length;a"u"&&Ci(e,t,null,!1,!1))&&(n!==""&&(n+=","+(e.condenseFlow?"":" ")),n+=e.dump);e.tag=r,e.dump="["+n+"]"}function ec(e,t,i,n){var r="",a=e.tag,s,o,l;for(s=0,o=i.length;s"u"&&Ci(e,t+1,null,!0,!0,!1,!0))&&((!n||r!=="")&&(r+=Vs(e,t)),e.dump&&yn===e.dump.charCodeAt(0)?r+="-":r+="- ",r+=e.dump);e.tag=a,e.dump=r||"[]"}function Ng(e,t,i){var n="",r=e.tag,a=Object.keys(i),s,o,l,d,c;for(s=0,o=a.length;s1024&&(c+="? "),c+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Ci(e,t,d,!1,!1)&&(c+=e.dump,n+=c));e.tag=r,e.dump="{"+n+"}"}function jg(e,t,i,n){var r="",a=e.tag,s=Object.keys(i),o,l,d,c,u,m;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new Ne("sortKeys must be a boolean or a function");for(o=0,l=s.length;o1024,u&&(e.dump&&yn===e.dump.charCodeAt(0)?m+="?":m+="? "),m+=e.dump,u&&(m+=Vs(e,t)),Ci(e,t+1,c,!0,u)&&(e.dump&&yn===e.dump.charCodeAt(0)?m+=":":m+=": ",m+=e.dump,r+=m));e.tag=a,e.dump=r||"{}"}function ic(e,t,i){var n,r,a,s,o,l;for(r=i?e.explicitTypes:e.implicitTypes,a=0,s=r.length;a tag resolver accepts not "'+l+'" style');e.dump=n}return!0}return!1}function Ci(e,t,i,n,r,a,s){e.tag=null,e.dump=i,ic(e,i,!1)||ic(e,i,!0);var o=fc.call(e.dump),l=n,d;n&&(n=e.flowLevel<0||e.flowLevel>t);var c=o==="[object Object]"||o==="[object Array]",u,m;if(c&&(u=e.duplicates.indexOf(i),m=u!==-1),(e.tag!==null&&e.tag!=="?"||m||e.indent!==2&&t>0)&&(r=!1),m&&e.usedDuplicates[u])e.dump="*ref_"+u;else{if(c&&m&&!e.usedDuplicates[u]&&(e.usedDuplicates[u]=!0),o==="[object Object]")n&&Object.keys(e.dump).length!==0?(jg(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(Ng(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object Array]")n&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?ec(e,t-1,e.dump,r):ec(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(Dg(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object String]")e.tag!=="?"&&Bg(e,e.dump,t,a,l);else{if(o==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new Ne("unacceptable kind of an object to dump "+o)}e.tag!==null&&e.tag!=="?"&&(d=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?d="!"+d:d.slice(0,18)==="tag:yaml.org,2002:"?d="!!"+d.slice(18):d="!<"+d+">",e.dump=d+" "+e.dump)}return!0}function Pg(e,t){var i=[],n=[],r,a;for(Gs(e,i,n),r=0,a=n.length;rUnicode-Block "Formulare" in voller Breite'},"include-cjk-symbols-and-punctuation":{name:"CJK-Symbole und Satzzeichen einschlie\xDFen",description:'Einschlie\xDFen CJK-Symbole und Satzzeichen Unicode-Block'},"include-dashes":{name:"Bindestriche einschlie\xDFen",description:"F\xFCgen Sie den Gedankenstrich (\u2013) und den Gedankenstrich (\u2014) ein"},"other-symbols":{name:"Andere Symbole",description:"Andere Symbole, die enthalten sind"}},"remove-space-before-or-after-characters":{name:"Entfernen Sie Leerzeichen vor oder nach Zeichen",description:"Entfernt Leerzeichen vor und nach den angegebenen Zeichen. Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","characters-to-remove-space-before":{name:"Leerzeichen vor Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"},"characters-to-remove-space-after":{name:"Leerzeichen nach Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"}},"remove-trailing-punctuation-in-heading":{name:"Entfernen Sie nachgestellte Satzzeichen in der \xDCberschrift",description:"Entfernt die angegebene Interpunktion am Ende von \xDCberschriften, wobei darauf zu achten ist, dass das Semikolon am Ende von [HTML-Entit\xE4tsreferenzen](https://de.wikipedia.org/wiki/Typografische_Zeichen_in_XML_und_HTML) ignoriert wird.","punctuation-to-remove":{name:"Nachfolgende Interpunktion",description:"Das nachfolgende Satzzeichen, das aus den \xDCberschriften in der Datei entfernt werden soll."}},"remove-yaml-keys":{name:"Entfernen von YAML-Schl\xFCsseln",description:"Entfernt die angegebenen YAML-Schl\xFCssel","yaml-keys-to-remove":{name:"Zu entfernende YAML-Schl\xFCssel",description:"Die zu entfernenden yaml-Tasten aus der yaml-Frontmaterie mit oder ohne Doppelpunkt"}},"space-after-list-markers":{name:"Leerzeichen nach Listenmarkierungen",description:"Es sollte ein einzelnes Leerzeichen nach Listenmarkierungen und Kontrollk\xE4stchen geben."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Leerzeichen zwischen Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen",description:"Stellt sicher, dass Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen durch ein einziges Leerzeichen getrennt werden. Folgt diesen [Richtlinien](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Starker Stil",description:"Stellt sicher, dass der starke Stil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um starke/fettgedruckte Inhalte zu kennzeichnen"}},"trailing-spaces":{name:"Nachgestellte Leerzeichen",description:"Entfernt zus\xE4tzliche Leerzeichen nach jeder Zeile.","twp-space-line-break":{name:"Zwei Leerzeichen Zeilenumbruch",description:'Ignorieren Sie zwei Leerzeichen, gefolgt von einem Zeilenumbruch ("Zwei-Leerzeichen-Regel").'}},"two-spaces-between-lines-with-content":{name:"Zwei Leerzeichen zwischen Zeilen mit Inhalt",description:"Stellt sicher, dass zwei Leerzeichen an den Zeilenenden hinzugef\xFCgt werden, wobei der Inhalt in der n\xE4chsten Zeile f\xFCr Abs\xE4tze, Blockzitate und Listenelemente fortgesetzt wird"},"unordered-list-style":{name:"Ungeordneter Listenstil",description:"Stellt sicher, dass ungeordnete Listen dem angegebenen Stil folgen.","list-style":{name:"Stil des Listenelements",description:"Das Listenelementformat, das in ungeordneten Listen verwendet werden soll"}},"yaml-key-sort":{name:"Sortierung von YAML-Schl\xFCsseln",description:"Sortiert die YAML-Schl\xFCssel basierend auf der angegebenen Reihenfolge und Priorit\xE4t. Hinweis: Kann auch Leerzeilen entfernen.","yaml-key-priority-sort-order":{name:"Sortierreihenfolge der YAML-Schl\xFCsselpriorit\xE4t",description:"Die Reihenfolge, in der Schl\xFCssel sortiert werden sollen, wobei einer in jeder Zeile sortiert wird, in der er in der Reihenfolge sortiert wird, die in der Liste gefunden wird"},"priority-keys-at-start-of-yaml":{name:"Priorit\xE4tstasten beim Start von YAML",description:"Die Sortierreihenfolge der YAML-Schl\xFCsselpriorit\xE4t wird am Anfang der YAML-Frontmaterie platziert"},"yaml-sort-order-for-other-keys":{name:"YAML-Sortierreihenfolge f\xFCr andere Schl\xFCssel",description:"Die Art und Weise, wie die Schl\xFCssel sortiert werden, die nicht im Textbereich Sortierreihenfolge der YAML-Schl\xFCsselpriorit\xE4t gefunden werden"}},"yaml-timestamp":{name:"YAML-Zeitstempel",description:"Verfolgen Sie das Datum, an dem die Datei zuletzt bearbeitet wurde, in der YAML-Front. Ruft Datumsangaben aus Dateimetadaten ab.","date-created":{name:"Erstellungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das Erstellungsdatum verwendet werden soll"},"date-created-key":{name:"Erstellungsdatum des Schl\xFCssels",description:"Welcher YAML-Schl\xFCssel soll f\xFCr das Erstellungsdatum verwendet werden"},"force-retention-of-create-value":{name:"Erstellungsdatum erzwingen Schl\xFCsselwertaufbewahrung",description:"Verwendet den Wert in der YAML-Frontmaterie f\xFCr das Erstellungsdatum anstelle der Dateimetadaten, was n\xFCtzlich ist, um zu verhindern, dass \xC4nderungen an Dateimetadaten dazu f\xFChren, dass der Wert in einen anderen Wert ge\xE4ndert wird."},"date-modified":{name:"\xC4nderungsdatum",description:"Geben Sie das Datum ein, an dem die Datei zuletzt ge\xE4ndert wurde"},"date-modified-key":{name:"\xC4nderungsdatum des Schl\xFCssels",description:"Der YAML-Schl\xFCssel, der f\xFCr das \xC4nderungsdatum verwendet werden soll"},format:{name:"Format",description:"Zu verwendendes Momentdatumsformat (siehe [Momentformatoptionen](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML-Titel-Alias",description:"F\xFCgt den Titel der Datei in den Aliasabschnitt der YAML-Frontmaterie ein. Ruft den Titel aus dem ersten H1- oder Dateinamen ab.","preserve-existing-alias-section-style":{name:"Vorhandenes Alias-Abschnittsformat beibehalten",description:"Wenn diese Option festgelegt ist, gilt die Einstellung `YAML-Aliase-Abschnittsstil` nur f\xFCr die neu erstellten Abschnitte"},"keep-alias-that-matches-the-filename":{name:"Behalten Sie einen Alias bei, der mit dem Dateinamen \xFCbereinstimmt",description:"Solche Aliase sind in der Regel redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Verwenden Sie den YAML-Schl\xFCssel `linter-yaml-title-alias`, um bei \xC4nderungen von Dateinamen und \xDCberschriften zu helfen",description:"Wenn sich die erste H1-\xDCberschrift \xE4ndert oder der Dateiname ge\xE4ndert wird, wenn der erste H1 nicht vorhanden ist, wird der alte Alias, der in diesem Schl\xFCssel gespeichert ist, durch den neuen Wert ersetzt, anstatt nur einen neuen Eintrag in das Alias-Array einzuf\xFCgen"}},"yaml-title":{name:"YAML-Titel",description:"F\xFCgt den Titel der Datei in das YAML-Frontmatter ein. Ruft den Titel basierend auf dem ausgew\xE4hlten Modus ab.","title-key":{name:"Titel-Schl\xFCssel",description:"Der YAML-Schl\xFCssel, der f\xFCr den Titel verwendet werden soll"},mode:{name:"Modus",description:"Die zum Abrufen des Titels zu verwendende Methode"}}},enums:{"Title Case":"Titel Gro\xDF- und Kleinschreibung","ALL CAPS":"GROSSBUCHSTABEN","First letter":"Anfangsbuchstabe",".":".",")":")",ERROR:"Fehler",TRACE:"Spur",DEBUG:"Debuggen",INFO:"Info",WARN:"Warnen",SILENT:"Leise",ascending:"aufsteigend",lazy:"lazy",Nothing:"Faul","Remove hashtag":"Hashtag entfernen","Remove whole tag":"Ganzes Tag entfernen",asterisk:"Sternchen",underscore:"unterstreichen",consistent:"folgerichtig","-":"-","*":"*","+":"+",space:"Raum","no space":"kein Platz",None:"Nichts","Ascending Alphabetical":"Aufsteigend Alphabetisch","Descending Alphabetical":"Absteigend Alphabetisch","multi-line":"mehrzeilig","single-line":"einzeilig","single string to single-line":"Single String zu Single-Line","single string to multi-line":"Single String zu Multi-Line","single string comma delimited":"Komma mit Trennzeichen f\xFCr eine Zeichenfolge","single string space delimited":"Einzelzeichenfolgenabstand durch Trennzeichen","single-line space delimited":"einzeiliger Abstand durch Trennzeichen","first-h1":"erste \xDCberschrift der Ebene 1","first-h1-or-filename-if-h1-missing":"Erste \xDCberschrift der Ebene 1 oder Dateiname, wenn die \xDCberschrift der Ebene 1 fehlt",filename:"Dateinamen","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var so={commands:{"lint-file":{name:"Lint the current file","error-message":"Lint File Error in File"},"lint-file-unless-ignored":{name:"Lint the current file unless ignored"},"lint-all-files":{name:"Lint all files in the vault","error-message":"Lint All Files Error in File","success-message":"Linted all files","errors-message-singular":"Linted all files and there was 1 error.","errors-message-plural":"Linted all files and there were {NUM} errors.","start-message":"This will edit all of your files and may introduce errors.","submit-button-text":"Lint All","submit-button-notice-text":"Linting all files..."},"lint-all-files-in-folder":{name:"Lint all files in the current folder","start-message":"This will edit all of your files in {FOLDER_NAME} including files in its subfolders which may introduce errors.","submit-button-text":"Lint All Files in {FOLDER_NAME}","submit-button-notice-text":"Linting all files in {FOLDER_NAME}...","error-message":"Lint All Files in Folder Error in File","success-message":"Linted all {NUM} files in {FOLDER_NAME}.","message-singular":"Linted all {NUM} files in {FOLDER_NAME} and there was 1 error.","message-plural":"Linted all {FILE_COUNT} files in {FOLDER_NAME} and there were {ERROR_COUNT} error."},"paste-as-plain-text":{name:"Paste as Plain Text & without Modifications"},"lint-file-pop-up-menu-text":{name:"Lint file"},"lint-folder-pop-up-menu-text":{name:"Lint folder"}},logs:{"plugin-load":"Loading plugin","plugin-unload":"Unloading plugin","folder-lint":"Linting folder ","linter-run":"Running linter","paste-link-warning":"aborted paste lint as the clipboard content is a link and doing so will avoid conflicts with other plugins that modify pasting.","see-console":"See console for more details.","unknown-error":"An unknown error occurred during linting.","moment-locale-not-found":"Trying to switch Moment.js locale to {MOMENT_LOCALE}, got {CURRENT_LOCALE}","pre-rules":"rules before regular rules","post-rules":"rules after regular rules","rule-running":"rules running","custom-regex":"custom regex rules","running-custom-regex":"Running Custom Regex","running-custom-lint-command":"Running Custom Lint Commands","custom-lint-duplicate-warning":'You cannot run the same command ("{COMMAND_NAME}") as a custom lint rule twice.',"custom-lint-error-message":"Custom Lint Command","disabled-text":"is disabled","run-rule-text":"Running","timing-key-not-found":"timing key '{TIMING_KEY}' does not exist in the timing info list, so it was ignored","milliseconds-abbreviation":"ms","invalid-date-format-error":"The format of the created date '{DATE}' could not be parsed or determined so the created date was left alone in '{FILE_NAME}'","invalid-delimiter-error-message":"delimiter is only allowed to be a single character","missing-footnote-error-message":"Footnote '{FOOTNOTE}' has no corresponding footnote reference before the footnote contents and cannot be processed. Please make sure that all footnotes have a corresponding reference before the content of the footnote.","too-many-footnotes-error-message":"Footnote key '{FOOTNOTE_KEY}' has more than 1 footnote referencing it. Please update the footnotes so that there is only one footnote per footnote key.","wrapper-yaml-error":"error in the yaml: {ERROR_MESSAGE}","wrapper-unknown-error":"unknown error: {ERROR_MESSAGE}","uneven-amount-of-quotes":"The instances of the `{QUOTE}` quote in the file is not even, so we cannot convert straight quotes to smart quotes"},"notice-text":{"empty-clipboard":"There is no clipboard content.","characters-added":"characters added","characters-removed":"characters removed"},"linter-title":"Linter","empty-search-results-text":"No settings match search","warning-text":"Warning","file-backup-text":"Make sure you have backed up your files.",tabs:{names:{general:"General Settings",custom:"Custom Settings",yaml:"YAML Settings",heading:"Heading Settings",content:"Content Settings",footnote:"Footnote Settings",spacing:"Spacing Settings",paste:"Paste Settings",debug:"Debug Settings"},"default-search-bar-text":"Search all settings",general:{"lint-on-save":{name:"Lint on save",description:"Lint the file on manual save (when `Ctrl + S` is pressed or when `:w` is executed while using vim keybindings)"},"display-message":{name:"Display message on lint",description:"Display the number of characters changed after linting"},"folders-to-ignore":{name:"Folders to ignore",description:"Folders to ignore when linting all files or linting on save. Enter folder paths separated by newlines"},"override-locale":{name:"Override locale",description:"Set this if you want to use a locale different from the default"},"same-as-system-locale":"Same as system ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML aliases section style",description:"The style of the YAML aliases section"},"yaml-tags-section-style":{name:"YAML tags section style",description:"The style of the YAML tags section"},"default-escape-character":{name:"Default Escape Character",description:"The default character to use to escape YAML values when a single quote and double quote are not present."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Remove Unnecessary Escape Characters when in Multi-Line Array Format",description:"Escape characters for multi-line YAML arrays don't need the same escaping as single-line arrays, so when in multi-line format remove extra escapes that are not necessary"},"number-of-dollar-signs-to-indicate-math-block":{name:"Number of Dollar Signs to Indicate Math Block",description:"The amount of dollar signs to consider the math content to be a math block instead of inline math"}},debug:{"log-level":{name:"Log Level",description:"The types of logs that will be allowed to be logged by the service. The default is ERROR."},"linter-config":{name:"Linter Config",description:"The contents of the data.json for the Linter as of the setting page loading"},"log-collection":{name:"Collect logs when linting on save and linting the current file",description:"Goes ahead and collects logs when you `Lint on save` and linting the current file. These logs can be helpful for debugging and create bug reports."},"linter-logs":{name:"Linter Logs",description:"The logs from the last `Lint on save` or the last lint current file run if enabled."}}},options:{"custom-command":{name:"Custom Commands",description:"Custom commands are Obsidian commands that get run after the linter is finished running its regular rules. This means that they do not run before the YAML timestamp logic runs, so they can cause YAML timestamp to be triggered on the next run of the linter. You may only select an Obsidian command once. **_Note that this currently only works on linting the current file._**",warning:"When selecting an option, make sure to select the option either by using the mouse or by hitting the enter key. Other selection methods may not work and only selections of an actual Obsidian command or an empty string will be saved.","add-input-button-text":"Add new command","command-search-placeholder-text":"Obsidian command","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"},"custom-replace":{name:"Custom Regex Replacement",description:"Custom regex replacement can be used to replace anything that matches the find regex with the replacement value. The replace and find values will need to be valid regex values.",warning:"Use this with caution if you do not know regex. Also, please make sure that you do not use lookbehinds in your regex on iOS mobile as that will cause linting to fail since that is not supported on that platform.","add-input-button-text":"Add new regex replacement","regex-to-find-placeholder-text":"regex to find","flags-placeholder-text":"flags","regex-to-replace-placeholder-text":"regex to replace","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"}},rules:{"auto-correct-common-misspellings":{name:"Auto-correct Common Misspellings",description:"Uses a dictionary of common misspellings to automatically convert them to their proper spellings. See [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) for the full list of auto-corrected words.","ignore-words":{name:"Ignore Words",description:"A comma separated list of lowercased words to ignore when auto-correcting"}},"add-blockquote-indentation-on-paste":{name:"Add Blockquote Indentation on Paste",description:"Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting"},"blockquote-style":{name:"Blockquote Style",description:"Makes sure the blockquote style is consistent.",style:{name:"Style",description:"The style used on blockquote indicators"}},"capitalize-headings":{name:"Capitalize Headings",description:"Headings should be formatted with capitalization",style:{name:"Style",description:"The style of capitalization to use"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignore Words",description:"A comma separated list of words to ignore when capitalizing"},"lowercase-words":{name:"Lowercase Words",description:"A comma separated list of words to keep lowercase"}},"compact-yaml":{name:"Compact YAML",description:"Removes leading and trailing blank lines in the YAML front matter.","inner-new-lines":{name:"Inner New Lines",description:"Remove new lines that are not at the start or the end of the YAML"}},"consecutive-blank-lines":{name:"Consecutive blank lines",description:"There should be at most one consecutive blank line."},"convert-bullet-list-markers":{name:"Convert Bullet List Markers",description:"Converts common bullet list marker symbols to markdown list markers."},"convert-spaces-to-tabs":{name:"Convert Spaces to Tabs",description:"Converts leading spaces to tabs.",tabsize:{name:"Tabsize",description:"Number of spaces that will be converted to a tab"}},"emphasis-style":{name:"Emphasis Style",description:"Makes sure the emphasis style is consistent.",style:{name:"Style",description:"The style used to denote emphasized content"}},"empty-line-around-blockquotes":{name:"Empty Line Around Blockquotes",description:"Ensures that there is an empty line around blockquotes unless they start or end a document. **Note that an empty line is either one less level of nesting for blockquotes or a newline character.**"},"empty-line-around-code-fences":{name:"Empty Line Around Code Fences",description:"Ensures that there is an empty line around code fences unless they start or end a document."},"empty-line-around-math-blocks":{name:"Empty Line Around Math Blocks",description:"Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"empty-line-around-tables":{name:"Empty Line Around Tables",description:"Ensures that there is an empty line around github flavored tables unless they start or end a document."},"escape-yaml-special-characters":{name:"Escape YAML Special Characters",description:`Escapes colons with a space after them (: ), single quotes ('), and double quotes (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Try to Escape Single Line Arrays",description:'Tries to escape array values assuming that an array starts with "[", ends with "]", and has items that are delimited by ",".'}},"file-name-heading":{name:"File Name Heading",description:"Inserts the file name as a H1 heading if no H1 heading exists."},"footnote-after-punctuation":{name:"Footnote after Punctuation",description:"Ensures that footnote references are placed after punctuation, not before."},"force-yaml-escape":{name:"Force YAML Escape",description:"Escapes the values for the specified YAML keys.","force-yaml-escape-keys":{name:"Force YAML Escape on Keys",description:"Uses the YAML escape character on the specified YAML keys separated by a new line character if it is not already escaped. Do not use on YAML arrays."}},"format-tags-in-yaml":{name:"Format Tags in YAML",description:"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid."},"format-yaml-array":{name:"Format Yaml Array",description:"Allows for the formatting of regular yaml arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific yaml formats. Note that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array.","alias-key":{name:"Format yaml aliases section",description:"Turns on formatting for the yaml aliases section. You should not enable this option alongside the rule `YAML Title Alias` as they may not work well together or they may have different format styles selected causing unexpected results."},"tag-key":{name:"Format yaml tags section",description:"Turns on formatting for the yaml tags section."},"default-array-style":{name:"Default yaml array section style",description:"The style of other yaml arrays that are not `tags`, `aliases` or in `Force key values to be single-line arrays` and `Force key values to be multi-line arrays`"},"default-array-keys":{name:"Format yaml array sections",description:"Turns on formatting for regular yaml arrays"},"force-single-line-array-style":{name:"Force key values to be single-line arrays",description:"Forces the yaml array for the new line separated keys to be in single-line format (leave empty to disable this option)"},"force-multi-line-array-style":{name:"Force key values to be multi-line arrays",description:"Forces the yaml array for the new line separated keys to be in multi-line format (leave empty to disable this option)"}},"header-increment":{name:"Header Increment",description:"Heading levels should only increment by one level at a time","start-at-h2":{name:"Start Header Increment at Heading Level 2",description:"Makes heading level 2 the minimum heading level in a file for header increment and shifts all headings accordingly so they increment starting with a level 2 heading."}},"heading-blank-lines":{name:"Heading blank lines",description:"All headings have a blank line both before and after (except where the heading is at the beginning or end of the document).",bottom:{name:"Bottom",description:"Insert a blank line after headings"},"empty-line-after-yaml":{name:"Empty Line Between Yaml and Header",description:"Keep the empty line between the Yaml frontmatter and header"}},"headings-start-line":{name:"Headings Start Line",description:"Headings that do not start a line will have their preceding whitespace removed to make sure they get recognized as headers."},"insert-yaml-attributes":{name:"Insert YAML attributes",description:"Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line.","text-to-insert":{name:"Text to insert",description:"Text to insert into the YAML frontmatter"}},"line-break-at-document-end":{name:"Line Break at Document End",description:"Ensures that there is exactly one line break at the end of a document."},"move-footnotes-to-the-bottom":{name:"Move Footnotes to the bottom",description:"Move all footnotes to the bottom of the document."},"move-math-block-indicators-to-their-own-line":{name:"Move Math Block Indicators to Their Own Line",description:"Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"move-tags-to-yaml":{name:"Move Tags to Yaml",description:"Move all tags to Yaml frontmatter of the document.","how-to-handle-existing-tags":{name:"Body tag operation",description:"What to do with non-ignored tags in the body of the file once they have been moved to the frontmatter"},"tags-to-ignore":{name:"Tags to ignore",description:"The tags that will not be moved to the tags array or removed from the body content if `Remove the hashtag from tags in content body` is enabled. Each tag should be on a new line and without the `#`. **Make sure not to include the hashtag in the tag name.**"}},"no-bare-urls":{name:"No Bare URLs",description:"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes."},"ordered-list-style":{name:"Ordered List Style",description:"Makes sure that ordered lists follow the style specified. Note that 2 spaces or 1 tab is considered to be an indentation level.","number-style":{name:"Number Style",description:"The number style used in ordered list indicators"},"list-end-style":{name:"Ordered List Indicator End Style",description:"The ending character of an ordered list indicator"}},"paragraph-blank-lines":{name:"Paragraph blank lines",description:"All paragraphs should have exactly one blank line both before and after."},"prevent-double-checklist-indicator-on-paste":{name:"Prevent Double Checklist Indicator on Paste",description:"Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator"},"prevent-double-list-item-indicator-on-paste":{name:"Prevent Double List Item Indicator on Paste",description:"Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator"},"proper-ellipsis-on-paste":{name:"Proper Ellipsis on Paste",description:"Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste"},"proper-ellipsis":{name:"Proper Ellipsis",description:"Replaces three consecutive dots with an ellipsis."},"quote-style":{name:"Quote Style",description:"Updates the quotes in the body content to be updated to the specified single and double quote styles.","single-quote-enabled":{name:"Enable `Single Quote Style`",description:"Specifies that the selected single quote style should be used."},"single-quote-style":{name:"Single Quote Style",description:"The style of single quotes to use."},"double-quote-enabled":{name:"Enable `Double Quote Style`",description:"Specifies that the selected double quote style should be used."},"double-quote-style":{name:"Double Quote Style",description:"The style of double quotes to use."}},"re-index-footnotes":{name:"Re-Index Footnotes",description:"Re-indexes footnote keys and footnote, based on the order of occurrence (NOTE: This rule does *not* work if there is more than one footnote for a key.)"},"remove-consecutive-list-markers":{name:"Remove Consecutive List Markers",description:"Removes consecutive list markers. Useful when copy-pasting list items."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Remove Empty Lines Between List Markers and Checklists",description:"There should not be any empty lines between list markers and checklists."},"remove-empty-list-markers":{name:"Remove Empty List Markers",description:"Removes empty list markers, i.e. list items without content."},"remove-hyphenated-line-breaks":{name:"Remove Hyphenated Line Breaks",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Remove Hyphens on Paste",description:"Removes hyphens from the text to paste"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Remove Leading or Trailing Whitespace on Paste",description:"Removes any leading non-tab whitespace and all trailing whitespace for the text to paste"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Remove Leftover Footnotes from Quote on Paste",description:"Removes any leftover footnote references for the text to paste"},"remove-link-spacing":{name:"Remove link spacing",description:"Removes spacing around link text."},"remove-multiple-blank-lines-on-paste":{name:"Remove Multiple Blank Lines on Paste",description:"Condenses multiple blank lines down into one blank line for the text to paste"},"remove-multiple-spaces":{name:"Remove Multiple Spaces",description:"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. "},"remove-space-around-characters":{name:"Remove Space around Characters",description:"Ensures that certain characters are not surrounded by whitespace (either single spaces or a tab). Note that this may causes issues with markdown format in some cases.","include-fullwidth-forms":{name:"Include Fullwidth Forms",description:'Include Fullwidth Forms Unicode block'},"include-cjk-symbols-and-punctuation":{name:"Include CJK Symbols and Punctuation",description:'Include CJK Symbols and Punctuation Unicode block'},"include-dashes":{name:"Include Dashes",description:"Include en dash (\u2013) and em dash (\u2014)"},"other-symbols":{name:"Other symbols",description:"Other symbols to include"}},"remove-space-before-or-after-characters":{name:"Remove Space Before or After Characters",description:"Removes space before the specified characters and after the specified characters. Note that this may causes issues with markdown format in some cases.","characters-to-remove-space-before":{name:"Remove Space Before Characters",description:"Removes space before the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"},"characters-to-remove-space-after":{name:"Remove Space After Characters",description:"Removes space after the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"}},"remove-trailing-punctuation-in-heading":{name:"Remove Trailing Punctuation in Heading",description:"Removes the specified punctuation from the end of headings making sure to ignore the semicolon at the end of [HTML entity references](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references).","punctuation-to-remove":{name:"Trailing Punctuation",description:"The trailing punctuation to remove from the headings in the file."}},"remove-yaml-keys":{name:"Remove YAML Keys",description:"Removes the YAML keys specified","yaml-keys-to-remove":{name:"YAML Keys to Remove",description:"The yaml keys to remove from the yaml frontmatter with or without colons"}},"space-after-list-markers":{name:"Space after list markers",description:"There should be a single space after list markers and checkboxes."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Space between Chinese Japanese or Korean and English or numbers",description:"Ensures that Chinese, Japanese, or Korean and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Strong Style",description:"Makes sure the strong style is consistent.",style:{name:"Style",description:"The style used to denote strong/bolded content"}},"trailing-spaces":{name:"Trailing spaces",description:"Removes extra spaces after every line.","twp-space-line-break":{name:"Two Space Linebreak",description:'Ignore two spaces followed by a line break ("Two Space Rule").'}},"two-spaces-between-lines-with-content":{name:"Two Spaces Between Lines with Content",description:"Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items"},"unordered-list-style":{name:"Unordered List Style",description:"Makes sure that unordered lists follow the style specified.","list-style":{name:"List item style",description:"The list item style to use in unordered lists"}},"yaml-key-sort":{name:"YAML Key Sort",description:"Sorts the YAML keys based on the order and priority specified. Note: may remove blank lines as well.","yaml-key-priority-sort-order":{name:"YAML Key Priority Sort Order",description:"The order in which to sort keys with one on each line where it sorts in the order found in the list"},"priority-keys-at-start-of-yaml":{name:"Priority Keys at Start of YAML",description:"YAML Key Priority Sort Order is placed at the start of the YAML frontmatter"},"yaml-sort-order-for-other-keys":{name:"YAML Sort Order for Other Keys",description:"The way in which to sort the keys that are not found in the YAML Key Priority Sort Order text area"}},"yaml-timestamp":{name:"YAML Timestamp",description:"Keep track of the date the file was last edited in the YAML front matter. Gets dates from file metadata.","date-created":{name:"Date Created",description:"Insert the file creation date"},"date-created-key":{name:"Date Created Key",description:"Which YAML key to use for creation date"},"force-retention-of-create-value":{name:"Force Date Created Key Value Retention",description:"Reuses the value in the YAML frontmatter for date created instead of the file metadata which is useful for preventing file metadata changes from causing the value to change to a different value."},"date-modified":{name:"Date Modified",description:"Insert the date the file was last modified"},"date-modified-key":{name:"Date Modified Key",description:"Which YAML key to use for modification date"},format:{name:"Format",description:"Moment date format to use (see [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML Title Alias",description:"Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename.","preserve-existing-alias-section-style":{name:"Preserve existing aliases section style",description:"If set, the `YAML aliases section style` setting applies only to the newly created sections"},"keep-alias-that-matches-the-filename":{name:"Keep alias that matches the filename",description:"Such aliases are usually redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes",description:"If set, when the first H1 heading changes or filename if first H1 is not present changes, then the old alias stored in this key will be replaced with the new value instead of just inserting a new entry in the aliases array"}},"yaml-title":{name:"YAML Title",description:"Inserts the title of the file into the YAML frontmatter. Gets the title based on the selected mode.","title-key":{name:"Title Key",description:"Which YAML key to use for title"},mode:{name:"Mode",description:"The method to use to get the title"}}},enums:{"Title Case":"Title Case","ALL CAPS":"ALL CAPS","First letter":"First letter",".":".",")":")",ERROR:"error",TRACE:"trace",DEBUG:"debug",INFO:"info",WARN:"warn",SILENT:"silent",ascending:"ascending",lazy:"lazy",Nothing:"Nothing","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisk",underscore:"underscore",consistent:"consistent","-":"-","*":"*","+":"+",space:"space","no space":"no space",None:"None","Ascending Alphabetical":"Ascending Alphabetical","Descending Alphabetical":"Descending Alphabetical","multi-line":"multi-line","single-line":"single-line","single string to single-line":"single string to single-line","single string to multi-line":"single string to multi-line","single string comma delimited":"single string comma delimited","single string space delimited":"single string space delimited","single-line space delimited":"single-line space delimited","first-h1":"First H1","first-h1-or-filename-if-h1-missing":"First H1 or Filename if H1 is Missing",filename:"Filename","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var _c={commands:{"lint-file":{name:"Analizar este archivo","error-message":"Error Analizando un Archivooccuri\xF3 en el Archivo"},"lint-file-unless-ignored":{name:"Analizar este archivo si no es ignorado"},"lint-all-files":{name:"Analizar todos los archivos en la b\xF3veda","error-message":"Error Analizando Todos los Archivos en Archivo","success-message":"Analiz\xF3 todos los archivos","errors-message-singular":"Analiz\xF3 todos los archivos y un error ocurri\xF3.","errors-message-plural":"Analiz\xF3 todos los archivos y {NUM} errores ocurrieron","start-message":"Esto editar\xE1 todos de sus archivos y es possible que introduzca errores","submit-button-text":"Analizar Todo","submit-button-notice-text":"Analizando todos los archivos..."},"lint-all-files-in-folder":{name:"Analizar todos los archivos en esta carpeta","start-message":"Esto editar\xE1 todos de sus archivos en {FOLDER_NAME} incluyendo los archivos que existen en las subcarpetas y es possible que introduzca errores.","submit-button-text":"Analizar Todos los Archivos en {FOLDER_NAME}","submit-button-notice-text":"Analizando todos los archivos en {FOLDER_NAME}...","error-message":"Error Analizando Todos los Archivos en Carpeta en Archivo","success-message":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME}.","message-singular":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME} y un error ocurri\xF3.","message-plural":"Analiz\xF3 los {FILE_COUNT} archivos en {FOLDER_NAME} y {ERROR_COUNT} errores ocurrieron."},"paste-as-plain-text":{name:"Pegar como texto sin formato y sin modificaciones"},"lint-file-pop-up-menu-text":{name:"Analizar el archivo"},"lint-folder-pop-up-menu-text":{name:"Analizar la carpeta"}},logs:{"plugin-load":"Cargando el programa adicional","plugin-unload":"Descargando el programa adicional","folder-lint":"Analizando la carpeta ","linter-run":"Usando linter","paste-link-warning":"abort\xF3 lint de pagar porque el contento del portapapeles es un enlace y no lo hizo para evitar conflictos con otros programas adicionales que modifican lo que hace el pegar.","see-console":"Consulte la consola para obtener m\xE1s detalles.","unknown-error":"Se ha producido un error desconocido durante el linting.","moment-locale-not-found":"Intentando cambiar la zona de Moment.js a {MOMENT_LOCALE}, el resulto fue {CURRENT_LOCALE}","pre-rules":"Las reglas antes de las reglas normales","post-rules":"las reglas despu\xE9s de las reglas normales","rule-running":"usando las reglas","custom-regex":"las reglas regex personalizadas","running-custom-regex":"Usando regex personalizada","running-custom-lint-command":"Usando comandos de lint personalizados","custom-lint-duplicate-warning":'No se puede usar el mismo comando ("{COMMAND_NAME}") dos veces como un comando de lint.',"custom-lint-error-message":"El commando de lint personalizado","disabled-text":"es inhabilitado","run-rule-text":"Usando","timing-key-not-found":"clave de ritmo '{TIMING_KEY}' no ya existe en la lista de claves de ritmo y fue ignorado por eso","milliseconds-abbreviation":"ms","invalid-date-format-error":"No se pudo analizar ni identificar el formato de la fech de creaci\xF3n `{DATE}` entonces la fecha de creaci\xF3n se dej\xF3 sola en `{FILE_NAME}`","invalid-delimiter-error-message":"El delimitador solo puede ser de un solo car\xE1cter","missing-footnote-error-message":"La nota al pie `{FOOTNOTE}` no tiene ninguna referencia de nota al pie correspondiente antes del contenido de la nota al pie y no se puede procesar. Aseg\xFArese de que todas las notas a pie de p\xE1gina tengan una referencia correspondiente antes del contenido de la nota al pie de p\xE1gina.","too-many-footnotes-error-message":"La clave de nota al pie '{FOOTNOTE_KEY}' tiene m\xE1s de 1 nota al pie que hace referencia a ella. Actualice las notas al pie para que solo haya una nota al pie por clave de nota al pie.","wrapper-yaml-error":"hubo un error en el yaml: {ERROR_MESSAGE}","wrapper-unknown-error":"huno un error desconocido: {ERROR_MESSAGE}","uneven-amount-of-quotes":"Las instancias de la cita `{QUOTE}` en el archivo no son pares, por lo que no podemos convertir las comillas rectas en comillas tipogr\xE1ficas."},"notice-text":{"empty-clipboard":"No hay contenido del portapapeles.","characters-added":"Caracteres a\xF1adidos","characters-removed":"Caracteres eliminados"},"linter-title":"Linter","empty-search-results-text":"No hay configuraci\xF3n que coincida con la b\xFAsqueda","warning-text":"Advertencia","file-backup-text":"Aseg\xFArese de haber realizado una copia de seguridad de sus archivos.",tabs:{names:{general:"Ajustes generales",custom:"Ajustes personalizados",yaml:"Ajustes de YAML",heading:"Ajustes del encabezado",content:"Ajustes del contenido",footnote:"Ajustes de notas al pie",spacing:"Ajustes del espacio en blanco",paste:"Ajustes de pegar",debug:"Ajustes de depurar"},"default-search-bar-text":"Buscar en todos los ajustes",general:{"lint-on-save":{name:"Analizar en guardar",description:"Analizar el archivo en el guardado manual (cuando se presiona `Ctrl + S` o cuando se ejecuta `:w` mientras se usan combinaciones de claves de vim)"},"display-message":{name:"Mostrar mensaje en analizar",description:"Mostrar el n\xFAmero de caracteres modificados despu\xE9s de analizar"},"folders-to-ignore":{name:"Carpetas para omitir",description:"Carpetas que se deben omitir al analizar todos los archivos o al guardar en l\xEDnea. Introducir rutas de carpeta separadas por nuevas l\xEDneas"},"override-locale":{name:"Anular configuraci\xF3n regional",description:"Establezca esta opci\xF3n si desea utilizar una configuraci\xF3n regional diferente de la predeterminada"},"same-as-system-locale":"Igual que el sistema ({SYS_LOCALE})","yaml-aliases-section-style":{name:"Estilo de secci\xF3n de alias de YAML",description:"El estilo de la secci\xF3n de alias de YAML"},"yaml-tags-section-style":{name:"Estilo de secci\xF3n de etiquetas de YAML",description:"El estilo de la secci\xF3n de etiquetas de YAML"},"default-escape-character":{name:"Car\xE1cter de escape predeterminado",description:"El car\xE1cter predeterminado que se va a usar para escapar de los valores YAML cuando no hay comillas simples y comillas dobles."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Eliminaci\xF3n de caracteres de escape innecesarios cuando est\xE1 en formato de matriz multil\xEDnea",description:"Los caracteres de escape para matrices de YAML multil\xEDnea no necesitan el mismo escape que las matrices de una sola l\xEDnea, por lo que cuando est\xE1n en formato multil\xEDnea, elimine los escapes adicionales que no son necesarios"},"number-of-dollar-signs-to-indicate-math-block":{name:"N\xFAmero de signos de d\xF3lar para indicar el bloque matem\xE1tico",description:"La cantidad de signos de d\xF3lar para considerar el contenido matem\xE1tico como un bloque matem\xE1tico en lugar de matem\xE1ticas en l\xEDnea"}},debug:{"log-level":{name:"Nivel de registro",description:"Los tipos de registros que el servicio permitir\xE1 registrar. El valor predeterminado es error."},"linter-config":{name:"Configuraci\xF3n de Linter",description:"El contenido del archivo data.json para Linter a partir de la carga de la p\xE1gina de configuraci\xF3n"},"log-collection":{name:"Recopilar registros al activar y desactivar el archivo actual",description:"Contin\xFAa y recopila registros cuando `Analizar en guardar` y analizar el archivo actual. Estos registros pueden ser \xFAtiles para depurar y crear informes de errores."},"linter-logs":{name:"Registros de Linter",description:"Los registros del \xFAltimo `Analizar en guardar` o del \xFAltimo archivo actual de analizar se ejecutan si est\xE1n habilitados."}}},options:{"custom-command":{name:"Comandos personalizados",description:"Los comandos personalizados son comandos de Obsidian que se ejecutan despu\xE9s de que Linter termina de ejecutar sus reglas regulares. Esto significa que no se ejecutan antes de que se ejecute la l\xF3gica de marca de tiempo YAML, por lo que pueden hacer que la marca de tiempo de YAML se active en la siguiente ejecuci\xF3n del Linter. Solo puede seleccionar un comando de Obsidian una vez. **_Note que esto actualmente solo funciona para analizar el archivo actual._**",warning:"Al seleccionar una opci\xF3n, aseg\xFArese de seleccionar la opci\xF3n usando el rat\xF3n o presionando la clave Intro. Es posible que otros m\xE9todos de selecci\xF3n no funcionen y solo se guardar\xE1n las selecciones de un comando de Obsidian real o una cadena vac\xEDa.","add-input-button-text":"Agregar nuevo comando","command-search-placeholder-text":"Comando de Obsidian","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"},"custom-replace":{name:"Reemplazo regex personalizado",description:"El reemplazo de regex personalizado se puede usar para reemplazar cualquier cosa que coincida con el valor de b\xFAsqueda de regex con el valor de reemplazo. Los valores de reemplazo y b\xFAsqueda deber\xE1n ser valores regex v\xE1lidos.",warning:"Use esto con precauci\xF3n si no conoce regex. Adem\xE1s, aseg\xFArese de no usar lookbehinds en su regex en dispositivos m\xF3viles iOS, ya que eso har\xE1 que falle analizar ya que no es compatible con esa plataforma.","add-input-button-text":"Agregar nuevo reemplazo de regex","regex-to-find-placeholder-text":"Regex para encontrar","flags-placeholder-text":"Marcas","regex-to-replace-placeholder-text":"Regex para reemplazar","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"}},rules:{"auto-correct-common-misspellings":{name:"Correcci\xF3n autom\xE1tica de errores ortogr\xE1ficos comunes",description:"Utiliza un diccionario de errores ortogr\xE1ficos comunes para convertirlos autom\xE1ticamente a su ortograf\xEDa correcta. Consulte [mapa de autocorrecci\xF3n](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) para obtener la lista completa de palabras corregidas autom\xE1ticamente.","ignore-words":{name:"Ignorar palabras",description:"Una lista separada por comas de palabras en min\xFAsculas para ignorar al corregir autom\xE1ticamente"}},"add-blockquote-indentation-on-paste":{name:"Agregar sangr\xEDa de blockquote en pegar",description:"Agrega blockquotes a todas menos a la primera l\xEDnea, cuando el cursor est\xE1 en una l\xEDnea blockquote/callout durante el pegado"},"blockquote-style":{name:"Estilo de cotizaci\xF3n en bloque",description:"Se asegura de que el estilo de la cita en bloque sea consistente.",style:{name:"Estilo",description:"El estilo utilizado en los indicadores de cotizaci\xF3n en bloque"}},"capitalize-headings":{name:"Poner may\xFAsculas en los encabezados",description:"Los encabezados deben estar formateados con may\xFAsculas",style:{name:"Estilo",description:"El estilo de may\xFAsculas que se va a utilizar"},"ignore-case-words":{name:"Ignorar palabras en may\xFAsculas y min\xFAsculas",description:"Solo aplique el estilo de may\xFAsculas y min\xFAsculas a las palabras que est\xE9n todas en min\xFAsculas"},"ignore-words":{name:"Ignorar palabras",description:"Una lista de palabras separadas por comas para ignorar al poner en may\xFAsculas"},"lowercase-words":{name:"Palabras en min\xFAsculas",description:"Una lista de palabras separadas por comas para mantener min\xFAsculas"}},"compact-yaml":{name:"YAML compacto",description:"Elimina las l\xEDneas en blanco iniciales y finales en la materia frontal de YAML.","inner-new-lines":{name:"Nuevas l\xEDneas internas",description:"Quitar nuevas l\xEDneas que no est\xE9n al principio o al final del YAML"}},"consecutive-blank-lines":{name:"L\xEDneas en blanco consecutivas",description:"Debe haber como m\xE1ximo una l\xEDnea en blanco consecutiva."},"convert-bullet-list-markers":{name:"Convertir marcadores de lista de vi\xF1etas",description:"Convierte s\xEDmbolos de marcador de lista de vi\xF1etas comunes en marcadores de lista de rebajas."},"convert-spaces-to-tabs":{name:"Convertir espacios en pesta\xF1as",description:"Convierte los espacios iniciales en pesta\xF1as.",tabsize:{name:"Tama\xF1o de la pesta\xF1a",description:"N\xFAmero de espacios que se convertir\xE1n en una pesta\xF1a"}},"emphasis-style":{name:"Estilo de \xE9nfasis",description:"Se asegura de que el estilo de \xE9nfasis sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar el contenido enfatizado"}},"empty-line-around-blockquotes":{name:"L\xEDnea vac\xEDa alrededor de blockquotes",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de blockquotes a menos que inicien o finalicen un documento. **Tenga en cuenta que una l\xEDnea vac\xEDa es un nivel menos de anidamiento para blockquotes o un car\xE1cter de nueva l\xEDnea.**"},"empty-line-around-code-fences":{name:"L\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo",description:"Garantiza que haya una l\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo a menos que inicien o finalicen un documento."},"empty-line-around-math-blocks":{name:"L\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"empty-line-around-tables":{name:"L\xEDnea vac\xEDa alrededor de las tablas",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de las tablas con sabor a github a menos que inicien o finalicen un documento."},"escape-yaml-special-characters":{name:"Evitar los caracteres especiales de YAML",description:`Escapa dos puntos con un espacio despu\xE9s de ellos (:), comillas simples (') y comillas dobles (") en YAML.`,"try-to-escape-single-line-arrays":{name:"Intente escapar las matrices de una sola l\xEDnea",description:'Intenta escapar de los valores de matriz suponiendo que una matriz comienza con "[", termina con "]" y tiene elementos que est\xE1n delimitados por ",".'}},"file-name-heading":{name:"Encabezado de nombre de archivo",description:"Inserta el nombre de archivo como un encabezado H1 si no existe ning\xFAn encabezado H1."},"footnote-after-punctuation":{name:"Nota al pie despu\xE9s de la puntuaci\xF3n",description:"Asegura que las referencias de notas al pie se coloquen despu\xE9s de la puntuaci\xF3n, no antes."},"force-yaml-escape":{name:"Forzar escape de YAML",description:"Escapa los valores de las claves YAML especificadas.","force-yaml-escape-keys":{name:"Forzar escape de YAML en las claves",description:"Utiliza el car\xE1cter de escape de YAML en las claves de YAML especificadas separadas por un nuevo car\xE1cter de l\xEDnea si a\xFAn no est\xE1 escapado. No lo use en matrices de YAML."}},"format-tags-in-yaml":{name:"Dar formato a las etiquetas de formato en YAML",description:"Elimine los hashtags de las etiquetas en el frontmatter del YAML, ya que hacen que las etiquetas no sean v\xE1lidas."},"format-yaml-array":{name:"Dar formato a las matrices de YAML",description:"Permite el formato de matrices regulares de YAML como multil\xEDnea o de una sola l\xEDnea y las `etiquetas` y `alias` pueden tener algunos formatos espec\xEDficos de YAML de Obsidian. Tenga en cuenta que una sola cadena a una sola l\xEDnea pasa de una sola entrada de cadena a una matriz de una sola l\xEDnea si hay m\xE1s de 1 entrada presente. Lo mismo es cierto para una sola cadena a multil\xEDnea, excepto que se convierte en una matriz multil\xEDnea.","alias-key":{name:"Dar formato a la secci\xF3n de alias de YAML",description:"Activa el formato para la secci\xF3n de alias yaml. No debe habilitar esta opci\xF3n junto con la regla `Alias de t\xEDtulo YAML`, ya que es posible que no funcionen bien juntos o que tengan diferentes estilos de formato seleccionados que causen resultados inesperados."},"tag-key":{name:"Dar formato a la secci\xF3n de etiquetas de YAML",description:"Activa el formato para la secci\xF3n de etiquetas de YAML."},"default-array-style":{name:"Estilo de secci\xF3n de matriz predeterminado de YAML",description:"El estilo de otras matrices de YAML que no son `etiquetas`, `alias` o en `Forzar valores de clave para que sean matrices de una sola l\xEDnea` y `Forzar valores de clave para que sean matrices multil\xEDnea`"},"default-array-keys":{name:"Dar formato a las secciones de matrices de YAML",description:"Activa el formato para matrices normales de YAML"},"force-single-line-array-style":{name:"Forzar que los valores de clave sean matrices de una sola l\xEDnea",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato de una sola l\xEDnea (deje vac\xEDo para deshabilitar esta opci\xF3n)"},"force-multi-line-array-style":{name:"Forzar que los valores de las claves sean matrices multil\xEDneas",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato multil\xEDnea (deje vac\xEDa para deshabilitar esta opci\xF3n)"}},"header-increment":{name:"Incremento de encabezado",description:"Los niveles de encabezado solo deben aumentar en un nivel a la vez","start-at-h2":{name:"Iniciar el incremento de encabezado en el nivel de encabezado 2",description:"Hace que el nivel de encabezado 2 sea el nivel de t\xEDtulo m\xEDnimo en un archivo para el incremento de encabezado y desplaza todos los encabezados en consecuencia para que se incrementen a partir de un encabezado de nivel 2."}},"heading-blank-lines":{name:"L\xEDneas en blanco de encabezado",description:"Todos los encabezados tienen una l\xEDnea en blanco antes y despu\xE9s (excepto cuando el encabezado est\xE1 al principio o al final del documento).",bottom:{name:"Abajo",description:"Insertar una l\xEDnea en blanco despu\xE9s de los encabezados"},"empty-line-after-yaml":{name:"L\xEDnea vac\xEDa entre el YAML y el encabezado",description:"Mantenga la l\xEDnea vac\xEDa entre el frontmatter del YAML y el encabezado"}},"headings-start-line":{name:"Comenzar los encabezados al principio de la l\xEDnea",description:"Los encabezados que no inician una l\xEDnea tendr\xE1n su espacio en blanco anterior eliminado para asegurarse de que se reconozcan como encabezados."},"insert-yaml-attributes":{name:"Insertar atributos de YAML",description:"Inserta los atributos especificados de YAML en el frontmatter del YAML. Coloque cada atributo en una sola l\xEDnea.","text-to-insert":{name:"Texto a insertar",description:"Texto para insertar en el frontmatter del YAML"}},"line-break-at-document-end":{name:"Salto de l\xEDnea al final del documento",description:"Asegura que haya exactamente un salto de l\xEDnea al final de un documento."},"move-footnotes-to-the-bottom":{name:"Mover las notas al pie a la parte inferior",description:"Mueva todas las notas al pie de p\xE1gina a la parte inferior del documento."},"move-math-block-indicators-to-their-own-line":{name:"Mover los indicadores de bloques matem\xE1ticos a su propia l\xEDnea",description:"Mueva todos los indicadores de bloques matem\xE1ticos iniciales y finales a sus propias l\xEDneas usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"move-tags-to-yaml":{name:"Mover etiquetas a YAML",description:"Mueva todas las etiquetas al frontmatter del YAML del documento.","how-to-handle-existing-tags":{name:"Operaci\xF3n de etiqueta corporal",description:"Lo qur se debe hacer con las etiquetas no ignoradas en el cuerpo del archivo una vez que se han movido al frontmatter"},"tags-to-ignore":{name:"Etiquetas para omitir",description:"Las etiquetas que no se mover\xE1n a la matriz de etiquetas ni se eliminar\xE1n del contenido del cuerpo si est\xE1 habilitado `Eliminar el hashtag de las etiquetas en el cuerpo del contenido`. Cada etiqueta debe estar en una nueva l\xEDnea y sin el `#`. **Aseg\xFArese de no incluir el hashtag en el nombre de la etiqueta.**"}},"no-bare-urls":{name:"Sin URL desnuda",description:"Encierra las direcciones URL desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles."},"ordered-list-style":{name:"Estilo de lista ordenada",description:"Se asegura de que las listas ordenadas siguen el estilo especificado. Tenga en cuenta que 2 espacios o 1 tabulaci\xF3n se considera un nivel de sangr\xEDa.","number-style":{name:"Estilo num\xE9rico",description:"El estilo num\xE9rico utilizado en los indicadores de lista ordenada"},"list-end-style":{name:"Estilo final del indicador de lista ordenada",description:"El car\xE1cter final de un indicador de lista ordenada"}},"paragraph-blank-lines":{name:"L\xEDneas en blanco del p\xE1rrafo",description:"Todos los p\xE1rrafos deben tener exactamente una l\xEDnea en blanco antes y despu\xE9s."},"prevent-double-checklist-indicator-on-paste":{name:"Evitar el indicador de doble lista de verificaci\xF3n en pegar",description:"Elimina el indicador de lista de verificaci\xF3n inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista de verificaci\xF3n"},"prevent-double-list-item-indicator-on-paste":{name:"Prevenir el indicador de elemento de lista doble al pegar",description:"Elimina el indicador de lista inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista"},"proper-ellipsis-on-paste":{name:"Puntos suspensivos adecuados al pegar",description:"Reemplaza tres puntos consecutivos por puntos suspensivos aunque tengan un espacio entre ellos en el texto a pegar"},"proper-ellipsis":{name:"Puntos suspensivos propios",description:"Reemplaza tres puntos consecutivos con puntos suspensivos."},"quote-style":{name:"Estilo de cotizaci\xF3n",description:"Actualiza las comillas en el contenido del cuerpo para que se actualicen a los estilos de comillas simples y dobles especificados.","single-quote-enabled":{name:"Habilitar `Estilo de comillas simples`",description:"Especifica que se debe utilizar el estilo de comillas simples seleccionado."},"single-quote-style":{name:"Estilo de comillas simples",description:"El estilo de las comillas simples a utilizar."},"double-quote-enabled":{name:"Habilitar `Estilo de comillas dobles`",description:"Especifica que se debe utilizar el estilo de comillas dobles seleccionado."},"double-quote-style":{name:"Estilo de comillas dobles",description:"El estilo de comillas dobles a utilizar."}},"re-index-footnotes":{name:"Volver a indexar notas al pie",description:"Vuelve a indexar las notas al pie de p\xE1gina y las notas al pie, seg\xFAn el orden de aparici\xF3n (NOTA: esta regla *no* funciona si hay m\xE1s de una nota al pie para una clave)."},"remove-consecutive-list-markers":{name:"Eliminar marcadores de lista consecutiva",description:"Elimina marcadores de lista consecutivos. \xDAtil al copiar y pegar elementos de la lista."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Eliminar l\xEDneas vac\xEDas entre marcadores de lista y listas de verificaci\xF3n",description:"No debe haber l\xEDneas vac\xEDas entre los marcadores de lista y las listas de verificaci\xF3n."},"remove-empty-list-markers":{name:"Eliminar marcadores de lista vac\xEDa",description:"Elimina marcadores de listas vac\xEDas, es decir, lista de elementos sin contenido."},"remove-hyphenated-line-breaks":{name:"Eliminar saltos de l\xEDnea con gui\xF3n",description:"Elimina los saltos de l\xEDnea con gui\xF3n. \xDAtil al pegar texto de libros de texto."},"remove-hyphens-on-paste":{name:"Eliminar guiones al pegar",description:"Elimina guiones del texto al pegar"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Eliminar espacios en blanco iniciales o finales al pegar",description:"Elimina cualquier espacio en blanco inicial que no sea una pesta\xF1a y todos los espacios en blanco finales para que el texto se pegue"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Eliminar las notas al pie sobrantes de la cita al pegar",description:"Elimina las referencias de notas al pie sobrantes para que el texto se pegue"},"remove-link-spacing":{name:"Quitar el espacio entre enlaces",description:"Elimina el espacio alrededor del texto del enlace."},"remove-multiple-blank-lines-on-paste":{name:"Eliminar varias l\xEDneas en blanco al pegar",description:"Condensa varias l\xEDneas en blanco en una l\xEDnea en blanco para que el texto se pegue"},"remove-multiple-spaces":{name:"Quitar varios espacios",description:"Elimina dos o m\xE1s espacios consecutivos. Ignora los espacios al principio y al final de la l\xEDnea."},"remove-space-around-characters":{name:"Quitar el espacio alrededor de los caracteres",description:"Garantiza que determinados caracteres no est\xE9n rodeados de espacios en blanco (ya sean espacios individuales o tabulaciones). Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","include-fullwidth-forms":{name:"Incluir formularios de ancho completo",description:'Incluir bloque Unicode de formularios de ancho completo'},"include-cjk-symbols-and-punctuation":{name:"Incluir s\xEDmbolos de CJK y puntuaci\xF3n",description:'Incluir Bloque Unicode de s\xEDmbolos y puntuaci\xF3n de CJK'},"include-dashes":{name:"Incluir guiones",description:"Incluir gui\xF3n corto (\u2013) y gui\xF3n largo (\u2014)"},"other-symbols":{name:"Otros s\xEDmbolos",description:"Otros s\xEDmbolos para incluir"}},"remove-space-before-or-after-characters":{name:"Quitar el espacio antes o despu\xE9s de los caracteres",description:"Elimina el espacio antes de los caracteres especificados y despu\xE9s de los caracteres especificados. Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","characters-to-remove-space-before":{name:"Eliminar espacio antes de los caracteres",description:"Elimina el espacio antes de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"},"characters-to-remove-space-after":{name:"Eliminar espacio despu\xE9s de los caracteres",description:"Elimina el espacio despu\xE9s de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"}},"remove-trailing-punctuation-in-heading":{name:"Eliminar la puntuaci\xF3n final en el encabezado",description:"Elimina la puntuaci\xF3n especificada al final de los encabezados, asegur\xE1ndose de ignorar el punto y coma al final de [referencias de entidades de HTML](https://es.wikipedia.org/wiki/Anexo:Referencias_a_entidades_de_caracteres_XML_y_HTML).","punctuation-to-remove":{name:"Puntuaci\xF3n final",description:"La puntuaci\xF3n final que se eliminar\xE1 de los encabezados del archivo."}},"remove-yaml-keys":{name:"Eliminar claves de YAML",description:"Elimina las claves especificadas de YAML","yaml-keys-to-remove":{name:"Claves de YAML para eliminar",description:"Las claves de YAML para eliminar del frontmatter del YAML con o sin dos puntos"}},"space-after-list-markers":{name:"Espacio despu\xE9s de los marcadores de lista",description:"Debe haber un solo espacio despu\xE9s de los marcadores de lista y las casillas de verificaci\xF3n."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Espacio entre chino japon\xE9s o coreano e ingl\xE9s o n\xFAmeros",description:"Garantiza que el chino, el japon\xE9s o el coreano y el ingl\xE9s o los n\xFAmeros est\xE9n separados por un solo espacio. Sigue estas [directrices](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Estilo fuerte",description:"Se asegura de que el estilo fuerte sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar contenido fuerte/en negrita"}},"trailing-spaces":{name:"Espacios finales",description:"Elimina espacios adicionales despu\xE9s de cada l\xEDnea.","twp-space-line-break":{name:"Salto de l\xEDnea de dos espacios",description:'Ignore dos espacios seguidos de un salto de l\xEDnea ("Regla de dos espacios").'}},"two-spaces-between-lines-with-content":{name:"Dos espacios entre l\xEDneas con contenido",description:"Se asegura de que se agreguen dos espacios al final de las l\xEDneas con contenido que contin\xFAa en la siguiente l\xEDnea para p\xE1rrafos, comillas y elementos de lista"},"unordered-list-style":{name:"Estilo de lista desordenada",description:"Se asegura de que las listas desordenadas sigan el estilo especificado.","list-style":{name:"Estilo de elemento de lista",description:"El estilo de elemento de lista para usar en listas desordenadas"}},"yaml-key-sort":{name:"Clasificaci\xF3n de clave de YAML",description:"Ordena las claves de YAML seg\xFAn el orden y la prioridad especificados. Nota: tambi\xE9n puede eliminar las l\xEDneas en blanco.","yaml-key-priority-sort-order":{name:"Orden de clasificaci\xF3n de prioridad de clave de YAML",description:"El orden en el que se ordenan las claves con una en cada l\xEDnea donde se ordena en el orden que se encuentra en la lista"},"priority-keys-at-start-of-yaml":{name:"Claves de prioridad al inicio del YAML",description:"El orden de clasificaci\xF3n de prioridad clave de YAML se coloca al comienzo del frontmatter del YAML"},"yaml-sort-order-for-other-keys":{name:"Orden de clasificaci\xF3n de YAML para otras claves",description:"La forma en que ordenar las claves que no se encuentran en el \xE1rea de texto `Orden de clasificaci\xF3n de prioridad de clave de YAML`"}},"yaml-timestamp":{name:"Marca de tiempo de YAML",description:"Lleve un registro de la fecha en que se edit\xF3 el archivo por \xFAltima vez en el frente del YAML. Obtiene las fechas de los metadatos del archivo.","date-created":{name:"Fecha de creaci\xF3n",description:"Inserte la fecha de creaci\xF3n del archivo"},"date-created-key":{name:"Clave de fecha de creaci\xF3n",description:"La clave de YAML para usar para la fecha de creaci\xF3n"},"force-retention-of-create-value":{name:"Forzar la fecha de creaci\xF3n de la retenci\xF3n del valor clave",description:"Reutiliza el valor en el frontmatter del YAML para la fecha de creaci\xF3n en lugar de los metadatos del archivo, lo que es \xFAtil para evitar que los cambios en los metadatos del archivo provoquen que el valor cambie a un valor diferente."},"date-modified":{name:"Fecha modificada",description:"Inserte la fecha en que se modific\xF3 el archivo por \xFAltima vez"},"date-modified-key":{name:"Clave de fecha modificada",description:"La clave de YAML para usar para la fecha de modificaci\xF3n"},format:{name:"Formato",description:"Formato de fecha de Moment a usar (ver [Opciones de formato de Moment](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"Alias de t\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en la secci\xF3n de alias de YAML frontmatter. Obtiene el t\xEDtulo del primer H1 o nombre de archivo.","preserve-existing-alias-section-style":{name:"Conservar el estilo de secci\xF3n de alias existente",description:"Si se establece, la configuraci\xF3n `Estilo de secci\xF3n de alias de YAML` se aplica solo a las secciones reci\xE9n creadas"},"keep-alias-that-matches-the-filename":{name:"Mantenga el alias que coincida con el nombre del archivo",description:"Estos alias suelen ser redundantes."},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use la clave de YAML `linter-yaml-title-alias` para ayudar con los cambios de nombre de archivo y encabezado",description:"Si se establece, cuando cambia el primer encabezado H1 o cambia el nombre de archivo si el primer H1 no est\xE1 presente, el alias anterior almacenado en esta clave se reemplazar\xE1 con el nuevo valor en lugar de simplemente insertar una nueva entrada en la matriz de alias."}},"yaml-title":{name:"T\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en el frontmatter de YAML. Obtiene el t\xEDtulo seg\xFAn el modo seleccionado.","title-key":{name:"Clave de t\xEDtulo",description:"La clave de YAML para usar para el t\xEDtulo"},mode:{name:"Modo",description:"El m\xE9todo a utilizar para obtener el t\xEDtulo"}}},enums:{"Title Case":"Titulo del Caso","ALL CAPS":"TODO MAY\xDASCULAS","First letter":"Primera letra",".":".",")":")",ERROR:"error",TRACE:"trazar",DEBUG:"depurar",INFO:"informaci\xF3n",WARN:"advertencia",SILENT:"silencio",ascending:"ascendente",lazy:"perezoso",Nothing:"nada","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisco",underscore:"guion bajo",consistent:"congruente","-":"-","*":"*","+":"+",space:"espacio","no space":"sin espacio",None:"nada","Ascending Alphabetical":"Ascendente alfab\xE9tico","Descending Alphabetical":"Descendiente alfab\xE9tico","multi-line":"multil\xEDnea","single-line":"linea sola","single string to single-line":"una sola cadena a una sola l\xEDnea","single string to multi-line":"cadena \xFAnica a multil\xEDnea","single string comma delimited":"cadena \xFAnica delimitada por comas","single string space delimited":"espacio de una sola cadena delimitado","single-line space delimited":"espacio de una sola l\xEDnea delimitado","first-h1":"primer encabezado de nivel 1","first-h1-or-filename-if-h1-missing":"primer encabezado de nivel 1 o nombre de archivo si falta el encabezado de primer nivel 1",filename:"nombre del archivo","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var Bc={};var Fc={};var Rc={};var Dc={};var Nc={};var jc={};var Pc={};var Kc={};var $c={};var Hc={};var Yc={};var Wc={};var Vc={};var Uc={};var ua={};var Gc={commands:{"lint-file":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519"},"lint-file-unless-ignored":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF08\u9664\u4E86\u88AB\u5FFD\u7565\u7684\u6587\u4EF6\uFF09"},"lint-all-files":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","errors-message-singular":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u4F46\u6709 1 \u4E2A\u9519\u8BEF","errors-message-plural":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u4F46\u6709 {NUM} \u4E2A\u9519\u8BEF","start-message":"\u8FD9\u5C06\u7F16\u8F91\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6..."},"lint-all-files-in-folder":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6","start-message":"\u8FD9\u5C06\u7F16\u8F91 {FOLDER_NAME} \u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316 {FOLDER_NAME} \u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316 {FOLDER_NAME} \u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6...","error-message":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316 {FOLDER_NAME} \u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6","message-singular":"\u5DF2\u683C\u5F0F\u5316 {FOLDER_NAME} \u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6\uFF0C\u4F46\u6709 1 \u4E2A\u9519\u8BEF","message-plural":"\u5DF2\u683C\u5F0F\u5316 {FOLDER_NAME} \u4E2D\u7684 {FILE_COUNT} \u4E2A\u6587\u4EF6\uFF0C\u4F46\u6709 {ERROR_COUNT} \u4E2A\u9519\u8BEF."},"paste-as-plain-text":{name:"\u7C98\u8D34\u4E3A\u7EAF\u6587\u672C\u4E14\u4E0D\u63D0\u9192"},"lint-file-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6"},"lint-folder-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939"}},logs:{"plugin-load":"\u6B63\u5728\u52A0\u8F7D\u63D2\u4EF6","plugin-unload":"\u6B63\u5728\u5378\u8F7D\u63D2\u4EF6","folder-lint":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939","linter-run":"\u6B63\u5728\u8FD0\u884CLinter","paste-link-warning":"\u4E2D\u6B62\u7C98\u8D34 lint \u56E0\u4E3A\u526A\u8D34\u677F\u5185\u5BB9\u662F\u4E00\u4E2A\u94FE\u63A5\uFF0C\u8FD9\u6837\u505A\u5C06\u907F\u514D\u4E0E\u5176\u4ED6\u4FEE\u6539\u7C98\u8D34\u7684\u63D2\u4EF6\u53D1\u751F\u51B2\u7A81","see-console":"\u8BF7\u67E5\u770B\u63A7\u5236\u53F0\u4EE5\u83B7\u53D6\u66F4\u591A\u4FE1\u606F","unknown-error":"\u683C\u5F0F\u5316\u8FC7\u7A0B\u53D1\u751F\u672A\u77E5\u9519\u8BEF","moment-locale-not-found":"\u5C1D\u8BD5\u901A\u8FC7 Moment.js \u5207\u6362\u5230 {MOMENT_LOCALE}, \u5B9E\u9645\u5207\u6362\u5230 {CURRENT_LOCALE}","pre-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u9AD8\u7684\u89C4\u5219","post-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u4F4E\u7684\u89C4\u5219","rule-running":"\u6B63\u5728\u8FD0\u884C\u89C4\u5219","custom-regex":"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-regex":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-lint-command":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","custom-lint-duplicate-warning":'\u4F60\u4E0D\u80FD\u8FD0\u884C\u540C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89C4\u5219 ("{COMMAND_NAME}") \u4E24\u6B21',"custom-lint-error-message":"\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","disabled-text":"\u5DF2\u7981\u7528","run-rule-text":"\u8FD0\u884C\u4E2D","timing-key-not-found":"\u8BA1\u65F6\u952E '{TIMING_KEY}' \u5728\u8BA1\u65F6\u4FE1\u606F\u5217\u8868\u4E2D\u4E0D\u5B58\u5728\uFF0C\u5DF2\u5FFD\u7565","milliseconds-abbreviation":"\u6BEB\u79D2","invalid-date-format-error":"\u65E0\u6CD5\u89E3\u6790\u6216\u786E\u5B9A'{FILE_NAME}'\u4E2D\u7684\u521B\u5EFA\u65E5\u671F'{DATE}'\u7684\u683C\u5F0F\uFF0C\u521B\u5EFA\u65E5\u671F\u672A\u8FDB\u884C\u4FEE\u6539","invalid-delimiter-error-message":"\u5206\u9694\u7B26\u53EA\u80FD\u4E3A\u5355\u4E2A\u5B57\u7B26","missing-footnote-error-message":"\u811A\u6CE8 \u201C{FOOTNOTE}\u201D \u5728\u811A\u6CE8\u5185\u5BB9\u4E4B\u524D\u6CA1\u6709\u5BF9\u5E94\u7684\u811A\u6CE8\u5F15\u7528\uFF0C\u65E0\u6CD5\u5904\u7406\u3002\u8BF7\u786E\u4FDD\u6240\u6709\u811A\u6CE8\u5728\u811A\u6CE8\u5185\u5BB9\u4E4B\u524D\u90FD\u6709\u76F8\u5E94\u7684\u5F15\u7528\u3002","too-many-footnotes-error-message":"\u811A\u6CE8 '{FOOTNOTE_KEY}' \u6709\u8D85\u8FC71\u4E2A\u811A\u6CE8\u5F15\u7528\uFF0C\u8BF7\u66F4\u65B0\u811A\u6CE8\u4F7F\u5F97\u4E00\u4E2A\u811A\u6CE8\u7F16\u53F7\u5BF9\u5E94\u4E00\u4E2A\u811A\u6CE8","wrapper-yaml-error":"yaml\u51FA\u73B0\u9519\u8BEF: {ERROR_MESSAGE}","wrapper-unknown-error":"\u672A\u77E5\u9519\u8BEF: {ERROR_MESSAGE}","uneven-amount-of-quotes":"`{QUOTE}` \u5F15\u53F7\u5728\u6587\u4EF6\u4E2D\u7684\u5B9E\u4F8B\u4E0D\u662F\u5076\u6570\uFF0C\u6240\u4EE5\u6211\u4EEC\u65E0\u6CD5\u5C06\u76F4\u5F15\u53F7\u8F6C\u6362\u4E3A\u5F2F\u5F15\u53F7"},"notice-text":{"empty-clipboard":"\u526A\u8D34\u677F\u5185\u5BB9\u4E3A\u7A7A","characters-added":"\u5B57\u7B26\u5DF2\u6DFB\u52A0","characters-removed":"\u5B57\u7B26\u5DF2\u79FB\u9664"},"linter-title":"Linter","empty-search-results-text":"\u6CA1\u6709\u5339\u914D\u7684\u8BBE\u7F6E\u9879","warning-text":"\u8B66\u544A","file-backup-text":"\u8BF7\u786E\u4FDD\u4F60\u5DF2\u5907\u4EFD\u6587\u4EF6",tabs:{names:{general:"\u901A\u7528\u8BBE\u7F6E",custom:"\u81EA\u5B9A\u4E49\u8BBE\u7F6E",yaml:"YAML\u8BBE\u7F6E",heading:"\u6807\u9898\u8BBE\u7F6E",content:"\u811A\u6CE8\u8BBE\u7F6E",footnote:"\u5185\u5BB9\u8BBE\u7F6E",spacing:"\u95F4\u8DDD\u8BBE\u7F6E",paste:"\u7C98\u8D34\u8BBE\u7F6E",debug:"Debug\u8BBE\u7F6E"},"default-search-bar-text":"\u641C\u7D22\u6240\u6709\u8BBE\u7F6E\u9879",general:{"lint-on-save":{name:"\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6",description:"\u624B\u52A8\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316(\u5F53\u6309 `Ctrl + S` \u65F6\u6216\u8005\u4F7F\u7528vim\u6A21\u5F0F `:w` \u65F6)"},"display-message":{name:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u6D88\u606F",description:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u4FEE\u6539\u4E86\u591A\u5C11\u5B57\u7B26"},"folders-to-ignore":{name:"\u5FFD\u7565\u6587\u4EF6\u5939",description:"\u5F53\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u6216\u8005\u683C\u5F0F\u5316\u4FDD\u5B58\u65F6\u9700\u8981\u5FFD\u7565\u7684\u6587\u4EF6\uFF0C\u6BCF\u884C\u8F93\u5165\u4E00\u4E2A\u6587\u4EF6\u5939\u8DEF\u5F84"},"override-locale":{name:"\u8986\u76D6\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00",description:"\u5982\u679C\u4F60\u60F3\u4F7F\u7528\u4E0D\u540C\u4E8E\u9ED8\u8BA4\u7684\u5730\u533A\u8BED\u8A00\u9700\u8981\u8BBE\u7F6E\u6B64\u9879"},"same-as-system-locale":"\u548C\u7CFB\u7EDF\u5730\u533A\u8BED\u8A00 ({SYS_LOCALE}) \u4E00\u81F4","yaml-aliases-section-style":{name:"YAML \u522B\u540D\u90E8\u5206\u7684\u6837\u5F0F",description:"YAML aliases \u90E8\u5206\u7684\u6837\u5F0F"},"yaml-tags-section-style":{name:"YAML tags \u90E8\u5206\u7684\u6837\u5F0F",description:"YAML tags \u90E8\u5206\u7684\u6837\u5F0F"},"default-escape-character":{name:"\u9ED8\u8BA4\u8F6C\u4E49\u5B57\u7B26",description:"\u5F53\u5355\u5F15\u53F7\u548C\u53CC\u5F15\u53F7\u4E0D\u5B58\u5728\u65F6\u7528\u4E8E\u8F6C\u4E49 YAML \u503C\u7684\u9ED8\u8BA4\u5B57\u7B26"},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\u5F53\u4F7F\u7528\u591A\u884C\u6570\u7EC4\u683C\u5F0F\u65F6\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26",description:"\u591A\u884C YAML \u6570\u7EC4\u7684\u8F6C\u4E49\u5B57\u7B26\u4E0D\u9700\u8981\u4E0E\u5355\u884C\u6570\u7EC4\u76F8\u540C\u7684\u8F6C\u4E49\uFF0C\u56E0\u6B64\u5728\u591A\u884C\u683C\u5F0F\u65F6\uFF0C\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u989D\u5916\u8F6C\u4E49"},"number-of-dollar-signs-to-indicate-math-block":{name:"\u6307\u793A\u6570\u5B66\u5757\u7684 $ \u7B26\u53F7\u6570\u91CF",description:"\u5C06\u6570\u5B66\u5185\u5BB9\u89C6\u4E3A\u6570\u5B66\u5757\u800C\u4E0D\u662F\u5185\u8054\u6570\u5B66\u7684 $ \u7B26\u53F7\u7684\u6570\u91CF"}},debug:{"log-level":{name:"\u65E5\u5FD7\u7EA7\u522B",description:"\u5141\u8BB8\u6253\u5370\u7684\u65E5\u5FD7\u7C7B\u578B\uFF0C\u9ED8\u8BA4\u662F ERROR"},"linter-config":{name:"\u683C\u5F0F\u5316\u8BBE\u7F6E",description:"\u5728\u8BBE\u7F6E\u9875\u9762\u52A0\u8F7D\u65F6\uFF0CLinter \u7684 data.json \u7684\u5185\u5BB9"},"log-collection":{name:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u6863\u65F6\u6536\u96C6\u65E5\u5FD7",description:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u6863\u65F6\u6536\u96C6\u65E5\u5FD7\u3002\u8FD9\u4E9B\u65E5\u5FD7\u6709\u52A9\u4E8E\u8C03\u8BD5\u548C\u521B\u5EFA\u9519\u8BEF\u62A5\u544A\u3002"},"linter-logs":{name:"Linter \u65E5\u5FD7",description:"\u5982\u679C\u5F00\u542F\uFF0C\u5219\u6700\u540E\u4E00\u6B21\u683C\u5F0F\u5316\u65F6\u4FDD\u5B58\u6216\u8005\u683C\u5F0F\u5316\u5F53\u524D\u6587\u6863\u65F6\u751F\u6210\u65E5\u5FD7\u65E5\u5FD7"}}},options:{"custom-command":{name:"\u81EA\u5B9A\u4E49\u547D\u4EE4",description:"\u81EA\u5B9A\u4E49\u547D\u4EE4\u662F\u5728 linter \u5B8C\u6210\u8FD0\u884C\u5176\u5E38\u89C4\u89C4\u5219\u540E\u8FD0\u884C\u7684 Obsidian \u547D\u4EE4\u3002\u8FD9\u610F\u5473\u7740\u5B83\u4EEC\u4E0D\u4F1A\u5728 YAML \u65F6\u95F4\u6233\u903B\u8F91\u8FD0\u884C\u4E4B\u524D\u8FD0\u884C\uFF0C\u56E0\u6B64\u5B83\u4EEC\u53EF\u80FD\u4F1A\u5BFC\u81F4\u5728\u4E0B\u6B21\u8FD0\u884C linter \u65F6\u89E6\u53D1 YAML \u65F6\u95F4\u6233\u3002\u60A8\u53EA\u80FD\u9009\u62E9\u4E00\u6B21 Obsidian \u547D\u4EE4\u3002**_\u6CE8\u610F \u8FD9\u76EE\u524D\u4EC5\u9002\u7528\u4E8E\u68C0\u67E5\u5F53\u524D\u6587\u4EF6._**",warning:"\u9009\u62E9\u9009\u9879\u65F6\uFF0C\u8BF7\u786E\u4FDD\u4F7F\u7528\u9F20\u6807\u6216\u6309\u56DE\u8F66\u952E\u9009\u62E9\u8BE5\u9009\u9879\u3002\u5176\u4ED6\u9009\u62E9\u65B9\u6CD5\u53EF\u80FD\u4E0D\u8D77\u4F5C\u7528\uFF0C\u53EA\u4F1A\u4FDD\u5B58\u5B9E\u9645 Obsidian \u547D\u4EE4\u6216\u7A7A\u5B57\u7B26\u4E32\u7684\u9009\u62E9\u3002","add-input-button-text":"\u6DFB\u52A0\u65B0\u547D\u4EE4","command-search-placeholder-text":"Obsidian \u547D\u4EE4","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"},"custom-replace":{name:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362",description:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362\u53EF\u7528\u4E8E\u5C06\u67E5\u627E\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\u7684\u4EFB\u4F55\u5185\u5BB9\u66FF\u6362\u4E3A\u66FF\u6362\u503C\u3002\u66FF\u6362\u548C\u67E5\u627E\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u503C",warning:"\u5982\u679C\u60A8\u4E0D\u77E5\u9053\u6B63\u5219\u8868\u8FBE\u5F0F\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528\u5B83\u3002\u53E6\u5916\uFF0C\u8BF7\u786E\u4FDD\u60A8\u4E0D\u8981\u5728iOS\u79FB\u52A8\u8BBE\u5907\u4E0A\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u4E2D\u4F7F\u7528\u56DE\u6EAF\uFF0C\u56E0\u4E3A\u8FD9\u4F1A\u5BFC\u81F4\u683C\u5F0F\u5316\u5931\u8D25\uFF0C\u56E0\u4E3A\u8BE5\u5E73\u53F0\u4E0D\u652F\u6301","add-input-button-text":"\u6DFB\u52A0\u65B0\u7684\u6B63\u5219\u66FF\u6362","regex-to-find-placeholder-text":"\u6B63\u5219\u67E5\u627E","flags-placeholder-text":"flags","regex-to-replace-placeholder-text":"\u6B63\u5219\u66FF\u6362","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"}},rules:{"auto-correct-common-misspellings":{name:"\u81EA\u52A8\u66F4\u6B63\u5E38\u89C1\u7684\u62FC\u5199\u9519\u8BEF",description:"\u4F7F\u7528\u5E38\u89C1\u62FC\u5199\u9519\u8BEF\u7684\u5B57\u5178\u81EA\u52A8\u5C06\u5B83\u4EEC\u8F6C\u6362\u4E3A\u6B63\u786E\u7684\u62FC\u5199\u3002\u6709\u5173\u81EA\u52A8\u66F4\u6B63\u5355\u8BCD\u7684\u5B8C\u6574\u5217\u8868\uFF0C\u8BF7\u53C2\u9605 [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts)","ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5C0F\u5199\u5355\u8BCD\u5217\u8868\uFF0C\u5728\u81EA\u52A8\u66F4\u6B63\u65F6\u4F1A\u5FFD\u7565"}},"add-blockquote-indentation-on-paste":{name:"\u7C98\u8D34\u65F6\u6DFB\u52A0\u5757\u5F15\u7528(blockquote)\u7F29\u8FDB",description:"\u5728\u7C98\u8D34\u8FC7\u7A0B\u4E2D\u5149\u6807\u4F4D\u4E8E\u5757\u5F15\u7528/\u6807\u6CE8\u884C\u4E2D\u65F6\uFF0C\u5C06\u5757\u5F15\u7528\u6DFB\u52A0\u5230\u9664\u7B2C\u4E00\u884C\u4EE5\u5916\u7684\u6240\u6709\u884C"},"blockquote-style":{name:"\u5757\u5F15\u7528\u6837\u5F0F",description:"\u786E\u4FDD\u5757\u5F15\u7528\u6837\u5F0F\u4E00\u81F4\u3002",style:{name:"\u98CE\u683C",description:"\u5757\u5F15\u7528\u6307\u793A\u5668\u4E0A\u4F7F\u7528\u7684\u6837\u5F0F"}},"capitalize-headings":{name:"\u5927\u5199\u6807\u9898(Headdings)",description:"\u6807\u9898\u4F1A\u5728\u683C\u5F0F\u5316\u540E\u5927\u5199",style:{name:"\u6837\u5F0F",description:"\u5927\u5199\u7684\u65B9\u5F0F"},"ignore-case-words":{name:"\u5FFD\u7565\u5927\u5C0F\u5199\u7684\u5355\u8BCD",description:"\u4EC5\u5C06\u6807\u9898\u5927\u5C0F\u5199\u6837\u5F0F\u5E94\u7528\u4E8E\u5168\u90E8\u5C0F\u5199\u7684\u5355\u8BCD"},"ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u5927\u5199\u65F6\u8981\u5FFD\u7565\u7684\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5355\u8BCD\u5217\u8868"},"lowercase-words":{name:"\u5C0F\u5199\u7684\u5355\u8BCD",description:"\u4FDD\u6301\u5C0F\u5199\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5355\u8BCD\u5217\u8868"}},"compact-yaml":{name:"\u7CBE\u7B80YAML",description:"\u79FB\u9664YAML\u524D\u540E\u7684\u7A7A\u884C","inner-new-lines":{name:"\u5185\u90E8\u65B0\u884C",description:"\u5220\u9664\u4E0D\u5728 YAML \u5F00\u5934\u6216\u7ED3\u5C3E\u7684\u65B0\u884C"}},"consecutive-blank-lines":{name:"\u8FDE\u7EED\u7A7A\u767D\u884C",description:"\u6700\u591A\u5E94\u8BE5\u6709\u4E00\u4E2A\u8FDE\u7EED\u7684\u7A7A\u884C"},"convert-bullet-list-markers":{name:"\u8F6C\u6362\u5B50\u5F39\u5217\u8868\u6807\u8BB0",description:"\u5C06\u5E38\u7528 bullet list \u5217\u8868\u6807\u8BB0\u8F6C\u6362\u4E3A Markdown \u5217\u8868\u6807\u8BB0"},"convert-spaces-to-tabs":{name:"\u8F6C\u6362\u7A7A\u683C\u4E3A\u5236\u8868\u7B26",description:"\u5C06\u884C\u9996\u7A7A\u683C\u8F6C\u6362\u4E3A\u5236\u8868\u7B26",tabsize:{name:"\u5236\u8868\u7B26\u5BBD\u5EA6",description:"\u5BF9\u5E94\u7684\u7A7A\u683C\u6570\u91CF\u8F6C\u53D8\u4E3A\u5236\u8868\u7B26"}},"emphasis-style":{name:"\u5F3A\u8C03\u98CE\u683C",description:"\u7528\u4E8E\u786E\u4FDD\u5F3A\u8C03\u7684\u98CE\u683C\u4E00\u81F4",style:{name:"\u98CE\u683C",description:"\u7528\u4E8E\u8868\u793A\u5F3A\u8C03\u5185\u5BB9\u7684\u98CE\u683C"}},"empty-line-around-blockquotes":{name:"\u5F15\u7528\u5757 Blockquotes \u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u5F15\u7528\u5757 Blockquote\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u548C\u7ED3\u5C3E\u3002**\u6CE8\u610F\uFF0C\u8FD9\u91CC\u5D4C\u5957\u5757\u5F15\u7528\u4E5F\u4F1A\u6709\u5BF9\u5E94\u7684\u7A7A\u884C**"},"empty-line-around-code-fences":{name:"\u4EE3\u7801\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u4EE3\u7801\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"empty-line-around-math-blocks":{name:"\u6570\u5B66\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u6570\u5B66\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u4F7F\u7528\u201C\u8868\u793A\u6570\u5B66\u5757\u7684\u7F8E\u5143\u7B26\u53F7\u6570\u201D\u6765\u786E\u5B9A\u5355\u884C\u6570\u5B66\u7684\u6570\u5B66\u5757\u7684\u7F8E\u5143\u7B26\u53F7\u6570\u3002"},"empty-line-around-tables":{name:"\u8868\u683C\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD github \u98CE\u683C\u7684\u8868\u683C\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u59CB\u6216\u7ED3\u5C3E"},"escape-yaml-special-characters":{name:"\u8F6C\u4E49YAML\u7279\u6B8A\u5B57\u7B26",description:`\u8F6C\u4E49YAML\u4E2D\u7684\u5192\u53F7\uFF08: \uFF09\uFF0C\u5355\u5F15\u53F7\uFF08'\uFF09\u548C\u53CC\u5F15\u53F7\uFF08"\uFF09\u3002`,"try-to-escape-single-line-arrays":{name:"\u5C1D\u8BD5\u8F6C\u4E49\u5355\u884C\u6570\u7EC4",description:"\u5C1D\u8BD5\u8F6C\u4E49\u6570\u7EC4\u503C\uFF0C\u5047\u8BBE\u4E00\u4E2A\u6570\u7EC4\u4EE5\u201C[\u201D\u5F00\u5934\uFF0C\u201C]\u201D\u7ED3\u5C3E\uFF0C\u5E76\u4E14\u5177\u6709\u7531\u201C\uFF0C\u201D\u5206\u9694\u7684\u9879\u3002"}},"file-name-heading":{name:"\u6587\u4EF6\u540D\u4F5C\u4E3A\u6807\u9898",description:"\u5982\u679C\u6CA1\u6709H1\u6807\u9898\uFF0C\u5219\u63D2\u5165\u6587\u4EF6\u540D\u4F5C\u4E3AH1\u6807\u9898\u3002"},"footnote-after-punctuation":{name:"\u6807\u70B9\u7B26\u53F7\u540E\u811A\u6CE8",description:"\u786E\u4FDD\u811A\u6CE8\u5F15\u7528\u7F6E\u4E8E\u6807\u70B9\u7B26\u53F7\u4E4B\u540E\uFF0C\u800C\u4E0D\u662F\u4E4B\u524D\u3002"},"force-yaml-escape":{name:"\u5F3A\u5236YAML\u8F6C\u4E49",description:"\u8F6C\u4E49\u6307\u5B9AYAML\u952E\u7684\u503C\u3002","force-yaml-escape-keys":{name:"\u5F3A\u5236\u5BF9YAML\u952E\u8FDB\u884C\u8F6C\u4E49",description:"\u5982\u679C\u672A\u8F6C\u4E49\uFF0C\u5219\u4F7F\u7528YAML\u8F6C\u4E49\u5B57\u7B26\u5BF9\u7531\u6362\u884C\u7B26\u5206\u9694\u7684\u6307\u5B9AYAML\u952E\u8FDB\u884C\u8F6C\u4E49\u3002 \u4E0D\u8981\u5728YAML\u6570\u7EC4\u4E0A\u4F7F\u7528\u5B83\u3002"}},"format-tags-in-yaml":{name:"\u683C\u5F0F\u5316YAML\u4E2D\u7684\u6807\u7B7E",description:"\u4ECEYAML\u524D\u7F6E\u8BED\u8A00\u4E2D\u7684\u6807\u7B7E\u4E2D\u53BB\u9664\u4E95\u53F7\uFF0C\u56E0\u4E3A\u5B83\u4EEC\u4F1A\u4F7F\u6807\u7B7E\u65E0\u6548\u3002"},"format-yaml-array":{name:"\u683C\u5F0F\u5316YAML\u6570\u7EC4",description:"\u5141\u8BB8\u5C06\u5E38\u89C4YAML\u6570\u7EC4\u683C\u5F0F\u5316\u4E3A\u591A\u884C\u6216\u5355\u884C\uFF0C\u5E76\u5141\u8BB8\u6709\u4E9BObsidian\u7279\u5B9A\u7684YAML\u683C\u5F0F\u53EF\u4EE5\u7528\u4F5C\u201Ctags\u201D\u548C\u201Caliases\u201D\u3002\u8BF7\u6CE8\u610F\uFF0C\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u5355\u884C\uFF0C\u5982\u679C\u5B58\u5728\u591A\u4E2A\u6761\u76EE\uFF0C\u5219\u4F1A\u53D8\u4E3A\u5355\u884C\u6570\u7EC4\u3002\u5BF9\u4E8E\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u591A\u884C\uFF0C\u60C5\u51B5\u4E5F\u662F\u5982\u6B64\uFF0C\u53EA\u662F\u5B83\u53D8\u6210\u4E86\u591A\u884C\u6570\u7EC4\u3002","alias-key":{name:"\u683C\u5F0F\u5316yaml\u522B\u540D\u90E8\u5206",description:"\u6253\u5F00\u4E86YAML\u522B\u540D\u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E\u3002\u4E0D\u5E94\u4E0E\u89C4\u5219`YAML Title Alias`\u540C\u65F6\u542F\u7528\uFF0C\u56E0\u4E3A\u5B83\u4EEC\u53EF\u80FD\u4E0D\u4F1A\u5F88\u597D\u5730\u534F\u540C\u5DE5\u4F5C\uFF0C\u6216\u8005\u5B83\u4EEC\u53EF\u80FD\u6709\u4E0D\u540C\u7684\u683C\u5F0F\u6837\u5F0F\u9009\u62E9\uFF0C\u4ECE\u800C\u5BFC\u81F4\u610F\u5916\u7ED3\u679C\u3002"},"tag-key":{name:"\u683C\u5F0F\u5316yaml\u6807\u7B7E\u90E8\u5206",description:"\u6253\u5F00YAML\u6807\u7B7E\u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E\u3002"},"default-array-style":{name:"\u9ED8\u8BA4\u7684yaml\u6570\u7EC4\u90E8\u5206\u683C\u5F0F",description:"\u9664\u4E86\u6807\u7B7E\uFF0C\u522B\u540D\u6216\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u5355\u884C\u6570\u7EC4\u548C\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u591A\u884C\u6570\u7EC4\u4E4B\u5916\uFF0C\u5176\u4ED6\u4E3A\u5E38\u89C4 yaml \u6570\u7EC4\u7684\u6837\u5F0F\u3002"},"default-array-keys":{name:"\u683C\u5F0F\u5316\u5E38\u89C4yaml\u6570\u7EC4\u90E8\u5206",description:"\u5BF9\u5E38\u89C4YAML\u6570\u7EC4\u6253\u5F00\u683C\u5F0F\u8BBE\u7F6E"},"force-single-line-array-style":{name:"\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u5355\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u65B0\u884C\u5206\u9694\u7684\u952E\u7684YAML\u6570\u7EC4\u683C\u5F0F\u4E3A\u5355\u884C\u683C\u5F0F\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"},"force-multi-line-array-style":{name:"\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u591A\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u65B0\u884C\u5206\u9694\u7684\u952E\u7684YAML\u6570\u7EC4\u683C\u5F0F\u4E3A\u591A\u884C\u683C\u5F0F\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"}},"header-increment":{name:"\u6807\u9898\u7EA7\u522B\u9012\u589E",description:"\u6807\u9898\u7EA7\u522B\u5E94\u4EC5\u4E00\u6B21\u9012\u589E\u4E00\u4E2A\u7EA7\u522B","start-at-h2":{name:"\u4ECE\u7B2C\u4E8C\u7EA7\u6807\u9898\u5F00\u59CB\u9012\u589E",description:"\u4F7F\u7B2C\u4E8C\u7EA7\u6807\u9898\u6210\u4E3A\u6587\u4EF6\u4E2D\u7684\u6700\u5C0F\u6807\u9898\u7EA7\u522B\uFF0C\u4ECE\u800C\u53EF\u76F8\u5E94\u5730\u8C03\u6574\u6240\u6709\u6807\u9898\uFF0C\u4EE5\u4FBF\u5B83\u4EEC\u4ECE\u7B2C\u4E8C\u7EA7\u6807\u9898\u5F00\u59CB\u9012\u589E\u3002"}},"heading-blank-lines":{name:"\u6807\u9898\u7A7A\u884C",description:"\u6240\u6709\u6807\u9898\u524D\u540E\u5747\u6709\u4E00\u4E2A\u7A7A\u884C\uFF08\u9664\u975E\u6807\u9898\u4F4D\u4E8E\u6587\u6863\u5F00\u5934\u6216\u7ED3\u5C3E\u5904\uFF09\u3002",bottom:{name:"\u5E95\u90E8",description:"\u5728\u6807\u9898\u540E\u63D2\u5165\u4E00\u4E2A\u7A7A\u884C"},"empty-line-after-yaml":{name:"Yaml \u4E0E\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u4FDD\u7559 Yaml \u524D\u7F6E\u5185\u5BB9\u4E0E\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C"}},"headings-start-line":{name:"\u6807\u9898\u8D77\u59CB\u884C",description:"\u4E0D\u4EE5\u65B0\u884C\u5F00\u59CB\u7684\u6807\u9898\u4F1A\u5C06\u5176\u524D\u9762\u7684\u7A7A\u767D\u5220\u9664\uFF0C\u4EE5\u786E\u4FDD\u5B83\u4EEC\u80FD\u88AB\u8BC6\u522B\u4E3A\u6807\u9898\u3002"},"insert-yaml-attributes":{name:"\u63D2\u5165 YAML \u5C5E\u6027",description:"\u5C06\u7ED9\u5B9A\u7684 YAML \u5C5E\u6027\u63D2\u5165\u5230 YAML \u524D\u7F6E\u5185\u5BB9\u4E2D\u3002\u6BCF\u4E2A\u5C5E\u6027\u5360\u4E00\u884C\u3002","text-to-insert":{name:"\u8981\u63D2\u5165\u7684\u6587\u672C",description:"\u8981\u63D2\u5165\u5230 YAML \u524D\u7F6E\u5185\u5BB9\u4E2D\u7684\u6587\u672C"}},"line-break-at-document-end":{name:"\u6587\u4EF6\u7ED3\u5C3E\u6362\u884C",description:"\u786E\u4FDD\u6587\u6863\u7ED3\u5C3E\u6070\u597D\u6709\u4E00\u884C\u7A7A\u884C\u3002"},"move-footnotes-to-the-bottom":{name:"\u79FB\u52A8\u811A\u6CE8\u81F3\u5E95\u90E8",description:"\u79FB\u52A8\u6240\u6709\u811A\u6CE8\u81F3\u6587\u6863\u5E95\u90E8"},"move-math-block-indicators-to-their-own-line":{name:"\u5C06\u6570\u5B66\u5757\u6307\u793A\u7B26\u79FB\u5230\u81EA\u5DF1\u7684\u884C\u4E0A",description:"\u4F7F\u7528\u201C\u6307\u793A\u6570\u5B66\u5757\u6240\u9700\u7F8E\u5143\u7B26\u53F7\u6570\u201D\u6765\u786E\u5B9A\u7528\u591A\u5C11\u4E2A\u7F8E\u5143\u7B26\u53F7\u8868\u793A\u5355\u884C\u6570\u5B66\u5F0F\uFF0C\u5C06\u6240\u6709\u8D77\u59CB\u548C\u7ED3\u675F\u6570\u5B66\u5757\u6307\u793A\u7B26\u79FB\u5230\u5B83\u4EEC\u81EA\u5DF1\u7684\u884C\u4E0A\u3002"},"move-tags-to-yaml":{name:"\u5C06\u6807\u7B7E\u79FB\u81F3 Yaml",description:"\u79FB\u52A8\u6240\u6709\u6807\u7B7E\u81F3 Yaml frontmatter","how-to-handle-existing-tags":{name:"\u5982\u4F55\u5904\u7406\u73B0\u6709\u7684\u6807\u7B7E",description:"\u4E00\u65E6\u79FB\u52A8\u5230\u4E86\u524D\u7F6E\u5143\u6570\u636E\uFF0C\u5BF9\u4E8E\u6587\u4EF6\u6B63\u6587\u4E2D\u7684\u975E\u88AB\u5FFD\u7565\u6807\u7B7E\uFF0C\u5E94\u8BE5\u91C7\u53D6\u4F55\u79CD\u64CD\u4F5C\uFF1F"},"tags-to-ignore":{name:"\u5FFD\u7565\u7684\u6807\u7B7E",description:"\u8FD9\u4E9B\u6807\u7B7E\u4E0D\u4F1A\u88AB\u79FB\u52A8\u5230\u6807\u7B7E\u6570\u7EC4\u4E2D\uFF0C\u4E5F\u4E0D\u4F1A\u5728\u201C\u4ECE\u6B63\u6587\u5185\u5BB9\u4E2D\u79FB\u9664\u6807\u7B7E\u4E2D\u7684\u4E95\u53F7\u201D\u542F\u7528\u65F6\u4ECE\u6B63\u6587\u5185\u5BB9\u4E2D\u79FB\u9664\u3002\u6BCF\u4E2A\u6807\u7B7E\u5E94\u8BE5\u5355\u72EC\u653E\u5728\u4E00\u884C\u4E0A\uFF0C\u4E0D\u8981\u5305\u542B\u201C#\u201D\u3002\u8BF7\u786E\u4FDD\u6807\u7B7E\u540D\u79F0\u4E2D\u4E0D\u8981\u5305\u542B\u4E95\u53F7\u3002"}},"no-bare-urls":{name:"\u7981\u6B62\u88F8\u9732URL",description:"\u9664\u975E\u88AB\u53CD\u5F15\u53F7\u3001\u65B9\u62EC\u53F7\u6216\u5355\u5F15\u53F7/\u53CC\u5F15\u53F7\u5305\u62EC\uFF0C\u5426\u5219\u5E94\u5C06\u88F8\u9732\u7684URL\u7528\u5C16\u62EC\u53F7\u5305\u56F4\u3002"},"ordered-list-style":{name:"\u6709\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u6709\u5E8F\u5217\u8868\u9075\u5FAA\u6307\u5B9A\u7684\u6837\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C2\u4E2A\u7A7A\u683C\u62161\u4E2A\u5236\u8868\u7B26\u88AB\u89C6\u4E3A\u7F29\u8FDB\u7EA7\u522B\u3002","number-style":{name:"\u5E8F\u53F7\u6837\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u6307\u793A\u5668\u4E2D\u4F7F\u7528\u7684\u5E8F\u53F7\u6837\u5F0F"},"list-end-style":{name:"\u6709\u5E8F\u5217\u8868\u6307\u793A\u5668\u7ED3\u675F\u6837\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u6307\u793A\u5668\u7684\u7ED3\u675F\u5B57\u7B26"}},"paragraph-blank-lines":{name:"\u6BB5\u843D\u7A7A\u767D\u884C",description:"\u6BCF\u4E2A\u6BB5\u843D\u524D\u540E\u5E94\u8BE5\u6709\u4E14\u4EC5\u6709\u4E00\u884C\u7A7A\u767D\u884C\u3002"},"prevent-double-checklist-indicator-on-paste":{name:"\u9632\u6B62\u590D\u5236\u65F6\u51FA\u73B0\u91CD\u590D\u7684\u6838\u5BF9\u5217\u8868\u6307\u793A\u7B26",description:"\u5982\u679C\u6587\u4EF6\u4E2D\u5149\u6807\u6240\u5728\u884C\u6709\u6838\u5BF9\u5217\u8868\u6307\u793A\u7B26\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u8D77\u59CB\u7684\u6838\u5BF9\u5217\u8868\u6307\u793A\u7B26\u3002"},"prevent-double-list-item-indicator-on-paste":{name:"\u9632\u6B62\u590D\u5236\u65F6\u51FA\u73B0\u91CD\u590D\u7684\u5217\u8868\u9879\u6307\u793A\u7B26",description:"\u5982\u679C\u6587\u4EF6\u4E2D\u5149\u6807\u6240\u5728\u884C\u6709\u5217\u8868\u9879\u6307\u793A\u7B26\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u8D77\u59CB\u7684\u5217\u8868\u6307\u793A\u7B26\u3002"},"proper-ellipsis-on-paste":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u5373\u4F7F\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u5B83\u4EEC\u4E4B\u95F4\u6709\u7A7A\u683C\uFF0C\u4E5F\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9\u3002"},"proper-ellipsis":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9\u3002"},"quote-style":{name:"\u62A5\u4EF7\u98CE\u683C",description:"\u66F4\u65B0\u6B63\u6587\u5185\u5BB9\u4E2D\u7684\u5F15\u53F7\u4EE5\u66F4\u65B0\u4E3A\u6307\u5B9A\u7684\u5355\u5F15\u53F7\u548C\u53CC\u5F15\u53F7\u6837\u5F0F\u3002","single-quote-enabled":{name:"\u542F\u7528`\u5355\u5F15\u53F7\u6837\u5F0F`",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u5355\u5F15\u53F7\u6837\u5F0F\u3002"},"single-quote-style":{name:"\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u5355\u5F15\u53F7\u6837\u5F0F\u3002"},"double-quote-enabled":{name:"\u542F\u7528`\u53CC\u5F15\u53F7\u6837\u5F0F`",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u53CC\u5F15\u53F7\u6837\u5F0F\u3002"},"double-quote-style":{name:"\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u53CC\u5F15\u53F7\u6837\u5F0F\u3002"}},"re-index-footnotes":{name:"\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8",description:"\u57FA\u4E8E\u51FA\u73B0\u7684\u987A\u5E8F\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8\u952E\u548C\u811A\u6CE8\uFF08\u6CE8\u610F\uFF1A\u5982\u679C\u4E00\u4E2A\u952E\u6709\u591A\u4E2A\u811A\u6CE8\uFF0C\u5219\u6B64\u89C4\u5219\u4E0D\u9002\u7528\u3002\uFF09"},"remove-consecutive-list-markers":{name:"\u79FB\u9664\u8FDE\u7EED\u7684\u5217\u8868\u6807\u8BB0",description:"\u79FB\u9664\u8FDE\u7EED\u7684\u5217\u8868\u6807\u8BB0\u3002\u590D\u5236\u7C98\u8D34\u5217\u8868\u9879\u65F6\u5F88\u6709\u7528\u3002"},"remove-empty-lines-between-list-markers-and-checklists":{name:"\u79FB\u9664\u5217\u8868\u6807\u8BB0\u548C\u6838\u5BF9\u5217\u8868\u9879\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u5217\u8868\u6807\u8BB0\u548C\u6838\u5BF9\u5217\u8868\u9879\u4E4B\u95F4\u4E0D\u5E94\u6709\u7A7A\u884C\u3002"},"remove-empty-list-markers":{name:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u8BB0",description:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u8BB0\uFF0C\u6BD4\u5982\u5217\u8868\u540E\u6CA1\u5185\u5BB9\u3002"},"remove-hyphenated-line-breaks":{name:"\u79FB\u9664\u4E2D\u5212\u7EBF\u6362\u884C\u7B26",description:"\u79FB\u9664\u4E2D\u5212\u7EBF\u6362\u884C\u7B26\u3002\u4ECE\u6559\u79D1\u4E66\u4E2D\u7C98\u8D34\u6587\u672C\u65F6\u5F88\u6709\u7528\u3002"},"remove-hyphens-on-paste":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u8FDE\u5B57\u7B26\u3002"},"remove-leading-or-trailing-whitespace-on-paste":{name:"\u79FB\u9664\u7C98\u8D34\u65F6\u7684\u524D\u5BFC\u6216\u5C3E\u968F\u7A7A\u683C",description:"\u79FB\u9664\u8981\u7C98\u8D34\u7684\u6587\u672C\u7684\u4EFB\u4F55\u524D\u5BFC\u975E\u5236\u8868\u7B26\u7A7A\u683C\u548C\u6240\u6709\u5C3E\u968F\u7A7A\u683C\u3002"},"remove-leftover-footnotes-from-quote-on-paste":{name:"\u79FB\u9664\u5F15\u7528\u4E2D\u7684\u5269\u4F59\u811A\u6CE8",description:"\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u4EFB\u4F55\u5269\u4F59\u7684\u811A\u6CE8\u5F15\u7528\u3002"},"remove-link-spacing":{name:"\u79FB\u9664\u94FE\u63A5\u95F4\u8DDD",description:"\u79FB\u9664\u94FE\u63A5\u6587\u672C\u5468\u56F4\u7684\u95F4\u8DDD\u3002"},"remove-multiple-blank-lines-on-paste":{name:"\u79FB\u9664\u7C98\u8D34\u65F6\u7684\u591A\u4E2A\u7A7A\u767D\u884C",description:"\u5C06\u591A\u4E2A\u7A7A\u767D\u884C\u538B\u7F29\u4E3A\u4E00\u4E2A\u7A7A\u767D\u884C\u4EE5\u7C98\u8D34\u6587\u672C\u3002"},"remove-multiple-spaces":{name:"\u79FB\u9664\u591A\u4E2A\u7A7A\u683C",description:"\u79FB\u9664\u4E24\u4E2A\u6216\u66F4\u591A\u8FDE\u7EED\u7684\u7A7A\u683C\u3002\u5FFD\u7565\u884C\u9996\u548C\u884C\u5C3E\u7684\u7A7A\u683C\u3002"},"remove-space-around-characters":{name:"\u53BB\u9664\u5B57\u7B26\u5468\u56F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u67D0\u4E9B\u5B57\u7B26\u5468\u56F4\u6CA1\u6709\u7A7A\u683C\uFF08\u5305\u62EC\u5355\u4E2A\u7A7A\u683C\u6216\u5236\u8868\u7B26\uFF09\u3002\u8BF7\u6CE8\u610F\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\u5F71\u54CDmarkdown\u683C\u5F0F\u3002","include-fullwidth-forms":{name:"\u5305\u62EC\u5168\u89D2\u5F62\u5F0F",description:'\u5305\u62EC\u5168\u89D2\u5F62\u5F0FUnicode\u5757'},"include-cjk-symbols-and-punctuation":{name:"\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9",description:'\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9Unicode\u5757'},"include-dashes":{name:"\u5305\u62EC\u7834\u6298\u53F7",description:"\u5305\u62ECen dash (\u2013)\u548Cem dash (\u2014)"},"other-symbols":{name:"\u5176\u4ED6\u7B26\u53F7",description:"\u8981\u5305\u62EC\u7684\u5176\u4ED6\u7B26\u53F7"}},"remove-space-before-or-after-characters":{name:"\u5220\u9664\u5B57\u7B26\u524D\u540E\u7684\u7A7A\u683C",description:"\u5220\u9664\u6307\u5B9A\u5B57\u7B26\u4E4B\u524D\u548C\u6307\u5B9A\u5B57\u7B26\u4E4B\u540E\u7684\u7A7A\u683C\u3002 \u8BF7\u6CE8\u610F\uFF0C\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4\u964D\u4EF7\u683C\u5F0F\u51FA\u73B0\u95EE\u9898\u3002","characters-to-remove-space-before":{name:"\u5220\u9664\u5B57\u7B26\u524D\u7684\u7A7A\u683C",description:"\u5220\u9664\u6307\u5B9A\u5B57\u7B26\u524D\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF1A\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u5E55\u540E\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528\u3002**"},"characters-to-remove-space-after":{name:"\u5220\u9664\u5B57\u7B26\u540E\u7684\u7A7A\u683C",description:"\u5220\u9664\u6307\u5B9A\u5B57\u7B26\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF1A\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u5E55\u540E\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528\u3002**"}},"remove-trailing-punctuation-in-heading":{name:"\u79FB\u9664\u6807\u9898\u4E2D\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u4ECE\u6807\u9898\u7684\u672B\u5C3E\u5220\u9664\u6307\u5B9A\u7684\u6807\u70B9\u7B26\u53F7\uFF0C\u786E\u4FDD\u5FFD\u7565HTML\u5B9E\u4F53\u5F15\u7528\u672B\u5C3E\u7684\u5206\u53F7\u3002","punctuation-to-remove":{name:"\u8981\u5220\u9664\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u8981\u4ECE\u6587\u4EF6\u6807\u9898\u4E2D\u5220\u9664\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7\u3002"}},"remove-yaml-keys":{name:"\u79FB\u9664 YAML \u952E",description:"\u79FB\u9664\u7279\u5B9A\u7684 YAML \u952E","yaml-keys-to-remove":{name:"\u9700\u8981\u79FB\u9664\u7684 YAML \u952E",description:"\u4ECE\u5E26\u6216\u4E0D\u5E26\u5192\u53F7\u7684 yaml frontmatter \u4E2D\u5220\u9664\u7684 YAML \u952E"}},"space-after-list-markers":{name:"\u5217\u8868\u6807\u8BB0\u540E\u7A7A\u683C",description:"\u5217\u8868\u6807\u8BB0\u548C\u590D\u9009\u6846\u540E\u5E94\u6709\u4E00\u4E2A\u7A7A\u683C"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\u4E2D\u6587\u65E5\u8BED\u6216\u97E9\u8BED\u4E0E\u82F1\u8BED\u6216\u6570\u5B57\u4E4B\u95F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u4E2D\u6587\u3001\u65E5\u6587\u6216\u97E9\u6587\u548C\u82F1\u6587\u6216\u6570\u5B57\u7531\u5355\u4E2A\u7A7A\u683C\u5206\u9694. [\u53C2\u8003\u94FE\u63A5](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"\u52A0\u7C97\u98CE\u683C",description:"\u786E\u4FDD\u52A0\u7C97\u98CE\u683C\u4E00\u81F4",style:{name:"\u98CE\u683C",description:"\u7528\u4E8E\u8868\u793A\u52A0\u7C97\u7684\u98CE\u683C"}},"trailing-spaces":{name:"\u672B\u5C3E\u7A7A\u683C",description:"\u79FB\u9664\u6BCF\u884C\u672B\u5C3E\u591A\u4F59\u7684\u7A7A\u683C","twp-space-line-break":{name:"\u4E24\u4E2A\u7A7A\u683C\u7684\u6362\u884C",description:'\u5FFD\u7565\u4E24\u4E2A\u7A7A\u683C\u540E\u63A5\u6362\u884C\u7B26\u7684\u60C5\u51B5\uFF08"\u4E24\u4E2A\u7A7A\u683C\u89C4\u5219"\uFF09\u3002'}},"two-spaces-between-lines-with-content":{name:"\u5185\u5BB9\u95F4\u9694\u4E24\u4E2A\u7A7A\u683C",description:"\u786E\u4FDD\u5728\u6BB5\u843D\u3001\u5F15\u7528\u548C\u5217\u8868\u9879\u4E2D\uFF0C\u88AB\u5EF6\u7EED\u5230\u4E0B\u4E00\u884C\u7684\u5185\u5BB9\u7684\u884C\u672B\u6DFB\u52A0\u4E24\u4E2A\u7A7A\u683C\u3002"},"unordered-list-style":{name:"\u65E0\u5E8F\u5217\u8868\u98CE\u683C",description:"\u786E\u4FDD\u65E0\u5E8F\u5217\u8868\u7B26\u5408\u6307\u5B9A\u7684\u98CE\u683C","list-style":{name:"\u5217\u8868\u9879\u98CE\u683C",description:"\u5217\u8868\u9879\u9700\u8981\u6307\u5B9A\u7684\u98CE\u683C"}},"yaml-key-sort":{name:"YAML \u952E\u6392\u5E8F",description:"\u6839\u636E\u6307\u5B9A\u7684\u987A\u5E8F\u548C\u4F18\u5148\u7EA7\u5BF9 YAML \u952E\u8FDB\u884C\u6392\u5E8F\u3002\u6CE8\u610F\uFF1A\u4E5F\u8BB8\u4E5F\u4F1A\u5220\u9664\u7A7A\u767D\u884C\u3002","yaml-key-priority-sort-order":{name:"YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9\u952E\u8FDB\u884C\u6392\u5E8F\u7684\u987A\u5E8F\uFF0C\u6BCF\u884C\u4E00\u4E2A\u952E\uFF0C\u6309\u5217\u8868\u4E2D\u7684\u987A\u5E8F\u8FDB\u884C\u6392\u5E8F"},"priority-keys-at-start-of-yaml":{name:"YAML \u521D\u59CB\u65F6\u952E\u7684\u4F18\u5148\u7EA7",description:"\u521D\u59CB\u65F6 YAML \u952E\u6392\u5E8F\u987A\u5E8F"},"yaml-sort-order-for-other-keys":{name:"YAML \u5176\u5B83\u952E\u7684\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9 YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F\u6587\u672C\u533A\u57DF\u4E2D\u672A\u627E\u5230\u7684\u952E\u8FDB\u884C\u6392\u5E8F"}},"yaml-timestamp":{name:"YAML \u65F6\u95F4\u6233",description:"\u5728 YAML frontmatter \u4E2D\u8DDF\u8E2A\u4E0A\u6B21\u7F16\u8F91\u6587\u6863\u7684\u65E5\u671F\u3002\u4ECE\u6587\u6863\u5143\u6570\u636E\u4E2D\u83B7\u53D6\u65E5\u671F\u3002","date-created":{name:"\u521B\u5EFA\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u521B\u5EFA\u65E5\u671F"},"date-created-key":{name:"\u521B\u5EFA\u65E5\u671F\u7684\u952E",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u521B\u5EFA\u65E5\u671F"},"force-retention-of-create-value":{name:"\u5F3A\u5236\u4FDD\u7559\u521B\u5EFA\u65E5\u671F\u7684\u952E\u503C",description:"\u91CD\u7528\u521B\u5EFA\u65E5\u671F\u7684 YAML frontmatter \u4E2D\u7684\u503C\uFF0C\u800C\u4E0D\u662F\u6587\u6863\u5143\u6570\u636E\uFF0C\u8FD9\u5BF9\u4E8E\u9632\u6B62\u6587\u6863\u5143\u6570\u636E\u66F4\u6539\u5BFC\u81F4\u503C\u66F4\u6539\u4E3A\u5176\u4ED6\u503C\u65F6\u975E\u5E38\u6709\u7528"},"date-modified":{name:"\u4FEE\u6539\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u6700\u8FD1\u4E00\u6B21\u7684\u4FEE\u6539\u65E5\u671F"},"date-modified-key":{name:"\u4FEE\u6539\u65E5\u671F\u7684\u952E",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u4FEE\u6539\u65E5\u671F"},format:{name:"\u683C\u5F0F",description:"Momentjs \u8BED\u6CD5\u98CE\u683C\u7684\u65E5\u671F\u683C\u5F0F \uFF08\u8BE6\u60C5\u8BBE\u7F6E\u89C1[Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/)"}},"yaml-title-alias":{name:"YAML \u6807\u9898\u522B\u540D",description:"\u5C06\u6587\u6863\u7684\u6807\u9898\u63D2\u5165 YAML frontmatter \u7684\u522B\u540D\u90E8\u5206\u3002\u4ECE\u7B2C\u4E00\u4E2A H1 \u6216\u6587\u6863\u540D\u4E2D\u83B7\u53D6\u6807\u9898","preserve-existing-alias-section-style":{name:"\u4FDD\u7559\u73B0\u6709\u522B\u540D\u90E8\u5206\u6837\u5F0F",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u6B64\u9879\u4EC5\u5728\u65B0\u521B\u5EFA\u7684\u522B\u540D\u90E8\u5206\u751F\u6548"},"keep-alias-that-matches-the-filename":{name:"\u786E\u4FDD\u522B\u540D\u4E0E\u6587\u4EF6\u540D\u5339\u914D",description:"\u8FD9\u6837\u7684\u522B\u540D\u901A\u5E38\u662F\u591A\u4F59\u7684"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"\u4F7F\u7528 YAML \u952E `linter-yaml-title-alias` \u5E2E\u52A9\u66F4\u6539\u6587\u6863\u540D\u548C\u6807\u9898",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u5F53\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u66F4\u6539\u6216\u6587\u6863\u540D\uFF08\u5982\u679C\u7B2C\u4E00\u4E2A H1 \u4E0D\u5B58\u5728\uFF09\u66F4\u6539\u65F6\uFF0C\u5219\u6B64\u952E\u4E2D\u5B58\u50A8\u7684\u65E7\u522B\u540D\u5C06\u66FF\u6362\u4E3A\u65B0\u503C\uFF0C\u800C\u4E0D\u4EC5\u4EC5\u662F\u5728\u522B\u540D\u6570\u7EC4\u4E2D\u63D2\u5165\u65B0\u6761\u76EE"}},"yaml-title":{name:"YAML \u6807\u9898",description:"\u5C06\u6587\u4EF6\u7684\u6807\u9898\u63D2\u5165\u5230 YAML frontmatter \u4E2D\u3002 \u6839\u636E\u6240\u9009\u6A21\u5F0F\u83B7\u53D6\u6807\u9898\u3002","title-key":{name:"\u6807\u9898\u952E",description:"\u6807\u9898\u4F7F\u7528\u54EA\u4E00\u4E2A YAML \u952E"},mode:{name:"\u6A21\u5F0F",description:"\u7528\u4E8E\u83B7\u53D6\u6807\u9898\u7684\u65B9\u6CD5"}}},enums:{"Title Case":"\u6807\u9898\u5927\u5C0F\u5199","ALL CAPS":"\u5168\u90E8\u5927\u5199","First letter":"\u9996\u5B57\u6BCD\u5927\u5199",".":".",")":")",ERROR:"\u9519\u8BEF",TRACE:"\u8DDF\u8E2A",DEBUG:"debug",INFO:"\u4FE1\u606F",WARN:"\u8B66\u544A",SILENT:"\u9759\u9ED8",ascending:"\u5347\u5E8F",lazy:"\u61D2\u52A0\u8F7D",Nothing:"\u65E0","Remove hashtag":"\u79FB\u9664hashtag","Remove whole tag":"\u79FB\u9664\u6574\u4E2A\u6807\u7B7E",asterisk:"\u661F\u53F7",underscore:"\u4E0B\u5212\u7EBF",consistent:"\u4E00\u81F4","-":"-","*":"*","+":"+",space:"\u7A7A\u95F4","no space":"\u6CA1\u6709\u7A7A\u95F4",None:"None","Ascending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u5347\u5E8F","Descending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u964D\u5E8F","multi-line":"\u591A\u884C","single-line":"\u5355\u884C","single string to single-line":"\u4E00\u884C\u4E00\u4E2A\u5B57\u7B26\u4E32","single string to multi-line":"\u591A\u884C\u4E00\u4E2A\u5B57\u7B26\u4E32","single string comma delimited":"\u5B57\u7B26\u4E32\u7528\u9017\u53F7\u5206\u9694","single string space delimited":"\u5B57\u7B26\u4E32\u7528\u7A7A\u683C\u5206\u9694","single-line space delimited":"\u5355\u884C\u7A7A\u683C\u5206\u9694","first-h1":"\u7B2C\u4E00\u7EA7\u6807\u9898","first-h1-or-filename-if-h1-missing":"\u7B2C\u4E00\u7EA7 1 \u6807\u9898\u6216\u6587\u4EF6\u540D\uFF08\u5982\u679C\u7F3A\u5C11 1 \u7EA7\u6807\u9898\uFF09",filename:"\u6587\u4EF6\u540D","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var Qc={};var Zc={ar:Cc,cz:qc,da:Mc,de:Ic,en:so,es:_c,fr:Bc,hi:Fc,id:Rc,it:Dc,ja:Nc,ko:jc,nl:Pc,no:Kc,pl:$c,"pt-BR":Yc,pt:Hc,ro:Wc,ru:Vc,sq:Uc,tr:ua,uk:ua,"zh-TW":Qc,zh:Gc},ma="en",pa=Zc[ma];function ga(e){ma=e,pa=Zc[ma||"en"]}function E(e){return pa||et(`locale not found for '${ma}'`),pa&&no(pa,e)||no(so,e)}var ha=function(e){if(e==null)return Ug;if(typeof e=="string")return Vg(e);if(typeof e=="object")return Array.isArray(e)?Yg(e):Wg(e);if(typeof e=="function")return fa(e);throw new Error("Expected function, string, or object as test")};function Yg(e){let t=[],i=-1;for(;++i":""))+")"})}return u;function u(){let m=[],g,h,v;if((!t||r(o,l,d[d.length-1]||null))&&(m=Gg(i(o,d)),m[0]===ya))return m;if(o.children&&m[0]!==lo)for(h=(n?o.children.length:-1)+a,v=d.concat(o);h>-1&&h=0;){let r=e.charAt(n);if(r===` +`)break;r.trim()===""||r===">"?i=r+i:i="",n--}return[i,n]}function ed(e=""){let[t]=Xc(e,e.length);return` +`+t.trim()}function Qg(e,t){if(t===0)return e;let i=t,n=t;for(;i>=0;){let r=e.charAt(i);if(r.trim()!=="")break;r===` +`&&(n=i),i--}return i<0||n===0?e.substring(t+1):e.substring(0,n)+` +`+e.substring(t)}function Zg(e,t,i){if(i===0)return e;let n=t.split(">").length-1,r=i,a=i,s=0,o=!1,l="";for(;r>=0;){let g=e.charAt(r);if(g.trim()!==""&&g!==">")break;if(g===">"){if(o)break;s++}else if(g===` +`)if(s===0||s===n||s+1===n)a=r,s=0,l===` +`&&(o=!0);else break;r--,l=g}if(r<0||a===0)return e.substring(i+1);let d=e.substring(a,i);if(d===` +`||d.startsWith(` + +`))return e.substring(0,a)+` +`+e.substring(i);let u=e.lastIndexOf(` +`,a-1),m="";return u===-1?m=e.substring(0,a):m=e.substring(u,a),e.substring(0,a)+ed(m)+e.substring(i)}function Jg(e,t){if(t===e.length-1)return e;let i=t,n=t,r=!0;for(;i").length-1,r=i,a=i,s=!0,o=0,l=!1,d="";for(;r")break;if(h===">"){if(l)break;o++}else if(h===` +`)if(o===0||o===n||o+1===n)o=0,s?s=!1:a=r,d===` +`&&(l=!0);else break;r++,d=h}if(r===e.length||a===e.length-1)return e.substring(0,i);let c=e.substring(i,a);if(c===` +`||c.endsWith(` + +`))return e.substring(0,i)+` +`+e.substring(a);let m=e.indexOf(` +`,a+1),g="";return m===-1?g=e.substring(a):g=e.substring(a+1,m),e.substring(0,i)+ed(g)+e.substring(a)}function tt(e,t,i){let[n,r]=Xc(e,t);if(n.trim()!==""){let s=Xg(e,n,i);return Zg(s,n,r)}let a=Jg(e,i);return Qg(a,r)}function id(e,t=0){let i=3735928559^t,n=1103547991^t;for(let r=0,a;r>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(i^i>>>13,3266489909),4294967296*(2097151&n)+(i>>>0)}function td(e){return e=e.replaceAll("\\b","\b"),e=e.replaceAll("\\f","\f"),e=e.replaceAll("\\n",` +`),e=e.replaceAll("\\r","\r"),e=e.replaceAll("\\t"," "),e=e.replaceAll("\\v","\v"),e}function zn(e,t){if(t==0)return t;let i=t;for(;i>0&&e.charAt(i-1)!==` +`;)i--;return i}function nd(e,t,i,n){return n>e.length-1?e:e.slice(0,n)+e.slice(n,e.length).replace(t,i)}function rd(e,t){let i=0;for(let n=0,r=e.length;n-1&&(i++,n=a)}return i}function Ce(e,t,i,n){let r=e.length,a=0,s;if(t<0?t=-t>r?0:r+t:t=t>r?r:t,i=i>0?i:0,n.length<1e4)s=Array.from(n),s.unshift(t,i),[].splice.apply(e,s);else for(i&&[].splice.apply(e,[t,i]);a0?(Ce(e,e.length,0,t),e):t}var ad=/[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/;var Ge=Di(/[A-Za-z]/),Sn=Di(/\d/),sd=Di(/[\dA-Fa-f]/),Pe=Di(/[\dA-Za-z]/),od=Di(/[!-/:-@[-`{-~]/),uo=Di(/[#-'*+\--9=?A-Z^-~]/);function Tn(e){return e!==null&&(e<32||e===127)}function X(e){return e!==null&&(e<0||e===32)}function B(e){return e!==null&&e<-2}function G(e){return e===-2||e===-1||e===32}var ld=Di(/\s/),cd=Di(ad);function Di(e){return t;function t(i){return i!==null&&e.test(String.fromCharCode(i))}}function po(e){if(e===null||X(e)||ld(e))return 1;if(cd(e))return 2}function Kt(e,t,i){let n=[],r=-1;for(;++r1&&e[i][1].end.offset-e[i][1].start.offset>1?2:1;let u=Object.assign({},e[n][1].end),m=Object.assign({},e[i][1].start);dd(u,-l),dd(m,l),s={type:l>1?"strongSequence":"emphasisSequence",start:u,end:Object.assign({},e[n][1].end)},o={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[i][1].start),end:m},a={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[i][1].start)},r={type:l>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},o.end)},e[n][1].end=Object.assign({},s.start),e[i][1].start=Object.assign({},o.end),d=[],e[n][1].end.offset-e[n][1].start.offset&&(d=je(d,[["enter",e[n][1],t],["exit",e[n][1],t]])),d=je(d,[["enter",r,t],["enter",s,t],["exit",s,t],["enter",a,t]]),d=je(d,Kt(t.parser.constructs.insideSpan.null,e.slice(n+1,i),t)),d=je(d,[["exit",a,t],["enter",o,t],["exit",o,t],["exit",r,t]]),e[i][1].end.offset-e[i][1].start.offset?(c=2,d=je(d,[["enter",e[i][1],t],["exit",e[i][1],t]])):c=0,Ce(e,n-1,i-n+3,d),i=n+d.length-c-2;break}}for(i=-1;++i=4?s(d):i(d)}function s(d){return d===null?l(d):B(d)?e.attempt(dh,s,l)(d):(e.enter("codeFlowValue"),o(d))}function o(d){return d===null||B(d)?(e.exit("codeFlowValue"),s(d)):(e.consume(d),o)}function l(d){return e.exit("codeIndented"),t(d)}}function ph(e,t,i){let n=this;return r;function r(s){return n.parser.lazy[n.now().line]?i(s):B(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),r):K(e,a,"linePrefix",4+1)(s)}function a(s){let o=n.events[n.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(s):B(s)?r(s):i(s)}}var go={name:"codeText",tokenize:hh,resolve:mh,previous:gh};function mh(e){let t=e.length-4,i=3,n,r;if((e[i][1].type==="lineEnding"||e[i][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=i;++n=4?t(s):e.interrupt(n.parser.constructs.flow,i,t)(s)}}function Sa(e,t,i,n,r,a,s,o,l){let d=l||Number.POSITIVE_INFINITY,c=0;return u;function u(z){return z===60?(e.enter(n),e.enter(r),e.enter(a),e.consume(z),e.exit(a),m):z===null||z===41||Tn(z)?i(z):(e.enter(n),e.enter(s),e.enter(o),e.enter("chunkString",{contentType:"string"}),v(z))}function m(z){return z===62?(e.enter(a),e.consume(z),e.exit(a),e.exit(r),e.exit(n),t):(e.enter(o),e.enter("chunkString",{contentType:"string"}),g(z))}function g(z){return z===62?(e.exit("chunkString"),e.exit(o),m(z)):z===null||z===60||B(z)?i(z):(e.consume(z),z===92?h:g)}function h(z){return z===60||z===62||z===92?(e.consume(z),g):g(z)}function v(z){return z===40?++c>d?i(z):(e.consume(z),v):z===41?c--?(e.consume(z),v):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(z)):z===null||X(z)?c?i(z):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(z)):Tn(z)?i(z):(e.consume(z),z===92?w:v)}function w(z){return z===40||z===41||z===92?(e.consume(z),v):v(z)}}function Ta(e,t,i,n,r,a){let s=this,o=0,l;return d;function d(g){return e.enter(n),e.enter(r),e.consume(g),e.exit(r),e.enter(a),c}function c(g){return g===null||g===91||g===93&&!l||g===94&&!o&&"_hiddenFootnoteSupport"in s.parser.constructs||o>999?i(g):g===93?(e.exit(a),e.enter(r),e.consume(g),e.exit(r),e.exit(n),t):B(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),u(g))}function u(g){return g===null||g===91||g===93||B(g)||o++>999?(e.exit("chunkString"),c(g)):(e.consume(g),l=l||!G(g),g===92?m:u)}function m(g){return g===91||g===92||g===93?(e.consume(g),o++,u):u(g)}}function Aa(e,t,i,n,r,a){let s;return o;function o(m){return e.enter(n),e.enter(r),e.consume(m),e.exit(r),s=m===40?41:m,l}function l(m){return m===s?(e.enter(r),e.consume(m),e.exit(r),e.exit(n),t):(e.enter(a),d(m))}function d(m){return m===s?(e.exit(a),l(s)):m===null?i(m):B(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),K(e,d,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(m))}function c(m){return m===s||m===null||B(m)?(e.exit("chunkString"),d(m)):(e.consume(m),m===92?u:c)}function u(m){return m===s||m===92?(e.consume(m),c):c(m)}}function nt(e,t){let i;return n;function n(r){return B(r)?(e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),i=!0,n):G(r)?K(e,n,i?"linePrefix":"lineSuffix")(r):t(r)}}function Be(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var fo={name:"definition",tokenize:kh},wh={tokenize:zh,partial:!0};function kh(e,t,i){let n=this,r;return a;function a(l){return e.enter("definition"),Ta.call(n,e,s,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(l)}function s(l){return r=Be(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),l===58?(e.enter("definitionMarker"),e.consume(l),e.exit("definitionMarker"),nt(e,Sa(e,e.attempt(wh,K(e,o,"whitespace"),K(e,o,"whitespace")),i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):i(l)}function o(l){return l===null||B(l)?(e.exit("definition"),n.parser.defined.includes(r)||n.parser.defined.push(r),t(l)):i(l)}}function zh(e,t,i){return n;function n(s){return X(s)?nt(e,r)(s):i(s)}function r(s){return s===34||s===39||s===40?Aa(e,K(e,a,"whitespace"),i,"definitionTitle","definitionTitleMarker","definitionTitleString")(s):i(s)}function a(s){return s===null||B(s)?t(s):i(s)}}var yo={name:"hardBreakEscape",tokenize:Sh};function Sh(e,t,i){return n;function n(a){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(a),r}function r(a){return B(a)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(a)):i(a)}}var bo={name:"headingAtx",tokenize:Ah,resolve:Th};function Th(e,t){let i=e.length-2,n=3,r,a;return e[n][1].type==="whitespace"&&(n+=2),i-2>n&&e[i][1].type==="whitespace"&&(i-=2),e[i][1].type==="atxHeadingSequence"&&(n===i-1||i-4>n&&e[i-2][1].type==="whitespace")&&(i-=n+1===i?2:4),i>n&&(r={type:"atxHeadingText",start:e[n][1].start,end:e[i][1].end},a={type:"chunkText",start:e[n][1].start,end:e[i][1].end,contentType:"text"},Ce(e,n,i-n+1,[["enter",r,t],["enter",a,t],["exit",a,t],["exit",r,t]])),e}function Ah(e,t,i){let n=this,r=0;return a;function a(c){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),s(c)}function s(c){return c===35&&r++<6?(e.consume(c),s):c===null||X(c)?(e.exit("atxHeadingSequence"),n.interrupt?t(c):o(c)):i(c)}function o(c){return c===35?(e.enter("atxHeadingSequence"),l(c)):c===null||B(c)?(e.exit("atxHeading"),t(c)):G(c)?K(e,o,"whitespace")(c):(e.enter("atxHeadingText"),d(c))}function l(c){return c===35?(e.consume(c),l):(e.exit("atxHeadingSequence"),o(c))}function d(c){return c===null||c===35||X(c)?(e.exit("atxHeadingText"),o(c)):(e.consume(c),d)}}var pd=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],vo=["pre","script","style","textarea"];var xo={name:"htmlFlow",tokenize:Oh,resolveTo:Lh,concrete:!0},Eh={tokenize:Ch,partial:!0};function Lh(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function Oh(e,t,i){let n=this,r,a,s,o,l;return d;function d(x){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(x),c}function c(x){return x===33?(e.consume(x),u):x===47?(e.consume(x),h):x===63?(e.consume(x),r=3,n.interrupt?t:ue):Ge(x)?(e.consume(x),s=String.fromCharCode(x),a=!0,v):i(x)}function u(x){return x===45?(e.consume(x),r=2,m):x===91?(e.consume(x),r=5,s="CDATA[",o=0,g):Ge(x)?(e.consume(x),r=4,n.interrupt?t:ue):i(x)}function m(x){return x===45?(e.consume(x),n.interrupt?t:ue):i(x)}function g(x){return x===s.charCodeAt(o++)?(e.consume(x),o===s.length?n.interrupt?t:j:g):i(x)}function h(x){return Ge(x)?(e.consume(x),s=String.fromCharCode(x),v):i(x)}function v(x){return x===null||x===47||x===62||X(x)?x!==47&&a&&vo.includes(s.toLowerCase())?(r=1,n.interrupt?t(x):j(x)):pd.includes(s.toLowerCase())?(r=6,x===47?(e.consume(x),w):n.interrupt?t(x):j(x)):(r=7,n.interrupt&&!n.parser.lazy[n.now().line]?i(x):a?S(x):z(x)):x===45||Pe(x)?(e.consume(x),s+=String.fromCharCode(x),v):i(x)}function w(x){return x===62?(e.consume(x),n.interrupt?t:j):i(x)}function z(x){return G(x)?(e.consume(x),z):D(x)}function S(x){return x===47?(e.consume(x),D):x===58||x===95||Ge(x)?(e.consume(x),L):G(x)?(e.consume(x),S):D(x)}function L(x){return x===45||x===46||x===58||x===95||Pe(x)?(e.consume(x),L):q(x)}function q(x){return x===61?(e.consume(x),_):G(x)?(e.consume(x),q):S(x)}function _(x){return x===null||x===60||x===61||x===62||x===96?i(x):x===34||x===39?(e.consume(x),l=x,A):G(x)?(e.consume(x),_):(l=null,F(x))}function A(x){return x===null||B(x)?i(x):x===l?(e.consume(x),M):(e.consume(x),A)}function F(x){return x===null||x===34||x===39||x===60||x===61||x===62||x===96||X(x)?q(x):(e.consume(x),F)}function M(x){return x===47||x===62||G(x)?S(x):i(x)}function D(x){return x===62?(e.consume(x),H):i(x)}function H(x){return G(x)?(e.consume(x),H):x===null||B(x)?j(x):i(x)}function j(x){return x===45&&r===2?(e.consume(x),re):x===60&&r===1?(e.consume(x),Q):x===62&&r===4?(e.consume(x),ae):x===63&&r===3?(e.consume(x),ue):x===93&&r===5?(e.consume(x),de):B(x)&&(r===6||r===7)?e.check(Eh,ae,V)(x):x===null||B(x)?V(x):(e.consume(x),j)}function V(x){return e.exit("htmlFlowData"),R(x)}function R(x){return x===null?k(x):B(x)?e.attempt({tokenize:Y,partial:!0},R,k)(x):(e.enter("htmlFlowData"),j(x))}function Y(x,pi,Ye){return Re;function Re(De){return x.enter("lineEnding"),x.consume(De),x.exit("lineEnding"),ai}function ai(De){return n.parser.lazy[n.now().line]?Ye(De):pi(De)}}function re(x){return x===45?(e.consume(x),ue):j(x)}function Q(x){return x===47?(e.consume(x),s="",ce):j(x)}function ce(x){return x===62&&vo.includes(s.toLowerCase())?(e.consume(x),ae):Ge(x)&&s.length<8?(e.consume(x),s+=String.fromCharCode(x),ce):j(x)}function de(x){return x===93?(e.consume(x),ue):j(x)}function ue(x){return x===62?(e.consume(x),ae):x===45&&r===2?(e.consume(x),ue):j(x)}function ae(x){return x===null||B(x)?(e.exit("htmlFlowData"),k(x)):(e.consume(x),ae)}function k(x){return e.exit("htmlFlow"),t(x)}}function Ch(e,t,i){return n;function n(r){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),e.attempt(yi,t,i)}}var wo={name:"htmlText",tokenize:qh};function qh(e,t,i){let n=this,r,a,s,o;return l;function l(k){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(k),d}function d(k){return k===33?(e.consume(k),c):k===47?(e.consume(k),F):k===63?(e.consume(k),_):Ge(k)?(e.consume(k),H):i(k)}function c(k){return k===45?(e.consume(k),u):k===91?(e.consume(k),a="CDATA[",s=0,w):Ge(k)?(e.consume(k),q):i(k)}function u(k){return k===45?(e.consume(k),m):i(k)}function m(k){return k===null||k===62?i(k):k===45?(e.consume(k),g):h(k)}function g(k){return k===null||k===62?i(k):h(k)}function h(k){return k===null?i(k):k===45?(e.consume(k),v):B(k)?(o=h,de(k)):(e.consume(k),h)}function v(k){return k===45?(e.consume(k),ae):h(k)}function w(k){return k===a.charCodeAt(s++)?(e.consume(k),s===a.length?z:w):i(k)}function z(k){return k===null?i(k):k===93?(e.consume(k),S):B(k)?(o=z,de(k)):(e.consume(k),z)}function S(k){return k===93?(e.consume(k),L):z(k)}function L(k){return k===62?ae(k):k===93?(e.consume(k),L):z(k)}function q(k){return k===null||k===62?ae(k):B(k)?(o=q,de(k)):(e.consume(k),q)}function _(k){return k===null?i(k):k===63?(e.consume(k),A):B(k)?(o=_,de(k)):(e.consume(k),_)}function A(k){return k===62?ae(k):_(k)}function F(k){return Ge(k)?(e.consume(k),M):i(k)}function M(k){return k===45||Pe(k)?(e.consume(k),M):D(k)}function D(k){return B(k)?(o=D,de(k)):G(k)?(e.consume(k),D):ae(k)}function H(k){return k===45||Pe(k)?(e.consume(k),H):k===47||k===62||X(k)?j(k):i(k)}function j(k){return k===47?(e.consume(k),ae):k===58||k===95||Ge(k)?(e.consume(k),V):B(k)?(o=j,de(k)):G(k)?(e.consume(k),j):ae(k)}function V(k){return k===45||k===46||k===58||k===95||Pe(k)?(e.consume(k),V):R(k)}function R(k){return k===61?(e.consume(k),Y):B(k)?(o=R,de(k)):G(k)?(e.consume(k),R):j(k)}function Y(k){return k===null||k===60||k===61||k===62||k===96?i(k):k===34||k===39?(e.consume(k),r=k,re):B(k)?(o=Y,de(k)):G(k)?(e.consume(k),Y):(e.consume(k),r=void 0,ce)}function re(k){return k===r?(e.consume(k),Q):k===null?i(k):B(k)?(o=re,de(k)):(e.consume(k),re)}function Q(k){return k===62||k===47||X(k)?j(k):i(k)}function ce(k){return k===null||k===34||k===39||k===60||k===61||k===96?i(k):k===62||X(k)?j(k):(e.consume(k),ce)}function de(k){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(k),e.exit("lineEnding"),K(e,ue,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function ue(k){return e.enter("htmlTextData"),o(k)}function ae(k){return k===62?(e.consume(k),e.exit("htmlTextData"),e.exit("htmlText"),t):i(k)}}var rt={name:"labelEnd",tokenize:Rh,resolveTo:Fh,resolveAll:Bh},Mh={tokenize:Dh},Ih={tokenize:Nh},_h={tokenize:jh};function Bh(e){let t=-1,i;for(;++t999||u===93&&!s||u===null||u===91||X(u))return i(u);if(u===93){e.exit("chunkString");let m=e.exit("gfmFootnoteCallString");return r.includes(Be(n.sliceSerialize(m)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(u),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):i(u)}return X(u)||(s=!0),a++,e.consume(u),u===92?c:d}function c(u){return u===91||u===92||u===93?(e.consume(u),a++,d):d(u)}}function af(e,t,i){let n=this,r=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),a,s=0,o;return l;function l(h){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(h){return h===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",c):i(h)}function c(h){if(s>999||h===93&&!o||h===null||h===91||X(h))return i(h);if(h===93){e.exit("chunkString");let v=e.exit("gfmFootnoteDefinitionLabelString");return a=Be(n.sliceSerialize(v)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),m}return X(h)||(o=!0),s++,e.consume(h),h===92?u:c}function u(h){return h===91||h===92||h===93?(e.consume(h),s++,c):c(h)}function m(h){return h===58?(e.enter("definitionMarker"),e.consume(h),e.exit("definitionMarker"),r.includes(a)||r.push(a),K(e,g,"gfmFootnoteDefinitionWhitespace")):i(h)}function g(h){return t(h)}}function sf(e,t,i){return e.check(yi,t,e.attempt(ef,t,i))}function of(e){e.exit("gfmFootnoteDefinition")}function lf(e,t,i){let n=this;return K(e,r,"gfmFootnoteDefinitionIndent",4+1);function r(a){let s=n.events[n.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?t(a):i(a)}}var cf={tokenize:df},To={text:{[91]:cf}};function df(e,t,i){let n=this;return r;function r(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?i(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),a)}function a(l){return X(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),s):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),s):i(l)}function s(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),o):i(l)}function o(l){return B(l)?t(l):G(l)?e.check({tokenize:uf},t,i)(l):i(l)}}function uf(e,t,i){return K(e,n,"whitespace");function n(r){return r===null?i(r):t(r)}}var md={}.hasOwnProperty;function La(e){let t={},i=-1;for(;++i=d||c+1s))return;let F=t.events.length,M=F,D,H;for(;M--;)if(t.events[M][0]==="exit"&&t.events[M][1].type==="chunkFlow"){if(D){H=t.events[M][1].end;break}D=!0}for(z(n),A=F;AL;){let _=i[q];t.containerState=_[1],_[0].exit.call(t,e)}i.length=L}function S(){r.write([null]),a=void 0,r=void 0,t.containerState._closeFlow=void 0}}function zf(e,t,i){return K(e,e.attempt(this.parser.constructs.document,t,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}var Ld={tokenize:Sf};function Sf(e){let t=this,i=e.attempt(yi,n,e.attempt(this.parser.constructs.flowInitial,r,K(e,e.attempt(this.parser.constructs.flow,r,e.attempt(ho,r)),"linePrefix")));return i;function n(a){if(a===null){e.consume(a);return}return e.enter("lineEndingBlank"),e.consume(a),e.exit("lineEndingBlank"),t.currentConstruct=void 0,i}function r(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),t.currentConstruct=void 0,i}}var Od={resolveAll:Id()},Cd=Md("string"),qd=Md("text");function Md(e){return{tokenize:t,resolveAll:Id(e==="text"?Tf:void 0)};function t(i){let n=this,r=this.parser.constructs[e],a=i.attempt(r,s,o);return s;function s(c){return d(c)?a(c):o(c)}function o(c){if(c===null){i.consume(c);return}return i.enter("data"),i.consume(c),l}function l(c){return d(c)?(i.exit("data"),a(c)):(i.consume(c),l)}function d(c){if(c===null)return!0;let u=r[c],m=-1;if(u)for(;++m-1&&(s[0]=s[0].slice(n)),a>0&&s.push(e[r].slice(0,a))),s}function Ef(e,t){let i=-1,n=[],r;for(;++iah,contentInitial:()=>Xg,disable:()=>sh,document:()=>Jg,flow:()=>ih,flowInitial:()=>eh,insideSpan:()=>rh,string:()=>th,text:()=>nh});var Jg={[42]:Re,[43]:Re,[45]:Re,[48]:Re,[49]:Re,[50]:Re,[51]:Re,[52]:Re,[53]:Re,[54]:Re,[55]:Re,[56]:Re,[57]:Re,[62]:ba},Xg={[91]:Ks},eh={[-2]:An,[-1]:An,[32]:An},ih={[35]:Vs,[42]:nt,[45]:[Oa,nt],[60]:Gs,[61]:Oa,[95]:nt,[96]:wa,[126]:wa},th={[38]:xa,[92]:va},nh={[-5]:Cn,[-4]:Cn,[-3]:Cn,[33]:Qs,[38]:xa,[42]:En,[60]:[Ns,Zs],[91]:Js,[92]:[Ws,va],[93]:tt,[95]:En,[96]:Hs},rh={null:[En,qc]},ah={null:[42,95]},sh={null:[]};function Rc(e={}){let i=Ea([to].concat(e.extensions||[])),t={defined:[],lazy:{},constructs:i,content:n(Ec),document:n(Cc),flow:n(Lc),string:n(_c),text:n(Mc)};return t;function n(r){return a;function a(s){return Fc(t,r,s)}}}var jc=/[\0\t\n\r]/g;function Dc(){let e=1,i="",t=!0,n;return r;function r(a,s,o){let l=[],d,c,u,m,g;for(a=i+a.toString(s),u=0,i="",t&&(a.charCodeAt(0)===65279&&u++,t=void 0);u13&&t<32||t>126&&t<160||t>55295&&t<57344||t>64975&&t<65008||(t&65535)===65535||(t&65535)===65534||t>1114111?"\uFFFD":String.fromCharCode(t)}var oh=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function $c(e){return e.replace(oh,lh)}function lh(e,i,t){if(i)return i;if(t.charCodeAt(0)===35){let r=t.charCodeAt(1),a=r===120||r===88;return Aa(t.slice(a?2:1),a?16:10)}return $t(t)||e}function Ln(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?Nc(e.position):"start"in e||"end"in e?Nc(e):"line"in e||"column"in e?no(e):""}function no(e){return Hc(e&&e.line)+":"+Hc(e&&e.column)}function Nc(e){return no(e&&e.start)+"-"+no(e&&e.end)}function Hc(e){return e&&typeof e=="number"?e:1}var ro={}.hasOwnProperty,ao=function(e,i,t){return typeof i!="string"&&(t=i,i=void 0),ch(t)(Pc(Rc(t).document().write(Dc()(e,i,!0))))};function ch(e={}){let i=Kc({transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:l(Vi),autolinkProtocol:K,autolinkEmail:K,atxHeading:l(en),blockQuote:l(Mi),characterEscape:K,characterReference:K,codeFenced:l(Wi),codeFencedFenceInfo:d,codeFencedFenceMeta:d,codeIndented:l(Wi,d),codeText:l(fs,d),codeTextData:K,data:K,codeFlowValue:K,definition:l(ys),definitionDestinationString:d,definitionLabelString:d,definitionTitleString:d,emphasis:l(Fr),hardBreakEscape:l(Rr),hardBreakTrailing:l(Rr),htmlFlow:l(jr,d),htmlFlowData:K,htmlText:l(jr,d),htmlTextData:K,image:l(Oi),label:d,link:l(Vi),listItem:l(Dr),listItemValue:f,listOrdered:l(tn,h),listUnordered:l(tn),paragraph:l(nn),reference:ai,referenceString:d,resourceDestinationString:d,resourceTitleString:d,setextHeading:l(en),strong:l(Pr),thematicBreak:l(Nr)},exit:{atxHeading:u(),atxHeadingSequence:_,autolink:u(),autolinkEmail:mi,autolinkProtocol:si,blockQuote:u(),characterEscapeValue:B,characterReferenceMarkerHexadecimal:ee,characterReferenceMarkerNumeric:ee,characterReferenceValue:Ti,codeFenced:u(O),codeFencedFence:A,codeFencedFenceInfo:v,codeFencedFenceMeta:b,codeFlowValue:B,codeIndented:u(C),codeText:u(le),codeTextData:B,data:B,definition:u(),definitionDestinationString:q,definitionLabelString:M,definitionTitleString:S,emphasis:u(),hardBreakEscape:u(X),hardBreakTrailing:u(X),htmlFlow:u(Z),htmlFlowData:B,htmlText:u(oe),htmlTextData:B,image:u(ne),label:w,labelText:k,lineEnding:W,link:u(ce),listItem:u(),listOrdered:u(),listUnordered:u(),paragraph:u(),referenceString:Ye,resourceDestinationString:pi,resourceTitleString:He,resource:je,setextHeading:u($),setextHeadingLineSequence:Y,setextHeadingText:D,strong:u(),thematicBreak:u()}},e.mdastExtensions||[]),t={};return n;function n(E){let I={type:"root",children:[]},H=[I],Q=[],Je=[],rn={stack:H,tokenStack:Q,config:i,enter:c,exit:m,buffer:d,resume:g,setData:a,getData:s},re=-1;for(;++re0){let qe=Q[Q.length-1];(qe[1]||Yc).call(rn,void 0,qe[0])}for(I.position={start:o(E.length>0?E[0][1].start:{line:1,column:1,offset:0}),end:o(E.length>0?E[E.length-2][1].end:{line:1,column:1,offset:0})},re=-1;++re0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof i.maxAge=="number"&&i.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=i.maxSize,this.maxAge=i.maxAge||Number.POSITIVE_INFINITY,this.onEviction=i.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(i){if(typeof this.onEviction=="function")for(let[t,n]of i)this.onEviction(t,n.value)}_deleteIfExpired(i,t){return typeof t.expiry=="number"&&t.expiry<=Date.now()?(typeof this.onEviction=="function"&&this.onEviction(i,t.value),this.delete(i)):!1}_getOrDeleteIfExpired(i,t){if(this._deleteIfExpired(i,t)===!1)return t.value}_getItemValue(i,t){return t.expiry?this._getOrDeleteIfExpired(i,t):t.value}_peek(i,t){let n=t.get(i);return this._getItemValue(i,n)}_set(i,t){this.cache.set(i,t),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(i,t){this.oldCache.delete(i),this._set(i,t)}*_entriesAscending(){for(let i of this.oldCache){let[t,n]=i;this.cache.has(t)||this._deleteIfExpired(t,n)===!1&&(yield i)}for(let i of this.cache){let[t,n]=i;this._deleteIfExpired(t,n)===!1&&(yield i)}}get(i){if(this.cache.has(i)){let t=this.cache.get(i);return this._getItemValue(i,t)}if(this.oldCache.has(i)){let t=this.oldCache.get(i);if(this._deleteIfExpired(i,t)===!1)return this._moveToRecent(i,t),t.value}}set(i,t,{maxAge:n=this.maxAge}={}){let r=typeof n=="number"&&n!==Number.POSITIVE_INFINITY?Date.now()+n:void 0;this.cache.has(i)?this.cache.set(i,{value:t,expiry:r}):this._set(i,{value:t,expiry:r})}has(i){return this.cache.has(i)?!this._deleteIfExpired(i,this.cache.get(i)):this.oldCache.has(i)?!this._deleteIfExpired(i,this.oldCache.get(i)):!1}peek(i){if(this.cache.has(i))return this._peek(i,this.cache);if(this.oldCache.has(i))return this._peek(i,this.oldCache)}delete(i){let t=this.cache.delete(i);return t&&this._size--,this.oldCache.delete(i)||t}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(i){if(!(i&&i>0))throw new TypeError("`maxSize` must be a number greater than 0");let t=[...this._entriesAscending()],n=t.length-i;n<0?(this.cache=new Map(t),this.oldCache=new Map,this._size=t.length):(n>0&&this._emitEvictions(t.slice(0,n)),this.oldCache=new Map(t.slice(n)),this.cache=new Map,this._size=0),this.maxSize=i}*keys(){for(let[i]of this)yield i}*values(){for(let[,i]of this)yield i}*[Symbol.iterator](){for(let i of this.cache){let[t,n]=i;this._deleteIfExpired(t,n)===!1&&(yield[t,n.value])}for(let i of this.oldCache){let[t,n]=i;this.cache.has(t)||this._deleteIfExpired(t,n)===!1&&(yield[t,n.value])}}*entriesDescending(){let i=[...this.cache];for(let t=i.length-1;t>=0;--t){let n=i[t],[r,a]=n;this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}i=[...this.oldCache];for(let t=i.length-1;t>=0;--t){let n=i[t],[r,a]=n;this.cache.has(r)||this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}}*entriesAscending(){for(let[i,t]of this._entriesAscending())yield[i,t.value]}get size(){if(!this._size)return this.oldCache.size;let i=0;for(let t of this.oldCache.keys())this.cache.has(t)||i++;return Math.min(this._size+i,this.maxSize)}entries(){return this.entriesAscending()}forEach(i,t=this){for(let[n,r]of this.entriesAscending())i.call(t,r,n,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}};var so=new qn({maxSize:200});function ph(e){let i=Ul(e);if(so.has(i))return so.get(i);let t=ao(e,{extensions:[Ea([Xs(),eo]),io()],mdastExtensions:[[Wc(),Uc],zc()]});return so.set(i,t),t}function be(e,i){let t=ph(i),n=[];return uc(t,e,r=>{n.push(r.position)}),n.sort((r,a)=>a.start.offset-r.start.offset),n}function Gc(e){let i=be("footnoteDefinition",e),t=[],n=new Set,r=new Map,a=function(s,o){let l=s.match(/\[\^.*?\]/)[0],d;do d=e.lastIndexOf(l,o),o=d;while(n.has(d)&&d!==-1);if(d===-1)throw new Error(`Footnote '${s}' has no corresponding footnote reference before the footnote contents and cannot be processed. Please make sure that all footnotes have a corresponding reference before the content of the footnote.`);return n.add(d),d};for(let s of i){let o=e.substring(s.start.offset,s.end.offset);t.push(o),s.end.offsetr.get(s)-r.get(o)),t.length>0&&(e=e.trimEnd()+` -`);for(let s of t)e+=` -`+s;return e}function Ca(e,i,t){let n=be(t,e);if(n.length===0)return e;let r="";if(i==="underscore")r="_";else if(i==="asterisk")r="*";else{let a=n[n.length-1];r=e.substring(a.start.offset,a.start.offset+1)}t==="strong"&&(r+=r);for(let a of n){let s=r+e.substring(a.start.offset+r.length,a.end.offset-r.length)+r;e=ze(e,a.start.offset,a.end.offset,s)}return e}function Zc(e){let i=be("paragraph",e);if(i.length===0)return e;for(let t of i){let n=e.substring(t.start.offset,t.end.offset).split(` -`),r=n.length-1;if(!(r<1)){for(let a=0;a")||s.endsWith("
")||(n[a]=s+" ")}e=ze(e,t.start.offset,t.end.offset,n.join(` -`))}}return e}function Qc(e){let i=e.endsWith(` -`),t=be("paragraph",e);if(t.length===0)return e;for(let n of t){let r=n.start.offset;for(r>0&&r--;r>=0&&e.charAt(r)!=` +`;break}case-2:{s=t?" ":" ";break}case-1:{if(!t&&r)continue;s=" ";break}default:s=String.fromCharCode(a)}r=a===-2,n.push(s)}return n.join("")}var Oo={};Rl(Oo,{attentionMarkers:()=>Bf,contentInitial:()=>Of,disable:()=>Ff,document:()=>Lf,flow:()=>qf,flowInitial:()=>Cf,insideSpan:()=>_f,string:()=>Mf,text:()=>If});var Lf={[42]:Fe,[43]:Fe,[45]:Fe,[48]:Fe,[49]:Fe,[50]:Fe,[51]:Fe,[52]:Fe,[53]:Fe,[54]:Fe,[55]:Fe,[56]:Fe,[57]:Fe,[62]:va},Of={[91]:fo},Cf={[-2]:En,[-1]:En,[32]:En},qf={[35]:bo,[42]:at,[45]:[Ea,at],[60]:xo,[61]:Ea,[95]:at,[96]:ka,[126]:ka},Mf={[38]:wa,[92]:xa},If={[-5]:Ln,[-4]:Ln,[-3]:Ln,[33]:ko,[38]:wa,[42]:An,[60]:[mo,wo],[91]:zo,[92]:[yo,xa],[93]:rt,[95]:An,[96]:go},_f={null:[An,Od]},Bf={null:[42,95]},Ff={null:[]};function Bd(e={}){let t=La([Oo].concat(e.extensions||[])),i={defined:[],lazy:{},constructs:t,content:n(Td),document:n(Ed),flow:n(Ld),string:n(Cd),text:n(qd)};return i;function n(r){return a;function a(s){return _d(i,r,s)}}}var Fd=/[\0\t\n\r]/g;function Rd(){let e=1,t="",i=!0,n;return r;function r(a,s,o){let l=[],d,c,u,m,g;for(a=t+a.toString(s),u=0,t="",i&&(a.charCodeAt(0)===65279&&u++,i=void 0);u13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||(i&65535)===65535||(i&65535)===65534||i>1114111?"\uFFFD":String.fromCharCode(i)}var Rf=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Ca(e){return e.replace(Rf,Df)}function Df(e,t,i){if(t)return t;if(i.charCodeAt(0)===35){let r=i.charCodeAt(1),a=r===120||r===88;return Oa(i.slice(a?2:1),a?16:10)}return $t(i)||e}function Ht(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?Nd(e.position):"start"in e||"end"in e?Nd(e):"line"in e||"column"in e?Co(e):""}function Co(e){return jd(e&&e.line)+":"+jd(e&&e.column)}function Nd(e){return Co(e&&e.start)+"-"+Co(e&&e.end)}function jd(e){return e&&typeof e=="number"?e:1}var Kd={}.hasOwnProperty,qo=function(e,t,i){return typeof t!="string"&&(i=t,t=void 0),Nf(i)(Dd(Bd(i).document().write(Rd()(e,t,!0))))};function Nf(e){let t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:o(gi),autolinkProtocol:j,autolinkEmail:j,atxHeading:o(ln),blockQuote:o(mi),characterEscape:j,characterReference:j,codeFenced:o(Ei),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:o(Ei,l),codeText:o(_t,l),codeTextData:j,data:j,codeFlowValue:j,definition:o(Ds),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:o(Ns),hardBreakEscape:o(cn),hardBreakTrailing:o(cn),htmlFlow:o(Vr,l),htmlFlowData:j,htmlText:o(Vr,l),htmlTextData:j,image:o(js),label:l,link:o(gi),listItem:o(Ur),listItemValue:h,listOrdered:o(Zi,g),listUnordered:o(Zi),paragraph:o(Gr),reference:Re,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:o(ln),strong:o(dn),thematicBreak:o(Zr)},exit:{atxHeading:c(),atxHeadingSequence:F,autolink:c(),autolinkEmail:si,autolinkProtocol:Ai,blockQuote:c(),characterEscapeValue:V,characterReferenceMarkerHexadecimal:De,characterReferenceMarkerNumeric:De,characterReferenceValue:se,codeFenced:c(S),codeFencedFence:z,codeFencedFenceInfo:v,codeFencedFenceMeta:w,codeFlowValue:V,codeIndented:c(L),codeText:c(ce),codeTextData:V,data:V,definition:c(),definitionDestinationString:A,definitionLabelString:q,definitionTitleString:_,emphasis:c(),hardBreakEscape:c(Y),hardBreakTrailing:c(Y),htmlFlow:c(re),htmlFlowData:V,htmlText:c(Q),htmlTextData:V,image:c(ue),label:k,labelText:ae,lineEnding:R,link:c(de),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:ai,resourceDestinationString:x,resourceTitleString:pi,resource:Ye,setextHeading:c(H),setextHeadingLineSequence:D,setextHeadingText:M,strong:c(),thematicBreak:c()}};$d(t,(e||{}).mdastExtensions||[]);let i={};return n;function n(O){let I={type:"root",children:[]},$={stack:[I],tokenStack:[],config:t,enter:d,exit:u,buffer:l,resume:m,setData:a,getData:s},Z=[],J=-1;for(;++J0){let oi=$.tokenStack[$.tokenStack.length-1];(oi[1]||Pd).call($,void 0,oi[0])}for(I.position={start:Ni(O.length>0?O[0][1].start:{line:1,column:1,offset:0}),end:Ni(O.length>0?O[O.length-2][1].end:{line:1,column:1,offset:0})},J=-1;++J0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof t.maxAge=="number"&&t.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=t.maxSize,this.maxAge=t.maxAge||Number.POSITIVE_INFINITY,this.onEviction=t.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(t){if(typeof this.onEviction=="function")for(let[i,n]of t)this.onEviction(i,n.value)}_deleteIfExpired(t,i){return typeof i.expiry=="number"&&i.expiry<=Date.now()?(typeof this.onEviction=="function"&&this.onEviction(t,i.value),this.delete(t)):!1}_getOrDeleteIfExpired(t,i){if(this._deleteIfExpired(t,i)===!1)return i.value}_getItemValue(t,i){return i.expiry?this._getOrDeleteIfExpired(t,i):i.value}_peek(t,i){let n=i.get(t);return this._getItemValue(t,n)}_set(t,i){this.cache.set(t,i),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(t,i){this.oldCache.delete(t),this._set(t,i)}*_entriesAscending(){for(let t of this.oldCache){let[i,n]=t;this.cache.has(i)||this._deleteIfExpired(i,n)===!1&&(yield t)}for(let t of this.cache){let[i,n]=t;this._deleteIfExpired(i,n)===!1&&(yield t)}}get(t){if(this.cache.has(t)){let i=this.cache.get(t);return this._getItemValue(t,i)}if(this.oldCache.has(t)){let i=this.oldCache.get(t);if(this._deleteIfExpired(t,i)===!1)return this._moveToRecent(t,i),i.value}}set(t,i,{maxAge:n=this.maxAge}={}){let r=typeof n=="number"&&n!==Number.POSITIVE_INFINITY?Date.now()+n:void 0;this.cache.has(t)?this.cache.set(t,{value:i,expiry:r}):this._set(t,{value:i,expiry:r})}has(t){return this.cache.has(t)?!this._deleteIfExpired(t,this.cache.get(t)):this.oldCache.has(t)?!this._deleteIfExpired(t,this.oldCache.get(t)):!1}peek(t){if(this.cache.has(t))return this._peek(t,this.cache);if(this.oldCache.has(t))return this._peek(t,this.oldCache)}delete(t){let i=this.cache.delete(t);return i&&this._size--,this.oldCache.delete(t)||i}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(t){if(!(t&&t>0))throw new TypeError("`maxSize` must be a number greater than 0");let i=[...this._entriesAscending()],n=i.length-t;n<0?(this.cache=new Map(i),this.oldCache=new Map,this._size=i.length):(n>0&&this._emitEvictions(i.slice(0,n)),this.oldCache=new Map(i.slice(n)),this.cache=new Map,this._size=0),this.maxSize=t}*keys(){for(let[t]of this)yield t}*values(){for(let[,t]of this)yield t}*[Symbol.iterator](){for(let t of this.cache){let[i,n]=t;this._deleteIfExpired(i,n)===!1&&(yield[i,n.value])}for(let t of this.oldCache){let[i,n]=t;this.cache.has(i)||this._deleteIfExpired(i,n)===!1&&(yield[i,n.value])}}*entriesDescending(){let t=[...this.cache];for(let i=t.length-1;i>=0;--i){let n=t[i],[r,a]=n;this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}t=[...this.oldCache];for(let i=t.length-1;i>=0;--i){let n=t[i],[r,a]=n;this.cache.has(r)||this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}}*entriesAscending(){for(let[t,i]of this._entriesAscending())yield[t,i.value]}get size(){if(!this._size)return this.oldCache.size;let t=0;for(let i of this.oldCache.keys())this.cache.has(i)||t++;return Math.min(this._size+t,this.maxSize)}entries(){return this.entriesAscending()}forEach(t,i=this){for(let[n,r]of this.entriesAscending())t.call(i,r,n,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}};var _o=new On({maxSize:200});function Vd(e){let t=id(e);if(_o.has(t))return _o.get(t);let i=qo(e,{extensions:[La([So(),To]),Ao()],mdastExtensions:[[Mo(),Io],Eo()]});return _o.set(t,i),i}function ye(e,t){let i=Vd(t),n=[];return ba(i,e,r=>{n.push(r.position)}),n.sort((r,a)=>a.start.offset-r.start.offset),n}function Jf(e){let t=Vd(e),i=[];return ba(t,"listItem",n=>{if(n.children)for(let r of n.children)r.type==="paragraph"&&i.push(r.position)}),i.sort((n,r)=>r.start.offset-n.start.offset),i}function Ud(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map;e=Qd(t,e,i,function(s,o,l){let d=o.match(/\[\^.*?\]/)[0];if(n.has(d)){let g=n.get(d);g.footnotesReferencingKey.push(o),n.set(d,g);return}let c,u=[];do c=s.lastIndexOf(d,l),c!==-1&&(u.push(c),l=c-1);while(c>-1);let m={key:d,referencePositions:u,footnotesReferencingKey:[o]};n.set(d,m)});for(let s of n){let o=s[1],l=o.referencePositions.length-o.footnotesReferencingKey.length;l=l>=0?l:0;let d=0;for(let c of o.footnotesReferencingKey){if(d+l>=o.referencePositions.length)throw new Error(E("logs.missing-footnote-error-message").replace("{FOOTNOTE}",c));r.set(c,o.referencePositions[l+d++])}}i=i.sort((s,o)=>r.get(s)-r.get(o)),i.length>0&&(e=e.trimEnd()+` +`);for(let s of i)e+=` +`+s;return e}function Gd(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map,a=new Map,s=[],o=new Set,l=function(u,m,g){let h=m.match(/\[\^.*?\]/)[0];r.set(m,h);let v=o.has(h);if(v&&n.has(m))return n.get(m);if(v)throw new Error(E("logs.too-many-footnotes-error-message").replace("{FOOTNOTE_KEY}",h));let w,z=-1;do w=u.lastIndexOf(h,g),w!==-1&&(s.push({key:h,position:w}),z=w,g=w-1);while(w>-1);return o.add(h),z};e=Qd(t,e,i,(u,m,g)=>{n.set(m,l(u,m,g))}),i=i.sort((u,m)=>n.get(u)-n.get(m)),s=s.sort((u,m)=>m.position-u.position),i.length>0&&(e=e.trimEnd()+` +`);let d=1,c=new Set;for(let u of i){if(c.has(u))continue;c.add(u);let m=r.get(u),g=`[^${d++}]`;a.set(m,g),e+=` +`+u.replace(m,g)}for(let u of s){let m=a.get(u.key);e=nd(e,u.key,m,u.position)}return e}function Qd(e,t,i,n){for(let r of e){let a=t.substring(r.start.offset,r.end.offset);i.push(a),r.end.offset")||s.endsWith("
")||(n[a]=s+" ")}e=fe(e,i.start.offset,i.end.offset,n.join(` +`))}}return e}function Jd(e){let t=e.endsWith(` +`),i=ye("paragraph",e);if(i.length===0)return e;for(let n of i){let r=n.start.offset;for(r>0&&r--;r>=0&&e.charAt(r)!=` `;)r--;r++;let a=e.substring(r,n.end.offset).split(` -`),s=a[0].trimStart();if(s.startsWith("> ")||s.startsWith("> ")||s.startsWith("- ")||s.startsWith("- ")||s.match(/^[0-9]+\.( |\t)+/))continue;let o=a.length,l=[],d=!1;for(let h=0;h")||f.endsWith("
")||f.endsWith(" ")}for(;r>0&&e.charAt(r-1)==` +`),s=a[0].trimStart();if(s.startsWith(">")||s.startsWith("- ")||s.startsWith("- ")||s.match(/^[0-9]+\.( |\t)+/))continue;let o=a.length,l=[],d=!1;for(let h=0;h")||v.endsWith("
")||v.endsWith(" ")}for(;r>0&&e.charAt(r-1)==` `;)r--;let c=e.length,u=n.end.offset;for(u?)*(\*|-|\+|- \[( | x)\]|\d+\.) /g,s=r.match(a);if(s){let o=r.split(new RegExp(a.source.replaceAll("(","(?:"))),l="",d=0;for(let c of o)d>0&&(l+=s[d-1]),l+=i(c),d++;r=l}else r=i(r);e=ze(e,n.start.offset+2,n.end.offset,r)}return e}function td(e){let i=be("code",e);for(let t of i)e.substring(t.start.offset,t.end.offset).startsWith("```")&&(e=Qi(e,t.start.offset,t.end.offset));return e}function nd(e,i){let t=be("math",e);for(let n of t)e=Qi(e,n.start.offset,n.end.offset);t=be("inlineMath",e);for(let n of t)e.substring(n.start.offset,n.end.offset).startsWith("$".repeat(i))&&(e=Qi(e,n.start.offset,n.end.offset));return e}function rd(e){let i=be("blockquote",e);for(let t of i)e=Qi(e,t.start.offset,t.end.offset,!0);return e}function ad(e,i,t){let n=be("list",e);if(!n)return e;for(let r of n){let a=r.start.offset;for(;a>0&&e.charAt(a-1)!==` -`;)a--;let s=e.substring(a,r.end.offset),o=function(c){let u=c.lastIndexOf("> ");return u!==-1&&(c=c.substring(u+2)),c=c.replaceAll(" "," "),Math.floor((c.split(" ").length-1)/2)+1},l=new Map,d=-1;s=s.replace(/^(( |\t|> )*)(\d+(\.|\)))([^\n]*)$/gm,(c,u="",m,g,h,f)=>{let v=1,b=o(u);if(l.has(b)?i==="ascending"&&(v=l.get(b)+1,l.set(b,v)):l.set(b,1),d>b){let A=d;for(;A>b;)l.delete(A--)}return d=b,`${u}${v}${t}${f}`}),e=ze(e,a,r.end.offset,s)}return e}function sd(e,i){let t=be("listItem",e);if(!t)return e;let n=/^((\d+[.)])|(- \[[ x]\]))/m,r=i;if(i=="consistent"){let a=t.length-1;for(;a>=0;){let s=e.substring(t[a].start.offset,t[a].end.offset);if(a--,!s.match(n)){r=s.charAt(0);break}}if(a==-1)return e}for(let a of t){let s=e.substring(a.start.offset,a.end.offset);s.match(n)||(s=r+s.substring(1),e=ze(e,a.start.offset,a.end.offset,s))}return e}function od(e,i){let t=be("math",e),n=new RegExp("^(\\${"+i+",})(\\n*)"),r=new RegExp("(\\n*)(\\${"+i+",})([^\\$]*)$");for(let a of t){let s=e.substring(a.start.offset,a.end.offset);s=s.replace(n,`$1 -`),s=s.replace(r,` -$2$3`),e=ze(e,a.start.offset,a.end.offset,s)}t=be("inlineMath",e);for(let a of t){if(!e.substring(a.start.offset,a.end.offset).startsWith("$".repeat(i)))continue;let s=e.substring(a.start.offset,a.end.offset);s=s.replace(n,`$1 -`),s=s.replace(r,` -$2$3`),e=ze(e,a.start.offset,a.end.offset,s)}return e}var y={code:{replaceAction:"code",placeholder:"{CODE_BLOCK_PLACEHOLDER}"},inlineCode:{replaceAction:"inlineCode",placeholder:"{INLINE_CODE_BLOCK_PLACEHOLDER}"},image:{replaceAction:"image",placeholder:"{IMAGE_PLACEHOLDER}"},thematicBreak:{replaceAction:"thematicBreak",placeholder:"{HORIZONTAL_RULE_PLACEHOLDER}"},italics:{replaceAction:"emphasis",placeholder:"{ITALICS_PLACEHOLDER}"},bold:{replaceAction:"strong",placeholder:"{STRONG_PLACEHOLDER}"},list:{replaceAction:"list",placeholder:"{LIST_PLACEHOLDER}"},blockquote:{replaceAction:"blockquote",placeholder:"{BLOCKQUOTE_PLACEHOLDER}"},math:{replaceAction:"math",placeholder:"{MATH_PLACEHOLDER}"},inlineMath:{replaceAction:"inlineMath",placeholder:"{INLINE_MATH_PLACEHOLDER}"},html:{replaceAction:"html",placeholder:"{HTML_PLACEHOLDER}"},yaml:{replaceAction:Se,placeholder:We(`--- ----`)},wikiLink:{replaceAction:Qr,placeholder:"{WIKI_LINK_PLACEHOLDER}"},tag:{replaceAction:fh,placeholder:"#tag-placeholder"},obsidianMultiLineComments:{replaceAction:Ql,placeholder:"{OBSIDIAN_COMMENT_PLACEHOLDER}"},table:{replaceAction:_s,placeholder:"{TABLE_PLACEHOLDER}"},footnoteAtStartOfLine:{replaceAction:/^(\[\^\w+\]) ?([,.;!:?])/gm,placeholder:"{FOOTNOTE_AT_START_OF_LINE_PLACEHOLDER}"},footnoteAfterATask:{replaceAction:/- \[.] (\[\^\w+\]) ?([,.;!:?])/gm,placeholder:"{FOOTNOTE_AFTER_A_TASK_PLACEHOLDER}"},url:{replaceAction:Bt,placeholder:"{URL_PLACEHOLDER}"},anchorTag:{replaceAction:Jl,placeholder:"{ANCHOR_PLACEHOLDER}"},link:{replaceAction:hh,placeholder:"{REGULAR_LINK_PLACEHOLDER}"}};function R(e,i,t){let n=[];for(let r of e){let a;if(typeof r.replaceAction=="string")a=mh(i,r.placeholder,r.replaceAction);else if(r.replaceAction instanceof RegExp)a=gh(i,r.placeholder,r.replaceAction);else if(typeof r.replaceAction=="function"){let s=r.replaceAction;a=s(i,r.placeholder)}i=a.newText,n.push({replacedValues:a.replacedValues,placeholder:r.placeholder})}return i=t(i),n=n.reverse(),n!=null&&n.length>0&&n.forEach(r=>{r.replacedValues.forEach(a=>{i=i.replace(new RegExp(r.placeholder,"i"),We(a))})}),i}function mh(e,i,t){let n=be(t,e),r=[];for(let a of n){let s=e.substring(a.start.offset,a.end.offset);r.push(s),e=ze(e,a.start.offset,a.end.offset,i)}return r.reverse(),{newText:e,replacedValues:r}}function gh(e,i,t){let n=e.match(t),r=[];if(t.flags.includes("g")){if(e=e.replaceAll(t,i),n)for(let a of n)r.push(a)}else e=e.replace(t,i),n&&r.push(n[0]);return{newText:e,replacedValues:r}}function hh(e,i){let t=be("link",e),n=[];for(let r of t){if(r==null)continue;let a=e.substring(r.start.offset,r.end.offset);a.match(pn)&&(n.push(a),e=ze(e,r.start.offset,r.end.offset,i))}return n.reverse(),{newText:e,replacedValues:n}}function fh(e,i){let t=[];return e=e.replace(mn,(n,r,a)=>(t.push(a),r+i)),{newText:e,replacedValues:t}}var Nt,_n,Pi,ii=class{static getRule(){if(!Ve(ii,Nt).has(this.name)){let i=new this,t=new la(i.name,i.description,i.type,i.safeApply.bind(i),i.exampleBuilders.map(n=>n.example),i.optionBuilders.map(n=>n.option),i.hasSpecialExecutionOrder);Ve(ii,Nt).set(this.name,t),Ve(ii,_n).set(i.name,i)}return Ve(ii,Nt).get(this.name)}static applyIfEnabledBase(i,t,n,r){let a=i.getOptions(n);if(a[i.enabledOptionName()]){let s=Object.assign({},a,r);vi(`Running ${i.name}`);try{return[i.apply(t,s),!0]}catch(o){da(o,i.name)}}else return[t,!1]}static getBuilderByName(i){return Ve(ii,_n).get(i)}static setNoSettingControl(i,t){Ve(ii,Pi).has(i)||Ve(ii,Pi).set(i,[]),Ve(ii,Pi).get(i).push(t)}static hasSettingControl(i,t){return!Ve(ii,Pi).has(i)||!Ve(ii,Pi).get(i).includes(t)}},oi=ii;Nt=new WeakMap,_n=new WeakMap,Pi=new WeakMap,At(oi,Nt,new Map),At(oi,_n,new Map),At(oi,Pi,new Map);var z=class extends oi{static register(i){let t=i.getRule();ac(t)}safeApply(i,t){return this.apply(i,this.buildRuleOptions(t))}buildRuleOptions(i){i=i??{};let t=new this.OptionsClass,n=Object.assign(t,i);for(let r of this.optionBuilders)r.setRuleOption(n,i);return n}get hasSpecialExecutionOrder(){return!1}static applyIfEnabled(i,t,n,r){let a=this.getRule();return n.includes(a.alias())?(vi(a.alias()+" is disabled"),[i,!1]):oi.applyIfEnabledBase(a,i,t,r)}static getRuleOptions(i){let t=oi.getRule.bind(this)(),n=new this,r=t.getOptions(i);return n.buildRuleOptions(r)}static noSettingControl(){return(i,t)=>{let n=i.constructor.name;oi.setNoSettingControl(n,t)}}},oo,x=class{constructor(i){At(this,oo,void 0);this.example=new ca(i.description,i.before,i.after,i.options)}};oo=new WeakMap;var Ht,$i=class{constructor(i){At(this,Ht,void 0);this.OptionsClass=i.OptionsClass,this.name=i.name,this.description=i.description,this.optionsKey=i.optionsKey}get defaultValue(){return new this.OptionsClass()[this.optionsKey]}get option(){return Ve(this,Ht)||rl(this,Ht,this.buildOption()),Ve(this,Ht)}setRuleOption(i,t){let n=t[this.name];n!==void 0&&(i[this.optionsKey]=n)}};Ht=new WeakMap;var U=class extends $i{buildOption(){return new It(this.name,this.description,this.defaultValue)}},La=class extends $i{buildOption(){return new vn(this.name,this.description,this.defaultValue)}},ve=class extends $i{constructor(t){super(t);this.records=t.records.map(n=>new sa(n.value,n.description))}buildOption(){return new oa(this.name,this.description,this.defaultValue,this.records)}},he=class extends $i{constructor(t){super(t);this.separator=t.separator??` -`,this.splitter=t.splitter??/\n/}buildOption(){return new ra(this.name,this.description,this.defaultValue.join(this.separator))}setRuleOption(t,n){if(n[this.name]!==void 0){let r=n[this.name].split(this.splitter).filter(function(a){return a!=""});t[this.optionsKey]=r}}},li=class extends $i{buildOption(){return new vn(this.name,this.description,this.defaultValue)}},qa=class extends $i{buildOption(){return new aa(this.name,this.description,this.defaultValue)}};var lo=new Map([["1nd","1st"],["2rd","2nd"],["2st","2nd"],["3nd","3rd"],["3st","3rd"],["4rd","4th"],["a-diaerers","a-diaereses"],["aaccess","access"],["aaccessibility","accessibility"],["aaccession","accession"],["aack","ack"],["aactual","actual"],["aactually","actually"],["aadd","add"],["aagain","again"],["aaggregation","aggregation"],["aanother","another"],["aapply","apply"],["aaproximate","approximate"],["aaproximated","approximated"],["aaproximately","approximately"],["aaproximates","approximates"],["aaproximating","approximating"],["aare","are"],["aassign","assign"],["aassignment","assignment"],["aassignments","assignments"],["aassociated","associated"],["aassumed","assumed"],["aautomatic","automatic"],["aautomatically","automatically"],["abailable","available"],["abanden","abandon"],["abandonded","abandoned"],["abandone","abandon"],["abandonned","abandoned"],["abandonning","abandoning"],["abbbreviated","abbreviated"],["abberation","aberration"],["abberations","aberrations"],["abberivates","abbreviates"],["abberration","aberration"],["abborted","aborted"],["abborting","aborting"],["abbrevate","abbreviate"],["abbrevation","abbreviation"],["abbrevations","abbreviations"],["abbreviaton","abbreviation"],["abbreviatons","abbreviations"],["abbriviate","abbreviate"],["abbriviation","abbreviation"],["abbriviations","abbreviations"],["aberation","aberration"],["abigious","ambiguous"],["abiguity","ambiguity"],["abilityes","abilities"],["abilties","abilities"],["abilty","ability"],["abiss","abyss"],["abitrarily","arbitrarily"],["abitrary","arbitrary"],["abitrate","arbitrate"],["abitration","arbitration"],["abizmal","abysmal"],["abnoramlly","abnormally"],["abnormalty","abnormally"],["abnormaly","abnormally"],["abnornally","abnormally"],["abnove","above"],["abnrormal","abnormal"],["aboluste","absolute"],["abolustely","absolutely"],["abolute","absolute"],["abondon","abandon"],["abondoned","abandoned"],["abondoning","abandoning"],["abondons","abandons"],["aboout","about"],["aborigene","aborigine"],["abortificant","abortifacient"],["aboslute","absolute"],["aboslutely","absolutely"],["abosulte","absolute"],["abosultely","absolutely"],["abosulute","absolute"],["abosulutely","absolutely"],["abotu","about"],["abount","about"],["aboutit","about it"],["aboutthe","about the"],["abouve","above"],["abov","above"],["aboved","above"],["abovemtioned","abovementioned"],["aboves","above"],["abovmentioned","abovementioned"],["abreviate","abbreviate"],["abreviated","abbreviated"],["abreviates","abbreviates"],["abreviating","abbreviating"],["abreviation","abbreviation"],["abreviations","abbreviations"],["abritrarily","arbitrarily"],["abritrary","arbitrary"],["abriviate","abbreviate"],["absail","abseil"],["absailing","abseiling"],["absance","absence"],["abscence","absence"],["abscound","abscond"],["abselutely","absolutely"],["abselutly","absolutely"],["absense","absence"],["absodefly","absolute"],["absodeflyly","absolutely"],["absolate","absolute"],["absolately","absolutely"],["absolaute","absolute"],["absolautely","absolutely"],["absoleted","obsoleted"],["absoletely","absolutely"],["absoliute","absolute"],["absoliutely","absolutely"],["absoloute","absolute"],["absoloutely","absolutely"],["absolte","absolute"],["absoltely","absolutely"],["absoltue","absolute"],["absoltuely","absolutely"],["absoluate","absolute"],["absoluately","absolutely"],["absolue","absolute"],["absoluely","absolutely"],["absoluet","absolute"],["absoluetly","absolutely"],["absolule","absolute"],["absolulte","absolute"],["absolultely","absolutely"],["absolune","absolute"],["absolunely","absolutely"],["absolure","absolute"],["absolurely","absolutely"],["absolut","absolute"],["absolutelly","absolutely"],["absoluth","absolute"],["absoluthe","absolute"],["absoluthely","absolutely"],["absoluthly","absolutely"],["absolutley","absolutely"],["absolutly","absolutely"],["absolutlye","absolutely"],["absoluute","absolute"],["absoluutely","absolutely"],["absoluve","absolute"],["absoluvely","absolutely"],["absoolute","absolute"],["absoolutely","absolutely"],["absorbant","absorbent"],["absorbsion","absorption"],["absorbtion","absorption"],["absorve","absorb"],["absould","absolute"],["absouldly","absolutely"],["absoule","absolute"],["absoulely","absolutely"],["absouletely","absolutely"],["absoult","absolute"],["absoulte","absolute"],["absoultely","absolutely"],["absoultly","absolutely"],["absoulute","absolute"],["absoulutely","absolutely"],["absout","absolute"],["absoute","absolute"],["absoutely","absolutely"],["absoutly","absolutely"],["abstact","abstract"],["abstacted","abstracted"],["abstacter","abstracter"],["abstacting","abstracting"],["abstaction","abstraction"],["abstactions","abstractions"],["abstactly","abstractly"],["abstactness","abstractness"],["abstactor","abstractor"],["abstacts","abstracts"],["abstanence","abstinence"],["abstrac","abstract"],["abstraced","abstracted"],["abstracer","abstracter"],["abstracing","abstracting"],["abstracion","abstraction"],["abstracions","abstractions"],["abstracly","abstractly"],["abstracness","abstractness"],["abstracor","abstractor"],["abstracs","abstracts"],["abstrat","abstract"],["abstrated","abstracted"],["abstrater","abstracter"],["abstrating","abstracting"],["abstration","abstraction"],["abstrations","abstractions"],["abstratly","abstractly"],["abstratness","abstractness"],["abstrator","abstractor"],["abstrats","abstracts"],["abstrct","abstract"],["abstrcted","abstracted"],["abstrcter","abstracter"],["abstrcting","abstracting"],["abstrction","abstraction"],["abstrctions","abstractions"],["abstrctly","abstractly"],["abstrctness","abstractness"],["abstrctor","abstractor"],["abstrcts","abstracts"],["absulute","absolute"],["absymal","abysmal"],["abtract","abstract"],["abtracted","abstracted"],["abtracter","abstracter"],["abtracting","abstracting"],["abtraction","abstraction"],["abtractions","abstractions"],["abtractly","abstractly"],["abtractness","abstractness"],["abtractor","abstractor"],["abtracts","abstracts"],["abudance","abundance"],["abudances","abundances"],["abundacies","abundances"],["abundancies","abundances"],["abundand","abundant"],["abundence","abundance"],["abundent","abundant"],["abundunt","abundant"],["abutts","abuts"],["abvailable","available"],["abvious","obvious"],["acadamy","academy"],["acadimy","academy"],["acadmic","academic"],["acale","scale"],["acatemy","academy"],["accademic","academic"],["accademy","academy"],["accapt","accept"],["accapted","accepted"],["accapts","accepts"],["acccept","accept"],["acccepted","accepted"],["acccepting","accepting"],["acccepts","accepts"],["accces","access"],["acccess","access"],["acccessd","accessed"],["acccessed","accessed"],["acccesses","accesses"],["acccessibility","accessibility"],["acccessible","accessible"],["acccessing","accessing"],["acccession","accession"],["acccessor","accessor"],["acccessors","accessors"],["acccord","accord"],["acccordance","accordance"],["acccordances","accordances"],["acccorded","accorded"],["acccording","according"],["acccordingly","accordingly"],["acccords","accords"],["acccount","account"],["acccumulate","accumulate"],["acccuracy","accuracy"],["acccurate","accurate"],["acccurately","accurately"],["acccused","accused"],["accecpt","accept"],["accecpted","accepted"],["accees","access"],["acceess","access"],["accelarate","accelerate"],["accelaration","acceleration"],["accelarete","accelerate"],["accelearion","acceleration"],["accelearte","accelerate"],["accelearted","accelerated"],["acceleartes","accelerates"],["acceleartion","acceleration"],["acceleartor","accelerator"],["acceleated","accelerated"],["acceleratoin","acceleration"],["acceleraton","acceleration"],["acceleratrion","acceleration"],["accelerte","accelerate"],["accelertion","acceleration"],["accellerate","accelerate"],["accellerated","accelerated"],["accellerating","accelerating"],["accelleration","acceleration"],["accellerator","accelerator"],["accending","ascending"],["acceot","accept"],["accepatble","acceptable"],["accepect","accept"],["accepected","accepted"],["accepeted","accepted"],["acceppt","accept"],["acceptence","acceptance"],["acceptible","acceptable"],["acceptted","accepted"],["acces","access"],["accesed","accessed"],["acceses","accesses"],["accesibility","accessibility"],["accesible","accessible"],["accesiblity","accessibility"],["accesiibility","accessibility"],["accesiiblity","accessibility"],["accesing","accessing"],["accesnt","accent"],["accesor","accessor"],["accesories","accessories"],["accesors","accessors"],["accesory","accessory"],["accessability","accessibility"],["accessable","accessible"],["accessbile","accessible"],["accessiable","accessible"],["accessibile","accessible"],["accessibiliity","accessibility"],["accessibilitiy","accessibility"],["accessibiltiy","accessibility"],["accessibilty","accessibility"],["accessiblilty","accessibility"],["accessiblity","accessibility"],["accessiibility","accessibility"],["accessiiblity","accessibility"],["accessile","accessible"],["accessintg","accessing"],["accessisble","accessible"],["accessoire","accessory"],["accessort","accessor"],["accesss","access"],["accesssibility","accessibility"],["accesssible","accessible"],["accesssiblity","accessibility"],["accesssiiblity","accessibility"],["accesssing","accessing"],["accesssor","accessor"],["accesssors","accessors"],["accet","accept"],["accetable","acceptable"],["accets","accepts"],["acchiev","achieve"],["acchievable","achievable"],["acchieve","achieve"],["acchieveable","achievable"],["acchieved","achieved"],["acchievement","achievement"],["acchievements","achievements"],["acchiever","achiever"],["acchieves","achieves"],["accidant","accident"],["acciddently","accidentally"],["accidentaly","accidentally"],["accidential","accidental"],["accidentially","accidentally"],["accidentically","accidentally"],["accidentilly","accidentally"],["accidentily","accidentally"],["accidently","accidentally"],["accidentually","accidentally"],["accidetly","accidentally"],["acciedential","accidental"],["acciednetally","accidentally"],["accient","accident"],["acciental","accidental"],["acclerated","accelerated"],["acclerates","accelerates"],["accleration","acceleration"],["acclerometers","accelerometers"],["acclimitization","acclimatization"],["accociate","associate"],["accociated","associated"],["accociates","associates"],["accociating","associating"],["accociation","association"],["accociations","associations"],["accoding","according"],["accodingly","accordingly"],["accodr","accord"],["accodrance","accordance"],["accodred","accorded"],["accodring","according"],["accodringly","accordingly"],["accodrs","accords"],["accointing","accounting"],["accoird","accord"],["accoirding","according"],["accomadate","accommodate"],["accomadated","accommodated"],["accomadates","accommodates"],["accomadating","accommodating"],["accomadation","accommodation"],["accomadations","accommodations"],["accomdate","accommodate"],["accomidate","accommodate"],["accommadate","accommodate"],["accommadates","accommodates"],["accommadating","accommodating"],["accommdated","accommodated"],["accomodata","accommodate"],["accomodate","accommodate"],["accomodated","accommodated"],["accomodates","accommodates"],["accomodating","accommodating"],["accomodation","accommodation"],["accomodations","accommodations"],["accompagned","accompanied"],["accompagnied","accompanied"],["accompagnies","accompanies"],["accompagniment","accompaniment"],["accompagning","accompanying"],["accompagny","accompany"],["accompagnying","accompanying"],["accompained","accompanied"],["accompanyed","accompanied"],["accompt","account"],["acconding","according"],["accont","account"],["accontant","accountant"],["acconted","accounted"],["acconting","accounting"],["accoording","according"],["accoordingly","accordingly"],["accoount","account"],["accopunt","account"],["accordding","according"],["accordeon","accordion"],["accordian","accordion"],["accordign","according"],["accordiingly","accordingly"],["accordinag","according"],["accordind","according"],["accordinly","accordingly"],["accordint","according"],["accordintly","accordingly"],["accordling","according"],["accordlingly","accordingly"],["accordng","according"],["accordngly","accordingly"],["accoriding","according"],["accoridng","according"],["accoridngly","accordingly"],["accoringly","accordingly"],["accorndingly","accordingly"],["accort","accord"],["accortance","accordance"],["accorted","accorded"],["accortind","according"],["accorting","according"],["accound","account"],["accouned","accounted"],["accoustic","acoustic"],["accoustically","acoustically"],["accoustics","acoustics"],["accout","account"],["accouting","accounting"],["accoutn","account"],["accpet","accept"],["accpets","accepts"],["accquainted","acquainted"],["accquire","acquire"],["accquired","acquired"],["accquires","acquires"],["accquiring","acquiring"],["accracy","accuracy"],["accrate","accurate"],["accrding","according"],["accrdingly","accordingly"],["accrediation","accreditation"],["accredidation","accreditation"],["accress","access"],["accroding","according"],["accrodingly","accordingly"],["accronym","acronym"],["accronyms","acronyms"],["accrording","according"],["accros","across"],["accrose","across"],["accross","across"],["accsess","access"],["accss","access"],["accssible","accessible"],["accssor","accessor"],["acctual","actual"],["accuarcy","accuracy"],["accuarte","accurate"],["accuartely","accurately"],["accumalate","accumulate"],["accumalates","accumulates"],["accumalator","accumulator"],["accumalte","accumulate"],["accumalted","accumulated"],["accumilated","accumulated"],["accumlate","accumulate"],["accumlated","accumulated"],["accumlates","accumulates"],["accumlating","accumulating"],["accumlator","accumulator"],["accummulating","accumulating"],["accummulators","accumulators"],["accumualte","accumulate"],["accumualtion","accumulation"],["accupied","occupied"],["accupts","accepts"],["accurable","accurate"],["accuraccies","accuracies"],["accuraccy","accuracy"],["accurancy","accuracy"],["accurarcy","accuracy"],["accuratelly","accurately"],["accuratley","accurately"],["accuratly","accurately"],["accurences","occurrences"],["accurracy","accuracy"],["accurring","occurring"],["accussed","accused"],["acditionally","additionally"],["acecess","access"],["acedemic","academic"],["acelerated","accelerated"],["acend","ascend"],["acendance","ascendance"],["acendancey","ascendancy"],["acended","ascended"],["acendence","ascendance"],["acendencey","ascendancy"],["acendency","ascendancy"],["acender","ascender"],["acending","ascending"],["acent","ascent"],["aceptable","acceptable"],["acerage","acreage"],["acess","access"],["acessable","accessible"],["acessed","accessed"],["acesses","accesses"],["acessible","accessible"],["acessing","accessing"],["acessor","accessor"],["acheive","achieve"],["acheived","achieved"],["acheivement","achievement"],["acheivements","achievements"],["acheives","achieves"],["acheiving","achieving"],["acheivment","achievement"],["acheivments","achievements"],["achievment","achievement"],["achievments","achievements"],["achitecture","architecture"],["achitectures","architectures"],["achivable","achievable"],["achivement","achievement"],["achivements","achievements"],["achor","anchor"],["achored","anchored"],["achoring","anchoring"],["achors","anchors"],["ACI","ACPI"],["acident","accident"],["acidental","accidental"],["acidentally","accidentally"],["acidents","accidents"],["acient","ancient"],["acients","ancients"],["ACII","ASCII"],["acition","action"],["acitions","actions"],["acitivate","activate"],["acitivation","activation"],["acitivity","activity"],["acitvate","activate"],["acitve","active"],["acivate","activate"],["acive","active"],["acknodledgment","acknowledgment"],["acknodledgments","acknowledgments"],["acknoledge","acknowledge"],["acknoledged","acknowledged"],["acknoledges","acknowledges"],["acknoledging","acknowledging"],["acknoledgment","acknowledgment"],["acknoledgments","acknowledgments"],["acknowldeged","acknowledged"],["acknowldegement","acknowledgement"],["acknowldegements","acknowledgements"],["acknowledgeing","acknowledging"],["acknowleding","acknowledging"],["acknowlege","acknowledge"],["acknowleged","acknowledged"],["acknowlegement","acknowledgement"],["acknowlegements","acknowledgements"],["acknowleges","acknowledges"],["acknowleging","acknowledging"],["acknowlegment","acknowledgment"],["ackowledge","acknowledge"],["ackowledged","acknowledged"],["ackowledgement","acknowledgement"],["ackowledgements","acknowledgements"],["ackowledges","acknowledges"],["ackowledging","acknowledging"],["acnowledge","acknowledge"],["acocunt","account"],["acommodate","accommodate"],["acommodated","accommodated"],["acommodates","accommodates"],["acommodating","accommodating"],["acommodation","accommodation"],["acommpany","accompany"],["acommpanying","accompanying"],["acomodate","accommodate"],["acomodated","accommodated"],["acompanies","accompanies"],["acomplish","accomplish"],["acomplished","accomplished"],["acomplishment","accomplishment"],["acomplishments","accomplishments"],["acontiguous","a contiguous"],["acoording","according"],["acoordingly","accordingly"],["acording","according"],["acordingly","accordingly"],["acordinng","according"],["acorss","across"],["acorting","according"],["acount","account"],["acounts","accounts"],["acquaintence","acquaintance"],["acquaintences","acquaintances"],["acquiantence","acquaintance"],["acquiantences","acquaintances"],["acquiesence","acquiescence"],["acquisiton","acquisition"],["acquisitons","acquisitions"],["acquited","acquitted"],["acquition","acquisition"],["acqure","acquire"],["acqured","acquired"],["acqures","acquires"],["acquring","acquiring"],["acqusition","acquisition"],["acqusitions","acquisitions"],["acrage","acreage"],["acroos","across"],["acrosss","across"],["acrue","accrue"],["acrued","accrued"],["acssume","assume"],["acssumed","assumed"],["actal","actual"],["actally","actually"],["actaly","actually"],["actaul","actual"],["actaully","actually"],["actial","actual"],["actially","actually"],["actialy","actually"],["actiavte","activate"],["actiavted","activated"],["actiavtes","activates"],["actiavting","activating"],["actiavtion","activation"],["actiavtions","activations"],["actiavtor","activator"],["actibity","activity"],["acticate","activate"],["actice","active"],["actine","active"],["actiual","actual"],["activ","active"],["activaed","activated"],["activationg","activating"],["actived","activated"],["activeta","activate"],["activete","activate"],["activeted","activated"],["activetes","activates"],["activiate","activate"],["activies","activities"],["activites","activities"],["activitis","activities"],["activitites","activities"],["activitiy","activity"],["activley","actively"],["activly","actively"],["activste","activate"],["activsted","activated"],["activstes","activates"],["activtes","activates"],["activties","activities"],["activtion","activation"],["activty","activity"],["activw","active"],["activy","activity"],["actove","active"],["actuaal","actual"],["actuaally","actually"],["actuak","actual"],["actuakly","actually"],["actuallin","actually"],["actualy","actually"],["actualyl","actually"],["actuell","actual"],["actuion","action"],["actuionable","actionable"],["actul","actual"],["actullay","actually"],["actully","actually"],["actural","actual"],["acturally","actually"],["actusally","actually"],["actve","active"],["actzal","actual"],["acual","actual"],["acually","actually"],["acuired","acquired"],["acuires","acquires"],["acumulate","accumulate"],["acumulated","accumulated"],["acumulates","accumulates"],["acumulating","accumulating"],["acumulation","accumulation"],["acumulative","accumulative"],["acumulator","accumulator"],["acuqire","acquire"],["acuracy","accuracy"],["acurate","accurate"],["acused","accused"],["acustom","accustom"],["acustommed","accustomed"],["acutal","actual"],["acutally","actually"],["acutual","actual"],["adapated","adapted"],["adapater","adapter"],["adapaters","adapters"],["adapative","adaptive"],["adapdive","adaptive"],["adapive","adaptive"],["adaptaion","adaptation"],["adaptare","adapter"],["adapte","adapter"],["adaptee","adapted"],["adaptes","adapters"],["adaptibe","adaptive"],["adaquate","adequate"],["adaquately","adequately"],["adatper","adapter"],["adatpers","adapters"],["adavance","advance"],["adavanced","advanced"],["adbandon","abandon"],["addapt","adapt"],["addaptation","adaptation"],["addaptations","adaptations"],["addapted","adapted"],["addapting","adapting"],["addapts","adapts"],["addd","add"],["addded","added"],["addding","adding"],["adddress","address"],["adddresses","addresses"],["addds","adds"],["addedd","added"],["addeed","added"],["addersses","addresses"],["addert","assert"],["adderted","asserted"],["addess","address"],["addessed","addressed"],["addesses","addresses"],["addessing","addressing"],["addied","added"],["addig","adding"],["addiional","additional"],["addiiton","addition"],["addiitonall","additional"],["addional","additional"],["addionally","additionally"],["addiotion","addition"],["addiotional","additional"],["addiotionally","additionally"],["addiotions","additions"],["additianal","additional"],["additianally","additionally"],["additinal","additional"],["additinally","additionally"],["additioanal","additional"],["additioanally","additionally"],["additioanlly","additionally"],["additiona","additional"],["additionallly","additionally"],["additionals","additional"],["additionaly","additionally"],["additionalyy","additionally"],["additionnal","additional"],["additionnally","additionally"],["additionnaly","additionally"],["additoin","addition"],["additoinal","additional"],["additoinally","additionally"],["additoinaly","additionally"],["additon","addition"],["additonal","additional"],["additonally","additionally"],["additonaly","additionally"],["addjust","adjust"],["addjusted","adjusted"],["addjusting","adjusting"],["addjusts","adjusts"],["addmission","admission"],["addmit","admit"],["addopt","adopt"],["addopted","adopted"],["addpress","address"],["addrass","address"],["addrees","address"],["addreess","address"],["addrerss","address"],["addrerssed","addressed"],["addrersser","addresser"],["addrersses","addresses"],["addrerssing","addressing"],["addrersss","address"],["addrersssed","addressed"],["addrerssser","addresser"],["addrerssses","addresses"],["addrersssing","addressing"],["addres","address"],["addresable","addressable"],["addresed","addressed"],["addreses","addresses"],["addresess","addresses"],["addresing","addressing"],["addressess","addresses"],["addressings","addressing"],["addresss","address"],["addresssed","addressed"],["addressses","addresses"],["addresssing","addressing"],["addrress","address"],["addrss","address"],["addrssed","addressed"],["addrsses","addresses"],["addrssing","addressing"],["addted","added"],["addtion","addition"],["addtional","additional"],["addtionally","additionally"],["addtitional","additional"],["adecuate","adequate"],["aded","added"],["adequit","adequate"],["adevnture","adventure"],["adevntured","adventured"],["adevnturer","adventurer"],["adevnturers","adventurers"],["adevntures","adventures"],["adevnturing","adventuring"],["adhearing","adhering"],["adherance","adherence"],["adiacent","adjacent"],["adiditon","addition"],["adin","admin"],["ading","adding"],["adition","addition"],["aditional","additional"],["aditionally","additionally"],["aditionaly","additionally"],["aditionnal","additional"],["adivsories","advisories"],["adivsoriyes","advisories"],["adivsory","advisory"],["adjacentsy","adjacency"],["adjactend","adjacent"],["adjancent","adjacent"],["adjascent","adjacent"],["adjasence","adjacence"],["adjasencies","adjacencies"],["adjasensy","adjacency"],["adjasent","adjacent"],["adjast","adjust"],["adjcence","adjacence"],["adjcencies","adjacencies"],["adjcent","adjacent"],["adjcentcy","adjacency"],["adjsence","adjacence"],["adjsencies","adjacencies"],["adjsuted","adjusted"],["adjuscent","adjacent"],["adjusment","adjustment"],["adjustement","adjustment"],["adjustements","adjustments"],["adjustificat","justification"],["adjustification","justification"],["adjustmant","adjustment"],["adjustmants","adjustments"],["adjustmenet","adjustment"],["admendment","amendment"],["admi","admin"],["admininistrative","administrative"],["admininistrator","administrator"],["admininistrators","administrators"],["admininstrator","administrator"],["administation","administration"],["administator","administrator"],["administor","administrator"],["administraively","administratively"],["adminitrator","administrator"],["adminssion","admission"],["adminstered","administered"],["adminstrate","administrate"],["adminstration","administration"],["adminstrative","administrative"],["adminstrator","administrator"],["adminstrators","administrators"],["admisible","admissible"],["admissability","admissibility"],["admissable","admissible"],["admited","admitted"],["admitedly","admittedly"],["admn","admin"],["admnistrator","administrator"],["admnistrators","administrators"],["adn","and"],["adobted","adopted"],["adolecent","adolescent"],["adpapted","adapted"],["adpat","adapt"],["adpated","adapted"],["adpater","adapter"],["adpaters","adapters"],["adpats","adapts"],["adpter","adapter"],["adquire","acquire"],["adquired","acquired"],["adquires","acquires"],["adquiring","acquiring"],["adrea","area"],["adrerss","address"],["adrerssed","addressed"],["adrersser","addresser"],["adrersses","addresses"],["adrerssing","addressing"],["adres","address"],["adresable","addressable"],["adresing","addressing"],["adress","address"],["adressable","addressable"],["adresse","address"],["adressed","addressed"],["adresses","addresses"],["adressing","addressing"],["adresss","address"],["adressses","addresses"],["adrress","address"],["adrresses","addresses"],["adtodetect","autodetect"],["adusted","adjusted"],["adustment","adjustment"],["advanatage","advantage"],["advanatages","advantages"],["advanatge","advantage"],["advandced","advanced"],["advane","advance"],["advaned","advanced"],["advantagous","advantageous"],["advanved","advanced"],["adventages","advantages"],["adventrous","adventurous"],["adverised","advertised"],["advertice","advertise"],["adverticed","advertised"],["advertisment","advertisement"],["advertisments","advertisements"],["advertistment","advertisement"],["advertistments","advertisements"],["advertize","advertise"],["advertized","advertised"],["advertizes","advertises"],["advesary","adversary"],["advetise","advertise"],["adviced","advised"],["adviseable","advisable"],["advisoriyes","advisories"],["advizable","advisable"],["adwances","advances"],["aequidistant","equidistant"],["aequivalent","equivalent"],["aeriel","aerial"],["aeriels","aerials"],["aesily","easily"],["aesy","easy"],["aexs","axes"],["afair","affair"],["afaraid","afraid"],["afe","safe"],["afecting","affecting"],["afer","after"],["aferwards","afterwards"],["afetr","after"],["affecfted","affected"],["afficianados","aficionados"],["afficionado","aficionado"],["afficionados","aficionados"],["affilate","affiliate"],["affilates","affiliates"],["affilation","affiliation"],["affilations","affiliations"],["affilliate","affiliate"],["affinitied","affinities"],["affinitiy","affinity"],["affinitze","affinitize"],["affinties","affinities"],["affintiy","affinity"],["affintize","affinitize"],["affinty","affinity"],["affitnity","affinity"],["afforementioned","aforementioned"],["affortable","affordable"],["afforts","affords"],["affraid","afraid"],["afinity","affinity"],["afor","for"],["aforememtioned","aforementioned"],["aforementiond","aforementioned"],["aforementionned","aforementioned"],["aformentioned","aforementioned"],["afterall","after all"],["afterw","after"],["aftrer","after"],["aftzer","after"],["againnst","against"],["againsg","against"],["againt","against"],["againts","against"],["agaisnt","against"],["agaist","against"],["agancies","agencies"],["agancy","agency"],["aganist","against"],["agant","agent"],["aggaravates","aggravates"],["aggegate","aggregate"],["aggessive","aggressive"],["aggessively","aggressively"],["agggregate","aggregate"],["aggragate","aggregate"],["aggragator","aggregator"],["aggrated","aggregated"],["aggreagate","aggregate"],["aggreataon","aggregation"],["aggreate","aggregate"],["aggreated","aggregated"],["aggreation","aggregation"],["aggreations","aggregations"],["aggreed","agreed"],["aggreement","agreement"],["aggregatet","aggregated"],["aggregetor","aggregator"],["aggreggate","aggregate"],["aggregious","egregious"],["aggregrate","aggregate"],["aggregrated","aggregated"],["aggresive","aggressive"],["aggresively","aggressively"],["aggrevate","aggravate"],["aggrgate","aggregate"],["agian","again"],["agianst","against"],["agin","again"],["aginst","against"],["aglorithm","algorithm"],["aglorithms","algorithms"],["agorithm","algorithm"],["agrain","again"],["agravate","aggravate"],["agre","agree"],["agred","agreed"],["agreeement","agreement"],["agreemnet","agreement"],["agreemnets","agreements"],["agreemnt","agreement"],["agregate","aggregate"],["agregated","aggregated"],["agregates","aggregates"],["agregation","aggregation"],["agregator","aggregator"],["agreing","agreeing"],["agrement","agreement"],["agression","aggression"],["agressive","aggressive"],["agressively","aggressively"],["agressiveness","aggressiveness"],["agressivity","aggressivity"],["agressor","aggressor"],["agresssive","aggressive"],["agrgument","argument"],["agrguments","arguments"],["agricultue","agriculture"],["agriculure","agriculture"],["agricuture","agriculture"],["agrieved","aggrieved"],["agrresive","aggressive"],["agrument","argument"],["agruments","arguments"],["agsinst","against"],["agument","argument"],["agumented","augmented"],["aguments","arguments"],["aheared","adhered"],["ahev","have"],["ahlpa","alpha"],["ahlpas","alphas"],["ahppen","happen"],["ahve","have"],["aicraft","aircraft"],["aiffer","differ"],["ailgn","align"],["aiport","airport"],["airator","aerator"],["airbourne","airborne"],["aircaft","aircraft"],["aircrafts'","aircraft's"],["aircrafts","aircraft"],["airfow","airflow"],["airlfow","airflow"],["airloom","heirloom"],["airporta","airports"],["airrcraft","aircraft"],["aisian","Asian"],["aixs","axis"],["aizmuth","azimuth"],["ajacence","adjacence"],["ajacencies","adjacencies"],["ajacency","adjacency"],["ajacent","adjacent"],["ajacentcy","adjacency"],["ajasence","adjacence"],["ajasencies","adjacencies"],["ajative","adjective"],["ajcencies","adjacencies"],["ajsencies","adjacencies"],["ajurnment","adjournment"],["ajust","adjust"],["ajusted","adjusted"],["ajustement","adjustment"],["ajusting","adjusting"],["ajustment","adjustment"],["ajustments","adjustments"],["ake","ache"],["akkumulate","accumulate"],["akkumulated","accumulated"],["akkumulates","accumulates"],["akkumulating","accumulating"],["akkumulation","accumulation"],["akkumulative","accumulative"],["akkumulator","accumulator"],["aknowledge","acknowledge"],["aks","ask"],["aksed","asked"],["aktivate","activate"],["aktivated","activated"],["aktivates","activates"],["aktivating","activating"],["aktivation","activation"],["akumulate","accumulate"],["akumulated","accumulated"],["akumulates","accumulates"],["akumulating","accumulating"],["akumulation","accumulation"],["akumulative","accumulative"],["akumulator","accumulator"],["alaready","already"],["albiet","albeit"],["albumns","albums"],["alcemy","alchemy"],["alchohol","alcohol"],["alchoholic","alcoholic"],["alchol","alcohol"],["alcholic","alcoholic"],["alcohal","alcohol"],["alcoholical","alcoholic"],["aleady","already"],["aleays","always"],["aledge","allege"],["aledged","alleged"],["aledges","alleges"],["alegance","allegiance"],["alege","allege"],["aleged","alleged"],["alegience","allegiance"],["alegorical","allegorical"],["alernate","alternate"],["alernated","alternated"],["alernately","alternately"],["alernates","alternates"],["alers","alerts"],["aleviate","alleviate"],["aleviates","alleviates"],["aleviating","alleviating"],["alevt","alert"],["algebraical","algebraic"],["algebric","algebraic"],["algebrra","algebra"],["algee","algae"],["alghorithm","algorithm"],["alghoritm","algorithm"],["alghoritmic","algorithmic"],["alghoritmically","algorithmically"],["alghoritms","algorithms"],["algined","aligned"],["alginment","alignment"],["alginments","alignments"],["algohm","algorithm"],["algohmic","algorithmic"],["algohmically","algorithmically"],["algohms","algorithms"],["algoirthm","algorithm"],["algoirthmic","algorithmic"],["algoirthmically","algorithmically"],["algoirthms","algorithms"],["algoithm","algorithm"],["algoithmic","algorithmic"],["algoithmically","algorithmically"],["algoithms","algorithms"],["algolithm","algorithm"],["algolithmic","algorithmic"],["algolithmically","algorithmically"],["algolithms","algorithms"],["algoorithm","algorithm"],["algoorithmic","algorithmic"],["algoorithmically","algorithmically"],["algoorithms","algorithms"],["algoprithm","algorithm"],["algoprithmic","algorithmic"],["algoprithmically","algorithmically"],["algoprithms","algorithms"],["algorgithm","algorithm"],["algorgithmic","algorithmic"],["algorgithmically","algorithmically"],["algorgithms","algorithms"],["algorhithm","algorithm"],["algorhithmic","algorithmic"],["algorhithmically","algorithmically"],["algorhithms","algorithms"],["algorhitm","algorithm"],["algorhitmic","algorithmic"],["algorhitmically","algorithmically"],["algorhitms","algorithms"],["algorhtm","algorithm"],["algorhtmic","algorithmic"],["algorhtmically","algorithmically"],["algorhtms","algorithms"],["algorhythm","algorithm"],["algorhythmic","algorithmic"],["algorhythmically","algorithmically"],["algorhythms","algorithms"],["algorhytm","algorithm"],["algorhytmic","algorithmic"],["algorhytmically","algorithmically"],["algorhytms","algorithms"],["algorightm","algorithm"],["algorightmic","algorithmic"],["algorightmically","algorithmically"],["algorightms","algorithms"],["algorihm","algorithm"],["algorihmic","algorithmic"],["algorihmically","algorithmically"],["algorihms","algorithms"],["algorihtm","algorithm"],["algorihtmic","algorithmic"],["algorihtmically","algorithmically"],["algorihtms","algorithms"],["algoristhms","algorithms"],["algorith","algorithm"],["algorithem","algorithm"],["algorithemic","algorithmic"],["algorithemically","algorithmically"],["algorithems","algorithms"],["algorithic","algorithmic"],["algorithically","algorithmically"],["algorithim","algorithm"],["algorithimes","algorithms"],["algorithimic","algorithmic"],["algorithimically","algorithmically"],["algorithims","algorithms"],["algorithmes","algorithms"],["algorithmi","algorithm"],["algorithmical","algorithmically"],["algorithmm","algorithm"],["algorithmmic","algorithmic"],["algorithmmically","algorithmically"],["algorithmms","algorithms"],["algorithmn","algorithm"],["algorithmnic","algorithmic"],["algorithmnically","algorithmically"],["algorithmns","algorithms"],["algoriths","algorithms"],["algorithsmic","algorithmic"],["algorithsmically","algorithmically"],["algorithsms","algorithms"],["algoritm","algorithm"],["algoritmic","algorithmic"],["algoritmically","algorithmically"],["algoritms","algorithms"],["algoroithm","algorithm"],["algoroithmic","algorithmic"],["algoroithmically","algorithmically"],["algoroithms","algorithms"],["algororithm","algorithm"],["algororithmic","algorithmic"],["algororithmically","algorithmically"],["algororithms","algorithms"],["algorothm","algorithm"],["algorothmic","algorithmic"],["algorothmically","algorithmically"],["algorothms","algorithms"],["algorrithm","algorithm"],["algorrithmic","algorithmic"],["algorrithmically","algorithmically"],["algorrithms","algorithms"],["algorritm","algorithm"],["algorritmic","algorithmic"],["algorritmically","algorithmically"],["algorritms","algorithms"],["algorthim","algorithm"],["algorthimic","algorithmic"],["algorthimically","algorithmically"],["algorthims","algorithms"],["algorthin","algorithm"],["algorthinic","algorithmic"],["algorthinically","algorithmically"],["algorthins","algorithms"],["algorthm","algorithm"],["algorthmic","algorithmic"],["algorthmically","algorithmically"],["algorthms","algorithms"],["algorthn","algorithm"],["algorthnic","algorithmic"],["algorthnically","algorithmically"],["algorthns","algorithms"],["algorthym","algorithm"],["algorthymic","algorithmic"],["algorthymically","algorithmically"],["algorthyms","algorithms"],["algorthyn","algorithm"],["algorthynic","algorithmic"],["algorthynically","algorithmically"],["algorthyns","algorithms"],["algortihm","algorithm"],["algortihmic","algorithmic"],["algortihmically","algorithmically"],["algortihms","algorithms"],["algortim","algorithm"],["algortimic","algorithmic"],["algortimically","algorithmically"],["algortims","algorithms"],["algortism","algorithm"],["algortismic","algorithmic"],["algortismically","algorithmically"],["algortisms","algorithms"],["algortithm","algorithm"],["algortithmic","algorithmic"],["algortithmically","algorithmically"],["algortithms","algorithms"],["algoruthm","algorithm"],["algoruthmic","algorithmic"],["algoruthmically","algorithmically"],["algoruthms","algorithms"],["algorwwithm","algorithm"],["algorwwithmic","algorithmic"],["algorwwithmically","algorithmically"],["algorwwithms","algorithms"],["algorythem","algorithm"],["algorythemic","algorithmic"],["algorythemically","algorithmically"],["algorythems","algorithms"],["algorythm","algorithm"],["algorythmic","algorithmic"],["algorythmically","algorithmically"],["algorythms","algorithms"],["algothitm","algorithm"],["algothitmic","algorithmic"],["algothitmically","algorithmically"],["algothitms","algorithms"],["algotighm","algorithm"],["algotighmic","algorithmic"],["algotighmically","algorithmically"],["algotighms","algorithms"],["algotihm","algorithm"],["algotihmic","algorithmic"],["algotihmically","algorithmically"],["algotihms","algorithms"],["algotirhm","algorithm"],["algotirhmic","algorithmic"],["algotirhmically","algorithmically"],["algotirhms","algorithms"],["algotithm","algorithm"],["algotithmic","algorithmic"],["algotithmically","algorithmically"],["algotithms","algorithms"],["algotrithm","algorithm"],["algotrithmic","algorithmic"],["algotrithmically","algorithmically"],["algotrithms","algorithms"],["alha","alpha"],["alhabet","alphabet"],["alhabetical","alphabetical"],["alhabetically","alphabetically"],["alhabeticaly","alphabetically"],["alhabets","alphabets"],["alhapet","alphabet"],["alhapetical","alphabetical"],["alhapetically","alphabetically"],["alhapeticaly","alphabetically"],["alhapets","alphabets"],["alhough","although"],["alhpa","alpha"],["alhpabet","alphabet"],["alhpabetical","alphabetical"],["alhpabetically","alphabetically"],["alhpabeticaly","alphabetically"],["alhpabets","alphabets"],["aliagn","align"],["aliasas","aliases"],["aliasses","aliases"],["alientating","alienating"],["aliged","aligned"],["alighned","aligned"],["alighnment","alignment"],["aligin","align"],["aligined","aligned"],["aligining","aligning"],["aliginment","alignment"],["aligins","aligns"],["aligment","alignment"],["aligments","alignments"],["alignation","alignment"],["alignd","aligned"],["aligne","align"],["alignement","alignment"],["alignemnt","alignment"],["alignemnts","alignments"],["alignemt","alignment"],["alignes","aligns"],["alignmant","alignment"],["alignmen","alignment"],["alignmenet","alignment"],["alignmenets","alignments"],["alignmenton","alignment on"],["alignmet","alignment"],["alignmets","alignments"],["alignmment","alignment"],["alignmments","alignments"],["alignmnet","alignment"],["alignmnt","alignment"],["alignrigh","alignright"],["alined","aligned"],["alinged","aligned"],["alinging","aligning"],["alingment","alignment"],["alinment","alignment"],["alinments","alignments"],["alising","aliasing"],["allcate","allocate"],["allcateing","allocating"],["allcater","allocator"],["allcaters","allocators"],["allcating","allocating"],["allcation","allocation"],["allcator","allocator"],["allcoate","allocate"],["allcoated","allocated"],["allcoateing","allocating"],["allcoateng","allocating"],["allcoater","allocator"],["allcoaters","allocators"],["allcoating","allocating"],["allcoation","allocation"],["allcoator","allocator"],["allcoators","allocators"],["alledge","allege"],["alledged","alleged"],["alledgedly","allegedly"],["alledges","alleges"],["allegedely","allegedly"],["allegedy","allegedly"],["allegely","allegedly"],["allegence","allegiance"],["allegience","allegiance"],["allif","all if"],["allign","align"],["alligned","aligned"],["allignement","alignment"],["allignemnt","alignment"],["alligning","aligning"],["allignment","alignment"],["allignmenterror","alignmenterror"],["allignments","alignments"],["alligns","aligns"],["alliviate","alleviate"],["allk","all"],["alllocate","allocate"],["alllocation","allocation"],["alllow","allow"],["alllowed","allowed"],["alllows","allows"],["allmost","almost"],["alloacate","allocate"],["allocae","allocate"],["allocaed","allocated"],["allocaes","allocates"],["allocagtor","allocator"],["allocaiing","allocating"],["allocaing","allocating"],["allocaion","allocation"],["allocaions","allocations"],["allocaite","allocate"],["allocaites","allocates"],["allocaiting","allocating"],["allocaition","allocation"],["allocaitions","allocations"],["allocaiton","allocation"],["allocaitons","allocations"],["allocal","allocate"],["allocarion","allocation"],["allocat","allocate"],["allocatbale","allocatable"],["allocatedi","allocated"],["allocatedp","allocated"],["allocateing","allocating"],["allocateng","allocating"],["allocaton","allocation"],["allocatoor","allocator"],["allocatote","allocate"],["allocatrd","allocated"],["allocattion","allocation"],["alloco","alloc"],["allocos","allocs"],["allocte","allocate"],["allocted","allocated"],["allocting","allocating"],["alloction","allocation"],["alloctions","allocations"],["alloctor","allocator"],["alloews","allows"],["allong","along"],["alloocates","allocates"],["allopone","allophone"],["allopones","allophones"],["allos","allows"],["alloted","allotted"],["allowence","allowance"],["allowences","allowances"],["allpication","application"],["allpications","applications"],["allso","also"],["allthough","although"],["alltough","although"],["allways","always"],["allwo","allow"],["allwos","allows"],["allws","allows"],["allwys","always"],["almoast","almost"],["almostly","almost"],["almsot","almost"],["alo","also"],["alocatable","allocatable"],["alocate","allocate"],["alocated","allocated"],["alocates","allocates"],["alocating","allocating"],["alocations","allocations"],["alochol","alcohol"],["alog","along"],["alogirhtm","algorithm"],["alogirhtmic","algorithmic"],["alogirhtmically","algorithmically"],["alogirhtms","algorithms"],["alogirthm","algorithm"],["alogirthmic","algorithmic"],["alogirthmically","algorithmically"],["alogirthms","algorithms"],["alogned","aligned"],["alogorithms","algorithms"],["alogrithm","algorithm"],["alogrithmic","algorithmic"],["alogrithmically","algorithmically"],["alogrithms","algorithms"],["alomst","almost"],["aloows","allows"],["alorithm","algorithm"],["alos","also"],["alotted","allotted"],["alow","allow"],["alowed","allowed"],["alowing","allowing"],["alows","allows"],["alpabet","alphabet"],["alpabetic","alphabetic"],["alpabetical","alphabetical"],["alpabets","alphabets"],["alpah","alpha"],["alpahabetical","alphabetical"],["alpahbetically","alphabetically"],["alph","alpha"],["alpha-numeric","alphanumeric"],["alphabeticaly","alphabetically"],["alphabeticly","alphabetical"],["alphapeicall","alphabetical"],["alphapeticaly","alphabetically"],["alrady","already"],["alraedy","already"],["alread","already"],["alreadly","already"],["alreadt","already"],["alreasy","already"],["alreay","already"],["alreayd","already"],["alreday","already"],["alredy","already"],["alrelady","already"],["alrms","alarms"],["alrogithm","algorithm"],["alrteady","already"],["als","also"],["alsmost","almost"],["alsot","also"],["alsready","already"],["altenative","alternative"],["alterated","altered"],["alterately","alternately"],["alterative","alternative"],["alteratives","alternatives"],["alterior","ulterior"],["alternaive","alternative"],["alternaives","alternatives"],["alternarive","alternative"],["alternarives","alternatives"],["alternatievly","alternatively"],["alternativey","alternatively"],["alternativley","alternatively"],["alternativly","alternatively"],["alternatve","alternative"],["alternavtely","alternatively"],["alternavtive","alternative"],["alternavtives","alternatives"],["alternetive","alternative"],["alternetives","alternatives"],["alternitive","alternative"],["alternitively","alternatively"],["alternitiveness","alternativeness"],["alternitives","alternatives"],["alternitivly","alternatively"],["altetnative","alternative"],["altho","although"],["althogh","although"],["althorithm","algorithm"],["althorithmic","algorithmic"],["althorithmically","algorithmically"],["althorithms","algorithms"],["althoug","although"],["althought","although"],["althougth","although"],["althouth","although"],["altitide","altitude"],["altitute","altitude"],["altogehter","altogether"],["altough","although"],["altought","although"],["altready","already"],["alue","value"],["alvorithm","algorithm"],["alvorithmic","algorithmic"],["alvorithmically","algorithmically"],["alvorithms","algorithms"],["alwais","always"],["alwas","always"],["alwast","always"],["alwasy","always"],["alwasys","always"],["alwauys","always"],["alway","always"],["alwyas","always"],["alwys","always"],["alyways","always"],["amacing","amazing"],["amacingly","amazingly"],["amalgomated","amalgamated"],["amatuer","amateur"],["amazaing","amazing"],["ambedded","embedded"],["ambibuity","ambiguity"],["ambien","ambient"],["ambigious","ambiguous"],["ambigous","ambiguous"],["ambiguious","ambiguous"],["ambiguitiy","ambiguity"],["ambiguos","ambiguous"],["ambitous","ambitious"],["ambuguity","ambiguity"],["ambulence","ambulance"],["ambulences","ambulances"],["amdgput","amdgpu"],["amendement","amendment"],["amendmant","amendment"],["Amercia","America"],["amerliorate","ameliorate"],["amgle","angle"],["amgles","angles"],["amiguous","ambiguous"],["amke","make"],["amking","making"],["ammend","amend"],["ammended","amended"],["ammending","amending"],["ammendment","amendment"],["ammendments","amendments"],["ammends","amends"],["ammong","among"],["ammongst","amongst"],["ammortizes","amortizes"],["ammoung","among"],["ammoungst","amongst"],["ammount","amount"],["ammused","amused"],["amny","many"],["amongs","among"],["amonst","amongst"],["amonut","amount"],["amound","amount"],["amounds","amounts"],["amoung","among"],["amoungst","amongst"],["amout","amount"],["amoutn","amount"],["amoutns","amounts"],["amouts","amounts"],["amperstands","ampersands"],["amphasis","emphasis"],["amplifer","amplifier"],["amplifyer","amplifier"],["amplitud","amplitude"],["ampty","empty"],["amuch","much"],["amung","among"],["amunition","ammunition"],["amunt","amount"],["analagous","analogous"],["analagus","analogous"],["analaog","analog"],["analgous","analogous"],["analig","analog"],["analise","analyse"],["analised","analysed"],["analiser","analyser"],["analising","analysing"],["analisis","analysis"],["analitic","analytic"],["analitical","analytical"],["analitically","analytically"],["analiticaly","analytically"],["analize","analyze"],["analized","analyzed"],["analizer","analyzer"],["analizes","analyzes"],["analizing","analyzing"],["analogeous","analogous"],["analogicaly","analogically"],["analoguous","analogous"],["analoguously","analogously"],["analogus","analogous"],["analouge","analogue"],["analouges","analogues"],["analsye","analyse"],["analsyed","analysed"],["analsyer","analyser"],["analsyers","analysers"],["analsyes","analyses"],["analsying","analysing"],["analsyis","analysis"],["analsyt","analyst"],["analsyts","analysts"],["analyis","analysis"],["analysator","analyser"],["analysus","analysis"],["analysy","analysis"],["analyticaly","analytically"],["analyticly","analytically"],["analyzator","analyzer"],["analzye","analyze"],["analzyed","analyzed"],["analzyer","analyzer"],["analzyers","analyzers"],["analzyes","analyzes"],["analzying","analyzing"],["ananlog","analog"],["anarchim","anarchism"],["anarchistm","anarchism"],["anarquism","anarchism"],["anarquist","anarchist"],["anaylse","analyse"],["anaylsed","analysed"],["anaylser","analyser"],["anaylses","analyses"],["anaylsis","analysis"],["anaylsises","analysises"],["anayltic","analytic"],["anayltical","analytical"],["anayltically","analytically"],["anayltics","analytics"],["anaylze","analyze"],["anaylzed","analyzed"],["anaylzer","analyzer"],["anaylzes","analyzes"],["anbd","and"],["ancapsulate","encapsulate"],["ancapsulated","encapsulated"],["ancapsulates","encapsulates"],["ancapsulating","encapsulating"],["ancapsulation","encapsulation"],["ancesetor","ancestor"],["ancesetors","ancestors"],["ancester","ancestor"],["ancesteres","ancestors"],["ancesters","ancestors"],["ancestore","ancestor"],["ancestores","ancestors"],["ancestory","ancestry"],["anchestor","ancestor"],["anchestors","ancestors"],["anchord","anchored"],["ancilliary","ancillary"],["andd","and"],["andoid","android"],["andoids","androids"],["andorid","android"],["andorids","androids"],["andriod","android"],["andriods","androids"],["androgenous","androgynous"],["androgeny","androgyny"],["androidextra","androidextras"],["androind","android"],["androinds","androids"],["andthe","and the"],["ane","and"],["anevironment","environment"],["anevironments","environments"],["angluar","angular"],["anhoter","another"],["anid","and"],["anihilation","annihilation"],["animaing","animating"],["animaite","animate"],["animaiter","animator"],["animaiters","animators"],["animaiton","animation"],["animaitons","animations"],["animaitor","animator"],["animaitors","animators"],["animaton","animation"],["animatonic","animatronic"],["animete","animate"],["animeted","animated"],["animetion","animation"],["animetions","animations"],["animets","animates"],["animore","anymore"],["aninate","animate"],["anination","animation"],["aniother","any other"],["anisotrophically","anisotropically"],["anitaliasing","antialiasing"],["anithing","anything"],["anitialising","antialiasing"],["anitime","anytime"],["anitrez","antirez"],["aniversary","anniversary"],["aniway","anyway"],["aniwhere","anywhere"],["anlge","angle"],["anlysis","analysis"],["anlyzing","analyzing"],["annayed","annoyed"],["annaying","annoying"],["annd","and"],["anniversery","anniversary"],["annnounce","announce"],["annoation","annotation"],["annoint","anoint"],["annointed","anointed"],["annointing","anointing"],["annoints","anoints"],["annonate","annotate"],["annonated","annotated"],["annonates","annotates"],["annonce","announce"],["annonced","announced"],["annoncement","announcement"],["annoncements","announcements"],["annonces","announces"],["annoncing","announcing"],["annonymous","anonymous"],["annotaion","annotation"],["annotaions","annotations"],["annoted","annotated"],["annother","another"],["annouce","announce"],["annouced","announced"],["annoucement","announcement"],["annoucements","announcements"],["annouces","announces"],["annoucing","announcing"],["annouing","annoying"],["announcment","announcement"],["announcments","announcements"],["announed","announced"],["announement","announcement"],["announements","announcements"],["annoymous","anonymous"],["annoyying","annoying"],["annualy","annually"],["annuled","annulled"],["annyoingly","annoyingly"],["anoher","another"],["anohter","another"],["anologon","analogon"],["anomally","anomaly"],["anomolies","anomalies"],["anomolous","anomalous"],["anomoly","anomaly"],["anonimity","anonymity"],["anononymous","anonymous"],["anonther","another"],["anonymouse","anonymous"],["anonyms","anonymous"],["anonymus","anonymous"],["anormalies","anomalies"],["anormaly","abnormally"],["anotate","annotate"],["anotated","annotated"],["anotates","annotates"],["anotating","annotating"],["anotation","annotation"],["anotations","annotations"],["anoter","another"],["anothe","another"],["anothers","another"],["anothr","another"],["anounce","announce"],["anounced","announced"],["anouncement","announcement"],["anount","amount"],["anoying","annoying"],["anoymous","anonymous"],["anroid","android"],["ansalisation","nasalisation"],["ansalization","nasalization"],["anser","answer"],["ansester","ancestor"],["ansesters","ancestors"],["ansestor","ancestor"],["ansestors","ancestors"],["answhare","answer"],["answhared","answered"],["answhareing","answering"],["answhares","answers"],["answharing","answering"],["answhars","answers"],["ansynchronous","asynchronous"],["antaliasing","antialiasing"],["antartic","antarctic"],["antecedant","antecedent"],["anteena","antenna"],["anteenas","antennas"],["anthing","anything"],["anthings","anythings"],["anthor","another"],["anthromorphization","anthropomorphization"],["anthropolgist","anthropologist"],["anthropolgy","anthropology"],["antialialised","antialiased"],["antialising","antialiasing"],["antiapartheid","anti-apartheid"],["anticpate","anticipate"],["antry","entry"],["antyhing","anything"],["anual","annual"],["anually","annually"],["anulled","annulled"],["anumber","a number"],["anuwhere","anywhere"],["anway","anyway"],["anways","anyway"],["anwhere","anywhere"],["anwser","answer"],["anwsered","answered"],["anwsering","answering"],["anwsers","answers"],["anyawy","anyway"],["anyhing","anything"],["anyhting","anything"],["anyhwere","anywhere"],["anylsing","analysing"],["anylzing","analyzing"],["anynmore","anymore"],["anyother","any other"],["anytghing","anything"],["anythig","anything"],["anythign","anything"],["anythimng","anything"],["anytiem","anytime"],["anytihng","anything"],["anyting","anything"],["anytning","anything"],["anytrhing","anything"],["anytthing","anything"],["anytying","anything"],["anywere","anywhere"],["anyy","any"],["aoache","apache"],["aond","and"],["aoto","auto"],["aotomate","automate"],["aotomated","automated"],["aotomatic","automatic"],["aotomatical","automatic"],["aotomaticall","automatically"],["aotomatically","automatically"],["aotomation","automation"],["aovid","avoid"],["apach","apache"],["apapted","adapted"],["aparant","apparent"],["aparantly","apparently"],["aparent","apparent"],["aparently","apparently"],["aparment","apartment"],["apdated","updated"],["apeal","appeal"],["apealed","appealed"],["apealing","appealing"],["apeals","appeals"],["apear","appear"],["apeared","appeared"],["apears","appears"],["apect","aspect"],["apects","aspects"],["apeends","appends"],["apend","append"],["apendage","appendage"],["apended","appended"],["apender","appender"],["apendices","appendices"],["apending","appending"],["apendix","appendix"],["apenines","Apennines"],["aperatures","apertures"],["aperure","aperture"],["aperures","apertures"],["apeture","aperture"],["apetures","apertures"],["apilogue","epilogue"],["aplha","alpha"],["aplication","application"],["aplications","applications"],["aplied","applied"],["aplies","applies"],["apllicatin","application"],["apllicatins","applications"],["apllication","application"],["apllications","applications"],["apllied","applied"],["apllies","applies"],["aplly","apply"],["apllying","applying"],["aply","apply"],["aplyed","applied"],["aplying","applying"],["apointed","appointed"],["apointing","appointing"],["apointment","appointment"],["apoints","appoints"],["apolegetic","apologetic"],["apolegetics","apologetics"],["aportionable","apportionable"],["apostrophie","apostrophe"],["apostrophies","apostrophes"],["appar","appear"],["apparant","apparent"],["apparantly","apparently"],["appared","appeared"],["apparence","appearance"],["apparenlty","apparently"],["apparenly","apparently"],["appares","appears"],["apparoches","approaches"],["appars","appears"],["appart","apart"],["appartment","apartment"],["appartments","apartments"],["appearaing","appearing"],["appearantly","apparently"],["appeareance","appearance"],["appearence","appearance"],["appearences","appearances"],["appearently","apparently"],["appeares","appears"],["appearning","appearing"],["appearrs","appears"],["appeciate","appreciate"],["appeded","appended"],["appeding","appending"],["appedn","append"],["appen","append"],["appendend","appended"],["appendent","appended"],["appendex","appendix"],["appendig","appending"],["appendign","appending"],["appendt","append"],["appeneded","appended"],["appenines","Apennines"],["appens","appends"],["appent","append"],["apperance","appearance"],["apperances","appearances"],["apperar","appear"],["apperarance","appearance"],["apperarances","appearances"],["apperared","appeared"],["apperaring","appearing"],["apperars","appears"],["appereance","appearance"],["appereances","appearances"],["appered","appeared"],["apperent","apparent"],["apperently","apparently"],["appers","appears"],["apperture","aperture"],["appicability","applicability"],["appicable","applicable"],["appicaliton","application"],["appicalitons","applications"],["appicant","applicant"],["appication","application"],["appication-specific","application-specific"],["appications","applications"],["appicative","applicative"],["appied","applied"],["appies","applies"],["applay","apply"],["applcation","application"],["applcations","applications"],["appliable","applicable"],["appliacable","applicable"],["appliaction","application"],["appliactions","applications"],["appliation","application"],["appliations","applications"],["applicabel","applicable"],["applicaion","application"],["applicaions","applications"],["applicaiton","application"],["applicaitons","applications"],["applicance","appliance"],["applicapility","applicability"],["applicaple","applicable"],["applicatable","applicable"],["applicaten","application"],["applicatin","application"],["applicatins","applications"],["applicatio","application"],["applicationb","application"],["applicatios","applications"],["applicatiosn","applications"],["applicaton","application"],["applicatons","applications"],["appliction","application"],["applictions","applications"],["applide","applied"],["applikation","application"],["applikations","applications"],["appllied","applied"],["applly","apply"],["applyable","applicable"],["applycable","applicable"],["applyed","applied"],["applyes","applies"],["applyied","applied"],["applyig","applying"],["applys","applies"],["applyting","applying"],["appned","append"],["appologies","apologies"],["appology","apology"],["appon","upon"],["appopriate","appropriate"],["apporach","approach"],["apporached","approached"],["apporaches","approaches"],["apporaching","approaching"],["apporiate","appropriate"],["apporoximate","approximate"],["apporoximated","approximated"],["apporpiate","appropriate"],["apporpriate","appropriate"],["apporpriated","appropriated"],["apporpriately","appropriately"],["apporpriates","appropriates"],["apporpriating","appropriating"],["apporpriation","appropriation"],["apporpriations","appropriations"],["apporval","approval"],["apporve","approve"],["apporved","approved"],["apporves","approves"],["apporving","approving"],["appoval","approval"],["appove","approve"],["appoved","approved"],["appoves","approves"],["appoving","approving"],["appoximate","approximate"],["appoximately","approximately"],["appoximates","approximates"],["appoximation","approximation"],["appoximations","approximations"],["apppear","appear"],["apppears","appears"],["apppend","append"],["apppends","appends"],["appplet","applet"],["appplication","application"],["appplications","applications"],["appplying","applying"],["apppriate","appropriate"],["appproach","approach"],["apppropriate","appropriate"],["appraoch","approach"],["appraochable","approachable"],["appraoched","approached"],["appraoches","approaches"],["appraoching","approaching"],["apprearance","appearance"],["apprently","apparently"],["appreteate","appreciate"],["appreteated","appreciated"],["appretiate","appreciate"],["appretiated","appreciated"],["appretiates","appreciates"],["appretiating","appreciating"],["appretiation","appreciation"],["appretiative","appreciative"],["apprieciate","appreciate"],["apprieciated","appreciated"],["apprieciates","appreciates"],["apprieciating","appreciating"],["apprieciation","appreciation"],["apprieciative","appreciative"],["appriopriate","appropriate"],["appripriate","appropriate"],["appriproate","appropriate"],["apprixamate","approximate"],["apprixamated","approximated"],["apprixamately","approximately"],["apprixamates","approximates"],["apprixamating","approximating"],["apprixamation","approximation"],["apprixamations","approximations"],["appriximate","approximate"],["appriximated","approximated"],["appriximately","approximately"],["appriximates","approximates"],["appriximating","approximating"],["appriximation","approximation"],["appriximations","approximations"],["approachs","approaches"],["approbiate","appropriate"],["approch","approach"],["approche","approach"],["approched","approached"],["approches","approaches"],["approching","approaching"],["approiate","appropriate"],["approopriate","appropriate"],["approoximate","approximate"],["approoximately","approximately"],["approoximates","approximates"],["approoximation","approximation"],["approoximations","approximations"],["approperiate","appropriate"],["appropiate","appropriate"],["appropiately","appropriately"],["approppriately","appropriately"],["appropraite","appropriate"],["appropraitely","appropriately"],["approprate","appropriate"],["approprated","appropriated"],["approprately","appropriately"],["appropration","appropriation"],["approprations","appropriations"],["appropriage","appropriate"],["appropriatedly","appropriately"],["appropriatee","appropriate"],["appropriatly","appropriately"],["appropriatness","appropriateness"],["appropriete","appropriate"],["appropritae","appropriate"],["appropritate","appropriate"],["appropritately","appropriately"],["approprite","appropriate"],["approproate","appropriate"],["appropropiate","appropriate"],["appropropiately","appropriately"],["appropropreate","appropriate"],["appropropriate","appropriate"],["approproximate","approximate"],["approproximately","approximately"],["approproximates","approximates"],["approproximation","approximation"],["approproximations","approximations"],["approprpiate","appropriate"],["approriate","appropriate"],["approriately","appropriately"],["approrpriate","appropriate"],["approrpriately","appropriately"],["approuval","approval"],["approuve","approve"],["approuved","approved"],["approuves","approves"],["approuving","approving"],["approvement","approval"],["approxamate","approximate"],["approxamately","approximately"],["approxamates","approximates"],["approxamation","approximation"],["approxamations","approximations"],["approxamatly","approximately"],["approxametely","approximately"],["approxiamte","approximate"],["approxiamtely","approximately"],["approxiamtes","approximates"],["approxiamtion","approximation"],["approxiamtions","approximations"],["approxiate","approximate"],["approxiately","approximately"],["approxiates","approximates"],["approxiation","approximation"],["approxiations","approximations"],["approximatively","approximately"],["approximatly","approximately"],["approximed","approximated"],["approximetely","approximately"],["approximitely","approximately"],["approxmate","approximate"],["approxmately","approximately"],["approxmates","approximates"],["approxmation","approximation"],["approxmations","approximations"],["approxmimation","approximation"],["apprpriate","appropriate"],["apprpriately","appropriately"],["appy","apply"],["appying","applying"],["apreciate","appreciate"],["apreciated","appreciated"],["apreciates","appreciates"],["apreciating","appreciating"],["apreciation","appreciation"],["apreciative","appreciative"],["aprehensive","apprehensive"],["apreteate","appreciate"],["apreteated","appreciated"],["apreteating","appreciating"],["apretiate","appreciate"],["apretiated","appreciated"],["apretiates","appreciates"],["apretiating","appreciating"],["apretiation","appreciation"],["apretiative","appreciative"],["aproach","approach"],["aproached","approached"],["aproaches","approaches"],["aproaching","approaching"],["aproch","approach"],["aproched","approached"],["aproches","approaches"],["aproching","approaching"],["aproove","approve"],["aprooved","approved"],["apropiate","appropriate"],["apropiately","appropriately"],["apropriate","appropriate"],["apropriately","appropriately"],["aproval","approval"],["aproximate","approximate"],["aproximately","approximately"],["aproximates","approximates"],["aproximation","approximation"],["aproximations","approximations"],["aprrovement","approval"],["aprroximate","approximate"],["aprroximately","approximately"],["aprroximates","approximates"],["aprroximation","approximation"],["aprroximations","approximations"],["aprtment","apartment"],["aqain","again"],["aqcuire","acquire"],["aqcuired","acquired"],["aqcuires","acquires"],["aqcuiring","acquiring"],["aquaduct","aqueduct"],["aquaint","acquaint"],["aquaintance","acquaintance"],["aquainted","acquainted"],["aquainting","acquainting"],["aquaints","acquaints"],["aquiantance","acquaintance"],["aquire","acquire"],["aquired","acquired"],["aquires","acquires"],["aquiring","acquiring"],["aquisition","acquisition"],["aquisitions","acquisitions"],["aquit","acquit"],["aquitted","acquitted"],["arameters","parameters"],["aranged","arranged"],["arangement","arrangement"],["araound","around"],["ararbic","arabic"],["aray","array"],["arays","arrays"],["arbiatraily","arbitrarily"],["arbiatray","arbitrary"],["arbibtarily","arbitrarily"],["arbibtary","arbitrary"],["arbibtrarily","arbitrarily"],["arbibtrary","arbitrary"],["arbiitrarily","arbitrarily"],["arbiitrary","arbitrary"],["arbirarily","arbitrarily"],["arbirary","arbitrary"],["arbiratily","arbitrarily"],["arbiraty","arbitrary"],["arbirtarily","arbitrarily"],["arbirtary","arbitrary"],["arbirtrarily","arbitrarily"],["arbirtrary","arbitrary"],["arbitarary","arbitrary"],["arbitarily","arbitrarily"],["arbitary","arbitrary"],["arbitiarily","arbitrarily"],["arbitiary","arbitrary"],["arbitiraly","arbitrarily"],["arbitiray","arbitrary"],["arbitrailly","arbitrarily"],["arbitraily","arbitrarily"],["arbitraion","arbitration"],["arbitrairly","arbitrarily"],["arbitrairy","arbitrary"],["arbitral","arbitrary"],["arbitralily","arbitrarily"],["arbitrally","arbitrarily"],["arbitralrily","arbitrarily"],["arbitralry","arbitrary"],["arbitraly","arbitrary"],["arbitrarion","arbitration"],["arbitraryily","arbitrarily"],["arbitraryly","arbitrary"],["arbitratily","arbitrarily"],["arbitratiojn","arbitration"],["arbitraton","arbitration"],["arbitratrily","arbitrarily"],["arbitratrion","arbitration"],["arbitratry","arbitrary"],["arbitraty","arbitrary"],["arbitray","arbitrary"],["arbitriarily","arbitrarily"],["arbitriary","arbitrary"],["arbitrily","arbitrarily"],["arbitrion","arbitration"],["arbitriraly","arbitrarily"],["arbitriray","arbitrary"],["arbitrition","arbitration"],["arbitrtily","arbitrarily"],["arbitrty","arbitrary"],["arbitry","arbitrary"],["arbitryarily","arbitrarily"],["arbitryary","arbitrary"],["arbitual","arbitrary"],["arbitually","arbitrarily"],["arbitualy","arbitrary"],["arbituarily","arbitrarily"],["arbituary","arbitrary"],["arbiturarily","arbitrarily"],["arbiturary","arbitrary"],["arbort","abort"],["arborted","aborted"],["arborting","aborting"],["arborts","aborts"],["arbritary","arbitrary"],["arbritrarily","arbitrarily"],["arbritrary","arbitrary"],["arbtirarily","arbitrarily"],["arbtirary","arbitrary"],["arbtrarily","arbitrarily"],["arbtrary","arbitrary"],["arbutrarily","arbitrarily"],["arbutrary","arbitrary"],["arch-dependet","arch-dependent"],["arch-independet","arch-independent"],["archaelogical","archaeological"],["archaelogists","archaeologists"],["archaelogy","archaeology"],["archetect","architect"],["archetects","architects"],["archetectural","architectural"],["archetecturally","architecturally"],["archetecture","architecture"],["archiac","archaic"],["archictect","architect"],["archictecture","architecture"],["archictectures","architectures"],["archicture","architecture"],["archiecture","architecture"],["archiectures","architectures"],["archimedian","archimedean"],["architct","architect"],["architcts","architects"],["architcture","architecture"],["architctures","architectures"],["architecht","architect"],["architechts","architects"],["architechturally","architecturally"],["architechture","architecture"],["architechtures","architectures"],["architectual","architectural"],["architectur","architecture"],["architecturs","architectures"],["architecturse","architectures"],["architecure","architecture"],["architecures","architectures"],["architecutre","architecture"],["architecutres","architectures"],["architecuture","architecture"],["architecutures","architectures"],["architetcure","architecture"],["architetcures","architectures"],["architeture","architecture"],["architetures","architectures"],["architure","architecture"],["architures","architectures"],["archiv","archive"],["archivel","archival"],["archor","anchor"],["archtecture","architecture"],["archtectures","architectures"],["archtiecture","architecture"],["archtiectures","architectures"],["archtitecture","architecture"],["archtitectures","architectures"],["archtype","archetype"],["archtypes","archetypes"],["archvie","archive"],["archvies","archives"],["archving","archiving"],["arcitecture","architecture"],["arcitectures","architectures"],["arcive","archive"],["arcived","archived"],["arciver","archiver"],["arcives","archives"],["arciving","archiving"],["arcticle","article"],["Ardiuno","Arduino"],["are'nt","aren't"],["aready","already"],["areea","area"],["aren's","aren't"],["aren;t","aren't"],["arent'","aren't"],["arent","aren't"],["arent;","aren't"],["areodynamics","aerodynamics"],["argement","argument"],["argements","arguments"],["argemnt","argument"],["argemnts","arguments"],["argment","argument"],["argments","arguments"],["argmument","argument"],["argmuments","arguments"],["argreement","agreement"],["argreements","agreements"],["argubly","arguably"],["arguement","argument"],["arguements","arguments"],["arguemnt","argument"],["arguemnts","arguments"],["arguemtn","argument"],["arguemtns","arguments"],["arguents","arguments"],["argumant","argument"],["argumants","arguments"],["argumeent","argument"],["argumeents","arguments"],["argumement","argument"],["argumements","arguments"],["argumemnt","argument"],["argumemnts","arguments"],["argumeng","argument"],["argumengs","arguments"],["argumens","arguments"],["argumenst","arguments"],["argumentents","arguments"],["argumeny","argument"],["argumet","argument"],["argumetn","argument"],["argumetns","arguments"],["argumets","arguments"],["argumnet","argument"],["argumnets","arguments"],["argumnt","argument"],["argumnts","arguments"],["arhive","archive"],["arhives","archives"],["aribitary","arbitrary"],["aribiter","arbiter"],["aribrary","arbitrary"],["aribtrarily","arbitrarily"],["aribtrary","arbitrary"],["ariflow","airflow"],["arised","arose"],["arithemetic","arithmetic"],["arithemtic","arithmetic"],["arithmatic","arithmetic"],["arithmentic","arithmetic"],["arithmetc","arithmetic"],["arithmethic","arithmetic"],["arithmitic","arithmetic"],["aritmetic","arithmetic"],["aritrary","arbitrary"],["aritst","artist"],["arival","arrival"],["arive","arrive"],["arlready","already"],["armamant","armament"],["armistace","armistice"],["armonic","harmonic"],["arn't","aren't"],["arne't","aren't"],["arogant","arrogant"],["arogent","arrogant"],["aronud","around"],["aroud","around"],["aroudn","around"],["arouind","around"],["arounf","around"],["aroung","around"],["arount","around"],["arquitecture","architecture"],["arquitectures","architectures"],["arraay","array"],["arragement","arrangement"],["arraival","arrival"],["arral","array"],["arranable","arrangeable"],["arrance","arrange"],["arrane","arrange"],["arraned","arranged"],["arranement","arrangement"],["arranements","arrangements"],["arranent","arrangement"],["arranents","arrangements"],["arranes","arranges"],["arrang","arrange"],["arrangable","arrangeable"],["arrangaeble","arrangeable"],["arrangaelbe","arrangeable"],["arrangd","arranged"],["arrangde","arranged"],["arrangemenet","arrangement"],["arrangemenets","arrangements"],["arrangent","arrangement"],["arrangents","arrangements"],["arrangmeent","arrangement"],["arrangmeents","arrangements"],["arrangmenet","arrangement"],["arrangmenets","arrangements"],["arrangment","arrangement"],["arrangments","arrangements"],["arrangnig","arranging"],["arrangs","arranges"],["arrangse","arranges"],["arrangt","arrangement"],["arrangte","arrange"],["arrangteable","arrangeable"],["arrangted","arranged"],["arrangtement","arrangement"],["arrangtements","arrangements"],["arrangtes","arranges"],["arrangting","arranging"],["arrangts","arrangements"],["arraning","arranging"],["arranment","arrangement"],["arranments","arrangements"],["arrants","arrangements"],["arraows","arrows"],["arrary","array"],["arrayes","arrays"],["arre","are"],["arreay","array"],["arrengement","arrangement"],["arrengements","arrangements"],["arriveis","arrives"],["arrivial","arrival"],["arround","around"],["arrray","array"],["arrrays","arrays"],["arrrive","arrive"],["arrrived","arrived"],["arrrives","arrives"],["arrtibute","attribute"],["arrya","array"],["arryas","arrays"],["arrys","arrays"],["artcile","article"],["articaft","artifact"],["articafts","artifacts"],["artical","article"],["articals","articles"],["articat","artifact"],["articats","artifacts"],["artice","article"],["articel","article"],["articels","articles"],["artifac","artifact"],["artifacs","artifacts"],["artifcat","artifact"],["artifcats","artifacts"],["artifical","artificial"],["artifically","artificially"],["artihmetic","arithmetic"],["artilce","article"],["artillary","artillery"],["artuments","arguments"],["arugment","argument"],["arugments","arguments"],["arument","argument"],["aruments","arguments"],["arund","around"],["arvg","argv"],["asai","Asia"],["asain","Asian"],["asbolute","absolute"],["asbolutelly","absolutely"],["asbolutely","absolutely"],["asbtract","abstract"],["asbtracted","abstracted"],["asbtracter","abstracter"],["asbtracting","abstracting"],["asbtraction","abstraction"],["asbtractions","abstractions"],["asbtractly","abstractly"],["asbtractness","abstractness"],["asbtractor","abstractor"],["asbtracts","abstracts"],["ascconciated","associated"],["asceding","ascending"],["ascpect","aspect"],["ascpects","aspects"],["asdignment","assignment"],["asdignments","assignments"],["asemble","assemble"],["asembled","assembled"],["asembler","assembler"],["asemblers","assemblers"],["asembles","assembles"],["asemblies","assemblies"],["asembling","assembling"],["asembly","assembly"],["asendance","ascendance"],["asendancey","ascendancy"],["asendancy","ascendancy"],["asendence","ascendance"],["asendencey","ascendancy"],["asendency","ascendancy"],["asending","ascending"],["asent","ascent"],["aserted","asserted"],["asertion","assertion"],["asess","assess"],["asessment","assessment"],["asessments","assessments"],["asetic","ascetic"],["asfar","as far"],["asign","assign"],["asigned","assigned"],["asignee","assignee"],["asignees","assignees"],["asigning","assigning"],["asignmend","assignment"],["asignmends","assignments"],["asignment","assignment"],["asignor","assignor"],["asigns","assigns"],["asii","ascii"],["asisstant","assistant"],["asisstants","assistants"],["asistance","assistance"],["aske","ask"],["askes","asks"],["aslo","also"],["asnwer","answer"],["asnwered","answered"],["asnwerer","answerer"],["asnwerers","answerers"],["asnwering","answering"],["asnwers","answers"],["asny","any"],["asnychronoue","asynchronous"],["asociated","associated"],["asolute","absolute"],["asorbed","absorbed"],["aspected","expected"],["asphyxation","asphyxiation"],["assasin","assassin"],["assasinate","assassinate"],["assasinated","assassinated"],["assasinates","assassinates"],["assasination","assassination"],["assasinations","assassinations"],["assasined","assassinated"],["assasins","assassins"],["assassintation","assassination"],["asscciated","associated"],["assciated","associated"],["asscii","ASCII"],["asscociated","associated"],["asscoitaed","associated"],["assebly","assembly"],["assebmly","assembly"],["assembe","assemble"],["assembed","assembled"],["assembeld","assembled"],["assember","assembler"],["assemblys","assemblies"],["assemby","assembly"],["assemly","assembly"],["assemnly","assembly"],["assemple","assemble"],["assending","ascending"],["asser","assert"],["assersion","assertion"],["assertation","assertion"],["assertio","assertion"],["assertting","asserting"],["assesmenet","assessment"],["assesment","assessment"],["assesments","assessments"],["assessmant","assessment"],["assessmants","assessments"],["assgin","assign"],["assgined","assigned"],["assgining","assigning"],["assginment","assignment"],["assginments","assignments"],["assgins","assigns"],["assicate","associate"],["assicated","associated"],["assicates","associates"],["assicating","associating"],["assication","association"],["assications","associations"],["assiciate","associate"],["assiciated","associated"],["assiciates","associates"],["assiciation","association"],["assiciations","associations"],["asside","aside"],["assiged","assigned"],["assigend","assigned"],["assigh","assign"],["assighed","assigned"],["assighee","assignee"],["assighees","assignees"],["assigher","assigner"],["assighers","assigners"],["assighing","assigning"],["assighor","assignor"],["assighors","assignors"],["assighs","assigns"],["assiging","assigning"],["assigment","assignment"],["assigments","assignments"],["assigmnent","assignment"],["assignalble","assignable"],["assignement","assignment"],["assignements","assignments"],["assignemnt","assignment"],["assignemnts","assignments"],["assignemtn","assignment"],["assignend","assigned"],["assignenment","assignment"],["assignenmentes","assignments"],["assignenments","assignments"],["assignenmet","assignment"],["assignes","assigns"],["assignmenet","assignment"],["assignmens","assignments"],["assignmet","assignment"],["assignmetns","assignments"],["assignmnet","assignment"],["assignt","assign"],["assigntment","assignment"],["assihnment","assignment"],["assihnments","assignments"],["assime","assume"],["assined","assigned"],["assing","assign"],["assinged","assigned"],["assinging","assigning"],["assingled","assigned"],["assingment","assignment"],["assingned","assigned"],["assingnment","assignment"],["assings","assigns"],["assinment","assignment"],["assiocate","associate"],["assiocated","associated"],["assiocates","associates"],["assiocating","associating"],["assiocation","association"],["assiociate","associate"],["assiociated","associated"],["assiociates","associates"],["assiociating","associating"],["assiociation","association"],["assisance","assistance"],["assisant","assistant"],["assisants","assistants"],["assising","assisting"],["assisnate","assassinate"],["assistence","assistance"],["assistent","assistant"],["assit","assist"],["assitant","assistant"],["assition","assertion"],["assmbler","assembler"],["assmeble","assemble"],["assmebler","assembler"],["assmebles","assembles"],["assmebling","assembling"],["assmebly","assembly"],["assmelber","assembler"],["assmption","assumption"],["assmptions","assumptions"],["assmume","assume"],["assmumed","assumed"],["assmumes","assumes"],["assmuming","assuming"],["assmumption","assumption"],["assmumptions","assumptions"],["assoaiate","associate"],["assoaiated","associated"],["assoaiates","associates"],["assoaiating","associating"],["assoaiation","association"],["assoaiations","associations"],["assoaiative","associative"],["assocaited","associated"],["assocate","associate"],["assocated","associated"],["assocates","associates"],["assocating","associating"],["assocation","association"],["assocations","associations"],["assocciated","associated"],["assocciation","association"],["assocciations","associations"],["assocciative","associative"],["associatated","associated"],["associatd","associated"],["associatied","associated"],["associcate","associate"],["associcated","associated"],["associcates","associates"],["associcating","associating"],["associdated","associated"],["associeate","associate"],["associeated","associated"],["associeates","associates"],["associeating","associating"],["associeation","association"],["associeations","associations"],["associeted","associated"],["associte","associate"],["associted","associated"],["assocites","associates"],["associting","associating"],["assocition","association"],["associtions","associations"],["associtive","associative"],["associuated","associated"],["assoction","association"],["assoiated","associated"],["assoicate","associate"],["assoicated","associated"],["assoicates","associates"],["assoication","association"],["assoiciative","associative"],["assomption","assumption"],["assosciate","associate"],["assosciated","associated"],["assosciates","associates"],["assosciating","associating"],["assosiacition","association"],["assosiacitions","associations"],["assosiacted","associated"],["assosiate","associate"],["assosiated","associated"],["assosiates","associates"],["assosiating","associating"],["assosiation","association"],["assosiations","associations"],["assosiative","associative"],["assosication","assassination"],["assotiated","associated"],["assoziated","associated"],["asssassans","assassins"],["asssembler","assembler"],["asssembly","assembly"],["asssert","assert"],["asssertion","assertion"],["asssociate","associated"],["asssociated","associated"],["asssociation","association"],["asssume","assume"],["asssumes","assumes"],["asssuming","assuming"],["assualt","assault"],["assualted","assaulted"],["assuembly","assembly"],["assum","assume"],["assuma","assume"],["assumad","assumed"],["assumang","assuming"],["assumas","assumes"],["assumbe","assume"],["assumbed","assumed"],["assumbes","assumes"],["assumbing","assuming"],["assumend","assumed"],["assumking","assuming"],["assumme","assume"],["assummed","assumed"],["assummes","assumes"],["assumming","assuming"],["assumne","assume"],["assumned","assumed"],["assumnes","assumes"],["assumning","assuming"],["assumong","assuming"],["assumotion","assumption"],["assumotions","assumptions"],["assumpation","assumption"],["assumpted","assumed"],["assums","assumes"],["assumse","assumes"],["assumtion","assumption"],["assumtions","assumptions"],["assumtpion","assumption"],["assumtpions","assumptions"],["assumu","assume"],["assumud","assumed"],["assumue","assume"],["assumued","assumed"],["assumues","assumes"],["assumuing","assuming"],["assumung","assuming"],["assumuption","assumption"],["assumuptions","assumptions"],["assumus","assumes"],["assupmption","assumption"],["assuption","assumption"],["assuptions","assumptions"],["assurred","assured"],["assymetric","asymmetric"],["assymetrical","asymmetrical"],["assymetries","asymmetries"],["assymetry","asymmetry"],["assymmetric","asymmetric"],["assymmetrical","asymmetrical"],["assymmetries","asymmetries"],["assymmetry","asymmetry"],["assymptote","asymptote"],["assymptotes","asymptotes"],["assymptotic","asymptotic"],["assymptotically","asymptotically"],["assymthotic","asymptotic"],["assymtote","asymptote"],["assymtotes","asymptotes"],["assymtotic","asymptotic"],["assymtotically","asymptotically"],["asterices","asterisks"],["asteriod","asteroid"],["astethic","aesthetic"],["astethically","aesthetically"],["astethicism","aestheticism"],["astethics","aesthetics"],["asthetic","aesthetic"],["asthetical","aesthetical"],["asthetically","aesthetically"],["asthetics","aesthetics"],["astiimate","estimate"],["astiimation","estimation"],["asume","assume"],["asumed","assumed"],["asumes","assumes"],["asuming","assuming"],["asumption","assumption"],["asure","assure"],["aswell","as well"],["asychronize","asynchronize"],["asychronized","asynchronized"],["asychronous","asynchronous"],["asychronously","asynchronously"],["asycn","async"],["asycnhronous","asynchronous"],["asycnhronously","asynchronously"],["asycronous","asynchronous"],["asymetic","asymmetric"],["asymetric","asymmetric"],["asymetrical","asymmetrical"],["asymetricaly","asymmetrically"],["asymmeric","asymmetric"],["asynchnous","asynchronous"],["asynchonous","asynchronous"],["asynchonously","asynchronously"],["asynchornous","asynchronous"],["asynchoronous","asynchronous"],["asynchrnous","asynchronous"],["asynchrnously","asynchronously"],["asynchromous","asynchronous"],["asynchron","asynchronous"],["asynchroneously","asynchronously"],["asynchronious","asynchronous"],["asynchronlous","asynchronous"],["asynchrons","asynchronous"],["asynchroous","asynchronous"],["asynchrounous","asynchronous"],["asynchrounsly","asynchronously"],["asyncronous","asynchronous"],["asyncronously","asynchronously"],["asynnc","async"],["asynschron","asynchronous"],["atach","attach"],["atached","attached"],["ataching","attaching"],["atachment","attachment"],["atachments","attachments"],["atack","attack"],["atain","attain"],["atatch","attach"],["atatchable","attachable"],["atatched","attached"],["atatches","attaches"],["atatching","attaching"],["atatchment","attachment"],["atatchments","attachments"],["atempt","attempt"],["atempting","attempting"],["atempts","attempts"],["atendance","attendance"],["atended","attended"],["atendee","attendee"],["atends","attends"],["atention","attention"],["atheistical","atheistic"],["athenean","Athenian"],["atheneans","Athenians"],["ather","other"],["athiesm","atheism"],["athiest","atheist"],["athough","although"],["athron","athlon"],["athros","atheros"],["atleast","at least"],["atll","all"],["atmoic","atomic"],["atmoically","atomically"],["atomatically","automatically"],["atomical","atomic"],["atomicly","atomically"],["atomiticity","atomicity"],["atomtical","automatic"],["atomtically","automatically"],["atomticaly","automatically"],["atomticlly","automatically"],["atomticly","automatically"],["atorecovery","autorecovery"],["atorney","attorney"],["atquired","acquired"],["atribs","attribs"],["atribut","attribute"],["atribute","attribute"],["atributed","attributed"],["atributes","attributes"],["atrribute","attribute"],["atrributes","attributes"],["atrtribute","attribute"],["atrtributes","attributes"],["attaced","attached"],["attachd","attached"],["attachement","attachment"],["attachements","attachments"],["attachemnt","attachment"],["attachemnts","attachments"],["attachen","attach"],["attachged","attached"],["attachmant","attachment"],["attachmants","attachments"],["attachs","attaches"],["attachted","attached"],["attacs","attacks"],["attacthed","attached"],["attampt","attempt"],["attatch","attach"],["attatched","attached"],["attatches","attaches"],["attatching","attaching"],["attatchment","attachment"],["attatchments","attachments"],["attch","attach"],["attched","attached"],["attches","attaches"],["attching","attaching"],["attchment","attachment"],["attement","attempt"],["attemented","attempted"],["attementing","attempting"],["attements","attempts"],["attemp","attempt"],["attemped","attempted"],["attemping","attempting"],["attemppt","attempt"],["attemps","attempts"],["attemptes","attempts"],["attemptting","attempting"],["attemt","attempt"],["attemted","attempted"],["attemting","attempting"],["attemtp","attempt"],["attemtped","attempted"],["attemtping","attempting"],["attemtps","attempts"],["attemtpted","attempted"],["attemtpts","attempts"],["attemts","attempts"],["attendence","attendance"],["attendent","attendant"],["attendents","attendants"],["attened","attended"],["attennuation","attenuation"],["attension","attention"],["attented","attended"],["attentuation","attenuation"],["attentuations","attenuations"],["attepmpt","attempt"],["attept","attempt"],["attetntion","attention"],["attibute","attribute"],["attibuted","attributed"],["attibutes","attributes"],["attirbute","attribute"],["attirbutes","attributes"],["attiribute","attribute"],["attitide","attitude"],["attmept","attempt"],["attmpt","attempt"],["attnetion","attention"],["attosencond","attosecond"],["attosenconds","attoseconds"],["attrbiute","attribute"],["attrbute","attribute"],["attrbuted","attributed"],["attrbutes","attributes"],["attrbution","attribution"],["attrbutions","attributions"],["attribbute","attribute"],["attribiute","attribute"],["attribiutes","attributes"],["attribte","attribute"],["attribted","attributed"],["attribting","attributing"],["attribtue","attribute"],["attribtutes","attributes"],["attribude","attribute"],["attribue","attribute"],["attribues","attributes"],["attribuets","attributes"],["attribuite","attribute"],["attribuites","attributes"],["attribuition","attribution"],["attribure","attribute"],["attribured","attributed"],["attribures","attributes"],["attriburte","attribute"],["attriburted","attributed"],["attriburtes","attributes"],["attriburtion","attribution"],["attribut","attribute"],["attributei","attribute"],["attributen","attribute"],["attributess","attributes"],["attributred","attributed"],["attributs","attributes"],["attribye","attribute"],["attribyes","attributes"],["attribyte","attribute"],["attribytes","attributes"],["attriebute","attribute"],["attriebuted","attributed"],["attriebutes","attributes"],["attriebuting","attributing"],["attrirbute","attribute"],["attrirbuted","attributed"],["attrirbutes","attributes"],["attrirbution","attribution"],["attritube","attribute"],["attritubed","attributed"],["attritubes","attributes"],["attriubtes","attributes"],["attriubute","attribute"],["attrocities","atrocities"],["attrribute","attribute"],["attrributed","attributed"],["attrributes","attributes"],["attrribution","attribution"],["attrubite","attribute"],["attrubites","attributes"],["attrubte","attribute"],["attrubtes","attributes"],["attrubure","attribute"],["attrubures","attributes"],["attrubute","attribute"],["attrubutes","attributes"],["attrubyte","attribute"],["attrubytes","attributes"],["attruibute","attribute"],["attruibutes","attributes"],["atttached","attached"],["atttribute","attribute"],["atttributes","attributes"],["atuhenticate","authenticate"],["atuhenticated","authenticated"],["atuhenticates","authenticates"],["atuhenticating","authenticating"],["atuhentication","authentication"],["atuhenticator","authenticator"],["atuhenticators","authenticators"],["auccess","success"],["auccessive","successive"],["audeince","audience"],["audiance","audience"],["augest","August"],["augmnet","augment"],["augmnetation","augmentation"],["augmneted","augmented"],["augmneter","augmenter"],["augmneters","augmenters"],["augmnetes","augments"],["augmneting","augmenting"],["augmnets","augments"],["auguest","august"],["auhtor","author"],["auhtors","authors"],["aunthenticate","authenticate"],["aunthenticated","authenticated"],["aunthenticates","authenticates"],["aunthenticating","authenticating"],["aunthentication","authentication"],["aunthenticator","authenticator"],["aunthenticators","authenticators"],["auospacing","autospacing"],["auot","auto"],["auotmatic","automatic"],["auromated","automated"],["austrailia","Australia"],["austrailian","Australian"],["Australien","Australian"],["Austrlaian","Australian"],["autasave","autosave"],["autasaves","autosaves"],["autenticate","authenticate"],["autenticated","authenticated"],["autenticates","authenticates"],["autenticating","authenticating"],["autentication","authentication"],["autenticator","authenticator"],["autenticators","authenticators"],["authecate","authenticate"],["authecated","authenticated"],["authecates","authenticates"],["authecating","authenticating"],["authecation","authentication"],["authecator","authenticator"],["authecators","authenticators"],["authenaticate","authenticate"],["authenaticated","authenticated"],["authenaticates","authenticates"],["authenaticating","authenticating"],["authenatication","authentication"],["authenaticator","authenticator"],["authenaticators","authenticators"],["authencate","authenticate"],["authencated","authenticated"],["authencates","authenticates"],["authencating","authenticating"],["authencation","authentication"],["authencator","authenticator"],["authencators","authenticators"],["authenciate","authenticate"],["authenciated","authenticated"],["authenciates","authenticates"],["authenciating","authenticating"],["authenciation","authentication"],["authenciator","authenticator"],["authenciators","authenticators"],["authencicate","authenticate"],["authencicated","authenticated"],["authencicates","authenticates"],["authencicating","authenticating"],["authencication","authentication"],["authencicator","authenticator"],["authencicators","authenticators"],["authencity","authenticity"],["authencticate","authenticate"],["authencticated","authenticated"],["authencticates","authenticates"],["authencticating","authenticating"],["authenctication","authentication"],["authencticator","authenticator"],["authencticators","authenticators"],["authendicate","authenticate"],["authendicated","authenticated"],["authendicates","authenticates"],["authendicating","authenticating"],["authendication","authentication"],["authendicator","authenticator"],["authendicators","authenticators"],["authenenticate","authenticate"],["authenenticated","authenticated"],["authenenticates","authenticates"],["authenenticating","authenticating"],["authenentication","authentication"],["authenenticator","authenticator"],["authenenticators","authenticators"],["authenfie","authenticate"],["authenfied","authenticated"],["authenfies","authenticates"],["authenfiing","authenticating"],["authenfiion","authentication"],["authenfior","authenticator"],["authenfiors","authenticators"],["authenicae","authenticate"],["authenicaed","authenticated"],["authenicaes","authenticates"],["authenicaing","authenticating"],["authenicaion","authentication"],["authenicaor","authenticator"],["authenicaors","authenticators"],["authenicate","authenticate"],["authenicated","authenticated"],["authenicates","authenticates"],["authenicating","authenticating"],["authenication","authentication"],["authenicator","authenticator"],["authenicators","authenticators"],["authenificate","authenticate"],["authenificated","authenticated"],["authenificates","authenticates"],["authenificating","authenticating"],["authenification","authentication"],["authenificator","authenticator"],["authenificators","authenticators"],["authenitcate","authenticate"],["authenitcated","authenticated"],["authenitcates","authenticates"],["authenitcating","authenticating"],["authenitcation","authentication"],["authenitcator","authenticator"],["authenitcators","authenticators"],["autheniticate","authenticate"],["autheniticated","authenticated"],["autheniticates","authenticates"],["autheniticating","authenticating"],["authenitication","authentication"],["autheniticator","authenticator"],["autheniticators","authenticators"],["authenricate","authenticate"],["authenricated","authenticated"],["authenricates","authenticates"],["authenricating","authenticating"],["authenrication","authentication"],["authenricator","authenticator"],["authenricators","authenticators"],["authentation","authentication"],["authentcated","authenticated"],["authentciate","authenticate"],["authentciated","authenticated"],["authentciates","authenticates"],["authentciating","authenticating"],["authentciation","authentication"],["authentciator","authenticator"],["authentciators","authenticators"],["authenticaiton","authentication"],["authenticateion","authentication"],["authentiction","authentication"],["authentification","authentication"],["auther","author"],["autherisation","authorisation"],["autherise","authorise"],["autherization","authorization"],["autherize","authorize"],["authers","authors"],["authethenticate","authenticate"],["authethenticated","authenticated"],["authethenticates","authenticates"],["authethenticating","authenticating"],["authethentication","authentication"],["authethenticator","authenticator"],["authethenticators","authenticators"],["authethicate","authenticate"],["authethicated","authenticated"],["authethicates","authenticates"],["authethicating","authenticating"],["authethication","authentication"],["authethicator","authenticator"],["authethicators","authenticators"],["autheticate","authenticate"],["autheticated","authenticated"],["autheticates","authenticates"],["autheticating","authenticating"],["authetication","authentication"],["autheticator","authenticator"],["autheticators","authenticators"],["authetnicate","authenticate"],["authetnicated","authenticated"],["authetnicates","authenticates"],["authetnicating","authenticating"],["authetnication","authentication"],["authetnicator","authenticator"],["authetnicators","authenticators"],["authetnticate","authenticate"],["authetnticated","authenticated"],["authetnticates","authenticates"],["authetnticating","authenticating"],["authetntication","authentication"],["authetnticator","authenticator"],["authetnticators","authenticators"],["authobiographic","autobiographic"],["authobiography","autobiography"],["authoer","author"],["authoratative","authoritative"],["authorative","authoritative"],["authorded","authored"],["authorites","authorities"],["authorithy","authority"],["authoritiers","authorities"],["authorititive","authoritative"],["authoritive","authoritative"],["authorizeed","authorized"],["authror","author"],["authrored","authored"],["authrorisation","authorisation"],["authrorities","authorities"],["authrorization","authorization"],["authrors","authors"],["autimatic","automatic"],["autimatically","automatically"],["autmatically","automatically"],["auto-dependancies","auto-dependencies"],["auto-destrcut","auto-destruct"],["auto-genrated","auto-generated"],["auto-genratet","auto-generated"],["auto-genration","auto-generation"],["auto-negatiotiation","auto-negotiation"],["auto-negatiotiations","auto-negotiations"],["auto-negoatiation","auto-negotiation"],["auto-negoatiations","auto-negotiations"],["auto-negoation","auto-negotiation"],["auto-negoations","auto-negotiations"],["auto-negociation","auto-negotiation"],["auto-negociations","auto-negotiations"],["auto-negogtiation","auto-negotiation"],["auto-negogtiations","auto-negotiations"],["auto-negoitation","auto-negotiation"],["auto-negoitations","auto-negotiations"],["auto-negoptionsotiation","auto-negotiation"],["auto-negoptionsotiations","auto-negotiations"],["auto-negosiation","auto-negotiation"],["auto-negosiations","auto-negotiations"],["auto-negotaiation","auto-negotiation"],["auto-negotaiations","auto-negotiations"],["auto-negotaition","auto-negotiation"],["auto-negotaitions","auto-negotiations"],["auto-negotatiation","auto-negotiation"],["auto-negotatiations","auto-negotiations"],["auto-negotation","auto-negotiation"],["auto-negotations","auto-negotiations"],["auto-negothiation","auto-negotiation"],["auto-negothiations","auto-negotiations"],["auto-negotication","auto-negotiation"],["auto-negotications","auto-negotiations"],["auto-negotioation","auto-negotiation"],["auto-negotioations","auto-negotiations"],["auto-negotion","auto-negotiation"],["auto-negotionation","auto-negotiation"],["auto-negotionations","auto-negotiations"],["auto-negotions","auto-negotiations"],["auto-negotiotation","auto-negotiation"],["auto-negotiotations","auto-negotiations"],["auto-negotitaion","auto-negotiation"],["auto-negotitaions","auto-negotiations"],["auto-negotitation","auto-negotiation"],["auto-negotitations","auto-negotiations"],["auto-negotition","auto-negotiation"],["auto-negotitions","auto-negotiations"],["auto-negoziation","auto-negotiation"],["auto-negoziations","auto-negotiations"],["auto-realease","auto-release"],["auto-realeased","auto-released"],["autochtonous","autochthonous"],["autocmplete","autocomplete"],["autocmpleted","autocompleted"],["autocmpletes","autocompletes"],["autocmpleting","autocompleting"],["autocommiting","autocommitting"],["autoconplete","autocomplete"],["autoconpleted","autocompleted"],["autoconpletes","autocompletes"],["autoconpleting","autocompleting"],["autoconpletion","autocompletion"],["autocoomit","autocommit"],["autoctonous","autochthonous"],["autoeselect","autoselect"],["autofilt","autofilter"],["autofomat","autoformat"],["autoformating","autoformatting"],["autogenrated","autogenerated"],["autogenratet","autogenerated"],["autogenration","autogeneration"],["autogroping","autogrouping"],["autohorized","authorized"],["autoincrememnt","autoincrement"],["autoincrementive","autoincrement"],["automaatically","automatically"],["automagicaly","automagically"],["automaitc","automatic"],["automaitcally","automatically"],["automanifactured","automanufactured"],["automatcally","automatically"],["automatially","automatically"],["automaticallly","automatically"],["automaticaly","automatically"],["automaticalyl","automatically"],["automaticalyy","automatically"],["automaticlly","automatically"],["automaticly","automatically"],["autometic","automatic"],["autometically","automatically"],["automibile","automobile"],["automical","automatic"],["automically","automatically"],["automicaly","automatically"],["automicatilly","automatically"],["automiclly","automatically"],["automicly","automatically"],["automonomous","autonomous"],["automtic","automatic"],["automtically","automatically"],["autonagotiation","autonegotiation"],["autonegatiotiation","autonegotiation"],["autonegatiotiations","autonegotiations"],["autonegoatiation","autonegotiation"],["autonegoatiations","autonegotiations"],["autonegoation","autonegotiation"],["autonegoations","autonegotiations"],["autonegociated","autonegotiated"],["autonegociation","autonegotiation"],["autonegociations","autonegotiations"],["autonegogtiation","autonegotiation"],["autonegogtiations","autonegotiations"],["autonegoitation","autonegotiation"],["autonegoitations","autonegotiations"],["autonegoptionsotiation","autonegotiation"],["autonegoptionsotiations","autonegotiations"],["autonegosiation","autonegotiation"],["autonegosiations","autonegotiations"],["autonegotaiation","autonegotiation"],["autonegotaiations","autonegotiations"],["autonegotaition","autonegotiation"],["autonegotaitions","autonegotiations"],["autonegotatiation","autonegotiation"],["autonegotatiations","autonegotiations"],["autonegotation","autonegotiation"],["autonegotations","autonegotiations"],["autonegothiation","autonegotiation"],["autonegothiations","autonegotiations"],["autonegotication","autonegotiation"],["autonegotications","autonegotiations"],["autonegotioation","autonegotiation"],["autonegotioations","autonegotiations"],["autonegotion","autonegotiation"],["autonegotionation","autonegotiation"],["autonegotionations","autonegotiations"],["autonegotions","autonegotiations"],["autonegotiotation","autonegotiation"],["autonegotiotations","autonegotiations"],["autonegotitaion","autonegotiation"],["autonegotitaions","autonegotiations"],["autonegotitation","autonegotiation"],["autonegotitations","autonegotiations"],["autonegotition","autonegotiation"],["autonegotitions","autonegotiations"],["autonegoziation","autonegotiation"],["autonegoziations","autonegotiations"],["autoneogotiation","autonegotiation"],["autoneotiation","autonegotiation"],["autonogotiation","autonegotiation"],["autonymous","autonomous"],["autoonf","autoconf"],["autopsec","autospec"],["autor","author"],["autorealease","autorelease"],["autorisation","authorisation"],["autoritative","authoritative"],["autority","authority"],["autorization","authorization"],["autoropeat","autorepeat"],["autors","authors"],["autosae","autosave"],["autosavegs","autosaves"],["autosaveperodical","autosaveperiodical"],["autosence","autosense"],["autum","autumn"],["auxialiary","auxiliary"],["auxilaries","auxiliaries"],["auxilary","auxiliary"],["auxileries","auxiliaries"],["auxilery","auxiliary"],["auxiliar","auxiliary"],["auxillaries","auxiliaries"],["auxillary","auxiliary"],["auxilleries","auxiliaries"],["auxillery","auxiliary"],["auxilliaries","auxiliaries"],["auxilliary","auxiliary"],["auxiluary","auxiliary"],["auxliliary","auxiliary"],["avaiable","available"],["avaialable","available"],["avaialbale","available"],["avaialbe","available"],["avaialbel","available"],["avaialbility","availability"],["avaialble","available"],["avaiblable","available"],["avaible","available"],["avaiiability","availability"],["avaiiable","available"],["avaiibility","availability"],["avaiible","available"],["avaiilable","available"],["availaable","available"],["availabable","available"],["availabal","available"],["availabale","available"],["availabality","availability"],["availabble","available"],["availabe","available"],["availabed","available"],["availabel","available"],["availabele","available"],["availabelity","availability"],["availabillity","availability"],["availabilty","availability"],["availabke","available"],["availabl","available"],["availabled","available"],["availablen","available"],["availablity","availability"],["availabyl","available"],["availaiable","available"],["availaibility","availability"],["availaible","available"],["availailability","availability"],["availaility","availability"],["availalable","available"],["availalbe","available"],["availalble","available"],["availale","available"],["availaliable","available"],["availality","availability"],["availanle","available"],["availavble","available"],["availavility","availability"],["availavle","available"],["availbable","available"],["availbale","available"],["availbe","available"],["availble","available"],["availeable","available"],["availebilities","availabilities"],["availebility","availability"],["availeble","available"],["availiable","available"],["availibility","availability"],["availibilty","availability"],["availible","available"],["availlable","available"],["avalable","available"],["avalaible","available"],["avalance","avalanche"],["avaliable","available"],["avalibale","available"],["avalible","available"],["avaloable","available"],["avaluate","evaluate"],["avaluated","evaluated"],["avaluates","evaluates"],["avaluating","evaluating"],["avance","advance"],["avanced","advanced"],["avances","advances"],["avancing","advancing"],["avaoid","avoid"],["avaoidable","avoidable"],["avaoided","avoided"],["avarage","average"],["avarageing","averaging"],["avarege","average"],["avation","aviation"],["avcoid","avoid"],["avcoids","avoids"],["avdisories","advisories"],["avdisoriyes","advisories"],["avdisory","advisory"],["avengence","a vengeance"],["averageed","averaged"],["averagine","averaging"],["averload","overload"],["averloaded","overloaded"],["averloads","overloads"],["avertising","advertising"],["avgerage","average"],["aviable","available"],["avialable","available"],["avilability","availability"],["avilable","available"],["aviod","avoid"],["avioded","avoided"],["avioding","avoiding"],["aviods","avoids"],["avisories","advisories"],["avisoriyes","advisories"],["avisory","advisory"],["avod","avoid"],["avoded","avoided"],["avoding","avoiding"],["avods","avoids"],["avoidence","avoidance"],["avoind","avoid"],["avoinded","avoided"],["avoinding","avoiding"],["avoinds","avoids"],["avriable","variable"],["avriables","variables"],["avriant","variant"],["avriants","variants"],["avtive","active"],["awared","awarded"],["aweful","awful"],["awefully","awfully"],["awkard","awkward"],["awming","awning"],["awmings","awnings"],["awnser","answer"],["awnsered","answered"],["awnsers","answers"],["awoid","avoid"],["awsome","awesome"],["awya","away"],["axises","axes"],["axissymmetric","axisymmetric"],["axix","axis"],["axixsymmetric","axisymmetric"],["axpressed","expressed"],["aysnc","async"],["ayways","always"],["bacause","because"],["baceause","because"],["bacground","background"],["bacic","basic"],["backards","backwards"],["backbround","background"],["backbrounds","backgrounds"],["backedn","backend"],["backedns","backends"],["backgorund","background"],["backgorunds","backgrounds"],["backgound","background"],["backgounds","backgrounds"],["backgournd","background"],["backgournds","backgrounds"],["backgrond","background"],["backgronds","backgrounds"],["backgroound","background"],["backgroounds","backgrounds"],["backgroud","background"],["backgroudn","background"],["backgroudns","backgrounds"],["backgrouds","backgrounds"],["backgroun","background"],["backgroung","background"],["backgroungs","backgrounds"],["backgrouns","backgrounds"],["backgrount","background"],["backgrounts","backgrounds"],["backgrouund","background"],["backgrund","background"],["backgrunds","backgrounds"],["backgruond","background"],["backgruonds","backgrounds"],["backlght","backlight"],["backlghting","backlighting"],["backlghts","backlights"],["backned","backend"],["backneds","backends"],["backound","background"],["backounds","backgrounds"],["backpsace","backspace"],["backrefence","backreference"],["backrgound","background"],["backrgounds","backgrounds"],["backround","background"],["backrounds","backgrounds"],["backsapce","backspace"],["backslase","backslash"],["backslases","backslashes"],["backslashs","backslashes"],["backwad","backwards"],["backwardss","backwards"],["backware","backward"],["backwark","backward"],["backwrad","backward"],["bactracking","backtracking"],["bacup","backup"],["baed","based"],["bage","bag"],["bahaving","behaving"],["bahavior","behavior"],["bahavioral","behavioral"],["bahaviors","behaviors"],["bahaviour","behaviour"],["baisc","basic"],["baised","raised"],["bakc","back"],["bakcrefs","backrefs"],["bakends","backends"],["bakground","background"],["bakgrounds","backgrounds"],["bakup","backup"],["bakups","backups"],["bakward","backward"],["bakwards","backwards"],["balacing","balancing"],["balence","balance"],["baloon","balloon"],["baloons","balloons"],["balse","false"],["banannas","bananas"],["bandwdith","bandwidth"],["bandwdiths","bandwidths"],["bandwidht","bandwidth"],["bandwidthm","bandwidth"],["bandwitdh","bandwidth"],["bandwith","bandwidth"],["bankrupcy","bankruptcy"],["banlance","balance"],["banruptcy","bankruptcy"],["barbedos","barbados"],["bariier","barrier"],["barnch","branch"],["barnched","branched"],["barncher","brancher"],["barnchers","branchers"],["barnches","branches"],["barnching","branching"],["barriors","barriers"],["barrriers","barriers"],["barycentic","barycentric"],["basci","basic"],["bascially","basically"],["bascktrack","backtrack"],["basf","base"],["basicallly","basically"],["basicaly","basically"],["basiclly","basically"],["basicly","basically"],["basline","baseline"],["baslines","baselines"],["bassic","basic"],["bassically","basically"],["bastract","abstract"],["bastracted","abstracted"],["bastracter","abstracter"],["bastracting","abstracting"],["bastraction","abstraction"],["bastractions","abstractions"],["bastractly","abstractly"],["bastractness","abstractness"],["bastractor","abstractor"],["bastracts","abstracts"],["bateries","batteries"],["batery","battery"],["battaries","batteries"],["battary","battery"],["bbefore","before"],["bboolean","boolean"],["bbooleans","booleans"],["bcak","back"],["bcause","because"],["beable","be able"],["beacaon","beacon"],["beacause","because"],["beachead","beachhead"],["beacuse","because"],["beaon","beacon"],["bearword","bareword"],["beastiality","bestiality"],["beatiful","beautiful"],["beauracracy","bureaucracy"],["beaurocracy","bureaucracy"],["beaurocratic","bureaucratic"],["beause","because"],["beauti","beauty"],["beautiy","beauty"],["beautyfied","beautified"],["beautyfull","beautiful"],["beaviour","behaviour"],["bebongs","belongs"],["becaause","because"],["becacdd","because"],["becahse","because"],["becamae","became"],["becaouse","because"],["becase","because"],["becasue","because"],["becasuse","because"],["becauae","because"],["becauce","because"],["becaue","because"],["becaues","because"],["becaus","because"],["becausee","because"],["becauseq","because"],["becauses","because"],["becausw","because"],["beccause","because"],["bechmark","benchmark"],["bechmarked","benchmarked"],["bechmarking","benchmarking"],["bechmarks","benchmarks"],["becoem","become"],["becomeing","becoming"],["becomme","become"],["becommes","becomes"],["becomming","becoming"],["becoms","becomes"],["becouse","because"],["becoz","because"],["bector","vector"],["bectors","vectors"],["becuase","because"],["becuse","because"],["becxause","because"],["bedore","before"],["beeings","beings"],["beetween","between"],["beetwen","between"],["beffer","buffer"],["befoer","before"],["befor","before"],["beforehands","beforehand"],["beforere","before"],["befores","before"],["beforing","before"],["befure","before"],["begginer","beginner"],["begginers","beginners"],["beggingin","beginning"],["begginging","beginning"],["begginig","beginning"],["beggining","beginning"],["begginings","beginnings"],["begginnig","beginning"],["begginning","beginning"],["beggins","begins"],["beghavior","behavior"],["beghaviors","behaviors"],["begiinning","beginning"],["beginer","beginner"],["begines","begins"],["begining","beginning"],["beginining","beginning"],["begininings","beginnings"],["begininng","beginning"],["begininngs","beginnings"],["beginn","begin"],["beginnig","beginning"],["beginnin","beginning"],["beginnning","beginning"],["beginnnings","beginnings"],["behabior","behavior"],["behabiors","behaviors"],["behabiour","behaviour"],["behabiours","behaviours"],["behabviour","behaviour"],["behaivior","behavior"],["behaiviour","behaviour"],["behaiviuor","behaviour"],["behaivor","behavior"],["behaivors","behaviors"],["behaivour","behaviour"],["behaivoural","behavioural"],["behaivours","behaviours"],["behavioutr","behaviour"],["behaviro","behavior"],["behaviuor","behaviour"],["behavoir","behavior"],["behavoirs","behaviors"],["behavour","behaviour"],["behavriour","behaviour"],["behavriours","behaviours"],["behinde","behind"],["behvaiour","behaviour"],["behviour","behaviour"],["beigin","begin"],["beiginning","beginning"],["beind","behind"],["beinning","beginning"],["bejond","beyond"],["beleagured","beleaguered"],["beleif","belief"],["beleifable","believable"],["beleifed","believed"],["beleifing","believing"],["beleivable","believable"],["beleive","believe"],["beleived","believed"],["beleives","believes"],["beleiving","believing"],["beliefable","believable"],["beliefed","believed"],["beliefing","believing"],["beligum","belgium"],["beling","belong"],["belivable","believable"],["belive","believe"],["beliveable","believable"],["beliveably","believably"],["beliveble","believable"],["belivebly","believably"],["beliving","believing"],["belligerant","belligerent"],["bellweather","bellwether"],["belog","belong"],["beloging","belonging"],["belogs","belongs"],["belond","belong"],["beloning","belonging"],["belown","belong"],["belwo","below"],["bemusemnt","bemusement"],["benchamarked","benchmarked"],["benchamarking","benchmarking"],["benchamrk","benchmark"],["benchamrked","benchmarked"],["benchamrking","benchmarking"],["benchamrks","benchmarks"],["benchmkar","benchmark"],["benchmkared","benchmarked"],["benchmkaring","benchmarking"],["benchmkars","benchmarks"],["benchs","benches"],["benckmark","benchmark"],["benckmarked","benchmarked"],["benckmarking","benchmarking"],["benckmarks","benchmarks"],["benechmark","benchmark"],["benechmarked","benchmarked"],["benechmarking","benchmarking"],["benechmarks","benchmarks"],["beneeth","beneath"],["benefical","beneficial"],["beneficary","beneficiary"],["benefied","benefited"],["benefitial","beneficial"],["beneits","benefits"],["benetifs","benefits"],["beng","being"],["benhind","behind"],["benificial","beneficial"],["benifit","benefit"],["benifite","benefit"],["benifited","benefited"],["benifitial","beneficial"],["benifits","benefits"],["benig","being"],["beond","beyond"],["berforming","performing"],["bergamont","bergamot"],["Berkley","Berkeley"],["Bernouilli","Bernoulli"],["berween","between"],["besed","based"],["beseige","besiege"],["beseiged","besieged"],["beseiging","besieging"],["besure","be sure"],["beteeen","between"],["beteen","between"],["beter","better"],["beteween","between"],["betrween","between"],["bettern","better"],["bettween","between"],["betwean","between"],["betwee","between"],["betweed","between"],["betweeen","between"],["betweem","between"],["betweend","between"],["betweeness","betweenness"],["betweent","between"],["betwen","between"],["betwene","between"],["betwenn","between"],["betwern","between"],["betwween","between"],["beucase","because"],["beuracracy","bureaucracy"],["beutification","beautification"],["beutiful","beautiful"],["beutifully","beautifully"],["bever","never"],["bevore","before"],["bevorehand","beforehand"],["bevorhand","beforehand"],["beweeen","between"],["beween","between"],["bewteen","between"],["bewteeness","betweenness"],["beyone","beyond"],["beyong","beyond"],["beyound","beyond"],["bffer","buffer"],["bginning","beginning"],["bi-langual","bi-lingual"],["bianries","binaries"],["bianry","binary"],["biappicative","biapplicative"],["biddings","bidding"],["bidimentionnal","bidimensional"],["bidning","binding"],["bidnings","bindings"],["bigallic","bigalloc"],["bigining","beginning"],["biginning","beginning"],["biinary","binary"],["bilangual","bilingual"],["bilateraly","bilaterally"],["billingualism","bilingualism"],["billon","billion"],["bimask","bitmask"],["bimillenia","bimillennia"],["bimillenial","bimillennial"],["bimillenium","bimillennium"],["bimontly","bimonthly"],["binairy","binary"],["binanary","binary"],["binar","binary"],["binay","binary"],["bindins","bindings"],["binidng","binding"],["binominal","binomial"],["binraries","binaries"],["binrary","binary"],["bion","bio"],["birght","bright"],["birghten","brighten"],["birghter","brighter"],["birghtest","brightest"],["birghtness","brightness"],["biridectionality","bidirectionality"],["bisct","bisect"],["bisines","business"],["bisiness","business"],["bisnes","business"],["bisness","business"],["bistream","bitstream"],["bisunes","business"],["bisuness","business"],["bitamps","bitmaps"],["bitap","bitmap"],["bitfileld","bitfield"],["bitfilelds","bitfields"],["bitis","bits"],["bitmast","bitmask"],["bitnaps","bitmaps"],["bitwise-orring","bitwise-oring"],["bizare","bizarre"],["bizarely","bizarrely"],["bizzare","bizarre"],["bject","object"],["bjects","objects"],["blackslashes","backslashes"],["blaclist","blacklist"],["blaim","blame"],["blaimed","blamed"],["blanace","balance"],["blancked","blanked"],["blatent","blatant"],["blatently","blatantly"],["blbos","blobs"],["blcok","block"],["blcoks","blocks"],["bleading","bleeding"],["blessd","blessed"],["blessure","blessing"],["bletooth","bluetooth"],["bleutooth","bluetooth"],["blindy","blindly"],["Blitzkreig","Blitzkrieg"],["bload","bloat"],["bloaded","bloated"],["blocack","blockack"],["bloccks","blocks"],["blocekd","blocked"],["blockhain","blockchain"],["blockhains","blockchains"],["blockin","blocking"],["blockse","blocks"],["bloddy","bloody"],["blodk","block"],["bloek","bloke"],["bloekes","blokes"],["bloeks","blokes"],["bloekss","blokes"],["blohted","bloated"],["blokcer","blocker"],["blokchain","blockchain"],["blokchains","blockchains"],["blokcing","blocking"],["bloked","blocked"],["bloker","blocker"],["bloking","blocking"],["blong","belong"],["blonged","belonged"],["blonging","belonging"],["blongs","belongs"],["bloock","block"],["bloocks","blocks"],["bloted","bloated"],["bluestooth","bluetooth"],["bluetooh","bluetooth"],["bluetoot","bluetooth"],["bluetootn","bluetooth"],["blured","blurred"],["blutooth","bluetooth"],["bnecause","because"],["boads","boards"],["boardcast","broadcast"],["bocome","become"],["boddy","body"],["bodiese","bodies"],["bodydbuilder","bodybuilder"],["boelean","boolean"],["boeleans","booleans"],["boffer","buffer"],["bofore","before"],["bofy","body"],["boggus","bogus"],["bogos","bogus"],["bointer","pointer"],["bolean","boolean"],["boleen","boolean"],["bolor","color"],["bombardement","bombardment"],["bombarment","bombardment"],["bondary","boundary"],["Bonnano","Bonanno"],["bood","boot"],["bookeeping","bookkeeping"],["bookkeeing","bookkeeping"],["bookkeeiping","bookkeeping"],["bookkepp","bookkeep"],["bookmakr","bookmark"],["bookmar","bookmark"],["booleam","boolean"],["booleamn","boolean"],["booleamns","booleans"],["booleams","booleans"],["booleanss","booleans"],["booleen","boolean"],["booleens","booleans"],["boolen","boolean"],["boolens","booleans"],["booltloader","bootloader"],["booltloaders","bootloaders"],["boomark","bookmark"],["boomarks","bookmarks"],["boook","book"],["booolean","boolean"],["boooleans","booleans"],["booshelf","bookshelf"],["booshelves","bookshelves"],["boostrap","bootstrap"],["boostrapped","bootstrapped"],["boostrapping","bootstrapping"],["boostraps","bootstraps"],["booteek","boutique"],["bootlaoder","bootloader"],["bootlaoders","bootloaders"],["bootoloader","bootloader"],["bootom","bottom"],["bootraping","bootstrapping"],["bootsram","bootram"],["bootsrap","bootstrap"],["bootstap","bootstrap"],["bootstapped","bootstrapped"],["bootstapping","bootstrapping"],["bootstaps","bootstraps"],["booundaries","boundaries"],["booundary","boundary"],["boquet","bouquet"],["borad","board"],["boradcast","broadcast"],["bording","boarding"],["bordreline","borderline"],["bordrelines","borderlines"],["borgwasy","bourgeoisie"],["borke","broke"],["borken","broken"],["borow","borrow"],["borwser","browsers"],["borwsers","browsers"],["bothe","both"],["boths","both"],["botifies","notifies"],["bottem","bottom"],["bottlenck","bottleneck"],["bottlencks","bottlenecks"],["bottlenect","bottleneck"],["bottlenects","bottlenecks"],["bottlneck","bottleneck"],["bottlnecks","bottlenecks"],["bottomborde","bottomborder"],["bottome","bottom"],["bottomn","bottom"],["bottonm","bottom"],["botttom","bottom"],["bouce","bounce"],["bouces","bounces"],["boudaries","boundaries"],["boudary","boundary"],["bouding","bounding"],["boudnaries","boundaries"],["boudnary","boundary"],["bouds","bounds"],["bouind","bound"],["bouinded","bounded"],["bouinding","bounding"],["bouinds","bounds"],["boun","bound"],["bounaaries","boundaries"],["bounaary","boundary"],["bounad","bound"],["bounadaries","boundaries"],["bounadary","boundary"],["bounaded","bounded"],["bounading","bounding"],["bounadries","boundaries"],["bounadry","boundary"],["bounads","bounds"],["bounardies","boundaries"],["bounardy","boundary"],["bounaries","boundaries"],["bounary","boundary"],["bounbdaries","boundaries"],["bounbdary","boundary"],["boundares","boundaries"],["boundaryi","boundary"],["boundarys","boundaries"],["bounday","boundary"],["boundays","boundaries"],["bounderies","boundaries"],["boundery","boundary"],["boundig","bounding"],["boundimg","bounding"],["boundin","bounding"],["boundrary","boundary"],["boundries","boundaries"],["boundry","boundary"],["bounduaries","boundaries"],["bouned","bounded"],["boungaries","boundaries"],["boungary","boundary"],["boungin","bounding"],["boungind","bounding"],["bounhdaries","boundaries"],["bounhdary","boundary"],["bounidng","bounding"],["bouning","bounding"],["bounnd","bound"],["bounndaries","boundaries"],["bounndary","boundary"],["bounnded","bounded"],["bounnding","bounding"],["bounnds","bounds"],["bounradies","boundaries"],["bounrady","boundary"],["bounraies","boundaries"],["bounraries","boundaries"],["bounrary","boundary"],["bounray","boundary"],["bouns","bounds"],["bounsaries","boundaries"],["bounsary","boundary"],["bounsd","bounds"],["bount","bound"],["bountries","boundaries"],["bountry","boundary"],["bounudaries","boundaries"],["bounudary","boundary"],["bounus","bonus"],["bouqet","bouquet"],["bouund","bound"],["bouunded","bounded"],["bouunding","bounding"],["bouunds","bounds"],["bouy","buoy"],["bouyancy","buoyancy"],["bouyant","buoyant"],["boyant","buoyant"],["boycot","boycott"],["bracese","braces"],["brach","branch"],["brackeds","brackets"],["bracketwith","bracket with"],["brackground","background"],["bradcast","broadcast"],["brakpoint","breakpoint"],["brakpoints","breakpoints"],["branchces","branches"],["brancheswith","branches with"],["branchs","branches"],["branchsi","branches"],["branck","branch"],["branckes","branches"],["brancket","bracket"],["branckets","brackets"],["brane","brain"],["braodcast","broadcast"],["braodcasted","broadcasted"],["braodcasts","broadcasts"],["Brasillian","Brazilian"],["brazeer","brassiere"],["brazillian","Brazilian"],["breakes","breaks"],["breakthough","breakthrough"],["breakthroughts","breakthroughs"],["breakthruogh","breakthrough"],["breakthruoghs","breakthroughs"],["breal","break"],["breefly","briefly"],["brefore","before"],["breif","brief"],["breifly","briefly"],["brekpoint","breakpoint"],["brekpoints","breakpoints"],["breshed","brushed"],["breshes","brushes"],["breshing","brushing"],["brethen","brethren"],["bretheren","brethren"],["brfore","before"],["bridg","bridge"],["brievely","briefly"],["brievety","brevity"],["brigde","bridge"],["brige","bridge"],["briges","bridges"],["brighness","brightness"],["brightnesss","brightness"],["brigth","bright"],["brigthnes","brightness"],["brigthness","brightness"],["briliant","brilliant"],["brilinear","bilinear"],["brillant","brilliant"],["brimestone","brimstone"],["bringin","bringing"],["bringtofont","bringtofront"],["brite","bright"],["briten","brighten"],["britened","brightened"],["britener","brightener"],["briteners","brighteners"],["britenes","brightenes"],["britening","brightening"],["briter","brighter"],["Britian","Britain"],["Brittish","British"],["brnach","branch"],["brnaches","branches"],["broacast","broadcast"],["broacasted","broadcast"],["broacasting","broadcasting"],["broacasts","broadcasts"],["broadacasting","broadcasting"],["broadcas","broadcast"],["broadcase","broadcast"],["broadcasti","broadcast"],["broadcat","broadcast"],["broady","broadly"],["broardcast","broadcast"],["broblematic","problematic"],["brocher","brochure"],["brocken","broken"],["brockend","broken"],["brockened","broken"],["brocolee","broccoli"],["brodcast","broadcast"],["broked","broken"],["brokem","broken"],["brokend","broken"],["brokened","broken"],["brokeness","brokenness"],["bronken","broken"],["brosable","browsable"],["broser","browser"],["brosers","browsers"],["brosing","browsing"],["broswable","browsable"],["broswe","browse"],["broswed","browsed"],["broswer","browser"],["broswers","browsers"],["broswing","browsing"],["brower","browser"],["browers","browsers"],["browing","browsing"],["browseable","browsable"],["browswable","browsable"],["browswe","browse"],["browswed","browsed"],["browswer","browser"],["browswers","browsers"],["browswing","browsing"],["brutaly","brutally"],["brwosable","browsable"],["brwose","browse"],["brwosed","browsed"],["brwoser","browser"],["brwosers","browsers"],["brwosing","browsing"],["btye","byte"],["btyes","bytes"],["buad","baud"],["bubbless","bubbles"],["Buddah","Buddha"],["Buddist","Buddhist"],["bufefr","buffer"],["bufer","buffer"],["bufers","buffers"],["buffereed","buffered"],["bufferent","buffered"],["bufferes","buffers"],["bufferred","buffered"],["buffeur","buffer"],["bufffer","buffer"],["bufffers","buffers"],["buffor","buffer"],["buffors","buffers"],["buffr","buffer"],["buffred","buffered"],["buffring","buffering"],["bufufer","buffer"],["buggest","biggest"],["bugous","bogus"],["buguous","bogus"],["bugus","bogus"],["buid","build"],["buider","builder"],["buiders","builders"],["buiding","building"],["buidl","build"],["buidling","building"],["buidlings","buildings"],["buidls","builds"],["buiild","build"],["buik","bulk"],["build-dependancies","build-dependencies"],["build-dependancy","build-dependency"],["build-in","built-in"],["builded","built"],["buildpackge","buildpackage"],["buildpackges","buildpackages"],["builing","building"],["builings","buildings"],["buillt","built"],["built-time","build-time"],["builter","builder"],["builters","builders"],["buinseses","businesses"],["buinsess","business"],["buinsesses","businesses"],["buipd","build"],["buisness","business"],["buisnessman","businessman"],["buissiness","business"],["buissinesses","businesses"],["buit","built"],["buitin","builtin"],["buitins","builtins"],["buitlin","builtin"],["buitlins","builtins"],["buitton","button"],["buittons","buttons"],["buld","build"],["bulding","building"],["bulds","builds"],["bulid","build"],["buliding","building"],["bulids","builds"],["bulit","built"],["bulitin","built-in"],["bulle","bullet"],["bulletted","bulleted"],["bulnerabilities","vulnerabilities"],["bulnerability","vulnerability"],["bulnerable","vulnerable"],["bult","built"],["bult-in","built-in"],["bultin","builtin"],["bumby","bumpy"],["bumpded","bumped"],["bumpt","bump"],["bumpted","bumped"],["bumpter","bumper"],["bumpting","bumping"],["bundel","bundle"],["bundeled","bundled"],["bundels","bundles"],["buoancy","buoyancy"],["bureauracy","bureaucracy"],["burocratic","bureaucratic"],["burried","buried"],["burtst","burst"],["busines","business"],["busness","business"],["bussiness","business"],["bussy","busy"],["buton","button"],["butons","buttons"],["butterly","butterfly"],["buttong","button"],["buttonn","button"],["buttonns","buttons"],["buttosn","buttons"],["buttton","button"],["butttons","buttons"],["buufers","buffers"],["buuild","build"],["buuilds","builds"],["bve","be"],["bwtween","between"],["bypas","bypass"],["bypased","bypassed"],["bypasing","bypassing"],["bytetream","bytestream"],["bytetreams","bytestreams"],["cabint","cabinet"],["cabints","cabinets"],["cacahe","cache"],["cacahes","caches"],["cace","cache"],["cachable","cacheable"],["cacheed","cached"],["cacheing","caching"],["cachline","cacheline"],["cacl","calc"],["caclate","calculate"],["cacluate","calculate"],["cacluated","calculated"],["cacluater","calculator"],["cacluates","calculates"],["cacluating","calculating"],["cacluation","calculation"],["cacluations","calculations"],["cacluator","calculator"],["caclucate","calculate"],["caclucation","calculation"],["caclucations","calculations"],["caclucator","calculator"],["caclulate","calculate"],["caclulated","calculated"],["caclulates","calculates"],["caclulating","calculating"],["caclulation","calculation"],["caclulations","calculations"],["caculate","calculate"],["caculated","calculated"],["caculater","calculator"],["caculates","calculates"],["caculating","calculating"],["caculation","calculation"],["caculations","calculations"],["caculator","calculator"],["cacuses","caucuses"],["cadidate","candidate"],["caefully","carefully"],["Caesarian","Caesarean"],["cahacter","character"],["cahacters","characters"],["cahange","change"],["cahanged","changed"],["cahanges","changes"],["cahanging","changing"],["cahannel","channel"],["caharacter","character"],["caharacters","characters"],["caharcter","character"],["caharcters","characters"],["cahc","cache"],["cahce","cache"],["cahced","cached"],["cahces","caches"],["cahche","cache"],["cahchedb","cachedb"],["cahches","caches"],["cahcing","caching"],["cahcs","caches"],["cahdidate","candidate"],["cahdidates","candidates"],["cahe","cache"],["cahes","caches"],["cahgne","change"],["cahgned","changed"],["cahgner","changer"],["cahgners","changers"],["cahgnes","changes"],["cahgning","changing"],["cahhel","channel"],["cahhels","channels"],["cahined","chained"],["cahing","caching"],["cahining","chaining"],["cahnge","change"],["cahnged","changed"],["cahnges","changes"],["cahnging","changing"],["cahnnel","channel"],["cahnnels","channels"],["cahr","char"],["cahracter","character"],["cahracters","characters"],["cahrging","charging"],["cahrs","chars"],["calaber","caliber"],["calalog","catalog"],["calback","callback"],["calbirate","calibrate"],["calbirated","calibrated"],["calbirates","calibrates"],["calbirating","calibrating"],["calbiration","calibration"],["calbirations","calibrations"],["calbirator","calibrator"],["calbirators","calibrators"],["calcable","calculable"],["calcalate","calculate"],["calciulate","calculate"],["calciulating","calculating"],["calclation","calculation"],["calcluate","calculate"],["calcluated","calculated"],["calcluates","calculates"],["calclulate","calculate"],["calclulated","calculated"],["calclulates","calculates"],["calclulating","calculating"],["calclulation","calculation"],["calclulations","calculations"],["calcualate","calculate"],["calcualated","calculated"],["calcualates","calculates"],["calcualating","calculating"],["calcualation","calculation"],["calcualations","calculations"],["calcualte","calculate"],["calcualted","calculated"],["calcualter","calculator"],["calcualtes","calculates"],["calcualting","calculating"],["calcualtion","calculation"],["calcualtions","calculations"],["calcualtor","calculator"],["calcuate","calculate"],["calcuated","calculated"],["calcuates","calculates"],["calcuation","calculation"],["calcuations","calculations"],["calculaion","calculation"],["calculataed","calculated"],["calculater","calculator"],["calculatted","calculated"],["calculatter","calculator"],["calculattion","calculation"],["calculattions","calculations"],["calculaution","calculation"],["calculautions","calculations"],["calculcate","calculate"],["calculcation","calculation"],["calculed","calculated"],["calculs","calculus"],["calcultate","calculate"],["calcultated","calculated"],["calcultater","calculator"],["calcultating","calculating"],["calcultator","calculator"],["calculting","calculating"],["calculuations","calculations"],["calcurate","calculate"],["calcurated","calculated"],["calcurates","calculates"],["calcurating","calculating"],["calcutate","calculate"],["calcutated","calculated"],["calcutates","calculates"],["calcutating","calculating"],["caleed","called"],["caleee","callee"],["calees","callees"],["caler","caller"],["calescing","coalescing"],["caliased","aliased"],["calibraiton","calibration"],["calibraitons","calibrations"],["calibrte","calibrate"],["calibrtion","calibration"],["caligraphy","calligraphy"],["calilng","calling"],["caliming","claiming"],["callabck","callback"],["callabcks","callbacks"],["callack","callback"],["callbacl","callback"],["callbacsk","callback"],["callbak","callback"],["callbakc","callback"],["callbakcs","callbacks"],["callbck","callback"],["callcack","callback"],["callcain","callchain"],["calld","called"],["calle","called"],["callef","called"],["callibrate","calibrate"],["callibrated","calibrated"],["callibrates","calibrates"],["callibrating","calibrating"],["callibration","calibration"],["callibrations","calibrations"],["callibri","calibri"],["callig","calling"],["callint","calling"],["callled","called"],["calllee","callee"],["calloed","called"],["callsr","calls"],["calsses","classes"],["calucalte","calculate"],["calucalted","calculated"],["calucaltes","calculates"],["calucalting","calculating"],["calucaltion","calculation"],["calucaltions","calculations"],["calucate","calculate"],["caluclate","calculate"],["caluclated","calculated"],["caluclater","calculator"],["caluclates","calculates"],["caluclating","calculating"],["caluclation","calculation"],["caluclations","calculations"],["caluclator","calculator"],["caluculate","calculate"],["caluculated","calculated"],["caluculates","calculates"],["caluculating","calculating"],["caluculation","calculation"],["caluculations","calculations"],["calue","value"],["calulate","calculate"],["calulated","calculated"],["calulater","calculator"],["calulates","calculates"],["calulating","calculating"],["calulation","calculation"],["calulations","calculations"],["Cambrige","Cambridge"],["camoflage","camouflage"],["camoflague","camouflage"],["campagin","campaign"],["campain","campaign"],["campaing","campaign"],["campains","campaigns"],["camparing","comparing"],["can;t","can't"],["canadan","canadian"],["canbe","can be"],["cancelaltion","cancellation"],["cancelation","cancellation"],["cancelations","cancellations"],["canceles","cancels"],["cancell","cancel"],["cancelles","cancels"],["cances","cancel"],["cancl","cancel"],["cancle","cancel"],["cancled","canceled"],["candadate","candidate"],["candadates","candidates"],["candiate","candidate"],["candiates","candidates"],["candidat","candidate"],["candidats","candidates"],["candidiate","candidate"],["candidiates","candidates"],["candinate","candidate"],["candinates","candidates"],["canditate","candidate"],["canditates","candidates"],["cange","change"],["canged","changed"],["canges","changes"],["canging","changing"],["canidate","candidate"],["canidates","candidates"],["cann't","can't"],["cann","can"],["cannister","canister"],["cannisters","canisters"],["cannnot","cannot"],["cannobt","cannot"],["cannonical","canonical"],["cannonicalize","canonicalize"],["cannont","cannot"],["cannotation","connotation"],["cannotations","connotations"],["cannott","cannot"],["canonalize","canonicalize"],["canonalized","canonicalized"],["canonalizes","canonicalizes"],["canonalizing","canonicalizing"],["canoncial","canonical"],["canonicalizations","canonicalization"],["canonival","canonical"],["canot","cannot"],["cant'","can't"],["cant't","can't"],["cant;","can't"],["cantact","contact"],["cantacted","contacted"],["cantacting","contacting"],["cantacts","contacts"],["canvase","canvas"],["caost","coast"],["capabable","capable"],["capabicity","capability"],["capabiities","capabilities"],["capabiity","capability"],["capabilies","capabilities"],["capabiliites","capabilities"],["capabilites","capabilities"],["capabilitieis","capabilities"],["capabilitiies","capabilities"],["capabilitires","capabilities"],["capabilitiy","capability"],["capabillity","capability"],["capabilties","capabilities"],["capabiltity","capability"],["capabilty","capability"],["capabitilies","capabilities"],["capablilities","capabilities"],["capablities","capabilities"],["capablity","capability"],["capaciy","capacity"],["capalize","capitalize"],["capalized","capitalized"],["capapbilities","capabilities"],["capatibilities","capabilities"],["capbability","capability"],["capbale","capable"],["capela","capella"],["caperbility","capability"],["Capetown","Cape Town"],["capibilities","capabilities"],["capible","capable"],["capitolize","capitalize"],["cappable","capable"],["captable","capable"],["captial","capital"],["captrure","capture"],["captued","captured"],["capturd","captured"],["caputre","capture"],["caputred","captured"],["caputres","captures"],["caputure","capture"],["carachter","character"],["caracter","character"],["caractere","character"],["caracteristic","characteristic"],["caracterized","characterized"],["caracters","characters"],["carbus","cardbus"],["carefuly","carefully"],["careing","caring"],["carfull","careful"],["cariage","carriage"],["caridge","carriage"],["cariier","carrier"],["carismatic","charismatic"],["Carmalite","Carmelite"],["Carnagie","Carnegie"],["Carnagie-Mellon","Carnegie-Mellon"],["Carnigie","Carnegie"],["Carnigie-Mellon","Carnegie-Mellon"],["carniverous","carnivorous"],["caronavirus","coronavirus"],["caronaviruses","coronaviruses"],["carreer","career"],["carreid","carried"],["carrers","careers"],["carret","caret"],["carriadge","carriage"],["Carribbean","Caribbean"],["Carribean","Caribbean"],["carrien","carrier"],["carrige","carriage"],["carrrier","carrier"],["carryintg","carrying"],["carryng","carrying"],["cartain","certain"],["cartdridge","cartridge"],["cartensian","Cartesian"],["Carthagian","Carthaginian"],["carthesian","cartesian"],["carthographer","cartographer"],["cartiesian","cartesian"],["cartilege","cartilage"],["cartilidge","cartilage"],["cartrige","cartridge"],["caryy","carry"],["cascace","cascade"],["case-insensative","case-insensitive"],["case-insensetive","case-insensitive"],["case-insensistive","case-insensitive"],["case-insensitiv","case-insensitive"],["case-insensitivy","case-insensitivity"],["case-insensitve","case-insensitive"],["case-insenstive","case-insensitive"],["case-insentive","case-insensitive"],["case-insentivite","case-insensitive"],["case-insesitive","case-insensitive"],["case-intensitive","case-insensitive"],["case-sensative","case-sensitive"],["case-sensetive","case-sensitive"],["case-sensistive","case-sensitive"],["case-sensitiv","case-sensitive"],["case-sensitve","case-sensitive"],["case-senstive","case-sensitive"],["case-sentive","case-sensitive"],["case-sentivite","case-sensitive"],["case-sesitive","case-sensitive"],["case-unsensitive","case-insensitive"],["caseinsensative","case-insensitive"],["caseinsensetive","case-insensitive"],["caseinsensistive","case-insensitive"],["caseinsensitiv","case-insensitive"],["caseinsensitve","case-insensitive"],["caseinsenstive","case-insensitive"],["caseinsentive","case-insensitive"],["caseinsentivite","case-insensitive"],["caseinsesitive","case-insensitive"],["caseintensitive","case-insensitive"],["caselessely","caselessly"],["casesensative","case-sensitive"],["casesensetive","casesensitive"],["casesensistive","case-sensitive"],["casesensitiv","case-sensitive"],["casesensitve","case-sensitive"],["casesenstive","case-sensitive"],["casesentive","case-sensitive"],["casesentivite","case-sensitive"],["casesesitive","case-sensitive"],["casette","cassette"],["cashe","cache"],["casion","caisson"],["caspule","capsule"],["caspules","capsules"],["cassawory","cassowary"],["cassowarry","cassowary"],["casue","cause"],["casued","caused"],["casues","causes"],["casuing","causing"],["casulaties","casualties"],["casulaty","casualty"],["cataalogue","catalogue"],["catagori","category"],["catagories","categories"],["catagorization","categorization"],["catagorizations","categorizations"],["catagorized","categorized"],["catagory","category"],["catapillar","caterpillar"],["catapillars","caterpillars"],["catapiller","caterpillar"],["catapillers","caterpillars"],["catastronphic","catastrophic"],["catastropic","catastrophic"],["catastropically","catastrophically"],["catastrphic","catastrophic"],["catche","catch"],["catched","caught"],["catchi","catch"],["catchs","catches"],["categogical","categorical"],["categogically","categorically"],["categogies","categories"],["categogy","category"],["cateogrical","categorical"],["cateogrically","categorically"],["cateogries","categories"],["cateogry","category"],["catepillar","caterpillar"],["catepillars","caterpillars"],["catergorize","categorize"],["catergorized","categorized"],["caterpilar","caterpillar"],["caterpilars","caterpillars"],["caterpiller","caterpillar"],["caterpillers","caterpillars"],["catgorical","categorical"],["catgorically","categorically"],["catgories","categories"],["catgory","category"],["cathlic","catholic"],["catholocism","catholicism"],["catloag","catalog"],["catloaged","cataloged"],["catloags","catalogs"],["catory","factory"],["catpture","capture"],["catpure","capture"],["catpured","captured"],["catpures","captures"],["catterpilar","caterpillar"],["catterpilars","caterpillars"],["catterpillar","caterpillar"],["catterpillars","caterpillars"],["cattleship","battleship"],["caucasion","caucasian"],["cauched","caught"],["caugt","caught"],["cauhgt","caught"],["cauing","causing"],["causees","causes"],["causion","caution"],["causioned","cautioned"],["causions","cautions"],["causious","cautious"],["cavaet","caveat"],["cavaets","caveats"],["ccahe","cache"],["ccale","scale"],["ccertificate","certificate"],["ccertificated","certificated"],["ccertificates","certificates"],["ccertification","certification"],["ccessible","accessible"],["cche","cache"],["cconfiguration","configuration"],["ccordinate","coordinate"],["ccordinates","coordinates"],["ccordinats","coordinates"],["ccoutant","accountant"],["ccpcheck","cppcheck"],["ccurred","occurred"],["ccustom","custom"],["ccustoms","customs"],["cdecompress","decompress"],["ceartype","cleartype"],["Ceasar","Caesar"],["ceate","create"],["ceated","created"],["ceates","creates"],["ceating","creating"],["ceation","creation"],["ceck","check"],["cecked","checked"],["cecker","checker"],["cecking","checking"],["cecks","checks"],["cedential","credential"],["cedentials","credentials"],["cehck","check"],["cehcked","checked"],["cehcker","checker"],["cehcking","checking"],["cehcks","checks"],["Celcius","Celsius"],["celles","cells"],["cellpading","cellpadding"],["cellst","cells"],["cellxs","cells"],["celsuis","celsius"],["cementary","cemetery"],["cemetarey","cemetery"],["cemetaries","cemeteries"],["cemetary","cemetery"],["cenario","scenario"],["cenarios","scenarios"],["cencter","center"],["cencus","census"],["cengter","center"],["censequence","consequence"],["centain","certain"],["cententenial","centennial"],["centerd","centered"],["centisencond","centisecond"],["centisenconds","centiseconds"],["centrifugeable","centrifugable"],["centrigrade","centigrade"],["centriod","centroid"],["centriods","centroids"],["centruies","centuries"],["centruy","century"],["centuties","centuries"],["centuty","century"],["cerain","certain"],["cerainly","certainly"],["cerainty","certainty"],["cerate","create"],["cereates","creates"],["cerimonial","ceremonial"],["cerimonies","ceremonies"],["cerimonious","ceremonious"],["cerimony","ceremony"],["ceromony","ceremony"],["certaily","certainly"],["certaincy","certainty"],["certainity","certainty"],["certaint","certain"],["certaion","certain"],["certan","certain"],["certficate","certificate"],["certficated","certificated"],["certficates","certificates"],["certfication","certification"],["certfications","certifications"],["certficiate","certificate"],["certficiated","certificated"],["certficiates","certificates"],["certficiation","certification"],["certficiations","certifications"],["certfied","certified"],["certfy","certify"],["certian","certain"],["certianly","certainly"],["certicate","certificate"],["certicated","certificated"],["certicates","certificates"],["certication","certification"],["certicicate","certificate"],["certifacte","certificate"],["certifacted","certificated"],["certifactes","certificates"],["certifaction","certification"],["certifcate","certificate"],["certifcated","certificated"],["certifcates","certificates"],["certifcation","certification"],["certifciate","certificate"],["certifciated","certificated"],["certifciates","certificates"],["certifciation","certification"],["certifiate","certificate"],["certifiated","certificated"],["certifiates","certificates"],["certifiating","certificating"],["certifiation","certification"],["certifiations","certifications"],["certificat","certificate"],["certificatd","certificated"],["certificaton","certification"],["certificats","certificates"],["certifice","certificate"],["certificed","certificated"],["certifices","certificates"],["certificion","certification"],["certificste","certificate"],["certificsted","certificated"],["certificstes","certificates"],["certificsting","certificating"],["certificstion","certification"],["certifificate","certificate"],["certifificated","certificated"],["certifificates","certificates"],["certifification","certification"],["certiticate","certificate"],["certiticated","certificated"],["certiticates","certificates"],["certitication","certification"],["cetain","certain"],["cetainly","certainly"],["cetainty","certainty"],["cetrainly","certainly"],["cetting","setting"],["Cgywin","Cygwin"],["chaarges","charges"],["chacacter","character"],["chacacters","characters"],["chache","cache"],["chached","cached"],["chacheline","cacheline"],["chaeck","check"],["chaecked","checked"],["chaecker","checker"],["chaecking","checking"],["chaecks","checks"],["chagne","change"],["chagned","changed"],["chagnes","changes"],["chahged","changed"],["chahging","changing"],["chaied","chained"],["chaing","chain"],["chalenging","challenging"],["challanage","challenge"],["challange","challenge"],["challanged","challenged"],["challanges","challenges"],["challege","challenge"],["chambre","chamber"],["chambres","chambers"],["Champange","Champagne"],["chanage","change"],["chanaged","changed"],["chanager","changer"],["chanages","changes"],["chanaging","changing"],["chanceled","canceled"],["chanceling","canceling"],["chanched","changed"],["chaneged","changed"],["chaneging","changing"],["chanel","channel"],["chanell","channel"],["chanels","channels"],["changable","changeable"],["changeble","changeable"],["changeing","changing"],["changge","change"],["changged","changed"],["changgeling","changeling"],["changges","changes"],["changlog","changelog"],["changuing","changing"],["chanined","chained"],["chaninging","changing"],["chanllenge","challenge"],["chanllenging","challenging"],["channael","channel"],["channe","channel"],["channeles","channels"],["channl","channel"],["channle","channel"],["channles","channels"],["channnel","channel"],["channnels","channels"],["chanses","chances"],["chaper","chapter"],["characaters","characters"],["characer","character"],["characers","characters"],["characeter","character"],["characeters","characters"],["characetrs","characters"],["characher","character"],["charachers","characters"],["charachter","character"],["charachters","characters"],["characstyle","charstyle"],["charactar","character"],["charactaristic","characteristic"],["charactaristics","characteristics"],["charactars","characters"],["characte","character"],["charactear","character"],["charactears","characters"],["characted","character"],["characteds","characters"],["characteer","character"],["characteers","characters"],["characteisation","characterisation"],["characteization","characterization"],["characteor","character"],["characteors","characters"],["characterclasses","character classes"],["characteres","characters"],["characterisic","characteristic"],["characterisically","characteristically"],["characterisicly","characteristically"],["characterisics","characteristics"],["characterisitic","characteristic"],["characterisitics","characteristics"],["characteristicly","characteristically"],["characteritic","characteristic"],["characteritics","characteristics"],["characteritisc","characteristic"],["characteritiscs","characteristics"],["charactersistic","characteristic"],["charactersistically","characteristically"],["charactersistics","characteristics"],["charactersitic","characteristic"],["charactersm","characters"],["characterss","characters"],["characterstic","characteristic"],["characterstically","characteristically"],["characterstics","characteristics"],["charactertistic","characteristic"],["charactertistically","characteristically"],["charactertistics","characteristics"],["charactes","characters"],["charactet","character"],["characteter","character"],["characteteristic","characteristic"],["characteteristics","characteristics"],["characteters","characters"],["charactetistic","characteristic"],["charactetistics","characteristics"],["charactetr","character"],["charactetrs","characters"],["charactets","characters"],["characther","character"],["charactiristic","characteristic"],["charactiristically","characteristically"],["charactiristics","characteristics"],["charactor","character"],["charactors","characters"],["charactristic","characteristic"],["charactristically","characteristically"],["charactristics","characteristics"],["charactrs","characters"],["characts","characters"],["characture","character"],["charakter","character"],["charakters","characters"],["chararacter","character"],["chararacters","characters"],["chararcter","character"],["chararcters","characters"],["charas","chars"],["charascter","character"],["charascters","characters"],["charasmatic","charismatic"],["charater","character"],["charaterize","characterize"],["charaterized","characterized"],["charaters","characters"],["charator","character"],["charators","characters"],["charcater","character"],["charcter","character"],["charcteristic","characteristic"],["charcteristics","characteristics"],["charcters","characters"],["charctor","character"],["charctors","characters"],["charecter","character"],["charecters","characters"],["charector","character"],["chargind","charging"],["charicter","character"],["charicters","characters"],["charictor","character"],["charictors","characters"],["chariman","chairman"],["charistics","characteristics"],["charizma","charisma"],["chartroose","chartreuse"],["chassy","chassis"],["chatacter","character"],["chatacters","characters"],["chatch","catch"],["chater","chapter"],["chawk","chalk"],["chcek","check"],["chceked","checked"],["chceking","checking"],["chceks","checks"],["chck","check"],["chckbox","checkbox"],["cheapeast","cheapest"],["cheatta","cheetah"],["chec","check"],["checbox","checkbox"],["checboxes","checkboxes"],["checg","check"],["checged","checked"],["checheckpoit","checkpoint"],["checheckpoits","checkpoints"],["cheched","checked"],["cheching","checking"],["chechk","check"],["chechs","checks"],["checkalaises","checkaliases"],["checkcsum","checksum"],["checkd","checked"],["checkes","checks"],["checket","checked"],["checkk","check"],["checkng","checking"],["checkoslovakia","czechoslovakia"],["checkox","checkbox"],["checkpoing","checkpoint"],["checkstum","checksum"],["checkstuming","checksumming"],["checkstumming","checksumming"],["checkstums","checksums"],["checksume","checksum"],["checksumed","checksummed"],["checksuming","checksumming"],["checkt","checked"],["checkum","checksum"],["checkums","checksums"],["checkuot","checkout"],["checl","check"],["checled","checked"],["checling","checking"],["checls","checks"],["cheduling","scheduling"],["cheeper","cheaper"],["cheeta","cheetah"],["cheif","chief"],["cheifs","chiefs"],["chek","check"],["chekc","check"],["chekcing","checking"],["chekd","checked"],["cheked","checked"],["chekers","checkers"],["cheking","checking"],["cheks","checks"],["cheksum","checksum"],["cheksums","checksums"],["chello","cello"],["chemcial","chemical"],["chemcially","chemically"],["chemestry","chemistry"],["chemicaly","chemically"],["chenged","changed"],["chennel","channel"],["cherch","church"],["cherchs","churches"],["cherck","check"],["chercking","checking"],["chercks","checks"],["chescksums","checksums"],["chgange","change"],["chganged","changed"],["chganges","changes"],["chganging","changing"],["chidren","children"],["childbird","childbirth"],["childen","children"],["childeren","children"],["childern","children"],["childlren","children"],["chiledren","children"],["chilren","children"],["chineese","Chinese"],["chinense","Chinese"],["chinesse","Chinese"],["chipersuite","ciphersuite"],["chipersuites","ciphersuites"],["chipertext","ciphertext"],["chipertexts","ciphertexts"],["chipet","chipset"],["chipslect","chipselect"],["chipstes","chipsets"],["chiuldren","children"],["chked","checked"],["chnage","change"],["chnaged","changed"],["chnages","changes"],["chnaging","changing"],["chnge","change"],["chnged","changed"],["chnges","changes"],["chnging","changing"],["chnnel","channel"],["choclate","chocolate"],["choicing","choosing"],["choise","choice"],["choises","choices"],["choising","choosing"],["chooose","choose"],["choos","choose"],["choosen","chosen"],["chopipng","chopping"],["choronological","chronological"],["chosed","chose"],["choseen","chosen"],["choser","chooser"],["chosing","choosing"],["chossen","chosen"],["chowsing","choosing"],["chracter","character"],["chracters","characters"],["chractor","character"],["chractors","characters"],["chrminance","chrominance"],["chromum","chromium"],["chuch","church"],["chuks","chunks"],["chunaks","chunks"],["chunc","chunk"],["chunck","chunk"],["chuncked","chunked"],["chuncking","chunking"],["chuncks","chunks"],["chuncksize","chunksize"],["chuncs","chunks"],["chuned","chunked"],["churchs","churches"],["cick","click"],["cicrle","circle"],["cicruit","circuit"],["cicruits","circuits"],["cicular","circular"],["ciculars","circulars"],["cihpher","cipher"],["cihphers","ciphers"],["cilinder","cylinder"],["cilinders","cylinders"],["cilindrical","cylindrical"],["cilyndre","cylinder"],["cilyndres","cylinders"],["cilyndrs","cylinders"],["Cincinatti","Cincinnati"],["Cincinnatti","Cincinnati"],["cinfiguration","configuration"],["cinfigurations","configurations"],["cintaner","container"],["ciontrol","control"],["ciper","cipher"],["cipers","ciphers"],["cipersuite","ciphersuite"],["cipersuites","ciphersuites"],["cipertext","ciphertext"],["cipertexts","ciphertexts"],["ciphe","cipher"],["cipherntext","ciphertext"],["ciphersuit","ciphersuite"],["ciphersuits","ciphersuites"],["ciphersute","ciphersuite"],["ciphersutes","ciphersuites"],["cipheruite","ciphersuite"],["cipheruites","ciphersuites"],["ciphes","ciphers"],["ciphr","cipher"],["ciphrs","ciphers"],["cips","chips"],["circluar","circular"],["circluarly","circularly"],["circluars","circulars"],["circomvent","circumvent"],["circomvented","circumvented"],["circomvents","circumvents"],["circual","circular"],["circuitery","circuitry"],["circulaton","circulation"],["circumferance","circumference"],["circumferencial","circumferential"],["circumsicion","circumcision"],["circumstancial","circumstantial"],["circumstansial","circumstantial"],["circumstnce","circumstance"],["circumstnces","circumstances"],["circumstncial","circumstantial"],["circumstntial","circumstantial"],["circumvernt","circumvent"],["circunference","circumference"],["circunferences","circumferences"],["circunstance","circumstance"],["circunstances","circumstances"],["circunstantial","circumstantial"],["circustances","circumstances"],["circut","circuit"],["circuts","circuits"],["ciricle","circle"],["ciricles","circles"],["ciricuit","circuit"],["ciricuits","circuits"],["ciricular","circular"],["ciricularise","circularise"],["ciricularize","circularize"],["ciriculum","curriculum"],["cirilic","Cyrillic"],["cirillic","Cyrillic"],["ciritc","critic"],["ciritcal","critical"],["ciritcality","criticality"],["ciritcals","criticals"],["ciritcs","critics"],["ciriteria","criteria"],["ciritic","critic"],["ciritical","critical"],["ciriticality","criticality"],["ciriticals","criticals"],["ciritics","critics"],["cirlce","circle"],["cirle","circle"],["cirles","circles"],["cirsumstances","circumstances"],["cirtcuit","circuit"],["cirucal","circular"],["cirucit","circuit"],["cirucits","circuits"],["ciruclar","circular"],["ciruclation","circulation"],["ciruclator","circulator"],["cirucmflex","circumflex"],["cirucular","circular"],["cirucumstance","circumstance"],["cirucumstances","circumstances"],["ciruit","circuit"],["ciruits","circuits"],["cirumflex","circumflex"],["cirumstance","circumstance"],["cirumstances","circumstances"],["civillian","civilian"],["civillians","civilians"],["cjange","change"],["cjanged","changed"],["cjanges","changes"],["cjoice","choice"],["cjoices","choices"],["ckecksum","checksum"],["claaes","classes"],["claculate","calculate"],["claculation","calculation"],["claer","clear"],["claerer","clearer"],["claerly","clearly"],["claibscale","calibscale"],["claime","claim"],["claimes","claims"],["clame","claim"],["claread","cleared"],["clared","cleared"],["clarety","clarity"],["claring","clearing"],["clasic","classic"],["clasical","classical"],["clasically","classically"],["clasification","classification"],["clasified","classified"],["clasifies","classifies"],["clasify","classify"],["clasifying","classifying"],["clasroom","classroom"],["clasrooms","classrooms"],["classess","classes"],["classesss","classes"],["classifcation","classification"],["classifed","classified"],["classifer","classifier"],["classifers","classifiers"],["classificaion","classification"],["classrom","classroom"],["classroms","classrooms"],["classs","class"],["classses","classes"],["clatified","clarified"],["claus","clause"],["clcoksource","clocksource"],["clcosed","closed"],["clea","clean"],["cleaered","cleared"],["cleaing","cleaning"],["cleancacne","cleancache"],["cleaness","cleanness"],["cleanning","cleaning"],["cleannup","cleanup"],["cleanpu","cleanup"],["cleanpus","cleanups"],["cleantup","cleanup"],["cleareance","clearance"],["cleares","clears"],["clearified","clarified"],["clearifies","clarifies"],["clearify","clarify"],["clearifying","clarifying"],["clearling","clearing"],["clearnance","clearance"],["clearnances","clearances"],["clearouput","clearoutput"],["clearted","cleared"],["cleary","clearly"],["cleaup","cleanup"],["cleaups","cleanups"],["cleck","check"],["cleean","clean"],["cleen","clean"],["cleened","cleaned"],["cleens","cleans"],["cleff","clef"],["cleint's","client's"],["cleint","client"],["cleints","clients"],["clened","cleaned"],["clener","cleaner"],["clening","cleaning"],["cler","clear"],["clese","close"],["cleses","closes"],["clevely","cleverly"],["cliboard","clipboard"],["cliboards","clipboards"],["clibpoard","clipboard"],["clibpoards","clipboards"],["cliens","clients"],["cliensite","client-side"],["clienta","client"],["clientelle","clientele"],["clik","click"],["cliks","clicks"],["climer","climber"],["climers","climbers"],["climing","climbing"],["clincial","clinical"],["clinets","clients"],["clinicaly","clinically"],["clipboad","clipboard"],["clipboads","clipboards"],["clipoard","clipboard"],["clipoards","clipboards"],["clipoing","clipping"],["cliuent","client"],["cliuents","clients"],["clloud","cloud"],["cllouded","clouded"],["clloudes","clouds"],["cllouding","clouding"],["cllouds","clouds"],["cloack","cloak"],["cloacks","cloaks"],["cloberring","clobbering"],["clocksourc","clocksource"],["clockw\xEDse","clockwise"],["clock_getttime","clock_gettime"],["cloding","closing"],["cloes","close"],["cloesd","closed"],["cloesed","closed"],["cloesing","closing"],["clonning","cloning"],["clory","glory"],["clos","close"],["closeing","closing"],["closesly","closely"],["closig","closing"],["clossed","closed"],["clossing","closing"],["clossion","collision"],["clossions","collisions"],["cloude","cloud"],["cloudes","clouds"],["cloumn","column"],["cloumns","columns"],["clousre","closure"],["clsoe","close"],["clssroom","classroom"],["clssrooms","classrooms"],["cluase","clause"],["clumn","column"],["clumsly","clumsily"],["cluser","cluster"],["clusetr","cluster"],["clustred","clustered"],["cmak","cmake"],["cmmand","command"],["cmmanded","commanded"],["cmmanding","commanding"],["cmmands","commands"],["cmobination","combination"],["cmoputer","computer"],["cmoputers","computers"],["cna","can"],["cnannel","channel"],["cnat'","can't"],["cnat","can't"],["cnfiguration","configuration"],["cnfigure","configure"],["cnfigured","configured"],["cnfigures","configures"],["cnfiguring","configuring"],["cnosole","console"],["cnosoles","consoles"],["cntain","contain"],["cntains","contains"],["cnter","center"],["co-incided","coincided"],["co-opearte","co-operate"],["co-opeartes","co-operates"],["co-ordinate","coordinate"],["co-ordinates","coordinates"],["coalace","coalesce"],["coalaced","coalesced"],["coalacence","coalescence"],["coalacing","coalescing"],["coalaesce","coalesce"],["coalaesced","coalesced"],["coalaescence","coalescence"],["coalaescing","coalescing"],["coalascece","coalescence"],["coalascence","coalescence"],["coalase","coalesce"],["coalasece","coalescence"],["coalased","coalesced"],["coalasence","coalescence"],["coalases","coalesces"],["coalasing","coalescing"],["coalcece","coalescence"],["coalcence","coalescence"],["coalesc","coalesce"],["coalescsing","coalescing"],["coalesed","coalesced"],["coalesence","coalescence"],["coalessing","coalescing"],["coallate","collate"],["coallates","collates"],["coallating","collating"],["coallece","coalesce"],["coalleced","coalesced"],["coallecence","coalescence"],["coalleces","coalesces"],["coallecing","coalescing"],["coallee","coalesce"],["coalleed","coalesced"],["coalleence","coalescence"],["coallees","coalesces"],["coalleing","coalescing"],["coallesce","coalesce"],["coallesced","coalesced"],["coallesceing","coalescing"],["coallescence","coalescence"],["coallesces","coalesces"],["coallescing","coalescing"],["coallese","coalesce"],["coallesed","coalesced"],["coallesence","coalescence"],["coalleses","coalesces"],["coallesing","coalescing"],["coallesse","coalesce"],["coallessed","coalesced"],["coallessence","coalescence"],["coallesses","coalesces"],["coallessing","coalescing"],["coallision","collision"],["coallisions","collisions"],["coalsce","coalesce"],["coalscece","coalescence"],["coalsced","coalesced"],["coalscence","coalescence"],["coalscing","coalescing"],["coalsece","coalescence"],["coalseced","coalesced"],["coalsecense","coalescence"],["coalsence","coalescence"],["coaslescing","coalescing"],["cobining","combining"],["cobvers","covers"],["coccinele","coccinelle"],["coctail","cocktail"],["cocument","document"],["cocumentation","documentation"],["cocuments","document"],["codeing","coding"],["codepoitn","codepoint"],["codesc","codecs"],["codespel","codespell"],["codesream","codestream"],["codition","condition"],["coditioned","conditioned"],["coditions","conditions"],["codo","code"],["codos","codes"],["coduct","conduct"],["coducted","conducted"],["coducter","conductor"],["coducting","conducting"],["coductor","conductor"],["coducts","conducts"],["coeffcient","coefficient"],["coeffcients","coefficients"],["coefficeint","coefficient"],["coefficeints","coefficients"],["coefficent","coefficient"],["coefficents","coefficients"],["coefficiens","coefficients"],["coefficientss","coefficients"],["coeffiecient","coefficient"],["coeffiecients","coefficients"],["coeffient","coefficient"],["coeffients","coefficients"],["coeficent","coefficient"],["coeficents","coefficients"],["coeficient","coefficient"],["coeficients","coefficients"],["coelesce","coalesce"],["coercable","coercible"],["coerceion","coercion"],["cofeee","coffee"],["cofficient","coefficient"],["cofficients","coefficients"],["cofidence","confidence"],["cofiguration","configuration"],["cofigure","configure"],["cofigured","configured"],["cofigures","configures"],["cofiguring","configuring"],["cofirm","confirm"],["cofirmation","confirmation"],["cofirmations","confirmations"],["cofirmed","confirmed"],["cofirming","confirming"],["cofirms","confirms"],["coform","conform"],["cofrim","confirm"],["cofrimation","confirmation"],["cofrimations","confirmations"],["cofrimed","confirmed"],["cofriming","confirming"],["cofrims","confirms"],["cognizent","cognizant"],["coherance","coherence"],["coherancy","coherency"],["coherant","coherent"],["coherantly","coherently"],["coice","choice"],["coincedentally","coincidentally"],["coinitailize","coinitialize"],["coinside","coincide"],["coinsided","coincided"],["coinsidence","coincidence"],["coinsident","coincident"],["coinsides","coincides"],["coinsiding","coinciding"],["cointain","contain"],["cointained","contained"],["cointaining","containing"],["cointains","contains"],["cokies","cookies"],["colaboration","collaboration"],["colaborations","collaborations"],["colateral","collateral"],["coldplg","coldplug"],["colected","collected"],["colection","collection"],["colections","collections"],["colelction","collection"],["colelctive","collective"],["colerscheme","colorscheme"],["colescing","coalescing"],["colision","collision"],["colission","collision"],["collaberative","collaborative"],["collaction","collection"],["collaobrative","collaborative"],["collaps","collapse"],["collapsable","collapsible"],["collasion","collision"],["collaspe","collapse"],["collasped","collapsed"],["collaspes","collapses"],["collaspible","collapsible"],["collasping","collapsing"],["collationg","collation"],["collborative","collaborative"],["collecing","collecting"],["collecion","collection"],["collecions","collections"],["colleciton","collection"],["collecitons","collections"],["collectin","collection"],["collecton","collection"],["collectons","collections"],["colleection","collection"],["collegue","colleague"],["collegues","colleagues"],["collektion","collection"],["colletion","collection"],["collidies","collides"],["collissions","collisions"],["collistion","collision"],["collistions","collisions"],["colllapses","collapses"],["collocalized","colocalized"],["collonade","colonnade"],["collonies","colonies"],["collony","colony"],["collorscheme","colorscheme"],["collosal","colossal"],["collpase","collapse"],["collpased","collapsed"],["collpases","collapses"],["collpasing","collapsing"],["collsion","collision"],["collsions","collisions"],["collumn","column"],["collumns","columns"],["colmn","column"],["colmns","columns"],["colmuned","columned"],["coloer","color"],["coloeration","coloration"],["coloered","colored"],["coloering","coloring"],["coloers","colors"],["coloful","colorful"],["colomn","column"],["colomns","columns"],["colon-seperated","colon-separated"],["colonizators","colonizers"],["coloringh","coloring"],["colorizoer","colorizer"],["colorpsace","colorspace"],["colorpsaces","colorspaces"],["colose","close"],["coloum","column"],["coloumn","column"],["coloumns","columns"],["coloums","columns"],["colourpsace","colourspace"],["colourpsaces","colourspaces"],["colsed","closed"],["colum","column"],["columm","column"],["colummn","column"],["colummns","columns"],["columms","columns"],["columnn","column"],["columnns","columns"],["columnss","columns"],["columnular","columnar"],["colums","columns"],["columsn","columns"],["colunns","columns"],["comammand","command"],["comamnd","command"],["comamnd-line","command-line"],["comamnded","commanded"],["comamnding","commanding"],["comamndline","commandline"],["comamnds","commands"],["comand","command"],["comand-line","command-line"],["comanded","commanded"],["comanding","commanding"],["comandline","commandline"],["comando","commando"],["comandos","commandos"],["comands","commands"],["comany","company"],["comapany","company"],["comapared","compared"],["comapatibility","compatibility"],["comapatible","compatible"],["comapletion","completion"],["comapnies","companies"],["comapny","company"],["comapre","compare"],["comapring","comparing"],["comaprison","comparison"],["comaptibele","compatible"],["comaptibelities","compatibilities"],["comaptibelity","compatibility"],["comaptible","compatible"],["comarators","comparators"],["comback","comeback"],["combained","combined"],["combanations","combinations"],["combatibility","compatibility"],["combatible","compatible"],["combiantion","combination"],["combiation","combination"],["combiations","combinations"],["combinate","combine"],["combinateion","combination"],["combinateions","combinations"],["combinatins","combinations"],["combinatio","combination"],["combinatios","combinations"],["combinaton","combination"],["combinatorical","combinatorial"],["combinbe","combined"],["combind","combined"],["combinded","combined"],["combiniation","combination"],["combiniations","combinations"],["combinine","combine"],["combintaion","combination"],["combintaions","combinations"],["combusion","combustion"],["comceptually","conceptually"],["comdemnation","condemnation"],["comect","connect"],["comected","connected"],["comecting","connecting"],["comectivity","connectivity"],["comedlib","comedilib"],["comemmorates","commemorates"],["comemoretion","commemoration"],["coment","comment"],["comented","commented"],["comenting","commenting"],["coments","comments"],["comfirm","confirm"],["comflicting","conflicting"],["comformance","conformance"],["comiled","compiled"],["comilers","compilers"],["comination","combination"],["comision","commission"],["comisioned","commissioned"],["comisioner","commissioner"],["comisioning","commissioning"],["comisions","commissions"],["comission","commission"],["comissioned","commissioned"],["comissioner","commissioner"],["comissioning","commissioning"],["comissions","commissions"],["comit","commit"],["comited","committed"],["comitee","committee"],["comiting","committing"],["comits","commits"],["comitted","committed"],["comittee","committee"],["comittees","committees"],["comitter","committer"],["comitting","committing"],["comittish","committish"],["comlain","complain"],["comlained","complained"],["comlainer","complainer"],["comlaining","complaining"],["comlains","complains"],["comlaint","complaint"],["comlaints","complaints"],["comlete","complete"],["comleted","completed"],["comletely","completely"],["comletion","completion"],["comletly","completely"],["comlex","complex"],["comlexity","complexity"],["comlpeter","completer"],["comma-separeted","comma-separated"],["commad","command"],["commadn","command"],["commadn-line","command-line"],["commadnline","commandline"],["commadns","commands"],["commads","commands"],["commandi","command"],["commandoes","commandos"],["commannd","command"],["commans","commands"],["commansd","commands"],["commect","connect"],["commected","connected"],["commecting","connecting"],["commectivity","connectivity"],["commedic","comedic"],["commemerative","commemorative"],["commemmorate","commemorate"],["commemmorating","commemorating"],["commenet","comment"],["commenetd","commented"],["commeneted","commented"],["commenstatus","commentstatus"],["commerical","commercial"],["commerically","commercially"],["commericial","commercial"],["commericially","commercially"],["commerorative","commemorative"],["comming","coming"],["comminication","communication"],["comminity","community"],["comminucating","communicating"],["comminucation","communication"],["commision","commission"],["commisioned","commissioned"],["commisioner","commissioner"],["commisioning","commissioning"],["commisions","commissions"],["commitable","committable"],["commited","committed"],["commitee","committee"],["commiter","committer"],["commiters","committers"],["commitin","committing"],["commiting","committing"],["commitish","committish"],["committ","commit"],["committe","committee"],["committi","committee"],["committis","committees"],["committment","commitment"],["committments","commitments"],["committy","committee"],["commma","comma"],["commma-separated","comma-separated"],["commmand","command"],["commmand-line","command-line"],["commmandline","commandline"],["commmands","commands"],["commmemorated","commemorated"],["commment","comment"],["commmented","commented"],["commmenting","commenting"],["commments","comments"],["commmet","comment"],["commmets","comments"],["commmit","commit"],["commmited","committed"],["commmiting","committing"],["commmits","commits"],["commmitted","committed"],["commmitter","committer"],["commmitters","committers"],["commmitting","committing"],["commmon","common"],["commmunicate","communicate"],["commmunicated","communicated"],["commmunicates","communicates"],["commmunicating","communicating"],["commmunication","communication"],["commmunity","community"],["commna","comma"],["commna-separated","comma-separated"],["commnad","command"],["commnad-line","command-line"],["commnadline","commandline"],["commnads","commands"],["commnand","command"],["commnand-line","command-line"],["commnandline","commandline"],["commnands","commands"],["commnd","command"],["commnd-line","command-line"],["commndline","commandline"],["commnds","commands"],["commnent","comment"],["commnents","comments"],["commnet","comment"],["commnetaries","commentaries"],["commnetary","commentary"],["commnetator","commentator"],["commnetators","commentators"],["commneted","commented"],["commneting","commenting"],["commnets","comments"],["commnication","communication"],["commnities","communities"],["commnity","community"],["commnt","comment"],["commnted","commented"],["commnuative","commutative"],["commnunicating","communicating"],["commnunication","communication"],["commnunity","community"],["commoditiy","commodity"],["commom","common"],["commond","command"],["commongly","commonly"],["commontly","commonly"],["commonweath","commonwealth"],["commpact","compact"],["commpaction","compaction"],["commpare","compare"],["commparisons","comparisons"],["commpatibility","compatibility"],["commpatible","compatible"],["commpessed","compressed"],["commpilation","compilation"],["commpile","compile"],["commpiled","compiled"],["commpiling","compiling"],["commplain","complain"],["commplete","complete"],["commpleted","completed"],["commpletely","completely"],["commpletes","completes"],["commpletion","completion"],["commplex","complex"],["commpliant","compliant"],["commplied","complied"],["commpn","common"],["commponent","component"],["commponents","components"],["commpound","compound"],["commpresd","compressed"],["commpresed","compressed"],["commpresion","compression"],["commpress","compress"],["commpressd","compressed"],["commpressed","compressed"],["commpression","compression"],["commpute","compute"],["commputed","computed"],["commputer","computer"],["commputes","computes"],["commputing","computing"],["commtited","committed"],["commtted","committed"],["commuication","communication"],["commuications","communications"],["commuinications","communications"],["communcated","communicated"],["communcation","communication"],["communcations","communications"],["communciation","communication"],["communiation","communication"],["communicaion","communication"],["communicatie","communication"],["communicaton","communication"],["communitcate","communicate"],["communitcated","communicated"],["communitcates","communicates"],["communitcation","communication"],["communitcations","communications"],["communites","communities"],["communiy","community"],["communiyt","community"],["communuication","communication"],["commutated","commuted"],["commutating","commuting"],["commutive","commutative"],["comnmand","command"],["comnnected","connected"],["comnparing","comparing"],["comnpletion","completion"],["comnpresion","compression"],["comnpress","compress"],["comobobox","combo-box"],["comon","common"],["comonent","component"],["comor","color"],["compability","compatibility"],["compabillity","compatibility"],["compabitiliby","compatibility"],["compabitility","compatibility"],["compagnion","companion"],["compagny","company"],["compaibility","compatibility"],["compain","complain"],["compair","compare"],["compaire","compare"],["compaired","compared"],["compairing","comparing"],["compairison","comparison"],["compairisons","comparisons"],["compairs","compares"],["compansate","compensate"],["compansated","compensated"],["compansates","compensates"],["compansating","compensating"],["compansation","compensation"],["compansations","compensations"],["comparaison","comparison"],["comparare","compare"],["comparasion","comparison"],["comparasions","comparisons"],["comparater","comparator"],["comparation","comparison"],["comparations","comparisons"],["compareable","comparable"],["compareing","comparing"],["compareison","comparison"],["compareisons","comparisons"],["comparements","compartments"],["compariable","comparable"],["comparied","compared"],["comparign","comparing"],["comparigon","comparison"],["comparigons","comparisons"],["compariing","comparing"],["comparion","comparison"],["comparions","comparisons"],["comparios","comparison"],["comparioss","comparisons"],["comparisaion","comparison"],["comparisaions","comparisons"],["comparisation","comparison"],["comparisations","comparisons"],["comparisement","comparison"],["comparisements","comparisons"],["comparisin","comparison"],["comparising","comparing"],["comparisins","comparisons"],["comparision","comparison"],["comparisions","comparisons"],["comparism","comparison"],["comparisment","comparison"],["comparisments","comparisons"],["comparisms","comparisons"],["comparisn","comparison"],["comparisns","comparisons"],["comparispon","comparison"],["comparispons","comparisons"],["comparission","comparison"],["comparissions","comparisons"],["comparisson","comparison"],["comparissons","comparisons"],["comparistion","comparison"],["comparistions","comparisons"],["compariston","comparison"],["comparistons","comparisons"],["comparition","comparison"],["comparitions","comparisons"],["comparititive","comparative"],["comparititively","comparatively"],["comparitive","comparative"],["comparitively","comparatively"],["comparitor","comparator"],["comparitors","comparators"],["comparizon","comparison"],["comparizons","comparisons"],["comparment","compartment"],["comparotor","comparator"],["comparotors","comparators"],["comparre","compare"],["comparsion","comparison"],["comparsions","comparisons"],["compatabable","compatible"],["compatabiity","compatibility"],["compatabile","compatible"],["compatabilities","compatibilities"],["compatability","compatibility"],["compatabillity","compatibility"],["compatabilty","compatibility"],["compatabily","compatibility"],["compatable","compatible"],["compatablility","compatibility"],["compatablities","compatibilities"],["compatablitiy","compatibility"],["compatablity","compatibility"],["compatably","compatibly"],["compataibility","compatibility"],["compataible","compatible"],["compataility","compatibility"],["compatatbility","compatibility"],["compatatble","compatible"],["compatatible","compatible"],["compatator","comparator"],["compatators","comparators"],["compatbile","compatible"],["compatbility","compatibility"],["compatiability","compatibility"],["compatiable","compatible"],["compatiablity","compatibility"],["compatibel","compatible"],["compatibile","compatible"],["compatibiliy","compatibility"],["compatibiltiy","compatibility"],["compatibilty","compatibility"],["compatibily","compatibility"],["compatibity","compatibility"],["compatiblilty","compatibility"],["compatiblities","compatibilities"],["compatiblity","compatibility"],["compation","compaction"],["compatitbility","compatibility"],["compativle","compatible"],["compaytibility","compatibility"],["compeitions","competitions"],["compeletely","completely"],["compelte","complete"],["compeltelyt","completely"],["compeltion","completion"],["compeltly","completely"],["compelx","complex"],["compelxes","complexes"],["compelxities","complexities"],["compelxity","complexity"],["compensantion","compensation"],["compenstate","compensate"],["compenstated","compensated"],["compenstates","compensates"],["competance","competence"],["competant","competent"],["competative","competitive"],["competetive","competitive"],["competions","completions"],["competitiion","competition"],["competive","competitive"],["competiveness","competitiveness"],["compex","complex"],["compfortable","comfortable"],["comphrehensive","comprehensive"],["compiant","compliant"],["compicated","complicated"],["compications","complications"],["compied","compiled"],["compilability","compatibility"],["compilant","compliant"],["compilaton","compilation"],["compilatons","compilations"],["compilcate","complicate"],["compilcated","complicated"],["compilcatedly","complicatedly"],["compilcates","complicates"],["compilcating","complicating"],["compilcation","complication"],["compilcations","complications"],["compileable","compilable"],["compiletime","compile time"],["compiliant","compliant"],["compiliation","compilation"],["compilier","compiler"],["compiliers","compilers"],["compitability","compatibility"],["compitable","compatible"],["compitent","competent"],["compitible","compatible"],["complaing","complaining"],["complanied","complained"],["complate","complete"],["complated","completed"],["complates","completes"],["complating","completing"],["complatly","completely"],["complatness","completeness"],["complats","completes"],["complcated","complicated"],["compleate","complete"],["compleated","completed"],["compleates","completes"],["compleating","completing"],["compleatly","completely"],["compleete","complete"],["compleeted","completed"],["compleetly","completely"],["compleetness","completeness"],["complelely","completely"],["complelte","complete"],["complementt","complement"],["compleness","completeness"],["complession","compression"],["complet","complete"],["completedthe","completed the"],["completeion","completion"],["completelly","completely"],["completelty","completely"],["completelyl","completely"],["completetion","completion"],["completetly","completely"],["completiom","completion"],["completition","completion"],["completley","completely"],["completly","completely"],["completness","completeness"],["complette","complete"],["complettly","completely"],["complety","completely"],["complext","complexity"],["compliace","compliance"],["complianse","compliance"],["compliation","compilation"],["compliations","compilations"],["complied-in","compiled-in"],["complience","compliance"],["complient","compliant"],["complile","compile"],["compliled","compiled"],["compliler","compiler"],["compliles","compiles"],["compliling","compiling"],["compling","compiling"],["complitely","completely"],["complmenet","complement"],["complted","completed"],["compluter","computer"],["compnent","component"],["compnents","components"],["compoennt","component"],["compoent","component"],["compoents","components"],["compoesd","composed"],["compoment","component"],["compoments","components"],["componant","component"],["componants","components"],["componbents","components"],["componding","compounding"],["componeent","component"],["componeents","components"],["componemt","component"],["componemts","components"],["componenet","component"],["componenets","components"],["componens","components"],["componentes","components"],["componet","component"],["componets","components"],["componnents","components"],["componoent","component"],["componoents","components"],["componsites","composites"],["compontent","component"],["compontents","components"],["composablity","composability"],["composibility","composability"],["composiblity","composability"],["composit","composite"],["compositong","compositing"],["composits","composites"],["compount","compound"],["comppatible","compatible"],["comppiler","compiler"],["comppilers","compilers"],["comppliance","compliance"],["comprable","comparable"],["compredded","compressed"],["compresed","compressed"],["compreser","compressor"],["compresers","compressors"],["compreses","compresses"],["compresible","compressible"],["compresing","compressing"],["compresion","compression"],["compresions","compressions"],["compresor","compressor"],["compresors","compressors"],["compressable","compressible"],["compresser","compressor"],["compressers","compressors"],["compresss","compress"],["compresssed","compressed"],["compresssion","compression"],["comprimise","compromise"],["compromize","compromise"],["compromized","compromised"],["compsable","composable"],["compsite","composite"],["comptabile","compatible"],["comptible","compatible"],["comptue","compute"],["compuatation","computation"],["compuation","computation"],["compulsary","compulsory"],["compulsery","compulsory"],["compund","compound"],["compunds","compounds"],["computaion","computation"],["computarized","computerized"],["computaton","computation"],["computtaion","computation"],["computtaions","computations"],["comress","compress"],["comressed","compressed"],["comresses","compresses"],["comressing","compressing"],["comression","compression"],["comrpess","compress"],["comrpessed","compressed"],["comrpesses","compresses"],["comrpessing","compressing"],["comrpession","compression"],["comstraint","constraint"],["comsume","consume"],["comsumed","consumed"],["comsumer","consumer"],["comsumers","consumers"],["comsumes","consumes"],["comsuming","consuming"],["comsumption","consumption"],["comtain","contain"],["comtained","contained"],["comtainer","container"],["comtains","contains"],["comunicate","communicate"],["comunication","communication"],["comunity","community"],["comventions","conventions"],["comverted","converted"],["conain","contain"],["conained","contained"],["conainer","container"],["conainers","containers"],["conaines","contains"],["conaining","containing"],["conains","contains"],["conaint","contain"],["conainted","contained"],["conainter","container"],["conatain","contain"],["conatainer","container"],["conatainers","containers"],["conatains","contains"],["conatin","contain"],["conatined","contained"],["conatiner","container"],["conatiners","containers"],["conatining","containing"],["conatins","contains"],["conbination","combination"],["conbinations","combinations"],["conbtrols","controls"],["concaneted","concatenated"],["concantenated","concatenated"],["concatenaded","concatenated"],["concatenaion","concatenation"],["concatened","concatenated"],["concatentaion","concatenation"],["concatentate","concatenate"],["concatentated","concatenated"],["concatentates","concatenates"],["concatentating","concatenating"],["concatentation","concatenation"],["concatentations","concatenations"],["concatented","concatenated"],["concatinate","concatenate"],["concatinated","concatenated"],["concatination","concatenation"],["concatinations","concatenations"],["concating","concatenating"],["concatonate","concatenate"],["concatonated","concatenated"],["concatonates","concatenates"],["concatonating","concatenating"],["conceed","concede"],["conceedd","conceded"],["concensors","consensus"],["concensus","consensus"],["concentate","concentrate"],["concentated","concentrated"],["concentates","concentrates"],["concentating","concentrating"],["concentation","concentration"],["concentic","concentric"],["concentraze","concentrate"],["concered","concerned"],["concerened","concerned"],["concering","concerning"],["concerntrating","concentrating"],["concicely","concisely"],["concider","consider"],["concidered","considered"],["concidering","considering"],["conciders","considers"],["concieted","conceited"],["concieve","conceive"],["concieved","conceived"],["concious","conscious"],["conciously","consciously"],["conciousness","consciousness"],["concurence","concurrence"],["concurency","concurrency"],["concurent","concurrent"],["concurently","concurrently"],["concurrect","concurrent"],["condamned","condemned"],["condem","condemn"],["condemmed","condemned"],["condfiguration","configuration"],["condfigurations","configurations"],["condfigure","configure"],["condfigured","configured"],["condfigures","configures"],["condfiguring","configuring"],["condict","conduct"],["condicted","conducted"],["condidate","candidate"],["condidates","candidates"],["condident","confident"],["condidential","confidential"],["condidional","conditional"],["condidtion","condition"],["condidtioning","conditioning"],["condidtions","conditions"],["condifurable","configurable"],["condifuration","configuration"],["condifure","configure"],["condifured","configured"],["condig","config"],["condigdialog","configdialog"],["condiiton","condition"],["condionally","conditionally"],["conditial","conditional"],["conditially","conditionally"],["conditialy","conditionally"],["conditianal","conditional"],["conditianally","conditionally"],["conditianaly","conditionally"],["conditionaly","conditionally"],["conditionn","condition"],["conditionnal","conditional"],["conditionnaly","conditionally"],["conditionned","conditioned"],["conditionsof","conditions of"],["conditoinal","conditional"],["conditon","condition"],["conditonal","conditional"],["conditons","conditions"],["condntional","conditional"],["condtiion","condition"],["condtiions","conditions"],["condtion","condition"],["condtional","conditional"],["condtionally","conditionally"],["condtionals","conditionals"],["condtioned","conditioned"],["condtions","conditions"],["condtition","condition"],["condtitional","conditional"],["condtitionals","conditionals"],["condtitions","conditions"],["conecct","connect"],["coneccted","connected"],["coneccting","connecting"],["conecction","connection"],["conecctions","connections"],["conecctivities","connectivities"],["conecctivity","connectivity"],["conecctor","connector"],["conecctors","connectors"],["coneccts","connects"],["conecept","concept"],["conecepts","concepts"],["conecjture","conjecture"],["conecjtures","conjectures"],["conecntrate","concentrate"],["conecntrated","concentrated"],["conecntrates","concentrates"],["conecpt","concept"],["conecpts","concepts"],["conect","connect"],["conected","connected"],["conecting","connecting"],["conection","connection"],["conections","connections"],["conectivities","connectivities"],["conectivity","connectivity"],["conectix","connectix"],["conector","connector"],["conectors","connectors"],["conects","connects"],["conecurrency","concurrency"],["conecutive","consecutive"],["coneect","connect"],["coneected","connected"],["coneecting","connecting"],["coneection","connection"],["coneections","connections"],["coneectivities","connectivities"],["coneectivity","connectivity"],["coneector","connector"],["coneectors","connectors"],["coneects","connects"],["conenct","connect"],["conencted","connected"],["conencting","connecting"],["conenction","connection"],["conenctions","connections"],["conenctivities","connectivities"],["conenctivity","connectivity"],["conenctor","connector"],["conenctors","connectors"],["conencts","connects"],["conenience","convenience"],["conenient","convenient"],["coneninece","convenience"],["coneninet","convenient"],["conent","content"],["conents","contents"],["conergence","convergence"],["conern","concern"],["conerning","concerning"],["conersion","conversion"],["conersions","conversions"],["conert","convert"],["conerted","converted"],["conerter","converter"],["conerters","converters"],["conerting","converting"],["conervative","conservative"],["conesencus","consensus"],["conet","connect"],["coneted","connected"],["coneting","connecting"],["conetion","connection"],["conetions","connections"],["conetivities","connectivities"],["conetivity","connectivity"],["conetnt","content"],["conetor","connector"],["conetors","connectors"],["conets","connects"],["conexant","connexant"],["conferene","conference"],["conferrencing","conferencing"],["confert","convert"],["confety","confetti"],["conffiguration","configuration"],["confgiuration","configuration"],["confgiure","configure"],["confgiured","configured"],["confguration","configuration"],["confgure","configure"],["confgured","configured"],["confict","conflict"],["conficted","conflicted"],["conficts","conflicts"],["confidance","confidence"],["confidantal","confidential"],["confidantally","confidentially"],["confidantals","confidentials"],["confidantial","confidential"],["confidantially","confidentially"],["confidental","confidential"],["confidentally","confidentially"],["confids","confides"],["confifurable","configurable"],["confifuration","configuration"],["confifure","configure"],["confifured","configured"],["configaration","configuration"],["configed","configured"],["configer","configure"],["configiration","configuration"],["configire","configure"],["configiuration","configuration"],["configration","configuration"],["configrations","configurations"],["configred","configured"],["configruation","configuration"],["configruations","configurations"],["configrued","configured"],["configuaration","configuration"],["configuarble","configurable"],["configuare","configure"],["configuared","configured"],["configuarion","configuration"],["configuarions","configurations"],["configuartion","configuration"],["configuartions","configurations"],["configuation","configuration"],["configuations","configurations"],["configue","configure"],["configued","configured"],["configuerd","configured"],["configuered","configured"],["configues","configures"],["configulate","configurate"],["configulation","configuration"],["configulations","configurations"],["configuraion","configuration"],["configuraiton","configuration"],["configuratiens","configurations"],["configuratiom","configuration"],["configurationn","configuration"],["configuratioon","configuration"],["configuratoin","configuration"],["configuratoins","configurations"],["configuraton","configuration"],["configuratons","configurations"],["configuratrions","configurations"],["configuratuion","configuration"],["configureable","configurable"],["configureing","configuring"],["configuretion","configuration"],["configurres","configures"],["configurring","configuring"],["configurses","configures"],["configurtation","configuration"],["configurting","configuring"],["configurtion","configuration"],["configurtoin","configuration"],["configury","configurable"],["configutation","configuration"],["configutations","configurations"],["configute","configure"],["configuted","configured"],["configutes","configures"],["configutration","configuration"],["confim","confirm"],["confimation","confirmation"],["confimations","confirmations"],["confimed","confirmed"],["confiming","confirming"],["confimred","confirmed"],["confims","confirms"],["confiramtion","confirmation"],["confirmacion","confirmation"],["confirmaed","confirmed"],["confirmas","confirms"],["confirmatino","confirmation"],["confirmatinon","confirmation"],["confirmd","confirmed"],["confirmedd","confirmed"],["confirmeed","confirmed"],["confirmming","confirming"],["confiug","config"],["confiugrable","configurable"],["confiugration","configuration"],["confiugrations","configurations"],["confiugre","configure"],["confiugred","configured"],["confiugres","configures"],["confiugring","configuring"],["confiugure","configure"],["conflictin","conflicting"],["conflift","conflict"],["conflit","conflict"],["confoguration","configuration"],["confort","comfort"],["confortable","comfortable"],["confrim","confirm"],["confrimation","confirmation"],["confrimations","confirmations"],["confrimed","confirmed"],["confriming","confirming"],["confrims","confirms"],["confucing","confusing"],["confucion","confusion"],["confuction","conjunction"],["confudion","confusion"],["confue","confuse"],["confued","confused"],["confues","confuses"],["confugiration","configuration"],["confugirble","configurable"],["confugire","configure"],["confugired","configured"],["confugires","configures"],["confugiring","configuring"],["confugrable","configurable"],["confugration","configuration"],["confugre","configure"],["confugred","configured"],["confugres","configures"],["confugring","configuring"],["confugurable","configurable"],["confuguration","configuration"],["confugure","configure"],["confugured","configured"],["confugures","configures"],["confuguring","configuring"],["confuigration","configuration"],["confuigrations","configurations"],["confuing","confusing"],["confunction","conjunction"],["confunder","confounder"],["confunse","confuse"],["confunsed","confused"],["confunses","confuses"],["confunsing","confusing"],["confurable","configurable"],["confuration","configuration"],["confure","configure"],["confured","configured"],["confures","configures"],["confuring","configuring"],["confurse","confuse"],["confursed","confused"],["confurses","confuses"],["confursing","confusing"],["confusting","confusing"],["confuze","confuse"],["confuzed","confused"],["confuzes","confuses"],["confuzing","confusing"],["confuzze","confuse"],["confuzzed","confused"],["confuzzes","confuses"],["confuzzing","confusing"],["congifurable","configurable"],["congifuration","configuration"],["congifure","configure"],["congifured","configured"],["congig","config"],["congigs","configs"],["congiguration","configuration"],["congigurations","configurations"],["congigure","configure"],["congnition","cognition"],["congnitive","cognitive"],["congradulations","congratulations"],["congresional","congressional"],["conider","consider"],["conifguration","configuration"],["conifiguration","configuration"],["conig","config"],["conigurable","configurable"],["conigured","configured"],["conincide","coincide"],["conincidence","coincidence"],["conincident","coincident"],["conincides","coincides"],["coninciding","coinciding"],["coninient","convenient"],["coninstallable","coinstallable"],["coninuation","continuation"],["coninue","continue"],["coninues","continues"],["coninuity","continuity"],["coninuous","continuous"],["conitinue","continue"],["conived","connived"],["conjecutre","conjecture"],["conjonction","conjunction"],["conjonctive","conjunctive"],["conjuction","conjunction"],["conjuctions","conjunctions"],["conjuncion","conjunction"],["conjuntion","conjunction"],["conjuntions","conjunctions"],["conlcude","conclude"],["conlcuded","concluded"],["conlcudes","concludes"],["conlcuding","concluding"],["conlcusion","conclusion"],["conlcusions","conclusions"],["conly","only"],["conmnection","connection"],["conmpress","compress"],["conmpression","compression"],["connaect","connect"],["conncection","connection"],["conncetion","connection"],["connction","connection"],["conncurrent","concurrent"],["connecetd","connected"],["connecion","connection"],["connecions","connections"],["conneciton","connection"],["connecitons","connections"],["connecor","connector"],["connecotr","connector"],["connecstatus","connectstatus"],["connectd","connected"],["connecte","connected"],["connectec","connected"],["connectes","connects"],["connectet","connected"],["connectibity","connectivity"],["connectino","connection"],["connectinos","connections"],["connectins","connections"],["connectiom","connection"],["connectioms","connections"],["connectiona","connection"],["connectionas","connections"],["connectiviy","connectivity"],["connectivty","connectivity"],["connecto","connect"],["connectted","connected"],["connecttion","connection"],["conneection","connection"],["conneiction","connection"],["connektors","connectors"],["connetced","connected"],["connetcion","connection"],["conneted","connected"],["Conneticut","Connecticut"],["connetion","connection"],["connetor","connector"],["connexion","connection"],["connnect","connect"],["connnected","connected"],["connnecting","connecting"],["connnection","connection"],["connnections","connections"],["connnects","connects"],["connot","cannot"],["connstrain","constrain"],["connstrained","constrained"],["connstraint","constraint"],["conntents","contents"],["conntroller","controller"],["conosuer","connoisseur"],["conotation","connotation"],["conotations","connotations"],["conotrol","control"],["conotroled","controlled"],["conotroling","controlling"],["conotrolled","controlled"],["conotrols","controls"],["conpares","compares"],["conplete","complete"],["conpleted","completed"],["conpletes","completes"],["conpleting","completing"],["conpletion","completion"],["conquerd","conquered"],["conquerer","conqueror"],["conquerers","conquerors"],["conqured","conquered"],["conrete","concrete"],["conrol","control"],["conroller","controller"],["conrrespond","correspond"],["conrrespondence","correspondence"],["conrrespondences","correspondences"],["conrrespondent","correspondent"],["conrrespondents","correspondents"],["conrresponding","corresponding"],["conrrespondingly","correspondingly"],["conrresponds","corresponds"],["conrrol","control"],["conrrupt","corrupt"],["conrruptable","corruptible"],["conrrupted","corrupted"],["conrruptible","corruptible"],["conrruption","corruption"],["conrruptions","corruptions"],["conrrupts","corrupts"],["conrtib","contrib"],["conrtibs","contribs"],["consants","constants"],["conscent","consent"],["consciencious","conscientious"],["consciouness","consciousness"],["consctruct","construct"],["consctructed","constructed"],["consctructing","constructing"],["consctruction","construction"],["consctructions","constructions"],["consctructive","constructive"],["consctructor","constructor"],["consctructors","constructors"],["consctructs","constructs"],["consdider","consider"],["consdidered","considered"],["consdiered","considered"],["consdired","considered"],["conseat","conceit"],["conseated","conceited"],["consective","consecutive"],["consectively","consecutively"],["consectutive","consecutive"],["consectuve","consecutive"],["consecuitively","consecutively"],["conseed","concede"],["conseedd","conceded"],["conseeded","conceded"],["conseeds","concedes"],["consenquently","consequently"],["consensis","consensus"],["consentrate","concentrate"],["consentrated","concentrated"],["consentrates","concentrates"],["consept","concept"],["consepts","concepts"],["consequentely","consequently"],["consequentually","consequently"],["consequeseces","consequences"],["consequetive","consecutive"],["consequtive","consecutive"],["consequtively","consecutively"],["consern","concern"],["conserned","concerned"],["conserning","concerning"],["conservativeky","conservatively"],["conservitive","conservative"],["consestently","consistently"],["consevible","conceivable"],["consiciousness","consciousness"],["consicousness","consciousness"],["considder","consider"],["considderation","consideration"],["considdered","considered"],["considdering","considering"],["considerd","considered"],["consideren","considered"],["considerion","consideration"],["considerions","considerations"],["considred","considered"],["consier","consider"],["consiers","considers"],["consifer","consider"],["consifered","considered"],["consious","conscious"],["consisant","consistent"],["consisent","consistent"],["consisently","consistently"],["consisntency","consistency"],["consistancy","consistency"],["consistant","consistent"],["consistantly","consistently"],["consisten","consistent"],["consistend","consistent"],["consistendly","consistently"],["consistendt","consistent"],["consistendtly","consistently"],["consistenly","consistently"],["consistuents","constituents"],["consit","consist"],["consitant","consistent"],["consited","consisted"],["consitency","consistency"],["consitent","consistent"],["consitently","consistently"],["consiting","consisting"],["consitional","conditional"],["consits","consists"],["consituencies","constituencies"],["consituency","constituency"],["consituent","constituent"],["consituents","constituents"],["consitute","constitute"],["consituted","constituted"],["consitutes","constitutes"],["consituting","constituting"],["consitution","constitution"],["consitutional","constitutional"],["consitutuent","constituent"],["consitutuents","constituents"],["consitutute","constitute"],["consitututed","constituted"],["consitututes","constitutes"],["consitututing","constituting"],["consntant","constant"],["consntantly","constantly"],["consntants","constants"],["consol","console"],["consolodate","consolidate"],["consolodated","consolidated"],["consonent","consonant"],["consonents","consonants"],["consorcium","consortium"],["conspiracys","conspiracies"],["conspiriator","conspirator"],["consquence","consequence"],["consquences","consequences"],["consquent","consequent"],["consquently","consequently"],["consrtuct","construct"],["consrtucted","constructed"],["consrtuctor","constructor"],["consrtuctors","constructors"],["consrtucts","constructs"],["consruction","construction"],["consructions","constructions"],["consructor","constructor"],["consructors","constructors"],["constaint","constraint"],["constainted","constrained"],["constaints","constraints"],["constallation","constellation"],["constallations","constellations"],["constan","constant"],["constanly","constantly"],["constantsm","constants"],["constarin","constrain"],["constarint","constraint"],["constarints","constraints"],["constarnation","consternation"],["constatn","constant"],["constatnt","constant"],["constatnts","constants"],["constcurts","constructs"],["constext","context"],["consting","consisting"],["constinually","continually"],["constistency","consistency"],["constists","consists"],["constitently","consistently"],["constituant","constituent"],["constituants","constituents"],["constitue","constitute"],["constitues","constitutes"],["constituion","constitution"],["constituional","constitutional"],["constitutent","constituent"],["constitutents","constituents"],["constly","costly"],["constract","construct"],["constracted","constructed"],["constractor","constructor"],["constractors","constructors"],["constrainsts","constraints"],["constrainted","constrained"],["constraintes","constraints"],["constrainting","constraining"],["constrait","constraint"],["constraits","constraints"],["constrans","constrains"],["constrant","constraint"],["constrants","constraints"],["constrast","contrast"],["constrasts","contrasts"],["constratints","constraints"],["constraucts","constructs"],["constrcuct","construct"],["constrcut","construct"],["constrcuted","constructed"],["constrcution","construction"],["constrcutor","constructor"],["constrcutors","constructors"],["constrcuts","constructs"],["constriants","constraints"],["constrint","constraint"],["constrints","constraints"],["constrollers","controllers"],["construc","construct"],["construces","constructs"],["construcing","constructing"],["construcion","construction"],["construciton","construction"],["construcor","constructor"],["construcs","constructs"],["constructcor","constructor"],["constructer","constructor"],["constructers","constructors"],["constructes","constructs"],["constructred","constructed"],["constructt","construct"],["constructted","constructed"],["constructting","constructing"],["constructtor","constructor"],["constructtors","constructors"],["constructts","constructs"],["constructued","constructed"],["constructur","constructor"],["constructure","constructor"],["constructurs","constructors"],["construktor","constructor"],["construnctor","constructor"],["construrtors","constructors"],["construst","construct"],["construsts","constructs"],["construt","construct"],["construtced","constructed"],["construter","constructor"],["construters","constructors"],["constrution","construction"],["construtor","constructor"],["construtors","constructors"],["consttruct","construct"],["consttructer","constructor"],["consttructers","constructors"],["consttruction","construction"],["consttructor","constructor"],["consttructors","constructors"],["constuct","construct"],["constucted","constructed"],["constucter","constructor"],["constucters","constructors"],["constucting","constructing"],["constuction","construction"],["constuctions","constructions"],["constuctor","constructor"],["constuctors","constructors"],["constucts","constructs"],["consturct","construct"],["consturctor","constructor"],["consuder","consider"],["consuemr","consumer"],["consulant","consultant"],["consultunt","consultant"],["consumate","consummate"],["consumated","consummated"],["consumating","consummating"],["consummed","consumed"],["consummer","consumer"],["consummers","consumers"],["consumtion","consumption"],["contacentaion","concatenation"],["contagen","contagion"],["contaienr","container"],["contaier","container"],["contails","contains"],["contaiminate","contaminate"],["contaiminated","contaminated"],["contaiminating","contaminating"],["containa","contain"],["containees","containers"],["containerr","container"],["containg","containing"],["containging","containing"],["containig","containing"],["containings","containing"],["containining","containing"],["containint","containing"],["containn","contain"],["containner","container"],["containners","containers"],["containns","contains"],["containr","container"],["containrs","containers"],["containted","contained"],["containter","container"],["containters","containers"],["containting","containing"],["containts","contains"],["containuations","continuations"],["contais","contains"],["contaisn","contains"],["contaiun","contain"],["contamporaries","contemporaries"],["contamporary","contemporary"],["contan","contain"],["contaned","contained"],["contanined","contained"],["contaning","containing"],["contanins","contains"],["contans","contains"],["contary","contrary"],["contatenated","concatenated"],["contatining","containing"],["contein","contain"],["conteined","contained"],["conteining","containing"],["conteins","contains"],["contempoary","contemporary"],["contemporaneus","contemporaneous"],["contempory","contemporary"],["conten","contain"],["contence","contents"],["contendor","contender"],["contener","container"],["conteners","containers"],["contenht","content"],["content-negatiotiation","content-negotiation"],["content-negoatiation","content-negotiation"],["content-negoation","content-negotiation"],["content-negociation","content-negotiation"],["content-negogtiation","content-negotiation"],["content-negoitation","content-negotiation"],["content-negoptionsotiation","content-negotiation"],["content-negosiation","content-negotiation"],["content-negotaiation","content-negotiation"],["content-negotaition","content-negotiation"],["content-negotatiation","content-negotiation"],["content-negotation","content-negotiation"],["content-negothiation","content-negotiation"],["content-negotication","content-negotiation"],["content-negotioation","content-negotiation"],["content-negotion","content-negotiation"],["content-negotionation","content-negotiation"],["content-negotiotation","content-negotiation"],["content-negotitaion","content-negotiation"],["content-negotitation","content-negotiation"],["content-negotition","content-negotiation"],["content-negoziation","content-negotiation"],["contentended","contended"],["contentn","content"],["contentss","contents"],["contermporaneous","contemporaneous"],["conterpart","counterpart"],["conterparts","counterparts"],["contersink","countersink"],["contex","context"],["contexta","context"],["contexual","contextual"],["contiains","contains"],["contian","contain"],["contianed","contained"],["contianer","container"],["contianers","containers"],["contianing","containing"],["contians","contains"],["contibute","contribute"],["contibuted","contributed"],["contibutes","contributes"],["contibutor","contributor"],["contigent","contingent"],["contigious","contiguous"],["contigiously","contiguously"],["contignuous","contiguous"],["contigous","contiguous"],["contiguious","contiguous"],["contiguities","continuities"],["contiguos","contiguous"],["contiguous-non","non-contiguous"],["continaing","containing"],["contination","continuation"],["contined","continued"],["continential","continental"],["continging","containing"],["contingous","contiguous"],["continguous","contiguous"],["continious","continuous"],["continiously","continuously"],["continoue","continue"],["continouos","continuous"],["continous","continuous"],["continously","continuously"],["continueing","continuing"],["continuely","continually"],["continuem","continuum"],["continuos","continuous"],["continuosly","continuously"],["continure","continue"],["continusly","continuously"],["continuting","continuing"],["contious","continuous"],["contiously","continuously"],["contiuation","continuation"],["contiue","continue"],["contiuguous","contiguous"],["contiuing","continuing"],["contniue","continue"],["contniued","continued"],["contniues","continues"],["contnt","content"],["contol","control"],["contoler","controller"],["contoller","controller"],["contollers","controllers"],["contolls","controls"],["contols","controls"],["contongency","contingency"],["contorl","control"],["contorled","controlled"],["contorls","controls"],["contoroller","controller"],["contraciction","contradiction"],["contracictions","contradictions"],["contracition","contradiction"],["contracitions","contradictions"],["contracter","contractor"],["contracters","contractors"],["contradically","contradictory"],["contradictary","contradictory"],["contrain","constrain"],["contrainers","containers"],["contraining","constraining"],["contraint","constraint"],["contrainted","constrained"],["contraints","constraints"],["contraitns","constraints"],["contraveining","contravening"],["contravercial","controversial"],["contraversy","controversy"],["contrbution","contribution"],["contribte","contribute"],["contribted","contributed"],["contribtes","contributes"],["contributer","contributor"],["contributers","contributors"],["contries","countries"],["contrinution","contribution"],["contrinutions","contributions"],["contritutions","contributions"],["contriubte","contribute"],["contriubted","contributed"],["contriubtes","contributes"],["contriubting","contributing"],["contriubtion","contribution"],["contriubtions","contributions"],["contrl","control"],["contrller","controller"],["contro","control"],["controlable","controllable"],["controled","controlled"],["controlelrs","controllers"],["controler","controller"],["controlers","controllers"],["controling","controlling"],["controll","control"],["controllerd","controlled"],["controllled","controlled"],["controlller","controller"],["controlllers","controllers"],["controllling","controlling"],["controllor","controller"],["controlls","controls"],["contronl","control"],["contronls","controls"],["controoler","controller"],["controvercial","controversial"],["controvercy","controversy"],["controveries","controversies"],["controversal","controversial"],["controversey","controversy"],["controversials","controversial"],["controvertial","controversial"],["controvery","controversy"],["contrrol","control"],["contrrols","controls"],["contrst","contrast"],["contrsted","contrasted"],["contrsting","contrasting"],["contrsts","contrasts"],["contrtoller","controller"],["contruct","construct"],["contructed","constructed"],["contructing","constructing"],["contruction","construction"],["contructions","constructions"],["contructor","constructor"],["contructors","constructors"],["contructs","constructs"],["contry","country"],["contryie","countryie"],["contsruction","construction"],["contsructor","constructor"],["contstant","constant"],["contstants","constants"],["contstraint","constraint"],["contstructing","constructing"],["contstruction","construction"],["contstructor","constructor"],["contstructors","constructors"],["contur","contour"],["contzains","contains"],["conuntry","country"],["conusmer","consumer"],["convaless","convalesce"],["convax","convex"],["convaxiity","convexity"],["convaxly","convexly"],["convaxness","convexness"],["conveinence","convenience"],["conveinences","conveniences"],["conveinent","convenient"],["conveinience","convenience"],["conveinient","convenient"],["convenant","covenant"],["conveneince","convenience"],["conveniance","convenience"],["conveniant","convenient"],["conveniantly","conveniently"],["convenince","convenience"],["conveninent","convenient"],["convense","convince"],["convential","conventional"],["conventient","convenient"],["convenvient","convenient"],["conver","convert"],["convereted","converted"],["convergance","convergence"],["converion","conversion"],["converions","conversions"],["converison","conversion"],["converitble","convertible"],["conversly","conversely"],["conversoin","conversion"],["converson","conversion"],["conversons","conversions"],["converssion","conversion"],["converst","convert"],["convertable","convertible"],["convertables","convertibles"],["convertet","converted"],["convertion","conversion"],["convertions","conversions"],["convery","convert"],["convesion","conversion"],["convesions","conversions"],["convet","convert"],["conveted","converted"],["conveter","converter"],["conveters","converters"],["conveting","converting"],["convetion","convention"],["convetions","conventions"],["convets","converts"],["conveyer","conveyor"],["conviced","convinced"],["conviencece","convenience"],["convienence","convenience"],["convienent","convenient"],["convienience","convenience"],["convienient","convenient"],["convieniently","conveniently"],["conviently","conveniently"],["conviguration","configuration"],["convigure","configure"],["convination","combination"],["convine","combine"],["convineance","convenience"],["convineances","conveniences"],["convineient","convenient"],["convinence","convenience"],["convinences","conveniences"],["convinent","convenient"],["convinently","conveniently"],["conviniance","convenience"],["conviniances","conveniences"],["convinience","convenience"],["conviniences","conveniences"],["conviniency","convenience"],["conviniencys","conveniences"],["convinient","convenient"],["conviniently","conveniently"],["convining","combining"],["convinve","convince"],["convinved","convinced"],["convinving","convincing"],["convirted","converted"],["convirting","converting"],["convised","convinced"],["convoultion","convolution"],["convoultions","convolutions"],["convovle","convolve"],["convovled","convolved"],["convovling","convolving"],["convrt","convert"],["convserion","conversion"],["conyak","cognac"],["coodinate","coordinate"],["coodinates","coordinates"],["coodrinate","coordinate"],["coodrinates","coordinates"],["cooefficient","coefficient"],["cooefficients","coefficients"],["cooger","cougar"],["cookoo","cuckoo"],["coolent","coolant"],["coolot","culotte"],["coolots","culottes"],["coomand","command"],["coommand","command"],["coomon","common"],["coonstantly","constantly"],["coonstructed","constructed"],["cooordinate","coordinate"],["cooordinates","coordinates"],["coopearte","cooperate"],["coopeartes","cooperates"],["cooporative","cooperative"],["coordanate","coordinate"],["coordanates","coordinates"],["coordenate","coordinate"],["coordenates","coordinates"],["coordiante","coordinate"],["coordiantes","coordinates"],["coordiantion","coordination"],["coordiate","coordinate"],["coordiates","coordinates"],["coordiinates","coordinates"],["coordinatess","coordinates"],["coordinats","coordinates"],["coordindate","coordinate"],["coordindates","coordinates"],["coordine","coordinate"],["coordines","coordinates"],["coording","according"],["coordingate","coordinate"],["coordingates","coordinates"],["coordingly","accordingly"],["coordiniate","coordinate"],["coordiniates","coordinates"],["coordinite","coordinate"],["coordinites","coordinates"],["coordinnate","coordinate"],["coordinnates","coordinates"],["coordintae","coordinate"],["coordintaes","coordinates"],["coordintate","coordinate"],["coordintates","coordinates"],["coordinte","coordinate"],["coordintes","coordinates"],["coorditate","coordinate"],["coordonate","coordinate"],["coordonated","coordinated"],["coordonates","coordinates"],["coorespond","correspond"],["cooresponded","corresponded"],["coorespondend","correspondent"],["coorespondent","correspondent"],["cooresponding","corresponding"],["cooresponds","corresponds"],["cooridate","coordinate"],["cooridated","coordinated"],["cooridates","coordinates"],["cooridnate","coordinate"],["cooridnated","coordinated"],["cooridnates","coordinates"],["coorinate","coordinate"],["coorinates","coordinates"],["coorination","coordination"],["cootdinate","coordinate"],["cootdinated","coordinated"],["cootdinates","coordinates"],["cootdinating","coordinating"],["cootdination","coordination"],["copeing","copying"],["copiese","copies"],["copiing","copying"],["copiler","compiler"],["coplete","complete"],["copleted","completed"],["copletely","completely"],["copletes","completes"],["copmetitors","competitors"],["copmilation","compilation"],["copmonent","component"],["copmutations","computations"],["copntroller","controller"],["coponent","component"],["copoying","copying"],["coppermines","coppermine"],["coppied","copied"],["copright","copyright"],["coprighted","copyrighted"],["coprights","copyrights"],["coproccessor","coprocessor"],["coproccessors","coprocessors"],["coprocesor","coprocessor"],["coprorate","corporate"],["coprorates","corporates"],["coproration","corporation"],["coprorations","corporations"],["coprright","copyright"],["coprrighted","copyrighted"],["coprrights","copyrights"],["copstruction","construction"],["copuright","copyright"],["copurighted","copyrighted"],["copurights","copyrights"],["copute","compute"],["coputed","computed"],["coputer","computer"],["coputes","computes"],["copver","cover"],["copyed","copied"],["copyeight","copyright"],["copyeighted","copyrighted"],["copyeights","copyrights"],["copyied","copied"],["copyrigth","copyright"],["copyrigthed","copyrighted"],["copyrigths","copyrights"],["copyritght","copyright"],["copyritghted","copyrighted"],["copyritghts","copyrights"],["copyrught","copyright"],["copyrughted","copyrighted"],["copyrughts","copyrights"],["copys","copies"],["copytight","copyright"],["copytighted","copyrighted"],["copytights","copyrights"],["copyting","copying"],["corale","chorale"],["cordinate","coordinate"],["cordinates","coordinates"],["cordoroy","corduroy"],["cordump","coredump"],["corecct","correct"],["corecctly","correctly"],["corect","correct"],["corected","corrected"],["corecting","correcting"],["corection","correction"],["corectly","correctly"],["corectness","correctness"],["corects","corrects"],["coreespond","correspond"],["coregated","corrugated"],["corelate","correlate"],["corelated","correlated"],["corelates","correlates"],["corellation","correlation"],["coreolis","Coriolis"],["corerct","correct"],["corerctly","correctly"],["corespond","correspond"],["coresponded","corresponded"],["corespondence","correspondence"],["coresponding","corresponding"],["coresponds","corresponds"],["corfirms","confirms"],["coridal","cordial"],["corispond","correspond"],["cornmitted","committed"],["corordinate","coordinate"],["corordinates","coordinates"],["corordination","coordination"],["corosbonding","corresponding"],["corosion","corrosion"],["corospond","correspond"],["corospondance","correspondence"],["corosponded","corresponded"],["corospondence","correspondence"],["corosponding","corresponding"],["corosponds","corresponds"],["corousel","carousel"],["corparate","corporate"],["corperations","corporations"],["corpration","corporation"],["corproration","corporation"],["corprorations","corporations"],["corrcect","correct"],["corrct","correct"],["corrdinate","coordinate"],["corrdinated","coordinated"],["corrdinates","coordinates"],["corrdinating","coordinating"],["corrdination","coordination"],["corrdinator","coordinator"],["corrdinators","coordinators"],["correclty","correctly"],["correcly","correctly"],["correcpond","correspond"],["correcponded","corresponded"],["correcponding","corresponding"],["correcponds","corresponds"],["correcs","corrects"],["correctably","correctable"],["correctely","correctly"],["correcters","correctors"],["correctlly","correctly"],["correctnes","correctness"],["correcton","correction"],["correctons","corrections"],["correcttness","correctness"],["correctures","correctors"],["correcty","correctly"],["correctyly","correctly"],["correcxt","correct"],["correcy","correct"],["correect","correct"],["correectly","correctly"],["correespond","correspond"],["correesponded","corresponded"],["correespondence","correspondence"],["correespondences","correspondences"],["correespondent","correspondent"],["correesponding","corresponding"],["correesponds","corresponds"],["correlasion","correlation"],["correlatd","correlated"],["correllate","correlate"],["correllation","correlation"],["correllations","correlations"],["correnspond","correspond"],["corrensponded","corresponded"],["correnspondence","correspondence"],["correnspondences","correspondences"],["correnspondent","correspondent"],["correnspondents","correspondents"],["corrensponding","corresponding"],["corrensponds","corresponds"],["correograph","choreograph"],["correponding","corresponding"],["correponds","corresponds"],["correponsing","corresponding"],["correposding","corresponding"],["correpsondence","correspondence"],["correpsonding","corresponding"],["corresond","correspond"],["corresonded","corresponded"],["corresonding","corresponding"],["corresonds","corresponds"],["correspdoning","corresponding"],["correspending","corresponding"],["correspinding","corresponding"],["correspnding","corresponding"],["correspodence","correspondence"],["correspoding","corresponding"],["correspoinding","corresponding"],["correspomd","correspond"],["correspomded","corresponded"],["correspomdence","correspondence"],["correspomdences","correspondences"],["correspomdent","correspondent"],["correspomdents","correspondents"],["correspomding","corresponding"],["correspomds","corresponds"],["correspon","correspond"],["correspondance","correspondence"],["correspondances","correspondences"],["correspondant","correspondent"],["correspondants","correspondents"],["correspondd","corresponded"],["correspondend","correspondent"],["correspondes","corresponds"],["correspondg","corresponding"],["correspondig","corresponding"],["corresponed","corresponded"],["corresponging","corresponding"],["corresponing","corresponding"],["correspons","corresponds"],["corresponsding","corresponding"],["corresponsing","corresponding"],["correspont","correspond"],["correspontence","correspondence"],["correspontences","correspondences"],["correspontend","correspondent"],["correspontent","correspondent"],["correspontents","correspondents"],["corresponting","corresponding"],["corresponts","corresponds"],["correspoond","correspond"],["corressponding","corresponding"],["corret","correct"],["correted","corrected"],["corretion","correction"],["corretly","correctly"],["corridoor","corridor"],["corridoors","corridors"],["corrispond","correspond"],["corrispondant","correspondent"],["corrispondants","correspondents"],["corrisponded","corresponded"],["corrispondence","correspondence"],["corrispondences","correspondences"],["corrisponding","corresponding"],["corrisponds","corresponds"],["corrleation","correlation"],["corrleations","correlations"],["corrolated","correlated"],["corrolates","correlates"],["corrolation","correlation"],["corrolations","correlations"],["corrrect","correct"],["corrrected","corrected"],["corrrecting","correcting"],["corrrection","correction"],["corrrections","corrections"],["corrrectly","correctly"],["corrrectness","correctness"],["corrrects","corrects"],["corrresponding","corresponding"],["corrresponds","corresponds"],["corrrupt","corrupt"],["corrrupted","corrupted"],["corrruption","corruption"],["corrseponding","corresponding"],["corrspond","correspond"],["corrsponded","corresponded"],["corrsponding","corresponding"],["corrsponds","corresponds"],["corrupeted","corrupted"],["corruptable","corruptible"],["corruptiuon","corruption"],["cors-site","cross-site"],["cors-sute","cross-site"],["corse","course"],["corsor","cursor"],["corss-compiling","cross-compiling"],["corss-site","cross-site"],["corss-sute","cross-site"],["corsshair","crosshair"],["corsshairs","crosshairs"],["corssite","cross-site"],["corsssite","cross-site"],["corsssute","cross-site"],["corssute","cross-site"],["corupt","corrupt"],["corupted","corrupted"],["coruption","corruption"],["coruptions","corruptions"],["corupts","corrupts"],["corus","chorus"],["corvering","covering"],["cosed","closed"],["cosnsrain","constrain"],["cosnsrained","constrained"],["cosntitutive","constitutive"],["cosntrain","constrain"],["cosntrained","constrained"],["cosntraining","constraining"],["cosntraint","constraint"],["cosntraints","constraints"],["cosntructed","constructed"],["cosntructor","constructor"],["cosnumer","consumer"],["cosolation","consolation"],["cosole","console"],["cosoled","consoled"],["cosoles","consoles"],["cosoling","consoling"],["costant","constant"],["costexpr","constexpr"],["costitution","constitution"],["costruct","construct"],["costructer","constructor"],["costructor","constructor"],["costumary","customary"],["costumize","customize"],["cotain","contain"],["cotained","contained"],["cotainer","container"],["cotains","contains"],["cotave","octave"],["cotaves","octaves"],["cotnain","contain"],["cotnained","contained"],["cotnainer","container"],["cotnainers","containers"],["cotnaining","containing"],["cotnains","contains"],["cotranser","cotransfer"],["cotrasferred","cotransferred"],["cotrasfers","cotransfers"],["cotrol","control"],["cotroll","control"],["cotrolled","controlled"],["cotroller","controller"],["cotrolles","controls"],["cotrolling","controlling"],["cotrolls","controls"],["cotrols","controls"],["cotten","cotton"],["coucil","council"],["coud","could"],["coudn't","couldn't"],["coudnt","couldn't"],["coul","could"],["could'nt","couldn't"],["could't","couldn't"],["couldent","couldn't"],["coulden`t","couldn't"],["couldn;t","couldn't"],["couldnt'","couldn't"],["couldnt","couldn't"],["couldnt;","couldn't"],["coulmns","columns"],["couln't","couldn't"],["couloumb","coulomb"],["coult","could"],["coummunities","communities"],["coummunity","community"],["coumpound","compound"],["coumpounds","compounds"],["counded","counted"],["counding","counting"],["coundition","condition"],["counds","counts"],["counld","could"],["counpound","compound"],["counpounds","compounds"],["countain","contain"],["countainer","container"],["countainers","containers"],["countains","contains"],["counterfit","counterfeit"],["counterfits","counterfeits"],["counterintuive","counter intuitive"],["countermeausure","countermeasure"],["countermeausures","countermeasures"],["counterpar","counterpart"],["counterpoart","counterpart"],["counterpoarts","counterparts"],["countinue","continue"],["courtesey","courtesy"],["cousing","cousin"],["couted","counted"],["couter","counter"],["coutermeasuere","countermeasure"],["coutermeasueres","countermeasures"],["coutermeasure","countermeasure"],["coutermeasures","countermeasures"],["couterpart","counterpart"],["couting","counting"],["coutner","counter"],["coutners","counters"],["couuld","could"],["couuldn't","couldn't"],["covarage","coverage"],["covarages","coverages"],["covarege","coverage"],["covection","convection"],["covention","convention"],["coventions","conventions"],["coverd","covered"],["covere","cover"],["coveres","covers"],["covergence","convergence"],["coverred","covered"],["coversion","conversion"],["coversions","conversions"],["coverting","converting"],["covnersion","conversion"],["covnert","convert"],["covnerted","converted"],["covnerter","converter"],["covnerters","converters"],["covnertible","convertible"],["covnerting","converting"],["covnertor","converter"],["covnertors","converters"],["covnerts","converts"],["covriance","covariance"],["covriate","covariate"],["covriates","covariates"],["coyp","copy"],["coypright","copyright"],["coyprighted","copyrighted"],["coyprights","copyrights"],["coyright","copyright"],["coyrighted","copyrighted"],["coyrights","copyrights"],["cpacities","capacities"],["cpacity","capacity"],["cpation","caption"],["cpcheck","cppcheck"],["cpontent","content"],["cppp","cpp"],["cpuld","could"],["craced","graced"],["craceful","graceful"],["cracefully","gracefully"],["cracefulness","gracefulness"],["craceless","graceless"],["cracing","gracing"],["crahed","crashed"],["crahes","crashes"],["crahses","crashes"],["crashaes","crashes"],["crasheed","crashed"],["crashees","crashes"],["crashess","crashes"],["crashign","crashing"],["crashs","crashes"],["crationist","creationist"],["crationists","creationists"],["creaate","create"],["creadential","credential"],["creadentialed","credentialed"],["creadentials","credentials"],["creaed","created"],["creaeted","created"],["creasoat","creosote"],["creastor","creator"],["creatation","creation"],["createa","create"],["createable","creatable"],["createdd","created"],["createing","creating"],["createive","creative"],["creatning","creating"],["creatre","create"],["creatred","created"],["creats","creates"],["credate","created"],["credetial","credential"],["credetials","credentials"],["credidential","credential"],["credidentials","credentials"],["credintial","credential"],["credintials","credentials"],["credis","credits"],["credists","credits"],["creditted","credited"],["creedence","credence"],["cresent","crescent"],["cresits","credits"],["cretae","create"],["cretaed","created"],["cretaes","creates"],["cretaing","creating"],["cretate","create"],["cretated","created"],["cretates","creates"],["cretating","creating"],["cretator","creator"],["cretators","creators"],["creted","created"],["creteria","criteria"],["crewsant","croissant"],["cricital","critical"],["cricitally","critically"],["cricitals","criticals"],["crirical","critical"],["crirically","critically"],["criricals","criticals"],["critcal","critical"],["critcally","critically"],["critcals","criticals"],["critcial","critical"],["critcially","critically"],["critcials","criticals"],["criteak","critique"],["critera","criteria"],["critereon","criterion"],["criterias","criteria"],["criteriom","criterion"],["criticial","critical"],["criticially","critically"],["criticials","criticals"],["criticists","critics"],["critiera","criteria"],["critiical","critical"],["critiically","critically"],["critiicals","criticals"],["critisising","criticising"],["critisism","criticism"],["critisisms","criticisms"],["critized","criticized"],["critizing","criticizing"],["croch","crotch"],["crockadile","crocodile"],["crockodiles","crocodiles"],["cronological","chronological"],["cronologically","chronologically"],["croppped","cropped"],["cros","cross"],["cros-site","cross-site"],["cros-sute","cross-site"],["croshet","crochet"],["crosreference","cross-reference"],["crosreferenced","cross-referenced"],["crosreferences","cross-references"],["cross-commpilation","cross-compilation"],["cross-orgin","cross-origin"],["crossgne","crossgen"],["crossin","crossing"],["crossite","cross-site"],["crossreference","cross-reference"],["crossreferenced","cross-referenced"],["crossreferences","cross-references"],["crosssite","cross-site"],["crosssute","cross-site"],["crossute","cross-site"],["crowdsigna","crowdsignal"],["crowkay","croquet"],["crowm","crown"],["crrespond","correspond"],["crsytal","crystal"],["crsytalline","crystalline"],["crsytallisation","crystallisation"],["crsytallise","crystallise"],["crsytallization","crystallization"],["crsytallize","crystallize"],["crsytallographic","crystallographic"],["crsytals","crystals"],["crtical","critical"],["crtically","critically"],["crticals","criticals"],["crticised","criticised"],["crucialy","crucially"],["crucifiction","crucifixion"],["cruncing","crunching"],["crurrent","current"],["crusies","cruises"],["crusor","cursor"],["crutial","crucial"],["crutially","crucially"],["crutialy","crucially"],["crypted","encrypted"],["cryptocraphic","cryptographic"],["cryptograpic","cryptographic"],["crystalisation","crystallisation"],["cryto","crypto"],["crytpo","crypto"],["csae","case"],["csaes","cases"],["cteate","create"],["cteateing","creating"],["cteater","creator"],["cteates","creates"],["cteating","creating"],["cteation","creation"],["cteations","creations"],["cteator","creator"],["ctificate","certificate"],["ctificated","certificated"],["ctificates","certificates"],["ctification","certification"],["cuasality","causality"],["cuasation","causation"],["cuase","cause"],["cuased","caused"],["cuases","causes"],["cuasing","causing"],["cuestion","question"],["cuestioned","questioned"],["cuestions","questions"],["cuileoga","cuileog"],["culiminating","culminating"],["cumlative","cumulative"],["cummand","command"],["cummulated","cumulated"],["cummulative","cumulative"],["cummunicate","communicate"],["cumulatative","cumulative"],["cumulattive","cumulative"],["cuncurency","concurrency"],["curch","church"],["curcuit","circuit"],["curcuits","circuits"],["curcumstance","circumstance"],["curcumstances","circumstances"],["cureful","careful"],["curefully","carefully"],["curefuly","carefully"],["curent","current"],["curentfilter","currentfilter"],["curently","currently"],["curernt","current"],["curerntly","currently"],["curev","curve"],["curevd","curved"],["curevs","curves"],["curiousities","curiosities"],["curiousity's","curiosity's"],["curiousity","curiosity"],["curnilinear","curvilinear"],["currecnies","currencies"],["currecny","currency"],["currected","corrected"],["currecting","correcting"],["curreent","current"],["curreents","currents"],["curremt","current"],["curremtly","currently"],["curremts","currents"],["curren","current"],["currenlty","currently"],["currenly","currently"],["currennt","current"],["currenntly","currently"],["currennts","currents"],["currentl","currently"],["currentlly","currently"],["currentry","currently"],["currenty","currently"],["curresponding","corresponding"],["curretly","currently"],["curretnly","currently"],["curriculem","curriculum"],["currious","curious"],["currnet","current"],["currnt","current"],["currntly","currently"],["curros","cursor"],["currrency","currency"],["currrent","current"],["currrently","currently"],["curruent","current"],["currupt","corrupt"],["curruptable","corruptible"],["currupted","corrupted"],["curruptible","corruptible"],["curruption","corruption"],["curruptions","corruptions"],["currupts","corrupts"],["currus","cirrus"],["curser","cursor"],["cursot","cursor"],["cursro","cursor"],["curvatrue","curvature"],["curvatrues","curvatures"],["curvelinear","curvilinear"],["cusstom","custom"],["cusstomer","customer"],["cusstomers","customers"],["cusstomizable","customizable"],["cusstomization","customization"],["cusstomize","customize"],["cusstomized","customized"],["cusstoms","customs"],["custoisable","customisable"],["custoisation","customisation"],["custoise","customise"],["custoised","customised"],["custoiser","customiser"],["custoisers","customisers"],["custoising","customising"],["custoizable","customizable"],["custoization","customization"],["custoize","customize"],["custoized","customized"],["custoizer","customizer"],["custoizers","customizers"],["custoizing","customizing"],["customable","customizable"],["customie","customize"],["customied","customized"],["customisaton","customisation"],["customisatons","customisations"],["customizaton","customization"],["customizatons","customizations"],["customizeble","customizable"],["customn","custom"],["customns","customs"],["customsied","customised"],["customzied","customized"],["custon","custom"],["custonary","customary"],["custoner","customer"],["custoners","customers"],["custonisable","customisable"],["custonisation","customisation"],["custonise","customise"],["custonised","customised"],["custoniser","customiser"],["custonisers","customisers"],["custonising","customising"],["custonizable","customizable"],["custonization","customization"],["custonize","customize"],["custonized","customized"],["custonizer","customizer"],["custonizers","customizers"],["custonizing","customizing"],["custons","customs"],["custormer","customer"],["custum","custom"],["custumer","customer"],["custumised","customised"],["custumized","customized"],["custums","customs"],["cutom","custom"],["cutted","cut"],["cuurently","currently"],["cuurrent","current"],["cuurrents","currents"],["cvignore","cvsignore"],["cxan","cyan"],["cycic","cyclic"],["cyclinder","cylinder"],["cyclinders","cylinders"],["cycular","circular"],["cygin","cygwin"],["cylcic","cyclic"],["cylcical","cyclical"],["cyle","cycle"],["cylic","cyclic"],["cylider","cylinder"],["cyliders","cylinders"],["cylindical","cylindrical"],["cylindre","cylinder"],["cyllinder","cylinder"],["cyllinders","cylinders"],["cylnder","cylinder"],["cylnders","cylinders"],["cylynders","cylinders"],["cymk","CMYK"],["cyphersuite","ciphersuite"],["cyphersuites","ciphersuites"],["cyphertext","ciphertext"],["cyphertexts","ciphertexts"],["cyprt","crypt"],["cyprtic","cryptic"],["cyprto","crypto"],["Cyrllic","Cyrillic"],["cyrpto","crypto"],["cyrrent","current"],["cyrrilic","Cyrillic"],["cyrstal","crystal"],["cyrstalline","crystalline"],["cyrstallisation","crystallisation"],["cyrstallise","crystallise"],["cyrstallization","crystallization"],["cyrstallize","crystallize"],["cyrstals","crystals"],["cyrto","crypto"],["cywgin","Cygwin"],["daa","data"],["dabase","database"],["daclaration","declaration"],["dacquiri","daiquiri"],["dadlock","deadlock"],["daed","dead"],["dafault","default"],["dafaults","defaults"],["dafaut","default"],["dafualt","default"],["dafualted","defaulted"],["dafualts","defaults"],["daita","data"],["dake","take"],["dalmation","Dalmatian"],["dalta","delta"],["damamge","damage"],["damamged","damaged"],["damamges","damages"],["damamging","damaging"],["damange","damage"],["damanged","damaged"],["damanges","damages"],["damanging","damaging"],["damenor","demeanor"],["damge","damage"],["dammage","damage"],["dammages","damages"],["danceing","dancing"],["dandidates","candidates"],["daplicating","duplicating"],["Dardenelles","Dardanelles"],["dasboard","dashboard"],["dasboards","dashboards"],["dasdot","dashdot"],["dashbaord","dashboard"],["dashbaords","dashboards"],["dashboad","dashboard"],["dashboads","dashboards"],["dashboar","dashboard"],["dashboars","dashboards"],["dashbord","dashboard"],["dashbords","dashboards"],["dashs","dashes"],["data-strcuture","data-structure"],["data-strcutures","data-structures"],["databaase","database"],["databaases","databases"],["databae","database"],["databaes","database"],["databaeses","databases"],["databas","database"],["databsae","database"],["databsaes","databases"],["databse","database"],["databses","databases"],["datadsir","datadir"],["dataet","dataset"],["dataets","datasets"],["datas","data"],["datastrcuture","datastructure"],["datastrcutures","datastructures"],["datastrem","datastream"],["datatbase","database"],["datatbases","databases"],["datatgram","datagram"],["datatgrams","datagrams"],["datatore","datastore"],["datatores","datastores"],["datatpe","datatype"],["datatpes","datatypes"],["datatpye","datatype"],["datatpyes","datatypes"],["datatset","dataset"],["datatsets","datasets"],["datatstructure","datastructure"],["datatstructures","datastructures"],["datattype","datatype"],["datattypes","datatypes"],["datatye","datatype"],["datatyep","datatype"],["datatyepe","datatype"],["datatyepes","datatypes"],["datatyeps","datatypes"],["datatyes","datatypes"],["datatyoe","datatype"],["datatyoes","datatypes"],["datatytpe","datatype"],["datatytpes","datatypes"],["dataum","datum"],["datbase","database"],["datbases","databases"],["datecreatedd","datecreated"],["datection","detection"],["datections","detections"],["datee","date"],["dateset","dataset"],["datesets","datasets"],["datset","dataset"],["datsets","datasets"],["daugher","daughter"],["daugther","daughter"],["daugthers","daughters"],["dbeian","Debian"],["DCHP","DHCP"],["dcok","dock"],["dcoked","docked"],["dcoker","docker"],["dcoking","docking"],["dcoks","docks"],["dcument","document"],["dcumented","documented"],["dcumenting","documenting"],["dcuments","documents"],["ddelete","delete"],["de-actived","deactivated"],["de-duplacate","de-duplicate"],["de-duplacated","de-duplicated"],["de-duplacates","de-duplicates"],["de-duplacation","de-duplication"],["de-duplacte","de-duplicate"],["de-duplacted","de-duplicated"],["de-duplactes","de-duplicates"],["de-duplaction","de-duplication"],["de-duplaicate","de-duplicate"],["de-duplaicated","de-duplicated"],["de-duplaicates","de-duplicates"],["de-duplaication","de-duplication"],["de-duplate","de-duplicate"],["de-duplated","de-duplicated"],["de-duplates","de-duplicates"],["de-duplation","de-duplication"],["de-fualt","default"],["de-fualts","defaults"],["de-registeres","de-registers"],["deacitivation","deactivation"],["deacitvated","deactivated"],["deactivatiion","deactivation"],["deactive","deactivate"],["deactiveate","deactivate"],["deactived","deactivated"],["deactivete","deactivate"],["deactiveted","deactivated"],["deactivetes","deactivates"],["deactiviate","deactivate"],["deactiviates","deactivates"],["deactiving","deactivating"],["deaemon","daemon"],["deafault","default"],["deafualt","default"],["deafualts","defaults"],["deafult","default"],["deafulted","defaulted"],["deafults","defaults"],["deail","deal"],["deailing","dealing"],["deaktivate","deactivate"],["deaktivated","deactivated"],["dealed","dealt"],["dealilng","dealing"],["dealloacte","deallocate"],["deallocaed","deallocated"],["dealocate","deallocate"],["dealte","delete"],["deamand","demand"],["deamanding","demanding"],["deamands","demands"],["deambigate","disambiguate"],["deambigates","disambiguates"],["deambigation","disambiguation"],["deambiguage","disambiguate"],["deambiguages","disambiguates"],["deambiguate","disambiguate"],["deambiguates","disambiguates"],["deambiguation","disambiguation"],["deamiguate","disambiguate"],["deamiguates","disambiguates"],["deamiguation","disambiguation"],["deamon","daemon"],["deamonisation","daemonisation"],["deamonise","daemonise"],["deamonised","daemonised"],["deamonises","daemonises"],["deamonising","daemonising"],["deamonization","daemonization"],["deamonize","daemonize"],["deamonized","daemonized"],["deamonizes","daemonizes"],["deamonizing","daemonizing"],["deamons","daemons"],["deassering","deasserting"],["deatch","detach"],["deatched","detached"],["deatches","detaches"],["deatching","detaching"],["deatil","detail"],["deatiled","detailed"],["deatiling","detailing"],["deatils","details"],["deativate","deactivate"],["deativated","deactivated"],["deativates","deactivates"],["deativation","deactivation"],["deattach","detach"],["deattached","detached"],["deattaches","detaches"],["deattaching","detaching"],["deattachment","detachment"],["deault","default"],["deaults","defaults"],["deauthenication","deauthentication"],["debain","Debian"],["debateable","debatable"],["debbuger","debugger"],["debehlper","debhelper"],["debgu","debug"],["debgug","debug"],["debguging","debugging"],["debhlper","debhelper"],["debia","Debian"],["debiab","Debian"],["debians","Debian's"],["debina","Debian"],["debloking","deblocking"],["debnia","Debian"],["debth","depth"],["debths","depths"],["debudg","debug"],["debudgged","debugged"],["debudgger","debugger"],["debudgging","debugging"],["debudgs","debugs"],["debufs","debugfs"],["debugee","debuggee"],["debuger","debugger"],["debugg","debug"],["debuggg","debug"],["debuggge","debuggee"],["debuggged","debugged"],["debugggee","debuggee"],["debuggger","debugger"],["debuggging","debugging"],["debugggs","debugs"],["debugginf","debugging"],["debuggs","debugs"],["debuging","debugging"],["decaffinated","decaffeinated"],["decalare","declare"],["decalared","declared"],["decalares","declares"],["decalaring","declaring"],["decalration","declaration"],["decalrations","declarations"],["decalratiosn","declarations"],["decapsulting","decapsulating"],["decathalon","decathlon"],["deccelerate","decelerate"],["deccelerated","decelerated"],["deccelerates","decelerates"],["deccelerating","decelerating"],["decceleration","deceleration"],["deccrement","decrement"],["deccremented","decremented"],["deccrements","decrements"],["Decemer","December"],["decend","descend"],["decendant","descendant"],["decendants","descendants"],["decendentant","descendant"],["decendentants","descendants"],["decending","descending"],["deciaml","decimal"],["deciamls","decimals"],["decices","decides"],["decidate","dedicate"],["decidated","dedicated"],["decidates","dedicates"],["decideable","decidable"],["decidely","decidedly"],["decie","decide"],["deciedd","decided"],["deciede","decide"],["decieded","decided"],["deciedes","decides"],["decieding","deciding"],["decieds","decides"],["deciemal","decimal"],["decies","decides"],["decieve","deceive"],["decieved","deceived"],["decieves","deceives"],["decieving","deceiving"],["decimials","decimals"],["decison","decision"],["decission","decision"],["declar","declare"],["declaraion","declaration"],["declaraions","declarations"],["declarated","declared"],["declaratinos","declarations"],["declaratiom","declaration"],["declaraton","declaration"],["declaratons","declarations"],["declarayion","declaration"],["declarayions","declarations"],["declard","declared"],["declarded","declared"],["declaritive","declarative"],["declaritively","declaratively"],["declarnig","declaring"],["declartated","declared"],["declartation","declaration"],["declartations","declarations"],["declartative","declarative"],["declartator","declarator"],["declartators","declarators"],["declarted","declared"],["declartion","declaration"],["declartions","declarations"],["declartiuon","declaration"],["declartiuons","declarations"],["declartiuve","declarative"],["declartive","declarative"],["declartor","declarator"],["declartors","declarators"],["declataions","declarations"],["declatation","declaration"],["declatations","declarations"],["declated","declared"],["declation","declaration"],["declations","declarations"],["declatory","declaratory"],["decleration","declaration"],["declerations","declarations"],["declration","declaration"],["decocde","decode"],["decocded","decoded"],["decocder","decoder"],["decocders","decoders"],["decocdes","decodes"],["decocding","decoding"],["decocdings","decodings"],["decodded","decoded"],["decodding","decoding"],["decodeing","decoding"],["decomissioned","decommissioned"],["decomissioning","decommissioning"],["decommissionn","decommission"],["decommissionned","decommissioned"],["decommpress","decompress"],["decomoposition","decomposition"],["decomposion","decomposition"],["decomposit","decompose"],["decomposited","decomposed"],["decompositing","decomposing"],["decompositon","decomposition"],["decompositons","decompositions"],["decomposits","decomposes"],["decompostion","decomposition"],["decompostition","decomposition"],["decompres","decompress"],["decompresed","decompressed"],["decompreser","decompressor"],["decompreses","decompresses"],["decompresing","decompressing"],["decompresion","decompression"],["decompresor","decompressor"],["decompressd","decompressed"],["decompresser","decompressor"],["decompresssion","decompression"],["decompse","decompose"],["decond","decode"],["deconde","decode"],["deconded","decoded"],["deconder","decoder"],["deconders","decoders"],["decondes","decodes"],["deconding","decoding"],["decondings","decodings"],["deconstract","deconstruct"],["deconstracted","deconstructed"],["deconstrcutor","deconstructor"],["decopose","decompose"],["decoposes","decomposes"],["decoraded","decorated"],["decoratrion","decoration"],["decorde","decode"],["decorded","decoded"],["decorder","decoder"],["decorders","decoders"],["decordes","decodes"],["decording","decoding"],["decordings","decodings"],["decorrellation","decorrelation"],["decortator","decorator"],["decortive","decorative"],["decose","decode"],["decosed","decoded"],["decoser","decoder"],["decosers","decoders"],["decoses","decodes"],["decosing","decoding"],["decosings","decodings"],["decration","decoration"],["decreace","decrease"],["decreas","decrease"],["decremenet","decrement"],["decremenetd","decremented"],["decremeneted","decremented"],["decrese","decrease"],["decress","decrees"],["decribe","describe"],["decribed","described"],["decribes","describes"],["decribing","describing"],["decriptive","descriptive"],["decriptor","descriptor"],["decriptors","descriptors"],["decrmenet","decrement"],["decrmenetd","decremented"],["decrmeneted","decremented"],["decrment","decrement"],["decrmented","decremented"],["decrmenting","decrementing"],["decrments","decrements"],["decroation","decoration"],["decrpt","decrypt"],["decrpted","decrypted"],["decrption","decryption"],["decrytion","decryption"],["decscription","description"],["decsion","decision"],["decsions","decisions"],["decsiptors","descriptors"],["decsribed","described"],["decsriptor","descriptor"],["decsriptors","descriptors"],["decstiption","description"],["decstiptions","descriptions"],["dectect","detect"],["dectected","detected"],["dectecting","detecting"],["dectection","detection"],["dectections","detections"],["dectector","detector"],["dectivate","deactivate"],["decutable","deductible"],["decutables","deductibles"],["decypher","decipher"],["decyphered","deciphered"],["ded","dead"],["dedault","default"],["dedections","detections"],["dedented","indented"],["dedfined","defined"],["dedidate","dedicate"],["dedidated","dedicated"],["dedidates","dedicates"],["dedly","deadly"],["deductable","deductible"],["deductables","deductibles"],["deduplacate","deduplicate"],["deduplacated","deduplicated"],["deduplacates","deduplicates"],["deduplacation","deduplication"],["deduplacte","deduplicate"],["deduplacted","deduplicated"],["deduplactes","deduplicates"],["deduplaction","deduplication"],["deduplaicate","deduplicate"],["deduplaicated","deduplicated"],["deduplaicates","deduplicates"],["deduplaication","deduplication"],["deduplate","deduplicate"],["deduplated","deduplicated"],["deduplates","deduplicates"],["deduplation","deduplication"],["dedupliate","deduplicate"],["dedupliated","deduplicated"],["deecorator","decorator"],["deeep","deep"],["deelte","delete"],["deendencies","dependencies"],["deendency","dependency"],["defail","detail"],["defailt","default"],["defalt","default"],["defalts","defaults"],["defalut","default"],["defargkey","defragkey"],["defatult","default"],["defaukt","default"],["defaul","default"],["defaulat","default"],["defaulats","defaults"],["defauld","default"],["defaulds","defaults"],["defaule","default"],["defaules","defaults"],["defaulf","default"],["defaulfs","defaults"],["defaulg","default"],["defaulgs","defaults"],["defaulh","default"],["defaulhs","defaults"],["defauling","defaulting"],["defaulit","default"],["defaulits","defaults"],["defaulkt","default"],["defaulkts","defaults"],["defaull","default"],["defaulls","defaults"],["defaullt","default"],["defaullts","defaults"],["defaulr","default"],["defaulrs","defaults"],["defaulrt","default"],["defaulrts","defaults"],["defaultet","defaulted"],["defaulty","default"],["defauly","default"],["defaulys","defaults"],["defaut","default"],["defautl","default"],["defautled","defaulted"],["defautling","defaulting"],["defautls","defaults"],["defautlt","default"],["defautly","default"],["defauts","defaults"],["defautt","default"],["defautted","defaulted"],["defautting","defaulting"],["defautts","defaults"],["defeault","default"],["defeaulted","defaulted"],["defeaulting","defaulting"],["defeaults","defaults"],["defecit","deficit"],["defeine","define"],["defeines","defines"],["defenate","definite"],["defenately","definitely"],["defendent","defendant"],["defendents","defendants"],["defenitely","definitely"],["defenition","definition"],["defenitions","definitions"],["defenitly","definitely"],["deferal","deferral"],["deferals","deferrals"],["deferance","deference"],["defered","deferred"],["deferencing","dereferencing"],["deferentiating","differentiating"],["defering","deferring"],["deferreal","deferral"],["deffensively","defensively"],["defferently","differently"],["deffering","differing"],["defferred","deferred"],["deffine","define"],["deffined","defined"],["deffinition","definition"],["deffinitively","definitively"],["deffirent","different"],["defiantely","defiantly"],["defice","device"],["defien","define"],["defiend","defined"],["defiened","defined"],["defin","define"],["definad","defined"],["definance","defiance"],["definate","definite"],["definately","definitely"],["defination","definition"],["definations","definitions"],["definatly","definitely"],["definding","defining"],["defineas","defines"],["defineed","defined"],["definend","defined"],["definete","definite"],["definetelly","definitely"],["definetely","definitely"],["definetly","definitely"],["definiation","definition"],["definied","defined"],["definietly","definitely"],["definifiton","definition"],["definining","defining"],["defininition","definition"],["defininitions","definitions"],["definintion","definition"],["definit","definite"],["definitian","definition"],["definitiion","definition"],["definitiions","definitions"],["definitio","definition"],["definitios","definitions"],["definitivly","definitively"],["definitly","definitely"],["definitoin","definition"],["definiton","definition"],["definitons","definitions"],["definned","defined"],["definnition","definition"],["defintian","definition"],["defintiion","definition"],["defintiions","definitions"],["defintion","definition"],["defintions","definitions"],["defintition","definition"],["defintivly","definitively"],["defition","definition"],["defitions","definitions"],["deflaut","default"],["defninition","definition"],["defninitions","definitions"],["defnitions","definitions"],["defore","before"],["defqault","default"],["defragmenation","defragmentation"],["defualt","default"],["defualtdict","defaultdict"],["defualts","defaults"],["defult","default"],["defulted","defaulted"],["defulting","defaulting"],["defults","defaults"],["degenarate","degenerate"],["degenarated","degenerated"],["degenarating","degenerating"],["degenaration","degeneration"],["degenracy","degeneracy"],["degenrate","degenerate"],["degenrated","degenerated"],["degenrates","degenerates"],["degenratet","degenerated"],["degenrating","degenerating"],["degenration","degeneration"],["degerate","degenerate"],["degeree","degree"],["degnerate","degenerate"],["degnerated","degenerated"],["degnerates","degenerates"],["degrads","degrades"],["degration","degradation"],["degredation","degradation"],["degreee","degree"],["degreeee","degree"],["degreeees","degrees"],["degreees","degrees"],["deifne","define"],["deifned","defined"],["deifnes","defines"],["deifning","defining"],["deimiter","delimiter"],["deine","define"],["deinitailse","deinitialise"],["deinitailze","deinitialize"],["deinitalized","deinitialized"],["deinstantating","deinstantiating"],["deintialize","deinitialize"],["deintialized","deinitialized"],["deintializing","deinitializing"],["deisgn","design"],["deisgned","designed"],["deisgner","designer"],["deisgners","designers"],["deisgning","designing"],["deisgns","designs"],["deivative","derivative"],["deivatives","derivatives"],["deivce","device"],["deivces","devices"],["deivices","devices"],["deklaration","declaration"],["dekstop","desktop"],["dekstops","desktops"],["dektop","desktop"],["dektops","desktops"],["delagate","delegate"],["delagates","delegates"],["delaloc","delalloc"],["delalyed","delayed"],["delapidated","dilapidated"],["delaraction","declaration"],["delaractions","declarations"],["delarations","declarations"],["delare","declare"],["delared","declared"],["delares","declares"],["delaring","declaring"],["delate","delete"],["delayis","delays"],["delcarations","declarations"],["delcare","declare"],["delcared","declared"],["delcares","declares"],["delclaration","declaration"],["delele","delete"],["delelete","delete"],["deleleted","deleted"],["deleletes","deletes"],["deleleting","deleting"],["delelte","delete"],["delemeter","delimiter"],["delemiter","delimiter"],["delerious","delirious"],["delet","delete"],["deletd","deleted"],["deleteable","deletable"],["deleteed","deleted"],["deleteing","deleting"],["deleteion","deletion"],["deleteting","deleting"],["deletiong","deletion"],["delets","deletes"],["delevopment","development"],["delevopp","develop"],["delgate","delegate"],["delgated","delegated"],["delgates","delegates"],["delgating","delegating"],["delgation","delegation"],["delgations","delegations"],["delgator","delegator"],["delgators","delegators"],["deliberatey","deliberately"],["deliberatly","deliberately"],["deliberite","deliberate"],["deliberitely","deliberately"],["delibery","delivery"],["delibrate","deliberate"],["delibrately","deliberately"],["delievering","delivering"],["delievery","delivery"],["delievred","delivered"],["delievries","deliveries"],["delievry","delivery"],["delimeted","delimited"],["delimeter","delimiter"],["delimeters","delimiters"],["delimiited","delimited"],["delimiiter","delimiter"],["delimiiters","delimiters"],["delimitiaion","delimitation"],["delimitiaions","delimitations"],["delimitiation","delimitation"],["delimitiations","delimitations"],["delimitied","delimited"],["delimitier","delimiter"],["delimitiers","delimiters"],["delimitiing","delimiting"],["delimitimg","delimiting"],["delimition","delimitation"],["delimitions","delimitations"],["delimitis","delimits"],["delimititation","delimitation"],["delimititations","delimitations"],["delimitited","delimited"],["delimititer","delimiter"],["delimititers","delimiters"],["delimititing","delimiting"],["delimitor","delimiter"],["delimitors","delimiters"],["delimitted","delimited"],["delimma","dilemma"],["delimted","delimited"],["delimters","delimiter"],["delink","unlink"],["delivared","delivered"],["delivative","derivative"],["delivatives","derivatives"],["deliverate","deliberate"],["delivermode","deliverymode"],["deliverying","delivering"],["delte","delete"],["delted","deleted"],["deltes","deletes"],["delting","deleting"],["deltion","deletion"],["delusionally","delusively"],["delvery","delivery"],["demaind","demand"],["demenor","demeanor"],["demension","dimension"],["demensional","dimensional"],["demensions","dimensions"],["demodualtor","demodulator"],["demog","demo"],["demographical","demographic"],["demolishon","demolition"],["demolision","demolition"],["demoninator","denominator"],["demoninators","denominators"],["demonstates","demonstrates"],["demonstrat","demonstrate"],["demonstrats","demonstrates"],["demorcracy","democracy"],["demostrate","demonstrate"],["demostrated","demonstrated"],["demostrates","demonstrates"],["demostrating","demonstrating"],["demostration","demonstration"],["demudulator","demodulator"],["denegrating","denigrating"],["denisty","density"],["denomitator","denominator"],["denomitators","denominators"],["densitity","density"],["densly","densely"],["denstiy","density"],["deocde","decode"],["deocded","decoded"],["deocder","decoder"],["deocders","decoders"],["deocdes","decodes"],["deocding","decoding"],["deocdings","decodings"],["deoes","does"],["deoesn't","doesn't"],["deompression","decompression"],["depandance","dependence"],["depandancies","dependencies"],["depandancy","dependency"],["depandent","dependent"],["deparment","department"],["deparmental","departmental"],["deparments","departments"],["depcrecated","deprecated"],["depden","depend"],["depdence","dependence"],["depdencente","dependence"],["depdencentes","dependences"],["depdences","dependences"],["depdencies","dependencies"],["depdency","dependency"],["depdend","depend"],["depdendancies","dependencies"],["depdendancy","dependency"],["depdendant","dependent"],["depdendants","dependents"],["depdended","depended"],["depdendence","dependence"],["depdendences","dependences"],["depdendencies","dependencies"],["depdendency","dependency"],["depdendent","dependent"],["depdendents","dependents"],["depdendet","dependent"],["depdendets","dependents"],["depdending","depending"],["depdends","depends"],["depdenence","dependence"],["depdenences","dependences"],["depdenencies","dependencies"],["depdenency","dependency"],["depdenent","dependent"],["depdenents","dependents"],["depdening","depending"],["depdenncies","dependencies"],["depdenncy","dependency"],["depdens","depends"],["depdent","dependent"],["depdents","dependents"],["depecated","deprecated"],["depedencies","dependencies"],["depedency","dependency"],["depedencys","dependencies"],["depedent","dependent"],["depeding","depending"],["depencencies","dependencies"],["depencency","dependency"],["depencendencies","dependencies"],["depencendency","dependency"],["depencendencys","dependencies"],["depencent","dependent"],["depencies","dependencies"],["depency","dependency"],["dependance","dependence"],["dependancies","dependencies"],["dependancy","dependency"],["dependancys","dependencies"],["dependand","dependent"],["dependcies","dependencies"],["dependcy","dependency"],["dependding","depending"],["dependecies","dependencies"],["dependecy","dependency"],["dependecys","dependencies"],["dependedn","dependent"],["dependees","dependencies"],["dependeing","depending"],["dependenceis","dependencies"],["dependencey","dependency"],["dependencie","dependency"],["dependencied","dependency"],["dependenciens","dependencies"],["dependencis","dependencies"],["dependencys","dependencies"],["dependendencies","dependencies"],["dependendency","dependency"],["dependendent","dependent"],["dependenies","dependencies"],["dependening","depending"],["dependeny","dependency"],["dependet","dependent"],["dependices","dependencies"],["dependicy","dependency"],["dependig","depending"],["dependncies","dependencies"],["dependncy","dependency"],["depened","depend"],["depenedecies","dependencies"],["depenedecy","dependency"],["depenedent","dependent"],["depenencies","dependencies"],["depenencis","dependencies"],["depenency","dependency"],["depenencys","dependencies"],["depenend","depend"],["depenendecies","dependencies"],["depenendecy","dependency"],["depenendence","dependence"],["depenendencies","dependencies"],["depenendency","dependency"],["depenendent","dependent"],["depenending","depending"],["depenent","dependent"],["depenently","dependently"],["depennding","depending"],["depent","depend"],["deperecate","deprecate"],["deperecated","deprecated"],["deperecates","deprecates"],["deperecating","deprecating"],["deploied","deployed"],["deploiment","deployment"],["deploiments","deployments"],["deployement","deployment"],["deploymenet","deployment"],["deploymenets","deployments"],["depndant","dependent"],["depnds","depends"],["deporarily","temporarily"],["deposint","deposing"],["depracated","deprecated"],["depreacte","deprecate"],["depreacted","deprecated"],["depreacts","deprecates"],["depreate","deprecate"],["depreated","deprecated"],["depreates","deprecates"],["depreating","deprecating"],["deprecatedf","deprecated"],["deprectaed","deprecated"],["deprectat","deprecate"],["deprectate","deprecate"],["deprectated","deprecated"],["deprectates","deprecates"],["deprectating","deprecating"],["deprectation","deprecation"],["deprectats","deprecates"],["deprected","deprecated"],["depricate","deprecate"],["depricated","deprecated"],["depricates","deprecates"],["depricating","deprecating"],["dequed","dequeued"],["dequeing","dequeuing"],["deques","dequeues"],["derageable","dirigible"],["derective","directive"],["derectory","directory"],["derefence","dereference"],["derefenced","dereferenced"],["derefencing","dereferencing"],["derefenrence","dereference"],["dereferance","dereference"],["dereferanced","dereferenced"],["dereferances","dereferences"],["dereferencable","dereferenceable"],["dereferencce","dereference"],["dereferencced","dereferenced"],["dereferencces","dereferences"],["dereferenccing","dereferencing"],["derefernce","dereference"],["derefernced","dereferenced"],["dereferncence","dereference"],["dereferncencer","dereferencer"],["dereferncencers","dereferencers"],["dereferncences","dereferences"],["dereferncer","dereferencer"],["dereferncers","dereferencers"],["derefernces","dereferences"],["dereferncing","dereferencing"],["derefernece","dereference"],["derefrencable","dereferenceable"],["derefrence","dereference"],["deregistartion","deregistration"],["deregisted","deregistered"],["deregisteres","deregisters"],["deregistrated","deregistered"],["deregistred","deregistered"],["deregiter","deregister"],["deregiters","deregisters"],["derevative","derivative"],["derevatives","derivatives"],["derferencing","dereferencing"],["derfien","define"],["derfiend","defined"],["derfine","define"],["derfined","defined"],["dergeistered","deregistered"],["dergistration","deregistration"],["deriair","derriere"],["dericed","derived"],["dericteries","directories"],["derictery","directory"],["dericteryes","directories"],["dericterys","directories"],["deriffed","derived"],["derivaties","derivatives"],["derivatio","derivation"],["derivativ","derivative"],["derivativs","derivatives"],["deriviated","derived"],["derivitive","derivative"],["derivitives","derivatives"],["derivitivs","derivatives"],["derivtive","derivative"],["derivtives","derivatives"],["dermine","determine"],["dermined","determined"],["dermines","determines"],["dermining","determining"],["derogitory","derogatory"],["derprecated","deprecated"],["derrivatives","derivatives"],["derrive","derive"],["derrived","derived"],["dertermine","determine"],["derterming","determining"],["derth","dearth"],["derviative","derivative"],["derviatives","derivatives"],["dervie","derive"],["dervied","derived"],["dervies","derives"],["dervived","derived"],["desactivate","deactivate"],["desactivated","deactivated"],["desallocate","deallocate"],["desallocated","deallocated"],["desallocates","deallocates"],["desaster","disaster"],["descallocate","deallocate"],["descallocated","deallocated"],["descchedules","deschedules"],["desccription","description"],["descencing","descending"],["descendands","descendants"],["descibe","describe"],["descibed","described"],["descibes","describes"],["descibing","describing"],["descide","decide"],["descided","decided"],["descides","decides"],["desciding","deciding"],["desciption","description"],["desciptions","descriptions"],["desciptor","descriptor"],["desciptors","descriptors"],["desciribe","describe"],["desciribed","described"],["desciribes","describes"],["desciribing","describing"],["desciription","description"],["desciriptions","descriptions"],["descirption","description"],["descirptor","descriptor"],["descision","decision"],["descisions","decisions"],["descize","disguise"],["descized","disguised"],["descktop","desktop"],["descktops","desktops"],["desconstructed","deconstructed"],["descover","discover"],["descovered","discovered"],["descovering","discovering"],["descovery","discovery"],["descrease","decrease"],["descreased","decreased"],["descreases","decreases"],["descreasing","decreasing"],["descrementing","decrementing"],["descrete","discrete"],["describ","describe"],["describbed","described"],["describibg","describing"],["describng","describing"],["describtion","description"],["describtions","descriptions"],["descrice","describe"],["descriced","described"],["descrices","describes"],["descricing","describing"],["descrie","describe"],["descriibes","describes"],["descriminant","discriminant"],["descriminate","discriminate"],["descriminated","discriminated"],["descriminates","discriminates"],["descriminating","discriminating"],["descriont","description"],["descriotor","descriptor"],["descripe","describe"],["descriped","described"],["descripes","describes"],["descriping","describing"],["descripition","description"],["descripor","descriptor"],["descripors","descriptors"],["descripter","descriptor"],["descripters","descriptors"],["descriptio","description"],["descriptiom","description"],["descriptionm","description"],["descriptior","descriptor"],["descriptiors","descriptors"],["descripto","descriptor"],["descriptoin","description"],["descriptoins","descriptions"],["descripton","description"],["descriptons","descriptions"],["descriptot","descriptor"],["descriptoy","descriptor"],["descriptuve","descriptive"],["descrition","description"],["descritpion","description"],["descritpions","descriptions"],["descritpiton","description"],["descritpitons","descriptions"],["descritpor","descriptor"],["descritpors","descriptors"],["descritpr","descriptor"],["descritpro","descriptor"],["descritpros","descriptors"],["descritprs","descriptors"],["descritption","description"],["descritptions","descriptions"],["descritptive","descriptive"],["descritptor","descriptor"],["descritptors","descriptors"],["descrption","description"],["descrptions","descriptions"],["descrptor","descriptor"],["descrptors","descriptors"],["descrtiption","description"],["descrtiptions","descriptions"],["descrutor","destructor"],["descrybe","describe"],["descrybing","describing"],["descryption","description"],["descryptions","descriptions"],["desctiption","description"],["desctiptor","descriptor"],["desctiptors","descriptors"],["desctop","desktop"],["desctructed","destructed"],["desctruction","destruction"],["desctructive","destructive"],["desctructor","destructor"],["desctructors","destructors"],["descuss","discuss"],["descvription","description"],["descvriptions","descriptions"],["deselct","deselect"],["deselctable","deselectable"],["deselctables","deselectable"],["deselcted","deselected"],["deselcting","deselecting"],["desepears","disappears"],["deserailise","deserialise"],["deserailize","deserialize"],["deserialisazion","deserialisation"],["deserializaed","deserialized"],["deserializazion","deserialization"],["deserialsiation","deserialisation"],["deserialsie","deserialise"],["deserialsied","deserialised"],["deserialsies","deserialises"],["deserialsing","deserialising"],["deserialze","deserialize"],["deserialzed","deserialized"],["deserialzes","deserializes"],["deserialziation","deserialization"],["deserialzie","deserialize"],["deserialzied","deserialized"],["deserialzies","deserializes"],["deserialzing","deserializing"],["desgin","design"],["desgin-mode","design-mode"],["desgined","designed"],["desginer","designer"],["desiar","desire"],["desicate","desiccate"],["desicion","decision"],["desicions","decisions"],["deside","decide"],["desided","decided"],["desides","decides"],["desig","design"],["desigern","designer"],["desigining","designing"],["designd","designed"],["desination","destination"],["desinations","destinations"],["desine","design"],["desing","design"],["desingable","designable"],["desinged","designed"],["desinger","designer"],["desinging","designing"],["desingn","design"],["desingned","designed"],["desingner","designer"],["desingning","designing"],["desingns","designs"],["desings","designs"],["desintaiton","destination"],["desintaitons","destinations"],["desintation","destination"],["desintations","destinations"],["desintegrated","disintegrated"],["desintegration","disintegration"],["desipite","despite"],["desireable","desirable"],["desision","decision"],["desisions","decisions"],["desitable","desirable"],["desitination","destination"],["desitinations","destinations"],["desition","decision"],["desitions","decisions"],["desitned","destined"],["deskop","desktop"],["deskops","desktops"],["desktiop","desktop"],["deskys","disguise"],["deslected","deselected"],["deslects","deselects"],["desltop","desktop"],["desltops","desktops"],["desn't","doesn't"],["desne","dense"],["desnse","dense"],["desogn","design"],["desogned","designed"],["desogner","designer"],["desogning","designing"],["desogns","designs"],["desolve","dissolve"],["desorder","disorder"],["desoriented","disoriented"],["desparately","desperately"],["despatch","dispatch"],["despict","depict"],["despiration","desperation"],["desplay","display"],["desplayed","displayed"],["desplays","displays"],["desposition","disposition"],["desrciption","description"],["desrciptions","descriptions"],["desribe","describe"],["desribed","described"],["desribes","describes"],["desribing","describing"],["desription","description"],["desriptions","descriptions"],["desriptor","descriptor"],["desriptors","descriptors"],["desrire","desire"],["desrired","desired"],["desroyer","destroyer"],["desscribe","describe"],["desscribing","describing"],["desscription","description"],["dessicate","desiccate"],["dessicated","desiccated"],["dessication","desiccation"],["dessigned","designed"],["desstructor","destructor"],["destablized","destabilized"],["destanation","destination"],["destanations","destinations"],["destiantion","destination"],["destiantions","destinations"],["destiation","destination"],["destiations","destinations"],["destinaion","destination"],["destinaions","destinations"],["destinaiton","destination"],["destinaitons","destinations"],["destinarion","destination"],["destinarions","destinations"],["destinataion","destination"],["destinataions","destinations"],["destinatin","destination"],["destinatino","destination"],["destinatinos","destinations"],["destinatins","destinations"],["destinaton","destination"],["destinatons","destinations"],["destinguish","distinguish"],["destintation","destination"],["destintations","destinations"],["destionation","destination"],["destionations","destinations"],["destop","desktop"],["destops","desktops"],["destoried","destroyed"],["destort","distort"],["destory","destroy"],["destoryed","destroyed"],["destorying","destroying"],["destorys","destroys"],["destoy","destroy"],["destoyed","destroyed"],["destrcut","destruct"],["destrcuted","destructed"],["destrcutor","destructor"],["destrcutors","destructors"],["destribute","distribute"],["destributed","distributed"],["destroi","destroy"],["destroied","destroyed"],["destroing","destroying"],["destrois","destroys"],["destroyes","destroys"],["destruciton","destruction"],["destructro","destructor"],["destructros","destructors"],["destruktor","destructor"],["destruktors","destructors"],["destrutor","destructor"],["destrutors","destructors"],["destry","destroy"],["destryed","destroyed"],["destryer","destroyer"],["destrying","destroying"],["destryiong","destroying"],["destryoed","destroyed"],["destryoing","destroying"],["destryong","destroying"],["destrys","destroys"],["destuction","destruction"],["destuctive","destructive"],["destuctor","destructor"],["destuctors","destructors"],["desturcted","destructed"],["desturtor","destructor"],["desturtors","destructors"],["desychronize","desynchronize"],["desychronized","desynchronized"],["detabase","database"],["detachs","detaches"],["detahced","detached"],["detaild","detailed"],["detailled","detailed"],["detais","details"],["detals","details"],["detatch","detach"],["detatched","detached"],["detatches","detaches"],["detatching","detaching"],["detault","default"],["detaulted","defaulted"],["detaulting","defaulting"],["detaults","defaults"],["detction","detection"],["detctions","detections"],["deteced","detected"],["detecing","detecting"],["detecion","detection"],["detecions","detections"],["detectected","detected"],["detectes","detects"],["detectetd","detected"],["detectsion","detection"],["detectsions","detections"],["detemine","determine"],["detemined","determined"],["detemines","determines"],["detemining","determining"],["deteoriated","deteriorated"],["deterant","deterrent"],["deteremine","determine"],["deteremined","determined"],["deteriate","deteriorate"],["deterimined","determined"],["deterine","determine"],["deterioriating","deteriorating"],["determaine","determine"],["determenant","determinant"],["determenistic","deterministic"],["determiens","determines"],["determimnes","determines"],["determin","determine"],["determinated","determined"],["determind","determined"],["determinded","determined"],["determinee","determine"],["determineing","determining"],["determinining","determining"],["deterministinc","deterministic"],["determinne","determine"],["determins","determines"],["determinse","determines"],["determinstic","deterministic"],["determinstically","deterministically"],["determintes","determines"],["determnine","determine"],["deternine","determine"],["detetmine","determine"],["detial","detail"],["detialed","detailed"],["detialing","detailing"],["detials","details"],["detination","destination"],["detinations","destinations"],["detremental","detrimental"],["detremining","determining"],["detrmine","determine"],["detrmined","determined"],["detrmines","determines"],["detrmining","determining"],["detroy","destroy"],["detroyed","destroyed"],["detroying","destroying"],["detroys","destroys"],["detructed","destructed"],["dettach","detach"],["dettaching","detaching"],["detur","detour"],["deturance","deterrence"],["deubug","debug"],["deubuging","debugging"],["deug","debug"],["deugging","debugging"],["devasted","devastated"],["devation","deviation"],["devce","device"],["devcent","decent"],["devcie","device"],["devcies","devices"],["develoers","developers"],["develoment","development"],["develoments","developments"],["develompent","development"],["develompental","developmental"],["develompents","developments"],["develope","develop"],["developement","development"],["developements","developments"],["developmemt","development"],["developmet","development"],["developmetns","developments"],["developmets","developments"],["developp","develop"],["developpe","develop"],["developped","developed"],["developpement","development"],["developper","developer"],["developpers","developers"],["developpment","development"],["develp","develop"],["develped","developed"],["develper","developer"],["develpers","developers"],["develping","developing"],["develpment","development"],["develpments","developments"],["develps","develops"],["devels","delves"],["deveolpment","development"],["deveopers","developers"],["deverloper","developer"],["deverlopers","developers"],["devestated","devastated"],["devestating","devastating"],["devfine","define"],["devfined","defined"],["devfines","defines"],["devic","device"],["devicde","device"],["devicdes","devices"],["device-dependend","device-dependent"],["devicec","device"],["devicecoordiinates","devicecoordinates"],["deviceremoveable","deviceremovable"],["devicesr","devices"],["devicess","devices"],["devicest","devices"],["devide","divide"],["devided","divided"],["devider","divider"],["deviders","dividers"],["devides","divides"],["deviding","dividing"],["deviece","device"],["devied","device"],["deviiate","deviate"],["deviiated","deviated"],["deviiates","deviates"],["deviiating","deviating"],["deviiation","deviation"],["deviiations","deviations"],["devined","defined"],["devired","derived"],["devirtualisaion","devirtualisation"],["devirtualisaiton","devirtualisation"],["devirtualizaion","devirtualization"],["devirtualizaiton","devirtualization"],["devirutalisation","devirtualisation"],["devirutalise","devirtualise"],["devirutalised","devirtualised"],["devirutalization","devirtualization"],["devirutalize","devirtualize"],["devirutalized","devirtualized"],["devisible","divisible"],["devision","division"],["devistating","devastating"],["devive","device"],["devleop","develop"],["devleoped","developed"],["devleoper","developer"],["devleopers","developers"],["devleoping","developing"],["devleopment","development"],["devleopper","developer"],["devleoppers","developers"],["devlop","develop"],["devloped","developed"],["devloper's","developer's"],["devloper","developer"],["devlopers","developers"],["devloping","developing"],["devlopment","development"],["devlopments","developments"],["devlopper","developer"],["devloppers","developers"],["devlops","develops"],["devolopement","development"],["devritualisation","devirtualisation"],["devritualization","devirtualization"],["devuce","device"],["dewrapping","unwrapping"],["dezert","dessert"],["dezibel","decibel"],["dezine","design"],["dezinens","denizens"],["dfine","define"],["dfined","defined"],["dfines","defines"],["dfinition","definition"],["dfinitions","definitions"],["dgetttext","dgettext"],["diable","disable"],["diabled","disabled"],["diabler","disabler"],["diablers","disablers"],["diables","disables"],["diablical","diabolical"],["diabling","disabling"],["diaciritc","diacritic"],["diaciritcs","diacritics"],["diagnistic","diagnostic"],["diagnoal","diagonal"],["diagnoals","diagonals"],["diagnol","diagonal"],["diagnosics","diagnostics"],["diagnositc","diagnostic"],["diagnotic","diagnostic"],["diagnotics","diagnostics"],["diagnxostic","diagnostic"],["diagonale","diagonal"],["diagonales","diagonals"],["diagramas","diagrams"],["diagramm","diagram"],["dialaog","dialog"],["dialate","dilate"],["dialgo","dialog"],["dialgos","dialogs"],["dialig","dialog"],["dialigs","dialogs"],["diamater","diameter"],["diamaters","diameters"],["diamon","diamond"],["diamons","diamonds"],["diamter","diameter"],["diamters","diameters"],["diangose","diagnose"],["dianostic","diagnostic"],["dianostics","diagnostics"],["diaplay","display"],["diaplays","displays"],["diappeares","disappears"],["diarea","diarrhea"],["diaresis","diaeresis"],["diasble","disable"],["diasbled","disabled"],["diasbles","disables"],["diasbling","disabling"],["diaspra","diaspora"],["diaster","disaster"],["diatance","distance"],["diatancing","distancing"],["dicard","discard"],["dicarded","discarded"],["dicarding","discarding"],["dicards","discards"],["dicates","dictates"],["dicationaries","dictionaries"],["dicationary","dictionary"],["dicergence","divergence"],["dichtomy","dichotomy"],["dicionaries","dictionaries"],["dicionary","dictionary"],["dicipline","discipline"],["dicitonaries","dictionaries"],["dicitonary","dictionary"],["dicline","decline"],["diconnected","disconnected"],["diconnection","disconnection"],["diconnects","disconnects"],["dicover","discover"],["dicovered","discovered"],["dicovering","discovering"],["dicovers","discovers"],["dicovery","discovery"],["dicrectory","directory"],["dicrete","discrete"],["dicretion","discretion"],["dicretionary","discretionary"],["dicriminate","discriminate"],["dicriminated","discriminated"],["dicriminates","discriminates"],["dicriminating","discriminating"],["dicriminator","discriminator"],["dicriminators","discriminators"],["dicsriminated","discriminated"],["dictaionaries","dictionaries"],["dictaionary","dictionary"],["dictinary","dictionary"],["dictioanries","dictionaries"],["dictioanry","dictionary"],["dictionarys","dictionaries"],["dictionay","dictionary"],["dictionnaries","dictionaries"],["dictionnary","dictionary"],["dictionries","dictionaries"],["dictionry","dictionary"],["dictoinaries","dictionaries"],["dictoinary","dictionary"],["dictonaries","dictionaries"],["dictonary","dictionary"],["dictrionaries","dictionaries"],["dictrionary","dictionary"],["dicussed","discussed"],["dicussions","discussions"],["did'nt","didn't"],["didi","did"],["didn;t","didn't"],["didnt'","didn't"],["didnt't","didn't"],["didnt","didn't"],["didnt;","didn't"],["diect","direct"],["diectly","directly"],["dielectirc","dielectric"],["dielectircs","dielectrics"],["diemsion","dimension"],["dieties","deities"],["diety","deity"],["diference","difference"],["diferences","differences"],["diferent","different"],["diferentiate","differentiate"],["diferentiated","differentiated"],["diferentiates","differentiates"],["diferentiating","differentiating"],["diferently","differently"],["diferrent","different"],["diffcult","difficult"],["diffculties","difficulties"],["diffculty","difficulty"],["diffeent","different"],["diffence","difference"],["diffenet","different"],["diffenrence","difference"],["diffenrences","differences"],["differance","difference"],["differances","differences"],["differant","different"],["differantiate","differentiate"],["differantiation","differentiation"],["differantiator","differentiator"],["differantion","differentiation"],["differate","differentiate"],["differece","difference"],["differect","different"],["differen","different"],["differencess","differences"],["differencial","differential"],["differenciate","differentiate"],["differenciated","differentiated"],["differenciates","differentiates"],["differenciating","differentiating"],["differenciation","differentiation"],["differencies","differences"],["differenct","different"],["differend","different"],["differene","difference"],["differenes","differences"],["differenly","differently"],["differens","difference"],["differense","difference"],["differentiatiations","differentiations"],["differentiaton","differentiation"],["differentl","differently"],["differernt","different"],["differes","differs"],["differetnt","different"],["differnce","difference"],["differnces","differences"],["differnciate","differentiate"],["differnec","difference"],["differnece","difference"],["differneces","differences"],["differnecs","differences"],["differnence","difference"],["differnences","differences"],["differnencing","differencing"],["differnent","different"],["differnet","different"],["differnetiate","differentiate"],["differnetiated","differentiated"],["differnetly","differently"],["differnt","different"],["differntiable","differentiable"],["differntial","differential"],["differntials","differentials"],["differntiate","differentiate"],["differntiated","differentiated"],["differntiates","differentiates"],["differntiating","differentiating"],["differntly","differently"],["differred","differed"],["differrence","difference"],["differrent","different"],["difffered","differed"],["diffferent","different"],["diffferently","differently"],["difffers","differs"],["difficault","difficult"],["difficaulties","difficulties"],["difficaulty","difficulty"],["difficulity","difficulty"],["difficutl","difficult"],["difficutly","difficulty"],["diffreences","differences"],["diffreent","different"],["diffrence","difference"],["diffrences","differences"],["diffrent","different"],["diffrential","differential"],["diffrentiate","differentiate"],["diffrentiated","differentiated"],["diffrently","differently"],["diffrerence","difference"],["diffrerences","differences"],["diffult","difficult"],["diffussion","diffusion"],["diffussive","diffusive"],["dificulties","difficulties"],["dificulty","difficulty"],["difinition","definition"],["difinitions","definitions"],["difract","diffract"],["difracted","diffracted"],["difraction","diffraction"],["difractive","diffractive"],["difussion","diffusion"],["difussive","diffusive"],["digesty","digest"],["diggit","digit"],["diggital","digital"],["diggits","digits"],["digial","digital"],["digist","digits"],["digitalise","digitize"],["digitalising","digitizing"],["digitalize","digitize"],["digitalizing","digitizing"],["digitial","digital"],["digitis","digits"],["dignostics","diagnostics"],["dilema","dilemma"],["dilemas","dilemmas"],["dilineate","delineate"],["dillema","dilemma"],["dillemas","dilemmas"],["dilligence","diligence"],["dilligent","diligent"],["dilligently","diligently"],["dillimport","dllimport"],["dimansion","dimension"],["dimansional","dimensional"],["dimansions","dimensions"],["dimemsions","dimensions"],["dimenional","dimensional"],["dimenionalities","dimensionalities"],["dimenionality","dimensionality"],["dimenions","dimensions"],["dimenionsal","dimensional"],["dimenionsalities","dimensionalities"],["dimenionsality","dimensionality"],["dimenison","dimension"],["dimensinal","dimensional"],["dimensinoal","dimensional"],["dimensinos","dimensions"],["dimensionaility","dimensionality"],["dimensiones","dimensions"],["dimensonal","dimensional"],["dimenstion","dimension"],["dimenstions","dimensions"],["dimention","dimension"],["dimentional","dimensional"],["dimentionnal","dimensional"],["dimentionnals","dimensional"],["dimentions","dimensions"],["dimesions","dimensions"],["dimesnion","dimension"],["dimesnional","dimensional"],["dimesnions","dimensions"],["diminsh","diminish"],["diminshed","diminished"],["diminuitive","diminutive"],["dimissed","dismissed"],["dimmension","dimension"],["dimmensioned","dimensioned"],["dimmensioning","dimensioning"],["dimmensions","dimensions"],["dimnension","dimension"],["dimnention","dimension"],["dimunitive","diminutive"],["dinamic","dynamic"],["dinamically","dynamically"],["dinamicaly","dynamically"],["dinamiclly","dynamically"],["dinamicly","dynamically"],["dinmaic","dynamic"],["dinteractively","interactively"],["diong","doing"],["diosese","diocese"],["diphtong","diphthong"],["diphtongs","diphthongs"],["diplacement","displacement"],["diplay","display"],["diplayed","displayed"],["diplaying","displaying"],["diplays","displays"],["diplomancy","diplomacy"],["dipthong","diphthong"],["dipthongs","diphthongs"],["dircet","direct"],["dircetories","directories"],["dircetory","directory"],["dirctly","directly"],["dirctories","directories"],["dirctory","directory"],["direccion","direction"],["direcctly","directly"],["direcctory","directory"],["direcctorys","directories"],["direcctries","directories"],["direcdories","directories"],["direcdory","directory"],["direcdorys","directories"],["direcion","direction"],["direcions","directions"],["direciton","direction"],["direcitonal","directional"],["direcitons","directions"],["direclty","directly"],["direcly","directly"],["direcories","directories"],["direcory","directory"],["direcotories","directories"],["direcotory","directory"],["direcotries","directories"],["direcotry","directory"],["direcoty","directory"],["directd","directed"],["directely","directly"],["directes","directs"],["directgories","directories"],["directgory","directory"],["directiories","directories"],["directiory","directory"],["directoies","directories"],["directon","direction"],["directoories","directories"],["directoory","directory"],["directores","directories"],["directoris","directories"],["directort","directory"],["directorty","directory"],["directorys","directories"],["directoty","directory"],["directove","directive"],["directoves","directives"],["directoy","directory"],["directpries","directories"],["directpry","directory"],["directries","directories"],["directrive","directive"],["directrives","directives"],["directrly","directly"],["directroies","directories"],["directrories","directories"],["directrory","directory"],["directroy","directory"],["directry","directory"],["directsion","direction"],["directsions","directions"],["directtories","directories"],["directtory","directory"],["directy","directly"],["direectly","directly"],["diregard","disregard"],["direktly","directly"],["direrctor","director"],["direrctories","directories"],["direrctors","directors"],["direrctory","directory"],["diretive","directive"],["diretly","directly"],["diretories","directories"],["diretory","directory"],["direvctory","directory"],["dirived","derived"],["dirrectly","directly"],["dirtectory","directory"],["dirtyed","dirtied"],["dirtyness","dirtiness"],["dirver","driver"],["disabe","disable"],["disabeling","disabling"],["disabels","disables"],["disabes","disables"],["disabilitiles","disabilities"],["disabilitily","disability"],["disabiltities","disabilities"],["disabiltitiy","disability"],["disabing","disabling"],["disabl","disable"],["disablle","disable"],["disadvantadge","disadvantage"],["disagreeed","disagreed"],["disagress","disagrees"],["disalb","disable"],["disalbe","disable"],["disalbed","disabled"],["disalbes","disables"],["disale","disable"],["disaled","disabled"],["disalow","disallow"],["disambigouate","disambiguate"],["disambiguaiton","disambiguation"],["disambiguiation","disambiguation"],["disapear","disappear"],["disapeard","disappeared"],["disapeared","disappeared"],["disapearing","disappearing"],["disapears","disappears"],["disapline","discipline"],["disapoint","disappoint"],["disapointed","disappointed"],["disapointing","disappointing"],["disappared","disappeared"],["disappearaing","disappearing"],["disappeard","disappeared"],["disappearred","disappeared"],["disapper","disappear"],["disapperar","disappear"],["disapperarance","disappearance"],["disapperared","disappeared"],["disapperars","disappears"],["disappered","disappeared"],["disappering","disappearing"],["disappers","disappears"],["disapporval","disapproval"],["disapporve","disapprove"],["disapporved","disapproved"],["disapporves","disapproves"],["disapporving","disapproving"],["disapprouval","disapproval"],["disapprouve","disapprove"],["disapprouved","disapproved"],["disapprouves","disapproves"],["disapprouving","disapproving"],["disaproval","disapproval"],["disard","discard"],["disariable","desirable"],["disassebled","disassembled"],["disassocate","disassociate"],["disassocation","disassociation"],["disasssembler","disassembler"],["disasterous","disastrous"],["disatisfaction","dissatisfaction"],["disatisfied","dissatisfied"],["disatrous","disastrous"],["disbale","disable"],["disbaled","disabled"],["disbales","disables"],["disbaling","disabling"],["disble","disable"],["disbled","disabled"],["discared","discarded"],["discareded","discarded"],["discarge","discharge"],["discconecct","disconnect"],["discconeccted","disconnected"],["discconeccting","disconnecting"],["discconecction","disconnection"],["discconecctions","disconnections"],["discconeccts","disconnects"],["discconect","disconnect"],["discconected","disconnected"],["discconecting","disconnecting"],["discconection","disconnection"],["discconections","disconnections"],["discconects","disconnects"],["discconeect","disconnect"],["discconeected","disconnected"],["discconeecting","disconnecting"],["discconeection","disconnection"],["discconeections","disconnections"],["discconeects","disconnects"],["discconenct","disconnect"],["discconencted","disconnected"],["discconencting","disconnecting"],["discconenction","disconnection"],["discconenctions","disconnections"],["discconencts","disconnects"],["discconet","disconnect"],["discconeted","disconnected"],["discconeting","disconnecting"],["discconetion","disconnection"],["discconetions","disconnections"],["discconets","disconnects"],["disccuss","discuss"],["discernable","discernible"],["dischare","discharge"],["discimenation","dissemination"],["disciplins","disciplines"],["disclamer","disclaimer"],["disconecct","disconnect"],["disconeccted","disconnected"],["disconeccting","disconnecting"],["disconecction","disconnection"],["disconecctions","disconnections"],["disconeccts","disconnects"],["disconect","disconnect"],["disconected","disconnected"],["disconecting","disconnecting"],["disconection","disconnection"],["disconections","disconnections"],["disconects","disconnects"],["disconeect","disconnect"],["disconeected","disconnected"],["disconeecting","disconnecting"],["disconeection","disconnection"],["disconeections","disconnections"],["disconeects","disconnects"],["disconenct","disconnect"],["disconencted","disconnected"],["disconencting","disconnecting"],["disconenction","disconnection"],["disconenctions","disconnections"],["disconencts","disconnects"],["disconet","disconnect"],["disconeted","disconnected"],["disconeting","disconnecting"],["disconetion","disconnection"],["disconetions","disconnections"],["disconets","disconnects"],["disconnec","disconnect"],["disconneced","disconnected"],["disconnet","disconnect"],["disconneted","disconnected"],["disconneting","disconnecting"],["disconnets","disconnects"],["disconnnect","disconnect"],["discontigious","discontiguous"],["discontigous","discontiguous"],["discontiguities","discontinuities"],["discontinous","discontinuous"],["discontinuos","discontinuous"],["discoraged","discouraged"],["discouranged","discouraged"],["discourarged","discouraged"],["discourrage","discourage"],["discourraged","discouraged"],["discove","discover"],["discoved","discovered"],["discovereability","discoverability"],["discoveribility","discoverability"],["discovey","discovery"],["discovr","discover"],["discovred","discovered"],["discovring","discovering"],["discovrs","discovers"],["discrace","disgrace"],["discraced","disgraced"],["discraceful","disgraceful"],["discracefully","disgracefully"],["discracefulness","disgracefulness"],["discraces","disgraces"],["discracing","disgracing"],["discrards","discards"],["discreminates","discriminates"],["discrepencies","discrepancies"],["discrepency","discrepancy"],["discrepicies","discrepancies"],["discribe","describe"],["discribed","described"],["discribes","describes"],["discribing","describing"],["discription","description"],["discriptions","descriptions"],["discriptor's","descriptor's"],["discriptor","descriptor"],["discriptors","descriptors"],["disctinction","distinction"],["disctinctive","distinctive"],["disctinguish","distinguish"],["disctionaries","dictionaries"],["disctionary","dictionary"],["discuassed","discussed"],["discused","discussed"],["discusion","discussion"],["discusions","discussions"],["discusson","discussion"],["discussons","discussions"],["discusting","disgusting"],["discuusion","discussion"],["disdvantage","disadvantage"],["disecting","dissecting"],["disection","dissection"],["diselect","deselect"],["disemination","dissemination"],["disenchanged","disenchanted"],["disencouraged","discouraged"],["disertation","dissertation"],["disfunctional","dysfunctional"],["disfunctionality","dysfunctionality"],["disgn","design"],["disgned","designed"],["disgner","designer"],["disgning","designing-"],["disgnostic","diagnostic"],["disgnostics","diagnostics"],["disgns","designs"],["disguisting","disgusting"],["disharge","discharge"],["disign","design"],["disignated","designated"],["disinguish","distinguish"],["disiplined","disciplined"],["disired","desired"],["disitributions","distributions"],["diskrete","discrete"],["diskretion","discretion"],["diskretization","discretization"],["diskretize","discretize"],["diskretized","discretized"],["diskrimination","discrimination"],["dislaimer","disclaimer"],["dislay","display"],["dislayed","displayed"],["dislaying","displaying"],["dislays","displays"],["dislpay","display"],["dislpayed","displayed"],["dislpaying","displaying"],["dislpays","displays"],["disnabled","disabled"],["disobediance","disobedience"],["disobediant","disobedient"],["disokay","display"],["disolve","dissolve"],["disolved","dissolved"],["disonnect","disconnect"],["disonnected","disconnected"],["disover","discover"],["disovered","discovered"],["disovering","discovering"],["disovery","discovery"],["dispached","dispatched"],["dispair","despair"],["dispalcement","displacement"],["dispalcements","displacements"],["dispaly","display"],["dispalyable","displayable"],["dispalyed","displayed"],["dispalyes","displays"],["dispalying","displaying"],["dispalys","displays"],["disparingly","disparagingly"],["disparite","disparate"],["dispatcgh","dispatch"],["dispatchs","dispatches"],["dispath","dispatch"],["dispathed","dispatched"],["dispathes","dispatches"],["dispathing","dispatching"],["dispay","display"],["dispayed","displayed"],["dispayes","displays"],["dispayport","displayport"],["dispays","displays"],["dispbibute","distribute"],["dispell","dispel"],["dispence","dispense"],["dispenced","dispensed"],["dispencing","dispensing"],["dispertion","dispersion"],["dispicable","despicable"],["dispite","despite"],["displa","display"],["displacemnt","displacement"],["displacemnts","displacements"],["displacment","displacement"],["displacments","displacements"],["displayd","displayed"],["displayied","displayed"],["displayig","displaying"],["disply","display"],["displyed","displayed"],["displying","displaying"],["displys","displays"],["dispode","dispose"],["disporue","disparue"],["disporve","disprove"],["disporved","disproved"],["disporves","disproves"],["disporving","disproving"],["disposel","disposal"],["dispossable","disposable"],["dispossal","disposal"],["disposse","dispose"],["dispossing","disposing"],["dispostion","disposition"],["disproportiate","disproportionate"],["disproportionatly","disproportionately"],["disputandem","disputandum"],["disregrad","disregard"],["disrete","discrete"],["disretion","discretion"],["disribution","distribution"],["disricts","districts"],["disrm","disarm"],["dissable","disable"],["dissabled","disabled"],["dissables","disables"],["dissabling","disabling"],["dissadvantage","disadvantage"],["dissadvantages","disadvantages"],["dissagreement","disagreement"],["dissagregation","dissaggregation"],["dissallow","disallow"],["dissallowed","disallowed"],["dissallowing","disallowing"],["dissallows","disallows"],["dissalow","disallow"],["dissalowed","disallowed"],["dissalowing","disallowing"],["dissalows","disallows"],["dissambiguate","disambiguate"],["dissamble","disassemble"],["dissambled","disassembled"],["dissambler","disassembler"],["dissambles","disassembles"],["dissamblies","disassemblies"],["dissambling","disassembling"],["dissambly","disassembly"],["dissapate","dissipate"],["dissapates","dissipates"],["dissapear","disappear"],["dissapearance","disappearance"],["dissapeard","disappeared"],["dissapeared","disappeared"],["dissapearing","disappearing"],["dissapears","disappears"],["dissaper","disappear"],["dissaperd","disappeared"],["dissapered","disappeared"],["dissapering","disappearing"],["dissapers","disappears"],["dissapoint","disappoint"],["dissapointed","disappointed"],["dissapointing","disappointing"],["dissapoints","disappoints"],["dissappear","disappear"],["dissappeard","disappeared"],["dissappeared","disappeared"],["dissappearing","disappearing"],["dissappears","disappears"],["dissapper","disappear"],["dissapperd","disappeared"],["dissappered","disappeared"],["dissappering","disappearing"],["dissappers","disappears"],["dissappointed","disappointed"],["dissapprove","disapprove"],["dissapproves","disapproves"],["dissarray","disarray"],["dissasemble","disassemble"],["dissasembled","disassembled"],["dissasembler","disassembler"],["dissasembles","disassembles"],["dissasemblies","disassemblies"],["dissasembling","disassembling"],["dissasembly","disassembly"],["dissasociate","disassociate"],["dissasociated","disassociated"],["dissasociates","disassociates"],["dissasociation","disassociation"],["dissassemble","disassemble"],["dissassembled","disassembled"],["dissassembler","disassembler"],["dissassembles","disassembles"],["dissassemblies","disassemblies"],["dissassembling","disassembling"],["dissassembly","disassembly"],["dissassociate","disassociate"],["dissassociated","disassociated"],["dissassociates","disassociates"],["dissassociating","disassociating"],["dissaster","disaster"],["dissasters","disasters"],["dissble","disable"],["dissbled","disabled"],["dissbles","disables"],["dissbling","disabling"],["dissconect","disconnect"],["dissconnect","disconnect"],["dissconnected","disconnected"],["dissconnects","disconnects"],["disscover","discover"],["disscovered","discovered"],["disscovering","discovering"],["disscovers","discovers"],["disscovery","discovery"],["dissct","dissect"],["disscted","dissected"],["disscting","dissecting"],["dissctor","dissector"],["dissctors","dissectors"],["disscts","dissects"],["disscuesed","discussed"],["disscus","discuss"],["disscused","discussed"],["disscuses","discusses"],["disscusing","discussing"],["disscusion","discussion"],["disscuss","discuss"],["disscussed","discussed"],["disscusses","discusses"],["disscussing","discussing"],["disscussion","discussion"],["disscussions","discussions"],["disshearteningly","dishearteningly"],["dissimialr","dissimilar"],["dissimialrity","dissimilarity"],["dissimialrly","dissimilarly"],["dissimiar","dissimilar"],["dissimilarily","dissimilarly"],["dissimilary","dissimilarly"],["dissimilat","dissimilar"],["dissimilia","dissimilar"],["dissimiliar","dissimilar"],["dissimiliarity","dissimilarity"],["dissimiliarly","dissimilarly"],["dissimiliarty","dissimilarity"],["dissimiliary","dissimilarity"],["dissimillar","dissimilar"],["dissimlar","dissimilar"],["dissimlarlity","dissimilarity"],["dissimlarly","dissimilarly"],["dissimliar","dissimilar"],["dissimliarly","dissimilarly"],["dissimmetric","dissymmetric"],["dissimmetrical","dissymmetrical"],["dissimmetry","dissymmetry"],["dissmantle","dismantle"],["dissmantled","dismantled"],["dissmantles","dismantles"],["dissmantling","dismantling"],["dissmis","dismiss"],["dissmised","dismissed"],["dissmises","dismisses"],["dissmising","dismissing"],["dissmiss","dismiss"],["dissmissed","dismissed"],["dissmisses","dismisses"],["dissmissing","dismissing"],["dissobediance","disobedience"],["dissobediant","disobedient"],["dissobedience","disobedience"],["dissobedient","disobedient"],["dissplay","display"],["dissrupt","disrupt"],["dissrupted","disrupted"],["dissrupting","disrupting"],["dissrupts","disrupts"],["disssemble","disassemble"],["disssembled","disassembled"],["disssembler","disassembler"],["disssembles","disassembles"],["disssemblies","disassemblies"],["disssembling","disassembling"],["disssembly","disassembly"],["disssociate","dissociate"],["disssociated","dissociated"],["disssociates","dissociates"],["disssociating","dissociating"],["distaced","distanced"],["distange","distance"],["distanse","distance"],["distantce","distance"],["distarct","distract"],["distater","disaster"],["distengish","distinguish"],["distibute","distribute"],["distibuted","distributed"],["distibutes","distributes"],["distibuting","distributing"],["distibution","distribution"],["distibutions","distributions"],["distiction","distinction"],["distictly","distinctly"],["distiguish","distinguish"],["distiguished","distinguished"],["distinative","distinctive"],["distingish","distinguish"],["distingished","distinguished"],["distingishes","distinguishes"],["distingishing","distinguishing"],["distingiush","distinguish"],["distingquished","distinguished"],["distinguise","distinguish"],["distinguised","distinguished"],["distinguises","distinguishes"],["distingush","distinguish"],["distingushed","distinguished"],["distingushes","distinguishes"],["distingushing","distinguishing"],["distingusih","distinguish"],["distinquish","distinguish"],["distinquishable","distinguishable"],["distinquished","distinguished"],["distinquishes","distinguishes"],["distinquishing","distinguishing"],["distintions","distinctions"],["distirbute","distribute"],["distirbuted","distributed"],["distirbutes","distributes"],["distirbuting","distributing"],["distirbution","distribution"],["distirbutions","distributions"],["distirted","distorted"],["distnace","distance"],["distnaces","distances"],["distnce","distance"],["distnces","distances"],["distnct","distinct"],["distncte","distance"],["distnctes","distances"],["distnguish","distinguish"],["distnguished","distinguished"],["distniguish","distinguish"],["distniguished","distinguished"],["distorsion","distortion"],["distorsional","distortional"],["distorsions","distortions"],["distrbute","distribute"],["distrbuted","distributed"],["distrbutes","distributes"],["distrbuting","distributing"],["distrbution","distribution"],["distrbutions","distributions"],["distrct","district"],["distrcts","districts"],["distrebuted","distributed"],["distribtion","distribution"],["distribtions","distributions"],["distribtuion","distribution"],["distribtuions","distributions"],["distribtution","distributions"],["distribue","distribute"],["distribued","distributed"],["distribues","distributes"],["distribuion","distribution"],["distribuite","distribute"],["distribuited","distributed"],["distribuiting","distributing"],["distribuition","distribution"],["distribuitng","distributing"],["distribure","distribute"],["districct","district"],["distrobute","distribute"],["distrobuted","distributed"],["distrobutes","distributes"],["distrobuting","distributing"],["distrobution","distribution"],["distrobutions","distributions"],["distrobuts","distributes"],["distroname","distro name"],["distroying","destroying"],["distrub","disturb"],["distrubiotion","distribution"],["distrubite","distribute"],["distrubtion","distribution"],["distrubute","distribute"],["distrubuted","distributed"],["distrubution","distribution"],["distrubutions","distributions"],["distrubutor","distributor"],["distrubutors","distributors"],["distruction","destruction"],["distructive","destructive"],["distructor","destructor"],["distructors","destructors"],["distuingish","distinguish"],["disuade","dissuade"],["disucssion","discussion"],["disucssions","discussions"],["disucussion","discussion"],["disussion","discussion"],["disussions","discussions"],["disutils","distutils"],["ditance","distance"],["ditial","digital"],["ditinguishes","distinguishes"],["ditorconfig","editorconfig"],["ditribute","distribute"],["ditributed","distributed"],["ditribution","distribution"],["ditributions","distributions"],["divde","divide"],["divded","divided"],["divdes","divides"],["divding","dividing"],["divertion","diversion"],["divertions","diversions"],["divet","divot"],["divice","device"],["divicer","divider"],["divion","division"],["divisable","divisible"],["divisior","divisor"],["divison","division"],["divisons","divisions"],["divrese","diverse"],["divsion","division"],["divsions","divisions"],["divsiors","divisors"],["dloating","floating"],["dnamically","dynamically"],["dne","done"],["dnymaic","dynamic"],["do'nt","don't"],["doagonal","diagonal"],["doagonals","diagonals"],["doalog","dialog"],["doamins","domains"],["doasn't","doesn't"],["doble","double"],["dobled","doubled"],["dobles","doubles"],["dobling","doubling"],["doccument","document"],["doccumented","documented"],["doccuments","documents"],["dockson","dachshund"],["docmenetation","documentation"],["docmuent","document"],["docmunet","document"],["docmunetation","documentation"],["docmuneted","documented"],["docmuneting","documenting"],["docmunets","documents"],["docoment","document"],["docomentation","documentation"],["docomented","documented"],["docomenting","documenting"],["docoments","documents"],["docrines","doctrines"],["docstatistik","docstatistic"],["docsund","dachshund"],["doctines","doctrines"],["doctorial","doctoral"],["docucument","document"],["docuement","document"],["docuements","documents"],["docuemnt","document"],["docuemnts","documents"],["docuemtn","document"],["docuemtnation","documentation"],["docuemtned","documented"],["docuemtning","documenting"],["docuemtns","documents"],["docuent","document"],["docuentation","documentation"],["documant","document"],["documantation","documentation"],["documants","documents"],["documation","documentation"],["documemt","document"],["documen","document"],["documenatation","documentation"],["documenation","documentation"],["documenatry","documentary"],["documenet","document"],["documenetation","documentation"],["documeneted","documented"],["documeneter","documenter"],["documeneters","documenters"],["documeneting","documenting"],["documenets","documents"],["documentaion","documentation"],["documentaiton","documentation"],["documentataion","documentation"],["documentataions","documentations"],["documentaton","documentation"],["documentes","documents"],["documention","documentation"],["documetation","documentation"],["documetnation","documentation"],["documment","document"],["documments","documents"],["documnet","document"],["documnetation","documentation"],["documument","document"],["docunment","document"],["doed","does"],["doen's","doesn't"],["doen't","doesn't"],["doen","done"],["doens't","doesn't"],["doens","does"],["doensn't","doesn't"],["does'nt","doesn't"],["does't","doesn't"],["doese't","doesn't"],["doese","does"],["doesen't","doesn't"],["doesent'","doesn't"],["doesent","doesn't"],["doesits","does its"],["doesn'","doesn't"],["doesn't't","doesn't"],["doesn;t","doesn't"],["doesnexist","doesn't exist"],["doesnt'","doesn't"],["doesnt't","doesn't"],["doesnt;","doesn't"],["doess","does"],["doestn't","doesn't"],["doign","doing"],["doiing","doing"],["doiuble","double"],["doiubled","doubled"],["dokc","dock"],["dokced","docked"],["dokcer","docker"],["dokcing","docking"],["dokcre","docker"],["dokcs","docks"],["doller","dollar"],["dollers","dollars"],["dollor","dollar"],["dollors","dollars"],["domait","domain"],["doman","domain"],["domans","domains"],["domension","dimension"],["domensions","dimensions"],["domian","domain"],["domians","domains"],["dominanted","dominated"],["dominanting","dominating"],["dominantion","domination"],["dominaton","domination"],["dominent","dominant"],["dominiant","dominant"],["domonstrate","demonstrate"],["domonstrates","demonstrates"],["domonstrating","demonstrating"],["domonstration","demonstration"],["domonstrations","demonstrations"],["donain","domain"],["donains","domains"],["donejun","dungeon"],["donejuns","dungeons"],["donig","doing"],["donn't","don't"],["donnot","do not"],["dont'","don't"],["dont't","don't"],["donwload","download"],["donwloaded","downloaded"],["donwloading","downloading"],["donwloads","downloads"],["doocument","document"],["doocumentaries","documentaries"],["doocumentary","documentary"],["doocumentation","documentation"],["doocumentations","documentations"],["doocumented","documented"],["doocumenting","documenting"],["doocuments","documents"],["doorjam","doorjamb"],["dorce","force"],["dorced","forced"],["dorceful","forceful"],["dordered","ordered"],["dorment","dormant"],["dorp","drop"],["dosclosed","disclosed"],["doscloses","discloses"],["dosclosing","disclosing"],["dosclosure","disclosure"],["dosclosures","disclosures"],["dosen't","doesn't"],["dosen;t","doesn't"],["dosens","dozens"],["dosent'","doesn't"],["dosent","doesn't"],["dosent;","doesn't"],["dosn't","doesn't"],["dosn;t","doesn't"],["dosnt","doesn't"],["dosposing","disposing"],["dosument","document"],["dosuments","documents"],["dota","data"],["doube","double"],["doube-click","double-click"],["doube-clicked","double-clicked"],["doube-clicks","double-clicks"],["doube-quote","double-quote"],["doube-quoted","double-quoted"],["doube-word","double-word"],["doube-wprd","double-word"],["doubeclick","double-click"],["doubeclicked","double-clicked"],["doubeclicks","double-clicks"],["doubel","double"],["doubele-click","double-click"],["doubele-clicked","double-clicked"],["doubele-clicks","double-clicks"],["doubeleclick","double-click"],["doubeleclicked","double-clicked"],["doubeleclicks","double-clicks"],["doubely","doubly"],["doubes","doubles"],["doublde","double"],["doublded","doubled"],["doubldes","doubles"],["doubleclick","double-click"],["doublely","doubly"],["doubletquote","doublequote"],["doubth","doubt"],["doubthed","doubted"],["doubthing","doubting"],["doubths","doubts"],["doucment","document"],["doucmentated","documented"],["doucmentation","documentation"],["doucmented","documented"],["doucmenter","documenter"],["doucmenters","documenters"],["doucmentes","documents"],["doucmenting","documenting"],["doucments","documents"],["douible","double"],["douibled","doubled"],["doulbe","double"],["doumentc","document"],["dout","doubt"],["dowgrade","downgrade"],["dowlink","downlink"],["dowlinks","downlinks"],["dowload","download"],["dowloaded","downloaded"],["dowloader","downloader"],["dowloaders","downloaders"],["dowloading","downloading"],["dowloads","downloads"],["downagrade","downgrade"],["downagraded","downgraded"],["downagrades","downgrades"],["downagrading","downgrading"],["downgade","downgrade"],["downgaded","downgraded"],["downgades","downgrades"],["downgading","downgrading"],["downgarade","downgrade"],["downgaraded","downgraded"],["downgarades","downgrades"],["downgarading","downgrading"],["downgarde","downgrade"],["downgarded","downgraded"],["downgardes","downgrades"],["downgarding","downgrading"],["downgarte","downgrade"],["downgarted","downgraded"],["downgartes","downgrades"],["downgarting","downgrading"],["downgradde","downgrade"],["downgradded","downgraded"],["downgraddes","downgrades"],["downgradding","downgrading"],["downgradei","downgrade"],["downgradingn","downgrading"],["downgrate","downgrade"],["downgrated","downgraded"],["downgrates","downgrades"],["downgrating","downgrading"],["downlad","download"],["downladed","downloaded"],["downlading","downloading"],["downlads","downloads"],["downlaod","download"],["downlaoded","downloaded"],["downlaodes","downloads"],["downlaoding","downloading"],["downlaods","downloads"],["downloadmanger","downloadmanager"],["downlod","download"],["downloded","downloaded"],["downloding","downloading"],["downlods","downloads"],["downlowd","download"],["downlowded","downloaded"],["downlowding","downloading"],["downlowds","downloads"],["downoad","download"],["downoaded","downloaded"],["downoading","downloading"],["downoads","downloads"],["downoload","download"],["downoloaded","downloaded"],["downoloading","downloading"],["downoloads","downloads"],["downrade","downgrade"],["downraded","downgraded"],["downrades","downgrades"],["downrading","downgrading"],["downrgade","downgrade"],["downrgaded","downgraded"],["downrgades","downgrades"],["downrgading","downgrading"],["downsteram","downstream"],["downsteramed","downstreamed"],["downsteramer","downstreamer"],["downsteramers","downstreamers"],["downsteraming","downstreaming"],["downsterams","downstreams"],["dows","does"],["dowt","doubt"],["doxgen","doxygen"],["doygen","doxygen"],["dpeends","depends"],["dpendent","dependent"],["dpkg-buildpackge","dpkg-buildpackage"],["dpkg-buildpackges","dpkg-buildpackages"],["dpuble","double"],["dpubles","doubles"],["draconain","draconian"],["dragable","draggable"],["draged","dragged"],["draging","dragging"],["draing","drawing"],["drammatic","dramatic"],["dramtic","dramatic"],["dran","drawn"],["drastical","drastically"],["drasticaly","drastically"],["drats","drafts"],["draughtman","draughtsman"],["Dravadian","Dravidian"],["draview","drawview"],["drawack","drawback"],["drawacks","drawbacks"],["drawm","drawn"],["drawng","drawing"],["dreasm","dreams"],["dreawn","drawn"],["dregee","degree"],["dregees","degrees"],["dregree","degree"],["dregrees","degrees"],["drescription","description"],["drescriptions","descriptions"],["driagram","diagram"],["driagrammed","diagrammed"],["driagramming","diagramming"],["driagrams","diagrams"],["driectly","directly"],["drity","dirty"],["driveing","driving"],["drivr","driver"],["drnik","drink"],["drob","drop"],["dropabel","droppable"],["dropable","droppable"],["droped","dropped"],["droping","dropping"],["droppend","dropped"],["droppped","dropped"],["dropse","drops"],["droput","dropout"],["druing","during"],["druming","drumming"],["drummless","drumless"],["drvier","driver"],["drwaing","drawing"],["drwawing","drawing"],["drwawings","drawings"],["dscrete","discrete"],["dscretion","discretion"],["dscribed","described"],["dsiable","disable"],["dsiabled","disabled"],["dsplays","displays"],["dstination","destination"],["dstinations","destinations"],["dthe","the"],["dtoring","storing"],["dubios","dubious"],["dublicade","duplicate"],["dublicat","duplicate"],["dublicate","duplicate"],["dublicated","duplicated"],["dublicates","duplicates"],["dublication","duplication"],["ducment","document"],["ducument","document"],["duirng","during"],["dulicate","duplicate"],["dum","dumb"],["dumplicate","duplicate"],["dumplicated","duplicated"],["dumplicates","duplicates"],["dumplicating","duplicating"],["duoblequote","doublequote"],["dupicate","duplicate"],["duplacate","duplicate"],["duplacated","duplicated"],["duplacates","duplicates"],["duplacation","duplication"],["duplacte","duplicate"],["duplacted","duplicated"],["duplactes","duplicates"],["duplaction","duplication"],["duplaicate","duplicate"],["duplaicated","duplicated"],["duplaicates","duplicates"],["duplaication","duplication"],["duplate","duplicate"],["duplated","duplicated"],["duplates","duplicates"],["duplation","duplication"],["duplcate","duplicate"],["duplciate","duplicate"],["dupliacate","duplicate"],["dupliacates","duplicates"],["dupliace","duplicate"],["dupliacte","duplicate"],["dupliacted","duplicated"],["dupliactes","duplicates"],["dupliagte","duplicate"],["dupliate","duplicate"],["dupliated","duplicated"],["dupliates","duplicates"],["dupliating","duplicating"],["dupliation","duplication"],["dupliations","duplications"],["duplicat","duplicate"],["duplicatd","duplicated"],["duplicats","duplicates"],["dupplicate","duplicate"],["dupplicated","duplicated"],["dupplicates","duplicates"],["dupplicating","duplicating"],["dupplication","duplication"],["dupplications","duplications"],["durationm","duration"],["durectories","directories"],["durectory","directory"],["dureing","during"],["durig","during"],["durining","during"],["durning","during"],["durring","during"],["duting","during"],["dyanamically","dynamically"],["dyanmic","dynamic"],["dyanmically","dynamically"],["dyas","dryas"],["dymamically","dynamically"],["dynamc","dynamic"],["dynamcly","dynamically"],["dynamcs","dynamics"],["dynamicaly","dynamically"],["dynamiclly","dynamically"],["dynamicly","dynamically"],["dynaminc","dynamic"],["dynamincal","dynamical"],["dynamincally","dynamically"],["dynamincs","dynamics"],["dynamlic","dynamic"],["dynamlically","dynamically"],["dynically","dynamically"],["dynmaic","dynamic"],["dynmaically","dynamically"],["dynmic","dynamic"],["dynmically","dynamically"],["dynmics","dynamics"],["eabled","enabled"],["eacf","each"],["eacg","each"],["eachother","each other"],["eachs","each"],["eactly","exactly"],["eagrely","eagerly"],["eahc","each"],["eailier","earlier"],["eaiser","easier"],["ealier","earlier"],["ealiest","earliest"],["eample","example"],["eamples","examples"],["eanable","enable"],["eanble","enable"],["earleir","earlier"],["earler","earlier"],["earliear","earlier"],["earlies","earliest"],["earlist","earliest"],["earlyer","earlier"],["earnt","earned"],["earpeice","earpiece"],["easely","easily"],["easili","easily"],["easiliy","easily"],["easilly","easily"],["easist","easiest"],["easiy","easily"],["easly","easily"],["easyer","easier"],["eaxct","exact"],["ebale","enable"],["ebaled","enabled"],["EBCIDC","EBCDIC"],["ebedded","embedded"],["eccessive","excessive"],["ecclectic","eclectic"],["eceonomy","economy"],["ecept","except"],["eception","exception"],["eceptions","exceptions"],["ecidious","deciduous"],["eclise","eclipse"],["eclispe","eclipse"],["ecnetricity","eccentricity"],["ecognized","recognized"],["ecomonic","economic"],["ecounter","encounter"],["ecountered","encountered"],["ecountering","encountering"],["ecounters","encounters"],["ecplicit","explicit"],["ecplicitly","explicitly"],["ecspecially","especially"],["ect","etc"],["ecxept","except"],["ecxite","excite"],["ecxited","excited"],["ecxites","excites"],["ecxiting","exciting"],["ecxtracted","extracted"],["EDCDIC","EBCDIC"],["eddge","edge"],["eddges","edges"],["edditable","editable"],["ede","edge"],["ediable","editable"],["edige","edge"],["ediges","edges"],["ediit","edit"],["ediiting","editing"],["ediitor","editor"],["ediitors","editors"],["ediits","edits"],["editedt","edited"],["editiing","editing"],["editoro","editor"],["editot","editor"],["editots","editors"],["editt","edit"],["editted","edited"],["editter","editor"],["editting","editing"],["edittor","editor"],["edn","end"],["ednif","endif"],["edxpected","expected"],["eearly","early"],["eeeprom","EEPROM"],["eescription","description"],["eevery","every"],["eeverything","everything"],["eeverywhere","everywhere"],["eextract","extract"],["eextracted","extracted"],["eextracting","extracting"],["eextraction","extraction"],["eextracts","extracts"],["efect","effect"],["efective","effective"],["efectively","effectively"],["efel","evil"],["eferences","references"],["efetivity","effectivity"],["effciency","efficiency"],["effcient","efficient"],["effciently","efficiently"],["effctive","effective"],["effctively","effectively"],["effeciency","efficiency"],["effecient","efficient"],["effeciently","efficiently"],["effecitvely","effectively"],["effeck","effect"],["effecked","effected"],["effecks","effects"],["effeckt","effect"],["effectice","effective"],["effecticely","effectively"],["effectiviness","effectiveness"],["effectivness","effectiveness"],["effectly","effectively"],["effedts","effects"],["effekt","effect"],["effexts","effects"],["efficcient","efficient"],["efficencty","efficiency"],["efficency","efficiency"],["efficent","efficient"],["efficently","efficiently"],["effiency","efficiency"],["effient","efficient"],["effiently","efficiently"],["effulence","effluence"],["eforceable","enforceable"],["egal","equal"],["egals","equals"],["egde","edge"],["egdes","edges"],["ege","edge"],["egenral","general"],["egenralise","generalise"],["egenralised","generalised"],["egenralises","generalises"],["egenralize","generalize"],["egenralized","generalized"],["egenralizes","generalizes"],["egenrally","generally"],["ehance","enhance"],["ehanced","enhanced"],["ehancement","enhancement"],["ehancements","enhancements"],["ehenever","whenever"],["ehough","enough"],["ehr","her"],["ehternet","Ethernet"],["ehthernet","ethernet"],["eighter","either"],["eihter","either"],["einstance","instance"],["eisntance","instance"],["eiter","either"],["eith","with"],["elaspe","elapse"],["elasped","elapsed"],["elaspes","elapses"],["elasping","elapsing"],["elction","election"],["elctromagnetic","electromagnetic"],["elease","release"],["eleased","released"],["eleases","releases"],["eleate","relate"],["electical","electrical"],["electirc","electric"],["electircal","electrical"],["electrial","electrical"],["electricly","electrically"],["electricty","electricity"],["electrinics","electronics"],["electriv","electric"],["electrnoics","electronics"],["eleemnt","element"],["eleent","element"],["elegible","eligible"],["elelement","element"],["elelements","elements"],["elelment","element"],["elelmental","elemental"],["elelmentary","elementary"],["elelments","elements"],["elemant","element"],["elemantary","elementary"],["elemement","element"],["elemements","elements"],["elememt","element"],["elemen","element"],["elemenent","element"],["elemenental","elemental"],["elemenents","elements"],["elemenet","element"],["elemenets","elements"],["elemens","elements"],["elemenst","elements"],["elementay","elementary"],["elementry","elementary"],["elemet","element"],["elemetal","elemental"],["elemetn","element"],["elemetns","elements"],["elemets","elements"],["eleminate","eliminate"],["eleminated","eliminated"],["eleminates","eliminates"],["eleminating","eliminating"],["elemnets","elements"],["elemnt","element"],["elemntal","elemental"],["elemnts","elements"],["elemt","element"],["elemtary","elementary"],["elemts","elements"],["elenment","element"],["eles","else"],["eletricity","electricity"],["eletromagnitic","electromagnetic"],["eletronic","electronic"],["elgible","eligible"],["elicided","elicited"],["eligable","eligible"],["elimentary","elementary"],["elimiante","eliminate"],["elimiate","eliminate"],["eliminetaion","elimination"],["elimintate","eliminate"],["eliminte","eliminate"],["elimnated","eliminated"],["eliptic","elliptic"],["eliptical","elliptical"],["elipticity","ellipticity"],["ellapsed","elapsed"],["ellected","elected"],["ellement","element"],["ellemental","elemental"],["ellementals","elementals"],["ellements","elements"],["elliminate","eliminate"],["elliminated","eliminated"],["elliminates","eliminates"],["elliminating","eliminating"],["ellipsises","ellipsis"],["ellision","elision"],["elmenet","element"],["elmenets","elements"],["elment","element"],["elments","elements"],["elminate","eliminate"],["elminated","eliminated"],["elminates","eliminates"],["elminating","eliminating"],["elphant","elephant"],["elsef","elseif"],["elsehwere","elsewhere"],["elseof","elseif"],["elseswhere","elsewhere"],["elsewehere","elsewhere"],["elsewere","elsewhere"],["elsewhwere","elsewhere"],["elsiof","elseif"],["elsof","elseif"],["emabaroged","embargoed"],["emable","enable"],["emabled","enabled"],["emables","enables"],["emabling","enabling"],["emailling","emailing"],["embarass","embarrass"],["embarassed","embarrassed"],["embarasses","embarrasses"],["embarassing","embarrassing"],["embarassment","embarrassment"],["embargos","embargoes"],["embarras","embarrass"],["embarrased","embarrassed"],["embarrasing","embarrassing"],["embarrasingly","embarrassingly"],["embarrasment","embarrassment"],["embbedded","embedded"],["embbeded","embedded"],["embdder","embedder"],["embdedded","embedded"],["embebbed","embedded"],["embedd","embed"],["embeddded","embedded"],["embeddeding","embedding"],["embedds","embeds"],["embeded","embedded"],["embededded","embedded"],["embeed","embed"],["embezelled","embezzled"],["emblamatic","emblematic"],["embold","embolden"],["embrodery","embroidery"],["emcompass","encompass"],["emcompassed","encompassed"],["emcompassing","encompassing"],["emedded","embedded"],["emegrency","emergency"],["emenet","element"],["emenets","elements"],["emiited","emitted"],["eminate","emanate"],["eminated","emanated"],["emision","emission"],["emited","emitted"],["emiting","emitting"],["emlation","emulation"],["emmediately","immediately"],["emminently","eminently"],["emmisaries","emissaries"],["emmisarries","emissaries"],["emmisarry","emissary"],["emmisary","emissary"],["emmision","emission"],["emmisions","emissions"],["emmit","emit"],["emmited","emitted"],["emmiting","emitting"],["emmits","emits"],["emmitted","emitted"],["emmitting","emitting"],["emnity","enmity"],["emoty","empty"],["emough","enough"],["emought","enough"],["emperical","empirical"],["emperically","empirically"],["emphaised","emphasised"],["emphsis","emphasis"],["emphysyma","emphysema"],["empiracally","empirically"],["empiricaly","empirically"],["emplyed","employed"],["emplyee","employee"],["emplyees","employees"],["emplyer","employer"],["emplyers","employers"],["emplying","employing"],["emplyment","employment"],["emplyments","employments"],["emporer","emperor"],["emprically","empirically"],["emprisoned","imprisoned"],["emprove","improve"],["emproved","improved"],["emprovement","improvement"],["emprovements","improvements"],["emproves","improves"],["emproving","improving"],["emptniess","emptiness"],["emptry","empty"],["emptyed","emptied"],["emptyy","empty"],["empy","empty"],["emtied","emptied"],["emties","empties"],["emtpies","empties"],["emtpy","empty"],["emty","empty"],["emtying","emptying"],["emultor","emulator"],["emultors","emulators"],["enabe","enable"],["enabel","enable"],["enabeled","enabled"],["enabeling","enabling"],["enabing","enabling"],["enabledi","enabled"],["enableing","enabling"],["enablen","enabled"],["enalbe","enable"],["enalbed","enabled"],["enalbes","enables"],["enameld","enameled"],["enaugh","enough"],["enbable","enable"],["enbabled","enabled"],["enbabling","enabling"],["enbale","enable"],["enbaled","enabled"],["enbales","enables"],["enbaling","enabling"],["enbedding","embedding"],["enble","enable"],["encapsualtes","encapsulates"],["encapsulatzion","encapsulation"],["encapsultion","encapsulation"],["encaspulate","encapsulate"],["encaspulated","encapsulated"],["encaspulates","encapsulates"],["encaspulating","encapsulating"],["encaspulation","encapsulation"],["enchanced","enhanced"],["enclosng","enclosing"],["enclosue","enclosure"],["enclosung","enclosing"],["enclude","include"],["encluding","including"],["encocde","encode"],["encocded","encoded"],["encocder","encoder"],["encocders","encoders"],["encocdes","encodes"],["encocding","encoding"],["encocdings","encodings"],["encodingt","encoding"],["encodning","encoding"],["encodnings","encodings"],["encompas","encompass"],["encompased","encompassed"],["encompases","encompasses"],["encompasing","encompassing"],["enconde","encode"],["enconded","encoded"],["enconder","encoder"],["enconders","encoders"],["encondes","encodes"],["enconding","encoding"],["encondings","encodings"],["encorded","encoded"],["encorder","encoder"],["encorders","encoders"],["encording","encoding"],["encordings","encodings"],["encorporating","incorporating"],["encoser","encoder"],["encosers","encoders"],["encosure","enclosure"],["encounterd","encountered"],["encountres","encounters"],["encouraing","encouraging"],["encouter","encounter"],["encoutered","encountered"],["encouters","encounters"],["encoutner","encounter"],["encoutners","encounters"],["encouttering","encountering"],["encrcypt","encrypt"],["encrcypted","encrypted"],["encrcyption","encryption"],["encrcyptions","encryptions"],["encrcypts","encrypts"],["encript","encrypt"],["encripted","encrypted"],["encription","encryption"],["encriptions","encryptions"],["encripts","encrypts"],["encrpt","encrypt"],["encrpted","encrypted"],["encrption","encryption"],["encrptions","encryptions"],["encrpts","encrypts"],["encrupted","encrypted"],["encrypiton","encryption"],["encryptiion","encryption"],["encryptio","encryption"],["encryptiong","encryption"],["encrytion","encryption"],["encrytped","encrypted"],["encrytption","encryption"],["encupsulates","encapsulates"],["encylopedia","encyclopedia"],["encypted","encrypted"],["encyption","encryption"],["endcoded","encoded"],["endcoder","encoder"],["endcoders","encoders"],["endcodes","encodes"],["endcoding","encoding"],["endcodings","encodings"],["endding","ending"],["ende","end"],["endevors","endeavors"],["endevour","endeavour"],["endfi","endif"],["endianes","endianness"],["endianess","endianness"],["endianity","endianness"],["endiannes","endianness"],["endig","ending"],["endiness","endianness"],["endnoden","endnode"],["endoint","endpoint"],["endolithes","endoliths"],["endpints","endpoints"],["endpiont","endpoint"],["endpionts","endpoints"],["endpont","endpoint"],["endponts","endpoints"],["endsup","ends up"],["enduce","induce"],["eneables","enables"],["enebale","enable"],["enebaled","enabled"],["eneble","enable"],["ened","need"],["enegeries","energies"],["enegery","energy"],["enehanced","enhanced"],["enery","energy"],["eneter","enter"],["enetered","entered"],["enetities","entities"],["enetity","entity"],["eneumeration","enumeration"],["eneumerations","enumerations"],["eneumretaion","enumeration"],["eneumretaions","enumerations"],["enew","new"],["enflamed","inflamed"],["enforcable","enforceable"],["enforceing","enforcing"],["enforcmement","enforcement"],["enforcment","enforcement"],["enfore","enforce"],["enfored","enforced"],["enfores","enforces"],["enforncing","enforcing"],["engagment","engagement"],["engeneer","engineer"],["engeneering","engineering"],["engery","energy"],["engieer","engineer"],["engieneer","engineer"],["engieneers","engineers"],["enginee","engine"],["enginge","engine"],["enginin","engine"],["enginineer","engineer"],["engoug","enough"],["enhabce","enhance"],["enhabced","enhanced"],["enhabces","enhances"],["enhabcing","enhancing"],["enhace","enhance"],["enhaced","enhanced"],["enhacement","enhancement"],["enhacements","enhancements"],["enhancd","enhanced"],["enhancment","enhancement"],["enhancments","enhancements"],["enhaned","enhanced"],["enhence","enhance"],["enhenced","enhanced"],["enhencement","enhancement"],["enhencements","enhancements"],["enhencment","enhancement"],["enhencments","enhancements"],["enironment","environment"],["enironments","environments"],["enities","entities"],["enitities","entities"],["enitity","entity"],["enitre","entire"],["enivornment","environment"],["enivornments","environments"],["enivronment","environment"],["enlargment","enlargement"],["enlargments","enlargements"],["enlightnment","enlightenment"],["enlose","enclose"],["enmpty","empty"],["enmum","enum"],["ennpoint","endpoint"],["enntries","entries"],["enocde","encode"],["enocded","encoded"],["enocder","encoder"],["enocders","encoders"],["enocdes","encodes"],["enocding","encoding"],["enocdings","encodings"],["enogh","enough"],["enoght","enough"],["enoguh","enough"],["enouch","enough"],["enoucnter","encounter"],["enoucntered","encountered"],["enoucntering","encountering"],["enoucnters","encounters"],["enouf","enough"],["enoufh","enough"],["enought","enough"],["enoughts","enough"],["enougth","enough"],["enouh","enough"],["enouhg","enough"],["enouncter","encounter"],["enounctered","encountered"],["enounctering","encountering"],["enouncters","encounters"],["enoung","enough"],["enoungh","enough"],["enounter","encounter"],["enountered","encountered"],["enountering","encountering"],["enounters","encounters"],["enouph","enough"],["enourage","encourage"],["enouraged","encouraged"],["enourages","encourages"],["enouraging","encouraging"],["enourmous","enormous"],["enourmously","enormously"],["enouth","enough"],["enouugh","enough"],["enpoint","endpoint"],["enpoints","endpoints"],["enque","enqueue"],["enqueing","enqueuing"],["enrties","entries"],["enrtries","entries"],["enrtry","entry"],["enrty","entry"],["ensconsed","ensconced"],["entaglements","entanglements"],["entended","intended"],["entension","extension"],["entensions","extensions"],["ententries","entries"],["enterance","entrance"],["enteratinment","entertainment"],["entereing","entering"],["enterie","entry"],["enteries","entries"],["enterily","entirely"],["enterprice","enterprise"],["enterprices","enterprises"],["entery","entry"],["enteties","entities"],["entety","entity"],["enthaplies","enthalpies"],["enthaply","enthalpy"],["enthousiasm","enthusiasm"],["enthusiam","enthusiasm"],["enthusiatic","enthusiastic"],["entierly","entirely"],["entireity","entirety"],["entires","entries"],["entirey","entirely"],["entirity","entirety"],["entirly","entirely"],["entitee","entity"],["entitees","entities"],["entites","entities"],["entiti","entity"],["entitie","entity"],["entitites","entities"],["entitities","entities"],["entitity","entity"],["entitiy","entity"],["entitiys","entities"],["entitlied","entitled"],["entitys","entities"],["entoties","entities"],["entoty","entity"],["entrace","entrance"],["entraced","entranced"],["entraces","entrances"],["entrepeneur","entrepreneur"],["entrepeneurs","entrepreneurs"],["entriess","entries"],["entrophy","entropy"],["enttries","entries"],["enttry","entry"],["enulation","emulation"],["enumarate","enumerate"],["enumarated","enumerated"],["enumarates","enumerates"],["enumarating","enumerating"],["enumation","enumeration"],["enumearate","enumerate"],["enumearation","enumeration"],["enumerble","enumerable"],["enumertaion","enumeration"],["enusre","ensure"],["envaluation","evaluation"],["enveloppe","envelope"],["envelopped","enveloped"],["enveloppes","envelopes"],["envelopping","enveloping"],["enver","never"],["envioment","environment"],["enviomental","environmental"],["envioments","environments"],["envionment","environment"],["envionmental","environmental"],["envionments","environments"],["enviorement","environment"],["envioremental","environmental"],["enviorements","environments"],["enviorenment","environment"],["enviorenmental","environmental"],["enviorenments","environments"],["enviorment","environment"],["enviormental","environmental"],["enviormentally","environmentally"],["enviorments","environments"],["enviornemnt","environment"],["enviornemntal","environmental"],["enviornemnts","environments"],["enviornment","environment"],["enviornmental","environmental"],["enviornmentalist","environmentalist"],["enviornmentally","environmentally"],["enviornments","environments"],["envioronment","environment"],["envioronmental","environmental"],["envioronments","environments"],["envireonment","environment"],["envirionment","environment"],["envirnment","environment"],["envirnmental","environmental"],["envirnments","environments"],["envirnoment","environment"],["envirnoments","environments"],["enviroiment","environment"],["enviroment","environment"],["enviromental","environmental"],["enviromentalist","environmentalist"],["enviromentally","environmentally"],["enviroments","environments"],["enviromnent","environment"],["enviromnental","environmental"],["enviromnentally","environmentally"],["enviromnents","environments"],["environement","environment"],["environemnt","environment"],["environemntal","environmental"],["environemnts","environments"],["environent","environment"],["environmane","environment"],["environmenet","environment"],["environmenets","environments"],["environmet","environment"],["environmets","environments"],["environmnet","environment"],["environmont","environment"],["environnement","environment"],["environtment","environment"],["envolutionary","evolutionary"],["envolved","involved"],["envorce","enforce"],["envrion","environ"],["envrionment","environment"],["envrionmental","environmental"],["envrionments","environments"],["envrions","environs"],["envriron","environ"],["envrironment","environment"],["envrironmental","environmental"],["envrironments","environments"],["envrirons","environs"],["envvironment","environment"],["enxt","next"],["enything","anything"],["enyway","anyway"],["epecifica","especifica"],["epect","expect"],["epected","expected"],["epectedly","expectedly"],["epecting","expecting"],["epects","expects"],["ephememeral","ephemeral"],["ephememeris","ephemeris"],["epidsodes","episodes"],["epigramic","epigrammatic"],["epilgoue","epilogue"],["episdoe","episode"],["episdoes","episodes"],["eploit","exploit"],["eploits","exploits"],["epmty","empty"],["epressions","expressions"],["epsiode","episode"],["eptied","emptied"],["eptier","emptier"],["epties","empties"],["eptrapolate","extrapolate"],["eptrapolated","extrapolated"],["eptrapolates","extrapolates"],["epty","empty"],["epxanded","expanded"],["epxected","expected"],["epxiressions","expressions"],["epxlicit","explicit"],["eqaul","equal"],["eqaulity","equality"],["eqaulizer","equalizer"],["eqivalent","equivalent"],["eqivalents","equivalents"],["equailateral","equilateral"],["equalibrium","equilibrium"],["equallity","equality"],["equalls","equals"],["equaly","equally"],["equeation","equation"],["equeations","equations"],["equel","equal"],["equelibrium","equilibrium"],["equialent","equivalent"],["equil","equal"],["equilavalent","equivalent"],["equilibium","equilibrium"],["equilibrum","equilibrium"],["equilvalent","equivalent"],["equilvalently","equivalently"],["equilvalents","equivalents"],["equiped","equipped"],["equipmentd","equipment"],["equipments","equipment"],["equippment","equipment"],["equiptment","equipment"],["equitorial","equatorial"],["equivalance","equivalence"],["equivalant","equivalent"],["equivelant","equivalent"],["equivelent","equivalent"],["equivelents","equivalents"],["equivilant","equivalent"],["equivilent","equivalent"],["equivivalent","equivalent"],["equivlalent","equivalent"],["equivlantly","equivalently"],["equivlent","equivalent"],["equivlently","equivalently"],["equivlents","equivalents"],["equivqlent","equivalent"],["eqution","equation"],["equtions","equations"],["equvalent","equivalent"],["equvivalent","equivalent"],["erasablocks","eraseblocks"],["eratic","erratic"],["eratically","erratically"],["eraticly","erratically"],["erformance","performance"],["erliear","earlier"],["erlier","earlier"],["erly","early"],["ermergency","emergency"],["eroneous","erroneous"],["eror","error"],["erorneus","erroneous"],["erorneusly","erroneously"],["erorr","error"],["erorrs","errors"],["erors","errors"],["erraneously","erroneously"],["erro","error"],["erroneus","erroneous"],["erroneusly","erroneously"],["erronous","erroneous"],["erronously","erroneously"],["errorneous","erroneous"],["errorneously","erroneously"],["errorneus","erroneous"],["errornous","erroneous"],["errornously","erroneously"],["errorprone","error-prone"],["errorr","error"],["erros","errors"],["errot","error"],["errots","errors"],["errro","error"],["errror","error"],["errrors","errors"],["errros","errors"],["errupted","erupted"],["ertoneous","erroneous"],["ertoneously","erroneously"],["ervery","every"],["erverything","everything"],["esacpe","escape"],["esacped","escaped"],["esacpes","escapes"],["escalte","escalate"],["escalted","escalated"],["escaltes","escalates"],["escalting","escalating"],["escaltion","escalation"],["escapeable","escapable"],["escapemant","escapement"],["escased","escaped"],["escation","escalation"],["esccape","escape"],["esccaped","escaped"],["escpae","escape"],["escpaed","escaped"],["esecute","execute"],["esential","essential"],["esentially","essentially"],["esge","edge"],["esger","edger"],["esgers","edgers"],["esges","edges"],["esging","edging"],["esiest","easiest"],["esimate","estimate"],["esimated","estimated"],["esimates","estimates"],["esimating","estimating"],["esimation","estimation"],["esimations","estimations"],["esimator","estimator"],["esimators","estimators"],["esists","exists"],["esitmate","estimate"],["esitmated","estimated"],["esitmates","estimates"],["esitmating","estimating"],["esitmation","estimation"],["esitmations","estimations"],["esitmator","estimator"],["esitmators","estimators"],["esle","else"],["esnure","ensure"],["esnured","ensured"],["esnures","ensures"],["espacally","especially"],["espace","escape"],["espaced","escaped"],["espaces","escapes"],["espacially","especially"],["espacing","escaping"],["espcially","especially"],["especailly","especially"],["especally","especially"],["especialy","especially"],["especialyl","especially"],["especiially","especially"],["espect","expect"],["espeically","especially"],["esseintially","essentially"],["essencial","essential"],["essense","essence"],["essentail","essential"],["essentailly","essentially"],["essentaily","essentially"],["essental","essential"],["essentally","essentially"],["essentals","essentials"],["essentialy","essentially"],["essentual","essential"],["essentually","essentially"],["essentualy","essentially"],["essesital","essential"],["essesitally","essentially"],["essesitaly","essentially"],["essiential","essential"],["esssential","essential"],["estabilish","establish"],["estabish","establish"],["estabishd","established"],["estabished","established"],["estabishes","establishes"],["estabishing","establishing"],["establised","established"],["establishs","establishes"],["establising","establishing"],["establsihed","established"],["estbalishment","establishment"],["estimage","estimate"],["estimages","estimates"],["estiomator","estimator"],["estiomators","estimators"],["esy","easy"],["etablish","establish"],["etablishd","established"],["etablished","established"],["etablishing","establishing"],["etcc","etc"],["etcp","etc"],["etensible","extensible"],["etension","extension"],["etensions","extensions"],["ethe","the"],["etherenet","Ethernet"],["ethernal","eternal"],["ethnocentricm","ethnocentrism"],["etiher","either"],["etroneous","erroneous"],["etroneously","erroneously"],["etsablishment","establishment"],["etsbalishment","establishment"],["etst","test"],["etsts","tests"],["etxt","text"],["euclidian","euclidean"],["euivalent","equivalent"],["euivalents","equivalents"],["euqivalent","equivalent"],["euqivalents","equivalents"],["euristic","heuristic"],["euristics","heuristics"],["Europian","European"],["Europians","Europeans"],["Eurpean","European"],["Eurpoean","European"],["evalation","evaluation"],["evalite","evaluate"],["evalited","evaluated"],["evalites","evaluates"],["evaluataion","evaluation"],["evaluataions","evaluations"],["evalueate","evaluate"],["evalueated","evaluated"],["evaluete","evaluate"],["evalueted","evaluated"],["evalulates","evaluates"],["evalutae","evaluate"],["evalutaed","evaluated"],["evalutaeing","evaluating"],["evalutaes","evaluates"],["evalutaing","evaluating"],["evalutaion","evaluation"],["evalutaions","evaluations"],["evalutaor","evaluator"],["evalutate","evaluate"],["evalutated","evaluated"],["evalutates","evaluates"],["evalutating","evaluating"],["evalutation","evaluation"],["evalutations","evaluations"],["evalute","evaluate"],["evaluted","evaluated"],["evalutes","evaluates"],["evaluting","evaluating"],["evalutions","evaluations"],["evalutive","evaluative"],["evalutor","evaluator"],["evalutors","evaluators"],["evaulate","evaluate"],["evaulated","evaluated"],["evaulates","evaluates"],["evaulating","evaluating"],["evaulation","evaluation"],["evaulator","evaluator"],["evaulted","evaluated"],["evauluate","evaluate"],["evauluated","evaluated"],["evauluates","evaluates"],["evauluation","evaluation"],["eveluate","evaluate"],["eveluated","evaluated"],["eveluates","evaluates"],["eveluating","evaluating"],["eveluation","evaluation"],["eveluations","evaluations"],["eveluator","evaluator"],["eveluators","evaluators"],["evenhtually","eventually"],["eventally","eventually"],["eventaully","eventually"],["eventhanders","event handlers"],["eventhough","even though"],["eventially","eventually"],["eventuall","eventually"],["eventualy","eventually"],["evenually","eventually"],["eveolution","evolution"],["eveolutionary","evolutionary"],["eveolve","evolve"],["eveolved","evolved"],["eveolves","evolves"],["eveolving","evolving"],["everage","average"],["everaged","averaged"],["everbody","everybody"],["everithing","everything"],["everone","everyone"],["everthing","everything"],["evertyhign","everything"],["evertyhing","everything"],["evertything","everything"],["everwhere","everywhere"],["everyhing","everything"],["everyhting","everything"],["everythig","everything"],["everythign","everything"],["everythin","everything"],["everythings","everything"],["everytime","every time"],["everyting","everything"],["everytone","everyone"],["evey","every"],["eveyone","everyone"],["eveyr","every"],["evidentally","evidently"],["evironment","environment"],["evironments","environments"],["evition","eviction"],["evluate","evaluate"],["evluated","evaluated"],["evluates","evaluates"],["evluating","evaluating"],["evluation","evaluation"],["evluations","evaluations"],["evluative","evaluative"],["evluator","evaluator"],["evluators","evaluators"],["evnet","event"],["evnts","events"],["evoluate","evaluate"],["evoluated","evaluated"],["evoluates","evaluates"],["evoluation","evaluations"],["evovler","evolver"],["evovling","evolving"],["evrithing","everything"],["evry","every"],["evrythign","everything"],["evrything","everything"],["evrywhere","everywhere"],["evyrthing","everything"],["ewhwer","where"],["exaclty","exactly"],["exacly","exactly"],["exactely","exactly"],["exacty","exactly"],["exacutable","executable"],["exagerate","exaggerate"],["exagerated","exaggerated"],["exagerates","exaggerates"],["exagerating","exaggerating"],["exagerrate","exaggerate"],["exagerrated","exaggerated"],["exagerrates","exaggerates"],["exagerrating","exaggerating"],["exameple","example"],["exameples","examples"],["examied","examined"],["examinated","examined"],["examing","examining"],["examinining","examining"],["examle","example"],["examles","examples"],["examlpe","example"],["examlpes","examples"],["examnple","example"],["examnples","examples"],["exampel","example"],["exampeles","examples"],["exampels","examples"],["examplees","examples"],["examplifies","exemplifies"],["exampple","example"],["exampples","examples"],["exampt","exempt"],["exand","expand"],["exansive","expansive"],["exapansion","expansion"],["exapend","expand"],["exaplain","explain"],["exaplaination","explanation"],["exaplained","explained"],["exaplaining","explaining"],["exaplains","explains"],["exaplanation","explanation"],["exaplanations","explanations"],["exaple","example"],["exaples","examples"],["exapmle","example"],["exapmles","examples"],["exapnsion","expansion"],["exat","exact"],["exatcly","exactly"],["exatctly","exactly"],["exatly","exactly"],["exausted","exhausted"],["excact","exact"],["excactly","exactly"],["excahcnge","exchange"],["excahnge","exchange"],["excahnges","exchanges"],["excange","exchange"],["excape","escape"],["excaped","escaped"],["excapes","escapes"],["excat","exact"],["excating","exacting"],["excatly","exactly"],["exccute","execute"],["excecise","exercise"],["excecises","exercises"],["excecpt","except"],["excecption","exception"],["excecptional","exceptional"],["excecptions","exceptions"],["excectable","executable"],["excectables","executables"],["excecte","execute"],["excectedly","expectedly"],["excectes","executes"],["excecting","executing"],["excectional","exceptional"],["excective","executive"],["excectives","executives"],["excector","executor"],["excectors","executors"],["excects","expects"],["excecutable","executable"],["excecutables","executables"],["excecute","execute"],["excecuted","executed"],["excecutes","executes"],["excecuting","executing"],["excecution","execution"],["excecutions","executions"],["excecutive","executive"],["excecutives","executives"],["excecutor","executor"],["excecutors","executors"],["excecuts","executes"],["exced","exceed"],["excedded","exceeded"],["excedding","exceeding"],["excede","exceed"],["exceded","exceeded"],["excedeed","exceeded"],["excedes","exceeds"],["exceding","exceeding"],["exceeed","exceed"],["exceirpt","excerpt"],["exceirpts","excerpts"],["excelent","excellent"],["excell","excel"],["excellance","excellence"],["excellant","excellent"],["excells","excels"],["excempt","exempt"],["excempted","exempted"],["excemption","exemption"],["excemptions","exemptions"],["excempts","exempts"],["excentric","eccentric"],["excentricity","eccentricity"],["excentuating","accentuating"],["exceopt","exempt"],["exceopted","exempted"],["exceopts","exempts"],["exceotion","exemption"],["exceotions","exemptions"],["excepetion","exception"],["excepion","exception"],["excepional","exceptional"],["excepionally","exceptionally"],["excepions","exceptions"],["exceprt","excerpt"],["exceprts","excerpts"],["exceptation","expectation"],["exceptionnal","exceptional"],["exceptionss","exceptions"],["exceptionts","exceptions"],["excercise","exercise"],["excercised","exercised"],["excerciser","exerciser"],["excercises","exercises"],["excercising","exercising"],["excerise","exercise"],["exces","excess"],["excesed","exceeded"],["excesive","excessive"],["excesively","excessively"],["excesss","excess"],["excesv","excessive"],["excesvly","excessively"],["excetion","exception"],["excetional","exceptional"],["excetions","exceptions"],["excetpion","exception"],["excetpional","exceptional"],["excetpions","exceptions"],["excetption","exception"],["excetptional","exceptional"],["excetptions","exceptions"],["excetra","etcetera"],["excetutable","executable"],["excetutables","executables"],["excetute","execute"],["excetuted","executed"],["excetutes","executes"],["excetuting","executing"],["excetution","execution"],["excetutions","executions"],["excetutive","executive"],["excetutives","executives"],["excetutor","executor"],["excetutors","executors"],["exceuctable","executable"],["exceuctables","executables"],["exceucte","execute"],["exceucted","executed"],["exceuctes","executes"],["exceucting","executing"],["exceuction","execution"],["exceuctions","executions"],["exceuctive","executive"],["exceuctives","executives"],["exceuctor","executor"],["exceuctors","executors"],["exceutable","executable"],["exceutables","executables"],["exceute","execute"],["exceuted","executed"],["exceutes","executes"],["exceuting","executing"],["exceution","execution"],["exceutions","executions"],["exceutive","executive"],["exceutives","executives"],["exceutor","executor"],["exceutors","executors"],["excewption","exception"],["excewptional","exceptional"],["excewptions","exceptions"],["exchage","exchange"],["exchaged","exchanged"],["exchages","exchanges"],["exchaging","exchanging"],["exchagne","exchange"],["exchagned","exchanged"],["exchagnes","exchanges"],["exchagnge","exchange"],["exchagnged","exchanged"],["exchagnges","exchanges"],["exchagnging","exchanging"],["exchagning","exchanging"],["exchanage","exchange"],["exchanaged","exchanged"],["exchanages","exchanges"],["exchanaging","exchanging"],["exchance","exchange"],["exchanced","exchanged"],["exchances","exchanges"],["exchanche","exchange"],["exchanched","exchanged"],["exchanches","exchanges"],["exchanching","exchanging"],["exchancing","exchanging"],["exchane","exchange"],["exchaned","exchanged"],["exchanes","exchanges"],["exchangable","exchangeable"],["exchaning","exchanging"],["exchaust","exhaust"],["exchausted","exhausted"],["exchausting","exhausting"],["exchaustive","exhaustive"],["exchausts","exhausts"],["exchenge","exchange"],["exchenged","exchanged"],["exchenges","exchanges"],["exchenging","exchanging"],["exchnage","exchange"],["exchnaged","exchanged"],["exchnages","exchanges"],["exchnaging","exchanging"],["exchng","exchange"],["exchngd","exchanged"],["exchnge","exchange"],["exchnged","exchanged"],["exchnges","exchanges"],["exchnging","exchanging"],["exchngng","exchanging"],["exchngs","exchanges"],["exciation","excitation"],["excipt","except"],["exciption","exception"],["exciptions","exceptions"],["excist","exist"],["excisted","existed"],["excisting","existing"],["excitment","excitement"],["exclamantion","exclamation"],["excludde","exclude"],["excludind","excluding"],["exclusiv","exclusive"],["exclusivelly","exclusively"],["exclusivly","exclusively"],["exclusivs","exclusives"],["excluslvely","exclusively"],["exclusuive","exclusive"],["exclusuively","exclusively"],["exclusuives","exclusives"],["excpect","expect"],["excpected","expected"],["excpecting","expecting"],["excpects","expects"],["excpeption","exception"],["excpet","except"],["excpetion","exception"],["excpetional","exceptional"],["excpetions","exceptions"],["excplicit","explicit"],["excplicitly","explicitly"],["excplict","explicit"],["excplictly","explicitly"],["excract","extract"],["exctacted","extracted"],["exctract","extract"],["exctracted","extracted"],["exctracting","extracting"],["exctraction","extraction"],["exctractions","extractions"],["exctractor","extractor"],["exctractors","extractors"],["exctracts","extracts"],["exculde","exclude"],["exculding","excluding"],["exculsive","exclusive"],["exculsively","exclusively"],["exculsivly","exclusively"],["excutable","executable"],["excutables","executables"],["excute","execute"],["excuted","executed"],["excutes","executes"],["excuting","executing"],["excution","execution"],["execeed","exceed"],["execeeded","exceeded"],["execeeds","exceeds"],["exeception","exception"],["execeptions","exceptions"],["execising","exercising"],["execption","exception"],["execptions","exceptions"],["exectable","executable"],["exection","execution"],["exections","executions"],["exectuable","executable"],["exectuableness","executableness"],["exectuables","executables"],["exectued","executed"],["exectuion","execution"],["exectuions","executions"],["execture","execute"],["exectured","executed"],["exectures","executes"],["execturing","executing"],["exectute","execute"],["exectuted","executed"],["exectutes","executes"],["exectution","execution"],["exectutions","executions"],["execuable","executable"],["execuables","executables"],["execuatable","executable"],["execuatables","executables"],["execuatble","executable"],["execuatbles","executables"],["execuate","execute"],["execuated","executed"],["execuates","executes"],["execuation","execution"],["execuations","executions"],["execubale","executable"],["execubales","executables"],["execucte","execute"],["execucted","executed"],["execuctes","executes"],["execuction","execution"],["execuctions","executions"],["execuctor","executor"],["execuctors","executors"],["execude","execute"],["execuded","executed"],["execudes","executes"],["execue","execute"],["execued","executed"],["execues","executes"],["execuet","execute"],["execuetable","executable"],["execuetd","executed"],["execuete","execute"],["execueted","executed"],["execuetes","executes"],["execuets","executes"],["execuing","executing"],["execuion","execution"],["execuions","executions"],["execuitable","executable"],["execuitables","executables"],["execuite","execute"],["execuited","executed"],["execuites","executes"],["execuiting","executing"],["execuition","execution"],["execuitions","executions"],["execulatble","executable"],["execulatbles","executables"],["execultable","executable"],["execultables","executables"],["execulusive","exclusive"],["execune","execute"],["execuned","executed"],["execunes","executes"],["execunting","executing"],["execurable","executable"],["execurables","executables"],["execure","execute"],["execured","executed"],["execures","executes"],["execusion","execution"],["execusions","executions"],["execusive","exclusive"],["execustion","execution"],["execustions","executions"],["execut","execute"],["executabable","executable"],["executabables","executables"],["executabe","executable"],["executabel","executable"],["executabels","executables"],["executabes","executables"],["executablble","executable"],["executabnle","executable"],["executabnles","executables"],["executation","execution"],["executations","executions"],["executbale","executable"],["executbales","executables"],["executble","executable"],["executbles","executables"],["executd","executed"],["executding","executing"],["executeable","executable"],["executeables","executables"],["executible","executable"],["executign","executing"],["executng","executing"],["executre","execute"],["executred","executed"],["executres","executes"],["executs","executes"],["executting","executing"],["executtion","execution"],["executtions","executions"],["executuable","executable"],["executuables","executables"],["executuble","executable"],["executubles","executables"],["executue","execute"],["executued","executed"],["executues","executes"],["executuing","executing"],["executuion","execution"],["executuions","executions"],["executung","executing"],["executuon","execution"],["executuons","executions"],["executute","execute"],["execututed","executed"],["execututes","executes"],["executution","execution"],["execututions","executions"],["exeed","exceed"],["exeeding","exceeding"],["exeedingly","exceedingly"],["exeeds","exceeds"],["exelent","excellent"],["exellent","excellent"],["exempel","example"],["exempels","examples"],["exemple","example"],["exemples","examples"],["exended","extended"],["exension","extension"],["exensions","extensions"],["exent","extent"],["exentended","extended"],["exepct","expect"],["exepcted","expected"],["exepcts","expects"],["exepect","expect"],["exepectation","expectation"],["exepectations","expectations"],["exepected","expected"],["exepectedly","expectedly"],["exepecting","expecting"],["exepects","expects"],["exepriment","experiment"],["exeprimental","experimental"],["exeptional","exceptional"],["exeptions","exceptions"],["exeqution","execution"],["exerbate","exacerbate"],["exerbated","exacerbated"],["exerciese","exercise"],["exerciesed","exercised"],["exercieses","exercises"],["exerciesing","exercising"],["exercize","exercise"],["exerimental","experimental"],["exerpt","excerpt"],["exerpts","excerpts"],["exersize","exercise"],["exersizes","exercises"],["exerternal","external"],["exeucte","execute"],["exeucted","executed"],["exeuctes","executes"],["exeution","execution"],["exexutable","executable"],["exhalted","exalted"],["exhange","exchange"],["exhanged","exchanged"],["exhanges","exchanges"],["exhanging","exchanging"],["exhaused","exhausted"],["exhautivity","exhaustivity"],["exhcuast","exhaust"],["exhcuasted","exhausted"],["exhibtion","exhibition"],["exhist","exist"],["exhistance","existence"],["exhisted","existed"],["exhistence","existence"],["exhisting","existing"],["exhists","exists"],["exhostive","exhaustive"],["exhustiveness","exhaustiveness"],["exibition","exhibition"],["exibitions","exhibitions"],["exicting","exciting"],["exinct","extinct"],["exipration","expiration"],["exipre","expire"],["exipred","expired"],["exipres","expires"],["exising","existing"],["exisit","exist"],["exisited","existed"],["exisitent","existent"],["exisiting","existing"],["exisitng","existing"],["exisits","exists"],["existance","existence"],["existant","existent"],["existatus","exitstatus"],["existencd","existence"],["existend","existed"],["existense","existence"],["existin","existing"],["existince","existence"],["existng","existing"],["existsing","existing"],["existting","existing"],["existung","existing"],["existy","exist"],["existying","existing"],["exitance","existence"],["exitation","excitation"],["exitations","excitations"],["exitt","exit"],["exitted","exited"],["exitting","exiting"],["exitts","exits"],["exixst","exist"],["exixt","exist"],["exlamation","exclamation"],["exlcude","exclude"],["exlcuding","excluding"],["exlcusion","exclusion"],["exlcusions","exclusions"],["exlcusive","exclusive"],["exlicit","explicit"],["exlicite","explicit"],["exlicitely","explicitly"],["exlicitly","explicitly"],["exliled","exiled"],["exlpoit","exploit"],["exlpoited","exploited"],["exlpoits","exploits"],["exlusion","exclusion"],["exlusionary","exclusionary"],["exlusions","exclusions"],["exlusive","exclusive"],["exlusively","exclusively"],["exmaine","examine"],["exmained","examined"],["exmaines","examines"],["exmaple","example"],["exmaples","examples"],["exmple","example"],["exmport","export"],["exnternal","external"],["exnternalities","externalities"],["exnternality","externality"],["exnternally","externally"],["exntry","entry"],["exolicit","explicit"],["exolicitly","explicitly"],["exonorate","exonerate"],["exort","export"],["exoskelaton","exoskeleton"],["expalin","explain"],["expaning","expanding"],["expanion","expansion"],["expanions","expansions"],["expanshion","expansion"],["expanshions","expansions"],["expanssion","expansion"],["exparation","expiration"],["expasion","expansion"],["expatriot","expatriate"],["expception","exception"],["expcetation","expectation"],["expcetations","expectations"],["expceted","expected"],["expceting","expecting"],["expcets","expects"],["expct","expect"],["expcted","expected"],["expctedly","expectedly"],["expcting","expecting"],["expeced","expected"],["expeceted","expected"],["expecially","especially"],["expectaion","expectation"],["expectaions","expectations"],["expectatoins","expectations"],["expectatons","expectations"],["expectd","expected"],["expecte","expected"],["expectes","expects"],["expection","exception"],["expections","exceptions"],["expeditonary","expeditionary"],["expeect","expect"],["expeected","expected"],["expeectedly","expectedly"],["expeecting","expecting"],["expeects","expects"],["expeense","expense"],["expeenses","expenses"],["expeensive","expensive"],["expeience","experience"],["expeienced","experienced"],["expeiences","experiences"],["expeiencing","experiencing"],["expeiment","experiment"],["expeimental","experimental"],["expeimentally","experimentally"],["expeimentation","experimentation"],["expeimentations","experimentations"],["expeimented","experimented"],["expeimentel","experimental"],["expeimentelly","experimentally"],["expeimenter","experimenter"],["expeimenters","experimenters"],["expeimenting","experimenting"],["expeiments","experiments"],["expeiriment","experiment"],["expeirimental","experimental"],["expeirimentally","experimentally"],["expeirimentation","experimentation"],["expeirimentations","experimentations"],["expeirimented","experimented"],["expeirimentel","experimental"],["expeirimentelly","experimentally"],["expeirimenter","experimenter"],["expeirimenters","experimenters"],["expeirimenting","experimenting"],["expeiriments","experiments"],["expell","expel"],["expells","expels"],["expement","experiment"],["expemental","experimental"],["expementally","experimentally"],["expementation","experimentation"],["expementations","experimentations"],["expemented","experimented"],["expementel","experimental"],["expementelly","experimentally"],["expementer","experimenter"],["expementers","experimenters"],["expementing","experimenting"],["expements","experiments"],["expemplar","exemplar"],["expemplars","exemplars"],["expemplary","exemplary"],["expempt","exempt"],["expempted","exempted"],["expemt","exempt"],["expemted","exempted"],["expemtion","exemption"],["expemtions","exemptions"],["expemts","exempts"],["expence","expense"],["expences","expenses"],["expencive","expensive"],["expendeble","expendable"],["expepect","expect"],["expepected","expected"],["expepectedly","expectedly"],["expepecting","expecting"],["expepects","expects"],["expepted","expected"],["expeptedly","expectedly"],["expepting","expecting"],["expeption","exception"],["expeptions","exceptions"],["expepts","expects"],["experament","experiment"],["experamental","experimental"],["experamentally","experimentally"],["experamentation","experimentation"],["experamentations","experimentations"],["experamented","experimented"],["experamentel","experimental"],["experamentelly","experimentally"],["experamenter","experimenter"],["experamenters","experimenters"],["experamenting","experimenting"],["experaments","experiments"],["experation","expiration"],["expercting","expecting"],["expercts","expects"],["expereince","experience"],["expereinced","experienced"],["expereinces","experiences"],["expereincing","experiencing"],["experement","experiment"],["experemental","experimental"],["experementally","experimentally"],["experementation","experimentation"],["experementations","experimentations"],["experemented","experimented"],["experementel","experimental"],["experementelly","experimentally"],["experementer","experimenter"],["experementers","experimenters"],["experementing","experimenting"],["experements","experiments"],["experence","experience"],["experenced","experienced"],["experences","experiences"],["experencing","experiencing"],["experes","express"],["experesed","expressed"],["experesion","expression"],["experesions","expressions"],["experess","express"],["experessed","expressed"],["experesses","expresses"],["experessing","expressing"],["experession's","expression's"],["experession","expression"],["experessions","expressions"],["experiance","experience"],["experianced","experienced"],["experiances","experiences"],["experiancial","experiential"],["experiancing","experiencing"],["experiansial","experiential"],["experiantial","experiential"],["experiation","expiration"],["experiations","expirations"],["experice","experience"],["expericed","experienced"],["experices","experiences"],["expericing","experiencing"],["experiement","experiment"],["experienshial","experiential"],["experiensial","experiential"],["experies","expires"],["experim","experiment"],["experimal","experimental"],["experimally","experimentally"],["experimanent","experiment"],["experimanental","experimental"],["experimanentally","experimentally"],["experimanentation","experimentation"],["experimanentations","experimentations"],["experimanented","experimented"],["experimanentel","experimental"],["experimanentelly","experimentally"],["experimanenter","experimenter"],["experimanenters","experimenters"],["experimanenting","experimenting"],["experimanents","experiments"],["experimanet","experiment"],["experimanetal","experimental"],["experimanetally","experimentally"],["experimanetation","experimentation"],["experimanetations","experimentations"],["experimaneted","experimented"],["experimanetel","experimental"],["experimanetelly","experimentally"],["experimaneter","experimenter"],["experimaneters","experimenters"],["experimaneting","experimenting"],["experimanets","experiments"],["experimant","experiment"],["experimantal","experimental"],["experimantally","experimentally"],["experimantation","experimentation"],["experimantations","experimentations"],["experimanted","experimented"],["experimantel","experimental"],["experimantelly","experimentally"],["experimanter","experimenter"],["experimanters","experimenters"],["experimanting","experimenting"],["experimants","experiments"],["experimation","experimentation"],["experimations","experimentations"],["experimdnt","experiment"],["experimdntal","experimental"],["experimdntally","experimentally"],["experimdntation","experimentation"],["experimdntations","experimentations"],["experimdnted","experimented"],["experimdntel","experimental"],["experimdntelly","experimentally"],["experimdnter","experimenter"],["experimdnters","experimenters"],["experimdnting","experimenting"],["experimdnts","experiments"],["experimed","experimented"],["experimel","experimental"],["experimelly","experimentally"],["experimen","experiment"],["experimenal","experimental"],["experimenally","experimentally"],["experimenat","experiment"],["experimenatal","experimental"],["experimenatally","experimentally"],["experimenatation","experimentation"],["experimenatations","experimentations"],["experimenated","experimented"],["experimenatel","experimental"],["experimenatelly","experimentally"],["experimenater","experimenter"],["experimenaters","experimenters"],["experimenating","experimenting"],["experimenation","experimentation"],["experimenations","experimentations"],["experimenats","experiments"],["experimened","experimented"],["experimenel","experimental"],["experimenelly","experimentally"],["experimener","experimenter"],["experimeners","experimenters"],["experimening","experimenting"],["experimens","experiments"],["experimentaal","experimental"],["experimentaally","experimentally"],["experimentaat","experiment"],["experimentaatl","experimental"],["experimentaatlly","experimentally"],["experimentaats","experiments"],["experimentaed","experimented"],["experimentaer","experimenter"],["experimentaing","experimenting"],["experimentaion","experimentation"],["experimentaions","experimentations"],["experimentait","experiment"],["experimentaital","experimental"],["experimentaitally","experimentally"],["experimentaited","experimented"],["experimentaiter","experimenter"],["experimentaiters","experimenters"],["experimentaitng","experimenting"],["experimentaiton","experimentation"],["experimentaitons","experimentations"],["experimentat","experimental"],["experimentatal","experimental"],["experimentatally","experimentally"],["experimentatation","experimentation"],["experimentatations","experimentations"],["experimentated","experimented"],["experimentater","experimenter"],["experimentatl","experimental"],["experimentatlly","experimentally"],["experimentatly","experimentally"],["experimentel","experimental"],["experimentelly","experimentally"],["experimentt","experiment"],["experimentted","experimented"],["experimentter","experimenter"],["experimentters","experimenters"],["experimentts","experiments"],["experimer","experimenter"],["experimers","experimenters"],["experimet","experiment"],["experimetal","experimental"],["experimetally","experimentally"],["experimetation","experimentation"],["experimetations","experimentations"],["experimeted","experimented"],["experimetel","experimental"],["experimetelly","experimentally"],["experimetent","experiment"],["experimetental","experimental"],["experimetentally","experimentally"],["experimetentation","experimentation"],["experimetentations","experimentations"],["experimetented","experimented"],["experimetentel","experimental"],["experimetentelly","experimentally"],["experimetenter","experimenter"],["experimetenters","experimenters"],["experimetenting","experimenting"],["experimetents","experiments"],["experimeter","experimenter"],["experimeters","experimenters"],["experimeting","experimenting"],["experimetn","experiment"],["experimetnal","experimental"],["experimetnally","experimentally"],["experimetnation","experimentation"],["experimetnations","experimentations"],["experimetned","experimented"],["experimetnel","experimental"],["experimetnelly","experimentally"],["experimetner","experimenter"],["experimetners","experimenters"],["experimetning","experimenting"],["experimetns","experiments"],["experimets","experiments"],["experiming","experimenting"],["experimint","experiment"],["experimintal","experimental"],["experimintally","experimentally"],["experimintation","experimentation"],["experimintations","experimentations"],["experiminted","experimented"],["experimintel","experimental"],["experimintelly","experimentally"],["experiminter","experimenter"],["experiminters","experimenters"],["experiminting","experimenting"],["experimints","experiments"],["experimment","experiment"],["experimmental","experimental"],["experimmentally","experimentally"],["experimmentation","experimentation"],["experimmentations","experimentations"],["experimmented","experimented"],["experimmentel","experimental"],["experimmentelly","experimentally"],["experimmenter","experimenter"],["experimmenters","experimenters"],["experimmenting","experimenting"],["experimments","experiments"],["experimnet","experiment"],["experimnetal","experimental"],["experimnetally","experimentally"],["experimnetation","experimentation"],["experimnetations","experimentations"],["experimneted","experimented"],["experimnetel","experimental"],["experimnetelly","experimentally"],["experimneter","experimenter"],["experimneters","experimenters"],["experimneting","experimenting"],["experimnets","experiments"],["experimnt","experiment"],["experimntal","experimental"],["experimntally","experimentally"],["experimntation","experimentation"],["experimntations","experimentations"],["experimnted","experimented"],["experimntel","experimental"],["experimntelly","experimentally"],["experimnter","experimenter"],["experimnters","experimenters"],["experimnting","experimenting"],["experimnts","experiments"],["experims","experiments"],["experimten","experiment"],["experimtenal","experimental"],["experimtenally","experimentally"],["experimtenation","experimentation"],["experimtenations","experimentations"],["experimtened","experimented"],["experimtenel","experimental"],["experimtenelly","experimentally"],["experimtener","experimenter"],["experimteners","experimenters"],["experimtening","experimenting"],["experimtens","experiments"],["experinece","experience"],["experineced","experienced"],["experinement","experiment"],["experinemental","experimental"],["experinementally","experimentally"],["experinementation","experimentation"],["experinementations","experimentations"],["experinemented","experimented"],["experinementel","experimental"],["experinementelly","experimentally"],["experinementer","experimenter"],["experinementers","experimenters"],["experinementing","experimenting"],["experinements","experiments"],["experiration","expiration"],["experirations","expirations"],["expermenet","experiment"],["expermenetal","experimental"],["expermenetally","experimentally"],["expermenetation","experimentation"],["expermenetations","experimentations"],["expermeneted","experimented"],["expermenetel","experimental"],["expermenetelly","experimentally"],["expermeneter","experimenter"],["expermeneters","experimenters"],["expermeneting","experimenting"],["expermenets","experiments"],["experment","experiment"],["expermental","experimental"],["expermentally","experimentally"],["expermentation","experimentation"],["expermentations","experimentations"],["expermented","experimented"],["expermentel","experimental"],["expermentelly","experimentally"],["expermenter","experimenter"],["expermenters","experimenters"],["expermenting","experimenting"],["experments","experiments"],["expermient","experiment"],["expermiental","experimental"],["expermientally","experimentally"],["expermientation","experimentation"],["expermientations","experimentations"],["expermiented","experimented"],["expermientel","experimental"],["expermientelly","experimentally"],["expermienter","experimenter"],["expermienters","experimenters"],["expermienting","experimenting"],["expermients","experiments"],["expermiment","experiment"],["expermimental","experimental"],["expermimentally","experimentally"],["expermimentation","experimentation"],["expermimentations","experimentations"],["expermimented","experimented"],["expermimentel","experimental"],["expermimentelly","experimentally"],["expermimenter","experimenter"],["expermimenters","experimenters"],["expermimenting","experimenting"],["expermiments","experiments"],["experminent","experiment"],["experminental","experimental"],["experminentally","experimentally"],["experminentation","experimentation"],["experminentations","experimentations"],["experminents","experiments"],["expernal","external"],["expers","express"],["expersed","expressed"],["expersing","expressing"],["expersion","expression"],["expersions","expressions"],["expersive","expensive"],["experss","express"],["experssed","expressed"],["expersses","expresses"],["experssing","expressing"],["experssion","expression"],["experssions","expressions"],["expese","expense"],["expeses","expenses"],["expesive","expensive"],["expesnce","expense"],["expesnces","expenses"],["expesncive","expensive"],["expess","express"],["expessed","expressed"],["expesses","expresses"],["expessing","expressing"],["expession","expression"],["expessions","expressions"],["expest","expect"],["expested","expected"],["expestedly","expectedly"],["expesting","expecting"],["expetancy","expectancy"],["expetation","expectation"],["expetc","expect"],["expetced","expected"],["expetcedly","expectedly"],["expetcing","expecting"],["expetcs","expects"],["expetct","expect"],["expetcted","expected"],["expetctedly","expectedly"],["expetcting","expecting"],["expetcts","expects"],["expetect","expect"],["expetected","expected"],["expetectedly","expectedly"],["expetecting","expecting"],["expetectly","expectedly"],["expetects","expects"],["expeted","expected"],["expetedly","expectedly"],["expetiment","experiment"],["expetimental","experimental"],["expetimentally","experimentally"],["expetimentation","experimentation"],["expetimentations","experimentations"],["expetimented","experimented"],["expetimentel","experimental"],["expetimentelly","experimentally"],["expetimenter","experimenter"],["expetimenters","experimenters"],["expetimenting","experimenting"],["expetiments","experiments"],["expeting","expecting"],["expetion","exception"],["expetional","exceptional"],["expetions","exceptions"],["expets","expects"],["expewriment","experiment"],["expewrimental","experimental"],["expewrimentally","experimentally"],["expewrimentation","experimentation"],["expewrimentations","experimentations"],["expewrimented","experimented"],["expewrimentel","experimental"],["expewrimentelly","experimentally"],["expewrimenter","experimenter"],["expewrimenters","experimenters"],["expewrimenting","experimenting"],["expewriments","experiments"],["expexct","expect"],["expexcted","expected"],["expexctedly","expectedly"],["expexcting","expecting"],["expexcts","expects"],["expexnasion","expansion"],["expexnasions","expansions"],["expext","expect"],["expexted","expected"],["expextedly","expectedly"],["expexting","expecting"],["expexts","expects"],["expicit","explicit"],["expicitly","explicitly"],["expidition","expedition"],["expiditions","expeditions"],["expierence","experience"],["expierenced","experienced"],["expierences","experiences"],["expierience","experience"],["expieriences","experiences"],["expilicitely","explicitly"],["expireitme","expiretime"],["expiriation","expiration"],["expirie","expire"],["expiried","expired"],["expirience","experience"],["expiriences","experiences"],["expirimental","experimental"],["expiriy","expiry"],["explaination","explanation"],["explainations","explanations"],["explainatory","explanatory"],["explaind","explained"],["explanaiton","explanation"],["explanaitons","explanations"],["explane","explain"],["explaned","explained"],["explanes","explains"],["explaning","explaining"],["explantion","explanation"],["explantions","explanations"],["explcit","explicit"],["explecit","explicit"],["explecitely","explicitly"],["explecitily","explicitly"],["explecitly","explicitly"],["explenation","explanation"],["explicat","explicate"],["explicilt","explicit"],["explicilty","explicitly"],["explicitelly","explicitly"],["explicitely","explicitly"],["explicitily","explicitly"],["explicity","explicitly"],["explicityly","explicitly"],["explict","explicit"],["explictely","explicitly"],["explictily","explicitly"],["explictly","explicitly"],["explin","explain"],["explination","explanation"],["explinations","explanations"],["explined","explained"],["explins","explains"],["explit","explicit"],["explitictly","explicitly"],["explitit","explicit"],["explitly","explicitly"],["explizit","explicit"],["explizitly","explicitly"],["exploititive","exploitative"],["expoed","exposed"],["expoent","exponent"],["expoential","exponential"],["expoentially","exponentially"],["expoentntial","exponential"],["expoerted","exported"],["expoit","exploit"],["expoitation","exploitation"],["expoited","exploited"],["expoits","exploits"],["expolde","explode"],["exponant","exponent"],["exponantation","exponentiation"],["exponantially","exponentially"],["exponantialy","exponentially"],["exponants","exponents"],["exponentation","exponentiation"],["exponentialy","exponentially"],["exponentiel","exponential"],["exponentiell","exponential"],["exponetial","exponential"],["exporession","expression"],["expors","exports"],["expport","export"],["exppressed","expressed"],["expres","express"],["expresed","expressed"],["expresing","expressing"],["expresion","expression"],["expresions","expressions"],["expressable","expressible"],["expressino","expression"],["expresso","espresso"],["expresss","express"],["expresssion","expression"],["expresssions","expressions"],["exprience","experience"],["exprienced","experienced"],["expriences","experiences"],["exprimental","experimental"],["expropiated","expropriated"],["expropiation","expropriation"],["exprot","export"],["exproted","exported"],["exproting","exporting"],["exprots","exports"],["exprted","exported"],["exptected","expected"],["exra","extra"],["exract","extract"],["exressed","expressed"],["exression","expression"],["exsistence","existence"],["exsistent","existent"],["exsisting","existing"],["exsists","exists"],["exsiting","existing"],["exspect","expect"],["exspected","expected"],["exspectedly","expectedly"],["exspecting","expecting"],["exspects","expects"],["exspense","expense"],["exspensed","expensed"],["exspenses","expenses"],["exstacy","ecstasy"],["exsted","existed"],["exsting","existing"],["exstream","extreme"],["exsts","exists"],["extaction","extraction"],["extactly","exactly"],["extacy","ecstasy"],["extarnal","external"],["extarnally","externally"],["extatic","ecstatic"],["extedn","extend"],["extedned","extended"],["extedner","extender"],["extedners","extenders"],["extedns","extends"],["extemely","extremely"],["exten","extent"],["extenal","external"],["extendded","extended"],["extendet","extended"],["extendsions","extensions"],["extened","extended"],["exteneded","extended"],["extenisble","extensible"],["extennsions","extensions"],["extensability","extensibility"],["extensiable","extensible"],["extensibity","extensibility"],["extensilbe","extensible"],["extensiones","extensions"],["extensivly","extensively"],["extenson","extension"],["extenstion","extension"],["extenstions","extensions"],["extented","extended"],["extention","extension"],["extentions","extensions"],["extepect","expect"],["extepecting","expecting"],["extepects","expects"],["exteral","external"],["extered","exerted"],["extereme","extreme"],["exterme","extreme"],["extermest","extremest"],["extermist","extremist"],["extermists","extremists"],["extermly","extremely"],["extermporaneous","extemporaneous"],["externaly","externally"],["externel","external"],["externelly","externally"],["externels","externals"],["extesion","extension"],["extesions","extensions"],["extesnion","extension"],["extesnions","extensions"],["extimate","estimate"],["extimated","estimated"],["extimates","estimates"],["extimating","estimating"],["extimation","estimation"],["extimations","estimations"],["extimator","estimator"],["extimators","estimators"],["extist","exist"],["extit","exit"],["extnesion","extension"],["extrac","extract"],["extraced","extracted"],["extracing","extracting"],["extracter","extractor"],["extractet","extracted"],["extractino","extracting"],["extractins","extractions"],["extradiction","extradition"],["extraenous","extraneous"],["extranous","extraneous"],["extrapoliate","extrapolate"],["extrat","extract"],["extrated","extracted"],["extraterrestial","extraterrestrial"],["extraterrestials","extraterrestrials"],["extrates","extracts"],["extrating","extracting"],["extration","extraction"],["extrator","extractor"],["extrators","extractors"],["extrats","extracts"],["extravagent","extravagant"],["extraversion","extroversion"],["extravert","extrovert"],["extraverts","extroverts"],["extraxt","extract"],["extraxted","extracted"],["extraxting","extracting"],["extraxtors","extractors"],["extraxts","extracts"],["extream","extreme"],["extreamely","extremely"],["extreamily","extremely"],["extreamly","extremely"],["extreams","extremes"],["extreem","extreme"],["extreemly","extremely"],["extremaly","extremely"],["extremeley","extremely"],["extremelly","extremely"],["extrememe","extreme"],["extrememely","extremely"],["extrememly","extremely"],["extremeophile","extremophile"],["extremitys","extremities"],["extremly","extremely"],["extrenal","external"],["extrenally","externally"],["extrenaly","externally"],["extrime","extreme"],["extrimely","extremely"],["extrimly","extremely"],["extrmities","extremities"],["extrodinary","extraordinary"],["extrordinarily","extraordinarily"],["extrordinary","extraordinary"],["extry","entry"],["exturd","extrude"],["exturde","extrude"],["exturded","extruded"],["exturdes","extrudes"],["exturding","extruding"],["exuberent","exuberant"],["exucuted","executed"],["eyt","yet"],["ezdrop","eavesdrop"],["fability","facility"],["fabircate","fabricate"],["fabircated","fabricated"],["fabircates","fabricates"],["fabircatings","fabricating"],["fabircation","fabrication"],["facce","face"],["faciliate","facilitate"],["faciliated","facilitated"],["faciliates","facilitates"],["faciliating","facilitating"],["facilites","facilities"],["facilitiate","facilitate"],["facilitiates","facilitates"],["facilititate","facilitate"],["facillitate","facilitate"],["facillities","facilities"],["faciltate","facilitate"],["facilties","facilities"],["facinated","fascinated"],["facirity","facility"],["facist","fascist"],["facorite","favorite"],["facorites","favorites"],["facourite","favourite"],["facourites","favourites"],["facours","favours"],["factization","factorization"],["factorizaiton","factorization"],["factorys","factories"],["fadind","fading"],["faeture","feature"],["faetures","features"],["Fahrenheight","Fahrenheit"],["faield","failed"],["faild","failed"],["failded","failed"],["faile","failed"],["failer","failure"],["failes","fails"],["failicies","facilities"],["failicy","facility"],["failied","failed"],["failiure","failure"],["failiures","failures"],["failiver","failover"],["faill","fail"],["failled","failed"],["faillure","failure"],["failng","failing"],["failre","failure"],["failrue","failure"],["failture","failure"],["failue","failure"],["failuer","failure"],["failues","failures"],["failured","failed"],["faireness","fairness"],["fairoh","pharaoh"],["faiway","fairway"],["faiways","fairways"],["faktor","factor"],["faktored","factored"],["faktoring","factoring"],["faktors","factors"],["falg","flag"],["falgs","flags"],["falied","failed"],["faliure","failure"],["faliures","failures"],["fallabck","fallback"],["fallbck","fallback"],["fallhrough","fallthrough"],["fallthruogh","fallthrough"],["falltrough","fallthrough"],["falshed","flashed"],["falshes","flashes"],["falshing","flashing"],["falsly","falsely"],["falt","fault"],["falure","failure"],["familar","familiar"],["familes","families"],["familiies","families"],["familiy","family"],["familliar","familiar"],["familly","family"],["famlilies","families"],["famlily","family"],["famoust","famous"],["fanatism","fanaticism"],["fancyness","fanciness"],["Farenheight","Fahrenheit"],["Farenheit","Fahrenheit"],["faries","fairies"],["farmework","framework"],["fasade","facade"],["fasion","fashion"],["fasle","false"],["fassade","facade"],["fassinate","fascinate"],["fasterner","fastener"],["fasterners","fasteners"],["fastner","fastener"],["fastners","fasteners"],["fastr","faster"],["fatc","fact"],["fater","faster"],["fatig","fatigue"],["fatser","faster"],["fature","feature"],["faught","fought"],["fauilure","failure"],["fauilures","failures"],["fauture","feature"],["fautured","featured"],["fautures","features"],["fauturing","featuring"],["favoutrable","favourable"],["favuourites","favourites"],["faymus","famous"],["fcound","found"],["feasabile","feasible"],["feasability","feasibility"],["feasable","feasible"],["featchd","fetched"],["featched","fetched"],["featching","fetching"],["featchs","fetches"],["featchss","fetches"],["featchure","feature"],["featchured","featured"],["featchures","features"],["featchuring","featuring"],["featre","feature"],["featue","feature"],["featued","featured"],["featues","features"],["featur","feature"],["featurs","features"],["feautre","feature"],["feauture","feature"],["feautures","features"],["febbruary","February"],["febewary","February"],["februar","February"],["Febuary","February"],["Feburary","February"],["fecthing","fetching"],["fedality","fidelity"],["fedreally","federally"],["feeback","feedback"],["feeded","fed"],["feek","feel"],["feeks","feels"],["feetur","feature"],["feeture","feature"],["feild","field"],["feld","field"],["felisatus","felicitous"],["femminist","feminist"],["fempto","femto"],["feonsay","fianc\xE9e"],["fequency","frequency"],["feromone","pheromone"],["fertil","fertile"],["fertily","fertility"],["fetaure","feature"],["fetaures","features"],["fetchs","fetches"],["feture","feature"],["fetures","features"],["fewsha","fuchsia"],["fezent","pheasant"],["fhurter","further"],["fials","fails"],["fianite","finite"],["fianlly","finally"],["fibonaacci","Fibonacci"],["ficticious","fictitious"],["fictious","fictitious"],["fidality","fidelity"],["fiddley","fiddly"],["fidn","find"],["fied","field"],["fiedl","field"],["fiedled","fielded"],["fiedls","fields"],["fieid","field"],["fieldlst","fieldlist"],["fieled","field"],["fielesystem","filesystem"],["fielesystems","filesystems"],["fielname","filename"],["fielneame","filename"],["fiercly","fiercely"],["fightings","fighting"],["figurestyle","figurestyles"],["filal","final"],["fileand","file and"],["fileds","fields"],["fileld","field"],["filelds","fields"],["filenae","filename"],["filese","files"],["fileshystem","filesystem"],["fileshystems","filesystems"],["filesnames","filenames"],["filess","files"],["filesstem","filesystem"],["filessytem","filesystem"],["filessytems","filesystems"],["fileststem","filesystem"],["filesysems","filesystems"],["filesysthem","filesystem"],["filesysthems","filesystems"],["filesystmes","filesystems"],["filesystyem","filesystem"],["filesystyems","filesystems"],["filesytem","filesystem"],["filesytems","filesystems"],["filesytsem","filesystem"],["fileter","filter"],["filetest","file test"],["filetests","file tests"],["fileystem","filesystem"],["fileystems","filesystems"],["filiament","filament"],["fillay","fillet"],["fillement","filament"],["fillowing","following"],["fillung","filling"],["filnal","final"],["filname","filename"],["filp","flip"],["filpped","flipped"],["filpping","flipping"],["filps","flips"],["filse","files"],["filsystem","filesystem"],["filsystems","filesystems"],["filterd","filtered"],["filterig","filtering"],["filterin","filtering"],["filterring","filtering"],["filtersing","filtering"],["filterss","filters"],["filtype","filetype"],["filtypes","filetypes"],["fimilies","families"],["fimrware","firmware"],["fimware","firmware"],["finacial","financial"],["finailse","finalise"],["finailze","finalize"],["finallly","finally"],["finanace","finance"],["finanaced","financed"],["finanaces","finances"],["finanacially","financially"],["finanacier","financier"],["financialy","financially"],["finanize","finalize"],["finanlize","finalize"],["fincally","finally"],["finctionalities","functionalities"],["finctionality","functionality"],["finde","find"],["findn","find"],["findout","find out"],["finelly","finally"],["finess","finesse"],["fingeprint","fingerprint"],["finialization","finalization"],["finializing","finalizing"],["finilizes","finalizes"],["finisched","finished"],["finised","finished"],["finishied","finished"],["finishs","finishes"],["finitel","finite"],["finness","finesse"],["finnished","finished"],["finshed","finished"],["finshing","finishing"],["finsih","finish"],["finsihed","finished"],["finsihes","finishes"],["finsihing","finishing"],["finsished","finished"],["finxed","fixed"],["finxing","fixing"],["fiorget","forget"],["firday","Friday"],["firends","friends"],["firey","fiery"],["firmare","firmware"],["firmaware","firmware"],["firmawre","firmware"],["firmeare","firmware"],["firmeware","firmware"],["firmnware","firmware"],["firmwart","firmware"],["firmwear","firmware"],["firmwqre","firmware"],["firmwre","firmware"],["firmwware","firmware"],["firsr","first"],["firsth","first"],["firware","firmware"],["firwmare","firmware"],["fisionable","fissionable"],["fisisist","physicist"],["fisist","physicist"],["fisrt","first"],["fitering","filtering"],["fitler","filter"],["fitlers","filters"],["fivety","fifty"],["fixel","pixel"],["fixels","pixels"],["fixeme","fixme"],["fixwd","fixed"],["fizeek","physique"],["flacor","flavor"],["flacored","flavored"],["flacoring","flavoring"],["flacorings","flavorings"],["flacors","flavors"],["flacour","flavour"],["flacoured","flavoured"],["flacouring","flavouring"],["flacourings","flavourings"],["flacours","flavours"],["flaged","flagged"],["flages","flags"],["flagg","flag"],["flahsed","flashed"],["flahses","flashes"],["flahsing","flashing"],["flakyness","flakiness"],["flamable","flammable"],["flaot","float"],["flaoting","floating"],["flashflame","flashframe"],["flashig","flashing"],["flasing","flashing"],["flate","flat"],["flatened","flattened"],["flattend","flattened"],["flattenning","flattening"],["flawess","flawless"],["fle","file"],["flem","phlegm"],["Flemmish","Flemish"],["flewant","fluent"],["flexability","flexibility"],["flexable","flexible"],["flexibel","flexible"],["flexibele","flexible"],["flexibilty","flexibility"],["flext","flex"],["flie","file"],["fliter","filter"],["flitered","filtered"],["flitering","filtering"],["fliters","filters"],["floading-add","floating-add"],["floatation","flotation"],["floride","fluoride"],["floting","floating"],["flouride","fluoride"],["flourine","fluorine"],["flourishment","flourishing"],["flter","filter"],["fluctuand","fluctuant"],["flud","flood"],["fluorish","flourish"],["fluoroscent","fluorescent"],["fluroescent","fluorescent"],["flushs","flushes"],["flusing","flushing"],["focu","focus"],["focued","focused"],["focument","document"],["focuse","focus"],["focusf","focus"],["focuss","focus"],["focussed","focused"],["focusses","focuses"],["fof","for"],["foget","forget"],["fogot","forgot"],["fogotten","forgotten"],["fointers","pointers"],["foler","folder"],["folers","folders"],["folfer","folder"],["folfers","folders"],["folled","followed"],["foller","follower"],["follers","followers"],["follew","follow"],["follewed","followed"],["follewer","follower"],["follewers","followers"],["follewin","following"],["follewind","following"],["follewing","following"],["follewinwg","following"],["follewiong","following"],["follewiwng","following"],["follewong","following"],["follews","follows"],["follfow","follow"],["follfowed","followed"],["follfower","follower"],["follfowers","followers"],["follfowin","following"],["follfowind","following"],["follfowing","following"],["follfowinwg","following"],["follfowiong","following"],["follfowiwng","following"],["follfowong","following"],["follfows","follows"],["follin","following"],["follind","following"],["follinwg","following"],["folliong","following"],["folliw","follow"],["folliwed","followed"],["folliwer","follower"],["folliwers","followers"],["folliwin","following"],["folliwind","following"],["folliwing","following"],["folliwinwg","following"],["folliwiong","following"],["folliwiwng","following"],["folliwng","following"],["folliwong","following"],["folliws","follows"],["folllow","follow"],["folllowed","followed"],["folllower","follower"],["folllowers","followers"],["folllowin","following"],["folllowind","following"],["folllowing","following"],["folllowinwg","following"],["folllowiong","following"],["folllowiwng","following"],["folllowong","following"],["follod","followed"],["folloeing","following"],["folloing","following"],["folloiwng","following"],["follolwing","following"],["follong","following"],["follos","follows"],["followes","follows"],["followig","following"],["followign","following"],["followin","following"],["followind","following"],["followint","following"],["followng","following"],["followwing","following"],["followwings","followings"],["folls","follows"],["follw","follow"],["follwed","followed"],["follwer","follower"],["follwers","followers"],["follwin","following"],["follwind","following"],["follwing","following"],["follwinwg","following"],["follwiong","following"],["follwiwng","following"],["follwo","follow"],["follwoe","follow"],["follwoed","followed"],["follwoeed","followed"],["follwoeer","follower"],["follwoeers","followers"],["follwoein","following"],["follwoeind","following"],["follwoeing","following"],["follwoeinwg","following"],["follwoeiong","following"],["follwoeiwng","following"],["follwoeong","following"],["follwoer","follower"],["follwoers","followers"],["follwoes","follows"],["follwoin","following"],["follwoind","following"],["follwoing","following"],["follwoinwg","following"],["follwoiong","following"],["follwoiwng","following"],["follwong","following"],["follwoong","following"],["follwos","follows"],["follwow","follow"],["follwowed","followed"],["follwower","follower"],["follwowers","followers"],["follwowin","following"],["follwowind","following"],["follwowing","following"],["follwowinwg","following"],["follwowiong","following"],["follwowiwng","following"],["follwowong","following"],["follwows","follows"],["follws","follows"],["follww","follow"],["follwwed","followed"],["follwwer","follower"],["follwwers","followers"],["follwwin","following"],["follwwind","following"],["follwwing","following"],["follwwinwg","following"],["follwwiong","following"],["follwwiwng","following"],["follwwong","following"],["follwws","follows"],["foloow","follow"],["foloowed","followed"],["foloower","follower"],["foloowers","followers"],["foloowin","following"],["foloowind","following"],["foloowing","following"],["foloowinwg","following"],["foloowiong","following"],["foloowiwng","following"],["foloowong","following"],["foloows","follows"],["folow","follow"],["folowed","followed"],["folower","follower"],["folowers","followers"],["folowin","following"],["folowind","following"],["folowing","following"],["folowinwg","following"],["folowiong","following"],["folowiwng","following"],["folowong","following"],["folows","follows"],["foloww","follow"],["folowwed","followed"],["folowwer","follower"],["folowwers","followers"],["folowwin","following"],["folowwind","following"],["folowwing","following"],["folowwinwg","following"],["folowwiong","following"],["folowwiwng","following"],["folowwong","following"],["folowws","follows"],["folse","false"],["folwo","follow"],["folwoed","followed"],["folwoer","follower"],["folwoers","followers"],["folwoin","following"],["folwoind","following"],["folwoing","following"],["folwoinwg","following"],["folwoiong","following"],["folwoiwng","following"],["folwoong","following"],["folwos","follows"],["folx","folks"],["fom","from"],["fomat","format"],["fomated","formatted"],["fomater","formatter"],["fomates","formats"],["fomating","formatting"],["fomats","formats"],["fomatted","formatted"],["fomatter","formatter"],["fomatting","formatting"],["fomed","formed"],["fomrat","format"],["fomrated","formatted"],["fomrater","formatter"],["fomrating","formatting"],["fomrats","formats"],["fomratted","formatted"],["fomratter","formatter"],["fomratting","formatting"],["fomula","formula"],["fomulas","formula"],["fonction","function"],["fonctional","functional"],["fonctionalities","functionalities"],["fonctionality","functionality"],["fonctioning","functioning"],["fonctionnalies","functionalities"],["fonctionnalities","functionalities"],["fonctionnality","functionality"],["fonctions","functions"],["fonetic","phonetic"],["fontier","frontier"],["fontonfig","fontconfig"],["fontrier","frontier"],["fonud","found"],["foontnotes","footnotes"],["foootball","football"],["foorter","footer"],["footnoes","footnotes"],["footprinst","footprints"],["foound","found"],["foppy","floppy"],["foppys","floppies"],["foramatting","formatting"],["foramt","format"],["forat","format"],["forbad","forbade"],["forbbiden","forbidden"],["forbiden","forbidden"],["forbit","forbid"],["forbiten","forbidden"],["forbitten","forbidden"],["forcably","forcibly"],["forcast","forecast"],["forcasted","forecasted"],["forcaster","forecaster"],["forcasters","forecasters"],["forcasting","forecasting"],["forcasts","forecasts"],["forcot","forgot"],["forece","force"],["foreced","forced"],["foreces","forces"],["foregrond","foreground"],["foregronds","foregrounds"],["foreing","foreign"],["forementionned","aforementioned"],["forermly","formerly"],["forfiet","forfeit"],["forgeround","foreground"],["forgoten","forgotten"],["forground","foreground"],["forhead","forehead"],["foriegn","foreign"],["forld","fold"],["forlder","folder"],["forlders","folders"],["Formalhaut","Fomalhaut"],["formallize","formalize"],["formallized","formalized"],["formate","format"],["formated","formatted"],["formater","formatter"],["formaters","formatters"],["formates","formats"],["formath","format"],["formaths","formats"],["formating","formatting"],["formatteded","formatted"],["formattgin","formatting"],["formattind","formatting"],["formattings","formatting"],["formattring","formatting"],["formattted","formatted"],["formattting","formatting"],["formelly","formerly"],["formely","formerly"],["formend","formed"],["formidible","formidable"],["formmatted","formatted"],["formost","foremost"],["formt","format"],["formua","formula"],["formual","formula"],["formuale","formulae"],["formuals","formulas"],["fornat","format"],["fornated","formatted"],["fornater","formatter"],["fornats","formats"],["fornatted","formatted"],["fornatter","formatter"],["forot","forgot"],["forotten","forgotten"],["forr","for"],["forsaw","foresaw"],["forse","force"],["forseeable","foreseeable"],["fortan","fortran"],["fortat","format"],["forteen","fourteen"],["fortelling","foretelling"],["forthcominng","forthcoming"],["forthcomming","forthcoming"],["fortunaly","fortunately"],["fortunat","fortunate"],["fortunatelly","fortunately"],["fortunatly","fortunately"],["fortunetly","fortunately"],["forula","formula"],["forulas","formulas"],["forumla","formula"],["forumlas","formulas"],["forumula","formula"],["forumulas","formulas"],["forunate","fortunate"],["forunately","fortunately"],["forunner","forerunner"],["forutunate","fortunate"],["forutunately","fortunately"],["forver","forever"],["forwad","forward"],["forwaded","forwarded"],["forwading","forwarding"],["forwads","forwards"],["forwardig","forwarding"],["forwaring","forwarding"],["forwwarded","forwarded"],["foto","photo"],["fotograf","photograph"],["fotografic","photographic"],["fotografical","photographical"],["fotografy","photography"],["fotograph","photograph"],["fotography","photography"],["foucs","focus"],["foudn","found"],["foudning","founding"],["fougth","fought"],["foult","fault"],["foults","faults"],["foundaries","foundries"],["foundary","foundry"],["Foundland","Newfoundland"],["fourties","forties"],["fourty","forty"],["fouth","fourth"],["fouund","found"],["foward","forward"],["fowarded","forwarded"],["fowarding","forwarding"],["fowards","forwards"],["fprmat","format"],["fracional","fractional"],["fragement","fragment"],["fragementation","fragmentation"],["fragements","fragments"],["fragmant","fragment"],["fragmantation","fragmentation"],["fragmants","fragments"],["fragmenet","fragment"],["fragmenetd","fragmented"],["fragmeneted","fragmented"],["fragmeneting","fragmenting"],["fragmenets","fragments"],["fragmnet","fragment"],["frambuffer","framebuffer"],["framebufer","framebuffer"],["framei","frame"],["frament","fragment"],["framented","fragmented"],["framents","fragments"],["frametyp","frametype"],["framewoek","framework"],["framewoeks","frameworks"],["frameworkk","framework"],["framlayout","framelayout"],["framming","framing"],["framwework","framework"],["framwork","framework"],["framworks","frameworks"],["frane","frame"],["frankin","franklin"],["Fransiscan","Franciscan"],["Fransiscans","Franciscans"],["franzise","franchise"],["frecuencies","frequencies"],["frecuency","frequency"],["frecuent","frequent"],["frecuented","frequented"],["frecuently","frequently"],["frecuents","frequents"],["freecallrelpy","freecallreply"],["freedon","freedom"],["freedons","freedoms"],["freedum","freedom"],["freedums","freedoms"],["freee","free"],["freeed","freed"],["freezs","freezes"],["freind","friend"],["freindly","friendly"],["freqencies","frequencies"],["freqency","frequency"],["freqeuncies","frequencies"],["freqeuncy","frequency"],["freqiencies","frequencies"],["freqiency","frequency"],["freqquencies","frequencies"],["freqquency","frequency"],["frequancies","frequencies"],["frequancy","frequency"],["frequant","frequent"],["frequantly","frequently"],["frequences","frequencies"],["frequencey","frequency"],["frequenies","frequencies"],["frequentily","frequently"],["frequncies","frequencies"],["frequncy","frequency"],["freze","freeze"],["frezes","freezes"],["frgament","fragment"],["fricton","friction"],["fridey","Friday"],["frimware","firmware"],["frisday","Friday"],["frist","first"],["frition","friction"],["fritional","frictional"],["fritions","frictions"],["frmat","format"],["frmo","from"],["froce","force"],["frok","from"],["fromal","formal"],["fromat","format"],["fromated","formatted"],["fromates","formats"],["fromating","formatting"],["fromation","formation"],["fromats","formats"],["frome","from"],["fromed","formed"],["fromm","from"],["froms","forms"],["fromt","from"],["fromthe","from the"],["fronend","frontend"],["fronends","frontends"],["froniter","frontier"],["frontent","frontend"],["frontents","frontends"],["frop","drop"],["fropm","from"],["frops","drops"],["frowarded","forwarded"],["frowrad","forward"],["frowrading","forwarding"],["frowrads","forwards"],["frozee","frozen"],["fschk","fsck"],["FTBS","FTBFS"],["ftrunacate","ftruncate"],["fualt","fault"],["fualts","faults"],["fucntion","function"],["fucntional","functional"],["fucntionality","functionality"],["fucntioned","functioned"],["fucntioning","functioning"],["fucntions","functions"],["fuction","function"],["fuctionality","functionality"],["fuctiones","functioned"],["fuctioning","functioning"],["fuctionoid","functionoid"],["fuctions","functions"],["fuetherst","furthest"],["fuethest","furthest"],["fufill","fulfill"],["fufilled","fulfilled"],["fugure","figure"],["fugured","figured"],["fugures","figures"],["fule","file"],["fulfiled","fulfilled"],["fullfiled","fulfilled"],["fullfiling","fulfilling"],["fullfilled","fulfilled"],["fullfilling","fulfilling"],["fullfills","fulfills"],["fullly","fully"],["fulsh","flush"],["fuly","fully"],["fumction","function"],["fumctional","functional"],["fumctionally","functionally"],["fumctioned","functioned"],["fumctions","functions"],["funcation","function"],["funchtion","function"],["funchtional","functional"],["funchtioned","functioned"],["funchtioning","functioning"],["funchtionn","function"],["funchtionnal","functional"],["funchtionned","functioned"],["funchtionning","functioning"],["funchtionns","functions"],["funchtions","functions"],["funcion","function"],["funcions","functions"],["funciotn","function"],["funciotns","functions"],["funciton","function"],["funcitonal","functional"],["funcitonality","functionality"],["funcitonally","functionally"],["funcitoned","functioned"],["funcitoning","functioning"],["funcitons","functions"],["funcstions","functions"],["functiion","function"],["functiional","functional"],["functiionality","functionality"],["functiionally","functionally"],["functiioning","functioning"],["functiions","functions"],["functin","function"],["functinality","functionality"],["functino","function"],["functins","functions"],["functio","function"],["functionability","functionality"],["functionaility","functionality"],["functionailty","functionality"],["functionaily","functionality"],["functionallities","functionalities"],["functionallity","functionality"],["functionaltiy","functionality"],["functionalty","functionality"],["functionionalities","functionalities"],["functionionality","functionality"],["functionnal","functional"],["functionnalities","functionalities"],["functionnality","functionality"],["functionnaly","functionally"],["functionning","functioning"],["functionon","function"],["functionss","functions"],["functios","functions"],["functiosn","functions"],["functiton","function"],["functitonal","functional"],["functitonally","functionally"],["functitoned","functioned"],["functitons","functions"],["functon","function"],["functonal","functional"],["functonality","functionality"],["functoning","functioning"],["functons","functions"],["functtion","function"],["functtional","functional"],["functtionalities","functionalities"],["functtioned","functioned"],["functtioning","functioning"],["functtions","functions"],["funczion","function"],["fundametal","fundamental"],["fundametals","fundamentals"],["fundation","foundation"],["fundemantal","fundamental"],["fundemental","fundamental"],["fundementally","fundamentally"],["fundementals","fundamentals"],["funguses","fungi"],["funktion","function"],["funnnily","funnily"],["funtion","function"],["funtional","functional"],["funtionalities","functionalities"],["funtionality","functionality"],["funtionallity","functionality"],["funtionally","functionally"],["funtionalty","functionality"],["funtioning","functioning"],["funtions","functions"],["funvtion","function"],["funvtional","functional"],["funvtionalities","functionalities"],["funvtionality","functionality"],["funvtioned","functioned"],["funvtioning","functioning"],["funvtions","functions"],["funxtion","function"],["funxtional","functional"],["funxtionalities","functionalities"],["funxtionality","functionality"],["funxtioned","functioned"],["funxtioning","functioning"],["funxtions","functions"],["furether","further"],["furethermore","furthermore"],["furethest","furthest"],["furfill","fulfill"],["furher","further"],["furhermore","furthermore"],["furhest","furthest"],["furhter","further"],["furhtermore","furthermore"],["furhtest","furthest"],["furmalae","formulae"],["furmula","formula"],["furmulae","formulae"],["furnction","function"],["furnctional","functional"],["furnctions","functions"],["furneture","furniture"],["furser","further"],["fursermore","furthermore"],["furst","first"],["fursther","further"],["fursthermore","furthermore"],["fursthest","furthest"],["furter","further"],["furthemore","furthermore"],["furthermor","furthermore"],["furtherst","furthest"],["furthremore","furthermore"],["furthrest","furthest"],["furthur","further"],["furture","future"],["furure","future"],["furuther","further"],["furutre","future"],["furzzer","fuzzer"],["fuschia","fuchsia"],["fushed","flushed"],["fushing","flushing"],["futher","further"],["futherize","further"],["futhermore","furthermore"],["futrue","future"],["futrure","future"],["futture","future"],["fwe","few"],["fwirte","fwrite"],["fxed","fixed"],["fysical","physical"],["fysisist","physicist"],["fysisit","physicist"],["gabage","garbage"],["galatic","galactic"],["Galations","Galatians"],["gallaries","galleries"],["gallary","gallery"],["gallaxies","galaxies"],["gallleries","galleries"],["galllery","gallery"],["galllerys","galleries"],["galvinized","galvanized"],["Gameboy","Game Boy"],["ganbia","gambia"],["ganerate","generate"],["ganes","games"],["ganster","gangster"],["garabge","garbage"],["garantee","guarantee"],["garanteed","guaranteed"],["garanteeed","guaranteed"],["garantees","guarantees"],["garantied","guaranteed"],["garanty","guarantee"],["garbadge","garbage"],["garbage-dollected","garbage-collected"],["garbagge","garbage"],["garbarge","garbage"],["gard","guard"],["gardai","garda\xED"],["garentee","guarantee"],["garnison","garrison"],["garuantee","guarantee"],["garuanteed","guaranteed"],["garuantees","guarantees"],["garuantied","guaranteed"],["gatable","gateable"],["gateing","gating"],["gatherig","gathering"],["gatway","gateway"],["gauage","gauge"],["gauarana","guaran\xE1"],["gauarantee","guarantee"],["gauaranteed","guaranteed"],["gauarentee","guarantee"],["gauarenteed","guaranteed"],["gaurantee","guarantee"],["gauranteed","guaranteed"],["gauranteeing","guaranteeing"],["gaurantees","guarantees"],["gaurentee","guarantee"],["gaurenteed","guaranteed"],["gaurentees","guarantees"],["gaus'","Gauss'"],["gaus's","Gauss'"],["gausian","gaussian"],["geeneric","generic"],["geenrate","generate"],["geenrated","generated"],["geenrates","generates"],["geenration","generation"],["geenrational","generational"],["geeoteen","guillotine"],["geeral","general"],["gemetrical","geometrical"],["gemetry","geometry"],["gemoetry","geometry"],["gemometric","geometric"],["genarate","generate"],["genarated","generated"],["genarating","generating"],["genaration","generation"],["genearal","general"],["genearally","generally"],["genearted","generated"],["geneate","generate"],["geneated","generated"],["geneates","generates"],["geneating","generating"],["geneation","generation"],["geneological","genealogical"],["geneologies","genealogies"],["geneology","genealogy"],["generaates","generates"],["generaly","generally"],["generalyl","generally"],["generalyse","generalise"],["generater","generator"],["generaters","generators"],["generatig","generating"],["generatng","generating"],["generatting","generating"],["genereate","generate"],["genereated","generated"],["genereates","generates"],["genereating","generating"],["genered","generated"],["genereic","generic"],["generell","general"],["generelly","generally"],["genererate","generate"],["genererated","generated"],["genererater","generator"],["genererating","generating"],["genereration","generation"],["genereted","generated"],["generilise","generalise"],["generilised","generalised"],["generilises","generalises"],["generilize","generalize"],["generilized","generalized"],["generilizes","generalizes"],["generiously","generously"],["generla","general"],["generlaizes","generalizes"],["generlas","generals"],["generted","generated"],["generting","generating"],["genertion","generation"],["genertor","generator"],["genertors","generators"],["genialia","genitalia"],["genral","general"],["genralisation","generalisation"],["genralisations","generalisations"],["genralise","generalise"],["genralised","generalised"],["genralises","generalises"],["genralization","generalization"],["genralizations","generalizations"],["genralize","generalize"],["genralized","generalized"],["genralizes","generalizes"],["genrally","generally"],["genrals","generals"],["genrate","generate"],["genrated","generated"],["genrates","generates"],["genratet","generated"],["genrating","generating"],["genration","generation"],["genrations","generations"],["genrator","generator"],["genrators","generators"],["genreate","generate"],["genreated","generated"],["genreates","generates"],["genreating","generating"],["genreic","generic"],["genric","generic"],["genrics","generics"],["gental","gentle"],["genuin","genuine"],["geocentic","geocentric"],["geoemtries","geometries"],["geoemtry","geometry"],["geogcountry","geocountry"],["geographich","geographic"],["geographicial","geographical"],["geoio","geoip"],["geomertic","geometric"],["geomerties","geometries"],["geomerty","geometry"],["geomery","geometry"],["geometites","geometries"],["geometrician","geometer"],["geometricians","geometers"],["geometrie","geometry"],["geometrys","geometries"],["geomety","geometry"],["geometyr","geometry"],["geomitrically","geometrically"],["geomoetric","geometric"],["geomoetrically","geometrically"],["geomoetry","geometry"],["geomtery","geometry"],["geomtries","geometries"],["geomtry","geometry"],["geomtrys","geometries"],["georeferncing","georeferencing"],["geraff","giraffe"],["geraphics","graphics"],["gerat","great"],["gereating","generating"],["gerenate","generate"],["gerenated","generated"],["gerenates","generates"],["gerenating","generating"],["gerenation","generation"],["gerenations","generations"],["gerenic","generic"],["gerenics","generics"],["gererate","generate"],["gererated","generated"],["gerilla","guerrilla"],["gerneral","general"],["gernerally","generally"],["gerneraly","generally"],["gernerate","generate"],["gernerated","generated"],["gernerates","generates"],["gernerating","generating"],["gerneration","generation"],["gernerator","generator"],["gernerators","generators"],["gerneric","generic"],["gernerics","generics"],["gess","guess"],["get's","gets"],["get;s","gets"],["getfastproperyvalue","getfastpropertyvalue"],["getimezone","gettimezone"],["geting","getting"],["getlael","getlabel"],["getoe","ghetto"],["getoject","getobject"],["gettetx","gettext"],["gettter","getter"],["gettters","getters"],["getttext","gettext"],["getttime","gettime"],["getttimeofday","gettimeofday"],["gettting","getting"],["ggogled","Googled"],["Ghandi","Gandhi"],["ghostcript","ghostscript"],["ghostscritp","ghostscript"],["ghraphic","graphic"],["gien","given"],["gigibit","gigabit"],["gilotine","guillotine"],["gilty","guilty"],["ginee","guinea"],["gingam","gingham"],["gioen","given"],["gir","git"],["giser","geyser"],["gisers","geysers"],["git-buildpackge","git-buildpackage"],["git-buildpackges","git-buildpackages"],["gitar","guitar"],["gitars","guitars"],["gitatributes","gitattributes"],["giveing","giving"],["givveing","giving"],["givven","given"],["givving","giving"],["glamourous","glamorous"],["glight","flight"],["gloab","globe"],["gloabal","global"],["gloabl","global"],["gloassaries","glossaries"],["gloassary","glossary"],["globablly","globally"],["globaly","globally"],["globbal","global"],["globel","global"],["glorfied","glorified"],["glpyh","glyph"],["glpyhs","glyphs"],["glyh","glyph"],["glyhs","glyphs"],["glyped","glyphed"],["glyphes","glyphs"],["glyping","glyphing"],["glyserin","glycerin"],["gnawwed","gnawed"],["gneral","general"],["gnerally","generally"],["gnerals","generals"],["gnerate","generate"],["gnerated","generated"],["gnerates","generates"],["gnerating","generating"],["gneration","generation"],["gnerations","generations"],["gneric","generic"],["gnorung","ignoring"],["gobal","global"],["gocde","gcode"],["godess","goddess"],["godesses","goddesses"],["Godounov","Godunov"],["goemetries","geometries"],["goess","goes"],["gogether","together"],["goign","going"],["goin","going"],["goind","going"],["golbal","global"],["golbally","globally"],["golbaly","globally"],["gonig","going"],["gool","ghoul"],["gord","gourd"],["gormay","gourmet"],["gorry","gory"],["gorup","group"],["goruped","grouped"],["goruping","grouping"],["gorups","groups"],["gost","ghost"],["Gothenberg","Gothenburg"],["Gottleib","Gottlieb"],["goup","group"],["gouped","grouped"],["goups","groups"],["gouvener","governor"],["govement","government"],["govenment","government"],["govenor","governor"],["govenrment","government"],["goverance","governance"],["goverment","government"],["govermental","governmental"],["govermnment","government"],["governer","governor"],["governmnet","government"],["govorment","government"],["govormental","governmental"],["govornment","government"],["grabage","garbage"],["grabed","grabbed"],["grabing","grabbing"],["gracefull","graceful"],["gracefuly","gracefully"],["gradiants","gradients"],["gradualy","gradually"],["graet","great"],["grafics","graphics"],["grafitti","graffiti"],["grahic","graphic"],["grahical","graphical"],["grahics","graphics"],["grahpic","graphic"],["grahpical","graphical"],["grahpics","graphics"],["gramar","grammar"],["gramatically","grammatically"],["grammartical","grammatical"],["grammaticaly","grammatically"],["grammer","grammar"],["grammers","grammars"],["granchildren","grandchildren"],["granilarity","granularity"],["granuality","granularity"],["granualtiry","granularity"],["granulatiry","granularity"],["grapgics","graphics"],["graphcis","graphics"],["graphis","graphics"],["grapic","graphic"],["grapical","graphical"],["grapics","graphics"],["grat","great"],["gratefull","grateful"],["gratuitious","gratuitous"],["grbber","grabber"],["greatful","grateful"],["greatfully","gratefully"],["greather","greater"],["greif","grief"],["grephic","graphic"],["grestest","greatest"],["greysacles","greyscales"],["gridles","griddles"],["grigorian","Gregorian"],["grobal","global"],["grobally","globally"],["grometry","geometry"],["grooup","group"],["groouped","grouped"],["groouping","grouping"],["grooups","groups"],["gropu","group"],["groubpy","groupby"],["groupd","grouped"],["groupping","grouping"],["groupt","grouped"],["grranted","granted"],["gruop","group"],["gruopd","grouped"],["gruops","groups"],["grup","group"],["gruped","grouped"],["gruping","grouping"],["grups","groups"],["grwo","grow"],["guage","gauge"],["guarante","guarantee"],["guaranted","guaranteed"],["guaranteey","guaranty"],["guaranteing","guaranteeing"],["guarantes","guarantees"],["guarantie","guarantee"],["guarbage","garbage"],["guareded","guarded"],["guareente","guarantee"],["guareented","guaranteed"],["guareentee","guarantee"],["guareenteed","guaranteed"],["guareenteeing","guaranteeing"],["guareentees","guarantees"],["guareenteing","guaranteeing"],["guareentes","guarantees"],["guareenty","guaranty"],["guarente","guarantee"],["guarented","guaranteed"],["guarentee","guarantee"],["guarenteed","guaranteed"],["guarenteede","guarantee"],["guarenteeded","guaranteed"],["guarenteedeing","guaranteeing"],["guarenteedes","guarantees"],["guarenteedy","guaranty"],["guarenteeing","guaranteeing"],["guarenteer","guarantee"],["guarenteerd","guaranteed"],["guarenteering","guaranteeing"],["guarenteers","guarantees"],["guarentees","guarantees"],["guarenteing","guaranteeing"],["guarentes","guarantees"],["guarentie","guarantee"],["guarentied","guaranteed"],["guarentieing","guaranteeing"],["guarenties","guarantees"],["guarenty","guaranty"],["guarentyd","guaranteed"],["guarentying","guarantee"],["guarentyinging","guaranteeing"],["guarentys","guarantees"],["guarging","guarding"],["guarnante","guarantee"],["guarnanted","guaranteed"],["guarnantee","guarantee"],["guarnanteed","guaranteed"],["guarnanteeing","guaranteeing"],["guarnantees","guarantees"],["guarnanteing","guaranteeing"],["guarnantes","guarantees"],["guarnanty","guaranty"],["guarnate","guarantee"],["guarnated","guaranteed"],["guarnatee","guarantee"],["guarnateed","guaranteed"],["guarnateee","guarantee"],["guarnateeed","guaranteed"],["guarnateeeing","guaranteeing"],["guarnateees","guarantees"],["guarnateeing","guaranteeing"],["guarnatees","guarantees"],["guarnateing","guaranteeing"],["guarnates","guarantees"],["guarnatey","guaranty"],["guarnaty","guaranty"],["guarnete","guarantee"],["guarneted","guaranteed"],["guarnetee","guarantee"],["guarneteed","guaranteed"],["guarneteeing","guaranteeing"],["guarnetees","guarantees"],["guarneteing","guaranteeing"],["guarnetes","guarantees"],["guarnety","guaranty"],["guarnte","guarantee"],["guarnted","guaranteed"],["guarntee","guarantee"],["guarnteed","guaranteed"],["guarnteeing","guaranteeing"],["guarntees","guarantees"],["guarnteing","guaranteeing"],["guarntes","guarantees"],["guarnty","guaranty"],["guarrante","guarantee"],["guarranted","guaranteed"],["guarrantee","guarantee"],["guarranteed","guaranteed"],["guarranteeing","guaranteeing"],["guarrantees","guarantees"],["guarranteing","guaranteeing"],["guarrantes","guarantees"],["guarrantie","guarantee"],["guarrantied","guaranteed"],["guarrantieing","guaranteeing"],["guarranties","guarantees"],["guarranty","guaranty"],["guarrantyd","guaranteed"],["guarrantying","guaranteeing"],["guarrantys","guarantees"],["guarrente","guarantee"],["guarrented","guaranteed"],["guarrentee","guarantee"],["guarrenteed","guaranteed"],["guarrenteeing","guaranteeing"],["guarrentees","guarantees"],["guarrenteing","guaranteeing"],["guarrentes","guarantees"],["guarrenty","guaranty"],["guaruante","guarantee"],["guaruanted","guaranteed"],["guaruantee","guarantee"],["guaruanteed","guaranteed"],["guaruanteeing","guaranteeing"],["guaruantees","guarantees"],["guaruanteing","guaranteeing"],["guaruantes","guarantees"],["guaruanty","guaranty"],["guarunte","guarantee"],["guarunted","guaranteed"],["guaruntee","guarantee"],["guarunteed","guaranteed"],["guarunteeing","guaranteeing"],["guaruntees","guarantees"],["guarunteing","guaranteeing"],["guaruntes","guarantees"],["guarunty","guaranty"],["guas'","Gauss'"],["guas's","Gauss'"],["guas","Gauss"],["guass'","Gauss'"],["guass","Gauss"],["guassian","Gaussian"],["Guatamala","Guatemala"],["Guatamalan","Guatemalan"],["gud","good"],["guerrila","guerrilla"],["guerrilas","guerrillas"],["gueswork","guesswork"],["guideded","guided"],["guidence","guidance"],["guidline","guideline"],["guidlines","guidelines"],["Guilia","Giulia"],["Guilio","Giulio"],["Guiness","Guinness"],["Guiseppe","Giuseppe"],["gunanine","guanine"],["gurantee","guarantee"],["guranteed","guaranteed"],["guranteeing","guaranteeing"],["gurantees","guarantees"],["gurrantee","guarantee"],["guttaral","guttural"],["gutteral","guttural"],["gylph","glyph"],["gziniflate","gzinflate"],["gziped","gzipped"],["haa","has"],["haave","have"],["habaeus","habeas"],["habbit","habit"],["habeus","habeas"],["hability","ability"],["Habsbourg","Habsburg"],["hace","have"],["hachish","hackish"],["hadling","handling"],["hadnler","handler"],["haeder","header"],["haemorrage","haemorrhage"],["halarious","hilarious"],["hald","held"],["halfs","halves"],["halp","help"],["halpoints","halfpoints"],["hammmer","hammer"],["hampster","hamster"],["handel","handle"],["handeler","handler"],["handeles","handles"],["handeling","handling"],["handels","handles"],["hander","handler"],["handfull","handful"],["handhake","handshake"],["handker","handler"],["handleer","handler"],["handleing","handling"],["handlig","handling"],["handlling","handling"],["handsake","handshake"],["handshacke","handshake"],["handshackes","handshakes"],["handshacking","handshaking"],["handshage","handshake"],["handshages","handshakes"],["handshaging","handshaking"],["handshak","handshake"],["handshakng","handshaking"],["handshakre","handshake"],["handshakres","handshakes"],["handshakring","handshaking"],["handshaks","handshakes"],["handshale","handshake"],["handshales","handshakes"],["handshaling","handshaking"],["handshare","handshake"],["handshares","handshakes"],["handsharing","handshaking"],["handshk","handshake"],["handshke","handshake"],["handshkes","handshakes"],["handshking","handshaking"],["handshkng","handshaking"],["handshks","handshakes"],["handskake","handshake"],["handwirting","handwriting"],["hanel","handle"],["hangig","hanging"],["hanlde","handle"],["hanlded","handled"],["hanlder","handler"],["hanlders","handlers"],["hanldes","handles"],["hanlding","handling"],["hanldle","handle"],["hanle","handle"],["hanled","handled"],["hanles","handles"],["hanling","handling"],["hanshake","handshake"],["hanshakes","handshakes"],["hansome","handsome"],["hapen","happen"],["hapend","happened"],["hapends","happens"],["hapened","happened"],["hapening","happening"],["hapenn","happen"],["hapenned","happened"],["hapenning","happening"],["hapenns","happens"],["hapens","happens"],["happaned","happened"],["happended","happened"],["happenned","happened"],["happenning","happening"],["happennings","happenings"],["happenns","happens"],["happilly","happily"],["happne","happen"],["happpen","happen"],["happpened","happened"],["happpening","happening"],["happpenings","happenings"],["happpens","happens"],["harased","harassed"],["harases","harasses"],["harasment","harassment"],["harasments","harassments"],["harassement","harassment"],["harcoded","hardcoded"],["harcoding","hardcoding"],["hard-wirted","hard-wired"],["hardare","hardware"],["hardocde","hardcode"],["hardward","hardware"],["hardwdare","hardware"],["hardwirted","hardwired"],["harge","charge"],["harras","harass"],["harrased","harassed"],["harrases","harasses"],["harrasing","harassing"],["harrasment","harassment"],["harrasments","harassments"],["harrass","harass"],["harrassed","harassed"],["harrasses","harassed"],["harrassing","harassing"],["harrassment","harassment"],["harrassments","harassments"],["harth","hearth"],["harware","hardware"],["harwdare","hardware"],["has'nt","hasn't"],["hases","hashes"],["hashi","hash"],["hashreference","hash reference"],["hashs","hashes"],["hashses","hashes"],["hask","hash"],["hasn;t","hasn't"],["hasnt'","hasn't"],["hasnt","hasn't"],["hass","hash"],["hastable","hashtable"],["hastables","hashtables"],["Hatian","Haitian"],["hauty","haughty"],["have'nt","haven't"],["haveing","having"],["haven;t","haven't"],["havent'","haven't"],["havent't","haven't"],["havent","haven't"],["havew","have"],["haviest","heaviest"],["havn't","haven't"],["havnt","haven't"],["hax","hex"],["haynus","heinous"],["hazzle","hassle"],["hda","had"],["headder","header"],["headders","headers"],["headerr","header"],["headerrs","headers"],["headle","handle"],["headong","heading"],["headquarer","headquarter"],["headquater","headquarter"],["headquatered","headquartered"],["headquaters","headquarters"],["heaer","header"],["healthercare","healthcare"],["heathy","healthy"],["hefer","heifer"],["Heidelburg","Heidelberg"],["heigest","highest"],["heigher","higher"],["heighest","highest"],["heighit","height"],["heighteen","eighteen"],["heigt","height"],["heigth","height"],["heirachies","hierarchies"],["heirachy","hierarchy"],["heirarchic","hierarchic"],["heirarchical","hierarchical"],["heirarchically","hierarchically"],["heirarchies","hierarchies"],["heirarchy","hierarchy"],["heiroglyphics","hieroglyphics"],["helerps","helpers"],["hellow","hello"],["helment","helmet"],["heloer","helper"],["heloers","helpers"],["helpe","helper"],["helpfull","helpful"],["helpfuly","helpfully"],["helpped","helped"],["hemipshere","hemisphere"],["hemipsheres","hemispheres"],["hemishpere","hemisphere"],["hemishperes","hemispheres"],["hemmorhage","hemorrhage"],["hemorage","haemorrhage"],["henc","hence"],["henderence","hindrance"],["hendler","handler"],["hense","hence"],["hepler","helper"],["herarchy","hierarchy"],["herat","heart"],["heree","here"],["heridity","heredity"],["heroe","hero"],["heros","heroes"],["herselv","herself"],["hertiage","heritage"],["hertically","hectically"],["hertzs","hertz"],["hese","these"],["hesiate","hesitate"],["hesistant","hesitant"],["hesistate","hesitate"],["hesistated","hesitated"],["hesistates","hesitates"],["hesistating","hesitating"],["hesistation","hesitation"],["hesistations","hesitations"],["hestiate","hesitate"],["hetrogeneous","heterogeneous"],["heuristc","heuristic"],["heuristcs","heuristics"],["heursitics","heuristics"],["hevy","heavy"],["hexademical","hexadecimal"],["hexdecimal","hexadecimal"],["hexgaon","hexagon"],["hexgaonal","hexagonal"],["hexgaons","hexagons"],["hexidecimal","hexadecimal"],["hge","he"],["hiarchical","hierarchical"],["hiarchy","hierarchy"],["hiddden","hidden"],["hidded","hidden"],["hideen","hidden"],["hiden","hidden"],["hiearchies","hierarchies"],["hiearchy","hierarchy"],["hieght","height"],["hiena","hyena"],["hierachical","hierarchical"],["hierachies","hierarchies"],["hierachries","hierarchies"],["hierachry","hierarchy"],["hierachy","hierarchy"],["hierarachical","hierarchical"],["hierarachy","hierarchy"],["hierarchichal","hierarchical"],["hierarchichally","hierarchically"],["hierarchie","hierarchy"],["hierarcical","hierarchical"],["hierarcy","hierarchy"],["hierarhcical","hierarchical"],["hierarhcically","hierarchically"],["hierarhcies","hierarchies"],["hierarhcy","hierarchy"],["hierchy","hierarchy"],["hieroglph","hieroglyph"],["hieroglphs","hieroglyphs"],["hietus","hiatus"],["higeine","hygiene"],["higer","higher"],["higest","highest"],["high-affort","high-effort"],["highight","highlight"],["highighted","highlighted"],["highighter","highlighter"],["highighters","highlighters"],["highights","highlights"],["highjack","hijack"],["highligh","highlight"],["highlighed","highlighted"],["highligher","highlighter"],["highlighers","highlighters"],["highlighing","highlighting"],["highlighs","highlights"],["highlightin","highlighting"],["highlightning","highlighting"],["highligjt","highlight"],["highligjted","highlighted"],["highligjtes","highlights"],["highligjting","highlighting"],["highligjts","highlights"],["highligt","highlight"],["highligted","highlighted"],["highligth","highlight"],["highligting","highlighting"],["highligts","highlights"],["highter","higher"],["hightest","highest"],["hightlight","highlight"],["hightlighted","highlighted"],["hightlighting","highlighting"],["hightlights","highlights"],["hights","heights"],["higlight","highlight"],["higlighted","highlighted"],["higlighting","highlighting"],["higlights","highlights"],["higly","highly"],["higth","height"],["higway","highway"],["hijkack","hijack"],["hijkacked","hijacked"],["hijkacking","hijacking"],["hijkacks","hijacks"],["hilight","highlight"],["hilighted","highlighted"],["hilighting","highlighting"],["hilights","highlights"],["hillarious","hilarious"],["himselv","himself"],["hinderance","hindrance"],["hinderence","hindrance"],["hindrence","hindrance"],["hipopotamus","hippopotamus"],["hipotetical","hypothetical"],["hirachy","hierarchy"],["hirarchies","hierarchies"],["hirarchy","hierarchy"],["hirarcies","hierarchies"],["hirearchy","hierarchy"],["hirearcy","hierarchy"],["hismelf","himself"],["hisory","history"],["histgram","histogram"],["histocompatability","histocompatibility"],["historgram","histogram"],["historgrams","histograms"],["historicians","historians"],["historyan","historian"],["historyans","historians"],["historycal","historical"],["historycally","historically"],["historycaly","historically"],["histroian","historian"],["histroians","historians"],["histroic","historic"],["histroical","historical"],["histroically","historically"],["histroicaly","historically"],["histroies","histories"],["histroy","history"],["histry","history"],["hitogram","histogram"],["hitories","histories"],["hitory","history"],["hitsingles","hit singles"],["hiygeine","hygiene"],["hmdi","hdmi"],["hnalder","handler"],["hoeks","hoax"],["hoever","however"],["hokay","okay"],["holf","hold"],["holliday","holiday"],["hollowcost","holocaust"],["homapage","homepage"],["homegeneous","homogeneous"],["homestate","home state"],["homogeneize","homogenize"],["homogeneized","homogenized"],["homogenious","homogeneous"],["homogeniously","homogeneously"],["homogenity","homogeneity"],["homogenius","homogeneous"],["homogeniusly","homogeneously"],["homogenoues","homogeneous"],["homogenous","homogeneous"],["homogenously","homogeneously"],["homogenuous","homogeneous"],["honory","honorary"],["hoook","hook"],["hoooks","hooks"],["hootsba","chutzpah"],["hopefulle","hopefully"],["hopefullly","hopefully"],["hopefullt","hopefully"],["hopefullu","hopefully"],["hopefuly","hopefully"],["hopeing","hoping"],["hopful","hopeful"],["hopfully","hopefully"],["hopmepage","homepage"],["hopmepages","homepages"],["hoppefully","hopefully"],["hopyfully","hopefully"],["horicontal","horizontal"],["horicontally","horizontally"],["horinzontal","horizontal"],["horizntal","horizontal"],["horizonal","horizontal"],["horizonally","horizontally"],["horizontale","horizontal"],["horiztonal","horizontal"],["horiztonally","horizontally"],["horphan","orphan"],["horrable","horrible"],["horrifing","horrifying"],["horyzontally","horizontally"],["horziontal","horizontal"],["horziontally","horizontally"],["horzontal","horizontal"],["horzontally","horizontally"],["hosited","hoisted"],["hospitible","hospitable"],["hostanme","hostname"],["hostorical","historical"],["hostories","histories"],["hostory","history"],["hostspot","hotspot"],["hostspots","hotspots"],["hotizontal","horizontal"],["hotname","hostname"],["hounour","honour"],["houres","hours"],["housand","thousand"],["houskeeping","housekeeping"],["hovever","however"],["hovewer","however"],["howeever","however"],["howerver","however"],["howeverm","however"],["howewer","however"],["howver","however"],["hradware","hardware"],["hradwares","hardwares"],["hrlp","help"],["hrlped","helped"],["hrlper","helper"],["hrlpers","helpers"],["hrlping","helping"],["hrlps","helps"],["hrough","through"],["hsa","has"],["hsell","shell"],["hsi","his"],["hsitorians","historians"],["hsotname","hostname"],["hsould'nt","shouldn't"],["hsould","should"],["hsouldn't","shouldn't"],["hstory","history"],["htacccess","htaccess"],["hte","the"],["htey","they"],["htikn","think"],["hting","thing"],["htink","think"],["htis","this"],["htmp","html"],["htting","hitting"],["hueristic","heuristic"],["humber","number"],["huminoid","humanoid"],["humoural","humoral"],["humurous","humorous"],["hunderd","hundred"],["hundreths","hundredths"],["hundrets","hundreds"],["hunrgy","hungry"],["huricane","hurricane"],["huristic","heuristic"],["husban","husband"],["hvae","have"],["hvaing","having"],["hve","have"],["hwihc","which"],["hwile","while"],["hwole","whole"],["hybernate","hibernate"],["hydogen","hydrogen"],["hydrolic","hydraulic"],["hydrolics","hydraulics"],["hydropile","hydrophile"],["hydropilic","hydrophilic"],["hydropobe","hydrophobe"],["hydropobic","hydrophobic"],["hyerarchy","hierarchy"],["hyerlink","hyperlink"],["hygeine","hygiene"],["hygene","hygiene"],["hygenic","hygienic"],["hygine","hygiene"],["hyjack","hijack"],["hyjacking","hijacking"],["hypen","hyphen"],["hypenate","hyphenate"],["hypenated","hyphenated"],["hypenates","hyphenates"],["hypenating","hyphenating"],["hypenation","hyphenation"],["hypens","hyphens"],["hyperboly","hyperbole"],["Hyperldger","Hyperledger"],["hypervior","hypervisor"],["hypocracy","hypocrisy"],["hypocrasy","hypocrisy"],["hypocricy","hypocrisy"],["hypocrit","hypocrite"],["hypocrits","hypocrites"],["hyposeses","hypotheses"],["hyposesis","hypothesis"],["hypoteses","hypotheses"],["hypotesis","hypothesis"],["hypotethically","hypothetically"],["hypothenuse","hypotenuse"],["hypothenuses","hypotenuses"],["hypter","hyper"],["hyptothetical","hypothetical"],["hyptothetically","hypothetically"],["hypvervisor","hypervisor"],["hypvervisors","hypervisors"],["hypvisor","hypervisor"],["hypvisors","hypervisors"],["I'sd","I'd"],["i;ll","I'll"],["iamge","image"],["ibject","object"],["ibjects","objects"],["ibrary","library"],["icesickle","icicle"],["iclude","include"],["icluded","included"],["icludes","includes"],["icluding","including"],["iconclastic","iconoclastic"],["iconifie","iconify"],["icrease","increase"],["icreased","increased"],["icreases","increases"],["icreasing","increasing"],["icrement","increment"],["icrementally","incrementally"],["icremented","incremented"],["icrementing","incrementing"],["icrements","increments"],["idae","idea"],["idaeidae","idea"],["idaes","ideas"],["idealogies","ideologies"],["idealogy","ideology"],["idefinite","indefinite"],["idel","idle"],["idelogy","ideology"],["idemopotent","idempotent"],["idendified","identified"],["idendifier","identifier"],["idendifiers","identifiers"],["idenfied","identified"],["idenfifier","identifier"],["idenfifiers","identifiers"],["idenfitifer","identifier"],["idenfitifers","identifiers"],["idenfitify","identify"],["idenitfy","identify"],["idenitify","identify"],["identation","indentation"],["identcial","identical"],["identfied","identified"],["identfier","identifier"],["identfiers","identifiers"],["identiable","identifiable"],["idential","identical"],["identic","identical"],["identicial","identical"],["identidier","identifier"],["identies","identities"],["identifaction","identification"],["identifcation","identification"],["identifeir","identifier"],["identifeirs","identifiers"],["identifer","identifier"],["identifers","identifiers"],["identificable","identifiable"],["identifictaion","identification"],["identifieer","identifier"],["identifiler","identifier"],["identifilers","identifiers"],["identifing","identifying"],["identifiy","identify"],["identifyable","identifiable"],["identifyed","identified"],["identiviert","identifiers"],["identtation","indentation"],["identties","identities"],["identtifier","identifier"],["identty","identity"],["ideosyncracies","ideosyncrasies"],["ideosyncratic","idiosyncratic"],["idetifier","identifier"],["idetifiers","identifiers"],["idetifies","identifies"],["idicate","indicate"],["idicated","indicated"],["idicates","indicates"],["idicating","indicating"],["idices","indices"],["idiosyncracies","idiosyncrasies"],["idiosyncracy","idiosyncrasy"],["idividual","individual"],["idividually","individually"],["idividuals","individuals"],["idons","icons"],["iechart","piechart"],["ifself","itself"],["ifset","if set"],["ignest","ingest"],["ignested","ingested"],["ignesting","ingesting"],["ignests","ingests"],["ignnore","ignore"],["ignoded","ignored"],["ignonre","ignore"],["ignora","ignore"],["ignord","ignored"],["ignoreing","ignoring"],["ignorence","ignorance"],["ignorgable","ignorable"],["ignorgd","ignored"],["ignorge","ignore"],["ignorged","ignored"],["ignorgg","ignoring"],["ignorgig","ignoring"],["ignorging","ignoring"],["ignorgs","ignores"],["ignormable","ignorable"],["ignormd","ignored"],["ignorme","ignore"],["ignormed","ignored"],["ignormg","ignoring"],["ignormig","ignoring"],["ignorming","ignoring"],["ignorms","ignores"],["ignornable","ignorable"],["ignornd","ignored"],["ignorne","ignore"],["ignorned","ignored"],["ignorng","ignoring"],["ignornig","ignoring"],["ignorning","ignoring"],["ignorns","ignores"],["ignorrable","ignorable"],["ignorrd","ignored"],["ignorre","ignore"],["ignorred","ignored"],["ignorrg","ignoring"],["ignorrig","ignoring"],["ignorring","ignoring"],["ignorrs","ignores"],["ignors","ignores"],["ignortable","ignorable"],["ignortd","ignored"],["ignorte","ignore"],["ignorted","ignored"],["ignortg","ignoring"],["ignortig","ignoring"],["ignorting","ignoring"],["ignorts","ignores"],["ignory","ignore"],["ignroed","ignored"],["ignroing","ignoring"],["igoned","ignored"],["igonorando","ignorando"],["igonore","ignore"],["igore","ignore"],["igored","ignored"],["igores","ignores"],["igoring","ignoring"],["igrnore","ignore"],["Ihaca","Ithaca"],["ihs","his"],["iif","if"],["iimmune","immune"],["iinclude","include"],["iinterval","interval"],["iiterator","iterator"],["iland","island"],["ileagle","illegal"],["ilegal","illegal"],["ilegle","illegal"],["iligal","illegal"],["illegimacy","illegitimacy"],["illegitmate","illegitimate"],["illess","illness"],["illgal","illegal"],["illiegal","illegal"],["illigal","illegal"],["illigitament","illegitimate"],["illistrate","illustrate"],["illustrasion","illustration"],["illution","illusion"],["ilness","illness"],["ilogical","illogical"],["iluminate","illuminate"],["iluminated","illuminated"],["iluminates","illuminates"],["ilumination","illumination"],["iluminations","illuminations"],["ilustrate","illustrate"],["ilustrated","illustrated"],["ilustration","illustration"],["imagenary","imaginary"],["imaghe","image"],["imagin","imagine"],["imapct","impact"],["imapcted","impacted"],["imapcting","impacting"],["imapcts","impacts"],["imapge","image"],["imbaress","embarrass"],["imbed","embed"],["imbedded","embedded"],["imbedding","embedding"],["imblance","imbalance"],["imbrase","embrace"],["imcoming","incoming"],["imcomming","incoming"],["imcompatibility","incompatibility"],["imcompatible","incompatible"],["imcomplete","incomplete"],["imedatly","immediately"],["imedialy","immediately"],["imediate","immediate"],["imediately","immediately"],["imediatly","immediately"],["imense","immense"],["imfamus","infamous"],["imgage","image"],["imidiately","immediately"],["imilar","similar"],["imlement","implement"],["imlementation","implementation"],["imlemented","implemented"],["imlementing","implementing"],["imlements","implements"],["imlicit","implicit"],["imlicitly","implicitly"],["imliment","implement"],["imlimentation","implementation"],["imlimented","implemented"],["imlimenting","implementing"],["imliments","implements"],["immadiate","immediate"],["immadiately","immediately"],["immadiatly","immediately"],["immeadiate","immediate"],["immeadiately","immediately"],["immedaite","immediate"],["immedate","immediate"],["immedately","immediately"],["immedeate","immediate"],["immedeately","immediately"],["immedially","immediately"],["immedialty","immediately"],["immediantely","immediately"],["immediatelly","immediately"],["immediatelty","immediately"],["immediatley","immediately"],["immediatlly","immediately"],["immediatly","immediately"],["immediatlye","immediately"],["immeditaly","immediately"],["immeditately","immediately"],["immeidate","immediate"],["immeidately","immediately"],["immenantly","eminently"],["immidately","immediately"],["immidatly","immediately"],["immidiate","immediate"],["immidiatelly","immediately"],["immidiately","immediately"],["immidiatly","immediately"],["immitate","imitate"],["immitated","imitated"],["immitating","imitating"],["immitator","imitator"],["immmediate","immediate"],["immmediately","immediately"],["immsersive","immersive"],["immsersively","immersively"],["immuniy","immunity"],["immunosupressant","immunosuppressant"],["immutible","immutable"],["imolicit","implicit"],["imolicitly","implicitly"],["imort","import"],["imortable","importable"],["imorted","imported"],["imortes","imports"],["imorting","importing"],["imorts","imports"],["imovable","immovable"],["impcat","impact"],["impcated","impacted"],["impcating","impacting"],["impcats","impacts"],["impecabbly","impeccably"],["impedence","impedance"],["impeed","impede"],["impelement","implement"],["impelementation","implementation"],["impelemented","implemented"],["impelementing","implementing"],["impelements","implements"],["impelentation","implementation"],["impelment","implement"],["impelmentation","implementation"],["impelmentations","implementations"],["impement","implement"],["impementaion","implementation"],["impementaions","implementations"],["impementated","implemented"],["impementation","implementation"],["impementations","implementations"],["impemented","implemented"],["impementing","implementing"],["impementling","implementing"],["impementor","implementer"],["impements","implements"],["imperiaal","imperial"],["imperically","empirically"],["imperitive","imperative"],["impermable","impermeable"],["impiled","implied"],["implace","inplace"],["implament","implement"],["implamentation","implementation"],["implamented","implemented"],["implamenting","implementing"],["implaments","implements"],["implcit","implicit"],["implcitly","implicitly"],["implct","implicit"],["implemantation","implementation"],["implemataion","implementation"],["implemataions","implementations"],["implemememnt","implement"],["implemememntation","implementation"],["implemement","implement"],["implemementation","implementation"],["implemementations","implementations"],["implememented","implemented"],["implemementing","implementing"],["implemements","implements"],["implememetation","implementation"],["implememntation","implementation"],["implememt","implement"],["implememtation","implementation"],["implememtations","implementations"],["implememted","implemented"],["implememting","implementing"],["implememts","implements"],["implemen","implement"],["implemenatation","implementation"],["implemenation","implementation"],["implemenationa","implementation"],["implemenationd","implementation"],["implemenations","implementations"],["implemencted","implemented"],["implemend","implement"],["implemends","implements"],["implemened","implemented"],["implemenet","implement"],["implemenetaion","implementation"],["implemenetaions","implementations"],["implemenetation","implementation"],["implemenetations","implementations"],["implemenetd","implemented"],["implemeneted","implemented"],["implemeneter","implementer"],["implemeneting","implementing"],["implemenetions","implementations"],["implemenets","implements"],["implemenrt","implement"],["implementaed","implemented"],["implementaion","implementation"],["implementaions","implementations"],["implementaiton","implementation"],["implementaitons","implementations"],["implementantions","implementations"],["implementastion","implementation"],["implementataion","implementation"],["implementatation","implementation"],["implementated","implemented"],["implementates","implements"],["implementating","implementing"],["implementatins","implementations"],["implementation-spacific","implementation-specific"],["implementatition","implementation"],["implementatoin","implementation"],["implementatoins","implementations"],["implementatoion","implementation"],["implementaton","implementation"],["implementator","implementer"],["implementators","implementers"],["implementattion","implementation"],["implementd","implemented"],["implementes","implements"],["implementet","implemented"],["implemention","implementation"],["implementtaion","implementation"],["implemet","implement"],["implemetation","implementation"],["implemetations","implementations"],["implemeted","implemented"],["implemeting","implementing"],["implemetnation","implementation"],["implemets","implements"],["implemnt","implement"],["implemntation","implementation"],["implemntations","implementations"],["implemt","implement"],["implemtation","implementation"],["implemtations","implementations"],["implemted","implemented"],["implemtentation","implementation"],["implemtentations","implementations"],["implemting","implementing"],["implemts","implements"],["impleneted","implemented"],["implenment","implement"],["implenmentation","implementation"],["implent","implement"],["implentation","implementation"],["implentations","implementations"],["implented","implemented"],["implenting","implementing"],["implentors","implementers"],["implents","implements"],["implet","implement"],["impletation","implementation"],["impletations","implementations"],["impleted","implemented"],["impleter","implementer"],["impleting","implementing"],["impletment","implement"],["implets","implements"],["implicitely","implicitly"],["implicitley","implicitly"],["implict","implicit"],["implictly","implicitly"],["implimcit","implicit"],["implimcitly","implicitly"],["impliment","implement"],["implimentaion","implementation"],["implimentaions","implementations"],["implimentation","implementation"],["implimentation-spacific","implementation-specific"],["implimentations","implementations"],["implimented","implemented"],["implimenting","implementing"],["implimention","implementation"],["implimentions","implementations"],["implimentor","implementor"],["impliments","implements"],["implmenet","implement"],["implmenetaion","implementation"],["implmenetaions","implementations"],["implmenetation","implementation"],["implmenetations","implementations"],["implmenetd","implemented"],["implmeneted","implemented"],["implmeneter","implementer"],["implmeneting","implementing"],["implmenets","implements"],["implment","implement"],["implmentation","implementation"],["implmentations","implementations"],["implmented","implemented"],["implmenting","implementing"],["implments","implements"],["imploys","employs"],["imporing","importing"],["imporot","import"],["imporoted","imported"],["imporoting","importing"],["imporots","imports"],["imporove","improve"],["imporoved","improved"],["imporovement","improvement"],["imporovements","improvements"],["imporoves","improves"],["imporoving","improving"],["imporsts","imports"],["importamt","important"],["importat","important"],["importd","imported"],["importent","important"],["importnt","important"],["imporve","improve"],["imporved","improved"],["imporvement","improvement"],["imporvements","improvements"],["imporves","improves"],["imporving","improving"],["imporvment","improvement"],["imposible","impossible"],["impossiblble","impossible"],["impot","import"],["impove","improve"],["impoved","improved"],["impovement","improvement"],["impovements","improvements"],["impoves","improves"],["impoving","improving"],["impplement","implement"],["impplementating","implementing"],["impplementation","implementation"],["impplemented","implemented"],["impremented","implemented"],["impres","impress"],["impresive","impressive"],["impressario","impresario"],["imprioned","imprisoned"],["imprisonned","imprisoned"],["improbe","improve"],["improbement","improvement"],["improbements","improvements"],["improbes","improves"],["improbing","improving"],["improbment","improvement"],["improbments","improvements"],["improof","improve"],["improofement","improvement"],["improofing","improving"],["improofment","improvement"],["improofs","improves"],["improove","improve"],["improoved","improved"],["improovement","improvement"],["improovements","improvements"],["improoves","improves"],["improoving","improving"],["improovment","improvement"],["improovments","improvements"],["impropely","improperly"],["improssible","impossible"],["improt","import"],["improtance","importance"],["improtant","important"],["improtantly","importantly"],["improtation","importation"],["improtations","importations"],["improted","imported"],["improter","importer"],["improters","importers"],["improting","importing"],["improts","imports"],["improvemen","improvement"],["improvemenet","improvement"],["improvemenets","improvements"],["improvemens","improvements"],["improvision","improvisation"],["improvmenet","improvement"],["improvmenets","improvements"],["improvment","improvement"],["improvments","improvements"],["imput","input"],["imrovement","improvement"],["in-memeory","in-memory"],["inablility","inability"],["inacccessible","inaccessible"],["inaccesible","inaccessible"],["inaccessable","inaccessible"],["inaccuraccies","inaccuracies"],["inaccuraccy","inaccuracy"],["inacessible","inaccessible"],["inacurate","inaccurate"],["inacurracies","inaccuracies"],["inacurrate","inaccurate"],["inadiquate","inadequate"],["inadquate","inadequate"],["inadvertant","inadvertent"],["inadvertantly","inadvertently"],["inadvertedly","inadvertently"],["inagurated","inaugurated"],["inaguration","inauguration"],["inaktively","inactively"],["inalid","invalid"],["inappropiate","inappropriate"],["inappropreate","inappropriate"],["inapropriate","inappropriate"],["inapropriately","inappropriately"],["inate","innate"],["inaugures","inaugurates"],["inavlid","invalid"],["inbalance","imbalance"],["inbalanced","imbalanced"],["inbed","embed"],["inbedded","embedded"],["inbility","inability"],["incalid","invalid"],["incarcirated","incarcerated"],["incase","in case"],["incatation","incantation"],["incatations","incantations"],["incative","inactive"],["incement","increment"],["incemental","incremental"],["incementally","incrementally"],["incemented","incremented"],["incements","increments"],["incerase","increase"],["incerased","increased"],["incerasing","increasing"],["incidential","incidental"],["incidentially","incidentally"],["incidently","incidentally"],["inclding","including"],["incldue","include"],["incldued","included"],["incldues","includes"],["inclinaison","inclination"],["inclode","include"],["inclreased","increased"],["includ","include"],["includea","include"],["includee","include"],["includeing","including"],["includied","included"],["includig","including"],["includign","including"],["includng","including"],["inclue","include"],["inclued","included"],["inclues","includes"],["incluging","including"],["incluide","include"],["incluing","including"],["inclused","included"],["inclusing","including"],["inclusinve","inclusive"],["inclution","inclusion"],["inclutions","inclusions"],["incmrement","increment"],["incoherance","incoherence"],["incoherancy","incoherency"],["incoherant","incoherent"],["incoherantly","incoherently"],["incomapatibility","incompatibility"],["incomapatible","incompatible"],["incomaptibele","incompatible"],["incomaptibelities","incompatibilities"],["incomaptibelity","incompatibility"],["incomaptible","incompatible"],["incombatibilities","incompatibilities"],["incombatibility","incompatibility"],["incomfortable","uncomfortable"],["incomming","incoming"],["incommplete","incomplete"],["incompatabable","incompatible"],["incompatabiity","incompatibility"],["incompatabile","incompatible"],["incompatabilities","incompatibilities"],["incompatability","incompatibility"],["incompatabillity","incompatibility"],["incompatabilty","incompatibility"],["incompatabily","incompatibility"],["incompatable","incompatible"],["incompatablility","incompatibility"],["incompatablities","incompatibilities"],["incompatablitiy","incompatibility"],["incompatablity","incompatibility"],["incompatably","incompatibly"],["incompataibility","incompatibility"],["incompataible","incompatible"],["incompataility","incompatibility"],["incompatatbility","incompatibility"],["incompatatble","incompatible"],["incompatatible","incompatible"],["incompatbility","incompatibility"],["incompatble","incompatible"],["incompatiability","incompatibility"],["incompatiable","incompatible"],["incompatibile","incompatible"],["incompatibilies","incompatibilities"],["incompatiblities","incompatibilities"],["incompatiblity","incompatibility"],["incompetance","incompetence"],["incompetant","incompetent"],["incompete","incomplete"],["incomping","incoming"],["incompleate","incomplete"],["incompleete","incomplete"],["incompletd","incomplete"],["incomptable","incompatible"],["incomptetent","incompetent"],["incomptible","incompatible"],["inconcistencies","inconsistencies"],["inconcistency","inconsistency"],["inconcistent","inconsistent"],["inconditional","unconditional"],["inconditionally","unconditionally"],["inconfortable","uncomfortable"],["inconisistent","inconsistent"],["inconistencies","inconsistencies"],["inconlusive","inconclusive"],["inconsisent","inconsistent"],["inconsisently","inconsistently"],["inconsisntency","inconsistency"],["inconsistance","inconsistency"],["inconsistancies","inconsistencies"],["inconsistancy","inconsistency"],["inconsistant","inconsistent"],["inconsisten","inconsistent"],["inconsistend","inconsistent"],["inconsistendly","inconsistently"],["inconsistendt","inconsistent"],["inconsistendtly","inconsistently"],["inconsistenly","inconsistently"],["inconsistented","inconsistent"],["inconsitant","inconsistent"],["inconsitency","inconsistency"],["inconsitent","inconsistent"],["inconveniant","inconvenient"],["inconveniantly","inconveniently"],["inconvertable","inconvertible"],["inconvienience","inconvenience"],["inconvienient","inconvenient"],["inconvineance","inconvenience"],["inconvineances","inconveniences"],["inconvinence","inconvenience"],["inconvinences","inconveniences"],["inconviniance","inconvenience"],["inconviniances","inconveniences"],["inconvinience","inconvenience"],["inconviniences","inconveniences"],["inconviniency","inconvenience"],["inconviniencys","inconveniences"],["incooperates","incorporates"],["incoperate","incorporate"],["incoperated","incorporated"],["incoperates","incorporates"],["incoperating","incorporating"],["incoporate","incorporate"],["incoporated","incorporated"],["incoporates","incorporates"],["incoporating","incorporating"],["incoprorate","incorporate"],["incoprorated","incorporated"],["incoprorates","incorporates"],["incoprorating","incorporating"],["incorect","incorrect"],["incorectly","incorrectly"],["incoropate","incorporate"],["incoropates","incorporates"],["incoroporated","incorporated"],["incorparates","incorporates"],["incorperate","incorporate"],["incorperated","incorporated"],["incorperates","incorporates"],["incorperating","incorporating"],["incorperation","incorporation"],["incorportaed","incorporated"],["incorported","incorporated"],["incorprates","incorporates"],["incorreclty","incorrectly"],["incorrecly","incorrectly"],["incorrecty","incorrectly"],["incorreect","incorrect"],["incorreectly","incorrectly"],["incorrent","incorrect"],["incorret","incorrect"],["incorrrect","incorrect"],["incorrrectly","incorrectly"],["incorruptable","incorruptible"],["incosistencies","inconsistencies"],["incosistency","inconsistency"],["incosistent","inconsistent"],["incosistente","inconsistent"],["incramentally","incrementally"],["increadible","incredible"],["increading","increasing"],["increaing","increasing"],["increament","increment"],["increas","increase"],["incredable","incredible"],["incremantal","incremental"],["incremeantal","incremental"],["incremenet","increment"],["incremenetd","incremented"],["incremeneted","incremented"],["incrementaly","incrementally"],["incremet","increment"],["incremetal","incremental"],["incremeted","incremented"],["incremnet","increment"],["increse","increase"],["incresed","increased"],["increses","increases"],["incresing","increasing"],["incrfemental","incremental"],["incrmenet","increment"],["incrmenetd","incremented"],["incrmeneted","incremented"],["incrment","increment"],["incrmental","incremental"],["incrmentally","incrementally"],["incrmented","incremented"],["incrmenting","incrementing"],["incrments","increments"],["inctance","instance"],["inctroduce","introduce"],["inctroduced","introduced"],["incude","include"],["incuded","included"],["incudes","includes"],["incuding","including"],["inculde","include"],["inculded","included"],["inculdes","includes"],["inculding","including"],["incunabla","incunabula"],["incure","incur"],["incurruptable","incorruptible"],["incurruptible","incorruptible"],["incvalid","invalid"],["indcates","indicates"],["indciate","indicate"],["inddex","index"],["inddividual","individual"],["inddividually","individually"],["inddividuals","individuals"],["indecate","indicate"],["indeces","indices"],["indecies","indices"],["indefinate","indefinite"],["indefinately","indefinitely"],["indefineable","undefinable"],["indefinetly","indefinitely"],["indefinitiley","indefinitely"],["indefinitively","indefinitely"],["indefinitly","indefinitely"],["indefintly","indefinitely"],["indempotent","idempotent"],["indendation","indentation"],["indentaction","indentation"],["indentaion","indentation"],["indentended","indented"],["indentical","identical"],["indentically","identically"],["indentifer","identifier"],["indentification","identification"],["indentified","identified"],["indentifier","identifier"],["indentifies","identifies"],["indentifing","identifying"],["indentify","identify"],["indentifying","identifying"],["indentit","identity"],["indentity","identity"],["indentleveal","indentlevel"],["indenx","index"],["indepandance","independence"],["indepdence","independence"],["indepdencente","independence"],["indepdendance","independence"],["indepdendant","independent"],["indepdendantly","independently"],["indepdendence","independence"],["indepdendency","independency"],["indepdendent","independent"],["indepdendently","independently"],["indepdendet","independent"],["indepdendetly","independently"],["indepdenence","independence"],["indepdenent","independent"],["indepdenently","independently"],["indepdent","independent"],["indepdented","independent"],["indepdentedly","independently"],["indepdently","independently"],["indepedantly","independently"],["indepedence","independence"],["indepedent","independent"],["indepedently","independently"],["independ","independent"],["independance","independence"],["independant","independent"],["independantly","independently"],["independece","independence"],["independed","independent"],["independedly","independently"],["independend","independent"],["independendet","independent"],["independet","independent"],["independly","independently"],["independnent","independent"],["independnet","independent"],["independnt","independent"],["independntly","independently"],["independt","independent"],["independtly","independently"],["indepenedent","independent"],["indepenendence","independence"],["indepenent","independent"],["indepenently","independently"],["indepent","independent"],["indepentent","independent"],["indepently","independently"],["inderect","indirect"],["inderts","inserts"],["indes","index"],["indespensable","indispensable"],["indespensible","indispensable"],["indexig","indexing"],["indiactor","indicator"],["indiate","indicate"],["indiated","indicated"],["indiates","indicates"],["indiating","indicating"],["indicaite","indicate"],["indicat","indicate"],["indicees","indices"],["indiciate","indicate"],["indiciated","indicated"],["indiciates","indicates"],["indiciating","indicating"],["indicies","indices"],["indicte","indicate"],["indictement","indictment"],["indictes","indicates"],["indictor","indicator"],["indigineous","indigenous"],["indipendence","independence"],["indipendent","independent"],["indipendently","independently"],["indiquate","indicate"],["indiquates","indicates"],["indirecty","indirectly"],["indispensible","indispensable"],["indisputible","indisputable"],["indisputibly","indisputably"],["indistiguishable","indistinguishable"],["indivdual","individual"],["indivdually","individually"],["indivdualy","individually"],["individal","individual"],["individally","individually"],["individals","individuals"],["individaul","individual"],["individaully","individually"],["individauls","individuals"],["individauly","individually"],["individial","individual"],["individualy","individually"],["individuel","individual"],["individuelly","individually"],["individuely","individually"],["indivisual","individual"],["indivisuality","individuality"],["indivisually","individually"],["indivisuals","individuals"],["indiviual","individual"],["indiviually","individually"],["indiviuals","individuals"],["indivual","individual"],["indivudual","individual"],["indivudually","individually"],["indizies","indices"],["indpendent","independent"],["indpendently","independently"],["indrect","indirect"],["indulgue","indulge"],["indure","endure"],["indutrial","industrial"],["indvidual","individual"],["indviduals","individuals"],["indxes","indexes"],["inearisation","linearisation"],["ineffciency","inefficiency"],["ineffcient","inefficient"],["ineffciently","inefficiently"],["inefficency","inefficiency"],["inefficent","inefficient"],["inefficently","inefficiently"],["inefficenty","inefficiently"],["inefficienty","inefficiently"],["ineffiecent","inefficient"],["ineffient","inefficient"],["ineffiently","inefficiently"],["ineficient","inefficient"],["inegrate","integrate"],["inegrated","integrated"],["ineqality","inequality"],["inequalitiy","inequality"],["inerface","interface"],["inerit","inherit"],["ineritance","inheritance"],["inerited","inherited"],["ineriting","inheriting"],["ineritor","inheritor"],["ineritors","inheritors"],["inerits","inherits"],["inernal","internal"],["inerrupt","interrupt"],["inershia","inertia"],["inershial","inertial"],["inersia","inertia"],["inersial","inertial"],["inertion","insertion"],["ines","lines"],["inestart","linestart"],["inetrrupts","interrupts"],["inevatible","inevitable"],["inevitible","inevitable"],["inevititably","inevitably"],["inexistant","inexistent"],["inexperiance","inexperience"],["inexperianced","inexperienced"],["inexpierence","inexperience"],["inexpierenced","inexperienced"],["inexpirience","inexperience"],["inexpirienced","inexperienced"],["infact","in fact"],["infalability","infallibility"],["infallable","infallible"],["infalte","inflate"],["infalted","inflated"],["infaltes","inflates"],["infalting","inflating"],["infectuous","infectious"],["infered","inferred"],["inferface","interface"],["infering","inferring"],["inferrable","inferable"],["inferrence","inference"],["infex","index"],["infilitrate","infiltrate"],["infilitrated","infiltrated"],["infilitration","infiltration"],["infinate","infinite"],["infinately","infinitely"],["infininte","infinite"],["infinit","infinite"],["infinitie","infinity"],["infinitly","infinitely"],["infinte","infinite"],["infintesimal","infinitesimal"],["infinty","infinity"],["infite","infinite"],["inflamation","inflammation"],["inflatoin","inflation"],["inflexable","inflexible"],["inflight","in-flight"],["influece","influence"],["influeced","influenced"],["influeces","influences"],["influecing","influencing"],["influencial","influential"],["influencin","influencing"],["influented","influenced"],["infoemation","information"],["infomation","information"],["infomational","informational"],["infomed","informed"],["infomer","informer"],["infomration","information"],["infoms","informs"],["infor","info"],["inforamtion","information"],["inforation","information"],["inforational","informational"],["inforce","enforce"],["inforced","enforced"],["informacion","information"],["informaion","information"],["informaiton","information"],["informatation","information"],["informatations","information"],["informatikon","information"],["informatins","information"],["informatio","information"],["informatiom","information"],["informations","information"],["informatoin","information"],["informatoins","information"],["informaton","information"],["informfation","information"],["informtion","information"],["inforrmation","information"],["infrantryman","infantryman"],["infrasctructure","infrastructure"],["infrastrcuture","infrastructure"],["infrastruture","infrastructure"],["infrastucture","infrastructure"],["infrastuctures","infrastructures"],["infreqency","infrequency"],["infreqentcy","infrequency"],["infreqeuncy","infrequency"],["infreqeuntcy","infrequency"],["infrequancies","infrequencies"],["infrequancy","infrequency"],["infrequantcies","infrequencies"],["infrequantcy","infrequency"],["infrequentcies","infrequencies"],["infrigement","infringement"],["infromation","information"],["infromatoin","information"],["infrormation","information"],["infrustructure","infrastructure"],["ingegral","integral"],["ingenius","ingenious"],["ingnore","ignore"],["ingnored","ignored"],["ingnores","ignores"],["ingnoring","ignoring"],["ingore","ignore"],["ingored","ignored"],["ingores","ignores"],["ingoring","ignoring"],["ingration","integration"],["ingreediants","ingredients"],["inh","in"],["inhabitans","inhabitants"],["inherantly","inherently"],["inheratance","inheritance"],["inheret","inherit"],["inherets","inherits"],["inheritablility","inheritability"],["inheritence","inheritance"],["inherith","inherit"],["inherithed","inherited"],["inherithing","inheriting"],["inheriths","inherits"],["inheritted","inherited"],["inherrit","inherit"],["inherritance","inheritance"],["inherrited","inherited"],["inherriting","inheriting"],["inherrits","inherits"],["inhert","inherit"],["inhertance","inheritance"],["inhertances","inheritances"],["inherted","inherited"],["inhertiance","inheritance"],["inherting","inheriting"],["inherts","inherits"],["inhomogenous","inhomogeneous"],["inialized","initialized"],["iniate","initiate"],["inidicate","indicate"],["inidicated","indicated"],["inidicates","indicates"],["inidicating","indicating"],["inidication","indication"],["inidications","indications"],["inidividual","individual"],["inidvidual","individual"],["inifinite","infinite"],["inifinity","infinity"],["inifinte","infinite"],["inifite","infinite"],["iniitial","initial"],["iniitialization","initialization"],["iniitializations","initializations"],["iniitialize","initialize"],["iniitialized","initialized"],["iniitializes","initializes"],["iniitializing","initializing"],["inintialisation","initialisation"],["inintialization","initialization"],["inisialise","initialise"],["inisialised","initialised"],["inisialises","initialises"],["iniside","inside"],["inisides","insides"],["initail","initial"],["initailisation","initialisation"],["initailise","initialise"],["initailised","initialised"],["initailiser","initialiser"],["initailisers","initialisers"],["initailises","initialises"],["initailising","initialising"],["initailization","initialization"],["initailize","initialize"],["initailized","initialized"],["initailizer","initializer"],["initailizers","initializers"],["initailizes","initializes"],["initailizing","initializing"],["initailly","initially"],["initails","initials"],["initailsation","initialisation"],["initailse","initialise"],["initailsed","initialised"],["initailsiation","initialisation"],["initaily","initially"],["initailzation","initialization"],["initailze","initialize"],["initailzed","initialized"],["initailziation","initialization"],["inital","initial"],["initalialisation","initialisation"],["initalialization","initialization"],["initalisation","initialisation"],["initalise","initialise"],["initalised","initialised"],["initaliser","initialiser"],["initalises","initialises"],["initalising","initialising"],["initalization","initialization"],["initalize","initialize"],["initalized","initialized"],["initalizer","initializer"],["initalizes","initializes"],["initalizing","initializing"],["initally","initially"],["initals","initials"],["initiailize","initialize"],["initiailized","initialized"],["initiailizes","initializes"],["initiailizing","initializing"],["initiaitive","initiative"],["initiaitives","initiatives"],["initialialise","initialise"],["initialialize","initialize"],["initialiasation","initialisation"],["initialiase","initialise"],["initialiased","initialised"],["initialiation","initialization"],["initialiazation","initialization"],["initialiaze","initialize"],["initialiazed","initialized"],["initialied","initialized"],["initialilsing","initialising"],["initialilzing","initializing"],["initialisaing","initialising"],["initialisaiton","initialisation"],["initialisated","initialised"],["initialisatin","initialisation"],["initialisationg","initialisation"],["initialisaton","initialisation"],["initialisatons","initialisations"],["initialiseing","initialising"],["initialisiation","initialisation"],["initialisong","initialising"],["initialiting","initializing"],["initialitse","initialise"],["initialitsing","initialising"],["initialitze","initialize"],["initialitzing","initializing"],["initializa","initialize"],["initializad","initialized"],["initializaed","initialized"],["initializaing","initializing"],["initializaiton","initialization"],["initializate","initialize"],["initializated","initialized"],["initializates","initializes"],["initializatin","initialization"],["initializating","initializing"],["initializationg","initialization"],["initializaton","initialization"],["initializatons","initializations"],["initializedd","initialized"],["initializeing","initializing"],["initializiation","initialization"],["initializong","initializing"],["initialsation","initialisation"],["initialse","initialise"],["initialsed","initialised"],["initialses","initialises"],["initialsing","initialising"],["initialy","initially"],["initialyl","initially"],["initialyse","initialise"],["initialysed","initialised"],["initialyses","initialises"],["initialysing","initialising"],["initialyze","initialize"],["initialyzed","initialized"],["initialyzes","initializes"],["initialyzing","initializing"],["initialzation","initialization"],["initialze","initialize"],["initialzed","initialized"],["initialzes","initializes"],["initialzing","initializing"],["initiatiate","initiate"],["initiatiated","initiated"],["initiatiater","initiator"],["initiatiating","initiating"],["initiatiator","initiator"],["initiatiats","initiates"],["initiatie","initiate"],["initiatied","initiated"],["initiaties","initiates"],["initiialise","initialise"],["initiialize","initialize"],["initilialised","initialised"],["initilialization","initialization"],["initilializations","initializations"],["initilialize","initialize"],["initilialized","initialized"],["initilializes","initializes"],["initilializing","initializing"],["initiliase","initialise"],["initiliased","initialised"],["initiliases","initialises"],["initiliasing","initialising"],["initiliaze","initialize"],["initiliazed","initialized"],["initiliazes","initializes"],["initiliazing","initializing"],["initilisation","initialisation"],["initilisations","initialisations"],["initilise","initialise"],["initilised","initialised"],["initilises","initialises"],["initilising","initialising"],["initilization","initialization"],["initilizations","initializations"],["initilize","initialize"],["initilized","initialized"],["initilizes","initializes"],["initilizing","initializing"],["inititalisation","initialisation"],["inititalisations","initialisations"],["inititalise","initialise"],["inititalised","initialised"],["inititaliser","initialiser"],["inititalising","initialising"],["inititalization","initialization"],["inititalizations","initializations"],["inititalize","initialize"],["inititate","initiate"],["inititator","initiator"],["inititialization","initialization"],["inititializations","initializations"],["initliasation","initialisation"],["initliase","initialise"],["initliased","initialised"],["initliaser","initialiser"],["initliazation","initialization"],["initliaze","initialize"],["initliazed","initialized"],["initliazer","initializer"],["inituialisation","initialisation"],["inituialization","initialization"],["inivisible","invisible"],["inizialize","initialize"],["inizialized","initialized"],["inizializes","initializes"],["inlalid","invalid"],["inlclude","include"],["inlcluded","included"],["inlcludes","includes"],["inlcluding","including"],["inlcludion","inclusion"],["inlclusive","inclusive"],["inlcude","include"],["inlcuded","included"],["inlcudes","includes"],["inlcuding","including"],["inlcusion","inclusion"],["inlcusive","inclusive"],["inlin","inline"],["inlude","include"],["inluded","included"],["inludes","includes"],["inluding","including"],["inludung","including"],["inluence","influence"],["inlusive","inclusive"],["inmediate","immediate"],["inmediatelly","immediately"],["inmediately","immediately"],["inmediatily","immediately"],["inmediatly","immediately"],["inmense","immense"],["inmigrant","immigrant"],["inmigrants","immigrants"],["inmmediately","immediately"],["inmplementation","implementation"],["innactive","inactive"],["innacurate","inaccurate"],["innacurately","inaccurately"],["innappropriate","inappropriate"],["innecesarily","unnecessarily"],["innecesary","unnecessary"],["innecessarily","unnecessarily"],["innecessary","unnecessary"],["inneffectual","ineffectual"],["innocous","innocuous"],["innoculate","inoculate"],["innoculated","inoculated"],["innosense","innocence"],["inocence","innocence"],["inofficial","unofficial"],["inofrmation","information"],["inoperant","inoperative"],["inoquous","innocuous"],["inot","into"],["inouts","inputs"],["inpact","impact"],["inpacted","impacted"],["inpacting","impacting"],["inpacts","impacts"],["inpeach","impeach"],["inpecting","inspecting"],["inpection","inspection"],["inpections","inspections"],["inpending","impending"],["inpenetrable","impenetrable"],["inplementation","implementation"],["inplementations","implementations"],["inplemented","implemented"],["inplicit","implicit"],["inplicitly","implicitly"],["inpolite","impolite"],["inport","import"],["inportant","important"],["inposible","impossible"],["inpossible","impossible"],["inpout","input"],["inpouts","inputs"],["inpractical","impractical"],["inpracticality","impracticality"],["inpractically","impractically"],["inprisonment","imprisonment"],["inproove","improve"],["inprooved","improved"],["inprooves","improves"],["inprooving","improving"],["inproovment","improvement"],["inproovments","improvements"],["inproper","improper"],["inproperly","improperly"],["inproving","improving"],["inpsection","inspection"],["inpterpreter","interpreter"],["inpu","input"],["inputed","inputted"],["inputsream","inputstream"],["inpuut","input"],["inrement","increment"],["inrements","increments"],["inreractive","interactive"],["inrerface","interface"],["inresponsive","unresponsive"],["inro","into"],["ins't","isn't"],["insallation","installation"],["insalled","installed"],["inscpeting","inspecting"],["insctuction","instruction"],["insctuctional","instructional"],["insctuctions","instructions"],["insde","inside"],["insead","instead"],["insectiverous","insectivorous"],["insensative","insensitive"],["insensetive","insensitive"],["insensistive","insensitive"],["insensistively","insensitively"],["insensitiv","insensitive"],["insensitivy","insensitivity"],["insensitve","insensitive"],["insenstive","insensitive"],["insenstively","insensitively"],["insentives","incentives"],["insentivite","insensitive"],["insepect","inspect"],["insepected","inspected"],["insepection","inspection"],["insepects","inspects"],["insependent","independent"],["inseperable","inseparable"],["insepsion","inception"],["inser","insert"],["insering","inserting"],["insersect","intersect"],["insersected","intersected"],["insersecting","intersecting"],["insersects","intersects"],["inserst","insert"],["insersted","inserted"],["inserster","inserter"],["insersting","inserting"],["inserstor","inserter"],["insersts","inserts"],["insertin","inserting"],["insertino","inserting"],["insesitive","insensitive"],["insesitively","insensitively"],["insesitiveness","insensitiveness"],["insesitivity","insensitivity"],["insetad","instead"],["insetead","instead"],["inseted","inserted"],["insid","inside"],["insidde","inside"],["insiddes","insides"],["insided","inside"],["insignificat","insignificant"],["insignificatly","insignificantly"],["insigt","insight"],["insigth","insight"],["insigths","insights"],["insigts","insights"],["insistance","insistence"],["insititute","institute"],["insitution","institution"],["insitutions","institutions"],["insonsistency","inconsistency"],["instaance","instance"],["instabce","instance"],["instace","instance"],["instaces","instances"],["instaciate","instantiate"],["instad","instead"],["instade","instead"],["instaead","instead"],["instaed","instead"],["instal","install"],["instalation","installation"],["instalations","installations"],["instaled","installed"],["instaler","installer"],["instaling","installing"],["installaion","installation"],["installaiton","installation"],["installaitons","installations"],["installataion","installation"],["installataions","installations"],["installatation","installation"],["installationa","installation"],["installes","installs"],["installtion","installation"],["instals","installs"],["instancd","instance"],["instanciate","instantiate"],["instanciated","instantiated"],["instanciates","instantiates"],["instanciating","instantiating"],["instanciation","instantiation"],["instanciations","instantiations"],["instane","instance"],["instanes","instances"],["instanseation","instantiation"],["instansiate","instantiate"],["instansiated","instantiated"],["instansiates","instantiates"],["instansiation","instantiation"],["instantate","instantiate"],["instantating","instantiating"],["instantation","instantiation"],["instantations","instantiations"],["instantiaties","instantiates"],["instanze","instance"],["instatance","instance"],["instatiate","instantiate"],["instatiation","instantiation"],["instatiations","instantiations"],["insteance","instance"],["insted","instead"],["insteead","instead"],["inster","insert"],["insterad","instead"],["insterrupts","interrupts"],["instersction","intersection"],["instersctions","intersections"],["instersectioned","intersection"],["instert","insert"],["insterted","inserted"],["instertion","insertion"],["institue","institute"],["instlal","install"],["instlalation","installation"],["instlalations","installations"],["instlaled","installed"],["instlaler","installer"],["instlaling","installing"],["instlals","installs"],["instller","installer"],["instnace","instance"],["instnaces","instances"],["instnance","instance"],["instnances","instances"],["instnat","instant"],["instnatiated","instantiated"],["instnatiation","instantiation"],["instnatiations","instantiations"],["instnce","instance"],["instnces","instances"],["instnsiated","instantiated"],["instnsiation","instantiation"],["instnsiations","instantiations"],["instnt","instant"],["instntly","instantly"],["instrace","instance"],["instralled","installed"],["instrction","instruction"],["instrctional","instructional"],["instrctions","instructions"],["instrcut","instruct"],["instrcutino","instruction"],["instrcutinoal","instructional"],["instrcutinos","instructions"],["instrcution","instruction"],["instrcutional","instructional"],["instrcutions","instructions"],["instrcuts","instructs"],["instread","instead"],["instrinsic","intrinsic"],["instruccion","instruction"],["instruccional","instructional"],["instruccions","instructions"],["instrucion","instruction"],["instrucional","instructional"],["instrucions","instructions"],["instruciton","instruction"],["instrucitonal","instructional"],["instrucitons","instructions"],["instrumenet","instrument"],["instrumenetation","instrumentation"],["instrumenetd","instrumented"],["instrumeneted","instrumented"],["instrumentaion","instrumentation"],["instrumnet","instrument"],["instrumnets","instruments"],["instsall","install"],["instsallation","installation"],["instsallations","installations"],["instsalled","installed"],["instsalls","installs"],["instuction","instruction"],["instuctional","instructional"],["instuctions","instructions"],["instuments","instruments"],["insturment","instrument"],["insturments","instruments"],["instutionalized","institutionalized"],["instutions","intuitions"],["insuffciency","insufficiency"],["insuffcient","insufficient"],["insuffciently","insufficiently"],["insufficency","insufficiency"],["insufficent","insufficient"],["insufficently","insufficiently"],["insuffiency","insufficiency"],["insuffient","insufficient"],["insuffiently","insufficiently"],["insurasnce","insurance"],["insurence","insurance"],["intaces","instance"],["intack","intact"],["intall","install"],["intallation","installation"],["intallationpath","installationpath"],["intallations","installations"],["intalled","installed"],["intalleing","installing"],["intaller","installer"],["intalles","installs"],["intalling","installing"],["intalls","installs"],["intances","instances"],["intantiate","instantiate"],["intantiating","instantiating"],["inteaction","interaction"],["intead","instead"],["inteded","intended"],["intedned","intended"],["inteface","interface"],["intefere","interfere"],["intefered","interfered"],["inteference","interference"],["integarte","integrate"],["integarted","integrated"],["integartes","integrates"],["integated","integrated"],["integates","integrates"],["integating","integrating"],["integation","integration"],["integations","integrations"],["integeral","integral"],["integere","integer"],["integreated","integrated"],["integrety","integrity"],["integrey","integrity"],["intelectual","intellectual"],["intelegence","intelligence"],["intelegent","intelligent"],["intelegently","intelligently"],["inteligability","intelligibility"],["inteligable","intelligible"],["inteligance","intelligence"],["inteligantly","intelligently"],["inteligence","intelligence"],["inteligent","intelligent"],["intelisense","intellisense"],["intelligable","intelligible"],["intemediary","intermediary"],["intenal","internal"],["intenational","international"],["intendet","intended"],["inteneded","intended"],["intenisty","intensity"],["intension","intention"],["intensional","intentional"],["intensionally","intentionally"],["intensionaly","intentionally"],["intentation","indentation"],["intentended","intended"],["intentially","intentionally"],["intentialy","intentionally"],["intentionaly","intentionally"],["intentionly","intentionally"],["intepolate","interpolate"],["intepolated","interpolated"],["intepolates","interpolates"],["intepret","interpret"],["intepretable","interpretable"],["intepretation","interpretation"],["intepretations","interpretations"],["intepretator","interpreter"],["intepretators","interpreters"],["intepreted","interpreted"],["intepreter","interpreter"],["intepreter-based","interpreter-based"],["intepreters","interpreters"],["intepretes","interprets"],["intepreting","interpreting"],["intepretor","interpreter"],["intepretors","interpreters"],["inteprets","interprets"],["inter-operability","interoperability"],["interace","interface"],["interaces","interfaces"],["interacive","interactive"],["interacively","interactively"],["interacsion","interaction"],["interacsions","interactions"],["interactionn","interaction"],["interactionns","interactions"],["interactiv","interactive"],["interactivly","interactively"],["interactuable","interactive"],["interafce","interface"],["interakt","interact"],["interaktion","interaction"],["interaktions","interactions"],["interaktive","interactively"],["interaktively","interactively"],["interaktivly","interactively"],["interaly","internally"],["interanl","internal"],["interanlly","internally"],["interate","iterate"],["interational","international"],["interative","interactive"],["interatively","interactively"],["interator","iterator"],["interators","iterators"],["interaxction","interaction"],["interaxctions","interactions"],["interaxtion","interaction"],["interaxtions","interactions"],["intercahnge","interchange"],["intercahnged","interchanged"],["intercation","interaction"],["interchage","interchange"],["interchangable","interchangeable"],["interchangably","interchangeably"],["interchangeble","interchangeable"],["intercollegate","intercollegiate"],["intercontinential","intercontinental"],["intercontinetal","intercontinental"],["interdependant","interdependent"],["interecptor","interceptor"],["intereested","interested"],["intereference","interference"],["intereferences","interferences"],["interelated","interrelated"],["interelaved","interleaved"],["interepolate","interpolate"],["interepolated","interpolated"],["interepolates","interpolates"],["interepolating","interpolating"],["interepolation","interpolation"],["interepret","interpret"],["interepretation","interpretation"],["interepretations","interpretations"],["interepreted","interpreted"],["interepreting","interpreting"],["intereprets","interprets"],["interept","intercept"],["interesct","intersect"],["interescted","intersected"],["interescting","intersecting"],["interesction","intersection"],["interesctions","intersections"],["interescts","intersects"],["interesect","intersect"],["interesected","intersected"],["interesecting","intersecting"],["interesection","intersection"],["interesections","intersections"],["interesects","intersects"],["intereset","interest"],["intereseted","interested"],["intereseting","interesting"],["interesing","interesting"],["interespersed","interspersed"],["interesseted","interested"],["interesst","interest"],["interessted","interested"],["interessting","interesting"],["intereview","interview"],["interfal","interval"],["interfals","intervals"],["interfave","interface"],["interfaves","interfaces"],["interfcae","interface"],["interfcaes","interfaces"],["interfear","interfere"],["interfearence","interference"],["interfearnce","interference"],["interfer","interfere"],["interferance","interference"],["interferd","interfered"],["interfereing","interfering"],["interfernce","interference"],["interferred","interfered"],["interferring","interfering"],["interfers","interferes"],["intergated","integrated"],["interger's","integer's"],["interger","integer"],["intergerated","integrated"],["intergers","integers"],["intergrate","integrate"],["intergrated","integrated"],["intergrates","integrates"],["intergrating","integrating"],["intergration","integration"],["intergrations","integrations"],["interit","inherit"],["interitance","inheritance"],["interited","inherited"],["interiting","inheriting"],["interits","inherits"],["interliveing","interleaving"],["interlly","internally"],["intermediat","intermediate"],["intermeidate","intermediate"],["intermidiate","intermediate"],["intermitent","intermittent"],["intermittant","intermittent"],["intermperance","intemperance"],["internaly","internally"],["internatinal","international"],["internatioanl","international"],["internation","international"],["internel","internal"],["internels","internals"],["internface","interface"],["interogators","interrogators"],["interopeable","interoperable"],["interoprability","interoperability"],["interperated","interpreted"],["interpert","interpret"],["interpertation","interpretation"],["interpertations","interpretations"],["interperted","interpreted"],["interperter","interpreter"],["interperters","interpreters"],["interperting","interpreting"],["interpertive","interpretive"],["interperts","interprets"],["interpet","interpret"],["interpetation","interpretation"],["interpeted","interpreted"],["interpeter","interpreter"],["interpeters","interpreters"],["interpeting","interpreting"],["interpets","interprets"],["interploate","interpolate"],["interploated","interpolated"],["interploates","interpolates"],["interploatin","interpolating"],["interploation","interpolation"],["interpolaed","interpolated"],["interpolaion","interpolation"],["interpolaiton","interpolation"],["interpolar","interpolator"],["interpolayed","interpolated"],["interporation","interpolation"],["interporations","interpolations"],["interprate","interpret"],["interprated","interpreted"],["interpreation","interpretation"],["interprerter","interpreter"],["interpretated","interpreted"],["interprete","interpret"],["interpretes","interprets"],["interpretet","interpreted"],["interpretion","interpretation"],["interpretions","interpretations"],["interpretor","interpreter"],["interprett","interpret"],["interpretted","interpreted"],["interpretter","interpreter"],["interpretting","interpreting"],["interract","interact"],["interracting","interacting"],["interractive","interactive"],["interracts","interacts"],["interrest","interest"],["interrested","interested"],["interresting","interesting"],["interrface","interface"],["interrim","interim"],["interript","interrupt"],["interrput","interrupt"],["interrputed","interrupted"],["interrrupt","interrupt"],["interrrupted","interrupted"],["interrrupting","interrupting"],["interrrupts","interrupts"],["interrtups","interrupts"],["interrugum","interregnum"],["interrum","interim"],["interrup","interrupt"],["interruped","interrupted"],["interruping","interrupting"],["interrups","interrupts"],["interruptable","interruptible"],["interruptors","interrupters"],["interruptted","interrupted"],["interrut","interrupt"],["interrutps","interrupts"],["interscetion","intersection"],["intersecct","intersect"],["interseccted","intersected"],["interseccting","intersecting"],["intersecction","intersection"],["interseccts","intersects"],["intersecrion","intersection"],["intersecton","intersection"],["intersectons","intersections"],["intersparsed","interspersed"],["interst","interest"],["intersted","interested"],["intersting","interesting"],["intersts","interests"],["intertaining","entertaining"],["intertia","inertia"],["intertial","inertial"],["interupt","interrupt"],["interupted","interrupted"],["interupting","interrupting"],["interupts","interrupts"],["interuupt","interrupt"],["intervall","interval"],["intervalls","intervals"],["interveening","intervening"],["intervines","intervenes"],["intesity","intensity"],["inteval","interval"],["intevals","intervals"],["intevene","intervene"],["intger","integer"],["intgers","integers"],["intgral","integral"],["inthe","in the"],["intiailise","initialise"],["intiailised","initialised"],["intiailiseing","initialising"],["intiailiser","initialiser"],["intiailises","initialises"],["intiailising","initialising"],["intiailize","initialize"],["intiailized","initialized"],["intiailizeing","initializing"],["intiailizer","initializer"],["intiailizes","initializes"],["intiailizing","initializing"],["intial","initial"],["intiale","initial"],["intialisation","initialisation"],["intialise","initialise"],["intialised","initialised"],["intialiser","initialiser"],["intialisers","initialisers"],["intialises","initialises"],["intialising","initialising"],["intialistion","initialisation"],["intializating","initializing"],["intialization","initialization"],["intializaze","initialize"],["intialize","initialize"],["intialized","initialized"],["intializer","initializer"],["intializers","initializers"],["intializes","initializes"],["intializing","initializing"],["intializtion","initialization"],["intialled","initialled"],["intiallisation","initialisation"],["intiallisations","initialisations"],["intiallised","initialised"],["intiallization","initialization"],["intiallizations","initializations"],["intiallized","initialized"],["intiallly","initially"],["intially","initially"],["intials","initials"],["intialse","initialise"],["intialsed","initialised"],["intialsing","initialising"],["intialte","initialise"],["intialy","initially"],["intialze","initialize"],["intialzed","initialized"],["intialzing","initializing"],["inticement","enticement"],["intiger","integer"],["intiial","initial"],["intiialise","initialise"],["intiialize","initialize"],["intilising","initialising"],["intilizing","initializing"],["intimite","intimate"],["intinite","infinite"],["intitial","initial"],["intitialization","initialization"],["intitialize","initialize"],["intitialized","initialized"],["intitials","initials"],["intity","entity"],["intot","into"],["intoto","into"],["intpreter","interpreter"],["intput","input"],["intputs","inputs"],["intraversion","introversion"],["intravert","introvert"],["intraverts","introverts"],["intrduced","introduced"],["intreeg","intrigue"],["intreeged","intrigued"],["intreeging","intriguing"],["intreegued","intrigued"],["intreeguing","intriguing"],["intreface","interface"],["intregral","integral"],["intrerrupt","interrupt"],["intresst","interest"],["intressted","interested"],["intressting","interesting"],["intrested","interested"],["intresting","interesting"],["intriduce","introduce"],["intriduced","introduced"],["intriduction","introduction"],["intrisinc","intrinsic"],["intrisincs","intrinsics"],["introducted","introduced"],["introductionary","introductory"],["introdued","introduced"],["introduse","introduce"],["introdused","introduced"],["introduses","introduces"],["introdusing","introducing"],["introsepectable","introspectable"],["introsepection","introspection"],["intrrupt","interrupt"],["intrrupted","interrupted"],["intrrupting","interrupting"],["intrrupts","interrupts"],["intruction","instruction"],["intructional","instructional"],["intructions","instructions"],["intruduced","introduced"],["intruducing","introducing"],["intrument","instrument"],["intrumental","instrumental"],["intrumented","instrumented"],["intrumenting","instrumenting"],["intruments","instruments"],["intrusted","entrusted"],["intstead","instead"],["intstructed","instructed"],["intstructer","instructor"],["intstructing","instructing"],["intstruction","instruction"],["intstructional","instructional"],["intstructions","instructions"],["intstructor","instructor"],["intstructs","instructs"],["intterrupt","interrupt"],["intterupt","interrupt"],["intterupted","interrupted"],["intterupting","interrupting"],["intterupts","interrupts"],["intuative","intuitive"],["inturpratasion","interpretation"],["inturpratation","interpretation"],["inturprett","interpret"],["intutive","intuitive"],["intutively","intuitively"],["inudstry","industry"],["inut","input"],["invaid","invalid"],["invaild","invalid"],["invaildate","invalidate"],["invailid","invalid"],["invalaid","invalid"],["invald","invalid"],["invaldates","invalidates"],["invalde","invalid"],["invalidatiopn","invalidation"],["invalide","invalid"],["invalidiate","invalidate"],["invalidte","invalidate"],["invalidted","invalidated"],["invalidtes","invalidates"],["invalidting","invalidating"],["invalidtion","invalidation"],["invalied","invalid"],["invalud","invalid"],["invarient","invariant"],["invarients","invariants"],["invarinat","invariant"],["invarinats","invariants"],["inventer","inventor"],["inverded","inverted"],["inverion","inversion"],["inverions","inversions"],["invertedd","inverted"],["invertibrates","invertebrates"],["invertion","inversion"],["invertions","inversions"],["inverval","interval"],["inveryed","inverted"],["invesitgated","investigated"],["invesitgating","investigating"],["invesitgation","investigation"],["invesitgations","investigations"],["investingate","investigate"],["inveting","inverting"],["invetory","inventory"],["inviation","invitation"],["invididual","individual"],["invidivual","individual"],["invidual","individual"],["invidually","individually"],["invisble","invisible"],["invisblity","invisibility"],["invisiable","invisible"],["invisibile","invisible"],["invisivble","invisible"],["invlaid","invalid"],["invlid","invalid"],["invlisible","invisible"],["invlove","involve"],["invloved","involved"],["invloves","involves"],["invocaition","invocation"],["invokable","invocable"],["invokation","invocation"],["invokations","invocations"],["invokve","invoke"],["invokved","invoked"],["invokves","invokes"],["invokving","invoking"],["involvment","involvement"],["invovle","involve"],["invovled","involved"],["invovles","involves"],["invovling","involving"],["ioclt","ioctl"],["iomaped","iomapped"],["ionde","inode"],["iplementation","implementation"],["ipmrovement","improvement"],["ipmrovements","improvements"],["iput","input"],["ireelevant","irrelevant"],["irelevent","irrelevant"],["iresistable","irresistible"],["iresistably","irresistibly"],["iresistible","irresistible"],["iresistibly","irresistibly"],["iritable","irritable"],["iritate","irritate"],["iritated","irritated"],["iritating","irritating"],["ironicly","ironically"],["irradate","irradiate"],["irradated","irradiated"],["irradates","irradiates"],["irradating","irradiating"],["irradation","irradiation"],["irraditate","irradiate"],["irraditated","irradiated"],["irraditates","irradiates"],["irraditating","irradiating"],["irregularties","irregularities"],["irregulier","irregular"],["irregulierties","irregularities"],["irrelavent","irrelevant"],["irrelevent","irrelevant"],["irrelvant","irrelevant"],["irreplacable","irreplaceable"],["irreplacalbe","irreplaceable"],["irreproducable","irreproducible"],["irresepective","irrespective"],["irresistable","irresistible"],["irresistably","irresistibly"],["irreversable","irreversible"],["is'nt","isn't"],["isalha","isalpha"],["isconnection","isconnected"],["iscrated","iscreated"],["iself","itself"],["iselfe","itself"],["iserting","inserting"],["isimilar","similar"],["isloation","isolation"],["ismas","isthmus"],["isn;t","isn't"],["isnpiron","inspiron"],["isnt'","isn't"],["isnt","isn't"],["isnt;","isn't"],["isntalation","installation"],["isntalations","installations"],["isntallation","installation"],["isntallations","installations"],["isntance","instance"],["isntances","instances"],["isotrophically","isotropically"],["ispatches","dispatches"],["isplay","display"],["Israelies","Israelis"],["isse","issue"],["isses","issues"],["isssue","issue"],["isssued","issued"],["isssues","issues"],["issueing","issuing"],["istalling","installing"],["istance","instance"],["istead","instead"],["istened","listened"],["istener","listener"],["isteners","listeners"],["istening","listening"],["isue","issue"],["iteartor","iterator"],["iteator","iterator"],["iteger","integer"],["itegral","integral"],["itegrals","integrals"],["iten","item"],["itens","items"],["itention","intention"],["itentional","intentional"],["itentionally","intentionally"],["itentionaly","intentionally"],["iteraion","iteration"],["iteraions","iterations"],["iteratable","iterable"],["iterater","iterator"],["iteraterate","iterate"],["iteratered","iterated"],["iteratior","iterator"],["iteratiors","iterators"],["iteratons","iterations"],["itereating","iterating"],["iterface","interface"],["iterfaces","interfaces"],["iternations","iterations"],["iterpreter","interpreter"],["iterration","iteration"],["iterrations","iterations"],["iterrupt","interrupt"],["iterstion","iteration"],["iterstions","iterations"],["itertation","iteration"],["iteself","itself"],["itesm","items"],["itheir","their"],["itheirs","theirs"],["itialise","initialise"],["itialised","initialised"],["itialises","initialises"],["itialising","initialising"],["itialize","initialize"],["itialized","initialized"],["itializes","initializes"],["itializing","initializing"],["itnerest","interest"],["itnerface","interface"],["itnerfaces","interfaces"],["itnernal","internal"],["itnerprelation","interpretation"],["itnerpret","interpret"],["itnerpretation","interpretation"],["itnerpretaton","interpretation"],["itnerpreted","interpreted"],["itnerpreter","interpreter"],["itnerpreting","interpreting"],["itnerprets","interprets"],["itnervals","intervals"],["itnroduced","introduced"],["itsef","itself"],["itsel","itself"],["itselfs","itself"],["itselt","itself"],["itselv","itself"],["itsems","items"],["itslef","itself"],["itslev","itself"],["itsself","itself"],["itterate","iterate"],["itterated","iterated"],["itterates","iterates"],["itterating","iterating"],["itteration","iteration"],["itterations","iterations"],["itterative","iterative"],["itterator","iterator"],["itterators","iterators"],["iunior","junior"],["ivalid","invalid"],["ivocation","invocation"],["ivoked","invoked"],["iwithout","without"],["iwll","will"],["iwth","with"],["jagid","jagged"],["jagwar","jaguar"],["januar","January"],["janurary","January"],["Januray","January"],["japanease","japanese"],["japaneese","Japanese"],["Japanes","Japanese"],["japanses","Japanese"],["jaques","jacques"],["javacript","javascript"],["javascipt","javascript"],["javasciript","javascript"],["javascritp","javascript"],["javascropt","javascript"],["javasript","javascript"],["javasrript","javascript"],["javescript","javascript"],["javsscript","javascript"],["jeapardy","jeopardy"],["jeffies","jiffies"],["jekins","Jenkins"],["jelous","jealous"],["jelousy","jealousy"],["jelusey","jealousy"],["jenkin","Jenkins"],["jenkkins","Jenkins"],["jenkns","Jenkins"],["jepordize","jeopardize"],["jewllery","jewellery"],["jhondoe","johndoe"],["jist","gist"],["jitterr","jitter"],["jitterring","jittering"],["jodpers","jodhpurs"],["Johanine","Johannine"],["joineable","joinable"],["joinning","joining"],["jont","joint"],["jonts","joints"],["jornal","journal"],["jorunal","journal"],["Jospeh","Joseph"],["jossle","jostle"],["jouney","journey"],["journied","journeyed"],["journies","journeys"],["joystik","joystick"],["jscipt","jscript"],["jstu","just"],["jsut","just"],["juadaism","Judaism"],["juadism","Judaism"],["judical","judicial"],["judisuary","judiciary"],["juducial","judicial"],["juge","judge"],["juipter","Jupiter"],["jumo","jump"],["jumoed","jumped"],["jumpimng","jumping"],["jupyther","Jupyter"],["juristiction","jurisdiction"],["juristictions","jurisdictions"],["jus","just"],["justfied","justified"],["justication","justification"],["justifed","justified"],["justs","just"],["juxt","just"],["juxtification","justification"],["juxtifications","justifications"],["juxtified","justified"],["juxtifies","justifies"],["juxtifying","justifying"],["kakfa","Kafka"],["kazakstan","Kazakhstan"],["keep-alives","keep-alive"],["keept","kept"],["kenerl","kernel"],["kenerls","kernels"],["kenrel","kernel"],["kenrels","kernels"],["kepping","keeping"],["kepps","keeps"],["kerenl","kernel"],["kerenls","kernels"],["kernal","kernel"],["kernals","kernels"],["kernerl","kernel"],["kernerls","kernels"],["keword","keyword"],["kewords","keywords"],["kewword","keyword"],["kewwords","keywords"],["keybaord","keyboard"],["keybaords","keyboards"],["keyboaard","keyboard"],["keyboaards","keyboards"],["keyboad","keyboard"],["keyboads","keyboards"],["keybooard","keyboard"],["keybooards","keyboards"],["keyborad","keyboard"],["keyborads","keyboards"],["keybord","keyboard"],["keybords","keyboards"],["keybroad","keyboard"],["keybroads","keyboards"],["keyevente","keyevent"],["keyords","keywords"],["keyoutch","keytouch"],["keyowrd","keyword"],["keypair","key pair"],["keypairs","key pairs"],["keyservers","key servers"],["keystokes","keystrokes"],["keyward","keyword"],["keywoards","keywords"],["keywork","keyword"],["keyworkd","keyword"],["keyworkds","keywords"],["keywors","keywords"],["keywprd","keyword"],["kindergarden","kindergarten"],["kindgergarden","kindergarten"],["kindgergarten","kindergarten"],["kinf","kind"],["kinfs","kinds"],["kinnect","Kinect"],["klenex","kleenex"],["klick","click"],["klicked","clicked"],["klicks","clicks"],["klunky","clunky"],["knive","knife"],["kno","know"],["knowladge","knowledge"],["knowlage","knowledge"],["knowlageable","knowledgeable"],["knowlegde","knowledge"],["knowlege","knowledge"],["knowlegeabel","knowledgeable"],["knowlegeable","knowledgeable"],["knwo","know"],["knwoing","knowing"],["knwoingly","knowingly"],["knwon","known"],["knwos","knows"],["kocalized","localized"],["konstant","constant"],["konstants","constants"],["konw","know"],["konwn","known"],["konws","knows"],["koordinate","coordinate"],["koordinates","coordinates"],["kown","known"],["kubenates","Kubernetes"],["kubenernetes","Kubernetes"],["kubenertes","Kubernetes"],["kubenetes","Kubernetes"],["kubenretes","Kubernetes"],["kuberenetes","Kubernetes"],["kuberentes","Kubernetes"],["kuberetes","Kubernetes"],["kubermetes","Kubernetes"],["kubernates","Kubernetes"],["kubernests","Kubernetes"],["kubernete","Kubernetes"],["kuberntes","Kubernetes"],["kwno","know"],["kwoledgebase","knowledge base"],["kyrillic","cyrillic"],["labbel","label"],["labbeled","labeled"],["labbels","labels"],["labed","labeled"],["labeld","labelled"],["labirinth","labyrinth"],["lable","label"],["lablel","label"],["lablels","labels"],["lables","labels"],["labouriously","laboriously"],["labratory","laboratory"],["lagacies","legacies"],["lagacy","legacy"],["laguage","language"],["laguages","languages"],["laguague","language"],["laguagues","languages"],["laiter","later"],["lamda","lambda"],["lamdas","lambdas"],["lanaguage","language"],["lanaguge","language"],["lanaguges","languages"],["lanagugs","languages"],["lanauge","language"],["langage","language"],["langauage","language"],["langauge","language"],["langauges","languages"],["langeuage","language"],["langeuagesection","languagesection"],["langht","length"],["langhts","lengths"],["langth","length"],["langths","lengths"],["languace","language"],["languaces","languages"],["languae","language"],["languaes","languages"],["language-spacific","language-specific"],["languahe","language"],["languahes","languages"],["languaje","language"],["languajes","languages"],["langual","lingual"],["languale","language"],["languales","languages"],["langualge","language"],["langualges","languages"],["languange","language"],["languanges","languages"],["languaqe","language"],["languaqes","languages"],["languate","language"],["languates","languages"],["languauge","language"],["languauges","languages"],["languege","language"],["langueges","languages"],["langugae","language"],["langugaes","languages"],["langugage","language"],["langugages","languages"],["languge","language"],["languges","languages"],["langugue","language"],["langugues","languages"],["lanich","launch"],["lanuage","language"],["lanuch","launch"],["lanuched","launched"],["lanuches","launches"],["lanuching","launching"],["lanugage","language"],["lanugages","languages"],["laod","load"],["laoded","loaded"],["laoding","loading"],["laods","loads"],["laout","layout"],["larg","large"],["largst","largest"],["larrry","larry"],["lastes","latest"],["lastr","last"],["latets","latest"],["lating","latin"],["latitide","latitude"],["latitue","latitude"],["latitute","latitude"],["latops","laptops"],["latset","latest"],["lattitude","latitude"],["lauch","launch"],["lauched","launched"],["laucher","launcher"],["lauches","launches"],["lauching","launching"],["lauguage","language"],["launck","launch"],["launhed","launched"],["lavae","larvae"],["layed","laid"],["layou","layout"],["lazer","laser"],["laziliy","lazily"],["lazyness","laziness"],["lcoally","locally"],["lcoation","location"],["lcuase","clause"],["leaast","least"],["leace","leave"],["leack","leak"],["leagacy","legacy"],["leagal","legal"],["leagalise","legalise"],["leagality","legality"],["leagalize","legalize"],["leagcy","legacy"],["leage","league"],["leagel","legal"],["leagelise","legalise"],["leagelity","legality"],["leagelize","legalize"],["leageue","league"],["leagl","legal"],["leaglise","legalise"],["leaglity","legality"],["leaglize","legalize"],["leapyear","leap year"],["leapyears","leap years"],["leary","leery"],["leaset","least"],["leasy","least"],["leathal","lethal"],["leats","least"],["leaveing","leaving"],["leavong","leaving"],["lefted","left"],["legac","legacy"],["legact","legacy"],["legalimate","legitimate"],["legasy","legacy"],["legel","legal"],["leggacies","legacies"],["leggacy","legacy"],["leght","length"],["leghts","lengths"],["legitamate","legitimate"],["legitimiately","legitimately"],["legitmate","legitimate"],["legnth","length"],["legth","length"],["legths","lengths"],["leibnitz","leibniz"],["leightweight","lightweight"],["lene","lens"],["lenggth","length"],["lengh","length"],["lenghs","lengths"],["lenght","length"],["lenghten","lengthen"],["lenghtend","lengthened"],["lenghtened","lengthened"],["lenghtening","lengthening"],["lenghth","length"],["lenghthen","lengthen"],["lenghths","lengths"],["lenghthy","lengthy"],["lenghtly","lengthy"],["lenghts","lengths"],["lenghty","lengthy"],["lengt","length"],["lengten","lengthen"],["lengtext","longtext"],["lengthes","lengths"],["lengthh","length"],["lengts","lengths"],["leniant","lenient"],["leninent","lenient"],["lentgh","length"],["lentghs","lengths"],["lenth","length"],["lenths","lengths"],["leran","learn"],["leraned","learned"],["lerans","learns"],["lessson","lesson"],["lesssons","lessons"],["lesstiff","LessTif"],["letgitimate","legitimate"],["letmost","leftmost"],["leutenant","lieutenant"],["levaridge","leverage"],["levetate","levitate"],["levetated","levitated"],["levetates","levitates"],["levetating","levitating"],["levl","level"],["levle","level"],["lexial","lexical"],["lexigraphic","lexicographic"],["lexigraphical","lexicographical"],["lexigraphically","lexicographically"],["leyer","layer"],["leyered","layered"],["leyering","layering"],["leyers","layers"],["liares","liars"],["liasion","liaison"],["liason","liaison"],["liasons","liaisons"],["libarary","library"],["libaries","libraries"],["libary","library"],["libell","libel"],["liberaries","libraries"],["liberary","library"],["liberoffice","libreoffice"],["liberry","library"],["libgng","libpng"],["libguistic","linguistic"],["libguistics","linguistics"],["libitarianisn","libertarianism"],["libraarie","library"],["libraaries","libraries"],["libraary","library"],["librabarie","library"],["librabaries","libraries"],["librabary","library"],["librabie","library"],["librabies","libraries"],["librabrie","library"],["librabries","libraries"],["librabry","library"],["libraby","library"],["libraie","library"],["libraier","library"],["libraies","libraries"],["libraiesr","libraries"],["libraire","library"],["libraires","libraries"],["librairies","libraries"],["librairy","library"],["libralie","library"],["libralies","libraries"],["libraly","library"],["libraray","library"],["libraris","libraries"],["librarries","libraries"],["librarry","library"],["libraryes","libraries"],["libratie","library"],["libraties","libraries"],["libraty","library"],["libray","library"],["librayr","library"],["libreoffie","libreoffice"],["libreoficekit","libreofficekit"],["libreries","libraries"],["librery","library"],["libries","libraries"],["librraies","libraries"],["librraries","libraries"],["librrary","library"],["librray","library"],["libstc++","libstdc++"],["licate","locate"],["licated","located"],["lication","location"],["lications","locations"],["licenceing","licencing"],["licese","license"],["licesne","license"],["licesnes","licenses"],["licesning","licensing"],["licesnse","license"],["licesnses","licenses"],["licesnsing","licensing"],["licsense","license"],["licsenses","licenses"],["licsensing","licensing"],["lieing","lying"],["liek","like"],["liekd","liked"],["lient","client"],["lients","clients"],["liesure","leisure"],["lieuenant","lieutenant"],["liev","live"],["lieved","lived"],["lifceycle","lifecycle"],["lifecyle","lifecycle"],["lifes","lives"],["lifeycle","lifecycle"],["liftime","lifetime"],["lighing","lighting"],["lightbulp","lightbulb"],["lightweigh","lightweight"],["lightwieght","lightweight"],["lightwight","lightweight"],["lightyear","light year"],["lightyears","light years"],["ligth","light"],["ligthing","lighting"],["ligths","lights"],["ligthweight","lightweight"],["ligthweights","lightweights"],["liitle","little"],["likeley","likely"],["likelly","likely"],["likelyhood","likelihood"],["likewis","likewise"],["likey","likely"],["liklelihood","likelihood"],["likley","likely"],["likly","likely"],["lileral","literal"],["limiation","limitation"],["limiations","limitations"],["liminted","limited"],["limitaion","limitation"],["limite","limit"],["limitiaion","limitation"],["limitiaions","limitations"],["limitiation","limitation"],["limitiations","limitations"],["limitied","limited"],["limitier","limiter"],["limitiers","limiters"],["limitiing","limiting"],["limitimg","limiting"],["limition","limitation"],["limitions","limitations"],["limitis","limits"],["limititation","limitation"],["limititations","limitations"],["limitited","limited"],["limititer","limiter"],["limititers","limiters"],["limititing","limiting"],["limitted","limited"],["limitter","limiter"],["limitting","limiting"],["limitts","limits"],["limk","link"],["limted","limited"],["limti","limit"],["limts","limits"],["linaer","linear"],["linar","linear"],["linarly","linearly"],["lincese","license"],["lincesed","licensed"],["linceses","licenses"],["lineary","linearly"],["linerisation","linearisation"],["linerisations","linearisations"],["lineseach","linesearch"],["lineseaches","linesearches"],["liness","lines"],["linewdith","linewidth"],["linez","lines"],["lingth","length"],["linheight","lineheight"],["linkfy","linkify"],["linnaena","linnaean"],["lintain","lintian"],["linz","lines"],["lippizaner","lipizzaner"],["liquify","liquefy"],["lisetning","listening"],["lising","listing"],["listapck","listpack"],["listbbox","listbox"],["listeing","listening"],["listeneing","listening"],["listeneres","listeners"],["listenes","listens"],["listensers","listeners"],["listenter","listener"],["listenters","listeners"],["listernes","listeners"],["listner","listener"],["listners","listeners"],["litaral","literal"],["litarally","literally"],["litarals","literals"],["litature","literature"],["liteautrue","literature"],["literaly","literally"],["literture","literature"],["litle","little"],["litquid","liquid"],["litquids","liquids"],["lits","list"],["litte","little"],["littel","little"],["littel-endian","little-endian"],["littele","little"],["littelry","literally"],["litteral","literal"],["litterally","literally"],["litterals","literals"],["litterate","literate"],["litterature","literature"],["liuke","like"],["liveing","living"],["livel","level"],["livetime","lifetime"],["livley","lively"],["lizens","license"],["lizense","license"],["lizensing","licensing"],["lke","like"],["llinear","linear"],["lmits","limits"],["loaader","loader"],["loacal","local"],["loacality","locality"],["loacally","locally"],["loacation","location"],["loaction","location"],["loactions","locations"],["loadig","loading"],["loadin","loading"],["loadning","loading"],["locae","locate"],["locaes","locates"],["locahost","localhost"],["locaiing","locating"],["locailty","locality"],["locaing","locating"],["locaion","location"],["locaions","locations"],["locaise","localise"],["locaised","localised"],["locaiser","localiser"],["locaises","localises"],["locaite","locate"],["locaites","locates"],["locaiting","locating"],["locaition","location"],["locaitions","locations"],["locaiton","location"],["locaitons","locations"],["locaize","localize"],["locaized","localized"],["locaizer","localizer"],["locaizes","localizes"],["localation","location"],["localed","located"],["localtion","location"],["localtions","locations"],["localy","locally"],["localzation","localization"],["locatins","locations"],["loccked","locked"],["locgical","logical"],["lockingf","locking"],["lodable","loadable"],["loded","loaded"],["loder","loader"],["loders","loaders"],["loding","loading"],["loev","love"],["logarithimic","logarithmic"],["logarithmical","logarithmically"],["logaritmic","logarithmic"],["logcal","logical"],["loggging","logging"],["logial","logical"],["logially","logically"],["logicaly","logically"],["logictech","logitech"],["logile","logfile"],["logitude","longitude"],["logitudes","longitudes"],["logoic","logic"],["logorithm","logarithm"],["logorithmic","logarithmic"],["logorithms","logarithms"],["logrithm","logarithm"],["logrithms","logarithms"],["logwritter","logwriter"],["loign","login"],["loigns","logins"],["lokal","local"],["lokale","locale"],["lokales","locales"],["lokaly","locally"],["lolal","total"],["lolerant","tolerant"],["lond","long"],["lonelyness","loneliness"],["long-runnign","long-running"],["longers","longer"],["longitudonal","longitudinal"],["longitue","longitude"],["longitutde","longitude"],["longitute","longitude"],["longst","longest"],["longuer","longer"],["longuest","longest"],["lonley","lonely"],["looback","loopback"],["loobacks","loopbacks"],["loobpack","loopback"],["loockdown","lockdown"],["lookes","looks"],["looknig","looking"],["looop","loop"],["loopup","lookup"],["loosley","loosely"],["loosly","loosely"],["losely","loosely"],["losen","loosen"],["losened","loosened"],["lotharingen","Lothringen"],["lpatform","platform"],["luckly","luckily"],["luminose","luminous"],["luminousity","luminosity"],["lveo","love"],["lvoe","love"],["Lybia","Libya"],["maake","make"],["mabe","maybe"],["mabye","maybe"],["macack","macaque"],["macason","moccasin"],["macasons","moccasins"],["maccro","macro"],["maccros","macros"],["machanism","mechanism"],["machanisms","mechanisms"],["mached","matched"],["maches","matches"],["machettie","machete"],["machinary","machinery"],["machine-dependend","machine-dependent"],["machiness","machines"],["mackeral","mackerel"],["maco","macro"],["macor","macro"],["macors","macros"],["macpakge","package"],["macroses","macros"],["macrow","macro"],["macthing","matching"],["madantory","mandatory"],["madatory","mandatory"],["maddness","madness"],["maesure","measure"],["maesured","measured"],["maesurement","measurement"],["maesurements","measurements"],["maesures","measures"],["maesuring","measuring"],["magasine","magazine"],["magincian","magician"],["magisine","magazine"],["magizine","magazine"],["magnatiude","magnitude"],["magnatude","magnitude"],["magnificient","magnificent"],["magolia","magnolia"],["mahcine","machine"],["maibe","maybe"],["maibox","mailbox"],["mailformed","malformed"],["mailling","mailing"],["maillinglist","mailing list"],["maillinglists","mailing lists"],["mailny","mainly"],["mailstrum","maelstrom"],["mainenance","maintenance"],["maininly","mainly"],["mainling","mailing"],["maintainance","maintenance"],["maintaince","maintenance"],["maintainces","maintenances"],["maintainence","maintenance"],["maintaing","maintaining"],["maintan","maintain"],["maintanance","maintenance"],["maintance","maintenance"],["maintane","maintain"],["maintanence","maintenance"],["maintaner","maintainer"],["maintaners","maintainers"],["maintans","maintains"],["maintenace","maintenance"],["maintenence","maintenance"],["maintiain","maintain"],["maintians","maintains"],["maintinaing","maintaining"],["maintioned","mentioned"],["mairabd","MariaDB"],["mairadb","MariaDB"],["maitain","maintain"],["maitainance","maintenance"],["maitained","maintained"],["maitainers","maintainers"],["majoroty","majority"],["maka","make"],["makefle","makefile"],["makeing","making"],["makign","making"],["makretplace","marketplace"],["makro","macro"],["makros","macros"],["Malcom","Malcolm"],["maliciousally","maliciously"],["malicius","malicious"],["maliciusally","maliciously"],["maliciusly","maliciously"],["malicous","malicious"],["malicousally","maliciously"],["malicously","maliciously"],["maline","malign"],["malined","maligned"],["malining","maligning"],["malins","maligns"],["malless","malice"],["malplace","misplace"],["malplaced","misplaced"],["maltesian","Maltese"],["mamagement","management"],["mamal","mammal"],["mamalian","mammalian"],["mamento","memento"],["mamentos","mementos"],["mamory","memory"],["mamuth","mammoth"],["manafacturer","manufacturer"],["manafacturers","manufacturers"],["managament","management"],["manageed","managed"],["managemenet","management"],["managenment","management"],["managet","manager"],["managets","managers"],["managmenet","management"],["managment","management"],["manaise","mayonnaise"],["manal","manual"],["manange","manage"],["manangement","management"],["mananger","manager"],["manangers","managers"],["manaul","manual"],["manaully","manually"],["manauls","manuals"],["manaze","mayonnaise"],["mandatatory","mandatory"],["mandetory","mandatory"],["manement","management"],["maneouvre","manoeuvre"],["maneouvred","manoeuvred"],["maneouvres","manoeuvres"],["maneouvring","manoeuvring"],["manetain","maintain"],["manetained","maintained"],["manetainer","maintainer"],["manetainers","maintainers"],["manetaining","maintaining"],["manetains","maintains"],["mangaed","managed"],["mangaement","management"],["mangager","manager"],["mangagers","managers"],["mangement","management"],["mangementt","management"],["manifacture","manufacture"],["manifactured","manufactured"],["manifacturer","manufacturer"],["manifacturers","manufacturers"],["manifactures","manufactures"],["manifect","manifest"],["manipluate","manipulate"],["manipluated","manipulated"],["manipulatin","manipulating"],["manipulaton","manipulation"],["manipute","manipulate"],["maniputed","manipulated"],["maniputing","manipulating"],["manipution","manipulation"],["maniputions","manipulations"],["maniputor","manipulator"],["manisfestations","manifestations"],["maniuplate","manipulate"],["maniuplated","manipulated"],["maniuplates","manipulates"],["maniuplating","manipulating"],["maniuplation","manipulation"],["maniuplations","manipulations"],["maniuplator","manipulator"],["maniuplators","manipulators"],["mannor","manner"],["mannual","manual"],["mannually","manually"],["mannualy","manually"],["manoeuverability","maneuverability"],["manoeuvering","maneuvering"],["manouevring","manoeuvring"],["mantain","maintain"],["mantainable","maintainable"],["mantained","maintained"],["mantainer","maintainer"],["mantainers","maintainers"],["mantaining","maintaining"],["mantains","maintains"],["mantanine","maintain"],["mantanined","maintained"],["mantatory","mandatory"],["mantenance","maintenance"],["manualy","manually"],["manualyl","manually"],["manualyy","manually"],["manuell","manual"],["manuelly","manually"],["manufactuerd","manufactured"],["manufacturedd","manufactured"],["manufature","manufacture"],["manufatured","manufactured"],["manufaturing","manufacturing"],["manufaucturing","manufacturing"],["manulally","manually"],["manule","manual"],["manuley","manually"],["manully","manually"],["manuly","manually"],["manupilations","manipulations"],["manupulate","manipulate"],["manupulated","manipulated"],["manupulates","manipulates"],["manupulating","manipulating"],["manupulation","manipulation"],["manupulations","manipulations"],["manuver","maneuver"],["manyal","manual"],["manyally","manually"],["manyals","manuals"],["mapable","mappable"],["mape","map"],["maped","mapped"],["maping","mapping"],["mapings","mappings"],["mapp","map"],["mappeds","mapped"],["mappeed","mapped"],["mappping","mapping"],["mapppings","mappings"],["margings","margins"],["mariabd","MariaDB"],["mariage","marriage"],["marjority","majority"],["marketting","marketing"],["markey","marquee"],["markeys","marquees"],["marmelade","marmalade"],["marrage","marriage"],["marraige","marriage"],["marrtyred","martyred"],["marryied","married"],["marshmellow","marshmallow"],["marshmellows","marshmallows"],["marter","martyr"],["masakist","masochist"],["mashetty","machete"],["mashine","machine"],["mashined","machined"],["mashines","machines"],["masia","messiah"],["masicer","massacre"],["masiff","massif"],["maskerading","masquerading"],["maskeraid","masquerade"],["masos","macos"],["masquarade","masquerade"],["masqurade","masquerade"],["Massachusettes","Massachusetts"],["Massachussets","Massachusetts"],["Massachussetts","Massachusetts"],["massagebox","messagebox"],["massectomy","mastectomy"],["massewer","masseur"],["massmedia","mass media"],["massoose","masseuse"],["masster","master"],["masteer","master"],["masterbation","masturbation"],["mastquerade","masquerade"],["mata-data","meta-data"],["matadata","metadata"],["matainer","maintainer"],["matainers","maintainers"],["mataphysical","metaphysical"],["matatable","metatable"],["matc","match"],["matchies","matches"],["matchign","matching"],["matchin","matching"],["matchs","matches"],["matchter","matcher"],["matcing","matching"],["mateiral","material"],["mateirals","materials"],["matemathical","mathematical"],["materaial","material"],["materaials","materials"],["materail","material"],["materails","materials"],["materalists","materialist"],["materil","material"],["materilism","materialism"],["materilize","materialize"],["materils","materials"],["materla","material"],["materlas","materials"],["mathamatics","mathematics"],["mathces","matches"],["mathch","match"],["mathched","matched"],["mathches","matches"],["mathching","matching"],["mathcing","matching"],["mathed","matched"],["mathematicaly","mathematically"],["mathematican","mathematician"],["mathematicas","mathematics"],["mathes","matches"],["mathetician","mathematician"],["matheticians","mathematicians"],["mathimatic","mathematic"],["mathimatical","mathematical"],["mathimatically","mathematically"],["mathimatician","mathematician"],["mathimaticians","mathematicians"],["mathimatics","mathematics"],["mathing","matching"],["mathmatical","mathematical"],["mathmatically","mathematically"],["mathmatician","mathematician"],["mathmaticians","mathematicians"],["mathod","method"],["matinay","matinee"],["matix","matrix"],["matreial","material"],["matreials","materials"],["matresses","mattresses"],["matrial","material"],["matrials","materials"],["matser","master"],["matzch","match"],["mavrick","maverick"],["mawsoleum","mausoleum"],["maximice","maximize"],["maximim","maximum"],["maximimum","maximum"],["maximium","maximum"],["maximnum","maximum"],["maximnums","maximums"],["maximun","maximum"],["maxinum","maximum"],["maxium","maximum"],["maxiumum","maximum"],["maxmimum","maximum"],["maxmium","maximum"],["maxmiums","maximums"],["maxosx","macosx"],["maxumum","maximum"],["maybee","maybe"],["mayonase","mayonnaise"],["mayority","majority"],["mayu","may"],["mayybe","maybe"],["mazilla","Mozilla"],["mccarthyst","mccarthyist"],["mchanic","mechanic"],["mchanical","mechanical"],["mchanically","mechanically"],["mchanicals","mechanicals"],["mchanics","mechanics"],["mchanism","mechanism"],["mchanisms","mechanisms"],["mcroscope","microscope"],["mcroscopes","microscopes"],["mcroscopic","microscopic"],["mcroscopies","microscopies"],["mcroscopy","microscopy"],["mdification","modification"],["mdifications","modifications"],["mdified","modified"],["mdifier","modifier"],["mdifiers","modifiers"],["mdifies","modifies"],["mdify","modify"],["mdifying","modifying"],["mdoel","model"],["mdoeled","modeled"],["mdoeling","modeling"],["mdoelled","modelled"],["mdoelling","modelling"],["mdoels","models"],["meaasure","measure"],["meaasured","measured"],["meaasures","measures"],["meachanism","mechanism"],["meachanisms","mechanisms"],["meachinism","mechanism"],["meachinisms","mechanisms"],["meachnism","mechanism"],["meachnisms","mechanisms"],["meading","meaning"],["meaing","meaning"],["mealflur","millefleur"],["meanigfull","meaningful"],["meanign","meaning"],["meanin","meaning"],["meaninful","meaningful"],["meaningfull","meaningful"],["meanining","meaning"],["meaninless","meaningless"],["meaninng","meaning"],["meassurable","measurable"],["meassurably","measurably"],["meassure","measure"],["meassured","measured"],["meassurement","measurement"],["meassurements","measurements"],["meassures","measures"],["meassuring","measuring"],["measue","measure"],["measued","measured"],["measuement","measurement"],["measuements","measurements"],["measuer","measurer"],["measues","measures"],["measuing","measuring"],["measuremenet","measurement"],["measuremenets","measurements"],["measurmenet","measurement"],["measurmenets","measurements"],["measurment","measurement"],["measurments","measurements"],["meatadata","metadata"],["meatfile","metafile"],["meathod","method"],["meaure","measure"],["meaured","measured"],["meaurement","measurement"],["meaurements","measurements"],["meaurer","measurer"],["meaurers","measurers"],["meaures","measures"],["meauring","measuring"],["meausure","measure"],["meausures","measures"],["meber","member"],["mebmer","member"],["mebrain","membrane"],["mebrains","membranes"],["mebran","membrane"],["mebrans","membranes"],["mecahinsm","mechanism"],["mecahinsms","mechanisms"],["mecahnic","mechanic"],["mecahnics","mechanics"],["mecahnism","mechanism"],["mecanical","mechanical"],["mecanism","mechanism"],["mecanisms","mechanisms"],["meccob","macabre"],["mechamism","mechanism"],["mechamisms","mechanisms"],["mechananism","mechanism"],["mechancial","mechanical"],["mechandise","merchandise"],["mechanim","mechanism"],["mechanims","mechanisms"],["mechanis","mechanism"],["mechansim","mechanism"],["mechansims","mechanisms"],["mechine","machine"],["mechines","machines"],["mechinism","mechanism"],["mechnanism","mechanism"],["mechnism","mechanism"],["mechnisms","mechanisms"],["medacine","medicine"],["medai","media"],["meddo","meadow"],["meddos","meadows"],["medeival","medieval"],["medevial","medieval"],["medhod","method"],["medhods","methods"],["medievel","medieval"],["medifor","metaphor"],["medifors","metaphors"],["medioker","mediocre"],["mediphor","metaphor"],["mediphors","metaphors"],["medisinal","medicinal"],["mediterainnean","mediterranean"],["Mediteranean","Mediterranean"],["medow","meadow"],["medows","meadows"],["meeds","needs"],["meens","means"],["meerkrat","meerkat"],["meerly","merely"],["meetign","meeting"],["meganism","mechanism"],["mege","merge"],["mehcanic","mechanic"],["mehcanical","mechanical"],["mehcanically","mechanically"],["mehcanics","mechanics"],["mehod","method"],["mehodical","methodical"],["mehodically","methodically"],["mehods","methods"],["mehtod","method"],["mehtodical","methodical"],["mehtodically","methodically"],["mehtods","methods"],["meida","media"],["melancoly","melancholy"],["melieux","milieux"],["melineum","millennium"],["melineumms","millennia"],["melineums","millennia"],["melinneum","millennium"],["melinneums","millennia"],["mellineum","millennium"],["mellineums","millennia"],["mellinneum","millennium"],["mellinneums","millennia"],["membran","membrane"],["membranaphone","membranophone"],["membrans","membranes"],["memcahe","memcache"],["memcahed","memcached"],["memeasurement","measurement"],["memeber","member"],["memebered","remembered"],["memebers","members"],["memebership","membership"],["memeberships","memberships"],["memebr","member"],["memebrof","memberof"],["memebrs","members"],["mememory","memory"],["mememto","memento"],["memeory","memory"],["memer","member"],["memership","membership"],["memerships","memberships"],["memery","memory"],["memick","mimic"],["memicked","mimicked"],["memicking","mimicking"],["memics","mimics"],["memmber","member"],["memmick","mimic"],["memmicked","mimicked"],["memmicking","mimicking"],["memmics","mimics"],["memmory","memory"],["memoery","memory"],["memomry","memory"],["memor","memory"],["memoty","memory"],["memove","memmove"],["mempry","memory"],["memroy","memory"],["memwar","memoir"],["memwars","memoirs"],["memwoir","memoir"],["memwoirs","memoirs"],["menally","mentally"],["menas","means"],["menetion","mention"],["menetioned","mentioned"],["menetioning","mentioning"],["menetions","mentions"],["meni","menu"],["menioned","mentioned"],["mensioned","mentioned"],["mensioning","mentioning"],["ment","meant"],["menthods","methods"],["mentiond","mentioned"],["mentione","mentioned"],["mentionned","mentioned"],["mentionning","mentioning"],["mentionnned","mentioned"],["menual","manual"],["menue","menu"],["menues","menus"],["menutitems","menuitems"],["meraj","mirage"],["merajes","mirages"],["merang","meringue"],["mercahnt","merchant"],["mercentile","mercantile"],["merchantibility","merchantability"],["merecat","meerkat"],["merecats","meerkats"],["mergable","mergeable"],["merget","merge"],["mergge","merge"],["mergged","merged"],["mergging","merging"],["mermory","memory"],["merory","memory"],["merrors","mirrors"],["mesage","message"],["mesages","messages"],["mesaureed","measured"],["meskeeto","mosquito"],["meskeetos","mosquitoes"],["mesoneen","mezzanine"],["mesoneens","mezzanines"],["messaes","messages"],["messag","message"],["messagetqueue","messagequeue"],["messagin","messaging"],["messagoe","message"],["messags","messages"],["messagses","messages"],["messanger","messenger"],["messangers","messengers"],["messave","message"],["messeges","messages"],["messenging","messaging"],["messgae","message"],["messgaed","messaged"],["messgaes","messages"],["messge","message"],["messges","messages"],["messsage","message"],["messsages","messages"],["messure","measure"],["messured","measured"],["messurement","measurement"],["messures","measures"],["messuring","measuring"],["messurment","measurement"],["mesure","measure"],["mesured","measured"],["mesurement","measurement"],["mesurements","measurements"],["mesures","measures"],["mesuring","measuring"],["mesurment","measurement"],["meta-attrubute","meta-attribute"],["meta-attrubutes","meta-attributes"],["meta-progamming","meta-programming"],["metacharater","metacharacter"],["metacharaters","metacharacters"],["metalic","metallic"],["metalurgic","metallurgic"],["metalurgical","metallurgical"],["metalurgy","metallurgy"],["metamorphysis","metamorphosis"],["metapackge","metapackage"],["metapackges","metapackages"],["metaphore","metaphor"],["metaphoricial","metaphorical"],["metaprogamming","metaprogramming"],["metatdata","metadata"],["metdata","metadata"],["meterial","material"],["meterials","materials"],["meterologist","meteorologist"],["meterology","meteorology"],["methaphor","metaphor"],["methaphors","metaphors"],["methd","method"],["methdos","methods"],["methds","methods"],["methid","method"],["methids","methods"],["methjod","method"],["methodd","method"],["methode","method"],["methoden","methods"],["methodss","methods"],["methon","method"],["methons","methods"],["methot","method"],["methots","methods"],["metifor","metaphor"],["metifors","metaphors"],["metion","mention"],["metioned","mentioned"],["metiphor","metaphor"],["metiphors","metaphors"],["metod","method"],["metodologies","methodologies"],["metodology","methodology"],["metods","methods"],["metrig","metric"],["metrigal","metrical"],["metrigs","metrics"],["mey","may"],["meybe","maybe"],["mezmorise","mesmerise"],["mezmorised","mesmerised"],["mezmoriser","mesmeriser"],["mezmorises","mesmerises"],["mezmorising","mesmerising"],["mezmorize","mesmerize"],["mezmorized","mesmerized"],["mezmorizer","mesmerizer"],["mezmorizes","mesmerizes"],["mezmorizing","mesmerizing"],["miagic","magic"],["miagical","magical"],["mial","mail"],["mices","mice"],["Michagan","Michigan"],["micorcode","microcode"],["micorcodes","microcodes"],["Micorsoft","Microsoft"],["micoscope","microscope"],["micoscopes","microscopes"],["micoscopic","microscopic"],["micoscopies","microscopies"],["micoscopy","microscopy"],["Micosoft","Microsoft"],["micrcontroller","microcontroller"],["micrcontrollers","microcontrollers"],["microcontroler","microcontroller"],["microcontrolers","microcontrollers"],["Microfost","Microsoft"],["microntroller","microcontroller"],["microntrollers","microcontrollers"],["microoseconds","microseconds"],["micropone","microphone"],["micropones","microphones"],["microprocesspr","microprocessor"],["microprocessprs","microprocessors"],["microseond","microsecond"],["microseonds","microseconds"],["Microsft","Microsoft"],["microship","microchip"],["microships","microchips"],["Microsof","Microsoft"],["Microsofot","Microsoft"],["Micrsft","Microsoft"],["Micrsoft","Microsoft"],["middlware","middleware"],["midevil","medieval"],["midified","modified"],["midpints","midpoints"],["midpiont","midpoint"],["midpionts","midpoints"],["midpont","midpoint"],["midponts","midpoints"],["mige","midge"],["miges","midges"],["migh","might"],["migrateable","migratable"],["migth","might"],["miht","might"],["miinimisation","minimisation"],["miinimise","minimise"],["miinimised","minimised"],["miinimises","minimises"],["miinimising","minimising"],["miinimization","minimization"],["miinimize","minimize"],["miinimized","minimized"],["miinimizes","minimizes"],["miinimizing","minimizing"],["miinimum","minimum"],["mikrosecond","microsecond"],["mikroseconds","microseconds"],["milage","mileage"],["milages","mileages"],["mileau","milieu"],["milennia","millennia"],["milennium","millennium"],["mileu","milieu"],["miliary","military"],["milicious","malicious"],["miliciousally","maliciously"],["miliciously","maliciously"],["milicous","malicious"],["milicousally","maliciously"],["milicously","maliciously"],["miligram","milligram"],["milimeter","millimeter"],["milimeters","millimeters"],["milimetre","millimetre"],["milimetres","millimetres"],["milimiters","millimeters"],["milion","million"],["miliraty","military"],["milisecond","millisecond"],["miliseconds","milliseconds"],["milisecons","milliseconds"],["milivolts","millivolts"],["milktoast","milquetoast"],["milktoasts","milquetoasts"],["milleneum","millennium"],["millenia","millennia"],["millenial","millennial"],["millenialism","millennialism"],["millenials","millennials"],["millenium","millennium"],["millepede","millipede"],["milliescond","millisecond"],["milliesconds","milliseconds"],["millimiter","millimeter"],["millimiters","millimeters"],["millimitre","millimetre"],["millimitres","millimetres"],["millioniare","millionaire"],["millioniares","millionaires"],["millisencond","millisecond"],["millisenconds","milliseconds"],["milliseond","millisecond"],["milliseonds","milliseconds"],["millitant","militant"],["millitary","military"],["millon","million"],["millsecond","millisecond"],["millseconds","milliseconds"],["millsencond","millisecond"],["millsenconds","milliseconds"],["miltary","military"],["miltisite","multisite"],["milyew","milieu"],["mimach","mismatch"],["mimachd","mismatched"],["mimached","mismatched"],["mimaches","mismatches"],["mimaching","mismatching"],["mimatch","mismatch"],["mimatchd","mismatched"],["mimatched","mismatched"],["mimatches","mismatches"],["mimatching","mismatching"],["mimicing","mimicking"],["mimick","mimic"],["mimicks","mimics"],["mimimal","minimal"],["mimimum","minimum"],["mimimun","minimum"],["miminal","minimal"],["miminally","minimally"],["miminaly","minimally"],["miminise","minimise"],["miminised","minimised"],["miminises","minimises"],["miminising","minimising"],["miminize","minimize"],["miminized","minimized"],["miminizes","minimizes"],["miminizing","minimizing"],["mimmick","mimic"],["mimmicked","mimicked"],["mimmicking","mimicking"],["mimmics","mimics"],["minature","miniature"],["minerial","mineral"],["MingGW","MinGW"],["minimam","minimum"],["minimial","minimal"],["minimium","minimum"],["minimsation","minimisation"],["minimse","minimise"],["minimsed","minimised"],["minimses","minimises"],["minimsing","minimising"],["minimumm","minimum"],["minimumn","minimum"],["minimun","minimum"],["minimzation","minimization"],["minimze","minimize"],["minimzed","minimized"],["minimzes","minimizes"],["minimzing","minimizing"],["mininal","minimal"],["mininise","minimise"],["mininised","minimised"],["mininises","minimises"],["mininising","minimising"],["mininize","minimize"],["mininized","minimized"],["mininizes","minimizes"],["mininizing","minimizing"],["mininum","minimum"],["miniscule","minuscule"],["miniscully","minusculely"],["miniture","miniature"],["minium","minimum"],["miniums","minimums"],["miniumum","minimum"],["minmal","minimal"],["minmum","minimum"],["minnimum","minimum"],["minnimums","minimums"],["minsitry","ministry"],["minstries","ministries"],["minstry","ministry"],["minum","minimum"],["minumum","minimum"],["minuscle","minuscule"],["minuts","minutes"],["miplementation","implementation"],["mirconesia","micronesia"],["mircophone","microphone"],["mircophones","microphones"],["mircoscope","microscope"],["mircoscopes","microscopes"],["mircoservice","microservice"],["mircoservices","microservices"],["mircosoft","Microsoft"],["mirgate","migrate"],["mirgated","migrated"],["mirgates","migrates"],["mirometer","micrometer"],["mirometers","micrometers"],["mirored","mirrored"],["miroring","mirroring"],["mirorr","mirror"],["mirorred","mirrored"],["mirorring","mirroring"],["mirorrs","mirrors"],["mirro","mirror"],["mirroed","mirrored"],["mirrorn","mirror"],["mirrorred","mirrored"],["mis-alignement","misalignment"],["mis-alignment","misalignment"],["mis-intepret","mis-interpret"],["mis-intepreted","mis-interpreted"],["mis-match","mismatch"],["misalignement","misalignment"],["misalinged","misaligned"],["misbehaive","misbehave"],["miscallenous","miscellaneous"],["misceancellous","miscellaneous"],["miscelaneous","miscellaneous"],["miscellanious","miscellaneous"],["miscellanous","miscellaneous"],["miscelleneous","miscellaneous"],["mischeivous","mischievous"],["mischevious","mischievous"],["mischevus","mischievous"],["mischevusly","mischievously"],["mischieveous","mischievous"],["mischieveously","mischievously"],["mischievious","mischievous"],["misconfiged","misconfigured"],["Miscrosoft","Microsoft"],["misdameanor","misdemeanor"],["misdameanors","misdemeanors"],["misdemenor","misdemeanor"],["misdemenors","misdemeanors"],["miselaneous","miscellaneous"],["miselaneously","miscellaneously"],["misellaneous","miscellaneous"],["misellaneously","miscellaneously"],["misformed","malformed"],["misfourtunes","misfortunes"],["misile","missile"],["mising","missing"],["misintepret","misinterpret"],["misintepreted","misinterpreted"],["misinterpert","misinterpret"],["misinterperted","misinterpreted"],["misinterperting","misinterpreting"],["misinterperts","misinterprets"],["misinterprett","misinterpret"],["misinterpretted","misinterpreted"],["misisng","missing"],["mismach","mismatch"],["mismached","mismatched"],["mismaches","mismatches"],["mismaching","mismatching"],["mismactch","mismatch"],["mismatchd","mismatched"],["mismatich","mismatch"],["Misouri","Missouri"],["mispell","misspell"],["mispelled","misspelled"],["mispelling","misspelling"],["mispellings","misspellings"],["mispelt","misspelt"],["mispronounciation","mispronunciation"],["misquito","mosquito"],["misquitos","mosquitos"],["missable","miscible"],["missconfiguration","misconfiguration"],["missconfigure","misconfigure"],["missconfigured","misconfigured"],["missconfigures","misconfigures"],["missconfiguring","misconfiguring"],["misscounted","miscounted"],["missen","mizzen"],["missign","missing"],["missingassignement","missingassignment"],["missings","missing"],["Missisipi","Mississippi"],["Missisippi","Mississippi"],["missle","missile"],["missleading","misleading"],["missletow","mistletoe"],["missmanaged","mismanaged"],["missmatch","mismatch"],["missmatchd","mismatched"],["missmatched","mismatched"],["missmatches","mismatches"],["missmatching","mismatching"],["missonary","missionary"],["misspel","misspell"],["misssing","missing"],["misstake","mistake"],["misstaken","mistaken"],["misstakes","mistakes"],["misstype","mistype"],["misstypes","mistypes"],["missunderstood","misunderstood"],["missuse","misuse"],["missused","misused"],["missusing","misusing"],["mistatch","mismatch"],["mistatchd","mismatched"],["mistatched","mismatched"],["mistatches","mismatches"],["mistatching","mismatching"],["misteek","mystique"],["misteeks","mystiques"],["misterious","mysterious"],["mistery","mystery"],["misteryous","mysterious"],["mistic","mystic"],["mistical","mystical"],["mistics","mystics"],["mistmatch","mismatch"],["mistmatched","mismatched"],["mistmatches","mismatches"],["mistmatching","mismatching"],["mistro","maestro"],["mistros","maestros"],["mistrow","maestro"],["mistrows","maestros"],["misue","misuse"],["misued","misused"],["misuing","misusing"],["miticate","mitigate"],["miticated","mitigated"],["miticateing","mitigating"],["miticates","mitigates"],["miticating","mitigating"],["miticator","mitigator"],["mittigate","mitigate"],["miximum","maximum"],["mixted","mixed"],["mixure","mixture"],["mjor","major"],["mkae","make"],["mkaes","makes"],["mkaing","making"],["mke","make"],["mkea","make"],["mmaped","mapped"],["mmatching","matching"],["mmbers","members"],["mmnemonic","mnemonic"],["mnay","many"],["mobify","modify"],["mocrochip","microchip"],["mocrochips","microchips"],["mocrocode","microcode"],["mocrocodes","microcodes"],["mocrocontroller","microcontroller"],["mocrocontrollers","microcontrollers"],["mocrophone","microphone"],["mocrophones","microphones"],["mocroprocessor","microprocessor"],["mocroprocessors","microprocessors"],["mocrosecond","microsecond"],["mocroseconds","microseconds"],["Mocrosoft","Microsoft"],["mocule","module"],["mocules","modules"],["moddel","model"],["moddeled","modeled"],["moddelled","modelled"],["moddels","models"],["modee","mode"],["modelinng","modeling"],["modell","model"],["modellinng","modelling"],["modernination","modernization"],["moderninations","modernizations"],["moderninationz","modernizations"],["modernizationz","modernizations"],["modesettting","modesetting"],["modeul","module"],["modeuls","modules"],["modfel","model"],["modfiable","modifiable"],["modfication","modification"],["modfications","modifications"],["modfide","modified"],["modfided","modified"],["modfider","modifier"],["modfiders","modifiers"],["modfides","modifies"],["modfied","modified"],["modfieid","modified"],["modfieir","modifier"],["modfieirs","modifiers"],["modfieis","modifies"],["modfier","modifier"],["modfiers","modifiers"],["modfies","modifies"],["modfifiable","modifiable"],["modfification","modification"],["modfifications","modifications"],["modfified","modified"],["modfifier","modifier"],["modfifiers","modifiers"],["modfifies","modifies"],["modfify","modify"],["modfifying","modifying"],["modfiiable","modifiable"],["modfiication","modification"],["modfiications","modifications"],["modfitied","modified"],["modfitier","modifier"],["modfitiers","modifiers"],["modfities","modifies"],["modfity","modify"],["modfitying","modifying"],["modfiy","modify"],["modfiying","modifying"],["modfy","modify"],["modfying","modifying"],["modications","modifications"],["modidfication","modification"],["modidfications","modifications"],["modidfied","modified"],["modidfier","modifier"],["modidfiers","modifiers"],["modidfies","modifies"],["modidfy","modify"],["modidfying","modifying"],["modifable","modifiable"],["modifaction","modification"],["modifactions","modifications"],["modifation","modification"],["modifations","modifications"],["modifcation","modification"],["modifcations","modifications"],["modifciation","modification"],["modifciations","modifications"],["modifcication","modification"],["modifcications","modifications"],["modifdied","modified"],["modifdy","modify"],["modifed","modified"],["modifer","modifier"],["modifers","modifiers"],["modifes","modifies"],["modiffer","modifier"],["modiffers","modifiers"],["modifiation","modification"],["modifiations","modifications"],["modificatioon","modification"],["modificatioons","modifications"],["modificaton","modification"],["modificatons","modifications"],["modifid","modified"],["modifified","modified"],["modifify","modify"],["modifing","modifying"],["modifires","modifiers"],["modifiy","modify"],["modifiying","modifying"],["modifiyng","modifying"],["modifled","modified"],["modifler","modifier"],["modiflers","modifiers"],["modift","modify"],["modifty","modify"],["modifu","modify"],["modifuable","modifiable"],["modifued","modified"],["modifx","modify"],["modifyable","modifiable"],["modiration","moderation"],["modle","model"],["modlue","module"],["modprobbing","modprobing"],["modprobeing","modprobing"],["modtified","modified"],["modue","module"],["moduel","module"],["moduels","modules"],["moduile","module"],["modukles","modules"],["modul","module"],["modules's","modules'"],["moduless","modules"],["modulie","module"],["modulu","modulo"],["modulues","modules"],["modyfy","modify"],["moent","moment"],["moeny","money"],["mofdified","modified"],["mofification","modification"],["mofified","modified"],["mofifies","modifies"],["mofify","modify"],["mohammedan","muslim"],["mohammedans","muslims"],["moint","mount"],["mointor","monitor"],["mointored","monitored"],["mointoring","monitoring"],["mointors","monitors"],["moleclues","molecules"],["momement","moment"],["momementarily","momentarily"],["momements","moments"],["momemtarily","momentarily"],["momemtary","momentary"],["momemtn","moment"],["momentarely","momentarily"],["momento","memento"],["momery","memory"],["momoent","moment"],["momoment","moment"],["momomentarily","momentarily"],["momoments","moments"],["momory","memory"],["monarkey","monarchy"],["monarkeys","monarchies"],["monarkies","monarchies"],["monestaries","monasteries"],["monestic","monastic"],["monickers","monikers"],["monitary","monetary"],["moniter","monitor"],["monitoing","monitoring"],["monkies","monkeys"],["monochorome","monochrome"],["monochromo","monochrome"],["monocrome","monochrome"],["monolite","monolithic"],["monontonicity","monotonicity"],["monopace","monospace"],["monotir","monitor"],["monotired","monitored"],["monotiring","monitoring"],["monotirs","monitors"],["monsday","Monday"],["Monserrat","Montserrat"],["monstrum","monster"],["montains","mountains"],["montaj","montage"],["montajes","montages"],["montanous","mountainous"],["monthe","month"],["monthes","months"],["montly","monthly"],["Montnana","Montana"],["monts","months"],["montypic","monotypic"],["moodify","modify"],["moounting","mounting"],["mopdule","module"],["mopre","more"],["mor","more"],["mordern","modern"],["morever","moreover"],["morg","morgue"],["morgage","mortgage"],["morges","morgues"],["morgs","morgues"],["morisette","morissette"],["mormalise","normalise"],["mormalised","normalised"],["mormalises","normalises"],["mormalize","normalize"],["mormalized","normalized"],["mormalizes","normalizes"],["morrisette","morissette"],["morroccan","moroccan"],["morrocco","morocco"],["morroco","morocco"],["mortage","mortgage"],["morter","mortar"],["moslty","mostly"],["mostlky","mostly"],["mosture","moisture"],["mosty","mostly"],["moteef","motif"],["moteefs","motifs"],["moteur","motor"],["moteured","motored"],["moteuring","motoring"],["moteurs","motors"],["mothing","nothing"],["motiviated","motivated"],["motiviation","motivation"],["motononic","monotonic"],["motoroloa","motorola"],["moudle","module"],["moudule","module"],["mountian","mountain"],["mountpiont","mountpoint"],["mountpionts","mountpoints"],["mouspointer","mousepointer"],["moutn","mount"],["moutned","mounted"],["moutning","mounting"],["moutnpoint","mountpoint"],["moutnpoints","mountpoints"],["moutns","mounts"],["mouvement","movement"],["mouvements","movements"],["movebackwrd","movebackward"],["moveble","movable"],["movemement","movement"],["movemements","movements"],["movememnt","movement"],["movememnts","movements"],["movememt","movement"],["movememts","movements"],["movemet","movement"],["movemets","movements"],["movemment","movement"],["movemments","movements"],["movemnet","movement"],["movemnets","movements"],["movemnt","movement"],["movemnts","movements"],["movment","movement"],["moziila","Mozilla"],["mozila","Mozilla"],["mozzilla","mozilla"],["mroe","more"],["msbild","MSBuild"],["msbilds","MSBuild's"],["msbuid","MSBuild"],["msbuids","MSBuild's"],["msbuld","MSBuild"],["msbulds","MSBuild's"],["msbulid","MSBuild"],["msbulids","MSBuild's"],["mssing","missing"],["msssge","message"],["mthod","method"],["mtuually","mutually"],["mucuous","mucous"],["muder","murder"],["mudering","murdering"],["mudule","module"],["mudules","modules"],["muext","mutex"],["muiltiple","multiple"],["muiltiples","multiples"],["muliple","multiple"],["muliples","multiples"],["mulithread","multithread"],["mulitiplier","multiplier"],["mulitipliers","multipliers"],["mulitpart","multipart"],["mulitpath","multipath"],["mulitple","multiple"],["mulitplication","multiplication"],["mulitplicative","multiplicative"],["mulitplied","multiplied"],["mulitplier","multiplier"],["mulitpliers","multipliers"],["mulitply","multiply"],["multi-dimenional","multi-dimensional"],["multi-dimenionsal","multi-dimensional"],["multi-langual","multi-lingual"],["multi-presistion","multi-precision"],["multi-threded","multi-threaded"],["multible","multiple"],["multibye","multibyte"],["multicat","multicast"],["multicultralism","multiculturalism"],["multidimenional","multi-dimensional"],["multidimenionsal","multi-dimensional"],["multidimensinal","multidimensional"],["multidimension","multidimensional"],["multidimensionnal","multidimensional"],["multidimentionnal","multidimensional"],["multiecast","multicast"],["multifuction","multifunction"],["multilangual","multilingual"],["multile","multiple"],["multilpe","multiple"],["multipe","multiple"],["multipes","multiples"],["multipiler","multiplier"],["multipilers","multipliers"],["multipled","multiplied"],["multiplers","multipliers"],["multipliciaton","multiplication"],["multiplicites","multiplicities"],["multiplicty","multiplicity"],["multiplikation","multiplication"],["multipling","multiplying"],["multipllication","multiplication"],["multiplyed","multiplied"],["multipresistion","multiprecision"],["multipul","multiple"],["multipy","multiply"],["multipyling","multiplying"],["multithreded","multithreaded"],["multitute","multitude"],["multivriate","multivariate"],["multixsite","multisite"],["multline","multiline"],["multliple","multiple"],["multliples","multiples"],["multliplied","multiplied"],["multliplier","multiplier"],["multlipliers","multipliers"],["multliplies","multiplies"],["multliply","multiply"],["multliplying","multiplying"],["multple","multiple"],["multples","multiples"],["multplied","multiplied"],["multplier","multiplier"],["multpliers","multipliers"],["multplies","multiplies"],["multply","multiply"],["multplying","multiplying"],["multy","multi"],["multy-thread","multithread"],["mumber","number"],["mumbers","numbers"],["munbers","numbers"],["muncipalities","municipalities"],["muncipality","municipality"],["municiple","municipal"],["munnicipality","municipality"],["munute","minute"],["murr","myrrh"],["muscial","musical"],["muscician","musician"],["muscicians","musicians"],["musn't","mustn't"],["must't","mustn't"],["mustator","mutator"],["muste","must"],["mutablity","mutability"],["mutbale","mutable"],["mutch","much"],["mutches","matches"],["mutecies","mutexes"],["mutexs","mutexes"],["muti","multi"],["muticast","multicast"],["mutices","mutexes"],["mutilcast","multicast"],["mutiliated","mutilated"],["mutimarked","multimarked"],["mutipath","multipath"],["mutiple","multiple"],["mutiply","multiply"],["mutli","multi"],["mutli-threaded","multi-threaded"],["mutlipart","multipart"],["mutliple","multiple"],["mutliples","multiples"],["mutliplication","multiplication"],["mutliplicites","multiplicities"],["mutliplier","multiplier"],["mutlipliers","multipliers"],["mutliply","multiply"],["mutully","mutually"],["mutux","mutex"],["mutuxes","mutexes"],["mutuxs","mutexes"],["muyst","must"],["myabe","maybe"],["mybe","maybe"],["myitereator","myiterator"],["myraid","myriad"],["mysef","myself"],["mysefl","myself"],["mysekf","myself"],["myselfe","myself"],["myselfes","myself"],["myselv","myself"],["myselve","myself"],["myselves","myself"],["myslef","myself"],["mysogynist","misogynist"],["mysogyny","misogyny"],["mysterous","mysterious"],["mystql","mysql"],["mystrow","maestro"],["mystrows","maestros"],["Mythraic","Mithraic"],["myu","my"],["nadly","badly"],["nagative","negative"],["nagatively","negatively"],["nagatives","negatives"],["nagivation","navigation"],["naieve","naive"],["nam","name"],["namaed","named"],["namaes","names"],["nameing","naming"],["namemespace","namespace"],["namepace","namespace"],["namepsace","namespace"],["namepsaces","namespaces"],["namesapce","namespace"],["namesapced","namespaced"],["namesapces","namespaces"],["namess","names"],["namesspaces","namespaces"],["namme","name"],["namne","name"],["namned","named"],["namnes","names"],["namnespace","namespace"],["namnespaces","namespaces"],["nams","names"],["nane","name"],["nanosencond","nanosecond"],["nanosenconds","nanoseconds"],["nanoseond","nanosecond"],["nanoseonds","nanoseconds"],["Naploeon","Napoleon"],["Napolean","Napoleon"],["Napoleonian","Napoleonic"],["nasted","nested"],["nasting","nesting"],["nastly","nasty"],["nastyness","nastiness"],["natched","matched"],["natches","matches"],["nativelyx","natively"],["natrual","natural"],["naturaly","naturally"],["naturely","naturally"],["naturual","natural"],["naturually","naturally"],["natvigation","navigation"],["navagate","navigate"],["navagating","navigating"],["navagation","navigation"],["navagitation","navigation"],["naviagte","navigate"],["naviagted","navigated"],["naviagtes","navigates"],["naviagting","navigating"],["naviagtion","navigation"],["navitvely","natively"],["navtive","native"],["navtives","natives"],["naxima","maxima"],["naximal","maximal"],["naximum","maximum"],["Nazereth","Nazareth"],["nclude","include"],["ndoe","node"],["ndoes","nodes"],["neady","needy"],["neagtive","negative"],["neares","nearest"],["nearset","nearest"],["necassery","necessary"],["necassry","necessary"],["necause","because"],["neccecarily","necessarily"],["neccecary","necessary"],["neccesarily","necessarily"],["neccesary","necessary"],["neccessarily","necessarily"],["neccessarry","necessary"],["neccessary","necessary"],["neccessities","necessities"],["neccessity","necessity"],["neccisary","necessary"],["neccsessary","necessary"],["necesarily","necessarily"],["necesarrily","necessarily"],["necesarry","necessary"],["necesary","necessary"],["necessaery","necessary"],["necessairly","necessarily"],["necessar","necessary"],["necessarilly","necessarily"],["necessarly","necessarily"],["necessarry","necessary"],["necessaryly","necessarily"],["necessay","necessary"],["necesserily","necessarily"],["necessery","necessary"],["necessesary","necessary"],["necessiate","necessitate"],["nechanism","mechanism"],["necssary","necessary"],["nedd","need"],["nedded","needed"],["neded","needed"],["nedia","media"],["nedium","medium"],["nediums","mediums"],["nedle","needle"],["neds","needs"],["needeed","needed"],["neeed","need"],["neeeded","needed"],["neeeding","needing"],["neeedle","needle"],["neeedn't","needn't"],["neeeds","needs"],["nees","needs"],["neesd","needs"],["neesds","needs"],["neested","nested"],["neesting","nesting"],["negaive","negative"],["negarive","negative"],["negatiotiable","negotiable"],["negatiotiate","negotiate"],["negatiotiated","negotiated"],["negatiotiates","negotiates"],["negatiotiating","negotiating"],["negatiotiation","negotiation"],["negatiotiations","negotiations"],["negatiotiator","negotiator"],["negatiotiators","negotiators"],["negativ","negative"],["negatve","negative"],["negible","negligible"],["negitiable","negotiable"],["negitiate","negotiate"],["negitiated","negotiated"],["negitiates","negotiates"],["negitiating","negotiating"],["negitiation","negotiation"],["negitiations","negotiations"],["negitiator","negotiator"],["negitiators","negotiators"],["negitive","negative"],["neglible","negligible"],["negligable","negligible"],["negligble","negligible"],["negoable","negotiable"],["negoate","negotiate"],["negoated","negotiated"],["negoates","negotiates"],["negoatiable","negotiable"],["negoatiate","negotiate"],["negoatiated","negotiated"],["negoatiates","negotiates"],["negoatiating","negotiating"],["negoatiation","negotiation"],["negoatiations","negotiations"],["negoatiator","negotiator"],["negoatiators","negotiators"],["negoating","negotiating"],["negoation","negotiation"],["negoations","negotiations"],["negoator","negotiator"],["negoators","negotiators"],["negociable","negotiable"],["negociate","negotiate"],["negociated","negotiated"],["negociates","negotiates"],["negociating","negotiating"],["negociation","negotiation"],["negociations","negotiations"],["negociator","negotiator"],["negociators","negotiators"],["negogtiable","negotiable"],["negogtiate","negotiate"],["negogtiated","negotiated"],["negogtiates","negotiates"],["negogtiating","negotiating"],["negogtiation","negotiation"],["negogtiations","negotiations"],["negogtiator","negotiator"],["negogtiators","negotiators"],["negoitable","negotiable"],["negoitate","negotiate"],["negoitated","negotiated"],["negoitates","negotiates"],["negoitating","negotiating"],["negoitation","negotiation"],["negoitations","negotiations"],["negoitator","negotiator"],["negoitators","negotiators"],["negoptionsotiable","negotiable"],["negoptionsotiate","negotiate"],["negoptionsotiated","negotiated"],["negoptionsotiates","negotiates"],["negoptionsotiating","negotiating"],["negoptionsotiation","negotiation"],["negoptionsotiations","negotiations"],["negoptionsotiator","negotiator"],["negoptionsotiators","negotiators"],["negosiable","negotiable"],["negosiate","negotiate"],["negosiated","negotiated"],["negosiates","negotiates"],["negosiating","negotiating"],["negosiation","negotiation"],["negosiations","negotiations"],["negosiator","negotiator"],["negosiators","negotiators"],["negotable","negotiable"],["negotaiable","negotiable"],["negotaiate","negotiate"],["negotaiated","negotiated"],["negotaiates","negotiates"],["negotaiating","negotiating"],["negotaiation","negotiation"],["negotaiations","negotiations"],["negotaiator","negotiator"],["negotaiators","negotiators"],["negotaible","negotiable"],["negotaite","negotiate"],["negotaited","negotiated"],["negotaites","negotiates"],["negotaiting","negotiating"],["negotaition","negotiation"],["negotaitions","negotiations"],["negotaitor","negotiator"],["negotaitors","negotiators"],["negotate","negotiate"],["negotated","negotiated"],["negotates","negotiates"],["negotatiable","negotiable"],["negotatiate","negotiate"],["negotatiated","negotiated"],["negotatiates","negotiates"],["negotatiating","negotiating"],["negotatiation","negotiation"],["negotatiations","negotiations"],["negotatiator","negotiator"],["negotatiators","negotiators"],["negotatible","negotiable"],["negotatie","negotiate"],["negotatied","negotiated"],["negotaties","negotiates"],["negotating","negotiating"],["negotation","negotiation"],["negotations","negotiations"],["negotatior","negotiator"],["negotatiors","negotiators"],["negotator","negotiator"],["negotators","negotiators"],["negothiable","negotiable"],["negothiate","negotiate"],["negothiated","negotiated"],["negothiates","negotiates"],["negothiating","negotiating"],["negothiation","negotiation"],["negothiations","negotiations"],["negothiator","negotiator"],["negothiators","negotiators"],["negotible","negotiable"],["negoticable","negotiable"],["negoticate","negotiate"],["negoticated","negotiated"],["negoticates","negotiates"],["negoticating","negotiating"],["negotication","negotiation"],["negotications","negotiations"],["negoticator","negotiator"],["negoticators","negotiators"],["negotinate","negotiate"],["negotioable","negotiable"],["negotioate","negotiate"],["negotioated","negotiated"],["negotioates","negotiates"],["negotioating","negotiating"],["negotioation","negotiation"],["negotioations","negotiations"],["negotioator","negotiator"],["negotioators","negotiators"],["negotioble","negotiable"],["negotion","negotiation"],["negotionable","negotiable"],["negotionate","negotiate"],["negotionated","negotiated"],["negotionates","negotiates"],["negotionating","negotiating"],["negotionation","negotiation"],["negotionations","negotiations"],["negotionator","negotiator"],["negotionators","negotiators"],["negotions","negotiations"],["negotiotable","negotiable"],["negotiotate","negotiate"],["negotiotated","negotiated"],["negotiotates","negotiates"],["negotiotating","negotiating"],["negotiotation","negotiation"],["negotiotations","negotiations"],["negotiotator","negotiator"],["negotiotators","negotiators"],["negotiote","negotiate"],["negotioted","negotiated"],["negotiotes","negotiates"],["negotioting","negotiating"],["negotiotion","negotiation"],["negotiotions","negotiations"],["negotiotor","negotiator"],["negotiotors","negotiators"],["negotitable","negotiable"],["negotitae","negotiate"],["negotitaed","negotiated"],["negotitaes","negotiates"],["negotitaing","negotiating"],["negotitaion","negotiation"],["negotitaions","negotiations"],["negotitaor","negotiator"],["negotitaors","negotiators"],["negotitate","negotiate"],["negotitated","negotiated"],["negotitates","negotiates"],["negotitating","negotiating"],["negotitation","negotiation"],["negotitations","negotiations"],["negotitator","negotiator"],["negotitators","negotiators"],["negotite","negotiate"],["negotited","negotiated"],["negotites","negotiates"],["negotiting","negotiating"],["negotition","negotiation"],["negotitions","negotiations"],["negotitor","negotiator"],["negotitors","negotiators"],["negoziable","negotiable"],["negoziate","negotiate"],["negoziated","negotiated"],["negoziates","negotiates"],["negoziating","negotiating"],["negoziation","negotiation"],["negoziations","negotiations"],["negoziator","negotiator"],["negoziators","negotiators"],["negtive","negative"],["neibhbors","neighbors"],["neibhbours","neighbours"],["neibor","neighbor"],["neiborhood","neighborhood"],["neiborhoods","neighborhoods"],["neibors","neighbors"],["neigbhor","neighbor"],["neigbhorhood","neighborhood"],["neigbhorhoods","neighborhoods"],["neigbhors","neighbors"],["neigbhour","neighbour"],["neigbhours","neighbours"],["neigbor","neighbor"],["neigborhood","neighborhood"],["neigboring","neighboring"],["neigbors","neighbors"],["neigbourhood","neighbourhood"],["neighbar","neighbor"],["neighbarhood","neighborhood"],["neighbarhoods","neighborhoods"],["neighbaring","neighboring"],["neighbars","neighbors"],["neighbbor","neighbor"],["neighbborhood","neighborhood"],["neighbborhoods","neighborhoods"],["neighbboring","neighboring"],["neighbbors","neighbors"],["neighbeard","neighborhood"],["neighbeards","neighborhoods"],["neighbehood","neighborhood"],["neighbehoods","neighborhoods"],["neighbeing","neighboring"],["neighbeod","neighborhood"],["neighbeods","neighborhoods"],["neighbeor","neighbor"],["neighbeordhood","neighborhood"],["neighbeordhoods","neighborhoods"],["neighbeorhod","neighborhood"],["neighbeorhods","neighborhoods"],["neighbeorhood","neighborhood"],["neighbeorhoods","neighborhoods"],["neighbeors","neighbors"],["neighber","neighbor"],["neighbergh","neighbor"],["neighberghs","neighbors"],["neighberhhod","neighborhood"],["neighberhhods","neighborhoods"],["neighberhhood","neighborhood"],["neighberhhoods","neighborhoods"],["neighberhing","neighboring"],["neighberhod","neighborhood"],["neighberhodd","neighborhood"],["neighberhodds","neighborhoods"],["neighberhods","neighborhoods"],["neighberhood","neighborhood"],["neighberhooding","neighboring"],["neighberhoods","neighborhoods"],["neighberhoof","neighborhood"],["neighberhoofs","neighborhoods"],["neighberhoood","neighborhood"],["neighberhooods","neighborhoods"],["neighberhoor","neighbor"],["neighberhoors","neighbors"],["neighberhoud","neighborhood"],["neighberhouds","neighborhoods"],["neighbering","neighboring"],["neighbers","neighbors"],["neighbes","neighbors"],["neighbet","neighbor"],["neighbethood","neighborhood"],["neighbethoods","neighborhoods"],["neighbets","neighbors"],["neighbeuing","neighbouring"],["neighbeurgh","neighbour"],["neighbeurghs","neighbours"],["neighbeurhing","neighbouring"],["neighbeurhooding","neighbouring"],["neighbeurhoor","neighbour"],["neighbeurhoors","neighbours"],["neighbeus","neighbours"],["neighbeut","neighbour"],["neighbeuthood","neighbourhood"],["neighbeuthoods","neighbourhoods"],["neighbeuts","neighbours"],["neighbhor","neighbor"],["neighbhorhood","neighborhood"],["neighbhorhoods","neighborhoods"],["neighbhoring","neighboring"],["neighbhors","neighbors"],["neighboard","neighborhood"],["neighboards","neighborhoods"],["neighbohood","neighborhood"],["neighbohoods","neighborhoods"],["neighboing","neighboring"],["neighbood","neighborhood"],["neighboods","neighborhoods"],["neighboordhood","neighborhood"],["neighboordhoods","neighborhoods"],["neighboorhod","neighborhood"],["neighboorhods","neighborhoods"],["neighboorhood","neighborhood"],["neighboorhoods","neighborhoods"],["neighbooring","neighboring"],["neighborgh","neighbor"],["neighborghs","neighbors"],["neighborhhod","neighborhood"],["neighborhhods","neighborhoods"],["neighborhhood","neighborhood"],["neighborhhoods","neighborhoods"],["neighborhing","neighboring"],["neighborhod","neighborhood"],["neighborhodd","neighborhood"],["neighborhodds","neighborhoods"],["neighborhods","neighborhoods"],["neighborhooding","neighboring"],["neighborhoof","neighborhood"],["neighborhoofs","neighborhoods"],["neighborhoood","neighborhood"],["neighborhooods","neighborhoods"],["neighborhoor","neighbor"],["neighborhoors","neighbors"],["neighborhoud","neighborhood"],["neighborhouds","neighborhoods"],["neighbos","neighbors"],["neighbot","neighbor"],["neighbothood","neighborhood"],["neighbothoods","neighborhoods"],["neighbots","neighbors"],["neighbouing","neighbouring"],["neighbourgh","neighbour"],["neighbourghs","neighbours"],["neighbourhhod","neighbourhood"],["neighbourhhods","neighbourhoods"],["neighbourhhood","neighbourhood"],["neighbourhhoods","neighbourhoods"],["neighbourhing","neighbouring"],["neighbourhod","neighbourhood"],["neighbourhodd","neighbourhood"],["neighbourhodds","neighbourhoods"],["neighbourhods","neighbourhoods"],["neighbourhooding","neighbouring"],["neighbourhoof","neighbourhood"],["neighbourhoofs","neighbourhoods"],["neighbourhoood","neighbourhood"],["neighbourhooods","neighbourhoods"],["neighbourhoor","neighbour"],["neighbourhoors","neighbours"],["neighbourhoud","neighbourhood"],["neighbourhouds","neighbourhoods"],["neighbous","neighbours"],["neighbout","neighbour"],["neighbouthood","neighbourhood"],["neighbouthoods","neighbourhoods"],["neighbouts","neighbours"],["neighbr","neighbor"],["neighbrs","neighbors"],["neighbur","neighbor"],["neighburhood","neighborhood"],["neighburhoods","neighborhoods"],["neighburing","neighboring"],["neighburs","neighbors"],["neigher","neither"],["neighobr","neighbor"],["neighobrhood","neighborhood"],["neighobrhoods","neighborhoods"],["neighobring","neighboring"],["neighobrs","neighbors"],["neighor","neighbor"],["neighorhood","neighborhood"],["neighorhoods","neighborhoods"],["neighoring","neighboring"],["neighors","neighbors"],["neighour","neighbour"],["neighourhood","neighbourhood"],["neighourhoods","neighbourhoods"],["neighouring","neighbouring"],["neighours","neighbours"],["neighror","neighbour"],["neighrorhood","neighbourhood"],["neighrorhoods","neighbourhoods"],["neighroring","neighbouring"],["neighrors","neighbours"],["neighrour","neighbour"],["neighrourhood","neighbourhood"],["neighrourhoods","neighbourhoods"],["neighrouring","neighbouring"],["neighrours","neighbours"],["neight","neither"],["neightbor","neighbor"],["neightborhood","neighborhood"],["neightborhoods","neighborhoods"],["neightboring","neighboring"],["neightbors","neighbors"],["neightbour","neighbour"],["neightbourhood","neighbourhood"],["neightbourhoods","neighbourhoods"],["neightbouring","neighbouring"],["neightbours","neighbours"],["neighter","neither"],["neightobr","neighbor"],["neightobrhood","neighborhood"],["neightobrhoods","neighborhoods"],["neightobring","neighboring"],["neightobrs","neighbors"],["neiter","neither"],["nelink","netlink"],["nenviroment","environment"],["neolitic","neolithic"],["nerver","never"],["nescesaries","necessaries"],["nescesarily","necessarily"],["nescesarrily","necessarily"],["nescesarry","necessary"],["nescessarily","necessarily"],["nescessary","necessary"],["nesesarily","necessarily"],["nessary","necessary"],["nessasarily","necessarily"],["nessasary","necessary"],["nessecarilt","necessarily"],["nessecarily","necessarily"],["nessecarry","necessary"],["nessecary","necessary"],["nesseccarily","necessarily"],["nesseccary","necessary"],["nessesarily","necessarily"],["nessesary","necessary"],["nessessarily","necessarily"],["nessessary","necessary"],["nestin","nesting"],["nestwork","network"],["netacpe","netscape"],["netcape","netscape"],["nethods","methods"],["netiher","neither"],["netowrk","network"],["netowrks","networks"],["netscpe","netscape"],["netwplit","netsplit"],["netwrok","network"],["netwroked","networked"],["netwroks","networks"],["netwrork","network"],["neumeric","numeric"],["nevelope","envelope"],["nevelopes","envelopes"],["nevere","never"],["neveretheless","nevertheless"],["nevers","never"],["neverthless","nevertheless"],["newine","newline"],["newines","newlines"],["newletters","newsletters"],["nework","network"],["neworks","networks"],["newslines","newlines"],["newthon","newton"],["newtork","network"],["Newyorker","New Yorker"],["niear","near"],["niearest","nearest"],["niether","neither"],["nighbor","neighbor"],["nighborhood","neighborhood"],["nighboring","neighboring"],["nighlties","nightlies"],["nighlty","nightly"],["nightfa;;","nightfall"],["nightime","nighttime"],["nimutes","minutes"],["nineth","ninth"],["ninima","minima"],["ninimal","minimal"],["ninimum","minimum"],["ninjs","ninja"],["ninteenth","nineteenth"],["nither","neither"],["nknown","unknown"],["nkow","know"],["nkwo","know"],["nmae","name"],["nned","need"],["nneeded","needed"],["nnumber","number"],["no-overide","no-override"],["nodels","models"],["nodess","nodes"],["nodulated","modulated"],["nofified","notified"],["nofity","notify"],["nohypen","nohyphen"],["nomber","number"],["nombered","numbered"],["nombering","numbering"],["nombers","numbers"],["nomimal","nominal"],["non-alphanumunder","non-alphanumeric"],["non-asii","non-ascii"],["non-assiged","non-assigned"],["non-bloking","non-blocking"],["non-compleeted","non-completed"],["non-complient","non-compliant"],["non-corelated","non-correlated"],["non-existant","non-existent"],["non-exluded","non-excluded"],["non-indentended","non-indented"],["non-inmediate","non-immediate"],["non-inreractive","non-interactive"],["non-instnat","non-instant"],["non-meausure","non-measure"],["non-negatiotiable","non-negotiable"],["non-negatiotiated","non-negotiated"],["non-negativ","non-negative"],["non-negoable","non-negotiable"],["non-negoated","non-negotiated"],["non-negoatiable","non-negotiable"],["non-negoatiated","non-negotiated"],["non-negociable","non-negotiable"],["non-negociated","non-negotiated"],["non-negogtiable","non-negotiable"],["non-negogtiated","non-negotiated"],["non-negoitable","non-negotiable"],["non-negoitated","non-negotiated"],["non-negoptionsotiable","non-negotiable"],["non-negoptionsotiated","non-negotiated"],["non-negosiable","non-negotiable"],["non-negosiated","non-negotiated"],["non-negotable","non-negotiable"],["non-negotaiable","non-negotiable"],["non-negotaiated","non-negotiated"],["non-negotaible","non-negotiable"],["non-negotaited","non-negotiated"],["non-negotated","non-negotiated"],["non-negotatiable","non-negotiable"],["non-negotatiated","non-negotiated"],["non-negotatible","non-negotiable"],["non-negotatied","non-negotiated"],["non-negothiable","non-negotiable"],["non-negothiated","non-negotiated"],["non-negotible","non-negotiable"],["non-negoticable","non-negotiable"],["non-negoticated","non-negotiated"],["non-negotioable","non-negotiable"],["non-negotioated","non-negotiated"],["non-negotioble","non-negotiable"],["non-negotionable","non-negotiable"],["non-negotionated","non-negotiated"],["non-negotiotable","non-negotiable"],["non-negotiotated","non-negotiated"],["non-negotiote","non-negotiated"],["non-negotitable","non-negotiable"],["non-negotitaed","non-negotiated"],["non-negotitated","non-negotiated"],["non-negotited","non-negotiated"],["non-negoziable","non-negotiable"],["non-negoziated","non-negotiated"],["non-priviliged","non-privileged"],["non-referenced-counted","non-reference-counted"],["non-replacable","non-replaceable"],["non-replacalbe","non-replaceable"],["non-reproducable","non-reproducible"],["non-seperable","non-separable"],["non-trasparent","non-transparent"],["non-useful","useless"],["non-usefull","useless"],["non-virutal","non-virtual"],["nonbloking","non-blocking"],["noncombatents","noncombatants"],["noncontigous","non-contiguous"],["nonesense","nonsense"],["nonesensical","nonsensical"],["nonexistance","nonexistence"],["nonexistant","nonexistent"],["nonnegarive","nonnegative"],["nonneighboring","non-neighboring"],["nonsence","nonsense"],["nonsens","nonsense"],["nonseperable","non-separable"],["nonte","note"],["nontheless","nonetheless"],["noo","no"],["noone","no one"],["noralize","normalize"],["noralized","normalized"],["noramal","normal"],["noramalise","normalise"],["noramalised","normalised"],["noramalises","normalises"],["noramalising","normalising"],["noramalize","normalize"],["noramalized","normalized"],["noramalizes","normalizes"],["noramalizing","normalizing"],["noramals","normals"],["noraml","normal"],["norhern","northern"],["norifications","notifications"],["normailzation","normalization"],["normaized","normalized"],["normale","normal"],["normales","normals"],["normaly","normally"],["normalyl","normally"],["normalyly","normally"],["normalysed","normalised"],["normalyy","normally"],["normalyzation","normalization"],["normalyze","normalize"],["normalyzed","normalized"],["normlly","normally"],["normnal","normal"],["normol","normal"],["normolise","normalise"],["normolize","normalize"],["northen","northern"],["northereastern","northeastern"],["nortmally","normally"],["notabley","notably"],["notaion","notation"],["notaly","notably"],["notasion","notation"],["notatin","notation"],["noteable","notable"],["noteably","notably"],["noteboook","notebook"],["noteboooks","notebooks"],["noteriety","notoriety"],["notfication","notification"],["notfications","notifications"],["notfy","notify"],["noth","north"],["nothern","northern"],["nothign","nothing"],["nothigng","nothing"],["nothihg","nothing"],["nothin","nothing"],["nothind","nothing"],["nothink","nothing"],["noticable","noticeable"],["noticably","noticeably"],["notication","notification"],["notications","notifications"],["noticeing","noticing"],["noticiable","noticeable"],["noticible","noticeable"],["notifaction","notification"],["notifactions","notifications"],["notifcation","notification"],["notifcations","notifications"],["notifed","notified"],["notifer","notifier"],["notifes","notifies"],["notifiation","notification"],["notificaction","notification"],["notificaiton","notification"],["notificaitons","notifications"],["notificaton","notification"],["notificatons","notifications"],["notificiation","notification"],["notificiations","notifications"],["notifiy","notify"],["notifiying","notifying"],["notifycation","notification"],["notity","notify"],["notmalize","normalize"],["notmalized","normalized"],["notmutch","notmuch"],["notning","nothing"],["nott","not"],["nottaion","notation"],["nottaions","notations"],["notwhithstanding","notwithstanding"],["noveau","nouveau"],["novemeber","November"],["Novemer","November"],["Novermber","November"],["nowadys","nowadays"],["nowdays","nowadays"],["nowe","now"],["ntification","notification"],["nuber","number"],["nubering","numbering"],["nubmer","number"],["nubmers","numbers"],["nucular","nuclear"],["nuculear","nuclear"],["nuisanse","nuisance"],["nuissance","nuisance"],["nulk","null"],["Nullabour","Nullarbor"],["nulll","null"],["numbber","number"],["numbbered","numbered"],["numbbering","numbering"],["numbbers","numbers"],["numberal","numeral"],["numberals","numerals"],["numberic","numeric"],["numberous","numerous"],["numberr","number"],["numberred","numbered"],["numberring","numbering"],["numberrs","numbers"],["numberss","numbers"],["numbert","number"],["numbet","number"],["numbets","numbers"],["numbres","numbers"],["numearate","numerate"],["numearation","numeration"],["numeber","number"],["numebering","numbering"],["numebers","numbers"],["numebr","number"],["numebrs","numbers"],["numer","number"],["numeraotr","numerator"],["numerbering","numbering"],["numercial","numerical"],["numercially","numerically"],["numering","numbering"],["numers","numbers"],["nummber","number"],["nummbers","numbers"],["nummeric","numeric"],["numnber","number"],["numnbered","numbered"],["numnbering","numbering"],["numnbers","numbers"],["numner","number"],["numners","numbers"],["numver","number"],["numvers","numbers"],["nunber","number"],["nunbers","numbers"],["Nuremburg","Nuremberg"],["nusance","nuisance"],["nutritent","nutrient"],["nutritents","nutrients"],["nuturing","nurturing"],["nwe","new"],["nwo","now"],["o'caml","OCaml"],["oaram","param"],["obay","obey"],["obect","object"],["obediance","obedience"],["obediant","obedient"],["obejct","object"],["obejcted","objected"],["obejction","objection"],["obejctions","objections"],["obejctive","objective"],["obejctively","objectively"],["obejctives","objectives"],["obejcts","objects"],["obeject","object"],["obejection","objection"],["obejects","objects"],["oberflow","overflow"],["oberflowed","overflowed"],["oberflowing","overflowing"],["oberflows","overflows"],["oberv","observe"],["obervant","observant"],["obervation","observation"],["obervations","observations"],["oberve","observe"],["oberved","observed"],["oberver","observer"],["obervers","observers"],["oberves","observes"],["oberving","observing"],["obervs","observes"],["obeservation","observation"],["obeservations","observations"],["obeserve","observe"],["obeserved","observed"],["obeserver","observer"],["obeservers","observers"],["obeserves","observes"],["obeserving","observing"],["obession","obsession"],["obessions","obsessions"],["obgect","object"],["obgects","objects"],["obhect","object"],["obhectification","objectification"],["obhectifies","objectifies"],["obhectify","objectify"],["obhectifying","objectifying"],["obhecting","objecting"],["obhection","objection"],["obhects","objects"],["obious","obvious"],["obiously","obviously"],["obivous","obvious"],["obivously","obviously"],["objec","object"],["objecs","objects"],["objectss","objects"],["objejct","object"],["objekt","object"],["objet","object"],["objetc","object"],["objetcs","objects"],["objets","objects"],["objtain","obtain"],["objtained","obtained"],["objtains","obtains"],["objump","objdump"],["oblitque","oblique"],["obnject","object"],["obscur","obscure"],["obselete","obsolete"],["obseravtion","observation"],["obseravtions","observations"],["observ","observe"],["observered","observed"],["obsevrer","observer"],["obsevrers","observers"],["obsolate","obsolete"],["obsolesence","obsolescence"],["obsolite","obsolete"],["obsolited","obsoleted"],["obsolte","obsolete"],["obsolted","obsoleted"],["obssessed","obsessed"],["obstacal","obstacle"],["obstancles","obstacles"],["obstruced","obstructed"],["obsure","obscure"],["obtaiend","obtained"],["obtaiens","obtains"],["obtainig","obtaining"],["obtaion","obtain"],["obtaioned","obtained"],["obtaions","obtains"],["obtrain","obtain"],["obtrained","obtained"],["obtrains","obtains"],["obusing","abusing"],["obvioulsy","obviously"],["obvisious","obvious"],["obvisous","obvious"],["obvisously","obviously"],["obyect","object"],["obyekt","object"],["ocasion","occasion"],["ocasional","occasional"],["ocasionally","occasionally"],["ocasionaly","occasionally"],["ocasioned","occasioned"],["ocasions","occasions"],["ocassion","occasion"],["ocassional","occasional"],["ocassionally","occasionally"],["ocassionaly","occasionally"],["ocassioned","occasioned"],["ocassions","occasions"],["occaisionally","occasionally"],["occaison","occasion"],["occasinal","occasional"],["occasinally","occasionally"],["occasioanlly","occasionally"],["occasionaly","occasionally"],["occassion","occasion"],["occassional","occasional"],["occassionally","occasionally"],["occassionaly","occasionally"],["occassioned","occasioned"],["occassions","occasions"],["occational","occasional"],["occationally","occasionally"],["occcur","occur"],["occcured","occurred"],["occcurs","occurs"],["occour","occur"],["occoured","occurred"],["occouring","occurring"],["occourring","occurring"],["occours","occurs"],["occrrance","occurrence"],["occrrances","occurrences"],["occrred","occurred"],["occrring","occurring"],["occsionally","occasionally"],["occucence","occurrence"],["occucences","occurrences"],["occulusion","occlusion"],["occuped","occupied"],["occupided","occupied"],["occuracy","accuracy"],["occurance","occurrence"],["occurances","occurrences"],["occurately","accurately"],["occurded","occurred"],["occured","occurred"],["occurence","occurrence"],["occurences","occurrences"],["occures","occurs"],["occuring","occurring"],["occurr","occur"],["occurrance","occurrence"],["occurrances","occurrences"],["occurrencs","occurrences"],["occurrs","occurs"],["oclock","o'clock"],["ocntext","context"],["ocorrence","occurrence"],["ocorrences","occurrences"],["octect","octet"],["octects","octets"],["octohedra","octahedra"],["octohedral","octahedral"],["octohedron","octahedron"],["ocuntries","countries"],["ocuntry","country"],["ocupied","occupied"],["ocupies","occupies"],["ocupy","occupy"],["ocupying","occupying"],["ocur","occur"],["ocurr","occur"],["ocurrance","occurrence"],["ocurred","occurred"],["ocurrence","occurrence"],["ocurrences","occurrences"],["ocurring","occurring"],["ocurrred","occurred"],["ocurrs","occurs"],["odly","oddly"],["ody","body"],["oen","one"],["ofcource","of course"],["offcers","officers"],["offcial","official"],["offcially","officially"],["offcials","officials"],["offerd","offered"],["offereings","offerings"],["offest","offset"],["offests","offsets"],["offfence","offence"],["offfences","offences"],["offfense","offense"],["offfenses","offenses"],["offfset","offset"],["offfsets","offsets"],["offic","office"],["offical","official"],["offically","officially"],["officals","officials"],["officaly","officially"],["officeal","official"],["officeally","officially"],["officeals","officials"],["officealy","officially"],["officialy","officially"],["offloded","offloaded"],["offred","offered"],["offsence","offence"],["offsense","offense"],["offsenses","offenses"],["offser","offset"],["offseted","offsetted"],["offseting","offsetting"],["offsetp","offset"],["offsett","offset"],["offstets","offsets"],["offten","often"],["oficial","official"],["oficially","officially"],["ofmodule","of module"],["ofo","of"],["ofrom","from"],["ofsetted","offsetted"],["ofsset","offset"],["oftenly","often"],["ofthe","of the"],["oherwise","otherwise"],["ohter","other"],["ohters","others"],["ohterwise","otherwise"],["oigin","origin"],["oiginal","original"],["oiginally","originally"],["oiginals","originals"],["oiginating","originating"],["oigins","origins"],["ois","is"],["ojbect","object"],["oje","one"],["oject","object"],["ojection","objection"],["ojective","objective"],["ojects","objects"],["ojekts","objects"],["okat","okay"],["oldes","oldest"],["olny","only"],["olt","old"],["olther","other"],["oly","only"],["omision","omission"],["omited","omitted"],["omiting","omitting"],["omitt","omit"],["omlette","omelette"],["ommision","omission"],["ommission","omission"],["ommit","omit"],["ommited","omitted"],["ommiting","omitting"],["ommits","omits"],["ommitted","omitted"],["ommitting","omitting"],["omniverous","omnivorous"],["omniverously","omnivorously"],["omplementaion","implementation"],["omplementation","implementation"],["omre","more"],["onchage","onchange"],["ond","one"],["one-dimenional","one-dimensional"],["one-dimenionsal","one-dimensional"],["onece","once"],["onedimenional","one-dimensional"],["onedimenionsal","one-dimensional"],["oneliners","one-liners"],["oneyway","oneway"],["ongly","only"],["onl","only"],["onliene","online"],["onlly","only"],["onlye","only"],["onlyonce","only once"],["onoly","only"],["onother","another"],["ons","owns"],["onself","oneself"],["ontain","contain"],["ontained","contained"],["ontainer","container"],["ontainers","containers"],["ontainging","containing"],["ontaining","containing"],["ontainor","container"],["ontainors","containers"],["ontains","contains"],["ontext","context"],["onthe","on the"],["ontop","on top"],["ontrolled","controlled"],["onw","own"],["onwed","owned"],["onwer","owner"],["onwership","ownership"],["onwing","owning"],["onws","owns"],["onyl","only"],["oommits","commits"],["ooutput","output"],["ooutputs","outputs"],["opactity","opacity"],["opactiy","opacity"],["opacy","opacity"],["opague","opaque"],["opatque","opaque"],["opbject","object"],["opbjective","objective"],["opbjects","objects"],["opeaaration","operation"],["opeaarations","operations"],["opeabcration","operation"],["opeabcrations","operations"],["opearand","operand"],["opearands","operands"],["opearate","operate"],["opearates","operates"],["opearating","operating"],["opearation","operation"],["opearations","operations"],["opearatios","operations"],["opearator","operator"],["opearators","operators"],["opearion","operation"],["opearions","operations"],["opearios","operations"],["opeariton","operation"],["opearitons","operations"],["opearitos","operations"],["opearnd","operand"],["opearnds","operands"],["opearor","operator"],["opearors","operators"],["opearte","operate"],["opearted","operated"],["opeartes","operates"],["opearting","operating"],["opeartion","operation"],["opeartions","operations"],["opeartios","operations"],["opeartor","operator"],["opeartors","operators"],["opeate","operate"],["opeates","operates"],["opeation","operation"],["opeational","operational"],["opeations","operations"],["opeatios","operations"],["opeator","operator"],["opeators","operators"],["opeatror","operator"],["opeatrors","operators"],["opeg","open"],["opeging","opening"],["opeing","opening"],["opeinging","opening"],["opeings","openings"],["opem","open"],["opemed","opened"],["opemess","openness"],["opeming","opening"],["opems","opens"],["openbrower","openbrowser"],["opended","opened"],["openeing","opening"],["openend","opened"],["openened","opened"],["openening","opening"],["openess","openness"],["openin","opening"],["openned","opened"],["openning","opening"],["operaand","operand"],["operaands","operands"],["operaion","operation"],["operaions","operations"],["operaiton","operation"],["operandes","operands"],["operaror","operator"],["operatation","operation"],["operatations","operations"],["operater","operator"],["operatings","operating"],["operatio","operation"],["operatione","operation"],["operatior","operator"],["operatng","operating"],["operato","operator"],["operaton","operation"],["operatons","operations"],["operattion","operation"],["operattions","operations"],["opereation","operation"],["opertaion","operation"],["opertaions","operations"],["opertion","operation"],["opertional","operational"],["opertions","operations"],["opertor","operator"],["opertors","operators"],["opetional","optional"],["ophan","orphan"],["ophtalmology","ophthalmology"],["opion","option"],["opionally","optionally"],["opions","options"],["opitionally","optionally"],["opiton","option"],["opitons","options"],["opject","object"],["opjected","objected"],["opjecteing","objecting"],["opjectification","objectification"],["opjectifications","objectifications"],["opjectified","objectified"],["opjecting","objecting"],["opjection","objection"],["opjections","objections"],["opjective","objective"],["opjectively","objectively"],["opjects","objects"],["opne","open"],["opned","opened"],["opnegroup","opengroup"],["opnssl","openssl"],["oponent","opponent"],["oportunity","opportunity"],["opose","oppose"],["oposed","opposed"],["oposite","opposite"],["oposition","opposition"],["oppenly","openly"],["opperate","operate"],["opperated","operated"],["opperates","operates"],["opperation","operation"],["opperational","operational"],["opperations","operations"],["oppertunist","opportunist"],["oppertunities","opportunities"],["oppertunity","opportunity"],["oppinion","opinion"],["oppinions","opinions"],["opponant","opponent"],["oppononent","opponent"],["opportunisticly","opportunistically"],["opportunistly","opportunistically"],["opportunties","opportunities"],["oppositition","opposition"],["oppossed","opposed"],["opprotunity","opportunity"],["opproximate","approximate"],["opps","oops"],["oppsofite","opposite"],["oppurtunity","opportunity"],["opration","operation"],["oprations","operations"],["opreating","operating"],["opreation","operation"],["opreations","operations"],["opression","oppression"],["opressive","oppressive"],["oprimization","optimization"],["oprimizations","optimizations"],["oprimize","optimize"],["oprimized","optimized"],["oprimizes","optimizes"],["optain","obtain"],["optained","obtained"],["optains","obtains"],["optaionl","optional"],["optening","opening"],["optet","opted"],["opthalmic","ophthalmic"],["opthalmologist","ophthalmologist"],["opthalmology","ophthalmology"],["opthamologist","ophthalmologist"],["optiional","optional"],["optimasation","optimization"],["optimazation","optimization"],["optimial","optimal"],["optimiality","optimality"],["optimisim","optimism"],["optimisitc","optimistic"],["optimisitic","optimistic"],["optimissm","optimism"],["optimitation","optimization"],["optimizaing","optimizing"],["optimizaton","optimization"],["optimizier","optimizer"],["optimiztion","optimization"],["optimiztions","optimizations"],["optimsitic","optimistic"],["optimyze","optimize"],["optimze","optimize"],["optimzie","optimize"],["optin","option"],["optinal","optional"],["optinally","optionally"],["optins","options"],["optio","option"],["optioanl","optional"],["optioin","option"],["optioinal","optional"],["optioins","options"],["optionalliy","optionally"],["optionallly","optionally"],["optionaly","optionally"],["optionel","optional"],["optiones","options"],["optionial","optional"],["optionn","option"],["optionnal","optional"],["optionnally","optionally"],["optionnaly","optionally"],["optionss","options"],["optios","options"],["optismied","optimised"],["optizmied","optimized"],["optmisation","optimisation"],["optmisations","optimisations"],["optmization","optimization"],["optmizations","optimizations"],["optmize","optimize"],["optmized","optimized"],["optoin","option"],["optoins","options"],["optomism","optimism"],["opton","option"],["optonal","optional"],["optonally","optionally"],["optons","options"],["opyion","option"],["opyions","options"],["orcale","oracle"],["orded","ordered"],["orderd","ordered"],["ordert","ordered"],["ording","ordering"],["ordner","order"],["orede","order"],["oredes","orders"],["oreding","ordering"],["oredred","ordered"],["orgamise","organise"],["organim","organism"],["organisaion","organisation"],["organisaions","organisations"],["organistion","organisation"],["organistions","organisations"],["organizaion","organization"],["organizaions","organizations"],["organiztion","organization"],["organiztions","organizations"],["organsiation","organisation"],["organsiations","organisations"],["organsied","organised"],["organsier","organiser"],["organsiers","organisers"],["organsies","organises"],["organsiing","organising"],["organziation","organization"],["organziations","organizations"],["organzied","organized"],["organzier","organizer"],["organziers","organizers"],["organzies","organizes"],["organziing","organizing"],["orgiginal","original"],["orgiginally","originally"],["orgiginals","originals"],["orginal","original"],["orginally","originally"],["orginals","originals"],["orginate","originate"],["orginated","originated"],["orginates","originates"],["orginating","originating"],["orginial","original"],["orginially","originally"],["orginials","originals"],["orginiate","originate"],["orginiated","originated"],["orginiates","originates"],["orgininal","original"],["orgininals","originals"],["orginisation","organisation"],["orginisations","organisations"],["orginised","organised"],["orginization","organization"],["orginizations","organizations"],["orginized","organized"],["orginx","originx"],["orginy","originy"],["orhpan","orphan"],["oriant","orient"],["oriantate","orientate"],["oriantated","orientated"],["oriantation","orientation"],["oridinarily","ordinarily"],["orieation","orientation"],["orieations","orientations"],["orienatate","orientate"],["orienatated","orientated"],["orienatation","orientation"],["orienation","orientation"],["orientaion","orientation"],["orientatied","orientated"],["oriente","oriented"],["orientiation","orientation"],["orientied","oriented"],["orientned","oriented"],["orietation","orientation"],["orietations","orientations"],["origanaly","originally"],["origial","original"],["origially","originally"],["origianal","original"],["origianally","originally"],["origianaly","originally"],["origianl","original"],["origianls","originals"],["origigin","origin"],["origiginal","original"],["origiginally","originally"],["origiginals","originals"],["originaly","originally"],["originial","original"],["originially","originally"],["originiated","originated"],["originiating","originating"],["origininal","original"],["origininate","originate"],["origininated","originated"],["origininates","originates"],["origininating","originating"],["origining","originating"],["originnally","originally"],["origion","origin"],["origional","original"],["origionally","originally"],["orign","origin"],["orignal","original"],["orignally","originally"],["orignate","originate"],["orignated","originated"],["orignates","originates"],["orignial","original"],["orignially","originally"],["origninal","original"],["oringal","original"],["oringally","originally"],["orpan","orphan"],["orpanage","orphanage"],["orpaned","orphaned"],["orpans","orphans"],["orriginal","original"],["orthagnal","orthogonal"],["orthagonal","orthogonal"],["orthagonalize","orthogonalize"],["orthoganal","orthogonal"],["orthoganalize","orthogonalize"],["orthognal","orthogonal"],["orthonormalizatin","orthonormalization"],["ortogonal","orthogonal"],["ortogonality","orthogonality"],["osbscure","obscure"],["osciallator","oscillator"],["oscilate","oscillate"],["oscilated","oscillated"],["oscilating","oscillating"],["oscilator","oscillator"],["oscilliscope","oscilloscope"],["oscilliscopes","oscilloscopes"],["osffset","offset"],["osffsets","offsets"],["osffsetting","offsetting"],["osicllations","oscillations"],["otain","obtain"],["otained","obtained"],["otains","obtains"],["otehr","other"],["otehrwice","otherwise"],["otehrwise","otherwise"],["otehrwize","otherwise"],["oterwice","otherwise"],["oterwise","otherwise"],["oterwize","otherwise"],["othe","other"],["othere","other"],["otherewise","otherwise"],["otherise","otherwise"],["otheriwse","otherwise"],["otherwaise","otherwise"],["otherways","otherwise"],["otherweis","otherwise"],["otherweise","otherwise"],["otherwhere","elsewhere"],["otherwhile","otherwise"],["otherwhise","otherwise"],["otherwice","otherwise"],["otherwide","otherwise"],["otherwis","otherwise"],["otherwize","otherwise"],["otherwordly","otherworldly"],["otherwose","otherwise"],["otherwrite","overwrite"],["otherws","otherwise"],["otherwse","otherwise"],["otherwsie","otherwise"],["otherwsise","otherwise"],["otherwuise","otherwise"],["otherwwise","otherwise"],["otherwyse","otherwise"],["othewice","otherwise"],["othewise","otherwise"],["othewize","otherwise"],["otho","otoh"],["othographic","orthographic"],["othwerise","otherwise"],["othwerwise","otherwise"],["othwhise","otherwise"],["otification","notification"],["otiginal","original"],["otion","option"],["otionally","optionally"],["otions","options"],["otpion","option"],["otpions","options"],["otput","output"],["otu","out"],["oublisher","publisher"],["ouer","outer"],["ouevre","oeuvre"],["oultinenodes","outlinenodes"],["oultiner","outliner"],["oultline","outline"],["oultlines","outlines"],["ountline","outline"],["ouptut","output"],["ouptuted","outputted"],["ouptuting","outputting"],["ouptuts","outputs"],["ouput","output"],["ouputarea","outputarea"],["ouputs","outputs"],["ouputted","outputted"],["ouputting","outputting"],["ourselfes","ourselves"],["ourselfs","ourselves"],["ourselvs","ourselves"],["ouside","outside"],["oustanding","outstanding"],["oustide","outside"],["outbut","output"],["outbuts","outputs"],["outgoign","outgoing"],["outisde","outside"],["outllook","outlook"],["outoign","outgoing"],["outout","output"],["outperfoem","outperform"],["outperfoeming","outperforming"],["outperfom","outperform"],["outperfome","outperform"],["outperfomeing","outperforming"],["outperfoming","outperforming"],["outperfomr","outperform"],["outperfomring","outperforming"],["outpout","output"],["outpouts","outputs"],["outpupt","output"],["outpusts","outputs"],["outputed","outputted"],["outputing","outputting"],["outselves","ourselves"],["outsid","outside"],["outter","outer"],["outtermost","outermost"],["outupt","output"],["outupts","outputs"],["outuput","output"],["outut","output"],["oututs","outputs"],["outweight","outweigh"],["outweights","outweighs"],["ouur","our"],["ouurs","ours"],["oveerun","overrun"],["oveflow","overflow"],["oveflowed","overflowed"],["oveflowing","overflowing"],["oveflows","overflows"],["ovelap","overlap"],["ovelapping","overlapping"],["over-engeneer","over-engineer"],["over-engeneering","over-engineering"],["overaall","overall"],["overal","overall"],["overcompansate","overcompensate"],["overcompansated","overcompensated"],["overcompansates","overcompensates"],["overcompansating","overcompensating"],["overcompansation","overcompensation"],["overcompansations","overcompensations"],["overengeneer","overengineer"],["overengeneering","overengineering"],["overfl","overflow"],["overfow","overflow"],["overfowed","overflowed"],["overfowing","overflowing"],["overfows","overflows"],["overhread","overhead"],["overiddden","overridden"],["overidden","overridden"],["overide","override"],["overiden","overridden"],["overides","overrides"],["overiding","overriding"],["overlaped","overlapped"],["overlaping","overlapping"],["overlapp","overlap"],["overlayed","overlaid"],["overlflow","overflow"],["overlflowed","overflowed"],["overlflowing","overflowing"],["overlflows","overflows"],["overlfow","overflow"],["overlfowed","overflowed"],["overlfowing","overflowing"],["overlfows","overflows"],["overlodaded","overloaded"],["overloded","overloaded"],["overlodes","overloads"],["overlow","overflow"],["overlowing","overflowing"],["overlows","overflows"],["overreidden","overridden"],["overreide","override"],["overreides","overrides"],["overriabled","overridable"],["overriddable","overridable"],["overriddden","overridden"],["overriddes","overrides"],["overridding","overriding"],["overrideable","overridable"],["overriden","overridden"],["overrident","overridden"],["overridiing","overriding"],["overrids","overrides"],["overrriddden","overridden"],["overrridden","overridden"],["overrride","override"],["overrriden","overridden"],["overrrides","overrides"],["overrriding","overriding"],["overrrun","overrun"],["overshaddowed","overshadowed"],["oversubcribe","oversubscribe"],["oversubcribed","oversubscribed"],["oversubcribes","oversubscribes"],["oversubcribing","oversubscribing"],["oversubscibe","oversubscribe"],["oversubscibed","oversubscribed"],["oversubscirbe","oversubscribe"],["oversubscirbed","oversubscribed"],["overthere","over there"],["overun","overrun"],["overvise","otherwise"],["overvize","otherwise"],["overvride","override"],["overvrides","overrides"],["overvrite","overwrite"],["overvrites","overwrites"],["overwelm","overwhelm"],["overwelming","overwhelming"],["overwheliming","overwhelming"],["overwiew","overview"],["overwirte","overwrite"],["overwirting","overwriting"],["overwirtten","overwritten"],["overwise","otherwise"],["overwite","overwrite"],["overwites","overwrites"],["overwitten","overwritten"],["overwize","otherwise"],["overwride","overwrite"],["overwriteable","overwritable"],["overwriten","overwritten"],["overwritren","overwritten"],["overwrittes","overwrites"],["overwrittin","overwriting"],["overwritting","overwriting"],["ovewrite","overwrite"],["ovewrites","overwrites"],["ovewriting","overwriting"],["ovewritten","overwritten"],["ovewrote","overwrote"],["ovride","override"],["ovrides","overrides"],["ovrlapped","overlapped"],["ovrridable","overridable"],["ovrridables","overridables"],["ovrwrt","overwrite"],["ovservable","observable"],["ovservation","observation"],["ovserve","observe"],["ovveride","override"],["ovverridden","overridden"],["ovverride","override"],["ovverrides","overrides"],["ovverriding","overriding"],["owener","owner"],["owerflow","overflow"],["owerflowed","overflowed"],["owerflowing","overflowing"],["owerflows","overflows"],["owership","ownership"],["owervrite","overwrite"],["owervrites","overwrites"],["owerwrite","overwrite"],["owerwrites","overwrites"],["owful","awful"],["ownder","owner"],["ownerhsip","ownership"],["ownner","owner"],["ownward","onward"],["ownwer","owner"],["ownwership","ownership"],["owrk","work"],["owudl","would"],["oxigen","oxygen"],["oximoron","oxymoron"],["oxzillary","auxiliary"],["oyu","you"],["p0enis","penis"],["paackage","package"],["pacakge","package"],["pacakges","packages"],["pacakging","packaging"],["paceholder","placeholder"],["pachage","package"],["paches","patches"],["pacht","patch"],["pachtches","patches"],["pachtes","patches"],["pacjage","package"],["pacjages","packages"],["packacge","package"],["packaeg","package"],["packaege","package"],["packaeges","packages"],["packaegs","packages"],["packag","package"],["packags","packages"],["packaing","packaging"],["packats","packets"],["packege","package"],["packge","package"],["packged","packaged"],["packgement","packaging"],["packges'","packages'"],["packges","packages"],["packgs","packages"],["packhage","package"],["packhages","packages"],["packtes","packets"],["pactch","patch"],["pactched","patched"],["pactches","patches"],["padam","param"],["padds","pads"],["pading","padding"],["paermission","permission"],["paermissions","permissions"],["paeth","path"],["pagagraph","paragraph"],["pahses","phases"],["paide","paid"],["painiting","painting"],["paintile","painttile"],["paintin","painting"],["paitience","patience"],["paiting","painting"],["pakage","package"],["pakageimpl","packageimpl"],["pakages","packages"],["pakcage","package"],["paket","packet"],["pakge","package"],["pakvage","package"],["palatte","palette"],["paleolitic","paleolithic"],["palete","palette"],["paliamentarian","parliamentarian"],["Palistian","Palestinian"],["Palistinian","Palestinian"],["Palistinians","Palestinians"],["pallete","palette"],["pallette","palette"],["palletted","paletted"],["paltette","palette"],["paltform","platform"],["pamflet","pamphlet"],["pamplet","pamphlet"],["paniced","panicked"],["panicing","panicking"],["pannel","panel"],["pannels","panels"],["pantomine","pantomime"],["paoition","position"],["paor","pair"],["Papanicalou","Papanicolaou"],["paradime","paradigm"],["paradym","paradigm"],["paraemeter","parameter"],["paraemeters","parameters"],["paraeters","parameters"],["parafanalia","paraphernalia"],["paragaph","paragraph"],["paragaraph","paragraph"],["paragarapha","paragraph"],["paragarph","paragraph"],["paragarphs","paragraphs"],["paragph","paragraph"],["paragpraph","paragraph"],["paragraphy","paragraph"],["paragrphs","paragraphs"],["parahaps","perhaps"],["paralel","parallel"],["paralelising","parallelising"],["paralelism","parallelism"],["paralelizing","parallelizing"],["paralell","parallel"],["paralelle","parallel"],["paralellism","parallelism"],["paralellization","parallelization"],["paralelly","parallelly"],["paralely","parallelly"],["paralle","parallel"],["parallell","parallel"],["parallely","parallelly"],["paralles","parallels"],["parallization","parallelization"],["parallize","parallelize"],["parallized","parallelized"],["parallizes","parallelizes"],["parallizing","parallelizing"],["paralllel","parallel"],["paralllels","parallels"],["paramameter","parameter"],["paramameters","parameters"],["paramater","parameter"],["paramaters","parameters"],["paramemeter","parameter"],["paramemeters","parameters"],["paramemter","parameter"],["paramemters","parameters"],["paramenet","parameter"],["paramenets","parameters"],["paramenter","parameter"],["paramenters","parameters"],["paramer","parameter"],["paramert","parameter"],["paramerters","parameters"],["paramerts","parameters"],["paramete","parameter"],["parameteras","parameters"],["parameteres","parameters"],["parameterical","parametrical"],["parameterts","parameters"],["parametes","parameters"],["parametised","parametrised"],["parametr","parameter"],["parametre","parameter"],["parametreless","parameterless"],["parametres","parameters"],["parametrs","parameters"],["parametter","parameter"],["parametters","parameters"],["paramss","params"],["paramter","parameter"],["paramterer","parameter"],["paramterers","parameters"],["paramteres","parameters"],["paramterize","parameterize"],["paramterless","parameterless"],["paramters","parameters"],["paramtrical","parametrical"],["parana","piranha"],["paraniac","paranoiac"],["paranoya","paranoia"],["parant","parent"],["parantheses","parentheses"],["paranthesis","parenthesis"],["parants","parents"],["paraphanalia","paraphernalia"],["paraphenalia","paraphernalia"],["pararagraph","paragraph"],["pararaph","paragraph"],["parareter","parameter"],["parargaph","paragraph"],["parargaphs","paragraphs"],["pararmeter","parameter"],["pararmeters","parameters"],["parastic","parasitic"],["parastics","parasitics"],["paratheses","parentheses"],["paratmers","parameters"],["paravirutalisation","paravirtualisation"],["paravirutalise","paravirtualise"],["paravirutalised","paravirtualised"],["paravirutalization","paravirtualization"],["paravirutalize","paravirtualize"],["paravirutalized","paravirtualized"],["parctical","practical"],["parctically","practically"],["pard","part"],["parellelogram","parallelogram"],["parellels","parallels"],["parem","param"],["paremeter","parameter"],["paremeters","parameters"],["paremter","parameter"],["paremters","parameters"],["parenthese","parentheses"],["parenthesed","parenthesized"],["parenthesies","parentheses"],["parenthises","parentheses"],["parenthsis","parenthesis"],["parge","large"],["parial","partial"],["parially","partially"],["paricular","particular"],["paricularly","particularly"],["parisitic","parasitic"],["paritally","partially"],["paritals","partials"],["paritial","partial"],["parition","partition"],["paritioning","partitioning"],["paritions","partitions"],["paritition","partition"],["parititioned","partitioned"],["parititioner","partitioner"],["parititiones","partitions"],["parititioning","partitioning"],["parititions","partitions"],["paritiy","parity"],["parituclar","particular"],["parliment","parliament"],["parmaeter","parameter"],["parmaeters","parameters"],["parmameter","parameter"],["parmameters","parameters"],["parmaters","parameters"],["parmeter","parameter"],["parmeters","parameters"],["parmter","parameter"],["parmters","parameters"],["parnoia","paranoia"],["parnter","partner"],["parntered","partnered"],["parntering","partnering"],["parnters","partners"],["parntership","partnership"],["parnterships","partnerships"],["parrakeets","parakeets"],["parralel","parallel"],["parrallel","parallel"],["parrallell","parallel"],["parrallelly","parallelly"],["parrallely","parallelly"],["parrent","parent"],["parseing","parsing"],["parsering","parsing"],["parsin","parsing"],["parstree","parse tree"],["partaining","pertaining"],["partcular","particular"],["partcularity","particularity"],["partcularly","particularly"],["parth","path"],["partialy","partially"],["particalar","particular"],["particalarly","particularly"],["particale","particle"],["particales","particles"],["partically","partially"],["particals","particles"],["particaluar","particular"],["particaluarly","particularly"],["particalur","particular"],["particalurly","particularly"],["particant","participant"],["particaular","particular"],["particaularly","particularly"],["particaulr","particular"],["particaulrly","particularly"],["particlar","particular"],["particlars","particulars"],["particually","particularly"],["particualr","particular"],["particuar","particular"],["particuarly","particularly"],["particulaly","particularly"],["particularily","particularly"],["particulary","particularly"],["particuliar","particular"],["partifular","particular"],["partiiton","partition"],["partiitoned","partitioned"],["partiitoning","partitioning"],["partiitons","partitions"],["partioned","partitioned"],["partirion","partition"],["partirioned","partitioned"],["partirioning","partitioning"],["partirions","partitions"],["partision","partition"],["partisioned","partitioned"],["partisioning","partitioning"],["partisions","partitions"],["partitial","partial"],["partiticipant","participant"],["partiticipants","participants"],["partiticular","particular"],["partitinioning","partitioning"],["partitioing","partitioning"],["partitiones","partitions"],["partitionned","partitioned"],["partitionning","partitioning"],["partitionns","partitions"],["partitionss","partitions"],["partiton","partition"],["partitoned","partitioned"],["partitoning","partitioning"],["partitons","partitions"],["partiula","particular"],["partiular","particular"],["partiularly","particularly"],["partiulars","particulars"],["pasengers","passengers"],["paser","parser"],["pasesd","passed"],["pash","hash"],["pasitioning","positioning"],["pasive","passive"],["pasre","parse"],["pasred","parsed"],["pasres","parses"],["passerbys","passersby"],["passin","passing"],["passiv","passive"],["passowrd","password"],["passs","pass"],["passsed","passed"],["passsing","passing"],["passthrought","passthrough"],["passthruogh","passthrough"],["passtime","pastime"],["passtrough","passthrough"],["passwird","password"],["passwirds","passwords"],["passwrod","password"],["passwrods","passwords"],["pasteing","pasting"],["pasttime","pastime"],["pastural","pastoral"],["pasword","password"],["paswords","passwords"],["patameter","parameter"],["patameters","parameters"],["patcket","packet"],["patckets","packets"],["patern","pattern"],["paterns","patterns"],["pathalogical","pathological"],["pathame","pathname"],["pathames","pathnames"],["pathane","pathname"],["pathced","patched"],["pathes","paths"],["pathign","pathing"],["pathnme","pathname"],["patholgoical","pathological"],["patial","spatial"],["paticular","particular"],["paticularly","particularly"],["patition","partition"],["pattented","patented"],["pattersn","patterns"],["pavillion","pavilion"],["pavillions","pavilions"],["pa\xEDnt","paint"],["pblisher","publisher"],["pbulisher","publisher"],["peacd","peace"],["peacefuland","peaceful and"],["peacify","pacify"],["peageant","pageant"],["peaple","people"],["peaples","peoples"],["pecentage","percentage"],["pecularities","peculiarities"],["pecularity","peculiarity"],["peculure","peculiar"],["pedestrain","pedestrian"],["peding","pending"],["pedning","pending"],["pefer","prefer"],["peferable","preferable"],["peferably","preferably"],["pefered","preferred"],["peference","preference"],["peferences","preferences"],["peferential","preferential"],["peferentially","preferentially"],["peferred","preferred"],["peferring","preferring"],["pefers","prefers"],["peform","perform"],["peformance","performance"],["peformed","performed"],["peforming","performing"],["pege","page"],["pehaps","perhaps"],["peice","piece"],["peicemeal","piecemeal"],["peices","pieces"],["peirod","period"],["peirodical","periodical"],["peirodicals","periodicals"],["peirods","periods"],["penalities","penalties"],["penality","penalty"],["penatly","penalty"],["pendantic","pedantic"],["pendig","pending"],["pendning","pending"],["penerator","penetrator"],["penisula","peninsula"],["penisular","peninsular"],["pennal","panel"],["pennals","panels"],["penninsula","peninsula"],["penninsular","peninsular"],["pennisula","peninsula"],["Pennyslvania","Pennsylvania"],["pensinula","peninsula"],["pensle","pencil"],["penultimante","penultimate"],["peom","poem"],["peoms","poems"],["peopel","people"],["peopels","peoples"],["peopl","people"],["peotry","poetry"],["pepare","prepare"],["peprocessor","preprocessor"],["per-interpeter","per-interpreter"],["perade","parade"],["peraphs","perhaps"],["percentange","percentage"],["percentanges","percentages"],["percentil","percentile"],["percepted","perceived"],["percetage","percentage"],["percetages","percentages"],["percievable","perceivable"],["percievabley","perceivably"],["percievably","perceivably"],["percieve","perceive"],["percieved","perceived"],["percise","precise"],["percisely","precisely"],["percision","precision"],["perenially","perennially"],["peretrator","perpetrator"],["perfec","perfect"],["perfecct","perfect"],["perfecctly","perfectly"],["perfeclty","perfectly"],["perfecly","perfectly"],["perfectably","perfectly"],["perfer","prefer"],["perferable","preferable"],["perferably","preferably"],["perferance","preference"],["perferances","preferences"],["perferct","perfect"],["perferctly","perfectly"],["perferect","perfect"],["perferectly","perfectly"],["perfered","preferred"],["perference","preference"],["perferences","preferences"],["perferm","perform"],["perfermance","performance"],["perfermances","performances"],["perfermence","performance"],["perfermences","performances"],["perferr","prefer"],["perferrable","preferable"],["perferrably","preferably"],["perferrance","preference"],["perferrances","preferences"],["perferred","preferred"],["perferrence","preference"],["perferrences","preferences"],["perferrm","perform"],["perferrmance","performance"],["perferrmances","performances"],["perferrmence","performance"],["perferrmences","performances"],["perferrs","prefers"],["perfers","prefers"],["perfix","prefix"],["perfmormance","performance"],["perfoem","perform"],["perfoemamce","performance"],["perfoemamces","performances"],["perfoemance","performance"],["perfoemanse","performance"],["perfoemanses","performances"],["perfoemant","performant"],["perfoemative","performative"],["perfoemed","performed"],["perfoemer","performer"],["perfoemers","performers"],["perfoeming","performing"],["perfoemnace","performance"],["perfoemnaces","performances"],["perfoems","performs"],["perfom","perform"],["perfomamce","performance"],["perfomamces","performances"],["perfomance","performance"],["perfomanse","performance"],["perfomanses","performances"],["perfomant","performant"],["perfomative","performative"],["perfome","perform"],["perfomeamce","performance"],["perfomeamces","performances"],["perfomeance","performance"],["perfomeanse","performance"],["perfomeanses","performances"],["perfomeant","performant"],["perfomeative","performative"],["perfomed","performed"],["perfomeed","performed"],["perfomeer","performer"],["perfomeers","performers"],["perfomeing","performing"],["perfomenace","performance"],["perfomenaces","performances"],["perfomer","performer"],["perfomers","performers"],["perfomes","performs"],["perfoming","performing"],["perfomnace","performance"],["perfomnaces","performances"],["perfomr","perform"],["perfomramce","performance"],["perfomramces","performances"],["perfomrance","performance"],["perfomranse","performance"],["perfomranses","performances"],["perfomrant","performant"],["perfomrative","performative"],["perfomred","performed"],["perfomrer","performer"],["perfomrers","performers"],["perfomring","performing"],["perfomrnace","performance"],["perfomrnaces","performances"],["perfomrs","performs"],["perfoms","performs"],["perfor","perform"],["perforam","perform"],["perforamed","performed"],["perforaming","performing"],["perforamnce","performance"],["perforamnces","performances"],["perforams","performs"],["perford","performed"],["perforemd","performed"],["performace","performance"],["performaed","performed"],["performamce","performance"],["performane","performance"],["performence","performance"],["performnace","performance"],["perfors","performs"],["perfro","perform"],["perfrom","perform"],["perfromance","performance"],["perfromed","performed"],["perfroming","performing"],["perfroms","performs"],["perhabs","perhaps"],["perhas","perhaps"],["perhasp","perhaps"],["perheaps","perhaps"],["perhpas","perhaps"],["peridic","periodic"],["perihperal","peripheral"],["perihperals","peripherals"],["perimetre","perimeter"],["perimetres","perimeters"],["periode","period"],["periodicaly","periodically"],["periodioc","periodic"],["peripathetic","peripatetic"],["peripherial","peripheral"],["peripherials","peripherals"],["perisist","persist"],["perisisted","persisted"],["perisistent","persistent"],["peristent","persistent"],["perjery","perjury"],["perjorative","pejorative"],["perlciritc","perlcritic"],["permable","permeable"],["permament","permanent"],["permamently","permanently"],["permanant","permanent"],["permanantly","permanently"],["permanentely","permanently"],["permanenty","permanently"],["permantly","permanently"],["permenant","permanent"],["permenantly","permanently"],["permessioned","permissioned"],["permision","permission"],["permisions","permissions"],["permisison","permission"],["permisisons","permissions"],["permissable","permissible"],["permissiosn","permissions"],["permisson","permission"],["permissons","permissions"],["permisssion","permission"],["permisssions","permissions"],["permited","permitted"],["permition","permission"],["permitions","permissions"],["permmission","permission"],["permmissions","permissions"],["permormance","performance"],["permssion","permission"],["permssions","permissions"],["permuatate","permutate"],["permuatated","permutated"],["permuatates","permutates"],["permuatating","permutating"],["permuatation","permutation"],["permuatations","permutations"],["permuation","permutation"],["permuations","permutations"],["permutaion","permutation"],["permutaions","permutations"],["permution","permutation"],["permutions","permutations"],["peroendicular","perpendicular"],["perogative","prerogative"],["peroid","period"],["peroidic","periodic"],["peroidical","periodical"],["peroidically","periodically"],["peroidicals","periodicals"],["peroidicity","periodicity"],["peroids","periods"],["peronal","personal"],["peroperly","properly"],["perosnality","personality"],["perpandicular","perpendicular"],["perpandicularly","perpendicularly"],["perperties","properties"],["perpertrated","perpetrated"],["perperty","property"],["perphas","perhaps"],["perpindicular","perpendicular"],["perpsective","perspective"],["perpsectives","perspectives"],["perrror","perror"],["persan","person"],["persepctive","perspective"],["persepective","perspective"],["persepectives","perspectives"],["perserve","preserve"],["perserved","preserved"],["perserverance","perseverance"],["perservere","persevere"],["perservered","persevered"],["perserveres","perseveres"],["perservering","persevering"],["perserves","preserves"],["perserving","preserving"],["perseverence","perseverance"],["persisit","persist"],["persisited","persisted"],["persistance","persistence"],["persistant","persistent"],["persistantly","persistently"],["persisten","persistent"],["persistented","persisted"],["persited","persisted"],["persitent","persistent"],["personalitie","personality"],["personalitites","personalities"],["personalitity","personality"],["personalitys","personalities"],["personaly","personally"],["personell","personnel"],["personnal","personal"],["personnaly","personally"],["personnell","personnel"],["perspecitve","perspective"],["persuded","persuaded"],["persue","pursue"],["persued","pursued"],["persuing","pursuing"],["persuit","pursuit"],["persuits","pursuits"],["persumably","presumably"],["perticular","particular"],["perticularly","particularly"],["perticulars","particulars"],["pertrub","perturb"],["pertrubation","perturbation"],["pertrubations","perturbations"],["pertrubing","perturbing"],["pertub","perturb"],["pertubate","perturb"],["pertubated","perturbed"],["pertubates","perturbs"],["pertubation","perturbation"],["pertubations","perturbations"],["pertubing","perturbing"],["perturbate","perturb"],["perturbates","perturbs"],["pervious","previous"],["perviously","previously"],["pessiary","pessary"],["petetion","petition"],["pevent","prevent"],["pevents","prevents"],["pezier","bezier"],["phanthom","phantom"],["Pharoah","Pharaoh"],["phasepsace","phasespace"],["phasis","phases"],["phenomenom","phenomenon"],["phenomenonal","phenomenal"],["phenomenonly","phenomenally"],["phenomonenon","phenomenon"],["phenomonon","phenomenon"],["phenonmena","phenomena"],["pheriparials","peripherals"],["Philipines","Philippines"],["philisopher","philosopher"],["philisophical","philosophical"],["philisophy","philosophy"],["Phillipine","Philippine"],["phillipines","philippines"],["Phillippines","Philippines"],["phillosophically","philosophically"],["philospher","philosopher"],["philosphies","philosophies"],["philosphy","philosophy"],["phisical","physical"],["phisically","physically"],["phisicaly","physically"],["phisics","physics"],["phisosophy","philosophy"],["Phonecian","Phoenecian"],["phoneticly","phonetically"],["phongraph","phonograph"],["phote","photo"],["photografic","photographic"],["photografical","photographical"],["photografy","photography"],["photograpic","photographic"],["photograpical","photographical"],["phsical","physical"],["phsyically","physically"],["phtread","pthread"],["phtreads","pthreads"],["phyiscal","physical"],["phyiscally","physically"],["phyiscs","physics"],["phylosophical","philosophical"],["physcial","physical"],["physial","physical"],["physicaly","physically"],["physisist","physicist"],["phython","python"],["phyton","python"],["phy_interace","phy_interface"],["piblisher","publisher"],["pice","piece"],["picoseond","picosecond"],["picoseonds","picoseconds"],["piggypack","piggyback"],["piggypacked","piggybacked"],["pilgrimmage","pilgrimage"],["pilgrimmages","pilgrimages"],["pimxap","pixmap"],["pimxaps","pixmaps"],["pinapple","pineapple"],["pinnaple","pineapple"],["pinoneered","pioneered"],["piont","point"],["pionter","pointer"],["pionts","points"],["piority","priority"],["pipeine","pipeline"],["pipeines","pipelines"],["pipelien","pipeline"],["pipeliens","pipelines"],["pipelin","pipeline"],["pipelinining","pipelining"],["pipelins","pipelines"],["pipepline","pipeline"],["pipeplines","pipelines"],["pipiline","pipeline"],["pipilines","pipelines"],["pipleine","pipeline"],["pipleines","pipelines"],["pipleline","pipeline"],["piplelines","pipelines"],["pitty","pity"],["pivott","pivot"],["pivotting","pivoting"],["pixes","pixels"],["placeemnt","placement"],["placeemnts","placements"],["placehoder","placeholder"],["placeholde","placeholder"],["placeholdes","placeholders"],["placeholer","placeholder"],["placeholers","placeholders"],["placemenet","placement"],["placemenets","placements"],["placholder","placeholder"],["placholders","placeholders"],["placmenet","placement"],["placmenets","placements"],["plaform","platform"],["plaforms","platforms"],["plaftorm","platform"],["plaftorms","platforms"],["plagarism","plagiarism"],["plalform","platform"],["plalforms","platforms"],["planation","plantation"],["plantext","plaintext"],["plantiff","plaintiff"],["plasement","placement"],["plasements","placements"],["plateu","plateau"],["platfarm","platform"],["platfarms","platforms"],["platfform","platform"],["platfforms","platforms"],["platflorm","platform"],["platflorms","platforms"],["platfoem","platform"],["platfom","platform"],["platfomr","platform"],["platfomrs","platforms"],["platfoms","platforms"],["platform-spacific","platform-specific"],["platforma","platforms"],["platformt","platforms"],["platfrom","platform"],["platfroms","platforms"],["plathome","platform"],["platofmr","platform"],["platofmrs","platforms"],["platofms","platforms"],["platofmss","platforms"],["platoform","platform"],["platoforms","platforms"],["platofrm","platform"],["platofrms","platforms"],["plattform","platform"],["plattforms","platforms"],["plausability","plausibility"],["plausable","plausible"],["playble","playable"],["playge","plague"],["playgerise","plagiarise"],["playgerize","plagiarize"],["playgropund","playground"],["playist","playlist"],["playists","playlists"],["playright","playwright"],["playwrite","playwright"],["playwrites","playwrights"],["plcae","place"],["plcaebo","placebo"],["plcaed","placed"],["plcaeholder","placeholder"],["plcaeholders","placeholders"],["plcaement","placement"],["plcaements","placements"],["plcaes","places"],["pleaase","please"],["pleacing","placing"],["pleae","please"],["pleaee","please"],["pleaes","please"],["pleasd","pleased"],["pleasent","pleasant"],["pleasently","pleasantly"],["plebicite","plebiscite"],["plecing","placing"],["plent","plenty"],["plesae","please"],["plesant","pleasant"],["plese","please"],["plesently","pleasantly"],["pliars","pliers"],["pllatforms","platforms"],["ploted","plotted"],["ploting","plotting"],["ploynomial","polynomial"],["ploynomials","polynomials"],["pltform","platform"],["pltforms","platforms"],["plugable","pluggable"],["pluged","plugged"],["pluign","plugin"],["pluigns","plugins"],["pluse","pulse"],["plyotropy","pleiotropy"],["pobular","popular"],["pobularity","popularity"],["podule","module"],["poenis","penis"],["poential","potential"],["poentially","potentially"],["poentials","potentials"],["poeoples","peoples"],["poeple","people"],["poety","poetry"],["pogress","progress"],["poicies","policies"],["poicy","policy"],["poiint","point"],["poiints","points"],["poind","point"],["poindcloud","pointcloud"],["poiner","pointer"],["poing","point"],["poinits","points"],["poinnter","pointer"],["poins","points"],["pointeres","pointers"],["pointes","points"],["pointetr","pointer"],["pointetrs","pointers"],["pointeur","pointer"],["pointseta","poinsettia"],["pointss","points"],["pointzer","pointer"],["poinyent","poignant"],["poisin","poison"],["poisition","position"],["poisitioned","positioned"],["poisitioning","positioning"],["poisitionning","positioning"],["poisitions","positions"],["poistion","position"],["poistioned","positioned"],["poistioning","positioning"],["poistions","positions"],["poistive","positive"],["poistively","positively"],["poistives","positives"],["poistivly","positively"],["poit","point"],["poitd","pointed"],["poited","pointed"],["poiter","pointer"],["poiters","pointers"],["poiting","pointing"],["poitless","pointless"],["poitlessly","pointlessly"],["poitn","point"],["poitnd","pointed"],["poitned","pointed"],["poitner","pointer"],["poitnes","points"],["poitning","pointing"],["poitns","points"],["poits","points"],["poiunter","pointer"],["poject","project"],["pojecting","projecting"],["pojnt","point"],["pojrect","project"],["pojrected","projected"],["pojrecting","projecting"],["pojrection","projection"],["pojrections","projections"],["pojrector","projector"],["pojrectors","projectors"],["pojrects","projects"],["poket","pocket"],["polariy","polarity"],["polgon","polygon"],["polgons","polygons"],["polical","political"],["policiy","policy"],["poligon","polygon"],["poligons","polygons"],["polinator","pollinator"],["polinators","pollinators"],["politican","politician"],["politicans","politicians"],["politicing","politicking"],["pollenate","pollinate"],["polltry","poultry"],["polocies","policies"],["polocy","policy"],["polocys","policies"],["pologon","polygon"],["pologons","polygons"],["polotic","politic"],["polotical","political"],["polotics","politics"],["poltical","political"],["poltry","poultry"],["polute","pollute"],["poluted","polluted"],["polutes","pollutes"],["poluting","polluting"],["polution","pollution"],["polyar","polar"],["polyedral","polyhedral"],["polygond","polygons"],["polygone","polygon"],["polymorpic","polymorphic"],["polynomal","polynomial"],["polynomals","polynomials"],["polyphonyic","polyphonic"],["polypoygon","polypolygon"],["polypoylgons","polypolygons"],["polysaccaride","polysaccharide"],["polysaccharid","polysaccharide"],["pomegranite","pomegranate"],["pomotion","promotion"],["pompay","Pompeii"],["ponint","point"],["poninted","pointed"],["poninter","pointer"],["poninting","pointing"],["ponints","points"],["ponit","point"],["ponitd","pointed"],["ponited","pointed"],["poniter","pointer"],["poniters","pointers"],["ponits","points"],["pont","point"],["pontential","potential"],["ponter","pointer"],["ponting","pointing"],["ponts","points"],["pontuation","punctuation"],["pooint","point"],["poointed","pointed"],["poointer","pointer"],["pooints","points"],["poost","post"],["poperee","potpourri"],["poperties","properties"],["popoen","popen"],["popolate","populate"],["popolated","populated"],["popolates","populates"],["popolating","populating"],["poportional","proportional"],["popoulation","population"],["popoup","popup"],["poppup","popup"],["popularaty","popularity"],["populare","popular"],["populer","popular"],["popullate","populate"],["popullated","populated"],["popuplar","popular"],["popuplarity","popularity"],["popuplate","populate"],["popuplated","populated"],["popuplates","populates"],["popuplating","populating"],["popuplation","population"],["porbably","probably"],["porblem","problem"],["porblems","problems"],["porcess","process"],["porcessed","processed"],["porcesses","processes"],["porcessing","processing"],["porcessor","processor"],["porcessors","processors"],["porgram","program"],["porgrammeer","programmer"],["porgrammeers","programmers"],["porgramming","programming"],["porgrams","programs"],["poriferal","peripheral"],["porject","project"],["porjection","projection"],["porjects","projects"],["porotocol","protocol"],["porotocols","protocols"],["porperties","properties"],["porperty","property"],["porportion","proportion"],["porportional","proportional"],["porportionally","proportionally"],["porportioning","proportioning"],["porportions","proportions"],["porsalin","porcelain"],["porshan","portion"],["porshon","portion"],["portait","portrait"],["portaits","portraits"],["portayed","portrayed"],["portected","protected"],["portguese","Portuguese"],["portioon","portion"],["portraing","portraying"],["portugese","Portuguese"],["portuguease","Portuguese"],["portugues","Portuguese"],["porve","prove"],["porved","proved"],["porven","proven"],["porves","proves"],["porvide","provide"],["porvided","provided"],["porvider","provider"],["porvides","provides"],["porviding","providing"],["porvids","provides"],["porving","proving"],["posative","positive"],["posatives","positives"],["posativity","positivity"],["poseesions","possessions"],["posess","possess"],["posessed","possessed"],["posesses","possesses"],["posessing","possessing"],["posession","possession"],["posessions","possessions"],["posibilities","possibilities"],["posibility","possibility"],["posibilties","possibilities"],["posible","possible"],["posiblity","possibility"],["posibly","possibly"],["posiitive","positive"],["posiitives","positives"],["posiitivity","positivity"],["posisition","position"],["posisitioned","positioned"],["posistion","position"],["positionn","position"],["positionned","positioned"],["positionnes","positions"],["positionning","positioning"],["positionns","positions"],["positiv","positive"],["positivie","positive"],["positivies","positives"],["positivly","positively"],["positoin","position"],["positoined","positioned"],["positoins","positions"],["positonal","positional"],["positoned","positioned"],["positoning","positioning"],["positve","positive"],["positves","positives"],["POSIX-complient","POSIX-compliant"],["pospone","postpone"],["posponed","postponed"],["posption","position"],["possabilites","possibilities"],["possabilities","possibilities"],["possability","possibility"],["possabilties","possibilities"],["possabily","possibly"],["possable","possible"],["possably","possibly"],["possbily","possibly"],["possble","possible"],["possbly","possibly"],["posseses","possesses"],["possesing","possessing"],["possesion","possession"],["possesive","possessive"],["possessess","possesses"],["possiable","possible"],["possibbe","possible"],["possibe","possible"],["possibile","possible"],["possibilies","possibilities"],["possibilites","possibilities"],["possibilitities","possibilities"],["possibiliy","possibility"],["possibillity","possibility"],["possibilties","possibilities"],["possibilty","possibility"],["possibily","possibly"],["possibities","possibilities"],["possibity","possibility"],["possiblble","possible"],["possiblec","possible"],["possiblely","possibly"],["possiblility","possibility"],["possiblilty","possibility"],["possiblities","possibilities"],["possiblity","possibility"],["possiblly","possibly"],["possilbe","possible"],["possily","possibly"],["possition","position"],["possitive","positive"],["possitives","positives"],["possobily","possibly"],["possoble","possible"],["possobly","possibly"],["posssible","possible"],["post-morten","post-mortem"],["post-proces","post-process"],["post-procesing","post-processing"],["postcondtion","postcondition"],["postcondtions","postconditions"],["Postdam","Potsdam"],["postgress","PostgreSQL"],["postgressql","PostgreSQL"],["postgrsql","PostgreSQL"],["posthomous","posthumous"],["postiional","positional"],["postiive","positive"],["postincremend","postincrement"],["postion","position"],["postioned","positioned"],["postions","positions"],["postition","position"],["postitive","positive"],["postitives","positives"],["postive","positive"],["postives","positives"],["postmage","postimage"],["postphoned","postponed"],["postpocessing","postprocessing"],["postponinig","postponing"],["postprocesing","postprocessing"],["postscritp","postscript"],["postulat","postulate"],["postuminus","posthumous"],["postumus","posthumous"],["potatoe","potato"],["potatos","potatoes"],["potencial","potential"],["potencially","potentially"],["potencials","potentials"],["potenial","potential"],["potenially","potentially"],["potentail","potential"],["potentailly","potentially"],["potentails","potentials"],["potental","potential"],["potentally","potentially"],["potentatially","potentially"],["potententially","potentially"],["potentiallly","potentially"],["potentialy","potentially"],["potentiel","potential"],["potentiomenter","potentiometer"],["potition","position"],["potocol","protocol"],["potrait","portrait"],["potrayed","portrayed"],["poulations","populations"],["pount","point"],["pounts","points"],["poupular","popular"],["poverful","powerful"],["poweful","powerful"],["powerfull","powerful"],["powerppc","powerpc"],["pozitive","positive"],["pozitively","positively"],["pozitives","positives"],["ppcheck","cppcheck"],["ppeline","pipeline"],["ppelines","pipelines"],["ppolygons","polygons"],["ppublisher","publisher"],["ppyint","pyint"],["praameter","parameter"],["praameters","parameters"],["prabability","probability"],["prabable","probable"],["prabably","probably"],["pracitcal","practical"],["pracitcally","practically"],["practial","practical"],["practially","practically"],["practicaly","practically"],["practicioner","practitioner"],["practicioners","practitioners"],["practicly","practically"],["practictitioner","practitioner"],["practictitioners","practitioners"],["practicval","practical"],["practioner","practitioner"],["practioners","practitioners"],["praefix","prefix"],["pragam","pragma"],["pragmato","pragma to"],["prairy","prairie"],["pramater","parameter"],["prameter","parameter"],["prameters","parameters"],["prarameter","parameter"],["prarameters","parameters"],["prarie","prairie"],["praries","prairies"],["pratical","practical"],["pratically","practically"],["pratice","practice"],["prcess","process"],["prcesses","processes"],["prcessing","processing"],["prcoess","process"],["prcoessed","processed"],["prcoesses","processes"],["prcoessing","processing"],["prctiles","percentiles"],["prdpagate","propagate"],["prdpagated","propagated"],["prdpagates","propagates"],["prdpagating","propagating"],["prdpagation","propagation"],["prdpagations","propagations"],["prdpagator","propagator"],["prdpagators","propagators"],["pre-condifure","pre-configure"],["pre-condifured","pre-configured"],["pre-confifure","pre-configure"],["pre-confifured","pre-configured"],["pre-confure","pre-configure"],["pre-confured","pre-configured"],["pre-congifure","pre-configure"],["pre-congifured","pre-configured"],["pre-defiend","pre-defined"],["pre-defiened","pre-defined"],["pre-empt","preempt"],["pre-pended","prepended"],["pre-pre-realease","pre-pre-release"],["pre-proces","pre-process"],["pre-procesing","pre-processing"],["pre-realease","pre-release"],["pre-registeres","pre-registers"],["prealocate","preallocate"],["prealocated","preallocated"],["prealocates","preallocates"],["prealocating","preallocating"],["preambule","preamble"],["preamle","preamble"],["preample","preamble"],["preaorocessing","preprocessing"],["preapared","prepared"],["preapre","prepare"],["preaprooved","preapproved"],["prebious","previous"],["precacheed","precached"],["precceding","preceding"],["precding","preceding"],["preced","precede"],["precedencs","precedence"],["precedessor","predecessor"],["preceds","precedes"],["preceision","precision"],["precence","presence"],["precendance","precedence"],["precendances","precedences"],["precende","precedence"],["precendece","precedence"],["precendeces","precedences"],["precendence","precedence"],["precendences","precedences"],["precendencies","precedences"],["precendent","precedent"],["precendes","precedences"],["precending","preceding"],["precends","precedence"],["precenences","preferences"],["precense","presence"],["precentage","percentage"],["precentile","percentile"],["precentiles","percentiles"],["precessing","processing"],["precice","precise"],["precicion","precision"],["precidence","precedence"],["precisily","precisely"],["precisionn","precision"],["precisision","precision"],["precisly","precisely"],["precison","precision"],["precize","precise"],["precomuted","precomputed"],["preconditoner","preconditioner"],["preconditoners","preconditioners"],["precondtion","precondition"],["precondtioner","preconditioner"],["precondtioners","preconditioners"],["precondtionner","preconditioner"],["precondtionners","preconditioners"],["precondtions","preconditions"],["preconfiged","preconfigured"],["precsions","precisions"],["precuation","precaution"],["preculde","preclude"],["preculded","precluded"],["preculdes","precludes"],["precumputed","precomputed"],["precurser","precursor"],["precussion","percussion"],["precussions","percussions"],["predecesor","predecessor"],["predecesors","predecessors"],["predeclarnig","predeclaring"],["predefiend","predefined"],["predefiened","predefined"],["predefiined","predefined"],["predefineds","predefined"],["predessor","predecessor"],["predfined","predefined"],["predicat","predicate"],["predicatble","predictable"],["predicitons","predictions"],["predictible","predictable"],["predifined","predefined"],["predomiantly","predominately"],["preeceding","preceding"],["preemptable","preemptible"],["preesnt","present"],["prefectches","prefetches"],["prefecth","prefetch"],["prefectly","perfectly"],["prefence","preference"],["prefences","preferences"],["preferance","preference"],["preferances","preferences"],["preferecne","preference"],["preferecnes","preferences"],["prefered","preferred"],["preferencfe","preference"],["preferencfes","preferences"],["preferes","prefers"],["prefering","preferring"],["prefernce","preference"],["prefernces","preferences"],["prefernec","preference"],["preferr","prefer"],["preferrable","preferable"],["preferrably","preferably"],["preferrence","preference"],["preferrences","preferences"],["preferrred","preferred"],["prefetchs","prefetches"],["prefex","prefix"],["preffer","prefer"],["prefferable","preferable"],["prefferably","preferably"],["preffered","preferred"],["preffix","prefix"],["preffixed","prefixed"],["preffixes","prefixes"],["preffixing","prefixing"],["prefices","prefixes"],["preformance","performance"],["preformances","performances"],["pregancies","pregnancies"],["prehaps","perhaps"],["preiod","period"],["preivew","preview"],["preivous","previous"],["prejected","projected"],["prejection","projection"],["prejections","projections"],["preliferation","proliferation"],["prelimitary","preliminary"],["premeire","premiere"],["premeired","premiered"],["premillenial","premillennial"],["preminence","preeminence"],["premission","permission"],["premit","permit"],["premits","permits"],["Premonasterians","Premonstratensians"],["premption","preemption"],["premptive","preemptive"],["premptively","preemptively"],["preocess","process"],["preocupation","preoccupation"],["preoperty","property"],["prepair","prepare"],["prepaired","prepared"],["prepand","prepend"],["preparetion","preparation"],["preparetions","preparations"],["prepartion","preparation"],["prepartions","preparations"],["prepate","prepare"],["prepated","prepared"],["prepates","prepares"],["prepatory","preparatory"],["prependet","prepended"],["prepented","prepended"],["preperation","preparation"],["preperations","preparations"],["preponderence","preponderance"],["preppend","prepend"],["preppended","prepended"],["preppendet","prepended"],["preppented","prepended"],["preprend","prepend"],["preprended","prepended"],["prepresent","represent"],["prepresented","represented"],["prepresents","represents"],["preproces","preprocess"],["preprocesing","preprocessing"],["preprocesor","preprocessor"],["preprocesser","preprocessor"],["preprocessers","preprocessors"],["preprocesssing","preprocessing"],["prequisite","prerequisite"],["prequisites","prerequisites"],["prerequesite","prerequisite"],["prerequesites","prerequisites"],["prerequisit","prerequisite"],["prerequisities","prerequisites"],["prerequisits","prerequisites"],["prerequiste","prerequisite"],["prerequsite","prerequisite"],["prerequsites","prerequisites"],["preriod","period"],["preriodic","periodic"],["prersistent","persistent"],["presance","presence"],["prescripe","prescribe"],["prescriped","prescribed"],["prescrition","prescription"],["prescritions","prescriptions"],["presearvation","preservation"],["presearvations","preservations"],["presearve","preserve"],["presearved","preserved"],["presearver","preserver"],["presearves","preserves"],["presearving","preserving"],["presedential","presidential"],["presenece","presence"],["presener","presenter"],["presense","presence"],["presentaion","presentation"],["presentaional","presentational"],["presentaions","presentations"],["presernt","present"],["preserrved","preserved"],["preserv","preserve"],["presetation","presentation"],["preseve","preserve"],["preseved","preserved"],["preseverance","perseverance"],["preseverence","perseverance"],["preseves","preserves"],["preseving","preserving"],["presicion","precision"],["presidenital","presidential"],["presidental","presidential"],["presist","persist"],["presistable","persistable"],["presistance","persistence"],["presistant","persistent"],["presistantly","persistently"],["presisted","persisted"],["presistence","persistence"],["presistency","persistency"],["presistent","persistent"],["presistently","persistently"],["presisting","persisting"],["presistion","precision"],["presists","persists"],["presitgious","prestigious"],["presmissions","permissions"],["presntation","presentation"],["presntations","presentations"],["prespective","perspective"],["presreved","preserved"],["pressent","present"],["pressentation","presentation"],["pressented","presented"],["pressre","pressure"],["pressue","pressure"],["pressues","pressures"],["prestigeous","prestigious"],["prestigous","prestigious"],["presuambly","presumably"],["presumabely","presumably"],["presumaby","presumably"],["presumebly","presumably"],["presumely","presumably"],["presumibly","presumably"],["pretaining","pertaining"],["pretect","protect"],["pretected","protected"],["pretecting","protecting"],["pretection","protection"],["pretects","protects"],["pretendend","pretended"],["pretty-printter","pretty-printer"],["preveiw","preview"],["preveiwed","previewed"],["preveiwer","previewer"],["preveiwers","previewers"],["preveiws","previews"],["prevelance","prevalence"],["prevelant","prevalent"],["preven","prevent"],["prevend","prevent"],["preverse","perverse"],["preverses","preserves"],["preverve","preserve"],["prevew","preview"],["prevews","previews"],["previewd","previewed"],["previious","previous"],["previlege","privilege"],["previoous","previous"],["previos","previous"],["previosly","previously"],["previosu","previous"],["previosuly","previously"],["previou","previous"],["previouls","previous"],["previoulsy","previously"],["previouly","previously"],["previouse","previous"],["previousl","previously"],["previousy","previously"],["previsou","previous"],["previsouly","previously"],["previuous","previous"],["previus","previous"],["previvous","previous"],["prevoius","previous"],["prevous","previous"],["prevously","previously"],["prewview","preview"],["prexisting","preexisting"],["prexixed","prefixed"],["prfer","prefer"],["prferable","preferable"],["prferables","preferable"],["prference","preference"],["prferred","preferred"],["prgram","program"],["priave","private"],["pricipal","principal"],["priciple","principle"],["priciples","principles"],["pricision","precision"],["priestood","priesthood"],["primaray","primary"],["primarely","primarily"],["primarly","primarily"],["primative","primitive"],["primatively","primitively"],["primatives","primitives"],["primay","primary"],["primeter","perimeter"],["primitave","primitive"],["primitiv","primitive"],["primitve","primitive"],["primitves","primitives"],["primive","primitive"],["primordal","primordial"],["princeple","principle"],["princeples","principles"],["princible","principle"],["principaly","principality"],["principial","principal"],["principlaity","principality"],["principly","principally"],["princliple","principle"],["prind","print"],["prinicipal","principal"],["prining","printing"],["printting","printing"],["prioirties","priorities"],["prioirty","priority"],["prioritiy","priority"],["priorization","prioritization"],["priorizations","prioritizations"],["priorty","priority"],["priot","prior"],["priotise","prioritise"],["priotised","prioritised"],["priotising","prioritising"],["priotities","priorities"],["priotitize","prioritize"],["priotity","priority"],["priotized","prioritized"],["priotizing","prioritizing"],["priots","priors"],["prirority","priority"],["pris","prise"],["priting","printing"],["privalege","privilege"],["privaleges","privileges"],["privaye","private"],["privcy","privacy"],["privde","provide"],["priveledge","privilege"],["priveledged","privileged"],["priveledges","privileges"],["privelege","privilege"],["priveleged","privileged"],["priveleges","privileges"],["privelige","privilege"],["priveliged","privileged"],["priveliges","privileges"],["privelleges","privileges"],["priviate","private"],["privide","provide"],["privided","provided"],["privides","provides"],["prividing","providing"],["priview","preview"],["privilage","privilege"],["privilaged","privileged"],["privilages","privileges"],["priviledge","privilege"],["priviledged","privileged"],["priviledges","privileges"],["privilidge","privilege"],["privilidged","privileged"],["privilidges","privileges"],["privilige","privilege"],["priviliged","privileged"],["priviliges","privileges"],["privious","previous"],["priviously","previously"],["privision","provision"],["privisional","provisional"],["privisions","provisions"],["privledge","privilege"],["privleges","privileges"],["privte","private"],["prject","project"],["prjecting","projecting"],["prjection","projection"],["prjections","projections"],["prjects","projects"],["prmitive","primitive"],["prmitives","primitives"],["prmopting","prompting"],["proable","probable"],["proably","probably"],["probabalistic","probabilistic"],["probabaly","probably"],["probabilaty","probability"],["probabilisitic","probabilistic"],["probabilites","probabilities"],["probabilty","probability"],["probablay","probably"],["probablistic","probabilistic"],["probablities","probabilities"],["probablity","probability"],["probablly","probably"],["probaby","probably"],["probalby","probably"],["probalibity","probability"],["probaly","probably"],["probbably","probably"],["probbailities","probabilities"],["probbaility","probability"],["probbaly","probably"],["probbed","probed"],["probblem","problem"],["probblems","problems"],["probblez","problem"],["probblezs","problems"],["probbly","probably"],["probelm","problem"],["probelmatic","problematic"],["probelms","problems"],["probem","problem"],["proberly","properly"],["problably","probably"],["problaem","problem"],["problaems","problems"],["problamatic","problematic"],["probleme","problem"],["problemes","problems"],["problimatic","problematic"],["problme","problem"],["problmes","problems"],["probly","probably"],["procceed","proceed"],["proccesor","processor"],["proccesors","processors"],["proccess","process"],["proccessed","processed"],["proccesses","processes"],["proccessing","processing"],["proccessor","processor"],["proccessors","processors"],["procecure","procedure"],["procecures","procedures"],["procedger","procedure"],["procedings","proceedings"],["procedre","procedure"],["procedres","procedures"],["proceedes","proceeds"],["proceedure","procedure"],["proceedures","procedures"],["proceeed","proceed"],["proceeeded","proceeded"],["proceeeding","proceeding"],["proceeeds","proceeds"],["proceeedures","procedures"],["procees","process"],["proceesed","processed"],["proceesor","processor"],["procelain","porcelain"],["procelains","porcelains"],["procentual","percentual"],["proces","process"],["procesed","processed"],["proceses","processes"],["proceshandler","processhandler"],["procesing","processing"],["procesor","processor"],["processeed","processed"],["processees","processes"],["processer","processor"],["processess","processes"],["processessing","processing"],["processig","processing"],["processinf","processing"],["processore","processor"],["processpr","processor"],["processsed","processed"],["processses","processes"],["processsing","processing"],["processsors","processors"],["procesure","procedure"],["procesures","procedures"],["procide","provide"],["procided","provided"],["procides","provides"],["proclaimation","proclamation"],["proclamed","proclaimed"],["proclaming","proclaiming"],["proclomation","proclamation"],["procoess","process"],["procoessed","processed"],["procoessing","processing"],["proctect","protect"],["proctected","protected"],["proctecting","protecting"],["proctects","protects"],["procteted","protected"],["procude","produce"],["procuded","produced"],["prodceding","proceeding"],["prodecure","procedure"],["producable","producible"],["producables","producible"],["produciton","production"],["producitons","productions"],["producted","produced"],["productiviy","productivity"],["produkt","product"],["produse","produce"],["prodused","produced"],["produses","produces"],["proedural","procedural"],["proedure","procedure"],["proedures","procedures"],["proejct","project"],["proejcted","projected"],["proejcting","projecting"],["proejction","projection"],["proepr","proper"],["proeprly","properly"],["proeprties","properties"],["proeprty","property"],["proerties","properties"],["proessing","processing"],["profesional","professional"],["profesionally","professionally"],["profesionals","professionals"],["profesor","professor"],["professer","professor"],["proffesed","professed"],["proffesion","profession"],["proffesional","professional"],["proffesor","professor"],["proffessor","professor"],["profie","profile"],["profied","profiled"],["profier","profiler"],["profies","profiles"],["profilic","prolific"],["profirle","profile"],["profirled","profiled"],["profirler","profiler"],["profirles","profiles"],["profissional","professional"],["proflie","profile"],["proflier","profiler"],["proflies","profiles"],["profling","profiling"],["profund","profound"],["profundly","profoundly"],["progagate","propagate"],["progagated","propagated"],["progagates","propagates"],["progagating","propagating"],["progagation","propagation"],["progagations","propagations"],["progagator","propagator"],["progagators","propagators"],["progam","program"],["progamability","programmability"],["progamable","programmable"],["progamatic","programmatic"],["progamatically","programmatically"],["progamed","programmed"],["progamer","programmer"],["progamers","programmers"],["progaming","programming"],["progamm","program"],["progammability","programmability"],["progammable","programmable"],["progammatic","programmatic"],["progammatically","programmatically"],["progammed","programmed"],["progammer","programmer"],["progammers","programmers"],["progamming","programming"],["progamms","programs"],["progams","programs"],["progapate","propagate"],["progapated","propagated"],["progapates","propagates"],["progapating","propagating"],["progapation","propagation"],["progapations","propagations"],["progapator","propagator"],["progapators","propagators"],["progaramm","program"],["progarammability","programmability"],["progarammable","programmable"],["progarammatic","programmatic"],["progarammatically","programmatically"],["progarammed","programmed"],["progarammer","programmer"],["progarammers","programmers"],["progaramming","programming"],["progaramms","programs"],["progarm","program"],["progarmability","programmability"],["progarmable","programmable"],["progarmatic","programmatic"],["progarmatically","programmatically"],["progarmed","programmed"],["progarmer","programmer"],["progarmers","programmers"],["progarming","programming"],["progarms","programs"],["progate","propagate"],["progated","propagated"],["progates","propagates"],["progating","propagating"],["progation","propagation"],["progations","propagations"],["progess","progress"],["progessbar","progressbar"],["progessed","progressed"],["progesses","progresses"],["progessive","progressive"],["progessor","progressor"],["progesss","progress"],["progesssive","progressive"],["progidy","prodigy"],["programable","programmable"],["programatic","programmatic"],["programatically","programmatically"],["programattically","programmatically"],["programd","programmed"],["programemer","programmer"],["programemers","programmers"],["programers","programmers"],["programmaticaly","programmatically"],["programmend","programmed"],["programmetically","programmatically"],["programmical","programmatical"],["programmign","programming"],["programmming","programming"],["programms","programs"],["progreess","progress"],["progres","progress"],["progresively","progressively"],["progresss","progress"],["progrewss","progress"],["progrmae","program"],["progrss","progress"],["prohabition","prohibition"],["prohibitted","prohibited"],["prohibitting","prohibiting"],["prohibt","prohibit"],["prohibted","prohibited"],["prohibting","prohibiting"],["prohibts","prohibits"],["proirity","priority"],["projct's","project's"],["projct","project"],["projction","projection"],["projctions","projections"],["projctor","projector"],["projctors","projectors"],["projcts","projects"],["projectd","projected"],["projectio","projection"],["projecttion","projection"],["projet","project"],["projetction","projection"],["projeted","projected"],["projeting","projecting"],["projets","projects"],["prolbems","problems"],["prolem","problem"],["prolematic","problematic"],["prolems","problems"],["prologomena","prolegomena"],["prominance","prominence"],["prominant","prominent"],["prominantly","prominently"],["promis","promise"],["promiscous","promiscuous"],["promiss","promise"],["promissed","promised"],["promisses","promises"],["promissing","promising"],["promixity","proximity"],["prommpt","prompt"],["prommpts","prompts"],["promotted","promoted"],["promprted","prompted"],["promps","prompts"],["promt","prompt"],["promts","prompts"],["pronnounced","pronounced"],["pronomial","pronominal"],["prononciation","pronunciation"],["pronouce","pronounce"],["pronouced","pronounced"],["pronounched","pronounced"],["pronounciation","pronunciation"],["pronunce","pronounce"],["proocecure","procedure"],["proocecures","procedures"],["proocedure","procedure"],["proocedures","procedures"],["proocess","process"],["proocessed","processed"],["proocesses","processes"],["proocessing","processing"],["proocol","protocol"],["proocols","protocols"],["prooduce","produce"],["prooduced","produced"],["prooduces","produces"],["prooduct","product"],["prooerties","properties"],["prooerty","property"],["prool","pool"],["prooof","proof"],["prooper","proper"],["prooperly","properly"],["prooperties","properties"],["prooperty","property"],["proose","propose"],["proosed","proposed"],["prooses","proposes"],["proove","prove"],["prooved","proved"],["prooven","proven"],["prooves","proves"],["prooving","proving"],["proovread","proofread"],["prooxies","proxies"],["prooxy","proxy"],["propably","probably"],["propage","propagate"],["propatagion","propagation"],["propator","propagator"],["propators","propagators"],["propbably","probably"],["propely","properly"],["propeoperties","properties"],["propereties","properties"],["properety","property"],["properies","properties"],["properites","properties"],["properities","properties"],["properries","properties"],["properrt","property"],["properrys","properties"],["propert","property"],["properteis","properties"],["propertery","property"],["propertion","proportion"],["propertional","proportional"],["propertions","proportions"],["propertise","properties"],["propertu","property"],["propertus","properties"],["propertys","properties"],["propertyst","properties"],["propeties","properties"],["propetry","property"],["propetrys","properties"],["propety","property"],["propetys","properties"],["propgated","propagated"],["prophacy","prophecy"],["propietary","proprietary"],["propietries","proprietaries"],["propietry","proprietary"],["propigate","propagate"],["propigation","propagation"],["proplem","problem"],["propmt","prompt"],["propmted","prompted"],["propmter","prompter"],["propmts","prompts"],["propoagate","propagate"],["propoerties","properties"],["propoerty","property"],["propoganda","propaganda"],["propogate","propagate"],["propogated","propagated"],["propogates","propagates"],["propogating","propagating"],["propogation","propagation"],["proporpotion","proportion"],["proporpotional","proportional"],["proportianal","proportional"],["proporties","properties"],["proportinal","proportional"],["proporty","property"],["propostion","proposition"],["proppely","properly"],["propper","proper"],["propperly","properly"],["propperties","properties"],["propperty","property"],["proprely","properly"],["propreties","properties"],["proprety","property"],["proprietory","proprietary"],["proproable","probable"],["proproably","probably"],["proprocessed","preprocessed"],["proprogate","propagate"],["proprogated","propagated"],["proprogates","propagates"],["proprogating","propagating"],["proprogation","propagation"],["proprogations","propagations"],["proprogator","propagator"],["proprogators","propagators"],["proproties","properties"],["proprotion","proportion"],["proprotional","proportional"],["proprotionally","proportionally"],["proprotions","proportions"],["proprty","property"],["propt","prompt"],["propteries","properties"],["propterties","properties"],["propterty","property"],["propvider","provider"],["prority","priority"],["prorotype","prototype"],["proseletyzing","proselytizing"],["prosess","process"],["prosessor","processor"],["protable","portable"],["protaganist","protagonist"],["protaganists","protagonists"],["protcol","protocol"],["protcols","protocols"],["protcool","protocol"],["protcools","protocols"],["protcted","protected"],["protecion","protection"],["protectiv","protective"],["protedcted","protected"],["protential","potential"],["protext","protect"],["protocal","protocol"],["protocals","protocols"],["protocl","protocol"],["protocls","protocols"],["protoco","protocol"],["protocoll","protocol"],["protocolls","protocols"],["protocos","protocols"],["protoganist","protagonist"],["protoge","protege"],["protol","protocol"],["protols","protocols"],["prototyes","prototypes"],["protoype","prototype"],["protoyped","prototyped"],["protoypes","prototypes"],["protoyping","prototyping"],["protoytpe","prototype"],["protoytpes","prototypes"],["protrait","portrait"],["protraits","portraits"],["protrayed","portrayed"],["protruberance","protuberance"],["protruberances","protuberances"],["prouncements","pronouncements"],["provacative","provocative"],["provded","provided"],["provder","provider"],["provdided","provided"],["provdie","provide"],["provdied","provided"],["provdies","provides"],["provding","providing"],["provences","provinces"],["provicde","provide"],["provicded","provided"],["provicdes","provides"],["provicial","provincial"],["provideres","providers"],["providewd","provided"],["providfers","providers"],["provieded","provided"],["proviedes","provides"],["provinicial","provincial"],["provisioing","provisioning"],["provisiong","provisioning"],["provisionging","provisioning"],["provisiosn","provision"],["provisonal","provisional"],["provive","provide"],["provived","provided"],["provives","provides"],["proviving","providing"],["provode","provide"],["provoded","provided"],["provoder","provider"],["provodes","provides"],["provoding","providing"],["provods","provides"],["provsioning","provisioning"],["proximty","proximity"],["prozess","process"],["prpeparations","preparations"],["prpose","propose"],["prposed","proposed"],["prposer","proposer"],["prposers","proposers"],["prposes","proposes"],["prposiing","proposing"],["prrcision","precision"],["prrottypes","prototypes"],["prset","preset"],["prsets","presets"],["prtinf","printf"],["prufe","proof"],["prviate","private"],["psaswd","passwd"],["pseude","pseudo"],["pseudononymous","pseudonymous"],["pseudonyn","pseudonym"],["pseudopoential","pseudopotential"],["pseudopoentials","pseudopotentials"],["pseudorinverse","pseudoinverse"],["pseuo-palette","pseudo-palette"],["psitoin","position"],["psitoined","positioned"],["psitoins","positions"],["psot","post"],["psots","posts"],["psrameter","parameter"],["pssed","passed"],["pssibility","possibility"],["psudo","pseudo"],["psudoinverse","pseudoinverse"],["psuedo","pseudo"],["psuedo-fork","pseudo-fork"],["psuedoinverse","pseudoinverse"],["psuedolayer","pseudolayer"],["psuh","push"],["psychadelic","psychedelic"],["psycology","psychology"],["psyhic","psychic"],["ptd","pdf"],["ptherad","pthread"],["ptherads","pthreads"],["pthon","python"],["pthred","pthread"],["pthreds","pthreads"],["ptorions","portions"],["ptrss","press"],["pubilsh","publish"],["pubilshed","published"],["pubilsher","publisher"],["pubilshers","publishers"],["pubilshing","publishing"],["pubish","publish"],["pubished","published"],["pubisher","publisher"],["pubishers","publishers"],["pubishing","publishing"],["publcation","publication"],["publcise","publicise"],["publcize","publicize"],["publiaher","publisher"],["publically","publicly"],["publicaly","publicly"],["publiched","published"],["publicher","publisher"],["publichers","publishers"],["publiches","publishes"],["publiching","publishing"],["publihsed","published"],["publihser","publisher"],["publised","published"],["publisehd","published"],["publisehr","publisher"],["publisehrs","publishers"],["publiser","publisher"],["publisers","publishers"],["publisged","published"],["publisger","publisher"],["publisgers","publishers"],["publishd","published"],["publisheed","published"],["publisherr","publisher"],["publishher","publisher"],["publishor","publisher"],["publishr","publisher"],["publishre","publisher"],["publishrs","publishers"],["publissher","publisher"],["publlisher","publisher"],["publsh","publish"],["publshed","published"],["publsher","publisher"],["publshers","publishers"],["publshing","publishing"],["publsih","publish"],["publsihed","published"],["publsiher","publisher"],["publsihers","publishers"],["publsihes","publishes"],["publsihing","publishing"],["publuc","public"],["publucation","publication"],["publush","publish"],["publusher","publisher"],["publushers","publishers"],["publushes","publishes"],["publushing","publishing"],["puchasing","purchasing"],["Pucini","Puccini"],["Puertorrican","Puerto Rican"],["Puertorricans","Puerto Ricans"],["pulisher","publisher"],["pullrequest","pull request"],["pullrequests","pull requests"],["pumkin","pumpkin"],["punctation","punctuation"],["puplar","popular"],["puplarity","popularity"],["puplate","populate"],["puplated","populated"],["puplates","populates"],["puplating","populating"],["puplation","population"],["puplisher","publisher"],["pupose","purpose"],["puposes","purposes"],["pupulated","populated"],["purcahed","purchased"],["purcahse","purchase"],["purgest","purges"],["puritannical","puritanical"],["purposedly","purposely"],["purpotedly","purportedly"],["purpse","purpose"],["pursuade","persuade"],["pursuaded","persuaded"],["pursuades","persuades"],["pusehd","pushed"],["pususading","persuading"],["puting","putting"],["putpose","purpose"],["putposed","purposed"],["putposes","purposes"],["pwoer","power"],["pxoxied","proxied"],["pxoxies","proxies"],["pxoxy","proxy"],["pyhon","python"],["pyhsical","physical"],["pyhsically","physically"],["pyhsicals","physicals"],["pyhsicaly","physically"],["pyhthon","python"],["pyhton","python"],["pyramide","pyramid"],["pyramides","pyramids"],["pyrhon","python"],["pyscic","psychic"],["pythin","python"],["pythjon","python"],["pytnon","python"],["pytohn","python"],["pyton","python"],["pytyon","python"],["qest","quest"],["qests","quests"],["qeuest","quest"],["qeuests","quests"],["qeueue","queue"],["qeust","quest"],["qeusts","quests"],["qiest","quest"],["qiests","quests"],["qith","with"],["qoute","quote"],["qouted","quoted"],["qoutes","quotes"],["qouting","quoting"],["quadddec","quaddec"],["quadranle","quadrangle"],["quailified","qualified"],["qualfied","qualified"],["qualfy","qualify"],["qualifer","qualifier"],["qualitification","qualification"],["qualitifications","qualifications"],["quanitified","quantified"],["quantaties","quantities"],["quantaty","quantity"],["quantitites","quantities"],["quantititive","quantitative"],["quantitity","quantity"],["quantitiy","quantity"],["quarantaine","quarantine"],["quarentine","quarantine"],["quartenion","quaternion"],["quartenions","quaternions"],["quartically","quadratically"],["quatation","quotation"],["quater","quarter"],["quation","equation"],["quations","equations"],["quckstarter","quickstarter"],["qudrangles","quadrangles"],["quee","queue"],["Queenland","Queensland"],["queing","queueing"],["queiried","queried"],["queisce","quiesce"],["queriable","queryable"],["quering","querying"],["querries","queries"],["queryies","queries"],["queryinterace","queryinterface"],["querys","queries"],["queset","quest"],["quesets","quests"],["quesiton","question"],["quesitonable","questionable"],["quesitons","questions"],["quesr","quest"],["quesrs","quests"],["questionaire","questionnaire"],["questionnair","questionnaire"],["questoin","question"],["questoins","questions"],["questonable","questionable"],["queu","queue"],["queueud","queued"],["queus","queues"],["quew","queue"],["quickier","quicker"],["quicklyu","quickly"],["quickyl","quickly"],["quicly","quickly"],["quiessent","quiescent"],["quiests","quests"],["quikc","quick"],["quinessential","quintessential"],["quiting","quitting"],["quitt","quit"],["quitted","quit"],["quizes","quizzes"],["quotaion","quotation"],["quoteed","quoted"],["quottes","quotes"],["quried","queried"],["quroum","quorum"],["qust","quest"],["qusts","quests"],["rabinnical","rabbinical"],["racaus","raucous"],["ractise","practise"],["radation","radiation"],["radiactive","radioactive"],["radiaton","radiation"],["radify","ratify"],["radiobuttion","radiobutton"],["radis","radix"],["rady","ready"],["raed","read"],["raeding","reading"],["raeds","reads"],["raedy","ready"],["raelly","really"],["raisedd","raised"],["ralation","relation"],["randmom","random"],["randomally","randomly"],["raoming","roaming"],["raotat","rotate"],["raotate","rotate"],["raotated","rotated"],["raotates","rotates"],["raotating","rotating"],["raotation","rotation"],["raotations","rotations"],["raotats","rotates"],["raplace","replace"],["raplacing","replacing"],["rapresent","represent"],["rapresentation","representation"],["rapresented","represented"],["rapresenting","representing"],["rapresents","represents"],["rapsberry","raspberry"],["rarelly","rarely"],["rarified","rarefied"],["rasberry","raspberry"],["rasie","raise"],["rasied","raised"],["rasies","raises"],["rasiing","raising"],["rasing","raising"],["rasons","reasons"],["raspbery","raspberry"],["raspoberry","raspberry"],["rathar","rather"],["rathern","rather"],["rcall","recall"],["rceate","create"],["rceating","creating"],["rduce","reduce"],["re-attachement","re-attachment"],["re-defiend","re-defined"],["re-engeneer","re-engineer"],["re-engeneering","re-engineering"],["re-evaulated","re-evaluated"],["re-impliment","re-implement"],["re-implimenting","re-implementing"],["re-negatiotiable","re-negotiable"],["re-negatiotiate","re-negotiate"],["re-negatiotiated","re-negotiated"],["re-negatiotiates","re-negotiates"],["re-negatiotiating","re-negotiating"],["re-negatiotiation","re-negotiation"],["re-negatiotiations","re-negotiations"],["re-negatiotiator","re-negotiator"],["re-negatiotiators","re-negotiators"],["re-negoable","re-negotiable"],["re-negoate","re-negotiate"],["re-negoated","re-negotiated"],["re-negoates","re-negotiates"],["re-negoatiable","re-negotiable"],["re-negoatiate","re-negotiate"],["re-negoatiated","re-negotiated"],["re-negoatiates","re-negotiates"],["re-negoatiating","re-negotiating"],["re-negoatiation","re-negotiation"],["re-negoatiations","re-negotiations"],["re-negoatiator","re-negotiator"],["re-negoatiators","re-negotiators"],["re-negoating","re-negotiating"],["re-negoation","re-negotiation"],["re-negoations","re-negotiations"],["re-negoator","re-negotiator"],["re-negoators","re-negotiators"],["re-negociable","re-negotiable"],["re-negociate","re-negotiate"],["re-negociated","re-negotiated"],["re-negociates","re-negotiates"],["re-negociating","re-negotiating"],["re-negociation","re-negotiation"],["re-negociations","re-negotiations"],["re-negociator","re-negotiator"],["re-negociators","re-negotiators"],["re-negogtiable","re-negotiable"],["re-negogtiate","re-negotiate"],["re-negogtiated","re-negotiated"],["re-negogtiates","re-negotiates"],["re-negogtiating","re-negotiating"],["re-negogtiation","re-negotiation"],["re-negogtiations","re-negotiations"],["re-negogtiator","re-negotiator"],["re-negogtiators","re-negotiators"],["re-negoitable","re-negotiable"],["re-negoitate","re-negotiate"],["re-negoitated","re-negotiated"],["re-negoitates","re-negotiates"],["re-negoitating","re-negotiating"],["re-negoitation","re-negotiation"],["re-negoitations","re-negotiations"],["re-negoitator","re-negotiator"],["re-negoitators","re-negotiators"],["re-negoptionsotiable","re-negotiable"],["re-negoptionsotiate","re-negotiate"],["re-negoptionsotiated","re-negotiated"],["re-negoptionsotiates","re-negotiates"],["re-negoptionsotiating","re-negotiating"],["re-negoptionsotiation","re-negotiation"],["re-negoptionsotiations","re-negotiations"],["re-negoptionsotiator","re-negotiator"],["re-negoptionsotiators","re-negotiators"],["re-negosiable","re-negotiable"],["re-negosiate","re-negotiate"],["re-negosiated","re-negotiated"],["re-negosiates","re-negotiates"],["re-negosiating","re-negotiating"],["re-negosiation","re-negotiation"],["re-negosiations","re-negotiations"],["re-negosiator","re-negotiator"],["re-negosiators","re-negotiators"],["re-negotable","re-negotiable"],["re-negotaiable","re-negotiable"],["re-negotaiate","re-negotiate"],["re-negotaiated","re-negotiated"],["re-negotaiates","re-negotiates"],["re-negotaiating","re-negotiating"],["re-negotaiation","re-negotiation"],["re-negotaiations","re-negotiations"],["re-negotaiator","re-negotiator"],["re-negotaiators","re-negotiators"],["re-negotaible","re-negotiable"],["re-negotaite","re-negotiate"],["re-negotaited","re-negotiated"],["re-negotaites","re-negotiates"],["re-negotaiting","re-negotiating"],["re-negotaition","re-negotiation"],["re-negotaitions","re-negotiations"],["re-negotaitor","re-negotiator"],["re-negotaitors","re-negotiators"],["re-negotate","re-negotiate"],["re-negotated","re-negotiated"],["re-negotates","re-negotiates"],["re-negotatiable","re-negotiable"],["re-negotatiate","re-negotiate"],["re-negotatiated","re-negotiated"],["re-negotatiates","re-negotiates"],["re-negotatiating","re-negotiating"],["re-negotatiation","re-negotiation"],["re-negotatiations","re-negotiations"],["re-negotatiator","re-negotiator"],["re-negotatiators","re-negotiators"],["re-negotatible","re-negotiable"],["re-negotatie","re-negotiate"],["re-negotatied","re-negotiated"],["re-negotaties","re-negotiates"],["re-negotating","re-negotiating"],["re-negotation","re-negotiation"],["re-negotations","re-negotiations"],["re-negotatior","re-negotiator"],["re-negotatiors","re-negotiators"],["re-negotator","re-negotiator"],["re-negotators","re-negotiators"],["re-negothiable","re-negotiable"],["re-negothiate","re-negotiate"],["re-negothiated","re-negotiated"],["re-negothiates","re-negotiates"],["re-negothiating","re-negotiating"],["re-negothiation","re-negotiation"],["re-negothiations","re-negotiations"],["re-negothiator","re-negotiator"],["re-negothiators","re-negotiators"],["re-negotible","re-negotiable"],["re-negoticable","re-negotiable"],["re-negoticate","re-negotiate"],["re-negoticated","re-negotiated"],["re-negoticates","re-negotiates"],["re-negoticating","re-negotiating"],["re-negotication","re-negotiation"],["re-negotications","re-negotiations"],["re-negoticator","re-negotiator"],["re-negoticators","re-negotiators"],["re-negotioable","re-negotiable"],["re-negotioate","re-negotiate"],["re-negotioated","re-negotiated"],["re-negotioates","re-negotiates"],["re-negotioating","re-negotiating"],["re-negotioation","re-negotiation"],["re-negotioations","re-negotiations"],["re-negotioator","re-negotiator"],["re-negotioators","re-negotiators"],["re-negotioble","re-negotiable"],["re-negotion","re-negotiation"],["re-negotionable","re-negotiable"],["re-negotionate","re-negotiate"],["re-negotionated","re-negotiated"],["re-negotionates","re-negotiates"],["re-negotionating","re-negotiating"],["re-negotionation","re-negotiation"],["re-negotionations","re-negotiations"],["re-negotionator","re-negotiator"],["re-negotionators","re-negotiators"],["re-negotions","re-negotiations"],["re-negotiotable","re-negotiable"],["re-negotiotate","re-negotiate"],["re-negotiotated","re-negotiated"],["re-negotiotates","re-negotiates"],["re-negotiotating","re-negotiating"],["re-negotiotation","re-negotiation"],["re-negotiotations","re-negotiations"],["re-negotiotator","re-negotiator"],["re-negotiotators","re-negotiators"],["re-negotiote","re-negotiate"],["re-negotioted","re-negotiated"],["re-negotiotes","re-negotiates"],["re-negotioting","re-negotiating"],["re-negotiotion","re-negotiation"],["re-negotiotions","re-negotiations"],["re-negotiotor","re-negotiator"],["re-negotiotors","re-negotiators"],["re-negotitable","re-negotiable"],["re-negotitae","re-negotiate"],["re-negotitaed","re-negotiated"],["re-negotitaes","re-negotiates"],["re-negotitaing","re-negotiating"],["re-negotitaion","re-negotiation"],["re-negotitaions","re-negotiations"],["re-negotitaor","re-negotiator"],["re-negotitaors","re-negotiators"],["re-negotitate","re-negotiate"],["re-negotitated","re-negotiated"],["re-negotitates","re-negotiates"],["re-negotitating","re-negotiating"],["re-negotitation","re-negotiation"],["re-negotitations","re-negotiations"],["re-negotitator","re-negotiator"],["re-negotitators","re-negotiators"],["re-negotite","re-negotiate"],["re-negotited","re-negotiated"],["re-negotites","re-negotiates"],["re-negotiting","re-negotiating"],["re-negotition","re-negotiation"],["re-negotitions","re-negotiations"],["re-negotitor","re-negotiator"],["re-negotitors","re-negotiators"],["re-negoziable","re-negotiable"],["re-negoziate","re-negotiate"],["re-negoziated","re-negotiated"],["re-negoziates","re-negotiates"],["re-negoziating","re-negotiating"],["re-negoziation","re-negotiation"],["re-negoziations","re-negotiations"],["re-negoziator","re-negotiator"],["re-negoziators","re-negotiators"],["re-realease","re-release"],["re-uplad","re-upload"],["re-upladed","re-uploaded"],["re-uplader","re-uploader"],["re-upladers","re-uploaders"],["re-uplading","re-uploading"],["re-uplads","re-uploads"],["re-uplaod","re-upload"],["re-uplaoded","re-uploaded"],["re-uplaoder","re-uploader"],["re-uplaoders","re-uploaders"],["re-uplaoding","re-uploading"],["re-uplaods","re-uploads"],["re-uplod","re-upload"],["re-uploded","re-uploaded"],["re-uploder","re-uploader"],["re-uploders","re-uploaders"],["re-uploding","re-uploading"],["re-uplods","re-uploads"],["reaaly","really"],["reaarange","rearrange"],["reaaranges","rearranges"],["reaasigned","reassigned"],["reacahable","reachable"],["reacahble","reachable"],["reaccurring","recurring"],["reaceive","receive"],["reacheable","reachable"],["reachers","readers"],["reachs","reaches"],["reacing","reaching"],["reacll","recall"],["reactquire","reacquire"],["readabilty","readability"],["readanle","readable"],["readapted","re-adapted"],["readble","readable"],["readdrss","readdress"],["readdrssed","readdressed"],["readdrsses","readdresses"],["readdrssing","readdressing"],["readeable","readable"],["reademe","README"],["readiable","readable"],["readibility","readability"],["readible","readable"],["readig","reading"],["readigs","readings"],["readius","radius"],["readl-only","read-only"],["readmition","readmission"],["readnig","reading"],["readning","reading"],["readyness","readiness"],["reaeched","reached"],["reagrding","regarding"],["reaktivate","reactivate"],["reaktivated","reactivated"],["realease","release"],["realeased","released"],["realeases","releases"],["realiable","reliable"],["realitime","realtime"],["realitvely","relatively"],["realiy","really"],["realiztion","realization"],["realiztions","realizations"],["realling","really"],["reallize","realize"],["reallllly","really"],["reallocae","reallocate"],["reallocaes","reallocates"],["reallocaiing","reallocating"],["reallocaing","reallocating"],["reallocaion","reallocation"],["reallocaions","reallocations"],["reallocaite","reallocate"],["reallocaites","reallocates"],["reallocaiting","reallocating"],["reallocaition","reallocation"],["reallocaitions","reallocations"],["reallocaiton","reallocation"],["reallocaitons","reallocations"],["realsitic","realistic"],["realted","related"],["realyl","really"],["reamde","README"],["reamins","remains"],["reander","render"],["reanme","rename"],["reanmed","renamed"],["reanmes","renames"],["reanming","renaming"],["reaon","reason"],["reaons","reasons"],["reapeat","repeat"],["reapeated","repeated"],["reapeater","repeater"],["reapeating","repeating"],["reapeats","repeats"],["reappeares","reappears"],["reapper","reappear"],["reappered","reappeared"],["reappering","reappearing"],["rearely","rarely"],["rearranable","rearrangeable"],["rearrane","rearrange"],["rearraned","rearranged"],["rearranement","rearrangement"],["rearranements","rearrangements"],["rearranent","rearrangement"],["rearranents","rearrangements"],["rearranes","rearranges"],["rearrang","rearrange"],["rearrangable","rearrangeable"],["rearrangaeble","rearrangeable"],["rearrangaelbe","rearrangeable"],["rearrangd","rearranged"],["rearrangde","rearranged"],["rearrangent","rearrangement"],["rearrangents","rearrangements"],["rearrangmeent","rearrangement"],["rearrangmeents","rearrangements"],["rearrangmenet","rearrangement"],["rearrangmenets","rearrangements"],["rearrangment","rearrangement"],["rearrangments","rearrangements"],["rearrangnig","rearranging"],["rearrangning","rearranging"],["rearrangs","rearranges"],["rearrangse","rearranges"],["rearrangt","rearrangement"],["rearrangte","rearrange"],["rearrangteable","rearrangeable"],["rearrangteables","rearrangeables"],["rearrangted","rearranged"],["rearrangtement","rearrangement"],["rearrangtements","rearrangements"],["rearrangtes","rearranges"],["rearrangting","rearranging"],["rearrangts","rearrangements"],["rearraning","rearranging"],["rearranment","rearrangement"],["rearranments","rearrangements"],["rearrant","rearrangement"],["rearrants","rearrangements"],["reasearch","research"],["reasearcher","researcher"],["reasearchers","researchers"],["reasnable","reasonable"],["reasoable","reasonable"],["reasonabily","reasonably"],["reasonble","reasonable"],["reasonbly","reasonably"],["reasonnable","reasonable"],["reasonnably","reasonably"],["reassinging","reassigning"],["reassocition","reassociation"],["reasssign","reassign"],["reatime","realtime"],["reattachement","reattachment"],["rebiulding","rebuilding"],["rebllions","rebellions"],["reboto","reboot"],["rebounce","rebound"],["rebuilded","rebuilt"],["rebuillt","rebuilt"],["rebuils","rebuilds"],["rebuit","rebuilt"],["rebuld","rebuild"],["rebulding","rebuilding"],["rebulds","rebuilds"],["rebulid","rebuild"],["rebuliding","rebuilding"],["rebulids","rebuilds"],["rebulit","rebuilt"],["recahed","reached"],["recal","recall"],["recalcualte","recalculate"],["recalcualted","recalculated"],["recalcualter","re-calculator"],["recalcualtes","recalculates"],["recalcualting","recalculating"],["recalcualtion","recalculation"],["recalcualtions","recalculations"],["recalcuate","recalculate"],["recalcuated","recalculated"],["recalcuates","recalculates"],["recalcuations","recalculations"],["recalculaion","recalculation"],["recalculatble","re-calculable"],["recalcution","recalculation"],["recalulate","recalculate"],["recalulation","recalculation"],["recangle","rectangle"],["recangles","rectangles"],["reccomend","recommend"],["reccomendations","recommendations"],["reccomended","recommended"],["reccomending","recommending"],["reccommend","recommend"],["reccommendation","recommendation"],["reccommendations","recommendations"],["reccommended","recommended"],["reccommending","recommending"],["reccommends","recommends"],["recconecct","reconnect"],["recconeccted","reconnected"],["recconeccting","reconnecting"],["recconecction","reconnection"],["recconecctions","reconnections"],["recconeccts","reconnects"],["recconect","reconnect"],["recconected","reconnected"],["recconecting","reconnecting"],["recconection","reconnection"],["recconections","reconnections"],["recconects","reconnects"],["recconeect","reconnect"],["recconeected","reconnected"],["recconeecting","reconnecting"],["recconeection","reconnection"],["recconeections","reconnections"],["recconeects","reconnects"],["recconenct","reconnect"],["recconencted","reconnected"],["recconencting","reconnecting"],["recconenction","reconnection"],["recconenctions","reconnections"],["recconencts","reconnects"],["recconet","reconnect"],["recconeted","reconnected"],["recconeting","reconnecting"],["recconetion","reconnection"],["recconetions","reconnections"],["recconets","reconnects"],["reccord","record"],["reccorded","recorded"],["reccording","recording"],["reccords","records"],["reccuring","recurring"],["reccursive","recursive"],["reccursively","recursively"],["receeded","receded"],["receeding","receding"],["receied","received"],["receieve","receive"],["receieved","received"],["receieves","receives"],["receieving","receiving"],["receipient","recipient"],["receipients","recipients"],["receiption","reception"],["receiv","receive"],["receivd","received"],["receivedfrom","received from"],["receiveing","receiving"],["receiviing","receiving"],["receivs","receives"],["recenet","recent"],["recenlty","recently"],["recenly","recently"],["recenty","recently"],["recepient","recipient"],["recepients","recipients"],["recepion","reception"],["receve","receive"],["receved","received"],["receves","receives"],["recevie","receive"],["recevied","received"],["recevier","receiver"],["recevies","receives"],["receving","receiving"],["rechable","reachable"],["rechargable","rechargeable"],["recheability","reachability"],["reched","reached"],["rechek","recheck"],["recide","reside"],["recided","resided"],["recident","resident"],["recidents","residents"],["reciding","residing"],["reciepents","recipients"],["reciept","receipt"],["recieve","receive"],["recieved","received"],["reciever","receiver"],["recievers","receivers"],["recieves","receives"],["recieving","receiving"],["recievs","receives"],["recipiant","recipient"],["recipiants","recipients"],["recipie","recipe"],["recipies","recipes"],["reciprocoal","reciprocal"],["reciprocoals","reciprocals"],["recive","receive"],["recived","received"],["reciver","receiver"],["recivers","receivers"],["recivership","receivership"],["recives","receives"],["reciving","receiving"],["reclaimation","reclamation"],["recntly","recently"],["recod","record"],["recofig","reconfig"],["recoginizing-","recognizing"],["recogise","recognise"],["recogize","recognize"],["recogized","recognized"],["recogizes","recognizes"],["recogizing","recognizing"],["recogniced","recognised"],["recogninse","recognise"],["recognizeable","recognizable"],["recognzied","recognized"],["recomend","recommend"],["recomendation","recommendation"],["recomendations","recommendations"],["recomendatoin","recommendation"],["recomendatoins","recommendations"],["recomended","recommended"],["recomending","recommending"],["recomends","recommends"],["recommad","recommend"],["recommaded","recommended"],["recommand","recommend"],["recommandation","recommendation"],["recommanded","recommended"],["recommanding","recommending"],["recommands","recommends"],["recommd","recommend"],["recommdation","recommendation"],["recommded","recommended"],["recommdend","recommend"],["recommdended","recommended"],["recommdends","recommends"],["recommds","recommends"],["recommed","recommend"],["recommedation","recommendation"],["recommedations","recommendations"],["recommeded","recommended"],["recommeding","recommending"],["recommeds","recommends"],["recommened","recommended"],["recommeneded","recommended"],["recommented","recommended"],["recommmend","recommend"],["recommmended","recommended"],["recommmends","recommends"],["recommnd","recommend"],["recommnded","recommended"],["recommnds","recommends"],["recommned","recommend"],["recommneded","recommended"],["recommneds","recommends"],["recommpile","recompile"],["recommpiled","recompiled"],["recompence","recompense"],["recomput","recompute"],["recomputaion","recomputation"],["recompuute","recompute"],["recompuuted","recomputed"],["recompuutes","recomputes"],["recompuuting","recomputing"],["reconaissance","reconnaissance"],["reconcilation","reconciliation"],["recondifure","reconfigure"],["reconecct","reconnect"],["reconeccted","reconnected"],["reconeccting","reconnecting"],["reconecction","reconnection"],["reconecctions","reconnections"],["reconeccts","reconnects"],["reconect","reconnect"],["reconected","reconnected"],["reconecting","reconnecting"],["reconection","reconnection"],["reconections","reconnections"],["reconects","reconnects"],["reconeect","reconnect"],["reconeected","reconnected"],["reconeecting","reconnecting"],["reconeection","reconnection"],["reconeections","reconnections"],["reconeects","reconnects"],["reconenct","reconnect"],["reconencted","reconnected"],["reconencting","reconnecting"],["reconenction","reconnection"],["reconenctions","reconnections"],["reconencts","reconnects"],["reconet","reconnect"],["reconeted","reconnected"],["reconeting","reconnecting"],["reconetion","reconnection"],["reconetions","reconnections"],["reconets","reconnects"],["reconfifure","reconfigure"],["reconfiged","reconfigured"],["reconfugire","reconfigure"],["reconfugre","reconfigure"],["reconfugure","reconfigure"],["reconfure","reconfigure"],["recongifure","reconfigure"],["recongize","recognize"],["recongized","recognized"],["recongnises","recognises"],["recongnizes","recognizes"],["reconize","recognize"],["reconized","recognized"],["reconnaisance","reconnaissance"],["reconnaissence","reconnaissance"],["reconnct","reconnect"],["reconncted","reconnected"],["reconncting","reconnecting"],["reconncts","reconnects"],["reconsidder","reconsider"],["reconstrcut","reconstruct"],["reconstrcuted","reconstructed"],["reconstrcution","reconstruction"],["reconstuct","reconstruct"],["reconstucted","reconstructed"],["reconstucting","reconstructing"],["reconstucts","reconstructs"],["reconsturction","reconstruction"],["recontruct","reconstruct"],["recontructed","reconstructed"],["recontructing","reconstructing"],["recontruction","reconstruction"],["recontructions","reconstructions"],["recontructor","reconstructor"],["recontructors","reconstructors"],["recontructs","reconstructs"],["recordproducer","record producer"],["recordss","records"],["recored","recorded"],["recoriding","recording"],["recourced","resourced"],["recources","resources"],["recourcing","resourcing"],["recpie","recipe"],["recpies","recipes"],["recquired","required"],["recrational","recreational"],["recreateation","recreation"],["recrod","record"],["recrods","records"],["recrusevly","recursively"],["recrusion","recursion"],["recrusive","recursive"],["recrusivelly","recursively"],["recrusively","recursively"],["rectange","rectangle"],["rectanges","rectangles"],["rectanglar","rectangular"],["rectangluar","rectangular"],["rectiinear","rectilinear"],["recude","reduce"],["recuiting","recruiting"],["reculrively","recursively"],["recuring","recurring"],["recurisvely","recursively"],["recurively","recursively"],["recurrance","recurrence"],["recursily","recursively"],["recursivelly","recursively"],["recursivion","recursion"],["recursivley","recursively"],["recursivly","recursively"],["recurssed","recursed"],["recursses","recurses"],["recurssing","recursing"],["recurssion","recursion"],["recurssive","recursive"],["recusrive","recursive"],["recusrively","recursively"],["recusrsive","recursive"],["recustion","recursion"],["recyclying","recycling"],["recylcing","recycling"],["recyle","recycle"],["recyled","recycled"],["recyles","recycles"],["recyling","recycling"],["redability","readability"],["redandant","redundant"],["redeable","readable"],["redeclaation","redeclaration"],["redefiend","redefined"],["redefiende","redefined"],["redefintion","redefinition"],["redefintions","redefinitions"],["redenderer","renderer"],["redered","rendered"],["redict","redirect"],["rediculous","ridiculous"],["redidual","residual"],["redifine","redefine"],["redifinition","redefinition"],["redifinitions","redefinitions"],["redifintion","redefinition"],["redifintions","redefinitions"],["reding","reading"],["redings","readings"],["redircet","redirect"],["redirectd","redirected"],["redirectrion","redirection"],["redisign","redesign"],["redistirbute","redistribute"],["redistirbuted","redistributed"],["redistirbutes","redistributes"],["redistirbuting","redistributing"],["redistirbution","redistribution"],["redistributeable","redistributable"],["redistrubute","redistribute"],["redistrubuted","redistributed"],["redistrubution","redistribution"],["redistrubutions","redistributions"],["redliens","redlines"],["rednerer","renderer"],["redonly","readonly"],["redudancy","redundancy"],["redudant","redundant"],["redunancy","redundancy"],["redunant","redundant"],["redundacy","redundancy"],["redundand","redundant"],["redundat","redundant"],["redundency","redundancy"],["redundent","redundant"],["reduntancy","redundancy"],["reduntant","redundant"],["reease","release"],["reeased","released"],["reeaser","releaser"],["reeasers","releasers"],["reeases","releases"],["reeasing","releasing"],["reedeming","redeeming"],["reegion","region"],["reegions","regions"],["reelation","relation"],["reelease","release"],["reenable","re-enable"],["reenabled","re-enabled"],["reename","rename"],["reencode","re-encode"],["reenfoce","reinforce"],["reenfoced","reinforced"],["reenforced","reinforced"],["reesrved","reserved"],["reesult","result"],["reeturn","return"],["reeturned","returned"],["reeturning","returning"],["reeturns","returns"],["reevalute","reevaluate"],["reevaulating","reevaluating"],["refcound","refcount"],["refcounf","refcount"],["refect","reflect"],["refected","reflected"],["refecting","reflecting"],["refectiv","reflective"],["refector","refactor"],["refectoring","refactoring"],["refects","reflects"],["refedendum","referendum"],["refeinement","refinement"],["refeinements","refinements"],["refelects","reflects"],["refence","reference"],["refences","references"],["refenence","reference"],["refenrenced","referenced"],["referal","referral"],["referance","reference"],["referanced","referenced"],["referances","references"],["referant","referent"],["referebces","references"],["referece","reference"],["referecence","reference"],["referecences","references"],["refereces","references"],["referecne","reference"],["refered","referred"],["referefences","references"],["referemce","reference"],["referemces","references"],["referenace","reference"],["referenc","reference"],["referencable","referenceable"],["referencial","referential"],["referencially","referentially"],["referencs","references"],["referenct","referenced"],["referene","reference"],["referenece","reference"],["refereneced","referenced"],["refereneces","references"],["referened","referenced"],["referenence","reference"],["referenenced","referenced"],["referenences","references"],["referenes","references"],["referennces","references"],["referense","reference"],["referensed","referenced"],["referenses","references"],["referenz","reference"],["referenzes","references"],["refererd","referred"],["refererence","reference"],["referiang","referring"],["refering","referring"],["refernce","reference"],["refernced","referenced"],["referncence","reference"],["referncences","references"],["refernces","references"],["referncial","referential"],["referncing","referencing"],["refernece","reference"],["referneced","referenced"],["referneces","references"],["refernnce","reference"],["referr","refer"],["referrence","reference"],["referrenced","referenced"],["referrences","references"],["referrencing","referencing"],["referreres","referrers"],["referres","refers"],["referrs","refers"],["refertence","reference"],["refertenced","referenced"],["refertences","references"],["refesh","refresh"],["refeshed","refreshed"],["refeshes","refreshes"],["refeshing","refreshing"],["reffered","referred"],["refference","reference"],["reffering","referring"],["refferr","refer"],["reffers","refers"],["refinemenet","refinement"],["refinmenet","refinement"],["refinment","refinement"],["reflet","reflect"],["refleted","reflected"],["refleting","reflecting"],["refletion","reflection"],["refletions","reflections"],["reflets","reflects"],["refocuss","refocus"],["refocussed","refocused"],["reformating","reformatting"],["reformattd","reformatted"],["refreh","refresh"],["refrence","reference"],["refrenced","referenced"],["refrences","references"],["refrencing","referencing"],["refrerence","reference"],["refrerenced","referenced"],["refrerenceing","referencing"],["refrerences","references"],["refrerencial","referential"],["refrers","refers"],["refreshs","refreshes"],["refreshses","refreshes"],["refridgeration","refrigeration"],["refridgerator","refrigerator"],["refromatting","refomatting"],["refromist","reformist"],["refrormatting","reformatting"],["refure","refuse"],["refures","refuses"],["refusla","refusal"],["regalar","regular"],["regalars","regulars"],["regardes","regards"],["regardles","regardless"],["regardlesss","regardless"],["regaring","regarding"],["regarldess","regardless"],["regarless","regardless"],["regart","regard"],["regarted","regarded"],["regarting","regarding"],["regartless","regardless"],["regconized","recognized"],["regeister","register"],["regeistered","registered"],["regeistration","registration"],["regenarated","regenerated"],["regenrated","regenerated"],["regenratet","regenerated"],["regenrating","regenerating"],["regenration","regeneration"],["regenrative","regenerative"],["regession","regression"],["regestered","registered"],["regidstered","registered"],["regio","region"],["regiser","register"],["regisration","registration"],["regist","register"],["registartion","registration"],["registe","register"],["registed","registered"],["registeing","registering"],["registeration","registration"],["registerered","registered"],["registeres","registers"],["registeresd","registered"],["registerred","registered"],["registert","registered"],["registery","registry"],["registes","registers"],["registing","registering"],["registors","registers"],["registrain","registration"],["registraion","registration"],["registraions","registrations"],["registraration","registration"],["registrated","registered"],["registred","registered"],["registrer","register"],["registring","registering"],["registrs","registers"],["registy","registry"],["regiter","register"],["regitered","registered"],["regitering","registering"],["regiters","registers"],["regluar","regular"],["regon","region"],["regons","regions"],["regorded","recorded"],["regresion","regression"],["regresison","regression"],["regresssion","regression"],["regrigerator","refrigerator"],["regsion","region"],["regsions","regions"],["regsiter","register"],["regsitered","registered"],["regsitering","registering"],["regsiters","registers"],["regsitry","registry"],["regster","register"],["regstered","registered"],["regstering","registering"],["regsters","registers"],["regstry","registry"],["regualar","regular"],["regualarly","regularly"],["regualator","regulator"],["regualr","regular"],["regualtor","regulator"],["reguardless","regardless"],["reguarldess","regardless"],["reguarlise","regularise"],["reguarliser","regulariser"],["reguarlize","regularize"],["reguarlizer","regularizer"],["reguarly","regularly"],["reguator","regulator"],["reguire","require"],["reguired","required"],["reguirement","requirement"],["reguirements","requirements"],["reguires","requires"],["reguiring","requiring"],["regulaer","regular"],["regulaion","regulation"],["regulamentation","regulation"],["regulamentations","regulations"],["regulaotrs","regulators"],["regulaotry","regulatory"],["regularily","regularly"],["regulariry","regularly"],["regularlisation","regularisation"],["regularlise","regularise"],["regularlised","regularised"],["regularliser","regulariser"],["regularlises","regularises"],["regularlising","regularising"],["regularlization","regularization"],["regularlize","regularize"],["regularlized","regularized"],["regularlizer","regularizer"],["regularlizes","regularizes"],["regularlizing","regularizing"],["regularlly","regularly"],["regulax","regular"],["reguler","regular"],["regulr","regular"],["regultor","regulator"],["regultors","regulators"],["regultory","regulatory"],["regurlarly","regularly"],["reguster","register"],["rehersal","rehearsal"],["rehersing","rehearsing"],["reicarnation","reincarnation"],["reigining","reigning"],["reigonal","regional"],["reigster","register"],["reigstered","registered"],["reigstering","registering"],["reigsters","registers"],["reigstration","registration"],["reimplemenet","reimplement"],["reimplementaion","reimplementation"],["reimplementaions","reimplementations"],["reimplemention","reimplementation"],["reimplementions","reimplementations"],["reimplented","reimplemented"],["reimplents","reimplements"],["reimpliment","reimplement"],["reimplimenting","reimplementing"],["reimplmenet","reimplement"],["reimplment","reimplement"],["reimplmentation","reimplementation"],["reimplmented","reimplemented"],["reimplmenting","reimplementing"],["reimplments","reimplements"],["reimpplement","reimplement"],["reimpplementating","reimplementing"],["reimpplementation","reimplementation"],["reimpplemented","reimplemented"],["reimpremented","reimplemented"],["reinfoce","reinforce"],["reinfoced","reinforced"],["reinfocement","reinforcement"],["reinfocements","reinforcements"],["reinfoces","reinforces"],["reinfocing","reinforcing"],["reinitailise","reinitialise"],["reinitailised","reinitialised"],["reinitailize","reinitialize"],["reinitalize","reinitialize"],["reinitilize","reinitialize"],["reinitilized","reinitialized"],["reinstatiate","reinstantiate"],["reinstatiated","reinstantiated"],["reinstatiates","reinstantiates"],["reinstatiation","reinstantiation"],["reintantiate","reinstantiate"],["reintantiating","reinstantiating"],["reintepret","reinterpret"],["reintepreted","reinterpreted"],["reister","register"],["reitterate","reiterate"],["reitterated","reiterated"],["reitterates","reiterates"],["reivison","revision"],["rejplace","replace"],["reknown","renown"],["reknowned","renowned"],["rekursed","recursed"],["rekursion","recursion"],["rekursive","recursive"],["relaative","relative"],["relady","ready"],["relaease","release"],["relaese","release"],["relaesed","released"],["relaeses","releases"],["relaesing","releasing"],["relaged","related"],["relaimed","reclaimed"],["relaion","relation"],["relaive","relative"],["relaly","really"],["relase","release"],["relased","released"],["relaser","releaser"],["relases","releases"],["relashionship","relationship"],["relashionships","relationships"],["relasing","releasing"],["relataive","relative"],["relatated","related"],["relatd","related"],["relatdness","relatedness"],["relatibe","relative"],["relatibely","relatively"],["relatievly","relatively"],["relatiopnship","relationship"],["relativ","relative"],["relativly","relatively"],["relavant","relevant"],["relavent","relevant"],["releaase","release"],["releaased","released"],["relead","reload"],["releae","release"],["releaed","released"],["releaeing","releasing"],["releaing","releasing"],["releas","release"],["releasead","released"],["releasse","release"],["releated","related"],["releating","relating"],["releation","relation"],["releations","relations"],["releationship","relationship"],["releationships","relationships"],["releative","relative"],["releavant","relevant"],["relecant","relevant"],["releive","relieve"],["releived","relieved"],["releiver","reliever"],["releoad","reload"],["relese","release"],["relesed","released"],["releses","releases"],["reletive","relative"],["reletively","relatively"],["relevabt","relevant"],["relevane","relevant"],["releveant","relevant"],["relevence","relevance"],["relevent","relevant"],["relfected","reflected"],["relfecting","reflecting"],["relfection","reflection"],["relfections","reflections"],["reliablity","reliability"],["relient","reliant"],["religeous","religious"],["religous","religious"],["religously","religiously"],["relinguish","relinquish"],["relinguishing","relinquishing"],["relinqushment","relinquishment"],["relintquish","relinquish"],["relitavely","relatively"],["relly","really"],["reloade","reload"],["relocae","relocate"],["relocaes","relocates"],["relocaiing","relocating"],["relocaing","relocating"],["relocaion","relocation"],["relocaions","relocations"],["relocaite","relocate"],["relocaites","relocates"],["relocaiting","relocating"],["relocaition","relocation"],["relocaitions","relocations"],["relocaiton","relocation"],["relocaitons","relocations"],["relocateable","relocatable"],["reloccate","relocate"],["reloccated","relocated"],["reloccates","relocates"],["relpacement","replacement"],["relpy","reply"],["reltive","relative"],["relyable","reliable"],["relyably","reliably"],["relyed","relied"],["relys","relies"],["remaing","remaining"],["remainging","remaining"],["remainig","remaining"],["remainst","remains"],["remaning","remaining"],["remaped","remapped"],["remaping","remapping"],["rembember","remember"],["rembembered","remembered"],["rembembering","remembering"],["rembembers","remembers"],["rember","remember"],["remeber","remember"],["remebered","remembered"],["remebering","remembering"],["remebers","remembers"],["rememberable","memorable"],["rememberance","remembrance"],["rememberd","remembered"],["remembrence","remembrance"],["rememeber","remember"],["rememebered","remembered"],["rememebering","remembering"],["rememebers","remembers"],["rememebr","remember"],["rememebred","remembered"],["rememebrs","remembers"],["rememember","remember"],["rememembered","remembered"],["rememembers","remembers"],["rememer","remember"],["rememered","remembered"],["rememers","remembers"],["rememor","remember"],["rememored","remembered"],["rememoring","remembering"],["rememors","remembers"],["rememver","remember"],["remenant","remnant"],["remenber","remember"],["remenicent","reminiscent"],["remian","remain"],["remianed","remained"],["remianing","remaining"],["remians","remains"],["reminent","remnant"],["reminescent","reminiscent"],["remining","remaining"],["reminiscense","reminiscence"],["reminscent","reminiscent"],["reminsicent","reminiscent"],["remmeber","remember"],["remmebered","remembered"],["remmebering","remembering"],["remmebers","remembers"],["remmove","remove"],["remoce","remove"],["remoive","remove"],["remoived","removed"],["remoives","removes"],["remoiving","removing"],["remontly","remotely"],["remoote","remote"],["remore","remote"],["remorted","reported"],["remot","remote"],["removce","remove"],["removeable","removable"],["removefromat","removeformat"],["removeing","removing"],["removerd","removed"],["remve","remove"],["remved","removed"],["remves","removes"],["remvoe","remove"],["remvoed","removed"],["remvoes","removes"],["remvove","remove"],["remvoved","removed"],["remvoves","removes"],["remvs","removes"],["renabled","re-enabled"],["renderadble","renderable"],["renderd","rendered"],["rendereing","rendering"],["rendererd","rendered"],["renderered","rendered"],["renderering","rendering"],["renderning","rendering"],["renderr","render"],["renderring","rendering"],["rendevous","rendezvous"],["rendezous","rendezvous"],["rendired","rendered"],["rendirer","renderer"],["rendirers","renderers"],["rendiring","rendering"],["rendring","rendering"],["renedered","rendered"],["renegatiotiable","renegotiable"],["renegatiotiate","renegotiate"],["renegatiotiated","renegotiated"],["renegatiotiates","renegotiates"],["renegatiotiating","renegotiating"],["renegatiotiation","renegotiation"],["renegatiotiations","renegotiations"],["renegatiotiator","renegotiator"],["renegatiotiators","renegotiators"],["renegoable","renegotiable"],["renegoate","renegotiate"],["renegoated","renegotiated"],["renegoates","renegotiates"],["renegoatiable","renegotiable"],["renegoatiate","renegotiate"],["renegoatiated","renegotiated"],["renegoatiates","renegotiates"],["renegoatiating","renegotiating"],["renegoatiation","renegotiation"],["renegoatiations","renegotiations"],["renegoatiator","renegotiator"],["renegoatiators","renegotiators"],["renegoating","renegotiating"],["renegoation","renegotiation"],["renegoations","renegotiations"],["renegoator","renegotiator"],["renegoators","renegotiators"],["renegociable","renegotiable"],["renegociate","renegotiate"],["renegociated","renegotiated"],["renegociates","renegotiates"],["renegociating","renegotiating"],["renegociation","renegotiation"],["renegociations","renegotiations"],["renegociator","renegotiator"],["renegociators","renegotiators"],["renegogtiable","renegotiable"],["renegogtiate","renegotiate"],["renegogtiated","renegotiated"],["renegogtiates","renegotiates"],["renegogtiating","renegotiating"],["renegogtiation","renegotiation"],["renegogtiations","renegotiations"],["renegogtiator","renegotiator"],["renegogtiators","renegotiators"],["renegoitable","renegotiable"],["renegoitate","renegotiate"],["renegoitated","renegotiated"],["renegoitates","renegotiates"],["renegoitating","renegotiating"],["renegoitation","renegotiation"],["renegoitations","renegotiations"],["renegoitator","renegotiator"],["renegoitators","renegotiators"],["renegoptionsotiable","renegotiable"],["renegoptionsotiate","renegotiate"],["renegoptionsotiated","renegotiated"],["renegoptionsotiates","renegotiates"],["renegoptionsotiating","renegotiating"],["renegoptionsotiation","renegotiation"],["renegoptionsotiations","renegotiations"],["renegoptionsotiator","renegotiator"],["renegoptionsotiators","renegotiators"],["renegosiable","renegotiable"],["renegosiate","renegotiate"],["renegosiated","renegotiated"],["renegosiates","renegotiates"],["renegosiating","renegotiating"],["renegosiation","renegotiation"],["renegosiations","renegotiations"],["renegosiator","renegotiator"],["renegosiators","renegotiators"],["renegotable","renegotiable"],["renegotaiable","renegotiable"],["renegotaiate","renegotiate"],["renegotaiated","renegotiated"],["renegotaiates","renegotiates"],["renegotaiating","renegotiating"],["renegotaiation","renegotiation"],["renegotaiations","renegotiations"],["renegotaiator","renegotiator"],["renegotaiators","renegotiators"],["renegotaible","renegotiable"],["renegotaite","renegotiate"],["renegotaited","renegotiated"],["renegotaites","renegotiates"],["renegotaiting","renegotiating"],["renegotaition","renegotiation"],["renegotaitions","renegotiations"],["renegotaitor","renegotiator"],["renegotaitors","renegotiators"],["renegotate","renegotiate"],["renegotated","renegotiated"],["renegotates","renegotiates"],["renegotatiable","renegotiable"],["renegotatiate","renegotiate"],["renegotatiated","renegotiated"],["renegotatiates","renegotiates"],["renegotatiating","renegotiating"],["renegotatiation","renegotiation"],["renegotatiations","renegotiations"],["renegotatiator","renegotiator"],["renegotatiators","renegotiators"],["renegotatible","renegotiable"],["renegotatie","renegotiate"],["renegotatied","renegotiated"],["renegotaties","renegotiates"],["renegotating","renegotiating"],["renegotation","renegotiation"],["renegotations","renegotiations"],["renegotatior","renegotiator"],["renegotatiors","renegotiators"],["renegotator","renegotiator"],["renegotators","renegotiators"],["renegothiable","renegotiable"],["renegothiate","renegotiate"],["renegothiated","renegotiated"],["renegothiates","renegotiates"],["renegothiating","renegotiating"],["renegothiation","renegotiation"],["renegothiations","renegotiations"],["renegothiator","renegotiator"],["renegothiators","renegotiators"],["renegotible","renegotiable"],["renegoticable","renegotiable"],["renegoticate","renegotiate"],["renegoticated","renegotiated"],["renegoticates","renegotiates"],["renegoticating","renegotiating"],["renegotication","renegotiation"],["renegotications","renegotiations"],["renegoticator","renegotiator"],["renegoticators","renegotiators"],["renegotioable","renegotiable"],["renegotioate","renegotiate"],["renegotioated","renegotiated"],["renegotioates","renegotiates"],["renegotioating","renegotiating"],["renegotioation","renegotiation"],["renegotioations","renegotiations"],["renegotioator","renegotiator"],["renegotioators","renegotiators"],["renegotioble","renegotiable"],["renegotion","renegotiation"],["renegotionable","renegotiable"],["renegotionate","renegotiate"],["renegotionated","renegotiated"],["renegotionates","renegotiates"],["renegotionating","renegotiating"],["renegotionation","renegotiation"],["renegotionations","renegotiations"],["renegotionator","renegotiator"],["renegotionators","renegotiators"],["renegotions","renegotiations"],["renegotiotable","renegotiable"],["renegotiotate","renegotiate"],["renegotiotated","renegotiated"],["renegotiotates","renegotiates"],["renegotiotating","renegotiating"],["renegotiotation","renegotiation"],["renegotiotations","renegotiations"],["renegotiotator","renegotiator"],["renegotiotators","renegotiators"],["renegotiote","renegotiate"],["renegotioted","renegotiated"],["renegotiotes","renegotiates"],["renegotioting","renegotiating"],["renegotiotion","renegotiation"],["renegotiotions","renegotiations"],["renegotiotor","renegotiator"],["renegotiotors","renegotiators"],["renegotitable","renegotiable"],["renegotitae","renegotiate"],["renegotitaed","renegotiated"],["renegotitaes","renegotiates"],["renegotitaing","renegotiating"],["renegotitaion","renegotiation"],["renegotitaions","renegotiations"],["renegotitaor","renegotiator"],["renegotitaors","renegotiators"],["renegotitate","renegotiate"],["renegotitated","renegotiated"],["renegotitates","renegotiates"],["renegotitating","renegotiating"],["renegotitation","renegotiation"],["renegotitations","renegotiations"],["renegotitator","renegotiator"],["renegotitators","renegotiators"],["renegotite","renegotiate"],["renegotited","renegotiated"],["renegotites","renegotiates"],["renegotiting","renegotiating"],["renegotition","renegotiation"],["renegotitions","renegotiations"],["renegotitor","renegotiator"],["renegotitors","renegotiators"],["renegoziable","renegotiable"],["renegoziate","renegotiate"],["renegoziated","renegotiated"],["renegoziates","renegotiates"],["renegoziating","renegotiating"],["renegoziation","renegotiation"],["renegoziations","renegotiations"],["renegoziator","renegotiator"],["renegoziators","renegotiators"],["reneweal","renewal"],["renewl","renewal"],["renforce","reinforce"],["renforced","reinforced"],["renforcement","reinforcement"],["renforcements","reinforcements"],["renforces","reinforces"],["rennovate","renovate"],["rennovated","renovated"],["rennovating","renovating"],["rennovation","renovation"],["rentime","runtime"],["rentors","renters"],["reoadmap","roadmap"],["reoccurrence","recurrence"],["reoder","reorder"],["reomvable","removable"],["reomve","remove"],["reomved","removed"],["reomves","removes"],["reomving","removing"],["reonly","read-only"],["reopended","reopened"],["reoport","report"],["reopsitory","repository"],["reord","record"],["reorded","reorder"],["reorer","reorder"],["reorganision","reorganisation"],["reorginised","reorganised"],["reorginized","reorganized"],["reosnable","reasonable"],["reosne","reason"],["reosurce","resource"],["reosurced","resourced"],["reosurces","resources"],["reosurcing","resourcing"],["reounded","rounded"],["repace","replace"],["repaced","replaced"],["repacement","replacement"],["repacements","replacements"],["repaces","replaces"],["repacing","replacing"],["repackge","repackage"],["repackged","repackaged"],["repaitnt","repaint"],["reparamterization","reparameterization"],["repblic","republic"],["repblican","republican"],["repblicans","republicans"],["repblics","republics"],["repeates","repeats"],["repeatly","repeatedly"],["repect","respect"],["repectable","respectable"],["repected","respected"],["repecting","respecting"],["repective","respective"],["repectively","respectively"],["repects","respects"],["repedability","repeatability"],["repedable","repeatable"],["repeition","repetition"],["repentence","repentance"],["repentent","repentant"],["reperesent","represent"],["reperesentation","representation"],["reperesentational","representational"],["reperesentations","representations"],["reperesented","represented"],["reperesenting","representing"],["reperesents","represents"],["repersentation","representation"],["repertoir","repertoire"],["repesent","represent"],["repesentation","representation"],["repesentational","representational"],["repesented","represented"],["repesenting","representing"],["repesents","represents"],["repet","repeat"],["repetative","repetitive"],["repete","repeat"],["repeteadly","repeatedly"],["repetetion","repetition"],["repetetions","repetitions"],["repetetive","repetitive"],["repeting","repeating"],["repetion","repetition"],["repetions","repetitions"],["repetive","repetitive"],["repid","rapid"],["repition","repetition"],["repitions","repetitions"],["repitition","repetition"],["repititions","repetitions"],["replacability","replaceability"],["replacables","replaceables"],["replacacing","replacing"],["replacalbe","replaceable"],["replacalbes","replaceables"],["replacament","replacement"],["replacaments","replacements"],["replacate","replicate"],["replacated","replicated"],["replacates","replicates"],["replacating","replicating"],["replacation","replication"],["replacd","replaced"],["replaceemnt","replacement"],["replaceemnts","replacements"],["replacemenet","replacement"],["replacmenet","replacement"],["replacment","replacement"],["replacments","replacements"],["replacong","replacing"],["replaint","repaint"],["replasement","replacement"],["replasements","replacements"],["replcace","replace"],["replcaced","replaced"],["replcaof","replicaof"],["replicae","replicate"],["replicaes","replicates"],["replicaiing","replicating"],["replicaion","replication"],["replicaions","replications"],["replicaite","replicate"],["replicaites","replicates"],["replicaiting","replicating"],["replicaition","replication"],["replicaitions","replications"],["replicaiton","replication"],["replicaitons","replications"],["repling","replying"],["replys","replies"],["reponding","responding"],["reponse","response"],["reponses","responses"],["reponsibilities","responsibilities"],["reponsibility","responsibility"],["reponsible","responsible"],["reporing","reporting"],["reporitory","repository"],["reportadly","reportedly"],["reportign","reporting"],["reportresouces","reportresources"],["reposiotory","repository"],["reposiry","repository"],["repositiories","repositories"],["repositiory","repository"],["repositiroes","repositories"],["reposititioning","repositioning"],["repositorry","repository"],["repositotries","repositories"],["repositotry","repository"],["repositry","repository"],["reposoitory","repository"],["reposond","respond"],["reposonder","responder"],["reposonders","responders"],["reposonding","responding"],["reposonse","response"],["reposonses","responses"],["repostiories","repositories"],["repostiory","repository"],["repostories","repositories"],["repostory","repository"],["repport","report"],["reppository","repository"],["repraesentation","representation"],["repraesentational","representational"],["repraesentations","representations"],["reprecussion","repercussion"],["reprecussions","repercussions"],["repreesnt","represent"],["repreesnted","represented"],["repreesnts","represents"],["reprensent","represent"],["reprensentation","representation"],["reprensentational","representational"],["reprensentations","representations"],["reprepresents","represents"],["represantation","representation"],["represantational","representational"],["represantations","representations"],["represantative","representative"],["represenatation","representation"],["represenatational","representational"],["represenatations","representations"],["represenation","representation"],["represenational","representational"],["represenations","representations"],["represend","represent"],["representaion","representation"],["representaional","representational"],["representaions","representations"],["representaiton","representation"],["representated","represented"],["representating","representing"],["representd","represented"],["representiative","representative"],["represention","representation"],["representions","representations"],["representive","representative"],["representives","representatives"],["represet","represent"],["represetation","representation"],["represeted","represented"],["represeting","representing"],["represets","represents"],["represnet","represent"],["represnetated","represented"],["represnetation","representation"],["represnetations","representations"],["represneted","represented"],["represneting","representing"],["represnets","represents"],["represnt","represent"],["represntation","representation"],["represntative","representative"],["represnted","represented"],["represnts","represents"],["repressent","represent"],["repressentation","representation"],["repressenting","representing"],["repressents","represents"],["reprociblbe","reproducible"],["reprocible","reproducible"],["reprodice","reproduce"],["reprodiced","reproduced"],["reprodicibility","reproducibility"],["reprodicible","reproducible"],["reprodicibly","reproducibly"],["reprodicing","reproducing"],["reprodiction","reproduction"],["reproducabely","reproducibly"],["reproducability","reproducibility"],["reproducable","reproducible"],["reproducablitity","reproducibility"],["reproducably","reproducibly"],["reproduciability","reproduceability"],["reproduciable","reproduceable"],["reproduciblity","reproducibility"],["reprot","report"],["reprots","reports"],["reprsent","represent"],["reprsentation","representation"],["reprsentations","representations"],["reprsented","represented"],["reprsenting","representing"],["reprsents","represents"],["reprtoire","repertoire"],["reprucible","reproducible"],["repsectively","respectively"],["repsonse","response"],["repsonses","responses"],["repsonsible","responsible"],["repspectively","respectively"],["repsresents","represents"],["reptition","repetition"],["repubic","republic"],["repubican","republican"],["repubicans","republicans"],["repubics","republics"],["republi","republic"],["republian","republican"],["republians","republicans"],["republis","republics"],["repulic","republic"],["repulican","republican"],["repulicans","republicans"],["repulics","republics"],["reputpose","repurpose"],["reputposed","repurposed"],["reputposes","repurposes"],["reputposing","repurposing"],["reqest","request"],["reqested","requested"],["reqests","requests"],["reqeuest","request"],["reqeust","request"],["reqeusted","requested"],["reqeusting","requesting"],["reqeusts","requests"],["reqiest","request"],["reqire","require"],["reqired","required"],["reqirement","requirement"],["reqirements","requirements"],["reqires","requires"],["reqiring","requiring"],["reqiure","require"],["reqrite","rewrite"],["reqrites","rewrites"],["requencies","frequencies"],["requency","frequency"],["requeried","required"],["requeriment","requirement"],["requeriments","requirements"],["reques","request"],["requesr","request"],["requestd","requested"],["requestesd","requested"],["requestested","requested"],["requestied","requested"],["requestying","requesting"],["requet","request"],["requeted","requested"],["requeting","requesting"],["requets","requests"],["requeum","requiem"],["requied","required"],["requierd","required"],["requiere","require"],["requiered","required"],["requierement","requirement"],["requierements","requirements"],["requieres","requires"],["requiering","requiring"],["requies","requires"],["requiest","request"],["requiested","requested"],["requiesting","requesting"],["requiests","requests"],["requird","required"],["requireing","requiring"],["requiremenet","requirement"],["requiremenets","requirements"],["requiremnt","requirement"],["requirment","requirement"],["requirments","requirements"],["requisit","requisite"],["requisits","requisites"],["requre","require"],["requred","required"],["requrement","requirement"],["requrements","requirements"],["requres","requires"],["requrest","request"],["requrested","requested"],["requresting","requesting"],["requrests","requests"],["requried","required"],["requriement","requirement"],["requriements","requirements"],["requries","requires"],["requriment","requirement"],["requring","requiring"],["requrired","required"],["requrirement","requirement"],["requrirements","requirements"],["requris","require"],["requsite","requisite"],["requsites","requisites"],["requst","request"],["requsted","requested"],["requsting","requesting"],["requsts","requests"],["reregisteration","reregistration"],["rererences","references"],["rerference","reference"],["rerferences","references"],["rerpesentation","representation"],["rertieve","retrieve"],["rertieved","retrieved"],["rertiever","retriever"],["rertievers","retrievers"],["rertieves","retrieves"],["reruirement","requirement"],["reruirements","requirements"],["reruning","rerunning"],["rerwite","rewrite"],["resarch","research"],["resart","restart"],["resarts","restarts"],["resaurant","restaurant"],["resaurants","restaurants"],["rescaned","rescanned"],["rescource","resource"],["rescourced","resourced"],["rescources","resources"],["rescourcing","resourcing"],["rescrition","restriction"],["rescritions","restrictions"],["rescueing","rescuing"],["reseach","research"],["reseached","researched"],["researvation","reservation"],["researvations","reservations"],["researve","reserve"],["researved","reserved"],["researves","reserves"],["researving","reserving"],["reselction","reselection"],["resembelance","resemblance"],["resembes","resembles"],["resemblence","resemblance"],["resently","recently"],["resepect","respect"],["resepected","respected"],["resepecting","respecting"],["resepective","respective"],["resepectively","respectively"],["resepects","respects"],["reseration","reservation"],["reserv","reserve"],["reserverd","reserved"],["reservered","reserved"],["resestatus","resetstatus"],["resetable","resettable"],["reseted","reset"],["reseting","resetting"],["resetted","reset"],["reseved","reserved"],["reseverd","reserved"],["resevered","reserved"],["resevering","reserving"],["resevoir","reservoir"],["resgister","register"],["resgisters","registers"],["residental","residential"],["resierfs","reiserfs"],["resignement","resignment"],["resilence","resilience"],["resistable","resistible"],["resistence","resistance"],["resistent","resistant"],["resitance","resistance"],["resitances","resistances"],["resitor","resistor"],["resitors","resistors"],["resivwar","reservoir"],["resizeable","resizable"],["resizeble","resizable"],["reslection","reselection"],["reslove","resolve"],["resloved","resolved"],["resloves","resolves"],["resloving","resolving"],["reslut","result"],["resluts","results"],["resoect","respect"],["resoective","respective"],["resoiurce","resource"],["resoiurced","resourced"],["resoiurces","resources"],["resoiurcing","resourcing"],["resoltion","resolution"],["resoltuion","resolution"],["resoltuions","resolutions"],["resoluitons","resolutions"],["resolutin","resolution"],["resolutino","resolution"],["resolutinos","resolutions"],["resolutins","resolutions"],["resoluton","resolution"],["resolvinf","resolving"],["reson","reason"],["resonable","reasonable"],["resons","reasons"],["resonse","response"],["resonses","responses"],["resoource","resource"],["resoourced","resourced"],["resoources","resources"],["resoourcing","resourcing"],["resopnse","response"],["resopnses","responses"],["resorce","resource"],["resorced","resourced"],["resorces","resources"],["resorcing","resourcing"],["resore","restore"],["resorece","resource"],["resoreces","resources"],["resoruce","resource"],["resoruced","resourced"],["resoruces","resources"],["resorucing","resourcing"],["resotration","restoration"],["resotrations","restorations"],["resotrative","restorative"],["resotre","restore"],["resotrer","restorer"],["resotrers","restorers"],["resotres","restores"],["resotring","restoring"],["resouce","resource"],["resouced","resourced"],["resouces","resources"],["resoucing","resourcing"],["resoultion","resolution"],["resoultions","resolutions"],["resourcees","resources"],["resourceype","resourcetype"],["resoure","resource"],["resourecs","resources"],["resoured","resourced"],["resoures","resources"],["resourses","resources"],["resoution","resolution"],["resoves","resolves"],["resovle","resolve"],["resovled","resolved"],["resovles","resolves"],["resovling","resolving"],["respawining","respawning"],["respecitve","respective"],["respecitvely","respectively"],["respecive","respective"],["respecively","respectively"],["respectivelly","respectively"],["respectivley","respectively"],["respectivly","respectively"],["respnse","response"],["respnses","responses"],["respoduce","reproduce"],["responce","response"],["responces","responses"],["responibilities","responsibilities"],["responisble","responsible"],["responnsibilty","responsibility"],["responsabilities","responsibilities"],["responsability","responsibility"],["responsable","responsible"],["responsbile","responsible"],["responser's","responder's"],["responser","responder"],["responsers","responders"],["responsess","responses"],["responsibile","responsible"],["responsibilites","responsibilities"],["responsibilty","responsibility"],["responsiblities","responsibilities"],["responsiblity","responsibility"],["responsing","responding"],["respose","response"],["resposes","responses"],["resposibility","responsibility"],["resposible","responsible"],["resposiblity","responsibility"],["respositories","repositories"],["respository","repository"],["resposive","responsive"],["resposiveness","responsiveness"],["resposne","response"],["resposnes","responses"],["respresent","represent"],["respresentation","representation"],["respresentational","representational"],["respresentations","representations"],["respresented","represented"],["respresenting","representing"],["respresents","represents"],["resquest","request"],["resrouce","resource"],["resrouced","resourced"],["resrouces","resources"],["resroucing","resourcing"],["reSructuredText","reStructuredText"],["resrved","reserved"],["ressapee","recipe"],["ressemblance","resemblance"],["ressemble","resemble"],["ressembled","resembled"],["ressemblence","resemblance"],["ressembling","resembling"],["ressemle","resemble"],["resset","reset"],["resseted","reset"],["ressets","resets"],["ressetting","resetting"],["ressize","resize"],["ressizes","resizes"],["ressource","resource"],["ressourced","resourced"],["ressources","resources"],["ressourcing","resourcing"],["resssurecting","resurrecting"],["ressult","result"],["ressurect","resurrect"],["ressurected","resurrected"],["ressurecting","resurrecting"],["ressurection","resurrection"],["ressurects","resurrects"],["ressurrection","resurrection"],["restarant","restaurant"],["restarants","restaurants"],["restaraunt","restaurant"],["restaraunteur","restaurateur"],["restaraunteurs","restaurateurs"],["restaraunts","restaurants"],["restauranteurs","restaurateurs"],["restauration","restoration"],["restauraunt","restaurant"],["restaurnad","restaurant"],["restaurnat","restaurant"],["resteraunt","restaurant"],["resteraunts","restaurants"],["restes","reset"],["restesting","retesting"],["resticted","restricted"],["restoding","restoring"],["restoiring","restoring"],["restor","restore"],["restorated","restored"],["restoreable","restorable"],["restoreble","restorable"],["restoreing","restoring"],["restors","restores"],["restouration","restoration"],["restrcted","restricted"],["restrcuture","restructure"],["restriced","restricted"],["restroing","restoring"],["reStructuredTetx","reStructuredText"],["reStructuredTxet","reStructuredText"],["reStrucuredText","reStructuredText"],["restuarant","restaurant"],["restuarants","restaurants"],["reStucturedText","reStructuredText"],["restucturing","restructuring"],["reStucuredText","reStructuredText"],["resturant","restaurant"],["resturants","restaurants"],["resturaunt","restaurant"],["resturaunts","restaurants"],["resturcturation","restructuration"],["resturcture","restructure"],["resturctured","restructured"],["resturctures","restructures"],["resturcturing","restructuring"],["resturns","returns"],["resuable","reusable"],["resuables","reusables"],["resubstituion","resubstitution"],["resuction","reduction"],["resuilt","result"],["resuilted","resulted"],["resuilting","resulting"],["resuilts","results"],["resul","result"],["resuling","resulting"],["resullt","result"],["resulotion","resolution"],["resulsets","resultsets"],["resulst","results"],["resultion","resolution"],["resultions","resolutions"],["resultung","resulting"],["resulution","resolution"],["resumbmitting","resubmitting"],["resumitted","resubmitted"],["resumt","resume"],["resuorce","resource"],["resuorced","resourced"],["resuorces","resources"],["resuorcing","resourcing"],["resurce","resource"],["resurced","resourced"],["resurces","resources"],["resurcing","resourcing"],["resurecting","resurrecting"],["resursively","recursively"],["resuse","reuse"],["resuts","results"],["resycn","resync"],["retalitated","retaliated"],["retalitation","retaliation"],["retangles","rectangles"],["retanslate","retranslate"],["rether","rather"],["retieve","retrieve"],["retieved","retrieved"],["retieves","retrieves"],["retieving","retrieving"],["retinew","retinue"],["retireve","retrieve"],["retireved","retrieved"],["retirever","retriever"],["retirevers","retrievers"],["retireves","retrieves"],["retireving","retrieving"],["retirned","returned"],["retore","restore"],["retored","restored"],["retores","restores"],["retoric","rhetoric"],["retorical","rhetorical"],["retoring","restoring"],["retourned","returned"],["retpresenting","representing"],["retquirement","requirement"],["retquirements","requirements"],["retquireseek","requireseek"],["retquiresgpos","requiresgpos"],["retquiresgsub","requiresgsub"],["retquiressl","requiressl"],["retranser","retransfer"],["retransferd","retransferred"],["retransfered","retransferred"],["retransfering","retransferring"],["retransferrd","retransferred"],["retransmited","retransmitted"],["retransmition","retransmission"],["retreevable","retrievable"],["retreeval","retrieval"],["retreeve","retrieve"],["retreeved","retrieved"],["retreeves","retrieves"],["retreeving","retrieving"],["retreivable","retrievable"],["retreival","retrieval"],["retreive","retrieve"],["retreived","retrieved"],["retreives","retrieves"],["retreiving","retrieving"],["retrevable","retrievable"],["retreval","retrieval"],["retreve","retrieve"],["retreved","retrieved"],["retreves","retrieves"],["retreving","retrieving"],["retrict","restrict"],["retricted","restricted"],["retriebe","retrieve"],["retriece","retrieve"],["retrieces","retrieves"],["retriev","retrieve"],["retrieveds","retrieved"],["retrive","retrieve"],["retrived","retrieved"],["retrives","retrieves"],["retriving","retrieving"],["retrn","return"],["retrned","returned"],["retrns","returns"],["retrun","return"],["retruned","returned"],["retruns","returns"],["retrvieve","retrieve"],["retrvieved","retrieved"],["retrviever","retriever"],["retrvievers","retrievers"],["retrvieves","retrieves"],["retsart","restart"],["retsarts","restarts"],["retun","return"],["retunrned","returned"],["retunrs","returns"],["retuns","returns"],["retur","return"],["reture","return"],["retured","returned"],["returend","returned"],["retures","returns"],["returing","returning"],["returm","return"],["returmed","returned"],["returming","returning"],["returms","returns"],["returnd","returned"],["returnes","returns"],["returnig","returning"],["returnn","return"],["returnned","returned"],["returnning","returning"],["returs","returns"],["retursn","returns"],["retutning","returning"],["retyring","retrying"],["reudce","reduce"],["reudced","reduced"],["reudces","reduces"],["reudction","reduction"],["reudctions","reductions"],["reuest","request"],["reuests","requests"],["reulator","regulator"],["reundant","redundant"],["reundantly","redundantly"],["reuplad","reupload"],["reupladed","reuploaded"],["reuplader","reuploader"],["reupladers","reuploaders"],["reuplading","reuploading"],["reuplads","reuploads"],["reuplaod","reupload"],["reuplaoded","reuploaded"],["reuplaoder","reuploader"],["reuplaoders","reuploaders"],["reuplaoding","reuploading"],["reuplaods","reuploads"],["reuplod","reupload"],["reuploded","reuploaded"],["reuploder","reuploader"],["reuploders","reuploaders"],["reuploding","reuploading"],["reuplods","reuploads"],["reuqest","request"],["reuqested","requested"],["reuqesting","requesting"],["reuqests","requests"],["reurn","return"],["reursively","recursively"],["reuslt","result"],["reussing","reusing"],["reutnred","returned"],["reutrn","return"],["reutrns","returns"],["revaildating","revalidating"],["revaluated","reevaluated"],["reveiw","review"],["reveiwed","reviewed"],["reveiwer","reviewer"],["reveiwers","reviewers"],["reveiwing","reviewing"],["reveiws","reviews"],["revelent","relevant"],["revelution","revolution"],["revelutions","revolutions"],["reveokes","revokes"],["reverce","reverse"],["reverced","reversed"],["revereces","references"],["reverese","reverse"],["reveresed","reversed"],["reveret","revert"],["revereted","reverted"],["reversable","reversible"],["reverse-engeneer","reverse-engineer"],["reverse-engeneering","reverse-engineering"],["reverse-engieer","reverse-engineer"],["reverseed","reversed"],["reversees","reverses"],["reverve","reserve"],["reverved","reserved"],["revewrse","reverse"],["reviewl","review"],["reviewsectio","reviewsection"],["revisisions","revisions"],["revison","revision"],["revisons","revisions"],["revist","revisit"],["revisted","revisited"],["revisting","revisiting"],["revists","revisits"],["reviwed","reviewed"],["reviwer","reviewer"],["reviwers","reviewers"],["reviwing","reviewing"],["revoluion","revolution"],["revolutionar","revolutionary"],["revrese","reverse"],["revrieve","retrieve"],["revrieved","retrieved"],["revriever","retriever"],["revrievers","retrievers"],["revrieves","retrieves"],["revsion","revision"],["rewiev","review"],["rewieved","reviewed"],["rewiever","reviewer"],["rewieving","reviewing"],["rewievs","reviews"],["rewirtable","rewritable"],["rewirte","rewrite"],["rewirtten","rewritten"],["rewitable","rewritable"],["rewite","rewrite"],["rewitten","rewritten"],["reworkd","reworked"],["rewriet","rewrite"],["rewriite","rewrite"],["rewriten","rewritten"],["rewritting","rewriting"],["rewuired","required"],["rference","reference"],["rferences","references"],["rfeturned","returned"],["rgister","register"],["rhymme","rhyme"],["rhythem","rhythm"],["rhythim","rhythm"],["rhythimcally","rhythmically"],["rhytmic","rhythmic"],["ridiculus","ridiculous"],["righ","right"],["righht","right"],["righmost","rightmost"],["rightt","right"],["rigourous","rigorous"],["rigt","right"],["rigth","right"],["rigths","rights"],["rigurous","rigorous"],["riminder","reminder"],["riminders","reminders"],["riminding","reminding"],["rimitives","primitives"],["rininging","ringing"],["rispective","respective"],["ristrict","restrict"],["ristricted","restricted"],["ristriction","restriction"],["ritable","writable"],["rivised","revised"],["rizes","rises"],["rlation","relation"],["rlse","else"],["rmeote","remote"],["rmeove","remove"],["rmeoved","removed"],["rmeoves","removes"],["rmove","remove"],["rmoved","removed"],["rmoving","removing"],["roataion","rotation"],["roatation","rotation"],["roated","rotated"],["roation","rotation"],["roboustness","robustness"],["robustnes","robustness"],["Rockerfeller","Rockefeller"],["rococco","rococo"],["rocord","record"],["rocorded","recorded"],["rocorder","recorder"],["rocording","recording"],["rocordings","recordings"],["rocords","records"],["roduceer","producer"],["roigin","origin"],["roiginal","original"],["roiginally","originally"],["roiginals","originals"],["roiginating","originating"],["roigins","origins"],["romote","remote"],["romoted","remoted"],["romoteing","remoting"],["romotely","remotely"],["romotes","remotes"],["romoting","remoting"],["romotly","remotely"],["roomate","roommate"],["ropeat","repeat"],["rorated","rotated"],["rosponse","response"],["rosponsive","responsive"],["rotaion","rotation"],["rotaions","rotations"],["rotaiton","rotation"],["rotaitons","rotations"],["rotat","rotate"],["rotataion","rotation"],["rotataions","rotations"],["rotateable","rotatable"],["rouding","rounding"],["roughtly","roughly"],["rougly","roughly"],["rouine","routine"],["rouines","routines"],["round-robbin","round-robin"],["roundign","rounding"],["roung","round"],["rountine","routine"],["rountines","routines"],["routiens","routines"],["routins","routines"],["rovide","provide"],["rovided","provided"],["rovider","provider"],["rovides","provides"],["roviding","providing"],["rqeuested","requested"],["rqeuesting","requesting"],["rquested","requested"],["rquesting","requesting"],["rquire","require"],["rquired","required"],["rquirement","requirement"],["rquires","requires"],["rquiring","requiring"],["rranslation","translation"],["rranslations","translations"],["rrase","erase"],["rrror","error"],["rrrored","errored"],["rrroring","erroring"],["rrrors","errors"],["rubarb","rhubarb"],["rucuperate","recuperate"],["rudimentally","rudimentary"],["rudimentatry","rudimentary"],["rudimentory","rudimentary"],["rudimentry","rudimentary"],["rulle","rule"],["rumatic","rheumatic"],["runn","run"],["runnig","running"],["runnign","running"],["runnigng","running"],["runnin","running"],["runnint","running"],["runnners","runners"],["runnning","running"],["runns","runs"],["runnung","running"],["runting","runtime"],["rurrent","current"],["russina","Russian"],["Russion","Russian"],["rwite","write"],["rysnc","rsync"],["rythem","rhythm"],["rythim","rhythm"],["rythm","rhythm"],["rythmic","rhythmic"],["rythyms","rhythms"],["saame","same"],["sabatage","sabotage"],["sabatour","saboteur"],["sacalar","scalar"],["sacalars","scalars"],["sacarin","saccharin"],["sacle","scale"],["sacrafice","sacrifice"],["sacreligious","sacrilegious"],["Sacremento","Sacramento"],["sacrifical","sacrificial"],["sacrifying","sacrificing"],["sacrilegeous","sacrilegious"],["sacrin","saccharin"],["sade","sad"],["saem","same"],["safe-pooint","safe-point"],["safe-pooints","safe-points"],["safeing","saving"],["safepooint","safepoint"],["safepooints","safepoints"],["safequard","safeguard"],["saferi","Safari"],["safetly","safely"],["safly","safely"],["saftey","safety"],["safty","safety"],["saggital","sagittal"],["sagital","sagittal"],["Sagitarius","Sagittarius"],["sais","says"],["saleries","salaries"],["salery","salary"],["salveof","slaveof"],["samle","sample"],["samled","sampled"],["samll","small"],["samller","smaller"],["sammon","salmon"],["samori","samurai"],["sampel","sample"],["sampeld","sampled"],["sampels","samples"],["samwich","sandwich"],["samwiches","sandwiches"],["sanaty","sanity"],["sanctionning","sanctioning"],["sandobx","sandbox"],["sandwhich","sandwich"],["Sanhedrim","Sanhedrin"],["sanitizisation","sanitization"],["sanizer","sanitizer"],["sanpshot","snapshot"],["sanpsnots","snapshots"],["sansitizer","sanitizer"],["sansitizers","sanitizers"],["santioned","sanctioned"],["santize","sanitize"],["santized","sanitized"],["santizes","sanitizes"],["santizing","sanitizing"],["sanwich","sandwich"],["sanwiches","sandwiches"],["sanytise","sanitise"],["sanytize","sanitize"],["saphire","sapphire"],["saphires","sapphires"],["sargant","sergeant"],["sargeant","sergeant"],["sarted","started"],["sarter","starter"],["sarters","starters"],["sastisfies","satisfies"],["satandard","standard"],["satandards","standards"],["satelite","satellite"],["satelites","satellites"],["satelitte","satellite"],["satellittes","satellites"],["satement","statement"],["satements","statements"],["saterday","Saturday"],["saterdays","Saturdays"],["satified","satisfied"],["satifies","satisfies"],["satifsy","satisfy"],["satify","satisfy"],["satifying","satisfying"],["satisfactority","satisfactorily"],["satisfiabilty","satisfiability"],["satisfing","satisfying"],["satisfyied","satisfied"],["satisifed","satisfied"],["satisified","satisfied"],["satisifies","satisfies"],["satisify","satisfy"],["satisifying","satisfying"],["satistying","satisfying"],["satric","satiric"],["satrical","satirical"],["satrically","satirically"],["sattelite","satellite"],["sattelites","satellites"],["sattellite","satellite"],["sattellites","satellites"],["satuaday","Saturday"],["satuadays","Saturdays"],["saturdey","Saturday"],["satursday","Saturday"],["satus","status"],["saught","sought"],["sav","save"],["savees","saves"],["saveing","saving"],["savely","safely"],["savere","severe"],["savety","safety"],["savgroup","savegroup"],["savy","savvy"],["saxaphone","saxophone"],["sbsampling","subsampling"],["scahr","schar"],["scalarr","scalar"],["scaleability","scalability"],["scaleable","scalable"],["scaleing","scaling"],["scalled","scaled"],["scandanavia","Scandinavia"],["scaned","scanned"],["scaning","scanning"],["scannning","scanning"],["scaricity","scarcity"],["scavange","scavenge"],["scavanged","scavenged"],["scavanger","scavenger"],["scavangers","scavengers"],["scavanges","scavenges"],["sccope","scope"],["sceanrio","scenario"],["sceanrios","scenarios"],["scecified","specified"],["scenarion","scenario"],["scenarions","scenarios"],["scenegraaph","scenegraph"],["scenegraaphs","scenegraphs"],["sceond","second"],["sceonds","seconds"],["scetch","sketch"],["scetched","sketched"],["scetches","sketches"],["scetching","sketching"],["schdule","schedule"],["schduled","scheduled"],["schduleing","scheduling"],["schduler","scheduler"],["schdules","schedules"],["schduling","scheduling"],["schedual","schedule"],["scheduald","scheduled"],["schedualed","scheduled"],["schedualing","scheduling"],["schedulier","scheduler"],["schedulling","scheduling"],["scheduluing","scheduling"],["schem","scheme"],["schemd","schemed"],["schems","schemes"],["schme","scheme"],["schmea","schema"],["schmeas","schemas"],["schmes","schemes"],["scholarhip","scholarship"],["scholarhips","scholarships"],["scholdn't","shouldn't"],["schould","should"],["scientfic","scientific"],["scientfically","scientifically"],["scientficaly","scientifically"],["scientficly","scientifically"],["scientifc","scientific"],["scientifcally","scientifically"],["scientifcaly","scientifically"],["scientifcly","scientifically"],["scientis","scientist"],["scientiss","scientist"],["scince","science"],["scinece","science"],["scintiallation","scintillation"],["scintillatqt","scintillaqt"],["scipted","scripted"],["scipting","scripting"],["sciript","script"],["sciripts","scripts"],["scirpt","script"],["scirpts","scripts"],["scketch","sketch"],["scketched","sketched"],["scketches","sketches"],["scketching","sketching"],["sclar","scalar"],["scneario","scenario"],["scnearios","scenarios"],["scoket","socket"],["scoll","scroll"],["scolling","scrolling"],["scondary","secondary"],["scopeing","scoping"],["scorebord","scoreboard"],["scources","sources"],["scrach","scratch"],["scrached","scratched"],["scraches","scratches"],["scraching","scratching"],["scrachs","scratches"],["scrao","scrap"],["screeb","screen"],["screebs","screens"],["screenchot","screenshot"],["screenchots","screenshots"],["screenwrighter","screenwriter"],["screnn","screen"],["scriopted","scripted"],["scriopting","scripting"],["scriopts","scripts"],["scriopttype","scripttype"],["scriping","scripting"],["scripst","scripts"],["scriptype","scripttype"],["scritp","script"],["scritped","scripted"],["scritping","scripting"],["scritps","scripts"],["scritpt","script"],["scritpts","scripts"],["scroipt","script"],["scroipted","scripted"],["scroipting","scripting"],["scroipts","scripts"],["scroipttype","scripttype"],["scrollablbe","scrollable"],["scrollin","scrolling"],["scroolbar","scrollbar"],["scrpt","script"],["scrpted","scripted"],["scrpting","scripting"],["scrpts","scripts"],["scrren","screen"],["scrutinity","scrutiny"],["scubscribe","subscribe"],["scubscribed","subscribed"],["scubscriber","subscriber"],["scubscribes","subscribes"],["scuccessully","successfully"],["scupt","sculpt"],["scupted","sculpted"],["scupting","sculpting"],["scupture","sculpture"],["scuptures","sculptures"],["seach","search"],["seached","searched"],["seaches","searches"],["seaching","searching"],["seachkey","searchkey"],["seacrchable","searchable"],["seamlessley","seamlessly"],["seamlessy","seamlessly"],["searcahble","searchable"],["searcheable","searchable"],["searchin","searching"],["searchs","searches"],["seatch","search"],["seccond","second"],["secconds","seconds"],["secction","section"],["secene","scene"],["secific","specific"],["secion","section"],["secions","sections"],["secirity","security"],["seciton","section"],["secitons","sections"],["secne","scene"],["secod","second"],["secods","seconds"],["seconadry","secondary"],["seconcary","secondary"],["secondaray","secondary"],["seconday","secondary"],["seconf","second"],["seconfs","seconds"],["seconly","secondly"],["secont","second"],["secontary","secondary"],["secontly","secondly"],["seconts","seconds"],["secord","second"],["secords","seconds"],["secotr","sector"],["secound","second"],["secoundary","secondary"],["secoundly","secondly"],["secounds","seconds"],["secquence","sequence"],["secratary","secretary"],["secretery","secretary"],["secrion","section"],["secruity","security"],["sectin","section"],["sectins","sections"],["sectionning","sectioning"],["secton","section"],["sectoned","sectioned"],["sectoning","sectioning"],["sectons","sections"],["sectopm","section"],["sectopmed","sectioned"],["sectopming","sectioning"],["sectopms","sections"],["sectopn","section"],["sectopned","sectioned"],["sectopning","sectioning"],["sectopns","sections"],["secue","secure"],["secuely","securely"],["secuence","sequence"],["secuenced","sequenced"],["secuences","sequences"],["secuencial","sequential"],["secuencing","sequencing"],["secuirty","security"],["secuity","security"],["secund","second"],["secunds","seconds"],["securiy","security"],["securiyt","security"],["securly","securely"],["securre","secure"],["securrely","securely"],["securrly","securely"],["securtity","security"],["securtiy","security"],["securty","security"],["securuity","security"],["sedereal","sidereal"],["seeem","seem"],["seeen","seen"],["seelect","select"],["seelected","selected"],["seemes","seems"],["seemless","seamless"],["seemlessly","seamlessly"],["seesion","session"],["seesions","sessions"],["seetings","settings"],["seeverities","severities"],["seeverity","severity"],["segault","segfault"],["segaults","segfaults"],["segement","segment"],["segementation","segmentation"],["segemented","segmented"],["segements","segments"],["segemnts","segments"],["segfualt","segfault"],["segfualts","segfaults"],["segmantation","segmentation"],["segmend","segment"],["segmendation","segmentation"],["segmended","segmented"],["segmends","segments"],["segmenet","segment"],["segmenetd","segmented"],["segmeneted","segmented"],["segmenets","segments"],["segmenst","segments"],["segmentaion","segmentation"],["segmente","segment"],["segmentes","segments"],["segmetn","segment"],["segmetned","segmented"],["segmetns","segments"],["segument","segment"],["seguoys","segues"],["seh","she"],["seige","siege"],["seing","seeing"],["seinor","senior"],["seires","series"],["sekect","select"],["sekected","selected"],["sekects","selects"],["selcetion","selection"],["selct","select"],["selctable","selectable"],["selctables","selectable"],["selcted","selected"],["selcting","selecting"],["selction","selection"],["selctions","selections"],["seldomly","seldom"],["selecction","selection"],["selecctions","selections"],["seleced","selected"],["selecetd","selected"],["seleceted","selected"],["selecgt","select"],["selecgted","selected"],["selecgting","selecting"],["selecing","selecting"],["selecrtion","selection"],["selectd","selected"],["selectes","selects"],["selectoin","selection"],["selecton","selection"],["selectons","selections"],["seledted","selected"],["selektions","selections"],["selektor","selector"],["selet","select"],["selets","selects"],["self-comparisson","self-comparison"],["self-contianed","self-contained"],["self-referencial","self-referential"],["self-refering","self-referring"],["selfs","self"],["sellect","select"],["sellected","selected"],["selv","self"],["semaintics","semantics"],["semaphone","semaphore"],["semaphones","semaphores"],["semaphor","semaphore"],["semaphors","semaphores"],["semapthore","semaphore"],["semapthores","semaphores"],["sematic","semantic"],["sematical","semantical"],["sematically","semantically"],["sematics","semantics"],["sematnics","semantics"],["semding","sending"],["sementation","segmentation"],["sementic","semantic"],["sementically","semantically"],["sementics","semantics"],["semgent","segment"],["semgentation","segmentation"],["semicolor","semicolon"],["semicolumn","semicolon"],["semicondutor","semiconductor"],["sempahore","semaphore"],["sempahores","semaphores"],["sempaphore","semaphore"],["sempaphores","semaphores"],["semphore","semaphore"],["semphores","semaphores"],["sempphore","semaphore"],["senaphore","semaphore"],["senaphores","semaphores"],["senario","scenario"],["senarios","scenarios"],["sencond","second"],["sencondary","secondary"],["senconds","seconds"],["sendign","sending"],["sendinging","sending"],["sendinng","sending"],["senfile","sendfile"],["senintels","sentinels"],["senitnel","sentinel"],["senitnels","sentinels"],["senquence","sequence"],["sensative","sensitive"],["sensetive","sensitive"],["sensisble","sensible"],["sensistive","sensitive"],["sensititive","sensitive"],["sensititivies","sensitivities"],["sensititivity","sensitivity"],["sensititivy","sensitivity"],["sensitiv","sensitive"],["sensitiveties","sensitivities"],["sensitivety","sensitivity"],["sensitivites","sensitivities"],["sensitivties","sensitivities"],["sensitivty","sensitivity"],["sensitve","sensitive"],["senstive","sensitive"],["sensure","censure"],["sentance","sentence"],["sentances","sentences"],["senteces","sentences"],["sentense","sentence"],["sentienl","sentinel"],["sentinal","sentinel"],["sentinals","sentinels"],["sention","section"],["sentions","sections"],["sentive","sensitive"],["sentivite","sensitive"],["sepaate","separate"],["separartor","separator"],["separat","separate"],["separatelly","separately"],["separater","separator"],["separatley","separately"],["separatly","separately"],["separato","separator"],["separatos","separators"],["separatring","separating"],["separed","separated"],["separete","separate"],["separeted","separated"],["separetedly","separately"],["separetely","separately"],["separeter","separator"],["separetes","separates"],["separeting","separating"],["separetly","separately"],["separetor","separator"],["separtates","separates"],["separte","separate"],["separted","separated"],["separtes","separates"],["separting","separating"],["sepatae","separate"],["sepatate","separate"],["sepcial","special"],["sepcific","specific"],["sepcifically","specifically"],["sepcification","specification"],["sepcifications","specifications"],["sepcified","specified"],["sepcifier","specifier"],["sepcifies","specifies"],["sepcify","specify"],["sepcifying","specifying"],["sepearable","separable"],["sepearate","separate"],["sepearated","separated"],["sepearately","separately"],["sepearates","separates"],["sepearation","separation"],["sepearator","separator"],["sepearators","separators"],["sepearet","separate"],["sepearetly","separately"],["sepearte","separate"],["sepearted","separated"],["sepeartely","separately"],["sepeartes","separates"],["sepeartor","separator"],["sepeartors","separators"],["sepeate","separate"],["sepeated","separated"],["sepeates","separates"],["sepeator","separator"],["sepeators","separators"],["sepecial","special"],["sepecifed","specified"],["sepecific","specific"],["sepecification","specification"],["sepecified","specified"],["sepecifier","specifier"],["sepecifiers","specifiers"],["sepecifies","specifies"],["sepecify","specify"],["sepectral","spectral"],["sepeicfy","specify"],["sependent","dependent"],["sepending","depending"],["seperable","separable"],["seperad","separate"],["seperadly","separately"],["seperaly","separately"],["seperaor","separator"],["seperaors","separators"],["seperare","separate"],["seperared","separated"],["seperares","separates"],["seperat","separate"],["seperataed","separated"],["seperatally","separately"],["seperataly","separately"],["seperatated","separated"],["seperatd","separated"],["seperate","separate"],["seperated","separated"],["seperatedly","separately"],["seperatedy","separated"],["seperateely","separately"],["seperateing","separating"],["seperatelly","separately"],["seperately","separately"],["seperater","separator"],["seperaters","separators"],["seperates","separates"],["seperating","separating"],["seperation","separation"],["seperations","separations"],["seperatism","separatism"],["seperatist","separatist"],["seperatley","separately"],["seperatly","separately"],["seperato","separator"],["seperator","separator"],["seperators","separators"],["seperatos","separators"],["sepereate","separate"],["sepereated","separated"],["sepereates","separates"],["sepererate","separate"],["sepererated","separated"],["sepererates","separates"],["seperete","separate"],["sepereted","separated"],["seperetes","separates"],["seperratly","separately"],["sepertator","separator"],["sepertators","separators"],["sepertor","separator"],["sepertors","separators"],["sepetaror","separator"],["sepetarors","separators"],["sepetate","separate"],["sepetated","separated"],["sepetately","separately"],["sepetates","separates"],["sepina","subpoena"],["seporate","separate"],["sepparation","separation"],["sepparations","separations"],["sepperate","separate"],["seprarate","separate"],["seprate","separate"],["seprated","separated"],["seprator","separator"],["seprators","separators"],["Septemer","September"],["seqence","sequence"],["seqenced","sequenced"],["seqences","sequences"],["seqencing","sequencing"],["seqense","sequence"],["seqensed","sequenced"],["seqenses","sequences"],["seqensing","sequencing"],["seqenstial","sequential"],["seqential","sequential"],["seqeuence","sequence"],["seqeuencer","sequencer"],["seqeuental","sequential"],["seqeunce","sequence"],["seqeuncer","sequencer"],["seqeuntials","sequentials"],["sequcne","sequence"],["sequece","sequence"],["sequecence","sequence"],["sequecences","sequences"],["sequeces","sequences"],["sequeence","sequence"],["sequelce","sequence"],["sequemce","sequence"],["sequemces","sequences"],["sequencial","sequential"],["sequencially","sequentially"],["sequencies","sequences"],["sequense","sequence"],["sequensed","sequenced"],["sequenses","sequences"],["sequensing","sequencing"],["sequenstial","sequential"],["sequentialy","sequentially"],["sequenzes","sequences"],["sequetial","sequential"],["sequnce","sequence"],["sequnced","sequenced"],["sequncer","sequencer"],["sequncers","sequencers"],["sequnces","sequences"],["sequnece","sequence"],["sequneces","sequences"],["ser","set"],["serach","search"],["serached","searched"],["seracher","searcher"],["seraches","searches"],["seraching","searching"],["serachs","searches"],["serailisation","serialisation"],["serailise","serialise"],["serailised","serialised"],["serailization","serialization"],["serailize","serialize"],["serailized","serialized"],["serailse","serialise"],["serailsed","serialised"],["serailze","serialize"],["serailzed","serialized"],["serch","search"],["serched","searched"],["serches","searches"],["serching","searching"],["sercive","service"],["sercived","serviced"],["sercives","services"],["serciving","servicing"],["sereverless","serverless"],["serevrless","serverless"],["sergent","sergeant"],["serialialisation","serialisation"],["serialialise","serialise"],["serialialised","serialised"],["serialialises","serialises"],["serialialising","serialising"],["serialialization","serialization"],["serialialize","serialize"],["serialialized","serialized"],["serialializes","serializes"],["serialializing","serializing"],["serialiasation","serialisation"],["serialiazation","serialization"],["serialsiation","serialisation"],["serialsie","serialise"],["serialsied","serialised"],["serialsies","serialises"],["serialsing","serialising"],["serialziation","serialization"],["serialzie","serialize"],["serialzied","serialized"],["serialzies","serializes"],["serialzing","serializing"],["serice","service"],["serie","series"],["seriel","serial"],["serieses","series"],["serios","serious"],["seriouly","seriously"],["seriuos","serious"],["serivce","service"],["serivces","services"],["sersies","series"],["sertificate","certificate"],["sertificated","certificated"],["sertificates","certificates"],["sertification","certification"],["servece","service"],["serveced","serviced"],["serveces","services"],["servecing","servicing"],["serveice","service"],["serveiced","serviced"],["serveices","services"],["serveicing","servicing"],["serveless","serverless"],["serveral","several"],["serverite","severity"],["serverites","severities"],["serverities","severities"],["serverity","severity"],["serverles","serverless"],["serverlesss","serverless"],["serverlsss","serverless"],["servicies","services"],["servie","service"],["servies","services"],["servive","service"],["servoce","service"],["servoced","serviced"],["servoces","services"],["servocing","servicing"],["sesion","session"],["sesions","sessions"],["sesitive","sensitive"],["sesitively","sensitively"],["sesitiveness","sensitiveness"],["sesitivity","sensitivity"],["sessio","session"],["sesssion","session"],["sesssions","sessions"],["sestatusbar","setstatusbar"],["sestatusmsg","setstatusmsg"],["setevn","setenv"],["setgit","setgid"],["seting","setting"],["setings","settings"],["setion","section"],["setions","sections"],["setitng","setting"],["setitngs","settings"],["setquential","sequential"],["setted","set"],["settelement","settlement"],["settign","setting"],["settigns","settings"],["settigs","settings"],["settiing","setting"],["settiings","settings"],["settinga","settings"],["settingss","settings"],["settins","settings"],["settlment","settlement"],["settng","setting"],["settter","setter"],["settters","setters"],["settting","setting"],["setttings","settings"],["settup","setup"],["setyp","setup"],["setyps","setups"],["seuence","sequence"],["seuences","sequences"],["sevaral","several"],["severat","several"],["severeal","several"],["severirirty","severity"],["severirities","severities"],["severite","severity"],["severites","severities"],["severiy","severity"],["severl","several"],["severley","severely"],["severly","severely"],["sevice","service"],["sevirity","severity"],["sevral","several"],["sevrally","severally"],["sevrity","severity"],["sewdonim","pseudonym"],["sewdonims","pseudonyms"],["sewrvice","service"],["sfety","safety"],["sgadow","shadow"],["sh1sum","sha1sum"],["shadasloo","shadaloo"],["shaddow","shadow"],["shadhow","shadow"],["shadoloo","shadaloo"],["shal","shall"],["shandeleer","chandelier"],["shandeleers","chandeliers"],["shandow","shadow"],["shaneal","chenille"],["shanghi","Shanghai"],["shapshot","snapshot"],["shapshots","snapshots"],["shapsnot","snapshot"],["shapsnots","snapshots"],["sharable","shareable"],["shareed","shared"],["shareing","sharing"],["sharloton","charlatan"],["sharraid","charade"],["sharraids","charades"],["shashes","slashes"],["shatow","ch\xE2teau"],["shbang","shebang"],["shedule","schedule"],["sheduled","scheduled"],["shedules","schedules"],["sheduling","scheduling"],["sheepherd","shepherd"],["sheepherds","shepherds"],["sheeps","sheep"],["sheild","shield"],["sheilded","shielded"],["sheilding","shielding"],["sheilds","shields"],["shepe","shape"],["shepered","shepherd"],["sheperedly","shepherdly"],["shepereds","shepherds"],["shepes","shapes"],["sheping","shaping"],["shepre","sphere"],["shepres","spheres"],["sherif","sheriff"],["shfit","shift"],["shfited","shifted"],["shfiting","shifting"],["shfits","shifts"],["shfted","shifted"],["shicane","chicane"],["shif","shift"],["shif-tab","shift-tab"],["shineing","shining"],["shiped","shipped"],["shiping","shipping"],["shoftware","software"],["shoild","should"],["shoing","showing"],["sholder","shoulder"],["sholdn't","shouldn't"],["sholuld","should"],["sholuldn't","shouldn't"],["shoould","should"],["shopkeeepers","shopkeepers"],["shorcut","shortcut"],["shorcuts","shortcuts"],["shorly","shortly"],["short-cicruit","short-circuit"],["short-cicruits","short-circuits"],["shortcat","shortcut"],["shortcats","shortcuts"],["shortcomming","shortcoming"],["shortcommings","shortcomings"],["shortcutt","shortcut"],["shortern","shorten"],["shorthly","shortly"],["shortkut","shortcut"],["shortkuts","shortcuts"],["shortwhile","short while"],["shotcut","shortcut"],["shotcuts","shortcuts"],["shotdown","shutdown"],["shoucl","should"],["shoud","should"],["shoudl","should"],["shoudld","should"],["shoudle","should"],["shoudln't","shouldn't"],["shoudlnt","shouldn't"],["shoudn't","shouldn't"],["shoudn","shouldn"],["should'nt","shouldn't"],["should't","shouldn't"],["shouldn;t","shouldn't"],["shouldnt'","shouldn't"],["shouldnt","shouldn't"],["shouldnt;","shouldn't"],["shoule","should"],["shoulld","should"],["shouln't","shouldn't"],["shouls","should"],["shoult","should"],["shouod","should"],["shouw","show"],["shouws","shows"],["showvinism","chauvinism"],["shpae","shape"],["shpaes","shapes"],["shpapes","shapes"],["shpere","sphere"],["shperes","spheres"],["shpped","shipped"],["shreak","shriek"],["shreshold","threshold"],["shriks","shrinks"],["shttp","https"],["shudown","shutdown"],["shufle","shuffle"],["shuld","should"],["shure","sure"],["shurely","surely"],["shutdownm","shutdown"],["shuting","shutting"],["shutodwn","shutdown"],["shwo","show"],["shwon","shown"],["shystem","system"],["shystems","systems"],["sibiling","sibling"],["sibilings","siblings"],["sibtitle","subtitle"],["sibtitles","subtitles"],["sicinct","succinct"],["sicinctly","succinctly"],["sicne","since"],["sidde","side"],["sideral","sidereal"],["siduction","seduction"],["siezure","seizure"],["siezures","seizures"],["siffix","suffix"],["siffixed","suffixed"],["siffixes","suffixes"],["siffixing","suffixing"],["sigaled","signaled"],["siganture","signature"],["sigantures","signatures"],["sigen","sign"],["sigificance","significance"],["siginificant","significant"],["siginificantly","significantly"],["siginify","signify"],["sigit","digit"],["sigits","digits"],["sigleton","singleton"],["signales","signals"],["signall","signal"],["signatue","signature"],["signatur","signature"],["signes","signs"],["signficant","significant"],["signficantly","significantly"],["signficiant","significant"],["signfies","signifies"],["signguature","signature"],["signifanct","significant"],["signifant","significant"],["signifantly","significantly"],["signifcant","significant"],["signifcantly","significantly"],["signifficant","significant"],["significanly","significantly"],["significat","significant"],["significatly","significantly"],["significently","significantly"],["signifigant","significant"],["signifigantly","significantly"],["signitories","signatories"],["signitory","signatory"],["signol","signal"],["signto","sign to"],["signul","signal"],["signular","singular"],["signularity","singularity"],["silentely","silently"],["silenty","silently"],["silouhette","silhouette"],["silouhetted","silhouetted"],["silouhettes","silhouettes"],["silouhetting","silhouetting"],["simeple","simple"],["simetrie","symmetry"],["simetries","symmetries"],["simgle","single"],["simialr","similar"],["simialrity","similarity"],["simialrly","similarly"],["simiar","similar"],["similarily","similarly"],["similary","similarly"],["similat","similar"],["similia","similar"],["similiar","similar"],["similiarity","similarity"],["similiarly","similarly"],["similiarty","similarity"],["similiary","similarity"],["simillar","similar"],["similtaneous","simultaneous"],["simlar","similar"],["simlarlity","similarity"],["simlarly","similarly"],["simliar","similar"],["simliarly","similarly"],["simlicity","simplicity"],["simlified","simplified"],["simmetric","symmetric"],["simmetrical","symmetrical"],["simmetry","symmetry"],["simmilar","similar"],["simpification","simplification"],["simpifications","simplifications"],["simpified","simplified"],["simplei","simply"],["simpley","simply"],["simplfy","simplify"],["simplicitly","simplicity"],["simplicty","simplicity"],["simplier","simpler"],["simpliest","simplest"],["simplifed","simplified"],["simplificaiton","simplification"],["simplificaitons","simplifications"],["simplifiy","simplify"],["simplifys","simplifies"],["simpliifcation","simplification"],["simpliifcations","simplifications"],["simplist","simplest"],["simpy","simply"],["simualte","simulate"],["simualted","simulated"],["simualtes","simulates"],["simualting","simulating"],["simualtion","simulation"],["simualtions","simulations"],["simualtor","simulator"],["simualtors","simulators"],["simulaiton","simulation"],["simulaitons","simulations"],["simulantaneous","simultaneous"],["simulantaneously","simultaneously"],["simulataeous","simultaneous"],["simulataeously","simultaneously"],["simulataneity","simultaneity"],["simulataneous","simultaneous"],["simulataneously","simultaneously"],["simulatanious","simultaneous"],["simulataniously","simultaneously"],["simulatanous","simultaneous"],["simulatanously","simultaneously"],["simulatation","simulation"],["simulatenous","simultaneous"],["simulatenously","simultaneously"],["simultanaeous","simultaneous"],["simultaneos","simultaneous"],["simultaneosly","simultaneously"],["simultanious","simultaneous"],["simultaniously","simultaneously"],["simultanous","simultaneous"],["simultanously","simultaneously"],["simutaneously","simultaneously"],["sinature","signature"],["sincerley","sincerely"],["sincerly","sincerely"],["singaled","signaled"],["singals","signals"],["singature","signature"],["singatures","signatures"],["singelar","singular"],["singelarity","singularity"],["singelarly","singularly"],["singelton","singleton"],["singl","single"],["singlar","singular"],["single-threded","single-threaded"],["singlton","singleton"],["singltons","singletons"],["singluar","singular"],["singlular","singular"],["singlularly","singularly"],["singnal","signal"],["singnalled","signalled"],["singnals","signals"],["singolar","singular"],["singoolar","singular"],["singoolarity","singularity"],["singoolarly","singularly"],["singsog","singsong"],["singuarity","singularity"],["singuarl","singular"],["singulat","singular"],["singulaties","singularities"],["sinlge","single"],["sinlges","singles"],["sinply","simply"],["sintac","syntax"],["sintacks","syntax"],["sintacs","syntax"],["sintact","syntax"],["sintacts","syntax"],["sintak","syntax"],["sintaks","syntax"],["sintakt","syntax"],["sintakts","syntax"],["sintax","syntax"],["Sionist","Zionist"],["Sionists","Zionists"],["siply","simply"],["sircle","circle"],["sircles","circles"],["sircular","circular"],["sirect","direct"],["sirected","directed"],["sirecting","directing"],["sirection","direction"],["sirectional","directional"],["sirectionalities","directionalities"],["sirectionality","directionality"],["sirectionals","directionals"],["sirectionless","directionless"],["sirections","directions"],["sirective","directive"],["sirectives","directives"],["sirectly","directly"],["sirectness","directness"],["sirector","director"],["sirectories","directories"],["sirectors","directors"],["sirectory","directory"],["sirects","directs"],["sisnce","since"],["sistem","system"],["sistematically","systematically"],["sistematics","systematics"],["sistematies","systematies"],["sistematising","systematising"],["sistematizing","systematizing"],["sistematy","systematy"],["sistemed","systemed"],["sistemic","systemic"],["sistemically","systemically"],["sistemics","systemics"],["sistemist","systemist"],["sistemists","systemists"],["sistemize","systemize"],["sistemized","systemized"],["sistemizes","systemizes"],["sistemizing","systemizing"],["sistems","systems"],["sitation","situation"],["sitations","situations"],["sitaution","situation"],["sitautions","situations"],["sitck","stick"],["siteu","site"],["sitill","still"],["sitirring","stirring"],["sitirs","stirs"],["sitl","still"],["sitll","still"],["sitmuli","stimuli"],["situationnal","situational"],["situatuion","situation"],["situatuions","situations"],["situatution","situation"],["situatutions","situations"],["situbbornness","stubbornness"],["situdio","studio"],["situdios","studios"],["situration","situation"],["siturations","situations"],["situtaion","situation"],["situtaions","situations"],["situtation","situation"],["situtations","situations"],["siutable","suitable"],["siute","suite"],["sivible","visible"],["siwtch","switch"],["siwtched","switched"],["siwtching","switching"],["sizre","size"],["Skagerak","Skagerrak"],["skalar","scalar"],["skateing","skating"],["skecth","sketch"],["skecthes","sketches"],["skeep","skip"],["skelton","skeleton"],["skept","skipped"],["sketchs","sketches"],["skipd","skipped"],["skipe","skip"],["skiping","skipping"],["skippd","skipped"],["skippped","skipped"],["skippps","skips"],["slach","slash"],["slaches","slashes"],["slase","slash"],["slases","slashes"],["slashs","slashes"],["slaugterhouses","slaughterhouses"],["slect","select"],["slected","selected"],["slecting","selecting"],["slection","selection"],["sleect","select"],["sleeped","slept"],["sleepp","sleep"],["slicable","sliceable"],["slient","silent"],["sliently","silently"],["slighlty","slightly"],["slighly","slightly"],["slightl","slightly"],["slighty","slightly"],["slignt","slight"],["sligntly","slightly"],["sligth","slight"],["sligthly","slightly"],["sligtly","slightly"],["sliped","slipped"],["sliseshow","slideshow"],["slowy","slowly"],["sluggify","slugify"],["smae","same"],["smal","small"],["smaler","smaller"],["smallar","smaller"],["smalles","smallest"],["smaple","sample"],["smaples","samples"],["smealting","smelting"],["smething","something"],["smller","smaller"],["smoe","some"],["smoot","smooth"],["smooter","smoother"],["smoothign","smoothing"],["smooting","smoothing"],["smouth","smooth"],["smouthness","smoothness"],["smove","move"],["snaped","snapped"],["snaphot","snapshot"],["snaphsot","snapshot"],["snaping","snapping"],["snappng","snapping"],["snapsnot","snapshot"],["snapsnots","snapshots"],["sneeks","sneaks"],["snese","sneeze"],["snipet","snippet"],["snipets","snippets"],["snpashot","snapshot"],["snpashots","snapshots"],["snyc","sync"],["snytax","syntax"],["Soalris","Solaris"],["socail","social"],["socalism","socialism"],["socekts","sockets"],["socities","societies"],["soecialize","specialized"],["soem","some"],["soemthing","something"],["soemwhere","somewhere"],["sofisticated","sophisticated"],["softend","softened"],["softwares","software"],["softwre","software"],["sofware","software"],["sofwtare","software"],["sohw","show"],["soilders","soldiers"],["soiurce","source"],["soket","socket"],["sokets","sockets"],["solarmutx","solarmutex"],["solatary","solitary"],["solate","isolate"],["solated","isolated"],["solates","isolates"],["solating","isolating"],["soley","solely"],["solfed","solved"],["solfes","solves"],["solfing","solving"],["solfs","solves"],["soliders","soldiers"],["solification","solidification"],["soliliquy","soliloquy"],["soltion","solution"],["soltuion","solution"],["soltuions","solutions"],["soluable","soluble"],["solum","solemn"],["soluton","solution"],["solutons","solutions"],["solveable","solvable"],["solveing","solving"],["solwed","solved"],["som","some"],["someboby","somebody"],["somehing","something"],["somehting","something"],["somehwat","somewhat"],["somehwere","somewhere"],["somehwo","somehow"],["somelse","someone else"],["somemore","some more"],["somene","someone"],["somenone","someone"],["someon","someone"],["somethig","something"],["somethign","something"],["somethimes","sometimes"],["somethimg","something"],["somethiong","something"],["sometiems","sometimes"],["sometihing","something"],["sometihng","something"],["sometims","sometimes"],["sometines","sometimes"],["someting","something"],["sometinhg","something"],["sometring","something"],["sometrings","somethings"],["somewere","somewhere"],["somewher","somewhere"],["somewho","somehow"],["somme","some"],["somthign","something"],["somthing","something"],["somthingelse","somethingelse"],["somtimes","sometimes"],["somwhat","somewhat"],["somwhere","somewhere"],["somwho","somehow"],["somwhow","somehow"],["sonething","something"],["songlar","singular"],["sooaside","suicide"],["soodonim","pseudonym"],["soource","source"],["sophicated","sophisticated"],["sophisicated","sophisticated"],["sophisitcated","sophisticated"],["sophisticted","sophisticated"],["sophmore","sophomore"],["sorceror","sorcerer"],["sorkflow","workflow"],["sorrounding","surrounding"],["sortig","sorting"],["sortings","sorting"],["sortlst","sortlist"],["sortner","sorter"],["sortnr","sorter"],["soscket","socket"],["sotfware","software"],["souce","source"],["souces","sources"],["soucre","source"],["soucres","sources"],["soudn","sound"],["soudns","sounds"],["sould'nt","shouldn't"],["souldn't","shouldn't"],["soundard","soundcard"],["sountrack","soundtrack"],["sourc","source"],["sourcedrectory","sourcedirectory"],["sourcee","source"],["sourcees","sources"],["sourct","source"],["sourrounding","surrounding"],["sourth","south"],["sourthern","southern"],["southbrige","southbridge"],["souvenier","souvenir"],["souveniers","souvenirs"],["soveits","soviets"],["sover","solver"],["sovereignity","sovereignty"],["soverign","sovereign"],["soverignity","sovereignty"],["soverignty","sovereignty"],["sovle","solve"],["sovled","solved"],["sovren","sovereign"],["spacific","specific"],["spacification","specification"],["spacifications","specifications"],["spacifics","specifics"],["spacified","specified"],["spacifies","specifies"],["spaece","space"],["spaeced","spaced"],["spaeces","spaces"],["spaecing","spacing"],["spageti","spaghetti"],["spagetti","spaghetti"],["spagheti","spaghetti"],["spagnum","sphagnum"],["spainish","Spanish"],["spaning","spanning"],["sparate","separate"],["sparately","separately"],["spash","splash"],["spashed","splashed"],["spashes","splashes"],["spaw","spawn"],["spawed","spawned"],["spawing","spawning"],["spawining","spawning"],["spaws","spawns"],["spcae","space"],["spcaed","spaced"],["spcaes","spaces"],["spcaing","spacing"],["spcecified","specified"],["spcial","special"],["spcific","specific"],["spcification","specification"],["spcifications","specifications"],["spcified","specified"],["spcifies","specifies"],["spcify","specify"],["speaced","spaced"],["speach","speech"],["speacing","spacing"],["spearator","separator"],["spearators","separators"],["spec-complient","spec-compliant"],["specail","special"],["specefic","specific"],["specefically","specifically"],["speceficly","specifically"],["specefied","specified"],["specfic","specific"],["specfically","specifically"],["specfication","specification"],["specfications","specifications"],["specficication","specification"],["specficications","specifications"],["specficied","specified"],["specficies","specifies"],["specficy","specify"],["specficying","specifying"],["specfied","specified"],["specfield","specified"],["specfies","specifies"],["specfifies","specifies"],["specfify","specify"],["specfifying","specifying"],["specfiied","specified"],["specfy","specify"],["specfying","specifying"],["speciafied","specified"],["specialisaiton","specialisation"],["specialisaitons","specialisations"],["specializaiton","specialization"],["specializaitons","specializations"],["specialy","specially"],["specic","specific"],["specical","special"],["specication","specification"],["specidic","specific"],["specied","specified"],["speciefied","specified"],["specifactions","specifications"],["specifc","specific"],["specifcally","specifically"],["specifcation","specification"],["specifcations","specifications"],["specifcied","specified"],["specifclly","specifically"],["specifed","specified"],["specifes","specifies"],["speciffic","specific"],["speciffically","specifically"],["specifially","specifically"],["specificaiton","specification"],["specificaitons","specifications"],["specificallly","specifically"],["specificaly","specifically"],["specificated","specified"],["specificateion","specification"],["specificatin","specification"],["specificaton","specification"],["specificed","specified"],["specifices","specifies"],["specificially","specifically"],["specificiation","specification"],["specificiations","specifications"],["specificically","specifically"],["specificied","specified"],["specificl","specific"],["specificly","specifically"],["specifiction","specification"],["specifictions","specifications"],["specifid","specified"],["specifiec","specific"],["specifiecally","specifically"],["specifiecation","specification"],["specifiecations","specifications"],["specifiecd","specified"],["specifieced","specified"],["specifiecs","specifics"],["specifieed","specified"],["specifiees","specifies"],["specifig","specific"],["specifigation","specification"],["specifigations","specifications"],["specifing","specifying"],["specifities","specifics"],["specifiy","specify"],["specifiying","specifying"],["specifric","specific"],["specift","specify"],["specifyed","specified"],["specifyied","specified"],["specifyig","specifying"],["specifyinhg","specifying"],["speciic","specific"],["speciied","specified"],["speciifc","specific"],["speciifed","specified"],["specilisation","specialisation"],["specilisations","specialisations"],["specilization","specialization"],["specilizations","specializations"],["specilized","specialized"],["speciman","specimen"],["speciries","specifies"],["speciry","specify"],["specivied","specified"],["speciy","specify"],["speciyfing","specifying"],["speciyfying","specifying"],["speciying","specifying"],["spectauclar","spectacular"],["spectaulars","spectaculars"],["spectification","specification"],["spectifications","specifications"],["spectified","specified"],["spectifies","specifies"],["spectify","specify"],["spectifying","specifying"],["spectular","spectacular"],["spectularly","spectacularly"],["spectum","spectrum"],["specturm","spectrum"],["specualtive","speculative"],["specufies","specifies"],["specufy","specify"],["spedific","specific"],["spedified","specified"],["spedify","specify"],["speeak","speak"],["speeaking","speaking"],["speeling","spelling"],["speelling","spelling"],["speep","sleep"],["speep-up","speed-up"],["speeped","sped"],["speeping","sleeping"],["spefcifiable","specifiable"],["spefcific","specific"],["spefcifically","specifically"],["spefcification","specification"],["spefcifications","specifications"],["spefcifics","specifics"],["spefcifieid","specified"],["spefcifieir","specifier"],["spefcifieirs","specifiers"],["spefcifieis","specifies"],["spefcifiy","specify"],["spefcifiying","specifying"],["spefeid","specified"],["spefeir","specifier"],["spefeirs","specifiers"],["spefeis","specifies"],["spefiable","specifiable"],["spefial","special"],["spefic","specific"],["speficable","specifiable"],["spefically","specifically"],["spefication","specification"],["spefications","specifications"],["speficed","specified"],["speficeid","specified"],["speficeir","specifier"],["speficeirs","specifiers"],["speficeis","specifies"],["speficer","specifier"],["speficers","specifiers"],["spefices","specifies"],["speficiable","specifiable"],["speficiallally","specifically"],["speficiallation","specification"],["speficiallations","specifications"],["speficialleid","specified"],["speficialleir","specifier"],["speficialleirs","specifiers"],["speficialleis","specifies"],["speficialliable","specifiable"],["speficiallic","specific"],["speficiallically","specifically"],["speficiallication","specification"],["speficiallications","specifications"],["speficiallics","specifics"],["speficiallied","specified"],["speficiallier","specifier"],["speficialliers","specifiers"],["speficiallies","specifies"],["speficiallifed","specified"],["speficiallifer","specifier"],["speficiallifers","specifiers"],["speficiallifes","specifies"],["speficially","specifically"],["speficiation","specification"],["speficiations","specifications"],["speficic","specific"],["speficically","specifically"],["speficication","specification"],["speficications","specifications"],["speficics","specifics"],["speficied","specified"],["speficieid","specified"],["speficieir","specifier"],["speficieirs","specifiers"],["speficieis","specifies"],["speficier","specifier"],["speficiers","specifiers"],["speficies","specifies"],["speficifally","specifically"],["speficifation","specification"],["speficifations","specifications"],["speficifc","specific"],["speficifcally","specifically"],["speficifcation","specification"],["speficifcations","specifications"],["speficifcs","specifics"],["speficifed","specified"],["speficifeid","specified"],["speficifeir","specifier"],["speficifeirs","specifiers"],["speficifeis","specifies"],["speficifer","specifier"],["speficifers","specifiers"],["speficifes","specifies"],["speficifiable","specifiable"],["speficific","specific"],["speficifically","specifically"],["speficification","specification"],["speficifications","specifications"],["speficifics","specifics"],["speficified","specified"],["speficifier","specifier"],["speficifiers","specifiers"],["speficifies","specifies"],["speficififed","specified"],["speficififer","specifier"],["speficififers","specifiers"],["speficififes","specifies"],["speficify","specify"],["speficifying","specifying"],["speficiiable","specifiable"],["speficiic","specific"],["speficiically","specifically"],["speficiication","specification"],["speficiications","specifications"],["speficiics","specifics"],["speficiied","specified"],["speficiier","specifier"],["speficiiers","specifiers"],["speficiies","specifies"],["speficiifed","specified"],["speficiifer","specifier"],["speficiifers","specifiers"],["speficiifes","specifies"],["speficillally","specifically"],["speficillation","specification"],["speficillations","specifications"],["speficilleid","specified"],["speficilleir","specifier"],["speficilleirs","specifiers"],["speficilleis","specifies"],["speficilliable","specifiable"],["speficillic","specific"],["speficillically","specifically"],["speficillication","specification"],["speficillications","specifications"],["speficillics","specifics"],["speficillied","specified"],["speficillier","specifier"],["speficilliers","specifiers"],["speficillies","specifies"],["speficillifed","specified"],["speficillifer","specifier"],["speficillifers","specifiers"],["speficillifes","specifies"],["speficilly","specifically"],["speficitally","specifically"],["speficitation","specification"],["speficitations","specifications"],["speficiteid","specified"],["speficiteir","specifier"],["speficiteirs","specifiers"],["speficiteis","specifies"],["speficitiable","specifiable"],["speficitic","specific"],["speficitically","specifically"],["speficitication","specification"],["speficitications","specifications"],["speficitics","specifics"],["speficitied","specified"],["speficitier","specifier"],["speficitiers","specifiers"],["speficities","specificities"],["speficitifed","specified"],["speficitifer","specifier"],["speficitifers","specifiers"],["speficitifes","specifies"],["speficity","specificity"],["speficiy","specify"],["speficiying","specifying"],["spefics","specifics"],["speficy","specify"],["speficying","specifying"],["spefied","specified"],["spefier","specifier"],["spefiers","specifiers"],["spefies","specifies"],["spefifally","specifically"],["spefifation","specification"],["spefifations","specifications"],["spefifed","specified"],["spefifeid","specified"],["spefifeir","specifier"],["spefifeirs","specifiers"],["spefifeis","specifies"],["spefifer","specifier"],["spefifers","specifiers"],["spefifes","specifies"],["spefifiable","specifiable"],["spefific","specific"],["spefifically","specifically"],["spefification","specification"],["spefifications","specifications"],["spefifics","specifics"],["spefified","specified"],["spefifier","specifier"],["spefifiers","specifiers"],["spefifies","specifies"],["spefififed","specified"],["spefififer","specifier"],["spefififers","specifiers"],["spefififes","specifies"],["spefify","specify"],["spefifying","specifying"],["spefiiable","specifiable"],["spefiic","specific"],["spefiically","specifically"],["spefiication","specification"],["spefiications","specifications"],["spefiics","specifics"],["spefiied","specified"],["spefiier","specifier"],["spefiiers","specifiers"],["spefiies","specifies"],["spefiifally","specifically"],["spefiifation","specification"],["spefiifations","specifications"],["spefiifeid","specified"],["spefiifeir","specifier"],["spefiifeirs","specifiers"],["spefiifeis","specifies"],["spefiifiable","specifiable"],["spefiific","specific"],["spefiifically","specifically"],["spefiification","specification"],["spefiifications","specifications"],["spefiifics","specifics"],["spefiified","specified"],["spefiifier","specifier"],["spefiifiers","specifiers"],["spefiifies","specifies"],["spefiififed","specified"],["spefiififer","specifier"],["spefiififers","specifiers"],["spefiififes","specifies"],["spefiify","specify"],["spefiifying","specifying"],["spefixally","specifically"],["spefixation","specification"],["spefixations","specifications"],["spefixeid","specified"],["spefixeir","specifier"],["spefixeirs","specifiers"],["spefixeis","specifies"],["spefixiable","specifiable"],["spefixic","specific"],["spefixically","specifically"],["spefixication","specification"],["spefixications","specifications"],["spefixics","specifics"],["spefixied","specified"],["spefixier","specifier"],["spefixiers","specifiers"],["spefixies","specifies"],["spefixifed","specified"],["spefixifer","specifier"],["spefixifers","specifiers"],["spefixifes","specifies"],["spefixy","specify"],["spefixying","specifying"],["spefiy","specify"],["spefiying","specifying"],["spefy","specify"],["spefying","specifying"],["speherical","spherical"],["speical","special"],["speices","species"],["speicfied","specified"],["speicific","specific"],["speicified","specified"],["speicify","specify"],["speling","spelling"],["spellshecking","spellchecking"],["spendour","splendour"],["speparate","separate"],["speparated","separated"],["speparating","separating"],["speparation","separation"],["speparator","separator"],["spepc","spec"],["speperatd","separated"],["speperate","separate"],["speperateing","separating"],["speperater","separator"],["speperates","separates"],["speperating","separating"],["speperator","separator"],["speperats","separates"],["sperate","separate"],["sperately","separately"],["sperhical","spherical"],["spermatozoan","spermatozoon"],["speshal","special"],["speshel","special"],["spesialisation","specialization"],["spesific","specific"],["spesifical","specific"],["spesifically","specifically"],["spesificaly","specifically"],["spesifics","specifics"],["spesified","specified"],["spesifities","specifics"],["spesify","specify"],["spezialisation","specialization"],["spezific","specific"],["spezified","specified"],["spezify","specify"],["spicific","specific"],["spicified","specified"],["spicify","specify"],["spiltting","splitting"],["spindel","spindle"],["spindels","spindles"],["spinlcok","spinlock"],["spinock","spinlock"],["spligs","splits"],["spliiter","splitter"],["spliitting","splitting"],["spliting","splitting"],["splitted","split"],["splittng","splitting"],["spllitting","splitting"],["spoace","space"],["spoaced","spaced"],["spoaces","spaces"],["spoacing","spacing"],["sponser","sponsor"],["sponsered","sponsored"],["sponsers","sponsors"],["sponsership","sponsorship"],["spontanous","spontaneous"],["sponzored","sponsored"],["spoonfulls","spoonfuls"],["sporatic","sporadic"],["sporious","spurious"],["sppeches","speeches"],["spport","support"],["spported","supported"],["spporting","supporting"],["spports","supports"],["spreaded","spread"],["spreadhseet","spreadsheet"],["spreadhseets","spreadsheets"],["spreadsheat","spreadsheet"],["spreadsheats","spreadsheets"],["spreasheet","spreadsheet"],["spreasheets","spreadsheets"],["sprech","speech"],["sprecial","special"],["sprecialized","specialized"],["sprecially","specially"],["spred","spread"],["spredsheet","spreadsheet"],["spreedsheet","spreadsheet"],["sprinf","sprintf"],["spririous","spurious"],["spriritual","spiritual"],["spritual","spiritual"],["sproon","spoon"],["spsace","space"],["spsaced","spaced"],["spsaces","spaces"],["spsacing","spacing"],["sptintf","sprintf"],["spurios","spurious"],["spurrious","spurious"],["sqare","square"],["sqared","squared"],["sqares","squares"],["sqash","squash"],["sqashed","squashed"],["sqashing","squashing"],["sqaure","square"],["sqaured","squared"],["sqaures","squares"],["sqeuence","sequence"],["squashgin","squashing"],["squence","sequence"],["squirel","squirrel"],["squirl","squirrel"],["squrared","squared"],["srcipt","script"],["srcipts","scripts"],["sreampropinfo","streampropinfo"],["sreenshot","screenshot"],["sreenshots","screenshots"],["sreturns","returns"],["srikeout","strikeout"],["sring","string"],["srings","strings"],["srink","shrink"],["srinkd","shrunk"],["srinked","shrunk"],["srinking","shrinking"],["sript","script"],["sripts","scripts"],["srollbar","scrollbar"],["srouce","source"],["srtifact","artifact"],["srtifacts","artifacts"],["srtings","strings"],["srtructure","structure"],["srttings","settings"],["sructure","structure"],["sructures","structures"],["srunk","shrunk"],["srunken","shrunken"],["srunkn","shrunken"],["ssame","same"],["ssee","see"],["ssoaiating","associating"],["ssome","some"],["stabalization","stabilization"],["stabilitation","stabilization"],["stabilite","stabilize"],["stabilited","stabilized"],["stabilites","stabilizes"],["stabiliting","stabilizing"],["stabillity","stability"],["stabilty","stability"],["stablility","stability"],["stablilization","stabilization"],["stablize","stabilize"],["stach","stack"],["stacionary","stationary"],["stackk","stack"],["stadnard","standard"],["stadnardisation","standardisation"],["stadnardised","standardised"],["stadnardising","standardising"],["stadnardization","standardization"],["stadnardized","standardized"],["stadnardizing","standardizing"],["stadnards","standards"],["stae","state"],["staement","statement"],["staically","statically"],["stainlees","stainless"],["staion","station"],["staions","stations"],["staition","station"],["staitions","stations"],["stalagtite","stalactite"],["standar","standard"],["standarad","standard"],["standard-complient","standard-compliant"],["standardss","standards"],["standarisation","standardisation"],["standarise","standardise"],["standarised","standardised"],["standarises","standardises"],["standarising","standardising"],["standarization","standardization"],["standarize","standardize"],["standarized","standardized"],["standarizes","standardizes"],["standarizing","standardizing"],["standart","standard"],["standartd","standard"],["standartds","standards"],["standartisation","standardisation"],["standartisator","standardiser"],["standartised","standardised"],["standartization","standardization"],["standartizator","standardizer"],["standartized","standardized"],["standarts","standards"],["standatd","standard"],["standrat","standard"],["standrats","standards"],["standtard","standard"],["stange","strange"],["stanp","stamp"],["staration","starvation"],["stard","start"],["stardard","standard"],["stardardize","standardize"],["stardardized","standardized"],["stardardizes","standardizes"],["stardardizing","standardizing"],["stardards","standards"],["staright","straight"],["startd","started"],["startegic","strategic"],["startegies","strategies"],["startegy","strategy"],["startet","started"],["startign","starting"],["startin","starting"],["startlisteneing","startlistening"],["startnig","starting"],["startparanthesis","startparentheses"],["startted","started"],["startting","starting"],["starup","startup"],["starups","startups"],["statamenet","statement"],["statamenets","statements"],["stategies","strategies"],["stategise","strategise"],["stategised","strategised"],["stategize","strategize"],["stategized","strategized"],["stategy","strategy"],["stateman","statesman"],["statemanet","statement"],["statememts","statements"],["statemen","statement"],["statemenet","statement"],["statemenets","statements"],["statemet","statement"],["statemnts","statements"],["stati","statuses"],["staticly","statically"],["statictic","statistic"],["statictics","statistics"],["statisfied","satisfied"],["statisfies","satisfies"],["statisfy","satisfy"],["statisfying","satisfying"],["statisitics","statistics"],["statistices","statistics"],["statitic","statistic"],["statitics","statistics"],["statmenet","statement"],["statmenmt","statement"],["statment","statement"],["statments","statements"],["statrt","start"],["stattistic","statistic"],["statubar","statusbar"],["statuline","statusline"],["statulines","statuslines"],["statup","startup"],["staturday","Saturday"],["statuss","status"],["statusses","statuses"],["statustics","statistics"],["staulk","stalk"],["stauration","saturation"],["staus","status"],["stawberries","strawberries"],["stawberry","strawberry"],["stawk","stalk"],["stcokbrush","stockbrush"],["stdanard","standard"],["stdanards","standards"],["stength","strength"],["steram","stream"],["steramed","streamed"],["steramer","streamer"],["steraming","streaming"],["sterams","streams"],["sterio","stereo"],["steriods","steroids"],["sterotype","stereotype"],["sterotypes","stereotypes"],["stickness","stickiness"],["stickyness","stickiness"],["stiffneing","stiffening"],["stiky","sticky"],["stil","still"],["stilus","stylus"],["stingent","stringent"],["stipped","stripped"],["stiring","stirring"],["stirng","string"],["stirngs","strings"],["stirr","stir"],["stirrs","stirs"],["stivk","stick"],["stivks","sticks"],["stle","style"],["stlye","style"],["stlyes","styles"],["stnad","stand"],["stndard","standard"],["stoage","storage"],["stoages","storages"],["stocahstic","stochastic"],["stocastic","stochastic"],["stoer","store"],["stoers","stores"],["stomache","stomach"],["stompted","stomped"],["stong","strong"],["stoped","stopped"],["stoping","stopping"],["stopp","stop"],["stoppped","stopped"],["stoppping","stopping"],["stopps","stops"],["stopry","story"],["storag","storage"],["storeable","storable"],["storeage","storage"],["stoream","stream"],["storeble","storable"],["storeing","storing"],["storge","storage"],["storise","stories"],["stornegst","strongest"],["stoyr","story"],["stpo","stop"],["stradegies","strategies"],["stradegy","strategy"],["stragegy","strategy"],["strageties","strategies"],["stragety","strategy"],["straigh-forward","straightforward"],["straighforward","straightforward"],["straightfoward","straightforward"],["straigt","straight"],["straigth","straight"],["straines","strains"],["strangness","strangeness"],["strart","start"],["strarted","started"],["strarting","starting"],["strarts","starts"],["stratagically","strategically"],["strcture","structure"],["strctures","structures"],["strcutre","structure"],["strcutural","structural"],["strcuture","structure"],["strcutures","structures"],["streamm","stream"],["streammed","streamed"],["streamming","streaming"],["streatched","stretched"],["strech","stretch"],["streched","stretched"],["streches","stretches"],["streching","stretching"],["strectch","stretch"],["strecth","stretch"],["strecthed","stretched"],["strecthes","stretches"],["strecthing","stretching"],["streem","stream"],["streemlining","streamlining"],["stregth","strength"],["streightish","straightish"],["streightly","straightly"],["streightness","straightness"],["streigtish","straightish"],["streigtly","straightly"],["streigtness","straightness"],["strem","stream"],["strema","stream"],["strengh","strength"],["strenghen","strengthen"],["strenghened","strengthened"],["strenghening","strengthening"],["strenght","strength"],["strenghten","strengthen"],["strenghtened","strengthened"],["strenghtening","strengthening"],["strenghts","strengths"],["strengtened","strengthened"],["strenous","strenuous"],["strentgh","strength"],["strenth","strength"],["strerrror","strerror"],["striaght","straight"],["striaghten","straighten"],["striaghtens","straightens"],["striaghtforward","straightforward"],["striaghts","straights"],["striclty","strictly"],["stricly","strictly"],["stricteir","stricter"],["strictier","stricter"],["strictiest","strictest"],["strictist","strictest"],["strig","string"],["strigification","stringification"],["strigifying","stringifying"],["striing","string"],["striings","strings"],["strikely","strikingly"],["stringifed","stringified"],["strinsg","strings"],["strippen","stripped"],["stript","stripped"],["strirngification","stringification"],["strnad","strand"],["strng","string"],["stroage","storage"],["stroe","store"],["stroing","storing"],["stronlgy","strongly"],["stronly","strongly"],["strore","store"],["strored","stored"],["strores","stores"],["stroring","storing"],["strotage","storage"],["stroyboard","storyboard"],["struc","struct"],["strucrure","structure"],["strucrured","structured"],["strucrures","structures"],["structed","structured"],["structer","structure"],["structere","structure"],["structered","structured"],["structeres","structures"],["structetr","structure"],["structire","structure"],["structre","structure"],["structred","structured"],["structres","structures"],["structrual","structural"],["structrue","structure"],["structrued","structured"],["structrues","structures"],["structual","structural"],["structue","structure"],["structued","structured"],["structues","structures"],["structur","structure"],["structurs","structures"],["strucur","structure"],["strucure","structure"],["strucured","structured"],["strucures","structures"],["strucuring","structuring"],["strucurs","structures"],["strucutre","structure"],["strucutred","structured"],["strucutres","structures"],["strucuture","structure"],["struggel","struggle"],["struggeled","struggled"],["struggeling","struggling"],["struggels","struggles"],["struttural","structural"],["strutture","structure"],["struture","structure"],["ststion","station"],["ststionary","stationary"],["ststioned","stationed"],["ststionery","stationery"],["ststions","stations"],["ststr","strstr"],["stteting","setting"],["sttetings","settings"],["stubborness","stubbornness"],["stucked","stuck"],["stuckt","stuck"],["stuct","struct"],["stucts","structs"],["stucture","structure"],["stuctured","structured"],["stuctures","structures"],["studdy","study"],["studetn","student"],["studetns","students"],["studing","studying"],["studoi","studio"],["studois","studios"],["stuggling","struggling"],["stuido","studio"],["stuidos","studios"],["stuill","still"],["stummac","stomach"],["sturctural","structural"],["sturcture","structure"],["sturctures","structures"],["sturture","structure"],["sturtured","structured"],["sturtures","structures"],["sturucture","structure"],["stutdown","shutdown"],["stutus","status"],["styhe","style"],["styilistic","stylistic"],["stylessheets","stylesheets"],["sub-lcuase","sub-clause"],["subbtle","subtle"],["subcatagories","subcategories"],["subcatagory","subcategory"],["subcirucit","subcircuit"],["subcommannd","subcommand"],["subcommnad","subcommand"],["subconchus","subconscious"],["subconsiously","subconsciously"],["subcribe","subscribe"],["subcribed","subscribed"],["subcribes","subscribes"],["subcribing","subscribing"],["subdirectoires","subdirectories"],["subdirectorys","subdirectories"],["subdirecty","subdirectory"],["subdivisio","subdivision"],["subdivisiond","subdivisioned"],["subdoamin","subdomain"],["subdoamins","subdomains"],["subelemet","subelement"],["subelemets","subelements"],["subexperesion","subexpression"],["subexperesions","subexpressions"],["subexperession","subexpression"],["subexperessions","subexpressions"],["subexpersion","subexpression"],["subexpersions","subexpressions"],["subexperssion","subexpression"],["subexperssions","subexpressions"],["subexpession","subexpression"],["subexpessions","subexpressions"],["subexpresssion","subexpression"],["subexpresssions","subexpressions"],["subfolfer","subfolder"],["subfolfers","subfolders"],["subfromat","subformat"],["subfromats","subformats"],["subfroms","subforms"],["subgregion","subregion"],["subirectory","subdirectory"],["subjec","subject"],["subjet","subject"],["subjudgation","subjugation"],["sublass","subclass"],["sublasse","subclasse"],["sublasses","subclasses"],["sublcasses","subclasses"],["sublcuase","subclause"],["suble","subtle"],["submachne","submachine"],["submision","submission"],["submisson","submission"],["submited","submitted"],["submition","submission"],["submitions","submissions"],["submittted","submitted"],["submoule","submodule"],["submti","submit"],["subnegatiotiation","subnegotiation"],["subnegatiotiations","subnegotiations"],["subnegoatiation","subnegotiation"],["subnegoatiations","subnegotiations"],["subnegoation","subnegotiation"],["subnegoations","subnegotiations"],["subnegociation","subnegotiation"],["subnegociations","subnegotiations"],["subnegogtiation","subnegotiation"],["subnegogtiations","subnegotiations"],["subnegoitation","subnegotiation"],["subnegoitations","subnegotiations"],["subnegoptionsotiation","subnegotiation"],["subnegoptionsotiations","subnegotiations"],["subnegosiation","subnegotiation"],["subnegosiations","subnegotiations"],["subnegotaiation","subnegotiation"],["subnegotaiations","subnegotiations"],["subnegotaition","subnegotiation"],["subnegotaitions","subnegotiations"],["subnegotatiation","subnegotiation"],["subnegotatiations","subnegotiations"],["subnegotation","subnegotiation"],["subnegotations","subnegotiations"],["subnegothiation","subnegotiation"],["subnegothiations","subnegotiations"],["subnegotication","subnegotiation"],["subnegotications","subnegotiations"],["subnegotioation","subnegotiation"],["subnegotioations","subnegotiations"],["subnegotion","subnegotiation"],["subnegotionation","subnegotiation"],["subnegotionations","subnegotiations"],["subnegotions","subnegotiations"],["subnegotiotation","subnegotiation"],["subnegotiotations","subnegotiations"],["subnegotiotion","subnegotiation"],["subnegotiotions","subnegotiations"],["subnegotitaion","subnegotiation"],["subnegotitaions","subnegotiations"],["subnegotitation","subnegotiation"],["subnegotitations","subnegotiations"],["subnegotition","subnegotiation"],["subnegotitions","subnegotiations"],["subnegoziation","subnegotiation"],["subnegoziations","subnegotiations"],["subobjecs","subobjects"],["suborutine","subroutine"],["suborutines","subroutines"],["suboutine","subroutine"],["subpackge","subpackage"],["subpackges","subpackages"],["subpecies","subspecies"],["subporgram","subprogram"],["subproccese","subprocess"],["subpsace","subspace"],["subquue","subqueue"],["subract","subtract"],["subracted","subtracted"],["subraction","subtraction"],["subree","subtree"],["subresoure","subresource"],["subresoures","subresources"],["subroutie","subroutine"],["subrouties","subroutines"],["subsceptible","susceptible"],["subscibe","subscribe"],["subscibed","subscribed"],["subsciber","subscriber"],["subscibers","subscribers"],["subscirbe","subscribe"],["subscirbed","subscribed"],["subscirber","subscriber"],["subscirbers","subscribers"],["subscirbes","subscribes"],["subscirbing","subscribing"],["subscirpt","subscript"],["subscirption","subscription"],["subscirptions","subscriptions"],["subscritpion","subscription"],["subscritpions","subscriptions"],["subscritpiton","subscription"],["subscritpitons","subscriptions"],["subscritpt","subscript"],["subscritption","subscription"],["subscritptions","subscriptions"],["subsctitution","substitution"],["subsecrion","subsection"],["subsedent","subsequent"],["subseqence","subsequence"],["subseqent","subsequent"],["subsequest","subsequent"],["subsequnce","subsequence"],["subsequnt","subsequent"],["subsequntly","subsequently"],["subseuqent","subsequent"],["subshystem","subsystem"],["subshystems","subsystems"],["subsidary","subsidiary"],["subsiduary","subsidiary"],["subsiquent","subsequent"],["subsiquently","subsequently"],["subsituent","substituent"],["subsituents","substituents"],["subsitutable","substitutable"],["subsitutatble","substitutable"],["subsitute","substitute"],["subsituted","substituted"],["subsitutes","substitutes"],["subsituting","substituting"],["subsitution","substitution"],["subsitutions","substitutions"],["subsitutuent","substituent"],["subsitutuents","substituents"],["subsitutute","substitute"],["subsitututed","substituted"],["subsitututes","substitutes"],["subsitututing","substituting"],["subsitutution","substitution"],["subsquent","subsequent"],["subsquently","subsequently"],["subsriber","subscriber"],["substace","substance"],["substact","subtract"],["substaintially","substantially"],["substancial","substantial"],["substantialy","substantially"],["substantivly","substantively"],["substask","subtask"],["substasks","subtasks"],["substatial","substantial"],["substential","substantial"],["substentially","substantially"],["substition","substitution"],["substitions","substitutions"],["substitition","substitution"],["substititions","substitutions"],["substituation","substitution"],["substituations","substitutions"],["substitude","substitute"],["substituded","substituted"],["substitudes","substitutes"],["substituding","substituting"],["substitue","substitute"],["substitues","substitutes"],["substituing","substituting"],["substituion","substitution"],["substituions","substitutions"],["substiution","substitution"],["substract","subtract"],["substracted","subtracted"],["substracting","subtracting"],["substraction","subtraction"],["substracts","subtracts"],["substucture","substructure"],["substuctures","substructures"],["substutite","substitute"],["subsysthem","subsystem"],["subsysthems","subsystems"],["subsystyem","subsystem"],["subsystyems","subsystems"],["subsysytem","subsystem"],["subsysytems","subsystems"],["subsytem","subsystem"],["subsytems","subsystems"],["subtabels","subtables"],["subtak","subtask"],["subtances","substances"],["subterranian","subterranean"],["subtitute","substitute"],["subtituted","substituted"],["subtitutes","substitutes"],["subtituting","substituting"],["subtitution","substitution"],["subtitutions","substitutions"],["subtrafuge","subterfuge"],["subtrate","substrate"],["subtrates","substrates"],["subtring","substring"],["subtrings","substrings"],["subtsitutable","substitutable"],["subtsitutatble","substitutable"],["suburburban","suburban"],["subystem","subsystem"],["subystems","subsystems"],["succceeded","succeeded"],["succcess","success"],["succcesses","successes"],["succcessful","successful"],["succcessfully","successfully"],["succcessor","successor"],["succcessors","successors"],["succcessul","successful"],["succcessully","successfully"],["succecful","successful"],["succed","succeed"],["succedd","succeed"],["succedded","succeeded"],["succedding","succeeding"],["succedds","succeeds"],["succede","succeed"],["succeded","succeeded"],["succedes","succeeds"],["succedfully","successfully"],["succeding","succeeding"],["succeds","succeeds"],["succee","succeed"],["succeedde","succeeded"],["succeedes","succeeds"],["succeess","success"],["succeesses","successes"],["succes","success"],["succesful","successful"],["succesfull","successful"],["succesfully","successfully"],["succesfuly","successfully"],["succesion","succession"],["succesive","successive"],["succesor","successor"],["succesors","successors"],["successfui","successful"],["successfule","successful"],["successfull","successful"],["successfullies","successfully"],["successfullly","successfully"],["successfulln","successful"],["successfullness","successfulness"],["successfullt","successfully"],["successfuly","successfully"],["successing","successive"],["successs","success"],["successsfully","successfully"],["successsion","succession"],["successul","successful"],["successully","successfully"],["succesully","successfully"],["succicently","sufficiently"],["succint","succinct"],["succseeded","succeeded"],["succsess","success"],["succsessfull","successful"],["succsessive","successive"],["succssful","successful"],["succussfully","successfully"],["suceed","succeed"],["suceeded","succeeded"],["suceeding","succeeding"],["suceeds","succeeds"],["suceessfully","successfully"],["suces","success"],["suceses","successes"],["sucesful","successful"],["sucesfull","successful"],["sucesfully","successfully"],["sucesfuly","successfully"],["sucesion","succession"],["sucesive","successive"],["sucess","success"],["sucesscient","sufficient"],["sucessed","succeeded"],["sucessefully","successfully"],["sucesses","successes"],["sucessess","success"],["sucessflly","successfully"],["sucessfually","successfully"],["sucessfukk","successful"],["sucessful","successful"],["sucessfull","successful"],["sucessfully","successfully"],["sucessfuly","successfully"],["sucession","succession"],["sucessiv","successive"],["sucessive","successive"],["sucessively","successively"],["sucessor","successor"],["sucessors","successors"],["sucessot","successor"],["sucesss","success"],["sucessses","successes"],["sucesssful","successful"],["sucesssfull","successful"],["sucesssfully","successfully"],["sucesssfuly","successfully"],["sucessufll","successful"],["sucessuflly","successfully"],["sucessully","successfully"],["sucide","suicide"],["sucidial","suicidal"],["sucome","succumb"],["sucsede","succeed"],["sucsess","success"],["sudent","student"],["sudents","students"],["sudmobule","submodule"],["sudmobules","submodules"],["sueful","useful"],["sueprset","superset"],["suface","surface"],["sufaces","surfaces"],["sufface","surface"],["suffaces","surfaces"],["suffciency","sufficiency"],["suffcient","sufficient"],["suffciently","sufficiently"],["sufferage","suffrage"],["sufferred","suffered"],["sufferring","suffering"],["sufficate","suffocate"],["sufficated","suffocated"],["sufficates","suffocates"],["sufficating","suffocating"],["suffication","suffocation"],["sufficency","sufficiency"],["sufficent","sufficient"],["sufficently","sufficiently"],["sufficiancy","sufficiency"],["sufficiant","sufficient"],["sufficiantly","sufficiently"],["sufficiennt","sufficient"],["sufficienntly","sufficiently"],["suffiency","sufficiency"],["suffient","sufficient"],["suffiently","sufficiently"],["suffisticated","sophisticated"],["suficate","suffocate"],["suficated","suffocated"],["suficates","suffocates"],["suficating","suffocating"],["sufication","suffocation"],["suficcient","sufficient"],["suficient","sufficient"],["suficiently","sufficiently"],["sufocate","suffocate"],["sufocated","suffocated"],["sufocates","suffocates"],["sufocating","suffocating"],["sufocation","suffocation"],["sugested","suggested"],["sugestion","suggestion"],["sugestions","suggestions"],["sugests","suggests"],["suggesst","suggest"],["suggessted","suggested"],["suggessting","suggesting"],["suggesstion","suggestion"],["suggesstions","suggestions"],["suggessts","suggests"],["suggestes","suggests"],["suggestin","suggestion"],["suggestins","suggestions"],["suggestsed","suggested"],["suggestted","suggested"],["suggesttion","suggestion"],["suggesttions","suggestions"],["sugget","suggest"],["suggeted","suggested"],["suggetsed","suggested"],["suggetsing","suggesting"],["suggetsion","suggestion"],["sugggest","suggest"],["sugggested","suggested"],["sugggesting","suggesting"],["sugggestion","suggestion"],["sugggestions","suggestions"],["sugguest","suggest"],["sugguested","suggested"],["sugguesting","suggesting"],["sugguestion","suggestion"],["sugguestions","suggestions"],["suh","such"],["suiete","suite"],["suiteable","suitable"],["sumamry","summary"],["sumarize","summarize"],["sumary","summary"],["sumbitted","submitted"],["sumed-up","summed-up"],["summarizen","summarize"],["summay","summary"],["summerised","summarised"],["summerized","summarized"],["summersalt","somersault"],["summmaries","summaries"],["summmarisation","summarisation"],["summmarised","summarised"],["summmarization","summarization"],["summmarized","summarized"],["summmary","summary"],["sumodules","submodules"],["sumulate","simulate"],["sumulated","simulated"],["sumulates","simulates"],["sumulation","simulation"],["sumulations","simulations"],["sundey","Sunday"],["sunglases","sunglasses"],["sunsday","Sunday"],["suntask","subtask"],["suop","soup"],["supeblock","superblock"],["supeena","subpoena"],["superbock","superblock"],["superbocks","superblocks"],["supercalifragilisticexpialidoceous","supercalifragilisticexpialidocious"],["supercede","supersede"],["superceded","superseded"],["supercedes","supersedes"],["superceding","superseding"],["superceed","supersede"],["superceeded","superseded"],["superflouous","superfluous"],["superflous","superfluous"],["superflouse","superfluous"],["superfluious","superfluous"],["superfluos","superfluous"],["superfulous","superfluous"],["superintendant","superintendent"],["superopeator","superoperator"],["supersed","superseded"],["superseedd","superseded"],["superseede","supersede"],["superseeded","superseded"],["suphisticated","sophisticated"],["suplant","supplant"],["suplanted","supplanted"],["suplanting","supplanting"],["suplants","supplants"],["suplementary","supplementary"],["suplied","supplied"],["suplimented","supplemented"],["supllies","supplies"],["suport","support"],["suported","supported"],["suporting","supporting"],["suports","supports"],["suportted","supported"],["suposable","supposable"],["supose","suppose"],["suposeable","supposable"],["suposed","supposed"],["suposedly","supposedly"],["suposes","supposes"],["suposing","supposing"],["suposse","suppose"],["suppied","supplied"],["suppier","supplier"],["suppies","supplies"],["supplamented","supplemented"],["suppliad","supplied"],["suppliementing","supplementing"],["suppliment","supplement"],["supplyed","supplied"],["suppoed","supposed"],["suppoert","support"],["suppoort","support"],["suppoorts","supports"],["suppopose","suppose"],["suppoprt","support"],["suppoprted","supported"],["suppor","support"],["suppored","supported"],["supporession","suppression"],["supporing","supporting"],["supportd","supported"],["supportes","supports"],["supportin","supporting"],["supportt","support"],["supportted","supported"],["supportting","supporting"],["supportts","supports"],["supposeable","supposable"],["supposeded","supposed"],["supposedely","supposedly"],["supposeds","supposed"],["supposedy","supposedly"],["supposingly","supposedly"],["suppossed","supposed"],["suppoted","supported"],["suppplied","supplied"],["suppport","support"],["suppported","supported"],["suppporting","supporting"],["suppports","supports"],["suppres","suppress"],["suppresed","suppressed"],["suppresion","suppression"],["suppresions","suppressions"],["suppressingd","suppressing"],["supprot","support"],["supproted","supported"],["supproter","supporter"],["supproters","supporters"],["supproting","supporting"],["supprots","supports"],["supprt","support"],["supprted","supported"],["suppurt","support"],["suppurted","supported"],["suppurter","supporter"],["suppurters","supporters"],["suppurting","supporting"],["suppurtive","supportive"],["suppurts","supports"],["suppy","supply"],["suppying","supplying"],["suprassing","surpassing"],["supres","suppress"],["supresed","suppressed"],["supreses","suppresses"],["supresing","suppressing"],["supresion","suppression"],["supress","suppress"],["supressed","suppressed"],["supresses","suppresses"],["supressible","suppressible"],["supressing","suppressing"],["supression","suppression"],["supressions","suppressions"],["supressor","suppressor"],["supressors","suppressors"],["supresssion","suppression"],["suprious","spurious"],["suprise","surprise"],["suprised","surprised"],["suprises","surprises"],["suprising","surprising"],["suprisingly","surprisingly"],["suprize","surprise"],["suprized","surprised"],["suprizing","surprising"],["suprizingly","surprisingly"],["supsend","suspend"],["supspect","suspect"],["supspected","suspected"],["supspecting","suspecting"],["supspects","suspects"],["surbert","sherbet"],["surfce","surface"],["surgest","suggest"],["surgested","suggested"],["surgestion","suggestion"],["surgestions","suggestions"],["surgests","suggests"],["suround","surround"],["surounded","surrounded"],["surounding","surrounding"],["suroundings","surroundings"],["surounds","surrounds"],["surpise","surprise"],["surpises","surprises"],["surplanted","supplanted"],["surport","support"],["surported","supported"],["surpress","suppress"],["surpressed","suppressed"],["surpresses","suppresses"],["surpressing","suppressing"],["surprisinlgy","surprisingly"],["surprize","surprise"],["surprized","surprised"],["surprizing","surprising"],["surprizingly","surprisingly"],["surregat","surrogate"],["surrepetitious","surreptitious"],["surrepetitiously","surreptitiously"],["surreptious","surreptitious"],["surreptiously","surreptitiously"],["surrogage","surrogate"],["surronded","surrounded"],["surrouded","surrounded"],["surrouding","surrounding"],["surrrounded","surrounded"],["surrundering","surrendering"],["survay","survey"],["survays","surveys"],["surveilence","surveillance"],["surveill","surveil"],["surveyer","surveyor"],["surviver","survivor"],["survivers","survivors"],["survivied","survived"],["susbcribed","subscribed"],["susbsystem","subsystem"],["susbsystems","subsystems"],["susbsytem","subsystem"],["susbsytems","subsystems"],["suscribe","subscribe"],["suscribed","subscribed"],["suscribes","subscribes"],["suscript","subscript"],["susepect","suspect"],["suseptable","susceptible"],["suseptible","susceptible"],["susinctly","succinctly"],["susinkt","succinct"],["suspedn","suspend"],["suspeneded","suspended"],["suspention","suspension"],["suspicios","suspicious"],["suspicioulsy","suspiciously"],["suspicous","suspicious"],["suspicously","suspiciously"],["suspision","suspicion"],["suspsend","suspend"],["sussinct","succinct"],["sustainaiblity","sustainability"],["sustem","system"],["sustems","systems"],["sustitution","substitution"],["sustitutions","substitutions"],["susupend","suspend"],["sutdown","shutdown"],["sutisfaction","satisfaction"],["sutisfied","satisfied"],["sutisfies","satisfies"],["sutisfy","satisfy"],["sutisfying","satisfying"],["suttled","shuttled"],["suttles","shuttles"],["suttlety","subtlety"],["suttling","shuttling"],["suuport","support"],["suuported","supported"],["suuporting","supporting"],["suuports","supports"],["suvenear","souvenir"],["suystem","system"],["suystemic","systemic"],["suystems","systems"],["svelt","svelte"],["swaer","swear"],["swaers","swears"],["swalloed","swallowed"],["swaped","swapped"],["swapiness","swappiness"],["swaping","swapping"],["swarmin","swarming"],["swcloumns","swcolumns"],["swepth","swept"],["swich","switch"],["swiched","switched"],["swiching","switching"],["swicth","switch"],["swicthed","switched"],["swicthing","switching"],["swiming","swimming"],["switchs","switches"],["switcht","switched"],["switchting","switching"],["swith","switch"],["swithable","switchable"],["swithc","switch"],["swithcboard","switchboard"],["swithced","switched"],["swithces","switches"],["swithch","switch"],["swithches","switches"],["swithching","switching"],["swithcing","switching"],["swithcover","switchover"],["swithed","switched"],["swither","switcher"],["swithes","switches"],["swithing","switching"],["switiches","switches"],["swown","shown"],["swtich","switch"],["swtichable","switchable"],["swtichback","switchback"],["swtichbacks","switchbacks"],["swtichboard","switchboard"],["swtichboards","switchboards"],["swtiched","switched"],["swticher","switcher"],["swtichers","switchers"],["swtiches","switches"],["swtiching","switching"],["swtichover","switchover"],["swtichs","switches"],["sxl","xsl"],["syantax","syntax"],["syas","says"],["syatem","system"],["syatems","systems"],["sybsystem","subsystem"],["sybsystems","subsystems"],["sychronisation","synchronisation"],["sychronise","synchronise"],["sychronised","synchronised"],["sychroniser","synchroniser"],["sychronises","synchronises"],["sychronisly","synchronously"],["sychronization","synchronization"],["sychronize","synchronize"],["sychronized","synchronized"],["sychronizer","synchronizer"],["sychronizes","synchronizes"],["sychronmode","synchronmode"],["sychronous","synchronous"],["sychronously","synchronously"],["sycle","cycle"],["sycled","cycled"],["sycles","cycles"],["sycling","cycling"],["sycn","sync"],["sycology","psychology"],["sycronise","synchronise"],["sycronised","synchronised"],["sycronises","synchronises"],["sycronising","synchronising"],["sycronization","synchronization"],["sycronizations","synchronizations"],["sycronize","synchronize"],["sycronized","synchronized"],["sycronizes","synchronizes"],["sycronizing","synchronizing"],["sycronous","synchronous"],["sycronously","synchronously"],["sycronus","synchronous"],["sylabus","syllabus"],["syle","style"],["syles","styles"],["sylibol","syllable"],["sylinder","cylinder"],["sylinders","cylinders"],["sylistic","stylistic"],["sylog","syslog"],["symantics","semantics"],["symblic","symbolic"],["symbo","symbol"],["symboles","symbols"],["symboll","symbol"],["symbonname","symbolname"],["symbsol","symbol"],["symbsols","symbols"],["symemetric","symmetric"],["symetri","symmetry"],["symetric","symmetric"],["symetrical","symmetrical"],["symetrically","symmetrically"],["symetry","symmetry"],["symettric","symmetric"],["symmetic","symmetric"],["symmetral","symmetric"],["symmetri","symmetry"],["symmetricaly","symmetrically"],["symnol","symbol"],["symnols","symbols"],["symobilic","symbolic"],["symobl","symbol"],["symoblic","symbolic"],["symoblically","symbolically"],["symobls","symbols"],["symobolic","symbolic"],["symobolical","symbolical"],["symol","symbol"],["symols","symbols"],["synagouge","synagogue"],["synamic","dynamic"],["synax","syntax"],["synching","syncing"],["synchonisation","synchronisation"],["synchonise","synchronise"],["synchonised","synchronised"],["synchonises","synchronises"],["synchonising","synchronising"],["synchonization","synchronization"],["synchonize","synchronize"],["synchonized","synchronized"],["synchonizes","synchronizes"],["synchonizing","synchronizing"],["synchonous","synchronous"],["synchonrous","synchronous"],["synchrnization","synchronization"],["synchrnonization","synchronization"],["synchroizing","synchronizing"],["synchromized","synchronized"],["synchroneous","synchronous"],["synchroneously","synchronously"],["synchronious","synchronous"],["synchroniously","synchronously"],["synchronizaton","synchronization"],["synchronsouly","synchronously"],["synchronuous","synchronous"],["synchronuously","synchronously"],["synchronus","synchronous"],["syncrhonise","synchronise"],["syncrhonised","synchronised"],["syncrhonize","synchronize"],["syncrhonized","synchronized"],["syncronise","synchronise"],["syncronised","synchronised"],["syncronises","synchronises"],["syncronising","synchronising"],["syncronization","synchronization"],["syncronizations","synchronizations"],["syncronize","synchronize"],["syncronized","synchronized"],["syncronizes","synchronizes"],["syncronizing","synchronizing"],["syncronous","synchronous"],["syncronously","synchronously"],["syncronus","synchronous"],["syncting","syncing"],["syndonic","syntonic"],["syndrom","syndrome"],["syndroms","syndromes"],["synomym","synonym"],["synonim","synonym"],["synonomous","synonymous"],["synonymns","synonyms"],["synopis","synopsis"],["synopsys","synopsis"],["synoym","synonym"],["synphony","symphony"],["synposis","synopsis"],["synronous","synchronous"],["syntac","syntax"],["syntacks","syntax"],["syntacs","syntax"],["syntact","syntax"],["syntactally","syntactically"],["syntacts","syntax"],["syntak","syntax"],["syntaks","syntax"],["syntakt","syntax"],["syntakts","syntax"],["syntatic","syntactic"],["syntatically","syntactically"],["syntaxe","syntax"],["syntaxg","syntax"],["syntaxt","syntax"],["syntehsise","synthesise"],["syntehsised","synthesised"],["syntehsize","synthesize"],["syntehsized","synthesized"],["syntesis","synthesis"],["syntethic","synthetic"],["syntethically","synthetically"],["syntethics","synthetics"],["syntetic","synthetic"],["syntetize","synthesize"],["syntetized","synthesized"],["synthethic","synthetic"],["synthetize","synthesize"],["synthetized","synthesized"],["synthetizes","synthesizes"],["synthtic","synthetic"],["syphyllis","syphilis"],["sypmtoms","symptoms"],["sypport","support"],["syrap","syrup"],["sysbols","symbols"],["syschronize","synchronize"],["sysem","system"],["sysematic","systematic"],["sysems","systems"],["sysmatically","systematically"],["sysmbol","symbol"],["sysmograph","seismograph"],["sysmte","system"],["sysmtes","systems"],["systax","syntax"],["syste","system"],["systen","system"],["systens","systems"],["systesm","systems"],["systhem","system"],["systhems","systems"],["systm","system"],["systme","system"],["systmes","systems"],["systms","systems"],["systyem","system"],["systyems","systems"],["sysyem","system"],["sysyems","systems"],["sytax","syntax"],["sytem","system"],["sytematic","systematic"],["sytemd","systemd"],["syteme","system"],["sytems","systems"],["sythesis","synthesis"],["sytle","style"],["sytled","styled"],["sytles","styles"],["sytlesheet","stylesheet"],["sytling","styling"],["sytnax","syntax"],["sytntax","syntax"],["sytsem","system"],["sytsemic","systemic"],["sytsems","systems"],["szenario","scenario"],["szenarios","scenarios"],["szes","sizes"],["szie","size"],["szied","sized"],["szies","sizes"],["tabacco","tobacco"],["tabbaray","taboret"],["tabblow","tableau"],["tabe","table"],["tabel","table"],["tabeles","tables"],["tabels","tables"],["tabeview","tabview"],["tabke","table"],["tabl","table"],["tablepsace","tablespace"],["tablepsaces","tablespaces"],["tablle","table"],["tabluar","tabular"],["tabluate","tabulate"],["tabluated","tabulated"],["tabluates","tabulates"],["tabluating","tabulating"],["tabualte","tabulate"],["tabualted","tabulated"],["tabualtes","tabulates"],["tabualting","tabulating"],["tabualtor","tabulator"],["tabualtors","tabulators"],["taged","tagged"],["taget","target"],["tageted","targeted"],["tageting","targeting"],["tagets","targets"],["tagggen","taggen"],["tagnet","tangent"],["tagnetial","tangential"],["tagnets","tangents"],["tagued","tagged"],["tahn","than"],["taht","that"],["takslet","tasklet"],["talbe","table"],["talekd","talked"],["tallerable","tolerable"],["tamplate","template"],["tamplated","templated"],["tamplates","templates"],["tamplating","templating"],["tangeant","tangent"],["tangeantial","tangential"],["tangeants","tangents"],["tangenet","tangent"],["tangensial","tangential"],["tangentailly","tangentially"],["tanget","tangent"],["tangetial","tangential"],["tangetially","tangentially"],["tangets","tangents"],["tansact","transact"],["tansaction","transaction"],["tansactional","transactional"],["tansactions","transactions"],["tanseint","transient"],["tansfomed","transformed"],["tansient","transient"],["tanslate","translate"],["tanslated","translated"],["tanslates","translates"],["tanslation","translation"],["tanslations","translations"],["tanslator","translator"],["tansmit","transmit"],["tansverse","transverse"],["tarbal","tarball"],["tarbals","tarballs"],["tarce","trace"],["tarced","traced"],["tarces","traces"],["tarcing","tracing"],["targed","target"],["targer","target"],["targest","targets"],["targetted","targeted"],["targetting","targeting"],["targettting","targeting"],["targt","target"],["targte","target"],["tarmigan","ptarmigan"],["tarnsparent","transparent"],["tarpolin","tarpaulin"],["tarvis","Travis"],["tarvisci","TravisCI"],["tasbar","taskbar"],["taskelt","tasklet"],["tast","taste"],["tatgert","target"],["tatgerted","targeted"],["tatgerting","targeting"],["tatgerts","targets"],["tath","that"],["tatoo","tattoo"],["tatoos","tattoos"],["tattooes","tattoos"],["tawk","talk"],["taxanomic","taxonomic"],["taxanomy","taxonomy"],["taxnomy","taxonomy"],["taxomonmy","taxonomy"],["taxonmy","taxonomy"],["taxonoy","taxonomy"],["taylored","tailored"],["tbe","the"],["tbey","they"],["tcahce","cache"],["tcahces","caches"],["tcheckout","checkout"],["tcpdumpp","tcpdump"],["tcppcheck","cppcheck"],["teacer","teacher"],["teacers","teachers"],["teached","taught"],["teachnig","teaching"],["teaher","teacher"],["teahers","teachers"],["teamplate","template"],["teamplates","templates"],["teated","treated"],["teched","taught"],["techer","teacher"],["techers","teachers"],["teches","teaches"],["techical","technical"],["techician","technician"],["techicians","technicians"],["techincal","technical"],["techincally","technically"],["teching","teaching"],["techinically","technically"],["techinique","technique"],["techiniques","techniques"],["techinque","technique"],["techinques","techniques"],["techique","technique"],["techiques","techniques"],["techneek","technique"],["technic","technique"],["technics","techniques"],["technik","technique"],["techniks","techniques"],["techniquest","techniques"],["techniquet","technique"],["technitian","technician"],["technition","technician"],["technlogy","technology"],["technnology","technology"],["technolgy","technology"],["technoloiges","technologies"],["tecnic","technique"],["tecnical","technical"],["tecnically","technically"],["tecnician","technician"],["tecnicians","technicians"],["tecnique","technique"],["tecniques","techniques"],["tedeous","tedious"],["tefine","define"],["teh","the"],["tehy","they"],["tekst","text"],["teksts","texts"],["telegramm","telegram"],["telelevision","television"],["televsion","television"],["telocom","telecom"],["telphony","telephony"],["temaplate","template"],["temaplates","templates"],["temeprature","temperature"],["temepratures","temperatures"],["temerature","temperature"],["teminal","terminal"],["teminals","terminals"],["teminate","terminate"],["teminated","terminated"],["teminating","terminating"],["temination","termination"],["temlate","template"],["temorarily","temporarily"],["temorary","temporary"],["tempalte","template"],["tempaltes","templates"],["temparal","temporal"],["tempararily","temporarily"],["temparary","temporary"],["temparate","temperate"],["temparature","temperature"],["temparily","temporarily"],["tempate","template"],["tempated","templated"],["tempates","templates"],["tempatied","templatized"],["tempation","temptation"],["tempatised","templatised"],["tempatized","templatized"],["tempature","temperature"],["tempdate","template"],["tempearture","temperature"],["tempeartures","temperatures"],["tempearure","temperature"],["tempelate","template"],["temperarily","temporarily"],["temperarure","temperature"],["temperary","temporary"],["temperatur","temperature"],["tempereature","temperature"],["temperment","temperament"],["tempertaure","temperature"],["temperture","temperature"],["templaced","templated"],["templaces","templates"],["templacing","templating"],["templaet","template"],["templat","template"],["templateas","templates"],["templete","template"],["templeted","templated"],["templetes","templates"],["templeting","templating"],["tempoaray","temporary"],["tempopary","temporary"],["temporaere","temporary"],["temporafy","temporary"],["temporalily","temporarily"],["temporarely","temporarily"],["temporarilly","temporarily"],["temporarilty","temporarily"],["temporarilu","temporary"],["temporarirly","temporarily"],["temporay","temporary"],["tempories","temporaries"],["temporily","temporarily"],["tempororaries","temporaries"],["tempororarily","temporarily"],["tempororary","temporary"],["temporories","temporaries"],["tempororily","temporarily"],["temporory","temporary"],["temporraies","temporaries"],["temporraily","temporarily"],["temporraries","temporaries"],["temporrarily","temporarily"],["temporrary","temporary"],["temporray","temporary"],["temporries","temporaries"],["temporrily","temporarily"],["temporry","temporary"],["temportal","temporal"],["temportaries","temporaries"],["temportarily","temporarily"],["temportary","temporary"],["tempory","temporary"],["temporyries","temporaries"],["temporyrily","temporarily"],["temporyry","temporary"],["tempraaily","temporarily"],["tempraal","temporal"],["tempraarily","temporarily"],["tempraarly","temporarily"],["tempraary","temporary"],["tempraay","temporary"],["tempraily","temporarily"],["tempral","temporal"],["temprament","temperament"],["tempramental","temperamental"],["tempraraily","temporarily"],["tempraral","temporal"],["temprararily","temporarily"],["temprararly","temporarily"],["temprarary","temporary"],["tempraray","temporary"],["temprarily","temporarily"],["temprature","temperature"],["tempratures","temperatures"],["tempray","temporary"],["tempreature","temperature"],["tempreatures","temperatures"],["temprement","temperament"],["tempremental","temperamental"],["temproaily","temporarily"],["temproal","temporal"],["temproarily","temporarily"],["temproarly","temporarily"],["temproary","temporary"],["temproay","temporary"],["temprol","temporal"],["temproment","temperament"],["tempromental","temperamental"],["temproraily","temporarily"],["temproral","temporal"],["temproraly","temporarily"],["temprorarily","temporarily"],["temprorarly","temporarily"],["temprorary","temporary"],["temproray","temporary"],["temprorily","temporarily"],["temprory","temporary"],["temproy","temporary"],["temptatation","temptation"],["tempurature","temperature"],["tempurture","temperature"],["temr","term"],["temrinal","terminal"],["temselves","themselves"],["temtation","temptation"],["tenacle","tentacle"],["tenacles","tentacles"],["tenanet","tenant"],["tenanets","tenants"],["tenatious","tenacious"],["tenatiously","tenaciously"],["tenative","tentative"],["tenatively","tentatively"],["tendacy","tendency"],["tendancies","tendencies"],["tendancy","tendency"],["tennisplayer","tennis player"],["tentaive","tentative"],["tentaively","tentatively"],["tention","tension"],["teplmate","template"],["teplmated","templated"],["teplmates","templates"],["tepmorarily","temporarily"],["teraform","terraform"],["teraformed","terraformed"],["teraforming","terraforming"],["teraforms","terraforms"],["terfform","terraform"],["terfformed","terraformed"],["terfforming","terraforming"],["terfforms","terraforms"],["teridactyl","pterodactyl"],["terific","terrific"],["terimnate","terminate"],["termial","terminal"],["termials","terminals"],["termianted","terminated"],["termimal","terminal"],["termimals","terminals"],["terminater","terminator"],["terminaters","terminators"],["terminats","terminates"],["termindate","terminate"],["termine","determine"],["termined","terminated"],["terminte","terminate"],["termintor","terminator"],["termniate","terminate"],["termniated","terminated"],["termniates","terminates"],["termniating","terminating"],["termniation","termination"],["termniations","terminations"],["termniator","terminator"],["termniators","terminators"],["termo","thermo"],["termostat","thermostat"],["termperatue","temperature"],["termperatues","temperatures"],["termperature","temperature"],["termperatures","temperatures"],["termplate","template"],["termplated","templated"],["termplates","templates"],["termporal","temporal"],["termporaries","temporaries"],["termporarily","temporarily"],["termporary","temporary"],["ternament","tournament"],["ternimate","terminate"],["terninal","terminal"],["terninals","terminals"],["terrable","terrible"],["terrestial","terrestrial"],["terrform","terraform"],["terrformed","terraformed"],["terrforming","terraforming"],["terrforms","terraforms"],["terriffic","terrific"],["terriories","territories"],["terriory","territory"],["territorist","terrorist"],["territoy","territory"],["terroist","terrorist"],["terurn","return"],["terurns","returns"],["tescase","testcase"],["tescases","testcases"],["tesellate","tessellate"],["tesellated","tessellated"],["tesellation","tessellation"],["tesellator","tessellator"],["tesited","tested"],["tessealte","tessellate"],["tessealted","tessellated"],["tesselatad","tessellated"],["tesselate","tessellate"],["tesselated","tessellated"],["tesselation","tessellation"],["tesselator","tessellator"],["tessleate","tessellate"],["tessleated","tessellated"],["tessleating","tessellating"],["tessleator","tessellator"],["testeing","testing"],["testiclular","testicular"],["testin","testing"],["testng","testing"],["testof","test of"],["testomony","testimony"],["testsing","testing"],["tetrahedran","tetrahedron"],["tetrahedrans","tetrahedrons"],["tetry","retry"],["tetss","tests"],["tetxture","texture"],["teusday","Tuesday"],["texchnically","technically"],["texline","textline"],["textfrme","textframe"],["texual","textual"],["texually","textually"],["texure","texture"],["texured","textured"],["texures","textures"],["texxt","text"],["tey","they"],["tghe","the"],["thansk","thanks"],["thansparent","transparent"],["thant","than"],["thare","there"],["that;s","that's"],["thats'","that's"],["thats","that's"],["thats;","that's"],["thck","thick"],["theard","thread"],["thearding","threading"],["theards","threads"],["theared","threaded"],["theather","theater"],["theef","thief"],["theer","there"],["theery","theory"],["theese","these"],["thefore","therefore"],["theif","thief"],["theifs","thieves"],["theive","thief"],["theives","thieves"],["themplate","template"],["themselces","themselves"],["themselfes","themselves"],["themselfs","themselves"],["themselvs","themselves"],["themslves","themselves"],["thenes","themes"],["thenn","then"],["theorectical","theoretical"],["theoreticall","theoretically"],["theoreticaly","theoretically"],["theorical","theoretical"],["theorically","theoretically"],["theoritical","theoretical"],["theoritically","theoretically"],["therafter","thereafter"],["therapudic","therapeutic"],["therby","thereby"],["thereads","threads"],["thereom","theorem"],["thererin","therein"],["theres","there's"],["thereshold","threshold"],["theresholds","thresholds"],["therfore","therefore"],["thermisor","thermistor"],["thermisors","thermistors"],["thermostast","thermostat"],["thermostasts","thermostats"],["therstat","thermostat"],["therwise","otherwise"],["theshold","threshold"],["thesholds","thresholds"],["thest","test"],["thetraedral","tetrahedral"],["thetrahedron","tetrahedron"],["thev","the"],["theves","thieves"],["thgat","that"],["thge","the"],["thhese","these"],["thhis","this"],["thid","this"],["thier","their"],["thign","thing"],["thigns","things"],["thigny","thingy"],["thigsn","things"],["thikn","think"],["thikness","thickness"],["thiknesses","thicknesses"],["thikns","thinks"],["thiks","thinks"],["thimngs","things"],["thinigs","things"],["thinkabel","thinkable"],["thinn","thin"],["thirtyth","thirtieth"],["this'd","this would"],["thisle","thistle"],["thist","this"],["thisy","this"],["thiunk","think"],["thjese","these"],["thme","them"],["thn","then"],["thna","than"],["thnak","thank"],["thnaks","thanks"],["thne","then"],["thnig","thing"],["thnigs","things"],["thonic","chthonic"],["thoroidal","toroidal"],["thoroughty","thoroughly"],["thoruoghly","thoroughly"],["thoses","those"],["thouch","touch"],["thoughout","throughout"],["thougth","thought"],["thounsands","thousands"],["thourghly","thoroughly"],["thourough","thorough"],["thouroughly","thoroughly"],["thq","the"],["thrad","thread"],["threadsave","threadsafe"],["threashold","threshold"],["threasholds","thresholds"],["threatend","threatened"],["threatment","treatment"],["threatments","treatments"],["threatning","threatening"],["thred","thread"],["threded","threaded"],["thredhold","threshold"],["threding","threading"],["threds","threads"],["three-dimenional","three-dimensional"],["three-dimenionsal","three-dimensional"],["threedimenional","three-dimensional"],["threedimenionsal","three-dimensional"],["threee","three"],["threhold","threshold"],["threrefore","therefore"],["threshhold","threshold"],["threshholds","thresholds"],["threshod","threshold"],["threshods","thresholds"],["threshol","threshold"],["thresold","threshold"],["thresshold","threshold"],["thrid","third"],["throen","thrown"],["throgh","through"],["throrough","thorough"],["throttoling","throttling"],["throug","through"],["througg","through"],["throughly","thoroughly"],["throughtout","throughout"],["througout","throughout"],["througt","through"],["througth","through"],["throuh","through"],["throuhg","through"],["throuhgout","throughout"],["throuhgput","throughput"],["throuth","through"],["throwgh","through"],["thrreshold","threshold"],["thrresholds","thresholds"],["thrue","through"],["thrugh","through"],["thruogh","through"],["thruoghout","throughout"],["thruoghput","throughput"],["thruout","throughout"],["thses","these"],["thsi","this"],["thsnk","thank"],["thsnked","thanked"],["thsnkful","thankful"],["thsnkfully","thankfully"],["thsnkfulness","thankfulness"],["thsnking","thanking"],["thsnks","thanks"],["thsnkyou","thank you"],["thsoe","those"],["thsose","those"],["thsould","should"],["thst","that"],["thta","that"],["thtat","that"],["thumbbnail","thumbnail"],["thumbnal","thumbnail"],["thumbnals","thumbnails"],["thundebird","thunderbird"],["thurday","Thursday"],["thurough","thorough"],["thurrow","thorough"],["thursdey","Thursday"],["thurver","further"],["thyat","that"],["tichened","thickened"],["tichness","thickness"],["tickness","thickness"],["tidibt","tidbit"],["tidibts","tidbits"],["tieing","tying"],["tiemout","timeout"],["tiemstamp","timestamp"],["tiemstamped","timestamped"],["tiemstamps","timestamps"],["tieth","tithe"],["tigger","trigger"],["tiggered","triggered"],["tiggering","triggering"],["tiggers","triggers"],["tighly","tightly"],["tightely","tightly"],["tigth","tight"],["tigthen","tighten"],["tigthened","tightened"],["tigthening","tightening"],["tigthens","tightens"],["tigthly","tightly"],["tihkn","think"],["tihs","this"],["tiitle","title"],["tillt","tilt"],["tillted","tilted"],["tillts","tilts"],["timdelta","timedelta"],["timedlta","timedelta"],["timeing","timing"],["timemout","timeout"],["timeot","timeout"],["timeoutted","timed out"],["timere","timer"],["timesamp","timestamp"],["timesamped","timestamped"],["timesamps","timestamps"],["timeschedule","time schedule"],["timespanp","timespan"],["timespanps","timespans"],["timestan","timespan"],["timestans","timespans"],["timestap","timestamp"],["timestaped","timestamped"],["timestaping","timestamping"],["timestaps","timestamps"],["timestemp","timestamp"],["timestemps","timestamps"],["timestmap","timestamp"],["timestmaps","timestamps"],["timetamp","timestamp"],["timetamps","timestamps"],["timmestamp","timestamp"],["timmestamps","timestamps"],["timne","time"],["timoeut","timeout"],["timout","timeout"],["timtout","timeout"],["timzeone","timezone"],["timzeones","timezones"],["timzezone","timezone"],["timzezones","timezones"],["tinterrupts","interrupts"],["tipically","typically"],["tirangle","triangle"],["tirangles","triangles"],["titel","title"],["titels","titles"],["titile","title"],["tittled","titled"],["tittling","titling"],["tje","the"],["tjhe","the"],["tjpanishad","upanishad"],["tkae","take"],["tkaes","takes"],["tkaing","taking"],["tlaking","talking"],["tmis","this"],["tne","the"],["toally","totally"],["tobbaco","tobacco"],["tobot","robot"],["toches","touches"],["tocksen","toxin"],["todya","today"],["toekn","token"],["togehter","together"],["togeter","together"],["togeterness","togetherness"],["toggel","toggle"],["toggeles","toggles"],["toggeling","toggling"],["toggels","toggles"],["toggleing","toggling"],["togheter","together"],["toghether","together"],["togle","toggle"],["togled","toggled"],["togling","toggling"],["toglle","toggle"],["toglled","toggled"],["togther","together"],["tolarable","tolerable"],["tolelerance","tolerance"],["tolen","token"],["tolens","tokens"],["toleranz","tolerance"],["tolerence","tolerance"],["tolerences","tolerances"],["tolerent","tolerant"],["tolernce","tolerance"],["Tolkein","Tolkien"],["tollerable","tolerable"],["tollerance","tolerance"],["tollerances","tolerances"],["tolorance","tolerance"],["tolorances","tolerances"],["tolorant","tolerant"],["tomatoe","tomato"],["tomatos","tomatoes"],["tommorow","tomorrow"],["tommorrow","tomorrow"],["tomorrrow","tomorrow"],["tongiht","tonight"],["tonihgt","tonight"],["tood","todo"],["toogle","toggle"],["toogling","toggling"],["tookits","toolkits"],["toolar","toolbar"],["toolsbox","toolbox"],["toom","tomb"],["toos","tools"],["tootonic","teutonic"],["topicaizer","topicalizer"],["topologie","topology"],["torerable","tolerable"],["toriodal","toroidal"],["tork","torque"],["tormenters","tormentors"],["tornadoe","tornado"],["torpeados","torpedoes"],["torpedos","torpedoes"],["tortilini","tortellini"],["tortise","tortoise"],["torward","toward"],["torwards","towards"],["totaly","totally"],["totat","total"],["totation","rotation"],["totats","totals"],["tothe","to the"],["tothiba","toshiba"],["totol","total"],["totorial","tutorial"],["totorials","tutorials"],["touble","trouble"],["toubles","troubles"],["toubling","troubling"],["toughtful","thoughtful"],["toughtly","tightly"],["toughts","thoughts"],["tounge","tongue"],["touple","tuple"],["towords","towards"],["towrad","toward"],["toxen","toxin"],["tpye","type"],["tpyed","typed"],["tpyes","types"],["tpyo","typo"],["trabsform","transform"],["traceablity","traceability"],["trackign","tracking"],["trackling","tracking"],["tracsode","transcode"],["tracsoded","transcoded"],["tracsoder","transcoder"],["tracsoders","transcoders"],["tracsodes","transcodes"],["tracsoding","transcoding"],["traddition","tradition"],["tradditional","traditional"],["tradditions","traditions"],["tradgic","tragic"],["tradionally","traditionally"],["traditilnal","traditional"],["traditiona","traditional"],["traditionaly","traditionally"],["traditionnal","traditional"],["traditionnally","traditionally"],["traditition","tradition"],["tradtional","traditional"],["tradtionally","traditionally"],["trafficed","trafficked"],["trafficing","trafficking"],["trafic","traffic"],["tragectory","trajectory"],["traget","target"],["trageted","targeted"],["trageting","targeting"],["tragets","targets"],["traige","triage"],["traiger","triager"],["traigers","triagers"],["traiges","triages"],["traiging","triaging"],["trailins","trailing"],["traingle","triangle"],["traingles","triangles"],["traingular","triangular"],["traingulate","triangulate"],["traingulated","triangulated"],["traingulates","triangulates"],["traingulating","triangulating"],["traingulation","triangulation"],["traingulations","triangulations"],["trainig","training"],["trainigs","training"],["trainng","training"],["trainngs","training"],["traked","tracked"],["traker","tracker"],["trakers","trackers"],["traking","tracking"],["tramsmit","transmit"],["tramsmits","transmits"],["tramsmitted","transmitted"],["tramsmitting","transmitting"],["tranaction","transaction"],["tranactional","transactional"],["tranactions","transactions"],["tranalating","translating"],["tranalation","translation"],["tranalations","translations"],["tranasction","transaction"],["tranasctions","transactions"],["tranceiver","transceiver"],["tranceivers","transceivers"],["trancendent","transcendent"],["trancending","transcending"],["tranclate","translate"],["trandional","traditional"],["tranfer","transfer"],["tranfered","transferred"],["tranfering","transferring"],["tranferred","transferred"],["tranfers","transfers"],["tranform","transform"],["tranformable","transformable"],["tranformation","transformation"],["tranformations","transformations"],["tranformative","transformative"],["tranformed","transformed"],["tranforming","transforming"],["tranforms","transforms"],["tranient","transient"],["tranients","transients"],["tranistion","transition"],["tranistioned","transitioned"],["tranistioning","transitioning"],["tranistions","transitions"],["tranition","transition"],["tranitioned","transitioned"],["tranitioning","transitioning"],["tranitions","transitions"],["tranlatable","translatable"],["tranlate","translate"],["tranlated","translated"],["tranlates","translates"],["tranlating","translating"],["tranlation","translation"],["tranlations","translations"],["tranlsation","translation"],["tranlsations","translations"],["tranmission","transmission"],["tranmist","transmit"],["tranmitted","transmitted"],["tranmitting","transmitting"],["tranparent","transparent"],["tranparently","transparently"],["tranport","transport"],["tranported","transported"],["tranporting","transporting"],["tranports","transports"],["transacion","transaction"],["transacions","transactions"],["transaciton","transaction"],["transacitons","transactions"],["transacrtion","transaction"],["transacrtions","transactions"],["transaction-spacific","transaction-specific"],["transactoin","transaction"],["transactoins","transactions"],["transalation","translation"],["transalations","translations"],["transalt","translate"],["transalte","translate"],["transalted","translated"],["transaltes","translates"],["transaltion","translation"],["transaltions","translations"],["transaltor","translator"],["transaltors","translators"],["transcendance","transcendence"],["transcendant","transcendent"],["transcendentational","transcendental"],["transcevier","transceiver"],["transciever","transceiver"],["transcievers","transceivers"],["transcocde","transcode"],["transcocded","transcoded"],["transcocder","transcoder"],["transcocders","transcoders"],["transcocdes","transcodes"],["transcocding","transcoding"],["transcocdings","transcodings"],["transconde","transcode"],["transconded","transcoded"],["transconder","transcoder"],["transconders","transcoders"],["transcondes","transcodes"],["transconding","transcoding"],["transcondings","transcodings"],["transcorde","transcode"],["transcorded","transcoded"],["transcorder","transcoder"],["transcorders","transcoders"],["transcordes","transcodes"],["transcording","transcoding"],["transcordings","transcodings"],["transcoser","transcoder"],["transcosers","transcoders"],["transction","transaction"],["transctions","transactions"],["transeint","transient"],["transending","transcending"],["transer","transfer"],["transesxuals","transsexuals"],["transferd","transferred"],["transfered","transferred"],["transfering","transferring"],["transferrd","transferred"],["transfom","transform"],["transfomation","transformation"],["transfomational","transformational"],["transfomations","transformations"],["transfomed","transformed"],["transfomer","transformer"],["transfomm","transform"],["transfoprmation","transformation"],["transforation","transformation"],["transforations","transformations"],["transformated","transformed"],["transformates","transforms"],["transformaton","transformation"],["transformatted","transformed"],["transfrom","transform"],["transfromation","transformation"],["transfromations","transformations"],["transfromed","transformed"],["transfromer","transformer"],["transfroming","transforming"],["transfroms","transforms"],["transiet","transient"],["transiets","transients"],["transision","transition"],["transisioning","transitioning"],["transisions","transitions"],["transisition","transition"],["transisitioned","transitioned"],["transisitioning","transitioning"],["transisitions","transitions"],["transistion","transition"],["transistioning","transitioning"],["transistions","transitions"],["transitionnal","transitional"],["transitionned","transitioned"],["transitionning","transitioning"],["transitionns","transitions"],["transiton","transition"],["transitoning","transitioning"],["transitons","transitions"],["transitor","transistor"],["transitors","transistors"],["translater","translator"],["translaters","translators"],["translatied","translated"],["translatoin","translation"],["translatoins","translations"],["translteration","transliteration"],["transmision","transmission"],["transmisive","transmissive"],["transmissable","transmissible"],["transmissione","transmission"],["transmist","transmit"],["transmited","transmitted"],["transmiter","transmitter"],["transmiters","transmitters"],["transmiting","transmitting"],["transmition","transmission"],["transmitsion","transmission"],["transmittd","transmitted"],["transmittion","transmission"],["transmitts","transmits"],["transmmit","transmit"],["transocde","transcode"],["transocded","transcoded"],["transocder","transcoder"],["transocders","transcoders"],["transocdes","transcodes"],["transocding","transcoding"],["transocdings","transcodings"],["transofrm","transform"],["transofrmation","transformation"],["transofrmations","transformations"],["transofrmed","transformed"],["transofrmer","transformer"],["transofrmers","transformers"],["transofrming","transforming"],["transofrms","transforms"],["transolate","translate"],["transolated","translated"],["transolates","translates"],["transolating","translating"],["transolation","translation"],["transolations","translations"],["transorm","transform"],["transormed","transformed"],["transorming","transforming"],["transorms","transforms"],["transpable","transposable"],["transpacencies","transparencies"],["transpacency","transparency"],["transpaernt","transparent"],["transpaerntly","transparently"],["transpancies","transparencies"],["transpancy","transparency"],["transpant","transplant"],["transparaent","transparent"],["transparaently","transparently"],["transparanceies","transparencies"],["transparancey","transparency"],["transparancies","transparencies"],["transparancy","transparency"],["transparanet","transparent"],["transparanetly","transparently"],["transparanies","transparencies"],["transparant","transparent"],["transparantly","transparently"],["transparany","transparency"],["transpararent","transparent"],["transpararently","transparently"],["transparcencies","transparencies"],["transparcency","transparency"],["transparcenies","transparencies"],["transparceny","transparency"],["transparecy","transparency"],["transpareny","transparency"],["transparities","transparencies"],["transparity","transparency"],["transparnecies","transparencies"],["transparnecy","transparency"],["transparnt","transparent"],["transparntly","transparently"],["transparren","transparent"],["transparrenly","transparently"],["transparrent","transparent"],["transparrently","transparently"],["transpart","transport"],["transparts","transports"],["transpatrent","transparent"],["transpatrently","transparently"],["transpencies","transparencies"],["transpency","transparency"],["transpeorted","transported"],["transperancies","transparencies"],["transperancy","transparency"],["transperant","transparent"],["transperantly","transparently"],["transperencies","transparencies"],["transperency","transparency"],["transperent","transparent"],["transperently","transparently"],["transporation","transportation"],["transportatin","transportation"],["transprencies","transparencies"],["transprency","transparency"],["transprent","transparent"],["transprently","transparently"],["transprot","transport"],["transproted","transported"],["transproting","transporting"],["transprots","transports"],["transprt","transport"],["transprted","transported"],["transprting","transporting"],["transprts","transports"],["transpsition","transposition"],["transsend","transcend"],["transtion","transition"],["transtioned","transitioned"],["transtioning","transitioning"],["transtions","transitions"],["transtition","transition"],["transtitioned","transitioned"],["transtitioning","transitioning"],["transtitions","transitions"],["transtorm","transform"],["transtormed","transformed"],["transvorm","transform"],["transvormation","transformation"],["transvormed","transformed"],["transvorming","transforming"],["transvorms","transforms"],["tranversing","traversing"],["trapeziod","trapezoid"],["trapeziodal","trapezoidal"],["trasaction","transaction"],["trascation","transaction"],["trasfer","transfer"],["trasferred","transferred"],["trasfers","transfers"],["trasform","transform"],["trasformable","transformable"],["trasformation","transformation"],["trasformations","transformations"],["trasformative","transformative"],["trasformed","transformed"],["trasformer","transformer"],["trasformers","transformers"],["trasforming","transforming"],["trasforms","transforms"],["traslalate","translate"],["traslalated","translated"],["traslalating","translating"],["traslalation","translation"],["traslalations","translations"],["traslate","translate"],["traslated","translated"],["traslates","translates"],["traslating","translating"],["traslation","translation"],["traslations","translations"],["traslucency","translucency"],["trasmission","transmission"],["trasmit","transmit"],["trasnaction","transaction"],["trasnfer","transfer"],["trasnfered","transferred"],["trasnferred","transferred"],["trasnfers","transfers"],["trasnform","transform"],["trasnformation","transformation"],["trasnformed","transformed"],["trasnformer","transformer"],["trasnformers","transformers"],["trasnforms","transforms"],["trasnlate","translate"],["trasnlated","translated"],["trasnlation","translation"],["trasnlations","translations"],["trasnparencies","transparencies"],["trasnparency","transparency"],["trasnparent","transparent"],["trasnport","transport"],["trasnports","transports"],["trasnsmit","transmit"],["trasparency","transparency"],["trasparent","transparent"],["trasparently","transparently"],["trasport","transport"],["trasportable","transportable"],["trasported","transported"],["trasporter","transporter"],["trasports","transports"],["traspose","transpose"],["trasposed","transposed"],["trasposing","transposing"],["trasposition","transposition"],["traspositions","transpositions"],["traved","traversed"],["traveersal","traversal"],["traveerse","traverse"],["traveersed","traversed"],["traveerses","traverses"],["traveersing","traversing"],["traveral","traversal"],["travercal","traversal"],["traverce","traverse"],["traverced","traversed"],["traverces","traverses"],["travercing","traversing"],["travere","traverse"],["travered","traversed"],["traveres","traverse"],["traveresal","traversal"],["traveresed","traversed"],["travereses","traverses"],["traveresing","traversing"],["travering","traversing"],["traverssal","traversal"],["travesal","traversal"],["travese","traverse"],["travesed","traversed"],["traveses","traverses"],["travesing","traversing"],["tre","tree"],["treate","treat"],["treatement","treatment"],["treatements","treatments"],["treates","treats"],["tremelo","tremolo"],["tremelos","tremolos"],["trempoline","trampoline"],["treshhold","threshold"],["treshold","threshold"],["tressle","trestle"],["treting","treating"],["trgistration","registration"],["trhe","the"],["triancle","triangle"],["triancles","triangles"],["trianed","trained"],["triange","triangle"],["triangel","triangle"],["triangels","triangles"],["trianglular","triangular"],["trianglutaion","triangulation"],["triangulataion","triangulation"],["triangultaion","triangulation"],["trianing","training"],["trianlge","triangle"],["trianlges","triangles"],["trians","trains"],["trigered","triggered"],["trigerred","triggered"],["trigerring","triggering"],["trigers","triggers"],["trigged","triggered"],["triggerd","triggered"],["triggeres","triggers"],["triggerred","triggered"],["triggerring","triggering"],["triggerrs","triggers"],["triggger","trigger"],["trignometric","trigonometric"],["trignometry","trigonometry"],["triguered","triggered"],["triked","tricked"],["trikery","trickery"],["triky","tricky"],["trilineal","trilinear"],["trimed","trimmed"],["trimmng","trimming"],["trinagle","triangle"],["trinagles","triangles"],["triniy","trinity"],["triology","trilogy"],["tripel","triple"],["tripeld","tripled"],["tripels","triples"],["tripple","triple"],["triuangulate","triangulate"],["trival","trivial"],["trivally","trivially"],["trivias","trivia"],["trivival","trivial"],["trnasfers","transfers"],["trnasmit","transmit"],["trnasmited","transmitted"],["trnasmits","transmits"],["trnsfer","transfer"],["trnsfered","transferred"],["trnsfers","transfers"],["troling","trolling"],["trottle","throttle"],["troubeshoot","troubleshoot"],["troubeshooted","troubleshooted"],["troubeshooter","troubleshooter"],["troubeshooting","troubleshooting"],["troubeshoots","troubleshoots"],["troublehshoot","troubleshoot"],["troublehshooting","troubleshooting"],["troublshoot","troubleshoot"],["troublshooting","troubleshooting"],["trought","through"],["troup","troupe"],["trriger","trigger"],["trrigered","triggered"],["trrigering","triggering"],["trrigers","triggers"],["trrigger","trigger"],["trriggered","triggered"],["trriggering","triggering"],["trriggers","triggers"],["trubble","trouble"],["trubbled","troubled"],["trubbles","troubles"],["truble","trouble"],["trubled","troubled"],["trubles","troubles"],["trubling","troubling"],["trucate","truncate"],["trucated","truncated"],["trucates","truncates"],["trucating","truncating"],["trucnate","truncate"],["trucnated","truncated"],["trucnating","truncating"],["truct","struct"],["truelly","truly"],["truely","truly"],["truied","tried"],["trully","truly"],["trun","turn"],["trunacted","truncated"],["truncat","truncate"],["trunctate","truncate"],["trunctated","truncated"],["trunctating","truncating"],["trunctation","truncation"],["truncted","truncated"],["truned","turned"],["truns","turns"],["trustworthly","trustworthy"],["trustworthyness","trustworthiness"],["trustworty","trustworthy"],["trustwortyness","trustworthiness"],["trustwothy","trustworthy"],["truw","true"],["tryed","tried"],["tryes","tries"],["tryig","trying"],["tryinng","trying"],["trys","tries"],["tryying","trying"],["ttests","tests"],["tthe","the"],["tuesdey","Tuesday"],["tuesdsy","Tuesday"],["tufure","future"],["tuhmbnail","thumbnail"],["tunelled","tunnelled"],["tunelling","tunneling"],["tunned","tuned"],["tunnell","tunnel"],["tuotiral","tutorial"],["tuotirals","tutorials"],["tupel","tuple"],["tupple","tuple"],["tupples","tuples"],["ture","true"],["turle","turtle"],["turly","truly"],["turorial","tutorial"],["turorials","tutorials"],["turtleh","turtle"],["turtlehs","turtles"],["turtorial","tutorial"],["turtorials","tutorials"],["Tuscon","Tucson"],["tusday","Tuesday"],["tuseday","Tuesday"],["tust","trust"],["tution","tuition"],["tutoriel","tutorial"],["tutoriels","tutorials"],["tweleve","twelve"],["twelth","twelfth"],["two-dimenional","two-dimensional"],["two-dimenionsal","two-dimensional"],["twodimenional","two-dimensional"],["twodimenionsal","two-dimensional"],["twon","town"],["twpo","two"],["tyep","type"],["tyhat","that"],["tyies","tries"],["tymecode","timecode"],["tyope","type"],["typcast","typecast"],["typcasting","typecasting"],["typcasts","typecasts"],["typcial","typical"],["typcially","typically"],["typechek","typecheck"],["typecheking","typechecking"],["typesrript","typescript"],["typicallly","typically"],["typicaly","typically"],["typicially","typically"],["typle","tuple"],["typles","tuples"],["typographc","typographic"],["typpe","type"],["typped","typed"],["typpes","types"],["typpical","typical"],["typpically","typically"],["tyranies","tyrannies"],["tyrany","tyranny"],["tyring","trying"],["tyrranies","tyrannies"],["tyrrany","tyranny"],["ubelieveble","unbelievable"],["ubelievebly","unbelievably"],["ubernetes","Kubernetes"],["ubiquitious","ubiquitous"],["ubiquituously","ubiquitously"],["ubitquitous","ubiquitous"],["ublisher","publisher"],["ubunut","Ubuntu"],["ubutu","Ubuntu"],["ubutunu","Ubuntu"],["udpatable","updatable"],["udpate","update"],["udpated","updated"],["udpater","updater"],["udpates","updates"],["udpating","updating"],["ueful","useful"],["uegister","unregister"],["uesd","used"],["ueses","uses"],["uesful","useful"],["uesfull","useful"],["uesfulness","usefulness"],["uesless","useless"],["ueslessness","uselessness"],["uest","quest"],["uests","quests"],["uffer","buffer"],["uffered","buffered"],["uffering","buffering"],["uffers","buffers"],["uggly","ugly"],["ugglyness","ugliness"],["uglyness","ugliness"],["uique","unique"],["uise","use"],["uisng","using"],["uites","suites"],["uknown","unknown"],["uknowns","unknowns"],["Ukranian","Ukrainian"],["uless","unless"],["ulimited","unlimited"],["ulter","alter"],["ulteration","alteration"],["ulterations","alterations"],["ultered","altered"],["ultering","altering"],["ulters","alters"],["ultimatly","ultimately"],["ultimely","ultimately"],["umambiguous","unambiguous"],["umark","unmark"],["umarked","unmarked"],["umbrealla","umbrella"],["uminportant","unimportant"],["umit","unit"],["umless","unless"],["ummark","unmark"],["umoutn","umount"],["un-complete","incomplete"],["unabailable","unavailable"],["unabale","unable"],["unabel","unable"],["unablet","unable"],["unacceptible","unacceptable"],["unaccesible","inaccessible"],["unaccessable","inaccessible"],["unacknowleged","unacknowledged"],["unacompanied","unaccompanied"],["unadvertantly","inadvertently"],["unadvertedly","inadvertently"],["unadvertent","inadvertent"],["unadvertently","inadvertently"],["unahppy","unhappy"],["unalllowed","unallowed"],["unambigious","unambiguous"],["unambigous","unambiguous"],["unambigously","unambiguously"],["unamed","unnamed"],["unanimuous","unanimous"],["unanymous","unanimous"],["unappretiated","unappreciated"],["unappretiative","unappreciative"],["unapprieciated","unappreciated"],["unapprieciative","unappreciative"],["unapretiated","unappreciated"],["unapretiative","unappreciative"],["unaquired","unacquired"],["unarchving","unarchiving"],["unassing","unassign"],["unassinged","unassigned"],["unassinging","unassigning"],["unassings","unassigns"],["unathenticated","unauthenticated"],["unathorised","unauthorised"],["unathorized","unauthorized"],["unatteded","unattended"],["unauthenicated","unauthenticated"],["unauthenticed","unauthenticated"],["unavaiable","unavailable"],["unavaialable","unavailable"],["unavaialbale","unavailable"],["unavaialbe","unavailable"],["unavaialbel","unavailable"],["unavaialbility","unavailability"],["unavaialble","unavailable"],["unavaible","unavailable"],["unavailabel","unavailable"],["unavailiability","unavailability"],["unavailible","unavailable"],["unavaliable","unavailable"],["unavaoidable","unavoidable"],["unavilable","unavailable"],["unballance","unbalance"],["unbeknowst","unbeknownst"],["unbeleifable","unbelievable"],["unbeleivable","unbelievable"],["unbeliefable","unbelievable"],["unbelivable","unbelievable"],["unbeliveable","unbelievable"],["unbeliveably","unbelievably"],["unbelivebly","unbelievably"],["unborned","unborn"],["unbouind","unbound"],["unbouinded","unbounded"],["unboun","unbound"],["unbounad","unbound"],["unbounaded","unbounded"],["unbouned","unbounded"],["unbounnd","unbound"],["unbounnded","unbounded"],["unbouund","unbound"],["unbouunded","unbounded"],["uncahnged","unchanged"],["uncalcualted","uncalculated"],["unce","once"],["uncehck","uncheck"],["uncehcked","unchecked"],["uncerain","uncertain"],["uncerainties","uncertainties"],["uncerainty","uncertainty"],["uncertaincy","uncertainty"],["uncertainities","uncertainties"],["uncertainity","uncertainty"],["uncessarily","unnecessarily"],["uncetain","uncertain"],["uncetainties","uncertainties"],["uncetainty","uncertainty"],["unchache","uncache"],["unchached","uncached"],["unchaged","unchanged"],["unchainged","unchanged"],["unchallengable","unchallengeable"],["unchaned","unchanged"],["unchaneged","unchanged"],["unchangable","unchangeable"],["uncheked","unchecked"],["unchenged","unchanged"],["uncognized","unrecognized"],["uncoment","uncomment"],["uncomented","uncommented"],["uncomenting","uncommenting"],["uncoments","uncomments"],["uncomitted","uncommitted"],["uncommited","uncommitted"],["uncommment","uncomment"],["uncommmented","uncommented"],["uncommmenting","uncommenting"],["uncommments","uncomments"],["uncommmitted","uncommitted"],["uncommmon","uncommon"],["uncommpresed","uncompressed"],["uncommpresion","uncompression"],["uncommpressd","uncompressed"],["uncommpressed","uncompressed"],["uncommpression","uncompression"],["uncommtited","uncommitted"],["uncomon","uncommon"],["uncompetetive","uncompetitive"],["uncompetive","uncompetitive"],["uncomplete","incomplete"],["uncompleteness","incompleteness"],["uncompletness","incompleteness"],["uncompres","uncompress"],["uncompresed","uncompressed"],["uncompreses","uncompresses"],["uncompresing","uncompressing"],["uncompresor","uncompressor"],["uncompresors","uncompressors"],["uncompressible","incompressible"],["uncomprss","uncompress"],["unconcious","unconscious"],["unconciousness","unconsciousness"],["unconcistencies","inconsistencies"],["unconcistency","inconsistency"],["unconcistent","inconsistent"],["uncondisional","unconditional"],["uncondisionaly","unconditionally"],["uncondisionnal","unconditional"],["uncondisionnaly","unconditionally"],["unconditial","unconditional"],["unconditially","unconditionally"],["unconditialy","unconditionally"],["unconditianal","unconditional"],["unconditianally","unconditionally"],["unconditianaly","unconditionally"],["unconditinally","unconditionally"],["unconditinaly","unconditionally"],["unconditionaly","unconditionally"],["unconditionnal","unconditional"],["unconditionnally","unconditionally"],["unconditionnaly","unconditionally"],["uncondtional","unconditional"],["uncondtionally","unconditionally"],["unconfiged","unconfigured"],["unconfortability","discomfort"],["unconsisntency","inconsistency"],["unconsistent","inconsistent"],["uncontitutional","unconstitutional"],["uncontrained","unconstrained"],["uncontrolable","uncontrollable"],["unconvential","unconventional"],["unconventionnal","unconventional"],["uncorectly","incorrectly"],["uncorelated","uncorrelated"],["uncorrect","incorrect"],["uncorrectly","incorrectly"],["uncorrolated","uncorrelated"],["uncoverted","unconverted"],["uncrypted","unencrypted"],["undecideable","undecidable"],["undefied","undefined"],["undefien","undefine"],["undefiend","undefined"],["undefinied","undefined"],["undeflow","underflow"],["undeflows","underflows"],["undefuned","undefined"],["undelying","underlying"],["underfiend","undefined"],["underfined","undefined"],["underfow","underflow"],["underfowed","underflowed"],["underfowing","underflowing"],["underfows","underflows"],["underlayed","underlaid"],["underlaying","underlying"],["underlflow","underflow"],["underlflowed","underflowed"],["underlflowing","underflowing"],["underlflows","underflows"],["underlfow","underflow"],["underlfowed","underflowed"],["underlfowing","underflowing"],["underlfows","underflows"],["underlow","underflow"],["underlowed","underflowed"],["underlowing","underflowing"],["underlows","underflows"],["underlyng","underlying"],["underneeth","underneath"],["underrrun","underrun"],["undersacn","underscan"],["understadn","understand"],["understadnable","understandable"],["understadning","understanding"],["understadns","understands"],["understoon","understood"],["understoud","understood"],["undertand","understand"],["undertandable","understandable"],["undertanded","understood"],["undertanding","understanding"],["undertands","understands"],["undertsand","understand"],["undertsanding","understanding"],["undertsands","understands"],["undertsood","understood"],["undertstand","understand"],["undertstands","understands"],["underun","underrun"],["underuns","underruns"],["underware","underwear"],["underying","underlying"],["underyling","underlying"],["undescore","underscore"],["undescored","underscored"],["undescores","underscores"],["undesireable","undesirable"],["undesitable","undesirable"],["undestand","understand"],["undestood","understood"],["undet","under"],["undetecable","undetectable"],["undetstand","understand"],["undetware","underwear"],["undetwater","underwater"],["undfine","undefine"],["undfined","undefined"],["undfines","undefines"],["undistinghable","indistinguishable"],["undocummented","undocumented"],["undorder","unorder"],["undordered","unordered"],["undoubtely","undoubtedly"],["undreground","underground"],["undupplicated","unduplicated"],["uneccesary","unnecessary"],["uneccessarily","unnecessarily"],["uneccessary","unnecessary"],["unecessarily","unnecessarily"],["unecessary","unnecessary"],["uneforceable","unenforceable"],["uneform","uniform"],["unencrpt","unencrypt"],["unencrpted","unencrypted"],["unenforcable","unenforceable"],["unepected","unexpected"],["unepectedly","unexpectedly"],["unequalities","inequalities"],["unequality","inequality"],["uner","under"],["unesacpe","unescape"],["unesacped","unescaped"],["unessecarry","unnecessary"],["unessecary","unnecessary"],["unevaluted","unevaluated"],["unexcected","unexpected"],["unexcectedly","unexpectedly"],["unexcpected","unexpected"],["unexcpectedly","unexpectedly"],["unexecpted","unexpected"],["unexecptedly","unexpectedly"],["unexected","unexpected"],["unexectedly","unexpectedly"],["unexepcted","unexpected"],["unexepctedly","unexpectedly"],["unexepected","unexpected"],["unexepectedly","unexpectedly"],["unexpacted","unexpected"],["unexpactedly","unexpectedly"],["unexpcted","unexpected"],["unexpctedly","unexpectedly"],["unexpecetd","unexpected"],["unexpecetdly","unexpectedly"],["unexpect","unexpected"],["unexpectd","unexpected"],["unexpectdly","unexpectedly"],["unexpecte","unexpected"],["unexpectely","unexpectedly"],["unexpectend","unexpected"],["unexpectendly","unexpectedly"],["unexpectly","unexpectedly"],["unexpeected","unexpected"],["unexpeectedly","unexpectedly"],["unexpepected","unexpected"],["unexpepectedly","unexpectedly"],["unexpepted","unexpected"],["unexpeptedly","unexpectedly"],["unexpercted","unexpected"],["unexperctedly","unexpectedly"],["unexpested","unexpected"],["unexpestedly","unexpectedly"],["unexpetced","unexpected"],["unexpetcedly","unexpectedly"],["unexpetct","unexpected"],["unexpetcted","unexpected"],["unexpetctedly","unexpectedly"],["unexpetctly","unexpectedly"],["unexpetect","unexpected"],["unexpetected","unexpected"],["unexpetectedly","unexpectedly"],["unexpetectly","unexpectedly"],["unexpeted","unexpected"],["unexpetedly","unexpectedly"],["unexpexcted","unexpected"],["unexpexctedly","unexpectedly"],["unexpexted","unexpected"],["unexpextedly","unexpectedly"],["unexspected","unexpected"],["unexspectedly","unexpectedly"],["unfilp","unflip"],["unfilpped","unflipped"],["unfilpping","unflipping"],["unfilps","unflips"],["unflaged","unflagged"],["unflexible","inflexible"],["unforetunately","unfortunately"],["unforgetable","unforgettable"],["unforgiveable","unforgivable"],["unformated","unformatted"],["unforseen","unforeseen"],["unforttunately","unfortunately"],["unfortuante","unfortunate"],["unfortuantely","unfortunately"],["unfortunaltely","unfortunately"],["unfortunaly","unfortunately"],["unfortunat","unfortunate"],["unfortunatelly","unfortunately"],["unfortunatetly","unfortunately"],["unfortunatley","unfortunately"],["unfortunatly","unfortunately"],["unfortunetly","unfortunately"],["unfortuntaly","unfortunately"],["unforunate","unfortunate"],["unforunately","unfortunately"],["unforutunate","unfortunate"],["unforutunately","unfortunately"],["unfotunately","unfortunately"],["unfourtunately","unfortunately"],["unfourtunetly","unfortunately"],["unfurtunately","unfortunately"],["ungeneralizeable","ungeneralizable"],["ungly","ugly"],["unhandeled","unhandled"],["unhilight","unhighlight"],["unhilighted","unhighlighted"],["unhilights","unhighlights"],["Unicde","Unicode"],["unich","unix"],["unidentifiedly","unidentified"],["unidimensionnal","unidimensional"],["unifform","uniform"],["unifforms","uniforms"],["unifiy","unify"],["uniformely","uniformly"],["unifrom","uniform"],["unifromed","uniformed"],["unifromity","uniformity"],["unifroms","uniforms"],["unigned","unsigned"],["unihabited","uninhabited"],["unilateraly","unilaterally"],["unilatreal","unilateral"],["unilatreally","unilaterally"],["unimpemented","unimplemented"],["unimplemeneted","unimplemented"],["unimplimented","unimplemented"],["uninitailised","uninitialised"],["uninitailized","uninitialized"],["uninitalise","uninitialise"],["uninitalised","uninitialised"],["uninitalises","uninitialises"],["uninitalize","uninitialize"],["uninitalized","uninitialized"],["uninitalizes","uninitializes"],["uniniteresting","uninteresting"],["uninitializaed","uninitialized"],["uninitialse","uninitialise"],["uninitialsed","uninitialised"],["uninitialses","uninitialises"],["uninitialze","uninitialize"],["uninitialzed","uninitialized"],["uninitialzes","uninitializes"],["uninstalable","uninstallable"],["uninstatiated","uninstantiated"],["uninstlal","uninstall"],["uninstlalation","uninstallation"],["uninstlalations","uninstallations"],["uninstlaled","uninstalled"],["uninstlaler","uninstaller"],["uninstlaling","uninstalling"],["uninstlals","uninstalls"],["unint8_t","uint8_t"],["unintelligable","unintelligible"],["unintentially","unintentionally"],["uninteressting","uninteresting"],["uninterpretted","uninterpreted"],["uninterruped","uninterrupted"],["uninterruptable","uninterruptible"],["unintersting","uninteresting"],["uninteruppted","uninterrupted"],["uninterupted","uninterrupted"],["unintesting","uninteresting"],["unintialised","uninitialised"],["unintialized","uninitialized"],["unintiallised","uninitialised"],["unintiallized","uninitialized"],["unintialsied","uninitialised"],["unintialzied","uninitialized"],["unio","union"],["unios","unions"],["uniqe","unique"],["uniqu","unique"],["uniquness","uniqueness"],["unistalled","uninstalled"],["uniterrupted","uninterrupted"],["UnitesStates","UnitedStates"],["unitialize","uninitialize"],["unitialized","uninitialized"],["unitilised","uninitialised"],["unitilising","uninitialising"],["unitilities","utilities"],["unitility","utility"],["unitilized","uninitialized"],["unitilizing","uninitializing"],["unitilties","utilities"],["unitilty","utility"],["unititialized","uninitialized"],["unitl","until"],["unitled","untitled"],["unitss","units"],["univeral","universal"],["univerally","universally"],["univeriality","universality"],["univeristies","universities"],["univeristy","university"],["univerities","universities"],["univerity","university"],["universial","universal"],["universiality","universality"],["universirty","university"],["universtal","universal"],["universtiy","university"],["univesities","universities"],["univesity","university"],["univiersal","universal"],["univrsal","universal"],["unkmown","unknown"],["unknon","unknown"],["unknonw","unknown"],["unknonwn","unknown"],["unknonws","unknowns"],["unknwn","unknown"],["unknwns","unknowns"],["unknwoing","unknowing"],["unknwoingly","unknowingly"],["unknwon","unknown"],["unknwons","unknowns"],["unknwown","unknown"],["unknwowns","unknowns"],["unkonwn","unknown"],["unkonwns","unknowns"],["unkown","unknown"],["unkowns","unknowns"],["unkwown","unknown"],["unlcear","unclear"],["unles","unless"],["unlikey","unlikely"],["unlikley","unlikely"],["unlimeted","unlimited"],["unlimitied","unlimited"],["unlimted","unlimited"],["unline","unlike"],["unloadins","unloading"],["unmached","unmatched"],["unmainted","unmaintained"],["unmaping","unmapping"],["unmappend","unmapped"],["unmarsalling","unmarshalling"],["unmaximice","unmaximize"],["unmistakeably","unmistakably"],["unmodfide","unmodified"],["unmodfided","unmodified"],["unmodfied","unmodified"],["unmodfieid","unmodified"],["unmodfified","unmodified"],["unmodfitied","unmodified"],["unmodifable","unmodifiable"],["unmodifed","unmodified"],["unmoutned","unmounted"],["unnacquired","unacquired"],["unncessary","unnecessary"],["unneccecarily","unnecessarily"],["unneccecary","unnecessary"],["unneccesarily","unnecessarily"],["unneccesary","unnecessary"],["unneccessarily","unnecessarily"],["unneccessary","unnecessary"],["unneceesarily","unnecessarily"],["unnecesarily","unnecessarily"],["unnecesarrily","unnecessarily"],["unnecesarry","unnecessary"],["unnecesary","unnecessary"],["unnecesasry","unnecessary"],["unnecessar","unnecessary"],["unnecessarilly","unnecessarily"],["unnecesserily","unnecessarily"],["unnecessery","unnecessary"],["unnecessiarlly","unnecessarily"],["unnecssary","unnecessary"],["unnedded","unneeded"],["unneded","unneeded"],["unneedingly","unnecessarily"],["unnescessarily","unnecessarily"],["unnescessary","unnecessary"],["unnesesarily","unnecessarily"],["unnessarily","unnecessarily"],["unnessasary","unnecessary"],["unnessecarily","unnecessarily"],["unnessecarry","unnecessary"],["unnessecary","unnecessary"],["unnessesarily","unnecessarily"],["unnessesary","unnecessary"],["unnessessarily","unnecessarily"],["unnessessary","unnecessary"],["unning","running"],["unnnecessary","unnecessary"],["unnown","unknown"],["unnowns","unknowns"],["unnsupported","unsupported"],["unnused","unused"],["unobstrusive","unobtrusive"],["unocde","Unicode"],["unoffical","unofficial"],["unoin","union"],["unompress","uncompress"],["unoperational","nonoperational"],["unorderd","unordered"],["unoredered","unordered"],["unorotated","unrotated"],["unoticeable","unnoticeable"],["unpacke","unpacked"],["unpacket","unpacked"],["unparseable","unparsable"],["unpertubated","unperturbed"],["unperturb","unperturbed"],["unperturbated","unperturbed"],["unperturbe","unperturbed"],["unplease","displease"],["unpleasent","unpleasant"],["unplesant","unpleasant"],["unplesent","unpleasant"],["unprecendented","unprecedented"],["unprecidented","unprecedented"],["unprecise","imprecise"],["unpredicatable","unpredictable"],["unpredicatble","unpredictable"],["unpredictablity","unpredictability"],["unpredictible","unpredictable"],["unpriviledged","unprivileged"],["unpriviliged","unprivileged"],["unprmopted","unprompted"],["unqiue","unique"],["unqoute","unquote"],["unqouted","unquoted"],["unqoutes","unquotes"],["unqouting","unquoting"],["unque","unique"],["unreacahable","unreachable"],["unreacahble","unreachable"],["unreacheable","unreachable"],["unrealeased","unreleased"],["unreasonabily","unreasonably"],["unrechable","unreachable"],["unrecocnized","unrecognized"],["unrecoginized","unrecognized"],["unrecogized","unrecognized"],["unrecognixed","unrecognized"],["unrecongized","unrecognized"],["unreconized","unrecognized"],["unrecovable","unrecoverable"],["unrecovarable","unrecoverable"],["unrecoverd","unrecovered"],["unregester","unregister"],["unregiste","unregister"],["unregisted","unregistered"],["unregisteing","registering"],["unregisterd","unregistered"],["unregistert","unregistered"],["unregistes","unregisters"],["unregisting","unregistering"],["unregistred","unregistered"],["unregistrs","unregisters"],["unregiter","unregister"],["unregiters","unregisters"],["unregnized","unrecognized"],["unregognised","unrecognised"],["unregsiter","unregister"],["unregsitered","unregistered"],["unregsitering","unregistering"],["unregsiters","unregisters"],["unregster","unregister"],["unregstered","unregistered"],["unregstering","unregistering"],["unregsters","unregisters"],["unreigister","unregister"],["unreigster","unregister"],["unreigstered","unregistered"],["unreigstering","unregistering"],["unreigsters","unregisters"],["unrelatd","unrelated"],["unreleated","unrelated"],["unrelted","unrelated"],["unrelyable","unreliable"],["unrelying","underlying"],["unrepentent","unrepentant"],["unrepetant","unrepentant"],["unrepetent","unrepentant"],["unreplacable","unreplaceable"],["unreplacalbe","unreplaceable"],["unreproducable","unreproducible"],["unresgister","unregister"],["unresgisterd","unregistered"],["unresgistered","unregistered"],["unresgisters","unregisters"],["unresolvabvle","unresolvable"],["unresonable","unreasonable"],["unresposive","unresponsive"],["unrestrcited","unrestricted"],["unrgesiter","unregister"],["unroated","unrotated"],["unrosponsive","unresponsive"],["unsanfe","unsafe"],["unsccessful","unsuccessful"],["unscubscribe","subscribe"],["unscubscribed","subscribed"],["unsearcahble","unsearchable"],["unselct","unselect"],["unselcted","unselected"],["unselctes","unselects"],["unselcting","unselecting"],["unselcts","unselects"],["unselecgt","unselect"],["unselecgted","unselected"],["unselecgtes","unselects"],["unselecgting","unselecting"],["unselecgts","unselects"],["unselectabe","unselectable"],["unsepcified","unspecified"],["unseting","unsetting"],["unsetset","unset"],["unsettin","unsetting"],["unsharable","unshareable"],["unshfit","unshift"],["unshfited","unshifted"],["unshfiting","unshifting"],["unshfits","unshifts"],["unsiged","unsigned"],["unsigend","unsigned"],["unsignd","unsigned"],["unsignificant","insignificant"],["unsinged","unsigned"],["unsoclicited","unsolicited"],["unsolicitied","unsolicited"],["unsolicted","unsolicited"],["unsollicited","unsolicited"],["unspecificed","unspecified"],["unspecifiec","unspecific"],["unspecifiecd","unspecified"],["unspecifieced","unspecified"],["unspefcifieid","unspecified"],["unspefeid","unspecified"],["unspeficed","unspecified"],["unspeficeid","unspecified"],["unspeficialleid","unspecified"],["unspeficiallied","unspecified"],["unspeficiallifed","unspecified"],["unspeficied","unspecified"],["unspeficieid","unspecified"],["unspeficifed","unspecified"],["unspeficifeid","unspecified"],["unspeficified","unspecified"],["unspeficififed","unspecified"],["unspeficiied","unspecified"],["unspeficiifed","unspecified"],["unspeficilleid","unspecified"],["unspeficillied","unspecified"],["unspeficillifed","unspecified"],["unspeficiteid","unspecified"],["unspeficitied","unspecified"],["unspeficitifed","unspecified"],["unspefied","unspecified"],["unspefifed","unspecified"],["unspefifeid","unspecified"],["unspefified","unspecified"],["unspefififed","unspecified"],["unspefiied","unspecified"],["unspefiifeid","unspecified"],["unspefiified","unspecified"],["unspefiififed","unspecified"],["unspefixeid","unspecified"],["unspefixied","unspecified"],["unspefixifed","unspecified"],["unspported","unsupported"],["unstabel","unstable"],["unstalbe","unstable"],["unsuable","unusable"],["unsual","unusual"],["unsubscibe","unsubscribe"],["unsubscibed","unsubscribed"],["unsubscibing","unsubscribing"],["unsubscirbe","unsubscribe"],["unsubscirbed","unsubscribed"],["unsubscirbing","unsubscribing"],["unsubscirption","unsubscription"],["unsubscirptions","unsubscriptions"],["unsubscritpion","unsubscription"],["unsubscritpions","unsubscriptions"],["unsubscritpiton","unsubscription"],["unsubscritpitons","unsubscriptions"],["unsubscritption","unsubscription"],["unsubscritptions","unsubscriptions"],["unsubstanciated","unsubstantiated"],["unsucccessful","unsuccessful"],["unsucccessfully","unsuccessfully"],["unsucccessul","unsuccessful"],["unsucccessully","unsuccessfully"],["unsuccee","unsuccessful"],["unsucceed","unsuccessful"],["unsucceedde","unsuccessful"],["unsucceeded","unsuccessful"],["unsucceeds","unsuccessful"],["unsucceeed","unsuccessful"],["unsuccees","unsuccessful"],["unsuccesful","unsuccessful"],["unsuccesfull","unsuccessful"],["unsuccesfully","unsuccessfully"],["unsuccess","unsuccessful"],["unsuccessfull","unsuccessful"],["unsuccessfullly","unsuccessfully"],["unsucesful","unsuccessful"],["unsucesfull","unsuccessful"],["unsucesfully","unsuccessfully"],["unsucesfuly","unsuccessfully"],["unsucessefully","unsuccessfully"],["unsucessflly","unsuccessfully"],["unsucessfually","unsuccessfully"],["unsucessful","unsuccessful"],["unsucessfull","unsuccessful"],["unsucessfully","unsuccessfully"],["unsucessfuly","unsuccessfully"],["unsucesssful","unsuccessful"],["unsucesssfull","unsuccessful"],["unsucesssfully","unsuccessfully"],["unsucesssfuly","unsuccessfully"],["unsucessufll","unsuccessful"],["unsucessuflly","unsuccessfully"],["unsucessully","unsuccessfully"],["unsued","unused"],["unsufficient","insufficient"],["unsuportable","unsupportable"],["unsuported","unsupported"],["unsupport","unsupported"],["unsupproted","unsupported"],["unsupress","unsuppress"],["unsupressed","unsuppressed"],["unsupresses","unsuppresses"],["unsuprised","unsurprised"],["unsuprising","unsurprising"],["unsuprisingly","unsurprisingly"],["unsuprized","unsurprised"],["unsuprizing","unsurprising"],["unsuprizingly","unsurprisingly"],["unsurprized","unsurprised"],["unsurprizing","unsurprising"],["unsurprizingly","unsurprisingly"],["unsused","unused"],["unswithced","unswitched"],["unsychronise","unsynchronise"],["unsychronised","unsynchronised"],["unsychronize","unsynchronize"],["unsychronized","unsynchronized"],["untargetted","untargeted"],["unter","under"],["untill","until"],["untintuitive","unintuitive"],["untoched","untouched"],["untqueue","unqueue"],["untrached","untracked"],["untranslateable","untranslatable"],["untrasformed","untransformed"],["untrasposed","untransposed"],["untrustworty","untrustworthy"],["unued","unused"],["ununsed","unused"],["ununsual","unusual"],["unusal","unusual"],["unusally","unusually"],["unuseable","unusable"],["unuseful","useless"],["unusre","unsure"],["unusuable","unusable"],["unusued","unused"],["unvailable","unavailable"],["unvalid","invalid"],["unvalidate","invalidate"],["unverfified","unverified"],["unversionned","unversioned"],["unversoned","unversioned"],["unviersity","university"],["unwarrented","unwarranted"],["unweildly","unwieldy"],["unwieldly","unwieldy"],["unwraped","unwrapped"],["unwrritten","unwritten"],["unx","unix"],["unxepected","unexpected"],["unxepectedly","unexpectedly"],["unxpected","unexpected"],["unziped","unzipped"],["upadate","update"],["upadated","updated"],["upadater","updater"],["upadates","updates"],["upadating","updating"],["upadte","update"],["upadted","updated"],["upadter","updater"],["upadters","updaters"],["upadtes","updates"],["upagrade","upgrade"],["upagraded","upgraded"],["upagrades","upgrades"],["upagrading","upgrading"],["upate","update"],["upated","updated"],["upater","updater"],["upates","updates"],["upating","updating"],["upcomming","upcoming"],["updaing","updating"],["updat","update"],["updateded","updated"],["updateed","updated"],["updatees","updates"],["updateing","updating"],["updatess","updates"],["updatig","updating"],["updats","updates"],["updgrade","upgrade"],["updgraded","upgraded"],["updgrades","upgrades"],["updgrading","upgrading"],["updrage","upgrade"],["updraged","upgraded"],["updrages","upgrades"],["updraging","upgrading"],["updte","update"],["upercase","uppercase"],["uperclass","upperclass"],["upgade","upgrade"],["upgaded","upgraded"],["upgades","upgrades"],["upgading","upgrading"],["upgarade","upgrade"],["upgaraded","upgraded"],["upgarades","upgrades"],["upgarading","upgrading"],["upgarde","upgrade"],["upgarded","upgraded"],["upgardes","upgrades"],["upgarding","upgrading"],["upgarte","upgrade"],["upgarted","upgraded"],["upgartes","upgrades"],["upgarting","upgrading"],["upgerade","upgrade"],["upgeraded","upgraded"],["upgerades","upgrades"],["upgerading","upgrading"],["upgradablilty","upgradability"],["upgradde","upgrade"],["upgradded","upgraded"],["upgraddes","upgrades"],["upgradding","upgrading"],["upgradei","upgrade"],["upgradingn","upgrading"],["upgrate","upgrade"],["upgrated","upgraded"],["upgrates","upgrades"],["upgrating","upgrading"],["upholstry","upholstery"],["uplad","upload"],["upladaded","uploaded"],["upladed","uploaded"],["uplader","uploader"],["upladers","uploaders"],["uplading","uploading"],["uplads","uploads"],["uplaod","upload"],["uplaodaded","uploaded"],["uplaoded","uploaded"],["uplaoder","uploader"],["uplaoders","uploaders"],["uplaodes","uploads"],["uplaoding","uploading"],["uplaods","uploads"],["upliad","upload"],["uplod","upload"],["uplodaded","uploaded"],["uploded","uploaded"],["uploder","uploader"],["uploders","uploaders"],["uploding","uploading"],["uplods","uploads"],["uppler","upper"],["uppon","upon"],["upported","supported"],["upporterd","supported"],["uppper","upper"],["uppstream","upstream"],["uppstreamed","upstreamed"],["uppstreamer","upstreamer"],["uppstreaming","upstreaming"],["uppstreams","upstreams"],["uppwards","upwards"],["uprade","upgrade"],["upraded","upgraded"],["uprades","upgrades"],["uprading","upgrading"],["uprgade","upgrade"],["uprgaded","upgraded"],["uprgades","upgrades"],["uprgading","upgrading"],["upsream","upstream"],["upsreamed","upstreamed"],["upsreamer","upstreamer"],["upsreaming","upstreaming"],["upsreams","upstreams"],["upsrteam","upstream"],["upsrteamed","upstreamed"],["upsrteamer","upstreamer"],["upsrteaming","upstreaming"],["upsrteams","upstreams"],["upsteam","upstream"],["upsteamed","upstreamed"],["upsteamer","upstreamer"],["upsteaming","upstreaming"],["upsteams","upstreams"],["upsteram","upstream"],["upsteramed","upstreamed"],["upsteramer","upstreamer"],["upsteraming","upstreaming"],["upsterams","upstreams"],["upstread","upstream"],["upstreamedd","upstreamed"],["upstreammed","upstreamed"],["upstreammer","upstreamer"],["upstreamming","upstreaming"],["upstreem","upstream"],["upstreemed","upstreamed"],["upstreemer","upstreamer"],["upstreeming","upstreaming"],["upstreems","upstreams"],["upstrema","upstream"],["upsupported","unsupported"],["uptadeable","updatable"],["uptdate","update"],["uptim","uptime"],["uptions","options"],["uptodate","up-to-date"],["uptodateness","up-to-dateness"],["uptream","upstream"],["uptreamed","upstreamed"],["uptreamer","upstreamer"],["uptreaming","upstreaming"],["uptreams","upstreams"],["uqest","quest"],["uqests","quests"],["urrlib","urllib"],["usag","usage"],["usal","usual"],["usally","usually"],["uscaled","unscaled"],["useability","usability"],["useable","usable"],["useage","usage"],["usebility","usability"],["useble","usable"],["useed","used"],["usees","uses"],["usefl","useful"],["usefule","useful"],["usefulfor","useful for"],["usefull","useful"],["usefullness","usefulness"],["usefult","useful"],["usefuly","usefully"],["usefutl","useful"],["usege","usage"],["useing","using"],["user-defiend","user-defined"],["user-defiened","user-defined"],["usera","users"],["userame","username"],["userames","usernames"],["userapace","userspace"],["userful","useful"],["userpace","userspace"],["userpsace","userspace"],["usersapce","userspace"],["userspase","userspace"],["usesfull","useful"],["usespace","userspace"],["usetnet","Usenet"],["usibility","usability"],["usible","usable"],["usig","using"],["usigned","unsigned"],["usiing","using"],["usin","using"],["usind","using"],["usinging","using"],["usinng","using"],["usng","using"],["usnig","using"],["usptart","upstart"],["usptarts","upstarts"],["usseful","useful"],["ussual","usual"],["ussuall","usual"],["ussually","usually"],["usuable","usable"],["usuage","usage"],["usuallly","usually"],["usualy","usually"],["usualyl","usually"],["usue","use"],["usued","used"],["usueful","useful"],["usuer","user"],["usuing","using"],["usupported","unsupported"],["ususal","usual"],["ususally","usually"],["UTF8ness","UTF-8-ness"],["utiilties","utilities"],["utilies","utilities"],["utililties","utilities"],["utilis","utilise"],["utilisa","utilise"],["utilisaton","utilisation"],["utilites","utilities"],["utilitisation","utilisation"],["utilitise","utilise"],["utilitises","utilises"],["utilitising","utilising"],["utilitiy","utility"],["utilitization","utilization"],["utilitize","utilize"],["utilitizes","utilizes"],["utilitizing","utilizing"],["utiliz","utilize"],["utiliza","utilize"],["utilizaton","utilization"],["utillities","utilities"],["utilties","utilities"],["utiltities","utilities"],["utiltity","utility"],["utilty","utility"],["utitity","utility"],["utitlities","utilities"],["utitlity","utility"],["utitlty","utility"],["utlities","utilities"],["utlity","utility"],["utput","output"],["utputs","outputs"],["uupload","upload"],["uupper","upper"],["vaalues","values"],["vaccum","vacuum"],["vaccume","vacuum"],["vaccuum","vacuum"],["vacinity","vicinity"],["vactor","vector"],["vactors","vectors"],["vacumme","vacuum"],["vacuosly","vacuously"],["vaelues","values"],["vaguaries","vagaries"],["vaiable","variable"],["vaiables","variables"],["vaiant","variant"],["vaiants","variants"],["vaidate","validate"],["vaieties","varieties"],["vailable","available"],["vaild","valid"],["vailidity","validity"],["vailidty","validity"],["vairable","variable"],["vairables","variables"],["vairous","various"],["vakue","value"],["vakued","valued"],["vakues","values"],["valailable","available"],["valdate","validate"],["valetta","valletta"],["valeu","value"],["valiator","validator"],["validade","validate"],["validata","validate"],["validataion","validation"],["validaterelase","validaterelease"],["valide","valid"],["valididty","validity"],["validing","validating"],["validte","validate"],["validted","validated"],["validtes","validates"],["validting","validating"],["validtion","validation"],["valied","valid"],["valies","values"],["valif","valid"],["valitdity","validity"],["valkues","values"],["vallgrind","valgrind"],["vallid","valid"],["vallidation","validation"],["vallidity","validity"],["vallue","value"],["vallues","values"],["valsues","values"],["valtage","voltage"],["valtages","voltages"],["valu","value"],["valuble","valuable"],["valudes","values"],["value-to-pack","value to pack"],["valueable","valuable"],["valuess","values"],["valuie","value"],["valulation","valuation"],["valulations","valuations"],["valule","value"],["valuled","valued"],["valules","values"],["valuling","valuing"],["vanishs","vanishes"],["varable","variable"],["varables","variables"],["varaiable","variable"],["varaiables","variables"],["varaiance","variance"],["varaiation","variation"],["varaible","variable"],["varaibles","variables"],["varaint","variant"],["varaints","variants"],["varation","variation"],["varations","variations"],["variabble","variable"],["variabbles","variables"],["variabe","variable"],["variabel","variable"],["variabele","variable"],["variabes","variables"],["variabla","variable"],["variablen","variable"],["varialbe","variable"],["varialbes","variables"],["varialbles","variables"],["varian","variant"],["variantions","variations"],["variatinos","variations"],["variationnal","variational"],["variatoin","variation"],["variatoins","variations"],["variavle","variable"],["variavles","variables"],["varibable","variable"],["varibables","variables"],["varibale","variable"],["varibales","variables"],["varibaless","variables"],["varibel","variable"],["varibels","variables"],["varibility","variability"],["variblae","variable"],["variblaes","variables"],["varible","variable"],["varibles","variables"],["varience","variance"],["varient","variant"],["varients","variants"],["varierty","variety"],["variey","variety"],["varify","verify"],["variing","varying"],["varing","varying"],["varities","varieties"],["varity","variety"],["variuos","various"],["variuous","various"],["varius","various"],["varn","warn"],["varned","warned"],["varning","warning"],["varnings","warnings"],["varns","warns"],["varoius","various"],["varous","various"],["varously","variously"],["varriance","variance"],["varriances","variances"],["vartical","vertical"],["vartically","vertically"],["vas","was"],["vasall","vassal"],["vasalls","vassals"],["vaue","value"],["vaule","value"],["vauled","valued"],["vaules","values"],["vauling","valuing"],["vavle","valve"],["vavlue","value"],["vavriable","variable"],["vavriables","variables"],["vbsrcript","vbscript"],["vebrose","verbose"],["vecotr","vector"],["vecotrs","vectors"],["vectices","vertices"],["vectore","vector"],["vectores","vectors"],["vectorss","vectors"],["vectror","vector"],["vectrors","vectors"],["vecvtor","vector"],["vecvtors","vectors"],["vedio","video"],["vefiry","verify"],["vegatarian","vegetarian"],["vegeterian","vegetarian"],["vegitable","vegetable"],["vegitables","vegetables"],["vegtable","vegetable"],["vehicule","vehicle"],["veify","verify"],["veiw","view"],["veiwed","viewed"],["veiwer","viewer"],["veiwers","viewers"],["veiwing","viewing"],["veiwings","viewings"],["veiws","views"],["vektor","vector"],["vektors","vectors"],["velidate","validate"],["vell","well"],["velociries","velocities"],["velociry","velocity"],["vender","vendor"],["venders","vendors"],["venemous","venomous"],["vengance","vengeance"],["vengence","vengeance"],["verbaitm","verbatim"],["verbatum","verbatim"],["verbous","verbose"],["verbouse","verbose"],["verbously","verbosely"],["verbse","verbose"],["verctor","vector"],["verctors","vectors"],["veresion","version"],["veresions","versions"],["verfication","verification"],["verficiation","verification"],["verfier","verifier"],["verfies","verifies"],["verfifiable","verifiable"],["verfification","verification"],["verfifications","verifications"],["verfified","verified"],["verfifier","verifier"],["verfifiers","verifiers"],["verfifies","verifies"],["verfify","verify"],["verfifying","verifying"],["verfires","verifies"],["verfiy","verify"],["verfiying","verifying"],["verfy","verify"],["verfying","verifying"],["verical","vertical"],["verifcation","verification"],["verifiaction","verification"],["verificaion","verification"],["verificaions","verifications"],["verificiation","verification"],["verificiations","verifications"],["verifieing","verifying"],["verifing","verifying"],["verifiy","verify"],["verifiying","verifying"],["verifty","verify"],["veriftying","verifying"],["verifyied","verified"],["verion","version"],["verions","versions"],["veriosn","version"],["veriosns","versions"],["verious","various"],["verison","version"],["verisoned","versioned"],["verisoner","versioner"],["verisoners","versioners"],["verisoning","versioning"],["verisons","versions"],["veritcal","vertical"],["veritcally","vertically"],["veritical","vertical"],["verly","very"],["vermillion","vermilion"],["verndor","vendor"],["verrical","vertical"],["verry","very"],["vershin","version"],["versin","version"],["versino","version"],["versinos","versions"],["versins","versions"],["versio","version"],["versiob","version"],["versioed","versioned"],["versioing","versioning"],["versiom","version"],["versionaddded","versionadded"],["versionm","version"],["versionms","versions"],["versionned","versioned"],["versionning","versioning"],["versios","versions"],["versitilaty","versatility"],["versitile","versatile"],["versitlity","versatility"],["versoin","version"],["versoion","version"],["versoions","versions"],["verson","version"],["versoned","versioned"],["versons","versions"],["vertextes","vertices"],["vertexts","vertices"],["vertial","vertical"],["verticall","vertical"],["verticaly","vertically"],["verticies","vertices"],["verticla","vertical"],["verticlealign","verticalalign"],["vertiece","vertex"],["vertieces","vertices"],["vertifiable","verifiable"],["vertification","verification"],["vertifications","verifications"],["vertify","verify"],["vertikal","vertical"],["vertix","vertex"],["vertixes","vertices"],["vertixs","vertices"],["vertx","vertex"],["veryfieng","verifying"],["veryfy","verify"],["veryified","verified"],["veryifies","verifies"],["veryify","verify"],["veryifying","verifying"],["vesion","version"],["vesions","versions"],["vetex","vertex"],["vetexes","vertices"],["vetod","vetoed"],["vetween","between"],["vew","view"],["veyr","very"],["vhild","child"],["viatnamese","Vietnamese"],["vice-fersa","vice-versa"],["vice-wersa","vice-versa"],["vicefersa","vice-versa"],["viceversa","vice-versa"],["vicewersa","vice-versa"],["videostreamming","videostreaming"],["viee","view"],["viees","views"],["vieport","viewport"],["vieports","viewports"],["vietnamesea","Vietnamese"],["viewtransfromation","viewtransformation"],["vigilence","vigilance"],["vigourous","vigorous"],["vill","will"],["villian","villain"],["villification","vilification"],["villify","vilify"],["vincinity","vicinity"],["vinrator","vibrator"],["vioalte","violate"],["vioaltion","violation"],["violentce","violence"],["violoated","violated"],["violoating","violating"],["violoation","violation"],["violoations","violations"],["virtal","virtual"],["virtaul","virtual"],["virtical","vertical"],["virtiual","virtual"],["virttual","virtual"],["virttually","virtually"],["virtualisaion","virtualisation"],["virtualisaiton","virtualisation"],["virtualizaion","virtualization"],["virtualizaiton","virtualization"],["virtualiziation","virtualization"],["virtualy","virtually"],["virtualzation","virtualization"],["virtuell","virtual"],["virtural","virtual"],["virture","virtue"],["virutal","virtual"],["virutalenv","virtualenv"],["virutalisation","virtualisation"],["virutalise","virtualise"],["virutalised","virtualised"],["virutalization","virtualization"],["virutalize","virtualize"],["virutalized","virtualized"],["virutally","virtually"],["virutals","virtuals"],["virutual","virtual"],["visability","visibility"],["visable","visible"],["visably","visibly"],["visbility","visibility"],["visble","visible"],["visblie","visible"],["visbly","visibly"],["visiable","visible"],["visiably","visibly"],["visibale","visible"],["visibibilty","visibility"],["visibile","visible"],["visibililty","visibility"],["visibilit","visibility"],["visibilty","visibility"],["visibl","visible"],["visibleable","visible"],["visibles","visible"],["visiblities","visibilities"],["visiblity","visibility"],["visiblle","visible"],["visinble","visible"],["visious","vicious"],["visisble","visible"],["visiter","visitor"],["visiters","visitors"],["visitng","visiting"],["visivble","visible"],["vissible","visible"],["visted","visited"],["visting","visiting"],["vistors","visitors"],["visuab","visual"],["visuabisation","visualisation"],["visuabise","visualise"],["visuabised","visualised"],["visuabises","visualises"],["visuabization","visualization"],["visuabize","visualize"],["visuabized","visualized"],["visuabizes","visualizes"],["visuables","visuals"],["visuably","visually"],["visuabs","visuals"],["visuaisation","visualisation"],["visuaise","visualise"],["visuaised","visualised"],["visuaises","visualises"],["visuaization","visualization"],["visuaize","visualize"],["visuaized","visualized"],["visuaizes","visualizes"],["visuale","visual"],["visuales","visuals"],["visualizaion","visualization"],["visualizaiton","visualization"],["visualizaitons","visualizations"],["visualizaton","visualization"],["visualizatons","visualizations"],["visuallisation","visualisation"],["visuallization","visualization"],["visualy","visually"],["visualzation","visualization"],["vitories","victories"],["vitrual","virtual"],["vitrually","virtually"],["vitual","virtual"],["viusally","visually"],["viusualisation","visualisation"],["viwe","view"],["viwed","viewed"],["viweed","viewed"],["viwer","viewer"],["viwers","viewers"],["viwes","views"],["vizualisation","visualisation"],["vizualise","visualise"],["vizualised","visualised"],["vizualize","visualize"],["vizualized","visualized"],["vlarge","large"],["vlaue","value"],["vlaues","values"],["vlone","clone"],["vloned","cloned"],["vlones","clones"],["vlues","values"],["voif","void"],["volatage","voltage"],["volatages","voltages"],["volatge","voltage"],["volatges","voltages"],["volcanoe","volcano"],["volenteer","volunteer"],["volenteered","volunteered"],["volenteers","volunteers"],["voleyball","volleyball"],["volontary","voluntary"],["volonteer","volunteer"],["volonteered","volunteered"],["volonteering","volunteering"],["volonteers","volunteers"],["volounteer","volunteer"],["volounteered","volunteered"],["volounteering","volunteering"],["volounteers","volunteers"],["volumn","volume"],["volumne","volume"],["volums","volume"],["volxel","voxel"],["volxels","voxels"],["vonfig","config"],["vould","would"],["vreity","variety"],["vresion","version"],["vrey","very"],["vriable","variable"],["vriables","variables"],["vriety","variety"],["vrifier","verifier"],["vrifies","verifies"],["vrify","verify"],["vrilog","Verilog"],["vritual","virtual"],["vritualenv","virtualenv"],["vritualisation","virtualisation"],["vritualise","virtualise"],["vritualization","virtualization"],["vritualize","virtualize"],["vrituoso","virtuoso"],["vrsion","version"],["vrsions","versions"],["Vulacn","Vulcan"],["Vulakn","Vulkan"],["vulbearable","vulnerable"],["vulbearabule","vulnerable"],["vulbearbilities","vulnerabilities"],["vulbearbility","vulnerability"],["vulbearbuilities","vulnerabilities"],["vulbearbuility","vulnerability"],["vulberabilility","vulnerability"],["vulberabilites","vulnerabilities"],["vulberabiliti","vulnerability"],["vulberabilitie","vulnerability"],["vulberabilitis","vulnerabilities"],["vulberabilitiy","vulnerability"],["vulberabillities","vulnerabilities"],["vulberabillity","vulnerability"],["vulberabilties","vulnerabilities"],["vulberabilty","vulnerability"],["vulberablility","vulnerability"],["vulberabuilility","vulnerability"],["vulberabuilites","vulnerabilities"],["vulberabuiliti","vulnerability"],["vulberabuilitie","vulnerability"],["vulberabuilities","vulnerabilities"],["vulberabuilitis","vulnerabilities"],["vulberabuilitiy","vulnerability"],["vulberabuility","vulnerability"],["vulberabuillities","vulnerabilities"],["vulberabuillity","vulnerability"],["vulberabuilties","vulnerabilities"],["vulberabuilty","vulnerability"],["vulberabule","vulnerable"],["vulberabulility","vulnerability"],["vulberbilities","vulnerabilities"],["vulberbility","vulnerability"],["vulberbuilities","vulnerabilities"],["vulberbuility","vulnerability"],["vulerabilities","vulnerabilities"],["vulerability","vulnerability"],["vulerable","vulnerable"],["vulerabuilities","vulnerabilities"],["vulerabuility","vulnerability"],["vulerabule","vulnerable"],["vulernabilities","vulnerabilities"],["vulernability","vulnerability"],["vulernable","vulnerable"],["vulnarabilities","vulnerabilities"],["vulnarability","vulnerability"],["vulneabilities","vulnerabilities"],["vulneability","vulnerability"],["vulneable","vulnerable"],["vulnearabilities","vulnerabilities"],["vulnearability","vulnerability"],["vulnearable","vulnerable"],["vulnearabule","vulnerable"],["vulnearbilities","vulnerabilities"],["vulnearbility","vulnerability"],["vulnearbuilities","vulnerabilities"],["vulnearbuility","vulnerability"],["vulnerabilies","vulnerabilities"],["vulnerabiliies","vulnerabilities"],["vulnerabilility","vulnerability"],["vulnerabilites","vulnerabilities"],["vulnerabiliti","vulnerability"],["vulnerabilitie","vulnerability"],["vulnerabilitis","vulnerabilities"],["vulnerabilitiy","vulnerability"],["vulnerabilitu","vulnerability"],["vulnerabiliy","vulnerability"],["vulnerabillities","vulnerabilities"],["vulnerabillity","vulnerability"],["vulnerabilties","vulnerabilities"],["vulnerabilty","vulnerability"],["vulnerablility","vulnerability"],["vulnerablities","vulnerabilities"],["vulnerablity","vulnerability"],["vulnerabuilility","vulnerability"],["vulnerabuilites","vulnerabilities"],["vulnerabuiliti","vulnerability"],["vulnerabuilitie","vulnerability"],["vulnerabuilities","vulnerabilities"],["vulnerabuilitis","vulnerabilities"],["vulnerabuilitiy","vulnerability"],["vulnerabuility","vulnerability"],["vulnerabuillities","vulnerabilities"],["vulnerabuillity","vulnerability"],["vulnerabuilties","vulnerabilities"],["vulnerabuilty","vulnerability"],["vulnerabule","vulnerable"],["vulnerabulility","vulnerability"],["vulnerarbilities","vulnerabilities"],["vulnerarbility","vulnerability"],["vulnerarble","vulnerable"],["vulnerbilities","vulnerabilities"],["vulnerbility","vulnerability"],["vulnerbuilities","vulnerabilities"],["vulnerbuility","vulnerability"],["vulnreabilities","vulnerabilities"],["vulnreability","vulnerability"],["vunerabilities","vulnerabilities"],["vunerability","vulnerability"],["vunerable","vulnerable"],["vyer","very"],["vyre","very"],["waht","what"],["wainting","waiting"],["waisline","waistline"],["waislines","waistlines"],["waitting","waiting"],["wakup","wakeup"],["wallthickness","wall thickness"],["want;s","wants"],["wantto","want to"],["wappers","wrappers"],["warantee","warranty"],["waranties","warranties"],["waranty","warranty"],["wardobe","wardrobe"],["waring","warning"],["warings","warnings"],["warinigs","warnings"],["warining","warning"],["warinings","warnings"],["warks","works"],["warlking","walking"],["warnibg","warning"],["warnibgs","warnings"],["warnig","warning"],["warnign","warning"],["warnigns","warnings"],["warnigs","warnings"],["warniing","warning"],["warniings","warnings"],["warnin","warning"],["warnind","warning"],["warninds","warnings"],["warninf","warning"],["warninfs","warnings"],["warningss","warnings"],["warninig","warning"],["warninigs","warnings"],["warnining","warning"],["warninings","warnings"],["warninng","warning"],["warninngs","warnings"],["warnins","warnings"],["warninsg","warnings"],["warninsgs","warnings"],["warniong","warning"],["warniongs","warnings"],["warnkng","warning"],["warnkngs","warnings"],["warrent","warrant"],["warrents","warrants"],["warrn","warn"],["warrned","warned"],["warrning","warning"],["warrnings","warnings"],["warrriors","warriors"],["was'nt","wasn't"],["was't","wasn't"],["was;t","wasn't"],["wasn;t","wasn't"],["wasnt'","wasn't"],["wasnt","wasn't"],["wasnt;","wasn't"],["wass","was"],["wastefullness","wastefulness"],["watchdong","watchdog"],["watchog","watchdog"],["watermask","watermark"],["wathc","watch"],["wathdog","watchdog"],["wathever","whatever"],["wating","waiting"],["watn","want"],["wavelengh","wavelength"],["wavelenghs","wavelengths"],["wavelenght","wavelength"],["wavelenghts","wavelengths"],["wavelnes","wavelines"],["wayoint","waypoint"],["wayoints","waypoints"],["wayword","wayward"],["weahter","weather"],["weahters","weathers"],["weaponary","weaponry"],["weas","was"],["webage","webpage"],["webbased","web-based"],["webiste","website"],["wedensday","Wednesday"],["wednesay","Wednesday"],["wednesdaay","Wednesday"],["wednesdey","Wednesday"],["wednessday","Wednesday"],["wednsday","Wednesday"],["wege","wedge"],["wehere","where"],["wehn","when"],["wehther","whether"],["weigth","weight"],["weigthed","weighted"],["weigths","weights"],["weilded","wielded"],["weill","will"],["weired","weird"],["weitght","weight"],["wel","well"],["wendesday","Wednesday"],["wendsay","Wednesday"],["wendsday","Wednesday"],["wensday","Wednesday"],["were'nt","weren't"],["wereabouts","whereabouts"],["wereas","whereas"],["weree","were"],["werent","weren't"],["werever","wherever"],["wew","we"],["whant","want"],["whants","wants"],["whataver","whatever"],["whatepsace","whitespace"],["whatepsaces","whitespaces"],["whathever","whatever"],["whch","which"],["whcich","which"],["whcih","which"],["wheh","when"],["whehter","whether"],["wheigh","weigh"],["whem","when"],["whenevery","whenever"],["whenn","when"],["whenver","whenever"],["wheras","whereas"],["wherease","whereas"],["whereever","wherever"],["wherether","whether"],["whery","where"],["wheteher","whether"],["whetehr","whether"],["wheter","whether"],["whethe","whether"],["whethter","whether"],["whever","wherever"],["whheel","wheel"],["whhen","when"],["whic","which"],["whicg","which"],["which;s","which's"],["whichs","which's"],["whicht","which"],["whih","which"],["whihc","which"],["whihch","which"],["whike","while"],["whilest","whilst"],["whiltelist","whitelist"],["whiltelisted","whitelisted"],["whiltelisting","whitelisting"],["whiltelists","whitelists"],["whilw","while"],["whioch","which"],["whishlist","wishlist"],["whitch","which"],["whitchever","whichever"],["whitepsace","whitespace"],["whitepsaces","whitespaces"],["whith","with"],["whithin","within"],["whithout","without"],["whitre","white"],["whitspace","whitespace"],["whitspaces","whitespace"],["whlch","which"],["whle","while"],["whlie","while"],["whn","when"],["whne","when"],["whoes","whose"],["whoknows","who knows"],["wholey","wholly"],["whoose","whose"],["whould","would"],["whre","where"],["whta","what"],["whther","whether"],["whtihin","within"],["whyth","with"],["whythout","without"],["wiat","wait"],["wice","vice"],["wice-versa","vice-versa"],["wice-wersa","vice-versa"],["wiceversa","vice-versa"],["wicewersa","vice-versa"],["wich","which"],["widder","wider"],["widesread","widespread"],["widgect","widget"],["widged","widget"],["widghet","widget"],["widghets","widgets"],["widgit","widget"],["widgtes","widgets"],["widht","width"],["widhtpoint","widthpoint"],["widhtpoints","widthpoints"],["widthn","width"],["widthout","without"],["wief","wife"],["wieghed","weighed"],["wieght","weight"],["wieghts","weights"],["wieh","view"],["wierd","weird"],["wierdly","weirdly"],["wierdness","weirdness"],["wieth","width"],["wiew","view"],["wigdet","widget"],["wigdets","widgets"],["wih","with"],["wihch","which"],["wihich","which"],["wihite","white"],["wihle","while"],["wihout","without"],["wiht","with"],["wihtin","within"],["wihtout","without"],["wiil","will"],["wikpedia","wikipedia"],["wilcard","wildcard"],["wilcards","wildcards"],["wilh","will"],["wille","will"],["willingless","willingness"],["willk","will"],["willl","will"],["windo","window"],["windoes","windows"],["windoow","window"],["windoows","windows"],["windos","windows"],["windowz","windows"],["windwo","window"],["windwos","windows"],["winn","win"],["winndow","window"],["winndows","windows"],["winodw","window"],["wipoing","wiping"],["wirh","with"],["wirte","write"],["wirter","writer"],["wirters","writers"],["wirtes","writes"],["wirting","writing"],["wirtten","written"],["wirtual","virtual"],["witable","writeable"],["witdh","width"],["witdhs","widths"],["witdth","width"],["witdths","widths"],["witheld","withheld"],["withh","with"],["withih","within"],["withinn","within"],["withion","within"],["witho","with"],["withoit","without"],["withold","withhold"],["witholding","withholding"],["withon","within"],["withoout","without"],["withot","without"],["withotu","without"],["withou","without"],["withoud","without"],["withoug","without"],["withough","without"],["withought","without"],["withouht","without"],["withount","without"],["withourt","without"],["withous","without"],["withouth","without"],["withouyt","without"],["withput","without"],["withrawal","withdrawal"],["witht","with"],["withthe","with the"],["withtin","within"],["withun","within"],["withuout","without"],["witin","within"],["witk","with"],["witn","with"],["witout","without"],["witrh","with"],["witth","with"],["wiull","will"],["wiyh","with"],["wiyhout","without"],["wiyth","with"],["wizzard","wizard"],["wjat","what"],["wll","will"],["wlll","will"],["wnated","wanted"],["wnating","wanting"],["wnats","wants"],["woh","who"],["wohle","whole"],["woill","will"],["woithout","without"],["wokr","work"],["wokring","working"],["wolrd","world"],["wolrdly","worldly"],["wolrdwide","worldwide"],["wolwide","worldwide"],["won;t","won't"],["wonderfull","wonderful"],["wonderig","wondering"],["wont't","won't"],["woraround","workaround"],["worarounds","workarounds"],["worbench","workbench"],["worbenches","workbenches"],["worchester","Worcester"],["wordlwide","worldwide"],["wordpres","wordpress"],["worfklow","workflow"],["worfklows","workflows"],["worflow","workflow"],["worflows","workflows"],["workaorund","workaround"],["workaorunds","workarounds"],["workaound","workaround"],["workaounds","workarounds"],["workaraound","workaround"],["workaraounds","workarounds"],["workarbound","workaround"],["workaroud","workaround"],["workaroudn","workaround"],["workaroudns","workarounds"],["workarouds","workarounds"],["workarould","workaround"],["workaroung","workaround"],["workaroungs","workarounds"],["workarround","workaround"],["workarrounds","workarounds"],["workarund","workaround"],["workarunds","workarounds"],["workbanch","workbench"],["workbanches","workbenches"],["workbanchs","workbenches"],["workbenchs","workbenches"],["workbennch","workbench"],["workbennches","workbenches"],["workbnech","workbench"],["workbneches","workbenches"],["workboos","workbooks"],["workes","works"],["workfow","workflow"],["workfows","workflows"],["workign","working"],["worklfow","workflow"],["worklfows","workflows"],["workpsace","workspace"],["workpsaces","workspaces"],["workround","workaround"],["workrounds","workarounds"],["workspce","workspace"],["workspsace","workspace"],["workspsaces","workspaces"],["workstaion","workstation"],["workstaions","workstations"],["workstaition","workstation"],["workstaitions","workstations"],["workstaiton","workstation"],["workstaitons","workstations"],["workststion","workstation"],["workststions","workstations"],["worl","world"],["world-reknown","world renown"],["world-reknowned","world renowned"],["worload","workload"],["worloads","workloads"],["worls","world"],["wornged","wronged"],["worngs","wrongs"],["worrry","worry"],["worser","worse"],["worstened","worsened"],["worthwile","worthwhile"],["woth","worth"],["wothout","without"],["wotk","work"],["wotked","worked"],["wotking","working"],["wotks","works"],["woud","would"],["woudl","would"],["woudn't","wouldn't"],["would'nt","wouldn't"],["would't","wouldn't"],["wouldent","wouldn't"],["woulden`t","wouldn't"],["wouldn;t","wouldn't"],["wouldnt'","wouldn't"],["wouldnt","wouldn't"],["wouldnt;","wouldn't"],["wounderful","wonderful"],["wouold","would"],["wouuld","would"],["wqs","was"],["wraapp","wrap"],["wraapped","wrapped"],["wraapper","wrapper"],["wraappers","wrappers"],["wraapping","wrapping"],["wraapps","wraps"],["wraning","warning"],["wranings","warnings"],["wrapepd","wrapped"],["wraper","wrapper"],["wrapp","wrap"],["wrappered","wrapped"],["wrappng","wrapping"],["wrapps","wraps"],["wresters","wrestlers"],["wriet","write"],["writebufer","writebuffer"],["writechetque","writecheque"],["writeing","writing"],["writen","written"],["writet","writes"],["writewr","writer"],["writingm","writing"],["writters","writers"],["writting","writing"],["writtten","written"],["wrkload","workload"],["wrkloads","workloads"],["wrod","word"],["wroet","wrote"],["wrog","wrong"],["wrok","work"],["wroked","worked"],["wrokflow","workflow"],["wrokflows","workflows"],["wroking","working"],["wrokload","workload"],["wrokloads","workloads"],["wroks","works"],["wron","wrong"],["wronf","wrong"],["wront","wrong"],["wrtie","write"],["wrting","writing"],["wsee","see"],["wser","user"],["wth","with"],["wtih","with"],["wtyle","style"],["wuold","would"],["wupport","support"],["wuth","with"],["wuthin","within"],["wya","way"],["wyth","with"],["wythout","without"],["xdescribe","describe"],["xdpf","xpdf"],["xenophoby","xenophobia"],["xepect","expect"],["xepected","expected"],["xepectedly","expectedly"],["xepecting","expecting"],["xepects","expects"],["xgetttext","xgettext"],["xinitiazlize","xinitialize"],["xmdoel","xmodel"],["xour","your"],["xwindows","X"],["xyou","you"],["yaching","yachting"],["yaer","year"],["yaerly","yearly"],["yaers","years"],["yatch","yacht"],["yearm","year"],["yeasr","years"],["yeild","yield"],["yeilded","yielded"],["yeilding","yielding"],["yeilds","yields"],["yeld","yield"],["yelded","yielded"],["yelding","yielding"],["yelds","yields"],["yello","yellow"],["yera","year"],["yeras","years"],["yersa","years"],["yhe","the"],["yieldin","yielding"],["ymbols","symbols"],["yoman","yeoman"],["yomen","yeomen"],["yot","yacht"],["yotube","youtube"],["youforic","euphoric"],["youforically","euphorically"],["youlogy","eulogy"],["yourselfes","yourselves"],["youself","yourself"],["youthinasia","euthanasia"],["ypes","types"],["yrea","year"],["ytou","you"],["yuforic","euphoric"],["yuforically","euphorically"],["yugoslac","yugoslav"],["yuo","you"],["yuor","your"],["yur","your"],["zar","czar"],["zars","czars"],["zeebra","zebra"],["zefer","zephyr"],["zefers","zephyrs"],["zellot","zealot"],["zellots","zealots"],["zemporary","temporary"],["zick-zack","zig-zag"],["zimmap","zipmap"],["zimpaps","zipmaps"],["zink","zinc"],["ziped","zipped"],["ziper","zipper"],["ziping","zipping"],["zlot","slot"],["zombe","zombie"],["zomebie","zombie"],["zoocheenei","zucchinis"],["zoocheeni","zucchini"],["zoocheinei","zucchinis"],["zoocheini","zucchini"],["zookeenee","zucchini"],["zookeenees","zucchinis"],["zookeenei","zucchinis"],["zookeeni","zucchini"],["zookeinee","zucchini"],["zookeinees","zucchinis"],["zookeinei","zucchinis"],["zookeini","zucchini"],["zucheenei","zucchinis"],["zucheeni","zucchini"],["zukeenee","zucchini"],["zukeenees","zucchinis"],["zukeenei","zucchinis"],["zukeeni","zucchini"],["zuser","user"],["zylophone","xylophone"],["zylophones","xylophone"],["__attribyte__","__attribute__"],["__cpluspus","__cplusplus"],["__cpusplus","__cplusplus"],["\xE9valuate","evaluate"],["\u0441ontain","contain"],["\u0441ontained","contained"],["\u0441ontainer","container"],["\u0441ontainers","containers"],["\u0441ontaining","containing"],["\u0441ontainor","container"],["\u0441ontainors","containers"],["\u0441ontains","contains"]]);var _a=class{constructor(){this.ignoreWords=[]}},Mn=class extends z{get OptionsClass(){return _a}get name(){return"Auto-correct Common Misspellings"}get description(){return"Uses a dictionary of common misspellings to automatically convert them to their proper spellings. See [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) for the full list of auto-corrected words."}get type(){return"Content"}apply(i,t){return R([y.yaml,y.code,y.inlineCode,y.math,y.inlineMath,y.link,y.wikiLink,y.tag,y.image,y.url],i,n=>{let r=/[\w\-'’`]+/g;return n.replaceAll(r,a=>{let s=a.toLowerCase();if(!lo.has(s)||t.ignoreWords.includes(s))return a;let o=lo.get(s);return a.charAt(0)==a.charAt(0).toUpperCase()&&(o=o.charAt(0).toUpperCase()+o.substring(1)),o})})}get exampleBuilders(){return[new x({description:"Auto-correct misspellings in regular text, but not code blocks, math blocks, YAML, or tags",before:p` +`),e}function Xd(e){let t=ye("link",e);for(let i of t){if(i==null)continue;let n=e.substring(i.start.offset,i.end.offset);if(!n.match(Cn))continue;let r=n.indexOf("]"),a=n.substring(0,1)+n.substring(1,r).trim()+n.substring(r);e=fe(e,i.start.offset,i.end.offset,a)}return e}function eu(e,t){let i=ye("emphasis",e);for(let n of i){let r=e.substring(n.start.offset+1,n.end.offset-1);r=t(r),e=fe(e,n.start.offset+1,n.end.offset-1,r)}return e}function iu(e,t){let i=ye("strong",e);for(let n of i){let r=e.substring(n.start.offset+2,n.end.offset-2);r=t(r),e=fe(e,n.start.offset+2,n.end.offset-2,r)}return e}function Ma(e,t){let i=Jf(e),n=/^\[.\] /;for(let r of i){let a=r.start.offset;for(;a>0&&e.charAt(a-1).trim()==="";)a--;(a===0||e.charAt(a-1).trim()!="")&&a++;let s=e.substring(a,r.end.offset);n.test(s)&&(a+=4,s=s.substring(4)),s=t(s),e=fe(e,a,r.end.offset,s)}return e}function tu(e){let t=ye("code",e);for(let i of t)e.substring(i.start.offset,i.end.offset).startsWith("```")&&(e=tt(e,i.start.offset,i.end.offset));return e}function nu(e,t){let i=ye("math",e);for(let n of i)e=tt(e,n.start.offset,n.end.offset);i=ye("inlineMath",e);for(let n of i)e.substring(n.start.offset,n.end.offset).startsWith("$".repeat(t))&&(e=tt(e,n.start.offset,n.end.offset));return e}function ru(e){let t=ye("blockquote",e);for(let i of t){let n=i.end.offset;for(;n0&&e.charAt(a-1)!==` +`;)a--;let s=e.substring(a,r.end.offset),o=function(u){let m=u.lastIndexOf("> ");return m!==-1&&(u=u.substring(m+2)),u=u.replaceAll(" "," "),Math.floor((u.split(" ").length-1)/2)+1},l=new Map,d=function(u,m){let g=m;for(;g>u;)l.delete(g--)},c=-1;s=s.replace(/^(( |\t|> )*)((\d+(\.|\)))|[-*+])([^\n]*)$/gm,(u,m="",g,h,v,w,z)=>{let S=1,L=o(m);if(!/^\d/.test(h)){let q=L>c?L:c;return d(L,q),u}return l.has(L)?t==="ascending"&&(S=l.get(L)+1,l.set(L,S)):l.set(L,1),c>L&&d(L,c),c=L,`${m}${S}${i}${z}`}),e=fe(e,a,r.end.offset,s)}return e}function su(e,t){let i=ye("listItem",e);if(!i)return e;let n=/^((\d+[.)])|(- \[[ x]\]))/m,r=t;if(t=="consistent"){let a=i.length-1;for(;a>=0;){let s=e.substring(i[a].start.offset,i[a].end.offset);if(a--,!s.match(n)){r=s.charAt(0);break}}if(a==-1)return e}for(let a of i){let s=e.substring(a.start.offset,a.end.offset);s.match(n)||(s=r+s.substring(1),e=fe(e,a.start.offset,a.end.offset,s))}return e}function Fo(e,t){let i=ye("blockquote",e);for(let n of i){let r=n.end.offset;for(;r( |\t)*)+\$+$/m,l=e.substring(t,i);return l=l.replace(n,(d,c,u="")=>u===""?c+` +`+a:c+` +`),l=l.replace(r,(d,c="",u,m)=>{let g=c==="";return g&&o.test(s.trim())?d:g?` +`+a+u+m:` +`+u+m}),fe(e,t,i,l)}function Ia(e){let t=[...e.matchAll(cu)],i=[];for(let n of t){let r=zn(e,n.index);if(r===0)continue;let a=zn(e,r-1),s=n[0],o=e.substring(r,n.index+s.length);if(Xf(o,s))continue;let l=a,d=e.substring(a,r-1);if(!s.includes("|")&&!d.includes("|"))continue;d=d.replace(Bo,h=>{let v=h.trim();return v===""||v==="|"||(l+=h.length-1),""});let c=s.replace(Bo,"");if(d.endsWith("|")&&(d=d.slice(0,-1)),c.endsWith("|")&&(c=c.slice(0,-1)),d.split("|").length!==c.split("|").length)continue;let u=n.index+n[0].length;if(u>=e.length-1){i.push({startIndex:l,endIndex:e.length});continue}let m=e.substring(u+1).split(` +`),g=0;for(;g]/.test(i)}function lu(e){let t=0,i=[],n=[...e.matchAll(uu)];if(!n||n.length===0)return i;let r=[...e.matchAll(pu)];return n.forEach(a=>{t=a.index;let s=!1,o=e.length-1;for(;r&&r.length!==0&&!s;)if(r[0].index<=t)r.shift();else{s=!0;let l=r[0];o=l.index+l[0].length}i.push({startIndex:t,endIndex:o}),!r||r.length}),i.reverse()}var ji=/^([ \t]*)(#+)([ \t]+)([^\n\r]*?)([ \t]+#+)?$/gm,mu=`^XXX\\.*? +(?:((?:.| +)*?) +)?XXX(?=\\s|$)$`,Se=/^---\n((?:(((?!---)(?:.|\n)*?)\n)?))---(?=\n|$)/,ey=mu.replaceAll("X","`"),iy=mu.replaceAll("X","~"),ty=`^(( |( {4})).* +)+`,fS=new RegExp(`${ey}|${iy}|${ty}`,"gm"),_a=/(!?)\[{2}([^\][\n|]+)(\|([^\][\n|]+))?(\|([^\][\n|]+))?\]{2}/g,Cn=/(!?)\[([^[]*)\](\(.*\))/g,qn=/(\s|^)(#[^\s#;.,>\\s*)*",cu=/(\|? *:?-{1,}:? *\|?)(\| *:?-{1,}:? *\|?)*( |\t)*$/gm,Bo=/^(((>[ ]?)*)|([ ]{0,3}))\|/m,du=/[^\n]*?\|[^\n]*?(\n|$)/m,Wt=/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s`\]'"‘’“”>]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s`\]'"‘’“”>]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s`\]'"‘’“”>]{2,}|www\.[a-zA-Z0-9]+\.[^\s`\]'"‘’“”>]{2,})/gi,hu=/]+)>((?:.(?!<\/a>))*.)<\/a>/g,fu=/[\p{L}\p{N}\p{Pc}\p{M}\-'’`]+/gu,yu=/&[^\s]+;$/mi,uu=Su(!0),pu=Su(!1),bu=/[“”„«»]/g,vu=/[‘’‚‹›]/g,xu=/<%[^]*?%>/g;function Ke(e){return e.replace(/\$/g,"$$$$")}function In(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function wu(e){let t=e.match(_a);if(t){for(let i of t)if(i.includes("|")){let n=i.indexOf("|"),r=i.substring(0,n+1)+i.substring(n+1,i.length-2).trim()+"]]";e=e.replace(i,r)}}return e}function ku(e){let t=Ia(e);if(t.length===0)return e;for(let i of t)e=tt(e,i.startIndex,i.endIndex);return e}function Fa(e){let t=e.match(/^#\s+(.*)/m);if(t&&t[1]){let i=t[1];return i=i.replaceAll(_a,(n,r,a,s)=>s!=null?s.replace("|",""):a),i.replaceAll(Cn,"$2")}return""}function zu(e){return[...e.matchAll(qn)].map(t=>t[2])}function Su(e){let t="",i="";return e?i+="disable":i+="enable",new RegExp(t.replace("{ENDING_TEXT}",i),"g")}var Do="tag",_n="tags",Bn=[Do,_n],ny="alias",No="aliases",Fn=[ny,No],Rn="linter-yaml-title-alias";function bi(e){return e.match(Se)===null&&(e=`--- +--- +`+e),e}function Te(e,t){if(!e.match(Se))return e;let i=e.match(Se)[0],n=t(i);return e=e.replace(i,Ke(n)),e}function jo(e){return new RegExp(`^([\\t ]*)${e}:[ \\t]*(\\S.*|(?:(?:\\n *- \\S.*)|((?:\\n *- *))*|(\\n([ \\t]+[^\\n]*))*)*)\\n`,"m")}function Ae(e,t,i){let n=`${t}:${i} +`,r=!1,a=e.replace(jo(t),(s,o)=>(r=!0,o+n));return r||(a=`${e}${n}`),a}function Ee(e,t){let i=e.match(jo(t));return i==null?null:i[2]}function st(e,t){return e.replace(jo(t),"")}function Xe(e){if(e==null)return null;let t=io(e.replace(/\n(\t)+/g,` + `));return t??{}}function Qe(e,t,i,n){switch(typeof e=="string"&&(e=[e]),t){case"single-line":return e==null||e.length===0?" []":" "+Ro(e);case"multi-line":if(e==null||e.length===0)return` + - `;if(n)for(let r=0;ri!="");if(e.includes(` +`)){let t=e.split(/[ \t]*\n[ \t]*-[ \t]*/);return t.splice(0,1),t=t.filter(i=>i!=""),t==null||t.length===0?null:t}return e}function Da(e){if(e==null)return[];let t=[],i=[];Array.isArray(e)?i=e:e.includes(",")?i=Ra(e,","):i=Ra(e," ");for(let n of i)t.push(n.trim());return t}function Na(e){return typeof e=="string"?Ra(e,","):e}function Ra(e,t=","){if(e==""||e==null)return null;if(t.length>1)throw new Error(E("logs.invalid-delimiter-error-message"));let i=[],n="",r=0;for(;r1&&(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"'))}function xi(e,t,i=!1,n=!1){let r=ry(e,t,i);if(n)return r;try{if(io(r)===e)return r}catch{}let a=to(e,{lineWidth:-1,quotingType:t,forceQuotes:i}).slice(0,-1),s=to(e,{lineWidth:-1,quotingType:t=='"'?"'":'"',forceQuotes:i}).slice(0,-1);return s===e||s.length")&&(n=n.substring(3)),n.endsWith("

")&&(n=n.substring(0,n.length-4)),t.innerHTML=n}function ei(e){e.addClass("linter-visually-hidden")}function ki(e){e.removeClass("linter-visually-hidden")}var ot=class{constructor(t,i,n,r,a){this.configKey=t;this.nameKey=i;this.descriptionKey=n;this.defaultValue=r;a&&(this.ruleAlias=a)}getName(){return E(this.nameKey)??""}getDescription(){return E(this.descriptionKey)??""}getSearchInfo(){return{name:this.getName(),description:this.getDescription()}}setOption(t,i){i.ruleConfigs[this.ruleAlias][this.configKey]=t}parseNameAndDescriptionAndRemoveSettingBorder(t,i){wi(this.getName(),t.nameEl,i.settingsTab.component),wi(this.getDescription(),t.descEl,i.settingsTab.component),t.settingEl.style.border="none"}},Vt=class extends ot{display(i,n,r){let a=new Ut.Setting(i).addToggle(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},Dn=class extends ot{display(i,n,r){let a=new Ut.Setting(i).addText(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},Pa=class extends ot{display(i,n,r){let a=new Ut.Setting(i).addTextArea(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},Ka=class extends ot{display(i,n,r){let a=new Ut.Setting(i).addMomentFormat(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.setPlaceholder("dddd, MMMM Do YYYY, h:mm:ss a"),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},$a=class{constructor(t,i){this.value=t,this.description=i}getDisplayValue(){return E(this.value)??""}},Ha=class extends ot{constructor(i,n,r,a,s,o){super(i,n,r,a,o);this.options=s}getSearchInfo(){return{name:this.getName(),description:this.getDescription(),options:this.options}}display(i,n,r){let a=new Ut.Setting(i).addDropdown(s=>{for(let o of this.options)s.addOption(o.value.replace("enums.",""),o.getDisplayValue());s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveData(r.settings)})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}};var Pi=class extends Error{constructor(t,i){super(t),this.cause=i??null,this.stack=i.stack??null,Object.setPrototypeOf(this,Pi.prototype)}};var f={code:{replaceAction:"code",placeholder:"{CODE_BLOCK_PLACEHOLDER}"},inlineCode:{replaceAction:"inlineCode",placeholder:"{INLINE_CODE_BLOCK_PLACEHOLDER}"},image:{replaceAction:"image",placeholder:"{IMAGE_PLACEHOLDER}"},thematicBreak:{replaceAction:"thematicBreak",placeholder:"{HORIZONTAL_RULE_PLACEHOLDER}"},italics:{replaceAction:"emphasis",placeholder:"{ITALICS_PLACEHOLDER}"},bold:{replaceAction:"strong",placeholder:"{STRONG_PLACEHOLDER}"},list:{replaceAction:"list",placeholder:"{LIST_PLACEHOLDER}"},blockquote:{replaceAction:"blockquote",placeholder:"{BLOCKQUOTE_PLACEHOLDER}"},math:{replaceAction:"math",placeholder:"{MATH_PLACEHOLDER}"},inlineMath:{replaceAction:"inlineMath",placeholder:"{INLINE_MATH_PLACEHOLDER}"},html:{replaceAction:"html",placeholder:"{HTML_PLACEHOLDER}"},yaml:{replaceAction:Se,placeholder:Ke(`--- +---`)},wikiLink:{replaceAction:_a,placeholder:"{WIKI_LINK_PLACEHOLDER}"},obsidianMultiLineComments:{replaceAction:gu,placeholder:"{OBSIDIAN_COMMENT_PLACEHOLDER}"},footnoteAtStartOfLine:{replaceAction:/^(\[\^\w+\]) ?([,.;!:?])/gm,placeholder:"{FOOTNOTE_AT_START_OF_LINE_PLACEHOLDER}"},footnoteAfterATask:{replaceAction:/- \[.] (\[\^\w+\]) ?([,.;!:?])/gm,placeholder:"{FOOTNOTE_AFTER_A_TASK_PLACEHOLDER}"},url:{replaceAction:Wt,placeholder:"{URL_PLACEHOLDER}"},anchorTag:{replaceAction:hu,placeholder:"{ANCHOR_PLACEHOLDER}"},templaterCommand:{replaceAction:xu,placeholder:"{TEMPLATER_PLACEHOLDER}"},link:{replaceAction:oy,placeholder:"{REGULAR_LINK_PLACEHOLDER}"},tag:{replaceAction:ly,placeholder:"#tag-placeholder"},table:{replaceAction:cy,placeholder:"{TABLE_PLACEHOLDER}"},customIgnore:{replaceAction:dy,placeholder:"{CUSTOM_IGNORE_PLACEHOLDER}"}};function qe(e,t,i){let n=[];for(let r of e){let a;if(typeof r.replaceAction=="string")a=ay(t,r.placeholder,r.replaceAction);else if(r.replaceAction instanceof RegExp)a=sy(t,r.placeholder,r.replaceAction);else if(typeof r.replaceAction=="function"){let s=r.replaceAction;a=s(t,r.placeholder)}t=a.newText,n.push({replacedValues:a.replacedValues,placeholder:r.placeholder})}return t=i(t),n=n.reverse(),n!=null&&n.length>0&&n.forEach(r=>{r.replacedValues.forEach(a=>{t=t.replace(new RegExp(r.placeholder,"i"),Ke(a))})}),t}function ay(e,t,i){let n=ye(i,e),r=[];for(let a of n){let s=e.substring(a.start.offset,a.end.offset);r.push(s),e=fe(e,a.start.offset,a.end.offset,t)}return r.reverse(),{newText:e,replacedValues:r}}function sy(e,t,i){let n=e.match(i),r=[];if(i.flags.includes("g")){if(e=e.replaceAll(i,t),n)for(let a of n)r.push(a)}else e=e.replace(i,t),n&&r.push(n[0]);return{newText:e,replacedValues:r}}function oy(e,t){let i=ye("link",e),n=[];for(let r of i){if(r==null)continue;let a=e.substring(r.start.offset,r.end.offset);a.match(Cn)&&(n.push(a),e=fe(e,r.start.offset,r.end.offset,t))}return n.reverse(),{newText:e,replacedValues:n}}function ly(e,t){let i=[];return e=e.replace(qn,(n,r,a)=>(i.push(a),r+t)),{newText:e,replacedValues:i}}function cy(e,t){let i=Ia(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=fe(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}function dy(e,t){let i=lu(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=fe(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}var N=(s=>(s.YAML="YAML",s.HEADING="Heading",s.FOOTNOTE="Footnote",s.CONTENT="Content",s.SPACING="Spacing",s.PASTE="Paste",s))(N||{}),Ya=class{constructor(t,i,n,r,a,s,o,l=[],d=!1,c=[]){this.nameKey=t;this.descriptionKey=i;this.settingsKey=n;this.alias=r;this.type=a;this.applyAfterIgnore=s;this.examples=o;this.options=l;this.hasSpecialExecutionOrder=d;this.ignoreTypes=c;l.unshift(new Vt("enabled",this.descriptionKey,"",!1));for(let u of l)u.ruleAlias=r}getDefaultOptions(){let t={};for(let i of this.options)t[i.configKey]=i.defaultValue;return t}getOptions(t){return t.ruleConfigs[this.settingsKey]}getName(){return E(this.nameKey)}getDescription(){return E(this.descriptionKey)}getURL(){return"https://github.com/platers/obsidian-linter/blob/master/docs/rules.md"+"#"+this.alias}enabledOptionName(){return this.options[0].configKey}apply(t,i){return qe(this.ignoreTypes,t,n=>this.applyAfterIgnore(n,i))}},Wa=class{constructor(t,i,n,r={}){this.description=t,this.options=r,this.before=i,this.after=n}},Eu=Object.values(N);function Lu(e){let t=e.match(Se);if(!t)return[];let i=t[1],n=Ee(i,"disabled rules");if(n==null)return[];let r=n.includes(` +`)?`disabled rules: +`:"disabled rules: ";r+=n;let s=Xe(r)["disabled rules"];return s?(typeof s=="string"&&(s=[s]),s.includes("all")?Ki.map(o=>o.alias):s):[]}var Ki=[],uy={},Nn=new Map;function Ou(e){Ki.push(e),Ki.sort((t,i)=>Eu.indexOf(t.type)-Eu.indexOf(i.type)||t.settingsKey.localeCompare(i.settingsKey)),uy[e.alias]=e,Nn.has(e.type)?Nn.get(e.type).push(e):Nn.set(e.type,[e])}function Va(e,t){let i;throw e instanceof Ec?(i=e.toString(),i=E("logs.wrapper-yaml-error").replace("{ERROR_MESSAGE}",i.substring(i.indexOf(":")+1))):i=E("logs.wrapper-unknown-error").replace("{ERROR_MESSAGE}",e.message),new Pi(`"${t}" encountered an ${i}`,e)}var on=gn(Cu());function py(e){for(var t=[],i=1;in.example),t.optionBuilders.map(n=>n.option),t.hasSpecialExecutionOrder,t.ignoreTypes);Ue(ii,Qt).set(this.name,i),Ue(ii,jn).set(t.alias,t)}return Ue(ii,Qt).get(this.name)}static applyIfEnabledBase(t,i,n,r){let a=t.getOptions(n);if(a[t.enabledOptionName()]){let s=Object.assign({},a,r);fi(`${E("logs.run-rule-text")} ${t.getName()}`);try{return[t.apply(i,s),!0]}catch(o){Va(o,t.getName())}}else return[i,!1]}static getBuilderByName(t){return Ue(ii,jn).get(t)}static setNoSettingControl(t,i){Ue(ii,$i).has(t)||Ue(ii,$i).set(t,[]),Ue(ii,$i).get(t).push(i)}static hasSettingControl(t,i){return!Ue(ii,$i).has(t)||!Ue(ii,$i).get(t).includes(i)}},li=ii;Qt=new WeakMap,jn=new WeakMap,$i=new WeakMap,Bt(li,Qt,new Map),Bt(li,jn,new Map),Bt(li,$i,new Map);var b=class extends li{constructor(i){super();this.alias=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.settingsKey=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.nameKey=i.nameKey,this.descriptionKey=i.descriptionKey,this.type=i.type,this.hasSpecialExecutionOrder=i.hasSpecialExecutionOrder??!1,i.type==="Paste"?this.ignoreTypes=[]:i.ruleIgnoreTypes?this.ignoreTypes=[f.customIgnore,...i.ruleIgnoreTypes]:this.ignoreTypes=[f.customIgnore]}static register(i){let n=i.getRule();Ou(n)}safeApply(i,n){return this.apply(i,this.buildRuleOptions(n))}buildRuleOptions(i){i=i??{};let n=new this.OptionsClass,r=Object.assign(n,i);for(let a of this.optionBuilders)a.setRuleOption(r,i);return r}static applyIfEnabled(i,n,r,a){let s=this.getRule();return r.includes(s.alias)?(fi(s.alias+" "+E("logs.disabled-text")),[i,!1]):li.applyIfEnabledBase(s,i,n,a)}static getRuleOptions(i){let n=li.getRule.bind(this)(),r=new this,a=n.getOptions(i);return r.buildRuleOptions(a)}static noSettingControl(){return(i,n)=>{let r=i.constructor.name;li.setNoSettingControl(r,n)}}},Po,y=class{constructor(t){Bt(this,Po,void 0);this.example=new Wa(t.description,t.before,t.after,t.options)}};Po=new WeakMap;var Zt,Hi=class{constructor(t){Bt(this,Zt,void 0);this.OptionsClass=t.OptionsClass;let i=t.nameKey.split(".");i.length==1?this.configKey=i[0]:this.configKey=i[i.length-2],this.nameKey=t.nameKey,this.descriptionKey=t.descriptionKey,this.optionsKey=t.optionsKey}get defaultValue(){return new this.OptionsClass()[this.optionsKey]}get option(){return Ue(this,Zt)||jl(this,Zt,this.buildOption()),Ue(this,Zt)}setRuleOption(t,i){let n=i[this.configKey];n!==void 0&&(t[this.optionsKey]=n)}};Zt=new WeakMap;var U=class extends Hi{buildOption(){return new Vt(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},Ua=class extends Hi{buildOption(){return new Dn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},ne=class extends Hi{constructor(i){super(i);this.records=i.records.map(n=>new $a("enums."+n.value,n.description))}buildOption(){return new Ha(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue,this.records)}},be=class extends Hi{constructor(i){super(i);this.separator=i.separator??` +`,this.splitter=i.splitter??/\n/}buildOption(){return new Pa(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue.join(this.separator))}setRuleOption(i,n){if(n[this.configKey]!==void 0){let r=n[this.configKey].split(this.splitter).filter(function(a){return a!=""});i[this.optionsKey]=r}}},Ve=class extends Hi{buildOption(){return new Dn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},Ga=class extends Hi{buildOption(){return new Ka(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}};var Ko=new Map([["1nd","1st"],["2rd","2nd"],["2st","2nd"],["3nd","3rd"],["3st","3rd"],["4rd","4th"],["a-diaerers","a-diaereses"],["aaccess","access"],["aaccessibility","accessibility"],["aaccession","accession"],["aack","ack"],["aactual","actual"],["aactually","actually"],["aadd","add"],["aagain","again"],["aaggregation","aggregation"],["aanother","another"],["aapply","apply"],["aaproximate","approximate"],["aaproximated","approximated"],["aaproximately","approximately"],["aaproximates","approximates"],["aaproximating","approximating"],["aare","are"],["aassign","assign"],["aassignment","assignment"],["aassignments","assignments"],["aassociated","associated"],["aassumed","assumed"],["aautomatic","automatic"],["aautomatically","automatically"],["abailable","available"],["abanden","abandon"],["abandonded","abandoned"],["abandone","abandon"],["abandonned","abandoned"],["abandonning","abandoning"],["abbbreviated","abbreviated"],["abberation","aberration"],["abberations","aberrations"],["abberivates","abbreviates"],["abberration","aberration"],["abborted","aborted"],["abborting","aborting"],["abbrevate","abbreviate"],["abbrevation","abbreviation"],["abbrevations","abbreviations"],["abbreviaton","abbreviation"],["abbreviatons","abbreviations"],["abbriviate","abbreviate"],["abbriviation","abbreviation"],["abbriviations","abbreviations"],["aberation","aberration"],["abigious","ambiguous"],["abiguity","ambiguity"],["abilityes","abilities"],["abilties","abilities"],["abilty","ability"],["abiss","abyss"],["abitrarily","arbitrarily"],["abitrary","arbitrary"],["abitrate","arbitrate"],["abitration","arbitration"],["abizmal","abysmal"],["abnoramlly","abnormally"],["abnormalty","abnormally"],["abnormaly","abnormally"],["abnornally","abnormally"],["abnove","above"],["abnrormal","abnormal"],["aboluste","absolute"],["abolustely","absolutely"],["abolute","absolute"],["abondon","abandon"],["abondoned","abandoned"],["abondoning","abandoning"],["abondons","abandons"],["aboout","about"],["aborigene","aborigine"],["abortificant","abortifacient"],["aboslute","absolute"],["aboslutely","absolutely"],["abosulte","absolute"],["abosultely","absolutely"],["abosulute","absolute"],["abosulutely","absolutely"],["abotu","about"],["abount","about"],["aboutit","about it"],["aboutthe","about the"],["abouve","above"],["abov","above"],["aboved","above"],["abovemtioned","abovementioned"],["aboves","above"],["abovmentioned","abovementioned"],["abreviate","abbreviate"],["abreviated","abbreviated"],["abreviates","abbreviates"],["abreviating","abbreviating"],["abreviation","abbreviation"],["abreviations","abbreviations"],["abritrarily","arbitrarily"],["abritrary","arbitrary"],["abriviate","abbreviate"],["absail","abseil"],["absailing","abseiling"],["absance","absence"],["abscence","absence"],["abscound","abscond"],["abselutely","absolutely"],["abselutly","absolutely"],["absense","absence"],["absodefly","absolute"],["absodeflyly","absolutely"],["absolate","absolute"],["absolately","absolutely"],["absolaute","absolute"],["absolautely","absolutely"],["absoleted","obsoleted"],["absoletely","absolutely"],["absoliute","absolute"],["absoliutely","absolutely"],["absoloute","absolute"],["absoloutely","absolutely"],["absolte","absolute"],["absoltely","absolutely"],["absoltue","absolute"],["absoltuely","absolutely"],["absoluate","absolute"],["absoluately","absolutely"],["absolue","absolute"],["absoluely","absolutely"],["absoluet","absolute"],["absoluetly","absolutely"],["absolule","absolute"],["absolulte","absolute"],["absolultely","absolutely"],["absolune","absolute"],["absolunely","absolutely"],["absolure","absolute"],["absolurely","absolutely"],["absolut","absolute"],["absolutelly","absolutely"],["absoluth","absolute"],["absoluthe","absolute"],["absoluthely","absolutely"],["absoluthly","absolutely"],["absolutley","absolutely"],["absolutly","absolutely"],["absolutlye","absolutely"],["absoluute","absolute"],["absoluutely","absolutely"],["absoluve","absolute"],["absoluvely","absolutely"],["absoolute","absolute"],["absoolutely","absolutely"],["absorbant","absorbent"],["absorbsion","absorption"],["absorbtion","absorption"],["absorve","absorb"],["absould","absolute"],["absouldly","absolutely"],["absoule","absolute"],["absoulely","absolutely"],["absouletely","absolutely"],["absoult","absolute"],["absoulte","absolute"],["absoultely","absolutely"],["absoultly","absolutely"],["absoulute","absolute"],["absoulutely","absolutely"],["absout","absolute"],["absoute","absolute"],["absoutely","absolutely"],["absoutly","absolutely"],["abstact","abstract"],["abstacted","abstracted"],["abstacter","abstracter"],["abstacting","abstracting"],["abstaction","abstraction"],["abstactions","abstractions"],["abstactly","abstractly"],["abstactness","abstractness"],["abstactor","abstractor"],["abstacts","abstracts"],["abstanence","abstinence"],["abstrac","abstract"],["abstraced","abstracted"],["abstracer","abstracter"],["abstracing","abstracting"],["abstracion","abstraction"],["abstracions","abstractions"],["abstracly","abstractly"],["abstracness","abstractness"],["abstracor","abstractor"],["abstracs","abstracts"],["abstrat","abstract"],["abstrated","abstracted"],["abstrater","abstracter"],["abstrating","abstracting"],["abstration","abstraction"],["abstrations","abstractions"],["abstratly","abstractly"],["abstratness","abstractness"],["abstrator","abstractor"],["abstrats","abstracts"],["abstrct","abstract"],["abstrcted","abstracted"],["abstrcter","abstracter"],["abstrcting","abstracting"],["abstrction","abstraction"],["abstrctions","abstractions"],["abstrctly","abstractly"],["abstrctness","abstractness"],["abstrctor","abstractor"],["abstrcts","abstracts"],["absulute","absolute"],["absymal","abysmal"],["abtract","abstract"],["abtracted","abstracted"],["abtracter","abstracter"],["abtracting","abstracting"],["abtraction","abstraction"],["abtractions","abstractions"],["abtractly","abstractly"],["abtractness","abstractness"],["abtractor","abstractor"],["abtracts","abstracts"],["abudance","abundance"],["abudances","abundances"],["abundacies","abundances"],["abundancies","abundances"],["abundand","abundant"],["abundence","abundance"],["abundent","abundant"],["abundunt","abundant"],["abutts","abuts"],["abvailable","available"],["abvious","obvious"],["acadamy","academy"],["acadimy","academy"],["acadmic","academic"],["acale","scale"],["acatemy","academy"],["accademic","academic"],["accademy","academy"],["accapt","accept"],["accapted","accepted"],["accapts","accepts"],["acccept","accept"],["acccepted","accepted"],["acccepting","accepting"],["acccepts","accepts"],["accces","access"],["acccess","access"],["acccessd","accessed"],["acccessed","accessed"],["acccesses","accesses"],["acccessibility","accessibility"],["acccessible","accessible"],["acccessing","accessing"],["acccession","accession"],["acccessor","accessor"],["acccessors","accessors"],["acccord","accord"],["acccordance","accordance"],["acccordances","accordances"],["acccorded","accorded"],["acccording","according"],["acccordingly","accordingly"],["acccords","accords"],["acccount","account"],["acccumulate","accumulate"],["acccuracy","accuracy"],["acccurate","accurate"],["acccurately","accurately"],["acccused","accused"],["accecpt","accept"],["accecpted","accepted"],["accees","access"],["acceess","access"],["accelarate","accelerate"],["accelaration","acceleration"],["accelarete","accelerate"],["accelearion","acceleration"],["accelearte","accelerate"],["accelearted","accelerated"],["acceleartes","accelerates"],["acceleartion","acceleration"],["acceleartor","accelerator"],["acceleated","accelerated"],["acceleratoin","acceleration"],["acceleraton","acceleration"],["acceleratrion","acceleration"],["accelerte","accelerate"],["accelertion","acceleration"],["accellerate","accelerate"],["accellerated","accelerated"],["accellerating","accelerating"],["accelleration","acceleration"],["accellerator","accelerator"],["accending","ascending"],["acceot","accept"],["accepatble","acceptable"],["accepect","accept"],["accepected","accepted"],["accepeted","accepted"],["acceppt","accept"],["acceptence","acceptance"],["acceptible","acceptable"],["acceptted","accepted"],["acces","access"],["accesed","accessed"],["acceses","accesses"],["accesibility","accessibility"],["accesible","accessible"],["accesiblity","accessibility"],["accesiibility","accessibility"],["accesiiblity","accessibility"],["accesing","accessing"],["accesnt","accent"],["accesor","accessor"],["accesories","accessories"],["accesors","accessors"],["accesory","accessory"],["accessability","accessibility"],["accessable","accessible"],["accessbile","accessible"],["accessiable","accessible"],["accessibile","accessible"],["accessibiliity","accessibility"],["accessibilitiy","accessibility"],["accessibiltiy","accessibility"],["accessibilty","accessibility"],["accessiblilty","accessibility"],["accessiblity","accessibility"],["accessiibility","accessibility"],["accessiiblity","accessibility"],["accessile","accessible"],["accessintg","accessing"],["accessisble","accessible"],["accessoire","accessory"],["accessort","accessor"],["accesss","access"],["accesssibility","accessibility"],["accesssible","accessible"],["accesssiblity","accessibility"],["accesssiiblity","accessibility"],["accesssing","accessing"],["accesssor","accessor"],["accesssors","accessors"],["accet","accept"],["accetable","acceptable"],["accets","accepts"],["acchiev","achieve"],["acchievable","achievable"],["acchieve","achieve"],["acchieveable","achievable"],["acchieved","achieved"],["acchievement","achievement"],["acchievements","achievements"],["acchiever","achiever"],["acchieves","achieves"],["accidant","accident"],["acciddently","accidentally"],["accidentaly","accidentally"],["accidential","accidental"],["accidentially","accidentally"],["accidentically","accidentally"],["accidentilly","accidentally"],["accidentily","accidentally"],["accidently","accidentally"],["accidentually","accidentally"],["accidetly","accidentally"],["acciedential","accidental"],["acciednetally","accidentally"],["accient","accident"],["acciental","accidental"],["acclerated","accelerated"],["acclerates","accelerates"],["accleration","acceleration"],["acclerometers","accelerometers"],["acclimitization","acclimatization"],["accociate","associate"],["accociated","associated"],["accociates","associates"],["accociating","associating"],["accociation","association"],["accociations","associations"],["accoding","according"],["accodingly","accordingly"],["accodr","accord"],["accodrance","accordance"],["accodred","accorded"],["accodring","according"],["accodringly","accordingly"],["accodrs","accords"],["accointing","accounting"],["accoird","accord"],["accoirding","according"],["accomadate","accommodate"],["accomadated","accommodated"],["accomadates","accommodates"],["accomadating","accommodating"],["accomadation","accommodation"],["accomadations","accommodations"],["accomdate","accommodate"],["accomidate","accommodate"],["accommadate","accommodate"],["accommadates","accommodates"],["accommadating","accommodating"],["accommdated","accommodated"],["accomodata","accommodate"],["accomodate","accommodate"],["accomodated","accommodated"],["accomodates","accommodates"],["accomodating","accommodating"],["accomodation","accommodation"],["accomodations","accommodations"],["accompagned","accompanied"],["accompagnied","accompanied"],["accompagnies","accompanies"],["accompagniment","accompaniment"],["accompagning","accompanying"],["accompagny","accompany"],["accompagnying","accompanying"],["accompained","accompanied"],["accompanyed","accompanied"],["accompt","account"],["acconding","according"],["accont","account"],["accontant","accountant"],["acconted","accounted"],["acconting","accounting"],["accoording","according"],["accoordingly","accordingly"],["accoount","account"],["accopunt","account"],["accordding","according"],["accordeon","accordion"],["accordian","accordion"],["accordign","according"],["accordiingly","accordingly"],["accordinag","according"],["accordind","according"],["accordinly","accordingly"],["accordint","according"],["accordintly","accordingly"],["accordling","according"],["accordlingly","accordingly"],["accordng","according"],["accordngly","accordingly"],["accoriding","according"],["accoridng","according"],["accoridngly","accordingly"],["accoringly","accordingly"],["accorndingly","accordingly"],["accort","accord"],["accortance","accordance"],["accorted","accorded"],["accortind","according"],["accorting","according"],["accound","account"],["accouned","accounted"],["accoustic","acoustic"],["accoustically","acoustically"],["accoustics","acoustics"],["accout","account"],["accouting","accounting"],["accoutn","account"],["accpet","accept"],["accpets","accepts"],["accquainted","acquainted"],["accquire","acquire"],["accquired","acquired"],["accquires","acquires"],["accquiring","acquiring"],["accracy","accuracy"],["accrate","accurate"],["accrding","according"],["accrdingly","accordingly"],["accrediation","accreditation"],["accredidation","accreditation"],["accress","access"],["accroding","according"],["accrodingly","accordingly"],["accronym","acronym"],["accronyms","acronyms"],["accrording","according"],["accros","across"],["accrose","across"],["accross","across"],["accsess","access"],["accss","access"],["accssible","accessible"],["accssor","accessor"],["acctual","actual"],["accuarcy","accuracy"],["accuarte","accurate"],["accuartely","accurately"],["accumalate","accumulate"],["accumalates","accumulates"],["accumalator","accumulator"],["accumalte","accumulate"],["accumalted","accumulated"],["accumilated","accumulated"],["accumlate","accumulate"],["accumlated","accumulated"],["accumlates","accumulates"],["accumlating","accumulating"],["accumlator","accumulator"],["accummulating","accumulating"],["accummulators","accumulators"],["accumualte","accumulate"],["accumualtion","accumulation"],["accupied","occupied"],["accupts","accepts"],["accurable","accurate"],["accuraccies","accuracies"],["accuraccy","accuracy"],["accurancy","accuracy"],["accurarcy","accuracy"],["accuratelly","accurately"],["accuratley","accurately"],["accuratly","accurately"],["accurences","occurrences"],["accurracy","accuracy"],["accurring","occurring"],["accussed","accused"],["acditionally","additionally"],["acecess","access"],["acedemic","academic"],["acelerated","accelerated"],["acend","ascend"],["acendance","ascendance"],["acendancey","ascendancy"],["acended","ascended"],["acendence","ascendance"],["acendencey","ascendancy"],["acendency","ascendancy"],["acender","ascender"],["acending","ascending"],["acent","ascent"],["aceptable","acceptable"],["acerage","acreage"],["acess","access"],["acessable","accessible"],["acessed","accessed"],["acesses","accesses"],["acessible","accessible"],["acessing","accessing"],["acessor","accessor"],["acheive","achieve"],["acheived","achieved"],["acheivement","achievement"],["acheivements","achievements"],["acheives","achieves"],["acheiving","achieving"],["acheivment","achievement"],["acheivments","achievements"],["achievment","achievement"],["achievments","achievements"],["achitecture","architecture"],["achitectures","architectures"],["achivable","achievable"],["achivement","achievement"],["achivements","achievements"],["achor","anchor"],["achored","anchored"],["achoring","anchoring"],["achors","anchors"],["ACI","ACPI"],["acident","accident"],["acidental","accidental"],["acidentally","accidentally"],["acidents","accidents"],["acient","ancient"],["acients","ancients"],["ACII","ASCII"],["acition","action"],["acitions","actions"],["acitivate","activate"],["acitivation","activation"],["acitivity","activity"],["acitvate","activate"],["acitve","active"],["acivate","activate"],["acive","active"],["acknodledgment","acknowledgment"],["acknodledgments","acknowledgments"],["acknoledge","acknowledge"],["acknoledged","acknowledged"],["acknoledges","acknowledges"],["acknoledging","acknowledging"],["acknoledgment","acknowledgment"],["acknoledgments","acknowledgments"],["acknowldeged","acknowledged"],["acknowldegement","acknowledgement"],["acknowldegements","acknowledgements"],["acknowledgeing","acknowledging"],["acknowleding","acknowledging"],["acknowlege","acknowledge"],["acknowleged","acknowledged"],["acknowlegement","acknowledgement"],["acknowlegements","acknowledgements"],["acknowleges","acknowledges"],["acknowleging","acknowledging"],["acknowlegment","acknowledgment"],["ackowledge","acknowledge"],["ackowledged","acknowledged"],["ackowledgement","acknowledgement"],["ackowledgements","acknowledgements"],["ackowledges","acknowledges"],["ackowledging","acknowledging"],["acnowledge","acknowledge"],["acocunt","account"],["acommodate","accommodate"],["acommodated","accommodated"],["acommodates","accommodates"],["acommodating","accommodating"],["acommodation","accommodation"],["acommpany","accompany"],["acommpanying","accompanying"],["acomodate","accommodate"],["acomodated","accommodated"],["acompanies","accompanies"],["acomplish","accomplish"],["acomplished","accomplished"],["acomplishment","accomplishment"],["acomplishments","accomplishments"],["acontiguous","a contiguous"],["acoording","according"],["acoordingly","accordingly"],["acording","according"],["acordingly","accordingly"],["acordinng","according"],["acorss","across"],["acorting","according"],["acount","account"],["acounts","accounts"],["acquaintence","acquaintance"],["acquaintences","acquaintances"],["acquiantence","acquaintance"],["acquiantences","acquaintances"],["acquiesence","acquiescence"],["acquisiton","acquisition"],["acquisitons","acquisitions"],["acquited","acquitted"],["acquition","acquisition"],["acqure","acquire"],["acqured","acquired"],["acqures","acquires"],["acquring","acquiring"],["acqusition","acquisition"],["acqusitions","acquisitions"],["acrage","acreage"],["acroos","across"],["acrosss","across"],["acrue","accrue"],["acrued","accrued"],["acssume","assume"],["acssumed","assumed"],["actal","actual"],["actally","actually"],["actaly","actually"],["actaul","actual"],["actaully","actually"],["actial","actual"],["actially","actually"],["actialy","actually"],["actiavte","activate"],["actiavted","activated"],["actiavtes","activates"],["actiavting","activating"],["actiavtion","activation"],["actiavtions","activations"],["actiavtor","activator"],["actibity","activity"],["acticate","activate"],["actice","active"],["actine","active"],["actiual","actual"],["activ","active"],["activaed","activated"],["activationg","activating"],["actived","activated"],["activeta","activate"],["activete","activate"],["activeted","activated"],["activetes","activates"],["activiate","activate"],["activies","activities"],["activites","activities"],["activitis","activities"],["activitites","activities"],["activitiy","activity"],["activley","actively"],["activly","actively"],["activste","activate"],["activsted","activated"],["activstes","activates"],["activtes","activates"],["activties","activities"],["activtion","activation"],["activty","activity"],["activw","active"],["activy","activity"],["actove","active"],["actuaal","actual"],["actuaally","actually"],["actuak","actual"],["actuakly","actually"],["actuallin","actually"],["actualy","actually"],["actualyl","actually"],["actuell","actual"],["actuion","action"],["actuionable","actionable"],["actul","actual"],["actullay","actually"],["actully","actually"],["actural","actual"],["acturally","actually"],["actusally","actually"],["actve","active"],["actzal","actual"],["acual","actual"],["acually","actually"],["acuired","acquired"],["acuires","acquires"],["acumulate","accumulate"],["acumulated","accumulated"],["acumulates","accumulates"],["acumulating","accumulating"],["acumulation","accumulation"],["acumulative","accumulative"],["acumulator","accumulator"],["acuqire","acquire"],["acuracy","accuracy"],["acurate","accurate"],["acused","accused"],["acustom","accustom"],["acustommed","accustomed"],["acutal","actual"],["acutally","actually"],["acutual","actual"],["adapated","adapted"],["adapater","adapter"],["adapaters","adapters"],["adapative","adaptive"],["adapdive","adaptive"],["adapive","adaptive"],["adaptaion","adaptation"],["adaptare","adapter"],["adapte","adapter"],["adaptee","adapted"],["adaptes","adapters"],["adaptibe","adaptive"],["adaquate","adequate"],["adaquately","adequately"],["adatper","adapter"],["adatpers","adapters"],["adavance","advance"],["adavanced","advanced"],["adbandon","abandon"],["addapt","adapt"],["addaptation","adaptation"],["addaptations","adaptations"],["addapted","adapted"],["addapting","adapting"],["addapts","adapts"],["addd","add"],["addded","added"],["addding","adding"],["adddress","address"],["adddresses","addresses"],["addds","adds"],["addedd","added"],["addeed","added"],["addersses","addresses"],["addert","assert"],["adderted","asserted"],["addess","address"],["addessed","addressed"],["addesses","addresses"],["addessing","addressing"],["addied","added"],["addig","adding"],["addiional","additional"],["addiiton","addition"],["addiitonall","additional"],["addional","additional"],["addionally","additionally"],["addiotion","addition"],["addiotional","additional"],["addiotionally","additionally"],["addiotions","additions"],["additianal","additional"],["additianally","additionally"],["additinal","additional"],["additinally","additionally"],["additioanal","additional"],["additioanally","additionally"],["additioanlly","additionally"],["additiona","additional"],["additionallly","additionally"],["additionals","additional"],["additionaly","additionally"],["additionalyy","additionally"],["additionnal","additional"],["additionnally","additionally"],["additionnaly","additionally"],["additoin","addition"],["additoinal","additional"],["additoinally","additionally"],["additoinaly","additionally"],["additon","addition"],["additonal","additional"],["additonally","additionally"],["additonaly","additionally"],["addjust","adjust"],["addjusted","adjusted"],["addjusting","adjusting"],["addjusts","adjusts"],["addmission","admission"],["addmit","admit"],["addopt","adopt"],["addopted","adopted"],["addpress","address"],["addrass","address"],["addrees","address"],["addreess","address"],["addrerss","address"],["addrerssed","addressed"],["addrersser","addresser"],["addrersses","addresses"],["addrerssing","addressing"],["addrersss","address"],["addrersssed","addressed"],["addrerssser","addresser"],["addrerssses","addresses"],["addrersssing","addressing"],["addres","address"],["addresable","addressable"],["addresed","addressed"],["addreses","addresses"],["addresess","addresses"],["addresing","addressing"],["addressess","addresses"],["addressings","addressing"],["addresss","address"],["addresssed","addressed"],["addressses","addresses"],["addresssing","addressing"],["addrress","address"],["addrss","address"],["addrssed","addressed"],["addrsses","addresses"],["addrssing","addressing"],["addted","added"],["addtion","addition"],["addtional","additional"],["addtionally","additionally"],["addtitional","additional"],["adecuate","adequate"],["aded","added"],["adequit","adequate"],["adevnture","adventure"],["adevntured","adventured"],["adevnturer","adventurer"],["adevnturers","adventurers"],["adevntures","adventures"],["adevnturing","adventuring"],["adhearing","adhering"],["adherance","adherence"],["adiacent","adjacent"],["adiditon","addition"],["adin","admin"],["ading","adding"],["adition","addition"],["aditional","additional"],["aditionally","additionally"],["aditionaly","additionally"],["aditionnal","additional"],["adivsories","advisories"],["adivsoriyes","advisories"],["adivsory","advisory"],["adjacentsy","adjacency"],["adjactend","adjacent"],["adjancent","adjacent"],["adjascent","adjacent"],["adjasence","adjacence"],["adjasencies","adjacencies"],["adjasensy","adjacency"],["adjasent","adjacent"],["adjast","adjust"],["adjcence","adjacence"],["adjcencies","adjacencies"],["adjcent","adjacent"],["adjcentcy","adjacency"],["adjsence","adjacence"],["adjsencies","adjacencies"],["adjsuted","adjusted"],["adjuscent","adjacent"],["adjusment","adjustment"],["adjustement","adjustment"],["adjustements","adjustments"],["adjustificat","justification"],["adjustification","justification"],["adjustmant","adjustment"],["adjustmants","adjustments"],["adjustmenet","adjustment"],["admendment","amendment"],["admi","admin"],["admininistrative","administrative"],["admininistrator","administrator"],["admininistrators","administrators"],["admininstrator","administrator"],["administation","administration"],["administator","administrator"],["administor","administrator"],["administraively","administratively"],["adminitrator","administrator"],["adminssion","admission"],["adminstered","administered"],["adminstrate","administrate"],["adminstration","administration"],["adminstrative","administrative"],["adminstrator","administrator"],["adminstrators","administrators"],["admisible","admissible"],["admissability","admissibility"],["admissable","admissible"],["admited","admitted"],["admitedly","admittedly"],["admn","admin"],["admnistrator","administrator"],["admnistrators","administrators"],["adn","and"],["adobted","adopted"],["adolecent","adolescent"],["adpapted","adapted"],["adpat","adapt"],["adpated","adapted"],["adpater","adapter"],["adpaters","adapters"],["adpats","adapts"],["adpter","adapter"],["adquire","acquire"],["adquired","acquired"],["adquires","acquires"],["adquiring","acquiring"],["adrea","area"],["adrerss","address"],["adrerssed","addressed"],["adrersser","addresser"],["adrersses","addresses"],["adrerssing","addressing"],["adres","address"],["adresable","addressable"],["adresing","addressing"],["adress","address"],["adressable","addressable"],["adresse","address"],["adressed","addressed"],["adresses","addresses"],["adressing","addressing"],["adresss","address"],["adressses","addresses"],["adrress","address"],["adrresses","addresses"],["adtodetect","autodetect"],["adusted","adjusted"],["adustment","adjustment"],["advanatage","advantage"],["advanatages","advantages"],["advanatge","advantage"],["advandced","advanced"],["advane","advance"],["advaned","advanced"],["advantagous","advantageous"],["advanved","advanced"],["adventages","advantages"],["adventrous","adventurous"],["adverised","advertised"],["advertice","advertise"],["adverticed","advertised"],["advertisment","advertisement"],["advertisments","advertisements"],["advertistment","advertisement"],["advertistments","advertisements"],["advertize","advertise"],["advertized","advertised"],["advertizes","advertises"],["advesary","adversary"],["advetise","advertise"],["adviced","advised"],["adviseable","advisable"],["advisoriyes","advisories"],["advizable","advisable"],["adwances","advances"],["aequidistant","equidistant"],["aequivalent","equivalent"],["aeriel","aerial"],["aeriels","aerials"],["aesily","easily"],["aesy","easy"],["aexs","axes"],["afair","affair"],["afaraid","afraid"],["afe","safe"],["afecting","affecting"],["afer","after"],["aferwards","afterwards"],["afetr","after"],["affecfted","affected"],["afficianados","aficionados"],["afficionado","aficionado"],["afficionados","aficionados"],["affilate","affiliate"],["affilates","affiliates"],["affilation","affiliation"],["affilations","affiliations"],["affilliate","affiliate"],["affinitied","affinities"],["affinitiy","affinity"],["affinitze","affinitize"],["affinties","affinities"],["affintiy","affinity"],["affintize","affinitize"],["affinty","affinity"],["affitnity","affinity"],["afforementioned","aforementioned"],["affortable","affordable"],["afforts","affords"],["affraid","afraid"],["afinity","affinity"],["afor","for"],["aforememtioned","aforementioned"],["aforementiond","aforementioned"],["aforementionned","aforementioned"],["aformentioned","aforementioned"],["afterall","after all"],["afterw","after"],["aftrer","after"],["aftzer","after"],["againnst","against"],["againsg","against"],["againt","against"],["againts","against"],["agaisnt","against"],["agaist","against"],["agancies","agencies"],["agancy","agency"],["aganist","against"],["agant","agent"],["aggaravates","aggravates"],["aggegate","aggregate"],["aggessive","aggressive"],["aggessively","aggressively"],["agggregate","aggregate"],["aggragate","aggregate"],["aggragator","aggregator"],["aggrated","aggregated"],["aggreagate","aggregate"],["aggreataon","aggregation"],["aggreate","aggregate"],["aggreated","aggregated"],["aggreation","aggregation"],["aggreations","aggregations"],["aggreed","agreed"],["aggreement","agreement"],["aggregatet","aggregated"],["aggregetor","aggregator"],["aggreggate","aggregate"],["aggregious","egregious"],["aggregrate","aggregate"],["aggregrated","aggregated"],["aggresive","aggressive"],["aggresively","aggressively"],["aggrevate","aggravate"],["aggrgate","aggregate"],["agian","again"],["agianst","against"],["agin","again"],["aginst","against"],["aglorithm","algorithm"],["aglorithms","algorithms"],["agorithm","algorithm"],["agrain","again"],["agravate","aggravate"],["agre","agree"],["agred","agreed"],["agreeement","agreement"],["agreemnet","agreement"],["agreemnets","agreements"],["agreemnt","agreement"],["agregate","aggregate"],["agregated","aggregated"],["agregates","aggregates"],["agregation","aggregation"],["agregator","aggregator"],["agreing","agreeing"],["agrement","agreement"],["agression","aggression"],["agressive","aggressive"],["agressively","aggressively"],["agressiveness","aggressiveness"],["agressivity","aggressivity"],["agressor","aggressor"],["agresssive","aggressive"],["agrgument","argument"],["agrguments","arguments"],["agricultue","agriculture"],["agriculure","agriculture"],["agricuture","agriculture"],["agrieved","aggrieved"],["agrresive","aggressive"],["agrument","argument"],["agruments","arguments"],["agsinst","against"],["agument","argument"],["agumented","augmented"],["aguments","arguments"],["aheared","adhered"],["ahev","have"],["ahlpa","alpha"],["ahlpas","alphas"],["ahppen","happen"],["ahve","have"],["aicraft","aircraft"],["aiffer","differ"],["ailgn","align"],["aiport","airport"],["airator","aerator"],["airbourne","airborne"],["aircaft","aircraft"],["aircrafts'","aircraft's"],["aircrafts","aircraft"],["airfow","airflow"],["airlfow","airflow"],["airloom","heirloom"],["airporta","airports"],["airrcraft","aircraft"],["aisian","Asian"],["aixs","axis"],["aizmuth","azimuth"],["ajacence","adjacence"],["ajacencies","adjacencies"],["ajacency","adjacency"],["ajacent","adjacent"],["ajacentcy","adjacency"],["ajasence","adjacence"],["ajasencies","adjacencies"],["ajative","adjective"],["ajcencies","adjacencies"],["ajsencies","adjacencies"],["ajurnment","adjournment"],["ajust","adjust"],["ajusted","adjusted"],["ajustement","adjustment"],["ajusting","adjusting"],["ajustment","adjustment"],["ajustments","adjustments"],["ake","ache"],["akkumulate","accumulate"],["akkumulated","accumulated"],["akkumulates","accumulates"],["akkumulating","accumulating"],["akkumulation","accumulation"],["akkumulative","accumulative"],["akkumulator","accumulator"],["aknowledge","acknowledge"],["aks","ask"],["aksed","asked"],["aktivate","activate"],["aktivated","activated"],["aktivates","activates"],["aktivating","activating"],["aktivation","activation"],["akumulate","accumulate"],["akumulated","accumulated"],["akumulates","accumulates"],["akumulating","accumulating"],["akumulation","accumulation"],["akumulative","accumulative"],["akumulator","accumulator"],["alaready","already"],["albiet","albeit"],["albumns","albums"],["alcemy","alchemy"],["alchohol","alcohol"],["alchoholic","alcoholic"],["alchol","alcohol"],["alcholic","alcoholic"],["alcohal","alcohol"],["alcoholical","alcoholic"],["aleady","already"],["aleays","always"],["aledge","allege"],["aledged","alleged"],["aledges","alleges"],["alegance","allegiance"],["alege","allege"],["aleged","alleged"],["alegience","allegiance"],["alegorical","allegorical"],["alernate","alternate"],["alernated","alternated"],["alernately","alternately"],["alernates","alternates"],["alers","alerts"],["aleviate","alleviate"],["aleviates","alleviates"],["aleviating","alleviating"],["alevt","alert"],["algebraical","algebraic"],["algebric","algebraic"],["algebrra","algebra"],["algee","algae"],["alghorithm","algorithm"],["alghoritm","algorithm"],["alghoritmic","algorithmic"],["alghoritmically","algorithmically"],["alghoritms","algorithms"],["algined","aligned"],["alginment","alignment"],["alginments","alignments"],["algohm","algorithm"],["algohmic","algorithmic"],["algohmically","algorithmically"],["algohms","algorithms"],["algoirthm","algorithm"],["algoirthmic","algorithmic"],["algoirthmically","algorithmically"],["algoirthms","algorithms"],["algoithm","algorithm"],["algoithmic","algorithmic"],["algoithmically","algorithmically"],["algoithms","algorithms"],["algolithm","algorithm"],["algolithmic","algorithmic"],["algolithmically","algorithmically"],["algolithms","algorithms"],["algoorithm","algorithm"],["algoorithmic","algorithmic"],["algoorithmically","algorithmically"],["algoorithms","algorithms"],["algoprithm","algorithm"],["algoprithmic","algorithmic"],["algoprithmically","algorithmically"],["algoprithms","algorithms"],["algorgithm","algorithm"],["algorgithmic","algorithmic"],["algorgithmically","algorithmically"],["algorgithms","algorithms"],["algorhithm","algorithm"],["algorhithmic","algorithmic"],["algorhithmically","algorithmically"],["algorhithms","algorithms"],["algorhitm","algorithm"],["algorhitmic","algorithmic"],["algorhitmically","algorithmically"],["algorhitms","algorithms"],["algorhtm","algorithm"],["algorhtmic","algorithmic"],["algorhtmically","algorithmically"],["algorhtms","algorithms"],["algorhythm","algorithm"],["algorhythmic","algorithmic"],["algorhythmically","algorithmically"],["algorhythms","algorithms"],["algorhytm","algorithm"],["algorhytmic","algorithmic"],["algorhytmically","algorithmically"],["algorhytms","algorithms"],["algorightm","algorithm"],["algorightmic","algorithmic"],["algorightmically","algorithmically"],["algorightms","algorithms"],["algorihm","algorithm"],["algorihmic","algorithmic"],["algorihmically","algorithmically"],["algorihms","algorithms"],["algorihtm","algorithm"],["algorihtmic","algorithmic"],["algorihtmically","algorithmically"],["algorihtms","algorithms"],["algoristhms","algorithms"],["algorith","algorithm"],["algorithem","algorithm"],["algorithemic","algorithmic"],["algorithemically","algorithmically"],["algorithems","algorithms"],["algorithic","algorithmic"],["algorithically","algorithmically"],["algorithim","algorithm"],["algorithimes","algorithms"],["algorithimic","algorithmic"],["algorithimically","algorithmically"],["algorithims","algorithms"],["algorithmes","algorithms"],["algorithmi","algorithm"],["algorithmical","algorithmically"],["algorithmm","algorithm"],["algorithmmic","algorithmic"],["algorithmmically","algorithmically"],["algorithmms","algorithms"],["algorithmn","algorithm"],["algorithmnic","algorithmic"],["algorithmnically","algorithmically"],["algorithmns","algorithms"],["algoriths","algorithms"],["algorithsmic","algorithmic"],["algorithsmically","algorithmically"],["algorithsms","algorithms"],["algoritm","algorithm"],["algoritmic","algorithmic"],["algoritmically","algorithmically"],["algoritms","algorithms"],["algoroithm","algorithm"],["algoroithmic","algorithmic"],["algoroithmically","algorithmically"],["algoroithms","algorithms"],["algororithm","algorithm"],["algororithmic","algorithmic"],["algororithmically","algorithmically"],["algororithms","algorithms"],["algorothm","algorithm"],["algorothmic","algorithmic"],["algorothmically","algorithmically"],["algorothms","algorithms"],["algorrithm","algorithm"],["algorrithmic","algorithmic"],["algorrithmically","algorithmically"],["algorrithms","algorithms"],["algorritm","algorithm"],["algorritmic","algorithmic"],["algorritmically","algorithmically"],["algorritms","algorithms"],["algorthim","algorithm"],["algorthimic","algorithmic"],["algorthimically","algorithmically"],["algorthims","algorithms"],["algorthin","algorithm"],["algorthinic","algorithmic"],["algorthinically","algorithmically"],["algorthins","algorithms"],["algorthm","algorithm"],["algorthmic","algorithmic"],["algorthmically","algorithmically"],["algorthms","algorithms"],["algorthn","algorithm"],["algorthnic","algorithmic"],["algorthnically","algorithmically"],["algorthns","algorithms"],["algorthym","algorithm"],["algorthymic","algorithmic"],["algorthymically","algorithmically"],["algorthyms","algorithms"],["algorthyn","algorithm"],["algorthynic","algorithmic"],["algorthynically","algorithmically"],["algorthyns","algorithms"],["algortihm","algorithm"],["algortihmic","algorithmic"],["algortihmically","algorithmically"],["algortihms","algorithms"],["algortim","algorithm"],["algortimic","algorithmic"],["algortimically","algorithmically"],["algortims","algorithms"],["algortism","algorithm"],["algortismic","algorithmic"],["algortismically","algorithmically"],["algortisms","algorithms"],["algortithm","algorithm"],["algortithmic","algorithmic"],["algortithmically","algorithmically"],["algortithms","algorithms"],["algoruthm","algorithm"],["algoruthmic","algorithmic"],["algoruthmically","algorithmically"],["algoruthms","algorithms"],["algorwwithm","algorithm"],["algorwwithmic","algorithmic"],["algorwwithmically","algorithmically"],["algorwwithms","algorithms"],["algorythem","algorithm"],["algorythemic","algorithmic"],["algorythemically","algorithmically"],["algorythems","algorithms"],["algorythm","algorithm"],["algorythmic","algorithmic"],["algorythmically","algorithmically"],["algorythms","algorithms"],["algothitm","algorithm"],["algothitmic","algorithmic"],["algothitmically","algorithmically"],["algothitms","algorithms"],["algotighm","algorithm"],["algotighmic","algorithmic"],["algotighmically","algorithmically"],["algotighms","algorithms"],["algotihm","algorithm"],["algotihmic","algorithmic"],["algotihmically","algorithmically"],["algotihms","algorithms"],["algotirhm","algorithm"],["algotirhmic","algorithmic"],["algotirhmically","algorithmically"],["algotirhms","algorithms"],["algotithm","algorithm"],["algotithmic","algorithmic"],["algotithmically","algorithmically"],["algotithms","algorithms"],["algotrithm","algorithm"],["algotrithmic","algorithmic"],["algotrithmically","algorithmically"],["algotrithms","algorithms"],["alha","alpha"],["alhabet","alphabet"],["alhabetical","alphabetical"],["alhabetically","alphabetically"],["alhabeticaly","alphabetically"],["alhabets","alphabets"],["alhapet","alphabet"],["alhapetical","alphabetical"],["alhapetically","alphabetically"],["alhapeticaly","alphabetically"],["alhapets","alphabets"],["alhough","although"],["alhpa","alpha"],["alhpabet","alphabet"],["alhpabetical","alphabetical"],["alhpabetically","alphabetically"],["alhpabeticaly","alphabetically"],["alhpabets","alphabets"],["aliagn","align"],["aliasas","aliases"],["aliasses","aliases"],["alientating","alienating"],["aliged","aligned"],["alighned","aligned"],["alighnment","alignment"],["aligin","align"],["aligined","aligned"],["aligining","aligning"],["aliginment","alignment"],["aligins","aligns"],["aligment","alignment"],["aligments","alignments"],["alignation","alignment"],["alignd","aligned"],["aligne","align"],["alignement","alignment"],["alignemnt","alignment"],["alignemnts","alignments"],["alignemt","alignment"],["alignes","aligns"],["alignmant","alignment"],["alignmen","alignment"],["alignmenet","alignment"],["alignmenets","alignments"],["alignmenton","alignment on"],["alignmet","alignment"],["alignmets","alignments"],["alignmment","alignment"],["alignmments","alignments"],["alignmnet","alignment"],["alignmnt","alignment"],["alignrigh","alignright"],["alined","aligned"],["alinged","aligned"],["alinging","aligning"],["alingment","alignment"],["alinment","alignment"],["alinments","alignments"],["alising","aliasing"],["allcate","allocate"],["allcateing","allocating"],["allcater","allocator"],["allcaters","allocators"],["allcating","allocating"],["allcation","allocation"],["allcator","allocator"],["allcoate","allocate"],["allcoated","allocated"],["allcoateing","allocating"],["allcoateng","allocating"],["allcoater","allocator"],["allcoaters","allocators"],["allcoating","allocating"],["allcoation","allocation"],["allcoator","allocator"],["allcoators","allocators"],["alledge","allege"],["alledged","alleged"],["alledgedly","allegedly"],["alledges","alleges"],["allegedely","allegedly"],["allegedy","allegedly"],["allegely","allegedly"],["allegence","allegiance"],["allegience","allegiance"],["allif","all if"],["allign","align"],["alligned","aligned"],["allignement","alignment"],["allignemnt","alignment"],["alligning","aligning"],["allignment","alignment"],["allignmenterror","alignmenterror"],["allignments","alignments"],["alligns","aligns"],["alliviate","alleviate"],["allk","all"],["alllocate","allocate"],["alllocation","allocation"],["alllow","allow"],["alllowed","allowed"],["alllows","allows"],["allmost","almost"],["alloacate","allocate"],["allocae","allocate"],["allocaed","allocated"],["allocaes","allocates"],["allocagtor","allocator"],["allocaiing","allocating"],["allocaing","allocating"],["allocaion","allocation"],["allocaions","allocations"],["allocaite","allocate"],["allocaites","allocates"],["allocaiting","allocating"],["allocaition","allocation"],["allocaitions","allocations"],["allocaiton","allocation"],["allocaitons","allocations"],["allocal","allocate"],["allocarion","allocation"],["allocat","allocate"],["allocatbale","allocatable"],["allocatedi","allocated"],["allocatedp","allocated"],["allocateing","allocating"],["allocateng","allocating"],["allocaton","allocation"],["allocatoor","allocator"],["allocatote","allocate"],["allocatrd","allocated"],["allocattion","allocation"],["alloco","alloc"],["allocos","allocs"],["allocte","allocate"],["allocted","allocated"],["allocting","allocating"],["alloction","allocation"],["alloctions","allocations"],["alloctor","allocator"],["alloews","allows"],["allong","along"],["alloocates","allocates"],["allopone","allophone"],["allopones","allophones"],["allos","allows"],["alloted","allotted"],["allowence","allowance"],["allowences","allowances"],["allpication","application"],["allpications","applications"],["allso","also"],["allthough","although"],["alltough","although"],["allways","always"],["allwo","allow"],["allwos","allows"],["allws","allows"],["allwys","always"],["almoast","almost"],["almostly","almost"],["almsot","almost"],["alo","also"],["alocatable","allocatable"],["alocate","allocate"],["alocated","allocated"],["alocates","allocates"],["alocating","allocating"],["alocations","allocations"],["alochol","alcohol"],["alog","along"],["alogirhtm","algorithm"],["alogirhtmic","algorithmic"],["alogirhtmically","algorithmically"],["alogirhtms","algorithms"],["alogirthm","algorithm"],["alogirthmic","algorithmic"],["alogirthmically","algorithmically"],["alogirthms","algorithms"],["alogned","aligned"],["alogorithms","algorithms"],["alogrithm","algorithm"],["alogrithmic","algorithmic"],["alogrithmically","algorithmically"],["alogrithms","algorithms"],["alomst","almost"],["aloows","allows"],["alorithm","algorithm"],["alos","also"],["alotted","allotted"],["alow","allow"],["alowed","allowed"],["alowing","allowing"],["alows","allows"],["alpabet","alphabet"],["alpabetic","alphabetic"],["alpabetical","alphabetical"],["alpabets","alphabets"],["alpah","alpha"],["alpahabetical","alphabetical"],["alpahbetically","alphabetically"],["alph","alpha"],["alpha-numeric","alphanumeric"],["alphabeticaly","alphabetically"],["alphabeticly","alphabetical"],["alphapeicall","alphabetical"],["alphapeticaly","alphabetically"],["alrady","already"],["alraedy","already"],["alread","already"],["alreadly","already"],["alreadt","already"],["alreasy","already"],["alreay","already"],["alreayd","already"],["alreday","already"],["alredy","already"],["alrelady","already"],["alrms","alarms"],["alrogithm","algorithm"],["alrteady","already"],["als","also"],["alsmost","almost"],["alsot","also"],["alsready","already"],["altenative","alternative"],["alterated","altered"],["alterately","alternately"],["alterative","alternative"],["alteratives","alternatives"],["alterior","ulterior"],["alternaive","alternative"],["alternaives","alternatives"],["alternarive","alternative"],["alternarives","alternatives"],["alternatievly","alternatively"],["alternativey","alternatively"],["alternativley","alternatively"],["alternativly","alternatively"],["alternatve","alternative"],["alternavtely","alternatively"],["alternavtive","alternative"],["alternavtives","alternatives"],["alternetive","alternative"],["alternetives","alternatives"],["alternitive","alternative"],["alternitively","alternatively"],["alternitiveness","alternativeness"],["alternitives","alternatives"],["alternitivly","alternatively"],["altetnative","alternative"],["altho","although"],["althogh","although"],["althorithm","algorithm"],["althorithmic","algorithmic"],["althorithmically","algorithmically"],["althorithms","algorithms"],["althoug","although"],["althought","although"],["althougth","although"],["althouth","although"],["altitide","altitude"],["altitute","altitude"],["altogehter","altogether"],["altough","although"],["altought","although"],["altready","already"],["alue","value"],["alvorithm","algorithm"],["alvorithmic","algorithmic"],["alvorithmically","algorithmically"],["alvorithms","algorithms"],["alwais","always"],["alwas","always"],["alwast","always"],["alwasy","always"],["alwasys","always"],["alwauys","always"],["alway","always"],["alwyas","always"],["alwys","always"],["alyways","always"],["amacing","amazing"],["amacingly","amazingly"],["amalgomated","amalgamated"],["amatuer","amateur"],["amazaing","amazing"],["ambedded","embedded"],["ambibuity","ambiguity"],["ambien","ambient"],["ambigious","ambiguous"],["ambigous","ambiguous"],["ambiguious","ambiguous"],["ambiguitiy","ambiguity"],["ambiguos","ambiguous"],["ambitous","ambitious"],["ambuguity","ambiguity"],["ambulence","ambulance"],["ambulences","ambulances"],["amdgput","amdgpu"],["amendement","amendment"],["amendmant","amendment"],["Amercia","America"],["amerliorate","ameliorate"],["amgle","angle"],["amgles","angles"],["amiguous","ambiguous"],["amke","make"],["amking","making"],["ammend","amend"],["ammended","amended"],["ammending","amending"],["ammendment","amendment"],["ammendments","amendments"],["ammends","amends"],["ammong","among"],["ammongst","amongst"],["ammortizes","amortizes"],["ammoung","among"],["ammoungst","amongst"],["ammount","amount"],["ammused","amused"],["amny","many"],["amongs","among"],["amonst","amongst"],["amonut","amount"],["amound","amount"],["amounds","amounts"],["amoung","among"],["amoungst","amongst"],["amout","amount"],["amoutn","amount"],["amoutns","amounts"],["amouts","amounts"],["amperstands","ampersands"],["amphasis","emphasis"],["amplifer","amplifier"],["amplifyer","amplifier"],["amplitud","amplitude"],["ampty","empty"],["amuch","much"],["amung","among"],["amunition","ammunition"],["amunt","amount"],["analagous","analogous"],["analagus","analogous"],["analaog","analog"],["analgous","analogous"],["analig","analog"],["analise","analyse"],["analised","analysed"],["analiser","analyser"],["analising","analysing"],["analisis","analysis"],["analitic","analytic"],["analitical","analytical"],["analitically","analytically"],["analiticaly","analytically"],["analize","analyze"],["analized","analyzed"],["analizer","analyzer"],["analizes","analyzes"],["analizing","analyzing"],["analogeous","analogous"],["analogicaly","analogically"],["analoguous","analogous"],["analoguously","analogously"],["analogus","analogous"],["analouge","analogue"],["analouges","analogues"],["analsye","analyse"],["analsyed","analysed"],["analsyer","analyser"],["analsyers","analysers"],["analsyes","analyses"],["analsying","analysing"],["analsyis","analysis"],["analsyt","analyst"],["analsyts","analysts"],["analyis","analysis"],["analysator","analyser"],["analysus","analysis"],["analysy","analysis"],["analyticaly","analytically"],["analyticly","analytically"],["analyzator","analyzer"],["analzye","analyze"],["analzyed","analyzed"],["analzyer","analyzer"],["analzyers","analyzers"],["analzyes","analyzes"],["analzying","analyzing"],["ananlog","analog"],["anarchim","anarchism"],["anarchistm","anarchism"],["anarquism","anarchism"],["anarquist","anarchist"],["anaylse","analyse"],["anaylsed","analysed"],["anaylser","analyser"],["anaylses","analyses"],["anaylsis","analysis"],["anaylsises","analysises"],["anayltic","analytic"],["anayltical","analytical"],["anayltically","analytically"],["anayltics","analytics"],["anaylze","analyze"],["anaylzed","analyzed"],["anaylzer","analyzer"],["anaylzes","analyzes"],["anbd","and"],["ancapsulate","encapsulate"],["ancapsulated","encapsulated"],["ancapsulates","encapsulates"],["ancapsulating","encapsulating"],["ancapsulation","encapsulation"],["ancesetor","ancestor"],["ancesetors","ancestors"],["ancester","ancestor"],["ancesteres","ancestors"],["ancesters","ancestors"],["ancestore","ancestor"],["ancestores","ancestors"],["ancestory","ancestry"],["anchestor","ancestor"],["anchestors","ancestors"],["anchord","anchored"],["ancilliary","ancillary"],["andd","and"],["andoid","android"],["andoids","androids"],["andorid","android"],["andorids","androids"],["andriod","android"],["andriods","androids"],["androgenous","androgynous"],["androgeny","androgyny"],["androidextra","androidextras"],["androind","android"],["androinds","androids"],["andthe","and the"],["ane","and"],["anevironment","environment"],["anevironments","environments"],["angluar","angular"],["anhoter","another"],["anid","and"],["anihilation","annihilation"],["animaing","animating"],["animaite","animate"],["animaiter","animator"],["animaiters","animators"],["animaiton","animation"],["animaitons","animations"],["animaitor","animator"],["animaitors","animators"],["animaton","animation"],["animatonic","animatronic"],["animete","animate"],["animeted","animated"],["animetion","animation"],["animetions","animations"],["animets","animates"],["animore","anymore"],["aninate","animate"],["anination","animation"],["aniother","any other"],["anisotrophically","anisotropically"],["anitaliasing","antialiasing"],["anithing","anything"],["anitialising","antialiasing"],["anitime","anytime"],["anitrez","antirez"],["aniversary","anniversary"],["aniway","anyway"],["aniwhere","anywhere"],["anlge","angle"],["anlysis","analysis"],["anlyzing","analyzing"],["annayed","annoyed"],["annaying","annoying"],["annd","and"],["anniversery","anniversary"],["annnounce","announce"],["annoation","annotation"],["annoint","anoint"],["annointed","anointed"],["annointing","anointing"],["annoints","anoints"],["annonate","annotate"],["annonated","annotated"],["annonates","annotates"],["annonce","announce"],["annonced","announced"],["annoncement","announcement"],["annoncements","announcements"],["annonces","announces"],["annoncing","announcing"],["annonymous","anonymous"],["annotaion","annotation"],["annotaions","annotations"],["annoted","annotated"],["annother","another"],["annouce","announce"],["annouced","announced"],["annoucement","announcement"],["annoucements","announcements"],["annouces","announces"],["annoucing","announcing"],["annouing","annoying"],["announcment","announcement"],["announcments","announcements"],["announed","announced"],["announement","announcement"],["announements","announcements"],["annoymous","anonymous"],["annoyying","annoying"],["annualy","annually"],["annuled","annulled"],["annyoingly","annoyingly"],["anoher","another"],["anohter","another"],["anologon","analogon"],["anomally","anomaly"],["anomolies","anomalies"],["anomolous","anomalous"],["anomoly","anomaly"],["anonimity","anonymity"],["anononymous","anonymous"],["anonther","another"],["anonymouse","anonymous"],["anonyms","anonymous"],["anonymus","anonymous"],["anormalies","anomalies"],["anormaly","abnormally"],["anotate","annotate"],["anotated","annotated"],["anotates","annotates"],["anotating","annotating"],["anotation","annotation"],["anotations","annotations"],["anoter","another"],["anothe","another"],["anothers","another"],["anothr","another"],["anounce","announce"],["anounced","announced"],["anouncement","announcement"],["anount","amount"],["anoying","annoying"],["anoymous","anonymous"],["anroid","android"],["ansalisation","nasalisation"],["ansalization","nasalization"],["anser","answer"],["ansester","ancestor"],["ansesters","ancestors"],["ansestor","ancestor"],["ansestors","ancestors"],["answhare","answer"],["answhared","answered"],["answhareing","answering"],["answhares","answers"],["answharing","answering"],["answhars","answers"],["ansynchronous","asynchronous"],["antaliasing","antialiasing"],["antartic","antarctic"],["antecedant","antecedent"],["anteena","antenna"],["anteenas","antennas"],["anthing","anything"],["anthings","anythings"],["anthor","another"],["anthromorphization","anthropomorphization"],["anthropolgist","anthropologist"],["anthropolgy","anthropology"],["antialialised","antialiased"],["antialising","antialiasing"],["antiapartheid","anti-apartheid"],["anticpate","anticipate"],["antry","entry"],["antyhing","anything"],["anual","annual"],["anually","annually"],["anulled","annulled"],["anumber","a number"],["anuwhere","anywhere"],["anway","anyway"],["anways","anyway"],["anwhere","anywhere"],["anwser","answer"],["anwsered","answered"],["anwsering","answering"],["anwsers","answers"],["anyawy","anyway"],["anyhing","anything"],["anyhting","anything"],["anyhwere","anywhere"],["anylsing","analysing"],["anylzing","analyzing"],["anynmore","anymore"],["anyother","any other"],["anytghing","anything"],["anythig","anything"],["anythign","anything"],["anythimng","anything"],["anytiem","anytime"],["anytihng","anything"],["anyting","anything"],["anytning","anything"],["anytrhing","anything"],["anytthing","anything"],["anytying","anything"],["anywere","anywhere"],["anyy","any"],["aoache","apache"],["aond","and"],["aoto","auto"],["aotomate","automate"],["aotomated","automated"],["aotomatic","automatic"],["aotomatical","automatic"],["aotomaticall","automatically"],["aotomatically","automatically"],["aotomation","automation"],["aovid","avoid"],["apach","apache"],["apapted","adapted"],["aparant","apparent"],["aparantly","apparently"],["aparent","apparent"],["aparently","apparently"],["aparment","apartment"],["apdated","updated"],["apeal","appeal"],["apealed","appealed"],["apealing","appealing"],["apeals","appeals"],["apear","appear"],["apeared","appeared"],["apears","appears"],["apect","aspect"],["apects","aspects"],["apeends","appends"],["apend","append"],["apendage","appendage"],["apended","appended"],["apender","appender"],["apendices","appendices"],["apending","appending"],["apendix","appendix"],["apenines","Apennines"],["aperatures","apertures"],["aperure","aperture"],["aperures","apertures"],["apeture","aperture"],["apetures","apertures"],["apilogue","epilogue"],["aplha","alpha"],["aplication","application"],["aplications","applications"],["aplied","applied"],["aplies","applies"],["apllicatin","application"],["apllicatins","applications"],["apllication","application"],["apllications","applications"],["apllied","applied"],["apllies","applies"],["aplly","apply"],["apllying","applying"],["aply","apply"],["aplyed","applied"],["aplying","applying"],["apointed","appointed"],["apointing","appointing"],["apointment","appointment"],["apoints","appoints"],["apolegetic","apologetic"],["apolegetics","apologetics"],["aportionable","apportionable"],["apostrophie","apostrophe"],["apostrophies","apostrophes"],["appar","appear"],["apparant","apparent"],["apparantly","apparently"],["appared","appeared"],["apparence","appearance"],["apparenlty","apparently"],["apparenly","apparently"],["appares","appears"],["apparoches","approaches"],["appars","appears"],["appart","apart"],["appartment","apartment"],["appartments","apartments"],["appearaing","appearing"],["appearantly","apparently"],["appeareance","appearance"],["appearence","appearance"],["appearences","appearances"],["appearently","apparently"],["appeares","appears"],["appearning","appearing"],["appearrs","appears"],["appeciate","appreciate"],["appeded","appended"],["appeding","appending"],["appedn","append"],["appen","append"],["appendend","appended"],["appendent","appended"],["appendex","appendix"],["appendig","appending"],["appendign","appending"],["appendt","append"],["appeneded","appended"],["appenines","Apennines"],["appens","appends"],["appent","append"],["apperance","appearance"],["apperances","appearances"],["apperar","appear"],["apperarance","appearance"],["apperarances","appearances"],["apperared","appeared"],["apperaring","appearing"],["apperars","appears"],["appereance","appearance"],["appereances","appearances"],["appered","appeared"],["apperent","apparent"],["apperently","apparently"],["appers","appears"],["apperture","aperture"],["appicability","applicability"],["appicable","applicable"],["appicaliton","application"],["appicalitons","applications"],["appicant","applicant"],["appication","application"],["appication-specific","application-specific"],["appications","applications"],["appicative","applicative"],["appied","applied"],["appies","applies"],["applay","apply"],["applcation","application"],["applcations","applications"],["appliable","applicable"],["appliacable","applicable"],["appliaction","application"],["appliactions","applications"],["appliation","application"],["appliations","applications"],["applicabel","applicable"],["applicaion","application"],["applicaions","applications"],["applicaiton","application"],["applicaitons","applications"],["applicance","appliance"],["applicapility","applicability"],["applicaple","applicable"],["applicatable","applicable"],["applicaten","application"],["applicatin","application"],["applicatins","applications"],["applicatio","application"],["applicationb","application"],["applicatios","applications"],["applicatiosn","applications"],["applicaton","application"],["applicatons","applications"],["appliction","application"],["applictions","applications"],["applide","applied"],["applikation","application"],["applikations","applications"],["appllied","applied"],["applly","apply"],["applyable","applicable"],["applycable","applicable"],["applyed","applied"],["applyes","applies"],["applyied","applied"],["applyig","applying"],["applys","applies"],["applyting","applying"],["appned","append"],["appologies","apologies"],["appology","apology"],["appon","upon"],["appopriate","appropriate"],["apporach","approach"],["apporached","approached"],["apporaches","approaches"],["apporaching","approaching"],["apporiate","appropriate"],["apporoximate","approximate"],["apporoximated","approximated"],["apporpiate","appropriate"],["apporpriate","appropriate"],["apporpriated","appropriated"],["apporpriately","appropriately"],["apporpriates","appropriates"],["apporpriating","appropriating"],["apporpriation","appropriation"],["apporpriations","appropriations"],["apporval","approval"],["apporve","approve"],["apporved","approved"],["apporves","approves"],["apporving","approving"],["appoval","approval"],["appove","approve"],["appoved","approved"],["appoves","approves"],["appoving","approving"],["appoximate","approximate"],["appoximately","approximately"],["appoximates","approximates"],["appoximation","approximation"],["appoximations","approximations"],["apppear","appear"],["apppears","appears"],["apppend","append"],["apppends","appends"],["appplet","applet"],["appplication","application"],["appplications","applications"],["appplying","applying"],["apppriate","appropriate"],["appproach","approach"],["apppropriate","appropriate"],["appraoch","approach"],["appraochable","approachable"],["appraoched","approached"],["appraoches","approaches"],["appraoching","approaching"],["apprearance","appearance"],["apprently","apparently"],["appreteate","appreciate"],["appreteated","appreciated"],["appretiate","appreciate"],["appretiated","appreciated"],["appretiates","appreciates"],["appretiating","appreciating"],["appretiation","appreciation"],["appretiative","appreciative"],["apprieciate","appreciate"],["apprieciated","appreciated"],["apprieciates","appreciates"],["apprieciating","appreciating"],["apprieciation","appreciation"],["apprieciative","appreciative"],["appriopriate","appropriate"],["appripriate","appropriate"],["appriproate","appropriate"],["apprixamate","approximate"],["apprixamated","approximated"],["apprixamately","approximately"],["apprixamates","approximates"],["apprixamating","approximating"],["apprixamation","approximation"],["apprixamations","approximations"],["appriximate","approximate"],["appriximated","approximated"],["appriximately","approximately"],["appriximates","approximates"],["appriximating","approximating"],["appriximation","approximation"],["appriximations","approximations"],["approachs","approaches"],["approbiate","appropriate"],["approch","approach"],["approche","approach"],["approched","approached"],["approches","approaches"],["approching","approaching"],["approiate","appropriate"],["approopriate","appropriate"],["approoximate","approximate"],["approoximately","approximately"],["approoximates","approximates"],["approoximation","approximation"],["approoximations","approximations"],["approperiate","appropriate"],["appropiate","appropriate"],["appropiately","appropriately"],["approppriately","appropriately"],["appropraite","appropriate"],["appropraitely","appropriately"],["approprate","appropriate"],["approprated","appropriated"],["approprately","appropriately"],["appropration","appropriation"],["approprations","appropriations"],["appropriage","appropriate"],["appropriatedly","appropriately"],["appropriatee","appropriate"],["appropriatly","appropriately"],["appropriatness","appropriateness"],["appropriete","appropriate"],["appropritae","appropriate"],["appropritate","appropriate"],["appropritately","appropriately"],["approprite","appropriate"],["approproate","appropriate"],["appropropiate","appropriate"],["appropropiately","appropriately"],["appropropreate","appropriate"],["appropropriate","appropriate"],["approproximate","approximate"],["approproximately","approximately"],["approproximates","approximates"],["approproximation","approximation"],["approproximations","approximations"],["approprpiate","appropriate"],["approriate","appropriate"],["approriately","appropriately"],["approrpriate","appropriate"],["approrpriately","appropriately"],["approuval","approval"],["approuve","approve"],["approuved","approved"],["approuves","approves"],["approuving","approving"],["approvement","approval"],["approxamate","approximate"],["approxamately","approximately"],["approxamates","approximates"],["approxamation","approximation"],["approxamations","approximations"],["approxamatly","approximately"],["approxametely","approximately"],["approxiamte","approximate"],["approxiamtely","approximately"],["approxiamtes","approximates"],["approxiamtion","approximation"],["approxiamtions","approximations"],["approxiate","approximate"],["approxiately","approximately"],["approxiates","approximates"],["approxiation","approximation"],["approxiations","approximations"],["approximatively","approximately"],["approximatly","approximately"],["approximed","approximated"],["approximetely","approximately"],["approximitely","approximately"],["approxmate","approximate"],["approxmately","approximately"],["approxmates","approximates"],["approxmation","approximation"],["approxmations","approximations"],["approxmimation","approximation"],["apprpriate","appropriate"],["apprpriately","appropriately"],["appy","apply"],["appying","applying"],["apreciate","appreciate"],["apreciated","appreciated"],["apreciates","appreciates"],["apreciating","appreciating"],["apreciation","appreciation"],["apreciative","appreciative"],["aprehensive","apprehensive"],["apreteate","appreciate"],["apreteated","appreciated"],["apreteating","appreciating"],["apretiate","appreciate"],["apretiated","appreciated"],["apretiates","appreciates"],["apretiating","appreciating"],["apretiation","appreciation"],["apretiative","appreciative"],["aproach","approach"],["aproached","approached"],["aproaches","approaches"],["aproaching","approaching"],["aproch","approach"],["aproched","approached"],["aproches","approaches"],["aproching","approaching"],["aproove","approve"],["aprooved","approved"],["apropiate","appropriate"],["apropiately","appropriately"],["apropriate","appropriate"],["apropriately","appropriately"],["aproval","approval"],["aproximate","approximate"],["aproximately","approximately"],["aproximates","approximates"],["aproximation","approximation"],["aproximations","approximations"],["aprrovement","approval"],["aprroximate","approximate"],["aprroximately","approximately"],["aprroximates","approximates"],["aprroximation","approximation"],["aprroximations","approximations"],["aprtment","apartment"],["aqain","again"],["aqcuire","acquire"],["aqcuired","acquired"],["aqcuires","acquires"],["aqcuiring","acquiring"],["aquaduct","aqueduct"],["aquaint","acquaint"],["aquaintance","acquaintance"],["aquainted","acquainted"],["aquainting","acquainting"],["aquaints","acquaints"],["aquiantance","acquaintance"],["aquire","acquire"],["aquired","acquired"],["aquires","acquires"],["aquiring","acquiring"],["aquisition","acquisition"],["aquisitions","acquisitions"],["aquit","acquit"],["aquitted","acquitted"],["arameters","parameters"],["aranged","arranged"],["arangement","arrangement"],["araound","around"],["ararbic","arabic"],["aray","array"],["arays","arrays"],["arbiatraily","arbitrarily"],["arbiatray","arbitrary"],["arbibtarily","arbitrarily"],["arbibtary","arbitrary"],["arbibtrarily","arbitrarily"],["arbibtrary","arbitrary"],["arbiitrarily","arbitrarily"],["arbiitrary","arbitrary"],["arbirarily","arbitrarily"],["arbirary","arbitrary"],["arbiratily","arbitrarily"],["arbiraty","arbitrary"],["arbirtarily","arbitrarily"],["arbirtary","arbitrary"],["arbirtrarily","arbitrarily"],["arbirtrary","arbitrary"],["arbitarary","arbitrary"],["arbitarily","arbitrarily"],["arbitary","arbitrary"],["arbitiarily","arbitrarily"],["arbitiary","arbitrary"],["arbitiraly","arbitrarily"],["arbitiray","arbitrary"],["arbitrailly","arbitrarily"],["arbitraily","arbitrarily"],["arbitraion","arbitration"],["arbitrairly","arbitrarily"],["arbitrairy","arbitrary"],["arbitral","arbitrary"],["arbitralily","arbitrarily"],["arbitrally","arbitrarily"],["arbitralrily","arbitrarily"],["arbitralry","arbitrary"],["arbitraly","arbitrary"],["arbitrarion","arbitration"],["arbitraryily","arbitrarily"],["arbitraryly","arbitrary"],["arbitratily","arbitrarily"],["arbitratiojn","arbitration"],["arbitraton","arbitration"],["arbitratrily","arbitrarily"],["arbitratrion","arbitration"],["arbitratry","arbitrary"],["arbitraty","arbitrary"],["arbitray","arbitrary"],["arbitriarily","arbitrarily"],["arbitriary","arbitrary"],["arbitrily","arbitrarily"],["arbitrion","arbitration"],["arbitriraly","arbitrarily"],["arbitriray","arbitrary"],["arbitrition","arbitration"],["arbitrtily","arbitrarily"],["arbitrty","arbitrary"],["arbitry","arbitrary"],["arbitryarily","arbitrarily"],["arbitryary","arbitrary"],["arbitual","arbitrary"],["arbitually","arbitrarily"],["arbitualy","arbitrary"],["arbituarily","arbitrarily"],["arbituary","arbitrary"],["arbiturarily","arbitrarily"],["arbiturary","arbitrary"],["arbort","abort"],["arborted","aborted"],["arborting","aborting"],["arborts","aborts"],["arbritary","arbitrary"],["arbritrarily","arbitrarily"],["arbritrary","arbitrary"],["arbtirarily","arbitrarily"],["arbtirary","arbitrary"],["arbtrarily","arbitrarily"],["arbtrary","arbitrary"],["arbutrarily","arbitrarily"],["arbutrary","arbitrary"],["arch-dependet","arch-dependent"],["arch-independet","arch-independent"],["archaelogical","archaeological"],["archaelogists","archaeologists"],["archaelogy","archaeology"],["archetect","architect"],["archetects","architects"],["archetectural","architectural"],["archetecturally","architecturally"],["archetecture","architecture"],["archiac","archaic"],["archictect","architect"],["archictecture","architecture"],["archictectures","architectures"],["archicture","architecture"],["archiecture","architecture"],["archiectures","architectures"],["archimedian","archimedean"],["architct","architect"],["architcts","architects"],["architcture","architecture"],["architctures","architectures"],["architecht","architect"],["architechts","architects"],["architechturally","architecturally"],["architechture","architecture"],["architechtures","architectures"],["architectual","architectural"],["architectur","architecture"],["architecturs","architectures"],["architecturse","architectures"],["architecure","architecture"],["architecures","architectures"],["architecutre","architecture"],["architecutres","architectures"],["architecuture","architecture"],["architecutures","architectures"],["architetcure","architecture"],["architetcures","architectures"],["architeture","architecture"],["architetures","architectures"],["architure","architecture"],["architures","architectures"],["archiv","archive"],["archivel","archival"],["archor","anchor"],["archtecture","architecture"],["archtectures","architectures"],["archtiecture","architecture"],["archtiectures","architectures"],["archtitecture","architecture"],["archtitectures","architectures"],["archtype","archetype"],["archtypes","archetypes"],["archvie","archive"],["archvies","archives"],["archving","archiving"],["arcitecture","architecture"],["arcitectures","architectures"],["arcive","archive"],["arcived","archived"],["arciver","archiver"],["arcives","archives"],["arciving","archiving"],["arcticle","article"],["Ardiuno","Arduino"],["are'nt","aren't"],["aready","already"],["areea","area"],["aren's","aren't"],["aren;t","aren't"],["arent'","aren't"],["arent","aren't"],["arent;","aren't"],["areodynamics","aerodynamics"],["argement","argument"],["argements","arguments"],["argemnt","argument"],["argemnts","arguments"],["argment","argument"],["argments","arguments"],["argmument","argument"],["argmuments","arguments"],["argreement","agreement"],["argreements","agreements"],["argubly","arguably"],["arguement","argument"],["arguements","arguments"],["arguemnt","argument"],["arguemnts","arguments"],["arguemtn","argument"],["arguemtns","arguments"],["arguents","arguments"],["argumant","argument"],["argumants","arguments"],["argumeent","argument"],["argumeents","arguments"],["argumement","argument"],["argumements","arguments"],["argumemnt","argument"],["argumemnts","arguments"],["argumeng","argument"],["argumengs","arguments"],["argumens","arguments"],["argumenst","arguments"],["argumentents","arguments"],["argumeny","argument"],["argumet","argument"],["argumetn","argument"],["argumetns","arguments"],["argumets","arguments"],["argumnet","argument"],["argumnets","arguments"],["argumnt","argument"],["argumnts","arguments"],["arhive","archive"],["arhives","archives"],["aribitary","arbitrary"],["aribiter","arbiter"],["aribrary","arbitrary"],["aribtrarily","arbitrarily"],["aribtrary","arbitrary"],["ariflow","airflow"],["arised","arose"],["arithemetic","arithmetic"],["arithemtic","arithmetic"],["arithmatic","arithmetic"],["arithmentic","arithmetic"],["arithmetc","arithmetic"],["arithmethic","arithmetic"],["arithmitic","arithmetic"],["aritmetic","arithmetic"],["aritrary","arbitrary"],["aritst","artist"],["arival","arrival"],["arive","arrive"],["arlready","already"],["armamant","armament"],["armistace","armistice"],["armonic","harmonic"],["arn't","aren't"],["arne't","aren't"],["arogant","arrogant"],["arogent","arrogant"],["aronud","around"],["aroud","around"],["aroudn","around"],["arouind","around"],["arounf","around"],["aroung","around"],["arount","around"],["arquitecture","architecture"],["arquitectures","architectures"],["arraay","array"],["arragement","arrangement"],["arraival","arrival"],["arral","array"],["arranable","arrangeable"],["arrance","arrange"],["arrane","arrange"],["arraned","arranged"],["arranement","arrangement"],["arranements","arrangements"],["arranent","arrangement"],["arranents","arrangements"],["arranes","arranges"],["arrang","arrange"],["arrangable","arrangeable"],["arrangaeble","arrangeable"],["arrangaelbe","arrangeable"],["arrangd","arranged"],["arrangde","arranged"],["arrangemenet","arrangement"],["arrangemenets","arrangements"],["arrangent","arrangement"],["arrangents","arrangements"],["arrangmeent","arrangement"],["arrangmeents","arrangements"],["arrangmenet","arrangement"],["arrangmenets","arrangements"],["arrangment","arrangement"],["arrangments","arrangements"],["arrangnig","arranging"],["arrangs","arranges"],["arrangse","arranges"],["arrangt","arrangement"],["arrangte","arrange"],["arrangteable","arrangeable"],["arrangted","arranged"],["arrangtement","arrangement"],["arrangtements","arrangements"],["arrangtes","arranges"],["arrangting","arranging"],["arrangts","arrangements"],["arraning","arranging"],["arranment","arrangement"],["arranments","arrangements"],["arrants","arrangements"],["arraows","arrows"],["arrary","array"],["arrayes","arrays"],["arre","are"],["arreay","array"],["arrengement","arrangement"],["arrengements","arrangements"],["arriveis","arrives"],["arrivial","arrival"],["arround","around"],["arrray","array"],["arrrays","arrays"],["arrrive","arrive"],["arrrived","arrived"],["arrrives","arrives"],["arrtibute","attribute"],["arrya","array"],["arryas","arrays"],["arrys","arrays"],["artcile","article"],["articaft","artifact"],["articafts","artifacts"],["artical","article"],["articals","articles"],["articat","artifact"],["articats","artifacts"],["artice","article"],["articel","article"],["articels","articles"],["artifac","artifact"],["artifacs","artifacts"],["artifcat","artifact"],["artifcats","artifacts"],["artifical","artificial"],["artifically","artificially"],["artihmetic","arithmetic"],["artilce","article"],["artillary","artillery"],["artuments","arguments"],["arugment","argument"],["arugments","arguments"],["arument","argument"],["aruments","arguments"],["arund","around"],["arvg","argv"],["asai","Asia"],["asain","Asian"],["asbolute","absolute"],["asbolutelly","absolutely"],["asbolutely","absolutely"],["asbtract","abstract"],["asbtracted","abstracted"],["asbtracter","abstracter"],["asbtracting","abstracting"],["asbtraction","abstraction"],["asbtractions","abstractions"],["asbtractly","abstractly"],["asbtractness","abstractness"],["asbtractor","abstractor"],["asbtracts","abstracts"],["ascconciated","associated"],["asceding","ascending"],["ascpect","aspect"],["ascpects","aspects"],["asdignment","assignment"],["asdignments","assignments"],["asemble","assemble"],["asembled","assembled"],["asembler","assembler"],["asemblers","assemblers"],["asembles","assembles"],["asemblies","assemblies"],["asembling","assembling"],["asembly","assembly"],["asendance","ascendance"],["asendancey","ascendancy"],["asendancy","ascendancy"],["asendence","ascendance"],["asendencey","ascendancy"],["asendency","ascendancy"],["asending","ascending"],["asent","ascent"],["aserted","asserted"],["asertion","assertion"],["asess","assess"],["asessment","assessment"],["asessments","assessments"],["asetic","ascetic"],["asfar","as far"],["asign","assign"],["asigned","assigned"],["asignee","assignee"],["asignees","assignees"],["asigning","assigning"],["asignmend","assignment"],["asignmends","assignments"],["asignment","assignment"],["asignor","assignor"],["asigns","assigns"],["asii","ascii"],["asisstant","assistant"],["asisstants","assistants"],["asistance","assistance"],["aske","ask"],["askes","asks"],["aslo","also"],["asnwer","answer"],["asnwered","answered"],["asnwerer","answerer"],["asnwerers","answerers"],["asnwering","answering"],["asnwers","answers"],["asny","any"],["asnychronoue","asynchronous"],["asociated","associated"],["asolute","absolute"],["asorbed","absorbed"],["aspected","expected"],["asphyxation","asphyxiation"],["assasin","assassin"],["assasinate","assassinate"],["assasinated","assassinated"],["assasinates","assassinates"],["assasination","assassination"],["assasinations","assassinations"],["assasined","assassinated"],["assasins","assassins"],["assassintation","assassination"],["asscciated","associated"],["assciated","associated"],["asscii","ASCII"],["asscociated","associated"],["asscoitaed","associated"],["assebly","assembly"],["assebmly","assembly"],["assembe","assemble"],["assembed","assembled"],["assembeld","assembled"],["assember","assembler"],["assemblys","assemblies"],["assemby","assembly"],["assemly","assembly"],["assemnly","assembly"],["assemple","assemble"],["assending","ascending"],["asser","assert"],["assersion","assertion"],["assertation","assertion"],["assertio","assertion"],["assertting","asserting"],["assesmenet","assessment"],["assesment","assessment"],["assesments","assessments"],["assessmant","assessment"],["assessmants","assessments"],["assgin","assign"],["assgined","assigned"],["assgining","assigning"],["assginment","assignment"],["assginments","assignments"],["assgins","assigns"],["assicate","associate"],["assicated","associated"],["assicates","associates"],["assicating","associating"],["assication","association"],["assications","associations"],["assiciate","associate"],["assiciated","associated"],["assiciates","associates"],["assiciation","association"],["assiciations","associations"],["asside","aside"],["assiged","assigned"],["assigend","assigned"],["assigh","assign"],["assighed","assigned"],["assighee","assignee"],["assighees","assignees"],["assigher","assigner"],["assighers","assigners"],["assighing","assigning"],["assighor","assignor"],["assighors","assignors"],["assighs","assigns"],["assiging","assigning"],["assigment","assignment"],["assigments","assignments"],["assigmnent","assignment"],["assignalble","assignable"],["assignement","assignment"],["assignements","assignments"],["assignemnt","assignment"],["assignemnts","assignments"],["assignemtn","assignment"],["assignend","assigned"],["assignenment","assignment"],["assignenmentes","assignments"],["assignenments","assignments"],["assignenmet","assignment"],["assignes","assigns"],["assignmenet","assignment"],["assignmens","assignments"],["assignmet","assignment"],["assignmetns","assignments"],["assignmnet","assignment"],["assignt","assign"],["assigntment","assignment"],["assihnment","assignment"],["assihnments","assignments"],["assime","assume"],["assined","assigned"],["assing","assign"],["assinged","assigned"],["assinging","assigning"],["assingled","assigned"],["assingment","assignment"],["assingned","assigned"],["assingnment","assignment"],["assings","assigns"],["assinment","assignment"],["assiocate","associate"],["assiocated","associated"],["assiocates","associates"],["assiocating","associating"],["assiocation","association"],["assiociate","associate"],["assiociated","associated"],["assiociates","associates"],["assiociating","associating"],["assiociation","association"],["assisance","assistance"],["assisant","assistant"],["assisants","assistants"],["assising","assisting"],["assisnate","assassinate"],["assistence","assistance"],["assistent","assistant"],["assit","assist"],["assitant","assistant"],["assition","assertion"],["assmbler","assembler"],["assmeble","assemble"],["assmebler","assembler"],["assmebles","assembles"],["assmebling","assembling"],["assmebly","assembly"],["assmelber","assembler"],["assmption","assumption"],["assmptions","assumptions"],["assmume","assume"],["assmumed","assumed"],["assmumes","assumes"],["assmuming","assuming"],["assmumption","assumption"],["assmumptions","assumptions"],["assoaiate","associate"],["assoaiated","associated"],["assoaiates","associates"],["assoaiating","associating"],["assoaiation","association"],["assoaiations","associations"],["assoaiative","associative"],["assocaited","associated"],["assocate","associate"],["assocated","associated"],["assocates","associates"],["assocating","associating"],["assocation","association"],["assocations","associations"],["assocciated","associated"],["assocciation","association"],["assocciations","associations"],["assocciative","associative"],["associatated","associated"],["associatd","associated"],["associatied","associated"],["associcate","associate"],["associcated","associated"],["associcates","associates"],["associcating","associating"],["associdated","associated"],["associeate","associate"],["associeated","associated"],["associeates","associates"],["associeating","associating"],["associeation","association"],["associeations","associations"],["associeted","associated"],["associte","associate"],["associted","associated"],["assocites","associates"],["associting","associating"],["assocition","association"],["associtions","associations"],["associtive","associative"],["associuated","associated"],["assoction","association"],["assoiated","associated"],["assoicate","associate"],["assoicated","associated"],["assoicates","associates"],["assoication","association"],["assoiciative","associative"],["assomption","assumption"],["assosciate","associate"],["assosciated","associated"],["assosciates","associates"],["assosciating","associating"],["assosiacition","association"],["assosiacitions","associations"],["assosiacted","associated"],["assosiate","associate"],["assosiated","associated"],["assosiates","associates"],["assosiating","associating"],["assosiation","association"],["assosiations","associations"],["assosiative","associative"],["assosication","assassination"],["assotiated","associated"],["assoziated","associated"],["asssassans","assassins"],["asssembler","assembler"],["asssembly","assembly"],["asssert","assert"],["asssertion","assertion"],["asssociate","associated"],["asssociated","associated"],["asssociation","association"],["asssume","assume"],["asssumes","assumes"],["asssuming","assuming"],["assualt","assault"],["assualted","assaulted"],["assuembly","assembly"],["assum","assume"],["assuma","assume"],["assumad","assumed"],["assumang","assuming"],["assumas","assumes"],["assumbe","assume"],["assumbed","assumed"],["assumbes","assumes"],["assumbing","assuming"],["assumend","assumed"],["assumking","assuming"],["assumme","assume"],["assummed","assumed"],["assummes","assumes"],["assumming","assuming"],["assumne","assume"],["assumned","assumed"],["assumnes","assumes"],["assumning","assuming"],["assumong","assuming"],["assumotion","assumption"],["assumotions","assumptions"],["assumpation","assumption"],["assumpted","assumed"],["assums","assumes"],["assumse","assumes"],["assumtion","assumption"],["assumtions","assumptions"],["assumtpion","assumption"],["assumtpions","assumptions"],["assumu","assume"],["assumud","assumed"],["assumue","assume"],["assumued","assumed"],["assumues","assumes"],["assumuing","assuming"],["assumung","assuming"],["assumuption","assumption"],["assumuptions","assumptions"],["assumus","assumes"],["assupmption","assumption"],["assuption","assumption"],["assuptions","assumptions"],["assurred","assured"],["assymetric","asymmetric"],["assymetrical","asymmetrical"],["assymetries","asymmetries"],["assymetry","asymmetry"],["assymmetric","asymmetric"],["assymmetrical","asymmetrical"],["assymmetries","asymmetries"],["assymmetry","asymmetry"],["assymptote","asymptote"],["assymptotes","asymptotes"],["assymptotic","asymptotic"],["assymptotically","asymptotically"],["assymthotic","asymptotic"],["assymtote","asymptote"],["assymtotes","asymptotes"],["assymtotic","asymptotic"],["assymtotically","asymptotically"],["asterices","asterisks"],["asteriod","asteroid"],["astethic","aesthetic"],["astethically","aesthetically"],["astethicism","aestheticism"],["astethics","aesthetics"],["asthetic","aesthetic"],["asthetical","aesthetical"],["asthetically","aesthetically"],["asthetics","aesthetics"],["astiimate","estimate"],["astiimation","estimation"],["asume","assume"],["asumed","assumed"],["asumes","assumes"],["asuming","assuming"],["asumption","assumption"],["asure","assure"],["aswell","as well"],["asychronize","asynchronize"],["asychronized","asynchronized"],["asychronous","asynchronous"],["asychronously","asynchronously"],["asycn","async"],["asycnhronous","asynchronous"],["asycnhronously","asynchronously"],["asycronous","asynchronous"],["asymetic","asymmetric"],["asymetric","asymmetric"],["asymetrical","asymmetrical"],["asymetricaly","asymmetrically"],["asymmeric","asymmetric"],["asynchnous","asynchronous"],["asynchonous","asynchronous"],["asynchonously","asynchronously"],["asynchornous","asynchronous"],["asynchoronous","asynchronous"],["asynchrnous","asynchronous"],["asynchrnously","asynchronously"],["asynchromous","asynchronous"],["asynchron","asynchronous"],["asynchroneously","asynchronously"],["asynchronious","asynchronous"],["asynchronlous","asynchronous"],["asynchrons","asynchronous"],["asynchroous","asynchronous"],["asynchrounous","asynchronous"],["asynchrounsly","asynchronously"],["asyncronous","asynchronous"],["asyncronously","asynchronously"],["asynnc","async"],["asynschron","asynchronous"],["atach","attach"],["atached","attached"],["ataching","attaching"],["atachment","attachment"],["atachments","attachments"],["atack","attack"],["atain","attain"],["atatch","attach"],["atatchable","attachable"],["atatched","attached"],["atatches","attaches"],["atatching","attaching"],["atatchment","attachment"],["atatchments","attachments"],["atempt","attempt"],["atempting","attempting"],["atempts","attempts"],["atendance","attendance"],["atended","attended"],["atendee","attendee"],["atends","attends"],["atention","attention"],["atheistical","atheistic"],["athenean","Athenian"],["atheneans","Athenians"],["ather","other"],["athiesm","atheism"],["athiest","atheist"],["athough","although"],["athron","athlon"],["athros","atheros"],["atleast","at least"],["atll","all"],["atmoic","atomic"],["atmoically","atomically"],["atomatically","automatically"],["atomical","atomic"],["atomicly","atomically"],["atomiticity","atomicity"],["atomtical","automatic"],["atomtically","automatically"],["atomticaly","automatically"],["atomticlly","automatically"],["atomticly","automatically"],["atorecovery","autorecovery"],["atorney","attorney"],["atquired","acquired"],["atribs","attribs"],["atribut","attribute"],["atribute","attribute"],["atributed","attributed"],["atributes","attributes"],["atrribute","attribute"],["atrributes","attributes"],["atrtribute","attribute"],["atrtributes","attributes"],["attaced","attached"],["attachd","attached"],["attachement","attachment"],["attachements","attachments"],["attachemnt","attachment"],["attachemnts","attachments"],["attachen","attach"],["attachged","attached"],["attachmant","attachment"],["attachmants","attachments"],["attachs","attaches"],["attachted","attached"],["attacs","attacks"],["attacthed","attached"],["attampt","attempt"],["attatch","attach"],["attatched","attached"],["attatches","attaches"],["attatching","attaching"],["attatchment","attachment"],["attatchments","attachments"],["attch","attach"],["attched","attached"],["attches","attaches"],["attching","attaching"],["attchment","attachment"],["attement","attempt"],["attemented","attempted"],["attementing","attempting"],["attements","attempts"],["attemp","attempt"],["attemped","attempted"],["attemping","attempting"],["attemppt","attempt"],["attemps","attempts"],["attemptes","attempts"],["attemptting","attempting"],["attemt","attempt"],["attemted","attempted"],["attemting","attempting"],["attemtp","attempt"],["attemtped","attempted"],["attemtping","attempting"],["attemtps","attempts"],["attemtpted","attempted"],["attemtpts","attempts"],["attemts","attempts"],["attendence","attendance"],["attendent","attendant"],["attendents","attendants"],["attened","attended"],["attennuation","attenuation"],["attension","attention"],["attented","attended"],["attentuation","attenuation"],["attentuations","attenuations"],["attepmpt","attempt"],["attept","attempt"],["attetntion","attention"],["attibute","attribute"],["attibuted","attributed"],["attibutes","attributes"],["attirbute","attribute"],["attirbutes","attributes"],["attiribute","attribute"],["attitide","attitude"],["attmept","attempt"],["attmpt","attempt"],["attnetion","attention"],["attosencond","attosecond"],["attosenconds","attoseconds"],["attrbiute","attribute"],["attrbute","attribute"],["attrbuted","attributed"],["attrbutes","attributes"],["attrbution","attribution"],["attrbutions","attributions"],["attribbute","attribute"],["attribiute","attribute"],["attribiutes","attributes"],["attribte","attribute"],["attribted","attributed"],["attribting","attributing"],["attribtue","attribute"],["attribtutes","attributes"],["attribude","attribute"],["attribue","attribute"],["attribues","attributes"],["attribuets","attributes"],["attribuite","attribute"],["attribuites","attributes"],["attribuition","attribution"],["attribure","attribute"],["attribured","attributed"],["attribures","attributes"],["attriburte","attribute"],["attriburted","attributed"],["attriburtes","attributes"],["attriburtion","attribution"],["attribut","attribute"],["attributei","attribute"],["attributen","attribute"],["attributess","attributes"],["attributred","attributed"],["attributs","attributes"],["attribye","attribute"],["attribyes","attributes"],["attribyte","attribute"],["attribytes","attributes"],["attriebute","attribute"],["attriebuted","attributed"],["attriebutes","attributes"],["attriebuting","attributing"],["attrirbute","attribute"],["attrirbuted","attributed"],["attrirbutes","attributes"],["attrirbution","attribution"],["attritube","attribute"],["attritubed","attributed"],["attritubes","attributes"],["attriubtes","attributes"],["attriubute","attribute"],["attrocities","atrocities"],["attrribute","attribute"],["attrributed","attributed"],["attrributes","attributes"],["attrribution","attribution"],["attrubite","attribute"],["attrubites","attributes"],["attrubte","attribute"],["attrubtes","attributes"],["attrubure","attribute"],["attrubures","attributes"],["attrubute","attribute"],["attrubutes","attributes"],["attrubyte","attribute"],["attrubytes","attributes"],["attruibute","attribute"],["attruibutes","attributes"],["atttached","attached"],["atttribute","attribute"],["atttributes","attributes"],["atuhenticate","authenticate"],["atuhenticated","authenticated"],["atuhenticates","authenticates"],["atuhenticating","authenticating"],["atuhentication","authentication"],["atuhenticator","authenticator"],["atuhenticators","authenticators"],["auccess","success"],["auccessive","successive"],["audeince","audience"],["audiance","audience"],["augest","August"],["augmnet","augment"],["augmnetation","augmentation"],["augmneted","augmented"],["augmneter","augmenter"],["augmneters","augmenters"],["augmnetes","augments"],["augmneting","augmenting"],["augmnets","augments"],["auguest","august"],["auhtor","author"],["auhtors","authors"],["aunthenticate","authenticate"],["aunthenticated","authenticated"],["aunthenticates","authenticates"],["aunthenticating","authenticating"],["aunthentication","authentication"],["aunthenticator","authenticator"],["aunthenticators","authenticators"],["auospacing","autospacing"],["auot","auto"],["auotmatic","automatic"],["auromated","automated"],["austrailia","Australia"],["austrailian","Australian"],["Australien","Australian"],["Austrlaian","Australian"],["autasave","autosave"],["autasaves","autosaves"],["autenticate","authenticate"],["autenticated","authenticated"],["autenticates","authenticates"],["autenticating","authenticating"],["autentication","authentication"],["autenticator","authenticator"],["autenticators","authenticators"],["authecate","authenticate"],["authecated","authenticated"],["authecates","authenticates"],["authecating","authenticating"],["authecation","authentication"],["authecator","authenticator"],["authecators","authenticators"],["authenaticate","authenticate"],["authenaticated","authenticated"],["authenaticates","authenticates"],["authenaticating","authenticating"],["authenatication","authentication"],["authenaticator","authenticator"],["authenaticators","authenticators"],["authencate","authenticate"],["authencated","authenticated"],["authencates","authenticates"],["authencating","authenticating"],["authencation","authentication"],["authencator","authenticator"],["authencators","authenticators"],["authenciate","authenticate"],["authenciated","authenticated"],["authenciates","authenticates"],["authenciating","authenticating"],["authenciation","authentication"],["authenciator","authenticator"],["authenciators","authenticators"],["authencicate","authenticate"],["authencicated","authenticated"],["authencicates","authenticates"],["authencicating","authenticating"],["authencication","authentication"],["authencicator","authenticator"],["authencicators","authenticators"],["authencity","authenticity"],["authencticate","authenticate"],["authencticated","authenticated"],["authencticates","authenticates"],["authencticating","authenticating"],["authenctication","authentication"],["authencticator","authenticator"],["authencticators","authenticators"],["authendicate","authenticate"],["authendicated","authenticated"],["authendicates","authenticates"],["authendicating","authenticating"],["authendication","authentication"],["authendicator","authenticator"],["authendicators","authenticators"],["authenenticate","authenticate"],["authenenticated","authenticated"],["authenenticates","authenticates"],["authenenticating","authenticating"],["authenentication","authentication"],["authenenticator","authenticator"],["authenenticators","authenticators"],["authenfie","authenticate"],["authenfied","authenticated"],["authenfies","authenticates"],["authenfiing","authenticating"],["authenfiion","authentication"],["authenfior","authenticator"],["authenfiors","authenticators"],["authenicae","authenticate"],["authenicaed","authenticated"],["authenicaes","authenticates"],["authenicaing","authenticating"],["authenicaion","authentication"],["authenicaor","authenticator"],["authenicaors","authenticators"],["authenicate","authenticate"],["authenicated","authenticated"],["authenicates","authenticates"],["authenicating","authenticating"],["authenication","authentication"],["authenicator","authenticator"],["authenicators","authenticators"],["authenificate","authenticate"],["authenificated","authenticated"],["authenificates","authenticates"],["authenificating","authenticating"],["authenification","authentication"],["authenificator","authenticator"],["authenificators","authenticators"],["authenitcate","authenticate"],["authenitcated","authenticated"],["authenitcates","authenticates"],["authenitcating","authenticating"],["authenitcation","authentication"],["authenitcator","authenticator"],["authenitcators","authenticators"],["autheniticate","authenticate"],["autheniticated","authenticated"],["autheniticates","authenticates"],["autheniticating","authenticating"],["authenitication","authentication"],["autheniticator","authenticator"],["autheniticators","authenticators"],["authenricate","authenticate"],["authenricated","authenticated"],["authenricates","authenticates"],["authenricating","authenticating"],["authenrication","authentication"],["authenricator","authenticator"],["authenricators","authenticators"],["authentation","authentication"],["authentcated","authenticated"],["authentciate","authenticate"],["authentciated","authenticated"],["authentciates","authenticates"],["authentciating","authenticating"],["authentciation","authentication"],["authentciator","authenticator"],["authentciators","authenticators"],["authenticaiton","authentication"],["authenticateion","authentication"],["authentiction","authentication"],["authentification","authentication"],["auther","author"],["autherisation","authorisation"],["autherise","authorise"],["autherization","authorization"],["autherize","authorize"],["authers","authors"],["authethenticate","authenticate"],["authethenticated","authenticated"],["authethenticates","authenticates"],["authethenticating","authenticating"],["authethentication","authentication"],["authethenticator","authenticator"],["authethenticators","authenticators"],["authethicate","authenticate"],["authethicated","authenticated"],["authethicates","authenticates"],["authethicating","authenticating"],["authethication","authentication"],["authethicator","authenticator"],["authethicators","authenticators"],["autheticate","authenticate"],["autheticated","authenticated"],["autheticates","authenticates"],["autheticating","authenticating"],["authetication","authentication"],["autheticator","authenticator"],["autheticators","authenticators"],["authetnicate","authenticate"],["authetnicated","authenticated"],["authetnicates","authenticates"],["authetnicating","authenticating"],["authetnication","authentication"],["authetnicator","authenticator"],["authetnicators","authenticators"],["authetnticate","authenticate"],["authetnticated","authenticated"],["authetnticates","authenticates"],["authetnticating","authenticating"],["authetntication","authentication"],["authetnticator","authenticator"],["authetnticators","authenticators"],["authobiographic","autobiographic"],["authobiography","autobiography"],["authoer","author"],["authoratative","authoritative"],["authorative","authoritative"],["authorded","authored"],["authorites","authorities"],["authorithy","authority"],["authoritiers","authorities"],["authorititive","authoritative"],["authoritive","authoritative"],["authorizeed","authorized"],["authror","author"],["authrored","authored"],["authrorisation","authorisation"],["authrorities","authorities"],["authrorization","authorization"],["authrors","authors"],["autimatic","automatic"],["autimatically","automatically"],["autmatically","automatically"],["auto-dependancies","auto-dependencies"],["auto-destrcut","auto-destruct"],["auto-genrated","auto-generated"],["auto-genratet","auto-generated"],["auto-genration","auto-generation"],["auto-negatiotiation","auto-negotiation"],["auto-negatiotiations","auto-negotiations"],["auto-negoatiation","auto-negotiation"],["auto-negoatiations","auto-negotiations"],["auto-negoation","auto-negotiation"],["auto-negoations","auto-negotiations"],["auto-negociation","auto-negotiation"],["auto-negociations","auto-negotiations"],["auto-negogtiation","auto-negotiation"],["auto-negogtiations","auto-negotiations"],["auto-negoitation","auto-negotiation"],["auto-negoitations","auto-negotiations"],["auto-negoptionsotiation","auto-negotiation"],["auto-negoptionsotiations","auto-negotiations"],["auto-negosiation","auto-negotiation"],["auto-negosiations","auto-negotiations"],["auto-negotaiation","auto-negotiation"],["auto-negotaiations","auto-negotiations"],["auto-negotaition","auto-negotiation"],["auto-negotaitions","auto-negotiations"],["auto-negotatiation","auto-negotiation"],["auto-negotatiations","auto-negotiations"],["auto-negotation","auto-negotiation"],["auto-negotations","auto-negotiations"],["auto-negothiation","auto-negotiation"],["auto-negothiations","auto-negotiations"],["auto-negotication","auto-negotiation"],["auto-negotications","auto-negotiations"],["auto-negotioation","auto-negotiation"],["auto-negotioations","auto-negotiations"],["auto-negotion","auto-negotiation"],["auto-negotionation","auto-negotiation"],["auto-negotionations","auto-negotiations"],["auto-negotions","auto-negotiations"],["auto-negotiotation","auto-negotiation"],["auto-negotiotations","auto-negotiations"],["auto-negotitaion","auto-negotiation"],["auto-negotitaions","auto-negotiations"],["auto-negotitation","auto-negotiation"],["auto-negotitations","auto-negotiations"],["auto-negotition","auto-negotiation"],["auto-negotitions","auto-negotiations"],["auto-negoziation","auto-negotiation"],["auto-negoziations","auto-negotiations"],["auto-realease","auto-release"],["auto-realeased","auto-released"],["autochtonous","autochthonous"],["autocmplete","autocomplete"],["autocmpleted","autocompleted"],["autocmpletes","autocompletes"],["autocmpleting","autocompleting"],["autocommiting","autocommitting"],["autoconplete","autocomplete"],["autoconpleted","autocompleted"],["autoconpletes","autocompletes"],["autoconpleting","autocompleting"],["autoconpletion","autocompletion"],["autocoomit","autocommit"],["autoctonous","autochthonous"],["autoeselect","autoselect"],["autofilt","autofilter"],["autofomat","autoformat"],["autoformating","autoformatting"],["autogenrated","autogenerated"],["autogenratet","autogenerated"],["autogenration","autogeneration"],["autogroping","autogrouping"],["autohorized","authorized"],["autoincrememnt","autoincrement"],["autoincrementive","autoincrement"],["automaatically","automatically"],["automagicaly","automagically"],["automaitc","automatic"],["automaitcally","automatically"],["automanifactured","automanufactured"],["automatcally","automatically"],["automatially","automatically"],["automaticallly","automatically"],["automaticaly","automatically"],["automaticalyl","automatically"],["automaticalyy","automatically"],["automaticlly","automatically"],["automaticly","automatically"],["autometic","automatic"],["autometically","automatically"],["automibile","automobile"],["automical","automatic"],["automically","automatically"],["automicaly","automatically"],["automicatilly","automatically"],["automiclly","automatically"],["automicly","automatically"],["automonomous","autonomous"],["automtic","automatic"],["automtically","automatically"],["autonagotiation","autonegotiation"],["autonegatiotiation","autonegotiation"],["autonegatiotiations","autonegotiations"],["autonegoatiation","autonegotiation"],["autonegoatiations","autonegotiations"],["autonegoation","autonegotiation"],["autonegoations","autonegotiations"],["autonegociated","autonegotiated"],["autonegociation","autonegotiation"],["autonegociations","autonegotiations"],["autonegogtiation","autonegotiation"],["autonegogtiations","autonegotiations"],["autonegoitation","autonegotiation"],["autonegoitations","autonegotiations"],["autonegoptionsotiation","autonegotiation"],["autonegoptionsotiations","autonegotiations"],["autonegosiation","autonegotiation"],["autonegosiations","autonegotiations"],["autonegotaiation","autonegotiation"],["autonegotaiations","autonegotiations"],["autonegotaition","autonegotiation"],["autonegotaitions","autonegotiations"],["autonegotatiation","autonegotiation"],["autonegotatiations","autonegotiations"],["autonegotation","autonegotiation"],["autonegotations","autonegotiations"],["autonegothiation","autonegotiation"],["autonegothiations","autonegotiations"],["autonegotication","autonegotiation"],["autonegotications","autonegotiations"],["autonegotioation","autonegotiation"],["autonegotioations","autonegotiations"],["autonegotion","autonegotiation"],["autonegotionation","autonegotiation"],["autonegotionations","autonegotiations"],["autonegotions","autonegotiations"],["autonegotiotation","autonegotiation"],["autonegotiotations","autonegotiations"],["autonegotitaion","autonegotiation"],["autonegotitaions","autonegotiations"],["autonegotitation","autonegotiation"],["autonegotitations","autonegotiations"],["autonegotition","autonegotiation"],["autonegotitions","autonegotiations"],["autonegoziation","autonegotiation"],["autonegoziations","autonegotiations"],["autoneogotiation","autonegotiation"],["autoneotiation","autonegotiation"],["autonogotiation","autonegotiation"],["autonymous","autonomous"],["autoonf","autoconf"],["autopsec","autospec"],["autor","author"],["autorealease","autorelease"],["autorisation","authorisation"],["autoritative","authoritative"],["autority","authority"],["autorization","authorization"],["autoropeat","autorepeat"],["autors","authors"],["autosae","autosave"],["autosavegs","autosaves"],["autosaveperodical","autosaveperiodical"],["autosence","autosense"],["autum","autumn"],["auxialiary","auxiliary"],["auxilaries","auxiliaries"],["auxilary","auxiliary"],["auxileries","auxiliaries"],["auxilery","auxiliary"],["auxiliar","auxiliary"],["auxillaries","auxiliaries"],["auxillary","auxiliary"],["auxilleries","auxiliaries"],["auxillery","auxiliary"],["auxilliaries","auxiliaries"],["auxilliary","auxiliary"],["auxiluary","auxiliary"],["auxliliary","auxiliary"],["avaiable","available"],["avaialable","available"],["avaialbale","available"],["avaialbe","available"],["avaialbel","available"],["avaialbility","availability"],["avaialble","available"],["avaiblable","available"],["avaible","available"],["avaiiability","availability"],["avaiiable","available"],["avaiibility","availability"],["avaiible","available"],["avaiilable","available"],["availaable","available"],["availabable","available"],["availabal","available"],["availabale","available"],["availabality","availability"],["availabble","available"],["availabe","available"],["availabed","available"],["availabel","available"],["availabele","available"],["availabelity","availability"],["availabillity","availability"],["availabilty","availability"],["availabke","available"],["availabl","available"],["availabled","available"],["availablen","available"],["availablity","availability"],["availabyl","available"],["availaiable","available"],["availaibility","availability"],["availaible","available"],["availailability","availability"],["availaility","availability"],["availalable","available"],["availalbe","available"],["availalble","available"],["availale","available"],["availaliable","available"],["availality","availability"],["availanle","available"],["availavble","available"],["availavility","availability"],["availavle","available"],["availbable","available"],["availbale","available"],["availbe","available"],["availble","available"],["availeable","available"],["availebilities","availabilities"],["availebility","availability"],["availeble","available"],["availiable","available"],["availibility","availability"],["availibilty","availability"],["availible","available"],["availlable","available"],["avalable","available"],["avalaible","available"],["avalance","avalanche"],["avaliable","available"],["avalibale","available"],["avalible","available"],["avaloable","available"],["avaluate","evaluate"],["avaluated","evaluated"],["avaluates","evaluates"],["avaluating","evaluating"],["avance","advance"],["avanced","advanced"],["avances","advances"],["avancing","advancing"],["avaoid","avoid"],["avaoidable","avoidable"],["avaoided","avoided"],["avarage","average"],["avarageing","averaging"],["avarege","average"],["avation","aviation"],["avcoid","avoid"],["avcoids","avoids"],["avdisories","advisories"],["avdisoriyes","advisories"],["avdisory","advisory"],["avengence","a vengeance"],["averageed","averaged"],["averagine","averaging"],["averload","overload"],["averloaded","overloaded"],["averloads","overloads"],["avertising","advertising"],["avgerage","average"],["aviable","available"],["avialable","available"],["avilability","availability"],["avilable","available"],["aviod","avoid"],["avioded","avoided"],["avioding","avoiding"],["aviods","avoids"],["avisories","advisories"],["avisoriyes","advisories"],["avisory","advisory"],["avod","avoid"],["avoded","avoided"],["avoding","avoiding"],["avods","avoids"],["avoidence","avoidance"],["avoind","avoid"],["avoinded","avoided"],["avoinding","avoiding"],["avoinds","avoids"],["avriable","variable"],["avriables","variables"],["avriant","variant"],["avriants","variants"],["avtive","active"],["awared","awarded"],["aweful","awful"],["awefully","awfully"],["awkard","awkward"],["awming","awning"],["awmings","awnings"],["awnser","answer"],["awnsered","answered"],["awnsers","answers"],["awoid","avoid"],["awsome","awesome"],["awya","away"],["axises","axes"],["axissymmetric","axisymmetric"],["axix","axis"],["axixsymmetric","axisymmetric"],["axpressed","expressed"],["aysnc","async"],["ayways","always"],["bacause","because"],["baceause","because"],["bacground","background"],["bacic","basic"],["backards","backwards"],["backbround","background"],["backbrounds","backgrounds"],["backedn","backend"],["backedns","backends"],["backgorund","background"],["backgorunds","backgrounds"],["backgound","background"],["backgounds","backgrounds"],["backgournd","background"],["backgournds","backgrounds"],["backgrond","background"],["backgronds","backgrounds"],["backgroound","background"],["backgroounds","backgrounds"],["backgroud","background"],["backgroudn","background"],["backgroudns","backgrounds"],["backgrouds","backgrounds"],["backgroun","background"],["backgroung","background"],["backgroungs","backgrounds"],["backgrouns","backgrounds"],["backgrount","background"],["backgrounts","backgrounds"],["backgrouund","background"],["backgrund","background"],["backgrunds","backgrounds"],["backgruond","background"],["backgruonds","backgrounds"],["backlght","backlight"],["backlghting","backlighting"],["backlghts","backlights"],["backned","backend"],["backneds","backends"],["backound","background"],["backounds","backgrounds"],["backpsace","backspace"],["backrefence","backreference"],["backrgound","background"],["backrgounds","backgrounds"],["backround","background"],["backrounds","backgrounds"],["backsapce","backspace"],["backslase","backslash"],["backslases","backslashes"],["backslashs","backslashes"],["backwad","backwards"],["backwardss","backwards"],["backware","backward"],["backwark","backward"],["backwrad","backward"],["bactracking","backtracking"],["bacup","backup"],["baed","based"],["bage","bag"],["bahaving","behaving"],["bahavior","behavior"],["bahavioral","behavioral"],["bahaviors","behaviors"],["bahaviour","behaviour"],["baisc","basic"],["baised","raised"],["bakc","back"],["bakcrefs","backrefs"],["bakends","backends"],["bakground","background"],["bakgrounds","backgrounds"],["bakup","backup"],["bakups","backups"],["bakward","backward"],["bakwards","backwards"],["balacing","balancing"],["balence","balance"],["baloon","balloon"],["baloons","balloons"],["balse","false"],["banannas","bananas"],["bandwdith","bandwidth"],["bandwdiths","bandwidths"],["bandwidht","bandwidth"],["bandwidthm","bandwidth"],["bandwitdh","bandwidth"],["bandwith","bandwidth"],["bankrupcy","bankruptcy"],["banlance","balance"],["banruptcy","bankruptcy"],["barbedos","barbados"],["bariier","barrier"],["barnch","branch"],["barnched","branched"],["barncher","brancher"],["barnchers","branchers"],["barnches","branches"],["barnching","branching"],["barriors","barriers"],["barrriers","barriers"],["barycentic","barycentric"],["basci","basic"],["bascially","basically"],["bascktrack","backtrack"],["basf","base"],["basicallly","basically"],["basicaly","basically"],["basiclly","basically"],["basicly","basically"],["basline","baseline"],["baslines","baselines"],["bassic","basic"],["bassically","basically"],["bastract","abstract"],["bastracted","abstracted"],["bastracter","abstracter"],["bastracting","abstracting"],["bastraction","abstraction"],["bastractions","abstractions"],["bastractly","abstractly"],["bastractness","abstractness"],["bastractor","abstractor"],["bastracts","abstracts"],["bateries","batteries"],["batery","battery"],["battaries","batteries"],["battary","battery"],["bbefore","before"],["bboolean","boolean"],["bbooleans","booleans"],["bcak","back"],["bcause","because"],["beable","be able"],["beacaon","beacon"],["beacause","because"],["beachead","beachhead"],["beacuse","because"],["beaon","beacon"],["bearword","bareword"],["beastiality","bestiality"],["beatiful","beautiful"],["beauracracy","bureaucracy"],["beaurocracy","bureaucracy"],["beaurocratic","bureaucratic"],["beause","because"],["beauti","beauty"],["beautiy","beauty"],["beautyfied","beautified"],["beautyfull","beautiful"],["beaviour","behaviour"],["bebongs","belongs"],["becaause","because"],["becacdd","because"],["becahse","because"],["becamae","became"],["becaouse","because"],["becase","because"],["becasue","because"],["becasuse","because"],["becauae","because"],["becauce","because"],["becaue","because"],["becaues","because"],["becaus","because"],["becausee","because"],["becauseq","because"],["becauses","because"],["becausw","because"],["beccause","because"],["bechmark","benchmark"],["bechmarked","benchmarked"],["bechmarking","benchmarking"],["bechmarks","benchmarks"],["becoem","become"],["becomeing","becoming"],["becomme","become"],["becommes","becomes"],["becomming","becoming"],["becoms","becomes"],["becouse","because"],["becoz","because"],["bector","vector"],["bectors","vectors"],["becuase","because"],["becuse","because"],["becxause","because"],["bedore","before"],["beeings","beings"],["beetween","between"],["beetwen","between"],["beffer","buffer"],["befoer","before"],["befor","before"],["beforehands","beforehand"],["beforere","before"],["befores","before"],["beforing","before"],["befure","before"],["begginer","beginner"],["begginers","beginners"],["beggingin","beginning"],["begginging","beginning"],["begginig","beginning"],["beggining","beginning"],["begginings","beginnings"],["begginnig","beginning"],["begginning","beginning"],["beggins","begins"],["beghavior","behavior"],["beghaviors","behaviors"],["begiinning","beginning"],["beginer","beginner"],["begines","begins"],["begining","beginning"],["beginining","beginning"],["begininings","beginnings"],["begininng","beginning"],["begininngs","beginnings"],["beginn","begin"],["beginnig","beginning"],["beginnin","beginning"],["beginnning","beginning"],["beginnnings","beginnings"],["behabior","behavior"],["behabiors","behaviors"],["behabiour","behaviour"],["behabiours","behaviours"],["behabviour","behaviour"],["behaivior","behavior"],["behaiviour","behaviour"],["behaiviuor","behaviour"],["behaivor","behavior"],["behaivors","behaviors"],["behaivour","behaviour"],["behaivoural","behavioural"],["behaivours","behaviours"],["behavioutr","behaviour"],["behaviro","behavior"],["behaviuor","behaviour"],["behavoir","behavior"],["behavoirs","behaviors"],["behavour","behaviour"],["behavriour","behaviour"],["behavriours","behaviours"],["behinde","behind"],["behvaiour","behaviour"],["behviour","behaviour"],["beigin","begin"],["beiginning","beginning"],["beind","behind"],["beinning","beginning"],["bejond","beyond"],["beleagured","beleaguered"],["beleif","belief"],["beleifable","believable"],["beleifed","believed"],["beleifing","believing"],["beleivable","believable"],["beleive","believe"],["beleived","believed"],["beleives","believes"],["beleiving","believing"],["beliefable","believable"],["beliefed","believed"],["beliefing","believing"],["beligum","belgium"],["beling","belong"],["belivable","believable"],["belive","believe"],["beliveable","believable"],["beliveably","believably"],["beliveble","believable"],["belivebly","believably"],["beliving","believing"],["belligerant","belligerent"],["bellweather","bellwether"],["belog","belong"],["beloging","belonging"],["belogs","belongs"],["belond","belong"],["beloning","belonging"],["belown","belong"],["belwo","below"],["bemusemnt","bemusement"],["benchamarked","benchmarked"],["benchamarking","benchmarking"],["benchamrk","benchmark"],["benchamrked","benchmarked"],["benchamrking","benchmarking"],["benchamrks","benchmarks"],["benchmkar","benchmark"],["benchmkared","benchmarked"],["benchmkaring","benchmarking"],["benchmkars","benchmarks"],["benchs","benches"],["benckmark","benchmark"],["benckmarked","benchmarked"],["benckmarking","benchmarking"],["benckmarks","benchmarks"],["benechmark","benchmark"],["benechmarked","benchmarked"],["benechmarking","benchmarking"],["benechmarks","benchmarks"],["beneeth","beneath"],["benefical","beneficial"],["beneficary","beneficiary"],["benefied","benefited"],["benefitial","beneficial"],["beneits","benefits"],["benetifs","benefits"],["beng","being"],["benhind","behind"],["benificial","beneficial"],["benifit","benefit"],["benifite","benefit"],["benifited","benefited"],["benifitial","beneficial"],["benifits","benefits"],["benig","being"],["beond","beyond"],["berforming","performing"],["bergamont","bergamot"],["Berkley","Berkeley"],["Bernouilli","Bernoulli"],["berween","between"],["besed","based"],["beseige","besiege"],["beseiged","besieged"],["beseiging","besieging"],["besure","be sure"],["beteeen","between"],["beteen","between"],["beter","better"],["beteween","between"],["betrween","between"],["bettern","better"],["bettween","between"],["betwean","between"],["betwee","between"],["betweed","between"],["betweeen","between"],["betweem","between"],["betweend","between"],["betweeness","betweenness"],["betweent","between"],["betwen","between"],["betwene","between"],["betwenn","between"],["betwern","between"],["betwween","between"],["beucase","because"],["beuracracy","bureaucracy"],["beutification","beautification"],["beutiful","beautiful"],["beutifully","beautifully"],["bever","never"],["bevore","before"],["bevorehand","beforehand"],["bevorhand","beforehand"],["beweeen","between"],["beween","between"],["bewteen","between"],["bewteeness","betweenness"],["beyone","beyond"],["beyong","beyond"],["beyound","beyond"],["bffer","buffer"],["bginning","beginning"],["bi-langual","bi-lingual"],["bianries","binaries"],["bianry","binary"],["biappicative","biapplicative"],["biddings","bidding"],["bidimentionnal","bidimensional"],["bidning","binding"],["bidnings","bindings"],["bigallic","bigalloc"],["bigining","beginning"],["biginning","beginning"],["biinary","binary"],["bilangual","bilingual"],["bilateraly","bilaterally"],["billingualism","bilingualism"],["billon","billion"],["bimask","bitmask"],["bimillenia","bimillennia"],["bimillenial","bimillennial"],["bimillenium","bimillennium"],["bimontly","bimonthly"],["binairy","binary"],["binanary","binary"],["binar","binary"],["binay","binary"],["bindins","bindings"],["binidng","binding"],["binominal","binomial"],["binraries","binaries"],["binrary","binary"],["bion","bio"],["birght","bright"],["birghten","brighten"],["birghter","brighter"],["birghtest","brightest"],["birghtness","brightness"],["biridectionality","bidirectionality"],["bisct","bisect"],["bisines","business"],["bisiness","business"],["bisnes","business"],["bisness","business"],["bistream","bitstream"],["bisunes","business"],["bisuness","business"],["bitamps","bitmaps"],["bitap","bitmap"],["bitfileld","bitfield"],["bitfilelds","bitfields"],["bitis","bits"],["bitmast","bitmask"],["bitnaps","bitmaps"],["bitwise-orring","bitwise-oring"],["bizare","bizarre"],["bizarely","bizarrely"],["bizzare","bizarre"],["bject","object"],["bjects","objects"],["blackslashes","backslashes"],["blaclist","blacklist"],["blaim","blame"],["blaimed","blamed"],["blanace","balance"],["blancked","blanked"],["blatent","blatant"],["blatently","blatantly"],["blbos","blobs"],["blcok","block"],["blcoks","blocks"],["bleading","bleeding"],["blessd","blessed"],["blessure","blessing"],["bletooth","bluetooth"],["bleutooth","bluetooth"],["blindy","blindly"],["Blitzkreig","Blitzkrieg"],["bload","bloat"],["bloaded","bloated"],["blocack","blockack"],["bloccks","blocks"],["blocekd","blocked"],["blockhain","blockchain"],["blockhains","blockchains"],["blockin","blocking"],["blockse","blocks"],["bloddy","bloody"],["blodk","block"],["bloek","bloke"],["bloekes","blokes"],["bloeks","blokes"],["bloekss","blokes"],["blohted","bloated"],["blokcer","blocker"],["blokchain","blockchain"],["blokchains","blockchains"],["blokcing","blocking"],["bloked","blocked"],["bloker","blocker"],["bloking","blocking"],["blong","belong"],["blonged","belonged"],["blonging","belonging"],["blongs","belongs"],["bloock","block"],["bloocks","blocks"],["bloted","bloated"],["bluestooth","bluetooth"],["bluetooh","bluetooth"],["bluetoot","bluetooth"],["bluetootn","bluetooth"],["blured","blurred"],["blutooth","bluetooth"],["bnecause","because"],["boads","boards"],["boardcast","broadcast"],["bocome","become"],["boddy","body"],["bodiese","bodies"],["bodydbuilder","bodybuilder"],["boelean","boolean"],["boeleans","booleans"],["boffer","buffer"],["bofore","before"],["bofy","body"],["boggus","bogus"],["bogos","bogus"],["bointer","pointer"],["bolean","boolean"],["boleen","boolean"],["bolor","color"],["bombardement","bombardment"],["bombarment","bombardment"],["bondary","boundary"],["Bonnano","Bonanno"],["bood","boot"],["bookeeping","bookkeeping"],["bookkeeing","bookkeeping"],["bookkeeiping","bookkeeping"],["bookkepp","bookkeep"],["bookmakr","bookmark"],["bookmar","bookmark"],["booleam","boolean"],["booleamn","boolean"],["booleamns","booleans"],["booleams","booleans"],["booleanss","booleans"],["booleen","boolean"],["booleens","booleans"],["boolen","boolean"],["boolens","booleans"],["booltloader","bootloader"],["booltloaders","bootloaders"],["boomark","bookmark"],["boomarks","bookmarks"],["boook","book"],["booolean","boolean"],["boooleans","booleans"],["booshelf","bookshelf"],["booshelves","bookshelves"],["boostrap","bootstrap"],["boostrapped","bootstrapped"],["boostrapping","bootstrapping"],["boostraps","bootstraps"],["booteek","boutique"],["bootlaoder","bootloader"],["bootlaoders","bootloaders"],["bootoloader","bootloader"],["bootom","bottom"],["bootraping","bootstrapping"],["bootsram","bootram"],["bootsrap","bootstrap"],["bootstap","bootstrap"],["bootstapped","bootstrapped"],["bootstapping","bootstrapping"],["bootstaps","bootstraps"],["booundaries","boundaries"],["booundary","boundary"],["boquet","bouquet"],["borad","board"],["boradcast","broadcast"],["bording","boarding"],["bordreline","borderline"],["bordrelines","borderlines"],["borgwasy","bourgeoisie"],["borke","broke"],["borken","broken"],["borow","borrow"],["borwser","browsers"],["borwsers","browsers"],["bothe","both"],["boths","both"],["botifies","notifies"],["bottem","bottom"],["bottlenck","bottleneck"],["bottlencks","bottlenecks"],["bottlenect","bottleneck"],["bottlenects","bottlenecks"],["bottlneck","bottleneck"],["bottlnecks","bottlenecks"],["bottomborde","bottomborder"],["bottome","bottom"],["bottomn","bottom"],["bottonm","bottom"],["botttom","bottom"],["bouce","bounce"],["bouces","bounces"],["boudaries","boundaries"],["boudary","boundary"],["bouding","bounding"],["boudnaries","boundaries"],["boudnary","boundary"],["bouds","bounds"],["bouind","bound"],["bouinded","bounded"],["bouinding","bounding"],["bouinds","bounds"],["boun","bound"],["bounaaries","boundaries"],["bounaary","boundary"],["bounad","bound"],["bounadaries","boundaries"],["bounadary","boundary"],["bounaded","bounded"],["bounading","bounding"],["bounadries","boundaries"],["bounadry","boundary"],["bounads","bounds"],["bounardies","boundaries"],["bounardy","boundary"],["bounaries","boundaries"],["bounary","boundary"],["bounbdaries","boundaries"],["bounbdary","boundary"],["boundares","boundaries"],["boundaryi","boundary"],["boundarys","boundaries"],["bounday","boundary"],["boundays","boundaries"],["bounderies","boundaries"],["boundery","boundary"],["boundig","bounding"],["boundimg","bounding"],["boundin","bounding"],["boundrary","boundary"],["boundries","boundaries"],["boundry","boundary"],["bounduaries","boundaries"],["bouned","bounded"],["boungaries","boundaries"],["boungary","boundary"],["boungin","bounding"],["boungind","bounding"],["bounhdaries","boundaries"],["bounhdary","boundary"],["bounidng","bounding"],["bouning","bounding"],["bounnd","bound"],["bounndaries","boundaries"],["bounndary","boundary"],["bounnded","bounded"],["bounnding","bounding"],["bounnds","bounds"],["bounradies","boundaries"],["bounrady","boundary"],["bounraies","boundaries"],["bounraries","boundaries"],["bounrary","boundary"],["bounray","boundary"],["bouns","bounds"],["bounsaries","boundaries"],["bounsary","boundary"],["bounsd","bounds"],["bount","bound"],["bountries","boundaries"],["bountry","boundary"],["bounudaries","boundaries"],["bounudary","boundary"],["bounus","bonus"],["bouqet","bouquet"],["bouund","bound"],["bouunded","bounded"],["bouunding","bounding"],["bouunds","bounds"],["bouy","buoy"],["bouyancy","buoyancy"],["bouyant","buoyant"],["boyant","buoyant"],["boycot","boycott"],["bracese","braces"],["brach","branch"],["brackeds","brackets"],["bracketwith","bracket with"],["brackground","background"],["bradcast","broadcast"],["brakpoint","breakpoint"],["brakpoints","breakpoints"],["branchces","branches"],["brancheswith","branches with"],["branchs","branches"],["branchsi","branches"],["branck","branch"],["branckes","branches"],["brancket","bracket"],["branckets","brackets"],["brane","brain"],["braodcast","broadcast"],["braodcasted","broadcasted"],["braodcasts","broadcasts"],["Brasillian","Brazilian"],["brazeer","brassiere"],["brazillian","Brazilian"],["breakes","breaks"],["breakthough","breakthrough"],["breakthroughts","breakthroughs"],["breakthruogh","breakthrough"],["breakthruoghs","breakthroughs"],["breal","break"],["breefly","briefly"],["brefore","before"],["breif","brief"],["breifly","briefly"],["brekpoint","breakpoint"],["brekpoints","breakpoints"],["breshed","brushed"],["breshes","brushes"],["breshing","brushing"],["brethen","brethren"],["bretheren","brethren"],["brfore","before"],["bridg","bridge"],["brievely","briefly"],["brievety","brevity"],["brigde","bridge"],["brige","bridge"],["briges","bridges"],["brighness","brightness"],["brightnesss","brightness"],["brigth","bright"],["brigthnes","brightness"],["brigthness","brightness"],["briliant","brilliant"],["brilinear","bilinear"],["brillant","brilliant"],["brimestone","brimstone"],["bringin","bringing"],["bringtofont","bringtofront"],["brite","bright"],["briten","brighten"],["britened","brightened"],["britener","brightener"],["briteners","brighteners"],["britenes","brightenes"],["britening","brightening"],["briter","brighter"],["Britian","Britain"],["Brittish","British"],["brnach","branch"],["brnaches","branches"],["broacast","broadcast"],["broacasted","broadcast"],["broacasting","broadcasting"],["broacasts","broadcasts"],["broadacasting","broadcasting"],["broadcas","broadcast"],["broadcase","broadcast"],["broadcasti","broadcast"],["broadcat","broadcast"],["broady","broadly"],["broardcast","broadcast"],["broblematic","problematic"],["brocher","brochure"],["brocken","broken"],["brockend","broken"],["brockened","broken"],["brocolee","broccoli"],["brodcast","broadcast"],["broked","broken"],["brokem","broken"],["brokend","broken"],["brokened","broken"],["brokeness","brokenness"],["bronken","broken"],["brosable","browsable"],["broser","browser"],["brosers","browsers"],["brosing","browsing"],["broswable","browsable"],["broswe","browse"],["broswed","browsed"],["broswer","browser"],["broswers","browsers"],["broswing","browsing"],["brower","browser"],["browers","browsers"],["browing","browsing"],["browseable","browsable"],["browswable","browsable"],["browswe","browse"],["browswed","browsed"],["browswer","browser"],["browswers","browsers"],["browswing","browsing"],["brutaly","brutally"],["brwosable","browsable"],["brwose","browse"],["brwosed","browsed"],["brwoser","browser"],["brwosers","browsers"],["brwosing","browsing"],["btye","byte"],["btyes","bytes"],["buad","baud"],["bubbless","bubbles"],["Buddah","Buddha"],["Buddist","Buddhist"],["bufefr","buffer"],["bufer","buffer"],["bufers","buffers"],["buffereed","buffered"],["bufferent","buffered"],["bufferes","buffers"],["bufferred","buffered"],["buffeur","buffer"],["bufffer","buffer"],["bufffers","buffers"],["buffor","buffer"],["buffors","buffers"],["buffr","buffer"],["buffred","buffered"],["buffring","buffering"],["bufufer","buffer"],["buggest","biggest"],["bugous","bogus"],["buguous","bogus"],["bugus","bogus"],["buid","build"],["buider","builder"],["buiders","builders"],["buiding","building"],["buidl","build"],["buidling","building"],["buidlings","buildings"],["buidls","builds"],["buiild","build"],["buik","bulk"],["build-dependancies","build-dependencies"],["build-dependancy","build-dependency"],["build-in","built-in"],["builded","built"],["buildpackge","buildpackage"],["buildpackges","buildpackages"],["builing","building"],["builings","buildings"],["buillt","built"],["built-time","build-time"],["builter","builder"],["builters","builders"],["buinseses","businesses"],["buinsess","business"],["buinsesses","businesses"],["buipd","build"],["buisness","business"],["buisnessman","businessman"],["buissiness","business"],["buissinesses","businesses"],["buit","built"],["buitin","builtin"],["buitins","builtins"],["buitlin","builtin"],["buitlins","builtins"],["buitton","button"],["buittons","buttons"],["buld","build"],["bulding","building"],["bulds","builds"],["bulid","build"],["buliding","building"],["bulids","builds"],["bulit","built"],["bulitin","built-in"],["bulle","bullet"],["bulletted","bulleted"],["bulnerabilities","vulnerabilities"],["bulnerability","vulnerability"],["bulnerable","vulnerable"],["bult","built"],["bult-in","built-in"],["bultin","builtin"],["bumby","bumpy"],["bumpded","bumped"],["bumpt","bump"],["bumpted","bumped"],["bumpter","bumper"],["bumpting","bumping"],["bundel","bundle"],["bundeled","bundled"],["bundels","bundles"],["buoancy","buoyancy"],["bureauracy","bureaucracy"],["burocratic","bureaucratic"],["burried","buried"],["burtst","burst"],["busines","business"],["busness","business"],["bussiness","business"],["bussy","busy"],["buton","button"],["butons","buttons"],["butterly","butterfly"],["buttong","button"],["buttonn","button"],["buttonns","buttons"],["buttosn","buttons"],["buttton","button"],["butttons","buttons"],["buufers","buffers"],["buuild","build"],["buuilds","builds"],["bve","be"],["bwtween","between"],["bypas","bypass"],["bypased","bypassed"],["bypasing","bypassing"],["bytetream","bytestream"],["bytetreams","bytestreams"],["cabint","cabinet"],["cabints","cabinets"],["cacahe","cache"],["cacahes","caches"],["cace","cache"],["cachable","cacheable"],["cacheed","cached"],["cacheing","caching"],["cachline","cacheline"],["cacl","calc"],["caclate","calculate"],["cacluate","calculate"],["cacluated","calculated"],["cacluater","calculator"],["cacluates","calculates"],["cacluating","calculating"],["cacluation","calculation"],["cacluations","calculations"],["cacluator","calculator"],["caclucate","calculate"],["caclucation","calculation"],["caclucations","calculations"],["caclucator","calculator"],["caclulate","calculate"],["caclulated","calculated"],["caclulates","calculates"],["caclulating","calculating"],["caclulation","calculation"],["caclulations","calculations"],["caculate","calculate"],["caculated","calculated"],["caculater","calculator"],["caculates","calculates"],["caculating","calculating"],["caculation","calculation"],["caculations","calculations"],["caculator","calculator"],["cacuses","caucuses"],["cadidate","candidate"],["caefully","carefully"],["Caesarian","Caesarean"],["cahacter","character"],["cahacters","characters"],["cahange","change"],["cahanged","changed"],["cahanges","changes"],["cahanging","changing"],["cahannel","channel"],["caharacter","character"],["caharacters","characters"],["caharcter","character"],["caharcters","characters"],["cahc","cache"],["cahce","cache"],["cahced","cached"],["cahces","caches"],["cahche","cache"],["cahchedb","cachedb"],["cahches","caches"],["cahcing","caching"],["cahcs","caches"],["cahdidate","candidate"],["cahdidates","candidates"],["cahe","cache"],["cahes","caches"],["cahgne","change"],["cahgned","changed"],["cahgner","changer"],["cahgners","changers"],["cahgnes","changes"],["cahgning","changing"],["cahhel","channel"],["cahhels","channels"],["cahined","chained"],["cahing","caching"],["cahining","chaining"],["cahnge","change"],["cahnged","changed"],["cahnges","changes"],["cahnging","changing"],["cahnnel","channel"],["cahnnels","channels"],["cahr","char"],["cahracter","character"],["cahracters","characters"],["cahrging","charging"],["cahrs","chars"],["calaber","caliber"],["calalog","catalog"],["calback","callback"],["calbirate","calibrate"],["calbirated","calibrated"],["calbirates","calibrates"],["calbirating","calibrating"],["calbiration","calibration"],["calbirations","calibrations"],["calbirator","calibrator"],["calbirators","calibrators"],["calcable","calculable"],["calcalate","calculate"],["calciulate","calculate"],["calciulating","calculating"],["calclation","calculation"],["calcluate","calculate"],["calcluated","calculated"],["calcluates","calculates"],["calclulate","calculate"],["calclulated","calculated"],["calclulates","calculates"],["calclulating","calculating"],["calclulation","calculation"],["calclulations","calculations"],["calcualate","calculate"],["calcualated","calculated"],["calcualates","calculates"],["calcualating","calculating"],["calcualation","calculation"],["calcualations","calculations"],["calcualte","calculate"],["calcualted","calculated"],["calcualter","calculator"],["calcualtes","calculates"],["calcualting","calculating"],["calcualtion","calculation"],["calcualtions","calculations"],["calcualtor","calculator"],["calcuate","calculate"],["calcuated","calculated"],["calcuates","calculates"],["calcuation","calculation"],["calcuations","calculations"],["calculaion","calculation"],["calculataed","calculated"],["calculater","calculator"],["calculatted","calculated"],["calculatter","calculator"],["calculattion","calculation"],["calculattions","calculations"],["calculaution","calculation"],["calculautions","calculations"],["calculcate","calculate"],["calculcation","calculation"],["calculed","calculated"],["calculs","calculus"],["calcultate","calculate"],["calcultated","calculated"],["calcultater","calculator"],["calcultating","calculating"],["calcultator","calculator"],["calculting","calculating"],["calculuations","calculations"],["calcurate","calculate"],["calcurated","calculated"],["calcurates","calculates"],["calcurating","calculating"],["calcutate","calculate"],["calcutated","calculated"],["calcutates","calculates"],["calcutating","calculating"],["caleed","called"],["caleee","callee"],["calees","callees"],["caler","caller"],["calescing","coalescing"],["caliased","aliased"],["calibraiton","calibration"],["calibraitons","calibrations"],["calibrte","calibrate"],["calibrtion","calibration"],["caligraphy","calligraphy"],["calilng","calling"],["caliming","claiming"],["callabck","callback"],["callabcks","callbacks"],["callack","callback"],["callbacl","callback"],["callbacsk","callback"],["callbak","callback"],["callbakc","callback"],["callbakcs","callbacks"],["callbck","callback"],["callcack","callback"],["callcain","callchain"],["calld","called"],["calle","called"],["callef","called"],["callibrate","calibrate"],["callibrated","calibrated"],["callibrates","calibrates"],["callibrating","calibrating"],["callibration","calibration"],["callibrations","calibrations"],["callibri","calibri"],["callig","calling"],["callint","calling"],["callled","called"],["calllee","callee"],["calloed","called"],["callsr","calls"],["calsses","classes"],["calucalte","calculate"],["calucalted","calculated"],["calucaltes","calculates"],["calucalting","calculating"],["calucaltion","calculation"],["calucaltions","calculations"],["calucate","calculate"],["caluclate","calculate"],["caluclated","calculated"],["caluclater","calculator"],["caluclates","calculates"],["caluclating","calculating"],["caluclation","calculation"],["caluclations","calculations"],["caluclator","calculator"],["caluculate","calculate"],["caluculated","calculated"],["caluculates","calculates"],["caluculating","calculating"],["caluculation","calculation"],["caluculations","calculations"],["calue","value"],["calulate","calculate"],["calulated","calculated"],["calulater","calculator"],["calulates","calculates"],["calulating","calculating"],["calulation","calculation"],["calulations","calculations"],["Cambrige","Cambridge"],["camoflage","camouflage"],["camoflague","camouflage"],["campagin","campaign"],["campain","campaign"],["campaing","campaign"],["campains","campaigns"],["camparing","comparing"],["can;t","can't"],["canadan","canadian"],["canbe","can be"],["cancelaltion","cancellation"],["cancelation","cancellation"],["cancelations","cancellations"],["canceles","cancels"],["cancell","cancel"],["cancelles","cancels"],["cances","cancel"],["cancl","cancel"],["cancle","cancel"],["cancled","canceled"],["candadate","candidate"],["candadates","candidates"],["candiate","candidate"],["candiates","candidates"],["candidat","candidate"],["candidats","candidates"],["candidiate","candidate"],["candidiates","candidates"],["candinate","candidate"],["candinates","candidates"],["canditate","candidate"],["canditates","candidates"],["cange","change"],["canged","changed"],["canges","changes"],["canging","changing"],["canidate","candidate"],["canidates","candidates"],["cann't","can't"],["cann","can"],["cannister","canister"],["cannisters","canisters"],["cannnot","cannot"],["cannobt","cannot"],["cannonical","canonical"],["cannonicalize","canonicalize"],["cannont","cannot"],["cannotation","connotation"],["cannotations","connotations"],["cannott","cannot"],["canonalize","canonicalize"],["canonalized","canonicalized"],["canonalizes","canonicalizes"],["canonalizing","canonicalizing"],["canoncial","canonical"],["canonicalizations","canonicalization"],["canonival","canonical"],["canot","cannot"],["cant'","can't"],["cant't","can't"],["cant;","can't"],["cantact","contact"],["cantacted","contacted"],["cantacting","contacting"],["cantacts","contacts"],["canvase","canvas"],["caost","coast"],["capabable","capable"],["capabicity","capability"],["capabiities","capabilities"],["capabiity","capability"],["capabilies","capabilities"],["capabiliites","capabilities"],["capabilites","capabilities"],["capabilitieis","capabilities"],["capabilitiies","capabilities"],["capabilitires","capabilities"],["capabilitiy","capability"],["capabillity","capability"],["capabilties","capabilities"],["capabiltity","capability"],["capabilty","capability"],["capabitilies","capabilities"],["capablilities","capabilities"],["capablities","capabilities"],["capablity","capability"],["capaciy","capacity"],["capalize","capitalize"],["capalized","capitalized"],["capapbilities","capabilities"],["capatibilities","capabilities"],["capbability","capability"],["capbale","capable"],["capela","capella"],["caperbility","capability"],["Capetown","Cape Town"],["capibilities","capabilities"],["capible","capable"],["capitolize","capitalize"],["cappable","capable"],["captable","capable"],["captial","capital"],["captrure","capture"],["captued","captured"],["capturd","captured"],["caputre","capture"],["caputred","captured"],["caputres","captures"],["caputure","capture"],["carachter","character"],["caracter","character"],["caractere","character"],["caracteristic","characteristic"],["caracterized","characterized"],["caracters","characters"],["carbus","cardbus"],["carefuly","carefully"],["careing","caring"],["carfull","careful"],["cariage","carriage"],["caridge","carriage"],["cariier","carrier"],["carismatic","charismatic"],["Carmalite","Carmelite"],["Carnagie","Carnegie"],["Carnagie-Mellon","Carnegie-Mellon"],["Carnigie","Carnegie"],["Carnigie-Mellon","Carnegie-Mellon"],["carniverous","carnivorous"],["caronavirus","coronavirus"],["caronaviruses","coronaviruses"],["carreer","career"],["carreid","carried"],["carrers","careers"],["carret","caret"],["carriadge","carriage"],["Carribbean","Caribbean"],["Carribean","Caribbean"],["carrien","carrier"],["carrige","carriage"],["carrrier","carrier"],["carryintg","carrying"],["carryng","carrying"],["cartain","certain"],["cartdridge","cartridge"],["cartensian","Cartesian"],["Carthagian","Carthaginian"],["carthesian","cartesian"],["carthographer","cartographer"],["cartiesian","cartesian"],["cartilege","cartilage"],["cartilidge","cartilage"],["cartrige","cartridge"],["caryy","carry"],["cascace","cascade"],["case-insensative","case-insensitive"],["case-insensetive","case-insensitive"],["case-insensistive","case-insensitive"],["case-insensitiv","case-insensitive"],["case-insensitivy","case-insensitivity"],["case-insensitve","case-insensitive"],["case-insenstive","case-insensitive"],["case-insentive","case-insensitive"],["case-insentivite","case-insensitive"],["case-insesitive","case-insensitive"],["case-intensitive","case-insensitive"],["case-sensative","case-sensitive"],["case-sensetive","case-sensitive"],["case-sensistive","case-sensitive"],["case-sensitiv","case-sensitive"],["case-sensitve","case-sensitive"],["case-senstive","case-sensitive"],["case-sentive","case-sensitive"],["case-sentivite","case-sensitive"],["case-sesitive","case-sensitive"],["case-unsensitive","case-insensitive"],["caseinsensative","case-insensitive"],["caseinsensetive","case-insensitive"],["caseinsensistive","case-insensitive"],["caseinsensitiv","case-insensitive"],["caseinsensitve","case-insensitive"],["caseinsenstive","case-insensitive"],["caseinsentive","case-insensitive"],["caseinsentivite","case-insensitive"],["caseinsesitive","case-insensitive"],["caseintensitive","case-insensitive"],["caselessely","caselessly"],["casesensative","case-sensitive"],["casesensetive","casesensitive"],["casesensistive","case-sensitive"],["casesensitiv","case-sensitive"],["casesensitve","case-sensitive"],["casesenstive","case-sensitive"],["casesentive","case-sensitive"],["casesentivite","case-sensitive"],["casesesitive","case-sensitive"],["casette","cassette"],["cashe","cache"],["casion","caisson"],["caspule","capsule"],["caspules","capsules"],["cassawory","cassowary"],["cassowarry","cassowary"],["casue","cause"],["casued","caused"],["casues","causes"],["casuing","causing"],["casulaties","casualties"],["casulaty","casualty"],["cataalogue","catalogue"],["catagori","category"],["catagories","categories"],["catagorization","categorization"],["catagorizations","categorizations"],["catagorized","categorized"],["catagory","category"],["catapillar","caterpillar"],["catapillars","caterpillars"],["catapiller","caterpillar"],["catapillers","caterpillars"],["catastronphic","catastrophic"],["catastropic","catastrophic"],["catastropically","catastrophically"],["catastrphic","catastrophic"],["catche","catch"],["catched","caught"],["catchi","catch"],["catchs","catches"],["categogical","categorical"],["categogically","categorically"],["categogies","categories"],["categogy","category"],["cateogrical","categorical"],["cateogrically","categorically"],["cateogries","categories"],["cateogry","category"],["catepillar","caterpillar"],["catepillars","caterpillars"],["catergorize","categorize"],["catergorized","categorized"],["caterpilar","caterpillar"],["caterpilars","caterpillars"],["caterpiller","caterpillar"],["caterpillers","caterpillars"],["catgorical","categorical"],["catgorically","categorically"],["catgories","categories"],["catgory","category"],["cathlic","catholic"],["catholocism","catholicism"],["catloag","catalog"],["catloaged","cataloged"],["catloags","catalogs"],["catory","factory"],["catpture","capture"],["catpure","capture"],["catpured","captured"],["catpures","captures"],["catterpilar","caterpillar"],["catterpilars","caterpillars"],["catterpillar","caterpillar"],["catterpillars","caterpillars"],["cattleship","battleship"],["caucasion","caucasian"],["cauched","caught"],["caugt","caught"],["cauhgt","caught"],["cauing","causing"],["causees","causes"],["causion","caution"],["causioned","cautioned"],["causions","cautions"],["causious","cautious"],["cavaet","caveat"],["cavaets","caveats"],["ccahe","cache"],["ccale","scale"],["ccertificate","certificate"],["ccertificated","certificated"],["ccertificates","certificates"],["ccertification","certification"],["ccessible","accessible"],["cche","cache"],["cconfiguration","configuration"],["ccordinate","coordinate"],["ccordinates","coordinates"],["ccordinats","coordinates"],["ccoutant","accountant"],["ccpcheck","cppcheck"],["ccurred","occurred"],["ccustom","custom"],["ccustoms","customs"],["cdecompress","decompress"],["ceartype","cleartype"],["Ceasar","Caesar"],["ceate","create"],["ceated","created"],["ceates","creates"],["ceating","creating"],["ceation","creation"],["ceck","check"],["cecked","checked"],["cecker","checker"],["cecking","checking"],["cecks","checks"],["cedential","credential"],["cedentials","credentials"],["cehck","check"],["cehcked","checked"],["cehcker","checker"],["cehcking","checking"],["cehcks","checks"],["Celcius","Celsius"],["celles","cells"],["cellpading","cellpadding"],["cellst","cells"],["cellxs","cells"],["celsuis","celsius"],["cementary","cemetery"],["cemetarey","cemetery"],["cemetaries","cemeteries"],["cemetary","cemetery"],["cenario","scenario"],["cenarios","scenarios"],["cencter","center"],["cencus","census"],["cengter","center"],["censequence","consequence"],["centain","certain"],["cententenial","centennial"],["centerd","centered"],["centisencond","centisecond"],["centisenconds","centiseconds"],["centrifugeable","centrifugable"],["centrigrade","centigrade"],["centriod","centroid"],["centriods","centroids"],["centruies","centuries"],["centruy","century"],["centuties","centuries"],["centuty","century"],["cerain","certain"],["cerainly","certainly"],["cerainty","certainty"],["cerate","create"],["cereates","creates"],["cerimonial","ceremonial"],["cerimonies","ceremonies"],["cerimonious","ceremonious"],["cerimony","ceremony"],["ceromony","ceremony"],["certaily","certainly"],["certaincy","certainty"],["certainity","certainty"],["certaint","certain"],["certaion","certain"],["certan","certain"],["certficate","certificate"],["certficated","certificated"],["certficates","certificates"],["certfication","certification"],["certfications","certifications"],["certficiate","certificate"],["certficiated","certificated"],["certficiates","certificates"],["certficiation","certification"],["certficiations","certifications"],["certfied","certified"],["certfy","certify"],["certian","certain"],["certianly","certainly"],["certicate","certificate"],["certicated","certificated"],["certicates","certificates"],["certication","certification"],["certicicate","certificate"],["certifacte","certificate"],["certifacted","certificated"],["certifactes","certificates"],["certifaction","certification"],["certifcate","certificate"],["certifcated","certificated"],["certifcates","certificates"],["certifcation","certification"],["certifciate","certificate"],["certifciated","certificated"],["certifciates","certificates"],["certifciation","certification"],["certifiate","certificate"],["certifiated","certificated"],["certifiates","certificates"],["certifiating","certificating"],["certifiation","certification"],["certifiations","certifications"],["certificat","certificate"],["certificatd","certificated"],["certificaton","certification"],["certificats","certificates"],["certifice","certificate"],["certificed","certificated"],["certifices","certificates"],["certificion","certification"],["certificste","certificate"],["certificsted","certificated"],["certificstes","certificates"],["certificsting","certificating"],["certificstion","certification"],["certifificate","certificate"],["certifificated","certificated"],["certifificates","certificates"],["certifification","certification"],["certiticate","certificate"],["certiticated","certificated"],["certiticates","certificates"],["certitication","certification"],["cetain","certain"],["cetainly","certainly"],["cetainty","certainty"],["cetrainly","certainly"],["cetting","setting"],["Cgywin","Cygwin"],["chaarges","charges"],["chacacter","character"],["chacacters","characters"],["chache","cache"],["chached","cached"],["chacheline","cacheline"],["chaeck","check"],["chaecked","checked"],["chaecker","checker"],["chaecking","checking"],["chaecks","checks"],["chagne","change"],["chagned","changed"],["chagnes","changes"],["chahged","changed"],["chahging","changing"],["chaied","chained"],["chaing","chain"],["chalenging","challenging"],["challanage","challenge"],["challange","challenge"],["challanged","challenged"],["challanges","challenges"],["challege","challenge"],["chambre","chamber"],["chambres","chambers"],["Champange","Champagne"],["chanage","change"],["chanaged","changed"],["chanager","changer"],["chanages","changes"],["chanaging","changing"],["chanceled","canceled"],["chanceling","canceling"],["chanched","changed"],["chaneged","changed"],["chaneging","changing"],["chanel","channel"],["chanell","channel"],["chanels","channels"],["changable","changeable"],["changeble","changeable"],["changeing","changing"],["changge","change"],["changged","changed"],["changgeling","changeling"],["changges","changes"],["changlog","changelog"],["changuing","changing"],["chanined","chained"],["chaninging","changing"],["chanllenge","challenge"],["chanllenging","challenging"],["channael","channel"],["channe","channel"],["channeles","channels"],["channl","channel"],["channle","channel"],["channles","channels"],["channnel","channel"],["channnels","channels"],["chanses","chances"],["chaper","chapter"],["characaters","characters"],["characer","character"],["characers","characters"],["characeter","character"],["characeters","characters"],["characetrs","characters"],["characher","character"],["charachers","characters"],["charachter","character"],["charachters","characters"],["characstyle","charstyle"],["charactar","character"],["charactaristic","characteristic"],["charactaristics","characteristics"],["charactars","characters"],["characte","character"],["charactear","character"],["charactears","characters"],["characted","character"],["characteds","characters"],["characteer","character"],["characteers","characters"],["characteisation","characterisation"],["characteization","characterization"],["characteor","character"],["characteors","characters"],["characterclasses","character classes"],["characteres","characters"],["characterisic","characteristic"],["characterisically","characteristically"],["characterisicly","characteristically"],["characterisics","characteristics"],["characterisitic","characteristic"],["characterisitics","characteristics"],["characteristicly","characteristically"],["characteritic","characteristic"],["characteritics","characteristics"],["characteritisc","characteristic"],["characteritiscs","characteristics"],["charactersistic","characteristic"],["charactersistically","characteristically"],["charactersistics","characteristics"],["charactersitic","characteristic"],["charactersm","characters"],["characterss","characters"],["characterstic","characteristic"],["characterstically","characteristically"],["characterstics","characteristics"],["charactertistic","characteristic"],["charactertistically","characteristically"],["charactertistics","characteristics"],["charactes","characters"],["charactet","character"],["characteter","character"],["characteteristic","characteristic"],["characteteristics","characteristics"],["characteters","characters"],["charactetistic","characteristic"],["charactetistics","characteristics"],["charactetr","character"],["charactetrs","characters"],["charactets","characters"],["characther","character"],["charactiristic","characteristic"],["charactiristically","characteristically"],["charactiristics","characteristics"],["charactor","character"],["charactors","characters"],["charactristic","characteristic"],["charactristically","characteristically"],["charactristics","characteristics"],["charactrs","characters"],["characts","characters"],["characture","character"],["charakter","character"],["charakters","characters"],["chararacter","character"],["chararacters","characters"],["chararcter","character"],["chararcters","characters"],["charas","chars"],["charascter","character"],["charascters","characters"],["charasmatic","charismatic"],["charater","character"],["charaterize","characterize"],["charaterized","characterized"],["charaters","characters"],["charator","character"],["charators","characters"],["charcater","character"],["charcter","character"],["charcteristic","characteristic"],["charcteristics","characteristics"],["charcters","characters"],["charctor","character"],["charctors","characters"],["charecter","character"],["charecters","characters"],["charector","character"],["chargind","charging"],["charicter","character"],["charicters","characters"],["charictor","character"],["charictors","characters"],["chariman","chairman"],["charistics","characteristics"],["charizma","charisma"],["chartroose","chartreuse"],["chassy","chassis"],["chatacter","character"],["chatacters","characters"],["chatch","catch"],["chater","chapter"],["chawk","chalk"],["chcek","check"],["chceked","checked"],["chceking","checking"],["chceks","checks"],["chck","check"],["chckbox","checkbox"],["cheapeast","cheapest"],["cheatta","cheetah"],["chec","check"],["checbox","checkbox"],["checboxes","checkboxes"],["checg","check"],["checged","checked"],["checheckpoit","checkpoint"],["checheckpoits","checkpoints"],["cheched","checked"],["cheching","checking"],["chechk","check"],["chechs","checks"],["checkalaises","checkaliases"],["checkcsum","checksum"],["checkd","checked"],["checkes","checks"],["checket","checked"],["checkk","check"],["checkng","checking"],["checkoslovakia","czechoslovakia"],["checkox","checkbox"],["checkpoing","checkpoint"],["checkstum","checksum"],["checkstuming","checksumming"],["checkstumming","checksumming"],["checkstums","checksums"],["checksume","checksum"],["checksumed","checksummed"],["checksuming","checksumming"],["checkt","checked"],["checkum","checksum"],["checkums","checksums"],["checkuot","checkout"],["checl","check"],["checled","checked"],["checling","checking"],["checls","checks"],["cheduling","scheduling"],["cheeper","cheaper"],["cheeta","cheetah"],["cheif","chief"],["cheifs","chiefs"],["chek","check"],["chekc","check"],["chekcing","checking"],["chekd","checked"],["cheked","checked"],["chekers","checkers"],["cheking","checking"],["cheks","checks"],["cheksum","checksum"],["cheksums","checksums"],["chello","cello"],["chemcial","chemical"],["chemcially","chemically"],["chemestry","chemistry"],["chemicaly","chemically"],["chenged","changed"],["chennel","channel"],["cherch","church"],["cherchs","churches"],["cherck","check"],["chercking","checking"],["chercks","checks"],["chescksums","checksums"],["chgange","change"],["chganged","changed"],["chganges","changes"],["chganging","changing"],["chidren","children"],["childbird","childbirth"],["childen","children"],["childeren","children"],["childern","children"],["childlren","children"],["chiledren","children"],["chilren","children"],["chineese","Chinese"],["chinense","Chinese"],["chinesse","Chinese"],["chipersuite","ciphersuite"],["chipersuites","ciphersuites"],["chipertext","ciphertext"],["chipertexts","ciphertexts"],["chipet","chipset"],["chipslect","chipselect"],["chipstes","chipsets"],["chiuldren","children"],["chked","checked"],["chnage","change"],["chnaged","changed"],["chnages","changes"],["chnaging","changing"],["chnge","change"],["chnged","changed"],["chnges","changes"],["chnging","changing"],["chnnel","channel"],["choclate","chocolate"],["choicing","choosing"],["choise","choice"],["choises","choices"],["choising","choosing"],["chooose","choose"],["choos","choose"],["choosen","chosen"],["chopipng","chopping"],["choronological","chronological"],["chosed","chose"],["choseen","chosen"],["choser","chooser"],["chosing","choosing"],["chossen","chosen"],["chowsing","choosing"],["chracter","character"],["chracters","characters"],["chractor","character"],["chractors","characters"],["chrminance","chrominance"],["chromum","chromium"],["chuch","church"],["chuks","chunks"],["chunaks","chunks"],["chunc","chunk"],["chunck","chunk"],["chuncked","chunked"],["chuncking","chunking"],["chuncks","chunks"],["chuncksize","chunksize"],["chuncs","chunks"],["chuned","chunked"],["churchs","churches"],["cick","click"],["cicrle","circle"],["cicruit","circuit"],["cicruits","circuits"],["cicular","circular"],["ciculars","circulars"],["cihpher","cipher"],["cihphers","ciphers"],["cilinder","cylinder"],["cilinders","cylinders"],["cilindrical","cylindrical"],["cilyndre","cylinder"],["cilyndres","cylinders"],["cilyndrs","cylinders"],["Cincinatti","Cincinnati"],["Cincinnatti","Cincinnati"],["cinfiguration","configuration"],["cinfigurations","configurations"],["cintaner","container"],["ciontrol","control"],["ciper","cipher"],["cipers","ciphers"],["cipersuite","ciphersuite"],["cipersuites","ciphersuites"],["cipertext","ciphertext"],["cipertexts","ciphertexts"],["ciphe","cipher"],["cipherntext","ciphertext"],["ciphersuit","ciphersuite"],["ciphersuits","ciphersuites"],["ciphersute","ciphersuite"],["ciphersutes","ciphersuites"],["cipheruite","ciphersuite"],["cipheruites","ciphersuites"],["ciphes","ciphers"],["ciphr","cipher"],["ciphrs","ciphers"],["cips","chips"],["circluar","circular"],["circluarly","circularly"],["circluars","circulars"],["circomvent","circumvent"],["circomvented","circumvented"],["circomvents","circumvents"],["circual","circular"],["circuitery","circuitry"],["circulaton","circulation"],["circumferance","circumference"],["circumferencial","circumferential"],["circumsicion","circumcision"],["circumstancial","circumstantial"],["circumstansial","circumstantial"],["circumstnce","circumstance"],["circumstnces","circumstances"],["circumstncial","circumstantial"],["circumstntial","circumstantial"],["circumvernt","circumvent"],["circunference","circumference"],["circunferences","circumferences"],["circunstance","circumstance"],["circunstances","circumstances"],["circunstantial","circumstantial"],["circustances","circumstances"],["circut","circuit"],["circuts","circuits"],["ciricle","circle"],["ciricles","circles"],["ciricuit","circuit"],["ciricuits","circuits"],["ciricular","circular"],["ciricularise","circularise"],["ciricularize","circularize"],["ciriculum","curriculum"],["cirilic","Cyrillic"],["cirillic","Cyrillic"],["ciritc","critic"],["ciritcal","critical"],["ciritcality","criticality"],["ciritcals","criticals"],["ciritcs","critics"],["ciriteria","criteria"],["ciritic","critic"],["ciritical","critical"],["ciriticality","criticality"],["ciriticals","criticals"],["ciritics","critics"],["cirlce","circle"],["cirle","circle"],["cirles","circles"],["cirsumstances","circumstances"],["cirtcuit","circuit"],["cirucal","circular"],["cirucit","circuit"],["cirucits","circuits"],["ciruclar","circular"],["ciruclation","circulation"],["ciruclator","circulator"],["cirucmflex","circumflex"],["cirucular","circular"],["cirucumstance","circumstance"],["cirucumstances","circumstances"],["ciruit","circuit"],["ciruits","circuits"],["cirumflex","circumflex"],["cirumstance","circumstance"],["cirumstances","circumstances"],["civillian","civilian"],["civillians","civilians"],["cjange","change"],["cjanged","changed"],["cjanges","changes"],["cjoice","choice"],["cjoices","choices"],["ckecksum","checksum"],["claaes","classes"],["claculate","calculate"],["claculation","calculation"],["claer","clear"],["claerer","clearer"],["claerly","clearly"],["claibscale","calibscale"],["claime","claim"],["claimes","claims"],["clame","claim"],["claread","cleared"],["clared","cleared"],["clarety","clarity"],["claring","clearing"],["clasic","classic"],["clasical","classical"],["clasically","classically"],["clasification","classification"],["clasified","classified"],["clasifies","classifies"],["clasify","classify"],["clasifying","classifying"],["clasroom","classroom"],["clasrooms","classrooms"],["classess","classes"],["classesss","classes"],["classifcation","classification"],["classifed","classified"],["classifer","classifier"],["classifers","classifiers"],["classificaion","classification"],["classrom","classroom"],["classroms","classrooms"],["classs","class"],["classses","classes"],["clatified","clarified"],["claus","clause"],["clcoksource","clocksource"],["clcosed","closed"],["clea","clean"],["cleaered","cleared"],["cleaing","cleaning"],["cleancacne","cleancache"],["cleaness","cleanness"],["cleanning","cleaning"],["cleannup","cleanup"],["cleanpu","cleanup"],["cleanpus","cleanups"],["cleantup","cleanup"],["cleareance","clearance"],["cleares","clears"],["clearified","clarified"],["clearifies","clarifies"],["clearify","clarify"],["clearifying","clarifying"],["clearling","clearing"],["clearnance","clearance"],["clearnances","clearances"],["clearouput","clearoutput"],["clearted","cleared"],["cleary","clearly"],["cleaup","cleanup"],["cleaups","cleanups"],["cleck","check"],["cleean","clean"],["cleen","clean"],["cleened","cleaned"],["cleens","cleans"],["cleff","clef"],["cleint's","client's"],["cleint","client"],["cleints","clients"],["clened","cleaned"],["clener","cleaner"],["clening","cleaning"],["cler","clear"],["clese","close"],["cleses","closes"],["clevely","cleverly"],["cliboard","clipboard"],["cliboards","clipboards"],["clibpoard","clipboard"],["clibpoards","clipboards"],["cliens","clients"],["cliensite","client-side"],["clienta","client"],["clientelle","clientele"],["clik","click"],["cliks","clicks"],["climer","climber"],["climers","climbers"],["climing","climbing"],["clincial","clinical"],["clinets","clients"],["clinicaly","clinically"],["clipboad","clipboard"],["clipboads","clipboards"],["clipoard","clipboard"],["clipoards","clipboards"],["clipoing","clipping"],["cliuent","client"],["cliuents","clients"],["clloud","cloud"],["cllouded","clouded"],["clloudes","clouds"],["cllouding","clouding"],["cllouds","clouds"],["cloack","cloak"],["cloacks","cloaks"],["cloberring","clobbering"],["clocksourc","clocksource"],["clockw\xEDse","clockwise"],["clock_getttime","clock_gettime"],["cloding","closing"],["cloes","close"],["cloesd","closed"],["cloesed","closed"],["cloesing","closing"],["clonning","cloning"],["clory","glory"],["clos","close"],["closeing","closing"],["closesly","closely"],["closig","closing"],["clossed","closed"],["clossing","closing"],["clossion","collision"],["clossions","collisions"],["cloude","cloud"],["cloudes","clouds"],["cloumn","column"],["cloumns","columns"],["clousre","closure"],["clsoe","close"],["clssroom","classroom"],["clssrooms","classrooms"],["cluase","clause"],["clumn","column"],["clumsly","clumsily"],["cluser","cluster"],["clusetr","cluster"],["clustred","clustered"],["cmak","cmake"],["cmmand","command"],["cmmanded","commanded"],["cmmanding","commanding"],["cmmands","commands"],["cmobination","combination"],["cmoputer","computer"],["cmoputers","computers"],["cna","can"],["cnannel","channel"],["cnat'","can't"],["cnat","can't"],["cnfiguration","configuration"],["cnfigure","configure"],["cnfigured","configured"],["cnfigures","configures"],["cnfiguring","configuring"],["cnosole","console"],["cnosoles","consoles"],["cntain","contain"],["cntains","contains"],["cnter","center"],["co-incided","coincided"],["co-opearte","co-operate"],["co-opeartes","co-operates"],["co-ordinate","coordinate"],["co-ordinates","coordinates"],["coalace","coalesce"],["coalaced","coalesced"],["coalacence","coalescence"],["coalacing","coalescing"],["coalaesce","coalesce"],["coalaesced","coalesced"],["coalaescence","coalescence"],["coalaescing","coalescing"],["coalascece","coalescence"],["coalascence","coalescence"],["coalase","coalesce"],["coalasece","coalescence"],["coalased","coalesced"],["coalasence","coalescence"],["coalases","coalesces"],["coalasing","coalescing"],["coalcece","coalescence"],["coalcence","coalescence"],["coalesc","coalesce"],["coalescsing","coalescing"],["coalesed","coalesced"],["coalesence","coalescence"],["coalessing","coalescing"],["coallate","collate"],["coallates","collates"],["coallating","collating"],["coallece","coalesce"],["coalleced","coalesced"],["coallecence","coalescence"],["coalleces","coalesces"],["coallecing","coalescing"],["coallee","coalesce"],["coalleed","coalesced"],["coalleence","coalescence"],["coallees","coalesces"],["coalleing","coalescing"],["coallesce","coalesce"],["coallesced","coalesced"],["coallesceing","coalescing"],["coallescence","coalescence"],["coallesces","coalesces"],["coallescing","coalescing"],["coallese","coalesce"],["coallesed","coalesced"],["coallesence","coalescence"],["coalleses","coalesces"],["coallesing","coalescing"],["coallesse","coalesce"],["coallessed","coalesced"],["coallessence","coalescence"],["coallesses","coalesces"],["coallessing","coalescing"],["coallision","collision"],["coallisions","collisions"],["coalsce","coalesce"],["coalscece","coalescence"],["coalsced","coalesced"],["coalscence","coalescence"],["coalscing","coalescing"],["coalsece","coalescence"],["coalseced","coalesced"],["coalsecense","coalescence"],["coalsence","coalescence"],["coaslescing","coalescing"],["cobining","combining"],["cobvers","covers"],["coccinele","coccinelle"],["coctail","cocktail"],["cocument","document"],["cocumentation","documentation"],["cocuments","document"],["codeing","coding"],["codepoitn","codepoint"],["codesc","codecs"],["codespel","codespell"],["codesream","codestream"],["codition","condition"],["coditioned","conditioned"],["coditions","conditions"],["codo","code"],["codos","codes"],["coduct","conduct"],["coducted","conducted"],["coducter","conductor"],["coducting","conducting"],["coductor","conductor"],["coducts","conducts"],["coeffcient","coefficient"],["coeffcients","coefficients"],["coefficeint","coefficient"],["coefficeints","coefficients"],["coefficent","coefficient"],["coefficents","coefficients"],["coefficiens","coefficients"],["coefficientss","coefficients"],["coeffiecient","coefficient"],["coeffiecients","coefficients"],["coeffient","coefficient"],["coeffients","coefficients"],["coeficent","coefficient"],["coeficents","coefficients"],["coeficient","coefficient"],["coeficients","coefficients"],["coelesce","coalesce"],["coercable","coercible"],["coerceion","coercion"],["cofeee","coffee"],["cofficient","coefficient"],["cofficients","coefficients"],["cofidence","confidence"],["cofiguration","configuration"],["cofigure","configure"],["cofigured","configured"],["cofigures","configures"],["cofiguring","configuring"],["cofirm","confirm"],["cofirmation","confirmation"],["cofirmations","confirmations"],["cofirmed","confirmed"],["cofirming","confirming"],["cofirms","confirms"],["coform","conform"],["cofrim","confirm"],["cofrimation","confirmation"],["cofrimations","confirmations"],["cofrimed","confirmed"],["cofriming","confirming"],["cofrims","confirms"],["cognizent","cognizant"],["coherance","coherence"],["coherancy","coherency"],["coherant","coherent"],["coherantly","coherently"],["coice","choice"],["coincedentally","coincidentally"],["coinitailize","coinitialize"],["coinside","coincide"],["coinsided","coincided"],["coinsidence","coincidence"],["coinsident","coincident"],["coinsides","coincides"],["coinsiding","coinciding"],["cointain","contain"],["cointained","contained"],["cointaining","containing"],["cointains","contains"],["cokies","cookies"],["colaboration","collaboration"],["colaborations","collaborations"],["colateral","collateral"],["coldplg","coldplug"],["colected","collected"],["colection","collection"],["colections","collections"],["colelction","collection"],["colelctive","collective"],["colerscheme","colorscheme"],["colescing","coalescing"],["colision","collision"],["colission","collision"],["collaberative","collaborative"],["collaction","collection"],["collaobrative","collaborative"],["collaps","collapse"],["collapsable","collapsible"],["collasion","collision"],["collaspe","collapse"],["collasped","collapsed"],["collaspes","collapses"],["collaspible","collapsible"],["collasping","collapsing"],["collationg","collation"],["collborative","collaborative"],["collecing","collecting"],["collecion","collection"],["collecions","collections"],["colleciton","collection"],["collecitons","collections"],["collectin","collection"],["collecton","collection"],["collectons","collections"],["colleection","collection"],["collegue","colleague"],["collegues","colleagues"],["collektion","collection"],["colletion","collection"],["collidies","collides"],["collissions","collisions"],["collistion","collision"],["collistions","collisions"],["colllapses","collapses"],["collocalized","colocalized"],["collonade","colonnade"],["collonies","colonies"],["collony","colony"],["collorscheme","colorscheme"],["collosal","colossal"],["collpase","collapse"],["collpased","collapsed"],["collpases","collapses"],["collpasing","collapsing"],["collsion","collision"],["collsions","collisions"],["collumn","column"],["collumns","columns"],["colmn","column"],["colmns","columns"],["colmuned","columned"],["coloer","color"],["coloeration","coloration"],["coloered","colored"],["coloering","coloring"],["coloers","colors"],["coloful","colorful"],["colomn","column"],["colomns","columns"],["colon-seperated","colon-separated"],["colonizators","colonizers"],["coloringh","coloring"],["colorizoer","colorizer"],["colorpsace","colorspace"],["colorpsaces","colorspaces"],["colose","close"],["coloum","column"],["coloumn","column"],["coloumns","columns"],["coloums","columns"],["colourpsace","colourspace"],["colourpsaces","colourspaces"],["colsed","closed"],["colum","column"],["columm","column"],["colummn","column"],["colummns","columns"],["columms","columns"],["columnn","column"],["columnns","columns"],["columnss","columns"],["columnular","columnar"],["colums","columns"],["columsn","columns"],["colunns","columns"],["comammand","command"],["comamnd","command"],["comamnd-line","command-line"],["comamnded","commanded"],["comamnding","commanding"],["comamndline","commandline"],["comamnds","commands"],["comand","command"],["comand-line","command-line"],["comanded","commanded"],["comanding","commanding"],["comandline","commandline"],["comando","commando"],["comandos","commandos"],["comands","commands"],["comany","company"],["comapany","company"],["comapared","compared"],["comapatibility","compatibility"],["comapatible","compatible"],["comapletion","completion"],["comapnies","companies"],["comapny","company"],["comapre","compare"],["comapring","comparing"],["comaprison","comparison"],["comaptibele","compatible"],["comaptibelities","compatibilities"],["comaptibelity","compatibility"],["comaptible","compatible"],["comarators","comparators"],["comback","comeback"],["combained","combined"],["combanations","combinations"],["combatibility","compatibility"],["combatible","compatible"],["combiantion","combination"],["combiation","combination"],["combiations","combinations"],["combinate","combine"],["combinateion","combination"],["combinateions","combinations"],["combinatins","combinations"],["combinatio","combination"],["combinatios","combinations"],["combinaton","combination"],["combinatorical","combinatorial"],["combinbe","combined"],["combind","combined"],["combinded","combined"],["combiniation","combination"],["combiniations","combinations"],["combinine","combine"],["combintaion","combination"],["combintaions","combinations"],["combusion","combustion"],["comceptually","conceptually"],["comdemnation","condemnation"],["comect","connect"],["comected","connected"],["comecting","connecting"],["comectivity","connectivity"],["comedlib","comedilib"],["comemmorates","commemorates"],["comemoretion","commemoration"],["coment","comment"],["comented","commented"],["comenting","commenting"],["coments","comments"],["comfirm","confirm"],["comflicting","conflicting"],["comformance","conformance"],["comiled","compiled"],["comilers","compilers"],["comination","combination"],["comision","commission"],["comisioned","commissioned"],["comisioner","commissioner"],["comisioning","commissioning"],["comisions","commissions"],["comission","commission"],["comissioned","commissioned"],["comissioner","commissioner"],["comissioning","commissioning"],["comissions","commissions"],["comit","commit"],["comited","committed"],["comitee","committee"],["comiting","committing"],["comits","commits"],["comitted","committed"],["comittee","committee"],["comittees","committees"],["comitter","committer"],["comitting","committing"],["comittish","committish"],["comlain","complain"],["comlained","complained"],["comlainer","complainer"],["comlaining","complaining"],["comlains","complains"],["comlaint","complaint"],["comlaints","complaints"],["comlete","complete"],["comleted","completed"],["comletely","completely"],["comletion","completion"],["comletly","completely"],["comlex","complex"],["comlexity","complexity"],["comlpeter","completer"],["comma-separeted","comma-separated"],["commad","command"],["commadn","command"],["commadn-line","command-line"],["commadnline","commandline"],["commadns","commands"],["commads","commands"],["commandi","command"],["commandoes","commandos"],["commannd","command"],["commans","commands"],["commansd","commands"],["commect","connect"],["commected","connected"],["commecting","connecting"],["commectivity","connectivity"],["commedic","comedic"],["commemerative","commemorative"],["commemmorate","commemorate"],["commemmorating","commemorating"],["commenet","comment"],["commenetd","commented"],["commeneted","commented"],["commenstatus","commentstatus"],["commerical","commercial"],["commerically","commercially"],["commericial","commercial"],["commericially","commercially"],["commerorative","commemorative"],["comming","coming"],["comminication","communication"],["comminity","community"],["comminucating","communicating"],["comminucation","communication"],["commision","commission"],["commisioned","commissioned"],["commisioner","commissioner"],["commisioning","commissioning"],["commisions","commissions"],["commitable","committable"],["commited","committed"],["commitee","committee"],["commiter","committer"],["commiters","committers"],["commitin","committing"],["commiting","committing"],["commitish","committish"],["committ","commit"],["committe","committee"],["committi","committee"],["committis","committees"],["committment","commitment"],["committments","commitments"],["committy","committee"],["commma","comma"],["commma-separated","comma-separated"],["commmand","command"],["commmand-line","command-line"],["commmandline","commandline"],["commmands","commands"],["commmemorated","commemorated"],["commment","comment"],["commmented","commented"],["commmenting","commenting"],["commments","comments"],["commmet","comment"],["commmets","comments"],["commmit","commit"],["commmited","committed"],["commmiting","committing"],["commmits","commits"],["commmitted","committed"],["commmitter","committer"],["commmitters","committers"],["commmitting","committing"],["commmon","common"],["commmunicate","communicate"],["commmunicated","communicated"],["commmunicates","communicates"],["commmunicating","communicating"],["commmunication","communication"],["commmunity","community"],["commna","comma"],["commna-separated","comma-separated"],["commnad","command"],["commnad-line","command-line"],["commnadline","commandline"],["commnads","commands"],["commnand","command"],["commnand-line","command-line"],["commnandline","commandline"],["commnands","commands"],["commnd","command"],["commnd-line","command-line"],["commndline","commandline"],["commnds","commands"],["commnent","comment"],["commnents","comments"],["commnet","comment"],["commnetaries","commentaries"],["commnetary","commentary"],["commnetator","commentator"],["commnetators","commentators"],["commneted","commented"],["commneting","commenting"],["commnets","comments"],["commnication","communication"],["commnities","communities"],["commnity","community"],["commnt","comment"],["commnted","commented"],["commnuative","commutative"],["commnunicating","communicating"],["commnunication","communication"],["commnunity","community"],["commoditiy","commodity"],["commom","common"],["commond","command"],["commongly","commonly"],["commontly","commonly"],["commonweath","commonwealth"],["commpact","compact"],["commpaction","compaction"],["commpare","compare"],["commparisons","comparisons"],["commpatibility","compatibility"],["commpatible","compatible"],["commpessed","compressed"],["commpilation","compilation"],["commpile","compile"],["commpiled","compiled"],["commpiling","compiling"],["commplain","complain"],["commplete","complete"],["commpleted","completed"],["commpletely","completely"],["commpletes","completes"],["commpletion","completion"],["commplex","complex"],["commpliant","compliant"],["commplied","complied"],["commpn","common"],["commponent","component"],["commponents","components"],["commpound","compound"],["commpresd","compressed"],["commpresed","compressed"],["commpresion","compression"],["commpress","compress"],["commpressd","compressed"],["commpressed","compressed"],["commpression","compression"],["commpute","compute"],["commputed","computed"],["commputer","computer"],["commputes","computes"],["commputing","computing"],["commtited","committed"],["commtted","committed"],["commuication","communication"],["commuications","communications"],["commuinications","communications"],["communcated","communicated"],["communcation","communication"],["communcations","communications"],["communciation","communication"],["communiation","communication"],["communicaion","communication"],["communicatie","communication"],["communicaton","communication"],["communitcate","communicate"],["communitcated","communicated"],["communitcates","communicates"],["communitcation","communication"],["communitcations","communications"],["communites","communities"],["communiy","community"],["communiyt","community"],["communuication","communication"],["commutated","commuted"],["commutating","commuting"],["commutive","commutative"],["comnmand","command"],["comnnected","connected"],["comnparing","comparing"],["comnpletion","completion"],["comnpresion","compression"],["comnpress","compress"],["comobobox","combo-box"],["comon","common"],["comonent","component"],["comor","color"],["compability","compatibility"],["compabillity","compatibility"],["compabitiliby","compatibility"],["compabitility","compatibility"],["compagnion","companion"],["compagny","company"],["compaibility","compatibility"],["compain","complain"],["compair","compare"],["compaire","compare"],["compaired","compared"],["compairing","comparing"],["compairison","comparison"],["compairisons","comparisons"],["compairs","compares"],["compansate","compensate"],["compansated","compensated"],["compansates","compensates"],["compansating","compensating"],["compansation","compensation"],["compansations","compensations"],["comparaison","comparison"],["comparare","compare"],["comparasion","comparison"],["comparasions","comparisons"],["comparater","comparator"],["comparation","comparison"],["comparations","comparisons"],["compareable","comparable"],["compareing","comparing"],["compareison","comparison"],["compareisons","comparisons"],["comparements","compartments"],["compariable","comparable"],["comparied","compared"],["comparign","comparing"],["comparigon","comparison"],["comparigons","comparisons"],["compariing","comparing"],["comparion","comparison"],["comparions","comparisons"],["comparios","comparison"],["comparioss","comparisons"],["comparisaion","comparison"],["comparisaions","comparisons"],["comparisation","comparison"],["comparisations","comparisons"],["comparisement","comparison"],["comparisements","comparisons"],["comparisin","comparison"],["comparising","comparing"],["comparisins","comparisons"],["comparision","comparison"],["comparisions","comparisons"],["comparism","comparison"],["comparisment","comparison"],["comparisments","comparisons"],["comparisms","comparisons"],["comparisn","comparison"],["comparisns","comparisons"],["comparispon","comparison"],["comparispons","comparisons"],["comparission","comparison"],["comparissions","comparisons"],["comparisson","comparison"],["comparissons","comparisons"],["comparistion","comparison"],["comparistions","comparisons"],["compariston","comparison"],["comparistons","comparisons"],["comparition","comparison"],["comparitions","comparisons"],["comparititive","comparative"],["comparititively","comparatively"],["comparitive","comparative"],["comparitively","comparatively"],["comparitor","comparator"],["comparitors","comparators"],["comparizon","comparison"],["comparizons","comparisons"],["comparment","compartment"],["comparotor","comparator"],["comparotors","comparators"],["comparre","compare"],["comparsion","comparison"],["comparsions","comparisons"],["compatabable","compatible"],["compatabiity","compatibility"],["compatabile","compatible"],["compatabilities","compatibilities"],["compatability","compatibility"],["compatabillity","compatibility"],["compatabilty","compatibility"],["compatabily","compatibility"],["compatable","compatible"],["compatablility","compatibility"],["compatablities","compatibilities"],["compatablitiy","compatibility"],["compatablity","compatibility"],["compatably","compatibly"],["compataibility","compatibility"],["compataible","compatible"],["compataility","compatibility"],["compatatbility","compatibility"],["compatatble","compatible"],["compatatible","compatible"],["compatator","comparator"],["compatators","comparators"],["compatbile","compatible"],["compatbility","compatibility"],["compatiability","compatibility"],["compatiable","compatible"],["compatiablity","compatibility"],["compatibel","compatible"],["compatibile","compatible"],["compatibiliy","compatibility"],["compatibiltiy","compatibility"],["compatibilty","compatibility"],["compatibily","compatibility"],["compatibity","compatibility"],["compatiblilty","compatibility"],["compatiblities","compatibilities"],["compatiblity","compatibility"],["compation","compaction"],["compatitbility","compatibility"],["compativle","compatible"],["compaytibility","compatibility"],["compeitions","competitions"],["compeletely","completely"],["compelte","complete"],["compeltelyt","completely"],["compeltion","completion"],["compeltly","completely"],["compelx","complex"],["compelxes","complexes"],["compelxities","complexities"],["compelxity","complexity"],["compensantion","compensation"],["compenstate","compensate"],["compenstated","compensated"],["compenstates","compensates"],["competance","competence"],["competant","competent"],["competative","competitive"],["competetive","competitive"],["competions","completions"],["competitiion","competition"],["competive","competitive"],["competiveness","competitiveness"],["compex","complex"],["compfortable","comfortable"],["comphrehensive","comprehensive"],["compiant","compliant"],["compicated","complicated"],["compications","complications"],["compied","compiled"],["compilability","compatibility"],["compilant","compliant"],["compilaton","compilation"],["compilatons","compilations"],["compilcate","complicate"],["compilcated","complicated"],["compilcatedly","complicatedly"],["compilcates","complicates"],["compilcating","complicating"],["compilcation","complication"],["compilcations","complications"],["compileable","compilable"],["compiletime","compile time"],["compiliant","compliant"],["compiliation","compilation"],["compilier","compiler"],["compiliers","compilers"],["compitability","compatibility"],["compitable","compatible"],["compitent","competent"],["compitible","compatible"],["complaing","complaining"],["complanied","complained"],["complate","complete"],["complated","completed"],["complates","completes"],["complating","completing"],["complatly","completely"],["complatness","completeness"],["complats","completes"],["complcated","complicated"],["compleate","complete"],["compleated","completed"],["compleates","completes"],["compleating","completing"],["compleatly","completely"],["compleete","complete"],["compleeted","completed"],["compleetly","completely"],["compleetness","completeness"],["complelely","completely"],["complelte","complete"],["complementt","complement"],["compleness","completeness"],["complession","compression"],["complet","complete"],["completedthe","completed the"],["completeion","completion"],["completelly","completely"],["completelty","completely"],["completelyl","completely"],["completetion","completion"],["completetly","completely"],["completiom","completion"],["completition","completion"],["completley","completely"],["completly","completely"],["completness","completeness"],["complette","complete"],["complettly","completely"],["complety","completely"],["complext","complexity"],["compliace","compliance"],["complianse","compliance"],["compliation","compilation"],["compliations","compilations"],["complied-in","compiled-in"],["complience","compliance"],["complient","compliant"],["complile","compile"],["compliled","compiled"],["compliler","compiler"],["compliles","compiles"],["compliling","compiling"],["compling","compiling"],["complitely","completely"],["complmenet","complement"],["complted","completed"],["compluter","computer"],["compnent","component"],["compnents","components"],["compoennt","component"],["compoent","component"],["compoents","components"],["compoesd","composed"],["compoment","component"],["compoments","components"],["componant","component"],["componants","components"],["componbents","components"],["componding","compounding"],["componeent","component"],["componeents","components"],["componemt","component"],["componemts","components"],["componenet","component"],["componenets","components"],["componens","components"],["componentes","components"],["componet","component"],["componets","components"],["componnents","components"],["componoent","component"],["componoents","components"],["componsites","composites"],["compontent","component"],["compontents","components"],["composablity","composability"],["composibility","composability"],["composiblity","composability"],["composit","composite"],["compositong","compositing"],["composits","composites"],["compount","compound"],["comppatible","compatible"],["comppiler","compiler"],["comppilers","compilers"],["comppliance","compliance"],["comprable","comparable"],["compredded","compressed"],["compresed","compressed"],["compreser","compressor"],["compresers","compressors"],["compreses","compresses"],["compresible","compressible"],["compresing","compressing"],["compresion","compression"],["compresions","compressions"],["compresor","compressor"],["compresors","compressors"],["compressable","compressible"],["compresser","compressor"],["compressers","compressors"],["compresss","compress"],["compresssed","compressed"],["compresssion","compression"],["comprimise","compromise"],["compromize","compromise"],["compromized","compromised"],["compsable","composable"],["compsite","composite"],["comptabile","compatible"],["comptible","compatible"],["comptue","compute"],["compuatation","computation"],["compuation","computation"],["compulsary","compulsory"],["compulsery","compulsory"],["compund","compound"],["compunds","compounds"],["computaion","computation"],["computarized","computerized"],["computaton","computation"],["computtaion","computation"],["computtaions","computations"],["comress","compress"],["comressed","compressed"],["comresses","compresses"],["comressing","compressing"],["comression","compression"],["comrpess","compress"],["comrpessed","compressed"],["comrpesses","compresses"],["comrpessing","compressing"],["comrpession","compression"],["comstraint","constraint"],["comsume","consume"],["comsumed","consumed"],["comsumer","consumer"],["comsumers","consumers"],["comsumes","consumes"],["comsuming","consuming"],["comsumption","consumption"],["comtain","contain"],["comtained","contained"],["comtainer","container"],["comtains","contains"],["comunicate","communicate"],["comunication","communication"],["comunity","community"],["comventions","conventions"],["comverted","converted"],["conain","contain"],["conained","contained"],["conainer","container"],["conainers","containers"],["conaines","contains"],["conaining","containing"],["conains","contains"],["conaint","contain"],["conainted","contained"],["conainter","container"],["conatain","contain"],["conatainer","container"],["conatainers","containers"],["conatains","contains"],["conatin","contain"],["conatined","contained"],["conatiner","container"],["conatiners","containers"],["conatining","containing"],["conatins","contains"],["conbination","combination"],["conbinations","combinations"],["conbtrols","controls"],["concaneted","concatenated"],["concantenated","concatenated"],["concatenaded","concatenated"],["concatenaion","concatenation"],["concatened","concatenated"],["concatentaion","concatenation"],["concatentate","concatenate"],["concatentated","concatenated"],["concatentates","concatenates"],["concatentating","concatenating"],["concatentation","concatenation"],["concatentations","concatenations"],["concatented","concatenated"],["concatinate","concatenate"],["concatinated","concatenated"],["concatination","concatenation"],["concatinations","concatenations"],["concating","concatenating"],["concatonate","concatenate"],["concatonated","concatenated"],["concatonates","concatenates"],["concatonating","concatenating"],["conceed","concede"],["conceedd","conceded"],["concensors","consensus"],["concensus","consensus"],["concentate","concentrate"],["concentated","concentrated"],["concentates","concentrates"],["concentating","concentrating"],["concentation","concentration"],["concentic","concentric"],["concentraze","concentrate"],["concered","concerned"],["concerened","concerned"],["concering","concerning"],["concerntrating","concentrating"],["concicely","concisely"],["concider","consider"],["concidered","considered"],["concidering","considering"],["conciders","considers"],["concieted","conceited"],["concieve","conceive"],["concieved","conceived"],["concious","conscious"],["conciously","consciously"],["conciousness","consciousness"],["concurence","concurrence"],["concurency","concurrency"],["concurent","concurrent"],["concurently","concurrently"],["concurrect","concurrent"],["condamned","condemned"],["condem","condemn"],["condemmed","condemned"],["condfiguration","configuration"],["condfigurations","configurations"],["condfigure","configure"],["condfigured","configured"],["condfigures","configures"],["condfiguring","configuring"],["condict","conduct"],["condicted","conducted"],["condidate","candidate"],["condidates","candidates"],["condident","confident"],["condidential","confidential"],["condidional","conditional"],["condidtion","condition"],["condidtioning","conditioning"],["condidtions","conditions"],["condifurable","configurable"],["condifuration","configuration"],["condifure","configure"],["condifured","configured"],["condig","config"],["condigdialog","configdialog"],["condiiton","condition"],["condionally","conditionally"],["conditial","conditional"],["conditially","conditionally"],["conditialy","conditionally"],["conditianal","conditional"],["conditianally","conditionally"],["conditianaly","conditionally"],["conditionaly","conditionally"],["conditionn","condition"],["conditionnal","conditional"],["conditionnaly","conditionally"],["conditionned","conditioned"],["conditionsof","conditions of"],["conditoinal","conditional"],["conditon","condition"],["conditonal","conditional"],["conditons","conditions"],["condntional","conditional"],["condtiion","condition"],["condtiions","conditions"],["condtion","condition"],["condtional","conditional"],["condtionally","conditionally"],["condtionals","conditionals"],["condtioned","conditioned"],["condtions","conditions"],["condtition","condition"],["condtitional","conditional"],["condtitionals","conditionals"],["condtitions","conditions"],["conecct","connect"],["coneccted","connected"],["coneccting","connecting"],["conecction","connection"],["conecctions","connections"],["conecctivities","connectivities"],["conecctivity","connectivity"],["conecctor","connector"],["conecctors","connectors"],["coneccts","connects"],["conecept","concept"],["conecepts","concepts"],["conecjture","conjecture"],["conecjtures","conjectures"],["conecntrate","concentrate"],["conecntrated","concentrated"],["conecntrates","concentrates"],["conecpt","concept"],["conecpts","concepts"],["conect","connect"],["conected","connected"],["conecting","connecting"],["conection","connection"],["conections","connections"],["conectivities","connectivities"],["conectivity","connectivity"],["conectix","connectix"],["conector","connector"],["conectors","connectors"],["conects","connects"],["conecurrency","concurrency"],["conecutive","consecutive"],["coneect","connect"],["coneected","connected"],["coneecting","connecting"],["coneection","connection"],["coneections","connections"],["coneectivities","connectivities"],["coneectivity","connectivity"],["coneector","connector"],["coneectors","connectors"],["coneects","connects"],["conenct","connect"],["conencted","connected"],["conencting","connecting"],["conenction","connection"],["conenctions","connections"],["conenctivities","connectivities"],["conenctivity","connectivity"],["conenctor","connector"],["conenctors","connectors"],["conencts","connects"],["conenience","convenience"],["conenient","convenient"],["coneninece","convenience"],["coneninet","convenient"],["conent","content"],["conents","contents"],["conergence","convergence"],["conern","concern"],["conerning","concerning"],["conersion","conversion"],["conersions","conversions"],["conert","convert"],["conerted","converted"],["conerter","converter"],["conerters","converters"],["conerting","converting"],["conervative","conservative"],["conesencus","consensus"],["conet","connect"],["coneted","connected"],["coneting","connecting"],["conetion","connection"],["conetions","connections"],["conetivities","connectivities"],["conetivity","connectivity"],["conetnt","content"],["conetor","connector"],["conetors","connectors"],["conets","connects"],["conexant","connexant"],["conferene","conference"],["conferrencing","conferencing"],["confert","convert"],["confety","confetti"],["conffiguration","configuration"],["confgiuration","configuration"],["confgiure","configure"],["confgiured","configured"],["confguration","configuration"],["confgure","configure"],["confgured","configured"],["confict","conflict"],["conficted","conflicted"],["conficts","conflicts"],["confidance","confidence"],["confidantal","confidential"],["confidantally","confidentially"],["confidantals","confidentials"],["confidantial","confidential"],["confidantially","confidentially"],["confidental","confidential"],["confidentally","confidentially"],["confids","confides"],["confifurable","configurable"],["confifuration","configuration"],["confifure","configure"],["confifured","configured"],["configaration","configuration"],["configed","configured"],["configer","configure"],["configiration","configuration"],["configire","configure"],["configiuration","configuration"],["configration","configuration"],["configrations","configurations"],["configred","configured"],["configruation","configuration"],["configruations","configurations"],["configrued","configured"],["configuaration","configuration"],["configuarble","configurable"],["configuare","configure"],["configuared","configured"],["configuarion","configuration"],["configuarions","configurations"],["configuartion","configuration"],["configuartions","configurations"],["configuation","configuration"],["configuations","configurations"],["configue","configure"],["configued","configured"],["configuerd","configured"],["configuered","configured"],["configues","configures"],["configulate","configurate"],["configulation","configuration"],["configulations","configurations"],["configuraion","configuration"],["configuraiton","configuration"],["configuratiens","configurations"],["configuratiom","configuration"],["configurationn","configuration"],["configuratioon","configuration"],["configuratoin","configuration"],["configuratoins","configurations"],["configuraton","configuration"],["configuratons","configurations"],["configuratrions","configurations"],["configuratuion","configuration"],["configureable","configurable"],["configureing","configuring"],["configuretion","configuration"],["configurres","configures"],["configurring","configuring"],["configurses","configures"],["configurtation","configuration"],["configurting","configuring"],["configurtion","configuration"],["configurtoin","configuration"],["configury","configurable"],["configutation","configuration"],["configutations","configurations"],["configute","configure"],["configuted","configured"],["configutes","configures"],["configutration","configuration"],["confim","confirm"],["confimation","confirmation"],["confimations","confirmations"],["confimed","confirmed"],["confiming","confirming"],["confimred","confirmed"],["confims","confirms"],["confiramtion","confirmation"],["confirmacion","confirmation"],["confirmaed","confirmed"],["confirmas","confirms"],["confirmatino","confirmation"],["confirmatinon","confirmation"],["confirmd","confirmed"],["confirmedd","confirmed"],["confirmeed","confirmed"],["confirmming","confirming"],["confiug","config"],["confiugrable","configurable"],["confiugration","configuration"],["confiugrations","configurations"],["confiugre","configure"],["confiugred","configured"],["confiugres","configures"],["confiugring","configuring"],["confiugure","configure"],["conflictin","conflicting"],["conflift","conflict"],["conflit","conflict"],["confoguration","configuration"],["confort","comfort"],["confortable","comfortable"],["confrim","confirm"],["confrimation","confirmation"],["confrimations","confirmations"],["confrimed","confirmed"],["confriming","confirming"],["confrims","confirms"],["confucing","confusing"],["confucion","confusion"],["confuction","conjunction"],["confudion","confusion"],["confue","confuse"],["confued","confused"],["confues","confuses"],["confugiration","configuration"],["confugirble","configurable"],["confugire","configure"],["confugired","configured"],["confugires","configures"],["confugiring","configuring"],["confugrable","configurable"],["confugration","configuration"],["confugre","configure"],["confugred","configured"],["confugres","configures"],["confugring","configuring"],["confugurable","configurable"],["confuguration","configuration"],["confugure","configure"],["confugured","configured"],["confugures","configures"],["confuguring","configuring"],["confuigration","configuration"],["confuigrations","configurations"],["confuing","confusing"],["confunction","conjunction"],["confunder","confounder"],["confunse","confuse"],["confunsed","confused"],["confunses","confuses"],["confunsing","confusing"],["confurable","configurable"],["confuration","configuration"],["confure","configure"],["confured","configured"],["confures","configures"],["confuring","configuring"],["confurse","confuse"],["confursed","confused"],["confurses","confuses"],["confursing","confusing"],["confusting","confusing"],["confuze","confuse"],["confuzed","confused"],["confuzes","confuses"],["confuzing","confusing"],["confuzze","confuse"],["confuzzed","confused"],["confuzzes","confuses"],["confuzzing","confusing"],["congifurable","configurable"],["congifuration","configuration"],["congifure","configure"],["congifured","configured"],["congig","config"],["congigs","configs"],["congiguration","configuration"],["congigurations","configurations"],["congigure","configure"],["congnition","cognition"],["congnitive","cognitive"],["congradulations","congratulations"],["congresional","congressional"],["conider","consider"],["conifguration","configuration"],["conifiguration","configuration"],["conig","config"],["conigurable","configurable"],["conigured","configured"],["conincide","coincide"],["conincidence","coincidence"],["conincident","coincident"],["conincides","coincides"],["coninciding","coinciding"],["coninient","convenient"],["coninstallable","coinstallable"],["coninuation","continuation"],["coninue","continue"],["coninues","continues"],["coninuity","continuity"],["coninuous","continuous"],["conitinue","continue"],["conived","connived"],["conjecutre","conjecture"],["conjonction","conjunction"],["conjonctive","conjunctive"],["conjuction","conjunction"],["conjuctions","conjunctions"],["conjuncion","conjunction"],["conjuntion","conjunction"],["conjuntions","conjunctions"],["conlcude","conclude"],["conlcuded","concluded"],["conlcudes","concludes"],["conlcuding","concluding"],["conlcusion","conclusion"],["conlcusions","conclusions"],["conly","only"],["conmnection","connection"],["conmpress","compress"],["conmpression","compression"],["connaect","connect"],["conncection","connection"],["conncetion","connection"],["connction","connection"],["conncurrent","concurrent"],["connecetd","connected"],["connecion","connection"],["connecions","connections"],["conneciton","connection"],["connecitons","connections"],["connecor","connector"],["connecotr","connector"],["connecstatus","connectstatus"],["connectd","connected"],["connecte","connected"],["connectec","connected"],["connectes","connects"],["connectet","connected"],["connectibity","connectivity"],["connectino","connection"],["connectinos","connections"],["connectins","connections"],["connectiom","connection"],["connectioms","connections"],["connectiona","connection"],["connectionas","connections"],["connectiviy","connectivity"],["connectivty","connectivity"],["connecto","connect"],["connectted","connected"],["connecttion","connection"],["conneection","connection"],["conneiction","connection"],["connektors","connectors"],["connetced","connected"],["connetcion","connection"],["conneted","connected"],["Conneticut","Connecticut"],["connetion","connection"],["connetor","connector"],["connexion","connection"],["connnect","connect"],["connnected","connected"],["connnecting","connecting"],["connnection","connection"],["connnections","connections"],["connnects","connects"],["connot","cannot"],["connstrain","constrain"],["connstrained","constrained"],["connstraint","constraint"],["conntents","contents"],["conntroller","controller"],["conosuer","connoisseur"],["conotation","connotation"],["conotations","connotations"],["conotrol","control"],["conotroled","controlled"],["conotroling","controlling"],["conotrolled","controlled"],["conotrols","controls"],["conpares","compares"],["conplete","complete"],["conpleted","completed"],["conpletes","completes"],["conpleting","completing"],["conpletion","completion"],["conquerd","conquered"],["conquerer","conqueror"],["conquerers","conquerors"],["conqured","conquered"],["conrete","concrete"],["conrol","control"],["conroller","controller"],["conrrespond","correspond"],["conrrespondence","correspondence"],["conrrespondences","correspondences"],["conrrespondent","correspondent"],["conrrespondents","correspondents"],["conrresponding","corresponding"],["conrrespondingly","correspondingly"],["conrresponds","corresponds"],["conrrol","control"],["conrrupt","corrupt"],["conrruptable","corruptible"],["conrrupted","corrupted"],["conrruptible","corruptible"],["conrruption","corruption"],["conrruptions","corruptions"],["conrrupts","corrupts"],["conrtib","contrib"],["conrtibs","contribs"],["consants","constants"],["conscent","consent"],["consciencious","conscientious"],["consciouness","consciousness"],["consctruct","construct"],["consctructed","constructed"],["consctructing","constructing"],["consctruction","construction"],["consctructions","constructions"],["consctructive","constructive"],["consctructor","constructor"],["consctructors","constructors"],["consctructs","constructs"],["consdider","consider"],["consdidered","considered"],["consdiered","considered"],["consdired","considered"],["conseat","conceit"],["conseated","conceited"],["consective","consecutive"],["consectively","consecutively"],["consectutive","consecutive"],["consectuve","consecutive"],["consecuitively","consecutively"],["conseed","concede"],["conseedd","conceded"],["conseeded","conceded"],["conseeds","concedes"],["consenquently","consequently"],["consensis","consensus"],["consentrate","concentrate"],["consentrated","concentrated"],["consentrates","concentrates"],["consept","concept"],["consepts","concepts"],["consequentely","consequently"],["consequentually","consequently"],["consequeseces","consequences"],["consequetive","consecutive"],["consequtive","consecutive"],["consequtively","consecutively"],["consern","concern"],["conserned","concerned"],["conserning","concerning"],["conservativeky","conservatively"],["conservitive","conservative"],["consestently","consistently"],["consevible","conceivable"],["consiciousness","consciousness"],["consicousness","consciousness"],["considder","consider"],["considderation","consideration"],["considdered","considered"],["considdering","considering"],["considerd","considered"],["consideren","considered"],["considerion","consideration"],["considerions","considerations"],["considred","considered"],["consier","consider"],["consiers","considers"],["consifer","consider"],["consifered","considered"],["consious","conscious"],["consisant","consistent"],["consisent","consistent"],["consisently","consistently"],["consisntency","consistency"],["consistancy","consistency"],["consistant","consistent"],["consistantly","consistently"],["consisten","consistent"],["consistend","consistent"],["consistendly","consistently"],["consistendt","consistent"],["consistendtly","consistently"],["consistenly","consistently"],["consistuents","constituents"],["consit","consist"],["consitant","consistent"],["consited","consisted"],["consitency","consistency"],["consitent","consistent"],["consitently","consistently"],["consiting","consisting"],["consitional","conditional"],["consits","consists"],["consituencies","constituencies"],["consituency","constituency"],["consituent","constituent"],["consituents","constituents"],["consitute","constitute"],["consituted","constituted"],["consitutes","constitutes"],["consituting","constituting"],["consitution","constitution"],["consitutional","constitutional"],["consitutuent","constituent"],["consitutuents","constituents"],["consitutute","constitute"],["consitututed","constituted"],["consitututes","constitutes"],["consitututing","constituting"],["consntant","constant"],["consntantly","constantly"],["consntants","constants"],["consol","console"],["consolodate","consolidate"],["consolodated","consolidated"],["consonent","consonant"],["consonents","consonants"],["consorcium","consortium"],["conspiracys","conspiracies"],["conspiriator","conspirator"],["consquence","consequence"],["consquences","consequences"],["consquent","consequent"],["consquently","consequently"],["consrtuct","construct"],["consrtucted","constructed"],["consrtuctor","constructor"],["consrtuctors","constructors"],["consrtucts","constructs"],["consruction","construction"],["consructions","constructions"],["consructor","constructor"],["consructors","constructors"],["constaint","constraint"],["constainted","constrained"],["constaints","constraints"],["constallation","constellation"],["constallations","constellations"],["constan","constant"],["constanly","constantly"],["constantsm","constants"],["constarin","constrain"],["constarint","constraint"],["constarints","constraints"],["constarnation","consternation"],["constatn","constant"],["constatnt","constant"],["constatnts","constants"],["constcurts","constructs"],["constext","context"],["consting","consisting"],["constinually","continually"],["constistency","consistency"],["constists","consists"],["constitently","consistently"],["constituant","constituent"],["constituants","constituents"],["constitue","constitute"],["constitues","constitutes"],["constituion","constitution"],["constituional","constitutional"],["constitutent","constituent"],["constitutents","constituents"],["constly","costly"],["constract","construct"],["constracted","constructed"],["constractor","constructor"],["constractors","constructors"],["constrainsts","constraints"],["constrainted","constrained"],["constraintes","constraints"],["constrainting","constraining"],["constrait","constraint"],["constraits","constraints"],["constrans","constrains"],["constrant","constraint"],["constrants","constraints"],["constrast","contrast"],["constrasts","contrasts"],["constratints","constraints"],["constraucts","constructs"],["constrcuct","construct"],["constrcut","construct"],["constrcuted","constructed"],["constrcution","construction"],["constrcutor","constructor"],["constrcutors","constructors"],["constrcuts","constructs"],["constriants","constraints"],["constrint","constraint"],["constrints","constraints"],["constrollers","controllers"],["construc","construct"],["construces","constructs"],["construcing","constructing"],["construcion","construction"],["construciton","construction"],["construcor","constructor"],["construcs","constructs"],["constructcor","constructor"],["constructer","constructor"],["constructers","constructors"],["constructes","constructs"],["constructred","constructed"],["constructt","construct"],["constructted","constructed"],["constructting","constructing"],["constructtor","constructor"],["constructtors","constructors"],["constructts","constructs"],["constructued","constructed"],["constructur","constructor"],["constructure","constructor"],["constructurs","constructors"],["construktor","constructor"],["construnctor","constructor"],["construrtors","constructors"],["construst","construct"],["construsts","constructs"],["construt","construct"],["construtced","constructed"],["construter","constructor"],["construters","constructors"],["constrution","construction"],["construtor","constructor"],["construtors","constructors"],["consttruct","construct"],["consttructer","constructor"],["consttructers","constructors"],["consttruction","construction"],["consttructor","constructor"],["consttructors","constructors"],["constuct","construct"],["constucted","constructed"],["constucter","constructor"],["constucters","constructors"],["constucting","constructing"],["constuction","construction"],["constuctions","constructions"],["constuctor","constructor"],["constuctors","constructors"],["constucts","constructs"],["consturct","construct"],["consturctor","constructor"],["consuder","consider"],["consuemr","consumer"],["consulant","consultant"],["consultunt","consultant"],["consumate","consummate"],["consumated","consummated"],["consumating","consummating"],["consummed","consumed"],["consummer","consumer"],["consummers","consumers"],["consumtion","consumption"],["contacentaion","concatenation"],["contagen","contagion"],["contaienr","container"],["contaier","container"],["contails","contains"],["contaiminate","contaminate"],["contaiminated","contaminated"],["contaiminating","contaminating"],["containa","contain"],["containees","containers"],["containerr","container"],["containg","containing"],["containging","containing"],["containig","containing"],["containings","containing"],["containining","containing"],["containint","containing"],["containn","contain"],["containner","container"],["containners","containers"],["containns","contains"],["containr","container"],["containrs","containers"],["containted","contained"],["containter","container"],["containters","containers"],["containting","containing"],["containts","contains"],["containuations","continuations"],["contais","contains"],["contaisn","contains"],["contaiun","contain"],["contamporaries","contemporaries"],["contamporary","contemporary"],["contan","contain"],["contaned","contained"],["contanined","contained"],["contaning","containing"],["contanins","contains"],["contans","contains"],["contary","contrary"],["contatenated","concatenated"],["contatining","containing"],["contein","contain"],["conteined","contained"],["conteining","containing"],["conteins","contains"],["contempoary","contemporary"],["contemporaneus","contemporaneous"],["contempory","contemporary"],["conten","contain"],["contence","contents"],["contendor","contender"],["contener","container"],["conteners","containers"],["contenht","content"],["content-negatiotiation","content-negotiation"],["content-negoatiation","content-negotiation"],["content-negoation","content-negotiation"],["content-negociation","content-negotiation"],["content-negogtiation","content-negotiation"],["content-negoitation","content-negotiation"],["content-negoptionsotiation","content-negotiation"],["content-negosiation","content-negotiation"],["content-negotaiation","content-negotiation"],["content-negotaition","content-negotiation"],["content-negotatiation","content-negotiation"],["content-negotation","content-negotiation"],["content-negothiation","content-negotiation"],["content-negotication","content-negotiation"],["content-negotioation","content-negotiation"],["content-negotion","content-negotiation"],["content-negotionation","content-negotiation"],["content-negotiotation","content-negotiation"],["content-negotitaion","content-negotiation"],["content-negotitation","content-negotiation"],["content-negotition","content-negotiation"],["content-negoziation","content-negotiation"],["contentended","contended"],["contentn","content"],["contentss","contents"],["contermporaneous","contemporaneous"],["conterpart","counterpart"],["conterparts","counterparts"],["contersink","countersink"],["contex","context"],["contexta","context"],["contexual","contextual"],["contiains","contains"],["contian","contain"],["contianed","contained"],["contianer","container"],["contianers","containers"],["contianing","containing"],["contians","contains"],["contibute","contribute"],["contibuted","contributed"],["contibutes","contributes"],["contibutor","contributor"],["contigent","contingent"],["contigious","contiguous"],["contigiously","contiguously"],["contignuous","contiguous"],["contigous","contiguous"],["contiguious","contiguous"],["contiguities","continuities"],["contiguos","contiguous"],["contiguous-non","non-contiguous"],["continaing","containing"],["contination","continuation"],["contined","continued"],["continential","continental"],["continging","containing"],["contingous","contiguous"],["continguous","contiguous"],["continious","continuous"],["continiously","continuously"],["continoue","continue"],["continouos","continuous"],["continous","continuous"],["continously","continuously"],["continueing","continuing"],["continuely","continually"],["continuem","continuum"],["continuos","continuous"],["continuosly","continuously"],["continure","continue"],["continusly","continuously"],["continuting","continuing"],["contious","continuous"],["contiously","continuously"],["contiuation","continuation"],["contiue","continue"],["contiuguous","contiguous"],["contiuing","continuing"],["contniue","continue"],["contniued","continued"],["contniues","continues"],["contnt","content"],["contol","control"],["contoler","controller"],["contoller","controller"],["contollers","controllers"],["contolls","controls"],["contols","controls"],["contongency","contingency"],["contorl","control"],["contorled","controlled"],["contorls","controls"],["contoroller","controller"],["contraciction","contradiction"],["contracictions","contradictions"],["contracition","contradiction"],["contracitions","contradictions"],["contracter","contractor"],["contracters","contractors"],["contradically","contradictory"],["contradictary","contradictory"],["contrain","constrain"],["contrainers","containers"],["contraining","constraining"],["contraint","constraint"],["contrainted","constrained"],["contraints","constraints"],["contraitns","constraints"],["contraveining","contravening"],["contravercial","controversial"],["contraversy","controversy"],["contrbution","contribution"],["contribte","contribute"],["contribted","contributed"],["contribtes","contributes"],["contributer","contributor"],["contributers","contributors"],["contries","countries"],["contrinution","contribution"],["contrinutions","contributions"],["contritutions","contributions"],["contriubte","contribute"],["contriubted","contributed"],["contriubtes","contributes"],["contriubting","contributing"],["contriubtion","contribution"],["contriubtions","contributions"],["contrl","control"],["contrller","controller"],["contro","control"],["controlable","controllable"],["controled","controlled"],["controlelrs","controllers"],["controler","controller"],["controlers","controllers"],["controling","controlling"],["controll","control"],["controllerd","controlled"],["controllled","controlled"],["controlller","controller"],["controlllers","controllers"],["controllling","controlling"],["controllor","controller"],["controlls","controls"],["contronl","control"],["contronls","controls"],["controoler","controller"],["controvercial","controversial"],["controvercy","controversy"],["controveries","controversies"],["controversal","controversial"],["controversey","controversy"],["controversials","controversial"],["controvertial","controversial"],["controvery","controversy"],["contrrol","control"],["contrrols","controls"],["contrst","contrast"],["contrsted","contrasted"],["contrsting","contrasting"],["contrsts","contrasts"],["contrtoller","controller"],["contruct","construct"],["contructed","constructed"],["contructing","constructing"],["contruction","construction"],["contructions","constructions"],["contructor","constructor"],["contructors","constructors"],["contructs","constructs"],["contry","country"],["contryie","countryie"],["contsruction","construction"],["contsructor","constructor"],["contstant","constant"],["contstants","constants"],["contstraint","constraint"],["contstructing","constructing"],["contstruction","construction"],["contstructor","constructor"],["contstructors","constructors"],["contur","contour"],["contzains","contains"],["conuntry","country"],["conusmer","consumer"],["convaless","convalesce"],["convax","convex"],["convaxiity","convexity"],["convaxly","convexly"],["convaxness","convexness"],["conveinence","convenience"],["conveinences","conveniences"],["conveinent","convenient"],["conveinience","convenience"],["conveinient","convenient"],["convenant","covenant"],["conveneince","convenience"],["conveniance","convenience"],["conveniant","convenient"],["conveniantly","conveniently"],["convenince","convenience"],["conveninent","convenient"],["convense","convince"],["convential","conventional"],["conventient","convenient"],["convenvient","convenient"],["conver","convert"],["convereted","converted"],["convergance","convergence"],["converion","conversion"],["converions","conversions"],["converison","conversion"],["converitble","convertible"],["conversly","conversely"],["conversoin","conversion"],["converson","conversion"],["conversons","conversions"],["converssion","conversion"],["converst","convert"],["convertable","convertible"],["convertables","convertibles"],["convertet","converted"],["convertion","conversion"],["convertions","conversions"],["convery","convert"],["convesion","conversion"],["convesions","conversions"],["convet","convert"],["conveted","converted"],["conveter","converter"],["conveters","converters"],["conveting","converting"],["convetion","convention"],["convetions","conventions"],["convets","converts"],["conveyer","conveyor"],["conviced","convinced"],["conviencece","convenience"],["convienence","convenience"],["convienent","convenient"],["convienience","convenience"],["convienient","convenient"],["convieniently","conveniently"],["conviently","conveniently"],["conviguration","configuration"],["convigure","configure"],["convination","combination"],["convine","combine"],["convineance","convenience"],["convineances","conveniences"],["convineient","convenient"],["convinence","convenience"],["convinences","conveniences"],["convinent","convenient"],["convinently","conveniently"],["conviniance","convenience"],["conviniances","conveniences"],["convinience","convenience"],["conviniences","conveniences"],["conviniency","convenience"],["conviniencys","conveniences"],["convinient","convenient"],["conviniently","conveniently"],["convining","combining"],["convinve","convince"],["convinved","convinced"],["convinving","convincing"],["convirted","converted"],["convirting","converting"],["convised","convinced"],["convoultion","convolution"],["convoultions","convolutions"],["convovle","convolve"],["convovled","convolved"],["convovling","convolving"],["convrt","convert"],["convserion","conversion"],["conyak","cognac"],["coodinate","coordinate"],["coodinates","coordinates"],["coodrinate","coordinate"],["coodrinates","coordinates"],["cooefficient","coefficient"],["cooefficients","coefficients"],["cooger","cougar"],["cookoo","cuckoo"],["coolent","coolant"],["coolot","culotte"],["coolots","culottes"],["coomand","command"],["coommand","command"],["coomon","common"],["coonstantly","constantly"],["coonstructed","constructed"],["cooordinate","coordinate"],["cooordinates","coordinates"],["coopearte","cooperate"],["coopeartes","cooperates"],["cooporative","cooperative"],["coordanate","coordinate"],["coordanates","coordinates"],["coordenate","coordinate"],["coordenates","coordinates"],["coordiante","coordinate"],["coordiantes","coordinates"],["coordiantion","coordination"],["coordiate","coordinate"],["coordiates","coordinates"],["coordiinates","coordinates"],["coordinatess","coordinates"],["coordinats","coordinates"],["coordindate","coordinate"],["coordindates","coordinates"],["coordine","coordinate"],["coordines","coordinates"],["coording","according"],["coordingate","coordinate"],["coordingates","coordinates"],["coordingly","accordingly"],["coordiniate","coordinate"],["coordiniates","coordinates"],["coordinite","coordinate"],["coordinites","coordinates"],["coordinnate","coordinate"],["coordinnates","coordinates"],["coordintae","coordinate"],["coordintaes","coordinates"],["coordintate","coordinate"],["coordintates","coordinates"],["coordinte","coordinate"],["coordintes","coordinates"],["coorditate","coordinate"],["coordonate","coordinate"],["coordonated","coordinated"],["coordonates","coordinates"],["coorespond","correspond"],["cooresponded","corresponded"],["coorespondend","correspondent"],["coorespondent","correspondent"],["cooresponding","corresponding"],["cooresponds","corresponds"],["cooridate","coordinate"],["cooridated","coordinated"],["cooridates","coordinates"],["cooridnate","coordinate"],["cooridnated","coordinated"],["cooridnates","coordinates"],["coorinate","coordinate"],["coorinates","coordinates"],["coorination","coordination"],["cootdinate","coordinate"],["cootdinated","coordinated"],["cootdinates","coordinates"],["cootdinating","coordinating"],["cootdination","coordination"],["copeing","copying"],["copiese","copies"],["copiing","copying"],["copiler","compiler"],["coplete","complete"],["copleted","completed"],["copletely","completely"],["copletes","completes"],["copmetitors","competitors"],["copmilation","compilation"],["copmonent","component"],["copmutations","computations"],["copntroller","controller"],["coponent","component"],["copoying","copying"],["coppermines","coppermine"],["coppied","copied"],["copright","copyright"],["coprighted","copyrighted"],["coprights","copyrights"],["coproccessor","coprocessor"],["coproccessors","coprocessors"],["coprocesor","coprocessor"],["coprorate","corporate"],["coprorates","corporates"],["coproration","corporation"],["coprorations","corporations"],["coprright","copyright"],["coprrighted","copyrighted"],["coprrights","copyrights"],["copstruction","construction"],["copuright","copyright"],["copurighted","copyrighted"],["copurights","copyrights"],["copute","compute"],["coputed","computed"],["coputer","computer"],["coputes","computes"],["copver","cover"],["copyed","copied"],["copyeight","copyright"],["copyeighted","copyrighted"],["copyeights","copyrights"],["copyied","copied"],["copyrigth","copyright"],["copyrigthed","copyrighted"],["copyrigths","copyrights"],["copyritght","copyright"],["copyritghted","copyrighted"],["copyritghts","copyrights"],["copyrught","copyright"],["copyrughted","copyrighted"],["copyrughts","copyrights"],["copys","copies"],["copytight","copyright"],["copytighted","copyrighted"],["copytights","copyrights"],["copyting","copying"],["corale","chorale"],["cordinate","coordinate"],["cordinates","coordinates"],["cordoroy","corduroy"],["cordump","coredump"],["corecct","correct"],["corecctly","correctly"],["corect","correct"],["corected","corrected"],["corecting","correcting"],["corection","correction"],["corectly","correctly"],["corectness","correctness"],["corects","corrects"],["coreespond","correspond"],["coregated","corrugated"],["corelate","correlate"],["corelated","correlated"],["corelates","correlates"],["corellation","correlation"],["coreolis","Coriolis"],["corerct","correct"],["corerctly","correctly"],["corespond","correspond"],["coresponded","corresponded"],["corespondence","correspondence"],["coresponding","corresponding"],["coresponds","corresponds"],["corfirms","confirms"],["coridal","cordial"],["corispond","correspond"],["cornmitted","committed"],["corordinate","coordinate"],["corordinates","coordinates"],["corordination","coordination"],["corosbonding","corresponding"],["corosion","corrosion"],["corospond","correspond"],["corospondance","correspondence"],["corosponded","corresponded"],["corospondence","correspondence"],["corosponding","corresponding"],["corosponds","corresponds"],["corousel","carousel"],["corparate","corporate"],["corperations","corporations"],["corpration","corporation"],["corproration","corporation"],["corprorations","corporations"],["corrcect","correct"],["corrct","correct"],["corrdinate","coordinate"],["corrdinated","coordinated"],["corrdinates","coordinates"],["corrdinating","coordinating"],["corrdination","coordination"],["corrdinator","coordinator"],["corrdinators","coordinators"],["correclty","correctly"],["correcly","correctly"],["correcpond","correspond"],["correcponded","corresponded"],["correcponding","corresponding"],["correcponds","corresponds"],["correcs","corrects"],["correctably","correctable"],["correctely","correctly"],["correcters","correctors"],["correctlly","correctly"],["correctnes","correctness"],["correcton","correction"],["correctons","corrections"],["correcttness","correctness"],["correctures","correctors"],["correcty","correctly"],["correctyly","correctly"],["correcxt","correct"],["correcy","correct"],["correect","correct"],["correectly","correctly"],["correespond","correspond"],["correesponded","corresponded"],["correespondence","correspondence"],["correespondences","correspondences"],["correespondent","correspondent"],["correesponding","corresponding"],["correesponds","corresponds"],["correlasion","correlation"],["correlatd","correlated"],["correllate","correlate"],["correllation","correlation"],["correllations","correlations"],["correnspond","correspond"],["corrensponded","corresponded"],["correnspondence","correspondence"],["correnspondences","correspondences"],["correnspondent","correspondent"],["correnspondents","correspondents"],["corrensponding","corresponding"],["corrensponds","corresponds"],["correograph","choreograph"],["correponding","corresponding"],["correponds","corresponds"],["correponsing","corresponding"],["correposding","corresponding"],["correpsondence","correspondence"],["correpsonding","corresponding"],["corresond","correspond"],["corresonded","corresponded"],["corresonding","corresponding"],["corresonds","corresponds"],["correspdoning","corresponding"],["correspending","corresponding"],["correspinding","corresponding"],["correspnding","corresponding"],["correspodence","correspondence"],["correspoding","corresponding"],["correspoinding","corresponding"],["correspomd","correspond"],["correspomded","corresponded"],["correspomdence","correspondence"],["correspomdences","correspondences"],["correspomdent","correspondent"],["correspomdents","correspondents"],["correspomding","corresponding"],["correspomds","corresponds"],["correspon","correspond"],["correspondance","correspondence"],["correspondances","correspondences"],["correspondant","correspondent"],["correspondants","correspondents"],["correspondd","corresponded"],["correspondend","correspondent"],["correspondes","corresponds"],["correspondg","corresponding"],["correspondig","corresponding"],["corresponed","corresponded"],["corresponging","corresponding"],["corresponing","corresponding"],["correspons","corresponds"],["corresponsding","corresponding"],["corresponsing","corresponding"],["correspont","correspond"],["correspontence","correspondence"],["correspontences","correspondences"],["correspontend","correspondent"],["correspontent","correspondent"],["correspontents","correspondents"],["corresponting","corresponding"],["corresponts","corresponds"],["correspoond","correspond"],["corressponding","corresponding"],["corret","correct"],["correted","corrected"],["corretion","correction"],["corretly","correctly"],["corridoor","corridor"],["corridoors","corridors"],["corrispond","correspond"],["corrispondant","correspondent"],["corrispondants","correspondents"],["corrisponded","corresponded"],["corrispondence","correspondence"],["corrispondences","correspondences"],["corrisponding","corresponding"],["corrisponds","corresponds"],["corrleation","correlation"],["corrleations","correlations"],["corrolated","correlated"],["corrolates","correlates"],["corrolation","correlation"],["corrolations","correlations"],["corrrect","correct"],["corrrected","corrected"],["corrrecting","correcting"],["corrrection","correction"],["corrrections","corrections"],["corrrectly","correctly"],["corrrectness","correctness"],["corrrects","corrects"],["corrresponding","corresponding"],["corrresponds","corresponds"],["corrrupt","corrupt"],["corrrupted","corrupted"],["corrruption","corruption"],["corrseponding","corresponding"],["corrspond","correspond"],["corrsponded","corresponded"],["corrsponding","corresponding"],["corrsponds","corresponds"],["corrupeted","corrupted"],["corruptable","corruptible"],["corruptiuon","corruption"],["cors-site","cross-site"],["cors-sute","cross-site"],["corse","course"],["corsor","cursor"],["corss-compiling","cross-compiling"],["corss-site","cross-site"],["corss-sute","cross-site"],["corsshair","crosshair"],["corsshairs","crosshairs"],["corssite","cross-site"],["corsssite","cross-site"],["corsssute","cross-site"],["corssute","cross-site"],["corupt","corrupt"],["corupted","corrupted"],["coruption","corruption"],["coruptions","corruptions"],["corupts","corrupts"],["corus","chorus"],["corvering","covering"],["cosed","closed"],["cosnsrain","constrain"],["cosnsrained","constrained"],["cosntitutive","constitutive"],["cosntrain","constrain"],["cosntrained","constrained"],["cosntraining","constraining"],["cosntraint","constraint"],["cosntraints","constraints"],["cosntructed","constructed"],["cosntructor","constructor"],["cosnumer","consumer"],["cosolation","consolation"],["cosole","console"],["cosoled","consoled"],["cosoles","consoles"],["cosoling","consoling"],["costant","constant"],["costexpr","constexpr"],["costitution","constitution"],["costruct","construct"],["costructer","constructor"],["costructor","constructor"],["costumary","customary"],["costumize","customize"],["cotain","contain"],["cotained","contained"],["cotainer","container"],["cotains","contains"],["cotave","octave"],["cotaves","octaves"],["cotnain","contain"],["cotnained","contained"],["cotnainer","container"],["cotnainers","containers"],["cotnaining","containing"],["cotnains","contains"],["cotranser","cotransfer"],["cotrasferred","cotransferred"],["cotrasfers","cotransfers"],["cotrol","control"],["cotroll","control"],["cotrolled","controlled"],["cotroller","controller"],["cotrolles","controls"],["cotrolling","controlling"],["cotrolls","controls"],["cotrols","controls"],["cotten","cotton"],["coucil","council"],["coud","could"],["coudn't","couldn't"],["coudnt","couldn't"],["coul","could"],["could'nt","couldn't"],["could't","couldn't"],["couldent","couldn't"],["coulden`t","couldn't"],["couldn;t","couldn't"],["couldnt'","couldn't"],["couldnt","couldn't"],["couldnt;","couldn't"],["coulmns","columns"],["couln't","couldn't"],["couloumb","coulomb"],["coult","could"],["coummunities","communities"],["coummunity","community"],["coumpound","compound"],["coumpounds","compounds"],["counded","counted"],["counding","counting"],["coundition","condition"],["counds","counts"],["counld","could"],["counpound","compound"],["counpounds","compounds"],["countain","contain"],["countainer","container"],["countainers","containers"],["countains","contains"],["counterfit","counterfeit"],["counterfits","counterfeits"],["counterintuive","counter intuitive"],["countermeausure","countermeasure"],["countermeausures","countermeasures"],["counterpar","counterpart"],["counterpoart","counterpart"],["counterpoarts","counterparts"],["countinue","continue"],["courtesey","courtesy"],["cousing","cousin"],["couted","counted"],["couter","counter"],["coutermeasuere","countermeasure"],["coutermeasueres","countermeasures"],["coutermeasure","countermeasure"],["coutermeasures","countermeasures"],["couterpart","counterpart"],["couting","counting"],["coutner","counter"],["coutners","counters"],["couuld","could"],["couuldn't","couldn't"],["covarage","coverage"],["covarages","coverages"],["covarege","coverage"],["covection","convection"],["covention","convention"],["coventions","conventions"],["coverd","covered"],["covere","cover"],["coveres","covers"],["covergence","convergence"],["coverred","covered"],["coversion","conversion"],["coversions","conversions"],["coverting","converting"],["covnersion","conversion"],["covnert","convert"],["covnerted","converted"],["covnerter","converter"],["covnerters","converters"],["covnertible","convertible"],["covnerting","converting"],["covnertor","converter"],["covnertors","converters"],["covnerts","converts"],["covriance","covariance"],["covriate","covariate"],["covriates","covariates"],["coyp","copy"],["coypright","copyright"],["coyprighted","copyrighted"],["coyprights","copyrights"],["coyright","copyright"],["coyrighted","copyrighted"],["coyrights","copyrights"],["cpacities","capacities"],["cpacity","capacity"],["cpation","caption"],["cpcheck","cppcheck"],["cpontent","content"],["cppp","cpp"],["cpuld","could"],["craced","graced"],["craceful","graceful"],["cracefully","gracefully"],["cracefulness","gracefulness"],["craceless","graceless"],["cracing","gracing"],["crahed","crashed"],["crahes","crashes"],["crahses","crashes"],["crashaes","crashes"],["crasheed","crashed"],["crashees","crashes"],["crashess","crashes"],["crashign","crashing"],["crashs","crashes"],["crationist","creationist"],["crationists","creationists"],["creaate","create"],["creadential","credential"],["creadentialed","credentialed"],["creadentials","credentials"],["creaed","created"],["creaeted","created"],["creasoat","creosote"],["creastor","creator"],["creatation","creation"],["createa","create"],["createable","creatable"],["createdd","created"],["createing","creating"],["createive","creative"],["creatning","creating"],["creatre","create"],["creatred","created"],["creats","creates"],["credate","created"],["credetial","credential"],["credetials","credentials"],["credidential","credential"],["credidentials","credentials"],["credintial","credential"],["credintials","credentials"],["credis","credits"],["credists","credits"],["creditted","credited"],["creedence","credence"],["cresent","crescent"],["cresits","credits"],["cretae","create"],["cretaed","created"],["cretaes","creates"],["cretaing","creating"],["cretate","create"],["cretated","created"],["cretates","creates"],["cretating","creating"],["cretator","creator"],["cretators","creators"],["creted","created"],["creteria","criteria"],["crewsant","croissant"],["cricital","critical"],["cricitally","critically"],["cricitals","criticals"],["crirical","critical"],["crirically","critically"],["criricals","criticals"],["critcal","critical"],["critcally","critically"],["critcals","criticals"],["critcial","critical"],["critcially","critically"],["critcials","criticals"],["criteak","critique"],["critera","criteria"],["critereon","criterion"],["criterias","criteria"],["criteriom","criterion"],["criticial","critical"],["criticially","critically"],["criticials","criticals"],["criticists","critics"],["critiera","criteria"],["critiical","critical"],["critiically","critically"],["critiicals","criticals"],["critisising","criticising"],["critisism","criticism"],["critisisms","criticisms"],["critized","criticized"],["critizing","criticizing"],["croch","crotch"],["crockadile","crocodile"],["crockodiles","crocodiles"],["cronological","chronological"],["cronologically","chronologically"],["croppped","cropped"],["cros","cross"],["cros-site","cross-site"],["cros-sute","cross-site"],["croshet","crochet"],["crosreference","cross-reference"],["crosreferenced","cross-referenced"],["crosreferences","cross-references"],["cross-commpilation","cross-compilation"],["cross-orgin","cross-origin"],["crossgne","crossgen"],["crossin","crossing"],["crossite","cross-site"],["crossreference","cross-reference"],["crossreferenced","cross-referenced"],["crossreferences","cross-references"],["crosssite","cross-site"],["crosssute","cross-site"],["crossute","cross-site"],["crowdsigna","crowdsignal"],["crowkay","croquet"],["crowm","crown"],["crrespond","correspond"],["crsytal","crystal"],["crsytalline","crystalline"],["crsytallisation","crystallisation"],["crsytallise","crystallise"],["crsytallization","crystallization"],["crsytallize","crystallize"],["crsytallographic","crystallographic"],["crsytals","crystals"],["crtical","critical"],["crtically","critically"],["crticals","criticals"],["crticised","criticised"],["crucialy","crucially"],["crucifiction","crucifixion"],["cruncing","crunching"],["crurrent","current"],["crusies","cruises"],["crusor","cursor"],["crutial","crucial"],["crutially","crucially"],["crutialy","crucially"],["crypted","encrypted"],["cryptocraphic","cryptographic"],["cryptograpic","cryptographic"],["crystalisation","crystallisation"],["cryto","crypto"],["crytpo","crypto"],["csae","case"],["csaes","cases"],["cteate","create"],["cteateing","creating"],["cteater","creator"],["cteates","creates"],["cteating","creating"],["cteation","creation"],["cteations","creations"],["cteator","creator"],["ctificate","certificate"],["ctificated","certificated"],["ctificates","certificates"],["ctification","certification"],["cuasality","causality"],["cuasation","causation"],["cuase","cause"],["cuased","caused"],["cuases","causes"],["cuasing","causing"],["cuestion","question"],["cuestioned","questioned"],["cuestions","questions"],["cuileoga","cuileog"],["culiminating","culminating"],["cumlative","cumulative"],["cummand","command"],["cummulated","cumulated"],["cummulative","cumulative"],["cummunicate","communicate"],["cumulatative","cumulative"],["cumulattive","cumulative"],["cuncurency","concurrency"],["curch","church"],["curcuit","circuit"],["curcuits","circuits"],["curcumstance","circumstance"],["curcumstances","circumstances"],["cureful","careful"],["curefully","carefully"],["curefuly","carefully"],["curent","current"],["curentfilter","currentfilter"],["curently","currently"],["curernt","current"],["curerntly","currently"],["curev","curve"],["curevd","curved"],["curevs","curves"],["curiousities","curiosities"],["curiousity's","curiosity's"],["curiousity","curiosity"],["curnilinear","curvilinear"],["currecnies","currencies"],["currecny","currency"],["currected","corrected"],["currecting","correcting"],["curreent","current"],["curreents","currents"],["curremt","current"],["curremtly","currently"],["curremts","currents"],["curren","current"],["currenlty","currently"],["currenly","currently"],["currennt","current"],["currenntly","currently"],["currennts","currents"],["currentl","currently"],["currentlly","currently"],["currentry","currently"],["currenty","currently"],["curresponding","corresponding"],["curretly","currently"],["curretnly","currently"],["curriculem","curriculum"],["currious","curious"],["currnet","current"],["currnt","current"],["currntly","currently"],["curros","cursor"],["currrency","currency"],["currrent","current"],["currrently","currently"],["curruent","current"],["currupt","corrupt"],["curruptable","corruptible"],["currupted","corrupted"],["curruptible","corruptible"],["curruption","corruption"],["curruptions","corruptions"],["currupts","corrupts"],["currus","cirrus"],["curser","cursor"],["cursot","cursor"],["cursro","cursor"],["curvatrue","curvature"],["curvatrues","curvatures"],["curvelinear","curvilinear"],["cusstom","custom"],["cusstomer","customer"],["cusstomers","customers"],["cusstomizable","customizable"],["cusstomization","customization"],["cusstomize","customize"],["cusstomized","customized"],["cusstoms","customs"],["custoisable","customisable"],["custoisation","customisation"],["custoise","customise"],["custoised","customised"],["custoiser","customiser"],["custoisers","customisers"],["custoising","customising"],["custoizable","customizable"],["custoization","customization"],["custoize","customize"],["custoized","customized"],["custoizer","customizer"],["custoizers","customizers"],["custoizing","customizing"],["customable","customizable"],["customie","customize"],["customied","customized"],["customisaton","customisation"],["customisatons","customisations"],["customizaton","customization"],["customizatons","customizations"],["customizeble","customizable"],["customn","custom"],["customns","customs"],["customsied","customised"],["customzied","customized"],["custon","custom"],["custonary","customary"],["custoner","customer"],["custoners","customers"],["custonisable","customisable"],["custonisation","customisation"],["custonise","customise"],["custonised","customised"],["custoniser","customiser"],["custonisers","customisers"],["custonising","customising"],["custonizable","customizable"],["custonization","customization"],["custonize","customize"],["custonized","customized"],["custonizer","customizer"],["custonizers","customizers"],["custonizing","customizing"],["custons","customs"],["custormer","customer"],["custum","custom"],["custumer","customer"],["custumised","customised"],["custumized","customized"],["custums","customs"],["cutom","custom"],["cutted","cut"],["cuurently","currently"],["cuurrent","current"],["cuurrents","currents"],["cvignore","cvsignore"],["cxan","cyan"],["cycic","cyclic"],["cyclinder","cylinder"],["cyclinders","cylinders"],["cycular","circular"],["cygin","cygwin"],["cylcic","cyclic"],["cylcical","cyclical"],["cyle","cycle"],["cylic","cyclic"],["cylider","cylinder"],["cyliders","cylinders"],["cylindical","cylindrical"],["cylindre","cylinder"],["cyllinder","cylinder"],["cyllinders","cylinders"],["cylnder","cylinder"],["cylnders","cylinders"],["cylynders","cylinders"],["cymk","CMYK"],["cyphersuite","ciphersuite"],["cyphersuites","ciphersuites"],["cyphertext","ciphertext"],["cyphertexts","ciphertexts"],["cyprt","crypt"],["cyprtic","cryptic"],["cyprto","crypto"],["Cyrllic","Cyrillic"],["cyrpto","crypto"],["cyrrent","current"],["cyrrilic","Cyrillic"],["cyrstal","crystal"],["cyrstalline","crystalline"],["cyrstallisation","crystallisation"],["cyrstallise","crystallise"],["cyrstallization","crystallization"],["cyrstallize","crystallize"],["cyrstals","crystals"],["cyrto","crypto"],["cywgin","Cygwin"],["daa","data"],["dabase","database"],["daclaration","declaration"],["dacquiri","daiquiri"],["dadlock","deadlock"],["daed","dead"],["dafault","default"],["dafaults","defaults"],["dafaut","default"],["dafualt","default"],["dafualted","defaulted"],["dafualts","defaults"],["daita","data"],["dake","take"],["dalmation","Dalmatian"],["dalta","delta"],["damamge","damage"],["damamged","damaged"],["damamges","damages"],["damamging","damaging"],["damange","damage"],["damanged","damaged"],["damanges","damages"],["damanging","damaging"],["damenor","demeanor"],["damge","damage"],["dammage","damage"],["dammages","damages"],["danceing","dancing"],["dandidates","candidates"],["daplicating","duplicating"],["Dardenelles","Dardanelles"],["dasboard","dashboard"],["dasboards","dashboards"],["dasdot","dashdot"],["dashbaord","dashboard"],["dashbaords","dashboards"],["dashboad","dashboard"],["dashboads","dashboards"],["dashboar","dashboard"],["dashboars","dashboards"],["dashbord","dashboard"],["dashbords","dashboards"],["dashs","dashes"],["data-strcuture","data-structure"],["data-strcutures","data-structures"],["databaase","database"],["databaases","databases"],["databae","database"],["databaes","database"],["databaeses","databases"],["databas","database"],["databsae","database"],["databsaes","databases"],["databse","database"],["databses","databases"],["datadsir","datadir"],["dataet","dataset"],["dataets","datasets"],["datas","data"],["datastrcuture","datastructure"],["datastrcutures","datastructures"],["datastrem","datastream"],["datatbase","database"],["datatbases","databases"],["datatgram","datagram"],["datatgrams","datagrams"],["datatore","datastore"],["datatores","datastores"],["datatpe","datatype"],["datatpes","datatypes"],["datatpye","datatype"],["datatpyes","datatypes"],["datatset","dataset"],["datatsets","datasets"],["datatstructure","datastructure"],["datatstructures","datastructures"],["datattype","datatype"],["datattypes","datatypes"],["datatye","datatype"],["datatyep","datatype"],["datatyepe","datatype"],["datatyepes","datatypes"],["datatyeps","datatypes"],["datatyes","datatypes"],["datatyoe","datatype"],["datatyoes","datatypes"],["datatytpe","datatype"],["datatytpes","datatypes"],["dataum","datum"],["datbase","database"],["datbases","databases"],["datecreatedd","datecreated"],["datection","detection"],["datections","detections"],["datee","date"],["dateset","dataset"],["datesets","datasets"],["datset","dataset"],["datsets","datasets"],["daugher","daughter"],["daugther","daughter"],["daugthers","daughters"],["dbeian","Debian"],["DCHP","DHCP"],["dcok","dock"],["dcoked","docked"],["dcoker","docker"],["dcoking","docking"],["dcoks","docks"],["dcument","document"],["dcumented","documented"],["dcumenting","documenting"],["dcuments","documents"],["ddelete","delete"],["de-actived","deactivated"],["de-duplacate","de-duplicate"],["de-duplacated","de-duplicated"],["de-duplacates","de-duplicates"],["de-duplacation","de-duplication"],["de-duplacte","de-duplicate"],["de-duplacted","de-duplicated"],["de-duplactes","de-duplicates"],["de-duplaction","de-duplication"],["de-duplaicate","de-duplicate"],["de-duplaicated","de-duplicated"],["de-duplaicates","de-duplicates"],["de-duplaication","de-duplication"],["de-duplate","de-duplicate"],["de-duplated","de-duplicated"],["de-duplates","de-duplicates"],["de-duplation","de-duplication"],["de-fualt","default"],["de-fualts","defaults"],["de-registeres","de-registers"],["deacitivation","deactivation"],["deacitvated","deactivated"],["deactivatiion","deactivation"],["deactive","deactivate"],["deactiveate","deactivate"],["deactived","deactivated"],["deactivete","deactivate"],["deactiveted","deactivated"],["deactivetes","deactivates"],["deactiviate","deactivate"],["deactiviates","deactivates"],["deactiving","deactivating"],["deaemon","daemon"],["deafault","default"],["deafualt","default"],["deafualts","defaults"],["deafult","default"],["deafulted","defaulted"],["deafults","defaults"],["deail","deal"],["deailing","dealing"],["deaktivate","deactivate"],["deaktivated","deactivated"],["dealed","dealt"],["dealilng","dealing"],["dealloacte","deallocate"],["deallocaed","deallocated"],["dealocate","deallocate"],["dealte","delete"],["deamand","demand"],["deamanding","demanding"],["deamands","demands"],["deambigate","disambiguate"],["deambigates","disambiguates"],["deambigation","disambiguation"],["deambiguage","disambiguate"],["deambiguages","disambiguates"],["deambiguate","disambiguate"],["deambiguates","disambiguates"],["deambiguation","disambiguation"],["deamiguate","disambiguate"],["deamiguates","disambiguates"],["deamiguation","disambiguation"],["deamon","daemon"],["deamonisation","daemonisation"],["deamonise","daemonise"],["deamonised","daemonised"],["deamonises","daemonises"],["deamonising","daemonising"],["deamonization","daemonization"],["deamonize","daemonize"],["deamonized","daemonized"],["deamonizes","daemonizes"],["deamonizing","daemonizing"],["deamons","daemons"],["deassering","deasserting"],["deatch","detach"],["deatched","detached"],["deatches","detaches"],["deatching","detaching"],["deatil","detail"],["deatiled","detailed"],["deatiling","detailing"],["deatils","details"],["deativate","deactivate"],["deativated","deactivated"],["deativates","deactivates"],["deativation","deactivation"],["deattach","detach"],["deattached","detached"],["deattaches","detaches"],["deattaching","detaching"],["deattachment","detachment"],["deault","default"],["deaults","defaults"],["deauthenication","deauthentication"],["debain","Debian"],["debateable","debatable"],["debbuger","debugger"],["debehlper","debhelper"],["debgu","debug"],["debgug","debug"],["debguging","debugging"],["debhlper","debhelper"],["debia","Debian"],["debiab","Debian"],["debians","Debian's"],["debina","Debian"],["debloking","deblocking"],["debnia","Debian"],["debth","depth"],["debths","depths"],["debudg","debug"],["debudgged","debugged"],["debudgger","debugger"],["debudgging","debugging"],["debudgs","debugs"],["debufs","debugfs"],["debugee","debuggee"],["debuger","debugger"],["debugg","debug"],["debuggg","debug"],["debuggge","debuggee"],["debuggged","debugged"],["debugggee","debuggee"],["debuggger","debugger"],["debuggging","debugging"],["debugggs","debugs"],["debugginf","debugging"],["debuggs","debugs"],["debuging","debugging"],["decaffinated","decaffeinated"],["decalare","declare"],["decalared","declared"],["decalares","declares"],["decalaring","declaring"],["decalration","declaration"],["decalrations","declarations"],["decalratiosn","declarations"],["decapsulting","decapsulating"],["decathalon","decathlon"],["deccelerate","decelerate"],["deccelerated","decelerated"],["deccelerates","decelerates"],["deccelerating","decelerating"],["decceleration","deceleration"],["deccrement","decrement"],["deccremented","decremented"],["deccrements","decrements"],["Decemer","December"],["decend","descend"],["decendant","descendant"],["decendants","descendants"],["decendentant","descendant"],["decendentants","descendants"],["decending","descending"],["deciaml","decimal"],["deciamls","decimals"],["decices","decides"],["decidate","dedicate"],["decidated","dedicated"],["decidates","dedicates"],["decideable","decidable"],["decidely","decidedly"],["decie","decide"],["deciedd","decided"],["deciede","decide"],["decieded","decided"],["deciedes","decides"],["decieding","deciding"],["decieds","decides"],["deciemal","decimal"],["decies","decides"],["decieve","deceive"],["decieved","deceived"],["decieves","deceives"],["decieving","deceiving"],["decimials","decimals"],["decison","decision"],["decission","decision"],["declar","declare"],["declaraion","declaration"],["declaraions","declarations"],["declarated","declared"],["declaratinos","declarations"],["declaratiom","declaration"],["declaraton","declaration"],["declaratons","declarations"],["declarayion","declaration"],["declarayions","declarations"],["declard","declared"],["declarded","declared"],["declaritive","declarative"],["declaritively","declaratively"],["declarnig","declaring"],["declartated","declared"],["declartation","declaration"],["declartations","declarations"],["declartative","declarative"],["declartator","declarator"],["declartators","declarators"],["declarted","declared"],["declartion","declaration"],["declartions","declarations"],["declartiuon","declaration"],["declartiuons","declarations"],["declartiuve","declarative"],["declartive","declarative"],["declartor","declarator"],["declartors","declarators"],["declataions","declarations"],["declatation","declaration"],["declatations","declarations"],["declated","declared"],["declation","declaration"],["declations","declarations"],["declatory","declaratory"],["decleration","declaration"],["declerations","declarations"],["declration","declaration"],["decocde","decode"],["decocded","decoded"],["decocder","decoder"],["decocders","decoders"],["decocdes","decodes"],["decocding","decoding"],["decocdings","decodings"],["decodded","decoded"],["decodding","decoding"],["decodeing","decoding"],["decomissioned","decommissioned"],["decomissioning","decommissioning"],["decommissionn","decommission"],["decommissionned","decommissioned"],["decommpress","decompress"],["decomoposition","decomposition"],["decomposion","decomposition"],["decomposit","decompose"],["decomposited","decomposed"],["decompositing","decomposing"],["decompositon","decomposition"],["decompositons","decompositions"],["decomposits","decomposes"],["decompostion","decomposition"],["decompostition","decomposition"],["decompres","decompress"],["decompresed","decompressed"],["decompreser","decompressor"],["decompreses","decompresses"],["decompresing","decompressing"],["decompresion","decompression"],["decompresor","decompressor"],["decompressd","decompressed"],["decompresser","decompressor"],["decompresssion","decompression"],["decompse","decompose"],["decond","decode"],["deconde","decode"],["deconded","decoded"],["deconder","decoder"],["deconders","decoders"],["decondes","decodes"],["deconding","decoding"],["decondings","decodings"],["deconstract","deconstruct"],["deconstracted","deconstructed"],["deconstrcutor","deconstructor"],["decopose","decompose"],["decoposes","decomposes"],["decoraded","decorated"],["decoratrion","decoration"],["decorde","decode"],["decorded","decoded"],["decorder","decoder"],["decorders","decoders"],["decordes","decodes"],["decording","decoding"],["decordings","decodings"],["decorrellation","decorrelation"],["decortator","decorator"],["decortive","decorative"],["decose","decode"],["decosed","decoded"],["decoser","decoder"],["decosers","decoders"],["decoses","decodes"],["decosing","decoding"],["decosings","decodings"],["decration","decoration"],["decreace","decrease"],["decreas","decrease"],["decremenet","decrement"],["decremenetd","decremented"],["decremeneted","decremented"],["decrese","decrease"],["decress","decrees"],["decribe","describe"],["decribed","described"],["decribes","describes"],["decribing","describing"],["decriptive","descriptive"],["decriptor","descriptor"],["decriptors","descriptors"],["decrmenet","decrement"],["decrmenetd","decremented"],["decrmeneted","decremented"],["decrment","decrement"],["decrmented","decremented"],["decrmenting","decrementing"],["decrments","decrements"],["decroation","decoration"],["decrpt","decrypt"],["decrpted","decrypted"],["decrption","decryption"],["decrytion","decryption"],["decscription","description"],["decsion","decision"],["decsions","decisions"],["decsiptors","descriptors"],["decsribed","described"],["decsriptor","descriptor"],["decsriptors","descriptors"],["decstiption","description"],["decstiptions","descriptions"],["dectect","detect"],["dectected","detected"],["dectecting","detecting"],["dectection","detection"],["dectections","detections"],["dectector","detector"],["dectivate","deactivate"],["decutable","deductible"],["decutables","deductibles"],["decypher","decipher"],["decyphered","deciphered"],["ded","dead"],["dedault","default"],["dedections","detections"],["dedented","indented"],["dedfined","defined"],["dedidate","dedicate"],["dedidated","dedicated"],["dedidates","dedicates"],["dedly","deadly"],["deductable","deductible"],["deductables","deductibles"],["deduplacate","deduplicate"],["deduplacated","deduplicated"],["deduplacates","deduplicates"],["deduplacation","deduplication"],["deduplacte","deduplicate"],["deduplacted","deduplicated"],["deduplactes","deduplicates"],["deduplaction","deduplication"],["deduplaicate","deduplicate"],["deduplaicated","deduplicated"],["deduplaicates","deduplicates"],["deduplaication","deduplication"],["deduplate","deduplicate"],["deduplated","deduplicated"],["deduplates","deduplicates"],["deduplation","deduplication"],["dedupliate","deduplicate"],["dedupliated","deduplicated"],["deecorator","decorator"],["deeep","deep"],["deelte","delete"],["deendencies","dependencies"],["deendency","dependency"],["defail","detail"],["defailt","default"],["defalt","default"],["defalts","defaults"],["defalut","default"],["defargkey","defragkey"],["defatult","default"],["defaukt","default"],["defaul","default"],["defaulat","default"],["defaulats","defaults"],["defauld","default"],["defaulds","defaults"],["defaule","default"],["defaules","defaults"],["defaulf","default"],["defaulfs","defaults"],["defaulg","default"],["defaulgs","defaults"],["defaulh","default"],["defaulhs","defaults"],["defauling","defaulting"],["defaulit","default"],["defaulits","defaults"],["defaulkt","default"],["defaulkts","defaults"],["defaull","default"],["defaulls","defaults"],["defaullt","default"],["defaullts","defaults"],["defaulr","default"],["defaulrs","defaults"],["defaulrt","default"],["defaulrts","defaults"],["defaultet","defaulted"],["defaulty","default"],["defauly","default"],["defaulys","defaults"],["defaut","default"],["defautl","default"],["defautled","defaulted"],["defautling","defaulting"],["defautls","defaults"],["defautlt","default"],["defautly","default"],["defauts","defaults"],["defautt","default"],["defautted","defaulted"],["defautting","defaulting"],["defautts","defaults"],["defeault","default"],["defeaulted","defaulted"],["defeaulting","defaulting"],["defeaults","defaults"],["defecit","deficit"],["defeine","define"],["defeines","defines"],["defenate","definite"],["defenately","definitely"],["defendent","defendant"],["defendents","defendants"],["defenitely","definitely"],["defenition","definition"],["defenitions","definitions"],["defenitly","definitely"],["deferal","deferral"],["deferals","deferrals"],["deferance","deference"],["defered","deferred"],["deferencing","dereferencing"],["deferentiating","differentiating"],["defering","deferring"],["deferreal","deferral"],["deffensively","defensively"],["defferently","differently"],["deffering","differing"],["defferred","deferred"],["deffine","define"],["deffined","defined"],["deffinition","definition"],["deffinitively","definitively"],["deffirent","different"],["defiantely","defiantly"],["defice","device"],["defien","define"],["defiend","defined"],["defiened","defined"],["defin","define"],["definad","defined"],["definance","defiance"],["definate","definite"],["definately","definitely"],["defination","definition"],["definations","definitions"],["definatly","definitely"],["definding","defining"],["defineas","defines"],["defineed","defined"],["definend","defined"],["definete","definite"],["definetelly","definitely"],["definetely","definitely"],["definetly","definitely"],["definiation","definition"],["definied","defined"],["definietly","definitely"],["definifiton","definition"],["definining","defining"],["defininition","definition"],["defininitions","definitions"],["definintion","definition"],["definit","definite"],["definitian","definition"],["definitiion","definition"],["definitiions","definitions"],["definitio","definition"],["definitios","definitions"],["definitivly","definitively"],["definitly","definitely"],["definitoin","definition"],["definiton","definition"],["definitons","definitions"],["definned","defined"],["definnition","definition"],["defintian","definition"],["defintiion","definition"],["defintiions","definitions"],["defintion","definition"],["defintions","definitions"],["defintition","definition"],["defintivly","definitively"],["defition","definition"],["defitions","definitions"],["deflaut","default"],["defninition","definition"],["defninitions","definitions"],["defnitions","definitions"],["defore","before"],["defqault","default"],["defragmenation","defragmentation"],["defualt","default"],["defualtdict","defaultdict"],["defualts","defaults"],["defult","default"],["defulted","defaulted"],["defulting","defaulting"],["defults","defaults"],["degenarate","degenerate"],["degenarated","degenerated"],["degenarating","degenerating"],["degenaration","degeneration"],["degenracy","degeneracy"],["degenrate","degenerate"],["degenrated","degenerated"],["degenrates","degenerates"],["degenratet","degenerated"],["degenrating","degenerating"],["degenration","degeneration"],["degerate","degenerate"],["degeree","degree"],["degnerate","degenerate"],["degnerated","degenerated"],["degnerates","degenerates"],["degrads","degrades"],["degration","degradation"],["degredation","degradation"],["degreee","degree"],["degreeee","degree"],["degreeees","degrees"],["degreees","degrees"],["deifne","define"],["deifned","defined"],["deifnes","defines"],["deifning","defining"],["deimiter","delimiter"],["deine","define"],["deinitailse","deinitialise"],["deinitailze","deinitialize"],["deinitalized","deinitialized"],["deinstantating","deinstantiating"],["deintialize","deinitialize"],["deintialized","deinitialized"],["deintializing","deinitializing"],["deisgn","design"],["deisgned","designed"],["deisgner","designer"],["deisgners","designers"],["deisgning","designing"],["deisgns","designs"],["deivative","derivative"],["deivatives","derivatives"],["deivce","device"],["deivces","devices"],["deivices","devices"],["deklaration","declaration"],["dekstop","desktop"],["dekstops","desktops"],["dektop","desktop"],["dektops","desktops"],["delagate","delegate"],["delagates","delegates"],["delaloc","delalloc"],["delalyed","delayed"],["delapidated","dilapidated"],["delaraction","declaration"],["delaractions","declarations"],["delarations","declarations"],["delare","declare"],["delared","declared"],["delares","declares"],["delaring","declaring"],["delate","delete"],["delayis","delays"],["delcarations","declarations"],["delcare","declare"],["delcared","declared"],["delcares","declares"],["delclaration","declaration"],["delele","delete"],["delelete","delete"],["deleleted","deleted"],["deleletes","deletes"],["deleleting","deleting"],["delelte","delete"],["delemeter","delimiter"],["delemiter","delimiter"],["delerious","delirious"],["delet","delete"],["deletd","deleted"],["deleteable","deletable"],["deleteed","deleted"],["deleteing","deleting"],["deleteion","deletion"],["deleteting","deleting"],["deletiong","deletion"],["delets","deletes"],["delevopment","development"],["delevopp","develop"],["delgate","delegate"],["delgated","delegated"],["delgates","delegates"],["delgating","delegating"],["delgation","delegation"],["delgations","delegations"],["delgator","delegator"],["delgators","delegators"],["deliberatey","deliberately"],["deliberatly","deliberately"],["deliberite","deliberate"],["deliberitely","deliberately"],["delibery","delivery"],["delibrate","deliberate"],["delibrately","deliberately"],["delievering","delivering"],["delievery","delivery"],["delievred","delivered"],["delievries","deliveries"],["delievry","delivery"],["delimeted","delimited"],["delimeter","delimiter"],["delimeters","delimiters"],["delimiited","delimited"],["delimiiter","delimiter"],["delimiiters","delimiters"],["delimitiaion","delimitation"],["delimitiaions","delimitations"],["delimitiation","delimitation"],["delimitiations","delimitations"],["delimitied","delimited"],["delimitier","delimiter"],["delimitiers","delimiters"],["delimitiing","delimiting"],["delimitimg","delimiting"],["delimition","delimitation"],["delimitions","delimitations"],["delimitis","delimits"],["delimititation","delimitation"],["delimititations","delimitations"],["delimitited","delimited"],["delimititer","delimiter"],["delimititers","delimiters"],["delimititing","delimiting"],["delimitor","delimiter"],["delimitors","delimiters"],["delimitted","delimited"],["delimma","dilemma"],["delimted","delimited"],["delimters","delimiter"],["delink","unlink"],["delivared","delivered"],["delivative","derivative"],["delivatives","derivatives"],["deliverate","deliberate"],["delivermode","deliverymode"],["deliverying","delivering"],["delte","delete"],["delted","deleted"],["deltes","deletes"],["delting","deleting"],["deltion","deletion"],["delusionally","delusively"],["delvery","delivery"],["demaind","demand"],["demenor","demeanor"],["demension","dimension"],["demensional","dimensional"],["demensions","dimensions"],["demodualtor","demodulator"],["demog","demo"],["demographical","demographic"],["demolishon","demolition"],["demolision","demolition"],["demoninator","denominator"],["demoninators","denominators"],["demonstates","demonstrates"],["demonstrat","demonstrate"],["demonstrats","demonstrates"],["demorcracy","democracy"],["demostrate","demonstrate"],["demostrated","demonstrated"],["demostrates","demonstrates"],["demostrating","demonstrating"],["demostration","demonstration"],["demudulator","demodulator"],["denegrating","denigrating"],["denisty","density"],["denomitator","denominator"],["denomitators","denominators"],["densitity","density"],["densly","densely"],["denstiy","density"],["deocde","decode"],["deocded","decoded"],["deocder","decoder"],["deocders","decoders"],["deocdes","decodes"],["deocding","decoding"],["deocdings","decodings"],["deoes","does"],["deoesn't","doesn't"],["deompression","decompression"],["depandance","dependence"],["depandancies","dependencies"],["depandancy","dependency"],["depandent","dependent"],["deparment","department"],["deparmental","departmental"],["deparments","departments"],["depcrecated","deprecated"],["depden","depend"],["depdence","dependence"],["depdencente","dependence"],["depdencentes","dependences"],["depdences","dependences"],["depdencies","dependencies"],["depdency","dependency"],["depdend","depend"],["depdendancies","dependencies"],["depdendancy","dependency"],["depdendant","dependent"],["depdendants","dependents"],["depdended","depended"],["depdendence","dependence"],["depdendences","dependences"],["depdendencies","dependencies"],["depdendency","dependency"],["depdendent","dependent"],["depdendents","dependents"],["depdendet","dependent"],["depdendets","dependents"],["depdending","depending"],["depdends","depends"],["depdenence","dependence"],["depdenences","dependences"],["depdenencies","dependencies"],["depdenency","dependency"],["depdenent","dependent"],["depdenents","dependents"],["depdening","depending"],["depdenncies","dependencies"],["depdenncy","dependency"],["depdens","depends"],["depdent","dependent"],["depdents","dependents"],["depecated","deprecated"],["depedencies","dependencies"],["depedency","dependency"],["depedencys","dependencies"],["depedent","dependent"],["depeding","depending"],["depencencies","dependencies"],["depencency","dependency"],["depencendencies","dependencies"],["depencendency","dependency"],["depencendencys","dependencies"],["depencent","dependent"],["depencies","dependencies"],["depency","dependency"],["dependance","dependence"],["dependancies","dependencies"],["dependancy","dependency"],["dependancys","dependencies"],["dependand","dependent"],["dependcies","dependencies"],["dependcy","dependency"],["dependding","depending"],["dependecies","dependencies"],["dependecy","dependency"],["dependecys","dependencies"],["dependedn","dependent"],["dependees","dependencies"],["dependeing","depending"],["dependenceis","dependencies"],["dependencey","dependency"],["dependencie","dependency"],["dependencied","dependency"],["dependenciens","dependencies"],["dependencis","dependencies"],["dependencys","dependencies"],["dependendencies","dependencies"],["dependendency","dependency"],["dependendent","dependent"],["dependenies","dependencies"],["dependening","depending"],["dependeny","dependency"],["dependet","dependent"],["dependices","dependencies"],["dependicy","dependency"],["dependig","depending"],["dependncies","dependencies"],["dependncy","dependency"],["depened","depend"],["depenedecies","dependencies"],["depenedecy","dependency"],["depenedent","dependent"],["depenencies","dependencies"],["depenencis","dependencies"],["depenency","dependency"],["depenencys","dependencies"],["depenend","depend"],["depenendecies","dependencies"],["depenendecy","dependency"],["depenendence","dependence"],["depenendencies","dependencies"],["depenendency","dependency"],["depenendent","dependent"],["depenending","depending"],["depenent","dependent"],["depenently","dependently"],["depennding","depending"],["depent","depend"],["deperecate","deprecate"],["deperecated","deprecated"],["deperecates","deprecates"],["deperecating","deprecating"],["deploied","deployed"],["deploiment","deployment"],["deploiments","deployments"],["deployement","deployment"],["deploymenet","deployment"],["deploymenets","deployments"],["depndant","dependent"],["depnds","depends"],["deporarily","temporarily"],["deposint","deposing"],["depracated","deprecated"],["depreacte","deprecate"],["depreacted","deprecated"],["depreacts","deprecates"],["depreate","deprecate"],["depreated","deprecated"],["depreates","deprecates"],["depreating","deprecating"],["deprecatedf","deprecated"],["deprectaed","deprecated"],["deprectat","deprecate"],["deprectate","deprecate"],["deprectated","deprecated"],["deprectates","deprecates"],["deprectating","deprecating"],["deprectation","deprecation"],["deprectats","deprecates"],["deprected","deprecated"],["depricate","deprecate"],["depricated","deprecated"],["depricates","deprecates"],["depricating","deprecating"],["dequed","dequeued"],["dequeing","dequeuing"],["deques","dequeues"],["derageable","dirigible"],["derective","directive"],["derectory","directory"],["derefence","dereference"],["derefenced","dereferenced"],["derefencing","dereferencing"],["derefenrence","dereference"],["dereferance","dereference"],["dereferanced","dereferenced"],["dereferances","dereferences"],["dereferencable","dereferenceable"],["dereferencce","dereference"],["dereferencced","dereferenced"],["dereferencces","dereferences"],["dereferenccing","dereferencing"],["derefernce","dereference"],["derefernced","dereferenced"],["dereferncence","dereference"],["dereferncencer","dereferencer"],["dereferncencers","dereferencers"],["dereferncences","dereferences"],["dereferncer","dereferencer"],["dereferncers","dereferencers"],["derefernces","dereferences"],["dereferncing","dereferencing"],["derefernece","dereference"],["derefrencable","dereferenceable"],["derefrence","dereference"],["deregistartion","deregistration"],["deregisted","deregistered"],["deregisteres","deregisters"],["deregistrated","deregistered"],["deregistred","deregistered"],["deregiter","deregister"],["deregiters","deregisters"],["derevative","derivative"],["derevatives","derivatives"],["derferencing","dereferencing"],["derfien","define"],["derfiend","defined"],["derfine","define"],["derfined","defined"],["dergeistered","deregistered"],["dergistration","deregistration"],["deriair","derriere"],["dericed","derived"],["dericteries","directories"],["derictery","directory"],["dericteryes","directories"],["dericterys","directories"],["deriffed","derived"],["derivaties","derivatives"],["derivatio","derivation"],["derivativ","derivative"],["derivativs","derivatives"],["deriviated","derived"],["derivitive","derivative"],["derivitives","derivatives"],["derivitivs","derivatives"],["derivtive","derivative"],["derivtives","derivatives"],["dermine","determine"],["dermined","determined"],["dermines","determines"],["dermining","determining"],["derogitory","derogatory"],["derprecated","deprecated"],["derrivatives","derivatives"],["derrive","derive"],["derrived","derived"],["dertermine","determine"],["derterming","determining"],["derth","dearth"],["derviative","derivative"],["derviatives","derivatives"],["dervie","derive"],["dervied","derived"],["dervies","derives"],["dervived","derived"],["desactivate","deactivate"],["desactivated","deactivated"],["desallocate","deallocate"],["desallocated","deallocated"],["desallocates","deallocates"],["desaster","disaster"],["descallocate","deallocate"],["descallocated","deallocated"],["descchedules","deschedules"],["desccription","description"],["descencing","descending"],["descendands","descendants"],["descibe","describe"],["descibed","described"],["descibes","describes"],["descibing","describing"],["descide","decide"],["descided","decided"],["descides","decides"],["desciding","deciding"],["desciption","description"],["desciptions","descriptions"],["desciptor","descriptor"],["desciptors","descriptors"],["desciribe","describe"],["desciribed","described"],["desciribes","describes"],["desciribing","describing"],["desciription","description"],["desciriptions","descriptions"],["descirption","description"],["descirptor","descriptor"],["descision","decision"],["descisions","decisions"],["descize","disguise"],["descized","disguised"],["descktop","desktop"],["descktops","desktops"],["desconstructed","deconstructed"],["descover","discover"],["descovered","discovered"],["descovering","discovering"],["descovery","discovery"],["descrease","decrease"],["descreased","decreased"],["descreases","decreases"],["descreasing","decreasing"],["descrementing","decrementing"],["descrete","discrete"],["describ","describe"],["describbed","described"],["describibg","describing"],["describng","describing"],["describtion","description"],["describtions","descriptions"],["descrice","describe"],["descriced","described"],["descrices","describes"],["descricing","describing"],["descrie","describe"],["descriibes","describes"],["descriminant","discriminant"],["descriminate","discriminate"],["descriminated","discriminated"],["descriminates","discriminates"],["descriminating","discriminating"],["descriont","description"],["descriotor","descriptor"],["descripe","describe"],["descriped","described"],["descripes","describes"],["descriping","describing"],["descripition","description"],["descripor","descriptor"],["descripors","descriptors"],["descripter","descriptor"],["descripters","descriptors"],["descriptio","description"],["descriptiom","description"],["descriptionm","description"],["descriptior","descriptor"],["descriptiors","descriptors"],["descripto","descriptor"],["descriptoin","description"],["descriptoins","descriptions"],["descripton","description"],["descriptons","descriptions"],["descriptot","descriptor"],["descriptoy","descriptor"],["descriptuve","descriptive"],["descrition","description"],["descritpion","description"],["descritpions","descriptions"],["descritpiton","description"],["descritpitons","descriptions"],["descritpor","descriptor"],["descritpors","descriptors"],["descritpr","descriptor"],["descritpro","descriptor"],["descritpros","descriptors"],["descritprs","descriptors"],["descritption","description"],["descritptions","descriptions"],["descritptive","descriptive"],["descritptor","descriptor"],["descritptors","descriptors"],["descrption","description"],["descrptions","descriptions"],["descrptor","descriptor"],["descrptors","descriptors"],["descrtiption","description"],["descrtiptions","descriptions"],["descrutor","destructor"],["descrybe","describe"],["descrybing","describing"],["descryption","description"],["descryptions","descriptions"],["desctiption","description"],["desctiptor","descriptor"],["desctiptors","descriptors"],["desctop","desktop"],["desctructed","destructed"],["desctruction","destruction"],["desctructive","destructive"],["desctructor","destructor"],["desctructors","destructors"],["descuss","discuss"],["descvription","description"],["descvriptions","descriptions"],["deselct","deselect"],["deselctable","deselectable"],["deselctables","deselectable"],["deselcted","deselected"],["deselcting","deselecting"],["desepears","disappears"],["deserailise","deserialise"],["deserailize","deserialize"],["deserialisazion","deserialisation"],["deserializaed","deserialized"],["deserializazion","deserialization"],["deserialsiation","deserialisation"],["deserialsie","deserialise"],["deserialsied","deserialised"],["deserialsies","deserialises"],["deserialsing","deserialising"],["deserialze","deserialize"],["deserialzed","deserialized"],["deserialzes","deserializes"],["deserialziation","deserialization"],["deserialzie","deserialize"],["deserialzied","deserialized"],["deserialzies","deserializes"],["deserialzing","deserializing"],["desgin","design"],["desgin-mode","design-mode"],["desgined","designed"],["desginer","designer"],["desiar","desire"],["desicate","desiccate"],["desicion","decision"],["desicions","decisions"],["deside","decide"],["desided","decided"],["desides","decides"],["desig","design"],["desigern","designer"],["desigining","designing"],["designd","designed"],["desination","destination"],["desinations","destinations"],["desine","design"],["desing","design"],["desingable","designable"],["desinged","designed"],["desinger","designer"],["desinging","designing"],["desingn","design"],["desingned","designed"],["desingner","designer"],["desingning","designing"],["desingns","designs"],["desings","designs"],["desintaiton","destination"],["desintaitons","destinations"],["desintation","destination"],["desintations","destinations"],["desintegrated","disintegrated"],["desintegration","disintegration"],["desipite","despite"],["desireable","desirable"],["desision","decision"],["desisions","decisions"],["desitable","desirable"],["desitination","destination"],["desitinations","destinations"],["desition","decision"],["desitions","decisions"],["desitned","destined"],["deskop","desktop"],["deskops","desktops"],["desktiop","desktop"],["deskys","disguise"],["deslected","deselected"],["deslects","deselects"],["desltop","desktop"],["desltops","desktops"],["desn't","doesn't"],["desne","dense"],["desnse","dense"],["desogn","design"],["desogned","designed"],["desogner","designer"],["desogning","designing"],["desogns","designs"],["desolve","dissolve"],["desorder","disorder"],["desoriented","disoriented"],["desparately","desperately"],["despatch","dispatch"],["despict","depict"],["despiration","desperation"],["desplay","display"],["desplayed","displayed"],["desplays","displays"],["desposition","disposition"],["desrciption","description"],["desrciptions","descriptions"],["desribe","describe"],["desribed","described"],["desribes","describes"],["desribing","describing"],["desription","description"],["desriptions","descriptions"],["desriptor","descriptor"],["desriptors","descriptors"],["desrire","desire"],["desrired","desired"],["desroyer","destroyer"],["desscribe","describe"],["desscribing","describing"],["desscription","description"],["dessicate","desiccate"],["dessicated","desiccated"],["dessication","desiccation"],["dessigned","designed"],["desstructor","destructor"],["destablized","destabilized"],["destanation","destination"],["destanations","destinations"],["destiantion","destination"],["destiantions","destinations"],["destiation","destination"],["destiations","destinations"],["destinaion","destination"],["destinaions","destinations"],["destinaiton","destination"],["destinaitons","destinations"],["destinarion","destination"],["destinarions","destinations"],["destinataion","destination"],["destinataions","destinations"],["destinatin","destination"],["destinatino","destination"],["destinatinos","destinations"],["destinatins","destinations"],["destinaton","destination"],["destinatons","destinations"],["destinguish","distinguish"],["destintation","destination"],["destintations","destinations"],["destionation","destination"],["destionations","destinations"],["destop","desktop"],["destops","desktops"],["destoried","destroyed"],["destort","distort"],["destory","destroy"],["destoryed","destroyed"],["destorying","destroying"],["destorys","destroys"],["destoy","destroy"],["destoyed","destroyed"],["destrcut","destruct"],["destrcuted","destructed"],["destrcutor","destructor"],["destrcutors","destructors"],["destribute","distribute"],["destributed","distributed"],["destroi","destroy"],["destroied","destroyed"],["destroing","destroying"],["destrois","destroys"],["destroyes","destroys"],["destruciton","destruction"],["destructro","destructor"],["destructros","destructors"],["destruktor","destructor"],["destruktors","destructors"],["destrutor","destructor"],["destrutors","destructors"],["destry","destroy"],["destryed","destroyed"],["destryer","destroyer"],["destrying","destroying"],["destryiong","destroying"],["destryoed","destroyed"],["destryoing","destroying"],["destryong","destroying"],["destrys","destroys"],["destuction","destruction"],["destuctive","destructive"],["destuctor","destructor"],["destuctors","destructors"],["desturcted","destructed"],["desturtor","destructor"],["desturtors","destructors"],["desychronize","desynchronize"],["desychronized","desynchronized"],["detabase","database"],["detachs","detaches"],["detahced","detached"],["detaild","detailed"],["detailled","detailed"],["detais","details"],["detals","details"],["detatch","detach"],["detatched","detached"],["detatches","detaches"],["detatching","detaching"],["detault","default"],["detaulted","defaulted"],["detaulting","defaulting"],["detaults","defaults"],["detction","detection"],["detctions","detections"],["deteced","detected"],["detecing","detecting"],["detecion","detection"],["detecions","detections"],["detectected","detected"],["detectes","detects"],["detectetd","detected"],["detectsion","detection"],["detectsions","detections"],["detemine","determine"],["detemined","determined"],["detemines","determines"],["detemining","determining"],["deteoriated","deteriorated"],["deterant","deterrent"],["deteremine","determine"],["deteremined","determined"],["deteriate","deteriorate"],["deterimined","determined"],["deterine","determine"],["deterioriating","deteriorating"],["determaine","determine"],["determenant","determinant"],["determenistic","deterministic"],["determiens","determines"],["determimnes","determines"],["determin","determine"],["determinated","determined"],["determind","determined"],["determinded","determined"],["determinee","determine"],["determineing","determining"],["determinining","determining"],["deterministinc","deterministic"],["determinne","determine"],["determins","determines"],["determinse","determines"],["determinstic","deterministic"],["determinstically","deterministically"],["determintes","determines"],["determnine","determine"],["deternine","determine"],["detetmine","determine"],["detial","detail"],["detialed","detailed"],["detialing","detailing"],["detials","details"],["detination","destination"],["detinations","destinations"],["detremental","detrimental"],["detremining","determining"],["detrmine","determine"],["detrmined","determined"],["detrmines","determines"],["detrmining","determining"],["detroy","destroy"],["detroyed","destroyed"],["detroying","destroying"],["detroys","destroys"],["detructed","destructed"],["dettach","detach"],["dettaching","detaching"],["detur","detour"],["deturance","deterrence"],["deubug","debug"],["deubuging","debugging"],["deug","debug"],["deugging","debugging"],["devasted","devastated"],["devation","deviation"],["devce","device"],["devcent","decent"],["devcie","device"],["devcies","devices"],["develoers","developers"],["develoment","development"],["develoments","developments"],["develompent","development"],["develompental","developmental"],["develompents","developments"],["develope","develop"],["developement","development"],["developements","developments"],["developmemt","development"],["developmet","development"],["developmetns","developments"],["developmets","developments"],["developp","develop"],["developpe","develop"],["developped","developed"],["developpement","development"],["developper","developer"],["developpers","developers"],["developpment","development"],["develp","develop"],["develped","developed"],["develper","developer"],["develpers","developers"],["develping","developing"],["develpment","development"],["develpments","developments"],["develps","develops"],["devels","delves"],["deveolpment","development"],["deveopers","developers"],["deverloper","developer"],["deverlopers","developers"],["devestated","devastated"],["devestating","devastating"],["devfine","define"],["devfined","defined"],["devfines","defines"],["devic","device"],["devicde","device"],["devicdes","devices"],["device-dependend","device-dependent"],["devicec","device"],["devicecoordiinates","devicecoordinates"],["deviceremoveable","deviceremovable"],["devicesr","devices"],["devicess","devices"],["devicest","devices"],["devide","divide"],["devided","divided"],["devider","divider"],["deviders","dividers"],["devides","divides"],["deviding","dividing"],["deviece","device"],["devied","device"],["deviiate","deviate"],["deviiated","deviated"],["deviiates","deviates"],["deviiating","deviating"],["deviiation","deviation"],["deviiations","deviations"],["devined","defined"],["devired","derived"],["devirtualisaion","devirtualisation"],["devirtualisaiton","devirtualisation"],["devirtualizaion","devirtualization"],["devirtualizaiton","devirtualization"],["devirutalisation","devirtualisation"],["devirutalise","devirtualise"],["devirutalised","devirtualised"],["devirutalization","devirtualization"],["devirutalize","devirtualize"],["devirutalized","devirtualized"],["devisible","divisible"],["devision","division"],["devistating","devastating"],["devive","device"],["devleop","develop"],["devleoped","developed"],["devleoper","developer"],["devleopers","developers"],["devleoping","developing"],["devleopment","development"],["devleopper","developer"],["devleoppers","developers"],["devlop","develop"],["devloped","developed"],["devloper's","developer's"],["devloper","developer"],["devlopers","developers"],["devloping","developing"],["devlopment","development"],["devlopments","developments"],["devlopper","developer"],["devloppers","developers"],["devlops","develops"],["devolopement","development"],["devritualisation","devirtualisation"],["devritualization","devirtualization"],["devuce","device"],["dewrapping","unwrapping"],["dezert","dessert"],["dezibel","decibel"],["dezine","design"],["dezinens","denizens"],["dfine","define"],["dfined","defined"],["dfines","defines"],["dfinition","definition"],["dfinitions","definitions"],["dgetttext","dgettext"],["diable","disable"],["diabled","disabled"],["diabler","disabler"],["diablers","disablers"],["diables","disables"],["diablical","diabolical"],["diabling","disabling"],["diaciritc","diacritic"],["diaciritcs","diacritics"],["diagnistic","diagnostic"],["diagnoal","diagonal"],["diagnoals","diagonals"],["diagnol","diagonal"],["diagnosics","diagnostics"],["diagnositc","diagnostic"],["diagnotic","diagnostic"],["diagnotics","diagnostics"],["diagnxostic","diagnostic"],["diagonale","diagonal"],["diagonales","diagonals"],["diagramas","diagrams"],["diagramm","diagram"],["dialaog","dialog"],["dialate","dilate"],["dialgo","dialog"],["dialgos","dialogs"],["dialig","dialog"],["dialigs","dialogs"],["diamater","diameter"],["diamaters","diameters"],["diamon","diamond"],["diamons","diamonds"],["diamter","diameter"],["diamters","diameters"],["diangose","diagnose"],["dianostic","diagnostic"],["dianostics","diagnostics"],["diaplay","display"],["diaplays","displays"],["diappeares","disappears"],["diarea","diarrhea"],["diaresis","diaeresis"],["diasble","disable"],["diasbled","disabled"],["diasbles","disables"],["diasbling","disabling"],["diaspra","diaspora"],["diaster","disaster"],["diatance","distance"],["diatancing","distancing"],["dicard","discard"],["dicarded","discarded"],["dicarding","discarding"],["dicards","discards"],["dicates","dictates"],["dicationaries","dictionaries"],["dicationary","dictionary"],["dicergence","divergence"],["dichtomy","dichotomy"],["dicionaries","dictionaries"],["dicionary","dictionary"],["dicipline","discipline"],["dicitonaries","dictionaries"],["dicitonary","dictionary"],["dicline","decline"],["diconnected","disconnected"],["diconnection","disconnection"],["diconnects","disconnects"],["dicover","discover"],["dicovered","discovered"],["dicovering","discovering"],["dicovers","discovers"],["dicovery","discovery"],["dicrectory","directory"],["dicrete","discrete"],["dicretion","discretion"],["dicretionary","discretionary"],["dicriminate","discriminate"],["dicriminated","discriminated"],["dicriminates","discriminates"],["dicriminating","discriminating"],["dicriminator","discriminator"],["dicriminators","discriminators"],["dicsriminated","discriminated"],["dictaionaries","dictionaries"],["dictaionary","dictionary"],["dictinary","dictionary"],["dictioanries","dictionaries"],["dictioanry","dictionary"],["dictionarys","dictionaries"],["dictionay","dictionary"],["dictionnaries","dictionaries"],["dictionnary","dictionary"],["dictionries","dictionaries"],["dictionry","dictionary"],["dictoinaries","dictionaries"],["dictoinary","dictionary"],["dictonaries","dictionaries"],["dictonary","dictionary"],["dictrionaries","dictionaries"],["dictrionary","dictionary"],["dicussed","discussed"],["dicussions","discussions"],["did'nt","didn't"],["didi","did"],["didn;t","didn't"],["didnt'","didn't"],["didnt't","didn't"],["didnt","didn't"],["didnt;","didn't"],["diect","direct"],["diectly","directly"],["dielectirc","dielectric"],["dielectircs","dielectrics"],["diemsion","dimension"],["dieties","deities"],["diety","deity"],["diference","difference"],["diferences","differences"],["diferent","different"],["diferentiate","differentiate"],["diferentiated","differentiated"],["diferentiates","differentiates"],["diferentiating","differentiating"],["diferently","differently"],["diferrent","different"],["diffcult","difficult"],["diffculties","difficulties"],["diffculty","difficulty"],["diffeent","different"],["diffence","difference"],["diffenet","different"],["diffenrence","difference"],["diffenrences","differences"],["differance","difference"],["differances","differences"],["differant","different"],["differantiate","differentiate"],["differantiation","differentiation"],["differantiator","differentiator"],["differantion","differentiation"],["differate","differentiate"],["differece","difference"],["differect","different"],["differen","different"],["differencess","differences"],["differencial","differential"],["differenciate","differentiate"],["differenciated","differentiated"],["differenciates","differentiates"],["differenciating","differentiating"],["differenciation","differentiation"],["differencies","differences"],["differenct","different"],["differend","different"],["differene","difference"],["differenes","differences"],["differenly","differently"],["differens","difference"],["differense","difference"],["differentiatiations","differentiations"],["differentiaton","differentiation"],["differentl","differently"],["differernt","different"],["differes","differs"],["differetnt","different"],["differnce","difference"],["differnces","differences"],["differnciate","differentiate"],["differnec","difference"],["differnece","difference"],["differneces","differences"],["differnecs","differences"],["differnence","difference"],["differnences","differences"],["differnencing","differencing"],["differnent","different"],["differnet","different"],["differnetiate","differentiate"],["differnetiated","differentiated"],["differnetly","differently"],["differnt","different"],["differntiable","differentiable"],["differntial","differential"],["differntials","differentials"],["differntiate","differentiate"],["differntiated","differentiated"],["differntiates","differentiates"],["differntiating","differentiating"],["differntly","differently"],["differred","differed"],["differrence","difference"],["differrent","different"],["difffered","differed"],["diffferent","different"],["diffferently","differently"],["difffers","differs"],["difficault","difficult"],["difficaulties","difficulties"],["difficaulty","difficulty"],["difficulity","difficulty"],["difficutl","difficult"],["difficutly","difficulty"],["diffreences","differences"],["diffreent","different"],["diffrence","difference"],["diffrences","differences"],["diffrent","different"],["diffrential","differential"],["diffrentiate","differentiate"],["diffrentiated","differentiated"],["diffrently","differently"],["diffrerence","difference"],["diffrerences","differences"],["diffult","difficult"],["diffussion","diffusion"],["diffussive","diffusive"],["dificulties","difficulties"],["dificulty","difficulty"],["difinition","definition"],["difinitions","definitions"],["difract","diffract"],["difracted","diffracted"],["difraction","diffraction"],["difractive","diffractive"],["difussion","diffusion"],["difussive","diffusive"],["digesty","digest"],["diggit","digit"],["diggital","digital"],["diggits","digits"],["digial","digital"],["digist","digits"],["digitalise","digitize"],["digitalising","digitizing"],["digitalize","digitize"],["digitalizing","digitizing"],["digitial","digital"],["digitis","digits"],["dignostics","diagnostics"],["dilema","dilemma"],["dilemas","dilemmas"],["dilineate","delineate"],["dillema","dilemma"],["dillemas","dilemmas"],["dilligence","diligence"],["dilligent","diligent"],["dilligently","diligently"],["dillimport","dllimport"],["dimansion","dimension"],["dimansional","dimensional"],["dimansions","dimensions"],["dimemsions","dimensions"],["dimenional","dimensional"],["dimenionalities","dimensionalities"],["dimenionality","dimensionality"],["dimenions","dimensions"],["dimenionsal","dimensional"],["dimenionsalities","dimensionalities"],["dimenionsality","dimensionality"],["dimenison","dimension"],["dimensinal","dimensional"],["dimensinoal","dimensional"],["dimensinos","dimensions"],["dimensionaility","dimensionality"],["dimensiones","dimensions"],["dimensonal","dimensional"],["dimenstion","dimension"],["dimenstions","dimensions"],["dimention","dimension"],["dimentional","dimensional"],["dimentionnal","dimensional"],["dimentionnals","dimensional"],["dimentions","dimensions"],["dimesions","dimensions"],["dimesnion","dimension"],["dimesnional","dimensional"],["dimesnions","dimensions"],["diminsh","diminish"],["diminshed","diminished"],["diminuitive","diminutive"],["dimissed","dismissed"],["dimmension","dimension"],["dimmensioned","dimensioned"],["dimmensioning","dimensioning"],["dimmensions","dimensions"],["dimnension","dimension"],["dimnention","dimension"],["dimunitive","diminutive"],["dinamic","dynamic"],["dinamically","dynamically"],["dinamicaly","dynamically"],["dinamiclly","dynamically"],["dinamicly","dynamically"],["dinmaic","dynamic"],["dinteractively","interactively"],["diong","doing"],["diosese","diocese"],["diphtong","diphthong"],["diphtongs","diphthongs"],["diplacement","displacement"],["diplay","display"],["diplayed","displayed"],["diplaying","displaying"],["diplays","displays"],["diplomancy","diplomacy"],["dipthong","diphthong"],["dipthongs","diphthongs"],["dircet","direct"],["dircetories","directories"],["dircetory","directory"],["dirctly","directly"],["dirctories","directories"],["dirctory","directory"],["direccion","direction"],["direcctly","directly"],["direcctory","directory"],["direcctorys","directories"],["direcctries","directories"],["direcdories","directories"],["direcdory","directory"],["direcdorys","directories"],["direcion","direction"],["direcions","directions"],["direciton","direction"],["direcitonal","directional"],["direcitons","directions"],["direclty","directly"],["direcly","directly"],["direcories","directories"],["direcory","directory"],["direcotories","directories"],["direcotory","directory"],["direcotries","directories"],["direcotry","directory"],["direcoty","directory"],["directd","directed"],["directely","directly"],["directes","directs"],["directgories","directories"],["directgory","directory"],["directiories","directories"],["directiory","directory"],["directoies","directories"],["directon","direction"],["directoories","directories"],["directoory","directory"],["directores","directories"],["directoris","directories"],["directort","directory"],["directorty","directory"],["directorys","directories"],["directoty","directory"],["directove","directive"],["directoves","directives"],["directoy","directory"],["directpries","directories"],["directpry","directory"],["directries","directories"],["directrive","directive"],["directrives","directives"],["directrly","directly"],["directroies","directories"],["directrories","directories"],["directrory","directory"],["directroy","directory"],["directry","directory"],["directsion","direction"],["directsions","directions"],["directtories","directories"],["directtory","directory"],["directy","directly"],["direectly","directly"],["diregard","disregard"],["direktly","directly"],["direrctor","director"],["direrctories","directories"],["direrctors","directors"],["direrctory","directory"],["diretive","directive"],["diretly","directly"],["diretories","directories"],["diretory","directory"],["direvctory","directory"],["dirived","derived"],["dirrectly","directly"],["dirtectory","directory"],["dirtyed","dirtied"],["dirtyness","dirtiness"],["dirver","driver"],["disabe","disable"],["disabeling","disabling"],["disabels","disables"],["disabes","disables"],["disabilitiles","disabilities"],["disabilitily","disability"],["disabiltities","disabilities"],["disabiltitiy","disability"],["disabing","disabling"],["disabl","disable"],["disablle","disable"],["disadvantadge","disadvantage"],["disagreeed","disagreed"],["disagress","disagrees"],["disalb","disable"],["disalbe","disable"],["disalbed","disabled"],["disalbes","disables"],["disale","disable"],["disaled","disabled"],["disalow","disallow"],["disambigouate","disambiguate"],["disambiguaiton","disambiguation"],["disambiguiation","disambiguation"],["disapear","disappear"],["disapeard","disappeared"],["disapeared","disappeared"],["disapearing","disappearing"],["disapears","disappears"],["disapline","discipline"],["disapoint","disappoint"],["disapointed","disappointed"],["disapointing","disappointing"],["disappared","disappeared"],["disappearaing","disappearing"],["disappeard","disappeared"],["disappearred","disappeared"],["disapper","disappear"],["disapperar","disappear"],["disapperarance","disappearance"],["disapperared","disappeared"],["disapperars","disappears"],["disappered","disappeared"],["disappering","disappearing"],["disappers","disappears"],["disapporval","disapproval"],["disapporve","disapprove"],["disapporved","disapproved"],["disapporves","disapproves"],["disapporving","disapproving"],["disapprouval","disapproval"],["disapprouve","disapprove"],["disapprouved","disapproved"],["disapprouves","disapproves"],["disapprouving","disapproving"],["disaproval","disapproval"],["disard","discard"],["disariable","desirable"],["disassebled","disassembled"],["disassocate","disassociate"],["disassocation","disassociation"],["disasssembler","disassembler"],["disasterous","disastrous"],["disatisfaction","dissatisfaction"],["disatisfied","dissatisfied"],["disatrous","disastrous"],["disbale","disable"],["disbaled","disabled"],["disbales","disables"],["disbaling","disabling"],["disble","disable"],["disbled","disabled"],["discared","discarded"],["discareded","discarded"],["discarge","discharge"],["discconecct","disconnect"],["discconeccted","disconnected"],["discconeccting","disconnecting"],["discconecction","disconnection"],["discconecctions","disconnections"],["discconeccts","disconnects"],["discconect","disconnect"],["discconected","disconnected"],["discconecting","disconnecting"],["discconection","disconnection"],["discconections","disconnections"],["discconects","disconnects"],["discconeect","disconnect"],["discconeected","disconnected"],["discconeecting","disconnecting"],["discconeection","disconnection"],["discconeections","disconnections"],["discconeects","disconnects"],["discconenct","disconnect"],["discconencted","disconnected"],["discconencting","disconnecting"],["discconenction","disconnection"],["discconenctions","disconnections"],["discconencts","disconnects"],["discconet","disconnect"],["discconeted","disconnected"],["discconeting","disconnecting"],["discconetion","disconnection"],["discconetions","disconnections"],["discconets","disconnects"],["disccuss","discuss"],["discernable","discernible"],["dischare","discharge"],["discimenation","dissemination"],["disciplins","disciplines"],["disclamer","disclaimer"],["disconecct","disconnect"],["disconeccted","disconnected"],["disconeccting","disconnecting"],["disconecction","disconnection"],["disconecctions","disconnections"],["disconeccts","disconnects"],["disconect","disconnect"],["disconected","disconnected"],["disconecting","disconnecting"],["disconection","disconnection"],["disconections","disconnections"],["disconects","disconnects"],["disconeect","disconnect"],["disconeected","disconnected"],["disconeecting","disconnecting"],["disconeection","disconnection"],["disconeections","disconnections"],["disconeects","disconnects"],["disconenct","disconnect"],["disconencted","disconnected"],["disconencting","disconnecting"],["disconenction","disconnection"],["disconenctions","disconnections"],["disconencts","disconnects"],["disconet","disconnect"],["disconeted","disconnected"],["disconeting","disconnecting"],["disconetion","disconnection"],["disconetions","disconnections"],["disconets","disconnects"],["disconnec","disconnect"],["disconneced","disconnected"],["disconnet","disconnect"],["disconneted","disconnected"],["disconneting","disconnecting"],["disconnets","disconnects"],["disconnnect","disconnect"],["discontigious","discontiguous"],["discontigous","discontiguous"],["discontiguities","discontinuities"],["discontinous","discontinuous"],["discontinuos","discontinuous"],["discoraged","discouraged"],["discouranged","discouraged"],["discourarged","discouraged"],["discourrage","discourage"],["discourraged","discouraged"],["discove","discover"],["discoved","discovered"],["discovereability","discoverability"],["discoveribility","discoverability"],["discovey","discovery"],["discovr","discover"],["discovred","discovered"],["discovring","discovering"],["discovrs","discovers"],["discrace","disgrace"],["discraced","disgraced"],["discraceful","disgraceful"],["discracefully","disgracefully"],["discracefulness","disgracefulness"],["discraces","disgraces"],["discracing","disgracing"],["discrards","discards"],["discreminates","discriminates"],["discrepencies","discrepancies"],["discrepency","discrepancy"],["discrepicies","discrepancies"],["discribe","describe"],["discribed","described"],["discribes","describes"],["discribing","describing"],["discription","description"],["discriptions","descriptions"],["discriptor's","descriptor's"],["discriptor","descriptor"],["discriptors","descriptors"],["disctinction","distinction"],["disctinctive","distinctive"],["disctinguish","distinguish"],["disctionaries","dictionaries"],["disctionary","dictionary"],["discuassed","discussed"],["discused","discussed"],["discusion","discussion"],["discusions","discussions"],["discusson","discussion"],["discussons","discussions"],["discusting","disgusting"],["discuusion","discussion"],["disdvantage","disadvantage"],["disecting","dissecting"],["disection","dissection"],["diselect","deselect"],["disemination","dissemination"],["disenchanged","disenchanted"],["disencouraged","discouraged"],["disertation","dissertation"],["disfunctional","dysfunctional"],["disfunctionality","dysfunctionality"],["disgn","design"],["disgned","designed"],["disgner","designer"],["disgning","designing-"],["disgnostic","diagnostic"],["disgnostics","diagnostics"],["disgns","designs"],["disguisting","disgusting"],["disharge","discharge"],["disign","design"],["disignated","designated"],["disinguish","distinguish"],["disiplined","disciplined"],["disired","desired"],["disitributions","distributions"],["diskrete","discrete"],["diskretion","discretion"],["diskretization","discretization"],["diskretize","discretize"],["diskretized","discretized"],["diskrimination","discrimination"],["dislaimer","disclaimer"],["dislay","display"],["dislayed","displayed"],["dislaying","displaying"],["dislays","displays"],["dislpay","display"],["dislpayed","displayed"],["dislpaying","displaying"],["dislpays","displays"],["disnabled","disabled"],["disobediance","disobedience"],["disobediant","disobedient"],["disokay","display"],["disolve","dissolve"],["disolved","dissolved"],["disonnect","disconnect"],["disonnected","disconnected"],["disover","discover"],["disovered","discovered"],["disovering","discovering"],["disovery","discovery"],["dispached","dispatched"],["dispair","despair"],["dispalcement","displacement"],["dispalcements","displacements"],["dispaly","display"],["dispalyable","displayable"],["dispalyed","displayed"],["dispalyes","displays"],["dispalying","displaying"],["dispalys","displays"],["disparingly","disparagingly"],["disparite","disparate"],["dispatcgh","dispatch"],["dispatchs","dispatches"],["dispath","dispatch"],["dispathed","dispatched"],["dispathes","dispatches"],["dispathing","dispatching"],["dispay","display"],["dispayed","displayed"],["dispayes","displays"],["dispayport","displayport"],["dispays","displays"],["dispbibute","distribute"],["dispell","dispel"],["dispence","dispense"],["dispenced","dispensed"],["dispencing","dispensing"],["dispertion","dispersion"],["dispicable","despicable"],["dispite","despite"],["displa","display"],["displacemnt","displacement"],["displacemnts","displacements"],["displacment","displacement"],["displacments","displacements"],["displayd","displayed"],["displayied","displayed"],["displayig","displaying"],["disply","display"],["displyed","displayed"],["displying","displaying"],["displys","displays"],["dispode","dispose"],["disporue","disparue"],["disporve","disprove"],["disporved","disproved"],["disporves","disproves"],["disporving","disproving"],["disposel","disposal"],["dispossable","disposable"],["dispossal","disposal"],["disposse","dispose"],["dispossing","disposing"],["dispostion","disposition"],["disproportiate","disproportionate"],["disproportionatly","disproportionately"],["disputandem","disputandum"],["disregrad","disregard"],["disrete","discrete"],["disretion","discretion"],["disribution","distribution"],["disricts","districts"],["disrm","disarm"],["dissable","disable"],["dissabled","disabled"],["dissables","disables"],["dissabling","disabling"],["dissadvantage","disadvantage"],["dissadvantages","disadvantages"],["dissagreement","disagreement"],["dissagregation","dissaggregation"],["dissallow","disallow"],["dissallowed","disallowed"],["dissallowing","disallowing"],["dissallows","disallows"],["dissalow","disallow"],["dissalowed","disallowed"],["dissalowing","disallowing"],["dissalows","disallows"],["dissambiguate","disambiguate"],["dissamble","disassemble"],["dissambled","disassembled"],["dissambler","disassembler"],["dissambles","disassembles"],["dissamblies","disassemblies"],["dissambling","disassembling"],["dissambly","disassembly"],["dissapate","dissipate"],["dissapates","dissipates"],["dissapear","disappear"],["dissapearance","disappearance"],["dissapeard","disappeared"],["dissapeared","disappeared"],["dissapearing","disappearing"],["dissapears","disappears"],["dissaper","disappear"],["dissaperd","disappeared"],["dissapered","disappeared"],["dissapering","disappearing"],["dissapers","disappears"],["dissapoint","disappoint"],["dissapointed","disappointed"],["dissapointing","disappointing"],["dissapoints","disappoints"],["dissappear","disappear"],["dissappeard","disappeared"],["dissappeared","disappeared"],["dissappearing","disappearing"],["dissappears","disappears"],["dissapper","disappear"],["dissapperd","disappeared"],["dissappered","disappeared"],["dissappering","disappearing"],["dissappers","disappears"],["dissappointed","disappointed"],["dissapprove","disapprove"],["dissapproves","disapproves"],["dissarray","disarray"],["dissasemble","disassemble"],["dissasembled","disassembled"],["dissasembler","disassembler"],["dissasembles","disassembles"],["dissasemblies","disassemblies"],["dissasembling","disassembling"],["dissasembly","disassembly"],["dissasociate","disassociate"],["dissasociated","disassociated"],["dissasociates","disassociates"],["dissasociation","disassociation"],["dissassemble","disassemble"],["dissassembled","disassembled"],["dissassembler","disassembler"],["dissassembles","disassembles"],["dissassemblies","disassemblies"],["dissassembling","disassembling"],["dissassembly","disassembly"],["dissassociate","disassociate"],["dissassociated","disassociated"],["dissassociates","disassociates"],["dissassociating","disassociating"],["dissaster","disaster"],["dissasters","disasters"],["dissble","disable"],["dissbled","disabled"],["dissbles","disables"],["dissbling","disabling"],["dissconect","disconnect"],["dissconnect","disconnect"],["dissconnected","disconnected"],["dissconnects","disconnects"],["disscover","discover"],["disscovered","discovered"],["disscovering","discovering"],["disscovers","discovers"],["disscovery","discovery"],["dissct","dissect"],["disscted","dissected"],["disscting","dissecting"],["dissctor","dissector"],["dissctors","dissectors"],["disscts","dissects"],["disscuesed","discussed"],["disscus","discuss"],["disscused","discussed"],["disscuses","discusses"],["disscusing","discussing"],["disscusion","discussion"],["disscuss","discuss"],["disscussed","discussed"],["disscusses","discusses"],["disscussing","discussing"],["disscussion","discussion"],["disscussions","discussions"],["disshearteningly","dishearteningly"],["dissimialr","dissimilar"],["dissimialrity","dissimilarity"],["dissimialrly","dissimilarly"],["dissimiar","dissimilar"],["dissimilarily","dissimilarly"],["dissimilary","dissimilarly"],["dissimilat","dissimilar"],["dissimilia","dissimilar"],["dissimiliar","dissimilar"],["dissimiliarity","dissimilarity"],["dissimiliarly","dissimilarly"],["dissimiliarty","dissimilarity"],["dissimiliary","dissimilarity"],["dissimillar","dissimilar"],["dissimlar","dissimilar"],["dissimlarlity","dissimilarity"],["dissimlarly","dissimilarly"],["dissimliar","dissimilar"],["dissimliarly","dissimilarly"],["dissimmetric","dissymmetric"],["dissimmetrical","dissymmetrical"],["dissimmetry","dissymmetry"],["dissmantle","dismantle"],["dissmantled","dismantled"],["dissmantles","dismantles"],["dissmantling","dismantling"],["dissmis","dismiss"],["dissmised","dismissed"],["dissmises","dismisses"],["dissmising","dismissing"],["dissmiss","dismiss"],["dissmissed","dismissed"],["dissmisses","dismisses"],["dissmissing","dismissing"],["dissobediance","disobedience"],["dissobediant","disobedient"],["dissobedience","disobedience"],["dissobedient","disobedient"],["dissplay","display"],["dissrupt","disrupt"],["dissrupted","disrupted"],["dissrupting","disrupting"],["dissrupts","disrupts"],["disssemble","disassemble"],["disssembled","disassembled"],["disssembler","disassembler"],["disssembles","disassembles"],["disssemblies","disassemblies"],["disssembling","disassembling"],["disssembly","disassembly"],["disssociate","dissociate"],["disssociated","dissociated"],["disssociates","dissociates"],["disssociating","dissociating"],["distaced","distanced"],["distange","distance"],["distanse","distance"],["distantce","distance"],["distarct","distract"],["distater","disaster"],["distengish","distinguish"],["distibute","distribute"],["distibuted","distributed"],["distibutes","distributes"],["distibuting","distributing"],["distibution","distribution"],["distibutions","distributions"],["distiction","distinction"],["distictly","distinctly"],["distiguish","distinguish"],["distiguished","distinguished"],["distinative","distinctive"],["distingish","distinguish"],["distingished","distinguished"],["distingishes","distinguishes"],["distingishing","distinguishing"],["distingiush","distinguish"],["distingquished","distinguished"],["distinguise","distinguish"],["distinguised","distinguished"],["distinguises","distinguishes"],["distingush","distinguish"],["distingushed","distinguished"],["distingushes","distinguishes"],["distingushing","distinguishing"],["distingusih","distinguish"],["distinquish","distinguish"],["distinquishable","distinguishable"],["distinquished","distinguished"],["distinquishes","distinguishes"],["distinquishing","distinguishing"],["distintions","distinctions"],["distirbute","distribute"],["distirbuted","distributed"],["distirbutes","distributes"],["distirbuting","distributing"],["distirbution","distribution"],["distirbutions","distributions"],["distirted","distorted"],["distnace","distance"],["distnaces","distances"],["distnce","distance"],["distnces","distances"],["distnct","distinct"],["distncte","distance"],["distnctes","distances"],["distnguish","distinguish"],["distnguished","distinguished"],["distniguish","distinguish"],["distniguished","distinguished"],["distorsion","distortion"],["distorsional","distortional"],["distorsions","distortions"],["distrbute","distribute"],["distrbuted","distributed"],["distrbutes","distributes"],["distrbuting","distributing"],["distrbution","distribution"],["distrbutions","distributions"],["distrct","district"],["distrcts","districts"],["distrebuted","distributed"],["distribtion","distribution"],["distribtions","distributions"],["distribtuion","distribution"],["distribtuions","distributions"],["distribtution","distributions"],["distribue","distribute"],["distribued","distributed"],["distribues","distributes"],["distribuion","distribution"],["distribuite","distribute"],["distribuited","distributed"],["distribuiting","distributing"],["distribuition","distribution"],["distribuitng","distributing"],["distribure","distribute"],["districct","district"],["distrobute","distribute"],["distrobuted","distributed"],["distrobutes","distributes"],["distrobuting","distributing"],["distrobution","distribution"],["distrobutions","distributions"],["distrobuts","distributes"],["distroname","distro name"],["distroying","destroying"],["distrub","disturb"],["distrubiotion","distribution"],["distrubite","distribute"],["distrubtion","distribution"],["distrubute","distribute"],["distrubuted","distributed"],["distrubution","distribution"],["distrubutions","distributions"],["distrubutor","distributor"],["distrubutors","distributors"],["distruction","destruction"],["distructive","destructive"],["distructor","destructor"],["distructors","destructors"],["distuingish","distinguish"],["disuade","dissuade"],["disucssion","discussion"],["disucssions","discussions"],["disucussion","discussion"],["disussion","discussion"],["disussions","discussions"],["disutils","distutils"],["ditance","distance"],["ditial","digital"],["ditinguishes","distinguishes"],["ditorconfig","editorconfig"],["ditribute","distribute"],["ditributed","distributed"],["ditribution","distribution"],["ditributions","distributions"],["divde","divide"],["divded","divided"],["divdes","divides"],["divding","dividing"],["divertion","diversion"],["divertions","diversions"],["divet","divot"],["divice","device"],["divicer","divider"],["divion","division"],["divisable","divisible"],["divisior","divisor"],["divison","division"],["divisons","divisions"],["divrese","diverse"],["divsion","division"],["divsions","divisions"],["divsiors","divisors"],["dloating","floating"],["dnamically","dynamically"],["dne","done"],["dnymaic","dynamic"],["do'nt","don't"],["doagonal","diagonal"],["doagonals","diagonals"],["doalog","dialog"],["doamins","domains"],["doasn't","doesn't"],["doble","double"],["dobled","doubled"],["dobles","doubles"],["dobling","doubling"],["doccument","document"],["doccumented","documented"],["doccuments","documents"],["dockson","dachshund"],["docmenetation","documentation"],["docmuent","document"],["docmunet","document"],["docmunetation","documentation"],["docmuneted","documented"],["docmuneting","documenting"],["docmunets","documents"],["docoment","document"],["docomentation","documentation"],["docomented","documented"],["docomenting","documenting"],["docoments","documents"],["docrines","doctrines"],["docstatistik","docstatistic"],["docsund","dachshund"],["doctines","doctrines"],["doctorial","doctoral"],["docucument","document"],["docuement","document"],["docuements","documents"],["docuemnt","document"],["docuemnts","documents"],["docuemtn","document"],["docuemtnation","documentation"],["docuemtned","documented"],["docuemtning","documenting"],["docuemtns","documents"],["docuent","document"],["docuentation","documentation"],["documant","document"],["documantation","documentation"],["documants","documents"],["documation","documentation"],["documemt","document"],["documen","document"],["documenatation","documentation"],["documenation","documentation"],["documenatry","documentary"],["documenet","document"],["documenetation","documentation"],["documeneted","documented"],["documeneter","documenter"],["documeneters","documenters"],["documeneting","documenting"],["documenets","documents"],["documentaion","documentation"],["documentaiton","documentation"],["documentataion","documentation"],["documentataions","documentations"],["documentaton","documentation"],["documentes","documents"],["documention","documentation"],["documetation","documentation"],["documetnation","documentation"],["documment","document"],["documments","documents"],["documnet","document"],["documnetation","documentation"],["documument","document"],["docunment","document"],["doed","does"],["doen's","doesn't"],["doen't","doesn't"],["doen","done"],["doens't","doesn't"],["doens","does"],["doensn't","doesn't"],["does'nt","doesn't"],["does't","doesn't"],["doese't","doesn't"],["doese","does"],["doesen't","doesn't"],["doesent'","doesn't"],["doesent","doesn't"],["doesits","does its"],["doesn'","doesn't"],["doesn't't","doesn't"],["doesn;t","doesn't"],["doesnexist","doesn't exist"],["doesnt'","doesn't"],["doesnt't","doesn't"],["doesnt;","doesn't"],["doess","does"],["doestn't","doesn't"],["doign","doing"],["doiing","doing"],["doiuble","double"],["doiubled","doubled"],["dokc","dock"],["dokced","docked"],["dokcer","docker"],["dokcing","docking"],["dokcre","docker"],["dokcs","docks"],["doller","dollar"],["dollers","dollars"],["dollor","dollar"],["dollors","dollars"],["domait","domain"],["doman","domain"],["domans","domains"],["domension","dimension"],["domensions","dimensions"],["domian","domain"],["domians","domains"],["dominanted","dominated"],["dominanting","dominating"],["dominantion","domination"],["dominaton","domination"],["dominent","dominant"],["dominiant","dominant"],["domonstrate","demonstrate"],["domonstrates","demonstrates"],["domonstrating","demonstrating"],["domonstration","demonstration"],["domonstrations","demonstrations"],["donain","domain"],["donains","domains"],["donejun","dungeon"],["donejuns","dungeons"],["donig","doing"],["donn't","don't"],["donnot","do not"],["dont'","don't"],["dont't","don't"],["donwload","download"],["donwloaded","downloaded"],["donwloading","downloading"],["donwloads","downloads"],["doocument","document"],["doocumentaries","documentaries"],["doocumentary","documentary"],["doocumentation","documentation"],["doocumentations","documentations"],["doocumented","documented"],["doocumenting","documenting"],["doocuments","documents"],["doorjam","doorjamb"],["dorce","force"],["dorced","forced"],["dorceful","forceful"],["dordered","ordered"],["dorment","dormant"],["dorp","drop"],["dosclosed","disclosed"],["doscloses","discloses"],["dosclosing","disclosing"],["dosclosure","disclosure"],["dosclosures","disclosures"],["dosen't","doesn't"],["dosen;t","doesn't"],["dosens","dozens"],["dosent'","doesn't"],["dosent","doesn't"],["dosent;","doesn't"],["dosn't","doesn't"],["dosn;t","doesn't"],["dosnt","doesn't"],["dosposing","disposing"],["dosument","document"],["dosuments","documents"],["dota","data"],["doube","double"],["doube-click","double-click"],["doube-clicked","double-clicked"],["doube-clicks","double-clicks"],["doube-quote","double-quote"],["doube-quoted","double-quoted"],["doube-word","double-word"],["doube-wprd","double-word"],["doubeclick","double-click"],["doubeclicked","double-clicked"],["doubeclicks","double-clicks"],["doubel","double"],["doubele-click","double-click"],["doubele-clicked","double-clicked"],["doubele-clicks","double-clicks"],["doubeleclick","double-click"],["doubeleclicked","double-clicked"],["doubeleclicks","double-clicks"],["doubely","doubly"],["doubes","doubles"],["doublde","double"],["doublded","doubled"],["doubldes","doubles"],["doubleclick","double-click"],["doublely","doubly"],["doubletquote","doublequote"],["doubth","doubt"],["doubthed","doubted"],["doubthing","doubting"],["doubths","doubts"],["doucment","document"],["doucmentated","documented"],["doucmentation","documentation"],["doucmented","documented"],["doucmenter","documenter"],["doucmenters","documenters"],["doucmentes","documents"],["doucmenting","documenting"],["doucments","documents"],["douible","double"],["douibled","doubled"],["doulbe","double"],["doumentc","document"],["dout","doubt"],["dowgrade","downgrade"],["dowlink","downlink"],["dowlinks","downlinks"],["dowload","download"],["dowloaded","downloaded"],["dowloader","downloader"],["dowloaders","downloaders"],["dowloading","downloading"],["dowloads","downloads"],["downagrade","downgrade"],["downagraded","downgraded"],["downagrades","downgrades"],["downagrading","downgrading"],["downgade","downgrade"],["downgaded","downgraded"],["downgades","downgrades"],["downgading","downgrading"],["downgarade","downgrade"],["downgaraded","downgraded"],["downgarades","downgrades"],["downgarading","downgrading"],["downgarde","downgrade"],["downgarded","downgraded"],["downgardes","downgrades"],["downgarding","downgrading"],["downgarte","downgrade"],["downgarted","downgraded"],["downgartes","downgrades"],["downgarting","downgrading"],["downgradde","downgrade"],["downgradded","downgraded"],["downgraddes","downgrades"],["downgradding","downgrading"],["downgradei","downgrade"],["downgradingn","downgrading"],["downgrate","downgrade"],["downgrated","downgraded"],["downgrates","downgrades"],["downgrating","downgrading"],["downlad","download"],["downladed","downloaded"],["downlading","downloading"],["downlads","downloads"],["downlaod","download"],["downlaoded","downloaded"],["downlaodes","downloads"],["downlaoding","downloading"],["downlaods","downloads"],["downloadmanger","downloadmanager"],["downlod","download"],["downloded","downloaded"],["downloding","downloading"],["downlods","downloads"],["downlowd","download"],["downlowded","downloaded"],["downlowding","downloading"],["downlowds","downloads"],["downoad","download"],["downoaded","downloaded"],["downoading","downloading"],["downoads","downloads"],["downoload","download"],["downoloaded","downloaded"],["downoloading","downloading"],["downoloads","downloads"],["downrade","downgrade"],["downraded","downgraded"],["downrades","downgrades"],["downrading","downgrading"],["downrgade","downgrade"],["downrgaded","downgraded"],["downrgades","downgrades"],["downrgading","downgrading"],["downsteram","downstream"],["downsteramed","downstreamed"],["downsteramer","downstreamer"],["downsteramers","downstreamers"],["downsteraming","downstreaming"],["downsterams","downstreams"],["dows","does"],["dowt","doubt"],["doxgen","doxygen"],["doygen","doxygen"],["dpeends","depends"],["dpendent","dependent"],["dpkg-buildpackge","dpkg-buildpackage"],["dpkg-buildpackges","dpkg-buildpackages"],["dpuble","double"],["dpubles","doubles"],["draconain","draconian"],["dragable","draggable"],["draged","dragged"],["draging","dragging"],["draing","drawing"],["drammatic","dramatic"],["dramtic","dramatic"],["dran","drawn"],["drastical","drastically"],["drasticaly","drastically"],["drats","drafts"],["draughtman","draughtsman"],["Dravadian","Dravidian"],["draview","drawview"],["drawack","drawback"],["drawacks","drawbacks"],["drawm","drawn"],["drawng","drawing"],["dreasm","dreams"],["dreawn","drawn"],["dregee","degree"],["dregees","degrees"],["dregree","degree"],["dregrees","degrees"],["drescription","description"],["drescriptions","descriptions"],["driagram","diagram"],["driagrammed","diagrammed"],["driagramming","diagramming"],["driagrams","diagrams"],["driectly","directly"],["drity","dirty"],["driveing","driving"],["drivr","driver"],["drnik","drink"],["drob","drop"],["dropabel","droppable"],["dropable","droppable"],["droped","dropped"],["droping","dropping"],["droppend","dropped"],["droppped","dropped"],["dropse","drops"],["droput","dropout"],["druing","during"],["druming","drumming"],["drummless","drumless"],["drvier","driver"],["drwaing","drawing"],["drwawing","drawing"],["drwawings","drawings"],["dscrete","discrete"],["dscretion","discretion"],["dscribed","described"],["dsiable","disable"],["dsiabled","disabled"],["dsplays","displays"],["dstination","destination"],["dstinations","destinations"],["dthe","the"],["dtoring","storing"],["dubios","dubious"],["dublicade","duplicate"],["dublicat","duplicate"],["dublicate","duplicate"],["dublicated","duplicated"],["dublicates","duplicates"],["dublication","duplication"],["ducment","document"],["ducument","document"],["duirng","during"],["dulicate","duplicate"],["dum","dumb"],["dumplicate","duplicate"],["dumplicated","duplicated"],["dumplicates","duplicates"],["dumplicating","duplicating"],["duoblequote","doublequote"],["dupicate","duplicate"],["duplacate","duplicate"],["duplacated","duplicated"],["duplacates","duplicates"],["duplacation","duplication"],["duplacte","duplicate"],["duplacted","duplicated"],["duplactes","duplicates"],["duplaction","duplication"],["duplaicate","duplicate"],["duplaicated","duplicated"],["duplaicates","duplicates"],["duplaication","duplication"],["duplate","duplicate"],["duplated","duplicated"],["duplates","duplicates"],["duplation","duplication"],["duplcate","duplicate"],["duplciate","duplicate"],["dupliacate","duplicate"],["dupliacates","duplicates"],["dupliace","duplicate"],["dupliacte","duplicate"],["dupliacted","duplicated"],["dupliactes","duplicates"],["dupliagte","duplicate"],["dupliate","duplicate"],["dupliated","duplicated"],["dupliates","duplicates"],["dupliating","duplicating"],["dupliation","duplication"],["dupliations","duplications"],["duplicat","duplicate"],["duplicatd","duplicated"],["duplicats","duplicates"],["dupplicate","duplicate"],["dupplicated","duplicated"],["dupplicates","duplicates"],["dupplicating","duplicating"],["dupplication","duplication"],["dupplications","duplications"],["durationm","duration"],["durectories","directories"],["durectory","directory"],["dureing","during"],["durig","during"],["durining","during"],["durning","during"],["durring","during"],["duting","during"],["dyanamically","dynamically"],["dyanmic","dynamic"],["dyanmically","dynamically"],["dyas","dryas"],["dymamically","dynamically"],["dynamc","dynamic"],["dynamcly","dynamically"],["dynamcs","dynamics"],["dynamicaly","dynamically"],["dynamiclly","dynamically"],["dynamicly","dynamically"],["dynaminc","dynamic"],["dynamincal","dynamical"],["dynamincally","dynamically"],["dynamincs","dynamics"],["dynamlic","dynamic"],["dynamlically","dynamically"],["dynically","dynamically"],["dynmaic","dynamic"],["dynmaically","dynamically"],["dynmic","dynamic"],["dynmically","dynamically"],["dynmics","dynamics"],["eabled","enabled"],["eacf","each"],["eacg","each"],["eachother","each other"],["eachs","each"],["eactly","exactly"],["eagrely","eagerly"],["eahc","each"],["eailier","earlier"],["eaiser","easier"],["ealier","earlier"],["ealiest","earliest"],["eample","example"],["eamples","examples"],["eanable","enable"],["eanble","enable"],["earleir","earlier"],["earler","earlier"],["earliear","earlier"],["earlies","earliest"],["earlist","earliest"],["earlyer","earlier"],["earnt","earned"],["earpeice","earpiece"],["easely","easily"],["easili","easily"],["easiliy","easily"],["easilly","easily"],["easist","easiest"],["easiy","easily"],["easly","easily"],["easyer","easier"],["eaxct","exact"],["ebale","enable"],["ebaled","enabled"],["EBCIDC","EBCDIC"],["ebedded","embedded"],["eccessive","excessive"],["ecclectic","eclectic"],["eceonomy","economy"],["ecept","except"],["eception","exception"],["eceptions","exceptions"],["ecidious","deciduous"],["eclise","eclipse"],["eclispe","eclipse"],["ecnetricity","eccentricity"],["ecognized","recognized"],["ecomonic","economic"],["ecounter","encounter"],["ecountered","encountered"],["ecountering","encountering"],["ecounters","encounters"],["ecplicit","explicit"],["ecplicitly","explicitly"],["ecspecially","especially"],["ect","etc"],["ecxept","except"],["ecxite","excite"],["ecxited","excited"],["ecxites","excites"],["ecxiting","exciting"],["ecxtracted","extracted"],["EDCDIC","EBCDIC"],["eddge","edge"],["eddges","edges"],["edditable","editable"],["ede","edge"],["ediable","editable"],["edige","edge"],["ediges","edges"],["ediit","edit"],["ediiting","editing"],["ediitor","editor"],["ediitors","editors"],["ediits","edits"],["editedt","edited"],["editiing","editing"],["editoro","editor"],["editot","editor"],["editots","editors"],["editt","edit"],["editted","edited"],["editter","editor"],["editting","editing"],["edittor","editor"],["edn","end"],["ednif","endif"],["edxpected","expected"],["eearly","early"],["eeeprom","EEPROM"],["eescription","description"],["eevery","every"],["eeverything","everything"],["eeverywhere","everywhere"],["eextract","extract"],["eextracted","extracted"],["eextracting","extracting"],["eextraction","extraction"],["eextracts","extracts"],["efect","effect"],["efective","effective"],["efectively","effectively"],["efel","evil"],["eferences","references"],["efetivity","effectivity"],["effciency","efficiency"],["effcient","efficient"],["effciently","efficiently"],["effctive","effective"],["effctively","effectively"],["effeciency","efficiency"],["effecient","efficient"],["effeciently","efficiently"],["effecitvely","effectively"],["effeck","effect"],["effecked","effected"],["effecks","effects"],["effeckt","effect"],["effectice","effective"],["effecticely","effectively"],["effectiviness","effectiveness"],["effectivness","effectiveness"],["effectly","effectively"],["effedts","effects"],["effekt","effect"],["effexts","effects"],["efficcient","efficient"],["efficencty","efficiency"],["efficency","efficiency"],["efficent","efficient"],["efficently","efficiently"],["effiency","efficiency"],["effient","efficient"],["effiently","efficiently"],["effulence","effluence"],["eforceable","enforceable"],["egal","equal"],["egals","equals"],["egde","edge"],["egdes","edges"],["ege","edge"],["egenral","general"],["egenralise","generalise"],["egenralised","generalised"],["egenralises","generalises"],["egenralize","generalize"],["egenralized","generalized"],["egenralizes","generalizes"],["egenrally","generally"],["ehance","enhance"],["ehanced","enhanced"],["ehancement","enhancement"],["ehancements","enhancements"],["ehenever","whenever"],["ehough","enough"],["ehr","her"],["ehternet","Ethernet"],["ehthernet","ethernet"],["eighter","either"],["eihter","either"],["einstance","instance"],["eisntance","instance"],["eiter","either"],["eith","with"],["elaspe","elapse"],["elasped","elapsed"],["elaspes","elapses"],["elasping","elapsing"],["elction","election"],["elctromagnetic","electromagnetic"],["elease","release"],["eleased","released"],["eleases","releases"],["eleate","relate"],["electical","electrical"],["electirc","electric"],["electircal","electrical"],["electrial","electrical"],["electricly","electrically"],["electricty","electricity"],["electrinics","electronics"],["electriv","electric"],["electrnoics","electronics"],["eleemnt","element"],["eleent","element"],["elegible","eligible"],["elelement","element"],["elelements","elements"],["elelment","element"],["elelmental","elemental"],["elelmentary","elementary"],["elelments","elements"],["elemant","element"],["elemantary","elementary"],["elemement","element"],["elemements","elements"],["elememt","element"],["elemen","element"],["elemenent","element"],["elemenental","elemental"],["elemenents","elements"],["elemenet","element"],["elemenets","elements"],["elemens","elements"],["elemenst","elements"],["elementay","elementary"],["elementry","elementary"],["elemet","element"],["elemetal","elemental"],["elemetn","element"],["elemetns","elements"],["elemets","elements"],["eleminate","eliminate"],["eleminated","eliminated"],["eleminates","eliminates"],["eleminating","eliminating"],["elemnets","elements"],["elemnt","element"],["elemntal","elemental"],["elemnts","elements"],["elemt","element"],["elemtary","elementary"],["elemts","elements"],["elenment","element"],["eles","else"],["eletricity","electricity"],["eletromagnitic","electromagnetic"],["eletronic","electronic"],["elgible","eligible"],["elicided","elicited"],["eligable","eligible"],["elimentary","elementary"],["elimiante","eliminate"],["elimiate","eliminate"],["eliminetaion","elimination"],["elimintate","eliminate"],["eliminte","eliminate"],["elimnated","eliminated"],["eliptic","elliptic"],["eliptical","elliptical"],["elipticity","ellipticity"],["ellapsed","elapsed"],["ellected","elected"],["ellement","element"],["ellemental","elemental"],["ellementals","elementals"],["ellements","elements"],["elliminate","eliminate"],["elliminated","eliminated"],["elliminates","eliminates"],["elliminating","eliminating"],["ellipsises","ellipsis"],["ellision","elision"],["elmenet","element"],["elmenets","elements"],["elment","element"],["elments","elements"],["elminate","eliminate"],["elminated","eliminated"],["elminates","eliminates"],["elminating","eliminating"],["elphant","elephant"],["elsef","elseif"],["elsehwere","elsewhere"],["elseof","elseif"],["elseswhere","elsewhere"],["elsewehere","elsewhere"],["elsewere","elsewhere"],["elsewhwere","elsewhere"],["elsiof","elseif"],["elsof","elseif"],["emabaroged","embargoed"],["emable","enable"],["emabled","enabled"],["emables","enables"],["emabling","enabling"],["emailling","emailing"],["embarass","embarrass"],["embarassed","embarrassed"],["embarasses","embarrasses"],["embarassing","embarrassing"],["embarassment","embarrassment"],["embargos","embargoes"],["embarras","embarrass"],["embarrased","embarrassed"],["embarrasing","embarrassing"],["embarrasingly","embarrassingly"],["embarrasment","embarrassment"],["embbedded","embedded"],["embbeded","embedded"],["embdder","embedder"],["embdedded","embedded"],["embebbed","embedded"],["embedd","embed"],["embeddded","embedded"],["embeddeding","embedding"],["embedds","embeds"],["embeded","embedded"],["embededded","embedded"],["embeed","embed"],["embezelled","embezzled"],["emblamatic","emblematic"],["embold","embolden"],["embrodery","embroidery"],["emcompass","encompass"],["emcompassed","encompassed"],["emcompassing","encompassing"],["emedded","embedded"],["emegrency","emergency"],["emenet","element"],["emenets","elements"],["emiited","emitted"],["eminate","emanate"],["eminated","emanated"],["emision","emission"],["emited","emitted"],["emiting","emitting"],["emlation","emulation"],["emmediately","immediately"],["emminently","eminently"],["emmisaries","emissaries"],["emmisarries","emissaries"],["emmisarry","emissary"],["emmisary","emissary"],["emmision","emission"],["emmisions","emissions"],["emmit","emit"],["emmited","emitted"],["emmiting","emitting"],["emmits","emits"],["emmitted","emitted"],["emmitting","emitting"],["emnity","enmity"],["emoty","empty"],["emough","enough"],["emought","enough"],["emperical","empirical"],["emperically","empirically"],["emphaised","emphasised"],["emphsis","emphasis"],["emphysyma","emphysema"],["empiracally","empirically"],["empiricaly","empirically"],["emplyed","employed"],["emplyee","employee"],["emplyees","employees"],["emplyer","employer"],["emplyers","employers"],["emplying","employing"],["emplyment","employment"],["emplyments","employments"],["emporer","emperor"],["emprically","empirically"],["emprisoned","imprisoned"],["emprove","improve"],["emproved","improved"],["emprovement","improvement"],["emprovements","improvements"],["emproves","improves"],["emproving","improving"],["emptniess","emptiness"],["emptry","empty"],["emptyed","emptied"],["emptyy","empty"],["empy","empty"],["emtied","emptied"],["emties","empties"],["emtpies","empties"],["emtpy","empty"],["emty","empty"],["emtying","emptying"],["emultor","emulator"],["emultors","emulators"],["enabe","enable"],["enabel","enable"],["enabeled","enabled"],["enabeling","enabling"],["enabing","enabling"],["enabledi","enabled"],["enableing","enabling"],["enablen","enabled"],["enalbe","enable"],["enalbed","enabled"],["enalbes","enables"],["enameld","enameled"],["enaugh","enough"],["enbable","enable"],["enbabled","enabled"],["enbabling","enabling"],["enbale","enable"],["enbaled","enabled"],["enbales","enables"],["enbaling","enabling"],["enbedding","embedding"],["enble","enable"],["encapsualtes","encapsulates"],["encapsulatzion","encapsulation"],["encapsultion","encapsulation"],["encaspulate","encapsulate"],["encaspulated","encapsulated"],["encaspulates","encapsulates"],["encaspulating","encapsulating"],["encaspulation","encapsulation"],["enchanced","enhanced"],["enclosng","enclosing"],["enclosue","enclosure"],["enclosung","enclosing"],["enclude","include"],["encluding","including"],["encocde","encode"],["encocded","encoded"],["encocder","encoder"],["encocders","encoders"],["encocdes","encodes"],["encocding","encoding"],["encocdings","encodings"],["encodingt","encoding"],["encodning","encoding"],["encodnings","encodings"],["encompas","encompass"],["encompased","encompassed"],["encompases","encompasses"],["encompasing","encompassing"],["enconde","encode"],["enconded","encoded"],["enconder","encoder"],["enconders","encoders"],["encondes","encodes"],["enconding","encoding"],["encondings","encodings"],["encorded","encoded"],["encorder","encoder"],["encorders","encoders"],["encording","encoding"],["encordings","encodings"],["encorporating","incorporating"],["encoser","encoder"],["encosers","encoders"],["encosure","enclosure"],["encounterd","encountered"],["encountres","encounters"],["encouraing","encouraging"],["encouter","encounter"],["encoutered","encountered"],["encouters","encounters"],["encoutner","encounter"],["encoutners","encounters"],["encouttering","encountering"],["encrcypt","encrypt"],["encrcypted","encrypted"],["encrcyption","encryption"],["encrcyptions","encryptions"],["encrcypts","encrypts"],["encript","encrypt"],["encripted","encrypted"],["encription","encryption"],["encriptions","encryptions"],["encripts","encrypts"],["encrpt","encrypt"],["encrpted","encrypted"],["encrption","encryption"],["encrptions","encryptions"],["encrpts","encrypts"],["encrupted","encrypted"],["encrypiton","encryption"],["encryptiion","encryption"],["encryptio","encryption"],["encryptiong","encryption"],["encrytion","encryption"],["encrytped","encrypted"],["encrytption","encryption"],["encupsulates","encapsulates"],["encylopedia","encyclopedia"],["encypted","encrypted"],["encyption","encryption"],["endcoded","encoded"],["endcoder","encoder"],["endcoders","encoders"],["endcodes","encodes"],["endcoding","encoding"],["endcodings","encodings"],["endding","ending"],["ende","end"],["endevors","endeavors"],["endevour","endeavour"],["endfi","endif"],["endianes","endianness"],["endianess","endianness"],["endianity","endianness"],["endiannes","endianness"],["endig","ending"],["endiness","endianness"],["endnoden","endnode"],["endoint","endpoint"],["endolithes","endoliths"],["endpints","endpoints"],["endpiont","endpoint"],["endpionts","endpoints"],["endpont","endpoint"],["endponts","endpoints"],["endsup","ends up"],["enduce","induce"],["eneables","enables"],["enebale","enable"],["enebaled","enabled"],["eneble","enable"],["ened","need"],["enegeries","energies"],["enegery","energy"],["enehanced","enhanced"],["enery","energy"],["eneter","enter"],["enetered","entered"],["enetities","entities"],["enetity","entity"],["eneumeration","enumeration"],["eneumerations","enumerations"],["eneumretaion","enumeration"],["eneumretaions","enumerations"],["enew","new"],["enflamed","inflamed"],["enforcable","enforceable"],["enforceing","enforcing"],["enforcmement","enforcement"],["enforcment","enforcement"],["enfore","enforce"],["enfored","enforced"],["enfores","enforces"],["enforncing","enforcing"],["engagment","engagement"],["engeneer","engineer"],["engeneering","engineering"],["engery","energy"],["engieer","engineer"],["engieneer","engineer"],["engieneers","engineers"],["enginee","engine"],["enginge","engine"],["enginin","engine"],["enginineer","engineer"],["engoug","enough"],["enhabce","enhance"],["enhabced","enhanced"],["enhabces","enhances"],["enhabcing","enhancing"],["enhace","enhance"],["enhaced","enhanced"],["enhacement","enhancement"],["enhacements","enhancements"],["enhancd","enhanced"],["enhancment","enhancement"],["enhancments","enhancements"],["enhaned","enhanced"],["enhence","enhance"],["enhenced","enhanced"],["enhencement","enhancement"],["enhencements","enhancements"],["enhencment","enhancement"],["enhencments","enhancements"],["enironment","environment"],["enironments","environments"],["enities","entities"],["enitities","entities"],["enitity","entity"],["enitre","entire"],["enivornment","environment"],["enivornments","environments"],["enivronment","environment"],["enlargment","enlargement"],["enlargments","enlargements"],["enlightnment","enlightenment"],["enlose","enclose"],["enmpty","empty"],["enmum","enum"],["ennpoint","endpoint"],["enntries","entries"],["enocde","encode"],["enocded","encoded"],["enocder","encoder"],["enocders","encoders"],["enocdes","encodes"],["enocding","encoding"],["enocdings","encodings"],["enogh","enough"],["enoght","enough"],["enoguh","enough"],["enouch","enough"],["enoucnter","encounter"],["enoucntered","encountered"],["enoucntering","encountering"],["enoucnters","encounters"],["enouf","enough"],["enoufh","enough"],["enought","enough"],["enoughts","enough"],["enougth","enough"],["enouh","enough"],["enouhg","enough"],["enouncter","encounter"],["enounctered","encountered"],["enounctering","encountering"],["enouncters","encounters"],["enoung","enough"],["enoungh","enough"],["enounter","encounter"],["enountered","encountered"],["enountering","encountering"],["enounters","encounters"],["enouph","enough"],["enourage","encourage"],["enouraged","encouraged"],["enourages","encourages"],["enouraging","encouraging"],["enourmous","enormous"],["enourmously","enormously"],["enouth","enough"],["enouugh","enough"],["enpoint","endpoint"],["enpoints","endpoints"],["enque","enqueue"],["enqueing","enqueuing"],["enrties","entries"],["enrtries","entries"],["enrtry","entry"],["enrty","entry"],["ensconsed","ensconced"],["entaglements","entanglements"],["entended","intended"],["entension","extension"],["entensions","extensions"],["ententries","entries"],["enterance","entrance"],["enteratinment","entertainment"],["entereing","entering"],["enterie","entry"],["enteries","entries"],["enterily","entirely"],["enterprice","enterprise"],["enterprices","enterprises"],["entery","entry"],["enteties","entities"],["entety","entity"],["enthaplies","enthalpies"],["enthaply","enthalpy"],["enthousiasm","enthusiasm"],["enthusiam","enthusiasm"],["enthusiatic","enthusiastic"],["entierly","entirely"],["entireity","entirety"],["entires","entries"],["entirey","entirely"],["entirity","entirety"],["entirly","entirely"],["entitee","entity"],["entitees","entities"],["entites","entities"],["entiti","entity"],["entitie","entity"],["entitites","entities"],["entitities","entities"],["entitity","entity"],["entitiy","entity"],["entitiys","entities"],["entitlied","entitled"],["entitys","entities"],["entoties","entities"],["entoty","entity"],["entrace","entrance"],["entraced","entranced"],["entraces","entrances"],["entrepeneur","entrepreneur"],["entrepeneurs","entrepreneurs"],["entriess","entries"],["entrophy","entropy"],["enttries","entries"],["enttry","entry"],["enulation","emulation"],["enumarate","enumerate"],["enumarated","enumerated"],["enumarates","enumerates"],["enumarating","enumerating"],["enumation","enumeration"],["enumearate","enumerate"],["enumearation","enumeration"],["enumerble","enumerable"],["enumertaion","enumeration"],["enusre","ensure"],["envaluation","evaluation"],["enveloppe","envelope"],["envelopped","enveloped"],["enveloppes","envelopes"],["envelopping","enveloping"],["enver","never"],["envioment","environment"],["enviomental","environmental"],["envioments","environments"],["envionment","environment"],["envionmental","environmental"],["envionments","environments"],["enviorement","environment"],["envioremental","environmental"],["enviorements","environments"],["enviorenment","environment"],["enviorenmental","environmental"],["enviorenments","environments"],["enviorment","environment"],["enviormental","environmental"],["enviormentally","environmentally"],["enviorments","environments"],["enviornemnt","environment"],["enviornemntal","environmental"],["enviornemnts","environments"],["enviornment","environment"],["enviornmental","environmental"],["enviornmentalist","environmentalist"],["enviornmentally","environmentally"],["enviornments","environments"],["envioronment","environment"],["envioronmental","environmental"],["envioronments","environments"],["envireonment","environment"],["envirionment","environment"],["envirnment","environment"],["envirnmental","environmental"],["envirnments","environments"],["envirnoment","environment"],["envirnoments","environments"],["enviroiment","environment"],["enviroment","environment"],["enviromental","environmental"],["enviromentalist","environmentalist"],["enviromentally","environmentally"],["enviroments","environments"],["enviromnent","environment"],["enviromnental","environmental"],["enviromnentally","environmentally"],["enviromnents","environments"],["environement","environment"],["environemnt","environment"],["environemntal","environmental"],["environemnts","environments"],["environent","environment"],["environmane","environment"],["environmenet","environment"],["environmenets","environments"],["environmet","environment"],["environmets","environments"],["environmnet","environment"],["environmont","environment"],["environnement","environment"],["environtment","environment"],["envolutionary","evolutionary"],["envolved","involved"],["envorce","enforce"],["envrion","environ"],["envrionment","environment"],["envrionmental","environmental"],["envrionments","environments"],["envrions","environs"],["envriron","environ"],["envrironment","environment"],["envrironmental","environmental"],["envrironments","environments"],["envrirons","environs"],["envvironment","environment"],["enxt","next"],["enything","anything"],["enyway","anyway"],["epecifica","especifica"],["epect","expect"],["epected","expected"],["epectedly","expectedly"],["epecting","expecting"],["epects","expects"],["ephememeral","ephemeral"],["ephememeris","ephemeris"],["epidsodes","episodes"],["epigramic","epigrammatic"],["epilgoue","epilogue"],["episdoe","episode"],["episdoes","episodes"],["eploit","exploit"],["eploits","exploits"],["epmty","empty"],["epressions","expressions"],["epsiode","episode"],["eptied","emptied"],["eptier","emptier"],["epties","empties"],["eptrapolate","extrapolate"],["eptrapolated","extrapolated"],["eptrapolates","extrapolates"],["epty","empty"],["epxanded","expanded"],["epxected","expected"],["epxiressions","expressions"],["epxlicit","explicit"],["eqaul","equal"],["eqaulity","equality"],["eqaulizer","equalizer"],["eqivalent","equivalent"],["eqivalents","equivalents"],["equailateral","equilateral"],["equalibrium","equilibrium"],["equallity","equality"],["equalls","equals"],["equaly","equally"],["equeation","equation"],["equeations","equations"],["equel","equal"],["equelibrium","equilibrium"],["equialent","equivalent"],["equil","equal"],["equilavalent","equivalent"],["equilibium","equilibrium"],["equilibrum","equilibrium"],["equilvalent","equivalent"],["equilvalently","equivalently"],["equilvalents","equivalents"],["equiped","equipped"],["equipmentd","equipment"],["equipments","equipment"],["equippment","equipment"],["equiptment","equipment"],["equitorial","equatorial"],["equivalance","equivalence"],["equivalant","equivalent"],["equivelant","equivalent"],["equivelent","equivalent"],["equivelents","equivalents"],["equivilant","equivalent"],["equivilent","equivalent"],["equivivalent","equivalent"],["equivlalent","equivalent"],["equivlantly","equivalently"],["equivlent","equivalent"],["equivlently","equivalently"],["equivlents","equivalents"],["equivqlent","equivalent"],["eqution","equation"],["equtions","equations"],["equvalent","equivalent"],["equvivalent","equivalent"],["erasablocks","eraseblocks"],["eratic","erratic"],["eratically","erratically"],["eraticly","erratically"],["erformance","performance"],["erliear","earlier"],["erlier","earlier"],["erly","early"],["ermergency","emergency"],["eroneous","erroneous"],["eror","error"],["erorneus","erroneous"],["erorneusly","erroneously"],["erorr","error"],["erorrs","errors"],["erors","errors"],["erraneously","erroneously"],["erro","error"],["erroneus","erroneous"],["erroneusly","erroneously"],["erronous","erroneous"],["erronously","erroneously"],["errorneous","erroneous"],["errorneously","erroneously"],["errorneus","erroneous"],["errornous","erroneous"],["errornously","erroneously"],["errorprone","error-prone"],["errorr","error"],["erros","errors"],["errot","error"],["errots","errors"],["errro","error"],["errror","error"],["errrors","errors"],["errros","errors"],["errupted","erupted"],["ertoneous","erroneous"],["ertoneously","erroneously"],["ervery","every"],["erverything","everything"],["esacpe","escape"],["esacped","escaped"],["esacpes","escapes"],["escalte","escalate"],["escalted","escalated"],["escaltes","escalates"],["escalting","escalating"],["escaltion","escalation"],["escapeable","escapable"],["escapemant","escapement"],["escased","escaped"],["escation","escalation"],["esccape","escape"],["esccaped","escaped"],["escpae","escape"],["escpaed","escaped"],["esecute","execute"],["esential","essential"],["esentially","essentially"],["esge","edge"],["esger","edger"],["esgers","edgers"],["esges","edges"],["esging","edging"],["esiest","easiest"],["esimate","estimate"],["esimated","estimated"],["esimates","estimates"],["esimating","estimating"],["esimation","estimation"],["esimations","estimations"],["esimator","estimator"],["esimators","estimators"],["esists","exists"],["esitmate","estimate"],["esitmated","estimated"],["esitmates","estimates"],["esitmating","estimating"],["esitmation","estimation"],["esitmations","estimations"],["esitmator","estimator"],["esitmators","estimators"],["esle","else"],["esnure","ensure"],["esnured","ensured"],["esnures","ensures"],["espacally","especially"],["espace","escape"],["espaced","escaped"],["espaces","escapes"],["espacially","especially"],["espacing","escaping"],["espcially","especially"],["especailly","especially"],["especally","especially"],["especialy","especially"],["especialyl","especially"],["especiially","especially"],["espect","expect"],["espeically","especially"],["esseintially","essentially"],["essencial","essential"],["essense","essence"],["essentail","essential"],["essentailly","essentially"],["essentaily","essentially"],["essental","essential"],["essentally","essentially"],["essentals","essentials"],["essentialy","essentially"],["essentual","essential"],["essentually","essentially"],["essentualy","essentially"],["essesital","essential"],["essesitally","essentially"],["essesitaly","essentially"],["essiential","essential"],["esssential","essential"],["estabilish","establish"],["estabish","establish"],["estabishd","established"],["estabished","established"],["estabishes","establishes"],["estabishing","establishing"],["establised","established"],["establishs","establishes"],["establising","establishing"],["establsihed","established"],["estbalishment","establishment"],["estimage","estimate"],["estimages","estimates"],["estiomator","estimator"],["estiomators","estimators"],["esy","easy"],["etablish","establish"],["etablishd","established"],["etablished","established"],["etablishing","establishing"],["etcc","etc"],["etcp","etc"],["etensible","extensible"],["etension","extension"],["etensions","extensions"],["ethe","the"],["etherenet","Ethernet"],["ethernal","eternal"],["ethnocentricm","ethnocentrism"],["etiher","either"],["etroneous","erroneous"],["etroneously","erroneously"],["etsablishment","establishment"],["etsbalishment","establishment"],["etst","test"],["etsts","tests"],["etxt","text"],["euclidian","euclidean"],["euivalent","equivalent"],["euivalents","equivalents"],["euqivalent","equivalent"],["euqivalents","equivalents"],["euristic","heuristic"],["euristics","heuristics"],["Europian","European"],["Europians","Europeans"],["Eurpean","European"],["Eurpoean","European"],["evalation","evaluation"],["evalite","evaluate"],["evalited","evaluated"],["evalites","evaluates"],["evaluataion","evaluation"],["evaluataions","evaluations"],["evalueate","evaluate"],["evalueated","evaluated"],["evaluete","evaluate"],["evalueted","evaluated"],["evalulates","evaluates"],["evalutae","evaluate"],["evalutaed","evaluated"],["evalutaeing","evaluating"],["evalutaes","evaluates"],["evalutaing","evaluating"],["evalutaion","evaluation"],["evalutaions","evaluations"],["evalutaor","evaluator"],["evalutate","evaluate"],["evalutated","evaluated"],["evalutates","evaluates"],["evalutating","evaluating"],["evalutation","evaluation"],["evalutations","evaluations"],["evalute","evaluate"],["evaluted","evaluated"],["evalutes","evaluates"],["evaluting","evaluating"],["evalutions","evaluations"],["evalutive","evaluative"],["evalutor","evaluator"],["evalutors","evaluators"],["evaulate","evaluate"],["evaulated","evaluated"],["evaulates","evaluates"],["evaulating","evaluating"],["evaulation","evaluation"],["evaulator","evaluator"],["evaulted","evaluated"],["evauluate","evaluate"],["evauluated","evaluated"],["evauluates","evaluates"],["evauluation","evaluation"],["eveluate","evaluate"],["eveluated","evaluated"],["eveluates","evaluates"],["eveluating","evaluating"],["eveluation","evaluation"],["eveluations","evaluations"],["eveluator","evaluator"],["eveluators","evaluators"],["evenhtually","eventually"],["eventally","eventually"],["eventaully","eventually"],["eventhanders","event handlers"],["eventhough","even though"],["eventially","eventually"],["eventuall","eventually"],["eventualy","eventually"],["evenually","eventually"],["eveolution","evolution"],["eveolutionary","evolutionary"],["eveolve","evolve"],["eveolved","evolved"],["eveolves","evolves"],["eveolving","evolving"],["everage","average"],["everaged","averaged"],["everbody","everybody"],["everithing","everything"],["everone","everyone"],["everthing","everything"],["evertyhign","everything"],["evertyhing","everything"],["evertything","everything"],["everwhere","everywhere"],["everyhing","everything"],["everyhting","everything"],["everythig","everything"],["everythign","everything"],["everythin","everything"],["everythings","everything"],["everytime","every time"],["everyting","everything"],["everytone","everyone"],["evey","every"],["eveyone","everyone"],["eveyr","every"],["evidentally","evidently"],["evironment","environment"],["evironments","environments"],["evition","eviction"],["evluate","evaluate"],["evluated","evaluated"],["evluates","evaluates"],["evluating","evaluating"],["evluation","evaluation"],["evluations","evaluations"],["evluative","evaluative"],["evluator","evaluator"],["evluators","evaluators"],["evnet","event"],["evnts","events"],["evoluate","evaluate"],["evoluated","evaluated"],["evoluates","evaluates"],["evoluation","evaluations"],["evovler","evolver"],["evovling","evolving"],["evrithing","everything"],["evry","every"],["evrythign","everything"],["evrything","everything"],["evrywhere","everywhere"],["evyrthing","everything"],["ewhwer","where"],["exaclty","exactly"],["exacly","exactly"],["exactely","exactly"],["exacty","exactly"],["exacutable","executable"],["exagerate","exaggerate"],["exagerated","exaggerated"],["exagerates","exaggerates"],["exagerating","exaggerating"],["exagerrate","exaggerate"],["exagerrated","exaggerated"],["exagerrates","exaggerates"],["exagerrating","exaggerating"],["exameple","example"],["exameples","examples"],["examied","examined"],["examinated","examined"],["examing","examining"],["examinining","examining"],["examle","example"],["examles","examples"],["examlpe","example"],["examlpes","examples"],["examnple","example"],["examnples","examples"],["exampel","example"],["exampeles","examples"],["exampels","examples"],["examplees","examples"],["examplifies","exemplifies"],["exampple","example"],["exampples","examples"],["exampt","exempt"],["exand","expand"],["exansive","expansive"],["exapansion","expansion"],["exapend","expand"],["exaplain","explain"],["exaplaination","explanation"],["exaplained","explained"],["exaplaining","explaining"],["exaplains","explains"],["exaplanation","explanation"],["exaplanations","explanations"],["exaple","example"],["exaples","examples"],["exapmle","example"],["exapmles","examples"],["exapnsion","expansion"],["exat","exact"],["exatcly","exactly"],["exatctly","exactly"],["exatly","exactly"],["exausted","exhausted"],["excact","exact"],["excactly","exactly"],["excahcnge","exchange"],["excahnge","exchange"],["excahnges","exchanges"],["excange","exchange"],["excape","escape"],["excaped","escaped"],["excapes","escapes"],["excat","exact"],["excating","exacting"],["excatly","exactly"],["exccute","execute"],["excecise","exercise"],["excecises","exercises"],["excecpt","except"],["excecption","exception"],["excecptional","exceptional"],["excecptions","exceptions"],["excectable","executable"],["excectables","executables"],["excecte","execute"],["excectedly","expectedly"],["excectes","executes"],["excecting","executing"],["excectional","exceptional"],["excective","executive"],["excectives","executives"],["excector","executor"],["excectors","executors"],["excects","expects"],["excecutable","executable"],["excecutables","executables"],["excecute","execute"],["excecuted","executed"],["excecutes","executes"],["excecuting","executing"],["excecution","execution"],["excecutions","executions"],["excecutive","executive"],["excecutives","executives"],["excecutor","executor"],["excecutors","executors"],["excecuts","executes"],["exced","exceed"],["excedded","exceeded"],["excedding","exceeding"],["excede","exceed"],["exceded","exceeded"],["excedeed","exceeded"],["excedes","exceeds"],["exceding","exceeding"],["exceeed","exceed"],["exceirpt","excerpt"],["exceirpts","excerpts"],["excelent","excellent"],["excell","excel"],["excellance","excellence"],["excellant","excellent"],["excells","excels"],["excempt","exempt"],["excempted","exempted"],["excemption","exemption"],["excemptions","exemptions"],["excempts","exempts"],["excentric","eccentric"],["excentricity","eccentricity"],["excentuating","accentuating"],["exceopt","exempt"],["exceopted","exempted"],["exceopts","exempts"],["exceotion","exemption"],["exceotions","exemptions"],["excepetion","exception"],["excepion","exception"],["excepional","exceptional"],["excepionally","exceptionally"],["excepions","exceptions"],["exceprt","excerpt"],["exceprts","excerpts"],["exceptation","expectation"],["exceptionnal","exceptional"],["exceptionss","exceptions"],["exceptionts","exceptions"],["excercise","exercise"],["excercised","exercised"],["excerciser","exerciser"],["excercises","exercises"],["excercising","exercising"],["excerise","exercise"],["exces","excess"],["excesed","exceeded"],["excesive","excessive"],["excesively","excessively"],["excesss","excess"],["excesv","excessive"],["excesvly","excessively"],["excetion","exception"],["excetional","exceptional"],["excetions","exceptions"],["excetpion","exception"],["excetpional","exceptional"],["excetpions","exceptions"],["excetption","exception"],["excetptional","exceptional"],["excetptions","exceptions"],["excetra","etcetera"],["excetutable","executable"],["excetutables","executables"],["excetute","execute"],["excetuted","executed"],["excetutes","executes"],["excetuting","executing"],["excetution","execution"],["excetutions","executions"],["excetutive","executive"],["excetutives","executives"],["excetutor","executor"],["excetutors","executors"],["exceuctable","executable"],["exceuctables","executables"],["exceucte","execute"],["exceucted","executed"],["exceuctes","executes"],["exceucting","executing"],["exceuction","execution"],["exceuctions","executions"],["exceuctive","executive"],["exceuctives","executives"],["exceuctor","executor"],["exceuctors","executors"],["exceutable","executable"],["exceutables","executables"],["exceute","execute"],["exceuted","executed"],["exceutes","executes"],["exceuting","executing"],["exceution","execution"],["exceutions","executions"],["exceutive","executive"],["exceutives","executives"],["exceutor","executor"],["exceutors","executors"],["excewption","exception"],["excewptional","exceptional"],["excewptions","exceptions"],["exchage","exchange"],["exchaged","exchanged"],["exchages","exchanges"],["exchaging","exchanging"],["exchagne","exchange"],["exchagned","exchanged"],["exchagnes","exchanges"],["exchagnge","exchange"],["exchagnged","exchanged"],["exchagnges","exchanges"],["exchagnging","exchanging"],["exchagning","exchanging"],["exchanage","exchange"],["exchanaged","exchanged"],["exchanages","exchanges"],["exchanaging","exchanging"],["exchance","exchange"],["exchanced","exchanged"],["exchances","exchanges"],["exchanche","exchange"],["exchanched","exchanged"],["exchanches","exchanges"],["exchanching","exchanging"],["exchancing","exchanging"],["exchane","exchange"],["exchaned","exchanged"],["exchanes","exchanges"],["exchangable","exchangeable"],["exchaning","exchanging"],["exchaust","exhaust"],["exchausted","exhausted"],["exchausting","exhausting"],["exchaustive","exhaustive"],["exchausts","exhausts"],["exchenge","exchange"],["exchenged","exchanged"],["exchenges","exchanges"],["exchenging","exchanging"],["exchnage","exchange"],["exchnaged","exchanged"],["exchnages","exchanges"],["exchnaging","exchanging"],["exchng","exchange"],["exchngd","exchanged"],["exchnge","exchange"],["exchnged","exchanged"],["exchnges","exchanges"],["exchnging","exchanging"],["exchngng","exchanging"],["exchngs","exchanges"],["exciation","excitation"],["excipt","except"],["exciption","exception"],["exciptions","exceptions"],["excist","exist"],["excisted","existed"],["excisting","existing"],["excitment","excitement"],["exclamantion","exclamation"],["excludde","exclude"],["excludind","excluding"],["exclusiv","exclusive"],["exclusivelly","exclusively"],["exclusivly","exclusively"],["exclusivs","exclusives"],["excluslvely","exclusively"],["exclusuive","exclusive"],["exclusuively","exclusively"],["exclusuives","exclusives"],["excpect","expect"],["excpected","expected"],["excpecting","expecting"],["excpects","expects"],["excpeption","exception"],["excpet","except"],["excpetion","exception"],["excpetional","exceptional"],["excpetions","exceptions"],["excplicit","explicit"],["excplicitly","explicitly"],["excplict","explicit"],["excplictly","explicitly"],["excract","extract"],["exctacted","extracted"],["exctract","extract"],["exctracted","extracted"],["exctracting","extracting"],["exctraction","extraction"],["exctractions","extractions"],["exctractor","extractor"],["exctractors","extractors"],["exctracts","extracts"],["exculde","exclude"],["exculding","excluding"],["exculsive","exclusive"],["exculsively","exclusively"],["exculsivly","exclusively"],["excutable","executable"],["excutables","executables"],["excute","execute"],["excuted","executed"],["excutes","executes"],["excuting","executing"],["excution","execution"],["execeed","exceed"],["execeeded","exceeded"],["execeeds","exceeds"],["exeception","exception"],["execeptions","exceptions"],["execising","exercising"],["execption","exception"],["execptions","exceptions"],["exectable","executable"],["exection","execution"],["exections","executions"],["exectuable","executable"],["exectuableness","executableness"],["exectuables","executables"],["exectued","executed"],["exectuion","execution"],["exectuions","executions"],["execture","execute"],["exectured","executed"],["exectures","executes"],["execturing","executing"],["exectute","execute"],["exectuted","executed"],["exectutes","executes"],["exectution","execution"],["exectutions","executions"],["execuable","executable"],["execuables","executables"],["execuatable","executable"],["execuatables","executables"],["execuatble","executable"],["execuatbles","executables"],["execuate","execute"],["execuated","executed"],["execuates","executes"],["execuation","execution"],["execuations","executions"],["execubale","executable"],["execubales","executables"],["execucte","execute"],["execucted","executed"],["execuctes","executes"],["execuction","execution"],["execuctions","executions"],["execuctor","executor"],["execuctors","executors"],["execude","execute"],["execuded","executed"],["execudes","executes"],["execue","execute"],["execued","executed"],["execues","executes"],["execuet","execute"],["execuetable","executable"],["execuetd","executed"],["execuete","execute"],["execueted","executed"],["execuetes","executes"],["execuets","executes"],["execuing","executing"],["execuion","execution"],["execuions","executions"],["execuitable","executable"],["execuitables","executables"],["execuite","execute"],["execuited","executed"],["execuites","executes"],["execuiting","executing"],["execuition","execution"],["execuitions","executions"],["execulatble","executable"],["execulatbles","executables"],["execultable","executable"],["execultables","executables"],["execulusive","exclusive"],["execune","execute"],["execuned","executed"],["execunes","executes"],["execunting","executing"],["execurable","executable"],["execurables","executables"],["execure","execute"],["execured","executed"],["execures","executes"],["execusion","execution"],["execusions","executions"],["execusive","exclusive"],["execustion","execution"],["execustions","executions"],["execut","execute"],["executabable","executable"],["executabables","executables"],["executabe","executable"],["executabel","executable"],["executabels","executables"],["executabes","executables"],["executablble","executable"],["executabnle","executable"],["executabnles","executables"],["executation","execution"],["executations","executions"],["executbale","executable"],["executbales","executables"],["executble","executable"],["executbles","executables"],["executd","executed"],["executding","executing"],["executeable","executable"],["executeables","executables"],["executible","executable"],["executign","executing"],["executng","executing"],["executre","execute"],["executred","executed"],["executres","executes"],["executs","executes"],["executting","executing"],["executtion","execution"],["executtions","executions"],["executuable","executable"],["executuables","executables"],["executuble","executable"],["executubles","executables"],["executue","execute"],["executued","executed"],["executues","executes"],["executuing","executing"],["executuion","execution"],["executuions","executions"],["executung","executing"],["executuon","execution"],["executuons","executions"],["executute","execute"],["execututed","executed"],["execututes","executes"],["executution","execution"],["execututions","executions"],["exeed","exceed"],["exeeding","exceeding"],["exeedingly","exceedingly"],["exeeds","exceeds"],["exelent","excellent"],["exellent","excellent"],["exempel","example"],["exempels","examples"],["exemple","example"],["exemples","examples"],["exended","extended"],["exension","extension"],["exensions","extensions"],["exent","extent"],["exentended","extended"],["exepct","expect"],["exepcted","expected"],["exepcts","expects"],["exepect","expect"],["exepectation","expectation"],["exepectations","expectations"],["exepected","expected"],["exepectedly","expectedly"],["exepecting","expecting"],["exepects","expects"],["exepriment","experiment"],["exeprimental","experimental"],["exeptional","exceptional"],["exeptions","exceptions"],["exeqution","execution"],["exerbate","exacerbate"],["exerbated","exacerbated"],["exerciese","exercise"],["exerciesed","exercised"],["exercieses","exercises"],["exerciesing","exercising"],["exercize","exercise"],["exerimental","experimental"],["exerpt","excerpt"],["exerpts","excerpts"],["exersize","exercise"],["exersizes","exercises"],["exerternal","external"],["exeucte","execute"],["exeucted","executed"],["exeuctes","executes"],["exeution","execution"],["exexutable","executable"],["exhalted","exalted"],["exhange","exchange"],["exhanged","exchanged"],["exhanges","exchanges"],["exhanging","exchanging"],["exhaused","exhausted"],["exhautivity","exhaustivity"],["exhcuast","exhaust"],["exhcuasted","exhausted"],["exhibtion","exhibition"],["exhist","exist"],["exhistance","existence"],["exhisted","existed"],["exhistence","existence"],["exhisting","existing"],["exhists","exists"],["exhostive","exhaustive"],["exhustiveness","exhaustiveness"],["exibition","exhibition"],["exibitions","exhibitions"],["exicting","exciting"],["exinct","extinct"],["exipration","expiration"],["exipre","expire"],["exipred","expired"],["exipres","expires"],["exising","existing"],["exisit","exist"],["exisited","existed"],["exisitent","existent"],["exisiting","existing"],["exisitng","existing"],["exisits","exists"],["existance","existence"],["existant","existent"],["existatus","exitstatus"],["existencd","existence"],["existend","existed"],["existense","existence"],["existin","existing"],["existince","existence"],["existng","existing"],["existsing","existing"],["existting","existing"],["existung","existing"],["existy","exist"],["existying","existing"],["exitance","existence"],["exitation","excitation"],["exitations","excitations"],["exitt","exit"],["exitted","exited"],["exitting","exiting"],["exitts","exits"],["exixst","exist"],["exixt","exist"],["exlamation","exclamation"],["exlcude","exclude"],["exlcuding","excluding"],["exlcusion","exclusion"],["exlcusions","exclusions"],["exlcusive","exclusive"],["exlicit","explicit"],["exlicite","explicit"],["exlicitely","explicitly"],["exlicitly","explicitly"],["exliled","exiled"],["exlpoit","exploit"],["exlpoited","exploited"],["exlpoits","exploits"],["exlusion","exclusion"],["exlusionary","exclusionary"],["exlusions","exclusions"],["exlusive","exclusive"],["exlusively","exclusively"],["exmaine","examine"],["exmained","examined"],["exmaines","examines"],["exmaple","example"],["exmaples","examples"],["exmple","example"],["exmport","export"],["exnternal","external"],["exnternalities","externalities"],["exnternality","externality"],["exnternally","externally"],["exntry","entry"],["exolicit","explicit"],["exolicitly","explicitly"],["exonorate","exonerate"],["exort","export"],["exoskelaton","exoskeleton"],["expalin","explain"],["expaning","expanding"],["expanion","expansion"],["expanions","expansions"],["expanshion","expansion"],["expanshions","expansions"],["expanssion","expansion"],["exparation","expiration"],["expasion","expansion"],["expatriot","expatriate"],["expception","exception"],["expcetation","expectation"],["expcetations","expectations"],["expceted","expected"],["expceting","expecting"],["expcets","expects"],["expct","expect"],["expcted","expected"],["expctedly","expectedly"],["expcting","expecting"],["expeced","expected"],["expeceted","expected"],["expecially","especially"],["expectaion","expectation"],["expectaions","expectations"],["expectatoins","expectations"],["expectatons","expectations"],["expectd","expected"],["expecte","expected"],["expectes","expects"],["expection","exception"],["expections","exceptions"],["expeditonary","expeditionary"],["expeect","expect"],["expeected","expected"],["expeectedly","expectedly"],["expeecting","expecting"],["expeects","expects"],["expeense","expense"],["expeenses","expenses"],["expeensive","expensive"],["expeience","experience"],["expeienced","experienced"],["expeiences","experiences"],["expeiencing","experiencing"],["expeiment","experiment"],["expeimental","experimental"],["expeimentally","experimentally"],["expeimentation","experimentation"],["expeimentations","experimentations"],["expeimented","experimented"],["expeimentel","experimental"],["expeimentelly","experimentally"],["expeimenter","experimenter"],["expeimenters","experimenters"],["expeimenting","experimenting"],["expeiments","experiments"],["expeiriment","experiment"],["expeirimental","experimental"],["expeirimentally","experimentally"],["expeirimentation","experimentation"],["expeirimentations","experimentations"],["expeirimented","experimented"],["expeirimentel","experimental"],["expeirimentelly","experimentally"],["expeirimenter","experimenter"],["expeirimenters","experimenters"],["expeirimenting","experimenting"],["expeiriments","experiments"],["expell","expel"],["expells","expels"],["expement","experiment"],["expemental","experimental"],["expementally","experimentally"],["expementation","experimentation"],["expementations","experimentations"],["expemented","experimented"],["expementel","experimental"],["expementelly","experimentally"],["expementer","experimenter"],["expementers","experimenters"],["expementing","experimenting"],["expements","experiments"],["expemplar","exemplar"],["expemplars","exemplars"],["expemplary","exemplary"],["expempt","exempt"],["expempted","exempted"],["expemt","exempt"],["expemted","exempted"],["expemtion","exemption"],["expemtions","exemptions"],["expemts","exempts"],["expence","expense"],["expences","expenses"],["expencive","expensive"],["expendeble","expendable"],["expepect","expect"],["expepected","expected"],["expepectedly","expectedly"],["expepecting","expecting"],["expepects","expects"],["expepted","expected"],["expeptedly","expectedly"],["expepting","expecting"],["expeption","exception"],["expeptions","exceptions"],["expepts","expects"],["experament","experiment"],["experamental","experimental"],["experamentally","experimentally"],["experamentation","experimentation"],["experamentations","experimentations"],["experamented","experimented"],["experamentel","experimental"],["experamentelly","experimentally"],["experamenter","experimenter"],["experamenters","experimenters"],["experamenting","experimenting"],["experaments","experiments"],["experation","expiration"],["expercting","expecting"],["expercts","expects"],["expereince","experience"],["expereinced","experienced"],["expereinces","experiences"],["expereincing","experiencing"],["experement","experiment"],["experemental","experimental"],["experementally","experimentally"],["experementation","experimentation"],["experementations","experimentations"],["experemented","experimented"],["experementel","experimental"],["experementelly","experimentally"],["experementer","experimenter"],["experementers","experimenters"],["experementing","experimenting"],["experements","experiments"],["experence","experience"],["experenced","experienced"],["experences","experiences"],["experencing","experiencing"],["experes","express"],["experesed","expressed"],["experesion","expression"],["experesions","expressions"],["experess","express"],["experessed","expressed"],["experesses","expresses"],["experessing","expressing"],["experession's","expression's"],["experession","expression"],["experessions","expressions"],["experiance","experience"],["experianced","experienced"],["experiances","experiences"],["experiancial","experiential"],["experiancing","experiencing"],["experiansial","experiential"],["experiantial","experiential"],["experiation","expiration"],["experiations","expirations"],["experice","experience"],["expericed","experienced"],["experices","experiences"],["expericing","experiencing"],["experiement","experiment"],["experienshial","experiential"],["experiensial","experiential"],["experies","expires"],["experim","experiment"],["experimal","experimental"],["experimally","experimentally"],["experimanent","experiment"],["experimanental","experimental"],["experimanentally","experimentally"],["experimanentation","experimentation"],["experimanentations","experimentations"],["experimanented","experimented"],["experimanentel","experimental"],["experimanentelly","experimentally"],["experimanenter","experimenter"],["experimanenters","experimenters"],["experimanenting","experimenting"],["experimanents","experiments"],["experimanet","experiment"],["experimanetal","experimental"],["experimanetally","experimentally"],["experimanetation","experimentation"],["experimanetations","experimentations"],["experimaneted","experimented"],["experimanetel","experimental"],["experimanetelly","experimentally"],["experimaneter","experimenter"],["experimaneters","experimenters"],["experimaneting","experimenting"],["experimanets","experiments"],["experimant","experiment"],["experimantal","experimental"],["experimantally","experimentally"],["experimantation","experimentation"],["experimantations","experimentations"],["experimanted","experimented"],["experimantel","experimental"],["experimantelly","experimentally"],["experimanter","experimenter"],["experimanters","experimenters"],["experimanting","experimenting"],["experimants","experiments"],["experimation","experimentation"],["experimations","experimentations"],["experimdnt","experiment"],["experimdntal","experimental"],["experimdntally","experimentally"],["experimdntation","experimentation"],["experimdntations","experimentations"],["experimdnted","experimented"],["experimdntel","experimental"],["experimdntelly","experimentally"],["experimdnter","experimenter"],["experimdnters","experimenters"],["experimdnting","experimenting"],["experimdnts","experiments"],["experimed","experimented"],["experimel","experimental"],["experimelly","experimentally"],["experimen","experiment"],["experimenal","experimental"],["experimenally","experimentally"],["experimenat","experiment"],["experimenatal","experimental"],["experimenatally","experimentally"],["experimenatation","experimentation"],["experimenatations","experimentations"],["experimenated","experimented"],["experimenatel","experimental"],["experimenatelly","experimentally"],["experimenater","experimenter"],["experimenaters","experimenters"],["experimenating","experimenting"],["experimenation","experimentation"],["experimenations","experimentations"],["experimenats","experiments"],["experimened","experimented"],["experimenel","experimental"],["experimenelly","experimentally"],["experimener","experimenter"],["experimeners","experimenters"],["experimening","experimenting"],["experimens","experiments"],["experimentaal","experimental"],["experimentaally","experimentally"],["experimentaat","experiment"],["experimentaatl","experimental"],["experimentaatlly","experimentally"],["experimentaats","experiments"],["experimentaed","experimented"],["experimentaer","experimenter"],["experimentaing","experimenting"],["experimentaion","experimentation"],["experimentaions","experimentations"],["experimentait","experiment"],["experimentaital","experimental"],["experimentaitally","experimentally"],["experimentaited","experimented"],["experimentaiter","experimenter"],["experimentaiters","experimenters"],["experimentaitng","experimenting"],["experimentaiton","experimentation"],["experimentaitons","experimentations"],["experimentat","experimental"],["experimentatal","experimental"],["experimentatally","experimentally"],["experimentatation","experimentation"],["experimentatations","experimentations"],["experimentated","experimented"],["experimentater","experimenter"],["experimentatl","experimental"],["experimentatlly","experimentally"],["experimentatly","experimentally"],["experimentel","experimental"],["experimentelly","experimentally"],["experimentt","experiment"],["experimentted","experimented"],["experimentter","experimenter"],["experimentters","experimenters"],["experimentts","experiments"],["experimer","experimenter"],["experimers","experimenters"],["experimet","experiment"],["experimetal","experimental"],["experimetally","experimentally"],["experimetation","experimentation"],["experimetations","experimentations"],["experimeted","experimented"],["experimetel","experimental"],["experimetelly","experimentally"],["experimetent","experiment"],["experimetental","experimental"],["experimetentally","experimentally"],["experimetentation","experimentation"],["experimetentations","experimentations"],["experimetented","experimented"],["experimetentel","experimental"],["experimetentelly","experimentally"],["experimetenter","experimenter"],["experimetenters","experimenters"],["experimetenting","experimenting"],["experimetents","experiments"],["experimeter","experimenter"],["experimeters","experimenters"],["experimeting","experimenting"],["experimetn","experiment"],["experimetnal","experimental"],["experimetnally","experimentally"],["experimetnation","experimentation"],["experimetnations","experimentations"],["experimetned","experimented"],["experimetnel","experimental"],["experimetnelly","experimentally"],["experimetner","experimenter"],["experimetners","experimenters"],["experimetning","experimenting"],["experimetns","experiments"],["experimets","experiments"],["experiming","experimenting"],["experimint","experiment"],["experimintal","experimental"],["experimintally","experimentally"],["experimintation","experimentation"],["experimintations","experimentations"],["experiminted","experimented"],["experimintel","experimental"],["experimintelly","experimentally"],["experiminter","experimenter"],["experiminters","experimenters"],["experiminting","experimenting"],["experimints","experiments"],["experimment","experiment"],["experimmental","experimental"],["experimmentally","experimentally"],["experimmentation","experimentation"],["experimmentations","experimentations"],["experimmented","experimented"],["experimmentel","experimental"],["experimmentelly","experimentally"],["experimmenter","experimenter"],["experimmenters","experimenters"],["experimmenting","experimenting"],["experimments","experiments"],["experimnet","experiment"],["experimnetal","experimental"],["experimnetally","experimentally"],["experimnetation","experimentation"],["experimnetations","experimentations"],["experimneted","experimented"],["experimnetel","experimental"],["experimnetelly","experimentally"],["experimneter","experimenter"],["experimneters","experimenters"],["experimneting","experimenting"],["experimnets","experiments"],["experimnt","experiment"],["experimntal","experimental"],["experimntally","experimentally"],["experimntation","experimentation"],["experimntations","experimentations"],["experimnted","experimented"],["experimntel","experimental"],["experimntelly","experimentally"],["experimnter","experimenter"],["experimnters","experimenters"],["experimnting","experimenting"],["experimnts","experiments"],["experims","experiments"],["experimten","experiment"],["experimtenal","experimental"],["experimtenally","experimentally"],["experimtenation","experimentation"],["experimtenations","experimentations"],["experimtened","experimented"],["experimtenel","experimental"],["experimtenelly","experimentally"],["experimtener","experimenter"],["experimteners","experimenters"],["experimtening","experimenting"],["experimtens","experiments"],["experinece","experience"],["experineced","experienced"],["experinement","experiment"],["experinemental","experimental"],["experinementally","experimentally"],["experinementation","experimentation"],["experinementations","experimentations"],["experinemented","experimented"],["experinementel","experimental"],["experinementelly","experimentally"],["experinementer","experimenter"],["experinementers","experimenters"],["experinementing","experimenting"],["experinements","experiments"],["experiration","expiration"],["experirations","expirations"],["expermenet","experiment"],["expermenetal","experimental"],["expermenetally","experimentally"],["expermenetation","experimentation"],["expermenetations","experimentations"],["expermeneted","experimented"],["expermenetel","experimental"],["expermenetelly","experimentally"],["expermeneter","experimenter"],["expermeneters","experimenters"],["expermeneting","experimenting"],["expermenets","experiments"],["experment","experiment"],["expermental","experimental"],["expermentally","experimentally"],["expermentation","experimentation"],["expermentations","experimentations"],["expermented","experimented"],["expermentel","experimental"],["expermentelly","experimentally"],["expermenter","experimenter"],["expermenters","experimenters"],["expermenting","experimenting"],["experments","experiments"],["expermient","experiment"],["expermiental","experimental"],["expermientally","experimentally"],["expermientation","experimentation"],["expermientations","experimentations"],["expermiented","experimented"],["expermientel","experimental"],["expermientelly","experimentally"],["expermienter","experimenter"],["expermienters","experimenters"],["expermienting","experimenting"],["expermients","experiments"],["expermiment","experiment"],["expermimental","experimental"],["expermimentally","experimentally"],["expermimentation","experimentation"],["expermimentations","experimentations"],["expermimented","experimented"],["expermimentel","experimental"],["expermimentelly","experimentally"],["expermimenter","experimenter"],["expermimenters","experimenters"],["expermimenting","experimenting"],["expermiments","experiments"],["experminent","experiment"],["experminental","experimental"],["experminentally","experimentally"],["experminentation","experimentation"],["experminentations","experimentations"],["experminents","experiments"],["expernal","external"],["expers","express"],["expersed","expressed"],["expersing","expressing"],["expersion","expression"],["expersions","expressions"],["expersive","expensive"],["experss","express"],["experssed","expressed"],["expersses","expresses"],["experssing","expressing"],["experssion","expression"],["experssions","expressions"],["expese","expense"],["expeses","expenses"],["expesive","expensive"],["expesnce","expense"],["expesnces","expenses"],["expesncive","expensive"],["expess","express"],["expessed","expressed"],["expesses","expresses"],["expessing","expressing"],["expession","expression"],["expessions","expressions"],["expest","expect"],["expested","expected"],["expestedly","expectedly"],["expesting","expecting"],["expetancy","expectancy"],["expetation","expectation"],["expetc","expect"],["expetced","expected"],["expetcedly","expectedly"],["expetcing","expecting"],["expetcs","expects"],["expetct","expect"],["expetcted","expected"],["expetctedly","expectedly"],["expetcting","expecting"],["expetcts","expects"],["expetect","expect"],["expetected","expected"],["expetectedly","expectedly"],["expetecting","expecting"],["expetectly","expectedly"],["expetects","expects"],["expeted","expected"],["expetedly","expectedly"],["expetiment","experiment"],["expetimental","experimental"],["expetimentally","experimentally"],["expetimentation","experimentation"],["expetimentations","experimentations"],["expetimented","experimented"],["expetimentel","experimental"],["expetimentelly","experimentally"],["expetimenter","experimenter"],["expetimenters","experimenters"],["expetimenting","experimenting"],["expetiments","experiments"],["expeting","expecting"],["expetion","exception"],["expetional","exceptional"],["expetions","exceptions"],["expets","expects"],["expewriment","experiment"],["expewrimental","experimental"],["expewrimentally","experimentally"],["expewrimentation","experimentation"],["expewrimentations","experimentations"],["expewrimented","experimented"],["expewrimentel","experimental"],["expewrimentelly","experimentally"],["expewrimenter","experimenter"],["expewrimenters","experimenters"],["expewrimenting","experimenting"],["expewriments","experiments"],["expexct","expect"],["expexcted","expected"],["expexctedly","expectedly"],["expexcting","expecting"],["expexcts","expects"],["expexnasion","expansion"],["expexnasions","expansions"],["expext","expect"],["expexted","expected"],["expextedly","expectedly"],["expexting","expecting"],["expexts","expects"],["expicit","explicit"],["expicitly","explicitly"],["expidition","expedition"],["expiditions","expeditions"],["expierence","experience"],["expierenced","experienced"],["expierences","experiences"],["expierience","experience"],["expieriences","experiences"],["expilicitely","explicitly"],["expireitme","expiretime"],["expiriation","expiration"],["expirie","expire"],["expiried","expired"],["expirience","experience"],["expiriences","experiences"],["expirimental","experimental"],["expiriy","expiry"],["explaination","explanation"],["explainations","explanations"],["explainatory","explanatory"],["explaind","explained"],["explanaiton","explanation"],["explanaitons","explanations"],["explane","explain"],["explaned","explained"],["explanes","explains"],["explaning","explaining"],["explantion","explanation"],["explantions","explanations"],["explcit","explicit"],["explecit","explicit"],["explecitely","explicitly"],["explecitily","explicitly"],["explecitly","explicitly"],["explenation","explanation"],["explicat","explicate"],["explicilt","explicit"],["explicilty","explicitly"],["explicitelly","explicitly"],["explicitely","explicitly"],["explicitily","explicitly"],["explicity","explicitly"],["explicityly","explicitly"],["explict","explicit"],["explictely","explicitly"],["explictily","explicitly"],["explictly","explicitly"],["explin","explain"],["explination","explanation"],["explinations","explanations"],["explined","explained"],["explins","explains"],["explit","explicit"],["explitictly","explicitly"],["explitit","explicit"],["explitly","explicitly"],["explizit","explicit"],["explizitly","explicitly"],["exploititive","exploitative"],["expoed","exposed"],["expoent","exponent"],["expoential","exponential"],["expoentially","exponentially"],["expoentntial","exponential"],["expoerted","exported"],["expoit","exploit"],["expoitation","exploitation"],["expoited","exploited"],["expoits","exploits"],["expolde","explode"],["exponant","exponent"],["exponantation","exponentiation"],["exponantially","exponentially"],["exponantialy","exponentially"],["exponants","exponents"],["exponentation","exponentiation"],["exponentialy","exponentially"],["exponentiel","exponential"],["exponentiell","exponential"],["exponetial","exponential"],["exporession","expression"],["expors","exports"],["expport","export"],["exppressed","expressed"],["expres","express"],["expresed","expressed"],["expresing","expressing"],["expresion","expression"],["expresions","expressions"],["expressable","expressible"],["expressino","expression"],["expresso","espresso"],["expresss","express"],["expresssion","expression"],["expresssions","expressions"],["exprience","experience"],["exprienced","experienced"],["expriences","experiences"],["exprimental","experimental"],["expropiated","expropriated"],["expropiation","expropriation"],["exprot","export"],["exproted","exported"],["exproting","exporting"],["exprots","exports"],["exprted","exported"],["exptected","expected"],["exra","extra"],["exract","extract"],["exressed","expressed"],["exression","expression"],["exsistence","existence"],["exsistent","existent"],["exsisting","existing"],["exsists","exists"],["exsiting","existing"],["exspect","expect"],["exspected","expected"],["exspectedly","expectedly"],["exspecting","expecting"],["exspects","expects"],["exspense","expense"],["exspensed","expensed"],["exspenses","expenses"],["exstacy","ecstasy"],["exsted","existed"],["exsting","existing"],["exstream","extreme"],["exsts","exists"],["extaction","extraction"],["extactly","exactly"],["extacy","ecstasy"],["extarnal","external"],["extarnally","externally"],["extatic","ecstatic"],["extedn","extend"],["extedned","extended"],["extedner","extender"],["extedners","extenders"],["extedns","extends"],["extemely","extremely"],["exten","extent"],["extenal","external"],["extendded","extended"],["extendet","extended"],["extendsions","extensions"],["extened","extended"],["exteneded","extended"],["extenisble","extensible"],["extennsions","extensions"],["extensability","extensibility"],["extensiable","extensible"],["extensibity","extensibility"],["extensilbe","extensible"],["extensiones","extensions"],["extensivly","extensively"],["extenson","extension"],["extenstion","extension"],["extenstions","extensions"],["extented","extended"],["extention","extension"],["extentions","extensions"],["extepect","expect"],["extepecting","expecting"],["extepects","expects"],["exteral","external"],["extered","exerted"],["extereme","extreme"],["exterme","extreme"],["extermest","extremest"],["extermist","extremist"],["extermists","extremists"],["extermly","extremely"],["extermporaneous","extemporaneous"],["externaly","externally"],["externel","external"],["externelly","externally"],["externels","externals"],["extesion","extension"],["extesions","extensions"],["extesnion","extension"],["extesnions","extensions"],["extimate","estimate"],["extimated","estimated"],["extimates","estimates"],["extimating","estimating"],["extimation","estimation"],["extimations","estimations"],["extimator","estimator"],["extimators","estimators"],["extist","exist"],["extit","exit"],["extnesion","extension"],["extrac","extract"],["extraced","extracted"],["extracing","extracting"],["extracter","extractor"],["extractet","extracted"],["extractino","extracting"],["extractins","extractions"],["extradiction","extradition"],["extraenous","extraneous"],["extranous","extraneous"],["extrapoliate","extrapolate"],["extrat","extract"],["extrated","extracted"],["extraterrestial","extraterrestrial"],["extraterrestials","extraterrestrials"],["extrates","extracts"],["extrating","extracting"],["extration","extraction"],["extrator","extractor"],["extrators","extractors"],["extrats","extracts"],["extravagent","extravagant"],["extraversion","extroversion"],["extravert","extrovert"],["extraverts","extroverts"],["extraxt","extract"],["extraxted","extracted"],["extraxting","extracting"],["extraxtors","extractors"],["extraxts","extracts"],["extream","extreme"],["extreamely","extremely"],["extreamily","extremely"],["extreamly","extremely"],["extreams","extremes"],["extreem","extreme"],["extreemly","extremely"],["extremaly","extremely"],["extremeley","extremely"],["extremelly","extremely"],["extrememe","extreme"],["extrememely","extremely"],["extrememly","extremely"],["extremeophile","extremophile"],["extremitys","extremities"],["extremly","extremely"],["extrenal","external"],["extrenally","externally"],["extrenaly","externally"],["extrime","extreme"],["extrimely","extremely"],["extrimly","extremely"],["extrmities","extremities"],["extrodinary","extraordinary"],["extrordinarily","extraordinarily"],["extrordinary","extraordinary"],["extry","entry"],["exturd","extrude"],["exturde","extrude"],["exturded","extruded"],["exturdes","extrudes"],["exturding","extruding"],["exuberent","exuberant"],["exucuted","executed"],["eyt","yet"],["ezdrop","eavesdrop"],["fability","facility"],["fabircate","fabricate"],["fabircated","fabricated"],["fabircates","fabricates"],["fabircatings","fabricating"],["fabircation","fabrication"],["facce","face"],["faciliate","facilitate"],["faciliated","facilitated"],["faciliates","facilitates"],["faciliating","facilitating"],["facilites","facilities"],["facilitiate","facilitate"],["facilitiates","facilitates"],["facilititate","facilitate"],["facillitate","facilitate"],["facillities","facilities"],["faciltate","facilitate"],["facilties","facilities"],["facinated","fascinated"],["facirity","facility"],["facist","fascist"],["facorite","favorite"],["facorites","favorites"],["facourite","favourite"],["facourites","favourites"],["facours","favours"],["factization","factorization"],["factorizaiton","factorization"],["factorys","factories"],["fadind","fading"],["faeture","feature"],["faetures","features"],["Fahrenheight","Fahrenheit"],["faield","failed"],["faild","failed"],["failded","failed"],["faile","failed"],["failer","failure"],["failes","fails"],["failicies","facilities"],["failicy","facility"],["failied","failed"],["failiure","failure"],["failiures","failures"],["failiver","failover"],["faill","fail"],["failled","failed"],["faillure","failure"],["failng","failing"],["failre","failure"],["failrue","failure"],["failture","failure"],["failue","failure"],["failuer","failure"],["failues","failures"],["failured","failed"],["faireness","fairness"],["fairoh","pharaoh"],["faiway","fairway"],["faiways","fairways"],["faktor","factor"],["faktored","factored"],["faktoring","factoring"],["faktors","factors"],["falg","flag"],["falgs","flags"],["falied","failed"],["faliure","failure"],["faliures","failures"],["fallabck","fallback"],["fallbck","fallback"],["fallhrough","fallthrough"],["fallthruogh","fallthrough"],["falltrough","fallthrough"],["falshed","flashed"],["falshes","flashes"],["falshing","flashing"],["falsly","falsely"],["falt","fault"],["falure","failure"],["familar","familiar"],["familes","families"],["familiies","families"],["familiy","family"],["familliar","familiar"],["familly","family"],["famlilies","families"],["famlily","family"],["famoust","famous"],["fanatism","fanaticism"],["fancyness","fanciness"],["Farenheight","Fahrenheit"],["Farenheit","Fahrenheit"],["faries","fairies"],["farmework","framework"],["fasade","facade"],["fasion","fashion"],["fasle","false"],["fassade","facade"],["fassinate","fascinate"],["fasterner","fastener"],["fasterners","fasteners"],["fastner","fastener"],["fastners","fasteners"],["fastr","faster"],["fatc","fact"],["fater","faster"],["fatig","fatigue"],["fatser","faster"],["fature","feature"],["faught","fought"],["fauilure","failure"],["fauilures","failures"],["fauture","feature"],["fautured","featured"],["fautures","features"],["fauturing","featuring"],["favoutrable","favourable"],["favuourites","favourites"],["faymus","famous"],["fcound","found"],["feasabile","feasible"],["feasability","feasibility"],["feasable","feasible"],["featchd","fetched"],["featched","fetched"],["featching","fetching"],["featchs","fetches"],["featchss","fetches"],["featchure","feature"],["featchured","featured"],["featchures","features"],["featchuring","featuring"],["featre","feature"],["featue","feature"],["featued","featured"],["featues","features"],["featur","feature"],["featurs","features"],["feautre","feature"],["feauture","feature"],["feautures","features"],["febbruary","February"],["febewary","February"],["februar","February"],["Febuary","February"],["Feburary","February"],["fecthing","fetching"],["fedality","fidelity"],["fedreally","federally"],["feeback","feedback"],["feeded","fed"],["feek","feel"],["feeks","feels"],["feetur","feature"],["feeture","feature"],["feild","field"],["feld","field"],["felisatus","felicitous"],["femminist","feminist"],["fempto","femto"],["feonsay","fianc\xE9e"],["fequency","frequency"],["feromone","pheromone"],["fertil","fertile"],["fertily","fertility"],["fetaure","feature"],["fetaures","features"],["fetchs","fetches"],["feture","feature"],["fetures","features"],["fewsha","fuchsia"],["fezent","pheasant"],["fhurter","further"],["fials","fails"],["fianite","finite"],["fianlly","finally"],["fibonaacci","Fibonacci"],["ficticious","fictitious"],["fictious","fictitious"],["fidality","fidelity"],["fiddley","fiddly"],["fidn","find"],["fied","field"],["fiedl","field"],["fiedled","fielded"],["fiedls","fields"],["fieid","field"],["fieldlst","fieldlist"],["fieled","field"],["fielesystem","filesystem"],["fielesystems","filesystems"],["fielname","filename"],["fielneame","filename"],["fiercly","fiercely"],["fightings","fighting"],["figurestyle","figurestyles"],["filal","final"],["fileand","file and"],["fileds","fields"],["fileld","field"],["filelds","fields"],["filenae","filename"],["filese","files"],["fileshystem","filesystem"],["fileshystems","filesystems"],["filesnames","filenames"],["filess","files"],["filesstem","filesystem"],["filessytem","filesystem"],["filessytems","filesystems"],["fileststem","filesystem"],["filesysems","filesystems"],["filesysthem","filesystem"],["filesysthems","filesystems"],["filesystmes","filesystems"],["filesystyem","filesystem"],["filesystyems","filesystems"],["filesytem","filesystem"],["filesytems","filesystems"],["filesytsem","filesystem"],["fileter","filter"],["filetest","file test"],["filetests","file tests"],["fileystem","filesystem"],["fileystems","filesystems"],["filiament","filament"],["fillay","fillet"],["fillement","filament"],["fillowing","following"],["fillung","filling"],["filnal","final"],["filname","filename"],["filp","flip"],["filpped","flipped"],["filpping","flipping"],["filps","flips"],["filse","files"],["filsystem","filesystem"],["filsystems","filesystems"],["filterd","filtered"],["filterig","filtering"],["filterin","filtering"],["filterring","filtering"],["filtersing","filtering"],["filterss","filters"],["filtype","filetype"],["filtypes","filetypes"],["fimilies","families"],["fimrware","firmware"],["fimware","firmware"],["finacial","financial"],["finailse","finalise"],["finailze","finalize"],["finallly","finally"],["finanace","finance"],["finanaced","financed"],["finanaces","finances"],["finanacially","financially"],["finanacier","financier"],["financialy","financially"],["finanize","finalize"],["finanlize","finalize"],["fincally","finally"],["finctionalities","functionalities"],["finctionality","functionality"],["finde","find"],["findn","find"],["findout","find out"],["finelly","finally"],["finess","finesse"],["fingeprint","fingerprint"],["finialization","finalization"],["finializing","finalizing"],["finilizes","finalizes"],["finisched","finished"],["finised","finished"],["finishied","finished"],["finishs","finishes"],["finitel","finite"],["finness","finesse"],["finnished","finished"],["finshed","finished"],["finshing","finishing"],["finsih","finish"],["finsihed","finished"],["finsihes","finishes"],["finsihing","finishing"],["finsished","finished"],["finxed","fixed"],["finxing","fixing"],["fiorget","forget"],["firday","Friday"],["firends","friends"],["firey","fiery"],["firmare","firmware"],["firmaware","firmware"],["firmawre","firmware"],["firmeare","firmware"],["firmeware","firmware"],["firmnware","firmware"],["firmwart","firmware"],["firmwear","firmware"],["firmwqre","firmware"],["firmwre","firmware"],["firmwware","firmware"],["firsr","first"],["firsth","first"],["firware","firmware"],["firwmare","firmware"],["fisionable","fissionable"],["fisisist","physicist"],["fisist","physicist"],["fisrt","first"],["fitering","filtering"],["fitler","filter"],["fitlers","filters"],["fivety","fifty"],["fixel","pixel"],["fixels","pixels"],["fixeme","fixme"],["fixwd","fixed"],["fizeek","physique"],["flacor","flavor"],["flacored","flavored"],["flacoring","flavoring"],["flacorings","flavorings"],["flacors","flavors"],["flacour","flavour"],["flacoured","flavoured"],["flacouring","flavouring"],["flacourings","flavourings"],["flacours","flavours"],["flaged","flagged"],["flages","flags"],["flagg","flag"],["flahsed","flashed"],["flahses","flashes"],["flahsing","flashing"],["flakyness","flakiness"],["flamable","flammable"],["flaot","float"],["flaoting","floating"],["flashflame","flashframe"],["flashig","flashing"],["flasing","flashing"],["flate","flat"],["flatened","flattened"],["flattend","flattened"],["flattenning","flattening"],["flawess","flawless"],["fle","file"],["flem","phlegm"],["Flemmish","Flemish"],["flewant","fluent"],["flexability","flexibility"],["flexable","flexible"],["flexibel","flexible"],["flexibele","flexible"],["flexibilty","flexibility"],["flext","flex"],["flie","file"],["fliter","filter"],["flitered","filtered"],["flitering","filtering"],["fliters","filters"],["floading-add","floating-add"],["floatation","flotation"],["floride","fluoride"],["floting","floating"],["flouride","fluoride"],["flourine","fluorine"],["flourishment","flourishing"],["flter","filter"],["fluctuand","fluctuant"],["flud","flood"],["fluorish","flourish"],["fluoroscent","fluorescent"],["fluroescent","fluorescent"],["flushs","flushes"],["flusing","flushing"],["focu","focus"],["focued","focused"],["focument","document"],["focuse","focus"],["focusf","focus"],["focuss","focus"],["focussed","focused"],["focusses","focuses"],["fof","for"],["foget","forget"],["fogot","forgot"],["fogotten","forgotten"],["fointers","pointers"],["foler","folder"],["folers","folders"],["folfer","folder"],["folfers","folders"],["folled","followed"],["foller","follower"],["follers","followers"],["follew","follow"],["follewed","followed"],["follewer","follower"],["follewers","followers"],["follewin","following"],["follewind","following"],["follewing","following"],["follewinwg","following"],["follewiong","following"],["follewiwng","following"],["follewong","following"],["follews","follows"],["follfow","follow"],["follfowed","followed"],["follfower","follower"],["follfowers","followers"],["follfowin","following"],["follfowind","following"],["follfowing","following"],["follfowinwg","following"],["follfowiong","following"],["follfowiwng","following"],["follfowong","following"],["follfows","follows"],["follin","following"],["follind","following"],["follinwg","following"],["folliong","following"],["folliw","follow"],["folliwed","followed"],["folliwer","follower"],["folliwers","followers"],["folliwin","following"],["folliwind","following"],["folliwing","following"],["folliwinwg","following"],["folliwiong","following"],["folliwiwng","following"],["folliwng","following"],["folliwong","following"],["folliws","follows"],["folllow","follow"],["folllowed","followed"],["folllower","follower"],["folllowers","followers"],["folllowin","following"],["folllowind","following"],["folllowing","following"],["folllowinwg","following"],["folllowiong","following"],["folllowiwng","following"],["folllowong","following"],["follod","followed"],["folloeing","following"],["folloing","following"],["folloiwng","following"],["follolwing","following"],["follong","following"],["follos","follows"],["followes","follows"],["followig","following"],["followign","following"],["followin","following"],["followind","following"],["followint","following"],["followng","following"],["followwing","following"],["followwings","followings"],["folls","follows"],["follw","follow"],["follwed","followed"],["follwer","follower"],["follwers","followers"],["follwin","following"],["follwind","following"],["follwing","following"],["follwinwg","following"],["follwiong","following"],["follwiwng","following"],["follwo","follow"],["follwoe","follow"],["follwoed","followed"],["follwoeed","followed"],["follwoeer","follower"],["follwoeers","followers"],["follwoein","following"],["follwoeind","following"],["follwoeing","following"],["follwoeinwg","following"],["follwoeiong","following"],["follwoeiwng","following"],["follwoeong","following"],["follwoer","follower"],["follwoers","followers"],["follwoes","follows"],["follwoin","following"],["follwoind","following"],["follwoing","following"],["follwoinwg","following"],["follwoiong","following"],["follwoiwng","following"],["follwong","following"],["follwoong","following"],["follwos","follows"],["follwow","follow"],["follwowed","followed"],["follwower","follower"],["follwowers","followers"],["follwowin","following"],["follwowind","following"],["follwowing","following"],["follwowinwg","following"],["follwowiong","following"],["follwowiwng","following"],["follwowong","following"],["follwows","follows"],["follws","follows"],["follww","follow"],["follwwed","followed"],["follwwer","follower"],["follwwers","followers"],["follwwin","following"],["follwwind","following"],["follwwing","following"],["follwwinwg","following"],["follwwiong","following"],["follwwiwng","following"],["follwwong","following"],["follwws","follows"],["foloow","follow"],["foloowed","followed"],["foloower","follower"],["foloowers","followers"],["foloowin","following"],["foloowind","following"],["foloowing","following"],["foloowinwg","following"],["foloowiong","following"],["foloowiwng","following"],["foloowong","following"],["foloows","follows"],["folow","follow"],["folowed","followed"],["folower","follower"],["folowers","followers"],["folowin","following"],["folowind","following"],["folowing","following"],["folowinwg","following"],["folowiong","following"],["folowiwng","following"],["folowong","following"],["folows","follows"],["foloww","follow"],["folowwed","followed"],["folowwer","follower"],["folowwers","followers"],["folowwin","following"],["folowwind","following"],["folowwing","following"],["folowwinwg","following"],["folowwiong","following"],["folowwiwng","following"],["folowwong","following"],["folowws","follows"],["folse","false"],["folwo","follow"],["folwoed","followed"],["folwoer","follower"],["folwoers","followers"],["folwoin","following"],["folwoind","following"],["folwoing","following"],["folwoinwg","following"],["folwoiong","following"],["folwoiwng","following"],["folwoong","following"],["folwos","follows"],["folx","folks"],["fom","from"],["fomat","format"],["fomated","formatted"],["fomater","formatter"],["fomates","formats"],["fomating","formatting"],["fomats","formats"],["fomatted","formatted"],["fomatter","formatter"],["fomatting","formatting"],["fomed","formed"],["fomrat","format"],["fomrated","formatted"],["fomrater","formatter"],["fomrating","formatting"],["fomrats","formats"],["fomratted","formatted"],["fomratter","formatter"],["fomratting","formatting"],["fomula","formula"],["fomulas","formula"],["fonction","function"],["fonctional","functional"],["fonctionalities","functionalities"],["fonctionality","functionality"],["fonctioning","functioning"],["fonctionnalies","functionalities"],["fonctionnalities","functionalities"],["fonctionnality","functionality"],["fonctions","functions"],["fonetic","phonetic"],["fontier","frontier"],["fontonfig","fontconfig"],["fontrier","frontier"],["fonud","found"],["foontnotes","footnotes"],["foootball","football"],["foorter","footer"],["footnoes","footnotes"],["footprinst","footprints"],["foound","found"],["foppy","floppy"],["foppys","floppies"],["foramatting","formatting"],["foramt","format"],["forat","format"],["forbad","forbade"],["forbbiden","forbidden"],["forbiden","forbidden"],["forbit","forbid"],["forbiten","forbidden"],["forbitten","forbidden"],["forcably","forcibly"],["forcast","forecast"],["forcasted","forecasted"],["forcaster","forecaster"],["forcasters","forecasters"],["forcasting","forecasting"],["forcasts","forecasts"],["forcot","forgot"],["forece","force"],["foreced","forced"],["foreces","forces"],["foregrond","foreground"],["foregronds","foregrounds"],["foreing","foreign"],["forementionned","aforementioned"],["forermly","formerly"],["forfiet","forfeit"],["forgeround","foreground"],["forgoten","forgotten"],["forground","foreground"],["forhead","forehead"],["foriegn","foreign"],["forld","fold"],["forlder","folder"],["forlders","folders"],["Formalhaut","Fomalhaut"],["formallize","formalize"],["formallized","formalized"],["formate","format"],["formated","formatted"],["formater","formatter"],["formaters","formatters"],["formates","formats"],["formath","format"],["formaths","formats"],["formating","formatting"],["formatteded","formatted"],["formattgin","formatting"],["formattind","formatting"],["formattings","formatting"],["formattring","formatting"],["formattted","formatted"],["formattting","formatting"],["formelly","formerly"],["formely","formerly"],["formend","formed"],["formidible","formidable"],["formmatted","formatted"],["formost","foremost"],["formt","format"],["formua","formula"],["formual","formula"],["formuale","formulae"],["formuals","formulas"],["fornat","format"],["fornated","formatted"],["fornater","formatter"],["fornats","formats"],["fornatted","formatted"],["fornatter","formatter"],["forot","forgot"],["forotten","forgotten"],["forr","for"],["forsaw","foresaw"],["forse","force"],["forseeable","foreseeable"],["fortan","fortran"],["fortat","format"],["forteen","fourteen"],["fortelling","foretelling"],["forthcominng","forthcoming"],["forthcomming","forthcoming"],["fortunaly","fortunately"],["fortunat","fortunate"],["fortunatelly","fortunately"],["fortunatly","fortunately"],["fortunetly","fortunately"],["forula","formula"],["forulas","formulas"],["forumla","formula"],["forumlas","formulas"],["forumula","formula"],["forumulas","formulas"],["forunate","fortunate"],["forunately","fortunately"],["forunner","forerunner"],["forutunate","fortunate"],["forutunately","fortunately"],["forver","forever"],["forwad","forward"],["forwaded","forwarded"],["forwading","forwarding"],["forwads","forwards"],["forwardig","forwarding"],["forwaring","forwarding"],["forwwarded","forwarded"],["foto","photo"],["fotograf","photograph"],["fotografic","photographic"],["fotografical","photographical"],["fotografy","photography"],["fotograph","photograph"],["fotography","photography"],["foucs","focus"],["foudn","found"],["foudning","founding"],["fougth","fought"],["foult","fault"],["foults","faults"],["foundaries","foundries"],["foundary","foundry"],["Foundland","Newfoundland"],["fourties","forties"],["fourty","forty"],["fouth","fourth"],["fouund","found"],["foward","forward"],["fowarded","forwarded"],["fowarding","forwarding"],["fowards","forwards"],["fprmat","format"],["fracional","fractional"],["fragement","fragment"],["fragementation","fragmentation"],["fragements","fragments"],["fragmant","fragment"],["fragmantation","fragmentation"],["fragmants","fragments"],["fragmenet","fragment"],["fragmenetd","fragmented"],["fragmeneted","fragmented"],["fragmeneting","fragmenting"],["fragmenets","fragments"],["fragmnet","fragment"],["frambuffer","framebuffer"],["framebufer","framebuffer"],["framei","frame"],["frament","fragment"],["framented","fragmented"],["framents","fragments"],["frametyp","frametype"],["framewoek","framework"],["framewoeks","frameworks"],["frameworkk","framework"],["framlayout","framelayout"],["framming","framing"],["framwework","framework"],["framwork","framework"],["framworks","frameworks"],["frane","frame"],["frankin","franklin"],["Fransiscan","Franciscan"],["Fransiscans","Franciscans"],["franzise","franchise"],["frecuencies","frequencies"],["frecuency","frequency"],["frecuent","frequent"],["frecuented","frequented"],["frecuently","frequently"],["frecuents","frequents"],["freecallrelpy","freecallreply"],["freedon","freedom"],["freedons","freedoms"],["freedum","freedom"],["freedums","freedoms"],["freee","free"],["freeed","freed"],["freezs","freezes"],["freind","friend"],["freindly","friendly"],["freqencies","frequencies"],["freqency","frequency"],["freqeuncies","frequencies"],["freqeuncy","frequency"],["freqiencies","frequencies"],["freqiency","frequency"],["freqquencies","frequencies"],["freqquency","frequency"],["frequancies","frequencies"],["frequancy","frequency"],["frequant","frequent"],["frequantly","frequently"],["frequences","frequencies"],["frequencey","frequency"],["frequenies","frequencies"],["frequentily","frequently"],["frequncies","frequencies"],["frequncy","frequency"],["freze","freeze"],["frezes","freezes"],["frgament","fragment"],["fricton","friction"],["fridey","Friday"],["frimware","firmware"],["frisday","Friday"],["frist","first"],["frition","friction"],["fritional","frictional"],["fritions","frictions"],["frmat","format"],["frmo","from"],["froce","force"],["frok","from"],["fromal","formal"],["fromat","format"],["fromated","formatted"],["fromates","formats"],["fromating","formatting"],["fromation","formation"],["fromats","formats"],["frome","from"],["fromed","formed"],["fromm","from"],["froms","forms"],["fromt","from"],["fromthe","from the"],["fronend","frontend"],["fronends","frontends"],["froniter","frontier"],["frontent","frontend"],["frontents","frontends"],["frop","drop"],["fropm","from"],["frops","drops"],["frowarded","forwarded"],["frowrad","forward"],["frowrading","forwarding"],["frowrads","forwards"],["frozee","frozen"],["fschk","fsck"],["FTBS","FTBFS"],["ftrunacate","ftruncate"],["fualt","fault"],["fualts","faults"],["fucntion","function"],["fucntional","functional"],["fucntionality","functionality"],["fucntioned","functioned"],["fucntioning","functioning"],["fucntions","functions"],["fuction","function"],["fuctionality","functionality"],["fuctiones","functioned"],["fuctioning","functioning"],["fuctionoid","functionoid"],["fuctions","functions"],["fuetherst","furthest"],["fuethest","furthest"],["fufill","fulfill"],["fufilled","fulfilled"],["fugure","figure"],["fugured","figured"],["fugures","figures"],["fule","file"],["fulfiled","fulfilled"],["fullfiled","fulfilled"],["fullfiling","fulfilling"],["fullfilled","fulfilled"],["fullfilling","fulfilling"],["fullfills","fulfills"],["fullly","fully"],["fulsh","flush"],["fuly","fully"],["fumction","function"],["fumctional","functional"],["fumctionally","functionally"],["fumctioned","functioned"],["fumctions","functions"],["funcation","function"],["funchtion","function"],["funchtional","functional"],["funchtioned","functioned"],["funchtioning","functioning"],["funchtionn","function"],["funchtionnal","functional"],["funchtionned","functioned"],["funchtionning","functioning"],["funchtionns","functions"],["funchtions","functions"],["funcion","function"],["funcions","functions"],["funciotn","function"],["funciotns","functions"],["funciton","function"],["funcitonal","functional"],["funcitonality","functionality"],["funcitonally","functionally"],["funcitoned","functioned"],["funcitoning","functioning"],["funcitons","functions"],["funcstions","functions"],["functiion","function"],["functiional","functional"],["functiionality","functionality"],["functiionally","functionally"],["functiioning","functioning"],["functiions","functions"],["functin","function"],["functinality","functionality"],["functino","function"],["functins","functions"],["functio","function"],["functionability","functionality"],["functionaility","functionality"],["functionailty","functionality"],["functionaily","functionality"],["functionallities","functionalities"],["functionallity","functionality"],["functionaltiy","functionality"],["functionalty","functionality"],["functionionalities","functionalities"],["functionionality","functionality"],["functionnal","functional"],["functionnalities","functionalities"],["functionnality","functionality"],["functionnaly","functionally"],["functionning","functioning"],["functionon","function"],["functionss","functions"],["functios","functions"],["functiosn","functions"],["functiton","function"],["functitonal","functional"],["functitonally","functionally"],["functitoned","functioned"],["functitons","functions"],["functon","function"],["functonal","functional"],["functonality","functionality"],["functoning","functioning"],["functons","functions"],["functtion","function"],["functtional","functional"],["functtionalities","functionalities"],["functtioned","functioned"],["functtioning","functioning"],["functtions","functions"],["funczion","function"],["fundametal","fundamental"],["fundametals","fundamentals"],["fundation","foundation"],["fundemantal","fundamental"],["fundemental","fundamental"],["fundementally","fundamentally"],["fundementals","fundamentals"],["funguses","fungi"],["funktion","function"],["funnnily","funnily"],["funtion","function"],["funtional","functional"],["funtionalities","functionalities"],["funtionality","functionality"],["funtionallity","functionality"],["funtionally","functionally"],["funtionalty","functionality"],["funtioning","functioning"],["funtions","functions"],["funvtion","function"],["funvtional","functional"],["funvtionalities","functionalities"],["funvtionality","functionality"],["funvtioned","functioned"],["funvtioning","functioning"],["funvtions","functions"],["funxtion","function"],["funxtional","functional"],["funxtionalities","functionalities"],["funxtionality","functionality"],["funxtioned","functioned"],["funxtioning","functioning"],["funxtions","functions"],["furether","further"],["furethermore","furthermore"],["furethest","furthest"],["furfill","fulfill"],["furher","further"],["furhermore","furthermore"],["furhest","furthest"],["furhter","further"],["furhtermore","furthermore"],["furhtest","furthest"],["furmalae","formulae"],["furmula","formula"],["furmulae","formulae"],["furnction","function"],["furnctional","functional"],["furnctions","functions"],["furneture","furniture"],["furser","further"],["fursermore","furthermore"],["furst","first"],["fursther","further"],["fursthermore","furthermore"],["fursthest","furthest"],["furter","further"],["furthemore","furthermore"],["furthermor","furthermore"],["furtherst","furthest"],["furthremore","furthermore"],["furthrest","furthest"],["furthur","further"],["furture","future"],["furure","future"],["furuther","further"],["furutre","future"],["furzzer","fuzzer"],["fuschia","fuchsia"],["fushed","flushed"],["fushing","flushing"],["futher","further"],["futherize","further"],["futhermore","furthermore"],["futrue","future"],["futrure","future"],["futture","future"],["fwe","few"],["fwirte","fwrite"],["fxed","fixed"],["fysical","physical"],["fysisist","physicist"],["fysisit","physicist"],["gabage","garbage"],["galatic","galactic"],["Galations","Galatians"],["gallaries","galleries"],["gallary","gallery"],["gallaxies","galaxies"],["gallleries","galleries"],["galllery","gallery"],["galllerys","galleries"],["galvinized","galvanized"],["Gameboy","Game Boy"],["ganbia","gambia"],["ganerate","generate"],["ganes","games"],["ganster","gangster"],["garabge","garbage"],["garantee","guarantee"],["garanteed","guaranteed"],["garanteeed","guaranteed"],["garantees","guarantees"],["garantied","guaranteed"],["garanty","guarantee"],["garbadge","garbage"],["garbage-dollected","garbage-collected"],["garbagge","garbage"],["garbarge","garbage"],["gard","guard"],["gardai","garda\xED"],["garentee","guarantee"],["garnison","garrison"],["garuantee","guarantee"],["garuanteed","guaranteed"],["garuantees","guarantees"],["garuantied","guaranteed"],["gatable","gateable"],["gateing","gating"],["gatherig","gathering"],["gatway","gateway"],["gauage","gauge"],["gauarana","guaran\xE1"],["gauarantee","guarantee"],["gauaranteed","guaranteed"],["gauarentee","guarantee"],["gauarenteed","guaranteed"],["gaurantee","guarantee"],["gauranteed","guaranteed"],["gauranteeing","guaranteeing"],["gaurantees","guarantees"],["gaurentee","guarantee"],["gaurenteed","guaranteed"],["gaurentees","guarantees"],["gaus'","Gauss'"],["gaus's","Gauss'"],["gausian","gaussian"],["geeneric","generic"],["geenrate","generate"],["geenrated","generated"],["geenrates","generates"],["geenration","generation"],["geenrational","generational"],["geeoteen","guillotine"],["geeral","general"],["gemetrical","geometrical"],["gemetry","geometry"],["gemoetry","geometry"],["gemometric","geometric"],["genarate","generate"],["genarated","generated"],["genarating","generating"],["genaration","generation"],["genearal","general"],["genearally","generally"],["genearted","generated"],["geneate","generate"],["geneated","generated"],["geneates","generates"],["geneating","generating"],["geneation","generation"],["geneological","genealogical"],["geneologies","genealogies"],["geneology","genealogy"],["generaates","generates"],["generaly","generally"],["generalyl","generally"],["generalyse","generalise"],["generater","generator"],["generaters","generators"],["generatig","generating"],["generatng","generating"],["generatting","generating"],["genereate","generate"],["genereated","generated"],["genereates","generates"],["genereating","generating"],["genered","generated"],["genereic","generic"],["generell","general"],["generelly","generally"],["genererate","generate"],["genererated","generated"],["genererater","generator"],["genererating","generating"],["genereration","generation"],["genereted","generated"],["generilise","generalise"],["generilised","generalised"],["generilises","generalises"],["generilize","generalize"],["generilized","generalized"],["generilizes","generalizes"],["generiously","generously"],["generla","general"],["generlaizes","generalizes"],["generlas","generals"],["generted","generated"],["generting","generating"],["genertion","generation"],["genertor","generator"],["genertors","generators"],["genialia","genitalia"],["genral","general"],["genralisation","generalisation"],["genralisations","generalisations"],["genralise","generalise"],["genralised","generalised"],["genralises","generalises"],["genralization","generalization"],["genralizations","generalizations"],["genralize","generalize"],["genralized","generalized"],["genralizes","generalizes"],["genrally","generally"],["genrals","generals"],["genrate","generate"],["genrated","generated"],["genrates","generates"],["genratet","generated"],["genrating","generating"],["genration","generation"],["genrations","generations"],["genrator","generator"],["genrators","generators"],["genreate","generate"],["genreated","generated"],["genreates","generates"],["genreating","generating"],["genreic","generic"],["genric","generic"],["genrics","generics"],["gental","gentle"],["genuin","genuine"],["geocentic","geocentric"],["geoemtries","geometries"],["geoemtry","geometry"],["geogcountry","geocountry"],["geographich","geographic"],["geographicial","geographical"],["geoio","geoip"],["geomertic","geometric"],["geomerties","geometries"],["geomerty","geometry"],["geomery","geometry"],["geometites","geometries"],["geometrician","geometer"],["geometricians","geometers"],["geometrie","geometry"],["geometrys","geometries"],["geomety","geometry"],["geometyr","geometry"],["geomitrically","geometrically"],["geomoetric","geometric"],["geomoetrically","geometrically"],["geomoetry","geometry"],["geomtery","geometry"],["geomtries","geometries"],["geomtry","geometry"],["geomtrys","geometries"],["georeferncing","georeferencing"],["geraff","giraffe"],["geraphics","graphics"],["gerat","great"],["gereating","generating"],["gerenate","generate"],["gerenated","generated"],["gerenates","generates"],["gerenating","generating"],["gerenation","generation"],["gerenations","generations"],["gerenic","generic"],["gerenics","generics"],["gererate","generate"],["gererated","generated"],["gerilla","guerrilla"],["gerneral","general"],["gernerally","generally"],["gerneraly","generally"],["gernerate","generate"],["gernerated","generated"],["gernerates","generates"],["gernerating","generating"],["gerneration","generation"],["gernerator","generator"],["gernerators","generators"],["gerneric","generic"],["gernerics","generics"],["gess","guess"],["get's","gets"],["get;s","gets"],["getfastproperyvalue","getfastpropertyvalue"],["getimezone","gettimezone"],["geting","getting"],["getlael","getlabel"],["getoe","ghetto"],["getoject","getobject"],["gettetx","gettext"],["gettter","getter"],["gettters","getters"],["getttext","gettext"],["getttime","gettime"],["getttimeofday","gettimeofday"],["gettting","getting"],["ggogled","Googled"],["Ghandi","Gandhi"],["ghostcript","ghostscript"],["ghostscritp","ghostscript"],["ghraphic","graphic"],["gien","given"],["gigibit","gigabit"],["gilotine","guillotine"],["gilty","guilty"],["ginee","guinea"],["gingam","gingham"],["gioen","given"],["gir","git"],["giser","geyser"],["gisers","geysers"],["git-buildpackge","git-buildpackage"],["git-buildpackges","git-buildpackages"],["gitar","guitar"],["gitars","guitars"],["gitatributes","gitattributes"],["giveing","giving"],["givveing","giving"],["givven","given"],["givving","giving"],["glamourous","glamorous"],["glight","flight"],["gloab","globe"],["gloabal","global"],["gloabl","global"],["gloassaries","glossaries"],["gloassary","glossary"],["globablly","globally"],["globaly","globally"],["globbal","global"],["globel","global"],["glorfied","glorified"],["glpyh","glyph"],["glpyhs","glyphs"],["glyh","glyph"],["glyhs","glyphs"],["glyped","glyphed"],["glyphes","glyphs"],["glyping","glyphing"],["glyserin","glycerin"],["gnawwed","gnawed"],["gneral","general"],["gnerally","generally"],["gnerals","generals"],["gnerate","generate"],["gnerated","generated"],["gnerates","generates"],["gnerating","generating"],["gneration","generation"],["gnerations","generations"],["gneric","generic"],["gnorung","ignoring"],["gobal","global"],["gocde","gcode"],["godess","goddess"],["godesses","goddesses"],["Godounov","Godunov"],["goemetries","geometries"],["goess","goes"],["gogether","together"],["goign","going"],["goin","going"],["goind","going"],["golbal","global"],["golbally","globally"],["golbaly","globally"],["gonig","going"],["gool","ghoul"],["gord","gourd"],["gormay","gourmet"],["gorry","gory"],["gorup","group"],["goruped","grouped"],["goruping","grouping"],["gorups","groups"],["gost","ghost"],["Gothenberg","Gothenburg"],["Gottleib","Gottlieb"],["goup","group"],["gouped","grouped"],["goups","groups"],["gouvener","governor"],["govement","government"],["govenment","government"],["govenor","governor"],["govenrment","government"],["goverance","governance"],["goverment","government"],["govermental","governmental"],["govermnment","government"],["governer","governor"],["governmnet","government"],["govorment","government"],["govormental","governmental"],["govornment","government"],["grabage","garbage"],["grabed","grabbed"],["grabing","grabbing"],["gracefull","graceful"],["gracefuly","gracefully"],["gradiants","gradients"],["gradualy","gradually"],["graet","great"],["grafics","graphics"],["grafitti","graffiti"],["grahic","graphic"],["grahical","graphical"],["grahics","graphics"],["grahpic","graphic"],["grahpical","graphical"],["grahpics","graphics"],["gramar","grammar"],["gramatically","grammatically"],["grammartical","grammatical"],["grammaticaly","grammatically"],["grammer","grammar"],["grammers","grammars"],["granchildren","grandchildren"],["granilarity","granularity"],["granuality","granularity"],["granualtiry","granularity"],["granulatiry","granularity"],["grapgics","graphics"],["graphcis","graphics"],["graphis","graphics"],["grapic","graphic"],["grapical","graphical"],["grapics","graphics"],["grat","great"],["gratefull","grateful"],["gratuitious","gratuitous"],["grbber","grabber"],["greatful","grateful"],["greatfully","gratefully"],["greather","greater"],["greif","grief"],["grephic","graphic"],["grestest","greatest"],["greysacles","greyscales"],["gridles","griddles"],["grigorian","Gregorian"],["grobal","global"],["grobally","globally"],["grometry","geometry"],["grooup","group"],["groouped","grouped"],["groouping","grouping"],["grooups","groups"],["gropu","group"],["groubpy","groupby"],["groupd","grouped"],["groupping","grouping"],["groupt","grouped"],["grranted","granted"],["gruop","group"],["gruopd","grouped"],["gruops","groups"],["grup","group"],["gruped","grouped"],["gruping","grouping"],["grups","groups"],["grwo","grow"],["guage","gauge"],["guarante","guarantee"],["guaranted","guaranteed"],["guaranteey","guaranty"],["guaranteing","guaranteeing"],["guarantes","guarantees"],["guarantie","guarantee"],["guarbage","garbage"],["guareded","guarded"],["guareente","guarantee"],["guareented","guaranteed"],["guareentee","guarantee"],["guareenteed","guaranteed"],["guareenteeing","guaranteeing"],["guareentees","guarantees"],["guareenteing","guaranteeing"],["guareentes","guarantees"],["guareenty","guaranty"],["guarente","guarantee"],["guarented","guaranteed"],["guarentee","guarantee"],["guarenteed","guaranteed"],["guarenteede","guarantee"],["guarenteeded","guaranteed"],["guarenteedeing","guaranteeing"],["guarenteedes","guarantees"],["guarenteedy","guaranty"],["guarenteeing","guaranteeing"],["guarenteer","guarantee"],["guarenteerd","guaranteed"],["guarenteering","guaranteeing"],["guarenteers","guarantees"],["guarentees","guarantees"],["guarenteing","guaranteeing"],["guarentes","guarantees"],["guarentie","guarantee"],["guarentied","guaranteed"],["guarentieing","guaranteeing"],["guarenties","guarantees"],["guarenty","guaranty"],["guarentyd","guaranteed"],["guarentying","guarantee"],["guarentyinging","guaranteeing"],["guarentys","guarantees"],["guarging","guarding"],["guarnante","guarantee"],["guarnanted","guaranteed"],["guarnantee","guarantee"],["guarnanteed","guaranteed"],["guarnanteeing","guaranteeing"],["guarnantees","guarantees"],["guarnanteing","guaranteeing"],["guarnantes","guarantees"],["guarnanty","guaranty"],["guarnate","guarantee"],["guarnated","guaranteed"],["guarnatee","guarantee"],["guarnateed","guaranteed"],["guarnateee","guarantee"],["guarnateeed","guaranteed"],["guarnateeeing","guaranteeing"],["guarnateees","guarantees"],["guarnateeing","guaranteeing"],["guarnatees","guarantees"],["guarnateing","guaranteeing"],["guarnates","guarantees"],["guarnatey","guaranty"],["guarnaty","guaranty"],["guarnete","guarantee"],["guarneted","guaranteed"],["guarnetee","guarantee"],["guarneteed","guaranteed"],["guarneteeing","guaranteeing"],["guarnetees","guarantees"],["guarneteing","guaranteeing"],["guarnetes","guarantees"],["guarnety","guaranty"],["guarnte","guarantee"],["guarnted","guaranteed"],["guarntee","guarantee"],["guarnteed","guaranteed"],["guarnteeing","guaranteeing"],["guarntees","guarantees"],["guarnteing","guaranteeing"],["guarntes","guarantees"],["guarnty","guaranty"],["guarrante","guarantee"],["guarranted","guaranteed"],["guarrantee","guarantee"],["guarranteed","guaranteed"],["guarranteeing","guaranteeing"],["guarrantees","guarantees"],["guarranteing","guaranteeing"],["guarrantes","guarantees"],["guarrantie","guarantee"],["guarrantied","guaranteed"],["guarrantieing","guaranteeing"],["guarranties","guarantees"],["guarranty","guaranty"],["guarrantyd","guaranteed"],["guarrantying","guaranteeing"],["guarrantys","guarantees"],["guarrente","guarantee"],["guarrented","guaranteed"],["guarrentee","guarantee"],["guarrenteed","guaranteed"],["guarrenteeing","guaranteeing"],["guarrentees","guarantees"],["guarrenteing","guaranteeing"],["guarrentes","guarantees"],["guarrenty","guaranty"],["guaruante","guarantee"],["guaruanted","guaranteed"],["guaruantee","guarantee"],["guaruanteed","guaranteed"],["guaruanteeing","guaranteeing"],["guaruantees","guarantees"],["guaruanteing","guaranteeing"],["guaruantes","guarantees"],["guaruanty","guaranty"],["guarunte","guarantee"],["guarunted","guaranteed"],["guaruntee","guarantee"],["guarunteed","guaranteed"],["guarunteeing","guaranteeing"],["guaruntees","guarantees"],["guarunteing","guaranteeing"],["guaruntes","guarantees"],["guarunty","guaranty"],["guas'","Gauss'"],["guas's","Gauss'"],["guas","Gauss"],["guass'","Gauss'"],["guass","Gauss"],["guassian","Gaussian"],["Guatamala","Guatemala"],["Guatamalan","Guatemalan"],["gud","good"],["guerrila","guerrilla"],["guerrilas","guerrillas"],["gueswork","guesswork"],["guideded","guided"],["guidence","guidance"],["guidline","guideline"],["guidlines","guidelines"],["Guilia","Giulia"],["Guilio","Giulio"],["Guiness","Guinness"],["Guiseppe","Giuseppe"],["gunanine","guanine"],["gurantee","guarantee"],["guranteed","guaranteed"],["guranteeing","guaranteeing"],["gurantees","guarantees"],["gurrantee","guarantee"],["guttaral","guttural"],["gutteral","guttural"],["gylph","glyph"],["gziniflate","gzinflate"],["gziped","gzipped"],["haa","has"],["haave","have"],["habaeus","habeas"],["habbit","habit"],["habeus","habeas"],["hability","ability"],["Habsbourg","Habsburg"],["hace","have"],["hachish","hackish"],["hadling","handling"],["hadnler","handler"],["haeder","header"],["haemorrage","haemorrhage"],["halarious","hilarious"],["hald","held"],["halfs","halves"],["halp","help"],["halpoints","halfpoints"],["hammmer","hammer"],["hampster","hamster"],["handel","handle"],["handeler","handler"],["handeles","handles"],["handeling","handling"],["handels","handles"],["hander","handler"],["handfull","handful"],["handhake","handshake"],["handker","handler"],["handleer","handler"],["handleing","handling"],["handlig","handling"],["handlling","handling"],["handsake","handshake"],["handshacke","handshake"],["handshackes","handshakes"],["handshacking","handshaking"],["handshage","handshake"],["handshages","handshakes"],["handshaging","handshaking"],["handshak","handshake"],["handshakng","handshaking"],["handshakre","handshake"],["handshakres","handshakes"],["handshakring","handshaking"],["handshaks","handshakes"],["handshale","handshake"],["handshales","handshakes"],["handshaling","handshaking"],["handshare","handshake"],["handshares","handshakes"],["handsharing","handshaking"],["handshk","handshake"],["handshke","handshake"],["handshkes","handshakes"],["handshking","handshaking"],["handshkng","handshaking"],["handshks","handshakes"],["handskake","handshake"],["handwirting","handwriting"],["hanel","handle"],["hangig","hanging"],["hanlde","handle"],["hanlded","handled"],["hanlder","handler"],["hanlders","handlers"],["hanldes","handles"],["hanlding","handling"],["hanldle","handle"],["hanle","handle"],["hanled","handled"],["hanles","handles"],["hanling","handling"],["hanshake","handshake"],["hanshakes","handshakes"],["hansome","handsome"],["hapen","happen"],["hapend","happened"],["hapends","happens"],["hapened","happened"],["hapening","happening"],["hapenn","happen"],["hapenned","happened"],["hapenning","happening"],["hapenns","happens"],["hapens","happens"],["happaned","happened"],["happended","happened"],["happenned","happened"],["happenning","happening"],["happennings","happenings"],["happenns","happens"],["happilly","happily"],["happne","happen"],["happpen","happen"],["happpened","happened"],["happpening","happening"],["happpenings","happenings"],["happpens","happens"],["harased","harassed"],["harases","harasses"],["harasment","harassment"],["harasments","harassments"],["harassement","harassment"],["harcoded","hardcoded"],["harcoding","hardcoding"],["hard-wirted","hard-wired"],["hardare","hardware"],["hardocde","hardcode"],["hardward","hardware"],["hardwdare","hardware"],["hardwirted","hardwired"],["harge","charge"],["harras","harass"],["harrased","harassed"],["harrases","harasses"],["harrasing","harassing"],["harrasment","harassment"],["harrasments","harassments"],["harrass","harass"],["harrassed","harassed"],["harrasses","harassed"],["harrassing","harassing"],["harrassment","harassment"],["harrassments","harassments"],["harth","hearth"],["harware","hardware"],["harwdare","hardware"],["has'nt","hasn't"],["hases","hashes"],["hashi","hash"],["hashreference","hash reference"],["hashs","hashes"],["hashses","hashes"],["hask","hash"],["hasn;t","hasn't"],["hasnt'","hasn't"],["hasnt","hasn't"],["hass","hash"],["hastable","hashtable"],["hastables","hashtables"],["Hatian","Haitian"],["hauty","haughty"],["have'nt","haven't"],["haveing","having"],["haven;t","haven't"],["havent'","haven't"],["havent't","haven't"],["havent","haven't"],["havew","have"],["haviest","heaviest"],["havn't","haven't"],["havnt","haven't"],["hax","hex"],["haynus","heinous"],["hazzle","hassle"],["hda","had"],["headder","header"],["headders","headers"],["headerr","header"],["headerrs","headers"],["headle","handle"],["headong","heading"],["headquarer","headquarter"],["headquater","headquarter"],["headquatered","headquartered"],["headquaters","headquarters"],["heaer","header"],["healthercare","healthcare"],["heathy","healthy"],["hefer","heifer"],["Heidelburg","Heidelberg"],["heigest","highest"],["heigher","higher"],["heighest","highest"],["heighit","height"],["heighteen","eighteen"],["heigt","height"],["heigth","height"],["heirachies","hierarchies"],["heirachy","hierarchy"],["heirarchic","hierarchic"],["heirarchical","hierarchical"],["heirarchically","hierarchically"],["heirarchies","hierarchies"],["heirarchy","hierarchy"],["heiroglyphics","hieroglyphics"],["helerps","helpers"],["hellow","hello"],["helment","helmet"],["heloer","helper"],["heloers","helpers"],["helpe","helper"],["helpfull","helpful"],["helpfuly","helpfully"],["helpped","helped"],["hemipshere","hemisphere"],["hemipsheres","hemispheres"],["hemishpere","hemisphere"],["hemishperes","hemispheres"],["hemmorhage","hemorrhage"],["hemorage","haemorrhage"],["henc","hence"],["henderence","hindrance"],["hendler","handler"],["hense","hence"],["hepler","helper"],["herarchy","hierarchy"],["herat","heart"],["heree","here"],["heridity","heredity"],["heroe","hero"],["heros","heroes"],["herselv","herself"],["hertiage","heritage"],["hertically","hectically"],["hertzs","hertz"],["hese","these"],["hesiate","hesitate"],["hesistant","hesitant"],["hesistate","hesitate"],["hesistated","hesitated"],["hesistates","hesitates"],["hesistating","hesitating"],["hesistation","hesitation"],["hesistations","hesitations"],["hestiate","hesitate"],["hetrogeneous","heterogeneous"],["heuristc","heuristic"],["heuristcs","heuristics"],["heursitics","heuristics"],["hevy","heavy"],["hexademical","hexadecimal"],["hexdecimal","hexadecimal"],["hexgaon","hexagon"],["hexgaonal","hexagonal"],["hexgaons","hexagons"],["hexidecimal","hexadecimal"],["hge","he"],["hiarchical","hierarchical"],["hiarchy","hierarchy"],["hiddden","hidden"],["hidded","hidden"],["hideen","hidden"],["hiden","hidden"],["hiearchies","hierarchies"],["hiearchy","hierarchy"],["hieght","height"],["hiena","hyena"],["hierachical","hierarchical"],["hierachies","hierarchies"],["hierachries","hierarchies"],["hierachry","hierarchy"],["hierachy","hierarchy"],["hierarachical","hierarchical"],["hierarachy","hierarchy"],["hierarchichal","hierarchical"],["hierarchichally","hierarchically"],["hierarchie","hierarchy"],["hierarcical","hierarchical"],["hierarcy","hierarchy"],["hierarhcical","hierarchical"],["hierarhcically","hierarchically"],["hierarhcies","hierarchies"],["hierarhcy","hierarchy"],["hierchy","hierarchy"],["hieroglph","hieroglyph"],["hieroglphs","hieroglyphs"],["hietus","hiatus"],["higeine","hygiene"],["higer","higher"],["higest","highest"],["high-affort","high-effort"],["highight","highlight"],["highighted","highlighted"],["highighter","highlighter"],["highighters","highlighters"],["highights","highlights"],["highjack","hijack"],["highligh","highlight"],["highlighed","highlighted"],["highligher","highlighter"],["highlighers","highlighters"],["highlighing","highlighting"],["highlighs","highlights"],["highlightin","highlighting"],["highlightning","highlighting"],["highligjt","highlight"],["highligjted","highlighted"],["highligjtes","highlights"],["highligjting","highlighting"],["highligjts","highlights"],["highligt","highlight"],["highligted","highlighted"],["highligth","highlight"],["highligting","highlighting"],["highligts","highlights"],["highter","higher"],["hightest","highest"],["hightlight","highlight"],["hightlighted","highlighted"],["hightlighting","highlighting"],["hightlights","highlights"],["hights","heights"],["higlight","highlight"],["higlighted","highlighted"],["higlighting","highlighting"],["higlights","highlights"],["higly","highly"],["higth","height"],["higway","highway"],["hijkack","hijack"],["hijkacked","hijacked"],["hijkacking","hijacking"],["hijkacks","hijacks"],["hilight","highlight"],["hilighted","highlighted"],["hilighting","highlighting"],["hilights","highlights"],["hillarious","hilarious"],["himselv","himself"],["hinderance","hindrance"],["hinderence","hindrance"],["hindrence","hindrance"],["hipopotamus","hippopotamus"],["hipotetical","hypothetical"],["hirachy","hierarchy"],["hirarchies","hierarchies"],["hirarchy","hierarchy"],["hirarcies","hierarchies"],["hirearchy","hierarchy"],["hirearcy","hierarchy"],["hismelf","himself"],["hisory","history"],["histgram","histogram"],["histocompatability","histocompatibility"],["historgram","histogram"],["historgrams","histograms"],["historicians","historians"],["historyan","historian"],["historyans","historians"],["historycal","historical"],["historycally","historically"],["historycaly","historically"],["histroian","historian"],["histroians","historians"],["histroic","historic"],["histroical","historical"],["histroically","historically"],["histroicaly","historically"],["histroies","histories"],["histroy","history"],["histry","history"],["hitogram","histogram"],["hitories","histories"],["hitory","history"],["hitsingles","hit singles"],["hiygeine","hygiene"],["hmdi","hdmi"],["hnalder","handler"],["hoeks","hoax"],["hoever","however"],["hokay","okay"],["holf","hold"],["holliday","holiday"],["hollowcost","holocaust"],["homapage","homepage"],["homegeneous","homogeneous"],["homestate","home state"],["homogeneize","homogenize"],["homogeneized","homogenized"],["homogenious","homogeneous"],["homogeniously","homogeneously"],["homogenity","homogeneity"],["homogenius","homogeneous"],["homogeniusly","homogeneously"],["homogenoues","homogeneous"],["homogenous","homogeneous"],["homogenously","homogeneously"],["homogenuous","homogeneous"],["honory","honorary"],["hoook","hook"],["hoooks","hooks"],["hootsba","chutzpah"],["hopefulle","hopefully"],["hopefullly","hopefully"],["hopefullt","hopefully"],["hopefullu","hopefully"],["hopefuly","hopefully"],["hopeing","hoping"],["hopful","hopeful"],["hopfully","hopefully"],["hopmepage","homepage"],["hopmepages","homepages"],["hoppefully","hopefully"],["hopyfully","hopefully"],["horicontal","horizontal"],["horicontally","horizontally"],["horinzontal","horizontal"],["horizntal","horizontal"],["horizonal","horizontal"],["horizonally","horizontally"],["horizontale","horizontal"],["horiztonal","horizontal"],["horiztonally","horizontally"],["horphan","orphan"],["horrable","horrible"],["horrifing","horrifying"],["horyzontally","horizontally"],["horziontal","horizontal"],["horziontally","horizontally"],["horzontal","horizontal"],["horzontally","horizontally"],["hosited","hoisted"],["hospitible","hospitable"],["hostanme","hostname"],["hostorical","historical"],["hostories","histories"],["hostory","history"],["hostspot","hotspot"],["hostspots","hotspots"],["hotizontal","horizontal"],["hotname","hostname"],["hounour","honour"],["houres","hours"],["housand","thousand"],["houskeeping","housekeeping"],["hovever","however"],["hovewer","however"],["howeever","however"],["howerver","however"],["howeverm","however"],["howewer","however"],["howver","however"],["hradware","hardware"],["hradwares","hardwares"],["hrlp","help"],["hrlped","helped"],["hrlper","helper"],["hrlpers","helpers"],["hrlping","helping"],["hrlps","helps"],["hrough","through"],["hsa","has"],["hsell","shell"],["hsi","his"],["hsitorians","historians"],["hsotname","hostname"],["hsould'nt","shouldn't"],["hsould","should"],["hsouldn't","shouldn't"],["hstory","history"],["htacccess","htaccess"],["hte","the"],["htey","they"],["htikn","think"],["hting","thing"],["htink","think"],["htis","this"],["htmp","html"],["htting","hitting"],["hueristic","heuristic"],["humber","number"],["huminoid","humanoid"],["humoural","humoral"],["humurous","humorous"],["hunderd","hundred"],["hundreths","hundredths"],["hundrets","hundreds"],["hunrgy","hungry"],["huricane","hurricane"],["huristic","heuristic"],["husban","husband"],["hvae","have"],["hvaing","having"],["hve","have"],["hwihc","which"],["hwile","while"],["hwole","whole"],["hybernate","hibernate"],["hydogen","hydrogen"],["hydrolic","hydraulic"],["hydrolics","hydraulics"],["hydropile","hydrophile"],["hydropilic","hydrophilic"],["hydropobe","hydrophobe"],["hydropobic","hydrophobic"],["hyerarchy","hierarchy"],["hyerlink","hyperlink"],["hygeine","hygiene"],["hygene","hygiene"],["hygenic","hygienic"],["hygine","hygiene"],["hyjack","hijack"],["hyjacking","hijacking"],["hypen","hyphen"],["hypenate","hyphenate"],["hypenated","hyphenated"],["hypenates","hyphenates"],["hypenating","hyphenating"],["hypenation","hyphenation"],["hypens","hyphens"],["hyperboly","hyperbole"],["Hyperldger","Hyperledger"],["hypervior","hypervisor"],["hypocracy","hypocrisy"],["hypocrasy","hypocrisy"],["hypocricy","hypocrisy"],["hypocrit","hypocrite"],["hypocrits","hypocrites"],["hyposeses","hypotheses"],["hyposesis","hypothesis"],["hypoteses","hypotheses"],["hypotesis","hypothesis"],["hypotethically","hypothetically"],["hypothenuse","hypotenuse"],["hypothenuses","hypotenuses"],["hypter","hyper"],["hyptothetical","hypothetical"],["hyptothetically","hypothetically"],["hypvervisor","hypervisor"],["hypvervisors","hypervisors"],["hypvisor","hypervisor"],["hypvisors","hypervisors"],["I'sd","I'd"],["i;ll","I'll"],["iamge","image"],["ibject","object"],["ibjects","objects"],["ibrary","library"],["icesickle","icicle"],["iclude","include"],["icluded","included"],["icludes","includes"],["icluding","including"],["iconclastic","iconoclastic"],["iconifie","iconify"],["icrease","increase"],["icreased","increased"],["icreases","increases"],["icreasing","increasing"],["icrement","increment"],["icrementally","incrementally"],["icremented","incremented"],["icrementing","incrementing"],["icrements","increments"],["idae","idea"],["idaeidae","idea"],["idaes","ideas"],["idealogies","ideologies"],["idealogy","ideology"],["idefinite","indefinite"],["idel","idle"],["idelogy","ideology"],["idemopotent","idempotent"],["idendified","identified"],["idendifier","identifier"],["idendifiers","identifiers"],["idenfied","identified"],["idenfifier","identifier"],["idenfifiers","identifiers"],["idenfitifer","identifier"],["idenfitifers","identifiers"],["idenfitify","identify"],["idenitfy","identify"],["idenitify","identify"],["identation","indentation"],["identcial","identical"],["identfied","identified"],["identfier","identifier"],["identfiers","identifiers"],["identiable","identifiable"],["idential","identical"],["identic","identical"],["identicial","identical"],["identidier","identifier"],["identies","identities"],["identifaction","identification"],["identifcation","identification"],["identifeir","identifier"],["identifeirs","identifiers"],["identifer","identifier"],["identifers","identifiers"],["identificable","identifiable"],["identifictaion","identification"],["identifieer","identifier"],["identifiler","identifier"],["identifilers","identifiers"],["identifing","identifying"],["identifiy","identify"],["identifyable","identifiable"],["identifyed","identified"],["identiviert","identifiers"],["identtation","indentation"],["identties","identities"],["identtifier","identifier"],["identty","identity"],["ideosyncracies","ideosyncrasies"],["ideosyncratic","idiosyncratic"],["idetifier","identifier"],["idetifiers","identifiers"],["idetifies","identifies"],["idicate","indicate"],["idicated","indicated"],["idicates","indicates"],["idicating","indicating"],["idices","indices"],["idiosyncracies","idiosyncrasies"],["idiosyncracy","idiosyncrasy"],["idividual","individual"],["idividually","individually"],["idividuals","individuals"],["idons","icons"],["iechart","piechart"],["ifself","itself"],["ifset","if set"],["ignest","ingest"],["ignested","ingested"],["ignesting","ingesting"],["ignests","ingests"],["ignnore","ignore"],["ignoded","ignored"],["ignonre","ignore"],["ignora","ignore"],["ignord","ignored"],["ignoreing","ignoring"],["ignorence","ignorance"],["ignorgable","ignorable"],["ignorgd","ignored"],["ignorge","ignore"],["ignorged","ignored"],["ignorgg","ignoring"],["ignorgig","ignoring"],["ignorging","ignoring"],["ignorgs","ignores"],["ignormable","ignorable"],["ignormd","ignored"],["ignorme","ignore"],["ignormed","ignored"],["ignormg","ignoring"],["ignormig","ignoring"],["ignorming","ignoring"],["ignorms","ignores"],["ignornable","ignorable"],["ignornd","ignored"],["ignorne","ignore"],["ignorned","ignored"],["ignorng","ignoring"],["ignornig","ignoring"],["ignorning","ignoring"],["ignorns","ignores"],["ignorrable","ignorable"],["ignorrd","ignored"],["ignorre","ignore"],["ignorred","ignored"],["ignorrg","ignoring"],["ignorrig","ignoring"],["ignorring","ignoring"],["ignorrs","ignores"],["ignors","ignores"],["ignortable","ignorable"],["ignortd","ignored"],["ignorte","ignore"],["ignorted","ignored"],["ignortg","ignoring"],["ignortig","ignoring"],["ignorting","ignoring"],["ignorts","ignores"],["ignory","ignore"],["ignroed","ignored"],["ignroing","ignoring"],["igoned","ignored"],["igonorando","ignorando"],["igonore","ignore"],["igore","ignore"],["igored","ignored"],["igores","ignores"],["igoring","ignoring"],["igrnore","ignore"],["Ihaca","Ithaca"],["ihs","his"],["iif","if"],["iimmune","immune"],["iinclude","include"],["iinterval","interval"],["iiterator","iterator"],["iland","island"],["ileagle","illegal"],["ilegal","illegal"],["ilegle","illegal"],["iligal","illegal"],["illegimacy","illegitimacy"],["illegitmate","illegitimate"],["illess","illness"],["illgal","illegal"],["illiegal","illegal"],["illigal","illegal"],["illigitament","illegitimate"],["illistrate","illustrate"],["illustrasion","illustration"],["illution","illusion"],["ilness","illness"],["ilogical","illogical"],["iluminate","illuminate"],["iluminated","illuminated"],["iluminates","illuminates"],["ilumination","illumination"],["iluminations","illuminations"],["ilustrate","illustrate"],["ilustrated","illustrated"],["ilustration","illustration"],["imagenary","imaginary"],["imaghe","image"],["imagin","imagine"],["imapct","impact"],["imapcted","impacted"],["imapcting","impacting"],["imapcts","impacts"],["imapge","image"],["imbaress","embarrass"],["imbed","embed"],["imbedded","embedded"],["imbedding","embedding"],["imblance","imbalance"],["imbrase","embrace"],["imcoming","incoming"],["imcomming","incoming"],["imcompatibility","incompatibility"],["imcompatible","incompatible"],["imcomplete","incomplete"],["imedatly","immediately"],["imedialy","immediately"],["imediate","immediate"],["imediately","immediately"],["imediatly","immediately"],["imense","immense"],["imfamus","infamous"],["imgage","image"],["imidiately","immediately"],["imilar","similar"],["imlement","implement"],["imlementation","implementation"],["imlemented","implemented"],["imlementing","implementing"],["imlements","implements"],["imlicit","implicit"],["imlicitly","implicitly"],["imliment","implement"],["imlimentation","implementation"],["imlimented","implemented"],["imlimenting","implementing"],["imliments","implements"],["immadiate","immediate"],["immadiately","immediately"],["immadiatly","immediately"],["immeadiate","immediate"],["immeadiately","immediately"],["immedaite","immediate"],["immedate","immediate"],["immedately","immediately"],["immedeate","immediate"],["immedeately","immediately"],["immedially","immediately"],["immedialty","immediately"],["immediantely","immediately"],["immediatelly","immediately"],["immediatelty","immediately"],["immediatley","immediately"],["immediatlly","immediately"],["immediatly","immediately"],["immediatlye","immediately"],["immeditaly","immediately"],["immeditately","immediately"],["immeidate","immediate"],["immeidately","immediately"],["immenantly","eminently"],["immidately","immediately"],["immidatly","immediately"],["immidiate","immediate"],["immidiatelly","immediately"],["immidiately","immediately"],["immidiatly","immediately"],["immitate","imitate"],["immitated","imitated"],["immitating","imitating"],["immitator","imitator"],["immmediate","immediate"],["immmediately","immediately"],["immsersive","immersive"],["immsersively","immersively"],["immuniy","immunity"],["immunosupressant","immunosuppressant"],["immutible","immutable"],["imolicit","implicit"],["imolicitly","implicitly"],["imort","import"],["imortable","importable"],["imorted","imported"],["imortes","imports"],["imorting","importing"],["imorts","imports"],["imovable","immovable"],["impcat","impact"],["impcated","impacted"],["impcating","impacting"],["impcats","impacts"],["impecabbly","impeccably"],["impedence","impedance"],["impeed","impede"],["impelement","implement"],["impelementation","implementation"],["impelemented","implemented"],["impelementing","implementing"],["impelements","implements"],["impelentation","implementation"],["impelment","implement"],["impelmentation","implementation"],["impelmentations","implementations"],["impement","implement"],["impementaion","implementation"],["impementaions","implementations"],["impementated","implemented"],["impementation","implementation"],["impementations","implementations"],["impemented","implemented"],["impementing","implementing"],["impementling","implementing"],["impementor","implementer"],["impements","implements"],["imperiaal","imperial"],["imperically","empirically"],["imperitive","imperative"],["impermable","impermeable"],["impiled","implied"],["implace","inplace"],["implament","implement"],["implamentation","implementation"],["implamented","implemented"],["implamenting","implementing"],["implaments","implements"],["implcit","implicit"],["implcitly","implicitly"],["implct","implicit"],["implemantation","implementation"],["implemataion","implementation"],["implemataions","implementations"],["implemememnt","implement"],["implemememntation","implementation"],["implemement","implement"],["implemementation","implementation"],["implemementations","implementations"],["implememented","implemented"],["implemementing","implementing"],["implemements","implements"],["implememetation","implementation"],["implememntation","implementation"],["implememt","implement"],["implememtation","implementation"],["implememtations","implementations"],["implememted","implemented"],["implememting","implementing"],["implememts","implements"],["implemen","implement"],["implemenatation","implementation"],["implemenation","implementation"],["implemenationa","implementation"],["implemenationd","implementation"],["implemenations","implementations"],["implemencted","implemented"],["implemend","implement"],["implemends","implements"],["implemened","implemented"],["implemenet","implement"],["implemenetaion","implementation"],["implemenetaions","implementations"],["implemenetation","implementation"],["implemenetations","implementations"],["implemenetd","implemented"],["implemeneted","implemented"],["implemeneter","implementer"],["implemeneting","implementing"],["implemenetions","implementations"],["implemenets","implements"],["implemenrt","implement"],["implementaed","implemented"],["implementaion","implementation"],["implementaions","implementations"],["implementaiton","implementation"],["implementaitons","implementations"],["implementantions","implementations"],["implementastion","implementation"],["implementataion","implementation"],["implementatation","implementation"],["implementated","implemented"],["implementates","implements"],["implementating","implementing"],["implementatins","implementations"],["implementation-spacific","implementation-specific"],["implementatition","implementation"],["implementatoin","implementation"],["implementatoins","implementations"],["implementatoion","implementation"],["implementaton","implementation"],["implementator","implementer"],["implementators","implementers"],["implementattion","implementation"],["implementd","implemented"],["implementes","implements"],["implementet","implemented"],["implemention","implementation"],["implementtaion","implementation"],["implemet","implement"],["implemetation","implementation"],["implemetations","implementations"],["implemeted","implemented"],["implemeting","implementing"],["implemetnation","implementation"],["implemets","implements"],["implemnt","implement"],["implemntation","implementation"],["implemntations","implementations"],["implemt","implement"],["implemtation","implementation"],["implemtations","implementations"],["implemted","implemented"],["implemtentation","implementation"],["implemtentations","implementations"],["implemting","implementing"],["implemts","implements"],["impleneted","implemented"],["implenment","implement"],["implenmentation","implementation"],["implent","implement"],["implentation","implementation"],["implentations","implementations"],["implented","implemented"],["implenting","implementing"],["implentors","implementers"],["implents","implements"],["implet","implement"],["impletation","implementation"],["impletations","implementations"],["impleted","implemented"],["impleter","implementer"],["impleting","implementing"],["impletment","implement"],["implets","implements"],["implicitely","implicitly"],["implicitley","implicitly"],["implict","implicit"],["implictly","implicitly"],["implimcit","implicit"],["implimcitly","implicitly"],["impliment","implement"],["implimentaion","implementation"],["implimentaions","implementations"],["implimentation","implementation"],["implimentation-spacific","implementation-specific"],["implimentations","implementations"],["implimented","implemented"],["implimenting","implementing"],["implimention","implementation"],["implimentions","implementations"],["implimentor","implementor"],["impliments","implements"],["implmenet","implement"],["implmenetaion","implementation"],["implmenetaions","implementations"],["implmenetation","implementation"],["implmenetations","implementations"],["implmenetd","implemented"],["implmeneted","implemented"],["implmeneter","implementer"],["implmeneting","implementing"],["implmenets","implements"],["implment","implement"],["implmentation","implementation"],["implmentations","implementations"],["implmented","implemented"],["implmenting","implementing"],["implments","implements"],["imploys","employs"],["imporing","importing"],["imporot","import"],["imporoted","imported"],["imporoting","importing"],["imporots","imports"],["imporove","improve"],["imporoved","improved"],["imporovement","improvement"],["imporovements","improvements"],["imporoves","improves"],["imporoving","improving"],["imporsts","imports"],["importamt","important"],["importat","important"],["importd","imported"],["importent","important"],["importnt","important"],["imporve","improve"],["imporved","improved"],["imporvement","improvement"],["imporvements","improvements"],["imporves","improves"],["imporving","improving"],["imporvment","improvement"],["imposible","impossible"],["impossiblble","impossible"],["impot","import"],["impove","improve"],["impoved","improved"],["impovement","improvement"],["impovements","improvements"],["impoves","improves"],["impoving","improving"],["impplement","implement"],["impplementating","implementing"],["impplementation","implementation"],["impplemented","implemented"],["impremented","implemented"],["impres","impress"],["impresive","impressive"],["impressario","impresario"],["imprioned","imprisoned"],["imprisonned","imprisoned"],["improbe","improve"],["improbement","improvement"],["improbements","improvements"],["improbes","improves"],["improbing","improving"],["improbment","improvement"],["improbments","improvements"],["improof","improve"],["improofement","improvement"],["improofing","improving"],["improofment","improvement"],["improofs","improves"],["improove","improve"],["improoved","improved"],["improovement","improvement"],["improovements","improvements"],["improoves","improves"],["improoving","improving"],["improovment","improvement"],["improovments","improvements"],["impropely","improperly"],["improssible","impossible"],["improt","import"],["improtance","importance"],["improtant","important"],["improtantly","importantly"],["improtation","importation"],["improtations","importations"],["improted","imported"],["improter","importer"],["improters","importers"],["improting","importing"],["improts","imports"],["improvemen","improvement"],["improvemenet","improvement"],["improvemenets","improvements"],["improvemens","improvements"],["improvision","improvisation"],["improvmenet","improvement"],["improvmenets","improvements"],["improvment","improvement"],["improvments","improvements"],["imput","input"],["imrovement","improvement"],["in-memeory","in-memory"],["inablility","inability"],["inacccessible","inaccessible"],["inaccesible","inaccessible"],["inaccessable","inaccessible"],["inaccuraccies","inaccuracies"],["inaccuraccy","inaccuracy"],["inacessible","inaccessible"],["inacurate","inaccurate"],["inacurracies","inaccuracies"],["inacurrate","inaccurate"],["inadiquate","inadequate"],["inadquate","inadequate"],["inadvertant","inadvertent"],["inadvertantly","inadvertently"],["inadvertedly","inadvertently"],["inagurated","inaugurated"],["inaguration","inauguration"],["inaktively","inactively"],["inalid","invalid"],["inappropiate","inappropriate"],["inappropreate","inappropriate"],["inapropriate","inappropriate"],["inapropriately","inappropriately"],["inate","innate"],["inaugures","inaugurates"],["inavlid","invalid"],["inbalance","imbalance"],["inbalanced","imbalanced"],["inbed","embed"],["inbedded","embedded"],["inbility","inability"],["incalid","invalid"],["incarcirated","incarcerated"],["incase","in case"],["incatation","incantation"],["incatations","incantations"],["incative","inactive"],["incement","increment"],["incemental","incremental"],["incementally","incrementally"],["incemented","incremented"],["incements","increments"],["incerase","increase"],["incerased","increased"],["incerasing","increasing"],["incidential","incidental"],["incidentially","incidentally"],["incidently","incidentally"],["inclding","including"],["incldue","include"],["incldued","included"],["incldues","includes"],["inclinaison","inclination"],["inclode","include"],["inclreased","increased"],["includ","include"],["includea","include"],["includee","include"],["includeing","including"],["includied","included"],["includig","including"],["includign","including"],["includng","including"],["inclue","include"],["inclued","included"],["inclues","includes"],["incluging","including"],["incluide","include"],["incluing","including"],["inclused","included"],["inclusing","including"],["inclusinve","inclusive"],["inclution","inclusion"],["inclutions","inclusions"],["incmrement","increment"],["incoherance","incoherence"],["incoherancy","incoherency"],["incoherant","incoherent"],["incoherantly","incoherently"],["incomapatibility","incompatibility"],["incomapatible","incompatible"],["incomaptibele","incompatible"],["incomaptibelities","incompatibilities"],["incomaptibelity","incompatibility"],["incomaptible","incompatible"],["incombatibilities","incompatibilities"],["incombatibility","incompatibility"],["incomfortable","uncomfortable"],["incomming","incoming"],["incommplete","incomplete"],["incompatabable","incompatible"],["incompatabiity","incompatibility"],["incompatabile","incompatible"],["incompatabilities","incompatibilities"],["incompatability","incompatibility"],["incompatabillity","incompatibility"],["incompatabilty","incompatibility"],["incompatabily","incompatibility"],["incompatable","incompatible"],["incompatablility","incompatibility"],["incompatablities","incompatibilities"],["incompatablitiy","incompatibility"],["incompatablity","incompatibility"],["incompatably","incompatibly"],["incompataibility","incompatibility"],["incompataible","incompatible"],["incompataility","incompatibility"],["incompatatbility","incompatibility"],["incompatatble","incompatible"],["incompatatible","incompatible"],["incompatbility","incompatibility"],["incompatble","incompatible"],["incompatiability","incompatibility"],["incompatiable","incompatible"],["incompatibile","incompatible"],["incompatibilies","incompatibilities"],["incompatiblities","incompatibilities"],["incompatiblity","incompatibility"],["incompetance","incompetence"],["incompetant","incompetent"],["incompete","incomplete"],["incomping","incoming"],["incompleate","incomplete"],["incompleete","incomplete"],["incompletd","incomplete"],["incomptable","incompatible"],["incomptetent","incompetent"],["incomptible","incompatible"],["inconcistencies","inconsistencies"],["inconcistency","inconsistency"],["inconcistent","inconsistent"],["inconditional","unconditional"],["inconditionally","unconditionally"],["inconfortable","uncomfortable"],["inconisistent","inconsistent"],["inconistencies","inconsistencies"],["inconlusive","inconclusive"],["inconsisent","inconsistent"],["inconsisently","inconsistently"],["inconsisntency","inconsistency"],["inconsistance","inconsistency"],["inconsistancies","inconsistencies"],["inconsistancy","inconsistency"],["inconsistant","inconsistent"],["inconsisten","inconsistent"],["inconsistend","inconsistent"],["inconsistendly","inconsistently"],["inconsistendt","inconsistent"],["inconsistendtly","inconsistently"],["inconsistenly","inconsistently"],["inconsistented","inconsistent"],["inconsitant","inconsistent"],["inconsitency","inconsistency"],["inconsitent","inconsistent"],["inconveniant","inconvenient"],["inconveniantly","inconveniently"],["inconvertable","inconvertible"],["inconvienience","inconvenience"],["inconvienient","inconvenient"],["inconvineance","inconvenience"],["inconvineances","inconveniences"],["inconvinence","inconvenience"],["inconvinences","inconveniences"],["inconviniance","inconvenience"],["inconviniances","inconveniences"],["inconvinience","inconvenience"],["inconviniences","inconveniences"],["inconviniency","inconvenience"],["inconviniencys","inconveniences"],["incooperates","incorporates"],["incoperate","incorporate"],["incoperated","incorporated"],["incoperates","incorporates"],["incoperating","incorporating"],["incoporate","incorporate"],["incoporated","incorporated"],["incoporates","incorporates"],["incoporating","incorporating"],["incoprorate","incorporate"],["incoprorated","incorporated"],["incoprorates","incorporates"],["incoprorating","incorporating"],["incorect","incorrect"],["incorectly","incorrectly"],["incoropate","incorporate"],["incoropates","incorporates"],["incoroporated","incorporated"],["incorparates","incorporates"],["incorperate","incorporate"],["incorperated","incorporated"],["incorperates","incorporates"],["incorperating","incorporating"],["incorperation","incorporation"],["incorportaed","incorporated"],["incorported","incorporated"],["incorprates","incorporates"],["incorreclty","incorrectly"],["incorrecly","incorrectly"],["incorrecty","incorrectly"],["incorreect","incorrect"],["incorreectly","incorrectly"],["incorrent","incorrect"],["incorret","incorrect"],["incorrrect","incorrect"],["incorrrectly","incorrectly"],["incorruptable","incorruptible"],["incosistencies","inconsistencies"],["incosistency","inconsistency"],["incosistent","inconsistent"],["incosistente","inconsistent"],["incramentally","incrementally"],["increadible","incredible"],["increading","increasing"],["increaing","increasing"],["increament","increment"],["increas","increase"],["incredable","incredible"],["incremantal","incremental"],["incremeantal","incremental"],["incremenet","increment"],["incremenetd","incremented"],["incremeneted","incremented"],["incrementaly","incrementally"],["incremet","increment"],["incremetal","incremental"],["incremeted","incremented"],["incremnet","increment"],["increse","increase"],["incresed","increased"],["increses","increases"],["incresing","increasing"],["incrfemental","incremental"],["incrmenet","increment"],["incrmenetd","incremented"],["incrmeneted","incremented"],["incrment","increment"],["incrmental","incremental"],["incrmentally","incrementally"],["incrmented","incremented"],["incrmenting","incrementing"],["incrments","increments"],["inctance","instance"],["inctroduce","introduce"],["inctroduced","introduced"],["incude","include"],["incuded","included"],["incudes","includes"],["incuding","including"],["inculde","include"],["inculded","included"],["inculdes","includes"],["inculding","including"],["incunabla","incunabula"],["incure","incur"],["incurruptable","incorruptible"],["incurruptible","incorruptible"],["incvalid","invalid"],["indcates","indicates"],["indciate","indicate"],["inddex","index"],["inddividual","individual"],["inddividually","individually"],["inddividuals","individuals"],["indecate","indicate"],["indeces","indices"],["indecies","indices"],["indefinate","indefinite"],["indefinately","indefinitely"],["indefineable","undefinable"],["indefinetly","indefinitely"],["indefinitiley","indefinitely"],["indefinitively","indefinitely"],["indefinitly","indefinitely"],["indefintly","indefinitely"],["indempotent","idempotent"],["indendation","indentation"],["indentaction","indentation"],["indentaion","indentation"],["indentended","indented"],["indentical","identical"],["indentically","identically"],["indentifer","identifier"],["indentification","identification"],["indentified","identified"],["indentifier","identifier"],["indentifies","identifies"],["indentifing","identifying"],["indentify","identify"],["indentifying","identifying"],["indentit","identity"],["indentity","identity"],["indentleveal","indentlevel"],["indenx","index"],["indepandance","independence"],["indepdence","independence"],["indepdencente","independence"],["indepdendance","independence"],["indepdendant","independent"],["indepdendantly","independently"],["indepdendence","independence"],["indepdendency","independency"],["indepdendent","independent"],["indepdendently","independently"],["indepdendet","independent"],["indepdendetly","independently"],["indepdenence","independence"],["indepdenent","independent"],["indepdenently","independently"],["indepdent","independent"],["indepdented","independent"],["indepdentedly","independently"],["indepdently","independently"],["indepedantly","independently"],["indepedence","independence"],["indepedent","independent"],["indepedently","independently"],["independ","independent"],["independance","independence"],["independant","independent"],["independantly","independently"],["independece","independence"],["independed","independent"],["independedly","independently"],["independend","independent"],["independendet","independent"],["independet","independent"],["independly","independently"],["independnent","independent"],["independnet","independent"],["independnt","independent"],["independntly","independently"],["independt","independent"],["independtly","independently"],["indepenedent","independent"],["indepenendence","independence"],["indepenent","independent"],["indepenently","independently"],["indepent","independent"],["indepentent","independent"],["indepently","independently"],["inderect","indirect"],["inderts","inserts"],["indes","index"],["indespensable","indispensable"],["indespensible","indispensable"],["indexig","indexing"],["indiactor","indicator"],["indiate","indicate"],["indiated","indicated"],["indiates","indicates"],["indiating","indicating"],["indicaite","indicate"],["indicat","indicate"],["indicees","indices"],["indiciate","indicate"],["indiciated","indicated"],["indiciates","indicates"],["indiciating","indicating"],["indicies","indices"],["indicte","indicate"],["indictement","indictment"],["indictes","indicates"],["indictor","indicator"],["indigineous","indigenous"],["indipendence","independence"],["indipendent","independent"],["indipendently","independently"],["indiquate","indicate"],["indiquates","indicates"],["indirecty","indirectly"],["indispensible","indispensable"],["indisputible","indisputable"],["indisputibly","indisputably"],["indistiguishable","indistinguishable"],["indivdual","individual"],["indivdually","individually"],["indivdualy","individually"],["individal","individual"],["individally","individually"],["individals","individuals"],["individaul","individual"],["individaully","individually"],["individauls","individuals"],["individauly","individually"],["individial","individual"],["individualy","individually"],["individuel","individual"],["individuelly","individually"],["individuely","individually"],["indivisual","individual"],["indivisuality","individuality"],["indivisually","individually"],["indivisuals","individuals"],["indiviual","individual"],["indiviually","individually"],["indiviuals","individuals"],["indivual","individual"],["indivudual","individual"],["indivudually","individually"],["indizies","indices"],["indpendent","independent"],["indpendently","independently"],["indrect","indirect"],["indulgue","indulge"],["indure","endure"],["indutrial","industrial"],["indvidual","individual"],["indviduals","individuals"],["indxes","indexes"],["inearisation","linearisation"],["ineffciency","inefficiency"],["ineffcient","inefficient"],["ineffciently","inefficiently"],["inefficency","inefficiency"],["inefficent","inefficient"],["inefficently","inefficiently"],["inefficenty","inefficiently"],["inefficienty","inefficiently"],["ineffiecent","inefficient"],["ineffient","inefficient"],["ineffiently","inefficiently"],["ineficient","inefficient"],["inegrate","integrate"],["inegrated","integrated"],["ineqality","inequality"],["inequalitiy","inequality"],["inerface","interface"],["inerit","inherit"],["ineritance","inheritance"],["inerited","inherited"],["ineriting","inheriting"],["ineritor","inheritor"],["ineritors","inheritors"],["inerits","inherits"],["inernal","internal"],["inerrupt","interrupt"],["inershia","inertia"],["inershial","inertial"],["inersia","inertia"],["inersial","inertial"],["inertion","insertion"],["ines","lines"],["inestart","linestart"],["inetrrupts","interrupts"],["inevatible","inevitable"],["inevitible","inevitable"],["inevititably","inevitably"],["inexistant","inexistent"],["inexperiance","inexperience"],["inexperianced","inexperienced"],["inexpierence","inexperience"],["inexpierenced","inexperienced"],["inexpirience","inexperience"],["inexpirienced","inexperienced"],["infact","in fact"],["infalability","infallibility"],["infallable","infallible"],["infalte","inflate"],["infalted","inflated"],["infaltes","inflates"],["infalting","inflating"],["infectuous","infectious"],["infered","inferred"],["inferface","interface"],["infering","inferring"],["inferrable","inferable"],["inferrence","inference"],["infex","index"],["infilitrate","infiltrate"],["infilitrated","infiltrated"],["infilitration","infiltration"],["infinate","infinite"],["infinately","infinitely"],["infininte","infinite"],["infinit","infinite"],["infinitie","infinity"],["infinitly","infinitely"],["infinte","infinite"],["infintesimal","infinitesimal"],["infinty","infinity"],["infite","infinite"],["inflamation","inflammation"],["inflatoin","inflation"],["inflexable","inflexible"],["inflight","in-flight"],["influece","influence"],["influeced","influenced"],["influeces","influences"],["influecing","influencing"],["influencial","influential"],["influencin","influencing"],["influented","influenced"],["infoemation","information"],["infomation","information"],["infomational","informational"],["infomed","informed"],["infomer","informer"],["infomration","information"],["infoms","informs"],["infor","info"],["inforamtion","information"],["inforation","information"],["inforational","informational"],["inforce","enforce"],["inforced","enforced"],["informacion","information"],["informaion","information"],["informaiton","information"],["informatation","information"],["informatations","information"],["informatikon","information"],["informatins","information"],["informatio","information"],["informatiom","information"],["informations","information"],["informatoin","information"],["informatoins","information"],["informaton","information"],["informfation","information"],["informtion","information"],["inforrmation","information"],["infrantryman","infantryman"],["infrasctructure","infrastructure"],["infrastrcuture","infrastructure"],["infrastruture","infrastructure"],["infrastucture","infrastructure"],["infrastuctures","infrastructures"],["infreqency","infrequency"],["infreqentcy","infrequency"],["infreqeuncy","infrequency"],["infreqeuntcy","infrequency"],["infrequancies","infrequencies"],["infrequancy","infrequency"],["infrequantcies","infrequencies"],["infrequantcy","infrequency"],["infrequentcies","infrequencies"],["infrigement","infringement"],["infromation","information"],["infromatoin","information"],["infrormation","information"],["infrustructure","infrastructure"],["ingegral","integral"],["ingenius","ingenious"],["ingnore","ignore"],["ingnored","ignored"],["ingnores","ignores"],["ingnoring","ignoring"],["ingore","ignore"],["ingored","ignored"],["ingores","ignores"],["ingoring","ignoring"],["ingration","integration"],["ingreediants","ingredients"],["inh","in"],["inhabitans","inhabitants"],["inherantly","inherently"],["inheratance","inheritance"],["inheret","inherit"],["inherets","inherits"],["inheritablility","inheritability"],["inheritence","inheritance"],["inherith","inherit"],["inherithed","inherited"],["inherithing","inheriting"],["inheriths","inherits"],["inheritted","inherited"],["inherrit","inherit"],["inherritance","inheritance"],["inherrited","inherited"],["inherriting","inheriting"],["inherrits","inherits"],["inhert","inherit"],["inhertance","inheritance"],["inhertances","inheritances"],["inherted","inherited"],["inhertiance","inheritance"],["inherting","inheriting"],["inherts","inherits"],["inhomogenous","inhomogeneous"],["inialized","initialized"],["iniate","initiate"],["inidicate","indicate"],["inidicated","indicated"],["inidicates","indicates"],["inidicating","indicating"],["inidication","indication"],["inidications","indications"],["inidividual","individual"],["inidvidual","individual"],["inifinite","infinite"],["inifinity","infinity"],["inifinte","infinite"],["inifite","infinite"],["iniitial","initial"],["iniitialization","initialization"],["iniitializations","initializations"],["iniitialize","initialize"],["iniitialized","initialized"],["iniitializes","initializes"],["iniitializing","initializing"],["inintialisation","initialisation"],["inintialization","initialization"],["inisialise","initialise"],["inisialised","initialised"],["inisialises","initialises"],["iniside","inside"],["inisides","insides"],["initail","initial"],["initailisation","initialisation"],["initailise","initialise"],["initailised","initialised"],["initailiser","initialiser"],["initailisers","initialisers"],["initailises","initialises"],["initailising","initialising"],["initailization","initialization"],["initailize","initialize"],["initailized","initialized"],["initailizer","initializer"],["initailizers","initializers"],["initailizes","initializes"],["initailizing","initializing"],["initailly","initially"],["initails","initials"],["initailsation","initialisation"],["initailse","initialise"],["initailsed","initialised"],["initailsiation","initialisation"],["initaily","initially"],["initailzation","initialization"],["initailze","initialize"],["initailzed","initialized"],["initailziation","initialization"],["inital","initial"],["initalialisation","initialisation"],["initalialization","initialization"],["initalisation","initialisation"],["initalise","initialise"],["initalised","initialised"],["initaliser","initialiser"],["initalises","initialises"],["initalising","initialising"],["initalization","initialization"],["initalize","initialize"],["initalized","initialized"],["initalizer","initializer"],["initalizes","initializes"],["initalizing","initializing"],["initally","initially"],["initals","initials"],["initiailize","initialize"],["initiailized","initialized"],["initiailizes","initializes"],["initiailizing","initializing"],["initiaitive","initiative"],["initiaitives","initiatives"],["initialialise","initialise"],["initialialize","initialize"],["initialiasation","initialisation"],["initialiase","initialise"],["initialiased","initialised"],["initialiation","initialization"],["initialiazation","initialization"],["initialiaze","initialize"],["initialiazed","initialized"],["initialied","initialized"],["initialilsing","initialising"],["initialilzing","initializing"],["initialisaing","initialising"],["initialisaiton","initialisation"],["initialisated","initialised"],["initialisatin","initialisation"],["initialisationg","initialisation"],["initialisaton","initialisation"],["initialisatons","initialisations"],["initialiseing","initialising"],["initialisiation","initialisation"],["initialisong","initialising"],["initialiting","initializing"],["initialitse","initialise"],["initialitsing","initialising"],["initialitze","initialize"],["initialitzing","initializing"],["initializa","initialize"],["initializad","initialized"],["initializaed","initialized"],["initializaing","initializing"],["initializaiton","initialization"],["initializate","initialize"],["initializated","initialized"],["initializates","initializes"],["initializatin","initialization"],["initializating","initializing"],["initializationg","initialization"],["initializaton","initialization"],["initializatons","initializations"],["initializedd","initialized"],["initializeing","initializing"],["initializiation","initialization"],["initializong","initializing"],["initialsation","initialisation"],["initialse","initialise"],["initialsed","initialised"],["initialses","initialises"],["initialsing","initialising"],["initialy","initially"],["initialyl","initially"],["initialyse","initialise"],["initialysed","initialised"],["initialyses","initialises"],["initialysing","initialising"],["initialyze","initialize"],["initialyzed","initialized"],["initialyzes","initializes"],["initialyzing","initializing"],["initialzation","initialization"],["initialze","initialize"],["initialzed","initialized"],["initialzes","initializes"],["initialzing","initializing"],["initiatiate","initiate"],["initiatiated","initiated"],["initiatiater","initiator"],["initiatiating","initiating"],["initiatiator","initiator"],["initiatiats","initiates"],["initiatie","initiate"],["initiatied","initiated"],["initiaties","initiates"],["initiialise","initialise"],["initiialize","initialize"],["initilialised","initialised"],["initilialization","initialization"],["initilializations","initializations"],["initilialize","initialize"],["initilialized","initialized"],["initilializes","initializes"],["initilializing","initializing"],["initiliase","initialise"],["initiliased","initialised"],["initiliases","initialises"],["initiliasing","initialising"],["initiliaze","initialize"],["initiliazed","initialized"],["initiliazes","initializes"],["initiliazing","initializing"],["initilisation","initialisation"],["initilisations","initialisations"],["initilise","initialise"],["initilised","initialised"],["initilises","initialises"],["initilising","initialising"],["initilization","initialization"],["initilizations","initializations"],["initilize","initialize"],["initilized","initialized"],["initilizes","initializes"],["initilizing","initializing"],["inititalisation","initialisation"],["inititalisations","initialisations"],["inititalise","initialise"],["inititalised","initialised"],["inititaliser","initialiser"],["inititalising","initialising"],["inititalization","initialization"],["inititalizations","initializations"],["inititalize","initialize"],["inititate","initiate"],["inititator","initiator"],["inititialization","initialization"],["inititializations","initializations"],["initliasation","initialisation"],["initliase","initialise"],["initliased","initialised"],["initliaser","initialiser"],["initliazation","initialization"],["initliaze","initialize"],["initliazed","initialized"],["initliazer","initializer"],["inituialisation","initialisation"],["inituialization","initialization"],["inivisible","invisible"],["inizialize","initialize"],["inizialized","initialized"],["inizializes","initializes"],["inlalid","invalid"],["inlclude","include"],["inlcluded","included"],["inlcludes","includes"],["inlcluding","including"],["inlcludion","inclusion"],["inlclusive","inclusive"],["inlcude","include"],["inlcuded","included"],["inlcudes","includes"],["inlcuding","including"],["inlcusion","inclusion"],["inlcusive","inclusive"],["inlin","inline"],["inlude","include"],["inluded","included"],["inludes","includes"],["inluding","including"],["inludung","including"],["inluence","influence"],["inlusive","inclusive"],["inmediate","immediate"],["inmediatelly","immediately"],["inmediately","immediately"],["inmediatily","immediately"],["inmediatly","immediately"],["inmense","immense"],["inmigrant","immigrant"],["inmigrants","immigrants"],["inmmediately","immediately"],["inmplementation","implementation"],["innactive","inactive"],["innacurate","inaccurate"],["innacurately","inaccurately"],["innappropriate","inappropriate"],["innecesarily","unnecessarily"],["innecesary","unnecessary"],["innecessarily","unnecessarily"],["innecessary","unnecessary"],["inneffectual","ineffectual"],["innocous","innocuous"],["innoculate","inoculate"],["innoculated","inoculated"],["innosense","innocence"],["inocence","innocence"],["inofficial","unofficial"],["inofrmation","information"],["inoperant","inoperative"],["inoquous","innocuous"],["inot","into"],["inouts","inputs"],["inpact","impact"],["inpacted","impacted"],["inpacting","impacting"],["inpacts","impacts"],["inpeach","impeach"],["inpecting","inspecting"],["inpection","inspection"],["inpections","inspections"],["inpending","impending"],["inpenetrable","impenetrable"],["inplementation","implementation"],["inplementations","implementations"],["inplemented","implemented"],["inplicit","implicit"],["inplicitly","implicitly"],["inpolite","impolite"],["inport","import"],["inportant","important"],["inposible","impossible"],["inpossible","impossible"],["inpout","input"],["inpouts","inputs"],["inpractical","impractical"],["inpracticality","impracticality"],["inpractically","impractically"],["inprisonment","imprisonment"],["inproove","improve"],["inprooved","improved"],["inprooves","improves"],["inprooving","improving"],["inproovment","improvement"],["inproovments","improvements"],["inproper","improper"],["inproperly","improperly"],["inproving","improving"],["inpsection","inspection"],["inpterpreter","interpreter"],["inpu","input"],["inputed","inputted"],["inputsream","inputstream"],["inpuut","input"],["inrement","increment"],["inrements","increments"],["inreractive","interactive"],["inrerface","interface"],["inresponsive","unresponsive"],["inro","into"],["ins't","isn't"],["insallation","installation"],["insalled","installed"],["inscpeting","inspecting"],["insctuction","instruction"],["insctuctional","instructional"],["insctuctions","instructions"],["insde","inside"],["insead","instead"],["insectiverous","insectivorous"],["insensative","insensitive"],["insensetive","insensitive"],["insensistive","insensitive"],["insensistively","insensitively"],["insensitiv","insensitive"],["insensitivy","insensitivity"],["insensitve","insensitive"],["insenstive","insensitive"],["insenstively","insensitively"],["insentives","incentives"],["insentivite","insensitive"],["insepect","inspect"],["insepected","inspected"],["insepection","inspection"],["insepects","inspects"],["insependent","independent"],["inseperable","inseparable"],["insepsion","inception"],["inser","insert"],["insering","inserting"],["insersect","intersect"],["insersected","intersected"],["insersecting","intersecting"],["insersects","intersects"],["inserst","insert"],["insersted","inserted"],["inserster","inserter"],["insersting","inserting"],["inserstor","inserter"],["insersts","inserts"],["insertin","inserting"],["insertino","inserting"],["insesitive","insensitive"],["insesitively","insensitively"],["insesitiveness","insensitiveness"],["insesitivity","insensitivity"],["insetad","instead"],["insetead","instead"],["inseted","inserted"],["insid","inside"],["insidde","inside"],["insiddes","insides"],["insided","inside"],["insignificat","insignificant"],["insignificatly","insignificantly"],["insigt","insight"],["insigth","insight"],["insigths","insights"],["insigts","insights"],["insistance","insistence"],["insititute","institute"],["insitution","institution"],["insitutions","institutions"],["insonsistency","inconsistency"],["instaance","instance"],["instabce","instance"],["instace","instance"],["instaces","instances"],["instaciate","instantiate"],["instad","instead"],["instade","instead"],["instaead","instead"],["instaed","instead"],["instal","install"],["instalation","installation"],["instalations","installations"],["instaled","installed"],["instaler","installer"],["instaling","installing"],["installaion","installation"],["installaiton","installation"],["installaitons","installations"],["installataion","installation"],["installataions","installations"],["installatation","installation"],["installationa","installation"],["installes","installs"],["installtion","installation"],["instals","installs"],["instancd","instance"],["instanciate","instantiate"],["instanciated","instantiated"],["instanciates","instantiates"],["instanciating","instantiating"],["instanciation","instantiation"],["instanciations","instantiations"],["instane","instance"],["instanes","instances"],["instanseation","instantiation"],["instansiate","instantiate"],["instansiated","instantiated"],["instansiates","instantiates"],["instansiation","instantiation"],["instantate","instantiate"],["instantating","instantiating"],["instantation","instantiation"],["instantations","instantiations"],["instantiaties","instantiates"],["instanze","instance"],["instatance","instance"],["instatiate","instantiate"],["instatiation","instantiation"],["instatiations","instantiations"],["insteance","instance"],["insted","instead"],["insteead","instead"],["inster","insert"],["insterad","instead"],["insterrupts","interrupts"],["instersction","intersection"],["instersctions","intersections"],["instersectioned","intersection"],["instert","insert"],["insterted","inserted"],["instertion","insertion"],["institue","institute"],["instlal","install"],["instlalation","installation"],["instlalations","installations"],["instlaled","installed"],["instlaler","installer"],["instlaling","installing"],["instlals","installs"],["instller","installer"],["instnace","instance"],["instnaces","instances"],["instnance","instance"],["instnances","instances"],["instnat","instant"],["instnatiated","instantiated"],["instnatiation","instantiation"],["instnatiations","instantiations"],["instnce","instance"],["instnces","instances"],["instnsiated","instantiated"],["instnsiation","instantiation"],["instnsiations","instantiations"],["instnt","instant"],["instntly","instantly"],["instrace","instance"],["instralled","installed"],["instrction","instruction"],["instrctional","instructional"],["instrctions","instructions"],["instrcut","instruct"],["instrcutino","instruction"],["instrcutinoal","instructional"],["instrcutinos","instructions"],["instrcution","instruction"],["instrcutional","instructional"],["instrcutions","instructions"],["instrcuts","instructs"],["instread","instead"],["instrinsic","intrinsic"],["instruccion","instruction"],["instruccional","instructional"],["instruccions","instructions"],["instrucion","instruction"],["instrucional","instructional"],["instrucions","instructions"],["instruciton","instruction"],["instrucitonal","instructional"],["instrucitons","instructions"],["instrumenet","instrument"],["instrumenetation","instrumentation"],["instrumenetd","instrumented"],["instrumeneted","instrumented"],["instrumentaion","instrumentation"],["instrumnet","instrument"],["instrumnets","instruments"],["instsall","install"],["instsallation","installation"],["instsallations","installations"],["instsalled","installed"],["instsalls","installs"],["instuction","instruction"],["instuctional","instructional"],["instuctions","instructions"],["instuments","instruments"],["insturment","instrument"],["insturments","instruments"],["instutionalized","institutionalized"],["instutions","intuitions"],["insuffciency","insufficiency"],["insuffcient","insufficient"],["insuffciently","insufficiently"],["insufficency","insufficiency"],["insufficent","insufficient"],["insufficently","insufficiently"],["insuffiency","insufficiency"],["insuffient","insufficient"],["insuffiently","insufficiently"],["insurasnce","insurance"],["insurence","insurance"],["intaces","instance"],["intack","intact"],["intall","install"],["intallation","installation"],["intallationpath","installationpath"],["intallations","installations"],["intalled","installed"],["intalleing","installing"],["intaller","installer"],["intalles","installs"],["intalling","installing"],["intalls","installs"],["intances","instances"],["intantiate","instantiate"],["intantiating","instantiating"],["inteaction","interaction"],["intead","instead"],["inteded","intended"],["intedned","intended"],["inteface","interface"],["intefere","interfere"],["intefered","interfered"],["inteference","interference"],["integarte","integrate"],["integarted","integrated"],["integartes","integrates"],["integated","integrated"],["integates","integrates"],["integating","integrating"],["integation","integration"],["integations","integrations"],["integeral","integral"],["integere","integer"],["integreated","integrated"],["integrety","integrity"],["integrey","integrity"],["intelectual","intellectual"],["intelegence","intelligence"],["intelegent","intelligent"],["intelegently","intelligently"],["inteligability","intelligibility"],["inteligable","intelligible"],["inteligance","intelligence"],["inteligantly","intelligently"],["inteligence","intelligence"],["inteligent","intelligent"],["intelisense","intellisense"],["intelligable","intelligible"],["intemediary","intermediary"],["intenal","internal"],["intenational","international"],["intendet","intended"],["inteneded","intended"],["intenisty","intensity"],["intension","intention"],["intensional","intentional"],["intensionally","intentionally"],["intensionaly","intentionally"],["intentation","indentation"],["intentended","intended"],["intentially","intentionally"],["intentialy","intentionally"],["intentionaly","intentionally"],["intentionly","intentionally"],["intepolate","interpolate"],["intepolated","interpolated"],["intepolates","interpolates"],["intepret","interpret"],["intepretable","interpretable"],["intepretation","interpretation"],["intepretations","interpretations"],["intepretator","interpreter"],["intepretators","interpreters"],["intepreted","interpreted"],["intepreter","interpreter"],["intepreter-based","interpreter-based"],["intepreters","interpreters"],["intepretes","interprets"],["intepreting","interpreting"],["intepretor","interpreter"],["intepretors","interpreters"],["inteprets","interprets"],["inter-operability","interoperability"],["interace","interface"],["interaces","interfaces"],["interacive","interactive"],["interacively","interactively"],["interacsion","interaction"],["interacsions","interactions"],["interactionn","interaction"],["interactionns","interactions"],["interactiv","interactive"],["interactivly","interactively"],["interactuable","interactive"],["interafce","interface"],["interakt","interact"],["interaktion","interaction"],["interaktions","interactions"],["interaktive","interactively"],["interaktively","interactively"],["interaktivly","interactively"],["interaly","internally"],["interanl","internal"],["interanlly","internally"],["interate","iterate"],["interational","international"],["interative","interactive"],["interatively","interactively"],["interator","iterator"],["interators","iterators"],["interaxction","interaction"],["interaxctions","interactions"],["interaxtion","interaction"],["interaxtions","interactions"],["intercahnge","interchange"],["intercahnged","interchanged"],["intercation","interaction"],["interchage","interchange"],["interchangable","interchangeable"],["interchangably","interchangeably"],["interchangeble","interchangeable"],["intercollegate","intercollegiate"],["intercontinential","intercontinental"],["intercontinetal","intercontinental"],["interdependant","interdependent"],["interecptor","interceptor"],["intereested","interested"],["intereference","interference"],["intereferences","interferences"],["interelated","interrelated"],["interelaved","interleaved"],["interepolate","interpolate"],["interepolated","interpolated"],["interepolates","interpolates"],["interepolating","interpolating"],["interepolation","interpolation"],["interepret","interpret"],["interepretation","interpretation"],["interepretations","interpretations"],["interepreted","interpreted"],["interepreting","interpreting"],["intereprets","interprets"],["interept","intercept"],["interesct","intersect"],["interescted","intersected"],["interescting","intersecting"],["interesction","intersection"],["interesctions","intersections"],["interescts","intersects"],["interesect","intersect"],["interesected","intersected"],["interesecting","intersecting"],["interesection","intersection"],["interesections","intersections"],["interesects","intersects"],["intereset","interest"],["intereseted","interested"],["intereseting","interesting"],["interesing","interesting"],["interespersed","interspersed"],["interesseted","interested"],["interesst","interest"],["interessted","interested"],["interessting","interesting"],["intereview","interview"],["interfal","interval"],["interfals","intervals"],["interfave","interface"],["interfaves","interfaces"],["interfcae","interface"],["interfcaes","interfaces"],["interfear","interfere"],["interfearence","interference"],["interfearnce","interference"],["interfer","interfere"],["interferance","interference"],["interferd","interfered"],["interfereing","interfering"],["interfernce","interference"],["interferred","interfered"],["interferring","interfering"],["interfers","interferes"],["intergated","integrated"],["interger's","integer's"],["interger","integer"],["intergerated","integrated"],["intergers","integers"],["intergrate","integrate"],["intergrated","integrated"],["intergrates","integrates"],["intergrating","integrating"],["intergration","integration"],["intergrations","integrations"],["interit","inherit"],["interitance","inheritance"],["interited","inherited"],["interiting","inheriting"],["interits","inherits"],["interliveing","interleaving"],["interlly","internally"],["intermediat","intermediate"],["intermeidate","intermediate"],["intermidiate","intermediate"],["intermitent","intermittent"],["intermittant","intermittent"],["intermperance","intemperance"],["internaly","internally"],["internatinal","international"],["internatioanl","international"],["internation","international"],["internel","internal"],["internels","internals"],["internface","interface"],["interogators","interrogators"],["interopeable","interoperable"],["interoprability","interoperability"],["interperated","interpreted"],["interpert","interpret"],["interpertation","interpretation"],["interpertations","interpretations"],["interperted","interpreted"],["interperter","interpreter"],["interperters","interpreters"],["interperting","interpreting"],["interpertive","interpretive"],["interperts","interprets"],["interpet","interpret"],["interpetation","interpretation"],["interpeted","interpreted"],["interpeter","interpreter"],["interpeters","interpreters"],["interpeting","interpreting"],["interpets","interprets"],["interploate","interpolate"],["interploated","interpolated"],["interploates","interpolates"],["interploatin","interpolating"],["interploation","interpolation"],["interpolaed","interpolated"],["interpolaion","interpolation"],["interpolaiton","interpolation"],["interpolar","interpolator"],["interpolayed","interpolated"],["interporation","interpolation"],["interporations","interpolations"],["interprate","interpret"],["interprated","interpreted"],["interpreation","interpretation"],["interprerter","interpreter"],["interpretated","interpreted"],["interprete","interpret"],["interpretes","interprets"],["interpretet","interpreted"],["interpretion","interpretation"],["interpretions","interpretations"],["interpretor","interpreter"],["interprett","interpret"],["interpretted","interpreted"],["interpretter","interpreter"],["interpretting","interpreting"],["interract","interact"],["interracting","interacting"],["interractive","interactive"],["interracts","interacts"],["interrest","interest"],["interrested","interested"],["interresting","interesting"],["interrface","interface"],["interrim","interim"],["interript","interrupt"],["interrput","interrupt"],["interrputed","interrupted"],["interrrupt","interrupt"],["interrrupted","interrupted"],["interrrupting","interrupting"],["interrrupts","interrupts"],["interrtups","interrupts"],["interrugum","interregnum"],["interrum","interim"],["interrup","interrupt"],["interruped","interrupted"],["interruping","interrupting"],["interrups","interrupts"],["interruptable","interruptible"],["interruptors","interrupters"],["interruptted","interrupted"],["interrut","interrupt"],["interrutps","interrupts"],["interscetion","intersection"],["intersecct","intersect"],["interseccted","intersected"],["interseccting","intersecting"],["intersecction","intersection"],["interseccts","intersects"],["intersecrion","intersection"],["intersecton","intersection"],["intersectons","intersections"],["intersparsed","interspersed"],["interst","interest"],["intersted","interested"],["intersting","interesting"],["intersts","interests"],["intertaining","entertaining"],["intertia","inertia"],["intertial","inertial"],["interupt","interrupt"],["interupted","interrupted"],["interupting","interrupting"],["interupts","interrupts"],["interuupt","interrupt"],["intervall","interval"],["intervalls","intervals"],["interveening","intervening"],["intervines","intervenes"],["intesity","intensity"],["inteval","interval"],["intevals","intervals"],["intevene","intervene"],["intger","integer"],["intgers","integers"],["intgral","integral"],["inthe","in the"],["intiailise","initialise"],["intiailised","initialised"],["intiailiseing","initialising"],["intiailiser","initialiser"],["intiailises","initialises"],["intiailising","initialising"],["intiailize","initialize"],["intiailized","initialized"],["intiailizeing","initializing"],["intiailizer","initializer"],["intiailizes","initializes"],["intiailizing","initializing"],["intial","initial"],["intiale","initial"],["intialisation","initialisation"],["intialise","initialise"],["intialised","initialised"],["intialiser","initialiser"],["intialisers","initialisers"],["intialises","initialises"],["intialising","initialising"],["intialistion","initialisation"],["intializating","initializing"],["intialization","initialization"],["intializaze","initialize"],["intialize","initialize"],["intialized","initialized"],["intializer","initializer"],["intializers","initializers"],["intializes","initializes"],["intializing","initializing"],["intializtion","initialization"],["intialled","initialled"],["intiallisation","initialisation"],["intiallisations","initialisations"],["intiallised","initialised"],["intiallization","initialization"],["intiallizations","initializations"],["intiallized","initialized"],["intiallly","initially"],["intially","initially"],["intials","initials"],["intialse","initialise"],["intialsed","initialised"],["intialsing","initialising"],["intialte","initialise"],["intialy","initially"],["intialze","initialize"],["intialzed","initialized"],["intialzing","initializing"],["inticement","enticement"],["intiger","integer"],["intiial","initial"],["intiialise","initialise"],["intiialize","initialize"],["intilising","initialising"],["intilizing","initializing"],["intimite","intimate"],["intinite","infinite"],["intitial","initial"],["intitialization","initialization"],["intitialize","initialize"],["intitialized","initialized"],["intitials","initials"],["intity","entity"],["intot","into"],["intoto","into"],["intpreter","interpreter"],["intput","input"],["intputs","inputs"],["intraversion","introversion"],["intravert","introvert"],["intraverts","introverts"],["intrduced","introduced"],["intreeg","intrigue"],["intreeged","intrigued"],["intreeging","intriguing"],["intreegued","intrigued"],["intreeguing","intriguing"],["intreface","interface"],["intregral","integral"],["intrerrupt","interrupt"],["intresst","interest"],["intressted","interested"],["intressting","interesting"],["intrested","interested"],["intresting","interesting"],["intriduce","introduce"],["intriduced","introduced"],["intriduction","introduction"],["intrisinc","intrinsic"],["intrisincs","intrinsics"],["introducted","introduced"],["introductionary","introductory"],["introdued","introduced"],["introduse","introduce"],["introdused","introduced"],["introduses","introduces"],["introdusing","introducing"],["introsepectable","introspectable"],["introsepection","introspection"],["intrrupt","interrupt"],["intrrupted","interrupted"],["intrrupting","interrupting"],["intrrupts","interrupts"],["intruction","instruction"],["intructional","instructional"],["intructions","instructions"],["intruduced","introduced"],["intruducing","introducing"],["intrument","instrument"],["intrumental","instrumental"],["intrumented","instrumented"],["intrumenting","instrumenting"],["intruments","instruments"],["intrusted","entrusted"],["intstead","instead"],["intstructed","instructed"],["intstructer","instructor"],["intstructing","instructing"],["intstruction","instruction"],["intstructional","instructional"],["intstructions","instructions"],["intstructor","instructor"],["intstructs","instructs"],["intterrupt","interrupt"],["intterupt","interrupt"],["intterupted","interrupted"],["intterupting","interrupting"],["intterupts","interrupts"],["intuative","intuitive"],["inturpratasion","interpretation"],["inturpratation","interpretation"],["inturprett","interpret"],["intutive","intuitive"],["intutively","intuitively"],["inudstry","industry"],["inut","input"],["invaid","invalid"],["invaild","invalid"],["invaildate","invalidate"],["invailid","invalid"],["invalaid","invalid"],["invald","invalid"],["invaldates","invalidates"],["invalde","invalid"],["invalidatiopn","invalidation"],["invalide","invalid"],["invalidiate","invalidate"],["invalidte","invalidate"],["invalidted","invalidated"],["invalidtes","invalidates"],["invalidting","invalidating"],["invalidtion","invalidation"],["invalied","invalid"],["invalud","invalid"],["invarient","invariant"],["invarients","invariants"],["invarinat","invariant"],["invarinats","invariants"],["inventer","inventor"],["inverded","inverted"],["inverion","inversion"],["inverions","inversions"],["invertedd","inverted"],["invertibrates","invertebrates"],["invertion","inversion"],["invertions","inversions"],["inverval","interval"],["inveryed","inverted"],["invesitgated","investigated"],["invesitgating","investigating"],["invesitgation","investigation"],["invesitgations","investigations"],["investingate","investigate"],["inveting","inverting"],["invetory","inventory"],["inviation","invitation"],["invididual","individual"],["invidivual","individual"],["invidual","individual"],["invidually","individually"],["invisble","invisible"],["invisblity","invisibility"],["invisiable","invisible"],["invisibile","invisible"],["invisivble","invisible"],["invlaid","invalid"],["invlid","invalid"],["invlisible","invisible"],["invlove","involve"],["invloved","involved"],["invloves","involves"],["invocaition","invocation"],["invokable","invocable"],["invokation","invocation"],["invokations","invocations"],["invokve","invoke"],["invokved","invoked"],["invokves","invokes"],["invokving","invoking"],["involvment","involvement"],["invovle","involve"],["invovled","involved"],["invovles","involves"],["invovling","involving"],["ioclt","ioctl"],["iomaped","iomapped"],["ionde","inode"],["iplementation","implementation"],["ipmrovement","improvement"],["ipmrovements","improvements"],["iput","input"],["ireelevant","irrelevant"],["irelevent","irrelevant"],["iresistable","irresistible"],["iresistably","irresistibly"],["iresistible","irresistible"],["iresistibly","irresistibly"],["iritable","irritable"],["iritate","irritate"],["iritated","irritated"],["iritating","irritating"],["ironicly","ironically"],["irradate","irradiate"],["irradated","irradiated"],["irradates","irradiates"],["irradating","irradiating"],["irradation","irradiation"],["irraditate","irradiate"],["irraditated","irradiated"],["irraditates","irradiates"],["irraditating","irradiating"],["irregularties","irregularities"],["irregulier","irregular"],["irregulierties","irregularities"],["irrelavent","irrelevant"],["irrelevent","irrelevant"],["irrelvant","irrelevant"],["irreplacable","irreplaceable"],["irreplacalbe","irreplaceable"],["irreproducable","irreproducible"],["irresepective","irrespective"],["irresistable","irresistible"],["irresistably","irresistibly"],["irreversable","irreversible"],["is'nt","isn't"],["isalha","isalpha"],["isconnection","isconnected"],["iscrated","iscreated"],["iself","itself"],["iselfe","itself"],["iserting","inserting"],["isimilar","similar"],["isloation","isolation"],["ismas","isthmus"],["isn;t","isn't"],["isnpiron","inspiron"],["isnt'","isn't"],["isnt","isn't"],["isnt;","isn't"],["isntalation","installation"],["isntalations","installations"],["isntallation","installation"],["isntallations","installations"],["isntance","instance"],["isntances","instances"],["isotrophically","isotropically"],["ispatches","dispatches"],["isplay","display"],["Israelies","Israelis"],["isse","issue"],["isses","issues"],["isssue","issue"],["isssued","issued"],["isssues","issues"],["issueing","issuing"],["istalling","installing"],["istance","instance"],["istead","instead"],["istened","listened"],["istener","listener"],["isteners","listeners"],["istening","listening"],["isue","issue"],["iteartor","iterator"],["iteator","iterator"],["iteger","integer"],["itegral","integral"],["itegrals","integrals"],["iten","item"],["itens","items"],["itention","intention"],["itentional","intentional"],["itentionally","intentionally"],["itentionaly","intentionally"],["iteraion","iteration"],["iteraions","iterations"],["iteratable","iterable"],["iterater","iterator"],["iteraterate","iterate"],["iteratered","iterated"],["iteratior","iterator"],["iteratiors","iterators"],["iteratons","iterations"],["itereating","iterating"],["iterface","interface"],["iterfaces","interfaces"],["iternations","iterations"],["iterpreter","interpreter"],["iterration","iteration"],["iterrations","iterations"],["iterrupt","interrupt"],["iterstion","iteration"],["iterstions","iterations"],["itertation","iteration"],["iteself","itself"],["itesm","items"],["itheir","their"],["itheirs","theirs"],["itialise","initialise"],["itialised","initialised"],["itialises","initialises"],["itialising","initialising"],["itialize","initialize"],["itialized","initialized"],["itializes","initializes"],["itializing","initializing"],["itnerest","interest"],["itnerface","interface"],["itnerfaces","interfaces"],["itnernal","internal"],["itnerprelation","interpretation"],["itnerpret","interpret"],["itnerpretation","interpretation"],["itnerpretaton","interpretation"],["itnerpreted","interpreted"],["itnerpreter","interpreter"],["itnerpreting","interpreting"],["itnerprets","interprets"],["itnervals","intervals"],["itnroduced","introduced"],["itsef","itself"],["itsel","itself"],["itselfs","itself"],["itselt","itself"],["itselv","itself"],["itsems","items"],["itslef","itself"],["itslev","itself"],["itsself","itself"],["itterate","iterate"],["itterated","iterated"],["itterates","iterates"],["itterating","iterating"],["itteration","iteration"],["itterations","iterations"],["itterative","iterative"],["itterator","iterator"],["itterators","iterators"],["iunior","junior"],["ivalid","invalid"],["ivocation","invocation"],["ivoked","invoked"],["iwithout","without"],["iwll","will"],["iwth","with"],["jagid","jagged"],["jagwar","jaguar"],["januar","January"],["janurary","January"],["Januray","January"],["japanease","japanese"],["japaneese","Japanese"],["Japanes","Japanese"],["japanses","Japanese"],["jaques","jacques"],["javacript","javascript"],["javascipt","javascript"],["javasciript","javascript"],["javascritp","javascript"],["javascropt","javascript"],["javasript","javascript"],["javasrript","javascript"],["javescript","javascript"],["javsscript","javascript"],["jeapardy","jeopardy"],["jeffies","jiffies"],["jekins","Jenkins"],["jelous","jealous"],["jelousy","jealousy"],["jelusey","jealousy"],["jenkin","Jenkins"],["jenkkins","Jenkins"],["jenkns","Jenkins"],["jepordize","jeopardize"],["jewllery","jewellery"],["jhondoe","johndoe"],["jist","gist"],["jitterr","jitter"],["jitterring","jittering"],["jodpers","jodhpurs"],["Johanine","Johannine"],["joineable","joinable"],["joinning","joining"],["jont","joint"],["jonts","joints"],["jornal","journal"],["jorunal","journal"],["Jospeh","Joseph"],["jossle","jostle"],["jouney","journey"],["journied","journeyed"],["journies","journeys"],["joystik","joystick"],["jscipt","jscript"],["jstu","just"],["jsut","just"],["juadaism","Judaism"],["juadism","Judaism"],["judical","judicial"],["judisuary","judiciary"],["juducial","judicial"],["juge","judge"],["juipter","Jupiter"],["jumo","jump"],["jumoed","jumped"],["jumpimng","jumping"],["jupyther","Jupyter"],["juristiction","jurisdiction"],["juristictions","jurisdictions"],["jus","just"],["justfied","justified"],["justication","justification"],["justifed","justified"],["justs","just"],["juxt","just"],["juxtification","justification"],["juxtifications","justifications"],["juxtified","justified"],["juxtifies","justifies"],["juxtifying","justifying"],["kakfa","Kafka"],["kazakstan","Kazakhstan"],["keep-alives","keep-alive"],["keept","kept"],["kenerl","kernel"],["kenerls","kernels"],["kenrel","kernel"],["kenrels","kernels"],["kepping","keeping"],["kepps","keeps"],["kerenl","kernel"],["kerenls","kernels"],["kernal","kernel"],["kernals","kernels"],["kernerl","kernel"],["kernerls","kernels"],["keword","keyword"],["kewords","keywords"],["kewword","keyword"],["kewwords","keywords"],["keybaord","keyboard"],["keybaords","keyboards"],["keyboaard","keyboard"],["keyboaards","keyboards"],["keyboad","keyboard"],["keyboads","keyboards"],["keybooard","keyboard"],["keybooards","keyboards"],["keyborad","keyboard"],["keyborads","keyboards"],["keybord","keyboard"],["keybords","keyboards"],["keybroad","keyboard"],["keybroads","keyboards"],["keyevente","keyevent"],["keyords","keywords"],["keyoutch","keytouch"],["keyowrd","keyword"],["keypair","key pair"],["keypairs","key pairs"],["keyservers","key servers"],["keystokes","keystrokes"],["keyward","keyword"],["keywoards","keywords"],["keywork","keyword"],["keyworkd","keyword"],["keyworkds","keywords"],["keywors","keywords"],["keywprd","keyword"],["kindergarden","kindergarten"],["kindgergarden","kindergarten"],["kindgergarten","kindergarten"],["kinf","kind"],["kinfs","kinds"],["kinnect","Kinect"],["klenex","kleenex"],["klick","click"],["klicked","clicked"],["klicks","clicks"],["klunky","clunky"],["knive","knife"],["kno","know"],["knowladge","knowledge"],["knowlage","knowledge"],["knowlageable","knowledgeable"],["knowlegde","knowledge"],["knowlege","knowledge"],["knowlegeabel","knowledgeable"],["knowlegeable","knowledgeable"],["knwo","know"],["knwoing","knowing"],["knwoingly","knowingly"],["knwon","known"],["knwos","knows"],["kocalized","localized"],["konstant","constant"],["konstants","constants"],["konw","know"],["konwn","known"],["konws","knows"],["koordinate","coordinate"],["koordinates","coordinates"],["kown","known"],["kubenates","Kubernetes"],["kubenernetes","Kubernetes"],["kubenertes","Kubernetes"],["kubenetes","Kubernetes"],["kubenretes","Kubernetes"],["kuberenetes","Kubernetes"],["kuberentes","Kubernetes"],["kuberetes","Kubernetes"],["kubermetes","Kubernetes"],["kubernates","Kubernetes"],["kubernests","Kubernetes"],["kubernete","Kubernetes"],["kuberntes","Kubernetes"],["kwno","know"],["kwoledgebase","knowledge base"],["kyrillic","cyrillic"],["labbel","label"],["labbeled","labeled"],["labbels","labels"],["labed","labeled"],["labeld","labelled"],["labirinth","labyrinth"],["lable","label"],["lablel","label"],["lablels","labels"],["lables","labels"],["labouriously","laboriously"],["labratory","laboratory"],["lagacies","legacies"],["lagacy","legacy"],["laguage","language"],["laguages","languages"],["laguague","language"],["laguagues","languages"],["laiter","later"],["lamda","lambda"],["lamdas","lambdas"],["lanaguage","language"],["lanaguge","language"],["lanaguges","languages"],["lanagugs","languages"],["lanauge","language"],["langage","language"],["langauage","language"],["langauge","language"],["langauges","languages"],["langeuage","language"],["langeuagesection","languagesection"],["langht","length"],["langhts","lengths"],["langth","length"],["langths","lengths"],["languace","language"],["languaces","languages"],["languae","language"],["languaes","languages"],["language-spacific","language-specific"],["languahe","language"],["languahes","languages"],["languaje","language"],["languajes","languages"],["langual","lingual"],["languale","language"],["languales","languages"],["langualge","language"],["langualges","languages"],["languange","language"],["languanges","languages"],["languaqe","language"],["languaqes","languages"],["languate","language"],["languates","languages"],["languauge","language"],["languauges","languages"],["languege","language"],["langueges","languages"],["langugae","language"],["langugaes","languages"],["langugage","language"],["langugages","languages"],["languge","language"],["languges","languages"],["langugue","language"],["langugues","languages"],["lanich","launch"],["lanuage","language"],["lanuch","launch"],["lanuched","launched"],["lanuches","launches"],["lanuching","launching"],["lanugage","language"],["lanugages","languages"],["laod","load"],["laoded","loaded"],["laoding","loading"],["laods","loads"],["laout","layout"],["larg","large"],["largst","largest"],["larrry","larry"],["lastes","latest"],["lastr","last"],["latets","latest"],["lating","latin"],["latitide","latitude"],["latitue","latitude"],["latitute","latitude"],["latops","laptops"],["latset","latest"],["lattitude","latitude"],["lauch","launch"],["lauched","launched"],["laucher","launcher"],["lauches","launches"],["lauching","launching"],["lauguage","language"],["launck","launch"],["launhed","launched"],["lavae","larvae"],["layed","laid"],["layou","layout"],["lazer","laser"],["laziliy","lazily"],["lazyness","laziness"],["lcoally","locally"],["lcoation","location"],["lcuase","clause"],["leaast","least"],["leace","leave"],["leack","leak"],["leagacy","legacy"],["leagal","legal"],["leagalise","legalise"],["leagality","legality"],["leagalize","legalize"],["leagcy","legacy"],["leage","league"],["leagel","legal"],["leagelise","legalise"],["leagelity","legality"],["leagelize","legalize"],["leageue","league"],["leagl","legal"],["leaglise","legalise"],["leaglity","legality"],["leaglize","legalize"],["leapyear","leap year"],["leapyears","leap years"],["leary","leery"],["leaset","least"],["leasy","least"],["leathal","lethal"],["leats","least"],["leaveing","leaving"],["leavong","leaving"],["lefted","left"],["legac","legacy"],["legact","legacy"],["legalimate","legitimate"],["legasy","legacy"],["legel","legal"],["leggacies","legacies"],["leggacy","legacy"],["leght","length"],["leghts","lengths"],["legitamate","legitimate"],["legitimiately","legitimately"],["legitmate","legitimate"],["legnth","length"],["legth","length"],["legths","lengths"],["leibnitz","leibniz"],["leightweight","lightweight"],["lene","lens"],["lenggth","length"],["lengh","length"],["lenghs","lengths"],["lenght","length"],["lenghten","lengthen"],["lenghtend","lengthened"],["lenghtened","lengthened"],["lenghtening","lengthening"],["lenghth","length"],["lenghthen","lengthen"],["lenghths","lengths"],["lenghthy","lengthy"],["lenghtly","lengthy"],["lenghts","lengths"],["lenghty","lengthy"],["lengt","length"],["lengten","lengthen"],["lengtext","longtext"],["lengthes","lengths"],["lengthh","length"],["lengts","lengths"],["leniant","lenient"],["leninent","lenient"],["lentgh","length"],["lentghs","lengths"],["lenth","length"],["lenths","lengths"],["leran","learn"],["leraned","learned"],["lerans","learns"],["lessson","lesson"],["lesssons","lessons"],["lesstiff","LessTif"],["letgitimate","legitimate"],["letmost","leftmost"],["leutenant","lieutenant"],["levaridge","leverage"],["levetate","levitate"],["levetated","levitated"],["levetates","levitates"],["levetating","levitating"],["levl","level"],["levle","level"],["lexial","lexical"],["lexigraphic","lexicographic"],["lexigraphical","lexicographical"],["lexigraphically","lexicographically"],["leyer","layer"],["leyered","layered"],["leyering","layering"],["leyers","layers"],["liares","liars"],["liasion","liaison"],["liason","liaison"],["liasons","liaisons"],["libarary","library"],["libaries","libraries"],["libary","library"],["libell","libel"],["liberaries","libraries"],["liberary","library"],["liberoffice","libreoffice"],["liberry","library"],["libgng","libpng"],["libguistic","linguistic"],["libguistics","linguistics"],["libitarianisn","libertarianism"],["libraarie","library"],["libraaries","libraries"],["libraary","library"],["librabarie","library"],["librabaries","libraries"],["librabary","library"],["librabie","library"],["librabies","libraries"],["librabrie","library"],["librabries","libraries"],["librabry","library"],["libraby","library"],["libraie","library"],["libraier","library"],["libraies","libraries"],["libraiesr","libraries"],["libraire","library"],["libraires","libraries"],["librairies","libraries"],["librairy","library"],["libralie","library"],["libralies","libraries"],["libraly","library"],["libraray","library"],["libraris","libraries"],["librarries","libraries"],["librarry","library"],["libraryes","libraries"],["libratie","library"],["libraties","libraries"],["libraty","library"],["libray","library"],["librayr","library"],["libreoffie","libreoffice"],["libreoficekit","libreofficekit"],["libreries","libraries"],["librery","library"],["libries","libraries"],["librraies","libraries"],["librraries","libraries"],["librrary","library"],["librray","library"],["libstc++","libstdc++"],["licate","locate"],["licated","located"],["lication","location"],["lications","locations"],["licenceing","licencing"],["licese","license"],["licesne","license"],["licesnes","licenses"],["licesning","licensing"],["licesnse","license"],["licesnses","licenses"],["licesnsing","licensing"],["licsense","license"],["licsenses","licenses"],["licsensing","licensing"],["lieing","lying"],["liek","like"],["liekd","liked"],["lient","client"],["lients","clients"],["liesure","leisure"],["lieuenant","lieutenant"],["liev","live"],["lieved","lived"],["lifceycle","lifecycle"],["lifecyle","lifecycle"],["lifes","lives"],["lifeycle","lifecycle"],["liftime","lifetime"],["lighing","lighting"],["lightbulp","lightbulb"],["lightweigh","lightweight"],["lightwieght","lightweight"],["lightwight","lightweight"],["lightyear","light year"],["lightyears","light years"],["ligth","light"],["ligthing","lighting"],["ligths","lights"],["ligthweight","lightweight"],["ligthweights","lightweights"],["liitle","little"],["likeley","likely"],["likelly","likely"],["likelyhood","likelihood"],["likewis","likewise"],["likey","likely"],["liklelihood","likelihood"],["likley","likely"],["likly","likely"],["lileral","literal"],["limiation","limitation"],["limiations","limitations"],["liminted","limited"],["limitaion","limitation"],["limite","limit"],["limitiaion","limitation"],["limitiaions","limitations"],["limitiation","limitation"],["limitiations","limitations"],["limitied","limited"],["limitier","limiter"],["limitiers","limiters"],["limitiing","limiting"],["limitimg","limiting"],["limition","limitation"],["limitions","limitations"],["limitis","limits"],["limititation","limitation"],["limititations","limitations"],["limitited","limited"],["limititer","limiter"],["limititers","limiters"],["limititing","limiting"],["limitted","limited"],["limitter","limiter"],["limitting","limiting"],["limitts","limits"],["limk","link"],["limted","limited"],["limti","limit"],["limts","limits"],["linaer","linear"],["linar","linear"],["linarly","linearly"],["lincese","license"],["lincesed","licensed"],["linceses","licenses"],["lineary","linearly"],["linerisation","linearisation"],["linerisations","linearisations"],["lineseach","linesearch"],["lineseaches","linesearches"],["liness","lines"],["linewdith","linewidth"],["linez","lines"],["lingth","length"],["linheight","lineheight"],["linkfy","linkify"],["linnaena","linnaean"],["lintain","lintian"],["linz","lines"],["lippizaner","lipizzaner"],["liquify","liquefy"],["lisetning","listening"],["lising","listing"],["listapck","listpack"],["listbbox","listbox"],["listeing","listening"],["listeneing","listening"],["listeneres","listeners"],["listenes","listens"],["listensers","listeners"],["listenter","listener"],["listenters","listeners"],["listernes","listeners"],["listner","listener"],["listners","listeners"],["litaral","literal"],["litarally","literally"],["litarals","literals"],["litature","literature"],["liteautrue","literature"],["literaly","literally"],["literture","literature"],["litle","little"],["litquid","liquid"],["litquids","liquids"],["lits","list"],["litte","little"],["littel","little"],["littel-endian","little-endian"],["littele","little"],["littelry","literally"],["litteral","literal"],["litterally","literally"],["litterals","literals"],["litterate","literate"],["litterature","literature"],["liuke","like"],["liveing","living"],["livel","level"],["livetime","lifetime"],["livley","lively"],["lizens","license"],["lizense","license"],["lizensing","licensing"],["lke","like"],["llinear","linear"],["lmits","limits"],["loaader","loader"],["loacal","local"],["loacality","locality"],["loacally","locally"],["loacation","location"],["loaction","location"],["loactions","locations"],["loadig","loading"],["loadin","loading"],["loadning","loading"],["locae","locate"],["locaes","locates"],["locahost","localhost"],["locaiing","locating"],["locailty","locality"],["locaing","locating"],["locaion","location"],["locaions","locations"],["locaise","localise"],["locaised","localised"],["locaiser","localiser"],["locaises","localises"],["locaite","locate"],["locaites","locates"],["locaiting","locating"],["locaition","location"],["locaitions","locations"],["locaiton","location"],["locaitons","locations"],["locaize","localize"],["locaized","localized"],["locaizer","localizer"],["locaizes","localizes"],["localation","location"],["localed","located"],["localtion","location"],["localtions","locations"],["localy","locally"],["localzation","localization"],["locatins","locations"],["loccked","locked"],["locgical","logical"],["lockingf","locking"],["lodable","loadable"],["loded","loaded"],["loder","loader"],["loders","loaders"],["loding","loading"],["loev","love"],["logarithimic","logarithmic"],["logarithmical","logarithmically"],["logaritmic","logarithmic"],["logcal","logical"],["loggging","logging"],["logial","logical"],["logially","logically"],["logicaly","logically"],["logictech","logitech"],["logile","logfile"],["logitude","longitude"],["logitudes","longitudes"],["logoic","logic"],["logorithm","logarithm"],["logorithmic","logarithmic"],["logorithms","logarithms"],["logrithm","logarithm"],["logrithms","logarithms"],["logwritter","logwriter"],["loign","login"],["loigns","logins"],["lokal","local"],["lokale","locale"],["lokales","locales"],["lokaly","locally"],["lolal","total"],["lolerant","tolerant"],["lond","long"],["lonelyness","loneliness"],["long-runnign","long-running"],["longers","longer"],["longitudonal","longitudinal"],["longitue","longitude"],["longitutde","longitude"],["longitute","longitude"],["longst","longest"],["longuer","longer"],["longuest","longest"],["lonley","lonely"],["looback","loopback"],["loobacks","loopbacks"],["loobpack","loopback"],["loockdown","lockdown"],["lookes","looks"],["looknig","looking"],["looop","loop"],["loopup","lookup"],["loosley","loosely"],["loosly","loosely"],["losely","loosely"],["losen","loosen"],["losened","loosened"],["lotharingen","Lothringen"],["lpatform","platform"],["luckly","luckily"],["luminose","luminous"],["luminousity","luminosity"],["lveo","love"],["lvoe","love"],["Lybia","Libya"],["maake","make"],["mabe","maybe"],["mabye","maybe"],["macack","macaque"],["macason","moccasin"],["macasons","moccasins"],["maccro","macro"],["maccros","macros"],["machanism","mechanism"],["machanisms","mechanisms"],["mached","matched"],["maches","matches"],["machettie","machete"],["machinary","machinery"],["machine-dependend","machine-dependent"],["machiness","machines"],["mackeral","mackerel"],["maco","macro"],["macor","macro"],["macors","macros"],["macpakge","package"],["macroses","macros"],["macrow","macro"],["macthing","matching"],["madantory","mandatory"],["madatory","mandatory"],["maddness","madness"],["maesure","measure"],["maesured","measured"],["maesurement","measurement"],["maesurements","measurements"],["maesures","measures"],["maesuring","measuring"],["magasine","magazine"],["magincian","magician"],["magisine","magazine"],["magizine","magazine"],["magnatiude","magnitude"],["magnatude","magnitude"],["magnificient","magnificent"],["magolia","magnolia"],["mahcine","machine"],["maibe","maybe"],["maibox","mailbox"],["mailformed","malformed"],["mailling","mailing"],["maillinglist","mailing list"],["maillinglists","mailing lists"],["mailny","mainly"],["mailstrum","maelstrom"],["mainenance","maintenance"],["maininly","mainly"],["mainling","mailing"],["maintainance","maintenance"],["maintaince","maintenance"],["maintainces","maintenances"],["maintainence","maintenance"],["maintaing","maintaining"],["maintan","maintain"],["maintanance","maintenance"],["maintance","maintenance"],["maintane","maintain"],["maintanence","maintenance"],["maintaner","maintainer"],["maintaners","maintainers"],["maintans","maintains"],["maintenace","maintenance"],["maintenence","maintenance"],["maintiain","maintain"],["maintians","maintains"],["maintinaing","maintaining"],["maintioned","mentioned"],["mairabd","MariaDB"],["mairadb","MariaDB"],["maitain","maintain"],["maitainance","maintenance"],["maitained","maintained"],["maitainers","maintainers"],["majoroty","majority"],["maka","make"],["makefle","makefile"],["makeing","making"],["makign","making"],["makretplace","marketplace"],["makro","macro"],["makros","macros"],["Malcom","Malcolm"],["maliciousally","maliciously"],["malicius","malicious"],["maliciusally","maliciously"],["maliciusly","maliciously"],["malicous","malicious"],["malicousally","maliciously"],["malicously","maliciously"],["maline","malign"],["malined","maligned"],["malining","maligning"],["malins","maligns"],["malless","malice"],["malplace","misplace"],["malplaced","misplaced"],["maltesian","Maltese"],["mamagement","management"],["mamal","mammal"],["mamalian","mammalian"],["mamento","memento"],["mamentos","mementos"],["mamory","memory"],["mamuth","mammoth"],["manafacturer","manufacturer"],["manafacturers","manufacturers"],["managament","management"],["manageed","managed"],["managemenet","management"],["managenment","management"],["managet","manager"],["managets","managers"],["managmenet","management"],["managment","management"],["manaise","mayonnaise"],["manal","manual"],["manange","manage"],["manangement","management"],["mananger","manager"],["manangers","managers"],["manaul","manual"],["manaully","manually"],["manauls","manuals"],["manaze","mayonnaise"],["mandatatory","mandatory"],["mandetory","mandatory"],["manement","management"],["maneouvre","manoeuvre"],["maneouvred","manoeuvred"],["maneouvres","manoeuvres"],["maneouvring","manoeuvring"],["manetain","maintain"],["manetained","maintained"],["manetainer","maintainer"],["manetainers","maintainers"],["manetaining","maintaining"],["manetains","maintains"],["mangaed","managed"],["mangaement","management"],["mangager","manager"],["mangagers","managers"],["mangement","management"],["mangementt","management"],["manifacture","manufacture"],["manifactured","manufactured"],["manifacturer","manufacturer"],["manifacturers","manufacturers"],["manifactures","manufactures"],["manifect","manifest"],["manipluate","manipulate"],["manipluated","manipulated"],["manipulatin","manipulating"],["manipulaton","manipulation"],["manipute","manipulate"],["maniputed","manipulated"],["maniputing","manipulating"],["manipution","manipulation"],["maniputions","manipulations"],["maniputor","manipulator"],["manisfestations","manifestations"],["maniuplate","manipulate"],["maniuplated","manipulated"],["maniuplates","manipulates"],["maniuplating","manipulating"],["maniuplation","manipulation"],["maniuplations","manipulations"],["maniuplator","manipulator"],["maniuplators","manipulators"],["mannor","manner"],["mannual","manual"],["mannually","manually"],["mannualy","manually"],["manoeuverability","maneuverability"],["manoeuvering","maneuvering"],["manouevring","manoeuvring"],["mantain","maintain"],["mantainable","maintainable"],["mantained","maintained"],["mantainer","maintainer"],["mantainers","maintainers"],["mantaining","maintaining"],["mantains","maintains"],["mantanine","maintain"],["mantanined","maintained"],["mantatory","mandatory"],["mantenance","maintenance"],["manualy","manually"],["manualyl","manually"],["manualyy","manually"],["manuell","manual"],["manuelly","manually"],["manufactuerd","manufactured"],["manufacturedd","manufactured"],["manufature","manufacture"],["manufatured","manufactured"],["manufaturing","manufacturing"],["manufaucturing","manufacturing"],["manulally","manually"],["manule","manual"],["manuley","manually"],["manully","manually"],["manuly","manually"],["manupilations","manipulations"],["manupulate","manipulate"],["manupulated","manipulated"],["manupulates","manipulates"],["manupulating","manipulating"],["manupulation","manipulation"],["manupulations","manipulations"],["manuver","maneuver"],["manyal","manual"],["manyally","manually"],["manyals","manuals"],["mapable","mappable"],["mape","map"],["maped","mapped"],["maping","mapping"],["mapings","mappings"],["mapp","map"],["mappeds","mapped"],["mappeed","mapped"],["mappping","mapping"],["mapppings","mappings"],["margings","margins"],["mariabd","MariaDB"],["mariage","marriage"],["marjority","majority"],["marketting","marketing"],["markey","marquee"],["markeys","marquees"],["marmelade","marmalade"],["marrage","marriage"],["marraige","marriage"],["marrtyred","martyred"],["marryied","married"],["marshmellow","marshmallow"],["marshmellows","marshmallows"],["marter","martyr"],["masakist","masochist"],["mashetty","machete"],["mashine","machine"],["mashined","machined"],["mashines","machines"],["masia","messiah"],["masicer","massacre"],["masiff","massif"],["maskerading","masquerading"],["maskeraid","masquerade"],["masos","macos"],["masquarade","masquerade"],["masqurade","masquerade"],["Massachusettes","Massachusetts"],["Massachussets","Massachusetts"],["Massachussetts","Massachusetts"],["massagebox","messagebox"],["massectomy","mastectomy"],["massewer","masseur"],["massmedia","mass media"],["massoose","masseuse"],["masster","master"],["masteer","master"],["masterbation","masturbation"],["mastquerade","masquerade"],["mata-data","meta-data"],["matadata","metadata"],["matainer","maintainer"],["matainers","maintainers"],["mataphysical","metaphysical"],["matatable","metatable"],["matc","match"],["matchies","matches"],["matchign","matching"],["matchin","matching"],["matchs","matches"],["matchter","matcher"],["matcing","matching"],["mateiral","material"],["mateirals","materials"],["matemathical","mathematical"],["materaial","material"],["materaials","materials"],["materail","material"],["materails","materials"],["materalists","materialist"],["materil","material"],["materilism","materialism"],["materilize","materialize"],["materils","materials"],["materla","material"],["materlas","materials"],["mathamatics","mathematics"],["mathces","matches"],["mathch","match"],["mathched","matched"],["mathches","matches"],["mathching","matching"],["mathcing","matching"],["mathed","matched"],["mathematicaly","mathematically"],["mathematican","mathematician"],["mathematicas","mathematics"],["mathes","matches"],["mathetician","mathematician"],["matheticians","mathematicians"],["mathimatic","mathematic"],["mathimatical","mathematical"],["mathimatically","mathematically"],["mathimatician","mathematician"],["mathimaticians","mathematicians"],["mathimatics","mathematics"],["mathing","matching"],["mathmatical","mathematical"],["mathmatically","mathematically"],["mathmatician","mathematician"],["mathmaticians","mathematicians"],["mathod","method"],["matinay","matinee"],["matix","matrix"],["matreial","material"],["matreials","materials"],["matresses","mattresses"],["matrial","material"],["matrials","materials"],["matser","master"],["matzch","match"],["mavrick","maverick"],["mawsoleum","mausoleum"],["maximice","maximize"],["maximim","maximum"],["maximimum","maximum"],["maximium","maximum"],["maximnum","maximum"],["maximnums","maximums"],["maximun","maximum"],["maxinum","maximum"],["maxium","maximum"],["maxiumum","maximum"],["maxmimum","maximum"],["maxmium","maximum"],["maxmiums","maximums"],["maxosx","macosx"],["maxumum","maximum"],["maybee","maybe"],["mayonase","mayonnaise"],["mayority","majority"],["mayu","may"],["mayybe","maybe"],["mazilla","Mozilla"],["mccarthyst","mccarthyist"],["mchanic","mechanic"],["mchanical","mechanical"],["mchanically","mechanically"],["mchanicals","mechanicals"],["mchanics","mechanics"],["mchanism","mechanism"],["mchanisms","mechanisms"],["mcroscope","microscope"],["mcroscopes","microscopes"],["mcroscopic","microscopic"],["mcroscopies","microscopies"],["mcroscopy","microscopy"],["mdification","modification"],["mdifications","modifications"],["mdified","modified"],["mdifier","modifier"],["mdifiers","modifiers"],["mdifies","modifies"],["mdify","modify"],["mdifying","modifying"],["mdoel","model"],["mdoeled","modeled"],["mdoeling","modeling"],["mdoelled","modelled"],["mdoelling","modelling"],["mdoels","models"],["meaasure","measure"],["meaasured","measured"],["meaasures","measures"],["meachanism","mechanism"],["meachanisms","mechanisms"],["meachinism","mechanism"],["meachinisms","mechanisms"],["meachnism","mechanism"],["meachnisms","mechanisms"],["meading","meaning"],["meaing","meaning"],["mealflur","millefleur"],["meanigfull","meaningful"],["meanign","meaning"],["meanin","meaning"],["meaninful","meaningful"],["meaningfull","meaningful"],["meanining","meaning"],["meaninless","meaningless"],["meaninng","meaning"],["meassurable","measurable"],["meassurably","measurably"],["meassure","measure"],["meassured","measured"],["meassurement","measurement"],["meassurements","measurements"],["meassures","measures"],["meassuring","measuring"],["measue","measure"],["measued","measured"],["measuement","measurement"],["measuements","measurements"],["measuer","measurer"],["measues","measures"],["measuing","measuring"],["measuremenet","measurement"],["measuremenets","measurements"],["measurmenet","measurement"],["measurmenets","measurements"],["measurment","measurement"],["measurments","measurements"],["meatadata","metadata"],["meatfile","metafile"],["meathod","method"],["meaure","measure"],["meaured","measured"],["meaurement","measurement"],["meaurements","measurements"],["meaurer","measurer"],["meaurers","measurers"],["meaures","measures"],["meauring","measuring"],["meausure","measure"],["meausures","measures"],["meber","member"],["mebmer","member"],["mebrain","membrane"],["mebrains","membranes"],["mebran","membrane"],["mebrans","membranes"],["mecahinsm","mechanism"],["mecahinsms","mechanisms"],["mecahnic","mechanic"],["mecahnics","mechanics"],["mecahnism","mechanism"],["mecanical","mechanical"],["mecanism","mechanism"],["mecanisms","mechanisms"],["meccob","macabre"],["mechamism","mechanism"],["mechamisms","mechanisms"],["mechananism","mechanism"],["mechancial","mechanical"],["mechandise","merchandise"],["mechanim","mechanism"],["mechanims","mechanisms"],["mechanis","mechanism"],["mechansim","mechanism"],["mechansims","mechanisms"],["mechine","machine"],["mechines","machines"],["mechinism","mechanism"],["mechnanism","mechanism"],["mechnism","mechanism"],["mechnisms","mechanisms"],["medacine","medicine"],["medai","media"],["meddo","meadow"],["meddos","meadows"],["medeival","medieval"],["medevial","medieval"],["medhod","method"],["medhods","methods"],["medievel","medieval"],["medifor","metaphor"],["medifors","metaphors"],["medioker","mediocre"],["mediphor","metaphor"],["mediphors","metaphors"],["medisinal","medicinal"],["mediterainnean","mediterranean"],["Mediteranean","Mediterranean"],["medow","meadow"],["medows","meadows"],["meeds","needs"],["meens","means"],["meerkrat","meerkat"],["meerly","merely"],["meetign","meeting"],["meganism","mechanism"],["mege","merge"],["mehcanic","mechanic"],["mehcanical","mechanical"],["mehcanically","mechanically"],["mehcanics","mechanics"],["mehod","method"],["mehodical","methodical"],["mehodically","methodically"],["mehods","methods"],["mehtod","method"],["mehtodical","methodical"],["mehtodically","methodically"],["mehtods","methods"],["meida","media"],["melancoly","melancholy"],["melieux","milieux"],["melineum","millennium"],["melineumms","millennia"],["melineums","millennia"],["melinneum","millennium"],["melinneums","millennia"],["mellineum","millennium"],["mellineums","millennia"],["mellinneum","millennium"],["mellinneums","millennia"],["membran","membrane"],["membranaphone","membranophone"],["membrans","membranes"],["memcahe","memcache"],["memcahed","memcached"],["memeasurement","measurement"],["memeber","member"],["memebered","remembered"],["memebers","members"],["memebership","membership"],["memeberships","memberships"],["memebr","member"],["memebrof","memberof"],["memebrs","members"],["mememory","memory"],["mememto","memento"],["memeory","memory"],["memer","member"],["memership","membership"],["memerships","memberships"],["memery","memory"],["memick","mimic"],["memicked","mimicked"],["memicking","mimicking"],["memics","mimics"],["memmber","member"],["memmick","mimic"],["memmicked","mimicked"],["memmicking","mimicking"],["memmics","mimics"],["memmory","memory"],["memoery","memory"],["memomry","memory"],["memor","memory"],["memoty","memory"],["memove","memmove"],["mempry","memory"],["memroy","memory"],["memwar","memoir"],["memwars","memoirs"],["memwoir","memoir"],["memwoirs","memoirs"],["menally","mentally"],["menas","means"],["menetion","mention"],["menetioned","mentioned"],["menetioning","mentioning"],["menetions","mentions"],["meni","menu"],["menioned","mentioned"],["mensioned","mentioned"],["mensioning","mentioning"],["ment","meant"],["menthods","methods"],["mentiond","mentioned"],["mentione","mentioned"],["mentionned","mentioned"],["mentionning","mentioning"],["mentionnned","mentioned"],["menual","manual"],["menue","menu"],["menues","menus"],["menutitems","menuitems"],["meraj","mirage"],["merajes","mirages"],["merang","meringue"],["mercahnt","merchant"],["mercentile","mercantile"],["merchantibility","merchantability"],["merecat","meerkat"],["merecats","meerkats"],["mergable","mergeable"],["merget","merge"],["mergge","merge"],["mergged","merged"],["mergging","merging"],["mermory","memory"],["merory","memory"],["merrors","mirrors"],["mesage","message"],["mesages","messages"],["mesaureed","measured"],["meskeeto","mosquito"],["meskeetos","mosquitoes"],["mesoneen","mezzanine"],["mesoneens","mezzanines"],["messaes","messages"],["messag","message"],["messagetqueue","messagequeue"],["messagin","messaging"],["messagoe","message"],["messags","messages"],["messagses","messages"],["messanger","messenger"],["messangers","messengers"],["messave","message"],["messeges","messages"],["messenging","messaging"],["messgae","message"],["messgaed","messaged"],["messgaes","messages"],["messge","message"],["messges","messages"],["messsage","message"],["messsages","messages"],["messure","measure"],["messured","measured"],["messurement","measurement"],["messures","measures"],["messuring","measuring"],["messurment","measurement"],["mesure","measure"],["mesured","measured"],["mesurement","measurement"],["mesurements","measurements"],["mesures","measures"],["mesuring","measuring"],["mesurment","measurement"],["meta-attrubute","meta-attribute"],["meta-attrubutes","meta-attributes"],["meta-progamming","meta-programming"],["metacharater","metacharacter"],["metacharaters","metacharacters"],["metalic","metallic"],["metalurgic","metallurgic"],["metalurgical","metallurgical"],["metalurgy","metallurgy"],["metamorphysis","metamorphosis"],["metapackge","metapackage"],["metapackges","metapackages"],["metaphore","metaphor"],["metaphoricial","metaphorical"],["metaprogamming","metaprogramming"],["metatdata","metadata"],["metdata","metadata"],["meterial","material"],["meterials","materials"],["meterologist","meteorologist"],["meterology","meteorology"],["methaphor","metaphor"],["methaphors","metaphors"],["methd","method"],["methdos","methods"],["methds","methods"],["methid","method"],["methids","methods"],["methjod","method"],["methodd","method"],["methode","method"],["methoden","methods"],["methodss","methods"],["methon","method"],["methons","methods"],["methot","method"],["methots","methods"],["metifor","metaphor"],["metifors","metaphors"],["metion","mention"],["metioned","mentioned"],["metiphor","metaphor"],["metiphors","metaphors"],["metod","method"],["metodologies","methodologies"],["metodology","methodology"],["metods","methods"],["metrig","metric"],["metrigal","metrical"],["metrigs","metrics"],["mey","may"],["meybe","maybe"],["mezmorise","mesmerise"],["mezmorised","mesmerised"],["mezmoriser","mesmeriser"],["mezmorises","mesmerises"],["mezmorising","mesmerising"],["mezmorize","mesmerize"],["mezmorized","mesmerized"],["mezmorizer","mesmerizer"],["mezmorizes","mesmerizes"],["mezmorizing","mesmerizing"],["miagic","magic"],["miagical","magical"],["mial","mail"],["mices","mice"],["Michagan","Michigan"],["micorcode","microcode"],["micorcodes","microcodes"],["Micorsoft","Microsoft"],["micoscope","microscope"],["micoscopes","microscopes"],["micoscopic","microscopic"],["micoscopies","microscopies"],["micoscopy","microscopy"],["Micosoft","Microsoft"],["micrcontroller","microcontroller"],["micrcontrollers","microcontrollers"],["microcontroler","microcontroller"],["microcontrolers","microcontrollers"],["Microfost","Microsoft"],["microntroller","microcontroller"],["microntrollers","microcontrollers"],["microoseconds","microseconds"],["micropone","microphone"],["micropones","microphones"],["microprocesspr","microprocessor"],["microprocessprs","microprocessors"],["microseond","microsecond"],["microseonds","microseconds"],["Microsft","Microsoft"],["microship","microchip"],["microships","microchips"],["Microsof","Microsoft"],["Microsofot","Microsoft"],["Micrsft","Microsoft"],["Micrsoft","Microsoft"],["middlware","middleware"],["midevil","medieval"],["midified","modified"],["midpints","midpoints"],["midpiont","midpoint"],["midpionts","midpoints"],["midpont","midpoint"],["midponts","midpoints"],["mige","midge"],["miges","midges"],["migh","might"],["migrateable","migratable"],["migth","might"],["miht","might"],["miinimisation","minimisation"],["miinimise","minimise"],["miinimised","minimised"],["miinimises","minimises"],["miinimising","minimising"],["miinimization","minimization"],["miinimize","minimize"],["miinimized","minimized"],["miinimizes","minimizes"],["miinimizing","minimizing"],["miinimum","minimum"],["mikrosecond","microsecond"],["mikroseconds","microseconds"],["milage","mileage"],["milages","mileages"],["mileau","milieu"],["milennia","millennia"],["milennium","millennium"],["mileu","milieu"],["miliary","military"],["milicious","malicious"],["miliciousally","maliciously"],["miliciously","maliciously"],["milicous","malicious"],["milicousally","maliciously"],["milicously","maliciously"],["miligram","milligram"],["milimeter","millimeter"],["milimeters","millimeters"],["milimetre","millimetre"],["milimetres","millimetres"],["milimiters","millimeters"],["milion","million"],["miliraty","military"],["milisecond","millisecond"],["miliseconds","milliseconds"],["milisecons","milliseconds"],["milivolts","millivolts"],["milktoast","milquetoast"],["milktoasts","milquetoasts"],["milleneum","millennium"],["millenia","millennia"],["millenial","millennial"],["millenialism","millennialism"],["millenials","millennials"],["millenium","millennium"],["millepede","millipede"],["milliescond","millisecond"],["milliesconds","milliseconds"],["millimiter","millimeter"],["millimiters","millimeters"],["millimitre","millimetre"],["millimitres","millimetres"],["millioniare","millionaire"],["millioniares","millionaires"],["millisencond","millisecond"],["millisenconds","milliseconds"],["milliseond","millisecond"],["milliseonds","milliseconds"],["millitant","militant"],["millitary","military"],["millon","million"],["millsecond","millisecond"],["millseconds","milliseconds"],["millsencond","millisecond"],["millsenconds","milliseconds"],["miltary","military"],["miltisite","multisite"],["milyew","milieu"],["mimach","mismatch"],["mimachd","mismatched"],["mimached","mismatched"],["mimaches","mismatches"],["mimaching","mismatching"],["mimatch","mismatch"],["mimatchd","mismatched"],["mimatched","mismatched"],["mimatches","mismatches"],["mimatching","mismatching"],["mimicing","mimicking"],["mimick","mimic"],["mimicks","mimics"],["mimimal","minimal"],["mimimum","minimum"],["mimimun","minimum"],["miminal","minimal"],["miminally","minimally"],["miminaly","minimally"],["miminise","minimise"],["miminised","minimised"],["miminises","minimises"],["miminising","minimising"],["miminize","minimize"],["miminized","minimized"],["miminizes","minimizes"],["miminizing","minimizing"],["mimmick","mimic"],["mimmicked","mimicked"],["mimmicking","mimicking"],["mimmics","mimics"],["minature","miniature"],["minerial","mineral"],["MingGW","MinGW"],["minimam","minimum"],["minimial","minimal"],["minimium","minimum"],["minimsation","minimisation"],["minimse","minimise"],["minimsed","minimised"],["minimses","minimises"],["minimsing","minimising"],["minimumm","minimum"],["minimumn","minimum"],["minimun","minimum"],["minimzation","minimization"],["minimze","minimize"],["minimzed","minimized"],["minimzes","minimizes"],["minimzing","minimizing"],["mininal","minimal"],["mininise","minimise"],["mininised","minimised"],["mininises","minimises"],["mininising","minimising"],["mininize","minimize"],["mininized","minimized"],["mininizes","minimizes"],["mininizing","minimizing"],["mininum","minimum"],["miniscule","minuscule"],["miniscully","minusculely"],["miniture","miniature"],["minium","minimum"],["miniums","minimums"],["miniumum","minimum"],["minmal","minimal"],["minmum","minimum"],["minnimum","minimum"],["minnimums","minimums"],["minsitry","ministry"],["minstries","ministries"],["minstry","ministry"],["minum","minimum"],["minumum","minimum"],["minuscle","minuscule"],["minuts","minutes"],["miplementation","implementation"],["mirconesia","micronesia"],["mircophone","microphone"],["mircophones","microphones"],["mircoscope","microscope"],["mircoscopes","microscopes"],["mircoservice","microservice"],["mircoservices","microservices"],["mircosoft","Microsoft"],["mirgate","migrate"],["mirgated","migrated"],["mirgates","migrates"],["mirometer","micrometer"],["mirometers","micrometers"],["mirored","mirrored"],["miroring","mirroring"],["mirorr","mirror"],["mirorred","mirrored"],["mirorring","mirroring"],["mirorrs","mirrors"],["mirro","mirror"],["mirroed","mirrored"],["mirrorn","mirror"],["mirrorred","mirrored"],["mis-alignement","misalignment"],["mis-alignment","misalignment"],["mis-intepret","mis-interpret"],["mis-intepreted","mis-interpreted"],["mis-match","mismatch"],["misalignement","misalignment"],["misalinged","misaligned"],["misbehaive","misbehave"],["miscallenous","miscellaneous"],["misceancellous","miscellaneous"],["miscelaneous","miscellaneous"],["miscellanious","miscellaneous"],["miscellanous","miscellaneous"],["miscelleneous","miscellaneous"],["mischeivous","mischievous"],["mischevious","mischievous"],["mischevus","mischievous"],["mischevusly","mischievously"],["mischieveous","mischievous"],["mischieveously","mischievously"],["mischievious","mischievous"],["misconfiged","misconfigured"],["Miscrosoft","Microsoft"],["misdameanor","misdemeanor"],["misdameanors","misdemeanors"],["misdemenor","misdemeanor"],["misdemenors","misdemeanors"],["miselaneous","miscellaneous"],["miselaneously","miscellaneously"],["misellaneous","miscellaneous"],["misellaneously","miscellaneously"],["misformed","malformed"],["misfourtunes","misfortunes"],["misile","missile"],["mising","missing"],["misintepret","misinterpret"],["misintepreted","misinterpreted"],["misinterpert","misinterpret"],["misinterperted","misinterpreted"],["misinterperting","misinterpreting"],["misinterperts","misinterprets"],["misinterprett","misinterpret"],["misinterpretted","misinterpreted"],["misisng","missing"],["mismach","mismatch"],["mismached","mismatched"],["mismaches","mismatches"],["mismaching","mismatching"],["mismactch","mismatch"],["mismatchd","mismatched"],["mismatich","mismatch"],["Misouri","Missouri"],["mispell","misspell"],["mispelled","misspelled"],["mispelling","misspelling"],["mispellings","misspellings"],["mispelt","misspelt"],["mispronounciation","mispronunciation"],["misquito","mosquito"],["misquitos","mosquitos"],["missable","miscible"],["missconfiguration","misconfiguration"],["missconfigure","misconfigure"],["missconfigured","misconfigured"],["missconfigures","misconfigures"],["missconfiguring","misconfiguring"],["misscounted","miscounted"],["missen","mizzen"],["missign","missing"],["missingassignement","missingassignment"],["missings","missing"],["Missisipi","Mississippi"],["Missisippi","Mississippi"],["missle","missile"],["missleading","misleading"],["missletow","mistletoe"],["missmanaged","mismanaged"],["missmatch","mismatch"],["missmatchd","mismatched"],["missmatched","mismatched"],["missmatches","mismatches"],["missmatching","mismatching"],["missonary","missionary"],["misspel","misspell"],["misssing","missing"],["misstake","mistake"],["misstaken","mistaken"],["misstakes","mistakes"],["misstype","mistype"],["misstypes","mistypes"],["missunderstood","misunderstood"],["missuse","misuse"],["missused","misused"],["missusing","misusing"],["mistatch","mismatch"],["mistatchd","mismatched"],["mistatched","mismatched"],["mistatches","mismatches"],["mistatching","mismatching"],["misteek","mystique"],["misteeks","mystiques"],["misterious","mysterious"],["mistery","mystery"],["misteryous","mysterious"],["mistic","mystic"],["mistical","mystical"],["mistics","mystics"],["mistmatch","mismatch"],["mistmatched","mismatched"],["mistmatches","mismatches"],["mistmatching","mismatching"],["mistro","maestro"],["mistros","maestros"],["mistrow","maestro"],["mistrows","maestros"],["misue","misuse"],["misued","misused"],["misuing","misusing"],["miticate","mitigate"],["miticated","mitigated"],["miticateing","mitigating"],["miticates","mitigates"],["miticating","mitigating"],["miticator","mitigator"],["mittigate","mitigate"],["miximum","maximum"],["mixted","mixed"],["mixure","mixture"],["mjor","major"],["mkae","make"],["mkaes","makes"],["mkaing","making"],["mke","make"],["mkea","make"],["mmaped","mapped"],["mmatching","matching"],["mmbers","members"],["mmnemonic","mnemonic"],["mnay","many"],["mobify","modify"],["mocrochip","microchip"],["mocrochips","microchips"],["mocrocode","microcode"],["mocrocodes","microcodes"],["mocrocontroller","microcontroller"],["mocrocontrollers","microcontrollers"],["mocrophone","microphone"],["mocrophones","microphones"],["mocroprocessor","microprocessor"],["mocroprocessors","microprocessors"],["mocrosecond","microsecond"],["mocroseconds","microseconds"],["Mocrosoft","Microsoft"],["mocule","module"],["mocules","modules"],["moddel","model"],["moddeled","modeled"],["moddelled","modelled"],["moddels","models"],["modee","mode"],["modelinng","modeling"],["modell","model"],["modellinng","modelling"],["modernination","modernization"],["moderninations","modernizations"],["moderninationz","modernizations"],["modernizationz","modernizations"],["modesettting","modesetting"],["modeul","module"],["modeuls","modules"],["modfel","model"],["modfiable","modifiable"],["modfication","modification"],["modfications","modifications"],["modfide","modified"],["modfided","modified"],["modfider","modifier"],["modfiders","modifiers"],["modfides","modifies"],["modfied","modified"],["modfieid","modified"],["modfieir","modifier"],["modfieirs","modifiers"],["modfieis","modifies"],["modfier","modifier"],["modfiers","modifiers"],["modfies","modifies"],["modfifiable","modifiable"],["modfification","modification"],["modfifications","modifications"],["modfified","modified"],["modfifier","modifier"],["modfifiers","modifiers"],["modfifies","modifies"],["modfify","modify"],["modfifying","modifying"],["modfiiable","modifiable"],["modfiication","modification"],["modfiications","modifications"],["modfitied","modified"],["modfitier","modifier"],["modfitiers","modifiers"],["modfities","modifies"],["modfity","modify"],["modfitying","modifying"],["modfiy","modify"],["modfiying","modifying"],["modfy","modify"],["modfying","modifying"],["modications","modifications"],["modidfication","modification"],["modidfications","modifications"],["modidfied","modified"],["modidfier","modifier"],["modidfiers","modifiers"],["modidfies","modifies"],["modidfy","modify"],["modidfying","modifying"],["modifable","modifiable"],["modifaction","modification"],["modifactions","modifications"],["modifation","modification"],["modifations","modifications"],["modifcation","modification"],["modifcations","modifications"],["modifciation","modification"],["modifciations","modifications"],["modifcication","modification"],["modifcications","modifications"],["modifdied","modified"],["modifdy","modify"],["modifed","modified"],["modifer","modifier"],["modifers","modifiers"],["modifes","modifies"],["modiffer","modifier"],["modiffers","modifiers"],["modifiation","modification"],["modifiations","modifications"],["modificatioon","modification"],["modificatioons","modifications"],["modificaton","modification"],["modificatons","modifications"],["modifid","modified"],["modifified","modified"],["modifify","modify"],["modifing","modifying"],["modifires","modifiers"],["modifiy","modify"],["modifiying","modifying"],["modifiyng","modifying"],["modifled","modified"],["modifler","modifier"],["modiflers","modifiers"],["modift","modify"],["modifty","modify"],["modifu","modify"],["modifuable","modifiable"],["modifued","modified"],["modifx","modify"],["modifyable","modifiable"],["modiration","moderation"],["modle","model"],["modlue","module"],["modprobbing","modprobing"],["modprobeing","modprobing"],["modtified","modified"],["modue","module"],["moduel","module"],["moduels","modules"],["moduile","module"],["modukles","modules"],["modul","module"],["modules's","modules'"],["moduless","modules"],["modulie","module"],["modulu","modulo"],["modulues","modules"],["modyfy","modify"],["moent","moment"],["moeny","money"],["mofdified","modified"],["mofification","modification"],["mofified","modified"],["mofifies","modifies"],["mofify","modify"],["mohammedan","muslim"],["mohammedans","muslims"],["moint","mount"],["mointor","monitor"],["mointored","monitored"],["mointoring","monitoring"],["mointors","monitors"],["moleclues","molecules"],["momement","moment"],["momementarily","momentarily"],["momements","moments"],["momemtarily","momentarily"],["momemtary","momentary"],["momemtn","moment"],["momentarely","momentarily"],["momento","memento"],["momery","memory"],["momoent","moment"],["momoment","moment"],["momomentarily","momentarily"],["momoments","moments"],["momory","memory"],["monarkey","monarchy"],["monarkeys","monarchies"],["monarkies","monarchies"],["monestaries","monasteries"],["monestic","monastic"],["monickers","monikers"],["monitary","monetary"],["moniter","monitor"],["monitoing","monitoring"],["monkies","monkeys"],["monochorome","monochrome"],["monochromo","monochrome"],["monocrome","monochrome"],["monolite","monolithic"],["monontonicity","monotonicity"],["monopace","monospace"],["monotir","monitor"],["monotired","monitored"],["monotiring","monitoring"],["monotirs","monitors"],["monsday","Monday"],["Monserrat","Montserrat"],["monstrum","monster"],["montains","mountains"],["montaj","montage"],["montajes","montages"],["montanous","mountainous"],["monthe","month"],["monthes","months"],["montly","monthly"],["Montnana","Montana"],["monts","months"],["montypic","monotypic"],["moodify","modify"],["moounting","mounting"],["mopdule","module"],["mopre","more"],["mor","more"],["mordern","modern"],["morever","moreover"],["morg","morgue"],["morgage","mortgage"],["morges","morgues"],["morgs","morgues"],["morisette","morissette"],["mormalise","normalise"],["mormalised","normalised"],["mormalises","normalises"],["mormalize","normalize"],["mormalized","normalized"],["mormalizes","normalizes"],["morrisette","morissette"],["morroccan","moroccan"],["morrocco","morocco"],["morroco","morocco"],["mortage","mortgage"],["morter","mortar"],["moslty","mostly"],["mostlky","mostly"],["mosture","moisture"],["mosty","mostly"],["moteef","motif"],["moteefs","motifs"],["moteur","motor"],["moteured","motored"],["moteuring","motoring"],["moteurs","motors"],["mothing","nothing"],["motiviated","motivated"],["motiviation","motivation"],["motononic","monotonic"],["motoroloa","motorola"],["moudle","module"],["moudule","module"],["mountian","mountain"],["mountpiont","mountpoint"],["mountpionts","mountpoints"],["mouspointer","mousepointer"],["moutn","mount"],["moutned","mounted"],["moutning","mounting"],["moutnpoint","mountpoint"],["moutnpoints","mountpoints"],["moutns","mounts"],["mouvement","movement"],["mouvements","movements"],["movebackwrd","movebackward"],["moveble","movable"],["movemement","movement"],["movemements","movements"],["movememnt","movement"],["movememnts","movements"],["movememt","movement"],["movememts","movements"],["movemet","movement"],["movemets","movements"],["movemment","movement"],["movemments","movements"],["movemnet","movement"],["movemnets","movements"],["movemnt","movement"],["movemnts","movements"],["movment","movement"],["moziila","Mozilla"],["mozila","Mozilla"],["mozzilla","mozilla"],["mroe","more"],["msbild","MSBuild"],["msbilds","MSBuild's"],["msbuid","MSBuild"],["msbuids","MSBuild's"],["msbuld","MSBuild"],["msbulds","MSBuild's"],["msbulid","MSBuild"],["msbulids","MSBuild's"],["mssing","missing"],["msssge","message"],["mthod","method"],["mtuually","mutually"],["mucuous","mucous"],["muder","murder"],["mudering","murdering"],["mudule","module"],["mudules","modules"],["muext","mutex"],["muiltiple","multiple"],["muiltiples","multiples"],["muliple","multiple"],["muliples","multiples"],["mulithread","multithread"],["mulitiplier","multiplier"],["mulitipliers","multipliers"],["mulitpart","multipart"],["mulitpath","multipath"],["mulitple","multiple"],["mulitplication","multiplication"],["mulitplicative","multiplicative"],["mulitplied","multiplied"],["mulitplier","multiplier"],["mulitpliers","multipliers"],["mulitply","multiply"],["multi-dimenional","multi-dimensional"],["multi-dimenionsal","multi-dimensional"],["multi-langual","multi-lingual"],["multi-presistion","multi-precision"],["multi-threded","multi-threaded"],["multible","multiple"],["multibye","multibyte"],["multicat","multicast"],["multicultralism","multiculturalism"],["multidimenional","multi-dimensional"],["multidimenionsal","multi-dimensional"],["multidimensinal","multidimensional"],["multidimension","multidimensional"],["multidimensionnal","multidimensional"],["multidimentionnal","multidimensional"],["multiecast","multicast"],["multifuction","multifunction"],["multilangual","multilingual"],["multile","multiple"],["multilpe","multiple"],["multipe","multiple"],["multipes","multiples"],["multipiler","multiplier"],["multipilers","multipliers"],["multipled","multiplied"],["multiplers","multipliers"],["multipliciaton","multiplication"],["multiplicites","multiplicities"],["multiplicty","multiplicity"],["multiplikation","multiplication"],["multipling","multiplying"],["multipllication","multiplication"],["multiplyed","multiplied"],["multipresistion","multiprecision"],["multipul","multiple"],["multipy","multiply"],["multipyling","multiplying"],["multithreded","multithreaded"],["multitute","multitude"],["multivriate","multivariate"],["multixsite","multisite"],["multline","multiline"],["multliple","multiple"],["multliples","multiples"],["multliplied","multiplied"],["multliplier","multiplier"],["multlipliers","multipliers"],["multliplies","multiplies"],["multliply","multiply"],["multliplying","multiplying"],["multple","multiple"],["multples","multiples"],["multplied","multiplied"],["multplier","multiplier"],["multpliers","multipliers"],["multplies","multiplies"],["multply","multiply"],["multplying","multiplying"],["multy","multi"],["multy-thread","multithread"],["mumber","number"],["mumbers","numbers"],["munbers","numbers"],["muncipalities","municipalities"],["muncipality","municipality"],["municiple","municipal"],["munnicipality","municipality"],["munute","minute"],["murr","myrrh"],["muscial","musical"],["muscician","musician"],["muscicians","musicians"],["musn't","mustn't"],["must't","mustn't"],["mustator","mutator"],["muste","must"],["mutablity","mutability"],["mutbale","mutable"],["mutch","much"],["mutches","matches"],["mutecies","mutexes"],["mutexs","mutexes"],["muti","multi"],["muticast","multicast"],["mutices","mutexes"],["mutilcast","multicast"],["mutiliated","mutilated"],["mutimarked","multimarked"],["mutipath","multipath"],["mutiple","multiple"],["mutiply","multiply"],["mutli","multi"],["mutli-threaded","multi-threaded"],["mutlipart","multipart"],["mutliple","multiple"],["mutliples","multiples"],["mutliplication","multiplication"],["mutliplicites","multiplicities"],["mutliplier","multiplier"],["mutlipliers","multipliers"],["mutliply","multiply"],["mutully","mutually"],["mutux","mutex"],["mutuxes","mutexes"],["mutuxs","mutexes"],["muyst","must"],["myabe","maybe"],["mybe","maybe"],["myitereator","myiterator"],["myraid","myriad"],["mysef","myself"],["mysefl","myself"],["mysekf","myself"],["myselfe","myself"],["myselfes","myself"],["myselv","myself"],["myselve","myself"],["myselves","myself"],["myslef","myself"],["mysogynist","misogynist"],["mysogyny","misogyny"],["mysterous","mysterious"],["mystql","mysql"],["mystrow","maestro"],["mystrows","maestros"],["Mythraic","Mithraic"],["myu","my"],["nadly","badly"],["nagative","negative"],["nagatively","negatively"],["nagatives","negatives"],["nagivation","navigation"],["naieve","naive"],["nam","name"],["namaed","named"],["namaes","names"],["nameing","naming"],["namemespace","namespace"],["namepace","namespace"],["namepsace","namespace"],["namepsaces","namespaces"],["namesapce","namespace"],["namesapced","namespaced"],["namesapces","namespaces"],["namess","names"],["namesspaces","namespaces"],["namme","name"],["namne","name"],["namned","named"],["namnes","names"],["namnespace","namespace"],["namnespaces","namespaces"],["nams","names"],["nane","name"],["nanosencond","nanosecond"],["nanosenconds","nanoseconds"],["nanoseond","nanosecond"],["nanoseonds","nanoseconds"],["Naploeon","Napoleon"],["Napolean","Napoleon"],["Napoleonian","Napoleonic"],["nasted","nested"],["nasting","nesting"],["nastly","nasty"],["nastyness","nastiness"],["natched","matched"],["natches","matches"],["nativelyx","natively"],["natrual","natural"],["naturaly","naturally"],["naturely","naturally"],["naturual","natural"],["naturually","naturally"],["natvigation","navigation"],["navagate","navigate"],["navagating","navigating"],["navagation","navigation"],["navagitation","navigation"],["naviagte","navigate"],["naviagted","navigated"],["naviagtes","navigates"],["naviagting","navigating"],["naviagtion","navigation"],["navitvely","natively"],["navtive","native"],["navtives","natives"],["naxima","maxima"],["naximal","maximal"],["naximum","maximum"],["Nazereth","Nazareth"],["nclude","include"],["ndoe","node"],["ndoes","nodes"],["neady","needy"],["neagtive","negative"],["neares","nearest"],["nearset","nearest"],["necassery","necessary"],["necassry","necessary"],["necause","because"],["neccecarily","necessarily"],["neccecary","necessary"],["neccesarily","necessarily"],["neccesary","necessary"],["neccessarily","necessarily"],["neccessarry","necessary"],["neccessary","necessary"],["neccessities","necessities"],["neccessity","necessity"],["neccisary","necessary"],["neccsessary","necessary"],["necesarily","necessarily"],["necesarrily","necessarily"],["necesarry","necessary"],["necesary","necessary"],["necessaery","necessary"],["necessairly","necessarily"],["necessar","necessary"],["necessarilly","necessarily"],["necessarly","necessarily"],["necessarry","necessary"],["necessaryly","necessarily"],["necessay","necessary"],["necesserily","necessarily"],["necessery","necessary"],["necessesary","necessary"],["necessiate","necessitate"],["nechanism","mechanism"],["necssary","necessary"],["nedd","need"],["nedded","needed"],["neded","needed"],["nedia","media"],["nedium","medium"],["nediums","mediums"],["nedle","needle"],["neds","needs"],["needeed","needed"],["neeed","need"],["neeeded","needed"],["neeeding","needing"],["neeedle","needle"],["neeedn't","needn't"],["neeeds","needs"],["nees","needs"],["neesd","needs"],["neesds","needs"],["neested","nested"],["neesting","nesting"],["negaive","negative"],["negarive","negative"],["negatiotiable","negotiable"],["negatiotiate","negotiate"],["negatiotiated","negotiated"],["negatiotiates","negotiates"],["negatiotiating","negotiating"],["negatiotiation","negotiation"],["negatiotiations","negotiations"],["negatiotiator","negotiator"],["negatiotiators","negotiators"],["negativ","negative"],["negatve","negative"],["negible","negligible"],["negitiable","negotiable"],["negitiate","negotiate"],["negitiated","negotiated"],["negitiates","negotiates"],["negitiating","negotiating"],["negitiation","negotiation"],["negitiations","negotiations"],["negitiator","negotiator"],["negitiators","negotiators"],["negitive","negative"],["neglible","negligible"],["negligable","negligible"],["negligble","negligible"],["negoable","negotiable"],["negoate","negotiate"],["negoated","negotiated"],["negoates","negotiates"],["negoatiable","negotiable"],["negoatiate","negotiate"],["negoatiated","negotiated"],["negoatiates","negotiates"],["negoatiating","negotiating"],["negoatiation","negotiation"],["negoatiations","negotiations"],["negoatiator","negotiator"],["negoatiators","negotiators"],["negoating","negotiating"],["negoation","negotiation"],["negoations","negotiations"],["negoator","negotiator"],["negoators","negotiators"],["negociable","negotiable"],["negociate","negotiate"],["negociated","negotiated"],["negociates","negotiates"],["negociating","negotiating"],["negociation","negotiation"],["negociations","negotiations"],["negociator","negotiator"],["negociators","negotiators"],["negogtiable","negotiable"],["negogtiate","negotiate"],["negogtiated","negotiated"],["negogtiates","negotiates"],["negogtiating","negotiating"],["negogtiation","negotiation"],["negogtiations","negotiations"],["negogtiator","negotiator"],["negogtiators","negotiators"],["negoitable","negotiable"],["negoitate","negotiate"],["negoitated","negotiated"],["negoitates","negotiates"],["negoitating","negotiating"],["negoitation","negotiation"],["negoitations","negotiations"],["negoitator","negotiator"],["negoitators","negotiators"],["negoptionsotiable","negotiable"],["negoptionsotiate","negotiate"],["negoptionsotiated","negotiated"],["negoptionsotiates","negotiates"],["negoptionsotiating","negotiating"],["negoptionsotiation","negotiation"],["negoptionsotiations","negotiations"],["negoptionsotiator","negotiator"],["negoptionsotiators","negotiators"],["negosiable","negotiable"],["negosiate","negotiate"],["negosiated","negotiated"],["negosiates","negotiates"],["negosiating","negotiating"],["negosiation","negotiation"],["negosiations","negotiations"],["negosiator","negotiator"],["negosiators","negotiators"],["negotable","negotiable"],["negotaiable","negotiable"],["negotaiate","negotiate"],["negotaiated","negotiated"],["negotaiates","negotiates"],["negotaiating","negotiating"],["negotaiation","negotiation"],["negotaiations","negotiations"],["negotaiator","negotiator"],["negotaiators","negotiators"],["negotaible","negotiable"],["negotaite","negotiate"],["negotaited","negotiated"],["negotaites","negotiates"],["negotaiting","negotiating"],["negotaition","negotiation"],["negotaitions","negotiations"],["negotaitor","negotiator"],["negotaitors","negotiators"],["negotate","negotiate"],["negotated","negotiated"],["negotates","negotiates"],["negotatiable","negotiable"],["negotatiate","negotiate"],["negotatiated","negotiated"],["negotatiates","negotiates"],["negotatiating","negotiating"],["negotatiation","negotiation"],["negotatiations","negotiations"],["negotatiator","negotiator"],["negotatiators","negotiators"],["negotatible","negotiable"],["negotatie","negotiate"],["negotatied","negotiated"],["negotaties","negotiates"],["negotating","negotiating"],["negotation","negotiation"],["negotations","negotiations"],["negotatior","negotiator"],["negotatiors","negotiators"],["negotator","negotiator"],["negotators","negotiators"],["negothiable","negotiable"],["negothiate","negotiate"],["negothiated","negotiated"],["negothiates","negotiates"],["negothiating","negotiating"],["negothiation","negotiation"],["negothiations","negotiations"],["negothiator","negotiator"],["negothiators","negotiators"],["negotible","negotiable"],["negoticable","negotiable"],["negoticate","negotiate"],["negoticated","negotiated"],["negoticates","negotiates"],["negoticating","negotiating"],["negotication","negotiation"],["negotications","negotiations"],["negoticator","negotiator"],["negoticators","negotiators"],["negotinate","negotiate"],["negotioable","negotiable"],["negotioate","negotiate"],["negotioated","negotiated"],["negotioates","negotiates"],["negotioating","negotiating"],["negotioation","negotiation"],["negotioations","negotiations"],["negotioator","negotiator"],["negotioators","negotiators"],["negotioble","negotiable"],["negotion","negotiation"],["negotionable","negotiable"],["negotionate","negotiate"],["negotionated","negotiated"],["negotionates","negotiates"],["negotionating","negotiating"],["negotionation","negotiation"],["negotionations","negotiations"],["negotionator","negotiator"],["negotionators","negotiators"],["negotions","negotiations"],["negotiotable","negotiable"],["negotiotate","negotiate"],["negotiotated","negotiated"],["negotiotates","negotiates"],["negotiotating","negotiating"],["negotiotation","negotiation"],["negotiotations","negotiations"],["negotiotator","negotiator"],["negotiotators","negotiators"],["negotiote","negotiate"],["negotioted","negotiated"],["negotiotes","negotiates"],["negotioting","negotiating"],["negotiotion","negotiation"],["negotiotions","negotiations"],["negotiotor","negotiator"],["negotiotors","negotiators"],["negotitable","negotiable"],["negotitae","negotiate"],["negotitaed","negotiated"],["negotitaes","negotiates"],["negotitaing","negotiating"],["negotitaion","negotiation"],["negotitaions","negotiations"],["negotitaor","negotiator"],["negotitaors","negotiators"],["negotitate","negotiate"],["negotitated","negotiated"],["negotitates","negotiates"],["negotitating","negotiating"],["negotitation","negotiation"],["negotitations","negotiations"],["negotitator","negotiator"],["negotitators","negotiators"],["negotite","negotiate"],["negotited","negotiated"],["negotites","negotiates"],["negotiting","negotiating"],["negotition","negotiation"],["negotitions","negotiations"],["negotitor","negotiator"],["negotitors","negotiators"],["negoziable","negotiable"],["negoziate","negotiate"],["negoziated","negotiated"],["negoziates","negotiates"],["negoziating","negotiating"],["negoziation","negotiation"],["negoziations","negotiations"],["negoziator","negotiator"],["negoziators","negotiators"],["negtive","negative"],["neibhbors","neighbors"],["neibhbours","neighbours"],["neibor","neighbor"],["neiborhood","neighborhood"],["neiborhoods","neighborhoods"],["neibors","neighbors"],["neigbhor","neighbor"],["neigbhorhood","neighborhood"],["neigbhorhoods","neighborhoods"],["neigbhors","neighbors"],["neigbhour","neighbour"],["neigbhours","neighbours"],["neigbor","neighbor"],["neigborhood","neighborhood"],["neigboring","neighboring"],["neigbors","neighbors"],["neigbourhood","neighbourhood"],["neighbar","neighbor"],["neighbarhood","neighborhood"],["neighbarhoods","neighborhoods"],["neighbaring","neighboring"],["neighbars","neighbors"],["neighbbor","neighbor"],["neighbborhood","neighborhood"],["neighbborhoods","neighborhoods"],["neighbboring","neighboring"],["neighbbors","neighbors"],["neighbeard","neighborhood"],["neighbeards","neighborhoods"],["neighbehood","neighborhood"],["neighbehoods","neighborhoods"],["neighbeing","neighboring"],["neighbeod","neighborhood"],["neighbeods","neighborhoods"],["neighbeor","neighbor"],["neighbeordhood","neighborhood"],["neighbeordhoods","neighborhoods"],["neighbeorhod","neighborhood"],["neighbeorhods","neighborhoods"],["neighbeorhood","neighborhood"],["neighbeorhoods","neighborhoods"],["neighbeors","neighbors"],["neighber","neighbor"],["neighbergh","neighbor"],["neighberghs","neighbors"],["neighberhhod","neighborhood"],["neighberhhods","neighborhoods"],["neighberhhood","neighborhood"],["neighberhhoods","neighborhoods"],["neighberhing","neighboring"],["neighberhod","neighborhood"],["neighberhodd","neighborhood"],["neighberhodds","neighborhoods"],["neighberhods","neighborhoods"],["neighberhood","neighborhood"],["neighberhooding","neighboring"],["neighberhoods","neighborhoods"],["neighberhoof","neighborhood"],["neighberhoofs","neighborhoods"],["neighberhoood","neighborhood"],["neighberhooods","neighborhoods"],["neighberhoor","neighbor"],["neighberhoors","neighbors"],["neighberhoud","neighborhood"],["neighberhouds","neighborhoods"],["neighbering","neighboring"],["neighbers","neighbors"],["neighbes","neighbors"],["neighbet","neighbor"],["neighbethood","neighborhood"],["neighbethoods","neighborhoods"],["neighbets","neighbors"],["neighbeuing","neighbouring"],["neighbeurgh","neighbour"],["neighbeurghs","neighbours"],["neighbeurhing","neighbouring"],["neighbeurhooding","neighbouring"],["neighbeurhoor","neighbour"],["neighbeurhoors","neighbours"],["neighbeus","neighbours"],["neighbeut","neighbour"],["neighbeuthood","neighbourhood"],["neighbeuthoods","neighbourhoods"],["neighbeuts","neighbours"],["neighbhor","neighbor"],["neighbhorhood","neighborhood"],["neighbhorhoods","neighborhoods"],["neighbhoring","neighboring"],["neighbhors","neighbors"],["neighboard","neighborhood"],["neighboards","neighborhoods"],["neighbohood","neighborhood"],["neighbohoods","neighborhoods"],["neighboing","neighboring"],["neighbood","neighborhood"],["neighboods","neighborhoods"],["neighboordhood","neighborhood"],["neighboordhoods","neighborhoods"],["neighboorhod","neighborhood"],["neighboorhods","neighborhoods"],["neighboorhood","neighborhood"],["neighboorhoods","neighborhoods"],["neighbooring","neighboring"],["neighborgh","neighbor"],["neighborghs","neighbors"],["neighborhhod","neighborhood"],["neighborhhods","neighborhoods"],["neighborhhood","neighborhood"],["neighborhhoods","neighborhoods"],["neighborhing","neighboring"],["neighborhod","neighborhood"],["neighborhodd","neighborhood"],["neighborhodds","neighborhoods"],["neighborhods","neighborhoods"],["neighborhooding","neighboring"],["neighborhoof","neighborhood"],["neighborhoofs","neighborhoods"],["neighborhoood","neighborhood"],["neighborhooods","neighborhoods"],["neighborhoor","neighbor"],["neighborhoors","neighbors"],["neighborhoud","neighborhood"],["neighborhouds","neighborhoods"],["neighbos","neighbors"],["neighbot","neighbor"],["neighbothood","neighborhood"],["neighbothoods","neighborhoods"],["neighbots","neighbors"],["neighbouing","neighbouring"],["neighbourgh","neighbour"],["neighbourghs","neighbours"],["neighbourhhod","neighbourhood"],["neighbourhhods","neighbourhoods"],["neighbourhhood","neighbourhood"],["neighbourhhoods","neighbourhoods"],["neighbourhing","neighbouring"],["neighbourhod","neighbourhood"],["neighbourhodd","neighbourhood"],["neighbourhodds","neighbourhoods"],["neighbourhods","neighbourhoods"],["neighbourhooding","neighbouring"],["neighbourhoof","neighbourhood"],["neighbourhoofs","neighbourhoods"],["neighbourhoood","neighbourhood"],["neighbourhooods","neighbourhoods"],["neighbourhoor","neighbour"],["neighbourhoors","neighbours"],["neighbourhoud","neighbourhood"],["neighbourhouds","neighbourhoods"],["neighbous","neighbours"],["neighbout","neighbour"],["neighbouthood","neighbourhood"],["neighbouthoods","neighbourhoods"],["neighbouts","neighbours"],["neighbr","neighbor"],["neighbrs","neighbors"],["neighbur","neighbor"],["neighburhood","neighborhood"],["neighburhoods","neighborhoods"],["neighburing","neighboring"],["neighburs","neighbors"],["neigher","neither"],["neighobr","neighbor"],["neighobrhood","neighborhood"],["neighobrhoods","neighborhoods"],["neighobring","neighboring"],["neighobrs","neighbors"],["neighor","neighbor"],["neighorhood","neighborhood"],["neighorhoods","neighborhoods"],["neighoring","neighboring"],["neighors","neighbors"],["neighour","neighbour"],["neighourhood","neighbourhood"],["neighourhoods","neighbourhoods"],["neighouring","neighbouring"],["neighours","neighbours"],["neighror","neighbour"],["neighrorhood","neighbourhood"],["neighrorhoods","neighbourhoods"],["neighroring","neighbouring"],["neighrors","neighbours"],["neighrour","neighbour"],["neighrourhood","neighbourhood"],["neighrourhoods","neighbourhoods"],["neighrouring","neighbouring"],["neighrours","neighbours"],["neight","neither"],["neightbor","neighbor"],["neightborhood","neighborhood"],["neightborhoods","neighborhoods"],["neightboring","neighboring"],["neightbors","neighbors"],["neightbour","neighbour"],["neightbourhood","neighbourhood"],["neightbourhoods","neighbourhoods"],["neightbouring","neighbouring"],["neightbours","neighbours"],["neighter","neither"],["neightobr","neighbor"],["neightobrhood","neighborhood"],["neightobrhoods","neighborhoods"],["neightobring","neighboring"],["neightobrs","neighbors"],["neiter","neither"],["nelink","netlink"],["nenviroment","environment"],["neolitic","neolithic"],["nerver","never"],["nescesaries","necessaries"],["nescesarily","necessarily"],["nescesarrily","necessarily"],["nescesarry","necessary"],["nescessarily","necessarily"],["nescessary","necessary"],["nesesarily","necessarily"],["nessary","necessary"],["nessasarily","necessarily"],["nessasary","necessary"],["nessecarilt","necessarily"],["nessecarily","necessarily"],["nessecarry","necessary"],["nessecary","necessary"],["nesseccarily","necessarily"],["nesseccary","necessary"],["nessesarily","necessarily"],["nessesary","necessary"],["nessessarily","necessarily"],["nessessary","necessary"],["nestin","nesting"],["nestwork","network"],["netacpe","netscape"],["netcape","netscape"],["nethods","methods"],["netiher","neither"],["netowrk","network"],["netowrks","networks"],["netscpe","netscape"],["netwplit","netsplit"],["netwrok","network"],["netwroked","networked"],["netwroks","networks"],["netwrork","network"],["neumeric","numeric"],["nevelope","envelope"],["nevelopes","envelopes"],["nevere","never"],["neveretheless","nevertheless"],["nevers","never"],["neverthless","nevertheless"],["newine","newline"],["newines","newlines"],["newletters","newsletters"],["nework","network"],["neworks","networks"],["newslines","newlines"],["newthon","newton"],["newtork","network"],["Newyorker","New Yorker"],["niear","near"],["niearest","nearest"],["niether","neither"],["nighbor","neighbor"],["nighborhood","neighborhood"],["nighboring","neighboring"],["nighlties","nightlies"],["nighlty","nightly"],["nightfa;;","nightfall"],["nightime","nighttime"],["nimutes","minutes"],["nineth","ninth"],["ninima","minima"],["ninimal","minimal"],["ninimum","minimum"],["ninjs","ninja"],["ninteenth","nineteenth"],["nither","neither"],["nknown","unknown"],["nkow","know"],["nkwo","know"],["nmae","name"],["nned","need"],["nneeded","needed"],["nnumber","number"],["no-overide","no-override"],["nodels","models"],["nodess","nodes"],["nodulated","modulated"],["nofified","notified"],["nofity","notify"],["nohypen","nohyphen"],["nomber","number"],["nombered","numbered"],["nombering","numbering"],["nombers","numbers"],["nomimal","nominal"],["non-alphanumunder","non-alphanumeric"],["non-asii","non-ascii"],["non-assiged","non-assigned"],["non-bloking","non-blocking"],["non-compleeted","non-completed"],["non-complient","non-compliant"],["non-corelated","non-correlated"],["non-existant","non-existent"],["non-exluded","non-excluded"],["non-indentended","non-indented"],["non-inmediate","non-immediate"],["non-inreractive","non-interactive"],["non-instnat","non-instant"],["non-meausure","non-measure"],["non-negatiotiable","non-negotiable"],["non-negatiotiated","non-negotiated"],["non-negativ","non-negative"],["non-negoable","non-negotiable"],["non-negoated","non-negotiated"],["non-negoatiable","non-negotiable"],["non-negoatiated","non-negotiated"],["non-negociable","non-negotiable"],["non-negociated","non-negotiated"],["non-negogtiable","non-negotiable"],["non-negogtiated","non-negotiated"],["non-negoitable","non-negotiable"],["non-negoitated","non-negotiated"],["non-negoptionsotiable","non-negotiable"],["non-negoptionsotiated","non-negotiated"],["non-negosiable","non-negotiable"],["non-negosiated","non-negotiated"],["non-negotable","non-negotiable"],["non-negotaiable","non-negotiable"],["non-negotaiated","non-negotiated"],["non-negotaible","non-negotiable"],["non-negotaited","non-negotiated"],["non-negotated","non-negotiated"],["non-negotatiable","non-negotiable"],["non-negotatiated","non-negotiated"],["non-negotatible","non-negotiable"],["non-negotatied","non-negotiated"],["non-negothiable","non-negotiable"],["non-negothiated","non-negotiated"],["non-negotible","non-negotiable"],["non-negoticable","non-negotiable"],["non-negoticated","non-negotiated"],["non-negotioable","non-negotiable"],["non-negotioated","non-negotiated"],["non-negotioble","non-negotiable"],["non-negotionable","non-negotiable"],["non-negotionated","non-negotiated"],["non-negotiotable","non-negotiable"],["non-negotiotated","non-negotiated"],["non-negotiote","non-negotiated"],["non-negotitable","non-negotiable"],["non-negotitaed","non-negotiated"],["non-negotitated","non-negotiated"],["non-negotited","non-negotiated"],["non-negoziable","non-negotiable"],["non-negoziated","non-negotiated"],["non-priviliged","non-privileged"],["non-referenced-counted","non-reference-counted"],["non-replacable","non-replaceable"],["non-replacalbe","non-replaceable"],["non-reproducable","non-reproducible"],["non-seperable","non-separable"],["non-trasparent","non-transparent"],["non-useful","useless"],["non-usefull","useless"],["non-virutal","non-virtual"],["nonbloking","non-blocking"],["noncombatents","noncombatants"],["noncontigous","non-contiguous"],["nonesense","nonsense"],["nonesensical","nonsensical"],["nonexistance","nonexistence"],["nonexistant","nonexistent"],["nonnegarive","nonnegative"],["nonneighboring","non-neighboring"],["nonsence","nonsense"],["nonsens","nonsense"],["nonseperable","non-separable"],["nonte","note"],["nontheless","nonetheless"],["noo","no"],["noone","no one"],["noralize","normalize"],["noralized","normalized"],["noramal","normal"],["noramalise","normalise"],["noramalised","normalised"],["noramalises","normalises"],["noramalising","normalising"],["noramalize","normalize"],["noramalized","normalized"],["noramalizes","normalizes"],["noramalizing","normalizing"],["noramals","normals"],["noraml","normal"],["norhern","northern"],["norifications","notifications"],["normailzation","normalization"],["normaized","normalized"],["normale","normal"],["normales","normals"],["normaly","normally"],["normalyl","normally"],["normalyly","normally"],["normalysed","normalised"],["normalyy","normally"],["normalyzation","normalization"],["normalyze","normalize"],["normalyzed","normalized"],["normlly","normally"],["normnal","normal"],["normol","normal"],["normolise","normalise"],["normolize","normalize"],["northen","northern"],["northereastern","northeastern"],["nortmally","normally"],["notabley","notably"],["notaion","notation"],["notaly","notably"],["notasion","notation"],["notatin","notation"],["noteable","notable"],["noteably","notably"],["noteboook","notebook"],["noteboooks","notebooks"],["noteriety","notoriety"],["notfication","notification"],["notfications","notifications"],["notfy","notify"],["noth","north"],["nothern","northern"],["nothign","nothing"],["nothigng","nothing"],["nothihg","nothing"],["nothin","nothing"],["nothind","nothing"],["nothink","nothing"],["noticable","noticeable"],["noticably","noticeably"],["notication","notification"],["notications","notifications"],["noticeing","noticing"],["noticiable","noticeable"],["noticible","noticeable"],["notifaction","notification"],["notifactions","notifications"],["notifcation","notification"],["notifcations","notifications"],["notifed","notified"],["notifer","notifier"],["notifes","notifies"],["notifiation","notification"],["notificaction","notification"],["notificaiton","notification"],["notificaitons","notifications"],["notificaton","notification"],["notificatons","notifications"],["notificiation","notification"],["notificiations","notifications"],["notifiy","notify"],["notifiying","notifying"],["notifycation","notification"],["notity","notify"],["notmalize","normalize"],["notmalized","normalized"],["notmutch","notmuch"],["notning","nothing"],["nott","not"],["nottaion","notation"],["nottaions","notations"],["notwhithstanding","notwithstanding"],["noveau","nouveau"],["novemeber","November"],["Novemer","November"],["Novermber","November"],["nowadys","nowadays"],["nowdays","nowadays"],["nowe","now"],["ntification","notification"],["nuber","number"],["nubering","numbering"],["nubmer","number"],["nubmers","numbers"],["nucular","nuclear"],["nuculear","nuclear"],["nuisanse","nuisance"],["nuissance","nuisance"],["nulk","null"],["Nullabour","Nullarbor"],["nulll","null"],["numbber","number"],["numbbered","numbered"],["numbbering","numbering"],["numbbers","numbers"],["numberal","numeral"],["numberals","numerals"],["numberic","numeric"],["numberous","numerous"],["numberr","number"],["numberred","numbered"],["numberring","numbering"],["numberrs","numbers"],["numberss","numbers"],["numbert","number"],["numbet","number"],["numbets","numbers"],["numbres","numbers"],["numearate","numerate"],["numearation","numeration"],["numeber","number"],["numebering","numbering"],["numebers","numbers"],["numebr","number"],["numebrs","numbers"],["numer","number"],["numeraotr","numerator"],["numerbering","numbering"],["numercial","numerical"],["numercially","numerically"],["numering","numbering"],["numers","numbers"],["nummber","number"],["nummbers","numbers"],["nummeric","numeric"],["numnber","number"],["numnbered","numbered"],["numnbering","numbering"],["numnbers","numbers"],["numner","number"],["numners","numbers"],["numver","number"],["numvers","numbers"],["nunber","number"],["nunbers","numbers"],["Nuremburg","Nuremberg"],["nusance","nuisance"],["nutritent","nutrient"],["nutritents","nutrients"],["nuturing","nurturing"],["nwe","new"],["nwo","now"],["o'caml","OCaml"],["oaram","param"],["obay","obey"],["obect","object"],["obediance","obedience"],["obediant","obedient"],["obejct","object"],["obejcted","objected"],["obejction","objection"],["obejctions","objections"],["obejctive","objective"],["obejctively","objectively"],["obejctives","objectives"],["obejcts","objects"],["obeject","object"],["obejection","objection"],["obejects","objects"],["oberflow","overflow"],["oberflowed","overflowed"],["oberflowing","overflowing"],["oberflows","overflows"],["oberv","observe"],["obervant","observant"],["obervation","observation"],["obervations","observations"],["oberve","observe"],["oberved","observed"],["oberver","observer"],["obervers","observers"],["oberves","observes"],["oberving","observing"],["obervs","observes"],["obeservation","observation"],["obeservations","observations"],["obeserve","observe"],["obeserved","observed"],["obeserver","observer"],["obeservers","observers"],["obeserves","observes"],["obeserving","observing"],["obession","obsession"],["obessions","obsessions"],["obgect","object"],["obgects","objects"],["obhect","object"],["obhectification","objectification"],["obhectifies","objectifies"],["obhectify","objectify"],["obhectifying","objectifying"],["obhecting","objecting"],["obhection","objection"],["obhects","objects"],["obious","obvious"],["obiously","obviously"],["obivous","obvious"],["obivously","obviously"],["objec","object"],["objecs","objects"],["objectss","objects"],["objejct","object"],["objekt","object"],["objet","object"],["objetc","object"],["objetcs","objects"],["objets","objects"],["objtain","obtain"],["objtained","obtained"],["objtains","obtains"],["objump","objdump"],["oblitque","oblique"],["obnject","object"],["obscur","obscure"],["obselete","obsolete"],["obseravtion","observation"],["obseravtions","observations"],["observ","observe"],["observered","observed"],["obsevrer","observer"],["obsevrers","observers"],["obsolate","obsolete"],["obsolesence","obsolescence"],["obsolite","obsolete"],["obsolited","obsoleted"],["obsolte","obsolete"],["obsolted","obsoleted"],["obssessed","obsessed"],["obstacal","obstacle"],["obstancles","obstacles"],["obstruced","obstructed"],["obsure","obscure"],["obtaiend","obtained"],["obtaiens","obtains"],["obtainig","obtaining"],["obtaion","obtain"],["obtaioned","obtained"],["obtaions","obtains"],["obtrain","obtain"],["obtrained","obtained"],["obtrains","obtains"],["obusing","abusing"],["obvioulsy","obviously"],["obvisious","obvious"],["obvisous","obvious"],["obvisously","obviously"],["obyect","object"],["obyekt","object"],["ocasion","occasion"],["ocasional","occasional"],["ocasionally","occasionally"],["ocasionaly","occasionally"],["ocasioned","occasioned"],["ocasions","occasions"],["ocassion","occasion"],["ocassional","occasional"],["ocassionally","occasionally"],["ocassionaly","occasionally"],["ocassioned","occasioned"],["ocassions","occasions"],["occaisionally","occasionally"],["occaison","occasion"],["occasinal","occasional"],["occasinally","occasionally"],["occasioanlly","occasionally"],["occasionaly","occasionally"],["occassion","occasion"],["occassional","occasional"],["occassionally","occasionally"],["occassionaly","occasionally"],["occassioned","occasioned"],["occassions","occasions"],["occational","occasional"],["occationally","occasionally"],["occcur","occur"],["occcured","occurred"],["occcurs","occurs"],["occour","occur"],["occoured","occurred"],["occouring","occurring"],["occourring","occurring"],["occours","occurs"],["occrrance","occurrence"],["occrrances","occurrences"],["occrred","occurred"],["occrring","occurring"],["occsionally","occasionally"],["occucence","occurrence"],["occucences","occurrences"],["occulusion","occlusion"],["occuped","occupied"],["occupided","occupied"],["occuracy","accuracy"],["occurance","occurrence"],["occurances","occurrences"],["occurately","accurately"],["occurded","occurred"],["occured","occurred"],["occurence","occurrence"],["occurences","occurrences"],["occures","occurs"],["occuring","occurring"],["occurr","occur"],["occurrance","occurrence"],["occurrances","occurrences"],["occurrencs","occurrences"],["occurrs","occurs"],["oclock","o'clock"],["ocntext","context"],["ocorrence","occurrence"],["ocorrences","occurrences"],["octect","octet"],["octects","octets"],["octohedra","octahedra"],["octohedral","octahedral"],["octohedron","octahedron"],["ocuntries","countries"],["ocuntry","country"],["ocupied","occupied"],["ocupies","occupies"],["ocupy","occupy"],["ocupying","occupying"],["ocur","occur"],["ocurr","occur"],["ocurrance","occurrence"],["ocurred","occurred"],["ocurrence","occurrence"],["ocurrences","occurrences"],["ocurring","occurring"],["ocurrred","occurred"],["ocurrs","occurs"],["odly","oddly"],["ody","body"],["oen","one"],["ofcource","of course"],["offcers","officers"],["offcial","official"],["offcially","officially"],["offcials","officials"],["offerd","offered"],["offereings","offerings"],["offest","offset"],["offests","offsets"],["offfence","offence"],["offfences","offences"],["offfense","offense"],["offfenses","offenses"],["offfset","offset"],["offfsets","offsets"],["offic","office"],["offical","official"],["offically","officially"],["officals","officials"],["officaly","officially"],["officeal","official"],["officeally","officially"],["officeals","officials"],["officealy","officially"],["officialy","officially"],["offloded","offloaded"],["offred","offered"],["offsence","offence"],["offsense","offense"],["offsenses","offenses"],["offser","offset"],["offseted","offsetted"],["offseting","offsetting"],["offsetp","offset"],["offsett","offset"],["offstets","offsets"],["offten","often"],["oficial","official"],["oficially","officially"],["ofmodule","of module"],["ofo","of"],["ofrom","from"],["ofsetted","offsetted"],["ofsset","offset"],["oftenly","often"],["ofthe","of the"],["oherwise","otherwise"],["ohter","other"],["ohters","others"],["ohterwise","otherwise"],["oigin","origin"],["oiginal","original"],["oiginally","originally"],["oiginals","originals"],["oiginating","originating"],["oigins","origins"],["ois","is"],["ojbect","object"],["oje","one"],["oject","object"],["ojection","objection"],["ojective","objective"],["ojects","objects"],["ojekts","objects"],["okat","okay"],["oldes","oldest"],["olny","only"],["olt","old"],["olther","other"],["oly","only"],["omision","omission"],["omited","omitted"],["omiting","omitting"],["omitt","omit"],["omlette","omelette"],["ommision","omission"],["ommission","omission"],["ommit","omit"],["ommited","omitted"],["ommiting","omitting"],["ommits","omits"],["ommitted","omitted"],["ommitting","omitting"],["omniverous","omnivorous"],["omniverously","omnivorously"],["omplementaion","implementation"],["omplementation","implementation"],["omre","more"],["onchage","onchange"],["ond","one"],["one-dimenional","one-dimensional"],["one-dimenionsal","one-dimensional"],["onece","once"],["onedimenional","one-dimensional"],["onedimenionsal","one-dimensional"],["oneliners","one-liners"],["oneyway","oneway"],["ongly","only"],["onl","only"],["onliene","online"],["onlly","only"],["onlye","only"],["onlyonce","only once"],["onoly","only"],["onother","another"],["ons","owns"],["onself","oneself"],["ontain","contain"],["ontained","contained"],["ontainer","container"],["ontainers","containers"],["ontainging","containing"],["ontaining","containing"],["ontainor","container"],["ontainors","containers"],["ontains","contains"],["ontext","context"],["onthe","on the"],["ontop","on top"],["ontrolled","controlled"],["onw","own"],["onwed","owned"],["onwer","owner"],["onwership","ownership"],["onwing","owning"],["onws","owns"],["onyl","only"],["oommits","commits"],["ooutput","output"],["ooutputs","outputs"],["opactity","opacity"],["opactiy","opacity"],["opacy","opacity"],["opague","opaque"],["opatque","opaque"],["opbject","object"],["opbjective","objective"],["opbjects","objects"],["opeaaration","operation"],["opeaarations","operations"],["opeabcration","operation"],["opeabcrations","operations"],["opearand","operand"],["opearands","operands"],["opearate","operate"],["opearates","operates"],["opearating","operating"],["opearation","operation"],["opearations","operations"],["opearatios","operations"],["opearator","operator"],["opearators","operators"],["opearion","operation"],["opearions","operations"],["opearios","operations"],["opeariton","operation"],["opearitons","operations"],["opearitos","operations"],["opearnd","operand"],["opearnds","operands"],["opearor","operator"],["opearors","operators"],["opearte","operate"],["opearted","operated"],["opeartes","operates"],["opearting","operating"],["opeartion","operation"],["opeartions","operations"],["opeartios","operations"],["opeartor","operator"],["opeartors","operators"],["opeate","operate"],["opeates","operates"],["opeation","operation"],["opeational","operational"],["opeations","operations"],["opeatios","operations"],["opeator","operator"],["opeators","operators"],["opeatror","operator"],["opeatrors","operators"],["opeg","open"],["opeging","opening"],["opeing","opening"],["opeinging","opening"],["opeings","openings"],["opem","open"],["opemed","opened"],["opemess","openness"],["opeming","opening"],["opems","opens"],["openbrower","openbrowser"],["opended","opened"],["openeing","opening"],["openend","opened"],["openened","opened"],["openening","opening"],["openess","openness"],["openin","opening"],["openned","opened"],["openning","opening"],["operaand","operand"],["operaands","operands"],["operaion","operation"],["operaions","operations"],["operaiton","operation"],["operandes","operands"],["operaror","operator"],["operatation","operation"],["operatations","operations"],["operater","operator"],["operatings","operating"],["operatio","operation"],["operatione","operation"],["operatior","operator"],["operatng","operating"],["operato","operator"],["operaton","operation"],["operatons","operations"],["operattion","operation"],["operattions","operations"],["opereation","operation"],["opertaion","operation"],["opertaions","operations"],["opertion","operation"],["opertional","operational"],["opertions","operations"],["opertor","operator"],["opertors","operators"],["opetional","optional"],["ophan","orphan"],["ophtalmology","ophthalmology"],["opion","option"],["opionally","optionally"],["opions","options"],["opitionally","optionally"],["opiton","option"],["opitons","options"],["opject","object"],["opjected","objected"],["opjecteing","objecting"],["opjectification","objectification"],["opjectifications","objectifications"],["opjectified","objectified"],["opjecting","objecting"],["opjection","objection"],["opjections","objections"],["opjective","objective"],["opjectively","objectively"],["opjects","objects"],["opne","open"],["opned","opened"],["opnegroup","opengroup"],["opnssl","openssl"],["oponent","opponent"],["oportunity","opportunity"],["opose","oppose"],["oposed","opposed"],["oposite","opposite"],["oposition","opposition"],["oppenly","openly"],["opperate","operate"],["opperated","operated"],["opperates","operates"],["opperation","operation"],["opperational","operational"],["opperations","operations"],["oppertunist","opportunist"],["oppertunities","opportunities"],["oppertunity","opportunity"],["oppinion","opinion"],["oppinions","opinions"],["opponant","opponent"],["oppononent","opponent"],["opportunisticly","opportunistically"],["opportunistly","opportunistically"],["opportunties","opportunities"],["oppositition","opposition"],["oppossed","opposed"],["opprotunity","opportunity"],["opproximate","approximate"],["opps","oops"],["oppsofite","opposite"],["oppurtunity","opportunity"],["opration","operation"],["oprations","operations"],["opreating","operating"],["opreation","operation"],["opreations","operations"],["opression","oppression"],["opressive","oppressive"],["oprimization","optimization"],["oprimizations","optimizations"],["oprimize","optimize"],["oprimized","optimized"],["oprimizes","optimizes"],["optain","obtain"],["optained","obtained"],["optains","obtains"],["optaionl","optional"],["optening","opening"],["optet","opted"],["opthalmic","ophthalmic"],["opthalmologist","ophthalmologist"],["opthalmology","ophthalmology"],["opthamologist","ophthalmologist"],["optiional","optional"],["optimasation","optimization"],["optimazation","optimization"],["optimial","optimal"],["optimiality","optimality"],["optimisim","optimism"],["optimisitc","optimistic"],["optimisitic","optimistic"],["optimissm","optimism"],["optimitation","optimization"],["optimizaing","optimizing"],["optimizaton","optimization"],["optimizier","optimizer"],["optimiztion","optimization"],["optimiztions","optimizations"],["optimsitic","optimistic"],["optimyze","optimize"],["optimze","optimize"],["optimzie","optimize"],["optin","option"],["optinal","optional"],["optinally","optionally"],["optins","options"],["optio","option"],["optioanl","optional"],["optioin","option"],["optioinal","optional"],["optioins","options"],["optionalliy","optionally"],["optionallly","optionally"],["optionaly","optionally"],["optionel","optional"],["optiones","options"],["optionial","optional"],["optionn","option"],["optionnal","optional"],["optionnally","optionally"],["optionnaly","optionally"],["optionss","options"],["optios","options"],["optismied","optimised"],["optizmied","optimized"],["optmisation","optimisation"],["optmisations","optimisations"],["optmization","optimization"],["optmizations","optimizations"],["optmize","optimize"],["optmized","optimized"],["optoin","option"],["optoins","options"],["optomism","optimism"],["opton","option"],["optonal","optional"],["optonally","optionally"],["optons","options"],["opyion","option"],["opyions","options"],["orcale","oracle"],["orded","ordered"],["orderd","ordered"],["ordert","ordered"],["ording","ordering"],["ordner","order"],["orede","order"],["oredes","orders"],["oreding","ordering"],["oredred","ordered"],["orgamise","organise"],["organim","organism"],["organisaion","organisation"],["organisaions","organisations"],["organistion","organisation"],["organistions","organisations"],["organizaion","organization"],["organizaions","organizations"],["organiztion","organization"],["organiztions","organizations"],["organsiation","organisation"],["organsiations","organisations"],["organsied","organised"],["organsier","organiser"],["organsiers","organisers"],["organsies","organises"],["organsiing","organising"],["organziation","organization"],["organziations","organizations"],["organzied","organized"],["organzier","organizer"],["organziers","organizers"],["organzies","organizes"],["organziing","organizing"],["orgiginal","original"],["orgiginally","originally"],["orgiginals","originals"],["orginal","original"],["orginally","originally"],["orginals","originals"],["orginate","originate"],["orginated","originated"],["orginates","originates"],["orginating","originating"],["orginial","original"],["orginially","originally"],["orginials","originals"],["orginiate","originate"],["orginiated","originated"],["orginiates","originates"],["orgininal","original"],["orgininals","originals"],["orginisation","organisation"],["orginisations","organisations"],["orginised","organised"],["orginization","organization"],["orginizations","organizations"],["orginized","organized"],["orginx","originx"],["orginy","originy"],["orhpan","orphan"],["oriant","orient"],["oriantate","orientate"],["oriantated","orientated"],["oriantation","orientation"],["oridinarily","ordinarily"],["orieation","orientation"],["orieations","orientations"],["orienatate","orientate"],["orienatated","orientated"],["orienatation","orientation"],["orienation","orientation"],["orientaion","orientation"],["orientatied","orientated"],["oriente","oriented"],["orientiation","orientation"],["orientied","oriented"],["orientned","oriented"],["orietation","orientation"],["orietations","orientations"],["origanaly","originally"],["origial","original"],["origially","originally"],["origianal","original"],["origianally","originally"],["origianaly","originally"],["origianl","original"],["origianls","originals"],["origigin","origin"],["origiginal","original"],["origiginally","originally"],["origiginals","originals"],["originaly","originally"],["originial","original"],["originially","originally"],["originiated","originated"],["originiating","originating"],["origininal","original"],["origininate","originate"],["origininated","originated"],["origininates","originates"],["origininating","originating"],["origining","originating"],["originnally","originally"],["origion","origin"],["origional","original"],["origionally","originally"],["orign","origin"],["orignal","original"],["orignally","originally"],["orignate","originate"],["orignated","originated"],["orignates","originates"],["orignial","original"],["orignially","originally"],["origninal","original"],["oringal","original"],["oringally","originally"],["orpan","orphan"],["orpanage","orphanage"],["orpaned","orphaned"],["orpans","orphans"],["orriginal","original"],["orthagnal","orthogonal"],["orthagonal","orthogonal"],["orthagonalize","orthogonalize"],["orthoganal","orthogonal"],["orthoganalize","orthogonalize"],["orthognal","orthogonal"],["orthonormalizatin","orthonormalization"],["ortogonal","orthogonal"],["ortogonality","orthogonality"],["osbscure","obscure"],["osciallator","oscillator"],["oscilate","oscillate"],["oscilated","oscillated"],["oscilating","oscillating"],["oscilator","oscillator"],["oscilliscope","oscilloscope"],["oscilliscopes","oscilloscopes"],["osffset","offset"],["osffsets","offsets"],["osffsetting","offsetting"],["osicllations","oscillations"],["otain","obtain"],["otained","obtained"],["otains","obtains"],["otehr","other"],["otehrwice","otherwise"],["otehrwise","otherwise"],["otehrwize","otherwise"],["oterwice","otherwise"],["oterwise","otherwise"],["oterwize","otherwise"],["othe","other"],["othere","other"],["otherewise","otherwise"],["otherise","otherwise"],["otheriwse","otherwise"],["otherwaise","otherwise"],["otherways","otherwise"],["otherweis","otherwise"],["otherweise","otherwise"],["otherwhere","elsewhere"],["otherwhile","otherwise"],["otherwhise","otherwise"],["otherwice","otherwise"],["otherwide","otherwise"],["otherwis","otherwise"],["otherwize","otherwise"],["otherwordly","otherworldly"],["otherwose","otherwise"],["otherwrite","overwrite"],["otherws","otherwise"],["otherwse","otherwise"],["otherwsie","otherwise"],["otherwsise","otherwise"],["otherwuise","otherwise"],["otherwwise","otherwise"],["otherwyse","otherwise"],["othewice","otherwise"],["othewise","otherwise"],["othewize","otherwise"],["otho","otoh"],["othographic","orthographic"],["othwerise","otherwise"],["othwerwise","otherwise"],["othwhise","otherwise"],["otification","notification"],["otiginal","original"],["otion","option"],["otionally","optionally"],["otions","options"],["otpion","option"],["otpions","options"],["otput","output"],["otu","out"],["oublisher","publisher"],["ouer","outer"],["ouevre","oeuvre"],["oultinenodes","outlinenodes"],["oultiner","outliner"],["oultline","outline"],["oultlines","outlines"],["ountline","outline"],["ouptut","output"],["ouptuted","outputted"],["ouptuting","outputting"],["ouptuts","outputs"],["ouput","output"],["ouputarea","outputarea"],["ouputs","outputs"],["ouputted","outputted"],["ouputting","outputting"],["ourselfes","ourselves"],["ourselfs","ourselves"],["ourselvs","ourselves"],["ouside","outside"],["oustanding","outstanding"],["oustide","outside"],["outbut","output"],["outbuts","outputs"],["outgoign","outgoing"],["outisde","outside"],["outllook","outlook"],["outoign","outgoing"],["outout","output"],["outperfoem","outperform"],["outperfoeming","outperforming"],["outperfom","outperform"],["outperfome","outperform"],["outperfomeing","outperforming"],["outperfoming","outperforming"],["outperfomr","outperform"],["outperfomring","outperforming"],["outpout","output"],["outpouts","outputs"],["outpupt","output"],["outpusts","outputs"],["outputed","outputted"],["outputing","outputting"],["outselves","ourselves"],["outsid","outside"],["outter","outer"],["outtermost","outermost"],["outupt","output"],["outupts","outputs"],["outuput","output"],["outut","output"],["oututs","outputs"],["outweight","outweigh"],["outweights","outweighs"],["ouur","our"],["ouurs","ours"],["oveerun","overrun"],["oveflow","overflow"],["oveflowed","overflowed"],["oveflowing","overflowing"],["oveflows","overflows"],["ovelap","overlap"],["ovelapping","overlapping"],["over-engeneer","over-engineer"],["over-engeneering","over-engineering"],["overaall","overall"],["overal","overall"],["overcompansate","overcompensate"],["overcompansated","overcompensated"],["overcompansates","overcompensates"],["overcompansating","overcompensating"],["overcompansation","overcompensation"],["overcompansations","overcompensations"],["overengeneer","overengineer"],["overengeneering","overengineering"],["overfl","overflow"],["overfow","overflow"],["overfowed","overflowed"],["overfowing","overflowing"],["overfows","overflows"],["overhread","overhead"],["overiddden","overridden"],["overidden","overridden"],["overide","override"],["overiden","overridden"],["overides","overrides"],["overiding","overriding"],["overlaped","overlapped"],["overlaping","overlapping"],["overlapp","overlap"],["overlayed","overlaid"],["overlflow","overflow"],["overlflowed","overflowed"],["overlflowing","overflowing"],["overlflows","overflows"],["overlfow","overflow"],["overlfowed","overflowed"],["overlfowing","overflowing"],["overlfows","overflows"],["overlodaded","overloaded"],["overloded","overloaded"],["overlodes","overloads"],["overlow","overflow"],["overlowing","overflowing"],["overlows","overflows"],["overreidden","overridden"],["overreide","override"],["overreides","overrides"],["overriabled","overridable"],["overriddable","overridable"],["overriddden","overridden"],["overriddes","overrides"],["overridding","overriding"],["overrideable","overridable"],["overriden","overridden"],["overrident","overridden"],["overridiing","overriding"],["overrids","overrides"],["overrriddden","overridden"],["overrridden","overridden"],["overrride","override"],["overrriden","overridden"],["overrrides","overrides"],["overrriding","overriding"],["overrrun","overrun"],["overshaddowed","overshadowed"],["oversubcribe","oversubscribe"],["oversubcribed","oversubscribed"],["oversubcribes","oversubscribes"],["oversubcribing","oversubscribing"],["oversubscibe","oversubscribe"],["oversubscibed","oversubscribed"],["oversubscirbe","oversubscribe"],["oversubscirbed","oversubscribed"],["overthere","over there"],["overun","overrun"],["overvise","otherwise"],["overvize","otherwise"],["overvride","override"],["overvrides","overrides"],["overvrite","overwrite"],["overvrites","overwrites"],["overwelm","overwhelm"],["overwelming","overwhelming"],["overwheliming","overwhelming"],["overwiew","overview"],["overwirte","overwrite"],["overwirting","overwriting"],["overwirtten","overwritten"],["overwise","otherwise"],["overwite","overwrite"],["overwites","overwrites"],["overwitten","overwritten"],["overwize","otherwise"],["overwride","overwrite"],["overwriteable","overwritable"],["overwriten","overwritten"],["overwritren","overwritten"],["overwrittes","overwrites"],["overwrittin","overwriting"],["overwritting","overwriting"],["ovewrite","overwrite"],["ovewrites","overwrites"],["ovewriting","overwriting"],["ovewritten","overwritten"],["ovewrote","overwrote"],["ovride","override"],["ovrides","overrides"],["ovrlapped","overlapped"],["ovrridable","overridable"],["ovrridables","overridables"],["ovrwrt","overwrite"],["ovservable","observable"],["ovservation","observation"],["ovserve","observe"],["ovveride","override"],["ovverridden","overridden"],["ovverride","override"],["ovverrides","overrides"],["ovverriding","overriding"],["owener","owner"],["owerflow","overflow"],["owerflowed","overflowed"],["owerflowing","overflowing"],["owerflows","overflows"],["owership","ownership"],["owervrite","overwrite"],["owervrites","overwrites"],["owerwrite","overwrite"],["owerwrites","overwrites"],["owful","awful"],["ownder","owner"],["ownerhsip","ownership"],["ownner","owner"],["ownward","onward"],["ownwer","owner"],["ownwership","ownership"],["owrk","work"],["owudl","would"],["oxigen","oxygen"],["oximoron","oxymoron"],["oxzillary","auxiliary"],["oyu","you"],["p0enis","penis"],["paackage","package"],["pacakge","package"],["pacakges","packages"],["pacakging","packaging"],["paceholder","placeholder"],["pachage","package"],["paches","patches"],["pacht","patch"],["pachtches","patches"],["pachtes","patches"],["pacjage","package"],["pacjages","packages"],["packacge","package"],["packaeg","package"],["packaege","package"],["packaeges","packages"],["packaegs","packages"],["packag","package"],["packags","packages"],["packaing","packaging"],["packats","packets"],["packege","package"],["packge","package"],["packged","packaged"],["packgement","packaging"],["packges'","packages'"],["packges","packages"],["packgs","packages"],["packhage","package"],["packhages","packages"],["packtes","packets"],["pactch","patch"],["pactched","patched"],["pactches","patches"],["padam","param"],["padds","pads"],["pading","padding"],["paermission","permission"],["paermissions","permissions"],["paeth","path"],["pagagraph","paragraph"],["pahses","phases"],["paide","paid"],["painiting","painting"],["paintile","painttile"],["paintin","painting"],["paitience","patience"],["paiting","painting"],["pakage","package"],["pakageimpl","packageimpl"],["pakages","packages"],["pakcage","package"],["paket","packet"],["pakge","package"],["pakvage","package"],["palatte","palette"],["paleolitic","paleolithic"],["palete","palette"],["paliamentarian","parliamentarian"],["Palistian","Palestinian"],["Palistinian","Palestinian"],["Palistinians","Palestinians"],["pallete","palette"],["pallette","palette"],["palletted","paletted"],["paltette","palette"],["paltform","platform"],["pamflet","pamphlet"],["pamplet","pamphlet"],["paniced","panicked"],["panicing","panicking"],["pannel","panel"],["pannels","panels"],["pantomine","pantomime"],["paoition","position"],["paor","pair"],["Papanicalou","Papanicolaou"],["paradime","paradigm"],["paradym","paradigm"],["paraemeter","parameter"],["paraemeters","parameters"],["paraeters","parameters"],["parafanalia","paraphernalia"],["paragaph","paragraph"],["paragaraph","paragraph"],["paragarapha","paragraph"],["paragarph","paragraph"],["paragarphs","paragraphs"],["paragph","paragraph"],["paragpraph","paragraph"],["paragraphy","paragraph"],["paragrphs","paragraphs"],["parahaps","perhaps"],["paralel","parallel"],["paralelising","parallelising"],["paralelism","parallelism"],["paralelizing","parallelizing"],["paralell","parallel"],["paralelle","parallel"],["paralellism","parallelism"],["paralellization","parallelization"],["paralelly","parallelly"],["paralely","parallelly"],["paralle","parallel"],["parallell","parallel"],["parallely","parallelly"],["paralles","parallels"],["parallization","parallelization"],["parallize","parallelize"],["parallized","parallelized"],["parallizes","parallelizes"],["parallizing","parallelizing"],["paralllel","parallel"],["paralllels","parallels"],["paramameter","parameter"],["paramameters","parameters"],["paramater","parameter"],["paramaters","parameters"],["paramemeter","parameter"],["paramemeters","parameters"],["paramemter","parameter"],["paramemters","parameters"],["paramenet","parameter"],["paramenets","parameters"],["paramenter","parameter"],["paramenters","parameters"],["paramer","parameter"],["paramert","parameter"],["paramerters","parameters"],["paramerts","parameters"],["paramete","parameter"],["parameteras","parameters"],["parameteres","parameters"],["parameterical","parametrical"],["parameterts","parameters"],["parametes","parameters"],["parametised","parametrised"],["parametr","parameter"],["parametre","parameter"],["parametreless","parameterless"],["parametres","parameters"],["parametrs","parameters"],["parametter","parameter"],["parametters","parameters"],["paramss","params"],["paramter","parameter"],["paramterer","parameter"],["paramterers","parameters"],["paramteres","parameters"],["paramterize","parameterize"],["paramterless","parameterless"],["paramters","parameters"],["paramtrical","parametrical"],["parana","piranha"],["paraniac","paranoiac"],["paranoya","paranoia"],["parant","parent"],["parantheses","parentheses"],["paranthesis","parenthesis"],["parants","parents"],["paraphanalia","paraphernalia"],["paraphenalia","paraphernalia"],["pararagraph","paragraph"],["pararaph","paragraph"],["parareter","parameter"],["parargaph","paragraph"],["parargaphs","paragraphs"],["pararmeter","parameter"],["pararmeters","parameters"],["parastic","parasitic"],["parastics","parasitics"],["paratheses","parentheses"],["paratmers","parameters"],["paravirutalisation","paravirtualisation"],["paravirutalise","paravirtualise"],["paravirutalised","paravirtualised"],["paravirutalization","paravirtualization"],["paravirutalize","paravirtualize"],["paravirutalized","paravirtualized"],["parctical","practical"],["parctically","practically"],["pard","part"],["parellelogram","parallelogram"],["parellels","parallels"],["parem","param"],["paremeter","parameter"],["paremeters","parameters"],["paremter","parameter"],["paremters","parameters"],["parenthese","parentheses"],["parenthesed","parenthesized"],["parenthesies","parentheses"],["parenthises","parentheses"],["parenthsis","parenthesis"],["parge","large"],["parial","partial"],["parially","partially"],["paricular","particular"],["paricularly","particularly"],["parisitic","parasitic"],["paritally","partially"],["paritals","partials"],["paritial","partial"],["parition","partition"],["paritioning","partitioning"],["paritions","partitions"],["paritition","partition"],["parititioned","partitioned"],["parititioner","partitioner"],["parititiones","partitions"],["parititioning","partitioning"],["parititions","partitions"],["paritiy","parity"],["parituclar","particular"],["parliment","parliament"],["parmaeter","parameter"],["parmaeters","parameters"],["parmameter","parameter"],["parmameters","parameters"],["parmaters","parameters"],["parmeter","parameter"],["parmeters","parameters"],["parmter","parameter"],["parmters","parameters"],["parnoia","paranoia"],["parnter","partner"],["parntered","partnered"],["parntering","partnering"],["parnters","partners"],["parntership","partnership"],["parnterships","partnerships"],["parrakeets","parakeets"],["parralel","parallel"],["parrallel","parallel"],["parrallell","parallel"],["parrallelly","parallelly"],["parrallely","parallelly"],["parrent","parent"],["parseing","parsing"],["parsering","parsing"],["parsin","parsing"],["parstree","parse tree"],["partaining","pertaining"],["partcular","particular"],["partcularity","particularity"],["partcularly","particularly"],["parth","path"],["partialy","partially"],["particalar","particular"],["particalarly","particularly"],["particale","particle"],["particales","particles"],["partically","partially"],["particals","particles"],["particaluar","particular"],["particaluarly","particularly"],["particalur","particular"],["particalurly","particularly"],["particant","participant"],["particaular","particular"],["particaularly","particularly"],["particaulr","particular"],["particaulrly","particularly"],["particlar","particular"],["particlars","particulars"],["particually","particularly"],["particualr","particular"],["particuar","particular"],["particuarly","particularly"],["particulaly","particularly"],["particularily","particularly"],["particulary","particularly"],["particuliar","particular"],["partifular","particular"],["partiiton","partition"],["partiitoned","partitioned"],["partiitoning","partitioning"],["partiitons","partitions"],["partioned","partitioned"],["partirion","partition"],["partirioned","partitioned"],["partirioning","partitioning"],["partirions","partitions"],["partision","partition"],["partisioned","partitioned"],["partisioning","partitioning"],["partisions","partitions"],["partitial","partial"],["partiticipant","participant"],["partiticipants","participants"],["partiticular","particular"],["partitinioning","partitioning"],["partitioing","partitioning"],["partitiones","partitions"],["partitionned","partitioned"],["partitionning","partitioning"],["partitionns","partitions"],["partitionss","partitions"],["partiton","partition"],["partitoned","partitioned"],["partitoning","partitioning"],["partitons","partitions"],["partiula","particular"],["partiular","particular"],["partiularly","particularly"],["partiulars","particulars"],["pasengers","passengers"],["paser","parser"],["pasesd","passed"],["pash","hash"],["pasitioning","positioning"],["pasive","passive"],["pasre","parse"],["pasred","parsed"],["pasres","parses"],["passerbys","passersby"],["passin","passing"],["passiv","passive"],["passowrd","password"],["passs","pass"],["passsed","passed"],["passsing","passing"],["passthrought","passthrough"],["passthruogh","passthrough"],["passtime","pastime"],["passtrough","passthrough"],["passwird","password"],["passwirds","passwords"],["passwrod","password"],["passwrods","passwords"],["pasteing","pasting"],["pasttime","pastime"],["pastural","pastoral"],["pasword","password"],["paswords","passwords"],["patameter","parameter"],["patameters","parameters"],["patcket","packet"],["patckets","packets"],["patern","pattern"],["paterns","patterns"],["pathalogical","pathological"],["pathame","pathname"],["pathames","pathnames"],["pathane","pathname"],["pathced","patched"],["pathes","paths"],["pathign","pathing"],["pathnme","pathname"],["patholgoical","pathological"],["patial","spatial"],["paticular","particular"],["paticularly","particularly"],["patition","partition"],["pattented","patented"],["pattersn","patterns"],["pavillion","pavilion"],["pavillions","pavilions"],["pa\xEDnt","paint"],["pblisher","publisher"],["pbulisher","publisher"],["peacd","peace"],["peacefuland","peaceful and"],["peacify","pacify"],["peageant","pageant"],["peaple","people"],["peaples","peoples"],["pecentage","percentage"],["pecularities","peculiarities"],["pecularity","peculiarity"],["peculure","peculiar"],["pedestrain","pedestrian"],["peding","pending"],["pedning","pending"],["pefer","prefer"],["peferable","preferable"],["peferably","preferably"],["pefered","preferred"],["peference","preference"],["peferences","preferences"],["peferential","preferential"],["peferentially","preferentially"],["peferred","preferred"],["peferring","preferring"],["pefers","prefers"],["peform","perform"],["peformance","performance"],["peformed","performed"],["peforming","performing"],["pege","page"],["pehaps","perhaps"],["peice","piece"],["peicemeal","piecemeal"],["peices","pieces"],["peirod","period"],["peirodical","periodical"],["peirodicals","periodicals"],["peirods","periods"],["penalities","penalties"],["penality","penalty"],["penatly","penalty"],["pendantic","pedantic"],["pendig","pending"],["pendning","pending"],["penerator","penetrator"],["penisula","peninsula"],["penisular","peninsular"],["pennal","panel"],["pennals","panels"],["penninsula","peninsula"],["penninsular","peninsular"],["pennisula","peninsula"],["Pennyslvania","Pennsylvania"],["pensinula","peninsula"],["pensle","pencil"],["penultimante","penultimate"],["peom","poem"],["peoms","poems"],["peopel","people"],["peopels","peoples"],["peopl","people"],["peotry","poetry"],["pepare","prepare"],["peprocessor","preprocessor"],["per-interpeter","per-interpreter"],["perade","parade"],["peraphs","perhaps"],["percentange","percentage"],["percentanges","percentages"],["percentil","percentile"],["percepted","perceived"],["percetage","percentage"],["percetages","percentages"],["percievable","perceivable"],["percievabley","perceivably"],["percievably","perceivably"],["percieve","perceive"],["percieved","perceived"],["percise","precise"],["percisely","precisely"],["percision","precision"],["perenially","perennially"],["peretrator","perpetrator"],["perfec","perfect"],["perfecct","perfect"],["perfecctly","perfectly"],["perfeclty","perfectly"],["perfecly","perfectly"],["perfectably","perfectly"],["perfer","prefer"],["perferable","preferable"],["perferably","preferably"],["perferance","preference"],["perferances","preferences"],["perferct","perfect"],["perferctly","perfectly"],["perferect","perfect"],["perferectly","perfectly"],["perfered","preferred"],["perference","preference"],["perferences","preferences"],["perferm","perform"],["perfermance","performance"],["perfermances","performances"],["perfermence","performance"],["perfermences","performances"],["perferr","prefer"],["perferrable","preferable"],["perferrably","preferably"],["perferrance","preference"],["perferrances","preferences"],["perferred","preferred"],["perferrence","preference"],["perferrences","preferences"],["perferrm","perform"],["perferrmance","performance"],["perferrmances","performances"],["perferrmence","performance"],["perferrmences","performances"],["perferrs","prefers"],["perfers","prefers"],["perfix","prefix"],["perfmormance","performance"],["perfoem","perform"],["perfoemamce","performance"],["perfoemamces","performances"],["perfoemance","performance"],["perfoemanse","performance"],["perfoemanses","performances"],["perfoemant","performant"],["perfoemative","performative"],["perfoemed","performed"],["perfoemer","performer"],["perfoemers","performers"],["perfoeming","performing"],["perfoemnace","performance"],["perfoemnaces","performances"],["perfoems","performs"],["perfom","perform"],["perfomamce","performance"],["perfomamces","performances"],["perfomance","performance"],["perfomanse","performance"],["perfomanses","performances"],["perfomant","performant"],["perfomative","performative"],["perfome","perform"],["perfomeamce","performance"],["perfomeamces","performances"],["perfomeance","performance"],["perfomeanse","performance"],["perfomeanses","performances"],["perfomeant","performant"],["perfomeative","performative"],["perfomed","performed"],["perfomeed","performed"],["perfomeer","performer"],["perfomeers","performers"],["perfomeing","performing"],["perfomenace","performance"],["perfomenaces","performances"],["perfomer","performer"],["perfomers","performers"],["perfomes","performs"],["perfoming","performing"],["perfomnace","performance"],["perfomnaces","performances"],["perfomr","perform"],["perfomramce","performance"],["perfomramces","performances"],["perfomrance","performance"],["perfomranse","performance"],["perfomranses","performances"],["perfomrant","performant"],["perfomrative","performative"],["perfomred","performed"],["perfomrer","performer"],["perfomrers","performers"],["perfomring","performing"],["perfomrnace","performance"],["perfomrnaces","performances"],["perfomrs","performs"],["perfoms","performs"],["perfor","perform"],["perforam","perform"],["perforamed","performed"],["perforaming","performing"],["perforamnce","performance"],["perforamnces","performances"],["perforams","performs"],["perford","performed"],["perforemd","performed"],["performace","performance"],["performaed","performed"],["performamce","performance"],["performane","performance"],["performence","performance"],["performnace","performance"],["perfors","performs"],["perfro","perform"],["perfrom","perform"],["perfromance","performance"],["perfromed","performed"],["perfroming","performing"],["perfroms","performs"],["perhabs","perhaps"],["perhas","perhaps"],["perhasp","perhaps"],["perheaps","perhaps"],["perhpas","perhaps"],["peridic","periodic"],["perihperal","peripheral"],["perihperals","peripherals"],["perimetre","perimeter"],["perimetres","perimeters"],["periode","period"],["periodicaly","periodically"],["periodioc","periodic"],["peripathetic","peripatetic"],["peripherial","peripheral"],["peripherials","peripherals"],["perisist","persist"],["perisisted","persisted"],["perisistent","persistent"],["peristent","persistent"],["perjery","perjury"],["perjorative","pejorative"],["perlciritc","perlcritic"],["permable","permeable"],["permament","permanent"],["permamently","permanently"],["permanant","permanent"],["permanantly","permanently"],["permanentely","permanently"],["permanenty","permanently"],["permantly","permanently"],["permenant","permanent"],["permenantly","permanently"],["permessioned","permissioned"],["permision","permission"],["permisions","permissions"],["permisison","permission"],["permisisons","permissions"],["permissable","permissible"],["permissiosn","permissions"],["permisson","permission"],["permissons","permissions"],["permisssion","permission"],["permisssions","permissions"],["permited","permitted"],["permition","permission"],["permitions","permissions"],["permmission","permission"],["permmissions","permissions"],["permormance","performance"],["permssion","permission"],["permssions","permissions"],["permuatate","permutate"],["permuatated","permutated"],["permuatates","permutates"],["permuatating","permutating"],["permuatation","permutation"],["permuatations","permutations"],["permuation","permutation"],["permuations","permutations"],["permutaion","permutation"],["permutaions","permutations"],["permution","permutation"],["permutions","permutations"],["peroendicular","perpendicular"],["perogative","prerogative"],["peroid","period"],["peroidic","periodic"],["peroidical","periodical"],["peroidically","periodically"],["peroidicals","periodicals"],["peroidicity","periodicity"],["peroids","periods"],["peronal","personal"],["peroperly","properly"],["perosnality","personality"],["perpandicular","perpendicular"],["perpandicularly","perpendicularly"],["perperties","properties"],["perpertrated","perpetrated"],["perperty","property"],["perphas","perhaps"],["perpindicular","perpendicular"],["perpsective","perspective"],["perpsectives","perspectives"],["perrror","perror"],["persan","person"],["persepctive","perspective"],["persepective","perspective"],["persepectives","perspectives"],["perserve","preserve"],["perserved","preserved"],["perserverance","perseverance"],["perservere","persevere"],["perservered","persevered"],["perserveres","perseveres"],["perservering","persevering"],["perserves","preserves"],["perserving","preserving"],["perseverence","perseverance"],["persisit","persist"],["persisited","persisted"],["persistance","persistence"],["persistant","persistent"],["persistantly","persistently"],["persisten","persistent"],["persistented","persisted"],["persited","persisted"],["persitent","persistent"],["personalitie","personality"],["personalitites","personalities"],["personalitity","personality"],["personalitys","personalities"],["personaly","personally"],["personell","personnel"],["personnal","personal"],["personnaly","personally"],["personnell","personnel"],["perspecitve","perspective"],["persuded","persuaded"],["persue","pursue"],["persued","pursued"],["persuing","pursuing"],["persuit","pursuit"],["persuits","pursuits"],["persumably","presumably"],["perticular","particular"],["perticularly","particularly"],["perticulars","particulars"],["pertrub","perturb"],["pertrubation","perturbation"],["pertrubations","perturbations"],["pertrubing","perturbing"],["pertub","perturb"],["pertubate","perturb"],["pertubated","perturbed"],["pertubates","perturbs"],["pertubation","perturbation"],["pertubations","perturbations"],["pertubing","perturbing"],["perturbate","perturb"],["perturbates","perturbs"],["pervious","previous"],["perviously","previously"],["pessiary","pessary"],["petetion","petition"],["pevent","prevent"],["pevents","prevents"],["pezier","bezier"],["phanthom","phantom"],["Pharoah","Pharaoh"],["phasepsace","phasespace"],["phasis","phases"],["phenomenom","phenomenon"],["phenomenonal","phenomenal"],["phenomenonly","phenomenally"],["phenomonenon","phenomenon"],["phenomonon","phenomenon"],["phenonmena","phenomena"],["pheriparials","peripherals"],["Philipines","Philippines"],["philisopher","philosopher"],["philisophical","philosophical"],["philisophy","philosophy"],["Phillipine","Philippine"],["phillipines","philippines"],["Phillippines","Philippines"],["phillosophically","philosophically"],["philospher","philosopher"],["philosphies","philosophies"],["philosphy","philosophy"],["phisical","physical"],["phisically","physically"],["phisicaly","physically"],["phisics","physics"],["phisosophy","philosophy"],["Phonecian","Phoenecian"],["phoneticly","phonetically"],["phongraph","phonograph"],["phote","photo"],["photografic","photographic"],["photografical","photographical"],["photografy","photography"],["photograpic","photographic"],["photograpical","photographical"],["phsical","physical"],["phsyically","physically"],["phtread","pthread"],["phtreads","pthreads"],["phyiscal","physical"],["phyiscally","physically"],["phyiscs","physics"],["phylosophical","philosophical"],["physcial","physical"],["physial","physical"],["physicaly","physically"],["physisist","physicist"],["phython","python"],["phyton","python"],["phy_interace","phy_interface"],["piblisher","publisher"],["pice","piece"],["picoseond","picosecond"],["picoseonds","picoseconds"],["piggypack","piggyback"],["piggypacked","piggybacked"],["pilgrimmage","pilgrimage"],["pilgrimmages","pilgrimages"],["pimxap","pixmap"],["pimxaps","pixmaps"],["pinapple","pineapple"],["pinnaple","pineapple"],["pinoneered","pioneered"],["piont","point"],["pionter","pointer"],["pionts","points"],["piority","priority"],["pipeine","pipeline"],["pipeines","pipelines"],["pipelien","pipeline"],["pipeliens","pipelines"],["pipelin","pipeline"],["pipelinining","pipelining"],["pipelins","pipelines"],["pipepline","pipeline"],["pipeplines","pipelines"],["pipiline","pipeline"],["pipilines","pipelines"],["pipleine","pipeline"],["pipleines","pipelines"],["pipleline","pipeline"],["piplelines","pipelines"],["pitty","pity"],["pivott","pivot"],["pivotting","pivoting"],["pixes","pixels"],["placeemnt","placement"],["placeemnts","placements"],["placehoder","placeholder"],["placeholde","placeholder"],["placeholdes","placeholders"],["placeholer","placeholder"],["placeholers","placeholders"],["placemenet","placement"],["placemenets","placements"],["placholder","placeholder"],["placholders","placeholders"],["placmenet","placement"],["placmenets","placements"],["plaform","platform"],["plaforms","platforms"],["plaftorm","platform"],["plaftorms","platforms"],["plagarism","plagiarism"],["plalform","platform"],["plalforms","platforms"],["planation","plantation"],["plantext","plaintext"],["plantiff","plaintiff"],["plasement","placement"],["plasements","placements"],["plateu","plateau"],["platfarm","platform"],["platfarms","platforms"],["platfform","platform"],["platfforms","platforms"],["platflorm","platform"],["platflorms","platforms"],["platfoem","platform"],["platfom","platform"],["platfomr","platform"],["platfomrs","platforms"],["platfoms","platforms"],["platform-spacific","platform-specific"],["platforma","platforms"],["platformt","platforms"],["platfrom","platform"],["platfroms","platforms"],["plathome","platform"],["platofmr","platform"],["platofmrs","platforms"],["platofms","platforms"],["platofmss","platforms"],["platoform","platform"],["platoforms","platforms"],["platofrm","platform"],["platofrms","platforms"],["plattform","platform"],["plattforms","platforms"],["plausability","plausibility"],["plausable","plausible"],["playble","playable"],["playge","plague"],["playgerise","plagiarise"],["playgerize","plagiarize"],["playgropund","playground"],["playist","playlist"],["playists","playlists"],["playright","playwright"],["playwrite","playwright"],["playwrites","playwrights"],["plcae","place"],["plcaebo","placebo"],["plcaed","placed"],["plcaeholder","placeholder"],["plcaeholders","placeholders"],["plcaement","placement"],["plcaements","placements"],["plcaes","places"],["pleaase","please"],["pleacing","placing"],["pleae","please"],["pleaee","please"],["pleaes","please"],["pleasd","pleased"],["pleasent","pleasant"],["pleasently","pleasantly"],["plebicite","plebiscite"],["plecing","placing"],["plent","plenty"],["plesae","please"],["plesant","pleasant"],["plese","please"],["plesently","pleasantly"],["pliars","pliers"],["pllatforms","platforms"],["ploted","plotted"],["ploting","plotting"],["ploynomial","polynomial"],["ploynomials","polynomials"],["pltform","platform"],["pltforms","platforms"],["plugable","pluggable"],["pluged","plugged"],["pluign","plugin"],["pluigns","plugins"],["pluse","pulse"],["plyotropy","pleiotropy"],["pobular","popular"],["pobularity","popularity"],["podule","module"],["poenis","penis"],["poential","potential"],["poentially","potentially"],["poentials","potentials"],["poeoples","peoples"],["poeple","people"],["poety","poetry"],["pogress","progress"],["poicies","policies"],["poicy","policy"],["poiint","point"],["poiints","points"],["poind","point"],["poindcloud","pointcloud"],["poiner","pointer"],["poing","point"],["poinits","points"],["poinnter","pointer"],["poins","points"],["pointeres","pointers"],["pointes","points"],["pointetr","pointer"],["pointetrs","pointers"],["pointeur","pointer"],["pointseta","poinsettia"],["pointss","points"],["pointzer","pointer"],["poinyent","poignant"],["poisin","poison"],["poisition","position"],["poisitioned","positioned"],["poisitioning","positioning"],["poisitionning","positioning"],["poisitions","positions"],["poistion","position"],["poistioned","positioned"],["poistioning","positioning"],["poistions","positions"],["poistive","positive"],["poistively","positively"],["poistives","positives"],["poistivly","positively"],["poit","point"],["poitd","pointed"],["poited","pointed"],["poiter","pointer"],["poiters","pointers"],["poiting","pointing"],["poitless","pointless"],["poitlessly","pointlessly"],["poitn","point"],["poitnd","pointed"],["poitned","pointed"],["poitner","pointer"],["poitnes","points"],["poitning","pointing"],["poitns","points"],["poits","points"],["poiunter","pointer"],["poject","project"],["pojecting","projecting"],["pojnt","point"],["pojrect","project"],["pojrected","projected"],["pojrecting","projecting"],["pojrection","projection"],["pojrections","projections"],["pojrector","projector"],["pojrectors","projectors"],["pojrects","projects"],["poket","pocket"],["polariy","polarity"],["polgon","polygon"],["polgons","polygons"],["polical","political"],["policiy","policy"],["poligon","polygon"],["poligons","polygons"],["polinator","pollinator"],["polinators","pollinators"],["politican","politician"],["politicans","politicians"],["politicing","politicking"],["pollenate","pollinate"],["polltry","poultry"],["polocies","policies"],["polocy","policy"],["polocys","policies"],["pologon","polygon"],["pologons","polygons"],["polotic","politic"],["polotical","political"],["polotics","politics"],["poltical","political"],["poltry","poultry"],["polute","pollute"],["poluted","polluted"],["polutes","pollutes"],["poluting","polluting"],["polution","pollution"],["polyar","polar"],["polyedral","polyhedral"],["polygond","polygons"],["polygone","polygon"],["polymorpic","polymorphic"],["polynomal","polynomial"],["polynomals","polynomials"],["polyphonyic","polyphonic"],["polypoygon","polypolygon"],["polypoylgons","polypolygons"],["polysaccaride","polysaccharide"],["polysaccharid","polysaccharide"],["pomegranite","pomegranate"],["pomotion","promotion"],["pompay","Pompeii"],["ponint","point"],["poninted","pointed"],["poninter","pointer"],["poninting","pointing"],["ponints","points"],["ponit","point"],["ponitd","pointed"],["ponited","pointed"],["poniter","pointer"],["poniters","pointers"],["ponits","points"],["pont","point"],["pontential","potential"],["ponter","pointer"],["ponting","pointing"],["ponts","points"],["pontuation","punctuation"],["pooint","point"],["poointed","pointed"],["poointer","pointer"],["pooints","points"],["poost","post"],["poperee","potpourri"],["poperties","properties"],["popoen","popen"],["popolate","populate"],["popolated","populated"],["popolates","populates"],["popolating","populating"],["poportional","proportional"],["popoulation","population"],["popoup","popup"],["poppup","popup"],["popularaty","popularity"],["populare","popular"],["populer","popular"],["popullate","populate"],["popullated","populated"],["popuplar","popular"],["popuplarity","popularity"],["popuplate","populate"],["popuplated","populated"],["popuplates","populates"],["popuplating","populating"],["popuplation","population"],["porbably","probably"],["porblem","problem"],["porblems","problems"],["porcess","process"],["porcessed","processed"],["porcesses","processes"],["porcessing","processing"],["porcessor","processor"],["porcessors","processors"],["porgram","program"],["porgrammeer","programmer"],["porgrammeers","programmers"],["porgramming","programming"],["porgrams","programs"],["poriferal","peripheral"],["porject","project"],["porjection","projection"],["porjects","projects"],["porotocol","protocol"],["porotocols","protocols"],["porperties","properties"],["porperty","property"],["porportion","proportion"],["porportional","proportional"],["porportionally","proportionally"],["porportioning","proportioning"],["porportions","proportions"],["porsalin","porcelain"],["porshan","portion"],["porshon","portion"],["portait","portrait"],["portaits","portraits"],["portayed","portrayed"],["portected","protected"],["portguese","Portuguese"],["portioon","portion"],["portraing","portraying"],["portugese","Portuguese"],["portuguease","Portuguese"],["portugues","Portuguese"],["porve","prove"],["porved","proved"],["porven","proven"],["porves","proves"],["porvide","provide"],["porvided","provided"],["porvider","provider"],["porvides","provides"],["porviding","providing"],["porvids","provides"],["porving","proving"],["posative","positive"],["posatives","positives"],["posativity","positivity"],["poseesions","possessions"],["posess","possess"],["posessed","possessed"],["posesses","possesses"],["posessing","possessing"],["posession","possession"],["posessions","possessions"],["posibilities","possibilities"],["posibility","possibility"],["posibilties","possibilities"],["posible","possible"],["posiblity","possibility"],["posibly","possibly"],["posiitive","positive"],["posiitives","positives"],["posiitivity","positivity"],["posisition","position"],["posisitioned","positioned"],["posistion","position"],["positionn","position"],["positionned","positioned"],["positionnes","positions"],["positionning","positioning"],["positionns","positions"],["positiv","positive"],["positivie","positive"],["positivies","positives"],["positivly","positively"],["positoin","position"],["positoined","positioned"],["positoins","positions"],["positonal","positional"],["positoned","positioned"],["positoning","positioning"],["positve","positive"],["positves","positives"],["POSIX-complient","POSIX-compliant"],["pospone","postpone"],["posponed","postponed"],["posption","position"],["possabilites","possibilities"],["possabilities","possibilities"],["possability","possibility"],["possabilties","possibilities"],["possabily","possibly"],["possable","possible"],["possably","possibly"],["possbily","possibly"],["possble","possible"],["possbly","possibly"],["posseses","possesses"],["possesing","possessing"],["possesion","possession"],["possesive","possessive"],["possessess","possesses"],["possiable","possible"],["possibbe","possible"],["possibe","possible"],["possibile","possible"],["possibilies","possibilities"],["possibilites","possibilities"],["possibilitities","possibilities"],["possibiliy","possibility"],["possibillity","possibility"],["possibilties","possibilities"],["possibilty","possibility"],["possibily","possibly"],["possibities","possibilities"],["possibity","possibility"],["possiblble","possible"],["possiblec","possible"],["possiblely","possibly"],["possiblility","possibility"],["possiblilty","possibility"],["possiblities","possibilities"],["possiblity","possibility"],["possiblly","possibly"],["possilbe","possible"],["possily","possibly"],["possition","position"],["possitive","positive"],["possitives","positives"],["possobily","possibly"],["possoble","possible"],["possobly","possibly"],["posssible","possible"],["post-morten","post-mortem"],["post-proces","post-process"],["post-procesing","post-processing"],["postcondtion","postcondition"],["postcondtions","postconditions"],["Postdam","Potsdam"],["postgress","PostgreSQL"],["postgressql","PostgreSQL"],["postgrsql","PostgreSQL"],["posthomous","posthumous"],["postiional","positional"],["postiive","positive"],["postincremend","postincrement"],["postion","position"],["postioned","positioned"],["postions","positions"],["postition","position"],["postitive","positive"],["postitives","positives"],["postive","positive"],["postives","positives"],["postmage","postimage"],["postphoned","postponed"],["postpocessing","postprocessing"],["postponinig","postponing"],["postprocesing","postprocessing"],["postscritp","postscript"],["postulat","postulate"],["postuminus","posthumous"],["postumus","posthumous"],["potatoe","potato"],["potatos","potatoes"],["potencial","potential"],["potencially","potentially"],["potencials","potentials"],["potenial","potential"],["potenially","potentially"],["potentail","potential"],["potentailly","potentially"],["potentails","potentials"],["potental","potential"],["potentally","potentially"],["potentatially","potentially"],["potententially","potentially"],["potentiallly","potentially"],["potentialy","potentially"],["potentiel","potential"],["potentiomenter","potentiometer"],["potition","position"],["potocol","protocol"],["potrait","portrait"],["potrayed","portrayed"],["poulations","populations"],["pount","point"],["pounts","points"],["poupular","popular"],["poverful","powerful"],["poweful","powerful"],["powerfull","powerful"],["powerppc","powerpc"],["pozitive","positive"],["pozitively","positively"],["pozitives","positives"],["ppcheck","cppcheck"],["ppeline","pipeline"],["ppelines","pipelines"],["ppolygons","polygons"],["ppublisher","publisher"],["ppyint","pyint"],["praameter","parameter"],["praameters","parameters"],["prabability","probability"],["prabable","probable"],["prabably","probably"],["pracitcal","practical"],["pracitcally","practically"],["practial","practical"],["practially","practically"],["practicaly","practically"],["practicioner","practitioner"],["practicioners","practitioners"],["practicly","practically"],["practictitioner","practitioner"],["practictitioners","practitioners"],["practicval","practical"],["practioner","practitioner"],["practioners","practitioners"],["praefix","prefix"],["pragam","pragma"],["pragmato","pragma to"],["prairy","prairie"],["pramater","parameter"],["prameter","parameter"],["prameters","parameters"],["prarameter","parameter"],["prarameters","parameters"],["prarie","prairie"],["praries","prairies"],["pratical","practical"],["pratically","practically"],["pratice","practice"],["prcess","process"],["prcesses","processes"],["prcessing","processing"],["prcoess","process"],["prcoessed","processed"],["prcoesses","processes"],["prcoessing","processing"],["prctiles","percentiles"],["prdpagate","propagate"],["prdpagated","propagated"],["prdpagates","propagates"],["prdpagating","propagating"],["prdpagation","propagation"],["prdpagations","propagations"],["prdpagator","propagator"],["prdpagators","propagators"],["pre-condifure","pre-configure"],["pre-condifured","pre-configured"],["pre-confifure","pre-configure"],["pre-confifured","pre-configured"],["pre-confure","pre-configure"],["pre-confured","pre-configured"],["pre-congifure","pre-configure"],["pre-congifured","pre-configured"],["pre-defiend","pre-defined"],["pre-defiened","pre-defined"],["pre-empt","preempt"],["pre-pended","prepended"],["pre-pre-realease","pre-pre-release"],["pre-proces","pre-process"],["pre-procesing","pre-processing"],["pre-realease","pre-release"],["pre-registeres","pre-registers"],["prealocate","preallocate"],["prealocated","preallocated"],["prealocates","preallocates"],["prealocating","preallocating"],["preambule","preamble"],["preamle","preamble"],["preample","preamble"],["preaorocessing","preprocessing"],["preapared","prepared"],["preapre","prepare"],["preaprooved","preapproved"],["prebious","previous"],["precacheed","precached"],["precceding","preceding"],["precding","preceding"],["preced","precede"],["precedencs","precedence"],["precedessor","predecessor"],["preceds","precedes"],["preceision","precision"],["precence","presence"],["precendance","precedence"],["precendances","precedences"],["precende","precedence"],["precendece","precedence"],["precendeces","precedences"],["precendence","precedence"],["precendences","precedences"],["precendencies","precedences"],["precendent","precedent"],["precendes","precedences"],["precending","preceding"],["precends","precedence"],["precenences","preferences"],["precense","presence"],["precentage","percentage"],["precentile","percentile"],["precentiles","percentiles"],["precessing","processing"],["precice","precise"],["precicion","precision"],["precidence","precedence"],["precisily","precisely"],["precisionn","precision"],["precisision","precision"],["precisly","precisely"],["precison","precision"],["precize","precise"],["precomuted","precomputed"],["preconditoner","preconditioner"],["preconditoners","preconditioners"],["precondtion","precondition"],["precondtioner","preconditioner"],["precondtioners","preconditioners"],["precondtionner","preconditioner"],["precondtionners","preconditioners"],["precondtions","preconditions"],["preconfiged","preconfigured"],["precsions","precisions"],["precuation","precaution"],["preculde","preclude"],["preculded","precluded"],["preculdes","precludes"],["precumputed","precomputed"],["precurser","precursor"],["precussion","percussion"],["precussions","percussions"],["predecesor","predecessor"],["predecesors","predecessors"],["predeclarnig","predeclaring"],["predefiend","predefined"],["predefiened","predefined"],["predefiined","predefined"],["predefineds","predefined"],["predessor","predecessor"],["predfined","predefined"],["predicat","predicate"],["predicatble","predictable"],["predicitons","predictions"],["predictible","predictable"],["predifined","predefined"],["predomiantly","predominately"],["preeceding","preceding"],["preemptable","preemptible"],["preesnt","present"],["prefectches","prefetches"],["prefecth","prefetch"],["prefectly","perfectly"],["prefence","preference"],["prefences","preferences"],["preferance","preference"],["preferances","preferences"],["preferecne","preference"],["preferecnes","preferences"],["prefered","preferred"],["preferencfe","preference"],["preferencfes","preferences"],["preferes","prefers"],["prefering","preferring"],["prefernce","preference"],["prefernces","preferences"],["prefernec","preference"],["preferr","prefer"],["preferrable","preferable"],["preferrably","preferably"],["preferrence","preference"],["preferrences","preferences"],["preferrred","preferred"],["prefetchs","prefetches"],["prefex","prefix"],["preffer","prefer"],["prefferable","preferable"],["prefferably","preferably"],["preffered","preferred"],["preffix","prefix"],["preffixed","prefixed"],["preffixes","prefixes"],["preffixing","prefixing"],["prefices","prefixes"],["preformance","performance"],["preformances","performances"],["pregancies","pregnancies"],["prehaps","perhaps"],["preiod","period"],["preivew","preview"],["preivous","previous"],["prejected","projected"],["prejection","projection"],["prejections","projections"],["preliferation","proliferation"],["prelimitary","preliminary"],["premeire","premiere"],["premeired","premiered"],["premillenial","premillennial"],["preminence","preeminence"],["premission","permission"],["premit","permit"],["premits","permits"],["Premonasterians","Premonstratensians"],["premption","preemption"],["premptive","preemptive"],["premptively","preemptively"],["preocess","process"],["preocupation","preoccupation"],["preoperty","property"],["prepair","prepare"],["prepaired","prepared"],["prepand","prepend"],["preparetion","preparation"],["preparetions","preparations"],["prepartion","preparation"],["prepartions","preparations"],["prepate","prepare"],["prepated","prepared"],["prepates","prepares"],["prepatory","preparatory"],["prependet","prepended"],["prepented","prepended"],["preperation","preparation"],["preperations","preparations"],["preponderence","preponderance"],["preppend","prepend"],["preppended","prepended"],["preppendet","prepended"],["preppented","prepended"],["preprend","prepend"],["preprended","prepended"],["prepresent","represent"],["prepresented","represented"],["prepresents","represents"],["preproces","preprocess"],["preprocesing","preprocessing"],["preprocesor","preprocessor"],["preprocesser","preprocessor"],["preprocessers","preprocessors"],["preprocesssing","preprocessing"],["prequisite","prerequisite"],["prequisites","prerequisites"],["prerequesite","prerequisite"],["prerequesites","prerequisites"],["prerequisit","prerequisite"],["prerequisities","prerequisites"],["prerequisits","prerequisites"],["prerequiste","prerequisite"],["prerequsite","prerequisite"],["prerequsites","prerequisites"],["preriod","period"],["preriodic","periodic"],["prersistent","persistent"],["presance","presence"],["prescripe","prescribe"],["prescriped","prescribed"],["prescrition","prescription"],["prescritions","prescriptions"],["presearvation","preservation"],["presearvations","preservations"],["presearve","preserve"],["presearved","preserved"],["presearver","preserver"],["presearves","preserves"],["presearving","preserving"],["presedential","presidential"],["presenece","presence"],["presener","presenter"],["presense","presence"],["presentaion","presentation"],["presentaional","presentational"],["presentaions","presentations"],["presernt","present"],["preserrved","preserved"],["preserv","preserve"],["presetation","presentation"],["preseve","preserve"],["preseved","preserved"],["preseverance","perseverance"],["preseverence","perseverance"],["preseves","preserves"],["preseving","preserving"],["presicion","precision"],["presidenital","presidential"],["presidental","presidential"],["presist","persist"],["presistable","persistable"],["presistance","persistence"],["presistant","persistent"],["presistantly","persistently"],["presisted","persisted"],["presistence","persistence"],["presistency","persistency"],["presistent","persistent"],["presistently","persistently"],["presisting","persisting"],["presistion","precision"],["presists","persists"],["presitgious","prestigious"],["presmissions","permissions"],["presntation","presentation"],["presntations","presentations"],["prespective","perspective"],["presreved","preserved"],["pressent","present"],["pressentation","presentation"],["pressented","presented"],["pressre","pressure"],["pressue","pressure"],["pressues","pressures"],["prestigeous","prestigious"],["prestigous","prestigious"],["presuambly","presumably"],["presumabely","presumably"],["presumaby","presumably"],["presumebly","presumably"],["presumely","presumably"],["presumibly","presumably"],["pretaining","pertaining"],["pretect","protect"],["pretected","protected"],["pretecting","protecting"],["pretection","protection"],["pretects","protects"],["pretendend","pretended"],["pretty-printter","pretty-printer"],["preveiw","preview"],["preveiwed","previewed"],["preveiwer","previewer"],["preveiwers","previewers"],["preveiws","previews"],["prevelance","prevalence"],["prevelant","prevalent"],["preven","prevent"],["prevend","prevent"],["preverse","perverse"],["preverses","preserves"],["preverve","preserve"],["prevew","preview"],["prevews","previews"],["previewd","previewed"],["previious","previous"],["previlege","privilege"],["previoous","previous"],["previos","previous"],["previosly","previously"],["previosu","previous"],["previosuly","previously"],["previou","previous"],["previouls","previous"],["previoulsy","previously"],["previouly","previously"],["previouse","previous"],["previousl","previously"],["previousy","previously"],["previsou","previous"],["previsouly","previously"],["previuous","previous"],["previus","previous"],["previvous","previous"],["prevoius","previous"],["prevous","previous"],["prevously","previously"],["prewview","preview"],["prexisting","preexisting"],["prexixed","prefixed"],["prfer","prefer"],["prferable","preferable"],["prferables","preferable"],["prference","preference"],["prferred","preferred"],["prgram","program"],["priave","private"],["pricipal","principal"],["priciple","principle"],["priciples","principles"],["pricision","precision"],["priestood","priesthood"],["primaray","primary"],["primarely","primarily"],["primarly","primarily"],["primative","primitive"],["primatively","primitively"],["primatives","primitives"],["primay","primary"],["primeter","perimeter"],["primitave","primitive"],["primitiv","primitive"],["primitve","primitive"],["primitves","primitives"],["primive","primitive"],["primordal","primordial"],["princeple","principle"],["princeples","principles"],["princible","principle"],["principaly","principality"],["principial","principal"],["principlaity","principality"],["principly","principally"],["princliple","principle"],["prind","print"],["prinicipal","principal"],["prining","printing"],["printting","printing"],["prioirties","priorities"],["prioirty","priority"],["prioritiy","priority"],["priorization","prioritization"],["priorizations","prioritizations"],["priorty","priority"],["priot","prior"],["priotise","prioritise"],["priotised","prioritised"],["priotising","prioritising"],["priotities","priorities"],["priotitize","prioritize"],["priotity","priority"],["priotized","prioritized"],["priotizing","prioritizing"],["priots","priors"],["prirority","priority"],["pris","prise"],["priting","printing"],["privalege","privilege"],["privaleges","privileges"],["privaye","private"],["privcy","privacy"],["privde","provide"],["priveledge","privilege"],["priveledged","privileged"],["priveledges","privileges"],["privelege","privilege"],["priveleged","privileged"],["priveleges","privileges"],["privelige","privilege"],["priveliged","privileged"],["priveliges","privileges"],["privelleges","privileges"],["priviate","private"],["privide","provide"],["privided","provided"],["privides","provides"],["prividing","providing"],["priview","preview"],["privilage","privilege"],["privilaged","privileged"],["privilages","privileges"],["priviledge","privilege"],["priviledged","privileged"],["priviledges","privileges"],["privilidge","privilege"],["privilidged","privileged"],["privilidges","privileges"],["privilige","privilege"],["priviliged","privileged"],["priviliges","privileges"],["privious","previous"],["priviously","previously"],["privision","provision"],["privisional","provisional"],["privisions","provisions"],["privledge","privilege"],["privleges","privileges"],["privte","private"],["prject","project"],["prjecting","projecting"],["prjection","projection"],["prjections","projections"],["prjects","projects"],["prmitive","primitive"],["prmitives","primitives"],["prmopting","prompting"],["proable","probable"],["proably","probably"],["probabalistic","probabilistic"],["probabaly","probably"],["probabilaty","probability"],["probabilisitic","probabilistic"],["probabilites","probabilities"],["probabilty","probability"],["probablay","probably"],["probablistic","probabilistic"],["probablities","probabilities"],["probablity","probability"],["probablly","probably"],["probaby","probably"],["probalby","probably"],["probalibity","probability"],["probaly","probably"],["probbably","probably"],["probbailities","probabilities"],["probbaility","probability"],["probbaly","probably"],["probbed","probed"],["probblem","problem"],["probblems","problems"],["probblez","problem"],["probblezs","problems"],["probbly","probably"],["probelm","problem"],["probelmatic","problematic"],["probelms","problems"],["probem","problem"],["proberly","properly"],["problably","probably"],["problaem","problem"],["problaems","problems"],["problamatic","problematic"],["probleme","problem"],["problemes","problems"],["problimatic","problematic"],["problme","problem"],["problmes","problems"],["probly","probably"],["procceed","proceed"],["proccesor","processor"],["proccesors","processors"],["proccess","process"],["proccessed","processed"],["proccesses","processes"],["proccessing","processing"],["proccessor","processor"],["proccessors","processors"],["procecure","procedure"],["procecures","procedures"],["procedger","procedure"],["procedings","proceedings"],["procedre","procedure"],["procedres","procedures"],["proceedes","proceeds"],["proceedure","procedure"],["proceedures","procedures"],["proceeed","proceed"],["proceeeded","proceeded"],["proceeeding","proceeding"],["proceeeds","proceeds"],["proceeedures","procedures"],["procees","process"],["proceesed","processed"],["proceesor","processor"],["procelain","porcelain"],["procelains","porcelains"],["procentual","percentual"],["proces","process"],["procesed","processed"],["proceses","processes"],["proceshandler","processhandler"],["procesing","processing"],["procesor","processor"],["processeed","processed"],["processees","processes"],["processer","processor"],["processess","processes"],["processessing","processing"],["processig","processing"],["processinf","processing"],["processore","processor"],["processpr","processor"],["processsed","processed"],["processses","processes"],["processsing","processing"],["processsors","processors"],["procesure","procedure"],["procesures","procedures"],["procide","provide"],["procided","provided"],["procides","provides"],["proclaimation","proclamation"],["proclamed","proclaimed"],["proclaming","proclaiming"],["proclomation","proclamation"],["procoess","process"],["procoessed","processed"],["procoessing","processing"],["proctect","protect"],["proctected","protected"],["proctecting","protecting"],["proctects","protects"],["procteted","protected"],["procude","produce"],["procuded","produced"],["prodceding","proceeding"],["prodecure","procedure"],["producable","producible"],["producables","producible"],["produciton","production"],["producitons","productions"],["producted","produced"],["productiviy","productivity"],["produkt","product"],["produse","produce"],["prodused","produced"],["produses","produces"],["proedural","procedural"],["proedure","procedure"],["proedures","procedures"],["proejct","project"],["proejcted","projected"],["proejcting","projecting"],["proejction","projection"],["proepr","proper"],["proeprly","properly"],["proeprties","properties"],["proeprty","property"],["proerties","properties"],["proessing","processing"],["profesional","professional"],["profesionally","professionally"],["profesionals","professionals"],["profesor","professor"],["professer","professor"],["proffesed","professed"],["proffesion","profession"],["proffesional","professional"],["proffesor","professor"],["proffessor","professor"],["profie","profile"],["profied","profiled"],["profier","profiler"],["profies","profiles"],["profilic","prolific"],["profirle","profile"],["profirled","profiled"],["profirler","profiler"],["profirles","profiles"],["profissional","professional"],["proflie","profile"],["proflier","profiler"],["proflies","profiles"],["profling","profiling"],["profund","profound"],["profundly","profoundly"],["progagate","propagate"],["progagated","propagated"],["progagates","propagates"],["progagating","propagating"],["progagation","propagation"],["progagations","propagations"],["progagator","propagator"],["progagators","propagators"],["progam","program"],["progamability","programmability"],["progamable","programmable"],["progamatic","programmatic"],["progamatically","programmatically"],["progamed","programmed"],["progamer","programmer"],["progamers","programmers"],["progaming","programming"],["progamm","program"],["progammability","programmability"],["progammable","programmable"],["progammatic","programmatic"],["progammatically","programmatically"],["progammed","programmed"],["progammer","programmer"],["progammers","programmers"],["progamming","programming"],["progamms","programs"],["progams","programs"],["progapate","propagate"],["progapated","propagated"],["progapates","propagates"],["progapating","propagating"],["progapation","propagation"],["progapations","propagations"],["progapator","propagator"],["progapators","propagators"],["progaramm","program"],["progarammability","programmability"],["progarammable","programmable"],["progarammatic","programmatic"],["progarammatically","programmatically"],["progarammed","programmed"],["progarammer","programmer"],["progarammers","programmers"],["progaramming","programming"],["progaramms","programs"],["progarm","program"],["progarmability","programmability"],["progarmable","programmable"],["progarmatic","programmatic"],["progarmatically","programmatically"],["progarmed","programmed"],["progarmer","programmer"],["progarmers","programmers"],["progarming","programming"],["progarms","programs"],["progate","propagate"],["progated","propagated"],["progates","propagates"],["progating","propagating"],["progation","propagation"],["progations","propagations"],["progess","progress"],["progessbar","progressbar"],["progessed","progressed"],["progesses","progresses"],["progessive","progressive"],["progessor","progressor"],["progesss","progress"],["progesssive","progressive"],["progidy","prodigy"],["programable","programmable"],["programatic","programmatic"],["programatically","programmatically"],["programattically","programmatically"],["programd","programmed"],["programemer","programmer"],["programemers","programmers"],["programers","programmers"],["programmaticaly","programmatically"],["programmend","programmed"],["programmetically","programmatically"],["programmical","programmatical"],["programmign","programming"],["programmming","programming"],["programms","programs"],["progreess","progress"],["progres","progress"],["progresively","progressively"],["progresss","progress"],["progrewss","progress"],["progrmae","program"],["progrss","progress"],["prohabition","prohibition"],["prohibitted","prohibited"],["prohibitting","prohibiting"],["prohibt","prohibit"],["prohibted","prohibited"],["prohibting","prohibiting"],["prohibts","prohibits"],["proirity","priority"],["projct's","project's"],["projct","project"],["projction","projection"],["projctions","projections"],["projctor","projector"],["projctors","projectors"],["projcts","projects"],["projectd","projected"],["projectio","projection"],["projecttion","projection"],["projet","project"],["projetction","projection"],["projeted","projected"],["projeting","projecting"],["projets","projects"],["prolbems","problems"],["prolem","problem"],["prolematic","problematic"],["prolems","problems"],["prologomena","prolegomena"],["prominance","prominence"],["prominant","prominent"],["prominantly","prominently"],["promis","promise"],["promiscous","promiscuous"],["promiss","promise"],["promissed","promised"],["promisses","promises"],["promissing","promising"],["promixity","proximity"],["prommpt","prompt"],["prommpts","prompts"],["promotted","promoted"],["promprted","prompted"],["promps","prompts"],["promt","prompt"],["promts","prompts"],["pronnounced","pronounced"],["pronomial","pronominal"],["prononciation","pronunciation"],["pronouce","pronounce"],["pronouced","pronounced"],["pronounched","pronounced"],["pronounciation","pronunciation"],["pronunce","pronounce"],["proocecure","procedure"],["proocecures","procedures"],["proocedure","procedure"],["proocedures","procedures"],["proocess","process"],["proocessed","processed"],["proocesses","processes"],["proocessing","processing"],["proocol","protocol"],["proocols","protocols"],["prooduce","produce"],["prooduced","produced"],["prooduces","produces"],["prooduct","product"],["prooerties","properties"],["prooerty","property"],["prool","pool"],["prooof","proof"],["prooper","proper"],["prooperly","properly"],["prooperties","properties"],["prooperty","property"],["proose","propose"],["proosed","proposed"],["prooses","proposes"],["proove","prove"],["prooved","proved"],["prooven","proven"],["prooves","proves"],["prooving","proving"],["proovread","proofread"],["prooxies","proxies"],["prooxy","proxy"],["propably","probably"],["propage","propagate"],["propatagion","propagation"],["propator","propagator"],["propators","propagators"],["propbably","probably"],["propely","properly"],["propeoperties","properties"],["propereties","properties"],["properety","property"],["properies","properties"],["properites","properties"],["properities","properties"],["properries","properties"],["properrt","property"],["properrys","properties"],["propert","property"],["properteis","properties"],["propertery","property"],["propertion","proportion"],["propertional","proportional"],["propertions","proportions"],["propertise","properties"],["propertu","property"],["propertus","properties"],["propertys","properties"],["propertyst","properties"],["propeties","properties"],["propetry","property"],["propetrys","properties"],["propety","property"],["propetys","properties"],["propgated","propagated"],["prophacy","prophecy"],["propietary","proprietary"],["propietries","proprietaries"],["propietry","proprietary"],["propigate","propagate"],["propigation","propagation"],["proplem","problem"],["propmt","prompt"],["propmted","prompted"],["propmter","prompter"],["propmts","prompts"],["propoagate","propagate"],["propoerties","properties"],["propoerty","property"],["propoganda","propaganda"],["propogate","propagate"],["propogated","propagated"],["propogates","propagates"],["propogating","propagating"],["propogation","propagation"],["proporpotion","proportion"],["proporpotional","proportional"],["proportianal","proportional"],["proporties","properties"],["proportinal","proportional"],["proporty","property"],["propostion","proposition"],["proppely","properly"],["propper","proper"],["propperly","properly"],["propperties","properties"],["propperty","property"],["proprely","properly"],["propreties","properties"],["proprety","property"],["proprietory","proprietary"],["proproable","probable"],["proproably","probably"],["proprocessed","preprocessed"],["proprogate","propagate"],["proprogated","propagated"],["proprogates","propagates"],["proprogating","propagating"],["proprogation","propagation"],["proprogations","propagations"],["proprogator","propagator"],["proprogators","propagators"],["proproties","properties"],["proprotion","proportion"],["proprotional","proportional"],["proprotionally","proportionally"],["proprotions","proportions"],["proprty","property"],["propt","prompt"],["propteries","properties"],["propterties","properties"],["propterty","property"],["propvider","provider"],["prority","priority"],["prorotype","prototype"],["proseletyzing","proselytizing"],["prosess","process"],["prosessor","processor"],["protable","portable"],["protaganist","protagonist"],["protaganists","protagonists"],["protcol","protocol"],["protcols","protocols"],["protcool","protocol"],["protcools","protocols"],["protcted","protected"],["protecion","protection"],["protectiv","protective"],["protedcted","protected"],["protential","potential"],["protext","protect"],["protocal","protocol"],["protocals","protocols"],["protocl","protocol"],["protocls","protocols"],["protoco","protocol"],["protocoll","protocol"],["protocolls","protocols"],["protocos","protocols"],["protoganist","protagonist"],["protoge","protege"],["protol","protocol"],["protols","protocols"],["prototyes","prototypes"],["protoype","prototype"],["protoyped","prototyped"],["protoypes","prototypes"],["protoyping","prototyping"],["protoytpe","prototype"],["protoytpes","prototypes"],["protrait","portrait"],["protraits","portraits"],["protrayed","portrayed"],["protruberance","protuberance"],["protruberances","protuberances"],["prouncements","pronouncements"],["provacative","provocative"],["provded","provided"],["provder","provider"],["provdided","provided"],["provdie","provide"],["provdied","provided"],["provdies","provides"],["provding","providing"],["provences","provinces"],["provicde","provide"],["provicded","provided"],["provicdes","provides"],["provicial","provincial"],["provideres","providers"],["providewd","provided"],["providfers","providers"],["provieded","provided"],["proviedes","provides"],["provinicial","provincial"],["provisioing","provisioning"],["provisiong","provisioning"],["provisionging","provisioning"],["provisiosn","provision"],["provisonal","provisional"],["provive","provide"],["provived","provided"],["provives","provides"],["proviving","providing"],["provode","provide"],["provoded","provided"],["provoder","provider"],["provodes","provides"],["provoding","providing"],["provods","provides"],["provsioning","provisioning"],["proximty","proximity"],["prozess","process"],["prpeparations","preparations"],["prpose","propose"],["prposed","proposed"],["prposer","proposer"],["prposers","proposers"],["prposes","proposes"],["prposiing","proposing"],["prrcision","precision"],["prrottypes","prototypes"],["prset","preset"],["prsets","presets"],["prtinf","printf"],["prufe","proof"],["prviate","private"],["psaswd","passwd"],["pseude","pseudo"],["pseudononymous","pseudonymous"],["pseudonyn","pseudonym"],["pseudopoential","pseudopotential"],["pseudopoentials","pseudopotentials"],["pseudorinverse","pseudoinverse"],["pseuo-palette","pseudo-palette"],["psitoin","position"],["psitoined","positioned"],["psitoins","positions"],["psot","post"],["psots","posts"],["psrameter","parameter"],["pssed","passed"],["pssibility","possibility"],["psudo","pseudo"],["psudoinverse","pseudoinverse"],["psuedo","pseudo"],["psuedo-fork","pseudo-fork"],["psuedoinverse","pseudoinverse"],["psuedolayer","pseudolayer"],["psuh","push"],["psychadelic","psychedelic"],["psycology","psychology"],["psyhic","psychic"],["ptd","pdf"],["ptherad","pthread"],["ptherads","pthreads"],["pthon","python"],["pthred","pthread"],["pthreds","pthreads"],["ptorions","portions"],["ptrss","press"],["pubilsh","publish"],["pubilshed","published"],["pubilsher","publisher"],["pubilshers","publishers"],["pubilshing","publishing"],["pubish","publish"],["pubished","published"],["pubisher","publisher"],["pubishers","publishers"],["pubishing","publishing"],["publcation","publication"],["publcise","publicise"],["publcize","publicize"],["publiaher","publisher"],["publically","publicly"],["publicaly","publicly"],["publiched","published"],["publicher","publisher"],["publichers","publishers"],["publiches","publishes"],["publiching","publishing"],["publihsed","published"],["publihser","publisher"],["publised","published"],["publisehd","published"],["publisehr","publisher"],["publisehrs","publishers"],["publiser","publisher"],["publisers","publishers"],["publisged","published"],["publisger","publisher"],["publisgers","publishers"],["publishd","published"],["publisheed","published"],["publisherr","publisher"],["publishher","publisher"],["publishor","publisher"],["publishr","publisher"],["publishre","publisher"],["publishrs","publishers"],["publissher","publisher"],["publlisher","publisher"],["publsh","publish"],["publshed","published"],["publsher","publisher"],["publshers","publishers"],["publshing","publishing"],["publsih","publish"],["publsihed","published"],["publsiher","publisher"],["publsihers","publishers"],["publsihes","publishes"],["publsihing","publishing"],["publuc","public"],["publucation","publication"],["publush","publish"],["publusher","publisher"],["publushers","publishers"],["publushes","publishes"],["publushing","publishing"],["puchasing","purchasing"],["Pucini","Puccini"],["Puertorrican","Puerto Rican"],["Puertorricans","Puerto Ricans"],["pulisher","publisher"],["pullrequest","pull request"],["pullrequests","pull requests"],["pumkin","pumpkin"],["punctation","punctuation"],["puplar","popular"],["puplarity","popularity"],["puplate","populate"],["puplated","populated"],["puplates","populates"],["puplating","populating"],["puplation","population"],["puplisher","publisher"],["pupose","purpose"],["puposes","purposes"],["pupulated","populated"],["purcahed","purchased"],["purcahse","purchase"],["purgest","purges"],["puritannical","puritanical"],["purposedly","purposely"],["purpotedly","purportedly"],["purpse","purpose"],["pursuade","persuade"],["pursuaded","persuaded"],["pursuades","persuades"],["pusehd","pushed"],["pususading","persuading"],["puting","putting"],["putpose","purpose"],["putposed","purposed"],["putposes","purposes"],["pwoer","power"],["pxoxied","proxied"],["pxoxies","proxies"],["pxoxy","proxy"],["pyhon","python"],["pyhsical","physical"],["pyhsically","physically"],["pyhsicals","physicals"],["pyhsicaly","physically"],["pyhthon","python"],["pyhton","python"],["pyramide","pyramid"],["pyramides","pyramids"],["pyrhon","python"],["pyscic","psychic"],["pythin","python"],["pythjon","python"],["pytnon","python"],["pytohn","python"],["pyton","python"],["pytyon","python"],["qest","quest"],["qests","quests"],["qeuest","quest"],["qeuests","quests"],["qeueue","queue"],["qeust","quest"],["qeusts","quests"],["qiest","quest"],["qiests","quests"],["qith","with"],["qoute","quote"],["qouted","quoted"],["qoutes","quotes"],["qouting","quoting"],["quadddec","quaddec"],["quadranle","quadrangle"],["quailified","qualified"],["qualfied","qualified"],["qualfy","qualify"],["qualifer","qualifier"],["qualitification","qualification"],["qualitifications","qualifications"],["quanitified","quantified"],["quantaties","quantities"],["quantaty","quantity"],["quantitites","quantities"],["quantititive","quantitative"],["quantitity","quantity"],["quantitiy","quantity"],["quarantaine","quarantine"],["quarentine","quarantine"],["quartenion","quaternion"],["quartenions","quaternions"],["quartically","quadratically"],["quatation","quotation"],["quater","quarter"],["quation","equation"],["quations","equations"],["quckstarter","quickstarter"],["qudrangles","quadrangles"],["quee","queue"],["Queenland","Queensland"],["queing","queueing"],["queiried","queried"],["queisce","quiesce"],["queriable","queryable"],["quering","querying"],["querries","queries"],["queryies","queries"],["queryinterace","queryinterface"],["querys","queries"],["queset","quest"],["quesets","quests"],["quesiton","question"],["quesitonable","questionable"],["quesitons","questions"],["quesr","quest"],["quesrs","quests"],["questionaire","questionnaire"],["questionnair","questionnaire"],["questoin","question"],["questoins","questions"],["questonable","questionable"],["queu","queue"],["queueud","queued"],["queus","queues"],["quew","queue"],["quickier","quicker"],["quicklyu","quickly"],["quickyl","quickly"],["quicly","quickly"],["quiessent","quiescent"],["quiests","quests"],["quikc","quick"],["quinessential","quintessential"],["quiting","quitting"],["quitt","quit"],["quitted","quit"],["quizes","quizzes"],["quotaion","quotation"],["quoteed","quoted"],["quottes","quotes"],["quried","queried"],["quroum","quorum"],["qust","quest"],["qusts","quests"],["rabinnical","rabbinical"],["racaus","raucous"],["ractise","practise"],["radation","radiation"],["radiactive","radioactive"],["radiaton","radiation"],["radify","ratify"],["radiobuttion","radiobutton"],["radis","radix"],["rady","ready"],["raed","read"],["raeding","reading"],["raeds","reads"],["raedy","ready"],["raelly","really"],["raisedd","raised"],["ralation","relation"],["randmom","random"],["randomally","randomly"],["raoming","roaming"],["raotat","rotate"],["raotate","rotate"],["raotated","rotated"],["raotates","rotates"],["raotating","rotating"],["raotation","rotation"],["raotations","rotations"],["raotats","rotates"],["raplace","replace"],["raplacing","replacing"],["rapresent","represent"],["rapresentation","representation"],["rapresented","represented"],["rapresenting","representing"],["rapresents","represents"],["rapsberry","raspberry"],["rarelly","rarely"],["rarified","rarefied"],["rasberry","raspberry"],["rasie","raise"],["rasied","raised"],["rasies","raises"],["rasiing","raising"],["rasing","raising"],["rasons","reasons"],["raspbery","raspberry"],["raspoberry","raspberry"],["rathar","rather"],["rathern","rather"],["rcall","recall"],["rceate","create"],["rceating","creating"],["rduce","reduce"],["re-attachement","re-attachment"],["re-defiend","re-defined"],["re-engeneer","re-engineer"],["re-engeneering","re-engineering"],["re-evaulated","re-evaluated"],["re-impliment","re-implement"],["re-implimenting","re-implementing"],["re-negatiotiable","re-negotiable"],["re-negatiotiate","re-negotiate"],["re-negatiotiated","re-negotiated"],["re-negatiotiates","re-negotiates"],["re-negatiotiating","re-negotiating"],["re-negatiotiation","re-negotiation"],["re-negatiotiations","re-negotiations"],["re-negatiotiator","re-negotiator"],["re-negatiotiators","re-negotiators"],["re-negoable","re-negotiable"],["re-negoate","re-negotiate"],["re-negoated","re-negotiated"],["re-negoates","re-negotiates"],["re-negoatiable","re-negotiable"],["re-negoatiate","re-negotiate"],["re-negoatiated","re-negotiated"],["re-negoatiates","re-negotiates"],["re-negoatiating","re-negotiating"],["re-negoatiation","re-negotiation"],["re-negoatiations","re-negotiations"],["re-negoatiator","re-negotiator"],["re-negoatiators","re-negotiators"],["re-negoating","re-negotiating"],["re-negoation","re-negotiation"],["re-negoations","re-negotiations"],["re-negoator","re-negotiator"],["re-negoators","re-negotiators"],["re-negociable","re-negotiable"],["re-negociate","re-negotiate"],["re-negociated","re-negotiated"],["re-negociates","re-negotiates"],["re-negociating","re-negotiating"],["re-negociation","re-negotiation"],["re-negociations","re-negotiations"],["re-negociator","re-negotiator"],["re-negociators","re-negotiators"],["re-negogtiable","re-negotiable"],["re-negogtiate","re-negotiate"],["re-negogtiated","re-negotiated"],["re-negogtiates","re-negotiates"],["re-negogtiating","re-negotiating"],["re-negogtiation","re-negotiation"],["re-negogtiations","re-negotiations"],["re-negogtiator","re-negotiator"],["re-negogtiators","re-negotiators"],["re-negoitable","re-negotiable"],["re-negoitate","re-negotiate"],["re-negoitated","re-negotiated"],["re-negoitates","re-negotiates"],["re-negoitating","re-negotiating"],["re-negoitation","re-negotiation"],["re-negoitations","re-negotiations"],["re-negoitator","re-negotiator"],["re-negoitators","re-negotiators"],["re-negoptionsotiable","re-negotiable"],["re-negoptionsotiate","re-negotiate"],["re-negoptionsotiated","re-negotiated"],["re-negoptionsotiates","re-negotiates"],["re-negoptionsotiating","re-negotiating"],["re-negoptionsotiation","re-negotiation"],["re-negoptionsotiations","re-negotiations"],["re-negoptionsotiator","re-negotiator"],["re-negoptionsotiators","re-negotiators"],["re-negosiable","re-negotiable"],["re-negosiate","re-negotiate"],["re-negosiated","re-negotiated"],["re-negosiates","re-negotiates"],["re-negosiating","re-negotiating"],["re-negosiation","re-negotiation"],["re-negosiations","re-negotiations"],["re-negosiator","re-negotiator"],["re-negosiators","re-negotiators"],["re-negotable","re-negotiable"],["re-negotaiable","re-negotiable"],["re-negotaiate","re-negotiate"],["re-negotaiated","re-negotiated"],["re-negotaiates","re-negotiates"],["re-negotaiating","re-negotiating"],["re-negotaiation","re-negotiation"],["re-negotaiations","re-negotiations"],["re-negotaiator","re-negotiator"],["re-negotaiators","re-negotiators"],["re-negotaible","re-negotiable"],["re-negotaite","re-negotiate"],["re-negotaited","re-negotiated"],["re-negotaites","re-negotiates"],["re-negotaiting","re-negotiating"],["re-negotaition","re-negotiation"],["re-negotaitions","re-negotiations"],["re-negotaitor","re-negotiator"],["re-negotaitors","re-negotiators"],["re-negotate","re-negotiate"],["re-negotated","re-negotiated"],["re-negotates","re-negotiates"],["re-negotatiable","re-negotiable"],["re-negotatiate","re-negotiate"],["re-negotatiated","re-negotiated"],["re-negotatiates","re-negotiates"],["re-negotatiating","re-negotiating"],["re-negotatiation","re-negotiation"],["re-negotatiations","re-negotiations"],["re-negotatiator","re-negotiator"],["re-negotatiators","re-negotiators"],["re-negotatible","re-negotiable"],["re-negotatie","re-negotiate"],["re-negotatied","re-negotiated"],["re-negotaties","re-negotiates"],["re-negotating","re-negotiating"],["re-negotation","re-negotiation"],["re-negotations","re-negotiations"],["re-negotatior","re-negotiator"],["re-negotatiors","re-negotiators"],["re-negotator","re-negotiator"],["re-negotators","re-negotiators"],["re-negothiable","re-negotiable"],["re-negothiate","re-negotiate"],["re-negothiated","re-negotiated"],["re-negothiates","re-negotiates"],["re-negothiating","re-negotiating"],["re-negothiation","re-negotiation"],["re-negothiations","re-negotiations"],["re-negothiator","re-negotiator"],["re-negothiators","re-negotiators"],["re-negotible","re-negotiable"],["re-negoticable","re-negotiable"],["re-negoticate","re-negotiate"],["re-negoticated","re-negotiated"],["re-negoticates","re-negotiates"],["re-negoticating","re-negotiating"],["re-negotication","re-negotiation"],["re-negotications","re-negotiations"],["re-negoticator","re-negotiator"],["re-negoticators","re-negotiators"],["re-negotioable","re-negotiable"],["re-negotioate","re-negotiate"],["re-negotioated","re-negotiated"],["re-negotioates","re-negotiates"],["re-negotioating","re-negotiating"],["re-negotioation","re-negotiation"],["re-negotioations","re-negotiations"],["re-negotioator","re-negotiator"],["re-negotioators","re-negotiators"],["re-negotioble","re-negotiable"],["re-negotion","re-negotiation"],["re-negotionable","re-negotiable"],["re-negotionate","re-negotiate"],["re-negotionated","re-negotiated"],["re-negotionates","re-negotiates"],["re-negotionating","re-negotiating"],["re-negotionation","re-negotiation"],["re-negotionations","re-negotiations"],["re-negotionator","re-negotiator"],["re-negotionators","re-negotiators"],["re-negotions","re-negotiations"],["re-negotiotable","re-negotiable"],["re-negotiotate","re-negotiate"],["re-negotiotated","re-negotiated"],["re-negotiotates","re-negotiates"],["re-negotiotating","re-negotiating"],["re-negotiotation","re-negotiation"],["re-negotiotations","re-negotiations"],["re-negotiotator","re-negotiator"],["re-negotiotators","re-negotiators"],["re-negotiote","re-negotiate"],["re-negotioted","re-negotiated"],["re-negotiotes","re-negotiates"],["re-negotioting","re-negotiating"],["re-negotiotion","re-negotiation"],["re-negotiotions","re-negotiations"],["re-negotiotor","re-negotiator"],["re-negotiotors","re-negotiators"],["re-negotitable","re-negotiable"],["re-negotitae","re-negotiate"],["re-negotitaed","re-negotiated"],["re-negotitaes","re-negotiates"],["re-negotitaing","re-negotiating"],["re-negotitaion","re-negotiation"],["re-negotitaions","re-negotiations"],["re-negotitaor","re-negotiator"],["re-negotitaors","re-negotiators"],["re-negotitate","re-negotiate"],["re-negotitated","re-negotiated"],["re-negotitates","re-negotiates"],["re-negotitating","re-negotiating"],["re-negotitation","re-negotiation"],["re-negotitations","re-negotiations"],["re-negotitator","re-negotiator"],["re-negotitators","re-negotiators"],["re-negotite","re-negotiate"],["re-negotited","re-negotiated"],["re-negotites","re-negotiates"],["re-negotiting","re-negotiating"],["re-negotition","re-negotiation"],["re-negotitions","re-negotiations"],["re-negotitor","re-negotiator"],["re-negotitors","re-negotiators"],["re-negoziable","re-negotiable"],["re-negoziate","re-negotiate"],["re-negoziated","re-negotiated"],["re-negoziates","re-negotiates"],["re-negoziating","re-negotiating"],["re-negoziation","re-negotiation"],["re-negoziations","re-negotiations"],["re-negoziator","re-negotiator"],["re-negoziators","re-negotiators"],["re-realease","re-release"],["re-uplad","re-upload"],["re-upladed","re-uploaded"],["re-uplader","re-uploader"],["re-upladers","re-uploaders"],["re-uplading","re-uploading"],["re-uplads","re-uploads"],["re-uplaod","re-upload"],["re-uplaoded","re-uploaded"],["re-uplaoder","re-uploader"],["re-uplaoders","re-uploaders"],["re-uplaoding","re-uploading"],["re-uplaods","re-uploads"],["re-uplod","re-upload"],["re-uploded","re-uploaded"],["re-uploder","re-uploader"],["re-uploders","re-uploaders"],["re-uploding","re-uploading"],["re-uplods","re-uploads"],["reaaly","really"],["reaarange","rearrange"],["reaaranges","rearranges"],["reaasigned","reassigned"],["reacahable","reachable"],["reacahble","reachable"],["reaccurring","recurring"],["reaceive","receive"],["reacheable","reachable"],["reachers","readers"],["reachs","reaches"],["reacing","reaching"],["reacll","recall"],["reactquire","reacquire"],["readabilty","readability"],["readanle","readable"],["readapted","re-adapted"],["readble","readable"],["readdrss","readdress"],["readdrssed","readdressed"],["readdrsses","readdresses"],["readdrssing","readdressing"],["readeable","readable"],["reademe","README"],["readiable","readable"],["readibility","readability"],["readible","readable"],["readig","reading"],["readigs","readings"],["readius","radius"],["readl-only","read-only"],["readmition","readmission"],["readnig","reading"],["readning","reading"],["readyness","readiness"],["reaeched","reached"],["reagrding","regarding"],["reaktivate","reactivate"],["reaktivated","reactivated"],["realease","release"],["realeased","released"],["realeases","releases"],["realiable","reliable"],["realitime","realtime"],["realitvely","relatively"],["realiy","really"],["realiztion","realization"],["realiztions","realizations"],["realling","really"],["reallize","realize"],["reallllly","really"],["reallocae","reallocate"],["reallocaes","reallocates"],["reallocaiing","reallocating"],["reallocaing","reallocating"],["reallocaion","reallocation"],["reallocaions","reallocations"],["reallocaite","reallocate"],["reallocaites","reallocates"],["reallocaiting","reallocating"],["reallocaition","reallocation"],["reallocaitions","reallocations"],["reallocaiton","reallocation"],["reallocaitons","reallocations"],["realsitic","realistic"],["realted","related"],["realyl","really"],["reamde","README"],["reamins","remains"],["reander","render"],["reanme","rename"],["reanmed","renamed"],["reanmes","renames"],["reanming","renaming"],["reaon","reason"],["reaons","reasons"],["reapeat","repeat"],["reapeated","repeated"],["reapeater","repeater"],["reapeating","repeating"],["reapeats","repeats"],["reappeares","reappears"],["reapper","reappear"],["reappered","reappeared"],["reappering","reappearing"],["rearely","rarely"],["rearranable","rearrangeable"],["rearrane","rearrange"],["rearraned","rearranged"],["rearranement","rearrangement"],["rearranements","rearrangements"],["rearranent","rearrangement"],["rearranents","rearrangements"],["rearranes","rearranges"],["rearrang","rearrange"],["rearrangable","rearrangeable"],["rearrangaeble","rearrangeable"],["rearrangaelbe","rearrangeable"],["rearrangd","rearranged"],["rearrangde","rearranged"],["rearrangent","rearrangement"],["rearrangents","rearrangements"],["rearrangmeent","rearrangement"],["rearrangmeents","rearrangements"],["rearrangmenet","rearrangement"],["rearrangmenets","rearrangements"],["rearrangment","rearrangement"],["rearrangments","rearrangements"],["rearrangnig","rearranging"],["rearrangning","rearranging"],["rearrangs","rearranges"],["rearrangse","rearranges"],["rearrangt","rearrangement"],["rearrangte","rearrange"],["rearrangteable","rearrangeable"],["rearrangteables","rearrangeables"],["rearrangted","rearranged"],["rearrangtement","rearrangement"],["rearrangtements","rearrangements"],["rearrangtes","rearranges"],["rearrangting","rearranging"],["rearrangts","rearrangements"],["rearraning","rearranging"],["rearranment","rearrangement"],["rearranments","rearrangements"],["rearrant","rearrangement"],["rearrants","rearrangements"],["reasearch","research"],["reasearcher","researcher"],["reasearchers","researchers"],["reasnable","reasonable"],["reasoable","reasonable"],["reasonabily","reasonably"],["reasonble","reasonable"],["reasonbly","reasonably"],["reasonnable","reasonable"],["reasonnably","reasonably"],["reassinging","reassigning"],["reassocition","reassociation"],["reasssign","reassign"],["reatime","realtime"],["reattachement","reattachment"],["rebiulding","rebuilding"],["rebllions","rebellions"],["reboto","reboot"],["rebounce","rebound"],["rebuilded","rebuilt"],["rebuillt","rebuilt"],["rebuils","rebuilds"],["rebuit","rebuilt"],["rebuld","rebuild"],["rebulding","rebuilding"],["rebulds","rebuilds"],["rebulid","rebuild"],["rebuliding","rebuilding"],["rebulids","rebuilds"],["rebulit","rebuilt"],["recahed","reached"],["recal","recall"],["recalcualte","recalculate"],["recalcualted","recalculated"],["recalcualter","re-calculator"],["recalcualtes","recalculates"],["recalcualting","recalculating"],["recalcualtion","recalculation"],["recalcualtions","recalculations"],["recalcuate","recalculate"],["recalcuated","recalculated"],["recalcuates","recalculates"],["recalcuations","recalculations"],["recalculaion","recalculation"],["recalculatble","re-calculable"],["recalcution","recalculation"],["recalulate","recalculate"],["recalulation","recalculation"],["recangle","rectangle"],["recangles","rectangles"],["reccomend","recommend"],["reccomendations","recommendations"],["reccomended","recommended"],["reccomending","recommending"],["reccommend","recommend"],["reccommendation","recommendation"],["reccommendations","recommendations"],["reccommended","recommended"],["reccommending","recommending"],["reccommends","recommends"],["recconecct","reconnect"],["recconeccted","reconnected"],["recconeccting","reconnecting"],["recconecction","reconnection"],["recconecctions","reconnections"],["recconeccts","reconnects"],["recconect","reconnect"],["recconected","reconnected"],["recconecting","reconnecting"],["recconection","reconnection"],["recconections","reconnections"],["recconects","reconnects"],["recconeect","reconnect"],["recconeected","reconnected"],["recconeecting","reconnecting"],["recconeection","reconnection"],["recconeections","reconnections"],["recconeects","reconnects"],["recconenct","reconnect"],["recconencted","reconnected"],["recconencting","reconnecting"],["recconenction","reconnection"],["recconenctions","reconnections"],["recconencts","reconnects"],["recconet","reconnect"],["recconeted","reconnected"],["recconeting","reconnecting"],["recconetion","reconnection"],["recconetions","reconnections"],["recconets","reconnects"],["reccord","record"],["reccorded","recorded"],["reccording","recording"],["reccords","records"],["reccuring","recurring"],["reccursive","recursive"],["reccursively","recursively"],["receeded","receded"],["receeding","receding"],["receied","received"],["receieve","receive"],["receieved","received"],["receieves","receives"],["receieving","receiving"],["receipient","recipient"],["receipients","recipients"],["receiption","reception"],["receiv","receive"],["receivd","received"],["receivedfrom","received from"],["receiveing","receiving"],["receiviing","receiving"],["receivs","receives"],["recenet","recent"],["recenlty","recently"],["recenly","recently"],["recenty","recently"],["recepient","recipient"],["recepients","recipients"],["recepion","reception"],["receve","receive"],["receved","received"],["receves","receives"],["recevie","receive"],["recevied","received"],["recevier","receiver"],["recevies","receives"],["receving","receiving"],["rechable","reachable"],["rechargable","rechargeable"],["recheability","reachability"],["reched","reached"],["rechek","recheck"],["recide","reside"],["recided","resided"],["recident","resident"],["recidents","residents"],["reciding","residing"],["reciepents","recipients"],["reciept","receipt"],["recieve","receive"],["recieved","received"],["reciever","receiver"],["recievers","receivers"],["recieves","receives"],["recieving","receiving"],["recievs","receives"],["recipiant","recipient"],["recipiants","recipients"],["recipie","recipe"],["recipies","recipes"],["reciprocoal","reciprocal"],["reciprocoals","reciprocals"],["recive","receive"],["recived","received"],["reciver","receiver"],["recivers","receivers"],["recivership","receivership"],["recives","receives"],["reciving","receiving"],["reclaimation","reclamation"],["recntly","recently"],["recod","record"],["recofig","reconfig"],["recoginizing-","recognizing"],["recogise","recognise"],["recogize","recognize"],["recogized","recognized"],["recogizes","recognizes"],["recogizing","recognizing"],["recogniced","recognised"],["recogninse","recognise"],["recognizeable","recognizable"],["recognzied","recognized"],["recomend","recommend"],["recomendation","recommendation"],["recomendations","recommendations"],["recomendatoin","recommendation"],["recomendatoins","recommendations"],["recomended","recommended"],["recomending","recommending"],["recomends","recommends"],["recommad","recommend"],["recommaded","recommended"],["recommand","recommend"],["recommandation","recommendation"],["recommanded","recommended"],["recommanding","recommending"],["recommands","recommends"],["recommd","recommend"],["recommdation","recommendation"],["recommded","recommended"],["recommdend","recommend"],["recommdended","recommended"],["recommdends","recommends"],["recommds","recommends"],["recommed","recommend"],["recommedation","recommendation"],["recommedations","recommendations"],["recommeded","recommended"],["recommeding","recommending"],["recommeds","recommends"],["recommened","recommended"],["recommeneded","recommended"],["recommented","recommended"],["recommmend","recommend"],["recommmended","recommended"],["recommmends","recommends"],["recommnd","recommend"],["recommnded","recommended"],["recommnds","recommends"],["recommned","recommend"],["recommneded","recommended"],["recommneds","recommends"],["recommpile","recompile"],["recommpiled","recompiled"],["recompence","recompense"],["recomput","recompute"],["recomputaion","recomputation"],["recompuute","recompute"],["recompuuted","recomputed"],["recompuutes","recomputes"],["recompuuting","recomputing"],["reconaissance","reconnaissance"],["reconcilation","reconciliation"],["recondifure","reconfigure"],["reconecct","reconnect"],["reconeccted","reconnected"],["reconeccting","reconnecting"],["reconecction","reconnection"],["reconecctions","reconnections"],["reconeccts","reconnects"],["reconect","reconnect"],["reconected","reconnected"],["reconecting","reconnecting"],["reconection","reconnection"],["reconections","reconnections"],["reconects","reconnects"],["reconeect","reconnect"],["reconeected","reconnected"],["reconeecting","reconnecting"],["reconeection","reconnection"],["reconeections","reconnections"],["reconeects","reconnects"],["reconenct","reconnect"],["reconencted","reconnected"],["reconencting","reconnecting"],["reconenction","reconnection"],["reconenctions","reconnections"],["reconencts","reconnects"],["reconet","reconnect"],["reconeted","reconnected"],["reconeting","reconnecting"],["reconetion","reconnection"],["reconetions","reconnections"],["reconets","reconnects"],["reconfifure","reconfigure"],["reconfiged","reconfigured"],["reconfugire","reconfigure"],["reconfugre","reconfigure"],["reconfugure","reconfigure"],["reconfure","reconfigure"],["recongifure","reconfigure"],["recongize","recognize"],["recongized","recognized"],["recongnises","recognises"],["recongnizes","recognizes"],["reconize","recognize"],["reconized","recognized"],["reconnaisance","reconnaissance"],["reconnaissence","reconnaissance"],["reconnct","reconnect"],["reconncted","reconnected"],["reconncting","reconnecting"],["reconncts","reconnects"],["reconsidder","reconsider"],["reconstrcut","reconstruct"],["reconstrcuted","reconstructed"],["reconstrcution","reconstruction"],["reconstuct","reconstruct"],["reconstucted","reconstructed"],["reconstucting","reconstructing"],["reconstucts","reconstructs"],["reconsturction","reconstruction"],["recontruct","reconstruct"],["recontructed","reconstructed"],["recontructing","reconstructing"],["recontruction","reconstruction"],["recontructions","reconstructions"],["recontructor","reconstructor"],["recontructors","reconstructors"],["recontructs","reconstructs"],["recordproducer","record producer"],["recordss","records"],["recored","recorded"],["recoriding","recording"],["recourced","resourced"],["recources","resources"],["recourcing","resourcing"],["recpie","recipe"],["recpies","recipes"],["recquired","required"],["recrational","recreational"],["recreateation","recreation"],["recrod","record"],["recrods","records"],["recrusevly","recursively"],["recrusion","recursion"],["recrusive","recursive"],["recrusivelly","recursively"],["recrusively","recursively"],["rectange","rectangle"],["rectanges","rectangles"],["rectanglar","rectangular"],["rectangluar","rectangular"],["rectiinear","rectilinear"],["recude","reduce"],["recuiting","recruiting"],["reculrively","recursively"],["recuring","recurring"],["recurisvely","recursively"],["recurively","recursively"],["recurrance","recurrence"],["recursily","recursively"],["recursivelly","recursively"],["recursivion","recursion"],["recursivley","recursively"],["recursivly","recursively"],["recurssed","recursed"],["recursses","recurses"],["recurssing","recursing"],["recurssion","recursion"],["recurssive","recursive"],["recusrive","recursive"],["recusrively","recursively"],["recusrsive","recursive"],["recustion","recursion"],["recyclying","recycling"],["recylcing","recycling"],["recyle","recycle"],["recyled","recycled"],["recyles","recycles"],["recyling","recycling"],["redability","readability"],["redandant","redundant"],["redeable","readable"],["redeclaation","redeclaration"],["redefiend","redefined"],["redefiende","redefined"],["redefintion","redefinition"],["redefintions","redefinitions"],["redenderer","renderer"],["redered","rendered"],["redict","redirect"],["rediculous","ridiculous"],["redidual","residual"],["redifine","redefine"],["redifinition","redefinition"],["redifinitions","redefinitions"],["redifintion","redefinition"],["redifintions","redefinitions"],["reding","reading"],["redings","readings"],["redircet","redirect"],["redirectd","redirected"],["redirectrion","redirection"],["redisign","redesign"],["redistirbute","redistribute"],["redistirbuted","redistributed"],["redistirbutes","redistributes"],["redistirbuting","redistributing"],["redistirbution","redistribution"],["redistributeable","redistributable"],["redistrubute","redistribute"],["redistrubuted","redistributed"],["redistrubution","redistribution"],["redistrubutions","redistributions"],["redliens","redlines"],["rednerer","renderer"],["redonly","readonly"],["redudancy","redundancy"],["redudant","redundant"],["redunancy","redundancy"],["redunant","redundant"],["redundacy","redundancy"],["redundand","redundant"],["redundat","redundant"],["redundency","redundancy"],["redundent","redundant"],["reduntancy","redundancy"],["reduntant","redundant"],["reease","release"],["reeased","released"],["reeaser","releaser"],["reeasers","releasers"],["reeases","releases"],["reeasing","releasing"],["reedeming","redeeming"],["reegion","region"],["reegions","regions"],["reelation","relation"],["reelease","release"],["reenable","re-enable"],["reenabled","re-enabled"],["reename","rename"],["reencode","re-encode"],["reenfoce","reinforce"],["reenfoced","reinforced"],["reenforced","reinforced"],["reesrved","reserved"],["reesult","result"],["reeturn","return"],["reeturned","returned"],["reeturning","returning"],["reeturns","returns"],["reevalute","reevaluate"],["reevaulating","reevaluating"],["refcound","refcount"],["refcounf","refcount"],["refect","reflect"],["refected","reflected"],["refecting","reflecting"],["refectiv","reflective"],["refector","refactor"],["refectoring","refactoring"],["refects","reflects"],["refedendum","referendum"],["refeinement","refinement"],["refeinements","refinements"],["refelects","reflects"],["refence","reference"],["refences","references"],["refenence","reference"],["refenrenced","referenced"],["referal","referral"],["referance","reference"],["referanced","referenced"],["referances","references"],["referant","referent"],["referebces","references"],["referece","reference"],["referecence","reference"],["referecences","references"],["refereces","references"],["referecne","reference"],["refered","referred"],["referefences","references"],["referemce","reference"],["referemces","references"],["referenace","reference"],["referenc","reference"],["referencable","referenceable"],["referencial","referential"],["referencially","referentially"],["referencs","references"],["referenct","referenced"],["referene","reference"],["referenece","reference"],["refereneced","referenced"],["refereneces","references"],["referened","referenced"],["referenence","reference"],["referenenced","referenced"],["referenences","references"],["referenes","references"],["referennces","references"],["referense","reference"],["referensed","referenced"],["referenses","references"],["referenz","reference"],["referenzes","references"],["refererd","referred"],["refererence","reference"],["referiang","referring"],["refering","referring"],["refernce","reference"],["refernced","referenced"],["referncence","reference"],["referncences","references"],["refernces","references"],["referncial","referential"],["referncing","referencing"],["refernece","reference"],["referneced","referenced"],["referneces","references"],["refernnce","reference"],["referr","refer"],["referrence","reference"],["referrenced","referenced"],["referrences","references"],["referrencing","referencing"],["referreres","referrers"],["referres","refers"],["referrs","refers"],["refertence","reference"],["refertenced","referenced"],["refertences","references"],["refesh","refresh"],["refeshed","refreshed"],["refeshes","refreshes"],["refeshing","refreshing"],["reffered","referred"],["refference","reference"],["reffering","referring"],["refferr","refer"],["reffers","refers"],["refinemenet","refinement"],["refinmenet","refinement"],["refinment","refinement"],["reflet","reflect"],["refleted","reflected"],["refleting","reflecting"],["refletion","reflection"],["refletions","reflections"],["reflets","reflects"],["refocuss","refocus"],["refocussed","refocused"],["reformating","reformatting"],["reformattd","reformatted"],["refreh","refresh"],["refrence","reference"],["refrenced","referenced"],["refrences","references"],["refrencing","referencing"],["refrerence","reference"],["refrerenced","referenced"],["refrerenceing","referencing"],["refrerences","references"],["refrerencial","referential"],["refrers","refers"],["refreshs","refreshes"],["refreshses","refreshes"],["refridgeration","refrigeration"],["refridgerator","refrigerator"],["refromatting","refomatting"],["refromist","reformist"],["refrormatting","reformatting"],["refure","refuse"],["refures","refuses"],["refusla","refusal"],["regalar","regular"],["regalars","regulars"],["regardes","regards"],["regardles","regardless"],["regardlesss","regardless"],["regaring","regarding"],["regarldess","regardless"],["regarless","regardless"],["regart","regard"],["regarted","regarded"],["regarting","regarding"],["regartless","regardless"],["regconized","recognized"],["regeister","register"],["regeistered","registered"],["regeistration","registration"],["regenarated","regenerated"],["regenrated","regenerated"],["regenratet","regenerated"],["regenrating","regenerating"],["regenration","regeneration"],["regenrative","regenerative"],["regession","regression"],["regestered","registered"],["regidstered","registered"],["regio","region"],["regiser","register"],["regisration","registration"],["regist","register"],["registartion","registration"],["registe","register"],["registed","registered"],["registeing","registering"],["registeration","registration"],["registerered","registered"],["registeres","registers"],["registeresd","registered"],["registerred","registered"],["registert","registered"],["registery","registry"],["registes","registers"],["registing","registering"],["registors","registers"],["registrain","registration"],["registraion","registration"],["registraions","registrations"],["registraration","registration"],["registrated","registered"],["registred","registered"],["registrer","register"],["registring","registering"],["registrs","registers"],["registy","registry"],["regiter","register"],["regitered","registered"],["regitering","registering"],["regiters","registers"],["regluar","regular"],["regon","region"],["regons","regions"],["regorded","recorded"],["regresion","regression"],["regresison","regression"],["regresssion","regression"],["regrigerator","refrigerator"],["regsion","region"],["regsions","regions"],["regsiter","register"],["regsitered","registered"],["regsitering","registering"],["regsiters","registers"],["regsitry","registry"],["regster","register"],["regstered","registered"],["regstering","registering"],["regsters","registers"],["regstry","registry"],["regualar","regular"],["regualarly","regularly"],["regualator","regulator"],["regualr","regular"],["regualtor","regulator"],["reguardless","regardless"],["reguarldess","regardless"],["reguarlise","regularise"],["reguarliser","regulariser"],["reguarlize","regularize"],["reguarlizer","regularizer"],["reguarly","regularly"],["reguator","regulator"],["reguire","require"],["reguired","required"],["reguirement","requirement"],["reguirements","requirements"],["reguires","requires"],["reguiring","requiring"],["regulaer","regular"],["regulaion","regulation"],["regulamentation","regulation"],["regulamentations","regulations"],["regulaotrs","regulators"],["regulaotry","regulatory"],["regularily","regularly"],["regulariry","regularly"],["regularlisation","regularisation"],["regularlise","regularise"],["regularlised","regularised"],["regularliser","regulariser"],["regularlises","regularises"],["regularlising","regularising"],["regularlization","regularization"],["regularlize","regularize"],["regularlized","regularized"],["regularlizer","regularizer"],["regularlizes","regularizes"],["regularlizing","regularizing"],["regularlly","regularly"],["regulax","regular"],["reguler","regular"],["regulr","regular"],["regultor","regulator"],["regultors","regulators"],["regultory","regulatory"],["regurlarly","regularly"],["reguster","register"],["rehersal","rehearsal"],["rehersing","rehearsing"],["reicarnation","reincarnation"],["reigining","reigning"],["reigonal","regional"],["reigster","register"],["reigstered","registered"],["reigstering","registering"],["reigsters","registers"],["reigstration","registration"],["reimplemenet","reimplement"],["reimplementaion","reimplementation"],["reimplementaions","reimplementations"],["reimplemention","reimplementation"],["reimplementions","reimplementations"],["reimplented","reimplemented"],["reimplents","reimplements"],["reimpliment","reimplement"],["reimplimenting","reimplementing"],["reimplmenet","reimplement"],["reimplment","reimplement"],["reimplmentation","reimplementation"],["reimplmented","reimplemented"],["reimplmenting","reimplementing"],["reimplments","reimplements"],["reimpplement","reimplement"],["reimpplementating","reimplementing"],["reimpplementation","reimplementation"],["reimpplemented","reimplemented"],["reimpremented","reimplemented"],["reinfoce","reinforce"],["reinfoced","reinforced"],["reinfocement","reinforcement"],["reinfocements","reinforcements"],["reinfoces","reinforces"],["reinfocing","reinforcing"],["reinitailise","reinitialise"],["reinitailised","reinitialised"],["reinitailize","reinitialize"],["reinitalize","reinitialize"],["reinitilize","reinitialize"],["reinitilized","reinitialized"],["reinstatiate","reinstantiate"],["reinstatiated","reinstantiated"],["reinstatiates","reinstantiates"],["reinstatiation","reinstantiation"],["reintantiate","reinstantiate"],["reintantiating","reinstantiating"],["reintepret","reinterpret"],["reintepreted","reinterpreted"],["reister","register"],["reitterate","reiterate"],["reitterated","reiterated"],["reitterates","reiterates"],["reivison","revision"],["rejplace","replace"],["reknown","renown"],["reknowned","renowned"],["rekursed","recursed"],["rekursion","recursion"],["rekursive","recursive"],["relaative","relative"],["relady","ready"],["relaease","release"],["relaese","release"],["relaesed","released"],["relaeses","releases"],["relaesing","releasing"],["relaged","related"],["relaimed","reclaimed"],["relaion","relation"],["relaive","relative"],["relaly","really"],["relase","release"],["relased","released"],["relaser","releaser"],["relases","releases"],["relashionship","relationship"],["relashionships","relationships"],["relasing","releasing"],["relataive","relative"],["relatated","related"],["relatd","related"],["relatdness","relatedness"],["relatibe","relative"],["relatibely","relatively"],["relatievly","relatively"],["relatiopnship","relationship"],["relativ","relative"],["relativly","relatively"],["relavant","relevant"],["relavent","relevant"],["releaase","release"],["releaased","released"],["relead","reload"],["releae","release"],["releaed","released"],["releaeing","releasing"],["releaing","releasing"],["releas","release"],["releasead","released"],["releasse","release"],["releated","related"],["releating","relating"],["releation","relation"],["releations","relations"],["releationship","relationship"],["releationships","relationships"],["releative","relative"],["releavant","relevant"],["relecant","relevant"],["releive","relieve"],["releived","relieved"],["releiver","reliever"],["releoad","reload"],["relese","release"],["relesed","released"],["releses","releases"],["reletive","relative"],["reletively","relatively"],["relevabt","relevant"],["relevane","relevant"],["releveant","relevant"],["relevence","relevance"],["relevent","relevant"],["relfected","reflected"],["relfecting","reflecting"],["relfection","reflection"],["relfections","reflections"],["reliablity","reliability"],["relient","reliant"],["religeous","religious"],["religous","religious"],["religously","religiously"],["relinguish","relinquish"],["relinguishing","relinquishing"],["relinqushment","relinquishment"],["relintquish","relinquish"],["relitavely","relatively"],["relly","really"],["reloade","reload"],["relocae","relocate"],["relocaes","relocates"],["relocaiing","relocating"],["relocaing","relocating"],["relocaion","relocation"],["relocaions","relocations"],["relocaite","relocate"],["relocaites","relocates"],["relocaiting","relocating"],["relocaition","relocation"],["relocaitions","relocations"],["relocaiton","relocation"],["relocaitons","relocations"],["relocateable","relocatable"],["reloccate","relocate"],["reloccated","relocated"],["reloccates","relocates"],["relpacement","replacement"],["relpy","reply"],["reltive","relative"],["relyable","reliable"],["relyably","reliably"],["relyed","relied"],["relys","relies"],["remaing","remaining"],["remainging","remaining"],["remainig","remaining"],["remainst","remains"],["remaning","remaining"],["remaped","remapped"],["remaping","remapping"],["rembember","remember"],["rembembered","remembered"],["rembembering","remembering"],["rembembers","remembers"],["rember","remember"],["remeber","remember"],["remebered","remembered"],["remebering","remembering"],["remebers","remembers"],["rememberable","memorable"],["rememberance","remembrance"],["rememberd","remembered"],["remembrence","remembrance"],["rememeber","remember"],["rememebered","remembered"],["rememebering","remembering"],["rememebers","remembers"],["rememebr","remember"],["rememebred","remembered"],["rememebrs","remembers"],["rememember","remember"],["rememembered","remembered"],["rememembers","remembers"],["rememer","remember"],["rememered","remembered"],["rememers","remembers"],["rememor","remember"],["rememored","remembered"],["rememoring","remembering"],["rememors","remembers"],["rememver","remember"],["remenant","remnant"],["remenber","remember"],["remenicent","reminiscent"],["remian","remain"],["remianed","remained"],["remianing","remaining"],["remians","remains"],["reminent","remnant"],["reminescent","reminiscent"],["remining","remaining"],["reminiscense","reminiscence"],["reminscent","reminiscent"],["reminsicent","reminiscent"],["remmeber","remember"],["remmebered","remembered"],["remmebering","remembering"],["remmebers","remembers"],["remmove","remove"],["remoce","remove"],["remoive","remove"],["remoived","removed"],["remoives","removes"],["remoiving","removing"],["remontly","remotely"],["remoote","remote"],["remore","remote"],["remorted","reported"],["remot","remote"],["removce","remove"],["removeable","removable"],["removefromat","removeformat"],["removeing","removing"],["removerd","removed"],["remve","remove"],["remved","removed"],["remves","removes"],["remvoe","remove"],["remvoed","removed"],["remvoes","removes"],["remvove","remove"],["remvoved","removed"],["remvoves","removes"],["remvs","removes"],["renabled","re-enabled"],["renderadble","renderable"],["renderd","rendered"],["rendereing","rendering"],["rendererd","rendered"],["renderered","rendered"],["renderering","rendering"],["renderning","rendering"],["renderr","render"],["renderring","rendering"],["rendevous","rendezvous"],["rendezous","rendezvous"],["rendired","rendered"],["rendirer","renderer"],["rendirers","renderers"],["rendiring","rendering"],["rendring","rendering"],["renedered","rendered"],["renegatiotiable","renegotiable"],["renegatiotiate","renegotiate"],["renegatiotiated","renegotiated"],["renegatiotiates","renegotiates"],["renegatiotiating","renegotiating"],["renegatiotiation","renegotiation"],["renegatiotiations","renegotiations"],["renegatiotiator","renegotiator"],["renegatiotiators","renegotiators"],["renegoable","renegotiable"],["renegoate","renegotiate"],["renegoated","renegotiated"],["renegoates","renegotiates"],["renegoatiable","renegotiable"],["renegoatiate","renegotiate"],["renegoatiated","renegotiated"],["renegoatiates","renegotiates"],["renegoatiating","renegotiating"],["renegoatiation","renegotiation"],["renegoatiations","renegotiations"],["renegoatiator","renegotiator"],["renegoatiators","renegotiators"],["renegoating","renegotiating"],["renegoation","renegotiation"],["renegoations","renegotiations"],["renegoator","renegotiator"],["renegoators","renegotiators"],["renegociable","renegotiable"],["renegociate","renegotiate"],["renegociated","renegotiated"],["renegociates","renegotiates"],["renegociating","renegotiating"],["renegociation","renegotiation"],["renegociations","renegotiations"],["renegociator","renegotiator"],["renegociators","renegotiators"],["renegogtiable","renegotiable"],["renegogtiate","renegotiate"],["renegogtiated","renegotiated"],["renegogtiates","renegotiates"],["renegogtiating","renegotiating"],["renegogtiation","renegotiation"],["renegogtiations","renegotiations"],["renegogtiator","renegotiator"],["renegogtiators","renegotiators"],["renegoitable","renegotiable"],["renegoitate","renegotiate"],["renegoitated","renegotiated"],["renegoitates","renegotiates"],["renegoitating","renegotiating"],["renegoitation","renegotiation"],["renegoitations","renegotiations"],["renegoitator","renegotiator"],["renegoitators","renegotiators"],["renegoptionsotiable","renegotiable"],["renegoptionsotiate","renegotiate"],["renegoptionsotiated","renegotiated"],["renegoptionsotiates","renegotiates"],["renegoptionsotiating","renegotiating"],["renegoptionsotiation","renegotiation"],["renegoptionsotiations","renegotiations"],["renegoptionsotiator","renegotiator"],["renegoptionsotiators","renegotiators"],["renegosiable","renegotiable"],["renegosiate","renegotiate"],["renegosiated","renegotiated"],["renegosiates","renegotiates"],["renegosiating","renegotiating"],["renegosiation","renegotiation"],["renegosiations","renegotiations"],["renegosiator","renegotiator"],["renegosiators","renegotiators"],["renegotable","renegotiable"],["renegotaiable","renegotiable"],["renegotaiate","renegotiate"],["renegotaiated","renegotiated"],["renegotaiates","renegotiates"],["renegotaiating","renegotiating"],["renegotaiation","renegotiation"],["renegotaiations","renegotiations"],["renegotaiator","renegotiator"],["renegotaiators","renegotiators"],["renegotaible","renegotiable"],["renegotaite","renegotiate"],["renegotaited","renegotiated"],["renegotaites","renegotiates"],["renegotaiting","renegotiating"],["renegotaition","renegotiation"],["renegotaitions","renegotiations"],["renegotaitor","renegotiator"],["renegotaitors","renegotiators"],["renegotate","renegotiate"],["renegotated","renegotiated"],["renegotates","renegotiates"],["renegotatiable","renegotiable"],["renegotatiate","renegotiate"],["renegotatiated","renegotiated"],["renegotatiates","renegotiates"],["renegotatiating","renegotiating"],["renegotatiation","renegotiation"],["renegotatiations","renegotiations"],["renegotatiator","renegotiator"],["renegotatiators","renegotiators"],["renegotatible","renegotiable"],["renegotatie","renegotiate"],["renegotatied","renegotiated"],["renegotaties","renegotiates"],["renegotating","renegotiating"],["renegotation","renegotiation"],["renegotations","renegotiations"],["renegotatior","renegotiator"],["renegotatiors","renegotiators"],["renegotator","renegotiator"],["renegotators","renegotiators"],["renegothiable","renegotiable"],["renegothiate","renegotiate"],["renegothiated","renegotiated"],["renegothiates","renegotiates"],["renegothiating","renegotiating"],["renegothiation","renegotiation"],["renegothiations","renegotiations"],["renegothiator","renegotiator"],["renegothiators","renegotiators"],["renegotible","renegotiable"],["renegoticable","renegotiable"],["renegoticate","renegotiate"],["renegoticated","renegotiated"],["renegoticates","renegotiates"],["renegoticating","renegotiating"],["renegotication","renegotiation"],["renegotications","renegotiations"],["renegoticator","renegotiator"],["renegoticators","renegotiators"],["renegotioable","renegotiable"],["renegotioate","renegotiate"],["renegotioated","renegotiated"],["renegotioates","renegotiates"],["renegotioating","renegotiating"],["renegotioation","renegotiation"],["renegotioations","renegotiations"],["renegotioator","renegotiator"],["renegotioators","renegotiators"],["renegotioble","renegotiable"],["renegotion","renegotiation"],["renegotionable","renegotiable"],["renegotionate","renegotiate"],["renegotionated","renegotiated"],["renegotionates","renegotiates"],["renegotionating","renegotiating"],["renegotionation","renegotiation"],["renegotionations","renegotiations"],["renegotionator","renegotiator"],["renegotionators","renegotiators"],["renegotions","renegotiations"],["renegotiotable","renegotiable"],["renegotiotate","renegotiate"],["renegotiotated","renegotiated"],["renegotiotates","renegotiates"],["renegotiotating","renegotiating"],["renegotiotation","renegotiation"],["renegotiotations","renegotiations"],["renegotiotator","renegotiator"],["renegotiotators","renegotiators"],["renegotiote","renegotiate"],["renegotioted","renegotiated"],["renegotiotes","renegotiates"],["renegotioting","renegotiating"],["renegotiotion","renegotiation"],["renegotiotions","renegotiations"],["renegotiotor","renegotiator"],["renegotiotors","renegotiators"],["renegotitable","renegotiable"],["renegotitae","renegotiate"],["renegotitaed","renegotiated"],["renegotitaes","renegotiates"],["renegotitaing","renegotiating"],["renegotitaion","renegotiation"],["renegotitaions","renegotiations"],["renegotitaor","renegotiator"],["renegotitaors","renegotiators"],["renegotitate","renegotiate"],["renegotitated","renegotiated"],["renegotitates","renegotiates"],["renegotitating","renegotiating"],["renegotitation","renegotiation"],["renegotitations","renegotiations"],["renegotitator","renegotiator"],["renegotitators","renegotiators"],["renegotite","renegotiate"],["renegotited","renegotiated"],["renegotites","renegotiates"],["renegotiting","renegotiating"],["renegotition","renegotiation"],["renegotitions","renegotiations"],["renegotitor","renegotiator"],["renegotitors","renegotiators"],["renegoziable","renegotiable"],["renegoziate","renegotiate"],["renegoziated","renegotiated"],["renegoziates","renegotiates"],["renegoziating","renegotiating"],["renegoziation","renegotiation"],["renegoziations","renegotiations"],["renegoziator","renegotiator"],["renegoziators","renegotiators"],["reneweal","renewal"],["renewl","renewal"],["renforce","reinforce"],["renforced","reinforced"],["renforcement","reinforcement"],["renforcements","reinforcements"],["renforces","reinforces"],["rennovate","renovate"],["rennovated","renovated"],["rennovating","renovating"],["rennovation","renovation"],["rentime","runtime"],["rentors","renters"],["reoadmap","roadmap"],["reoccurrence","recurrence"],["reoder","reorder"],["reomvable","removable"],["reomve","remove"],["reomved","removed"],["reomves","removes"],["reomving","removing"],["reonly","read-only"],["reopended","reopened"],["reoport","report"],["reopsitory","repository"],["reord","record"],["reorded","reorder"],["reorer","reorder"],["reorganision","reorganisation"],["reorginised","reorganised"],["reorginized","reorganized"],["reosnable","reasonable"],["reosne","reason"],["reosurce","resource"],["reosurced","resourced"],["reosurces","resources"],["reosurcing","resourcing"],["reounded","rounded"],["repace","replace"],["repaced","replaced"],["repacement","replacement"],["repacements","replacements"],["repaces","replaces"],["repacing","replacing"],["repackge","repackage"],["repackged","repackaged"],["repaitnt","repaint"],["reparamterization","reparameterization"],["repblic","republic"],["repblican","republican"],["repblicans","republicans"],["repblics","republics"],["repeates","repeats"],["repeatly","repeatedly"],["repect","respect"],["repectable","respectable"],["repected","respected"],["repecting","respecting"],["repective","respective"],["repectively","respectively"],["repects","respects"],["repedability","repeatability"],["repedable","repeatable"],["repeition","repetition"],["repentence","repentance"],["repentent","repentant"],["reperesent","represent"],["reperesentation","representation"],["reperesentational","representational"],["reperesentations","representations"],["reperesented","represented"],["reperesenting","representing"],["reperesents","represents"],["repersentation","representation"],["repertoir","repertoire"],["repesent","represent"],["repesentation","representation"],["repesentational","representational"],["repesented","represented"],["repesenting","representing"],["repesents","represents"],["repet","repeat"],["repetative","repetitive"],["repete","repeat"],["repeteadly","repeatedly"],["repetetion","repetition"],["repetetions","repetitions"],["repetetive","repetitive"],["repeting","repeating"],["repetion","repetition"],["repetions","repetitions"],["repetive","repetitive"],["repid","rapid"],["repition","repetition"],["repitions","repetitions"],["repitition","repetition"],["repititions","repetitions"],["replacability","replaceability"],["replacables","replaceables"],["replacacing","replacing"],["replacalbe","replaceable"],["replacalbes","replaceables"],["replacament","replacement"],["replacaments","replacements"],["replacate","replicate"],["replacated","replicated"],["replacates","replicates"],["replacating","replicating"],["replacation","replication"],["replacd","replaced"],["replaceemnt","replacement"],["replaceemnts","replacements"],["replacemenet","replacement"],["replacmenet","replacement"],["replacment","replacement"],["replacments","replacements"],["replacong","replacing"],["replaint","repaint"],["replasement","replacement"],["replasements","replacements"],["replcace","replace"],["replcaced","replaced"],["replcaof","replicaof"],["replicae","replicate"],["replicaes","replicates"],["replicaiing","replicating"],["replicaion","replication"],["replicaions","replications"],["replicaite","replicate"],["replicaites","replicates"],["replicaiting","replicating"],["replicaition","replication"],["replicaitions","replications"],["replicaiton","replication"],["replicaitons","replications"],["repling","replying"],["replys","replies"],["reponding","responding"],["reponse","response"],["reponses","responses"],["reponsibilities","responsibilities"],["reponsibility","responsibility"],["reponsible","responsible"],["reporing","reporting"],["reporitory","repository"],["reportadly","reportedly"],["reportign","reporting"],["reportresouces","reportresources"],["reposiotory","repository"],["reposiry","repository"],["repositiories","repositories"],["repositiory","repository"],["repositiroes","repositories"],["reposititioning","repositioning"],["repositorry","repository"],["repositotries","repositories"],["repositotry","repository"],["repositry","repository"],["reposoitory","repository"],["reposond","respond"],["reposonder","responder"],["reposonders","responders"],["reposonding","responding"],["reposonse","response"],["reposonses","responses"],["repostiories","repositories"],["repostiory","repository"],["repostories","repositories"],["repostory","repository"],["repport","report"],["reppository","repository"],["repraesentation","representation"],["repraesentational","representational"],["repraesentations","representations"],["reprecussion","repercussion"],["reprecussions","repercussions"],["repreesnt","represent"],["repreesnted","represented"],["repreesnts","represents"],["reprensent","represent"],["reprensentation","representation"],["reprensentational","representational"],["reprensentations","representations"],["reprepresents","represents"],["represantation","representation"],["represantational","representational"],["represantations","representations"],["represantative","representative"],["represenatation","representation"],["represenatational","representational"],["represenatations","representations"],["represenation","representation"],["represenational","representational"],["represenations","representations"],["represend","represent"],["representaion","representation"],["representaional","representational"],["representaions","representations"],["representaiton","representation"],["representated","represented"],["representating","representing"],["representd","represented"],["representiative","representative"],["represention","representation"],["representions","representations"],["representive","representative"],["representives","representatives"],["represet","represent"],["represetation","representation"],["represeted","represented"],["represeting","representing"],["represets","represents"],["represnet","represent"],["represnetated","represented"],["represnetation","representation"],["represnetations","representations"],["represneted","represented"],["represneting","representing"],["represnets","represents"],["represnt","represent"],["represntation","representation"],["represntative","representative"],["represnted","represented"],["represnts","represents"],["repressent","represent"],["repressentation","representation"],["repressenting","representing"],["repressents","represents"],["reprociblbe","reproducible"],["reprocible","reproducible"],["reprodice","reproduce"],["reprodiced","reproduced"],["reprodicibility","reproducibility"],["reprodicible","reproducible"],["reprodicibly","reproducibly"],["reprodicing","reproducing"],["reprodiction","reproduction"],["reproducabely","reproducibly"],["reproducability","reproducibility"],["reproducable","reproducible"],["reproducablitity","reproducibility"],["reproducably","reproducibly"],["reproduciability","reproduceability"],["reproduciable","reproduceable"],["reproduciblity","reproducibility"],["reprot","report"],["reprots","reports"],["reprsent","represent"],["reprsentation","representation"],["reprsentations","representations"],["reprsented","represented"],["reprsenting","representing"],["reprsents","represents"],["reprtoire","repertoire"],["reprucible","reproducible"],["repsectively","respectively"],["repsonse","response"],["repsonses","responses"],["repsonsible","responsible"],["repspectively","respectively"],["repsresents","represents"],["reptition","repetition"],["repubic","republic"],["repubican","republican"],["repubicans","republicans"],["repubics","republics"],["republi","republic"],["republian","republican"],["republians","republicans"],["republis","republics"],["repulic","republic"],["repulican","republican"],["repulicans","republicans"],["repulics","republics"],["reputpose","repurpose"],["reputposed","repurposed"],["reputposes","repurposes"],["reputposing","repurposing"],["reqest","request"],["reqested","requested"],["reqests","requests"],["reqeuest","request"],["reqeust","request"],["reqeusted","requested"],["reqeusting","requesting"],["reqeusts","requests"],["reqiest","request"],["reqire","require"],["reqired","required"],["reqirement","requirement"],["reqirements","requirements"],["reqires","requires"],["reqiring","requiring"],["reqiure","require"],["reqrite","rewrite"],["reqrites","rewrites"],["requencies","frequencies"],["requency","frequency"],["requeried","required"],["requeriment","requirement"],["requeriments","requirements"],["reques","request"],["requesr","request"],["requestd","requested"],["requestesd","requested"],["requestested","requested"],["requestied","requested"],["requestying","requesting"],["requet","request"],["requeted","requested"],["requeting","requesting"],["requets","requests"],["requeum","requiem"],["requied","required"],["requierd","required"],["requiere","require"],["requiered","required"],["requierement","requirement"],["requierements","requirements"],["requieres","requires"],["requiering","requiring"],["requies","requires"],["requiest","request"],["requiested","requested"],["requiesting","requesting"],["requiests","requests"],["requird","required"],["requireing","requiring"],["requiremenet","requirement"],["requiremenets","requirements"],["requiremnt","requirement"],["requirment","requirement"],["requirments","requirements"],["requisit","requisite"],["requisits","requisites"],["requre","require"],["requred","required"],["requrement","requirement"],["requrements","requirements"],["requres","requires"],["requrest","request"],["requrested","requested"],["requresting","requesting"],["requrests","requests"],["requried","required"],["requriement","requirement"],["requriements","requirements"],["requries","requires"],["requriment","requirement"],["requring","requiring"],["requrired","required"],["requrirement","requirement"],["requrirements","requirements"],["requris","require"],["requsite","requisite"],["requsites","requisites"],["requst","request"],["requsted","requested"],["requsting","requesting"],["requsts","requests"],["reregisteration","reregistration"],["rererences","references"],["rerference","reference"],["rerferences","references"],["rerpesentation","representation"],["rertieve","retrieve"],["rertieved","retrieved"],["rertiever","retriever"],["rertievers","retrievers"],["rertieves","retrieves"],["reruirement","requirement"],["reruirements","requirements"],["reruning","rerunning"],["rerwite","rewrite"],["resarch","research"],["resart","restart"],["resarts","restarts"],["resaurant","restaurant"],["resaurants","restaurants"],["rescaned","rescanned"],["rescource","resource"],["rescourced","resourced"],["rescources","resources"],["rescourcing","resourcing"],["rescrition","restriction"],["rescritions","restrictions"],["rescueing","rescuing"],["reseach","research"],["reseached","researched"],["researvation","reservation"],["researvations","reservations"],["researve","reserve"],["researved","reserved"],["researves","reserves"],["researving","reserving"],["reselction","reselection"],["resembelance","resemblance"],["resembes","resembles"],["resemblence","resemblance"],["resently","recently"],["resepect","respect"],["resepected","respected"],["resepecting","respecting"],["resepective","respective"],["resepectively","respectively"],["resepects","respects"],["reseration","reservation"],["reserv","reserve"],["reserverd","reserved"],["reservered","reserved"],["resestatus","resetstatus"],["resetable","resettable"],["reseted","reset"],["reseting","resetting"],["resetted","reset"],["reseved","reserved"],["reseverd","reserved"],["resevered","reserved"],["resevering","reserving"],["resevoir","reservoir"],["resgister","register"],["resgisters","registers"],["residental","residential"],["resierfs","reiserfs"],["resignement","resignment"],["resilence","resilience"],["resistable","resistible"],["resistence","resistance"],["resistent","resistant"],["resitance","resistance"],["resitances","resistances"],["resitor","resistor"],["resitors","resistors"],["resivwar","reservoir"],["resizeable","resizable"],["resizeble","resizable"],["reslection","reselection"],["reslove","resolve"],["resloved","resolved"],["resloves","resolves"],["resloving","resolving"],["reslut","result"],["resluts","results"],["resoect","respect"],["resoective","respective"],["resoiurce","resource"],["resoiurced","resourced"],["resoiurces","resources"],["resoiurcing","resourcing"],["resoltion","resolution"],["resoltuion","resolution"],["resoltuions","resolutions"],["resoluitons","resolutions"],["resolutin","resolution"],["resolutino","resolution"],["resolutinos","resolutions"],["resolutins","resolutions"],["resoluton","resolution"],["resolvinf","resolving"],["reson","reason"],["resonable","reasonable"],["resons","reasons"],["resonse","response"],["resonses","responses"],["resoource","resource"],["resoourced","resourced"],["resoources","resources"],["resoourcing","resourcing"],["resopnse","response"],["resopnses","responses"],["resorce","resource"],["resorced","resourced"],["resorces","resources"],["resorcing","resourcing"],["resore","restore"],["resorece","resource"],["resoreces","resources"],["resoruce","resource"],["resoruced","resourced"],["resoruces","resources"],["resorucing","resourcing"],["resotration","restoration"],["resotrations","restorations"],["resotrative","restorative"],["resotre","restore"],["resotrer","restorer"],["resotrers","restorers"],["resotres","restores"],["resotring","restoring"],["resouce","resource"],["resouced","resourced"],["resouces","resources"],["resoucing","resourcing"],["resoultion","resolution"],["resoultions","resolutions"],["resourcees","resources"],["resourceype","resourcetype"],["resoure","resource"],["resourecs","resources"],["resoured","resourced"],["resoures","resources"],["resourses","resources"],["resoution","resolution"],["resoves","resolves"],["resovle","resolve"],["resovled","resolved"],["resovles","resolves"],["resovling","resolving"],["respawining","respawning"],["respecitve","respective"],["respecitvely","respectively"],["respecive","respective"],["respecively","respectively"],["respectivelly","respectively"],["respectivley","respectively"],["respectivly","respectively"],["respnse","response"],["respnses","responses"],["respoduce","reproduce"],["responce","response"],["responces","responses"],["responibilities","responsibilities"],["responisble","responsible"],["responnsibilty","responsibility"],["responsabilities","responsibilities"],["responsability","responsibility"],["responsable","responsible"],["responsbile","responsible"],["responser's","responder's"],["responser","responder"],["responsers","responders"],["responsess","responses"],["responsibile","responsible"],["responsibilites","responsibilities"],["responsibilty","responsibility"],["responsiblities","responsibilities"],["responsiblity","responsibility"],["responsing","responding"],["respose","response"],["resposes","responses"],["resposibility","responsibility"],["resposible","responsible"],["resposiblity","responsibility"],["respositories","repositories"],["respository","repository"],["resposive","responsive"],["resposiveness","responsiveness"],["resposne","response"],["resposnes","responses"],["respresent","represent"],["respresentation","representation"],["respresentational","representational"],["respresentations","representations"],["respresented","represented"],["respresenting","representing"],["respresents","represents"],["resquest","request"],["resrouce","resource"],["resrouced","resourced"],["resrouces","resources"],["resroucing","resourcing"],["reSructuredText","reStructuredText"],["resrved","reserved"],["ressapee","recipe"],["ressemblance","resemblance"],["ressemble","resemble"],["ressembled","resembled"],["ressemblence","resemblance"],["ressembling","resembling"],["ressemle","resemble"],["resset","reset"],["resseted","reset"],["ressets","resets"],["ressetting","resetting"],["ressize","resize"],["ressizes","resizes"],["ressource","resource"],["ressourced","resourced"],["ressources","resources"],["ressourcing","resourcing"],["resssurecting","resurrecting"],["ressult","result"],["ressurect","resurrect"],["ressurected","resurrected"],["ressurecting","resurrecting"],["ressurection","resurrection"],["ressurects","resurrects"],["ressurrection","resurrection"],["restarant","restaurant"],["restarants","restaurants"],["restaraunt","restaurant"],["restaraunteur","restaurateur"],["restaraunteurs","restaurateurs"],["restaraunts","restaurants"],["restauranteurs","restaurateurs"],["restauration","restoration"],["restauraunt","restaurant"],["restaurnad","restaurant"],["restaurnat","restaurant"],["resteraunt","restaurant"],["resteraunts","restaurants"],["restes","reset"],["restesting","retesting"],["resticted","restricted"],["restoding","restoring"],["restoiring","restoring"],["restor","restore"],["restorated","restored"],["restoreable","restorable"],["restoreble","restorable"],["restoreing","restoring"],["restors","restores"],["restouration","restoration"],["restrcted","restricted"],["restrcuture","restructure"],["restriced","restricted"],["restroing","restoring"],["reStructuredTetx","reStructuredText"],["reStructuredTxet","reStructuredText"],["reStrucuredText","reStructuredText"],["restuarant","restaurant"],["restuarants","restaurants"],["reStucturedText","reStructuredText"],["restucturing","restructuring"],["reStucuredText","reStructuredText"],["resturant","restaurant"],["resturants","restaurants"],["resturaunt","restaurant"],["resturaunts","restaurants"],["resturcturation","restructuration"],["resturcture","restructure"],["resturctured","restructured"],["resturctures","restructures"],["resturcturing","restructuring"],["resturns","returns"],["resuable","reusable"],["resuables","reusables"],["resubstituion","resubstitution"],["resuction","reduction"],["resuilt","result"],["resuilted","resulted"],["resuilting","resulting"],["resuilts","results"],["resul","result"],["resuling","resulting"],["resullt","result"],["resulotion","resolution"],["resulsets","resultsets"],["resulst","results"],["resultion","resolution"],["resultions","resolutions"],["resultung","resulting"],["resulution","resolution"],["resumbmitting","resubmitting"],["resumitted","resubmitted"],["resumt","resume"],["resuorce","resource"],["resuorced","resourced"],["resuorces","resources"],["resuorcing","resourcing"],["resurce","resource"],["resurced","resourced"],["resurces","resources"],["resurcing","resourcing"],["resurecting","resurrecting"],["resursively","recursively"],["resuse","reuse"],["resuts","results"],["resycn","resync"],["retalitated","retaliated"],["retalitation","retaliation"],["retangles","rectangles"],["retanslate","retranslate"],["rether","rather"],["retieve","retrieve"],["retieved","retrieved"],["retieves","retrieves"],["retieving","retrieving"],["retinew","retinue"],["retireve","retrieve"],["retireved","retrieved"],["retirever","retriever"],["retirevers","retrievers"],["retireves","retrieves"],["retireving","retrieving"],["retirned","returned"],["retore","restore"],["retored","restored"],["retores","restores"],["retoric","rhetoric"],["retorical","rhetorical"],["retoring","restoring"],["retourned","returned"],["retpresenting","representing"],["retquirement","requirement"],["retquirements","requirements"],["retquireseek","requireseek"],["retquiresgpos","requiresgpos"],["retquiresgsub","requiresgsub"],["retquiressl","requiressl"],["retranser","retransfer"],["retransferd","retransferred"],["retransfered","retransferred"],["retransfering","retransferring"],["retransferrd","retransferred"],["retransmited","retransmitted"],["retransmition","retransmission"],["retreevable","retrievable"],["retreeval","retrieval"],["retreeve","retrieve"],["retreeved","retrieved"],["retreeves","retrieves"],["retreeving","retrieving"],["retreivable","retrievable"],["retreival","retrieval"],["retreive","retrieve"],["retreived","retrieved"],["retreives","retrieves"],["retreiving","retrieving"],["retrevable","retrievable"],["retreval","retrieval"],["retreve","retrieve"],["retreved","retrieved"],["retreves","retrieves"],["retreving","retrieving"],["retrict","restrict"],["retricted","restricted"],["retriebe","retrieve"],["retriece","retrieve"],["retrieces","retrieves"],["retriev","retrieve"],["retrieveds","retrieved"],["retrive","retrieve"],["retrived","retrieved"],["retrives","retrieves"],["retriving","retrieving"],["retrn","return"],["retrned","returned"],["retrns","returns"],["retrun","return"],["retruned","returned"],["retruns","returns"],["retrvieve","retrieve"],["retrvieved","retrieved"],["retrviever","retriever"],["retrvievers","retrievers"],["retrvieves","retrieves"],["retsart","restart"],["retsarts","restarts"],["retun","return"],["retunrned","returned"],["retunrs","returns"],["retuns","returns"],["retur","return"],["reture","return"],["retured","returned"],["returend","returned"],["retures","returns"],["returing","returning"],["returm","return"],["returmed","returned"],["returming","returning"],["returms","returns"],["returnd","returned"],["returnes","returns"],["returnig","returning"],["returnn","return"],["returnned","returned"],["returnning","returning"],["returs","returns"],["retursn","returns"],["retutning","returning"],["retyring","retrying"],["reudce","reduce"],["reudced","reduced"],["reudces","reduces"],["reudction","reduction"],["reudctions","reductions"],["reuest","request"],["reuests","requests"],["reulator","regulator"],["reundant","redundant"],["reundantly","redundantly"],["reuplad","reupload"],["reupladed","reuploaded"],["reuplader","reuploader"],["reupladers","reuploaders"],["reuplading","reuploading"],["reuplads","reuploads"],["reuplaod","reupload"],["reuplaoded","reuploaded"],["reuplaoder","reuploader"],["reuplaoders","reuploaders"],["reuplaoding","reuploading"],["reuplaods","reuploads"],["reuplod","reupload"],["reuploded","reuploaded"],["reuploder","reuploader"],["reuploders","reuploaders"],["reuploding","reuploading"],["reuplods","reuploads"],["reuqest","request"],["reuqested","requested"],["reuqesting","requesting"],["reuqests","requests"],["reurn","return"],["reursively","recursively"],["reuslt","result"],["reussing","reusing"],["reutnred","returned"],["reutrn","return"],["reutrns","returns"],["revaildating","revalidating"],["revaluated","reevaluated"],["reveiw","review"],["reveiwed","reviewed"],["reveiwer","reviewer"],["reveiwers","reviewers"],["reveiwing","reviewing"],["reveiws","reviews"],["revelent","relevant"],["revelution","revolution"],["revelutions","revolutions"],["reveokes","revokes"],["reverce","reverse"],["reverced","reversed"],["revereces","references"],["reverese","reverse"],["reveresed","reversed"],["reveret","revert"],["revereted","reverted"],["reversable","reversible"],["reverse-engeneer","reverse-engineer"],["reverse-engeneering","reverse-engineering"],["reverse-engieer","reverse-engineer"],["reverseed","reversed"],["reversees","reverses"],["reverve","reserve"],["reverved","reserved"],["revewrse","reverse"],["reviewl","review"],["reviewsectio","reviewsection"],["revisisions","revisions"],["revison","revision"],["revisons","revisions"],["revist","revisit"],["revisted","revisited"],["revisting","revisiting"],["revists","revisits"],["reviwed","reviewed"],["reviwer","reviewer"],["reviwers","reviewers"],["reviwing","reviewing"],["revoluion","revolution"],["revolutionar","revolutionary"],["revrese","reverse"],["revrieve","retrieve"],["revrieved","retrieved"],["revriever","retriever"],["revrievers","retrievers"],["revrieves","retrieves"],["revsion","revision"],["rewiev","review"],["rewieved","reviewed"],["rewiever","reviewer"],["rewieving","reviewing"],["rewievs","reviews"],["rewirtable","rewritable"],["rewirte","rewrite"],["rewirtten","rewritten"],["rewitable","rewritable"],["rewite","rewrite"],["rewitten","rewritten"],["reworkd","reworked"],["rewriet","rewrite"],["rewriite","rewrite"],["rewriten","rewritten"],["rewritting","rewriting"],["rewuired","required"],["rference","reference"],["rferences","references"],["rfeturned","returned"],["rgister","register"],["rhymme","rhyme"],["rhythem","rhythm"],["rhythim","rhythm"],["rhythimcally","rhythmically"],["rhytmic","rhythmic"],["ridiculus","ridiculous"],["righ","right"],["righht","right"],["righmost","rightmost"],["rightt","right"],["rigourous","rigorous"],["rigt","right"],["rigth","right"],["rigths","rights"],["rigurous","rigorous"],["riminder","reminder"],["riminders","reminders"],["riminding","reminding"],["rimitives","primitives"],["rininging","ringing"],["rispective","respective"],["ristrict","restrict"],["ristricted","restricted"],["ristriction","restriction"],["ritable","writable"],["rivised","revised"],["rizes","rises"],["rlation","relation"],["rlse","else"],["rmeote","remote"],["rmeove","remove"],["rmeoved","removed"],["rmeoves","removes"],["rmove","remove"],["rmoved","removed"],["rmoving","removing"],["roataion","rotation"],["roatation","rotation"],["roated","rotated"],["roation","rotation"],["roboustness","robustness"],["robustnes","robustness"],["Rockerfeller","Rockefeller"],["rococco","rococo"],["rocord","record"],["rocorded","recorded"],["rocorder","recorder"],["rocording","recording"],["rocordings","recordings"],["rocords","records"],["roduceer","producer"],["roigin","origin"],["roiginal","original"],["roiginally","originally"],["roiginals","originals"],["roiginating","originating"],["roigins","origins"],["romote","remote"],["romoted","remoted"],["romoteing","remoting"],["romotely","remotely"],["romotes","remotes"],["romoting","remoting"],["romotly","remotely"],["roomate","roommate"],["ropeat","repeat"],["rorated","rotated"],["rosponse","response"],["rosponsive","responsive"],["rotaion","rotation"],["rotaions","rotations"],["rotaiton","rotation"],["rotaitons","rotations"],["rotat","rotate"],["rotataion","rotation"],["rotataions","rotations"],["rotateable","rotatable"],["rouding","rounding"],["roughtly","roughly"],["rougly","roughly"],["rouine","routine"],["rouines","routines"],["round-robbin","round-robin"],["roundign","rounding"],["roung","round"],["rountine","routine"],["rountines","routines"],["routiens","routines"],["routins","routines"],["rovide","provide"],["rovided","provided"],["rovider","provider"],["rovides","provides"],["roviding","providing"],["rqeuested","requested"],["rqeuesting","requesting"],["rquested","requested"],["rquesting","requesting"],["rquire","require"],["rquired","required"],["rquirement","requirement"],["rquires","requires"],["rquiring","requiring"],["rranslation","translation"],["rranslations","translations"],["rrase","erase"],["rrror","error"],["rrrored","errored"],["rrroring","erroring"],["rrrors","errors"],["rubarb","rhubarb"],["rucuperate","recuperate"],["rudimentally","rudimentary"],["rudimentatry","rudimentary"],["rudimentory","rudimentary"],["rudimentry","rudimentary"],["rulle","rule"],["rumatic","rheumatic"],["runn","run"],["runnig","running"],["runnign","running"],["runnigng","running"],["runnin","running"],["runnint","running"],["runnners","runners"],["runnning","running"],["runns","runs"],["runnung","running"],["runting","runtime"],["rurrent","current"],["russina","Russian"],["Russion","Russian"],["rwite","write"],["rysnc","rsync"],["rythem","rhythm"],["rythim","rhythm"],["rythm","rhythm"],["rythmic","rhythmic"],["rythyms","rhythms"],["saame","same"],["sabatage","sabotage"],["sabatour","saboteur"],["sacalar","scalar"],["sacalars","scalars"],["sacarin","saccharin"],["sacle","scale"],["sacrafice","sacrifice"],["sacreligious","sacrilegious"],["Sacremento","Sacramento"],["sacrifical","sacrificial"],["sacrifying","sacrificing"],["sacrilegeous","sacrilegious"],["sacrin","saccharin"],["sade","sad"],["saem","same"],["safe-pooint","safe-point"],["safe-pooints","safe-points"],["safeing","saving"],["safepooint","safepoint"],["safepooints","safepoints"],["safequard","safeguard"],["saferi","Safari"],["safetly","safely"],["safly","safely"],["saftey","safety"],["safty","safety"],["saggital","sagittal"],["sagital","sagittal"],["Sagitarius","Sagittarius"],["sais","says"],["saleries","salaries"],["salery","salary"],["salveof","slaveof"],["samle","sample"],["samled","sampled"],["samll","small"],["samller","smaller"],["sammon","salmon"],["samori","samurai"],["sampel","sample"],["sampeld","sampled"],["sampels","samples"],["samwich","sandwich"],["samwiches","sandwiches"],["sanaty","sanity"],["sanctionning","sanctioning"],["sandobx","sandbox"],["sandwhich","sandwich"],["Sanhedrim","Sanhedrin"],["sanitizisation","sanitization"],["sanizer","sanitizer"],["sanpshot","snapshot"],["sanpsnots","snapshots"],["sansitizer","sanitizer"],["sansitizers","sanitizers"],["santioned","sanctioned"],["santize","sanitize"],["santized","sanitized"],["santizes","sanitizes"],["santizing","sanitizing"],["sanwich","sandwich"],["sanwiches","sandwiches"],["sanytise","sanitise"],["sanytize","sanitize"],["saphire","sapphire"],["saphires","sapphires"],["sargant","sergeant"],["sargeant","sergeant"],["sarted","started"],["sarter","starter"],["sarters","starters"],["sastisfies","satisfies"],["satandard","standard"],["satandards","standards"],["satelite","satellite"],["satelites","satellites"],["satelitte","satellite"],["satellittes","satellites"],["satement","statement"],["satements","statements"],["saterday","Saturday"],["saterdays","Saturdays"],["satified","satisfied"],["satifies","satisfies"],["satifsy","satisfy"],["satify","satisfy"],["satifying","satisfying"],["satisfactority","satisfactorily"],["satisfiabilty","satisfiability"],["satisfing","satisfying"],["satisfyied","satisfied"],["satisifed","satisfied"],["satisified","satisfied"],["satisifies","satisfies"],["satisify","satisfy"],["satisifying","satisfying"],["satistying","satisfying"],["satric","satiric"],["satrical","satirical"],["satrically","satirically"],["sattelite","satellite"],["sattelites","satellites"],["sattellite","satellite"],["sattellites","satellites"],["satuaday","Saturday"],["satuadays","Saturdays"],["saturdey","Saturday"],["satursday","Saturday"],["satus","status"],["saught","sought"],["sav","save"],["savees","saves"],["saveing","saving"],["savely","safely"],["savere","severe"],["savety","safety"],["savgroup","savegroup"],["savy","savvy"],["saxaphone","saxophone"],["sbsampling","subsampling"],["scahr","schar"],["scalarr","scalar"],["scaleability","scalability"],["scaleable","scalable"],["scaleing","scaling"],["scalled","scaled"],["scandanavia","Scandinavia"],["scaned","scanned"],["scaning","scanning"],["scannning","scanning"],["scaricity","scarcity"],["scavange","scavenge"],["scavanged","scavenged"],["scavanger","scavenger"],["scavangers","scavengers"],["scavanges","scavenges"],["sccope","scope"],["sceanrio","scenario"],["sceanrios","scenarios"],["scecified","specified"],["scenarion","scenario"],["scenarions","scenarios"],["scenegraaph","scenegraph"],["scenegraaphs","scenegraphs"],["sceond","second"],["sceonds","seconds"],["scetch","sketch"],["scetched","sketched"],["scetches","sketches"],["scetching","sketching"],["schdule","schedule"],["schduled","scheduled"],["schduleing","scheduling"],["schduler","scheduler"],["schdules","schedules"],["schduling","scheduling"],["schedual","schedule"],["scheduald","scheduled"],["schedualed","scheduled"],["schedualing","scheduling"],["schedulier","scheduler"],["schedulling","scheduling"],["scheduluing","scheduling"],["schem","scheme"],["schemd","schemed"],["schems","schemes"],["schme","scheme"],["schmea","schema"],["schmeas","schemas"],["schmes","schemes"],["scholarhip","scholarship"],["scholarhips","scholarships"],["scholdn't","shouldn't"],["schould","should"],["scientfic","scientific"],["scientfically","scientifically"],["scientficaly","scientifically"],["scientficly","scientifically"],["scientifc","scientific"],["scientifcally","scientifically"],["scientifcaly","scientifically"],["scientifcly","scientifically"],["scientis","scientist"],["scientiss","scientist"],["scince","science"],["scinece","science"],["scintiallation","scintillation"],["scintillatqt","scintillaqt"],["scipted","scripted"],["scipting","scripting"],["sciript","script"],["sciripts","scripts"],["scirpt","script"],["scirpts","scripts"],["scketch","sketch"],["scketched","sketched"],["scketches","sketches"],["scketching","sketching"],["sclar","scalar"],["scneario","scenario"],["scnearios","scenarios"],["scoket","socket"],["scoll","scroll"],["scolling","scrolling"],["scondary","secondary"],["scopeing","scoping"],["scorebord","scoreboard"],["scources","sources"],["scrach","scratch"],["scrached","scratched"],["scraches","scratches"],["scraching","scratching"],["scrachs","scratches"],["scrao","scrap"],["screeb","screen"],["screebs","screens"],["screenchot","screenshot"],["screenchots","screenshots"],["screenwrighter","screenwriter"],["screnn","screen"],["scriopted","scripted"],["scriopting","scripting"],["scriopts","scripts"],["scriopttype","scripttype"],["scriping","scripting"],["scripst","scripts"],["scriptype","scripttype"],["scritp","script"],["scritped","scripted"],["scritping","scripting"],["scritps","scripts"],["scritpt","script"],["scritpts","scripts"],["scroipt","script"],["scroipted","scripted"],["scroipting","scripting"],["scroipts","scripts"],["scroipttype","scripttype"],["scrollablbe","scrollable"],["scrollin","scrolling"],["scroolbar","scrollbar"],["scrpt","script"],["scrpted","scripted"],["scrpting","scripting"],["scrpts","scripts"],["scrren","screen"],["scrutinity","scrutiny"],["scubscribe","subscribe"],["scubscribed","subscribed"],["scubscriber","subscriber"],["scubscribes","subscribes"],["scuccessully","successfully"],["scupt","sculpt"],["scupted","sculpted"],["scupting","sculpting"],["scupture","sculpture"],["scuptures","sculptures"],["seach","search"],["seached","searched"],["seaches","searches"],["seaching","searching"],["seachkey","searchkey"],["seacrchable","searchable"],["seamlessley","seamlessly"],["seamlessy","seamlessly"],["searcahble","searchable"],["searcheable","searchable"],["searchin","searching"],["searchs","searches"],["seatch","search"],["seccond","second"],["secconds","seconds"],["secction","section"],["secene","scene"],["secific","specific"],["secion","section"],["secions","sections"],["secirity","security"],["seciton","section"],["secitons","sections"],["secne","scene"],["secod","second"],["secods","seconds"],["seconadry","secondary"],["seconcary","secondary"],["secondaray","secondary"],["seconday","secondary"],["seconf","second"],["seconfs","seconds"],["seconly","secondly"],["secont","second"],["secontary","secondary"],["secontly","secondly"],["seconts","seconds"],["secord","second"],["secords","seconds"],["secotr","sector"],["secound","second"],["secoundary","secondary"],["secoundly","secondly"],["secounds","seconds"],["secquence","sequence"],["secratary","secretary"],["secretery","secretary"],["secrion","section"],["secruity","security"],["sectin","section"],["sectins","sections"],["sectionning","sectioning"],["secton","section"],["sectoned","sectioned"],["sectoning","sectioning"],["sectons","sections"],["sectopm","section"],["sectopmed","sectioned"],["sectopming","sectioning"],["sectopms","sections"],["sectopn","section"],["sectopned","sectioned"],["sectopning","sectioning"],["sectopns","sections"],["secue","secure"],["secuely","securely"],["secuence","sequence"],["secuenced","sequenced"],["secuences","sequences"],["secuencial","sequential"],["secuencing","sequencing"],["secuirty","security"],["secuity","security"],["secund","second"],["secunds","seconds"],["securiy","security"],["securiyt","security"],["securly","securely"],["securre","secure"],["securrely","securely"],["securrly","securely"],["securtity","security"],["securtiy","security"],["securty","security"],["securuity","security"],["sedereal","sidereal"],["seeem","seem"],["seeen","seen"],["seelect","select"],["seelected","selected"],["seemes","seems"],["seemless","seamless"],["seemlessly","seamlessly"],["seesion","session"],["seesions","sessions"],["seetings","settings"],["seeverities","severities"],["seeverity","severity"],["segault","segfault"],["segaults","segfaults"],["segement","segment"],["segementation","segmentation"],["segemented","segmented"],["segements","segments"],["segemnts","segments"],["segfualt","segfault"],["segfualts","segfaults"],["segmantation","segmentation"],["segmend","segment"],["segmendation","segmentation"],["segmended","segmented"],["segmends","segments"],["segmenet","segment"],["segmenetd","segmented"],["segmeneted","segmented"],["segmenets","segments"],["segmenst","segments"],["segmentaion","segmentation"],["segmente","segment"],["segmentes","segments"],["segmetn","segment"],["segmetned","segmented"],["segmetns","segments"],["segument","segment"],["seguoys","segues"],["seh","she"],["seige","siege"],["seing","seeing"],["seinor","senior"],["seires","series"],["sekect","select"],["sekected","selected"],["sekects","selects"],["selcetion","selection"],["selct","select"],["selctable","selectable"],["selctables","selectable"],["selcted","selected"],["selcting","selecting"],["selction","selection"],["selctions","selections"],["seldomly","seldom"],["selecction","selection"],["selecctions","selections"],["seleced","selected"],["selecetd","selected"],["seleceted","selected"],["selecgt","select"],["selecgted","selected"],["selecgting","selecting"],["selecing","selecting"],["selecrtion","selection"],["selectd","selected"],["selectes","selects"],["selectoin","selection"],["selecton","selection"],["selectons","selections"],["seledted","selected"],["selektions","selections"],["selektor","selector"],["selet","select"],["selets","selects"],["self-comparisson","self-comparison"],["self-contianed","self-contained"],["self-referencial","self-referential"],["self-refering","self-referring"],["selfs","self"],["sellect","select"],["sellected","selected"],["selv","self"],["semaintics","semantics"],["semaphone","semaphore"],["semaphones","semaphores"],["semaphor","semaphore"],["semaphors","semaphores"],["semapthore","semaphore"],["semapthores","semaphores"],["sematic","semantic"],["sematical","semantical"],["sematically","semantically"],["sematics","semantics"],["sematnics","semantics"],["semding","sending"],["sementation","segmentation"],["sementic","semantic"],["sementically","semantically"],["sementics","semantics"],["semgent","segment"],["semgentation","segmentation"],["semicolor","semicolon"],["semicolumn","semicolon"],["semicondutor","semiconductor"],["sempahore","semaphore"],["sempahores","semaphores"],["sempaphore","semaphore"],["sempaphores","semaphores"],["semphore","semaphore"],["semphores","semaphores"],["sempphore","semaphore"],["senaphore","semaphore"],["senaphores","semaphores"],["senario","scenario"],["senarios","scenarios"],["sencond","second"],["sencondary","secondary"],["senconds","seconds"],["sendign","sending"],["sendinging","sending"],["sendinng","sending"],["senfile","sendfile"],["senintels","sentinels"],["senitnel","sentinel"],["senitnels","sentinels"],["senquence","sequence"],["sensative","sensitive"],["sensetive","sensitive"],["sensisble","sensible"],["sensistive","sensitive"],["sensititive","sensitive"],["sensititivies","sensitivities"],["sensititivity","sensitivity"],["sensititivy","sensitivity"],["sensitiv","sensitive"],["sensitiveties","sensitivities"],["sensitivety","sensitivity"],["sensitivites","sensitivities"],["sensitivties","sensitivities"],["sensitivty","sensitivity"],["sensitve","sensitive"],["senstive","sensitive"],["sensure","censure"],["sentance","sentence"],["sentances","sentences"],["senteces","sentences"],["sentense","sentence"],["sentienl","sentinel"],["sentinal","sentinel"],["sentinals","sentinels"],["sention","section"],["sentions","sections"],["sentive","sensitive"],["sentivite","sensitive"],["sepaate","separate"],["separartor","separator"],["separat","separate"],["separatelly","separately"],["separater","separator"],["separatley","separately"],["separatly","separately"],["separato","separator"],["separatos","separators"],["separatring","separating"],["separed","separated"],["separete","separate"],["separeted","separated"],["separetedly","separately"],["separetely","separately"],["separeter","separator"],["separetes","separates"],["separeting","separating"],["separetly","separately"],["separetor","separator"],["separtates","separates"],["separte","separate"],["separted","separated"],["separtes","separates"],["separting","separating"],["sepatae","separate"],["sepatate","separate"],["sepcial","special"],["sepcific","specific"],["sepcifically","specifically"],["sepcification","specification"],["sepcifications","specifications"],["sepcified","specified"],["sepcifier","specifier"],["sepcifies","specifies"],["sepcify","specify"],["sepcifying","specifying"],["sepearable","separable"],["sepearate","separate"],["sepearated","separated"],["sepearately","separately"],["sepearates","separates"],["sepearation","separation"],["sepearator","separator"],["sepearators","separators"],["sepearet","separate"],["sepearetly","separately"],["sepearte","separate"],["sepearted","separated"],["sepeartely","separately"],["sepeartes","separates"],["sepeartor","separator"],["sepeartors","separators"],["sepeate","separate"],["sepeated","separated"],["sepeates","separates"],["sepeator","separator"],["sepeators","separators"],["sepecial","special"],["sepecifed","specified"],["sepecific","specific"],["sepecification","specification"],["sepecified","specified"],["sepecifier","specifier"],["sepecifiers","specifiers"],["sepecifies","specifies"],["sepecify","specify"],["sepectral","spectral"],["sepeicfy","specify"],["sependent","dependent"],["sepending","depending"],["seperable","separable"],["seperad","separate"],["seperadly","separately"],["seperaly","separately"],["seperaor","separator"],["seperaors","separators"],["seperare","separate"],["seperared","separated"],["seperares","separates"],["seperat","separate"],["seperataed","separated"],["seperatally","separately"],["seperataly","separately"],["seperatated","separated"],["seperatd","separated"],["seperate","separate"],["seperated","separated"],["seperatedly","separately"],["seperatedy","separated"],["seperateely","separately"],["seperateing","separating"],["seperatelly","separately"],["seperately","separately"],["seperater","separator"],["seperaters","separators"],["seperates","separates"],["seperating","separating"],["seperation","separation"],["seperations","separations"],["seperatism","separatism"],["seperatist","separatist"],["seperatley","separately"],["seperatly","separately"],["seperato","separator"],["seperator","separator"],["seperators","separators"],["seperatos","separators"],["sepereate","separate"],["sepereated","separated"],["sepereates","separates"],["sepererate","separate"],["sepererated","separated"],["sepererates","separates"],["seperete","separate"],["sepereted","separated"],["seperetes","separates"],["seperratly","separately"],["sepertator","separator"],["sepertators","separators"],["sepertor","separator"],["sepertors","separators"],["sepetaror","separator"],["sepetarors","separators"],["sepetate","separate"],["sepetated","separated"],["sepetately","separately"],["sepetates","separates"],["sepina","subpoena"],["seporate","separate"],["sepparation","separation"],["sepparations","separations"],["sepperate","separate"],["seprarate","separate"],["seprate","separate"],["seprated","separated"],["seprator","separator"],["seprators","separators"],["Septemer","September"],["seqence","sequence"],["seqenced","sequenced"],["seqences","sequences"],["seqencing","sequencing"],["seqense","sequence"],["seqensed","sequenced"],["seqenses","sequences"],["seqensing","sequencing"],["seqenstial","sequential"],["seqential","sequential"],["seqeuence","sequence"],["seqeuencer","sequencer"],["seqeuental","sequential"],["seqeunce","sequence"],["seqeuncer","sequencer"],["seqeuntials","sequentials"],["sequcne","sequence"],["sequece","sequence"],["sequecence","sequence"],["sequecences","sequences"],["sequeces","sequences"],["sequeence","sequence"],["sequelce","sequence"],["sequemce","sequence"],["sequemces","sequences"],["sequencial","sequential"],["sequencially","sequentially"],["sequencies","sequences"],["sequense","sequence"],["sequensed","sequenced"],["sequenses","sequences"],["sequensing","sequencing"],["sequenstial","sequential"],["sequentialy","sequentially"],["sequenzes","sequences"],["sequetial","sequential"],["sequnce","sequence"],["sequnced","sequenced"],["sequncer","sequencer"],["sequncers","sequencers"],["sequnces","sequences"],["sequnece","sequence"],["sequneces","sequences"],["ser","set"],["serach","search"],["serached","searched"],["seracher","searcher"],["seraches","searches"],["seraching","searching"],["serachs","searches"],["serailisation","serialisation"],["serailise","serialise"],["serailised","serialised"],["serailization","serialization"],["serailize","serialize"],["serailized","serialized"],["serailse","serialise"],["serailsed","serialised"],["serailze","serialize"],["serailzed","serialized"],["serch","search"],["serched","searched"],["serches","searches"],["serching","searching"],["sercive","service"],["sercived","serviced"],["sercives","services"],["serciving","servicing"],["sereverless","serverless"],["serevrless","serverless"],["sergent","sergeant"],["serialialisation","serialisation"],["serialialise","serialise"],["serialialised","serialised"],["serialialises","serialises"],["serialialising","serialising"],["serialialization","serialization"],["serialialize","serialize"],["serialialized","serialized"],["serialializes","serializes"],["serialializing","serializing"],["serialiasation","serialisation"],["serialiazation","serialization"],["serialsiation","serialisation"],["serialsie","serialise"],["serialsied","serialised"],["serialsies","serialises"],["serialsing","serialising"],["serialziation","serialization"],["serialzie","serialize"],["serialzied","serialized"],["serialzies","serializes"],["serialzing","serializing"],["serice","service"],["serie","series"],["seriel","serial"],["serieses","series"],["serios","serious"],["seriouly","seriously"],["seriuos","serious"],["serivce","service"],["serivces","services"],["sersies","series"],["sertificate","certificate"],["sertificated","certificated"],["sertificates","certificates"],["sertification","certification"],["servece","service"],["serveced","serviced"],["serveces","services"],["servecing","servicing"],["serveice","service"],["serveiced","serviced"],["serveices","services"],["serveicing","servicing"],["serveless","serverless"],["serveral","several"],["serverite","severity"],["serverites","severities"],["serverities","severities"],["serverity","severity"],["serverles","serverless"],["serverlesss","serverless"],["serverlsss","serverless"],["servicies","services"],["servie","service"],["servies","services"],["servive","service"],["servoce","service"],["servoced","serviced"],["servoces","services"],["servocing","servicing"],["sesion","session"],["sesions","sessions"],["sesitive","sensitive"],["sesitively","sensitively"],["sesitiveness","sensitiveness"],["sesitivity","sensitivity"],["sessio","session"],["sesssion","session"],["sesssions","sessions"],["sestatusbar","setstatusbar"],["sestatusmsg","setstatusmsg"],["setevn","setenv"],["setgit","setgid"],["seting","setting"],["setings","settings"],["setion","section"],["setions","sections"],["setitng","setting"],["setitngs","settings"],["setquential","sequential"],["setted","set"],["settelement","settlement"],["settign","setting"],["settigns","settings"],["settigs","settings"],["settiing","setting"],["settiings","settings"],["settinga","settings"],["settingss","settings"],["settins","settings"],["settlment","settlement"],["settng","setting"],["settter","setter"],["settters","setters"],["settting","setting"],["setttings","settings"],["settup","setup"],["setyp","setup"],["setyps","setups"],["seuence","sequence"],["seuences","sequences"],["sevaral","several"],["severat","several"],["severeal","several"],["severirirty","severity"],["severirities","severities"],["severite","severity"],["severites","severities"],["severiy","severity"],["severl","several"],["severley","severely"],["severly","severely"],["sevice","service"],["sevirity","severity"],["sevral","several"],["sevrally","severally"],["sevrity","severity"],["sewdonim","pseudonym"],["sewdonims","pseudonyms"],["sewrvice","service"],["sfety","safety"],["sgadow","shadow"],["sh1sum","sha1sum"],["shadasloo","shadaloo"],["shaddow","shadow"],["shadhow","shadow"],["shadoloo","shadaloo"],["shal","shall"],["shandeleer","chandelier"],["shandeleers","chandeliers"],["shandow","shadow"],["shaneal","chenille"],["shanghi","Shanghai"],["shapshot","snapshot"],["shapshots","snapshots"],["shapsnot","snapshot"],["shapsnots","snapshots"],["sharable","shareable"],["shareed","shared"],["shareing","sharing"],["sharloton","charlatan"],["sharraid","charade"],["sharraids","charades"],["shashes","slashes"],["shatow","ch\xE2teau"],["shbang","shebang"],["shedule","schedule"],["sheduled","scheduled"],["shedules","schedules"],["sheduling","scheduling"],["sheepherd","shepherd"],["sheepherds","shepherds"],["sheeps","sheep"],["sheild","shield"],["sheilded","shielded"],["sheilding","shielding"],["sheilds","shields"],["shepe","shape"],["shepered","shepherd"],["sheperedly","shepherdly"],["shepereds","shepherds"],["shepes","shapes"],["sheping","shaping"],["shepre","sphere"],["shepres","spheres"],["sherif","sheriff"],["shfit","shift"],["shfited","shifted"],["shfiting","shifting"],["shfits","shifts"],["shfted","shifted"],["shicane","chicane"],["shif","shift"],["shif-tab","shift-tab"],["shineing","shining"],["shiped","shipped"],["shiping","shipping"],["shoftware","software"],["shoild","should"],["shoing","showing"],["sholder","shoulder"],["sholdn't","shouldn't"],["sholuld","should"],["sholuldn't","shouldn't"],["shoould","should"],["shopkeeepers","shopkeepers"],["shorcut","shortcut"],["shorcuts","shortcuts"],["shorly","shortly"],["short-cicruit","short-circuit"],["short-cicruits","short-circuits"],["shortcat","shortcut"],["shortcats","shortcuts"],["shortcomming","shortcoming"],["shortcommings","shortcomings"],["shortcutt","shortcut"],["shortern","shorten"],["shorthly","shortly"],["shortkut","shortcut"],["shortkuts","shortcuts"],["shortwhile","short while"],["shotcut","shortcut"],["shotcuts","shortcuts"],["shotdown","shutdown"],["shoucl","should"],["shoud","should"],["shoudl","should"],["shoudld","should"],["shoudle","should"],["shoudln't","shouldn't"],["shoudlnt","shouldn't"],["shoudn't","shouldn't"],["shoudn","shouldn"],["should'nt","shouldn't"],["should't","shouldn't"],["shouldn;t","shouldn't"],["shouldnt'","shouldn't"],["shouldnt","shouldn't"],["shouldnt;","shouldn't"],["shoule","should"],["shoulld","should"],["shouln't","shouldn't"],["shouls","should"],["shoult","should"],["shouod","should"],["shouw","show"],["shouws","shows"],["showvinism","chauvinism"],["shpae","shape"],["shpaes","shapes"],["shpapes","shapes"],["shpere","sphere"],["shperes","spheres"],["shpped","shipped"],["shreak","shriek"],["shreshold","threshold"],["shriks","shrinks"],["shttp","https"],["shudown","shutdown"],["shufle","shuffle"],["shuld","should"],["shure","sure"],["shurely","surely"],["shutdownm","shutdown"],["shuting","shutting"],["shutodwn","shutdown"],["shwo","show"],["shwon","shown"],["shystem","system"],["shystems","systems"],["sibiling","sibling"],["sibilings","siblings"],["sibtitle","subtitle"],["sibtitles","subtitles"],["sicinct","succinct"],["sicinctly","succinctly"],["sicne","since"],["sidde","side"],["sideral","sidereal"],["siduction","seduction"],["siezure","seizure"],["siezures","seizures"],["siffix","suffix"],["siffixed","suffixed"],["siffixes","suffixes"],["siffixing","suffixing"],["sigaled","signaled"],["siganture","signature"],["sigantures","signatures"],["sigen","sign"],["sigificance","significance"],["siginificant","significant"],["siginificantly","significantly"],["siginify","signify"],["sigit","digit"],["sigits","digits"],["sigleton","singleton"],["signales","signals"],["signall","signal"],["signatue","signature"],["signatur","signature"],["signes","signs"],["signficant","significant"],["signficantly","significantly"],["signficiant","significant"],["signfies","signifies"],["signguature","signature"],["signifanct","significant"],["signifant","significant"],["signifantly","significantly"],["signifcant","significant"],["signifcantly","significantly"],["signifficant","significant"],["significanly","significantly"],["significat","significant"],["significatly","significantly"],["significently","significantly"],["signifigant","significant"],["signifigantly","significantly"],["signitories","signatories"],["signitory","signatory"],["signol","signal"],["signto","sign to"],["signul","signal"],["signular","singular"],["signularity","singularity"],["silentely","silently"],["silenty","silently"],["silouhette","silhouette"],["silouhetted","silhouetted"],["silouhettes","silhouettes"],["silouhetting","silhouetting"],["simeple","simple"],["simetrie","symmetry"],["simetries","symmetries"],["simgle","single"],["simialr","similar"],["simialrity","similarity"],["simialrly","similarly"],["simiar","similar"],["similarily","similarly"],["similary","similarly"],["similat","similar"],["similia","similar"],["similiar","similar"],["similiarity","similarity"],["similiarly","similarly"],["similiarty","similarity"],["similiary","similarity"],["simillar","similar"],["similtaneous","simultaneous"],["simlar","similar"],["simlarlity","similarity"],["simlarly","similarly"],["simliar","similar"],["simliarly","similarly"],["simlicity","simplicity"],["simlified","simplified"],["simmetric","symmetric"],["simmetrical","symmetrical"],["simmetry","symmetry"],["simmilar","similar"],["simpification","simplification"],["simpifications","simplifications"],["simpified","simplified"],["simplei","simply"],["simpley","simply"],["simplfy","simplify"],["simplicitly","simplicity"],["simplicty","simplicity"],["simplier","simpler"],["simpliest","simplest"],["simplifed","simplified"],["simplificaiton","simplification"],["simplificaitons","simplifications"],["simplifiy","simplify"],["simplifys","simplifies"],["simpliifcation","simplification"],["simpliifcations","simplifications"],["simplist","simplest"],["simpy","simply"],["simualte","simulate"],["simualted","simulated"],["simualtes","simulates"],["simualting","simulating"],["simualtion","simulation"],["simualtions","simulations"],["simualtor","simulator"],["simualtors","simulators"],["simulaiton","simulation"],["simulaitons","simulations"],["simulantaneous","simultaneous"],["simulantaneously","simultaneously"],["simulataeous","simultaneous"],["simulataeously","simultaneously"],["simulataneity","simultaneity"],["simulataneous","simultaneous"],["simulataneously","simultaneously"],["simulatanious","simultaneous"],["simulataniously","simultaneously"],["simulatanous","simultaneous"],["simulatanously","simultaneously"],["simulatation","simulation"],["simulatenous","simultaneous"],["simulatenously","simultaneously"],["simultanaeous","simultaneous"],["simultaneos","simultaneous"],["simultaneosly","simultaneously"],["simultanious","simultaneous"],["simultaniously","simultaneously"],["simultanous","simultaneous"],["simultanously","simultaneously"],["simutaneously","simultaneously"],["sinature","signature"],["sincerley","sincerely"],["sincerly","sincerely"],["singaled","signaled"],["singals","signals"],["singature","signature"],["singatures","signatures"],["singelar","singular"],["singelarity","singularity"],["singelarly","singularly"],["singelton","singleton"],["singl","single"],["singlar","singular"],["single-threded","single-threaded"],["singlton","singleton"],["singltons","singletons"],["singluar","singular"],["singlular","singular"],["singlularly","singularly"],["singnal","signal"],["singnalled","signalled"],["singnals","signals"],["singolar","singular"],["singoolar","singular"],["singoolarity","singularity"],["singoolarly","singularly"],["singsog","singsong"],["singuarity","singularity"],["singuarl","singular"],["singulat","singular"],["singulaties","singularities"],["sinlge","single"],["sinlges","singles"],["sinply","simply"],["sintac","syntax"],["sintacks","syntax"],["sintacs","syntax"],["sintact","syntax"],["sintacts","syntax"],["sintak","syntax"],["sintaks","syntax"],["sintakt","syntax"],["sintakts","syntax"],["sintax","syntax"],["Sionist","Zionist"],["Sionists","Zionists"],["siply","simply"],["sircle","circle"],["sircles","circles"],["sircular","circular"],["sirect","direct"],["sirected","directed"],["sirecting","directing"],["sirection","direction"],["sirectional","directional"],["sirectionalities","directionalities"],["sirectionality","directionality"],["sirectionals","directionals"],["sirectionless","directionless"],["sirections","directions"],["sirective","directive"],["sirectives","directives"],["sirectly","directly"],["sirectness","directness"],["sirector","director"],["sirectories","directories"],["sirectors","directors"],["sirectory","directory"],["sirects","directs"],["sisnce","since"],["sistem","system"],["sistematically","systematically"],["sistematics","systematics"],["sistematies","systematies"],["sistematising","systematising"],["sistematizing","systematizing"],["sistematy","systematy"],["sistemed","systemed"],["sistemic","systemic"],["sistemically","systemically"],["sistemics","systemics"],["sistemist","systemist"],["sistemists","systemists"],["sistemize","systemize"],["sistemized","systemized"],["sistemizes","systemizes"],["sistemizing","systemizing"],["sistems","systems"],["sitation","situation"],["sitations","situations"],["sitaution","situation"],["sitautions","situations"],["sitck","stick"],["siteu","site"],["sitill","still"],["sitirring","stirring"],["sitirs","stirs"],["sitl","still"],["sitll","still"],["sitmuli","stimuli"],["situationnal","situational"],["situatuion","situation"],["situatuions","situations"],["situatution","situation"],["situatutions","situations"],["situbbornness","stubbornness"],["situdio","studio"],["situdios","studios"],["situration","situation"],["siturations","situations"],["situtaion","situation"],["situtaions","situations"],["situtation","situation"],["situtations","situations"],["siutable","suitable"],["siute","suite"],["sivible","visible"],["siwtch","switch"],["siwtched","switched"],["siwtching","switching"],["sizre","size"],["Skagerak","Skagerrak"],["skalar","scalar"],["skateing","skating"],["skecth","sketch"],["skecthes","sketches"],["skeep","skip"],["skelton","skeleton"],["skept","skipped"],["sketchs","sketches"],["skipd","skipped"],["skipe","skip"],["skiping","skipping"],["skippd","skipped"],["skippped","skipped"],["skippps","skips"],["slach","slash"],["slaches","slashes"],["slase","slash"],["slases","slashes"],["slashs","slashes"],["slaugterhouses","slaughterhouses"],["slect","select"],["slected","selected"],["slecting","selecting"],["slection","selection"],["sleect","select"],["sleeped","slept"],["sleepp","sleep"],["slicable","sliceable"],["slient","silent"],["sliently","silently"],["slighlty","slightly"],["slighly","slightly"],["slightl","slightly"],["slighty","slightly"],["slignt","slight"],["sligntly","slightly"],["sligth","slight"],["sligthly","slightly"],["sligtly","slightly"],["sliped","slipped"],["sliseshow","slideshow"],["slowy","slowly"],["sluggify","slugify"],["smae","same"],["smal","small"],["smaler","smaller"],["smallar","smaller"],["smalles","smallest"],["smaple","sample"],["smaples","samples"],["smealting","smelting"],["smething","something"],["smller","smaller"],["smoe","some"],["smoot","smooth"],["smooter","smoother"],["smoothign","smoothing"],["smooting","smoothing"],["smouth","smooth"],["smouthness","smoothness"],["smove","move"],["snaped","snapped"],["snaphot","snapshot"],["snaphsot","snapshot"],["snaping","snapping"],["snappng","snapping"],["snapsnot","snapshot"],["snapsnots","snapshots"],["sneeks","sneaks"],["snese","sneeze"],["snipet","snippet"],["snipets","snippets"],["snpashot","snapshot"],["snpashots","snapshots"],["snyc","sync"],["snytax","syntax"],["Soalris","Solaris"],["socail","social"],["socalism","socialism"],["socekts","sockets"],["socities","societies"],["soecialize","specialized"],["soem","some"],["soemthing","something"],["soemwhere","somewhere"],["sofisticated","sophisticated"],["softend","softened"],["softwares","software"],["softwre","software"],["sofware","software"],["sofwtare","software"],["sohw","show"],["soilders","soldiers"],["soiurce","source"],["soket","socket"],["sokets","sockets"],["solarmutx","solarmutex"],["solatary","solitary"],["solate","isolate"],["solated","isolated"],["solates","isolates"],["solating","isolating"],["soley","solely"],["solfed","solved"],["solfes","solves"],["solfing","solving"],["solfs","solves"],["soliders","soldiers"],["solification","solidification"],["soliliquy","soliloquy"],["soltion","solution"],["soltuion","solution"],["soltuions","solutions"],["soluable","soluble"],["solum","solemn"],["soluton","solution"],["solutons","solutions"],["solveable","solvable"],["solveing","solving"],["solwed","solved"],["som","some"],["someboby","somebody"],["somehing","something"],["somehting","something"],["somehwat","somewhat"],["somehwere","somewhere"],["somehwo","somehow"],["somelse","someone else"],["somemore","some more"],["somene","someone"],["somenone","someone"],["someon","someone"],["somethig","something"],["somethign","something"],["somethimes","sometimes"],["somethimg","something"],["somethiong","something"],["sometiems","sometimes"],["sometihing","something"],["sometihng","something"],["sometims","sometimes"],["sometines","sometimes"],["someting","something"],["sometinhg","something"],["sometring","something"],["sometrings","somethings"],["somewere","somewhere"],["somewher","somewhere"],["somewho","somehow"],["somme","some"],["somthign","something"],["somthing","something"],["somthingelse","somethingelse"],["somtimes","sometimes"],["somwhat","somewhat"],["somwhere","somewhere"],["somwho","somehow"],["somwhow","somehow"],["sonething","something"],["songlar","singular"],["sooaside","suicide"],["soodonim","pseudonym"],["soource","source"],["sophicated","sophisticated"],["sophisicated","sophisticated"],["sophisitcated","sophisticated"],["sophisticted","sophisticated"],["sophmore","sophomore"],["sorceror","sorcerer"],["sorkflow","workflow"],["sorrounding","surrounding"],["sortig","sorting"],["sortings","sorting"],["sortlst","sortlist"],["sortner","sorter"],["sortnr","sorter"],["soscket","socket"],["sotfware","software"],["souce","source"],["souces","sources"],["soucre","source"],["soucres","sources"],["soudn","sound"],["soudns","sounds"],["sould'nt","shouldn't"],["souldn't","shouldn't"],["soundard","soundcard"],["sountrack","soundtrack"],["sourc","source"],["sourcedrectory","sourcedirectory"],["sourcee","source"],["sourcees","sources"],["sourct","source"],["sourrounding","surrounding"],["sourth","south"],["sourthern","southern"],["southbrige","southbridge"],["souvenier","souvenir"],["souveniers","souvenirs"],["soveits","soviets"],["sover","solver"],["sovereignity","sovereignty"],["soverign","sovereign"],["soverignity","sovereignty"],["soverignty","sovereignty"],["sovle","solve"],["sovled","solved"],["sovren","sovereign"],["spacific","specific"],["spacification","specification"],["spacifications","specifications"],["spacifics","specifics"],["spacified","specified"],["spacifies","specifies"],["spaece","space"],["spaeced","spaced"],["spaeces","spaces"],["spaecing","spacing"],["spageti","spaghetti"],["spagetti","spaghetti"],["spagheti","spaghetti"],["spagnum","sphagnum"],["spainish","Spanish"],["spaning","spanning"],["sparate","separate"],["sparately","separately"],["spash","splash"],["spashed","splashed"],["spashes","splashes"],["spaw","spawn"],["spawed","spawned"],["spawing","spawning"],["spawining","spawning"],["spaws","spawns"],["spcae","space"],["spcaed","spaced"],["spcaes","spaces"],["spcaing","spacing"],["spcecified","specified"],["spcial","special"],["spcific","specific"],["spcification","specification"],["spcifications","specifications"],["spcified","specified"],["spcifies","specifies"],["spcify","specify"],["speaced","spaced"],["speach","speech"],["speacing","spacing"],["spearator","separator"],["spearators","separators"],["spec-complient","spec-compliant"],["specail","special"],["specefic","specific"],["specefically","specifically"],["speceficly","specifically"],["specefied","specified"],["specfic","specific"],["specfically","specifically"],["specfication","specification"],["specfications","specifications"],["specficication","specification"],["specficications","specifications"],["specficied","specified"],["specficies","specifies"],["specficy","specify"],["specficying","specifying"],["specfied","specified"],["specfield","specified"],["specfies","specifies"],["specfifies","specifies"],["specfify","specify"],["specfifying","specifying"],["specfiied","specified"],["specfy","specify"],["specfying","specifying"],["speciafied","specified"],["specialisaiton","specialisation"],["specialisaitons","specialisations"],["specializaiton","specialization"],["specializaitons","specializations"],["specialy","specially"],["specic","specific"],["specical","special"],["specication","specification"],["specidic","specific"],["specied","specified"],["speciefied","specified"],["specifactions","specifications"],["specifc","specific"],["specifcally","specifically"],["specifcation","specification"],["specifcations","specifications"],["specifcied","specified"],["specifclly","specifically"],["specifed","specified"],["specifes","specifies"],["speciffic","specific"],["speciffically","specifically"],["specifially","specifically"],["specificaiton","specification"],["specificaitons","specifications"],["specificallly","specifically"],["specificaly","specifically"],["specificated","specified"],["specificateion","specification"],["specificatin","specification"],["specificaton","specification"],["specificed","specified"],["specifices","specifies"],["specificially","specifically"],["specificiation","specification"],["specificiations","specifications"],["specificically","specifically"],["specificied","specified"],["specificl","specific"],["specificly","specifically"],["specifiction","specification"],["specifictions","specifications"],["specifid","specified"],["specifiec","specific"],["specifiecally","specifically"],["specifiecation","specification"],["specifiecations","specifications"],["specifiecd","specified"],["specifieced","specified"],["specifiecs","specifics"],["specifieed","specified"],["specifiees","specifies"],["specifig","specific"],["specifigation","specification"],["specifigations","specifications"],["specifing","specifying"],["specifities","specifics"],["specifiy","specify"],["specifiying","specifying"],["specifric","specific"],["specift","specify"],["specifyed","specified"],["specifyied","specified"],["specifyig","specifying"],["specifyinhg","specifying"],["speciic","specific"],["speciied","specified"],["speciifc","specific"],["speciifed","specified"],["specilisation","specialisation"],["specilisations","specialisations"],["specilization","specialization"],["specilizations","specializations"],["specilized","specialized"],["speciman","specimen"],["speciries","specifies"],["speciry","specify"],["specivied","specified"],["speciy","specify"],["speciyfing","specifying"],["speciyfying","specifying"],["speciying","specifying"],["spectauclar","spectacular"],["spectaulars","spectaculars"],["spectification","specification"],["spectifications","specifications"],["spectified","specified"],["spectifies","specifies"],["spectify","specify"],["spectifying","specifying"],["spectular","spectacular"],["spectularly","spectacularly"],["spectum","spectrum"],["specturm","spectrum"],["specualtive","speculative"],["specufies","specifies"],["specufy","specify"],["spedific","specific"],["spedified","specified"],["spedify","specify"],["speeak","speak"],["speeaking","speaking"],["speeling","spelling"],["speelling","spelling"],["speep","sleep"],["speep-up","speed-up"],["speeped","sped"],["speeping","sleeping"],["spefcifiable","specifiable"],["spefcific","specific"],["spefcifically","specifically"],["spefcification","specification"],["spefcifications","specifications"],["spefcifics","specifics"],["spefcifieid","specified"],["spefcifieir","specifier"],["spefcifieirs","specifiers"],["spefcifieis","specifies"],["spefcifiy","specify"],["spefcifiying","specifying"],["spefeid","specified"],["spefeir","specifier"],["spefeirs","specifiers"],["spefeis","specifies"],["spefiable","specifiable"],["spefial","special"],["spefic","specific"],["speficable","specifiable"],["spefically","specifically"],["spefication","specification"],["spefications","specifications"],["speficed","specified"],["speficeid","specified"],["speficeir","specifier"],["speficeirs","specifiers"],["speficeis","specifies"],["speficer","specifier"],["speficers","specifiers"],["spefices","specifies"],["speficiable","specifiable"],["speficiallally","specifically"],["speficiallation","specification"],["speficiallations","specifications"],["speficialleid","specified"],["speficialleir","specifier"],["speficialleirs","specifiers"],["speficialleis","specifies"],["speficialliable","specifiable"],["speficiallic","specific"],["speficiallically","specifically"],["speficiallication","specification"],["speficiallications","specifications"],["speficiallics","specifics"],["speficiallied","specified"],["speficiallier","specifier"],["speficialliers","specifiers"],["speficiallies","specifies"],["speficiallifed","specified"],["speficiallifer","specifier"],["speficiallifers","specifiers"],["speficiallifes","specifies"],["speficially","specifically"],["speficiation","specification"],["speficiations","specifications"],["speficic","specific"],["speficically","specifically"],["speficication","specification"],["speficications","specifications"],["speficics","specifics"],["speficied","specified"],["speficieid","specified"],["speficieir","specifier"],["speficieirs","specifiers"],["speficieis","specifies"],["speficier","specifier"],["speficiers","specifiers"],["speficies","specifies"],["speficifally","specifically"],["speficifation","specification"],["speficifations","specifications"],["speficifc","specific"],["speficifcally","specifically"],["speficifcation","specification"],["speficifcations","specifications"],["speficifcs","specifics"],["speficifed","specified"],["speficifeid","specified"],["speficifeir","specifier"],["speficifeirs","specifiers"],["speficifeis","specifies"],["speficifer","specifier"],["speficifers","specifiers"],["speficifes","specifies"],["speficifiable","specifiable"],["speficific","specific"],["speficifically","specifically"],["speficification","specification"],["speficifications","specifications"],["speficifics","specifics"],["speficified","specified"],["speficifier","specifier"],["speficifiers","specifiers"],["speficifies","specifies"],["speficififed","specified"],["speficififer","specifier"],["speficififers","specifiers"],["speficififes","specifies"],["speficify","specify"],["speficifying","specifying"],["speficiiable","specifiable"],["speficiic","specific"],["speficiically","specifically"],["speficiication","specification"],["speficiications","specifications"],["speficiics","specifics"],["speficiied","specified"],["speficiier","specifier"],["speficiiers","specifiers"],["speficiies","specifies"],["speficiifed","specified"],["speficiifer","specifier"],["speficiifers","specifiers"],["speficiifes","specifies"],["speficillally","specifically"],["speficillation","specification"],["speficillations","specifications"],["speficilleid","specified"],["speficilleir","specifier"],["speficilleirs","specifiers"],["speficilleis","specifies"],["speficilliable","specifiable"],["speficillic","specific"],["speficillically","specifically"],["speficillication","specification"],["speficillications","specifications"],["speficillics","specifics"],["speficillied","specified"],["speficillier","specifier"],["speficilliers","specifiers"],["speficillies","specifies"],["speficillifed","specified"],["speficillifer","specifier"],["speficillifers","specifiers"],["speficillifes","specifies"],["speficilly","specifically"],["speficitally","specifically"],["speficitation","specification"],["speficitations","specifications"],["speficiteid","specified"],["speficiteir","specifier"],["speficiteirs","specifiers"],["speficiteis","specifies"],["speficitiable","specifiable"],["speficitic","specific"],["speficitically","specifically"],["speficitication","specification"],["speficitications","specifications"],["speficitics","specifics"],["speficitied","specified"],["speficitier","specifier"],["speficitiers","specifiers"],["speficities","specificities"],["speficitifed","specified"],["speficitifer","specifier"],["speficitifers","specifiers"],["speficitifes","specifies"],["speficity","specificity"],["speficiy","specify"],["speficiying","specifying"],["spefics","specifics"],["speficy","specify"],["speficying","specifying"],["spefied","specified"],["spefier","specifier"],["spefiers","specifiers"],["spefies","specifies"],["spefifally","specifically"],["spefifation","specification"],["spefifations","specifications"],["spefifed","specified"],["spefifeid","specified"],["spefifeir","specifier"],["spefifeirs","specifiers"],["spefifeis","specifies"],["spefifer","specifier"],["spefifers","specifiers"],["spefifes","specifies"],["spefifiable","specifiable"],["spefific","specific"],["spefifically","specifically"],["spefification","specification"],["spefifications","specifications"],["spefifics","specifics"],["spefified","specified"],["spefifier","specifier"],["spefifiers","specifiers"],["spefifies","specifies"],["spefififed","specified"],["spefififer","specifier"],["spefififers","specifiers"],["spefififes","specifies"],["spefify","specify"],["spefifying","specifying"],["spefiiable","specifiable"],["spefiic","specific"],["spefiically","specifically"],["spefiication","specification"],["spefiications","specifications"],["spefiics","specifics"],["spefiied","specified"],["spefiier","specifier"],["spefiiers","specifiers"],["spefiies","specifies"],["spefiifally","specifically"],["spefiifation","specification"],["spefiifations","specifications"],["spefiifeid","specified"],["spefiifeir","specifier"],["spefiifeirs","specifiers"],["spefiifeis","specifies"],["spefiifiable","specifiable"],["spefiific","specific"],["spefiifically","specifically"],["spefiification","specification"],["spefiifications","specifications"],["spefiifics","specifics"],["spefiified","specified"],["spefiifier","specifier"],["spefiifiers","specifiers"],["spefiifies","specifies"],["spefiififed","specified"],["spefiififer","specifier"],["spefiififers","specifiers"],["spefiififes","specifies"],["spefiify","specify"],["spefiifying","specifying"],["spefixally","specifically"],["spefixation","specification"],["spefixations","specifications"],["spefixeid","specified"],["spefixeir","specifier"],["spefixeirs","specifiers"],["spefixeis","specifies"],["spefixiable","specifiable"],["spefixic","specific"],["spefixically","specifically"],["spefixication","specification"],["spefixications","specifications"],["spefixics","specifics"],["spefixied","specified"],["spefixier","specifier"],["spefixiers","specifiers"],["spefixies","specifies"],["spefixifed","specified"],["spefixifer","specifier"],["spefixifers","specifiers"],["spefixifes","specifies"],["spefixy","specify"],["spefixying","specifying"],["spefiy","specify"],["spefiying","specifying"],["spefy","specify"],["spefying","specifying"],["speherical","spherical"],["speical","special"],["speices","species"],["speicfied","specified"],["speicific","specific"],["speicified","specified"],["speicify","specify"],["speling","spelling"],["spellshecking","spellchecking"],["spendour","splendour"],["speparate","separate"],["speparated","separated"],["speparating","separating"],["speparation","separation"],["speparator","separator"],["spepc","spec"],["speperatd","separated"],["speperate","separate"],["speperateing","separating"],["speperater","separator"],["speperates","separates"],["speperating","separating"],["speperator","separator"],["speperats","separates"],["sperate","separate"],["sperately","separately"],["sperhical","spherical"],["spermatozoan","spermatozoon"],["speshal","special"],["speshel","special"],["spesialisation","specialization"],["spesific","specific"],["spesifical","specific"],["spesifically","specifically"],["spesificaly","specifically"],["spesifics","specifics"],["spesified","specified"],["spesifities","specifics"],["spesify","specify"],["spezialisation","specialization"],["spezific","specific"],["spezified","specified"],["spezify","specify"],["spicific","specific"],["spicified","specified"],["spicify","specify"],["spiltting","splitting"],["spindel","spindle"],["spindels","spindles"],["spinlcok","spinlock"],["spinock","spinlock"],["spligs","splits"],["spliiter","splitter"],["spliitting","splitting"],["spliting","splitting"],["splitted","split"],["splittng","splitting"],["spllitting","splitting"],["spoace","space"],["spoaced","spaced"],["spoaces","spaces"],["spoacing","spacing"],["sponser","sponsor"],["sponsered","sponsored"],["sponsers","sponsors"],["sponsership","sponsorship"],["spontanous","spontaneous"],["sponzored","sponsored"],["spoonfulls","spoonfuls"],["sporatic","sporadic"],["sporious","spurious"],["sppeches","speeches"],["spport","support"],["spported","supported"],["spporting","supporting"],["spports","supports"],["spreaded","spread"],["spreadhseet","spreadsheet"],["spreadhseets","spreadsheets"],["spreadsheat","spreadsheet"],["spreadsheats","spreadsheets"],["spreasheet","spreadsheet"],["spreasheets","spreadsheets"],["sprech","speech"],["sprecial","special"],["sprecialized","specialized"],["sprecially","specially"],["spred","spread"],["spredsheet","spreadsheet"],["spreedsheet","spreadsheet"],["sprinf","sprintf"],["spririous","spurious"],["spriritual","spiritual"],["spritual","spiritual"],["sproon","spoon"],["spsace","space"],["spsaced","spaced"],["spsaces","spaces"],["spsacing","spacing"],["sptintf","sprintf"],["spurios","spurious"],["spurrious","spurious"],["sqare","square"],["sqared","squared"],["sqares","squares"],["sqash","squash"],["sqashed","squashed"],["sqashing","squashing"],["sqaure","square"],["sqaured","squared"],["sqaures","squares"],["sqeuence","sequence"],["squashgin","squashing"],["squence","sequence"],["squirel","squirrel"],["squirl","squirrel"],["squrared","squared"],["srcipt","script"],["srcipts","scripts"],["sreampropinfo","streampropinfo"],["sreenshot","screenshot"],["sreenshots","screenshots"],["sreturns","returns"],["srikeout","strikeout"],["sring","string"],["srings","strings"],["srink","shrink"],["srinkd","shrunk"],["srinked","shrunk"],["srinking","shrinking"],["sript","script"],["sripts","scripts"],["srollbar","scrollbar"],["srouce","source"],["srtifact","artifact"],["srtifacts","artifacts"],["srtings","strings"],["srtructure","structure"],["srttings","settings"],["sructure","structure"],["sructures","structures"],["srunk","shrunk"],["srunken","shrunken"],["srunkn","shrunken"],["ssame","same"],["ssee","see"],["ssoaiating","associating"],["ssome","some"],["stabalization","stabilization"],["stabilitation","stabilization"],["stabilite","stabilize"],["stabilited","stabilized"],["stabilites","stabilizes"],["stabiliting","stabilizing"],["stabillity","stability"],["stabilty","stability"],["stablility","stability"],["stablilization","stabilization"],["stablize","stabilize"],["stach","stack"],["stacionary","stationary"],["stackk","stack"],["stadnard","standard"],["stadnardisation","standardisation"],["stadnardised","standardised"],["stadnardising","standardising"],["stadnardization","standardization"],["stadnardized","standardized"],["stadnardizing","standardizing"],["stadnards","standards"],["stae","state"],["staement","statement"],["staically","statically"],["stainlees","stainless"],["staion","station"],["staions","stations"],["staition","station"],["staitions","stations"],["stalagtite","stalactite"],["standar","standard"],["standarad","standard"],["standard-complient","standard-compliant"],["standardss","standards"],["standarisation","standardisation"],["standarise","standardise"],["standarised","standardised"],["standarises","standardises"],["standarising","standardising"],["standarization","standardization"],["standarize","standardize"],["standarized","standardized"],["standarizes","standardizes"],["standarizing","standardizing"],["standart","standard"],["standartd","standard"],["standartds","standards"],["standartisation","standardisation"],["standartisator","standardiser"],["standartised","standardised"],["standartization","standardization"],["standartizator","standardizer"],["standartized","standardized"],["standarts","standards"],["standatd","standard"],["standrat","standard"],["standrats","standards"],["standtard","standard"],["stange","strange"],["stanp","stamp"],["staration","starvation"],["stard","start"],["stardard","standard"],["stardardize","standardize"],["stardardized","standardized"],["stardardizes","standardizes"],["stardardizing","standardizing"],["stardards","standards"],["staright","straight"],["startd","started"],["startegic","strategic"],["startegies","strategies"],["startegy","strategy"],["startet","started"],["startign","starting"],["startin","starting"],["startlisteneing","startlistening"],["startnig","starting"],["startparanthesis","startparentheses"],["startted","started"],["startting","starting"],["starup","startup"],["starups","startups"],["statamenet","statement"],["statamenets","statements"],["stategies","strategies"],["stategise","strategise"],["stategised","strategised"],["stategize","strategize"],["stategized","strategized"],["stategy","strategy"],["stateman","statesman"],["statemanet","statement"],["statememts","statements"],["statemen","statement"],["statemenet","statement"],["statemenets","statements"],["statemet","statement"],["statemnts","statements"],["stati","statuses"],["staticly","statically"],["statictic","statistic"],["statictics","statistics"],["statisfied","satisfied"],["statisfies","satisfies"],["statisfy","satisfy"],["statisfying","satisfying"],["statisitics","statistics"],["statistices","statistics"],["statitic","statistic"],["statitics","statistics"],["statmenet","statement"],["statmenmt","statement"],["statment","statement"],["statments","statements"],["statrt","start"],["stattistic","statistic"],["statubar","statusbar"],["statuline","statusline"],["statulines","statuslines"],["statup","startup"],["staturday","Saturday"],["statuss","status"],["statusses","statuses"],["statustics","statistics"],["staulk","stalk"],["stauration","saturation"],["staus","status"],["stawberries","strawberries"],["stawberry","strawberry"],["stawk","stalk"],["stcokbrush","stockbrush"],["stdanard","standard"],["stdanards","standards"],["stength","strength"],["steram","stream"],["steramed","streamed"],["steramer","streamer"],["steraming","streaming"],["sterams","streams"],["sterio","stereo"],["steriods","steroids"],["sterotype","stereotype"],["sterotypes","stereotypes"],["stickness","stickiness"],["stickyness","stickiness"],["stiffneing","stiffening"],["stiky","sticky"],["stil","still"],["stilus","stylus"],["stingent","stringent"],["stipped","stripped"],["stiring","stirring"],["stirng","string"],["stirngs","strings"],["stirr","stir"],["stirrs","stirs"],["stivk","stick"],["stivks","sticks"],["stle","style"],["stlye","style"],["stlyes","styles"],["stnad","stand"],["stndard","standard"],["stoage","storage"],["stoages","storages"],["stocahstic","stochastic"],["stocastic","stochastic"],["stoer","store"],["stoers","stores"],["stomache","stomach"],["stompted","stomped"],["stong","strong"],["stoped","stopped"],["stoping","stopping"],["stopp","stop"],["stoppped","stopped"],["stoppping","stopping"],["stopps","stops"],["stopry","story"],["storag","storage"],["storeable","storable"],["storeage","storage"],["stoream","stream"],["storeble","storable"],["storeing","storing"],["storge","storage"],["storise","stories"],["stornegst","strongest"],["stoyr","story"],["stpo","stop"],["stradegies","strategies"],["stradegy","strategy"],["stragegy","strategy"],["strageties","strategies"],["stragety","strategy"],["straigh-forward","straightforward"],["straighforward","straightforward"],["straightfoward","straightforward"],["straigt","straight"],["straigth","straight"],["straines","strains"],["strangness","strangeness"],["strart","start"],["strarted","started"],["strarting","starting"],["strarts","starts"],["stratagically","strategically"],["strcture","structure"],["strctures","structures"],["strcutre","structure"],["strcutural","structural"],["strcuture","structure"],["strcutures","structures"],["streamm","stream"],["streammed","streamed"],["streamming","streaming"],["streatched","stretched"],["strech","stretch"],["streched","stretched"],["streches","stretches"],["streching","stretching"],["strectch","stretch"],["strecth","stretch"],["strecthed","stretched"],["strecthes","stretches"],["strecthing","stretching"],["streem","stream"],["streemlining","streamlining"],["stregth","strength"],["streightish","straightish"],["streightly","straightly"],["streightness","straightness"],["streigtish","straightish"],["streigtly","straightly"],["streigtness","straightness"],["strem","stream"],["strema","stream"],["strengh","strength"],["strenghen","strengthen"],["strenghened","strengthened"],["strenghening","strengthening"],["strenght","strength"],["strenghten","strengthen"],["strenghtened","strengthened"],["strenghtening","strengthening"],["strenghts","strengths"],["strengtened","strengthened"],["strenous","strenuous"],["strentgh","strength"],["strenth","strength"],["strerrror","strerror"],["striaght","straight"],["striaghten","straighten"],["striaghtens","straightens"],["striaghtforward","straightforward"],["striaghts","straights"],["striclty","strictly"],["stricly","strictly"],["stricteir","stricter"],["strictier","stricter"],["strictiest","strictest"],["strictist","strictest"],["strig","string"],["strigification","stringification"],["strigifying","stringifying"],["striing","string"],["striings","strings"],["strikely","strikingly"],["stringifed","stringified"],["strinsg","strings"],["strippen","stripped"],["stript","stripped"],["strirngification","stringification"],["strnad","strand"],["strng","string"],["stroage","storage"],["stroe","store"],["stroing","storing"],["stronlgy","strongly"],["stronly","strongly"],["strore","store"],["strored","stored"],["strores","stores"],["stroring","storing"],["strotage","storage"],["stroyboard","storyboard"],["struc","struct"],["strucrure","structure"],["strucrured","structured"],["strucrures","structures"],["structed","structured"],["structer","structure"],["structere","structure"],["structered","structured"],["structeres","structures"],["structetr","structure"],["structire","structure"],["structre","structure"],["structred","structured"],["structres","structures"],["structrual","structural"],["structrue","structure"],["structrued","structured"],["structrues","structures"],["structual","structural"],["structue","structure"],["structued","structured"],["structues","structures"],["structur","structure"],["structurs","structures"],["strucur","structure"],["strucure","structure"],["strucured","structured"],["strucures","structures"],["strucuring","structuring"],["strucurs","structures"],["strucutre","structure"],["strucutred","structured"],["strucutres","structures"],["strucuture","structure"],["struggel","struggle"],["struggeled","struggled"],["struggeling","struggling"],["struggels","struggles"],["struttural","structural"],["strutture","structure"],["struture","structure"],["ststion","station"],["ststionary","stationary"],["ststioned","stationed"],["ststionery","stationery"],["ststions","stations"],["ststr","strstr"],["stteting","setting"],["sttetings","settings"],["stubborness","stubbornness"],["stucked","stuck"],["stuckt","stuck"],["stuct","struct"],["stucts","structs"],["stucture","structure"],["stuctured","structured"],["stuctures","structures"],["studdy","study"],["studetn","student"],["studetns","students"],["studing","studying"],["studoi","studio"],["studois","studios"],["stuggling","struggling"],["stuido","studio"],["stuidos","studios"],["stuill","still"],["stummac","stomach"],["sturctural","structural"],["sturcture","structure"],["sturctures","structures"],["sturture","structure"],["sturtured","structured"],["sturtures","structures"],["sturucture","structure"],["stutdown","shutdown"],["stutus","status"],["styhe","style"],["styilistic","stylistic"],["stylessheets","stylesheets"],["sub-lcuase","sub-clause"],["subbtle","subtle"],["subcatagories","subcategories"],["subcatagory","subcategory"],["subcirucit","subcircuit"],["subcommannd","subcommand"],["subcommnad","subcommand"],["subconchus","subconscious"],["subconsiously","subconsciously"],["subcribe","subscribe"],["subcribed","subscribed"],["subcribes","subscribes"],["subcribing","subscribing"],["subdirectoires","subdirectories"],["subdirectorys","subdirectories"],["subdirecty","subdirectory"],["subdivisio","subdivision"],["subdivisiond","subdivisioned"],["subdoamin","subdomain"],["subdoamins","subdomains"],["subelemet","subelement"],["subelemets","subelements"],["subexperesion","subexpression"],["subexperesions","subexpressions"],["subexperession","subexpression"],["subexperessions","subexpressions"],["subexpersion","subexpression"],["subexpersions","subexpressions"],["subexperssion","subexpression"],["subexperssions","subexpressions"],["subexpession","subexpression"],["subexpessions","subexpressions"],["subexpresssion","subexpression"],["subexpresssions","subexpressions"],["subfolfer","subfolder"],["subfolfers","subfolders"],["subfromat","subformat"],["subfromats","subformats"],["subfroms","subforms"],["subgregion","subregion"],["subirectory","subdirectory"],["subjec","subject"],["subjet","subject"],["subjudgation","subjugation"],["sublass","subclass"],["sublasse","subclasse"],["sublasses","subclasses"],["sublcasses","subclasses"],["sublcuase","subclause"],["suble","subtle"],["submachne","submachine"],["submision","submission"],["submisson","submission"],["submited","submitted"],["submition","submission"],["submitions","submissions"],["submittted","submitted"],["submoule","submodule"],["submti","submit"],["subnegatiotiation","subnegotiation"],["subnegatiotiations","subnegotiations"],["subnegoatiation","subnegotiation"],["subnegoatiations","subnegotiations"],["subnegoation","subnegotiation"],["subnegoations","subnegotiations"],["subnegociation","subnegotiation"],["subnegociations","subnegotiations"],["subnegogtiation","subnegotiation"],["subnegogtiations","subnegotiations"],["subnegoitation","subnegotiation"],["subnegoitations","subnegotiations"],["subnegoptionsotiation","subnegotiation"],["subnegoptionsotiations","subnegotiations"],["subnegosiation","subnegotiation"],["subnegosiations","subnegotiations"],["subnegotaiation","subnegotiation"],["subnegotaiations","subnegotiations"],["subnegotaition","subnegotiation"],["subnegotaitions","subnegotiations"],["subnegotatiation","subnegotiation"],["subnegotatiations","subnegotiations"],["subnegotation","subnegotiation"],["subnegotations","subnegotiations"],["subnegothiation","subnegotiation"],["subnegothiations","subnegotiations"],["subnegotication","subnegotiation"],["subnegotications","subnegotiations"],["subnegotioation","subnegotiation"],["subnegotioations","subnegotiations"],["subnegotion","subnegotiation"],["subnegotionation","subnegotiation"],["subnegotionations","subnegotiations"],["subnegotions","subnegotiations"],["subnegotiotation","subnegotiation"],["subnegotiotations","subnegotiations"],["subnegotiotion","subnegotiation"],["subnegotiotions","subnegotiations"],["subnegotitaion","subnegotiation"],["subnegotitaions","subnegotiations"],["subnegotitation","subnegotiation"],["subnegotitations","subnegotiations"],["subnegotition","subnegotiation"],["subnegotitions","subnegotiations"],["subnegoziation","subnegotiation"],["subnegoziations","subnegotiations"],["subobjecs","subobjects"],["suborutine","subroutine"],["suborutines","subroutines"],["suboutine","subroutine"],["subpackge","subpackage"],["subpackges","subpackages"],["subpecies","subspecies"],["subporgram","subprogram"],["subproccese","subprocess"],["subpsace","subspace"],["subquue","subqueue"],["subract","subtract"],["subracted","subtracted"],["subraction","subtraction"],["subree","subtree"],["subresoure","subresource"],["subresoures","subresources"],["subroutie","subroutine"],["subrouties","subroutines"],["subsceptible","susceptible"],["subscibe","subscribe"],["subscibed","subscribed"],["subsciber","subscriber"],["subscibers","subscribers"],["subscirbe","subscribe"],["subscirbed","subscribed"],["subscirber","subscriber"],["subscirbers","subscribers"],["subscirbes","subscribes"],["subscirbing","subscribing"],["subscirpt","subscript"],["subscirption","subscription"],["subscirptions","subscriptions"],["subscritpion","subscription"],["subscritpions","subscriptions"],["subscritpiton","subscription"],["subscritpitons","subscriptions"],["subscritpt","subscript"],["subscritption","subscription"],["subscritptions","subscriptions"],["subsctitution","substitution"],["subsecrion","subsection"],["subsedent","subsequent"],["subseqence","subsequence"],["subseqent","subsequent"],["subsequest","subsequent"],["subsequnce","subsequence"],["subsequnt","subsequent"],["subsequntly","subsequently"],["subseuqent","subsequent"],["subshystem","subsystem"],["subshystems","subsystems"],["subsidary","subsidiary"],["subsiduary","subsidiary"],["subsiquent","subsequent"],["subsiquently","subsequently"],["subsituent","substituent"],["subsituents","substituents"],["subsitutable","substitutable"],["subsitutatble","substitutable"],["subsitute","substitute"],["subsituted","substituted"],["subsitutes","substitutes"],["subsituting","substituting"],["subsitution","substitution"],["subsitutions","substitutions"],["subsitutuent","substituent"],["subsitutuents","substituents"],["subsitutute","substitute"],["subsitututed","substituted"],["subsitututes","substitutes"],["subsitututing","substituting"],["subsitutution","substitution"],["subsquent","subsequent"],["subsquently","subsequently"],["subsriber","subscriber"],["substace","substance"],["substact","subtract"],["substaintially","substantially"],["substancial","substantial"],["substantialy","substantially"],["substantivly","substantively"],["substask","subtask"],["substasks","subtasks"],["substatial","substantial"],["substential","substantial"],["substentially","substantially"],["substition","substitution"],["substitions","substitutions"],["substitition","substitution"],["substititions","substitutions"],["substituation","substitution"],["substituations","substitutions"],["substitude","substitute"],["substituded","substituted"],["substitudes","substitutes"],["substituding","substituting"],["substitue","substitute"],["substitues","substitutes"],["substituing","substituting"],["substituion","substitution"],["substituions","substitutions"],["substiution","substitution"],["substract","subtract"],["substracted","subtracted"],["substracting","subtracting"],["substraction","subtraction"],["substracts","subtracts"],["substucture","substructure"],["substuctures","substructures"],["substutite","substitute"],["subsysthem","subsystem"],["subsysthems","subsystems"],["subsystyem","subsystem"],["subsystyems","subsystems"],["subsysytem","subsystem"],["subsysytems","subsystems"],["subsytem","subsystem"],["subsytems","subsystems"],["subtabels","subtables"],["subtak","subtask"],["subtances","substances"],["subterranian","subterranean"],["subtitute","substitute"],["subtituted","substituted"],["subtitutes","substitutes"],["subtituting","substituting"],["subtitution","substitution"],["subtitutions","substitutions"],["subtrafuge","subterfuge"],["subtrate","substrate"],["subtrates","substrates"],["subtring","substring"],["subtrings","substrings"],["subtsitutable","substitutable"],["subtsitutatble","substitutable"],["suburburban","suburban"],["subystem","subsystem"],["subystems","subsystems"],["succceeded","succeeded"],["succcess","success"],["succcesses","successes"],["succcessful","successful"],["succcessfully","successfully"],["succcessor","successor"],["succcessors","successors"],["succcessul","successful"],["succcessully","successfully"],["succecful","successful"],["succed","succeed"],["succedd","succeed"],["succedded","succeeded"],["succedding","succeeding"],["succedds","succeeds"],["succede","succeed"],["succeded","succeeded"],["succedes","succeeds"],["succedfully","successfully"],["succeding","succeeding"],["succeds","succeeds"],["succee","succeed"],["succeedde","succeeded"],["succeedes","succeeds"],["succeess","success"],["succeesses","successes"],["succes","success"],["succesful","successful"],["succesfull","successful"],["succesfully","successfully"],["succesfuly","successfully"],["succesion","succession"],["succesive","successive"],["succesor","successor"],["succesors","successors"],["successfui","successful"],["successfule","successful"],["successfull","successful"],["successfullies","successfully"],["successfullly","successfully"],["successfulln","successful"],["successfullness","successfulness"],["successfullt","successfully"],["successfuly","successfully"],["successing","successive"],["successs","success"],["successsfully","successfully"],["successsion","succession"],["successul","successful"],["successully","successfully"],["succesully","successfully"],["succicently","sufficiently"],["succint","succinct"],["succseeded","succeeded"],["succsess","success"],["succsessfull","successful"],["succsessive","successive"],["succssful","successful"],["succussfully","successfully"],["suceed","succeed"],["suceeded","succeeded"],["suceeding","succeeding"],["suceeds","succeeds"],["suceessfully","successfully"],["suces","success"],["suceses","successes"],["sucesful","successful"],["sucesfull","successful"],["sucesfully","successfully"],["sucesfuly","successfully"],["sucesion","succession"],["sucesive","successive"],["sucess","success"],["sucesscient","sufficient"],["sucessed","succeeded"],["sucessefully","successfully"],["sucesses","successes"],["sucessess","success"],["sucessflly","successfully"],["sucessfually","successfully"],["sucessfukk","successful"],["sucessful","successful"],["sucessfull","successful"],["sucessfully","successfully"],["sucessfuly","successfully"],["sucession","succession"],["sucessiv","successive"],["sucessive","successive"],["sucessively","successively"],["sucessor","successor"],["sucessors","successors"],["sucessot","successor"],["sucesss","success"],["sucessses","successes"],["sucesssful","successful"],["sucesssfull","successful"],["sucesssfully","successfully"],["sucesssfuly","successfully"],["sucessufll","successful"],["sucessuflly","successfully"],["sucessully","successfully"],["sucide","suicide"],["sucidial","suicidal"],["sucome","succumb"],["sucsede","succeed"],["sucsess","success"],["sudent","student"],["sudents","students"],["sudmobule","submodule"],["sudmobules","submodules"],["sueful","useful"],["sueprset","superset"],["suface","surface"],["sufaces","surfaces"],["sufface","surface"],["suffaces","surfaces"],["suffciency","sufficiency"],["suffcient","sufficient"],["suffciently","sufficiently"],["sufferage","suffrage"],["sufferred","suffered"],["sufferring","suffering"],["sufficate","suffocate"],["sufficated","suffocated"],["sufficates","suffocates"],["sufficating","suffocating"],["suffication","suffocation"],["sufficency","sufficiency"],["sufficent","sufficient"],["sufficently","sufficiently"],["sufficiancy","sufficiency"],["sufficiant","sufficient"],["sufficiantly","sufficiently"],["sufficiennt","sufficient"],["sufficienntly","sufficiently"],["suffiency","sufficiency"],["suffient","sufficient"],["suffiently","sufficiently"],["suffisticated","sophisticated"],["suficate","suffocate"],["suficated","suffocated"],["suficates","suffocates"],["suficating","suffocating"],["sufication","suffocation"],["suficcient","sufficient"],["suficient","sufficient"],["suficiently","sufficiently"],["sufocate","suffocate"],["sufocated","suffocated"],["sufocates","suffocates"],["sufocating","suffocating"],["sufocation","suffocation"],["sugested","suggested"],["sugestion","suggestion"],["sugestions","suggestions"],["sugests","suggests"],["suggesst","suggest"],["suggessted","suggested"],["suggessting","suggesting"],["suggesstion","suggestion"],["suggesstions","suggestions"],["suggessts","suggests"],["suggestes","suggests"],["suggestin","suggestion"],["suggestins","suggestions"],["suggestsed","suggested"],["suggestted","suggested"],["suggesttion","suggestion"],["suggesttions","suggestions"],["sugget","suggest"],["suggeted","suggested"],["suggetsed","suggested"],["suggetsing","suggesting"],["suggetsion","suggestion"],["sugggest","suggest"],["sugggested","suggested"],["sugggesting","suggesting"],["sugggestion","suggestion"],["sugggestions","suggestions"],["sugguest","suggest"],["sugguested","suggested"],["sugguesting","suggesting"],["sugguestion","suggestion"],["sugguestions","suggestions"],["suh","such"],["suiete","suite"],["suiteable","suitable"],["sumamry","summary"],["sumarize","summarize"],["sumary","summary"],["sumbitted","submitted"],["sumed-up","summed-up"],["summarizen","summarize"],["summay","summary"],["summerised","summarised"],["summerized","summarized"],["summersalt","somersault"],["summmaries","summaries"],["summmarisation","summarisation"],["summmarised","summarised"],["summmarization","summarization"],["summmarized","summarized"],["summmary","summary"],["sumodules","submodules"],["sumulate","simulate"],["sumulated","simulated"],["sumulates","simulates"],["sumulation","simulation"],["sumulations","simulations"],["sundey","Sunday"],["sunglases","sunglasses"],["sunsday","Sunday"],["suntask","subtask"],["suop","soup"],["supeblock","superblock"],["supeena","subpoena"],["superbock","superblock"],["superbocks","superblocks"],["supercalifragilisticexpialidoceous","supercalifragilisticexpialidocious"],["supercede","supersede"],["superceded","superseded"],["supercedes","supersedes"],["superceding","superseding"],["superceed","supersede"],["superceeded","superseded"],["superflouous","superfluous"],["superflous","superfluous"],["superflouse","superfluous"],["superfluious","superfluous"],["superfluos","superfluous"],["superfulous","superfluous"],["superintendant","superintendent"],["superopeator","superoperator"],["supersed","superseded"],["superseedd","superseded"],["superseede","supersede"],["superseeded","superseded"],["suphisticated","sophisticated"],["suplant","supplant"],["suplanted","supplanted"],["suplanting","supplanting"],["suplants","supplants"],["suplementary","supplementary"],["suplied","supplied"],["suplimented","supplemented"],["supllies","supplies"],["suport","support"],["suported","supported"],["suporting","supporting"],["suports","supports"],["suportted","supported"],["suposable","supposable"],["supose","suppose"],["suposeable","supposable"],["suposed","supposed"],["suposedly","supposedly"],["suposes","supposes"],["suposing","supposing"],["suposse","suppose"],["suppied","supplied"],["suppier","supplier"],["suppies","supplies"],["supplamented","supplemented"],["suppliad","supplied"],["suppliementing","supplementing"],["suppliment","supplement"],["supplyed","supplied"],["suppoed","supposed"],["suppoert","support"],["suppoort","support"],["suppoorts","supports"],["suppopose","suppose"],["suppoprt","support"],["suppoprted","supported"],["suppor","support"],["suppored","supported"],["supporession","suppression"],["supporing","supporting"],["supportd","supported"],["supportes","supports"],["supportin","supporting"],["supportt","support"],["supportted","supported"],["supportting","supporting"],["supportts","supports"],["supposeable","supposable"],["supposeded","supposed"],["supposedely","supposedly"],["supposeds","supposed"],["supposedy","supposedly"],["supposingly","supposedly"],["suppossed","supposed"],["suppoted","supported"],["suppplied","supplied"],["suppport","support"],["suppported","supported"],["suppporting","supporting"],["suppports","supports"],["suppres","suppress"],["suppresed","suppressed"],["suppresion","suppression"],["suppresions","suppressions"],["suppressingd","suppressing"],["supprot","support"],["supproted","supported"],["supproter","supporter"],["supproters","supporters"],["supproting","supporting"],["supprots","supports"],["supprt","support"],["supprted","supported"],["suppurt","support"],["suppurted","supported"],["suppurter","supporter"],["suppurters","supporters"],["suppurting","supporting"],["suppurtive","supportive"],["suppurts","supports"],["suppy","supply"],["suppying","supplying"],["suprassing","surpassing"],["supres","suppress"],["supresed","suppressed"],["supreses","suppresses"],["supresing","suppressing"],["supresion","suppression"],["supress","suppress"],["supressed","suppressed"],["supresses","suppresses"],["supressible","suppressible"],["supressing","suppressing"],["supression","suppression"],["supressions","suppressions"],["supressor","suppressor"],["supressors","suppressors"],["supresssion","suppression"],["suprious","spurious"],["suprise","surprise"],["suprised","surprised"],["suprises","surprises"],["suprising","surprising"],["suprisingly","surprisingly"],["suprize","surprise"],["suprized","surprised"],["suprizing","surprising"],["suprizingly","surprisingly"],["supsend","suspend"],["supspect","suspect"],["supspected","suspected"],["supspecting","suspecting"],["supspects","suspects"],["surbert","sherbet"],["surfce","surface"],["surgest","suggest"],["surgested","suggested"],["surgestion","suggestion"],["surgestions","suggestions"],["surgests","suggests"],["suround","surround"],["surounded","surrounded"],["surounding","surrounding"],["suroundings","surroundings"],["surounds","surrounds"],["surpise","surprise"],["surpises","surprises"],["surplanted","supplanted"],["surport","support"],["surported","supported"],["surpress","suppress"],["surpressed","suppressed"],["surpresses","suppresses"],["surpressing","suppressing"],["surprisinlgy","surprisingly"],["surprize","surprise"],["surprized","surprised"],["surprizing","surprising"],["surprizingly","surprisingly"],["surregat","surrogate"],["surrepetitious","surreptitious"],["surrepetitiously","surreptitiously"],["surreptious","surreptitious"],["surreptiously","surreptitiously"],["surrogage","surrogate"],["surronded","surrounded"],["surrouded","surrounded"],["surrouding","surrounding"],["surrrounded","surrounded"],["surrundering","surrendering"],["survay","survey"],["survays","surveys"],["surveilence","surveillance"],["surveill","surveil"],["surveyer","surveyor"],["surviver","survivor"],["survivers","survivors"],["survivied","survived"],["susbcribed","subscribed"],["susbsystem","subsystem"],["susbsystems","subsystems"],["susbsytem","subsystem"],["susbsytems","subsystems"],["suscribe","subscribe"],["suscribed","subscribed"],["suscribes","subscribes"],["suscript","subscript"],["susepect","suspect"],["suseptable","susceptible"],["suseptible","susceptible"],["susinctly","succinctly"],["susinkt","succinct"],["suspedn","suspend"],["suspeneded","suspended"],["suspention","suspension"],["suspicios","suspicious"],["suspicioulsy","suspiciously"],["suspicous","suspicious"],["suspicously","suspiciously"],["suspision","suspicion"],["suspsend","suspend"],["sussinct","succinct"],["sustainaiblity","sustainability"],["sustem","system"],["sustems","systems"],["sustitution","substitution"],["sustitutions","substitutions"],["susupend","suspend"],["sutdown","shutdown"],["sutisfaction","satisfaction"],["sutisfied","satisfied"],["sutisfies","satisfies"],["sutisfy","satisfy"],["sutisfying","satisfying"],["suttled","shuttled"],["suttles","shuttles"],["suttlety","subtlety"],["suttling","shuttling"],["suuport","support"],["suuported","supported"],["suuporting","supporting"],["suuports","supports"],["suvenear","souvenir"],["suystem","system"],["suystemic","systemic"],["suystems","systems"],["svelt","svelte"],["swaer","swear"],["swaers","swears"],["swalloed","swallowed"],["swaped","swapped"],["swapiness","swappiness"],["swaping","swapping"],["swarmin","swarming"],["swcloumns","swcolumns"],["swepth","swept"],["swich","switch"],["swiched","switched"],["swiching","switching"],["swicth","switch"],["swicthed","switched"],["swicthing","switching"],["swiming","swimming"],["switchs","switches"],["switcht","switched"],["switchting","switching"],["swith","switch"],["swithable","switchable"],["swithc","switch"],["swithcboard","switchboard"],["swithced","switched"],["swithces","switches"],["swithch","switch"],["swithches","switches"],["swithching","switching"],["swithcing","switching"],["swithcover","switchover"],["swithed","switched"],["swither","switcher"],["swithes","switches"],["swithing","switching"],["switiches","switches"],["swown","shown"],["swtich","switch"],["swtichable","switchable"],["swtichback","switchback"],["swtichbacks","switchbacks"],["swtichboard","switchboard"],["swtichboards","switchboards"],["swtiched","switched"],["swticher","switcher"],["swtichers","switchers"],["swtiches","switches"],["swtiching","switching"],["swtichover","switchover"],["swtichs","switches"],["sxl","xsl"],["syantax","syntax"],["syas","says"],["syatem","system"],["syatems","systems"],["sybsystem","subsystem"],["sybsystems","subsystems"],["sychronisation","synchronisation"],["sychronise","synchronise"],["sychronised","synchronised"],["sychroniser","synchroniser"],["sychronises","synchronises"],["sychronisly","synchronously"],["sychronization","synchronization"],["sychronize","synchronize"],["sychronized","synchronized"],["sychronizer","synchronizer"],["sychronizes","synchronizes"],["sychronmode","synchronmode"],["sychronous","synchronous"],["sychronously","synchronously"],["sycle","cycle"],["sycled","cycled"],["sycles","cycles"],["sycling","cycling"],["sycn","sync"],["sycology","psychology"],["sycronise","synchronise"],["sycronised","synchronised"],["sycronises","synchronises"],["sycronising","synchronising"],["sycronization","synchronization"],["sycronizations","synchronizations"],["sycronize","synchronize"],["sycronized","synchronized"],["sycronizes","synchronizes"],["sycronizing","synchronizing"],["sycronous","synchronous"],["sycronously","synchronously"],["sycronus","synchronous"],["sylabus","syllabus"],["syle","style"],["syles","styles"],["sylibol","syllable"],["sylinder","cylinder"],["sylinders","cylinders"],["sylistic","stylistic"],["sylog","syslog"],["symantics","semantics"],["symblic","symbolic"],["symbo","symbol"],["symboles","symbols"],["symboll","symbol"],["symbonname","symbolname"],["symbsol","symbol"],["symbsols","symbols"],["symemetric","symmetric"],["symetri","symmetry"],["symetric","symmetric"],["symetrical","symmetrical"],["symetrically","symmetrically"],["symetry","symmetry"],["symettric","symmetric"],["symmetic","symmetric"],["symmetral","symmetric"],["symmetri","symmetry"],["symmetricaly","symmetrically"],["symnol","symbol"],["symnols","symbols"],["symobilic","symbolic"],["symobl","symbol"],["symoblic","symbolic"],["symoblically","symbolically"],["symobls","symbols"],["symobolic","symbolic"],["symobolical","symbolical"],["symol","symbol"],["symols","symbols"],["synagouge","synagogue"],["synamic","dynamic"],["synax","syntax"],["synching","syncing"],["synchonisation","synchronisation"],["synchonise","synchronise"],["synchonised","synchronised"],["synchonises","synchronises"],["synchonising","synchronising"],["synchonization","synchronization"],["synchonize","synchronize"],["synchonized","synchronized"],["synchonizes","synchronizes"],["synchonizing","synchronizing"],["synchonous","synchronous"],["synchonrous","synchronous"],["synchrnization","synchronization"],["synchrnonization","synchronization"],["synchroizing","synchronizing"],["synchromized","synchronized"],["synchroneous","synchronous"],["synchroneously","synchronously"],["synchronious","synchronous"],["synchroniously","synchronously"],["synchronizaton","synchronization"],["synchronsouly","synchronously"],["synchronuous","synchronous"],["synchronuously","synchronously"],["synchronus","synchronous"],["syncrhonise","synchronise"],["syncrhonised","synchronised"],["syncrhonize","synchronize"],["syncrhonized","synchronized"],["syncronise","synchronise"],["syncronised","synchronised"],["syncronises","synchronises"],["syncronising","synchronising"],["syncronization","synchronization"],["syncronizations","synchronizations"],["syncronize","synchronize"],["syncronized","synchronized"],["syncronizes","synchronizes"],["syncronizing","synchronizing"],["syncronous","synchronous"],["syncronously","synchronously"],["syncronus","synchronous"],["syncting","syncing"],["syndonic","syntonic"],["syndrom","syndrome"],["syndroms","syndromes"],["synomym","synonym"],["synonim","synonym"],["synonomous","synonymous"],["synonymns","synonyms"],["synopis","synopsis"],["synopsys","synopsis"],["synoym","synonym"],["synphony","symphony"],["synposis","synopsis"],["synronous","synchronous"],["syntac","syntax"],["syntacks","syntax"],["syntacs","syntax"],["syntact","syntax"],["syntactally","syntactically"],["syntacts","syntax"],["syntak","syntax"],["syntaks","syntax"],["syntakt","syntax"],["syntakts","syntax"],["syntatic","syntactic"],["syntatically","syntactically"],["syntaxe","syntax"],["syntaxg","syntax"],["syntaxt","syntax"],["syntehsise","synthesise"],["syntehsised","synthesised"],["syntehsize","synthesize"],["syntehsized","synthesized"],["syntesis","synthesis"],["syntethic","synthetic"],["syntethically","synthetically"],["syntethics","synthetics"],["syntetic","synthetic"],["syntetize","synthesize"],["syntetized","synthesized"],["synthethic","synthetic"],["synthetize","synthesize"],["synthetized","synthesized"],["synthetizes","synthesizes"],["synthtic","synthetic"],["syphyllis","syphilis"],["sypmtoms","symptoms"],["sypport","support"],["syrap","syrup"],["sysbols","symbols"],["syschronize","synchronize"],["sysem","system"],["sysematic","systematic"],["sysems","systems"],["sysmatically","systematically"],["sysmbol","symbol"],["sysmograph","seismograph"],["sysmte","system"],["sysmtes","systems"],["systax","syntax"],["syste","system"],["systen","system"],["systens","systems"],["systesm","systems"],["systhem","system"],["systhems","systems"],["systm","system"],["systme","system"],["systmes","systems"],["systms","systems"],["systyem","system"],["systyems","systems"],["sysyem","system"],["sysyems","systems"],["sytax","syntax"],["sytem","system"],["sytematic","systematic"],["sytemd","systemd"],["syteme","system"],["sytems","systems"],["sythesis","synthesis"],["sytle","style"],["sytled","styled"],["sytles","styles"],["sytlesheet","stylesheet"],["sytling","styling"],["sytnax","syntax"],["sytntax","syntax"],["sytsem","system"],["sytsemic","systemic"],["sytsems","systems"],["szenario","scenario"],["szenarios","scenarios"],["szes","sizes"],["szie","size"],["szied","sized"],["szies","sizes"],["tabacco","tobacco"],["tabbaray","taboret"],["tabblow","tableau"],["tabe","table"],["tabel","table"],["tabeles","tables"],["tabels","tables"],["tabeview","tabview"],["tabke","table"],["tabl","table"],["tablepsace","tablespace"],["tablepsaces","tablespaces"],["tablle","table"],["tabluar","tabular"],["tabluate","tabulate"],["tabluated","tabulated"],["tabluates","tabulates"],["tabluating","tabulating"],["tabualte","tabulate"],["tabualted","tabulated"],["tabualtes","tabulates"],["tabualting","tabulating"],["tabualtor","tabulator"],["tabualtors","tabulators"],["taged","tagged"],["taget","target"],["tageted","targeted"],["tageting","targeting"],["tagets","targets"],["tagggen","taggen"],["tagnet","tangent"],["tagnetial","tangential"],["tagnets","tangents"],["tagued","tagged"],["tahn","than"],["taht","that"],["takslet","tasklet"],["talbe","table"],["talekd","talked"],["tallerable","tolerable"],["tamplate","template"],["tamplated","templated"],["tamplates","templates"],["tamplating","templating"],["tangeant","tangent"],["tangeantial","tangential"],["tangeants","tangents"],["tangenet","tangent"],["tangensial","tangential"],["tangentailly","tangentially"],["tanget","tangent"],["tangetial","tangential"],["tangetially","tangentially"],["tangets","tangents"],["tansact","transact"],["tansaction","transaction"],["tansactional","transactional"],["tansactions","transactions"],["tanseint","transient"],["tansfomed","transformed"],["tansient","transient"],["tanslate","translate"],["tanslated","translated"],["tanslates","translates"],["tanslation","translation"],["tanslations","translations"],["tanslator","translator"],["tansmit","transmit"],["tansverse","transverse"],["tarbal","tarball"],["tarbals","tarballs"],["tarce","trace"],["tarced","traced"],["tarces","traces"],["tarcing","tracing"],["targed","target"],["targer","target"],["targest","targets"],["targetted","targeted"],["targetting","targeting"],["targettting","targeting"],["targt","target"],["targte","target"],["tarmigan","ptarmigan"],["tarnsparent","transparent"],["tarpolin","tarpaulin"],["tarvis","Travis"],["tarvisci","TravisCI"],["tasbar","taskbar"],["taskelt","tasklet"],["tast","taste"],["tatgert","target"],["tatgerted","targeted"],["tatgerting","targeting"],["tatgerts","targets"],["tath","that"],["tatoo","tattoo"],["tatoos","tattoos"],["tattooes","tattoos"],["tawk","talk"],["taxanomic","taxonomic"],["taxanomy","taxonomy"],["taxnomy","taxonomy"],["taxomonmy","taxonomy"],["taxonmy","taxonomy"],["taxonoy","taxonomy"],["taylored","tailored"],["tbe","the"],["tbey","they"],["tcahce","cache"],["tcahces","caches"],["tcheckout","checkout"],["tcpdumpp","tcpdump"],["tcppcheck","cppcheck"],["teacer","teacher"],["teacers","teachers"],["teached","taught"],["teachnig","teaching"],["teaher","teacher"],["teahers","teachers"],["teamplate","template"],["teamplates","templates"],["teated","treated"],["teched","taught"],["techer","teacher"],["techers","teachers"],["teches","teaches"],["techical","technical"],["techician","technician"],["techicians","technicians"],["techincal","technical"],["techincally","technically"],["teching","teaching"],["techinically","technically"],["techinique","technique"],["techiniques","techniques"],["techinque","technique"],["techinques","techniques"],["techique","technique"],["techiques","techniques"],["techneek","technique"],["technic","technique"],["technics","techniques"],["technik","technique"],["techniks","techniques"],["techniquest","techniques"],["techniquet","technique"],["technitian","technician"],["technition","technician"],["technlogy","technology"],["technnology","technology"],["technolgy","technology"],["technoloiges","technologies"],["tecnic","technique"],["tecnical","technical"],["tecnically","technically"],["tecnician","technician"],["tecnicians","technicians"],["tecnique","technique"],["tecniques","techniques"],["tedeous","tedious"],["tefine","define"],["teh","the"],["tehy","they"],["tekst","text"],["teksts","texts"],["telegramm","telegram"],["telelevision","television"],["televsion","television"],["telocom","telecom"],["telphony","telephony"],["temaplate","template"],["temaplates","templates"],["temeprature","temperature"],["temepratures","temperatures"],["temerature","temperature"],["teminal","terminal"],["teminals","terminals"],["teminate","terminate"],["teminated","terminated"],["teminating","terminating"],["temination","termination"],["temlate","template"],["temorarily","temporarily"],["temorary","temporary"],["tempalte","template"],["tempaltes","templates"],["temparal","temporal"],["tempararily","temporarily"],["temparary","temporary"],["temparate","temperate"],["temparature","temperature"],["temparily","temporarily"],["tempate","template"],["tempated","templated"],["tempates","templates"],["tempatied","templatized"],["tempation","temptation"],["tempatised","templatised"],["tempatized","templatized"],["tempature","temperature"],["tempdate","template"],["tempearture","temperature"],["tempeartures","temperatures"],["tempearure","temperature"],["tempelate","template"],["temperarily","temporarily"],["temperarure","temperature"],["temperary","temporary"],["temperatur","temperature"],["tempereature","temperature"],["temperment","temperament"],["tempertaure","temperature"],["temperture","temperature"],["templaced","templated"],["templaces","templates"],["templacing","templating"],["templaet","template"],["templat","template"],["templateas","templates"],["templete","template"],["templeted","templated"],["templetes","templates"],["templeting","templating"],["tempoaray","temporary"],["tempopary","temporary"],["temporaere","temporary"],["temporafy","temporary"],["temporalily","temporarily"],["temporarely","temporarily"],["temporarilly","temporarily"],["temporarilty","temporarily"],["temporarilu","temporary"],["temporarirly","temporarily"],["temporay","temporary"],["tempories","temporaries"],["temporily","temporarily"],["tempororaries","temporaries"],["tempororarily","temporarily"],["tempororary","temporary"],["temporories","temporaries"],["tempororily","temporarily"],["temporory","temporary"],["temporraies","temporaries"],["temporraily","temporarily"],["temporraries","temporaries"],["temporrarily","temporarily"],["temporrary","temporary"],["temporray","temporary"],["temporries","temporaries"],["temporrily","temporarily"],["temporry","temporary"],["temportal","temporal"],["temportaries","temporaries"],["temportarily","temporarily"],["temportary","temporary"],["tempory","temporary"],["temporyries","temporaries"],["temporyrily","temporarily"],["temporyry","temporary"],["tempraaily","temporarily"],["tempraal","temporal"],["tempraarily","temporarily"],["tempraarly","temporarily"],["tempraary","temporary"],["tempraay","temporary"],["tempraily","temporarily"],["tempral","temporal"],["temprament","temperament"],["tempramental","temperamental"],["tempraraily","temporarily"],["tempraral","temporal"],["temprararily","temporarily"],["temprararly","temporarily"],["temprarary","temporary"],["tempraray","temporary"],["temprarily","temporarily"],["temprature","temperature"],["tempratures","temperatures"],["tempray","temporary"],["tempreature","temperature"],["tempreatures","temperatures"],["temprement","temperament"],["tempremental","temperamental"],["temproaily","temporarily"],["temproal","temporal"],["temproarily","temporarily"],["temproarly","temporarily"],["temproary","temporary"],["temproay","temporary"],["temprol","temporal"],["temproment","temperament"],["tempromental","temperamental"],["temproraily","temporarily"],["temproral","temporal"],["temproraly","temporarily"],["temprorarily","temporarily"],["temprorarly","temporarily"],["temprorary","temporary"],["temproray","temporary"],["temprorily","temporarily"],["temprory","temporary"],["temproy","temporary"],["temptatation","temptation"],["tempurature","temperature"],["tempurture","temperature"],["temr","term"],["temrinal","terminal"],["temselves","themselves"],["temtation","temptation"],["tenacle","tentacle"],["tenacles","tentacles"],["tenanet","tenant"],["tenanets","tenants"],["tenatious","tenacious"],["tenatiously","tenaciously"],["tenative","tentative"],["tenatively","tentatively"],["tendacy","tendency"],["tendancies","tendencies"],["tendancy","tendency"],["tennisplayer","tennis player"],["tentaive","tentative"],["tentaively","tentatively"],["tention","tension"],["teplmate","template"],["teplmated","templated"],["teplmates","templates"],["tepmorarily","temporarily"],["teraform","terraform"],["teraformed","terraformed"],["teraforming","terraforming"],["teraforms","terraforms"],["terfform","terraform"],["terfformed","terraformed"],["terfforming","terraforming"],["terfforms","terraforms"],["teridactyl","pterodactyl"],["terific","terrific"],["terimnate","terminate"],["termial","terminal"],["termials","terminals"],["termianted","terminated"],["termimal","terminal"],["termimals","terminals"],["terminater","terminator"],["terminaters","terminators"],["terminats","terminates"],["termindate","terminate"],["termine","determine"],["termined","terminated"],["terminte","terminate"],["termintor","terminator"],["termniate","terminate"],["termniated","terminated"],["termniates","terminates"],["termniating","terminating"],["termniation","termination"],["termniations","terminations"],["termniator","terminator"],["termniators","terminators"],["termo","thermo"],["termostat","thermostat"],["termperatue","temperature"],["termperatues","temperatures"],["termperature","temperature"],["termperatures","temperatures"],["termplate","template"],["termplated","templated"],["termplates","templates"],["termporal","temporal"],["termporaries","temporaries"],["termporarily","temporarily"],["termporary","temporary"],["ternament","tournament"],["ternimate","terminate"],["terninal","terminal"],["terninals","terminals"],["terrable","terrible"],["terrestial","terrestrial"],["terrform","terraform"],["terrformed","terraformed"],["terrforming","terraforming"],["terrforms","terraforms"],["terriffic","terrific"],["terriories","territories"],["terriory","territory"],["territorist","terrorist"],["territoy","territory"],["terroist","terrorist"],["terurn","return"],["terurns","returns"],["tescase","testcase"],["tescases","testcases"],["tesellate","tessellate"],["tesellated","tessellated"],["tesellation","tessellation"],["tesellator","tessellator"],["tesited","tested"],["tessealte","tessellate"],["tessealted","tessellated"],["tesselatad","tessellated"],["tesselate","tessellate"],["tesselated","tessellated"],["tesselation","tessellation"],["tesselator","tessellator"],["tessleate","tessellate"],["tessleated","tessellated"],["tessleating","tessellating"],["tessleator","tessellator"],["testeing","testing"],["testiclular","testicular"],["testin","testing"],["testng","testing"],["testof","test of"],["testomony","testimony"],["testsing","testing"],["tetrahedran","tetrahedron"],["tetrahedrans","tetrahedrons"],["tetry","retry"],["tetss","tests"],["tetxture","texture"],["teusday","Tuesday"],["texchnically","technically"],["texline","textline"],["textfrme","textframe"],["texual","textual"],["texually","textually"],["texure","texture"],["texured","textured"],["texures","textures"],["texxt","text"],["tey","they"],["tghe","the"],["thansk","thanks"],["thansparent","transparent"],["thant","than"],["thare","there"],["that;s","that's"],["thats'","that's"],["thats","that's"],["thats;","that's"],["thck","thick"],["theard","thread"],["thearding","threading"],["theards","threads"],["theared","threaded"],["theather","theater"],["theef","thief"],["theer","there"],["theery","theory"],["theese","these"],["thefore","therefore"],["theif","thief"],["theifs","thieves"],["theive","thief"],["theives","thieves"],["themplate","template"],["themselces","themselves"],["themselfes","themselves"],["themselfs","themselves"],["themselvs","themselves"],["themslves","themselves"],["thenes","themes"],["thenn","then"],["theorectical","theoretical"],["theoreticall","theoretically"],["theoreticaly","theoretically"],["theorical","theoretical"],["theorically","theoretically"],["theoritical","theoretical"],["theoritically","theoretically"],["therafter","thereafter"],["therapudic","therapeutic"],["therby","thereby"],["thereads","threads"],["thereom","theorem"],["thererin","therein"],["theres","there's"],["thereshold","threshold"],["theresholds","thresholds"],["therfore","therefore"],["thermisor","thermistor"],["thermisors","thermistors"],["thermostast","thermostat"],["thermostasts","thermostats"],["therstat","thermostat"],["therwise","otherwise"],["theshold","threshold"],["thesholds","thresholds"],["thest","test"],["thetraedral","tetrahedral"],["thetrahedron","tetrahedron"],["thev","the"],["theves","thieves"],["thgat","that"],["thge","the"],["thhese","these"],["thhis","this"],["thid","this"],["thier","their"],["thign","thing"],["thigns","things"],["thigny","thingy"],["thigsn","things"],["thikn","think"],["thikness","thickness"],["thiknesses","thicknesses"],["thikns","thinks"],["thiks","thinks"],["thimngs","things"],["thinigs","things"],["thinkabel","thinkable"],["thinn","thin"],["thirtyth","thirtieth"],["this'd","this would"],["thisle","thistle"],["thist","this"],["thisy","this"],["thiunk","think"],["thjese","these"],["thme","them"],["thn","then"],["thna","than"],["thnak","thank"],["thnaks","thanks"],["thne","then"],["thnig","thing"],["thnigs","things"],["thonic","chthonic"],["thoroidal","toroidal"],["thoroughty","thoroughly"],["thoruoghly","thoroughly"],["thoses","those"],["thouch","touch"],["thoughout","throughout"],["thougth","thought"],["thounsands","thousands"],["thourghly","thoroughly"],["thourough","thorough"],["thouroughly","thoroughly"],["thq","the"],["thrad","thread"],["threadsave","threadsafe"],["threashold","threshold"],["threasholds","thresholds"],["threatend","threatened"],["threatment","treatment"],["threatments","treatments"],["threatning","threatening"],["thred","thread"],["threded","threaded"],["thredhold","threshold"],["threding","threading"],["threds","threads"],["three-dimenional","three-dimensional"],["three-dimenionsal","three-dimensional"],["threedimenional","three-dimensional"],["threedimenionsal","three-dimensional"],["threee","three"],["threhold","threshold"],["threrefore","therefore"],["threshhold","threshold"],["threshholds","thresholds"],["threshod","threshold"],["threshods","thresholds"],["threshol","threshold"],["thresold","threshold"],["thresshold","threshold"],["thrid","third"],["throen","thrown"],["throgh","through"],["throrough","thorough"],["throttoling","throttling"],["throug","through"],["througg","through"],["throughly","thoroughly"],["throughtout","throughout"],["througout","throughout"],["througt","through"],["througth","through"],["throuh","through"],["throuhg","through"],["throuhgout","throughout"],["throuhgput","throughput"],["throuth","through"],["throwgh","through"],["thrreshold","threshold"],["thrresholds","thresholds"],["thrue","through"],["thrugh","through"],["thruogh","through"],["thruoghout","throughout"],["thruoghput","throughput"],["thruout","throughout"],["thses","these"],["thsi","this"],["thsnk","thank"],["thsnked","thanked"],["thsnkful","thankful"],["thsnkfully","thankfully"],["thsnkfulness","thankfulness"],["thsnking","thanking"],["thsnks","thanks"],["thsnkyou","thank you"],["thsoe","those"],["thsose","those"],["thsould","should"],["thst","that"],["thta","that"],["thtat","that"],["thumbbnail","thumbnail"],["thumbnal","thumbnail"],["thumbnals","thumbnails"],["thundebird","thunderbird"],["thurday","Thursday"],["thurough","thorough"],["thurrow","thorough"],["thursdey","Thursday"],["thurver","further"],["thyat","that"],["tichened","thickened"],["tichness","thickness"],["tickness","thickness"],["tidibt","tidbit"],["tidibts","tidbits"],["tieing","tying"],["tiemout","timeout"],["tiemstamp","timestamp"],["tiemstamped","timestamped"],["tiemstamps","timestamps"],["tieth","tithe"],["tigger","trigger"],["tiggered","triggered"],["tiggering","triggering"],["tiggers","triggers"],["tighly","tightly"],["tightely","tightly"],["tigth","tight"],["tigthen","tighten"],["tigthened","tightened"],["tigthening","tightening"],["tigthens","tightens"],["tigthly","tightly"],["tihkn","think"],["tihs","this"],["tiitle","title"],["tillt","tilt"],["tillted","tilted"],["tillts","tilts"],["timdelta","timedelta"],["timedlta","timedelta"],["timeing","timing"],["timemout","timeout"],["timeot","timeout"],["timeoutted","timed out"],["timere","timer"],["timesamp","timestamp"],["timesamped","timestamped"],["timesamps","timestamps"],["timeschedule","time schedule"],["timespanp","timespan"],["timespanps","timespans"],["timestan","timespan"],["timestans","timespans"],["timestap","timestamp"],["timestaped","timestamped"],["timestaping","timestamping"],["timestaps","timestamps"],["timestemp","timestamp"],["timestemps","timestamps"],["timestmap","timestamp"],["timestmaps","timestamps"],["timetamp","timestamp"],["timetamps","timestamps"],["timmestamp","timestamp"],["timmestamps","timestamps"],["timne","time"],["timoeut","timeout"],["timout","timeout"],["timtout","timeout"],["timzeone","timezone"],["timzeones","timezones"],["timzezone","timezone"],["timzezones","timezones"],["tinterrupts","interrupts"],["tipically","typically"],["tirangle","triangle"],["tirangles","triangles"],["titel","title"],["titels","titles"],["titile","title"],["tittled","titled"],["tittling","titling"],["tje","the"],["tjhe","the"],["tjpanishad","upanishad"],["tkae","take"],["tkaes","takes"],["tkaing","taking"],["tlaking","talking"],["tmis","this"],["tne","the"],["toally","totally"],["tobbaco","tobacco"],["tobot","robot"],["toches","touches"],["tocksen","toxin"],["todya","today"],["toekn","token"],["togehter","together"],["togeter","together"],["togeterness","togetherness"],["toggel","toggle"],["toggeles","toggles"],["toggeling","toggling"],["toggels","toggles"],["toggleing","toggling"],["togheter","together"],["toghether","together"],["togle","toggle"],["togled","toggled"],["togling","toggling"],["toglle","toggle"],["toglled","toggled"],["togther","together"],["tolarable","tolerable"],["tolelerance","tolerance"],["tolen","token"],["tolens","tokens"],["toleranz","tolerance"],["tolerence","tolerance"],["tolerences","tolerances"],["tolerent","tolerant"],["tolernce","tolerance"],["Tolkein","Tolkien"],["tollerable","tolerable"],["tollerance","tolerance"],["tollerances","tolerances"],["tolorance","tolerance"],["tolorances","tolerances"],["tolorant","tolerant"],["tomatoe","tomato"],["tomatos","tomatoes"],["tommorow","tomorrow"],["tommorrow","tomorrow"],["tomorrrow","tomorrow"],["tongiht","tonight"],["tonihgt","tonight"],["tood","todo"],["toogle","toggle"],["toogling","toggling"],["tookits","toolkits"],["toolar","toolbar"],["toolsbox","toolbox"],["toom","tomb"],["toos","tools"],["tootonic","teutonic"],["topicaizer","topicalizer"],["topologie","topology"],["torerable","tolerable"],["toriodal","toroidal"],["tork","torque"],["tormenters","tormentors"],["tornadoe","tornado"],["torpeados","torpedoes"],["torpedos","torpedoes"],["tortilini","tortellini"],["tortise","tortoise"],["torward","toward"],["torwards","towards"],["totaly","totally"],["totat","total"],["totation","rotation"],["totats","totals"],["tothe","to the"],["tothiba","toshiba"],["totol","total"],["totorial","tutorial"],["totorials","tutorials"],["touble","trouble"],["toubles","troubles"],["toubling","troubling"],["toughtful","thoughtful"],["toughtly","tightly"],["toughts","thoughts"],["tounge","tongue"],["touple","tuple"],["towords","towards"],["towrad","toward"],["toxen","toxin"],["tpye","type"],["tpyed","typed"],["tpyes","types"],["tpyo","typo"],["trabsform","transform"],["traceablity","traceability"],["trackign","tracking"],["trackling","tracking"],["tracsode","transcode"],["tracsoded","transcoded"],["tracsoder","transcoder"],["tracsoders","transcoders"],["tracsodes","transcodes"],["tracsoding","transcoding"],["traddition","tradition"],["tradditional","traditional"],["tradditions","traditions"],["tradgic","tragic"],["tradionally","traditionally"],["traditilnal","traditional"],["traditiona","traditional"],["traditionaly","traditionally"],["traditionnal","traditional"],["traditionnally","traditionally"],["traditition","tradition"],["tradtional","traditional"],["tradtionally","traditionally"],["trafficed","trafficked"],["trafficing","trafficking"],["trafic","traffic"],["tragectory","trajectory"],["traget","target"],["trageted","targeted"],["trageting","targeting"],["tragets","targets"],["traige","triage"],["traiger","triager"],["traigers","triagers"],["traiges","triages"],["traiging","triaging"],["trailins","trailing"],["traingle","triangle"],["traingles","triangles"],["traingular","triangular"],["traingulate","triangulate"],["traingulated","triangulated"],["traingulates","triangulates"],["traingulating","triangulating"],["traingulation","triangulation"],["traingulations","triangulations"],["trainig","training"],["trainigs","training"],["trainng","training"],["trainngs","training"],["traked","tracked"],["traker","tracker"],["trakers","trackers"],["traking","tracking"],["tramsmit","transmit"],["tramsmits","transmits"],["tramsmitted","transmitted"],["tramsmitting","transmitting"],["tranaction","transaction"],["tranactional","transactional"],["tranactions","transactions"],["tranalating","translating"],["tranalation","translation"],["tranalations","translations"],["tranasction","transaction"],["tranasctions","transactions"],["tranceiver","transceiver"],["tranceivers","transceivers"],["trancendent","transcendent"],["trancending","transcending"],["tranclate","translate"],["trandional","traditional"],["tranfer","transfer"],["tranfered","transferred"],["tranfering","transferring"],["tranferred","transferred"],["tranfers","transfers"],["tranform","transform"],["tranformable","transformable"],["tranformation","transformation"],["tranformations","transformations"],["tranformative","transformative"],["tranformed","transformed"],["tranforming","transforming"],["tranforms","transforms"],["tranient","transient"],["tranients","transients"],["tranistion","transition"],["tranistioned","transitioned"],["tranistioning","transitioning"],["tranistions","transitions"],["tranition","transition"],["tranitioned","transitioned"],["tranitioning","transitioning"],["tranitions","transitions"],["tranlatable","translatable"],["tranlate","translate"],["tranlated","translated"],["tranlates","translates"],["tranlating","translating"],["tranlation","translation"],["tranlations","translations"],["tranlsation","translation"],["tranlsations","translations"],["tranmission","transmission"],["tranmist","transmit"],["tranmitted","transmitted"],["tranmitting","transmitting"],["tranparent","transparent"],["tranparently","transparently"],["tranport","transport"],["tranported","transported"],["tranporting","transporting"],["tranports","transports"],["transacion","transaction"],["transacions","transactions"],["transaciton","transaction"],["transacitons","transactions"],["transacrtion","transaction"],["transacrtions","transactions"],["transaction-spacific","transaction-specific"],["transactoin","transaction"],["transactoins","transactions"],["transalation","translation"],["transalations","translations"],["transalt","translate"],["transalte","translate"],["transalted","translated"],["transaltes","translates"],["transaltion","translation"],["transaltions","translations"],["transaltor","translator"],["transaltors","translators"],["transcendance","transcendence"],["transcendant","transcendent"],["transcendentational","transcendental"],["transcevier","transceiver"],["transciever","transceiver"],["transcievers","transceivers"],["transcocde","transcode"],["transcocded","transcoded"],["transcocder","transcoder"],["transcocders","transcoders"],["transcocdes","transcodes"],["transcocding","transcoding"],["transcocdings","transcodings"],["transconde","transcode"],["transconded","transcoded"],["transconder","transcoder"],["transconders","transcoders"],["transcondes","transcodes"],["transconding","transcoding"],["transcondings","transcodings"],["transcorde","transcode"],["transcorded","transcoded"],["transcorder","transcoder"],["transcorders","transcoders"],["transcordes","transcodes"],["transcording","transcoding"],["transcordings","transcodings"],["transcoser","transcoder"],["transcosers","transcoders"],["transction","transaction"],["transctions","transactions"],["transeint","transient"],["transending","transcending"],["transer","transfer"],["transesxuals","transsexuals"],["transferd","transferred"],["transfered","transferred"],["transfering","transferring"],["transferrd","transferred"],["transfom","transform"],["transfomation","transformation"],["transfomational","transformational"],["transfomations","transformations"],["transfomed","transformed"],["transfomer","transformer"],["transfomm","transform"],["transfoprmation","transformation"],["transforation","transformation"],["transforations","transformations"],["transformated","transformed"],["transformates","transforms"],["transformaton","transformation"],["transformatted","transformed"],["transfrom","transform"],["transfromation","transformation"],["transfromations","transformations"],["transfromed","transformed"],["transfromer","transformer"],["transfroming","transforming"],["transfroms","transforms"],["transiet","transient"],["transiets","transients"],["transision","transition"],["transisioning","transitioning"],["transisions","transitions"],["transisition","transition"],["transisitioned","transitioned"],["transisitioning","transitioning"],["transisitions","transitions"],["transistion","transition"],["transistioning","transitioning"],["transistions","transitions"],["transitionnal","transitional"],["transitionned","transitioned"],["transitionning","transitioning"],["transitionns","transitions"],["transiton","transition"],["transitoning","transitioning"],["transitons","transitions"],["transitor","transistor"],["transitors","transistors"],["translater","translator"],["translaters","translators"],["translatied","translated"],["translatoin","translation"],["translatoins","translations"],["translteration","transliteration"],["transmision","transmission"],["transmisive","transmissive"],["transmissable","transmissible"],["transmissione","transmission"],["transmist","transmit"],["transmited","transmitted"],["transmiter","transmitter"],["transmiters","transmitters"],["transmiting","transmitting"],["transmition","transmission"],["transmitsion","transmission"],["transmittd","transmitted"],["transmittion","transmission"],["transmitts","transmits"],["transmmit","transmit"],["transocde","transcode"],["transocded","transcoded"],["transocder","transcoder"],["transocders","transcoders"],["transocdes","transcodes"],["transocding","transcoding"],["transocdings","transcodings"],["transofrm","transform"],["transofrmation","transformation"],["transofrmations","transformations"],["transofrmed","transformed"],["transofrmer","transformer"],["transofrmers","transformers"],["transofrming","transforming"],["transofrms","transforms"],["transolate","translate"],["transolated","translated"],["transolates","translates"],["transolating","translating"],["transolation","translation"],["transolations","translations"],["transorm","transform"],["transormed","transformed"],["transorming","transforming"],["transorms","transforms"],["transpable","transposable"],["transpacencies","transparencies"],["transpacency","transparency"],["transpaernt","transparent"],["transpaerntly","transparently"],["transpancies","transparencies"],["transpancy","transparency"],["transpant","transplant"],["transparaent","transparent"],["transparaently","transparently"],["transparanceies","transparencies"],["transparancey","transparency"],["transparancies","transparencies"],["transparancy","transparency"],["transparanet","transparent"],["transparanetly","transparently"],["transparanies","transparencies"],["transparant","transparent"],["transparantly","transparently"],["transparany","transparency"],["transpararent","transparent"],["transpararently","transparently"],["transparcencies","transparencies"],["transparcency","transparency"],["transparcenies","transparencies"],["transparceny","transparency"],["transparecy","transparency"],["transpareny","transparency"],["transparities","transparencies"],["transparity","transparency"],["transparnecies","transparencies"],["transparnecy","transparency"],["transparnt","transparent"],["transparntly","transparently"],["transparren","transparent"],["transparrenly","transparently"],["transparrent","transparent"],["transparrently","transparently"],["transpart","transport"],["transparts","transports"],["transpatrent","transparent"],["transpatrently","transparently"],["transpencies","transparencies"],["transpency","transparency"],["transpeorted","transported"],["transperancies","transparencies"],["transperancy","transparency"],["transperant","transparent"],["transperantly","transparently"],["transperencies","transparencies"],["transperency","transparency"],["transperent","transparent"],["transperently","transparently"],["transporation","transportation"],["transportatin","transportation"],["transprencies","transparencies"],["transprency","transparency"],["transprent","transparent"],["transprently","transparently"],["transprot","transport"],["transproted","transported"],["transproting","transporting"],["transprots","transports"],["transprt","transport"],["transprted","transported"],["transprting","transporting"],["transprts","transports"],["transpsition","transposition"],["transsend","transcend"],["transtion","transition"],["transtioned","transitioned"],["transtioning","transitioning"],["transtions","transitions"],["transtition","transition"],["transtitioned","transitioned"],["transtitioning","transitioning"],["transtitions","transitions"],["transtorm","transform"],["transtormed","transformed"],["transvorm","transform"],["transvormation","transformation"],["transvormed","transformed"],["transvorming","transforming"],["transvorms","transforms"],["tranversing","traversing"],["trapeziod","trapezoid"],["trapeziodal","trapezoidal"],["trasaction","transaction"],["trascation","transaction"],["trasfer","transfer"],["trasferred","transferred"],["trasfers","transfers"],["trasform","transform"],["trasformable","transformable"],["trasformation","transformation"],["trasformations","transformations"],["trasformative","transformative"],["trasformed","transformed"],["trasformer","transformer"],["trasformers","transformers"],["trasforming","transforming"],["trasforms","transforms"],["traslalate","translate"],["traslalated","translated"],["traslalating","translating"],["traslalation","translation"],["traslalations","translations"],["traslate","translate"],["traslated","translated"],["traslates","translates"],["traslating","translating"],["traslation","translation"],["traslations","translations"],["traslucency","translucency"],["trasmission","transmission"],["trasmit","transmit"],["trasnaction","transaction"],["trasnfer","transfer"],["trasnfered","transferred"],["trasnferred","transferred"],["trasnfers","transfers"],["trasnform","transform"],["trasnformation","transformation"],["trasnformed","transformed"],["trasnformer","transformer"],["trasnformers","transformers"],["trasnforms","transforms"],["trasnlate","translate"],["trasnlated","translated"],["trasnlation","translation"],["trasnlations","translations"],["trasnparencies","transparencies"],["trasnparency","transparency"],["trasnparent","transparent"],["trasnport","transport"],["trasnports","transports"],["trasnsmit","transmit"],["trasparency","transparency"],["trasparent","transparent"],["trasparently","transparently"],["trasport","transport"],["trasportable","transportable"],["trasported","transported"],["trasporter","transporter"],["trasports","transports"],["traspose","transpose"],["trasposed","transposed"],["trasposing","transposing"],["trasposition","transposition"],["traspositions","transpositions"],["traved","traversed"],["traveersal","traversal"],["traveerse","traverse"],["traveersed","traversed"],["traveerses","traverses"],["traveersing","traversing"],["traveral","traversal"],["travercal","traversal"],["traverce","traverse"],["traverced","traversed"],["traverces","traverses"],["travercing","traversing"],["travere","traverse"],["travered","traversed"],["traveres","traverse"],["traveresal","traversal"],["traveresed","traversed"],["travereses","traverses"],["traveresing","traversing"],["travering","traversing"],["traverssal","traversal"],["travesal","traversal"],["travese","traverse"],["travesed","traversed"],["traveses","traverses"],["travesing","traversing"],["tre","tree"],["treate","treat"],["treatement","treatment"],["treatements","treatments"],["treates","treats"],["tremelo","tremolo"],["tremelos","tremolos"],["trempoline","trampoline"],["treshhold","threshold"],["treshold","threshold"],["tressle","trestle"],["treting","treating"],["trgistration","registration"],["trhe","the"],["triancle","triangle"],["triancles","triangles"],["trianed","trained"],["triange","triangle"],["triangel","triangle"],["triangels","triangles"],["trianglular","triangular"],["trianglutaion","triangulation"],["triangulataion","triangulation"],["triangultaion","triangulation"],["trianing","training"],["trianlge","triangle"],["trianlges","triangles"],["trians","trains"],["trigered","triggered"],["trigerred","triggered"],["trigerring","triggering"],["trigers","triggers"],["trigged","triggered"],["triggerd","triggered"],["triggeres","triggers"],["triggerred","triggered"],["triggerring","triggering"],["triggerrs","triggers"],["triggger","trigger"],["trignometric","trigonometric"],["trignometry","trigonometry"],["triguered","triggered"],["triked","tricked"],["trikery","trickery"],["triky","tricky"],["trilineal","trilinear"],["trimed","trimmed"],["trimmng","trimming"],["trinagle","triangle"],["trinagles","triangles"],["triniy","trinity"],["triology","trilogy"],["tripel","triple"],["tripeld","tripled"],["tripels","triples"],["tripple","triple"],["triuangulate","triangulate"],["trival","trivial"],["trivally","trivially"],["trivias","trivia"],["trivival","trivial"],["trnasfers","transfers"],["trnasmit","transmit"],["trnasmited","transmitted"],["trnasmits","transmits"],["trnsfer","transfer"],["trnsfered","transferred"],["trnsfers","transfers"],["troling","trolling"],["trottle","throttle"],["troubeshoot","troubleshoot"],["troubeshooted","troubleshooted"],["troubeshooter","troubleshooter"],["troubeshooting","troubleshooting"],["troubeshoots","troubleshoots"],["troublehshoot","troubleshoot"],["troublehshooting","troubleshooting"],["troublshoot","troubleshoot"],["troublshooting","troubleshooting"],["trought","through"],["troup","troupe"],["trriger","trigger"],["trrigered","triggered"],["trrigering","triggering"],["trrigers","triggers"],["trrigger","trigger"],["trriggered","triggered"],["trriggering","triggering"],["trriggers","triggers"],["trubble","trouble"],["trubbled","troubled"],["trubbles","troubles"],["truble","trouble"],["trubled","troubled"],["trubles","troubles"],["trubling","troubling"],["trucate","truncate"],["trucated","truncated"],["trucates","truncates"],["trucating","truncating"],["trucnate","truncate"],["trucnated","truncated"],["trucnating","truncating"],["truct","struct"],["truelly","truly"],["truely","truly"],["truied","tried"],["trully","truly"],["trun","turn"],["trunacted","truncated"],["truncat","truncate"],["trunctate","truncate"],["trunctated","truncated"],["trunctating","truncating"],["trunctation","truncation"],["truncted","truncated"],["truned","turned"],["truns","turns"],["trustworthly","trustworthy"],["trustworthyness","trustworthiness"],["trustworty","trustworthy"],["trustwortyness","trustworthiness"],["trustwothy","trustworthy"],["truw","true"],["tryed","tried"],["tryes","tries"],["tryig","trying"],["tryinng","trying"],["trys","tries"],["tryying","trying"],["ttests","tests"],["tthe","the"],["tuesdey","Tuesday"],["tuesdsy","Tuesday"],["tufure","future"],["tuhmbnail","thumbnail"],["tunelled","tunnelled"],["tunelling","tunneling"],["tunned","tuned"],["tunnell","tunnel"],["tuotiral","tutorial"],["tuotirals","tutorials"],["tupel","tuple"],["tupple","tuple"],["tupples","tuples"],["ture","true"],["turle","turtle"],["turly","truly"],["turorial","tutorial"],["turorials","tutorials"],["turtleh","turtle"],["turtlehs","turtles"],["turtorial","tutorial"],["turtorials","tutorials"],["Tuscon","Tucson"],["tusday","Tuesday"],["tuseday","Tuesday"],["tust","trust"],["tution","tuition"],["tutoriel","tutorial"],["tutoriels","tutorials"],["tweleve","twelve"],["twelth","twelfth"],["two-dimenional","two-dimensional"],["two-dimenionsal","two-dimensional"],["twodimenional","two-dimensional"],["twodimenionsal","two-dimensional"],["twon","town"],["twpo","two"],["tyep","type"],["tyhat","that"],["tyies","tries"],["tymecode","timecode"],["tyope","type"],["typcast","typecast"],["typcasting","typecasting"],["typcasts","typecasts"],["typcial","typical"],["typcially","typically"],["typechek","typecheck"],["typecheking","typechecking"],["typesrript","typescript"],["typicallly","typically"],["typicaly","typically"],["typicially","typically"],["typle","tuple"],["typles","tuples"],["typographc","typographic"],["typpe","type"],["typped","typed"],["typpes","types"],["typpical","typical"],["typpically","typically"],["tyranies","tyrannies"],["tyrany","tyranny"],["tyring","trying"],["tyrranies","tyrannies"],["tyrrany","tyranny"],["ubelieveble","unbelievable"],["ubelievebly","unbelievably"],["ubernetes","Kubernetes"],["ubiquitious","ubiquitous"],["ubiquituously","ubiquitously"],["ubitquitous","ubiquitous"],["ublisher","publisher"],["ubunut","Ubuntu"],["ubutu","Ubuntu"],["ubutunu","Ubuntu"],["udpatable","updatable"],["udpate","update"],["udpated","updated"],["udpater","updater"],["udpates","updates"],["udpating","updating"],["ueful","useful"],["uegister","unregister"],["uesd","used"],["ueses","uses"],["uesful","useful"],["uesfull","useful"],["uesfulness","usefulness"],["uesless","useless"],["ueslessness","uselessness"],["uest","quest"],["uests","quests"],["uffer","buffer"],["uffered","buffered"],["uffering","buffering"],["uffers","buffers"],["uggly","ugly"],["ugglyness","ugliness"],["uglyness","ugliness"],["uique","unique"],["uise","use"],["uisng","using"],["uites","suites"],["uknown","unknown"],["uknowns","unknowns"],["Ukranian","Ukrainian"],["uless","unless"],["ulimited","unlimited"],["ulter","alter"],["ulteration","alteration"],["ulterations","alterations"],["ultered","altered"],["ultering","altering"],["ulters","alters"],["ultimatly","ultimately"],["ultimely","ultimately"],["umambiguous","unambiguous"],["umark","unmark"],["umarked","unmarked"],["umbrealla","umbrella"],["uminportant","unimportant"],["umit","unit"],["umless","unless"],["ummark","unmark"],["umoutn","umount"],["un-complete","incomplete"],["unabailable","unavailable"],["unabale","unable"],["unabel","unable"],["unablet","unable"],["unacceptible","unacceptable"],["unaccesible","inaccessible"],["unaccessable","inaccessible"],["unacknowleged","unacknowledged"],["unacompanied","unaccompanied"],["unadvertantly","inadvertently"],["unadvertedly","inadvertently"],["unadvertent","inadvertent"],["unadvertently","inadvertently"],["unahppy","unhappy"],["unalllowed","unallowed"],["unambigious","unambiguous"],["unambigous","unambiguous"],["unambigously","unambiguously"],["unamed","unnamed"],["unanimuous","unanimous"],["unanymous","unanimous"],["unappretiated","unappreciated"],["unappretiative","unappreciative"],["unapprieciated","unappreciated"],["unapprieciative","unappreciative"],["unapretiated","unappreciated"],["unapretiative","unappreciative"],["unaquired","unacquired"],["unarchving","unarchiving"],["unassing","unassign"],["unassinged","unassigned"],["unassinging","unassigning"],["unassings","unassigns"],["unathenticated","unauthenticated"],["unathorised","unauthorised"],["unathorized","unauthorized"],["unatteded","unattended"],["unauthenicated","unauthenticated"],["unauthenticed","unauthenticated"],["unavaiable","unavailable"],["unavaialable","unavailable"],["unavaialbale","unavailable"],["unavaialbe","unavailable"],["unavaialbel","unavailable"],["unavaialbility","unavailability"],["unavaialble","unavailable"],["unavaible","unavailable"],["unavailabel","unavailable"],["unavailiability","unavailability"],["unavailible","unavailable"],["unavaliable","unavailable"],["unavaoidable","unavoidable"],["unavilable","unavailable"],["unballance","unbalance"],["unbeknowst","unbeknownst"],["unbeleifable","unbelievable"],["unbeleivable","unbelievable"],["unbeliefable","unbelievable"],["unbelivable","unbelievable"],["unbeliveable","unbelievable"],["unbeliveably","unbelievably"],["unbelivebly","unbelievably"],["unborned","unborn"],["unbouind","unbound"],["unbouinded","unbounded"],["unboun","unbound"],["unbounad","unbound"],["unbounaded","unbounded"],["unbouned","unbounded"],["unbounnd","unbound"],["unbounnded","unbounded"],["unbouund","unbound"],["unbouunded","unbounded"],["uncahnged","unchanged"],["uncalcualted","uncalculated"],["unce","once"],["uncehck","uncheck"],["uncehcked","unchecked"],["uncerain","uncertain"],["uncerainties","uncertainties"],["uncerainty","uncertainty"],["uncertaincy","uncertainty"],["uncertainities","uncertainties"],["uncertainity","uncertainty"],["uncessarily","unnecessarily"],["uncetain","uncertain"],["uncetainties","uncertainties"],["uncetainty","uncertainty"],["unchache","uncache"],["unchached","uncached"],["unchaged","unchanged"],["unchainged","unchanged"],["unchallengable","unchallengeable"],["unchaned","unchanged"],["unchaneged","unchanged"],["unchangable","unchangeable"],["uncheked","unchecked"],["unchenged","unchanged"],["uncognized","unrecognized"],["uncoment","uncomment"],["uncomented","uncommented"],["uncomenting","uncommenting"],["uncoments","uncomments"],["uncomitted","uncommitted"],["uncommited","uncommitted"],["uncommment","uncomment"],["uncommmented","uncommented"],["uncommmenting","uncommenting"],["uncommments","uncomments"],["uncommmitted","uncommitted"],["uncommmon","uncommon"],["uncommpresed","uncompressed"],["uncommpresion","uncompression"],["uncommpressd","uncompressed"],["uncommpressed","uncompressed"],["uncommpression","uncompression"],["uncommtited","uncommitted"],["uncomon","uncommon"],["uncompetetive","uncompetitive"],["uncompetive","uncompetitive"],["uncomplete","incomplete"],["uncompleteness","incompleteness"],["uncompletness","incompleteness"],["uncompres","uncompress"],["uncompresed","uncompressed"],["uncompreses","uncompresses"],["uncompresing","uncompressing"],["uncompresor","uncompressor"],["uncompresors","uncompressors"],["uncompressible","incompressible"],["uncomprss","uncompress"],["unconcious","unconscious"],["unconciousness","unconsciousness"],["unconcistencies","inconsistencies"],["unconcistency","inconsistency"],["unconcistent","inconsistent"],["uncondisional","unconditional"],["uncondisionaly","unconditionally"],["uncondisionnal","unconditional"],["uncondisionnaly","unconditionally"],["unconditial","unconditional"],["unconditially","unconditionally"],["unconditialy","unconditionally"],["unconditianal","unconditional"],["unconditianally","unconditionally"],["unconditianaly","unconditionally"],["unconditinally","unconditionally"],["unconditinaly","unconditionally"],["unconditionaly","unconditionally"],["unconditionnal","unconditional"],["unconditionnally","unconditionally"],["unconditionnaly","unconditionally"],["uncondtional","unconditional"],["uncondtionally","unconditionally"],["unconfiged","unconfigured"],["unconfortability","discomfort"],["unconsisntency","inconsistency"],["unconsistent","inconsistent"],["uncontitutional","unconstitutional"],["uncontrained","unconstrained"],["uncontrolable","uncontrollable"],["unconvential","unconventional"],["unconventionnal","unconventional"],["uncorectly","incorrectly"],["uncorelated","uncorrelated"],["uncorrect","incorrect"],["uncorrectly","incorrectly"],["uncorrolated","uncorrelated"],["uncoverted","unconverted"],["uncrypted","unencrypted"],["undecideable","undecidable"],["undefied","undefined"],["undefien","undefine"],["undefiend","undefined"],["undefinied","undefined"],["undeflow","underflow"],["undeflows","underflows"],["undefuned","undefined"],["undelying","underlying"],["underfiend","undefined"],["underfined","undefined"],["underfow","underflow"],["underfowed","underflowed"],["underfowing","underflowing"],["underfows","underflows"],["underlayed","underlaid"],["underlaying","underlying"],["underlflow","underflow"],["underlflowed","underflowed"],["underlflowing","underflowing"],["underlflows","underflows"],["underlfow","underflow"],["underlfowed","underflowed"],["underlfowing","underflowing"],["underlfows","underflows"],["underlow","underflow"],["underlowed","underflowed"],["underlowing","underflowing"],["underlows","underflows"],["underlyng","underlying"],["underneeth","underneath"],["underrrun","underrun"],["undersacn","underscan"],["understadn","understand"],["understadnable","understandable"],["understadning","understanding"],["understadns","understands"],["understoon","understood"],["understoud","understood"],["undertand","understand"],["undertandable","understandable"],["undertanded","understood"],["undertanding","understanding"],["undertands","understands"],["undertsand","understand"],["undertsanding","understanding"],["undertsands","understands"],["undertsood","understood"],["undertstand","understand"],["undertstands","understands"],["underun","underrun"],["underuns","underruns"],["underware","underwear"],["underying","underlying"],["underyling","underlying"],["undescore","underscore"],["undescored","underscored"],["undescores","underscores"],["undesireable","undesirable"],["undesitable","undesirable"],["undestand","understand"],["undestood","understood"],["undet","under"],["undetecable","undetectable"],["undetstand","understand"],["undetware","underwear"],["undetwater","underwater"],["undfine","undefine"],["undfined","undefined"],["undfines","undefines"],["undistinghable","indistinguishable"],["undocummented","undocumented"],["undorder","unorder"],["undordered","unordered"],["undoubtely","undoubtedly"],["undreground","underground"],["undupplicated","unduplicated"],["uneccesary","unnecessary"],["uneccessarily","unnecessarily"],["uneccessary","unnecessary"],["unecessarily","unnecessarily"],["unecessary","unnecessary"],["uneforceable","unenforceable"],["uneform","uniform"],["unencrpt","unencrypt"],["unencrpted","unencrypted"],["unenforcable","unenforceable"],["unepected","unexpected"],["unepectedly","unexpectedly"],["unequalities","inequalities"],["unequality","inequality"],["uner","under"],["unesacpe","unescape"],["unesacped","unescaped"],["unessecarry","unnecessary"],["unessecary","unnecessary"],["unevaluted","unevaluated"],["unexcected","unexpected"],["unexcectedly","unexpectedly"],["unexcpected","unexpected"],["unexcpectedly","unexpectedly"],["unexecpted","unexpected"],["unexecptedly","unexpectedly"],["unexected","unexpected"],["unexectedly","unexpectedly"],["unexepcted","unexpected"],["unexepctedly","unexpectedly"],["unexepected","unexpected"],["unexepectedly","unexpectedly"],["unexpacted","unexpected"],["unexpactedly","unexpectedly"],["unexpcted","unexpected"],["unexpctedly","unexpectedly"],["unexpecetd","unexpected"],["unexpecetdly","unexpectedly"],["unexpect","unexpected"],["unexpectd","unexpected"],["unexpectdly","unexpectedly"],["unexpecte","unexpected"],["unexpectely","unexpectedly"],["unexpectend","unexpected"],["unexpectendly","unexpectedly"],["unexpectly","unexpectedly"],["unexpeected","unexpected"],["unexpeectedly","unexpectedly"],["unexpepected","unexpected"],["unexpepectedly","unexpectedly"],["unexpepted","unexpected"],["unexpeptedly","unexpectedly"],["unexpercted","unexpected"],["unexperctedly","unexpectedly"],["unexpested","unexpected"],["unexpestedly","unexpectedly"],["unexpetced","unexpected"],["unexpetcedly","unexpectedly"],["unexpetct","unexpected"],["unexpetcted","unexpected"],["unexpetctedly","unexpectedly"],["unexpetctly","unexpectedly"],["unexpetect","unexpected"],["unexpetected","unexpected"],["unexpetectedly","unexpectedly"],["unexpetectly","unexpectedly"],["unexpeted","unexpected"],["unexpetedly","unexpectedly"],["unexpexcted","unexpected"],["unexpexctedly","unexpectedly"],["unexpexted","unexpected"],["unexpextedly","unexpectedly"],["unexspected","unexpected"],["unexspectedly","unexpectedly"],["unfilp","unflip"],["unfilpped","unflipped"],["unfilpping","unflipping"],["unfilps","unflips"],["unflaged","unflagged"],["unflexible","inflexible"],["unforetunately","unfortunately"],["unforgetable","unforgettable"],["unforgiveable","unforgivable"],["unformated","unformatted"],["unforseen","unforeseen"],["unforttunately","unfortunately"],["unfortuante","unfortunate"],["unfortuantely","unfortunately"],["unfortunaltely","unfortunately"],["unfortunaly","unfortunately"],["unfortunat","unfortunate"],["unfortunatelly","unfortunately"],["unfortunatetly","unfortunately"],["unfortunatley","unfortunately"],["unfortunatly","unfortunately"],["unfortunetly","unfortunately"],["unfortuntaly","unfortunately"],["unforunate","unfortunate"],["unforunately","unfortunately"],["unforutunate","unfortunate"],["unforutunately","unfortunately"],["unfotunately","unfortunately"],["unfourtunately","unfortunately"],["unfourtunetly","unfortunately"],["unfurtunately","unfortunately"],["ungeneralizeable","ungeneralizable"],["ungly","ugly"],["unhandeled","unhandled"],["unhilight","unhighlight"],["unhilighted","unhighlighted"],["unhilights","unhighlights"],["Unicde","Unicode"],["unich","unix"],["unidentifiedly","unidentified"],["unidimensionnal","unidimensional"],["unifform","uniform"],["unifforms","uniforms"],["unifiy","unify"],["uniformely","uniformly"],["unifrom","uniform"],["unifromed","uniformed"],["unifromity","uniformity"],["unifroms","uniforms"],["unigned","unsigned"],["unihabited","uninhabited"],["unilateraly","unilaterally"],["unilatreal","unilateral"],["unilatreally","unilaterally"],["unimpemented","unimplemented"],["unimplemeneted","unimplemented"],["unimplimented","unimplemented"],["uninitailised","uninitialised"],["uninitailized","uninitialized"],["uninitalise","uninitialise"],["uninitalised","uninitialised"],["uninitalises","uninitialises"],["uninitalize","uninitialize"],["uninitalized","uninitialized"],["uninitalizes","uninitializes"],["uniniteresting","uninteresting"],["uninitializaed","uninitialized"],["uninitialse","uninitialise"],["uninitialsed","uninitialised"],["uninitialses","uninitialises"],["uninitialze","uninitialize"],["uninitialzed","uninitialized"],["uninitialzes","uninitializes"],["uninstalable","uninstallable"],["uninstatiated","uninstantiated"],["uninstlal","uninstall"],["uninstlalation","uninstallation"],["uninstlalations","uninstallations"],["uninstlaled","uninstalled"],["uninstlaler","uninstaller"],["uninstlaling","uninstalling"],["uninstlals","uninstalls"],["unint8_t","uint8_t"],["unintelligable","unintelligible"],["unintentially","unintentionally"],["uninteressting","uninteresting"],["uninterpretted","uninterpreted"],["uninterruped","uninterrupted"],["uninterruptable","uninterruptible"],["unintersting","uninteresting"],["uninteruppted","uninterrupted"],["uninterupted","uninterrupted"],["unintesting","uninteresting"],["unintialised","uninitialised"],["unintialized","uninitialized"],["unintiallised","uninitialised"],["unintiallized","uninitialized"],["unintialsied","uninitialised"],["unintialzied","uninitialized"],["unio","union"],["unios","unions"],["uniqe","unique"],["uniqu","unique"],["uniquness","uniqueness"],["unistalled","uninstalled"],["uniterrupted","uninterrupted"],["UnitesStates","UnitedStates"],["unitialize","uninitialize"],["unitialized","uninitialized"],["unitilised","uninitialised"],["unitilising","uninitialising"],["unitilities","utilities"],["unitility","utility"],["unitilized","uninitialized"],["unitilizing","uninitializing"],["unitilties","utilities"],["unitilty","utility"],["unititialized","uninitialized"],["unitl","until"],["unitled","untitled"],["unitss","units"],["univeral","universal"],["univerally","universally"],["univeriality","universality"],["univeristies","universities"],["univeristy","university"],["univerities","universities"],["univerity","university"],["universial","universal"],["universiality","universality"],["universirty","university"],["universtal","universal"],["universtiy","university"],["univesities","universities"],["univesity","university"],["univiersal","universal"],["univrsal","universal"],["unkmown","unknown"],["unknon","unknown"],["unknonw","unknown"],["unknonwn","unknown"],["unknonws","unknowns"],["unknwn","unknown"],["unknwns","unknowns"],["unknwoing","unknowing"],["unknwoingly","unknowingly"],["unknwon","unknown"],["unknwons","unknowns"],["unknwown","unknown"],["unknwowns","unknowns"],["unkonwn","unknown"],["unkonwns","unknowns"],["unkown","unknown"],["unkowns","unknowns"],["unkwown","unknown"],["unlcear","unclear"],["unles","unless"],["unlikey","unlikely"],["unlikley","unlikely"],["unlimeted","unlimited"],["unlimitied","unlimited"],["unlimted","unlimited"],["unline","unlike"],["unloadins","unloading"],["unmached","unmatched"],["unmainted","unmaintained"],["unmaping","unmapping"],["unmappend","unmapped"],["unmarsalling","unmarshalling"],["unmaximice","unmaximize"],["unmistakeably","unmistakably"],["unmodfide","unmodified"],["unmodfided","unmodified"],["unmodfied","unmodified"],["unmodfieid","unmodified"],["unmodfified","unmodified"],["unmodfitied","unmodified"],["unmodifable","unmodifiable"],["unmodifed","unmodified"],["unmoutned","unmounted"],["unnacquired","unacquired"],["unncessary","unnecessary"],["unneccecarily","unnecessarily"],["unneccecary","unnecessary"],["unneccesarily","unnecessarily"],["unneccesary","unnecessary"],["unneccessarily","unnecessarily"],["unneccessary","unnecessary"],["unneceesarily","unnecessarily"],["unnecesarily","unnecessarily"],["unnecesarrily","unnecessarily"],["unnecesarry","unnecessary"],["unnecesary","unnecessary"],["unnecesasry","unnecessary"],["unnecessar","unnecessary"],["unnecessarilly","unnecessarily"],["unnecesserily","unnecessarily"],["unnecessery","unnecessary"],["unnecessiarlly","unnecessarily"],["unnecssary","unnecessary"],["unnedded","unneeded"],["unneded","unneeded"],["unneedingly","unnecessarily"],["unnescessarily","unnecessarily"],["unnescessary","unnecessary"],["unnesesarily","unnecessarily"],["unnessarily","unnecessarily"],["unnessasary","unnecessary"],["unnessecarily","unnecessarily"],["unnessecarry","unnecessary"],["unnessecary","unnecessary"],["unnessesarily","unnecessarily"],["unnessesary","unnecessary"],["unnessessarily","unnecessarily"],["unnessessary","unnecessary"],["unning","running"],["unnnecessary","unnecessary"],["unnown","unknown"],["unnowns","unknowns"],["unnsupported","unsupported"],["unnused","unused"],["unobstrusive","unobtrusive"],["unocde","Unicode"],["unoffical","unofficial"],["unoin","union"],["unompress","uncompress"],["unoperational","nonoperational"],["unorderd","unordered"],["unoredered","unordered"],["unorotated","unrotated"],["unoticeable","unnoticeable"],["unpacke","unpacked"],["unpacket","unpacked"],["unparseable","unparsable"],["unpertubated","unperturbed"],["unperturb","unperturbed"],["unperturbated","unperturbed"],["unperturbe","unperturbed"],["unplease","displease"],["unpleasent","unpleasant"],["unplesant","unpleasant"],["unplesent","unpleasant"],["unprecendented","unprecedented"],["unprecidented","unprecedented"],["unprecise","imprecise"],["unpredicatable","unpredictable"],["unpredicatble","unpredictable"],["unpredictablity","unpredictability"],["unpredictible","unpredictable"],["unpriviledged","unprivileged"],["unpriviliged","unprivileged"],["unprmopted","unprompted"],["unqiue","unique"],["unqoute","unquote"],["unqouted","unquoted"],["unqoutes","unquotes"],["unqouting","unquoting"],["unque","unique"],["unreacahable","unreachable"],["unreacahble","unreachable"],["unreacheable","unreachable"],["unrealeased","unreleased"],["unreasonabily","unreasonably"],["unrechable","unreachable"],["unrecocnized","unrecognized"],["unrecoginized","unrecognized"],["unrecogized","unrecognized"],["unrecognixed","unrecognized"],["unrecongized","unrecognized"],["unreconized","unrecognized"],["unrecovable","unrecoverable"],["unrecovarable","unrecoverable"],["unrecoverd","unrecovered"],["unregester","unregister"],["unregiste","unregister"],["unregisted","unregistered"],["unregisteing","registering"],["unregisterd","unregistered"],["unregistert","unregistered"],["unregistes","unregisters"],["unregisting","unregistering"],["unregistred","unregistered"],["unregistrs","unregisters"],["unregiter","unregister"],["unregiters","unregisters"],["unregnized","unrecognized"],["unregognised","unrecognised"],["unregsiter","unregister"],["unregsitered","unregistered"],["unregsitering","unregistering"],["unregsiters","unregisters"],["unregster","unregister"],["unregstered","unregistered"],["unregstering","unregistering"],["unregsters","unregisters"],["unreigister","unregister"],["unreigster","unregister"],["unreigstered","unregistered"],["unreigstering","unregistering"],["unreigsters","unregisters"],["unrelatd","unrelated"],["unreleated","unrelated"],["unrelted","unrelated"],["unrelyable","unreliable"],["unrelying","underlying"],["unrepentent","unrepentant"],["unrepetant","unrepentant"],["unrepetent","unrepentant"],["unreplacable","unreplaceable"],["unreplacalbe","unreplaceable"],["unreproducable","unreproducible"],["unresgister","unregister"],["unresgisterd","unregistered"],["unresgistered","unregistered"],["unresgisters","unregisters"],["unresolvabvle","unresolvable"],["unresonable","unreasonable"],["unresposive","unresponsive"],["unrestrcited","unrestricted"],["unrgesiter","unregister"],["unroated","unrotated"],["unrosponsive","unresponsive"],["unsanfe","unsafe"],["unsccessful","unsuccessful"],["unscubscribe","subscribe"],["unscubscribed","subscribed"],["unsearcahble","unsearchable"],["unselct","unselect"],["unselcted","unselected"],["unselctes","unselects"],["unselcting","unselecting"],["unselcts","unselects"],["unselecgt","unselect"],["unselecgted","unselected"],["unselecgtes","unselects"],["unselecgting","unselecting"],["unselecgts","unselects"],["unselectabe","unselectable"],["unsepcified","unspecified"],["unseting","unsetting"],["unsetset","unset"],["unsettin","unsetting"],["unsharable","unshareable"],["unshfit","unshift"],["unshfited","unshifted"],["unshfiting","unshifting"],["unshfits","unshifts"],["unsiged","unsigned"],["unsigend","unsigned"],["unsignd","unsigned"],["unsignificant","insignificant"],["unsinged","unsigned"],["unsoclicited","unsolicited"],["unsolicitied","unsolicited"],["unsolicted","unsolicited"],["unsollicited","unsolicited"],["unspecificed","unspecified"],["unspecifiec","unspecific"],["unspecifiecd","unspecified"],["unspecifieced","unspecified"],["unspefcifieid","unspecified"],["unspefeid","unspecified"],["unspeficed","unspecified"],["unspeficeid","unspecified"],["unspeficialleid","unspecified"],["unspeficiallied","unspecified"],["unspeficiallifed","unspecified"],["unspeficied","unspecified"],["unspeficieid","unspecified"],["unspeficifed","unspecified"],["unspeficifeid","unspecified"],["unspeficified","unspecified"],["unspeficififed","unspecified"],["unspeficiied","unspecified"],["unspeficiifed","unspecified"],["unspeficilleid","unspecified"],["unspeficillied","unspecified"],["unspeficillifed","unspecified"],["unspeficiteid","unspecified"],["unspeficitied","unspecified"],["unspeficitifed","unspecified"],["unspefied","unspecified"],["unspefifed","unspecified"],["unspefifeid","unspecified"],["unspefified","unspecified"],["unspefififed","unspecified"],["unspefiied","unspecified"],["unspefiifeid","unspecified"],["unspefiified","unspecified"],["unspefiififed","unspecified"],["unspefixeid","unspecified"],["unspefixied","unspecified"],["unspefixifed","unspecified"],["unspported","unsupported"],["unstabel","unstable"],["unstalbe","unstable"],["unsuable","unusable"],["unsual","unusual"],["unsubscibe","unsubscribe"],["unsubscibed","unsubscribed"],["unsubscibing","unsubscribing"],["unsubscirbe","unsubscribe"],["unsubscirbed","unsubscribed"],["unsubscirbing","unsubscribing"],["unsubscirption","unsubscription"],["unsubscirptions","unsubscriptions"],["unsubscritpion","unsubscription"],["unsubscritpions","unsubscriptions"],["unsubscritpiton","unsubscription"],["unsubscritpitons","unsubscriptions"],["unsubscritption","unsubscription"],["unsubscritptions","unsubscriptions"],["unsubstanciated","unsubstantiated"],["unsucccessful","unsuccessful"],["unsucccessfully","unsuccessfully"],["unsucccessul","unsuccessful"],["unsucccessully","unsuccessfully"],["unsuccee","unsuccessful"],["unsucceed","unsuccessful"],["unsucceedde","unsuccessful"],["unsucceeded","unsuccessful"],["unsucceeds","unsuccessful"],["unsucceeed","unsuccessful"],["unsuccees","unsuccessful"],["unsuccesful","unsuccessful"],["unsuccesfull","unsuccessful"],["unsuccesfully","unsuccessfully"],["unsuccess","unsuccessful"],["unsuccessfull","unsuccessful"],["unsuccessfullly","unsuccessfully"],["unsucesful","unsuccessful"],["unsucesfull","unsuccessful"],["unsucesfully","unsuccessfully"],["unsucesfuly","unsuccessfully"],["unsucessefully","unsuccessfully"],["unsucessflly","unsuccessfully"],["unsucessfually","unsuccessfully"],["unsucessful","unsuccessful"],["unsucessfull","unsuccessful"],["unsucessfully","unsuccessfully"],["unsucessfuly","unsuccessfully"],["unsucesssful","unsuccessful"],["unsucesssfull","unsuccessful"],["unsucesssfully","unsuccessfully"],["unsucesssfuly","unsuccessfully"],["unsucessufll","unsuccessful"],["unsucessuflly","unsuccessfully"],["unsucessully","unsuccessfully"],["unsued","unused"],["unsufficient","insufficient"],["unsuportable","unsupportable"],["unsuported","unsupported"],["unsupport","unsupported"],["unsupproted","unsupported"],["unsupress","unsuppress"],["unsupressed","unsuppressed"],["unsupresses","unsuppresses"],["unsuprised","unsurprised"],["unsuprising","unsurprising"],["unsuprisingly","unsurprisingly"],["unsuprized","unsurprised"],["unsuprizing","unsurprising"],["unsuprizingly","unsurprisingly"],["unsurprized","unsurprised"],["unsurprizing","unsurprising"],["unsurprizingly","unsurprisingly"],["unsused","unused"],["unswithced","unswitched"],["unsychronise","unsynchronise"],["unsychronised","unsynchronised"],["unsychronize","unsynchronize"],["unsychronized","unsynchronized"],["untargetted","untargeted"],["unter","under"],["untill","until"],["untintuitive","unintuitive"],["untoched","untouched"],["untqueue","unqueue"],["untrached","untracked"],["untranslateable","untranslatable"],["untrasformed","untransformed"],["untrasposed","untransposed"],["untrustworty","untrustworthy"],["unued","unused"],["ununsed","unused"],["ununsual","unusual"],["unusal","unusual"],["unusally","unusually"],["unuseable","unusable"],["unuseful","useless"],["unusre","unsure"],["unusuable","unusable"],["unusued","unused"],["unvailable","unavailable"],["unvalid","invalid"],["unvalidate","invalidate"],["unverfified","unverified"],["unversionned","unversioned"],["unversoned","unversioned"],["unviersity","university"],["unwarrented","unwarranted"],["unweildly","unwieldy"],["unwieldly","unwieldy"],["unwraped","unwrapped"],["unwrritten","unwritten"],["unx","unix"],["unxepected","unexpected"],["unxepectedly","unexpectedly"],["unxpected","unexpected"],["unziped","unzipped"],["upadate","update"],["upadated","updated"],["upadater","updater"],["upadates","updates"],["upadating","updating"],["upadte","update"],["upadted","updated"],["upadter","updater"],["upadters","updaters"],["upadtes","updates"],["upagrade","upgrade"],["upagraded","upgraded"],["upagrades","upgrades"],["upagrading","upgrading"],["upate","update"],["upated","updated"],["upater","updater"],["upates","updates"],["upating","updating"],["upcomming","upcoming"],["updaing","updating"],["updat","update"],["updateded","updated"],["updateed","updated"],["updatees","updates"],["updateing","updating"],["updatess","updates"],["updatig","updating"],["updats","updates"],["updgrade","upgrade"],["updgraded","upgraded"],["updgrades","upgrades"],["updgrading","upgrading"],["updrage","upgrade"],["updraged","upgraded"],["updrages","upgrades"],["updraging","upgrading"],["updte","update"],["upercase","uppercase"],["uperclass","upperclass"],["upgade","upgrade"],["upgaded","upgraded"],["upgades","upgrades"],["upgading","upgrading"],["upgarade","upgrade"],["upgaraded","upgraded"],["upgarades","upgrades"],["upgarading","upgrading"],["upgarde","upgrade"],["upgarded","upgraded"],["upgardes","upgrades"],["upgarding","upgrading"],["upgarte","upgrade"],["upgarted","upgraded"],["upgartes","upgrades"],["upgarting","upgrading"],["upgerade","upgrade"],["upgeraded","upgraded"],["upgerades","upgrades"],["upgerading","upgrading"],["upgradablilty","upgradability"],["upgradde","upgrade"],["upgradded","upgraded"],["upgraddes","upgrades"],["upgradding","upgrading"],["upgradei","upgrade"],["upgradingn","upgrading"],["upgrate","upgrade"],["upgrated","upgraded"],["upgrates","upgrades"],["upgrating","upgrading"],["upholstry","upholstery"],["uplad","upload"],["upladaded","uploaded"],["upladed","uploaded"],["uplader","uploader"],["upladers","uploaders"],["uplading","uploading"],["uplads","uploads"],["uplaod","upload"],["uplaodaded","uploaded"],["uplaoded","uploaded"],["uplaoder","uploader"],["uplaoders","uploaders"],["uplaodes","uploads"],["uplaoding","uploading"],["uplaods","uploads"],["upliad","upload"],["uplod","upload"],["uplodaded","uploaded"],["uploded","uploaded"],["uploder","uploader"],["uploders","uploaders"],["uploding","uploading"],["uplods","uploads"],["uppler","upper"],["uppon","upon"],["upported","supported"],["upporterd","supported"],["uppper","upper"],["uppstream","upstream"],["uppstreamed","upstreamed"],["uppstreamer","upstreamer"],["uppstreaming","upstreaming"],["uppstreams","upstreams"],["uppwards","upwards"],["uprade","upgrade"],["upraded","upgraded"],["uprades","upgrades"],["uprading","upgrading"],["uprgade","upgrade"],["uprgaded","upgraded"],["uprgades","upgrades"],["uprgading","upgrading"],["upsream","upstream"],["upsreamed","upstreamed"],["upsreamer","upstreamer"],["upsreaming","upstreaming"],["upsreams","upstreams"],["upsrteam","upstream"],["upsrteamed","upstreamed"],["upsrteamer","upstreamer"],["upsrteaming","upstreaming"],["upsrteams","upstreams"],["upsteam","upstream"],["upsteamed","upstreamed"],["upsteamer","upstreamer"],["upsteaming","upstreaming"],["upsteams","upstreams"],["upsteram","upstream"],["upsteramed","upstreamed"],["upsteramer","upstreamer"],["upsteraming","upstreaming"],["upsterams","upstreams"],["upstread","upstream"],["upstreamedd","upstreamed"],["upstreammed","upstreamed"],["upstreammer","upstreamer"],["upstreamming","upstreaming"],["upstreem","upstream"],["upstreemed","upstreamed"],["upstreemer","upstreamer"],["upstreeming","upstreaming"],["upstreems","upstreams"],["upstrema","upstream"],["upsupported","unsupported"],["uptadeable","updatable"],["uptdate","update"],["uptim","uptime"],["uptions","options"],["uptodate","up-to-date"],["uptodateness","up-to-dateness"],["uptream","upstream"],["uptreamed","upstreamed"],["uptreamer","upstreamer"],["uptreaming","upstreaming"],["uptreams","upstreams"],["uqest","quest"],["uqests","quests"],["urrlib","urllib"],["usag","usage"],["usal","usual"],["usally","usually"],["uscaled","unscaled"],["useability","usability"],["useable","usable"],["useage","usage"],["usebility","usability"],["useble","usable"],["useed","used"],["usees","uses"],["usefl","useful"],["usefule","useful"],["usefulfor","useful for"],["usefull","useful"],["usefullness","usefulness"],["usefult","useful"],["usefuly","usefully"],["usefutl","useful"],["usege","usage"],["useing","using"],["user-defiend","user-defined"],["user-defiened","user-defined"],["usera","users"],["userame","username"],["userames","usernames"],["userapace","userspace"],["userful","useful"],["userpace","userspace"],["userpsace","userspace"],["usersapce","userspace"],["userspase","userspace"],["usesfull","useful"],["usespace","userspace"],["usetnet","Usenet"],["usibility","usability"],["usible","usable"],["usig","using"],["usigned","unsigned"],["usiing","using"],["usin","using"],["usind","using"],["usinging","using"],["usinng","using"],["usng","using"],["usnig","using"],["usptart","upstart"],["usptarts","upstarts"],["usseful","useful"],["ussual","usual"],["ussuall","usual"],["ussually","usually"],["usuable","usable"],["usuage","usage"],["usuallly","usually"],["usualy","usually"],["usualyl","usually"],["usue","use"],["usued","used"],["usueful","useful"],["usuer","user"],["usuing","using"],["usupported","unsupported"],["ususal","usual"],["ususally","usually"],["UTF8ness","UTF-8-ness"],["utiilties","utilities"],["utilies","utilities"],["utililties","utilities"],["utilis","utilise"],["utilisa","utilise"],["utilisaton","utilisation"],["utilites","utilities"],["utilitisation","utilisation"],["utilitise","utilise"],["utilitises","utilises"],["utilitising","utilising"],["utilitiy","utility"],["utilitization","utilization"],["utilitize","utilize"],["utilitizes","utilizes"],["utilitizing","utilizing"],["utiliz","utilize"],["utiliza","utilize"],["utilizaton","utilization"],["utillities","utilities"],["utilties","utilities"],["utiltities","utilities"],["utiltity","utility"],["utilty","utility"],["utitity","utility"],["utitlities","utilities"],["utitlity","utility"],["utitlty","utility"],["utlities","utilities"],["utlity","utility"],["utput","output"],["utputs","outputs"],["uupload","upload"],["uupper","upper"],["vaalues","values"],["vaccum","vacuum"],["vaccume","vacuum"],["vaccuum","vacuum"],["vacinity","vicinity"],["vactor","vector"],["vactors","vectors"],["vacumme","vacuum"],["vacuosly","vacuously"],["vaelues","values"],["vaguaries","vagaries"],["vaiable","variable"],["vaiables","variables"],["vaiant","variant"],["vaiants","variants"],["vaidate","validate"],["vaieties","varieties"],["vailable","available"],["vaild","valid"],["vailidity","validity"],["vailidty","validity"],["vairable","variable"],["vairables","variables"],["vairous","various"],["vakue","value"],["vakued","valued"],["vakues","values"],["valailable","available"],["valdate","validate"],["valetta","valletta"],["valeu","value"],["valiator","validator"],["validade","validate"],["validata","validate"],["validataion","validation"],["validaterelase","validaterelease"],["valide","valid"],["valididty","validity"],["validing","validating"],["validte","validate"],["validted","validated"],["validtes","validates"],["validting","validating"],["validtion","validation"],["valied","valid"],["valies","values"],["valif","valid"],["valitdity","validity"],["valkues","values"],["vallgrind","valgrind"],["vallid","valid"],["vallidation","validation"],["vallidity","validity"],["vallue","value"],["vallues","values"],["valsues","values"],["valtage","voltage"],["valtages","voltages"],["valu","value"],["valuble","valuable"],["valudes","values"],["value-to-pack","value to pack"],["valueable","valuable"],["valuess","values"],["valuie","value"],["valulation","valuation"],["valulations","valuations"],["valule","value"],["valuled","valued"],["valules","values"],["valuling","valuing"],["vanishs","vanishes"],["varable","variable"],["varables","variables"],["varaiable","variable"],["varaiables","variables"],["varaiance","variance"],["varaiation","variation"],["varaible","variable"],["varaibles","variables"],["varaint","variant"],["varaints","variants"],["varation","variation"],["varations","variations"],["variabble","variable"],["variabbles","variables"],["variabe","variable"],["variabel","variable"],["variabele","variable"],["variabes","variables"],["variabla","variable"],["variablen","variable"],["varialbe","variable"],["varialbes","variables"],["varialbles","variables"],["varian","variant"],["variantions","variations"],["variatinos","variations"],["variationnal","variational"],["variatoin","variation"],["variatoins","variations"],["variavle","variable"],["variavles","variables"],["varibable","variable"],["varibables","variables"],["varibale","variable"],["varibales","variables"],["varibaless","variables"],["varibel","variable"],["varibels","variables"],["varibility","variability"],["variblae","variable"],["variblaes","variables"],["varible","variable"],["varibles","variables"],["varience","variance"],["varient","variant"],["varients","variants"],["varierty","variety"],["variey","variety"],["varify","verify"],["variing","varying"],["varing","varying"],["varities","varieties"],["varity","variety"],["variuos","various"],["variuous","various"],["varius","various"],["varn","warn"],["varned","warned"],["varning","warning"],["varnings","warnings"],["varns","warns"],["varoius","various"],["varous","various"],["varously","variously"],["varriance","variance"],["varriances","variances"],["vartical","vertical"],["vartically","vertically"],["vas","was"],["vasall","vassal"],["vasalls","vassals"],["vaue","value"],["vaule","value"],["vauled","valued"],["vaules","values"],["vauling","valuing"],["vavle","valve"],["vavlue","value"],["vavriable","variable"],["vavriables","variables"],["vbsrcript","vbscript"],["vebrose","verbose"],["vecotr","vector"],["vecotrs","vectors"],["vectices","vertices"],["vectore","vector"],["vectores","vectors"],["vectorss","vectors"],["vectror","vector"],["vectrors","vectors"],["vecvtor","vector"],["vecvtors","vectors"],["vedio","video"],["vefiry","verify"],["vegatarian","vegetarian"],["vegeterian","vegetarian"],["vegitable","vegetable"],["vegitables","vegetables"],["vegtable","vegetable"],["vehicule","vehicle"],["veify","verify"],["veiw","view"],["veiwed","viewed"],["veiwer","viewer"],["veiwers","viewers"],["veiwing","viewing"],["veiwings","viewings"],["veiws","views"],["vektor","vector"],["vektors","vectors"],["velidate","validate"],["vell","well"],["velociries","velocities"],["velociry","velocity"],["vender","vendor"],["venders","vendors"],["venemous","venomous"],["vengance","vengeance"],["vengence","vengeance"],["verbaitm","verbatim"],["verbatum","verbatim"],["verbous","verbose"],["verbouse","verbose"],["verbously","verbosely"],["verbse","verbose"],["verctor","vector"],["verctors","vectors"],["veresion","version"],["veresions","versions"],["verfication","verification"],["verficiation","verification"],["verfier","verifier"],["verfies","verifies"],["verfifiable","verifiable"],["verfification","verification"],["verfifications","verifications"],["verfified","verified"],["verfifier","verifier"],["verfifiers","verifiers"],["verfifies","verifies"],["verfify","verify"],["verfifying","verifying"],["verfires","verifies"],["verfiy","verify"],["verfiying","verifying"],["verfy","verify"],["verfying","verifying"],["verical","vertical"],["verifcation","verification"],["verifiaction","verification"],["verificaion","verification"],["verificaions","verifications"],["verificiation","verification"],["verificiations","verifications"],["verifieing","verifying"],["verifing","verifying"],["verifiy","verify"],["verifiying","verifying"],["verifty","verify"],["veriftying","verifying"],["verifyied","verified"],["verion","version"],["verions","versions"],["veriosn","version"],["veriosns","versions"],["verious","various"],["verison","version"],["verisoned","versioned"],["verisoner","versioner"],["verisoners","versioners"],["verisoning","versioning"],["verisons","versions"],["veritcal","vertical"],["veritcally","vertically"],["veritical","vertical"],["verly","very"],["vermillion","vermilion"],["verndor","vendor"],["verrical","vertical"],["verry","very"],["vershin","version"],["versin","version"],["versino","version"],["versinos","versions"],["versins","versions"],["versio","version"],["versiob","version"],["versioed","versioned"],["versioing","versioning"],["versiom","version"],["versionaddded","versionadded"],["versionm","version"],["versionms","versions"],["versionned","versioned"],["versionning","versioning"],["versios","versions"],["versitilaty","versatility"],["versitile","versatile"],["versitlity","versatility"],["versoin","version"],["versoion","version"],["versoions","versions"],["verson","version"],["versoned","versioned"],["versons","versions"],["vertextes","vertices"],["vertexts","vertices"],["vertial","vertical"],["verticall","vertical"],["verticaly","vertically"],["verticies","vertices"],["verticla","vertical"],["verticlealign","verticalalign"],["vertiece","vertex"],["vertieces","vertices"],["vertifiable","verifiable"],["vertification","verification"],["vertifications","verifications"],["vertify","verify"],["vertikal","vertical"],["vertix","vertex"],["vertixes","vertices"],["vertixs","vertices"],["vertx","vertex"],["veryfieng","verifying"],["veryfy","verify"],["veryified","verified"],["veryifies","verifies"],["veryify","verify"],["veryifying","verifying"],["vesion","version"],["vesions","versions"],["vetex","vertex"],["vetexes","vertices"],["vetod","vetoed"],["vetween","between"],["vew","view"],["veyr","very"],["vhild","child"],["viatnamese","Vietnamese"],["vice-fersa","vice-versa"],["vice-wersa","vice-versa"],["vicefersa","vice-versa"],["viceversa","vice-versa"],["vicewersa","vice-versa"],["videostreamming","videostreaming"],["viee","view"],["viees","views"],["vieport","viewport"],["vieports","viewports"],["vietnamesea","Vietnamese"],["viewtransfromation","viewtransformation"],["vigilence","vigilance"],["vigourous","vigorous"],["vill","will"],["villian","villain"],["villification","vilification"],["villify","vilify"],["vincinity","vicinity"],["vinrator","vibrator"],["vioalte","violate"],["vioaltion","violation"],["violentce","violence"],["violoated","violated"],["violoating","violating"],["violoation","violation"],["violoations","violations"],["virtal","virtual"],["virtaul","virtual"],["virtical","vertical"],["virtiual","virtual"],["virttual","virtual"],["virttually","virtually"],["virtualisaion","virtualisation"],["virtualisaiton","virtualisation"],["virtualizaion","virtualization"],["virtualizaiton","virtualization"],["virtualiziation","virtualization"],["virtualy","virtually"],["virtualzation","virtualization"],["virtuell","virtual"],["virtural","virtual"],["virture","virtue"],["virutal","virtual"],["virutalenv","virtualenv"],["virutalisation","virtualisation"],["virutalise","virtualise"],["virutalised","virtualised"],["virutalization","virtualization"],["virutalize","virtualize"],["virutalized","virtualized"],["virutally","virtually"],["virutals","virtuals"],["virutual","virtual"],["visability","visibility"],["visable","visible"],["visably","visibly"],["visbility","visibility"],["visble","visible"],["visblie","visible"],["visbly","visibly"],["visiable","visible"],["visiably","visibly"],["visibale","visible"],["visibibilty","visibility"],["visibile","visible"],["visibililty","visibility"],["visibilit","visibility"],["visibilty","visibility"],["visibl","visible"],["visibleable","visible"],["visibles","visible"],["visiblities","visibilities"],["visiblity","visibility"],["visiblle","visible"],["visinble","visible"],["visious","vicious"],["visisble","visible"],["visiter","visitor"],["visiters","visitors"],["visitng","visiting"],["visivble","visible"],["vissible","visible"],["visted","visited"],["visting","visiting"],["vistors","visitors"],["visuab","visual"],["visuabisation","visualisation"],["visuabise","visualise"],["visuabised","visualised"],["visuabises","visualises"],["visuabization","visualization"],["visuabize","visualize"],["visuabized","visualized"],["visuabizes","visualizes"],["visuables","visuals"],["visuably","visually"],["visuabs","visuals"],["visuaisation","visualisation"],["visuaise","visualise"],["visuaised","visualised"],["visuaises","visualises"],["visuaization","visualization"],["visuaize","visualize"],["visuaized","visualized"],["visuaizes","visualizes"],["visuale","visual"],["visuales","visuals"],["visualizaion","visualization"],["visualizaiton","visualization"],["visualizaitons","visualizations"],["visualizaton","visualization"],["visualizatons","visualizations"],["visuallisation","visualisation"],["visuallization","visualization"],["visualy","visually"],["visualzation","visualization"],["vitories","victories"],["vitrual","virtual"],["vitrually","virtually"],["vitual","virtual"],["viusally","visually"],["viusualisation","visualisation"],["viwe","view"],["viwed","viewed"],["viweed","viewed"],["viwer","viewer"],["viwers","viewers"],["viwes","views"],["vizualisation","visualisation"],["vizualise","visualise"],["vizualised","visualised"],["vizualize","visualize"],["vizualized","visualized"],["vlarge","large"],["vlaue","value"],["vlaues","values"],["vlone","clone"],["vloned","cloned"],["vlones","clones"],["vlues","values"],["voif","void"],["volatage","voltage"],["volatages","voltages"],["volatge","voltage"],["volatges","voltages"],["volcanoe","volcano"],["volenteer","volunteer"],["volenteered","volunteered"],["volenteers","volunteers"],["voleyball","volleyball"],["volontary","voluntary"],["volonteer","volunteer"],["volonteered","volunteered"],["volonteering","volunteering"],["volonteers","volunteers"],["volounteer","volunteer"],["volounteered","volunteered"],["volounteering","volunteering"],["volounteers","volunteers"],["volumn","volume"],["volumne","volume"],["volums","volume"],["volxel","voxel"],["volxels","voxels"],["vonfig","config"],["vould","would"],["vreity","variety"],["vresion","version"],["vrey","very"],["vriable","variable"],["vriables","variables"],["vriety","variety"],["vrifier","verifier"],["vrifies","verifies"],["vrify","verify"],["vrilog","Verilog"],["vritual","virtual"],["vritualenv","virtualenv"],["vritualisation","virtualisation"],["vritualise","virtualise"],["vritualization","virtualization"],["vritualize","virtualize"],["vrituoso","virtuoso"],["vrsion","version"],["vrsions","versions"],["Vulacn","Vulcan"],["Vulakn","Vulkan"],["vulbearable","vulnerable"],["vulbearabule","vulnerable"],["vulbearbilities","vulnerabilities"],["vulbearbility","vulnerability"],["vulbearbuilities","vulnerabilities"],["vulbearbuility","vulnerability"],["vulberabilility","vulnerability"],["vulberabilites","vulnerabilities"],["vulberabiliti","vulnerability"],["vulberabilitie","vulnerability"],["vulberabilitis","vulnerabilities"],["vulberabilitiy","vulnerability"],["vulberabillities","vulnerabilities"],["vulberabillity","vulnerability"],["vulberabilties","vulnerabilities"],["vulberabilty","vulnerability"],["vulberablility","vulnerability"],["vulberabuilility","vulnerability"],["vulberabuilites","vulnerabilities"],["vulberabuiliti","vulnerability"],["vulberabuilitie","vulnerability"],["vulberabuilities","vulnerabilities"],["vulberabuilitis","vulnerabilities"],["vulberabuilitiy","vulnerability"],["vulberabuility","vulnerability"],["vulberabuillities","vulnerabilities"],["vulberabuillity","vulnerability"],["vulberabuilties","vulnerabilities"],["vulberabuilty","vulnerability"],["vulberabule","vulnerable"],["vulberabulility","vulnerability"],["vulberbilities","vulnerabilities"],["vulberbility","vulnerability"],["vulberbuilities","vulnerabilities"],["vulberbuility","vulnerability"],["vulerabilities","vulnerabilities"],["vulerability","vulnerability"],["vulerable","vulnerable"],["vulerabuilities","vulnerabilities"],["vulerabuility","vulnerability"],["vulerabule","vulnerable"],["vulernabilities","vulnerabilities"],["vulernability","vulnerability"],["vulernable","vulnerable"],["vulnarabilities","vulnerabilities"],["vulnarability","vulnerability"],["vulneabilities","vulnerabilities"],["vulneability","vulnerability"],["vulneable","vulnerable"],["vulnearabilities","vulnerabilities"],["vulnearability","vulnerability"],["vulnearable","vulnerable"],["vulnearabule","vulnerable"],["vulnearbilities","vulnerabilities"],["vulnearbility","vulnerability"],["vulnearbuilities","vulnerabilities"],["vulnearbuility","vulnerability"],["vulnerabilies","vulnerabilities"],["vulnerabiliies","vulnerabilities"],["vulnerabilility","vulnerability"],["vulnerabilites","vulnerabilities"],["vulnerabiliti","vulnerability"],["vulnerabilitie","vulnerability"],["vulnerabilitis","vulnerabilities"],["vulnerabilitiy","vulnerability"],["vulnerabilitu","vulnerability"],["vulnerabiliy","vulnerability"],["vulnerabillities","vulnerabilities"],["vulnerabillity","vulnerability"],["vulnerabilties","vulnerabilities"],["vulnerabilty","vulnerability"],["vulnerablility","vulnerability"],["vulnerablities","vulnerabilities"],["vulnerablity","vulnerability"],["vulnerabuilility","vulnerability"],["vulnerabuilites","vulnerabilities"],["vulnerabuiliti","vulnerability"],["vulnerabuilitie","vulnerability"],["vulnerabuilities","vulnerabilities"],["vulnerabuilitis","vulnerabilities"],["vulnerabuilitiy","vulnerability"],["vulnerabuility","vulnerability"],["vulnerabuillities","vulnerabilities"],["vulnerabuillity","vulnerability"],["vulnerabuilties","vulnerabilities"],["vulnerabuilty","vulnerability"],["vulnerabule","vulnerable"],["vulnerabulility","vulnerability"],["vulnerarbilities","vulnerabilities"],["vulnerarbility","vulnerability"],["vulnerarble","vulnerable"],["vulnerbilities","vulnerabilities"],["vulnerbility","vulnerability"],["vulnerbuilities","vulnerabilities"],["vulnerbuility","vulnerability"],["vulnreabilities","vulnerabilities"],["vulnreability","vulnerability"],["vunerabilities","vulnerabilities"],["vunerability","vulnerability"],["vunerable","vulnerable"],["vyer","very"],["vyre","very"],["waht","what"],["wainting","waiting"],["waisline","waistline"],["waislines","waistlines"],["waitting","waiting"],["wakup","wakeup"],["wallthickness","wall thickness"],["want;s","wants"],["wantto","want to"],["wappers","wrappers"],["warantee","warranty"],["waranties","warranties"],["waranty","warranty"],["wardobe","wardrobe"],["waring","warning"],["warings","warnings"],["warinigs","warnings"],["warining","warning"],["warinings","warnings"],["warks","works"],["warlking","walking"],["warnibg","warning"],["warnibgs","warnings"],["warnig","warning"],["warnign","warning"],["warnigns","warnings"],["warnigs","warnings"],["warniing","warning"],["warniings","warnings"],["warnin","warning"],["warnind","warning"],["warninds","warnings"],["warninf","warning"],["warninfs","warnings"],["warningss","warnings"],["warninig","warning"],["warninigs","warnings"],["warnining","warning"],["warninings","warnings"],["warninng","warning"],["warninngs","warnings"],["warnins","warnings"],["warninsg","warnings"],["warninsgs","warnings"],["warniong","warning"],["warniongs","warnings"],["warnkng","warning"],["warnkngs","warnings"],["warrent","warrant"],["warrents","warrants"],["warrn","warn"],["warrned","warned"],["warrning","warning"],["warrnings","warnings"],["warrriors","warriors"],["was'nt","wasn't"],["was't","wasn't"],["was;t","wasn't"],["wasn;t","wasn't"],["wasnt'","wasn't"],["wasnt","wasn't"],["wasnt;","wasn't"],["wass","was"],["wastefullness","wastefulness"],["watchdong","watchdog"],["watchog","watchdog"],["watermask","watermark"],["wathc","watch"],["wathdog","watchdog"],["wathever","whatever"],["wating","waiting"],["watn","want"],["wavelengh","wavelength"],["wavelenghs","wavelengths"],["wavelenght","wavelength"],["wavelenghts","wavelengths"],["wavelnes","wavelines"],["wayoint","waypoint"],["wayoints","waypoints"],["wayword","wayward"],["weahter","weather"],["weahters","weathers"],["weaponary","weaponry"],["weas","was"],["webage","webpage"],["webbased","web-based"],["webiste","website"],["wedensday","Wednesday"],["wednesay","Wednesday"],["wednesdaay","Wednesday"],["wednesdey","Wednesday"],["wednessday","Wednesday"],["wednsday","Wednesday"],["wege","wedge"],["wehere","where"],["wehn","when"],["wehther","whether"],["weigth","weight"],["weigthed","weighted"],["weigths","weights"],["weilded","wielded"],["weill","will"],["weired","weird"],["weitght","weight"],["wel","well"],["wendesday","Wednesday"],["wendsay","Wednesday"],["wendsday","Wednesday"],["wensday","Wednesday"],["were'nt","weren't"],["wereabouts","whereabouts"],["wereas","whereas"],["weree","were"],["werent","weren't"],["werever","wherever"],["wew","we"],["whant","want"],["whants","wants"],["whataver","whatever"],["whatepsace","whitespace"],["whatepsaces","whitespaces"],["whathever","whatever"],["whch","which"],["whcich","which"],["whcih","which"],["wheh","when"],["whehter","whether"],["wheigh","weigh"],["whem","when"],["whenevery","whenever"],["whenn","when"],["whenver","whenever"],["wheras","whereas"],["wherease","whereas"],["whereever","wherever"],["wherether","whether"],["whery","where"],["wheteher","whether"],["whetehr","whether"],["wheter","whether"],["whethe","whether"],["whethter","whether"],["whever","wherever"],["whheel","wheel"],["whhen","when"],["whic","which"],["whicg","which"],["which;s","which's"],["whichs","which's"],["whicht","which"],["whih","which"],["whihc","which"],["whihch","which"],["whike","while"],["whilest","whilst"],["whiltelist","whitelist"],["whiltelisted","whitelisted"],["whiltelisting","whitelisting"],["whiltelists","whitelists"],["whilw","while"],["whioch","which"],["whishlist","wishlist"],["whitch","which"],["whitchever","whichever"],["whitepsace","whitespace"],["whitepsaces","whitespaces"],["whith","with"],["whithin","within"],["whithout","without"],["whitre","white"],["whitspace","whitespace"],["whitspaces","whitespace"],["whlch","which"],["whle","while"],["whlie","while"],["whn","when"],["whne","when"],["whoes","whose"],["whoknows","who knows"],["wholey","wholly"],["whoose","whose"],["whould","would"],["whre","where"],["whta","what"],["whther","whether"],["whtihin","within"],["whyth","with"],["whythout","without"],["wiat","wait"],["wice","vice"],["wice-versa","vice-versa"],["wice-wersa","vice-versa"],["wiceversa","vice-versa"],["wicewersa","vice-versa"],["wich","which"],["widder","wider"],["widesread","widespread"],["widgect","widget"],["widged","widget"],["widghet","widget"],["widghets","widgets"],["widgit","widget"],["widgtes","widgets"],["widht","width"],["widhtpoint","widthpoint"],["widhtpoints","widthpoints"],["widthn","width"],["widthout","without"],["wief","wife"],["wieghed","weighed"],["wieght","weight"],["wieghts","weights"],["wieh","view"],["wierd","weird"],["wierdly","weirdly"],["wierdness","weirdness"],["wieth","width"],["wiew","view"],["wigdet","widget"],["wigdets","widgets"],["wih","with"],["wihch","which"],["wihich","which"],["wihite","white"],["wihle","while"],["wihout","without"],["wiht","with"],["wihtin","within"],["wihtout","without"],["wiil","will"],["wikpedia","wikipedia"],["wilcard","wildcard"],["wilcards","wildcards"],["wilh","will"],["wille","will"],["willingless","willingness"],["willk","will"],["willl","will"],["windo","window"],["windoes","windows"],["windoow","window"],["windoows","windows"],["windos","windows"],["windowz","windows"],["windwo","window"],["windwos","windows"],["winn","win"],["winndow","window"],["winndows","windows"],["winodw","window"],["wipoing","wiping"],["wirh","with"],["wirte","write"],["wirter","writer"],["wirters","writers"],["wirtes","writes"],["wirting","writing"],["wirtten","written"],["wirtual","virtual"],["witable","writeable"],["witdh","width"],["witdhs","widths"],["witdth","width"],["witdths","widths"],["witheld","withheld"],["withh","with"],["withih","within"],["withinn","within"],["withion","within"],["witho","with"],["withoit","without"],["withold","withhold"],["witholding","withholding"],["withon","within"],["withoout","without"],["withot","without"],["withotu","without"],["withou","without"],["withoud","without"],["withoug","without"],["withough","without"],["withought","without"],["withouht","without"],["withount","without"],["withourt","without"],["withous","without"],["withouth","without"],["withouyt","without"],["withput","without"],["withrawal","withdrawal"],["witht","with"],["withthe","with the"],["withtin","within"],["withun","within"],["withuout","without"],["witin","within"],["witk","with"],["witn","with"],["witout","without"],["witrh","with"],["witth","with"],["wiull","will"],["wiyh","with"],["wiyhout","without"],["wiyth","with"],["wizzard","wizard"],["wjat","what"],["wll","will"],["wlll","will"],["wnated","wanted"],["wnating","wanting"],["wnats","wants"],["woh","who"],["wohle","whole"],["woill","will"],["woithout","without"],["wokr","work"],["wokring","working"],["wolrd","world"],["wolrdly","worldly"],["wolrdwide","worldwide"],["wolwide","worldwide"],["won;t","won't"],["wonderfull","wonderful"],["wonderig","wondering"],["wont't","won't"],["woraround","workaround"],["worarounds","workarounds"],["worbench","workbench"],["worbenches","workbenches"],["worchester","Worcester"],["wordlwide","worldwide"],["wordpres","wordpress"],["worfklow","workflow"],["worfklows","workflows"],["worflow","workflow"],["worflows","workflows"],["workaorund","workaround"],["workaorunds","workarounds"],["workaound","workaround"],["workaounds","workarounds"],["workaraound","workaround"],["workaraounds","workarounds"],["workarbound","workaround"],["workaroud","workaround"],["workaroudn","workaround"],["workaroudns","workarounds"],["workarouds","workarounds"],["workarould","workaround"],["workaroung","workaround"],["workaroungs","workarounds"],["workarround","workaround"],["workarrounds","workarounds"],["workarund","workaround"],["workarunds","workarounds"],["workbanch","workbench"],["workbanches","workbenches"],["workbanchs","workbenches"],["workbenchs","workbenches"],["workbennch","workbench"],["workbennches","workbenches"],["workbnech","workbench"],["workbneches","workbenches"],["workboos","workbooks"],["workes","works"],["workfow","workflow"],["workfows","workflows"],["workign","working"],["worklfow","workflow"],["worklfows","workflows"],["workpsace","workspace"],["workpsaces","workspaces"],["workround","workaround"],["workrounds","workarounds"],["workspce","workspace"],["workspsace","workspace"],["workspsaces","workspaces"],["workstaion","workstation"],["workstaions","workstations"],["workstaition","workstation"],["workstaitions","workstations"],["workstaiton","workstation"],["workstaitons","workstations"],["workststion","workstation"],["workststions","workstations"],["worl","world"],["world-reknown","world renown"],["world-reknowned","world renowned"],["worload","workload"],["worloads","workloads"],["worls","world"],["wornged","wronged"],["worngs","wrongs"],["worrry","worry"],["worser","worse"],["worstened","worsened"],["worthwile","worthwhile"],["woth","worth"],["wothout","without"],["wotk","work"],["wotked","worked"],["wotking","working"],["wotks","works"],["woud","would"],["woudl","would"],["woudn't","wouldn't"],["would'nt","wouldn't"],["would't","wouldn't"],["wouldent","wouldn't"],["woulden`t","wouldn't"],["wouldn;t","wouldn't"],["wouldnt'","wouldn't"],["wouldnt","wouldn't"],["wouldnt;","wouldn't"],["wounderful","wonderful"],["wouold","would"],["wouuld","would"],["wqs","was"],["wraapp","wrap"],["wraapped","wrapped"],["wraapper","wrapper"],["wraappers","wrappers"],["wraapping","wrapping"],["wraapps","wraps"],["wraning","warning"],["wranings","warnings"],["wrapepd","wrapped"],["wraper","wrapper"],["wrapp","wrap"],["wrappered","wrapped"],["wrappng","wrapping"],["wrapps","wraps"],["wresters","wrestlers"],["wriet","write"],["writebufer","writebuffer"],["writechetque","writecheque"],["writeing","writing"],["writen","written"],["writet","writes"],["writewr","writer"],["writingm","writing"],["writters","writers"],["writting","writing"],["writtten","written"],["wrkload","workload"],["wrkloads","workloads"],["wrod","word"],["wroet","wrote"],["wrog","wrong"],["wrok","work"],["wroked","worked"],["wrokflow","workflow"],["wrokflows","workflows"],["wroking","working"],["wrokload","workload"],["wrokloads","workloads"],["wroks","works"],["wron","wrong"],["wronf","wrong"],["wront","wrong"],["wrtie","write"],["wrting","writing"],["wsee","see"],["wser","user"],["wth","with"],["wtih","with"],["wtyle","style"],["wuold","would"],["wupport","support"],["wuth","with"],["wuthin","within"],["wya","way"],["wyth","with"],["wythout","without"],["xdescribe","describe"],["xdpf","xpdf"],["xenophoby","xenophobia"],["xepect","expect"],["xepected","expected"],["xepectedly","expectedly"],["xepecting","expecting"],["xepects","expects"],["xgetttext","xgettext"],["xinitiazlize","xinitialize"],["xmdoel","xmodel"],["xour","your"],["xwindows","X"],["xyou","you"],["yaching","yachting"],["yaer","year"],["yaerly","yearly"],["yaers","years"],["yatch","yacht"],["yearm","year"],["yeasr","years"],["yeild","yield"],["yeilded","yielded"],["yeilding","yielding"],["yeilds","yields"],["yeld","yield"],["yelded","yielded"],["yelding","yielding"],["yelds","yields"],["yello","yellow"],["yera","year"],["yeras","years"],["yersa","years"],["yhe","the"],["yieldin","yielding"],["ymbols","symbols"],["yoman","yeoman"],["yomen","yeomen"],["yot","yacht"],["yotube","youtube"],["youforic","euphoric"],["youforically","euphorically"],["youlogy","eulogy"],["yourselfes","yourselves"],["youself","yourself"],["youthinasia","euthanasia"],["ypes","types"],["yrea","year"],["ytou","you"],["yuforic","euphoric"],["yuforically","euphorically"],["yugoslac","yugoslav"],["yuo","you"],["yuor","your"],["yur","your"],["zar","czar"],["zars","czars"],["zeebra","zebra"],["zefer","zephyr"],["zefers","zephyrs"],["zellot","zealot"],["zellots","zealots"],["zemporary","temporary"],["zick-zack","zig-zag"],["zimmap","zipmap"],["zimpaps","zipmaps"],["zink","zinc"],["ziped","zipped"],["ziper","zipper"],["ziping","zipping"],["zlot","slot"],["zombe","zombie"],["zomebie","zombie"],["zoocheenei","zucchinis"],["zoocheeni","zucchini"],["zoocheinei","zucchinis"],["zoocheini","zucchini"],["zookeenee","zucchini"],["zookeenees","zucchinis"],["zookeenei","zucchinis"],["zookeeni","zucchini"],["zookeinee","zucchini"],["zookeinees","zucchinis"],["zookeinei","zucchinis"],["zookeini","zucchini"],["zucheenei","zucchinis"],["zucheeni","zucchini"],["zukeenee","zucchini"],["zukeenees","zucchinis"],["zukeenei","zucchinis"],["zukeeni","zucchini"],["zuser","user"],["zylophone","xylophone"],["zylophones","xylophone"],["__attribyte__","__attribute__"],["__cpluspus","__cplusplus"],["__cpusplus","__cplusplus"],["\xE9valuate","evaluate"],["\u0441ontain","contain"],["\u0441ontained","contained"],["\u0441ontainer","container"],["\u0441ontainers","containers"],["\u0441ontaining","containing"],["\u0441ontainor","container"],["\u0441ontainors","containers"],["\u0441ontains","contains"]]);var Qa=class{constructor(){this.ignoreWords=[]}},Pn=class extends b{constructor(){super({nameKey:"rules.auto-correct-common-misspellings.name",descriptionKey:"rules.auto-correct-common-misspellings.description",type:"Content",ruleIgnoreTypes:[f.yaml,f.code,f.inlineCode,f.math,f.inlineMath,f.link,f.wikiLink,f.tag,f.image,f.url]})}get OptionsClass(){return Qa}apply(t,i){return t.replaceAll(fu,n=>this.replaceWordWithCorrectCasing(n,i))}replaceWordWithCorrectCasing(t,i){let n=t.toLowerCase();if(!Ko.has(n)||i.ignoreWords.includes(n))return t;let r=Ko.get(n);return t.charAt(0)==t.charAt(0).toUpperCase()&&(r=r.charAt(0).toUpperCase()+r.substring(1)),r}get exampleBuilders(){return[new y({description:"Auto-correct misspellings in regular text, but not code blocks, math blocks, YAML, or tags",before:p` --- key: absoltely --- @@ -135,22 +157,56 @@ $2$3`),e=ze(e,a.start.offset,a.end.offset,s)}return e}var y={code:{replaceAction The same $ defenately $ applies to inline math. ${""} #defenately stays the same - `}),new x({description:"Auto-correct misspellings keeps first letter's case",before:p` + `}),new y({description:"Auto-correct misspellings keeps first letter's case",before:p` Accodringly we made sure to update logic to make sure it would handle case sensitivity. `,after:p` Accordingly we made sure to update logic to make sure it would handle case sensitivity. - `}),new x({description:"Links should not be auto-corrected",before:p` + `}),new y({description:"Links should not be auto-corrected",before:p` http://www.Absoltely.com should not be corrected `,after:p` http://www.Absoltely.com should not be corrected - `})]}get optionBuilders(){return[new he({OptionsClass:_a,name:"Ignore Words",description:"A comma separated list of lowercased words to ignore when auto-correcting",optionsKey:"ignoreWords",splitter:gn,separator:", "})]}};Mn=T([z.register],Mn);var Ma=class{};T([z.noSettingControl()],Ma.prototype,"lineContent",2);var rt=class extends z{get OptionsClass(){return Ma}get name(){return"Add Blockquote Indentation on Paste"}get description(){return"Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting"}get type(){return"Paste"}apply(i,t){let n=/^(\s*)((> ?)+) .*/,r=t.lineContent.match(n);if(!r)return i;let a=r[1]??"",s=r[2]??"";return i.trim().replace(/\n/gm,` -${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted into regular text does not get blockquotified with current line being `Part 1 of the sentence`",before:p` + `})]}get optionBuilders(){return[new be({OptionsClass:Qa,nameKey:"rules.auto-correct-common-misspellings.ignore-words.name",descriptionKey:"rules.auto-correct-common-misspellings.ignore-words.description",optionsKey:"ignoreWords",splitter:Mn,separator:", "})]}};Pn=T([b.register],Pn);var Za=class{constructor(){this.style="space"}},lt=class extends b{constructor(){super({nameKey:"rules.blockquote-style.name",descriptionKey:"rules.blockquote-style.description",type:"Content",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[f.html]})}get OptionsClass(){return Za}apply(t,i){return i.style==="space"?Fo(t,this.addSpaceToIndicator):Fo(t,this.removeSpaceFromIndicator)}removeSpaceFromIndicator(t){return t.replace(/>( |\t)+/g,">")}addSpaceToIndicator(t){return t.replace(/>([^ ])/g,"> $1").replace(/>>/g,"> >")}get exampleBuilders(){return[new y({description:"When style = `space`, a space is added to blockquotes missing a space after the indicator",before:p` + >Blockquotes will have a space added if one is not present + > Will be left as is. + ${""} + > Nested blockquotes are also updated + >>Nesting levels are handled correctly + >> Even when only partially needing updates + > >Updated as well + >>>>>>> Is handled too + > > >>> As well + ${""} + > Note that html is not affected in blockquotes + `,after:p` + > Blockquotes will have a space added if one is not present + > Will be left as is. + ${""} + > Nested blockquotes are also updated + > > Nesting levels are handled correctly + > > Even when only partially needing updates + > > Updated as well + > > > > > > > Is handled too + > > > > > As well + ${""} + > Note that html is not affected in blockquotes + `}),new y({description:"When style = `no space`, spaces are removed after a blockquote indicator",before:p` + > Multiple spaces are removed + > > Nesting is handled + > > > > > Especially when multiple levels are involved + > >>> > Even when partially correct already, it is handled + `,after:p` + >Multiple spaces are removed + >>Nesting is handled + >>>>>Especially when multiple levels are involved + >>>>>Even when partially correct already, it is handled + `,options:{style:"no space"}})]}get optionBuilders(){return[new ne({OptionsClass:Za,nameKey:"rules.blockquote-style.style.name",descriptionKey:"rules.blockquote-style.style.description",optionsKey:"style",records:[{value:"space",description:"> indicator is followed by a space"},{value:"no space",description:">indicator is not followed by a space"}]})]}};lt=T([b.register],lt);var Ja=class{};T([b.noSettingControl()],Ja.prototype,"lineContent",2);var ct=class extends b{constructor(){super({nameKey:"rules.add-blockquote-indentation-on-paste.name",descriptionKey:"rules.add-blockquote-indentation-on-paste.description",type:"Paste"})}get OptionsClass(){return Ja}apply(t,i){let n=/^(\s*)((> ?)+) .*/,r=i.lineContent.match(n);if(!r)return t;let a=r[1]??"",s=r[2]??"";return t.trim().replace(/\n/gm,` +${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted into regular text does not get blockquotified with current line being `Part 1 of the sentence`",before:p` was much less likely to succeed, but they tried it anyway. Part 2 was much more interesting. `,after:p` was much less likely to succeed, but they tried it anyway. Part 2 was much more interesting. - `,options:{lineContent:"Part 1 of the sentence"}}),new x({description:"Line being pasted into a blockquote gets blockquotified with current line being `> > `",before:p` + `,options:{lineContent:"Part 1 of the sentence"}}),new y({description:"Line being pasted into a blockquote gets blockquotified with current line being `> > `",before:p` ${""} This content is being added to a blockquote Note that the second line is indented and the surrounding blank lines were trimmed @@ -158,7 +214,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i `,after:p` This content is being added to a blockquote > > Note that the second line is indented and the surrounding blank lines were trimmed - `,options:{lineContent:"> > "}})]}get optionBuilders(){return[]}};rt=T([z.register],rt);var at=class{constructor(){this.style="Title Case";this.ignoreWords=["macOS","iOS","iPhone","iPad","JavaScript","TypeScript","AppleScript","I"];this.lowercaseWords=["a","an","the","aboard","about","abt.","above","abreast","absent","across","after","against","along","aloft","alongside","amid","amidst","mid","midst","among","amongst","anti","apropos","around","round","as","aslant","astride","at","atop","ontop","bar","barring","before","B4","behind","below","beneath","neath","beside","besides","between","'tween","beyond","but","by","chez","circa","c.","ca.","come","concerning","contra","counting","cum","despite","spite","down","during","effective","ere","except","excepting","excluding","failing","following","for","from","in","including","inside","into","less","like","minus","modulo","mod","near","nearer","nearest","next","notwithstanding","of","o'","off","offshore","on","onto","opposite","out","outside","over","o'er","pace","past","pending","per","plus","post","pre","pro","qua","re","regarding","respecting","sans","save","saving","short","since","sub","than","through","thru","throughout","thruout","till","times","to","t'","touching","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","vs.","v.","via","vice","vis-\xE0-vis","wanting","with","w/","w.","c\u0304","within","w/i","without","'thout","w/o","abroad","adrift","aft","afterward","afterwards","ahead","apart","ashore","aside","away","back","backward","backwards","beforehand","downhill","downstage","downstairs","downstream","downward","downwards","downwind","east","eastward","eastwards","forth","forward","forwards","heavenward","heavenwards","hence","henceforth","here","hereby","herein","hereof","hereto","herewith","home","homeward","homewards","indoors","inward","inwards","leftward","leftwards","north","northeast","northward","northwards","northwest","now","onward","onwards","outdoors","outward","outwards","overboard","overhead","overland","overseas","rightward","rightwards","seaward","seawards","skywards","skyward","south","southeast","southwards","southward","southwest","then","thence","thenceforth","there","thereby","therein","thereof","thereto","therewith","together","underfoot","underground","uphill","upstage","upstairs","upstream","upward","upwards","upwind","west","westward","westwards","when","whence","where","whereby","wherein","whereto","wherewith","although","because","considering","given","granted","if","lest","once","provided","providing","seeing","so","supposing","though","unless","whenever","whereas","wherever","while","whilst","ago","according to","as regards","counter to","instead of","owing to","pertaining to","at the behest of","at the expense of","at the hands of","at risk of","at the risk of","at variance with","by dint of","by means of","by virtue of","by way of","for the sake of","for sake of","for lack of","for want of","from want of","in accordance with","in addition to","in case of","in charge of","in compliance with","in conformity with","in contact with","in exchange for","in favor of","in front of","in lieu of","in light of","in the light of","in line with","in place of","in point of","in quest of","in relation to","in regard to","with regard to","in respect to","with respect to","in return for","in search of","in step with","in touch with","in terms of","in the name of","in view of","on account of","on behalf of","on grounds of","on the grounds of","on the part of","on top of","with a view to","with the exception of","\xE0 la","a la","as soon as","as well as","close to","due to","far from","in case","other than","prior to","pursuant to","regardless of","subsequent to","as long as","as much as","as far as","by the time","in as much as","inasmuch","in order to","in order that","even","provide that","if only","whether","whose","whoever","why","how","or not","whatever","what","both","and","or","not only","but also","either","neither","nor","just","rather","no sooner","such","that","yet","is","it"];this.ignoreCasedWords=!0}},Bn=class extends z{get OptionsClass(){return at}get name(){return"Capitalize Headings"}get description(){return"Headings should be formatted with capitalization"}get type(){return"Heading"}apply(i,t){return R([y.code,y.yaml,y.link,y.wikiLink,y.tag],i,n=>n.replace(Ri,r=>{if(t.style==="ALL CAPS")return r.toUpperCase();let a=t.style==="First letter",s=r.match(/\S+/g),o=t.ignoreWords,l=t.lowercaseWords,d=!0;for(let c=1;c > "}})]}get optionBuilders(){return[]}};ct=T([b.register],ct);var dt=class{constructor(){this.style="Title Case";this.ignoreWords=["macOS","iOS","iPhone","iPad","JavaScript","TypeScript","AppleScript","I"];this.lowercaseWords=["a","an","the","aboard","about","abt.","above","abreast","absent","across","after","against","along","aloft","alongside","amid","amidst","mid","midst","among","amongst","anti","apropos","around","round","as","aslant","astride","at","atop","ontop","bar","barring","before","B4","behind","below","beneath","neath","beside","besides","between","'tween","beyond","but","by","chez","circa","c.","ca.","come","concerning","contra","counting","cum","despite","spite","down","during","effective","ere","except","excepting","excluding","failing","following","for","from","in","including","inside","into","less","like","minus","modulo","mod","near","nearer","nearest","next","notwithstanding","of","o'","off","offshore","on","onto","opposite","out","outside","over","o'er","pace","past","pending","per","plus","post","pre","pro","qua","re","regarding","respecting","sans","save","saving","short","since","sub","than","through","thru","throughout","thruout","till","times","to","t'","touching","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","vs.","v.","via","vice","vis-\xE0-vis","wanting","with","w/","w.","c\u0304","within","w/i","without","'thout","w/o","abroad","adrift","aft","afterward","afterwards","ahead","apart","ashore","aside","away","back","backward","backwards","beforehand","downhill","downstage","downstairs","downstream","downward","downwards","downwind","east","eastward","eastwards","forth","forward","forwards","heavenward","heavenwards","hence","henceforth","here","hereby","herein","hereof","hereto","herewith","home","homeward","homewards","indoors","inward","inwards","leftward","leftwards","north","northeast","northward","northwards","northwest","now","onward","onwards","outdoors","outward","outwards","overboard","overhead","overland","overseas","rightward","rightwards","seaward","seawards","skywards","skyward","south","southeast","southwards","southward","southwest","then","thence","thenceforth","there","thereby","therein","thereof","thereto","therewith","together","underfoot","underground","uphill","upstage","upstairs","upstream","upward","upwards","upwind","west","westward","westwards","when","whence","where","whereby","wherein","whereto","wherewith","although","because","considering","given","granted","if","lest","once","provided","providing","seeing","so","supposing","though","unless","whenever","whereas","wherever","while","whilst","ago","according to","as regards","counter to","instead of","owing to","pertaining to","at the behest of","at the expense of","at the hands of","at risk of","at the risk of","at variance with","by dint of","by means of","by virtue of","by way of","for the sake of","for sake of","for lack of","for want of","from want of","in accordance with","in addition to","in case of","in charge of","in compliance with","in conformity with","in contact with","in exchange for","in favor of","in front of","in lieu of","in light of","in the light of","in line with","in place of","in point of","in quest of","in relation to","in regard to","with regard to","in respect to","with respect to","in return for","in search of","in step with","in touch with","in terms of","in the name of","in view of","on account of","on behalf of","on grounds of","on the grounds of","on the part of","on top of","with a view to","with the exception of","\xE0 la","a la","as soon as","as well as","close to","due to","far from","in case","other than","prior to","pursuant to","regardless of","subsequent to","as long as","as much as","as far as","by the time","in as much as","inasmuch","in order to","in order that","even","provide that","if only","whether","whose","whoever","why","how","or not","whatever","what","both","and","or","not only","but also","either","neither","nor","just","rather","no sooner","such","that","yet","is","it"];this.ignoreCasedWords=!0}},ut=class extends b{constructor(){super({nameKey:"rules.capitalize-headings.name",descriptionKey:"rules.capitalize-headings.description",type:"Heading",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[f.code,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return dt}apply(t,i){return t.replace(ji,n=>{if(i.style==="ALL CAPS")return n.toUpperCase();let r=i.style==="First letter",a=n.match(/\S+/g),s=i.ignoreWords,o=i.lowercaseWords,l=!0;for(let d=1;d(n=n.replace(/^---\n+/,`--- + `,options:{style:"ALL CAPS"}})]}get optionBuilders(){return[new ne({OptionsClass:dt,nameKey:"rules.capitalize-headings.style.name",descriptionKey:"rules.capitalize-headings.style.description",optionsKey:"style",records:[{value:"Title Case",description:"Capitalize Using Title Case Rules"},{value:"ALL CAPS",description:"CAPITALIZE THE WHOLE TITLE"},{value:"First letter",description:"Only capitalize the first letter"}]}),new U({OptionsClass:dt,nameKey:"rules.capitalize-headings.ignore-case-words.name",descriptionKey:"rules.capitalize-headings.ignore-case-words.description",optionsKey:"ignoreCasedWords"}),new be({OptionsClass:dt,nameKey:"rules.capitalize-headings.ignore-words.name",descriptionKey:"rules.capitalize-headings.ignore-words.description",optionsKey:"ignoreWords",splitter:Mn,separator:", "}),new be({OptionsClass:dt,nameKey:"rules.capitalize-headings.lowercase-words.name",descriptionKey:"rules.capitalize-headings.lowercase-words.description",optionsKey:"lowercaseWords",splitter:Mn,separator:", "})]}};ut=T([b.register],ut);var Xa=class{constructor(){this.innerNewLines=!1}},Kn=class extends b{constructor(){super({nameKey:"rules.compact-yaml.name",descriptionKey:"rules.compact-yaml.description",type:"Spacing"})}get OptionsClass(){return Xa}apply(t,i){return Te(t,n=>(n=n.replace(/^---\n+/,`--- `),n=n.replace(/\n+---/,` ----`),t.innerNewLines&&(n=n.replaceAll(/\n{2,}/g,` -`)),n))}get exampleBuilders(){return[new x({description:"Remove blank lines at the start and end of the YAML",before:p` +---`),i.innerNewLines&&(n=n.replaceAll(/\n{2,}/g,` +`)),n))}get exampleBuilders(){return[new y({description:"Remove blank lines at the start and end of the YAML",before:p` --- ${""} date: today @@ -203,7 +259,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i ${""} title: unchanged without inner new lines turned on --- - `}),new x({description:"Remove blank lines anywhere in YAML with inner new lines set to true",before:p` + `}),new y({description:"Remove blank lines anywhere in YAML with inner new lines set to true",before:p` --- ${""} date: today @@ -227,9 +283,9 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i ${""} ${""} Body content here. - `,options:{innerNewLines:!0}})]}get optionBuilders(){return[new U({OptionsClass:Ba,name:"Inner New Lines",description:"Remove new lines that are not at the start or the end of the YAML",optionsKey:"innerNewLines"})]}};In=T([z.register],In);var co=class{},Fn=class extends z{get OptionsClass(){return co}get name(){return"Consecutive blank lines"}get description(){return"There should be at most one consecutive blank line."}get type(){return"Spacing"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag],i,n=>n.replace(/(\n([\t\v\f\r \u00a0\u2000-\u200b\u2028-\u2029\u3000]+)?){2,}\n/g,` + `,options:{innerNewLines:!0}})]}get optionBuilders(){return[new U({OptionsClass:Xa,nameKey:"rules.compact-yaml.inner-new-lines.name",descriptionKey:"rules.compact-yaml.inner-new-lines.description",optionsKey:"innerNewLines"})]}};Kn=T([b.register],Kn);var $o=class{},$n=class extends b{constructor(){super({nameKey:"rules.consecutive-blank-lines.name",descriptionKey:"rules.consecutive-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return $o}apply(t,i){return t.replace(/(\n([\t\v\f\r \u00a0\u2000-\u200b\u2028-\u2029\u3000]+)?){2,}\n/g,` -`))}get exampleBuilders(){return[new x({description:"",before:p` +`)}get exampleBuilders(){return[new y({description:"",before:p` Some text ${""} ${""} @@ -238,13 +294,13 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i Some text ${""} Some more text - `})]}get optionBuilders(){return[]}};Fn=T([z.register],Fn);var uo=class{},Rn=class extends z{get OptionsClass(){return uo}get name(){return"Convert Bullet List Markers"}get description(){return"Converts common bullet list marker symbols to markdown list markers."}get type(){return"Content"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag],i,n=>n.replace(/^([^\S\n]*)([•§])([^\S\n]*)/gm,"$1-$3"))}get exampleBuilders(){return[new x({description:"Converts \u2022",before:p` + `})]}get optionBuilders(){return[]}};$n=T([b.register],$n);var Ho=class{},Hn=class extends b{constructor(){super({nameKey:"rules.convert-bullet-list-markers.name",descriptionKey:"rules.convert-bullet-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Ho}apply(t,i){return t.replace(/^([^\S\n]*)([•§])([^\S\n]*)/gm,"$1-$3")}get exampleBuilders(){return[new y({description:"Converts \u2022",before:p` • item 1 • item 2 `,after:p` - item 1 - item 2 - `}),new x({description:"Converts \xA7",before:p` + `}),new y({description:"Converts \xA7",before:p` • item 1 § item 2 § item 3 @@ -252,7 +308,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i - item 1 - item 2 - item 3 - `})]}get optionBuilders(){return[]}};Rn=T([z.register],Rn);var Ia=class{constructor(){this.tabsize=4}},jn=class extends z{get OptionsClass(){return Ia}get name(){return"Convert Spaces to Tabs"}get description(){return"Converts leading spaces to tabs."}get type(){return"Spacing"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag],i,n=>{let r=String(t.tabsize),a=new RegExp("^( *) {"+String(r)+"}","gm");for(;n.match(a)!=null;)n=n.replace(a,"$1 ");return n})}get exampleBuilders(){return[new x({description:"Converting spaces to tabs with `tabsize = 3`",before:p` + `})]}get optionBuilders(){return[]}};Hn=T([b.register],Hn);var es=class{constructor(){this.tabsize=4}},Yn=class extends b{constructor(){super({nameKey:"rules.convert-spaces-to-tabs.name",descriptionKey:"rules.convert-spaces-to-tabs.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return es}apply(t,i){let n=String(i.tabsize),r=new RegExp("^( *) {"+String(n)+"}","gm");for(;t.match(r)!=null;)t=t.replace(r,"$1 ");return t}get exampleBuilders(){return[new y({description:"Converting spaces to tabs with `tabsize = 3`",before:p` - text with no indention - text indented with 3 spaces - text with no indention @@ -262,7 +318,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i \t- text indented with 3 spaces - text with no indention \t\t- text indented with 6 spaces - `,options:{tabsize:3}})]}get optionBuilders(){return[new La({OptionsClass:Ia,name:"Tabsize",description:"Number of spaces that will be converted to a tab",optionsKey:"tabsize"})]}};jn=T([z.register],jn);var Fa=class{constructor(){this.style="consistent"}},Dn=class extends z{get OptionsClass(){return Fa}get name(){return"Emphasis Style"}get description(){return"Makes sure the emphasis style is consistent."}get type(){return"Content"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag,y.math,y.inlineMath],i,n=>Ca(n,t.style,"emphasis"))}get exampleBuilders(){return[new x({description:"Emphasis indicators should use underscores when style is set to 'underscore'",before:p` + `,options:{tabsize:3}})]}get optionBuilders(){return[new Ua({OptionsClass:es,nameKey:"rules.convert-spaces-to-tabs.tabsize.name",descriptionKey:"rules.convert-spaces-to-tabs.tabsize.description",optionsKey:"tabsize"})]}};Yn=T([b.register],Yn);var is=class{constructor(){this.style="consistent"}},Wn=class extends b{constructor(){super({nameKey:"rules.emphasis-style.name",descriptionKey:"rules.emphasis-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.math,f.inlineMath]})}get OptionsClass(){return is}apply(t,i){return qa(t,i.style,"emphasis")}get exampleBuilders(){return[new y({description:"Emphasis indicators should use underscores when style is set to 'underscore'",before:p` # Emphasis Cases ${""} *Test emphasis* @@ -292,7 +348,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i ${""} * List Item1 with _emphasized text_ * List Item2 - `,options:{style:"underscore"}}),new x({description:"Emphasis indicators should use asterisks when style is set to 'asterisk'",before:p` + `,options:{style:"underscore"}}),new y({description:"Emphasis indicators should use asterisks when style is set to 'asterisk'",before:p` # Emphasis Cases ${""} _Test emphasis_ @@ -316,7 +372,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i This is __*nested emphasis* and ending bold__ ${""} __Test bold__ - `,options:{style:"asterisk"}}),new x({description:"Emphasis indicators should use consistent style based on first emphasis indicator in a file when style is set to 'consistent'",before:p` + `,options:{style:"asterisk"}}),new y({description:"Emphasis indicators should use consistent style based on first emphasis indicator in a file when style is set to 'consistent'",before:p` # Emphasis First Emphasis Is an Asterisk ${""} *First emphasis* @@ -338,7 +394,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i This is ***nested emphasis* and ending bold** ${""} __Test bold__ - `,options:{style:"consistent"}}),new x({description:"Emphasis indicators should use consistent style based on first emphasis indicator in a file when style is set to 'consistent'",before:p` + `,options:{style:"consistent"}}),new y({description:"Emphasis indicators should use consistent style based on first emphasis indicator in a file when style is set to 'consistent'",before:p` # Emphasis First Emphasis Is an Underscore ${""} **_First emphasis_** @@ -360,7 +416,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i This is ___nested emphasis_ and ending bold__ ${""} __Test bold__ - `,options:{style:"consistent"}})]}get optionBuilders(){return[new ve({OptionsClass:Fa,name:"Style",description:"The style used to denote emphasized content",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of emphasis is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure * is the emphasis indicator"},{value:"underscore",description:"Makes sure _ is the emphasis indicator"}]})]}};Dn=T([z.register],Dn);var po=class{},Pn=class extends z{get OptionsClass(){return po}get name(){return"Empty Line Around Blockquotes"}get description(){return"Ensures that there is an empty line around blockquotes unless they start or end a document. **Note that an empty line is either one less level of nesting for blockquotes or a newline character.**"}get type(){return"Spacing"}apply(i,t){return rd(i)}get exampleBuilders(){return[new x({description:"Blockquotes that start a document do not get an empty line before them.",before:p` + `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:is,nameKey:"rules.emphasis-style.style.name",descriptionKey:"rules.emphasis-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of emphasis is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure * is the emphasis indicator"},{value:"underscore",description:"Makes sure _ is the emphasis indicator"}]})]}};Wn=T([b.register],Wn);var Yo=class{},Vn=class extends b{constructor(){super({nameKey:"rules.empty-line-around-blockquotes.name",descriptionKey:"rules.empty-line-around-blockquotes.description",type:"Spacing"})}get OptionsClass(){return Yo}apply(t,i){return ru(t)}get exampleBuilders(){return[new y({description:"Blockquotes that start a document do not get an empty line before them.",before:p` > Quote content here > quote content continued # Title here @@ -369,7 +425,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i > quote content continued ${""} # Title here - `}),new x({description:"Blockquotes that end a document do not get an empty line after them.",before:p` + `}),new y({description:"Blockquotes that end a document do not get an empty line after them.",before:p` # Heading 1 > Quote content here > quote content continued @@ -378,7 +434,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i ${""} > Quote content here > quote content continued - `}),new x({description:"Blockquotes that are nested have the proper empty line added",before:p` + `}),new y({description:"Blockquotes that are nested have the proper empty line added",before:p` # Make sure that nested blockquotes are accounted for correctly > Quote content here > quote content continued @@ -406,7 +462,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i ${""} > > Quote content here > > quote content continued - `})]}get optionBuilders(){return[]}};Pn=T([z.register],Pn);var mo=class{},$n=class extends z{get OptionsClass(){return mo}get name(){return"Empty Line Around Code Fences"}get description(){return"Ensures that there is an empty line around code fences unless they start or end a document."}get type(){return"Spacing"}apply(i,t){return td(i)}get exampleBuilders(){return[new x({description:"Fenced code blocks that start a document do not get an empty line before them.",before:p` + `})]}get optionBuilders(){return[]}};Vn=T([b.register],Vn);var Wo=class{},Un=class extends b{constructor(){super({nameKey:"rules.empty-line-around-code-fences.name",descriptionKey:"rules.empty-line-around-code-fences.description",type:"Spacing"})}get OptionsClass(){return Wo}apply(t,i){return tu(t)}get exampleBuilders(){return[new y({description:"Fenced code blocks that start a document do not get an empty line before them.",before:p` \`\`\` js var temp = 'text'; // this is a code block @@ -419,7 +475,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i \`\`\` ${""} Text after code block. - `}),new x({description:"Fenced code blocks that end a document do not get an empty line after them.",before:p` + `}),new y({description:"Fenced code blocks that end a document do not get an empty line after them.",before:p` # Heading 1 \`\`\` Here is a code block @@ -430,7 +486,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i \`\`\` Here is a code block \`\`\` - `}),new x({description:"Fenced code blocks that are in a blockquote have the proper empty line added",before:p` + `}),new y({description:"Fenced code blocks that are in a blockquote have the proper empty line added",before:p` # Make sure that code blocks in blockquotes are accounted for correctly > \`\`\`js > var text = 'this is some text'; @@ -449,7 +505,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i > > \`\`\` `,after:p` # Make sure that code blocks in blockquotes are accounted for correctly - > + > \`\`\`js > var text = 'this is some text'; > \`\`\` @@ -457,17 +513,15 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i > \`\`\`js > var other text = 'this is more text'; > \`\`\` - > ${""} **Note that the blanks blockquote lines added do not have whitespace after them** ${""} # Doubly nested code block ${""} - > > > > \`\`\`js > > var other text = 'this is more text'; > > \`\`\` - `}),new x({description:"Nested fenced code blocks get empty lines added around them",before:p` + `}),new y({description:"Nested fenced code blocks get empty lines added around them",before:p` \`\`\`markdown # Header ${""} @@ -484,7 +538,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i \`\`\`\` ${""} \`\`\` - `})]}get optionBuilders(){return[]}};$n=T([z.register],$n);var Ra=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};T([z.noSettingControl()],Ra.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var Nn=class extends z{get OptionsClass(){return Ra}get name(){return"Empty Line Around Math Blocks"}get description(){return"Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."}get type(){return"Spacing"}apply(i,t){return R([y.yaml,y.code],i,n=>nd(n,t.minimumNumberOfDollarSignsToBeAMathBlock))}get exampleBuilders(){return[new x({description:"Math blocks that start a document do not get an empty line before them.",before:p` + `})]}get optionBuilders(){return[]}};Un=T([b.register],Un);var ts=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};T([b.noSettingControl()],ts.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var Gn=class extends b{constructor(){super({nameKey:"rules.empty-line-around-math-blocks.name",descriptionKey:"rules.empty-line-around-math-blocks.description",type:"Spacing",ruleIgnoreTypes:[f.yaml,f.code]})}get OptionsClass(){return ts}apply(t,i){return nu(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Math blocks that start a document do not get an empty line before them.",before:p` $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} $$ @@ -495,14 +549,14 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i $$ ${""} some more text - `}),new x({description:"Math blocks that are singe-line are updated based on the value of `Number of Dollar Signs to Indicate a Math Block` (in this case its value is 2)",before:p` + `}),new y({description:"Math blocks that are singe-line are updated based on the value of `Number of Dollar Signs to Indicate a Math Block` (in this case its value is 2)",before:p` $$\\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix}$$ some more text `,after:p` $$\\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix}$$ ${""} some more text - `}),new x({description:"Math blocks that end a document do not get an empty line after them.",before:p` + `}),new y({description:"Math blocks that end a document do not get an empty line after them.",before:p` Some text $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} @@ -513,7 +567,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} $$ - `}),new x({description:"Math blocks that are not at the start or the end of the document will have an empty line added before and after them",before:p` + `}),new y({description:"Math blocks that are not at the start or the end of the document will have an empty line added before and after them",before:p` Some text $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} @@ -527,7 +581,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i $$ ${""} some more text - `}),new x({description:"Math blocks in callouts or blockquotes have the appropriately formatted blank lines added",before:p` + `}),new y({description:"Math blocks in callouts or blockquotes have the appropriately formatted blank lines added",before:p` > Math block in blockquote > $$ > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} @@ -545,16 +599,15 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i > $$ > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} > $$ - > ${""} More content here ${""} > Math block doubly nested in blockquote - > > + > > > $$ > > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} > > $$ - `})]}get optionBuilders(){return[]}};Nn=T([z.register],Nn);var go=class{},Hn=class extends z{get OptionsClass(){return go}get name(){return"Empty Line Around Tables"}get description(){return"Ensures that there is an empty line around github flavored tables unless they start or end a document."}get type(){return"Spacing"}apply(i,t){return R([y.yaml,y.code,y.math,y.inlineMath,y.wikiLink,y.link],i,n=>ec(n))}get exampleBuilders(){return[new x({description:"Tables that start a document do not get an empty line before them.",before:p` + `})]}get optionBuilders(){return[]}};Gn=T([b.register],Gn);var Vo=class{},Qn=class extends b{constructor(){super({nameKey:"rules.empty-line-around-tables.name",descriptionKey:"rules.empty-line-around-tables.description",type:"Spacing",ruleIgnoreTypes:[f.yaml,f.code,f.math,f.inlineMath,f.wikiLink,f.link]})}get OptionsClass(){return Vo}apply(t,i){return ku(t)}get exampleBuilders(){return[new y({description:"Tables that start a document do not get an empty line before them.",before:p` | Column 1 | Column 2 | |----------|----------| | foo | bar | @@ -575,7 +628,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i # Heading ${""} **Note that text directly following a table is considered part of a table according to github markdown** - `}),new x({description:"Tables that end a document do not get an empty line after them.",before:p` + `}),new y({description:"Tables that end a document do not get an empty line after them.",before:p` # Heading 1 | Column 1 | Column 2 | |----------|----------| @@ -590,7 +643,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i | foo | bar | | baz | qux | | quux | quuz | - `}),new x({description:"Tables that are not at the start or the end of the document will have an empty line added before and after them",before:p` + `}),new y({description:"Tables that are not at the start or the end of the document will have an empty line added before and after them",before:p` # Table 1 | Column 1 | Column 2 | Column 3 | |----------|----------|----------| @@ -622,7 +675,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i ${""} # Header for more content New paragraph. - `}),new x({description:"Tables in callouts or blockquotes have the appropriately formatted blank lines added",before:p` + `}),new y({description:"Tables in callouts or blockquotes have the appropriately formatted blank lines added",before:p` > Table in blockquote > | Column 1 | Column 2 | Column 3 | > |----------|----------|----------| @@ -646,20 +699,19 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i > | foo | bar | blob | > | baz | qux | trust | > | quux | quuz | glob | - > ${""} More content here ${""} > Table doubly nested in blockquote - > > + > > > | Column 1 | Column 2 | Column 3 | > > |----------|----------|----------| > > | foo | bar | blob | > > | baz | qux | trust | > > | quux | quuz | glob | - `})]}get optionBuilders(){return[]}};Hn=T([z.register],Hn);var Yn=class{constructor(){this.defaultEscapeCharacter='"';this.tryToEscapeSingleLineArrays=!1}};T([z.noSettingControl()],Yn.prototype,"defaultEscapeCharacter",2);var st=class extends z{get OptionsClass(){return Yn}get name(){return"Escape YAML Special Characters"}get description(){return`Escapes colons with a space after them (: ), single quotes ('), and double quotes (") in YAML.`}get type(){return"YAML"}apply(i,t){return Te(i,n=>{let r=n.split(` -`),a=r.length;if(a<1)return n;for(let s=0;s=o.length,c=o.startsWith("-"),u=c&&o.length<2;if(d&&u)continue;let m=1;if(!c)m+=l;else if(l!==-1&&s+1{let r=n.split(` +`),a=r.length;if(a<1)return n;for(let s=0;s=o.length,c=o.startsWith("-"),u=c&&o.length<2;if(d&&u)continue;let m=1;if(!c)m+=l;else if(l!==-1&&s+1{if(n.match(/^#\s.*/m))return n;let a=t.fileName,s=n.indexOf(` ----`);s=s==-1||!n.startsWith(`--- -`)?0:s+5;let o=`# ${a} -`;return n.lengthn.replace(/(\[\^\w+\]) ?([,.;!:?])/gm,"$2$1"))}get exampleBuilders(){return[new x({description:"Placing footnotes after punctuation.",before:p` + `,options:{fileName:"File Name"}})]}get optionBuilders(){return[]}};Jn=T([b.register],Jn);var Uo=class{},Xn=class extends b{constructor(){super({nameKey:"rules.footnote-after-punctuation.name",descriptionKey:"rules.footnote-after-punctuation.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.footnoteAtStartOfLine,f.footnoteAfterATask]})}get OptionsClass(){return Uo}apply(t,i){return t.replace(/(\[\^\w+\]) ?([,.;!:?])/gm,"$2$1")}get exampleBuilders(){return[new y({description:"Placing footnotes after punctuation.",before:p` Lorem[^1]. Ipsum[^2], doletes. `,after:p` Lorem.[^1] Ipsum,[^2] doletes. - `}),new x({description:"A footnote at the start of a task is not moved to after the punctuation",before:p` + `}),new y({description:"A footnote at the start of a task is not moved to after the punctuation",before:p` - [ ] [^1]: This is a footnote and a task. - [ ] This is a footnote and a task that gets swapped with the punctuation[^2]! [^2]: This footnote got modified @@ -757,8 +809,8 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i - [ ] [^1]: This is a footnote and a task. - [ ] This is a footnote and a task that gets swapped with the punctuation![^2] [^2]: This footnote got modified - `})]}get optionBuilders(){return[]}};Wn=T([z.register],Wn);var Vn=class{constructor(){this.defaultEscapeCharacter='"';this.forceYamlEscape=[]}};T([z.noSettingControl()],Vn.prototype,"defaultEscapeCharacter",2);var ot=class extends z{get OptionsClass(){return Vn}get name(){return"Force YAML Escape"}get description(){return"Escapes the values for the specified YAML keys."}get type(){return"YAML"}apply(i,t){return Te(i,n=>{for(let r of t.forceYamlEscape){let a=Ee(n,r);if(a!=null){if(a.includes(` -`)||a.startsWith(" [")||na(a))continue;a=yi(a,t.defaultEscapeCharacter,!0),n=Oe(n,r," "+a)}}return n})}get exampleBuilders(){return[new x({description:"YAML without anything to escape",before:p` + `})]}get optionBuilders(){return[]}};Xn=T([b.register],Xn);var er=class{constructor(){this.defaultEscapeCharacter='"';this.forceYamlEscape=[]}};T([b.noSettingControl()],er.prototype,"defaultEscapeCharacter",2);var mt=class extends b{constructor(){super({nameKey:"rules.force-yaml-escape.name",descriptionKey:"rules.force-yaml-escape.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return er}apply(t,i){return Te(t,n=>{for(let r of i.forceYamlEscape){let a=Ee(n,r);if(a!=null){if(a.includes(` +`)||a.startsWith(" [")||ja(a))continue;a=xi(a,i.defaultEscapeCharacter,!0),n=Ae(n,r," "+a)}}return n})}get exampleBuilders(){return[new y({description:"YAML without anything to escape",before:p` --- key: value otherKey: [] @@ -768,7 +820,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i key: value otherKey: [] --- - `}),new x({description:"Force YAML keys to be escaped with double quotes where not already escaped with `Force Yaml Escape on Keys = 'key'\\n'title'\\n'bool'`",before:p` + `}),new y({description:"Force YAML keys to be escaped with double quotes where not already escaped with `Force Yaml Escape on Keys = 'key'\\n'title'\\n'bool'`",before:p` --- key: 'Already escaped value' title: This is a title @@ -786,7 +838,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i --- ${""} _Note that the force Yaml key option should not be used with arrays._ - `,options:{forceYamlEscape:["key","title","bool"],defaultEscapeCharacter:'"'}})]}get optionBuilders(){return[new he({OptionsClass:Vn,name:"Force YAML Escape on Keys",description:"Uses the YAML escape character on the specified YAML keys separated by a new line character if it is not already escaped. Do not use on YAML arrays.",optionsKey:"forceYamlEscape"})]}get hasSpecialExecutionOrder(){return!0}};ot=T([z.register],ot);var fo=class{},lt=class extends z{get OptionsClass(){return fo}get name(){return"Format Tags in YAML"}get description(){return"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid."}get type(){return"YAML"}apply(i,t){return Te(i,n=>n.replace(new RegExp(`\\n(${hn}|${Bs}):(.*?)(?=\\n(?:[A-Za-z-]+?:|---))`,"s"),function(r){return r.replaceAll("#","")}))}get exampleBuilders(){return[new x({description:"Format Tags in YAML frontmatter",before:p` + `,options:{forceYamlEscape:["key","title","bool"],defaultEscapeCharacter:'"'}})]}get optionBuilders(){return[new be({OptionsClass:er,nameKey:"rules.force-yaml-escape.force-yaml-escape-keys.name",descriptionKey:"rules.force-yaml-escape.force-yaml-escape-keys.description",optionsKey:"forceYamlEscape"})]}};mt=T([b.register],mt);var Go=class{},gt=class extends b{constructor(){super({nameKey:"rules.format-tags-in-yaml.name",descriptionKey:"rules.format-tags-in-yaml.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Go}apply(t,i){return Te(t,n=>n.replace(new RegExp(`\\n(${_n}|${Do}):(.*?)(?=\\n(?:[A-Za-z-]+?:|---))`,"s"),function(r){return r.replaceAll("#","")}))}get exampleBuilders(){return[new y({description:"Format Tags in YAML frontmatter",before:p` --- tags: #one #two #three #nested/four/five --- @@ -794,7 +846,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i --- tags: one two three nested/four/five --- - `}),new x({description:"Format tags in array",before:p` + `}),new y({description:"Format tags in array",before:p` --- tags: [#one #two #three] --- @@ -802,7 +854,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i --- tags: [one two three] --- - `}),new x({description:"Format tags in array with `tag` as the tags key",before:p` + `}),new y({description:"Format tags in array with `tag` as the tags key",before:p` --- tag: [#one #two #three] --- @@ -810,7 +862,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i --- tag: [one two three] --- - `}),new x({description:"Format tags in list",before:p` + `}),new y({description:"Format tags in list",before:p` --- tags: - #tag1 @@ -822,9 +874,9 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i - tag1 - tag2 --- - `})]}get optionBuilders(){return[]}get hasSpecialExecutionOrder(){return!0}};lt=T([z.register],lt);var Ze=class{constructor(){this.aliasArrayStyle="single-line";this.formatAliasKey=!0;this.tagArrayStyle="single-line";this.formatTagKey=!0;this.defaultArrayStyle="single-line";this.formatArrayKeys=!0;this.forceSingleLineArrayStyle=[];this.forceMultiLineArrayStyle=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};T([z.noSettingControl()],Ze.prototype,"aliasArrayStyle",2),T([z.noSettingControl()],Ze.prototype,"tagArrayStyle",2),T([z.noSettingControl()],Ze.prototype,"defaultEscapeCharacter",2),T([z.noSettingControl()],Ze.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Un=class extends z{get OptionsClass(){return Ze}get name(){return"Format Yaml Array"}get description(){return"Allows for the formatting of regular yaml arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific yaml formats. Note that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array."}get type(){return"YAML"}apply(i,t){return Te(i,n=>{let r=Xe(n.replace(`--- + `})]}get optionBuilders(){return[]}};gt=T([b.register],gt);var Ze=class{constructor(){this.aliasArrayStyle="single-line";this.formatAliasKey=!0;this.tagArrayStyle="single-line";this.formatTagKey=!0;this.defaultArrayStyle="single-line";this.formatArrayKeys=!0;this.forceSingleLineArrayStyle=[];this.forceMultiLineArrayStyle=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};T([b.noSettingControl()],Ze.prototype,"aliasArrayStyle",2),T([b.noSettingControl()],Ze.prototype,"tagArrayStyle",2),T([b.noSettingControl()],Ze.prototype,"defaultEscapeCharacter",2),T([b.noSettingControl()],Ze.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var ir=class extends b{constructor(){super({nameKey:"rules.format-yaml-array.name",descriptionKey:"rules.format-yaml-array.description",type:"YAML"})}get OptionsClass(){return Ze}apply(t,i){return Te(t,n=>{let r=Xe(n.replace(`--- `,"").replace(` ----`,""));if(!r)return n;for(let a of yn)if(t.formatAliasKey&&Object.keys(r).includes(a)){n=Oe(n,a,Ue(ta(fi(Ee(n,a))),t.aliasArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscapeCharsForMultiLineArrays));break}for(let a of fn)if(t.formatTagKey&&Object.keys(r).includes(a)){n=Oe(n,a,Ue(ia(fi(Ee(n,a))),t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscapeCharsForMultiLineArrays));break}if(t.formatArrayKeys){let a=[...yn,...fn,...t.forceMultiLineArrayStyle,...t.forceSingleLineArrayStyle];for(let s of Object.keys(r))a.includes(s)||!Array.isArray(r[s])||r[s].length!==0&&typeof r[s][0]=="object"&&r[s][0]!==null||(n=Oe(n,s,Ue(fi(Ee(n,s)),t.defaultArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscapeCharsForMultiLineArrays)))}for(let a of t.forceSingleLineArrayStyle)Object.keys(r).includes(a)&&(n=Oe(n,a,Ue(fi(Ee(n,a)),"single-line",t.defaultEscapeCharacter,t.removeUnnecessaryEscapeCharsForMultiLineArrays)));for(let a of t.forceMultiLineArrayStyle)Object.keys(r).includes(a)&&(n=Oe(n,a,Ue(fi(Ee(n,a)),"multi-line",t.defaultEscapeCharacter,t.removeUnnecessaryEscapeCharsForMultiLineArrays)));return n})}get exampleBuilders(){return[new x({description:"Format tags as a single-line array delimited by spaces and aliases as a multi-line array and format the key `test` to be a single-line array",before:p` +---`,""));if(!r)return n;for(let a of Fn)if(i.formatAliasKey&&Object.keys(r).includes(a)){n=Ae(n,a,Qe(Na(vi(Ee(n,a))),i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}for(let a of Bn)if(i.formatTagKey&&Object.keys(r).includes(a)){n=Ae(n,a,Qe(Da(vi(Ee(n,a))),i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}if(i.formatArrayKeys){let a=[...Fn,...Bn,...i.forceMultiLineArrayStyle,...i.forceSingleLineArrayStyle];for(let s of Object.keys(r))a.includes(s)||!Array.isArray(r[s])||r[s].length!==0&&typeof r[s][0]=="object"&&r[s][0]!==null||(n=Ae(n,s,Qe(vi(Ee(n,s)),i.defaultArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)))}for(let a of i.forceSingleLineArrayStyle)Object.keys(r).includes(a)&&(n=Ae(n,a,Qe(vi(Ee(n,a)),"single-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));for(let a of i.forceMultiLineArrayStyle)Object.keys(r).includes(a)&&(n=Ae(n,a,Qe(vi(Ee(n,a)),"multi-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));return n})}get exampleBuilders(){return[new y({description:"Format tags as a single-line array delimited by spaces and aliases as a multi-line array and format the key `test` to be a single-line array",before:p` --- tags: - computer @@ -852,7 +904,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i Nesting yaml arrays may result in unexpected results. ${""} Multi-line arrays will have empty values removed only leaving one if it is completely empty. The same is not true for single-line arrays as that is invalid yaml unless it comes as the last entry in the array. - `,options:{aliasArrayStyle:"multi-line",forceSingleLineArrayStyle:["test"]}}),new x({description:"Format tags as a single string with space delimiters, ignore aliases, and format regular yaml arrays as single-line arrays",before:p` + `,options:{aliasArrayStyle:"multi-line",forceSingleLineArrayStyle:["test"]}}),new y({description:"Format tags as a single string with space delimiters, ignore aliases, and format regular yaml arrays as single-line arrays",before:p` --- aliases: Typescript types: @@ -866,7 +918,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i types: [thought provoking, peer reviewed] tags: computer science trajectory --- - `,options:{formatAliasKey:!1,tagArrayStyle:"single string space delimited"}}),new x({description:"Arrays with dictionaries in them are ignored",before:p` + `,options:{formatAliasKey:!1,tagArrayStyle:"single string space delimited"}}),new y({description:"Arrays with dictionaries in them are ignored",before:p` --- gists: - id: test123 @@ -882,7 +934,7 @@ ${a}${s} `)}get exampleBuilders(){return[new x({description:"Line being pasted i filename: file.md isPublic: true --- - `,options:{formatArrayKeys:!0,defaultArrayStyle:"single-line"}})]}get optionBuilders(){return[new U({OptionsClass:Ze,name:"Format yaml aliases section",description:"Turns on formatting for the yaml aliases section. You should not enable this option alongside the rule `YAML Title Alias` as they may not work well together or they may have different format styles selected causing unexpected results.",optionsKey:"formatAliasKey"}),new U({OptionsClass:Ze,name:"Format yaml tags section",description:"Turns on formatting for the yaml tags section.",optionsKey:"formatTagKey"}),new ve({OptionsClass:Ze,name:"Default yaml array section style",description:"The style of other yaml arrays that are not `tags`, `aliases` or in `Force key values to be single-line arrays` and `Force key values to be multi-line arrays`",optionsKey:"defaultArrayStyle",records:[{value:"multi-line",description:"```key:\\n - value```"},{value:"single-line",description:"```key: [value]```"}]}),new U({OptionsClass:Ze,name:"Format yaml array sections",description:"Turns on formatting for regular yaml arrays",optionsKey:"formatArrayKeys"}),new he({OptionsClass:Ze,name:"Force key values to be single-line arrays",description:"Forces the yaml array for the new line separated keys to be in single-line format (leave empty to disable this option)",optionsKey:"forceSingleLineArrayStyle"}),new he({OptionsClass:Ze,name:"Force key values to be multi-line arrays",description:"Forces the yaml array for the new line separated keys to be in multi-line format (leave empty to disable this option)",optionsKey:"forceMultiLineArrayStyle"})]}};Un=T([z.register],Un);var Pa=class{constructor(){this.startAtH2=!1}},Gn=class extends z{get OptionsClass(){return Pa}get name(){return"Header Increment"}get description(){return"Heading levels should only increment by one level at a time"}get type(){return"Heading"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag],i,n=>{let r=0,a=t.startAtH2?2:1,s=[],o=[0,0,0,0,0,0],l=o.length;return n.replace(Ri,(d,c="",u="",m="",g="",h="")=>{let f=u.length;if(f=f<=l?f:l,o[f-1]>=0&&f=v;b--)o[b]=0}if(o[f-1]<=0){let v=r,b=s.length+a;b=b<=l?b:l;for(let A=v;A{let h=c.length;if(h=h<=o?h:o,s[h-1]>=0&&h=v;w--)s[w]=0}if(s[h-1]<=0){let v=n,w=a.length+r;w=w<=o?w:o;for(let z=v;z(t.bottom?(n=n.replace(/^(#+\s.*)/gm,` + `,options:{startAtH2:!0}})]}get optionBuilders(){return[new U({OptionsClass:as,nameKey:"rules.header-increment.start-at-h2.name",descriptionKey:"rules.header-increment.start-at-h2.description",optionsKey:"startAtH2"})]}};tr=T([b.register],tr);var rr=class{constructor(){this.bottom=!0;this.emptyLineAfterYaml=!0}},nr=class extends b{constructor(){super({nameKey:"rules.heading-blank-lines.name",descriptionKey:"rules.heading-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink]})}get OptionsClass(){return rr}apply(t,i){return i.bottom?(t=t.replace(/^(#+\s.*)/gm,` $1 -`),n=n.replace(/\n+(#+\s.*)/g,` +`),t=t.replace(/\n+(#+\s.*)/g,` -$1`),n=n.replace(/(^#+\s.*)\n+/gm,`$1 +$1`),t=t.replace(/(^#+\s.*)\n+/gm,`$1 -`)):(n=n.replace(/(^#+\s.*)\n+/gm,`$1 -`),n=n.replace(/\n+(#+\s.*)/g,` +`)):(t=t.replace(/(^#+\s.*)\n+/gm,`$1 +`),t=t.replace(/\n+(#+\s.*)/g,` -$1`)),n=n.replace(/^\n+(#+\s.*)/,"$1"),n=n.replace(/(#+\s.*)\n+$/,"$1"),t.emptyLineAfterYaml||(n=n.replace(new RegExp("("+Se.source+")\\n+(#+\\s.*)"),`$1 -$5`)),n))}get exampleBuilders(){return[new x({description:"Headings should be surrounded by blank lines",before:p` +$1`)),t=t.replace(/^\n+(#+\s.*)/,"$1"),t=t.replace(/(#+\s.*)\n+$/,"$1"),i.emptyLineAfterYaml||(t=t.replace(new RegExp("("+Se.source+")\\n+(#+\\s.*)"),`$1 +$5`)),t}get exampleBuilders(){return[new y({description:"Headings should be surrounded by blank lines",before:p` # H1 ## H2 ${""} @@ -983,7 +1035,7 @@ $5`)),n))}get exampleBuilders(){return[new x({description:"Headings should be su line ${""} ## H2 - `}),new x({description:"With `Bottom=false`",before:p` + `}),new y({description:"With `Bottom=false`",before:p` # H1 line ## H2 @@ -997,10 +1049,11 @@ $5`)),n))}get exampleBuilders(){return[new x({description:"Headings should be su ${""} # H1 line - `,options:{bottom:!1,emptyLineAfterYaml:!0}}),new x({description:"Empty line before header and after Yaml is removed with `Empty Line Between Yaml and Header=true`",before:p` + `,options:{bottom:!1,emptyLineAfterYaml:!0}}),new y({description:"Empty line before header and after Yaml is removed with `Empty Line Between Yaml and Header=false`",before:p` --- key: value --- + ${""} # Header Paragraph here... `,after:p` @@ -1010,21 +1063,21 @@ $5`)),n))}get exampleBuilders(){return[new x({description:"Headings should be su # Header Paragraph here... - `,options:{bottom:!0,emptyLineAfterYaml:!1}})]}get optionBuilders(){return[new U({OptionsClass:Qn,name:"Bottom",description:"Insert a blank line after headings",optionsKey:"bottom"}),new U({OptionsClass:Qn,name:"Empty Line Between Yaml and Header",description:"Keep the empty line between the Yaml frontmatter and header",optionsKey:"emptyLineAfterYaml"})]}};Zn=T([z.register],Zn);var yo=class{},Jn=class extends z{get OptionsClass(){return yo}get name(){return"Headings Start Line"}get description(){return"Headings that do not start a line will have their preceding whitespace removed to make sure they get recognized as headers."}get type(){return"Heading"}apply(i,t){return R([y.code,y.math,y.yaml],i,n=>n.replaceAll(Ri,r=>r.trimStart()))}get exampleBuilders(){return[new x({description:"Removes spaces prior to a heading",before:p` + `,options:{bottom:!0,emptyLineAfterYaml:!1}})]}get optionBuilders(){return[new U({OptionsClass:rr,nameKey:"rules.heading-blank-lines.bottom.name",descriptionKey:"rules.heading-blank-lines.bottom.description",optionsKey:"bottom"}),new U({OptionsClass:rr,nameKey:"rules.heading-blank-lines.empty-line-after-yaml.name",descriptionKey:"rules.heading-blank-lines.empty-line-after-yaml.description",optionsKey:"emptyLineAfterYaml"})]}};nr=T([b.register],nr);var Qo=class{},ar=class extends b{constructor(){super({nameKey:"rules.headings-start-line.name",descriptionKey:"rules.headings-start-line.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml]})}get OptionsClass(){return Qo}apply(t,i){return t.replaceAll(ji,n=>n.trimStart())}get exampleBuilders(){return[new y({description:"Removes spaces prior to a heading",before:p` ${""} ## Other heading preceded by 2 spaces ## _Note that if the spacing is enough for the header to be considered to be part of a codeblock it will not be affected by this rule._ `,after:p` ## Other heading preceded by 2 spaces ## _Note that if the spacing is enough for the header to be considered to be part of a codeblock it will not be affected by this rule._ - `}),new x({description:"Tags are not affected by this",before:p` + `}),new y({description:"Tags are not affected by this",before:p` ${""} #test ${""} # Heading & `,after:p` ${""} #test # Heading & - `})]}get optionBuilders(){return[]}};Jn=T([z.register],Jn);var $a=class{constructor(){this.textToInsert=["aliases: ","tags: "]}},Xn=class extends z{get OptionsClass(){return $a}get name(){return"Insert YAML attributes"}get description(){return"Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line."}get type(){return"YAML"}apply(i,t){return i=hi(i),Te(i,n=>{let r=t.textToInsert.reverse(),a=Xe(n.match(Se)[1]);for(let s of r){let o=s.split(":")[0];Object.prototype.hasOwnProperty.call(a,o)||(n=n.replace(/^---\n/,We(`--- + `})]}get optionBuilders(){return[]}};ar=T([b.register],ar);var ss=class{constructor(){this.textToInsert=["aliases: ","tags: "]}},sr=class extends b{constructor(){super({nameKey:"rules.insert-yaml-attributes.name",descriptionKey:"rules.insert-yaml-attributes.description",type:"YAML"})}get OptionsClass(){return ss}apply(t,i){return t=bi(t),Te(t,n=>{let r=i.textToInsert.reverse(),a=Xe(n.match(Se)[1]);for(let s of r){let o=s.split(":")[0];Object.prototype.hasOwnProperty.call(a,o)||(n=n.replace(/^---\n/,Ke(`--- ${s} -`)))}return n})}get exampleBuilders(){return[new x({description:"Insert static lines into YAML frontmatter. Text to insert: `aliases:\ntags: doc\nanimal: dog`",before:p` +`)))}return n})}get exampleBuilders(){return[new y({description:"Insert static lines into YAML frontmatter. Text to insert: `aliases:\ntags: doc\nanimal: dog`",before:p` --- animal: cat --- @@ -1034,13 +1087,13 @@ ${s} tags: doc animal: cat --- - `,options:{textToInsert:["aliases:","tags: doc","animal: dog"]}})]}get optionBuilders(){return[new he({OptionsClass:$a,name:"Text to insert",description:"Text to insert into the YAML frontmatter",optionsKey:"textToInsert"})]}};Xn=T([z.register],Xn);var bo=class{},er=class extends z{get OptionsClass(){return bo}get name(){return"Line Break at Document End"}get description(){return"Ensures that there is exactly one line break at the end of a document."}get type(){return"Spacing"}apply(i,t){return i=i.replace(/\n+$/g,""),i+=` -`,i}get exampleBuilders(){return[new x({description:"Appending a line break to the end of the document.",before:p` + `,options:{textToInsert:["aliases:","tags: doc","animal: dog"]}})]}get optionBuilders(){return[new be({OptionsClass:ss,nameKey:"rules.insert-yaml-attributes.text-to-insert.name",descriptionKey:"rules.insert-yaml-attributes.text-to-insert.description",optionsKey:"textToInsert"})]}};sr=T([b.register],sr);var Zo=class{},or=class extends b{constructor(){super({nameKey:"rules.line-break-at-document-end.name",descriptionKey:"rules.line-break-at-document-end.description",type:"Spacing"})}get OptionsClass(){return Zo}apply(t,i){return t=t.replace(/\n+$/g,""),t+=` +`,t}get exampleBuilders(){return[new y({description:"Appending a line break to the end of the document.",before:p` Lorem ipsum dolor sit amet, consectetur adipiscing elit. `,after:p` Lorem ipsum dolor sit amet, consectetur adipiscing elit. ${""} - `}),new x({description:"Removing trailing line breaks to the end of the document, except one.",before:p` + `}),new y({description:"Removing trailing line breaks to the end of the document, except one.",before:p` Lorem ipsum dolor sit amet, consectetur adipiscing elit. ${""} ${""} @@ -1048,7 +1101,7 @@ ${s} `,after:p` Lorem ipsum dolor sit amet, consectetur adipiscing elit. ${""} - `})]}get optionBuilders(){return[]}};er=T([z.register],er);var vo=class{},ir=class extends z{get OptionsClass(){return vo}get name(){return"Move Footnotes to the bottom"}get description(){return"Move all footnotes to the bottom of the document."}get type(){return"Footnote"}apply(i,t){return R([y.code,y.math,y.yaml],i,n=>Gc(n))}get exampleBuilders(){return[new x({description:"Moving footnotes to the bottom",before:p` + `})]}get optionBuilders(){return[]}};or=T([b.register],or);var Jo=class{},lr=class extends b{constructor(){super({nameKey:"rules.move-footnotes-to-the-bottom.name",descriptionKey:"rules.move-footnotes-to-the-bottom.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml]})}get OptionsClass(){return Jo}apply(t,i){return Ud(t)}get exampleBuilders(){return[new y({description:"Moving footnotes to the bottom",before:p` Lorem ipsum, consectetur adipiscing elit. [^1] Donec dictum turpis quis ipsum pellentesque. ${""} [^1]: first footnote @@ -1065,7 +1118,7 @@ ${s} ${""} [^1]: first footnote [^2]: second footnote - `})]}get optionBuilders(){return[]}};ir=T([z.register],ir);var Na=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};T([z.noSettingControl()],Na.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var tr=class extends z{get OptionsClass(){return Na}get name(){return"Move Math Block Indicators to Their Own Line"}get description(){return"Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."}get type(){return"Spacing"}apply(i,t){return R([y.code,y.inlineCode],i,n=>od(n,t.minimumNumberOfDollarSignsToBeAMathBlock))}get exampleBuilders(){return[new x({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2",before:p` + `})]}get optionBuilders(){return[]}};lr=T([b.register],lr);var os=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};T([b.noSettingControl()],os.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var cr=class extends b{constructor(){super({nameKey:"rules.move-math-block-indicators-to-their-own-line.name",descriptionKey:"rules.move-math-block-indicators-to-their-own-line.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode]})}get OptionsClass(){return os}apply(t,i){return ou(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2",before:p` This is left alone: $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} @@ -1081,23 +1134,23 @@ ${s} $$ L = \\frac{1}{2} \\rho v^2 S C_L $$ - `}),new x({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 3 and opening indicator is on the same line as the start of the content",before:p` + `}),new y({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 3 and opening indicator is on the same line as the start of the content",before:p` $$$\\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} $$$ `,after:p` $$$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} $$$ - `}),new x({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2 and ending indicator is on the same line as the ending line of the content",before:p` + `}),new y({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2 and ending indicator is on the same line as the ending line of the content",before:p` $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix}$$ `,after:p` $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} $$ - `})]}get optionBuilders(){return[]}};tr=T([z.register],tr);var Ni=class{constructor(){this.tagArrayStyle="single-line";this.howToHandleExistingTags="Nothing";this.tagsToIgnore=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};T([z.noSettingControl()],Ni.prototype,"tagArrayStyle",2),T([z.noSettingControl()],Ni.prototype,"defaultEscapeCharacter",2),T([z.noSettingControl()],Ni.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var nr=class extends z{get OptionsClass(){return Ni}get name(){return"Move Tags to Yaml"}get description(){return"Move all tags to Yaml frontmatter of the document."}get type(){return"YAML"}apply(i,t){return R([y.code,y.inlineCode,y.math,y.html,y.wikiLink,y.link],i,n=>{let r=ic(n);return r.length===0||(n=hi(n),n=Te(n,a=>{a=a.replace(`--- -`,"").replace("---","");let s=[],o=hn;for(let c of fn){let u=Ee(a,c);if(u!=null){s=ia(fi(u)),o=c;break}}let l=new Set;if(typeof s=="string")l.add(s),s=[s];else if(s!=null)for(let c of s)l.add(c);else s=[];for(let c of r){let u=c.trim().substring(1);!l.has(u)&&!t.tagsToIgnore.includes(u)&&(l.add(u),s.push(u))}return`--- -${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscapeCharsForMultiLineArrays))}---`}),t.howToHandleExistingTags!=="Nothing"&&(n=n.replace(mn,a=>{let s=a.indexOf("#"),o=a.substring(s+1);return t.tagsToIgnore.includes(o)?a:t.howToHandleExistingTags==="Remove hashtag"?a.substring(0,s)+o:""})),n=n.replace(/(\n---)( |\t)+/,"$1")),n})}get exampleBuilders(){return[new x({description:"Move tags from body to Yaml with `Tags to ignore = 'ignored-tag'`",before:p` + `})]}get optionBuilders(){return[]}};cr=T([b.register],cr);var Yi=class{constructor(){this.tagArrayStyle="single-line";this.howToHandleExistingTags="Nothing";this.tagsToIgnore=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};T([b.noSettingControl()],Yi.prototype,"tagArrayStyle",2),T([b.noSettingControl()],Yi.prototype,"defaultEscapeCharacter",2),T([b.noSettingControl()],Yi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var dr=class extends b{constructor(){super({nameKey:"rules.move-tags-to-yaml.name",descriptionKey:"rules.move-tags-to-yaml.description",type:"YAML",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.html,f.wikiLink,f.link]})}get OptionsClass(){return Yi}apply(t,i){let n;return qe([f.yaml],t,r=>(n=zu(r),r)),n.length===0||(t=bi(t),t=Te(t,r=>{r=r.replace(`--- +`,"").replace("---","");let a=[],s=_n;for(let d of Bn){let c=Ee(r,d);if(c!=null){a=Da(vi(c)),s=d;break}}let o=new Set;if(typeof a=="string")o.add(a),a=[a];else if(a!=null)for(let d of a)o.add(d);else a=[];for(let d of n){let c=d.trim().substring(1);!o.has(c)&&!i.tagsToIgnore.includes(c)&&(o.add(c),a.push(c))}return`--- +${Ae(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}---`}),t=qe([f.yaml],t,r=>(i.howToHandleExistingTags!=="Nothing"&&(r=r.replace(qn,a=>{let s=a.indexOf("#"),o=a.substring(s+1);return i.tagsToIgnore.includes(o)?a:i.howToHandleExistingTags==="Remove hashtag"?a.substring(0,s)+o:""})),r)),t=t.replace(/(\n---)( |\t)+/,"$1")),t}get exampleBuilders(){return[new y({description:"Move tags from body to Yaml with `Tags to ignore = 'ignored-tag'`",before:p` Text has to do with #test and #markdown ${""} #test content here @@ -1124,7 +1177,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape This inline code \`#ignored content\` ${""} #ignored-tag is ignored since it is in the ignored list - `,options:{tagsToIgnore:["ignored-tag"]}}),new x({description:"Move tags from body to YAML with existing tags retains the already existing ones and only adds new ones",before:p` + `,options:{tagsToIgnore:["ignored-tag"]}}),new y({description:"Move tags from body to YAML with existing tags retains the already existing ones and only adds new ones",before:p` --- tags: [test, tag2] --- @@ -1134,7 +1187,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape tags: [test, tag2, markdown] --- Text has to do with #test and #markdown - `}),new x({description:"Move tags to YAML frontmatter and then remove hashtags in body content tags when `Body tag operation = 'Remove hashtag'` and `Tags to ignore = 'yet-another-ignored-tag'`.",before:p` + `}),new y({description:"Move tags to YAML frontmatter and then remove hashtags in body content tags when `Body tag operation = 'Remove hashtag'` and `Tags to ignore = 'yet-another-ignored-tag'`.",before:p` --- tags: [test, tag2] --- @@ -1148,7 +1201,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape Text has to do with test and markdown ${""} The tag at the end of this line stays as a tag since it is ignored #yet-another-ignored-tag - `,options:{howToHandleExistingTags:"Remove hashtag",tagsToIgnore:["yet-another-ignored-tag"]}}),new x({description:"Move tags to YAML frontmatter and then remove body content tags when `Body tag operation = 'Remove whole tag'`.",before:p` + `,options:{howToHandleExistingTags:"Remove hashtag",tagsToIgnore:["yet-another-ignored-tag"]}}),new y({description:"Move tags to YAML frontmatter and then remove body content tags when `Body tag operation = 'Remove whole tag'`.",before:p` --- tags: [test, tag2] --- @@ -1158,7 +1211,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape tags: [test, tag2, tags, warning] --- This document will have removed and spacing around tags is left alone except for the space prior to the hashtag - `,options:{howToHandleExistingTags:"Remove whole tag"}})]}get optionBuilders(){return[new ve({OptionsClass:Ni,name:"Body tag operation",description:"What to do with non-ignored tags in the body of the file once they have been moved to the frontmatter",optionsKey:"howToHandleExistingTags",records:[{value:"Nothing",description:"Leaves tags in the body of the file alone"},{value:"Remove hashtag",description:"Removes `#` from tags in content body after moving them to the YAML frontmatter"},{value:"Remove whole tag",description:"Removes the whole tag in content body after moving them to the YAML frontmatter. _Note that this removes the first space prior to the tag as well_"}]}),new he({OptionsClass:Ni,name:"Tags to ignore",description:"The tags that will not be moved to the tags array or removed from the body content if `Remove the hashtag from tags in content body` is enabled. Each tag should be on a new line and without the `#`. **Make sure not to include the hashtag in the tag name.**",optionsKey:"tagsToIgnore"})]}};nr=T([z.register],nr);var xo=class{},dd="'\"\u2018\u2019\u201C\u201D`[]",rr=class extends z{get OptionsClass(){return xo}get name(){return"No Bare URLs"}get description(){return"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes."}get type(){return"Content"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag,y.image,y.inlineCode,y.anchorTag],i,n=>{let r=n.match(Bt);if(!r)return n;let a=0,s=r.length;for(let o=0;o=n.length?void 0:n.charAt(c);if(u!=null&&dd.includes(u)&&m!=null&&dd.includes(m)){a=d+l.length;continue}if(u!=null&&u==="<"&&m!=null&&m===">"){let g=d-1;for(;g>0&&n.charAt(g-1)==="<";)g--;let h=c;for(;h";)h++;n=ze(n,g,h+1,"<"+l+">"),a=d+l.length;continue}n=ze(n,d,d+l.length,"<"+l+">"),a=d+l.length+2}return n})}get exampleBuilders(){return[new x({description:"Make sure that links are inside of angle brackets when not in single quotes('), double quotes(\"), or backticks(`)",before:p` + `,options:{howToHandleExistingTags:"Remove whole tag"}})]}get optionBuilders(){return[new ne({OptionsClass:Yi,nameKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.name",descriptionKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.description",optionsKey:"howToHandleExistingTags",records:[{value:"Nothing",description:"Leaves tags in the body of the file alone"},{value:"Remove hashtag",description:"Removes `#` from tags in content body after moving them to the YAML frontmatter"},{value:"Remove whole tag",description:"Removes the whole tag in content body after moving them to the YAML frontmatter. _Note that this removes the first space prior to the tag as well_"}]}),new be({OptionsClass:Yi,nameKey:"rules.move-tags-to-yaml.tags-to-ignore.name",descriptionKey:"rules.move-tags-to-yaml.tags-to-ignore.description",optionsKey:"tagsToIgnore"})]}};dr=T([b.register],dr);var Xo=class{},qu="'\"\u2018\u2019\u201C\u201D`[]",ur=class extends b{constructor(){super({nameKey:"rules.no-bare-urls.name",descriptionKey:"rules.no-bare-urls.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.image,f.inlineCode,f.anchorTag]})}get OptionsClass(){return Xo}apply(t,i){let n=t.match(Wt);if(!n)return t;let r=0,a=n.length;for(let s=0;s=t.length?void 0:t.charAt(d);if(c!=null&&qu.includes(c)&&u!=null&&qu.includes(u)){r=l+o.length;continue}if(c!=null&&c==="<"&&u!=null&&u===">"){let m=l-1;for(;m>0&&t.charAt(m-1)==="<";)m--;let g=d;for(;g";)g++;t=fe(t,m,g+1,"<"+o+">"),r=l+o.length;continue}t=fe(t,l,l+o.length,"<"+o+">"),r=l+o.length+2}return t}get exampleBuilders(){return[new y({description:"Make sure that links are inside of angle brackets when not in single quotes('), double quotes(\"), or backticks(`)",before:p` https://github.com braces around url should stay the same: [https://github.com] backticks around url should stay the same: \`https://github.com\` @@ -1178,7 +1231,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape links should stay the same: [](https://github.com) - `}),new x({description:`Angle brackets are added if the url is not the only text in the single quotes(') or double quotes(")`,before:p` + `}),new y({description:`Angle brackets are added if the url is not the only text in the single quotes(') or double quotes(")`,before:p` [https://github.com some text here] backticks around a url should stay the same: \`https://github.com some text here\` single quotes around a url should stay the same, but only if the contents of the single quotes is the url: 'https://github.com some text here' @@ -1188,7 +1241,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape backticks around a url should stay the same: \`https://github.com some text here\` single quotes around a url should stay the same, but only if the contents of the single quotes is the url: ' some text here' double quotes around a url should stay the same, but only if the contents of the double quotes is the url: " some text here" - `}),new x({description:"Multiple angle brackets at the start and or end of a url will be reduced down to 1",before:p` + `}),new y({description:"Multiple angle brackets at the start and or end of a url will be reduced down to 1",before:p` < > <> @@ -1196,7 +1249,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape - `})]}get optionBuilders(){return[]}};rr=T([z.register],rr);var sr=class{constructor(){this.numberStyle="ascending";this.listEndStyle="."}},ar=class extends z{get OptionsClass(){return sr}get name(){return"Ordered List Style"}get description(){return"Makes sure that ordered lists follow the style specified. Note that 2 spaces or 1 tab is considered to be an indentation level."}get type(){return"Content"}apply(i,t){return R([y.code,y.math,y.yaml,y.tag],i,n=>ad(n,t.numberStyle,t.listEndStyle))}get exampleBuilders(){return[new x({description:"Ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:p` + `})]}get optionBuilders(){return[]}};ur=T([b.register],ur);var mr=class{constructor(){this.numberStyle="ascending";this.listEndStyle="."}},pr=class extends b{constructor(){super({nameKey:"rules.ordered-list-style.name",descriptionKey:"rules.ordered-list-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.tag]})}get OptionsClass(){return mr}apply(t,i){return au(t,i.numberStyle,i.listEndStyle)}get exampleBuilders(){return[new y({description:"Ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:p` 1. Item 1 2. Item 2 4. Item 3 @@ -1216,7 +1269,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape 1. Item 1 2. Item 2 3. Item 3 - `}),new x({description:"Nested ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:p` + `}),new y({description:"Nested ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:p` 1. Item 1 2. Item 2 1. Subitem 1 @@ -1230,7 +1283,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape 2. Subitem 2 3. Subitem 3 3. Item 3 - `}),new x({description:"Ordered list in blockquote has list items set to '1.' when Number Style is `lazy`.",before:p` + `}),new y({description:"Ordered list in blockquote has list items set to '1.' when Number Style is `lazy`.",before:p` > 1. Item 1 > 4. Item 2 > > 1. Subitem 1 @@ -1242,7 +1295,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape > > 1. Subitem 1 > > 1. Subitem 2 > > 1. Subitem 3 - `,options:{numberStyle:"lazy"}}),new x({description:"Ordered list in blockquote has list items set to ascending numerical order when Number Style is `ascending`.",before:p` + `,options:{numberStyle:"lazy"}}),new y({description:"Ordered list in blockquote has list items set to ascending numerical order when Number Style is `ascending`.",before:p` > 1. Item 1 > 4. Item 2 > > 1. Subitem 1 @@ -1254,7 +1307,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape > > 1. Subitem 1 > > 2. Subitem 2 > > 3. Subitem 3 - `}),new x({description:"Nested ordered list has list items set to '1)' when Number Style is `lazy` and Ordered List Indicator End Style is `)`.",before:p` + `}),new y({description:"Nested ordered list has list items set to '1)' when Number Style is `lazy` and Ordered List Indicator End Style is `)`.",before:p` 1. Item 1 2. Item 2 1. Subitem 1 @@ -1268,7 +1321,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape 1) Subitem 2 1) Subitem 3 1) Item 3 - `,options:{listEndStyle:")",numberStyle:"lazy"}})]}get optionBuilders(){return[new ve({OptionsClass:sr,name:"Number Style",description:"The number style used in ordered list indicators",optionsKey:"numberStyle",records:[{value:"ascending",description:"Makes sure ordered list items are ascending (i.e. 1, 2, 3, etc.)"},{value:"lazy",description:"Makes sure ordered list item indicators all are the number 1"}]}),new ve({OptionsClass:sr,name:"Ordered List Indicator End Style",description:"The ending character of an ordered list indicator",optionsKey:"listEndStyle",records:[{value:".",description:"Makes sure ordered list items indicators end in '.' (i.e `1.`)"},{value:")",description:"Makes sure ordered list item indicators end in ')' (i.e. `1)`)"}]})]}};ar=T([z.register],ar);var wo=class{},or=class extends z{get OptionsClass(){return wo}get name(){return"Paragraph blank lines"}get description(){return"All paragraphs should have exactly one blank line both before and after."}get type(){return"Spacing"}apply(i,t){return R([y.obsidianMultiLineComments,y.yaml,y.table],i,Qc)}get exampleBuilders(){return[new x({description:"Paragraphs should be surrounded by blank lines",before:p` + `,options:{listEndStyle:")",numberStyle:"lazy"}})]}get optionBuilders(){return[new ne({OptionsClass:mr,nameKey:"rules.ordered-list-style.number-style.name",descriptionKey:"rules.ordered-list-style.number-style.description",optionsKey:"numberStyle",records:[{value:"ascending",description:"Makes sure ordered list items are ascending (i.e. 1, 2, 3, etc.)"},{value:"lazy",description:"Makes sure ordered list item indicators all are the number 1"}]}),new ne({OptionsClass:mr,nameKey:"rules.ordered-list-style.list-end-style.name",descriptionKey:"rules.ordered-list-style.list-end-style.description",optionsKey:"listEndStyle",records:[{value:".",description:"Makes sure ordered list items indicators end in '.' (i.e `1.`)"},{value:")",description:"Makes sure ordered list item indicators end in ')' (i.e. `1)`)"}]})]}};pr=T([b.register],pr);var el=class{},gr=class extends b{constructor(){super({nameKey:"rules.paragraph-blank-lines.name",descriptionKey:"rules.paragraph-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.obsidianMultiLineComments,f.yaml,f.table]})}get OptionsClass(){return el}apply(t,i){return Jd(t)}get exampleBuilders(){return[new y({description:"Paragraphs should be surrounded by blank lines",before:p` # H1 Newlines are inserted. A paragraph is a line that starts with a letter. @@ -1278,51 +1331,70 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape Newlines are inserted. ${""} A paragraph is a line that starts with a letter. - `})]}get optionBuilders(){return[]}};or=T([z.register],or);var Ha=class{};T([z.noSettingControl()],Ha.prototype,"lineContent",2);var ct=class extends z{get OptionsClass(){return Ha}get name(){return"Prevent Double Checklist Indicator on Paste"}get description(){return"Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator"}get type(){return"Paste"}apply(i,t){let n=new RegExp(`^${Mt}- \\[[ x]] `),r=/^\s*- \[[ x]] /,a=n.test(t.lineContent),s=r.test(i);return!a||!s?i:i.replace(r,"")}get exampleBuilders(){return[new x({description:"Line being pasted is left alone when current line has no checklist indicator in it: `Regular text here`",before:p` + `}),new y({description:"Paragraphs can be extended via the use of 2 or more spaces at the end of a line or line break html",before:p` + # H1 + Content${" "} + Paragraph content continued
+ Paragraph content continued once more
+ Last line of paragraph + A new paragraph + # H2 + `,after:p` + # H1 + ${""} + Content${" "} + Paragraph content continued
+ Paragraph content continued once more
+ Last line of paragraph + ${""} + A new paragraph + ${""} + # H2 + `})]}get optionBuilders(){return[]}};gr=T([b.register],gr);var ls=class{};T([b.noSettingControl()],ls.prototype,"lineContent",2);var ht=class extends b{constructor(){super({nameKey:"rules.prevent-double-checklist-indicator-on-paste.name",descriptionKey:"rules.prevent-double-checklist-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return ls}apply(t,i){let n=new RegExp(`^${Yt}- \\[[ x]] `),r=/^\s*- \[[ x]] /,a=n.test(i.lineContent),s=r.test(t);return!a||!s?t:t.replace(r,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no checklist indicator in it: `Regular text here`",before:p` - [ ] Checklist item being pasted `,after:p` - [ ] Checklist item being pasted - `,options:{lineContent:"Regular text here"}}),new x({description:"Line being pasted into a blockquote without a checklist indicator is left alone when it lacks a checklist indicator: `> > `",before:p` + `,options:{lineContent:"Regular text here"}}),new y({description:"Line being pasted into a blockquote without a checklist indicator is left alone when it lacks a checklist indicator: `> > `",before:p` - [ ] Checklist item contents here More content here `,after:p` - [ ] Checklist item contents here More content here - `,options:{lineContent:"> > "}}),new x({description:"Line being pasted into a blockquote with a checklist indicator is has its checklist indicator removed when current line is: `> - [x] `",before:p` + `,options:{lineContent:"> > "}}),new y({description:"Line being pasted into a blockquote with a checklist indicator is has its checklist indicator removed when current line is: `> - [x] `",before:p` - [ ] Checklist item contents here More content here `,after:p` Checklist item contents here More content here - `,options:{lineContent:"> - [x] "}}),new x({description:"Line being pasted with a checklist indicator is has its checklist indicator removed when current line is: `- [ ] `",before:p` + `,options:{lineContent:"> - [x] "}}),new y({description:"Line being pasted with a checklist indicator is has its checklist indicator removed when current line is: `- [ ] `",before:p` - [x] Checklist item 1 - [ ] Checklist item 2 `,after:p` Checklist item 1 - [ ] Checklist item 2 - `,options:{lineContent:"- [ ] "}})]}get optionBuilders(){return[]}};ct=T([z.register],ct);var Ya=class{};T([z.noSettingControl()],Ya.prototype,"lineContent",2);var dt=class extends z{get OptionsClass(){return Ya}get name(){return"Prevent Double List Item Indicator on Paste"}get description(){return"Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator"}get type(){return"Paste"}apply(i,t){let n=new RegExp(`^${Mt}[*+-] `),r=/^\s*[*+-] /,a=n.test(t.lineContent),s=r.test(i);return!a||!s?i:i.replace(r,"")}get exampleBuilders(){return[new x({description:"Line being pasted is left alone when current line has no list indicator in it: `Regular text here`",before:p` + `,options:{lineContent:"- [ ] "}})]}get optionBuilders(){return[]}};ht=T([b.register],ht);var cs=class{};T([b.noSettingControl()],cs.prototype,"lineContent",2);var ft=class extends b{constructor(){super({nameKey:"rules.prevent-double-list-item-indicator-on-paste.name",descriptionKey:"rules.prevent-double-list-item-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return cs}apply(t,i){let n=new RegExp(`^${Yt}[*+-] `),r=/^\s*[*+-] /,a=n.test(i.lineContent),s=r.test(t);return!a||!s?t:t.replace(r,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no list indicator in it: `Regular text here`",before:p` - List item being pasted `,after:p` - List item being pasted - `,options:{lineContent:"Regular text here"}}),new x({description:"Line being pasted into a blockquote without a list indicator is left alone when it lacks a list indicator: `> > `",before:p` + `,options:{lineContent:"Regular text here"}}),new y({description:"Line being pasted into a blockquote without a list indicator is left alone when it lacks a list indicator: `> > `",before:p` * List item contents here More content here `,after:p` * List item contents here More content here - `,options:{lineContent:"> > "}}),new x({description:"Line being pasted into a blockquote with a list indicator is has its list indicator removed when current line is: `> * `",before:p` + `,options:{lineContent:"> > "}}),new y({description:"Line being pasted into a blockquote with a list indicator is has its list indicator removed when current line is: `> * `",before:p` + List item contents here More content here `,after:p` List item contents here More content here - `,options:{lineContent:"> * "}}),new x({description:"Line being pasted with a list indicator is has its list indicator removed when current line is: `+ `",before:p` + `,options:{lineContent:"> * "}}),new y({description:"Line being pasted with a list indicator is has its list indicator removed when current line is: `+ `",before:p` - List item 1 - List item 2 `,after:p` List item 1 - List item 2 - `,options:{lineContent:"+ "}})]}get optionBuilders(){return[]}};dt=T([z.register],dt);var ko=class{},ut=class extends z{get OptionsClass(){return ko}get name(){return"Proper Ellipsis on Paste"}get description(){return"Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste"}get type(){return"Paste"}apply(i,t){return i.replaceAll(Jr,"\u2026")}get exampleBuilders(){return[new x({description:"Replacing three consecutive dots with an ellipsis even if spaces are present",before:p` + `,options:{lineContent:"+ "}})]}get optionBuilders(){return[]}};ft=T([b.register],ft);var il=class{},yt=class extends b{constructor(){super({nameKey:"rules.proper-ellipsis-on-paste.name",descriptionKey:"rules.proper-ellipsis-on-paste.description",type:"Paste"})}get OptionsClass(){return il}apply(t,i){return t.replaceAll(Ba,"\u2026")}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis even if spaces are present",before:p` Lorem (...) Impsum. Lorem (. ..) Impsum. Lorem (. . .) Impsum. @@ -1330,11 +1402,49 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape Lorem (…) Impsum. Lorem (…) Impsum. Lorem (…) Impsum. - `})]}get optionBuilders(){return[]}};ut=T([z.register],ut);var zo=class{},lr=class extends z{get OptionsClass(){return zo}get name(){return"Proper Ellipsis"}get description(){return"Replaces three consecutive dots with an ellipsis."}get type(){return"Content"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag,y.image],i,n=>n.replaceAll(Jr,"\u2026"))}get exampleBuilders(){return[new x({description:"Replacing three consecutive dots with an ellipsis.",before:p` + `})]}get optionBuilders(){return[]}};yt=T([b.register],yt);var tl=class{},hr=class extends b{constructor(){super({nameKey:"rules.proper-ellipsis.name",descriptionKey:"rules.proper-ellipsis.description",type:"Content"})}get OptionsClass(){return tl}apply(t,i){return qe([f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.image],t,n=>n.replaceAll(Ba,"\u2026"))}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis.",before:p` Lorem (...) Impsum. `,after:p` Lorem (…) Impsum. - `})]}get optionBuilders(){return[]}};lr=T([z.register],lr);var So=class{},cr=class extends z{get OptionsClass(){return So}get name(){return"Re-Index Footnotes"}get description(){return"Re-indexes footnote keys and footnote, based on the order of occurrence (NOTE: This rule deliberately does *not* preserve the relation between key and footnote, to be able to re-index duplicate keys.)"}get type(){return"Footnote"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag],i,n=>{let r=0;return n=n.replace(/^\[\^\w+\]: /gm,function(){return r++,"[^"+String(r)+"]: "}),r=0,n=n.replace(/(?!^)\[\^\w+\]/gm,function(){return r++,"[^"+String(r)+"]"}),n})}get exampleBuilders(){return[new x({description:"Re-indexing footnotes after having deleted previous footnotes",before:p` + `})]}get optionBuilders(){return[]}};hr=T([b.register],hr);var Gy=["a'ight","ain't","amn't","'n'","aren't","'bout","boy's","can't","cap'n","'cause","'cept","could've","couldn't","couldn't've","daren't","daresn't","dasn't","didn't","doesn't","don't","d'ye","d'ya","e'en","e'er","'em","everybody's","everyone's","everything's","fo'c'sle","'gainst","g'day","girl's","giv'n","gi'z","gon't","guy's","hadn't","had've","hasn't","haven't","he'd","he'll","he's","here's","how'd","how'll","how're","how's","I'd","I'd've","I'd'nt","I'd'nt've","If'n","I'll","I'm","I'm'o","I've","isn't","it'd","it'll","it's","let's","loven't","ma'am","mayn't","may've","mightn't","might've","mine's","mustn't","mustn't've","must've","'neath","needn't","ne'er","o'clock","o'er","ol'","ought've","oughtn't","oughtn't've","'round","shalln't","shan'","shan't","she'd","she'll","she's","should've","shouldn't","shouldn't've","somebody's","someone's","something's","so're","so's","so've","that'll","that're","that's","that'd","there'd","there'll","there're","there's","these're","these've","they'd","they'd've","they'll","they're","they've","this's","those're","those've","'thout","'til","'tis","to've","'twas","'tween","'twere","w'all","w'at","wasn't","we'd","we'd've","we'll","we're","we've","weren't","what'd","what'll","what're","what's","what've","when's","where'd","where'll","where're","where's","where've","which'd","which'll","which're","which's","which've","who'd","who'd've","who'll","who're","who's","who've","why'd","why're","why's","willn't","won't","would've","wouldn't","wouldn't've","y'ain't","y'all","y'all'd've","y'all'd'n't've","y'all're","y'all'ren't","y'at","yes'm","y'know","you'd","you'll","you're","you've","when'd","willn't"],bt=class{constructor(){this.singleQuoteStyleEnabled=!0;this.singleQuoteStyle="''";this.doubleQuoteStyleEnabled=!0;this.doubleQuoteStyle='""'}},fr=class extends b{constructor(){super({nameKey:"rules.quote-style.name",descriptionKey:"rules.quote-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.math,f.inlineMath,f.html,f.templaterCommand]})}get OptionsClass(){return bt}apply(t,i){let n=t;return i.doubleQuoteStyleEnabled&&(i.doubleQuoteStyle==='""'?n=this.convertSmartDoubleQuotesToStraightQuotes(n):n=this.convertStraightDoubleQuotesToDoubleSmartQuotes(n)),i.singleQuoteStyleEnabled&&(i.singleQuoteStyle==="''"?n=this.convertSmartSingleQuotesToStraightQuotes(n):n=this.convertStraightSingleQuotesToSingleSmartQuotes(n)),n}convertSmartSingleQuotesToStraightQuotes(t){return t.replace(vu,"'")}convertSmartDoubleQuotesToStraightQuotes(t){return t.replace(bu,'"')}convertStraightDoubleQuotesToDoubleSmartQuotes(t){this.throwErrorIfNotEqualNumberOfQuotes(t,'"');let i="\u201C\u201D"[0],n="\u201C\u201D"[1],r=0;return t=t.replaceAll('"',()=>{let a=i;return r%2===1&&(a=n),r++,a}),t}convertStraightSingleQuotesToSingleSmartQuotes(t){let i="\u2018\u2019"[0],n="\u2018\u2019"[1];t=this.convertContractionStraightQuotesToSmartQuotes(t,i,n),t=this.convertPossessiveStraightQuotesToSmartQuotes(t,n),this.throwErrorIfNotEqualNumberOfQuotes(t,"'");let r=0;return t=t.replaceAll("'",()=>{let a=i;return r%2===1&&(a=n),r++,a}),t}convertContractionStraightQuotesToSmartQuotes(t,i,n){let r=function(a){return a[0]==="'"&&(a=i+a.substring(1)),a.replaceAll("'",n)};for(let a of Gy)t=t.replace(new RegExp(a,"gi"),r);return t}convertPossessiveStraightQuotesToSmartQuotes(t,i){return t.replace(/([a-zA-Z0-9]'s|s')/g,n=>n.replace("'",i))}throwErrorIfNotEqualNumberOfQuotes(t,i){if(rd(t,i)%2!==0)throw new Error(E("logs.uneven-amount-of-quotes").replace("{QUOTE}",i))}get exampleBuilders(){return[new y({description:"Smart quotes used in file are converted to straight quotes when styles are set to `Straight`",before:p` + # Double Quote Cases + “There are a bunch of different kinds of smart quote indicators” + „More than you would think” + «Including this one for Spanish» + # Single Quote Cases + ‘Simple smart quotes get replaced’ + ‚Another single style smart quote also gets replaced’ + ‹Even this style of single smart quotes is replaced› + `,after:p` + # Double Quote Cases + "There are a bunch of different kinds of smart quote indicators" + "More than you would think" + "Including this one for Spanish" + # Single Quote Cases + 'Simple smart quotes get replaced' + 'Another single style smart quote also gets replaced' + 'Even this style of single smart quotes is replaced' + `}),new y({description:"Straight quotes used in file are converted to smart quotes when styles are set to `Smart`",before:p` + "As you can see, these double quotes will be converted to smart quotes" + "Common contractions are handled as well. For example can't is updated to smart quotes." + "Nesting a quote in a quote like so: 'here I am' is handled correctly" + 'Single quotes by themselves are handled correctly' + Possessives are handled correctly: Pam's dog is really cool! + Templater commands are ignored: <% tp.date.now("YYYY-MM-DD", 7) %> + ${""} + Be careful as converting straight quotes to smart quotes requires you to have an even amount of quotes + once possessives and common contractions have been dealt with. If not, it will throw an error. + `,after:p` + “As you can see, these double quotes will be converted to smart quotes” + “Common contractions are handled as well. For example can’t is updated to smart quotes.” + “Nesting a quote in a quote like so: ‘here I am’ is handled correctly” + ‘Single quotes by themselves are handled correctly’ + Possessives are handled correctly: Pam’s dog is really cool! + Templater commands are ignored: <% tp.date.now("YYYY-MM-DD", 7) %> + ${""} + Be careful as converting straight quotes to smart quotes requires you to have an even amount of quotes + once possessives and common contractions have been dealt with. If not, it will throw an error. + `,options:{singleQuoteStyle:"\u2018\u2019",doubleQuoteStyle:"\u201C\u201D"}})]}get optionBuilders(){return[new U({OptionsClass:bt,nameKey:"rules.quote-style.single-quote-enabled.name",descriptionKey:"rules.quote-style.single-quote-enabled.description",optionsKey:"singleQuoteStyleEnabled"}),new ne({OptionsClass:bt,nameKey:"rules.quote-style.single-quote-style.name",descriptionKey:"rules.quote-style.single-quote-style.description",optionsKey:"singleQuoteStyle",records:[{value:"''",description:`Uses "'" instead of smart single quotes`},{value:"\u2018\u2019",description:'Uses "\u2018" and "\u2019" instead of straight single quotes'}]}),new U({OptionsClass:bt,nameKey:"rules.quote-style.double-quote-enabled.name",descriptionKey:"rules.quote-style.double-quote-enabled.description",optionsKey:"doubleQuoteStyleEnabled"}),new ne({OptionsClass:bt,nameKey:"rules.quote-style.double-quote-style.name",descriptionKey:"rules.quote-style.double-quote-style.description",optionsKey:"doubleQuoteStyle",records:[{value:'""',description:`Uses '"' instead of smart double quotes`},{value:"\u201C\u201D",description:"Uses '\u201C' and '\u201D' instead of straight double quotes"}]})]}};fr=T([b.register],fr);var nl=class{},yr=class extends b{constructor(){super({nameKey:"rules.re-index-footnotes.name",descriptionKey:"rules.re-index-footnotes.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return nl}apply(t,i){return Gd(t)}get exampleBuilders(){return[new y({description:"Re-indexing footnotes after having deleted previous footnotes",before:p` Lorem ipsum at aliquet felis.[^3] Donec dictum turpis quis pellentesque,[^5] et iaculis tortor condimentum. ${""} [^3]: first footnote @@ -1344,7 +1454,7 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape ${""} [^1]: first footnote [^2]: second footnote - `}),new x({description:"Re-indexing footnotes after inserting a footnote between",before:p` + `}),new y({description:"Re-indexing footnotes after inserting a footnote between",before:p` Lorem ipsum dolor sit amet, consectetur adipiscing elit.[^1] Aenean at aliquet felis. Donec dictum turpis quis ipsum pellentesque, et iaculis tortor condimentum.[^1a] Vestibulum nec blandit felis, vulputate finibus purus.[^2] Praesent quis iaculis diam. ${""} [^1]: first footnote @@ -1356,17 +1466,29 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape [^1]: first footnote [^2]: third footnote, inserted later [^3]: second footnotes - `}),new x({description:"Re-indexing duplicate footnote keys",before:p` - Lorem ipsum at aliquet felis.[^1] Donec dictum turpis quis pellentesque,[^1] et iaculis tortor condimentum. + `}),new y({description:"Re-indexing footnotes preserves multiple references to the same footnote index",before:p` + Lorem ipsum dolor sit amet, consectetur adipiscing elit.[^1] Aenean at aliquet felis. Donec dictum turpis quis ipsum pellentesque, et iaculis tortor condimentum.[^1a] Vestibulum nec blandit felis, vulputate finibus purus.[^2] Praesent quis iaculis diam.[^1] ${""} [^1]: first footnote - [^1]: second footnote + [^1a]: third footnote, inserted later + [^2]: second footnotes `,after:p` - Lorem ipsum at aliquet felis.[^1] Donec dictum turpis quis pellentesque,[^2] et iaculis tortor condimentum. + Lorem ipsum dolor sit amet, consectetur adipiscing elit.[^1] Aenean at aliquet felis. Donec dictum turpis quis ipsum pellentesque, et iaculis tortor condimentum.[^2] Vestibulum nec blandit felis, vulputate finibus purus.[^3] Praesent quis iaculis diam.[^1] ${""} [^1]: first footnote - [^2]: second footnote - `})]}get optionBuilders(){return[]}};cr=T([z.register],cr);var To=class{},dr=class extends z{get OptionsClass(){return To}get name(){return"Remove Consecutive List Markers"}get description(){return"Removes consecutive list markers. Useful when copy-pasting list items."}get type(){return"Content"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag],i,n=>n.replace(/^([ |\t]*)- - \b/gm,"$1- "))}get exampleBuilders(){return[new x({description:"Removing consecutive list markers.",before:p` + [^2]: third footnote, inserted later + [^3]: second footnotes + `}),new y({description:"Re-indexing footnotes condense duplicate footnotes into 1 when key and footnote are the same",before:p` + bla[^1], bla[^1], bla[^2] + [^1]: bla + [^1]: bla + [^2]: bla + `,after:p` + bla[^1], bla[^1], bla[^2] + ${""} + [^1]: bla + [^2]: bla + `})]}get optionBuilders(){return[]}};yr=T([b.register],yr);var rl=class{},br=class extends b{constructor(){super({nameKey:"rules.remove-consecutive-list-markers.name",descriptionKey:"rules.remove-consecutive-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return rl}apply(t,i){return t.replace(/^([ |\t]*)- - \b/gm,"$1- ")}get exampleBuilders(){return[new y({description:"Removing consecutive list markers.",before:p` - item 1 - - copypasted item A - item 2 @@ -1378,13 +1500,13 @@ ${Oe(a,o,Ue(s,t.tagArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscape - item 2 - indented item - copypasted item B - `})]}get optionBuilders(){return[]}};dr=T([z.register],dr);var pt=class extends z{get OptionsClass(){return pt}get name(){return"Remove Empty Lines Between List Markers and Checklists"}get description(){return"There should not be any empty lines between list markers and checklists."}get type(){return"Spacing"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag,y.thematicBreak],i,n=>{let r=function(c,u,m){let g=new RegExp(`^${u} -{2,}${u}$`,"gm"),h,f=c;do h=f.match(g),f=f.replaceAll(g,m);while(h);return f};return n=r(n,"(( |\\t)*- \\[( |x)\\]( |\\t)+.+)",`$1 -$5`),n=r(n,"(( |\\t)*\\d+\\.( |\\t)+.+)",`$1 -$4`),n=r(n,"(( |\\t)*\\+( |\\t)+.+)",`$1 -$4`),n=r(n,"(( |\\t)*-(?! \\[( |x)\\])( |\\t)+.+)",`$1 -$5`),r(n,"(( |\\t)*\\*( |\\t)+.+)",`$1 -$4`)})}get exampleBuilders(){return[new x({description:"",before:p` + `})]}get optionBuilders(){return[]}};br=T([b.register],br);var al=class{},vr=class extends b{constructor(){super({nameKey:"rules.remove-empty-lines-between-list-markers-and-checklists.name",descriptionKey:"rules.remove-empty-lines-between-list-markers-and-checklists.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.thematicBreak]});this.replaceEmptyLinesBetweenList=function(i,n,r){let a=new RegExp(`^${n} +{2,}${n}$`,"gm"),s,o=i;do s=o.match(a),o=o.replaceAll(a,r);while(s);return o}}get OptionsClass(){return al}apply(i,n){let r="(( |\\t)*- \\[( |x)\\]( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,r,`$1 +$5`);let a="(( |\\t)*\\d+\\.( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,a,`$1 +$4`);let s="(( |\\t)*\\+( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,s,`$1 +$4`);let o="(( |\\t)*-(?! \\[( |x)\\])( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,o,`$1 +$5`);let l="(( |\\t)*\\*( |\\t)+.+)";return this.replaceEmptyLinesBetweenList(i,l,`$1 +$4`)}get exampleBuilders(){return[new y({description:"",before:p` 1. Item 1 ${""} 2. Item 2 @@ -1431,7 +1553,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` * Item 1 \t* Subitem 1 * Item 2 - `})]}get optionBuilders(){return[]}};pt=T([z.register],pt);var Oo=class{},ur=class extends z{get OptionsClass(){return Oo}get name(){return"Remove Empty List Markers"}get description(){return"Removes empty list markers, i.e. list items without content."}get type(){return"Content"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag],i,n=>{let r=new RegExp(`^${Mt}(-|\\*|\\+|\\d+[.)]|- (\\[( |x)\\]))\\s*?$`,"gm");return n=n.replace(new RegExp(r.source+"\\n","gm"),""),n=n.replace(new RegExp("\\n"+r.source,"gm"),""),n.replace(r,"")})}get exampleBuilders(){return[new x({description:"Removes empty list markers.",before:p` + `})]}get optionBuilders(){return[]}};vr=T([b.register],vr);var sl=class{},xr=class extends b{constructor(){super({nameKey:"rules.remove-empty-list-markers.name",descriptionKey:"rules.remove-empty-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return sl}apply(t,i){let n=new RegExp(`^${Yt}(-|\\*|\\+|\\d+[.)]|- (\\[( |x)\\]))\\s*?$`,"gm");return t=t.replace(new RegExp(n.source+"\\n","gm"),""),t=t.replace(new RegExp("\\n"+n.source,"gm"),""),t.replace(n,"")}get exampleBuilders(){return[new y({description:"Removes empty list markers.",before:p` - item 1 - - item 2 @@ -1452,7 +1574,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` ${""} + list 3 item 1 + list 3 item 2 - `}),new x({description:"Removes empty ordered list markers.",before:p` + `}),new y({description:"Removes empty ordered list markers.",before:p` 1. item 1 2. 3. item 2 @@ -1470,7 +1592,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` 2. list 2 item 2 ${""} _Note that this rule does not make sure that the ordered list is sequential after removal_ - `}),new x({description:"Removes empty checklist markers.",before:p` + `}),new y({description:"Removes empty checklist markers.",before:p` - [ ] item 1 - [x] - [ ] item 2 @@ -1482,7 +1604,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` - [ ] item 2 ${""} _Note that this will affect checked and uncheck checked list items_ - `}),new x({description:"Removes empty list, checklist, and ordered list markers in callouts/blockquotes",before:p` + `}),new y({description:"Removes empty list, checklist, and ordered list markers in callouts/blockquotes",before:p` > Checklist in blockquote > - [ ] item 1 > - [x] @@ -1535,28 +1657,28 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` > > + item 1 > + item 2 - `})]}get optionBuilders(){return[]}};ur=T([z.register],ur);var Eo=class{},pr=class extends z{get OptionsClass(){return Eo}get name(){return"Remove Hyphenated Line Breaks"}get description(){return"Removes hyphenated line breaks. Useful when pasting text from textbooks."}get type(){return"Content"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag],i,n=>n.replace(/\b[-‐] \b/g,""))}get exampleBuilders(){return[new x({description:"Removing hyphenated line breaks.",before:p` + `})]}get optionBuilders(){return[]}};xr=T([b.register],xr);var ol=class{},wr=class extends b{constructor(){super({nameKey:"rules.remove-hyphenated-line-breaks.name",descriptionKey:"rules.remove-hyphenated-line-breaks.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ol}apply(t,i){return t.replace(/\b[-‐] \b/g,"")}get exampleBuilders(){return[new y({description:"Removing hyphenated line breaks.",before:p` This text has a linebr‐ eak. `,after:p` This text has a linebreak. - `})]}get optionBuilders(){return[]}};pr=T([z.register],pr);var Ao=class{},mt=class extends z{get OptionsClass(){return Ao}get name(){return"Remove Hyphens on Paste"}get description(){return"Removes hyphens from the text to paste"}get type(){return"Paste"}apply(i,t){return i.replace(/(\S)[-‐]\s+\n?(?=\w)/g,"$1")}get exampleBuilders(){return[new x({description:"Remove hyphen in content to paste",before:p` + `})]}get optionBuilders(){return[]}};wr=T([b.register],wr);var ll=class{},vt=class extends b{constructor(){super({nameKey:"rules.remove-hyphens-on-paste.name",descriptionKey:"rules.remove-hyphens-on-paste.description",type:"Paste"})}get OptionsClass(){return ll}apply(t,i){return t.replace(/([^\s-])[-‐]\s+\n?(?=\w)/g,"$1")}get exampleBuilders(){return[new y({description:"Remove hyphen in content to paste",before:p` Text that was cool but hyper- tension made it uncool. `,after:p` Text that was cool but hypertension made it uncool. - `})]}get optionBuilders(){return[]}};mt=T([z.register],mt);var Co=class{},gt=class extends z{get OptionsClass(){return Co}get name(){return"Remove Leading or Trailing Whitespace on Paste"}get description(){return"Removes any leading non-tab whitespace and all trailing whitespace for the text to paste"}get type(){return"Paste"}apply(i,t){return i.replace(/^[\n ]+|\s+$/g,"")}get exampleBuilders(){return[new x({description:"Removes leading spaces and newline characters",before:p` + `})]}get optionBuilders(){return[]}};vt=T([b.register],vt);var cl=class{},xt=class extends b{constructor(){super({nameKey:"rules.remove-leading-or-trailing-whitespace-on-paste.name",descriptionKey:"rules.remove-leading-or-trailing-whitespace-on-paste.description",type:"Paste"})}get OptionsClass(){return cl}apply(t,i){return t.replace(/^[\n ]+|\s+$/g,"")}get exampleBuilders(){return[new y({description:"Removes leading spaces and newline characters",before:p` ${""} ${""} This text was really indented ${""} `,after:p` This text was really indented - `}),new x({description:"Leaves leading tabs alone",before:p` + `}),new y({description:"Leaves leading tabs alone",before:p` ${""} ${""} \t\tThis text is really indented ${""} - `,after:" This text is really indented"})]}get optionBuilders(){return[]}};gt=T([z.register],gt);var Lo=class{},ht=class extends z{get OptionsClass(){return Lo}get name(){return"Remove Leftover Footnotes from Quote on Paste"}get description(){return"Removes any leftover footnote references for the text to paste"}get type(){return"Paste"}apply(i,t){return i.replace(/(\D)[.,]\d+/g,"$1")}get exampleBuilders(){return[new x({description:"Footnote reference removed",before:p` + `,after:" This text is really indented"})]}get optionBuilders(){return[]}};xt=T([b.register],xt);var dl=class{},wt=class extends b{constructor(){super({nameKey:"rules.remove-leftover-footnotes-from-quote-on-paste.name",descriptionKey:"rules.remove-leftover-footnotes-from-quote-on-paste.description",type:"Paste"})}get OptionsClass(){return dl}apply(t,i){return t.replace(/(\D)[.,]\d+/g,"$1")}get exampleBuilders(){return[new y({description:"Footnote reference removed",before:p` He was sure that he would get off without doing any time, but the cops had other plans.50 ${""} _Note that the format for footnote references to move is a dot or comma followed by any number of digits_ @@ -1564,7 +1686,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` He was sure that he would get off without doing any time, but the cops had other plans ${""} _Note that the format for footnote references to move is a dot or comma followed by any number of digits_ - `})]}get optionBuilders(){return[]}};ht=T([z.register],ht);var qo=class{},mr=class extends z{get OptionsClass(){return qo}get name(){return"Remove link spacing"}get description(){return"Removes spacing around link text."}get type(){return"Spacing"}apply(i,t){return i=Jc(i),Xl(i)}get exampleBuilders(){return[new x({description:"Space in regular markdown link text",before:p` + `})]}get optionBuilders(){return[]}};wt=T([b.register],wt);var ul=class{},kr=class extends b{constructor(){super({nameKey:"rules.remove-link-spacing.name",descriptionKey:"rules.remove-link-spacing.description",type:"Spacing"})}get OptionsClass(){return ul}apply(t,i){return t=Xd(t),wu(t)}get exampleBuilders(){return[new y({description:"Space in regular markdown link text",before:p` [ here is link text1 ](link_here) [ here is link text2](link_here) [here is link text3 ](link_here) @@ -1582,7 +1704,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` [](link_here) **Note that image markdown syntax does not get affected even if it is transclusion:** ![\there is link text6 ](link_here) - `}),new x({description:"Space in wiki link text",before:p` + `}),new y({description:"Space in wiki link text",before:p` [[link_here| here is link text1 ]] [[link_here|here is link text2 ]] [[link_here| here is link text3]] @@ -1598,9 +1720,9 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` [[link_here|here is link text5]] ![[link_here|here is link text6]] [[link_here]] - `})]}get optionBuilders(){return[]}};mr=T([z.register],mr);var _o=class{},ft=class extends z{get OptionsClass(){return _o}get name(){return"Remove Multiple Blank Lines on Paste"}get description(){return"Condenses multiple blank lines down into one blank line for the text to paste"}get type(){return"Paste"}apply(i,t){return i.replace(/\n{3,}/g,` + `})]}get optionBuilders(){return[]}};kr=T([b.register],kr);var pl=class{},kt=class extends b{constructor(){super({nameKey:"rules.remove-multiple-blank-lines-on-paste.name",descriptionKey:"rules.remove-multiple-blank-lines-on-paste.description",type:"Paste"})}get OptionsClass(){return pl}apply(t,i){return t.replace(/\n{3,}/g,` -`)}get exampleBuilders(){return[new x({description:"Multiple blanks lines condensed down to one",before:p` +`)}get exampleBuilders(){return[new y({description:"Multiple blanks lines condensed down to one",before:p` Here is the first line. ${""} ${""} @@ -1611,7 +1733,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` Here is the first line. ${""} Here is some more text. - `}),new x({description:"Text with only one blank line in a row is left alone",before:p` + `}),new y({description:"Text with only one blank line in a row is left alone",before:p` First line. ${""} Last line. @@ -1619,11 +1741,11 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` First line. ${""} Last line. - `})]}get optionBuilders(){return[]}};ft=T([z.register],ft);var Mo=class{},gr=class extends z{get OptionsClass(){return Mo}get name(){return"Remove Multiple Spaces"}get description(){return"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. "}get type(){return"Content"}apply(i,t){return R([y.code,y.inlineCode,y.math,y.inlineMath,y.yaml,y.link,y.wikiLink,y.tag,y.table],i,n=>(n=n.replace(/(?!^>)([^\s])( ){2,}([^\s])/gm,"$1 $3"),n))}get exampleBuilders(){return[new x({description:"Removing double and triple space.",before:p` + `})]}get optionBuilders(){return[]}};kt=T([b.register],kt);var ml=class{},zr=class extends b{constructor(){super({nameKey:"rules.remove-multiple-spaces.name",descriptionKey:"rules.remove-multiple-spaces.description",type:"Content",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.inlineMath,f.yaml,f.link,f.wikiLink,f.tag,f.table]})}get OptionsClass(){return ml}apply(t,i){return t=t.replace(/(?!^>)([^\s])( ){2,}([^\s])/gm,"$1 $3"),t}get exampleBuilders(){return[new y({description:"Removing double and triple space.",before:p` Lorem ipsum dolor sit amet. `,after:p` Lorem ipsum dolor sit amet. - `})]}get optionBuilders(){return[]}};gr=T([z.register],gr);var yt=class{constructor(){this.includeFullwidthForms=!0;this.includeCJKSymbolsAndPunctuation=!0;this.includeDashes=!0;this.otherSymbols=""}},hr=class extends z{get OptionsClass(){return yt}get name(){return"Remove Space around Characters"}get description(){return"Ensures that certain characters are not surrounded by whitespace (either single spaces or a tab). Note that this may causes issues with markdown format in some cases."}get type(){return"Spacing"}apply(i,t){let n="";if(t.includeFullwidthForms&&(n+="\uFF01-\uFF5E"),t.includeCJKSymbolsAndPunctuation&&(n+="\u3000-\u30FF"),t.includeDashes&&(n+="\u2013\u2014"),n+=Zr(t.otherSymbols),!n)return i;let r=new RegExp(`([ ])+([${n}])`,"g"),a=new RegExp(`([${n}])([ ])+`,"g"),s=function(l){return l.replace(r,"$2").replace(a,"$1")},o=R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag,y.list],i,s);return o=id(o,s),o}get exampleBuilders(){return[new x({description:"Remove Spaces and Tabs around Fullwidth Characters",before:p` + `})]}get optionBuilders(){return[]}};zr=T([b.register],zr);var zt=class{constructor(){this.includeFullwidthForms=!0;this.includeCJKSymbolsAndPunctuation=!0;this.includeDashes=!0;this.otherSymbols=""}},Sr=class extends b{constructor(){super({nameKey:"rules.remove-space-around-characters.name",descriptionKey:"rules.remove-space-around-characters.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return zt}apply(t,i){let n="";if(i.includeFullwidthForms&&(n+="\uFF01-\uFF5E"),i.includeCJKSymbolsAndPunctuation&&(n+="\u3000-\u30FF"),i.includeDashes&&(n+="\u2013\u2014"),n+=In(i.otherSymbols),!n)return t;let r=new RegExp(`([ ])+([${n}])`,"g"),a=new RegExp(`([${n}])([ ])+`,"g"),s=function(l){return l.replace(r,"$2").replace(a,"$1")},o=qe([f.list],t,s);return o=Ma(o,s),o}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs around Fullwidth Characters",before:p` Full list of affected characters: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,.:;!?"'`^~ ̄_&@#%+-*=<>()[]{}⦅⦆|¦/\¬$£¢₩¥。、「」『』〔〕【】—…–《》〈〉 This is a fullwidth period\t 。 with text after it. This is a fullwidth comma\t, with text after it. @@ -1641,27 +1763,27 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` This is a fullwidth colon:with text after it. This is a fullwidth semicolon;with text after it. Removes space at start of line - `}),new x({description:"Fullwidth Characters in List Do not Affect List Markdown Syntax",before:p` + `}),new y({description:"Fullwidth Characters in List Do not Affect List Markdown Syntax",before:p` # List indicators should not have the space after them removed if they are followed by a fullwidth character ${""} - [ contents here] - - \t[ more contents here] more text here - + \t[ another item here] + - [ more contents here] more text here + + [ another item here] * [ one last item here] ${""} # Nested in a block quote ${""} > - [ contents here] - > - \t[ more contents here] more text here - > + \t[ another item here] + > - [ more contents here] more text here + > + [ another item here] > * [ one last item here] ${""} # Doubly nested in a block quote ${""} > The following is doubly nested > > - [ contents here] - > > - \t[ more contents here] more text here - > > + \t[ another item here] + > > - [ more contents here] more text here + > > + [ another item here] > > * [ one last item here] `,after:p` # List indicators should not have the space after them removed if they are followed by a fullwidth character @@ -1685,19 +1807,37 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` > > - [more contents here]more text here > > + [another item here] > > * [one last item here] - `})]}get optionBuilders(){return[new U({name:"Include Fullwidth Forms",description:'Include Fullwidth Forms Unicode block',OptionsClass:yt,optionsKey:"includeFullwidthForms"}),new U({name:"Include CJK Symbols and Punctuation",description:'Include CJK Symbols and Punctuation Unicode block',OptionsClass:yt,optionsKey:"includeCJKSymbolsAndPunctuation"}),new U({name:"Include Dashes",description:"Include en dash (\u2013) and em dash (\u2014)",OptionsClass:yt,optionsKey:"includeDashes"}),new li({name:"Other symbols",description:"Other symbols to include",OptionsClass:yt,optionsKey:"otherSymbols"})]}};hr=T([z.register],hr);var Ka=class{constructor(){this.punctuationToRemove=".,;:!\u3002\uFF0C\uFF1B\uFF1A\uFF01"}},fr=class extends z{get OptionsClass(){return Ka}get name(){return"Remove Trailing Punctuation in Heading"}get description(){return"Removes the specified punctuation from the end of headings making sure to ignore the semicolon at the end of [HTML entity references](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references)."}get type(){return"Heading"}apply(i,t){return R([y.code,y.math,y.yaml],i,n=>n.replaceAll(Ri,(r,a="",s="",o="",l="",d="")=>{if(l==""||l.match(/&[^\s]+;$/mi))return r;let c=l.charAt(l.length-1);return t.punctuationToRemove.includes(c)?a+s+o+l.substring(0,l.length-1)+d:r}))}get exampleBuilders(){return[new x({description:"Removes punctuation from the end of a heading",before:p` + `})]}get optionBuilders(){return[new U({nameKey:"rules.remove-space-around-characters.include-fullwidth-forms.name",descriptionKey:"rules.remove-space-around-characters.include-fullwidth-forms.description",OptionsClass:zt,optionsKey:"includeFullwidthForms"}),new U({nameKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.name",descriptionKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.description",OptionsClass:zt,optionsKey:"includeCJKSymbolsAndPunctuation"}),new U({nameKey:"rules.remove-space-around-characters.include-dashes.name",descriptionKey:"rules.remove-space-around-characters.include-dashes.description",OptionsClass:zt,optionsKey:"includeDashes"}),new Ve({nameKey:"rules.remove-space-around-characters.other-symbols.name",descriptionKey:"rules.remove-space-around-characters.other-symbols.description",OptionsClass:zt,optionsKey:"otherSymbols"})]}};Sr=T([b.register],Sr);var Ar=class{constructor(){this.charactersToRemoveSpacesBefore=",!?;:).\u2019\u201D]";this.charactersToRemoveSpacesAfter="\xBF\xA1\u2018\u201C(["}},Tr=class extends b{constructor(){super({nameKey:"rules.remove-space-before-or-after-characters.name",descriptionKey:"rules.remove-space-before-or-after-characters.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Ar}apply(t,i){let n=In(i.charactersToRemoveSpacesBefore),r=In(i.charactersToRemoveSpacesAfter);if(!n&&!r)return t;let a=new RegExp(`([ ])+([${n}])`,"g"),s=new RegExp(`([${r}])([ ])+`,"g"),o=function(d){return d.replace(a,"$2").replace(s,"$1")},l=qe([f.list,f.html],t,o);return l=Ma(l,o),l}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs Before and After Default Symbol Set",before:p` + In the end , the space gets removed\t . + The space before the question mark was removed right ? + The space before the exclamation point gets removed ! + A semicolon ; and colon : have spaces removed before them + ‘ Text in single quotes ’ + “ Text in double quotes ” + [ Text in square braces ] + ( Text in parenthesis ) + `,after:p` + In the end, the space gets removed. + The space before the question mark was removed right? + The space before the exclamation point gets removed! + A semicolon; and colon: have spaces removed before them + ‘Text in single quotes’ + “Text in double quotes” + [Text in square braces] + (Text in parenthesis) + `})]}get optionBuilders(){return[new Ve({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.description",OptionsClass:Ar,optionsKey:"charactersToRemoveSpacesBefore"}),new Ve({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.description",OptionsClass:Ar,optionsKey:"charactersToRemoveSpacesAfter"})]}};Tr=T([b.register],Tr);var ds=class{constructor(){this.punctuationToRemove=".,;:!\u3002\uFF0C\uFF1B\uFF1A\uFF01"}},Er=class extends b{constructor(){super({nameKey:"rules.remove-trailing-punctuation-in-heading.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml]})}get OptionsClass(){return ds}apply(t,i){return t.replaceAll(ji,(n,r="",a="",s="",o="",l="")=>{if(o==""||o.match(yu))return n;let d=o.charAt(o.length-1);return i.punctuationToRemove.includes(d)?r+a+s+o.substring(0,o.length-1)+l:n})}get exampleBuilders(){return[new y({description:"Removes punctuation from the end of a heading",before:p` # Heading ends in a period. ## Other heading ends in an exclamation mark! ## `,after:p` # Heading ends in a period ## Other heading ends in an exclamation mark ## - `}),new x({description:"HTML Entities at the end of a heading is ignored",before:p` + `}),new y({description:"HTML Entities at the end of a heading is ignored",before:p` # Heading 1 ## Heading & `,after:p` # Heading 1 ## Heading & - `})]}get optionBuilders(){return[new li({OptionsClass:Ka,name:"Trailing Punctuation",description:"The trailing punctuation to remove from the headings in the file.",optionsKey:"punctuationToRemove"})]}};fr=T([z.register],fr);var Wa=class{constructor(){this.yamlKeysToRemove=[]}},yr=class extends z{get OptionsClass(){return Wa}get name(){return"Remove YAML Keys"}get description(){return"Removes the YAML keys specified"}get type(){return"YAML"}apply(i,t){let n=t.yamlKeysToRemove,r=i.match(Se);if(!r||n.length===0)return i;let a=r[1];for(let s of n){let o=s.trim();o.endsWith(":")&&(o=o.substring(0,o.length-1)),a=Ji(a,o)}return i.replace(r[1],a)}get exampleBuilders(){return[new x({description:'Removes the values specified in `YAML Keys to Remove` = "status:\nkeywords\ndate"',before:p` + `})]}get optionBuilders(){return[new Ve({OptionsClass:ds,nameKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.description",optionsKey:"punctuationToRemove"})]}};Er=T([b.register],Er);var us=class{constructor(){this.yamlKeysToRemove=[]}},Lr=class extends b{constructor(){super({nameKey:"rules.remove-yaml-keys.name",descriptionKey:"rules.remove-yaml-keys.description",type:"YAML"})}get OptionsClass(){return us}apply(t,i){let n=i.yamlKeysToRemove,r=t.match(Se);if(!r||n.length===0)return t;let a=r[1];for(let s of n){let o=s.trim();o.endsWith(":")&&(o=o.substring(0,o.length-1)),a=st(a,o)}return t.replace(r[1],a)}get exampleBuilders(){return[new y({description:'Removes the values specified in `YAML Keys to Remove` = "status:\nkeywords\ndate"',before:p` --- language: Typescript type: programming @@ -1722,7 +1862,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` # Header Context ${""} Text - `,options:{yamlKeysToRemove:["status:","keywords","date"]}})]}get optionBuilders(){return[new he({OptionsClass:Wa,name:"YAML Keys to Remove",description:"The yaml keys to remove from the yaml frontmatter with or without colons",optionsKey:"yamlKeysToRemove"})]}};yr=T([z.register],yr);var Bo=class{},br=class extends z{get OptionsClass(){return Bo}get name(){return"Space after list markers"}get description(){return"There should be a single space after list markers and checkboxes."}get type(){return"Spacing"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag],i,n=>(n=n.replace(/^(\s*\d+\.|\s*[-+*])[^\S\r\n]+/gm,"$1 "),n.replace(/^(\s*\d+\.|\s*[-+*]\s+\[[ xX]\])[^\S\r\n]+/gm,"$1 ")))}get exampleBuilders(){return[new x({description:"",before:p` + `,options:{yamlKeysToRemove:["status:","keywords","date"]}})]}get optionBuilders(){return[new be({OptionsClass:us,nameKey:"rules.remove-yaml-keys.yaml-keys-to-remove.name",descriptionKey:"rules.remove-yaml-keys.yaml-keys-to-remove.description",optionsKey:"yamlKeysToRemove"})]}};Lr=T([b.register],Lr);var gl=class{},Or=class extends b{constructor(){super({nameKey:"rules.space-after-list-markers.name",descriptionKey:"rules.space-after-list-markers.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return gl}apply(t,i){return t=t.replace(/^(\s*\d+\.|\s*[-+*])[^\S\r\n]+/gm,"$1 "),t.replace(/^(\s*\d+\.|\s*[-+*]\s+\[[ xX]\])[^\S\r\n]+/gm,"$1 ")}get exampleBuilders(){return[new y({description:"",before:p` 1. Item 1 2. Item 2 ${""} @@ -1736,23 +1876,23 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` - [ ] Item 1 - [x] Item 2 \t- [ ] Item 3 - `})]}get optionBuilders(){return[]}};br=T([z.register],br);var Io=class{},vr=class extends z{get OptionsClass(){return Io}get name(){return"Space between Chinese Japanese or Korean and English or numbers"}get description(){return"Ensures that Chinese, Japanese, or Korean and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)"}get type(){return"Spacing"}apply(i,t){let n=/(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})( *)(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+'"([{¥$]|\*[^*])/gmu,r=/(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+;:'"°%$)\]}]|[^*]\*)( *)(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})/gmu,a=function(s){return s.replace(n,"$1 $3").replace(r,"$1 $3")};return R([y.code,y.inlineCode,y.yaml,y.image,y.link,y.wikiLink,y.tag,y.math,y.inlineMath],i,s=>{let o=R([y.italics,y.bold],s,a);return o=Xc(o,a),o=ed(o,a),o})}get exampleBuilders(){return[new x({description:"Space between Chinese and English",before:p` + `})]}get optionBuilders(){return[]}};Or=T([b.register],Or);var hl=class{},Cr=class extends b{constructor(){super({nameKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.name",descriptionKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode,f.yaml,f.image,f.link,f.wikiLink,f.tag,f.math,f.inlineMath,f.html]})}get OptionsClass(){return hl}apply(t,i){let n=/(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})( *)(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+'"([¥$]|\*[^*])/gmu,r=/(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+;:'"°%$)\]]|[^*]\*)( *)(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})/gmu,a=`${f.link.placeholder}|${f.inlineMath.placeholder}|${f.inlineCode.placeholder}|${f.wikiLink.placeholder}`.replaceAll("{","\\{").replaceAll("}","\\}"),s=new RegExp(`(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})( *)(${a})`,"gmu"),o=new RegExp(`(${a})( *)(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})`,"gmu"),l=function(c){return c.replace(n,"$1 $3").replace(r,"$1 $3")},d=qe([f.italics,f.bold],t,l);return d=d.replace(s,"$1 $3").replace(o,"$1 $3"),d=eu(d,l),d=iu(d,l),d}get exampleBuilders(){return[new y({description:"Space between Chinese and English",before:p` 中文字符串english中文字符串。 `,after:p` 中文字符串 english 中文字符串。 - `}),new x({description:"Space between Chinese and link",before:p` + `}),new y({description:"Space between Chinese and link",before:p` 中文字符串[english](http://example.com)中文字符串。 `,after:p` 中文字符串 [english](http://example.com) 中文字符串。 - `}),new x({description:"Space between Chinese and inline code block",before:p` + `}),new y({description:"Space between Chinese and inline code block",before:p` 中文字符串\`code\`中文字符串。 `,after:p` 中文字符串 \`code\` 中文字符串。 - `}),new x({description:"No space between Chinese and English in tag",before:p` + `}),new y({description:"No space between Chinese and English in tag",before:p` #标签A #标签2标签 `,after:p` #标签A #标签2标签 - `}),new x({description:"Make sure that spaces are not added between italics and chinese characters to preserve markdown syntax",before:p` + `}),new y({description:"Make sure that spaces are not added between italics and chinese characters to preserve markdown syntax",before:p` _这是一个数学公式_ *这是一个数学公式english* ${""} @@ -1768,7 +1908,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` ${""} **_ 这是一 _ 个数学公式** *这是一 hello__ 个数学 world 公式 __* - `}),new x({description:"Images and links are ignored",before:p` + `}),new y({description:"Images and links are ignored",before:p` [[这是一个数学公式english]] ![[这是一个数学公式english.jpg]] [这是一个数学公式english](这是一个数学公式english.md) @@ -1778,7 +1918,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` ![[这是一个数学公式english.jpg]] [这是一个数学公式english](这是一个数学公式english.md) ![这是一个数学公式english](这是一个数学公式english.jpg) - `}),new x({description:"Space between CJK and English",before:p` + `}),new y({description:"Space between CJK and English",before:p` 日本語englishひらがな カタカナenglishカタカナ ハンカクカタカナenglish123全角数字 @@ -1788,7 +1928,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` カタカナ english カタカナ ハンカクカタカナ english123全角数字 한글 english 한글 - `})]}get optionBuilders(){return[]}};vr=T([z.register],vr);var Va=class{constructor(){this.style="consistent"}},xr=class extends z{get OptionsClass(){return Va}get name(){return"Strong Style"}get description(){return"Makes sure the strong style is consistent."}get type(){return"Content"}apply(i,t){return R([y.code,y.yaml,y.link,y.wikiLink,y.tag,y.math,y.inlineMath],i,n=>Ca(n,t.style,"strong"))}get exampleBuilders(){return[new x({description:"Strong indicators should use underscores when style is set to 'underscore'",before:p` + `})]}get optionBuilders(){return[]}};Cr=T([b.register],Cr);var ps=class{constructor(){this.style="consistent"}},qr=class extends b{constructor(){super({nameKey:"rules.strong-style.name",descriptionKey:"rules.strong-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.yaml,f.link,f.wikiLink,f.tag,f.math,f.inlineMath]})}get OptionsClass(){return ps}apply(t,i){return qa(t,i.style,"strong")}get exampleBuilders(){return[new y({description:"Strong indicators should use underscores when style is set to 'underscore'",before:p` # Strong/Bold Cases ${""} **Test bold** @@ -1818,7 +1958,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` ${""} * List Item1 with __bold text__ * List Item2 - `,options:{style:"underscore"}}),new x({description:"Strong indicators should use asterisks when style is set to 'asterisk'",before:p` + `,options:{style:"underscore"}}),new y({description:"Strong indicators should use asterisks when style is set to 'asterisk'",before:p` # Strong/Bold Cases ${""} __Test bold__ @@ -1842,7 +1982,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` This is **_nested emphasis_ and ending bold** ${""} _Test emphasis_ - `,options:{style:"asterisk"}}),new x({description:"Strong indicators should use consistent style based on first strong indicator in a file when style is set to 'consistent'",before:p` + `,options:{style:"asterisk"}}),new y({description:"Strong indicators should use consistent style based on first strong indicator in a file when style is set to 'consistent'",before:p` # Strong First Strong Is an Asterisk ${""} **First bold** @@ -1864,7 +2004,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` This is **_nested emphasis_ and ending bold** ${""} **Test bold** - `,options:{style:"consistent"}}),new x({description:"Strong indicators should use consistent style based on first strong indicator in a file when style is set to 'consistent'",before:p` + `,options:{style:"consistent"}}),new y({description:"Strong indicators should use consistent style based on first strong indicator in a file when style is set to 'consistent'",before:p` # Strong First Strong Is an Underscore ${""} __First bold__ @@ -1886,19 +2026,19 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` This is ___nested emphasis_ and ending bold__ ${""} __Test bold__ - `,options:{style:"consistent"}})]}get optionBuilders(){return[new ve({OptionsClass:Va,name:"Style",description:"The style used to denote strong/bolded content",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of strong is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure ** is the strong indicator"},{value:"underscore",description:"Makes sure __ is the strong indicator"}]})]}};xr=T([z.register],xr);var Ua=class{constructor(){this.twoSpaceLineBreak=!1}},wr=class extends z{get OptionsClass(){return Ua}get name(){return"Trailing spaces"}get description(){return"Removes extra spaces after every line."}get type(){return"Spacing"}apply(i,t){return R([y.code,y.math,y.yaml,y.link,y.wikiLink,y.tag],i,n=>t.twoSpaceLineBreak?(n=n.replace(/(\S)[ \t]$/gm,"$1"),n=n.replace(/(\S)[ \t]{3,}$/gm,"$1"),n=n.replace(/(\S)( ?\t\t? ?)$/gm,"$1"),n):n.replace(/[ \t]+$/gm,""))}get exampleBuilders(){return[new x({description:"Removes trailing spaces and tabs.",before:p` + `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:ps,nameKey:"rules.strong-style.style.name",descriptionKey:"rules.strong-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of strong is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure ** is the strong indicator"},{value:"underscore",description:"Makes sure __ is the strong indicator"}]})]}};qr=T([b.register],qr);var ms=class{constructor(){this.twoSpaceLineBreak=!1}},Mr=class extends b{constructor(){super({nameKey:"rules.trailing-spaces.name",descriptionKey:"rules.trailing-spaces.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ms}apply(t,i){return i.twoSpaceLineBreak?(t=t.replace(/(\S)[ \t]$/gm,"$1"),t=t.replace(/(\S)[ \t]{3,}$/gm,"$1"),t=t.replace(/(\S)( ?\t\t? ?)$/gm,"$1"),t):t.replace(/[ \t]+$/gm,"")}get exampleBuilders(){return[new y({description:"Removes trailing spaces and tabs.",before:p` # H1 Line with trailing spaces and tabs. ${""} `,after:p` # H1 Line with trailing spaces and tabs. - `}),new x({description:"With `Two Space Linebreak = true`",before:p` + `}),new y({description:"With `Two Space Linebreak = true`",before:p` # H1 Line with trailing spaces and tabs. ${""} `,after:p` # H1 Line with trailing spaces and tabs. ${""} - `,options:{twoSpaceLineBreak:!0}})]}get optionBuilders(){return[new U({OptionsClass:Ua,name:"Two Space Linebreak",description:'Ignore two spaces followed by a line break ("Two Space Rule").',optionsKey:"twoSpaceLineBreak"})]}};wr=T([z.register],wr);var Fo=class{},kr=class extends z{get OptionsClass(){return Fo}get name(){return"Two Spaces Between Lines with Content"}get description(){return"Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items"}get type(){return"Content"}apply(i,t){return R([y.obsidianMultiLineComments,y.yaml,y.table],i,Zc)}get exampleBuilders(){return[new x({description:"Make sure two spaces are added to the ends of lines that have content on it and the next line for lists, blockquotes, and paragraphs",before:p` + `,options:{twoSpaceLineBreak:!0}})]}get optionBuilders(){return[new U({OptionsClass:ms,nameKey:"rules.trailing-spaces.twp-space-line-break.name",descriptionKey:"rules.trailing-spaces.twp-space-line-break.description",optionsKey:"twoSpaceLineBreak"})]}};Mr=T([b.register],Mr);var fl=class{},Ir=class extends b{constructor(){super({nameKey:"rules.two-spaces-between-lines-with-content.name",descriptionKey:"rules.two-spaces-between-lines-with-content.description",type:"Content",ruleIgnoreTypes:[f.obsidianMultiLineComments,f.yaml,f.table]})}get OptionsClass(){return fl}apply(t,i){return Zd(t)}get exampleBuilders(){return[new y({description:"Make sure two spaces are added to the ends of lines that have content on it and the next line for lists, blockquotes, and paragraphs",before:p` # Heading 1 First paragraph stays as the first paragraph ${""} @@ -1976,7 +2116,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` Even more content here ${""} - `})]}get optionBuilders(){return[]}};kr=T([z.register],kr);var Ga=class{constructor(){this.listStyle="consistent"}},zr=class extends z{get OptionsClass(){return Ga}get name(){return"Unordered List Style"}get description(){return"Makes sure that unordered lists follow the style specified."}get type(){return"Content"}apply(i,t){return R([y.code,y.math,y.yaml,y.tag],i,n=>sd(n,t.listStyle))}get exampleBuilders(){return[new x({description:"Unordered lists have their indicator updated to `*` when `List item style = 'consistent'` and `*` is the first unordered list indicator",before:p` + `})]}get optionBuilders(){return[]}};Ir=T([b.register],Ir);var gs=class{constructor(){this.listStyle="consistent"}},_r=class extends b{constructor(){super({nameKey:"rules.unordered-list-style.name",descriptionKey:"rules.unordered-list-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.tag]})}get OptionsClass(){return gs}apply(t,i){return su(t,i.listStyle)}get exampleBuilders(){return[new y({description:"Unordered lists have their indicator updated to `*` when `List item style = 'consistent'` and `*` is the first unordered list indicator",before:p` 1. ordered item 1 2. ordered item 2 ${""} @@ -2012,7 +2152,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` * Sublist 3 item 1 * Sublist 3 item 2 ${""} - `}),new x({description:"Unordered lists have their indicator updated to `-` when `List item style = '-'`",before:p` + `}),new y({description:"Unordered lists have their indicator updated to `-` when `List item style = '-'`",before:p` - Item 1 * Sublist 1 item 1 * Sublist 1 item 2 @@ -2050,7 +2190,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` - Sub item 2 1. Item 3 - Sub item 3 - `,options:{listStyle:"-"}}),new x({description:"Unordered lists have their indicator updated to `*` when `List item style = '*'`",before:p` + `,options:{listStyle:"-"}}),new y({description:"Unordered lists have their indicator updated to `*` when `List item style = '*'`",before:p` - Item 1 * Sublist 1 item 1 * Sublist 1 item 2 @@ -2072,7 +2212,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` * Sublist 3 item 1 * Sublist 3 item 2 ${""} - `,options:{listStyle:"*"}}),new x({description:"Unordered list in blockquote has list item indicators set to `+` when `List item style = '-'`",before:p` + `,options:{listStyle:"*"}}),new y({description:"Unordered list in blockquote has list item indicators set to `+` when `List item style = '-'`",before:p` > - Item 1 > + Item 2 > > * Subitem 1 @@ -2086,10 +2226,10 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` > > + Subitem 2 > > + Sub sub item 1 > > + Subitem 3 - `,options:{listStyle:"+"}})]}get optionBuilders(){return[new ve({OptionsClass:Ga,name:"List item style",description:"The list item style to use in unordered lists",optionsKey:"listStyle",records:[{value:"consistent",description:"Makes sure unordered list items use a consistent list item indicator in the file which will be based on the first list item found"},{value:"-",description:"Makes sure unordered list items use `-` as their indicator"},{value:"*",description:"Makes sure unordered list items use `*` as their indicator"},{value:"+",description:"Makes sure unordered list items use `+` as their indicator"}]})]}};zr=T([z.register],zr);var Ci=class{constructor(){this.priorityKeysAtStartOfYaml=!0;this.yamlKeyPrioritySortOrder=[];this.yamlSortOrderForOtherKeys="None"}};T([z.noSettingControl()],Ci.prototype,"dateModifiedKey",2),T([z.noSettingControl()],Ci.prototype,"currentTimeFormatted",2),T([z.noSettingControl()],Ci.prototype,"yamlTimestampDateModifiedEnabled",2);var bt=class extends z{get OptionsClass(){return Ci}get name(){return"YAML Key Sort"}get description(){return"Sorts the YAML keys based on the order and priority specified. Note: may remove blank lines as well."}get type(){return"YAML"}apply(i,t){let n=i.match(Se);if(!n)return i;let r=n[1],a=t.priorityKeysAtStartOfYaml,s=function(O,C){return O==C?C:Oe(C,t.dateModifiedKey," "+t.currentTimeFormatted)},o=function(O,C,M){let S=`${C}${O}`;return M&&(S=`${O}${C}`),t.yamlTimestampDateModifiedEnabled&&(S=s(n[1],S)),i.replace(n[1],S)},l=function(O,C){let M="";for(let S of C){let q=Ee(O,S);q!==null&&(q.includes(` -`)?M+=`${S}:${q} -`:M+=`${S}: ${q} -`,O=Ji(O,S))}return{remainingYaml:O,sortedYamlKeyValues:M}},d=t.yamlKeyPrioritySortOrder,c=l(r,d),u=c.sortedYamlKeyValues;r=c.remainingYaml;let m=t.yamlSortOrderForOtherKeys,g=Xe(r);if(g==null)return o(u,r,a);let h=function(O,C){return O=O.toLowerCase(),C=C.toLowerCase(),O>C?-1:C>O?1:0},f=function(O,C){return O=O.toLowerCase(),C=C.toLowerCase(),Oi?-1:i>t?1:0}get exampleBuilders(){return[new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language`",before:p` --- language: Typescript type: programming @@ -2107,7 +2247,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` keywords: [] status: WIP --- - `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"None",priorityKeysAtStartOfYaml:!0}}),new x({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language` with `'YAML Sort Order for Other Keys' = Ascending Alphabetical`",before:p` + `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"None",priorityKeysAtStartOfYaml:!0}}),new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language` with `'YAML Sort Order for Other Keys' = Ascending Alphabetical`",before:p` --- language: Typescript type: programming @@ -2125,7 +2265,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` status: WIP tags: computer --- - `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Ascending Alphabetical"}}),new x({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language` with `'YAML Sort Order for Other Keys' = Descending Alphabetical`",before:p` + `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Ascending Alphabetical"}}),new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language` with `'YAML Sort Order for Other Keys' = Descending Alphabetical`",before:p` --- language: Typescript type: programming @@ -2143,7 +2283,7 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` status: WIP keywords: [] --- - `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Descending Alphabetical",priorityKeysAtStartOfYaml:!0}}),new x({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language` with `'YAML Sort Order for Other Keys' = Descending Alphabetical` and `'Priority Keys at Start of YAML' = false`",before:p` + `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Descending Alphabetical",priorityKeysAtStartOfYaml:!0}}),new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language` with `'YAML Sort Order for Other Keys' = Descending Alphabetical` and `'Priority Keys at Start of YAML' = false`",before:p` --- language: Typescript type: programming @@ -2162,26 +2302,28 @@ $4`)})}get exampleBuilders(){return[new x({description:"",before:p` type: programming language: Typescript --- - `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Descending Alphabetical",priorityKeysAtStartOfYaml:!1}})]}get optionBuilders(){return[new he({OptionsClass:Ci,name:"YAML Key Priority Sort Order",description:"The order in which to sort keys with one on each line where it sorts in the order found in the list",optionsKey:"yamlKeyPrioritySortOrder"}),new U({OptionsClass:Ci,name:"Priority Keys at Start of YAML",description:"YAML Key Priority Sort Order is placed at the start of the YAML frontmatter",optionsKey:"priorityKeysAtStartOfYaml"}),new ve({OptionsClass:Ci,name:"YAML Sort Order for Other Keys",description:"The way in which to sort the keys that are not found in the YAML Key Priority Sort Order text area",optionsKey:"yamlSortOrderForOtherKeys",records:[{value:"None",description:"No sorting other than what is in the YAML Key Priority Sort Order text area"},{value:"Ascending Alphabetical",description:"Sorts the keys based on key value from a to z"},{value:"Descending Alphabetical",description:"Sorts the keys based on key value from z to a"}]})]}get hasSpecialExecutionOrder(){return!0}};bt=T([z.register],bt);var wi=require("obsidian");var Qe=class{constructor(){this.dateCreatedKey="date created";this.dateCreated=!0;this.format="dddd, MMMM Do YYYY, h:mm:ss a";this.dateModified=!0;this.dateModifiedKey="date modified";this.locale="en"}};T([z.noSettingControl()],Qe.prototype,"alreadyModified",2),T([z.noSettingControl()],Qe.prototype,"fileCreatedTime",2),T([z.noSettingControl()],Qe.prototype,"fileModifiedTime",2),T([z.noSettingControl()],Qe.prototype,"locale",2),T([z.noSettingControl()],Qe.prototype,"currentTime",2);var Hi=class extends z{get OptionsClass(){return Qe}get name(){return"YAML Timestamp"}get description(){return"Keep track of the date the file was last edited in the YAML front matter. Gets dates from file metadata."}get type(){return"YAML"}apply(i,t){let n=t.alreadyModified,r=hi(i);return n=n||r!==i,Te(r,a=>{let s=` -${t.dateCreatedKey}: [^ + `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Descending Alphabetical",priorityKeysAtStartOfYaml:!1}})]}get optionBuilders(){return[new be({OptionsClass:qi,nameKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.name",descriptionKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.description",optionsKey:"yamlKeyPrioritySortOrder"}),new U({OptionsClass:qi,nameKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.name",descriptionKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.description",optionsKey:"priorityKeysAtStartOfYaml"}),new ne({OptionsClass:qi,nameKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.name",descriptionKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.description",optionsKey:"yamlSortOrderForOtherKeys",records:[{value:"None",description:"No sorting other than what is in the YAML Key Priority Sort Order text area"},{value:"Ascending Alphabetical",description:"Sorts the keys based on key value from a to z"},{value:"Descending Alphabetical",description:"Sorts the keys based on key value from z to a"}]})]}};St=T([b.register],St);var Je=require("obsidian");var Ku=gn(Pu());var $e=class{constructor(){this.dateCreatedKey="date created";this.dateCreated=!0;this.forceRetentionOfCreatedValue=!1;this.format="dddd, MMMM Do YYYY, h:mm:ss a";this.dateModified=!0;this.dateModifiedKey="date modified";this.locale="en"}};T([b.noSettingControl()],$e.prototype,"alreadyModified",2),T([b.noSettingControl()],$e.prototype,"fileCreatedTime",2),T([b.noSettingControl()],$e.prototype,"fileModifiedTime",2),T([b.noSettingControl()],$e.prototype,"locale",2),T([b.noSettingControl()],$e.prototype,"currentTime",2),T([b.noSettingControl()],$e.prototype,"fileName",2);var Wi=class extends b{constructor(){super({nameKey:"rules.yaml-timestamp.name",descriptionKey:"rules.yaml-timestamp.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return $e}apply(t,i){let n=i.alreadyModified,r=bi(t);return n=n||r!==t,Te(r,a=>{if(i.dateCreated){let s=!1;[a,s]=this.handleDateCreatedValue(a,i),n=n||s}return i.dateModified&&(a=this.handleDateModifiedValue(a,n,i)),a})}handleDateCreatedValue(t,i){let n=!1,r=` +${i.dateCreatedKey}: [^ ]+ -`,o=` -${t.dateCreatedKey}:[ ]* -`,l=new RegExp(o),d=new RegExp(s);if(t.dateCreated){let c=(0,wi.moment)(t.fileCreatedTime);c.locale(t.locale);let u=c.format(t.format),m=` -${t.dateCreatedKey}: ${u}`,g=d.test(a);if(!g&&l.test(a))a=a.replace(l,We(m)+` -`),n=!0;else if(g){if(g){let h=(0,wi.moment)(a.match(d)[0].replace(t.dateCreatedKey+":","").trim(),t.format,t.locale,!0);(h==null||!h.isValid())&&(a=a.replace(d,We(m)+` -`),n=!0)}}else{let h=a.indexOf(` ----`);a=Zi(a,h,` -${t.dateCreatedKey}: ${u}`),n=!0}}if(t.dateModified){let c=` -${t.dateModifiedKey}: [^ +`,a=` +${i.dateCreatedKey}:[ ]* +`,s=new RegExp(a),o=new RegExp(r),l=(0,Je.moment)(i.fileCreatedTime);l.locale(i.locale);let d=l.format(i.format),c=` +${i.dateCreatedKey}: ${d}`,u=o.test(t);if(!u&&s.test(t))t=t.replace(s,Ke(c)+` +`),n=!0;else if(u){if(u){let m=this.getYAMLTimestampString(t,o,i.dateCreatedKey),g=(0,Je.moment)(m,i.format,i.locale,!0);if(g==null||!g.isValid()&&!i.forceRetentionOfCreatedValue)t=t.replace(o,Ke(c)+` +`),n=!0;else if(i.forceRetentionOfCreatedValue){let h=this.parseValueToCurrentFormatIfPossible(m,i.format,i.locale);if(h==null)throw new Error(E("logs.invalid-date-format-error").replace("{DATE}",m).replace("{FILE_NAME}",i.fileName));let v=` +${i.dateCreatedKey}: ${h.format(i.format)}`;t=t.replace(o,Ke(v)+` +`),n=!0}}}else{let m=t.indexOf(` +---`);t=it(t,m,` +${i.dateCreatedKey}: ${d}`),n=!0}return[t,n]}handleDateModifiedValue(t,i,n){let r=` +${n.dateModifiedKey}: [^ ]+ -`,u=` -${t.dateModifiedKey}:[ ]* -`,m=new RegExp(u),g=new RegExp(c),h=(0,wi.moment)(t.fileModifiedTime);h.locale(t.locale);let f=t.currentTime.format(t.format),v=` -${t.dateModifiedKey}: ${f}`,b=g.test(a);if(b){let A=(0,wi.moment)(a.match(g)[0].replace(t.dateModifiedKey+":","").trim(),t.format,t.locale,!0);(n||A==null||!A.isValid()||this.getTimeDifferenceInSeconds(A,h,t)>5)&&(a=a.replace(g,We(v)+` -`))}else if(m.test(a))a=a.replace(m,We(v)+` -`);else if(!b){let A=a.indexOf(` ----`);a=Zi(a,A,v)}}return a})}getTimeDifferenceInSeconds(i,t,n){let r=(0,wi.moment)(t.format(n.format),n.format,n.locale,!0);return Math.abs(i.diff(r,"seconds"))}get exampleBuilders(){return[new x({description:"Adds a header with the date.",before:p` +`,a=` +${n.dateModifiedKey}:[ ]* +`,s=new RegExp(a),o=new RegExp(r),l=(0,Je.moment)(n.fileModifiedTime);l.locale(n.locale);let d=n.currentTime.format(n.format),c=` +${n.dateModifiedKey}: ${d}`,u=o.test(t);if(u){let m=(0,Je.moment)(t.match(o)[0].replace(n.dateModifiedKey+":","").trim(),n.format,n.locale,!0);(i||m==null||!m.isValid()||this.getTimeDifferenceInSeconds(m,l,n)>5)&&(t=t.replace(o,Ke(c)+` +`))}else if(s.test(t))t=t.replace(s,Ke(c)+` +`);else if(!u){let m=t.indexOf(` +---`);t=it(t,m,c)}return t}parseValueToCurrentFormatIfPossible(t,i,n){if(t==null)return null;let r=(0,Je.moment)(t,i,n,!0);if(r!=null&&r.isValid())return r;let a=(0,Ku.default)(t);if(a!=null){let s=(0,Je.moment)(t,a);return s.locale(n),(0,Je.moment)(s.format(i),i,n,!0)}return null}getYAMLTimestampString(t,i,n){return t.match(i)[0].replace(n+":","").trim()}getTimeDifferenceInSeconds(t,i,n){let r=(0,Je.moment)(i.format(n.format),n.format,n.locale,!0);return Math.abs(t.diff(r,"seconds"))}get exampleBuilders(){return[new y({description:"Adds a header with the date.",before:p` # H1 `,after:p` --- @@ -2189,35 +2331,35 @@ ${t.dateModifiedKey}: ${f}`,b=g.test(a);if(b){let A=(0,wi.moment)(a.match(g)[0]. date modified: Thursday, January 2nd 2020, 12:00:05 am --- # H1 - `,options:{fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-02T00:00:00-00:00",currentTime:(0,wi.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new x({description:"dateCreated option is false",before:p` + `,options:{fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-02T00:00:00-00:00",currentTime:(0,Je.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"dateCreated option is false",before:p` # H1 `,after:p` --- date modified: Thursday, January 2nd 2020, 12:00:05 am --- # H1 - `,options:{dateCreated:!1,fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,wi.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new x({description:"Date Created Key is set",before:p` + `,options:{dateCreated:!1,fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Je.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"Date Created Key is set",before:p` # H1 `,after:p` --- created: Wednesday, January 1st 2020, 12:00:00 am --- # H1 - `,options:{dateCreated:!0,dateModified:!1,dateCreatedKey:"created",fileCreatedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,wi.moment)("Thursday, January 2nd 2020, 12:00:03 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new x({description:"Date Modified Key is set",before:p` + `,options:{dateCreated:!0,dateModified:!1,dateCreatedKey:"created",fileCreatedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Je.moment)("Thursday, January 2nd 2020, 12:00:03 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"Date Modified Key is set",before:p` # H1 `,after:p` --- modified: Wednesday, January 1st 2020, 4:00:00 pm --- # H1 - `,options:{dateCreated:!1,dateModified:!0,dateModifiedKey:"modified",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,wi.moment)("Wednesday, January 1st 2020, 4:00:00 pm","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}})]}get optionBuilders(){return[new U({OptionsClass:Qe,name:"Date Created",description:"Insert the file creation date",optionsKey:"dateCreated"}),new li({OptionsClass:Qe,name:"Date Created Key",description:"Which YAML key to use for creation date",optionsKey:"dateCreatedKey"}),new U({OptionsClass:Qe,name:"Date Modified",description:"Insert the date the file was last modified",optionsKey:"dateModified"}),new li({OptionsClass:Qe,name:"Date Modified Key",description:"Which YAML key to use for modification date",optionsKey:"dateModifiedKey"}),new qa({OptionsClass:Qe,name:"Format",description:"Moment date format to use (see [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))",optionsKey:"format"})]}get hasSpecialExecutionOrder(){return!0}};Hi=T([z.register],Hi);var ki=class{constructor(){this.preserveExistingAliasesSectionStyle=!0;this.keepAliasThatMatchesTheFilename=!1;this.useYamlKeyToKeepTrackOfOldFilenameOrHeading=!0;this.aliasArrayStyle="multi-line";this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};T([z.noSettingControl()],ki.prototype,"aliasArrayStyle",2),T([z.noSettingControl()],ki.prototype,"fileName",2),T([z.noSettingControl()],ki.prototype,"defaultEscapeCharacter",2),T([z.noSettingControl()],ki.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Sr=class extends z{get OptionsClass(){return ki}get name(){return"YAML Title Alias"}get description(){return"Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename."}get type(){return"YAML"}apply(i,t){i=hi(i);let n=R([y.code,y.math,y.yaml,y.tag],i,Xr);n=n||t.fileName;let r=null,a=i.match(Se)[1],s=!t.keepAliasThatMatchesTheFilename&&n===t.fileName;t.useYamlKeyToKeepTrackOfOldFilenameOrHeading&&(r=Xe(Ee(a,bn)));let o=a.replace(`--- + `,options:{dateCreated:!1,dateModified:!0,dateModifiedKey:"modified",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Je.moment)("Wednesday, January 1st 2020, 4:00:00 pm","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}})]}get optionBuilders(){return[new U({OptionsClass:$e,nameKey:"rules.yaml-timestamp.date-created.name",descriptionKey:"rules.yaml-timestamp.date-created.description",optionsKey:"dateCreated"}),new Ve({OptionsClass:$e,nameKey:"rules.yaml-timestamp.date-created-key.name",descriptionKey:"rules.yaml-timestamp.date-created-key.description",optionsKey:"dateCreatedKey"}),new U({OptionsClass:$e,nameKey:"rules.yaml-timestamp.force-retention-of-create-value.name",descriptionKey:"rules.yaml-timestamp.force-retention-of-create-value.description",optionsKey:"forceRetentionOfCreatedValue"}),new U({OptionsClass:$e,nameKey:"rules.yaml-timestamp.date-modified.name",descriptionKey:"rules.yaml-timestamp.date-modified.description",optionsKey:"dateModified"}),new Ve({OptionsClass:$e,nameKey:"rules.yaml-timestamp.date-modified-key.name",descriptionKey:"rules.yaml-timestamp.date-modified-key.description",optionsKey:"dateModifiedKey"}),new Ga({OptionsClass:$e,nameKey:"rules.yaml-timestamp.format.name",descriptionKey:"rules.yaml-timestamp.format.description",optionsKey:"format"})]}};Wi=T([b.register],Wi);var zi=class{constructor(){this.preserveExistingAliasesSectionStyle=!0;this.keepAliasThatMatchesTheFilename=!1;this.useYamlKeyToKeepTrackOfOldFilenameOrHeading=!0;this.aliasArrayStyle="multi-line";this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};T([b.noSettingControl()],zi.prototype,"aliasArrayStyle",2),T([b.noSettingControl()],zi.prototype,"fileName",2),T([b.noSettingControl()],zi.prototype,"defaultEscapeCharacter",2),T([b.noSettingControl()],zi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Br=class extends b{constructor(){super({nameKey:"rules.yaml-title-alias.name",descriptionKey:"rules.yaml-title-alias.description",type:"YAML"})}get OptionsClass(){return zi}apply(t,i){t=bi(t);let n=qe([f.code,f.math,f.yaml,f.tag],t,Fa);n=n||i.fileName;let r=null,a=t.match(Se)[1],s=!i.keepAliasThatMatchesTheFilename&&n===i.fileName;i.useYamlKeyToKeepTrackOfOldFilenameOrHeading&&(r=Xe(Ee(a,Rn)));let o=a.replace(`--- `,"").replace(` ----`,""),l=Xe(a);r=Xe(Ee(a,bn)),n=yi(n,t.defaultEscapeCharacter);let d=function(m,g){if(m==null)return g?"":n;if(typeof m=="string")g?m===n&&(m=""):r===m?m=n:m=[n,m];else if(r!==null){let h=m.indexOf(r);h!==-1&&(g?m.splice(h,1):m[h]=n)}else{let h=m.indexOf(n);h!==-1?g&&m.splice(h,1):g||(m=[n,...m])}return m===""||m.length===0?"":m},c=null,u=Object.keys(l);for(let m of yn)if(u.includes(m)){c=m;break}if(c!=null){let m=Ee(o,c),g="multi-line",h=m==="",f=!1;m.includes(` -`)||(m.match(/^\[.*\]/)===null?(g="single string to single-line",f=!0):g="single-line");let v=ta(fi(m)),b=d(v,s);b===""?o=Ji(o,c):t.preserveExistingAliasesSectionStyle?!h&&(f&&n==b||!f||v==b)?o=Oe(o,c,Ue(b,g,t.defaultEscapeCharacter,t.removeUnnecessaryEscapeCharsForMultiLineArrays)):o=Oe(o,c,Ue(b,t.aliasArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscapeCharsForMultiLineArrays)):o=Oe(o,c,Ue(b,t.aliasArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscapeCharsForMultiLineArrays))}else s||(o=Oe(o,Is,Ue(n,t.aliasArrayStyle,t.defaultEscapeCharacter,t.removeUnnecessaryEscapeCharsForMultiLineArrays)));return!t.useYamlKeyToKeepTrackOfOldFilenameOrHeading||s?o=Ji(o,bn):o=Oe(o,bn,` ${n}`),i=i.replace(`--- +---`,""),l=Xe(a);r=Xe(Ee(a,Rn));let d=n.includes(",")&&(i.aliasArrayStyle==="single-line"||i.aliasArrayStyle==="single string to single-line"||i.aliasArrayStyle==="single string comma delimited");n=xi(n,i.defaultEscapeCharacter,d);let c=function(g,h){if(g==null)return h?"":n;if(typeof g=="string")h?g===n&&(g=""):r===g?g=n:g=[n,g];else if(r!==null){let v=g.indexOf(r);v!==-1&&(h?g.splice(v,1):g[v]=n)}else{let v=g.indexOf(n);v!==-1?h&&g.splice(v,1):h||(g=[n,...g])}return g===""||g.length===0?"":g},u=null,m=Object.keys(l);for(let g of Fn)if(m.includes(g)){u=g;break}if(u!=null){let g=Ee(o,u),h="multi-line",v=g==="",w=!1;g.includes(` +`)||(g.match(/^\[.*\]/)===null?(h="single string to single-line",w=!0):h="single-line");let z=Na(vi(g)),S=c(z,s);S===""?o=st(o,u):i.preserveExistingAliasesSectionStyle?!v&&(w&&n==S||!w||z==S)?o=Ae(o,u,Qe(S,h,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)):o=Ae(o,u,Qe(S,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)):o=Ae(o,u,Qe(S,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}else s||(o=Ae(o,No,Qe(n,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));return!i.useYamlKeyToKeepTrackOfOldFilenameOrHeading||s?o=st(o,Rn):o=Ae(o,Rn,` ${n}`),t=t.replace(`--- ${a}--- `,`--- ${o}--- -`),i}get exampleBuilders(){return[new x({description:"Adds a header with the title from heading.",before:p` +`),t}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading.",before:p` # Obsidian `,after:p` --- @@ -2226,7 +2368,7 @@ ${o}--- linter-yaml-title-alias: Obsidian --- # Obsidian - `}),new x({description:"Adds a header with the title from heading without YAML key when the use of the YAML key is set to false.",before:p` + `}),new y({description:"Adds a header with the title from heading without YAML key when the use of the YAML key is set to false.",before:p` # Obsidian `,after:p` --- @@ -2234,7 +2376,7 @@ ${o}--- - Obsidian --- # Obsidian - `,options:{useYamlKeyToKeepTrackOfOldFilenameOrHeading:!1}}),new x({description:"Adds a header with the title.",before:p` + `,options:{useYamlKeyToKeepTrackOfOldFilenameOrHeading:!1}}),new y({description:"Adds a header with the title.",before:p` ${""} `,after:p` --- @@ -2243,7 +2385,7 @@ ${o}--- linter-yaml-title-alias: Filename --- ${""} - `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0}}),new x({description:"Adds a header with the title without YAML key when the use of the YAML key is set to false.",before:p` + `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0}}),new y({description:"Adds a header with the title without YAML key when the use of the YAML key is set to false.",before:p` ${""} `,after:p` --- @@ -2251,7 +2393,7 @@ ${o}--- - Filename --- ${""} - `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0,useYamlKeyToKeepTrackOfOldFilenameOrHeading:!1}}),new x({description:"Replaces old filename with new filename when no header is present and filename is different than the old one listed in `linter-yaml-title-alias`.",before:p` + `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0,useYamlKeyToKeepTrackOfOldFilenameOrHeading:!1}}),new y({description:"Replaces old filename with new filename when no header is present and filename is different than the old one listed in `linter-yaml-title-alias`.",before:p` --- aliases: - Old Filename @@ -2267,7 +2409,7 @@ ${o}--- linter-yaml-title-alias: Filename --- ${""} - `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0}}),new x({description:"Make sure that markdown and wiki links in first H1 get their values converted to text",before:p` + `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0}}),new y({description:"Make sure that markdown and wiki links in first H1 get their values converted to text",before:p` # This is a [Heading](markdown.md) `,after:p` --- @@ -2276,40 +2418,54 @@ ${o}--- linter-yaml-title-alias: This is a Heading --- # This is a [Heading](markdown.md) - `,options:{aliasArrayStyle:"multi-line"}})]}get optionBuilders(){return[new U({OptionsClass:ki,name:"Preserve existing aliases section style",description:"If set, the `YAML aliases section style` setting applies only to the newly created sections",optionsKey:"preserveExistingAliasesSectionStyle"}),new U({OptionsClass:ki,name:"Keep alias that matches the filename",description:"Such aliases are usually redundant",optionsKey:"keepAliasThatMatchesTheFilename"}),new U({OptionsClass:ki,name:"Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes",description:"If set, when the first H1 heading changes or filename if first H1 is not present changes, then the old alias stored in this key will be replaced with the new value instead of just inserting a new entry in the aliases array",optionsKey:"useYamlKeyToKeepTrackOfOldFilenameOrHeading"})]}};Sr=T([z.register],Sr);var Yt=class{constructor(){this.defaultEscapeCharacter='"';this.titleKey="title"}};T([z.noSettingControl()],Yt.prototype,"fileName",2),T([z.noSettingControl()],Yt.prototype,"defaultEscapeCharacter",2);var Tr=class extends z{get OptionsClass(){return Yt}get name(){return"YAML Title"}get description(){return"Inserts the title of the file into the YAML frontmatter. Gets the title from the first H1 or filename if there is no H1."}get type(){return"YAML"}apply(i,t){i=hi(i);let n=R([y.code,y.math,y.yaml,y.tag],i,Xr);return n=n||t.fileName,n=yi(n,t.defaultEscapeCharacter),Te(i,r=>{let a=` -${t.titleKey}.* -`,s=new RegExp(a);if(s.test(r))r=r.replace(s,We(` -${t.titleKey}: ${n} + `,options:{aliasArrayStyle:"multi-line"}})]}get optionBuilders(){return[new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.name",descriptionKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.description",optionsKey:"preserveExistingAliasesSectionStyle"}),new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.name",descriptionKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.description",optionsKey:"keepAliasThatMatchesTheFilename"}),new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.name",descriptionKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.description",optionsKey:"useYamlKeyToKeepTrackOfOldFilenameOrHeading"})]}};Br=T([b.register],Br);var Tt=class{constructor(){this.defaultEscapeCharacter='"';this.titleKey="title";this.mode="first-h1-or-filename-if-h1-missing"}};T([b.noSettingControl()],Tt.prototype,"fileName",2),T([b.noSettingControl()],Tt.prototype,"defaultEscapeCharacter",2);var Fr=class extends b{constructor(){super({nameKey:"rules.yaml-title.name",descriptionKey:"rules.yaml-title.description",type:"YAML"})}get OptionsClass(){return Tt}apply(t,i){t=bi(t);let n="";switch(i.mode){case"filename":n=i.fileName;break;case"first-h1":n=this.getFirstH1Header(t);break;default:n=this.getFirstH1Header(t),n=n||i.fileName}return n=xi(n,i.defaultEscapeCharacter),Te(t,r=>{let a=` +${i.titleKey}.* +`,s=new RegExp(a);if(s.test(r))r=r.replace(s,Ke(` +${i.titleKey}: ${n} `));else{let o=r.indexOf(` ----`);r=Zi(r,o,` -${t.titleKey}: ${n}`)}return r})}get exampleBuilders(){return[new x({description:"Adds a header with the title from heading.",before:p` +---`);r=it(r,o,` +${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return qe([f.code,f.math,f.yaml,f.tag],t,Fa)}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading when `mode = 'First H1 or Filename if H1 Missing'`.",before:p` # Obsidian `,after:p` --- title: Obsidian --- # Obsidian - `,options:{fileName:"Filename"}}),new x({description:"Adds a header with the title.",before:p` + `,options:{fileName:"Filename"}}),new y({description:"Adds a header with the title when `mode = 'First H1 or Filename if H1 Missing'`.",before:p` ${""} `,after:p` --- title: Filename --- ${""} - `,options:{fileName:"Filename"}}),new x({description:"Make sure that markdown links in headings are properly copied to the yaml as just the text",before:p` + `,options:{fileName:"Filename"}}),new y({description:"Make sure that markdown links in headings are properly copied to the YAML as just the text when `mode = 'First H1 or Filename if H1 Missing'`",before:p` # This is a [Heading](test heading.md) `,after:p` --- title: This is a Heading --- # This is a [Heading](test heading.md) - `})]}get optionBuilders(){return[new li({OptionsClass:Yt,name:"Title Key",description:"Which YAML key to use for title",optionsKey:"titleKey"})]}};Tr=T([z.register],Tr);var kf=` + `}),new y({description:"When `mode = 'First H1'`, title does not have a value if no H1 is present",before:p` + ## This is a Heading + `,after:p` + --- + title: "" + --- + ## This is a Heading + `,options:{mode:"first-h1",fileName:"Filename"}}),new y({description:"When `mode = 'Filename'`, title uses the filename ignoring all H1s. Note: the filename is \"Filename\" in this example.",before:p` + # This is a Heading + `,after:p` + --- + title: Filename + --- + # This is a Heading + `,options:{mode:"filename",fileName:"Filename"}})]}get optionBuilders(){return[new Ve({OptionsClass:Tt,nameKey:"rules.yaml-title.title-key.name",descriptionKey:"rules.yaml-title.title-key.description",optionsKey:"titleKey"}),new ne({OptionsClass:Tt,nameKey:"rules.yaml-title.mode.name",descriptionKey:"rules.yaml-title.mode.description",optionsKey:"mode",records:[{value:"first-h1-or-filename-if-h1-missing",description:"Uses the first H1 in the file or the filename of the file if there is not H1"},{value:"filename",description:"Uses the filename as the title"},{value:"first-h1",description:"Uses the first H1 in the file as the title"}]})]}};Fr=T([b.register],Fr);var Ov=` -`,zf=` +`,Cv=` @@ -2317,7 +2473,7 @@ ${t.titleKey}: ${n}`)}return r})}get exampleBuilders(){return[new x({description -`,Sf=` +`,qv=` @@ -2330,44 +2486,44 @@ ${t.titleKey}: ${n}`)}return r})}get exampleBuilders(){return[new x({description -`,Tf=` +`,Mv=` -`,Of=` +`,Iv=` -`,Ef=` +`,_v=` -`,Af=` +`,Bv=` -`,Cf=` +`,Fv=` -`,Lf=` +`,Rv=` -`,qf=` +`,Dv=` -`,_f=` +`,Nv=` -`,Mf=` +`,jv=` -`,Bf=` +`,Pv=` -`,xe={folder:{id:"lint-folder",source:zf},file:{id:"lint-file",source:kf},vault:{id:"lint-vault",source:Sf},whitespace:{id:"lint-whitespace",source:Tf},math:{id:"lint-math",source:Of},content:{id:"lint-content",source:Ef},paste:{id:"lint-paste",source:Af},custom:{id:"lint-custom",source:Cf},heading:{id:"lint-heading",source:Lf},footer:{id:"lint-footer",source:qf},yaml:{id:"lint-yaml",source:_f},general:{id:"lint-general",source:Mf},debug:{id:"lint-debug",source:Bf}};var Kt=require("obsidian");var Za=class{constructor(){this.disabledRules=[]}lintText(i){jt("rule running");let t=i.oldText;this.disabledRules=rc(t),jt("pre rules");let n=this.runBeforeRegularRules(i);Dt("pre rules");for(let r of et){if(this.disabledRules.includes(r.alias())){vi(r.alias()+" is disabled");continue}else if(r.hasSpecialExecutionOrder||r.type==="Paste")continue;jt(r.alias()),[n]=oi.applyIfEnabledBase(r,n,i.settings,{fileCreatedTime:i.fileInfo.createdAtFormatted,fileModifiedTime:i.fileInfo.modifiedAtFormatted,fileName:i.fileInfo.name,locale:i.momentLocale,minimumNumberOfDollarSignsToBeAMathBlock:i.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock,aliasArrayStyle:i.settings.commonStyles.aliasArrayStyle,tagArrayStyle:i.settings.commonStyles.tagArrayStyle,defaultEscapeCharacter:i.settings.commonStyles.escapeCharacter,removeUnnecessaryEscapeCharsForMultiLineArrays:i.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays}),Dt(r.alias())}return jt("custom regex"),n=this.runCustomRegexReplacement(i.settings.customRegexes,n),Dt("custom regex"),i.oldText=n,this.runAfterRegularRules(t,i)}runBeforeRegularRules(i){let t=i.oldText;return[t]=lt.applyIfEnabled(t,i.settings,this.disabledRules),[t]=st.applyIfEnabled(t,i.settings,this.disabledRules,{defaultEscapeCharacter:i.settings.commonStyles.escapeCharacter}),t}runAfterRegularRules(i,t){let n=t.oldText;jt("post rules"),[n]=ot.applyIfEnabled(n,t.settings,this.disabledRules,{defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter});let r=t.getCurrentTime(),a;[n,a]=Hi.applyIfEnabled(n,t.settings,this.disabledRules,{fileCreatedTime:t.fileInfo.createdAtFormatted,fileModifiedTime:t.fileInfo.modifiedAtFormatted,currentTime:r,alreadyModified:i!=n,locale:t.momentLocale});let s=Hi.getRuleOptions(t.settings);return r=t.getCurrentTime(),[n]=bt.applyIfEnabled(n,t.settings,this.disabledRules,{currentTimeFormatted:r.format(s.format),yamlTimestampDateModifiedEnabled:a&&s.dateModified,dateModifiedKey:s.dateModifiedKey}),Dt("post rules"),Dt("rule running"),n}runCustomCommands(i,t){vi("Running Custom Lint Commands");let n=new Set;for(let r of i){if(r.id){if(n.has(r.id)){zn(`You cannot run the same command ("${r.name}") as a custom lint rule twice.`);continue}}else continue;try{n.add(r.id),t.executeCommandById(r.id)}catch(a){da(a,`Custom Lint Command ${r.id}`)}}}runCustomRegexReplacement(i,t){vi("Running Custom Regex");let n=t;for(let r of i){if(r.find==null||r.replace===void 0||r.replace===null)continue;let a=new RegExp(`${r.find}`,r.flags);n=n.replace(a,Gl(r.replace))}return n}runPasteLint(i,t){let n=t.oldText;return[n]=mt.applyIfEnabled(n,t.settings,[]),[n]=ft.applyIfEnabled(n,t.settings,[]),[n]=ht.applyIfEnabled(n,t.settings,[]),[n]=ut.applyIfEnabled(n,t.settings,[]),[n]=gt.applyIfEnabled(n,t.settings,[]),[n]=ct.applyIfEnabled(n,t.settings,[],{lineContent:i}),[n]=dt.applyIfEnabled(n,t.settings,[],{lineContent:i}),[n]=rt.applyIfEnabled(n,t.settings,[],{lineContent:i}),n}};function Or(e,i=null,t,n){let r=i?(0,Kt.moment)(i.stat.ctime):(0,Kt.moment)();r.locale(t);let a=i?(0,Kt.moment)(i.stat.mtime):(0,Kt.moment)();a.locale(t);let s=a.format(),o=r.format();return{oldText:e,fileInfo:{name:i?i.basename:"",createdAtFormatted:o,modifiedAtFormatted:s},settings:n,momentLocale:t,getCurrentTime:()=>{let l=(0,Kt.moment)();return l.locale(t),l}}}var Qa=require("obsidian"),Er=class extends Qa.Modal{constructor(i,t,n,r,a){super(i),this.modalEl.addClass("confirm-modal"),this.contentEl.createEl("h3",{text:"Warning"}).style.textAlign="center",this.contentEl.createEl("p",{text:t+" Make sure you have backed up your files."}).id="confirm-dialog",this.contentEl.createDiv("modal-button-container",s=>{s.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close());let o=s.createEl("button",{attr:{type:"submit"},cls:"mod-cta",text:n});o.addEventListener("click",async l=>{new Qa.Notice(r),this.close(),await a()}),setTimeout(()=>{o.focus()},50)})}};var Jt=require("obsidian");var pd=require("obsidian");var If={General:xe.general.id,Custom:xe.custom.id,YAML:xe.yaml.id,Heading:xe.heading.id,Footnote:xe.footer.id,Content:xe.content.id,Spacing:xe.whitespace.id,Paste:xe.paste.id,Debug:xe.debug.id},zi=class{constructor(i,t,n,r,a){this.name=n;this.isMobile=r;this.plugin=a;this.searchSettingInfo=[];this.navButton=i.createDiv("linter-navigation-item");let s="linter-desktop";r&&(s="linter-mobile"),this.navButton.addClass(s),(0,pd.setIcon)(this.navButton.createSpan({cls:"linter-navigation-item-icon"}),If[n],20),this.navButton.createSpan().setText(n),this.contentEl=t.createDiv("linter-tab-settings"),this.contentEl.id=n.toLowerCase().replace(" ","-"),this.headingEl=this.contentEl.createEl("h2",{text:n+" Settings"}),ei(this.headingEl)}addSettingSearchInfo(i,t="",n="",r=null,a=null){this.searchSettingInfo.push({containerEl:i,name:t.toLowerCase(),description:n.toLowerCase(),options:r,alias:a})}updateTabDisplayMode(i,t="the status is still the same"){switch(i?(this.navButton.addClass("linter-navigation-item-selected"),bi(this.contentEl)):(this.navButton.removeClass("linter-navigation-item-selected"),ei(this.contentEl)),t){case"entering search mode by focusing on the search input box":bi(this.contentEl),bi(this.headingEl);for(let n of this.searchSettingInfo)bi(n.containerEl);break;case"leaving search mode by selecting a tab":ei(this.headingEl);for(let n of this.searchSettingInfo)bi(n.containerEl);break}}};var Si=require("obsidian"),md=require("obsidian");var Ja=class extends zi{constructor(i,t,n,r){super(i,t,"General",n,r),this.display()}display(){let i=this.contentEl.createDiv(),t="Lint on save",n="Lint the file on manual save (when `Ctrl + S` is pressed or when `:w` is executed while using vim keybindings)",r=new Si.Setting(i).setName(t).addToggle(d=>{d.setValue(this.plugin.settings.lintOnSave).onChange(async c=>{this.plugin.settings.lintOnSave=c,await this.plugin.saveSettings()})});Ae(n,r.descEl),this.addSettingSearchInfo(i,t,n),i=this.contentEl.createDiv(),t="Display message on lint",n="Display the number of characters changed after linting",new Si.Setting(i).setName(t).setDesc(n).addToggle(d=>{d.setValue(this.plugin.settings.displayChanged).onChange(async c=>{this.plugin.settings.displayChanged=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(i,t,n),i=this.contentEl.createDiv(),t="Folders to ignore",n="Folders to ignore when linting all files or linting on save. Enter folder paths separated by newlines",new Si.Setting(i).setName(t).setDesc(n).addTextArea(d=>{d.setValue(this.plugin.settings.foldersToIgnore.join(` +`,we={folder:{id:"lint-folder",source:Cv},file:{id:"lint-file",source:Ov},vault:{id:"lint-vault",source:qv},whitespace:{id:"lint-whitespace",source:Mv},math:{id:"lint-math",source:Iv},content:{id:"lint-content",source:_v},paste:{id:"lint-paste",source:Bv},custom:{id:"lint-custom",source:Fv},heading:{id:"lint-heading",source:Rv},footer:{id:"lint-footer",source:Dv},yaml:{id:"lint-yaml",source:Nv},general:{id:"lint-general",source:jv},debug:{id:"lint-debug",source:Pv}};var Xt=require("obsidian");var bs=class{constructor(){this.disabledRules=[]}lintText(t){jt(E("logs.rule-running"));let i=t.oldText;this.disabledRules=Lu(i);let n=E("logs.pre-rules");jt(n);let r=this.runBeforeRegularRules(t);Pt(n);let a=E("logs.disabled-text");for(let o of Ki){if(this.disabledRules.includes(o.alias)){fi(o.alias+" "+a);continue}else if(o.hasSpecialExecutionOrder||o.type==="Paste")continue;jt(o.alias),[r]=li.applyIfEnabledBase(o,r,t.settings,{fileCreatedTime:t.fileInfo.createdAtFormatted,fileModifiedTime:t.fileInfo.modifiedAtFormatted,fileName:t.fileInfo.name,locale:t.momentLocale,minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock,aliasArrayStyle:t.settings.commonStyles.aliasArrayStyle,tagArrayStyle:t.settings.commonStyles.tagArrayStyle,defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter,removeUnnecessaryEscapeCharsForMultiLineArrays:t.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays}),Pt(o.alias)}let s=E("logs.custom-regex");return jt(s),r=this.runCustomRegexReplacement(t.settings.customRegexes,r),Pt(s),t.oldText=r,this.runAfterRegularRules(i,t)}runBeforeRegularRules(t){let i=t.oldText;return[i]=gt.applyIfEnabled(i,t.settings,this.disabledRules),[i]=pt.applyIfEnabled(i,t.settings,this.disabledRules,{defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter}),i}runAfterRegularRules(t,i){let n=i.oldText,r=E("logs.post-rules");jt(r),[n]=ut.applyIfEnabled(n,i.settings,this.disabledRules),[n]=lt.applyIfEnabled(n,i.settings,this.disabledRules),[n]=mt.applyIfEnabled(n,i.settings,this.disabledRules,{defaultEscapeCharacter:i.settings.commonStyles.escapeCharacter});let a=i.getCurrentTime(),s;[n,s]=Wi.applyIfEnabled(n,i.settings,this.disabledRules,{fileCreatedTime:i.fileInfo.createdAtFormatted,fileModifiedTime:i.fileInfo.modifiedAtFormatted,currentTime:a,alreadyModified:t!=n,locale:i.momentLocale});let o=Wi.getRuleOptions(i.settings);return a=i.getCurrentTime(),[n]=St.applyIfEnabled(n,i.settings,this.disabledRules,{currentTimeFormatted:a.format(o.format),yamlTimestampDateModifiedEnabled:s&&o.dateModified,dateModifiedKey:o.dateModifiedKey}),Pt(r),Pt(E("logs.rule-running")),n}runCustomCommands(t,i){fi(E("logs.running-custom-lint-command"));let n=new Set;for(let r of t){if(r.id){if(n.has(r.id)){et(E("logs.custom-lint-duplicate-warning").replace("{COMMAND_NAME}",r.name));continue}}else continue;try{n.add(r.id),i.executeCommandById(r.id)}catch(a){Va(a,`${E("logs.custom-lint-error-message")} ${r.id}`)}}}runCustomRegexReplacement(t,i){fi(E("logs.running-custom-regex"));let n=i;for(let r of t){if(r.find==null||r.replace===void 0||r.replace===null)continue;let a=new RegExp(`${r.find}`,r.flags);n=n.replace(a,td(r.replace))}return n}runPasteLint(t,i){let n=i.oldText;return[n]=vt.applyIfEnabled(n,i.settings,[]),[n]=kt.applyIfEnabled(n,i.settings,[]),[n]=wt.applyIfEnabled(n,i.settings,[]),[n]=yt.applyIfEnabled(n,i.settings,[]),[n]=xt.applyIfEnabled(n,i.settings,[]),[n]=ht.applyIfEnabled(n,i.settings,[],{lineContent:t}),[n]=ft.applyIfEnabled(n,i.settings,[],{lineContent:t}),[n]=ct.applyIfEnabled(n,i.settings,[],{lineContent:t}),n}};function Rr(e,t=null,i,n){let r=t?(0,Xt.moment)(t.stat.ctime):(0,Xt.moment)();r.locale(i);let a=t?(0,Xt.moment)(t.stat.mtime):(0,Xt.moment)();a.locale(i);let s=a.format(),o=r.format();return{oldText:e,fileInfo:{name:t?t.basename:"",createdAtFormatted:o,modifiedAtFormatted:s},settings:n,momentLocale:i,getCurrentTime:()=>{let l=(0,Xt.moment)();return l.locale(i),l}}}var vs=require("obsidian");var Dr=class extends vs.Modal{constructor(t,i,n,r,a){super(t),this.modalEl.addClass("confirm-modal"),this.contentEl.createEl("h3",{text:E("warning-text")}).style.textAlign="center",this.contentEl.createEl("p",{text:i+" "+E("file-backup-text")}).id="confirm-dialog",this.contentEl.createDiv("modal-button-container",s=>{s.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close());let o=s.createEl("button",{attr:{type:"submit"},cls:"mod-cta",text:n});o.addEventListener("click",async l=>{new vs.Notice(r),this.close(),await a()}),setTimeout(()=>{o.focus()},50)})}};var Gi=require("obsidian");var $u=require("obsidian");var Kv={General:we.general.id,Custom:we.custom.id,YAML:we.yaml.id,Heading:we.heading.id,Footnote:we.footer.id,Content:we.content.id,Spacing:we.whitespace.id,Paste:we.paste.id,Debug:we.debug.id},$v={General:"tabs.names.general",Custom:"tabs.names.custom",YAML:"tabs.names.yaml",Heading:"tabs.names.heading",Footnote:"tabs.names.footnote",Content:"tabs.names.content",Spacing:"tabs.names.spacing",Paste:"tabs.names.paste",Debug:"tabs.names.debug"},Si=class{constructor(t,i,n,r,a){this.name=n;this.isMobile=r;this.plugin=a;this.searchSettingInfo=[];this.navButton=t.createDiv("linter-navigation-item");let s="linter-desktop";r&&(s="linter-mobile"),this.navButton.addClass(s),(0,$u.setIcon)(this.navButton.createSpan({cls:"linter-navigation-item-icon"}),Kv[n]);let o=E($v[n]);this.navButton.createSpan().setText(o),this.contentEl=i.createDiv("linter-tab-settings"),this.contentEl.id=n.toLowerCase().replace(" ","-"),this.headingEl=this.contentEl.createEl("h2",{text:o}),ei(this.headingEl)}addSettingSearchInfo(t,i="",n="",r=null,a=null){this.searchSettingInfo.push({containerEl:t,name:i.toLowerCase(),description:n.toLowerCase(),options:r,alias:a})}updateTabDisplayMode(t,i="the status is still the same"){switch(t?(this.navButton.addClass("linter-navigation-item-selected"),ki(this.contentEl)):(this.navButton.removeClass("linter-navigation-item-selected"),ei(this.contentEl)),i){case"entering search mode by focusing on the search input box":ki(this.contentEl),ki(this.headingEl);for(let n of this.searchSettingInfo)ki(n.containerEl);break;case"leaving search mode by selecting a tab":ei(this.headingEl);for(let n of this.searchSettingInfo)ki(n.containerEl);break}}};var Ti=require("obsidian"),Hu=require("obsidian");var xs=class extends Si{constructor(t,i,n,r){super(t,i,"General",n,r),this.display()}display(){let t=this.contentEl.createDiv(),i=E("tabs.general.lint-on-save.name"),n=E("tabs.general.lint-on-save.description"),r=new Ti.Setting(t).setName(i).addToggle(d=>{d.setValue(this.plugin.settings.lintOnSave).onChange(async c=>{this.plugin.settings.lintOnSave=c,await this.plugin.saveSettings()})});wi(n,r.descEl,this.plugin.settingsTab.component),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.general.display-message.name"),n=E("tabs.general.display-message.description"),new Ti.Setting(t).setName(i).setDesc(n).addToggle(d=>{d.setValue(this.plugin.settings.displayChanged).onChange(async c=>{this.plugin.settings.displayChanged=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.general.folders-to-ignore.name"),n=E("tabs.general.folders-to-ignore.description"),new Ti.Setting(t).setName(i).setDesc(n).addTextArea(d=>{d.setValue(this.plugin.settings.foldersToIgnore.join(` `)).onChange(async c=>{this.plugin.settings.foldersToIgnore=c.split(` -`),await this.plugin.saveSettings()})}),this.addSettingSearchInfo(i,t,n);let a=navigator.language?.toLowerCase();i=this.contentEl.createDiv(),t="Override locale",n="Set this if you want to use a locale different from the default",new Si.Setting(i).setName(t).setDesc(n).addDropdown(d=>{d.addOption("system-default",`Same as system (${a})`),md.moment.locales().forEach(c=>{d.addOption(c,c)}),d.setValue(this.plugin.settings.linterLocale),d.onChange(async c=>{this.plugin.settings.linterLocale=c,await this.plugin.setOrUpdateMomentInstance(),await this.plugin.saveSettings()})}),this.addSettingSearchInfo(i,t,n);let s=["multi-line","single-line","single string comma delimited","single string to single-line","single string to multi-line"];i=this.contentEl.createDiv(),t="YAML aliases section style",n="The style of the YAML aliases section",new Si.Setting(i).setName(t).setDesc(n).addDropdown(d=>{s.forEach(c=>{d.addOption(c,c)}),d.setValue(this.plugin.settings.commonStyles.aliasArrayStyle),d.onChange(async c=>{this.plugin.settings.commonStyles.aliasArrayStyle=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(i,t,n);let o=["multi-line","single-line","single string to single-line","single string to multi-line","single-line space delimited","single string space delimited","single string comma delimited"];i=this.contentEl.createDiv(),t="YAML tags section style",n="The style of the YAML tags section",new Si.Setting(i).setName(t).setDesc(n).addDropdown(d=>{o.forEach(c=>{d.addOption(c,c)}),d.setValue(this.plugin.settings.commonStyles.tagArrayStyle),d.onChange(async c=>{this.plugin.settings.commonStyles.tagArrayStyle=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(i,t,n);let l=['"',"'"];i=this.contentEl.createDiv(),t="Default Escape Character",n="The default character to use to escape YAML values when a single quote and double quote are not present.",new Si.Setting(i).setName(t).setDesc(n).addDropdown(d=>{l.forEach(c=>{d.addOption(c,c)}),d.setValue(this.plugin.settings.commonStyles.escapeCharacter),d.onChange(async c=>{this.plugin.settings.commonStyles.escapeCharacter=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(i,t,n),i=this.contentEl.createDiv(),t="Remove Unnecessary Escape Characters when in Multi-Line Array Format",n="Escape characters for multi-line YAML arrays don't need the same escaping as single-line arrays, so when in multi-line format remove extra escapes that are not necessary",new Si.Setting(i).setName(t).setDesc(n).addToggle(d=>{d.setValue(this.plugin.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays).onChange(async c=>{this.plugin.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(i,t,n),i=this.contentEl.createDiv(),t="Number of Dollar Signs to Indicate Math Block",n="The amount of dollar signs to consider the math content to be a math block instead of inline math",new Si.Setting(i).setName(t).setDesc(n).addText(d=>{d.setValue(this.plugin.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock.toString()).onChange(async c=>{let u=parseInt(c);isNaN(u)&&(u=2),this.plugin.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock=u,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(i,t,n)}};var Xa=class extends zi{constructor(t,n,r,a,s,o){super(t,n,r,s,o);this.rules=a;this.display()}display(){for(let t of this.rules){let n=this.contentEl.createDiv();n.id=t.alias(),n.createEl(this.isMobile?"h4":"h3",{},a=>{a.innerHTML=`${t.name}`});let r=[];for(let a of t.options)a.display(n,this.plugin.settings,this.plugin),r.push(a.searchInfo);this.addSettingSearchInfo(n,t.name.toLowerCase(),t.description.toLowerCase(),r,n.id)}}};var Rd=require("obsidian");var gd=require("obsidian");var Wt=class{constructor(i,t,n,r,a,s,o,l){this.containerEl=i;this.name=t;this.description=n;this.warning=r;this.addInputBtnText=a;this.isMobile=s;this.saveSettings=o;this.onAddInput=l}display(){this.containerEl.createEl(this.isMobile?"h4":"h3",{text:this.name}),Ae(this.description,this.containerEl),this.warning!=null&&this.containerEl.createEl("p",{text:this.warning,cls:"mod-warning"}),new gd.Setting(this.containerEl).addButton(i=>{i.setButtonText(this.addInputBtnText).setCta().onClick(()=>this.onAddInput())}),this.inputElDiv=this.containerEl.createDiv(),this.showInputEls()}resetInputEls(){this.inputElDiv.empty(),this.showInputEls()}};var Fd=require("obsidian");var ue="top",we="bottom",fe="right",me="left",es="auto",Yi=[ue,we,fe,me],Li="start",vt="end",hd="clippingParents",is="viewport",Vt="popper",fd="reference",Ro=Yi.reduce(function(e,i){return e.concat([i+"-"+Li,i+"-"+vt])},[]),ts=[].concat(Yi,[es]).reduce(function(e,i){return e.concat([i,i+"-"+Li,i+"-"+vt])},[]),Ff="beforeRead",Rf="read",jf="afterRead",Df="beforeMain",Pf="main",$f="afterMain",Nf="beforeWrite",Hf="write",Yf="afterWrite",yd=[Ff,Rf,jf,Df,Pf,$f,Nf,Hf,Yf];function Ce(e){return e?(e.nodeName||"").toLowerCase():null}function de(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var i=e.ownerDocument;return i&&i.defaultView||window}return e}function ti(e){var i=de(e).Element;return e instanceof i||e instanceof Element}function ke(e){var i=de(e).HTMLElement;return e instanceof i||e instanceof HTMLElement}function Ut(e){if(typeof ShadowRoot>"u")return!1;var i=de(e).ShadowRoot;return e instanceof i||e instanceof ShadowRoot}function Kf(e){var i=e.state;Object.keys(i.elements).forEach(function(t){var n=i.styles[t]||{},r=i.attributes[t]||{},a=i.elements[t];!ke(a)||!Ce(a)||(Object.assign(a.style,n),Object.keys(r).forEach(function(s){var o=r[s];o===!1?a.removeAttribute(s):a.setAttribute(s,o===!0?"":o)}))})}function Wf(e){var i=e.state,t={popper:{position:i.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(i.elements.popper.style,t.popper),i.styles=t,i.elements.arrow&&Object.assign(i.elements.arrow.style,t.arrow),function(){Object.keys(i.elements).forEach(function(n){var r=i.elements[n],a=i.attributes[n]||{},s=Object.keys(i.styles.hasOwnProperty(n)?i.styles[n]:t[n]),o=s.reduce(function(l,d){return l[d]="",l},{});!ke(r)||!Ce(r)||(Object.assign(r.style,o),Object.keys(a).forEach(function(l){r.removeAttribute(l)}))})}}var bd={name:"applyStyles",enabled:!0,phase:"write",fn:Kf,effect:Wf,requires:["computeStyles"]};function Le(e){return e.split("-")[0]}var ci=Math.max,xt=Math.min,qi=Math.round;function Gt(){var e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(function(i){return i.brand+"/"+i.version}).join(" "):navigator.userAgent}function Ar(){return!/^((?!chrome|android).)*safari/i.test(Gt())}function ni(e,i,t){i===void 0&&(i=!1),t===void 0&&(t=!1);var n=e.getBoundingClientRect(),r=1,a=1;i&&ke(e)&&(r=e.offsetWidth>0&&qi(n.width)/e.offsetWidth||1,a=e.offsetHeight>0&&qi(n.height)/e.offsetHeight||1);var s=ti(e)?de(e):window,o=s.visualViewport,l=!Ar()&&t,d=(n.left+(l&&o?o.offsetLeft:0))/r,c=(n.top+(l&&o?o.offsetTop:0))/a,u=n.width/r,m=n.height/a;return{width:u,height:m,top:c,right:d+u,bottom:c+m,left:d,x:d,y:c}}function wt(e){var i=ni(e),t=e.offsetWidth,n=e.offsetHeight;return Math.abs(i.width-t)<=1&&(t=i.width),Math.abs(i.height-n)<=1&&(n=i.height),{x:e.offsetLeft,y:e.offsetTop,width:t,height:n}}function Cr(e,i){var t=i.getRootNode&&i.getRootNode();if(e.contains(i))return!0;if(t&&Ut(t)){var n=i;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Ne(e){return de(e).getComputedStyle(e)}function jo(e){return["table","td","th"].indexOf(Ce(e))>=0}function Me(e){return((ti(e)?e.ownerDocument:e.document)||window.document).documentElement}function _i(e){return Ce(e)==="html"?e:e.assignedSlot||e.parentNode||(Ut(e)?e.host:null)||Me(e)}function vd(e){return!ke(e)||Ne(e).position==="fixed"?null:e.offsetParent}function Vf(e){var i=/firefox/i.test(Gt()),t=/Trident/i.test(Gt());if(t&&ke(e)){var n=Ne(e);if(n.position==="fixed")return null}var r=_i(e);for(Ut(r)&&(r=r.host);ke(r)&&["html","body"].indexOf(Ce(r))<0;){var a=Ne(r);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||i&&a.willChange==="filter"||i&&a.filter&&a.filter!=="none")return r;r=r.parentNode}return null}function di(e){for(var i=de(e),t=vd(e);t&&jo(t)&&Ne(t).position==="static";)t=vd(t);return t&&(Ce(t)==="html"||Ce(t)==="body"&&Ne(t).position==="static")?i:t||Vf(e)||i}function kt(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function zt(e,i,t){return ci(e,xt(i,t))}function xd(e,i,t){var n=zt(e,i,t);return n>t?t:n}function Lr(){return{top:0,right:0,bottom:0,left:0}}function qr(e){return Object.assign({},Lr(),e)}function _r(e,i){return i.reduce(function(t,n){return t[n]=e,t},{})}var Uf=function(i,t){return i=typeof i=="function"?i(Object.assign({},t.rects,{placement:t.placement})):i,qr(typeof i!="number"?i:_r(i,Yi))};function Gf(e){var i,t=e.state,n=e.name,r=e.options,a=t.elements.arrow,s=t.modifiersData.popperOffsets,o=Le(t.placement),l=kt(o),d=[me,fe].indexOf(o)>=0,c=d?"height":"width";if(!(!a||!s)){var u=Uf(r.padding,t),m=wt(a),g=l==="y"?ue:me,h=l==="y"?we:fe,f=t.rects.reference[c]+t.rects.reference[l]-s[l]-t.rects.popper[c],v=s[l]-t.rects.reference[l],b=di(a),A=b?l==="y"?b.clientHeight||0:b.clientWidth||0:0,O=f/2-v/2,C=u[g],M=A-m[c]-u[h],S=A/2-m[c]/2+O,q=zt(C,S,M),_=l;t.modifiersData[n]=(i={},i[_]=q,i.centerOffset=q-S,i)}}function Zf(e){var i=e.state,t=e.options,n=t.element,r=n===void 0?"[data-popper-arrow]":n;r!=null&&(typeof r=="string"&&(r=i.elements.popper.querySelector(r),!r)||Cr(i.elements.popper,r)&&(i.elements.arrow=r))}var wd={name:"arrow",enabled:!0,phase:"main",fn:Gf,effect:Zf,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ri(e){return e.split("-")[1]}var Qf={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Jf(e){var i=e.x,t=e.y,n=window,r=n.devicePixelRatio||1;return{x:qi(i*r)/r||0,y:qi(t*r)/r||0}}function kd(e){var i,t=e.popper,n=e.popperRect,r=e.placement,a=e.variation,s=e.offsets,o=e.position,l=e.gpuAcceleration,d=e.adaptive,c=e.roundOffsets,u=e.isFixed,m=s.x,g=m===void 0?0:m,h=s.y,f=h===void 0?0:h,v=typeof c=="function"?c({x:g,y:f}):{x:g,y:f};g=v.x,f=v.y;var b=s.hasOwnProperty("x"),A=s.hasOwnProperty("y"),O=me,C=ue,M=window;if(d){var S=di(t),q="clientHeight",_="clientWidth";if(S===de(t)&&(S=Me(t),Ne(S).position!=="static"&&o==="absolute"&&(q="scrollHeight",_="scrollWidth")),S=S,r===ue||(r===me||r===fe)&&a===vt){C=we;var D=u&&S===M&&M.visualViewport?M.visualViewport.height:S[q];f-=D-n.height,f*=l?1:-1}if(r===me||(r===ue||r===we)&&a===vt){O=fe;var Y=u&&S===M&&M.visualViewport?M.visualViewport.width:S[_];g-=Y-n.width,g*=l?1:-1}}var $=Object.assign({position:o},d&&Qf),K=c===!0?Jf({x:g,y:f}):{x:g,y:f};if(g=K.x,f=K.y,l){var B;return Object.assign({},$,(B={},B[C]=A?"0":"",B[O]=b?"0":"",B.transform=(M.devicePixelRatio||1)<=1?"translate("+g+"px, "+f+"px)":"translate3d("+g+"px, "+f+"px, 0)",B))}return Object.assign({},$,(i={},i[C]=A?f+"px":"",i[O]=b?g+"px":"",i.transform="",i))}function Xf(e){var i=e.state,t=e.options,n=t.gpuAcceleration,r=n===void 0?!0:n,a=t.adaptive,s=a===void 0?!0:a,o=t.roundOffsets,l=o===void 0?!0:o;if(!1)var d;var c={placement:Le(i.placement),variation:ri(i.placement),popper:i.elements.popper,popperRect:i.rects.popper,gpuAcceleration:r,isFixed:i.options.strategy==="fixed"};i.modifiersData.popperOffsets!=null&&(i.styles.popper=Object.assign({},i.styles.popper,kd(Object.assign({},c,{offsets:i.modifiersData.popperOffsets,position:i.options.strategy,adaptive:s,roundOffsets:l})))),i.modifiersData.arrow!=null&&(i.styles.arrow=Object.assign({},i.styles.arrow,kd(Object.assign({},c,{offsets:i.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),i.attributes.popper=Object.assign({},i.attributes.popper,{"data-popper-placement":i.placement})}var zd={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Xf,data:{}};var ns={passive:!0};function ey(e){var i=e.state,t=e.instance,n=e.options,r=n.scroll,a=r===void 0?!0:r,s=n.resize,o=s===void 0?!0:s,l=de(i.elements.popper),d=[].concat(i.scrollParents.reference,i.scrollParents.popper);return a&&d.forEach(function(c){c.addEventListener("scroll",t.update,ns)}),o&&l.addEventListener("resize",t.update,ns),function(){a&&d.forEach(function(c){c.removeEventListener("scroll",t.update,ns)}),o&&l.removeEventListener("resize",t.update,ns)}}var Sd={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:ey,data:{}};var iy={left:"right",right:"left",bottom:"top",top:"bottom"};function Zt(e){return e.replace(/left|right|bottom|top/g,function(i){return iy[i]})}var ty={start:"end",end:"start"};function rs(e){return e.replace(/start|end/g,function(i){return ty[i]})}function St(e){var i=de(e),t=i.pageXOffset,n=i.pageYOffset;return{scrollLeft:t,scrollTop:n}}function Tt(e){return ni(Me(e)).left+St(e).scrollLeft}function Do(e,i){var t=de(e),n=Me(e),r=t.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(r){a=r.width,s=r.height;var d=Ar();(d||!d&&i==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:a,height:s,x:o+Tt(e),y:l}}function Po(e){var i,t=Me(e),n=St(e),r=(i=e.ownerDocument)==null?void 0:i.body,a=ci(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=ci(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-n.scrollLeft+Tt(e),l=-n.scrollTop;return Ne(r||t).direction==="rtl"&&(o+=ci(t.clientWidth,r?r.clientWidth:0)-a),{width:a,height:s,x:o,y:l}}function Ot(e){var i=Ne(e),t=i.overflow,n=i.overflowX,r=i.overflowY;return/auto|scroll|overlay|hidden/.test(t+r+n)}function as(e){return["html","body","#document"].indexOf(Ce(e))>=0?e.ownerDocument.body:ke(e)&&Ot(e)?e:as(_i(e))}function Ki(e,i){var t;i===void 0&&(i=[]);var n=as(e),r=n===((t=e.ownerDocument)==null?void 0:t.body),a=de(n),s=r?[a].concat(a.visualViewport||[],Ot(n)?n:[]):n,o=i.concat(s);return r?o:o.concat(Ki(_i(s)))}function Qt(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ny(e,i){var t=ni(e,!1,i==="fixed");return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Td(e,i,t){return i===is?Qt(Do(e,t)):ti(i)?ny(i,t):Qt(Po(Me(e)))}function ry(e){var i=Ki(_i(e)),t=["absolute","fixed"].indexOf(Ne(e).position)>=0,n=t&&ke(e)?di(e):e;return ti(n)?i.filter(function(r){return ti(r)&&Cr(r,n)&&Ce(r)!=="body"}):[]}function $o(e,i,t,n){var r=i==="clippingParents"?ry(e):[].concat(i),a=[].concat(r,[t]),s=a[0],o=a.reduce(function(l,d){var c=Td(e,d,n);return l.top=ci(c.top,l.top),l.right=xt(c.right,l.right),l.bottom=xt(c.bottom,l.bottom),l.left=ci(c.left,l.left),l},Td(e,s,n));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function Mr(e){var i=e.reference,t=e.element,n=e.placement,r=n?Le(n):null,a=n?ri(n):null,s=i.x+i.width/2-t.width/2,o=i.y+i.height/2-t.height/2,l;switch(r){case ue:l={x:s,y:i.y-t.height};break;case we:l={x:s,y:i.y+i.height};break;case fe:l={x:i.x+i.width,y:o};break;case me:l={x:i.x-t.width,y:o};break;default:l={x:i.x,y:i.y}}var d=r?kt(r):null;if(d!=null){var c=d==="y"?"height":"width";switch(a){case Li:l[d]=l[d]-(i[c]/2-t[c]/2);break;case vt:l[d]=l[d]+(i[c]/2-t[c]/2);break;default:}}return l}function ui(e,i){i===void 0&&(i={});var t=i,n=t.placement,r=n===void 0?e.placement:n,a=t.strategy,s=a===void 0?e.strategy:a,o=t.boundary,l=o===void 0?hd:o,d=t.rootBoundary,c=d===void 0?is:d,u=t.elementContext,m=u===void 0?Vt:u,g=t.altBoundary,h=g===void 0?!1:g,f=t.padding,v=f===void 0?0:f,b=qr(typeof v!="number"?v:_r(v,Yi)),A=m===Vt?fd:Vt,O=e.rects.popper,C=e.elements[h?A:m],M=$o(ti(C)?C:C.contextElement||Me(e.elements.popper),l,c,s),S=ni(e.elements.reference),q=Mr({reference:S,element:O,strategy:"absolute",placement:r}),_=Qt(Object.assign({},O,q)),D=m===Vt?_:S,Y={top:M.top-D.top+b.top,bottom:D.bottom-M.bottom+b.bottom,left:M.left-D.left+b.left,right:D.right-M.right+b.right},$=e.modifiersData.offset;if(m===Vt&&$){var K=$[r];Object.keys(Y).forEach(function(B){var W=[fe,we].indexOf(B)>=0?1:-1,X=[ue,we].indexOf(B)>=0?"y":"x";Y[B]+=K[X]*W})}return Y}function No(e,i){i===void 0&&(i={});var t=i,n=t.placement,r=t.boundary,a=t.rootBoundary,s=t.padding,o=t.flipVariations,l=t.allowedAutoPlacements,d=l===void 0?ts:l,c=ri(n),u=c?o?Ro:Ro.filter(function(h){return ri(h)===c}):Yi,m=u.filter(function(h){return d.indexOf(h)>=0});m.length===0&&(m=u);var g=m.reduce(function(h,f){return h[f]=ui(e,{placement:f,boundary:r,rootBoundary:a,padding:s})[Le(f)],h},{});return Object.keys(g).sort(function(h,f){return g[h]-g[f]})}function ay(e){if(Le(e)===es)return[];var i=Zt(e);return[rs(e),i,rs(i)]}function sy(e){var i=e.state,t=e.options,n=e.name;if(!i.modifiersData[n]._skip){for(var r=t.mainAxis,a=r===void 0?!0:r,s=t.altAxis,o=s===void 0?!0:s,l=t.fallbackPlacements,d=t.padding,c=t.boundary,u=t.rootBoundary,m=t.altBoundary,g=t.flipVariations,h=g===void 0?!0:g,f=t.allowedAutoPlacements,v=i.options.placement,b=Le(v),A=b===v,O=l||(A||!h?[Zt(v)]:ay(v)),C=[v].concat(O).reduce(function(He,je){return He.concat(Le(je)===es?No(i,{placement:je,boundary:c,rootBoundary:u,padding:d,flipVariations:h,allowedAutoPlacements:f}):je)},[]),M=i.rects.reference,S=i.rects.popper,q=new Map,_=!0,D=C[0],Y=0;Y=0,X=W?"width":"height",Z=ui(i,{placement:$,boundary:c,rootBoundary:u,altBoundary:m,padding:d}),oe=W?B?fe:me:B?we:ue;M[X]>S[X]&&(oe=Zt(oe));var le=Zt(oe),ce=[];if(a&&ce.push(Z[K]<=0),o&&ce.push(Z[oe]<=0,Z[le]<=0),ce.every(function(He){return He})){D=$,_=!1;break}q.set($,ce)}if(_)for(var ne=h?3:1,k=function(je){var ai=C.find(function(Ye){var ee=q.get(Ye);if(ee)return ee.slice(0,je).every(function(Ti){return Ti})});if(ai)return D=ai,"break"},w=ne;w>0;w--){var pi=k(w);if(pi==="break")break}i.placement!==D&&(i.modifiersData[n]._skip=!0,i.placement=D,i.reset=!0)}}var Od={name:"flip",enabled:!0,phase:"main",fn:sy,requiresIfExists:["offset"],data:{_skip:!1}};function Ed(e,i,t){return t===void 0&&(t={x:0,y:0}),{top:e.top-i.height-t.y,right:e.right-i.width+t.x,bottom:e.bottom-i.height+t.y,left:e.left-i.width-t.x}}function Ad(e){return[ue,fe,we,me].some(function(i){return e[i]>=0})}function oy(e){var i=e.state,t=e.name,n=i.rects.reference,r=i.rects.popper,a=i.modifiersData.preventOverflow,s=ui(i,{elementContext:"reference"}),o=ui(i,{altBoundary:!0}),l=Ed(s,n),d=Ed(o,r,a),c=Ad(l),u=Ad(d);i.modifiersData[t]={referenceClippingOffsets:l,popperEscapeOffsets:d,isReferenceHidden:c,hasPopperEscaped:u},i.attributes.popper=Object.assign({},i.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":u})}var Cd={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:oy};function ly(e,i,t){var n=Le(e),r=[me,ue].indexOf(n)>=0?-1:1,a=typeof t=="function"?t(Object.assign({},i,{placement:e})):t,s=a[0],o=a[1];return s=s||0,o=(o||0)*r,[me,fe].indexOf(n)>=0?{x:o,y:s}:{x:s,y:o}}function cy(e){var i=e.state,t=e.options,n=e.name,r=t.offset,a=r===void 0?[0,0]:r,s=ts.reduce(function(c,u){return c[u]=ly(u,i.rects,a),c},{}),o=s[i.placement],l=o.x,d=o.y;i.modifiersData.popperOffsets!=null&&(i.modifiersData.popperOffsets.x+=l,i.modifiersData.popperOffsets.y+=d),i.modifiersData[n]=s}var Ld={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:cy};function dy(e){var i=e.state,t=e.name;i.modifiersData[t]=Mr({reference:i.rects.reference,element:i.rects.popper,strategy:"absolute",placement:i.placement})}var qd={name:"popperOffsets",enabled:!0,phase:"read",fn:dy,data:{}};function Ho(e){return e==="x"?"y":"x"}function uy(e){var i=e.state,t=e.options,n=e.name,r=t.mainAxis,a=r===void 0?!0:r,s=t.altAxis,o=s===void 0?!1:s,l=t.boundary,d=t.rootBoundary,c=t.altBoundary,u=t.padding,m=t.tether,g=m===void 0?!0:m,h=t.tetherOffset,f=h===void 0?0:h,v=ui(i,{boundary:l,rootBoundary:d,padding:u,altBoundary:c}),b=Le(i.placement),A=ri(i.placement),O=!A,C=kt(b),M=Ho(C),S=i.modifiersData.popperOffsets,q=i.rects.reference,_=i.rects.popper,D=typeof f=="function"?f(Object.assign({},i.rects,{placement:i.placement})):f,Y=typeof D=="number"?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),$=i.modifiersData.offset?i.modifiersData.offset[i.placement]:null,K={x:0,y:0};if(S){if(a){var B,W=C==="y"?ue:me,X=C==="y"?we:fe,Z=C==="y"?"height":"width",oe=S[C],le=oe+v[W],ce=oe-v[X],ne=g?-_[Z]/2:0,k=A===Li?q[Z]:_[Z],w=A===Li?-_[Z]:-q[Z],pi=i.elements.arrow,He=g&&pi?wt(pi):{width:0,height:0},je=i.modifiersData["arrow#persistent"]?i.modifiersData["arrow#persistent"].padding:Lr(),ai=je[W],Ye=je[X],ee=zt(0,q[Z],He[Z]),Ti=O?q[Z]/2-ne-ee-ai-Y.mainAxis:k-ee-ai-Y.mainAxis,si=O?-q[Z]/2+ne+ee+Ye+Y.mainAxis:w+ee+Ye+Y.mainAxis,mi=i.elements.arrow&&di(i.elements.arrow),Mi=mi?C==="y"?mi.clientTop||0:mi.clientLeft||0:0,Wi=(B=$?.[C])!=null?B:0,fs=oe+Ti-Wi-Mi,ys=oe+si-Wi,Fr=zt(g?xt(le,fs):le,oe,g?ci(ce,ys):ce);S[C]=Fr,K[C]=Fr-oe}if(o){var en,Rr=C==="x"?ue:me,jr=C==="x"?we:fe,Oi=S[M],Vi=M==="y"?"height":"width",tn=Oi+v[Rr],Dr=Oi-v[jr],nn=[ue,me].indexOf(b)!==-1,Pr=(en=$?.[M])!=null?en:0,$r=nn?tn:Oi-q[Vi]-_[Vi]-Pr+Y.altAxis,Nr=nn?Oi+q[Vi]+_[Vi]-Pr-Y.altAxis:Dr,E=g&&nn?xd($r,Oi,Nr):zt(g?$r:tn,Oi,g?Nr:Dr);S[M]=E,K[M]=E-Oi}i.modifiersData[n]=K}}var _d={name:"preventOverflow",enabled:!0,phase:"main",fn:uy,requiresIfExists:["offset"]};function Yo(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Ko(e){return e===de(e)||!ke(e)?St(e):Yo(e)}function py(e){var i=e.getBoundingClientRect(),t=qi(i.width)/e.offsetWidth||1,n=qi(i.height)/e.offsetHeight||1;return t!==1||n!==1}function Wo(e,i,t){t===void 0&&(t=!1);var n=ke(i),r=ke(i)&&py(i),a=Me(i),s=ni(e,r,t),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!t)&&((Ce(i)!=="body"||Ot(a))&&(o=Ko(i)),ke(i)?(l=ni(i,!0),l.x+=i.clientLeft,l.y+=i.clientTop):a&&(l.x=Tt(a))),{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function my(e){var i=new Map,t=new Set,n=[];e.forEach(function(a){i.set(a.name,a)});function r(a){t.add(a.name);var s=[].concat(a.requires||[],a.requiresIfExists||[]);s.forEach(function(o){if(!t.has(o)){var l=i.get(o);l&&r(l)}}),n.push(a)}return e.forEach(function(a){t.has(a.name)||r(a)}),n}function Vo(e){var i=my(e);return yd.reduce(function(t,n){return t.concat(i.filter(function(r){return r.phase===n}))},[])}function Uo(e){var i;return function(){return i||(i=new Promise(function(t){Promise.resolve().then(function(){i=void 0,t(e())})})),i}}function Go(e){var i=e.reduce(function(t,n){var r=t[n.name];return t[n.name]=r?Object.assign({},r,n,{options:Object.assign({},r.options,n.options),data:Object.assign({},r.data,n.data)}):n,t},{});return Object.keys(i).map(function(t){return i[t]})}var Md={placement:"bottom",modifiers:[],strategy:"absolute"};function Bd(){for(var e=arguments.length,i=new Array(e),t=0;t(e%i+i)%i,Qo=class{constructor(i,t,n){this.owner=i,this.containerEl=t,t.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),t.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),n.register([],"ArrowUp",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem-1,!0),!1}),n.register([],"ArrowDown",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem+1,!0),!1}),n.register([],"Enter",r=>{if(!r.isComposing)return this.useSelectedItem(r),!1})}onSuggestionClick(i,t){i.preventDefault();let n=this.suggestions.indexOf(t);this.setSelectedItem(n,!1),this.useSelectedItem(i)}onSuggestionMouseover(i,t){let n=this.suggestions.indexOf(t);this.setSelectedItem(n,!1)}setSuggestions(i){this.containerEl.empty();let t=[];i.forEach(n=>{let r=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(n,r),t.push(r)}),this.values=i,this.suggestions=t,this.setSelectedItem(0,!1)}useSelectedItem(i){let t=this.values[this.selectedItem];t&&this.owner.selectSuggestion(t,i)}setSelectedItem(i,t){let n=hy(i,this.suggestions.length),r=this.suggestions[this.selectedItem],a=this.suggestions[n];r?.removeClass("is-selected"),a?.addClass("is-selected"),this.selectedItem=n,t&&a.scrollIntoView(!1)}},ss=class{constructor(i,t){this.app=i,this.inputEl=t,this.scope=new Fd.Scope,this.suggestEl=createDiv("suggestion-container");let n=this.suggestEl.createDiv("suggestion");this.suggest=new Qo(this,n,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",r=>{r.preventDefault()})}onInputChanged(){let i=this.inputEl.value,t=this.getSuggestions(i);if(!t){this.close();return}t.length>0?(this.suggest.setSuggestions(t),this.open(this.app.dom.appContainerEl,this.inputEl)):this.close()}open(i,t){this.app.keymap.pushScope(this.scope),i.appendChild(this.suggestEl),this.popper=Zo(t,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"sameWidth",enabled:!0,fn:({state:n,instance:r})=>{let a=`${n.rects.reference.width}px`;n.styles.popper.width!==a&&(n.styles.popper.width=a,r.update())},phase:"beforeWrite",requires:["computeStyles"]}]})}close(){this.app.keymap.popScope(this.scope),this.suggest.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}};var Br=class extends ss{constructor(t,n,r=[]){super(t,n);this.app=t;this.inputEl=n;this.valuesToExclude=r}getSuggestions(t){let n=this.app.commands.listCommands();if(!n)return[];let r=n.filter(o=>{for(let l of this.valuesToExclude)if(l.id==o.id&&!(this.inputEl.hasAttribute("commandId")&&this.inputEl.getAttribute("commandId")==o.id))return!1;return!0}),a=[],s=t.toLowerCase();return r.forEach(o=>{(o.id.contains(s)||o.name.toLowerCase().contains(s))&&a.push(o)}),a}renderSuggestion(t,n){n.setText(t.name)}selectSuggestion(t){this.inputEl.value=t.name,this.inputEl.setAttribute("commandId",t.id),this.inputEl.trigger("input"),this.close()}};var os=class extends Wt{constructor(t,n,r,a,s){super(t,"Custom Commands","Custom commands are Obsidian commands that get run after the linter is finished running its regular rules. This means that they do not run before the YAML timestamp logic runs, so they can cause YAML timestamp to be triggered on the next run of the linter. You may only select an Obsidian command once. **_Note that this currently only works on linting the current file._**","When selecting an option, make sure to select the option either by using the mouse or by hitting the enter key. Other selection methods may not work and only selections of an actual Obsidian command or an empty string will be saved.","Add new command",r,s,()=>{let o={id:"",name:""};this.lintCommands.push(o),this.saveSettings(),this.addCommand(o,this.lintCommands.length-1,!0)});this.lintCommands=n;this.app=a;this.display()}showInputEls(){this.lintCommands.forEach((t,n)=>{this.addCommand(t,n)})}addCommand(t,n,r=!1){new Rd.Setting(this.inputElDiv).addSearch(a=>{new Br(this.app,a.inputEl,this.lintCommands),a.setPlaceholder("Obsidian command").setValue(t.name).onChange(s=>{let o={id:a.inputEl.getAttribute("commandId"),name:s};o.name&&o.id?(this.lintCommands[n]=o,this.saveSettings()):!o.name&&!o.id&&(this.lintCommands[n]=o,this.saveSettings())}),a.inputEl.setAttr("tabIndex",n),a.inputEl.addClass("linter-custom-command"),r&&a.inputEl.focus()}).addExtraButton(a=>{a.setIcon("up-chevron-glyph").setTooltip("Move up").onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("down-chevron-glyph").setTooltip("Move down").onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("cross").setTooltip("Delete").onClick(()=>{this.lintCommands.splice(n,1),this.saveSettings(),this.resetInputEls()})})}arrayMove(t,n){if(n<0||n===this.lintCommands.length)return;let r=this.lintCommands[t];this.lintCommands[t]=this.lintCommands[n],this.lintCommands[n]=r}};var jd=require("obsidian");var fy="gm",ls=class extends Wt{constructor(t,n,r,a){super(t,"Custom Regex Replacement","Custom regex replacement can be used to replace anything that matches the find regex with the replacement value. The replace and find values will need to be valid regex values.","Use this with caution if you do not know regex. Also, please make sure that you do not use lookbehinds in your regex on iOS mobile as that will cause linting to fail since that is not supported on that platform.","Add new regex replacement",r,a,()=>{let s={find:"",replace:"",flags:fy};this.regexes.push(s),this.saveSettings(),this.addRegex(s,this.regexes.length-1,!0)});this.regexes=n;this.display()}showInputEls(){this.regexes.forEach((t,n)=>{this.addRegex(t,n)})}addRegex(t,n,r=!1){new jd.Setting(this.inputElDiv).addText(a=>{a.setPlaceholder("regex to find").setValue(t.find).onChange(s=>{this.regexes[n].find=s,this.saveSettings()}),a.inputEl.setAttr("inputIndex",n),a.inputEl.addClass("linter-custom-regex-replacement"),r&&a.inputEl.focus()}).addText(a=>{a.setPlaceholder("flags").setValue(t.flags).onChange(s=>{this.regexes[n].flags=s,this.saveSettings()})}).addText(a=>{a.setPlaceholder("regex to replace").setValue(t.replace).onChange(s=>{this.regexes[n].replace=s,this.saveSettings()})}).addExtraButton(a=>{a.setIcon("cross").setTooltip("Delete").onClick(()=>{this.regexes.splice(n,1),this.saveSettings(),this.resetInputEls()})})}};var cs=class extends zi{constructor(t,n,r,a,s){super(t,n,"Custom",r,s);this.app=a;this.display()}display(){let t=this.contentEl.createDiv(),n=new os(t,this.plugin.settings.lintCommands,this.isMobile,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(t,n.name,n.description.replaceAll(` +`),await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n);let a=navigator.language?.toLowerCase();t=this.contentEl.createDiv(),i=E("tabs.general.override-locale.name"),n=E("tabs.general.override-locale.description"),new Ti.Setting(t).setName(i).setDesc(n).addDropdown(d=>{d.addOption("system-default",E("tabs.general.same-as-system-locale").replace("{SYS_LOCALE}",a)),Hu.moment.locales().forEach(c=>{d.addOption(c,c)}),d.setValue(this.plugin.settings.linterLocale),d.onChange(async c=>{this.plugin.settings.linterLocale=c,await this.plugin.setOrUpdateMomentInstance(),await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n);let s=["multi-line","single-line","single string comma delimited","single string to single-line","single string to multi-line"];t=this.contentEl.createDiv(),i=E("tabs.general.yaml-aliases-section-style.name"),n=E("tabs.general.yaml-aliases-section-style.description"),new Ti.Setting(t).setName(i).setDesc(n).addDropdown(d=>{s.forEach(c=>{let u="enums."+c;d.addOption(c,E(u))}),d.setValue(this.plugin.settings.commonStyles.aliasArrayStyle),d.onChange(async c=>{this.plugin.settings.commonStyles.aliasArrayStyle=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n);let o=["multi-line","single-line","single string to single-line","single string to multi-line","single-line space delimited","single string space delimited","single string comma delimited"];t=this.contentEl.createDiv(),i=E("tabs.general.yaml-tags-section-style.name"),n=E("tabs.general.yaml-tags-section-style.description"),new Ti.Setting(t).setName(i).setDesc(n).addDropdown(d=>{o.forEach(c=>{let u="enums."+c;d.addOption(c,E(u))}),d.setValue(this.plugin.settings.commonStyles.tagArrayStyle),d.onChange(async c=>{this.plugin.settings.commonStyles.tagArrayStyle=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n);let l=['"',"'"];t=this.contentEl.createDiv(),i=E("tabs.general.default-escape-character.name"),n=E("tabs.general.default-escape-character.description"),new Ti.Setting(t).setName(i).setDesc(n).addDropdown(d=>{l.forEach(c=>{d.addOption(c,c)}),d.setValue(this.plugin.settings.commonStyles.escapeCharacter),d.onChange(async c=>{this.plugin.settings.commonStyles.escapeCharacter=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.name"),n=E("tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.description"),new Ti.Setting(t).setName(i).setDesc(n).addToggle(d=>{d.setValue(this.plugin.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays).onChange(async c=>{this.plugin.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays=c,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.general.number-of-dollar-signs-to-indicate-math-block.name"),n=E("tabs.general.number-of-dollar-signs-to-indicate-math-block.description"),new Ti.Setting(t).setName(i).setDesc(n).addText(d=>{d.setValue(this.plugin.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock.toString()).onChange(async c=>{let u=parseInt(c);isNaN(u)&&(u=2),this.plugin.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock=u,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n)}};var ws=class extends Si{constructor(i,n,r,a,s,o){super(i,n,r,s,o);this.rules=a;this.display()}display(){for(let i of this.rules){let n=this.contentEl.createDiv();n.id=i.alias,n.createEl(this.isMobile?"h4":"h3",{},a=>{a.innerHTML=`${i.getName()}`});let r=[];for(let a of i.options)a.display(n,this.plugin.settings,this.plugin),r.push(a.getSearchInfo());this.addSettingSearchInfo(n,i.getName().toLowerCase(),i.getDescription().toLowerCase(),r,n.id)}}};var gp=require("obsidian");var Yu=require("obsidian");var en=class{constructor(t,i,n,r,a,s,o,l,d){this.containerEl=t;this.parentComponent=i;this.name=n;this.description=r;this.warning=a;this.addInputBtnText=s;this.isMobile=o;this.saveSettings=l;this.onAddInput=d}display(){this.containerEl.createEl(this.isMobile?"h4":"h3",{text:this.name}),wi(this.description,this.containerEl,this.parentComponent),this.warning!=null&&this.containerEl.createEl("p",{text:this.warning,cls:"mod-warning"}),new Yu.Setting(this.containerEl).addButton(t=>{t.setButtonText(this.addInputBtnText).setCta().onClick(()=>this.onAddInput())}),this.inputElDiv=this.containerEl.createDiv(),this.showInputEls()}resetInputEls(){this.inputElDiv.empty(),this.showInputEls()}};var mp=require("obsidian");var pe="top",ke="bottom",ve="right",ge="left",ks="auto",Vi=[pe,ke,ve,ge],Mi="start",At="end",Wu="clippingParents",zs="viewport",tn="popper",Vu="reference",xl=Vi.reduce(function(e,t){return e.concat([t+"-"+Mi,t+"-"+At])},[]),Ss=[].concat(Vi,[ks]).reduce(function(e,t){return e.concat([t,t+"-"+Mi,t+"-"+At])},[]),Hv="beforeRead",Yv="read",Wv="afterRead",Vv="beforeMain",Uv="main",Gv="afterMain",Qv="beforeWrite",Zv="write",Jv="afterWrite",Uu=[Hv,Yv,Wv,Vv,Uv,Gv,Qv,Zv,Jv];function Le(e){return e?(e.nodeName||"").toLowerCase():null}function le(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ti(e){var t=le(e).Element;return e instanceof t||e instanceof Element}function ze(e){var t=le(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function nn(e){if(typeof ShadowRoot>"u")return!1;var t=le(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Xv(e){var t=e.state;Object.keys(t.elements).forEach(function(i){var n=t.styles[i]||{},r=t.attributes[i]||{},a=t.elements[i];!ze(a)||!Le(a)||(Object.assign(a.style,n),Object.keys(r).forEach(function(s){var o=r[s];o===!1?a.removeAttribute(s):a.setAttribute(s,o===!0?"":o)}))})}function ex(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(n){var r=t.elements[n],a=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:i[n]),o=s.reduce(function(l,d){return l[d]="",l},{});!ze(r)||!Le(r)||(Object.assign(r.style,o),Object.keys(a).forEach(function(l){r.removeAttribute(l)}))})}}var Gu={name:"applyStyles",enabled:!0,phase:"write",fn:Xv,effect:ex,requires:["computeStyles"]};function Oe(e){return e.split("-")[0]}var ci=Math.max,Et=Math.min,Ii=Math.round;function rn(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function Nr(){return!/^((?!chrome|android).)*safari/i.test(rn())}function ni(e,t,i){t===void 0&&(t=!1),i===void 0&&(i=!1);var n=e.getBoundingClientRect(),r=1,a=1;t&&ze(e)&&(r=e.offsetWidth>0&&Ii(n.width)/e.offsetWidth||1,a=e.offsetHeight>0&&Ii(n.height)/e.offsetHeight||1);var s=ti(e)?le(e):window,o=s.visualViewport,l=!Nr()&&i,d=(n.left+(l&&o?o.offsetLeft:0))/r,c=(n.top+(l&&o?o.offsetTop:0))/a,u=n.width/r,m=n.height/a;return{width:u,height:m,top:c,right:d+u,bottom:c+m,left:d,x:d,y:c}}function Lt(e){var t=ni(e),i=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function jr(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&nn(i)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function He(e){return le(e).getComputedStyle(e)}function wl(e){return["table","td","th"].indexOf(Le(e))>=0}function Me(e){return((ti(e)?e.ownerDocument:e.document)||window.document).documentElement}function _i(e){return Le(e)==="html"?e:e.assignedSlot||e.parentNode||(nn(e)?e.host:null)||Me(e)}function Qu(e){return!ze(e)||He(e).position==="fixed"?null:e.offsetParent}function ix(e){var t=/firefox/i.test(rn()),i=/Trident/i.test(rn());if(i&&ze(e)){var n=He(e);if(n.position==="fixed")return null}var r=_i(e);for(nn(r)&&(r=r.host);ze(r)&&["html","body"].indexOf(Le(r))<0;){var a=He(r);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return r;r=r.parentNode}return null}function di(e){for(var t=le(e),i=Qu(e);i&&wl(i)&&He(i).position==="static";)i=Qu(i);return i&&(Le(i)==="html"||Le(i)==="body"&&He(i).position==="static")?t:i||ix(e)||t}function Ot(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ct(e,t,i){return ci(e,Et(t,i))}function Zu(e,t,i){var n=Ct(e,t,i);return n>i?i:n}function Pr(){return{top:0,right:0,bottom:0,left:0}}function Kr(e){return Object.assign({},Pr(),e)}function $r(e,t){return t.reduce(function(i,n){return i[n]=e,i},{})}var tx=function(t,i){return t=typeof t=="function"?t(Object.assign({},i.rects,{placement:i.placement})):t,Kr(typeof t!="number"?t:$r(t,Vi))};function nx(e){var t,i=e.state,n=e.name,r=e.options,a=i.elements.arrow,s=i.modifiersData.popperOffsets,o=Oe(i.placement),l=Ot(o),d=[ge,ve].indexOf(o)>=0,c=d?"height":"width";if(!(!a||!s)){var u=tx(r.padding,i),m=Lt(a),g=l==="y"?pe:ge,h=l==="y"?ke:ve,v=i.rects.reference[c]+i.rects.reference[l]-s[l]-i.rects.popper[c],w=s[l]-i.rects.reference[l],z=di(a),S=z?l==="y"?z.clientHeight||0:z.clientWidth||0:0,L=v/2-w/2,q=u[g],_=S-m[c]-u[h],A=S/2-m[c]/2+L,F=Ct(q,A,_),M=l;i.modifiersData[n]=(t={},t[M]=F,t.centerOffset=F-A,t)}}function rx(e){var t=e.state,i=e.options,n=i.element,r=n===void 0?"[data-popper-arrow]":n;r!=null&&(typeof r=="string"&&(r=t.elements.popper.querySelector(r),!r)||jr(t.elements.popper,r)&&(t.elements.arrow=r))}var Ju={name:"arrow",enabled:!0,phase:"main",fn:nx,effect:rx,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ri(e){return e.split("-")[1]}var ax={top:"auto",right:"auto",bottom:"auto",left:"auto"};function sx(e,t){var i=e.x,n=e.y,r=t.devicePixelRatio||1;return{x:Ii(i*r)/r||0,y:Ii(n*r)/r||0}}function Xu(e){var t,i=e.popper,n=e.popperRect,r=e.placement,a=e.variation,s=e.offsets,o=e.position,l=e.gpuAcceleration,d=e.adaptive,c=e.roundOffsets,u=e.isFixed,m=s.x,g=m===void 0?0:m,h=s.y,v=h===void 0?0:h,w=typeof c=="function"?c({x:g,y:v}):{x:g,y:v};g=w.x,v=w.y;var z=s.hasOwnProperty("x"),S=s.hasOwnProperty("y"),L=ge,q=pe,_=window;if(d){var A=di(i),F="clientHeight",M="clientWidth";if(A===le(i)&&(A=Me(i),He(A).position!=="static"&&o==="absolute"&&(F="scrollHeight",M="scrollWidth")),A=A,r===pe||(r===ge||r===ve)&&a===At){q=ke;var D=u&&A===_&&_.visualViewport?_.visualViewport.height:A[F];v-=D-n.height,v*=l?1:-1}if(r===ge||(r===pe||r===ke)&&a===At){L=ve;var H=u&&A===_&&_.visualViewport?_.visualViewport.width:A[M];g-=H-n.width,g*=l?1:-1}}var j=Object.assign({position:o},d&&ax),V=c===!0?sx({x:g,y:v},le(i)):{x:g,y:v};if(g=V.x,v=V.y,l){var R;return Object.assign({},j,(R={},R[q]=S?"0":"",R[L]=z?"0":"",R.transform=(_.devicePixelRatio||1)<=1?"translate("+g+"px, "+v+"px)":"translate3d("+g+"px, "+v+"px, 0)",R))}return Object.assign({},j,(t={},t[q]=S?v+"px":"",t[L]=z?g+"px":"",t.transform="",t))}function ox(e){var t=e.state,i=e.options,n=i.gpuAcceleration,r=n===void 0?!0:n,a=i.adaptive,s=a===void 0?!0:a,o=i.roundOffsets,l=o===void 0?!0:o;if(!1)var d;var c={placement:Oe(t.placement),variation:ri(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Xu(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Xu(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var ep={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:ox,data:{}};var Ts={passive:!0};function lx(e){var t=e.state,i=e.instance,n=e.options,r=n.scroll,a=r===void 0?!0:r,s=n.resize,o=s===void 0?!0:s,l=le(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&d.forEach(function(c){c.addEventListener("scroll",i.update,Ts)}),o&&l.addEventListener("resize",i.update,Ts),function(){a&&d.forEach(function(c){c.removeEventListener("scroll",i.update,Ts)}),o&&l.removeEventListener("resize",i.update,Ts)}}var ip={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:lx,data:{}};var cx={left:"right",right:"left",bottom:"top",top:"bottom"};function an(e){return e.replace(/left|right|bottom|top/g,function(t){return cx[t]})}var dx={start:"end",end:"start"};function As(e){return e.replace(/start|end/g,function(t){return dx[t]})}function qt(e){var t=le(e),i=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:i,scrollTop:n}}function Mt(e){return ni(Me(e)).left+qt(e).scrollLeft}function kl(e,t){var i=le(e),n=Me(e),r=i.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(r){a=r.width,s=r.height;var d=Nr();(d||!d&&t==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:a,height:s,x:o+Mt(e),y:l}}function zl(e){var t,i=Me(e),n=qt(e),r=(t=e.ownerDocument)==null?void 0:t.body,a=ci(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=ci(i.scrollHeight,i.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-n.scrollLeft+Mt(e),l=-n.scrollTop;return He(r||i).direction==="rtl"&&(o+=ci(i.clientWidth,r?r.clientWidth:0)-a),{width:a,height:s,x:o,y:l}}function It(e){var t=He(e),i=t.overflow,n=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+r+n)}function Es(e){return["html","body","#document"].indexOf(Le(e))>=0?e.ownerDocument.body:ze(e)&&It(e)?e:Es(_i(e))}function Ui(e,t){var i;t===void 0&&(t=[]);var n=Es(e),r=n===((i=e.ownerDocument)==null?void 0:i.body),a=le(n),s=r?[a].concat(a.visualViewport||[],It(n)?n:[]):n,o=t.concat(s);return r?o:o.concat(Ui(_i(s)))}function sn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ux(e,t){var i=ni(e,!1,t==="fixed");return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}function tp(e,t,i){return t===zs?sn(kl(e,i)):ti(t)?ux(t,i):sn(zl(Me(e)))}function px(e){var t=Ui(_i(e)),i=["absolute","fixed"].indexOf(He(e).position)>=0,n=i&&ze(e)?di(e):e;return ti(n)?t.filter(function(r){return ti(r)&&jr(r,n)&&Le(r)!=="body"}):[]}function Sl(e,t,i,n){var r=t==="clippingParents"?px(e):[].concat(t),a=[].concat(r,[i]),s=a[0],o=a.reduce(function(l,d){var c=tp(e,d,n);return l.top=ci(c.top,l.top),l.right=Et(c.right,l.right),l.bottom=Et(c.bottom,l.bottom),l.left=ci(c.left,l.left),l},tp(e,s,n));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function Hr(e){var t=e.reference,i=e.element,n=e.placement,r=n?Oe(n):null,a=n?ri(n):null,s=t.x+t.width/2-i.width/2,o=t.y+t.height/2-i.height/2,l;switch(r){case pe:l={x:s,y:t.y-i.height};break;case ke:l={x:s,y:t.y+t.height};break;case ve:l={x:t.x+t.width,y:o};break;case ge:l={x:t.x-i.width,y:o};break;default:l={x:t.x,y:t.y}}var d=r?Ot(r):null;if(d!=null){var c=d==="y"?"height":"width";switch(a){case Mi:l[d]=l[d]-(t[c]/2-i[c]/2);break;case At:l[d]=l[d]+(t[c]/2-i[c]/2);break;default:}}return l}function ui(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=n===void 0?e.placement:n,a=i.strategy,s=a===void 0?e.strategy:a,o=i.boundary,l=o===void 0?Wu:o,d=i.rootBoundary,c=d===void 0?zs:d,u=i.elementContext,m=u===void 0?tn:u,g=i.altBoundary,h=g===void 0?!1:g,v=i.padding,w=v===void 0?0:v,z=Kr(typeof w!="number"?w:$r(w,Vi)),S=m===tn?Vu:tn,L=e.rects.popper,q=e.elements[h?S:m],_=Sl(ti(q)?q:q.contextElement||Me(e.elements.popper),l,c,s),A=ni(e.elements.reference),F=Hr({reference:A,element:L,strategy:"absolute",placement:r}),M=sn(Object.assign({},L,F)),D=m===tn?M:A,H={top:_.top-D.top+z.top,bottom:D.bottom-_.bottom+z.bottom,left:_.left-D.left+z.left,right:D.right-_.right+z.right},j=e.modifiersData.offset;if(m===tn&&j){var V=j[r];Object.keys(H).forEach(function(R){var Y=[ve,ke].indexOf(R)>=0?1:-1,re=[pe,ke].indexOf(R)>=0?"y":"x";H[R]+=V[re]*Y})}return H}function Tl(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=i.boundary,a=i.rootBoundary,s=i.padding,o=i.flipVariations,l=i.allowedAutoPlacements,d=l===void 0?Ss:l,c=ri(n),u=c?o?xl:xl.filter(function(h){return ri(h)===c}):Vi,m=u.filter(function(h){return d.indexOf(h)>=0});m.length===0&&(m=u);var g=m.reduce(function(h,v){return h[v]=ui(e,{placement:v,boundary:r,rootBoundary:a,padding:s})[Oe(v)],h},{});return Object.keys(g).sort(function(h,v){return g[h]-g[v]})}function mx(e){if(Oe(e)===ks)return[];var t=an(e);return[As(e),t,As(t)]}function gx(e){var t=e.state,i=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!0:s,l=i.fallbackPlacements,d=i.padding,c=i.boundary,u=i.rootBoundary,m=i.altBoundary,g=i.flipVariations,h=g===void 0?!0:g,v=i.allowedAutoPlacements,w=t.options.placement,z=Oe(w),S=z===w,L=l||(S||!h?[an(w)]:mx(w)),q=[w].concat(L).reduce(function(Ye,Re){return Ye.concat(Oe(Re)===ks?Tl(t,{placement:Re,boundary:c,rootBoundary:u,padding:d,flipVariations:h,allowedAutoPlacements:v}):Re)},[]),_=t.rects.reference,A=t.rects.popper,F=new Map,M=!0,D=q[0],H=0;H=0,re=Y?"width":"height",Q=ui(t,{placement:j,boundary:c,rootBoundary:u,altBoundary:m,padding:d}),ce=Y?R?ve:ge:R?ke:pe;_[re]>A[re]&&(ce=an(ce));var de=an(ce),ue=[];if(a&&ue.push(Q[V]<=0),o&&ue.push(Q[ce]<=0,Q[de]<=0),ue.every(function(Ye){return Ye})){D=j,M=!1;break}F.set(j,ue)}if(M)for(var ae=h?3:1,k=function(Re){var ai=q.find(function(De){var se=F.get(De);if(se)return se.slice(0,Re).every(function(Ai){return Ai})});if(ai)return D=ai,"break"},x=ae;x>0;x--){var pi=k(x);if(pi==="break")break}t.placement!==D&&(t.modifiersData[n]._skip=!0,t.placement=D,t.reset=!0)}}var np={name:"flip",enabled:!0,phase:"main",fn:gx,requiresIfExists:["offset"],data:{_skip:!1}};function rp(e,t,i){return i===void 0&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function ap(e){return[pe,ve,ke,ge].some(function(t){return e[t]>=0})}function hx(e){var t=e.state,i=e.name,n=t.rects.reference,r=t.rects.popper,a=t.modifiersData.preventOverflow,s=ui(t,{elementContext:"reference"}),o=ui(t,{altBoundary:!0}),l=rp(s,n),d=rp(o,r,a),c=ap(l),u=ap(d);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:d,isReferenceHidden:c,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":u})}var sp={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hx};function fx(e,t,i){var n=Oe(e),r=[ge,pe].indexOf(n)>=0?-1:1,a=typeof i=="function"?i(Object.assign({},t,{placement:e})):i,s=a[0],o=a[1];return s=s||0,o=(o||0)*r,[ge,ve].indexOf(n)>=0?{x:o,y:s}:{x:s,y:o}}function yx(e){var t=e.state,i=e.options,n=e.name,r=i.offset,a=r===void 0?[0,0]:r,s=Ss.reduce(function(c,u){return c[u]=fx(u,t.rects,a),c},{}),o=s[t.placement],l=o.x,d=o.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=d),t.modifiersData[n]=s}var op={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:yx};function bx(e){var t=e.state,i=e.name;t.modifiersData[i]=Hr({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var lp={name:"popperOffsets",enabled:!0,phase:"read",fn:bx,data:{}};function Al(e){return e==="x"?"y":"x"}function vx(e){var t=e.state,i=e.options,n=e.name,r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!1:s,l=i.boundary,d=i.rootBoundary,c=i.altBoundary,u=i.padding,m=i.tether,g=m===void 0?!0:m,h=i.tetherOffset,v=h===void 0?0:h,w=ui(t,{boundary:l,rootBoundary:d,padding:u,altBoundary:c}),z=Oe(t.placement),S=ri(t.placement),L=!S,q=Ot(z),_=Al(q),A=t.modifiersData.popperOffsets,F=t.rects.reference,M=t.rects.popper,D=typeof v=="function"?v(Object.assign({},t.rects,{placement:t.placement})):v,H=typeof D=="number"?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),j=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(A){if(a){var R,Y=q==="y"?pe:ge,re=q==="y"?ke:ve,Q=q==="y"?"height":"width",ce=A[q],de=ce+w[Y],ue=ce-w[re],ae=g?-M[Q]/2:0,k=S===Mi?F[Q]:M[Q],x=S===Mi?-M[Q]:-F[Q],pi=t.elements.arrow,Ye=g&&pi?Lt(pi):{width:0,height:0},Re=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Pr(),ai=Re[Y],De=Re[re],se=Ct(0,F[Q],Ye[Q]),Ai=L?F[Q]/2-ae-se-ai-H.mainAxis:k-se-ai-H.mainAxis,si=L?-F[Q]/2+ae+se+De+H.mainAxis:x+se+De+H.mainAxis,mi=t.elements.arrow&&di(t.elements.arrow),Ei=mi?q==="y"?mi.clientTop||0:mi.clientLeft||0:0,_t=(R=j?.[q])!=null?R:0,Ds=ce+Ai-_t-Ei,Ns=ce+si-_t,ln=Ct(g?Et(de,Ds):de,ce,g?ci(ue,Ns):ue);A[q]=ln,V[q]=ln-ce}if(o){var cn,Vr=q==="x"?pe:ge,js=q==="x"?ke:ve,gi=A[_],Zi=_==="y"?"height":"width",Ur=gi+w[Vr],Gr=gi-w[js],dn=[pe,ge].indexOf(z)!==-1,Qr=(cn=j?.[_])!=null?cn:0,Zr=dn?Ur:gi-F[Zi]-M[Zi]-Qr+H.altAxis,O=dn?gi+F[Zi]+M[Zi]-Qr-H.altAxis:Gr,I=g&&dn?Zu(Zr,gi,O):Ct(g?Zr:Ur,gi,g?O:Gr);A[_]=I,V[_]=I-gi}t.modifiersData[n]=V}}var cp={name:"preventOverflow",enabled:!0,phase:"main",fn:vx,requiresIfExists:["offset"]};function El(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Ll(e){return e===le(e)||!ze(e)?qt(e):El(e)}function xx(e){var t=e.getBoundingClientRect(),i=Ii(t.width)/e.offsetWidth||1,n=Ii(t.height)/e.offsetHeight||1;return i!==1||n!==1}function Ol(e,t,i){i===void 0&&(i=!1);var n=ze(t),r=ze(t)&&xx(t),a=Me(t),s=ni(e,r,i),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!i)&&((Le(t)!=="body"||It(a))&&(o=Ll(t)),ze(t)?(l=ni(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=Mt(a))),{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function wx(e){var t=new Map,i=new Set,n=[];e.forEach(function(a){t.set(a.name,a)});function r(a){i.add(a.name);var s=[].concat(a.requires||[],a.requiresIfExists||[]);s.forEach(function(o){if(!i.has(o)){var l=t.get(o);l&&r(l)}}),n.push(a)}return e.forEach(function(a){i.has(a.name)||r(a)}),n}function Cl(e){var t=wx(e);return Uu.reduce(function(i,n){return i.concat(t.filter(function(r){return r.phase===n}))},[])}function ql(e){var t;return function(){return t||(t=new Promise(function(i){Promise.resolve().then(function(){t=void 0,i(e())})})),t}}function Ml(e){var t=e.reduce(function(i,n){var r=i[n.name];return i[n.name]=r?Object.assign({},r,n,{options:Object.assign({},r.options,n.options),data:Object.assign({},r.data,n.data)}):n,i},{});return Object.keys(t).map(function(i){return t[i]})}var dp={placement:"bottom",modifiers:[],strategy:"absolute"};function up(){for(var e=arguments.length,t=new Array(e),i=0;i(e%t+t)%t,_l=class{constructor(t,i,n){this.owner=t,this.containerEl=i,i.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),i.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),n.register([],"ArrowUp",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem-1,!0),!1}),n.register([],"ArrowDown",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem+1,!0),!1}),n.register([],"Enter",r=>{if(!r.isComposing)return this.useSelectedItem(r),!1})}onSuggestionClick(t,i){t.preventDefault();let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1),this.useSelectedItem(t)}onSuggestionMouseover(t,i){let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1)}setSuggestions(t){this.containerEl.empty();let i=[];t.forEach(n=>{let r=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(n,r),i.push(r)}),this.values=t,this.suggestions=i,this.setSelectedItem(0,!1)}useSelectedItem(t){let i=this.values[this.selectedItem];i&&this.owner.selectSuggestion(i,t)}setSelectedItem(t,i){let n=zx(t,this.suggestions.length),r=this.suggestions[this.selectedItem],a=this.suggestions[n];r?.removeClass("is-selected"),a?.addClass("is-selected"),this.selectedItem=n,i&&a.scrollIntoView(!1)}},Ls=class{constructor(t,i){this.app=t,this.inputEl=i,this.scope=new mp.Scope,this.suggestEl=createDiv("suggestion-container");let n=this.suggestEl.createDiv("suggestion");this.suggest=new _l(this,n,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",r=>{r.preventDefault()})}onInputChanged(){let t=this.inputEl.value,i=this.getSuggestions(t);if(!i){this.close();return}i.length>0?(this.suggest.setSuggestions(i),this.open(this.app.dom.appContainerEl,this.inputEl)):this.close()}open(t,i){this.app.keymap.pushScope(this.scope),t.appendChild(this.suggestEl),this.popper=Il(i,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"sameWidth",enabled:!0,fn:({state:n,instance:r})=>{let a=`${n.rects.reference.width}px`;n.styles.popper.width!==a&&(n.styles.popper.width=a,r.update())},phase:"beforeWrite",requires:["computeStyles"]}]})}close(){this.app.keymap.popScope(this.scope),this.suggest.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}};var Yr=class extends Ls{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.commands.listCommands();if(!n)return[];let r=n.filter(o=>{for(let l of this.valuesToExclude)if(l.id==o.id&&!(this.inputEl.hasAttribute("commandId")&&this.inputEl.getAttribute("commandId")==o.id))return!1;return!0}),a=[],s=i.toLowerCase();return r.forEach(o=>{(o.id.contains(s)||o.name.toLowerCase().contains(s))&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i.name)}selectSuggestion(i){this.inputEl.value=i.name,this.inputEl.setAttribute("commandId",i.id),this.inputEl.trigger("input"),this.close()}};var Os=class extends en{constructor(i,n,r,a,s,o){super(i,n,E("options.custom-command.name"),E("options.custom-command.description"),E("options.custom-command.warning"),E("options.custom-command.add-input-button-text"),a,o,()=>{let l={id:"",name:""};this.lintCommands.push(l),this.saveSettings(),this.addCommand(l,this.lintCommands.length-1,!0)});this.lintCommands=r;this.app=s;this.display()}showInputEls(){this.lintCommands.forEach((i,n)=>{this.addCommand(i,n)})}addCommand(i,n,r=!1){new gp.Setting(this.inputElDiv).addSearch(a=>{new Yr(this.app,a.inputEl,this.lintCommands),a.setPlaceholder(E("options.custom-command.command-search-placeholder-text")).setValue(i.name).onChange(s=>{let o={id:a.inputEl.getAttribute("commandId"),name:s};o.name&&o.id?(this.lintCommands[n]=o,this.saveSettings()):!o.name&&!o.id&&(this.lintCommands[n]=o,this.saveSettings())}),a.inputEl.setAttr("tabIndex",n),a.inputEl.addClass("linter-custom-command"),r&&a.inputEl.focus()}).addExtraButton(a=>{a.setIcon("up-chevron-glyph").setTooltip(E("options.custom-command.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("down-chevron-glyph").setTooltip(E("options.custom-command.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("cross").setTooltip(E("options.custom-command.delete-tooltip")).onClick(()=>{this.lintCommands.splice(n,1),this.saveSettings(),this.resetInputEls()})})}arrayMove(i,n){if(n<0||n===this.lintCommands.length)return;let r=this.lintCommands[i];this.lintCommands[i]=this.lintCommands[n],this.lintCommands[n]=r}};var hp=require("obsidian");var Sx="gm",Cs=class extends en{constructor(i,n,r,a,s){super(i,n,E("options.custom-replace.name"),E("options.custom-replace.description"),E("options.custom-replace.warning"),E("options.custom-replace.add-input-button-text"),a,s,()=>{let o={find:"",replace:"",flags:Sx};this.regexes.push(o),this.saveSettings(),this.addRegex(o,this.regexes.length-1,!0)});this.regexes=r;this.display()}showInputEls(){this.regexes.forEach((i,n)=>{this.addRegex(i,n)})}addRegex(i,n,r=!1){let a=new hp.Setting(this.inputElDiv).addText(s=>{s.setPlaceholder(E("options.custom-replace.regex-to-find-placeholder-text")).setValue(i.find).onChange(o=>{this.regexes[n].find=o,this.saveSettings()}),s.inputEl.setAttr("inputIndex",n),s.inputEl.addClass("linter-custom-regex-replacement"),r&&s.inputEl.focus()}).addText(s=>{s.setPlaceholder(E("options.custom-replace.flags-placeholder-text")).setValue(i.flags).onChange(o=>{this.regexes[n].flags=o,this.saveSettings()})}).addText(s=>{s.setPlaceholder(E("options.custom-replace.regex-to-replace-placeholder-text")).setValue(i.replace).onChange(o=>{this.regexes[n].replace=o,this.saveSettings()})}).addExtraButton(s=>{s.setIcon("up-chevron-glyph").setTooltip(E("options.custom-replace.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(s=>{s.setIcon("down-chevron-glyph").setTooltip(E("options.custom-replace.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(s=>{s.setIcon("cross").setTooltip(E("options.custom-replace.delete-tooltip")).onClick(()=>{this.regexes.splice(n,1),this.saveSettings(),this.resetInputEls()})});a.settingEl.style.flexWrap="wrap"}arrayMove(i,n){if(n<0||n===this.regexes.length)return;let r=this.regexes[i];this.regexes[i]=this.regexes[n],this.regexes[n]=r}};var qs=class extends Si{constructor(i,n,r,a,s){super(i,n,"Custom",r,s);this.app=a;this.display()}display(){let i=this.contentEl.createDiv(),n=new Os(i,this.plugin.settingsTab.component,this.plugin.settings.lintCommands,this.isMobile,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(i,n.name,n.description.replaceAll(` `," ")+n.warning.replaceAll(` -`," "));let r=this.contentEl.createDiv(),a=new ls(r,this.plugin.settings.customRegexes,this.isMobile,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(r,a.name,a.description.replaceAll(` +`," "));let r=this.contentEl.createDiv(),a=new Cs(r,this.plugin.settingsTab.component,this.plugin.settings.customRegexes,this.isMobile,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(r,a.name,a.description.replaceAll(` `," ")+a.warning.replaceAll(` -`," "))}};var Dd=require("obsidian");var ds=class{constructor(i,t,n,r){this.containerEl=i;this.searchZeroState=t;this.tabNameToTab=n;this.onFocus=r;this.searchSettingInfo=new Map;for(let[a,s]of n)this.searchSettingInfo.set(a,s.searchSettingInfo);this.display()}display(){let i=new Dd.Setting(this.containerEl);i.settingEl.style.border="none",i.addSearch(t=>{this.search=t}),this.search.setPlaceholder("Search all settings"),this.search.inputEl.onfocus=()=>{this.onFocus()},this.search.onChange(t=>{this.searchSettings(t.toLowerCase())})}searchSettings(i){let t=new Set,n=function(r,a){bi(r),t.has(a)||t.add(a)};for(let[r,a]of this.searchSettingInfo)for(let s of a)if(i.trim()===""||s.alias?.includes(i)||s.description.includes(i)||s.name.includes(i))n(s.containerEl,r);else if(s.options)for(let o of s.options){if(o.description.toLowerCase().includes(i)||o.name.toLowerCase().includes(i)){n(s.containerEl,r);break}else if(o.options){for(let l of o.options)if(l.description.toLowerCase().includes(i)||l.value.toLowerCase().includes(i)){n(s.containerEl,r);break}}ei(s.containerEl)}else ei(s.containerEl);for(let[r,a]of this.tabNameToTab)t.has(r)?bi(a.headingEl):ei(a.headingEl);t.size===0?bi(this.searchZeroState):ei(this.searchZeroState)}focusOnInput(){this.search.inputEl.focus()}};var ps=Hr(pa());var Jo=require("obsidian");var Ir=class{constructor(i,t,n,r=!0){this.containerEl=i;this.name=t;this.description=n;this.disabled=r;this.display()}display(){let i=this.containerEl.createDiv(),t=i.createDiv("setting-item-info");this.nameEl=t.createDiv("setting-item-name"),this.nameEl.setText(this.name),this.descEl=t.createDiv("setting-item-description"),this.descEl.setText(this.description),this.inputEl=i.createDiv().createEl("textarea",{cls:"full-width"}),this.inputEl.spellcheck=!1,this.inputEl.disabled=this.disabled}getInput(){return this.inputEl.value}};var yy=Object.keys(ps.default.levels),by=Object.values(ps.default.levels),us=class extends zi{constructor(i,t,n,r){super(i,t,"Debug",n,r),this.display()}display(){let i=this.contentEl.createDiv(),t="Log Level",n="The types of logs that will be allowed to be logged by the service. The default is ERROR.";new Jo.Setting(i).setName(t).setDesc(n).addDropdown(o=>{yy.forEach((l,d)=>{o.addOption(by[d],l)}),o.setValue(this.plugin.settings.logLevel+""),o.onChange(async l=>{let d=parseInt(l);isNaN(d)&&(d=ps.default.levels.ERROR),fa(d),this.plugin.settings.logLevel=d,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(i,t,n),i=this.contentEl.createDiv(),t="Linter Config",n="The contents of the data.json for the Linter as of the setting page loading",new Ir(i,t,n).inputEl.setText(JSON.stringify(this.plugin.settings,null,2)),this.addSettingSearchInfo(i,t,n),i=this.contentEl.createDiv(),t="Collect logs when linting on save and linting the current file",n="Goes ahead and collects logs when you `Lint on save` and linting the current file. These logs can be helpful for debugging and create bug reports.";let a=new Jo.Setting(i).setName(t).addToggle(o=>{o.setValue(this.plugin.settings.recordLintOnSaveLogs).onChange(async l=>{this.plugin.settings.recordLintOnSaveLogs=l,await this.plugin.saveSettings()})});Ae(n,a.descEl),this.addSettingSearchInfo(i,t,n),i=this.contentEl.createDiv(),t="Linter Logs",n="The logs from the last `Lint on save` or the last lint current file run if enabled.",new Ir(i,t,n).inputEl.setText(ga.join(` -`)),Ae(n,a.descEl),this.addSettingSearchInfo(i,t,n)}};var ms=class extends Jt.PluginSettingTab{constructor(t,n){super(t,n);this.tabNameToTab=new Map;this.selectedTab="General";this.plugin=n}display(){let{containerEl:t}=this;t.empty();let n=t.createDiv("linter-setting-title");Jt.Platform.isMobile?n.addClass("linter-mobile"):n.createEl("h1").setText("Linter"),this.navContainer=t.createEl("nav",{cls:"linter-setting-header"}),this.tabNavEl=this.navContainer.createDiv("linter-setting-tab-group"),this.settingsContentEl=t.createDiv("linter-setting-content"),this.addTabs(Jt.Platform.isMobile),this.createSearchZeroState(Jt.Platform.isMobile),this.generateSearchBar(n),this.selectedTab==""&&this.tabSearcher.focusOnInput()}addTabs(t){this.addTab(new Ja(this.tabNavEl,this.settingsContentEl,t,this.plugin));for(let n of Object.values(j))this.addTab(new Xa(this.tabNavEl,this.settingsContentEl,n,xn.get(n),t,this.plugin));this.addTab(new cs(this.tabNavEl,this.settingsContentEl,t,this.app,this.plugin)),this.addTab(new us(this.tabNavEl,this.settingsContentEl,t,this.plugin))}generateSearchBar(t){this.tabSearcher=new ds(t,this.searchZeroState,this.tabNameToTab,()=>{for(let n of this.tabNameToTab.values()){n.updateTabDisplayMode(!1,"entering search mode by focusing on the search input box");let r=this.tabSearcher.search.getValue();this.selectedTab==""&&r.trim()!=""&&this.tabSearcher.searchSettings(r.toLowerCase()),this.selectedTab=""}})}createSearchZeroState(t){this.searchZeroState=this.settingsContentEl.createDiv(),ei(this.searchZeroState),this.searchZeroState.createEl(t?"h3":"h2",{text:"No settings match search"}).style.textAlign="center"}addTab(t){t.navButton.onclick=()=>{this.onTabClick(t.name)},t.updateTabDisplayMode(this.selectedTab===t.name,"the status is still the same"),this.tabNameToTab.set(t.name,t)}onTabClick(t){if(this.selectedTab!==t){if(this.selectedTab=="")for(let[n,r]of this.tabNameToTab)r.updateTabDisplayMode(n===t,"leaving search mode by selecting a tab");else ei(this.searchZeroState),this.tabNameToTab.get(t).updateTabDisplayMode(!0),this.tabNameToTab.get(this.selectedTab).updateTabDisplayMode(!1);this.selectedTab=t}}};var vy={en:"en-gb",zh:"zh-cn","zh-TW":"zh-tw",ru:"ru",ko:"ko",it:"it",id:"id",ro:"ro","pt-BR":"pt-br",cz:"cs",da:"da",de:"de",es:"es",fr:"fr",no:"nn",pl:"pl",pt:"pt",tr:"tr",hi:"hi",nl:"nl",ar:"ar",ja:"ja"},xy={ruleConfigs:{},lintOnSave:!1,recordLintOnSaveLogs:!1,displayChanged:!0,foldersToIgnore:[],linterLocale:"system-default",logLevel:Pd.default.levels.ERROR,lintCommands:[],customRegexes:[],commonStyles:{aliasArrayStyle:"single-line",tagArrayStyle:"single-line",minimumNumberOfDollarSignsToBeAMathBlock:2,escapeCharacter:'"',removeUnnecessaryEscapeCharsForMultiLineArrays:!1}},hs=class extends se.Plugin{constructor(){super(...arguments);this.eventRefs=[];this.isEnabled=!0;this.rulesRunner=new Za}async onload(){kn("Loading plugin"),this.isEnabled=!0;for(let t in xe){let n=xe[t];(0,se.addIcon)(n.id,n.source)}await this.loadSettings(),this.addCommands(),this.registerEventsAndSaveCallback(),this.addSettingTab(new ms(this.app,this))}async onunload(){kn("Unloading plugin"),this.isEnabled=!1;for(let t of this.eventRefs)this.app.workspace.offref(t)}async loadSettings(){let t=await this.loadData();this.settings=Object.assign({},xy,t),fa(this.settings.logLevel),this.setOrUpdateMomentInstance();let n=this.settings.ruleConfigs["Move Tags to Yaml"];if(n){let s=n["Force Yaml Escape on Keys"];s&&(this.settings.ruleConfigs["Force YAML Escape"]||(this.settings.ruleConfigs["Force YAML Escape"]={}),this.settings.ruleConfigs["Force YAML Escape"]["Force YAML Escape on Keys"]=s??this.settings.ruleConfigs["Force YAML Escape"]["Force YAML Escape on Keys"]),delete this.settings.ruleConfigs["Escape YAML Special Characters"]["Force Yaml Escape on Keys"]}let r=this.settings.ruleConfigs["Move Tags to Yaml"];if(r){let s=r["Remove the hashtag from tags in content body"];s!=null&&(this.settings.ruleConfigs["Move Tags to Yaml"]["Body tag operation"]=s?"Remove hashtag":"Nothing",delete this.settings.ruleConfigs["Move Tags to Yaml"]["Remove the hashtag from tags in content body"])}let a=this.settings.ruleConfigs["Space between Chinese and English or numbers"];if(a){let s=a["Ensures that Chinese and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)"];this.settings.ruleConfigs["Space between Chinese Japanese or Korean and English or numbers"]={"Ensures that Chinese, Japanese, or Korean and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)":s},delete this.settings.ruleConfigs["Space between Chinese and English or numbers"]}this.moveSettingsToCommonSettings();for(let s of et)this.settings.ruleConfigs[s.name]||(this.settings.ruleConfigs[s.name]=s.getDefaultOptions())}async saveSettings(){await this.saveData(this.settings)}addCommands(){this.addCommand({id:"lint-file",name:"Lint the current file",editorCallback:t=>{Sn(this.settings.recordLintOnSaveLogs),js(),this.runLinterEditor(t),Sn(!1)},icon:xe.file.id,hotkeys:[{modifiers:["Mod","Alt"],key:"L"}]}),this.addCommand({id:"lint-file-unless-ignored",name:"Lint the current file unless ignored",editorCallback:t=>{let n=this.app.workspace.getActiveFile();this.shouldIgnoreFile(n)||this.runLinterEditor(t)},icon:xe.file.id}),this.addCommand({id:"lint-all-files",name:"Lint all files in the vault",icon:xe.vault.id,callback:()=>{let t="This will edit all of your files and may introduce errors.",n="Lint All",r="Linting all files...";new Er(this.app,t,n,r,()=>this.runLinterAllFiles(this.app)).open()}}),this.addCommand({id:"lint-all-files-in-folder",name:"Lint all files in the current folder",icon:xe.folder.id,editorCheckCallback:(t,n)=>{if(t)return!this.app.workspace.getActiveFile().parent.isRoot();this.createFolderLintModal(this.app.workspace.getActiveFile().parent)}}),this.addCommand({id:"paste-as-plain-text",name:"Paste as Plain Text & without Modifications",editorCallback:t=>this.pasteAsPlainText(t)})}registerEventsAndSaveCallback(){let t=this.app.workspace.on("editor-paste",s=>{s.defaultPrevented||this.modifyPasteEvent(s)});this.registerEvent(t),this.eventRefs.push(t),t=this.app.workspace.on("file-menu",(s,o,l)=>this.onMenuOpenCallback(s,o,l)),this.registerEvent(t),this.eventRefs.push(t);let n=this.app.commands?.commands?.["editor:save-file"];typeof n?.callback=="function"&&(n.callback=()=>{if(this.settings.lintOnSave&&this.isEnabled){let s=this.getEditor();if(!s)return;let o=this.app.workspace.getActiveFile();this.shouldIgnoreFile(o)||(Sn(this.settings.recordLintOnSaveLogs),js(),this.runLinterEditor(s),Sn(!1))}});let a=this;window.CodeMirrorAdapter.commands.save=()=>{a.app.commands.executeCommandById("editor:save-file")}}onMenuOpenCallback(t,n,r){n instanceof se.TFile&&n.extension==="md"?t.addItem(a=>{a.setIcon(xe.file.id).setTitle("Lint file").onClick(async()=>{this.runLinterFile(n)})}):n instanceof se.TFolder&&t.addItem(a=>{a.setTitle("Lint folder").setIcon(xe.folder.id).onClick(()=>this.createFolderLintModal(n))})}shouldIgnoreFile(t){for(let n of this.settings.foldersToIgnore)if(n.length>0&&t.path.startsWith(n))return!0;return!1}async runLinterFile(t){let n=Vl(await this.app.vault.read(t)),r=this.rulesRunner.lintText(Or(n,t,this.momentLocale,this.settings));await this.app.vault.modify(t,r)}async runLinterAllFiles(t){let n=0;await Promise.all(t.vault.getMarkdownFiles().map(async a=>{if(!this.shouldIgnoreFile(a))try{await this.runLinterFile(a)}catch(s){this.handleLintError(a,s,"Lint All Files Error in File 'FILE_PATH'"),n+=1}}));let r=0;if(n===0)new se.Notice("Linted all files",r);else{let a=n===1?"was 1 error":"were "+n+" errors";new se.Notice("Linted all files and there "+a+".",r)}}async runLinterAllFilesInFolder(t){kn("Linting folder "+t.name);let n=0,r=0,a=(0,se.normalizePath)(t.path)+"/";await Promise.all(this.app.vault.getMarkdownFiles().map(async o=>{if((0,se.normalizePath)(o.path).startsWith(a)&&!this.shouldIgnoreFile(o)){try{await this.runLinterFile(o)}catch(l){this.handleLintError(o,l,"Lint All Files in Folder Error in File 'FILE_PATH'"),n+=1}r++}}));let s=0;if(n===0)new se.Notice("Linted all "+r+" files in "+t.name+".",s);else{let o=n===1?"was 1 error":"were "+n+" errors";new se.Notice("Linted all "+r+" files in "+t.name+" and there "+o+".",s)}}createFolderLintModal(t){let n="This will edit all of your files in "+t.name+" including files in its subfolders which may introduce errors.",r="Lint All Files in "+t.name,a="Linting all files in "+t.name+"...";new Er(this.app,n,r,a,()=>this.runLinterAllFilesInFolder(t)).open()}runLinterEditor(t){kn("Running linter");let n=this.app.workspace.getActiveFile(),r=t.getValue(),a;try{a=this.rulesRunner.lintText(Or(r,n,this.momentLocale,this.settings))}catch(u){this.handleLintError(n,u,"Lint File Error in File 'FILE_PATH'",!1);return}let o=new Xt.default.diff_match_patch().diff_main(r,a),l="";o.forEach(u=>{function m(f){let v=f.split(` -`);return{line:v.length-1,ch:v[v.length-1].length}}let[g,h]=u;if(g==Xt.default.DIFF_INSERT)t.replaceRange(h,m(l)),l+=h;else if(g==Xt.default.DIFF_DELETE){let f=m(l),v=l;v+=h;let b=m(v);t.replaceRange("",f,b)}else l+=h});let d=o.map(u=>u[0]==Xt.default.DIFF_INSERT?u[1].length:0).reduce((u,m)=>u+m,0),c=o.map(u=>u[0]==Xt.default.DIFF_DELETE?u[1].length:0).reduce((u,m)=>u+m,0);this.displayChangedMessage(d,c);try{this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands)}catch(u){this.handleLintError(n,u,"Lint File Error in File 'FILE_PATH'",!1)}}async setOrUpdateMomentInstance(){let t=localStorage.getItem("language")||"en",n=navigator.language?.toLowerCase(),r=vy[t];this.settings.linterLocale!=="system-default"?r=this.settings.linterLocale:n.startsWith(t)&&(r=n),this.momentLocale=r;let a=gs.moment.locale(),s=gs.moment.locale(r);vi(`Trying to switch Moment.js locale to ${r}, got ${s}`),gs.moment.locale(a)}displayChangedMessage(t,n){if(this.settings.displayChanged){let r=p` - ${t} characters added - ${n} characters removed - `;new se.Notice(r)}}handleLintError(t,n,r,a=!0){let s=r.replace("FILE_PATH",t.path);n instanceof ji?a?new se.Notice(`${s} ${n.message}. -See console for more details.`):new se.Notice(`${n.message}. -See console for more details.`):new se.Notice("An unknown error occurred during linting. See console for details"),lc(s,n)}async modifyPasteEvent(t){let n=this.getEditor();if(!n)return;let r=t.clipboardData.getData("text/plain");if(!r)return;if(Bt.test(r.trim())){zn("aborted paste lint as the clipboard content is a link and doing so will avoid conflicts with other plugins that modify pasting.");return}if(t.stopPropagation(),t.preventDefault(),!t.defaultPrevented)return;let a=this.app.vault.getConfig("autoConvertHtml"),s=t.clipboardData.getData("text/html"),o=s&&a?(0,se.htmlToMarkdown)(s):r,l=n.listSelections();if(l.length===1){let d=l[0];o=this.rulesRunner.runPasteLint(this.getLineContent(n,d),Or(o,null,this.momentLocale,this.settings)),n.replaceSelection(o)}else this.handleMultiCursorPaste(n,l,o)}handleMultiCursorPaste(t,n,r){let a=this.convertContentIntoProperPasteContent(n,r),s=[];n.forEach((o,l)=>{r=this.rulesRunner.runPasteLint(this.getLineContent(t,o),Or(a[l],null,this.momentLocale,this.settings)),s.push({text:r,from:o.anchor,to:o.head})}),t.transaction({changes:s})}convertContentIntoProperPasteContent(t,n){let r=n.split(` -`),a=[];if(r.length%t.length!==0)for(let s=0;s{this.search=i}),this.search.setPlaceholder(E("tabs.default-search-bar-text")),this.search.inputEl.onfocus=()=>{this.onFocus()},this.search.onChange(i=>{this.searchSettings(i.toLowerCase())})}searchSettings(t){let i=new Set,n=function(r,a){ki(r),i.has(a)||i.add(a)};for(let[r,a]of this.searchSettingInfo)for(let s of a)if(t.trim()===""||s.alias?.includes(t)||s.description.includes(t)||s.name.includes(t))n(s.containerEl,r);else if(s.options)for(let o of s.options){if(o.description.toLowerCase().includes(t)||o.name.toLowerCase().includes(t)){n(s.containerEl,r);break}else if(o.options){for(let l of o.options)if(l.description.toLowerCase().includes(t)||l.value.toLowerCase().includes(t)){n(s.containerEl,r);break}}ei(s.containerEl)}else ei(s.containerEl);for(let[r,a]of this.tabNameToTab)i.has(r)?ki(a.headingEl):ei(a.headingEl);i.size===0?ki(this.searchZeroState):ei(this.searchZeroState)}focusOnInput(){this.search.inputEl.focus()}};var _s=gn(sa());var Bl=require("obsidian");var Wr=class{constructor(t,i,n,r=!0){this.containerEl=t;this.name=i;this.description=n;this.disabled=r;this.display()}display(){let t=this.containerEl.createDiv(),i=t.createDiv("setting-item-info");this.nameEl=i.createDiv("setting-item-name"),this.nameEl.setText(this.name),this.descEl=i.createDiv("setting-item-description"),this.descEl.setText(this.description),this.inputEl=t.createDiv().createEl("textarea",{cls:"full-width"}),this.inputEl.spellcheck=!1,this.inputEl.disabled=this.disabled}getInput(){return this.inputEl.value}};var Tx=Object.keys(_s.default.levels),Ax=Object.values(_s.default.levels),Is=class extends Si{constructor(t,i,n,r){super(t,i,"Debug",n,r),this.display()}display(){let t=this.contentEl.createDiv(),i=E("tabs.debug.log-level.name"),n=E("tabs.debug.log-level.description");new Bl.Setting(t).setName(i).setDesc(n).addDropdown(o=>{Tx.forEach((l,d)=>{o.addOption(Ax[d],E("enums."+l))}),o.setValue(this.plugin.settings.logLevel+""),o.onChange(async l=>{let d=parseInt(l);isNaN(d)&&(d=_s.default.levels.ERROR),da(d),this.plugin.settings.logLevel=d,await this.plugin.saveSettings()})}),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.debug.linter-config.name"),n=E("tabs.debug.linter-config.description"),new Wr(t,i,n).inputEl.setText(JSON.stringify(this.plugin.settings,null,2)),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.debug.log-collection.name"),n=E("tabs.debug.log-collection.description");let a=new Bl.Setting(t).setName(i).addToggle(o=>{o.setValue(this.plugin.settings.recordLintOnSaveLogs).onChange(async l=>{this.plugin.settings.recordLintOnSaveLogs=l,await this.plugin.saveSettings()})});wi(n,a.descEl,this.plugin.settingsTab.component),this.addSettingSearchInfo(t,i,n),t=this.contentEl.createDiv(),i=E("tabs.debug.linter-logs.name"),n=E("tabs.debug.linter-logs.description");let s=new Wr(t,i,"");s.inputEl.setText(la.join(` +`)),wi(n,s.descEl,this.plugin.settingsTab.component),this.addSettingSearchInfo(t,i,n)}};var Bs=class extends Gi.PluginSettingTab{constructor(i,n){super(i,n);this.plugin=n;this.tabNameToTab=new Map;this.selectedTab="General";this.component=new Gi.Component}display(){let{containerEl:i}=this;this.component.load(),i.empty();let n=i.createDiv("linter-setting-title");Gi.Platform.isMobile?n.addClass("linter-mobile"):n.createEl("h1").setText(E("linter-title")),this.navContainer=i.createEl("nav",{cls:"linter-setting-header"}),this.tabNavEl=this.navContainer.createDiv("linter-setting-tab-group"),this.settingsContentEl=i.createDiv("linter-setting-content"),this.addTabs(Gi.Platform.isMobile),this.createSearchZeroState(Gi.Platform.isMobile),this.generateSearchBar(n),this.selectedTab==""&&this.tabSearcher.focusOnInput()}hide(){this.component.unload()}addTabs(i){this.addTab(new xs(this.tabNavEl,this.settingsContentEl,i,this.plugin));for(let n of Object.values(N))this.addTab(new ws(this.tabNavEl,this.settingsContentEl,n,Nn.get(n),i,this.plugin));this.addTab(new qs(this.tabNavEl,this.settingsContentEl,i,this.app,this.plugin)),this.addTab(new Is(this.tabNavEl,this.settingsContentEl,i,this.plugin))}generateSearchBar(i){this.tabSearcher=new Ms(i,this.searchZeroState,this.tabNameToTab,()=>{for(let n of this.tabNameToTab.values()){n.updateTabDisplayMode(!1,"entering search mode by focusing on the search input box");let r=this.tabSearcher.search.getValue();this.selectedTab==""&&r.trim()!=""&&this.tabSearcher.searchSettings(r.toLowerCase()),this.selectedTab=""}})}createSearchZeroState(i){this.searchZeroState=this.settingsContentEl.createDiv(),ei(this.searchZeroState),this.searchZeroState.createEl(i?"h3":"h2",{text:E("empty-search-results-text")}).style.textAlign="center"}addTab(i){i.navButton.onclick=()=>{this.onTabClick(i.name)},i.updateTabDisplayMode(this.selectedTab===i.name,"the status is still the same"),this.tabNameToTab.set(i.name,i)}onTabClick(i){if(this.selectedTab!==i){if(this.selectedTab=="")for(let[n,r]of this.tabNameToTab)r.updateTabDisplayMode(n===i,"leaving search mode by selecting a tab");else ei(this.searchZeroState),this.tabNameToTab.get(i).updateTabDisplayMode(!0),this.tabNameToTab.get(this.selectedTab).updateTabDisplayMode(!1);this.selectedTab=i}}};var Ex={en:"en-gb",zh:"zh-cn","zh-TW":"zh-tw",ru:"ru",ko:"ko",it:"it",id:"id",ro:"ro","pt-BR":"pt-br",cz:"cs",da:"da",de:"de",es:"es",fr:"fr",no:"nn",pl:"pl",pt:"pt",tr:"tr",hi:"hi",nl:"nl",ar:"ar",ja:"ja"},Qi=0,Lx={ruleConfigs:{},lintOnSave:!1,recordLintOnSaveLogs:!1,displayChanged:!0,settingsConvertedToConfigKeyValues:!1,foldersToIgnore:[],linterLocale:"system-default",logLevel:yp.default.levels.ERROR,lintCommands:[],customRegexes:[],commonStyles:{aliasArrayStyle:"single-line",tagArrayStyle:"single-line",minimumNumberOfDollarSignsToBeAMathBlock:2,escapeCharacter:'"',removeUnnecessaryEscapeCharsForMultiLineArrays:!1}},Rs=class extends oe.Plugin{constructor(){super(...arguments);this.eventRefs=[];this.isEnabled=!0;this.rulesRunner=new bs}async onload(){ga(window.localStorage.getItem("language")),wn(E("logs.plugin-load")),this.isEnabled=!0;for(let i in we){let n=we[i];(0,oe.addIcon)(n.id,n.source)}await this.loadSettings(),this.addCommands(),this.registerEventsAndSaveCallback(),this.settingsTab=new Bs(this.app,this),this.addSettingTab(this.settingsTab)}async onunload(){wn(E("logs.plugin-unload")),this.isEnabled=!1;for(let i of this.eventRefs)this.app.workspace.offref(i)}async loadSettings(){let i=await this.loadData();this.settings=Object.assign({},Lx,i),da(this.settings.logLevel),this.setOrUpdateMomentInstance(),this.settings.settingsConvertedToConfigKeyValues||this.moveConfigValuesToKeyBasedFormat();for(let n of Ki)this.settings.ruleConfigs[n.alias]||(this.settings.ruleConfigs[n.alias]=n.getDefaultOptions())}async saveSettings(){await this.saveData(this.settings)}addCommands(){this.addCommand({id:"lint-file",name:E("commands.lint-file.name"),editorCallback:i=>{kn(this.settings.recordLintOnSaveLogs),ao(),this.runLinterEditor(i),kn(!1)},icon:we.file.id,hotkeys:[{modifiers:["Mod","Alt"],key:"L"}]}),this.addCommand({id:"lint-file-unless-ignored",name:E("commands.lint-file-unless-ignored.name"),editorCallback:i=>{let n=this.app.workspace.getActiveFile();this.shouldIgnoreFile(n)||this.runLinterEditor(i)},icon:we.file.id}),this.addCommand({id:"lint-all-files",name:E("commands.lint-all-files.name"),icon:we.vault.id,callback:()=>{let i=E("commands.lint-all-files.start-message"),n=E("commands.lint-all-files.submit-button-text"),r=E("commands.lint-all-files.submit-button-notice-text");new Dr(this.app,i,n,r,()=>this.runLinterAllFiles(this.app)).open()}}),this.addCommand({id:"lint-all-files-in-folder",name:E("commands.lint-all-files-in-folder.name"),icon:we.folder.id,editorCheckCallback:(i,n)=>{if(i)return!this.app.workspace.getActiveFile().parent.isRoot();this.createFolderLintModal(this.app.workspace.getActiveFile().parent)}}),this.addCommand({id:"paste-as-plain-text",name:E("commands.paste-as-plain-text.name"),editorCallback:i=>this.pasteAsPlainText(i)})}registerEventsAndSaveCallback(){let i=this.app.workspace.on("editor-paste",s=>{s.defaultPrevented||this.modifyPasteEvent(s)});this.registerEvent(i),this.eventRefs.push(i),i=this.app.workspace.on("file-menu",(s,o,l)=>this.onMenuOpenCallback(s,o,l)),this.registerEvent(i),this.eventRefs.push(i);let n=this.app.commands?.commands?.["editor:save-file"];typeof n?.callback=="function"&&(n.callback=()=>{if(this.settings.lintOnSave&&this.isEnabled){let s=this.getEditor();if(!s)return;let o=this.app.workspace.getActiveFile();this.shouldIgnoreFile(o)||(kn(this.settings.recordLintOnSaveLogs),ao(),this.runLinterEditor(s),kn(!1))}});let a=this;window.CodeMirrorAdapter.commands.save=()=>{a.app.commands.executeCommandById("editor:save-file")}}onMenuOpenCallback(i,n,r){n instanceof oe.TFile&&n.extension==="md"?i.addItem(a=>{a.setIcon(we.file.id).setTitle(E("commands.lint-file-pop-up-menu-text.name")).onClick(async()=>{this.runLinterFile(n)})}):n instanceof oe.TFolder&&i.addItem(a=>{a.setTitle(E("commands.lint-folder-pop-up-menu-text.name")).setIcon(we.folder.id).onClick(()=>this.createFolderLintModal(n))})}shouldIgnoreFile(i){for(let n of this.settings.foldersToIgnore)if(n.length>0&&i.path.startsWith(n))return!0;return!1}async runLinterFile(i){let n=Jc(await this.app.vault.read(i)),r=this.rulesRunner.lintText(Rr(n,i,this.momentLocale,this.settings));await this.app.vault.modify(i,r)}async runLinterAllFiles(i){let n=0;if(await Promise.all(i.vault.getMarkdownFiles().map(async r=>{if(!this.shouldIgnoreFile(r))try{await this.runLinterFile(r)}catch(a){this.handleLintError(r,a,E("commands.lint-all-files.error-message")+" '{FILE_PATH}'"),n+=1}})),n===0)new oe.Notice(E("commands.lint-all-files.success-message"),Qi);else{let r=n===1?E("commands.lint-all-files.errors-message-singular"):E("commands.lint-all-files.errors-message-plural").replace("{NUM}",n.toString());new oe.Notice(r,Qi)}}async runLinterAllFilesInFolder(i){wn(E("logs.folder-lint")+i.name);let n=0,r=0,a=(0,oe.normalizePath)(i.path)+"/";if(await Promise.all(this.app.vault.getMarkdownFiles().map(async s=>{if((0,oe.normalizePath)(s.path).startsWith(a)&&!this.shouldIgnoreFile(s)){try{await this.runLinterFile(s)}catch(o){this.handleLintError(s,o,E("commands.lint-all-files-in-folder.error-message")+" '{FILE_PATH}'"),n+=1}r++}})),n===0)new oe.Notice(E("commands.lint-all-files-in-folder.success-message").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name),Qi);else{let s=n===1?E("commands.lint-all-files-in-folder.message-singular").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name):E("commands.lint-all-files-in-folder.message-plural").replace("{FILE_COUNT}",r.toString()).replace("{FOLDER_NAME}",i.name).replace("{ERROR_COUNT}",n.toString());new oe.Notice(s,Qi)}}createFolderLintModal(i){let n=E("commands.lint-all-files-in-folder.start-message").replace("{FOLDER_NAME}",i.name),r=E("commands.lint-all-files-in-folder.submit-button-text").replace("{FOLDER_NAME}",i.name),a=E("commands.lint-all-files-in-folder.submit-button-notice-text").replace("{FOLDER_NAME}",i.name);new Dr(this.app,n,r,a,()=>this.runLinterAllFilesInFolder(i)).open()}runLinterEditor(i){wn(E("logs.linter-run"));let n=this.app.workspace.getActiveFile(),r=i.getValue(),a;try{a=this.rulesRunner.lintText(Rr(r,n,this.momentLocale,this.settings))}catch(u){this.handleLintError(n,u,E("commands.lint-file.error-message")+" '{FILE_PATH}'",!1);return}let o=new on.default.diff_match_patch().diff_main(r,a),l="";o.forEach(u=>{function m(v){let w=v.split(` +`);return{line:w.length-1,ch:w[w.length-1].length}}let[g,h]=u;if(g==on.default.DIFF_INSERT)i.replaceRange(h,m(l)),l+=h;else if(g==on.default.DIFF_DELETE){let v=m(l),w=l;w+=h;let z=m(w);i.replaceRange("",v,z)}else l+=h});let d=o.map(u=>u[0]==on.default.DIFF_INSERT?u[1].length:0).reduce((u,m)=>u+m,0),c=o.map(u=>u[0]==on.default.DIFF_DELETE?u[1].length:0).reduce((u,m)=>u+m,0);this.displayChangedMessage(d,c);try{this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands)}catch(u){this.handleLintError(n,u,E("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}}async setOrUpdateMomentInstance(){let i=localStorage.getItem("language")||"en",n=navigator.language?.toLowerCase(),r=Ex[i];this.settings.linterLocale!=="system-default"?r=this.settings.linterLocale:n.startsWith(i)&&(r=n),this.momentLocale=r;let a=Fs.moment.locale(),s=Fs.moment.locale(r);fi(E("logs.moment-locale-not-found").replace("{MOMENT_LOCALE}",r).replace("{CURRENT_LOCALE}",s)),Fs.moment.locale(a)}displayChangedMessage(i,n){if(this.settings.displayChanged){let r=p` + ${i} ${E("notice-text.characters-added")} + ${n} ${E("notice-text.characters-removed")} + `;new oe.Notice(r)}}handleLintError(i,n,r,a=!0){let s=r.replace("{FILE_PATH}",i.path),o=E("logs.see-console");n instanceof Pi?a?new oe.Notice(`${s} ${n.message}. +${o}`,Qi):new oe.Notice(`${n.message}. +${o}`,Qi):new oe.Notice(`${E("logs.unknown-error")} ${o}`,Qi),Oc(s,n)}async modifyPasteEvent(i){let n=this.getEditor();if(!n)return;let r=i.clipboardData.getData("text/plain");if(!r)return;if(Wt.test(r.trim())){et(E("logs.paste-link-warning"));return}if(i.stopPropagation(),i.preventDefault(),!i.defaultPrevented)return;let a=this.app.vault.getConfig("autoConvertHtml"),s=i.clipboardData.getData("text/html"),o=s&&a?(0,oe.htmlToMarkdown)(s):r,l=n.listSelections();if(l.length===1){let d=l[0];o=this.rulesRunner.runPasteLint(this.getLineContent(n,d),Rr(o,null,this.momentLocale,this.settings)),n.replaceSelection(o)}else this.handleMultiCursorPaste(n,l,o)}handleMultiCursorPaste(i,n,r){let a=this.convertContentIntoProperPasteContent(n,r),s=[];n.forEach((o,l)=>{r=this.rulesRunner.runPasteLint(this.getLineContent(i,o),Rr(a[l],null,this.momentLocale,this.settings)),s.push({text:r,from:o.anchor,to:o.head})}),i.transaction({changes:s})}convertContentIntoProperPasteContent(i,n){let r=n.split(` +`),a=[];if(r.length%i.length!==0)for(let s=0;s { + this.settings.lightScheme = "minimal-rose-pine-light"; + this.saveData(this.settings); + this.updateLightScheme(); + this.updateLightStyle(); + } + }); this.addCommand({ id: "toggle-minimal-solarized-light", name: "Switch light color scheme to Solarized (light)", @@ -540,6 +550,16 @@ var MinimalTheme = class extends import_obsidian.Plugin { this.updateDarkStyle(); } }); + this.addCommand({ + id: "toggle-minimal-rose-pine-dark", + name: "Switch color scheme to Ros\xE9 Pine (dark)", + callback: () => { + this.settings.darkScheme = "minimal-rose-pine-dark"; + this.saveData(this.settings); + this.updateDarkScheme(); + this.updateDarkStyle(); + } + }); this.addCommand({ id: "toggle-minimal-solarized-dark", name: "Switch dark color scheme to Solarized (dark)", @@ -656,11 +676,11 @@ var MinimalTheme = class extends import_obsidian.Plugin { this.app.workspace.trigger("css-change"); } updateDarkScheme() { - document.body.removeClass("minimal-atom-dark", "minimal-ayu-dark", "minimal-catppuccin-dark", "minimal-default-dark", "minimal-dracula-dark", "minimal-everforest-dark", "minimal-gruvbox-dark", "minimal-macos-dark", "minimal-nord-dark", "minimal-notion-dark", "minimal-solarized-dark", "minimal-things-dark"); + document.body.removeClass("minimal-atom-dark", "minimal-ayu-dark", "minimal-catppuccin-dark", "minimal-default-dark", "minimal-dracula-dark", "minimal-everforest-dark", "minimal-gruvbox-dark", "minimal-macos-dark", "minimal-nord-dark", "minimal-notion-dark", "minimal-rose-pine-dark", "minimal-solarized-dark", "minimal-things-dark"); document.body.addClass(this.settings.darkScheme); } updateLightScheme() { - document.body.removeClass("minimal-atom-light", "minimal-ayu-light", "minimal-catppuccin-light", "minimal-default-light", "minimal-everforest-light", "minimal-gruvbox-light", "minimal-macos-light", "minimal-nord-light", "minimal-notion-light", "minimal-solarized-light", "minimal-things-light"); + document.body.removeClass("minimal-atom-light", "minimal-ayu-light", "minimal-catppuccin-light", "minimal-default-light", "minimal-everforest-light", "minimal-gruvbox-light", "minimal-macos-light", "minimal-nord-light", "minimal-notion-light", "minimal-rose-pine-light", "minimal-solarized-light", "minimal-things-light"); document.body.addClass(this.settings.lightScheme); } updateTheme() { @@ -745,7 +765,7 @@ var MinimalSettingTab = class extends import_obsidian.PluginSettingTab { href: "obsidian://show-plugin?id=obsidian-style-settings" })); colorDesc.appendText("."); - new import_obsidian.Setting(containerEl).setName("Light mode color scheme").setDesc("Preset color options for light mode").addDropdown((dropdown) => dropdown.addOption("minimal-default-light", "Default").addOption("minimal-atom-light", "Atom").addOption("minimal-ayu-light", "Ayu").addOption("minimal-catppuccin-light", "Catppuccin").addOption("minimal-everforest-light", "Everforest").addOption("minimal-gruvbox-light", "Gruvbox").addOption("minimal-macos-light", "macOS").addOption("minimal-nord-light", "Nord").addOption("minimal-notion-light", "Notion").addOption("minimal-solarized-light", "Solarized").addOption("minimal-things-light", "Things").setValue(this.plugin.settings.lightScheme).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Light mode color scheme").setDesc("Preset color options for light mode").addDropdown((dropdown) => dropdown.addOption("minimal-default-light", "Default").addOption("minimal-atom-light", "Atom").addOption("minimal-ayu-light", "Ayu").addOption("minimal-catppuccin-light", "Catppuccin").addOption("minimal-everforest-light", "Everforest").addOption("minimal-gruvbox-light", "Gruvbox").addOption("minimal-macos-light", "macOS").addOption("minimal-nord-light", "Nord").addOption("minimal-notion-light", "Notion").addOption("minimal-rose-pine-light", "Ros\xE9 Pine").addOption("minimal-solarized-light", "Solarized").addOption("minimal-things-light", "Things").setValue(this.plugin.settings.lightScheme).onChange((value) => { this.plugin.settings.lightScheme = value; this.plugin.saveData(this.plugin.settings); this.plugin.updateLightScheme(); @@ -755,7 +775,7 @@ var MinimalSettingTab = class extends import_obsidian.PluginSettingTab { this.plugin.saveData(this.plugin.settings); this.plugin.updateLightStyle(); })); - new import_obsidian.Setting(containerEl).setName("Dark mode color scheme").setDesc("Preset colors options for dark mode").addDropdown((dropdown) => dropdown.addOption("minimal-default-dark", "Default").addOption("minimal-atom-dark", "Atom").addOption("minimal-ayu-dark", "Ayu").addOption("minimal-catppuccin-dark", "Catppuccin").addOption("minimal-dracula-dark", "Dracula").addOption("minimal-everforest-dark", "Everforest").addOption("minimal-gruvbox-dark", "Gruvbox").addOption("minimal-macos-dark", "macOS").addOption("minimal-nord-dark", "Nord").addOption("minimal-notion-dark", "Notion").addOption("minimal-solarized-dark", "Solarized").addOption("minimal-things-dark", "Things").setValue(this.plugin.settings.darkScheme).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Dark mode color scheme").setDesc("Preset colors options for dark mode").addDropdown((dropdown) => dropdown.addOption("minimal-default-dark", "Default").addOption("minimal-atom-dark", "Atom").addOption("minimal-ayu-dark", "Ayu").addOption("minimal-catppuccin-dark", "Catppuccin").addOption("minimal-dracula-dark", "Dracula").addOption("minimal-everforest-dark", "Everforest").addOption("minimal-gruvbox-dark", "Gruvbox").addOption("minimal-macos-dark", "macOS").addOption("minimal-nord-dark", "Nord").addOption("minimal-notion-dark", "Notion").addOption("minimal-rose-pine-dark", "Ros\xE9 Pine").addOption("minimal-solarized-dark", "Solarized").addOption("minimal-things-dark", "Things").setValue(this.plugin.settings.darkScheme).onChange((value) => { this.plugin.settings.darkScheme = value; this.plugin.saveData(this.plugin.settings); this.plugin.updateDarkScheme(); @@ -967,4 +987,4 @@ var buyMeACoffee = ` `; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBXb3Jrc3BhY2UsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pbmltYWxUaGVtZSBleHRlbmRzIFBsdWdpbiB7XHJcblxyXG4gIHNldHRpbmdzOiBNaW5pbWFsU2V0dGluZ3M7XHJcblxyXG4gIGFzeW5jIG9ubG9hZCgpIHtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG5cclxuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgTWluaW1hbFNldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcclxuXHJcbiAgICB0aGlzLmFkZFN0eWxlKCk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIHN5c3RlbSBjaGFuZ2VzIHRvIGNvbG9yIHRoZW1lIFxyXG5cclxuICAgIGxldCBtZWRpYSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk7XHJcblxyXG4gICAgbGV0IHVwZGF0ZVN5c3RlbVRoZW1lID0gKCkgPT4ge1xyXG4gICAgICBpZiAobWVkaWEubWF0Y2hlcyAmJiB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0RhcmsgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdMaWdodCBtb2RlIGFjdGl2ZScpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSk7XHJcblxyXG4gICAgLy8gUmVtb3ZlIHN5c3RlbSB0aGVtZSBsaXN0ZW5lciB3aGVuIHdlIHVubG9hZFxyXG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiBtZWRpYS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSkpO1xyXG5cclxuICAgIHVwZGF0ZVN5c3RlbVRoZW1lKCk7XHJcblxyXG4gICAgLy8gQ2hlY2sgc3RhdGUgb2YgT2JzaWRpYW4gU2V0dGluZ3NcclxuICAgIGxldCBzZXR0aW5nc1VwZGF0ZSA9ICgpID0+IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnYmFzZUZvbnRTaXplJyk7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IGZvbnRTaXplO1xyXG5cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBpZiAodGhpcy5hcHAudmF1bHQuZ2V0Q29uZmlnKCdmb2xkSGVhZGluZycpKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdGb2xkaW5nIGlzIG9uJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnRm9sZGluZyBpcyBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9sZGluZycsIHRoaXMuc2V0dGluZ3MuZm9sZGluZyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnc2hvd0xpbmVOdW1iZXInKSkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGluZU51bWJlcnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0xpbmUgbnVtYmVycyBhcmUgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpbmVOdW1iZXJzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnTGluZSBudW1iZXJzIGFyZSBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtbGluZS1udW1zJywgdGhpcy5zZXR0aW5ncy5saW5lTnVtYmVycyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygncmVhZGFibGVMaW5lTGVuZ3RoJykpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnUmVhZGFibGUgbGluZSBsZW5ndGggaXMgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1JlYWRhYmxlIGxpbmUgbGVuZ3RoIGlzIG9mZicpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtcmVhZGFibGUnLCB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1yZWFkYWJsZS1vZmYnLCAhdGhpcy5zZXR0aW5ncy5yZWFkYWJsZUxpbmVMZW5ndGgpO1xyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gICAgbGV0IHNpZGViYXJVcGRhdGUgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNpZGViYXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZC1sZWZ0LXNwbGl0JylbMF07XHJcbiAgICAgIGNvbnN0IHJpYmJvbkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2lkZS1kb2NrLXJpYmJvbicpWzBdO1xyXG4gICAgICBpZiAoc2lkZWJhckVsICYmIHJpYmJvbkVsICYmIHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygndGhlbWUnKSA9PSAnbW9vbnN0b25lJyAmJiB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPT0gJ21pbmltYWwtbGlnaHQtY29udHJhc3QnKSB7XHJcbiAgICAgICAgc2lkZWJhckVsLmFkZENsYXNzKCd0aGVtZS1kYXJrJyk7XHJcbiAgICAgICAgcmliYm9uRWwuYWRkQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfSBlbHNlIGlmIChzaWRlYmFyRWwgJiYgcmliYm9uRWwpIHtcclxuICAgICAgICBzaWRlYmFyRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTsgXHJcbiAgICAgICAgcmliYm9uRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAudmF1bHQub24oJ2NvbmZpZy1jaGFuZ2VkJywgc2V0dGluZ3NVcGRhdGUpKTtcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAud29ya3NwYWNlLm9uKCdjc3MtY2hhbmdlJywgc2lkZWJhclVwZGF0ZSkpO1xyXG5cclxuICAgIHNldHRpbmdzVXBkYXRlKCk7XHJcbiAgICBcclxuICAgIGFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeSgoKSA9PiB7XHJcbiAgICAgIHNpZGViYXJVcGRhdGUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGxpZ2h0U3R5bGVzID0gWydtaW5pbWFsLWxpZ2h0JywgJ21pbmltYWwtbGlnaHQtdG9uYWwnLCAnbWluaW1hbC1saWdodC1jb250cmFzdCcsICdtaW5pbWFsLWxpZ2h0LXdoaXRlJ107XHJcbiAgICBjb25zdCBkYXJrU3R5bGVzID0gWydtaW5pbWFsLWRhcmsnLCAnbWluaW1hbC1kYXJrLXRvbmFsJywgJ21pbmltYWwtZGFyay1ibGFjayddO1xyXG4gICAgY29uc3QgaW1nR3JpZFN0eWxlcyA9IFsnaW1nLWdyaWQnLCdpbWctZ3JpZC1yYXRpbycsJ2ltZy1ub2dyaWQnXTtcclxuICAgIGNvbnN0IHRhYmxlV2lkdGhTdHlsZXMgPSBbJ3RhYmxlLTEwMCcsJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLCd0YWJsZS13aWRlJywndGFibGUtbWF4J107XHJcbiAgICBjb25zdCBpZnJhbWVXaWR0aFN0eWxlcyA9IFsnaWZyYW1lLTEwMCcsJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJywnaWZyYW1lLXdpZGUnLCdpZnJhbWUtbWF4J107XHJcbiAgICBjb25zdCBpbWdXaWR0aFN0eWxlcyA9IFsnaW1nLTEwMCcsJ2ltZy1kZWZhdWx0LXdpZHRoJywnaW1nLXdpZGUnLCdpbWctbWF4J107XHJcbiAgICBjb25zdCBtYXBXaWR0aFN0eWxlcyA9IFsnbWFwLTEwMCcsJ21hcC1kZWZhdWx0LXdpZHRoJywnbWFwLXdpZGUnLCdtYXAtbWF4J107XHJcbiAgICBjb25zdCBjaGFydFdpZHRoU3R5bGVzID0gWydjaGFydC0xMDAnLCdjaGFydC1kZWZhdWx0LXdpZHRoJywnY2hhcnQtd2lkZScsJ2NoYXJ0LW1heCddO1xyXG4gICAgY29uc3QgdGhlbWUgPSBbJ21vb25zdG9uZScsICdvYnNpZGlhbiddO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnaW5jcmVhc2UtYm9keS1mb250LXNpemUnLFxyXG4gICAgICBuYW1lOiAnSW5jcmVhc2UgYm9keSBmb250IHNpemUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCArIDAuNTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9udFNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICdkZWNyZWFzZS1ib2R5LWZvbnQtc2l6ZScsXHJcbiAgICAgIG5hbWU6ICdEZWNyZWFzZSBib2R5IGZvbnQgc2l6ZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsID0gdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsIC0gMC41O1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5zZXRGb250U2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgXHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWN5Y2xlJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gZGFyayBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSBkYXJrU3R5bGVzWyhkYXJrU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUpICsgMSkgJSBkYXJrU3R5bGVzLmxlbmd0aF07XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgIFxyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtY3ljbGUnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBsaWdodCBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gbGlnaHRTdHlsZXNbKGxpZ2h0U3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5saWdodFN0eWxlKSArIDEpICUgbGlnaHRTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1oaWRkZW4tYm9yZGVycycsXHJcbiAgICAgIG5hbWU6ICdUb2dnbGUgc2lkZWJhciBib3JkZXJzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUgPSAhdGhpcy5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLWNvbG9yZnVsLWhlYWRpbmdzJyxcclxuICAgICAgbmFtZTogJ1RvZ2dsZSBjb2xvcmZ1bCBoZWFkaW5ncycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWZvY3VzLW1vZGUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGZvY3VzIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlID0gIXRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY29sb3JmdWwtZnJhbWUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGNvbG9yZnVsIHdpbmRvdyBmcmFtZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxGcmFtZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtdGFibGUtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiB0YWJsZSB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGggPSB0YWJsZVdpZHRoU3R5bGVzWyh0YWJsZVdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy50YWJsZVdpZHRoKSArIDEpICUgdGFibGVXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1pbWFnZS13aWR0aCcsXHJcbiAgICAgIG5hbWU6ICdDeWNsZSBiZXR3ZWVuIGltYWdlIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaW1nV2lkdGggPSBpbWdXaWR0aFN0eWxlc1soaW1nV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmltZ1dpZHRoKSArIDEpICUgaW1nV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtaWZyYW1lLXdpZHRoJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gaWZyYW1lIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaWZyYW1lV2lkdGggPSBpZnJhbWVXaWR0aFN0eWxlc1soaWZyYW1lV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmlmcmFtZVdpZHRoKSArIDEpICUgaWZyYW1lV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtY2hhcnQtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBjaGFydCB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGggPSBjaGFydFdpZHRoU3R5bGVzWyhjaGFydFdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5jaGFydFdpZHRoKSArIDEpICUgY2hhcnRXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1tYXAtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBtYXAgd2lkdGggb3B0aW9ucycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5tYXBXaWR0aCA9IG1hcFdpZHRoU3R5bGVzWyhtYXBXaWR0aFN0eWxlcy5pbmRleE9mKHRoaXMuc2V0dGluZ3MubWFwV2lkdGgpICsgMSkgJSBtYXBXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtaW1nLWdyaWQnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGltYWdlIGdyaWRzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmltZ0dyaWQgPSAhdGhpcy5zZXR0aW5ncy5pbWdHcmlkO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtc3dpdGNoJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBiZXR3ZWVuIGxpZ2h0IGFuZCBkYXJrIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGhlbWUgPSB0aGVtZVsodGhlbWUuaW5kZXhPZih0aGlzLnNldHRpbmdzLnRoZW1lKSArIDEpICUgdGhlbWUubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVGhlbWUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1kZWZhdWx0JyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gJ21pbmltYWwtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtd2hpdGUnLFxyXG4gICAgICBuYW1lOiAnVXNlIGxpZ2h0IG1vZGUgKGFsbCB3aGl0ZSknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LXdoaXRlJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWxpZ2h0LXRvbmFsJyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSAnbWluaW1hbC1saWdodC10b25hbCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1jb250cmFzdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgbGlnaHQgbW9kZSAoaGlnaCBjb250cmFzdCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRhcmstZGVmYXVsdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSAnbWluaW1hbC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGFyay10b25hbCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstdG9uYWwnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWJsYWNrJyxcclxuICAgICAgbmFtZTogJ1VzZSBkYXJrIG1vZGUgKHRydWUgYmxhY2spJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstYmxhY2snO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1hdG9tLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gQXRvbSAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtYXRvbS1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtYXl1LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gQXl1IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1heXUtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBDYXRwcHVjY2luIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1jYXRwcHVjY2luLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kZWZhdWx0LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gZGVmYXVsdCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtZGVmYXVsdC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZ3J1dmJveC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIEdydXZib3ggKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWdydXZib3gtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWV2ZXJmb3Jlc3QtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBFdmVyZm9yZXN0IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ldmVyZm9yZXN0LWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1tYWNvcy1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIG1hY09TIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1tYWNvcy1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbm90aW9uLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gTm90aW9uIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ub3Rpb24tbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW5vcmQtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBOb3JkIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ub3JkLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1zb2xhcml6ZWQtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBTb2xhcml6ZWQgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLXNvbGFyaXplZC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtdGhpbmdzLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gVGhpbmdzIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC10aGluZ3MtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWF0b20tZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggY29sb3Igc2NoZW1lIHRvIEF0b20gKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1hdG9tLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1heXUtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggY29sb3Igc2NoZW1lIHRvIEF5dSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWF5dS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBDYXRwcHVjY2luIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZHJhY3VsYS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBjb2xvciBzY2hlbWUgdG8gRHJhY3VsYSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWRyYWN1bGEtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRlZmF1bHQtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gZGVmYXVsdCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWRlZmF1bHQtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWdydXZib3gtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gR3J1dmJveCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWdydXZib3gtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWV2ZXJmb3Jlc3QtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gRXZlcmZvcmVzdCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWV2ZXJmb3Jlc3QtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW1hY29zLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBtYWNPUyAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLW1hY29zLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3JkLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIE5vcmQgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1ub3JkLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3Rpb24tZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gTm90aW9uIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtbm90aW9uLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1zb2xhcml6ZWQtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gU29sYXJpemVkIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtc29sYXJpemVkLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC10aGluZ3MtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gVGhpbmdzIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtdGhpbmdzLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kZXYtYmxvY2std2lkdGgnLFxyXG4gICAgICBuYW1lOiAnRGV2IFx1MjAxNCBTaG93IGJsb2NrIHdpZHRocycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kZXZCbG9ja1dpZHRoID0gIXRoaXMuc2V0dGluZ3MuZGV2QmxvY2tXaWR0aDtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2goKVxyXG4gIH1cclxuXHJcbiAgb251bmxvYWQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnVW5sb2FkaW5nIE1pbmltYWwgVGhlbWUgU2V0dGluZ3MgcGx1Z2luJyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBsb2FkU2V0dGluZ3MoKSB7XHJcbiAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbihERUZBVUxUX1NFVFRJTkdTLCBhd2FpdCB0aGlzLmxvYWREYXRhKCkpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZVNldHRpbmdzKCkge1xyXG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICB9XHJcblxyXG4gIC8vIHJlZnJlc2ggZnVuY3Rpb24gZm9yIHdoZW4gd2UgY2hhbmdlIHNldHRpbmdzXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIC8vIHJlLWxvYWQgdGhlIHN0eWxlXHJcbiAgICB0aGlzLnVwZGF0ZVN0eWxlKClcclxuICB9XHJcblxyXG4gIC8vIGFkZCB0aGUgc3R5bGluZyBlbGVtZW50cyB3ZSBuZWVkXHJcbiAgYWRkU3R5bGUoKSB7XHJcbiAgICAvLyBhZGQgYSBjc3MgYmxvY2sgZm9yIG91ciBzZXR0aW5ncy1kZXBlbmRlbnQgc3R5bGVzXHJcbiAgICBjb25zdCBjc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgY3NzLmlkID0gJ21pbmltYWwtdGhlbWUnO1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKGNzcyk7XHJcblxyXG4gICAgLy8gYWRkIHRoZSBtYWluIGNsYXNzXHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ21pbmltYWwtdGhlbWUnKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgdGhlIHN0eWxlIHdpdGggdGhlIHNldHRpbmdzLWRlcGVuZGVudCBzdHlsZXNcclxuICAgIHRoaXMudXBkYXRlU3R5bGUoKTtcclxuICB9XHJcblxyXG4gIHNldEZvbnRTaXplKCkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCdiYXNlRm9udFNpemUnLCB0aGlzLnNldHRpbmdzLnRleHROb3JtYWwpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudXBkYXRlRm9udFNpemUoKTtcclxuICB9XHJcblxyXG4gIC8vIHVwZGF0ZSB0aGUgc3R5bGVzIChhdCB0aGUgc3RhcnQsIG9yIGFzIHRoZSByZXN1bHQgb2YgYSBzZXR0aW5ncyBjaGFuZ2UpXHJcbiAgdXBkYXRlU3R5bGUoKSB7XHJcbiAgICB0aGlzLnJlbW92ZVN0eWxlKCk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lKTtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2JvcmRlcnMtbm9uZScsICF0aGlzLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdjb2xvcmZ1bC1oZWFkaW5ncycsIHRoaXMuc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2NvbG9yZnVsLWZyYW1lJywgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnY29sb3JmdWwtYWN0aXZlJywgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEFjdGl2ZVN0YXRlcyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9jdXMtbW9kZScsIHRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbGlua3MtaW50LW9uJywgdGhpcy5zZXR0aW5ncy51bmRlcmxpbmVJbnRlcm5hbCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xpbmtzLWV4dC1vbicsIHRoaXMuc2V0dGluZ3MudW5kZXJsaW5lRXh0ZXJuYWwpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdzeXN0ZW0tc2hhZGUnLCB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnZnVsbC13aWR0aC1tZWRpYScsIHRoaXMuc2V0dGluZ3MuZnVsbFdpZHRoTWVkaWEpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdpbWctZ3JpZCcsIHRoaXMuc2V0dGluZ3MuaW1nR3JpZCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZGV2LWJsb2NrLXdpZHRoJywgdGhpcy5zZXR0aW5ncy5kZXZCbG9ja1dpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1zdGF0dXMtb2ZmJywgIXRoaXMuc2V0dGluZ3MubWluaW1hbFN0YXR1cyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Z1bGwtZmlsZS1uYW1lcycsICF0aGlzLnNldHRpbmdzLnRyaW1OYW1lcyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xhYmVsZWQtbmF2JywgdGhpcy5zZXR0aW5ncy5sYWJlbGVkTmF2KTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1mb2xkaW5nJywgdGhpcy5zZXR0aW5ncy5mb2xkaW5nKTtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCd0YWJsZS13aWRlJywndGFibGUtbWF4JywndGFibGUtMTAwJywndGFibGUtZGVmYXVsdC13aWR0aCcsXHJcbiAgICAgICdpZnJhbWUtd2lkZScsJ2lmcmFtZS1tYXgnLCdpZnJhbWUtMTAwJywnaWZyYW1lLWRlZmF1bHQtd2lkdGgnLFxyXG4gICAgICAnaW1nLXdpZGUnLCdpbWctbWF4JywnaW1nLTEwMCcsJ2ltZy1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ2NoYXJ0LXdpZGUnLCdjaGFydC1tYXgnLCdjaGFydC0xMDAnLCdjaGFydC1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ21hcC13aWRlJywnbWFwLW1heCcsJ21hcC0xMDAnLCdtYXAtZGVmYXVsdC13aWR0aCcpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmltZ1dpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5pZnJhbWVXaWR0aCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MubWFwV2lkdGgpO1xyXG5cclxuICAgIC8vIGdldCB0aGUgY3VzdG9tIGNzcyBlbGVtZW50XHJcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaW5pbWFsLXRoZW1lJyk7XHJcbiAgICBpZiAoIWVsKSB0aHJvdyBcIm1pbmltYWwtdGhlbWUgZWxlbWVudCBub3QgZm91bmQhXCI7XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gc2V0IHRoZSBzZXR0aW5ncy1kZXBlbmRlbnQgY3NzXHJcbiAgICAgIGVsLmlubmVyVGV4dCA9IFxyXG4gICAgICAgICdib2R5Lm1pbmltYWwtdGhlbWV7J1xyXG4gICAgICAgICsgJy0tZm9udC11aS1zbWFsbDonICsgdGhpcy5zZXR0aW5ncy50ZXh0U21hbGwgKyAncHg7J1xyXG4gICAgICAgICsgJy0tbGluZS1oZWlnaHQ6JyArIHRoaXMuc2V0dGluZ3MubGluZUhlaWdodCArICc7J1xyXG4gICAgICAgICsgJy0tbGluZS13aWR0aDonICsgdGhpcy5zZXR0aW5ncy5saW5lV2lkdGggKyAncmVtOydcclxuICAgICAgICArICctLWxpbmUtd2lkdGgtd2lkZTonICsgdGhpcy5zZXR0aW5ncy5saW5lV2lkdGhXaWRlICsgJ3JlbTsnXHJcbiAgICAgICAgKyAnLS1tYXgtd2lkdGg6JyArIHRoaXMuc2V0dGluZ3MubWF4V2lkdGggKyAnJTsnXHJcbiAgICAgICAgKyAnLS1mb250LWVkaXRvci1vdmVycmlkZTonICsgdGhpcy5zZXR0aW5ncy5lZGl0b3JGb250ICsgJzsnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHJlZnJlc2hTeXN0ZW1UaGVtZSgpIHtcclxuICAgIGNvbnN0IGlzRGFya01vZGUgPSB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXNcclxuXHJcbiAgICBpZiAoaXNEYXJrTW9kZSAmJiB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0RhcmsgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpXHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2V0dGluZ3MudXNlU3lzdGVtVGhlbWUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnTGlnaHQgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKVxyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXJrU3R5bGUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKFxyXG4gICAgICAndGhlbWUtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZGFyay10b25hbCcsXHJcbiAgICAgICdtaW5pbWFsLWRhcmstYmxhY2snXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSk7XHJcblxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAuc2V0VGhlbWUoJ29ic2lkaWFuJyk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC52YXVsdC5zZXRDb25maWcoJ3RoZW1lJywgJ29ic2lkaWFuJyk7XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGlnaHRTdHlsZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICd0aGVtZS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1saWdodC10b25hbCcsXHJcbiAgICAgICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQtd2hpdGUnXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUpO1xyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnNldFRoZW1lKCdtb29uc3RvbmUnKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnZhdWx0LnNldENvbmZpZygndGhlbWUnLCAnbW9vbnN0b25lJyk7XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGFya1NjaGVtZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICdtaW5pbWFsLWF0b20tZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWF5dS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZGVmYXVsdC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZHJhY3VsYS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZXZlcmZvcmVzdC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZ3J1dmJveC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbWFjb3MtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLW5vcmQtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLW5vdGlvbi1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtc29sYXJpemVkLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC10aGluZ3MtZGFyaydcclxuICAgICk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMaWdodFNjaGVtZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICdtaW5pbWFsLWF0b20tbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1heXUtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1jYXRwcHVjY2luLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtZGVmYXVsdC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWV2ZXJmb3Jlc3QtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ncnV2Ym94LWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtbWFjb3MtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ub3JkLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtbm90aW9uLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtc29sYXJpemVkLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtdGhpbmdzLWxpZ2h0J1xyXG4gICAgKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUaGVtZSgpIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnNldFRoZW1lKHRoaXMuc2V0dGluZ3MudGhlbWUpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCd0aGVtZScsIHRoaXMuc2V0dGluZ3MudGhlbWUpO1xyXG4gICAgdGhpcy5hcHAud29ya3NwYWNlLnRyaWdnZXIoJ2Nzcy1jaGFuZ2UnKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVN0eWxlKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcygnbWluaW1hbC1saWdodCcsJ21pbmltYWwtbGlnaHQtdG9uYWwnLCdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JywnbWluaW1hbC1saWdodC13aGl0ZScsJ21pbmltYWwtZGFyaycsJ21pbmltYWwtZGFyay10b25hbCcsJ21pbmltYWwtZGFyay1ibGFjaycpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUsdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmludGVyZmFjZSBNaW5pbWFsU2V0dGluZ3Mge1xyXG4gIHRoZW1lOiBzdHJpbmc7XHJcbiAgbGlnaHRTdHlsZTogc3RyaW5nO1xyXG4gIGRhcmtTdHlsZTogc3RyaW5nO1xyXG4gIGxpZ2h0U2NoZW1lOiBzdHJpbmc7XHJcbiAgZGFya1NjaGVtZTogc3RyaW5nO1xyXG4gIGVkaXRvckZvbnQ6IHN0cmluZztcclxuICBjb2xvcmZ1bEhlYWRpbmdzOiBib29sZWFuO1xyXG4gIGNvbG9yZnVsRnJhbWU6IGJvb2xlYW47XHJcbiAgY29sb3JmdWxBY3RpdmVTdGF0ZXM6IGJvb2xlYW4sXHJcbiAgdHJpbU5hbWVzOiBib29sZWFuO1xyXG4gIGxhYmVsZWROYXY6IGJvb2xlYW47XHJcbiAgYm9yZGVyc1RvZ2dsZTogYm9vbGVhbjtcclxuICBmb2N1c01vZGU6IGJvb2xlYW47XHJcbiAgbGluZUhlaWdodDogbnVtYmVyO1xyXG4gIGxpbmVXaWR0aDogbnVtYmVyO1xyXG4gIGxpbmVXaWR0aFdpZGU6IG51bWJlcjtcclxuICBtYXhXaWR0aDogbnVtYmVyO1xyXG4gIGltZ0dyaWQ6IGJvb2xlYW47XHJcbiAgZGV2QmxvY2tXaWR0aDogYm9vbGVhbjtcclxuICB0YWJsZVdpZHRoOiBzdHJpbmc7XHJcbiAgaWZyYW1lV2lkdGg6IHN0cmluZztcclxuICBpbWdXaWR0aDogc3RyaW5nO1xyXG4gIGNoYXJ0V2lkdGg6IHN0cmluZztcclxuICBtYXBXaWR0aDogc3RyaW5nO1xyXG4gIGZ1bGxXaWR0aE1lZGlhOiBib29sZWFuLFxyXG4gIG1pbmltYWxTdGF0dXM6IGJvb2xlYW4sXHJcbiAgdGV4dE5vcm1hbDogbnVtYmVyO1xyXG4gIHRleHRTbWFsbDogbnVtYmVyO1xyXG4gIHVuZGVybGluZUludGVybmFsOiBib29sZWFuO1xyXG4gIHVuZGVybGluZUV4dGVybmFsOiBib29sZWFuO1xyXG4gIHVzZVN5c3RlbVRoZW1lOiBib29sZWFuO1xyXG4gIGZvbGRpbmc6IGJvb2xlYW47XHJcbiAgbGluZU51bWJlcnM6IGJvb2xlYW47XHJcbiAgcmVhZGFibGVMaW5lTGVuZ3RoOiBib29sZWFuO1xyXG59XHJcblxyXG5jb25zdCBERUZBVUxUX1NFVFRJTkdTOiBNaW5pbWFsU2V0dGluZ3MgPSB7XHJcbiAgdGhlbWU6ICdtb29uc3RvbmUnLFxyXG4gIGxpZ2h0U3R5bGU6ICdtaW5pbWFsLWxpZ2h0JyxcclxuICBkYXJrU3R5bGU6ICdtaW5pbWFsLWRhcmsnLFxyXG4gIGxpZ2h0U2NoZW1lOiAnbWluaW1hbC1kZWZhdWx0LWxpZ2h0JyxcclxuICBkYXJrU2NoZW1lOiAnbWluaW1hbC1kZWZhdWx0LWRhcmsnLFxyXG4gIGVkaXRvckZvbnQ6ICcnLFxyXG4gIGxpbmVIZWlnaHQ6IDEuNSxcclxuICBsaW5lV2lkdGg6IDQwLFxyXG4gIGxpbmVXaWR0aFdpZGU6IDUwLFxyXG4gIG1heFdpZHRoOiA4OCxcclxuICB0ZXh0Tm9ybWFsOiAxNixcclxuICB0ZXh0U21hbGw6IDEzLFxyXG4gIGltZ0dyaWQ6IGZhbHNlLFxyXG4gIGltZ1dpZHRoOiAnaW1nLWRlZmF1bHQtd2lkdGgnLFxyXG4gIHRhYmxlV2lkdGg6ICd0YWJsZS1kZWZhdWx0LXdpZHRoJyxcclxuICBpZnJhbWVXaWR0aDogJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJyxcclxuICBtYXBXaWR0aDogJ21hcC1kZWZhdWx0LXdpZHRoJyxcclxuICBjaGFydFdpZHRoOiAnY2hhcnQtZGVmYXVsdC13aWR0aCcsXHJcbiAgY29sb3JmdWxIZWFkaW5nczogZmFsc2UsXHJcbiAgY29sb3JmdWxGcmFtZTogZmFsc2UsXHJcbiAgY29sb3JmdWxBY3RpdmVTdGF0ZXM6IGZhbHNlLFxyXG4gIHRyaW1OYW1lczogdHJ1ZSxcclxuICBsYWJlbGVkTmF2OiBmYWxzZSxcclxuICBmdWxsV2lkdGhNZWRpYTogdHJ1ZSxcclxuICBib3JkZXJzVG9nZ2xlOiB0cnVlLFxyXG4gIG1pbmltYWxTdGF0dXM6IHRydWUsXHJcbiAgZm9jdXNNb2RlOiBmYWxzZSxcclxuICB1bmRlcmxpbmVJbnRlcm5hbDogdHJ1ZSxcclxuICB1bmRlcmxpbmVFeHRlcm5hbDogdHJ1ZSxcclxuICB1c2VTeXN0ZW1UaGVtZTogZmFsc2UsXHJcbiAgZm9sZGluZzogdHJ1ZSxcclxuICBsaW5lTnVtYmVyczogZmFsc2UsXHJcbiAgcmVhZGFibGVMaW5lTGVuZ3RoOiBmYWxzZSxcclxuICBkZXZCbG9ja1dpZHRoOiBmYWxzZSxcclxufVxyXG5cclxuY2xhc3MgTWluaW1hbFNldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcclxuXHJcblxyXG4gIHBsdWdpbjogTWluaW1hbFRoZW1lO1xyXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IE1pbmltYWxUaGVtZSkge1xyXG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5KCk6IHZvaWQge1xyXG4gICAgbGV0IHtjb250YWluZXJFbH0gPSB0aGlzO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmVtcHR5KCk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ01pbmltYWwgVGhlbWUgU2V0dGluZ3MnfSk7XHJcblxyXG4gICAgY29uc3QgbWFpbkRlc2MgPSBjb250YWluZXJFbC5jcmVhdGVFbCgncCcpO1xyXG5cclxuICAgICAgbWFpbkRlc2MuYXBwZW5kVGV4dCgnTmVlZCBoZWxwPyBFeHBsb3JlIHRoZSAnKTtcclxuICAgICAgbWFpbkRlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIk1pbmltYWwgZG9jdW1lbnRhdGlvblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJodHRwczovL21pbmltYWwuZ3VpZGVcIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRUZXh0KCcgb3IgdmlzaXQgdGhlICcpO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnc3Ryb25nJywge1xyXG4gICAgICAgICAgdGV4dDogXCIjbWluaW1hbFwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIG1haW5EZXNjLmFwcGVuZFRleHQoJyBjaGFubmVsIGluIHRoZSBvZmZpY2lhbCBPYnNpZGlhbiBEaXNjb3JkLiBZb3UgY2FuIHN1cHBvcnQgY29udGludWVkIGRldmVsb3BtZW50IGJ5ICcpO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiYnV5aW5nIG1lIGEgY29mZmVlXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20va2VwYW5vXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgbWFpbkRlc2MuYXBwZW5kVGV4dCgnIFx1MjYxNScpO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdicicpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdDb2xvciBzY2hlbWUnfSk7XHJcblxyXG4gICAgY29uc3QgY29sb3JEZXNjID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnKTtcclxuXHJcbiAgICAgIGNvbG9yRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnc3BhbicsIHtcclxuICAgICAgICAgIHRleHQ6ICdUbyBjcmVhdGUgYSBjb21wbGV0ZWx5IGN1c3RvbSBjb2xvciBzY2hlbWUgdXNlICdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgY29sb3JEZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJTdHlsZSBTZXR0aW5ncyBwbHVnaW5cIixcclxuICAgICAgICAgIGhyZWY6IFwib2JzaWRpYW46Ly9zaG93LXBsdWdpbj9pZD1vYnNpZGlhbi1zdHlsZS1zZXR0aW5nc1wiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbG9yRGVzYy5hcHBlbmRUZXh0KCcuJyk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnTGlnaHQgbW9kZSBjb2xvciBzY2hlbWUnKVxyXG4gICAgICAgIC5zZXREZXNjKCdQcmVzZXQgY29sb3Igb3B0aW9ucyBmb3IgbGlnaHQgbW9kZScpXHJcbiAgICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRlZmF1bHQtbGlnaHQnLCdEZWZhdWx0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtYXRvbS1saWdodCcsJ0F0b20nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1heXUtbGlnaHQnLCdBeXUnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1jYXRwcHVjY2luLWxpZ2h0JywnQ2F0cHB1Y2NpbicpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWV2ZXJmb3Jlc3QtbGlnaHQnLCdFdmVyZm9yZXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZ3J1dmJveC1saWdodCcsJ0dydXZib3gnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1tYWNvcy1saWdodCcsJ21hY09TJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbm9yZC1saWdodCcsJ05vcmQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3Rpb24tbGlnaHQnLCdOb3Rpb24nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1zb2xhcml6ZWQtbGlnaHQnLCdTb2xhcml6ZWQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC10aGluZ3MtbGlnaHQnLCdUaGluZ3MnKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U2NoZW1lKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdMaWdodCBtb2RlIGJhY2tncm91bmQgY29udHJhc3QnKVxyXG4gICAgICAgIC5zZXREZXNjKCdMZXZlbCBvZiBjb250cmFzdCBiZXR3ZWVuIHNpZGViYXIgYW5kIG1haW4gY29udGVudCcpXHJcbiAgICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWxpZ2h0JywnRGVmYXVsdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWxpZ2h0LXdoaXRlJywnQWxsIHdoaXRlJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbGlnaHQtdG9uYWwnLCdMb3cgY29udHJhc3QnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodC1jb250cmFzdCcsJ0hpZ2ggY29udHJhc3QnKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U3R5bGUpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGlnaHRTdHlsZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdEYXJrIG1vZGUgY29sb3Igc2NoZW1lJylcclxuICAgICAgICAuc2V0RGVzYygnUHJlc2V0IGNvbG9ycyBvcHRpb25zIGZvciBkYXJrIG1vZGUnKVxyXG4gICAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kZWZhdWx0LWRhcmsnLCdEZWZhdWx0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtYXRvbS1kYXJrJywnQXRvbScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWF5dS1kYXJrJywnQXl1JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJywnQ2F0cHB1Y2NpbicpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRyYWN1bGEtZGFyaycsJ0RyYWN1bGEnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ldmVyZm9yZXN0LWRhcmsnLCdFdmVyZm9yZXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZ3J1dmJveC1kYXJrJywnR3J1dmJveCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW1hY29zLWRhcmsnLCdtYWNPUycpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW5vcmQtZGFyaycsJ05vcmQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3Rpb24tZGFyaycsJ05vdGlvbicpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLXNvbGFyaXplZC1kYXJrJywnU29sYXJpemVkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtdGhpbmdzLWRhcmsnLCdUaGluZ3MnKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRhcmtTY2hlbWUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRhcmtTY2hlbWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnRGFyayBtb2RlIGJhY2tncm91bmQgY29udHJhc3QnKVxyXG4gICAgICAgIC5zZXREZXNjKCdMZXZlbCBvZiBjb250cmFzdCBiZXR3ZWVuIHNpZGViYXIgYW5kIG1haW4gY29udGVudCcpXHJcbiAgICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRhcmsnLCdEZWZhdWx0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGFyay10b25hbCcsJ0xvdyBjb250cmFzdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRhcmstYmxhY2snLCdUcnVlIGJsYWNrJylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kYXJrU3R5bGUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRhcmtTdHlsZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdicicpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ0ZlYXR1cmVzJ30pO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWF0Y2ggc3lzdGVtIHNldHRpbmcgZm9yIGxpZ2h0IG9yIGRhcmsgbW9kZScpXHJcbiAgICAgIC5zZXREZXNjKCdBdXRvbWF0aWNhbGx5IHN3aXRjaCBiYXNlZCBvbiB5b3VyIE9TIHNldHRpbmcnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlU3lzdGVtVGhlbWUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaFN5c3RlbVRoZW1lKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVGV4dCBsYWJlbHMgZm9yIHByaW1hcnkgbmF2aWdhdGlvbicpXHJcbiAgICAgIC5zZXREZXNjKCdOYXZpZ2F0aW9uIGluIGxlZnQgc2lkZWJhciB1c2VzIHRleHQgbGFiZWxzIChzZWUgZG9jdW1lbnRhdGlvbiBmb3IgbG9jYWxpemF0aW9uIHN1cHBvcnQpJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmxhYmVsZWROYXYpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxhYmVsZWROYXYgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdDb2xvcmZ1bCB3aW5kb3cgZnJhbWUnKVxyXG4gICAgICAuc2V0RGVzYygnVGhlIHRvcCBhcmVhIG9mIHRoZSBhcHAgdXNlcyB5b3VyIGFjY2VudCBjb2xvcicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NvbG9yZnVsIGFjdGl2ZSBzdGF0ZXMnKVxyXG4gICAgICAuc2V0RGVzYygnQWN0aXZlIGZpbGUgYW5kIG1lbnUgaXRlbXMgdXNlIHlvdXIgYWNjZW50IGNvbG9yJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsQWN0aXZlU3RhdGVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEFjdGl2ZVN0YXRlcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdDb2xvcmZ1bCBoZWFkaW5ncycpXHJcbiAgICAgIC5zZXREZXNjKCdIZWFkaW5ncyB1c2UgYSBkaWZmZXJlbnQgY29sb3IgZm9yIGVhY2ggc2l6ZScpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01pbmltYWwgc3RhdHVzIGJhcicpXHJcbiAgICAgIC5zZXREZXNjKCdVc2UgbmFycm93IHN0YXR1cyBiYXInKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubWluaW1hbFN0YXR1cylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubWluaW1hbFN0YXR1cyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1RyaW0gZmlsZSBuYW1lcyBpbiBzaWRlYmFycycpXHJcbiAgICAgIC5zZXREZXNjKCdVc2UgZWxsaXBzZXMgdG8gZml0IGZpbGUgbmFtZXMgb24gYSBzaW5nbGUgbGluZScpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50cmltTmFtZXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRyaW1OYW1lcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdXb3Jrc3BhY2UgYm9yZGVycycpXHJcbiAgICAgICAgLnNldERlc2MoJ0Rpc3BsYXkgZGl2aWRlciBsaW5lcyBiZXR3ZWVuIHdvcmtzcGFjZSBlbGVtZW50cycpXHJcbiAgICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdGb2N1cyBtb2RlJylcclxuICAgICAgLnNldERlc2MoJ0hpZGUgdGFiIGJhciBhbmQgc3RhdHVzIGJhciwgaG92ZXIgdG8gZGlzcGxheSAoY2FuIGJlIHRvZ2dsZWQgd2l0aCBob3RrZXkpJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmZvY3VzTW9kZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZm9jdXNNb2RlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1VuZGVybGluZSBpbnRlcm5hbCBsaW5rcycpXHJcbiAgICAgIC5zZXREZXNjKCdTaG93IHVuZGVybGluZXMgb24gaW50ZXJuYWwgbGlua3MnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lSW50ZXJuYWwpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnVuZGVybGluZUludGVybmFsID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1VuZGVybGluZSBleHRlcm5hbCBsaW5rcycpXHJcbiAgICAgIC5zZXREZXNjKCdTaG93IHVuZGVybGluZXMgb24gZXh0ZXJuYWwgbGlua3MnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lRXh0ZXJuYWwpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnVuZGVybGluZUV4dGVybmFsID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01heGltaXplIG1lZGlhJylcclxuICAgICAgLnNldERlc2MoJ0ltYWdlcyBhbmQgdmlkZW9zIGZpbGwgdGhlIHdpZHRoIG9mIHRoZSBsaW5lJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmZ1bGxXaWR0aE1lZGlhKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5mdWxsV2lkdGhNZWRpYSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnYnInKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdMYXlvdXQnfSk7XHJcblxyXG4gICAgY29uc3QgbGF5b3V0RGVzYyA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJyk7XHJcblxyXG4gICAgICBsYXlvdXREZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJ1RoZSBmb2xsb3dpbmcgb3B0aW9ucyByZXF1aXJlIHRoZSAnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGxheW91dERlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIkNvbnRleHR1YWwgVHlwb2dyYXBoeSBwbHVnaW5cIixcclxuICAgICAgICAgIGhyZWY6IFwib2JzaWRpYW46Ly9zaG93LXBsdWdpbj9pZD1vYnNpZGlhbi1jb250ZXh0dWFsLXR5cG9ncmFwaHlcIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBsYXlvdXREZXNjLmFwcGVuZFRleHQoJy4gVGhlc2Ugb3B0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIG9uIGEgcGVyLWZpbGUgYmFzaXMgdXNpbmcgWUFNTCwgJyk7XHJcbiAgICAgIGxheW91dERlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcInNlZSBkb2N1bWVudGF0aW9uXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vbWluaW1hbC5ndWlkZS9GZWF0dXJlcy9CbG9jayt3aWR0aFwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGxheW91dERlc2MuYXBwZW5kVGV4dCgnIGZvciBkZXRhaWxzLicpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnSW1hZ2UgZ3JpZHMnKVxyXG4gICAgICAuc2V0RGVzYygnVHVybiBjb25zZWN1dGl2ZSBpbWFnZXMgaW50byBjb2x1bW5zIFx1MjAxNCB0byBtYWtlIGEgbmV3IHJvdywgYWRkIGFuIGV4dHJhIGxpbmUgYnJlYWsgYmV0d2VlbiBpbWFnZXMnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nR3JpZClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nR3JpZCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NoYXJ0IHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIGNoYXJ0IGJsb2NrcycpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCdjaGFydC13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdjaGFydC1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNoYXJ0V2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNoYXJ0V2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdJZnJhbWUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgaWZyYW1lIGJsb2NrcycpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2lmcmFtZS1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2lmcmFtZS0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pZnJhbWVXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaWZyYW1lV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdJbWFnZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciBpbWFnZSBibG9ja3MnKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCdpbWctZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpbWctbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpbWctMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nV2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmltZ1dpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWFwIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIG1hcCBibG9ja3MnKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCdtYXAtZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdtYXAtbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdtYXAtMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubWFwV2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1hcFdpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVGFibGUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgdGFibGUgYW5kIERhdGF2aWV3IGJsb2NrcycpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCd0YWJsZS13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCd0YWJsZS1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnRhYmxlV2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRhYmxlV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnVHlwb2dyYXBoeSd9KTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1RleHQgZm9udCBzaXplJylcclxuICAgICAgLnNldERlc2MoJ1VzZWQgZm9yIHRoZSBtYWluIHRleHQgKGRlZmF1bHQgMTYpJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCcxNicpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy50ZXh0Tm9ybWFsIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRleHROb3JtYWwgPSBwYXJzZUZsb2F0KHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldEZvbnRTaXplKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnU21hbGwgZm9udCBzaXplJylcclxuICAgICAgLnNldERlc2MoJ1VzZWQgZm9yIHRleHQgaW4gdGhlIHNpZGViYXJzIGFuZCB0YWJzIChkZWZhdWx0IDEzKScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignMTMnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MudGV4dFNtYWxsIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRleHRTbWFsbCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0xpbmUgaGVpZ2h0JylcclxuICAgICAgLnNldERlc2MoJ0xpbmUgaGVpZ2h0IG9mIHRleHQgKGRlZmF1bHQgMS41KScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignMS41JylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVIZWlnaHQgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZUhlaWdodCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ05vcm1hbCBsaW5lIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ051bWJlciBvZiBjaGFyYWN0ZXJzIHBlciBsaW5lIChkZWZhdWx0IDQwKScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignNDAnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZVdpZHRoIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVXaWR0aCA9IHBhcnNlSW50KHZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ051bWJlciBvZiBjaGFyYWN0ZXJzIHBlciBsaW5lIGZvciB3aWRlIGVsZW1lbnRzIChkZWZhdWx0IDUwKScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignNTAnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZVdpZHRoV2lkZSB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lV2lkdGhXaWRlID0gcGFyc2VJbnQodmFsdWUudHJpbSgpKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNYXhpbXVtIGxpbmUgd2lkdGggJScpXHJcbiAgICAgIC5zZXREZXNjKCdQZXJjZW50YWdlIG9mIHNwYWNlIGluc2lkZSBhIHBhbmUgdGhhdCBhIGxpbmUgY2FuIGZpbGwgKGRlZmF1bHQgODgpJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCc4OCcpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXhXaWR0aCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXhXaWR0aCA9IHBhcnNlSW50KHZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdFZGl0b3IgZm9udCcpXHJcbiAgICAgIC5zZXREZXNjKCdPdmVycmlkZXMgdGhlIHRleHQgZm9udCBkZWZpbmVkIGluIE9ic2lkaWFuIEFwcGVhcmFuY2Ugc2V0dGluZ3Mgd2hlbiBpbiBlZGl0IG1vZGUnKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJycpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5lZGl0b3JGb250IHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmVkaXRvckZvbnQgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ1N1cHBvcnQgZGV2ZWxvcG1lbnQnfSk7XHJcblxyXG4gICAgY29uc3QgZG9uYXRlVGV4dCA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJyk7XHJcblxyXG4gICAgICBkb25hdGVUZXh0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJ0lmIHlvdSBlbmpveSBNaW5pbWFsLCBjb25zaWRlciAnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGRvbmF0ZVRleHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcImJ1eWluZyBtZSBhIGNvZmZlZVwiLFxyXG4gICAgICAgICAgaHJlZjogXCJodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2tlcGFub1wiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGRvbmF0ZVRleHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ3NwYW4nLCB7XHJcbiAgICAgICAgICB0ZXh0OiAnLCBhbmQgZm9sbG93aW5nIG1lIG9uIFR3aXR0ZXIgJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICBkb25hdGVUZXh0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJAa2VwYW5vXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vdHdpdHRlci5jb20va2VwYW5vXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICBjb25zdCBkaXYgPSBjb250YWluZXJFbC5jcmVhdGVFbCgnZGl2Jywge1xyXG4gICAgICBjbHM6ICdtaW5pbWFsLWRvbmF0aW9uJyxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcclxuICAgIGRpdi5hcHBlbmRDaGlsZChcclxuICAgICAgY3JlYXRlRG9uYXRlQnV0dG9uKFxyXG4gICAgICAgICdodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2tlcGFubycsXHJcbiAgICAgICAgcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhidXlNZUFDb2ZmZWUsICd0ZXh0L3htbCcpLmRvY3VtZW50RWxlbWVudCxcclxuICAgICAgKSxcclxuICAgICk7XHJcblxyXG5cclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IGNyZWF0ZURvbmF0ZUJ1dHRvbiA9IChsaW5rOiBzdHJpbmcsIGltZzogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsIGxpbmspO1xyXG4gIGEuYWRkQ2xhc3MoJ21pbmltYWwtZG9uYXRlLWJ1dHRvbicpO1xyXG4gIGEuYXBwZW5kQ2hpbGQoaW1nKTtcclxuICByZXR1cm4gYTtcclxufTtcclxuXHJcbmNvbnN0IGJ1eU1lQUNvZmZlZSA9IGBcclxuPHN2ZyB3aWR0aD1cIjE1MFwiIGhlaWdodD1cIjQyXCIgdmlld0JveD1cIjAgMCAyNjAgNzNcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDoxMHB4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbjxwYXRoIGQ9XCJNMCAxMS42OEMwIDUuMjI5MzIgNS4yMjkzMSAwIDExLjY4IDBIMjQ4LjJDMjU0LjY1MSAwIDI1OS44OCA1LjIyOTMxIDI1OS44OCAxMS42OFY2MS4zMkMyNTkuODggNjcuNzcwNyAyNTQuNjUxIDczIDI0OC4yIDczSDExLjY4QzUuMjI5MzEgNzMgMCA2Ny43NzA3IDAgNjEuMzJWMTEuNjhaXCIgZmlsbD1cIiNGRkREMDBcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuMjU2NiAyNC4wMDc4TDUyLjIyNDYgMjMuOTg4OUw1Mi4xNTA0IDIzLjk2NjNDNTIuMTgwMiAyMy45OTE1IDUyLjIxNzYgMjQuMDA2MSA1Mi4yNTY2IDI0LjAwNzhaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuNzI0OCAyNy4zNDU3TDUyLjY4OTUgMjcuMzU1Nkw1Mi43MjQ4IDI3LjM0NTdaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuMjcwMSAyNC4wMDI0QzUyLjI2NiAyNC4wMDE5IDUyLjI2MTkgMjQuMDAwOSA1Mi4yNTggMjMuOTk5NUM1Mi4yNTc4IDI0LjAwMjIgNTIuMjU3OCAyNC4wMDQ5IDUyLjI1OCAyNC4wMDc2QzUyLjI2MjQgMjQuMDA3IDUyLjI2NjYgMjQuMDA1MiA1Mi4yNzAxIDI0LjAwMjRaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuMjU3OCAyNC4wMDk0SDUyLjI2NDNWMjQuMDA1NEw1Mi4yNTc4IDI0LjAwOTRaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuNjk3MyAyNy4zMzk0TDUyLjc1MTMgMjcuMzA4Nkw1Mi43NzE0IDI3LjI5NzNMNTIuNzg5NyAyNy4yNzc4QzUyLjc1NTQgMjcuMjkyNiA1Mi43MjQxIDI3LjMxMzUgNTIuNjk3MyAyNy4zMzk0WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTUyLjM0ODQgMjQuMDgxMkw1Mi4yOTU2IDI0LjAzMUw1Mi4yNTk4IDI0LjAxMTVDNTIuMjc5IDI0LjA0NTQgNTIuMzEwOCAyNC4wNzA1IDUyLjM0ODQgMjQuMDgxMlpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk0zOS4wNjg0IDU2LjQ2OUMzOS4wMjYyIDU2LjQ4NzIgMzguOTg5MyA1Ni41MTU4IDM4Ljk2MDkgNTYuNTUyTDM4Ljk5NDMgNTYuNTMwNkMzOS4wMTY5IDU2LjUwOTggMzkuMDQ4OSA1Ni40ODUzIDM5LjA2ODQgNTYuNDY5WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTQ2Ljc4MDIgNTQuOTUxOEM0Ni43ODAyIDU0LjkwNDEgNDYuNzU2OSA1NC45MTI5IDQ2Ljc2MjYgNTUuMDgyNkM0Ni43NjI2IDU1LjA2ODcgNDYuNzY4MyA1NS4wNTQ5IDQ2Ljc3MDggNTUuMDQxN0M0Ni43NzM5IDU1LjAxMTUgNDYuNzc2NCA1NC45ODIgNDYuNzgwMiA1NC45NTE4WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTQ1Ljk4NDQgNTYuNDY5QzQ1Ljk0MjIgNTYuNDg3MiA0NS45MDUzIDU2LjUxNTggNDUuODc3IDU2LjU1Mkw0NS45MTAzIDU2LjUzMDZDNDUuOTMyOSA1Ni41MDk4IDQ1Ljk2NDkgNTYuNDg1MyA0NS45ODQ0IDU2LjQ2OVpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk0zMy42MzA3IDU2LjgzMDFDMzMuNTk4NyA1Ni44MDIzIDMzLjU1OTUgNTYuNzg0IDMzLjUxNzYgNTYuNzc3M0MzMy41NTE1IDU2Ljc5MzcgMzMuNTg1NSA1Ni44MSAzMy42MDgxIDU2LjgyMjZMMzMuNjMwNyA1Ni44MzAxWlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTMyLjQxMTggNTUuNjU5OEMzMi40MDY4IDU1LjYxMDMgMzIuMzkxNiA1NS41NjI0IDMyLjM2NzIgNTUuNTE5QzMyLjM4NDUgNTUuNTY0MiAzMi4zOTkgNTUuNjEwNCAzMi40MTA2IDU1LjY1NzNMMzIuNDExOCA1NS42NTk4WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTQwLjYyMyAzNC43MjIxQzM4Ljk0NDkgMzUuNDQwNSAzNy4wNDA0IDM2LjI1NTEgMzQuNTcyMiAzNi4yNTUxQzMzLjUzOTcgMzYuMjUzMSAzMi41MTIyIDM2LjExMTQgMzEuNTE3NiAzNS44MzRMMzMuMjI0NyA1My4zNjA1QzMzLjI4NTEgNTQuMDkzIDMzLjYxODggNTQuNzc2MSAzNC4xNTk1IDU1LjI3MzlDMzQuNzAwMyA1NS43NzE4IDM1LjQwODUgNTYuMDQ4MiAzNi4xNDM1IDU2LjA0OEMzNi4xNDM1IDU2LjA0OCAzOC41NjQgNTYuMTczNyAzOS4zNzE2IDU2LjE3MzdDNDAuMjQwOSA1Ni4xNzM3IDQyLjg0NzQgNTYuMDQ4IDQyLjg0NzQgNTYuMDQ4QzQzLjU4MjMgNTYuMDQ4IDQ0LjI5MDQgNTUuNzcxNiA0NC44MzEgNTUuMjczN0M0NS4zNzE2IDU0Ljc3NTkgNDUuNzA1MiA1NC4wOTI5IDQ1Ljc2NTYgNTMuMzYwNUw0Ny41OTQgMzMuOTkzQzQ2Ljc3NjkgMzMuNzE0IDQ1Ljk1MjMgMzMuNTI4NiA0NS4wMjI3IDMzLjUyODZDNDMuNDE1IDMzLjUyNzkgNDIuMTE5NiAzNC4wODE3IDQwLjYyMyAzNC43MjIxWlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuPHBhdGggZD1cIk0yNi4yMzQ0IDI3LjI0NDlMMjYuMjYzMyAyNy4yNzE5TDI2LjI4MjEgMjcuMjgzMkMyNi4yNjc2IDI3LjI2ODggMjYuMjUxNiAyNy4yNTU5IDI2LjIzNDQgMjcuMjQ0OVpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk01NS40OTA2IDI1LjYyNzRMNTUuMjMzNiAyNC4zMzA3QzU1LjAwMjkgMjMuMTY3MyA1NC40NzkzIDIyLjA2OCA1My4yODUxIDIxLjY0NzVDNTIuOTAyNCAyMS41MTMgNTIuNDY4IDIxLjQ1NTIgNTIuMTc0NSAyMS4xNzY4QzUxLjg4MSAyMC44OTgzIDUxLjc5NDMgMjAuNDY1OSA1MS43MjY0IDIwLjA2NDlDNTEuNjAwNyAxOS4zMjg5IDUxLjQ4MjUgMTguNTkyMyA1MS4zNTM3IDE3Ljg1NzVDNTEuMjQyNCAxNy4yMjU5IDUxLjE1NDQgMTYuNTE2MyA1MC44NjQ3IDE1LjkzNjhDNTAuNDg3NiAxNS4xNTg2IDQ5LjcwNSAxNC43MDM2IDQ4LjkyNjkgMTQuNDAyNUM0OC41MjgyIDE0LjI1MzcgNDguMTIxMyAxNC4xMjc4IDQ3LjcwODIgMTQuMDI1NEM0NS43NjQyIDEzLjUxMjUgNDMuNzIwMiAxMy4zMjQgNDEuNzIwMiAxMy4yMTY1QzM5LjMxOTcgMTMuMDg0IDM2LjkxMjggMTMuMTIzOSAzNC41MTggMTMuMzM1OUMzMi43MzU1IDEzLjQ5ODEgMzAuODU4MSAxMy42OTQyIDI5LjE2NDIgMTQuMzEwOEMyOC41NDUxIDE0LjUzNjQgMjcuOTA3MSAxNC44MDczIDI3LjQzNjQgMTUuMjg1NkMyNi44NTg3IDE1Ljg3MzMgMjYuNjcwMiAxNi43ODIxIDI3LjA5MTkgMTcuNTE1QzI3LjM5MTcgMTguMDM1NCAyNy44OTk2IDE4LjQwMzEgMjguNDM4MiAxOC42NDYzQzI5LjEzOTggMTguOTU5NyAyOS44NzI2IDE5LjE5ODIgMzAuNjI0MiAxOS4zNTc4QzMyLjcxNzIgMTkuODIwNCAzNC44ODUgMjAuMDAyMSAzNy4wMjMzIDIwLjA3OTRDMzkuMzkzMiAyMC4xNzUgNDEuNzY3IDIwLjA5NzUgNDQuMTI1NiAxOS44NDc0QzQ0LjcwODkgMTkuNzgzMyA0NS4yOTExIDE5LjcwNjQgNDUuODcyMyAxOS42MTY4QzQ2LjU1NjggMTkuNTExOCA0Ni45OTYxIDE4LjYxNjggNDYuNzk0MyAxNy45OTMzQzQ2LjU1MyAxNy4yNDc5IDQ1LjkwNDQgMTYuOTU4NyA0NS4xNzA5IDE3LjA3MTJDNDUuMDYyOCAxNy4wODgyIDQ0Ljk1NTMgMTcuMTAzOSA0NC44NDcyIDE3LjExOTZMNDQuNzY5MiAxNy4xMzFDNDQuNTIwOCAxNy4xNjI0IDQ0LjI3MjMgMTcuMTkxNyA0NC4wMjM4IDE3LjIxOUM0My41MTA1IDE3LjI3NDMgNDIuOTk1OSAxNy4zMTk1IDQyLjQ4MDEgMTcuMzU0N0M0MS4zMjQ5IDE3LjQzNTIgNDAuMTY2NSAxNy40NzIyIDM5LjAwODggMTcuNDc0MUMzNy44NzEyIDE3LjQ3NDEgMzYuNzMyOSAxNy40NDIxIDM1LjU5NzggMTcuMzY3M0MzNS4wNzk5IDE3LjMzMzMgMzQuNTYzMiAxNy4yOTAyIDM0LjA0NzggMTcuMjM3OEMzMy44MTM0IDE3LjIxMzMgMzMuNTc5NiAxNy4xODc1IDMzLjM0NTggMTcuMTU4NkwzMy4xMjMzIDE3LjEzMDNMMzMuMDc0OSAxNy4xMjM0TDMyLjg0NDIgMTcuMDkwMUMzMi4zNzI4IDE3LjAxOTEgMzEuOTAxNCAxNi45Mzc0IDMxLjQzNSAxNi44Mzg3QzMxLjM4OCAxNi44MjgzIDMxLjM0NTkgMTYuODAyMSAzMS4zMTU3IDE2Ljc2NDVDMzEuMjg1NiAxNi43MjY5IDMxLjI2OTEgMTYuNjgwMSAzMS4yNjkxIDE2LjYzMTlDMzEuMjY5MSAxNi41ODM3IDMxLjI4NTYgMTYuNTM2OSAzMS4zMTU3IDE2LjQ5OTNDMzEuMzQ1OSAxNi40NjE3IDMxLjM4OCAxNi40MzU2IDMxLjQzNSAxNi40MjUxSDMxLjQ0MzhDMzEuODQ4IDE2LjMzOSAzMi4yNTUzIDE2LjI2NTUgMzIuNjYzOCAxNi4yMDE0QzMyLjggMTYuMTggMzIuOTM2NiAxNi4xNTkgMzMuMDczNiAxNi4xMzg1SDMzLjA3NzRDMzMuMzMzMiAxNi4xMjE1IDMzLjU5MDMgMTYuMDc1NyAzMy44NDQ4IDE2LjA0NTVDMzYuMDU5NSAxNS44MTUxIDM4LjI4NzQgMTUuNzM2NiA0MC41MTI4IDE1LjgxMDRDNDEuNTkzMyAxNS44NDE5IDQyLjY3MzEgMTUuOTA1MyA0My43NDg1IDE2LjAxNDdDNDMuOTc5OCAxNi4wMzg2IDQ0LjIwOTggMTYuMDYzNyA0NC40Mzk5IDE2LjA5MkM0NC41Mjc5IDE2LjEwMjcgNDQuNjE2NSAxNi4xMTUzIDQ0LjcwNTEgMTYuMTI1OUw0NC44ODM2IDE2LjE1MTdDNDUuNDA0IDE2LjIyOTIgNDUuOTIxNyAxNi4zMjMzIDQ2LjQzNjcgMTYuNDMzOUM0Ny4xOTk3IDE2LjU5OTkgNDguMTc5NiAxNi42NTM5IDQ4LjUxOSAxNy40ODk4QzQ4LjYyNzEgMTcuNzU1MSA0OC42NzYxIDE4LjA0OTkgNDguNzM1OSAxOC4zMjgzTDQ4LjgxMTkgMTguNjgzNEM0OC44MTM5IDE4LjY4OTggNDguODE1NCAxOC42OTYzIDQ4LjgxNjMgMTguNzAyOUM0OC45OTYxIDE5LjU0MDkgNDkuMTc2IDIwLjM3OSA0OS4zNTYyIDIxLjIxN0M0OS4zNjk0IDIxLjI3ODkgNDkuMzY5NyAyMS4zNDI5IDQ5LjM1NzEgMjEuNDA0OUM0OS4zNDQ1IDIxLjQ2NjkgNDkuMzE5MyAyMS41MjU3IDQ5LjI4MjkgMjEuNTc3NkM0OS4yNDY2IDIxLjYyOTQgNDkuMiAyMS42NzMyIDQ5LjE0NiAyMS43MDYyQzQ5LjA5MiAyMS43MzkyIDQ5LjAzMTcgMjEuNzYwOCA0OC45NjkgMjEuNzY5NUg0OC45NjRMNDguODU0IDIxLjc4NDZMNDguNzQ1MyAyMS43OTlDNDguNDAwOSAyMS44NDM5IDQ4LjA1NiAyMS44ODU4IDQ3LjcxMDcgMjEuOTI0N0M0Ny4wMzA3IDIyLjAwMjIgNDYuMzQ5NiAyMi4wNjkzIDQ1LjY2NzQgMjIuMTI1OUM0NC4zMTE5IDIyLjIzODYgNDIuOTUzNiAyMi4zMTI1IDQxLjU5MjcgMjIuMzQ3N0M0MC44OTkyIDIyLjM2NjIgNDAuMjA1OSAyMi4zNzQ4IDM5LjUxMjkgMjIuMzczNUMzNi43NTQzIDIyLjM3MTMgMzMuOTk4MSAyMi4yMTEgMzEuMjU3OCAyMS44OTMzQzMwLjk2MTEgMjEuODU4MSAzMC42NjQ1IDIxLjgyMDQgMzAuMzY3OCAyMS43ODIxQzMwLjU5NzggMjEuODExNiAzMC4yMDA2IDIxLjc1OTQgMzAuMTIwMiAyMS43NDgxQzI5LjkzMTYgMjEuNzIxNyAyOS43NDMxIDIxLjY5NDMgMjkuNTU0NSAyMS42NjU4QzI4LjkyMTYgMjEuNTcwOSAyOC4yOTI0IDIxLjQ1NCAyNy42NjA3IDIxLjM1MTVDMjYuODk3MSAyMS4yMjU4IDI2LjE2NjcgMjEuMjg4NyAyNS40NzYgMjEuNjY1OEMyNC45MDkgMjEuOTc2IDI0LjQ1MDEgMjIuNDUxOCAyNC4xNjA1IDIzLjAyOTdDMjMuODYyNiAyMy42NDU2IDIzLjc3MzkgMjQuMzE2MyAyMy42NDA3IDI0Ljk3ODFDMjMuNTA3NCAyNS42Mzk5IDIzLjMgMjYuMzUyMSAyMy4zNzg2IDI3LjAzMTVDMjMuNTQ3NyAyOC40OTc5IDI0LjU3MjggMjkuNjg5NSAyNi4wNDczIDI5Ljk1NkMyNy40MzQ1IDMwLjIwNzQgMjguODI5MiAzMC40MTExIDMwLjIyNzYgMzAuNTg0NkMzNS43MjEyIDMxLjI1NzQgNDEuMjcxMSAzMS4zMzc5IDQ2Ljc4MTggMzAuODI0N0M0Ny4yMzA1IDMwLjc4MjggNDcuNjc4NyAzMC43MzcxIDQ4LjEyNjIgMzAuNjg3NkM0OC4yNjYgMzAuNjcyMyA0OC40MDc0IDMwLjY4ODQgNDguNTQwMSAzMC43MzQ4QzQ4LjY3MjkgMzAuNzgxMiA0OC43OTM2IDMwLjg1NjYgNDguODkzNCAzMC45NTU3QzQ4Ljk5MzIgMzEuMDU0OCA0OS4wNjk1IDMxLjE3NDkgNDkuMTE2OSAzMS4zMDczQzQ5LjE2NDIgMzEuNDM5NyA0OS4xODE0IDMxLjU4MTEgNDkuMTY3IDMxLjcyMDlMNDkuMDI3NSAzMy4wNzczQzQ4Ljc0NjMgMzUuODE4MSA0OC40NjUyIDM4LjU1ODcgNDguMTg0IDQxLjI5OUM0Ny44OTA3IDQ0LjE3NjkgNDcuNTk1NSA0Ny4wNTQ1IDQ3LjI5ODQgNDkuOTMxOUM0Ny4yMTQ2IDUwLjc0MjIgNDcuMTMwOCA1MS41NTI0IDQ3LjA0NyA1Mi4zNjI0QzQ2Ljk2NjYgNTMuMTYgNDYuOTU1MiA1My45ODI3IDQ2LjgwMzggNTQuNzcwOUM0Ni41NjQ5IDU2LjAxMDMgNDUuNzI1OCA1Ni43NzE1IDQ0LjUwMTUgNTcuMDQ5OUM0My4zNzk4IDU3LjMwNTIgNDIuMjMzOSA1Ny40MzkyIDQxLjA4MzYgNTcuNDQ5N0MzOS44MDgzIDU3LjQ1NjYgMzguNTMzNiA1Ny40IDM3LjI1ODMgNTcuNDA2OUMzNS44OTcgNTcuNDE0NSAzNC4yMjk1IDU3LjI4ODcgMzMuMTc4NiA1Ni4yNzU2QzMyLjI1NTMgNTUuMzg1NiAzMi4xMjc3IDUzLjk5MjEgMzIuMDAyIDUyLjc4NzJDMzEuODM0NCA1MS4xOTIgMzEuNjY4MiA0OS41OTcxIDMxLjUwMzYgNDguMDAyM0wzMC41Nzk2IDM5LjEzNDRMMjkuOTgxOSAzMy4zOTY2QzI5Ljk3MTggMzMuMzAxNyAyOS45NjE4IDMzLjIwOCAyOS45NTI0IDMzLjExMjVDMjkuODgwNyAzMi40MjggMjkuMzk2MSAzMS43NTggMjguNjMyNCAzMS43OTI2QzI3Ljk3ODggMzEuODIxNSAyNy4yMzU5IDMyLjM3NzEgMjcuMzEyNSAzMy4xMTI1TDI3Ljc1NTcgMzcuMzY2NEwyOC42NzIgNDYuMTY1N0MyOC45MzMxIDQ4LjY2NTIgMjkuMTkzNSA1MS4xNjUgMjkuNDUzMyA1My42NjUzQzI5LjUwMzYgNTQuMTQ0MiAyOS41NTA3IDU0LjYyNDQgMjkuNjAzNSA1NS4xMDM0QzI5Ljg5MDggNTcuNzIwNSAzMS44ODk1IDU5LjEzMSAzNC4zNjQ2IDU5LjUyODJDMzUuODEwMiA1OS43NjA3IDM3LjI5MSA1OS44MDg1IDM4Ljc1OCA1OS44MzI0QzQwLjYzODYgNTkuODYyNiA0Mi41MzggNTkuOTM0OCA0NC4zODc3IDU5LjU5NDJDNDcuMTI4NyA1OS4wOTE0IDQ5LjE4NTMgNTcuMjYxMSA0OS40Nzg4IDU0LjQyMkM0OS41NjI2IDUzLjYwMjQgNDkuNjQ2NCA1Mi43ODI2IDQ5LjczMDIgNTEuOTYyNkM1MC4wMDg4IDQ5LjI1MDcgNTAuMjg3MSA0Ni41Mzg2IDUwLjU2NDkgNDMuODI2M0w1MS40NzM3IDM0Ljk2NDFMNTEuODkwNCAzMC45MDI2QzUxLjkxMTIgMzAuNzAxMiA1MS45OTYyIDMwLjUxMTggNTIuMTMzIDMwLjM2MjVDNTIuMjY5NyAzMC4yMTMyIDUyLjQ1MDkgMzAuMTExOSA1Mi42NDk3IDMwLjA3MzZDNTMuNDMzNSAyOS45MjA4IDU0LjE4MjcgMjkuNjYgNTQuNzQwMiAyOS4wNjM1QzU1LjYyNzcgMjguMTEzOCA1NS44MDQzIDI2Ljg3NTYgNTUuNDkwNiAyNS42Mjc0Wk0yNi4wMDcxIDI2LjUwMzVDMjYuMDE5IDI2LjQ5NzkgMjUuOTk3IDI2LjYwMDMgMjUuOTg3NiAyNi42NDgxQzI1Ljk4NTcgMjYuNTc1OCAyNS45ODk1IDI2LjUxMTcgMjYuMDA3MSAyNi41MDM1Wk0yNi4wODMxIDI3LjA5MThDMjYuMDg5NCAyNy4wODc0IDI2LjEwODMgMjcuMTEyNiAyNi4xMjc4IDI3LjE0MjhDMjYuMDk4MiAyNy4xMTUxIDI2LjA3OTQgMjcuMDk0NCAyNi4wODI1IDI3LjA5MThIMjYuMDgzMVpNMjYuMTU3OSAyNy4xOTA1QzI2LjE4NSAyNy4yMzY0IDI2LjE5OTQgMjcuMjY1MyAyNi4xNTc5IDI3LjE5MDVWMjcuMTkwNVpNMjYuMzA4MiAyNy4zMTI1SDI2LjMxMTlDMjYuMzExOSAyNy4zMTY5IDI2LjMxODggMjcuMzIxMyAyNi4zMjE0IDI3LjMyNTdDMjYuMzE3MiAyNy4zMjA4IDI2LjMxMjYgMjcuMzE2NCAyNi4zMDc1IDI3LjMxMjVIMjYuMzA4MlpNNTIuNjEzMiAyNy4xMzAyQzUyLjMzMTcgMjcuMzk3OSA1MS45MDc0IDI3LjUyMjQgNTEuNDg4MiAyNy41ODQ2QzQ2Ljc4NjggMjguMjgyMyA0Mi4wMTY5IDI4LjYzNTUgMzcuMjY0IDI4LjQ3OTZDMzMuODYyNCAyOC4zNjMzIDMwLjQ5NjcgMjcuOTg1NiAyNy4xMjkgMjcuNTA5OEMyNi43OTkgMjcuNDYzMyAyNi40NDE0IDI3LjQwMyAyNi4yMTQ1IDI3LjE1OTdDMjUuNzg3MSAyNi43MDA5IDI1Ljk5NyAyNS43NzcgMjYuMTA4MyAyNS4yMjI2QzI2LjIxMDEgMjQuNzE0OCAyNi40MDUgMjQuMDM3OCAyNy4wMDkgMjMuOTY1NkMyNy45NTE4IDIzLjg1NDkgMjkuMDQ2NiAyNC4yNTI4IDI5Ljk3OTQgMjQuMzk0MkMzMS4xMDIzIDI0LjU2NTYgMzIuMjI5NSAyNC43MDI4IDMzLjM2MDkgMjQuODA1OUMzOC4xODkyIDI1LjI0NTkgNDMuMDk4NiAyNS4xNzc0IDQ3LjkwNTYgMjQuNTMzN0M0OC43ODE3IDI0LjQxNiA0OS42NTQ4IDI0LjI3OTIgNTAuNTI0NiAyNC4xMjMzQzUxLjI5OTYgMjMuOTg0NCA1Mi4xNTg4IDIzLjcyMzYgNTIuNjI3MSAyNC41MjYyQzUyLjk0ODIgMjUuMDczIDUyLjk5MSAyNS44MDQ2IDUyLjk0MTMgMjYuNDIyNUM1Mi45MjYgMjYuNjkxNyA1Mi44MDg0IDI2Ljk0NDggNTIuNjEyNiAyNy4xMzAySDUyLjYxMzJaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk04MS4xMzAyIDQwLjE5MjlDODAuODU1NiA0MC43MTY5IDgwLjQ3ODEgNDEuMTczMiA3OS45OTc4IDQxLjU2MDRDNzkuNTE3NSA0MS45NDc5IDc4Ljk1NzEgNDIuMjYzMyA3OC4zMTY2IDQyLjUwNjJDNzcuNjc2MSA0Mi43NDk3IDc3LjAzMTUgNDIuOTEzMSA3Ni4zODM1IDQyLjk5NjRDNzUuNzM1MiA0My4wNzk5IDc1LjEwNiA0My4wNzI3IDc0LjQ5NjMgNDIuOTczNUM3My44ODYzIDQyLjg3NDkgNzMuMzY3NCA0Mi42NzM3IDcyLjk0MDggNDIuMzY5NUw3My40MjE0IDM3LjM3NzlDNzMuODYzMyAzNy4yMjYxIDc0LjQxOTcgMzcuMDcwMyA3NS4wOTA5IDM2LjkxMDdDNzUuNzYxOSAzNi43NTEzIDc2LjQ1MiAzNi42MzcxIDc3LjE2MTMgMzYuNTY4OUM3Ny44NzA1IDM2LjUwMDMgNzguNTQxMiAzNi41MDg0IDc5LjE3NDQgMzYuNTkxN0M3OS44MDY4IDM2LjY3NTMgODAuMzA2NSAzNi44NzY1IDgwLjY3MjUgMzcuMTk1OEM4MC44NzA3IDM3LjM3OCA4MS4wMzg3IDM3LjU3NTQgODEuMTc2IDM3Ljc4ODNDODEuMzEzIDM4LjAwMTEgODEuMzk2OSAzOC4yMjE0IDgxLjQyNzYgMzguNDQ5M0M4MS41MDM3IDM5LjA4NzUgODEuNDA0NyAzOS42Njg3IDgxLjEzMDIgNDAuMTkyOVpNNzQuMTUzIDI5LjU2MDJDNzQuNDczNCAyOS4zNjI3IDc0Ljg1ODUgMjkuMTg3NyA3NS4zMDgzIDI5LjAzNTZDNzUuNzU4MSAyOC44ODQxIDc2LjIxOTUgMjguNzc3NCA3Ni42OTIzIDI4LjcxNjdDNzcuMTY0OCAyOC42NTYyIDc3LjYyNjIgMjguNjQ4MSA3OC4wNzYzIDI4LjY5MzhDNzguNTI1OCAyOC43Mzk1IDc4LjkyMjggMjguODY0NyA3OS4yNjU5IDI5LjA2OTdDNzkuNjA4OSAyOS4yNzUxIDc5Ljg2NDMgMjkuNTcxNCA4MC4wMzIgMjkuOTU4NkM4MC4xOTk3IDMwLjM0NjQgODAuMjQ1NiAzMC44MzY1IDgwLjE2OTMgMzEuNDI5QzgwLjEwODMgMzEuOTAwMSA3OS45MjExIDMyLjI5OTEgNzkuNjA4OSAzMi42MjU2Qzc5LjI5NjMgMzIuOTUyNiA3OC45MTQ3IDMzLjIyNTkgNzguNDY1MiAzMy40NDYyQzc4LjAxNTQgMzMuNjY2OCA3Ny41Mzg4IDMzLjg0MTUgNzcuMDM1NiAzMy45NzAyQzc2LjUzMjEgMzQuMDk5NyA3Ni4wNDc3IDM0LjE5NDkgNzUuNTgyOCAzNC4yNTUzQzc1LjExNzYgMzQuMzE2MyA3NC43MTM3IDM0LjM1NDUgNzQuMzcwNiAzNC4zNjkyQzc0LjAyNzMgMzQuMzg0NSA3My44MDIxIDM0LjM5MjEgNzMuNjk1NiAzNC4zOTIxTDc0LjE1MyAyOS41NjAyWk04My42MDA3IDM2Ljk2NzZDODMuMzU2NiAzNi40MzYxIDgzLjAyODcgMzUuOTY4OSA4Mi42MTcyIDM1LjU2NThDODIuMjA1NCAzNS4xNjMzIDgxLjcxNyAzNC44NzA5IDgxLjE1MzEgMzQuNjg4NUM4MS4zOTY5IDM0LjQ5MSA4MS42MzcxIDM0LjE3OTUgODEuODczNyAzMy43NTM5QzgyLjEwOTkgMzMuMzI4OCA4Mi4zMTE5IDMyLjg2NSA4Mi40Nzk2IDMyLjM2MzZDODIuNjQ3NCAzMS44NjE5IDgyLjc2MiAzMS4zNTcgODIuODIyOSAzMC44NDc4QzgyLjg4MzYgMzAuMzM4OSA4Mi44NjA3IDI5LjkwMiA4Mi43NTQ0IDI5LjUzN0M4Mi40OTQ3IDI4LjYyNTYgODIuMDg3IDI3LjkxMTQgODEuNTMwMyAyNy4zOTQ2QzgwLjk3MzQgMjYuODc4MiA4MC4zMjU3IDI2LjUyMTEgNzkuNTg2IDI2LjMyMzNDNzguODQ2MiAyNi4xMjY0IDc4LjAzMDQgMjYuMDg0MiA3Ny4xMzgzIDI2LjE5ODFDNzYuMjQ2MiAyNi4zMTIgNzUuMzM0NyAyNi41MzYxIDc0LjQwNDkgMjYuODcwNEM3NC40MDQ5IDI2Ljc5NDYgNzQuNDEyNCAyNi43MTQ4IDc0LjQyNzggMjYuNjMxMkM3NC40NDI2IDI2LjU0OCA3NC40NTA0IDI2LjQ2MDQgNzQuNDUwNCAyNi4zNjlDNzQuNDUwNCAyNi4xNDExIDc0LjMzNjEgMjUuOTQzOSA3NC4xMDc0IDI1Ljc3NjVDNzMuODc4NyAyNS42MDkzIDczLjYxNTUgMjUuNTEwNyA3My4zMTgzIDI1LjQ4MDFDNzMuMDIwOSAyNS40NSA3Mi43MzEgMjUuNTE0MiA3Mi40NDg5IDI1LjY3MzhDNzIuMTY2NSAyNS44MzM0IDcxLjk3MjEgMjYuMTI2NCA3MS44NjU2IDI2LjU1MTFDNzEuNzQzNCAyNy45MTg5IDcxLjYyMTUgMjkuMzM5OCA3MS40OTk2IDMwLjgxMzRDNzEuMzc3NCAzMi4yODc1IDcxLjI0OCAzMy43NzY3IDcxLjExMDcgMzUuMjgxMkM3MC45NzM1IDM2Ljc4NTUgNzAuODM2MiAzOC4yNzg0IDcwLjY5ODkgMzkuNzU5OEM3MC41NjE2IDQxLjI0MTQgNzAuNDI0NCA0Mi42NjU5IDcwLjI4NzEgNDQuMDMzM0M3MC4zMzMgNDQuNDQzNiA3MC40NDczIDQ0Ljc2MjkgNzAuNjMwNCA0NC45OTA3QzcwLjgxMzMgNDUuMjE4OSA3MS4wMjY4IDQ1LjM1NTYgNzEuMjcwOSA0NS40MDFDNzEuNTE0NyA0NS40NDY3IDcxLjc3MDQgNDUuNDA0NSA3Mi4wMzcxIDQ1LjI3NTVDNzIuMzAzOCA0NS4xNDY5IDcyLjUzNjUgNDQuOTIyMiA3Mi43MzUgNDQuNjAzMkM3My4zNDQ3IDQ0LjkzNzUgNzQuMDMxMSA0NS4xNTQxIDc0Ljc5MzggNDUuMjUzQzc1LjU1NjEgNDUuMzUxNiA3Ni4zMjk4IDQ1LjM1MTYgNzcuMTE1NyA0NS4yNTNDNzcuOTAwNyA0NS4xNTQxIDc4LjY3NDcgNDQuOTY4MiA3OS40Mzc0IDQ0LjY5NDNDODAuMTk5NyA0NC40MjExIDgwLjg5MzYgNDQuMDc5IDgxLjUxOSA0My42NjlDODIuMTQ0MSA0My4yNTg2IDgyLjY3MDMgNDIuNzkxMSA4My4wOTc1IDQyLjI2NzFDODMuNTI0NCA0MS43NDI2IDgzLjgwNjUgNDEuMTc2NyA4My45NDM3IDQwLjU2OTFDODQuMDgxIDM5Ljk0NiA4NC4xMTkgMzkuMzIzMSA4NC4wNTgxIDM4LjdDODMuOTk3MSAzOC4wNzcxIDgzLjg0NDUgMzcuNSA4My42MDA3IDM2Ljk2NzZaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XHJcbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMDUuOTE1IDQ5LjAwMTdDMTA1LjgzMiA0OS41MDMxIDEwNS43MTMgNTAuMDMxMSAxMDUuNTYxIDUwLjU4NkMxMDUuNDA4IDUxLjE0MDMgMTA1LjIyOSA1MS42NDU4IDEwNS4wMjMgNTIuMTAxOEMxMDQuODE4IDUyLjU1NzUgMTA0LjU4OSA1Mi45MjU2IDEwNC4zMzcgNTMuMjA3QzEwNC4wODUgNTMuNDg4IDEwMy44MTUgNTMuNjA2IDEwMy41MjUgNTMuNTYwNkMxMDMuMjk2IDUzLjUyOTcgMTAzLjE1MSA1My4zODU0IDEwMy4wOTEgNTMuMTI3NEMxMDMuMDI5IDUyLjg2ODYgMTAzLjAyOSA1Mi41NDk3IDEwMy4wOTEgNTIuMTdDMTAzLjE1MSA1MS43OTAxIDEwMy4yNjkgNTEuMzYwNyAxMDMuNDQ1IDUwLjg4MjFDMTAzLjYyIDUwLjQwMzUgMTAzLjgzNCA0OS45Mjg0IDEwNC4wODUgNDkuNDU3N0MxMDQuMzM3IDQ4Ljk4NjQgMTA0LjYyMyA0OC41MzQ3IDEwNC45NDMgNDguMTAxNUMxMDUuMjY0IDQ3LjY2ODYgMTA1LjU5OSA0Ny4zMDc1IDEwNS45NSA0Ny4wMTg5QzEwNi4wMjYgNDcuMTEgMTA2LjA2IDQ3LjMzNzggMTA2LjA1MyA0Ny43MDI4QzEwNi4wNDUgNDguMDY3NCAxMDUuOTk5IDQ4LjUwMDYgMTA1LjkxNSA0OS4wMDE3Wk0xMTMuNjcgMzkuMTA5N0MxMTMuNDY0IDM4Ljg4MTkgMTEzLjIxMyAzOC43NTI5IDExMi45MTUgMzguNzIyM0MxMTIuNjE4IDM4LjY5MTkgMTEyLjMxNyAzOC44NTkgMTEyLjAxMiAzOS4yMjM3QzExMS44MTMgMzkuNTg4MyAxMTEuNTYyIDM5LjkzNzkgMTExLjI1NyA0MC4yNzIyQzExMC45NTIgNDAuNjA2NyAxMTAuNjM1IDQwLjkxMDMgMTEwLjMwNyA0MS4xODM5QzEwOS45OCA0MS40NTcyIDEwOS42NjcgNDEuNjkzMSAxMDkuMzcgNDEuODkwM0MxMDkuMDcyIDQyLjA4ODEgMTA4Ljg0IDQyLjIzMjQgMTA4LjY3MiA0Mi4zMjM1QzEwOC42MTEgNDEuODM3NCAxMDguNTc2IDQxLjMxMzIgMTA4LjU2OSA0MC43NTA3QzEwOC41NjEgNDAuMTg4NiAxMDguNTczIDM5LjYxOSAxMDguNjAzIDM5LjA0MTVDMTA4LjY0OSAzOC4yMjA5IDEwOC43NDQgMzcuMzkzIDEwOC44ODkgMzYuNTU3QzEwOS4wMzQgMzUuNzIxMyAxMDkuMjQ0IDM0LjkwMDcgMTA5LjUxOCAzNC4wOTUxQzEwOS41MTggMzMuNjcgMTA5LjQxOSAzMy4zMjQyIDEwOS4yMjEgMzMuMDU4MkMxMDkuMDIyIDMyLjc5MjQgMTA4Ljc4MiAzMi42MjUgMTA4LjUgMzIuNTU2N0MxMDguMjE4IDMyLjQ4ODUgMTA3LjkyOSAzMi41MjY0IDEwNy42MzEgMzIuNjcwN0MxMDcuMzM0IDMyLjgxNTMgMTA3LjA3OCAzMy4wNzc1IDEwNi44NjUgMzMuNDU2OUMxMDYuNjgyIDMzLjk1ODYgMTA2LjQ3MiAzNC41MjA3IDEwNi4yMzYgMzUuMTQzNkMxMDUuOTk5IDM1Ljc2NjcgMTA1LjczMiAzNi40MDEyIDEwNS40MzUgMzcuMDQ2OUMxMDUuMTM4IDM3LjY5MzEgMTA0LjgwNiAzOC4zMTk3IDEwNC40NCAzOC45MjczQzEwNC4wNzQgMzkuNTM1NCAxMDMuNjc0IDQwLjA3NSAxMDMuMjM5IDQwLjU0NTdDMTAyLjgwNCA0MS4wMTY4IDEwMi4zMzEgNDEuMzg1NCAxMDEuODIxIDQxLjY1MTJDMTAxLjMxIDQxLjkxNzIgMTAwLjc1NyA0Mi4wMzQ5IDEwMC4xNjIgNDIuMDA0NUM5OS44ODc2IDQxLjkyODUgOTkuNjg5MyA0MS43MjM1IDk5LjU2NzUgNDEuMzg4OUM5OS40NDUzIDQxLjA1NDkgOTkuMzczIDQwLjYzNjggOTkuMzUwNCA0MC4xMzU0Qzk5LjMyNzUgMzkuNjM0IDk5LjM1MDQgMzkuMDgzMSA5OS40MTg5IDM4LjQ4MjhDOTkuNDg3NyAzNy44ODI4IDk5LjU3OTEgMzcuMjg2MyA5OS42OTM0IDM2LjY5MzhDOTkuODA3OCAzNi4xMDEgOTkuOTMzNyAzNS41Mzg5IDEwMC4wNzEgMzUuMDA3MUMxMDAuMjA4IDM0LjQ3NTMgMTAwLjMzNyAzNC4wMjY4IDEwMC40NiAzMy42NjIyQzEwMC42NDMgMzMuMjIxOCAxMDAuNjQzIDMyLjg1MjkgMTAwLjQ2IDMyLjU1NjdDMTAwLjI3NyAzMi4yNjA0IDEwMC4wMjUgMzIuMDYzMSA5OS43MDUgMzEuOTY0Qzk5LjM4NDYgMzEuODY1NCA5OS4wNDg5IDMxLjg2OTQgOTguNjk4MyAzMS45NzU1Qzk4LjM0NzQgMzIuMDgxOSA5OC4wOTU4IDMyLjMxNzMgOTcuOTQzNSAzMi42ODJDOTcuNjg0IDMzLjMwNTQgOTcuNDQ3NSAzNC4wMDQgOTcuMjM0MiAzNC43NzlDOTcuMDIwNiAzNS41NTM5IDk2Ljg0OTEgMzYuMzU1OCA5Ni43MTk3IDM3LjE4MzZDOTYuNTg5NiAzOC4wMTIxIDk2LjUxNzEgMzguODMyNyA5Ni41MDIgMzkuNjQ1NkM5Ni41MDExIDM5LjY5ODUgOTYuNTAzNyAzOS43NDg4IDk2LjUwMzQgMzkuODAxNEM5Ni4xNzA5IDQwLjY4NDggOTUuODU0IDQxLjM1MjUgOTUuNTUzIDQxLjc5OTJDOTUuMTY0MSA0Mi4zNzcgOTQuNzI1MyA0Mi42Mjc3IDk0LjIzNzUgNDIuNTUxM0M5NC4wMjM2IDQyLjQ2MDMgOTMuODgzMiA0Mi4yNDc3IDkzLjgxNDcgNDEuOTEzMkM5My43NDUzIDQxLjU3OTIgOTMuNzIyNyA0MS4xNjg5IDkzLjc0NTMgNDAuNjgyMkM5My43Njg4IDQwLjE5NjQgOTMuODI2IDM5LjY0NTYgOTMuOTE3MSAzOS4wMjk5Qzk0LjAwOTEgMzguNDE0NiA5NC4xMjI5IDM3Ljc3NjQgOTQuMjYwMSAzNy4xMTU0Qzk0LjM5NzcgMzYuNDU0MSA5NC41NDI1IDM1Ljc4OTkgOTQuNjk0OSAzNS4xMjFDOTQuODQ3MiAzNC40NTI1IDk0Ljk4NDUgMzMuODIxOCA5NS4xMDcgMzMuMjI5MUM5NS4wOTE2IDMyLjY5NzMgOTQuOTM1MiAzMi4yOTEgOTQuNjM3NyAzMi4wMDk3Qzk0LjM0MDUgMzEuNzI4OSA5My45MjQ3IDMxLjYxODcgOTMuMzkxMyAzMS42NzkxQzkzLjAyNTMgMzEuODMxMiA5Mi43NTQyIDMyLjAyOSA5Mi41NzkgMzIuMjcxOUM5Mi40MDM0IDMyLjUxNDggOTIuMjYyMyAzMi44MjY1IDkyLjE1NTggMzMuMjA2MkM5Mi4wOTQ2IDMzLjQwNCA5Mi4wMDMyIDMzLjc5OSA5MS44ODEzIDM0LjM5MThDOTEuNzU5MSAzNC45ODQgOTEuNjAzIDM1LjY2NDQgOTEuNDEyMyAzNi40MzE1QzkxLjIyMTcgMzcuMTk5MiA5MC45OTY3IDM4LjAwMDUgOTAuNzM3NiAzOC44MzYyQzkwLjQ3ODEgMzkuNjcxOSA5MC4xODg1IDQwLjQyODMgODkuODY4NCA0MS4xMDQxQzg5LjU0OCA0MS43ODAxIDg5LjE5NzIgNDIuMzIzNSA4OC44MTYxIDQyLjczMzhDODguNDM0OCA0My4xNDM4IDg4LjAyMyA0My4zMTEzIDg3LjU4MDcgNDMuMjM1MkM4Ny4zMzY2IDQzLjE4OTUgODcuMTgwNSA0Mi45Mzg4IDg3LjExMiA0Mi40ODMxQzg3LjA0MzIgNDIuMDI3MSA4Ny4wMzE5IDQxLjQ2NTMgODcuMDc3NSA0MC43OTY0Qzg3LjEyMzMgNDAuMTI3OSA4Ny4yMTQ4IDM5LjM5NDYgODcuMzUyIDM4LjU5NzFDODcuNDg5MyAzNy43OTkzIDg3LjYzIDM3LjA0MzQgODcuNzc1MiAzNi4zMjg5Qzg3LjkyIDM1LjYxNDkgODguMDUzNSAzNC45ODQgODguMTc1NiAzNC40MzcyQzg4LjI5NzUgMzMuODkwMSA4OC4zODE0IDMzLjUyNTQgODguNDI3MiAzMy4zNDMzQzg4LjQyNzIgMzIuOTAyNiA4OC4zMjc3IDMyLjU0OTUgODguMTI5OCAzMi4yODMyQzg3LjkzMTMgMzIuMDE3OCA4Ny42OTEzIDMxLjg1MDMgODcuNDA5MiAzMS43ODE4Qzg3LjEyNjggMzEuNzEzNiA4Ni44MzcyIDMxLjc1MTQgODYuNTQgMzEuODk1N0M4Ni4yNDI2IDMyLjA0MDMgODUuOTg3MiAzMi4zMDI2IDg1Ljc3MzYgMzIuNjgyQzg1LjY5NzMgMzMuMDkyMyA4NS41OTggMzMuNTY3NCA4NS40NzYxIDM0LjEwNjdDODUuMzUzOSAzNC42NDU5IDg1LjIzNjEgMzUuMjAwNiA4NS4xMjE4IDM1Ljc3MDVDODUuMDA3NCAzNi4zNDA0IDg0LjkwMDMgMzYuODk4OCA4NC44MDE0IDM3LjQ0NTlDODQuNzAyMSAzNy45OTMgODQuNjI5OSAzOC40NzE2IDg0LjU4NCAzOC44ODE5Qzg0LjU1MzYgMzkuMjAwOCA4NC41MTkgMzkuNTkyMyA4NC40ODEzIDQwLjA1NTZDODQuNDQzIDQwLjUxOTQgODQuNDIzOCA0MS4wMDkyIDg0LjQyMzggNDEuNTI1N0M4NC40MjM4IDQyLjA0MjcgODQuNDYxOCA0Mi41NTU0IDg0LjUzODUgNDMuMDY0M0M4NC42MTQ1IDQzLjU3MzUgODQuNzUxOCA0NC4wNDA4IDg0Ljk1IDQ0LjQ2NTlDODUuMTQ4MiA0NC44OTE1IDg1LjQyNjUgNDUuMjQwOCA4NS43ODUyIDQ1LjUxNDRDODYuMTQzMyA0NS43ODc5IDg2LjU5NzIgNDUuOTM5NyA4Ny4xNDYzIDQ1Ljk3MDRDODcuNzEwMSA0Ni4wMDA1IDg4LjIwMiA0NS45NTkxIDg4LjYyMTcgNDUuODQ0OUM4OS4wNDEgNDUuNzMxIDg5LjQyMjEgNDUuNTUyMyA4OS43NjU0IDQ1LjMwOTFDOTAuMTA4NCA0NS4wNjY1IDkwLjQyMSA0NC43Nzc2IDkwLjcwMzMgNDQuNDQzQzkwLjk4NTEgNDQuMTA5MSA5MS4yNjM3IDQzLjc0NDQgOTEuNTM4MyA0My4zNDkxQzkxLjc5NzQgNDMuOTI2OSA5Mi4xMzI5IDQ0LjM3NDggOTIuNTQ0NyA0NC42OTRDOTIuOTU2NSA0NS4wMTMgOTMuMzkxMyA0NS4yMDMyIDkzLjg0ODYgNDUuMjYzN0M5NC4zMDYgNDUuMzI0MSA5NC43NzE1IDQ1LjI2MDIgOTUuMjQ0MiA0NS4wNjk5Qzk1LjcxNjcgNDQuODgwMyA5Ni4xNDM2IDQ0LjU1NzMgOTYuNTI1MiA0NC4xMDEyQzk2Ljc3NjIgNDMuODIxNiA5Ny4wMTMxIDQzLjUwMzggOTcuMjM1NCA0My4xNTI1Qzk3LjMyOTcgNDMuMzE3IDk3LjQzMDEgNDMuNDc1OCA5Ny41NDMgNDMuNjIyNEM5Ny45MTY4IDQ0LjEwOTEgOTguNDI0IDQ0LjQ0MyA5OS4wNjQ1IDQ0LjYyNTVDOTkuNzUwNiA0NC44MDggMTAwLjQyMSA0NC44Mzg2IDEwMS4wNzcgNDQuNzE2OUMxMDEuNzMzIDQ0LjU5NTQgMTAyLjM1OCA0NC4zNzQ4IDEwMi45NTMgNDQuMDU1OUMxMDMuNTQ4IDQzLjczNjYgMTA0LjEwMSA0My4zNTMyIDEwNC42MTIgNDIuOTA0N0MxMDUuMTIyIDQyLjQ1NjUgMTA1LjU2OCA0MS45ODk1IDEwNS45NSA0MS41MDI4QzEwNS45MzQgNDEuODUyNCAxMDUuOTI3IDQyLjE4MzIgMTA1LjkyNyA0Mi40OTQ0QzEwNS45MjcgNDIuODA2MSAxMDUuOTE5IDQzLjE0MzggMTA1LjkwNCA0My41MDg4QzEwNS4xNDEgNDQuMDQwOCAxMDQuNDIxIDQ0LjY3OSAxMDMuNzQyIDQ1LjQyMzNDMTAzLjA2NCA0Ni4xNjc2IDEwMi40NjkgNDYuOTYxNiAxMDEuOTU4IDQ3LjgwNTFDMTAxLjQ0NyA0OC42NDgzIDEwMS4wNDcgNDkuNTAzMSAxMDAuNzU3IDUwLjM2OTFDMTAwLjQ2NyA1MS4yMzU3IDEwMC4zMjYgNTIuMDQ0NSAxMDAuMzM0IDUyLjc5NjlDMTAwLjM0MSA1My41NDkgMTAwLjUyMSA1NC4yMDYgMTAwLjg3MSA1NC43NjgxQzEwMS4yMjIgNTUuMzMwNiAxMDEuNzk0IDU1LjczMzEgMTAyLjU4NyA1NS45NzYzQzEwMy40MTEgNTYuMjM0OCAxMDQuMTM1IDU2LjI0MiAxMDQuNzYgNTUuOTk5MUMxMDUuMzg2IDU1Ljc1NTkgMTA1LjkzMSA1NS4zNTMxIDEwNi4zOTYgNTQuNzkxQzEwNi44NjEgNTQuMjI4OSAxMDcuMjQyIDUzLjU0OSAxMDcuNTQgNTIuNzUxMkMxMDcuODM3IDUxLjk1MzQgMTA4LjA3MyA1MS4xMjE1IDEwOC4yNDkgNTAuMjU1NUMxMDguNDI0IDQ5LjM4OTQgMTA4LjUzNSA0OC41Mzc5IDEwOC41OCA0Ny43MDI4QzEwOC42MjYgNDYuODY2OCAxMDguNjI2IDQ2LjEyMTkgMTA4LjU4IDQ1LjQ2ODdDMTA5Ljg5MiA0NC45MjE5IDExMC45NjcgNDQuMjMwNSAxMTEuODA2IDQzLjM5NDVDMTEyLjY0NSA0Mi41NTk0IDExMy4zMzggNDEuNjc3OCAxMTMuODg3IDQwLjc1MDdDMTE0LjA1NSA0MC41MjI5IDExNC4xMTIgNDAuMjQ5MyAxMTQuMDU5IDM5LjkzMDRDMTE0LjAwNiAzOS42MTExIDExMy44NzYgMzkuMzM3NiAxMTMuNjcgMzkuMTA5N1pcIiBmaWxsPVwiIzBEMEMyM1wiLz5cclxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE0Mi41MyAzNy42NTE1QzE0Mi41NzUgMzcuMzAyMiAxNDIuNjQ0IDM2LjkzMzUgMTQyLjczNSAzNi41NDZDMTQyLjgyNyAzNi4xNTg1IDE0Mi45NDEgMzUuNzgyMyAxNDMuMDc5IDM1LjQxNzdDMTQzLjIxNiAzNS4wNTMxIDE0My4zNzYgMzQuNzM3OSAxNDMuNTU5IDM0LjQ3MThDMTQzLjc0MiAzNC4yMDYxIDE0My45MzcgMzQuMDE2MSAxNDQuMTQyIDMzLjkwMTlDMTQ0LjM0OCAzMy43ODgzIDE0NC41NTggMzMuNzk5NSAxNDQuNzcxIDMzLjkzNkMxNDUgMzQuMDczMSAxNDUuMTQxIDM0LjM2MTcgMTQ1LjE5NSAzNC44MDIxQzE0NS4yNDggMzUuMjQzMyAxNDUuMTk1IDM1LjcxNDEgMTQ1LjAzNCAzNi4yMTU1QzE0NC44NzQgMzYuNzE3MiAxNDQuNTg4IDM3LjE4NzkgMTQ0LjE3NyAzNy42Mjg2QzE0My43NjUgMzguMDY5NiAxNDMuMjA4IDM4LjM1NzkgMTQyLjUwNyAzOC40OTQ3QzE0Mi40NzYgMzguMjgyNCAxNDIuNDg0IDM4LjAwMTEgMTQyLjUzIDM3LjY1MTVaTTE1MC40NTYgMzguNTg1N0MxNTAuMjA0IDM4LjUxMDMgMTQ5Ljk2NCAzOC41MDI1IDE0OS43MzUgMzguNTYzMkMxNDkuNTA2IDM4LjYyMzkgMTQ5LjM2MSAzOC43ODM1IDE0OS4zMDEgMzkuMDQyQzE0OS4xNzggMzkuNTI4MSAxNDguOTg0IDQwLjAyNTggMTQ4LjcxNyA0MC41MzQ3QzE0OC40NSA0MS4wNDM5IDE0OC4xMjIgNDEuNTI2MiAxNDcuNzM0IDQxLjk4MjJDMTQ3LjM0NSA0Mi40MzggMTQ2LjkwNiA0Mi44NDA4IDE0Ni40MTggNDMuMTkwMUMxNDUuOTMgNDMuNTM5NyAxNDUuNDE5IDQzLjc5MDQgMTQ0Ljg4NiA0My45NDIyQzE0NC4zNTEgNDQuMTA5NiAxNDMuOTEgNDQuMTI4NCAxNDMuNTU5IDQzLjk5OTFDMTQzLjIwOCA0My44NzA1IDE0Mi45MyA0My42NDk4IDE0Mi43MjQgNDMuMzM4NEMxNDIuNTE4IDQzLjAyNyAxNDIuMzY5IDQyLjY1MDggMTQyLjI3OCA0Mi4yMTAxQzE0Mi4xODYgNDEuNzY5NCAxNDIuMTMzIDQxLjMxMzcgMTQyLjExOCA0MC44NDI0QzE0Mi45ODcgNDAuOTAzNCAxNDMuNzYxIDQwLjc0NzggMTQ0LjQ0IDQwLjM3NTFDMTQ1LjExOCA0MC4wMDMyIDE0NS42OTQgMzkuNTA5IDE0Ni4xNjcgMzguODkzN0MxNDYuNjM5IDM4LjI3ODQgMTQ2Ljk5OCAzNy41ODcgMTQ3LjI0MiAzNi44MTk1QzE0Ny40ODUgMzYuMDUyNCAxNDcuNjIzIDM1LjI4ODcgMTQ3LjY1MyAzNC41Mjg4QzE0Ny42NjkgMzMuODE0NiAxNDcuNTYyIDMzLjIxMDggMTQ3LjMzMyAzMi43MTY5QzE0Ny4xMDUgMzIuMjIzMyAxNDYuNzk2IDMxLjgzOSAxNDYuNDA3IDMxLjU2NThDMTQ2LjAxOCAzMS4yOTIyIDE0NS41NzIgMzEuMTMyNiAxNDUuMDY5IDMxLjA4NzJDMTQ0LjU2NiAzMS4wNDE1IDE0NC4wNTQgMzEuMTEgMTQzLjUzNiAzMS4yOTIyQzE0Mi45MSAzMS41MDUgMTQyLjM4MSAzMS44NTA2IDE0MS45NDYgMzIuMzI5NEMxNDEuNTEyIDMyLjgwOCAxNDEuMTQ5IDMzLjM2MjkgMTQwLjg2IDMzLjk5MzNDMTQwLjU3IDM0LjYyMzkgMTQwLjM0MSAzNS4zMDM4IDE0MC4xNzMgMzYuMDMzQzE0MC4wMDUgMzYuNzYyNiAxMzkuODgzIDM3LjQ4MDYgMTM5LjgwNyAzOC4xODczQzEzOS43MzkgMzguODIxNCAxMzkuNzAyIDM5LjQyNzggMTM5LjY4OSA0MC4wMTNDMTM5LjY1NyA0MC4wODc0IDEzOS42MjUgNDAuMTU4OCAxMzkuNTkgNDAuMjM4M0MxMzkuMzU0IDQwLjc3ODIgMTM5LjA3OSA0MS4zMDYyIDEzOC43NjYgNDEuODIyNkMxMzguNDU0IDQyLjMzOTQgMTM4LjEwNyA0Mi43NzI1IDEzNy43MjYgNDMuMTIxOEMxMzcuMzQ0IDQzLjQ3MTQgMTM2Ljk0OCA0My41OTI5IDEzNi41MzYgNDMuNDg2NUMxMzYuMjkyIDQzLjQyNiAxMzYuMTU5IDQzLjE0NDQgMTM2LjEzNiA0Mi42NDMzQzEzNi4xMTMgNDIuMTQxNiAxMzYuMTM5IDQxLjUxODcgMTM2LjIxNiA0MC43NzQxQzEzNi4yOTIgNDAuMDI5OCAxMzYuMzggMzkuMjIzOSAxMzYuNDc5IDM4LjM1NzlDMTM2LjU3OCAzNy40OTE4IDEzNi42MjggMzYuNjY0IDEzNi42MjggMzUuODczN0MxMzYuNjI4IDM1LjE4OTggMTM2LjQ5OCAzNC41MzI5IDEzNi4yMzkgMzMuOTAxOUMxMzUuOTc5IDMzLjI3MTggMTM1LjYyNSAzMi43NDczIDEzNS4xNzUgMzIuMzI5NEMxMzQuNzI1IDMxLjkxMTMgMTM0LjIwMyAzMS42MzQgMTMzLjYwOCAzMS40OTc1QzEzMy4wMTMgMzEuMzYwNSAxMzIuMzczIDMxLjQ1MTggMTMxLjY4NyAzMS43NzA4QzEzMSAzMi4wOSAxMzAuNDU1IDMyLjUzODIgMTMwLjA1MSAzMy4xMTU3QzEyOS42NDcgMzMuNjkzNCAxMjkuMjc3IDM0LjMwMDkgMTI4Ljk0MiAzNC45MzkxQzEyOC44MTkgMzQuNDUyOCAxMjguNjQxIDM0LjAwMTEgMTI4LjQwNCAzMy41ODNDMTI4LjE2NyAzMy4xNjUxIDEyNy44NzggMzIuODAwNSAxMjcuNTM1IDMyLjQ4ODhDMTI3LjE5MSAzMi4xNzc2IDEyNi44MDYgMzEuOTM0NCAxMjYuMzggMzEuNzU5NUMxMjUuOTUzIDMxLjU4NTEgMTI1LjUwMiAzMS40OTc1IDEyNS4wMyAzMS40OTc1QzEyNC41NzIgMzEuNDk3NSAxMjQuMTQ5IDMxLjU4NTEgMTIzLjc2IDMxLjc1OTVDMTIzLjM3MSAzMS45MzQ0IDEyMy4wMTcgMzIuMTU4MyAxMjIuNjk2IDMyLjQzMThDMTIyLjM3NiAzMi43MDU2IDEyMi4wODcgMzMuMDEzIDEyMS44MjcgMzMuMzU1MUMxMjEuNTY4IDMzLjY5NjkgMTIxLjMzOSAzNC4wMzUyIDEyMS4xNDEgMzQuMzY5MkMxMjEuMTEgMzMuOTc0MiAxMjEuMDc2IDMzLjYyODYgMTIxLjAzOCAzMy4zMzJDMTIxIDMzLjAzNTkgMTIwLjkzMSAzMi43ODUyIDEyMC44MzIgMzIuNTgwMUMxMjAuNzMzIDMyLjM3NDggMTIwLjU5MiAzMi4yMTkzIDEyMC40MDkgMzIuMTEyOUMxMjAuMjI2IDMyLjAwNjcgMTE5Ljk2NyAzMS45NTMyIDExOS42MzIgMzEuOTUzMkMxMTkuNDY0IDMxLjk1MzIgMTE5LjI5NiAzMS45ODc0IDExOS4xMjggMzIuMDU1NkMxMTguOTYgMzIuMTI0MSAxMTguODExIDMyLjIxOTMgMTE4LjY4MiAzMi4zNDA3QzExOC41NTIgMzIuNDYyNyAxMTguNDUzIDMyLjYxMDUgMTE4LjM4NSAzMi43ODUyQzExOC4zMTYgMzIuOTU5OCAxMTguMjk3IDMzLjE2MTQgMTE4LjMyNyAzMy4zODkyQzExOC4zNDIgMzMuNTU2NiAxMTguMzg1IDMzLjc1NzYgMTE4LjQ1MyAzMy45OTMzQzExOC41MjIgMzQuMjI4OSAxMTguNTg3IDM0LjUzNjkgMTE4LjY0OCAzNC45MTYzQzExOC43MDggMzUuMjk2MiAxMTguNzU4IDM1Ljc1NiAxMTguNzk2IDM2LjI5NTNDMTE4LjgzNCAzNi44MzQ5IDExOC44NDYgMzcuNDk1OSAxMTguODMxIDM4LjI3ODRDMTE4LjgxNSAzOS4wNjExIDExOC43NTggMzkuOTc2MyAxMTguNjU5IDQxLjAyNDhDMTE4LjU2IDQyLjA3MzMgMTE4LjQwMyA0My4yODkgMTE4LjE5IDQ0LjY3MTRDMTE4LjE2IDQ0Ljk5MDcgMTE4LjI4MiA0NS4yNDkyIDExOC41NTYgNDUuNDQ2N0MxMTguODMxIDQ1LjY0MzkgMTE5LjE0MyA0NS43NTc4IDExOS40OTQgNDUuNzg4NUMxMTkuODQ1IDQ1LjgxODggMTIwLjE3NyA0NS43NTc4IDEyMC40ODkgNDUuNjA2M0MxMjAuODAyIDQ1LjQ1MzkgMTIwLjk4MSA0NS4xODgyIDEyMS4wMjcgNDQuODA4NUMxMjEuMDcyIDQ0LjA5NDMgMTIxLjE2IDQzLjMzNDcgMTIxLjI5IDQyLjUyOUMxMjEuNDE5IDQxLjcyNCAxMjEuNTc5IDQwLjkyNjIgMTIxLjc3IDQwLjEzNTlDMTIxLjk2MSAzOS4zNDYgMTIyLjE3OCAzOC41OTM4IDEyMi40MjIgMzcuODc5M0MxMjIuNjY2IDM3LjE2NTEgMTIyLjkzNyAzNi41MzQ3IDEyMy4yMzQgMzUuOTg3NkMxMjMuNTMyIDM1LjQ0MDUgMTIzLjg0IDM1LjAwMzkgMTI0LjE2MSAzNC42NzcxQzEyNC40ODEgMzQuMzUwNCAxMjQuODE2IDM0LjE4NyAxMjUuMTY3IDM0LjE4N0MxMjUuNTk0IDM0LjE4NyAxMjUuOTI2IDM0LjM4MDUgMTI2LjE2MiAzNC43Njc5QzEyNi4zOTggMzUuMTU1NyAxMjYuNTY2IDM1LjY1MzYgMTI2LjY2NiAzNi4yNjA5QzEyNi43NjUgMzYuODY5IDEyNi44MSAzNy41MzQxIDEyNi44MDMgMzguMjU1NUMxMjYuNzk1IDM4Ljk3NzMgMTI2Ljc2NSAzOS42NzI0IDEyNi43MTEgNDAuMzQxQzEyNi42NTggNDEuMDA5OCAxMjYuNTk3IDQxLjYwNiAxMjYuNTI4IDQyLjEzMDNDMTI2LjQ2IDQyLjY1NDUgMTI2LjQxIDQzLjAxNTcgMTI2LjM4IDQzLjIxMjlDMTI2LjM4IDQzLjU2MjUgMTI2LjUxMyA0My44Mzk1IDEyNi43OCA0NC4wNDQ4QzEyNy4wNDYgNDQuMjQ5OCAxMjcuMzQ0IDQ0LjM3MTYgMTI3LjY3MiA0NC40MDk1QzEyOCA0NC40NDc2IDEyOC4zMDkgNDQuMzg2NiAxMjguNTk4IDQ0LjIyN0MxMjguODg4IDQ0LjA2NzQgMTI5LjA1NiA0My43OTgyIDEyOS4xMDIgNDMuNDE3OUMxMjkuMjU0IDQyLjMyNCAxMjkuNDY0IDQxLjIyNjQgMTI5LjczMSA0MC4xMjQ3QzEyOS45OTcgMzkuMDIzIDEzMC4zMDMgMzguMDM1NSAxMzAuNjQ2IDM3LjE2MTZDMTMwLjk4OSAzNi4yODc4IDEzMS4zNyAzNS41NzM1IDEzMS43OSAzNS4wMTg5QzEzMi4yMDkgMzQuNDY0NiAxMzIuNjU1IDM0LjE4NyAxMzMuMTI4IDM0LjE4N0MxMzMuMzcxIDM0LjE4NyAxMzMuNTU5IDM0LjM1NDQgMTMzLjY4OCAzNC42ODg0QzEzMy44MTggMzUuMDIyNyAxMzMuODgzIDM1LjQ3ODQgMTMzLjg4MyAzNi4wNTU5QzEzMy44ODMgMzYuNDgxNSAxMzMuODQ4IDM2LjkxODQgMTMzLjc4IDM3LjM2NjZDMTMzLjcxMSAzNy44MTQ4IDEzMy42MzEgMzguMjc4NCAxMzMuNTQgMzguNzU2OUMxMzMuNDQ4IDM5LjIzNTggMTMzLjM2OCAzOS43MjU2IDEzMy4yOTkgNDAuMjI3QzEzMy4yMzEgNDAuNzI4NyAxMzMuMTk2IDQxLjI1MjcgMTMzLjE5NiA0MS43OTk4QzEzMy4xOTYgNDIuMTc5NyAxMzMuMjM1IDQyLjYyMDQgMTMzLjMxMSA0My4xMjE4QzEzMy4zODcgNDMuNjIyOSAxMzMuNTMyIDQ0LjA5ODMgMTMzLjc0NSA0NC41NDYyQzEzMy45NTkgNDQuOTk0NyAxMzQuMjUyIDQ1LjM3NDQgMTM0LjYyNiA0NS42ODU4QzEzNSA0NS45OTczIDEzNS40NzYgNDYuMTUzMSAxMzYuMDU2IDQ2LjE1MzFDMTM2LjkyNSA0Ni4xNTMxIDEzNy42OTUgNDUuOTY2OSAxMzguMzY2IDQ1LjU5NDdDMTM5LjAzNyA0NS4yMjI2IDEzOS42MTMgNDQuNzM2NSAxNDAuMDkzIDQ0LjEzNjJDMTQwLjExOCA0NC4xMDQ3IDE0MC4xNDEgNDQuMDcxMSAxNDAuMTY1IDQ0LjAzOTlDMTQwLjIwMiA0NC4xMjg3IDE0MC4yMzUgNDQuMjIyNyAxNDAuMjc2IDQ0LjMwNzFDMTQwLjYwNCA0NC45NzU2IDE0MS4wNSA0NS40OTIxIDE0MS42MTUgNDUuODU3QzE0Mi4xNzggNDYuMjIxNiAxNDIuODQyIDQ2LjQyMjkgMTQzLjYwNSA0Ni40NjExQzE0NC4zNjcgNDYuNDk4NyAxNDUuMTk4IDQ2LjM1ODEgMTQ2LjA5OCA0Ni4wMzkyQzE0Ni43NjkgNDUuNzk2IDE0Ny4zNTIgNDUuNDkyMSAxNDcuODQ4IDQ1LjEyNzVDMTQ4LjM0MyA0NC43NjI4IDE0OC43ODkgNDQuMzE4NCAxNDkuMTg2IDQzLjc5NDFDMTQ5LjU4MyA0My4yNjk5IDE0OS45NDUgNDIuNjY1OCAxNTAuMjczIDQxLjk4MjJDMTUwLjYwMSA0MS4yOTgxIDE1MC45MzIgNDAuNTE1OSAxNTEuMjY4IDM5LjYzNDJDMTUxLjMyOSAzOS4zOTE2IDE1MS4yNzIgMzkuMTc1MSAxNTEuMDk3IDM4Ljk4NDhDMTUwLjkyMSAzOC43OTUxIDE1MC43MDggMzguNjYyMSAxNTAuNDU2IDM4LjU4NTdaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XHJcbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNjIuODg3IDM2LjA0MzRDMTYyLjgxIDM2LjQ5MTggMTYyLjcwNyAzNi45ODYgMTYyLjU3OCAzNy41MjVDMTYyLjQ0OCAzOC4wNjQ2IDE2Mi4yODQgMzguNjIzIDE2Mi4wODYgMzkuMjAwNEMxNjEuODg4IDM5Ljc3NzkgMTYxLjY0NCA0MC4yOTg0IDE2MS4zNTQgNDAuNzYxNkMxNjEuMDY0IDQxLjIyNTQgMTYwLjczMyA0MS41OTM1IDE2MC4zNTkgNDEuODY3MUMxNTkuOTg1IDQyLjE0MDYgMTU5LjU1NSA0Mi4yNTQ2IDE1OS4wNjYgNDIuMjA4OUMxNTguODIyIDQyLjE3ODggMTU4LjYzNSA0Mi4wMTE3IDE1OC41MDYgNDEuNzA3NUMxNTguMzc2IDQxLjQwMzggMTU4LjMwOCA0MS4wMTYxIDE1OC4zIDQwLjU0NUMxNTguMjkyIDQwLjA3NDMgMTU4LjMzNCAzOS41NTc1IDE1OC40MjYgMzguOTk1MUMxNTguNTE3IDM4LjQzMzMgMTU4LjY1OCAzNy44ODIxIDE1OC44NDkgMzcuMzQyNkMxNTkuMDQgMzYuODAzNiAxNTkuMjcyIDM2LjMwNTYgMTU5LjU0NyAzNS44NDk2QzE1OS44MjEgMzUuMzkzOSAxNjAuMTM4IDM1LjA0MDUgMTYwLjQ5NiAzNC43ODk4QzE2MC44NTQgMzQuNTM5MSAxNjEuMjQ3IDM0LjQyMTcgMTYxLjY3NCAzNC40MzY1QzE2Mi4xMDEgMzQuNDUxOCAxNjIuNTU5IDM0LjY2NDMgMTYzLjA0NyAzNS4wNzQ3QzE2My4wMTYgMzUuMjcyNSAxNjIuOTYzIDM1LjU5NTQgMTYyLjg4NyAzNi4wNDM0Wk0xNzEuMDE5IDM3Ljc4N0MxNzAuNzgyIDM3LjY2NTYgMTcwLjUzOCAzNy42MzkyIDE3MC4yODcgMzcuNzA3NUMxNzAuMDM1IDM3Ljc3NTcgMTY5Ljg1NiAzOC4wMDc2IDE2OS43NDkgMzguNDAyNkMxNjkuNjg4IDM4LjgyODMgMTY5LjU1MSAzOS4zMjk0IDE2OS4zMzggMzkuOTA2OUMxNjkuMTI0IDQwLjQ4NDMgMTY4Ljg2MSA0MS4wMzE3IDE2OC41NDggNDEuNTQ3OEMxNjguMjM2IDQyLjA2NDYgMTY3Ljg3NyA0Mi40OTQgMTY3LjQ3MyA0Mi44MzU4QzE2Ny4wNjkgNDMuMTc3OCAxNjYuNjM4IDQzLjMzMzcgMTY2LjE4MSA0My4zMDI4QzE2NS43OTkgNDMuMjcyNyAxNjUuNTMyIDQzLjA3OSAxNjUuMzggNDIuNzIxOEMxNjUuMjI3IDQyLjM2NDcgMTY1LjE0NyA0MS45MTY4IDE2NS4xNCA0MS4zNzY5QzE2NS4xMzIgNDAuODM4IDE2NS4xODYgNDAuMjMwMSAxNjUuMyAzOS41NTM4QzE2NS40MTQgMzguODc3NyAxNjUuNTUyIDM4LjIwNTQgMTY1LjcxMiAzNy41MzYzQzE2NS44NzIgMzYuODY4IDE2Ni4wMzYgMzYuMjI1OCAxNjYuMjA0IDM1LjYxMDVDMTY2LjM3MSAzNC45OTUxIDE2Ni41MDggMzQuNDc0NyAxNjYuNjE2IDM0LjA0OTNDMTY2LjczOCAzMy42NjkzIDE2Ni42OTkgMzMuMzQ2NiAxNjYuNTAxIDMzLjA4MDNDMTY2LjMwMyAzMi44MTQ5IDE2Ni4wNTUgMzIuNjI0NiAxNjUuNzU4IDMyLjUxMDdDMTY1LjQ2IDMyLjM5NjcgMTY1LjE1OSAzMi4zNjY0IDE2NC44NTQgMzIuNDE5NkMxNjQuNTQ5IDMyLjQ3MjggMTY0LjM1MSAzMi42MzYyIDE2NC4yNTkgMzIuOTA5NEMxNjMuMzU5IDMyLjEzNDUgMTYyLjQ5NCAzMS43MTY2IDE2MS42NjMgMzEuNjU1OUMxNjAuODMxIDMxLjU5NTIgMTYwLjA2NSAzMS43Nzc2IDE1OS4zNjQgMzIuMjAzQzE1OC42NjIgMzIuNjI4NCAxNTguMDQxIDMzLjI0MzcgMTU3LjUgMzQuMDQ5M0MxNTYuOTU4IDM0Ljg1NDkgMTU2LjUyIDM1LjczMjIgMTU2LjE4NCAzNi42ODE4QzE1NS44NDkgMzcuNjMxNCAxNTUuNjM5IDM4LjYwMDQgMTU1LjU1NSAzOS41ODc5QzE1NS40NzEgNDAuNTc1NyAxNTUuNTM2IDQxLjQ3NjEgMTU1Ljc1IDQyLjI4OUMxNTUuOTYzIDQzLjEwMTggMTU2LjM0IDQzLjc2NjkgMTU2Ljg4MiA0NC4yODNDMTU3LjQyMyA0NC43OTk4IDE1OC4xNTkgNDUuMDU4MyAxNTkuMDg5IDQ1LjA1ODNDMTU5LjUwMSA0NS4wNTgzIDE1OS44OTggNDQuOTc0NyAxNjAuMjc5IDQ0LjgwNzZDMTYwLjY2IDQ0LjY0MDEgMTYxLjAxMSA0NC40NDI2IDE2MS4zMzEgNDQuMjE0OEMxNjEuNjUxIDQzLjk4NjkgMTYxLjkzMyA0My43NDc1IDE2Mi4xNzggNDMuNDk2OEMxNjIuNDIxIDQzLjI0NjEgMTYyLjYxMiA0My4wMzczIDE2Mi43NDkgNDIuODY5OUMxNjIuODU2IDQzLjQxNyAxNjMuMDMyIDQzLjg4MDggMTYzLjI3NiA0NC4yNjA1QzE2My41MTkgNDQuNjQwMSAxNjMuNzk4IDQ0Ljk1MjEgMTY0LjExMSA0NS4xOTQ4QzE2NC40MjMgNDUuNDM3NiAxNjQuNzUxIDQ1LjYxNjQgMTY1LjA5NCA0NS43MzA2QzE2NS40MzcgNDUuODQ0NSAxNjUuNzY5IDQ1LjkwMTUgMTY2LjA4OSA0NS45MDE1QzE2Ni44MDYgNDUuOTAxNSAxNjcuNDc3IDQ1LjY1ODMgMTY4LjEwMiA0NS4xNzE5QzE2OC43MjcgNDQuNjg2MSAxNjkuMjg4IDQ0LjA4OTMgMTY5Ljc4NCA0My4zODI5QzE3MC4yNzkgNDIuNjc2MiAxNzAuNjg3IDQxLjkzMTkgMTcxLjAwNyA0MS4xNDkxQzE3MS4zMjggNDAuMzY2NiAxNzEuNTQxIDM5LjY3MTUgMTcxLjY0OCAzOS4wNjM0QzE3MS43NTUgMzguODM1NSAxNzEuNzM1IDM4LjU5NjQgMTcxLjU5MSAzOC4zNDU3QzE3MS40NDYgMzguMDk1IDE3MS4yNTUgMzcuOTA5IDE3MS4wMTkgMzcuNzg3WlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxyXG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMjEyLjE5NCA1MC4zNzAxQzIxMi4wNjQgNTAuODg2NiAyMTEuODYyIDUxLjMyMzggMjExLjU4NyA1MS42ODA2QzIxMS4zMTMgNTIuMDM3NyAyMTAuOTcgNTIuMjIzOSAyMTAuNTU4IDUyLjIzOTNDMjEwLjI5OSA1Mi4yNTQzIDIxMC4xMDEgNTIuMTE3NSAyMDkuOTYzIDUxLjgyODlDMjA5LjgyNiA1MS41NDAxIDIwOS43MzEgNTEuMTY3OSAyMDkuNjc4IDUwLjcxMjJDMjA5LjYyNCA1MC4yNTYyIDIwOS42MDEgNDkuNzQ3IDIwOS42MDkgNDkuMTg0OUMyMDkuNjE2IDQ4LjYyMjcgMjA5LjYzOSA0OC4wNjgxIDIwOS42NzggNDcuNTIxQzIwOS43MTUgNDYuOTc0MiAyMDkuNzYxIDQ2LjQ2NDcgMjA5LjgxNSA0NS45OTM5QzIwOS44NjggNDUuNTIyNiAyMDkuOTEgNDUuMTU4NiAyMDkuOTQgNDQuOUMyMTAuNDU5IDQ0Ljk2MDggMjEwLjg5IDQ1LjE4NDYgMjExLjIzMyA0NS41NzIzQzIxMS41NzYgNDUuOTU5OCAyMTEuODM5IDQ2LjQxOTMgMjEyLjAyMiA0Ni45NTE0QzIxMi4yMDUgNDcuNDgzMSAyMTIuMzEyIDQ4LjA1NjggMjEyLjM0MyA0OC42NzIyQzIxMi4zNzMgNDkuMjg3NSAyMTIuMzIzIDQ5Ljg1MzQgMjEyLjE5NCA1MC4zNzAxWk0yMDMuOTEzIDUwLjM3MDFDMjAzLjc4MyA1MC44ODY2IDIwMy41ODEgNTEuMzIzOCAyMDMuMzA3IDUxLjY4MDZDMjAzLjAzMiA1Mi4wMzc3IDIwMi42ODkgNTIuMjIzOSAyMDIuMjc3IDUyLjIzOTNDMjAyLjAxOCA1Mi4yNTQzIDIwMS44MiA1Mi4xMTc1IDIwMS42ODMgNTEuODI4OUMyMDEuNTQ1IDUxLjU0MDEgMjAxLjQ1IDUxLjE2NzkgMjAxLjM5NyA1MC43MTIyQzIwMS4zNDMgNTAuMjU2MiAyMDEuMzIgNDkuNzQ3IDIwMS4zMjggNDkuMTg0OUMyMDEuMzM2IDQ4LjYyMjcgMjAxLjM1OCA0OC4wNjgxIDIwMS4zOTcgNDcuNTIxQzIwMS40MzQgNDYuOTc0MiAyMDEuNDggNDYuNDY0NyAyMDEuNTM0IDQ1Ljk5MzlDMjAxLjU4NyA0NS41MjI2IDIwMS42MjkgNDUuMTU4NiAyMDEuNjYgNDQuOUMyMDIuMTc4IDQ0Ljk2MDggMjAyLjYwOSA0NS4xODQ2IDIwMi45NTIgNDUuNTcyM0MyMDMuMjk1IDQ1Ljk1OTggMjAzLjU1OCA0Ni40MTkzIDIwMy43NDEgNDYuOTUxNEMyMDMuOTI0IDQ3LjQ4MzEgMjA0LjAzMSA0OC4wNTY4IDIwNC4wNjIgNDguNjcyMkMyMDQuMDkyIDQ5LjI4NzUgMjA0LjA0MiA0OS44NTM0IDIwMy45MTMgNTAuMzcwMVpNMTk1LjQxNSAzNy40MjQxQzE5NS4zOTkgMzcuNzg4NCAxOTUuMzY1IDM4LjExMTQgMTk1LjMxMiAzOC4zOTI1QzE5NS4yNTggMzguNjc0MSAxOTUuMTg2IDM4Ljg1MjIgMTk1LjA5NSAzOC45MjgzQzE5NC45MjcgMzguODM2OSAxOTQuNzIxIDM4LjYwMTggMTk0LjQ3NyAzOC4yMjE2QzE5NC4yMzMgMzcuODQxOSAxOTQuMDQyIDM3LjQxMjIgMTkzLjkwNSAzNi45MzM2QzE5My43NjggMzYuNDU1MSAxOTMuNzI1IDM1Ljk4NDMgMTkzLjc3OSAzNS41MjA1QzE5My44MzIgMzUuMDU3MyAxOTQuMDczIDM0LjY5NjcgMTk0LjUgMzQuNDM3OUMxOTQuNjY3IDM0LjM0NjggMTk0LjgxMiAzNC4zODA5IDE5NC45MzQgMzQuNTQwNUMxOTUuMDU2IDM0LjcwMDEgMTk1LjE1NSAzNC45MzE4IDE5NS4yMzIgMzUuMjM1N0MxOTUuMzA4IDM1LjUzOTkgMTk1LjM2MSAzNS44ODkyIDE5NS4zOTIgMzYuMjg0MkMxOTUuNDIyIDM2LjY3OTUgMTk1LjQzIDM3LjA1OTEgMTk1LjQxNSAzNy40MjQxWk0xOTMuMzkgNDEuOTcxMUMxOTMuMTU0IDQyLjIyMTUgMTkyLjg5IDQyLjQzODEgMTkyLjYwMSA0Mi42MjA2QzE5Mi4zMTEgNDIuODAzIDE5Mi4wMTQgNDIuOTM5OCAxOTEuNzA5IDQzLjAzMDlDMTkxLjQwNCA0My4xMjIzIDE5MS4xMjkgNDMuMTQ0OCAxOTAuODg1IDQzLjA5OTFDMTkwLjE5OSA0Mi45NjI3IDE4OS42NzMgNDIuNjY2IDE4OS4zMDcgNDIuMjEwM0MxODguOTQxIDQxLjc1NDUgMTg4LjcwOCA0MS4yMTkgMTg4LjYwOSA0MC42MDM3QzE4OC41MSAzOS45ODgxIDE4OC41MjEgMzkuMzMwOCAxODguNjQ0IDM4LjYzMTlDMTg4Ljc2NSAzNy45MzMgMTg4Ljk3MSAzNy4yODM1IDE4OS4yNjEgMzYuNjgzMkMxODkuNTUxIDM2LjA4MjkgMTg5LjkwMiAzNS41NjYyIDE5MC4zMTMgMzUuMTMzM0MxOTAuNzI1IDM0LjcwMDEgMTkxLjE3NSAzNC40MzA2IDE5MS42NjMgMzQuMzIzOUMxOTEuNDggMzUuMDk4OSAxOTEuNDE5IDM1LjkwMDcgMTkxLjQ4IDM2LjcyODZDMTkxLjU0MSAzNy41NTY4IDE5MS43MzkgMzguMzM1NSAxOTIuMDc1IDM5LjA2NDhDMTkyLjI4OCAzOS41MDYgMTkyLjU0NCAzOS45MDgyIDE5Mi44NDEgNDAuMjcyOUMxOTMuMTM5IDQwLjYzNzggMTkzLjUwMSA0MC45NDkyIDE5My45MjggNDEuMjA3NUMxOTMuODA2IDQxLjQ2NiAxOTMuNjI2IDQxLjcyMDQgMTkzLjM5IDQxLjk3MTFaTTIxOC43MDIgMzcuNjUxOUMyMTguNzQ3IDM3LjMwMjYgMjE4LjgxNiAzNi45MzM2IDIxOC45MDggMzYuNTQ2MkMyMTguOTk5IDM2LjE1OSAyMTkuMTE0IDM1Ljc4MjggMjE5LjI1MSAzNS40MTgxQzIxOS4zODggMzUuMDUzMiAyMTkuNTQ4IDM0LjczOCAyMTkuNzMxIDM0LjQ3MjNDMjE5LjkxNCAzNC4yMDY1IDIyMC4xMDggMzQuMDE2MyAyMjAuMzE0IDMzLjkwMjRDMjIwLjUyIDMzLjc4ODQgMjIwLjczIDMzLjc5OTcgMjIwLjk0MyAzMy45MzY1QzIyMS4xNzIgMzQuMDczNSAyMjEuMzEzIDM0LjM2MjEgMjIxLjM2NyAzNC44MDI1QzIyMS40MiAzNS4yNDM1IDIyMS4zNjcgMzUuNzE0MiAyMjEuMjA3IDM2LjIxNTlDMjIxLjA0NiAzNi43MTczIDIyMC43NjEgMzcuMTg4NCAyMjAuMzQ5IDM3LjYyODhDMjE5LjkzNyAzOC4wNyAyMTkuMzggMzguMzU4MyAyMTguNjc5IDM4LjQ5NTFDMjE4LjY0OCAzOC4yODI2IDIxOC42NTYgMzguMDAxNSAyMTguNzAyIDM3LjY1MTlaTTIyNy45MjEgMzcuNjUxOUMyMjcuOTY2IDM3LjMwMjYgMjI4LjAzNSAzNi45MzM2IDIyOC4xMjYgMzYuNTQ2MkMyMjguMjE4IDM2LjE1OSAyMjguMzMyIDM1Ljc4MjggMjI4LjQ3IDM1LjQxODFDMjI4LjYwNyAzNS4wNTMyIDIyOC43NjcgMzQuNzM4IDIyOC45NSAzNC40NzIzQzIyOS4xMzMgMzQuMjA2NSAyMjkuMzI4IDM0LjAxNjMgMjI5LjUzMyAzMy45MDI0QzIyOS43MzkgMzMuNzg4NCAyMjkuOTQ5IDMzLjc5OTcgMjMwLjE2MiAzMy45MzY1QzIzMC4zOTEgMzQuMDczNSAyMzAuNTMyIDM0LjM2MjEgMjMwLjU4NiAzNC44MDI1QzIzMC42MzkgMzUuMjQzNSAyMzAuNTg2IDM1LjcxNDIgMjMwLjQyNSAzNi4yMTU5QzIzMC4yNjUgMzYuNzE3MyAyMjkuOTc5IDM3LjE4ODQgMjI5LjU2OCAzNy42Mjg4QzIyOS4xNTYgMzguMDcgMjI4LjU5OSAzOC4zNTgzIDIyNy44OTggMzguNDk1MUMyMjcuODY3IDM4LjI4MjYgMjI3Ljg3NSAzOC4wMDE1IDIyNy45MjEgMzcuNjUxOVpNMjM2LjQ4OCAzOC45ODUyQzIzNi4zMTIgMzguNzk1NSAyMzYuMDk5IDM4LjY2MjUgMjM1Ljg0NyAzOC41ODYyQzIzNS41OTUgMzguNTEwNCAyMzUuMzU1IDM4LjUwMjkgMjM1LjEyNiAzOC41NjM2QzIzNC44OTcgMzguNjI0NCAyMzQuNzUyIDM4Ljc4NCAyMzQuNjkyIDM5LjA0MjJDMjM0LjU3IDM5LjUyODYgMjM0LjM3NSA0MC4wMjYyIDIzNC4xMDggNDAuNTM0OUMyMzMuODQxIDQxLjA0NDQgMjMzLjUxNCA0MS41MjY3IDIzMy4xMjUgNDEuOTgyNEMyMzIuNzM2IDQyLjQzODEgMjMyLjI5NyA0Mi44NDEyIDIzMS44MSA0My4xOTA1QzIzMS4zMjEgNDMuNTQwMSAyMzAuODEgNDMuNzkwOCAyMzAuMjc3IDQzLjk0MjNDMjI5Ljc0MyA0NC4xMTAxIDIyOS4zMDEgNDQuMTI4OSAyMjguOTUgNDMuOTk5NkMyMjguNTk5IDQzLjg3MDYgMjI4LjMyMSA0My42NTAzIDIyOC4xMTUgNDMuMzM4OUMyMjcuOTA5IDQzLjAyNzEgMjI3Ljc2MSA0Mi42NTEyIDIyNy42NjkgNDIuMjEwM0MyMjcuNTc4IDQxLjc2OTkgMjI3LjUyNCA0MS4zMTQyIDIyNy41MDkgNDAuODQyOEMyMjguMzc4IDQwLjkwMzggMjI5LjE1MiA0MC43NDgzIDIyOS44MzEgNDAuMzc1NUMyMzAuNTA5IDQwLjAwMzQgMjMxLjA4NSAzOS41MDkyIDIzMS41NTggMzguODkzOUMyMzIuMDMxIDM4LjI3ODggMjMyLjM4OSAzNy41ODc0IDIzMi42MzMgMzYuODJDMjMyLjg3NyAzNi4wNTI2IDIzMy4wMTQgMzUuMjg5MiAyMzMuMDQ1IDM0LjUyOTNDMjMzLjA2IDMzLjgxNSAyMzIuOTUzIDMzLjIxMSAyMzIuNzI0IDMyLjcxNzFDMjMyLjQ5NiAzMi4yMjM1IDIzMi4xODcgMzEuODM5NSAyMzEuNzk4IDMxLjU2NjJDMjMxLjQwOSAzMS4yOTI0IDIzMC45NjMgMzEuMTMzIDIzMC40NiAzMS4wODc0QzIyOS45NTcgMzEuMDQxNyAyMjkuNDQ1IDMxLjExMDUgMjI4LjkyNyAzMS4yOTI0QzIyOC4zMDIgMzEuNTA1NSAyMjcuNzcyIDMxLjg1MSAyMjcuMzM4IDMyLjMyOTZDMjI2LjkwMyAzMi44MDg1IDIyNi41NCAzMy4zNjM0IDIyNi4yNTEgMzMuOTkzNEMyMjUuOTYxIDM0LjYyNDQgMjI1LjczMiAzNS4zMDM5IDIyNS41NjQgMzYuMDMzNUMyMjUuMzk2IDM2Ljc2MjcgMjI1LjI3NCAzNy40ODEgMjI1LjE5OSAzOC4xODc0QzIyNS4xMjQgMzguODczIDIyNS4wODQgMzkuNTI5MiAyMjUuMDc1IDQwLjE1NzJDMjI1LjAxNyA0MC4yODI0IDIyNC45NTYgNDAuNDA4MiAyMjQuODg5IDQwLjUzNDlDMjI0LjYyMiA0MS4wNDQ0IDIyNC4yOTUgNDEuNTI2NyAyMjMuOTA2IDQxLjk4MjRDMjIzLjUxNyA0Mi40MzgxIDIyMy4wNzggNDIuODQxMiAyMjIuNTkxIDQzLjE5MDVDMjIyLjEwMiA0My41NDAxIDIyMS41OTIgNDMuNzkwOCAyMjEuMDU4IDQzLjk0MjNDMjIwLjUyNCA0NC4xMTAxIDIyMC4wODIgNDQuMTI4OSAyMTkuNzMxIDQzLjk5OTZDMjE5LjM4IDQzLjg3MDYgMjE5LjEwMiA0My42NTAzIDIxOC44OTYgNDMuMzM4OUMyMTguNjkxIDQzLjAyNzEgMjE4LjU0MiA0Mi42NTEyIDIxOC40NSA0Mi4yMTAzQzIxOC4zNTkgNDEuNzY5OSAyMTguMzA1IDQxLjMxNDIgMjE4LjI5IDQwLjg0MjhDMjE5LjE1OSA0MC45MDM4IDIxOS45MzMgNDAuNzQ4MyAyMjAuNjEyIDQwLjM3NTVDMjIxLjI5IDQwLjAwMzQgMjIxLjg2NiAzOS41MDkyIDIyMi4zMzkgMzguODkzOUMyMjIuODExIDM4LjI3ODggMjIzLjE3IDM3LjU4NzQgMjIzLjQxNCAzNi44MkMyMjMuNjU4IDM2LjA1MjYgMjIzLjc5NSAzNS4yODkyIDIyMy44MjYgMzQuNTI5M0MyMjMuODQxIDMzLjgxNSAyMjMuNzM0IDMzLjIxMSAyMjMuNTA2IDMyLjcxNzFDMjIzLjI3NyAzMi4yMjM1IDIyMi45NjggMzEuODM5NSAyMjIuNTc5IDMxLjU2NjJDMjIyLjE5IDMxLjI5MjQgMjIxLjc0NCAzMS4xMzMgMjIxLjI0MSAzMS4wODc0QzIyMC43MzggMzEuMDQxNyAyMjAuMjI3IDMxLjExMDUgMjE5LjcwOCAzMS4yOTI0QzIxOS4wODMgMzEuNTA1NSAyMTguNTUzIDMxLjg1MSAyMTguMTE5IDMyLjMyOTZDMjE3LjY4NCAzMi44MDg1IDIxNy4zMjEgMzMuMzYzNCAyMTcuMDMyIDMzLjk5MzRDMjE2Ljc0MiAzNC42MjQ0IDIxNi41MTMgMzUuMzAzOSAyMTYuMzQ2IDM2LjAzMzVDMjE2LjE3OCAzNi43NjI3IDIxNi4wNTYgMzcuNDgxIDIxNS45OCAzOC4xODc0QzIxNS45MzYgMzguNTg1OSAyMTUuOTA3IDM4Ljk3MjIgMjE1Ljg4NiAzOS4zNTE2QzIxNS43MzkgMzkuNDc2NSAyMTUuNTk1IDM5LjYwMjMgMjE1LjQ0MiAzOS43MjU4QzIxNC45MTYgNDAuMTUxNCAyMTQuMzYzIDQwLjUzNDkgMjEzLjc4NCA0MC44NzY5QzIxMy4yMDQgNDEuMjE5IDIxMi42MDEgNDEuNTAwMSAyMTEuOTc3IDQxLjcyMDRDMjExLjM1MSA0MS45NDA4IDIxMC43MSA0Mi4wNzM4IDIxMC4wNTUgNDIuMTE5MkwyMTEuNDczIDI2Ljk4NDdDMjExLjU2NSAyNi42NjU1IDIxMS41MTkgMjYuMzg0NyAyMTEuMzM2IDI2LjE0MTVDMjExLjE1MyAyNS44OTgzIDIxMC45MTYgMjUuNzMxMiAyMTAuNjI3IDI1LjY0MDFDMjEwLjMzNyAyNS41NDg4IDIxMC4wMjggMjUuNTU2NiAyMDkuNyAyNS42NjI3QzIwOS4zNzIgMjUuNzY5NCAyMDkuMTAyIDI2LjAxMjYgMjA4Ljg4OCAyNi4zOTE5QzIwOC43ODEgMjYuOTY5NyAyMDguNjcxIDI3Ljc1OTcgMjA4LjU1NyAyOC43NjI1QzIwOC40NDIgMjkuNzY1MyAyMDguMzI4IDMwLjg1OTUgMjA4LjIxMyAzMi4wNDQ4QzIwOC4wOTkgMzMuMjMgMjA3Ljk4NSAzNC40NTMyIDIwNy44NyAzNS43MTQyQzIwNy43NTYgMzYuOTc1OSAyMDcuNjU3IDM4LjE1MzMgMjA3LjU3MyAzOS4yNDcyQzIwNy41NjkgMzkuMjk1OCAyMDcuNTY2IDM5LjMzOTggMjA3LjU2MiAzOS4zODc4QzIwNy40MjkgMzkuNTAwNSAyMDcuMjk5IDM5LjYxNDIgMjA3LjE2MSAzOS43MjU4QzIwNi42MzUgNDAuMTUxNCAyMDYuMDgyIDQwLjUzNDkgMjA1LjUwMyA0MC44NzY5QzIwNC45MjMgNDEuMjE5IDIwNC4zMjEgNDEuNTAwMSAyMDMuNjk2IDQxLjcyMDRDMjAzLjA3IDQxLjk0MDggMjAyLjQyOSA0Mi4wNzM4IDIwMS43NzQgNDIuMTE5MkwyMDMuMTkyIDI2Ljk4NDdDMjAzLjI4NCAyNi42NjU1IDIwMy4yMzggMjYuMzg0NyAyMDMuMDU1IDI2LjE0MTVDMjAyLjg3MiAyNS44OTgzIDIwMi42MzUgMjUuNzMxMiAyMDIuMzQ2IDI1LjY0MDFDMjAyLjA1NiAyNS41NDg4IDIwMS43NDcgMjUuNTU2NiAyMDEuNDE5IDI1LjY2MjdDMjAxLjA5MSAyNS43Njk0IDIwMC44MjEgMjYuMDEyNiAyMDAuNjA3IDI2LjM5MTlDMjAwLjUwMSAyNi45Njk3IDIwMC4zOSAyNy43NTk3IDIwMC4yNzYgMjguNzYyNUMyMDAuMTYxIDI5Ljc2NTMgMjAwLjA0NyAzMC44NTk1IDE5OS45MzMgMzIuMDQ0OEMxOTkuODE4IDMzLjIzIDE5OS43MDQgMzQuNDUzMiAxOTkuNTg5IDM1LjcxNDJDMTk5LjQ3NSAzNi45NzU5IDE5OS4zNzYgMzguMTUzMyAxOTkuMjkyIDM5LjI0NzJDMTk5LjI5IDM5LjI2OTIgMTk5LjI4OSAzOS4yODkxIDE5OS4yODcgMzkuMzExMUMxOTkuMDQ4IDM5LjQyMTkgMTk4Ljc4NiAzOS41MTkgMTk4LjUwMyAzOS42MDA2QzE5OC4yMTMgMzkuNjg0NCAxOTcuODg1IDM5LjczMzkgMTk3LjUxOSAzOS43NDg5QzE5Ny41OCAzOS40NzUxIDE5Ny42MyAzOS4xNzEyIDE5Ny42NjggMzguODM2OUMxOTcuNzA2IDM4LjUwMjkgMTk3LjczNyAzOC4xNTMzIDE5Ny43NiAzNy43ODg0QzE5Ny43ODIgMzcuNDI0MSAxOTcuNzkgMzcuMDU5MSAxOTcuNzgyIDM2LjY5NDVDMTk3Ljc3NCAzNi4zMjk2IDE5Ny43NTUgMzUuOTk1NiAxOTcuNzI1IDM1LjY5MTRDMTk3LjY0OSAzNS4wMzg1IDE5Ny41MDggMzQuNDE5MSAxOTcuMzAyIDMzLjgzMzhDMTk3LjA5NiAzMy4yNDkxIDE5Ni44MTggMzIuNzU5MyAxOTYuNDY3IDMyLjM2MzdDMTk2LjExNiAzMS45Njg3IDE5NS42NzggMzEuNzAyNyAxOTUuMTUxIDMxLjU2NjJDMTk0LjYyNiAzMS40Mjk0IDE5NC4wMTIgMzEuNDc0OCAxOTMuMzEgMzEuNzAyN0MxOTIuMjczIDMxLjU2NjIgMTkxLjMzOSAzMS42NjEzIDE5MC41MDggMzEuOTg3OEMxODkuNjc3IDMyLjMxNDkgMTg4Ljk1NiAzMi43ODk0IDE4OC4zNDYgMzMuNDEyMkMxODcuNzM2IDM0LjAzNTcgMTg3LjIzNyAzNC43Njg0IDE4Ni44NDggMzUuNjExOUMxODYuNDU5IDM2LjQ1NTEgMTg2LjIgMzcuMzIxNCAxODYuMDcgMzguMjFDMTg2LjAxNSAzOC41ODY4IDE4NS45ODggMzguOTYxOCAxODUuOTggMzkuMzM2QzE4NS43NDQgMzkuODE3NyAxODUuNDg2IDQwLjIzODggMTg1LjIwMSA0MC41OTIxQzE4NC43OTcgNDEuMDkzNSAxODQuMzc3IDQxLjUwMzggMTgzLjk0MyA0MS44MjI4QzE4My41MDggNDIuMTQyIDE4My4wNzcgNDIuMzg1MiAxODIuNjUgNDIuNTUyM0MxODIuMjIzIDQyLjcxOTggMTgxLjg0MiA0Mi44MzM3IDE4MS41MDcgNDIuODk0MUMxODEuMTEgNDIuOTcwMiAxODAuNzI5IDQyLjk3OCAxODAuMzYzIDQyLjkxN0MxNzkuOTk3IDQyLjg1NjUgMTc5LjY2MSA0Mi42ODE2IDE3OS4zNTcgNDIuMzkyN0MxNzkuMTEyIDQyLjE4MDIgMTc4LjkyNSA0MS44MzgxIDE3OC43OTYgNDEuMzY3MUMxNzguNjY2IDQwLjg5NiAxNzguNTkgNDAuMzYwOCAxNzguNTY3IDM5Ljc2MDJDMTc4LjU0NCAzOS4xNTk5IDE3OC41NjcgMzguNTMzIDE3OC42MzYgMzcuODc5OEMxNzguNzA1IDM3LjIyNjYgMTc4LjgyMiAzNi42MDcyIDE3OC45OSAzNi4wMjIyQzE3OS4xNTggMzUuNDM3MiAxNzkuMzcxIDM0LjkxMyAxNzkuNjMxIDM0LjQ0OTJDMTc5Ljg5IDMzLjk4NjIgMTgwLjE5NSAzMy42NTU0IDE4MC41NDYgMzMuNDU3OUMxODAuNzQ0IDMzLjQ4ODYgMTgwLjg2NiAzMy42MDYgMTgwLjkxMiAzMy44MTFDMTgwLjk1OCAzNC4wMTYzIDE4MC45NjkgMzQuMjU5NSAxODAuOTQ2IDM0LjU0MDVDMTgwLjkyMyAzNC44MjE5IDE4MC44ODkgMzUuMTEwNSAxODAuODQzIDM1LjQwNjZDMTgwLjc5NyAzNS43MDMgMTgwLjc3NSAzNS45NTAyIDE4MC43NzUgMzYuMTQ3NEMxODAuODUxIDM2LjU1NzcgMTgwLjk5OSAzNi44NzcgMTgxLjIyMSAzNy4xMDQ4QzE4MS40NDEgMzcuMzMyNyAxODEuNjkgMzcuNDY2IDE4MS45NjQgMzcuNTAzNkMxODIuMjM5IDM3LjU0MTcgMTgyLjUwOSAzNy40NzczIDE4Mi43NzYgMzcuMzA5OEMxODMuMDQzIDM3LjE0MyAxODMuMjYgMzYuODc3IDE4My40MjggMzYuNTEyQzE4My40NDMgMzYuNTI3NCAxODMuNDY2IDM2LjUzNDkgMTgzLjQ5NyAzNi41MzQ5TDE4My44MTcgMzMuNjQwNEMxODMuOTA5IDMzLjI0NTEgMTgzLjg0NyAzMi44OTU4IDE4My42MzQgMzIuNTkxOUMxODMuNDIgMzIuMjg4IDE4My4xMzggMzIuMTEzIDE4Mi43ODggMzIuMDY3NkMxODIuMzQ1IDMxLjQyOTQgMTgxLjc0NyAzMS4wOTE0IDE4MC45OTIgMzEuMDUzMkMxODAuMjM3IDMxLjAxNTQgMTc5LjQ2MyAzMS4yNjIzIDE3OC42NyAzMS43OTQxQzE3OC4xODIgMzIuMTQ0IDE3Ny43NTEgMzIuNjI2IDE3Ny4zNzggMzMuMjQxM0MxNzcuMDA0IDMzLjg1NyAxNzYuNjk5IDM0LjU0MDUgMTc2LjQ2MyAzNS4yOTI2QzE3Ni4yMjYgMzYuMDQ0OCAxNzYuMDU4IDM2LjgzOTEgMTc1Ljk1OSAzNy42NzQ4QzE3NS44NiAzOC41MTA0IDE3NS44NDEgMzkuMzIzNiAxNzUuOTAyIDQwLjExMzNDMTc1Ljk2MyA0MC45MDM4IDE3Ni4xMDQgNDEuNjQ4NCAxNzYuMzI1IDQyLjM0N0MxNzYuNTQ2IDQzLjA0NjIgMTc2Ljg1NSA0My42MzEyIDE3Ny4yNTIgNDQuMTAyQzE3Ny41ODcgNDQuNTEyMyAxNzcuOTY4IDQ0LjgxMjcgMTc4LjM5NSA0NS4wMDI3QzE3OC44MjIgNDUuMTkyNyAxNzkuMjY4IDQ1LjMxMDEgMTc5LjczNCA0NS4zNTU4QzE4MC4xOTkgNDUuNDAxMiAxODAuNjYgNDUuMzgyMSAxODEuMTE4IDQ1LjI5ODhDMTgxLjU3NSA0NS4yMTU1IDE4Mi4wMSA0NS4wOTc4IDE4Mi40MjEgNDQuOTQ1NEMxODIuOTU1IDQ0Ljc0ODIgMTgzLjUwNSA0NC40OTcyIDE4NC4wNjkgNDQuMTkzM0MxODQuNjMzIDQzLjg4OTcgMTg1LjE3NCA0My41MjQ4IDE4NS42OTMgNDMuMDk5MUMxODUuOTY2IDQyLjg3NTMgMTg2LjIyOCA0Mi42MzEzIDE4Ni40ODIgNDIuMzY5NkMxODYuNTk4IDQyLjY1NTMgMTg2LjcyNyA0Mi45MzE3IDE4Ni44ODIgNDMuMTkwNUMxODcuMjk0IDQzLjg3NDEgMTg3Ljg1IDQ0LjQyOSAxODguNTUyIDQ0Ljg1NDRDMTg5LjI1MyA0NS4yNzk3IDE5MC4xMTUgNDUuNDg0NCAxOTEuMTM3IDQ1LjQ2OTdDMTkyLjIzNSA0NS40NTQ0IDE5My4yNDkgNDUuMTc3NCAxOTQuMTggNDQuNjM3OEMxOTUuMTEgNDQuMDk4OCAxOTUuODcyIDQzLjMwNDIgMTk2LjQ2NyA0Mi4yNTZDMTk3LjM1OCA0Mi4yNTYgMTk4LjIzNCA0Mi4xMDk2IDE5OS4wOTYgNDEuODE5QzE5OS4wODkgNDEuOTExIDE5OS4wODEgNDIuMDA3OSAxOTkuMDc1IDQyLjA5NjZDMTk5LjAxNCA0Mi45MDE5IDE5OC45ODMgNDMuNDQ4NyAxOTguOTgzIDQzLjczNzZDMTk4Ljk2OCA0NC4yMzkgMTk4LjkzNCA0NC44NTgxIDE5OC44OCA0NS41OTQ5QzE5OC44MjcgNDYuMzMyIDE5OC43OTMgNDcuMTA2OSAxOTguNzc4IDQ3LjkxOThDMTk4Ljc2MyA0OC43MzI2IDE5OC43OTMgNDkuNTUzMiAxOTguODY5IDUwLjM4MTdDMTk4Ljk0NSA1MS4yMDk2IDE5OS4xMDUgNTEuOTYyIDE5OS4zNDkgNTIuNjM4M0MxOTkuNTkzIDUzLjMxNDEgMTk5Ljk0IDUzLjg4NzggMjAwLjM5IDU0LjM1OTFDMjAwLjg0IDU0LjgyOTkgMjAxLjQzMSA1NS4xMTEyIDIwMi4xNjMgNTUuMjAyM0MyMDIuOTQxIDU1LjMwODQgMjAzLjYxMiA1NS4xNzE3IDIwNC4xNzYgNTQuNzkyQzIwNC43NCA1NC40MTIgMjA1LjE5OCA1My44OTE4IDIwNS41NDkgNTMuMjMwOEMyMDUuODk5IDUyLjU2OTUgMjA2LjE0NyA1MS44MDYxIDIwNi4yOTIgNTAuOTQwMUMyMDYuNDM3IDUwLjA3NCAyMDYuNDc5IDQ5LjIwMzkgMjA2LjQxOCA0OC4zMzAxQzIwNi4zNTcgNDcuNDU2MiAyMDYuMTk2IDQ2LjYzMjEgMjA1LjkzNyA0NS44NTc1QzIwNS42NzggNDUuMDgyMiAyMDUuMzE5IDQ0LjQ0NCAyMDQuODYyIDQzLjk0MjNDMjA1LjEzNyA0My44NjY5IDIwNS40NjUgNDMuNzIyNiAyMDUuODQ2IDQzLjUwOTVDMjA2LjIyNyA0My4yOTY5IDIwNi42MiA0My4wNTc1IDIwNy4wMjQgNDIuNzkxNUMyMDcuMTIzIDQyLjcyNjEgMjA3LjIyMSA0Mi42NTczIDIwNy4zMiA0Mi41OTAyQzIwNy4yODMgNDMuMTI4NiAyMDcuMjY0IDQzLjUxMjYgMjA3LjI2NCA0My43Mzc2QzIwNy4yNDkgNDQuMjM5IDIwNy4yMTUgNDQuODU4MSAyMDcuMTYxIDQ1LjU5NDlDMjA3LjEwOCA0Ni4zMzIgMjA3LjA3MyA0Ny4xMDY5IDIwNy4wNTggNDcuOTE5OEMyMDcuMDQzIDQ4LjczMjYgMjA3LjA3MyA0OS41NTMyIDIwNy4xNSA1MC4zODE3QzIwNy4yMjYgNTEuMjA5NiAyMDcuMzg2IDUxLjk2MiAyMDcuNjMgNTIuNjM4M0MyMDcuODc0IDUzLjMxNDEgMjA4LjIyMSA1My44ODc4IDIwOC42NzEgNTQuMzU5MUMyMDkuMTIxIDU0LjgyOTkgMjA5LjcxMiA1NS4xMTEyIDIxMC40NDQgNTUuMjAyM0MyMTEuMjIxIDU1LjMwODQgMjExLjg5MiA1NS4xNzE3IDIxMi40NTcgNTQuNzkyQzIxMy4wMjEgNTQuNDEyIDIxMy40NzggNTMuODkxOCAyMTMuODMgNTMuMjMwOEMyMTQuMTggNTIuNTY5NSAyMTQuNDI4IDUxLjgwNjEgMjE0LjU3MyA1MC45NDAxQzIxNC43MTggNTAuMDc0IDIxNC43NTkgNDkuMjAzOSAyMTQuNjk5IDQ4LjMzMDFDMjE0LjYzNyA0Ny40NTYyIDIxNC40NzcgNDYuNjMyMSAyMTQuMjE4IDQ1Ljg1NzVDMjEzLjk1OSA0NS4wODIyIDIxMy42MDEgNDQuNDQ0IDIxMy4xNDMgNDMuOTQyM0MyMTMuNDE4IDQzLjg2NjkgMjEzLjc0NSA0My43MjI2IDIxNC4xMjcgNDMuNTA5NUMyMTQuNTA4IDQzLjI5NjkgMjE0LjkgNDMuMDU3NSAyMTUuMzA1IDQyLjc5MTVDMjE1LjUxNSA0Mi42NTMzIDIxNS43MjQgNDIuNTEwNyAyMTUuOTMyIDQyLjM2NDFDMjE2LjAxIDQzLjEwNzIgMjE2LjE3OSA0My43NTkgMjE2LjQ0OCA0NC4zMDczQzIxNi43NzYgNDQuOTc2MSAyMTcuMjIyIDQ1LjQ5MjUgMjE3Ljc4NyA0NS44NTc1QzIxOC4zNTEgNDYuMjIxOCAyMTkuMDE0IDQ2LjQyMzQgMjE5Ljc3NyA0Ni40NjEyQzIyMC41MzkgNDYuNDk4OCAyMjEuMzcgNDYuMzU4NiAyMjIuMjcxIDQ2LjAzOTNDMjIyLjk0MSA0NS43OTY1IDIyMy41MjUgNDUuNDkyNSAyMjQuMDIgNDUuMTI3OUMyMjQuNTE2IDQ0Ljc2MyAyMjQuOTYyIDQ0LjMxODUgMjI1LjM1OCA0My43OTQ2QzIyNS4zODEgNDMuNzY0MiAyMjUuNDAzIDQzLjczMTMgMjI1LjQyNSA0My43MDA2QzIyNS40OTYgNDMuOTEzNCAyMjUuNTc0IDQ0LjExNzkgMjI1LjY2NyA0NC4zMDczQzIyNS45OTUgNDQuOTc2MSAyMjYuNDQxIDQ1LjQ5MjUgMjI3LjAwNiA0NS44NTc1QzIyNy41NjkgNDYuMjIxOCAyMjguMjMzIDQ2LjQyMzQgMjI4Ljk5NiA0Ni40NjEyQzIyOS43NTggNDYuNDk4OCAyMzAuNTg5IDQ2LjM1ODYgMjMxLjQ4OSA0Ni4wMzkzQzIzMi4xNiA0NS43OTY1IDIzMi43NDQgNDUuNDkyNSAyMzMuMjM5IDQ1LjEyNzlDMjMzLjczNSA0NC43NjMgMjM0LjE4MSA0NC4zMTg1IDIzNC41NzcgNDMuNzk0NkMyMzQuOTc0IDQzLjI3IDIzNS4zMzYgNDIuNjY2IDIzNS42NjQgNDEuOTgyNEMyMzUuOTkyIDQxLjI5ODUgMjM2LjMyMyA0MC41MTY0IDIzNi42NTkgMzkuNjM0N0MyMzYuNzIgMzkuMzkxOCAyMzYuNjYzIDM5LjE3NTIgMjM2LjQ4OCAzOC45ODUyWlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxyXG48L3N2Zz5gOyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBQWlGO0FBRWpGLGlDQUEwQyx1QkFBTztBQUFBLEVBSXpDLFNBQVM7QUFBQTtBQUViLFlBQU0sS0FBSztBQUVYLFdBQUssY0FBYyxJQUFJLGtCQUFrQixLQUFLLEtBQUs7QUFFbkQsV0FBSztBQUlMLFVBQUksUUFBUSxPQUFPLFdBQVc7QUFFOUIsVUFBSSxvQkFBb0IsTUFBTTtBQUM1QixZQUFJLE1BQU0sV0FBVyxLQUFLLFNBQVMsZ0JBQWdCO0FBQ2pELGtCQUFRLElBQUk7QUFDWixlQUFLO0FBQUEsbUJBQ0ksS0FBSyxTQUFTLGdCQUFnQjtBQUN2QyxrQkFBUSxJQUFJO0FBQ1osZUFBSztBQUFBO0FBQUE7QUFJVCxZQUFNLGlCQUFpQixVQUFVO0FBR2pDLFdBQUssU0FBUyxNQUFNLE1BQU0sb0JBQW9CLFVBQVU7QUFFeEQ7QUFHQSxVQUFJLGlCQUFpQixNQUFNO0FBRXpCLGNBQU0sV0FBVyxLQUFLLElBQUksTUFBTSxVQUFVO0FBQzFDLGFBQUssU0FBUyxhQUFhO0FBRzNCLFlBQUksS0FBSyxJQUFJLE1BQU0sVUFBVSxnQkFBZ0I7QUFDM0MsZUFBSyxTQUFTLFVBQVU7QUFDeEIsZUFBSyxTQUFTLEtBQUs7QUFDbkIsa0JBQVEsSUFBSTtBQUFBLGVBQ1A7QUFDTCxlQUFLLFNBQVMsVUFBVTtBQUN4QixlQUFLLFNBQVMsS0FBSztBQUNuQixrQkFBUSxJQUFJO0FBQUE7QUFFZCxpQkFBUyxLQUFLLFVBQVUsT0FBTyxtQkFBbUIsS0FBSyxTQUFTO0FB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 +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBXb3Jrc3BhY2UsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pbmltYWxUaGVtZSBleHRlbmRzIFBsdWdpbiB7XHJcblxyXG4gIHNldHRpbmdzOiBNaW5pbWFsU2V0dGluZ3M7XHJcblxyXG4gIGFzeW5jIG9ubG9hZCgpIHtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG5cclxuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgTWluaW1hbFNldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcclxuXHJcbiAgICB0aGlzLmFkZFN0eWxlKCk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIHN5c3RlbSBjaGFuZ2VzIHRvIGNvbG9yIHRoZW1lIFxyXG5cclxuICAgIGxldCBtZWRpYSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk7XHJcblxyXG4gICAgbGV0IHVwZGF0ZVN5c3RlbVRoZW1lID0gKCkgPT4ge1xyXG4gICAgICBpZiAobWVkaWEubWF0Y2hlcyAmJiB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0RhcmsgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdMaWdodCBtb2RlIGFjdGl2ZScpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSk7XHJcblxyXG4gICAgLy8gUmVtb3ZlIHN5c3RlbSB0aGVtZSBsaXN0ZW5lciB3aGVuIHdlIHVubG9hZFxyXG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiBtZWRpYS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSkpO1xyXG5cclxuICAgIHVwZGF0ZVN5c3RlbVRoZW1lKCk7XHJcblxyXG4gICAgLy8gQ2hlY2sgc3RhdGUgb2YgT2JzaWRpYW4gU2V0dGluZ3NcclxuICAgIGxldCBzZXR0aW5nc1VwZGF0ZSA9ICgpID0+IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnYmFzZUZvbnRTaXplJyk7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IGZvbnRTaXplO1xyXG5cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBpZiAodGhpcy5hcHAudmF1bHQuZ2V0Q29uZmlnKCdmb2xkSGVhZGluZycpKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdGb2xkaW5nIGlzIG9uJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnRm9sZGluZyBpcyBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9sZGluZycsIHRoaXMuc2V0dGluZ3MuZm9sZGluZyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnc2hvd0xpbmVOdW1iZXInKSkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGluZU51bWJlcnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0xpbmUgbnVtYmVycyBhcmUgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpbmVOdW1iZXJzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnTGluZSBudW1iZXJzIGFyZSBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtbGluZS1udW1zJywgdGhpcy5zZXR0aW5ncy5saW5lTnVtYmVycyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygncmVhZGFibGVMaW5lTGVuZ3RoJykpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnUmVhZGFibGUgbGluZSBsZW5ndGggaXMgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1JlYWRhYmxlIGxpbmUgbGVuZ3RoIGlzIG9mZicpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtcmVhZGFibGUnLCB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1yZWFkYWJsZS1vZmYnLCAhdGhpcy5zZXR0aW5ncy5yZWFkYWJsZUxpbmVMZW5ndGgpO1xyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gICAgbGV0IHNpZGViYXJVcGRhdGUgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNpZGViYXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZC1sZWZ0LXNwbGl0JylbMF07XHJcbiAgICAgIGNvbnN0IHJpYmJvbkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2lkZS1kb2NrLXJpYmJvbicpWzBdO1xyXG4gICAgICBpZiAoc2lkZWJhckVsICYmIHJpYmJvbkVsICYmIHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygndGhlbWUnKSA9PSAnbW9vbnN0b25lJyAmJiB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPT0gJ21pbmltYWwtbGlnaHQtY29udHJhc3QnKSB7XHJcbiAgICAgICAgc2lkZWJhckVsLmFkZENsYXNzKCd0aGVtZS1kYXJrJyk7XHJcbiAgICAgICAgcmliYm9uRWwuYWRkQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfSBlbHNlIGlmIChzaWRlYmFyRWwgJiYgcmliYm9uRWwpIHtcclxuICAgICAgICBzaWRlYmFyRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTsgXHJcbiAgICAgICAgcmliYm9uRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAudmF1bHQub24oJ2NvbmZpZy1jaGFuZ2VkJywgc2V0dGluZ3NVcGRhdGUpKTtcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAud29ya3NwYWNlLm9uKCdjc3MtY2hhbmdlJywgc2lkZWJhclVwZGF0ZSkpO1xyXG5cclxuICAgIHNldHRpbmdzVXBkYXRlKCk7XHJcbiAgICBcclxuICAgIGFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeSgoKSA9PiB7XHJcbiAgICAgIHNpZGViYXJVcGRhdGUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGxpZ2h0U3R5bGVzID0gWydtaW5pbWFsLWxpZ2h0JywgJ21pbmltYWwtbGlnaHQtdG9uYWwnLCAnbWluaW1hbC1saWdodC1jb250cmFzdCcsICdtaW5pbWFsLWxpZ2h0LXdoaXRlJ107XHJcbiAgICBjb25zdCBkYXJrU3R5bGVzID0gWydtaW5pbWFsLWRhcmsnLCAnbWluaW1hbC1kYXJrLXRvbmFsJywgJ21pbmltYWwtZGFyay1ibGFjayddO1xyXG4gICAgY29uc3QgaW1nR3JpZFN0eWxlcyA9IFsnaW1nLWdyaWQnLCdpbWctZ3JpZC1yYXRpbycsJ2ltZy1ub2dyaWQnXTtcclxuICAgIGNvbnN0IHRhYmxlV2lkdGhTdHlsZXMgPSBbJ3RhYmxlLTEwMCcsJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLCd0YWJsZS13aWRlJywndGFibGUtbWF4J107XHJcbiAgICBjb25zdCBpZnJhbWVXaWR0aFN0eWxlcyA9IFsnaWZyYW1lLTEwMCcsJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJywnaWZyYW1lLXdpZGUnLCdpZnJhbWUtbWF4J107XHJcbiAgICBjb25zdCBpbWdXaWR0aFN0eWxlcyA9IFsnaW1nLTEwMCcsJ2ltZy1kZWZhdWx0LXdpZHRoJywnaW1nLXdpZGUnLCdpbWctbWF4J107XHJcbiAgICBjb25zdCBtYXBXaWR0aFN0eWxlcyA9IFsnbWFwLTEwMCcsJ21hcC1kZWZhdWx0LXdpZHRoJywnbWFwLXdpZGUnLCdtYXAtbWF4J107XHJcbiAgICBjb25zdCBjaGFydFdpZHRoU3R5bGVzID0gWydjaGFydC0xMDAnLCdjaGFydC1kZWZhdWx0LXdpZHRoJywnY2hhcnQtd2lkZScsJ2NoYXJ0LW1heCddO1xyXG4gICAgY29uc3QgdGhlbWUgPSBbJ21vb25zdG9uZScsICdvYnNpZGlhbiddO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnaW5jcmVhc2UtYm9keS1mb250LXNpemUnLFxyXG4gICAgICBuYW1lOiAnSW5jcmVhc2UgYm9keSBmb250IHNpemUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCArIDAuNTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9udFNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICdkZWNyZWFzZS1ib2R5LWZvbnQtc2l6ZScsXHJcbiAgICAgIG5hbWU6ICdEZWNyZWFzZSBib2R5IGZvbnQgc2l6ZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsID0gdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsIC0gMC41O1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5zZXRGb250U2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgXHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWN5Y2xlJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gZGFyayBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSBkYXJrU3R5bGVzWyhkYXJrU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUpICsgMSkgJSBkYXJrU3R5bGVzLmxlbmd0aF07XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgIFxyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtY3ljbGUnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBsaWdodCBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gbGlnaHRTdHlsZXNbKGxpZ2h0U3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5saWdodFN0eWxlKSArIDEpICUgbGlnaHRTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1oaWRkZW4tYm9yZGVycycsXHJcbiAgICAgIG5hbWU6ICdUb2dnbGUgc2lkZWJhciBib3JkZXJzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUgPSAhdGhpcy5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLWNvbG9yZnVsLWhlYWRpbmdzJyxcclxuICAgICAgbmFtZTogJ1RvZ2dsZSBjb2xvcmZ1bCBoZWFkaW5ncycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWZvY3VzLW1vZGUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGZvY3VzIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlID0gIXRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY29sb3JmdWwtZnJhbWUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGNvbG9yZnVsIHdpbmRvdyBmcmFtZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxGcmFtZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtdGFibGUtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiB0YWJsZSB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGggPSB0YWJsZVdpZHRoU3R5bGVzWyh0YWJsZVdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy50YWJsZVdpZHRoKSArIDEpICUgdGFibGVXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1pbWFnZS13aWR0aCcsXHJcbiAgICAgIG5hbWU6ICdDeWNsZSBiZXR3ZWVuIGltYWdlIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaW1nV2lkdGggPSBpbWdXaWR0aFN0eWxlc1soaW1nV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmltZ1dpZHRoKSArIDEpICUgaW1nV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtaWZyYW1lLXdpZHRoJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gaWZyYW1lIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaWZyYW1lV2lkdGggPSBpZnJhbWVXaWR0aFN0eWxlc1soaWZyYW1lV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmlmcmFtZVdpZHRoKSArIDEpICUgaWZyYW1lV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtY2hhcnQtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBjaGFydCB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGggPSBjaGFydFdpZHRoU3R5bGVzWyhjaGFydFdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5jaGFydFdpZHRoKSArIDEpICUgY2hhcnRXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1tYXAtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBtYXAgd2lkdGggb3B0aW9ucycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5tYXBXaWR0aCA9IG1hcFdpZHRoU3R5bGVzWyhtYXBXaWR0aFN0eWxlcy5pbmRleE9mKHRoaXMuc2V0dGluZ3MubWFwV2lkdGgpICsgMSkgJSBtYXBXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtaW1nLWdyaWQnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGltYWdlIGdyaWRzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmltZ0dyaWQgPSAhdGhpcy5zZXR0aW5ncy5pbWdHcmlkO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtc3dpdGNoJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBiZXR3ZWVuIGxpZ2h0IGFuZCBkYXJrIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGhlbWUgPSB0aGVtZVsodGhlbWUuaW5kZXhPZih0aGlzLnNldHRpbmdzLnRoZW1lKSArIDEpICUgdGhlbWUubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVGhlbWUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1kZWZhdWx0JyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gJ21pbmltYWwtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtd2hpdGUnLFxyXG4gICAgICBuYW1lOiAnVXNlIGxpZ2h0IG1vZGUgKGFsbCB3aGl0ZSknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LXdoaXRlJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWxpZ2h0LXRvbmFsJyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSAnbWluaW1hbC1saWdodC10b25hbCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1jb250cmFzdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgbGlnaHQgbW9kZSAoaGlnaCBjb250cmFzdCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRhcmstZGVmYXVsdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSAnbWluaW1hbC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGFyay10b25hbCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstdG9uYWwnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWJsYWNrJyxcclxuICAgICAgbmFtZTogJ1VzZSBkYXJrIG1vZGUgKHRydWUgYmxhY2spJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstYmxhY2snO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1hdG9tLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gQXRvbSAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtYXRvbS1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtYXl1LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gQXl1IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1heXUtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBDYXRwcHVjY2luIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1jYXRwcHVjY2luLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kZWZhdWx0LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gZGVmYXVsdCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtZGVmYXVsdC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZ3J1dmJveC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIEdydXZib3ggKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWdydXZib3gtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWV2ZXJmb3Jlc3QtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBFdmVyZm9yZXN0IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ldmVyZm9yZXN0LWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1tYWNvcy1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIG1hY09TIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1tYWNvcy1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbm90aW9uLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gTm90aW9uIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ub3Rpb24tbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW5vcmQtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBOb3JkIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ub3JkLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1yb3NlLXBpbmUtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBSb3NcdTAwRTkgUGluZSAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtcm9zZS1waW5lLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1zb2xhcml6ZWQtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBTb2xhcml6ZWQgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLXNvbGFyaXplZC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtdGhpbmdzLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gVGhpbmdzIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC10aGluZ3MtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWF0b20tZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggY29sb3Igc2NoZW1lIHRvIEF0b20gKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1hdG9tLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1heXUtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggY29sb3Igc2NoZW1lIHRvIEF5dSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWF5dS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBDYXRwcHVjY2luIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZHJhY3VsYS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBjb2xvciBzY2hlbWUgdG8gRHJhY3VsYSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWRyYWN1bGEtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRlZmF1bHQtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gZGVmYXVsdCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWRlZmF1bHQtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWdydXZib3gtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gR3J1dmJveCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWdydXZib3gtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWV2ZXJmb3Jlc3QtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gRXZlcmZvcmVzdCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWV2ZXJmb3Jlc3QtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW1hY29zLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBtYWNPUyAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLW1hY29zLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3JkLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIE5vcmQgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1ub3JkLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3Rpb24tZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gTm90aW9uIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtbm90aW9uLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1yb3NlLXBpbmUtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggY29sb3Igc2NoZW1lIHRvIFJvc1x1MDBFOSBQaW5lIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtcm9zZS1waW5lLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1zb2xhcml6ZWQtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gU29sYXJpemVkIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtc29sYXJpemVkLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC10aGluZ3MtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gVGhpbmdzIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtdGhpbmdzLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kZXYtYmxvY2std2lkdGgnLFxyXG4gICAgICBuYW1lOiAnRGV2IFx1MjAxNCBTaG93IGJsb2NrIHdpZHRocycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kZXZCbG9ja1dpZHRoID0gIXRoaXMuc2V0dGluZ3MuZGV2QmxvY2tXaWR0aDtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2goKVxyXG4gIH1cclxuXHJcbiAgb251bmxvYWQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnVW5sb2FkaW5nIE1pbmltYWwgVGhlbWUgU2V0dGluZ3MgcGx1Z2luJyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBsb2FkU2V0dGluZ3MoKSB7XHJcbiAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbihERUZBVUxUX1NFVFRJTkdTLCBhd2FpdCB0aGlzLmxvYWREYXRhKCkpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZVNldHRpbmdzKCkge1xyXG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICB9XHJcblxyXG4gIC8vIHJlZnJlc2ggZnVuY3Rpb24gZm9yIHdoZW4gd2UgY2hhbmdlIHNldHRpbmdzXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIC8vIHJlLWxvYWQgdGhlIHN0eWxlXHJcbiAgICB0aGlzLnVwZGF0ZVN0eWxlKClcclxuICB9XHJcblxyXG4gIC8vIGFkZCB0aGUgc3R5bGluZyBlbGVtZW50cyB3ZSBuZWVkXHJcbiAgYWRkU3R5bGUoKSB7XHJcbiAgICAvLyBhZGQgYSBjc3MgYmxvY2sgZm9yIG91ciBzZXR0aW5ncy1kZXBlbmRlbnQgc3R5bGVzXHJcbiAgICBjb25zdCBjc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgY3NzLmlkID0gJ21pbmltYWwtdGhlbWUnO1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKGNzcyk7XHJcblxyXG4gICAgLy8gYWRkIHRoZSBtYWluIGNsYXNzXHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ21pbmltYWwtdGhlbWUnKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgdGhlIHN0eWxlIHdpdGggdGhlIHNldHRpbmdzLWRlcGVuZGVudCBzdHlsZXNcclxuICAgIHRoaXMudXBkYXRlU3R5bGUoKTtcclxuICB9XHJcblxyXG4gIHNldEZvbnRTaXplKCkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCdiYXNlRm9udFNpemUnLCB0aGlzLnNldHRpbmdzLnRleHROb3JtYWwpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudXBkYXRlRm9udFNpemUoKTtcclxuICB9XHJcblxyXG4gIC8vIHVwZGF0ZSB0aGUgc3R5bGVzIChhdCB0aGUgc3RhcnQsIG9yIGFzIHRoZSByZXN1bHQgb2YgYSBzZXR0aW5ncyBjaGFuZ2UpXHJcbiAgdXBkYXRlU3R5bGUoKSB7XHJcbiAgICB0aGlzLnJlbW92ZVN0eWxlKCk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lKTtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2JvcmRlcnMtbm9uZScsICF0aGlzLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdjb2xvcmZ1bC1oZWFkaW5ncycsIHRoaXMuc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2NvbG9yZnVsLWZyYW1lJywgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnY29sb3JmdWwtYWN0aXZlJywgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEFjdGl2ZVN0YXRlcyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9jdXMtbW9kZScsIHRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbGlua3MtaW50LW9uJywgdGhpcy5zZXR0aW5ncy51bmRlcmxpbmVJbnRlcm5hbCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xpbmtzLWV4dC1vbicsIHRoaXMuc2V0dGluZ3MudW5kZXJsaW5lRXh0ZXJuYWwpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdzeXN0ZW0tc2hhZGUnLCB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnZnVsbC13aWR0aC1tZWRpYScsIHRoaXMuc2V0dGluZ3MuZnVsbFdpZHRoTWVkaWEpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdpbWctZ3JpZCcsIHRoaXMuc2V0dGluZ3MuaW1nR3JpZCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZGV2LWJsb2NrLXdpZHRoJywgdGhpcy5zZXR0aW5ncy5kZXZCbG9ja1dpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1zdGF0dXMtb2ZmJywgIXRoaXMuc2V0dGluZ3MubWluaW1hbFN0YXR1cyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Z1bGwtZmlsZS1uYW1lcycsICF0aGlzLnNldHRpbmdzLnRyaW1OYW1lcyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xhYmVsZWQtbmF2JywgdGhpcy5zZXR0aW5ncy5sYWJlbGVkTmF2KTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1mb2xkaW5nJywgdGhpcy5zZXR0aW5ncy5mb2xkaW5nKTtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCd0YWJsZS13aWRlJywndGFibGUtbWF4JywndGFibGUtMTAwJywndGFibGUtZGVmYXVsdC13aWR0aCcsXHJcbiAgICAgICdpZnJhbWUtd2lkZScsJ2lmcmFtZS1tYXgnLCdpZnJhbWUtMTAwJywnaWZyYW1lLWRlZmF1bHQtd2lkdGgnLFxyXG4gICAgICAnaW1nLXdpZGUnLCdpbWctbWF4JywnaW1nLTEwMCcsJ2ltZy1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ2NoYXJ0LXdpZGUnLCdjaGFydC1tYXgnLCdjaGFydC0xMDAnLCdjaGFydC1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ21hcC13aWRlJywnbWFwLW1heCcsJ21hcC0xMDAnLCdtYXAtZGVmYXVsdC13aWR0aCcpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmltZ1dpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5pZnJhbWVXaWR0aCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MubWFwV2lkdGgpO1xyXG5cclxuICAgIC8vIGdldCB0aGUgY3VzdG9tIGNzcyBlbGVtZW50XHJcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaW5pbWFsLXRoZW1lJyk7XHJcbiAgICBpZiAoIWVsKSB0aHJvdyBcIm1pbmltYWwtdGhlbWUgZWxlbWVudCBub3QgZm91bmQhXCI7XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gc2V0IHRoZSBzZXR0aW5ncy1kZXBlbmRlbnQgY3NzXHJcbiAgICAgIGVsLmlubmVyVGV4dCA9IFxyXG4gICAgICAgICdib2R5Lm1pbmltYWwtdGhlbWV7J1xyXG4gICAgICAgICsgJy0tZm9udC11aS1zbWFsbDonICsgdGhpcy5zZXR0aW5ncy50ZXh0U21hbGwgKyAncHg7J1xyXG4gICAgICAgICsgJy0tbGluZS1oZWlnaHQ6JyArIHRoaXMuc2V0dGluZ3MubGluZUhlaWdodCArICc7J1xyXG4gICAgICAgICsgJy0tbGluZS13aWR0aDonICsgdGhpcy5zZXR0aW5ncy5saW5lV2lkdGggKyAncmVtOydcclxuICAgICAgICArICctLWxpbmUtd2lkdGgtd2lkZTonICsgdGhpcy5zZXR0aW5ncy5saW5lV2lkdGhXaWRlICsgJ3JlbTsnXHJcbiAgICAgICAgKyAnLS1tYXgtd2lkdGg6JyArIHRoaXMuc2V0dGluZ3MubWF4V2lkdGggKyAnJTsnXHJcbiAgICAgICAgKyAnLS1mb250LWVkaXRvci1vdmVycmlkZTonICsgdGhpcy5zZXR0aW5ncy5lZGl0b3JGb250ICsgJzsnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHJlZnJlc2hTeXN0ZW1UaGVtZSgpIHtcclxuICAgIGNvbnN0IGlzRGFya01vZGUgPSB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXNcclxuXHJcbiAgICBpZiAoaXNEYXJrTW9kZSAmJiB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0RhcmsgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpXHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2V0dGluZ3MudXNlU3lzdGVtVGhlbWUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnTGlnaHQgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKVxyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXJrU3R5bGUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKFxyXG4gICAgICAndGhlbWUtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZGFyay10b25hbCcsXHJcbiAgICAgICdtaW5pbWFsLWRhcmstYmxhY2snXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSk7XHJcblxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAuc2V0VGhlbWUoJ29ic2lkaWFuJyk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC52YXVsdC5zZXRDb25maWcoJ3RoZW1lJywgJ29ic2lkaWFuJyk7XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGlnaHRTdHlsZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICd0aGVtZS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1saWdodC10b25hbCcsXHJcbiAgICAgICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQtd2hpdGUnXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUpO1xyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnNldFRoZW1lKCdtb29uc3RvbmUnKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnZhdWx0LnNldENvbmZpZygndGhlbWUnLCAnbW9vbnN0b25lJyk7XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGFya1NjaGVtZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICdtaW5pbWFsLWF0b20tZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWF5dS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZGVmYXVsdC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZHJhY3VsYS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZXZlcmZvcmVzdC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZ3J1dmJveC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbWFjb3MtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLW5vcmQtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLW5vdGlvbi1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtcm9zZS1waW5lLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1zb2xhcml6ZWQtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLXRoaW5ncy1kYXJrJ1xyXG4gICAgKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUxpZ2h0U2NoZW1lKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcyhcclxuICAgICAgJ21pbmltYWwtYXRvbS1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWF5dS1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1kZWZhdWx0LWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWdydXZib3gtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1tYWNvcy1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLW5vcmQtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ub3Rpb24tbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1yb3NlLXBpbmUtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1zb2xhcml6ZWQtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC10aGluZ3MtbGlnaHQnXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVRoZW1lKCkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAuc2V0VGhlbWUodGhpcy5zZXR0aW5ncy50aGVtZSk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC52YXVsdC5zZXRDb25maWcoJ3RoZW1lJywgdGhpcy5zZXR0aW5ncy50aGVtZSk7XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU3R5bGUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCdtaW5pbWFsLWxpZ2h0JywnbWluaW1hbC1saWdodC10b25hbCcsJ21pbmltYWwtbGlnaHQtY29udHJhc3QnLCdtaW5pbWFsLWxpZ2h0LXdoaXRlJywnbWluaW1hbC1kYXJrJywnbWluaW1hbC1kYXJrLXRvbmFsJywnbWluaW1hbC1kYXJrLWJsYWNrJyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSx0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuaW50ZXJmYWNlIE1pbmltYWxTZXR0aW5ncyB7XHJcbiAgdGhlbWU6IHN0cmluZztcclxuICBsaWdodFN0eWxlOiBzdHJpbmc7XHJcbiAgZGFya1N0eWxlOiBzdHJpbmc7XHJcbiAgbGlnaHRTY2hlbWU6IHN0cmluZztcclxuICBkYXJrU2NoZW1lOiBzdHJpbmc7XHJcbiAgZWRpdG9yRm9udDogc3RyaW5nO1xyXG4gIGNvbG9yZnVsSGVhZGluZ3M6IGJvb2xlYW47XHJcbiAgY29sb3JmdWxGcmFtZTogYm9vbGVhbjtcclxuICBjb2xvcmZ1bEFjdGl2ZVN0YXRlczogYm9vbGVhbixcclxuICB0cmltTmFtZXM6IGJvb2xlYW47XHJcbiAgbGFiZWxlZE5hdjogYm9vbGVhbjtcclxuICBib3JkZXJzVG9nZ2xlOiBib29sZWFuO1xyXG4gIGZvY3VzTW9kZTogYm9vbGVhbjtcclxuICBsaW5lSGVpZ2h0OiBudW1iZXI7XHJcbiAgbGluZVdpZHRoOiBudW1iZXI7XHJcbiAgbGluZVdpZHRoV2lkZTogbnVtYmVyO1xyXG4gIG1heFdpZHRoOiBudW1iZXI7XHJcbiAgaW1nR3JpZDogYm9vbGVhbjtcclxuICBkZXZCbG9ja1dpZHRoOiBib29sZWFuO1xyXG4gIHRhYmxlV2lkdGg6IHN0cmluZztcclxuICBpZnJhbWVXaWR0aDogc3RyaW5nO1xyXG4gIGltZ1dpZHRoOiBzdHJpbmc7XHJcbiAgY2hhcnRXaWR0aDogc3RyaW5nO1xyXG4gIG1hcFdpZHRoOiBzdHJpbmc7XHJcbiAgZnVsbFdpZHRoTWVkaWE6IGJvb2xlYW4sXHJcbiAgbWluaW1hbFN0YXR1czogYm9vbGVhbixcclxuICB0ZXh0Tm9ybWFsOiBudW1iZXI7XHJcbiAgdGV4dFNtYWxsOiBudW1iZXI7XHJcbiAgdW5kZXJsaW5lSW50ZXJuYWw6IGJvb2xlYW47XHJcbiAgdW5kZXJsaW5lRXh0ZXJuYWw6IGJvb2xlYW47XHJcbiAgdXNlU3lzdGVtVGhlbWU6IGJvb2xlYW47XHJcbiAgZm9sZGluZzogYm9vbGVhbjtcclxuICBsaW5lTnVtYmVyczogYm9vbGVhbjtcclxuICByZWFkYWJsZUxpbmVMZW5ndGg6IGJvb2xlYW47XHJcbn1cclxuXHJcbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IE1pbmltYWxTZXR0aW5ncyA9IHtcclxuICB0aGVtZTogJ21vb25zdG9uZScsXHJcbiAgbGlnaHRTdHlsZTogJ21pbmltYWwtbGlnaHQnLFxyXG4gIGRhcmtTdHlsZTogJ21pbmltYWwtZGFyaycsXHJcbiAgbGlnaHRTY2hlbWU6ICdtaW5pbWFsLWRlZmF1bHQtbGlnaHQnLFxyXG4gIGRhcmtTY2hlbWU6ICdtaW5pbWFsLWRlZmF1bHQtZGFyaycsXHJcbiAgZWRpdG9yRm9udDogJycsXHJcbiAgbGluZUhlaWdodDogMS41LFxyXG4gIGxpbmVXaWR0aDogNDAsXHJcbiAgbGluZVdpZHRoV2lkZTogNTAsXHJcbiAgbWF4V2lkdGg6IDg4LFxyXG4gIHRleHROb3JtYWw6IDE2LFxyXG4gIHRleHRTbWFsbDogMTMsXHJcbiAgaW1nR3JpZDogZmFsc2UsXHJcbiAgaW1nV2lkdGg6ICdpbWctZGVmYXVsdC13aWR0aCcsXHJcbiAgdGFibGVXaWR0aDogJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLFxyXG4gIGlmcmFtZVdpZHRoOiAnaWZyYW1lLWRlZmF1bHQtd2lkdGgnLFxyXG4gIG1hcFdpZHRoOiAnbWFwLWRlZmF1bHQtd2lkdGgnLFxyXG4gIGNoYXJ0V2lkdGg6ICdjaGFydC1kZWZhdWx0LXdpZHRoJyxcclxuICBjb2xvcmZ1bEhlYWRpbmdzOiBmYWxzZSxcclxuICBjb2xvcmZ1bEZyYW1lOiBmYWxzZSxcclxuICBjb2xvcmZ1bEFjdGl2ZVN0YXRlczogZmFsc2UsXHJcbiAgdHJpbU5hbWVzOiB0cnVlLFxyXG4gIGxhYmVsZWROYXY6IGZhbHNlLFxyXG4gIGZ1bGxXaWR0aE1lZGlhOiB0cnVlLFxyXG4gIGJvcmRlcnNUb2dnbGU6IHRydWUsXHJcbiAgbWluaW1hbFN0YXR1czogdHJ1ZSxcclxuICBmb2N1c01vZGU6IGZhbHNlLFxyXG4gIHVuZGVybGluZUludGVybmFsOiB0cnVlLFxyXG4gIHVuZGVybGluZUV4dGVybmFsOiB0cnVlLFxyXG4gIHVzZVN5c3RlbVRoZW1lOiBmYWxzZSxcclxuICBmb2xkaW5nOiB0cnVlLFxyXG4gIGxpbmVOdW1iZXJzOiBmYWxzZSxcclxuICByZWFkYWJsZUxpbmVMZW5ndGg6IGZhbHNlLFxyXG4gIGRldkJsb2NrV2lkdGg6IGZhbHNlLFxyXG59XHJcblxyXG5jbGFzcyBNaW5pbWFsU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xyXG5cclxuXHJcbiAgcGx1Z2luOiBNaW5pbWFsVGhlbWU7XHJcbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogTWluaW1hbFRoZW1lKSB7XHJcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XHJcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcclxuICB9XHJcblxyXG4gIGRpc3BsYXkoKTogdm9pZCB7XHJcbiAgICBsZXQge2NvbnRhaW5lckVsfSA9IHRoaXM7XHJcblxyXG4gICAgY29udGFpbmVyRWwuZW1wdHkoKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnTWluaW1hbCBUaGVtZSBTZXR0aW5ncyd9KTtcclxuXHJcbiAgICBjb25zdCBtYWluRGVzYyA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJyk7XHJcblxyXG4gICAgICBtYWluRGVzYy5hcHBlbmRUZXh0KCdOZWVkIGhlbHA/IEV4cGxvcmUgdGhlICcpO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiTWluaW1hbCBkb2N1bWVudGF0aW9uXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vbWluaW1hbC5ndWlkZVwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIG1haW5EZXNjLmFwcGVuZFRleHQoJyBvciB2aXNpdCB0aGUgJyk7XHJcbiAgICAgIG1haW5EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzdHJvbmcnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIiNtaW5pbWFsXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgbWFpbkRlc2MuYXBwZW5kVGV4dCgnIGNoYW5uZWwgaW4gdGhlIG9mZmljaWFsIE9ic2lkaWFuIERpc2NvcmQuIFlvdSBjYW4gc3VwcG9ydCBjb250aW51ZWQgZGV2ZWxvcG1lbnQgYnkgJyk7XHJcbiAgICAgIG1haW5EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJidXlpbmcgbWUgYSBjb2ZmZWVcIixcclxuICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9rZXBhbm9cIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRUZXh0KCcgXHUyNjE1Jyk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ0NvbG9yIHNjaGVtZSd9KTtcclxuXHJcbiAgICBjb25zdCBjb2xvckRlc2MgPSBjb250YWluZXJFbC5jcmVhdGVFbCgncCcpO1xyXG5cclxuICAgICAgY29sb3JEZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJ1RvIGNyZWF0ZSBhIGNvbXBsZXRlbHkgY3VzdG9tIGNvbG9yIHNjaGVtZSB1c2UgJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICBjb2xvckRlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIlN0eWxlIFNldHRpbmdzIHBsdWdpblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJvYnNpZGlhbjovL3Nob3ctcGx1Z2luP2lkPW9ic2lkaWFuLXN0eWxlLXNldHRpbmdzXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgY29sb3JEZXNjLmFwcGVuZFRleHQoJy4nKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdMaWdodCBtb2RlIGNvbG9yIHNjaGVtZScpXHJcbiAgICAgICAgLnNldERlc2MoJ1ByZXNldCBjb2xvciBvcHRpb25zIGZvciBsaWdodCBtb2RlJylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGVmYXVsdC1saWdodCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1hdG9tLWxpZ2h0JywnQXRvbScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWF5dS1saWdodCcsJ0F5dScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLCdDYXRwcHVjY2luJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsJ0V2ZXJmb3Jlc3QnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ncnV2Ym94LWxpZ2h0JywnR3J1dmJveCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW1hY29zLWxpZ2h0JywnbWFjT1MnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3JkLWxpZ2h0JywnTm9yZCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW5vdGlvbi1saWdodCcsJ05vdGlvbicpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLXJvc2UtcGluZS1saWdodCcsJ1Jvc1x1MDBFOSBQaW5lJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtc29sYXJpemVkLWxpZ2h0JywnU29sYXJpemVkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtdGhpbmdzLWxpZ2h0JywnVGhpbmdzJylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFNjaGVtZSlcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFNjaGVtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnTGlnaHQgbW9kZSBiYWNrZ3JvdW5kIGNvbnRyYXN0JylcclxuICAgICAgICAuc2V0RGVzYygnTGV2ZWwgb2YgY29udHJhc3QgYmV0d2VlbiBzaWRlYmFyIGFuZCBtYWluIGNvbnRlbnQnKVxyXG4gICAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodC13aGl0ZScsJ0FsbCB3aGl0ZScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWxpZ2h0LXRvbmFsJywnTG93IGNvbnRyYXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbGlnaHQtY29udHJhc3QnLCdIaWdoIGNvbnRyYXN0JylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFN0eWxlKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnRGFyayBtb2RlIGNvbG9yIHNjaGVtZScpXHJcbiAgICAgICAgLnNldERlc2MoJ1ByZXNldCBjb2xvcnMgb3B0aW9ucyBmb3IgZGFyayBtb2RlJylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGVmYXVsdC1kYXJrJywnRGVmYXVsdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWF0b20tZGFyaycsJ0F0b20nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1heXUtZGFyaycsJ0F5dScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWNhdHBwdWNjaW4tZGFyaycsJ0NhdHBwdWNjaW4nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kcmFjdWxhLWRhcmsnLCdEcmFjdWxhJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZXZlcmZvcmVzdC1kYXJrJywnRXZlcmZvcmVzdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWdydXZib3gtZGFyaycsJ0dydXZib3gnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1tYWNvcy1kYXJrJywnbWFjT1MnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3JkLWRhcmsnLCdOb3JkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbm90aW9uLWRhcmsnLCdOb3Rpb24nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1yb3NlLXBpbmUtZGFyaycsJ1Jvc1x1MDBFOSBQaW5lJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtc29sYXJpemVkLWRhcmsnLCdTb2xhcml6ZWQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC10aGluZ3MtZGFyaycsJ1RoaW5ncycpXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGFya1NjaGVtZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGFya1NjaGVtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdEYXJrIG1vZGUgYmFja2dyb3VuZCBjb250cmFzdCcpXHJcbiAgICAgICAgLnNldERlc2MoJ0xldmVsIG9mIGNvbnRyYXN0IGJldHdlZW4gc2lkZWJhciBhbmQgbWFpbiBjb250ZW50JylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGFyaycsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kYXJrLXRvbmFsJywnTG93IGNvbnRyYXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGFyay1ibGFjaycsJ1RydWUgYmxhY2snKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRhcmtTdHlsZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGFya1N0eWxlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnRmVhdHVyZXMnfSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNYXRjaCBzeXN0ZW0gc2V0dGluZyBmb3IgbGlnaHQgb3IgZGFyayBtb2RlJylcclxuICAgICAgLnNldERlc2MoJ0F1dG9tYXRpY2FsbHkgc3dpdGNoIGJhc2VkIG9uIHlvdXIgT1Mgc2V0dGluZycpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlU3lzdGVtVGhlbWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoU3lzdGVtVGhlbWUoKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdUZXh0IGxhYmVscyBmb3IgcHJpbWFyeSBuYXZpZ2F0aW9uJylcclxuICAgICAgLnNldERlc2MoJ05hdmlnYXRpb24gaW4gbGVmdCBzaWRlYmFyIHVzZXMgdGV4dCBsYWJlbHMgKHNlZSBkb2N1bWVudGF0aW9uIGZvciBsb2NhbGl6YXRpb24gc3VwcG9ydCknKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubGFiZWxlZE5hdilcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGFiZWxlZE5hdiA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NvbG9yZnVsIHdpbmRvdyBmcmFtZScpXHJcbiAgICAgIC5zZXREZXNjKCdUaGUgdG9wIGFyZWEgb2YgdGhlIGFwcCB1c2VzIHlvdXIgYWNjZW50IGNvbG9yJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsRnJhbWUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsRnJhbWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnQ29sb3JmdWwgYWN0aXZlIHN0YXRlcycpXHJcbiAgICAgIC5zZXREZXNjKCdBY3RpdmUgZmlsZSBhbmQgbWVudSBpdGVtcyB1c2UgeW91ciBhY2NlbnQgY29sb3InKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxBY3RpdmVTdGF0ZXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsQWN0aXZlU3RhdGVzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NvbG9yZnVsIGhlYWRpbmdzJylcclxuICAgICAgLnNldERlc2MoJ0hlYWRpbmdzIHVzZSBhIGRpZmZlcmVudCBjb2xvciBmb3IgZWFjaCBzaXplJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsSGVhZGluZ3MpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsSGVhZGluZ3MgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWluaW1hbCBzdGF0dXMgYmFyJylcclxuICAgICAgLnNldERlc2MoJ1VzZSBuYXJyb3cgc3RhdHVzIGJhcicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5taW5pbWFsU3RhdHVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5taW5pbWFsU3RhdHVzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVHJpbSBmaWxlIG5hbWVzIGluIHNpZGViYXJzJylcclxuICAgICAgLnNldERlc2MoJ1VzZSBlbGxpcHNlcyB0byBmaXQgZmlsZSBuYW1lcyBvbiBhIHNpbmdsZSBsaW5lJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnRyaW1OYW1lcylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudHJpbU5hbWVzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgLnNldE5hbWUoJ1dvcmtzcGFjZSBib3JkZXJzJylcclxuICAgICAgICAuc2V0RGVzYygnRGlzcGxheSBkaXZpZGVyIGxpbmVzIGJldHdlZW4gd29ya3NwYWNlIGVsZW1lbnRzJylcclxuICAgICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuYm9yZGVyc1RvZ2dsZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuYm9yZGVyc1RvZ2dsZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0ZvY3VzIG1vZGUnKVxyXG4gICAgICAuc2V0RGVzYygnSGlkZSB0YWIgYmFyIGFuZCBzdGF0dXMgYmFyLCBob3ZlciB0byBkaXNwbGF5IChjYW4gYmUgdG9nZ2xlZCB3aXRoIGhvdGtleSknKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZm9jdXNNb2RlKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5mb2N1c01vZGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVW5kZXJsaW5lIGludGVybmFsIGxpbmtzJylcclxuICAgICAgLnNldERlc2MoJ1Nob3cgdW5kZXJsaW5lcyBvbiBpbnRlcm5hbCBsaW5rcycpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy51bmRlcmxpbmVJbnRlcm5hbClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lSW50ZXJuYWwgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVW5kZXJsaW5lIGV4dGVybmFsIGxpbmtzJylcclxuICAgICAgLnNldERlc2MoJ1Nob3cgdW5kZXJsaW5lcyBvbiBleHRlcm5hbCBsaW5rcycpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy51bmRlcmxpbmVFeHRlcm5hbClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lRXh0ZXJuYWwgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWF4aW1pemUgbWVkaWEnKVxyXG4gICAgICAuc2V0RGVzYygnSW1hZ2VzIGFuZCB2aWRlb3MgZmlsbCB0aGUgd2lkdGggb2YgdGhlIGxpbmUnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZnVsbFdpZHRoTWVkaWEpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmZ1bGxXaWR0aE1lZGlhID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdicicpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ0xheW91dCd9KTtcclxuXHJcbiAgICBjb25zdCBsYXlvdXREZXNjID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnKTtcclxuXHJcbiAgICAgIGxheW91dERlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ3NwYW4nLCB7XHJcbiAgICAgICAgICB0ZXh0OiAnVGhlIGZvbGxvd2luZyBvcHRpb25zIHJlcXVpcmUgdGhlICdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgbGF5b3V0RGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiQ29udGV4dHVhbCBUeXBvZ3JhcGh5IHBsdWdpblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJvYnNpZGlhbjovL3Nob3ctcGx1Z2luP2lkPW9ic2lkaWFuLWNvbnRleHR1YWwtdHlwb2dyYXBoeVwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGxheW91dERlc2MuYXBwZW5kVGV4dCgnLiBUaGVzZSBvcHRpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgb24gYSBwZXItZmlsZSBiYXNpcyB1c2luZyBZQU1MLCAnKTtcclxuICAgICAgbGF5b3V0RGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwic2VlIGRvY3VtZW50YXRpb25cIixcclxuICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly9taW5pbWFsLmd1aWRlL0ZlYXR1cmVzL0Jsb2NrK3dpZHRoXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgbGF5b3V0RGVzYy5hcHBlbmRUZXh0KCcgZm9yIGRldGFpbHMuJyk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdJbWFnZSBncmlkcycpXHJcbiAgICAgIC5zZXREZXNjKCdUdXJuIGNvbnNlY3V0aXZlIGltYWdlcyBpbnRvIGNvbHVtbnMgXHUyMDE0IHRvIG1ha2UgYSBuZXcgcm93LCBhZGQgYW4gZXh0cmEgbGluZSBicmVhayBiZXR3ZWVuIGltYWdlcycpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbWdHcmlkKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbWdHcmlkID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnQ2hhcnQgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgY2hhcnQgYmxvY2tzJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbignY2hhcnQtZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignY2hhcnQtMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY2hhcnRXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY2hhcnRXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0lmcmFtZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciBpZnJhbWUgYmxvY2tzJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpZnJhbWUtd2lkZScsJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmlmcmFtZVdpZHRoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pZnJhbWVXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0ltYWdlIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIGltYWdlIGJsb2NrcycpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaW1nLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbWdXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNYXAgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgbWFwIGJsb2NrcycpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignbWFwLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXBXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubWFwV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdUYWJsZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciB0YWJsZSBhbmQgRGF0YXZpZXcgYmxvY2tzJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbigndGFibGUtZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbigndGFibGUtMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudGFibGVXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGFibGVXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnYnInKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdUeXBvZ3JhcGh5J30pO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVGV4dCBmb250IHNpemUnKVxyXG4gICAgICAuc2V0RGVzYygnVXNlZCBmb3IgdGhlIG1haW4gdGV4dCAoZGVmYXVsdCAxNiknKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzE2JylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLnRleHROb3JtYWwgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGV4dE5vcm1hbCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0Rm9udFNpemUoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdTbWFsbCBmb250IHNpemUnKVxyXG4gICAgICAuc2V0RGVzYygnVXNlZCBmb3IgdGV4dCBpbiB0aGUgc2lkZWJhcnMgYW5kIHRhYnMgKGRlZmF1bHQgMTMpJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCcxMycpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy50ZXh0U21hbGwgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGV4dFNtYWxsID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTGluZSBoZWlnaHQnKVxyXG4gICAgICAuc2V0RGVzYygnTGluZSBoZWlnaHQgb2YgdGV4dCAoZGVmYXVsdCAxLjUpJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCcxLjUnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZUhlaWdodCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lSGVpZ2h0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTm9ybWFsIGxpbmUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnTnVtYmVyIG9mIGNoYXJhY3RlcnMgcGVyIGxpbmUgKGRlZmF1bHQgNDApJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCc0MCcpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lV2lkdGggfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZVdpZHRoID0gcGFyc2VJbnQodmFsdWUudHJpbSgpKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnTnVtYmVyIG9mIGNoYXJhY3RlcnMgcGVyIGxpbmUgZm9yIHdpZGUgZWxlbWVudHMgKGRlZmF1bHQgNTApJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCc1MCcpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lV2lkdGhXaWRlIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVXaWR0aFdpZGUgPSBwYXJzZUludCh2YWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01heGltdW0gbGluZSB3aWR0aCAlJylcclxuICAgICAgLnNldERlc2MoJ1BlcmNlbnRhZ2Ugb2Ygc3BhY2UgaW5zaWRlIGEgcGFuZSB0aGF0IGEgbGluZSBjYW4gZmlsbCAoZGVmYXVsdCA4OCknKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzg4JylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLm1heFdpZHRoIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1heFdpZHRoID0gcGFyc2VJbnQodmFsdWUudHJpbSgpKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0VkaXRvciBmb250JylcclxuICAgICAgLnNldERlc2MoJ092ZXJyaWRlcyB0aGUgdGV4dCBmb250IGRlZmluZWQgaW4gT2JzaWRpYW4gQXBwZWFyYW5jZSBzZXR0aW5ncyB3aGVuIGluIGVkaXQgbW9kZScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignJylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLmVkaXRvckZvbnQgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZWRpdG9yRm9udCA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnYnInKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnU3VwcG9ydCBkZXZlbG9wbWVudCd9KTtcclxuXHJcbiAgICBjb25zdCBkb25hdGVUZXh0ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnKTtcclxuXHJcbiAgICAgIGRvbmF0ZVRleHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ3NwYW4nLCB7XHJcbiAgICAgICAgICB0ZXh0OiAnSWYgeW91IGVuam95IE1pbmltYWwsIGNvbnNpZGVyICdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgZG9uYXRlVGV4dC5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiYnV5aW5nIG1lIGEgY29mZmVlXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20va2VwYW5vXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgZG9uYXRlVGV4dC5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnc3BhbicsIHtcclxuICAgICAgICAgIHRleHQ6ICcsIGFuZCBmb2xsb3dpbmcgbWUgb24gVHdpdHRlciAnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGRvbmF0ZVRleHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIkBrZXBhbm9cIixcclxuICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly90d2l0dGVyLmNvbS9rZXBhbm9cIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgIGNvbnN0IGRpdiA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdkaXYnLCB7XHJcbiAgICAgIGNsczogJ21pbmltYWwtZG9uYXRpb24nLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xyXG4gICAgZGl2LmFwcGVuZENoaWxkKFxyXG4gICAgICBjcmVhdGVEb25hdGVCdXR0b24oXHJcbiAgICAgICAgJ2h0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20va2VwYW5vJyxcclxuICAgICAgICBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGJ1eU1lQUNvZmZlZSwgJ3RleHQveG1sJykuZG9jdW1lbnRFbGVtZW50LFxyXG4gICAgICApLFxyXG4gICAgKTtcclxuXHJcblxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgY3JlYXRlRG9uYXRlQnV0dG9uID0gKGxpbms6IHN0cmluZywgaW1nOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50ID0+IHtcclxuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gIGEuc2V0QXR0cmlidXRlKCdocmVmJywgbGluayk7XHJcbiAgYS5hZGRDbGFzcygnbWluaW1hbC1kb25hdGUtYnV0dG9uJyk7XHJcbiAgYS5hcHBlbmRDaGlsZChpbWcpO1xyXG4gIHJldHVybiBhO1xyXG59O1xyXG5cclxuY29uc3QgYnV5TWVBQ29mZmVlID0gYFxyXG48c3ZnIHdpZHRoPVwiMTUwXCIgaGVpZ2h0PVwiNDJcIiB2aWV3Qm94PVwiMCAwIDI2MCA3M1wiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjEwcHhcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuPHBhdGggZD1cIk0wIDExLjY4QzAgNS4yMjkzMiA1LjIyOTMxIDAgMTEuNjggMEgyNDguMkMyNTQuNjUxIDAgMjU5Ljg4IDUuMjI5MzEgMjU5Ljg4IDExLjY4VjYxLjMyQzI1OS44OCA2Ny43NzA3IDI1NC42NTEgNzMgMjQ4LjIgNzNIMTEuNjhDNS4yMjkzMSA3MyAwIDY3Ljc3MDcgMCA2MS4zMlYxMS42OFpcIiBmaWxsPVwiI0ZGREQwMFwiLz5cclxuPHBhdGggZD1cIk01Mi4yNTY2IDI0LjAwNzhMNTIuMjI0NiAyMy45ODg5TDUyLjE1MDQgMjMuOTY2M0M1Mi4xODAyIDIzLjk5MTUgNTIuMjE3NiAyNC4wMDYxIDUyLjI1NjYgMjQuMDA3OFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk01Mi43MjQ4IDI3LjM0NTdMNTIuNjg5NSAyNy4zNTU2TDUyLjcyNDggMjcuMzQ1N1pcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk01Mi4yNzAxIDI0LjAwMjRDNTIuMjY2IDI0LjAwMTkgNTIuMjYxOSAyNC4wMDA5IDUyLjI1OCAyMy45OTk1QzUyLjI1NzggMjQuMDAyMiA1Mi4yNTc4IDI0LjAwNDkgNTIuMjU4IDI0LjAwNzZDNTIuMjYyNCAyNC4wMDcgNTIuMjY2NiAyNC4wMDUyIDUyLjI3MDEgMjQuMDAyNFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk01Mi4yNTc4IDI0LjAwOTRINTIuMjY0M1YyNC4wMDU0TDUyLjI1NzggMjQuMDA5NFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk01Mi42OTczIDI3LjMzOTRMNTIuNzUxMyAyNy4zMDg2TDUyLjc3MTQgMjcuMjk3M0w1Mi43ODk3IDI3LjI3NzhDNTIuNzU1NCAyNy4yOTI2IDUyLjcyNDEgMjcuMzEzNSA1Mi42OTczIDI3LjMzOTRaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuMzQ4NCAyNC4wODEyTDUyLjI5NTYgMjQuMDMxTDUyLjI1OTggMjQuMDExNUM1Mi4yNzkgMjQuMDQ1NCA1Mi4zMTA4IDI0LjA3MDUgNTIuMzQ4NCAyNC4wODEyWlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTM5LjA2ODQgNTYuNDY5QzM5LjAyNjIgNTYuNDg3MiAzOC45ODkzIDU2LjUxNTggMzguOTYwOSA1Ni41NTJMMzguOTk0MyA1Ni41MzA2QzM5LjAxNjkgNTYuNTA5OCAzOS4wNDg5IDU2LjQ4NTMgMzkuMDY4NCA1Ni40NjlaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNDYuNzgwMiA1NC45NTE4QzQ2Ljc4MDIgNTQuOTA0MSA0Ni43NTY5IDU0LjkxMjkgNDYuNzYyNiA1NS4wODI2QzQ2Ljc2MjYgNTUuMDY4NyA0Ni43NjgzIDU1LjA1NDkgNDYuNzcwOCA1NS4wNDE3QzQ2Ljc3MzkgNTUuMDExNSA0Ni43NzY0IDU0Ljk4MiA0Ni43ODAyIDU0Ljk1MThaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNDUuOTg0NCA1Ni40NjlDNDUuOTQyMiA1Ni40ODcyIDQ1LjkwNTMgNTYuNTE1OCA0NS44NzcgNTYuNTUyTDQ1LjkxMDMgNTYuNTMwNkM0NS45MzI5IDU2LjUwOTggNDUuOTY0OSA1Ni40ODUzIDQ1Ljk4NDQgNTYuNDY5WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTMzLjYzMDcgNTYuODMwMUMzMy41OTg3IDU2LjgwMjMgMzMuNTU5NSA1Ni43ODQgMzMuNTE3NiA1Ni43NzczQzMzLjU1MTUgNTYuNzkzNyAzMy41ODU1IDU2LjgxIDMzLjYwODEgNTYuODIyNkwzMy42MzA3IDU2LjgzMDFaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNMzIuNDExOCA1NS42NTk4QzMyLjQwNjggNTUuNjEwMyAzMi4zOTE2IDU1LjU2MjQgMzIuMzY3MiA1NS41MTlDMzIuMzg0NSA1NS41NjQyIDMyLjM5OSA1NS42MTA0IDMyLjQxMDYgNTUuNjU3M0wzMi40MTE4IDU1LjY1OThaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNDAuNjIzIDM0LjcyMjFDMzguOTQ0OSAzNS40NDA1IDM3LjA0MDQgMzYuMjU1MSAzNC41NzIyIDM2LjI1NTFDMzMuNTM5NyAzNi4yNTMxIDMyLjUxMjIgMzYuMTExNCAzMS41MTc2IDM1LjgzNEwzMy4yMjQ3IDUzLjM2MDVDMzMuMjg1MSA1NC4wOTMgMzMuNjE4OCA1NC43NzYxIDM0LjE1OTUgNTUuMjczOUMzNC43MDAzIDU1Ljc3MTggMzUuNDA4NSA1Ni4wNDgyIDM2LjE0MzUgNTYuMDQ4QzM2LjE0MzUgNTYuMDQ4IDM4LjU2NCA1Ni4xNzM3IDM5LjM3MTYgNTYuMTczN0M0MC4yNDA5IDU2LjE3MzcgNDIuODQ3NCA1Ni4wNDggNDIuODQ3NCA1Ni4wNDhDNDMuNTgyMyA1Ni4wNDggNDQuMjkwNCA1NS43NzE2IDQ0LjgzMSA1NS4yNzM3QzQ1LjM3MTYgNTQuNzc1OSA0NS43MDUyIDU0LjA5MjkgNDUuNzY1NiA1My4zNjA1TDQ3LjU5NCAzMy45OTNDNDYuNzc2OSAzMy43MTQgNDUuOTUyMyAzMy41Mjg2IDQ1LjAyMjcgMzMuNTI4NkM0My40MTUgMzMuNTI3OSA0Mi4xMTk2IDM0LjA4MTcgNDAuNjIzIDM0LjcyMjFaXCIgZmlsbD1cIndoaXRlXCIvPlxyXG48cGF0aCBkPVwiTTI2LjIzNDQgMjcuMjQ0OUwyNi4yNjMzIDI3LjI3MTlMMjYuMjgyMSAyNy4yODMyQzI2LjI2NzYgMjcuMjY4OCAyNi4yNTE2IDI3LjI1NTkgMjYuMjM0NCAyNy4yNDQ5WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTU1LjQ5MDYgMjUuNjI3NEw1NS4yMzM2IDI0LjMzMDdDNTUuMDAyOSAyMy4xNjczIDU0LjQ3OTMgMjIuMDY4IDUzLjI4NTEgMjEuNjQ3NUM1Mi45MDI0IDIxLjUxMyA1Mi40NjggMjEuNDU1MiA1Mi4xNzQ1IDIxLjE3NjhDNTEuODgxIDIwLjg5ODMgNTEuNzk0MyAyMC40NjU5IDUxLjcyNjQgMjAuMDY0OUM1MS42MDA3IDE5LjMyODkgNTEuNDgyNSAxOC41OTIzIDUxLjM1MzcgMTcuODU3NUM1MS4yNDI0IDE3LjIyNTkgNTEuMTU0NCAxNi41MTYzIDUwLjg2NDcgMTUuOTM2OEM1MC40ODc2IDE1LjE1ODYgNDkuNzA1IDE0LjcwMzYgNDguOTI2OSAxNC40MDI1QzQ4LjUyODIgMTQuMjUzNyA0OC4xMjEzIDE0LjEyNzggNDcuNzA4MiAxNC4wMjU0QzQ1Ljc2NDIgMTMuNTEyNSA0My43MjAyIDEzLjMyNCA0MS43MjAyIDEzLjIxNjVDMzkuMzE5NyAxMy4wODQgMzYuOTEyOCAxMy4xMjM5IDM0LjUxOCAxMy4zMzU5QzMyLjczNTUgMTMuNDk4MSAzMC44NTgxIDEzLjY5NDIgMjkuMTY0MiAxNC4zMTA4QzI4LjU0NTEgMTQuNTM2NCAyNy45MDcxIDE0LjgwNzMgMjcuNDM2NCAxNS4yODU2QzI2Ljg1ODcgMTUuODczMyAyNi42NzAyIDE2Ljc4MjEgMjcuMDkxOSAxNy41MTVDMjcuMzkxNyAxOC4wMzU0IDI3Ljg5OTYgMTguNDAzMSAyOC40MzgyIDE4LjY0NjNDMjkuMTM5OCAxOC45NTk3IDI5Ljg3MjYgMTkuMTk4MiAzMC42MjQyIDE5LjM1NzhDMzIuNzE3MiAxOS44MjA0IDM0Ljg4NSAyMC4wMDIxIDM3LjAyMzMgMjAuMDc5NEMzOS4zOTMyIDIwLjE3NSA0MS43NjcgMjAuMDk3NSA0NC4xMjU2IDE5Ljg0NzRDNDQuNzA4OSAxOS43ODMzIDQ1LjI5MTEgMTkuNzA2NCA0NS44NzIzIDE5LjYxNjhDNDYuNTU2OCAxOS41MTE4IDQ2Ljk5NjEgMTguNjE2OCA0Ni43OTQzIDE3Ljk5MzNDNDYuNTUzIDE3LjI0NzkgNDUuOTA0NCAxNi45NTg3IDQ1LjE3MDkgMTcuMDcxMkM0NS4wNjI4IDE3LjA4ODIgNDQuOTU1MyAxNy4xMDM5IDQ0Ljg0NzIgMTcuMTE5Nkw0NC43NjkyIDE3LjEzMUM0NC41MjA4IDE3LjE2MjQgNDQuMjcyMyAxNy4xOTE3IDQ0LjAyMzggMTcuMjE5QzQzLjUxMDUgMTcuMjc0MyA0Mi45OTU5IDE3LjMxOTUgNDIuNDgwMSAxNy4zNTQ3QzQxLjMyNDkgMTcuNDM1MiA0MC4xNjY1IDE3LjQ3MjIgMzkuMDA4OCAxNy40NzQxQzM3Ljg3MTIgMTcuNDc0MSAzNi43MzI5IDE3LjQ0MjEgMzUuNTk3OCAxNy4zNjczQzM1LjA3OTkgMTcuMzMzMyAzNC41NjMyIDE3LjI5MDIgMzQuMDQ3OCAxNy4yMzc4QzMzLjgxMzQgMTcuMjEzMyAzMy41Nzk2IDE3LjE4NzUgMzMuMzQ1OCAxNy4xNTg2TDMzLjEyMzMgMTcuMTMwM0wzMy4wNzQ5IDE3LjEyMzRMMzIuODQ0MiAxNy4wOTAxQzMyLjM3MjggMTcuMDE5MSAzMS45MDE0IDE2LjkzNzQgMzEuNDM1IDE2LjgzODdDMzEuMzg4IDE2LjgyODMgMzEuMzQ1OSAxNi44MDIxIDMxLjMxNTcgMTYuNzY0NUMzMS4yODU2IDE2LjcyNjkgMzEuMjY5MSAxNi42ODAxIDMxLjI2OTEgMTYuNjMxOUMzMS4yNjkxIDE2LjU4MzcgMzEuMjg1NiAxNi41MzY5IDMxLjMxNTcgMTYuNDk5M0MzMS4zNDU5IDE2LjQ2MTcgMzEuMzg4IDE2LjQzNTYgMzEuNDM1IDE2LjQyNTFIMzEuNDQzOEMzMS44NDggMTYuMzM5IDMyLjI1NTMgMTYuMjY1NSAzMi42NjM4IDE2LjIwMTRDMzIuOCAxNi4xOCAzMi45MzY2IDE2LjE1OSAzMy4wNzM2IDE2LjEzODVIMzMuMDc3NEMzMy4zMzMyIDE2LjEyMTUgMzMuNTkwMyAxNi4wNzU3IDMzLjg0NDggMTYuMDQ1NUMzNi4wNTk1IDE1LjgxNTEgMzguMjg3NCAxNS43MzY2IDQwLjUxMjggMTUuODEwNEM0MS41OTMzIDE1Ljg0MTkgNDIuNjczMSAxNS45MDUzIDQzLjc0ODUgMTYuMDE0N0M0My45Nzk4IDE2LjAzODYgNDQuMjA5OCAxNi4wNjM3IDQ0LjQzOTkgMTYuMDkyQzQ0LjUyNzkgMTYuMTAyNyA0NC42MTY1IDE2LjExNTMgNDQuNzA1MSAxNi4xMjU5TDQ0Ljg4MzYgMTYuMTUxN0M0NS40MDQgMTYuMjI5MiA0NS45MjE3IDE2LjMyMzMgNDYuNDM2NyAxNi40MzM5QzQ3LjE5OTcgMTYuNTk5OSA0OC4xNzk2IDE2LjY1MzkgNDguNTE5IDE3LjQ4OThDNDguNjI3MSAxNy43NTUxIDQ4LjY3NjEgMTguMDQ5OSA0OC43MzU5IDE4LjMyODNMNDguODExOSAxOC42ODM0QzQ4LjgxMzkgMTguNjg5OCA0OC44MTU0IDE4LjY5NjMgNDguODE2MyAxOC43MDI5QzQ4Ljk5NjEgMTkuNTQwOSA0OS4xNzYgMjAuMzc5IDQ5LjM1NjIgMjEuMjE3QzQ5LjM2OTQgMjEuMjc4OSA0OS4zNjk3IDIxLjM0MjkgNDkuMzU3MSAyMS40MDQ5QzQ5LjM0NDUgMjEuNDY2OSA0OS4zMTkzIDIxLjUyNTcgNDkuMjgyOSAyMS41Nzc2QzQ5LjI0NjYgMjEuNjI5NCA0OS4yIDIxLjY3MzIgNDkuMTQ2IDIxLjcwNjJDNDkuMDkyIDIxLjczOTIgNDkuMDMxNyAyMS43NjA4IDQ4Ljk2OSAyMS43Njk1SDQ4Ljk2NEw0OC44NTQgMjEuNzg0Nkw0OC43NDUzIDIxLjc5OUM0OC40MDA5IDIxLjg0MzkgNDguMDU2IDIxLjg4NTggNDcuNzEwNyAyMS45MjQ3QzQ3LjAzMDcgMjIuMDAyMiA0Ni4zNDk2IDIyLjA2OTMgNDUuNjY3NCAyMi4xMjU5QzQ0LjMxMTkgMjIuMjM4NiA0Mi45NTM2IDIyLjMxMjUgNDEuNTkyNyAyMi4zNDc3QzQwLjg5OTIgMjIuMzY2MiA0MC4yMDU5IDIyLjM3NDggMzkuNTEyOSAyMi4zNzM1QzM2Ljc1NDMgMjIuMzcxMyAzMy45OTgxIDIyLjIxMSAzMS4yNTc4IDIxLjg5MzNDMzAuOTYxMSAyMS44NTgxIDMwLjY2NDUgMjEuODIwNCAzMC4zNjc4IDIxLjc4MjFDMzAuNTk3OCAyMS44MTE2IDMwLjIwMDYgMjEuNzU5NCAzMC4xMjAyIDIxLjc0ODFDMjkuOTMxNiAyMS43MjE3IDI5Ljc0MzEgMjEuNjk0MyAyOS41NTQ1IDIxLjY2NThDMjguOTIxNiAyMS41NzA5IDI4LjI5MjQgMjEuNDU0IDI3LjY2MDcgMjEuMzUxNUMyNi44OTcxIDIxLjIyNTggMjYuMTY2NyAyMS4yODg3IDI1LjQ3NiAyMS42NjU4QzI0LjkwOSAyMS45NzYgMjQuNDUwMSAyMi40NTE4IDI0LjE2MDUgMjMuMDI5N0MyMy44NjI2IDIzLjY0NTYgMjMuNzczOSAyNC4zMTYzIDIzLjY0MDcgMjQuOTc4MUMyMy41MDc0IDI1LjYzOTkgMjMuMyAyNi4zNTIxIDIzLjM3ODYgMjcuMDMxNUMyMy41NDc3IDI4LjQ5NzkgMjQuNTcyOCAyOS42ODk1IDI2LjA0NzMgMjkuOTU2QzI3LjQzNDUgMzAuMjA3NCAyOC44MjkyIDMwLjQxMTEgMzAuMjI3NiAzMC41ODQ2QzM1LjcyMTIgMzEuMjU3NCA0MS4yNzExIDMxLjMzNzkgNDYuNzgxOCAzMC44MjQ3QzQ3LjIzMDUgMzAuNzgyOCA0Ny42Nzg3IDMwLjczNzEgNDguMTI2MiAzMC42ODc2QzQ4LjI2NiAzMC42NzIzIDQ4LjQwNzQgMzAuNjg4NCA0OC41NDAxIDMwLjczNDhDNDguNjcyOSAzMC43ODEyIDQ4Ljc5MzYgMzAuODU2NiA0OC44OTM0IDMwLjk1NTdDNDguOTkzMiAzMS4wNTQ4IDQ5LjA2OTUgMzEuMTc0OSA0OS4xMTY5IDMxLjMwNzNDNDkuMTY0MiAzMS40Mzk3IDQ5LjE4MTQgMzEuNTgxMSA0OS4xNjcgMzEuNzIwOUw0OS4wMjc1IDMzLjA3NzNDNDguNzQ2MyAzNS44MTgxIDQ4LjQ2NTIgMzguNTU4NyA0OC4xODQgNDEuMjk5QzQ3Ljg5MDcgNDQuMTc2OSA0Ny41OTU1IDQ3LjA1NDUgNDcuMjk4NCA0OS45MzE5QzQ3LjIxNDYgNTAuNzQyMiA0Ny4xMzA4IDUxLjU1MjQgNDcuMDQ3IDUyLjM2MjRDNDYuOTY2NiA1My4xNiA0Ni45NTUyIDUzLjk4MjcgNDYuODAzOCA1NC43NzA5QzQ2LjU2NDkgNTYuMDEwMyA0NS43MjU4IDU2Ljc3MTUgNDQuNTAxNSA1Ny4wNDk5QzQzLjM3OTggNTcuMzA1MiA0Mi4yMzM5IDU3LjQzOTIgNDEuMDgzNiA1Ny40NDk3QzM5LjgwODMgNTcuNDU2NiAzOC41MzM2IDU3LjQgMzcuMjU4MyA1Ny40MDY5QzM1Ljg5NyA1Ny40MTQ1IDM0LjIyOTUgNTcuMjg4NyAzMy4xNzg2IDU2LjI3NTZDMzIuMjU1MyA1NS4zODU2IDMyLjEyNzcgNTMuOTkyMSAzMi4wMDIgNTIuNzg3MkMzMS44MzQ0IDUxLjE5MiAzMS42NjgyIDQ5LjU5NzEgMzEuNTAzNiA0OC4wMDIzTDMwLjU3OTYgMzkuMTM0NEwyOS45ODE5IDMzLjM5NjZDMjkuOTcxOCAzMy4zMDE3IDI5Ljk2MTggMzMuMjA4IDI5Ljk1MjQgMzMuMTEyNUMyOS44ODA3IDMyLjQyOCAyOS4zOTYxIDMxLjc1OCAyOC42MzI0IDMxLjc5MjZDMjcuOTc4OCAzMS44MjE1IDI3LjIzNTkgMzIuMzc3MSAyNy4zMTI1IDMzLjExMjVMMjcuNzU1NyAzNy4zNjY0TDI4LjY3MiA0Ni4xNjU3QzI4LjkzMzEgNDguNjY1MiAyOS4xOTM1IDUxLjE2NSAyOS40NTMzIDUzLjY2NTNDMjkuNTAzNiA1NC4xNDQyIDI5LjU1MDcgNTQuNjI0NCAyOS42MDM1IDU1LjEwMzRDMjkuODkwOCA1Ny43MjA1IDMxLjg4OTUgNTkuMTMxIDM0LjM2NDYgNTkuNTI4MkMzNS44MTAyIDU5Ljc2MDcgMzcuMjkxIDU5LjgwODUgMzguNzU4IDU5LjgzMjRDNDAuNjM4NiA1OS44NjI2IDQyLjUzOCA1OS45MzQ4IDQ0LjM4NzcgNTkuNTk0MkM0Ny4xMjg3IDU5LjA5MTQgNDkuMTg1MyA1Ny4yNjExIDQ5LjQ3ODggNTQuNDIyQzQ5LjU2MjYgNTMuNjAyNCA0OS42NDY0IDUyLjc4MjYgNDkuNzMwMiA1MS45NjI2QzUwLjAwODggNDkuMjUwNyA1MC4yODcxIDQ2LjUzODYgNTAuNTY0OSA0My44MjYzTDUxLjQ3MzcgMzQuOTY0MUw1MS44OTA0IDMwLjkwMjZDNTEuOTExMiAzMC43MDEyIDUxLjk5NjIgMzAuNTExOCA1Mi4xMzMgMzAuMzYyNUM1Mi4yNjk3IDMwLjIxMzIgNTIuNDUwOSAzMC4xMTE5IDUyLjY0OTcgMzAuMDczNkM1My40MzM1IDI5LjkyMDggNTQuMTgyNyAyOS42NiA1NC43NDAyIDI5LjA2MzVDNTUuNjI3NyAyOC4xMTM4IDU1LjgwNDMgMjYuODc1NiA1NS40OTA2IDI1LjYyNzRaTTI2LjAwNzEgMjYuNTAzNUMyNi4wMTkgMjYuNDk3OSAyNS45OTcgMjYuNjAwMyAyNS45ODc2IDI2LjY0ODFDMjUuOTg1NyAyNi41NzU4IDI1Ljk4OTUgMjYuNTExNyAyNi4wMDcxIDI2LjUwMzVaTTI2LjA4MzEgMjcuMDkxOEMyNi4wODk0IDI3LjA4NzQgMjYuMTA4MyAyNy4xMTI2IDI2LjEyNzggMjcuMTQyOEMyNi4wOTgyIDI3LjExNTEgMjYuMDc5NCAyNy4wOTQ0IDI2LjA4MjUgMjcuMDkxOEgyNi4wODMxWk0yNi4xNTc5IDI3LjE5MDVDMjYuMTg1IDI3LjIzNjQgMjYuMTk5NCAyNy4yNjUzIDI2LjE1NzkgMjcuMTkwNVYyNy4xOTA1Wk0yNi4zMDgyIDI3LjMxMjVIMjYuMzExOUMyNi4zMTE5IDI3LjMxNjkgMjYuMzE4OCAyNy4zMjEzIDI2LjMyMTQgMjcuMzI1N0MyNi4zMTcyIDI3LjMyMDggMjYuMzEyNiAyNy4zMTY0IDI2LjMwNzUgMjcuMzEyNUgyNi4zMDgyWk01Mi42MTMyIDI3LjEzMDJDNTIuMzMxNyAyNy4zOTc5IDUxLjkwNzQgMjcuNTIyNCA1MS40ODgyIDI3LjU4NDZDNDYuNzg2OCAyOC4yODIzIDQyLjAxNjkgMjguNjM1NSAzNy4yNjQgMjguNDc5NkMzMy44NjI0IDI4LjM2MzMgMzAuNDk2NyAyNy45ODU2IDI3LjEyOSAyNy41MDk4QzI2Ljc5OSAyNy40NjMzIDI2LjQ0MTQgMjcuNDAzIDI2LjIxNDUgMjcuMTU5N0MyNS43ODcxIDI2LjcwMDkgMjUuOTk3IDI1Ljc3NyAyNi4xMDgzIDI1LjIyMjZDMjYuMjEwMSAyNC43MTQ4IDI2LjQwNSAyNC4wMzc4IDI3LjAwOSAyMy45NjU2QzI3Ljk1MTggMjMuODU0OSAyOS4wNDY2IDI0LjI1MjggMjkuOTc5NCAyNC4zOTQyQzMxLjEwMjMgMjQuNTY1NiAzMi4yMjk1IDI0LjcwMjggMzMuMzYwOSAyNC44MDU5QzM4LjE4OTIgMjUuMjQ1OSA0My4wOTg2IDI1LjE3NzQgNDcuOTA1NiAyNC41MzM3QzQ4Ljc4MTcgMjQuNDE2IDQ5LjY1NDggMjQuMjc5MiA1MC41MjQ2IDI0LjEyMzNDNTEuMjk5NiAyMy45ODQ0IDUyLjE1ODggMjMuNzIzNiA1Mi42MjcxIDI0LjUyNjJDNTIuOTQ4MiAyNS4wNzMgNTIuOTkxIDI1LjgwNDYgNTIuOTQxMyAyNi40MjI1QzUyLjkyNiAyNi42OTE3IDUyLjgwODQgMjYuOTQ0OCA1Mi42MTI2IDI3LjEzMDJINTIuNjEzMlpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTgxLjEzMDIgNDAuMTkyOUM4MC44NTU2IDQwLjcxNjkgODAuNDc4MSA0MS4xNzMyIDc5Ljk5NzggNDEuNTYwNEM3OS41MTc1IDQxLjk0NzkgNzguOTU3MSA0Mi4yNjMzIDc4LjMxNjYgNDIuNTA2MkM3Ny42NzYxIDQyLjc0OTcgNzcuMDMxNSA0Mi45MTMxIDc2LjM4MzUgNDIuOTk2NEM3NS43MzUyIDQzLjA3OTkgNzUuMTA2IDQzLjA3MjcgNzQuNDk2MyA0Mi45NzM1QzczLjg4NjMgNDIuODc0OSA3My4zNjc0IDQyLjY3MzcgNzIuOTQwOCA0Mi4zNjk1TDczLjQyMTQgMzcuMzc3OUM3My44NjMzIDM3LjIyNjEgNzQuNDE5NyAzNy4wNzAzIDc1LjA5MDkgMzYuOTEwN0M3NS43NjE5IDM2Ljc1MTMgNzYuNDUyIDM2LjYzNzEgNzcuMTYxMyAzNi41Njg5Qzc3Ljg3MDUgMzYuNTAwMyA3OC41NDEyIDM2LjUwODQgNzkuMTc0NCAzNi41OTE3Qzc5LjgwNjggMzYuNjc1MyA4MC4zMDY1IDM2Ljg3NjUgODAuNjcyNSAzNy4xOTU4QzgwLjg3MDcgMzcuMzc4IDgxLjAzODcgMzcuNTc1NCA4MS4xNzYgMzcuNzg4M0M4MS4zMTMgMzguMDAxMSA4MS4zOTY5IDM4LjIyMTQgODEuNDI3NiAzOC40NDkzQzgxLjUwMzcgMzkuMDg3NSA4MS40MDQ3IDM5LjY2ODcgODEuMTMwMiA0MC4xOTI5Wk03NC4xNTMgMjkuNTYwMkM3NC40NzM0IDI5LjM2MjcgNzQuODU4NSAyOS4xODc3IDc1LjMwODMgMjkuMDM1NkM3NS43NTgxIDI4Ljg4NDEgNzYuMjE5NSAyOC43Nzc0IDc2LjY5MjMgMjguNzE2N0M3Ny4xNjQ4IDI4LjY1NjIgNzcuNjI2MiAyOC42NDgxIDc4LjA3NjMgMjguNjkzOEM3OC41MjU4IDI4LjczOTUgNzguOTIyOCAyOC44NjQ3IDc5LjI2NTkgMjkuMDY5N0M3OS42MDg5IDI5LjI3NTEgNzkuODY0MyAyOS41NzE0IDgwLjAzMiAyOS45NTg2QzgwLjE5OTcgMzAuMzQ2NCA4MC4yNDU2IDMwLjgzNjUgODAuMTY5MyAzMS40MjlDODAuMTA4MyAzMS45MDAxIDc5LjkyMTEgMzIuMjk5MSA3OS42MDg5IDMyLjYyNTZDNzkuMjk2MyAzMi45NTI2IDc4LjkxNDcgMzMuMjI1OSA3OC40NjUyIDMzLjQ0NjJDNzguMDE1NCAzMy42NjY4IDc3LjUzODggMzMuODQxNSA3Ny4wMzU2IDMzLjk3MDJDNzYuNTMyMSAzNC4wOTk3IDc2LjA0NzcgMzQuMTk0OSA3NS41ODI4IDM0LjI1NTNDNzUuMTE3NiAzNC4zMTYzIDc0LjcxMzcgMzQuMzU0NSA3NC4zNzA2IDM0LjM2OTJDNzQuMDI3MyAzNC4zODQ1IDczLjgwMjEgMzQuMzkyMSA3My42OTU2IDM0LjM5MjFMNzQuMTUzIDI5LjU2MDJaTTgzLjYwMDcgMzYuOTY3NkM4My4zNTY2IDM2LjQzNjEgODMuMDI4NyAzNS45Njg5IDgyLjYxNzIgMzUuNTY1OEM4Mi4yMDU0IDM1LjE2MzMgODEuNzE3IDM0Ljg3MDkgODEuMTUzMSAzNC42ODg1QzgxLjM5NjkgMzQuNDkxIDgxLjYzNzEgMzQuMTc5NSA4MS44NzM3IDMzLjc1MzlDODIuMTA5OSAzMy4zMjg4IDgyLjMxMTkgMzIuODY1IDgyLjQ3OTYgMzIuMzYzNkM4Mi42NDc0IDMxLjg2MTkgODIuNzYyIDMxLjM1NyA4Mi44MjI5IDMwLjg0NzhDODIuODgzNiAzMC4zMzg5IDgyLjg2MDcgMjkuOTAyIDgyLjc1NDQgMjkuNTM3QzgyLjQ5NDcgMjguNjI1NiA4Mi4wODcgMjcuOTExNCA4MS41MzAzIDI3LjM5NDZDODAuOTczNCAyNi44NzgyIDgwLjMyNTcgMjYuNTIxMSA3OS41ODYgMjYuMzIzM0M3OC44NDYyIDI2LjEyNjQgNzguMDMwNCAyNi4wODQyIDc3LjEzODMgMjYuMTk4MUM3Ni4yNDYyIDI2LjMxMiA3NS4zMzQ3IDI2LjUzNjEgNzQuNDA0OSAyNi44NzA0Qzc0LjQwNDkgMjYuNzk0NiA3NC40MTI0IDI2LjcxNDggNzQuNDI3OCAyNi42MzEyQzc0LjQ0MjYgMjYuNTQ4IDc0LjQ1MDQgMjYuNDYwNCA3NC40NTA0IDI2LjM2OUM3NC40NTA0IDI2LjE0MTEgNzQuMzM2MSAyNS45NDM5IDc0LjEwNzQgMjUuNzc2NUM3My44Nzg3IDI1LjYwOTMgNzMuNjE1NSAyNS41MTA3IDczLjMxODMgMjUuNDgwMUM3My4wMjA5IDI1LjQ1IDcyLjczMSAyNS41MTQyIDcyLjQ0ODkgMjUuNjczOEM3Mi4xNjY1IDI1LjgzMzQgNzEuOTcyMSAyNi4xMjY0IDcxLjg2NTYgMjYuNTUxMUM3MS43NDM0IDI3LjkxODkgNzEuNjIxNSAyOS4zMzk4IDcxLjQ5OTYgMzAuODEzNEM3MS4zNzc0IDMyLjI4NzUgNzEuMjQ4IDMzLjc3NjcgNzEuMTEwNyAzNS4yODEyQzcwLjk3MzUgMzYuNzg1NSA3MC44MzYyIDM4LjI3ODQgNzAuNjk4OSAzOS43NTk4QzcwLjU2MTYgNDEuMjQxNCA3MC40MjQ0IDQyLjY2NTkgNzAuMjg3MSA0NC4wMzMzQzcwLjMzMyA0NC40NDM2IDcwLjQ0NzMgNDQuNzYyOSA3MC42MzA0IDQ0Ljk5MDdDNzAuODEzMyA0NS4yMTg5IDcxLjAyNjggNDUuMzU1NiA3MS4yNzA5IDQ1LjQwMUM3MS41MTQ3IDQ1LjQ0NjcgNzEuNzcwNCA0NS40MDQ1IDcyLjAzNzEgNDUuMjc1NUM3Mi4zMDM4IDQ1LjE0NjkgNzIuNTM2NSA0NC45MjIyIDcyLjczNSA0NC42MDMyQzczLjM0NDcgNDQuOTM3NSA3NC4wMzExIDQ1LjE1NDEgNzQuNzkzOCA0NS4yNTNDNzUuNTU2MSA0NS4zNTE2IDc2LjMyOTggNDUuMzUxNiA3Ny4xMTU3IDQ1LjI1M0M3Ny45MDA3IDQ1LjE1NDEgNzguNjc0NyA0NC45NjgyIDc5LjQzNzQgNDQuNjk0M0M4MC4xOTk3IDQ0LjQyMTEgODAuODkzNiA0NC4wNzkgODEuNTE5IDQzLjY2OUM4Mi4xNDQxIDQzLjI1ODYgODIuNjcwMyA0Mi43OTExIDgzLjA5NzUgNDIuMjY3MUM4My41MjQ0IDQxLjc0MjYgODMuODA2NSA0MS4xNzY3IDgzLjk0MzcgNDAuNTY5MUM4NC4wODEgMzkuOTQ2IDg0LjExOSAzOS4zMjMxIDg0LjA1ODEgMzguN0M4My45OTcxIDM4LjA3NzEgODMuODQ0NSAzNy41IDgzLjYwMDcgMzYuOTY3NlpcIiBmaWxsPVwiIzBEMEMyM1wiLz5cclxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEwNS45MTUgNDkuMDAxN0MxMDUuODMyIDQ5LjUwMzEgMTA1LjcxMyA1MC4wMzExIDEwNS41NjEgNTAuNTg2QzEwNS40MDggNTEuMTQwMyAxMDUuMjI5IDUxLjY0NTggMTA1LjAyMyA1Mi4xMDE4QzEwNC44MTggNTIuNTU3NSAxMDQuNTg5IDUyLjkyNTYgMTA0LjMzNyA1My4yMDdDMTA0LjA4NSA1My40ODggMTAzLjgxNSA1My42MDYgMTAzLjUyNSA1My41NjA2QzEwMy4yOTYgNTMuNTI5NyAxMDMuMTUxIDUzLjM4NTQgMTAzLjA5MSA1My4xMjc0QzEwMy4wMjkgNTIuODY4NiAxMDMuMDI5IDUyLjU0OTcgMTAzLjA5MSA1Mi4xN0MxMDMuMTUxIDUxLjc5MDEgMTAzLjI2OSA1MS4zNjA3IDEwMy40NDUgNTAuODgyMUMxMDMuNjIgNTAuNDAzNSAxMDMuODM0IDQ5LjkyODQgMTA0LjA4NSA0OS40NTc3QzEwNC4zMzcgNDguOTg2NCAxMDQuNjIzIDQ4LjUzNDcgMTA0Ljk0MyA0OC4xMDE1QzEwNS4yNjQgNDcuNjY4NiAxMDUuNTk5IDQ3LjMwNzUgMTA1Ljk1IDQ3LjAxODlDMTA2LjAyNiA0Ny4xMSAxMDYuMDYgNDcuMzM3OCAxMDYuMDUzIDQ3LjcwMjhDMTA2LjA0NSA0OC4wNjc0IDEwNS45OTkgNDguNTAwNiAxMDUuOTE1IDQ5LjAwMTdaTTExMy42NyAzOS4xMDk3QzExMy40NjQgMzguODgxOSAxMTMuMjEzIDM4Ljc1MjkgMTEyLjkxNSAzOC43MjIzQzExMi42MTggMzguNjkxOSAxMTIuMzE3IDM4Ljg1OSAxMTIuMDEyIDM5LjIyMzdDMTExLjgxMyAzOS41ODgzIDExMS41NjIgMzkuOTM3OSAxMTEuMjU3IDQwLjI3MjJDMTEwLjk1MiA0MC42MDY3IDExMC42MzUgNDAuOTEwMyAxMTAuMzA3IDQxLjE4MzlDMTA5Ljk4IDQxLjQ1NzIgMTA5LjY2NyA0MS42OTMxIDEwOS4zNyA0MS44OTAzQzEwOS4wNzIgNDIuMDg4MSAxMDguODQgNDIuMjMyNCAxMDguNjcyIDQyLjMyMzVDMTA4LjYxMSA0MS44Mzc0IDEwOC41NzYgNDEuMzEzMiAxMDguNTY5IDQwLjc1MDdDMTA4LjU2MSA0MC4xODg2IDEwOC41NzMgMzkuNjE5IDEwOC42MDMgMzkuMDQxNUMxMDguNjQ5IDM4LjIyMDkgMTA4Ljc0NCAzNy4zOTMgMTA4Ljg4OSAzNi41NTdDMTA5LjAzNCAzNS43MjEzIDEwOS4yNDQgMzQuOTAwNyAxMDkuNTE4IDM0LjA5NTFDMTA5LjUxOCAzMy42NyAxMDkuNDE5IDMzLjMyNDIgMTA5LjIyMSAzMy4wNTgyQzEwOS4wMjIgMzIuNzkyNCAxMDguNzgyIDMyLjYyNSAxMDguNSAzMi41NTY3QzEwOC4yMTggMzIuNDg4NSAxMDcuOTI5IDMyLjUyNjQgMTA3LjYzMSAzMi42NzA3QzEwNy4zMzQgMzIuODE1MyAxMDcuMDc4IDMzLjA3NzUgMTA2Ljg2NSAzMy40NTY5QzEwNi42ODIgMzMuOTU4NiAxMDYuNDcyIDM0LjUyMDcgMTA2LjIzNiAzNS4xNDM2QzEwNS45OTkgMzUuNzY2NyAxMDUuNzMyIDM2LjQwMTIgMTA1LjQzNSAzNy4wNDY5QzEwNS4xMzggMzcuNjkzMSAxMDQuODA2IDM4LjMxOTcgMTA0LjQ0IDM4LjkyNzNDMTA0LjA3NCAzOS41MzU0IDEwMy42NzQgNDAuMDc1IDEwMy4yMzkgNDAuNTQ1N0MxMDIuODA0IDQxLjAxNjggMTAyLjMzMSA0MS4zODU0IDEwMS44MjEgNDEuNjUxMkMxMDEuMzEgNDEuOTE3MiAxMDAuNzU3IDQyLjAzNDkgMTAwLjE2MiA0Mi4wMDQ1Qzk5Ljg4NzYgNDEuOTI4NSA5OS42ODkzIDQxLjcyMzUgOTkuNTY3NSA0MS4zODg5Qzk5LjQ0NTMgNDEuMDU0OSA5OS4zNzMgNDAuNjM2OCA5OS4zNTA0IDQwLjEzNTRDOTkuMzI3NSAzOS42MzQgOTkuMzUwNCAzOS4wODMxIDk5LjQxODkgMzguNDgyOEM5OS40ODc3IDM3Ljg4MjggOTkuNTc5MSAzNy4yODYzIDk5LjY5MzQgMzYuNjkzOEM5OS44MDc4IDM2LjEwMSA5OS45MzM3IDM1LjUzODkgMTAwLjA3MSAzNS4wMDcxQzEwMC4yMDggMzQuNDc1MyAxMDAuMzM3IDM0LjAyNjggMTAwLjQ2IDMzLjY2MjJDMTAwLjY0MyAzMy4yMjE4IDEwMC42NDMgMzIuODUyOSAxMDAuNDYgMzIuNTU2N0MxMDAuMjc3IDMyLjI2MDQgMTAwLjAyNSAzMi4wNjMxIDk5LjcwNSAzMS45NjRDOTkuMzg0NiAzMS44NjU0IDk5LjA0ODkgMzEuODY5NCA5OC42OTgzIDMxLjk3NTVDOTguMzQ3NCAzMi4wODE5IDk4LjA5NTggMzIuMzE3MyA5Ny45NDM1IDMyLjY4MkM5Ny42ODQgMzMuMzA1NCA5Ny40NDc1IDM0LjAwNCA5Ny4yMzQyIDM0Ljc3OUM5Ny4wMjA2IDM1LjU1MzkgOTYuODQ5MSAzNi4zNTU4IDk2LjcxOTcgMzcuMTgzNkM5Ni41ODk2IDM4LjAxMjEgOTYuNTE3MSAzOC44MzI3IDk2LjUwMiAzOS42NDU2Qzk2LjUwMTEgMzkuNjk4NSA5Ni41MDM3IDM5Ljc0ODggOTYuNTAzNCAzOS44MDE0Qzk2LjE3MDkgNDAuNjg0OCA5NS44NTQgNDEuMzUyNSA5NS41NTMgNDEuNzk5MkM5NS4xNjQxIDQyLjM3NyA5NC43MjUzIDQyLjYyNzcgOTQuMjM3NSA0Mi41NTEzQzk0LjAyMzYgNDIuNDYwMyA5My44ODMyIDQyLjI0NzcgOTMuODE0NyA0MS45MTMyQzkzLjc0NTMgNDEuNTc5MiA5My43MjI3IDQxLjE2ODkgOTMuNzQ1MyA0MC42ODIyQzkzLjc2ODggNDAuMTk2NCA5My44MjYgMzkuNjQ1NiA5My45MTcxIDM5LjAyOTlDOTQuMDA5MSAzOC40MTQ2IDk0LjEyMjkgMzcuNzc2NCA5NC4yNjAxIDM3LjExNTRDOTQuMzk3NyAzNi40NTQxIDk0LjU0MjUgMzUuNzg5OSA5NC42OTQ5IDM1LjEyMUM5NC44NDcyIDM0LjQ1MjUgOTQuOTg0NSAzMy44MjE4IDk1LjEwNyAzMy4yMjkxQzk1LjA5MTYgMzIuNjk3MyA5NC45MzUyIDMyLjI5MSA5NC42Mzc3IDMyLjAwOTdDOTQuMzQwNSAzMS43Mjg5IDkzLjkyNDcgMzEuNjE4NyA5My4zOTEzIDMxLjY3OTFDOTMuMDI1MyAzMS44MzEyIDkyLjc1NDIgMzIuMDI5IDkyLjU3OSAzMi4yNzE5QzkyLjQwMzQgMzIuNTE0OCA5Mi4yNjIzIDMyLjgyNjUgOTIuMTU1OCAzMy4yMDYyQzkyLjA5NDYgMzMuNDA0IDkyLjAwMzIgMzMuNzk5IDkxLjg4MTMgMzQuMzkxOEM5MS43NTkxIDM0Ljk4NCA5MS42MDMgMzUuNjY0NCA5MS40MTIzIDM2LjQzMTVDOTEuMjIxNyAzNy4xOTkyIDkwLjk5NjcgMzguMDAwNSA5MC43Mzc2IDM4LjgzNjJDOTAuNDc4MSAzOS42NzE5IDkwLjE4ODUgNDAuNDI4MyA4OS44Njg0IDQxLjEwNDFDODkuNTQ4IDQxLjc4MDEgODkuMTk3MiA0Mi4zMjM1IDg4LjgxNjEgNDIuNzMzOEM4OC40MzQ4IDQzLjE0MzggODguMDIzIDQzLjMxMTMgODcuNTgwNyA0My4yMzUyQzg3LjMzNjYgNDMuMTg5NSA4Ny4xODA1IDQyLjkzODggODcuMTEyIDQyLjQ4MzFDODcuMDQzMiA0Mi4wMjcxIDg3LjAzMTkgNDEuNDY1MyA4Ny4wNzc1IDQwLjc5NjRDODcuMTIzMyA0MC4xMjc5IDg3LjIxNDggMzkuMzk0NiA4Ny4zNTIgMzguNTk3MUM4Ny40ODkzIDM3Ljc5OTMgODcuNjMgMzcuMDQzNCA4Ny43NzUyIDM2LjMyODlDODcuOTIgMzUuNjE0OSA4OC4wNTM1IDM0Ljk4NCA4OC4xNzU2IDM0LjQzNzJDODguMjk3NSAzMy44OTAxIDg4LjM4MTQgMzMuNTI1NCA4OC40MjcyIDMzLjM0MzNDODguNDI3MiAzMi45MDI2IDg4LjMyNzcgMzIuNTQ5NSA4OC4xMjk4IDMyLjI4MzJDODcuOTMxMyAzMi4wMTc4IDg3LjY5MTMgMzEuODUwMyA4Ny40MDkyIDMxLjc4MThDODcuMTI2OCAzMS43MTM2IDg2LjgzNzIgMzEuNzUxNCA4Ni41NCAzMS44OTU3Qzg2LjI0MjYgMzIuMDQwMyA4NS45ODcyIDMyLjMwMjYgODUuNzczNiAzMi42ODJDODUuNjk3MyAzMy4wOTIzIDg1LjU5OCAzMy41Njc0IDg1LjQ3NjEgMzQuMTA2N0M4NS4zNTM5IDM0LjY0NTkgODUuMjM2MSAzNS4yMDA2IDg1LjEyMTggMzUuNzcwNUM4NS4wMDc0IDM2LjM0MDQgODQuOTAwMyAzNi44OTg4IDg0LjgwMTQgMzcuNDQ1OUM4NC43MDIxIDM3Ljk5MyA4NC42Mjk5IDM4LjQ3MTYgODQuNTg0IDM4Ljg4MTlDODQuNTUzNiAzOS4yMDA4IDg0LjUxOSAzOS41OTIzIDg0LjQ4MTMgNDAuMDU1NkM4NC40NDMgNDAuNTE5NCA4NC40MjM4IDQxLjAwOTIgODQuNDIzOCA0MS41MjU3Qzg0LjQyMzggNDIuMDQyNyA4NC40NjE4IDQyLjU1NTQgODQuNTM4NSA0My4wNjQzQzg0LjYxNDUgNDMuNTczNSA4NC43NTE4IDQ0LjA0MDggODQuOTUgNDQuNDY1OUM4NS4xNDgyIDQ0Ljg5MTUgODUuNDI2NSA0NS4yNDA4IDg1Ljc4NTIgNDUuNTE0NEM4Ni4xNDMzIDQ1Ljc4NzkgODYuNTk3MiA0NS45Mzk3IDg3LjE0NjMgNDUuOTcwNEM4Ny43MTAxIDQ2LjAwMDUgODguMjAyIDQ1Ljk1OTEgODguNjIxNyA0NS44NDQ5Qzg5LjA0MSA0NS43MzEgODkuNDIyMSA0NS41NTIzIDg5Ljc2NTQgNDUuMzA5MUM5MC4xMDg0IDQ1LjA2NjUgOTAuNDIxIDQ0Ljc3NzYgOTAuNzAzMyA0NC40NDNDOTAuOTg1MSA0NC4xMDkxIDkxLjI2MzcgNDMuNzQ0NCA5MS41MzgzIDQzLjM0OTFDOTEuNzk3NCA0My45MjY5IDkyLjEzMjkgNDQuMzc0OCA5Mi41NDQ3IDQ0LjY5NEM5Mi45NTY1IDQ1LjAxMyA5My4zOTEzIDQ1LjIwMzIgOTMuODQ4NiA0NS4yNjM3Qzk0LjMwNiA0NS4zMjQxIDk0Ljc3MTUgNDUuMjYwMiA5NS4yNDQyIDQ1LjA2OTlDOTUuNzE2NyA0NC44ODAzIDk2LjE0MzYgNDQuNTU3MyA5Ni41MjUyIDQ0LjEwMTJDOTYuNzc2MiA0My44MjE2IDk3LjAxMzEgNDMuNTAzOCA5Ny4yMzU0IDQzLjE1MjVDOTcuMzI5NyA0My4zMTcgOTcuNDMwMSA0My40NzU4IDk3LjU0MyA0My42MjI0Qzk3LjkxNjggNDQuMTA5MSA5OC40MjQgNDQuNDQzIDk5LjA2NDUgNDQuNjI1NUM5OS43NTA2IDQ0LjgwOCAxMDAuNDIxIDQ0LjgzODYgMTAxLjA3NyA0NC43MTY5QzEwMS43MzMgNDQuNTk1NCAxMDIuMzU4IDQ0LjM3NDggMTAyLjk1MyA0NC4wNTU5QzEwMy41NDggNDMuNzM2NiAxMDQuMTAxIDQzLjM1MzIgMTA0LjYxMiA0Mi45MDQ3QzEwNS4xMjIgNDIuNDU2NSAxMDUuNTY4IDQxLjk4OTUgMTA1Ljk1IDQxLjUwMjhDMTA1LjkzNCA0MS44NTI0IDEwNS45MjcgNDIuMTgzMiAxMDUuOTI3IDQyLjQ5NDRDMTA1LjkyNyA0Mi44MDYxIDEwNS45MTkgNDMuMTQzOCAxMDUuOTA0IDQzLjUwODhDMTA1LjE0MSA0NC4wNDA4IDEwNC40MjEgNDQuNjc5IDEwMy43NDIgNDUuNDIzM0MxMDMuMDY0IDQ2LjE2NzYgMTAyLjQ2OSA0Ni45NjE2IDEwMS45NTggNDcuODA1MUMxMDEuNDQ3IDQ4LjY0ODMgMTAxLjA0NyA0OS41MDMxIDEwMC43NTcgNTAuMzY5MUMxMDAuNDY3IDUxLjIzNTcgMTAwLjMyNiA1Mi4wNDQ1IDEwMC4zMzQgNTIuNzk2OUMxMDAuMzQxIDUzLjU0OSAxMDAuNTIxIDU0LjIwNiAxMDAuODcxIDU0Ljc2ODFDMTAxLjIyMiA1NS4zMzA2IDEwMS43OTQgNTUuNzMzMSAxMDIuNTg3IDU1Ljk3NjNDMTAzLjQxMSA1Ni4yMzQ4IDEwNC4xMzUgNTYuMjQyIDEwNC43NiA1NS45OTkxQzEwNS4zODYgNTUuNzU1OSAxMDUuOTMxIDU1LjM1MzEgMTA2LjM5NiA1NC43OTFDMTA2Ljg2MSA1NC4yMjg5IDEwNy4yNDIgNTMuNTQ5IDEwNy41NCA1Mi43NTEyQzEwNy44MzcgNTEuOTUzNCAxMDguMDczIDUxLjEyMTUgMTA4LjI0OSA1MC4yNTU1QzEwOC40MjQgNDkuMzg5NCAxMDguNTM1IDQ4LjUzNzkgMTA4LjU4IDQ3LjcwMjhDMTA4LjYyNiA0Ni44NjY4IDEwOC42MjYgNDYuMTIxOSAxMDguNTggNDUuNDY4N0MxMDkuODkyIDQ0LjkyMTkgMTEwLjk2NyA0NC4yMzA1IDExMS44MDYgNDMuMzk0NUMxMTIuNjQ1IDQyLjU1OTQgMTEzLjMzOCA0MS42Nzc4IDExMy44ODcgNDAuNzUwN0MxMTQuMDU1IDQwLjUyMjkgMTE0LjExMiA0MC4yNDkzIDExNC4wNTkgMzkuOTMwNEMxMTQuMDA2IDM5LjYxMTEgMTEzLjg3NiAzOS4zMzc2IDExMy42NyAzOS4xMDk3WlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxyXG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTQyLjUzIDM3LjY1MTVDMTQyLjU3NSAzNy4zMDIyIDE0Mi42NDQgMzYuOTMzNSAxNDIuNzM1IDM2LjU0NkMxNDIuODI3IDM2LjE1ODUgMTQyLjk0MSAzNS43ODIzIDE0My4wNzkgMzUuNDE3N0MxNDMuMjE2IDM1LjA1MzEgMTQzLjM3NiAzNC43Mzc5IDE0My41NTkgMzQuNDcxOEMxNDMuNzQyIDM0LjIwNjEgMTQzLjkzNyAzNC4wMTYxIDE0NC4xNDIgMzMuOTAxOUMxNDQuMzQ4IDMzLjc4ODMgMTQ0LjU1OCAzMy43OTk1IDE0NC43NzEgMzMuOTM2QzE0NSAzNC4wNzMxIDE0NS4xNDEgMzQuMzYxNyAxNDUuMTk1IDM0LjgwMjFDMTQ1LjI0OCAzNS4yNDMzIDE0NS4xOTUgMzUuNzE0MSAxNDUuMDM0IDM2LjIxNTVDMTQ0Ljg3NCAzNi43MTcyIDE0NC41ODggMzcuMTg3OSAxNDQuMTc3IDM3LjYyODZDMTQzLjc2NSAzOC4wNjk2IDE0My4yMDggMzguMzU3OSAxNDIuNTA3IDM4LjQ5NDdDMTQyLjQ3NiAzOC4yODI0IDE0Mi40ODQgMzguMDAxMSAxNDIuNTMgMzcuNjUxNVpNMTUwLjQ1NiAzOC41ODU3QzE1MC4yMDQgMzguNTEwMyAxNDkuOTY0IDM4LjUwMjUgMTQ5LjczNSAzOC41NjMyQzE0OS41MDYgMzguNjIzOSAxNDkuMzYxIDM4Ljc4MzUgMTQ5LjMwMSAzOS4wNDJDMTQ5LjE3OCAzOS41MjgxIDE0OC45ODQgNDAuMDI1OCAxNDguNzE3IDQwLjUzNDdDMTQ4LjQ1IDQxLjA0MzkgMTQ4LjEyMiA0MS41MjYyIDE0Ny43MzQgNDEuOTgyMkMxNDcuMzQ1IDQyLjQzOCAxNDYuOTA2IDQyLjg0MDggMTQ2LjQxOCA0My4xOTAxQzE0NS45MyA0My41Mzk3IDE0NS40MTkgNDMuNzkwNCAxNDQuODg2IDQzLjk0MjJDMTQ0LjM1MSA0NC4xMDk2IDE0My45MSA0NC4xMjg0IDE0My41NTkgNDMuOTk5MUMxNDMuMjA4IDQzLjg3MDUgMTQyLjkzIDQzLjY0OTggMTQyLjcyNCA0My4zMzg0QzE0Mi41MTggNDMuMDI3IDE0Mi4zNjkgNDIuNjUwOCAxNDIuMjc4IDQyLjIxMDFDMTQyLjE4NiA0MS43Njk0IDE0Mi4xMzMgNDEuMzEzNyAxNDIuMTE4IDQwLjg0MjRDMTQyLjk4NyA0MC45MDM0IDE0My43NjEgNDAuNzQ3OCAxNDQuNDQgNDAuMzc1MUMxNDUuMTE4IDQwLjAwMzIgMTQ1LjY5NCAzOS41MDkgMTQ2LjE2NyAzOC44OTM3QzE0Ni42MzkgMzguMjc4NCAxNDYuOTk4IDM3LjU4NyAxNDcuMjQyIDM2LjgxOTVDMTQ3LjQ4NSAzNi4wNTI0IDE0Ny42MjMgMzUuMjg4NyAxNDcuNjUzIDM0LjUyODhDMTQ3LjY2OSAzMy44MTQ2IDE0Ny41NjIgMzMuMjEwOCAxNDcuMzMzIDMyLjcxNjlDMTQ3LjEwNSAzMi4yMjMzIDE0Ni43OTYgMzEuODM5IDE0Ni40MDcgMzEuNTY1OEMxNDYuMDE4IDMxLjI5MjIgMTQ1LjU3MiAzMS4xMzI2IDE0NS4wNjkgMzEuMDg3MkMxNDQuNTY2IDMxLjA0MTUgMTQ0LjA1NCAzMS4xMSAxNDMuNTM2IDMxLjI5MjJDMTQyLjkxIDMxLjUwNSAxNDIuMzgxIDMxLjg1MDYgMTQxLjk0NiAzMi4zMjk0QzE0MS41MTIgMzIuODA4IDE0MS4xNDkgMzMuMzYyOSAxNDAuODYgMzMuOTkzM0MxNDAuNTcgMzQuNjIzOSAxNDAuMzQxIDM1LjMwMzggMTQwLjE3MyAzNi4wMzNDMTQwLjAwNSAzNi43NjI2IDEzOS44ODMgMzcuNDgwNiAxMzkuODA3IDM4LjE4NzNDMTM5LjczOSAzOC44MjE0IDEzOS43MDIgMzkuNDI3OCAxMzkuNjg5IDQwLjAxM0MxMzkuNjU3IDQwLjA4NzQgMTM5LjYyNSA0MC4xNTg4IDEzOS41OSA0MC4yMzgzQzEzOS4zNTQgNDAuNzc4MiAxMzkuMDc5IDQxLjMwNjIgMTM4Ljc2NiA0MS44MjI2QzEzOC40NTQgNDIuMzM5NCAxMzguMTA3IDQyLjc3MjUgMTM3LjcyNiA0My4xMjE4QzEzNy4zNDQgNDMuNDcxNCAxMzYuOTQ4IDQzLjU5MjkgMTM2LjUzNiA0My40ODY1QzEzNi4yOTIgNDMuNDI2IDEzNi4xNTkgNDMuMTQ0NCAxMzYuMTM2IDQyLjY0MzNDMTM2LjExMyA0Mi4xNDE2IDEzNi4xMzkgNDEuNTE4NyAxMzYuMjE2IDQwLjc3NDFDMTM2LjI5MiA0MC4wMjk4IDEzNi4zOCAzOS4yMjM5IDEzNi40NzkgMzguMzU3OUMxMzYuNTc4IDM3LjQ5MTggMTM2LjYyOCAzNi42NjQgMTM2LjYyOCAzNS44NzM3QzEzNi42MjggMzUuMTg5OCAxMzYuNDk4IDM0LjUzMjkgMTM2LjIzOSAzMy45MDE5QzEzNS45NzkgMzMuMjcxOCAxMzUuNjI1IDMyLjc0NzMgMTM1LjE3NSAzMi4zMjk0QzEzNC43MjUgMzEuOTExMyAxMzQuMjAzIDMxLjYzNCAxMzMuNjA4IDMxLjQ5NzVDMTMzLjAxMyAzMS4zNjA1IDEzMi4zNzMgMzEuNDUxOCAxMzEuNjg3IDMxLjc3MDhDMTMxIDMyLjA5IDEzMC40NTUgMzIuNTM4MiAxMzAuMDUxIDMzLjExNTdDMTI5LjY0NyAzMy42OTM0IDEyOS4yNzcgMzQuMzAwOSAxMjguOTQyIDM0LjkzOTFDMTI4LjgxOSAzNC40NTI4IDEyOC42NDEgMzQuMDAxMSAxMjguNDA0IDMzLjU4M0MxMjguMTY3IDMzLjE2NTEgMTI3Ljg3OCAzMi44MDA1IDEyNy41MzUgMzIuNDg4OEMxMjcuMTkxIDMyLjE3NzYgMTI2LjgwNiAzMS45MzQ0IDEyNi4zOCAzMS43NTk1QzEyNS45NTMgMzEuNTg1MSAxMjUuNTAyIDMxLjQ5NzUgMTI1LjAzIDMxLjQ5NzVDMTI0LjU3MiAzMS40OTc1IDEyNC4xNDkgMzEuNTg1MSAxMjMuNzYgMzEuNzU5NUMxMjMuMzcxIDMxLjkzNDQgMTIzLjAxNyAzMi4xNTgzIDEyMi42OTYgMzIuNDMxOEMxMjIuMzc2IDMyLjcwNTYgMTIyLjA4NyAzMy4wMTMgMTIxLjgyNyAzMy4zNTUxQzEyMS41NjggMzMuNjk2OSAxMjEuMzM5IDM0LjAzNTIgMTIxLjE0MSAzNC4zNjkyQzEyMS4xMSAzMy45NzQyIDEyMS4wNzYgMzMuNjI4NiAxMjEuMDM4IDMzLjMzMkMxMjEgMzMuMDM1OSAxMjAuOTMxIDMyLjc4NTIgMTIwLjgzMiAzMi41ODAxQzEyMC43MzMgMzIuMzc0OCAxMjAuNTkyIDMyLjIxOTMgMTIwLjQwOSAzMi4xMTI5QzEyMC4yMjYgMzIuMDA2NyAxMTkuOTY3IDMxLjk1MzIgMTE5LjYzMiAzMS45NTMyQzExOS40NjQgMzEuOTUzMiAxMTkuMjk2IDMxLjk4NzQgMTE5LjEyOCAzMi4wNTU2QzExOC45NiAzMi4xMjQxIDExOC44MTEgMzIuMjE5MyAxMTguNjgyIDMyLjM0MDdDMTE4LjU1MiAzMi40NjI3IDExOC40NTMgMzIuNjEwNSAxMTguMzg1IDMyLjc4NTJDMTE4LjMxNiAzMi45NTk4IDExOC4yOTcgMzMuMTYxNCAxMTguMzI3IDMzLjM4OTJDMTE4LjM0MiAzMy41NTY2IDExOC4zODUgMzMuNzU3NiAxMTguNDUzIDMzLjk5MzNDMTE4LjUyMiAzNC4yMjg5IDExOC41ODcgMzQuNTM2OSAxMTguNjQ4IDM0LjkxNjNDMTE4LjcwOCAzNS4yOTYyIDExOC43NTggMzUuNzU2IDExOC43OTYgMzYuMjk1M0MxMTguODM0IDM2LjgzNDkgMTE4Ljg0NiAzNy40OTU5IDExOC44MzEgMzguMjc4NEMxMTguODE1IDM5LjA2MTEgMTE4Ljc1OCAzOS45NzYzIDExOC42NTkgNDEuMDI0OEMxMTguNTYgNDIuMDczMyAxMTguNDAzIDQzLjI4OSAxMTguMTkgNDQuNjcxNEMxMTguMTYgNDQuOTkwNyAxMTguMjgyIDQ1LjI0OTIgMTE4LjU1NiA0NS40NDY3QzExOC44MzEgNDUuNjQzOSAxMTkuMTQzIDQ1Ljc1NzggMTE5LjQ5NCA0NS43ODg1QzExOS44NDUgNDUuODE4OCAxMjAuMTc3IDQ1Ljc1NzggMTIwLjQ4OSA0NS42MDYzQzEyMC44MDIgNDUuNDUzOSAxMjAuOTgxIDQ1LjE4ODIgMTIxLjAyNyA0NC44MDg1QzEyMS4wNzIgNDQuMDk0MyAxMjEuMTYgNDMuMzM0NyAxMjEuMjkgNDIuNTI5QzEyMS40MTkgNDEuNzI0IDEyMS41NzkgNDAuOTI2MiAxMjEuNzcgNDAuMTM1OUMxMjEuOTYxIDM5LjM0NiAxMjIuMTc4IDM4LjU5MzggMTIyLjQyMiAzNy44NzkzQzEyMi42NjYgMzcuMTY1MSAxMjIuOTM3IDM2LjUzNDcgMTIzLjIzNCAzNS45ODc2QzEyMy41MzIgMzUuNDQwNSAxMjMuODQgMzUuMDAzOSAxMjQuMTYxIDM0LjY3NzFDMTI0LjQ4MSAzNC4zNTA0IDEyNC44MTYgMzQuMTg3IDEyNS4xNjcgMzQuMTg3QzEyNS41OTQgMzQuMTg3IDEyNS45MjYgMzQuMzgwNSAxMjYuMTYyIDM0Ljc2NzlDMTI2LjM5OCAzNS4xNTU3IDEyNi41NjYgMzUuNjUzNiAxMjYuNjY2IDM2LjI2MDlDMTI2Ljc2NSAzNi44NjkgMTI2LjgxIDM3LjUzNDEgMTI2LjgwMyAzOC4yNTU1QzEyNi43OTUgMzguOTc3MyAxMjYuNzY1IDM5LjY3MjQgMTI2LjcxMSA0MC4zNDFDMTI2LjY1OCA0MS4wMDk4IDEyNi41OTcgNDEuNjA2IDEyNi41MjggNDIuMTMwM0MxMjYuNDYgNDIuNjU0NSAxMjYuNDEgNDMuMDE1NyAxMjYuMzggNDMuMjEyOUMxMjYuMzggNDMuNTYyNSAxMjYuNTEzIDQzLjgzOTUgMTI2Ljc4IDQ0LjA0NDhDMTI3LjA0NiA0NC4yNDk4IDEyNy4zNDQgNDQuMzcxNiAxMjcuNjcyIDQ0LjQwOTVDMTI4IDQ0LjQ0NzYgMTI4LjMwOSA0NC4zODY2IDEyOC41OTggNDQuMjI3QzEyOC44ODggNDQuMDY3NCAxMjkuMDU2IDQzLjc5ODIgMTI5LjEwMiA0My40MTc5QzEyOS4yNTQgNDIuMzI0IDEyOS40NjQgNDEuMjI2NCAxMjkuNzMxIDQwLjEyNDdDMTI5Ljk5NyAzOS4wMjMgMTMwLjMwMyAzOC4wMzU1IDEzMC42NDYgMzcuMTYxNkMxMzAuOTg5IDM2LjI4NzggMTMxLjM3IDM1LjU3MzUgMTMxLjc5IDM1LjAxODlDMTMyLjIwOSAzNC40NjQ2IDEzMi42NTUgMzQuMTg3IDEzMy4xMjggMzQuMTg3QzEzMy4zNzEgMzQuMTg3IDEzMy41NTkgMzQuMzU0NCAxMzMuNjg4IDM0LjY4ODRDMTMzLjgxOCAzNS4wMjI3IDEzMy44ODMgMzUuNDc4NCAxMzMuODgzIDM2LjA1NTlDMTMzLjg4MyAzNi40ODE1IDEzMy44NDggMzYuOTE4NCAxMzMuNzggMzcuMzY2NkMxMzMuNzExIDM3LjgxNDggMTMzLjYzMSAzOC4yNzg0IDEzMy41NCAzOC43NTY5QzEzMy40NDggMzkuMjM1OCAxMzMuMzY4IDM5LjcyNTYgMTMzLjI5OSA0MC4yMjdDMTMzLjIzMSA0MC43Mjg3IDEzMy4xOTYgNDEuMjUyNyAxMzMuMTk2IDQxLjc5OThDMTMzLjE5NiA0Mi4xNzk3IDEzMy4yMzUgNDIuNjIwNCAxMzMuMzExIDQzLjEyMThDMTMzLjM4NyA0My42MjI5IDEzMy41MzIgNDQuMDk4MyAxMzMuNzQ1IDQ0LjU0NjJDMTMzLjk1OSA0NC45OTQ3IDEzNC4yNTIgNDUuMzc0NCAxMzQuNjI2IDQ1LjY4NThDMTM1IDQ1Ljk5NzMgMTM1LjQ3NiA0Ni4xNTMxIDEzNi4wNTYgNDYuMTUzMUMxMzYuOTI1IDQ2LjE1MzEgMTM3LjY5NSA0NS45NjY5IDEzOC4zNjYgNDUuNTk0N0MxMzkuMDM3IDQ1LjIyMjYgMTM5LjYxMyA0NC43MzY1IDE0MC4wOTMgNDQuMTM2MkMxNDAuMTE4IDQ0LjEwNDcgMTQwLjE0MSA0NC4wNzExIDE0MC4xNjUgNDQuMDM5OUMxNDAuMjAyIDQ0LjEyODcgMTQwLjIzNSA0NC4yMjI3IDE0MC4yNzYgNDQuMzA3MUMxNDAuNjA0IDQ0Ljk3NTYgMTQxLjA1IDQ1LjQ5MjEgMTQxLjYxNSA0NS44NTdDMTQyLjE3OCA0Ni4yMjE2IDE0Mi44NDIgNDYuNDIyOSAxNDMuNjA1IDQ2LjQ2MTFDMTQ0LjM2NyA0Ni40OTg3IDE0NS4xOTggNDYuMzU4MSAxNDYuMDk4IDQ2LjAzOTJDMTQ2Ljc2OSA0NS43OTYgMTQ3LjM1MiA0NS40OTIxIDE0Ny44NDggNDUuMTI3NUMxNDguMzQzIDQ0Ljc2MjggMTQ4Ljc4OSA0NC4zMTg0IDE0OS4xODYgNDMuNzk0MUMxNDkuNTgzIDQzLjI2OTkgMTQ5Ljk0NSA0Mi42NjU4IDE1MC4yNzMgNDEuOTgyMkMxNTAuNjAxIDQxLjI5ODEgMTUwLjkzMiA0MC41MTU5IDE1MS4yNjggMzkuNjM0MkMxNTEuMzI5IDM5LjM5MTYgMTUxLjI3MiAzOS4xNzUxIDE1MS4wOTcgMzguOTg0OEMxNTAuOTIxIDM4Ljc5NTEgMTUwLjcwOCAzOC42NjIxIDE1MC40NTYgMzguNTg1N1pcIiBmaWxsPVwiIzBEMEMyM1wiLz5cclxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE2Mi44ODcgMzYuMDQzNEMxNjIuODEgMzYuNDkxOCAxNjIuNzA3IDM2Ljk4NiAxNjIuNTc4IDM3LjUyNUMxNjIuNDQ4IDM4LjA2NDYgMTYyLjI4NCAzOC42MjMgMTYyLjA4NiAzOS4yMDA0QzE2MS44ODggMzkuNzc3OSAxNjEuNjQ0IDQwLjI5ODQgMTYxLjM1NCA0MC43NjE2QzE2MS4wNjQgNDEuMjI1NCAxNjAuNzMzIDQxLjU5MzUgMTYwLjM1OSA0MS44NjcxQzE1OS45ODUgNDIuMTQwNiAxNTkuNTU1IDQyLjI1NDYgMTU5LjA2NiA0Mi4yMDg5QzE1OC44MjIgNDIuMTc4OCAxNTguNjM1IDQyLjAxMTcgMTU4LjUwNiA0MS43MDc1QzE1OC4zNzYgNDEuNDAzOCAxNTguMzA4IDQxLjAxNjEgMTU4LjMgNDAuNTQ1QzE1OC4yOTIgNDAuMDc0MyAxNTguMzM0IDM5LjU1NzUgMTU4LjQyNiAzOC45OTUxQzE1OC41MTcgMzguNDMzMyAxNTguNjU4IDM3Ljg4MjEgMTU4Ljg0OSAzNy4zNDI2QzE1OS4wNCAzNi44MDM2IDE1OS4yNzIgMzYuMzA1NiAxNTkuNTQ3IDM1Ljg0OTZDMTU5LjgyMSAzNS4zOTM5IDE2MC4xMzggMzUuMDQwNSAxNjAuNDk2IDM0Ljc4OThDMTYwLjg1NCAzNC41MzkxIDE2MS4yNDcgMzQuNDIxNyAxNjEuNjc0IDM0LjQzNjVDMTYyLjEwMSAzNC40NTE4IDE2Mi41NTkgMzQuNjY0MyAxNjMuMDQ3IDM1LjA3NDdDMTYzLjAxNiAzNS4yNzI1IDE2Mi45NjMgMzUuNTk1NCAxNjIuODg3IDM2LjA0MzRaTTE3MS4wMTkgMzcuNzg3QzE3MC43ODIgMzcuNjY1NiAxNzAuNTM4IDM3LjYzOTIgMTcwLjI4NyAzNy43MDc1QzE3MC4wMzUgMzcuNzc1NyAxNjkuODU2IDM4LjAwNzYgMTY5Ljc0OSAzOC40MDI2QzE2OS42ODggMzguODI4MyAxNjkuNTUxIDM5LjMyOTQgMTY5LjMzOCAzOS45MDY5QzE2OS4xMjQgNDAuNDg0MyAxNjguODYxIDQxLjAzMTcgMTY4LjU0OCA0MS41NDc4QzE2OC4yMzYgNDIuMDY0NiAxNjcuODc3IDQyLjQ5NCAxNjcuNDczIDQyLjgzNThDMTY3LjA2OSA0My4xNzc4IDE2Ni42MzggNDMuMzMzNyAxNjYuMTgxIDQzLjMwMjhDMTY1Ljc5OSA0My4yNzI3IDE2NS41MzIgNDMuMDc5IDE2NS4zOCA0Mi43MjE4QzE2NS4yMjcgNDIuMzY0NyAxNjUuMTQ3IDQxLjkxNjggMTY1LjE0IDQxLjM3NjlDMTY1LjEzMiA0MC44MzggMTY1LjE4NiA0MC4yMzAxIDE2NS4zIDM5LjU1MzhDMTY1LjQxNCAzOC44Nzc3IDE2NS41NTIgMzguMjA1NCAxNjUuNzEyIDM3LjUzNjNDMTY1Ljg3MiAzNi44NjggMTY2LjAzNiAzNi4yMjU4IDE2Ni4yMDQgMzUuNjEwNUMxNjYuMzcxIDM0Ljk5NTEgMTY2LjUwOCAzNC40NzQ3IDE2Ni42MTYgMzQuMDQ5M0MxNjYuNzM4IDMzLjY2OTMgMTY2LjY5OSAzMy4zNDY2IDE2Ni41MDEgMzMuMDgwM0MxNjYuMzAzIDMyLjgxNDkgMTY2LjA1NSAzMi42MjQ2IDE2NS43NTggMzIuNTEwN0MxNjUuNDYgMzIuMzk2NyAxNjUuMTU5IDMyLjM2NjQgMTY0Ljg1NCAzMi40MTk2QzE2NC41NDkgMzIuNDcyOCAxNjQuMzUxIDMyLjYzNjIgMTY0LjI1OSAzMi45MDk0QzE2My4zNTkgMzIuMTM0NSAxNjIuNDk0IDMxLjcxNjYgMTYxLjY2MyAzMS42NTU5QzE2MC44MzEgMzEuNTk1MiAxNjAuMDY1IDMxLjc3NzYgMTU5LjM2NCAzMi4yMDNDMTU4LjY2MiAzMi42Mjg0IDE1OC4wNDEgMzMuMjQzNyAxNTcuNSAzNC4wNDkzQzE1Ni45NTggMzQuODU0OSAxNTYuNTIgMzUuNzMyMiAxNTYuMTg0IDM2LjY4MThDMTU1Ljg0OSAzNy42MzE0IDE1NS42MzkgMzguNjAwNCAxNTUuNTU1IDM5LjU4NzlDMTU1LjQ3MSA0MC41NzU3IDE1NS41MzYgNDEuNDc2MSAxNTUuNzUgNDIuMjg5QzE1NS45NjMgNDMuMTAxOCAxNTYuMzQgNDMuNzY2OSAxNTYuODgyIDQ0LjI4M0MxNTcuNDIzIDQ0Ljc5OTggMTU4LjE1OSA0NS4wNTgzIDE1OS4wODkgNDUuMDU4M0MxNTkuNTAxIDQ1LjA1ODMgMTU5Ljg5OCA0NC45NzQ3IDE2MC4yNzkgNDQuODA3NkMxNjAuNjYgNDQuNjQwMSAxNjEuMDExIDQ0LjQ0MjYgMTYxLjMzMSA0NC4yMTQ4QzE2MS42NTEgNDMuOTg2OSAxNjEuOTMzIDQzLjc0NzUgMTYyLjE3OCA0My40OTY4QzE2Mi40MjEgNDMuMjQ2MSAxNjIuNjEyIDQzLjAzNzMgMTYyLjc0OSA0Mi44Njk5QzE2Mi44NTYgNDMuNDE3IDE2My4wMzIgNDMuODgwOCAxNjMuMjc2IDQ0LjI2MDVDMTYzLjUxOSA0NC42NDAxIDE2My43OTggNDQuOTUyMSAxNjQuMTExIDQ1LjE5NDhDMTY0LjQyMyA0NS40Mzc2IDE2NC43NTEgNDUuNjE2NCAxNjUuMDk0IDQ1LjczMDZDMTY1LjQzNyA0NS44NDQ1IDE2NS43NjkgNDUuOTAxNSAxNjYuMDg5IDQ1LjkwMTVDMTY2LjgwNiA0NS45MDE1IDE2Ny40NzcgNDUuNjU4MyAxNjguMTAyIDQ1LjE3MTlDMTY4LjcyNyA0NC42ODYxIDE2OS4yODggNDQuMDg5MyAxNjkuNzg0IDQzLjM4MjlDMTcwLjI3OSA0Mi42NzYyIDE3MC42ODcgNDEuOTMxOSAxNzEuMDA3IDQxLjE0OTFDMTcxLjMyOCA0MC4zNjY2IDE3MS41NDEgMzkuNjcxNSAxNzEuNjQ4IDM5LjA2MzRDMTcxLjc1NSAzOC44MzU1IDE3MS43MzUgMzguNTk2NCAxNzEuNTkxIDM4LjM0NTdDMTcxLjQ0NiAzOC4wOTUgMTcxLjI1NSAzNy45MDkgMTcxLjAxOSAzNy43ODdaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XHJcbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0yMTIuMTk0IDUwLjM3MDFDMjEyLjA2NCA1MC44ODY2IDIxMS44NjIgNTEuMzIzOCAyMTEuNTg3IDUxLjY4MDZDMjExLjMxMyA1Mi4wMzc3IDIxMC45NyA1Mi4yMjM5IDIxMC41NTggNTIuMjM5M0MyMTAuMjk5IDUyLjI1NDMgMjEwLjEwMSA1Mi4xMTc1IDIwOS45NjMgNTEuODI4OUMyMDkuODI2IDUxLjU0MDEgMjA5LjczMSA1MS4xNjc5IDIwOS42NzggNTAuNzEyMkMyMDkuNjI0IDUwLjI1NjIgMjA5LjYwMSA0OS43NDcgMjA5LjYwOSA0OS4xODQ5QzIwOS42MTYgNDguNjIyNyAyMDkuNjM5IDQ4LjA2ODEgMjA5LjY3OCA0Ny41MjFDMjA5LjcxNSA0Ni45NzQyIDIwOS43NjEgNDYuNDY0NyAyMDkuODE1IDQ1Ljk5MzlDMjA5Ljg2OCA0NS41MjI2IDIwOS45MSA0NS4xNTg2IDIwOS45NCA0NC45QzIxMC40NTkgNDQuOTYwOCAyMTAuODkgNDUuMTg0NiAyMTEuMjMzIDQ1LjU3MjNDMjExLjU3NiA0NS45NTk4IDIxMS44MzkgNDYuNDE5MyAyMTIuMDIyIDQ2Ljk1MTRDMjEyLjIwNSA0Ny40ODMxIDIxMi4zMTIgNDguMDU2OCAyMTIuMzQzIDQ4LjY3MjJDMjEyLjM3MyA0OS4yODc1IDIxMi4zMjMgNDkuODUzNCAyMTIuMTk0IDUwLjM3MDFaTTIwMy45MTMgNTAuMzcwMUMyMDMuNzgzIDUwLjg4NjYgMjAzLjU4MSA1MS4zMjM4IDIwMy4zMDcgNTEuNjgwNkMyMDMuMDMyIDUyLjAzNzcgMjAyLjY4OSA1Mi4yMjM5IDIwMi4yNzcgNTIuMjM5M0MyMDIuMDE4IDUyLjI1NDMgMjAxLjgyIDUyLjExNzUgMjAxLjY4MyA1MS44Mjg5QzIwMS41NDUgNTEuNTQwMSAyMDEuNDUgNTEuMTY3OSAyMDEuMzk3IDUwLjcxMjJDMjAxLjM0MyA1MC4yNTYyIDIwMS4zMiA0OS43NDcgMjAxLjMyOCA0OS4xODQ5QzIwMS4zMzYgNDguNjIyNyAyMDEuMzU4IDQ4LjA2ODEgMjAxLjM5NyA0Ny41MjFDMjAxLjQzNCA0Ni45NzQyIDIwMS40OCA0Ni40NjQ3IDIwMS41MzQgNDUuOTkzOUMyMDEuNTg3IDQ1LjUyMjYgMjAxLjYyOSA0NS4xNTg2IDIwMS42NiA0NC45QzIwMi4xNzggNDQuOTYwOCAyMDIuNjA5IDQ1LjE4NDYgMjAyLjk1MiA0NS41NzIzQzIwMy4yOTUgNDUuOTU5OCAyMDMuNTU4IDQ2LjQxOTMgMjAzLjc0MSA0Ni45NTE0QzIwMy45MjQgNDcuNDgzMSAyMDQuMDMxIDQ4LjA1NjggMjA0LjA2MiA0OC42NzIyQzIwNC4wOTIgNDkuMjg3NSAyMDQuMDQyIDQ5Ljg1MzQgMjAzLjkxMyA1MC4zNzAxWk0xOTUuNDE1IDM3LjQyNDFDMTk1LjM5OSAzNy43ODg0IDE5NS4zNjUgMzguMTExNCAxOTUuMzEyIDM4LjM5MjVDMTk1LjI1OCAzOC42NzQxIDE5NS4xODYgMzguODUyMiAxOTUuMDk1IDM4LjkyODNDMTk0LjkyNyAzOC44MzY5IDE5NC43MjEgMzguNjAxOCAxOTQuNDc3IDM4LjIyMTZDMTk0LjIzMyAzNy44NDE5IDE5NC4wNDIgMzcuNDEyMiAxOTMuOTA1IDM2LjkzMzZDMTkzLjc2OCAzNi40NTUxIDE5My43MjUgMzUuOTg0MyAxOTMuNzc5IDM1LjUyMDVDMTkzLjgzMiAzNS4wNTczIDE5NC4wNzMgMzQuNjk2NyAxOTQuNSAzNC40Mzc5QzE5NC42NjcgMzQuMzQ2OCAxOTQuODEyIDM0LjM4MDkgMTk0LjkzNCAzNC41NDA1QzE5NS4wNTYgMzQuNzAwMSAxOTUuMTU1IDM0LjkzMTggMTk1LjIzMiAzNS4yMzU3QzE5NS4zMDggMzUuNTM5OSAxOTUuMzYxIDM1Ljg4OTIgMTk1LjM5MiAzNi4yODQyQzE5NS40MjIgMzYuNjc5NSAxOTUuNDMgMzcuMDU5MSAxOTUuNDE1IDM3LjQyNDFaTTE5My4zOSA0MS45NzExQzE5My4xNTQgNDIuMjIxNSAxOTIuODkgNDIuNDM4MSAxOTIuNjAxIDQyLjYyMDZDMTkyLjMxMSA0Mi44MDMgMTkyLjAxNCA0Mi45Mzk4IDE5MS43MDkgNDMuMDMwOUMxOTEuNDA0IDQzLjEyMjMgMTkxLjEyOSA0My4xNDQ4IDE5MC44ODUgNDMuMDk5MUMxOTAuMTk5IDQyLjk2MjcgMTg5LjY3MyA0Mi42NjYgMTg5LjMwNyA0Mi4yMTAzQzE4OC45NDEgNDEuNzU0NSAxODguNzA4IDQxLjIxOSAxODguNjA5IDQwLjYwMzdDMTg4LjUxIDM5Ljk4ODEgMTg4LjUyMSAzOS4zMzA4IDE4OC42NDQgMzguNjMxOUMxODguNzY1IDM3LjkzMyAxODguOTcxIDM3LjI4MzUgMTg5LjI2MSAzNi42ODMyQzE4OS41NTEgMzYuMDgyOSAxODkuOTAyIDM1LjU2NjIgMTkwLjMxMyAzNS4xMzMzQzE5MC43MjUgMzQuNzAwMSAxOTEuMTc1IDM0LjQzMDYgMTkxLjY2MyAzNC4zMjM5QzE5MS40OCAzNS4wOTg5IDE5MS40MTkgMzUuOTAwNyAxOTEuNDggMzYuNzI4NkMxOTEuNTQxIDM3LjU1NjggMTkxLjczOSAzOC4zMzU1IDE5Mi4wNzUgMzkuMDY0OEMxOTIuMjg4IDM5LjUwNiAxOTIuNTQ0IDM5LjkwODIgMTkyLjg0MSA0MC4yNzI5QzE5My4xMzkgNDAuNjM3OCAxOTMuNTAxIDQwLjk0OTIgMTkzLjkyOCA0MS4yMDc1QzE5My44MDYgNDEuNDY2IDE5My42MjYgNDEuNzIwNCAxOTMuMzkgNDEuOTcxMVpNMjE4LjcwMiAzNy42NTE5QzIxOC43NDcgMzcuMzAyNiAyMTguODE2IDM2LjkzMzYgMjE4LjkwOCAzNi41NDYyQzIxOC45OTkgMzYuMTU5IDIxOS4xMTQgMzUuNzgyOCAyMTkuMjUxIDM1LjQxODFDMjE5LjM4OCAzNS4wNTMyIDIxOS41NDggMzQuNzM4IDIxOS43MzEgMzQuNDcyM0MyMTkuOTE0IDM0LjIwNjUgMjIwLjEwOCAzNC4wMTYzIDIyMC4zMTQgMzMuOTAyNEMyMjAuNTIgMzMuNzg4NCAyMjAuNzMgMzMuNzk5NyAyMjAuOTQzIDMzLjkzNjVDMjIxLjE3MiAzNC4wNzM1IDIyMS4zMTMgMzQuMzYyMSAyMjEuMzY3IDM0LjgwMjVDMjIxLjQyIDM1LjI0MzUgMjIxLjM2NyAzNS43MTQyIDIyMS4yMDcgMzYuMjE1OUMyMjEuMDQ2IDM2LjcxNzMgMjIwLjc2MSAzNy4xODg0IDIyMC4zNDkgMzcuNjI4OEMyMTkuOTM3IDM4LjA3IDIxOS4zOCAzOC4zNTgzIDIxOC42NzkgMzguNDk1MUMyMTguNjQ4IDM4LjI4MjYgMjE4LjY1NiAzOC4wMDE1IDIxOC43MDIgMzcuNjUxOVpNMjI3LjkyMSAzNy42NTE5QzIyNy45NjYgMzcuMzAyNiAyMjguMDM1IDM2LjkzMzYgMjI4LjEyNiAzNi41NDYyQzIyOC4yMTggMzYuMTU5IDIyOC4zMzIgMzUuNzgyOCAyMjguNDcgMzUuNDE4MUMyMjguNjA3IDM1LjA1MzIgMjI4Ljc2NyAzNC43MzggMjI4Ljk1IDM0LjQ3MjNDMjI5LjEzMyAzNC4yMDY1IDIyOS4zMjggMzQuMDE2MyAyMjkuNTMzIDMzLjkwMjRDMjI5LjczOSAzMy43ODg0IDIyOS45NDkgMzMuNzk5NyAyMzAuMTYyIDMzLjkzNjVDMjMwLjM5MSAzNC4wNzM1IDIzMC41MzIgMzQuMzYyMSAyMzAuNTg2IDM0LjgwMjVDMjMwLjYzOSAzNS4yNDM1IDIzMC41ODYgMzUuNzE0MiAyMzAuNDI1IDM2LjIxNTlDMjMwLjI2NSAzNi43MTczIDIyOS45NzkgMzcuMTg4NCAyMjkuNTY4IDM3LjYyODhDMjI5LjE1NiAzOC4wNyAyMjguNTk5IDM4LjM1ODMgMjI3Ljg5OCAzOC40OTUxQzIyNy44NjcgMzguMjgyNiAyMjcuODc1IDM4LjAwMTUgMjI3LjkyMSAzNy42NTE5Wk0yMzYuNDg4IDM4Ljk4NTJDMjM2LjMxMiAzOC43OTU1IDIzNi4wOTkgMzguNjYyNSAyMzUuODQ3IDM4LjU4NjJDMjM1LjU5NSAzOC41MTA0IDIzNS4zNTUgMzguNTAyOSAyMzUuMTI2IDM4LjU2MzZDMjM0Ljg5NyAzOC42MjQ0IDIzNC43NTIgMzguNzg0IDIzNC42OTIgMzkuMDQyMkMyMzQuNTcgMzkuNTI4NiAyMzQuMzc1IDQwLjAyNjIgMjM0LjEwOCA0MC41MzQ5QzIzMy44NDEgNDEuMDQ0NCAyMzMuNTE0IDQxLjUyNjcgMjMzLjEyNSA0MS45ODI0QzIzMi43MzYgNDIuNDM4MSAyMzIuMjk3IDQyLjg0MTIgMjMxLjgxIDQzLjE5MDVDMjMxLjMyMSA0My41NDAxIDIzMC44MSA0My43OTA4IDIzMC4yNzcgNDMuOTQyM0MyMjkuNzQzIDQ0LjExMDEgMjI5LjMwMSA0NC4xMjg5IDIyOC45NSA0My45OTk2QzIyOC41OTkgNDMuODcwNiAyMjguMzIxIDQzLjY1MDMgMjI4LjExNSA0My4zMzg5QzIyNy45MDkgNDMuMDI3MSAyMjcuNzYxIDQyLjY1MTIgMjI3LjY2OSA0Mi4yMTAzQzIyNy41NzggNDEuNzY5OSAyMjcuNTI0IDQxLjMxNDIgMjI3LjUwOSA0MC44NDI4QzIyOC4zNzggNDAuOTAzOCAyMjkuMTUyIDQwLjc0ODMgMjI5LjgzMSA0MC4zNzU1QzIzMC41MDkgNDAuMDAzNCAyMzEuMDg1IDM5LjUwOTIgMjMxLjU1OCAzOC44OTM5QzIzMi4wMzEgMzguMjc4OCAyMzIuMzg5IDM3LjU4NzQgMjMyLjYzMyAzNi44MkMyMzIuODc3IDM2LjA1MjYgMjMzLjAxNCAzNS4yODkyIDIzMy4wNDUgMzQuNTI5M0MyMzMuMDYgMzMuODE1IDIzMi45NTMgMzMuMjExIDIzMi43MjQgMzIuNzE3MUMyMzIuNDk2IDMyLjIyMzUgMjMyLjE4NyAzMS44Mzk1IDIzMS43OTggMzEuNTY2MkMyMzEuNDA5IDMxLjI5MjQgMjMwLjk2MyAzMS4xMzMgMjMwLjQ2IDMxLjA4NzRDMjI5Ljk1NyAzMS4wNDE3IDIyOS40NDUgMzEuMTEwNSAyMjguOTI3IDMxLjI5MjRDMjI4LjMwMiAzMS41MDU1IDIyNy43NzIgMzEuODUxIDIyNy4zMzggMzIuMzI5NkMyMjYuOTAzIDMyLjgwODUgMjI2LjU0IDMzLjM2MzQgMjI2LjI1MSAzMy45OTM0QzIyNS45NjEgMzQuNjI0NCAyMjUuNzMyIDM1LjMwMzkgMjI1LjU2NCAzNi4wMzM1QzIyNS4zOTYgMzYuNzYyNyAyMjUuMjc0IDM3LjQ4MSAyMjUuMTk5IDM4LjE4NzRDMjI1LjEyNCAzOC44NzMgMjI1LjA4NCAzOS41MjkyIDIyNS4wNzUgNDAuMTU3MkMyMjUuMDE3IDQwLjI4MjQgMjI0Ljk1NiA0MC40MDgyIDIyNC44ODkgNDAuNTM0OUMyMjQuNjIyIDQxLjA0NDQgMjI0LjI5NSA0MS41MjY3IDIyMy45MDYgNDEuOTgyNEMyMjMuNTE3IDQyLjQzODEgMjIzLjA3OCA0Mi44NDEyIDIyMi41OTEgNDMuMTkwNUMyMjIuMTAyIDQzLjU0MDEgMjIxLjU5MiA0My43OTA4IDIyMS4wNTggNDMuOTQyM0MyMjAuNTI0IDQ0LjExMDEgMjIwLjA4MiA0NC4xMjg5IDIxOS43MzEgNDMuOTk5NkMyMTkuMzggNDMuODcwNiAyMTkuMTAyIDQzLjY1MDMgMjE4Ljg5NiA0My4zMzg5QzIxOC42OTEgNDMuMDI3MSAyMTguNTQyIDQyLjY1MTIgMjE4LjQ1IDQyLjIxMDNDMjE4LjM1OSA0MS43Njk5IDIxOC4zMDUgNDEuMzE0MiAyMTguMjkgNDAuODQyOEMyMTkuMTU5IDQwLjkwMzggMjE5LjkzMyA0MC43NDgzIDIyMC42MTIgNDAuMzc1NUMyMjEuMjkgNDAuMDAzNCAyMjEuODY2IDM5LjUwOTIgMjIyLjMzOSAzOC44OTM5QzIyMi44MTEgMzguMjc4OCAyMjMuMTcgMzcuNTg3NCAyMjMuNDE0IDM2LjgyQzIyMy42NTggMzYuMDUyNiAyMjMuNzk1IDM1LjI4OTIgMjIzLjgyNiAzNC41MjkzQzIyMy44NDEgMzMuODE1IDIyMy43MzQgMzMuMjExIDIyMy41MDYgMzIuNzE3MUMyMjMuMjc3IDMyLjIyMzUgMjIyLjk2OCAzMS44Mzk1IDIyMi41NzkgMzEuNTY2MkMyMjIuMTkgMzEuMjkyNCAyMjEuNzQ0IDMxLjEzMyAyMjEuMjQxIDMxLjA4NzRDMjIwLjczOCAzMS4wNDE3IDIyMC4yMjcgMzEuMTEwNSAyMTkuNzA4IDMxLjI5MjRDMjE5LjA4MyAzMS41MDU1IDIxOC41NTMgMzEuODUxIDIxOC4xMTkgMzIuMzI5NkMyMTcuNjg0IDMyLjgwODUgMjE3LjMyMSAzMy4zNjM0IDIxNy4wMzIgMzMuOTkzNEMyMTYuNzQyIDM0LjYyNDQgMjE2LjUxMyAzNS4zMDM5IDIxNi4zNDYgMzYuMDMzNUMyMTYuMTc4IDM2Ljc2MjcgMjE2LjA1NiAzNy40ODEgMjE1Ljk4IDM4LjE4NzRDMjE1LjkzNiAzOC41ODU5IDIxNS45MDcgMzguOTcyMiAyMTUuODg2IDM5LjM1MTZDMjE1LjczOSAzOS40NzY1IDIxNS41OTUgMzkuNjAyMyAyMTUuNDQyIDM5LjcyNThDMjE0LjkxNiA0MC4xNTE0IDIxNC4zNjMgNDAuNTM0OSAyMTMuNzg0IDQwLjg3NjlDMjEzLjIwNCA0MS4yMTkgMjEyLjYwMSA0MS41MDAxIDIxMS45NzcgNDEuNzIwNEMyMTEuMzUxIDQxLjk0MDggMjEwLjcxIDQyLjA3MzggMjEwLjA1NSA0Mi4xMTkyTDIxMS40NzMgMjYuOTg0N0MyMTEuNTY1IDI2LjY2NTUgMjExLjUxOSAyNi4zODQ3IDIxMS4zMzYgMjYuMTQxNUMyMTEuMTUzIDI1Ljg5ODMgMjEwLjkxNiAyNS43MzEyIDIxMC42MjcgMjUuNjQwMUMyMTAuMzM3IDI1LjU0ODggMjEwLjAyOCAyNS41NTY2IDIwOS43IDI1LjY2MjdDMjA5LjM3MiAyNS43Njk0IDIwOS4xMDIgMjYuMDEyNiAyMDguODg4IDI2LjM5MTlDMjA4Ljc4MSAyNi45Njk3IDIwOC42NzEgMjcuNzU5NyAyMDguNTU3IDI4Ljc2MjVDMjA4LjQ0MiAyOS43NjUzIDIwOC4zMjggMzAuODU5NSAyMDguMjEzIDMyLjA0NDhDMjA4LjA5OSAzMy4yMyAyMDcuOTg1IDM0LjQ1MzIgMjA3Ljg3IDM1LjcxNDJDMjA3Ljc1NiAzNi45NzU5IDIwNy42NTcgMzguMTUzMyAyMDcuNTczIDM5LjI0NzJDMjA3LjU2OSAzOS4yOTU4IDIwNy41NjYgMzkuMzM5OCAyMDcuNTYyIDM5LjM4NzhDMjA3LjQyOSAzOS41MDA1IDIwNy4yOTkgMzkuNjE0MiAyMDcuMTYxIDM5LjcyNThDMjA2LjYzNSA0MC4xNTE0IDIwNi4wODIgNDAuNTM0OSAyMDUuNTAzIDQwLjg3NjlDMjA0LjkyMyA0MS4yMTkgMjA0LjMyMSA0MS41MDAxIDIwMy42OTYgNDEuNzIwNEMyMDMuMDcgNDEuOTQwOCAyMDIuNDI5IDQyLjA3MzggMjAxLjc3NCA0Mi4xMTkyTDIwMy4xOTIgMjYuOTg0N0MyMDMuMjg0IDI2LjY2NTUgMjAzLjIzOCAyNi4zODQ3IDIwMy4wNTUgMjYuMTQxNUMyMDIuODcyIDI1Ljg5ODMgMjAyLjYzNSAyNS43MzEyIDIwMi4zNDYgMjUuNjQwMUMyMDIuMDU2IDI1LjU0ODggMjAxLjc0NyAyNS41NTY2IDIwMS40MTkgMjUuNjYyN0MyMDEuMDkxIDI1Ljc2OTQgMjAwLjgyMSAyNi4wMTI2IDIwMC42MDcgMjYuMzkxOUMyMDAuNTAxIDI2Ljk2OTcgMjAwLjM5IDI3Ljc1OTcgMjAwLjI3NiAyOC43NjI1QzIwMC4xNjEgMjkuNzY1MyAyMDAuMDQ3IDMwLjg1OTUgMTk5LjkzMyAzMi4wNDQ4QzE5OS44MTggMzMuMjMgMTk5LjcwNCAzNC40NTMyIDE5OS41ODkgMzUuNzE0MkMxOTkuNDc1IDM2Ljk3NTkgMTk5LjM3NiAzOC4xNTMzIDE5OS4yOTIgMzkuMjQ3MkMxOTkuMjkgMzkuMjY5MiAxOTkuMjg5IDM5LjI4OTEgMTk5LjI4NyAzOS4zMTExQzE5OS4wNDggMzkuNDIxOSAxOTguNzg2IDM5LjUxOSAxOTguNTAzIDM5LjYwMDZDMTk4LjIxMyAzOS42ODQ0IDE5Ny44ODUgMzkuNzMzOSAxOTcuNTE5IDM5Ljc0ODlDMTk3LjU4IDM5LjQ3NTEgMTk3LjYzIDM5LjE3MTIgMTk3LjY2OCAzOC44MzY5QzE5Ny43MDYgMzguNTAyOSAxOTcuNzM3IDM4LjE1MzMgMTk3Ljc2IDM3Ljc4ODRDMTk3Ljc4MiAzNy40MjQxIDE5Ny43OSAzNy4wNTkxIDE5Ny43ODIgMzYuNjk0NUMxOTcuNzc0IDM2LjMyOTYgMTk3Ljc1NSAzNS45OTU2IDE5Ny43MjUgMzUuNjkxNEMxOTcuNjQ5IDM1LjAzODUgMTk3LjUwOCAzNC40MTkxIDE5Ny4zMDIgMzMuODMzOEMxOTcuMDk2IDMzLjI0OTEgMTk2LjgxOCAzMi43NTkzIDE5Ni40NjcgMzIuMzYzN0MxOTYuMTE2IDMxLjk2ODcgMTk1LjY3OCAzMS43MDI3IDE5NS4xNTEgMzEuNTY2MkMxOTQuNjI2IDMxLjQyOTQgMTk0LjAxMiAzMS40NzQ4IDE5My4zMSAzMS43MDI3QzE5Mi4yNzMgMzEuNTY2MiAxOTEuMzM5IDMxLjY2MTMgMTkwLjUwOCAzMS45ODc4QzE4OS42NzcgMzIuMzE0OSAxODguOTU2IDMyLjc4OTQgMTg4LjM0NiAzMy40MTIyQzE4Ny43MzYgMzQuMDM1NyAxODcuMjM3IDM0Ljc2ODQgMTg2Ljg0OCAzNS42MTE5QzE4Ni40NTkgMzYuNDU1MSAxODYuMiAzNy4zMjE0IDE4Ni4wNyAzOC4yMUMxODYuMDE1IDM4LjU4NjggMTg1Ljk4OCAzOC45NjE4IDE4NS45OCAzOS4zMzZDMTg1Ljc0NCAzOS44MTc3IDE4NS40ODYgNDAuMjM4OCAxODUuMjAxIDQwLjU5MjFDMTg0Ljc5NyA0MS4wOTM1IDE4NC4zNzcgNDEuNTAzOCAxODMuOTQzIDQxLjgyMjhDMTgzLjUwOCA0Mi4xNDIgMTgzLjA3NyA0Mi4zODUyIDE4Mi42NSA0Mi41NTIzQzE4Mi4yMjMgNDIuNzE5OCAxODEuODQyIDQyLjgzMzcgMTgxLjUwNyA0Mi44OTQxQzE4MS4xMSA0Mi45NzAyIDE4MC43MjkgNDIuOTc4IDE4MC4zNjMgNDIuOTE3QzE3OS45OTcgNDIuODU2NSAxNzkuNjYxIDQyLjY4MTYgMTc5LjM1NyA0Mi4zOTI3QzE3OS4xMTIgNDIuMTgwMiAxNzguOTI1IDQxLjgzODEgMTc4Ljc5NiA0MS4zNjcxQzE3OC42NjYgNDAuODk2IDE3OC41OSA0MC4zNjA4IDE3OC41NjcgMzkuNzYwMkMxNzguNTQ0IDM5LjE1OTkgMTc4LjU2NyAzOC41MzMgMTc4LjYzNiAzNy44Nzk4QzE3OC43MDUgMzcuMjI2NiAxNzguODIyIDM2LjYwNzIgMTc4Ljk5IDM2LjAyMjJDMTc5LjE1OCAzNS40MzcyIDE3OS4zNzEgMzQuOTEzIDE3OS42MzEgMzQuNDQ5MkMxNzkuODkgMzMuOTg2MiAxODAuMTk1IDMzLjY1NTQgMTgwLjU0NiAzMy40NTc5QzE4MC43NDQgMzMuNDg4NiAxODAuODY2IDMzLjYwNiAxODAuOTEyIDMzLjgxMUMxODAuOTU4IDM0LjAxNjMgMTgwLjk2OSAzNC4yNTk1IDE4MC45NDYgMzQuNTQwNUMxODAuOTIzIDM0LjgyMTkgMTgwLjg4OSAzNS4xMTA1IDE4MC44NDMgMzUuNDA2NkMxODAuNzk3IDM1LjcwMyAxODAuNzc1IDM1Ljk1MDIgMTgwLjc3NSAzNi4xNDc0QzE4MC44NTEgMzYuNTU3NyAxODAuOTk5IDM2Ljg3NyAxODEuMjIxIDM3LjEwNDhDMTgxLjQ0MSAzNy4zMzI3IDE4MS42OSAzNy40NjYgMTgxLjk2NCAzNy41MDM2QzE4Mi4yMzkgMzcuNTQxNyAxODIuNTA5IDM3LjQ3NzMgMTgyLjc3NiAzNy4zMDk4QzE4My4wNDMgMzcuMTQzIDE4My4yNiAzNi44NzcgMTgzLjQyOCAzNi41MTJDMTgzLjQ0MyAzNi41Mjc0IDE4My40NjYgMzYuNTM0OSAxODMuNDk3IDM2LjUzNDlMMTgzLjgxNyAzMy42NDA0QzE4My45MDkgMzMuMjQ1MSAxODMuODQ3IDMyLjg5NTggMTgzLjYzNCAzMi41OTE5QzE4My40MiAzMi4yODggMTgzLjEzOCAzMi4xMTMgMTgyLjc4OCAzMi4wNjc2QzE4Mi4zNDUgMzEuNDI5NCAxODEuNzQ3IDMxLjA5MTQgMTgwLjk5MiAzMS4wNTMyQzE4MC4yMzcgMzEuMDE1NCAxNzkuNDYzIDMxLjI2MjMgMTc4LjY3IDMxLjc5NDFDMTc4LjE4MiAzMi4xNDQgMTc3Ljc1MSAzMi42MjYgMTc3LjM3OCAzMy4yNDEzQzE3Ny4wMDQgMzMuODU3IDE3Ni42OTkgMzQuNTQwNSAxNzYuNDYzIDM1LjI5MjZDMTc2LjIyNiAzNi4wNDQ4IDE3Ni4wNTggMzYuODM5MSAxNzUuOTU5IDM3LjY3NDhDMTc1Ljg2IDM4LjUxMDQgMTc1Ljg0MSAzOS4zMjM2IDE3NS45MDIgNDAuMTEzM0MxNzUuOTYzIDQwLjkwMzggMTc2LjEwNCA0MS42NDg0IDE3Ni4zMjUgNDIuMzQ3QzE3Ni41NDYgNDMuMDQ2MiAxNzYuODU1IDQzLjYzMTIgMTc3LjI1MiA0NC4xMDJDMTc3LjU4NyA0NC41MTIzIDE3Ny45NjggNDQuODEyNyAxNzguMzk1IDQ1LjAwMjdDMTc4LjgyMiA0NS4xOTI3IDE3OS4yNjggNDUuMzEwMSAxNzkuNzM0IDQ1LjM1NThDMTgwLjE5OSA0NS40MDEyIDE4MC42NiA0NS4zODIxIDE4MS4xMTggNDUuMjk4OEMxODEuNTc1IDQ1LjIxNTUgMTgyLjAxIDQ1LjA5NzggMTgyLjQyMSA0NC45NDU0QzE4Mi45NTUgNDQuNzQ4MiAxODMuNTA1IDQ0LjQ5NzIgMTg0LjA2OSA0NC4xOTMzQzE4NC42MzMgNDMuODg5NyAxODUuMTc0IDQzLjUyNDggMTg1LjY5MyA0My4wOTkxQzE4NS45NjYgNDIuODc1MyAxODYuMjI4IDQyLjYzMTMgMTg2LjQ4MiA0Mi4zNjk2QzE4Ni41OTggNDIuNjU1MyAxODYuNzI3IDQyLjkzMTcgMTg2Ljg4MiA0My4xOTA1QzE4Ny4yOTQgNDMuODc0MSAxODcuODUgNDQuNDI5IDE4OC41NTIgNDQuODU0NEMxODkuMjUzIDQ1LjI3OTcgMTkwLjExNSA0NS40ODQ0IDE5MS4xMzcgNDUuNDY5N0MxOTIuMjM1IDQ1LjQ1NDQgMTkzLjI0OSA0NS4xNzc0IDE5NC4xOCA0NC42Mzc4QzE5NS4xMSA0NC4wOTg4IDE5NS44NzIgNDMuMzA0MiAxOTYuNDY3IDQyLjI1NkMxOTcuMzU4IDQyLjI1NiAxOTguMjM0IDQyLjEwOTYgMTk5LjA5NiA0MS44MTlDMTk5LjA4OSA0MS45MTEgMTk5LjA4MSA0Mi4wMDc5IDE5OS4wNzUgNDIuMDk2NkMxOTkuMDE0IDQyLjkwMTkgMTk4Ljk4MyA0My40NDg3IDE5OC45ODMgNDMuNzM3NkMxOTguOTY4IDQ0LjIzOSAxOTguOTM0IDQ0Ljg1ODEgMTk4Ljg4IDQ1LjU5NDlDMTk4LjgyNyA0Ni4zMzIgMTk4Ljc5MyA0Ny4xMDY5IDE5OC43NzggNDcuOTE5OEMxOTguNzYzIDQ4LjczMjYgMTk4Ljc5MyA0OS41NTMyIDE5OC44NjkgNTAuMzgxN0MxOTguOTQ1IDUxLjIwOTYgMTk5LjEwNSA1MS45NjIgMTk5LjM0OSA1Mi42MzgzQzE5OS41OTMgNTMuMzE0MSAxOTkuOTQgNTMuODg3OCAyMDAuMzkgNTQuMzU5MUMyMDAuODQgNTQuODI5OSAyMDEuNDMxIDU1LjExMTIgMjAyLjE2MyA1NS4yMDIzQzIwMi45NDEgNTUuMzA4NCAyMDMuNjEyIDU1LjE3MTcgMjA0LjE3NiA1NC43OTJDMjA0Ljc0IDU0LjQxMiAyMDUuMTk4IDUzLjg5MTggMjA1LjU0OSA1My4yMzA4QzIwNS44OTkgNTIuNTY5NSAyMDYuMTQ3IDUxLjgwNjEgMjA2LjI5MiA1MC45NDAxQzIwNi40MzcgNTAuMDc0IDIwNi40NzkgNDkuMjAzOSAyMDYuNDE4IDQ4LjMzMDFDMjA2LjM1NyA0Ny40NTYyIDIwNi4xOTYgNDYuNjMyMSAyMDUuOTM3IDQ1Ljg1NzVDMjA1LjY3OCA0NS4wODIyIDIwNS4zMTkgNDQuNDQ0IDIwNC44NjIgNDMuOTQyM0MyMDUuMTM3IDQzLjg2NjkgMjA1LjQ2NSA0My43MjI2IDIwNS44NDYgNDMuNTA5NUMyMDYuMjI3IDQzLjI5NjkgMjA2LjYyIDQzLjA1NzUgMjA3LjAyNCA0Mi43OTE1QzIwNy4xMjMgNDIuNzI2MSAyMDcuMjIxIDQyLjY1NzMgMjA3LjMyIDQyLjU5MDJDMjA3LjI4MyA0My4xMjg2IDIwNy4yNjQgNDMuNTEyNiAyMDcuMjY0IDQzLjczNzZDMjA3LjI0OSA0NC4yMzkgMjA3LjIxNSA0NC44NTgxIDIwNy4xNjEgNDUuNTk0OUMyMDcuMTA4IDQ2LjMzMiAyMDcuMDczIDQ3LjEwNjkgMjA3LjA1OCA0Ny45MTk4QzIwNy4wNDMgNDguNzMyNiAyMDcuMDczIDQ5LjU1MzIgMjA3LjE1IDUwLjM4MTdDMjA3LjIyNiA1MS4yMDk2IDIwNy4zODYgNTEuOTYyIDIwNy42MyA1Mi42MzgzQzIwNy44NzQgNTMuMzE0MSAyMDguMjIxIDUzLjg4NzggMjA4LjY3MSA1NC4zNTkxQzIwOS4xMjEgNTQuODI5OSAyMDkuNzEyIDU1LjExMTIgMjEwLjQ0NCA1NS4yMDIzQzIxMS4yMjEgNTUuMzA4NCAyMTEuODkyIDU1LjE3MTcgMjEyLjQ1NyA1NC43OTJDMjEzLjAyMSA1NC40MTIgMjEzLjQ3OCA1My44OTE4IDIxMy44MyA1My4yMzA4QzIxNC4xOCA1Mi41Njk1IDIxNC40MjggNTEuODA2MSAyMTQuNTczIDUwLjk0MDFDMjE0LjcxOCA1MC4wNzQgMjE0Ljc1OSA0OS4yMDM5IDIxNC42OTkgNDguMzMwMUMyMTQuNjM3IDQ3LjQ1NjIgMjE0LjQ3NyA0Ni42MzIxIDIxNC4yMTggNDUuODU3NUMyMTMuOTU5IDQ1LjA4MjIgMjEzLjYwMSA0NC40NDQgMjEzLjE0MyA0My45NDIzQzIxMy40MTggNDMuODY2OSAyMTMuNzQ1IDQzLjcyMjYgMjE0LjEyNyA0My41MDk1QzIxNC41MDggNDMuMjk2OSAyMTQuOSA0My4wNTc1IDIxNS4zMDUgNDIuNzkxNUMyMTUuNTE1IDQyLjY1MzMgMjE1LjcyNCA0Mi41MTA3IDIxNS45MzIgNDIuMzY0MUMyMTYuMDEgNDMuMTA3MiAyMTYuMTc5IDQzLjc1OSAyMTYuNDQ4IDQ0LjMwNzNDMjE2Ljc3NiA0NC45NzYxIDIxNy4yMjIgNDUuNDkyNSAyMTcuNzg3IDQ1Ljg1NzVDMjE4LjM1MSA0Ni4yMjE4IDIxOS4wMTQgNDYuNDIzNCAyMTkuNzc3IDQ2LjQ2MTJDMjIwLjUzOSA0Ni40OTg4IDIyMS4zNyA0Ni4zNTg2IDIyMi4yNzEgNDYuMDM5M0MyMjIuOTQxIDQ1Ljc5NjUgMjIzLjUyNSA0NS40OTI1IDIyNC4wMiA0NS4xMjc5QzIyNC41MTYgNDQuNzYzIDIyNC45NjIgNDQuMzE4NSAyMjUuMzU4IDQzLjc5NDZDMjI1LjM4MSA0My43NjQyIDIyNS40MDMgNDMuNzMxMyAyMjUuNDI1IDQzLjcwMDZDMjI1LjQ5NiA0My45MTM0IDIyNS41NzQgNDQuMTE3OSAyMjUuNjY3IDQ0LjMwNzNDMjI1Ljk5NSA0NC45NzYxIDIyNi40NDEgNDUuNDkyNSAyMjcuMDA2IDQ1Ljg1NzVDMjI3LjU2OSA0Ni4yMjE4IDIyOC4yMzMgNDYuNDIzNCAyMjguOTk2IDQ2LjQ2MTJDMjI5Ljc1OCA0Ni40OTg4IDIzMC41ODkgNDYuMzU4NiAyMzEuNDg5IDQ2LjAzOTNDMjMyLjE2IDQ1Ljc5NjUgMjMyLjc0NCA0NS40OTI1IDIzMy4yMzkgNDUuMTI3OUMyMzMuNzM1IDQ0Ljc2MyAyMzQuMTgxIDQ0LjMxODUgMjM0LjU3NyA0My43OTQ2QzIzNC45NzQgNDMuMjcgMjM1LjMzNiA0Mi42NjYgMjM1LjY2NCA0MS45ODI0QzIzNS45OTIgNDEuMjk4NSAyMzYuMzIzIDQwLjUxNjQgMjM2LjY1OSAzOS42MzQ3QzIzNi43MiAzOS4zOTE4IDIzNi42NjMgMzkuMTc1MiAyMzYuNDg4IDM4Ljk4NTJaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XHJcbjwvc3ZnPmA7Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQSxzQkFBaUY7QUFFakYsaUNBQTBDLHVCQUFPO0FBQUEsRUFJekMsU0FBUztBQUFBO0FBRWIsWUFBTSxLQUFLO0FBRVgsV0FBSyxjQUFjLElBQUksa0JBQWtCLEtBQUssS0FBSztBQUVuRCxXQUFLO0FBSUwsVUFBSSxRQUFRLE9BQU8sV0FBVztBQUU5QixVQUFJLG9CQUFvQixNQUFNO0FBQzVCLFlBQUksTUFBTSxXQUFXLEtBQUssU0FBUyxnQkFBZ0I7QUFDakQsa0JBQVEsSUFBSTtBQUNaLGVBQUs7QUFBQSxtQkFDSSxLQUFLLFNBQVMsZ0JBQWdCO0FBQ3ZDLGtCQUFRLElBQUk7QUFDWixlQUFLO0FBQUE7QUFBQTtBQUlULFlBQU0saUJBQWlCLFVBQVU7QUFHakMsV0FBSyxTQUFTLE1BQU0sTUFBTSxvQkFBb0IsVUFBVTtBQUV4RDtBQUdBLFVBQUksaUJBQWlCLE1BQU07QUFFekIsY0FBTSxXQUFXLEtBQUssSUFBSSxNQUFNLFVBQVU7QUFDMUMsYUFBSyxTQUFTLGFBQWE7QUFHM0IsWUFBSSxLQUFLLElBQUksTUFBTSxVQUFVLGdCQUFnQjtBQUMzQyxlQUFLLFNBQVMsVUFBVTtBQUN4QixlQUFLLFNBQVMsS0FBSztBQUNuQixrQkFBUSxJQUFJO0FBQUEsZUFDUDtBQUNMLGVBQUssU0FBUyxVQUFVO0FBQ3hCLGVBQUssU0FBUyxLQUFLO0FBQ25CLGtCQUFRLElBQUk7QUFBQTtB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 diff --git a/.obsidian/plugins/obsidian-minimal-settings/manifest.json b/.obsidian/plugins/obsidian-minimal-settings/manifest.json index 17d57e4..17584fe 100644 --- a/.obsidian/plugins/obsidian-minimal-settings/manifest.json +++ b/.obsidian/plugins/obsidian-minimal-settings/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-minimal-settings", "name": "Minimal Theme Settings", - "version": "6.2.0", + "version": "6.3.1", "minAppVersion": "0.16.0", "description": "Change the colors, fonts and features of Minimal Theme.", "author": "@kepano", diff --git a/.obsidian/plugins/obsidian-outliner/data.json b/.obsidian/plugins/obsidian-outliner/data.json index 3c7ec5a..f33b27c 100644 --- a/.obsidian/plugins/obsidian-outliner/data.json +++ b/.obsidian/plugins/obsidian-outliner/data.json @@ -6,5 +6,7 @@ "betterTab": true, "selectAll": true, "listLines": false, - "listLineAction": "toggle-folding" + "listLineAction": "toggle-folding", + "dnd": true, + "previousRelease": "4.7.1" } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-outliner/main.js b/.obsidian/plugins/obsidian-outliner/main.js index 99c7398..15468bb 100644 --- a/.obsidian/plugins/obsidian-outliner/main.js +++ b/.obsidian/plugins/obsidian-outliner/main.js @@ -2,8 +2,8 @@ var obsidian = require('obsidian'); var view = require('@codemirror/view'); -var state = require('@codemirror/state'); var language = require('@codemirror/language'); +var state = require('@codemirror/state'); /****************************************************************************** Copyright (c) Microsoft Corporation. @@ -30,20 +30,7 @@ function __awaiter(thisArg, _arguments, P, generator) { }); } -function recalculateNumericBullets(root) { - function visit(parent) { - let index = 1; - for (const child of parent.getChildren()) { - if (/\d+\./.test(child.getBullet())) { - child.replateBullet(`${index++}.`); - } - visit(child); - } - } - visit(root); -} - -class DeleteAndMergeWithPreviousLineOperation { +class MoveCursorToPreviousUnfoldedLine { constructor(root) { this.root = root; this.stopPropagation = false; @@ -60,379 +47,204 @@ class DeleteAndMergeWithPreviousLineOperation { if (!root.hasSingleCursor()) { return; } - const list = root.getListUnderCursor(); - const cursor = root.getCursor(); + const list = this.root.getListUnderCursor(); + const cursor = this.root.getCursor(); const lines = list.getLinesInfo(); - const lineNo = lines.findIndex((l) => cursor.ch === l.from.ch && cursor.line === l.from.line); + const lineNo = lines.findIndex((l) => { + return (cursor.ch === l.from.ch + list.getCheckboxLength() && + cursor.line === l.from.line); + }); if (lineNo === 0) { - this.mergeWithPreviousItem(root, cursor, list); + this.moveCursorToPreviousUnfoldedItem(root, cursor); } else if (lineNo > 0) { - this.mergeNotes(root, cursor, list, lines, lineNo); + this.moveCursorToPreviousNoteLine(root, lines, lineNo); } } - mergeNotes(root, cursor, list, lines, lineNo) { + moveCursorToPreviousNoteLine(root, lines, lineNo) { this.stopPropagation = true; this.updated = true; - const prevLineNo = lineNo - 1; - root.replaceCursor({ - line: cursor.line - 1, - ch: lines[prevLineNo].text.length + lines[prevLineNo].from.ch, - }); - lines[prevLineNo].text += lines[lineNo].text; - lines.splice(lineNo, 1); - list.replaceLines(lines.map((l) => l.text)); + root.replaceCursor(lines[lineNo - 1].to); } - mergeWithPreviousItem(root, cursor, list) { - if (root.getChildren()[0] === list && list.getChildren().length === 0) { - return; - } - this.stopPropagation = true; + moveCursorToPreviousUnfoldedItem(root, cursor) { const prev = root.getListUnderLine(cursor.line - 1); if (!prev) { return; } - const bothAreEmpty = prev.isEmpty() && list.isEmpty(); - const prevIsEmptyAndSameLevel = prev.isEmpty() && !list.isEmpty() && prev.getLevel() == list.getLevel(); - const listIsEmptyAndPrevIsParent = list.isEmpty() && prev.getLevel() == list.getLevel() - 1; - if (bothAreEmpty || prevIsEmptyAndSameLevel || listIsEmptyAndPrevIsParent) { - this.updated = true; - const parent = list.getParent(); - const prevEnd = prev.getLastLineContentEnd(); - if (!prev.getNotesIndent() && list.getNotesIndent()) { - prev.setNotesIndent(prev.getFirstLineIndent() + - list.getNotesIndent().slice(list.getFirstLineIndent().length)); - } - const oldLines = prev.getLines(); - const newLines = list.getLines(); - oldLines[oldLines.length - 1] += newLines[0]; - const resultLines = oldLines.concat(newLines.slice(1)); - prev.replaceLines(resultLines); - parent.removeChild(list); - for (const c of list.getChildren()) { - list.removeChild(c); - prev.addAfterAll(c); - } - root.replaceCursor(prevEnd); - recalculateNumericBullets(root); - } - } -} - -class DeleteAndMergeWithNextLineOperation { - constructor(root) { - this.root = root; - this.deleteAndMergeWithPrevious = - new DeleteAndMergeWithPreviousLineOperation(root); - } - shouldStopPropagation() { - return this.deleteAndMergeWithPrevious.shouldStopPropagation(); - } - shouldUpdate() { - return this.deleteAndMergeWithPrevious.shouldUpdate(); - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } - const list = root.getListUnderCursor(); - const cursor = root.getCursor(); - const lines = list.getLinesInfo(); - const lineNo = lines.findIndex((l) => cursor.ch === l.to.ch && cursor.line === l.to.line); - if (lineNo === lines.length - 1) { - const nextLine = lines[lineNo].to.line + 1; - const nextList = root.getListUnderLine(nextLine); - if (!nextList) { - return; - } - root.replaceCursor(nextList.getFirstLineContentStart()); - this.deleteAndMergeWithPrevious.perform(); - } - else if (lineNo >= 0) { - root.replaceCursor(lines[lineNo + 1].from); - this.deleteAndMergeWithPrevious.perform(); - } - } -} - -class DeleteTillLineStartOperation { - constructor(root) { - this.root = root; - this.stopPropagation = false; - this.updated = false; - } - shouldStopPropagation() { - return this.stopPropagation; - } - shouldUpdate() { - return this.updated; - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } this.stopPropagation = true; this.updated = true; - const cursor = root.getCursor(); - const list = root.getListUnderCursor(); - const lines = list.getLinesInfo(); - const lineNo = lines.findIndex((l) => l.from.line === cursor.line); - lines[lineNo].text = lines[lineNo].text.slice(cursor.ch - lines[lineNo].from.ch); - list.replaceLines(lines.map((l) => l.text)); - root.replaceCursor(lines[lineNo].from); + if (prev.isFolded()) { + const foldRoot = prev.getTopFoldRoot(); + const firstLineEnd = foldRoot.getLinesInfo()[0].to; + root.replaceCursor(firstLineEnd); + } + else { + root.replaceCursor(prev.getLastLineContentEnd()); + } } } -class DeleteShouldIgnoreBulletsFeature { - constructor(plugin, settings, ime, obsidian, performOperation) { +function getEditorFromState(state) { + const { editor } = state.field(obsidian.editorInfoField); + if (!editor) { + return null; + } + return new MyEditor(editor); +} +function foldInside(view, from, to) { + let found = null; + language.foldedRanges(view.state).between(from, to, (from, to) => { + if (!found || found.from > from) + found = { from, to }; + }); + return found; +} +class MyEditor { + constructor(e) { + this.e = e; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this.view = this.e.cm; + } + getCursor() { + return this.e.getCursor(); + } + getLine(n) { + return this.e.getLine(n); + } + lastLine() { + return this.e.lastLine(); + } + listSelections() { + return this.e.listSelections(); + } + getRange(from, to) { + return this.e.getRange(from, to); + } + replaceRange(replacement, from, to) { + return this.e.replaceRange(replacement, from, to); + } + setSelections(selections) { + this.e.setSelections(selections); + } + setValue(text) { + this.e.setValue(text); + } + getValue() { + return this.e.getValue(); + } + offsetToPos(offset) { + return this.e.offsetToPos(offset); + } + posToOffset(pos) { + return this.e.posToOffset(pos); + } + fold(n) { + const { view } = this; + const l = view.lineBlockAt(view.state.doc.line(n + 1).from); + const range = language.foldable(view.state, l.from, l.to); + if (!range || range.from === range.to) { + return; + } + view.dispatch({ effects: [language.foldEffect.of(range)] }); + } + unfold(n) { + const { view } = this; + const l = view.lineBlockAt(view.state.doc.line(n + 1).from); + const range = foldInside(view, l.from, l.to); + if (!range) { + return; + } + view.dispatch({ effects: [language.unfoldEffect.of(range)] }); + } + getAllFoldedLines() { + const c = language.foldedRanges(this.view.state).iter(); + const res = []; + while (c.value) { + res.push(this.offsetToPos(c.from).line); + c.next(); + } + return res; + } + triggerOnKeyDown(e) { + view.runScopeHandlers(this.view, e, "editor"); + } + getZoomRange() { + if (!window.ObsidianZoomPlugin) { + return null; + } + return window.ObsidianZoomPlugin.getZoomRange(this.e); + } + zoomOut() { + if (!window.ObsidianZoomPlugin) { + return; + } + window.ObsidianZoomPlugin.zoomOut(this.e); + } + zoomIn(line) { + if (!window.ObsidianZoomPlugin) { + return; + } + window.ObsidianZoomPlugin.zoomIn(this.e, line); + } + tryRefreshZoom(line) { + if (!window.ObsidianZoomPlugin) { + return; + } + if (window.ObsidianZoomPlugin.refreshZoom) { + window.ObsidianZoomPlugin.refreshZoom(this.e); + } + else { + window.ObsidianZoomPlugin.zoomIn(this.e, line); + } + } +} + +function createKeymapRunCallback(config) { + const check = config.check || (() => true); + const { run } = config; + return (view) => { + const editor = getEditorFromState(view.state); + if (!check(editor)) { + return false; + } + const { shouldUpdate, shouldStopPropagation } = run(editor); + return shouldUpdate || shouldStopPropagation; + }; +} + +class ArrowLeftAndCtrlArrowLeftBehaviourOverride { + constructor(plugin, settings, imeDetector, operationPerformer) { this.plugin = plugin; this.settings = settings; - this.ime = ime; - this.obsidian = obsidian; - this.performOperation = performOperation; + this.imeDetector = imeDetector; + this.operationPerformer = operationPerformer; this.check = () => { - return this.settings.stickCursor && !this.ime.isIMEOpened(); + return (this.settings.keepCursorWithinContent !== "never" && + !this.imeDetector.isOpened()); }; - this.deleteAndMergeWithPreviousLine = (editor) => { - return this.performOperation.performOperation((root) => new DeleteAndMergeWithPreviousLineOperation(root), editor); - }; - this.deleteTillLineStart = (editor) => { - return this.performOperation.performOperation((root) => new DeleteTillLineStartOperation(root), editor); - }; - this.deleteAndMergeWithNextLine = (editor) => { - return this.performOperation.performOperation((root) => new DeleteAndMergeWithNextLineOperation(root), editor); + this.run = (editor) => { + return this.operationPerformer.perform((root) => new MoveCursorToPreviousUnfoldedLine(root), editor); }; } load() { return __awaiter(this, void 0, void 0, function* () { this.plugin.registerEditorExtension(view.keymap.of([ { - key: "Backspace", - run: this.obsidian.createKeymapRunCallback({ - check: this.check, - run: this.deleteAndMergeWithPreviousLine, - }), - }, - { - key: "Delete", - run: this.obsidian.createKeymapRunCallback({ - check: this.check, - run: this.deleteAndMergeWithNextLine, - }), - }, - { - mac: "m-Backspace", - run: this.obsidian.createKeymapRunCallback({ - check: this.check, - run: this.deleteTillLineStart, - }), - }, - ])); - }); - } - unload() { - return __awaiter(this, void 0, void 0, function* () { }); - } -} - -class EnsureCursorInListContentOperation { - constructor(root) { - this.root = root; - this.stopPropagation = false; - this.updated = false; - } - shouldStopPropagation() { - return this.stopPropagation; - } - shouldUpdate() { - return this.updated; - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } - this.stopPropagation = true; - const cursor = root.getCursor(); - const list = root.getListUnderCursor(); - const contentStart = list.getFirstLineContentStart(); - const linePrefix = contentStart.line === cursor.line - ? contentStart.ch + list.getCheckboxLength() - : list.getNotesIndent().length; - if (cursor.ch < linePrefix) { - this.updated = true; - root.replaceCursor({ - line: cursor.line, - ch: linePrefix, - }); - } - } -} - -class EnsureCursorIsInUnfoldedLineOperation { - constructor(root) { - this.root = root; - this.stopPropagation = false; - this.updated = false; - } - shouldStopPropagation() { - return this.stopPropagation; - } - shouldUpdate() { - return this.updated; - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } - this.stopPropagation = true; - const cursor = root.getCursor(); - const list = root.getListUnderCursor(); - if (!list.isFolded()) { - return; - } - const foldRoot = list.getTopFoldRoot(); - const firstLineEnd = foldRoot.getLinesInfo()[0].to; - if (cursor.line > firstLineEnd.line) { - this.updated = true; - root.replaceCursor(firstLineEnd); - } - } -} - -class EnsureCursorInListContentFeature { - constructor(plugin, settings, obsidian, performOperation) { - this.plugin = plugin; - this.settings = settings; - this.obsidian = obsidian; - this.performOperation = performOperation; - this.transactionExtender = (tr) => { - if (!this.settings.stickCursor || !tr.selection) { - return null; - } - const editor = this.obsidian.getEditorFromState(tr.startState); - setTimeout(() => { - this.handleCursorActivity(editor); - }, 0); - return null; - }; - this.handleCursorActivity = (editor) => { - this.performOperation.performOperation((root) => new EnsureCursorIsInUnfoldedLineOperation(root), editor); - this.performOperation.performOperation((root) => new EnsureCursorInListContentOperation(root), editor); - }; - } - load() { - return __awaiter(this, void 0, void 0, function* () { - this.plugin.registerEditorExtension(state.EditorState.transactionExtender.of(this.transactionExtender)); - }); - } - unload() { - return __awaiter(this, void 0, void 0, function* () { }); - } -} - -class MoveLeftOperation { - constructor(root) { - this.root = root; - this.stopPropagation = false; - this.updated = false; - } - shouldStopPropagation() { - return this.stopPropagation; - } - shouldUpdate() { - return this.updated; - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } - this.stopPropagation = true; - const list = root.getListUnderCursor(); - const parent = list.getParent(); - const grandParent = parent.getParent(); - if (!grandParent) { - return; - } - this.updated = true; - const listStartLineBefore = root.getContentLinesRangeOf(list)[0]; - const indentRmFrom = parent.getFirstLineIndent().length; - const indentRmTill = list.getFirstLineIndent().length; - parent.removeChild(list); - grandParent.addAfter(parent, list); - list.unindentContent(indentRmFrom, indentRmTill); - const listStartLineAfter = root.getContentLinesRangeOf(list)[0]; - const lineDiff = listStartLineAfter - listStartLineBefore; - const chDiff = indentRmTill - indentRmFrom; - const cursor = root.getCursor(); - root.replaceCursor({ - line: cursor.line + lineDiff, - ch: cursor.ch - chDiff, - }); - recalculateNumericBullets(root); - } -} - -function isEmptyLineOrEmptyCheckbox(line) { - return line === "" || line === "[ ] "; -} - -class OutdentIfLineIsEmptyOperation { - constructor(root) { - this.root = root; - this.moveLeftOp = new MoveLeftOperation(root); - } - shouldStopPropagation() { - return this.moveLeftOp.shouldStopPropagation(); - } - shouldUpdate() { - return this.moveLeftOp.shouldUpdate(); - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } - const list = root.getListUnderCursor(); - const lines = list.getLines(); - if (lines.length > 1 || - !isEmptyLineOrEmptyCheckbox(lines[0]) || - list.getLevel() === 1) { - return; - } - this.moveLeftOp.perform(); - } -} - -class EnterOutdentIfLineIsEmptyFeature { - constructor(plugin, settings, ime, obsidian, performOperation) { - this.plugin = plugin; - this.settings = settings; - this.ime = ime; - this.obsidian = obsidian; - this.performOperation = performOperation; - this.check = () => { - return this.settings.betterEnter && !this.ime.isIMEOpened(); - }; - this.run = (editor) => { - return this.performOperation.performOperation((root) => new OutdentIfLineIsEmptyOperation(root), editor); - }; - } - load() { - return __awaiter(this, void 0, void 0, function* () { - this.plugin.registerEditorExtension(state.Prec.highest(view.keymap.of([ - { - key: "Enter", - run: this.obsidian.createKeymapRunCallback({ + key: "ArrowLeft", + run: createKeymapRunCallback({ check: this.check, run: this.run, }), }, - ]))); + { + win: "c-ArrowLeft", + linux: "c-ArrowLeft", + run: createKeymapRunCallback({ + check: this.check, + run: this.run, + }), + }, + ])); }); } unload() { @@ -449,20 +261,40 @@ function maxPos(a, b) { function minPos(a, b) { return cmpPos(a, b) < 0 ? a : b; } +function isRangesIntersects(a, b) { + return cmpPos(a[1], b[0]) >= 0 && cmpPos(a[0], b[1]) <= 0; +} +function recalculateNumericBullets(root) { + function visit(parent) { + let index = 1; + for (const child of parent.getChildren()) { + if (/\d+\./.test(child.getBullet())) { + child.replateBullet(`${index++}.`); + } + visit(child); + } + } + visit(root); +} +let idSeq = 0; class List { - constructor(root, indent, bullet, checkboxLength, spaceAfterBullet, firstLine, foldRoot) { + constructor(root, indent, bullet, optionalCheckbox, spaceAfterBullet, firstLine, foldRoot) { this.root = root; this.indent = indent; this.bullet = bullet; - this.checkboxLength = checkboxLength; + this.optionalCheckbox = optionalCheckbox; this.spaceAfterBullet = spaceAfterBullet; this.foldRoot = foldRoot; this.parent = null; this.children = []; this.notesIndent = null; this.lines = []; + this.id = idSeq++; this.lines.push(firstLine); } + getID() { + return this.id; + } getNotesIndent() { return this.notesIndent; } @@ -516,6 +348,13 @@ class List { ch: this.getContentStartCh(), }; } + getFirstLineContentStartAfterCheckbox() { + const startLine = this.root.getContentLinesRangeOf(this)[0]; + return { + line: startLine, + ch: this.getContentStartCh() + this.getCheckboxLength(), + }; + } getLastLineContentEnd() { const endLine = this.root.getContentLinesRangeOf(this)[1]; const endCh = this.lines.length === 1 @@ -526,6 +365,16 @@ class List { ch: endCh, }; } + getContentEndIncludingChildren() { + return this.getLastChild().getLastLineContentEnd(); + } + getLastChild() { + let lastChild = this; + while (!lastChild.isEmpty()) { + lastChild = lastChild.getChildren().last(); + } + return lastChild; + } getContentStartCh() { return this.indent.length + this.bullet.length + 1; } @@ -542,7 +391,6 @@ class List { return this.foldRoot; } getTopFoldRoot() { - // eslint-disable-next-line @typescript-eslint/no-this-alias let tmp = this; let foldRoot = null; while (tmp) { @@ -594,7 +442,7 @@ class List { return this.spaceAfterBullet; } getCheckboxLength() { - return this.checkboxLength; + return this.optionalCheckbox.length; } replateBullet(bullet) { this.bullet = bullet; @@ -651,20 +499,36 @@ class List { } return res; } + clone(newRoot) { + const clone = new List(newRoot, this.indent, this.bullet, this.optionalCheckbox, this.spaceAfterBullet, "", this.foldRoot); + clone.id = this.id; + clone.lines = this.lines.concat(); + clone.notesIndent = this.notesIndent; + for (const child of this.children) { + clone.addAfterAll(child.clone(newRoot)); + } + return clone; + } } class Root { constructor(start, end, selections) { this.start = start; this.end = end; - this.rootList = new List(this, "", "", 0, "", "", false); + this.rootList = new List(this, "", "", "", "", "", false); this.selections = []; this.replaceSelections(selections); } getRootList() { return this.rootList; } - getRange() { - return [Object.assign({}, this.start), Object.assign({}, this.end)]; + getContentRange() { + return [this.getContentStart(), this.getContentEnd()]; + } + getContentStart() { + return Object.assign({}, this.start); + } + getContentEnd() { + return Object.assign({}, this.end); } getSelections() { return this.selections.map((s) => ({ @@ -766,9 +630,927 @@ class Root { } return res.replace(/\n$/, ""); } + clone() { + const clone = new Root(Object.assign({}, this.start), Object.assign({}, this.end), this.getSelections()); + clone.rootList = this.rootList.clone(clone); + return clone; + } } -class CreateNewItemOperation { +class DeleteTillPreviousLineContentEnd { + constructor(root) { + this.root = root; + this.stopPropagation = false; + this.updated = false; + } + shouldStopPropagation() { + return this.stopPropagation; + } + shouldUpdate() { + return this.updated; + } + perform() { + const { root } = this; + if (!root.hasSingleCursor()) { + return; + } + const list = root.getListUnderCursor(); + const cursor = root.getCursor(); + const lines = list.getLinesInfo(); + const lineNo = lines.findIndex((l) => cursor.ch === l.from.ch && cursor.line === l.from.line); + if (lineNo === 0) { + this.mergeWithPreviousItem(root, cursor, list); + } + else if (lineNo > 0) { + this.mergeNotes(root, cursor, list, lines, lineNo); + } + } + mergeNotes(root, cursor, list, lines, lineNo) { + this.stopPropagation = true; + this.updated = true; + const prevLineNo = lineNo - 1; + root.replaceCursor({ + line: cursor.line - 1, + ch: lines[prevLineNo].text.length + lines[prevLineNo].from.ch, + }); + lines[prevLineNo].text += lines[lineNo].text; + lines.splice(lineNo, 1); + list.replaceLines(lines.map((l) => l.text)); + } + mergeWithPreviousItem(root, cursor, list) { + if (root.getChildren()[0] === list && list.isEmpty()) { + return; + } + this.stopPropagation = true; + const prev = root.getListUnderLine(cursor.line - 1); + if (!prev) { + return; + } + const bothAreEmpty = prev.isEmpty() && list.isEmpty(); + const prevIsEmptyAndSameLevel = prev.isEmpty() && !list.isEmpty() && prev.getLevel() === list.getLevel(); + const listIsEmptyAndPrevIsParent = list.isEmpty() && prev.getLevel() === list.getLevel() - 1; + if (bothAreEmpty || prevIsEmptyAndSameLevel || listIsEmptyAndPrevIsParent) { + this.updated = true; + const parent = list.getParent(); + const prevEnd = prev.getLastLineContentEnd(); + if (!prev.getNotesIndent() && list.getNotesIndent()) { + prev.setNotesIndent(prev.getFirstLineIndent() + + list.getNotesIndent().slice(list.getFirstLineIndent().length)); + } + const oldLines = prev.getLines(); + const newLines = list.getLines(); + oldLines[oldLines.length - 1] += newLines[0]; + const resultLines = oldLines.concat(newLines.slice(1)); + prev.replaceLines(resultLines); + parent.removeChild(list); + for (const c of list.getChildren()) { + list.removeChild(c); + prev.addAfterAll(c); + } + root.replaceCursor(prevEnd); + recalculateNumericBullets(root); + } + } +} + +class BackspaceBehaviourOverride { + constructor(plugin, settings, imeDetector, operationPerformer) { + this.plugin = plugin; + this.settings = settings; + this.imeDetector = imeDetector; + this.operationPerformer = operationPerformer; + this.check = () => { + return (this.settings.keepCursorWithinContent !== "never" && + !this.imeDetector.isOpened()); + }; + this.run = (editor) => { + return this.operationPerformer.perform((root) => new DeleteTillPreviousLineContentEnd(root), editor); + }; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.registerEditorExtension(view.keymap.of([ + { + key: "Backspace", + run: createKeymapRunCallback({ + check: this.check, + run: this.run, + }), + }, + ])); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { }); + } +} + +const BETTER_LISTS_BODY_CLASS = "outliner-plugin-better-lists"; +class BetterListsStyles { + constructor(settings, obsidianSettings) { + this.settings = settings; + this.obsidianSettings = obsidianSettings; + this.updateBodyClass = () => { + const shouldExists = this.obsidianSettings.isDefaultThemeEnabled() && + this.settings.betterListsStyles; + const exists = document.body.classList.contains(BETTER_LISTS_BODY_CLASS); + if (shouldExists && !exists) { + document.body.classList.add(BETTER_LISTS_BODY_CLASS); + } + if (!shouldExists && exists) { + document.body.classList.remove(BETTER_LISTS_BODY_CLASS); + } + }; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.updateBodyClass(); + this.updateBodyClassInterval = window.setInterval(() => { + this.updateBodyClass(); + }, 1000); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { + clearInterval(this.updateBodyClassInterval); + document.body.classList.remove(BETTER_LISTS_BODY_CLASS); + }); + } +} + +class SelectAllContent { + constructor(root) { + this.root = root; + this.stopPropagation = false; + this.updated = false; + } + shouldStopPropagation() { + return this.stopPropagation; + } + shouldUpdate() { + return this.updated; + } + perform() { + const { root } = this; + if (!root.hasSingleSelection()) { + return; + } + const selection = root.getSelections()[0]; + const [rootStart, rootEnd] = root.getContentRange(); + const selectionFrom = minPos(selection.anchor, selection.head); + const selectionTo = maxPos(selection.anchor, selection.head); + if (selectionFrom.line < rootStart.line || + selectionTo.line > rootEnd.line) { + return false; + } + if (selectionFrom.line === rootStart.line && + selectionFrom.ch === rootStart.ch && + selectionTo.line === rootEnd.line && + selectionTo.ch === rootEnd.ch) { + return false; + } + const list = root.getListUnderCursor(); + const contentStart = list.getFirstLineContentStartAfterCheckbox(); + const contentEnd = list.getLastLineContentEnd(); + if (selectionFrom.line < contentStart.line || + selectionTo.line > contentEnd.line) { + return false; + } + this.stopPropagation = true; + this.updated = true; + if (selectionFrom.line === contentStart.line && + selectionFrom.ch === contentStart.ch && + selectionTo.line === contentEnd.line && + selectionTo.ch === contentEnd.ch) { + // select whole list + root.replaceSelections([{ anchor: rootStart, head: rootEnd }]); + } + else { + // select whole line + root.replaceSelections([{ anchor: contentStart, head: contentEnd }]); + } + return true; + } +} + +class CtrlAAndCmdABehaviourOverride { + constructor(plugin, settings, imeDetector, operationPerformer) { + this.plugin = plugin; + this.settings = settings; + this.imeDetector = imeDetector; + this.operationPerformer = operationPerformer; + this.check = () => { + return (this.settings.overrideSelectAllBehaviour && !this.imeDetector.isOpened()); + }; + this.run = (editor) => { + return this.operationPerformer.perform((root) => new SelectAllContent(root), editor); + }; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.registerEditorExtension(view.keymap.of([ + { + key: "c-a", + mac: "m-a", + run: createKeymapRunCallback({ + check: this.check, + run: this.run, + }), + }, + ])); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { }); + } +} + +class DeleteTillNextLineContentStart { + constructor(root) { + this.root = root; + this.deleteTillPreviousLineContentEnd = + new DeleteTillPreviousLineContentEnd(root); + } + shouldStopPropagation() { + return this.deleteTillPreviousLineContentEnd.shouldStopPropagation(); + } + shouldUpdate() { + return this.deleteTillPreviousLineContentEnd.shouldUpdate(); + } + perform() { + const { root } = this; + if (!root.hasSingleCursor()) { + return; + } + const list = root.getListUnderCursor(); + const cursor = root.getCursor(); + const lines = list.getLinesInfo(); + const lineNo = lines.findIndex((l) => cursor.ch === l.to.ch && cursor.line === l.to.line); + if (lineNo === lines.length - 1) { + const nextLine = lines[lineNo].to.line + 1; + const nextList = root.getListUnderLine(nextLine); + if (!nextList) { + return; + } + root.replaceCursor(nextList.getFirstLineContentStart()); + this.deleteTillPreviousLineContentEnd.perform(); + } + else if (lineNo >= 0) { + root.replaceCursor(lines[lineNo + 1].from); + this.deleteTillPreviousLineContentEnd.perform(); + } + } +} + +class DeleteBehaviourOverride { + constructor(plugin, settings, imeDetector, operationPerformer) { + this.plugin = plugin; + this.settings = settings; + this.imeDetector = imeDetector; + this.operationPerformer = operationPerformer; + this.check = () => { + return (this.settings.keepCursorWithinContent !== "never" && + !this.imeDetector.isOpened()); + }; + this.run = (editor) => { + return this.operationPerformer.perform((root) => new DeleteTillNextLineContentStart(root), editor); + }; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.registerEditorExtension(view.keymap.of([ + { + key: "Delete", + run: createKeymapRunCallback({ + check: this.check, + run: this.run, + }), + }, + ])); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { }); + } +} + +class MoveListToDifferentPosition { + constructor(root, listToMove, placeToMove, whereToMove, defaultIndentChars) { + this.root = root; + this.listToMove = listToMove; + this.placeToMove = placeToMove; + this.whereToMove = whereToMove; + this.defaultIndentChars = defaultIndentChars; + this.stopPropagation = false; + this.updated = false; + } + shouldStopPropagation() { + return this.stopPropagation; + } + shouldUpdate() { + return this.updated; + } + perform() { + if (this.listToMove === this.placeToMove) { + return; + } + this.stopPropagation = true; + this.updated = true; + const cursorAnchor = this.calculateCursorAnchor(); + this.moveList(); + this.changeIndent(); + this.restoreCursor(cursorAnchor); + recalculateNumericBullets(this.root); + } + calculateCursorAnchor() { + const cursorLine = this.root.getCursor().line; + const lines = [ + this.listToMove.getFirstLineContentStart().line, + this.listToMove.getLastLineContentEnd().line, + this.placeToMove.getFirstLineContentStart().line, + this.placeToMove.getLastLineContentEnd().line, + ]; + const listStartLine = Math.min(...lines); + const listEndLine = Math.max(...lines); + if (cursorLine < listStartLine || cursorLine > listEndLine) { + return null; + } + const cursor = this.root.getCursor(); + const cursorList = this.root.getListUnderLine(cursor.line); + const cursorListStart = cursorList.getFirstLineContentStart(); + const lineDiff = cursor.line - cursorListStart.line; + const chDiff = cursor.ch - cursorListStart.ch; + return { cursorList, lineDiff, chDiff }; + } + moveList() { + this.listToMove.getParent().removeChild(this.listToMove); + switch (this.whereToMove) { + case "before": + this.placeToMove + .getParent() + .addBefore(this.placeToMove, this.listToMove); + break; + case "after": + this.placeToMove + .getParent() + .addAfter(this.placeToMove, this.listToMove); + break; + case "inside": + this.placeToMove.addBeforeAll(this.listToMove); + break; + } + } + changeIndent() { + const oldIndent = this.listToMove.getFirstLineIndent(); + const newIndent = this.whereToMove === "inside" + ? this.placeToMove.getFirstLineIndent() + this.defaultIndentChars + : this.placeToMove.getFirstLineIndent(); + this.listToMove.unindentContent(0, oldIndent.length); + this.listToMove.indentContent(0, newIndent); + } + restoreCursor(cursorAnchor) { + if (cursorAnchor) { + const cursorListStart = cursorAnchor.cursorList.getFirstLineContentStart(); + this.root.replaceCursor({ + line: cursorListStart.line + cursorAnchor.lineDiff, + ch: cursorListStart.ch + cursorAnchor.chDiff, + }); + } + else { + // When you move a list, the screen scrolls to the cursor. + // It is better to move the cursor into the viewport than let the screen scroll. + this.root.replaceCursor(this.listToMove.getLastLineContentEnd()); + } + } +} + +const BODY_CLASS = "outliner-plugin-dnd"; +class DragAndDrop { + constructor(plugin, settings, obisidian, parser, operationPerformer) { + this.plugin = plugin; + this.settings = settings; + this.obisidian = obisidian; + this.parser = parser; + this.operationPerformer = operationPerformer; + this.preStart = null; + this.state = null; + this.handleSettingsChange = () => { + if (!isFeatureSupported()) { + return; + } + if (this.settings.dragAndDrop) { + document.body.classList.add(BODY_CLASS); + } + else { + document.body.classList.remove(BODY_CLASS); + } + }; + this.handleMouseDown = (e) => { + if (!isFeatureSupported() || + !this.settings.dragAndDrop || + !isClickOnBullet(e)) { + return; + } + const view = getEditorViewFromHTMLElement(e.target); + if (!view) { + return; + } + e.preventDefault(); + e.stopPropagation(); + this.preStart = { + x: e.x, + y: e.y, + view, + }; + }; + this.handleMouseMove = (e) => { + if (this.preStart) { + this.startDragging(); + } + if (this.state) { + this.detectAndDrawDropZone(e.x, e.y); + } + }; + this.handleMouseUp = () => { + if (this.preStart) { + this.preStart = null; + } + if (this.state) { + this.stopDragging(); + } + }; + this.handleKeyDown = (e) => { + if (this.state && e.code === "Escape") { + this.cancelDragging(); + } + }; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.registerEditorExtension([ + draggingLinesStateField, + droppingLinesStateField, + ]); + this.enableFeatureToggle(); + this.createDropZone(); + this.addEventListeners(); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { + this.removeEventListeners(); + this.removeDropZone(); + this.disableFeatureToggle(); + }); + } + enableFeatureToggle() { + this.settings.onChange(this.handleSettingsChange); + this.handleSettingsChange(); + } + disableFeatureToggle() { + this.settings.removeCallback(this.handleSettingsChange); + document.body.classList.remove(BODY_CLASS); + } + createDropZone() { + this.dropZonePadding = document.createElement("div"); + this.dropZonePadding.classList.add("outliner-plugin-drop-zone-padding"); + this.dropZone = document.createElement("div"); + this.dropZone.classList.add("outliner-plugin-drop-zone"); + this.dropZone.style.display = "none"; + this.dropZone.appendChild(this.dropZonePadding); + document.body.appendChild(this.dropZone); + } + removeDropZone() { + document.body.removeChild(this.dropZone); + this.dropZonePadding = null; + this.dropZone = null; + } + addEventListeners() { + document.addEventListener("mousedown", this.handleMouseDown, { + capture: true, + }); + document.addEventListener("mousemove", this.handleMouseMove); + document.addEventListener("mouseup", this.handleMouseUp); + document.addEventListener("keydown", this.handleKeyDown); + } + removeEventListeners() { + document.removeEventListener("mousedown", this.handleMouseDown, { + capture: true, + }); + document.removeEventListener("mousemove", this.handleMouseMove); + document.removeEventListener("mouseup", this.handleMouseUp); + document.removeEventListener("keydown", this.handleKeyDown); + } + startDragging() { + const { x, y, view } = this.preStart; + this.preStart = null; + const editor = getEditorFromState(view.state); + const pos = editor.offsetToPos(view.posAtCoords({ x, y })); + const root = this.parser.parse(editor, pos); + const list = root.getListUnderLine(pos.line); + const state = new DragAndDropState(view, editor, root, list); + if (!state.hasDropVariants()) { + return; + } + this.state = state; + this.highlightDraggingLines(); + } + detectAndDrawDropZone(x, y) { + this.state.calculateNearestDropVariant(x, y); + this.drawDropZone(); + } + cancelDragging() { + this.state.dropVariant = null; + this.stopDragging(); + } + stopDragging() { + this.unhightlightDraggingLines(); + this.hideDropZone(); + this.applyChanges(); + this.state = null; + } + applyChanges() { + if (!this.state.dropVariant) { + return; + } + const { state } = this; + const { dropVariant, editor, root, list } = state; + const newRoot = this.parser.parse(editor, root.getContentStart()); + if (!isSameRoots(root, newRoot)) { + new obsidian.Notice(`The item cannot be moved. The page content changed during the move.`, 5000); + return; + } + this.operationPerformer.eval(root, new MoveListToDifferentPosition(root, list, dropVariant.placeToMove, dropVariant.whereToMove, this.obisidian.getDefaultIndentChars()), editor); + } + highlightDraggingLines() { + const { state } = this; + const { list, editor, view } = state; + const lines = []; + const fromLine = list.getFirstLineContentStart().line; + const tillLine = list.getContentEndIncludingChildren().line; + for (let i = fromLine; i <= tillLine; i++) { + lines.push(editor.posToOffset({ line: i, ch: 0 })); + } + view.dispatch({ + effects: [dndStarted.of(lines)], + }); + document.body.classList.add("outliner-plugin-dragging"); + } + unhightlightDraggingLines() { + document.body.classList.remove("outliner-plugin-dragging"); + this.state.view.dispatch({ + effects: [dndEnded.of()], + }); + } + drawDropZone() { + const { state } = this; + const { view, editor, dropVariant } = state; + const newParent = dropVariant.whereToMove === "inside" + ? dropVariant.placeToMove + : dropVariant.placeToMove.getParent(); + const newParentIsRootList = !newParent.getParent(); + { + const width = Math.round(view.contentDOM.offsetWidth - + (dropVariant.left - this.state.leftPadding)); + this.dropZone.style.display = "block"; + this.dropZone.style.top = dropVariant.top + "px"; + this.dropZone.style.left = dropVariant.left + "px"; + this.dropZone.style.width = width + "px"; + } + { + const level = newParent.getLevel(); + const indentWidth = this.state.tabWidth; + const width = indentWidth * level; + const dashPadding = 3; + const dashWidth = indentWidth - dashPadding; + const color = getComputedStyle(document.body).getPropertyValue("--color-accent"); + this.dropZonePadding.style.width = `${width}px`; + this.dropZonePadding.style.marginLeft = `-${width}px`; + this.dropZonePadding.style.backgroundImage = `url('data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20${width}%204%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cline%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%22${width}%22%20y2%3D%220%22%20stroke%3D%22${color}%22%20stroke-width%3D%228%22%20stroke-dasharray%3D%22${dashWidth}%20${dashPadding}%22%2F%3E%3C%2Fsvg%3E')`; + } + this.state.view.dispatch({ + effects: [ + dndMoved.of(newParentIsRootList + ? null + : editor.posToOffset({ + line: newParent.getFirstLineContentStart().line, + ch: 0, + })), + ], + }); + } + hideDropZone() { + this.dropZone.style.display = "none"; + } +} +class DragAndDropState { + constructor(view, editor, root, list) { + this.view = view; + this.editor = editor; + this.root = root; + this.list = list; + this.dropVariants = new Map(); + this.dropVariant = null; + this.leftPadding = 0; + this.tabWidth = 0; + this.collectDropVariants(); + this.calculateLeftPadding(); + this.calculateTabWidth(); + } + getDropVariants() { + return Array.from(this.dropVariants.values()); + } + hasDropVariants() { + return this.dropVariants.size > 0; + } + calculateNearestDropVariant(x, y) { + const { view, editor } = this; + const dropVariants = this.getDropVariants(); + for (const v of dropVariants) { + const { placeToMove } = v; + v.left = this.leftPadding + (v.level - 1) * this.tabWidth; + const positionAfterList = v.whereToMove === "after" || v.whereToMove === "inside"; + const line = positionAfterList + ? placeToMove.getContentEndIncludingChildren().line + : placeToMove.getFirstLineContentStart().line; + const linePos = editor.posToOffset({ + line, + ch: 0, + }); + v.top = view.coordsAtPos(linePos, -1).top; + if (positionAfterList) { + v.top += view.lineBlockAt(linePos).height; + } + // Better vertical alignment + v.top -= 8; + } + const nearestLineTop = dropVariants + .sort((a, b) => Math.abs(y - a.top) - Math.abs(y - b.top)) + .first().top; + const variansOnNearestLine = dropVariants.filter((v) => Math.abs(v.top - nearestLineTop) <= 4); + this.dropVariant = variansOnNearestLine + .sort((a, b) => Math.abs(x - a.left) - Math.abs(x - b.left)) + .first(); + } + addDropVariant(v) { + this.dropVariants.set(`${v.line} ${v.level}`, v); + } + collectDropVariants() { + const visit = (lists) => { + for (const placeToMove of lists) { + const lineBefore = placeToMove.getFirstLineContentStart().line; + const lineAfter = placeToMove.getContentEndIncludingChildren().line + 1; + const level = placeToMove.getLevel(); + this.addDropVariant({ + line: lineBefore, + level, + left: 0, + top: 0, + placeToMove, + whereToMove: "before", + }); + this.addDropVariant({ + line: lineAfter, + level, + left: 0, + top: 0, + placeToMove, + whereToMove: "after", + }); + if (placeToMove === this.list) { + continue; + } + if (placeToMove.isEmpty()) { + this.addDropVariant({ + line: lineAfter, + level: level + 1, + left: 0, + top: 0, + placeToMove, + whereToMove: "inside", + }); + } + else { + visit(placeToMove.getChildren()); + } + } + }; + visit(this.root.getChildren()); + } + calculateLeftPadding() { + this.leftPadding = this.view.coordsAtPos(0, -1).left; + } + calculateTabWidth() { + const { view } = this; + const singleIndent = language.indentString(view.state, language.getIndentUnit(view.state)); + for (let i = 1; i <= view.state.doc.lines; i++) { + const line = view.state.doc.line(i); + if (line.text.startsWith(singleIndent)) { + const a = view.coordsAtPos(line.from, -1); + const b = view.coordsAtPos(line.from + singleIndent.length, -1); + this.tabWidth = b.left - a.left; + return; + } + } + this.tabWidth = view.defaultCharacterWidth * language.getIndentUnit(view.state); + } +} +const dndStarted = state.StateEffect.define({ + map: (lines, change) => lines.map((l) => change.mapPos(l)), +}); +const dndMoved = state.StateEffect.define({ + map: (line, change) => (line !== null ? change.mapPos(line) : line), +}); +const dndEnded = state.StateEffect.define(); +const draggingLineDecoration = view.Decoration.line({ + class: "outliner-plugin-dragging-line", +}); +const droppingLineDecoration = view.Decoration.line({ + class: "outliner-plugin-dropping-line", +}); +const draggingLinesStateField = state.StateField.define({ + create: () => view.Decoration.none, + update: (dndState, tr) => { + dndState = dndState.map(tr.changes); + for (const e of tr.effects) { + if (e.is(dndStarted)) { + dndState = dndState.update({ + add: e.value.map((l) => draggingLineDecoration.range(l, l)), + }); + } + if (e.is(dndEnded)) { + dndState = view.Decoration.none; + } + } + return dndState; + }, + provide: (f) => view.EditorView.decorations.from(f), +}); +const droppingLinesStateField = state.StateField.define({ + create: () => view.Decoration.none, + update: (dndDroppingState, tr) => { + dndDroppingState = dndDroppingState.map(tr.changes); + for (const e of tr.effects) { + if (e.is(dndMoved)) { + dndDroppingState = + e.value === null + ? view.Decoration.none + : view.Decoration.set(droppingLineDecoration.range(e.value, e.value)); + } + if (e.is(dndEnded)) { + dndDroppingState = view.Decoration.none; + } + } + return dndDroppingState; + }, + provide: (f) => view.EditorView.decorations.from(f), +}); +function getEditorViewFromHTMLElement(e) { + while (e && !e.classList.contains("cm-editor")) { + e = e.parentElement; + } + if (!e) { + return null; + } + return view.EditorView.findFromDOM(e); +} +function isClickOnBullet(e) { + let el = e.target; + while (el) { + if (el.classList.contains("cm-formatting-list") || + el.classList.contains("cm-fold-indicator") || + el.classList.contains("task-list-item-checkbox")) { + return true; + } + el = el.parentElement; + } + return false; +} +function isSameRoots(a, b) { + const [aStart, aEnd] = a.getContentRange(); + const [bStart, bEnd] = b.getContentRange(); + if (cmpPos(aStart, bStart) !== 0 || cmpPos(aEnd, bEnd) !== 0) { + return false; + } + return a.print() === b.print(); +} +function isFeatureSupported() { + return obsidian.Platform.isDesktop; +} + +class KeepCursorOutsideFoldedLines { + constructor(root) { + this.root = root; + this.stopPropagation = false; + this.updated = false; + } + shouldStopPropagation() { + return this.stopPropagation; + } + shouldUpdate() { + return this.updated; + } + perform() { + const { root } = this; + if (!root.hasSingleCursor()) { + return; + } + const cursor = root.getCursor(); + const list = root.getListUnderCursor(); + if (!list.isFolded()) { + return; + } + const foldRoot = list.getTopFoldRoot(); + const firstLineEnd = foldRoot.getLinesInfo()[0].to; + if (cursor.line > firstLineEnd.line) { + this.updated = true; + this.stopPropagation = true; + root.replaceCursor(firstLineEnd); + } + } +} + +class KeepCursorWithinListContent { + constructor(root) { + this.root = root; + this.stopPropagation = false; + this.updated = false; + } + shouldStopPropagation() { + return this.stopPropagation; + } + shouldUpdate() { + return this.updated; + } + perform() { + const { root } = this; + if (!root.hasSingleCursor()) { + return; + } + const cursor = root.getCursor(); + const list = root.getListUnderCursor(); + const contentStart = list.getFirstLineContentStartAfterCheckbox(); + const linePrefix = contentStart.line === cursor.line + ? contentStart.ch + : list.getNotesIndent().length; + if (cursor.ch < linePrefix) { + this.updated = true; + this.stopPropagation = true; + root.replaceCursor({ + line: cursor.line, + ch: linePrefix, + }); + } + } +} + +class EditorSelectionsBehaviourOverride { + constructor(plugin, settings, parser, operationPerformer) { + this.plugin = plugin; + this.settings = settings; + this.parser = parser; + this.operationPerformer = operationPerformer; + this.transactionExtender = (tr) => { + if (this.settings.keepCursorWithinContent === "never" || !tr.selection) { + return null; + } + const editor = getEditorFromState(tr.startState); + setTimeout(() => { + this.handleSelectionsChanges(editor); + }, 0); + return null; + }; + this.handleSelectionsChanges = (editor) => { + const root = this.parser.parse(editor); + if (!root) { + return; + } + { + const { shouldStopPropagation } = this.operationPerformer.eval(root, new KeepCursorOutsideFoldedLines(root), editor); + if (shouldStopPropagation) { + return; + } + } + this.operationPerformer.eval(root, new KeepCursorWithinListContent(root), editor); + }; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.registerEditorExtension(state.EditorState.transactionExtender.of(this.transactionExtender)); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { }); + } +} + +const checkboxRe = `\\[[^\\[\\]]\\][ \t]`; + +function isEmptyLineOrEmptyCheckbox(line) { + return line === "" || line === "[ ] "; +} + +class CreateNewItem { constructor(root, defaultIndentChars, getZoomRange) { this.root = root; this.defaultIndentChars = defaultIndentChars; @@ -846,8 +1628,8 @@ class CreateNewItemOperation { const spaceAfterBullet = onChildLevel && hasChildren ? list.getChildren()[0].getSpaceAfterBullet() : list.getSpaceAfterBullet(); - const prefix = oldLines[0].match(/^\[.\]/) ? "[ ] " : ""; - const newList = new List(list.getRoot(), indent, bullet, prefix.length, spaceAfterBullet, prefix + newLines.shift(), false); + const prefix = oldLines[0].match(checkboxRe) ? "[ ] " : ""; + const newList = new List(list.getRoot(), indent, bullet, prefix, spaceAfterBullet, prefix + newLines.shift(), false); if (newLines.length > 0) { newList.setNotesIndent(list.getNotesIndent()); for (const line of newLines) { @@ -877,25 +1659,113 @@ class CreateNewItemOperation { } } -class EnterShouldCreateNewItemFeature { - constructor(plugin, settings, ime, obsidian, performOperation) { +class OutdentList { + constructor(root) { + this.root = root; + this.stopPropagation = false; + this.updated = false; + } + shouldStopPropagation() { + return this.stopPropagation; + } + shouldUpdate() { + return this.updated; + } + perform() { + const { root } = this; + if (!root.hasSingleCursor()) { + return; + } + this.stopPropagation = true; + const list = root.getListUnderCursor(); + const parent = list.getParent(); + const grandParent = parent.getParent(); + if (!grandParent) { + return; + } + this.updated = true; + const listStartLineBefore = root.getContentLinesRangeOf(list)[0]; + const indentRmFrom = parent.getFirstLineIndent().length; + const indentRmTill = list.getFirstLineIndent().length; + parent.removeChild(list); + grandParent.addAfter(parent, list); + list.unindentContent(indentRmFrom, indentRmTill); + const listStartLineAfter = root.getContentLinesRangeOf(list)[0]; + const lineDiff = listStartLineAfter - listStartLineBefore; + const chDiff = indentRmTill - indentRmFrom; + const cursor = root.getCursor(); + root.replaceCursor({ + line: cursor.line + lineDiff, + ch: cursor.ch - chDiff, + }); + recalculateNumericBullets(root); + } +} + +class OutdentListIfItsEmpty { + constructor(root) { + this.root = root; + this.outdentList = new OutdentList(root); + } + shouldStopPropagation() { + return this.outdentList.shouldStopPropagation(); + } + shouldUpdate() { + return this.outdentList.shouldUpdate(); + } + perform() { + const { root } = this; + if (!root.hasSingleCursor()) { + return; + } + const list = root.getListUnderCursor(); + const lines = list.getLines(); + if (lines.length > 1 || + !isEmptyLineOrEmptyCheckbox(lines[0]) || + list.getLevel() === 1) { + return; + } + this.outdentList.perform(); + } +} + +class EnterBehaviourOverride { + constructor(plugin, settings, imeDetector, obsidianSettings, parser, operationPerformer) { this.plugin = plugin; this.settings = settings; - this.ime = ime; - this.obsidian = obsidian; - this.performOperation = performOperation; + this.imeDetector = imeDetector; + this.obsidianSettings = obsidianSettings; + this.parser = parser; + this.operationPerformer = operationPerformer; this.check = () => { - return this.settings.betterEnter && !this.ime.isIMEOpened(); + return this.settings.overrideEnterBehaviour && !this.imeDetector.isOpened(); }; this.run = (editor) => { - const zoomRange = editor.getZoomRange(); - const res = this.performOperation.performOperation((root) => new CreateNewItemOperation(root, this.obsidian.getDefaultIndentChars(), { - getZoomRange: () => zoomRange, - }), editor); - if (res.shouldUpdate && zoomRange) { - editor.zoomIn(zoomRange.from.line); + const root = this.parser.parse(editor); + if (!root) { + return { + shouldUpdate: false, + shouldStopPropagation: false, + }; + } + { + const res = this.operationPerformer.eval(root, new OutdentListIfItsEmpty(root), editor); + if (res.shouldStopPropagation) { + return res; + } + } + { + const defaultIndentChars = this.obsidianSettings.getDefaultIndentChars(); + const zoomRange = editor.getZoomRange(); + const getZoomRange = { + getZoomRange: () => zoomRange, + }; + const res = this.operationPerformer.eval(root, new CreateNewItem(root, defaultIndentChars, getZoomRange), editor); + if (res.shouldUpdate && zoomRange) { + editor.tryRefreshZoom(zoomRange.from.line); + } + return res; } - return res; }; } load() { @@ -903,7 +1773,7 @@ class EnterShouldCreateNewItemFeature { this.plugin.registerEditorExtension(state.Prec.highest(view.keymap.of([ { key: "Enter", - run: this.obsidian.createKeymapRunCallback({ + run: createKeymapRunCallback({ check: this.check, run: this.run, }), @@ -916,10 +1786,22 @@ class EnterShouldCreateNewItemFeature { } } -class FoldFeature { - constructor(plugin, obsidian) { +function createEditorCallback(cb) { + return (editor) => { + const myEditor = new MyEditor(editor); + const shouldStopPropagation = cb(myEditor); + if (!shouldStopPropagation && + window.event && + window.event.type === "keydown") { + myEditor.triggerOnKeyDown(window.event); + } + }; +} + +class ListsFoldingCommands { + constructor(plugin, obsidianSettings) { this.plugin = plugin; - this.obsidian = obsidian; + this.obsidianSettings = obsidianSettings; this.fold = (editor) => { return this.setFold(editor, "fold"); }; @@ -933,7 +1815,7 @@ class FoldFeature { id: "fold", icon: "chevrons-down-up", name: "Fold the list", - editorCallback: this.obsidian.createEditorCallback(this.fold), + editorCallback: createEditorCallback(this.fold), hotkeys: [ { modifiers: ["Mod"], @@ -945,7 +1827,7 @@ class FoldFeature { id: "unfold", icon: "chevrons-up-down", name: "Unfold the list", - editorCallback: this.obsidian.createEditorCallback(this.unfold), + editorCallback: createEditorCallback(this.unfold), hotkeys: [ { modifiers: ["Mod"], @@ -959,7 +1841,7 @@ class FoldFeature { return __awaiter(this, void 0, void 0, function* () { }); } setFold(editor, type) { - if (!this.obsidian.getObsidianFoldSettings().foldIndent) { + if (!this.obsidianSettings.getFoldSettings().foldIndent) { new obsidian.Notice(`Unable to ${type} because folding is disabled. Please enable "Fold indent" in Obsidian settings.`, 5000); return true; } @@ -974,123 +1856,682 @@ class FoldFeature { } } -function foldInside(view, from, to) { - let found = null; - language.foldedRanges(view.state).between(from, to, (from, to) => { - if (!found || found.from > from) - found = { from, to }; - }); - return found; -} -class MyEditor { - constructor(e) { - this.e = e; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - this.view = this.e.cm; +class IndentList { + constructor(root, defaultIndentChars) { + this.root = root; + this.defaultIndentChars = defaultIndentChars; + this.stopPropagation = false; + this.updated = false; } - getCursor() { - return this.e.getCursor(); + shouldStopPropagation() { + return this.stopPropagation; } - getLine(n) { - return this.e.getLine(n); + shouldUpdate() { + return this.updated; } - lastLine() { - return this.e.lastLine(); - } - listSelections() { - return this.e.listSelections(); - } - getRange(from, to) { - return this.e.getRange(from, to); - } - replaceRange(replacement, from, to) { - return this.e.replaceRange(replacement, from, to); - } - setSelections(selections) { - this.e.setSelections(selections); - } - setValue(text) { - this.e.setValue(text); - } - getValue() { - return this.e.getValue(); - } - offsetToPos(offset) { - return this.e.offsetToPos(offset); - } - posToOffset(pos) { - return this.e.posToOffset(pos); - } - fold(n) { - const { view } = this; - const l = view.lineBlockAt(view.state.doc.line(n + 1).from); - const range = language.foldable(view.state, l.from, l.to); - if (!range || range.from === range.to) { + perform() { + const { root } = this; + if (!root.hasSingleCursor()) { return; } - view.dispatch({ effects: [language.foldEffect.of(range)] }); - } - unfold(n) { - const { view } = this; - const l = view.lineBlockAt(view.state.doc.line(n + 1).from); - const range = foldInside(view, l.from, l.to); - if (!range) { + this.stopPropagation = true; + const list = root.getListUnderCursor(); + const parent = list.getParent(); + const prev = parent.getPrevSiblingOf(list); + if (!prev) { return; } - view.dispatch({ effects: [language.unfoldEffect.of(range)] }); - } - getAllFoldedLines() { - const c = language.foldedRanges(this.view.state).iter(); - const res = []; - while (c.value) { - res.push(this.offsetToPos(c.from).line); - c.next(); + this.updated = true; + const listStartLineBefore = root.getContentLinesRangeOf(list)[0]; + const indentPos = list.getFirstLineIndent().length; + let indentChars = ""; + if (indentChars === "" && !prev.isEmpty()) { + indentChars = prev + .getChildren()[0] + .getFirstLineIndent() + .slice(prev.getFirstLineIndent().length); } - return res; - } - triggerOnKeyDown(e) { - view.runScopeHandlers(this.view, e, "editor"); - } - getZoomRange() { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const api = window.ObsidianZoomPlugin; - if (!api || !api.getZoomRange) { - return null; + if (indentChars === "") { + indentChars = list + .getFirstLineIndent() + .slice(parent.getFirstLineIndent().length); } - return api.getZoomRange(this.e); - } - zoomOut() { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const api = window.ObsidianZoomPlugin; - if (!api || !api.zoomOut) { - return; + if (indentChars === "" && !list.isEmpty()) { + indentChars = list.getChildren()[0].getFirstLineIndent(); } - api.zoomOut(this.e); - } - zoomIn(line) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const api = window.ObsidianZoomPlugin; - if (!api || !api.zoomIn) { - return; + if (indentChars === "") { + indentChars = this.defaultIndentChars; } - api.zoomIn(this.e, line); + parent.removeChild(list); + prev.addAfterAll(list); + list.indentContent(indentPos, indentChars); + const listStartLineAfter = root.getContentLinesRangeOf(list)[0]; + const lineDiff = listStartLineAfter - listStartLineBefore; + const cursor = root.getCursor(); + root.replaceCursor({ + line: cursor.line + lineDiff, + ch: cursor.ch + indentChars.length, + }); + recalculateNumericBullets(root); } } -class ListLinesViewPluginValue { - constructor(settings, obsidian$1, parser, view) { +class MoveListDown { + constructor(root) { + this.root = root; + this.stopPropagation = false; + this.updated = false; + } + shouldStopPropagation() { + return this.stopPropagation; + } + shouldUpdate() { + return this.updated; + } + perform() { + const { root } = this; + if (!root.hasSingleCursor()) { + return; + } + this.stopPropagation = true; + const list = root.getListUnderCursor(); + const parent = list.getParent(); + const grandParent = parent.getParent(); + const next = parent.getNextSiblingOf(list); + const listStartLineBefore = root.getContentLinesRangeOf(list)[0]; + if (!next && grandParent) { + const newParent = grandParent.getNextSiblingOf(parent); + if (newParent) { + this.updated = true; + parent.removeChild(list); + newParent.addBeforeAll(list); + } + } + else if (next) { + this.updated = true; + parent.removeChild(list); + parent.addAfter(next, list); + } + if (!this.updated) { + return; + } + const listStartLineAfter = root.getContentLinesRangeOf(list)[0]; + const lineDiff = listStartLineAfter - listStartLineBefore; + const cursor = root.getCursor(); + root.replaceCursor({ + line: cursor.line + lineDiff, + ch: cursor.ch, + }); + recalculateNumericBullets(root); + } +} + +class MoveListUp { + constructor(root) { + this.root = root; + this.stopPropagation = false; + this.updated = false; + } + shouldStopPropagation() { + return this.stopPropagation; + } + shouldUpdate() { + return this.updated; + } + perform() { + const { root } = this; + if (!root.hasSingleCursor()) { + return; + } + this.stopPropagation = true; + const list = root.getListUnderCursor(); + const parent = list.getParent(); + const grandParent = parent.getParent(); + const prev = parent.getPrevSiblingOf(list); + const listStartLineBefore = root.getContentLinesRangeOf(list)[0]; + if (!prev && grandParent) { + const newParent = grandParent.getPrevSiblingOf(parent); + if (newParent) { + this.updated = true; + parent.removeChild(list); + newParent.addAfterAll(list); + } + } + else if (prev) { + this.updated = true; + parent.removeChild(list); + parent.addBefore(prev, list); + } + if (!this.updated) { + return; + } + const listStartLineAfter = root.getContentLinesRangeOf(list)[0]; + const lineDiff = listStartLineAfter - listStartLineBefore; + const cursor = root.getCursor(); + root.replaceCursor({ + line: cursor.line + lineDiff, + ch: cursor.ch, + }); + recalculateNumericBullets(root); + } +} + +class ListsMovementCommands { + constructor(plugin, obsidianSettings, operationPerformer) { + this.plugin = plugin; + this.obsidianSettings = obsidianSettings; + this.operationPerformer = operationPerformer; + this.moveListDown = (editor) => { + const { shouldStopPropagation } = this.operationPerformer.perform((root) => new MoveListDown(root), editor); + return shouldStopPropagation; + }; + this.moveListUp = (editor) => { + const { shouldStopPropagation } = this.operationPerformer.perform((root) => new MoveListUp(root), editor); + return shouldStopPropagation; + }; + this.indentList = (editor) => { + const { shouldStopPropagation } = this.operationPerformer.perform((root) => new IndentList(root, this.obsidianSettings.getDefaultIndentChars()), editor); + return shouldStopPropagation; + }; + this.outdentList = (editor) => { + const { shouldStopPropagation } = this.operationPerformer.perform((root) => new OutdentList(root), editor); + return shouldStopPropagation; + }; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.addCommand({ + id: "move-list-item-up", + icon: "arrow-up", + name: "Move list and sublists up", + editorCallback: createEditorCallback(this.moveListUp), + hotkeys: [ + { + modifiers: ["Mod", "Shift"], + key: "ArrowUp", + }, + ], + }); + this.plugin.addCommand({ + id: "move-list-item-down", + icon: "arrow-down", + name: "Move list and sublists down", + editorCallback: createEditorCallback(this.moveListDown), + hotkeys: [ + { + modifiers: ["Mod", "Shift"], + key: "ArrowDown", + }, + ], + }); + this.plugin.addCommand({ + id: "indent-list", + icon: "indent", + name: "Indent the list and sublists", + editorCallback: createEditorCallback(this.indentList), + hotkeys: [], + }); + this.plugin.addCommand({ + id: "outdent-list", + icon: "outdent", + name: "Outdent the list and sublists", + editorCallback: createEditorCallback(this.outdentList), + hotkeys: [], + }); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { }); + } +} + +class DeleteTillCurrentLineContentStart { + constructor(root) { + this.root = root; + this.stopPropagation = false; + this.updated = false; + } + shouldStopPropagation() { + return this.stopPropagation; + } + shouldUpdate() { + return this.updated; + } + perform() { + const { root } = this; + if (!root.hasSingleCursor()) { + return; + } + this.stopPropagation = true; + this.updated = true; + const cursor = root.getCursor(); + const list = root.getListUnderCursor(); + const lines = list.getLinesInfo(); + const lineNo = lines.findIndex((l) => l.from.line === cursor.line); + lines[lineNo].text = lines[lineNo].text.slice(cursor.ch - lines[lineNo].from.ch); + list.replaceLines(lines.map((l) => l.text)); + root.replaceCursor(lines[lineNo].from); + } +} + +class MetaBackspaceBehaviourOverride { + constructor(plugin, settings, imeDetector, operationPerformer) { + this.plugin = plugin; this.settings = settings; - this.obsidian = obsidian$1; + this.imeDetector = imeDetector; + this.operationPerformer = operationPerformer; + this.check = () => { + return (this.settings.keepCursorWithinContent !== "never" && + !this.imeDetector.isOpened()); + }; + this.run = (editor) => { + return this.operationPerformer.perform((root) => new DeleteTillCurrentLineContentStart(root), editor); + }; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.registerEditorExtension(view.keymap.of([ + { + mac: "m-Backspace", + run: createKeymapRunCallback({ + check: this.check, + run: this.run, + }), + }, + ])); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { }); + } +} + +class ReleaseNotesModal extends obsidian.Modal { + constructor(plugin, title, content, cb) { + super(plugin.app); + this.plugin = plugin; + this.title = title; + this.content = content; + this.cb = cb; + } + onOpen() { + return __awaiter(this, void 0, void 0, function* () { + this.titleEl.setText(this.title); + obsidian.MarkdownRenderer.renderMarkdown(this.content, this.contentEl, "", this.plugin); + }); + } + onClose() { + this.cb(); + } +} +function compareReleases(a, b) { + const [aMajor, aMinor, aPatch] = a.split(".", 3).map(Number); + const [bMajor, bMinor, bPatch] = b.split(".", 3).map(Number); + if (aMajor === bMajor) { + if (aMinor === bMinor) { + return aPatch - bPatch; + } + return aMinor - bMinor; + } + return aMajor - bMajor; +} +function parseChangelog() { + const markdown = "## 4.7.0\n\n### Drag-and-Drop\n\nDrag-and-drop got a few updates and it's now enabled by default for all Obsidian Desktop users!\n\nYou can still disable this feature in the plugin's settings.\n\nIf you find a bug, please report the [issue](https://github.com/vslinko/obsidian-outliner/issues). Leave your other feedback [here](https://github.com/vslinko/obsidian-outliner/discussions).\n\n\n\n## 4.5.0\n\n### Drag-and-Drop (Experimental)\n\nNow you can drag and drop items using your mouse! 🎉\n\nThis feature is experimental and is disabled by default. To enable this feature, open the plugin settings and turn on the `Drag-and-Drop (Experimental)` setting.\n\nIf you find a bug, please report the [issue](https://github.com/vslinko/obsidian-outliner/issues). Leave your other feedback [here](https://github.com/vslinko/obsidian-outliner/discussions/190).\n\n\n"; + const releaseNotes = []; + let version; + let content = ""; + for (const line of markdown.split("\n")) { + const versionHeaderMatches = /^#+\s+(\d+\.\d+\.\d+)$/.exec(line); + if (versionHeaderMatches) { + if (version && content.trim().length > 0) { + releaseNotes.push([version, content]); + } + version = versionHeaderMatches[1]; + content = line; + content += "\n"; + } + else { + content += line; + content += "\n"; + } + } + if (version && content.trim().length > 0) { + releaseNotes.push([version, content]); + } + return releaseNotes; +} +class ReleaseNotesAnnouncement { + constructor(plugin, settings) { + this.plugin = plugin; + this.settings = settings; + this.modal = null; + this.showModal = (previousRelease = null) => { + let releaseNotes = ""; + for (const [version, content] of parseChangelog()) { + if (compareReleases(version, previousRelease || "0.0.0") > 0) { + releaseNotes += content; + } + } + if (releaseNotes.trim().length === 0) { + return; + } + const modalTitle = `Welcome to Obsidian Outliner ${"4.7.1"}`; + this.modal = new ReleaseNotesModal(this.plugin, modalTitle, releaseNotes, this.handleClose); + this.modal.open(); + }; + this.handleClose = () => __awaiter(this, void 0, void 0, function* () { + if (!this.modal) { + return; + } + this.settings.previousRelease = "4.7.1"; + yield this.settings.save(); + }); + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.addCommand({ + id: "show-release-notes", + name: "Show Release Notes", + callback: this.showModal, + }); + this.showModal(this.settings.previousRelease); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { + if (!this.modal) { + return; + } + const modal = this.modal; + this.modal = null; + modal.close(); + }); + } +} + +class ObsidianOutlinerPluginSettingTab extends obsidian.PluginSettingTab { + constructor(app, plugin, settings) { + super(app, plugin); + this.settings = settings; + } + display() { + const { containerEl } = this; + containerEl.empty(); + new obsidian.Setting(containerEl) + .setName("Stick the cursor to the content") + .setDesc("Don't let the cursor move to the bullet position.") + .addDropdown((dropdown) => { + dropdown + .addOptions({ + never: "Never", + "bullet-only": "Stick cursor out of bullets", + "bullet-and-checkbox": "Stick cursor out of bullets and checkboxes", + }) + .setValue(this.settings.keepCursorWithinContent) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.settings.keepCursorWithinContent = value; + yield this.settings.save(); + })); + }); + new obsidian.Setting(containerEl) + .setName("Enhance the Tab key") + .setDesc("Make Tab and Shift-Tab behave the same as other outliners.") + .addToggle((toggle) => { + toggle + .setValue(this.settings.overrideTabBehaviour) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.settings.overrideTabBehaviour = value; + yield this.settings.save(); + })); + }); + new obsidian.Setting(containerEl) + .setName("Enhance the Enter key") + .setDesc("Make the Enter key behave the same as other outliners.") + .addToggle((toggle) => { + toggle + .setValue(this.settings.overrideEnterBehaviour) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.settings.overrideEnterBehaviour = value; + yield this.settings.save(); + })); + }); + new obsidian.Setting(containerEl) + .setName("Enhance the Ctrl+A or Cmd+A behavior") + .setDesc("Press the hotkey once to select the current list item. Press the hotkey twice to select the entire list.") + .addToggle((toggle) => { + toggle + .setValue(this.settings.overrideSelectAllBehaviour) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.settings.overrideSelectAllBehaviour = value; + yield this.settings.save(); + })); + }); + new obsidian.Setting(containerEl) + .setName("Improve the style of your lists") + .setDesc("Styles are only compatible with built-in Obsidian themes and may not be compatible with other themes.") + .addToggle((toggle) => { + toggle + .setValue(this.settings.betterListsStyles) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.settings.betterListsStyles = value; + yield this.settings.save(); + })); + }); + new obsidian.Setting(containerEl) + .setName("Draw vertical indentation lines") + .addToggle((toggle) => { + toggle.setValue(this.settings.verticalLines).onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.settings.verticalLines = value; + yield this.settings.save(); + })); + }); + new obsidian.Setting(containerEl) + .setName("Vertical indentation line click action") + .addDropdown((dropdown) => { + dropdown + .addOptions({ + none: "None", + "zoom-in": "Zoom In", + "toggle-folding": "Toggle Folding", + }) + .setValue(this.settings.verticalLinesAction) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.settings.verticalLinesAction = value; + yield this.settings.save(); + })); + }); + new obsidian.Setting(containerEl).setName("Drag-and-Drop").addToggle((toggle) => { + toggle.setValue(this.settings.dragAndDrop).onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.settings.dragAndDrop = value; + yield this.settings.save(); + })); + }); + new obsidian.Setting(containerEl) + .setName("Debug mode") + .setDesc("Open DevTools (Command+Option+I or Control+Shift+I) to copy the debug logs.") + .addToggle((toggle) => { + toggle.setValue(this.settings.debug).onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.settings.debug = value; + yield this.settings.save(); + })); + }); + } +} +class SettingsTab { + constructor(plugin, settings) { + this.plugin = plugin; + this.settings = settings; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.addSettingTab(new ObsidianOutlinerPluginSettingTab(this.plugin.app, this.plugin, this.settings)); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { }); + } +} + +class ShiftTabBehaviourOverride { + constructor(plugin, imeDetector, settings, operationPerformer) { + this.plugin = plugin; + this.imeDetector = imeDetector; + this.settings = settings; + this.operationPerformer = operationPerformer; + this.check = () => { + return this.settings.overrideTabBehaviour && !this.imeDetector.isOpened(); + }; + this.run = (editor) => { + return this.operationPerformer.perform((root) => new OutdentList(root), editor); + }; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.registerEditorExtension(state.Prec.highest(view.keymap.of([ + { + key: "s-Tab", + run: createKeymapRunCallback({ + check: this.check, + run: this.run, + }), + }, + ]))); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { }); + } +} + +class SystemInfoModal extends obsidian.Modal { + constructor(app, settings) { + super(app); + this.settings = settings; + } + onOpen() { + return __awaiter(this, void 0, void 0, function* () { + this.titleEl.setText("System Information"); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const app = this.app; + const data = { + process: { + arch: process.arch, + platform: process.platform, + }, + app: { + internalPlugins: { + config: app.internalPlugins.config, + }, + isMobile: app.isMobile, + plugins: { + enabledPlugins: Array.from(app.plugins.enabledPlugins), + manifests: Object.keys(app.plugins.manifests).reduce((acc, key) => { + acc[key] = { + version: app.plugins.manifests[key].version, + }; + return acc; + }, {}), + }, + vault: { + config: app.vault.config, + }, + }, + plugin: { + settings: { values: this.settings.getValues() }, + }, + }; + const text = JSON.stringify(data, null, 2); + const pre = this.contentEl.createEl("pre"); + pre.setText(text); + pre.setCssStyles({ + overflow: "scroll", + maxHeight: "300px", + }); + const button = this.contentEl.createEl("button"); + button.setText("Copy and Close"); + button.onClickEvent(() => { + navigator.clipboard.writeText("```json\n" + text + "\n```"); + this.close(); + }); + }); + } +} +class SystemInfo { + constructor(plugin, settings) { + this.plugin = plugin; + this.settings = settings; + this.callback = () => { + const modal = new SystemInfoModal(this.plugin.app, this.settings); + modal.open(); + }; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.addCommand({ + id: "system-info", + name: "Show System Info", + callback: this.callback, + hotkeys: [ + { + modifiers: ["Mod", "Shift", "Alt"], + key: "I", + }, + ], + }); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { }); + } +} + +class TabBehaviourOverride { + constructor(plugin, imeDetector, obsidianSettings, settings, operationPerformer) { + this.plugin = plugin; + this.imeDetector = imeDetector; + this.obsidianSettings = obsidianSettings; + this.settings = settings; + this.operationPerformer = operationPerformer; + this.check = () => { + return this.settings.overrideTabBehaviour && !this.imeDetector.isOpened(); + }; + this.run = (editor) => { + return this.operationPerformer.perform((root) => new IndentList(root, this.obsidianSettings.getDefaultIndentChars()), editor); + }; + } + load() { + return __awaiter(this, void 0, void 0, function* () { + this.plugin.registerEditorExtension(state.Prec.highest(view.keymap.of([ + { + key: "Tab", + run: createKeymapRunCallback({ + check: this.check, + run: this.run, + }), + }, + ]))); + }); + } + unload() { + return __awaiter(this, void 0, void 0, function* () { }); + } +} + +const VERTICAL_LINES_BODY_CLASS = "outliner-plugin-vertical-lines"; +class VerticalLinesPluginValue { + constructor(settings, obsidianSettings, parser, view) { + this.settings = settings; + this.obsidianSettings = obsidianSettings; this.parser = parser; this.view = view; this.lineElements = []; this.waitForEditor = () => { - const oe = this.view.state.field(obsidian.editorInfoField).editor; - if (!oe) { + const editor = getEditorFromState(this.view.state); + if (!editor) { setTimeout(this.waitForEditor, 0); return; } - this.editor = new MyEditor(oe); + this.editor = editor; this.scheduleRecalculate(); }; this.onScroll = (e) => { @@ -1103,15 +2544,15 @@ class ListLinesViewPluginValue { }; this.calculate = () => { this.lines = []; - if (this.settings.listLines && - this.obsidian.isDefaultThemeEnabled() && + if (this.settings.verticalLines && + this.obsidianSettings.isDefaultThemeEnabled() && this.view.viewportLineBlocks.length > 0 && this.view.visibleRanges.length > 0) { const fromLine = this.editor.offsetToPos(this.view.viewport.from).line; const toLine = this.editor.offsetToPos(this.view.viewport.to).line; const lists = this.parser.parseRange(this.editor, fromLine, toLine); for (const list of lists) { - this.lastLine = list.getRange()[1].line; + this.lastLine = list.getContentEnd().line; for (const c of list.getChildren()) { this.recursive(c); } @@ -1123,7 +2564,7 @@ class ListLinesViewPluginValue { this.onClick = (e) => { e.preventDefault(); const line = this.lines[Number(e.target.dataset.index)]; - switch (this.settings.listLineAction) { + switch (this.settings.verticalLinesAction) { case "zoom-in": this.zoomIn(line); break; @@ -1133,7 +2574,7 @@ class ListLinesViewPluginValue { } }; this.view.scrollDOM.addEventListener("scroll", this.onScroll); - this.settings.onChange("listLines", this.scheduleRecalculate); + this.settings.onChange(this.scheduleRecalculate); this.prepareDom(); this.waitForEditor(); } @@ -1223,7 +2664,7 @@ class ListLinesViewPluginValue { } } zoomIn(line) { - const editor = new MyEditor(this.view.state.field(obsidian.editorInfoField).editor); + const editor = getEditorFromState(this.view.state); editor.zoomIn(line.list.getFirstLineContentStart().line); } toggleFolding(line) { @@ -1242,7 +2683,7 @@ class ListLinesViewPluginValue { } linesToToggle.push(c.getFirstLineContentStart().line); } - const editor = new MyEditor(this.view.state.field(obsidian.editorInfoField).editor); + const editor = getEditorFromState(this.view.state); for (const l of linesToToggle) { if (needToUnfold) { editor.unfold(l); @@ -1298,781 +2739,71 @@ class ListLinesViewPluginValue { } } destroy() { - this.settings.removeCallback("listLines", this.scheduleRecalculate); + this.settings.removeCallback(this.scheduleRecalculate); this.view.scrollDOM.removeEventListener("scroll", this.onScroll); this.view.dom.removeChild(this.scroller); clearTimeout(this.scheduled); } } -class LinesFeature { - constructor(plugin, settings, obsidian, parser) { +class VerticalLines { + constructor(plugin, settings, obsidianSettings, parser) { this.plugin = plugin; this.settings = settings; - this.obsidian = obsidian; + this.obsidianSettings = obsidianSettings; this.parser = parser; - } - load() { - return __awaiter(this, void 0, void 0, function* () { - this.plugin.registerEditorExtension(view.ViewPlugin.define((view) => new ListLinesViewPluginValue(this.settings, this.obsidian, this.parser, view))); - }); - } - unload() { - return __awaiter(this, void 0, void 0, function* () { }); - } -} - -const BETTER_LISTS_CLASS = "outliner-plugin-better-lists"; -const BETTER_BULLETS_CLASS = "outliner-plugin-better-bullets"; -const VERTICAL_LINES = "outliner-plugin-vertical-lines"; -const KNOWN_CLASSES = [ - BETTER_LISTS_CLASS, - BETTER_BULLETS_CLASS, - VERTICAL_LINES, -]; -class ListsStylesFeature { - constructor(settings, obsidian) { - this.settings = settings; - this.obsidian = obsidian; - this.syncListsStyles = () => { - const classes = []; - if (this.obsidian.isDefaultThemeEnabled()) { - if (this.settings.styleLists) { - classes.push(BETTER_LISTS_CLASS); - classes.push(BETTER_BULLETS_CLASS); - } - if (this.settings.listLines) { - classes.push(VERTICAL_LINES); - } + this.updateBodyClass = () => { + const shouldExists = this.obsidianSettings.isDefaultThemeEnabled() && + this.settings.verticalLines; + const exists = document.body.classList.contains(VERTICAL_LINES_BODY_CLASS); + if (shouldExists && !exists) { + document.body.classList.add(VERTICAL_LINES_BODY_CLASS); + } + if (!shouldExists && exists) { + document.body.classList.remove(VERTICAL_LINES_BODY_CLASS); } - this.applyListsStyles(classes); }; } load() { return __awaiter(this, void 0, void 0, function* () { - this.syncListsStyles(); - this.interval = window.setInterval(() => { - this.syncListsStyles(); + this.updateBodyClass(); + this.updateBodyClassInterval = window.setInterval(() => { + this.updateBodyClass(); }, 1000); + this.plugin.registerEditorExtension(view.ViewPlugin.define((view) => new VerticalLinesPluginValue(this.settings, this.obsidianSettings, this.parser, view))); }); } unload() { return __awaiter(this, void 0, void 0, function* () { - clearInterval(this.interval); - this.applyListsStyles([]); + clearInterval(this.updateBodyClassInterval); + document.body.classList.remove(VERTICAL_LINES_BODY_CLASS); }); } - applyListsStyles(classes) { - const toKeep = classes.filter((c) => KNOWN_CLASSES.contains(c)); - const toRemove = KNOWN_CLASSES.filter((c) => !toKeep.contains(c)); - for (const c of toKeep) { - if (!document.body.classList.contains(c)) { - document.body.classList.add(c); - } - } - for (const c of toRemove) { - if (document.body.classList.contains(c)) { - document.body.classList.remove(c); +} + +class ChangesApplicator { + apply(editor, prevRoot, newRoot) { + const changes = this.calculateChanges(editor, prevRoot, newRoot); + if (changes) { + const { replacement, changeFrom, changeTo } = changes; + const { unfold, fold } = this.calculateFoldingOprations(prevRoot, newRoot, changeFrom, changeTo); + for (const line of unfold) { + editor.unfold(line); + } + editor.replaceRange(replacement, changeFrom, changeTo); + for (const line of fold) { + editor.fold(line); } } + editor.setSelections(newRoot.getSelections()); } -} - -class MoveCursorToPreviousUnfoldedLineOperation { - constructor(root) { - this.root = root; - this.stopPropagation = false; - this.updated = false; - } - shouldStopPropagation() { - return this.stopPropagation; - } - shouldUpdate() { - return this.updated; - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } - const list = this.root.getListUnderCursor(); - const cursor = this.root.getCursor(); - const lines = list.getLinesInfo(); - const lineNo = lines.findIndex((l) => cursor.ch === l.from.ch + list.getCheckboxLength() && - cursor.line === l.from.line); - if (lineNo === 0) { - this.moveCursorToPreviousUnfoldedItem(root, cursor); - } - else if (lineNo > 0) { - this.moveCursorToPreviousNoteLine(root, lines, lineNo); - } - } - moveCursorToPreviousNoteLine(root, lines, lineNo) { - this.stopPropagation = true; - this.updated = true; - root.replaceCursor(lines[lineNo - 1].to); - } - moveCursorToPreviousUnfoldedItem(root, cursor) { - const prev = root.getListUnderLine(cursor.line - 1); - if (!prev) { - return; - } - this.stopPropagation = true; - this.updated = true; - if (prev.isFolded()) { - const foldRoot = prev.getTopFoldRoot(); - const firstLineEnd = foldRoot.getLinesInfo()[0].to; - root.replaceCursor(firstLineEnd); - } - else { - root.replaceCursor(prev.getLastLineContentEnd()); - } - } -} - -class MoveCursorToPreviousUnfoldedLineFeature { - constructor(plugin, settings, ime, obsidian, performOperation) { - this.plugin = plugin; - this.settings = settings; - this.ime = ime; - this.obsidian = obsidian; - this.performOperation = performOperation; - this.check = () => { - return this.settings.stickCursor && !this.ime.isIMEOpened(); - }; - this.run = (editor) => { - return this.performOperation.performOperation((root) => new MoveCursorToPreviousUnfoldedLineOperation(root), editor); - }; - } - load() { - return __awaiter(this, void 0, void 0, function* () { - this.plugin.registerEditorExtension(view.keymap.of([ - { - key: "ArrowLeft", - run: this.obsidian.createKeymapRunCallback({ - check: this.check, - run: this.run, - }), - }, - { - win: "c-ArrowLeft", - linux: "c-ArrowLeft", - run: this.obsidian.createKeymapRunCallback({ - check: this.check, - run: this.run, - }), - }, - ])); - }); - } - unload() { - return __awaiter(this, void 0, void 0, function* () { }); - } -} - -class MoveDownOperation { - constructor(root) { - this.root = root; - this.stopPropagation = false; - this.updated = false; - } - shouldStopPropagation() { - return this.stopPropagation; - } - shouldUpdate() { - return this.updated; - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } - this.stopPropagation = true; - const list = root.getListUnderCursor(); - const parent = list.getParent(); - const grandParent = parent.getParent(); - const next = parent.getNextSiblingOf(list); - const listStartLineBefore = root.getContentLinesRangeOf(list)[0]; - if (!next && grandParent) { - const newParent = grandParent.getNextSiblingOf(parent); - if (newParent) { - this.updated = true; - parent.removeChild(list); - newParent.addBeforeAll(list); - } - } - else if (next) { - this.updated = true; - parent.removeChild(list); - parent.addAfter(next, list); - } - if (!this.updated) { - return; - } - const listStartLineAfter = root.getContentLinesRangeOf(list)[0]; - const lineDiff = listStartLineAfter - listStartLineBefore; - const cursor = root.getCursor(); - root.replaceCursor({ - line: cursor.line + lineDiff, - ch: cursor.ch, - }); - recalculateNumericBullets(root); - } -} - -class MoveRightOperation { - constructor(root, defaultIndentChars) { - this.root = root; - this.defaultIndentChars = defaultIndentChars; - this.stopPropagation = false; - this.updated = false; - } - shouldStopPropagation() { - return this.stopPropagation; - } - shouldUpdate() { - return this.updated; - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } - this.stopPropagation = true; - const list = root.getListUnderCursor(); - const parent = list.getParent(); - const prev = parent.getPrevSiblingOf(list); - if (!prev) { - return; - } - this.updated = true; - const listStartLineBefore = root.getContentLinesRangeOf(list)[0]; - const indentPos = list.getFirstLineIndent().length; - let indentChars = ""; - if (indentChars === "" && !prev.isEmpty()) { - indentChars = prev - .getChildren()[0] - .getFirstLineIndent() - .slice(prev.getFirstLineIndent().length); - } - if (indentChars === "") { - indentChars = list - .getFirstLineIndent() - .slice(parent.getFirstLineIndent().length); - } - if (indentChars === "" && !list.isEmpty()) { - indentChars = list.getChildren()[0].getFirstLineIndent(); - } - if (indentChars === "") { - indentChars = this.defaultIndentChars; - } - parent.removeChild(list); - prev.addAfterAll(list); - list.indentContent(indentPos, indentChars); - const listStartLineAfter = root.getContentLinesRangeOf(list)[0]; - const lineDiff = listStartLineAfter - listStartLineBefore; - const cursor = root.getCursor(); - root.replaceCursor({ - line: cursor.line + lineDiff, - ch: cursor.ch + indentChars.length, - }); - recalculateNumericBullets(root); - } -} - -class MoveUpOperation { - constructor(root) { - this.root = root; - this.stopPropagation = false; - this.updated = false; - } - shouldStopPropagation() { - return this.stopPropagation; - } - shouldUpdate() { - return this.updated; - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } - this.stopPropagation = true; - const list = root.getListUnderCursor(); - const parent = list.getParent(); - const grandParent = parent.getParent(); - const prev = parent.getPrevSiblingOf(list); - const listStartLineBefore = root.getContentLinesRangeOf(list)[0]; - if (!prev && grandParent) { - const newParent = grandParent.getPrevSiblingOf(parent); - if (newParent) { - this.updated = true; - parent.removeChild(list); - newParent.addAfterAll(list); - } - } - else if (prev) { - this.updated = true; - parent.removeChild(list); - parent.addBefore(prev, list); - } - if (!this.updated) { - return; - } - const listStartLineAfter = root.getContentLinesRangeOf(list)[0]; - const lineDiff = listStartLineAfter - listStartLineBefore; - const cursor = root.getCursor(); - root.replaceCursor({ - line: cursor.line + lineDiff, - ch: cursor.ch, - }); - recalculateNumericBullets(root); - } -} - -class MoveItemsFeature { - constructor(plugin, ime, obsidian, settings, performOperation) { - this.plugin = plugin; - this.ime = ime; - this.obsidian = obsidian; - this.settings = settings; - this.performOperation = performOperation; - this.check = () => { - return this.settings.betterTab && !this.ime.isIMEOpened(); - }; - this.moveListElementDownCommand = (editor) => { - const { shouldStopPropagation } = this.performOperation.performOperation((root) => new MoveDownOperation(root), editor); - return shouldStopPropagation; - }; - this.moveListElementUpCommand = (editor) => { - const { shouldStopPropagation } = this.performOperation.performOperation((root) => new MoveUpOperation(root), editor); - return shouldStopPropagation; - }; - this.moveListElementRightCommand = (editor) => { - if (this.ime.isIMEOpened()) { - return true; - } - return this.moveListElementRight(editor).shouldStopPropagation; - }; - this.moveListElementRight = (editor) => { - return this.performOperation.performOperation((root) => new MoveRightOperation(root, this.obsidian.getDefaultIndentChars()), editor); - }; - this.moveListElementLeftCommand = (editor) => { - if (this.ime.isIMEOpened()) { - return true; - } - return this.moveListElementLeft(editor).shouldStopPropagation; - }; - this.moveListElementLeft = (editor) => { - return this.performOperation.performOperation((root) => new MoveLeftOperation(root), editor); - }; - } - load() { - return __awaiter(this, void 0, void 0, function* () { - this.plugin.addCommand({ - id: "move-list-item-up", - icon: "arrow-up", - name: "Move list and sublists up", - editorCallback: this.obsidian.createEditorCallback(this.moveListElementUpCommand), - hotkeys: [ - { - modifiers: ["Mod", "Shift"], - key: "ArrowUp", - }, - ], - }); - this.plugin.addCommand({ - id: "move-list-item-down", - icon: "arrow-down", - name: "Move list and sublists down", - editorCallback: this.obsidian.createEditorCallback(this.moveListElementDownCommand), - hotkeys: [ - { - modifiers: ["Mod", "Shift"], - key: "ArrowDown", - }, - ], - }); - this.plugin.addCommand({ - id: "indent-list", - icon: "indent", - name: "Indent the list and sublists", - editorCallback: this.obsidian.createEditorCallback(this.moveListElementRightCommand), - hotkeys: [], - }); - this.plugin.addCommand({ - id: "outdent-list", - icon: "outdent", - name: "Outdent the list and sublists", - editorCallback: this.obsidian.createEditorCallback(this.moveListElementLeftCommand), - hotkeys: [], - }); - this.plugin.registerEditorExtension(state.Prec.highest(view.keymap.of([ - { - key: "Tab", - run: this.obsidian.createKeymapRunCallback({ - check: this.check, - run: this.moveListElementRight, - }), - }, - { - key: "s-Tab", - run: this.obsidian.createKeymapRunCallback({ - check: this.check, - run: this.moveListElementLeft, - }), - }, - ]))); - }); - } - unload() { - return __awaiter(this, void 0, void 0, function* () { }); - } -} - -class SelectAllOperation { - constructor(root) { - this.root = root; - this.stopPropagation = false; - this.updated = false; - } - shouldStopPropagation() { - return this.stopPropagation; - } - shouldUpdate() { - return this.updated; - } - perform() { - const { root } = this; - if (!root.hasSingleSelection()) { - return; - } - const selection = root.getSelections()[0]; - const [rootStart, rootEnd] = root.getRange(); - const selectionFrom = minPos(selection.anchor, selection.head); - const selectionTo = maxPos(selection.anchor, selection.head); - if (selectionFrom.line < rootStart.line || - selectionTo.line > rootEnd.line) { - return false; - } - if (selectionFrom.line === rootStart.line && - selectionFrom.ch === rootStart.ch && - selectionTo.line === rootEnd.line && - selectionTo.ch === rootEnd.ch) { - return false; - } - const list = root.getListUnderCursor(); - const contentStart = list.getFirstLineContentStart(); - const contentEnd = list.getLastLineContentEnd(); - if (selectionFrom.line < contentStart.line || - selectionTo.line > contentEnd.line) { - return false; - } - this.stopPropagation = true; - this.updated = true; - if (selectionFrom.line === contentStart.line && - selectionFrom.ch === contentStart.ch && - selectionTo.line === contentEnd.line && - selectionTo.ch === contentEnd.ch) { - // select all list - root.replaceSelections([{ anchor: rootStart, head: rootEnd }]); - } - else { - // select all line - root.replaceSelections([{ anchor: contentStart, head: contentEnd }]); - } - return true; - } -} - -class SelectAllFeature { - constructor(plugin, settings, ime, obsidian, performOperation) { - this.plugin = plugin; - this.settings = settings; - this.ime = ime; - this.obsidian = obsidian; - this.performOperation = performOperation; - this.check = () => { - return this.settings.selectAll && !this.ime.isIMEOpened(); - }; - this.run = (editor) => { - return this.performOperation.performOperation((root) => new SelectAllOperation(root), editor); - }; - } - load() { - return __awaiter(this, void 0, void 0, function* () { - this.plugin.registerEditorExtension(view.keymap.of([ - { - key: "c-a", - mac: "m-a", - run: this.obsidian.createKeymapRunCallback({ - check: this.check, - run: this.run, - }), - }, - ])); - }); - } - unload() { - return __awaiter(this, void 0, void 0, function* () { }); - } -} - -class SelectTillLineStartOperation { - constructor(root) { - this.root = root; - this.stopPropagation = false; - this.updated = false; - } - shouldStopPropagation() { - return this.stopPropagation; - } - shouldUpdate() { - return this.updated; - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } - this.stopPropagation = true; - this.updated = true; - const cursor = root.getCursor(); - const list = root.getListUnderCursor(); - const lines = list.getLinesInfo(); - const lineNo = lines.findIndex((l) => l.from.line === cursor.line); - root.replaceSelections([{ head: lines[lineNo].from, anchor: cursor }]); - } -} - -class SelectionShouldIgnoreBulletsFeature { - constructor(plugin, settings, ime, obsidian, performOperation) { - this.plugin = plugin; - this.settings = settings; - this.ime = ime; - this.obsidian = obsidian; - this.performOperation = performOperation; - this.check = () => { - return this.settings.stickCursor && !this.ime.isIMEOpened(); - }; - this.run = (editor) => { - return this.performOperation.performOperation((root) => new SelectTillLineStartOperation(root), editor); - }; - } - load() { - return __awaiter(this, void 0, void 0, function* () { - this.plugin.registerEditorExtension(view.keymap.of([ - { - key: "m-s-ArrowLeft", - run: this.obsidian.createKeymapRunCallback({ - check: this.check, - run: this.run, - }), - }, - ])); - }); - } - unload() { - return __awaiter(this, void 0, void 0, function* () { }); - } -} - -class ObsidianOutlinerPluginSettingTab extends obsidian.PluginSettingTab { - constructor(app, plugin, settings) { - super(app, plugin); - this.settings = settings; - } - display() { - const { containerEl } = this; - containerEl.empty(); - new obsidian.Setting(containerEl) - .setName("Improve the style of your lists") - .setDesc("Styles are only compatible with built-in Obsidian themes and may not be compatible with other themes.") - .addToggle((toggle) => { - toggle.setValue(this.settings.styleLists).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.settings.styleLists = value; - yield this.settings.save(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Draw vertical indentation lines") - .addToggle((toggle) => { - toggle.setValue(this.settings.listLines).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.settings.listLines = value; - yield this.settings.save(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Vertical indentation line click action") - .addDropdown((dropdown) => { - dropdown - .addOptions({ - none: "None", - "zoom-in": "Zoom In", - "toggle-folding": "Toggle Folding", - }) - .setValue(this.settings.listLineAction) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.settings.listLineAction = value; - yield this.settings.save(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Stick the cursor to the content") - .setDesc("Don't let the cursor move to the bullet position.") - .addToggle((toggle) => { - toggle.setValue(this.settings.stickCursor).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.settings.stickCursor = value; - yield this.settings.save(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Enhance the Enter key") - .setDesc("Make the Enter key behave the same as other outliners.") - .addToggle((toggle) => { - toggle.setValue(this.settings.betterEnter).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.settings.betterEnter = value; - yield this.settings.save(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Enhance the Tab key") - .setDesc("Make Tab and Shift-Tab behave the same as other outliners.") - .addToggle((toggle) => { - toggle.setValue(this.settings.betterTab).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.settings.betterTab = value; - yield this.settings.save(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Enhance the Ctrl+A or Cmd+A behavior") - .setDesc("Press the hotkey once to select the current list item. Press the hotkey twice to select the entire list.") - .addToggle((toggle) => { - toggle.setValue(this.settings.selectAll).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.settings.selectAll = value; - yield this.settings.save(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Debug mode") - .setDesc("Open DevTools (Command+Option+I or Control+Shift+I) to copy the debug logs.") - .addToggle((toggle) => { - toggle.setValue(this.settings.debug).onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.settings.debug = value; - yield this.settings.save(); - })); - }); - } -} -class SettingsTabFeature { - constructor(plugin, settings) { - this.plugin = plugin; - this.settings = settings; - } - load() { - return __awaiter(this, void 0, void 0, function* () { - this.plugin.addSettingTab(new ObsidianOutlinerPluginSettingTab(this.plugin.app, this.plugin, this.settings)); - }); - } - unload() { - return __awaiter(this, void 0, void 0, function* () { }); - } -} - -class CreateNoteLineOperation { - constructor(root) { - this.root = root; - this.stopPropagation = false; - this.updated = false; - } - shouldStopPropagation() { - return this.stopPropagation; - } - shouldUpdate() { - return this.updated; - } - perform() { - const { root } = this; - if (!root.hasSingleCursor()) { - return; - } - const cursor = root.getCursor(); - const list = root.getListUnderCursor(); - const lineUnderCursor = list - .getLinesInfo() - .find((l) => l.from.line === cursor.line); - if (cursor.ch < lineUnderCursor.from.ch) { - return; - } - this.stopPropagation = true; - this.updated = true; - if (!list.getNotesIndent()) { - list.setNotesIndent(list.getFirstLineIndent() + " "); - } - const lines = list.getLinesInfo().reduce((acc, line) => { - if (cursor.line === line.from.line) { - acc.push(line.text.slice(0, cursor.ch - line.from.ch)); - acc.push(line.text.slice(cursor.ch - line.from.ch)); - } - else { - acc.push(line.text); - } - return acc; - }, []); - list.replaceLines(lines); - root.replaceCursor({ - line: cursor.line + 1, - ch: list.getNotesIndent().length, - }); - } -} - -class ShiftEnterShouldCreateNoteFeature { - constructor(plugin, obsidian, settings, ime, performOperation) { - this.plugin = plugin; - this.obsidian = obsidian; - this.settings = settings; - this.ime = ime; - this.performOperation = performOperation; - this.check = () => { - return this.settings.betterEnter && !this.ime.isIMEOpened(); - }; - this.run = (editor) => { - return this.performOperation.performOperation((root) => new CreateNoteLineOperation(root), editor); - }; - } - load() { - return __awaiter(this, void 0, void 0, function* () { - this.plugin.registerEditorExtension(view.keymap.of([ - { - key: "s-Enter", - run: this.obsidian.createKeymapRunCallback({ - check: this.check, - run: this.run, - }), - }, - ])); - }); - } - unload() { - return __awaiter(this, void 0, void 0, function* () { }); - } -} - -class ApplyChangesService { - applyChanges(editor, root) { - const rootRange = root.getRange(); + calculateChanges(editor, prevRoot, newRoot) { + const rootRange = prevRoot.getContentRange(); const oldString = editor.getRange(rootRange[0], rootRange[1]); - const newString = root.print(); - const fromLine = rootRange[0].line; - const toLine = rootRange[1].line; - for (let l = fromLine; l <= toLine; l++) { - editor.unfold(l); - } + const newString = newRoot.print(); const changeFrom = Object.assign({}, rootRange[0]); const changeTo = Object.assign({}, rootRange[1]); let oldTmp = oldString; let newTmp = newString; - // eslint-disable-next-line no-constant-condition while (true) { const nlIndex = oldTmp.lastIndexOf("\n"); if (nlIndex < 0) { @@ -2090,7 +2821,6 @@ class ApplyChangesService { nlIndex2 >= 0 ? oldTmp.length - nlIndex2 - 1 : oldTmp.length; changeTo.line--; } - // eslint-disable-next-line no-constant-condition while (true) { const nlIndex = oldTmp.indexOf("\n"); if (nlIndex < 0) { @@ -2105,25 +2835,53 @@ class ApplyChangesService { oldTmp = oldTmp.slice(oldLine.length); newTmp = newTmp.slice(oldLine.length); } - if (oldTmp !== newTmp) { - editor.replaceRange(newTmp, changeFrom, changeTo); + if (oldTmp === newTmp) { + return null; } - editor.setSelections(root.getSelections()); - function recursive(list) { - for (const c of list.getChildren()) { - recursive(c); + return { + replacement: newTmp, + changeFrom, + changeTo, + }; + } + calculateFoldingOprations(prevRoot, newRoot, changeFrom, changeTo) { + const changedRange = [changeFrom, changeTo]; + const prevLists = getAllChildren(prevRoot); + const newLists = getAllChildren(newRoot); + const unfold = []; + const fold = []; + for (const prevList of prevLists.values()) { + if (!prevList.isFoldRoot()) { + continue; } - if (list.isFoldRoot()) { - editor.fold(list.getFirstLineContentStart().line); + const newList = newLists.get(prevList.getID()); + if (!newList) { + continue; + } + const prevListRange = [ + prevList.getFirstLineContentStart(), + prevList.getContentEndIncludingChildren(), + ]; + if (isRangesIntersects(prevListRange, changedRange)) { + unfold.push(prevList.getFirstLineContentStart().line); + fold.push(newList.getFirstLineContentStart().line); } } - for (const c of root.getChildren()) { - recursive(c); - } + unfold.sort((a, b) => b - a); + fold.sort((a, b) => b - a); + return { unfold, fold }; } } +function getAllChildrenReduceFn(acc, child) { + acc.set(child.getID(), child); + child.getChildren().reduce(getAllChildrenReduceFn, acc); + return acc; +} +function getAllChildren(root) { + return root.getChildren().reduce(getAllChildrenReduceFn, new Map()); +} -class IMEService { +class IMEDetector { constructor() { this.composition = false; this.onCompositionStart = () => { @@ -2145,16 +2903,15 @@ class IMEService { document.removeEventListener("compositionstart", this.onCompositionStart); }); } - isIMEOpened() { + isOpened() { return this.composition && obsidian.Platform.isDesktop; } } -class LoggerService { +class Logger { constructor(settings) { this.settings = settings; } - // eslint-disable-next-line @typescript-eslint/no-explicit-any log(method, ...args) { if (!this.settings.debug) { return; @@ -2162,70 +2919,74 @@ class LoggerService { console.info(method, ...args); } bind(method) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any return (...args) => this.log(method, ...args); } } -class ObsidianService { +function getHiddenObsidianConfig(app) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return app.vault.config; +} +class ObsidianSettings { constructor(app) { this.app = app; } isLegacyEditorEnabled() { - const config = Object.assign({ legacyEditor: false }, this.app.vault.config); + const config = Object.assign({ legacyEditor: false }, getHiddenObsidianConfig(this.app)); return config.legacyEditor; } isDefaultThemeEnabled() { - const config = Object.assign({ cssTheme: "" }, this.app.vault.config); + const config = Object.assign({ cssTheme: "" }, getHiddenObsidianConfig(this.app)); return config.cssTheme === ""; } - getObsidianTabsSettings() { - return Object.assign({ useTab: true, tabSize: 4 }, this.app.vault.config); + getTabsSettings() { + return Object.assign({ useTab: true, tabSize: 4 }, getHiddenObsidianConfig(this.app)); } - getObsidianFoldSettings() { - return Object.assign({ foldIndent: true }, this.app.vault.config); + getFoldSettings() { + return Object.assign({ foldIndent: true }, getHiddenObsidianConfig(this.app)); } getDefaultIndentChars() { - const { useTab, tabSize } = this.getObsidianTabsSettings(); + const { useTab, tabSize } = this.getTabsSettings(); return useTab ? "\t" : new Array(tabSize).fill(" ").join(""); } - getEditorFromState(state) { - return new MyEditor(state.field(obsidian.editorInfoField).editor); - } - createKeymapRunCallback(config) { - const check = config.check || (() => true); - const { run } = config; - return (view) => { - const editor = this.getEditorFromState(view.state); - if (!check(editor)) { - return false; - } - const { shouldUpdate, shouldStopPropagation } = run(editor); - return shouldUpdate || shouldStopPropagation; - }; - } - createEditorCallback(cb) { - return (editor) => { - const myEditor = new MyEditor(editor); - const shouldStopPropagation = cb(myEditor); - if (!shouldStopPropagation && - window.event && - window.event.type === "keydown") { - myEditor.triggerOnKeyDown(window.event); - } - }; - } } -const bulletSign = `(?:[-*+]|\\d+\\.)`; -const optionalCheckbox = `(?:\\[[ xX]\\]( |\t))?`; -const listItemWithoutSpacesRe = new RegExp(`^${bulletSign}( |\t)`); -const listItemRe = new RegExp(`^[ \t]*${bulletSign}( |\t)`); +class OperationPerformer { + constructor(parser, changesApplicator) { + this.parser = parser; + this.changesApplicator = changesApplicator; + } + eval(root, op, editor) { + const prevRoot = root.clone(); + op.perform(); + if (op.shouldUpdate()) { + this.changesApplicator.apply(editor, prevRoot, root); + } + return { + shouldUpdate: op.shouldUpdate(), + shouldStopPropagation: op.shouldStopPropagation(), + }; + } + perform(cb, editor, cursor = editor.getCursor()) { + const root = this.parser.parse(editor, cursor); + if (!root) { + return { shouldUpdate: false, shouldStopPropagation: false }; + } + const op = cb(root); + return this.eval(root, op, editor); + } +} + +const bulletSignRe = `(?:[-*+]|\\d+\\.)`; +const optionalCheckboxRe = `(?:${checkboxRe})?`; +const listItemWithoutSpacesRe = new RegExp(`^${bulletSignRe}( |\t)`); +const listItemRe = new RegExp(`^[ \t]*${bulletSignRe}( |\t)`); const stringWithSpacesRe = new RegExp(`^[ \t]+`); -const parseListItemRe = new RegExp(`^([ \t]*)(${bulletSign})( |\t)((${optionalCheckbox}).*)$`); -class ParserService { - constructor(logger) { +const parseListItemRe = new RegExp(`^([ \t]*)(${bulletSignRe})( |\t)(${optionalCheckboxRe})(.*)$`); +class Parser { + constructor(logger, settings) { this.logger = logger; + this.settings = settings; } parseRange(editor, fromLine = 0, toLine = editor.lastLine()) { const lists = []; @@ -2235,7 +2996,7 @@ class ParserService { const list = this.parseWithLimits(editor, i, fromLine, toLine); if (list) { lists.push(list); - i = list.getRange()[1].line; + i = list.getContentEnd().line; } } } @@ -2271,7 +3032,7 @@ class ParserService { } } } - if (listLookingPos == null) { + if (listLookingPos === null) { return null; } let listStartLine = null; @@ -2311,6 +3072,18 @@ class ParserService { if (listStartLine > parsingStartLine || listEndLine < parsingStartLine) { return null; } + // if the last line contains only spaces and that's incorrect indent, then ignore the last line + // https://github.com/vslinko/obsidian-outliner/issues/368 + if (listEndLine > listStartLine) { + const lastLine = editor.getLine(listEndLine); + if (lastLine.trim().length === 0) { + const prevLine = editor.getLine(listEndLine - 1); + const [, prevLineIndent] = /^(\s*)/.exec(prevLine); + if (!lastLine.startsWith(prevLineIndent)) { + listEndLine--; + } + } + } const root = new Root({ line: listStartLine, ch: 0 }, { line: listEndLine, ch: editor.getLine(listEndLine).length }, editor.listSelections().map((r) => ({ anchor: { line: r.anchor.line, ch: r.anchor.ch }, head: { line: r.head.line, ch: r.head.ch }, @@ -2323,7 +3096,12 @@ class ParserService { const line = editor.getLine(l); const matches = parseListItemRe.exec(line); if (matches) { - const [, indent, bullet, spaceAfterBullet, content, optionalCheckbox] = matches; + const [, indent, bullet, spaceAfterBullet] = matches; + let [, , , , optionalCheckbox, content] = matches; + content = optionalCheckbox + content; + if (this.settings.keepCursorWithinContent !== "bullet-and-checkbox") { + optionalCheckbox = ""; + } const compareLength = Math.min(currentIndent.length, indent.length); const indentSlice = indent.slice(0, compareLength); const currentIndentSlice = currentIndent.slice(0, compareLength); @@ -2346,7 +3124,7 @@ class ParserService { currentIndent = indent; } const foldRoot = foldedLines.includes(l); - currentList = new List(root, indent, bullet, optionalCheckbox.length, spaceAfterBullet, content, foldRoot); + currentList = new List(root, indent, bullet, optionalCheckbox, spaceAfterBullet, content, foldRoot); currentParent.addAfterAll(currentList); } else if (this.isLineWithIndent(line)) { @@ -2394,105 +3172,95 @@ class ParserService { } } -class PerformOperationService { - constructor(parser, applyChanges) { - this.parser = parser; - this.applyChanges = applyChanges; - } - evalOperation(root, op, editor) { - op.perform(); - if (op.shouldUpdate()) { - this.applyChanges.applyChanges(editor, root); - } - return { - shouldUpdate: op.shouldUpdate(), - shouldStopPropagation: op.shouldStopPropagation(), - }; - } - performOperation(cb, editor, cursor = editor.getCursor()) { - const root = this.parser.parse(editor, cursor); - if (!root) { - return { shouldUpdate: false, shouldStopPropagation: false }; - } - const op = cb(root); - return this.evalOperation(root, op, editor); - } -} - const DEFAULT_SETTINGS = { styleLists: true, debug: false, - stickCursor: true, + stickCursor: "bullet-and-checkbox", betterEnter: true, betterTab: true, selectAll: true, listLines: false, listLineAction: "toggle-folding", + dnd: true, + previousRelease: null, }; -class SettingsService { +class Settings { constructor(storage) { this.storage = storage; - this.handlers = new Map(); + this.callbacks = new Set(); } - get styleLists() { + get keepCursorWithinContent() { + // Adaptor for users migrating from older version of the plugin. + if (this.values.stickCursor === true) { + return "bullet-and-checkbox"; + } + else if (this.values.stickCursor === false) { + return "never"; + } + return this.values.stickCursor; + } + set keepCursorWithinContent(value) { + this.set("stickCursor", value); + } + get overrideTabBehaviour() { + return this.values.betterTab; + } + set overrideTabBehaviour(value) { + this.set("betterTab", value); + } + get overrideEnterBehaviour() { + return this.values.betterEnter; + } + set overrideEnterBehaviour(value) { + this.set("betterEnter", value); + } + get overrideSelectAllBehaviour() { + return this.values.selectAll; + } + set overrideSelectAllBehaviour(value) { + this.set("selectAll", value); + } + get betterListsStyles() { return this.values.styleLists; } - set styleLists(value) { + set betterListsStyles(value) { this.set("styleLists", value); } + get verticalLines() { + return this.values.listLines; + } + set verticalLines(value) { + this.set("listLines", value); + } + get verticalLinesAction() { + return this.values.listLineAction; + } + set verticalLinesAction(value) { + this.set("listLineAction", value); + } + get dragAndDrop() { + return this.values.dnd; + } + set dragAndDrop(value) { + this.set("dnd", value); + } get debug() { return this.values.debug; } set debug(value) { this.set("debug", value); } - get stickCursor() { - return this.values.stickCursor; + get previousRelease() { + return this.values.previousRelease; } - set stickCursor(value) { - this.set("stickCursor", value); + set previousRelease(value) { + this.set("previousRelease", value); } - get betterEnter() { - return this.values.betterEnter; + onChange(cb) { + this.callbacks.add(cb); } - set betterEnter(value) { - this.set("betterEnter", value); - } - get betterTab() { - return this.values.betterTab; - } - set betterTab(value) { - this.set("betterTab", value); - } - get selectAll() { - return this.values.selectAll; - } - set selectAll(value) { - this.set("selectAll", value); - } - get listLines() { - return this.values.listLines; - } - set listLines(value) { - this.set("listLines", value); - } - get listLineAction() { - return this.values.listLineAction; - } - set listLineAction(value) { - this.set("listLineAction", value); - } - onChange(key, cb) { - if (!this.handlers.has(key)) { - this.handlers.set(key, new Set()); - } - this.handlers.get(key).add(cb); - } - removeCallback(key, cb) { - const handlers = this.handlers.get(key); - if (handlers) { - handlers.delete(cb); - } + removeCallback(cb) { + this.callbacks.delete(cb); } reset() { for (const [k, v] of Object.entries(DEFAULT_SETTINGS)) { @@ -2509,14 +3277,13 @@ class SettingsService { yield this.storage.saveData(this.values); }); } + getValues() { + return Object.assign({}, this.values); + } set(key, value) { this.values[key] = value; - const callbacks = this.handlers.get(key); - if (!callbacks) { - return; - } - for (const cb of callbacks.values()) { - cb(value); + for (const cb of this.callbacks) { + cb(); } } } @@ -2525,29 +3292,41 @@ class ObsidianOutlinerPlugin extends obsidian.Plugin { onload() { return __awaiter(this, void 0, void 0, function* () { console.log(`Loading obsidian-outliner`); - this.obsidian = new ObsidianService(this.app); - this.settings = new SettingsService(this); - yield this.settings.load(); - this.logger = new LoggerService(this.settings); - this.parser = new ParserService(this.logger); - this.applyChanges = new ApplyChangesService(); - this.performOperation = new PerformOperationService(this.parser, this.applyChanges); - this.ime = new IMEService(); - yield this.ime.load(); + yield this.prepareSettings(); + this.obsidianSettings = new ObsidianSettings(this.app); + this.logger = new Logger(this.settings); + this.parser = new Parser(this.logger, this.settings); + this.changesApplicator = new ChangesApplicator(); + this.operationPerformer = new OperationPerformer(this.parser, this.changesApplicator); + this.imeDetector = new IMEDetector(); + yield this.imeDetector.load(); this.features = [ - new SettingsTabFeature(this, this.settings), - new ListsStylesFeature(this.settings, this.obsidian), - new EnterOutdentIfLineIsEmptyFeature(this, this.settings, this.ime, this.obsidian, this.performOperation), - new EnterShouldCreateNewItemFeature(this, this.settings, this.ime, this.obsidian, this.performOperation), - new EnsureCursorInListContentFeature(this, this.settings, this.obsidian, this.performOperation), - new MoveCursorToPreviousUnfoldedLineFeature(this, this.settings, this.ime, this.obsidian, this.performOperation), - new DeleteShouldIgnoreBulletsFeature(this, this.settings, this.ime, this.obsidian, this.performOperation), - new SelectionShouldIgnoreBulletsFeature(this, this.settings, this.ime, this.obsidian, this.performOperation), - new FoldFeature(this, this.obsidian), - new SelectAllFeature(this, this.settings, this.ime, this.obsidian, this.performOperation), - new MoveItemsFeature(this, this.ime, this.obsidian, this.settings, this.performOperation), - new ShiftEnterShouldCreateNoteFeature(this, this.obsidian, this.settings, this.ime, this.performOperation), - new LinesFeature(this, this.settings, this.obsidian, this.parser), + // service features + new ReleaseNotesAnnouncement(this, this.settings), + new SettingsTab(this, this.settings), + new SystemInfo(this, this.settings), + // general features + new ListsMovementCommands(this, this.obsidianSettings, this.operationPerformer), + new ListsFoldingCommands(this, this.obsidianSettings), + // features based on settings.keepCursorWithinContent + new EditorSelectionsBehaviourOverride(this, this.settings, this.parser, this.operationPerformer), + new ArrowLeftAndCtrlArrowLeftBehaviourOverride(this, this.settings, this.imeDetector, this.operationPerformer), + new BackspaceBehaviourOverride(this, this.settings, this.imeDetector, this.operationPerformer), + new MetaBackspaceBehaviourOverride(this, this.settings, this.imeDetector, this.operationPerformer), + new DeleteBehaviourOverride(this, this.settings, this.imeDetector, this.operationPerformer), + // features based on settings.overrideTabBehaviour + new TabBehaviourOverride(this, this.imeDetector, this.obsidianSettings, this.settings, this.operationPerformer), + new ShiftTabBehaviourOverride(this, this.imeDetector, this.settings, this.operationPerformer), + // features based on settings.overrideEnterBehaviour + new EnterBehaviourOverride(this, this.settings, this.imeDetector, this.obsidianSettings, this.parser, this.operationPerformer), + // features based on settings.overrideSelectAllBehaviour + new CtrlAAndCmdABehaviourOverride(this, this.settings, this.imeDetector, this.operationPerformer), + // features based on settings.betterListsStyles + new BetterListsStyles(this.settings, this.obsidianSettings), + // features based on settings.verticalLines + new VerticalLines(this, this.settings, this.obsidianSettings, this.parser), + // features based on settings.dragAndDrop + new DragAndDrop(this, this.settings, this.obsidianSettings, this.parser, this.operationPerformer), ]; for (const feature of this.features) { yield feature.load(); @@ -2557,13 +3336,19 @@ class ObsidianOutlinerPlugin extends obsidian.Plugin { onunload() { return __awaiter(this, void 0, void 0, function* () { console.log(`Unloading obsidian-outliner`); - yield this.ime.unload(); + yield this.imeDetector.unload(); for (const feature of this.features) { yield feature.unload(); } }); } + prepareSettings() { + return __awaiter(this, void 0, void 0, function* () { + this.settings = new Settings(this); + yield this.settings.load(); + }); + } } module.exports = ObsidianOutlinerPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9yb290L3JlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMudHMiLCJzcmMvb3BlcmF0aW9ucy9EZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb24udHMiLCJzcmMvb3BlcmF0aW9ucy9EZWxldGVBbmRNZXJnZVdpdGhOZXh0TGluZU9wZXJhdGlvbi50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxMaW5lU3RhcnRPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvRGVsZXRlU2hvdWxkSWdub3JlQnVsbGV0c0ZlYXR1cmUudHMiLCJzcmMvb3BlcmF0aW9ucy9FbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50T3BlcmF0aW9uLnRzIiwic3JjL29wZXJhdGlvbnMvRW5zdXJlQ3Vyc29ySXNJblVuZm9sZGVkTGluZU9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9FbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50RmVhdHVyZS50cyIsInNyYy9vcGVyYXRpb25zL01vdmVMZWZ0T3BlcmF0aW9uLnRzIiwic3JjL3V0aWxzL2lzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94LnRzIiwic3JjL29wZXJhdGlvbnMvT3V0ZGVudElmTGluZUlzRW1wdHlPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvRW50ZXJPdXRkZW50SWZMaW5lSXNFbXB0eUZlYXR1cmUudHMiLCJzcmMvcm9vdC9pbmRleC50cyIsInNyYy9vcGVyYXRpb25zL0NyZWF0ZU5ld0l0ZW1PcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvRW50ZXJTaG91bGRDcmVhdGVOZXdJdGVtT25DaGlsZExldmVsRmVhdHVyZS50cyIsInNyYy9mZWF0dXJlcy9Gb2xkRmVhdHVyZS50cyIsInNyYy9NeUVkaXRvci50cyIsInNyYy9mZWF0dXJlcy9MaW5lc0ZlYXR1cmUudHMiLCJzcmMvZmVhdHVyZXMvTGlzdHNTdHlsZXNGZWF0dXJlLnRzIiwic3JjL29wZXJhdGlvbnMvTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVGZWF0dXJlLnRzIiwic3JjL29wZXJhdGlvbnMvTW92ZURvd25PcGVyYXRpb24udHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlUmlnaHRPcGVyYXRpb24udHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlVXBPcGVyYXRpb24udHMiLCJzcmMvZmVhdHVyZXMvTW92ZUl0ZW1zRmVhdHVyZS50cyIsInNyYy9vcGVyYXRpb25zL1NlbGVjdEFsbE9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9TZWxlY3RBbGxGZWF0dXJlLnRzIiwic3JjL29wZXJhdGlvbnMvU2VsZWN0VGlsbExpbmVTdGFydE9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9TZWxlY3Rpb25TaG91bGRJZ25vcmVCdWxsZXRzRmVhdHVyZS50cyIsInNyYy9mZWF0dXJlcy9TZXR0aW5nc1RhYkZlYXR1cmUudHMiLCJzcmMvb3BlcmF0aW9ucy9DcmVhdGVOb3RlTGluZU9wZXJhdGlvbi50cyIsInNyYy9mZWF0dXJlcy9TaGlmdEVudGVyU2hvdWxkQ3JlYXRlTm90ZUZlYXR1cmUudHMiLCJzcmMvc2VydmljZXMvQXBwbHlDaGFuZ2VzU2VydmljZS50cyIsInNyYy9zZXJ2aWNlcy9JTUVTZXJ2aWNlLnRzIiwic3JjL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMiLCJzcmMvc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlLnRzIiwic3JjL3NlcnZpY2VzL1BhcnNlclNlcnZpY2UudHMiLCJzcmMvc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UudHMiLCJzcmMvc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlLnRzIiwic3JjL09ic2lkaWFuT3V0bGluZXJQbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XHJcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xyXG4gICAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XHJcbiAgICB9XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xyXG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XHJcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcbiIsImltcG9ydCB7IExpc3QsIFJvb3QgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290OiBSb290KSB7XG4gIGZ1bmN0aW9uIHZpc2l0KHBhcmVudDogUm9vdCB8IExpc3QpIHtcbiAgICBsZXQgaW5kZXggPSAxO1xuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBwYXJlbnQuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgaWYgKC9cXGQrXFwuLy50ZXN0KGNoaWxkLmdldEJ1bGxldCgpKSkge1xuICAgICAgICBjaGlsZC5yZXBsYXRlQnVsbGV0KGAke2luZGV4Kyt9LmApO1xuICAgICAgfVxuXG4gICAgICB2aXNpdChjaGlsZCk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXQocm9vdCk7XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgTGlzdCwgTGlzdExpbmUsIFBvc2l0aW9uLCBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdC9yZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcblxuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleChcbiAgICAgIChsKSA9PiBjdXJzb3IuY2ggPT09IGwuZnJvbS5jaCAmJiBjdXJzb3IubGluZSA9PT0gbC5mcm9tLmxpbmVcbiAgICApO1xuXG4gICAgaWYgKGxpbmVObyA9PT0gMCkge1xuICAgICAgdGhpcy5tZXJnZVdpdGhQcmV2aW91c0l0ZW0ocm9vdCwgY3Vyc29yLCBsaXN0KTtcbiAgICB9IGVsc2UgaWYgKGxpbmVObyA+IDApIHtcbiAgICAgIHRoaXMubWVyZ2VOb3Rlcyhyb290LCBjdXJzb3IsIGxpc3QsIGxpbmVzLCBsaW5lTm8pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VOb3RlcyhcbiAgICByb290OiBSb290LFxuICAgIGN1cnNvcjogUG9zaXRpb24sXG4gICAgbGlzdDogTGlzdCxcbiAgICBsaW5lczogTGlzdExpbmVbXSxcbiAgICBsaW5lTm86IG51bWJlclxuICApIHtcbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHByZXZMaW5lTm8gPSBsaW5lTm8gLSAxO1xuXG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lIC0gMSxcbiAgICAgIGNoOiBsaW5lc1twcmV2TGluZU5vXS50ZXh0Lmxlbmd0aCArIGxpbmVzW3ByZXZMaW5lTm9dLmZyb20uY2gsXG4gICAgfSk7XG5cbiAgICBsaW5lc1twcmV2TGluZU5vXS50ZXh0ICs9IGxpbmVzW2xpbmVOb10udGV4dDtcbiAgICBsaW5lcy5zcGxpY2UobGluZU5vLCAxKTtcblxuICAgIGxpc3QucmVwbGFjZUxpbmVzKGxpbmVzLm1hcCgobCkgPT4gbC50ZXh0KSk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlV2l0aFByZXZpb3VzSXRlbShyb290OiBSb290LCBjdXJzb3I6IFBvc2l0aW9uLCBsaXN0OiBMaXN0KSB7XG4gICAgaWYgKHJvb3QuZ2V0Q2hpbGRyZW4oKVswXSA9PT0gbGlzdCAmJiBsaXN0LmdldENoaWxkcmVuKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm90aEFyZUVtcHR5ID0gcHJldi5pc0VtcHR5KCkgJiYgbGlzdC5pc0VtcHR5KCk7XG4gICAgY29uc3QgcHJldklzRW1wdHlBbmRTYW1lTGV2ZWwgPVxuICAgICAgcHJldi5pc0VtcHR5KCkgJiYgIWxpc3QuaXNFbXB0eSgpICYmIHByZXYuZ2V0TGV2ZWwoKSA9PSBsaXN0LmdldExldmVsKCk7XG4gICAgY29uc3QgbGlzdElzRW1wdHlBbmRQcmV2SXNQYXJlbnQgPVxuICAgICAgbGlzdC5pc0VtcHR5KCkgJiYgcHJldi5nZXRMZXZlbCgpID09IGxpc3QuZ2V0TGV2ZWwoKSAtIDE7XG5cbiAgICBpZiAoYm90aEFyZUVtcHR5IHx8IHByZXZJc0VtcHR5QW5kU2FtZUxldmVsIHx8IGxpc3RJc0VtcHR5QW5kUHJldklzUGFyZW50KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgICAgY29uc3QgcHJldkVuZCA9IHByZXYuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG5cbiAgICAgIGlmICghcHJldi5nZXROb3Rlc0luZGVudCgpICYmIGxpc3QuZ2V0Tm90ZXNJbmRlbnQoKSkge1xuICAgICAgICBwcmV2LnNldE5vdGVzSW5kZW50KFxuICAgICAgICAgIHByZXYuZ2V0Rmlyc3RMaW5lSW5kZW50KCkgK1xuICAgICAgICAgICAgbGlzdC5nZXROb3Rlc0luZGVudCgpLnNsaWNlKGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lcyA9IHByZXYuZ2V0TGluZXMoKTtcbiAgICAgIGNvbnN0IG5ld0xpbmVzID0gbGlzdC5nZXRMaW5lcygpO1xuICAgICAgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gMV0gKz0gbmV3TGluZXNbMF07XG4gICAgICBjb25zdCByZXN1bHRMaW5lcyA9IG9sZExpbmVzLmNvbmNhdChuZXdMaW5lcy5zbGljZSgxKSk7XG5cbiAgICAgIHByZXYucmVwbGFjZUxpbmVzKHJlc3VsdExpbmVzKTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcblxuICAgICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICBsaXN0LnJlbW92ZUNoaWxkKGMpO1xuICAgICAgICBwcmV2LmFkZEFmdGVyQWxsKGMpO1xuICAgICAgfVxuXG4gICAgICByb290LnJlcGxhY2VDdXJzb3IocHJldkVuZCk7XG5cbiAgICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBEZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb24gfSBmcm9tIFwiLi9EZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmVPcGVyYXRpb25cIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIERlbGV0ZUFuZE1lcmdlV2l0aE5leHRMaW5lT3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBkZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91czogRGVsZXRlQW5kTWVyZ2VXaXRoUHJldmlvdXNMaW5lT3BlcmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge1xuICAgIHRoaXMuZGVsZXRlQW5kTWVyZ2VXaXRoUHJldmlvdXMgPVxuICAgICAgbmV3IERlbGV0ZUFuZE1lcmdlV2l0aFByZXZpb3VzTGluZU9wZXJhdGlvbihyb290KTtcbiAgfVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5zaG91bGRTdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5zaG91bGRVcGRhdGUoKTtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG5cbiAgICBjb25zdCBsaW5lTm8gPSBsaW5lcy5maW5kSW5kZXgoXG4gICAgICAobCkgPT4gY3Vyc29yLmNoID09PSBsLnRvLmNoICYmIGN1cnNvci5saW5lID09PSBsLnRvLmxpbmVcbiAgICApO1xuXG4gICAgaWYgKGxpbmVObyA9PT0gbGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgY29uc3QgbmV4dExpbmUgPSBsaW5lc1tsaW5lTm9dLnRvLmxpbmUgKyAxO1xuICAgICAgY29uc3QgbmV4dExpc3QgPSByb290LmdldExpc3RVbmRlckxpbmUobmV4dExpbmUpO1xuICAgICAgaWYgKCFuZXh0TGlzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByb290LnJlcGxhY2VDdXJzb3IobmV4dExpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkpO1xuICAgICAgdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5wZXJmb3JtKCk7XG4gICAgfSBlbHNlIGlmIChsaW5lTm8gPj0gMCkge1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGxpbmVzW2xpbmVObyArIDFdLmZyb20pO1xuICAgICAgdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91cy5wZXJmb3JtKCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsTGluZVN0YXJ0T3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcbiAgICBjb25zdCBsaW5lTm8gPSBsaW5lcy5maW5kSW5kZXgoKGwpID0+IGwuZnJvbS5saW5lID09PSBjdXJzb3IubGluZSk7XG5cbiAgICBsaW5lc1tsaW5lTm9dLnRleHQgPSBsaW5lc1tsaW5lTm9dLnRleHQuc2xpY2UoXG4gICAgICBjdXJzb3IuY2ggLSBsaW5lc1tsaW5lTm9dLmZyb20uY2hcbiAgICApO1xuXG4gICAgbGlzdC5yZXBsYWNlTGluZXMobGluZXMubWFwKChsKSA9PiBsLnRleHQpKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vXS5mcm9tKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IERlbGV0ZUFuZE1lcmdlV2l0aE5leHRMaW5lT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRGVsZXRlQW5kTWVyZ2VXaXRoTmV4dExpbmVPcGVyYXRpb25cIjtcbmltcG9ydCB7IERlbGV0ZUFuZE1lcmdlV2l0aFByZXZpb3VzTGluZU9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0RlbGV0ZUFuZE1lcmdlV2l0aFByZXZpb3VzTGluZU9wZXJhdGlvblwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbExpbmVTdGFydE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0RlbGV0ZVRpbGxMaW5lU3RhcnRPcGVyYXRpb25cIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIERlbGV0ZVNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWU6IElNRVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcIkJhY2tzcGFjZVwiLFxuICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5kZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiRGVsZXRlXCIsXG4gICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLmRlbGV0ZUFuZE1lcmdlV2l0aE5leHRMaW5lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWFjOiBcIm0tQmFja3NwYWNlXCIsXG4gICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLmRlbGV0ZVRpbGxMaW5lU3RhcnQsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc3RpY2tDdXJzb3IgJiYgIXRoaXMuaW1lLmlzSU1FT3BlbmVkKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBkZWxldGVBbmRNZXJnZVdpdGhQcmV2aW91c0xpbmUgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlQW5kTWVyZ2VXaXRoUHJldmlvdXNMaW5lT3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcblxuICBwcml2YXRlIGRlbGV0ZVRpbGxMaW5lU3RhcnQgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbExpbmVTdGFydE9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBkZWxldGVBbmRNZXJnZVdpdGhOZXh0TGluZSA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBEZWxldGVBbmRNZXJnZVdpdGhOZXh0TGluZU9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBFbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50T3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjb250ZW50U3RhcnQgPSBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpO1xuICAgIGNvbnN0IGxpbmVQcmVmaXggPVxuICAgICAgY29udGVudFN0YXJ0LmxpbmUgPT09IGN1cnNvci5saW5lXG4gICAgICAgID8gY29udGVudFN0YXJ0LmNoICsgbGlzdC5nZXRDaGVja2JveExlbmd0aCgpXG4gICAgICAgIDogbGlzdC5nZXROb3Rlc0luZGVudCgpLmxlbmd0aDtcblxuICAgIGlmIChjdXJzb3IuY2ggPCBsaW5lUHJlZml4KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgICAgbGluZTogY3Vyc29yLmxpbmUsXG4gICAgICAgIGNoOiBsaW5lUHJlZml4LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBFbnN1cmVDdXJzb3JJc0luVW5mb2xkZWRMaW5lT3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGlmICghbGlzdC5pc0ZvbGRlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm9sZFJvb3QgPSBsaXN0LmdldFRvcEZvbGRSb290KCk7XG4gICAgY29uc3QgZmlyc3RMaW5lRW5kID0gZm9sZFJvb3QuZ2V0TGluZXNJbmZvKClbMF0udG87XG5cbiAgICBpZiAoY3Vyc29yLmxpbmUgPiBmaXJzdExpbmVFbmQubGluZSkge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihmaXJzdExpbmVFbmQpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIFRyYW5zYWN0aW9uIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4uL2ZlYXR1cmVzL0ZlYXR1cmVcIjtcbmltcG9ydCB7IEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRPcGVyYXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9FbnN1cmVDdXJzb3JJbkxpc3RDb250ZW50T3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBFbnN1cmVDdXJzb3JJc0luVW5mb2xkZWRMaW5lT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRW5zdXJlQ3Vyc29ySXNJblVuZm9sZGVkTGluZU9wZXJhdGlvblwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBFZGl0b3JTdGF0ZS50cmFuc2FjdGlvbkV4dGVuZGVyLm9mKHRoaXMudHJhbnNhY3Rpb25FeHRlbmRlcilcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIHRyYW5zYWN0aW9uRXh0ZW5kZXIgPSAodHI6IFRyYW5zYWN0aW9uKTogbnVsbCA9PiB7XG4gICAgaWYgKCF0aGlzLnNldHRpbmdzLnN0aWNrQ3Vyc29yIHx8ICF0ci5zZWxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMub2JzaWRpYW4uZ2V0RWRpdG9yRnJvbVN0YXRlKHRyLnN0YXJ0U3RhdGUpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUN1cnNvckFjdGl2aXR5KGVkaXRvcik7XG4gICAgfSwgMCk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZUN1cnNvckFjdGl2aXR5ID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgRW5zdXJlQ3Vyc29ySXNJblVuZm9sZGVkTGluZU9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG5cbiAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgRW5zdXJlQ3Vyc29ySW5MaXN0Q29udGVudE9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3QvcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0c1wiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUxlZnRPcGVyYXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IGdyYW5kUGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuXG4gICAgaWYgKCFncmFuZFBhcmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQmVmb3JlID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGluZGVudFJtRnJvbSA9IHBhcmVudC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGg7XG4gICAgY29uc3QgaW5kZW50Um1UaWxsID0gbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGg7XG5cbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgZ3JhbmRQYXJlbnQuYWRkQWZ0ZXIocGFyZW50LCBsaXN0KTtcbiAgICBsaXN0LnVuaW5kZW50Q29udGVudChpbmRlbnRSbUZyb20sIGluZGVudFJtVGlsbCk7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQWZ0ZXIgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgbGluZURpZmYgPSBsaXN0U3RhcnRMaW5lQWZ0ZXIgLSBsaXN0U3RhcnRMaW5lQmVmb3JlO1xuICAgIGNvbnN0IGNoRGlmZiA9IGluZGVudFJtVGlsbCAtIGluZGVudFJtRnJvbTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoIC0gY2hEaWZmLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94KGxpbmU6IHN0cmluZykge1xuICByZXR1cm4gbGluZSA9PT0gXCJcIiB8fCBsaW5lID09PSBcIlsgXSBcIjtcbn1cbiIsImltcG9ydCB7IE1vdmVMZWZ0T3BlcmF0aW9uIH0gZnJvbSBcIi4vTW92ZUxlZnRPcGVyYXRpb25cIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IGlzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94IH0gZnJvbSBcIi4uL3V0aWxzL2lzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94XCI7XG5cbmV4cG9ydCBjbGFzcyBPdXRkZW50SWZMaW5lSXNFbXB0eU9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgbW92ZUxlZnRPcDogTW92ZUxlZnRPcGVyYXRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7XG4gICAgdGhpcy5tb3ZlTGVmdE9wID0gbmV3IE1vdmVMZWZ0T3BlcmF0aW9uKHJvb3QpO1xuICB9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm1vdmVMZWZ0T3Auc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubW92ZUxlZnRPcC5zaG91bGRVcGRhdGUoKTtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzKCk7XG5cbiAgICBpZiAoXG4gICAgICBsaW5lcy5sZW5ndGggPiAxIHx8XG4gICAgICAhaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZXNbMF0pIHx8XG4gICAgICBsaXN0LmdldExldmVsKCkgPT09IDFcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vdmVMZWZ0T3AucGVyZm9ybSgpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuLi9mZWF0dXJlcy9GZWF0dXJlXCI7XG5pbXBvcnQgeyBPdXRkZW50SWZMaW5lSXNFbXB0eU9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL091dGRlbnRJZkxpbmVJc0VtcHR5T3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBJTUVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRVNlcnZpY2VcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNlcnZpY2VcIjtcbmltcG9ydCB7IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1BlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBFbnRlck91dGRlbnRJZkxpbmVJc0VtcHR5RmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1lOiBJTUVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZSxcbiAgICBwcml2YXRlIHBlcmZvcm1PcGVyYXRpb246IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAgUHJlYy5oaWdoZXN0KFxuICAgICAgICBrZXltYXAub2YoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogXCJFbnRlclwiLFxuICAgICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuYmV0dGVyRW50ZXIgJiYgIXRoaXMuaW1lLmlzSU1FT3BlbmVkKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLnBlcmZvcm1PcGVyYXRpb24ucGVyZm9ybU9wZXJhdGlvbihcbiAgICAgIChyb290KSA9PiBuZXcgT3V0ZGVudElmTGluZUlzRW1wdHlPcGVyYXRpb24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGNtcFBvcyhhOiBQb3NpdGlvbiwgYjogUG9zaXRpb24pIHtcbiAgcmV0dXJuIGEubGluZSAtIGIubGluZSB8fCBhLmNoIC0gYi5jaDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1heFBvcyhhOiBQb3NpdGlvbiwgYjogUG9zaXRpb24pIHtcbiAgcmV0dXJuIGNtcFBvcyhhLCBiKSA8IDAgPyBiIDogYTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pblBvcyhhOiBQb3NpdGlvbiwgYjogUG9zaXRpb24pIHtcbiAgcmV0dXJuIGNtcFBvcyhhLCBiKSA8IDAgPyBhIDogYjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbiB7XG4gIGNoOiBudW1iZXI7XG4gIGxpbmU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0TGluZSB7XG4gIHRleHQ6IHN0cmluZztcbiAgZnJvbTogUG9zaXRpb247XG4gIHRvOiBQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYW5nZSB7XG4gIGFuY2hvcjogUG9zaXRpb247XG4gIGhlYWQ6IFBvc2l0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdCB7XG4gIHByaXZhdGUgcGFyZW50OiBMaXN0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY2hpbGRyZW46IExpc3RbXSA9IFtdO1xuICBwcml2YXRlIG5vdGVzSW5kZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsaW5lczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvb3Q6IFJvb3QsXG4gICAgcHJpdmF0ZSBpbmRlbnQ6IHN0cmluZyxcbiAgICBwcml2YXRlIGJ1bGxldDogc3RyaW5nLFxuICAgIHByaXZhdGUgY2hlY2tib3hMZW5ndGg6IG51bWJlcixcbiAgICBwcml2YXRlIHNwYWNlQWZ0ZXJCdWxsZXQ6IHN0cmluZyxcbiAgICBmaXJzdExpbmU6IHN0cmluZyxcbiAgICBwcml2YXRlIGZvbGRSb290OiBib29sZWFuXG4gICkge1xuICAgIHRoaXMubGluZXMucHVzaChmaXJzdExpbmUpO1xuICB9XG5cbiAgZ2V0Tm90ZXNJbmRlbnQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubm90ZXNJbmRlbnQ7XG4gIH1cblxuICBzZXROb3Rlc0luZGVudChub3Rlc0luZGVudDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm90ZXMgaW5kZW50IGFscmVhZHkgcHJvdmlkZWRgKTtcbiAgICB9XG4gICAgdGhpcy5ub3Rlc0luZGVudCA9IG5vdGVzSW5kZW50O1xuICB9XG5cbiAgYWRkTGluZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5ub3Rlc0luZGVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGFkZCBsaW5lLCBub3RlcyBpbmRlbnQgc2hvdWxkIGJlIHByb3ZpZGVkIGZpcnN0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzLnB1c2godGV4dCk7XG4gIH1cblxuICByZXBsYWNlTGluZXMobGluZXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEgJiYgdGhpcy5ub3Rlc0luZGVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGFkZCBsaW5lLCBub3RlcyBpbmRlbnQgc2hvdWxkIGJlIHByb3ZpZGVkIGZpcnN0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzID0gbGluZXM7XG4gIH1cblxuICBnZXRMaW5lQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0Um9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb290O1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uY29uY2F0KCk7XG4gIH1cblxuICBnZXRMaW5lc0luZm8oKTogTGlzdExpbmVbXSB7XG4gICAgY29uc3Qgc3RhcnRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMF07XG5cbiAgICByZXR1cm4gdGhpcy5saW5lcy5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IHN0YXJ0TGluZSArIGk7XG4gICAgICBjb25zdCBzdGFydENoID1cbiAgICAgICAgaSA9PT0gMCA/IHRoaXMuZ2V0Q29udGVudFN0YXJ0Q2goKSA6IHRoaXMubm90ZXNJbmRlbnQubGVuZ3RoO1xuICAgICAgY29uc3QgZW5kQ2ggPSBzdGFydENoICsgcm93Lmxlbmd0aDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGV4dDogcm93LFxuICAgICAgICBmcm9tOiB7IGxpbmUsIGNoOiBzdGFydENoIH0sXG4gICAgICAgIHRvOiB7IGxpbmUsIGNoOiBlbmRDaCB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5saW5lcy5jb25jYXQoKTtcbiAgfVxuXG4gIGdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpIHtcbiAgICBjb25zdCBzdGFydExpbmUgPSB0aGlzLnJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZih0aGlzKVswXTtcblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBzdGFydExpbmUsXG4gICAgICBjaDogdGhpcy5nZXRDb250ZW50U3RhcnRDaCgpLFxuICAgIH07XG4gIH1cblxuICBnZXRMYXN0TGluZUNvbnRlbnRFbmQoKSB7XG4gICAgY29uc3QgZW5kTGluZSA9IHRoaXMucm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKHRoaXMpWzFdO1xuICAgIGNvbnN0IGVuZENoID1cbiAgICAgIHRoaXMubGluZXMubGVuZ3RoID09PSAxXG4gICAgICAgID8gdGhpcy5nZXRDb250ZW50U3RhcnRDaCgpICsgdGhpcy5saW5lc1swXS5sZW5ndGhcbiAgICAgICAgOiB0aGlzLm5vdGVzSW5kZW50Lmxlbmd0aCArIHRoaXMubGluZXNbdGhpcy5saW5lcy5sZW5ndGggLSAxXS5sZW5ndGg7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogZW5kTGluZSxcbiAgICAgIGNoOiBlbmRDaCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250ZW50U3RhcnRDaCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRlbnQubGVuZ3RoICsgdGhpcy5idWxsZXQubGVuZ3RoICsgMTtcbiAgfVxuXG4gIGlzRm9sZGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmZvbGRSb290KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudC5pc0ZvbGRlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlzRm9sZFJvb3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9sZFJvb3Q7XG4gIH1cblxuICBnZXRUb3BGb2xkUm9vdCgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcbiAgICBsZXQgdG1wOiBMaXN0ID0gdGhpcztcbiAgICBsZXQgZm9sZFJvb3Q6IExpc3QgfCBudWxsID0gbnVsbDtcbiAgICB3aGlsZSAodG1wKSB7XG4gICAgICBpZiAodG1wLmlzRm9sZFJvb3QoKSkge1xuICAgICAgICBmb2xkUm9vdCA9IHRtcDtcbiAgICAgIH1cbiAgICAgIHRtcCA9IHRtcC5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBmb2xkUm9vdDtcbiAgfVxuXG4gIGdldExldmVsKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnBhcmVudCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmdldExldmVsKCkgKyAxO1xuICB9XG5cbiAgdW5pbmRlbnRDb250ZW50KGZyb206IG51bWJlciwgdGlsbDogbnVtYmVyKSB7XG4gICAgdGhpcy5pbmRlbnQgPSB0aGlzLmluZGVudC5zbGljZSgwLCBmcm9tKSArIHRoaXMuaW5kZW50LnNsaWNlKHRpbGwpO1xuICAgIGlmICh0aGlzLm5vdGVzSW5kZW50ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm5vdGVzSW5kZW50ID1cbiAgICAgICAgdGhpcy5ub3Rlc0luZGVudC5zbGljZSgwLCBmcm9tKSArIHRoaXMubm90ZXNJbmRlbnQuc2xpY2UodGlsbCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBjaGlsZC51bmluZGVudENvbnRlbnQoZnJvbSwgdGlsbCk7XG4gICAgfVxuICB9XG5cbiAgaW5kZW50Q29udGVudChpbmRlbnRQb3M6IG51bWJlciwgaW5kZW50Q2hhcnM6IHN0cmluZykge1xuICAgIHRoaXMuaW5kZW50ID1cbiAgICAgIHRoaXMuaW5kZW50LnNsaWNlKDAsIGluZGVudFBvcykgK1xuICAgICAgaW5kZW50Q2hhcnMgK1xuICAgICAgdGhpcy5pbmRlbnQuc2xpY2UoaW5kZW50UG9zKTtcbiAgICBpZiAodGhpcy5ub3Rlc0luZGVudCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5ub3Rlc0luZGVudCA9XG4gICAgICAgIHRoaXMubm90ZXNJbmRlbnQuc2xpY2UoMCwgaW5kZW50UG9zKSArXG4gICAgICAgIGluZGVudENoYXJzICtcbiAgICAgICAgdGhpcy5ub3Rlc0luZGVudC5zbGljZShpbmRlbnRQb3MpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgY2hpbGQuaW5kZW50Q29udGVudChpbmRlbnRQb3MsIGluZGVudENoYXJzKTtcbiAgICB9XG4gIH1cblxuICBnZXRGaXJzdExpbmVJbmRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5kZW50O1xuICB9XG5cbiAgZ2V0QnVsbGV0KCkge1xuICAgIHJldHVybiB0aGlzLmJ1bGxldDtcbiAgfVxuXG4gIGdldFNwYWNlQWZ0ZXJCdWxsZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3BhY2VBZnRlckJ1bGxldDtcbiAgfVxuXG4gIGdldENoZWNrYm94TGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmNoZWNrYm94TGVuZ3RoO1xuICB9XG5cbiAgcmVwbGF0ZUJ1bGxldChidWxsZXQ6IHN0cmluZykge1xuICAgIHRoaXMuYnVsbGV0ID0gYnVsbGV0O1xuICB9XG5cbiAgZ2V0UGFyZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGFkZEJlZm9yZUFsbChsaXN0OiBMaXN0KSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGxpc3QpO1xuICAgIGxpc3QucGFyZW50ID0gdGhpcztcbiAgfVxuXG4gIGFkZEFmdGVyQWxsKGxpc3Q6IExpc3QpIHtcbiAgICB0aGlzLmNoaWxkcmVuLnB1c2gobGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlQ2hpbGQobGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YobGlzdCk7XG4gICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaSwgMSk7XG4gICAgbGlzdC5wYXJlbnQgPSBudWxsO1xuICB9XG5cbiAgYWRkQmVmb3JlKGJlZm9yZTogTGlzdCwgbGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YoYmVmb3JlKTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpLCAwLCBsaXN0KTtcbiAgICBsaXN0LnBhcmVudCA9IHRoaXM7XG4gIH1cblxuICBhZGRBZnRlcihiZWZvcmU6IExpc3QsIGxpc3Q6IExpc3QpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKGJlZm9yZSk7XG4gICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaSArIDEsIDAsIGxpc3QpO1xuICAgIGxpc3QucGFyZW50ID0gdGhpcztcbiAgfVxuXG4gIGdldFByZXZTaWJsaW5nT2YobGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YobGlzdCk7XG4gICAgcmV0dXJuIGkgPiAwID8gdGhpcy5jaGlsZHJlbltpIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0TmV4dFNpYmxpbmdPZihsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICByZXR1cm4gaSA+PSAwICYmIGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA/IHRoaXMuY2hpbGRyZW5baSArIDFdIDogbnVsbDtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgbGV0IHJlcyA9IFwiXCI7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlcyArPVxuICAgICAgICBpID09PSAwXG4gICAgICAgICAgPyB0aGlzLmluZGVudCArIHRoaXMuYnVsbGV0ICsgdGhpcy5zcGFjZUFmdGVyQnVsbGV0XG4gICAgICAgICAgOiB0aGlzLm5vdGVzSW5kZW50O1xuICAgICAgcmVzICs9IHRoaXMubGluZXNbaV07XG4gICAgICByZXMgKz0gXCJcXG5cIjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgIHJlcyArPSBjaGlsZC5wcmludCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJvb3Qge1xuICBwcml2YXRlIHJvb3RMaXN0ID0gbmV3IExpc3QodGhpcywgXCJcIiwgXCJcIiwgMCwgXCJcIiwgXCJcIiwgZmFsc2UpO1xuICBwcml2YXRlIHNlbGVjdGlvbnM6IFJhbmdlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0YXJ0OiBQb3NpdGlvbixcbiAgICBwcml2YXRlIGVuZDogUG9zaXRpb24sXG4gICAgc2VsZWN0aW9uczogUmFuZ2VbXVxuICApIHtcbiAgICB0aGlzLnJlcGxhY2VTZWxlY3Rpb25zKHNlbGVjdGlvbnMpO1xuICB9XG5cbiAgZ2V0Um9vdExpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMucm9vdExpc3Q7XG4gIH1cblxuICBnZXRSYW5nZSgpOiBbUG9zaXRpb24sIFBvc2l0aW9uXSB7XG4gICAgcmV0dXJuIFt7IC4uLnRoaXMuc3RhcnQgfSwgeyAuLi50aGlzLmVuZCB9XTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbnMoKTogUmFuZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9ucy5tYXAoKHMpID0+ICh7XG4gICAgICBhbmNob3I6IHsgLi4ucy5hbmNob3IgfSxcbiAgICAgIGhlYWQ6IHsgLi4ucy5oZWFkIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgaGFzU2luZ2xlQ3Vyc29yKCkge1xuICAgIGlmICghdGhpcy5oYXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uc1swXTtcblxuICAgIHJldHVybiAoXG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmxpbmUgPT09IHNlbGVjdGlvbi5oZWFkLmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbi5hbmNob3IuY2ggPT09IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgKTtcbiAgfVxuXG4gIGhhc1NpbmdsZVNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbigpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbnNbdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCAtIDFdO1xuXG4gICAgY29uc3QgZnJvbSA9XG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmNoID4gc2VsZWN0aW9uLmhlYWQuY2hcbiAgICAgICAgPyBzZWxlY3Rpb24uaGVhZC5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5hbmNob3IuY2g7XG4gICAgY29uc3QgdG8gPVxuICAgICAgc2VsZWN0aW9uLmFuY2hvci5jaCA+IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgICAgID8gc2VsZWN0aW9uLmFuY2hvci5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5oZWFkLmNoO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNlbGVjdGlvbixcbiAgICAgIGZyb20sXG4gICAgICB0byxcbiAgICB9O1xuICB9XG5cbiAgZ2V0Q3Vyc29yKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc2VsZWN0aW9uc1t0aGlzLnNlbGVjdGlvbnMubGVuZ3RoIC0gMV0uaGVhZCB9O1xuICB9XG5cbiAgcmVwbGFjZUN1cnNvcihjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gW3sgYW5jaG9yOiBjdXJzb3IsIGhlYWQ6IGN1cnNvciB9XTtcbiAgfVxuXG4gIHJlcGxhY2VTZWxlY3Rpb25zKHNlbGVjdGlvbnM6IFJhbmdlW10pIHtcbiAgICBpZiAoc2VsZWN0aW9ucy5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjcmVhdGUgUm9vdCB3aXRob3V0IHNlbGVjdGlvbnNgKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gc2VsZWN0aW9ucztcbiAgfVxuXG4gIGdldExpc3RVbmRlckN1cnNvcigpOiBMaXN0IHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0VW5kZXJMaW5lKHRoaXMuZ2V0Q3Vyc29yKCkubGluZSk7XG4gIH1cblxuICBnZXRMaXN0VW5kZXJMaW5lKGxpbmU6IG51bWJlcikge1xuICAgIGlmIChsaW5lIDwgdGhpcy5zdGFydC5saW5lIHx8IGxpbmUgPiB0aGlzLmVuZC5saW5lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogTGlzdCA9IG51bGw7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLnN0YXJ0LmxpbmU7XG5cbiAgICBjb25zdCB2aXNpdEFyciA9IChsbDogTGlzdFtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGwgb2YgbGwpIHtcbiAgICAgICAgY29uc3QgbGlzdEZyb21MaW5lID0gaW5kZXg7XG4gICAgICAgIGNvbnN0IGxpc3RUaWxsTGluZSA9IGxpc3RGcm9tTGluZSArIGwuZ2V0TGluZUNvdW50KCkgLSAxO1xuXG4gICAgICAgIGlmIChsaW5lID49IGxpc3RGcm9tTGluZSAmJiBsaW5lIDw9IGxpc3RUaWxsTGluZSkge1xuICAgICAgICAgIHJlc3VsdCA9IGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBsaXN0VGlsbExpbmUgKyAxO1xuICAgICAgICAgIHZpc2l0QXJyKGwuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2aXNpdEFycih0aGlzLnJvb3RMaXN0LmdldENoaWxkcmVuKCkpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdDogTGlzdCk6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgICBsZXQgcmVzdWx0OiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGxpbmU6IG51bWJlciA9IHRoaXMuc3RhcnQubGluZTtcblxuICAgIGNvbnN0IHZpc2l0QXJyID0gKGxsOiBMaXN0W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgbCBvZiBsbCkge1xuICAgICAgICBjb25zdCBsaXN0RnJvbUxpbmUgPSBsaW5lO1xuICAgICAgICBjb25zdCBsaXN0VGlsbExpbmUgPSBsaXN0RnJvbUxpbmUgKyBsLmdldExpbmVDb3VudCgpIC0gMTtcblxuICAgICAgICBpZiAobCA9PT0gbGlzdCkge1xuICAgICAgICAgIHJlc3VsdCA9IFtsaXN0RnJvbUxpbmUsIGxpc3RUaWxsTGluZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZSA9IGxpc3RUaWxsTGluZSArIDE7XG4gICAgICAgICAgdmlzaXRBcnIobC5nZXRDaGlsZHJlbigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXRBcnIodGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgbGV0IHJlcyA9IFwiXCI7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMucm9vdExpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5yZXBsYWNlKC9cXG4kLywgXCJcIik7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBMaXN0LCBQb3NpdGlvbiwgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3QvcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0c1wiO1xuaW1wb3J0IHsgaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3ggfSBmcm9tIFwiLi4vdXRpbHMvaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRab29tUmFuZ2Uge1xuICBnZXRab29tUmFuZ2UoKTogeyBmcm9tOiBQb3NpdGlvbjsgdG86IFBvc2l0aW9uIH0gfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlTmV3SXRlbU9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm9vdDogUm9vdCxcbiAgICBwcml2YXRlIGRlZmF1bHRJbmRlbnRDaGFyczogc3RyaW5nLFxuICAgIHByaXZhdGUgZ2V0Wm9vbVJhbmdlOiBHZXRab29tUmFuZ2VcbiAgKSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZVNlbGVjdGlvbigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gcm9vdC5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24uYW5jaG9yLmxpbmUgIT09IHNlbGVjdGlvbi5oZWFkLmxpbmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG5cbiAgICBpZiAobGluZXMubGVuZ3RoID09PSAxICYmIGlzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94KGxpbmVzWzBdLnRleHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lVW5kZXJDdXJzb3IgPSBsaW5lcy5maW5kKChsKSA9PiBsLmZyb20ubGluZSA9PT0gY3Vyc29yLmxpbmUpO1xuXG4gICAgaWYgKGN1cnNvci5jaCA8IGxpbmVVbmRlckN1cnNvci5mcm9tLmNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBvbGRMaW5lcywgbmV3TGluZXMgfSA9IGxpbmVzLnJlZHVjZShcbiAgICAgIChhY2MsIGxpbmUpID0+IHtcbiAgICAgICAgaWYgKGN1cnNvci5saW5lID4gbGluZS5mcm9tLmxpbmUpIHtcbiAgICAgICAgICBhY2Mub2xkTGluZXMucHVzaChsaW5lLnRleHQpO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnNvci5saW5lID09PSBsaW5lLmZyb20ubGluZSkge1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBsaW5lLnRleHQuc2xpY2UoMCwgc2VsZWN0aW9uLmZyb20gLSBsaW5lLmZyb20uY2gpO1xuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gbGluZS50ZXh0LnNsaWNlKHNlbGVjdGlvbi50byAtIGxpbmUuZnJvbS5jaCk7XG4gICAgICAgICAgYWNjLm9sZExpbmVzLnB1c2gobGVmdCk7XG4gICAgICAgICAgYWNjLm5ld0xpbmVzLnB1c2gocmlnaHQpO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnNvci5saW5lIDwgbGluZS5mcm9tLmxpbmUpIHtcbiAgICAgICAgICBhY2MubmV3TGluZXMucHVzaChsaW5lLnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9sZExpbmVzOiBbXSxcbiAgICAgICAgbmV3TGluZXM6IFtdLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBjb2RlQmxvY2tCYWN0aWNrcyA9IG9sZExpbmVzLmpvaW4oXCJcXG5cIikuc3BsaXQoXCJgYGBcIikubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBpc0luc2lkZUNvZGVibG9jayA9XG4gICAgICBjb2RlQmxvY2tCYWN0aWNrcyA+IDAgJiYgY29kZUJsb2NrQmFjdGlja3MgJSAyICE9PSAwO1xuXG4gICAgaWYgKGlzSW5zaWRlQ29kZWJsb2NrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCB6b29tUmFuZ2UgPSB0aGlzLmdldFpvb21SYW5nZS5nZXRab29tUmFuZ2UoKTtcbiAgICBjb25zdCBsaXN0SXNab29taW5nUm9vdCA9IEJvb2xlYW4oXG4gICAgICB6b29tUmFuZ2UgJiZcbiAgICAgICAgbGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lID49IHpvb21SYW5nZS5mcm9tLmxpbmUgJiZcbiAgICAgICAgbGlzdC5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKS5saW5lIDw9IHpvb21SYW5nZS5mcm9tLmxpbmVcbiAgICApO1xuXG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSAhbGlzdC5pc0VtcHR5KCk7XG4gICAgY29uc3QgY2hpbGRJc0ZvbGRlZCA9IGxpc3QuaXNGb2xkUm9vdCgpO1xuICAgIGNvbnN0IGVuZFBvcyA9IGxpc3QuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG4gICAgY29uc3QgZW5kT2ZMaW5lID0gY3Vyc29yLmxpbmUgPT09IGVuZFBvcy5saW5lICYmIGN1cnNvci5jaCA9PT0gZW5kUG9zLmNoO1xuXG4gICAgY29uc3Qgb25DaGlsZExldmVsID1cbiAgICAgIGxpc3RJc1pvb21pbmdSb290IHx8IChoYXNDaGlsZHJlbiAmJiAhY2hpbGRJc0ZvbGRlZCAmJiBlbmRPZkxpbmUpO1xuXG4gICAgY29uc3QgaW5kZW50ID0gb25DaGlsZExldmVsXG4gICAgICA/IGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIDogbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKSArIHRoaXMuZGVmYXVsdEluZGVudENoYXJzXG4gICAgICA6IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCk7XG5cbiAgICBjb25zdCBidWxsZXQgPVxuICAgICAgb25DaGlsZExldmVsICYmIGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldEJ1bGxldCgpXG4gICAgICAgIDogbGlzdC5nZXRCdWxsZXQoKTtcblxuICAgIGNvbnN0IHNwYWNlQWZ0ZXJCdWxsZXQgPVxuICAgICAgb25DaGlsZExldmVsICYmIGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldFNwYWNlQWZ0ZXJCdWxsZXQoKVxuICAgICAgICA6IGxpc3QuZ2V0U3BhY2VBZnRlckJ1bGxldCgpO1xuXG4gICAgY29uc3QgcHJlZml4ID0gb2xkTGluZXNbMF0ubWF0Y2goL15cXFsuXFxdLykgPyBcIlsgXSBcIiA6IFwiXCI7XG5cbiAgICBjb25zdCBuZXdMaXN0ID0gbmV3IExpc3QoXG4gICAgICBsaXN0LmdldFJvb3QoKSxcbiAgICAgIGluZGVudCxcbiAgICAgIGJ1bGxldCxcbiAgICAgIHByZWZpeC5sZW5ndGgsXG4gICAgICBzcGFjZUFmdGVyQnVsbGV0LFxuICAgICAgcHJlZml4ICsgbmV3TGluZXMuc2hpZnQoKSxcbiAgICAgIGZhbHNlXG4gICAgKTtcblxuICAgIGlmIChuZXdMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICBuZXdMaXN0LnNldE5vdGVzSW5kZW50KGxpc3QuZ2V0Tm90ZXNJbmRlbnQoKSk7XG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbmV3TGluZXMpIHtcbiAgICAgICAgbmV3TGlzdC5hZGRMaW5lKGxpbmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvbkNoaWxkTGV2ZWwpIHtcbiAgICAgIGxpc3QuYWRkQmVmb3JlQWxsKG5ld0xpc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNoaWxkSXNGb2xkZWQgfHwgIWVuZE9mTGluZSkge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGxpc3QuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgICAgIGxpc3QucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICAgICAgICAgIG5ld0xpc3QuYWRkQWZ0ZXJBbGwoY2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QuZ2V0UGFyZW50KCkuYWRkQWZ0ZXIobGlzdCwgbmV3TGlzdCk7XG4gICAgfVxuXG4gICAgbGlzdC5yZXBsYWNlTGluZXMob2xkTGluZXMpO1xuXG4gICAgY29uc3QgbmV3TGlzdFN0YXJ0ID0gbmV3TGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogbmV3TGlzdFN0YXJ0LmxpbmUsXG4gICAgICBjaDogbmV3TGlzdFN0YXJ0LmNoICsgcHJlZml4Lmxlbmd0aCxcbiAgICB9KTtcblxuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IFByZWMgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4uL2ZlYXR1cmVzL0ZlYXR1cmVcIjtcbmltcG9ydCB7IENyZWF0ZU5ld0l0ZW1PcGVyYXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9DcmVhdGVOZXdJdGVtT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBJTUVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRVNlcnZpY2VcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNlcnZpY2VcIjtcbmltcG9ydCB7IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1BlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBFbnRlclNob3VsZENyZWF0ZU5ld0l0ZW1GZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWU6IElNRVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBQcmVjLmhpZ2hlc3QoXG4gICAgICAgIGtleW1hcC5vZihbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIkVudGVyXCIsXG4gICAgICAgICAgICBydW46IHRoaXMub2JzaWRpYW4uY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjaGVjayA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5iZXR0ZXJFbnRlciAmJiAhdGhpcy5pbWUuaXNJTUVPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJ1biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3Qgem9vbVJhbmdlID0gZWRpdG9yLmdldFpvb21SYW5nZSgpO1xuXG4gICAgY29uc3QgcmVzID0gdGhpcy5wZXJmb3JtT3BlcmF0aW9uLnBlcmZvcm1PcGVyYXRpb24oXG4gICAgICAocm9vdCkgPT5cbiAgICAgICAgbmV3IENyZWF0ZU5ld0l0ZW1PcGVyYXRpb24oXG4gICAgICAgICAgcm9vdCxcbiAgICAgICAgICB0aGlzLm9ic2lkaWFuLmdldERlZmF1bHRJbmRlbnRDaGFycygpLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGdldFpvb21SYW5nZTogKCkgPT4gem9vbVJhbmdlLFxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgIGVkaXRvclxuICAgICk7XG5cbiAgICBpZiAocmVzLnNob3VsZFVwZGF0ZSAmJiB6b29tUmFuZ2UpIHtcbiAgICAgIGVkaXRvci56b29tSW4oem9vbVJhbmdlLmZyb20ubGluZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcbn1cbiIsImltcG9ydCB7IE5vdGljZSwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIEZvbGRGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMiwgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4uYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJmb2xkXCIsXG4gICAgICBpY29uOiBcImNoZXZyb25zLWRvd24tdXBcIixcbiAgICAgIG5hbWU6IFwiRm9sZCB0aGUgbGlzdFwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IHRoaXMub2JzaWRpYW4uY3JlYXRlRWRpdG9yQ2FsbGJhY2sodGhpcy5mb2xkKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCJdLFxuICAgICAgICAgIGtleTogXCJBcnJvd1VwXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4uYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJ1bmZvbGRcIixcbiAgICAgIGljb246IFwiY2hldnJvbnMtdXAtZG93blwiLFxuICAgICAgbmFtZTogXCJVbmZvbGQgdGhlIGxpc3RcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMudW5mb2xkKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCJdLFxuICAgICAgICAgIGtleTogXCJBcnJvd0Rvd25cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgc2V0Rm9sZChlZGl0b3I6IE15RWRpdG9yLCB0eXBlOiBcImZvbGRcIiB8IFwidW5mb2xkXCIpIHtcbiAgICBpZiAoIXRoaXMub2JzaWRpYW4uZ2V0T2JzaWRpYW5Gb2xkU2V0dGluZ3MoKS5mb2xkSW5kZW50KSB7XG4gICAgICBuZXcgTm90aWNlKFxuICAgICAgICBgVW5hYmxlIHRvICR7dHlwZX0gYmVjYXVzZSBmb2xkaW5nIGlzIGRpc2FibGVkLiBQbGVhc2UgZW5hYmxlIFwiRm9sZCBpbmRlbnRcIiBpbiBPYnNpZGlhbiBzZXR0aW5ncy5gLFxuICAgICAgICA1MDAwXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY3Vyc29yID0gZWRpdG9yLmdldEN1cnNvcigpO1xuXG4gICAgaWYgKHR5cGUgPT09IFwiZm9sZFwiKSB7XG4gICAgICBlZGl0b3IuZm9sZChjdXJzb3IubGluZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVkaXRvci51bmZvbGQoY3Vyc29yLmxpbmUpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2xkID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRGb2xkKGVkaXRvciwgXCJmb2xkXCIpO1xuICB9O1xuXG4gIHByaXZhdGUgdW5mb2xkID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRGb2xkKGVkaXRvciwgXCJ1bmZvbGRcIik7XG4gIH07XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbmltcG9ydCB7IEVkaXRvciB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQge1xuICBmb2xkRWZmZWN0LFxuICBmb2xkYWJsZSxcbiAgZm9sZGVkUmFuZ2VzLFxuICB1bmZvbGRFZmZlY3QsXG59IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHsgRWRpdG9yVmlldywgcnVuU2NvcGVIYW5kbGVycyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmV4cG9ydCBjbGFzcyBNeUVkaXRvclBvc2l0aW9uIHtcbiAgbGluZTogbnVtYmVyO1xuICBjaDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JSYW5nZSB7XG4gIGZyb206IE15RWRpdG9yUG9zaXRpb247XG4gIHRvOiBNeUVkaXRvclBvc2l0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JTZWxlY3Rpb24ge1xuICBhbmNob3I6IE15RWRpdG9yUG9zaXRpb247XG4gIGhlYWQ6IE15RWRpdG9yUG9zaXRpb247XG59XG5cbmZ1bmN0aW9uIGZvbGRJbnNpZGUodmlldzogRWRpdG9yVmlldywgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG4gIGxldCBmb3VuZDogeyBmcm9tOiBudW1iZXI7IHRvOiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xuICBmb2xkZWRSYW5nZXModmlldy5zdGF0ZSkuYmV0d2Vlbihmcm9tLCB0bywgKGZyb20sIHRvKSA9PiB7XG4gICAgaWYgKCFmb3VuZCB8fCBmb3VuZC5mcm9tID4gZnJvbSkgZm91bmQgPSB7IGZyb20sIHRvIH07XG4gIH0pO1xuICByZXR1cm4gZm91bmQ7XG59XG5cbmV4cG9ydCBjbGFzcyBNeUVkaXRvciB7XG4gIHByaXZhdGUgdmlldzogRWRpdG9yVmlldztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGU6IEVkaXRvcikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdGhpcy52aWV3ID0gKHRoaXMuZSBhcyBhbnkpLmNtO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKCk6IE15RWRpdG9yUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0Q3Vyc29yKCk7XG4gIH1cblxuICBnZXRMaW5lKG46IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZS5nZXRMaW5lKG4pO1xuICB9XG5cbiAgbGFzdExpbmUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5lLmxhc3RMaW5lKCk7XG4gIH1cblxuICBsaXN0U2VsZWN0aW9ucygpOiBNeUVkaXRvclNlbGVjdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5lLmxpc3RTZWxlY3Rpb25zKCk7XG4gIH1cblxuICBnZXRSYW5nZShmcm9tOiBNeUVkaXRvclBvc2l0aW9uLCB0bzogTXlFZGl0b3JQb3NpdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZS5nZXRSYW5nZShmcm9tLCB0byk7XG4gIH1cblxuICByZXBsYWNlUmFuZ2UoXG4gICAgcmVwbGFjZW1lbnQ6IHN0cmluZyxcbiAgICBmcm9tOiBNeUVkaXRvclBvc2l0aW9uLFxuICAgIHRvOiBNeUVkaXRvclBvc2l0aW9uXG4gICk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmUucmVwbGFjZVJhbmdlKHJlcGxhY2VtZW50LCBmcm9tLCB0byk7XG4gIH1cblxuICBzZXRTZWxlY3Rpb25zKHNlbGVjdGlvbnM6IE15RWRpdG9yU2VsZWN0aW9uW10pOiB2b2lkIHtcbiAgICB0aGlzLmUuc2V0U2VsZWN0aW9ucyhzZWxlY3Rpb25zKTtcbiAgfVxuXG4gIHNldFZhbHVlKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZS5zZXRWYWx1ZSh0ZXh0KTtcbiAgfVxuXG4gIGdldFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgb2Zmc2V0VG9Qb3Mob2Zmc2V0OiBudW1iZXIpOiBNeUVkaXRvclBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5lLm9mZnNldFRvUG9zKG9mZnNldCk7XG4gIH1cblxuICBwb3NUb09mZnNldChwb3M6IE15RWRpdG9yUG9zaXRpb24pOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmUucG9zVG9PZmZzZXQocG9zKTtcbiAgfVxuXG4gIGZvbGQobjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyB2aWV3IH0gPSB0aGlzO1xuICAgIGNvbnN0IGwgPSB2aWV3LmxpbmVCbG9ja0F0KHZpZXcuc3RhdGUuZG9jLmxpbmUobiArIDEpLmZyb20pO1xuICAgIGNvbnN0IHJhbmdlID0gZm9sZGFibGUodmlldy5zdGF0ZSwgbC5mcm9tLCBsLnRvKTtcblxuICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UuZnJvbSA9PT0gcmFuZ2UudG8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2aWV3LmRpc3BhdGNoKHsgZWZmZWN0czogW2ZvbGRFZmZlY3Qub2YocmFuZ2UpXSB9KTtcbiAgfVxuXG4gIHVuZm9sZChuOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7IHZpZXcgfSA9IHRoaXM7XG4gICAgY29uc3QgbCA9IHZpZXcubGluZUJsb2NrQXQodmlldy5zdGF0ZS5kb2MubGluZShuICsgMSkuZnJvbSk7XG4gICAgY29uc3QgcmFuZ2UgPSBmb2xkSW5zaWRlKHZpZXcsIGwuZnJvbSwgbC50byk7XG5cbiAgICBpZiAoIXJhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IFt1bmZvbGRFZmZlY3Qub2YocmFuZ2UpXSB9KTtcbiAgfVxuXG4gIGdldEFsbEZvbGRlZExpbmVzKCk6IG51bWJlcltdIHtcbiAgICBjb25zdCBjID0gZm9sZGVkUmFuZ2VzKHRoaXMudmlldy5zdGF0ZSkuaXRlcigpO1xuICAgIGNvbnN0IHJlczogbnVtYmVyW10gPSBbXTtcbiAgICB3aGlsZSAoYy52YWx1ZSkge1xuICAgICAgcmVzLnB1c2godGhpcy5vZmZzZXRUb1BvcyhjLmZyb20pLmxpbmUpO1xuICAgICAgYy5uZXh0KCk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICB0cmlnZ2VyT25LZXlEb3duKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBydW5TY29wZUhhbmRsZXJzKHRoaXMudmlldywgZSwgXCJlZGl0b3JcIik7XG4gIH1cblxuICBnZXRab29tUmFuZ2UoKTogTXlFZGl0b3JSYW5nZSB8IG51bGwge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY29uc3QgYXBpID0gKHdpbmRvdyBhcyBhbnkpLk9ic2lkaWFuWm9vbVBsdWdpbjtcblxuICAgIGlmICghYXBpIHx8ICFhcGkuZ2V0Wm9vbVJhbmdlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gYXBpLmdldFpvb21SYW5nZSh0aGlzLmUpO1xuICB9XG5cbiAgem9vbU91dCgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IGFwaSA9ICh3aW5kb3cgYXMgYW55KS5PYnNpZGlhblpvb21QbHVnaW47XG5cbiAgICBpZiAoIWFwaSB8fCAhYXBpLnpvb21PdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhcGkuem9vbU91dCh0aGlzLmUpO1xuICB9XG5cbiAgem9vbUluKGxpbmU6IG51bWJlcikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY29uc3QgYXBpID0gKHdpbmRvdyBhcyBhbnkpLk9ic2lkaWFuWm9vbVBsdWdpbjtcblxuICAgIGlmICghYXBpIHx8ICFhcGkuem9vbUluKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBpLnpvb21Jbih0aGlzLmUsIGxpbmUpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiwgZWRpdG9ySW5mb0ZpZWxkIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7XG4gIEVkaXRvclZpZXcsXG4gIFBsdWdpblZhbHVlLFxuICBWaWV3UGx1Z2luLFxuICBWaWV3VXBkYXRlLFxufSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgTGlzdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBPYnNpZGlhblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlXCI7XG5pbXBvcnQgeyBQYXJzZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1BhcnNlclNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuaW50ZXJmYWNlIExpbmVEYXRhIHtcbiAgdG9wOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbiAgaGVpZ2h0OiBzdHJpbmc7XG4gIGxpc3Q6IExpc3Q7XG59XG5cbmNsYXNzIExpc3RMaW5lc1ZpZXdQbHVnaW5WYWx1ZSBpbXBsZW1lbnRzIFBsdWdpblZhbHVlIHtcbiAgcHJpdmF0ZSBzY2hlZHVsZWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIHNjcm9sbGVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBjb250ZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBlZGl0b3I6IE15RWRpdG9yO1xuICBwcml2YXRlIGxhc3RMaW5lOiBudW1iZXI7XG4gIHByaXZhdGUgbGluZXM6IExpbmVEYXRhW107XG4gIHByaXZhdGUgbGluZUVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZSxcbiAgICBwcml2YXRlIHBhcnNlcjogUGFyc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHZpZXc6IEVkaXRvclZpZXdcbiAgKSB7XG4gICAgdGhpcy52aWV3LnNjcm9sbERPTS5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHRoaXMub25TY3JvbGwpO1xuICAgIHRoaXMuc2V0dGluZ3Mub25DaGFuZ2UoXCJsaXN0TGluZXNcIiwgdGhpcy5zY2hlZHVsZVJlY2FsY3VsYXRlKTtcblxuICAgIHRoaXMucHJlcGFyZURvbSgpO1xuICAgIHRoaXMud2FpdEZvckVkaXRvcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB3YWl0Rm9yRWRpdG9yID0gKCkgPT4ge1xuICAgIGNvbnN0IG9lID0gdGhpcy52aWV3LnN0YXRlLmZpZWxkKGVkaXRvckluZm9GaWVsZCkuZWRpdG9yO1xuICAgIGlmICghb2UpIHtcbiAgICAgIHNldFRpbWVvdXQodGhpcy53YWl0Rm9yRWRpdG9yLCAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lZGl0b3IgPSBuZXcgTXlFZGl0b3Iob2UpO1xuICAgIHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSgpO1xuICB9O1xuXG4gIHByaXZhdGUgcHJlcGFyZURvbSgpIHtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFxuICAgICAgXCJvdXRsaW5lci1wbHVnaW4tbGlzdC1saW5lcy1jb250ZW50LWNvbnRhaW5lclwiXG4gICAgKTtcblxuICAgIHRoaXMuc2Nyb2xsZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHRoaXMuc2Nyb2xsZXIuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1saXN0LWxpbmVzLXNjcm9sbGVyXCIpO1xuXG4gICAgdGhpcy5zY3JvbGxlci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRDb250YWluZXIpO1xuICAgIHRoaXMudmlldy5kb20uYXBwZW5kQ2hpbGQodGhpcy5zY3JvbGxlcik7XG4gIH1cblxuICBwcml2YXRlIG9uU2Nyb2xsID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxUb3AgfSA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMuc2Nyb2xsZXIuc2Nyb2xsVG8oc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wKTtcbiAgfTtcblxuICBwcml2YXRlIHNjaGVkdWxlUmVjYWxjdWxhdGUgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuc2NoZWR1bGVkKTtcbiAgICB0aGlzLnNjaGVkdWxlZCA9IHNldFRpbWVvdXQodGhpcy5jYWxjdWxhdGUsIDApO1xuICB9O1xuXG4gIHVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUpIHtcbiAgICBpZiAoXG4gICAgICB1cGRhdGUuZG9jQ2hhbmdlZCB8fFxuICAgICAgdXBkYXRlLnZpZXdwb3J0Q2hhbmdlZCB8fFxuICAgICAgdXBkYXRlLmdlb21ldHJ5Q2hhbmdlZCB8fFxuICAgICAgdXBkYXRlLnRyYW5zYWN0aW9ucy5zb21lKCh0cikgPT4gdHIucmVjb25maWd1cmVkKVxuICAgICkge1xuICAgICAgdGhpcy5zY2hlZHVsZVJlY2FsY3VsYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGUgPSAoKSA9PiB7XG4gICAgdGhpcy5saW5lcyA9IFtdO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zZXR0aW5ncy5saXN0TGluZXMgJiZcbiAgICAgIHRoaXMub2JzaWRpYW4uaXNEZWZhdWx0VGhlbWVFbmFibGVkKCkgJiZcbiAgICAgIHRoaXMudmlldy52aWV3cG9ydExpbmVCbG9ja3MubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy52aWV3LnZpc2libGVSYW5nZXMubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgY29uc3QgZnJvbUxpbmUgPSB0aGlzLmVkaXRvci5vZmZzZXRUb1Bvcyh0aGlzLnZpZXcudmlld3BvcnQuZnJvbSkubGluZTtcbiAgICAgIGNvbnN0IHRvTGluZSA9IHRoaXMuZWRpdG9yLm9mZnNldFRvUG9zKHRoaXMudmlldy52aWV3cG9ydC50bykubGluZTtcbiAgICAgIGNvbnN0IGxpc3RzID0gdGhpcy5wYXJzZXIucGFyc2VSYW5nZSh0aGlzLmVkaXRvciwgZnJvbUxpbmUsIHRvTGluZSk7XG5cbiAgICAgIGZvciAoY29uc3QgbGlzdCBvZiBsaXN0cykge1xuICAgICAgICB0aGlzLmxhc3RMaW5lID0gbGlzdC5nZXRSYW5nZSgpWzFdLmxpbmU7XG5cbiAgICAgICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgIHRoaXMucmVjdXJzaXZlKGMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGluZXMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgYS50b3AgPT09IGIudG9wID8gYS5sZWZ0IC0gYi5sZWZ0IDogYS50b3AgLSBiLnRvcFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURvbSgpO1xuICB9O1xuXG4gIHByaXZhdGUgZ2V0TmV4dFNpYmxpbmcobGlzdDogTGlzdCk6IExpc3QgfCBudWxsIHtcbiAgICBsZXQgbGlzdFRtcCA9IGxpc3Q7XG4gICAgbGV0IHAgPSBsaXN0VG1wLmdldFBhcmVudCgpO1xuICAgIHdoaWxlIChwKSB7XG4gICAgICBjb25zdCBuZXh0U2libGluZyA9IHAuZ2V0TmV4dFNpYmxpbmdPZihsaXN0VG1wKTtcbiAgICAgIGlmIChuZXh0U2libGluZykge1xuICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmc7XG4gICAgICB9XG4gICAgICBsaXN0VG1wID0gcDtcbiAgICAgIHAgPSBsaXN0VG1wLmdldFBhcmVudCgpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVjdXJzaXZlKGxpc3Q6IExpc3QsIHBhcmVudEN0eDogeyByb290TGVmdD86IG51bWJlciB9ID0ge30pIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGxpc3QuZ2V0Q2hpbGRyZW4oKTtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmcm9tT2Zmc2V0ID0gdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgbGluZTogbGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lLFxuICAgICAgY2g6IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoLFxuICAgIH0pO1xuICAgIGNvbnN0IG5leHRTaWJsaW5nID0gdGhpcy5nZXROZXh0U2libGluZyhsaXN0KTtcbiAgICBjb25zdCB0aWxsT2Zmc2V0ID0gdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgbGluZTogbmV4dFNpYmxpbmdcbiAgICAgICAgPyBuZXh0U2libGluZy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lIC0gMVxuICAgICAgICA6IHRoaXMubGFzdExpbmUsXG4gICAgICBjaDogMCxcbiAgICB9KTtcblxuICAgIGxldCB2aXNpYmxlRnJvbSA9IHRoaXMudmlldy52aXNpYmxlUmFuZ2VzWzBdLmZyb207XG4gICAgbGV0IHZpc2libGVUbyA9XG4gICAgICB0aGlzLnZpZXcudmlzaWJsZVJhbmdlc1t0aGlzLnZpZXcudmlzaWJsZVJhbmdlcy5sZW5ndGggLSAxXS50bztcbiAgICBjb25zdCB6b29tUmFuZ2UgPSB0aGlzLmVkaXRvci5nZXRab29tUmFuZ2UoKTtcbiAgICBpZiAoem9vbVJhbmdlKSB7XG4gICAgICB2aXNpYmxlRnJvbSA9IE1hdGgubWF4KFxuICAgICAgICB2aXNpYmxlRnJvbSxcbiAgICAgICAgdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoem9vbVJhbmdlLmZyb20pXG4gICAgICApO1xuICAgICAgdmlzaWJsZVRvID0gTWF0aC5taW4odmlzaWJsZVRvLCB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh6b29tUmFuZ2UudG8pKTtcbiAgICB9XG5cbiAgICBpZiAoZnJvbU9mZnNldCA+IHZpc2libGVUbyB8fCB0aWxsT2Zmc2V0IDwgdmlzaWJsZUZyb20pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb29yZHMgPSB0aGlzLnZpZXcuY29vcmRzQXRQb3MoZnJvbU9mZnNldCwgMSk7XG4gICAgaWYgKHBhcmVudEN0eC5yb290TGVmdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJlbnRDdHgucm9vdExlZnQgPSBjb29yZHMubGVmdDtcbiAgICB9XG4gICAgY29uc3QgbGVmdCA9IE1hdGguZmxvb3IoY29vcmRzLnJpZ2h0IC0gcGFyZW50Q3R4LnJvb3RMZWZ0KTtcblxuICAgIGNvbnN0IHRvcCA9XG4gICAgICB2aXNpYmxlRnJvbSA+IDAgJiYgZnJvbU9mZnNldCA8IHZpc2libGVGcm9tXG4gICAgICAgID8gLTIwXG4gICAgICAgIDogdGhpcy52aWV3LmxpbmVCbG9ja0F0KGZyb21PZmZzZXQpLnRvcDtcbiAgICBjb25zdCBib3R0b20gPVxuICAgICAgdGlsbE9mZnNldCA+IHZpc2libGVUb1xuICAgICAgICA/IHRoaXMudmlldy5saW5lQmxvY2tBdCh2aXNpYmxlVG8gLSAxKS5ib3R0b21cbiAgICAgICAgOiB0aGlzLnZpZXcubGluZUJsb2NrQXQodGlsbE9mZnNldCkuYm90dG9tO1xuICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcblxuICAgIGlmIChoZWlnaHQgPiAwICYmICFsaXN0LmlzRm9sZGVkKCkpIHtcbiAgICAgIGNvbnN0IG5leHRTaWJsaW5nID0gbGlzdC5nZXRQYXJlbnQoKS5nZXROZXh0U2libGluZ09mKGxpc3QpO1xuICAgICAgY29uc3QgaGFzTmV4dFNpYmxpbmcgPVxuICAgICAgICAhIW5leHRTaWJsaW5nICYmXG4gICAgICAgIHRoaXMuZWRpdG9yLnBvc1RvT2Zmc2V0KG5leHRTaWJsaW5nLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpKSA8PVxuICAgICAgICAgIHZpc2libGVUbztcblxuICAgICAgdGhpcy5saW5lcy5wdXNoKHtcbiAgICAgICAgdG9wLFxuICAgICAgICBsZWZ0LFxuICAgICAgICBoZWlnaHQ6IGBjYWxjKCR7aGVpZ2h0fXB4ICR7aGFzTmV4dFNpYmxpbmcgPyBcIi0gMS41ZW1cIiA6IFwiLSAyZW1cIn0pYCxcbiAgICAgICAgbGlzdCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGlmICghY2hpbGQuaXNFbXB0eSgpKSB7XG4gICAgICAgIHRoaXMucmVjdXJzaXZlKGNoaWxkLCBwYXJlbnRDdHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25DbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgbGluZSA9IHRoaXMubGluZXNbTnVtYmVyKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZGF0YXNldC5pbmRleCldO1xuXG4gICAgc3dpdGNoICh0aGlzLnNldHRpbmdzLmxpc3RMaW5lQWN0aW9uKSB7XG4gICAgICBjYXNlIFwiem9vbS1pblwiOlxuICAgICAgICB0aGlzLnpvb21JbihsaW5lKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJ0b2dnbGUtZm9sZGluZ1wiOlxuICAgICAgICB0aGlzLnRvZ2dsZUZvbGRpbmcobGluZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHpvb21JbihsaW5lOiBMaW5lRGF0YSkge1xuICAgIGNvbnN0IGVkaXRvciA9IG5ldyBNeUVkaXRvcih0aGlzLnZpZXcuc3RhdGUuZmllbGQoZWRpdG9ySW5mb0ZpZWxkKS5lZGl0b3IpO1xuXG4gICAgZWRpdG9yLnpvb21JbihsaW5lLmxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUZvbGRpbmcobGluZTogTGluZURhdGEpIHtcbiAgICBjb25zdCB7IGxpc3QgfSA9IGxpbmU7XG5cbiAgICBpZiAobGlzdC5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbmVlZFRvVW5mb2xkID0gdHJ1ZTtcbiAgICBjb25zdCBsaW5lc1RvVG9nZ2xlOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgYyBvZiBsaXN0LmdldENoaWxkcmVuKCkpIHtcbiAgICAgIGlmIChjLmlzRW1wdHkoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICghYy5pc0ZvbGRlZCgpKSB7XG4gICAgICAgIG5lZWRUb1VuZm9sZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgbGluZXNUb1RvZ2dsZS5wdXNoKGMuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZWRpdG9yID0gbmV3IE15RWRpdG9yKHRoaXMudmlldy5zdGF0ZS5maWVsZChlZGl0b3JJbmZvRmllbGQpLmVkaXRvcik7XG5cbiAgICBmb3IgKGNvbnN0IGwgb2YgbGluZXNUb1RvZ2dsZSkge1xuICAgICAgaWYgKG5lZWRUb1VuZm9sZCkge1xuICAgICAgICBlZGl0b3IudW5mb2xkKGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWRpdG9yLmZvbGQobCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEb20oKSB7XG4gICAgY29uc3QgY21TY3JvbGwgPSB0aGlzLnZpZXcuc2Nyb2xsRE9NO1xuICAgIGNvbnN0IGNtQ29udGVudCA9IHRoaXMudmlldy5jb250ZW50RE9NO1xuICAgIGNvbnN0IGNtQ29udGVudENvbnRhaW5lciA9IGNtQ29udGVudC5wYXJlbnRFbGVtZW50O1xuICAgIGNvbnN0IGNtU2l6ZXIgPSBjbUNvbnRlbnRDb250YWluZXIucGFyZW50RWxlbWVudDtcblxuICAgIC8qKlxuICAgICAqIE9ic2lkaWFuIGNhbiBhZGQgYWRkaXRpb25hbCBlbGVtZW50cyBpbnRvIENvbnRlbnQgTWFuYWdlci5cbiAgICAgKiBUaGUgbW9zdCBvYnZpb3VzIGNhc2UgaXMgdGhlICdlbWJlZGRlZC1iYWNrbGlua3MnIGNvcmUgcGx1Z2luIHRoYXQgYWRkcyBhIG1lbnUgaW5zaWRlIGEgQ29udGVudCBNYW5hZ2VyLlxuICAgICAqIFdlIG11c3QgdGFrZSBoZWlnaHRzIG9mIGFsbCBvZiB0aGVzZSBlbGVtZW50cyBpbnRvIGFjY291bnRcbiAgICAgKiB0byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSB0aGUgY29ycmVjdCBzaXplIG9mIGxpbmVzJyBjb250YWluZXIuXG4gICAgICovXG4gICAgbGV0IGNtU2l6ZXJDaGlsZHJlblN1bUhlaWdodCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbVNpemVyLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjbVNpemVyQ2hpbGRyZW5TdW1IZWlnaHQgKz0gY21TaXplci5jaGlsZHJlbltpXS5jbGllbnRIZWlnaHQ7XG4gICAgfVxuXG4gICAgdGhpcy5zY3JvbGxlci5zdHlsZS50b3AgPSBjbVNjcm9sbC5vZmZzZXRUb3AgKyBcInB4XCI7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyLnN0eWxlLmhlaWdodCA9IGNtU2l6ZXJDaGlsZHJlblN1bUhlaWdodCArIFwicHhcIjtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuc3R5bGUubWFyZ2luTGVmdCA9XG4gICAgICBjbUNvbnRlbnRDb250YWluZXIub2Zmc2V0TGVmdCArIFwicHhcIjtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuc3R5bGUubWFyZ2luVG9wID1cbiAgICAgIChjbUNvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQpLm9mZnNldFRvcCAtIDI0ICsgXCJweFwiO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5saW5lRWxlbWVudHMubGVuZ3RoID09PSBpKSB7XG4gICAgICAgIGNvbnN0IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBlLmNsYXNzTGlzdC5hZGQoXCJvdXRsaW5lci1wbHVnaW4tbGlzdC1saW5lXCIpO1xuICAgICAgICBlLmRhdGFzZXQuaW5kZXggPSBTdHJpbmcoaSk7XG4gICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLm9uQ2xpY2spO1xuICAgICAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuYXBwZW5kQ2hpbGQoZSk7XG4gICAgICAgIHRoaXMubGluZUVsZW1lbnRzLnB1c2goZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGwgPSB0aGlzLmxpbmVzW2ldO1xuICAgICAgY29uc3QgZSA9IHRoaXMubGluZUVsZW1lbnRzW2ldO1xuICAgICAgZS5zdHlsZS50b3AgPSBsLnRvcCArIFwicHhcIjtcbiAgICAgIGUuc3R5bGUubGVmdCA9IGwubGVmdCArIFwicHhcIjtcbiAgICAgIGUuc3R5bGUuaGVpZ2h0ID0gbC5oZWlnaHQ7XG4gICAgICBlLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IHRoaXMubGluZXMubGVuZ3RoOyBpIDwgdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGUgPSB0aGlzLmxpbmVFbGVtZW50c1tpXTtcbiAgICAgIGUuc3R5bGUudG9wID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUubGVmdCA9IFwiMHB4XCI7XG4gICAgICBlLnN0eWxlLmhlaWdodCA9IFwiMHB4XCI7XG4gICAgICBlLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuc2V0dGluZ3MucmVtb3ZlQ2FsbGJhY2soXCJsaXN0TGluZXNcIiwgdGhpcy5zY2hlZHVsZVJlY2FsY3VsYXRlKTtcbiAgICB0aGlzLnZpZXcuc2Nyb2xsRE9NLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5vblNjcm9sbCk7XG4gICAgdGhpcy52aWV3LmRvbS5yZW1vdmVDaGlsZCh0aGlzLnNjcm9sbGVyKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5zY2hlZHVsZWQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5lc0ZlYXR1cmUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIG9ic2lkaWFuOiBPYnNpZGlhblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlclNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBWaWV3UGx1Z2luLmRlZmluZShcbiAgICAgICAgKHZpZXcpID0+XG4gICAgICAgICAgbmV3IExpc3RMaW5lc1ZpZXdQbHVnaW5WYWx1ZShcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgICAgICB0aGlzLm9ic2lkaWFuLFxuICAgICAgICAgICAgdGhpcy5wYXJzZXIsXG4gICAgICAgICAgICB2aWV3XG4gICAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxufVxuIiwiaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzU2VydmljZVwiO1xuXG5jb25zdCBCRVRURVJfTElTVFNfQ0xBU1MgPSBcIm91dGxpbmVyLXBsdWdpbi1iZXR0ZXItbGlzdHNcIjtcbmNvbnN0IEJFVFRFUl9CVUxMRVRTX0NMQVNTID0gXCJvdXRsaW5lci1wbHVnaW4tYmV0dGVyLWJ1bGxldHNcIjtcbmNvbnN0IFZFUlRJQ0FMX0xJTkVTID0gXCJvdXRsaW5lci1wbHVnaW4tdmVydGljYWwtbGluZXNcIjtcbmNvbnN0IEtOT1dOX0NMQVNTRVMgPSBbXG4gIEJFVFRFUl9MSVNUU19DTEFTUyxcbiAgQkVUVEVSX0JVTExFVFNfQ0xBU1MsXG4gIFZFUlRJQ0FMX0xJTkVTLFxuXTtcblxuZXhwb3J0IGNsYXNzIExpc3RzU3R5bGVzRmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBwcml2YXRlIGludGVydmFsOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnN5bmNMaXN0c1N0eWxlcygpO1xuICAgIHRoaXMuaW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5zeW5jTGlzdHNTdHlsZXMoKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuICAgIHRoaXMuYXBwbHlMaXN0c1N0eWxlcyhbXSk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNMaXN0c1N0eWxlcyA9ICgpID0+IHtcbiAgICBjb25zdCBjbGFzc2VzID0gW107XG5cbiAgICBpZiAodGhpcy5vYnNpZGlhbi5pc0RlZmF1bHRUaGVtZUVuYWJsZWQoKSkge1xuICAgICAgaWYgKHRoaXMuc2V0dGluZ3Muc3R5bGVMaXN0cykge1xuICAgICAgICBjbGFzc2VzLnB1c2goQkVUVEVSX0xJU1RTX0NMQVNTKTtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKEJFVFRFUl9CVUxMRVRTX0NMQVNTKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc2V0dGluZ3MubGlzdExpbmVzKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChWRVJUSUNBTF9MSU5FUyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hcHBseUxpc3RzU3R5bGVzKGNsYXNzZXMpO1xuICB9O1xuXG4gIHByaXZhdGUgYXBwbHlMaXN0c1N0eWxlcyhjbGFzc2VzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHRvS2VlcCA9IGNsYXNzZXMuZmlsdGVyKChjKSA9PiBLTk9XTl9DTEFTU0VTLmNvbnRhaW5zKGMpKTtcbiAgICBjb25zdCB0b1JlbW92ZSA9IEtOT1dOX0NMQVNTRVMuZmlsdGVyKChjKSA9PiAhdG9LZWVwLmNvbnRhaW5zKGMpKTtcblxuICAgIGZvciAoY29uc3QgYyBvZiB0b0tlZXApIHtcbiAgICAgIGlmICghZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoYykpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKGMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgYyBvZiB0b1JlbW92ZSkge1xuICAgICAgaWYgKGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKGMpKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShjKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBMaXN0TGluZSwgUG9zaXRpb24sIFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVPcGVyYXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gdGhpcy5yb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KFxuICAgICAgKGwpID0+XG4gICAgICAgIGN1cnNvci5jaCA9PT0gbC5mcm9tLmNoICsgbGlzdC5nZXRDaGVja2JveExlbmd0aCgpICYmXG4gICAgICAgIGN1cnNvci5saW5lID09PSBsLmZyb20ubGluZVxuICAgICk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRJdGVtKHJvb3QsIGN1cnNvcik7XG4gICAgfSBlbHNlIGlmIChsaW5lTm8gPiAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzTm90ZUxpbmUocm9vdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c05vdGVMaW5lKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgbGluZXM6IExpc3RMaW5lW10sXG4gICAgbGluZU5vOiBudW1iZXJcbiAgKSB7XG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vIC0gMV0udG8pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkSXRlbShyb290OiBSb290LCBjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBpZiAocHJldi5pc0ZvbGRlZCgpKSB7XG4gICAgICBjb25zdCBmb2xkUm9vdCA9IHByZXYuZ2V0VG9wRm9sZFJvb3QoKTtcbiAgICAgIGNvbnN0IGZpcnN0TGluZUVuZCA9IGZvbGRSb290LmdldExpbmVzSW5mbygpWzBdLnRvO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGZpcnN0TGluZUVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihwcmV2LmdldExhc3RMaW5lQ29udGVudEVuZCgpKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL015RWRpdG9yXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4uL2ZlYXR1cmVzL0ZlYXR1cmVcIjtcbmltcG9ydCB7IE1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVPcGVyYXRpb25cIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIE1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lRmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1lOiBJTUVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb2JzaWRpYW46IE9ic2lkaWFuU2VydmljZSxcbiAgICBwcml2YXRlIHBlcmZvcm1PcGVyYXRpb246IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJBcnJvd0xlZnRcIixcbiAgICAgICAgICBydW46IHRoaXMub2JzaWRpYW4uY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgd2luOiBcImMtQXJyb3dMZWZ0XCIsXG4gICAgICAgICAgbGludXg6IFwiYy1BcnJvd0xlZnRcIixcbiAgICAgICAgICBydW46IHRoaXMub2JzaWRpYW4uY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnN0aWNrQ3Vyc29yICYmICF0aGlzLmltZS5pc0lNRU9wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5wZXJmb3JtT3BlcmF0aW9uLnBlcmZvcm1PcGVyYXRpb24oXG4gICAgICAocm9vdCkgPT4gbmV3IE1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lT3BlcmF0aW9uKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdC9yZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzXCI7XG5cbmV4cG9ydCBjbGFzcyBNb3ZlRG93bk9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgbmV4dCA9IHBhcmVudC5nZXROZXh0U2libGluZ09mKGxpc3QpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcblxuICAgIGlmICghbmV4dCAmJiBncmFuZFBhcmVudCkge1xuICAgICAgY29uc3QgbmV3UGFyZW50ID0gZ3JhbmRQYXJlbnQuZ2V0TmV4dFNpYmxpbmdPZihwYXJlbnQpO1xuXG4gICAgICBpZiAobmV3UGFyZW50KSB7XG4gICAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG4gICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgICAgbmV3UGFyZW50LmFkZEJlZm9yZUFsbChsaXN0KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHQpIHtcbiAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgICBwYXJlbnQuYWRkQWZ0ZXIobmV4dCwgbGlzdCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnVwZGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQWZ0ZXIgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgbGluZURpZmYgPSBsaXN0U3RhcnRMaW5lQWZ0ZXIgLSBsaXN0U3RhcnRMaW5lQmVmb3JlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2gsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3QvcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0c1wiO1xuXG5leHBvcnQgY2xhc3MgTW92ZVJpZ2h0T3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290LCBwcml2YXRlIGRlZmF1bHRJbmRlbnRDaGFyczogc3RyaW5nKSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBwcmV2ID0gcGFyZW50LmdldFByZXZTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBpZiAoIXByZXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcblxuICAgIGNvbnN0IGluZGVudFBvcyA9IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoO1xuICAgIGxldCBpbmRlbnRDaGFycyA9IFwiXCI7XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIXByZXYuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IHByZXZcbiAgICAgICAgLmdldENoaWxkcmVuKClbMF1cbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwcmV2LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKGluZGVudENoYXJzID09PSBcIlwiKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3RcbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwYXJlbnQuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIWxpc3QuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3QuZ2V0Q2hpbGRyZW4oKVswXS5nZXRGaXJzdExpbmVJbmRlbnQoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIpIHtcbiAgICAgIGluZGVudENoYXJzID0gdGhpcy5kZWZhdWx0SW5kZW50Q2hhcnM7XG4gICAgfVxuXG4gICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgIHByZXYuYWRkQWZ0ZXJBbGwobGlzdCk7XG4gICAgbGlzdC5pbmRlbnRDb250ZW50KGluZGVudFBvcywgaW5kZW50Q2hhcnMpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoICsgaW5kZW50Q2hhcnMubGVuZ3RoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290L3JlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHNcIjtcblxuZXhwb3J0IGNsYXNzIE1vdmVVcE9wZXJhdGlvbiBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgcHJldiA9IHBhcmVudC5nZXRQcmV2U2libGluZ09mKGxpc3QpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcblxuICAgIGlmICghcHJldiAmJiBncmFuZFBhcmVudCkge1xuICAgICAgY29uc3QgbmV3UGFyZW50ID0gZ3JhbmRQYXJlbnQuZ2V0UHJldlNpYmxpbmdPZihwYXJlbnQpO1xuXG4gICAgICBpZiAobmV3UGFyZW50KSB7XG4gICAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG4gICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgICAgbmV3UGFyZW50LmFkZEFmdGVyQWxsKGxpc3QpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJldikge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgIHBhcmVudC5hZGRCZWZvcmUocHJldiwgbGlzdCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnVwZGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQWZ0ZXIgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgbGluZURpZmYgPSBsaXN0U3RhcnRMaW5lQWZ0ZXIgLSBsaXN0U3RhcnRMaW5lQmVmb3JlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2gsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuLi9mZWF0dXJlcy9GZWF0dXJlXCI7XG5pbXBvcnQgeyBNb3ZlRG93bk9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL01vdmVEb3duT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBNb3ZlTGVmdE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL01vdmVMZWZ0T3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBNb3ZlUmlnaHRPcGVyYXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlUmlnaHRPcGVyYXRpb25cIjtcbmltcG9ydCB7IE1vdmVVcE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL01vdmVVcE9wZXJhdGlvblwiO1xuaW1wb3J0IHsgSU1FU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVTZXJ2aWNlXCI7XG5pbXBvcnQgeyBPYnNpZGlhblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlXCI7XG5pbXBvcnQgeyBQZXJmb3JtT3BlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QZXJmb3JtT3BlcmF0aW9uU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzU2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUl0ZW1zRmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBpbWU6IElNRVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIHBlcmZvcm1PcGVyYXRpb246IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwibW92ZS1saXN0LWl0ZW0tdXBcIixcbiAgICAgIGljb246IFwiYXJyb3ctdXBcIixcbiAgICAgIG5hbWU6IFwiTW92ZSBsaXN0IGFuZCBzdWJsaXN0cyB1cFwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IHRoaXMub2JzaWRpYW4uY3JlYXRlRWRpdG9yQ2FsbGJhY2soXG4gICAgICAgIHRoaXMubW92ZUxpc3RFbGVtZW50VXBDb21tYW5kXG4gICAgICApLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiXSxcbiAgICAgICAgICBrZXk6IFwiQXJyb3dVcFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwibW92ZS1saXN0LWl0ZW0tZG93blwiLFxuICAgICAgaWNvbjogXCJhcnJvdy1kb3duXCIsXG4gICAgICBuYW1lOiBcIk1vdmUgbGlzdCBhbmQgc3VibGlzdHMgZG93blwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IHRoaXMub2JzaWRpYW4uY3JlYXRlRWRpdG9yQ2FsbGJhY2soXG4gICAgICAgIHRoaXMubW92ZUxpc3RFbGVtZW50RG93bkNvbW1hbmRcbiAgICAgICksXG4gICAgICBob3RrZXlzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RpZmllcnM6IFtcIk1vZFwiLCBcIlNoaWZ0XCJdLFxuICAgICAgICAgIGtleTogXCJBcnJvd0Rvd25cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcImluZGVudC1saXN0XCIsXG4gICAgICBpY29uOiBcImluZGVudFwiLFxuICAgICAgbmFtZTogXCJJbmRlbnQgdGhlIGxpc3QgYW5kIHN1Ymxpc3RzXCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogdGhpcy5vYnNpZGlhbi5jcmVhdGVFZGl0b3JDYWxsYmFjayhcbiAgICAgICAgdGhpcy5tb3ZlTGlzdEVsZW1lbnRSaWdodENvbW1hbmRcbiAgICAgICksXG4gICAgICBob3RrZXlzOiBbXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwib3V0ZGVudC1saXN0XCIsXG4gICAgICBpY29uOiBcIm91dGRlbnRcIixcbiAgICAgIG5hbWU6IFwiT3V0ZGVudCB0aGUgbGlzdCBhbmQgc3VibGlzdHNcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUVkaXRvckNhbGxiYWNrKFxuICAgICAgICB0aGlzLm1vdmVMaXN0RWxlbWVudExlZnRDb21tYW5kXG4gICAgICApLFxuICAgICAgaG90a2V5czogW10sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiVGFiXCIsXG4gICAgICAgICAgICBydW46IHRoaXMub2JzaWRpYW4uY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgICAgcnVuOiB0aGlzLm1vdmVMaXN0RWxlbWVudFJpZ2h0LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwicy1UYWJcIixcbiAgICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgICBydW46IHRoaXMubW92ZUxpc3RFbGVtZW50TGVmdCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjaGVjayA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5iZXR0ZXJUYWIgJiYgIXRoaXMuaW1lLmlzSU1FT3BlbmVkKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBtb3ZlTGlzdEVsZW1lbnREb3duQ29tbWFuZCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3QgeyBzaG91bGRTdG9wUHJvcGFnYXRpb24gfSA9IHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlRG93bk9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG5cbiAgICByZXR1cm4gc2hvdWxkU3RvcFByb3BhZ2F0aW9uO1xuICB9O1xuXG4gIHByaXZhdGUgbW92ZUxpc3RFbGVtZW50VXBDb21tYW5kID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCB7IHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gdGhpcy5wZXJmb3JtT3BlcmF0aW9uLnBlcmZvcm1PcGVyYXRpb24oXG4gICAgICAocm9vdCkgPT4gbmV3IE1vdmVVcE9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG5cbiAgICByZXR1cm4gc2hvdWxkU3RvcFByb3BhZ2F0aW9uO1xuICB9O1xuXG4gIHByaXZhdGUgbW92ZUxpc3RFbGVtZW50UmlnaHRDb21tYW5kID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBpZiAodGhpcy5pbWUuaXNJTUVPcGVuZWQoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubW92ZUxpc3RFbGVtZW50UmlnaHQoZWRpdG9yKS5zaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBtb3ZlTGlzdEVsZW1lbnRSaWdodCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+XG4gICAgICAgIG5ldyBNb3ZlUmlnaHRPcGVyYXRpb24ocm9vdCwgdGhpcy5vYnNpZGlhbi5nZXREZWZhdWx0SW5kZW50Q2hhcnMoKSksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgbW92ZUxpc3RFbGVtZW50TGVmdENvbW1hbmQgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGlmICh0aGlzLmltZS5pc0lNRU9wZW5lZCgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tb3ZlTGlzdEVsZW1lbnRMZWZ0KGVkaXRvcikuc2hvdWxkU3RvcFByb3BhZ2F0aW9uO1xuICB9O1xuXG4gIHByaXZhdGUgbW92ZUxpc3RFbGVtZW50TGVmdCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlTGVmdE9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCwgbWF4UG9zLCBtaW5Qb3MgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgU2VsZWN0QWxsT3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZVNlbGVjdGlvbigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gcm9vdC5nZXRTZWxlY3Rpb25zKClbMF07XG4gICAgY29uc3QgW3Jvb3RTdGFydCwgcm9vdEVuZF0gPSByb290LmdldFJhbmdlKCk7XG5cbiAgICBjb25zdCBzZWxlY3Rpb25Gcm9tID0gbWluUG9zKHNlbGVjdGlvbi5hbmNob3IsIHNlbGVjdGlvbi5oZWFkKTtcbiAgICBjb25zdCBzZWxlY3Rpb25UbyA9IG1heFBvcyhzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uaGVhZCk7XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3Rpb25Gcm9tLmxpbmUgPCByb290U3RhcnQubGluZSB8fFxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA+IHJvb3RFbmQubGluZVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA9PT0gcm9vdFN0YXJ0LmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbkZyb20uY2ggPT09IHJvb3RTdGFydC5jaCAmJlxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA9PT0gcm9vdEVuZC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Uby5jaCA9PT0gcm9vdEVuZC5jaFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGNvbnRlbnRTdGFydCA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG4gICAgY29uc3QgY29udGVudEVuZCA9IGxpc3QuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3Rpb25Gcm9tLmxpbmUgPCBjb250ZW50U3RhcnQubGluZSB8fFxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA+IGNvbnRlbnRFbmQubGluZVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uRnJvbS5saW5lID09PSBjb250ZW50U3RhcnQubGluZSAmJlxuICAgICAgc2VsZWN0aW9uRnJvbS5jaCA9PT0gY29udGVudFN0YXJ0LmNoICYmXG4gICAgICBzZWxlY3Rpb25Uby5saW5lID09PSBjb250ZW50RW5kLmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvblRvLmNoID09PSBjb250ZW50RW5kLmNoXG4gICAgKSB7XG4gICAgICAvLyBzZWxlY3QgYWxsIGxpc3RcbiAgICAgIHJvb3QucmVwbGFjZVNlbGVjdGlvbnMoW3sgYW5jaG9yOiByb290U3RhcnQsIGhlYWQ6IHJvb3RFbmQgfV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzZWxlY3QgYWxsIGxpbmVcbiAgICAgIHJvb3QucmVwbGFjZVNlbGVjdGlvbnMoW3sgYW5jaG9yOiBjb250ZW50U3RhcnQsIGhlYWQ6IGNvbnRlbnRFbmQgfV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuLi9mZWF0dXJlcy9GZWF0dXJlXCI7XG5pbXBvcnQgeyBTZWxlY3RBbGxPcGVyYXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9TZWxlY3RBbGxPcGVyYXRpb25cIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdEFsbEZlYXR1cmUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGltZTogSU1FU2VydmljZSxcbiAgICBwcml2YXRlIG9ic2lkaWFuOiBPYnNpZGlhblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJmb3JtT3BlcmF0aW9uOiBQZXJmb3JtT3BlcmF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIGtleW1hcC5vZihbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiYy1hXCIsXG4gICAgICAgICAgbWFjOiBcIm0tYVwiLFxuICAgICAgICAgIHJ1bjogdGhpcy5vYnNpZGlhbi5jcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc2VsZWN0QWxsICYmICF0aGlzLmltZS5pc0lNRU9wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5wZXJmb3JtT3BlcmF0aW9uLnBlcmZvcm1PcGVyYXRpb24oXG4gICAgICAocm9vdCkgPT4gbmV3IFNlbGVjdEFsbE9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3RUaWxsTGluZVN0YXJ0T3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcbiAgICBjb25zdCBsaW5lTm8gPSBsaW5lcy5maW5kSW5kZXgoKGwpID0+IGwuZnJvbS5saW5lID09PSBjdXJzb3IubGluZSk7XG5cbiAgICByb290LnJlcGxhY2VTZWxlY3Rpb25zKFt7IGhlYWQ6IGxpbmVzW2xpbmVOb10uZnJvbSwgYW5jaG9yOiBjdXJzb3IgfV0pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgU2VsZWN0VGlsbExpbmVTdGFydE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL1NlbGVjdFRpbGxMaW5lU3RhcnRPcGVyYXRpb25cIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvblNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWU6IElNRVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcIm0tcy1BcnJvd0xlZnRcIixcbiAgICAgICAgICBydW46IHRoaXMub2JzaWRpYW4uY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnN0aWNrQ3Vyc29yICYmICF0aGlzLmltZS5pc0lNRU9wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5wZXJmb3JtT3BlcmF0aW9uLnBlcmZvcm1PcGVyYXRpb24oXG4gICAgICAocm9vdCkgPT4gbmV3IFNlbGVjdFRpbGxMaW5lU3RhcnRPcGVyYXRpb24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgQXBwLCBQbHVnaW5TZXR0aW5nVGFiLCBQbHVnaW5fMiwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBMaXN0TGluZUFjdGlvbiwgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzU2VydmljZVwiO1xuXG5jbGFzcyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBQbHVnaW5fMiwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlKSB7XG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xuICB9XG5cbiAgZGlzcGxheSgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNvbnRhaW5lckVsIH0gPSB0aGlzO1xuXG4gICAgY29udGFpbmVyRWwuZW1wdHkoKTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJJbXByb3ZlIHRoZSBzdHlsZSBvZiB5b3VyIGxpc3RzXCIpXG4gICAgICAuc2V0RGVzYyhcbiAgICAgICAgXCJTdHlsZXMgYXJlIG9ubHkgY29tcGF0aWJsZSB3aXRoIGJ1aWx0LWluIE9ic2lkaWFuIHRoZW1lcyBhbmQgbWF5IG5vdCBiZSBjb21wYXRpYmxlIHdpdGggb3RoZXIgdGhlbWVzLlwiXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3Muc3R5bGVMaXN0cykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5zdHlsZUxpc3RzID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5zYXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRHJhdyB2ZXJ0aWNhbCBpbmRlbnRhdGlvbiBsaW5lc1wiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmxpc3RMaW5lcykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5saXN0TGluZXMgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJWZXJ0aWNhbCBpbmRlbnRhdGlvbiBsaW5lIGNsaWNrIGFjdGlvblwiKVxuICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuICAgICAgICBkcm9wZG93blxuICAgICAgICAgIC5hZGRPcHRpb25zKHtcbiAgICAgICAgICAgIG5vbmU6IFwiTm9uZVwiLFxuICAgICAgICAgICAgXCJ6b29tLWluXCI6IFwiWm9vbSBJblwiLFxuICAgICAgICAgICAgXCJ0b2dnbGUtZm9sZGluZ1wiOiBcIlRvZ2dsZSBGb2xkaW5nXCIsXG4gICAgICAgICAgfSBhcyB7IFtrZXkgaW4gTGlzdExpbmVBY3Rpb25dOiBzdHJpbmcgfSlcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5saXN0TGluZUFjdGlvbilcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmxpc3RMaW5lQWN0aW9uID0gdmFsdWUgYXMgTGlzdExpbmVBY3Rpb247XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlN0aWNrIHRoZSBjdXJzb3IgdG8gdGhlIGNvbnRlbnRcIilcbiAgICAgIC5zZXREZXNjKFwiRG9uJ3QgbGV0IHRoZSBjdXJzb3IgbW92ZSB0byB0aGUgYnVsbGV0IHBvc2l0aW9uLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLnN0aWNrQ3Vyc29yKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLnN0aWNrQ3Vyc29yID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5zYXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRW5oYW5jZSB0aGUgRW50ZXIga2V5XCIpXG4gICAgICAuc2V0RGVzYyhcIk1ha2UgdGhlIEVudGVyIGtleSBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmJldHRlckVudGVyKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLmJldHRlckVudGVyID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5zYXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRW5oYW5jZSB0aGUgVGFiIGtleVwiKVxuICAgICAgLnNldERlc2MoXCJNYWtlIFRhYiBhbmQgU2hpZnQtVGFiIGJlaGF2ZSB0aGUgc2FtZSBhcyBvdGhlciBvdXRsaW5lcnMuXCIpXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuYmV0dGVyVGFiKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLmJldHRlclRhYiA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIEN0cmwrQSBvciBDbWQrQSBiZWhhdmlvclwiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiUHJlc3MgdGhlIGhvdGtleSBvbmNlIHRvIHNlbGVjdCB0aGUgY3VycmVudCBsaXN0IGl0ZW0uIFByZXNzIHRoZSBob3RrZXkgdHdpY2UgdG8gc2VsZWN0IHRoZSBlbnRpcmUgbGlzdC5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLnNlbGVjdEFsbCkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5zZWxlY3RBbGwgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJEZWJ1ZyBtb2RlXCIpXG4gICAgICAuc2V0RGVzYyhcbiAgICAgICAgXCJPcGVuIERldlRvb2xzIChDb21tYW5kK09wdGlvbitJIG9yIENvbnRyb2wrU2hpZnQrSSkgdG8gY29weSB0aGUgZGVidWcgbG9ncy5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmRlYnVnKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLmRlYnVnID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5zYXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNldHRpbmdzVGFiRmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZFNldHRpbmdUYWIoXG4gICAgICBuZXcgT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdUYWIoXG4gICAgICAgIHRoaXMucGx1Z2luLmFwcCxcbiAgICAgICAgdGhpcy5wbHVnaW4sXG4gICAgICAgIHRoaXMuc2V0dGluZ3NcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIENyZWF0ZU5vdGVMaW5lT3BlcmF0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lVW5kZXJDdXJzb3IgPSBsaXN0XG4gICAgICAuZ2V0TGluZXNJbmZvKClcbiAgICAgIC5maW5kKChsKSA9PiBsLmZyb20ubGluZSA9PT0gY3Vyc29yLmxpbmUpO1xuXG4gICAgaWYgKGN1cnNvci5jaCA8IGxpbmVVbmRlckN1cnNvci5mcm9tLmNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBpZiAoIWxpc3QuZ2V0Tm90ZXNJbmRlbnQoKSkge1xuICAgICAgbGlzdC5zZXROb3Rlc0luZGVudChsaXN0LmdldEZpcnN0TGluZUluZGVudCgpICsgXCIgIFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCkucmVkdWNlKChhY2MsIGxpbmUpID0+IHtcbiAgICAgIGlmIChjdXJzb3IubGluZSA9PT0gbGluZS5mcm9tLmxpbmUpIHtcbiAgICAgICAgYWNjLnB1c2gobGluZS50ZXh0LnNsaWNlKDAsIGN1cnNvci5jaCAtIGxpbmUuZnJvbS5jaCkpO1xuICAgICAgICBhY2MucHVzaChsaW5lLnRleHQuc2xpY2UoY3Vyc29yLmNoIC0gbGluZS5mcm9tLmNoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY2MucHVzaChsaW5lLnRleHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdIGFzIHN0cmluZ1tdKTtcblxuICAgIGxpc3QucmVwbGFjZUxpbmVzKGxpbmVzKTtcblxuICAgIHJvb3QucmVwbGFjZUN1cnNvcih7XG4gICAgICBsaW5lOiBjdXJzb3IubGluZSArIDEsXG4gICAgICBjaDogbGlzdC5nZXROb3Rlc0luZGVudCgpLmxlbmd0aCxcbiAgICB9KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vTXlFZGl0b3JcIjtcbmltcG9ydCB7IENyZWF0ZU5vdGVMaW5lT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvQ3JlYXRlTm90ZUxpbmVPcGVyYXRpb25cIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvUGVyZm9ybU9wZXJhdGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIFNoaWZ0RW50ZXJTaG91bGRDcmVhdGVOb3RlRmVhdHVyZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGltZTogSU1FU2VydmljZSxcbiAgICBwcml2YXRlIHBlcmZvcm1PcGVyYXRpb246IFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJzLUVudGVyXCIsXG4gICAgICAgICAgcnVuOiB0aGlzLm9ic2lkaWFuLmNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjaGVjayA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5iZXR0ZXJFbnRlciAmJiAhdGhpcy5pbWUuaXNJTUVPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJ1biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucGVyZm9ybU9wZXJhdGlvbi5wZXJmb3JtT3BlcmF0aW9uKFxuICAgICAgKHJvb3QpID0+IG5ldyBDcmVhdGVOb3RlTGluZU9wZXJhdGlvbihyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJleHBvcnQgaW50ZXJmYWNlIEFwcGx5Q2hhbmdlc0VkaXRvclBvc2l0aW9uIHtcbiAgbGluZTogbnVtYmVyO1xuICBjaDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5Q2hhbmdlc0VkaXRvclNlbGVjdGlvbiB7XG4gIGFuY2hvcjogQXBwbHlDaGFuZ2VzRWRpdG9yUG9zaXRpb247XG4gIGhlYWQ6IEFwcGx5Q2hhbmdlc0VkaXRvclBvc2l0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5Q2hhbmdlc0VkaXRvciB7XG4gIGdldFJhbmdlKFxuICAgIGZyb206IEFwcGx5Q2hhbmdlc0VkaXRvclBvc2l0aW9uLFxuICAgIHRvOiBBcHBseUNoYW5nZXNFZGl0b3JQb3NpdGlvblxuICApOiBzdHJpbmc7XG4gIHJlcGxhY2VSYW5nZShcbiAgICByZXBsYWNlbWVudDogc3RyaW5nLFxuICAgIGZyb206IEFwcGx5Q2hhbmdlc0VkaXRvclBvc2l0aW9uLFxuICAgIHRvOiBBcHBseUNoYW5nZXNFZGl0b3JQb3NpdGlvblxuICApOiB2b2lkO1xuICBzZXRTZWxlY3Rpb25zKHNlbGVjdGlvbnM6IEFwcGx5Q2hhbmdlc0VkaXRvclNlbGVjdGlvbltdKTogdm9pZDtcbiAgZm9sZChuOiBudW1iZXIpOiB2b2lkO1xuICB1bmZvbGQobjogbnVtYmVyKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBseUNoYW5nZXNMaXN0IHtcbiAgaXNGb2xkUm9vdCgpOiBib29sZWFuO1xuICBnZXRDaGlsZHJlbigpOiBBcHBseUNoYW5nZXNMaXN0W107XG4gIGdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpOiB7IGxpbmU6IG51bWJlciB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5Q2hhbmdlc1Jvb3Qge1xuICBnZXRSYW5nZSgpOiBbQXBwbHlDaGFuZ2VzRWRpdG9yUG9zaXRpb24sIEFwcGx5Q2hhbmdlc0VkaXRvclBvc2l0aW9uXTtcbiAgZ2V0U2VsZWN0aW9ucygpOiB7XG4gICAgYW5jaG9yOiBBcHBseUNoYW5nZXNFZGl0b3JQb3NpdGlvbjtcbiAgICBoZWFkOiBBcHBseUNoYW5nZXNFZGl0b3JQb3NpdGlvbjtcbiAgfVtdO1xuICBwcmludCgpOiBzdHJpbmc7XG4gIGdldENoaWxkcmVuKCk6IEFwcGx5Q2hhbmdlc0xpc3RbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcGx5Q2hhbmdlc1NlcnZpY2Uge1xuICBhcHBseUNoYW5nZXMoZWRpdG9yOiBBcHBseUNoYW5nZXNFZGl0b3IsIHJvb3Q6IEFwcGx5Q2hhbmdlc1Jvb3QpIHtcbiAgICBjb25zdCByb290UmFuZ2UgPSByb290LmdldFJhbmdlKCk7XG4gICAgY29uc3Qgb2xkU3RyaW5nID0gZWRpdG9yLmdldFJhbmdlKHJvb3RSYW5nZVswXSwgcm9vdFJhbmdlWzFdKTtcbiAgICBjb25zdCBuZXdTdHJpbmcgPSByb290LnByaW50KCk7XG5cbiAgICBjb25zdCBmcm9tTGluZSA9IHJvb3RSYW5nZVswXS5saW5lO1xuICAgIGNvbnN0IHRvTGluZSA9IHJvb3RSYW5nZVsxXS5saW5lO1xuXG4gICAgZm9yIChsZXQgbCA9IGZyb21MaW5lOyBsIDw9IHRvTGluZTsgbCsrKSB7XG4gICAgICBlZGl0b3IudW5mb2xkKGwpO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZUZyb20gPSB7IC4uLnJvb3RSYW5nZVswXSB9O1xuICAgIGNvbnN0IGNoYW5nZVRvID0geyAuLi5yb290UmFuZ2VbMV0gfTtcbiAgICBsZXQgb2xkVG1wID0gb2xkU3RyaW5nO1xuICAgIGxldCBuZXdUbXAgPSBuZXdTdHJpbmc7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IG5sSW5kZXggPSBvbGRUbXAubGFzdEluZGV4T2YoXCJcXG5cIik7XG4gICAgICBpZiAobmxJbmRleCA8IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKG5sSW5kZXgpO1xuICAgICAgY29uc3QgbmV3TGluZSA9IG5ld1RtcC5zbGljZSgtb2xkTGluZS5sZW5ndGgpO1xuICAgICAgaWYgKG9sZExpbmUgIT09IG5ld0xpbmUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBvbGRUbXAgPSBvbGRUbXAuc2xpY2UoMCwgLW9sZExpbmUubGVuZ3RoKTtcbiAgICAgIG5ld1RtcCA9IG5ld1RtcC5zbGljZSgwLCAtb2xkTGluZS5sZW5ndGgpO1xuXG4gICAgICBjb25zdCBubEluZGV4MiA9IG9sZFRtcC5sYXN0SW5kZXhPZihcIlxcblwiKTtcbiAgICAgIGNoYW5nZVRvLmNoID1cbiAgICAgICAgbmxJbmRleDIgPj0gMCA/IG9sZFRtcC5sZW5ndGggLSBubEluZGV4MiAtIDEgOiBvbGRUbXAubGVuZ3RoO1xuICAgICAgY2hhbmdlVG8ubGluZS0tO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IG5sSW5kZXggPSBvbGRUbXAuaW5kZXhPZihcIlxcblwiKTtcbiAgICAgIGlmIChubEluZGV4IDwgMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9sZExpbmUgPSBvbGRUbXAuc2xpY2UoMCwgbmxJbmRleCArIDEpO1xuICAgICAgY29uc3QgbmV3TGluZSA9IG5ld1RtcC5zbGljZSgwLCBvbGRMaW5lLmxlbmd0aCk7XG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNoYW5nZUZyb20ubGluZSsrO1xuICAgICAgb2xkVG1wID0gb2xkVG1wLnNsaWNlKG9sZExpbmUubGVuZ3RoKTtcbiAgICAgIG5ld1RtcCA9IG5ld1RtcC5zbGljZShvbGRMaW5lLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKG9sZFRtcCAhPT0gbmV3VG1wKSB7XG4gICAgICBlZGl0b3IucmVwbGFjZVJhbmdlKG5ld1RtcCwgY2hhbmdlRnJvbSwgY2hhbmdlVG8pO1xuICAgIH1cblxuICAgIGVkaXRvci5zZXRTZWxlY3Rpb25zKHJvb3QuZ2V0U2VsZWN0aW9ucygpKTtcblxuICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZShsaXN0OiBBcHBseUNoYW5nZXNMaXN0KSB7XG4gICAgICBmb3IgKGNvbnN0IGMgb2YgbGlzdC5nZXRDaGlsZHJlbigpKSB7XG4gICAgICAgIHJlY3Vyc2l2ZShjKTtcbiAgICAgIH1cbiAgICAgIGlmIChsaXN0LmlzRm9sZFJvb3QoKSkge1xuICAgICAgICBlZGl0b3IuZm9sZChsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGMgb2Ygcm9vdC5nZXRDaGlsZHJlbigpKSB7XG4gICAgICByZWN1cnNpdmUoYyk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5leHBvcnQgY2xhc3MgSU1FU2VydmljZSB7XG4gIHByaXZhdGUgY29tcG9zaXRpb24gPSBmYWxzZTtcblxuICBhc3luYyBsb2FkKCkge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbnN0YXJ0XCIsIHRoaXMub25Db21wb3NpdGlvblN0YXJ0KTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25lbmRcIiwgdGhpcy5vbkNvbXBvc2l0aW9uRW5kKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25lbmRcIiwgdGhpcy5vbkNvbXBvc2l0aW9uRW5kKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25zdGFydFwiLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gIH1cblxuICBpc0lNRU9wZW5lZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb3NpdGlvbiAmJiBQbGF0Zm9ybS5pc0Rlc2t0b3A7XG4gIH1cblxuICBwcml2YXRlIG9uQ29tcG9zaXRpb25TdGFydCA9ICgpID0+IHtcbiAgICB0aGlzLmNvbXBvc2l0aW9uID0gdHJ1ZTtcbiAgfTtcblxuICBwcml2YXRlIG9uQ29tcG9zaXRpb25FbmQgPSAoKSA9PiB7XG4gICAgdGhpcy5jb21wb3NpdGlvbiA9IGZhbHNlO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4vU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlKSB7fVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGxvZyhtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuZGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmluZm8obWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGJpbmQobWV0aG9kOiBzdHJpbmcpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IHRoaXMubG9nKG1ldGhvZCwgLi4uYXJncyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IEFwcCwgRWRpdG9yLCBlZGl0b3JJbmZvRmllbGQgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRWRpdG9yU3RhdGUgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuVGFic1NldHRpbmdzIHtcbiAgdXNlVGFiOiBib29sZWFuO1xuICB0YWJTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5Gb2xkU2V0dGluZ3Mge1xuICBmb2xkSW5kZW50OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgT2JzaWRpYW5TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCkge31cblxuICBpc0xlZ2FjeUVkaXRvckVuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnOiB7IGxlZ2FjeUVkaXRvcjogYm9vbGVhbiB9ID0ge1xuICAgICAgbGVnYWN5RWRpdG9yOiBmYWxzZSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAuLi4odGhpcy5hcHAudmF1bHQgYXMgYW55KS5jb25maWcsXG4gICAgfTtcblxuICAgIHJldHVybiBjb25maWcubGVnYWN5RWRpdG9yO1xuICB9XG5cbiAgaXNEZWZhdWx0VGhlbWVFbmFibGVkKCkge1xuICAgIGNvbnN0IGNvbmZpZzogeyBjc3NUaGVtZTogc3RyaW5nIH0gPSB7XG4gICAgICBjc3NUaGVtZTogXCJcIixcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAuLi4odGhpcy5hcHAudmF1bHQgYXMgYW55KS5jb25maWcsXG4gICAgfTtcblxuICAgIHJldHVybiBjb25maWcuY3NzVGhlbWUgPT09IFwiXCI7XG4gIH1cblxuICBnZXRPYnNpZGlhblRhYnNTZXR0aW5ncygpOiBPYnNpZGlhblRhYnNTZXR0aW5ncyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZVRhYjogdHJ1ZSxcbiAgICAgIHRhYlNpemU6IDQsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgLi4uKHRoaXMuYXBwLnZhdWx0IGFzIGFueSkuY29uZmlnLFxuICAgIH07XG4gIH1cblxuICBnZXRPYnNpZGlhbkZvbGRTZXR0aW5ncygpOiBPYnNpZGlhbkZvbGRTZXR0aW5ncyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbGRJbmRlbnQ6IHRydWUsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgLi4uKHRoaXMuYXBwLnZhdWx0IGFzIGFueSkuY29uZmlnLFxuICAgIH07XG4gIH1cblxuICBnZXREZWZhdWx0SW5kZW50Q2hhcnMoKSB7XG4gICAgY29uc3QgeyB1c2VUYWIsIHRhYlNpemUgfSA9IHRoaXMuZ2V0T2JzaWRpYW5UYWJzU2V0dGluZ3MoKTtcblxuICAgIHJldHVybiB1c2VUYWIgPyBcIlxcdFwiIDogbmV3IEFycmF5KHRhYlNpemUpLmZpbGwoXCIgXCIpLmpvaW4oXCJcIik7XG4gIH1cblxuICBnZXRFZGl0b3JGcm9tU3RhdGUoc3RhdGU6IEVkaXRvclN0YXRlKSB7XG4gICAgcmV0dXJuIG5ldyBNeUVkaXRvcihzdGF0ZS5maWVsZChlZGl0b3JJbmZvRmllbGQpLmVkaXRvcik7XG4gIH1cblxuICBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayhjb25maWc6IHtcbiAgICBjaGVjaz86IChlZGl0b3I6IE15RWRpdG9yKSA9PiBib29sZWFuO1xuICAgIHJ1bjogKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICAgIHNob3VsZFVwZGF0ZTogYm9vbGVhbjtcbiAgICAgIHNob3VsZFN0b3BQcm9wYWdhdGlvbjogYm9vbGVhbjtcbiAgICB9O1xuICB9KSB7XG4gICAgY29uc3QgY2hlY2sgPSBjb25maWcuY2hlY2sgfHwgKCgpID0+IHRydWUpO1xuICAgIGNvbnN0IHsgcnVuIH0gPSBjb25maWc7XG5cbiAgICByZXR1cm4gKHZpZXc6IEVkaXRvclZpZXcpOiBib29sZWFuID0+IHtcbiAgICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZ2V0RWRpdG9yRnJvbVN0YXRlKHZpZXcuc3RhdGUpO1xuXG4gICAgICBpZiAoIWNoZWNrKGVkaXRvcikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHNob3VsZFVwZGF0ZSwgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSBydW4oZWRpdG9yKTtcblxuICAgICAgcmV0dXJuIHNob3VsZFVwZGF0ZSB8fCBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZUVkaXRvckNhbGxiYWNrKGNiOiAoZWRpdG9yOiBNeUVkaXRvcikgPT4gYm9vbGVhbikge1xuICAgIHJldHVybiAoZWRpdG9yOiBFZGl0b3IpID0+IHtcbiAgICAgIGNvbnN0IG15RWRpdG9yID0gbmV3IE15RWRpdG9yKGVkaXRvcik7XG4gICAgICBjb25zdCBzaG91bGRTdG9wUHJvcGFnYXRpb24gPSBjYihteUVkaXRvcik7XG5cbiAgICAgIGlmIChcbiAgICAgICAgIXNob3VsZFN0b3BQcm9wYWdhdGlvbiAmJlxuICAgICAgICB3aW5kb3cuZXZlbnQgJiZcbiAgICAgICAgd2luZG93LmV2ZW50LnR5cGUgPT09IFwia2V5ZG93blwiXG4gICAgICApIHtcbiAgICAgICAgbXlFZGl0b3IudHJpZ2dlck9uS2V5RG93bih3aW5kb3cuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTGlzdCwgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2VcIjtcblxuY29uc3QgYnVsbGV0U2lnbiA9IGAoPzpbLSorXXxcXFxcZCtcXFxcLilgO1xuY29uc3Qgb3B0aW9uYWxDaGVja2JveCA9IGAoPzpcXFxcW1sgeFhdXFxcXF0oIHxcXHQpKT9gO1xuXG5jb25zdCBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZSA9IG5ldyBSZWdFeHAoYF4ke2J1bGxldFNpZ259KCB8XFx0KWApO1xuY29uc3QgbGlzdEl0ZW1SZSA9IG5ldyBSZWdFeHAoYF5bIFxcdF0qJHtidWxsZXRTaWdufSggfFxcdClgKTtcbmNvbnN0IHN0cmluZ1dpdGhTcGFjZXNSZSA9IG5ldyBSZWdFeHAoYF5bIFxcdF0rYCk7XG5jb25zdCBwYXJzZUxpc3RJdGVtUmUgPSBuZXcgUmVnRXhwKFxuICBgXihbIFxcdF0qKSgke2J1bGxldFNpZ259KSggfFxcdCkoKCR7b3B0aW9uYWxDaGVja2JveH0pLiopJGBcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZGVyUG9zaXRpb24ge1xuICBsaW5lOiBudW1iZXI7XG4gIGNoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZGVyU2VsZWN0aW9uIHtcbiAgYW5jaG9yOiBSZWFkZXJQb3NpdGlvbjtcbiAgaGVhZDogUmVhZGVyUG9zaXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZGVyIHtcbiAgZ2V0Q3Vyc29yKCk6IFJlYWRlclBvc2l0aW9uO1xuICBnZXRMaW5lKG46IG51bWJlcik6IHN0cmluZztcbiAgbGFzdExpbmUoKTogbnVtYmVyO1xuICBsaXN0U2VsZWN0aW9ucygpOiBSZWFkZXJTZWxlY3Rpb25bXTtcbiAgZ2V0QWxsRm9sZGVkTGluZXMoKTogbnVtYmVyW107XG59XG5cbmludGVyZmFjZSBQYXJzZUxpc3RMaXN0IHtcbiAgZ2V0Rmlyc3RMaW5lSW5kZW50KCk6IHN0cmluZztcbiAgc2V0Tm90ZXNJbmRlbnQobm90ZXNJbmRlbnQ6IHN0cmluZyk6IHZvaWQ7XG4gIGdldE5vdGVzSW5kZW50KCk6IHN0cmluZyB8IG51bGw7XG4gIGFkZExpbmUodGV4dDogc3RyaW5nKTogdm9pZDtcbiAgZ2V0UGFyZW50KCk6IFBhcnNlTGlzdExpc3QgfCBudWxsO1xuICBhZGRBZnRlckFsbChsaXN0OiBQYXJzZUxpc3RMaXN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnNlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSkge31cblxuICBwYXJzZVJhbmdlKGVkaXRvcjogUmVhZGVyLCBmcm9tTGluZSA9IDAsIHRvTGluZSA9IGVkaXRvci5sYXN0TGluZSgpKTogUm9vdFtdIHtcbiAgICBjb25zdCBsaXN0czogUm9vdFtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gZnJvbUxpbmU7IGkgPD0gdG9MaW5lOyBpKyspIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShpKTtcblxuICAgICAgaWYgKGkgPT09IGZyb21MaW5lIHx8IHRoaXMuaXNMaXN0SXRlbShsaW5lKSkge1xuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5wYXJzZVdpdGhMaW1pdHMoZWRpdG9yLCBpLCBmcm9tTGluZSwgdG9MaW5lKTtcblxuICAgICAgICBpZiAobGlzdCkge1xuICAgICAgICAgIGxpc3RzLnB1c2gobGlzdCk7XG4gICAgICAgICAgaSA9IGxpc3QuZ2V0UmFuZ2UoKVsxXS5saW5lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3RzO1xuICB9XG5cbiAgcGFyc2UoZWRpdG9yOiBSZWFkZXIsIGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKSk6IFJvb3QgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVdpdGhMaW1pdHMoZWRpdG9yLCBjdXJzb3IubGluZSwgMCwgZWRpdG9yLmxhc3RMaW5lKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVdpdGhMaW1pdHMoXG4gICAgZWRpdG9yOiBSZWFkZXIsXG4gICAgcGFyc2luZ1N0YXJ0TGluZTogbnVtYmVyLFxuICAgIGxpbWl0RnJvbTogbnVtYmVyLFxuICAgIGxpbWl0VG86IG51bWJlclxuICApOiBSb290IHwgbnVsbCB7XG4gICAgY29uc3QgZCA9IHRoaXMubG9nZ2VyLmJpbmQoXCJwYXJzZUxpc3RcIik7XG4gICAgY29uc3QgZXJyb3IgPSAobXNnOiBzdHJpbmcpOiBudWxsID0+IHtcbiAgICAgIGQobXNnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUocGFyc2luZ1N0YXJ0TGluZSk7XG5cbiAgICBsZXQgbGlzdExvb2tpbmdQb3M6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuaXNMaXN0SXRlbShsaW5lKSkge1xuICAgICAgbGlzdExvb2tpbmdQb3MgPSBwYXJzaW5nU3RhcnRMaW5lO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0xpbmVXaXRoSW5kZW50KGxpbmUpKSB7XG4gICAgICBsZXQgbGlzdExvb2tpbmdQb3NTZWFyY2ggPSBwYXJzaW5nU3RhcnRMaW5lIC0gMTtcbiAgICAgIHdoaWxlIChsaXN0TG9va2luZ1Bvc1NlYXJjaCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0TG9va2luZ1Bvc1NlYXJjaCk7XG4gICAgICAgIGlmICh0aGlzLmlzTGlzdEl0ZW0obGluZSkpIHtcbiAgICAgICAgICBsaXN0TG9va2luZ1BvcyA9IGxpc3RMb29raW5nUG9zU2VhcmNoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICAgIGxpc3RMb29raW5nUG9zU2VhcmNoLS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobGlzdExvb2tpbmdQb3MgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGxpc3RTdGFydExpbmU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGxldCBsaXN0U3RhcnRMaW5lTG9va3VwID0gbGlzdExvb2tpbmdQb3M7XG4gICAgd2hpbGUgKGxpc3RTdGFydExpbmVMb29rdXAgPj0gMCkge1xuICAgICAgY29uc3QgbGluZSA9IGVkaXRvci5nZXRMaW5lKGxpc3RTdGFydExpbmVMb29rdXApO1xuICAgICAgaWYgKCF0aGlzLmlzTGlzdEl0ZW0obGluZSkgJiYgIXRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzTGlzdEl0ZW1XaXRob3V0U3BhY2VzKGxpbmUpKSB7XG4gICAgICAgIGxpc3RTdGFydExpbmUgPSBsaXN0U3RhcnRMaW5lTG9va3VwO1xuICAgICAgICBpZiAobGlzdFN0YXJ0TGluZUxvb2t1cCA8PSBsaW1pdEZyb20pIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdFN0YXJ0TGluZUxvb2t1cC0tO1xuICAgIH1cblxuICAgIGlmIChsaXN0U3RhcnRMaW5lID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgbGlzdEVuZExpbmUgPSBsaXN0TG9va2luZ1BvcztcbiAgICBsZXQgbGlzdEVuZExpbmVMb29rdXAgPSBsaXN0TG9va2luZ1BvcztcbiAgICB3aGlsZSAobGlzdEVuZExpbmVMb29rdXAgPD0gZWRpdG9yLmxhc3RMaW5lKCkpIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0RW5kTGluZUxvb2t1cCk7XG4gICAgICBpZiAoIXRoaXMuaXNMaXN0SXRlbShsaW5lKSAmJiAhdGhpcy5pc0xpbmVXaXRoSW5kZW50KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmlzRW1wdHlMaW5lKGxpbmUpKSB7XG4gICAgICAgIGxpc3RFbmRMaW5lID0gbGlzdEVuZExpbmVMb29rdXA7XG4gICAgICB9XG4gICAgICBpZiAobGlzdEVuZExpbmVMb29rdXAgPj0gbGltaXRUbykge1xuICAgICAgICBsaXN0RW5kTGluZSA9IGxpbWl0VG87XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGlzdEVuZExpbmVMb29rdXArKztcbiAgICB9XG5cbiAgICBpZiAobGlzdFN0YXJ0TGluZSA+IHBhcnNpbmdTdGFydExpbmUgfHwgbGlzdEVuZExpbmUgPCBwYXJzaW5nU3RhcnRMaW5lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCByb290ID0gbmV3IFJvb3QoXG4gICAgICB7IGxpbmU6IGxpc3RTdGFydExpbmUsIGNoOiAwIH0sXG4gICAgICB7IGxpbmU6IGxpc3RFbmRMaW5lLCBjaDogZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmUpLmxlbmd0aCB9LFxuICAgICAgZWRpdG9yLmxpc3RTZWxlY3Rpb25zKCkubWFwKChyKSA9PiAoe1xuICAgICAgICBhbmNob3I6IHsgbGluZTogci5hbmNob3IubGluZSwgY2g6IHIuYW5jaG9yLmNoIH0sXG4gICAgICAgIGhlYWQ6IHsgbGluZTogci5oZWFkLmxpbmUsIGNoOiByLmhlYWQuY2ggfSxcbiAgICAgIH0pKVxuICAgICk7XG5cbiAgICBsZXQgY3VycmVudFBhcmVudDogUGFyc2VMaXN0TGlzdCA9IHJvb3QuZ2V0Um9vdExpc3QoKTtcbiAgICBsZXQgY3VycmVudExpc3Q6IFBhcnNlTGlzdExpc3QgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgY3VycmVudEluZGVudCA9IFwiXCI7XG5cbiAgICBjb25zdCBmb2xkZWRMaW5lcyA9IGVkaXRvci5nZXRBbGxGb2xkZWRMaW5lcygpO1xuXG4gICAgZm9yIChsZXQgbCA9IGxpc3RTdGFydExpbmU7IGwgPD0gbGlzdEVuZExpbmU7IGwrKykge1xuICAgICAgY29uc3QgbGluZSA9IGVkaXRvci5nZXRMaW5lKGwpO1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHBhcnNlTGlzdEl0ZW1SZS5leGVjKGxpbmUpO1xuXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBjb25zdCBbLCBpbmRlbnQsIGJ1bGxldCwgc3BhY2VBZnRlckJ1bGxldCwgY29udGVudCwgb3B0aW9uYWxDaGVja2JveF0gPVxuICAgICAgICAgIG1hdGNoZXM7XG5cbiAgICAgICAgY29uc3QgY29tcGFyZUxlbmd0aCA9IE1hdGgubWluKGN1cnJlbnRJbmRlbnQubGVuZ3RoLCBpbmRlbnQubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgaW5kZW50U2xpY2UgPSBpbmRlbnQuc2xpY2UoMCwgY29tcGFyZUxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRlbnRTbGljZSA9IGN1cnJlbnRJbmRlbnQuc2xpY2UoMCwgY29tcGFyZUxlbmd0aCk7XG5cbiAgICAgICAgaWYgKGluZGVudFNsaWNlICE9PSBjdXJyZW50SW5kZW50U2xpY2UpIHtcbiAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IGN1cnJlbnRJbmRlbnRTbGljZVxuICAgICAgICAgICAgLnJlcGxhY2UoLyAvZywgXCJTXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFx0L2csIFwiVFwiKTtcbiAgICAgICAgICBjb25zdCBnb3QgPSBpbmRlbnRTbGljZS5yZXBsYWNlKC8gL2csIFwiU1wiKS5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuXG4gICAgICAgICAgcmV0dXJuIGVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBpbmRlbnQgXCIke2V4cGVjdGVkfVwiLCBnb3QgXCIke2dvdH1cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluZGVudC5sZW5ndGggPiBjdXJyZW50SW5kZW50Lmxlbmd0aCkge1xuICAgICAgICAgIGN1cnJlbnRQYXJlbnQgPSBjdXJyZW50TGlzdDtcbiAgICAgICAgICBjdXJyZW50SW5kZW50ID0gaW5kZW50O1xuICAgICAgICB9IGVsc2UgaWYgKGluZGVudC5sZW5ndGggPCBjdXJyZW50SW5kZW50Lmxlbmd0aCkge1xuICAgICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoID49IGluZGVudC5sZW5ndGggJiZcbiAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQuZ2V0UGFyZW50KClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQgPSBjdXJyZW50UGFyZW50LmdldFBhcmVudCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50SW5kZW50ID0gaW5kZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9sZFJvb3QgPSBmb2xkZWRMaW5lcy5pbmNsdWRlcyhsKTtcblxuICAgICAgICBjdXJyZW50TGlzdCA9IG5ldyBMaXN0KFxuICAgICAgICAgIHJvb3QsXG4gICAgICAgICAgaW5kZW50LFxuICAgICAgICAgIGJ1bGxldCxcbiAgICAgICAgICBvcHRpb25hbENoZWNrYm94Lmxlbmd0aCxcbiAgICAgICAgICBzcGFjZUFmdGVyQnVsbGV0LFxuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgZm9sZFJvb3RcbiAgICAgICAgKTtcbiAgICAgICAgY3VycmVudFBhcmVudC5hZGRBZnRlckFsbChjdXJyZW50TGlzdCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICBpZiAoIWN1cnJlbnRMaXN0KSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBsaXN0IGl0ZW0sIGdvdCBlbXB0eSBsaW5lYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbmRlbnRUb0NoZWNrID0gY3VycmVudExpc3QuZ2V0Tm90ZXNJbmRlbnQoKSB8fCBjdXJyZW50SW5kZW50O1xuXG4gICAgICAgIGlmIChsaW5lLmluZGV4T2YoaW5kZW50VG9DaGVjaykgIT09IDApIHtcbiAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IGluZGVudFRvQ2hlY2sucmVwbGFjZSgvIC9nLCBcIlNcIikucmVwbGFjZSgvXFx0L2csIFwiVFwiKTtcbiAgICAgICAgICBjb25zdCBnb3QgPSBsaW5lXG4gICAgICAgICAgICAubWF0Y2goL15bIFxcdF0qLylbMF1cbiAgICAgICAgICAgIC5yZXBsYWNlKC8gL2csIFwiU1wiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG5cbiAgICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgICBgVW5hYmxlIHRvIHBhcnNlIGxpc3Q6IGV4cGVjdGVkIGluZGVudCBcIiR7ZXhwZWN0ZWR9XCIsIGdvdCBcIiR7Z290fVwiYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkpIHtcbiAgICAgICAgICBjb25zdCBtYXRjaGVzID0gbGluZS5tYXRjaCgvXlsgXFx0XSsvKTtcblxuICAgICAgICAgIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzWzBdLmxlbmd0aCA8PSBjdXJyZW50SW5kZW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKC9eXFxzKyQvLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBzb21lIGluZGVudCwgZ290IG5vIGluZGVudGBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudExpc3Quc2V0Tm90ZXNJbmRlbnQobWF0Y2hlc1swXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50TGlzdC5hZGRMaW5lKGxpbmUuc2xpY2UoY3VycmVudExpc3QuZ2V0Tm90ZXNJbmRlbnQoKS5sZW5ndGgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICBgVW5hYmxlIHRvIHBhcnNlIGxpc3Q6IGV4cGVjdGVkIGxpc3QgaXRlbSBvciBub3RlLCBnb3QgXCIke2xpbmV9XCJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBwcml2YXRlIGlzRW1wdHlMaW5lKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaW5lLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgaXNMaW5lV2l0aEluZGVudChsaW5lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nV2l0aFNwYWNlc1JlLnRlc3QobGluZSk7XG4gIH1cblxuICBwcml2YXRlIGlzTGlzdEl0ZW0obGluZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3RJdGVtUmUudGVzdChsaW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNMaXN0SXRlbVdpdGhvdXRTcGFjZXMobGluZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3RJdGVtV2l0aG91dFNwYWNlc1JlLnRlc3QobGluZSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IEFwcGx5Q2hhbmdlc1NlcnZpY2UgfSBmcm9tIFwiLi9BcHBseUNoYW5nZXNTZXJ2aWNlXCI7XG5pbXBvcnQgeyBQYXJzZXJTZXJ2aWNlIH0gZnJvbSBcIi4vUGFyc2VyU2VydmljZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9NeUVkaXRvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIFBlcmZvcm1PcGVyYXRpb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBseUNoYW5nZXM6IEFwcGx5Q2hhbmdlc1NlcnZpY2VcbiAgKSB7fVxuXG4gIGV2YWxPcGVyYXRpb24ocm9vdDogUm9vdCwgb3A6IE9wZXJhdGlvbiwgZWRpdG9yOiBNeUVkaXRvcikge1xuICAgIG9wLnBlcmZvcm0oKTtcblxuICAgIGlmIChvcC5zaG91bGRVcGRhdGUoKSkge1xuICAgICAgdGhpcy5hcHBseUNoYW5nZXMuYXBwbHlDaGFuZ2VzKGVkaXRvciwgcm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3VsZFVwZGF0ZTogb3Auc2hvdWxkVXBkYXRlKCksXG4gICAgICBzaG91bGRTdG9wUHJvcGFnYXRpb246IG9wLnNob3VsZFN0b3BQcm9wYWdhdGlvbigpLFxuICAgIH07XG4gIH1cblxuICBwZXJmb3JtT3BlcmF0aW9uKFxuICAgIGNiOiAocm9vdDogUm9vdCkgPT4gT3BlcmF0aW9uLFxuICAgIGVkaXRvcjogTXlFZGl0b3IsXG4gICAgY3Vyc29yID0gZWRpdG9yLmdldEN1cnNvcigpXG4gICkge1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLnBhcnNlci5wYXJzZShlZGl0b3IsIGN1cnNvcik7XG5cbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgIHJldHVybiB7IHNob3VsZFVwZGF0ZTogZmFsc2UsIHNob3VsZFN0b3BQcm9wYWdhdGlvbjogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBjb25zdCBvcCA9IGNiKHJvb3QpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZhbE9wZXJhdGlvbihyb290LCBvcCwgZWRpdG9yKTtcbiAgfVxufVxuIiwiZXhwb3J0IHR5cGUgTGlzdExpbmVBY3Rpb24gPSBcIm5vbmVcIiB8IFwiem9vbS1pblwiIHwgXCJ0b2dnbGUtZm9sZGluZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5ncyB7XG4gIHN0eWxlTGlzdHM6IGJvb2xlYW47XG4gIGRlYnVnOiBib29sZWFuO1xuICBzdGlja0N1cnNvcjogYm9vbGVhbjtcbiAgYmV0dGVyRW50ZXI6IGJvb2xlYW47XG4gIGJldHRlclRhYjogYm9vbGVhbjtcbiAgc2VsZWN0QWxsOiBib29sZWFuO1xuICBsaXN0TGluZXM6IGJvb2xlYW47XG4gIGxpc3RMaW5lQWN0aW9uOiBMaXN0TGluZUFjdGlvbjtcbn1cblxuY29uc3QgREVGQVVMVF9TRVRUSU5HUzogT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdzID0ge1xuICBzdHlsZUxpc3RzOiB0cnVlLFxuICBkZWJ1ZzogZmFsc2UsXG4gIHN0aWNrQ3Vyc29yOiB0cnVlLFxuICBiZXR0ZXJFbnRlcjogdHJ1ZSxcbiAgYmV0dGVyVGFiOiB0cnVlLFxuICBzZWxlY3RBbGw6IHRydWUsXG4gIGxpc3RMaW5lczogZmFsc2UsXG4gIGxpc3RMaW5lQWN0aW9uOiBcInRvZ2dsZS1mb2xkaW5nXCIsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2Uge1xuICBsb2FkRGF0YSgpOiBQcm9taXNlPE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5ncz47XG4gIHNhdmVEYXRhKHNldHRpZ25zOiBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ3MpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG50eXBlIEsgPSBrZXlvZiBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ3M7XG50eXBlIENhbGxiYWNrPFQgZXh0ZW5kcyBLPiA9IChjYjogT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdzW1RdKSA9PiB2b2lkO1xuXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NTZXJ2aWNlIGltcGxlbWVudHMgT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdzIHtcbiAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlO1xuICBwcml2YXRlIHZhbHVlczogT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdzO1xuICBwcml2YXRlIGhhbmRsZXJzOiBNYXA8SywgU2V0PENhbGxiYWNrPEs+Pj47XG5cbiAgY29uc3RydWN0b3Ioc3RvcmFnZTogU3RvcmFnZSkge1xuICAgIHRoaXMuc3RvcmFnZSA9IHN0b3JhZ2U7XG4gICAgdGhpcy5oYW5kbGVycyA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIGdldCBzdHlsZUxpc3RzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5zdHlsZUxpc3RzO1xuICB9XG4gIHNldCBzdHlsZUxpc3RzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJzdHlsZUxpc3RzXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBkZWJ1ZygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuZGVidWc7XG4gIH1cbiAgc2V0IGRlYnVnKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJkZWJ1Z1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgc3RpY2tDdXJzb3IoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnN0aWNrQ3Vyc29yO1xuICB9XG4gIHNldCBzdGlja0N1cnNvcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwic3RpY2tDdXJzb3JcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IGJldHRlckVudGVyKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5iZXR0ZXJFbnRlcjtcbiAgfVxuICBzZXQgYmV0dGVyRW50ZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImJldHRlckVudGVyXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBiZXR0ZXJUYWIoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmJldHRlclRhYjtcbiAgfVxuICBzZXQgYmV0dGVyVGFiKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJiZXR0ZXJUYWJcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdEFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuc2VsZWN0QWxsO1xuICB9XG4gIHNldCBzZWxlY3RBbGwodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcInNlbGVjdEFsbFwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgbGlzdExpbmVzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5saXN0TGluZXM7XG4gIH1cbiAgc2V0IGxpc3RMaW5lcyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwibGlzdExpbmVzXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBsaXN0TGluZUFjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGlzdExpbmVBY3Rpb247XG4gIH1cbiAgc2V0IGxpc3RMaW5lQWN0aW9uKHZhbHVlOiBMaXN0TGluZUFjdGlvbikge1xuICAgIHRoaXMuc2V0KFwibGlzdExpbmVBY3Rpb25cIiwgdmFsdWUpO1xuICB9XG5cbiAgb25DaGFuZ2U8VCBleHRlbmRzIEs+KGtleTogVCwgY2I6IENhbGxiYWNrPFQ+KSB7XG4gICAgaWYgKCF0aGlzLmhhbmRsZXJzLmhhcyhrZXkpKSB7XG4gICAgICB0aGlzLmhhbmRsZXJzLnNldChrZXksIG5ldyBTZXQoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVycy5nZXQoa2V5KS5hZGQoY2IpO1xuICB9XG5cbiAgcmVtb3ZlQ2FsbGJhY2s8VCBleHRlbmRzIEs+KGtleTogVCwgY2I6IENhbGxiYWNrPFQ+KTogdm9pZCB7XG4gICAgY29uc3QgaGFuZGxlcnMgPSB0aGlzLmhhbmRsZXJzLmdldChrZXkpO1xuXG4gICAgaWYgKGhhbmRsZXJzKSB7XG4gICAgICBoYW5kbGVycy5kZWxldGUoY2IpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKERFRkFVTFRfU0VUVElOR1MpKSB7XG4gICAgICB0aGlzLnNldChrIGFzIGtleW9mIE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5ncywgdik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnZhbHVlcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIERFRkFVTFRfU0VUVElOR1MsXG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UubG9hZERhdGEoKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzYXZlKCkge1xuICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zYXZlRGF0YSh0aGlzLnZhbHVlcyk7XG4gIH1cblxuICBzZXQ8VCBleHRlbmRzIEs+KGtleTogVCwgdmFsdWU6IE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5nc1tUXSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVzW2tleV0gPSB2YWx1ZTtcbiAgICBjb25zdCBjYWxsYmFja3MgPSB0aGlzLmhhbmRsZXJzLmdldChrZXkpO1xuXG4gICAgaWYgKCFjYWxsYmFja3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNiIG9mIGNhbGxiYWNrcy52YWx1ZXMoKSkge1xuICAgICAgY2IodmFsdWUpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IERlbGV0ZVNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRGVsZXRlU2hvdWxkSWdub3JlQnVsbGV0c0ZlYXR1cmVcIjtcbmltcG9ydCB7IEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRW5zdXJlQ3Vyc29ySW5MaXN0Q29udGVudEZlYXR1cmVcIjtcbmltcG9ydCB7IEVudGVyT3V0ZGVudElmTGluZUlzRW1wdHlGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRW50ZXJPdXRkZW50SWZMaW5lSXNFbXB0eUZlYXR1cmVcIjtcbmltcG9ydCB7IEVudGVyU2hvdWxkQ3JlYXRlTmV3SXRlbUZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9FbnRlclNob3VsZENyZWF0ZU5ld0l0ZW1PbkNoaWxkTGV2ZWxGZWF0dXJlXCI7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRmVhdHVyZVwiO1xuaW1wb3J0IHsgRm9sZEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9Gb2xkRmVhdHVyZVwiO1xuaW1wb3J0IHsgTGluZXNGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvTGluZXNGZWF0dXJlXCI7XG5pbXBvcnQgeyBMaXN0c1N0eWxlc0ZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9MaXN0c1N0eWxlc0ZlYXR1cmVcIjtcbmltcG9ydCB7IE1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL01vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lRmVhdHVyZVwiO1xuaW1wb3J0IHsgTW92ZUl0ZW1zRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL01vdmVJdGVtc0ZlYXR1cmVcIjtcbmltcG9ydCB7IFNlbGVjdEFsbEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9TZWxlY3RBbGxGZWF0dXJlXCI7XG5pbXBvcnQgeyBTZWxlY3Rpb25TaG91bGRJZ25vcmVCdWxsZXRzRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL1NlbGVjdGlvblNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYkZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9TZXR0aW5nc1RhYkZlYXR1cmVcIjtcbmltcG9ydCB7IFNoaWZ0RW50ZXJTaG91bGRDcmVhdGVOb3RlRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL1NoaWZ0RW50ZXJTaG91bGRDcmVhdGVOb3RlRmVhdHVyZVwiO1xuaW1wb3J0IHsgQXBwbHlDaGFuZ2VzU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL0FwcGx5Q2hhbmdlc1NlcnZpY2VcIjtcbmltcG9ydCB7IElNRVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9JTUVTZXJ2aWNlXCI7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvTG9nZ2VyU2VydmljZVwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvT2JzaWRpYW5TZXJ2aWNlXCI7XG5pbXBvcnQgeyBQYXJzZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvUGFyc2VyU2VydmljZVwiO1xuaW1wb3J0IHsgUGVyZm9ybU9wZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9QZXJmb3JtT3BlcmF0aW9uU2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9ic2lkaWFuT3V0bGluZXJQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuICBwcml2YXRlIGZlYXR1cmVzOiBGZWF0dXJlW107XG4gIHByb3RlY3RlZCBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlO1xuICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgcHJpdmF0ZSBvYnNpZGlhbjogT2JzaWRpYW5TZXJ2aWNlO1xuICBwcml2YXRlIHBhcnNlcjogUGFyc2VyU2VydmljZTtcbiAgcHJpdmF0ZSBhcHBseUNoYW5nZXM6IEFwcGx5Q2hhbmdlc1NlcnZpY2U7XG4gIHByaXZhdGUgcGVyZm9ybU9wZXJhdGlvbjogUGVyZm9ybU9wZXJhdGlvblNlcnZpY2U7XG4gIHByaXZhdGUgaW1lOiBJTUVTZXJ2aWNlO1xuXG4gIGFzeW5jIG9ubG9hZCgpIHtcbiAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBvYnNpZGlhbi1vdXRsaW5lcmApO1xuXG4gICAgdGhpcy5vYnNpZGlhbiA9IG5ldyBPYnNpZGlhblNlcnZpY2UodGhpcy5hcHApO1xuXG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBTZXR0aW5nc1NlcnZpY2UodGhpcyk7XG4gICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5sb2FkKCk7XG5cbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBMb2dnZXJTZXJ2aWNlKHRoaXMuc2V0dGluZ3MpO1xuXG4gICAgdGhpcy5wYXJzZXIgPSBuZXcgUGFyc2VyU2VydmljZSh0aGlzLmxvZ2dlcik7XG4gICAgdGhpcy5hcHBseUNoYW5nZXMgPSBuZXcgQXBwbHlDaGFuZ2VzU2VydmljZSgpO1xuICAgIHRoaXMucGVyZm9ybU9wZXJhdGlvbiA9IG5ldyBQZXJmb3JtT3BlcmF0aW9uU2VydmljZShcbiAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgdGhpcy5hcHBseUNoYW5nZXNcbiAgICApO1xuXG4gICAgdGhpcy5pbWUgPSBuZXcgSU1FU2VydmljZSgpO1xuICAgIGF3YWl0IHRoaXMuaW1lLmxvYWQoKTtcblxuICAgIHRoaXMuZmVhdHVyZXMgPSBbXG4gICAgICBuZXcgU2V0dGluZ3NUYWJGZWF0dXJlKHRoaXMsIHRoaXMuc2V0dGluZ3MpLFxuICAgICAgbmV3IExpc3RzU3R5bGVzRmVhdHVyZSh0aGlzLnNldHRpbmdzLCB0aGlzLm9ic2lkaWFuKSxcbiAgICAgIG5ldyBFbnRlck91dGRlbnRJZkxpbmVJc0VtcHR5RmVhdHVyZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWUsXG4gICAgICAgIHRoaXMub2JzaWRpYW4sXG4gICAgICAgIHRoaXMucGVyZm9ybU9wZXJhdGlvblxuICAgICAgKSxcbiAgICAgIG5ldyBFbnRlclNob3VsZENyZWF0ZU5ld0l0ZW1GZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IEVuc3VyZUN1cnNvckluTGlzdENvbnRlbnRGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLm9ic2lkaWFuLFxuICAgICAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb25cbiAgICAgICksXG4gICAgICBuZXcgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmVGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IERlbGV0ZVNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IFNlbGVjdGlvblNob3VsZElnbm9yZUJ1bGxldHNGZWF0dXJlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZSxcbiAgICAgICAgdGhpcy5vYnNpZGlhbixcbiAgICAgICAgdGhpcy5wZXJmb3JtT3BlcmF0aW9uXG4gICAgICApLFxuICAgICAgbmV3IEZvbGRGZWF0dXJlKHRoaXMsIHRoaXMub2JzaWRpYW4pLFxuICAgICAgbmV3IFNlbGVjdEFsbEZlYXR1cmUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMuaW1lLFxuICAgICAgICB0aGlzLm9ic2lkaWFuLFxuICAgICAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb25cbiAgICAgICksXG4gICAgICBuZXcgTW92ZUl0ZW1zRmVhdHVyZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5pbWUsXG4gICAgICAgIHRoaXMub2JzaWRpYW4sXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMucGVyZm9ybU9wZXJhdGlvblxuICAgICAgKSxcbiAgICAgIG5ldyBTaGlmdEVudGVyU2hvdWxkQ3JlYXRlTm90ZUZlYXR1cmUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMub2JzaWRpYW4sXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMuaW1lLFxuICAgICAgICB0aGlzLnBlcmZvcm1PcGVyYXRpb25cbiAgICAgICksXG4gICAgICBuZXcgTGluZXNGZWF0dXJlKHRoaXMsIHRoaXMuc2V0dGluZ3MsIHRoaXMub2JzaWRpYW4sIHRoaXMucGFyc2VyKSxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIHRoaXMuZmVhdHVyZXMpIHtcbiAgICAgIGF3YWl0IGZlYXR1cmUubG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9udW5sb2FkKCkge1xuICAgIGNvbnNvbGUubG9nKGBVbmxvYWRpbmcgb2JzaWRpYW4tb3V0bGluZXJgKTtcblxuICAgIGF3YWl0IHRoaXMuaW1lLnVubG9hZCgpO1xuXG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIHRoaXMuZmVhdHVyZXMpIHtcbiAgICAgIGF3YWl0IGZlYXR1cmUudW5sb2FkKCk7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsia2V5bWFwIiwiRWRpdG9yU3RhdGUiLCJQcmVjIiwiTm90aWNlIiwiZm9sZGVkUmFuZ2VzIiwiZm9sZGFibGUiLCJmb2xkRWZmZWN0IiwidW5mb2xkRWZmZWN0IiwicnVuU2NvcGVIYW5kbGVycyIsIm9ic2lkaWFuIiwiZWRpdG9ySW5mb0ZpZWxkIiwiVmlld1Bs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LEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDMUI7QUFFRCxJQUFBLElBQUksV0FBVyxHQUFBO0FBQ2IsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO0tBQ2hDO0lBQ0QsSUFBSSxXQUFXLENBQUMsS0FBYyxFQUFBO0FBQzVCLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDaEM7QUFFRCxJQUFBLElBQUksV0FBVyxHQUFBO0FBQ2IsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO0tBQ2hDO0lBQ0QsSUFBSSxXQUFXLENBQUMsS0FBYyxFQUFBO0FBQzVCLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDaEM7QUFFRCxJQUFBLElBQUksU0FBUyxHQUFBO0FBQ1gsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0tBQzlCO0lBQ0QsSUFBSSxTQUFTLENBQUMsS0FBYyxFQUFBO0FBQzFCLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDOUI7QUFFRCxJQUFBLElBQUksU0FBUyxHQUFBO0FBQ1gsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0tBQzlCO0lBQ0QsSUFBSSxTQUFTLENBQUMsS0FBYyxFQUFBO0FBQzFCLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDOUI7QUFFRCxJQUFBLElBQUksU0FBUyxHQUFBO0FBQ1gsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0tBQzlCO0lBQ0QsSUFBSSxTQUFTLENBQUMsS0FBYyxFQUFBO0FBQzFCLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDOUI7QUFFRCxJQUFBLElBQUksY0FBYyxHQUFBO0FBQ2hCLFFB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9vcGVyYXRpb25zL01vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lLnRzIiwic3JjL2VkaXRvci9pbmRleC50cyIsInNyYy91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFjay50cyIsInNyYy9mZWF0dXJlcy9BcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvcm9vdC9pbmRleC50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnRzIiwic3JjL2ZlYXR1cmVzL0JhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlLnRzIiwic3JjL2ZlYXR1cmVzL0JldHRlckxpc3RzU3R5bGVzLnRzIiwic3JjL29wZXJhdGlvbnMvU2VsZWN0QWxsQ29udGVudC50cyIsInNyYy9mZWF0dXJlcy9DdHJsQUFuZENtZEFCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxOZXh0TGluZUNvbnRlbnRTdGFydC50cyIsInNyYy9mZWF0dXJlcy9EZWxldGVCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9vcGVyYXRpb25zL01vdmVMaXN0VG9EaWZmZXJlbnRQb3NpdGlvbi50cyIsInNyYy9mZWF0dXJlcy9EcmFnQW5kRHJvcC50cyIsInNyYy9vcGVyYXRpb25zL0tlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMudHMiLCJzcmMvb3BlcmF0aW9ucy9LZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQudHMiLCJzcmMvZmVhdHVyZXMvRWRpdG9yU2VsZWN0aW9uc0JlaGF2aW91ck92ZXJyaWRlLnRzIiwic3JjL3V0aWxzL2NoZWNrYm94UmUudHMiLCJzcmMvdXRpbHMvaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gudHMiLCJzcmMvb3BlcmF0aW9ucy9DcmVhdGVOZXdJdGVtLnRzIiwic3JjL29wZXJhdGlvbnMvT3V0ZGVudExpc3QudHMiLCJzcmMvb3BlcmF0aW9ucy9PdXRkZW50TGlzdElmSXRzRW1wdHkudHMiLCJzcmMvZmVhdHVyZXMvRW50ZXJCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy91dGlscy9jcmVhdGVFZGl0b3JDYWxsYmFjay50cyIsInNyYy9mZWF0dXJlcy9MaXN0c0ZvbGRpbmdDb21tYW5kcy50cyIsInNyYy9vcGVyYXRpb25zL0luZGVudExpc3QudHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlTGlzdERvd24udHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlTGlzdFVwLnRzIiwic3JjL2ZlYXR1cmVzL0xpc3RzTW92ZW1lbnRDb21tYW5kcy50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydC50cyIsInNyYy9mZWF0dXJlcy9NZXRhQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvZmVhdHVyZXMvUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50LnRzIiwic3JjL2ZlYXR1cmVzL1NldHRpbmdzVGFiLnRzIiwic3JjL2ZlYXR1cmVzL1NoaWZ0VGFiQmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvZmVhdHVyZXMvU3lzdGVtSW5mby50cyIsInNyYy9mZWF0dXJlcy9UYWJCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9mZWF0dXJlcy9WZXJ0aWNhbExpbmVzLnRzIiwic3JjL3NlcnZpY2VzL0NoYW5nZXNBcHBsaWNhdG9yLnRzIiwic3JjL3NlcnZpY2VzL0lNRURldGVjdG9yLnRzIiwic3JjL3NlcnZpY2VzL0xvZ2dlci50cyIsInNyYy9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzLnRzIiwic3JjL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lci50cyIsInNyYy9zZXJ2aWNlcy9QYXJzZXIudHMiLCJzcmMvc2VydmljZXMvU2V0dGluZ3MudHMiLCJzcmMvT2JzaWRpYW5PdXRsaW5lclBsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMucHVzaChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy5wdXNoKF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBMaXN0TGluZSwgUG9zaXRpb24sIFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmUgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gdGhpcy5yb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KChsKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBjdXJzb3IuY2ggPT09IGwuZnJvbS5jaCArIGxpc3QuZ2V0Q2hlY2tib3hMZW5ndGgoKSAmJlxuICAgICAgICBjdXJzb3IubGluZSA9PT0gbC5mcm9tLmxpbmVcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRJdGVtKHJvb3QsIGN1cnNvcik7XG4gICAgfSBlbHNlIGlmIChsaW5lTm8gPiAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzTm90ZUxpbmUocm9vdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c05vdGVMaW5lKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgbGluZXM6IExpc3RMaW5lW10sXG4gICAgbGluZU5vOiBudW1iZXJcbiAgKSB7XG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vIC0gMV0udG8pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkSXRlbShyb290OiBSb290LCBjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBpZiAocHJldi5pc0ZvbGRlZCgpKSB7XG4gICAgICBjb25zdCBmb2xkUm9vdCA9IHByZXYuZ2V0VG9wRm9sZFJvb3QoKTtcbiAgICAgIGNvbnN0IGZpcnN0TGluZUVuZCA9IGZvbGRSb290LmdldExpbmVzSW5mbygpWzBdLnRvO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGZpcnN0TGluZUVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihwcmV2LmdldExhc3RMaW5lQ29udGVudEVuZCgpKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IEVkaXRvciwgZWRpdG9ySW5mb0ZpZWxkIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7XG4gIGZvbGRFZmZlY3QsXG4gIGZvbGRhYmxlLFxuICBmb2xkZWRSYW5nZXMsXG4gIHVuZm9sZEVmZmVjdCxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRWRpdG9yVmlldywgcnVuU2NvcGVIYW5kbGVycyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmV4cG9ydCBjbGFzcyBNeUVkaXRvclBvc2l0aW9uIHtcbiAgbGluZTogbnVtYmVyO1xuICBjaDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JSYW5nZSB7XG4gIGZyb206IE15RWRpdG9yUG9zaXRpb247XG4gIHRvOiBNeUVkaXRvclBvc2l0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JTZWxlY3Rpb24ge1xuICBhbmNob3I6IE15RWRpdG9yUG9zaXRpb247XG4gIGhlYWQ6IE15RWRpdG9yUG9zaXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGl0b3JGcm9tU3RhdGUoc3RhdGU6IEVkaXRvclN0YXRlKSB7XG4gIGNvbnN0IHsgZWRpdG9yIH0gPSBzdGF0ZS5maWVsZChlZGl0b3JJbmZvRmllbGQpO1xuXG4gIGlmICghZWRpdG9yKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbmV3IE15RWRpdG9yKGVkaXRvcik7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgT2JzaWRpYW5ab29tUGx1Z2luPzoge1xuICAgICAgZ2V0Wm9vbVJhbmdlKGU6IEVkaXRvcik6IE15RWRpdG9yUmFuZ2U7XG4gICAgICB6b29tT3V0KGU6IEVkaXRvcik6IHZvaWQ7XG4gICAgICB6b29tSW4oZTogRWRpdG9yLCBsaW5lOiBudW1iZXIpOiB2b2lkO1xuICAgICAgcmVmcmVzaFpvb20/KGU6IEVkaXRvcik6IHZvaWQ7XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb2xkSW5zaWRlKHZpZXc6IEVkaXRvclZpZXcsIGZyb206IG51bWJlciwgdG86IG51bWJlcikge1xuICBsZXQgZm91bmQ6IHsgZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcbiAgZm9sZGVkUmFuZ2VzKHZpZXcuc3RhdGUpLmJldHdlZW4oZnJvbSwgdG8sIChmcm9tLCB0bykgPT4ge1xuICAgIGlmICghZm91bmQgfHwgZm91bmQuZnJvbSA+IGZyb20pIGZvdW5kID0geyBmcm9tLCB0byB9O1xuICB9KTtcbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3Ige1xuICBwcml2YXRlIHZpZXc6IEVkaXRvclZpZXc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlOiBFZGl0b3IpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHRoaXMudmlldyA9ICh0aGlzLmUgYXMgYW55KS5jbTtcbiAgfVxuXG4gIGdldEN1cnNvcigpOiBNeUVkaXRvclBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5lLmdldEN1cnNvcigpO1xuICB9XG5cbiAgZ2V0TGluZShuOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0TGluZShuKTtcbiAgfVxuXG4gIGxhc3RMaW5lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZS5sYXN0TGluZSgpO1xuICB9XG5cbiAgbGlzdFNlbGVjdGlvbnMoKTogTXlFZGl0b3JTZWxlY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZS5saXN0U2VsZWN0aW9ucygpO1xuICB9XG5cbiAgZ2V0UmFuZ2UoZnJvbTogTXlFZGl0b3JQb3NpdGlvbiwgdG86IE15RWRpdG9yUG9zaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0UmFuZ2UoZnJvbSwgdG8pO1xuICB9XG5cbiAgcmVwbGFjZVJhbmdlKFxuICAgIHJlcGxhY2VtZW50OiBzdHJpbmcsXG4gICAgZnJvbTogTXlFZGl0b3JQb3NpdGlvbixcbiAgICB0bzogTXlFZGl0b3JQb3NpdGlvblxuICApOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5lLnJlcGxhY2VSYW5nZShyZXBsYWNlbWVudCwgZnJvbSwgdG8pO1xuICB9XG5cbiAgc2V0U2VsZWN0aW9ucyhzZWxlY3Rpb25zOiBNeUVkaXRvclNlbGVjdGlvbltdKTogdm9pZCB7XG4gICAgdGhpcy5lLnNldFNlbGVjdGlvbnMoc2VsZWN0aW9ucyk7XG4gIH1cblxuICBzZXRWYWx1ZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmUuc2V0VmFsdWUodGV4dCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIG9mZnNldFRvUG9zKG9mZnNldDogbnVtYmVyKTogTXlFZGl0b3JQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZS5vZmZzZXRUb1BvcyhvZmZzZXQpO1xuICB9XG5cbiAgcG9zVG9PZmZzZXQocG9zOiBNeUVkaXRvclBvc2l0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5lLnBvc1RvT2Zmc2V0KHBvcyk7XG4gIH1cblxuICBmb2xkKG46IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmlldyB9ID0gdGhpcztcbiAgICBjb25zdCBsID0gdmlldy5saW5lQmxvY2tBdCh2aWV3LnN0YXRlLmRvYy5saW5lKG4gKyAxKS5mcm9tKTtcbiAgICBjb25zdCByYW5nZSA9IGZvbGRhYmxlKHZpZXcuc3RhdGUsIGwuZnJvbSwgbC50byk7XG5cbiAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLmZyb20gPT09IHJhbmdlLnRvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IFtmb2xkRWZmZWN0Lm9mKHJhbmdlKV0gfSk7XG4gIH1cblxuICB1bmZvbGQobjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyB2aWV3IH0gPSB0aGlzO1xuICAgIGNvbnN0IGwgPSB2aWV3LmxpbmVCbG9ja0F0KHZpZXcuc3RhdGUuZG9jLmxpbmUobiArIDEpLmZyb20pO1xuICAgIGNvbnN0IHJhbmdlID0gZm9sZEluc2lkZSh2aWV3LCBsLmZyb20sIGwudG8pO1xuXG4gICAgaWYgKCFyYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZpZXcuZGlzcGF0Y2goeyBlZmZlY3RzOiBbdW5mb2xkRWZmZWN0Lm9mKHJhbmdlKV0gfSk7XG4gIH1cblxuICBnZXRBbGxGb2xkZWRMaW5lcygpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgYyA9IGZvbGRlZFJhbmdlcyh0aGlzLnZpZXcuc3RhdGUpLml0ZXIoKTtcbiAgICBjb25zdCByZXM6IG51bWJlcltdID0gW107XG4gICAgd2hpbGUgKGMudmFsdWUpIHtcbiAgICAgIHJlcy5wdXNoKHRoaXMub2Zmc2V0VG9Qb3MoYy5mcm9tKS5saW5lKTtcbiAgICAgIGMubmV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgdHJpZ2dlck9uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgcnVuU2NvcGVIYW5kbGVycyh0aGlzLnZpZXcsIGUsIFwiZWRpdG9yXCIpO1xuICB9XG5cbiAgZ2V0Wm9vbVJhbmdlKCk6IE15RWRpdG9yUmFuZ2UgfCBudWxsIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLmdldFpvb21SYW5nZSh0aGlzLmUpO1xuICB9XG5cbiAgem9vbU91dCgpIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLnpvb21PdXQodGhpcy5lKTtcbiAgfVxuXG4gIHpvb21JbihsaW5lOiBudW1iZXIpIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLnpvb21Jbih0aGlzLmUsIGxpbmUpO1xuICB9XG5cbiAgdHJ5UmVmcmVzaFpvb20obGluZTogbnVtYmVyKSB7XG4gICAgaWYgKCF3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4ucmVmcmVzaFpvb20pIHtcbiAgICAgIHdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4ucmVmcmVzaFpvb20odGhpcy5lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lk9ic2lkaWFuWm9vbVBsdWdpbi56b29tSW4odGhpcy5lLCBsaW5lKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciwgZ2V0RWRpdG9yRnJvbVN0YXRlIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soY29uZmlnOiB7XG4gIGNoZWNrPzogKGVkaXRvcjogTXlFZGl0b3IpID0+IGJvb2xlYW47XG4gIHJ1bjogKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBzaG91bGRVcGRhdGU6IGJvb2xlYW47XG4gICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBib29sZWFuO1xuICB9O1xufSkge1xuICBjb25zdCBjaGVjayA9IGNvbmZpZy5jaGVjayB8fCAoKCkgPT4gdHJ1ZSk7XG4gIGNvbnN0IHsgcnVuIH0gPSBjb25maWc7XG5cbiAgcmV0dXJuICh2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgZWRpdG9yID0gZ2V0RWRpdG9yRnJvbVN0YXRlKHZpZXcuc3RhdGUpO1xuXG4gICAgaWYgKCFjaGVjayhlZGl0b3IpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgeyBzaG91bGRVcGRhdGUsIHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gcnVuKGVkaXRvcik7XG5cbiAgICByZXR1cm4gc2hvdWxkVXBkYXRlIHx8IHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmUgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZVwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgQXJyb3dMZWZ0QW5kQ3RybEFycm93TGVmdEJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJBcnJvd0xlZnRcIixcbiAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHdpbjogXCJjLUFycm93TGVmdFwiLFxuICAgICAgICAgIGxpbnV4OiBcImMtQXJyb3dMZWZ0XCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwibmV2ZXJcIiAmJlxuICAgICAgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZShyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gY21wUG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gYS5saW5lIC0gYi5saW5lIHx8IGEuY2ggLSBiLmNoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF4UG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gY21wUG9zKGEsIGIpIDwgMCA/IGIgOiBhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluUG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gY21wUG9zKGEsIGIpIDwgMCA/IGEgOiBiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSYW5nZXNJbnRlcnNlY3RzKFxuICBhOiBbUG9zaXRpb24sIFBvc2l0aW9uXSxcbiAgYjogW1Bvc2l0aW9uLCBQb3NpdGlvbl1cbikge1xuICByZXR1cm4gY21wUG9zKGFbMV0sIGJbMF0pID49IDAgJiYgY21wUG9zKGFbMF0sIGJbMV0pIDw9IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3Q6IFJvb3QpIHtcbiAgZnVuY3Rpb24gdmlzaXQocGFyZW50OiBSb290IHwgTGlzdCkge1xuICAgIGxldCBpbmRleCA9IDE7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHBhcmVudC5nZXRDaGlsZHJlbigpKSB7XG4gICAgICBpZiAoL1xcZCtcXC4vLnRlc3QoY2hpbGQuZ2V0QnVsbGV0KCkpKSB7XG4gICAgICAgIGNoaWxkLnJlcGxhdGVCdWxsZXQoYCR7aW5kZXgrK30uYCk7XG4gICAgICB9XG5cbiAgICAgIHZpc2l0KGNoaWxkKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdChyb290KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbiB7XG4gIGNoOiBudW1iZXI7XG4gIGxpbmU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0TGluZSB7XG4gIHRleHQ6IHN0cmluZztcbiAgZnJvbTogUG9zaXRpb247XG4gIHRvOiBQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYW5nZSB7XG4gIGFuY2hvcjogUG9zaXRpb247XG4gIGhlYWQ6IFBvc2l0aW9uO1xufVxuXG5sZXQgaWRTZXEgPSAwO1xuXG5leHBvcnQgY2xhc3MgTGlzdCB7XG4gIHByaXZhdGUgaWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBwYXJlbnQ6IExpc3QgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjaGlsZHJlbjogTGlzdFtdID0gW107XG4gIHByaXZhdGUgbm90ZXNJbmRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm9vdDogUm9vdCxcbiAgICBwcml2YXRlIGluZGVudDogc3RyaW5nLFxuICAgIHByaXZhdGUgYnVsbGV0OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBvcHRpb25hbENoZWNrYm94OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBzcGFjZUFmdGVyQnVsbGV0OiBzdHJpbmcsXG4gICAgZmlyc3RMaW5lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBmb2xkUm9vdDogYm9vbGVhblxuICApIHtcbiAgICB0aGlzLmlkID0gaWRTZXErKztcbiAgICB0aGlzLmxpbmVzLnB1c2goZmlyc3RMaW5lKTtcbiAgfVxuXG4gIGdldElEKCkge1xuICAgIHJldHVybiB0aGlzLmlkO1xuICB9XG5cbiAgZ2V0Tm90ZXNJbmRlbnQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubm90ZXNJbmRlbnQ7XG4gIH1cblxuICBzZXROb3Rlc0luZGVudChub3Rlc0luZGVudDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm90ZXMgaW5kZW50IGFscmVhZHkgcHJvdmlkZWRgKTtcbiAgICB9XG4gICAgdGhpcy5ub3Rlc0luZGVudCA9IG5vdGVzSW5kZW50O1xuICB9XG5cbiAgYWRkTGluZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5ub3Rlc0luZGVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGFkZCBsaW5lLCBub3RlcyBpbmRlbnQgc2hvdWxkIGJlIHByb3ZpZGVkIGZpcnN0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzLnB1c2godGV4dCk7XG4gIH1cblxuICByZXBsYWNlTGluZXMobGluZXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEgJiYgdGhpcy5ub3Rlc0luZGVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGFkZCBsaW5lLCBub3RlcyBpbmRlbnQgc2hvdWxkIGJlIHByb3ZpZGVkIGZpcnN0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzID0gbGluZXM7XG4gIH1cblxuICBnZXRMaW5lQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0Um9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb290O1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uY29uY2F0KCk7XG4gIH1cblxuICBnZXRMaW5lc0luZm8oKTogTGlzdExpbmVbXSB7XG4gICAgY29uc3Qgc3RhcnRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMF07XG5cbiAgICByZXR1cm4gdGhpcy5saW5lcy5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IHN0YXJ0TGluZSArIGk7XG4gICAgICBjb25zdCBzdGFydENoID1cbiAgICAgICAgaSA9PT0gMCA/IHRoaXMuZ2V0Q29udGVudFN0YXJ0Q2goKSA6IHRoaXMubm90ZXNJbmRlbnQubGVuZ3RoO1xuICAgICAgY29uc3QgZW5kQ2ggPSBzdGFydENoICsgcm93Lmxlbmd0aDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGV4dDogcm93LFxuICAgICAgICBmcm9tOiB7IGxpbmUsIGNoOiBzdGFydENoIH0sXG4gICAgICAgIHRvOiB7IGxpbmUsIGNoOiBlbmRDaCB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5saW5lcy5jb25jYXQoKTtcbiAgfVxuXG4gIGdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpIHtcbiAgICBjb25zdCBzdGFydExpbmUgPSB0aGlzLnJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZih0aGlzKVswXTtcblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBzdGFydExpbmUsXG4gICAgICBjaDogdGhpcy5nZXRDb250ZW50U3RhcnRDaCgpLFxuICAgIH07XG4gIH1cblxuICBnZXRGaXJzdExpbmVDb250ZW50U3RhcnRBZnRlckNoZWNrYm94KCkge1xuICAgIGNvbnN0IHN0YXJ0TGluZSA9IHRoaXMucm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKHRoaXMpWzBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IHN0YXJ0TGluZSxcbiAgICAgIGNoOiB0aGlzLmdldENvbnRlbnRTdGFydENoKCkgKyB0aGlzLmdldENoZWNrYm94TGVuZ3RoKCksXG4gICAgfTtcbiAgfVxuXG4gIGdldExhc3RMaW5lQ29udGVudEVuZCgpIHtcbiAgICBjb25zdCBlbmRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMV07XG4gICAgY29uc3QgZW5kQ2ggPVxuICAgICAgdGhpcy5saW5lcy5sZW5ndGggPT09IDFcbiAgICAgICAgPyB0aGlzLmdldENvbnRlbnRTdGFydENoKCkgKyB0aGlzLmxpbmVzWzBdLmxlbmd0aFxuICAgICAgICA6IHRoaXMubm90ZXNJbmRlbnQubGVuZ3RoICsgdGhpcy5saW5lc1t0aGlzLmxpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aDtcblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBlbmRMaW5lLFxuICAgICAgY2g6IGVuZENoLFxuICAgIH07XG4gIH1cblxuICBnZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGFzdENoaWxkKCkuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExhc3RDaGlsZCgpIHtcbiAgICBsZXQgbGFzdENoaWxkOiBMaXN0ID0gdGhpcztcblxuICAgIHdoaWxlICghbGFzdENoaWxkLmlzRW1wdHkoKSkge1xuICAgICAgbGFzdENoaWxkID0gbGFzdENoaWxkLmdldENoaWxkcmVuKCkubGFzdCgpO1xuICAgIH1cblxuICAgIHJldHVybiBsYXN0Q2hpbGQ7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRlbnRTdGFydENoKCkge1xuICAgIHJldHVybiB0aGlzLmluZGVudC5sZW5ndGggKyB0aGlzLmJ1bGxldC5sZW5ndGggKyAxO1xuICB9XG5cbiAgaXNGb2xkZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZm9sZFJvb3QpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmlzRm9sZGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNGb2xkUm9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb2xkUm9vdDtcbiAgfVxuXG4gIGdldFRvcEZvbGRSb290KCkge1xuICAgIGxldCB0bXA6IExpc3QgPSB0aGlzO1xuICAgIGxldCBmb2xkUm9vdDogTGlzdCB8IG51bGwgPSBudWxsO1xuICAgIHdoaWxlICh0bXApIHtcbiAgICAgIGlmICh0bXAuaXNGb2xkUm9vdCgpKSB7XG4gICAgICAgIGZvbGRSb290ID0gdG1wO1xuICAgICAgfVxuICAgICAgdG1wID0gdG1wLnBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGZvbGRSb290O1xuICB9XG5cbiAgZ2V0TGV2ZWwoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0TGV2ZWwoKSArIDE7XG4gIH1cblxuICB1bmluZGVudENvbnRlbnQoZnJvbTogbnVtYmVyLCB0aWxsOiBudW1iZXIpIHtcbiAgICB0aGlzLmluZGVudCA9IHRoaXMuaW5kZW50LnNsaWNlKDAsIGZyb20pICsgdGhpcy5pbmRlbnQuc2xpY2UodGlsbCk7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubm90ZXNJbmRlbnQgPVxuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKDAsIGZyb20pICsgdGhpcy5ub3Rlc0luZGVudC5zbGljZSh0aWxsKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgIGNoaWxkLnVuaW5kZW50Q29udGVudChmcm9tLCB0aWxsKTtcbiAgICB9XG4gIH1cblxuICBpbmRlbnRDb250ZW50KGluZGVudFBvczogbnVtYmVyLCBpbmRlbnRDaGFyczogc3RyaW5nKSB7XG4gICAgdGhpcy5pbmRlbnQgPVxuICAgICAgdGhpcy5pbmRlbnQuc2xpY2UoMCwgaW5kZW50UG9zKSArXG4gICAgICBpbmRlbnRDaGFycyArXG4gICAgICB0aGlzLmluZGVudC5zbGljZShpbmRlbnRQb3MpO1xuICAgIGlmICh0aGlzLm5vdGVzSW5kZW50ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm5vdGVzSW5kZW50ID1cbiAgICAgICAgdGhpcy5ub3Rlc0luZGVudC5zbGljZSgwLCBpbmRlbnRQb3MpICtcbiAgICAgICAgaW5kZW50Q2hhcnMgK1xuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKGluZGVudFBvcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBjaGlsZC5pbmRlbnRDb250ZW50KGluZGVudFBvcywgaW5kZW50Q2hhcnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpcnN0TGluZUluZGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRlbnQ7XG4gIH1cblxuICBnZXRCdWxsZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVsbGV0O1xuICB9XG5cbiAgZ2V0U3BhY2VBZnRlckJ1bGxldCgpIHtcbiAgICByZXR1cm4gdGhpcy5zcGFjZUFmdGVyQnVsbGV0O1xuICB9XG5cbiAgZ2V0Q2hlY2tib3hMZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWxDaGVja2JveC5sZW5ndGg7XG4gIH1cblxuICByZXBsYXRlQnVsbGV0KGJ1bGxldDogc3RyaW5nKSB7XG4gICAgdGhpcy5idWxsZXQgPSBidWxsZXQ7XG4gIH1cblxuICBnZXRQYXJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgYWRkQmVmb3JlQWxsKGxpc3Q6IExpc3QpIHtcbiAgICB0aGlzLmNoaWxkcmVuLnVuc2hpZnQobGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgYWRkQWZ0ZXJBbGwobGlzdDogTGlzdCkge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaChsaXN0KTtcbiAgICBsaXN0LnBhcmVudCA9IHRoaXM7XG4gIH1cblxuICByZW1vdmVDaGlsZChsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpLCAxKTtcbiAgICBsaXN0LnBhcmVudCA9IG51bGw7XG4gIH1cblxuICBhZGRCZWZvcmUoYmVmb3JlOiBMaXN0LCBsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihiZWZvcmUpO1xuICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGksIDAsIGxpc3QpO1xuICAgIGxpc3QucGFyZW50ID0gdGhpcztcbiAgfVxuXG4gIGFkZEFmdGVyKGJlZm9yZTogTGlzdCwgbGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YoYmVmb3JlKTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpICsgMSwgMCwgbGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgZ2V0UHJldlNpYmxpbmdPZihsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICByZXR1cm4gaSA+IDAgPyB0aGlzLmNoaWxkcmVuW2kgLSAxXSA6IG51bGw7XG4gIH1cblxuICBnZXROZXh0U2libGluZ09mKGxpc3Q6IExpc3QpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKGxpc3QpO1xuICAgIHJldHVybiBpID49IDAgJiYgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoID8gdGhpcy5jaGlsZHJlbltpICsgMV0gOiBudWxsO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcmludCgpIHtcbiAgICBsZXQgcmVzID0gXCJcIjtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5saW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzICs9XG4gICAgICAgIGkgPT09IDBcbiAgICAgICAgICA/IHRoaXMuaW5kZW50ICsgdGhpcy5idWxsZXQgKyB0aGlzLnNwYWNlQWZ0ZXJCdWxsZXRcbiAgICAgICAgICA6IHRoaXMubm90ZXNJbmRlbnQ7XG4gICAgICByZXMgKz0gdGhpcy5saW5lc1tpXTtcbiAgICAgIHJlcyArPSBcIlxcblwiO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGNsb25lKG5ld1Jvb3Q6IFJvb3QpIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBMaXN0KFxuICAgICAgbmV3Um9vdCxcbiAgICAgIHRoaXMuaW5kZW50LFxuICAgICAgdGhpcy5idWxsZXQsXG4gICAgICB0aGlzLm9wdGlvbmFsQ2hlY2tib3gsXG4gICAgICB0aGlzLnNwYWNlQWZ0ZXJCdWxsZXQsXG4gICAgICBcIlwiLFxuICAgICAgdGhpcy5mb2xkUm9vdFxuICAgICk7XG4gICAgY2xvbmUuaWQgPSB0aGlzLmlkO1xuICAgIGNsb25lLmxpbmVzID0gdGhpcy5saW5lcy5jb25jYXQoKTtcbiAgICBjbG9uZS5ub3Rlc0luZGVudCA9IHRoaXMubm90ZXNJbmRlbnQ7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBjbG9uZS5hZGRBZnRlckFsbChjaGlsZC5jbG9uZShuZXdSb290KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb290IHtcbiAgcHJpdmF0ZSByb290TGlzdCA9IG5ldyBMaXN0KHRoaXMsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIGZhbHNlKTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25zOiBSYW5nZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdGFydDogUG9zaXRpb24sXG4gICAgcHJpdmF0ZSBlbmQ6IFBvc2l0aW9uLFxuICAgIHNlbGVjdGlvbnM6IFJhbmdlW11cbiAgKSB7XG4gICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9ucyhzZWxlY3Rpb25zKTtcbiAgfVxuXG4gIGdldFJvb3RMaXN0KCkge1xuICAgIHJldHVybiB0aGlzLnJvb3RMaXN0O1xuICB9XG5cbiAgZ2V0Q29udGVudFJhbmdlKCk6IFtQb3NpdGlvbiwgUG9zaXRpb25dIHtcbiAgICByZXR1cm4gW3RoaXMuZ2V0Q29udGVudFN0YXJ0KCksIHRoaXMuZ2V0Q29udGVudEVuZCgpXTtcbiAgfVxuXG4gIGdldENvbnRlbnRTdGFydCgpOiBQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdGFydCB9O1xuICB9XG5cbiAgZ2V0Q29udGVudEVuZCgpOiBQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5lbmQgfTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbnMoKTogUmFuZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9ucy5tYXAoKHMpID0+ICh7XG4gICAgICBhbmNob3I6IHsgLi4ucy5hbmNob3IgfSxcbiAgICAgIGhlYWQ6IHsgLi4ucy5oZWFkIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgaGFzU2luZ2xlQ3Vyc29yKCkge1xuICAgIGlmICghdGhpcy5oYXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uc1swXTtcblxuICAgIHJldHVybiAoXG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmxpbmUgPT09IHNlbGVjdGlvbi5oZWFkLmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbi5hbmNob3IuY2ggPT09IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgKTtcbiAgfVxuXG4gIGhhc1NpbmdsZVNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbigpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbnNbdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCAtIDFdO1xuXG4gICAgY29uc3QgZnJvbSA9XG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmNoID4gc2VsZWN0aW9uLmhlYWQuY2hcbiAgICAgICAgPyBzZWxlY3Rpb24uaGVhZC5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5hbmNob3IuY2g7XG4gICAgY29uc3QgdG8gPVxuICAgICAgc2VsZWN0aW9uLmFuY2hvci5jaCA+IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgICAgID8gc2VsZWN0aW9uLmFuY2hvci5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5oZWFkLmNoO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNlbGVjdGlvbixcbiAgICAgIGZyb20sXG4gICAgICB0byxcbiAgICB9O1xuICB9XG5cbiAgZ2V0Q3Vyc29yKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc2VsZWN0aW9uc1t0aGlzLnNlbGVjdGlvbnMubGVuZ3RoIC0gMV0uaGVhZCB9O1xuICB9XG5cbiAgcmVwbGFjZUN1cnNvcihjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gW3sgYW5jaG9yOiBjdXJzb3IsIGhlYWQ6IGN1cnNvciB9XTtcbiAgfVxuXG4gIHJlcGxhY2VTZWxlY3Rpb25zKHNlbGVjdGlvbnM6IFJhbmdlW10pIHtcbiAgICBpZiAoc2VsZWN0aW9ucy5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjcmVhdGUgUm9vdCB3aXRob3V0IHNlbGVjdGlvbnNgKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gc2VsZWN0aW9ucztcbiAgfVxuXG4gIGdldExpc3RVbmRlckN1cnNvcigpOiBMaXN0IHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0VW5kZXJMaW5lKHRoaXMuZ2V0Q3Vyc29yKCkubGluZSk7XG4gIH1cblxuICBnZXRMaXN0VW5kZXJMaW5lKGxpbmU6IG51bWJlcikge1xuICAgIGlmIChsaW5lIDwgdGhpcy5zdGFydC5saW5lIHx8IGxpbmUgPiB0aGlzLmVuZC5saW5lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogTGlzdCA9IG51bGw7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLnN0YXJ0LmxpbmU7XG5cbiAgICBjb25zdCB2aXNpdEFyciA9IChsbDogTGlzdFtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGwgb2YgbGwpIHtcbiAgICAgICAgY29uc3QgbGlzdEZyb21MaW5lID0gaW5kZXg7XG4gICAgICAgIGNvbnN0IGxpc3RUaWxsTGluZSA9IGxpc3RGcm9tTGluZSArIGwuZ2V0TGluZUNvdW50KCkgLSAxO1xuXG4gICAgICAgIGlmIChsaW5lID49IGxpc3RGcm9tTGluZSAmJiBsaW5lIDw9IGxpc3RUaWxsTGluZSkge1xuICAgICAgICAgIHJlc3VsdCA9IGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBsaXN0VGlsbExpbmUgKyAxO1xuICAgICAgICAgIHZpc2l0QXJyKGwuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2aXNpdEFycih0aGlzLnJvb3RMaXN0LmdldENoaWxkcmVuKCkpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdDogTGlzdCk6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgICBsZXQgcmVzdWx0OiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGxpbmU6IG51bWJlciA9IHRoaXMuc3RhcnQubGluZTtcblxuICAgIGNvbnN0IHZpc2l0QXJyID0gKGxsOiBMaXN0W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgbCBvZiBsbCkge1xuICAgICAgICBjb25zdCBsaXN0RnJvbUxpbmUgPSBsaW5lO1xuICAgICAgICBjb25zdCBsaXN0VGlsbExpbmUgPSBsaXN0RnJvbUxpbmUgKyBsLmdldExpbmVDb3VudCgpIC0gMTtcblxuICAgICAgICBpZiAobCA9PT0gbGlzdCkge1xuICAgICAgICAgIHJlc3VsdCA9IFtsaXN0RnJvbUxpbmUsIGxpc3RUaWxsTGluZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZSA9IGxpc3RUaWxsTGluZSArIDE7XG4gICAgICAgICAgdmlzaXRBcnIobC5nZXRDaGlsZHJlbigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXRBcnIodGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgbGV0IHJlcyA9IFwiXCI7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMucm9vdExpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5yZXBsYWNlKC9cXG4kLywgXCJcIik7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBSb290KFxuICAgICAgeyAuLi50aGlzLnN0YXJ0IH0sXG4gICAgICB7IC4uLnRoaXMuZW5kIH0sXG4gICAgICB0aGlzLmdldFNlbGVjdGlvbnMoKVxuICAgICk7XG4gICAgY2xvbmUucm9vdExpc3QgPSB0aGlzLnJvb3RMaXN0LmNsb25lKGNsb25lKTtcbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQge1xuICBMaXN0LFxuICBMaXN0TGluZSxcbiAgUG9zaXRpb24sXG4gIFJvb3QsXG4gIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMsXG59IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuXG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KFxuICAgICAgKGwpID0+IGN1cnNvci5jaCA9PT0gbC5mcm9tLmNoICYmIGN1cnNvci5saW5lID09PSBsLmZyb20ubGluZVxuICAgICk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1lcmdlV2l0aFByZXZpb3VzSXRlbShyb290LCBjdXJzb3IsIGxpc3QpO1xuICAgIH0gZWxzZSBpZiAobGluZU5vID4gMCkge1xuICAgICAgdGhpcy5tZXJnZU5vdGVzKHJvb3QsIGN1cnNvciwgbGlzdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU5vdGVzKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgY3Vyc29yOiBQb3NpdGlvbixcbiAgICBsaXN0OiBMaXN0LFxuICAgIGxpbmVzOiBMaXN0TGluZVtdLFxuICAgIGxpbmVObzogbnVtYmVyXG4gICkge1xuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgcHJldkxpbmVObyA9IGxpbmVObyAtIDE7XG5cbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgLSAxLFxuICAgICAgY2g6IGxpbmVzW3ByZXZMaW5lTm9dLnRleHQubGVuZ3RoICsgbGluZXNbcHJldkxpbmVOb10uZnJvbS5jaCxcbiAgICB9KTtcblxuICAgIGxpbmVzW3ByZXZMaW5lTm9dLnRleHQgKz0gbGluZXNbbGluZU5vXS50ZXh0O1xuICAgIGxpbmVzLnNwbGljZShsaW5lTm8sIDEpO1xuXG4gICAgbGlzdC5yZXBsYWNlTGluZXMobGluZXMubWFwKChsKSA9PiBsLnRleHQpKTtcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VXaXRoUHJldmlvdXNJdGVtKHJvb3Q6IFJvb3QsIGN1cnNvcjogUG9zaXRpb24sIGxpc3Q6IExpc3QpIHtcbiAgICBpZiAocm9vdC5nZXRDaGlsZHJlbigpWzBdID09PSBsaXN0ICYmIGxpc3QuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm90aEFyZUVtcHR5ID0gcHJldi5pc0VtcHR5KCkgJiYgbGlzdC5pc0VtcHR5KCk7XG4gICAgY29uc3QgcHJldklzRW1wdHlBbmRTYW1lTGV2ZWwgPVxuICAgICAgcHJldi5pc0VtcHR5KCkgJiYgIWxpc3QuaXNFbXB0eSgpICYmIHByZXYuZ2V0TGV2ZWwoKSA9PT0gbGlzdC5nZXRMZXZlbCgpO1xuICAgIGNvbnN0IGxpc3RJc0VtcHR5QW5kUHJldklzUGFyZW50ID1cbiAgICAgIGxpc3QuaXNFbXB0eSgpICYmIHByZXYuZ2V0TGV2ZWwoKSA9PT0gbGlzdC5nZXRMZXZlbCgpIC0gMTtcblxuICAgIGlmIChib3RoQXJlRW1wdHkgfHwgcHJldklzRW1wdHlBbmRTYW1lTGV2ZWwgfHwgbGlzdElzRW1wdHlBbmRQcmV2SXNQYXJlbnQpIHtcbiAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgICBjb25zdCBwcmV2RW5kID0gcHJldi5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKTtcblxuICAgICAgaWYgKCFwcmV2LmdldE5vdGVzSW5kZW50KCkgJiYgbGlzdC5nZXROb3Rlc0luZGVudCgpKSB7XG4gICAgICAgIHByZXYuc2V0Tm90ZXNJbmRlbnQoXG4gICAgICAgICAgcHJldi5nZXRGaXJzdExpbmVJbmRlbnQoKSArXG4gICAgICAgICAgICBsaXN0LmdldE5vdGVzSW5kZW50KCkuc2xpY2UobGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGgpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9sZExpbmVzID0gcHJldi5nZXRMaW5lcygpO1xuICAgICAgY29uc3QgbmV3TGluZXMgPSBsaXN0LmdldExpbmVzKCk7XG4gICAgICBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSAxXSArPSBuZXdMaW5lc1swXTtcbiAgICAgIGNvbnN0IHJlc3VsdExpbmVzID0gb2xkTGluZXMuY29uY2F0KG5ld0xpbmVzLnNsaWNlKDEpKTtcblxuICAgICAgcHJldi5yZXBsYWNlTGluZXMocmVzdWx0TGluZXMpO1xuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuXG4gICAgICBmb3IgKGNvbnN0IGMgb2YgbGlzdC5nZXRDaGlsZHJlbigpKSB7XG4gICAgICAgIGxpc3QucmVtb3ZlQ2hpbGQoYyk7XG4gICAgICAgIHByZXYuYWRkQWZ0ZXJBbGwoYyk7XG4gICAgICB9XG5cbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihwcmV2RW5kKTtcblxuICAgICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9EZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgaW1lRGV0ZWN0b3I6IElNRURldGVjdG9yLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUGVyZm9ybWVyOiBPcGVyYXRpb25QZXJmb3JtZXJcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcIkJhY2tzcGFjZVwiLFxuICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ICE9PSBcIm5ldmVyXCIgJiZcbiAgICAgICF0aGlzLmltZURldGVjdG9yLmlzT3BlbmVkKClcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jb25zdCBCRVRURVJfTElTVFNfQk9EWV9DTEFTUyA9IFwib3V0bGluZXItcGx1Z2luLWJldHRlci1saXN0c1wiO1xuXG5leHBvcnQgY2xhc3MgQmV0dGVyTGlzdHNTdHlsZXMgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgcHJpdmF0ZSB1cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgb2JzaWRpYW5TZXR0aW5nczogT2JzaWRpYW5TZXR0aW5nc1xuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnVwZGF0ZUJvZHlDbGFzcygpO1xuICAgIHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVCb2R5Q2xhc3MoKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwpO1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShCRVRURVJfTElTVFNfQk9EWV9DTEFTUyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJvZHlDbGFzcyA9ICgpID0+IHtcbiAgICBjb25zdCBzaG91bGRFeGlzdHMgPVxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzO1xuICAgIGNvbnN0IGV4aXN0cyA9IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKEJFVFRFUl9MSVNUU19CT0RZX0NMQVNTKTtcblxuICAgIGlmIChzaG91bGRFeGlzdHMgJiYgIWV4aXN0cykge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKEJFVFRFUl9MSVNUU19CT0RZX0NMQVNTKTtcbiAgICB9XG5cbiAgICBpZiAoIXNob3VsZEV4aXN0cyAmJiBleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShCRVRURVJfTElTVFNfQk9EWV9DTEFTUyk7XG4gICAgfVxuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QsIG1heFBvcywgbWluUG9zIH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdEFsbENvbnRlbnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSByb290LmdldFNlbGVjdGlvbnMoKVswXTtcbiAgICBjb25zdCBbcm9vdFN0YXJ0LCByb290RW5kXSA9IHJvb3QuZ2V0Q29udGVudFJhbmdlKCk7XG5cbiAgICBjb25zdCBzZWxlY3Rpb25Gcm9tID0gbWluUG9zKHNlbGVjdGlvbi5hbmNob3IsIHNlbGVjdGlvbi5oZWFkKTtcbiAgICBjb25zdCBzZWxlY3Rpb25UbyA9IG1heFBvcyhzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uaGVhZCk7XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3Rpb25Gcm9tLmxpbmUgPCByb290U3RhcnQubGluZSB8fFxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA+IHJvb3RFbmQubGluZVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA9PT0gcm9vdFN0YXJ0LmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbkZyb20uY2ggPT09IHJvb3RTdGFydC5jaCAmJlxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA9PT0gcm9vdEVuZC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Uby5jaCA9PT0gcm9vdEVuZC5jaFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGNvbnRlbnRTdGFydCA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0QWZ0ZXJDaGVja2JveCgpO1xuICAgIGNvbnN0IGNvbnRlbnRFbmQgPSBsaXN0LmdldExhc3RMaW5lQ29udGVudEVuZCgpO1xuXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uRnJvbS5saW5lIDwgY29udGVudFN0YXJ0LmxpbmUgfHxcbiAgICAgIHNlbGVjdGlvblRvLmxpbmUgPiBjb250ZW50RW5kLmxpbmVcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA9PT0gY29udGVudFN0YXJ0LmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbkZyb20uY2ggPT09IGNvbnRlbnRTdGFydC5jaCAmJlxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA9PT0gY29udGVudEVuZC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Uby5jaCA9PT0gY29udGVudEVuZC5jaFxuICAgICkge1xuICAgICAgLy8gc2VsZWN0IHdob2xlIGxpc3RcbiAgICAgIHJvb3QucmVwbGFjZVNlbGVjdGlvbnMoW3sgYW5jaG9yOiByb290U3RhcnQsIGhlYWQ6IHJvb3RFbmQgfV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzZWxlY3Qgd2hvbGUgbGluZVxuICAgICAgcm9vdC5yZXBsYWNlU2VsZWN0aW9ucyhbeyBhbmNob3I6IGNvbnRlbnRTdGFydCwgaGVhZDogY29udGVudEVuZCB9XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgU2VsZWN0QWxsQ29udGVudCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL1NlbGVjdEFsbENvbnRlbnRcIjtcbmltcG9ydCB7IElNRURldGVjdG9yIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRURldGVjdG9yXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIEN0cmxBQW5kQ21kQUJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJjLWFcIixcbiAgICAgICAgICBtYWM6IFwibS1hXCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIgJiYgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBTZWxlY3RBbGxDb250ZW50KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kIH0gZnJvbSBcIi4vRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmRcIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIERlbGV0ZVRpbGxOZXh0TGluZUNvbnRlbnRTdGFydCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgZGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQ6IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge1xuICAgIHRoaXMuZGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQgPVxuICAgICAgbmV3IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kKHJvb3QpO1xuICB9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnNob3VsZFN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnNob3VsZFVwZGF0ZSgpO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcblxuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleChcbiAgICAgIChsKSA9PiBjdXJzb3IuY2ggPT09IGwudG8uY2ggJiYgY3Vyc29yLmxpbmUgPT09IGwudG8ubGluZVxuICAgICk7XG5cbiAgICBpZiAobGluZU5vID09PSBsaW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICBjb25zdCBuZXh0TGluZSA9IGxpbmVzW2xpbmVOb10udG8ubGluZSArIDE7XG4gICAgICBjb25zdCBuZXh0TGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShuZXh0TGluZSk7XG4gICAgICBpZiAoIW5leHRMaXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihuZXh0TGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKSk7XG4gICAgICB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnBlcmZvcm0oKTtcbiAgICB9IGVsc2UgaWYgKGxpbmVObyA+PSAwKSB7XG4gICAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vICsgMV0uZnJvbSk7XG4gICAgICB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnBlcmZvcm0oKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbE5leHRMaW5lQ29udGVudFN0YXJ0IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRGVsZXRlVGlsbE5leHRMaW5lQ29udGVudFN0YXJ0XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uUGVyZm9ybWVyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrIH0gZnJvbSBcIi4uL3V0aWxzL2NyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVCZWhhdmlvdXJPdmVycmlkZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBpbWVEZXRlY3RvcjogSU1FRGV0ZWN0b3IsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIGtleW1hcC5vZihbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiRGVsZXRlXCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwibmV2ZXJcIiAmJlxuICAgICAgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBEZWxldGVUaWxsTmV4dExpbmVDb250ZW50U3RhcnQocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IExpc3QsIFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5pbnRlcmZhY2UgQ3Vyc29yQW5jaG9yIHtcbiAgY3Vyc29yTGlzdDogTGlzdDtcbiAgbGluZURpZmY6IG51bWJlcjtcbiAgY2hEaWZmOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvb3Q6IFJvb3QsXG4gICAgcHJpdmF0ZSBsaXN0VG9Nb3ZlOiBMaXN0LFxuICAgIHByaXZhdGUgcGxhY2VUb01vdmU6IExpc3QsXG4gICAgcHJpdmF0ZSB3aGVyZVRvTW92ZTogXCJiZWZvcmVcIiB8IFwiYWZ0ZXJcIiB8IFwiaW5zaWRlXCIsXG4gICAgcHJpdmF0ZSBkZWZhdWx0SW5kZW50Q2hhcnM6IHN0cmluZ1xuICApIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBpZiAodGhpcy5saXN0VG9Nb3ZlID09PSB0aGlzLnBsYWNlVG9Nb3ZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBjdXJzb3JBbmNob3IgPSB0aGlzLmNhbGN1bGF0ZUN1cnNvckFuY2hvcigpO1xuICAgIHRoaXMubW92ZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5nZUluZGVudCgpO1xuICAgIHRoaXMucmVzdG9yZUN1cnNvcihjdXJzb3JBbmNob3IpO1xuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHModGhpcy5yb290KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlQ3Vyc29yQW5jaG9yKCk6IEN1cnNvckFuY2hvciB7XG4gICAgY29uc3QgY3Vyc29yTGluZSA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKS5saW5lO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICB0aGlzLmxpc3RUb01vdmUuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSxcbiAgICAgIHRoaXMubGlzdFRvTW92ZS5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKS5saW5lLFxuICAgICAgdGhpcy5wbGFjZVRvTW92ZS5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lLFxuICAgICAgdGhpcy5wbGFjZVRvTW92ZS5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKS5saW5lLFxuICAgIF07XG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZSA9IE1hdGgubWluKC4uLmxpbmVzKTtcbiAgICBjb25zdCBsaXN0RW5kTGluZSA9IE1hdGgubWF4KC4uLmxpbmVzKTtcblxuICAgIGlmIChjdXJzb3JMaW5lIDwgbGlzdFN0YXJ0TGluZSB8fCBjdXJzb3JMaW5lID4gbGlzdEVuZExpbmUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJzb3JMaXN0ID0gdGhpcy5yb290LmdldExpc3RVbmRlckxpbmUoY3Vyc29yLmxpbmUpO1xuICAgIGNvbnN0IGN1cnNvckxpc3RTdGFydCA9IGN1cnNvckxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG4gICAgY29uc3QgbGluZURpZmYgPSBjdXJzb3IubGluZSAtIGN1cnNvckxpc3RTdGFydC5saW5lO1xuICAgIGNvbnN0IGNoRGlmZiA9IGN1cnNvci5jaCAtIGN1cnNvckxpc3RTdGFydC5jaDtcblxuICAgIHJldHVybiB7IGN1cnNvckxpc3QsIGxpbmVEaWZmLCBjaERpZmYgfTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUxpc3QoKSB7XG4gICAgdGhpcy5saXN0VG9Nb3ZlLmdldFBhcmVudCgpLnJlbW92ZUNoaWxkKHRoaXMubGlzdFRvTW92ZSk7XG5cbiAgICBzd2l0Y2ggKHRoaXMud2hlcmVUb01vdmUpIHtcbiAgICAgIGNhc2UgXCJiZWZvcmVcIjpcbiAgICAgICAgdGhpcy5wbGFjZVRvTW92ZVxuICAgICAgICAgIC5nZXRQYXJlbnQoKVxuICAgICAgICAgIC5hZGRCZWZvcmUodGhpcy5wbGFjZVRvTW92ZSwgdGhpcy5saXN0VG9Nb3ZlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJhZnRlclwiOlxuICAgICAgICB0aGlzLnBsYWNlVG9Nb3ZlXG4gICAgICAgICAgLmdldFBhcmVudCgpXG4gICAgICAgICAgLmFkZEFmdGVyKHRoaXMucGxhY2VUb01vdmUsIHRoaXMubGlzdFRvTW92ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiaW5zaWRlXCI6XG4gICAgICAgIHRoaXMucGxhY2VUb01vdmUuYWRkQmVmb3JlQWxsKHRoaXMubGlzdFRvTW92ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlSW5kZW50KCkge1xuICAgIGNvbnN0IG9sZEluZGVudCA9IHRoaXMubGlzdFRvTW92ZS5nZXRGaXJzdExpbmVJbmRlbnQoKTtcbiAgICBjb25zdCBuZXdJbmRlbnQgPVxuICAgICAgdGhpcy53aGVyZVRvTW92ZSA9PT0gXCJpbnNpZGVcIlxuICAgICAgICA/IHRoaXMucGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lSW5kZW50KCkgKyB0aGlzLmRlZmF1bHRJbmRlbnRDaGFyc1xuICAgICAgICA6IHRoaXMucGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lSW5kZW50KCk7XG4gICAgdGhpcy5saXN0VG9Nb3ZlLnVuaW5kZW50Q29udGVudCgwLCBvbGRJbmRlbnQubGVuZ3RoKTtcbiAgICB0aGlzLmxpc3RUb01vdmUuaW5kZW50Q29udGVudCgwLCBuZXdJbmRlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXN0b3JlQ3Vyc29yKGN1cnNvckFuY2hvcjogQ3Vyc29yQW5jaG9yKSB7XG4gICAgaWYgKGN1cnNvckFuY2hvcikge1xuICAgICAgY29uc3QgY3Vyc29yTGlzdFN0YXJ0ID1cbiAgICAgICAgY3Vyc29yQW5jaG9yLmN1cnNvckxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG5cbiAgICAgIHRoaXMucm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgICAgbGluZTogY3Vyc29yTGlzdFN0YXJ0LmxpbmUgKyBjdXJzb3JBbmNob3IubGluZURpZmYsXG4gICAgICAgIGNoOiBjdXJzb3JMaXN0U3RhcnQuY2ggKyBjdXJzb3JBbmNob3IuY2hEaWZmLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdoZW4geW91IG1vdmUgYSBsaXN0LCB0aGUgc2NyZWVuIHNjcm9sbHMgdG8gdGhlIGN1cnNvci5cbiAgICAgIC8vIEl0IGlzIGJldHRlciB0byBtb3ZlIHRoZSBjdXJzb3IgaW50byB0aGUgdmlld3BvcnQgdGhhbiBsZXQgdGhlIHNjcmVlbiBzY3JvbGwuXG4gICAgICB0aGlzLnJvb3QucmVwbGFjZUN1cnNvcih0aGlzLmxpc3RUb01vdmUuZ2V0TGFzdExpbmVDb250ZW50RW5kKCkpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgTm90aWNlLCBQbGF0Zm9ybSwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgZ2V0SW5kZW50VW5pdCwgaW5kZW50U3RyaW5nIH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBTdGF0ZUVmZmVjdCwgU3RhdGVGaWVsZCB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRGVjb3JhdGlvbiwgRGVjb3JhdGlvblNldCwgRWRpdG9yVmlldyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yLCBnZXRFZGl0b3JGcm9tU3RhdGUgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb25cIjtcbmltcG9ydCB7IExpc3QsIFJvb3QsIGNtcFBvcyB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBPYnNpZGlhblNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3NcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QYXJzZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5cbmNvbnN0IEJPRFlfQ0xBU1MgPSBcIm91dGxpbmVyLXBsdWdpbi1kbmRcIjtcblxuZXhwb3J0IGNsYXNzIERyYWdBbmREcm9wIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIHByaXZhdGUgZHJvcFpvbmU6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIGRyb3Bab25lUGFkZGluZzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgcHJlU3RhcnQ6IERyYWdBbmREcm9wUHJlU3RhcnRTdGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0YXRlOiBEcmFnQW5kRHJvcFN0YXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgb2Jpc2lkaWFuOiBPYnNpZGlhblNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihbXG4gICAgICBkcmFnZ2luZ0xpbmVzU3RhdGVGaWVsZCxcbiAgICAgIGRyb3BwaW5nTGluZXNTdGF0ZUZpZWxkLFxuICAgIF0pO1xuICAgIHRoaXMuZW5hYmxlRmVhdHVyZVRvZ2dsZSgpO1xuICAgIHRoaXMuY3JlYXRlRHJvcFpvbmUoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMucmVtb3ZlRHJvcFpvbmUoKTtcbiAgICB0aGlzLmRpc2FibGVGZWF0dXJlVG9nZ2xlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZUZlYXR1cmVUb2dnbGUoKSB7XG4gICAgdGhpcy5zZXR0aW5ncy5vbkNoYW5nZSh0aGlzLmhhbmRsZVNldHRpbmdzQ2hhbmdlKTtcbiAgICB0aGlzLmhhbmRsZVNldHRpbmdzQ2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVGZWF0dXJlVG9nZ2xlKCkge1xuICAgIHRoaXMuc2V0dGluZ3MucmVtb3ZlQ2FsbGJhY2sodGhpcy5oYW5kbGVTZXR0aW5nc0NoYW5nZSk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJPRFlfQ0xBU1MpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEcm9wWm9uZSgpIHtcbiAgICB0aGlzLmRyb3Bab25lUGFkZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1kcm9wLXpvbmUtcGFkZGluZ1wiKTtcbiAgICB0aGlzLmRyb3Bab25lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLmRyb3Bab25lLmNsYXNzTGlzdC5hZGQoXCJvdXRsaW5lci1wbHVnaW4tZHJvcC16b25lXCIpO1xuICAgIHRoaXMuZHJvcFpvbmUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIHRoaXMuZHJvcFpvbmUuYXBwZW5kQ2hpbGQodGhpcy5kcm9wWm9uZVBhZGRpbmcpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5kcm9wWm9uZSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZURyb3Bab25lKCkge1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5kcm9wWm9uZSk7XG4gICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcgPSBudWxsO1xuICAgIHRoaXMuZHJvcFpvbmUgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMuaGFuZGxlTW91c2VEb3duLCB7XG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5oYW5kbGVNb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMuaGFuZGxlTW91c2VVcCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5oYW5kbGVLZXlEb3duKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLmhhbmRsZU1vdXNlRG93biwge1xuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMuaGFuZGxlTW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLmhhbmRsZU1vdXNlVXApO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNldHRpbmdzQ2hhbmdlID0gKCkgPT4ge1xuICAgIGlmICghaXNGZWF0dXJlU3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZXR0aW5ncy5kcmFnQW5kRHJvcCkge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfQ0xBU1MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9DTEFTUyk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlTW91c2VEb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoXG4gICAgICAhaXNGZWF0dXJlU3VwcG9ydGVkKCkgfHxcbiAgICAgICF0aGlzLnNldHRpbmdzLmRyYWdBbmREcm9wIHx8XG4gICAgICAhaXNDbGlja09uQnVsbGV0KGUpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmlldyA9IGdldEVkaXRvclZpZXdGcm9tSFRNTEVsZW1lbnQoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIGlmICghdmlldykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5wcmVTdGFydCA9IHtcbiAgICAgIHg6IGUueCxcbiAgICAgIHk6IGUueSxcbiAgICAgIHZpZXcsXG4gICAgfTtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZU1vdXNlTW92ZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKHRoaXMucHJlU3RhcnQpIHtcbiAgICAgIHRoaXMuc3RhcnREcmFnZ2luZygpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5kZXRlY3RBbmREcmF3RHJvcFpvbmUoZS54LCBlLnkpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZU1vdXNlVXAgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJlU3RhcnQpIHtcbiAgICAgIHRoaXMucHJlU3RhcnQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAmJiBlLmNvZGUgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgIHRoaXMuY2FuY2VsRHJhZ2dpbmcoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzdGFydERyYWdnaW5nKCkge1xuICAgIGNvbnN0IHsgeCwgeSwgdmlldyB9ID0gdGhpcy5wcmVTdGFydDtcbiAgICB0aGlzLnByZVN0YXJ0ID0gbnVsbDtcblxuICAgIGNvbnN0IGVkaXRvciA9IGdldEVkaXRvckZyb21TdGF0ZSh2aWV3LnN0YXRlKTtcbiAgICBjb25zdCBwb3MgPSBlZGl0b3Iub2Zmc2V0VG9Qb3Modmlldy5wb3NBdENvb3Jkcyh7IHgsIHkgfSkpO1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLnBhcnNlci5wYXJzZShlZGl0b3IsIHBvcyk7XG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShwb3MubGluZSk7XG4gICAgY29uc3Qgc3RhdGUgPSBuZXcgRHJhZ0FuZERyb3BTdGF0ZSh2aWV3LCBlZGl0b3IsIHJvb3QsIGxpc3QpO1xuXG4gICAgaWYgKCFzdGF0ZS5oYXNEcm9wVmFyaWFudHMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLmhpZ2hsaWdodERyYWdnaW5nTGluZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0QW5kRHJhd0Ryb3Bab25lKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGF0ZS5jYWxjdWxhdGVOZWFyZXN0RHJvcFZhcmlhbnQoeCwgeSk7XG4gICAgdGhpcy5kcmF3RHJvcFpvbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuY2VsRHJhZ2dpbmcoKSB7XG4gICAgdGhpcy5zdGF0ZS5kcm9wVmFyaWFudCA9IG51bGw7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcERyYWdnaW5nKCkge1xuICAgIHRoaXMudW5oaWdodGxpZ2h0RHJhZ2dpbmdMaW5lcygpO1xuICAgIHRoaXMuaGlkZURyb3Bab25lKCk7XG4gICAgdGhpcy5hcHBseUNoYW5nZXMoKTtcbiAgICB0aGlzLnN0YXRlID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDaGFuZ2VzKCkge1xuICAgIGlmICghdGhpcy5zdGF0ZS5kcm9wVmFyaWFudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBkcm9wVmFyaWFudCwgZWRpdG9yLCByb290LCBsaXN0IH0gPSBzdGF0ZTtcblxuICAgIGNvbnN0IG5ld1Jvb3QgPSB0aGlzLnBhcnNlci5wYXJzZShlZGl0b3IsIHJvb3QuZ2V0Q29udGVudFN0YXJ0KCkpO1xuICAgIGlmICghaXNTYW1lUm9vdHMocm9vdCwgbmV3Um9vdCkpIHtcbiAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgIGBUaGUgaXRlbSBjYW5ub3QgYmUgbW92ZWQuIFRoZSBwYWdlIGNvbnRlbnQgY2hhbmdlZCBkdXJpbmcgdGhlIG1vdmUuYCxcbiAgICAgICAgNTAwMFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5ldmFsKFxuICAgICAgcm9vdCxcbiAgICAgIG5ldyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24oXG4gICAgICAgIHJvb3QsXG4gICAgICAgIGxpc3QsXG4gICAgICAgIGRyb3BWYXJpYW50LnBsYWNlVG9Nb3ZlLFxuICAgICAgICBkcm9wVmFyaWFudC53aGVyZVRvTW92ZSxcbiAgICAgICAgdGhpcy5vYmlzaWRpYW4uZ2V0RGVmYXVsdEluZGVudENoYXJzKClcbiAgICAgICksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWdobGlnaHREcmFnZ2luZ0xpbmVzKCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBsaXN0LCBlZGl0b3IsIHZpZXcgfSA9IHN0YXRlO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBjb25zdCBmcm9tTGluZSA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZTtcbiAgICBjb25zdCB0aWxsTGluZSA9IGxpc3QuZ2V0Q29udGVudEVuZEluY2x1ZGluZ0NoaWxkcmVuKCkubGluZTtcbiAgICBmb3IgKGxldCBpID0gZnJvbUxpbmU7IGkgPD0gdGlsbExpbmU7IGkrKykge1xuICAgICAgbGluZXMucHVzaChlZGl0b3IucG9zVG9PZmZzZXQoeyBsaW5lOiBpLCBjaDogMCB9KSk7XG4gICAgfVxuICAgIHZpZXcuZGlzcGF0Y2goe1xuICAgICAgZWZmZWN0czogW2RuZFN0YXJ0ZWQub2YobGluZXMpXSxcbiAgICB9KTtcblxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1kcmFnZ2luZ1wiKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5oaWdodGxpZ2h0RHJhZ2dpbmdMaW5lcygpIHtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJvdXRsaW5lci1wbHVnaW4tZHJhZ2dpbmdcIik7XG5cbiAgICB0aGlzLnN0YXRlLnZpZXcuZGlzcGF0Y2goe1xuICAgICAgZWZmZWN0czogW2RuZEVuZGVkLm9mKCldLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3RHJvcFpvbmUoKSB7XG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdGhpcztcbiAgICBjb25zdCB7IHZpZXcsIGVkaXRvciwgZHJvcFZhcmlhbnQgfSA9IHN0YXRlO1xuXG4gICAgY29uc3QgbmV3UGFyZW50ID1cbiAgICAgIGRyb3BWYXJpYW50LndoZXJlVG9Nb3ZlID09PSBcImluc2lkZVwiXG4gICAgICAgID8gZHJvcFZhcmlhbnQucGxhY2VUb01vdmVcbiAgICAgICAgOiBkcm9wVmFyaWFudC5wbGFjZVRvTW92ZS5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBuZXdQYXJlbnRJc1Jvb3RMaXN0ID0gIW5ld1BhcmVudC5nZXRQYXJlbnQoKTtcblxuICAgIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5yb3VuZChcbiAgICAgICAgdmlldy5jb250ZW50RE9NLm9mZnNldFdpZHRoIC1cbiAgICAgICAgICAoZHJvcFZhcmlhbnQubGVmdCAtIHRoaXMuc3RhdGUubGVmdFBhZGRpbmcpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLnRvcCA9IGRyb3BWYXJpYW50LnRvcCArIFwicHhcIjtcbiAgICAgIHRoaXMuZHJvcFpvbmUuc3R5bGUubGVmdCA9IGRyb3BWYXJpYW50LmxlZnQgKyBcInB4XCI7XG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLndpZHRoID0gd2lkdGggKyBcInB4XCI7XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QgbGV2ZWwgPSBuZXdQYXJlbnQuZ2V0TGV2ZWwoKTtcbiAgICAgIGNvbnN0IGluZGVudFdpZHRoID0gdGhpcy5zdGF0ZS50YWJXaWR0aDtcbiAgICAgIGNvbnN0IHdpZHRoID0gaW5kZW50V2lkdGggKiBsZXZlbDtcbiAgICAgIGNvbnN0IGRhc2hQYWRkaW5nID0gMztcbiAgICAgIGNvbnN0IGRhc2hXaWR0aCA9IGluZGVudFdpZHRoIC0gZGFzaFBhZGRpbmc7XG4gICAgICBjb25zdCBjb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgXCItLWNvbG9yLWFjY2VudFwiXG4gICAgICApO1xuXG4gICAgICB0aGlzLmRyb3Bab25lUGFkZGluZy5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgIHRoaXMuZHJvcFpvbmVQYWRkaW5nLnN0eWxlLm1hcmdpbkxlZnQgPSBgLSR7d2lkdGh9cHhgO1xuICAgICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMCR7d2lkdGh9JTIwNCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDbGluZSUyMHgxJTNEJTIyMCUyMiUyMHkxJTNEJTIyMCUyMiUyMHgyJTNEJTIyJHt3aWR0aH0lMjIlMjB5MiUzRCUyMjAlMjIlMjBzdHJva2UlM0QlMjIke2NvbG9yfSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjglMjIlMjBzdHJva2UtZGFzaGFycmF5JTNEJTIyJHtkYXNoV2lkdGh9JTIwJHtkYXNoUGFkZGluZ30lMjIlMkYlM0UlM0MlMkZzdmclM0UnKWA7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZS52aWV3LmRpc3BhdGNoKHtcbiAgICAgIGVmZmVjdHM6IFtcbiAgICAgICAgZG5kTW92ZWQub2YoXG4gICAgICAgICAgbmV3UGFyZW50SXNSb290TGlzdFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IGVkaXRvci5wb3NUb09mZnNldCh7XG4gICAgICAgICAgICAgICAgbGluZTogbmV3UGFyZW50LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUsXG4gICAgICAgICAgICAgICAgY2g6IDAsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlRHJvcFpvbmUoKSB7XG4gICAgdGhpcy5kcm9wWm9uZS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gIH1cbn1cblxuaW50ZXJmYWNlIERyb3BWYXJpYW50IHtcbiAgbGluZTogbnVtYmVyO1xuICBsZXZlbDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIHRvcDogbnVtYmVyO1xuICBwbGFjZVRvTW92ZTogTGlzdDtcbiAgd2hlcmVUb01vdmU6IFwiYWZ0ZXJcIiB8IFwiYmVmb3JlXCIgfCBcImluc2lkZVwiO1xufVxuXG5pbnRlcmZhY2UgRHJhZ0FuZERyb3BQcmVTdGFydFN0YXRlIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHZpZXc6IEVkaXRvclZpZXc7XG59XG5cbmNsYXNzIERyYWdBbmREcm9wU3RhdGUge1xuICBwcml2YXRlIGRyb3BWYXJpYW50czogTWFwPHN0cmluZywgRHJvcFZhcmlhbnQ+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgZHJvcFZhcmlhbnQ6IERyb3BWYXJpYW50ID0gbnVsbDtcbiAgcHVibGljIGxlZnRQYWRkaW5nID0gMDtcbiAgcHVibGljIHRhYldpZHRoID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlldzogRWRpdG9yVmlldyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWRpdG9yOiBNeUVkaXRvcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgcm9vdDogUm9vdCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFxuICApIHtcbiAgICB0aGlzLmNvbGxlY3REcm9wVmFyaWFudHMoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZUxlZnRQYWRkaW5nKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVUYWJXaWR0aCgpO1xuICB9XG5cbiAgZ2V0RHJvcFZhcmlhbnRzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZHJvcFZhcmlhbnRzLnZhbHVlcygpKTtcbiAgfVxuXG4gIGhhc0Ryb3BWYXJpYW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wVmFyaWFudHMuc2l6ZSA+IDA7XG4gIH1cblxuICBjYWxjdWxhdGVOZWFyZXN0RHJvcFZhcmlhbnQoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICBjb25zdCB7IHZpZXcsIGVkaXRvciB9ID0gdGhpcztcblxuICAgIGNvbnN0IGRyb3BWYXJpYW50cyA9IHRoaXMuZ2V0RHJvcFZhcmlhbnRzKCk7XG5cbiAgICBmb3IgKGNvbnN0IHYgb2YgZHJvcFZhcmlhbnRzKSB7XG4gICAgICBjb25zdCB7IHBsYWNlVG9Nb3ZlIH0gPSB2O1xuXG4gICAgICB2LmxlZnQgPSB0aGlzLmxlZnRQYWRkaW5nICsgKHYubGV2ZWwgLSAxKSAqIHRoaXMudGFiV2lkdGg7XG5cbiAgICAgIGNvbnN0IHBvc2l0aW9uQWZ0ZXJMaXN0ID1cbiAgICAgICAgdi53aGVyZVRvTW92ZSA9PT0gXCJhZnRlclwiIHx8IHYud2hlcmVUb01vdmUgPT09IFwiaW5zaWRlXCI7XG4gICAgICBjb25zdCBsaW5lID0gcG9zaXRpb25BZnRlckxpc3RcbiAgICAgICAgPyBwbGFjZVRvTW92ZS5nZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKS5saW5lXG4gICAgICAgIDogcGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZTtcbiAgICAgIGNvbnN0IGxpbmVQb3MgPSBlZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgICBsaW5lLFxuICAgICAgICBjaDogMCxcbiAgICAgIH0pO1xuXG4gICAgICB2LnRvcCA9IHZpZXcuY29vcmRzQXRQb3MobGluZVBvcywgLTEpLnRvcDtcblxuICAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJMaXN0KSB7XG4gICAgICAgIHYudG9wICs9IHZpZXcubGluZUJsb2NrQXQobGluZVBvcykuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICAvLyBCZXR0ZXIgdmVydGljYWwgYWxpZ25tZW50XG4gICAgICB2LnRvcCAtPSA4O1xuICAgIH1cblxuICAgIGNvbnN0IG5lYXJlc3RMaW5lVG9wID0gZHJvcFZhcmlhbnRzXG4gICAgICAuc29ydCgoYSwgYikgPT4gTWF0aC5hYnMoeSAtIGEudG9wKSAtIE1hdGguYWJzKHkgLSBiLnRvcCkpXG4gICAgICAuZmlyc3QoKS50b3A7XG5cbiAgICBjb25zdCB2YXJpYW5zT25OZWFyZXN0TGluZSA9IGRyb3BWYXJpYW50cy5maWx0ZXIoXG4gICAgICAodikgPT4gTWF0aC5hYnModi50b3AgLSBuZWFyZXN0TGluZVRvcCkgPD0gNFxuICAgICk7XG5cbiAgICB0aGlzLmRyb3BWYXJpYW50ID0gdmFyaWFuc09uTmVhcmVzdExpbmVcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBNYXRoLmFicyh4IC0gYS5sZWZ0KSAtIE1hdGguYWJzKHggLSBiLmxlZnQpKVxuICAgICAgLmZpcnN0KCk7XG4gIH1cblxuICBwcml2YXRlIGFkZERyb3BWYXJpYW50KHY6IERyb3BWYXJpYW50KSB7XG4gICAgdGhpcy5kcm9wVmFyaWFudHMuc2V0KGAke3YubGluZX0gJHt2LmxldmVsfWAsIHYpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0RHJvcFZhcmlhbnRzKCkge1xuICAgIGNvbnN0IHZpc2l0ID0gKGxpc3RzOiBMaXN0W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgcGxhY2VUb01vdmUgb2YgbGlzdHMpIHtcbiAgICAgICAgY29uc3QgbGluZUJlZm9yZSA9IHBsYWNlVG9Nb3ZlLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmU7XG4gICAgICAgIGNvbnN0IGxpbmVBZnRlciA9IHBsYWNlVG9Nb3ZlLmdldENvbnRlbnRFbmRJbmNsdWRpbmdDaGlsZHJlbigpLmxpbmUgKyAxO1xuXG4gICAgICAgIGNvbnN0IGxldmVsID0gcGxhY2VUb01vdmUuZ2V0TGV2ZWwoKTtcblxuICAgICAgICB0aGlzLmFkZERyb3BWYXJpYW50KHtcbiAgICAgICAgICBsaW5lOiBsaW5lQmVmb3JlLFxuICAgICAgICAgIGxldmVsLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgIHdoZXJlVG9Nb3ZlOiBcImJlZm9yZVwiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZGREcm9wVmFyaWFudCh7XG4gICAgICAgICAgbGluZTogbGluZUFmdGVyLFxuICAgICAgICAgIGxldmVsLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgIHdoZXJlVG9Nb3ZlOiBcImFmdGVyXCIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwbGFjZVRvTW92ZSA9PT0gdGhpcy5saXN0KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGxhY2VUb01vdmUuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgdGhpcy5hZGREcm9wVmFyaWFudCh7XG4gICAgICAgICAgICBsaW5lOiBsaW5lQWZ0ZXIsXG4gICAgICAgICAgICBsZXZlbDogbGV2ZWwgKyAxLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgICAgd2hlcmVUb01vdmU6IFwiaW5zaWRlXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlzaXQocGxhY2VUb01vdmUuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXQodGhpcy5yb290LmdldENoaWxkcmVuKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVMZWZ0UGFkZGluZygpIHtcbiAgICB0aGlzLmxlZnRQYWRkaW5nID0gdGhpcy52aWV3LmNvb3Jkc0F0UG9zKDAsIC0xKS5sZWZ0O1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVUYWJXaWR0aCgpIHtcbiAgICBjb25zdCB7IHZpZXcgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBzaW5nbGVJbmRlbnQgPSBpbmRlbnRTdHJpbmcodmlldy5zdGF0ZSwgZ2V0SW5kZW50VW5pdCh2aWV3LnN0YXRlKSk7XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB2aWV3LnN0YXRlLmRvYy5saW5lczsgaSsrKSB7XG4gICAgICBjb25zdCBsaW5lID0gdmlldy5zdGF0ZS5kb2MubGluZShpKTtcblxuICAgICAgaWYgKGxpbmUudGV4dC5zdGFydHNXaXRoKHNpbmdsZUluZGVudCkpIHtcbiAgICAgICAgY29uc3QgYSA9IHZpZXcuY29vcmRzQXRQb3MobGluZS5mcm9tLCAtMSk7XG4gICAgICAgIGNvbnN0IGIgPSB2aWV3LmNvb3Jkc0F0UG9zKGxpbmUuZnJvbSArIHNpbmdsZUluZGVudC5sZW5ndGgsIC0xKTtcbiAgICAgICAgdGhpcy50YWJXaWR0aCA9IGIubGVmdCAtIGEubGVmdDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudGFiV2lkdGggPSB2aWV3LmRlZmF1bHRDaGFyYWN0ZXJXaWR0aCAqIGdldEluZGVudFVuaXQodmlldy5zdGF0ZSk7XG4gIH1cbn1cblxuY29uc3QgZG5kU3RhcnRlZCA9IFN0YXRlRWZmZWN0LmRlZmluZTxudW1iZXJbXT4oe1xuICBtYXA6IChsaW5lcywgY2hhbmdlKSA9PiBsaW5lcy5tYXAoKGwpID0+IGNoYW5nZS5tYXBQb3MobCkpLFxufSk7XG5cbmNvbnN0IGRuZE1vdmVkID0gU3RhdGVFZmZlY3QuZGVmaW5lPG51bWJlciB8IG51bGw+KHtcbiAgbWFwOiAobGluZSwgY2hhbmdlKSA9PiAobGluZSAhPT0gbnVsbCA/IGNoYW5nZS5tYXBQb3MobGluZSkgOiBsaW5lKSxcbn0pO1xuXG5jb25zdCBkbmRFbmRlZCA9IFN0YXRlRWZmZWN0LmRlZmluZTx2b2lkPigpO1xuXG5jb25zdCBkcmFnZ2luZ0xpbmVEZWNvcmF0aW9uID0gRGVjb3JhdGlvbi5saW5lKHtcbiAgY2xhc3M6IFwib3V0bGluZXItcGx1Z2luLWRyYWdnaW5nLWxpbmVcIixcbn0pO1xuXG5jb25zdCBkcm9wcGluZ0xpbmVEZWNvcmF0aW9uID0gRGVjb3JhdGlvbi5saW5lKHtcbiAgY2xhc3M6IFwib3V0bGluZXItcGx1Z2luLWRyb3BwaW5nLWxpbmVcIixcbn0pO1xuXG5jb25zdCBkcmFnZ2luZ0xpbmVzU3RhdGVGaWVsZCA9IFN0YXRlRmllbGQuZGVmaW5lPERlY29yYXRpb25TZXQ+KHtcbiAgY3JlYXRlOiAoKSA9PiBEZWNvcmF0aW9uLm5vbmUsXG5cbiAgdXBkYXRlOiAoZG5kU3RhdGUsIHRyKSA9PiB7XG4gICAgZG5kU3RhdGUgPSBkbmRTdGF0ZS5tYXAodHIuY2hhbmdlcyk7XG5cbiAgICBmb3IgKGNvbnN0IGUgb2YgdHIuZWZmZWN0cykge1xuICAgICAgaWYgKGUuaXMoZG5kU3RhcnRlZCkpIHtcbiAgICAgICAgZG5kU3RhdGUgPSBkbmRTdGF0ZS51cGRhdGUoe1xuICAgICAgICAgIGFkZDogZS52YWx1ZS5tYXAoKGwpID0+IGRyYWdnaW5nTGluZURlY29yYXRpb24ucmFuZ2UobCwgbCkpLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUuaXMoZG5kRW5kZWQpKSB7XG4gICAgICAgIGRuZFN0YXRlID0gRGVjb3JhdGlvbi5ub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkbmRTdGF0ZTtcbiAgfSxcblxuICBwcm92aWRlOiAoZikgPT4gRWRpdG9yVmlldy5kZWNvcmF0aW9ucy5mcm9tKGYpLFxufSk7XG5cbmNvbnN0IGRyb3BwaW5nTGluZXNTdGF0ZUZpZWxkID0gU3RhdGVGaWVsZC5kZWZpbmU8RGVjb3JhdGlvblNldD4oe1xuICBjcmVhdGU6ICgpID0+IERlY29yYXRpb24ubm9uZSxcblxuICB1cGRhdGU6IChkbmREcm9wcGluZ1N0YXRlLCB0cikgPT4ge1xuICAgIGRuZERyb3BwaW5nU3RhdGUgPSBkbmREcm9wcGluZ1N0YXRlLm1hcCh0ci5jaGFuZ2VzKTtcblxuICAgIGZvciAoY29uc3QgZSBvZiB0ci5lZmZlY3RzKSB7XG4gICAgICBpZiAoZS5pcyhkbmRNb3ZlZCkpIHtcbiAgICAgICAgZG5kRHJvcHBpbmdTdGF0ZSA9XG4gICAgICAgICAgZS52YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgICAgPyBEZWNvcmF0aW9uLm5vbmVcbiAgICAgICAgICAgIDogRGVjb3JhdGlvbi5zZXQoZHJvcHBpbmdMaW5lRGVjb3JhdGlvbi5yYW5nZShlLnZhbHVlLCBlLnZhbHVlKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlLmlzKGRuZEVuZGVkKSkge1xuICAgICAgICBkbmREcm9wcGluZ1N0YXRlID0gRGVjb3JhdGlvbi5ub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkbmREcm9wcGluZ1N0YXRlO1xuICB9LFxuXG4gIHByb3ZpZGU6IChmKSA9PiBFZGl0b3JWaWV3LmRlY29yYXRpb25zLmZyb20oZiksXG59KTtcblxuZnVuY3Rpb24gZ2V0RWRpdG9yVmlld0Zyb21IVE1MRWxlbWVudChlOiBIVE1MRWxlbWVudCkge1xuICB3aGlsZSAoZSAmJiAhZS5jbGFzc0xpc3QuY29udGFpbnMoXCJjbS1lZGl0b3JcIikpIHtcbiAgICBlID0gZS5wYXJlbnRFbGVtZW50O1xuICB9XG5cbiAgaWYgKCFlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gRWRpdG9yVmlldy5maW5kRnJvbURPTShlKTtcbn1cblxuZnVuY3Rpb24gaXNDbGlja09uQnVsbGV0KGU6IE1vdXNlRXZlbnQpIHtcbiAgbGV0IGVsID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgd2hpbGUgKGVsKSB7XG4gICAgaWYgKFxuICAgICAgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwiY20tZm9ybWF0dGluZy1saXN0XCIpIHx8XG4gICAgICBlbC5jbGFzc0xpc3QuY29udGFpbnMoXCJjbS1mb2xkLWluZGljYXRvclwiKSB8fFxuICAgICAgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwidGFzay1saXN0LWl0ZW0tY2hlY2tib3hcIilcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGVsID0gZWwucGFyZW50RWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNTYW1lUm9vdHMoYTogUm9vdCwgYjogUm9vdCkge1xuICBjb25zdCBbYVN0YXJ0LCBhRW5kXSA9IGEuZ2V0Q29udGVudFJhbmdlKCk7XG4gIGNvbnN0IFtiU3RhcnQsIGJFbmRdID0gYi5nZXRDb250ZW50UmFuZ2UoKTtcblxuICBpZiAoY21wUG9zKGFTdGFydCwgYlN0YXJ0KSAhPT0gMCB8fCBjbXBQb3MoYUVuZCwgYkVuZCkgIT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gYS5wcmludCgpID09PSBiLnByaW50KCk7XG59XG5cbmZ1bmN0aW9uIGlzRmVhdHVyZVN1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIFBsYXRmb3JtLmlzRGVza3RvcDtcbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgaWYgKCFsaXN0LmlzRm9sZGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb2xkUm9vdCA9IGxpc3QuZ2V0VG9wRm9sZFJvb3QoKTtcbiAgICBjb25zdCBmaXJzdExpbmVFbmQgPSBmb2xkUm9vdC5nZXRMaW5lc0luZm8oKVswXS50bztcblxuICAgIGlmIChjdXJzb3IubGluZSA+IGZpcnN0TGluZUVuZC5saW5lKSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGZpcnN0TGluZUVuZCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBLZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGNvbnRlbnRTdGFydCA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0QWZ0ZXJDaGVja2JveCgpO1xuICAgIGNvbnN0IGxpbmVQcmVmaXggPVxuICAgICAgY29udGVudFN0YXJ0LmxpbmUgPT09IGN1cnNvci5saW5lXG4gICAgICAgID8gY29udGVudFN0YXJ0LmNoXG4gICAgICAgIDogbGlzdC5nZXROb3Rlc0luZGVudCgpLmxlbmd0aDtcblxuICAgIGlmIChjdXJzb3IuY2ggPCBsaW5lUHJlZml4KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgICAgbGluZTogY3Vyc29yLmxpbmUsXG4gICAgICAgIGNoOiBsaW5lUHJlZml4LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSwgVHJhbnNhY3Rpb24gfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IsIGdldEVkaXRvckZyb21TdGF0ZSB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9LZWVwQ3Vyc29yT3V0c2lkZUZvbGRlZExpbmVzXCI7XG5pbXBvcnQgeyBLZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9LZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnRcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QYXJzZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JTZWxlY3Rpb25zQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIEVkaXRvclN0YXRlLnRyYW5zYWN0aW9uRXh0ZW5kZXIub2YodGhpcy50cmFuc2FjdGlvbkV4dGVuZGVyKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgdHJhbnNhY3Rpb25FeHRlbmRlciA9ICh0cjogVHJhbnNhY3Rpb24pOiBudWxsID0+IHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5rZWVwQ3Vyc29yV2l0aGluQ29udGVudCA9PT0gXCJuZXZlclwiIHx8ICF0ci5zZWxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRvciA9IGdldEVkaXRvckZyb21TdGF0ZSh0ci5zdGFydFN0YXRlKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVTZWxlY3Rpb25zQ2hhbmdlcyhlZGl0b3IpO1xuICAgIH0sIDApO1xuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVTZWxlY3Rpb25zQ2hhbmdlcyA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMucGFyc2VyLnBhcnNlKGVkaXRvcik7XG5cbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCB7IHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgICAgcm9vdCxcbiAgICAgICAgbmV3IEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMocm9vdCksXG4gICAgICAgIGVkaXRvclxuICAgICAgKTtcblxuICAgICAgaWYgKHNob3VsZFN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgIHJvb3QsXG4gICAgICBuZXcgS2VlcEN1cnNvcldpdGhpbkxpc3RDb250ZW50KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImV4cG9ydCBjb25zdCBjaGVja2JveFJlID0gYFxcXFxbW15cXFxcW1xcXFxdXVxcXFxdWyBcXHRdYDtcbiIsImV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveChsaW5lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGxpbmUgPT09IFwiXCIgfHwgbGluZSA9PT0gXCJbIF0gXCI7XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgTGlzdCwgUG9zaXRpb24sIFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgY2hlY2tib3hSZSB9IGZyb20gXCIuLi91dGlscy9jaGVja2JveFJlXCI7XG5pbXBvcnQgeyBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveCB9IGZyb20gXCIuLi91dGlscy9pc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldFpvb21SYW5nZSB7XG4gIGdldFpvb21SYW5nZSgpOiB7IGZyb206IFBvc2l0aW9uOyB0bzogUG9zaXRpb24gfSB8IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVOZXdJdGVtIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb290OiBSb290LFxuICAgIHByaXZhdGUgZGVmYXVsdEluZGVudENoYXJzOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBnZXRab29tUmFuZ2U6IEdldFpvb21SYW5nZVxuICApIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSByb290LmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5hbmNob3IubGluZSAhPT0gc2VsZWN0aW9uLmhlYWQubGluZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcblxuICAgIGlmIChsaW5lcy5sZW5ndGggPT09IDEgJiYgaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZXNbMF0udGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVVbmRlckN1cnNvciA9IGxpbmVzLmZpbmQoKGwpID0+IGwuZnJvbS5saW5lID09PSBjdXJzb3IubGluZSk7XG5cbiAgICBpZiAoY3Vyc29yLmNoIDwgbGluZVVuZGVyQ3Vyc29yLmZyb20uY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IG9sZExpbmVzLCBuZXdMaW5lcyB9ID0gbGluZXMucmVkdWNlKFxuICAgICAgKGFjYywgbGluZSkgPT4ge1xuICAgICAgICBpZiAoY3Vyc29yLmxpbmUgPiBsaW5lLmZyb20ubGluZSkge1xuICAgICAgICAgIGFjYy5vbGRMaW5lcy5wdXNoKGxpbmUudGV4dCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3Vyc29yLmxpbmUgPT09IGxpbmUuZnJvbS5saW5lKSB7XG4gICAgICAgICAgY29uc3QgbGVmdCA9IGxpbmUudGV4dC5zbGljZSgwLCBzZWxlY3Rpb24uZnJvbSAtIGxpbmUuZnJvbS5jaCk7XG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBsaW5lLnRleHQuc2xpY2Uoc2VsZWN0aW9uLnRvIC0gbGluZS5mcm9tLmNoKTtcbiAgICAgICAgICBhY2Mub2xkTGluZXMucHVzaChsZWZ0KTtcbiAgICAgICAgICBhY2MubmV3TGluZXMucHVzaChyaWdodCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3Vyc29yLmxpbmUgPCBsaW5lLmZyb20ubGluZSkge1xuICAgICAgICAgIGFjYy5uZXdMaW5lcy5wdXNoKGxpbmUudGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb2xkTGluZXM6IFtdLFxuICAgICAgICBuZXdMaW5lczogW10sXG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IGNvZGVCbG9ja0JhY3RpY2tzID0gb2xkTGluZXMuam9pbihcIlxcblwiKS5zcGxpdChcImBgYFwiKS5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGlzSW5zaWRlQ29kZWJsb2NrID1cbiAgICAgIGNvZGVCbG9ja0JhY3RpY2tzID4gMCAmJiBjb2RlQmxvY2tCYWN0aWNrcyAlIDIgIT09IDA7XG5cbiAgICBpZiAoaXNJbnNpZGVDb2RlYmxvY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHpvb21SYW5nZSA9IHRoaXMuZ2V0Wm9vbVJhbmdlLmdldFpvb21SYW5nZSgpO1xuICAgIGNvbnN0IGxpc3RJc1pvb21pbmdSb290ID0gQm9vbGVhbihcbiAgICAgIHpvb21SYW5nZSAmJlxuICAgICAgICBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUgPj0gem9vbVJhbmdlLmZyb20ubGluZSAmJlxuICAgICAgICBsaXN0LmdldExhc3RMaW5lQ29udGVudEVuZCgpLmxpbmUgPD0gem9vbVJhbmdlLmZyb20ubGluZVxuICAgICk7XG5cbiAgICBjb25zdCBoYXNDaGlsZHJlbiA9ICFsaXN0LmlzRW1wdHkoKTtcbiAgICBjb25zdCBjaGlsZElzRm9sZGVkID0gbGlzdC5pc0ZvbGRSb290KCk7XG4gICAgY29uc3QgZW5kUG9zID0gbGlzdC5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKTtcbiAgICBjb25zdCBlbmRPZkxpbmUgPSBjdXJzb3IubGluZSA9PT0gZW5kUG9zLmxpbmUgJiYgY3Vyc29yLmNoID09PSBlbmRQb3MuY2g7XG5cbiAgICBjb25zdCBvbkNoaWxkTGV2ZWwgPVxuICAgICAgbGlzdElzWm9vbWluZ1Jvb3QgfHwgKGhhc0NoaWxkcmVuICYmICFjaGlsZElzRm9sZGVkICYmIGVuZE9mTGluZSk7XG5cbiAgICBjb25zdCBpbmRlbnQgPSBvbkNoaWxkTGV2ZWxcbiAgICAgID8gaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0Rmlyc3RMaW5lSW5kZW50KClcbiAgICAgICAgOiBsaXN0LmdldEZpcnN0TGluZUluZGVudCgpICsgdGhpcy5kZWZhdWx0SW5kZW50Q2hhcnNcbiAgICAgIDogbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKTtcblxuICAgIGNvbnN0IGJ1bGxldCA9XG4gICAgICBvbkNoaWxkTGV2ZWwgJiYgaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0QnVsbGV0KClcbiAgICAgICAgOiBsaXN0LmdldEJ1bGxldCgpO1xuXG4gICAgY29uc3Qgc3BhY2VBZnRlckJ1bGxldCA9XG4gICAgICBvbkNoaWxkTGV2ZWwgJiYgaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0U3BhY2VBZnRlckJ1bGxldCgpXG4gICAgICAgIDogbGlzdC5nZXRTcGFjZUFmdGVyQnVsbGV0KCk7XG5cbiAgICBjb25zdCBwcmVmaXggPSBvbGRMaW5lc1swXS5tYXRjaChjaGVja2JveFJlKSA/IFwiWyBdIFwiIDogXCJcIjtcblxuICAgIGNvbnN0IG5ld0xpc3QgPSBuZXcgTGlzdChcbiAgICAgIGxpc3QuZ2V0Um9vdCgpLFxuICAgICAgaW5kZW50LFxuICAgICAgYnVsbGV0LFxuICAgICAgcHJlZml4LFxuICAgICAgc3BhY2VBZnRlckJ1bGxldCxcbiAgICAgIHByZWZpeCArIG5ld0xpbmVzLnNoaWZ0KCksXG4gICAgICBmYWxzZVxuICAgICk7XG5cbiAgICBpZiAobmV3TGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgbmV3TGlzdC5zZXROb3Rlc0luZGVudChsaXN0LmdldE5vdGVzSW5kZW50KCkpO1xuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIG5ld0xpbmVzKSB7XG4gICAgICAgIG5ld0xpc3QuYWRkTGluZShsaW5lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob25DaGlsZExldmVsKSB7XG4gICAgICBsaXN0LmFkZEJlZm9yZUFsbChuZXdMaXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjaGlsZElzRm9sZGVkIHx8ICFlbmRPZkxpbmUpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBsaXN0LmdldENoaWxkcmVuKCk7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICBsaXN0LnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICAgICAgICBuZXdMaXN0LmFkZEFmdGVyQWxsKGNoaWxkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LmdldFBhcmVudCgpLmFkZEFmdGVyKGxpc3QsIG5ld0xpc3QpO1xuICAgIH1cblxuICAgIGxpc3QucmVwbGFjZUxpbmVzKG9sZExpbmVzKTtcblxuICAgIGNvbnN0IG5ld0xpc3RTdGFydCA9IG5ld0xpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IG5ld0xpc3RTdGFydC5saW5lLFxuICAgICAgY2g6IG5ld0xpc3RTdGFydC5jaCArIHByZWZpeC5sZW5ndGgsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCwgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBPdXRkZW50TGlzdCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG5cbiAgICBpZiAoIWdyYW5kUGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVCZWZvcmUgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgaW5kZW50Um1Gcm9tID0gcGFyZW50LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aDtcbiAgICBjb25zdCBpbmRlbnRSbVRpbGwgPSBsaXN0LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aDtcblxuICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICBncmFuZFBhcmVudC5hZGRBZnRlcihwYXJlbnQsIGxpc3QpO1xuICAgIGxpc3QudW5pbmRlbnRDb250ZW50KGluZGVudFJtRnJvbSwgaW5kZW50Um1UaWxsKTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVBZnRlciA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGxpc3RTdGFydExpbmVBZnRlciAtIGxpc3RTdGFydExpbmVCZWZvcmU7XG4gICAgY29uc3QgY2hEaWZmID0gaW5kZW50Um1UaWxsIC0gaW5kZW50Um1Gcm9tO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2ggLSBjaERpZmYsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcbmltcG9ydCB7IE91dGRlbnRMaXN0IH0gZnJvbSBcIi4vT3V0ZGVudExpc3RcIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveCB9IGZyb20gXCIuLi91dGlscy9pc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveFwiO1xuXG5leHBvcnQgY2xhc3MgT3V0ZGVudExpc3RJZkl0c0VtcHR5IGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBvdXRkZW50TGlzdDogT3V0ZGVudExpc3Q7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7XG4gICAgdGhpcy5vdXRkZW50TGlzdCA9IG5ldyBPdXRkZW50TGlzdChyb290KTtcbiAgfVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRkZW50TGlzdC5zaG91bGRTdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRkZW50TGlzdC5zaG91bGRVcGRhdGUoKTtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzKCk7XG5cbiAgICBpZiAoXG4gICAgICBsaW5lcy5sZW5ndGggPiAxIHx8XG4gICAgICAhaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZXNbMF0pIHx8XG4gICAgICBsaXN0LmdldExldmVsKCkgPT09IDFcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm91dGRlbnRMaXN0LnBlcmZvcm0oKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgUHJlYyB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBDcmVhdGVOZXdJdGVtIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvQ3JlYXRlTmV3SXRlbVwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3RJZkl0c0VtcHR5IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3V0ZGVudExpc3RJZkl0c0VtcHR5XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvUGFyc2VyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIEVudGVyQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgaW1lRGV0ZWN0b3I6IElNRURldGVjdG9yLFxuICAgIHByaXZhdGUgb2JzaWRpYW5TZXR0aW5nczogT2JzaWRpYW5TZXR0aW5ncyxcbiAgICBwcml2YXRlIHBhcnNlcjogUGFyc2VyLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUGVyZm9ybWVyOiBPcGVyYXRpb25QZXJmb3JtZXJcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBQcmVjLmhpZ2hlc3QoXG4gICAgICAgIGtleW1hcC5vZihbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIkVudGVyXCIsXG4gICAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVFbnRlckJlaGF2aW91ciAmJiAhdGhpcy5pbWVEZXRlY3Rvci5pc09wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCByb290ID0gdGhpcy5wYXJzZXIucGFyc2UoZWRpdG9yKTtcblxuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2hvdWxkVXBkYXRlOiBmYWxzZSxcbiAgICAgICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QgcmVzID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgICAgcm9vdCxcbiAgICAgICAgbmV3IE91dGRlbnRMaXN0SWZJdHNFbXB0eShyb290KSxcbiAgICAgICAgZWRpdG9yXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzLnNob3VsZFN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRJbmRlbnRDaGFycyA9IHRoaXMub2JzaWRpYW5TZXR0aW5ncy5nZXREZWZhdWx0SW5kZW50Q2hhcnMoKTtcbiAgICAgIGNvbnN0IHpvb21SYW5nZSA9IGVkaXRvci5nZXRab29tUmFuZ2UoKTtcbiAgICAgIGNvbnN0IGdldFpvb21SYW5nZSA9IHtcbiAgICAgICAgZ2V0Wm9vbVJhbmdlOiAoKSA9PiB6b29tUmFuZ2UsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXMgPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5ldmFsKFxuICAgICAgICByb290LFxuICAgICAgICBuZXcgQ3JlYXRlTmV3SXRlbShyb290LCBkZWZhdWx0SW5kZW50Q2hhcnMsIGdldFpvb21SYW5nZSksXG4gICAgICAgIGVkaXRvclxuICAgICAgKTtcblxuICAgICAgaWYgKHJlcy5zaG91bGRVcGRhdGUgJiYgem9vbVJhbmdlKSB7XG4gICAgICAgIGVkaXRvci50cnlSZWZyZXNoWm9vbSh6b29tUmFuZ2UuZnJvbS5saW5lKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gIH07XG59XG4iLCJpbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0b3JDYWxsYmFjayhjYjogKGVkaXRvcjogTXlFZGl0b3IpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgIGNvbnN0IG15RWRpdG9yID0gbmV3IE15RWRpdG9yKGVkaXRvcik7XG4gICAgY29uc3Qgc2hvdWxkU3RvcFByb3BhZ2F0aW9uID0gY2IobXlFZGl0b3IpO1xuXG4gICAgaWYgKFxuICAgICAgIXNob3VsZFN0b3BQcm9wYWdhdGlvbiAmJlxuICAgICAgd2luZG93LmV2ZW50ICYmXG4gICAgICB3aW5kb3cuZXZlbnQudHlwZSA9PT0gXCJrZXlkb3duXCJcbiAgICApIHtcbiAgICAgIG15RWRpdG9yLnRyaWdnZXJPbktleURvd24od2luZG93LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpO1xuICAgIH1cbiAgfTtcbn1cbiIsImltcG9ydCB7IE5vdGljZSwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBPYnNpZGlhblNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUVkaXRvckNhbGxiYWNrIH0gZnJvbSBcIi4uL3V0aWxzL2NyZWF0ZUVkaXRvckNhbGxiYWNrXCI7XG5cbmV4cG9ydCBjbGFzcyBMaXN0c0ZvbGRpbmdDb21tYW5kcyBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBvYnNpZGlhblNldHRpbmdzOiBPYnNpZGlhblNldHRpbmdzXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiZm9sZFwiLFxuICAgICAgaWNvbjogXCJjaGV2cm9ucy1kb3duLXVwXCIsXG4gICAgICBuYW1lOiBcIkZvbGQgdGhlIGxpc3RcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLmZvbGQpLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93VXBcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcInVuZm9sZFwiLFxuICAgICAgaWNvbjogXCJjaGV2cm9ucy11cC1kb3duXCIsXG4gICAgICBuYW1lOiBcIlVuZm9sZCB0aGUgbGlzdFwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IGNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMudW5mb2xkKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCJdLFxuICAgICAgICAgIGtleTogXCJBcnJvd0Rvd25cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgc2V0Rm9sZChlZGl0b3I6IE15RWRpdG9yLCB0eXBlOiBcImZvbGRcIiB8IFwidW5mb2xkXCIpIHtcbiAgICBpZiAoIXRoaXMub2JzaWRpYW5TZXR0aW5ncy5nZXRGb2xkU2V0dGluZ3MoKS5mb2xkSW5kZW50KSB7XG4gICAgICBuZXcgTm90aWNlKFxuICAgICAgICBgVW5hYmxlIHRvICR7dHlwZX0gYmVjYXVzZSBmb2xkaW5nIGlzIGRpc2FibGVkLiBQbGVhc2UgZW5hYmxlIFwiRm9sZCBpbmRlbnRcIiBpbiBPYnNpZGlhbiBzZXR0aW5ncy5gLFxuICAgICAgICA1MDAwXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY3Vyc29yID0gZWRpdG9yLmdldEN1cnNvcigpO1xuXG4gICAgaWYgKHR5cGUgPT09IFwiZm9sZFwiKSB7XG4gICAgICBlZGl0b3IuZm9sZChjdXJzb3IubGluZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVkaXRvci51bmZvbGQoY3Vyc29yLmxpbmUpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2xkID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRGb2xkKGVkaXRvciwgXCJmb2xkXCIpO1xuICB9O1xuXG4gIHByaXZhdGUgdW5mb2xkID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRGb2xkKGVkaXRvciwgXCJ1bmZvbGRcIik7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCwgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBJbmRlbnRMaXN0IGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290LCBwcml2YXRlIGRlZmF1bHRJbmRlbnRDaGFyczogc3RyaW5nKSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBwcmV2ID0gcGFyZW50LmdldFByZXZTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBpZiAoIXByZXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcblxuICAgIGNvbnN0IGluZGVudFBvcyA9IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoO1xuICAgIGxldCBpbmRlbnRDaGFycyA9IFwiXCI7XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIXByZXYuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IHByZXZcbiAgICAgICAgLmdldENoaWxkcmVuKClbMF1cbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwcmV2LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKGluZGVudENoYXJzID09PSBcIlwiKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3RcbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwYXJlbnQuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIWxpc3QuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3QuZ2V0Q2hpbGRyZW4oKVswXS5nZXRGaXJzdExpbmVJbmRlbnQoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIpIHtcbiAgICAgIGluZGVudENoYXJzID0gdGhpcy5kZWZhdWx0SW5kZW50Q2hhcnM7XG4gICAgfVxuXG4gICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgIHByZXYuYWRkQWZ0ZXJBbGwobGlzdCk7XG4gICAgbGlzdC5pbmRlbnRDb250ZW50KGluZGVudFBvcywgaW5kZW50Q2hhcnMpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoICsgaW5kZW50Q2hhcnMubGVuZ3RoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUxpc3REb3duIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBncmFuZFBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBuZXh0ID0gcGFyZW50LmdldE5leHRTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQmVmb3JlID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuXG4gICAgaWYgKCFuZXh0ICYmIGdyYW5kUGFyZW50KSB7XG4gICAgICBjb25zdCBuZXdQYXJlbnQgPSBncmFuZFBhcmVudC5nZXROZXh0U2libGluZ09mKHBhcmVudCk7XG5cbiAgICAgIGlmIChuZXdQYXJlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgICAgICBuZXdQYXJlbnQuYWRkQmVmb3JlQWxsKGxpc3QpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV4dCkge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgIHBhcmVudC5hZGRBZnRlcihuZXh0LCBsaXN0KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudXBkYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVBZnRlciA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGxpc3RTdGFydExpbmVBZnRlciAtIGxpc3RTdGFydExpbmVCZWZvcmU7XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcih7XG4gICAgICBsaW5lOiBjdXJzb3IubGluZSArIGxpbmVEaWZmLFxuICAgICAgY2g6IGN1cnNvci5jaCxcbiAgICB9KTtcblxuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290LCByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIE1vdmVMaXN0VXAgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IGdyYW5kUGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IHByZXYgPSBwYXJlbnQuZ2V0UHJldlNpYmxpbmdPZihsaXN0KTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVCZWZvcmUgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG5cbiAgICBpZiAoIXByZXYgJiYgZ3JhbmRQYXJlbnQpIHtcbiAgICAgIGNvbnN0IG5ld1BhcmVudCA9IGdyYW5kUGFyZW50LmdldFByZXZTaWJsaW5nT2YocGFyZW50KTtcblxuICAgICAgaWYgKG5ld1BhcmVudCkge1xuICAgICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgICAgIG5ld1BhcmVudC5hZGRBZnRlckFsbChsaXN0KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByZXYpIHtcbiAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgICBwYXJlbnQuYWRkQmVmb3JlKHByZXYsIGxpc3QpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy51cGRhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBJbmRlbnRMaXN0IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvSW5kZW50TGlzdFwiO1xuaW1wb3J0IHsgTW92ZUxpc3REb3duIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUxpc3REb3duXCI7XG5pbXBvcnQgeyBNb3ZlTGlzdFVwIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUxpc3RVcFwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9PdXRkZW50TGlzdFwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBjcmVhdGVFZGl0b3JDYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVFZGl0b3JDYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgTGlzdHNNb3ZlbWVudENvbW1hbmRzIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcIm1vdmUtbGlzdC1pdGVtLXVwXCIsXG4gICAgICBpY29uOiBcImFycm93LXVwXCIsXG4gICAgICBuYW1lOiBcIk1vdmUgbGlzdCBhbmQgc3VibGlzdHMgdXBcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLm1vdmVMaXN0VXApLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiXSxcbiAgICAgICAgICBrZXk6IFwiQXJyb3dVcFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwibW92ZS1saXN0LWl0ZW0tZG93blwiLFxuICAgICAgaWNvbjogXCJhcnJvdy1kb3duXCIsXG4gICAgICBuYW1lOiBcIk1vdmUgbGlzdCBhbmQgc3VibGlzdHMgZG93blwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IGNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMubW92ZUxpc3REb3duKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCIsIFwiU2hpZnRcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93RG93blwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiaW5kZW50LWxpc3RcIixcbiAgICAgIGljb246IFwiaW5kZW50XCIsXG4gICAgICBuYW1lOiBcIkluZGVudCB0aGUgbGlzdCBhbmQgc3VibGlzdHNcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLmluZGVudExpc3QpLFxuICAgICAgaG90a2V5czogW10sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcIm91dGRlbnQtbGlzdFwiLFxuICAgICAgaWNvbjogXCJvdXRkZW50XCIsXG4gICAgICBuYW1lOiBcIk91dGRlbnQgdGhlIGxpc3QgYW5kIHN1Ymxpc3RzXCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogY3JlYXRlRWRpdG9yQ2FsbGJhY2sodGhpcy5vdXRkZW50TGlzdCksXG4gICAgICBob3RrZXlzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBtb3ZlTGlzdERvd24gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlTGlzdERvd24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuXG4gICAgcmV0dXJuIHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcblxuICBwcml2YXRlIG1vdmVMaXN0VXAgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlTGlzdFVwKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBpbmRlbnRMaXN0ID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCB7IHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PlxuICAgICAgICBuZXcgSW5kZW50TGlzdChyb290LCB0aGlzLm9ic2lkaWFuU2V0dGluZ3MuZ2V0RGVmYXVsdEluZGVudENoYXJzKCkpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBvdXRkZW50TGlzdCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3QgeyBzaG91bGRTdG9wUHJvcGFnYXRpb24gfSA9IHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLnBlcmZvcm0oXG4gICAgICAocm9vdCkgPT4gbmV3IE91dGRlbnRMaXN0KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsQ3VycmVudExpbmVDb250ZW50U3RhcnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleCgobCkgPT4gbC5mcm9tLmxpbmUgPT09IGN1cnNvci5saW5lKTtcblxuICAgIGxpbmVzW2xpbmVOb10udGV4dCA9IGxpbmVzW2xpbmVOb10udGV4dC5zbGljZShcbiAgICAgIGN1cnNvci5jaCAtIGxpbmVzW2xpbmVOb10uZnJvbS5jaFxuICAgICk7XG5cbiAgICBsaXN0LnJlcGxhY2VMaW5lcyhsaW5lcy5tYXAoKGwpID0+IGwudGV4dCkpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcihsaW5lc1tsaW5lTm9dLmZyb20pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IERlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0RlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgTWV0YUJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIG1hYzogXCJtLUJhY2tzcGFjZVwiLFxuICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ICE9PSBcIm5ldmVyXCIgJiZcbiAgICAgICF0aGlzLmltZURldGVjdG9yLmlzT3BlbmVkKClcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbEN1cnJlbnRMaW5lQ29udGVudFN0YXJ0KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IE1hcmtkb3duUmVuZGVyZXIsIE1vZGFsLCBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jbGFzcyBSZWxlYXNlTm90ZXNNb2RhbCBleHRlbmRzIE1vZGFsIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgdGl0bGU6IHN0cmluZyxcbiAgICBwcml2YXRlIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBwcml2YXRlIGNiOiAoKSA9PiB2b2lkXG4gICkge1xuICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICB9XG5cbiAgYXN5bmMgb25PcGVuKCkge1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KHRoaXMudGl0bGUpO1xuXG4gICAgTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bihcbiAgICAgIHRoaXMuY29udGVudCxcbiAgICAgIHRoaXMuY29udGVudEVsLFxuICAgICAgXCJcIixcbiAgICAgIHRoaXMucGx1Z2luXG4gICAgKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5jYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVSZWxlYXNlcyhhOiBzdHJpbmcsIGI6IHN0cmluZykge1xuICBjb25zdCBbYU1ham9yLCBhTWlub3IsIGFQYXRjaF0gPSBhLnNwbGl0KFwiLlwiLCAzKS5tYXAoTnVtYmVyKTtcbiAgY29uc3QgW2JNYWpvciwgYk1pbm9yLCBiUGF0Y2hdID0gYi5zcGxpdChcIi5cIiwgMykubWFwKE51bWJlcik7XG5cbiAgaWYgKGFNYWpvciA9PT0gYk1ham9yKSB7XG4gICAgaWYgKGFNaW5vciA9PT0gYk1pbm9yKSB7XG4gICAgICByZXR1cm4gYVBhdGNoIC0gYlBhdGNoO1xuICAgIH1cblxuICAgIHJldHVybiBhTWlub3IgLSBiTWlub3I7XG4gIH1cblxuICByZXR1cm4gYU1ham9yIC0gYk1ham9yO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNoYW5nZWxvZygpIHtcbiAgY29uc3QgbWFya2Rvd24gPSBDSEFOR0VMT0dfTUQ7XG4gIGNvbnN0IHJlbGVhc2VOb3RlczogW3N0cmluZywgc3RyaW5nXVtdID0gW107XG4gIGxldCB2ZXJzaW9uO1xuICBsZXQgY29udGVudCA9IFwiXCI7XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIG1hcmtkb3duLnNwbGl0KFwiXFxuXCIpKSB7XG4gICAgY29uc3QgdmVyc2lvbkhlYWRlck1hdGNoZXMgPSAvXiMrXFxzKyhcXGQrXFwuXFxkK1xcLlxcZCspJC8uZXhlYyhsaW5lKTtcbiAgICBpZiAodmVyc2lvbkhlYWRlck1hdGNoZXMpIHtcbiAgICAgIGlmICh2ZXJzaW9uICYmIGNvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVsZWFzZU5vdGVzLnB1c2goW3ZlcnNpb24sIGNvbnRlbnRdKTtcbiAgICAgIH1cbiAgICAgIHZlcnNpb24gPSB2ZXJzaW9uSGVhZGVyTWF0Y2hlc1sxXTtcbiAgICAgIGNvbnRlbnQgPSBsaW5lO1xuICAgICAgY29udGVudCArPSBcIlxcblwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ICs9IGxpbmU7XG4gICAgICBjb250ZW50ICs9IFwiXFxuXCI7XG4gICAgfVxuICB9XG5cbiAgaWYgKHZlcnNpb24gJiYgY29udGVudC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgIHJlbGVhc2VOb3Rlcy5wdXNoKFt2ZXJzaW9uLCBjb250ZW50XSk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZU5vdGVzO1xufVxuXG5leHBvcnQgY2xhc3MgUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50IGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIHByaXZhdGUgbW9kYWw6IFJlbGVhc2VOb3Rlc01vZGFsIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncykge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwic2hvdy1yZWxlYXNlLW5vdGVzXCIsXG4gICAgICBuYW1lOiBcIlNob3cgUmVsZWFzZSBOb3Rlc1wiLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuc2hvd01vZGFsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zaG93TW9kYWwodGhpcy5zZXR0aW5ncy5wcmV2aW91c1JlbGVhc2UpO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge1xuICAgIGlmICghdGhpcy5tb2RhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5tb2RhbDtcbiAgICB0aGlzLm1vZGFsID0gbnVsbDtcbiAgICBtb2RhbC5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93TW9kYWwgPSAocHJldmlvdXNSZWxlYXNlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIGxldCByZWxlYXNlTm90ZXMgPSBcIlwiO1xuICAgIGZvciAoY29uc3QgW3ZlcnNpb24sIGNvbnRlbnRdIG9mIHBhcnNlQ2hhbmdlbG9nKCkpIHtcbiAgICAgIGlmIChjb21wYXJlUmVsZWFzZXModmVyc2lvbiwgcHJldmlvdXNSZWxlYXNlIHx8IFwiMC4wLjBcIikgPiAwKSB7XG4gICAgICAgIHJlbGVhc2VOb3RlcyArPSBjb250ZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZWxlYXNlTm90ZXMudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsVGl0bGUgPSBgV2VsY29tZSB0byBPYnNpZGlhbiBPdXRsaW5lciAke1BMVUdJTl9WRVJTSU9OfWA7XG5cbiAgICB0aGlzLm1vZGFsID0gbmV3IFJlbGVhc2VOb3Rlc01vZGFsKFxuICAgICAgdGhpcy5wbHVnaW4sXG4gICAgICBtb2RhbFRpdGxlLFxuICAgICAgcmVsZWFzZU5vdGVzLFxuICAgICAgdGhpcy5oYW5kbGVDbG9zZVxuICAgICk7XG4gICAgdGhpcy5tb2RhbC5vcGVuKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbG9zZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXRoaXMubW9kYWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHRpbmdzLnByZXZpb3VzUmVsZWFzZSA9IFBMVUdJTl9WRVJTSU9OO1xuICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgQXBwLCBQbHVnaW5TZXR0aW5nVGFiLCBQbHVnaW5fMiwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQge1xuICBLZWVwQ3Vyc29yV2l0aGluQ29udGVudCxcbiAgU2V0dGluZ3MsXG4gIFZlcnRpY2FsTGluZXNBY3Rpb24sXG59IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jbGFzcyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBQbHVnaW5fMiwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHtcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XG4gIH1cblxuICBkaXNwbGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlN0aWNrIHRoZSBjdXJzb3IgdG8gdGhlIGNvbnRlbnRcIilcbiAgICAgIC5zZXREZXNjKFwiRG9uJ3QgbGV0IHRoZSBjdXJzb3IgbW92ZSB0byB0aGUgYnVsbGV0IHBvc2l0aW9uLlwiKVxuICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuICAgICAgICBkcm9wZG93blxuICAgICAgICAgIC5hZGRPcHRpb25zKHtcbiAgICAgICAgICAgIG5ldmVyOiBcIk5ldmVyXCIsXG4gICAgICAgICAgICBcImJ1bGxldC1vbmx5XCI6IFwiU3RpY2sgY3Vyc29yIG91dCBvZiBidWxsZXRzXCIsXG4gICAgICAgICAgICBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjogXCJTdGljayBjdXJzb3Igb3V0IG9mIGJ1bGxldHMgYW5kIGNoZWNrYm94ZXNcIixcbiAgICAgICAgICB9IGFzIHsgW2tleSBpbiBLZWVwQ3Vyc29yV2l0aGluQ29udGVudF06IHN0cmluZyB9KVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50KVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWU6IEtlZXBDdXJzb3JXaXRoaW5Db250ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIFRhYiBrZXlcIilcbiAgICAgIC5zZXREZXNjKFwiTWFrZSBUYWIgYW5kIFNoaWZ0LVRhYiBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlVGFiQmVoYXZpb3VyKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVUYWJCZWhhdmlvdXIgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRW5oYW5jZSB0aGUgRW50ZXIga2V5XCIpXG4gICAgICAuc2V0RGVzYyhcIk1ha2UgdGhlIEVudGVyIGtleSBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlRW50ZXJCZWhhdmlvdXIpXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5vdmVycmlkZUVudGVyQmVoYXZpb3VyID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIEN0cmwrQSBvciBDbWQrQSBiZWhhdmlvclwiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiUHJlc3MgdGhlIGhvdGtleSBvbmNlIHRvIHNlbGVjdCB0aGUgY3VycmVudCBsaXN0IGl0ZW0uIFByZXNzIHRoZSBob3RrZXkgdHdpY2UgdG8gc2VsZWN0IHRoZSBlbnRpcmUgbGlzdC5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlU2VsZWN0QWxsQmVoYXZpb3VyKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiSW1wcm92ZSB0aGUgc3R5bGUgb2YgeW91ciBsaXN0c1wiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiU3R5bGVzIGFyZSBvbmx5IGNvbXBhdGlibGUgd2l0aCBidWlsdC1pbiBPYnNpZGlhbiB0aGVtZXMgYW5kIG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoIG90aGVyIHRoZW1lcy5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuYmV0dGVyTGlzdHNTdHlsZXMgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRHJhdyB2ZXJ0aWNhbCBpbmRlbnRhdGlvbiBsaW5lc1wiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXMpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lcyA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlZlcnRpY2FsIGluZGVudGF0aW9uIGxpbmUgY2xpY2sgYWN0aW9uXCIpXG4gICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG4gICAgICAgIGRyb3Bkb3duXG4gICAgICAgICAgLmFkZE9wdGlvbnMoe1xuICAgICAgICAgICAgbm9uZTogXCJOb25lXCIsXG4gICAgICAgICAgICBcInpvb20taW5cIjogXCJab29tIEluXCIsXG4gICAgICAgICAgICBcInRvZ2dsZS1mb2xkaW5nXCI6IFwiVG9nZ2xlIEZvbGRpbmdcIixcbiAgICAgICAgICB9IGFzIHsgW2tleSBpbiBWZXJ0aWNhbExpbmVzQWN0aW9uXTogc3RyaW5nIH0pXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lc0FjdGlvbilcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlOiBWZXJ0aWNhbExpbmVzQWN0aW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXNBY3Rpb24gPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbCkuc2V0TmFtZShcIkRyYWctYW5kLURyb3BcIikuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmRyYWdBbmREcm9wKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kcmFnQW5kRHJvcCA9IHZhbHVlO1xuICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkRlYnVnIG1vZGVcIilcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICBcIk9wZW4gRGV2VG9vbHMgKENvbW1hbmQrT3B0aW9uK0kgb3IgQ29udHJvbCtTaGlmdCtJKSB0byBjb3B5IHRoZSBkZWJ1ZyBsb2dzLlwiXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZGVidWcpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZGVidWcgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NUYWIgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncykge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZFNldHRpbmdUYWIoXG4gICAgICBuZXcgT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdUYWIoXG4gICAgICAgIHRoaXMucGx1Z2luLmFwcCxcbiAgICAgICAgdGhpcy5wbHVnaW4sXG4gICAgICAgIHRoaXMuc2V0dGluZ3NcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IFByZWMgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9PdXRkZW50TGlzdFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBpbWVEZXRlY3RvcjogSU1FRGV0ZWN0b3IsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwicy1UYWJcIixcbiAgICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjaGVjayA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5vdmVycmlkZVRhYkJlaGF2aW91ciAmJiAhdGhpcy5pbWVEZXRlY3Rvci5pc09wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgT3V0ZGVudExpc3Qocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgQXBwLCBNb2RhbCwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcblxuaW50ZXJmYWNlIEFwcEhpZGRlblByb3BzIHtcbiAgaW50ZXJuYWxQbHVnaW5zOiB7XG4gICAgY29uZmlnOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgfTtcbiAgaXNNb2JpbGU6IGJvb2xlYW47XG4gIHBsdWdpbnM6IHtcbiAgICBlbmFibGVkUGx1Z2luczogU2V0PHN0cmluZz47XG4gICAgbWFuaWZlc3RzOiB7IFtrZXk6IHN0cmluZ106IHsgdmVyc2lvbjogc3RyaW5nIH0gfTtcbiAgfTtcbiAgdmF1bHQ6IHtcbiAgICBjb25maWc6IG9iamVjdDtcbiAgfTtcbn1cblxuY2xhc3MgU3lzdGVtSW5mb01vZGFsIGV4dGVuZHMgTW9kYWwge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHtcbiAgICBzdXBlcihhcHApO1xuICB9XG5cbiAgYXN5bmMgb25PcGVuKCkge1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KFwiU3lzdGVtIEluZm9ybWF0aW9uXCIpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBhcHAgPSB0aGlzLmFwcCBhcyBhbnkgYXMgQXBwSGlkZGVuUHJvcHM7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgcHJvY2Vzczoge1xuICAgICAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgfSxcbiAgICAgIGFwcDoge1xuICAgICAgICBpbnRlcm5hbFBsdWdpbnM6IHtcbiAgICAgICAgICBjb25maWc6IGFwcC5pbnRlcm5hbFBsdWdpbnMuY29uZmlnLFxuICAgICAgICB9LFxuICAgICAgICBpc01vYmlsZTogYXBwLmlzTW9iaWxlLFxuICAgICAgICBwbHVnaW5zOiB7XG4gICAgICAgICAgZW5hYmxlZFBsdWdpbnM6IEFycmF5LmZyb20oYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMpLFxuICAgICAgICAgIG1hbmlmZXN0czogT2JqZWN0LmtleXMoYXBwLnBsdWdpbnMubWFuaWZlc3RzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHtcbiAgICAgICAgICAgICAgdmVyc2lvbjogYXBwLnBsdWdpbnMubWFuaWZlc3RzW2tleV0udmVyc2lvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogeyB2ZXJzaW9uOiBzdHJpbmcgfSB9KSxcbiAgICAgICAgfSxcbiAgICAgICAgdmF1bHQ6IHtcbiAgICAgICAgICBjb25maWc6IGFwcC52YXVsdC5jb25maWcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcGx1Z2luOiB7XG4gICAgICAgIHNldHRpbmdzOiB7IHZhbHVlczogdGhpcy5zZXR0aW5ncy5nZXRWYWx1ZXMoKSB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgdGV4dCA9IEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpO1xuXG4gICAgY29uc3QgcHJlID0gdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoXCJwcmVcIik7XG4gICAgcHJlLnNldFRleHQodGV4dCk7XG4gICAgcHJlLnNldENzc1N0eWxlcyh7XG4gICAgICBvdmVyZmxvdzogXCJzY3JvbGxcIixcbiAgICAgIG1heEhlaWdodDogXCIzMDBweFwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYnV0dG9uID0gdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoXCJidXR0b25cIik7XG4gICAgYnV0dG9uLnNldFRleHQoXCJDb3B5IGFuZCBDbG9zZVwiKTtcbiAgICBidXR0b24ub25DbGlja0V2ZW50KCgpID0+IHtcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KFwiYGBganNvblxcblwiICsgdGV4dCArIFwiXFxuYGBgXCIpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTeXN0ZW1JbmZvIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMiwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcInN5c3RlbS1pbmZvXCIsXG4gICAgICBuYW1lOiBcIlNob3cgU3lzdGVtIEluZm9cIixcbiAgICAgIGNhbGxiYWNrOiB0aGlzLmNhbGxiYWNrLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiLCBcIkFsdFwiXSxcbiAgICAgICAgICBrZXk6IFwiSVwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjYWxsYmFjayA9ICgpID0+IHtcbiAgICBjb25zdCBtb2RhbCA9IG5ldyBTeXN0ZW1JbmZvTW9kYWwodGhpcy5wbHVnaW4uYXBwLCB0aGlzLnNldHRpbmdzKTtcbiAgICBtb2RhbC5vcGVuKCk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IEluZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9JbmRlbnRMaXN0XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIFRhYkJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiVGFiXCIsXG4gICAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVUYWJCZWhhdmlvdXIgJiYgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJ1biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLnBlcmZvcm0oXG4gICAgICAocm9vdCkgPT5cbiAgICAgICAgbmV3IEluZGVudExpc3Qocm9vdCwgdGhpcy5vYnNpZGlhblNldHRpbmdzLmdldERlZmF1bHRJbmRlbnRDaGFycygpKSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQge1xuICBFZGl0b3JWaWV3LFxuICBQbHVnaW5WYWx1ZSxcbiAgVmlld1BsdWdpbixcbiAgVmlld1VwZGF0ZSxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IsIGdldEVkaXRvckZyb21TdGF0ZSB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IExpc3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvUGFyc2VyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jb25zdCBWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTID0gXCJvdXRsaW5lci1wbHVnaW4tdmVydGljYWwtbGluZXNcIjtcblxuaW50ZXJmYWNlIExpbmVEYXRhIHtcbiAgdG9wOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbiAgaGVpZ2h0OiBzdHJpbmc7XG4gIGxpc3Q6IExpc3Q7XG59XG5cbmNsYXNzIFZlcnRpY2FsTGluZXNQbHVnaW5WYWx1ZSBpbXBsZW1lbnRzIFBsdWdpblZhbHVlIHtcbiAgcHJpdmF0ZSBzY2hlZHVsZWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIHNjcm9sbGVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBjb250ZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBlZGl0b3I6IE15RWRpdG9yO1xuICBwcml2YXRlIGxhc3RMaW5lOiBudW1iZXI7XG4gIHByaXZhdGUgbGluZXM6IExpbmVEYXRhW107XG4gIHByaXZhdGUgbGluZUVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvYnNpZGlhblNldHRpbmdzOiBPYnNpZGlhblNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSB2aWV3OiBFZGl0b3JWaWV3XG4gICkge1xuICAgIHRoaXMudmlldy5zY3JvbGxET00uYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB0aGlzLnNldHRpbmdzLm9uQ2hhbmdlKHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSk7XG5cbiAgICB0aGlzLnByZXBhcmVEb20oKTtcbiAgICB0aGlzLndhaXRGb3JFZGl0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgd2FpdEZvckVkaXRvciA9ICgpID0+IHtcbiAgICBjb25zdCBlZGl0b3IgPSBnZXRFZGl0b3JGcm9tU3RhdGUodGhpcy52aWV3LnN0YXRlKTtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgc2V0VGltZW91dCh0aGlzLndhaXRGb3JFZGl0b3IsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUoKTtcbiAgfTtcblxuICBwcml2YXRlIHByZXBhcmVEb20oKSB7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuY2xhc3NMaXN0LmFkZChcbiAgICAgIFwib3V0bGluZXItcGx1Z2luLWxpc3QtbGluZXMtY29udGVudC1jb250YWluZXJcIlxuICAgICk7XG5cbiAgICB0aGlzLnNjcm9sbGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLnNjcm9sbGVyLmNsYXNzTGlzdC5hZGQoXCJvdXRsaW5lci1wbHVnaW4tbGlzdC1saW5lcy1zY3JvbGxlclwiKTtcblxuICAgIHRoaXMuc2Nyb2xsZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50Q29udGFpbmVyKTtcbiAgICB0aGlzLnZpZXcuZG9tLmFwcGVuZENoaWxkKHRoaXMuc2Nyb2xsZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCA9IChlOiBFdmVudCkgPT4ge1xuICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wIH0gPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnNjcm9sbGVyLnNjcm9sbFRvKHNjcm9sbExlZnQsIHNjcm9sbFRvcCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZVJlY2FsY3VsYXRlID0gKCkgPT4ge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnNjaGVkdWxlZCk7XG4gICAgdGhpcy5zY2hlZHVsZWQgPSBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlLCAwKTtcbiAgfTtcblxuICB1cGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlKSB7XG4gICAgaWYgKFxuICAgICAgdXBkYXRlLmRvY0NoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS52aWV3cG9ydENoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS5nZW9tZXRyeUNoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS50cmFuc2FjdGlvbnMuc29tZSgodHIpID0+IHRyLnJlY29uZmlndXJlZClcbiAgICApIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlID0gKCkgPT4ge1xuICAgIHRoaXMubGluZXMgPSBbXTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lcyAmJlxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnZpZXcudmlld3BvcnRMaW5lQmxvY2tzLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMudmlldy52aXNpYmxlUmFuZ2VzLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGNvbnN0IGZyb21MaW5lID0gdGhpcy5lZGl0b3Iub2Zmc2V0VG9Qb3ModGhpcy52aWV3LnZpZXdwb3J0LmZyb20pLmxpbmU7XG4gICAgICBjb25zdCB0b0xpbmUgPSB0aGlzLmVkaXRvci5vZmZzZXRUb1Bvcyh0aGlzLnZpZXcudmlld3BvcnQudG8pLmxpbmU7XG4gICAgICBjb25zdCBsaXN0cyA9IHRoaXMucGFyc2VyLnBhcnNlUmFuZ2UodGhpcy5lZGl0b3IsIGZyb21MaW5lLCB0b0xpbmUpO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpc3Qgb2YgbGlzdHMpIHtcbiAgICAgICAgdGhpcy5sYXN0TGluZSA9IGxpc3QuZ2V0Q29udGVudEVuZCgpLmxpbmU7XG5cbiAgICAgICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgIHRoaXMucmVjdXJzaXZlKGMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGluZXMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgYS50b3AgPT09IGIudG9wID8gYS5sZWZ0IC0gYi5sZWZ0IDogYS50b3AgLSBiLnRvcFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURvbSgpO1xuICB9O1xuXG4gIHByaXZhdGUgZ2V0TmV4dFNpYmxpbmcobGlzdDogTGlzdCk6IExpc3QgfCBudWxsIHtcbiAgICBsZXQgbGlzdFRtcCA9IGxpc3Q7XG4gICAgbGV0IHAgPSBsaXN0VG1wLmdldFBhcmVudCgpO1xuICAgIHdoaWxlIChwKSB7XG4gICAgICBjb25zdCBuZXh0U2libGluZyA9IHAuZ2V0TmV4dFNpYmxpbmdPZihsaXN0VG1wKTtcbiAgICAgIGlmIChuZXh0U2libGluZykge1xuICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmc7XG4gICAgICB9XG4gICAgICBsaXN0VG1wID0gcDtcbiAgICAgIHAgPSBsaXN0VG1wLmdldFBhcmVudCgpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVjdXJzaXZlKGxpc3Q6IExpc3QsIHBhcmVudEN0eDogeyByb290TGVmdD86IG51bWJlciB9ID0ge30pIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGxpc3QuZ2V0Q2hpbGRyZW4oKTtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmcm9tT2Zmc2V0ID0gdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgbGluZTogbGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lLFxuICAgICAgY2g6IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoLFxuICAgIH0pO1xuICAgIGNvbnN0IG5leHRTaWJsaW5nID0gdGhpcy5nZXROZXh0U2libGluZyhsaXN0KTtcbiAgICBjb25zdCB0aWxsT2Zmc2V0ID0gdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgbGluZTogbmV4dFNpYmxpbmdcbiAgICAgICAgPyBuZXh0U2libGluZy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lIC0gMVxuICAgICAgICA6IHRoaXMubGFzdExpbmUsXG4gICAgICBjaDogMCxcbiAgICB9KTtcblxuICAgIGxldCB2aXNpYmxlRnJvbSA9IHRoaXMudmlldy52aXNpYmxlUmFuZ2VzWzBdLmZyb207XG4gICAgbGV0IHZpc2libGVUbyA9XG4gICAgICB0aGlzLnZpZXcudmlzaWJsZVJhbmdlc1t0aGlzLnZpZXcudmlzaWJsZVJhbmdlcy5sZW5ndGggLSAxXS50bztcbiAgICBjb25zdCB6b29tUmFuZ2UgPSB0aGlzLmVkaXRvci5nZXRab29tUmFuZ2UoKTtcbiAgICBpZiAoem9vbVJhbmdlKSB7XG4gICAgICB2aXNpYmxlRnJvbSA9IE1hdGgubWF4KFxuICAgICAgICB2aXNpYmxlRnJvbSxcbiAgICAgICAgdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoem9vbVJhbmdlLmZyb20pXG4gICAgICApO1xuICAgICAgdmlzaWJsZVRvID0gTWF0aC5taW4odmlzaWJsZVRvLCB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh6b29tUmFuZ2UudG8pKTtcbiAgICB9XG5cbiAgICBpZiAoZnJvbU9mZnNldCA+IHZpc2libGVUbyB8fCB0aWxsT2Zmc2V0IDwgdmlzaWJsZUZyb20pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb29yZHMgPSB0aGlzLnZpZXcuY29vcmRzQXRQb3MoZnJvbU9mZnNldCwgMSk7XG4gICAgaWYgKHBhcmVudEN0eC5yb290TGVmdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJlbnRDdHgucm9vdExlZnQgPSBjb29yZHMubGVmdDtcbiAgICB9XG4gICAgY29uc3QgbGVmdCA9IE1hdGguZmxvb3IoY29vcmRzLnJpZ2h0IC0gcGFyZW50Q3R4LnJvb3RMZWZ0KTtcblxuICAgIGNvbnN0IHRvcCA9XG4gICAgICB2aXNpYmxlRnJvbSA+IDAgJiYgZnJvbU9mZnNldCA8IHZpc2libGVGcm9tXG4gICAgICAgID8gLTIwXG4gICAgICAgIDogdGhpcy52aWV3LmxpbmVCbG9ja0F0KGZyb21PZmZzZXQpLnRvcDtcbiAgICBjb25zdCBib3R0b20gPVxuICAgICAgdGlsbE9mZnNldCA+IHZpc2libGVUb1xuICAgICAgICA/IHRoaXMudmlldy5saW5lQmxvY2tBdCh2aXNpYmxlVG8gLSAxKS5ib3R0b21cbiAgICAgICAgOiB0aGlzLnZpZXcubGluZUJsb2NrQXQodGlsbE9mZnNldCkuYm90dG9tO1xuICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcblxuICAgIGlmIChoZWlnaHQgPiAwICYmICFsaXN0LmlzRm9sZGVkKCkpIHtcbiAgICAgIGNvbnN0IG5leHRTaWJsaW5nID0gbGlzdC5nZXRQYXJlbnQoKS5nZXROZXh0U2libGluZ09mKGxpc3QpO1xuICAgICAgY29uc3QgaGFzTmV4dFNpYmxpbmcgPVxuICAgICAgICAhIW5leHRTaWJsaW5nICYmXG4gICAgICAgIHRoaXMuZWRpdG9yLnBvc1RvT2Zmc2V0KG5leHRTaWJsaW5nLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpKSA8PVxuICAgICAgICAgIHZpc2libGVUbztcblxuICAgICAgdGhpcy5saW5lcy5wdXNoKHtcbiAgICAgICAgdG9wLFxuICAgICAgICBsZWZ0LFxuICAgICAgICBoZWlnaHQ6IGBjYWxjKCR7aGVpZ2h0fXB4ICR7aGFzTmV4dFNpYmxpbmcgPyBcIi0gMS41ZW1cIiA6IFwiLSAyZW1cIn0pYCxcbiAgICAgICAgbGlzdCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGlmICghY2hpbGQuaXNFbXB0eSgpKSB7XG4gICAgICAgIHRoaXMucmVjdXJzaXZlKGNoaWxkLCBwYXJlbnRDdHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25DbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgbGluZSA9IHRoaXMubGluZXNbTnVtYmVyKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZGF0YXNldC5pbmRleCldO1xuXG4gICAgc3dpdGNoICh0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXNBY3Rpb24pIHtcbiAgICAgIGNhc2UgXCJ6b29tLWluXCI6XG4gICAgICAgIHRoaXMuem9vbUluKGxpbmUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInRvZ2dsZS1mb2xkaW5nXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlRm9sZGluZyhsaW5lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgem9vbUluKGxpbmU6IExpbmVEYXRhKSB7XG4gICAgY29uc3QgZWRpdG9yID0gZ2V0RWRpdG9yRnJvbVN0YXRlKHRoaXMudmlldy5zdGF0ZSk7XG5cbiAgICBlZGl0b3Iuem9vbUluKGxpbmUubGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRm9sZGluZyhsaW5lOiBMaW5lRGF0YSkge1xuICAgIGNvbnN0IHsgbGlzdCB9ID0gbGluZTtcblxuICAgIGlmIChsaXN0LmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBuZWVkVG9VbmZvbGQgPSB0cnVlO1xuICAgIGNvbnN0IGxpbmVzVG9Ub2dnbGU6IG51bWJlcltdID0gW107XG4gICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgaWYgKGMuaXNFbXB0eSgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFjLmlzRm9sZGVkKCkpIHtcbiAgICAgICAgbmVlZFRvVW5mb2xkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBsaW5lc1RvVG9nZ2xlLnB1c2goYy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0b3IgPSBnZXRFZGl0b3JGcm9tU3RhdGUodGhpcy52aWV3LnN0YXRlKTtcblxuICAgIGZvciAoY29uc3QgbCBvZiBsaW5lc1RvVG9nZ2xlKSB7XG4gICAgICBpZiAobmVlZFRvVW5mb2xkKSB7XG4gICAgICAgIGVkaXRvci51bmZvbGQobCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGl0b3IuZm9sZChsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURvbSgpIHtcbiAgICBjb25zdCBjbVNjcm9sbCA9IHRoaXMudmlldy5zY3JvbGxET007XG4gICAgY29uc3QgY21Db250ZW50ID0gdGhpcy52aWV3LmNvbnRlbnRET007XG4gICAgY29uc3QgY21Db250ZW50Q29udGFpbmVyID0gY21Db250ZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgY29uc3QgY21TaXplciA9IGNtQ29udGVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogT2JzaWRpYW4gY2FuIGFkZCBhZGRpdGlvbmFsIGVsZW1lbnRzIGludG8gQ29udGVudCBNYW5hZ2VyLlxuICAgICAqIFRoZSBtb3N0IG9idmlvdXMgY2FzZSBpcyB0aGUgJ2VtYmVkZGVkLWJhY2tsaW5rcycgY29yZSBwbHVnaW4gdGhhdCBhZGRzIGEgbWVudSBpbnNpZGUgYSBDb250ZW50IE1hbmFnZXIuXG4gICAgICogV2UgbXVzdCB0YWtlIGhlaWdodHMgb2YgYWxsIG9mIHRoZXNlIGVsZW1lbnRzIGludG8gYWNjb3VudFxuICAgICAqIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHNpemUgb2YgbGluZXMnIGNvbnRhaW5lci5cbiAgICAgKi9cbiAgICBsZXQgY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNtU2l6ZXIuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNtU2l6ZXJDaGlsZHJlblN1bUhlaWdodCArPSBjbVNpemVyLmNoaWxkcmVuW2ldLmNsaWVudEhlaWdodDtcbiAgICB9XG5cbiAgICB0aGlzLnNjcm9sbGVyLnN0eWxlLnRvcCA9IGNtU2Nyb2xsLm9mZnNldFRvcCArIFwicHhcIjtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5MZWZ0ID1cbiAgICAgIGNtQ29udGVudENvbnRhaW5lci5vZmZzZXRMZWZ0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5Ub3AgPVxuICAgICAgKGNtQ29udGVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkub2Zmc2V0VG9wIC0gMjQgKyBcInB4XCI7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGggPT09IGkpIHtcbiAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGUuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1saXN0LWxpbmVcIik7XG4gICAgICAgIGUuZGF0YXNldC5pbmRleCA9IFN0cmluZyhpKTtcbiAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25DbGljayk7XG4gICAgICAgIHRoaXMuY29udGVudENvbnRhaW5lci5hcHBlbmRDaGlsZChlKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHMucHVzaChlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbCA9IHRoaXMubGluZXNbaV07XG4gICAgICBjb25zdCBlID0gdGhpcy5saW5lRWxlbWVudHNbaV07XG4gICAgICBlLnN0eWxlLnRvcCA9IGwudG9wICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gbC5sZWZ0ICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5oZWlnaHQgPSBsLmhlaWdodDtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gdGhpcy5saW5lcy5sZW5ndGg7IGkgPCB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZSA9IHRoaXMubGluZUVsZW1lbnRzW2ldO1xuICAgICAgZS5zdHlsZS50b3AgPSBcIjBweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuaGVpZ2h0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZXR0aW5ncy5yZW1vdmVDYWxsYmFjayh0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUpO1xuICAgIHRoaXMudmlldy5zY3JvbGxET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB0aGlzLnZpZXcuZG9tLnJlbW92ZUNoaWxkKHRoaXMuc2Nyb2xsZXIpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnNjaGVkdWxlZCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZlcnRpY2FsTGluZXMgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgcHJpdmF0ZSB1cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnVwZGF0ZUJvZHlDbGFzcygpO1xuICAgIHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVCb2R5Q2xhc3MoKTtcbiAgICB9LCAxMDAwKTtcblxuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAgVmlld1BsdWdpbi5kZWZpbmUoXG4gICAgICAgICh2aWV3KSA9PlxuICAgICAgICAgIG5ldyBWZXJ0aWNhbExpbmVzUGx1Z2luVmFsdWUoXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLFxuICAgICAgICAgICAgdGhpcy5wYXJzZXIsXG4gICAgICAgICAgICB2aWV3XG4gICAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnVwZGF0ZUJvZHlDbGFzc0ludGVydmFsKTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoVkVSVElDQUxfTElORVNfQk9EWV9DTEFTUyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJvZHlDbGFzcyA9ICgpID0+IHtcbiAgICBjb25zdCBzaG91bGRFeGlzdHMgPVxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXM7XG4gICAgY29uc3QgZXhpc3RzID0gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoVkVSVElDQUxfTElORVNfQk9EWV9DTEFTUyk7XG5cbiAgICBpZiAoc2hvdWxkRXhpc3RzICYmICFleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTKTtcbiAgICB9XG5cbiAgICBpZiAoIXNob3VsZEV4aXN0cyAmJiBleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTKTtcbiAgICB9XG4gIH07XG59XG4iLCJpbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IExpc3QsIFBvc2l0aW9uLCBSb290LCBpc1Jhbmdlc0ludGVyc2VjdHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgQ2hhbmdlc0FwcGxpY2F0b3Ige1xuICBhcHBseShlZGl0b3I6IE15RWRpdG9yLCBwcmV2Um9vdDogUm9vdCwgbmV3Um9vdDogUm9vdCkge1xuICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmNhbGN1bGF0ZUNoYW5nZXMoZWRpdG9yLCBwcmV2Um9vdCwgbmV3Um9vdCk7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGNvbnN0IHsgcmVwbGFjZW1lbnQsIGNoYW5nZUZyb20sIGNoYW5nZVRvIH0gPSBjaGFuZ2VzO1xuXG4gICAgICBjb25zdCB7IHVuZm9sZCwgZm9sZCB9ID0gdGhpcy5jYWxjdWxhdGVGb2xkaW5nT3ByYXRpb25zKFxuICAgICAgICBwcmV2Um9vdCxcbiAgICAgICAgbmV3Um9vdCxcbiAgICAgICAgY2hhbmdlRnJvbSxcbiAgICAgICAgY2hhbmdlVG9cbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiB1bmZvbGQpIHtcbiAgICAgICAgZWRpdG9yLnVuZm9sZChsaW5lKTtcbiAgICAgIH1cblxuICAgICAgZWRpdG9yLnJlcGxhY2VSYW5nZShyZXBsYWNlbWVudCwgY2hhbmdlRnJvbSwgY2hhbmdlVG8pO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgZm9sZCkge1xuICAgICAgICBlZGl0b3IuZm9sZChsaW5lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlZGl0b3Iuc2V0U2VsZWN0aW9ucyhuZXdSb290LmdldFNlbGVjdGlvbnMoKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUNoYW5nZXMoZWRpdG9yOiBNeUVkaXRvciwgcHJldlJvb3Q6IFJvb3QsIG5ld1Jvb3Q6IFJvb3QpIHtcbiAgICBjb25zdCByb290UmFuZ2UgPSBwcmV2Um9vdC5nZXRDb250ZW50UmFuZ2UoKTtcbiAgICBjb25zdCBvbGRTdHJpbmcgPSBlZGl0b3IuZ2V0UmFuZ2Uocm9vdFJhbmdlWzBdLCByb290UmFuZ2VbMV0pO1xuICAgIGNvbnN0IG5ld1N0cmluZyA9IG5ld1Jvb3QucHJpbnQoKTtcblxuICAgIGNvbnN0IGNoYW5nZUZyb20gPSB7IC4uLnJvb3RSYW5nZVswXSB9O1xuICAgIGNvbnN0IGNoYW5nZVRvID0geyAuLi5yb290UmFuZ2VbMV0gfTtcbiAgICBsZXQgb2xkVG1wID0gb2xkU3RyaW5nO1xuICAgIGxldCBuZXdUbXAgPSBuZXdTdHJpbmc7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgbmxJbmRleCA9IG9sZFRtcC5sYXN0SW5kZXhPZihcIlxcblwiKTtcblxuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKG5sSW5kZXgpO1xuICAgICAgY29uc3QgbmV3TGluZSA9IG5ld1RtcC5zbGljZSgtb2xkTGluZS5sZW5ndGgpO1xuXG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgb2xkVG1wID0gb2xkVG1wLnNsaWNlKDAsIC1vbGRMaW5lLmxlbmd0aCk7XG4gICAgICBuZXdUbXAgPSBuZXdUbXAuc2xpY2UoMCwgLW9sZExpbmUubGVuZ3RoKTtcbiAgICAgIGNvbnN0IG5sSW5kZXgyID0gb2xkVG1wLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuICAgICAgY2hhbmdlVG8uY2ggPVxuICAgICAgICBubEluZGV4MiA+PSAwID8gb2xkVG1wLmxlbmd0aCAtIG5sSW5kZXgyIC0gMSA6IG9sZFRtcC5sZW5ndGg7XG4gICAgICBjaGFuZ2VUby5saW5lLS07XG4gICAgfVxuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IG5sSW5kZXggPSBvbGRUbXAuaW5kZXhPZihcIlxcblwiKTtcblxuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKDAsIG5sSW5kZXggKyAxKTtcbiAgICAgIGNvbnN0IG5ld0xpbmUgPSBuZXdUbXAuc2xpY2UoMCwgb2xkTGluZS5sZW5ndGgpO1xuXG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2hhbmdlRnJvbS5saW5lKys7XG4gICAgICBvbGRUbXAgPSBvbGRUbXAuc2xpY2Uob2xkTGluZS5sZW5ndGgpO1xuICAgICAgbmV3VG1wID0gbmV3VG1wLnNsaWNlKG9sZExpbmUubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAob2xkVG1wID09PSBuZXdUbXApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZXBsYWNlbWVudDogbmV3VG1wLFxuICAgICAgY2hhbmdlRnJvbSxcbiAgICAgIGNoYW5nZVRvLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUZvbGRpbmdPcHJhdGlvbnMoXG4gICAgcHJldlJvb3Q6IFJvb3QsXG4gICAgbmV3Um9vdDogUm9vdCxcbiAgICBjaGFuZ2VGcm9tOiBQb3NpdGlvbixcbiAgICBjaGFuZ2VUbzogUG9zaXRpb25cbiAgKSB7XG4gICAgY29uc3QgY2hhbmdlZFJhbmdlOiBbUG9zaXRpb24sIFBvc2l0aW9uXSA9IFtjaGFuZ2VGcm9tLCBjaGFuZ2VUb107XG5cbiAgICBjb25zdCBwcmV2TGlzdHMgPSBnZXRBbGxDaGlsZHJlbihwcmV2Um9vdCk7XG4gICAgY29uc3QgbmV3TGlzdHMgPSBnZXRBbGxDaGlsZHJlbihuZXdSb290KTtcblxuICAgIGNvbnN0IHVuZm9sZDogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBmb2xkOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBwcmV2TGlzdCBvZiBwcmV2TGlzdHMudmFsdWVzKCkpIHtcbiAgICAgIGlmICghcHJldkxpc3QuaXNGb2xkUm9vdCgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdMaXN0ID0gbmV3TGlzdHMuZ2V0KHByZXZMaXN0LmdldElEKCkpO1xuXG4gICAgICBpZiAoIW5ld0xpc3QpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByZXZMaXN0UmFuZ2U6IFtQb3NpdGlvbiwgUG9zaXRpb25dID0gW1xuICAgICAgICBwcmV2TGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKSxcbiAgICAgICAgcHJldkxpc3QuZ2V0Q29udGVudEVuZEluY2x1ZGluZ0NoaWxkcmVuKCksXG4gICAgICBdO1xuXG4gICAgICBpZiAoaXNSYW5nZXNJbnRlcnNlY3RzKHByZXZMaXN0UmFuZ2UsIGNoYW5nZWRSYW5nZSkpIHtcbiAgICAgICAgdW5mb2xkLnB1c2gocHJldkxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSk7XG4gICAgICAgIGZvbGQucHVzaChuZXdMaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHVuZm9sZC5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG4gICAgZm9sZC5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG5cbiAgICByZXR1cm4geyB1bmZvbGQsIGZvbGQgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbGxDaGlsZHJlblJlZHVjZUZuKGFjYzogTWFwPG51bWJlciwgTGlzdD4sIGNoaWxkOiBMaXN0KSB7XG4gIGFjYy5zZXQoY2hpbGQuZ2V0SUQoKSwgY2hpbGQpO1xuICBjaGlsZC5nZXRDaGlsZHJlbigpLnJlZHVjZShnZXRBbGxDaGlsZHJlblJlZHVjZUZuLCBhY2MpO1xuXG4gIHJldHVybiBhY2M7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENoaWxkcmVuKHJvb3Q6IFJvb3QpOiBNYXA8bnVtYmVyLCBMaXN0PiB7XG4gIHJldHVybiByb290LmdldENoaWxkcmVuKCkucmVkdWNlKGdldEFsbENoaWxkcmVuUmVkdWNlRm4sIG5ldyBNYXAoKSk7XG59XG4iLCJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5leHBvcnQgY2xhc3MgSU1FRGV0ZWN0b3Ige1xuICBwcml2YXRlIGNvbXBvc2l0aW9uID0gZmFsc2U7XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25zdGFydFwiLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsIHRoaXMub25Db21wb3NpdGlvbkVuZCk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsIHRoaXMub25Db21wb3NpdGlvbkVuZCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uc3RhcnRcIiwgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQpO1xuICB9XG5cbiAgaXNPcGVuZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9zaXRpb24gJiYgUGxhdGZvcm0uaXNEZXNrdG9wO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNvbXBvc2l0aW9uU3RhcnQgPSAoKSA9PiB7XG4gICAgdGhpcy5jb21wb3NpdGlvbiA9IHRydWU7XG4gIH07XG5cbiAgcHJpdmF0ZSBvbkNvbXBvc2l0aW9uRW5kID0gKCkgPT4ge1xuICAgIHRoaXMuY29tcG9zaXRpb24gPSBmYWxzZTtcbiAgfTtcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4vU2V0dGluZ3NcIjtcblxuZXhwb3J0IGNsYXNzIExvZ2dlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzKSB7fVxuXG4gIGxvZyhtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuZGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmluZm8obWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGJpbmQobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiB0aGlzLmxvZyhtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhblRhYnNTZXR0aW5ncyB7XG4gIHVzZVRhYjogYm9vbGVhbjtcbiAgdGFiU2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuRm9sZFNldHRpbmdzIHtcbiAgZm9sZEluZGVudDogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gZ2V0SGlkZGVuT2JzaWRpYW5Db25maWcoYXBwOiBBcHApIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmV0dXJuIChhcHAudmF1bHQgYXMgYW55KS5jb25maWc7XG59XG5cbmV4cG9ydCBjbGFzcyBPYnNpZGlhblNldHRpbmdzIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCkge31cblxuICBpc0xlZ2FjeUVkaXRvckVuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnOiB7IGxlZ2FjeUVkaXRvcjogYm9vbGVhbiB9ID0ge1xuICAgICAgbGVnYWN5RWRpdG9yOiBmYWxzZSxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZy5sZWdhY3lFZGl0b3I7XG4gIH1cblxuICBpc0RlZmF1bHRUaGVtZUVuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnOiB7IGNzc1RoZW1lOiBzdHJpbmcgfSA9IHtcbiAgICAgIGNzc1RoZW1lOiBcIlwiLFxuICAgICAgLi4uZ2V0SGlkZGVuT2JzaWRpYW5Db25maWcodGhpcy5hcHApLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29uZmlnLmNzc1RoZW1lID09PSBcIlwiO1xuICB9XG5cbiAgZ2V0VGFic1NldHRpbmdzKCk6IE9ic2lkaWFuVGFic1NldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlVGFiOiB0cnVlLFxuICAgICAgdGFiU2l6ZTogNCxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0Rm9sZFNldHRpbmdzKCk6IE9ic2lkaWFuRm9sZFNldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9sZEluZGVudDogdHJ1ZSxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdEluZGVudENoYXJzKCkge1xuICAgIGNvbnN0IHsgdXNlVGFiLCB0YWJTaXplIH0gPSB0aGlzLmdldFRhYnNTZXR0aW5ncygpO1xuXG4gICAgcmV0dXJuIHVzZVRhYiA/IFwiXFx0XCIgOiBuZXcgQXJyYXkodGFiU2l6ZSkuZmlsbChcIiBcIikuam9pbihcIlwiKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ2hhbmdlc0FwcGxpY2F0b3IgfSBmcm9tIFwiLi9DaGFuZ2VzQXBwbGljYXRvclwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4vUGFyc2VyXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvblBlcmZvcm1lciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VzQXBwbGljYXRvcjogQ2hhbmdlc0FwcGxpY2F0b3JcbiAgKSB7fVxuXG4gIGV2YWwocm9vdDogUm9vdCwgb3A6IE9wZXJhdGlvbiwgZWRpdG9yOiBNeUVkaXRvcikge1xuICAgIGNvbnN0IHByZXZSb290ID0gcm9vdC5jbG9uZSgpO1xuXG4gICAgb3AucGVyZm9ybSgpO1xuXG4gICAgaWYgKG9wLnNob3VsZFVwZGF0ZSgpKSB7XG4gICAgICB0aGlzLmNoYW5nZXNBcHBsaWNhdG9yLmFwcGx5KGVkaXRvciwgcHJldlJvb3QsIHJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzaG91bGRVcGRhdGU6IG9wLnNob3VsZFVwZGF0ZSgpLFxuICAgICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBvcC5zaG91bGRTdG9wUHJvcGFnYXRpb24oKSxcbiAgICB9O1xuICB9XG5cbiAgcGVyZm9ybShcbiAgICBjYjogKHJvb3Q6IFJvb3QpID0+IE9wZXJhdGlvbixcbiAgICBlZGl0b3I6IE15RWRpdG9yLFxuICAgIGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKVxuICApIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5wYXJzZXIucGFyc2UoZWRpdG9yLCBjdXJzb3IpO1xuXG4gICAgaWYgKCFyb290KSB7XG4gICAgICByZXR1cm4geyBzaG91bGRVcGRhdGU6IGZhbHNlLCBzaG91bGRTdG9wUHJvcGFnYXRpb246IGZhbHNlIH07XG4gICAgfVxuXG4gICAgY29uc3Qgb3AgPSBjYihyb290KTtcblxuICAgIHJldHVybiB0aGlzLmV2YWwocm9vdCwgb3AsIGVkaXRvcik7XG4gIH1cbn1cbiIsImltcG9ydCB7IExvZ2dlciB9IGZyb20gXCIuL0xvZ2dlclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuXG5pbXBvcnQgeyBMaXN0LCBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IGNoZWNrYm94UmUgfSBmcm9tIFwiLi4vdXRpbHMvY2hlY2tib3hSZVwiO1xuXG5jb25zdCBidWxsZXRTaWduUmUgPSBgKD86Wy0qK118XFxcXGQrXFxcXC4pYDtcbmNvbnN0IG9wdGlvbmFsQ2hlY2tib3hSZSA9IGAoPzoke2NoZWNrYm94UmV9KT9gO1xuXG5jb25zdCBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZSA9IG5ldyBSZWdFeHAoYF4ke2J1bGxldFNpZ25SZX0oIHxcXHQpYCk7XG5jb25zdCBsaXN0SXRlbVJlID0gbmV3IFJlZ0V4cChgXlsgXFx0XSoke2J1bGxldFNpZ25SZX0oIHxcXHQpYCk7XG5jb25zdCBzdHJpbmdXaXRoU3BhY2VzUmUgPSBuZXcgUmVnRXhwKGBeWyBcXHRdK2ApO1xuY29uc3QgcGFyc2VMaXN0SXRlbVJlID0gbmV3IFJlZ0V4cChcbiAgYF4oWyBcXHRdKikoJHtidWxsZXRTaWduUmV9KSggfFxcdCkoJHtvcHRpb25hbENoZWNrYm94UmV9KSguKikkYFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXJQb3NpdGlvbiB7XG4gIGxpbmU6IG51bWJlcjtcbiAgY2g6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXJTZWxlY3Rpb24ge1xuICBhbmNob3I6IFJlYWRlclBvc2l0aW9uO1xuICBoZWFkOiBSZWFkZXJQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXIge1xuICBnZXRDdXJzb3IoKTogUmVhZGVyUG9zaXRpb247XG4gIGdldExpbmUobjogbnVtYmVyKTogc3RyaW5nO1xuICBsYXN0TGluZSgpOiBudW1iZXI7XG4gIGxpc3RTZWxlY3Rpb25zKCk6IFJlYWRlclNlbGVjdGlvbltdO1xuICBnZXRBbGxGb2xkZWRMaW5lcygpOiBudW1iZXJbXTtcbn1cblxuaW50ZXJmYWNlIFBhcnNlTGlzdExpc3Qge1xuICBnZXRGaXJzdExpbmVJbmRlbnQoKTogc3RyaW5nO1xuICBzZXROb3Rlc0luZGVudChub3Rlc0luZGVudDogc3RyaW5nKTogdm9pZDtcbiAgZ2V0Tm90ZXNJbmRlbnQoKTogc3RyaW5nIHwgbnVsbDtcbiAgYWRkTGluZSh0ZXh0OiBzdHJpbmcpOiB2b2lkO1xuICBnZXRQYXJlbnQoKTogUGFyc2VMaXN0TGlzdCB8IG51bGw7XG4gIGFkZEFmdGVyQWxsKGxpc3Q6IFBhcnNlTGlzdExpc3QpOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dlciwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHt9XG5cbiAgcGFyc2VSYW5nZShlZGl0b3I6IFJlYWRlciwgZnJvbUxpbmUgPSAwLCB0b0xpbmUgPSBlZGl0b3IubGFzdExpbmUoKSk6IFJvb3RbXSB7XG4gICAgY29uc3QgbGlzdHM6IFJvb3RbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IGZyb21MaW5lOyBpIDw9IHRvTGluZTsgaSsrKSB7XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUoaSk7XG5cbiAgICAgIGlmIChpID09PSBmcm9tTGluZSB8fCB0aGlzLmlzTGlzdEl0ZW0obGluZSkpIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMucGFyc2VXaXRoTGltaXRzKGVkaXRvciwgaSwgZnJvbUxpbmUsIHRvTGluZSk7XG5cbiAgICAgICAgaWYgKGxpc3QpIHtcbiAgICAgICAgICBsaXN0cy5wdXNoKGxpc3QpO1xuICAgICAgICAgIGkgPSBsaXN0LmdldENvbnRlbnRFbmQoKS5saW5lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3RzO1xuICB9XG5cbiAgcGFyc2UoZWRpdG9yOiBSZWFkZXIsIGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKSk6IFJvb3QgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVdpdGhMaW1pdHMoZWRpdG9yLCBjdXJzb3IubGluZSwgMCwgZWRpdG9yLmxhc3RMaW5lKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVdpdGhMaW1pdHMoXG4gICAgZWRpdG9yOiBSZWFkZXIsXG4gICAgcGFyc2luZ1N0YXJ0TGluZTogbnVtYmVyLFxuICAgIGxpbWl0RnJvbTogbnVtYmVyLFxuICAgIGxpbWl0VG86IG51bWJlclxuICApOiBSb290IHwgbnVsbCB7XG4gICAgY29uc3QgZCA9IHRoaXMubG9nZ2VyLmJpbmQoXCJwYXJzZUxpc3RcIik7XG4gICAgY29uc3QgZXJyb3IgPSAobXNnOiBzdHJpbmcpOiBudWxsID0+IHtcbiAgICAgIGQobXNnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUocGFyc2luZ1N0YXJ0TGluZSk7XG5cbiAgICBsZXQgbGlzdExvb2tpbmdQb3M6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuaXNMaXN0SXRlbShsaW5lKSkge1xuICAgICAgbGlzdExvb2tpbmdQb3MgPSBwYXJzaW5nU3RhcnRMaW5lO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0xpbmVXaXRoSW5kZW50KGxpbmUpKSB7XG4gICAgICBsZXQgbGlzdExvb2tpbmdQb3NTZWFyY2ggPSBwYXJzaW5nU3RhcnRMaW5lIC0gMTtcbiAgICAgIHdoaWxlIChsaXN0TG9va2luZ1Bvc1NlYXJjaCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0TG9va2luZ1Bvc1NlYXJjaCk7XG4gICAgICAgIGlmICh0aGlzLmlzTGlzdEl0ZW0obGluZSkpIHtcbiAgICAgICAgICBsaXN0TG9va2luZ1BvcyA9IGxpc3RMb29raW5nUG9zU2VhcmNoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICAgIGxpc3RMb29raW5nUG9zU2VhcmNoLS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobGlzdExvb2tpbmdQb3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBsaXN0U3RhcnRMaW5lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgbGlzdFN0YXJ0TGluZUxvb2t1cCA9IGxpc3RMb29raW5nUG9zO1xuICAgIHdoaWxlIChsaXN0U3RhcnRMaW5lTG9va3VwID49IDApIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0U3RhcnRMaW5lTG9va3VwKTtcbiAgICAgIGlmICghdGhpcy5pc0xpc3RJdGVtKGxpbmUpICYmICF0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0xpc3RJdGVtV2l0aG91dFNwYWNlcyhsaW5lKSkge1xuICAgICAgICBsaXN0U3RhcnRMaW5lID0gbGlzdFN0YXJ0TGluZUxvb2t1cDtcbiAgICAgICAgaWYgKGxpc3RTdGFydExpbmVMb29rdXAgPD0gbGltaXRGcm9tKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3RTdGFydExpbmVMb29rdXAtLTtcbiAgICB9XG5cbiAgICBpZiAobGlzdFN0YXJ0TGluZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGxpc3RFbmRMaW5lID0gbGlzdExvb2tpbmdQb3M7XG4gICAgbGV0IGxpc3RFbmRMaW5lTG9va3VwID0gbGlzdExvb2tpbmdQb3M7XG4gICAgd2hpbGUgKGxpc3RFbmRMaW5lTG9va3VwIDw9IGVkaXRvci5sYXN0TGluZSgpKSB7XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmVMb29rdXApO1xuICAgICAgaWYgKCF0aGlzLmlzTGlzdEl0ZW0obGluZSkgJiYgIXRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc0VtcHR5TGluZShsaW5lKSkge1xuICAgICAgICBsaXN0RW5kTGluZSA9IGxpc3RFbmRMaW5lTG9va3VwO1xuICAgICAgfVxuICAgICAgaWYgKGxpc3RFbmRMaW5lTG9va3VwID49IGxpbWl0VG8pIHtcbiAgICAgICAgbGlzdEVuZExpbmUgPSBsaW1pdFRvO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGxpc3RFbmRMaW5lTG9va3VwKys7XG4gICAgfVxuXG4gICAgaWYgKGxpc3RTdGFydExpbmUgPiBwYXJzaW5nU3RhcnRMaW5lIHx8IGxpc3RFbmRMaW5lIDwgcGFyc2luZ1N0YXJ0TGluZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGxhc3QgbGluZSBjb250YWlucyBvbmx5IHNwYWNlcyBhbmQgdGhhdCdzIGluY29ycmVjdCBpbmRlbnQsIHRoZW4gaWdub3JlIHRoZSBsYXN0IGxpbmVcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnNsaW5rby9vYnNpZGlhbi1vdXRsaW5lci9pc3N1ZXMvMzY4XG4gICAgaWYgKGxpc3RFbmRMaW5lID4gbGlzdFN0YXJ0TGluZSkge1xuICAgICAgY29uc3QgbGFzdExpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0RW5kTGluZSk7XG4gICAgICBpZiAobGFzdExpbmUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCBwcmV2TGluZSA9IGVkaXRvci5nZXRMaW5lKGxpc3RFbmRMaW5lIC0gMSk7XG4gICAgICAgIGNvbnN0IFssIHByZXZMaW5lSW5kZW50XSA9IC9eKFxccyopLy5leGVjKHByZXZMaW5lKTtcbiAgICAgICAgaWYgKCFsYXN0TGluZS5zdGFydHNXaXRoKHByZXZMaW5lSW5kZW50KSkge1xuICAgICAgICAgIGxpc3RFbmRMaW5lLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByb290ID0gbmV3IFJvb3QoXG4gICAgICB7IGxpbmU6IGxpc3RTdGFydExpbmUsIGNoOiAwIH0sXG4gICAgICB7IGxpbmU6IGxpc3RFbmRMaW5lLCBjaDogZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmUpLmxlbmd0aCB9LFxuICAgICAgZWRpdG9yLmxpc3RTZWxlY3Rpb25zKCkubWFwKChyKSA9PiAoe1xuICAgICAgICBhbmNob3I6IHsgbGluZTogci5hbmNob3IubGluZSwgY2g6IHIuYW5jaG9yLmNoIH0sXG4gICAgICAgIGhlYWQ6IHsgbGluZTogci5oZWFkLmxpbmUsIGNoOiByLmhlYWQuY2ggfSxcbiAgICAgIH0pKVxuICAgICk7XG5cbiAgICBsZXQgY3VycmVudFBhcmVudDogUGFyc2VMaXN0TGlzdCA9IHJvb3QuZ2V0Um9vdExpc3QoKTtcbiAgICBsZXQgY3VycmVudExpc3Q6IFBhcnNlTGlzdExpc3QgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgY3VycmVudEluZGVudCA9IFwiXCI7XG5cbiAgICBjb25zdCBmb2xkZWRMaW5lcyA9IGVkaXRvci5nZXRBbGxGb2xkZWRMaW5lcygpO1xuXG4gICAgZm9yIChsZXQgbCA9IGxpc3RTdGFydExpbmU7IGwgPD0gbGlzdEVuZExpbmU7IGwrKykge1xuICAgICAgY29uc3QgbGluZSA9IGVkaXRvci5nZXRMaW5lKGwpO1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHBhcnNlTGlzdEl0ZW1SZS5leGVjKGxpbmUpO1xuXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBjb25zdCBbLCBpbmRlbnQsIGJ1bGxldCwgc3BhY2VBZnRlckJ1bGxldF0gPSBtYXRjaGVzO1xuICAgICAgICBsZXQgWywgLCAsICwgb3B0aW9uYWxDaGVja2JveCwgY29udGVudF0gPSBtYXRjaGVzO1xuXG4gICAgICAgIGNvbnRlbnQgPSBvcHRpb25hbENoZWNrYm94ICsgY29udGVudDtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwiYnVsbGV0LWFuZC1jaGVja2JveFwiKSB7XG4gICAgICAgICAgb3B0aW9uYWxDaGVja2JveCA9IFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb21wYXJlTGVuZ3RoID0gTWF0aC5taW4oY3VycmVudEluZGVudC5sZW5ndGgsIGluZGVudC5sZW5ndGgpO1xuICAgICAgICBjb25zdCBpbmRlbnRTbGljZSA9IGluZGVudC5zbGljZSgwLCBjb21wYXJlTGVuZ3RoKTtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGVudFNsaWNlID0gY3VycmVudEluZGVudC5zbGljZSgwLCBjb21wYXJlTGVuZ3RoKTtcblxuICAgICAgICBpZiAoaW5kZW50U2xpY2UgIT09IGN1cnJlbnRJbmRlbnRTbGljZSkge1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gY3VycmVudEluZGVudFNsaWNlXG4gICAgICAgICAgICAucmVwbGFjZSgvIC9nLCBcIlNcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuICAgICAgICAgIGNvbnN0IGdvdCA9IGluZGVudFNsaWNlLnJlcGxhY2UoLyAvZywgXCJTXCIpLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG5cbiAgICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgICBgVW5hYmxlIHRvIHBhcnNlIGxpc3Q6IGV4cGVjdGVkIGluZGVudCBcIiR7ZXhwZWN0ZWR9XCIsIGdvdCBcIiR7Z290fVwiYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZW50Lmxlbmd0aCA+IGN1cnJlbnRJbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRMaXN0O1xuICAgICAgICAgIGN1cnJlbnRJbmRlbnQgPSBpbmRlbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZW50Lmxlbmd0aCA8IGN1cnJlbnRJbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgY3VycmVudFBhcmVudC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGggPj0gaW5kZW50Lmxlbmd0aCAmJlxuICAgICAgICAgICAgY3VycmVudFBhcmVudC5nZXRQYXJlbnQoKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRQYXJlbnQuZ2V0UGFyZW50KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRJbmRlbnQgPSBpbmRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb2xkUm9vdCA9IGZvbGRlZExpbmVzLmluY2x1ZGVzKGwpO1xuXG4gICAgICAgIGN1cnJlbnRMaXN0ID0gbmV3IExpc3QoXG4gICAgICAgICAgcm9vdCxcbiAgICAgICAgICBpbmRlbnQsXG4gICAgICAgICAgYnVsbGV0LFxuICAgICAgICAgIG9wdGlvbmFsQ2hlY2tib3gsXG4gICAgICAgICAgc3BhY2VBZnRlckJ1bGxldCxcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIGZvbGRSb290XG4gICAgICAgICk7XG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYWRkQWZ0ZXJBbGwoY3VycmVudExpc3QpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgaWYgKCFjdXJyZW50TGlzdCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgbGlzdCBpdGVtLCBnb3QgZW1wdHkgbGluZWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5kZW50VG9DaGVjayA9IGN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkgfHwgY3VycmVudEluZGVudDtcblxuICAgICAgICBpZiAobGluZS5pbmRleE9mKGluZGVudFRvQ2hlY2spICE9PSAwKSB7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBpbmRlbnRUb0NoZWNrLnJlcGxhY2UoLyAvZywgXCJTXCIpLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG4gICAgICAgICAgY29uc3QgZ290ID0gbGluZVxuICAgICAgICAgICAgLm1hdGNoKC9eWyBcXHRdKi8pWzBdXG4gICAgICAgICAgICAucmVwbGFjZSgvIC9nLCBcIlNcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuXG4gICAgICAgICAgcmV0dXJuIGVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBpbmRlbnQgXCIke2V4cGVjdGVkfVwiLCBnb3QgXCIke2dvdH1cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjdXJyZW50TGlzdC5nZXROb3Rlc0luZGVudCgpKSB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGxpbmUubWF0Y2goL15bIFxcdF0rLyk7XG5cbiAgICAgICAgICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlc1swXS5sZW5ndGggPD0gY3VycmVudEluZGVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICgvXlxccyskLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgc29tZSBpbmRlbnQsIGdvdCBubyBpbmRlbnRgXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnRMaXN0LnNldE5vdGVzSW5kZW50KG1hdGNoZXNbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudExpc3QuYWRkTGluZShsaW5lLnNsaWNlKGN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkubGVuZ3RoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBsaXN0IGl0ZW0gb3Igbm90ZSwgZ290IFwiJHtsaW5lfVwiYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VtcHR5TGluZShsaW5lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGluZS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzTGluZVdpdGhJbmRlbnQobGluZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZ1dpdGhTcGFjZXNSZS50ZXN0KGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xpc3RJdGVtKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0SXRlbVJlLnRlc3QobGluZSk7XG4gIH1cblxuICBwcml2YXRlIGlzTGlzdEl0ZW1XaXRob3V0U3BhY2VzKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZS50ZXN0KGxpbmUpO1xuICB9XG59XG4iLCJleHBvcnQgdHlwZSBWZXJ0aWNhbExpbmVzQWN0aW9uID0gXCJub25lXCIgfCBcInpvb20taW5cIiB8IFwidG9nZ2xlLWZvbGRpbmdcIjtcbmV4cG9ydCB0eXBlIEtlZXBDdXJzb3JXaXRoaW5Db250ZW50ID1cbiAgfCBcIm5ldmVyXCJcbiAgfCBcImJ1bGxldC1vbmx5XCJcbiAgfCBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjtcblxuaW50ZXJmYWNlIFNldHRpbmdzT2JqZWN0IHtcbiAgc3R5bGVMaXN0czogYm9vbGVhbjtcbiAgZGVidWc6IGJvb2xlYW47XG4gIHN0aWNrQ3Vyc29yOiBLZWVwQ3Vyc29yV2l0aGluQ29udGVudCB8IGJvb2xlYW47XG4gIGJldHRlckVudGVyOiBib29sZWFuO1xuICBiZXR0ZXJUYWI6IGJvb2xlYW47XG4gIHNlbGVjdEFsbDogYm9vbGVhbjtcbiAgbGlzdExpbmVzOiBib29sZWFuO1xuICBsaXN0TGluZUFjdGlvbjogVmVydGljYWxMaW5lc0FjdGlvbjtcbiAgZG5kOiBib29sZWFuO1xuICBwcmV2aW91c1JlbGVhc2U6IHN0cmluZyB8IG51bGw7XG59XG5cbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IFNldHRpbmdzT2JqZWN0ID0ge1xuICBzdHlsZUxpc3RzOiB0cnVlLFxuICBkZWJ1ZzogZmFsc2UsXG4gIHN0aWNrQ3Vyc29yOiBcImJ1bGxldC1hbmQtY2hlY2tib3hcIixcbiAgYmV0dGVyRW50ZXI6IHRydWUsXG4gIGJldHRlclRhYjogdHJ1ZSxcbiAgc2VsZWN0QWxsOiB0cnVlLFxuICBsaXN0TGluZXM6IGZhbHNlLFxuICBsaXN0TGluZUFjdGlvbjogXCJ0b2dnbGUtZm9sZGluZ1wiLFxuICBkbmQ6IHRydWUsXG4gIHByZXZpb3VzUmVsZWFzZTogbnVsbCxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZSB7XG4gIGxvYWREYXRhKCk6IFByb21pc2U8U2V0dGluZ3NPYmplY3Q+O1xuICBzYXZlRGF0YShzZXR0aW5nczogU2V0dGluZ3NPYmplY3QpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG50eXBlIENhbGxiYWNrID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIFNldHRpbmdzIHtcbiAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlO1xuICBwcml2YXRlIHZhbHVlczogU2V0dGluZ3NPYmplY3Q7XG4gIHByaXZhdGUgY2FsbGJhY2tzOiBTZXQ8Q2FsbGJhY2s+O1xuXG4gIGNvbnN0cnVjdG9yKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlO1xuICAgIHRoaXMuY2FsbGJhY2tzID0gbmV3IFNldCgpO1xuICB9XG5cbiAgZ2V0IGtlZXBDdXJzb3JXaXRoaW5Db250ZW50KCkge1xuICAgIC8vIEFkYXB0b3IgZm9yIHVzZXJzIG1pZ3JhdGluZyBmcm9tIG9sZGVyIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAgICBpZiAodGhpcy52YWx1ZXMuc3RpY2tDdXJzb3IgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWVzLnN0aWNrQ3Vyc29yID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuc3RpY2tDdXJzb3I7XG4gIH1cblxuICBzZXQga2VlcEN1cnNvcldpdGhpbkNvbnRlbnQodmFsdWU6IEtlZXBDdXJzb3JXaXRoaW5Db250ZW50KSB7XG4gICAgdGhpcy5zZXQoXCJzdGlja0N1cnNvclwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb3ZlcnJpZGVUYWJCZWhhdmlvdXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmJldHRlclRhYjtcbiAgfVxuXG4gIHNldCBvdmVycmlkZVRhYkJlaGF2aW91cih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwiYmV0dGVyVGFiXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBvdmVycmlkZUVudGVyQmVoYXZpb3VyKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5iZXR0ZXJFbnRlcjtcbiAgfVxuXG4gIHNldCBvdmVycmlkZUVudGVyQmVoYXZpb3VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJiZXR0ZXJFbnRlclwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnNlbGVjdEFsbDtcbiAgfVxuXG4gIHNldCBvdmVycmlkZVNlbGVjdEFsbEJlaGF2aW91cih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwic2VsZWN0QWxsXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBiZXR0ZXJMaXN0c1N0eWxlcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuc3R5bGVMaXN0cztcbiAgfVxuXG4gIHNldCBiZXR0ZXJMaXN0c1N0eWxlcyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwic3R5bGVMaXN0c1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmVydGljYWxMaW5lcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGlzdExpbmVzO1xuICB9XG5cbiAgc2V0IHZlcnRpY2FsTGluZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImxpc3RMaW5lc1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmVydGljYWxMaW5lc0FjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGlzdExpbmVBY3Rpb247XG4gIH1cblxuICBzZXQgdmVydGljYWxMaW5lc0FjdGlvbih2YWx1ZTogVmVydGljYWxMaW5lc0FjdGlvbikge1xuICAgIHRoaXMuc2V0KFwibGlzdExpbmVBY3Rpb25cIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRyYWdBbmREcm9wKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5kbmQ7XG4gIH1cblxuICBzZXQgZHJhZ0FuZERyb3AodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImRuZFwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgZGVidWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmRlYnVnO1xuICB9XG5cbiAgc2V0IGRlYnVnKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJkZWJ1Z1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgcHJldmlvdXNSZWxlYXNlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5wcmV2aW91c1JlbGVhc2U7XG4gIH1cblxuICBzZXQgcHJldmlvdXNSZWxlYXNlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5zZXQoXCJwcmV2aW91c1JlbGVhc2VcIiwgdmFsdWUpO1xuICB9XG5cbiAgb25DaGFuZ2UoY2I6IENhbGxiYWNrKSB7XG4gICAgdGhpcy5jYWxsYmFja3MuYWRkKGNiKTtcbiAgfVxuXG4gIHJlbW92ZUNhbGxiYWNrKGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIHRoaXMuY2FsbGJhY2tzLmRlbGV0ZShjYik7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhERUZBVUxUX1NFVFRJTkdTKSkge1xuICAgICAgdGhpcy5zZXQoayBhcyBrZXlvZiBTZXR0aW5nc09iamVjdCwgdik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnZhbHVlcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIERFRkFVTFRfU0VUVElOR1MsXG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UubG9hZERhdGEoKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzYXZlKCkge1xuICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zYXZlRGF0YSh0aGlzLnZhbHVlcyk7XG4gIH1cblxuICBnZXRWYWx1ZXMoKTogU2V0dGluZ3NPYmplY3Qge1xuICAgIHJldHVybiB7IC4uLnRoaXMudmFsdWVzIH07XG4gIH1cblxuICBwcml2YXRlIHNldDxUIGV4dGVuZHMga2V5b2YgU2V0dGluZ3NPYmplY3Q+KFxuICAgIGtleTogVCxcbiAgICB2YWx1ZTogU2V0dGluZ3NPYmplY3RbVF1cbiAgKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBjYiBvZiB0aGlzLmNhbGxiYWNrcykge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBBcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGUgfSBmcm9tIFwiLi9mZWF0dXJlcy9BcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEJldHRlckxpc3RzU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvQmV0dGVyTGlzdHNTdHlsZXNcIjtcbmltcG9ydCB7IEN0cmxBQW5kQ21kQUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvQ3RybEFBbmRDbWRBQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IERlbGV0ZUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRGVsZXRlQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IERyYWdBbmREcm9wIH0gZnJvbSBcIi4vZmVhdHVyZXMvRHJhZ0FuZERyb3BcIjtcbmltcG9ydCB7IEVkaXRvclNlbGVjdGlvbnNCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL0VkaXRvclNlbGVjdGlvbnNCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgRW50ZXJCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL0VudGVyQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9GZWF0dXJlXCI7XG5pbXBvcnQgeyBMaXN0c0ZvbGRpbmdDb21tYW5kcyB9IGZyb20gXCIuL2ZlYXR1cmVzL0xpc3RzRm9sZGluZ0NvbW1hbmRzXCI7XG5pbXBvcnQgeyBMaXN0c01vdmVtZW50Q29tbWFuZHMgfSBmcm9tIFwiLi9mZWF0dXJlcy9MaXN0c01vdmVtZW50Q29tbWFuZHNcIjtcbmltcG9ydCB7IE1ldGFCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL01ldGFCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50IH0gZnJvbSBcIi4vZmVhdHVyZXMvUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50XCI7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYiB9IGZyb20gXCIuL2ZlYXR1cmVzL1NldHRpbmdzVGFiXCI7XG5pbXBvcnQgeyBTaGlmdFRhYkJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgU3lzdGVtSW5mbyB9IGZyb20gXCIuL2ZlYXR1cmVzL1N5c3RlbUluZm9cIjtcbmltcG9ydCB7IFRhYkJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvVGFiQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IFZlcnRpY2FsTGluZXMgfSBmcm9tIFwiLi9mZWF0dXJlcy9WZXJ0aWNhbExpbmVzXCI7XG5pbXBvcnQgeyBDaGFuZ2VzQXBwbGljYXRvciB9IGZyb20gXCIuL3NlcnZpY2VzL0NoYW5nZXNBcHBsaWNhdG9yXCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuL3NlcnZpY2VzL0lNRURldGVjdG9yXCI7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9Mb2dnZXJcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2V0dGluZ3MgfSBmcm9tIFwiLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuL3NlcnZpY2VzL1BhcnNlclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGNvbnN0IFBMVUdJTl9WRVJTSU9OOiBzdHJpbmc7XG4gIGNvbnN0IENIQU5HRUxPR19NRDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcbiAgcHJpdmF0ZSBmZWF0dXJlczogRmVhdHVyZVtdO1xuICBwcm90ZWN0ZWQgc2V0dGluZ3M6IFNldHRpbmdzO1xuICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyO1xuICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3M7XG4gIHByaXZhdGUgcGFyc2VyOiBQYXJzZXI7XG4gIHByaXZhdGUgY2hhbmdlc0FwcGxpY2F0b3I6IENoYW5nZXNBcHBsaWNhdG9yO1xuICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyO1xuICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcjtcblxuICBhc3luYyBvbmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgb2JzaWRpYW4tb3V0bGluZXJgKTtcblxuICAgIGF3YWl0IHRoaXMucHJlcGFyZVNldHRpbmdzKCk7XG5cbiAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MgPSBuZXcgT2JzaWRpYW5TZXR0aW5ncyh0aGlzLmFwcCk7XG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMuc2V0dGluZ3MpO1xuICAgIHRoaXMucGFyc2VyID0gbmV3IFBhcnNlcih0aGlzLmxvZ2dlciwgdGhpcy5zZXR0aW5ncyk7XG4gICAgdGhpcy5jaGFuZ2VzQXBwbGljYXRvciA9IG5ldyBDaGFuZ2VzQXBwbGljYXRvcigpO1xuICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyID0gbmV3IE9wZXJhdGlvblBlcmZvcm1lcihcbiAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgdGhpcy5jaGFuZ2VzQXBwbGljYXRvclxuICAgICk7XG5cbiAgICB0aGlzLmltZURldGVjdG9yID0gbmV3IElNRURldGVjdG9yKCk7XG4gICAgYXdhaXQgdGhpcy5pbWVEZXRlY3Rvci5sb2FkKCk7XG5cbiAgICB0aGlzLmZlYXR1cmVzID0gW1xuICAgICAgLy8gc2VydmljZSBmZWF0dXJlc1xuICAgICAgbmV3IFJlbGVhc2VOb3Rlc0Fubm91bmNlbWVudCh0aGlzLCB0aGlzLnNldHRpbmdzKSxcbiAgICAgIG5ldyBTZXR0aW5nc1RhYih0aGlzLCB0aGlzLnNldHRpbmdzKSxcbiAgICAgIG5ldyBTeXN0ZW1JbmZvKHRoaXMsIHRoaXMuc2V0dGluZ3MpLFxuXG4gICAgICAvLyBnZW5lcmFsIGZlYXR1cmVzXG4gICAgICBuZXcgTGlzdHNNb3ZlbWVudENvbW1hbmRzKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyXG4gICAgICApLFxuICAgICAgbmV3IExpc3RzRm9sZGluZ0NvbW1hbmRzKHRoaXMsIHRoaXMub2JzaWRpYW5TZXR0aW5ncyksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50XG4gICAgICBuZXcgRWRpdG9yU2VsZWN0aW9uc0JlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLnBhcnNlcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgQXJyb3dMZWZ0QW5kQ3RybEFycm93TGVmdEJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcbiAgICAgIG5ldyBCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgTWV0YUJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcbiAgICAgIG5ldyBEZWxldGVCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLm92ZXJyaWRlVGFiQmVoYXZpb3VyXG4gICAgICBuZXcgVGFiQmVoYXZpb3VyT3ZlcnJpZGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuaW1lRGV0ZWN0b3IsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLm92ZXJyaWRlRW50ZXJCZWhhdmlvdXJcbiAgICAgIG5ldyBFbnRlckJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MsXG4gICAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcblxuICAgICAgLy8gZmVhdHVyZXMgYmFzZWQgb24gc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXJcbiAgICAgIG5ldyBDdHJsQUFuZENtZEFCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzXG4gICAgICBuZXcgQmV0dGVyTGlzdHNTdHlsZXModGhpcy5zZXR0aW5ncywgdGhpcy5vYnNpZGlhblNldHRpbmdzKSxcblxuICAgICAgLy8gZmVhdHVyZXMgYmFzZWQgb24gc2V0dGluZ3MudmVydGljYWxMaW5lc1xuICAgICAgbmV3IFZlcnRpY2FsTGluZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5wYXJzZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmRyYWdBbmREcm9wXG4gICAgICBuZXcgRHJhZ0FuZERyb3AoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5wYXJzZXIsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyXG4gICAgICApLFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgdGhpcy5mZWF0dXJlcykge1xuICAgICAgYXdhaXQgZmVhdHVyZS5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb251bmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coYFVubG9hZGluZyBvYnNpZGlhbi1vdXRsaW5lcmApO1xuXG4gICAgYXdhaXQgdGhpcy5pbWVEZXRlY3Rvci51bmxvYWQoKTtcblxuICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiB0aGlzLmZlYXR1cmVzKSB7XG4gICAgICBhd2FpdCBmZWF0dXJlLnVubG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlU2V0dGluZ3MoKSB7XG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBTZXR0aW5ncyh0aGlzKTtcbiAgICBhd2FpdCB0aGlzLnNldHRpbmdzLmxvYWQoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImVkaXRvckluZm9GaWVsZCIsImZvbGRlZFJhbmdlcyIsImZvbGRhYmxlIiwiZm9sZEVmZmVjdCIsInVuZm9sZEVmZmVjdCIsInJ1blNjb3BlSGFuZGxlcnMiLCJrZXltYXAiLCJOb3RpY2UiLCJpbmRlbnRTdHJpbmciLCJnZXRJbmRlbnRVbml0IiwiU3RhdGVFZmZlY3QiLCJEZWNvcmF0aW9uIiwiU3RhdGVGaWVsZCIsIkVkaXRvclZpZXciLCJQbGF0Zm9ybSIsIkVkaXRvclN0YXRlIiwiUHJlYyIsIk1vZGFsIiwiTWFya2Rvd25SZW5kZXJlciIsIlBsdWdpblNldHRpbmdUYWIiLCJTZXR0aW5nIiwiVmlld1BsdWdpbiIsIlBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFvR0E7QUFDTyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFDN0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDaEgsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDL0QsUUFBUSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ25HLFFBQVEsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMs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 diff --git a/.obsidian/plugins/obsidian-outliner/manifest.json b/.obsidian/plugins/obsidian-outliner/manifest.json index 7934f61..457fd9b 100644 --- a/.obsidian/plugins/obsidian-outliner/manifest.json +++ b/.obsidian/plugins/obsidian-outliner/manifest.json @@ -1,8 +1,8 @@ { "id": "obsidian-outliner", "name": "Outliner", - "version": "4.2.1", - "minAppVersion": "1.0.0", + "version": "4.7.1", + "minAppVersion": "1.1.16", "description": "Work with your lists like in Workflowy or RoamResearch.", "author": "Viacheslav Slinko", "authorUrl": "https://github.com/vslinko", diff --git a/.obsidian/plugins/obsidian-outliner/styles.css b/.obsidian/plugins/obsidian-outliner/styles.css index c279228..650b4e5 100644 --- a/.obsidian/plugins/obsidian-outliner/styles.css +++ b/.obsidian/plugins/obsidian-outliner/styles.css @@ -1,14 +1,13 @@ -/* lists */ +/* lists and bullets */ .outliner-plugin-better-lists .cm-s-obsidian .HyperMD-list-line { padding-top: 0.4em; } -/* bullets */ -.outliner-plugin-better-bullets .cm-formatting-list-ul { +.outliner-plugin-better-lists .cm-formatting-list-ul { margin-right: 0.3em; } -.outliner-plugin-better-bullets .list-bullet::after { +.outliner-plugin-better-lists .list-bullet::after { width: 0.4em; height: 0.4em; background-color: var(--text-muted); @@ -69,3 +68,38 @@ .cm-indent::before { content: none; } + +/* drag-n-drop */ +.outliner-plugin-dropping-line { + background-color: hsla(var(--interactive-accent-hsl), 0.4); +} + +.outliner-plugin-dragging-line { + opacity: 0.5; + background-color: hsla(var(--interactive-accent-hsl), 0.2); +} + +.outliner-plugin-drop-zone { + width: 300px; + height: 4px; + background: var(--color-accent); + z-index: 999; + position: absolute; + pointer-events: none; +} + +.outliner-plugin-drop-zone-padding { + position: absolute; + height: 4px; +} + +body.outliner-plugin-dnd:not(.outliner-plugin-dragging) .cm-formatting-list, +body.outliner-plugin-dnd:not(.outliner-plugin-dragging) + .cm-fold-indicator + .collapse-indicator { + cursor: grab !important; +} + +html body.outliner-plugin-dnd.outliner-plugin-dragging { + cursor: grabbing !important; +} diff --git a/.obsidian/plugins/obsidian-quiet-outline/main.js b/.obsidian/plugins/obsidian-quiet-outline/main.js index e593b19..9c07b07 100644 --- a/.obsidian/plugins/obsidian-quiet-outline/main.js +++ b/.obsidian/plugins/obsidian-quiet-outline/main.js @@ -3,34 +3,34 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var DT=Object.create;var Cn=Object.defineProperty;var PT=Object.getOwnPropertyDescriptor;var MT=Object.getOwnPropertyNames;var BT=Object.getPrototypeOf,LT=Object.prototype.hasOwnProperty;var yp=e=>Cn(e,"__esModule",{value:!0});var Lt=(e,o)=>()=>(o||e((o={exports:{}}).exports,o),o.exports),ET=(e,o)=>{yp(e);for(var t in o)Cn(e,t,{get:o[t],enumerable:!0})},NT=(e,o,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of MT(o))!LT.call(e,r)&&r!=="default"&&Cn(e,r,{get:()=>o[r],enumerable:!(t=PT(o,r))||t.enumerable});return e},Ra=e=>NT(yp(Cn(e!=null?DT(BT(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var qe=(e,o,t)=>new Promise((r,a)=>{var l=d=>{try{i(t.next(d))}catch(s){a(s)}},n=d=>{try{i(t.throw(d))}catch(s){a(s)}},i=d=>d.done?r(d.value):Promise.resolve(d.value).then(l,n);i((t=t.apply(e,o)).next())});var iS=Lt((Ul,nS)=>{"use strict";Object.defineProperty(Ul,"__esModule",{value:!0});Ul.default=void 0;var Hv={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Wv=function(e,o,t){var r,a=Hv[e];return typeof a=="string"?r=a:o===1?r=a.one:r=a.other.replace("{{count}}",o.toString()),t!=null&&t.addSuffix?t.comparison&&t.comparison>0?"in "+r:r+" ago":r},Vv=Wv;Ul.default=Vv;nS.exports=Ul.default});var sS=Lt((qi,dS)=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.default=zv;function zv(e){return function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=o.width?String(o.width):e.defaultWidth,r=e.formats[t]||e.formats[e.defaultWidth];return r}}dS.exports=qi.default});var fS=Lt((Kl,uS)=>{"use strict";Object.defineProperty(Kl,"__esModule",{value:!0});Kl.default=void 0;var Gs=jv(sS());function jv(e){return e&&e.__esModule?e:{default:e}}var $v={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Uv={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Kv={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Gv={date:(0,Gs.default)({formats:$v,defaultWidth:"full"}),time:(0,Gs.default)({formats:Uv,defaultWidth:"full"}),dateTime:(0,Gs.default)({formats:Kv,defaultWidth:"full"})},qv=Gv;Kl.default=qv;uS.exports=Kl.default});var mS=Lt((Gl,pS)=>{"use strict";Object.defineProperty(Gl,"__esModule",{value:!0});Gl.default=void 0;var Qv={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Zv=function(e,o,t,r){return Qv[e]},Yv=Zv;Gl.default=Yv;pS.exports=Gl.default});var xS=Lt((Qi,cS)=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.default=Xv;function Xv(e){return function(o,t){var r=t||{},a=r.context?String(r.context):"standalone",l;if(a==="formatting"&&e.formattingValues){var n=e.defaultFormattingWidth||e.defaultWidth,i=r.width?String(r.width):n;l=e.formattingValues[i]||e.formattingValues[n]}else{var d=e.defaultWidth,s=r.width?String(r.width):e.defaultWidth;l=e.values[s]||e.values[d]}var u=e.argumentCallback?e.argumentCallback(o):o;return l[u]}}cS.exports=Qi.default});var SS=Lt((Ql,hS)=>{"use strict";Object.defineProperty(Ql,"__esModule",{value:!0});Ql.default=void 0;var ql=Jv(xS());function Jv(e){return e&&e.__esModule?e:{default:e}}var ek={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},ok={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},tk={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},rk={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},ak={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},lk={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},nk=function(e,o){var t=Number(e),r=t%100;if(r>20||r<10)switch(r%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},ik={ordinalNumber:nk,era:(0,ql.default)({values:ek,defaultWidth:"wide"}),quarter:(0,ql.default)({values:ok,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:(0,ql.default)({values:tk,defaultWidth:"wide"}),day:(0,ql.default)({values:rk,defaultWidth:"wide"}),dayPeriod:(0,ql.default)({values:ak,defaultWidth:"wide",formattingValues:lk,defaultFormattingWidth:"wide"})},dk=ik;Ql.default=dk;hS.exports=Ql.default});var wS=Lt((Zi,gS)=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.default=sk;function sk(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.width,a=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],l=o.match(a);if(!l)return null;var n=l[0],i=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],d=Array.isArray(i)?fk(i,function(f){return f.test(n)}):uk(i,function(f){return f.test(n)}),s;s=e.valueCallback?e.valueCallback(d):d,s=t.valueCallback?t.valueCallback(s):s;var u=o.slice(n.length);return{value:s,rest:u}}}function uk(e,o){for(var t in e)if(e.hasOwnProperty(t)&&o(e[t]))return t}function fk(e,o){for(var t=0;t{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});Yi.default=pk;function pk(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=o.match(e.matchPattern);if(!r)return null;var a=r[0],l=o.match(e.parsePattern);if(!l)return null;var n=e.valueCallback?e.valueCallback(l[0]):l[0];n=t.valueCallback?t.valueCallback(n):n;var i=o.slice(a.length);return{value:n,rest:i}}}TS.exports=Yi.default});var CS=Lt((Yl,OS)=>{"use strict";Object.defineProperty(Yl,"__esModule",{value:!0});Yl.default=void 0;var Zl=FS(wS()),mk=FS(RS());function FS(e){return e&&e.__esModule?e:{default:e}}var ck=/^(\d+)(th|st|nd|rd)?/i,xk=/\d+/i,hk={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Sk={any:[/^b/i,/^(a|c)/i]},gk={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},wk={any:[/1/i,/2/i,/3/i,/4/i]},Tk={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Rk={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Fk={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Ok={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Ck={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},bk={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},yk={ordinalNumber:(0,mk.default)({matchPattern:ck,parsePattern:xk,valueCallback:function(e){return parseInt(e,10)}}),era:(0,Zl.default)({matchPatterns:hk,defaultMatchWidth:"wide",parsePatterns:Sk,defaultParseWidth:"any"}),quarter:(0,Zl.default)({matchPatterns:gk,defaultMatchWidth:"wide",parsePatterns:wk,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:(0,Zl.default)({matchPatterns:Tk,defaultMatchWidth:"wide",parsePatterns:Rk,defaultParseWidth:"any"}),day:(0,Zl.default)({matchPatterns:Fk,defaultMatchWidth:"wide",parsePatterns:Ok,defaultParseWidth:"any"}),dayPeriod:(0,Zl.default)({matchPatterns:Ck,defaultMatchWidth:"any",parsePatterns:bk,defaultParseWidth:"any"})},vk=yk;Yl.default=vk;OS.exports=Yl.default});var yS=Lt((Jl,bS)=>{"use strict";Object.defineProperty(Jl,"__esModule",{value:!0});Jl.default=void 0;var kk=Xl(iS()),Ak=Xl(fS()),Dk=Xl(mS()),Pk=Xl(SS()),Mk=Xl(CS());function Xl(e){return e&&e.__esModule?e:{default:e}}var Bk={code:"en-US",formatDistance:kk.default,formatLong:Ak.default,formatRelative:Dk.default,localize:Pk.default,match:Mk.default,options:{weekStartsOn:0,firstWeekContainsDate:1}},Lk=Bk;Jl.default=Lk;bS.exports=Jl.default});ET(exports,{default:()=>UP});var $r=Ra(require("obsidian"));var oT=Ra(require("obsidian"));function Fa(e,o){let t=Object.create(null),r=e.split(",");for(let a=0;a!!t[a.toLowerCase()]:a=>!!t[a]}var GP={[1]:"TEXT",[2]:"CLASS",[4]:"STYLE",[8]:"PROPS",[16]:"FULL_PROPS",[32]:"HYDRATE_EVENTS",[64]:"STABLE_FRAGMENT",[128]:"KEYED_FRAGMENT",[256]:"UNKEYED_FRAGMENT",[512]:"NEED_PATCH",[1024]:"DYNAMIC_SLOTS",[2048]:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},qP={[1]:"STABLE",[2]:"DYNAMIC",[3]:"FORWARDED"};function Ur(e){if(Me(e)){let o={};for(let t=0;t{if(t){let r=t.split(IT);r.length>1&&(o[r[0].trim()]=r[1].trim())}}),o}function Kr(e){let o="";if(Ro(e))o=e;else if(Me(e))for(let t=0;tRo(e)?e:e==null?"":Me(e)||lo(e)&&(e.toString===Pp||!Ne(e.toString))?JSON.stringify(e,Ap,2):String(e),Ap=(e,o)=>o&&o.__v_isRef?Ap(e,o.value):hr(o)?{[`Map(${o.size})`]:[...o.entries()].reduce((t,[r,a])=>(t[`${r} =>`]=a,t),{})}:yn(o)?{[`Set(${o.size})`]:[...o.values()]}:lo(o)&&!Me(o)&&!Dd(o)?String(o):o,ao={},Gr=[],nt=()=>{},Dp=()=>!1,VT=/^on[^a-z]/,Oa=e=>VT.test(e),dl=e=>e.startsWith("onUpdate:"),Co=Object.assign,bn=(e,o)=>{let t=e.indexOf(o);t>-1&&e.splice(t,1)},zT=Object.prototype.hasOwnProperty,Ue=(e,o)=>zT.call(e,o),Me=Array.isArray,hr=e=>kn(e)==="[object Map]",yn=e=>kn(e)==="[object Set]";var Ne=e=>typeof e=="function",Ro=e=>typeof e=="string",vn=e=>typeof e=="symbol",lo=e=>e!==null&&typeof e=="object",kd=e=>lo(e)&&Ne(e.then)&&Ne(e.catch),Pp=Object.prototype.toString,kn=e=>Pp.call(e),Ad=e=>kn(e).slice(8,-1),Dd=e=>kn(e)==="[object Object]",An=e=>Ro(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,sl=Fa(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var Dn=e=>{let o=Object.create(null);return t=>o[t]||(o[t]=e(t))},jT=/-(\w)/g,Et=Dn(e=>e.replace(jT,(o,t)=>t?t.toUpperCase():"")),$T=/\B([A-Z])/g,Sr=Dn(e=>e.replace($T,"-$1").toLowerCase()),ul=Dn(e=>e.charAt(0).toUpperCase()+e.slice(1)),fl=Dn(e=>e?`on${ul(e)}`:""),qr=(e,o)=>!Object.is(e,o),pl=(e,o)=>{for(let t=0;t{Object.defineProperty(e,o,{configurable:!0,enumerable:!1,value:t})},ba=e=>{let o=parseFloat(e);return isNaN(o)?e:o},Mp,Bp=()=>Mp||(Mp=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});var Nt,Pn=class{constructor(o=!1){this.detached=o,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Nt,!o&&Nt&&(this.index=(Nt.scopes||(Nt.scopes=[])).push(this)-1)}run(o){if(this.active){let t=Nt;try{return Nt=this,o()}finally{Nt=t}}}on(){Nt=this}off(){Nt=this.parent}stop(o){if(this.active){let t,r;for(t=0,r=this.effects.length;t{let o=new Set(e);return o.w=0,o.n=0,o},Lp=e=>(e.w&gr)>0,Ep=e=>(e.n&gr)>0,KT=({deps:e})=>{if(e.length)for(let o=0;o{let{deps:o}=e;if(o.length){let t=0;for(let r=0;r{(f==="length"||f>=s)&&i.push(u)})}else switch(t!==void 0&&i.push(n.get(t)),o){case"add":Me(e)?An(t)&&i.push(n.get("length")):(i.push(n.get(Qr)),hr(e)&&i.push(n.get(Ld)));break;case"delete":Me(e)||(i.push(n.get(Qr)),hr(e)&&i.push(n.get(Ld)));break;case"set":hr(e)&&i.push(n.get(Qr));break}let d=void 0;if(i.length===1)i[0]&&Ed(i[0]);else{let s=[];for(let u of i)u&&s.push(...u);Ed(Pd(s))}}function Ed(e,o){let t=Me(e)?e:[...e];for(let r of t)r.computed&&Hp(r,o);for(let r of t)r.computed||Hp(r,o)}function Hp(e,o){(e!==bt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}var qT=Fa("__proto__,__v_isRef,__isVue"),Wp=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(vn)),QT=Nd(),ZT=Nd(!1,!0),YT=Nd(!0);var Vp=XT();function XT(){let e={};return["includes","indexOf","lastIndexOf"].forEach(o=>{e[o]=function(...t){let r=Ve(this);for(let l=0,n=this.length;l{e[o]=function(...t){Tr();let r=Ve(this)[o].apply(this,t);return Rr(),r}}),e}function Nd(e=!1,o=!1){return function(r,a,l){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return o;if(a==="__v_raw"&&l===(e?o?cR:Zp:o?Qp:qp).get(r))return r;let n=Me(r);if(!e&&n&&Ue(Vp,a))return Reflect.get(Vp,a,l);let i=Reflect.get(r,a,l);return(vn(a)?Wp.has(a):qT(a))||(e||et(r,"get",a),o)?i:vo(i)?n&&An(a)?i:i.value:lo(i)?e?Or(i):It(i):i}}var JT=zp(),eR=zp(!0);function zp(e=!1){return function(t,r,a,l){let n=t[r];if(br(n)&&vo(n)&&!vo(a))return!1;if(!e&&(!va(a)&&!br(a)&&(n=Ve(n),a=Ve(a)),!Me(t)&&vo(n)&&!vo(a)))return n.value=a,!0;let i=Me(t)&&An(r)?Number(r)e,Mn=e=>Reflect.getPrototypeOf(e);function Bn(e,o,t=!1,r=!1){e=e.__v_raw;let a=Ve(e),l=Ve(o);t||(o!==l&&et(a,"get",o),et(a,"get",l));let{has:n}=Mn(a),i=r?_d:t?Vd:cl;if(n.call(a,o))return i(e.get(o));if(n.call(a,l))return i(e.get(l));e!==a&&e.get(o)}function Ln(e,o=!1){let t=this.__v_raw,r=Ve(t),a=Ve(e);return o||(e!==a&&et(r,"has",e),et(r,"has",a)),e===a?t.has(e):t.has(e)||t.has(a)}function En(e,o=!1){return e=e.__v_raw,!o&&et(Ve(e),"iterate",Qr),Reflect.get(e,"size",e)}function $p(e){e=Ve(e);let o=Ve(this);return Mn(o).has.call(o,e)||(o.add(e),_t(o,"add",e,e)),this}function Up(e,o){o=Ve(o);let t=Ve(this),{has:r,get:a}=Mn(t),l=r.call(t,e);l||(e=Ve(e),l=r.call(t,e));let n=a.call(t,e);return t.set(e,o),l?qr(o,n)&&_t(t,"set",e,o,n):_t(t,"add",e,o),this}function Kp(e){let o=Ve(this),{has:t,get:r}=Mn(o),a=t.call(o,e);a||(e=Ve(e),a=t.call(o,e));let l=r?r.call(o,e):void 0,n=o.delete(e);return a&&_t(o,"delete",e,void 0,l),n}function Gp(){let e=Ve(this),o=e.size!==0,t=void 0,r=e.clear();return o&&_t(e,"clear",void 0,void 0,t),r}function Nn(e,o){return function(r,a){let l=this,n=l.__v_raw,i=Ve(n),d=o?_d:e?Vd:cl;return!e&&et(i,"iterate",Qr),n.forEach((s,u)=>r.call(a,d(s),d(u),l))}}function _n(e,o,t){return function(...r){let a=this.__v_raw,l=Ve(a),n=hr(l),i=e==="entries"||e===Symbol.iterator&&n,d=e==="keys"&&n,s=a[e](...r),u=t?_d:o?Vd:cl;return!o&&et(l,"iterate",d?Ld:Qr),{next(){let{value:f,done:m}=s.next();return m?{value:f,done:m}:{value:i?[u(f[0]),u(f[1])]:u(f),done:m}},[Symbol.iterator](){return this}}}}function Fr(e){return function(...o){return e==="delete"?!1:this}}function nR(){let e={get(l){return Bn(this,l)},get size(){return En(this)},has:Ln,add:$p,set:Up,delete:Kp,clear:Gp,forEach:Nn(!1,!1)},o={get(l){return Bn(this,l,!1,!0)},get size(){return En(this)},has:Ln,add:$p,set:Up,delete:Kp,clear:Gp,forEach:Nn(!1,!0)},t={get(l){return Bn(this,l,!0)},get size(){return En(this,!0)},has(l){return Ln.call(this,l,!0)},add:Fr("add"),set:Fr("set"),delete:Fr("delete"),clear:Fr("clear"),forEach:Nn(!0,!1)},r={get(l){return Bn(this,l,!0,!0)},get size(){return En(this,!0)},has(l){return Ln.call(this,l,!0)},add:Fr("add"),set:Fr("set"),delete:Fr("delete"),clear:Fr("clear"),forEach:Nn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{e[l]=_n(l,!1,!1),t[l]=_n(l,!0,!1),o[l]=_n(l,!1,!0),r[l]=_n(l,!0,!0)}),[e,t,o,r]}var[iR,dR,sR,uR]=nR();function Id(e,o){let t=o?e?uR:sR:e?dR:iR;return(r,a,l)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?r:Reflect.get(Ue(t,a)&&a in r?t:r,a,l)}var fR={get:Id(!1,!1)},pR={get:Id(!1,!0)},mR={get:Id(!0,!1)};var qp=new WeakMap,Qp=new WeakMap,Zp=new WeakMap,cR=new WeakMap;function xR(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function hR(e){return e.__v_skip||!Object.isExtensible(e)?0:xR(Ad(e))}function It(e){return br(e)?e:Wd(e,!1,jp,fR,qp)}function Hd(e){return Wd(e,!1,lR,pR,Qp)}function Or(e){return Wd(e,!0,aR,mR,Zp)}function Wd(e,o,t,r,a){if(!lo(e)||e.__v_raw&&!(o&&e.__v_isReactive))return e;let l=a.get(e);if(l)return l;let n=hR(e);if(n===0)return e;let i=new Proxy(e,n===2?r:t);return a.set(e,i),i}function Cr(e){return br(e)?Cr(e.__v_raw):!!(e&&e.__v_isReactive)}function br(e){return!!(e&&e.__v_isReadonly)}function va(e){return!!(e&&e.__v_isShallow)}function In(e){return Cr(e)||br(e)}function Ve(e){let o=e&&e.__v_raw;return o?Ve(o):e}function Zr(e){return Ca(e,"__v_skip",!0),e}var cl=e=>lo(e)?It(e):e,Vd=e=>lo(e)?Or(e):e;function Yp(e){wr&&bt&&(e=Ve(e),Ip(e.dep||(e.dep=Pd())))}function Xp(e,o){e=Ve(e),e.dep&&Ed(e.dep)}function vo(e){return!!(e&&e.__v_isRef===!0)}function Z(e){return SR(e,!1)}function SR(e,o){return vo(e)?e:new Jp(e,o)}var Jp=class{constructor(o,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?o:Ve(o),this._value=t?o:cl(o)}get value(){return Yp(this),this._value}set value(o){let t=this.__v_isShallow||va(o)||br(o);o=t?o:Ve(o),qr(o,this._rawValue)&&(this._rawValue=o,this._value=t?o:cl(o),Xp(this,o))}};function yr(e){return vo(e)?e.value:e}var gR={get:(e,o,t)=>yr(Reflect.get(e,o,t)),set:(e,o,t,r)=>{let a=e[o];return vo(a)&&!vo(t)?(a.value=t,!0):Reflect.set(e,o,t,r)}};function Hn(e){return Cr(e)?e:new Proxy(e,gR)}var em=class{constructor(o,t,r){this._object=o,this._key=t,this._defaultValue=r,this.__v_isRef=!0}get value(){let o=this._object[this._key];return o===void 0?this._defaultValue:o}set value(o){this._object[this._key]=o}};function Be(e,o,t){let r=e[o];return vo(r)?r:new em(e,o,t)}var om,tm=class{constructor(o,t,r,a){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[om]=!1,this._dirty=!0,this.effect=new ya(o,()=>{this._dirty||(this._dirty=!0,Xp(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=r}get value(){let o=Ve(this);return Yp(o),(o._dirty||!o._cacheable)&&(o._dirty=!1,o._value=o.effect.run()),o._value}set value(o){this._setter(o)}};om="__v_isReadonly";function rm(e,o,t=!1){let r,a,l=Ne(e);return l?(r=e,a=nt):(r=e.get,a=e.set),new tm(r,a,l||!a,t)}var wR;wR="__v_isReadonly";var xl=[];function am(e,...o){}function TR(){let e=xl[xl.length-1];if(!e)return[];let o=[];for(;e;){let t=o[0];t&&t.vnode===e?t.recurseCount++:o.push({vnode:e,recurseCount:0});let r=e.component&&e.component.parent;e=r&&r.vnode}return o}function RR(e){let o=[];return e.forEach((t,r)=>{o.push(...r===0?[]:[` -`],...FR(t))}),o}function FR({vnode:e,recurseCount:o}){let t=o>0?`... (${o} recursive calls)`:"",r=e.component?e.component.parent==null:!1,a=` at <${Um(e.component,e.type,r)}`,l=">"+t;return e.props?[a,...OR(e.props),l]:[a+l]}function OR(e){let o=[],t=Object.keys(e);return t.slice(0,3).forEach(r=>{o.push(...lm(r,e[r]))}),t.length>3&&o.push(" ..."),o}function lm(e,o,t){return Ro(o)?(o=JSON.stringify(o),t?o:[`${e}=${o}`]):typeof o=="number"||typeof o=="boolean"||o==null?t?o:[`${e}=${o}`]:vo(o)?(o=lm(e,Ve(o.value),!0),t?o:[`${e}=Ref<`,o,">"]):Ne(o)?[`${e}=fn${o.name?`<${o.name}>`:""}`]:(o=Ve(o),t?o:[`${e}=`,o])}var h0={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",[0]:"setup function",[1]:"render function",[2]:"watcher getter",[3]:"watcher callback",[4]:"watcher cleanup function",[5]:"native event handler",[6]:"component event handler",[7]:"vnode hook",[8]:"directive hook",[9]:"transition hook",[10]:"app errorHandler",[11]:"app warnHandler",[12]:"ref function",[13]:"async component loader",[14]:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function ar(e,o,t,r){let a;try{a=r?e(...r):e()}catch(l){Wn(l,o,t)}return a}function it(e,o,t,r){if(Ne(e)){let l=ar(e,o,t,r);return l&&kd(l)&&l.catch(n=>{Wn(n,o,t)}),l}let a=[];for(let l=0;l>>1;Sl(zo[r])Ht&&zo.splice(o,1)}function vR(e){Me(e)?ka.push(...e):(!lr||!lr.includes(e,e.allowRecurse?Yr+1:Yr))&&ka.push(e),im()}function dm(e,o=hl?Ht+1:0){for(;oSl(t)-Sl(r)),Yr=0;Yre.id==null?1/0:e.id,kR=(e,o)=>{let t=Sl(e)-Sl(o);if(t===0){if(e.pre&&!o.pre)return-1;if(o.pre&&!e.pre)return 1}return t};function um(e){zd=!1,hl=!0,zo.sort(kR);let o=nt;try{for(Ht=0;HtRo(p)?p.trim():p)),f&&(a=t.map(ba))}let i,d=r[i=fl(o)]||r[i=fl(Et(o))];!d&&l&&(d=r[i=fl(Sr(o))]),d&&it(d,e,6,a);let s=r[i+"Once"];if(s){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,it(s,e,6,a)}}function fm(e,o,t=!1){let r=o.emitsCache,a=r.get(e);if(a!==void 0)return a;let l=e.emits,n={},i=!1;if(!Ne(e)){let d=s=>{let u=fm(s,o,!0);u&&(i=!0,Co(n,u))};!t&&o.mixins.length&&o.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!l&&!i?(lo(e)&&r.set(e,null),null):(Me(l)?l.forEach(d=>n[d]=null):Co(n,l),lo(e)&&r.set(e,n),n)}function Vn(e,o){return!e||!Oa(o)?!1:(o=o.slice(2).replace(/Once$/,""),Ue(e,o[0].toLowerCase()+o.slice(1))||Ue(e,Sr(o))||Ue(e,o))}var jo=null,pm=null;function zn(e){let o=jo;return jo=e,pm=e&&e.type.__scopeId||null,o}function gl(e,o=jo,t){if(!o||e._n)return e;let r=(...a)=>{r._d&&_m(-1);let l=zn(o),n;try{n=e(...a)}finally{zn(l),r._d&&_m(1)}return n};return r._n=!0,r._c=!0,r._d=!0,r}function Ud(e){let{type:o,vnode:t,proxy:r,withProxy:a,props:l,propsOptions:[n],slots:i,attrs:d,emit:s,render:u,renderCache:f,data:m,setupState:p,ctx:c,inheritAttrs:T}=e,C,g,k=zn(e);try{if(t.shapeFlag&4){let w=a||r;C=Vt(u.call(w,w,f,l,p,m,c)),g=d}else{let w=o;C=Vt(w.length>1?w(l,{attrs:d,slots:i,emit:s}):w(l,null)),g=o.props?d:DR(d)}}catch(w){Ol.length=0,Wn(w,e,1),C=Fo($o)}let U=C,F;if(g&&T!==!1){let w=Object.keys(g),{shapeFlag:y}=U;w.length&&y&(1|6)&&(n&&w.some(dl)&&(g=PR(g,n)),U=vr(U,g))}return t.dirs&&(U=vr(U),U.dirs=U.dirs?U.dirs.concat(t.dirs):t.dirs),t.transition&&(U.transition=t.transition),C=U,zn(k),C}var DR=e=>{let o;for(let t in e)(t==="class"||t==="style"||Oa(t))&&((o||(o={}))[t]=e[t]);return o},PR=(e,o)=>{let t={};for(let r in e)(!dl(r)||!(r.slice(9)in o))&&(t[r]=e[r]);return t};function MR(e,o,t){let{props:r,children:a,component:l}=e,{props:n,children:i,patchFlag:d}=o,s=l.emitsOptions;if(o.dirs||o.transition)return!0;if(t&&d>=0){if(d&1024)return!0;if(d&16)return r?mm(r,n,s):!!n;if(d&8){let u=o.dynamicProps;for(let f=0;fe.__isSuspense;function ER(e,o){o&&o.pendingBranch?Me(e)?o.effects.push(...e):o.effects.push(e):vR(e)}function qo(e,o){if(Io){let t=Io.provides,r=Io.parent&&Io.parent.provides;r===t&&(t=Io.provides=Object.create(r)),t[e]=o}}function Re(e,o,t=!1){let r=Io||jo;if(r){let a=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(a&&e in a)return a[e];if(arguments.length>1)return t&&Ne(o)?o.call(r.proxy):o}}function Mo(e,o){return $n(e,null,o)}function cm(e,o){return $n(e,null,{flush:"post"})}var jn={};function Xe(e,o,t){return $n(e,o,t)}function $n(e,o,{immediate:t,deep:r,flush:a,onTrack:l,onTrigger:n}=ao){let i=F=>{am("Invalid watch source: ",F,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},d=Io,s,u=!1,f=!1;if(vo(e)?(s=()=>e.value,u=va(e)):Cr(e)?(s=()=>e,r=!0):Me(e)?(f=!0,u=e.some(F=>Cr(F)||va(F)),s=()=>e.map(F=>{if(vo(F))return F.value;if(Cr(F))return Xr(F);if(Ne(F))return ar(F,d,2)})):Ne(e)?o?s=()=>ar(e,d,2):s=()=>{if(!(d&&d.isUnmounted))return m&&m(),it(e,d,3,[p])}:s=nt,o&&r){let F=s;s=()=>Xr(F())}let m,p=F=>{m=k.onStop=()=>{ar(F,d,4)}},c;if(vl)if(p=nt,o?t&&it(o,d,3,[s(),f?[]:void 0,p]):s(),a==="sync"){let F=bF();c=F.__watcherHandles||(F.__watcherHandles=[])}else return nt;let T=f?new Array(e.length).fill(jn):jn,C=()=>{if(!!k.active)if(o){let F=k.run();(r||u||(f?F.some((w,y)=>qr(w,T[y])):qr(F,T)))&&(m&&m(),it(o,d,3,[F,T===jn?void 0:f&&T[0]===jn?[]:T,p]),T=F)}else k.run()};C.allowRecurse=!!o;let g;a==="sync"?g=C:a==="post"?g=()=>ot(C,d&&d.suspense):(C.pre=!0,d&&(C.id=d.uid),g=()=>$d(C));let k=new ya(s,g);o?t?C():T=k.run():a==="post"?ot(k.run.bind(k),d&&d.suspense):k.run();let U=()=>{k.stop(),d&&d.scope&&bn(d.scope.effects,k)};return c&&c.push(U),U}function NR(e,o,t){let r=this.proxy,a=Ro(e)?e.includes(".")?xm(r,e):()=>r[e]:e.bind(r,r),l;Ne(o)?l=o:(l=o.handler,t=o);let n=Io;Ea(this);let i=$n(a,l.bind(r),t);return n?Ea(n):aa(),i}function xm(e,o){let t=o.split(".");return()=>{let r=e;for(let a=0;a{Xr(t,o)});else if(Dd(e))for(let t in e)Xr(e[t],o);return e}function Kd(){let e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return mo(()=>{e.isMounted=!0}),_o(()=>{e.isUnmounting=!0}),e}var xt=[Function,Array],_R={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:xt,onEnter:xt,onAfterEnter:xt,onEnterCancelled:xt,onBeforeLeave:xt,onLeave:xt,onAfterLeave:xt,onLeaveCancelled:xt,onBeforeAppear:xt,onAppear:xt,onAfterAppear:xt,onAppearCancelled:xt},setup(e,{slots:o}){let t=ht(),r=Kd(),a;return()=>{let l=o.default&&Un(o.default(),!0);if(!l||!l.length)return;let n=l[0];if(l.length>1){let T=!1;for(let C of l)if(C.type!==$o){n=C,T=!0;break}}let i=Ve(e),{mode:d}=i;if(r.isLeaving)return qd(n);let s=Sm(n);if(!s)return qd(n);let u=Aa(s,i,r,t);Da(s,u);let f=t.subTree,m=f&&Sm(f),p=!1,{getTransitionKey:c}=s.type;if(c){let T=c();a===void 0?a=T:T!==a&&(a=T,p=!0)}if(m&&m.type!==$o&&(!ra(s,m)||p)){let T=Aa(m,i,r,t);if(Da(m,T),d==="out-in")return r.isLeaving=!0,T.afterLeave=()=>{r.isLeaving=!1,t.update.active!==!1&&t.update()},qd(n);d==="in-out"&&s.type!==$o&&(T.delayLeave=(C,g,k)=>{let U=hm(r,m);U[String(m.key)]=m,C._leaveCb=()=>{g(),C._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=k})}return n}}},Gd=_R;function hm(e,o){let{leavingVNodes:t}=e,r=t.get(o.type);return r||(r=Object.create(null),t.set(o.type,r)),r}function Aa(e,o,t,r){let{appear:a,mode:l,persisted:n=!1,onBeforeEnter:i,onEnter:d,onAfterEnter:s,onEnterCancelled:u,onBeforeLeave:f,onLeave:m,onAfterLeave:p,onLeaveCancelled:c,onBeforeAppear:T,onAppear:C,onAfterAppear:g,onAppearCancelled:k}=o,U=String(e.key),F=hm(t,e),w=(O,L)=>{O&&it(O,r,9,L)},y=(O,L)=>{let b=L[1];w(O,L),Me(O)?O.every(W=>W.length<=1)&&b():O.length<=1&&b()},S={mode:l,persisted:n,beforeEnter(O){let L=i;if(!t.isMounted)if(a)L=T||i;else return;O._leaveCb&&O._leaveCb(!0);let b=F[U];b&&ra(e,b)&&b.el._leaveCb&&b.el._leaveCb(),w(L,[O])},enter(O){let L=d,b=s,W=u;if(!t.isMounted)if(a)L=C||d,b=g||s,W=k||u;else return;let B=!1,ne=O._enterCb=ge=>{B||(B=!0,ge?w(W,[O]):w(b,[O]),S.delayedLeave&&S.delayedLeave(),O._enterCb=void 0)};L?y(L,[O,ne]):ne()},leave(O,L){let b=String(e.key);if(O._enterCb&&O._enterCb(!0),t.isUnmounting)return L();w(f,[O]);let W=!1,B=O._leaveCb=ne=>{W||(W=!0,L(),ne?w(c,[O]):w(p,[O]),O._leaveCb=void 0,F[b]===e&&delete F[b])};F[b]=e,m?y(m,[O,B]):B()},clone(O){return Aa(O,o,t,r)}};return S}function qd(e){if(Kn(e))return e=vr(e),e.children=null,e}function Sm(e){return Kn(e)?e.children?e.children[0]:void 0:e}function Da(e,o){e.shapeFlag&6&&e.component?Da(e.component.subTree,o):e.shapeFlag&128?(e.ssContent.transition=o.clone(e.ssContent),e.ssFallback.transition=o.clone(e.ssFallback)):e.transition=o}function Un(e,o=!1,t){let r=[],a=0;for(let l=0;l1)for(let l=0;l!!e.type.__asyncLoader;var Kn=e=>e.type.__isKeepAlive;function Qd(e,o){gm(e,"a",o)}function IR(e,o){gm(e,"da",o)}function gm(e,o,t=Io){let r=e.__wdc||(e.__wdc=()=>{let a=t;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Gn(o,r,t),t){let a=t.parent;for(;a&&a.parent;)Kn(a.parent.vnode)&&HR(r,o,t,a),a=a.parent}}function HR(e,o,t,r){let a=Gn(o,e,r,!0);Jr(()=>{bn(r[o],a)},t)}function Gn(e,o,t=Io,r=!1){if(t){let a=t[e]||(t[e]=[]),l=o.__weh||(o.__weh=(...n)=>{if(t.isUnmounted)return;Tr(),Ea(t);let i=it(o,t,e,n);return aa(),Rr(),i});return r?a.unshift(l):a.push(l),l}}var nr=e=>(o,t=Io)=>(!vl||e==="sp")&&Gn(e,(...r)=>o(...r),t),ir=nr("bm"),mo=nr("m"),Zd=nr("bu"),Yd=nr("u"),_o=nr("bum"),Jr=nr("um"),WR=nr("sp"),VR=nr("rtg"),zR=nr("rtc");function jR(e,o=Io){Gn("ec",e,o)}function qn(e,o){let t=jo;if(t===null)return e;let r=ti(t)||t.proxy,a=e.dirs||(e.dirs=[]);for(let l=0;lBa(o)?!(o.type===$o||o.type===bo&&!wm(o.children)):!0)?e:null}var Xd=e=>e?Wm(e)?ti(e)||e.proxy:Xd(e.parent):null,Tl=Co(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Xd(e.parent),$root:e=>Xd(e.root),$emit:e=>e.emit,$options:e=>os(e),$forceUpdate:e=>e.f||(e.f=()=>$d(e.update)),$nextTick:e=>e.n||(e.n=No.bind(e.proxy)),$watch:e=>NR.bind(e)});var Jd=(e,o)=>e!==ao&&!e.__isScriptSetup&&Ue(e,o),UR={get({_:e},o){let{ctx:t,setupState:r,data:a,props:l,accessCache:n,type:i,appContext:d}=e,s;if(o[0]!=="$"){let p=n[o];if(p!==void 0)switch(p){case 1:return r[o];case 2:return a[o];case 4:return t[o];case 3:return l[o]}else{if(Jd(r,o))return n[o]=1,r[o];if(a!==ao&&Ue(a,o))return n[o]=2,a[o];if((s=e.propsOptions[0])&&Ue(s,o))return n[o]=3,l[o];if(t!==ao&&Ue(t,o))return n[o]=4,t[o];es&&(n[o]=0)}}let u=Tl[o],f,m;if(u)return o==="$attrs"&&et(e,"get",o),u(e);if((f=i.__cssModules)&&(f=f[o]))return f;if(t!==ao&&Ue(t,o))return n[o]=4,t[o];if(m=d.config.globalProperties,Ue(m,o))return m[o]},set({_:e},o,t){let{data:r,setupState:a,ctx:l}=e;return Jd(a,o)?(a[o]=t,!0):r!==ao&&Ue(r,o)?(r[o]=t,!0):Ue(e.props,o)||o[0]==="$"&&o.slice(1)in e?!1:(l[o]=t,!0)},has({_:{data:e,setupState:o,accessCache:t,ctx:r,appContext:a,propsOptions:l}},n){let i;return!!t[n]||e!==ao&&Ue(e,n)||Jd(o,n)||(i=l[0])&&Ue(i,n)||Ue(r,n)||Ue(Tl,n)||Ue(a.config.globalProperties,n)},defineProperty(e,o,t){return t.get!=null?e._.accessCache[o]=0:Ue(t,"value")&&this.set(e,o,t.value,null),Reflect.defineProperty(e,o,t)}};var es=!0;function KR(e){let o=os(e),t=e.proxy,r=e.ctx;es=!1,o.beforeCreate&&Tm(o.beforeCreate,e,"bc");let{data:a,computed:l,methods:n,watch:i,provide:d,inject:s,created:u,beforeMount:f,mounted:m,beforeUpdate:p,updated:c,activated:T,deactivated:C,beforeDestroy:g,beforeUnmount:k,destroyed:U,unmounted:F,render:w,renderTracked:y,renderTriggered:S,errorCaptured:O,serverPrefetch:L,expose:b,inheritAttrs:W,components:B,directives:ne,filters:ge}=o;if(s&&GR(s,r,null,e.appContext.config.unwrapInjectedRef),n)for(let se in n){let Te=n[se];Ne(Te)&&(r[se]=Te.bind(t))}if(a){let se=a.call(t,t);lo(se)&&(e.data=It(se))}if(es=!0,l)for(let se in l){let Te=l[se],je=Ne(Te)?Te.bind(t,t):Ne(Te.get)?Te.get.bind(t,t):nt,Ge=!Ne(Te)&&Ne(Te.set)?Te.set.bind(t):nt,ze=z({get:je,set:Ge});Object.defineProperty(r,se,{enumerable:!0,configurable:!0,get:()=>ze.value,set:Ze=>ze.value=Ze})}if(i)for(let se in i)Rm(i[se],r,t,se);if(d){let se=Ne(d)?d.call(t):d;Reflect.ownKeys(se).forEach(Te=>{qo(Te,se[Te])})}u&&Tm(u,e,"c");function ue(se,Te){Me(Te)?Te.forEach(je=>se(je.bind(t))):Te&&se(Te.bind(t))}if(ue(ir,f),ue(mo,m),ue(Zd,p),ue(Yd,c),ue(Qd,T),ue(IR,C),ue(jR,O),ue(zR,y),ue(VR,S),ue(_o,k),ue(Jr,F),ue(WR,L),Me(b))if(b.length){let se=e.exposed||(e.exposed={});b.forEach(Te=>{Object.defineProperty(se,Te,{get:()=>t[Te],set:je=>t[Te]=je})})}else e.exposed||(e.exposed={});w&&e.render===nt&&(e.render=w),W!=null&&(e.inheritAttrs=W),B&&(e.components=B),ne&&(e.directives=ne)}function GR(e,o,t=nt,r=!1){Me(e)&&(e=ts(e));for(let a in e){let l=e[a],n;lo(l)?"default"in l?n=Re(l.from||a,l.default,!0):n=Re(l.from||a):n=Re(l),vo(n)&&r?Object.defineProperty(o,a,{enumerable:!0,configurable:!0,get:()=>n.value,set:i=>n.value=i}):o[a]=n}}function Tm(e,o,t){it(Me(e)?e.map(r=>r.bind(o.proxy)):e.bind(o.proxy),o,t)}function Rm(e,o,t,r){let a=r.includes(".")?xm(t,r):()=>t[r];if(Ro(e)){let l=o[e];Ne(l)&&Xe(a,l)}else if(Ne(e))Xe(a,e.bind(t));else if(lo(e))if(Me(e))e.forEach(l=>Rm(l,o,t,r));else{let l=Ne(e.handler)?e.handler.bind(t):o[e.handler];Ne(l)&&Xe(a,l,e)}}function os(e){let o=e.type,{mixins:t,extends:r}=o,{mixins:a,optionsCache:l,config:{optionMergeStrategies:n}}=e.appContext,i=l.get(o),d;return i?d=i:!a.length&&!t&&!r?d=o:(d={},a.length&&a.forEach(s=>Qn(d,s,n,!0)),Qn(d,o,n)),lo(o)&&l.set(o,d),d}function Qn(e,o,t,r=!1){let{mixins:a,extends:l}=o;l&&Qn(e,l,t,!0),a&&a.forEach(n=>Qn(e,n,t,!0));for(let n in o)if(!(r&&n==="expose")){let i=qR[n]||t&&t[n];e[n]=i?i(e[n],o[n]):o[n]}return e}var qR={data:Fm,props:oa,emits:oa,methods:oa,computed:oa,beforeCreate:Qo,created:Qo,beforeMount:Qo,mounted:Qo,beforeUpdate:Qo,updated:Qo,beforeDestroy:Qo,beforeUnmount:Qo,destroyed:Qo,unmounted:Qo,activated:Qo,deactivated:Qo,errorCaptured:Qo,serverPrefetch:Qo,components:oa,directives:oa,watch:ZR,provide:Fm,inject:QR};function Fm(e,o){return o?e?function(){return Co(Ne(e)?e.call(this,this):e,Ne(o)?o.call(this,this):o)}:o:e}function QR(e,o){return oa(ts(e),ts(o))}function ts(e){if(Me(e)){let o={};for(let t=0;t0)&&!(n&16)){if(n&8){let u=e.vnode.dynamicProps;for(let f=0;f{d=!0;let[m,p]=Cm(f,o,!0);Co(n,m),p&&i.push(...p)};!t&&o.mixins.length&&o.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!l&&!d)return lo(e)&&r.set(e,Gr),Gr;if(Me(l))for(let u=0;u-1,p[1]=T<0||c-1||Ue(p,"default"))&&i.push(f)}}}let s=[n,i];return lo(e)&&r.set(e,s),s}function bm(e){return e[0]!=="$"}function ym(e){let o=e&&e.toString().match(/^\s*function (\w+)/);return o?o[1]:e===null?"null":""}function vm(e,o){return ym(e)===ym(o)}function km(e,o){return Me(o)?o.findIndex(t=>vm(t,e)):Ne(o)&&vm(o,e)?0:-1}var Am=e=>e[0]==="_"||e==="$stable",as=e=>Me(e)?e.map(Vt):[Vt(e)],JR=(e,o,t)=>{if(o._n)return o;let r=gl((...a)=>as(o(...a)),t);return r._c=!1,r},Dm=(e,o,t)=>{let r=e._ctx;for(let a in e){if(Am(a))continue;let l=e[a];if(Ne(l))o[a]=JR(a,l,r);else if(l!=null){let n=as(l);o[a]=()=>n}}},Pm=(e,o)=>{let t=as(o);e.slots.default=()=>t},eF=(e,o)=>{if(e.vnode.shapeFlag&32){let t=o._;t?(e.slots=Ve(o),Ca(o,"_",t)):Dm(o,e.slots={})}else e.slots={},o&&Pm(e,o);Ca(e.slots,Xn,1)},oF=(e,o,t)=>{let{vnode:r,slots:a}=e,l=!0,n=ao;if(r.shapeFlag&32){let i=o._;i?t&&i===1?l=!1:(Co(a,o),!t&&i===1&&delete a._):(l=!o.$stable,Dm(o,a)),n=o}else o&&(Pm(e,o),n={default:1});if(l)for(let i in a)!Am(i)&&!(i in n)&&delete a[i]};function Mm(){return{app:null,config:{isNativeTag:Dp,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}var tF=0;function rF(e,o){return function(r,a=null){Ne(r)||(r=Object.assign({},r)),a!=null&&!lo(a)&&(a=null);let l=Mm(),n=new Set,i=!1,d=l.app={_uid:tF++,_component:r,_props:a,_container:null,_context:l,_instance:null,version:yF,get config(){return l.config},set config(s){},use(s,...u){return n.has(s)||(s&&Ne(s.install)?(n.add(s),s.install(d,...u)):Ne(s)&&(n.add(s),s(d,...u))),d},mixin(s){return l.mixins.includes(s)||l.mixins.push(s),d},component(s,u){return u?(l.components[s]=u,d):l.components[s]},directive(s,u){return u?(l.directives[s]=u,d):l.directives[s]},mount(s,u,f){if(!i){let m=Fo(r,a);return m.appContext=l,u&&o?o(m,s):e(m,s,f),i=!0,d._container=s,s.__vue_app__=d,ti(m.component)||m.component.proxy}},unmount(){i&&(e(null,d._container),delete d._container.__vue_app__)},provide(s,u){return l.provides[s]=u,d}};return d}}function ls(e,o,t,r,a=!1){if(Me(e)){e.forEach((m,p)=>ls(m,o&&(Me(o)?o[p]:o),t,r,a));return}if(wl(r)&&!a)return;let l=r.shapeFlag&4?ti(r.component)||r.component.proxy:r.el,n=a?null:l,{i,r:d}=e,s=o&&o.r,u=i.refs===ao?i.refs={}:i.refs,f=i.setupState;if(s!=null&&s!==d&&(Ro(s)?(u[s]=null,Ue(f,s)&&(f[s]=null)):vo(s)&&(s.value=null)),Ne(d))ar(d,i,12,[n,u]);else{let m=Ro(d),p=vo(d);if(m||p){let c=()=>{if(e.f){let T=m?Ue(f,d)?f[d]:u[d]:d.value;a?Me(T)&&bn(T,l):Me(T)?T.includes(l)||T.push(l):m?(u[d]=[l],Ue(f,d)&&(f[d]=u[d])):(d.value=[l],e.k&&(u[e.k]=d.value))}else m?(u[d]=n,Ue(f,d)&&(f[d]=n)):p&&(d.value=n,e.k&&(u[e.k]=n))};n?(c.id=-1,ot(c,t)):c()}}}function aF(){let e=[]}var ot=ER;function Bm(e){return lF(e)}function lF(e,o){aF();let t=Bp();t.__VUE__=!0;let{insert:r,remove:a,patchProp:l,createElement:n,createText:i,createComment:d,setText:s,setElementText:u,parentNode:f,nextSibling:m,setScopeId:p=nt,insertStaticContent:c}=e,T=(x,h,P,N=null,H=null,$=null,Y=!1,I=null,V=!!h.dynamicChildren)=>{if(x===h)return;x&&!ra(x,h)&&(N=fo(x),Ye(x,H,$,!0),x=null),h.patchFlag===-2&&(V=!1,h.dynamicChildren=null);let{type:q,ref:A,shapeFlag:_}=h;switch(q){case Yn:C(x,h,P,N);break;case $o:g(x,h,P,N);break;case Fl:x==null&&k(h,P,N,Y);break;case bo:ne(x,h,P,N,H,$,Y,I,V);break;default:_&1?y(x,h,P,N,H,$,Y,I,V):_&6?ge(x,h,P,N,H,$,Y,I,V):(_&64||_&128)&&q.process(x,h,P,N,H,$,Y,I,V,ro)}A!=null&&H&&ls(A,x&&x.ref,$,h||x,!h)},C=(x,h,P,N)=>{if(x==null)r(h.el=i(h.children),P,N);else{let H=h.el=x.el;h.children!==x.children&&s(H,h.children)}},g=(x,h,P,N)=>{x==null?r(h.el=d(h.children||""),P,N):h.el=x.el},k=(x,h,P,N)=>{[x.el,x.anchor]=c(x.children,h,P,N,x.el,x.anchor)},U=(x,h,P,N)=>{if(h.children!==x.children){let H=m(x.anchor);w(x),[h.el,h.anchor]=c(h.children,P,H,N)}else h.el=x.el,h.anchor=x.anchor},F=({el:x,anchor:h},P,N)=>{let H;for(;x&&x!==h;)H=m(x),r(x,P,N),x=H;r(h,P,N)},w=({el:x,anchor:h})=>{let P;for(;x&&x!==h;)P=m(x),a(x),x=P;a(h)},y=(x,h,P,N,H,$,Y,I,V)=>{Y=Y||h.type==="svg",x==null?S(h,P,N,H,$,Y,I,V):b(x,h,H,$,Y,I,V)},S=(x,h,P,N,H,$,Y,I)=>{let V,q,{type:A,props:_,shapeFlag:j,transition:re,dirs:me}=x;if(V=x.el=n(x.type,$,_&&_.is,_),j&8?u(V,x.children):j&16&&L(x.children,V,null,N,H,$&&A!=="foreignObject",Y,I),me&&ea(x,null,N,"created"),_){for(let ke in _)ke!=="value"&&!sl(ke)&&l(V,ke,null,_[ke],$,x.children,N,H,Ie);"value"in _&&l(V,"value",null,_.value),(q=_.onVnodeBeforeMount)&&zt(q,N,x)}O(V,x,x.scopeId,Y,N),me&&ea(x,null,N,"beforeMount");let ye=(!H||H&&!H.pendingBranch)&&re&&!re.persisted;ye&&re.beforeEnter(V),r(V,h,P),((q=_&&_.onVnodeMounted)||ye||me)&&ot(()=>{q&&zt(q,N,x),ye&&re.enter(V),me&&ea(x,null,N,"mounted")},H)},O=(x,h,P,N,H)=>{if(P&&p(x,P),N)for(let $=0;${for(let q=V;q{let I=h.el=x.el,{patchFlag:V,dynamicChildren:q,dirs:A}=h;V|=x.patchFlag&16;let _=x.props||ao,j=h.props||ao,re;P&&ta(P,!1),(re=j.onVnodeBeforeUpdate)&&zt(re,P,h,x),A&&ea(h,x,P,"beforeUpdate"),P&&ta(P,!0);let me=H&&h.type!=="foreignObject";if(q?W(x.dynamicChildren,q,I,P,N,me,$):Y||je(x,h,I,null,P,N,me,$,!1),V>0){if(V&16)B(I,h,_,j,P,N,H);else if(V&2&&_.class!==j.class&&l(I,"class",null,j.class,H),V&4&&l(I,"style",_.style,j.style,H),V&8){let ye=h.dynamicProps;for(let ke=0;ke{re&&zt(re,P,h,x),A&&ea(h,x,P,"updated")},N)},W=(x,h,P,N,H,$,Y)=>{for(let I=0;I{if(P!==N){if(P!==ao)for(let I in P)!sl(I)&&!(I in N)&&l(x,I,P[I],null,Y,h.children,H,$,Ie);for(let I in N){if(sl(I))continue;let V=N[I],q=P[I];V!==q&&I!=="value"&&l(x,I,q,V,Y,h.children,H,$,Ie)}"value"in N&&l(x,"value",P.value,N.value)}},ne=(x,h,P,N,H,$,Y,I,V)=>{let q=h.el=x?x.el:i(""),A=h.anchor=x?x.anchor:i(""),{patchFlag:_,dynamicChildren:j,slotScopeIds:re}=h;re&&(I=I?I.concat(re):re),x==null?(r(q,P,N),r(A,P,N),L(h.children,P,A,H,$,Y,I,V)):_>0&&_&64&&j&&x.dynamicChildren?(W(x.dynamicChildren,j,P,H,$,Y,I),(h.key!=null||H&&h===H.subTree)&&ns(x,h,!0)):je(x,h,P,A,H,$,Y,I,V)},ge=(x,h,P,N,H,$,Y,I,V)=>{h.slotScopeIds=I,x==null?h.shapeFlag&512?H.ctx.activate(h,P,N,Y,V):Pe(h,P,N,H,$,Y,V):ue(x,h,V)},Pe=(x,h,P,N,H,$,Y)=>{let I=x.component=xF(x,N,H);if(Kn(x)&&(I.ctx.renderer=ro),hF(I),I.asyncDep){if(H&&H.registerDep(I,se),!x.el){let V=I.subTree=Fo($o);g(null,V,h,P)}return}se(I,x,h,P,H,$,Y)},ue=(x,h,P)=>{let N=h.component=x.component;if(MR(x,h,P))if(N.asyncDep&&!N.asyncResolved){Te(N,h,P);return}else N.next=h,yR(N.update),N.update();else h.el=x.el,N.vnode=h},se=(x,h,P,N,H,$,Y)=>{let I=()=>{if(x.isMounted){let{next:A,bu:_,u:j,parent:re,vnode:me}=x,ye=A,ke;ta(x,!1),A?(A.el=me.el,Te(x,A,Y)):A=me,_&&pl(_),(ke=A.props&&A.props.onVnodeBeforeUpdate)&&zt(ke,re,A,me),ta(x,!0);let Ee=Ud(x),Q=x.subTree;x.subTree=Ee,T(Q,Ee,f(Q.el),fo(Q),x,H,$),A.el=Ee.el,ye===null&&BR(x,Ee.el),j&&ot(j,H),(ke=A.props&&A.props.onVnodeUpdated)&&ot(()=>zt(ke,re,A,me),H)}else{let A,{el:_,props:j}=h,{bm:re,m:me,parent:ye}=x,ke=wl(h);if(ta(x,!1),re&&pl(re),!ke&&(A=j&&j.onVnodeBeforeMount)&&zt(A,ye,h),ta(x,!0),_&&le){let Ee=()=>{x.subTree=Ud(x),le(_,x.subTree,x,H,null)};ke?h.type.__asyncLoader().then(()=>!x.isUnmounted&&Ee()):Ee()}else{let Ee=x.subTree=Ud(x);T(null,Ee,P,N,x,H,$),h.el=Ee.el}if(me&&ot(me,H),!ke&&(A=j&&j.onVnodeMounted)){let Ee=h;ot(()=>zt(A,ye,Ee),H)}(h.shapeFlag&256||ye&&wl(ye.vnode)&&ye.vnode.shapeFlag&256)&&x.a&&ot(x.a,H),x.isMounted=!0,h=P=N=null}},V=x.effect=new ya(I,()=>$d(q),x.scope),q=x.update=()=>V.run();q.id=x.uid,ta(x,!0),q()},Te=(x,h,P)=>{h.component=x;let N=x.vnode.props;x.vnode=h,x.next=null,XR(x,h.props,N,P),oF(x,h.children,P),Tr(),dm(),Rr()},je=(x,h,P,N,H,$,Y,I,V=!1)=>{let q=x&&x.children,A=x?x.shapeFlag:0,_=h.children,{patchFlag:j,shapeFlag:re}=h;if(j>0){if(j&128){ze(q,_,P,N,H,$,Y,I,V);return}else if(j&256){Ge(q,_,P,N,H,$,Y,I,V);return}}re&8?(A&16&&Ie(q,H,$),_!==q&&u(P,_)):A&16?re&16?ze(q,_,P,N,H,$,Y,I,V):Ie(q,H,$,!0):(A&8&&u(P,""),re&16&&L(_,P,N,H,$,Y,I,V))},Ge=(x,h,P,N,H,$,Y,I,V)=>{x=x||Gr,h=h||Gr;let q=x.length,A=h.length,_=Math.min(q,A),j;for(j=0;j<_;j++){let re=h[j]=V?kr(h[j]):Vt(h[j]);T(x[j],re,P,null,H,$,Y,I,V)}q>A?Ie(x,H,$,!0,!1,_):L(h,P,N,H,$,Y,I,V,_)},ze=(x,h,P,N,H,$,Y,I,V)=>{let q=0,A=h.length,_=x.length-1,j=A-1;for(;q<=_&&q<=j;){let re=x[q],me=h[q]=V?kr(h[q]):Vt(h[q]);if(ra(re,me))T(re,me,P,null,H,$,Y,I,V);else break;q++}for(;q<=_&&q<=j;){let re=x[_],me=h[j]=V?kr(h[j]):Vt(h[j]);if(ra(re,me))T(re,me,P,null,H,$,Y,I,V);else break;_--,j--}if(q>_){if(q<=j){let re=j+1,me=rej)for(;q<=_;)Ye(x[q],H,$,!0),q++;else{let re=q,me=q,ye=new Map;for(q=me;q<=j;q++){let $e=h[q]=V?kr(h[q]):Vt(h[q]);$e.key!=null&&ye.set($e.key,q)}let ke,Ee=0,Q=j-me+1,ae=!1,we=0,We=new Array(Q);for(q=0;q=Q){Ye($e,H,$,!0);continue}let oo;if($e.key!=null)oo=ye.get($e.key);else for(ke=me;ke<=j;ke++)if(We[ke-me]===0&&ra($e,h[ke])){oo=ke;break}oo===void 0?Ye($e,H,$,!0):(We[oo-me]=q+1,oo>=we?we=oo:ae=!0,T($e,h[oo],P,null,H,$,Y,I,V),Ee++)}let eo=ae?nF(We):Gr;for(ke=eo.length-1,q=Q-1;q>=0;q--){let $e=me+q,oo=h[$e],Qe=$e+1{let{el:$,type:Y,transition:I,children:V,shapeFlag:q}=x;if(q&6){Ze(x.component.subTree,h,P,N);return}if(q&128){x.suspense.move(h,P,N);return}if(q&64){Y.move(x,h,P,ro);return}if(Y===bo){r($,h,P);for(let _=0;_I.enter($),H);else{let{leave:_,delayLeave:j,afterLeave:re}=I,me=()=>r($,h,P),ye=()=>{_($,()=>{me(),re&&re()})};j?j($,me,ye):ye()}else r($,h,P)},Ye=(x,h,P,N=!1,H=!1)=>{let{type:$,props:Y,ref:I,children:V,dynamicChildren:q,shapeFlag:A,patchFlag:_,dirs:j}=x;if(I!=null&&ls(I,null,P,x,!0),A&256){h.ctx.deactivate(x);return}let re=A&1&&j,me=!wl(x),ye;if(me&&(ye=Y&&Y.onVnodeBeforeUnmount)&&zt(ye,h,x),A&6)He(x.component,P,N);else{if(A&128){x.suspense.unmount(P,N);return}re&&ea(x,null,h,"beforeUnmount"),A&64?x.type.remove(x,h,P,H,ro,N):q&&($!==bo||_>0&&_&64)?Ie(q,h,P,!1,!0):($===bo&&_&(128|256)||!H&&A&16)&&Ie(V,h,P),N&&ho(x)}(me&&(ye=Y&&Y.onVnodeUnmounted)||re)&&ot(()=>{ye&&zt(ye,h,x),re&&ea(x,null,h,"unmounted")},P)},ho=x=>{let{type:h,el:P,anchor:N,transition:H}=x;if(h===bo){ko(P,N);return}if(h===Fl){w(x);return}let $=()=>{a(P),H&&!H.persisted&&H.afterLeave&&H.afterLeave()};if(x.shapeFlag&1&&H&&!H.persisted){let{leave:Y,delayLeave:I}=H,V=()=>Y(P,$);I?I(x.el,$,V):V()}else $()},ko=(x,h)=>{let P;for(;x!==h;)P=m(x),a(x),x=P;a(h)},He=(x,h,P)=>{let{bum:N,scope:H,update:$,subTree:Y,um:I}=x;N&&pl(N),H.stop(),$&&($.active=!1,Ye(Y,x,h,P)),I&&ot(I,h),ot(()=>{x.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&x.asyncDep&&!x.asyncResolved&&x.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},Ie=(x,h,P,N=!1,H=!1,$=0)=>{for(let Y=$;Yx.shapeFlag&6?fo(x.component.subTree):x.shapeFlag&128?x.suspense.next():m(x.anchor||x.el),Ce=(x,h,P)=>{x==null?h._vnode&&Ye(h._vnode,null,null,!0):T(h._vnode||null,x,h,null,null,null,P),dm(),sm(),h._vnode=x},ro={p:T,um:Ye,m:Ze,r:ho,mt:Pe,mc:L,pc:je,pbc:W,n:fo,o:e},E,le;return o&&([E,le]=o(ro)),{render:Ce,hydrate:E,createApp:rF(Ce,E)}}function ta({effect:e,update:o},t){e.allowRecurse=o.allowRecurse=t}function ns(e,o,t=!1){let r=e.children,a=o.children;if(Me(r)&&Me(a))for(let l=0;l>1,e[t[i]]0&&(o[r]=t[l-1]),t[l]=r)}}for(l=t.length,n=t[l-1];l-- >0;)t[l]=n,n=o[n];return t}var iF=e=>e.__isTeleport,Rl=e=>e&&(e.disabled||e.disabled===""),Lm=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,is=(e,o)=>{let t=e&&e.to;if(Ro(t))if(o){let r=o(t);return r}else return null;else return t},dF={__isTeleport:!0,process(e,o,t,r,a,l,n,i,d,s){let{mc:u,pc:f,pbc:m,o:{insert:p,querySelector:c,createText:T,createComment:C}}=s,g=Rl(o.props),{shapeFlag:k,children:U,dynamicChildren:F}=o;if(e==null){let w=o.el=T(""),y=o.anchor=T("");p(w,t,r),p(y,t,r);let S=o.target=is(o.props,c),O=o.targetAnchor=T("");S&&(p(O,S),n=n||Lm(S));let L=(b,W)=>{k&16&&u(U,b,W,a,l,n,i,d)};g?L(t,y):S&&L(S,O)}else{o.el=e.el;let w=o.anchor=e.anchor,y=o.target=e.target,S=o.targetAnchor=e.targetAnchor,O=Rl(e.props),L=O?t:y,b=O?w:S;if(n=n||Lm(y),F?(m(e.dynamicChildren,F,L,a,l,n,i),ns(e,o,!0)):d||f(e,o,L,b,a,l,n,i,!1),g)O||Zn(o,t,w,s,1);else if((o.props&&o.props.to)!==(e.props&&e.props.to)){let W=o.target=is(o.props,c);W&&Zn(o,W,null,s,0)}else O&&Zn(o,y,S,s,1)}Nm(o)},remove(e,o,t,r,{um:a,o:{remove:l}},n){let{shapeFlag:i,children:d,anchor:s,targetAnchor:u,target:f,props:m}=e;if(f&&l(u),(n||!Rl(m))&&(l(s),i&16))for(let p=0;p0?yt||Gr:null,uF(),Cl>0&&yt&&yt.push(e),e}function Ma(e,o,t,r,a,l){return Im(ei(e,o,t,r,a,l,!0))}function bl(e,o,t,r,a){return Im(Fo(e,o,t,r,a,!0))}function Ba(e){return e?e.__v_isVNode===!0:!1}function ra(e,o){return e.type===o.type&&e.key===o.key}var Xn="__vInternal",Hm=({key:e})=>e!=null?e:null,Jn=({ref:e,ref_key:o,ref_for:t})=>e!=null?Ro(e)||vo(e)||Ne(e)?{i:jo,r:e,k:o,f:!!t}:e:null;function ei(e,o=null,t=null,r=0,a=null,l=e===bo?0:1,n=!1,i=!1){let d={__v_isVNode:!0,__v_skip:!0,type:e,props:o,key:o&&Hm(o),ref:o&&Jn(o),scopeId:pm,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:jo};return i?(ds(d,t),l&128&&e.normalize(d)):t&&(d.shapeFlag|=Ro(t)?8:16),Cl>0&&!n&&yt&&(d.patchFlag>0||l&6)&&d.patchFlag!==32&&yt.push(d),d}var Fo=fF;function fF(e,o=null,t=null,r=0,a=null,l=!1){if((!e||e===$R)&&(e=$o),Ba(e)){let i=vr(e,o,!0);return t&&ds(i,t),Cl>0&&!l&&yt&&(i.shapeFlag&6?yt[yt.indexOf(e)]=i:yt.push(i)),i.patchFlag|=-2,i}if(OF(e)&&(e=e.__vccOpts),o){o=pF(o);let{class:i,style:d}=o;i&&!Ro(i)&&(o.class=Kr(i)),lo(d)&&(In(d)&&!Me(d)&&(d=Co({},d)),o.style=Ur(d))}let n=Ro(e)?1:LR(e)?128:iF(e)?64:lo(e)?4:Ne(e)?2:0;return ei(e,o,t,r,a,n,l,!0)}function pF(e){return e?In(e)||Xn in e?Co({},e):e:null}function vr(e,o,t=!1){let{props:r,ref:a,patchFlag:l,children:n}=e,i=o?yl(r||{},o):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:i,key:i&&Hm(i),ref:o&&o.ref?t&&a?Me(a)?a.concat(Jn(o)):[a,Jn(o)]:Jn(o):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:n,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:o&&e.type!==bo?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&vr(e.ssContent),ssFallback:e.ssFallback&&vr(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function La(e=" ",o=0){return Fo(Yn,null,e,o)}function oi(e="",o=!1){return o?(Wt(),bl($o,null,e)):Fo($o,null,e)}function Vt(e){return e==null||typeof e=="boolean"?Fo($o):Me(e)?Fo(bo,null,e.slice()):typeof e=="object"?kr(e):Fo(Yn,null,String(e))}function kr(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:vr(e)}function ds(e,o){let t=0,{shapeFlag:r}=e;if(o==null)o=null;else if(Me(o))t=16;else if(typeof o=="object")if(r&(1|64)){let a=o.default;a&&(a._c&&(a._d=!1),ds(e,a()),a._c&&(a._d=!0));return}else{t=32;let a=o._;!a&&!(Xn in o)?o._ctx=jo:a===3&&jo&&(jo.slots._===1?o._=1:(o._=2,e.patchFlag|=1024))}else Ne(o)?(o={default:o,_ctx:jo},t=32):(o=String(o),r&64?(t=16,o=[La(o)]):t=8);e.children=o,e.shapeFlag|=t}function yl(...e){let o={};for(let t=0;tIo||jo,Ea=e=>{Io=e,e.scope.on()},aa=()=>{Io&&Io.scope.off(),Io=null};function Wm(e){return e.vnode.shapeFlag&4}var vl=!1;function hF(e,o=!1){vl=o;let{props:t,children:r}=e.vnode,a=Wm(e);YR(e,t,a,o),eF(e,r);let l=a?SF(e,o):void 0;return vl=!1,l}function SF(e,o){var t;let r=e.type;e.accessCache=Object.create(null),e.proxy=Zr(new Proxy(e.ctx,UR));let{setup:a}=r;if(a){let l=e.setupContext=a.length>1?wF(e):null;Ea(e),Tr();let n=ar(a,e,0,[e.props,l]);if(Rr(),aa(),kd(n)){if(n.then(aa,aa),o)return n.then(i=>{Vm(e,i,o)}).catch(i=>{Wn(i,e,0)});e.asyncDep=n}else Vm(e,n,o)}else $m(e,o)}function Vm(e,o,t){Ne(o)?e.type.__ssrInlineRender?e.ssrRender=o:e.render=o:lo(o)&&(e.setupState=Hn(o)),$m(e,t)}var zm,jm;function $m(e,o,t){let r=e.type;if(!e.render){if(!o&&zm&&!r.render){let a=r.template||os(e).template;if(a){let{isCustomElement:l,compilerOptions:n}=e.appContext.config,{delimiters:i,compilerOptions:d}=r,s=Co(Co({isCustomElement:l,delimiters:i},n),d);r.render=zm(a,s)}}e.render=r.render||nt,jm&&jm(e)}Ea(e),Tr(),KR(e),Rr(),aa()}function gF(e){return new Proxy(e.attrs,{get(o,t){return et(e,"get","$attrs"),o[t]}})}function wF(e){let o=r=>{e.exposed=r||{}},t;return{get attrs(){return t||(t=gF(e))},slots:e.slots,emit:e.emit,expose:o}}function ti(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Hn(Zr(e.exposed)),{get(o,t){if(t in o)return o[t];if(t in Tl)return Tl[t](e)},has(o,t){return t in o||t in Tl}}))}var TF=/(?:^|[-_])(\w)/g,RF=e=>e.replace(TF,o=>o.toUpperCase()).replace(/[-_]/g,"");function FF(e,o=!0){return Ne(e)?e.displayName||e.name:e.name||o&&e.__name}function Um(e,o,t=!1){let r=FF(o);if(!r&&o.__file){let a=o.__file.match(/([^/\\]+)\.\w+$/);a&&(r=a[1])}if(!r&&e&&e.parent){let a=l=>{for(let n in l)if(l[n]===o)return n};r=a(e.components||e.parent.type.components)||a(e.appContext.components)}return r?RF(r):t?"App":"Anonymous"}function OF(e){return Ne(e)&&"__vccOpts"in e}var z=(e,o)=>rm(e,o,vl);function R(e,o,t){let r=arguments.length;return r===2?lo(o)&&!Me(o)?Ba(o)?Fo(e,null,[o]):Fo(e,o):Fo(e,null,o):(r>3?t=Array.prototype.slice.call(arguments,2):r===3&&Ba(t)&&(t=[t]),Fo(e,o,t))}var CF=Symbol(""),bF=()=>{{let e=Re(CF);return e}};var yF="3.2.45";var vF="http://www.w3.org/2000/svg",la=typeof document!="undefined"?document:null,Km=la&&la.createElement("template"),kF={insert:(e,o,t)=>{o.insertBefore(e,t||null)},remove:e=>{let o=e.parentNode;o&&o.removeChild(e)},createElement:(e,o,t,r)=>{let a=o?la.createElementNS(vF,e):la.createElement(e,t?{is:t}:void 0);return e==="select"&&r&&r.multiple!=null&&a.setAttribute("multiple",r.multiple),a},createText:e=>la.createTextNode(e),createComment:e=>la.createComment(e),setText:(e,o)=>{e.nodeValue=o},setElementText:(e,o)=>{e.textContent=o},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>la.querySelector(e),setScopeId(e,o){e.setAttribute(o,"")},insertStaticContent(e,o,t,r,a,l){let n=t?t.previousSibling:o.lastChild;if(a&&(a===l||a.nextSibling))for(;o.insertBefore(a.cloneNode(!0),t),!(a===l||!(a=a.nextSibling)););else{Km.innerHTML=r?`${e}`:e;let i=Km.content;if(r){let d=i.firstChild;for(;d.firstChild;)i.appendChild(d.firstChild);i.removeChild(d)}o.insertBefore(i,t)}return[n?n.nextSibling:o.firstChild,t?t.previousSibling:o.lastChild]}};function AF(e,o,t){let r=e._vtc;r&&(o=(o?[o,...r]:[...r]).join(" ")),o==null?e.removeAttribute("class"):t?e.setAttribute("class",o):e.className=o}function DF(e,o,t){let r=e.style,a=Ro(t);if(t&&!a){for(let l in t)ss(r,l,t[l]);if(o&&!Ro(o))for(let l in o)t[l]==null&&ss(r,l,"")}else{let l=r.display;a?o!==t&&(r.cssText=t):o&&e.removeAttribute("style"),"_vod"in e&&(r.display=l)}}var Gm=/\s*!important$/;function ss(e,o,t){if(Me(t))t.forEach(r=>ss(e,o,r));else if(t==null&&(t=""),o.startsWith("--"))e.setProperty(o,t);else{let r=PF(e,o);Gm.test(t)?e.setProperty(Sr(r),t.replace(Gm,""),"important"):e[r]=t}}var qm=["Webkit","Moz","ms"],us={};function PF(e,o){let t=us[o];if(t)return t;let r=Et(o);if(r!=="filter"&&r in e)return us[o]=r;r=ul(r);for(let a=0;afs||(IF.then(()=>fs=0),fs=Date.now());function WF(e,o){let t=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=t.attached)return;it(VF(r,t.value),o,5,[r])};return t.value=e,t.attached=HF(),t}function VF(e,o){if(Me(o)){let t=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{t.call(e),e._stopped=!0},o.map(r=>a=>!a._stopped&&r&&r(a))}else return o}var Ym=/^on[a-z]/,zF=(e,o,t,r,a=!1,l,n,i,d)=>{o==="class"?AF(e,r,a):o==="style"?DF(e,t,r):Oa(o)?dl(o)||NF(e,o,t,r,n):(o[0]==="."?(o=o.slice(1),!0):o[0]==="^"?(o=o.slice(1),!1):jF(e,o,r,a))?BF(e,o,r,l,n,i,d):(o==="true-value"?e._trueValue=r:o==="false-value"&&(e._falseValue=r),MF(e,o,r,a))};function jF(e,o,t,r){return r?!!(o==="innerHTML"||o==="textContent"||o in e&&Ym.test(o)&&Ne(t)):o==="spellcheck"||o==="draggable"||o==="translate"||o==="form"||o==="list"&&e.tagName==="INPUT"||o==="type"&&e.tagName==="TEXTAREA"||Ym.test(o)&&Ro(t)?!1:o in e}function Xm(e){let o=ht();if(!o)return;let t=o.ut=(a=e(o.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${o.uid}"]`)).forEach(l=>ms(l,a))},r=()=>{let a=e(o.proxy);ps(o.subTree,a),t(a)};cm(r),mo(()=>{let a=new MutationObserver(r);a.observe(o.subTree.el.parentNode,{childList:!0}),Jr(()=>a.disconnect())})}function ps(e,o){if(e.shapeFlag&128){let t=e.suspense;e=t.activeBranch,t.pendingBranch&&!t.isHydrating&&t.effects.push(()=>{ps(t.activeBranch,o)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)ms(e.el,o);else if(e.type===bo)e.children.forEach(t=>ps(t,o));else if(e.type===Fl){let{el:t,anchor:r}=e;for(;t&&(ms(t,o),t!==r);)t=t.nextSibling}}function ms(e,o){if(e.nodeType===1){let t=e.style;for(let r in o)t.setProperty(`--${r}`,o[r])}}var Ar="transition",kl="animation",vt=(e,{slots:o})=>R(Gd,oc(e),o);vt.displayName="Transition";var Jm={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},$F=vt.props=Co({},Gd.props,Jm),na=(e,o=[])=>{Me(e)?e.forEach(t=>t(...o)):e&&e(...o)},ec=e=>e?Me(e)?e.some(o=>o.length>1):e.length>1:!1;function oc(e){let o={};for(let B in e)B in Jm||(o[B]=e[B]);if(e.css===!1)return o;let{name:t="v",type:r,duration:a,enterFromClass:l=`${t}-enter-from`,enterActiveClass:n=`${t}-enter-active`,enterToClass:i=`${t}-enter-to`,appearFromClass:d=l,appearActiveClass:s=n,appearToClass:u=i,leaveFromClass:f=`${t}-leave-from`,leaveActiveClass:m=`${t}-leave-active`,leaveToClass:p=`${t}-leave-to`}=e,c=UF(a),T=c&&c[0],C=c&&c[1],{onBeforeEnter:g,onEnter:k,onEnterCancelled:U,onLeave:F,onLeaveCancelled:w,onBeforeAppear:y=g,onAppear:S=k,onAppearCancelled:O=U}=o,L=(B,ne,ge)=>{Dr(B,ne?u:i),Dr(B,ne?s:n),ge&&ge()},b=(B,ne)=>{B._isLeaving=!1,Dr(B,f),Dr(B,p),Dr(B,m),ne&&ne()},W=B=>(ne,ge)=>{let Pe=B?S:k,ue=()=>L(ne,B,ge);na(Pe,[ne,ue]),tc(()=>{Dr(ne,B?d:l),dr(ne,B?u:i),ec(Pe)||rc(ne,r,T,ue)})};return Co(o,{onBeforeEnter(B){na(g,[B]),dr(B,l),dr(B,n)},onBeforeAppear(B){na(y,[B]),dr(B,d),dr(B,s)},onEnter:W(!1),onAppear:W(!0),onLeave(B,ne){B._isLeaving=!0;let ge=()=>b(B,ne);dr(B,f),ic(),dr(B,m),tc(()=>{!B._isLeaving||(Dr(B,f),dr(B,p),ec(F)||rc(B,r,C,ge))}),na(F,[B,ge])},onEnterCancelled(B){L(B,!1),na(U,[B])},onAppearCancelled(B){L(B,!0),na(O,[B])},onLeaveCancelled(B){b(B),na(w,[B])}})}function UF(e){if(e==null)return null;if(lo(e))return[cs(e.enter),cs(e.leave)];{let o=cs(e);return[o,o]}}function cs(e){return ba(e)}function dr(e,o){o.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e._vtc||(e._vtc=new Set)).add(o)}function Dr(e,o){o.split(/\s+/).forEach(r=>r&&e.classList.remove(r));let{_vtc:t}=e;t&&(t.delete(o),t.size||(e._vtc=void 0))}function tc(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var KF=0;function rc(e,o,t,r){let a=e._endId=++KF,l=()=>{a===e._endId&&r()};if(t)return setTimeout(l,t);let{type:n,timeout:i,propCount:d}=ac(e,o);if(!n)return r();let s=n+"end",u=0,f=()=>{e.removeEventListener(s,m),l()},m=p=>{p.target===e&&++u>=d&&f()};setTimeout(()=>{u(t[c]||"").split(", "),a=r(`${Ar}Delay`),l=r(`${Ar}Duration`),n=lc(a,l),i=r(`${kl}Delay`),d=r(`${kl}Duration`),s=lc(i,d),u=null,f=0,m=0;o===Ar?n>0&&(u=Ar,f=n,m=l.length):o===kl?s>0&&(u=kl,f=s,m=d.length):(f=Math.max(n,s),u=f>0?n>s?Ar:kl:null,m=u?u===Ar?l.length:d.length:0);let p=u===Ar&&/\b(transform|all)(,|$)/.test(r(`${Ar}Property`).toString());return{type:u,timeout:f,propCount:m,hasTransform:p}}function lc(e,o){for(;e.lengthnc(t)+nc(e[r])))}function nc(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function ic(){return document.body.offsetHeight}var dc=new WeakMap,sc=new WeakMap,GF={name:"TransitionGroup",props:Co({},$F,{tag:String,moveClass:String}),setup(e,{slots:o}){let t=ht(),r=Kd(),a,l;return Yd(()=>{if(!a.length)return;let n=e.moveClass||`${e.name||"v"}-move`;if(!YF(a[0].el,t.vnode.el,n))return;a.forEach(qF),a.forEach(QF);let i=a.filter(ZF);ic(),i.forEach(d=>{let s=d.el,u=s.style;dr(s,n),u.transform=u.webkitTransform=u.transitionDuration="";let f=s._moveCb=m=>{m&&m.target!==s||(!m||/transform$/.test(m.propertyName))&&(s.removeEventListener("transitionend",f),s._moveCb=null,Dr(s,n))};s.addEventListener("transitionend",f)})}),()=>{let n=Ve(e),i=oc(n),d=n.tag||bo;a=l,l=o.default?Un(o.default()):[];for(let s=0;s{n.split(/\s+/).forEach(i=>i&&r.classList.remove(i))}),t.split(/\s+/).forEach(n=>n&&r.classList.add(n)),r.style.display="none";let a=o.nodeType===1?o:o.parentNode;a.appendChild(r);let{hasTransform:l}=ac(r);return a.removeChild(r),l}var XF=Co({patchProp:zF},kF),fc;function JF(){return fc||(fc=Bm(XF))}var pc=(...e)=>{let o=JF().createApp(...e),{mount:t}=o;return o.mount=r=>{let a=eO(r);if(!a)return;let l=o._component;!Ne(l)&&!l.render&&!l.template&&(l.template=a.innerHTML),a.innerHTML="";let n=t(a,!1,a instanceof SVGElement);return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),n},o};function eO(e){return Ro(e)?document.querySelector(e):e}var rl=Ra(require("obsidian"));var ri=[],mc=new WeakMap;function oO(){ri.forEach(e=>e(...mc.get(e))),ri=[]}function Al(e,...o){mc.set(e,o),!ri.includes(e)&&ri.push(e)===1&&requestAnimationFrame(oO)}function ai(e,o){let{target:t}=e;for(;t;){if(t.dataset&&t.dataset[o]!==void 0)return!0;t=t.parentElement}return!1}function li(e){return typeof e=="string"?e.endsWith("px")?Number(e.slice(0,e.length-2)):Number(e):e}function Pr(e){if(e!=null)return typeof e=="number"?`${e}px`:e.endsWith("px")?e:`${e}px`}function Na(e,o){let t=e.trim().split(/\s+/g),r={top:t[0]};switch(t.length){case 1:r.right=t[0],r.bottom=t[0],r.left=t[0];break;case 2:r.right=t[1],r.left=t[1],r.bottom=t[0];break;case 3:r.right=t[1],r.bottom=t[2],r.left=t[1];break;case 4:r.right=t[1],r.bottom=t[2],r.left=t[3];break;default:throw new Error("[seemly/getMargin]:"+e+" is not a valid value.")}return o===void 0?r:r[o]}var xs={black:"#000",silver:"#C0C0C0",gray:"#808080",white:"#FFF",maroon:"#800000",red:"#F00",purple:"#800080",fuchsia:"#F0F",green:"#008000",lime:"#0F0",olive:"#808000",yellow:"#FF0",navy:"#000080",blue:"#00F",teal:"#008080",aqua:"#0FF",transparent:"#0000"};var jt="^\\s*",$t="\\s*$",Mr="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))%\\s*",dt="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))\\s*",ia="([0-9A-Fa-f])",da="([0-9A-Fa-f]{2})",H0=new RegExp(`${jt}hsl\\s*\\(${dt},${Mr},${Mr}\\)${$t}`),W0=new RegExp(`${jt}hsv\\s*\\(${dt},${Mr},${Mr}\\)${$t}`),V0=new RegExp(`${jt}hsla\\s*\\(${dt},${Mr},${Mr},${dt}\\)${$t}`),z0=new RegExp(`${jt}hsva\\s*\\(${dt},${Mr},${Mr},${dt}\\)${$t}`),tO=new RegExp(`${jt}rgb\\s*\\(${dt},${dt},${dt}\\)${$t}`),rO=new RegExp(`${jt}rgba\\s*\\(${dt},${dt},${dt},${dt}\\)${$t}`),aO=new RegExp(`${jt}#${ia}${ia}${ia}${$t}`),lO=new RegExp(`${jt}#${da}${da}${da}${$t}`),nO=new RegExp(`${jt}#${ia}${ia}${ia}${ia}${$t}`),iO=new RegExp(`${jt}#${da}${da}${da}${da}${$t}`);function tt(e){return parseInt(e,16)}function St(e){try{let o;if(o=lO.exec(e))return[tt(o[1]),tt(o[2]),tt(o[3]),1];if(o=tO.exec(e))return[Ho(o[1]),Ho(o[5]),Ho(o[9]),1];if(o=rO.exec(e))return[Ho(o[1]),Ho(o[5]),Ho(o[9]),_a(o[13])];if(o=aO.exec(e))return[tt(o[1]+o[1]),tt(o[2]+o[2]),tt(o[3]+o[3]),1];if(o=iO.exec(e))return[tt(o[1]),tt(o[2]),tt(o[3]),_a(tt(o[4])/255)];if(o=nO.exec(e))return[tt(o[1]+o[1]),tt(o[2]+o[2]),tt(o[3]+o[3]),_a(tt(o[4]+o[4])/255)];if(e in xs)return St(xs[e]);throw new Error(`[seemly/rgba]: Invalid color value ${e}.`)}catch(o){throw o}}function dO(e){return e>1?1:e<0?0:e}function hs(e,o,t,r){return`rgba(${Ho(e)}, ${Ho(o)}, ${Ho(t)}, ${dO(r)})`}function Ss(e,o,t,r,a){return Ho((e*o*(1-r)+t*r)/a)}function xe(e,o){Array.isArray(e)||(e=St(e)),Array.isArray(o)||(o=St(o));let t=e[3],r=o[3],a=_a(t+r-t*r);return hs(Ss(e[0],t,o[0],r,a),Ss(e[1],t,o[1],r,a),Ss(e[2],t,o[2],r,a),a)}function ee(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:St(e);return o.alpha?hs(t,r,a,o.alpha):hs(t,r,a,l)}function sr(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:St(e),{lightness:n=1,alpha:i=1}=o;return cc([t*n,r*n,a*n,l*i])}function _a(e){let o=Math.round(Number(e)*100)/100;return o>1?1:o<0?0:o}function Ho(e){let o=Math.round(Number(e));return o>255?255:o<0?0:o}function cc(e){let[o,t,r]=e;return 3 in e?`rgba(${Ho(o)}, ${Ho(t)}, ${Ho(r)}, ${_a(e[3])})`:`rgba(${Ho(o)}, ${Ho(t)}, ${Ho(r)}, 1)`}function gs(e=8){return Math.random().toString(16).slice(2,2+e)}function ws(e,o){let t=[];for(let r=0;rFe(t,...o));else return e(...o)}var Ia=(e,...o)=>typeof e=="function"?e(...o):typeof e=="string"?La(e):typeof e=="number"?La(String(e)):null;var CM=new Set;function ni(e,o){console.error(`[naive/${e}]: ${o}`)}function ii(e,o){throw new Error(`[naive/${e}]: ${o}`)}function Ha(e){return typeof e=="string"?`s-${e}`:`n-${e}`}function no(e){return e}function Dl(e){return e.some(o=>Ba(o)?!(o.type===$o||o.type===bo&&!Dl(o.children)):!0)?e:null}function Ut(e,o){return e&&Dl(e())||o()}function di(e,o,t){return e&&Dl(e(o))||t(o)}function Kt(e,o){let t=e&&Dl(e());return o(t||null)}function si(e){return!(e&&Dl(e()))}function Pl(e){return e.replace(/#|\(|\)|,|\s/g,"_")}function uO(e){let o=0;for(let t=0;t{let a=uO(r);if(a){if(a===1){e.forEach(n=>{t.push(r.replace("&",n))});return}}else{e.forEach(n=>{t.push((n&&n+" ")+r)});return}let l=[r];for(;a--;){let n=[];l.forEach(i=>{e.forEach(d=>{n.push(i.replace("&",d))})}),l=n}l.forEach(n=>t.push(n))}),t}function mO(e,o){let t=[];return o.split(xc).forEach(r=>{e.forEach(a=>{t.push((a&&a+" ")+r)})}),t}function hc(e){let o=[""];return e.forEach(t=>{t=t&&t.trim(),!!t&&(t.includes("&")?o=pO(o,t):o=mO(o,t))}),o.join(", ").replace(fO," ")}function Ts(e){if(!e)return;let o=e.parentElement;o&&o.removeChild(e)}function sa(e){return document.querySelector(`style[cssr-id="${e}"]`)}function Sc(e){let o=document.createElement("style");return o.setAttribute("cssr-id",e),o}function Ml(e){return e?/^\s*@(s|m)/.test(e):!1}var cO=/[A-Z]/g;function gc(e){return e.replace(cO,o=>"-"+o.toLowerCase())}function xO(e,o=" "){return typeof e=="object"&&e!==null?` { -`+Object.entries(e).map(t=>o+` ${gc(t[0])}: ${t[1]};`).join(` +var PT=Object.create;var Cn=Object.defineProperty;var MT=Object.getOwnPropertyDescriptor;var BT=Object.getOwnPropertyNames;var LT=Object.getPrototypeOf,ET=Object.prototype.hasOwnProperty;var vp=e=>Cn(e,"__esModule",{value:!0});var Et=(e,o)=>()=>(o||e((o={exports:{}}).exports,o),o.exports),NT=(e,o)=>{vp(e);for(var t in o)Cn(e,t,{get:o[t],enumerable:!0})},_T=(e,o,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of BT(o))!ET.call(e,r)&&r!=="default"&&Cn(e,r,{get:()=>o[r],enumerable:!(t=MT(o,r))||t.enumerable});return e},Oa=e=>_T(vp(Cn(e!=null?PT(LT(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var $e=(e,o,t)=>new Promise((r,a)=>{var l=d=>{try{i(t.next(d))}catch(s){a(s)}},n=d=>{try{i(t.throw(d))}catch(s){a(s)}},i=d=>d.done?r(d.value):Promise.resolve(d.value).then(l,n);i((t=t.apply(e,o)).next())});var dS=Et((Ul,iS)=>{"use strict";Object.defineProperty(Ul,"__esModule",{value:!0});Ul.default=void 0;var Wv={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Vv=function(e,o,t){var r,a=Wv[e];return typeof a=="string"?r=a:o===1?r=a.one:r=a.other.replace("{{count}}",o.toString()),t!=null&&t.addSuffix?t.comparison&&t.comparison>0?"in "+r:r+" ago":r},zv=Vv;Ul.default=zv;iS.exports=Ul.default});var uS=Et((Gi,sS)=>{"use strict";Object.defineProperty(Gi,"__esModule",{value:!0});Gi.default=jv;function jv(e){return function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=o.width?String(o.width):e.defaultWidth,r=e.formats[t]||e.formats[e.defaultWidth];return r}}sS.exports=Gi.default});var pS=Et((Kl,fS)=>{"use strict";Object.defineProperty(Kl,"__esModule",{value:!0});Kl.default=void 0;var Gs=$v(uS());function $v(e){return e&&e.__esModule?e:{default:e}}var Uv={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Kv={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Gv={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},qv={date:(0,Gs.default)({formats:Uv,defaultWidth:"full"}),time:(0,Gs.default)({formats:Kv,defaultWidth:"full"}),dateTime:(0,Gs.default)({formats:Gv,defaultWidth:"full"})},Qv=qv;Kl.default=Qv;fS.exports=Kl.default});var cS=Et((Gl,mS)=>{"use strict";Object.defineProperty(Gl,"__esModule",{value:!0});Gl.default=void 0;var Zv={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Yv=function(e,o,t,r){return Zv[e]},Xv=Yv;Gl.default=Xv;mS.exports=Gl.default});var hS=Et((qi,xS)=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.default=Jv;function Jv(e){return function(o,t){var r=t||{},a=r.context?String(r.context):"standalone",l;if(a==="formatting"&&e.formattingValues){var n=e.defaultFormattingWidth||e.defaultWidth,i=r.width?String(r.width):n;l=e.formattingValues[i]||e.formattingValues[n]}else{var d=e.defaultWidth,s=r.width?String(r.width):e.defaultWidth;l=e.values[s]||e.values[d]}var u=e.argumentCallback?e.argumentCallback(o):o;return l[u]}}xS.exports=qi.default});var gS=Et((Ql,SS)=>{"use strict";Object.defineProperty(Ql,"__esModule",{value:!0});Ql.default=void 0;var ql=ek(hS());function ek(e){return e&&e.__esModule?e:{default:e}}var ok={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},tk={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},rk={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},ak={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},lk={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},nk={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},ik=function(e,o){var t=Number(e),r=t%100;if(r>20||r<10)switch(r%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},dk={ordinalNumber:ik,era:(0,ql.default)({values:ok,defaultWidth:"wide"}),quarter:(0,ql.default)({values:tk,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:(0,ql.default)({values:rk,defaultWidth:"wide"}),day:(0,ql.default)({values:ak,defaultWidth:"wide"}),dayPeriod:(0,ql.default)({values:lk,defaultWidth:"wide",formattingValues:nk,defaultFormattingWidth:"wide"})},sk=dk;Ql.default=sk;SS.exports=Ql.default});var TS=Et((Qi,wS)=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.default=uk;function uk(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.width,a=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],l=o.match(a);if(!l)return null;var n=l[0],i=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],d=Array.isArray(i)?pk(i,function(f){return f.test(n)}):fk(i,function(f){return f.test(n)}),s;s=e.valueCallback?e.valueCallback(d):d,s=t.valueCallback?t.valueCallback(s):s;var u=o.slice(n.length);return{value:s,rest:u}}}function fk(e,o){for(var t in e)if(e.hasOwnProperty(t)&&o(e[t]))return t}function pk(e,o){for(var t=0;t{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.default=mk;function mk(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=o.match(e.matchPattern);if(!r)return null;var a=r[0],l=o.match(e.parsePattern);if(!l)return null;var n=e.valueCallback?e.valueCallback(l[0]):l[0];n=t.valueCallback?t.valueCallback(n):n;var i=o.slice(a.length);return{value:n,rest:i}}}RS.exports=Zi.default});var bS=Et((Yl,CS)=>{"use strict";Object.defineProperty(Yl,"__esModule",{value:!0});Yl.default=void 0;var Zl=OS(TS()),ck=OS(FS());function OS(e){return e&&e.__esModule?e:{default:e}}var xk=/^(\d+)(th|st|nd|rd)?/i,hk=/\d+/i,Sk={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},gk={any:[/^b/i,/^(a|c)/i]},wk={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Tk={any:[/1/i,/2/i,/3/i,/4/i]},Rk={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Fk={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Ok={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Ck={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},bk={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},yk={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},vk={ordinalNumber:(0,ck.default)({matchPattern:xk,parsePattern:hk,valueCallback:function(e){return parseInt(e,10)}}),era:(0,Zl.default)({matchPatterns:Sk,defaultMatchWidth:"wide",parsePatterns:gk,defaultParseWidth:"any"}),quarter:(0,Zl.default)({matchPatterns:wk,defaultMatchWidth:"wide",parsePatterns:Tk,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:(0,Zl.default)({matchPatterns:Rk,defaultMatchWidth:"wide",parsePatterns:Fk,defaultParseWidth:"any"}),day:(0,Zl.default)({matchPatterns:Ok,defaultMatchWidth:"wide",parsePatterns:Ck,defaultParseWidth:"any"}),dayPeriod:(0,Zl.default)({matchPatterns:bk,defaultMatchWidth:"any",parsePatterns:yk,defaultParseWidth:"any"})},kk=vk;Yl.default=kk;CS.exports=Yl.default});var vS=Et((Jl,yS)=>{"use strict";Object.defineProperty(Jl,"__esModule",{value:!0});Jl.default=void 0;var Ak=Xl(dS()),Dk=Xl(pS()),Pk=Xl(cS()),Mk=Xl(gS()),Bk=Xl(bS());function Xl(e){return e&&e.__esModule?e:{default:e}}var Lk={code:"en-US",formatDistance:Ak.default,formatLong:Dk.default,formatRelative:Pk.default,localize:Mk.default,match:Bk.default,options:{weekStartsOn:0,firstWeekContainsDate:1}},Ek=Lk;Jl.default=Ek;yS.exports=Jl.default});NT(exports,{default:()=>QP});var Kr=Oa(require("obsidian"));var tT=Oa(require("obsidian"));function Ca(e,o){let t=Object.create(null),r=e.split(",");for(let a=0;a!!t[a.toLowerCase()]:a=>!!t[a]}var YP={[1]:"TEXT",[2]:"CLASS",[4]:"STYLE",[8]:"PROPS",[16]:"FULL_PROPS",[32]:"HYDRATE_EVENTS",[64]:"STABLE_FRAGMENT",[128]:"KEYED_FRAGMENT",[256]:"UNKEYED_FRAGMENT",[512]:"NEED_PATCH",[1024]:"DYNAMIC_SLOTS",[2048]:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},XP={[1]:"STABLE",[2]:"DYNAMIC",[3]:"FORWARDED"};function Sr(e){if(Ae(e)){let o={};for(let t=0;t{if(t){let r=t.split(HT);r.length>1&&(o[r[0].trim()]=r[1].trim())}}),o}function Gr(e){let o="";if(Ro(e))o=e;else if(Ae(e))for(let t=0;tRo(e)?e:e==null?"":Ae(e)||ao(e)&&(e.toString===Mp||!Ee(e.toString))?JSON.stringify(e,Dp,2):String(e),Dp=(e,o)=>o&&o.__v_isRef?Dp(e,o.value):gr(o)?{[`Map(${o.size})`]:[...o.entries()].reduce((t,[r,a])=>(t[`${r} =>`]=a,t),{})}:yn(o)?{[`Set(${o.size})`]:[...o.values()]}:ao(o)&&!Ae(o)&&!Dd(o)?String(o):o,ro={},qr=[],nt=()=>{},Pp=()=>!1,zT=/^on[^a-z]/,ba=e=>zT.test(e),sl=e=>e.startsWith("onUpdate:"),Oo=Object.assign,bn=(e,o)=>{let t=e.indexOf(o);t>-1&&e.splice(t,1)},jT=Object.prototype.hasOwnProperty,je=(e,o)=>jT.call(e,o),Ae=Array.isArray,gr=e=>kn(e)==="[object Map]",yn=e=>kn(e)==="[object Set]";var Ee=e=>typeof e=="function",Ro=e=>typeof e=="string",vn=e=>typeof e=="symbol",ao=e=>e!==null&&typeof e=="object",kd=e=>ao(e)&&Ee(e.then)&&Ee(e.catch),Mp=Object.prototype.toString,kn=e=>Mp.call(e),Ad=e=>kn(e).slice(8,-1),Dd=e=>kn(e)==="[object Object]",An=e=>Ro(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ul=Ca(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var Dn=e=>{let o=Object.create(null);return t=>o[t]||(o[t]=e(t))},$T=/-(\w)/g,Nt=Dn(e=>e.replace($T,(o,t)=>t?t.toUpperCase():"")),UT=/\B([A-Z])/g,wr=Dn(e=>e.replace(UT,"-$1").toLowerCase()),fl=Dn(e=>e.charAt(0).toUpperCase()+e.slice(1)),pl=Dn(e=>e?`on${fl(e)}`:""),Qr=(e,o)=>!Object.is(e,o),ml=(e,o)=>{for(let t=0;t{Object.defineProperty(e,o,{configurable:!0,enumerable:!1,value:t})},va=e=>{let o=parseFloat(e);return isNaN(o)?e:o},Bp,Lp=()=>Bp||(Bp=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});var _t,Pn=class{constructor(o=!1){this.detached=o,this.active=!0,this.effects=[],this.cleanups=[],this.parent=_t,!o&&_t&&(this.index=(_t.scopes||(_t.scopes=[])).push(this)-1)}run(o){if(this.active){let t=_t;try{return _t=this,o()}finally{_t=t}}}on(){_t=this}off(){_t=this.parent}stop(o){if(this.active){let t,r;for(t=0,r=this.effects.length;t{let o=new Set(e);return o.w=0,o.n=0,o},Ep=e=>(e.w&Tr)>0,Np=e=>(e.n&Tr)>0,GT=({deps:e})=>{if(e.length)for(let o=0;o{let{deps:o}=e;if(o.length){let t=0;for(let r=0;r{(f==="length"||f>=s)&&i.push(u)})}else switch(t!==void 0&&i.push(n.get(t)),o){case"add":Ae(e)?An(t)&&i.push(n.get("length")):(i.push(n.get(Zr)),gr(e)&&i.push(n.get(Ld)));break;case"delete":Ae(e)||(i.push(n.get(Zr)),gr(e)&&i.push(n.get(Ld)));break;case"set":gr(e)&&i.push(n.get(Zr));break}let d=void 0;if(i.length===1)i[0]&&Ed(i[0]);else{let s=[];for(let u of i)u&&s.push(...u);Ed(Pd(s))}}function Ed(e,o){let t=Ae(e)?e:[...e];for(let r of t)r.computed&&Wp(r,o);for(let r of t)r.computed||Wp(r,o)}function Wp(e,o){(e!==yt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}var QT=Ca("__proto__,__v_isRef,__isVue"),Vp=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(vn)),ZT=Nd(),YT=Nd(!1,!0),XT=Nd(!0);var zp=JT();function JT(){let e={};return["includes","indexOf","lastIndexOf"].forEach(o=>{e[o]=function(...t){let r=Ie(this);for(let l=0,n=this.length;l{e[o]=function(...t){Fr();let r=Ie(this)[o].apply(this,t);return Or(),r}}),e}function Nd(e=!1,o=!1){return function(r,a,l){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return o;if(a==="__v_raw"&&l===(e?o?xR:Yp:o?Zp:Qp).get(r))return r;let n=Ae(r);if(!e&&n&&je(zp,a))return Reflect.get(zp,a,l);let i=Reflect.get(r,a,l);return(vn(a)?Vp.has(a):QT(a))||(e||et(r,"get",a),o)?i:yo(i)?n&&An(a)?i:i.value:ao(i)?e?br(i):Ht(i):i}}var eR=jp(),oR=jp(!0);function jp(e=!1){return function(t,r,a,l){let n=t[r];if(vr(n)&&yo(n)&&!yo(a))return!1;if(!e&&(!Aa(a)&&!vr(a)&&(n=Ie(n),a=Ie(a)),!Ae(t)&&yo(n)&&!yo(a)))return n.value=a,!0;let i=Ae(t)&&An(r)?Number(r)e,Mn=e=>Reflect.getPrototypeOf(e);function Bn(e,o,t=!1,r=!1){e=e.__v_raw;let a=Ie(e),l=Ie(o);t||(o!==l&&et(a,"get",o),et(a,"get",l));let{has:n}=Mn(a),i=r?_d:t?Vd:xl;if(n.call(a,o))return i(e.get(o));if(n.call(a,l))return i(e.get(l));e!==a&&e.get(o)}function Ln(e,o=!1){let t=this.__v_raw,r=Ie(t),a=Ie(e);return o||(e!==a&&et(r,"has",e),et(r,"has",a)),e===a?t.has(e):t.has(e)||t.has(a)}function En(e,o=!1){return e=e.__v_raw,!o&&et(Ie(e),"iterate",Zr),Reflect.get(e,"size",e)}function Up(e){e=Ie(e);let o=Ie(this);return Mn(o).has.call(o,e)||(o.add(e),It(o,"add",e,e)),this}function Kp(e,o){o=Ie(o);let t=Ie(this),{has:r,get:a}=Mn(t),l=r.call(t,e);l||(e=Ie(e),l=r.call(t,e));let n=a.call(t,e);return t.set(e,o),l?Qr(o,n)&&It(t,"set",e,o,n):It(t,"add",e,o),this}function Gp(e){let o=Ie(this),{has:t,get:r}=Mn(o),a=t.call(o,e);a||(e=Ie(e),a=t.call(o,e));let l=r?r.call(o,e):void 0,n=o.delete(e);return a&&It(o,"delete",e,void 0,l),n}function qp(){let e=Ie(this),o=e.size!==0,t=void 0,r=e.clear();return o&&It(e,"clear",void 0,void 0,t),r}function Nn(e,o){return function(r,a){let l=this,n=l.__v_raw,i=Ie(n),d=o?_d:e?Vd:xl;return!e&&et(i,"iterate",Zr),n.forEach((s,u)=>r.call(a,d(s),d(u),l))}}function _n(e,o,t){return function(...r){let a=this.__v_raw,l=Ie(a),n=gr(l),i=e==="entries"||e===Symbol.iterator&&n,d=e==="keys"&&n,s=a[e](...r),u=t?_d:o?Vd:xl;return!o&&et(l,"iterate",d?Ld:Zr),{next(){let{value:f,done:c}=s.next();return c?{value:f,done:c}:{value:i?[u(f[0]),u(f[1])]:u(f),done:c}},[Symbol.iterator](){return this}}}}function Cr(e){return function(...o){return e==="delete"?!1:this}}function iR(){let e={get(l){return Bn(this,l)},get size(){return En(this)},has:Ln,add:Up,set:Kp,delete:Gp,clear:qp,forEach:Nn(!1,!1)},o={get(l){return Bn(this,l,!1,!0)},get size(){return En(this)},has:Ln,add:Up,set:Kp,delete:Gp,clear:qp,forEach:Nn(!1,!0)},t={get(l){return Bn(this,l,!0)},get size(){return En(this,!0)},has(l){return Ln.call(this,l,!0)},add:Cr("add"),set:Cr("set"),delete:Cr("delete"),clear:Cr("clear"),forEach:Nn(!0,!1)},r={get(l){return Bn(this,l,!0,!0)},get size(){return En(this,!0)},has(l){return Ln.call(this,l,!0)},add:Cr("add"),set:Cr("set"),delete:Cr("delete"),clear:Cr("clear"),forEach:Nn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{e[l]=_n(l,!1,!1),t[l]=_n(l,!0,!1),o[l]=_n(l,!1,!0),r[l]=_n(l,!0,!0)}),[e,t,o,r]}var[dR,sR,uR,fR]=iR();function Id(e,o){let t=o?e?fR:uR:e?sR:dR;return(r,a,l)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?r:Reflect.get(je(t,a)&&a in r?t:r,a,l)}var pR={get:Id(!1,!1)},mR={get:Id(!1,!0)},cR={get:Id(!0,!1)};var Qp=new WeakMap,Zp=new WeakMap,Yp=new WeakMap,xR=new WeakMap;function hR(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function SR(e){return e.__v_skip||!Object.isExtensible(e)?0:hR(Ad(e))}function Ht(e){return vr(e)?e:Wd(e,!1,$p,pR,Qp)}function Hd(e){return Wd(e,!1,nR,mR,Zp)}function br(e){return Wd(e,!0,lR,cR,Yp)}function Wd(e,o,t,r,a){if(!ao(e)||e.__v_raw&&!(o&&e.__v_isReactive))return e;let l=a.get(e);if(l)return l;let n=SR(e);if(n===0)return e;let i=new Proxy(e,n===2?r:t);return a.set(e,i),i}function yr(e){return vr(e)?yr(e.__v_raw):!!(e&&e.__v_isReactive)}function vr(e){return!!(e&&e.__v_isReadonly)}function Aa(e){return!!(e&&e.__v_isShallow)}function In(e){return yr(e)||vr(e)}function Ie(e){let o=e&&e.__v_raw;return o?Ie(o):e}function Yr(e){return ya(e,"__v_skip",!0),e}var xl=e=>ao(e)?Ht(e):e,Vd=e=>ao(e)?br(e):e;function Xp(e){Rr&&yt&&(e=Ie(e),Hp(e.dep||(e.dep=Pd())))}function Jp(e,o){e=Ie(e),e.dep&&Ed(e.dep)}function yo(e){return!!(e&&e.__v_isRef===!0)}function Z(e){return gR(e,!1)}function gR(e,o){return yo(e)?e:new em(e,o)}var em=class{constructor(o,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?o:Ie(o),this._value=t?o:xl(o)}get value(){return Xp(this),this._value}set value(o){let t=this.__v_isShallow||Aa(o)||vr(o);o=t?o:Ie(o),Qr(o,this._rawValue)&&(this._rawValue=o,this._value=t?o:xl(o),Jp(this,o))}};function ar(e){return yo(e)?e.value:e}var wR={get:(e,o,t)=>ar(Reflect.get(e,o,t)),set:(e,o,t,r)=>{let a=e[o];return yo(a)&&!yo(t)?(a.value=t,!0):Reflect.set(e,o,t,r)}};function Hn(e){return yr(e)?e:new Proxy(e,wR)}var om=class{constructor(o,t,r){this._object=o,this._key=t,this._defaultValue=r,this.__v_isRef=!0}get value(){let o=this._object[this._key];return o===void 0?this._defaultValue:o}set value(o){this._object[this._key]=o}};function De(e,o,t){let r=e[o];return yo(r)?r:new om(e,o,t)}var tm,rm=class{constructor(o,t,r,a){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[tm]=!1,this._dirty=!0,this.effect=new ka(o,()=>{this._dirty||(this._dirty=!0,Jp(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=r}get value(){let o=Ie(this);return Xp(o),(o._dirty||!o._cacheable)&&(o._dirty=!1,o._value=o.effect.run()),o._value}set value(o){this._setter(o)}};tm="__v_isReadonly";function am(e,o,t=!1){let r,a,l=Ee(e);return l?(r=e,a=nt):(r=e.get,a=e.set),new rm(r,a,l||!a,t)}var TR;TR="__v_isReadonly";var hl=[];function lm(e,...o){}function RR(){let e=hl[hl.length-1];if(!e)return[];let o=[];for(;e;){let t=o[0];t&&t.vnode===e?t.recurseCount++:o.push({vnode:e,recurseCount:0});let r=e.component&&e.component.parent;e=r&&r.vnode}return o}function FR(e){let o=[];return e.forEach((t,r)=>{o.push(...r===0?[]:[` +`],...OR(t))}),o}function OR({vnode:e,recurseCount:o}){let t=o>0?`... (${o} recursive calls)`:"",r=e.component?e.component.parent==null:!1,a=` at <${Km(e.component,e.type,r)}`,l=">"+t;return e.props?[a,...CR(e.props),l]:[a+l]}function CR(e){let o=[],t=Object.keys(e);return t.slice(0,3).forEach(r=>{o.push(...nm(r,e[r]))}),t.length>3&&o.push(" ..."),o}function nm(e,o,t){return Ro(o)?(o=JSON.stringify(o),t?o:[`${e}=${o}`]):typeof o=="number"||typeof o=="boolean"||o==null?t?o:[`${e}=${o}`]:yo(o)?(o=nm(e,Ie(o.value),!0),t?o:[`${e}=Ref<`,o,">"]):Ee(o)?[`${e}=fn${o.name?`<${o.name}>`:""}`]:(o=Ie(o),t?o:[`${e}=`,o])}var T0={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",[0]:"setup function",[1]:"render function",[2]:"watcher getter",[3]:"watcher callback",[4]:"watcher cleanup function",[5]:"native event handler",[6]:"component event handler",[7]:"vnode hook",[8]:"directive hook",[9]:"transition hook",[10]:"app errorHandler",[11]:"app warnHandler",[12]:"ref function",[13]:"async component loader",[14]:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function lr(e,o,t,r){let a;try{a=r?e(...r):e()}catch(l){Wn(l,o,t)}return a}function it(e,o,t,r){if(Ee(e)){let l=lr(e,o,t,r);return l&&kd(l)&&l.catch(n=>{Wn(n,o,t)}),l}let a=[];for(let l=0;l>>1;gl(zo[r])Wt&&zo.splice(o,1)}function kR(e){Ae(e)?Da.push(...e):(!nr||!nr.includes(e,e.allowRecurse?Xr+1:Xr))&&Da.push(e),dm()}function sm(e,o=Sl?Wt+1:0){for(;ogl(t)-gl(r)),Xr=0;Xre.id==null?1/0:e.id,AR=(e,o)=>{let t=gl(e)-gl(o);if(t===0){if(e.pre&&!o.pre)return-1;if(o.pre&&!e.pre)return 1}return t};function fm(e){zd=!1,Sl=!0,zo.sort(AR);let o=nt;try{for(Wt=0;WtRo(p)?p.trim():p)),f&&(a=t.map(va))}let i,d=r[i=pl(o)]||r[i=pl(Nt(o))];!d&&l&&(d=r[i=pl(wr(o))]),d&&it(d,e,6,a);let s=r[i+"Once"];if(s){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,it(s,e,6,a)}}function pm(e,o,t=!1){let r=o.emitsCache,a=r.get(e);if(a!==void 0)return a;let l=e.emits,n={},i=!1;if(!Ee(e)){let d=s=>{let u=pm(s,o,!0);u&&(i=!0,Oo(n,u))};!t&&o.mixins.length&&o.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!l&&!i?(ao(e)&&r.set(e,null),null):(Ae(l)?l.forEach(d=>n[d]=null):Oo(n,l),ao(e)&&r.set(e,n),n)}function Vn(e,o){return!e||!ba(o)?!1:(o=o.slice(2).replace(/Once$/,""),je(e,o[0].toLowerCase()+o.slice(1))||je(e,wr(o))||je(e,o))}var jo=null,mm=null;function zn(e){let o=jo;return jo=e,mm=e&&e.type.__scopeId||null,o}function Jr(e,o=jo,t){if(!o||e._n)return e;let r=(...a)=>{r._d&&Im(-1);let l=zn(o),n;try{n=e(...a)}finally{zn(l),r._d&&Im(1)}return n};return r._n=!0,r._c=!0,r._d=!0,r}function Ud(e){let{type:o,vnode:t,proxy:r,withProxy:a,props:l,propsOptions:[n],slots:i,attrs:d,emit:s,render:u,renderCache:f,data:c,setupState:p,ctx:x,inheritAttrs:T}=e,C,S,D=zn(e);try{if(t.shapeFlag&4){let g=a||r;C=Vt(u.call(g,g,f,l,p,c,x)),S=d}else{let g=o;C=Vt(g.length>1?g(l,{attrs:d,slots:i,emit:s}):g(l,null)),S=o.props?d:PR(d)}}catch(g){Ol.length=0,Wn(g,e,1),C=mo($o)}let $=C,O;if(S&&T!==!1){let g=Object.keys(S),{shapeFlag:v}=$;g.length&&v&(1|6)&&(n&&g.some(sl)&&(S=MR(S,n)),$=Ar($,S))}return t.dirs&&($=Ar($),$.dirs=$.dirs?$.dirs.concat(t.dirs):t.dirs),t.transition&&($.transition=t.transition),C=$,zn(D),C}var PR=e=>{let o;for(let t in e)(t==="class"||t==="style"||ba(t))&&((o||(o={}))[t]=e[t]);return o},MR=(e,o)=>{let t={};for(let r in e)(!sl(r)||!(r.slice(9)in o))&&(t[r]=e[r]);return t};function BR(e,o,t){let{props:r,children:a,component:l}=e,{props:n,children:i,patchFlag:d}=o,s=l.emitsOptions;if(o.dirs||o.transition)return!0;if(t&&d>=0){if(d&1024)return!0;if(d&16)return r?cm(r,n,s):!!n;if(d&8){let u=o.dynamicProps;for(let f=0;fe.__isSuspense;function NR(e,o){o&&o.pendingBranch?Ae(e)?o.effects.push(...e):o.effects.push(e):kR(e)}function qo(e,o){if(Io){let t=Io.provides,r=Io.parent&&Io.parent.provides;r===t&&(t=Io.provides=Object.create(r)),t[e]=o}}function Te(e,o,t=!1){let r=Io||jo;if(r){let a=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(a&&e in a)return a[e];if(arguments.length>1)return t&&Ee(o)?o.call(r.proxy):o}}function Mo(e,o){return $n(e,null,o)}function xm(e,o){return $n(e,null,{flush:"post"})}var jn={};function Ze(e,o,t){return $n(e,o,t)}function $n(e,o,{immediate:t,deep:r,flush:a,onTrack:l,onTrigger:n}=ro){let i=O=>{lm("Invalid watch source: ",O,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},d=Io,s,u=!1,f=!1;if(yo(e)?(s=()=>e.value,u=Aa(e)):yr(e)?(s=()=>e,r=!0):Ae(e)?(f=!0,u=e.some(O=>yr(O)||Aa(O)),s=()=>e.map(O=>{if(yo(O))return O.value;if(yr(O))return ea(O);if(Ee(O))return lr(O,d,2)})):Ee(e)?o?s=()=>lr(e,d,2):s=()=>{if(!(d&&d.isUnmounted))return c&&c(),it(e,d,3,[p])}:s=nt,o&&r){let O=s;s=()=>ea(O())}let c,p=O=>{c=D.onStop=()=>{lr(O,d,4)}},x;if(vl)if(p=nt,o?t&&it(o,d,3,[s(),f?[]:void 0,p]):s(),a==="sync"){let O=yF();x=O.__watcherHandles||(O.__watcherHandles=[])}else return nt;let T=f?new Array(e.length).fill(jn):jn,C=()=>{if(!!D.active)if(o){let O=D.run();(r||u||(f?O.some((g,v)=>Qr(g,T[v])):Qr(O,T)))&&(c&&c(),it(o,d,3,[O,T===jn?void 0:f&&T[0]===jn?[]:T,p]),T=O)}else D.run()};C.allowRecurse=!!o;let S;a==="sync"?S=C:a==="post"?S=()=>ot(C,d&&d.suspense):(C.pre=!0,d&&(C.id=d.uid),S=()=>$d(C));let D=new ka(s,S);o?t?C():T=D.run():a==="post"?ot(D.run.bind(D),d&&d.suspense):D.run();let $=()=>{D.stop(),d&&d.scope&&bn(d.scope.effects,D)};return x&&x.push($),$}function _R(e,o,t){let r=this.proxy,a=Ro(e)?e.includes(".")?hm(r,e):()=>r[e]:e.bind(r,r),l;Ee(o)?l=o:(l=o.handler,t=o);let n=Io;_a(this);let i=$n(a,l.bind(r),t);return n?_a(n):na(),i}function hm(e,o){let t=o.split(".");return()=>{let r=e;for(let a=0;a{ea(t,o)});else if(Dd(e))for(let t in e)ea(e[t],o);return e}function Kd(){let e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return fo(()=>{e.isMounted=!0}),_o(()=>{e.isUnmounting=!0}),e}var xt=[Function,Array],IR={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:xt,onEnter:xt,onAfterEnter:xt,onEnterCancelled:xt,onBeforeLeave:xt,onLeave:xt,onAfterLeave:xt,onLeaveCancelled:xt,onBeforeAppear:xt,onAppear:xt,onAfterAppear:xt,onAppearCancelled:xt},setup(e,{slots:o}){let t=St(),r=Kd(),a;return()=>{let l=o.default&&Un(o.default(),!0);if(!l||!l.length)return;let n=l[0];if(l.length>1){let T=!1;for(let C of l)if(C.type!==$o){n=C,T=!0;break}}let i=Ie(e),{mode:d}=i;if(r.isLeaving)return qd(n);let s=gm(n);if(!s)return qd(n);let u=Pa(s,i,r,t);Ma(s,u);let f=t.subTree,c=f&&gm(f),p=!1,{getTransitionKey:x}=s.type;if(x){let T=x();a===void 0?a=T:T!==a&&(a=T,p=!0)}if(c&&c.type!==$o&&(!la(s,c)||p)){let T=Pa(c,i,r,t);if(Ma(c,T),d==="out-in")return r.isLeaving=!0,T.afterLeave=()=>{r.isLeaving=!1,t.update.active!==!1&&t.update()},qd(n);d==="in-out"&&s.type!==$o&&(T.delayLeave=(C,S,D)=>{let $=Sm(r,c);$[String(c.key)]=c,C._leaveCb=()=>{S(),C._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=D})}return n}}},Gd=IR;function Sm(e,o){let{leavingVNodes:t}=e,r=t.get(o.type);return r||(r=Object.create(null),t.set(o.type,r)),r}function Pa(e,o,t,r){let{appear:a,mode:l,persisted:n=!1,onBeforeEnter:i,onEnter:d,onAfterEnter:s,onEnterCancelled:u,onBeforeLeave:f,onLeave:c,onAfterLeave:p,onLeaveCancelled:x,onBeforeAppear:T,onAppear:C,onAfterAppear:S,onAppearCancelled:D}=o,$=String(e.key),O=Sm(t,e),g=(F,B)=>{F&&it(F,r,9,B)},v=(F,B)=>{let y=B[1];g(F,B),Ae(F)?F.every(W=>W.length<=1)&&y():F.length<=1&&y()},w={mode:l,persisted:n,beforeEnter(F){let B=i;if(!t.isMounted)if(a)B=T||i;else return;F._leaveCb&&F._leaveCb(!0);let y=O[$];y&&la(e,y)&&y.el._leaveCb&&y.el._leaveCb(),g(B,[F])},enter(F){let B=d,y=s,W=u;if(!t.isMounted)if(a)B=C||d,y=S||s,W=D||u;else return;let _=!1,ae=F._enterCb=he=>{_||(_=!0,he?g(W,[F]):g(y,[F]),w.delayedLeave&&w.delayedLeave(),F._enterCb=void 0)};B?v(B,[F,ae]):ae()},leave(F,B){let y=String(e.key);if(F._enterCb&&F._enterCb(!0),t.isUnmounting)return B();g(f,[F]);let W=!1,_=F._leaveCb=ae=>{W||(W=!0,B(),ae?g(x,[F]):g(p,[F]),F._leaveCb=void 0,O[y]===e&&delete O[y])};O[y]=e,c?v(c,[F,_]):_()},clone(F){return Pa(F,o,t,r)}};return w}function qd(e){if(Kn(e))return e=Ar(e),e.children=null,e}function gm(e){return Kn(e)?e.children?e.children[0]:void 0:e}function Ma(e,o){e.shapeFlag&6&&e.component?Ma(e.component.subTree,o):e.shapeFlag&128?(e.ssContent.transition=o.clone(e.ssContent),e.ssFallback.transition=o.clone(e.ssFallback)):e.transition=o}function Un(e,o=!1,t){let r=[],a=0;for(let l=0;l1)for(let l=0;l!!e.type.__asyncLoader;var Kn=e=>e.type.__isKeepAlive;function Qd(e,o){wm(e,"a",o)}function HR(e,o){wm(e,"da",o)}function wm(e,o,t=Io){let r=e.__wdc||(e.__wdc=()=>{let a=t;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Gn(o,r,t),t){let a=t.parent;for(;a&&a.parent;)Kn(a.parent.vnode)&&WR(r,o,t,a),a=a.parent}}function WR(e,o,t,r){let a=Gn(o,e,r,!0);oa(()=>{bn(r[o],a)},t)}function Gn(e,o,t=Io,r=!1){if(t){let a=t[e]||(t[e]=[]),l=o.__weh||(o.__weh=(...n)=>{if(t.isUnmounted)return;Fr(),_a(t);let i=it(o,t,e,n);return na(),Or(),i});return r?a.unshift(l):a.push(l),l}}var ir=e=>(o,t=Io)=>(!vl||e==="sp")&&Gn(e,(...r)=>o(...r),t),dr=ir("bm"),fo=ir("m"),Zd=ir("bu"),Yd=ir("u"),_o=ir("bum"),oa=ir("um"),VR=ir("sp"),zR=ir("rtg"),jR=ir("rtc");function $R(e,o=Io){Gn("ec",e,o)}function qn(e,o){let t=jo;if(t===null)return e;let r=oi(t)||t.proxy,a=e.dirs||(e.dirs=[]);for(let l=0;lLa(o)?!(o.type===$o||o.type===Co&&!Tm(o.children)):!0)?e:null}var Xd=e=>e?Vm(e)?oi(e)||e.proxy:Xd(e.parent):null,Tl=Oo(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Xd(e.parent),$root:e=>Xd(e.root),$emit:e=>e.emit,$options:e=>os(e),$forceUpdate:e=>e.f||(e.f=()=>$d(e.update)),$nextTick:e=>e.n||(e.n=No.bind(e.proxy)),$watch:e=>_R.bind(e)});var Jd=(e,o)=>e!==ro&&!e.__isScriptSetup&&je(e,o),KR={get({_:e},o){let{ctx:t,setupState:r,data:a,props:l,accessCache:n,type:i,appContext:d}=e,s;if(o[0]!=="$"){let p=n[o];if(p!==void 0)switch(p){case 1:return r[o];case 2:return a[o];case 4:return t[o];case 3:return l[o]}else{if(Jd(r,o))return n[o]=1,r[o];if(a!==ro&&je(a,o))return n[o]=2,a[o];if((s=e.propsOptions[0])&&je(s,o))return n[o]=3,l[o];if(t!==ro&&je(t,o))return n[o]=4,t[o];es&&(n[o]=0)}}let u=Tl[o],f,c;if(u)return o==="$attrs"&&et(e,"get",o),u(e);if((f=i.__cssModules)&&(f=f[o]))return f;if(t!==ro&&je(t,o))return n[o]=4,t[o];if(c=d.config.globalProperties,je(c,o))return c[o]},set({_:e},o,t){let{data:r,setupState:a,ctx:l}=e;return Jd(a,o)?(a[o]=t,!0):r!==ro&&je(r,o)?(r[o]=t,!0):je(e.props,o)||o[0]==="$"&&o.slice(1)in e?!1:(l[o]=t,!0)},has({_:{data:e,setupState:o,accessCache:t,ctx:r,appContext:a,propsOptions:l}},n){let i;return!!t[n]||e!==ro&&je(e,n)||Jd(o,n)||(i=l[0])&&je(i,n)||je(r,n)||je(Tl,n)||je(a.config.globalProperties,n)},defineProperty(e,o,t){return t.get!=null?e._.accessCache[o]=0:je(t,"value")&&this.set(e,o,t.value,null),Reflect.defineProperty(e,o,t)}};var es=!0;function GR(e){let o=os(e),t=e.proxy,r=e.ctx;es=!1,o.beforeCreate&&Rm(o.beforeCreate,e,"bc");let{data:a,computed:l,methods:n,watch:i,provide:d,inject:s,created:u,beforeMount:f,mounted:c,beforeUpdate:p,updated:x,activated:T,deactivated:C,beforeDestroy:S,beforeUnmount:D,destroyed:$,unmounted:O,render:g,renderTracked:v,renderTriggered:w,errorCaptured:F,serverPrefetch:B,expose:y,inheritAttrs:W,components:_,directives:ae,filters:he}=o;if(s&&qR(s,r,null,e.appContext.config.unwrapInjectedRef),n)for(let ie in n){let ge=n[ie];Ee(ge)&&(r[ie]=ge.bind(t))}if(a){let ie=a.call(t,t);ao(ie)&&(e.data=Ht(ie))}if(es=!0,l)for(let ie in l){let ge=l[ie],Ve=Ee(ge)?ge.bind(t,t):Ee(ge.get)?ge.get.bind(t,t):nt,Ke=!Ee(ge)&&Ee(ge.set)?ge.set.bind(t):nt,He=V({get:Ve,set:Ke});Object.defineProperty(r,ie,{enumerable:!0,configurable:!0,get:()=>He.value,set:Xe=>He.value=Xe})}if(i)for(let ie in i)Fm(i[ie],r,t,ie);if(d){let ie=Ee(d)?d.call(t):d;Reflect.ownKeys(ie).forEach(ge=>{qo(ge,ie[ge])})}u&&Rm(u,e,"c");function de(ie,ge){Ae(ge)?ge.forEach(Ve=>ie(Ve.bind(t))):ge&&ie(ge.bind(t))}if(de(dr,f),de(fo,c),de(Zd,p),de(Yd,x),de(Qd,T),de(HR,C),de($R,F),de(jR,v),de(zR,w),de(_o,D),de(oa,O),de(VR,B),Ae(y))if(y.length){let ie=e.exposed||(e.exposed={});y.forEach(ge=>{Object.defineProperty(ie,ge,{get:()=>t[ge],set:Ve=>t[ge]=Ve})})}else e.exposed||(e.exposed={});g&&e.render===nt&&(e.render=g),W!=null&&(e.inheritAttrs=W),_&&(e.components=_),ae&&(e.directives=ae)}function qR(e,o,t=nt,r=!1){Ae(e)&&(e=ts(e));for(let a in e){let l=e[a],n;ao(l)?"default"in l?n=Te(l.from||a,l.default,!0):n=Te(l.from||a):n=Te(l),yo(n)&&r?Object.defineProperty(o,a,{enumerable:!0,configurable:!0,get:()=>n.value,set:i=>n.value=i}):o[a]=n}}function Rm(e,o,t){it(Ae(e)?e.map(r=>r.bind(o.proxy)):e.bind(o.proxy),o,t)}function Fm(e,o,t,r){let a=r.includes(".")?hm(t,r):()=>t[r];if(Ro(e)){let l=o[e];Ee(l)&&Ze(a,l)}else if(Ee(e))Ze(a,e.bind(t));else if(ao(e))if(Ae(e))e.forEach(l=>Fm(l,o,t,r));else{let l=Ee(e.handler)?e.handler.bind(t):o[e.handler];Ee(l)&&Ze(a,l,e)}}function os(e){let o=e.type,{mixins:t,extends:r}=o,{mixins:a,optionsCache:l,config:{optionMergeStrategies:n}}=e.appContext,i=l.get(o),d;return i?d=i:!a.length&&!t&&!r?d=o:(d={},a.length&&a.forEach(s=>Qn(d,s,n,!0)),Qn(d,o,n)),ao(o)&&l.set(o,d),d}function Qn(e,o,t,r=!1){let{mixins:a,extends:l}=o;l&&Qn(e,l,t,!0),a&&a.forEach(n=>Qn(e,n,t,!0));for(let n in o)if(!(r&&n==="expose")){let i=QR[n]||t&&t[n];e[n]=i?i(e[n],o[n]):o[n]}return e}var QR={data:Om,props:ra,emits:ra,methods:ra,computed:ra,beforeCreate:Qo,created:Qo,beforeMount:Qo,mounted:Qo,beforeUpdate:Qo,updated:Qo,beforeDestroy:Qo,beforeUnmount:Qo,destroyed:Qo,unmounted:Qo,activated:Qo,deactivated:Qo,errorCaptured:Qo,serverPrefetch:Qo,components:ra,directives:ra,watch:YR,provide:Om,inject:ZR};function Om(e,o){return o?e?function(){return Oo(Ee(e)?e.call(this,this):e,Ee(o)?o.call(this,this):o)}:o:e}function ZR(e,o){return ra(ts(e),ts(o))}function ts(e){if(Ae(e)){let o={};for(let t=0;t0)&&!(n&16)){if(n&8){let u=e.vnode.dynamicProps;for(let f=0;f{d=!0;let[c,p]=bm(f,o,!0);Oo(n,c),p&&i.push(...p)};!t&&o.mixins.length&&o.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!l&&!d)return ao(e)&&r.set(e,qr),qr;if(Ae(l))for(let u=0;u-1,p[1]=T<0||x-1||je(p,"default"))&&i.push(f)}}}let s=[n,i];return ao(e)&&r.set(e,s),s}function ym(e){return e[0]!=="$"}function vm(e){let o=e&&e.toString().match(/^\s*function (\w+)/);return o?o[1]:e===null?"null":""}function km(e,o){return vm(e)===vm(o)}function Am(e,o){return Ae(o)?o.findIndex(t=>km(t,e)):Ee(o)&&km(o,e)?0:-1}var Dm=e=>e[0]==="_"||e==="$stable",as=e=>Ae(e)?e.map(Vt):[Vt(e)],eF=(e,o,t)=>{if(o._n)return o;let r=Jr((...a)=>as(o(...a)),t);return r._c=!1,r},Pm=(e,o,t)=>{let r=e._ctx;for(let a in e){if(Dm(a))continue;let l=e[a];if(Ee(l))o[a]=eF(a,l,r);else if(l!=null){let n=as(l);o[a]=()=>n}}},Mm=(e,o)=>{let t=as(o);e.slots.default=()=>t},oF=(e,o)=>{if(e.vnode.shapeFlag&32){let t=o._;t?(e.slots=Ie(o),ya(o,"_",t)):Pm(o,e.slots={})}else e.slots={},o&&Mm(e,o);ya(e.slots,Xn,1)},tF=(e,o,t)=>{let{vnode:r,slots:a}=e,l=!0,n=ro;if(r.shapeFlag&32){let i=o._;i?t&&i===1?l=!1:(Oo(a,o),!t&&i===1&&delete a._):(l=!o.$stable,Pm(o,a)),n=o}else o&&(Mm(e,o),n={default:1});if(l)for(let i in a)!Dm(i)&&!(i in n)&&delete a[i]};function Bm(){return{app:null,config:{isNativeTag:Pp,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}var rF=0;function aF(e,o){return function(r,a=null){Ee(r)||(r=Object.assign({},r)),a!=null&&!ao(a)&&(a=null);let l=Bm(),n=new Set,i=!1,d=l.app={_uid:rF++,_component:r,_props:a,_container:null,_context:l,_instance:null,version:vF,get config(){return l.config},set config(s){},use(s,...u){return n.has(s)||(s&&Ee(s.install)?(n.add(s),s.install(d,...u)):Ee(s)&&(n.add(s),s(d,...u))),d},mixin(s){return l.mixins.includes(s)||l.mixins.push(s),d},component(s,u){return u?(l.components[s]=u,d):l.components[s]},directive(s,u){return u?(l.directives[s]=u,d):l.directives[s]},mount(s,u,f){if(!i){let c=mo(r,a);return c.appContext=l,u&&o?o(c,s):e(c,s,f),i=!0,d._container=s,s.__vue_app__=d,oi(c.component)||c.component.proxy}},unmount(){i&&(e(null,d._container),delete d._container.__vue_app__)},provide(s,u){return l.provides[s]=u,d}};return d}}function ls(e,o,t,r,a=!1){if(Ae(e)){e.forEach((c,p)=>ls(c,o&&(Ae(o)?o[p]:o),t,r,a));return}if(wl(r)&&!a)return;let l=r.shapeFlag&4?oi(r.component)||r.component.proxy:r.el,n=a?null:l,{i,r:d}=e,s=o&&o.r,u=i.refs===ro?i.refs={}:i.refs,f=i.setupState;if(s!=null&&s!==d&&(Ro(s)?(u[s]=null,je(f,s)&&(f[s]=null)):yo(s)&&(s.value=null)),Ee(d))lr(d,i,12,[n,u]);else{let c=Ro(d),p=yo(d);if(c||p){let x=()=>{if(e.f){let T=c?je(f,d)?f[d]:u[d]:d.value;a?Ae(T)&&bn(T,l):Ae(T)?T.includes(l)||T.push(l):c?(u[d]=[l],je(f,d)&&(f[d]=u[d])):(d.value=[l],e.k&&(u[e.k]=d.value))}else c?(u[d]=n,je(f,d)&&(f[d]=n)):p&&(d.value=n,e.k&&(u[e.k]=n))};n?(x.id=-1,ot(x,t)):x()}}}function lF(){let e=[]}var ot=NR;function Lm(e){return nF(e)}function nF(e,o){lF();let t=Lp();t.__VUE__=!0;let{insert:r,remove:a,patchProp:l,createElement:n,createText:i,createComment:d,setText:s,setElementText:u,parentNode:f,nextSibling:c,setScopeId:p=nt,insertStaticContent:x}=e,T=(m,h,k,E=null,I=null,j=null,U=!1,L=null,K=!!h.dynamicChildren)=>{if(m===h)return;m&&!la(m,h)&&(E=ho(m),Qe(m,I,j,!0),m=null),h.patchFlag===-2&&(K=!1,h.dynamicChildren=null);let{type:H,ref:b,shapeFlag:N}=h;switch(H){case Yn:C(m,h,k,E);break;case $o:S(m,h,k,E);break;case Fl:m==null&&D(h,k,E,U);break;case Co:ae(m,h,k,E,I,j,U,L,K);break;default:N&1?v(m,h,k,E,I,j,U,L,K):N&6?he(m,h,k,E,I,j,U,L,K):(N&64||N&128)&&H.process(m,h,k,E,I,j,U,L,K,qe)}b!=null&&I&&ls(b,m&&m.ref,j,h||m,!h)},C=(m,h,k,E)=>{if(m==null)r(h.el=i(h.children),k,E);else{let I=h.el=m.el;h.children!==m.children&&s(I,h.children)}},S=(m,h,k,E)=>{m==null?r(h.el=d(h.children||""),k,E):h.el=m.el},D=(m,h,k,E)=>{[m.el,m.anchor]=x(m.children,h,k,E,m.el,m.anchor)},$=(m,h,k,E)=>{if(h.children!==m.children){let I=c(m.anchor);g(m),[h.el,h.anchor]=x(h.children,k,I,E)}else h.el=m.el,h.anchor=m.anchor},O=({el:m,anchor:h},k,E)=>{let I;for(;m&&m!==h;)I=c(m),r(m,k,E),m=I;r(h,k,E)},g=({el:m,anchor:h})=>{let k;for(;m&&m!==h;)k=c(m),a(m),m=k;a(h)},v=(m,h,k,E,I,j,U,L,K)=>{U=U||h.type==="svg",m==null?w(h,k,E,I,j,U,L,K):y(m,h,I,j,U,L,K)},w=(m,h,k,E,I,j,U,L)=>{let K,H,{type:b,props:N,shapeFlag:z,transition:te,dirs:fe}=m;if(K=m.el=n(m.type,j,N&&N.is,N),z&8?u(K,m.children):z&16&&B(m.children,K,null,E,I,j&&b!=="foreignObject",U,L),fe&&ta(m,null,E,"created"),N){for(let ye in N)ye!=="value"&&!ul(ye)&&l(K,ye,null,N[ye],j,m.children,E,I,We);"value"in N&&l(K,"value",null,N.value),(H=N.onVnodeBeforeMount)&&zt(H,E,m)}F(K,m,m.scopeId,U,E),fe&&ta(m,null,E,"beforeMount");let Ce=(!I||I&&!I.pendingBranch)&&te&&!te.persisted;Ce&&te.beforeEnter(K),r(K,h,k),((H=N&&N.onVnodeMounted)||Ce||fe)&&ot(()=>{H&&zt(H,E,m),Ce&&te.enter(K),fe&&ta(m,null,E,"mounted")},I)},F=(m,h,k,E,I)=>{if(k&&p(m,k),E)for(let j=0;j{for(let H=K;H{let L=h.el=m.el,{patchFlag:K,dynamicChildren:H,dirs:b}=h;K|=m.patchFlag&16;let N=m.props||ro,z=h.props||ro,te;k&&aa(k,!1),(te=z.onVnodeBeforeUpdate)&&zt(te,k,h,m),b&&ta(h,m,k,"beforeUpdate"),k&&aa(k,!0);let fe=I&&h.type!=="foreignObject";if(H?W(m.dynamicChildren,H,L,k,E,fe,j):U||Ve(m,h,L,null,k,E,fe,j,!1),K>0){if(K&16)_(L,h,N,z,k,E,I);else if(K&2&&N.class!==z.class&&l(L,"class",null,z.class,I),K&4&&l(L,"style",N.style,z.style,I),K&8){let Ce=h.dynamicProps;for(let ye=0;ye{te&&zt(te,k,h,m),b&&ta(h,m,k,"updated")},E)},W=(m,h,k,E,I,j,U)=>{for(let L=0;L{if(k!==E){if(k!==ro)for(let L in k)!ul(L)&&!(L in E)&&l(m,L,k[L],null,U,h.children,I,j,We);for(let L in E){if(ul(L))continue;let K=E[L],H=k[L];K!==H&&L!=="value"&&l(m,L,H,K,U,h.children,I,j,We)}"value"in E&&l(m,"value",k.value,E.value)}},ae=(m,h,k,E,I,j,U,L,K)=>{let H=h.el=m?m.el:i(""),b=h.anchor=m?m.anchor:i(""),{patchFlag:N,dynamicChildren:z,slotScopeIds:te}=h;te&&(L=L?L.concat(te):te),m==null?(r(H,k,E),r(b,k,E),B(h.children,k,b,I,j,U,L,K)):N>0&&N&64&&z&&m.dynamicChildren?(W(m.dynamicChildren,z,k,I,j,U,L),(h.key!=null||I&&h===I.subTree)&&ns(m,h,!0)):Ve(m,h,k,b,I,j,U,L,K)},he=(m,h,k,E,I,j,U,L,K)=>{h.slotScopeIds=L,m==null?h.shapeFlag&512?I.ctx.activate(h,k,E,U,K):Me(h,k,E,I,j,U,K):de(m,h,K)},Me=(m,h,k,E,I,j,U)=>{let L=m.component=hF(m,E,I);if(Kn(m)&&(L.ctx.renderer=qe),SF(L),L.asyncDep){if(I&&I.registerDep(L,ie),!m.el){let K=L.subTree=mo($o);S(null,K,h,k)}return}ie(L,m,h,k,I,j,U)},de=(m,h,k)=>{let E=h.component=m.component;if(BR(m,h,k))if(E.asyncDep&&!E.asyncResolved){ge(E,h,k);return}else E.next=h,vR(E.update),E.update();else h.el=m.el,E.vnode=h},ie=(m,h,k,E,I,j,U)=>{let L=()=>{if(m.isMounted){let{next:b,bu:N,u:z,parent:te,vnode:fe}=m,Ce=b,ye;aa(m,!1),b?(b.el=fe.el,ge(m,b,U)):b=fe,N&&ml(N),(ye=b.props&&b.props.onVnodeBeforeUpdate)&&zt(ye,te,b,fe),aa(m,!0);let Le=Ud(m),Q=m.subTree;m.subTree=Le,T(Q,Le,f(Q.el),ho(Q),m,I,j),b.el=Le.el,Ce===null&&LR(m,Le.el),z&&ot(z,I),(ye=b.props&&b.props.onVnodeUpdated)&&ot(()=>zt(ye,te,b,fe),I)}else{let b,{el:N,props:z}=h,{bm:te,m:fe,parent:Ce}=m,ye=wl(h);if(aa(m,!1),te&&ml(te),!ye&&(b=z&&z.onVnodeBeforeMount)&&zt(b,Ce,h),aa(m,!0),N&&vo){let Le=()=>{m.subTree=Ud(m),vo(N,m.subTree,m,I,null)};ye?h.type.__asyncLoader().then(()=>!m.isUnmounted&&Le()):Le()}else{let Le=m.subTree=Ud(m);T(null,Le,k,E,m,I,j),h.el=Le.el}if(fe&&ot(fe,I),!ye&&(b=z&&z.onVnodeMounted)){let Le=h;ot(()=>zt(b,Ce,Le),I)}(h.shapeFlag&256||Ce&&wl(Ce.vnode)&&Ce.vnode.shapeFlag&256)&&m.a&&ot(m.a,I),m.isMounted=!0,h=k=E=null}},K=m.effect=new ka(L,()=>$d(H),m.scope),H=m.update=()=>K.run();H.id=m.uid,aa(m,!0),H()},ge=(m,h,k)=>{h.component=m;let E=m.vnode.props;m.vnode=h,m.next=null,JR(m,h.props,E,k),tF(m,h.children,k),Fr(),sm(),Or()},Ve=(m,h,k,E,I,j,U,L,K=!1)=>{let H=m&&m.children,b=m?m.shapeFlag:0,N=h.children,{patchFlag:z,shapeFlag:te}=h;if(z>0){if(z&128){He(H,N,k,E,I,j,U,L,K);return}else if(z&256){Ke(H,N,k,E,I,j,U,L,K);return}}te&8?(b&16&&We(H,I,j),N!==H&&u(k,N)):b&16?te&16?He(H,N,k,E,I,j,U,L,K):We(H,I,j,!0):(b&8&&u(k,""),te&16&&B(N,k,E,I,j,U,L,K))},Ke=(m,h,k,E,I,j,U,L,K)=>{m=m||qr,h=h||qr;let H=m.length,b=h.length,N=Math.min(H,b),z;for(z=0;zb?We(m,I,j,!0,!1,N):B(h,k,E,I,j,U,L,K,N)},He=(m,h,k,E,I,j,U,L,K)=>{let H=0,b=h.length,N=m.length-1,z=b-1;for(;H<=N&&H<=z;){let te=m[H],fe=h[H]=K?Dr(h[H]):Vt(h[H]);if(la(te,fe))T(te,fe,k,null,I,j,U,L,K);else break;H++}for(;H<=N&&H<=z;){let te=m[N],fe=h[z]=K?Dr(h[z]):Vt(h[z]);if(la(te,fe))T(te,fe,k,null,I,j,U,L,K);else break;N--,z--}if(H>N){if(H<=z){let te=z+1,fe=tez)for(;H<=N;)Qe(m[H],I,j,!0),H++;else{let te=H,fe=H,Ce=new Map;for(H=fe;H<=z;H++){let ze=h[H]=K?Dr(h[H]):Vt(h[H]);ze.key!=null&&Ce.set(ze.key,H)}let ye,Le=0,Q=z-fe+1,re=!1,Se=0,_e=new Array(Q);for(H=0;H=Q){Qe(ze,I,j,!0);continue}let eo;if(ze.key!=null)eo=Ce.get(ze.key);else for(ye=fe;ye<=z;ye++)if(_e[ye-fe]===0&&la(ze,h[ye])){eo=ye;break}eo===void 0?Qe(ze,I,j,!0):(_e[eo-fe]=H+1,eo>=Se?Se=eo:re=!0,T(ze,h[eo],k,null,I,j,U,L,K),Le++)}let Je=re?iF(_e):qr;for(ye=Je.length-1,H=Q-1;H>=0;H--){let ze=fe+H,eo=h[ze],Ge=ze+1{let{el:j,type:U,transition:L,children:K,shapeFlag:H}=m;if(H&6){Xe(m.component.subTree,h,k,E);return}if(H&128){m.suspense.move(h,k,E);return}if(H&64){U.move(m,h,k,qe);return}if(U===Co){r(j,h,k);for(let N=0;NL.enter(j),I);else{let{leave:N,delayLeave:z,afterLeave:te}=L,fe=()=>r(j,h,k),Ce=()=>{N(j,()=>{fe(),te&&te()})};z?z(j,fe,Ce):Ce()}else r(j,h,k)},Qe=(m,h,k,E=!1,I=!1)=>{let{type:j,props:U,ref:L,children:K,dynamicChildren:H,shapeFlag:b,patchFlag:N,dirs:z}=m;if(L!=null&&ls(L,null,k,m,!0),b&256){h.ctx.deactivate(m);return}let te=b&1&&z,fe=!wl(m),Ce;if(fe&&(Ce=U&&U.onVnodeBeforeUnmount)&&zt(Ce,h,m),b&6)Be(m.component,k,E);else{if(b&128){m.suspense.unmount(k,E);return}te&&ta(m,null,h,"beforeUnmount"),b&64?m.type.remove(m,h,k,I,qe,E):H&&(j!==Co||N>0&&N&64)?We(H,h,k,!1,!0):(j===Co&&N&(128|256)||!I&&b&16)&&We(K,h,k),E&&wo(m)}(fe&&(Ce=U&&U.onVnodeUnmounted)||te)&&ot(()=>{Ce&&zt(Ce,h,m),te&&ta(m,null,h,"unmounted")},k)},wo=m=>{let{type:h,el:k,anchor:E,transition:I}=m;if(h===Co){Do(k,E);return}if(h===Fl){g(m);return}let j=()=>{a(k),I&&!I.persisted&&I.afterLeave&&I.afterLeave()};if(m.shapeFlag&1&&I&&!I.persisted){let{leave:U,delayLeave:L}=I,K=()=>U(k,j);L?L(m.el,j,K):K()}else j()},Do=(m,h)=>{let k;for(;m!==h;)k=c(m),a(m),m=k;a(h)},Be=(m,h,k)=>{let{bum:E,scope:I,update:j,subTree:U,um:L}=m;E&&ml(E),I.stop(),j&&(j.active=!1,Qe(U,m,h,k)),L&&ot(L,h),ot(()=>{m.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&m.asyncDep&&!m.asyncResolved&&m.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},We=(m,h,k,E=!1,I=!1,j=0)=>{for(let U=j;Um.shapeFlag&6?ho(m.component.subTree):m.shapeFlag&128?m.suspense.next():c(m.anchor||m.el),we=(m,h,k)=>{m==null?h._vnode&&Qe(h._vnode,null,null,!0):T(h._vnode||null,m,h,null,null,null,k),sm(),um(),h._vnode=m},qe={p:T,um:Qe,m:Xe,r:wo,mt:Me,mc:B,pc:Ve,pbc:W,n:ho,o:e},to,vo;return o&&([to,vo]=o(qe)),{render:we,hydrate:to,createApp:aF(we,to)}}function aa({effect:e,update:o},t){e.allowRecurse=o.allowRecurse=t}function ns(e,o,t=!1){let r=e.children,a=o.children;if(Ae(r)&&Ae(a))for(let l=0;l>1,e[t[i]]0&&(o[r]=t[l-1]),t[l]=r)}}for(l=t.length,n=t[l-1];l-- >0;)t[l]=n,n=o[n];return t}var dF=e=>e.__isTeleport,Rl=e=>e&&(e.disabled||e.disabled===""),Em=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,is=(e,o)=>{let t=e&&e.to;if(Ro(t))if(o){let r=o(t);return r}else return null;else return t},sF={__isTeleport:!0,process(e,o,t,r,a,l,n,i,d,s){let{mc:u,pc:f,pbc:c,o:{insert:p,querySelector:x,createText:T,createComment:C}}=s,S=Rl(o.props),{shapeFlag:D,children:$,dynamicChildren:O}=o;if(e==null){let g=o.el=T(""),v=o.anchor=T("");p(g,t,r),p(v,t,r);let w=o.target=is(o.props,x),F=o.targetAnchor=T("");w&&(p(F,w),n=n||Em(w));let B=(y,W)=>{D&16&&u($,y,W,a,l,n,i,d)};S?B(t,v):w&&B(w,F)}else{o.el=e.el;let g=o.anchor=e.anchor,v=o.target=e.target,w=o.targetAnchor=e.targetAnchor,F=Rl(e.props),B=F?t:v,y=F?g:w;if(n=n||Em(v),O?(c(e.dynamicChildren,O,B,a,l,n,i),ns(e,o,!0)):d||f(e,o,B,y,a,l,n,i,!1),S)F||Zn(o,t,g,s,1);else if((o.props&&o.props.to)!==(e.props&&e.props.to)){let W=o.target=is(o.props,x);W&&Zn(o,W,null,s,0)}else F&&Zn(o,v,w,s,1)}_m(o)},remove(e,o,t,r,{um:a,o:{remove:l}},n){let{shapeFlag:i,children:d,anchor:s,targetAnchor:u,target:f,props:c}=e;if(f&&l(u),(n||!Rl(c))&&(l(s),i&16))for(let p=0;p0?vt||qr:null,fF(),Cl>0&&vt&&vt.push(e),e}function kr(e,o,t,r,a,l){return Hm(Ea(e,o,t,r,a,l,!0))}function bl(e,o,t,r,a){return Hm(mo(e,o,t,r,a,!0))}function La(e){return e?e.__v_isVNode===!0:!1}function la(e,o){return e.type===o.type&&e.key===o.key}var Xn="__vInternal",Wm=({key:e})=>e!=null?e:null,Jn=({ref:e,ref_key:o,ref_for:t})=>e!=null?Ro(e)||yo(e)||Ee(e)?{i:jo,r:e,k:o,f:!!t}:e:null;function Ea(e,o=null,t=null,r=0,a=null,l=e===Co?0:1,n=!1,i=!1){let d={__v_isVNode:!0,__v_skip:!0,type:e,props:o,key:o&&Wm(o),ref:o&&Jn(o),scopeId:mm,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:jo};return i?(ds(d,t),l&128&&e.normalize(d)):t&&(d.shapeFlag|=Ro(t)?8:16),Cl>0&&!n&&vt&&(d.patchFlag>0||l&6)&&d.patchFlag!==32&&vt.push(d),d}var mo=pF;function pF(e,o=null,t=null,r=0,a=null,l=!1){if((!e||e===UR)&&(e=$o),La(e)){let i=Ar(e,o,!0);return t&&ds(i,t),Cl>0&&!l&&vt&&(i.shapeFlag&6?vt[vt.indexOf(e)]=i:vt.push(i)),i.patchFlag|=-2,i}if(CF(e)&&(e=e.__vccOpts),o){o=mF(o);let{class:i,style:d}=o;i&&!Ro(i)&&(o.class=Gr(i)),ao(d)&&(In(d)&&!Ae(d)&&(d=Oo({},d)),o.style=Sr(d))}let n=Ro(e)?1:ER(e)?128:dF(e)?64:ao(e)?4:Ee(e)?2:0;return Ea(e,o,t,r,a,n,l,!0)}function mF(e){return e?In(e)||Xn in e?Oo({},e):e:null}function Ar(e,o,t=!1){let{props:r,ref:a,patchFlag:l,children:n}=e,i=o?yl(r||{},o):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:i,key:i&&Wm(i),ref:o&&o.ref?t&&a?Ae(a)?a.concat(Jn(o)):[a,Jn(o)]:Jn(o):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:n,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:o&&e.type!==Co?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ar(e.ssContent),ssFallback:e.ssFallback&&Ar(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function Na(e=" ",o=0){return mo(Yn,null,e,o)}function ei(e="",o=!1){return o?(ht(),bl($o,null,e)):mo($o,null,e)}function Vt(e){return e==null||typeof e=="boolean"?mo($o):Ae(e)?mo(Co,null,e.slice()):typeof e=="object"?Dr(e):mo(Yn,null,String(e))}function Dr(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ar(e)}function ds(e,o){let t=0,{shapeFlag:r}=e;if(o==null)o=null;else if(Ae(o))t=16;else if(typeof o=="object")if(r&(1|64)){let a=o.default;a&&(a._c&&(a._d=!1),ds(e,a()),a._c&&(a._d=!0));return}else{t=32;let a=o._;!a&&!(Xn in o)?o._ctx=jo:a===3&&jo&&(jo.slots._===1?o._=1:(o._=2,e.patchFlag|=1024))}else Ee(o)?(o={default:o,_ctx:jo},t=32):(o=String(o),r&64?(t=16,o=[Na(o)]):t=8);e.children=o,e.shapeFlag|=t}function yl(...e){let o={};for(let t=0;tIo||jo,_a=e=>{Io=e,e.scope.on()},na=()=>{Io&&Io.scope.off(),Io=null};function Vm(e){return e.vnode.shapeFlag&4}var vl=!1;function SF(e,o=!1){vl=o;let{props:t,children:r}=e.vnode,a=Vm(e);XR(e,t,a,o),oF(e,r);let l=a?gF(e,o):void 0;return vl=!1,l}function gF(e,o){var t;let r=e.type;e.accessCache=Object.create(null),e.proxy=Yr(new Proxy(e.ctx,KR));let{setup:a}=r;if(a){let l=e.setupContext=a.length>1?TF(e):null;_a(e),Fr();let n=lr(a,e,0,[e.props,l]);if(Or(),na(),kd(n)){if(n.then(na,na),o)return n.then(i=>{zm(e,i,o)}).catch(i=>{Wn(i,e,0)});e.asyncDep=n}else zm(e,n,o)}else Um(e,o)}function zm(e,o,t){Ee(o)?e.type.__ssrInlineRender?e.ssrRender=o:e.render=o:ao(o)&&(e.setupState=Hn(o)),Um(e,t)}var jm,$m;function Um(e,o,t){let r=e.type;if(!e.render){if(!o&&jm&&!r.render){let a=r.template||os(e).template;if(a){let{isCustomElement:l,compilerOptions:n}=e.appContext.config,{delimiters:i,compilerOptions:d}=r,s=Oo(Oo({isCustomElement:l,delimiters:i},n),d);r.render=jm(a,s)}}e.render=r.render||nt,$m&&$m(e)}_a(e),Fr(),GR(e),Or(),na()}function wF(e){return new Proxy(e.attrs,{get(o,t){return et(e,"get","$attrs"),o[t]}})}function TF(e){let o=r=>{e.exposed=r||{}},t;return{get attrs(){return t||(t=wF(e))},slots:e.slots,emit:e.emit,expose:o}}function oi(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Hn(Yr(e.exposed)),{get(o,t){if(t in o)return o[t];if(t in Tl)return Tl[t](e)},has(o,t){return t in o||t in Tl}}))}var RF=/(?:^|[-_])(\w)/g,FF=e=>e.replace(RF,o=>o.toUpperCase()).replace(/[-_]/g,"");function OF(e,o=!0){return Ee(e)?e.displayName||e.name:e.name||o&&e.__name}function Km(e,o,t=!1){let r=OF(o);if(!r&&o.__file){let a=o.__file.match(/([^/\\]+)\.\w+$/);a&&(r=a[1])}if(!r&&e&&e.parent){let a=l=>{for(let n in l)if(l[n]===o)return n};r=a(e.components||e.parent.type.components)||a(e.appContext.components)}return r?FF(r):t?"App":"Anonymous"}function CF(e){return Ee(e)&&"__vccOpts"in e}var V=(e,o)=>am(e,o,vl);function R(e,o,t){let r=arguments.length;return r===2?ao(o)&&!Ae(o)?La(o)?mo(e,null,[o]):mo(e,o):mo(e,null,o):(r>3?t=Array.prototype.slice.call(arguments,2):r===3&&La(t)&&(t=[t]),mo(e,o,t))}var bF=Symbol(""),yF=()=>{{let e=Te(bF);return e}};var vF="3.2.45";var kF="http://www.w3.org/2000/svg",ia=typeof document!="undefined"?document:null,Gm=ia&&ia.createElement("template"),AF={insert:(e,o,t)=>{o.insertBefore(e,t||null)},remove:e=>{let o=e.parentNode;o&&o.removeChild(e)},createElement:(e,o,t,r)=>{let a=o?ia.createElementNS(kF,e):ia.createElement(e,t?{is:t}:void 0);return e==="select"&&r&&r.multiple!=null&&a.setAttribute("multiple",r.multiple),a},createText:e=>ia.createTextNode(e),createComment:e=>ia.createComment(e),setText:(e,o)=>{e.nodeValue=o},setElementText:(e,o)=>{e.textContent=o},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ia.querySelector(e),setScopeId(e,o){e.setAttribute(o,"")},insertStaticContent(e,o,t,r,a,l){let n=t?t.previousSibling:o.lastChild;if(a&&(a===l||a.nextSibling))for(;o.insertBefore(a.cloneNode(!0),t),!(a===l||!(a=a.nextSibling)););else{Gm.innerHTML=r?`${e}`:e;let i=Gm.content;if(r){let d=i.firstChild;for(;d.firstChild;)i.appendChild(d.firstChild);i.removeChild(d)}o.insertBefore(i,t)}return[n?n.nextSibling:o.firstChild,t?t.previousSibling:o.lastChild]}};function DF(e,o,t){let r=e._vtc;r&&(o=(o?[o,...r]:[...r]).join(" ")),o==null?e.removeAttribute("class"):t?e.setAttribute("class",o):e.className=o}function PF(e,o,t){let r=e.style,a=Ro(t);if(t&&!a){for(let l in t)ss(r,l,t[l]);if(o&&!Ro(o))for(let l in o)t[l]==null&&ss(r,l,"")}else{let l=r.display;a?o!==t&&(r.cssText=t):o&&e.removeAttribute("style"),"_vod"in e&&(r.display=l)}}var qm=/\s*!important$/;function ss(e,o,t){if(Ae(t))t.forEach(r=>ss(e,o,r));else if(t==null&&(t=""),o.startsWith("--"))e.setProperty(o,t);else{let r=MF(e,o);qm.test(t)?e.setProperty(wr(r),t.replace(qm,""),"important"):e[r]=t}}var Qm=["Webkit","Moz","ms"],us={};function MF(e,o){let t=us[o];if(t)return t;let r=Nt(o);if(r!=="filter"&&r in e)return us[o]=r;r=fl(r);for(let a=0;afs||(HF.then(()=>fs=0),fs=Date.now());function VF(e,o){let t=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=t.attached)return;it(zF(r,t.value),o,5,[r])};return t.value=e,t.attached=WF(),t}function zF(e,o){if(Ae(o)){let t=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{t.call(e),e._stopped=!0},o.map(r=>a=>!a._stopped&&r&&r(a))}else return o}var Xm=/^on[a-z]/,jF=(e,o,t,r,a=!1,l,n,i,d)=>{o==="class"?DF(e,r,a):o==="style"?PF(e,t,r):ba(o)?sl(o)||_F(e,o,t,r,n):(o[0]==="."?(o=o.slice(1),!0):o[0]==="^"?(o=o.slice(1),!1):$F(e,o,r,a))?LF(e,o,r,l,n,i,d):(o==="true-value"?e._trueValue=r:o==="false-value"&&(e._falseValue=r),BF(e,o,r,a))};function $F(e,o,t,r){return r?!!(o==="innerHTML"||o==="textContent"||o in e&&Xm.test(o)&&Ee(t)):o==="spellcheck"||o==="draggable"||o==="translate"||o==="form"||o==="list"&&e.tagName==="INPUT"||o==="type"&&e.tagName==="TEXTAREA"||Xm.test(o)&&Ro(t)?!1:o in e}function Jm(e){let o=St();if(!o)return;let t=o.ut=(a=e(o.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${o.uid}"]`)).forEach(l=>ms(l,a))},r=()=>{let a=e(o.proxy);ps(o.subTree,a),t(a)};xm(r),fo(()=>{let a=new MutationObserver(r);a.observe(o.subTree.el.parentNode,{childList:!0}),oa(()=>a.disconnect())})}function ps(e,o){if(e.shapeFlag&128){let t=e.suspense;e=t.activeBranch,t.pendingBranch&&!t.isHydrating&&t.effects.push(()=>{ps(t.activeBranch,o)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)ms(e.el,o);else if(e.type===Co)e.children.forEach(t=>ps(t,o));else if(e.type===Fl){let{el:t,anchor:r}=e;for(;t&&(ms(t,o),t!==r);)t=t.nextSibling}}function ms(e,o){if(e.nodeType===1){let t=e.style;for(let r in o)t.setProperty(`--${r}`,o[r])}}var Pr="transition",kl="animation",kt=(e,{slots:o})=>R(Gd,tc(e),o);kt.displayName="Transition";var ec={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},UF=kt.props=Oo({},Gd.props,ec),da=(e,o=[])=>{Ae(e)?e.forEach(t=>t(...o)):e&&e(...o)},oc=e=>e?Ae(e)?e.some(o=>o.length>1):e.length>1:!1;function tc(e){let o={};for(let _ in e)_ in ec||(o[_]=e[_]);if(e.css===!1)return o;let{name:t="v",type:r,duration:a,enterFromClass:l=`${t}-enter-from`,enterActiveClass:n=`${t}-enter-active`,enterToClass:i=`${t}-enter-to`,appearFromClass:d=l,appearActiveClass:s=n,appearToClass:u=i,leaveFromClass:f=`${t}-leave-from`,leaveActiveClass:c=`${t}-leave-active`,leaveToClass:p=`${t}-leave-to`}=e,x=KF(a),T=x&&x[0],C=x&&x[1],{onBeforeEnter:S,onEnter:D,onEnterCancelled:$,onLeave:O,onLeaveCancelled:g,onBeforeAppear:v=S,onAppear:w=D,onAppearCancelled:F=$}=o,B=(_,ae,he)=>{Mr(_,ae?u:i),Mr(_,ae?s:n),he&&he()},y=(_,ae)=>{_._isLeaving=!1,Mr(_,f),Mr(_,p),Mr(_,c),ae&&ae()},W=_=>(ae,he)=>{let Me=_?w:D,de=()=>B(ae,_,he);da(Me,[ae,de]),rc(()=>{Mr(ae,_?d:l),sr(ae,_?u:i),oc(Me)||ac(ae,r,T,de)})};return Oo(o,{onBeforeEnter(_){da(S,[_]),sr(_,l),sr(_,n)},onBeforeAppear(_){da(v,[_]),sr(_,d),sr(_,s)},onEnter:W(!1),onAppear:W(!0),onLeave(_,ae){_._isLeaving=!0;let he=()=>y(_,ae);sr(_,f),dc(),sr(_,c),rc(()=>{!_._isLeaving||(Mr(_,f),sr(_,p),oc(O)||ac(_,r,C,he))}),da(O,[_,he])},onEnterCancelled(_){B(_,!1),da($,[_])},onAppearCancelled(_){B(_,!0),da(F,[_])},onLeaveCancelled(_){y(_),da(g,[_])}})}function KF(e){if(e==null)return null;if(ao(e))return[cs(e.enter),cs(e.leave)];{let o=cs(e);return[o,o]}}function cs(e){return va(e)}function sr(e,o){o.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e._vtc||(e._vtc=new Set)).add(o)}function Mr(e,o){o.split(/\s+/).forEach(r=>r&&e.classList.remove(r));let{_vtc:t}=e;t&&(t.delete(o),t.size||(e._vtc=void 0))}function rc(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var GF=0;function ac(e,o,t,r){let a=e._endId=++GF,l=()=>{a===e._endId&&r()};if(t)return setTimeout(l,t);let{type:n,timeout:i,propCount:d}=lc(e,o);if(!n)return r();let s=n+"end",u=0,f=()=>{e.removeEventListener(s,c),l()},c=p=>{p.target===e&&++u>=d&&f()};setTimeout(()=>{u(t[x]||"").split(", "),a=r(`${Pr}Delay`),l=r(`${Pr}Duration`),n=nc(a,l),i=r(`${kl}Delay`),d=r(`${kl}Duration`),s=nc(i,d),u=null,f=0,c=0;o===Pr?n>0&&(u=Pr,f=n,c=l.length):o===kl?s>0&&(u=kl,f=s,c=d.length):(f=Math.max(n,s),u=f>0?n>s?Pr:kl:null,c=u?u===Pr?l.length:d.length:0);let p=u===Pr&&/\b(transform|all)(,|$)/.test(r(`${Pr}Property`).toString());return{type:u,timeout:f,propCount:c,hasTransform:p}}function nc(e,o){for(;e.lengthic(t)+ic(e[r])))}function ic(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function dc(){return document.body.offsetHeight}var sc=new WeakMap,uc=new WeakMap,qF={name:"TransitionGroup",props:Oo({},UF,{tag:String,moveClass:String}),setup(e,{slots:o}){let t=St(),r=Kd(),a,l;return Yd(()=>{if(!a.length)return;let n=e.moveClass||`${e.name||"v"}-move`;if(!XF(a[0].el,t.vnode.el,n))return;a.forEach(QF),a.forEach(ZF);let i=a.filter(YF);dc(),i.forEach(d=>{let s=d.el,u=s.style;sr(s,n),u.transform=u.webkitTransform=u.transitionDuration="";let f=s._moveCb=c=>{c&&c.target!==s||(!c||/transform$/.test(c.propertyName))&&(s.removeEventListener("transitionend",f),s._moveCb=null,Mr(s,n))};s.addEventListener("transitionend",f)})}),()=>{let n=Ie(e),i=tc(n),d=n.tag||Co;a=l,l=o.default?Un(o.default()):[];for(let s=0;s{n.split(/\s+/).forEach(i=>i&&r.classList.remove(i))}),t.split(/\s+/).forEach(n=>n&&r.classList.add(n)),r.style.display="none";let a=o.nodeType===1?o:o.parentNode;a.appendChild(r);let{hasTransform:l}=lc(r);return a.removeChild(r),l}var JF=Oo({patchProp:jF},AF),pc;function eO(){return pc||(pc=Lm(JF))}var mc=(...e)=>{let o=eO().createApp(...e),{mount:t}=o;return o.mount=r=>{let a=oO(r);if(!a)return;let l=o._component;!Ee(l)&&!l.render&&!l.template&&(l.template=a.innerHTML),a.innerHTML="";let n=t(a,!1,a instanceof SVGElement);return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),n},o};function oO(e){return Ro(e)?document.querySelector(e):e}var Od=Oa(require("obsidian"));var ti=[],cc=new WeakMap;function tO(){ti.forEach(e=>e(...cc.get(e))),ti=[]}function Al(e,...o){cc.set(e,o),!ti.includes(e)&&ti.push(e)===1&&requestAnimationFrame(tO)}function ri(e,o){let{target:t}=e;for(;t;){if(t.dataset&&t.dataset[o]!==void 0)return!0;t=t.parentElement}return!1}function ai(e){return typeof e=="string"?e.endsWith("px")?Number(e.slice(0,e.length-2)):Number(e):e}function Br(e){if(e!=null)return typeof e=="number"?`${e}px`:e.endsWith("px")?e:`${e}px`}function Ia(e,o){let t=e.trim().split(/\s+/g),r={top:t[0]};switch(t.length){case 1:r.right=t[0],r.bottom=t[0],r.left=t[0];break;case 2:r.right=t[1],r.left=t[1],r.bottom=t[0];break;case 3:r.right=t[1],r.bottom=t[2],r.left=t[1];break;case 4:r.right=t[1],r.bottom=t[2],r.left=t[3];break;default:throw new Error("[seemly/getMargin]:"+e+" is not a valid value.")}return o===void 0?r:r[o]}var xs={black:"#000",silver:"#C0C0C0",gray:"#808080",white:"#FFF",maroon:"#800000",red:"#F00",purple:"#800080",fuchsia:"#F0F",green:"#008000",lime:"#0F0",olive:"#808000",yellow:"#FF0",navy:"#000080",blue:"#00F",teal:"#008080",aqua:"#0FF",transparent:"#0000"};var jt="^\\s*",$t="\\s*$",Lr="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))%\\s*",dt="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))\\s*",sa="([0-9A-Fa-f])",ua="([0-9A-Fa-f]{2})",j0=new RegExp(`${jt}hsl\\s*\\(${dt},${Lr},${Lr}\\)${$t}`),$0=new RegExp(`${jt}hsv\\s*\\(${dt},${Lr},${Lr}\\)${$t}`),U0=new RegExp(`${jt}hsla\\s*\\(${dt},${Lr},${Lr},${dt}\\)${$t}`),K0=new RegExp(`${jt}hsva\\s*\\(${dt},${Lr},${Lr},${dt}\\)${$t}`),rO=new RegExp(`${jt}rgb\\s*\\(${dt},${dt},${dt}\\)${$t}`),aO=new RegExp(`${jt}rgba\\s*\\(${dt},${dt},${dt},${dt}\\)${$t}`),lO=new RegExp(`${jt}#${sa}${sa}${sa}${$t}`),nO=new RegExp(`${jt}#${ua}${ua}${ua}${$t}`),iO=new RegExp(`${jt}#${sa}${sa}${sa}${sa}${$t}`),dO=new RegExp(`${jt}#${ua}${ua}${ua}${ua}${$t}`);function tt(e){return parseInt(e,16)}function gt(e){try{let o;if(o=nO.exec(e))return[tt(o[1]),tt(o[2]),tt(o[3]),1];if(o=rO.exec(e))return[Ho(o[1]),Ho(o[5]),Ho(o[9]),1];if(o=aO.exec(e))return[Ho(o[1]),Ho(o[5]),Ho(o[9]),Ha(o[13])];if(o=lO.exec(e))return[tt(o[1]+o[1]),tt(o[2]+o[2]),tt(o[3]+o[3]),1];if(o=dO.exec(e))return[tt(o[1]),tt(o[2]),tt(o[3]),Ha(tt(o[4])/255)];if(o=iO.exec(e))return[tt(o[1]+o[1]),tt(o[2]+o[2]),tt(o[3]+o[3]),Ha(tt(o[4]+o[4])/255)];if(e in xs)return gt(xs[e]);throw new Error(`[seemly/rgba]: Invalid color value ${e}.`)}catch(o){throw o}}function sO(e){return e>1?1:e<0?0:e}function hs(e,o,t,r){return`rgba(${Ho(e)}, ${Ho(o)}, ${Ho(t)}, ${sO(r)})`}function Ss(e,o,t,r,a){return Ho((e*o*(1-r)+t*r)/a)}function me(e,o){Array.isArray(e)||(e=gt(e)),Array.isArray(o)||(o=gt(o));let t=e[3],r=o[3],a=Ha(t+r-t*r);return hs(Ss(e[0],t,o[0],r,a),Ss(e[1],t,o[1],r,a),Ss(e[2],t,o[2],r,a),a)}function J(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:gt(e);return o.alpha?hs(t,r,a,o.alpha):hs(t,r,a,l)}function ur(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:gt(e),{lightness:n=1,alpha:i=1}=o;return xc([t*n,r*n,a*n,l*i])}function Ha(e){let o=Math.round(Number(e)*100)/100;return o>1?1:o<0?0:o}function Ho(e){let o=Math.round(Number(e));return o>255?255:o<0?0:o}function xc(e){let[o,t,r]=e;return 3 in e?`rgba(${Ho(o)}, ${Ho(t)}, ${Ho(r)}, ${Ha(e[3])})`:`rgba(${Ho(o)}, ${Ho(t)}, ${Ho(r)}, 1)`}function gs(e=8){return Math.random().toString(16).slice(2,2+e)}function ws(e,o){let t=[];for(let r=0;rRe(t,...o));else return e(...o)}var Wa=(e,...o)=>typeof e=="function"?e(...o):typeof e=="string"?Na(e):typeof e=="number"?Na(String(e)):null;var kM=new Set;function li(e,o){console.error(`[naive/${e}]: ${o}`)}function ni(e,o){throw new Error(`[naive/${e}]: ${o}`)}function Va(e){return typeof e=="string"?`s-${e}`:`n-${e}`}function lo(e){return e}function Dl(e){return e.some(o=>La(o)?!(o.type===$o||o.type===Co&&!Dl(o.children)):!0)?e:null}function Ut(e,o){return e&&Dl(e())||o()}function ii(e,o,t){return e&&Dl(e(o))||t(o)}function Kt(e,o){let t=e&&Dl(e());return o(t||null)}function di(e){return!(e&&Dl(e()))}function Pl(e){return e.replace(/#|\(|\)|,|\s/g,"_")}function fO(e){let o=0;for(let t=0;t{let a=fO(r);if(a){if(a===1){e.forEach(n=>{t.push(r.replace("&",n))});return}}else{e.forEach(n=>{t.push((n&&n+" ")+r)});return}let l=[r];for(;a--;){let n=[];l.forEach(i=>{e.forEach(d=>{n.push(i.replace("&",d))})}),l=n}l.forEach(n=>t.push(n))}),t}function cO(e,o){let t=[];return o.split(hc).forEach(r=>{e.forEach(a=>{t.push((a&&a+" ")+r)})}),t}function Sc(e){let o=[""];return e.forEach(t=>{t=t&&t.trim(),!!t&&(t.includes("&")?o=mO(o,t):o=cO(o,t))}),o.join(", ").replace(pO," ")}function Ts(e){if(!e)return;let o=e.parentElement;o&&o.removeChild(e)}function fa(e){return document.querySelector(`style[cssr-id="${e}"]`)}function gc(e){let o=document.createElement("style");return o.setAttribute("cssr-id",e),o}function Ml(e){return e?/^\s*@(s|m)/.test(e):!1}var xO=/[A-Z]/g;function wc(e){return e.replace(xO,o=>"-"+o.toLowerCase())}function hO(e,o=" "){return typeof e=="object"&&e!==null?` { +`+Object.entries(e).map(t=>o+` ${wc(t[0])}: ${t[1]};`).join(` `)+` -`+o+"}":`: ${e};`}function hO(e,o,t){return typeof e=="function"?e({context:o.context,props:t}):e}function wc(e,o,t,r){if(!o)return"";let a=hO(o,t,r);if(!a)return"";if(typeof a=="string")return`${e} { +`+o+"}":`: ${e};`}function SO(e,o,t){return typeof e=="function"?e({context:o.context,props:t}):e}function Tc(e,o,t,r){if(!o)return"";let a=SO(o,t,r);if(!a)return"";if(typeof a=="string")return`${e} { ${a} }`;let l=Object.keys(a);if(l.length===0)return t.config.keepEmptyBlock?e+` { }`:"";let n=e?[e+" {"]:[];return l.forEach(i=>{let d=a[i];if(i==="raw"){n.push(` `+d+` -`);return}i=gc(i),d!=null&&n.push(` ${i}${xO(d)}`)}),e&&n.push("}"),n.join(` -`)}function Rs(e,o,t){!e||e.forEach(r=>{if(Array.isArray(r))Rs(r,o,t);else if(typeof r=="function"){let a=r(o);Array.isArray(a)?Rs(a,o,t):a&&t(a)}else r&&t(r)})}function Tc(e,o,t,r,a,l){let n=e.$,i="";if(!n||typeof n=="string")Ml(n)?i=n:o.push(n);else if(typeof n=="function"){let u=n({context:r.context,props:a});Ml(u)?i=u:o.push(u)}else if(n.before&&n.before(r.context),!n.$||typeof n.$=="string")Ml(n.$)?i=n.$:o.push(n.$);else if(n.$){let u=n.$({context:r.context,props:a});Ml(u)?i=u:o.push(u)}let d=hc(o),s=wc(d,e.props,r,a);i?(t.push(`${i} {`),l&&s&&l.insertRule(`${i} { +`);return}i=wc(i),d!=null&&n.push(` ${i}${hO(d)}`)}),e&&n.push("}"),n.join(` +`)}function Rs(e,o,t){!e||e.forEach(r=>{if(Array.isArray(r))Rs(r,o,t);else if(typeof r=="function"){let a=r(o);Array.isArray(a)?Rs(a,o,t):a&&t(a)}else r&&t(r)})}function Rc(e,o,t,r,a,l){let n=e.$,i="";if(!n||typeof n=="string")Ml(n)?i=n:o.push(n);else if(typeof n=="function"){let u=n({context:r.context,props:a});Ml(u)?i=u:o.push(u)}else if(n.before&&n.before(r.context),!n.$||typeof n.$=="string")Ml(n.$)?i=n.$:o.push(n.$);else if(n.$){let u=n.$({context:r.context,props:a});Ml(u)?i=u:o.push(u)}let d=Sc(o),s=Tc(d,e.props,r,a);i?(t.push(`${i} {`),l&&s&&l.insertRule(`${i} { ${s} } -`)):(l&&s&&l.insertRule(s),!l&&s.length&&t.push(s)),e.children&&Rs(e.children,{context:r.context,props:a},u=>{if(typeof u=="string"){let f=wc(d,{raw:u},r,a);l?l.insertRule(f):t.push(f)}else Tc(u,o,t,r,a,l)}),o.pop(),i&&t.push("}"),n&&n.after&&n.after(r.context)}function ui(e,o,t,r=!1){let a=[];return Tc(e,[],a,o,t,r?e.instance.__styleSheet:void 0),r?"":a.join(` +`)):(l&&s&&l.insertRule(s),!l&&s.length&&t.push(s)),e.children&&Rs(e.children,{context:r.context,props:a},u=>{if(typeof u=="string"){let f=Tc(d,{raw:u},r,a);l?l.insertRule(f):t.push(f)}else Rc(u,o,t,r,a,l)}),o.pop(),i&&t.push("}"),n&&n.after&&n.after(r.context)}function si(e,o,t,r=!1){let a=[];return Rc(e,[],a,o,t,r?e.instance.__styleSheet:void 0),r?"":a.join(` -`)}function SO(e){for(var o=0,t,r=0,a=e.length;a>=4;++r,a-=4)t=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,t=(t&65535)*1540483477+((t>>>16)*59797<<16),t^=t>>>24,o=(t&65535)*1540483477+((t>>>16)*59797<<16)^(o&65535)*1540483477+((o>>>16)*59797<<16);switch(a){case 3:o^=(e.charCodeAt(r+2)&255)<<16;case 2:o^=(e.charCodeAt(r+1)&255)<<8;case 1:o^=e.charCodeAt(r)&255,o=(o&65535)*1540483477+((o>>>16)*59797<<16)}return o^=o>>>13,o=(o&65535)*1540483477+((o>>>16)*59797<<16),((o^o>>>15)>>>0).toString(36)}var st=SO;typeof window!="undefined"&&(window.__cssrContext={});function Rc(e,o,t){let{els:r}=o;if(t===void 0)r.forEach(Ts),o.els=[];else{let a=sa(t);a&&r.includes(a)&&(Ts(a),o.els=r.filter(l=>l!==a))}}function Fc(e,o){e.push(o)}function Oc(e,o,t,r,a,l,n,i,d){if(l&&!d){if(t===void 0){console.error("[css-render/mount]: `id` is required in `silent` mode.");return}let m=window.__cssrContext;m[t]||(m[t]=!0,ui(o,e,r,l));return}let s;if(t===void 0&&(s=o.render(r),t=st(s)),d){d.adapter(t,s!=null?s:o.render(r));return}let u=sa(t);if(u!==null&&!n)return u;let f=u!=null?u:Sc(t);if(s===void 0&&(s=o.render(r)),f.textContent=s,u!==null)return u;if(i){let m=document.head.querySelector(`meta[name="${i}"]`);if(m)return document.head.insertBefore(f,m),Fc(o.els,f),f}return a?document.head.insertBefore(f,document.head.querySelector("style, link")):document.head.appendChild(f),Fc(o.els,f),f}function gO(e){return ui(this,this.instance,e)}function wO(e={}){let{id:o,ssr:t,props:r,head:a=!1,silent:l=!1,force:n=!1,anchorMetaName:i}=e;return Oc(this.instance,this,o,r,a,l,n,i,t)}function TO(e={}){let{id:o}=e;Rc(this.instance,this,o)}var fi=function(e,o,t,r){return{instance:e,$:o,props:t,children:r,els:[],render:gO,mount:wO,unmount:TO}},Cc=function(e,o,t,r){return Array.isArray(o)?fi(e,{$:null},null,o):Array.isArray(t)?fi(e,o,null,t):Array.isArray(r)?fi(e,o,t,r):fi(e,o,t,null)};function pi(e={}){let o=null,t={c:(...r)=>Cc(t,...r),use:(r,...a)=>r.install(t,...a),find:sa,context:{},config:e,get __styleSheet(){if(!o){let r=document.createElement("style");return document.head.appendChild(r),o=document.styleSheets[document.styleSheets.length-1],o}return o}};return t}function Fs(e,o){if(e===void 0)return!1;if(o){let{context:{ids:t}}=o;return t.has(e)}return sa(e)!==null}var bc=pi;function RO(e){let o=".",t="__",r="--",a;if(e){let c=e.blockPrefix;c&&(o=c),c=e.elementPrefix,c&&(t=c),c=e.modifierPrefix,c&&(r=c)}let l={install(c){a=c.c;let T=c.context;T.bem={},T.bem.b=null,T.bem.els=null}};function n(c){let T,C;return{before(g){T=g.bem.b,C=g.bem.els,g.bem.els=null},after(g){g.bem.b=T,g.bem.els=C},$({context:g,props:k}){return c=typeof c=="string"?c:c({context:g,props:k}),g.bem.b=c,`${(k==null?void 0:k.bPrefix)||o}${g.bem.b}`}}}function i(c){let T;return{before(C){T=C.bem.els},after(C){C.bem.els=T},$({context:C,props:g}){return c=typeof c=="string"?c:c({context:C,props:g}),C.bem.els=c.split(",").map(k=>k.trim()),C.bem.els.map(k=>`${(g==null?void 0:g.bPrefix)||o}${C.bem.b}${t}${k}`).join(", ")}}}function d(c){return{$({context:T,props:C}){c=typeof c=="string"?c:c({context:T,props:C});let g=c.split(",").map(F=>F.trim());function k(F){return g.map(w=>`&${(C==null?void 0:C.bPrefix)||o}${T.bem.b}${F!==void 0?`${t}${F}`:""}${r}${w}`).join(", ")}let U=T.bem.els;return U!==null?k(U[0]):k()}}}function s(c){return{$({context:T,props:C}){c=typeof c=="string"?c:c({context:T,props:C});let g=T.bem.els;return`&:not(${(C==null?void 0:C.bPrefix)||o}${T.bem.b}${g!==null&&g.length>0?`${t}${g[0]}`:""}${r}${c})`}}}return Object.assign(l,{cB:(...c)=>a(n(c[0]),c[1],c[2]),cE:(...c)=>a(i(c[0]),c[1],c[2]),cM:(...c)=>a(d(c[0]),c[1],c[2]),cNotM:(...c)=>a(s(c[0]),c[1],c[2])}),l}var yc=RO;function Ae(e,o){return e+(o==="default"?"":o.replace(/^[a-z]/,t=>t.toUpperCase()))}Ae("abc","def");var FO="n",Bl=`.${FO}-`,OO="__",CO="--",vc=bc(),kc=yc({blockPrefix:Bl,elementPrefix:OO,modifierPrefix:CO});vc.use(kc);var{c:X,find:SB}=vc,{cB:K,cE:J,cM:Se,cNotM:rt}=kc;function mi(e){return X(({props:{bPrefix:o}})=>`${o||Bl}modal, ${o||Bl}drawer`,[e])}function ci(e){return X(({props:{bPrefix:o}})=>`${o||Bl}popover:not(${o||Bl}tooltip)`,[e])}function xi(e){let o=Z(!!e.value);if(o.value)return Or(o);let t=Xe(e,r=>{r&&(o.value=!0,t())});return Or(o)}function bO(e){let o=z(e),t=Z(o.value);return Xe(o,r=>{t.value=r}),typeof e=="function"?t:{__v_isRef:!0,get value(){return t.value},set value(r){e.set(r)}}}var Je=bO;var Ac=typeof window!="undefined";var Wa,Ll,yO=()=>{var e,o;Wa=Ac?(o=(e=document)===null||e===void 0?void 0:e.fonts)===null||o===void 0?void 0:o.ready:void 0,Ll=!1,Wa!==void 0?Wa.then(()=>{Ll=!0}):Ll=!0};yO();function hi(e){if(Ll)return;let o=!1;mo(()=>{Ll||Wa==null||Wa.then(()=>{o||e()})}),_o(()=>{o=!0})}var vO={mousemoveoutside:new WeakMap,clickoutside:new WeakMap};function kO(e,o,t){if(e==="mousemoveoutside"){let r=a=>{o.contains(a.target)||t(a)};return{mousemove:r,touchstart:r}}else if(e==="clickoutside"){let r=!1,a=n=>{r=!o.contains(n.target)},l=n=>{!r||o.contains(n.target)||t(n)};return{mousedown:a,mouseup:l,touchstart:a,touchend:l}}return console.error(`[evtd/create-trap-handler]: name \`${e}\` is invalid. This could be a bug of evtd.`),{}}function Dc(e,o,t){let r=vO[e],a=r.get(o);a===void 0&&r.set(o,a=new WeakMap);let l=a.get(t);return l===void 0&&a.set(t,l=kO(e,o,t)),l}function Pc(e,o,t,r){if(e==="mousemoveoutside"||e==="clickoutside"){let a=Dc(e,o,t);return Object.keys(a).forEach(l=>{go(l,document,a[l],r)}),!0}return!1}function Mc(e,o,t,r){if(e==="mousemoveoutside"||e==="clickoutside"){let a=Dc(e,o,t);return Object.keys(a).forEach(l=>{So(l,document,a[l],r)}),!0}return!1}function AO(){if(typeof window=="undefined")return{on:()=>{},off:()=>{}};let e=new WeakMap,o=new WeakMap;function t(){e.set(this,!0)}function r(){e.set(this,!0),o.set(this,!0)}function a(S,O,L){let b=S[O];return S[O]=function(){return L.apply(S,arguments),b.apply(S,arguments)},S}function l(S,O){S[O]=Event.prototype[O]}let n=new WeakMap,i=Object.getOwnPropertyDescriptor(Event.prototype,"currentTarget");function d(){var S;return(S=n.get(this))!==null&&S!==void 0?S:null}function s(S,O){i!==void 0&&Object.defineProperty(S,"currentTarget",{configurable:!0,enumerable:!0,get:O!=null?O:i.get})}let u={bubble:{},capture:{}},f={};function m(){let S=function(O){let{type:L,eventPhase:b,target:W,bubbles:B}=O;if(b===2)return;let ne=b===1?"capture":"bubble",ge=W,Pe=[];for(;ge===null&&(ge=window),Pe.push(ge),ge!==window;)ge=ge.parentNode||null;let ue=u.capture[L],se=u.bubble[L];if(a(O,"stopPropagation",t),a(O,"stopImmediatePropagation",r),s(O,d),ne==="capture"){if(ue===void 0)return;for(let Te=Pe.length-1;Te>=0&&!e.has(O);--Te){let je=Pe[Te],Ge=ue.get(je);if(Ge!==void 0){n.set(O,je);for(let ze of Ge){if(o.has(O))break;ze(O)}}if(Te===0&&!B&&se!==void 0){let ze=se.get(je);if(ze!==void 0)for(let Ze of ze){if(o.has(O))break;Ze(O)}}}}else if(ne==="bubble"){if(se===void 0)return;for(let Te=0;TeB(O))};return S.displayName="evtdUnifiedWindowEventHandler",S}let c=m(),T=p();function C(S,O){let L=u[S];return L[O]===void 0&&(L[O]=new Map,window.addEventListener(O,c,S==="capture")),L[O]}function g(S){return f[S]===void 0&&(f[S]=new Set,window.addEventListener(S,T)),f[S]}function k(S,O){let L=S.get(O);return L===void 0&&S.set(O,L=new Set),L}function U(S,O,L,b){let W=u[O][L];if(W!==void 0){let B=W.get(S);if(B!==void 0&&B.has(b))return!0}return!1}function F(S,O){let L=f[S];return!!(L!==void 0&&L.has(O))}function w(S,O,L,b){let W;if(typeof b=="object"&&b.once===!0?W=ue=>{y(S,O,W,b),L(ue)}:W=L,Pc(S,O,W,b))return;let ne=b===!0||typeof b=="object"&&b.capture===!0?"capture":"bubble",ge=C(ne,S),Pe=k(ge,O);if(Pe.has(W)||Pe.add(W),O===window){let ue=g(S);ue.has(W)||ue.add(W)}}function y(S,O,L,b){if(Mc(S,O,L,b))return;let B=b===!0||typeof b=="object"&&b.capture===!0,ne=B?"capture":"bubble",ge=C(ne,S),Pe=k(ge,O);if(O===window&&!U(O,B?"bubble":"capture",S,L)&&F(S,L)){let se=f[S];se.delete(L),se.size===0&&(window.removeEventListener(S,T),f[S]=void 0)}Pe.has(L)&&Pe.delete(L),Pe.size===0&&ge.delete(O),ge.size===0&&(window.removeEventListener(S,c,ne==="capture"),u[ne][S]=void 0)}return{on:w,off:y}}var{on:go,off:So}=AO();function Zo(e,o){return Xe(e,t=>{t!==void 0&&(o.value=t)}),z(()=>e.value===void 0?o.value:e.value)}function Br(){let e=Z(!1);return mo(()=>{e.value=!0}),Or(e)}var DO=(typeof window=="undefined"?!1:/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)&&!window.MSStream;function Si(){return DO}var qB=no("n-internal-select-menu"),Bc=no("n-internal-select-menu-body");var Lc=no("n-modal-body"),YB=no("n-modal");var Ec=no("n-drawer-body"),eL=no("n-drawer");var Nc=no("n-popover-body");var _c="__disabled__";function ua(e){let o=Re(Lc,null),t=Re(Ec,null),r=Re(Nc,null),a=Re(Bc,null),l=Z();if(typeof document!="undefined"){l.value=document.fullscreenElement;let n=()=>{l.value=document.fullscreenElement};mo(()=>{go("fullscreenchange",document,n)}),_o(()=>{So("fullscreenchange",document,n)})}return Je(()=>{var n;let{to:i}=e;return i!==void 0?i===!1?_c:i===!0?l.value||"body":i:(o==null?void 0:o.value)?(n=o.value.$el)!==null&&n!==void 0?n:o.value:(t==null?void 0:t.value)?t.value:(r==null?void 0:r.value)?r.value:(a==null?void 0:a.value)?a.value:i!=null?i:l.value||"body"})}ua.tdkey=_c;ua.propTo={type:[String,Object,Boolean],default:void 0};function El(e,o,t="default"){let r=o[t];if(r===void 0)throw new Error(`[vueuc/${e}]: slot[${t}] is empty.`);return r()}function Os(e,o=!0,t=[]){return e.forEach(r=>{if(r!==null){if(typeof r!="object"){(typeof r=="string"||typeof r=="number")&&t.push(La(String(r)));return}if(Array.isArray(r)){Os(r,o,t);return}if(r.type===bo){if(r.children===null)return;Array.isArray(r.children)&&Os(r.children,o,t)}else r.type!==$o&&t.push(r)}}),t}function Cs(e,o,t="default"){let r=o[t];if(r===void 0)throw new Error(`[vueuc/${e}]: slot[${t}] is empty.`);let a=Os(r());if(a.length===1)return a[0];throw new Error(`[vueuc/${e}]: slot[${t}] should have exactly one child.`)}var Lr=null;function Ic(){if(Lr===null&&(Lr=document.getElementById("v-binder-view-measurer"),Lr===null)){Lr=document.createElement("div"),Lr.id="v-binder-view-measurer";let{style:e}=Lr;e.position="fixed",e.left="0",e.right="0",e.top="0",e.bottom="0",e.pointerEvents="none",e.visibility="hidden",document.body.appendChild(Lr)}return Lr.getBoundingClientRect()}function Hc(e,o){let t=Ic();return{top:o,left:e,height:0,width:0,right:t.width-e,bottom:t.height-o}}function gi(e){let o=e.getBoundingClientRect(),t=Ic();return{left:o.left-t.left,top:o.top-t.top,bottom:t.height+t.top-o.bottom,right:t.width+t.left-o.right,width:o.width,height:o.height}}function PO(e){return e.nodeType===9?null:e.parentNode}function bs(e){if(e===null)return null;let o=PO(e);if(o===null)return null;if(o.nodeType===9)return document;if(o.nodeType===1){let{overflow:t,overflowX:r,overflowY:a}=getComputedStyle(o);if(/(auto|scroll|overlay)/.test(t+a+r))return o}return bs(o)}var MO=ie({name:"Binder",props:{syncTargetWithParent:Boolean,syncTarget:{type:Boolean,default:!0}},setup(e){var o;qo("VBinder",(o=ht())===null||o===void 0?void 0:o.proxy);let t=Re("VBinder",null),r=Z(null),a=g=>{r.value=g,t&&e.syncTargetWithParent&&t.setTargetRef(g)},l=[],n=()=>{let g=r.value;for(;g=bs(g),g!==null;)l.push(g);for(let k of l)go("scroll",k,f,!0)},i=()=>{for(let g of l)So("scroll",g,f,!0);l=[]},d=new Set,s=g=>{d.size===0&&n(),d.has(g)||d.add(g)},u=g=>{d.has(g)&&d.delete(g),d.size===0&&i()},f=()=>{Al(m)},m=()=>{d.forEach(g=>g())},p=new Set,c=g=>{p.size===0&&go("resize",window,C),p.has(g)||p.add(g)},T=g=>{p.has(g)&&p.delete(g),p.size===0&&So("resize",window,C)},C=()=>{p.forEach(g=>g())};return _o(()=>{So("resize",window,C),i()}),{targetRef:r,setTargetRef:a,addScrollListener:s,removeScrollListener:u,addResizeListener:c,removeResizeListener:T}},render(){return El("binder",this.$slots)}}),wi=MO;var Ti=ie({name:"Target",setup(){let{setTargetRef:e,syncTarget:o}=Re("VBinder");return{syncTarget:o,setTargetDirective:{mounted:e,updated:e}}},render(){let{syncTarget:e,setTargetDirective:o}=this;return e?qn(Cs("follower",this.$slots),[[o]]):Cs("follower",this.$slots)}});var CL=new Set;function Wc(e,o){console.error(`[vdirs/${e}]: ${o}`)}var Vc=class{constructor(){this.elementZIndex=new Map,this.nextZIndex=2e3}get elementCount(){return this.elementZIndex.size}ensureZIndex(o,t){let{elementZIndex:r}=this;if(t!==void 0){o.style.zIndex=`${t}`,r.delete(o);return}let{nextZIndex:a}=this;r.has(o)&&r.get(o)+1===this.nextZIndex||(o.style.zIndex=`${a}`,r.set(o,a),this.nextZIndex=a+1,this.squashState())}unregister(o,t){let{elementZIndex:r}=this;r.has(o)?r.delete(o):t===void 0&&Wc("z-index-manager/unregister-element","Element not found when unregistering."),this.squashState()}squashState(){let{elementCount:o}=this;o||(this.nextZIndex=2e3),this.nextZIndex-o>2500&&this.rearrange()}rearrange(){let o=Array.from(this.elementZIndex.entries());o.sort((t,r)=>t[1]-r[1]),this.nextZIndex=2e3,o.forEach(t=>{let r=t[0],a=this.nextZIndex++;`${a}`!==r.style.zIndex&&(r.style.zIndex=`${a}`)})}},Ri=new Vc;var Va="@@ziContext",BO={mounted(e,o){let{value:t={}}=o,{zIndex:r,enabled:a}=t;e[Va]={enabled:!!a,initialized:!1},a&&(Ri.ensureZIndex(e,r),e[Va].initialized=!0)},updated(e,o){let{value:t={}}=o,{zIndex:r,enabled:a}=t,l=e[Va].enabled;a&&!l&&(Ri.ensureZIndex(e,r),e[Va].initialized=!0),e[Va].enabled=!!a},unmounted(e,o){if(!e[Va].initialized)return;let{value:t={}}=o,{zIndex:r}=t;Ri.unregister(e,r)}},ys=BO;var zc=Symbol("@css-render/vue3-ssr");function LO(e,o){return``}function EO(e,o){let t=Re(zc,null);if(t===null){console.error("[css-render/vue3-ssr]: no ssr context found.");return}let{styles:r,ids:a}=t;a.has(e)||r!==null&&(a.add(e),r.push(LO(e,o)))}function gt(){let e=Re(zc,null);if(e!==null)return{adapter:EO,context:e}}function Fi(e,o){console.error(`[vueuc/${e}]: ${o}`)}var{c:Gt}=pi();var Nl="vueuc-style";function jc(e){return e&-e}var Oi=class{constructor(o,t){this.l=o,this.min=t;let r=new Array(o+1);for(let a=0;aa)throw new Error("[FinweckTree.sum]: `i` is larger than length.");let l=o*r;for(;o>0;)l+=t[o],o-=jc(o);return l}getBound(o){let t=0,r=this.l;for(;r>t;){let a=Math.floor((t+r)/2),l=this.sum(a);if(l>o){r=a;continue}else if(l{let{to:o}=e;return o!=null?o:"body"})}},render(){return this.showTeleport?this.disabled?El("lazy-teleport",this.$slots):R(Em,{disabled:this.disabled,to:this.mergedTo},El("lazy-teleport",this.$slots)):null}});var Ci={top:"bottom",bottom:"top",left:"right",right:"left"},Uc={start:"end",center:"center",end:"start"},vs={top:"height",bottom:"height",left:"width",right:"width"},NO={"bottom-start":"top left",bottom:"top center","bottom-end":"top right","top-start":"bottom left",top:"bottom center","top-end":"bottom right","right-start":"top left",right:"center left","right-end":"bottom left","left-start":"top right",left:"center right","left-end":"bottom right"},_O={"bottom-start":"bottom left",bottom:"bottom center","bottom-end":"bottom right","top-start":"top left",top:"top center","top-end":"top right","right-start":"top right",right:"center right","right-end":"bottom right","left-start":"top left",left:"center left","left-end":"bottom left"},IO={"bottom-start":"right","bottom-end":"left","top-start":"right","top-end":"left","right-start":"bottom","right-end":"top","left-start":"bottom","left-end":"top"},Kc={top:!0,bottom:!1,left:!0,right:!1},Gc={top:"end",bottom:"start",left:"end",right:"start"};function qc(e,o,t,r,a,l){if(!a||l)return{placement:e,top:0,left:0};let[n,i]=e.split("-"),d=i!=null?i:"center",s={top:0,left:0},u=(p,c,T)=>{let C=0,g=0,k=t[p]-o[c]-o[p];return k>0&&r&&(T?g=Kc[c]?k:-k:C=Kc[c]?k:-k),{left:C,top:g}},f=n==="left"||n==="right";if(d!=="center"){let p=IO[e],c=Ci[p],T=vs[p];if(t[T]>o[T]){if(o[p]+o[T]o[c]&&(d=Uc[i])}else{let p=n==="bottom"||n==="top"?"left":"top",c=Ci[p],T=vs[p],C=(t[T]-o[T])/2;(o[p]o[c]?(d=Gc[p],s=u(T,p,f)):(d=Gc[c],s=u(T,c,f)))}let m=n;return o[n] *",{pointerEvents:"all"})])]),bi=ie({name:"Follower",inheritAttrs:!1,props:{show:Boolean,enabled:{type:Boolean,default:void 0},placement:{type:String,default:"bottom"},syncTrigger:{type:Array,default:["resize","scroll"]},to:[String,Object],flip:{type:Boolean,default:!0},internalShift:Boolean,x:Number,y:Number,width:String,minWidth:String,containerClass:String,teleportDisabled:Boolean,zindexable:{type:Boolean,default:!0},zIndex:Number,overlap:Boolean},setup(e){let o=Re("VBinder"),t=Je(()=>e.enabled!==void 0?e.enabled:e.show),r=Z(null),a=Z(null),l=()=>{let{syncTrigger:m}=e;m.includes("scroll")&&o.addScrollListener(d),m.includes("resize")&&o.addResizeListener(d)},n=()=>{o.removeScrollListener(d),o.removeResizeListener(d)};mo(()=>{t.value&&(d(),l())});let i=gt();HO.mount({id:"vueuc/binder",head:!0,anchorMetaName:Nl,ssr:i}),_o(()=>{n()}),hi(()=>{t.value&&d()});let d=()=>{if(!t.value)return;let m=r.value;if(m===null)return;let p=o.targetRef,{x:c,y:T,overlap:C}=e,g=c!==void 0&&T!==void 0?Hc(c,T):gi(p);m.style.setProperty("--v-target-width",`${Math.round(g.width)}px`),m.style.setProperty("--v-target-height",`${Math.round(g.height)}px`);let{width:k,minWidth:U,placement:F,internalShift:w,flip:y}=e;m.setAttribute("v-placement",F),C?m.setAttribute("v-overlap",""):m.removeAttribute("v-overlap");let{style:S}=m;k==="target"?S.width=`${g.width}px`:k!==void 0?S.width=k:S.width="",U==="target"?S.minWidth=`${g.width}px`:U!==void 0?S.minWidth=U:S.minWidth="";let O=gi(m),L=gi(a.value),{left:b,top:W,placement:B}=qc(F,g,O,w,y,C),ne=Qc(B,C),{left:ge,top:Pe,transform:ue}=Zc(B,L,g,W,b,C);m.setAttribute("v-placement",B),m.style.setProperty("--v-offset-left",`${Math.round(b)}px`),m.style.setProperty("--v-offset-top",`${Math.round(W)}px`),m.style.transform=`translateX(${ge}) translateY(${Pe}) ${ue}`,m.style.transformOrigin=ne};Xe(t,m=>{m?(l(),s()):n()});let s=()=>{No().then(d).catch(m=>console.error(m))};["placement","x","y","internalShift","flip","width","overlap","minWidth"].forEach(m=>{Xe(Be(e,m),d)}),["teleportDisabled"].forEach(m=>{Xe(Be(e,m),s)}),Xe(Be(e,"syncTrigger"),m=>{m.includes("resize")?o.addResizeListener(d):o.removeResizeListener(d),m.includes("scroll")?o.addScrollListener(d):o.removeScrollListener(d)});let u=Br(),f=Je(()=>{let{to:m}=e;if(m!==void 0)return m;!u.value});return{VBinder:o,mergedEnabled:t,offsetContainerRef:a,followerRef:r,mergedTo:f,syncPosition:d}},render(){return R($c,{show:this.show,to:this.mergedTo,disabled:this.teleportDisabled},{default:()=>{var e,o;let t=R("div",{class:["v-binder-follower-container",this.containerClass],ref:"offsetContainerRef"},[R("div",{class:"v-binder-follower-content",ref:"followerRef"},(o=(e=this.$slots).default)===null||o===void 0?void 0:o.call(e))]);return this.zindexable?qn(t,[[ys,{enabled:this.mergedEnabled,zIndex:this.zIndex}]]):t}})}});var wt=[];var Yc=function(){return wt.some(function(e){return e.activeTargets.length>0})};var Xc=function(){return wt.some(function(e){return e.skippedTargets.length>0})};var Jc="ResizeObserver loop completed with undelivered notifications.",ex=function(){var e;typeof ErrorEvent=="function"?e=new ErrorEvent("error",{message:Jc}):(e=document.createEvent("Event"),e.initEvent("error",!1,!1),e.message=Jc),window.dispatchEvent(e)};var fa;(function(e){e.BORDER_BOX="border-box",e.CONTENT_BOX="content-box",e.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(fa||(fa={}));var kt=function(e){return Object.freeze(e)};var ks=function(){function e(o,t){this.inlineSize=o,this.blockSize=t,kt(this)}return e}();var As=function(){function e(o,t,r,a){return this.x=o,this.y=t,this.width=r,this.height=a,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,kt(this)}return e.prototype.toJSON=function(){var o=this,t=o.x,r=o.y,a=o.top,l=o.right,n=o.bottom,i=o.left,d=o.width,s=o.height;return{x:t,y:r,top:a,right:l,bottom:n,left:i,width:d,height:s}},e.fromRect=function(o){return new e(o.x,o.y,o.width,o.height)},e}();var _l=function(e){return e instanceof SVGElement&&"getBBox"in e},yi=function(e){if(_l(e)){var o=e.getBBox(),t=o.width,r=o.height;return!t&&!r}var a=e,l=a.offsetWidth,n=a.offsetHeight;return!(l||n||e.getClientRects().length)},Ds=function(e){var o,t;if(e instanceof Element)return!0;var r=(t=(o=e)===null||o===void 0?void 0:o.ownerDocument)===null||t===void 0?void 0:t.defaultView;return!!(r&&e instanceof r.Element)},ox=function(e){switch(e.tagName){case"INPUT":if(e.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1};var pa=typeof window!="undefined"?window:{};var vi=new WeakMap,tx=/auto|scroll/,WO=/^tb|vertical/,VO=/msie|trident/i.test(pa.navigator&&pa.navigator.userAgent),qt=function(e){return parseFloat(e||"0")},za=function(e,o,t){return e===void 0&&(e=0),o===void 0&&(o=0),t===void 0&&(t=!1),new ks((t?o:e)||0,(t?e:o)||0)},rx=kt({devicePixelContentBoxSize:za(),borderBoxSize:za(),contentBoxSize:za(),contentRect:new As(0,0,0,0)}),Ps=function(e,o){if(o===void 0&&(o=!1),vi.has(e)&&!o)return vi.get(e);if(yi(e))return vi.set(e,rx),rx;var t=getComputedStyle(e),r=_l(e)&&e.ownerSVGElement&&e.getBBox(),a=!VO&&t.boxSizing==="border-box",l=WO.test(t.writingMode||""),n=!r&&tx.test(t.overflowY||""),i=!r&&tx.test(t.overflowX||""),d=r?0:qt(t.paddingTop),s=r?0:qt(t.paddingRight),u=r?0:qt(t.paddingBottom),f=r?0:qt(t.paddingLeft),m=r?0:qt(t.borderTopWidth),p=r?0:qt(t.borderRightWidth),c=r?0:qt(t.borderBottomWidth),T=r?0:qt(t.borderLeftWidth),C=f+s,g=d+u,k=T+p,U=m+c,F=i?e.offsetHeight-U-e.clientHeight:0,w=n?e.offsetWidth-k-e.clientWidth:0,y=a?C+k:0,S=a?g+U:0,O=r?r.width:qt(t.width)-y-w,L=r?r.height:qt(t.height)-S-F,b=O+C+w+k,W=L+g+F+U,B=kt({devicePixelContentBoxSize:za(Math.round(O*devicePixelRatio),Math.round(L*devicePixelRatio),l),borderBoxSize:za(b,W,l),contentBoxSize:za(O,L,l),contentRect:new As(f,d,O,L)});return vi.set(e,B),B},ki=function(e,o,t){var r=Ps(e,t),a=r.borderBoxSize,l=r.contentBoxSize,n=r.devicePixelContentBoxSize;switch(o){case fa.DEVICE_PIXEL_CONTENT_BOX:return n;case fa.BORDER_BOX:return a;default:return l}};var Ms=function(){function e(o){var t=Ps(o);this.target=o,this.contentRect=t.contentRect,this.borderBoxSize=kt([t.borderBoxSize]),this.contentBoxSize=kt([t.contentBoxSize]),this.devicePixelContentBoxSize=kt([t.devicePixelContentBoxSize])}return e}();var Ai=function(e){if(yi(e))return 1/0;for(var o=0,t=e.parentNode;t;)o+=1,t=t.parentNode;return o};var ax=function(){var e=1/0,o=[];wt.forEach(function(n){if(n.activeTargets.length!==0){var i=[];n.activeTargets.forEach(function(s){var u=new Ms(s.target),f=Ai(s.target);i.push(u),s.lastReportedSize=ki(s.target,s.observedBox),fe?t.activeTargets.push(a):t.skippedTargets.push(a))})})};var lx=function(){var e=0;for(Bs(e);Yc();)e=ax(),Bs(e);return Xc()&&ex(),e>0};var Ls,nx=[],zO=function(){return nx.splice(0).forEach(function(e){return e()})},ix=function(e){if(!Ls){var o=0,t=document.createTextNode(""),r={characterData:!0};new MutationObserver(function(){return zO()}).observe(t,r),Ls=function(){t.textContent=""+(o?o--:o++)}}nx.push(e),Ls()};var dx=function(e){ix(function(){requestAnimationFrame(e)})};var Di=0,jO=function(){return!!Di},$O=250,UO={attributes:!0,characterData:!0,childList:!0,subtree:!0},sx=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],ux=function(e){return e===void 0&&(e=0),Date.now()+e},Es=!1,KO=function(){function e(){var o=this;this.stopped=!0,this.listener=function(){return o.schedule()}}return e.prototype.run=function(o){var t=this;if(o===void 0&&(o=$O),!Es){Es=!0;var r=ux(o);dx(function(){var a=!1;try{a=lx()}finally{if(Es=!1,o=r-ux(),!jO())return;a?t.run(1e3):o>0?t.run(o):t.start()}})}},e.prototype.schedule=function(){this.stop(),this.run()},e.prototype.observe=function(){var o=this,t=function(){return o.observer&&o.observer.observe(document.body,UO)};document.body?t():pa.addEventListener("DOMContentLoaded",t)},e.prototype.start=function(){var o=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),sx.forEach(function(t){return pa.addEventListener(t,o.listener,!0)}))},e.prototype.stop=function(){var o=this;this.stopped||(this.observer&&this.observer.disconnect(),sx.forEach(function(t){return pa.removeEventListener(t,o.listener,!0)}),this.stopped=!0)},e}(),Pi=new KO,Ns=function(e){!Di&&e>0&&Pi.start(),Di+=e,!Di&&Pi.stop()};var GO=function(e){return!_l(e)&&!ox(e)&&getComputedStyle(e).display==="inline"},fx=function(){function e(o,t){this.target=o,this.observedBox=t||fa.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return e.prototype.isActive=function(){var o=ki(this.target,this.observedBox,!0);return GO(this.target)&&(this.lastReportedSize=o),this.lastReportedSize.inlineSize!==o.inlineSize||this.lastReportedSize.blockSize!==o.blockSize},e}();var px=function(){function e(o,t){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=o,this.callback=t}return e}();var Mi=new WeakMap,mx=function(e,o){for(var t=0;t=0&&(l&&wt.splice(wt.indexOf(r),1),r.observationTargets.splice(a,1),Ns(-1))},e.disconnect=function(o){var t=this,r=Mi.get(o);r.observationTargets.slice().forEach(function(a){return t.unobserve(o,a.target)}),r.activeTargets.splice(0,r.activeTargets.length)},e}();var _s=function(){function e(o){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof o!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");Il.connect(this,o)}return e.prototype.observe=function(o,t){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ds(o))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");Il.observe(this,o,t)},e.prototype.unobserve=function(o){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ds(o))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");Il.unobserve(this,o)},e.prototype.disconnect=function(){Il.disconnect(this)},e.toString=function(){return"function ResizeObserver () { [polyfill code] }"},e}();var cx=class{constructor(){this.handleResize=this.handleResize.bind(this),this.observer=new _s(this.handleResize),this.elHandlersMap=new Map}handleResize(o){for(let t of o){let r=this.elHandlersMap.get(t.target);r!==void 0&&r(t)}}registerHandler(o,t){this.elHandlersMap.set(o,t),this.observer.observe(o)}unregisterHandler(o){!this.elHandlersMap.has(o)||(this.elHandlersMap.delete(o),this.observer.unobserve(o))}},Bi=new cx;var At=ie({name:"ResizeObserver",props:{onResize:Function},setup(e){return{registered:!1,handleResize(o){let{onResize:t}=e;t!==void 0&&t(o)}}},mounted(){let e=this.$el;if(e===void 0){Fi("resize-observer","$el does not exist.");return}if(e.nextElementSibling!==e.nextSibling&&e.nodeType===3&&e.nodeValue!==""){Fi("resize-observer","$el can not be observed (it may be a text node).");return}e.nextElementSibling!==null&&(Bi.registerHandler(e.nextElementSibling,this.handleResize),this.registered=!0)},beforeUnmount(){this.registered&&Bi.unregisterHandler(this.$el.nextElementSibling)},render(){return Pa(this.$slots,"default")}});var qO=Gt(".v-vl",{maxHeight:"inherit",height:"100%",overflow:"auto",minWidth:"1px"},[Gt("&:not(.v-vl--show-scrollbar)",{scrollbarWidth:"none"},[Gt("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",{width:0,height:0,display:"none"})])]),Hl=ie({name:"VirtualList",inheritAttrs:!1,props:{showScrollbar:{type:Boolean,default:!0},items:{type:Array,default:()=>[]},itemSize:{type:Number,required:!0},itemResizable:Boolean,itemsStyle:[String,Object],visibleItemsTag:{type:[String,Object],default:"div"},visibleItemsProps:Object,ignoreItemResize:Boolean,onScroll:Function,onWheel:Function,onResize:Function,defaultScrollKey:[Number,String],defaultScrollIndex:Number,keyField:{type:String,default:"key"},paddingTop:{type:[Number,String],default:0},paddingBottom:{type:[Number,String],default:0}},setup(e){let o=gt();qO.mount({id:"vueuc/virtual-list",head:!0,anchorMetaName:Nl,ssr:o}),mo(()=>{let{defaultScrollIndex:w,defaultScrollKey:y}=e;w!=null?f({index:w}):y!=null&&f({key:y})}),Qd(()=>{f({top:d.value})});let t=z(()=>{let w=new Map,{keyField:y}=e;return e.items.forEach((S,O)=>{w.set(S[y],O)}),w}),r=Z(null),a=Z(void 0),l=new Map,n=z(()=>{let{items:w,itemSize:y,keyField:S}=e,O=new Oi(w.length,y);return w.forEach((L,b)=>{let W=L[S],B=l.get(W);B!==void 0&&O.add(b,B)}),O}),i=Z(0),d=Z(0),s=Je(()=>Math.max(n.value.getBound(d.value-li(e.paddingTop))-1,0)),u=z(()=>{let{value:w}=a;if(w===void 0)return[];let{items:y,itemSize:S}=e,O=s.value,L=Math.min(O+Math.ceil(w/S+1),y.length-1),b=[];for(let W=O;W<=L;++W)b.push(y[W]);return b}),f=w=>{let{left:y,top:S,index:O,key:L,position:b,behavior:W,debounce:B=!0}=w;if(y!==void 0||S!==void 0)p(y,S,W);else if(O!==void 0)m(O,W,B);else if(L!==void 0){let ne=t.value.get(L);ne!==void 0&&m(ne,W,B)}else b==="bottom"?p(0,Number.MAX_SAFE_INTEGER,W):b==="top"&&p(0,0,W)};function m(w,y,S){let{value:O}=n,L=O.sum(w)+li(e.paddingTop);if(!S)r.value.scrollTo({left:0,top:L,behavior:y});else{let{scrollTop:b,offsetHeight:W}=r.value;if(L>b){let B=O.get(w);L+B<=b+W||r.value.scrollTo({left:0,top:L+B-W,behavior:y})}else r.value.scrollTo({left:0,top:L,behavior:y})}g=w}function p(w,y,S){r.value.scrollTo({left:w,top:y,behavior:S})}function c(w,y){var S,O,L,b;if(e.ignoreItemResize||F(y.target))return;let{value:W}=n,B=t.value.get(w),ne=W.get(B),ge=(L=(O=(S=y.borderBoxSize)===null||S===void 0?void 0:S[0])===null||O===void 0?void 0:O.blockSize)!==null&&L!==void 0?L:y.contentRect.height;if(ge===ne)return;ge-e.itemSize===0?l.delete(w):l.set(w,ge-e.itemSize);let ue=ge-ne;ue!==0&&(k!==void 0&&B<=k&&((b=r.value)===null||b===void 0||b.scrollBy(0,ue)),W.add(B,ue),i.value++)}function T(w){Al(U);let{onScroll:y}=e;y!==void 0&&y(w)}function C(w){if(F(w.target)||w.contentRect.height===a.value)return;a.value=w.contentRect.height;let{onResize:y}=e;y!==void 0&&y(w)}let g,k;function U(){let{value:w}=r;w!=null&&(k=g!=null?g:s.value,g=void 0,d.value=r.value.scrollTop)}function F(w){let y=w;for(;y!==null;){if(y.style.display==="none")return!0;y=y.parentElement}return!1}return{listHeight:a,listStyle:{overflow:"auto"},keyToIndex:t,itemsStyle:z(()=>{let{itemResizable:w}=e,y=Pr(n.value.sum());return i.value,[e.itemsStyle,{boxSizing:"content-box",height:w?"":y,minHeight:w?y:"",paddingTop:Pr(e.paddingTop),paddingBottom:Pr(e.paddingBottom)}]}),visibleItemsStyle:z(()=>(i.value,{transform:`translateY(${Pr(n.value.sum(s.value))})`})),viewportItems:u,listElRef:r,itemsElRef:Z(null),scrollTo:f,handleListResize:C,handleListScroll:T,handleItemResize:c}},render(){let{itemResizable:e,keyField:o,keyToIndex:t,visibleItemsTag:r}=this;return R(At,{onResize:this.handleListResize},{default:()=>{var a,l;return R("div",yl(this.$attrs,{class:["v-vl",this.showScrollbar&&"v-vl--show-scrollbar"],onScroll:this.handleListScroll,onWheel:this.onWheel,ref:"listElRef"}),[this.items.length!==0?R("div",{ref:"itemsElRef",class:"v-vl-items",style:this.itemsStyle},[R(r,Object.assign({class:"v-vl-visible-items",style:this.visibleItemsStyle},this.visibleItemsProps),{default:()=>this.viewportItems.map(n=>{let i=n[o],d=t.get(i),s=this.$slots.default({item:n,index:d})[0];return e?R(At,{key:i,onResize:u=>this.handleItemResize(i,u)},{default:()=>s}):(s.key=i,s)})})]):(l=(a=this.$slots).empty)===null||l===void 0?void 0:l.call(a)])}})}});var xx=no("n-form-item");function Tt(e,{defaultSize:o="medium",mergedSize:t,mergedDisabled:r}={}){let a=Re(xx,null);qo(xx,null);let l=z(t?()=>t(a):()=>{let{size:d}=e;if(d)return d;if(a){let{mergedSize:s}=a;if(s.value!==void 0)return s.value}return o}),n=z(r?()=>r(a):()=>{let{disabled:d}=e;return d!==void 0?d:a?a.disabled.value:!1}),i=z(()=>{let{status:d}=e;return d||(a==null?void 0:a.mergedValidationStatus.value)});return _o(()=>{a&&a.restoreValidation()}),{mergedSizeRef:l,mergedDisabledRef:n,mergedStatusRef:i,nTriggerFormBlur(){a&&a.handleContentBlur()},nTriggerFormChange(){a&&a.handleContentChange()},nTriggerFormFocus(){a&&a.handleContentFocus()},nTriggerFormInput(){a&&a.handleContentInput()}}}var QO=typeof global=="object"&&global&&global.Object===Object&&global,Li=QO;var ZO=typeof self=="object"&&self&&self.Object===Object&&self,YO=Li||ZO||Function("return this")(),Rt=YO;var XO=Rt.Symbol,ur=XO;var hx=Object.prototype,JO=hx.hasOwnProperty,eC=hx.toString,Wl=ur?ur.toStringTag:void 0;function oC(e){var o=JO.call(e,Wl),t=e[Wl];try{e[Wl]=void 0;var r=!0}catch(l){}var a=eC.call(e);return r&&(o?e[Wl]=t:delete e[Wl]),a}var Sx=oC;var tC=Object.prototype,rC=tC.toString;function aC(e){return rC.call(e)}var gx=aC;var lC="[object Null]",nC="[object Undefined]",wx=ur?ur.toStringTag:void 0;function iC(e){return e==null?e===void 0?nC:lC:wx&&wx in Object(e)?Sx(e):gx(e)}var Qt=iC;function dC(e){return e!=null&&typeof e=="object"}var Ft=dC;var sC="[object Symbol]";function uC(e){return typeof e=="symbol"||Ft(e)&&Qt(e)==sC}var Tx=uC;function fC(e,o){for(var t=-1,r=e==null?0:e.length,a=Array(r);++t0){if(++o>=HC)return arguments[0]}else o=0;return e.apply(void 0,arguments)}}var Ex=zC;function jC(e){return function(){return e}}var Nx=jC;var $C=function(){try{var e=$a(Object,"defineProperty");return e({},"",{}),e}catch(o){}}(),Ua=$C;var UC=Ua?function(e,o){return Ua(e,"toString",{configurable:!0,enumerable:!1,value:Nx(o),writable:!0})}:Ei,_x=UC;var KC=Ex(_x),Ix=KC;var GC=9007199254740991,qC=/^(?:0|[1-9]\d*)$/;function QC(e,o){var t=typeof e;return o=o==null?GC:o,!!o&&(t=="number"||t!="symbol"&&qC.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=ab}var Ii=lb;function nb(e){return e!=null&&Ii(e.length)&&!ja(e)}var Ga=nb;function ib(e,o,t){if(!at(t))return!1;var r=typeof o;return(r=="number"?Ga(t)&&_i(o,t.length):r=="string"&&o in t)?Er(t[o],e):!1}var $x=ib;function db(e){return jx(function(o,t){var r=-1,a=t.length,l=a>1?t[a-1]:void 0,n=a>2?t[2]:void 0;for(l=e.length>3&&typeof l=="function"?(a--,l):void 0,n&&$x(t[0],t[1],n)&&(l=a<3?void 0:l,a=1),o=Object(o);++r-1}var ch=Oy;function Cy(e,o){var t=this.__data__,r=Nr(t,e);return r<0?(++this.size,t.push([e,o])):t[r][1]=o,this}var xh=Cy;function Qa(e){var o=-1,t=e==null?0:e.length;for(this.clear();++oa?0:a+o),t=t>a?a:t,t<0&&(t+=a),a=o>t?0:t-o>>>0,o>>>=0;for(var l=Array(a);++r=r?e:yh(e,o,t)}var vh=zy;var jy="\\ud800-\\udfff",$y="\\u0300-\\u036f",Uy="\\ufe20-\\ufe2f",Ky="\\u20d0-\\u20ff",Gy=$y+Uy+Ky,qy="\\ufe0e\\ufe0f",Qy="\\u200d",Zy=RegExp("["+Qy+jy+Gy+qy+"]");function Yy(e){return Zy.test(e)}var Ui=Yy;function Xy(e){return e.split("")}var kh=Xy;var Ah="\\ud800-\\udfff",Jy="\\u0300-\\u036f",ev="\\ufe20-\\ufe2f",ov="\\u20d0-\\u20ff",tv=Jy+ev+ov,rv="\\ufe0e\\ufe0f",av="["+Ah+"]",zs="["+tv+"]",js="\\ud83c[\\udffb-\\udfff]",lv="(?:"+zs+"|"+js+")",Dh="[^"+Ah+"]",Ph="(?:\\ud83c[\\udde6-\\uddff]){2}",Mh="[\\ud800-\\udbff][\\udc00-\\udfff]",nv="\\u200d",Bh=lv+"?",Lh="["+rv+"]?",iv="(?:"+nv+"(?:"+[Dh,Ph,Mh].join("|")+")"+Lh+Bh+")*",dv=Lh+Bh+iv,sv="(?:"+[Dh+zs+"?",zs,Ph,Mh,av].join("|")+")",uv=RegExp(js+"(?="+js+")|"+sv+dv,"g");function fv(e){return e.match(uv)||[]}var Eh=fv;function pv(e){return Ui(e)?Eh(e):kh(e)}var Nh=pv;function mv(e){return function(o){o=Oh(o);var t=Ui(o)?Nh(o):void 0,r=t?t[0]:o.charAt(0),a=t?vh(t,1).join(""):o.slice(1);return r[e]()+a}}var _h=mv;var cv=_h("toUpperCase"),$s=cv;function xv(){this.__data__=new _r,this.size=0}var Ih=xv;function hv(e){var o=this.__data__,t=o.delete(e);return this.size=o.size,t}var Hh=hv;function Sv(e){return this.__data__.get(e)}var Wh=Sv;function gv(e){return this.__data__.has(e)}var Vh=gv;var wv=200;function Tv(e,o){var t=this.__data__;if(t instanceof _r){var r=t.__data__;if(!ji||r.length`}function NO(e,o){let t=Te(jc,null);if(t===null){console.error("[css-render/vue3-ssr]: no ssr context found.");return}let{styles:r,ids:a}=t;a.has(e)||r!==null&&(a.add(e),r.push(EO(e,o)))}function wt(){let e=Te(jc,null);if(e!==null)return{adapter:NO,context:e}}function Ri(e,o){console.error(`[vueuc/${e}]: ${o}`)}var{c:Gt}=fi();var Nl="vueuc-style";function $c(e){return e&-e}var Fi=class{constructor(o,t){this.l=o,this.min=t;let r=new Array(o+1);for(let a=0;aa)throw new Error("[FinweckTree.sum]: `i` is larger than length.");let l=o*r;for(;o>0;)l+=t[o],o-=$c(o);return l}getBound(o){let t=0,r=this.l;for(;r>t;){let a=Math.floor((t+r)/2),l=this.sum(a);if(l>o){r=a;continue}else if(l{let{to:o}=e;return o!=null?o:"body"})}},render(){return this.showTeleport?this.disabled?El("lazy-teleport",this.$slots):R(Nm,{disabled:this.disabled,to:this.mergedTo},El("lazy-teleport",this.$slots)):null}});var Oi={top:"bottom",bottom:"top",left:"right",right:"left"},Kc={start:"end",center:"center",end:"start"},vs={top:"height",bottom:"height",left:"width",right:"width"},_O={"bottom-start":"top left",bottom:"top center","bottom-end":"top right","top-start":"bottom left",top:"bottom center","top-end":"bottom right","right-start":"top left",right:"center left","right-end":"bottom left","left-start":"top right",left:"center right","left-end":"bottom right"},IO={"bottom-start":"bottom left",bottom:"bottom center","bottom-end":"bottom right","top-start":"top left",top:"top center","top-end":"top right","right-start":"top right",right:"center right","right-end":"bottom right","left-start":"top left",left:"center left","left-end":"bottom left"},HO={"bottom-start":"right","bottom-end":"left","top-start":"right","top-end":"left","right-start":"bottom","right-end":"top","left-start":"bottom","left-end":"top"},Gc={top:!0,bottom:!1,left:!0,right:!1},qc={top:"end",bottom:"start",left:"end",right:"start"};function Qc(e,o,t,r,a,l){if(!a||l)return{placement:e,top:0,left:0};let[n,i]=e.split("-"),d=i!=null?i:"center",s={top:0,left:0},u=(p,x,T)=>{let C=0,S=0,D=t[p]-o[x]-o[p];return D>0&&r&&(T?S=Gc[x]?D:-D:C=Gc[x]?D:-D),{left:C,top:S}},f=n==="left"||n==="right";if(d!=="center"){let p=HO[e],x=Oi[p],T=vs[p];if(t[T]>o[T]){if(o[p]+o[T]o[x]&&(d=Kc[i])}else{let p=n==="bottom"||n==="top"?"left":"top",x=Oi[p],T=vs[p],C=(t[T]-o[T])/2;(o[p]o[x]?(d=qc[p],s=u(T,p,f)):(d=qc[x],s=u(T,x,f)))}let c=n;return o[n] *",{pointerEvents:"all"})])]),Ci=le({name:"Follower",inheritAttrs:!1,props:{show:Boolean,enabled:{type:Boolean,default:void 0},placement:{type:String,default:"bottom"},syncTrigger:{type:Array,default:["resize","scroll"]},to:[String,Object],flip:{type:Boolean,default:!0},internalShift:Boolean,x:Number,y:Number,width:String,minWidth:String,containerClass:String,teleportDisabled:Boolean,zindexable:{type:Boolean,default:!0},zIndex:Number,overlap:Boolean},setup(e){let o=Te("VBinder"),t=Ye(()=>e.enabled!==void 0?e.enabled:e.show),r=Z(null),a=Z(null),l=()=>{let{syncTrigger:c}=e;c.includes("scroll")&&o.addScrollListener(d),c.includes("resize")&&o.addResizeListener(d)},n=()=>{o.removeScrollListener(d),o.removeResizeListener(d)};fo(()=>{t.value&&(d(),l())});let i=wt();WO.mount({id:"vueuc/binder",head:!0,anchorMetaName:Nl,ssr:i}),_o(()=>{n()}),xi(()=>{t.value&&d()});let d=()=>{if(!t.value)return;let c=r.value;if(c===null)return;let p=o.targetRef,{x,y:T,overlap:C}=e,S=x!==void 0&&T!==void 0?Wc(x,T):Si(p);c.style.setProperty("--v-target-width",`${Math.round(S.width)}px`),c.style.setProperty("--v-target-height",`${Math.round(S.height)}px`);let{width:D,minWidth:$,placement:O,internalShift:g,flip:v}=e;c.setAttribute("v-placement",O),C?c.setAttribute("v-overlap",""):c.removeAttribute("v-overlap");let{style:w}=c;D==="target"?w.width=`${S.width}px`:D!==void 0?w.width=D:w.width="",$==="target"?w.minWidth=`${S.width}px`:$!==void 0?w.minWidth=$:w.minWidth="";let F=Si(c),B=Si(a.value),{left:y,top:W,placement:_}=Qc(O,S,F,g,v,C),ae=Zc(_,C),{left:he,top:Me,transform:de}=Yc(_,B,S,W,y,C);c.setAttribute("v-placement",_),c.style.setProperty("--v-offset-left",`${Math.round(y)}px`),c.style.setProperty("--v-offset-top",`${Math.round(W)}px`),c.style.transform=`translateX(${he}) translateY(${Me}) ${de}`,c.style.transformOrigin=ae};Ze(t,c=>{c?(l(),s()):n()});let s=()=>{No().then(d).catch(c=>console.error(c))};["placement","x","y","internalShift","flip","width","overlap","minWidth"].forEach(c=>{Ze(De(e,c),d)}),["teleportDisabled"].forEach(c=>{Ze(De(e,c),s)}),Ze(De(e,"syncTrigger"),c=>{c.includes("resize")?o.addResizeListener(d):o.removeResizeListener(d),c.includes("scroll")?o.addScrollListener(d):o.removeScrollListener(d)});let u=Er(),f=Ye(()=>{let{to:c}=e;if(c!==void 0)return c;!u.value});return{VBinder:o,mergedEnabled:t,offsetContainerRef:a,followerRef:r,mergedTo:f,syncPosition:d}},render(){return R(Uc,{show:this.show,to:this.mergedTo,disabled:this.teleportDisabled},{default:()=>{var e,o;let t=R("div",{class:["v-binder-follower-container",this.containerClass],ref:"offsetContainerRef"},[R("div",{class:"v-binder-follower-content",ref:"followerRef"},(o=(e=this.$slots).default)===null||o===void 0?void 0:o.call(e))]);return this.zindexable?qn(t,[[ys,{enabled:this.mergedEnabled,zIndex:this.zIndex}]]):t}})}});var Tt=[];var Xc=function(){return Tt.some(function(e){return e.activeTargets.length>0})};var Jc=function(){return Tt.some(function(e){return e.skippedTargets.length>0})};var ex="ResizeObserver loop completed with undelivered notifications.",ox=function(){var e;typeof ErrorEvent=="function"?e=new ErrorEvent("error",{message:ex}):(e=document.createEvent("Event"),e.initEvent("error",!1,!1),e.message=ex),window.dispatchEvent(e)};var ma;(function(e){e.BORDER_BOX="border-box",e.CONTENT_BOX="content-box",e.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(ma||(ma={}));var At=function(e){return Object.freeze(e)};var ks=function(){function e(o,t){this.inlineSize=o,this.blockSize=t,At(this)}return e}();var As=function(){function e(o,t,r,a){return this.x=o,this.y=t,this.width=r,this.height=a,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,At(this)}return e.prototype.toJSON=function(){var o=this,t=o.x,r=o.y,a=o.top,l=o.right,n=o.bottom,i=o.left,d=o.width,s=o.height;return{x:t,y:r,top:a,right:l,bottom:n,left:i,width:d,height:s}},e.fromRect=function(o){return new e(o.x,o.y,o.width,o.height)},e}();var _l=function(e){return e instanceof SVGElement&&"getBBox"in e},bi=function(e){if(_l(e)){var o=e.getBBox(),t=o.width,r=o.height;return!t&&!r}var a=e,l=a.offsetWidth,n=a.offsetHeight;return!(l||n||e.getClientRects().length)},Ds=function(e){var o,t;if(e instanceof Element)return!0;var r=(t=(o=e)===null||o===void 0?void 0:o.ownerDocument)===null||t===void 0?void 0:t.defaultView;return!!(r&&e instanceof r.Element)},tx=function(e){switch(e.tagName){case"INPUT":if(e.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1};var ca=typeof window!="undefined"?window:{};var yi=new WeakMap,rx=/auto|scroll/,VO=/^tb|vertical/,zO=/msie|trident/i.test(ca.navigator&&ca.navigator.userAgent),qt=function(e){return parseFloat(e||"0")},$a=function(e,o,t){return e===void 0&&(e=0),o===void 0&&(o=0),t===void 0&&(t=!1),new ks((t?o:e)||0,(t?e:o)||0)},ax=At({devicePixelContentBoxSize:$a(),borderBoxSize:$a(),contentBoxSize:$a(),contentRect:new As(0,0,0,0)}),Ps=function(e,o){if(o===void 0&&(o=!1),yi.has(e)&&!o)return yi.get(e);if(bi(e))return yi.set(e,ax),ax;var t=getComputedStyle(e),r=_l(e)&&e.ownerSVGElement&&e.getBBox(),a=!zO&&t.boxSizing==="border-box",l=VO.test(t.writingMode||""),n=!r&&rx.test(t.overflowY||""),i=!r&&rx.test(t.overflowX||""),d=r?0:qt(t.paddingTop),s=r?0:qt(t.paddingRight),u=r?0:qt(t.paddingBottom),f=r?0:qt(t.paddingLeft),c=r?0:qt(t.borderTopWidth),p=r?0:qt(t.borderRightWidth),x=r?0:qt(t.borderBottomWidth),T=r?0:qt(t.borderLeftWidth),C=f+s,S=d+u,D=T+p,$=c+x,O=i?e.offsetHeight-$-e.clientHeight:0,g=n?e.offsetWidth-D-e.clientWidth:0,v=a?C+D:0,w=a?S+$:0,F=r?r.width:qt(t.width)-v-g,B=r?r.height:qt(t.height)-w-O,y=F+C+g+D,W=B+S+O+$,_=At({devicePixelContentBoxSize:$a(Math.round(F*devicePixelRatio),Math.round(B*devicePixelRatio),l),borderBoxSize:$a(y,W,l),contentBoxSize:$a(F,B,l),contentRect:new As(f,d,F,B)});return yi.set(e,_),_},vi=function(e,o,t){var r=Ps(e,t),a=r.borderBoxSize,l=r.contentBoxSize,n=r.devicePixelContentBoxSize;switch(o){case ma.DEVICE_PIXEL_CONTENT_BOX:return n;case ma.BORDER_BOX:return a;default:return l}};var Ms=function(){function e(o){var t=Ps(o);this.target=o,this.contentRect=t.contentRect,this.borderBoxSize=At([t.borderBoxSize]),this.contentBoxSize=At([t.contentBoxSize]),this.devicePixelContentBoxSize=At([t.devicePixelContentBoxSize])}return e}();var ki=function(e){if(bi(e))return 1/0;for(var o=0,t=e.parentNode;t;)o+=1,t=t.parentNode;return o};var lx=function(){var e=1/0,o=[];Tt.forEach(function(n){if(n.activeTargets.length!==0){var i=[];n.activeTargets.forEach(function(s){var u=new Ms(s.target),f=ki(s.target);i.push(u),s.lastReportedSize=vi(s.target,s.observedBox),fe?t.activeTargets.push(a):t.skippedTargets.push(a))})})};var nx=function(){var e=0;for(Bs(e);Xc();)e=lx(),Bs(e);return Jc()&&ox(),e>0};var Ls,ix=[],jO=function(){return ix.splice(0).forEach(function(e){return e()})},dx=function(e){if(!Ls){var o=0,t=document.createTextNode(""),r={characterData:!0};new MutationObserver(function(){return jO()}).observe(t,r),Ls=function(){t.textContent=""+(o?o--:o++)}}ix.push(e),Ls()};var sx=function(e){dx(function(){requestAnimationFrame(e)})};var Ai=0,$O=function(){return!!Ai},UO=250,KO={attributes:!0,characterData:!0,childList:!0,subtree:!0},ux=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],fx=function(e){return e===void 0&&(e=0),Date.now()+e},Es=!1,GO=function(){function e(){var o=this;this.stopped=!0,this.listener=function(){return o.schedule()}}return e.prototype.run=function(o){var t=this;if(o===void 0&&(o=UO),!Es){Es=!0;var r=fx(o);sx(function(){var a=!1;try{a=nx()}finally{if(Es=!1,o=r-fx(),!$O())return;a?t.run(1e3):o>0?t.run(o):t.start()}})}},e.prototype.schedule=function(){this.stop(),this.run()},e.prototype.observe=function(){var o=this,t=function(){return o.observer&&o.observer.observe(document.body,KO)};document.body?t():ca.addEventListener("DOMContentLoaded",t)},e.prototype.start=function(){var o=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),ux.forEach(function(t){return ca.addEventListener(t,o.listener,!0)}))},e.prototype.stop=function(){var o=this;this.stopped||(this.observer&&this.observer.disconnect(),ux.forEach(function(t){return ca.removeEventListener(t,o.listener,!0)}),this.stopped=!0)},e}(),Di=new GO,Ns=function(e){!Ai&&e>0&&Di.start(),Ai+=e,!Ai&&Di.stop()};var qO=function(e){return!_l(e)&&!tx(e)&&getComputedStyle(e).display==="inline"},px=function(){function e(o,t){this.target=o,this.observedBox=t||ma.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return e.prototype.isActive=function(){var o=vi(this.target,this.observedBox,!0);return qO(this.target)&&(this.lastReportedSize=o),this.lastReportedSize.inlineSize!==o.inlineSize||this.lastReportedSize.blockSize!==o.blockSize},e}();var mx=function(){function e(o,t){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=o,this.callback=t}return e}();var Pi=new WeakMap,cx=function(e,o){for(var t=0;t=0&&(l&&Tt.splice(Tt.indexOf(r),1),r.observationTargets.splice(a,1),Ns(-1))},e.disconnect=function(o){var t=this,r=Pi.get(o);r.observationTargets.slice().forEach(function(a){return t.unobserve(o,a.target)}),r.activeTargets.splice(0,r.activeTargets.length)},e}();var _s=function(){function e(o){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof o!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");Il.connect(this,o)}return e.prototype.observe=function(o,t){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ds(o))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");Il.observe(this,o,t)},e.prototype.unobserve=function(o){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ds(o))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");Il.unobserve(this,o)},e.prototype.disconnect=function(){Il.disconnect(this)},e.toString=function(){return"function ResizeObserver () { [polyfill code] }"},e}();var xx=class{constructor(){this.handleResize=this.handleResize.bind(this),this.observer=new _s(this.handleResize),this.elHandlersMap=new Map}handleResize(o){for(let t of o){let r=this.elHandlersMap.get(t.target);r!==void 0&&r(t)}}registerHandler(o,t){this.elHandlersMap.set(o,t),this.observer.observe(o)}unregisterHandler(o){!this.elHandlersMap.has(o)||(this.elHandlersMap.delete(o),this.observer.unobserve(o))}},Mi=new xx;var Dt=le({name:"ResizeObserver",props:{onResize:Function},setup(e){return{registered:!1,handleResize(o){let{onResize:t}=e;t!==void 0&&t(o)}}},mounted(){let e=this.$el;if(e===void 0){Ri("resize-observer","$el does not exist.");return}if(e.nextElementSibling!==e.nextSibling&&e.nodeType===3&&e.nodeValue!==""){Ri("resize-observer","$el can not be observed (it may be a text node).");return}e.nextElementSibling!==null&&(Mi.registerHandler(e.nextElementSibling,this.handleResize),this.registered=!0)},beforeUnmount(){this.registered&&Mi.unregisterHandler(this.$el.nextElementSibling)},render(){return Ba(this.$slots,"default")}});var QO=Gt(".v-vl",{maxHeight:"inherit",height:"100%",overflow:"auto",minWidth:"1px"},[Gt("&:not(.v-vl--show-scrollbar)",{scrollbarWidth:"none"},[Gt("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",{width:0,height:0,display:"none"})])]),Hl=le({name:"VirtualList",inheritAttrs:!1,props:{showScrollbar:{type:Boolean,default:!0},items:{type:Array,default:()=>[]},itemSize:{type:Number,required:!0},itemResizable:Boolean,itemsStyle:[String,Object],visibleItemsTag:{type:[String,Object],default:"div"},visibleItemsProps:Object,ignoreItemResize:Boolean,onScroll:Function,onWheel:Function,onResize:Function,defaultScrollKey:[Number,String],defaultScrollIndex:Number,keyField:{type:String,default:"key"},paddingTop:{type:[Number,String],default:0},paddingBottom:{type:[Number,String],default:0}},setup(e){let o=wt();QO.mount({id:"vueuc/virtual-list",head:!0,anchorMetaName:Nl,ssr:o}),fo(()=>{let{defaultScrollIndex:g,defaultScrollKey:v}=e;g!=null?f({index:g}):v!=null&&f({key:v})}),Qd(()=>{f({top:d.value})});let t=V(()=>{let g=new Map,{keyField:v}=e;return e.items.forEach((w,F)=>{g.set(w[v],F)}),g}),r=Z(null),a=Z(void 0),l=new Map,n=V(()=>{let{items:g,itemSize:v,keyField:w}=e,F=new Fi(g.length,v);return g.forEach((B,y)=>{let W=B[w],_=l.get(W);_!==void 0&&F.add(y,_)}),F}),i=Z(0),d=Z(0),s=Ye(()=>Math.max(n.value.getBound(d.value-ai(e.paddingTop))-1,0)),u=V(()=>{let{value:g}=a;if(g===void 0)return[];let{items:v,itemSize:w}=e,F=s.value,B=Math.min(F+Math.ceil(g/w+1),v.length-1),y=[];for(let W=F;W<=B;++W)y.push(v[W]);return y}),f=g=>{let{left:v,top:w,index:F,key:B,position:y,behavior:W,debounce:_=!0}=g;if(v!==void 0||w!==void 0)p(v,w,W);else if(F!==void 0)c(F,W,_);else if(B!==void 0){let ae=t.value.get(B);ae!==void 0&&c(ae,W,_)}else y==="bottom"?p(0,Number.MAX_SAFE_INTEGER,W):y==="top"&&p(0,0,W)};function c(g,v,w){let{value:F}=n,B=F.sum(g)+ai(e.paddingTop);if(!w)r.value.scrollTo({left:0,top:B,behavior:v});else{let{scrollTop:y,offsetHeight:W}=r.value;if(B>y){let _=F.get(g);B+_<=y+W||r.value.scrollTo({left:0,top:B+_-W,behavior:v})}else r.value.scrollTo({left:0,top:B,behavior:v})}S=g}function p(g,v,w){r.value.scrollTo({left:g,top:v,behavior:w})}function x(g,v){var w,F,B,y;if(e.ignoreItemResize||O(v.target))return;let{value:W}=n,_=t.value.get(g),ae=W.get(_),he=(B=(F=(w=v.borderBoxSize)===null||w===void 0?void 0:w[0])===null||F===void 0?void 0:F.blockSize)!==null&&B!==void 0?B:v.contentRect.height;if(he===ae)return;he-e.itemSize===0?l.delete(g):l.set(g,he-e.itemSize);let de=he-ae;de!==0&&(D!==void 0&&_<=D&&((y=r.value)===null||y===void 0||y.scrollBy(0,de)),W.add(_,de),i.value++)}function T(g){Al($);let{onScroll:v}=e;v!==void 0&&v(g)}function C(g){if(O(g.target)||g.contentRect.height===a.value)return;a.value=g.contentRect.height;let{onResize:v}=e;v!==void 0&&v(g)}let S,D;function $(){let{value:g}=r;g!=null&&(D=S!=null?S:s.value,S=void 0,d.value=r.value.scrollTop)}function O(g){let v=g;for(;v!==null;){if(v.style.display==="none")return!0;v=v.parentElement}return!1}return{listHeight:a,listStyle:{overflow:"auto"},keyToIndex:t,itemsStyle:V(()=>{let{itemResizable:g}=e,v=Br(n.value.sum());return i.value,[e.itemsStyle,{boxSizing:"content-box",height:g?"":v,minHeight:g?v:"",paddingTop:Br(e.paddingTop),paddingBottom:Br(e.paddingBottom)}]}),visibleItemsStyle:V(()=>(i.value,{transform:`translateY(${Br(n.value.sum(s.value))})`})),viewportItems:u,listElRef:r,itemsElRef:Z(null),scrollTo:f,handleListResize:C,handleListScroll:T,handleItemResize:x}},render(){let{itemResizable:e,keyField:o,keyToIndex:t,visibleItemsTag:r}=this;return R(Dt,{onResize:this.handleListResize},{default:()=>{var a,l;return R("div",yl(this.$attrs,{class:["v-vl",this.showScrollbar&&"v-vl--show-scrollbar"],onScroll:this.handleListScroll,onWheel:this.onWheel,ref:"listElRef"}),[this.items.length!==0?R("div",{ref:"itemsElRef",class:"v-vl-items",style:this.itemsStyle},[R(r,Object.assign({class:"v-vl-visible-items",style:this.visibleItemsStyle},this.visibleItemsProps),{default:()=>this.viewportItems.map(n=>{let i=n[o],d=t.get(i),s=this.$slots.default({item:n,index:d})[0];return e?R(Dt,{key:i,onResize:u=>this.handleItemResize(i,u)},{default:()=>s}):(s.key=i,s)})})]):(l=(a=this.$slots).empty)===null||l===void 0?void 0:l.call(a)])}})}});var hx=lo("n-form-item");function Rt(e,{defaultSize:o="medium",mergedSize:t,mergedDisabled:r}={}){let a=Te(hx,null);qo(hx,null);let l=V(t?()=>t(a):()=>{let{size:d}=e;if(d)return d;if(a){let{mergedSize:s}=a;if(s.value!==void 0)return s.value}return o}),n=V(r?()=>r(a):()=>{let{disabled:d}=e;return d!==void 0?d:a?a.disabled.value:!1}),i=V(()=>{let{status:d}=e;return d||(a==null?void 0:a.mergedValidationStatus.value)});return _o(()=>{a&&a.restoreValidation()}),{mergedSizeRef:l,mergedDisabledRef:n,mergedStatusRef:i,nTriggerFormBlur(){a&&a.handleContentBlur()},nTriggerFormChange(){a&&a.handleContentChange()},nTriggerFormFocus(){a&&a.handleContentFocus()},nTriggerFormInput(){a&&a.handleContentInput()}}}var ZO=typeof global=="object"&&global&&global.Object===Object&&global,Bi=ZO;var YO=typeof self=="object"&&self&&self.Object===Object&&self,XO=Bi||YO||Function("return this")(),Ft=XO;var JO=Ft.Symbol,fr=JO;var Sx=Object.prototype,eC=Sx.hasOwnProperty,oC=Sx.toString,Wl=fr?fr.toStringTag:void 0;function tC(e){var o=eC.call(e,Wl),t=e[Wl];try{e[Wl]=void 0;var r=!0}catch(l){}var a=oC.call(e);return r&&(o?e[Wl]=t:delete e[Wl]),a}var gx=tC;var rC=Object.prototype,aC=rC.toString;function lC(e){return aC.call(e)}var wx=lC;var nC="[object Null]",iC="[object Undefined]",Tx=fr?fr.toStringTag:void 0;function dC(e){return e==null?e===void 0?iC:nC:Tx&&Tx in Object(e)?gx(e):wx(e)}var Qt=dC;function sC(e){return e!=null&&typeof e=="object"}var Ot=sC;var uC="[object Symbol]";function fC(e){return typeof e=="symbol"||Ot(e)&&Qt(e)==uC}var Rx=fC;function pC(e,o){for(var t=-1,r=e==null?0:e.length,a=Array(r);++t0){if(++o>=WC)return arguments[0]}else o=0;return e.apply(void 0,arguments)}}var Nx=jC;function $C(e){return function(){return e}}var _x=$C;var UC=function(){try{var e=Ka(Object,"defineProperty");return e({},"",{}),e}catch(o){}}(),Ga=UC;var KC=Ga?function(e,o){return Ga(e,"toString",{configurable:!0,enumerable:!1,value:_x(o),writable:!0})}:Li,Ix=KC;var GC=Nx(Ix),Hx=GC;var qC=9007199254740991,QC=/^(?:0|[1-9]\d*)$/;function ZC(e,o){var t=typeof e;return o=o==null?qC:o,!!o&&(t=="number"||t!="symbol"&&QC.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=lb}var _i=nb;function ib(e){return e!=null&&_i(e.length)&&!Ua(e)}var Qa=ib;function db(e,o,t){if(!at(t))return!1;var r=typeof o;return(r=="number"?Qa(t)&&Ni(o,t.length):r=="string"&&o in t)?_r(t[o],e):!1}var Ux=db;function sb(e){return $x(function(o,t){var r=-1,a=t.length,l=a>1?t[a-1]:void 0,n=a>2?t[2]:void 0;for(l=e.length>3&&typeof l=="function"?(a--,l):void 0,n&&Ux(t[0],t[1],n)&&(l=a<3?void 0:l,a=1),o=Object(o);++r-1}var xh=Cy;function by(e,o){var t=this.__data__,r=Ir(t,e);return r<0?(++this.size,t.push([e,o])):t[r][1]=o,this}var hh=by;function Ya(e){var o=-1,t=e==null?0:e.length;for(this.clear();++oa?0:a+o),t=t>a?a:t,t<0&&(t+=a),a=o>t?0:t-o>>>0,o>>>=0;for(var l=Array(a);++r=r?e:vh(e,o,t)}var kh=jy;var $y="\\ud800-\\udfff",Uy="\\u0300-\\u036f",Ky="\\ufe20-\\ufe2f",Gy="\\u20d0-\\u20ff",qy=Uy+Ky+Gy,Qy="\\ufe0e\\ufe0f",Zy="\\u200d",Yy=RegExp("["+Zy+$y+qy+Qy+"]");function Xy(e){return Yy.test(e)}var $i=Xy;function Jy(e){return e.split("")}var Ah=Jy;var Dh="\\ud800-\\udfff",ev="\\u0300-\\u036f",ov="\\ufe20-\\ufe2f",tv="\\u20d0-\\u20ff",rv=ev+ov+tv,av="\\ufe0e\\ufe0f",lv="["+Dh+"]",zs="["+rv+"]",js="\\ud83c[\\udffb-\\udfff]",nv="(?:"+zs+"|"+js+")",Ph="[^"+Dh+"]",Mh="(?:\\ud83c[\\udde6-\\uddff]){2}",Bh="[\\ud800-\\udbff][\\udc00-\\udfff]",iv="\\u200d",Lh=nv+"?",Eh="["+av+"]?",dv="(?:"+iv+"(?:"+[Ph,Mh,Bh].join("|")+")"+Eh+Lh+")*",sv=Eh+Lh+dv,uv="(?:"+[Ph+zs+"?",zs,Mh,Bh,lv].join("|")+")",fv=RegExp(js+"(?="+js+")|"+uv+sv,"g");function pv(e){return e.match(fv)||[]}var Nh=pv;function mv(e){return $i(e)?Nh(e):Ah(e)}var _h=mv;function cv(e){return function(o){o=Ch(o);var t=$i(o)?_h(o):void 0,r=t?t[0]:o.charAt(0),a=t?kh(t,1).join(""):o.slice(1);return r[e]()+a}}var Ih=cv;var xv=Ih("toUpperCase"),$s=xv;function hv(){this.__data__=new Hr,this.size=0}var Hh=hv;function Sv(e){var o=this.__data__,t=o.delete(e);return this.size=o.size,t}var Wh=Sv;function gv(e){return this.__data__.get(e)}var Vh=gv;function wv(e){return this.__data__.has(e)}var zh=wv;var Tv=200;function Rv(e,o){var t=this.__data__;if(t instanceof Hr){var r=t.__data__;if(!zi||r.length{let u=l==null?void 0:l.value;t.mount({id:u===void 0?o:u+o,head:!0,props:{bPrefix:u?`.${u}-`:void 0},anchorMetaName:Wr,ssr:n}),Ki.mount({id:"n-global",head:!0,anchorMetaName:Wr,ssr:n})};n?s():ir(s)}let i=Re(Yo,null);return z(()=>{var s;let{theme:{common:u,self:f,peers:m={}}={},themeOverrides:p={},builtinThemeOverrides:c={}}=a,{common:T,peers:C}=p,{common:g=void 0,[e]:{common:k=void 0,self:U=void 0,peers:F={}}={}}=(i==null?void 0:i.mergedThemeRef.value)||{},{common:w=void 0,[e]:y={}}=(i==null?void 0:i.mergedThemeOverridesRef.value)||{},{common:S,peers:O={}}=y,L=Hr({},u||k||g||r.common,w,S,T),b=Hr((s=f||U||r.self)===null||s===void 0?void 0:s(L),c,y,p);return{common:L,self:b,peers:Hr({},r.peers,F,m),peerOverrides:Hr({},O,C)}})}lS.props={theme:Object,themeOverrides:Object,builtinThemeOverrides:Object};var Oo=lS;var Gi="n";function Bo(e={},o={defaultBordered:!0}){let t=Re(Yo,null);return{inlineThemeDisabled:t==null?void 0:t.inlineThemeDisabled,mergedRtlRef:t==null?void 0:t.mergedRtlRef,mergedComponentPropsRef:t==null?void 0:t.mergedComponentPropsRef,mergedBreakpointsRef:t==null?void 0:t.mergedBreakpointsRef,mergedBorderedRef:z(()=>{var r,a;let{bordered:l}=e;return l!==void 0?l:(a=(r=t==null?void 0:t.mergedBorderedRef.value)!==null&&r!==void 0?r:o.defaultBordered)!==null&&a!==void 0?a:!0}),mergedClsPrefixRef:z(()=>(t==null?void 0:t.mergedClsPrefixRef.value)||Gi),namespaceRef:z(()=>t==null?void 0:t.mergedNamespaceRef.value)}}var Iv={name:"en-US",global:{undo:"Undo",redo:"Redo",confirm:"Confirm"},Popconfirm:{positiveText:"Confirm",negativeText:"Cancel"},Cascader:{placeholder:"Please Select",loading:"Loading",loadingRequiredMessage:e=>`Please load all ${e}'s descendants before checking it.`},Time:{dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss"},DatePicker:{yearFormat:"yyyy",monthFormat:"MMM",dayFormat:"eeeeee",yearTypeFormat:"yyyy",monthTypeFormat:"yyyy-MM",dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss",quarterFormat:"yyyy-qqq",clear:"Clear",now:"Now",confirm:"Confirm",selectTime:"Select Time",selectDate:"Select Date",datePlaceholder:"Select Date",datetimePlaceholder:"Select Date and Time",monthPlaceholder:"Select Month",yearPlaceholder:"Select Year",quarterPlaceholder:"Select Quarter",startDatePlaceholder:"Start Date",endDatePlaceholder:"End Date",startDatetimePlaceholder:"Start Date and Time",endDatetimePlaceholder:"End Date and Time",monthBeforeYear:!0,firstDayOfWeek:6,today:"Today"},DataTable:{checkTableAll:"Select all in the table",uncheckTableAll:"Unselect all in the table",confirm:"Confirm",clear:"Clear"},Transfer:{sourceTitle:"Source",targetTitle:"Target"},Empty:{description:"No Data"},Select:{placeholder:"Please Select"},TimePicker:{placeholder:"Select Time",positiveText:"OK",negativeText:"Cancel",now:"Now"},Pagination:{goto:"Goto",selectionSuffix:"page"},DynamicTags:{add:"Add"},Log:{loading:"Loading"},Input:{placeholder:"Please Input"},InputNumber:{placeholder:"Please Input"},DynamicInput:{create:"Create"},ThemeEditor:{title:"Theme Editor",clearAllVars:"Clear All Variables",clearSearch:"Clear Search",filterCompName:"Filter Component Name",filterVarName:"Filter Variable Name",import:"Import",export:"Export",restore:"Reset to Default"},Image:{tipPrevious:"Previous picture (\u2190)",tipNext:"Next picture (\u2192)",tipCounterclockwise:"Counterclockwise",tipClockwise:"Clockwise",tipZoomOut:"Zoom out",tipZoomIn:"Zoom in",tipClose:"Close (Esc)"}},Ks=Iv;var vS=Ra(yS()),Ek={name:"en-US",locale:vS.default},qs=Ek;function Xa(e){let{mergedLocaleRef:o,mergedDateLocaleRef:t}=Re(Yo,null)||{},r=z(()=>{var l,n;return(n=(l=o==null?void 0:o.value)===null||l===void 0?void 0:l[e])!==null&&n!==void 0?n:Ks[e]});return{dateLocaleRef:z(()=>{var l;return(l=t==null?void 0:t.value)!==null&&l!==void 0?l:qs}),localeRef:r}}function Zt(e,o,t){if(!o)return;let r=gt(),a=()=>{let l=t==null?void 0:t.value;o.mount({id:l===void 0?e:l+e,head:!0,anchorMetaName:Wr,props:{bPrefix:l?`.${l}-`:void 0},ssr:r}),Ki.mount({id:"n-global",head:!0,anchorMetaName:Wr,ssr:r})};r?a():ir(a)}function Ko(e,o,t,r){var a;t||ii("useThemeClass","cssVarsRef is not passed");let l=(a=Re(Yo,null))===null||a===void 0?void 0:a.mergedThemeHashRef,n=Z(""),i=gt(),d,s=`__${e}`,u=()=>{let f=s,m=o?o.value:void 0,p=l==null?void 0:l.value;p&&(f+="-"+p),m&&(f+="-"+m);let{themeOverrides:c,builtinThemeOverrides:T}=r;c&&(f+="-"+st(JSON.stringify(c))),T&&(f+="-"+st(JSON.stringify(T))),n.value=f,d=()=>{let C=t.value,g="";for(let k in C)g+=`${k}: ${C[k]};`;X(`.${f}`,g).mount({id:f,ssr:i}),d=void 0}};return Mo(()=>{u()}),{themeClass:n,onRender:()=>{d==null||d()}}}function kS(e,o){return ie({name:$s(e),setup(){var t;let r=(t=Re(Yo,null))===null||t===void 0?void 0:t.mergedIconsRef;return()=>{var a;let l=(a=r==null?void 0:r.value)===null||a===void 0?void 0:a[e];return l?l():o}}})}var Qs=ie({name:"Eye",render(){return R("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},R("path",{d:"M255.66 112c-77.94 0-157.89 45.11-220.83 135.33a16 16 0 0 0-.27 17.77C82.92 340.8 161.8 400 255.66 400c92.84 0 173.34-59.38 221.79-135.25a16.14 16.14 0 0 0 0-17.47C428.89 172.28 347.8 112 255.66 112z",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32"}),R("circle",{cx:"256",cy:"256",r:"80",fill:"none",stroke:"currentColor","stroke-miterlimit":"10","stroke-width":"32"}))}});var Zs=ie({name:"EyeOff",render(){return R("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},R("path",{d:"M432 448a15.92 15.92 0 0 1-11.31-4.69l-352-352a16 16 0 0 1 22.62-22.62l352 352A16 16 0 0 1 432 448z",fill:"currentColor"}),R("path",{d:"M255.66 384c-41.49 0-81.5-12.28-118.92-36.5c-34.07-22-64.74-53.51-88.7-91v-.08c19.94-28.57 41.78-52.73 65.24-72.21a2 2 0 0 0 .14-2.94L93.5 161.38a2 2 0 0 0-2.71-.12c-24.92 21-48.05 46.76-69.08 76.92a31.92 31.92 0 0 0-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416a239.13 239.13 0 0 0 75.8-12.58a2 2 0 0 0 .77-3.31l-21.58-21.58a4 4 0 0 0-3.83-1a204.8 204.8 0 0 1-51.16 6.47z",fill:"currentColor"}),R("path",{d:"M490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96a227.34 227.34 0 0 0-74.89 12.83a2 2 0 0 0-.75 3.31l21.55 21.55a4 4 0 0 0 3.88 1a192.82 192.82 0 0 1 50.21-6.69c40.69 0 80.58 12.43 118.55 37c34.71 22.4 65.74 53.88 89.76 91a.13.13 0 0 1 0 .16a310.72 310.72 0 0 1-64.12 72.73a2 2 0 0 0-.15 2.95l19.9 19.89a2 2 0 0 0 2.7.13a343.49 343.49 0 0 0 68.64-78.48a32.2 32.2 0 0 0-.1-34.78z",fill:"currentColor"}),R("path",{d:"M256 160a95.88 95.88 0 0 0-21.37 2.4a2 2 0 0 0-1 3.38l112.59 112.56a2 2 0 0 0 3.38-1A96 96 0 0 0 256 160z",fill:"currentColor"}),R("path",{d:"M165.78 233.66a2 2 0 0 0-3.38 1a96 96 0 0 0 115 115a2 2 0 0 0 1-3.38z",fill:"currentColor"}))}});var Ys=ie({name:"Empty",render(){return R("svg",{viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"},R("path",{d:"M26 7.5C26 11.0899 23.0899 14 19.5 14C15.9101 14 13 11.0899 13 7.5C13 3.91015 15.9101 1 19.5 1C23.0899 1 26 3.91015 26 7.5ZM16.8536 4.14645C16.6583 3.95118 16.3417 3.95118 16.1464 4.14645C15.9512 4.34171 15.9512 4.65829 16.1464 4.85355L18.7929 7.5L16.1464 10.1464C15.9512 10.3417 15.9512 10.6583 16.1464 10.8536C16.3417 11.0488 16.6583 11.0488 16.8536 10.8536L19.5 8.20711L22.1464 10.8536C22.3417 11.0488 22.6583 11.0488 22.8536 10.8536C23.0488 10.6583 23.0488 10.3417 22.8536 10.1464L20.2071 7.5L22.8536 4.85355C23.0488 4.65829 23.0488 4.34171 22.8536 4.14645C22.6583 3.95118 22.3417 3.95118 22.1464 4.14645L19.5 6.79289L16.8536 4.14645Z",fill:"currentColor"}),R("path",{d:"M25 22.75V12.5991C24.5572 13.0765 24.053 13.4961 23.5 13.8454V16H17.5L17.3982 16.0068C17.0322 16.0565 16.75 16.3703 16.75 16.75C16.75 18.2688 15.5188 19.5 14 19.5C12.4812 19.5 11.25 18.2688 11.25 16.75L11.2432 16.6482C11.1935 16.2822 10.8797 16 10.5 16H4.5V7.25C4.5 6.2835 5.2835 5.5 6.25 5.5H12.2696C12.4146 4.97463 12.6153 4.47237 12.865 4H6.25C4.45507 4 3 5.45507 3 7.25V22.75C3 24.5449 4.45507 26 6.25 26H21.75C23.5449 26 25 24.5449 25 22.75ZM4.5 22.75V17.5H9.81597L9.85751 17.7041C10.2905 19.5919 11.9808 21 14 21L14.215 20.9947C16.2095 20.8953 17.842 19.4209 18.184 17.5H23.5V22.75C23.5 23.7165 22.7165 24.5 21.75 24.5H6.25C5.2835 24.5 4.5 23.7165 4.5 22.75Z",fill:"currentColor"}))}});var Xs=ie({name:"Switcher",render(){return R("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},R("path",{d:"M12 8l10 8l-10 8z"}))}});var Js=ie({name:"ChevronDown",render(){return R("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},R("path",{d:"M3.14645 5.64645C3.34171 5.45118 3.65829 5.45118 3.85355 5.64645L8 9.79289L12.1464 5.64645C12.3417 5.45118 12.6583 5.45118 12.8536 5.64645C13.0488 5.84171 13.0488 6.15829 12.8536 6.35355L8.35355 10.8536C8.15829 11.0488 7.84171 11.0488 7.64645 10.8536L3.14645 6.35355C2.95118 6.15829 2.95118 5.84171 3.14645 5.64645Z",fill:"currentColor"}))}});var eu=kS("clear",R("svg",{viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},R("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},R("g",{fill:"currentColor","fill-rule":"nonzero"},R("path",{d:"M8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 C2,4.6862915 4.6862915,2 8,2 Z M6.5343055,5.83859116 C6.33943736,5.70359511 6.07001296,5.72288026 5.89644661,5.89644661 L5.89644661,5.89644661 L5.83859116,5.9656945 C5.70359511,6.16056264 5.72288026,6.42998704 5.89644661,6.60355339 L5.89644661,6.60355339 L7.293,8 L5.89644661,9.39644661 L5.83859116,9.4656945 C5.70359511,9.66056264 5.72288026,9.92998704 5.89644661,10.1035534 L5.89644661,10.1035534 L5.9656945,10.1614088 C6.16056264,10.2964049 6.42998704,10.2771197 6.60355339,10.1035534 L6.60355339,10.1035534 L8,8.707 L9.39644661,10.1035534 L9.4656945,10.1614088 C9.66056264,10.2964049 9.92998704,10.2771197 10.1035534,10.1035534 L10.1035534,10.1035534 L10.1614088,10.0343055 C10.2964049,9.83943736 10.2771197,9.57001296 10.1035534,9.39644661 L10.1035534,9.39644661 L8.707,8 L10.1035534,6.60355339 L10.1614088,6.5343055 C10.2964049,6.33943736 10.2771197,6.07001296 10.1035534,5.89644661 L10.1035534,5.89644661 L10.0343055,5.83859116 C9.83943736,5.70359511 9.57001296,5.72288026 9.39644661,5.89644661 L9.39644661,5.89644661 L8,7.293 L6.60355339,5.89644661 Z"})))));var Ot=ie({name:"BaseIconSwitchTransition",setup(e,{slots:o}){let t=Br();return()=>R(vt,{name:"icon-switch-transition",appear:t.value},o)}});var Ja=ie({name:"FadeInExpandTransition",props:{appear:Boolean,group:Boolean,mode:String,onLeave:Function,onAfterLeave:Function,onAfterEnter:Function,width:Boolean,reverse:Boolean},setup(e,{slots:o}){function t(i){e.width?i.style.maxWidth=`${i.offsetWidth}px`:i.style.maxHeight=`${i.offsetHeight}px`,i.offsetWidth}function r(i){e.width?i.style.maxWidth="0":i.style.maxHeight="0",i.offsetWidth;let{onLeave:d}=e;d&&d()}function a(i){e.width?i.style.maxWidth="":i.style.maxHeight="";let{onAfterLeave:d}=e;d&&d()}function l(i){if(i.style.transition="none",e.width){let d=i.offsetWidth;i.style.maxWidth="0",i.offsetWidth,i.style.transition="",i.style.maxWidth=`${d}px`}else if(e.reverse)i.style.maxHeight=`${i.offsetHeight}px`,i.offsetHeight,i.style.transition="",i.style.maxHeight="0";else{let d=i.offsetHeight;i.style.maxHeight="0",i.offsetWidth,i.style.transition="",i.style.maxHeight=`${d}px`}i.offsetWidth}function n(i){var d;e.width?i.style.maxWidth="":e.reverse||(i.style.maxHeight=""),(d=e.onAfterEnter)===null||d===void 0||d.call(e)}return()=>{let i=e.group?uc:vt;return R(i,{name:e.width?"fade-in-width-expand-transition":"fade-in-height-expand-transition",mode:e.mode,appear:e.appear,onEnter:l,onAfterEnter:n,onBeforeLeave:t,onLeave:r,onAfterLeave:a},o)}}});var AS=K("base-icon",` + `)]);var Yo=lo("n-config-provider");var zr="naive-ui-style";function Pe(e){return e}function nS(e,o,t,r,a,l){let n=wt();if(t){let s=()=>{let u=l==null?void 0:l.value;t.mount({id:u===void 0?o:u+o,head:!0,props:{bPrefix:u?`.${u}-`:void 0},anchorMetaName:zr,ssr:n}),Ui.mount({id:"n-global",head:!0,anchorMetaName:zr,ssr:n})};n?s():dr(s)}let i=Te(Yo,null);return V(()=>{var s;let{theme:{common:u,self:f,peers:c={}}={},themeOverrides:p={},builtinThemeOverrides:x={}}=a,{common:T,peers:C}=p,{common:S=void 0,[e]:{common:D=void 0,self:$=void 0,peers:O={}}={}}=(i==null?void 0:i.mergedThemeRef.value)||{},{common:g=void 0,[e]:v={}}=(i==null?void 0:i.mergedThemeOverridesRef.value)||{},{common:w,peers:F={}}=v,B=Vr({},u||D||S||r.common,g,w,T),y=Vr((s=f||$||r.self)===null||s===void 0?void 0:s(B),x,v,p);return{common:B,self:y,peers:Vr({},r.peers,O,c),peerOverrides:Vr({},F,C)}})}nS.props={theme:Object,themeOverrides:Object,builtinThemeOverrides:Object};var Fo=nS;var Ki="n";function Bo(e={},o={defaultBordered:!0}){let t=Te(Yo,null);return{inlineThemeDisabled:t==null?void 0:t.inlineThemeDisabled,mergedRtlRef:t==null?void 0:t.mergedRtlRef,mergedComponentPropsRef:t==null?void 0:t.mergedComponentPropsRef,mergedBreakpointsRef:t==null?void 0:t.mergedBreakpointsRef,mergedBorderedRef:V(()=>{var r,a;let{bordered:l}=e;return l!==void 0?l:(a=(r=t==null?void 0:t.mergedBorderedRef.value)!==null&&r!==void 0?r:o.defaultBordered)!==null&&a!==void 0?a:!0}),mergedClsPrefixRef:V(()=>(t==null?void 0:t.mergedClsPrefixRef.value)||Ki),namespaceRef:V(()=>t==null?void 0:t.mergedNamespaceRef.value)}}var Hv={name:"en-US",global:{undo:"Undo",redo:"Redo",confirm:"Confirm"},Popconfirm:{positiveText:"Confirm",negativeText:"Cancel"},Cascader:{placeholder:"Please Select",loading:"Loading",loadingRequiredMessage:e=>`Please load all ${e}'s descendants before checking it.`},Time:{dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss"},DatePicker:{yearFormat:"yyyy",monthFormat:"MMM",dayFormat:"eeeeee",yearTypeFormat:"yyyy",monthTypeFormat:"yyyy-MM",dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss",quarterFormat:"yyyy-qqq",clear:"Clear",now:"Now",confirm:"Confirm",selectTime:"Select Time",selectDate:"Select Date",datePlaceholder:"Select Date",datetimePlaceholder:"Select Date and Time",monthPlaceholder:"Select Month",yearPlaceholder:"Select Year",quarterPlaceholder:"Select Quarter",startDatePlaceholder:"Start Date",endDatePlaceholder:"End Date",startDatetimePlaceholder:"Start Date and Time",endDatetimePlaceholder:"End Date and Time",monthBeforeYear:!0,firstDayOfWeek:6,today:"Today"},DataTable:{checkTableAll:"Select all in the table",uncheckTableAll:"Unselect all in the table",confirm:"Confirm",clear:"Clear"},Transfer:{sourceTitle:"Source",targetTitle:"Target"},Empty:{description:"No Data"},Select:{placeholder:"Please Select"},TimePicker:{placeholder:"Select Time",positiveText:"OK",negativeText:"Cancel",now:"Now"},Pagination:{goto:"Goto",selectionSuffix:"page"},DynamicTags:{add:"Add"},Log:{loading:"Loading"},Input:{placeholder:"Please Input"},InputNumber:{placeholder:"Please Input"},DynamicInput:{create:"Create"},ThemeEditor:{title:"Theme Editor",clearAllVars:"Clear All Variables",clearSearch:"Clear Search",filterCompName:"Filter Component Name",filterVarName:"Filter Variable Name",import:"Import",export:"Export",restore:"Reset to Default"},Image:{tipPrevious:"Previous picture (\u2190)",tipNext:"Next picture (\u2192)",tipCounterclockwise:"Counterclockwise",tipClockwise:"Clockwise",tipZoomOut:"Zoom out",tipZoomIn:"Zoom in",tipClose:"Close (Esc)"}},Ks=Hv;var kS=Oa(vS()),Nk={name:"en-US",locale:kS.default},qs=Nk;function el(e){let{mergedLocaleRef:o,mergedDateLocaleRef:t}=Te(Yo,null)||{},r=V(()=>{var l,n;return(n=(l=o==null?void 0:o.value)===null||l===void 0?void 0:l[e])!==null&&n!==void 0?n:Ks[e]});return{dateLocaleRef:V(()=>{var l;return(l=t==null?void 0:t.value)!==null&&l!==void 0?l:qs}),localeRef:r}}function Zt(e,o,t){if(!o)return;let r=wt(),a=()=>{let l=t==null?void 0:t.value;o.mount({id:l===void 0?e:l+e,head:!0,anchorMetaName:zr,props:{bPrefix:l?`.${l}-`:void 0},ssr:r}),Ui.mount({id:"n-global",head:!0,anchorMetaName:zr,ssr:r})};r?a():dr(a)}function Ko(e,o,t,r){var a;t||ni("useThemeClass","cssVarsRef is not passed");let l=(a=Te(Yo,null))===null||a===void 0?void 0:a.mergedThemeHashRef,n=Z(""),i=wt(),d,s=`__${e}`,u=()=>{let f=s,c=o?o.value:void 0,p=l==null?void 0:l.value;p&&(f+="-"+p),c&&(f+="-"+c);let{themeOverrides:x,builtinThemeOverrides:T}=r;x&&(f+="-"+st(JSON.stringify(x))),T&&(f+="-"+st(JSON.stringify(T))),n.value=f,d=()=>{let C=t.value,S="";for(let D in C)S+=`${D}: ${C[D]};`;Y(`.${f}`,S).mount({id:f,ssr:i}),d=void 0}};return Mo(()=>{u()}),{themeClass:n,onRender:()=>{d==null||d()}}}function AS(e,o){return le({name:$s(e),setup(){var t;let r=(t=Te(Yo,null))===null||t===void 0?void 0:t.mergedIconsRef;return()=>{var a;let l=(a=r==null?void 0:r.value)===null||a===void 0?void 0:a[e];return l?l():o}}})}var Qs=le({name:"Eye",render(){return R("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},R("path",{d:"M255.66 112c-77.94 0-157.89 45.11-220.83 135.33a16 16 0 0 0-.27 17.77C82.92 340.8 161.8 400 255.66 400c92.84 0 173.34-59.38 221.79-135.25a16.14 16.14 0 0 0 0-17.47C428.89 172.28 347.8 112 255.66 112z",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32"}),R("circle",{cx:"256",cy:"256",r:"80",fill:"none",stroke:"currentColor","stroke-miterlimit":"10","stroke-width":"32"}))}});var Zs=le({name:"EyeOff",render(){return R("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},R("path",{d:"M432 448a15.92 15.92 0 0 1-11.31-4.69l-352-352a16 16 0 0 1 22.62-22.62l352 352A16 16 0 0 1 432 448z",fill:"currentColor"}),R("path",{d:"M255.66 384c-41.49 0-81.5-12.28-118.92-36.5c-34.07-22-64.74-53.51-88.7-91v-.08c19.94-28.57 41.78-52.73 65.24-72.21a2 2 0 0 0 .14-2.94L93.5 161.38a2 2 0 0 0-2.71-.12c-24.92 21-48.05 46.76-69.08 76.92a31.92 31.92 0 0 0-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416a239.13 239.13 0 0 0 75.8-12.58a2 2 0 0 0 .77-3.31l-21.58-21.58a4 4 0 0 0-3.83-1a204.8 204.8 0 0 1-51.16 6.47z",fill:"currentColor"}),R("path",{d:"M490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96a227.34 227.34 0 0 0-74.89 12.83a2 2 0 0 0-.75 3.31l21.55 21.55a4 4 0 0 0 3.88 1a192.82 192.82 0 0 1 50.21-6.69c40.69 0 80.58 12.43 118.55 37c34.71 22.4 65.74 53.88 89.76 91a.13.13 0 0 1 0 .16a310.72 310.72 0 0 1-64.12 72.73a2 2 0 0 0-.15 2.95l19.9 19.89a2 2 0 0 0 2.7.13a343.49 343.49 0 0 0 68.64-78.48a32.2 32.2 0 0 0-.1-34.78z",fill:"currentColor"}),R("path",{d:"M256 160a95.88 95.88 0 0 0-21.37 2.4a2 2 0 0 0-1 3.38l112.59 112.56a2 2 0 0 0 3.38-1A96 96 0 0 0 256 160z",fill:"currentColor"}),R("path",{d:"M165.78 233.66a2 2 0 0 0-3.38 1a96 96 0 0 0 115 115a2 2 0 0 0 1-3.38z",fill:"currentColor"}))}});var Ys=le({name:"Empty",render(){return R("svg",{viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"},R("path",{d:"M26 7.5C26 11.0899 23.0899 14 19.5 14C15.9101 14 13 11.0899 13 7.5C13 3.91015 15.9101 1 19.5 1C23.0899 1 26 3.91015 26 7.5ZM16.8536 4.14645C16.6583 3.95118 16.3417 3.95118 16.1464 4.14645C15.9512 4.34171 15.9512 4.65829 16.1464 4.85355L18.7929 7.5L16.1464 10.1464C15.9512 10.3417 15.9512 10.6583 16.1464 10.8536C16.3417 11.0488 16.6583 11.0488 16.8536 10.8536L19.5 8.20711L22.1464 10.8536C22.3417 11.0488 22.6583 11.0488 22.8536 10.8536C23.0488 10.6583 23.0488 10.3417 22.8536 10.1464L20.2071 7.5L22.8536 4.85355C23.0488 4.65829 23.0488 4.34171 22.8536 4.14645C22.6583 3.95118 22.3417 3.95118 22.1464 4.14645L19.5 6.79289L16.8536 4.14645Z",fill:"currentColor"}),R("path",{d:"M25 22.75V12.5991C24.5572 13.0765 24.053 13.4961 23.5 13.8454V16H17.5L17.3982 16.0068C17.0322 16.0565 16.75 16.3703 16.75 16.75C16.75 18.2688 15.5188 19.5 14 19.5C12.4812 19.5 11.25 18.2688 11.25 16.75L11.2432 16.6482C11.1935 16.2822 10.8797 16 10.5 16H4.5V7.25C4.5 6.2835 5.2835 5.5 6.25 5.5H12.2696C12.4146 4.97463 12.6153 4.47237 12.865 4H6.25C4.45507 4 3 5.45507 3 7.25V22.75C3 24.5449 4.45507 26 6.25 26H21.75C23.5449 26 25 24.5449 25 22.75ZM4.5 22.75V17.5H9.81597L9.85751 17.7041C10.2905 19.5919 11.9808 21 14 21L14.215 20.9947C16.2095 20.8953 17.842 19.4209 18.184 17.5H23.5V22.75C23.5 23.7165 22.7165 24.5 21.75 24.5H6.25C5.2835 24.5 4.5 23.7165 4.5 22.75Z",fill:"currentColor"}))}});var Xs=le({name:"Switcher",render(){return R("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},R("path",{d:"M12 8l10 8l-10 8z"}))}});var Js=le({name:"ChevronDown",render(){return R("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},R("path",{d:"M3.14645 5.64645C3.34171 5.45118 3.65829 5.45118 3.85355 5.64645L8 9.79289L12.1464 5.64645C12.3417 5.45118 12.6583 5.45118 12.8536 5.64645C13.0488 5.84171 13.0488 6.15829 12.8536 6.35355L8.35355 10.8536C8.15829 11.0488 7.84171 11.0488 7.64645 10.8536L3.14645 6.35355C2.95118 6.15829 2.95118 5.84171 3.14645 5.64645Z",fill:"currentColor"}))}});var eu=AS("clear",R("svg",{viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},R("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},R("g",{fill:"currentColor","fill-rule":"nonzero"},R("path",{d:"M8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 C2,4.6862915 4.6862915,2 8,2 Z M6.5343055,5.83859116 C6.33943736,5.70359511 6.07001296,5.72288026 5.89644661,5.89644661 L5.89644661,5.89644661 L5.83859116,5.9656945 C5.70359511,6.16056264 5.72288026,6.42998704 5.89644661,6.60355339 L5.89644661,6.60355339 L7.293,8 L5.89644661,9.39644661 L5.83859116,9.4656945 C5.70359511,9.66056264 5.72288026,9.92998704 5.89644661,10.1035534 L5.89644661,10.1035534 L5.9656945,10.1614088 C6.16056264,10.2964049 6.42998704,10.2771197 6.60355339,10.1035534 L6.60355339,10.1035534 L8,8.707 L9.39644661,10.1035534 L9.4656945,10.1614088 C9.66056264,10.2964049 9.92998704,10.2771197 10.1035534,10.1035534 L10.1035534,10.1035534 L10.1614088,10.0343055 C10.2964049,9.83943736 10.2771197,9.57001296 10.1035534,9.39644661 L10.1035534,9.39644661 L8.707,8 L10.1035534,6.60355339 L10.1614088,6.5343055 C10.2964049,6.33943736 10.2771197,6.07001296 10.1035534,5.89644661 L10.1035534,5.89644661 L10.0343055,5.83859116 C9.83943736,5.70359511 9.57001296,5.72288026 9.39644661,5.89644661 L9.39644661,5.89644661 L8,7.293 L6.60355339,5.89644661 Z"})))));var Ct=le({name:"BaseIconSwitchTransition",setup(e,{slots:o}){let t=Er();return()=>R(kt,{name:"icon-switch-transition",appear:t.value},o)}});var ol=le({name:"FadeInExpandTransition",props:{appear:Boolean,group:Boolean,mode:String,onLeave:Function,onAfterLeave:Function,onAfterEnter:Function,width:Boolean,reverse:Boolean},setup(e,{slots:o}){function t(i){e.width?i.style.maxWidth=`${i.offsetWidth}px`:i.style.maxHeight=`${i.offsetHeight}px`,i.offsetWidth}function r(i){e.width?i.style.maxWidth="0":i.style.maxHeight="0",i.offsetWidth;let{onLeave:d}=e;d&&d()}function a(i){e.width?i.style.maxWidth="":i.style.maxHeight="";let{onAfterLeave:d}=e;d&&d()}function l(i){if(i.style.transition="none",e.width){let d=i.offsetWidth;i.style.maxWidth="0",i.offsetWidth,i.style.transition="",i.style.maxWidth=`${d}px`}else if(e.reverse)i.style.maxHeight=`${i.offsetHeight}px`,i.offsetHeight,i.style.transition="",i.style.maxHeight="0";else{let d=i.offsetHeight;i.style.maxHeight="0",i.offsetWidth,i.style.transition="",i.style.maxHeight=`${d}px`}i.offsetWidth}function n(i){var d;e.width?i.style.maxWidth="":e.reverse||(i.style.maxHeight=""),(d=e.onAfterEnter)===null||d===void 0||d.call(e)}return()=>{let i=e.group?fc:kt;return R(i,{name:e.width?"fade-in-width-expand-transition":"fade-in-height-expand-transition",mode:e.mode,appear:e.appear,onEnter:l,onAfterEnter:n,onBeforeLeave:t,onLeave:r,onAfterLeave:a},o)}}});var DS=G("base-icon",` height: 1em; width: 1em; line-height: 1em; @@ -39,12 +39,12 @@ ${o} position: relative; fill: currentColor; transform: translateZ(0); -`,[X("svg",{height:"1em",width:"1em"})]);var Ct=ie({name:"BaseIcon",props:{role:String,ariaLabel:String,ariaDisabled:{type:Boolean,default:void 0},ariaHidden:{type:Boolean,default:void 0},clsPrefix:{type:String,required:!0},onClick:Function,onMousedown:Function,onMouseup:Function},setup(e){Zt("-base-icon",AS,Be(e,"clsPrefix"))},render(){return R("i",{class:`${this.clsPrefix}-base-icon`,onClick:this.onClick,onMousedown:this.onMousedown,onMouseup:this.onMouseup,role:this.role,"aria-label":this.ariaLabel,"aria-hidden":this.ariaHidden,"aria-disabled":this.ariaDisabled},this.$slots)}});var{cubicBezierEaseInOut:Nk}=Uo;function ut({originalTransform:e="",left:o=0,top:t=0,transition:r=`all .3s ${Nk} !important`}={}){return[X("&.icon-switch-transition-enter-from, &.icon-switch-transition-leave-to",{transform:e+" scale(0.75)",left:o,top:t,opacity:0}),X("&.icon-switch-transition-enter-to, &.icon-switch-transition-leave-from",{transform:`scale(1) ${e}`,left:o,top:t,opacity:1}),X("&.icon-switch-transition-enter-active, &.icon-switch-transition-leave-active",{transformOrigin:"center",position:"absolute",left:o,top:t,transition:r})]}var DS=X([X("@keyframes loading-container-rotate",` +`,[Y("svg",{height:"1em",width:"1em"})]);var bt=le({name:"BaseIcon",props:{role:String,ariaLabel:String,ariaDisabled:{type:Boolean,default:void 0},ariaHidden:{type:Boolean,default:void 0},clsPrefix:{type:String,required:!0},onClick:Function,onMousedown:Function,onMouseup:Function},setup(e){Zt("-base-icon",DS,De(e,"clsPrefix"))},render(){return R("i",{class:`${this.clsPrefix}-base-icon`,onClick:this.onClick,onMousedown:this.onMousedown,onMouseup:this.onMouseup,role:this.role,"aria-label":this.ariaLabel,"aria-hidden":this.ariaHidden,"aria-disabled":this.ariaDisabled},this.$slots)}});var{cubicBezierEaseInOut:_k}=Uo;function ut({originalTransform:e="",left:o=0,top:t=0,transition:r=`all .3s ${_k} !important`}={}){return[Y("&.icon-switch-transition-enter-from, &.icon-switch-transition-leave-to",{transform:e+" scale(0.75)",left:o,top:t,opacity:0}),Y("&.icon-switch-transition-enter-to, &.icon-switch-transition-leave-from",{transform:`scale(1) ${e}`,left:o,top:t,opacity:1}),Y("&.icon-switch-transition-enter-active, &.icon-switch-transition-leave-active",{transformOrigin:"center",position:"absolute",left:o,top:t,transition:r})]}var PS=Y([Y("@keyframes loading-container-rotate",` to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } - `),X("@keyframes loading-layer-rotate",` + `),Y("@keyframes loading-layer-rotate",` 12.5% { -webkit-transform: rotate(135deg); transform: rotate(135deg); @@ -77,7 +77,7 @@ ${o} -webkit-transform: rotate(1080deg); transform: rotate(1080deg); } - `),X("@keyframes loading-left-spin",` + `),Y("@keyframes loading-left-spin",` from { -webkit-transform: rotate(265deg); transform: rotate(265deg); @@ -90,7 +90,7 @@ ${o} -webkit-transform: rotate(265deg); transform: rotate(265deg); } - `),X("@keyframes loading-right-spin",` + `),Y("@keyframes loading-right-spin",` from { -webkit-transform: rotate(-265deg); transform: rotate(-265deg); @@ -103,16 +103,16 @@ ${o} -webkit-transform: rotate(-265deg); transform: rotate(-265deg); } - `),K("base-loading",` + `),G("base-loading",` position: relative; line-height: 0; width: 1em; height: 1em; - `,[J("transition-wrapper",` + `,[X("transition-wrapper",` position: absolute; width: 100%; height: 100%; - `,[ut()]),J("container",` + `,[ut()]),X("container",` display: inline-flex; position: relative; direction: ltr; @@ -124,27 +124,27 @@ ${o} opacity: 1; width: 100%; height: 100%; - `,[J("svg",` + `,[X("svg",` stroke: var(--n-text-color); fill: transparent; position: absolute; height: 100%; overflow: hidden; - `),J("container-layer",` + `),X("container-layer",` position: absolute; width: 100%; height: 100%; animation: loading-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - `,[J("container-layer-left",` + `,[X("container-layer-left",` display: inline-flex; position: relative; width: 50%; height: 100%; overflow: hidden; - `,[J("svg",` + `,[X("svg",` animation: loading-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; width: 200%; - `)]),J("container-layer-patch",` + `)]),X("container-layer-patch",` position: absolute; top: 0; left: 47.5%; @@ -152,31 +152,31 @@ ${o} width: 5%; height: 100%; overflow: hidden; - `,[J("svg",` + `,[X("svg",` left: -900%; width: 2000%; transform: rotate(180deg); - `)]),J("container-layer-right",` + `)]),X("container-layer-right",` display: inline-flex; position: relative; width: 50%; height: 100%; overflow: hidden; - `,[J("svg",` + `,[X("svg",` animation: loading-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; left: -100%; width: 200%; - `)])])]),J("placeholder",` + `)])])]),X("placeholder",` position: absolute; left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%); - `,[ut({left:"50%",top:"50%",originalTransform:"translateX(-50%) translateY(-50%)"})])])]);var Vr=ie({name:"BaseLoading",props:{clsPrefix:{type:String,required:!0},scale:{type:Number,default:1},radius:{type:Number,default:100},strokeWidth:{type:Number,default:28},stroke:{type:String,default:void 0},show:{type:Boolean,default:!0}},setup(e){Zt("-base-loading",DS,Be(e,"clsPrefix"))},render(){let{clsPrefix:e,radius:o,strokeWidth:t,stroke:r,scale:a}=this,l=o/a;return R("div",{class:`${e}-base-loading`,role:"img","aria-label":"loading"},R(Ot,null,{default:()=>this.show?R("div",{key:"icon",class:`${e}-base-loading__transition-wrapper`},R("div",{class:`${e}-base-loading__container`},R("div",{class:`${e}-base-loading__container-layer`},R("div",{class:`${e}-base-loading__container-layer-left`},R("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},R("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o}))),R("div",{class:`${e}-base-loading__container-layer-patch`},R("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},R("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o}))),R("div",{class:`${e}-base-loading__container-layer-right`},R("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},R("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o})))))):R("div",{key:"placeholder",class:`${e}-base-loading__placeholder`},this.$slots)}))}});function ou(e){return Array.isArray(e)?e:[e]}var Xi={STOP:"STOP"};function tu(e,o){let t=o(e);e.children!==void 0&&t!==Xi.STOP&&e.children.forEach(r=>tu(r,o))}function PS(e,o={}){let{preserveGroup:t=!1}=o,r=[],a=t?n=>{n.isLeaf||(r.push(n.key),l(n.children))}:n=>{n.isLeaf||(n.isGroup||r.push(n.key),l(n.children))};function l(n){n.forEach(a)}return l(e),r}function MS(e,o){let{isLeaf:t}=e;return t!==void 0?t:!o(e)}function BS(e){return e.children}function LS(e){return e.key}function ES(){return!1}function NS(e,o){let{isLeaf:t}=e;return!(t===!1&&!Array.isArray(o(e)))}function _S(e){return e.disabled===!0}function IS(e,o){return e.isLeaf===!1&&!Array.isArray(o(e))}function Ji(e){var o;return e==null?[]:Array.isArray(e)?e:(o=e.checkedKeys)!==null&&o!==void 0?o:[]}function ed(e){var o;return e==null||Array.isArray(e)?[]:(o=e.indeterminateKeys)!==null&&o!==void 0?o:[]}function HS(e,o){let t=new Set(e);return o.forEach(r=>{t.has(r)||t.add(r)}),Array.from(t)}function WS(e,o){let t=new Set(e);return o.forEach(r=>{t.has(r)&&t.delete(r)}),Array.from(t)}function VS(e){return(e==null?void 0:e.type)==="group"}function ru(e){let o=new Map;return e.forEach((t,r)=>{o.set(t.key,r)}),t=>{var r;return(r=o.get(t))!==null&&r!==void 0?r:null}}var zS=class extends Error{constructor(){super();this.message="SubtreeNotLoadedError: checking a subtree whose required nodes are not fully loaded."}};function _k(e,o,t,r){return td(o.concat(e),t,r,!1)}function Ik(e,o){let t=new Set;return e.forEach(r=>{let a=o.treeNodeMap.get(r);if(a!==void 0){let l=a.parent;for(;l!==null&&!(l.disabled||t.has(l.key));)t.add(l.key),l=l.parent}}),t}function Hk(e,o,t,r){let a=td(o,t,r,!1),l=td(e,t,r,!0),n=Ik(e,t),i=[];return a.forEach(d=>{(l.has(d)||n.has(d))&&i.push(d)}),i.forEach(d=>a.delete(d)),a}function od(e,o){let{checkedKeys:t,keysToCheck:r,keysToUncheck:a,indeterminateKeys:l,cascade:n,leafOnly:i,checkStrategy:d,allowNotLoaded:s}=e;if(!n)return r!==void 0?{checkedKeys:HS(t,r),indeterminateKeys:Array.from(l)}:a!==void 0?{checkedKeys:WS(t,a),indeterminateKeys:Array.from(l)}:{checkedKeys:Array.from(t),indeterminateKeys:Array.from(l)};let{levelTreeNodeMap:u}=o,f;a!==void 0?f=Hk(a,t,o,s):r!==void 0?f=_k(r,t,o,s):f=td(t,o,s,!1);let m=d==="parent",p=d==="child"||i,c=f,T=new Set,C=Math.max.apply(null,Array.from(u.keys()));for(let g=C;g>=0;g-=1){let k=g===0,U=u.get(g);for(let F of U){if(F.isLeaf)continue;let{key:w,shallowLoaded:y}=F;if(p&&y&&F.children.forEach(b=>{!b.disabled&&!b.isLeaf&&b.shallowLoaded&&c.has(b.key)&&c.delete(b.key)}),F.disabled||!y)continue;let S=!0,O=!1,L=!0;for(let b of F.children){let W=b.key;if(!b.disabled){if(L&&(L=!1),c.has(W))O=!0;else if(T.has(W)){O=!0,S=!1;break}else if(S=!1,O)break}}S&&!L?(m&&F.children.forEach(b=>{!b.disabled&&c.has(b.key)&&c.delete(b.key)}),c.add(w)):O&&T.add(w),k&&p&&c.has(w)&&c.delete(w)}}return{checkedKeys:Array.from(c),indeterminateKeys:Array.from(T)}}function td(e,o,t,r){let{treeNodeMap:a,getChildren:l}=o,n=new Set,i=new Set(e);return e.forEach(d=>{let s=a.get(d);s!==void 0&&tu(s,u=>{if(u.disabled)return Xi.STOP;let{key:f}=u;if(!n.has(f)&&(n.add(f),i.add(f),IS(u.rawNode,l))){if(r)return Xi.STOP;if(!t)throw new zS}})}),i}function jS(e,{includeGroup:o=!1,includeSelf:t=!0},r){var a;let l=r.treeNodeMap,n=e==null?null:(a=l.get(e))!==null&&a!==void 0?a:null,i={keyPath:[],treeNodePath:[],treeNode:n};if(n==null?void 0:n.ignored)return i.treeNode=null,i;for(;n;)!n.ignored&&(o||!n.isGroup)&&i.treeNodePath.push(n),n=n.parent;return i.treeNodePath.reverse(),t||i.treeNodePath.pop(),i.keyPath=i.treeNodePath.map(d=>d.key),i}function $S(e){if(e.length===0)return null;let o=e[0];return o.isGroup||o.ignored||o.disabled?o.getNext():o}function Wk(e,o){let t=e.siblings,r=t.length,{index:a}=e;return o?t[(a+1)%r]:a===t.length-1?null:t[a+1]}function US(e,o,{loop:t=!1,includeDisabled:r=!1}={}){let a=o==="prev"?Vk:Wk,l={reverse:o==="prev"},n=!1,i=null;function d(s){if(s!==null){if(s===e){if(!n)n=!0;else if(!e.disabled&&!e.isGroup){i=e;return}}else if((!s.disabled||r)&&!s.ignored&&!s.isGroup){i=s;return}if(s.isGroup){let u=au(s,l);u!==null?i=u:d(a(s,t))}else{let u=a(s,!1);if(u!==null)d(u);else{let f=zk(s);(f==null?void 0:f.isGroup)?d(a(f,t)):t&&d(a(s,!0))}}}}return d(e),i}function Vk(e,o){let t=e.siblings,r=t.length,{index:a}=e;return o?t[(a-1+r)%r]:a===0?null:t[a-1]}function zk(e){return e.parent}function au(e,o={}){let{reverse:t=!1}=o,{children:r}=e;if(r){let{length:a}=r,l=t?a-1:0,n=t?-1:a,i=t?-1:1;for(let d=l;d!==n;d+=i){let s=r[d];if(!s.disabled&&!s.ignored)if(s.isGroup){let u=au(s,o);if(u!==null)return u}else return s}}return null}var KS={getChild(){return this.ignored?null:au(this)},getParent(){let{parent:e}=this;return(e==null?void 0:e.isGroup)?e.getParent():e},getNext(e={}){return US(this,"next",e)},getPrev(e={}){return US(this,"prev",e)}};function el(e,o){let t=o?new Set(o):void 0,r=[];function a(l){l.forEach(n=>{r.push(n),!(n.isLeaf||!n.children||n.ignored)&&(n.isGroup||t===void 0||t.has(n.key))&&a(n.children)})}return a(e),r}function GS(e,o){let t=e.key;for(;o;){if(o.key===t)return!0;o=o.parent}return!1}function qS(e,o,t,r,a,l=null,n=0){let i=[];return e.forEach((d,s)=>{var u;let f=Object.create(r);if(f.rawNode=d,f.siblings=i,f.level=n,f.index=s,f.isFirstChild=s===0,f.isLastChild=s+1===e.length,f.parent=l,!f.ignored){let m=a(d);Array.isArray(m)&&(f.children=qS(m,o,t,r,a,f,n+1))}i.push(f),o.set(f.key,f),t.has(n)||t.set(n,[]),(u=t.get(n))===null||u===void 0||u.push(f)}),i}function lu(e,o={}){var t;let r=new Map,a=new Map,{getDisabled:l=_S,getIgnored:n=ES,getIsGroup:i=VS,getKey:d=LS}=o,s=(t=o.getChildren)!==null&&t!==void 0?t:BS,u=o.ignoreEmptyChildren?F=>{let w=s(F);return Array.isArray(w)?w.length?w:null:w}:s,f=Object.assign({get key(){return d(this.rawNode)},get disabled(){return l(this.rawNode)},get isGroup(){return i(this.rawNode)},get isLeaf(){return MS(this.rawNode,u)},get shallowLoaded(){return NS(this.rawNode,u)},get ignored(){return n(this.rawNode)},contains(F){return GS(this,F)}},KS),m=qS(e,r,a,f,u);function p(F){if(F==null)return null;let w=r.get(F);return w&&!w.isGroup&&!w.ignored?w:null}function c(F){if(F==null)return null;let w=r.get(F);return w&&!w.ignored?w:null}function T(F,w){let y=c(F);return y?y.getPrev(w):null}function C(F,w){let y=c(F);return y?y.getNext(w):null}function g(F){let w=c(F);return w?w.getParent():null}function k(F){let w=c(F);return w?w.getChild():null}let U={treeNodes:m,treeNodeMap:r,levelTreeNodeMap:a,maxLevel:Math.max(...a.keys()),getChildren:u,getFlattenedNodes(F){return el(m,F)},getNode:p,getPrev:T,getNext:C,getParent:g,getChild:k,getFirstAvailableNode(){return $S(m)},getPath(F,w={}){return jS(F,w,U)},getCheckedKeys(F,w={}){let{cascade:y=!0,leafOnly:S=!1,checkStrategy:O="all",allowNotLoaded:L=!1}=w;return od({checkedKeys:Ji(F),indeterminateKeys:ed(F),cascade:y,leafOnly:S,checkStrategy:O,allowNotLoaded:L},U)},check(F,w,y={}){let{cascade:S=!0,leafOnly:O=!1,checkStrategy:L="all",allowNotLoaded:b=!1}=y;return od({checkedKeys:Ji(w),indeterminateKeys:ed(w),keysToCheck:F==null?[]:ou(F),cascade:S,leafOnly:O,checkStrategy:L,allowNotLoaded:b},U)},uncheck(F,w,y={}){let{cascade:S=!0,leafOnly:O=!1,checkStrategy:L="all",allowNotLoaded:b=!1}=y;return od({checkedKeys:Ji(w),indeterminateKeys:ed(w),keysToUncheck:F==null?[]:ou(F),cascade:S,leafOnly:O,checkStrategy:L,allowNotLoaded:b},U)},getNonLeafKeys(F={}){return PS(m,F)}};return U}var pe={neutralBase:"#000",neutralInvertBase:"#fff",neutralTextBase:"#fff",neutralPopover:"rgb(72, 72, 78)",neutralCard:"rgb(24, 24, 28)",neutralModal:"rgb(44, 44, 50)",neutralBody:"rgb(16, 16, 20)",alpha1:"0.9",alpha2:"0.82",alpha3:"0.52",alpha4:"0.38",alpha5:"0.28",alphaClose:"0.52",alphaDisabled:"0.38",alphaDisabledInput:"0.06",alphaPending:"0.09",alphaTablePending:"0.06",alphaTableStriped:"0.05",alphaPressed:"0.05",alphaAvatar:"0.18",alphaRail:"0.2",alphaProgressRail:"0.12",alphaBorder:"0.24",alphaDivider:"0.09",alphaInput:"0.1",alphaAction:"0.06",alphaTab:"0.04",alphaScrollbar:"0.2",alphaScrollbarHover:"0.3",alphaCode:"0.12",alphaTag:"0",primaryHover:"#7fe7c4",primaryDefault:"#63e2b7",primaryActive:"#5acea7",primarySuppl:"rgb(42, 148, 125)",infoHover:"#8acbec",infoDefault:"#70c0e8",infoActive:"#66afd3",infoSuppl:"rgb(56, 137, 197)",errorHover:"#e98b8b",errorDefault:"#e88080",errorActive:"#e57272",errorSuppl:"rgb(208, 58, 82)",warningHover:"#f5d599",warningDefault:"#f2c97d",warningActive:"#e6c260",warningSuppl:"rgb(240, 138, 0)",successHover:"#7fe7c4",successDefault:"#63e2b7",successActive:"#5acea7",successSuppl:"rgb(42, 148, 125)"},jk=St(pe.neutralBase),QS=St(pe.neutralInvertBase),$k="rgba("+QS.slice(0,3).join(", ")+", ";function Ke(e){return $k+String(e)+")"}function Uk(e){let o=Array.from(QS);return o[3]=Number(e),xe(jk,o)}var Kk=Object.assign(Object.assign({name:"common"},Uo),{baseColor:pe.neutralBase,primaryColor:pe.primaryDefault,primaryColorHover:pe.primaryHover,primaryColorPressed:pe.primaryActive,primaryColorSuppl:pe.primarySuppl,infoColor:pe.infoDefault,infoColorHover:pe.infoHover,infoColorPressed:pe.infoActive,infoColorSuppl:pe.infoSuppl,successColor:pe.successDefault,successColorHover:pe.successHover,successColorPressed:pe.successActive,successColorSuppl:pe.successSuppl,warningColor:pe.warningDefault,warningColorHover:pe.warningHover,warningColorPressed:pe.warningActive,warningColorSuppl:pe.warningSuppl,errorColor:pe.errorDefault,errorColorHover:pe.errorHover,errorColorPressed:pe.errorActive,errorColorSuppl:pe.errorSuppl,textColorBase:pe.neutralTextBase,textColor1:Ke(pe.alpha1),textColor2:Ke(pe.alpha2),textColor3:Ke(pe.alpha3),textColorDisabled:Ke(pe.alpha4),placeholderColor:Ke(pe.alpha4),placeholderColorDisabled:Ke(pe.alpha5),iconColor:Ke(pe.alpha4),iconColorDisabled:Ke(pe.alpha5),iconColorHover:Ke(Number(pe.alpha4)*1.25),iconColorPressed:Ke(Number(pe.alpha4)*.8),opacity1:pe.alpha1,opacity2:pe.alpha2,opacity3:pe.alpha3,opacity4:pe.alpha4,opacity5:pe.alpha5,dividerColor:Ke(pe.alphaDivider),borderColor:Ke(pe.alphaBorder),closeColorHover:Ke(Number(pe.alphaClose)*1.25),closeColor:Ke(Number(pe.alphaClose)),closeColorPressed:Ke(Number(pe.alphaClose)*.8),closeColorDisabled:Ke(pe.alpha4),clearColor:Ke(pe.alpha4),clearColorHover:sr(Ke(pe.alpha4),{alpha:1.25}),clearColorPressed:sr(Ke(pe.alpha4),{alpha:.8}),scrollbarColor:Ke(pe.alphaScrollbar),scrollbarColorHover:Ke(pe.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Ke(pe.alphaProgressRail),railColor:Ke(pe.alphaRail),popoverColor:pe.neutralPopover,tableColor:pe.neutralCard,cardColor:pe.neutralCard,modalColor:pe.neutralModal,bodyColor:pe.neutralBody,tagColor:Uk(pe.alphaTag),avatarColor:Ke(pe.alphaAvatar),invertedColor:pe.neutralBase,inputColor:Ke(pe.alphaInput),codeColor:Ke(pe.alphaCode),tabColor:Ke(pe.alphaTab),actionColor:Ke(pe.alphaAction),tableHeaderColor:Ke(pe.alphaAction),hoverColor:Ke(pe.alphaPending),tableColorHover:Ke(pe.alphaTablePending),tableColorStriped:Ke(pe.alphaTableStriped),pressedColor:Ke(pe.alphaPressed),opacityDisabled:pe.alphaDisabled,inputColorDisabled:Ke(pe.alphaDisabledInput),buttonColor2:"rgba(255, 255, 255, .06)",buttonColor2Hover:"rgba(255, 255, 255, .09)",buttonColor2Pressed:"rgba(255, 255, 255, .05)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .24), 0 3px 6px 0 rgba(0, 0, 0, .18), 0 5px 12px 4px rgba(0, 0, 0, .12)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .24), 0 6px 12px 0 rgba(0, 0, 0, .16), 0 9px 18px 8px rgba(0, 0, 0, .10)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),D=Kk;var Oe={neutralBase:"#FFF",neutralInvertBase:"#000",neutralTextBase:"#000",neutralPopover:"#fff",neutralCard:"#fff",neutralModal:"#fff",neutralBody:"#fff",alpha1:"0.82",alpha2:"0.72",alpha3:"0.38",alpha4:"0.24",alpha5:"0.18",alphaClose:"0.52",alphaDisabled:"0.5",alphaDisabledInput:"0.02",alphaPending:"0.05",alphaTablePending:"0.02",alphaPressed:"0.07",alphaAvatar:"0.2",alphaRail:"0.14",alphaProgressRail:".08",alphaBorder:"0.12",alphaDivider:"0.06",alphaInput:"0",alphaAction:"0.02",alphaTab:"0.04",alphaScrollbar:"0.25",alphaScrollbarHover:"0.4",alphaCode:"0.05",alphaTag:"0.02",primaryHover:"#36ad6a",primaryDefault:"#18a058",primaryActive:"#0c7a43",primarySuppl:"#36ad6a",infoHover:"#4098fc",infoDefault:"#2080f0",infoActive:"#1060c9",infoSuppl:"#4098fc",errorHover:"#de576d",errorDefault:"#d03050",errorActive:"#ab1f3f",errorSuppl:"#de576d",warningHover:"#fcb040",warningDefault:"#f0a020",warningActive:"#c97c10",warningSuppl:"#fcb040",successHover:"#36ad6a",successDefault:"#18a058",successActive:"#0c7a43",successSuppl:"#36ad6a"},Gk=St(Oe.neutralBase),ZS=St(Oe.neutralInvertBase),qk="rgba("+ZS.slice(0,3).join(", ")+", ";function YS(e){return qk+String(e)+")"}function Wo(e){let o=Array.from(ZS);return o[3]=Number(e),xe(Gk,o)}var Qk=Object.assign(Object.assign({name:"common"},Uo),{baseColor:Oe.neutralBase,primaryColor:Oe.primaryDefault,primaryColorHover:Oe.primaryHover,primaryColorPressed:Oe.primaryActive,primaryColorSuppl:Oe.primarySuppl,infoColor:Oe.infoDefault,infoColorHover:Oe.infoHover,infoColorPressed:Oe.infoActive,infoColorSuppl:Oe.infoSuppl,successColor:Oe.successDefault,successColorHover:Oe.successHover,successColorPressed:Oe.successActive,successColorSuppl:Oe.successSuppl,warningColor:Oe.warningDefault,warningColorHover:Oe.warningHover,warningColorPressed:Oe.warningActive,warningColorSuppl:Oe.warningSuppl,errorColor:Oe.errorDefault,errorColorHover:Oe.errorHover,errorColorPressed:Oe.errorActive,errorColorSuppl:Oe.errorSuppl,textColorBase:Oe.neutralTextBase,textColor1:"rgb(31, 34, 37)",textColor2:"rgb(51, 54, 57)",textColor3:"rgb(118, 124, 130)",textColorDisabled:Wo(Oe.alpha4),placeholderColor:Wo(Oe.alpha4),placeholderColorDisabled:Wo(Oe.alpha5),iconColor:Wo(Oe.alpha4),iconColorHover:sr(Wo(Oe.alpha4),{lightness:.75}),iconColorPressed:sr(Wo(Oe.alpha4),{lightness:.9}),iconColorDisabled:Wo(Oe.alpha5),opacity1:Oe.alpha1,opacity2:Oe.alpha2,opacity3:Oe.alpha3,opacity4:Oe.alpha4,opacity5:Oe.alpha5,dividerColor:"rgb(239, 239, 245)",borderColor:"rgb(224, 224, 230)",closeColor:Wo(Number(Oe.alphaClose)),closeColorHover:Wo(Number(Oe.alphaClose)*1.25),closeColorPressed:Wo(Number(Oe.alphaClose)*.8),closeColorDisabled:Wo(Oe.alpha4),clearColor:Wo(Oe.alpha4),clearColorHover:sr(Wo(Oe.alpha4),{lightness:.75}),clearColorPressed:sr(Wo(Oe.alpha4),{lightness:.9}),scrollbarColor:YS(Oe.alphaScrollbar),scrollbarColorHover:YS(Oe.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Wo(Oe.alphaProgressRail),railColor:"rgb(219, 219, 223)",popoverColor:Oe.neutralPopover,tableColor:Oe.neutralCard,cardColor:Oe.neutralCard,modalColor:Oe.neutralModal,bodyColor:Oe.neutralBody,tagColor:"rgb(250, 250, 252)",avatarColor:Wo(Oe.alphaAvatar),invertedColor:"rgb(0, 20, 40)",inputColor:Wo(Oe.alphaInput),codeColor:"rgb(244, 244, 248)",tabColor:"rgb(247, 247, 250)",actionColor:"rgb(250, 250, 252)",tableHeaderColor:"rgb(250, 250, 252)",hoverColor:"rgb(243, 243, 245)",tableColorHover:"rgba(0, 0, 100, 0.03)",tableColorStriped:"rgba(0, 0, 100, 0.02)",pressedColor:"rgb(237, 237, 239)",opacityDisabled:Oe.alphaDisabled,inputColorDisabled:"rgb(250, 250, 252)",buttonColor2:"rgba(46, 51, 56, .05)",buttonColor2Hover:"rgba(46, 51, 56, .09)",buttonColor2Pressed:"rgba(46, 51, 56, .13)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .08), 0 3px 6px 0 rgba(0, 0, 0, .06), 0 5px 12px 4px rgba(0, 0, 0, .04)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .12), 0 6px 16px 0 rgba(0, 0, 0, .08), 0 9px 28px 8px rgba(0, 0, 0, .05)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),ce=Qk;var XS={iconSizeSmall:"34px",iconSizeMedium:"40px",iconSizeLarge:"46px",iconSizeHuge:"52px"};var nu=e=>{let{textColorDisabled:o,iconColor:t,textColor2:r,fontSizeSmall:a,fontSizeMedium:l,fontSizeLarge:n,fontSizeHuge:i}=e;return Object.assign(Object.assign({},XS),{fontSizeSmall:a,fontSizeMedium:l,fontSizeLarge:n,fontSizeHuge:i,textColor:o,iconColor:t,extraTextColor:r})},Zk={name:"Empty",common:ce,self:nu},ft=Zk;var Yk={name:"Empty",common:D,self:nu},pt=Yk;var JS=K("empty",` + `,[ut({left:"50%",top:"50%",originalTransform:"translateX(-50%) translateY(-50%)"})])])]);var jr=le({name:"BaseLoading",props:{clsPrefix:{type:String,required:!0},scale:{type:Number,default:1},radius:{type:Number,default:100},strokeWidth:{type:Number,default:28},stroke:{type:String,default:void 0},show:{type:Boolean,default:!0}},setup(e){Zt("-base-loading",PS,De(e,"clsPrefix"))},render(){let{clsPrefix:e,radius:o,strokeWidth:t,stroke:r,scale:a}=this,l=o/a;return R("div",{class:`${e}-base-loading`,role:"img","aria-label":"loading"},R(Ct,null,{default:()=>this.show?R("div",{key:"icon",class:`${e}-base-loading__transition-wrapper`},R("div",{class:`${e}-base-loading__container`},R("div",{class:`${e}-base-loading__container-layer`},R("div",{class:`${e}-base-loading__container-layer-left`},R("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},R("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o}))),R("div",{class:`${e}-base-loading__container-layer-patch`},R("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},R("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o}))),R("div",{class:`${e}-base-loading__container-layer-right`},R("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},R("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o})))))):R("div",{key:"placeholder",class:`${e}-base-loading__placeholder`},this.$slots)}))}});function ou(e){return Array.isArray(e)?e:[e]}var Yi={STOP:"STOP"};function tu(e,o){let t=o(e);e.children!==void 0&&t!==Yi.STOP&&e.children.forEach(r=>tu(r,o))}function MS(e,o={}){let{preserveGroup:t=!1}=o,r=[],a=t?n=>{n.isLeaf||(r.push(n.key),l(n.children))}:n=>{n.isLeaf||(n.isGroup||r.push(n.key),l(n.children))};function l(n){n.forEach(a)}return l(e),r}function BS(e,o){let{isLeaf:t}=e;return t!==void 0?t:!o(e)}function LS(e){return e.children}function ES(e){return e.key}function NS(){return!1}function _S(e,o){let{isLeaf:t}=e;return!(t===!1&&!Array.isArray(o(e)))}function IS(e){return e.disabled===!0}function HS(e,o){return e.isLeaf===!1&&!Array.isArray(o(e))}function Xi(e){var o;return e==null?[]:Array.isArray(e)?e:(o=e.checkedKeys)!==null&&o!==void 0?o:[]}function Ji(e){var o;return e==null||Array.isArray(e)?[]:(o=e.indeterminateKeys)!==null&&o!==void 0?o:[]}function WS(e,o){let t=new Set(e);return o.forEach(r=>{t.has(r)||t.add(r)}),Array.from(t)}function VS(e,o){let t=new Set(e);return o.forEach(r=>{t.has(r)&&t.delete(r)}),Array.from(t)}function zS(e){return(e==null?void 0:e.type)==="group"}function ru(e){let o=new Map;return e.forEach((t,r)=>{o.set(t.key,r)}),t=>{var r;return(r=o.get(t))!==null&&r!==void 0?r:null}}var jS=class extends Error{constructor(){super();this.message="SubtreeNotLoadedError: checking a subtree whose required nodes are not fully loaded."}};function Ik(e,o,t,r){return od(o.concat(e),t,r,!1)}function Hk(e,o){let t=new Set;return e.forEach(r=>{let a=o.treeNodeMap.get(r);if(a!==void 0){let l=a.parent;for(;l!==null&&!(l.disabled||t.has(l.key));)t.add(l.key),l=l.parent}}),t}function Wk(e,o,t,r){let a=od(o,t,r,!1),l=od(e,t,r,!0),n=Hk(e,t),i=[];return a.forEach(d=>{(l.has(d)||n.has(d))&&i.push(d)}),i.forEach(d=>a.delete(d)),a}function ed(e,o){let{checkedKeys:t,keysToCheck:r,keysToUncheck:a,indeterminateKeys:l,cascade:n,leafOnly:i,checkStrategy:d,allowNotLoaded:s}=e;if(!n)return r!==void 0?{checkedKeys:WS(t,r),indeterminateKeys:Array.from(l)}:a!==void 0?{checkedKeys:VS(t,a),indeterminateKeys:Array.from(l)}:{checkedKeys:Array.from(t),indeterminateKeys:Array.from(l)};let{levelTreeNodeMap:u}=o,f;a!==void 0?f=Wk(a,t,o,s):r!==void 0?f=Ik(r,t,o,s):f=od(t,o,s,!1);let c=d==="parent",p=d==="child"||i,x=f,T=new Set,C=Math.max.apply(null,Array.from(u.keys()));for(let S=C;S>=0;S-=1){let D=S===0,$=u.get(S);for(let O of $){if(O.isLeaf)continue;let{key:g,shallowLoaded:v}=O;if(p&&v&&O.children.forEach(y=>{!y.disabled&&!y.isLeaf&&y.shallowLoaded&&x.has(y.key)&&x.delete(y.key)}),O.disabled||!v)continue;let w=!0,F=!1,B=!0;for(let y of O.children){let W=y.key;if(!y.disabled){if(B&&(B=!1),x.has(W))F=!0;else if(T.has(W)){F=!0,w=!1;break}else if(w=!1,F)break}}w&&!B?(c&&O.children.forEach(y=>{!y.disabled&&x.has(y.key)&&x.delete(y.key)}),x.add(g)):F&&T.add(g),D&&p&&x.has(g)&&x.delete(g)}}return{checkedKeys:Array.from(x),indeterminateKeys:Array.from(T)}}function od(e,o,t,r){let{treeNodeMap:a,getChildren:l}=o,n=new Set,i=new Set(e);return e.forEach(d=>{let s=a.get(d);s!==void 0&&tu(s,u=>{if(u.disabled)return Yi.STOP;let{key:f}=u;if(!n.has(f)&&(n.add(f),i.add(f),HS(u.rawNode,l))){if(r)return Yi.STOP;if(!t)throw new jS}})}),i}function $S(e,{includeGroup:o=!1,includeSelf:t=!0},r){var a;let l=r.treeNodeMap,n=e==null?null:(a=l.get(e))!==null&&a!==void 0?a:null,i={keyPath:[],treeNodePath:[],treeNode:n};if(n==null?void 0:n.ignored)return i.treeNode=null,i;for(;n;)!n.ignored&&(o||!n.isGroup)&&i.treeNodePath.push(n),n=n.parent;return i.treeNodePath.reverse(),t||i.treeNodePath.pop(),i.keyPath=i.treeNodePath.map(d=>d.key),i}function US(e){if(e.length===0)return null;let o=e[0];return o.isGroup||o.ignored||o.disabled?o.getNext():o}function Vk(e,o){let t=e.siblings,r=t.length,{index:a}=e;return o?t[(a+1)%r]:a===t.length-1?null:t[a+1]}function KS(e,o,{loop:t=!1,includeDisabled:r=!1}={}){let a=o==="prev"?zk:Vk,l={reverse:o==="prev"},n=!1,i=null;function d(s){if(s!==null){if(s===e){if(!n)n=!0;else if(!e.disabled&&!e.isGroup){i=e;return}}else if((!s.disabled||r)&&!s.ignored&&!s.isGroup){i=s;return}if(s.isGroup){let u=au(s,l);u!==null?i=u:d(a(s,t))}else{let u=a(s,!1);if(u!==null)d(u);else{let f=jk(s);(f==null?void 0:f.isGroup)?d(a(f,t)):t&&d(a(s,!0))}}}}return d(e),i}function zk(e,o){let t=e.siblings,r=t.length,{index:a}=e;return o?t[(a-1+r)%r]:a===0?null:t[a-1]}function jk(e){return e.parent}function au(e,o={}){let{reverse:t=!1}=o,{children:r}=e;if(r){let{length:a}=r,l=t?a-1:0,n=t?-1:a,i=t?-1:1;for(let d=l;d!==n;d+=i){let s=r[d];if(!s.disabled&&!s.ignored)if(s.isGroup){let u=au(s,o);if(u!==null)return u}else return s}}return null}var GS={getChild(){return this.ignored?null:au(this)},getParent(){let{parent:e}=this;return(e==null?void 0:e.isGroup)?e.getParent():e},getNext(e={}){return KS(this,"next",e)},getPrev(e={}){return KS(this,"prev",e)}};function tl(e,o){let t=o?new Set(o):void 0,r=[];function a(l){l.forEach(n=>{r.push(n),!(n.isLeaf||!n.children||n.ignored)&&(n.isGroup||t===void 0||t.has(n.key))&&a(n.children)})}return a(e),r}function qS(e,o){let t=e.key;for(;o;){if(o.key===t)return!0;o=o.parent}return!1}function QS(e,o,t,r,a,l=null,n=0){let i=[];return e.forEach((d,s)=>{var u;let f=Object.create(r);if(f.rawNode=d,f.siblings=i,f.level=n,f.index=s,f.isFirstChild=s===0,f.isLastChild=s+1===e.length,f.parent=l,!f.ignored){let c=a(d);Array.isArray(c)&&(f.children=QS(c,o,t,r,a,f,n+1))}i.push(f),o.set(f.key,f),t.has(n)||t.set(n,[]),(u=t.get(n))===null||u===void 0||u.push(f)}),i}function lu(e,o={}){var t;let r=new Map,a=new Map,{getDisabled:l=IS,getIgnored:n=NS,getIsGroup:i=zS,getKey:d=ES}=o,s=(t=o.getChildren)!==null&&t!==void 0?t:LS,u=o.ignoreEmptyChildren?O=>{let g=s(O);return Array.isArray(g)?g.length?g:null:g}:s,f=Object.assign({get key(){return d(this.rawNode)},get disabled(){return l(this.rawNode)},get isGroup(){return i(this.rawNode)},get isLeaf(){return BS(this.rawNode,u)},get shallowLoaded(){return _S(this.rawNode,u)},get ignored(){return n(this.rawNode)},contains(O){return qS(this,O)}},GS),c=QS(e,r,a,f,u);function p(O){if(O==null)return null;let g=r.get(O);return g&&!g.isGroup&&!g.ignored?g:null}function x(O){if(O==null)return null;let g=r.get(O);return g&&!g.ignored?g:null}function T(O,g){let v=x(O);return v?v.getPrev(g):null}function C(O,g){let v=x(O);return v?v.getNext(g):null}function S(O){let g=x(O);return g?g.getParent():null}function D(O){let g=x(O);return g?g.getChild():null}let $={treeNodes:c,treeNodeMap:r,levelTreeNodeMap:a,maxLevel:Math.max(...a.keys()),getChildren:u,getFlattenedNodes(O){return tl(c,O)},getNode:p,getPrev:T,getNext:C,getParent:S,getChild:D,getFirstAvailableNode(){return US(c)},getPath(O,g={}){return $S(O,g,$)},getCheckedKeys(O,g={}){let{cascade:v=!0,leafOnly:w=!1,checkStrategy:F="all",allowNotLoaded:B=!1}=g;return ed({checkedKeys:Xi(O),indeterminateKeys:Ji(O),cascade:v,leafOnly:w,checkStrategy:F,allowNotLoaded:B},$)},check(O,g,v={}){let{cascade:w=!0,leafOnly:F=!1,checkStrategy:B="all",allowNotLoaded:y=!1}=v;return ed({checkedKeys:Xi(g),indeterminateKeys:Ji(g),keysToCheck:O==null?[]:ou(O),cascade:w,leafOnly:F,checkStrategy:B,allowNotLoaded:y},$)},uncheck(O,g,v={}){let{cascade:w=!0,leafOnly:F=!1,checkStrategy:B="all",allowNotLoaded:y=!1}=v;return ed({checkedKeys:Xi(g),indeterminateKeys:Ji(g),keysToUncheck:O==null?[]:ou(O),cascade:w,leafOnly:F,checkStrategy:B,allowNotLoaded:y},$)},getNonLeafKeys(O={}){return MS(c,O)}};return $}var ue={neutralBase:"#000",neutralInvertBase:"#fff",neutralTextBase:"#fff",neutralPopover:"rgb(72, 72, 78)",neutralCard:"rgb(24, 24, 28)",neutralModal:"rgb(44, 44, 50)",neutralBody:"rgb(16, 16, 20)",alpha1:"0.9",alpha2:"0.82",alpha3:"0.52",alpha4:"0.38",alpha5:"0.28",alphaClose:"0.52",alphaDisabled:"0.38",alphaDisabledInput:"0.06",alphaPending:"0.09",alphaTablePending:"0.06",alphaTableStriped:"0.05",alphaPressed:"0.05",alphaAvatar:"0.18",alphaRail:"0.2",alphaProgressRail:"0.12",alphaBorder:"0.24",alphaDivider:"0.09",alphaInput:"0.1",alphaAction:"0.06",alphaTab:"0.04",alphaScrollbar:"0.2",alphaScrollbarHover:"0.3",alphaCode:"0.12",alphaTag:"0",primaryHover:"#7fe7c4",primaryDefault:"#63e2b7",primaryActive:"#5acea7",primarySuppl:"rgb(42, 148, 125)",infoHover:"#8acbec",infoDefault:"#70c0e8",infoActive:"#66afd3",infoSuppl:"rgb(56, 137, 197)",errorHover:"#e98b8b",errorDefault:"#e88080",errorActive:"#e57272",errorSuppl:"rgb(208, 58, 82)",warningHover:"#f5d599",warningDefault:"#f2c97d",warningActive:"#e6c260",warningSuppl:"rgb(240, 138, 0)",successHover:"#7fe7c4",successDefault:"#63e2b7",successActive:"#5acea7",successSuppl:"rgb(42, 148, 125)"},$k=gt(ue.neutralBase),ZS=gt(ue.neutralInvertBase),Uk="rgba("+ZS.slice(0,3).join(", ")+", ";function Ue(e){return Uk+String(e)+")"}function Kk(e){let o=Array.from(ZS);return o[3]=Number(e),me($k,o)}var Gk=Object.assign(Object.assign({name:"common"},Uo),{baseColor:ue.neutralBase,primaryColor:ue.primaryDefault,primaryColorHover:ue.primaryHover,primaryColorPressed:ue.primaryActive,primaryColorSuppl:ue.primarySuppl,infoColor:ue.infoDefault,infoColorHover:ue.infoHover,infoColorPressed:ue.infoActive,infoColorSuppl:ue.infoSuppl,successColor:ue.successDefault,successColorHover:ue.successHover,successColorPressed:ue.successActive,successColorSuppl:ue.successSuppl,warningColor:ue.warningDefault,warningColorHover:ue.warningHover,warningColorPressed:ue.warningActive,warningColorSuppl:ue.warningSuppl,errorColor:ue.errorDefault,errorColorHover:ue.errorHover,errorColorPressed:ue.errorActive,errorColorSuppl:ue.errorSuppl,textColorBase:ue.neutralTextBase,textColor1:Ue(ue.alpha1),textColor2:Ue(ue.alpha2),textColor3:Ue(ue.alpha3),textColorDisabled:Ue(ue.alpha4),placeholderColor:Ue(ue.alpha4),placeholderColorDisabled:Ue(ue.alpha5),iconColor:Ue(ue.alpha4),iconColorDisabled:Ue(ue.alpha5),iconColorHover:Ue(Number(ue.alpha4)*1.25),iconColorPressed:Ue(Number(ue.alpha4)*.8),opacity1:ue.alpha1,opacity2:ue.alpha2,opacity3:ue.alpha3,opacity4:ue.alpha4,opacity5:ue.alpha5,dividerColor:Ue(ue.alphaDivider),borderColor:Ue(ue.alphaBorder),closeColorHover:Ue(Number(ue.alphaClose)*1.25),closeColor:Ue(Number(ue.alphaClose)),closeColorPressed:Ue(Number(ue.alphaClose)*.8),closeColorDisabled:Ue(ue.alpha4),clearColor:Ue(ue.alpha4),clearColorHover:ur(Ue(ue.alpha4),{alpha:1.25}),clearColorPressed:ur(Ue(ue.alpha4),{alpha:.8}),scrollbarColor:Ue(ue.alphaScrollbar),scrollbarColorHover:Ue(ue.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Ue(ue.alphaProgressRail),railColor:Ue(ue.alphaRail),popoverColor:ue.neutralPopover,tableColor:ue.neutralCard,cardColor:ue.neutralCard,modalColor:ue.neutralModal,bodyColor:ue.neutralBody,tagColor:Kk(ue.alphaTag),avatarColor:Ue(ue.alphaAvatar),invertedColor:ue.neutralBase,inputColor:Ue(ue.alphaInput),codeColor:Ue(ue.alphaCode),tabColor:Ue(ue.alphaTab),actionColor:Ue(ue.alphaAction),tableHeaderColor:Ue(ue.alphaAction),hoverColor:Ue(ue.alphaPending),tableColorHover:Ue(ue.alphaTablePending),tableColorStriped:Ue(ue.alphaTableStriped),pressedColor:Ue(ue.alphaPressed),opacityDisabled:ue.alphaDisabled,inputColorDisabled:Ue(ue.alphaDisabledInput),buttonColor2:"rgba(255, 255, 255, .06)",buttonColor2Hover:"rgba(255, 255, 255, .09)",buttonColor2Pressed:"rgba(255, 255, 255, .05)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .24), 0 3px 6px 0 rgba(0, 0, 0, .18), 0 5px 12px 4px rgba(0, 0, 0, .12)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .24), 0 6px 12px 0 rgba(0, 0, 0, .16), 0 9px 18px 8px rgba(0, 0, 0, .10)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),P=Gk;var Fe={neutralBase:"#FFF",neutralInvertBase:"#000",neutralTextBase:"#000",neutralPopover:"#fff",neutralCard:"#fff",neutralModal:"#fff",neutralBody:"#fff",alpha1:"0.82",alpha2:"0.72",alpha3:"0.38",alpha4:"0.24",alpha5:"0.18",alphaClose:"0.52",alphaDisabled:"0.5",alphaDisabledInput:"0.02",alphaPending:"0.05",alphaTablePending:"0.02",alphaPressed:"0.07",alphaAvatar:"0.2",alphaRail:"0.14",alphaProgressRail:".08",alphaBorder:"0.12",alphaDivider:"0.06",alphaInput:"0",alphaAction:"0.02",alphaTab:"0.04",alphaScrollbar:"0.25",alphaScrollbarHover:"0.4",alphaCode:"0.05",alphaTag:"0.02",primaryHover:"#36ad6a",primaryDefault:"#18a058",primaryActive:"#0c7a43",primarySuppl:"#36ad6a",infoHover:"#4098fc",infoDefault:"#2080f0",infoActive:"#1060c9",infoSuppl:"#4098fc",errorHover:"#de576d",errorDefault:"#d03050",errorActive:"#ab1f3f",errorSuppl:"#de576d",warningHover:"#fcb040",warningDefault:"#f0a020",warningActive:"#c97c10",warningSuppl:"#fcb040",successHover:"#36ad6a",successDefault:"#18a058",successActive:"#0c7a43",successSuppl:"#36ad6a"},qk=gt(Fe.neutralBase),YS=gt(Fe.neutralInvertBase),Qk="rgba("+YS.slice(0,3).join(", ")+", ";function XS(e){return Qk+String(e)+")"}function Wo(e){let o=Array.from(YS);return o[3]=Number(e),me(qk,o)}var Zk=Object.assign(Object.assign({name:"common"},Uo),{baseColor:Fe.neutralBase,primaryColor:Fe.primaryDefault,primaryColorHover:Fe.primaryHover,primaryColorPressed:Fe.primaryActive,primaryColorSuppl:Fe.primarySuppl,infoColor:Fe.infoDefault,infoColorHover:Fe.infoHover,infoColorPressed:Fe.infoActive,infoColorSuppl:Fe.infoSuppl,successColor:Fe.successDefault,successColorHover:Fe.successHover,successColorPressed:Fe.successActive,successColorSuppl:Fe.successSuppl,warningColor:Fe.warningDefault,warningColorHover:Fe.warningHover,warningColorPressed:Fe.warningActive,warningColorSuppl:Fe.warningSuppl,errorColor:Fe.errorDefault,errorColorHover:Fe.errorHover,errorColorPressed:Fe.errorActive,errorColorSuppl:Fe.errorSuppl,textColorBase:Fe.neutralTextBase,textColor1:"rgb(31, 34, 37)",textColor2:"rgb(51, 54, 57)",textColor3:"rgb(118, 124, 130)",textColorDisabled:Wo(Fe.alpha4),placeholderColor:Wo(Fe.alpha4),placeholderColorDisabled:Wo(Fe.alpha5),iconColor:Wo(Fe.alpha4),iconColorHover:ur(Wo(Fe.alpha4),{lightness:.75}),iconColorPressed:ur(Wo(Fe.alpha4),{lightness:.9}),iconColorDisabled:Wo(Fe.alpha5),opacity1:Fe.alpha1,opacity2:Fe.alpha2,opacity3:Fe.alpha3,opacity4:Fe.alpha4,opacity5:Fe.alpha5,dividerColor:"rgb(239, 239, 245)",borderColor:"rgb(224, 224, 230)",closeColor:Wo(Number(Fe.alphaClose)),closeColorHover:Wo(Number(Fe.alphaClose)*1.25),closeColorPressed:Wo(Number(Fe.alphaClose)*.8),closeColorDisabled:Wo(Fe.alpha4),clearColor:Wo(Fe.alpha4),clearColorHover:ur(Wo(Fe.alpha4),{lightness:.75}),clearColorPressed:ur(Wo(Fe.alpha4),{lightness:.9}),scrollbarColor:XS(Fe.alphaScrollbar),scrollbarColorHover:XS(Fe.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Wo(Fe.alphaProgressRail),railColor:"rgb(219, 219, 223)",popoverColor:Fe.neutralPopover,tableColor:Fe.neutralCard,cardColor:Fe.neutralCard,modalColor:Fe.neutralModal,bodyColor:Fe.neutralBody,tagColor:"rgb(250, 250, 252)",avatarColor:Wo(Fe.alphaAvatar),invertedColor:"rgb(0, 20, 40)",inputColor:Wo(Fe.alphaInput),codeColor:"rgb(244, 244, 248)",tabColor:"rgb(247, 247, 250)",actionColor:"rgb(250, 250, 252)",tableHeaderColor:"rgb(250, 250, 252)",hoverColor:"rgb(243, 243, 245)",tableColorHover:"rgba(0, 0, 100, 0.03)",tableColorStriped:"rgba(0, 0, 100, 0.02)",pressedColor:"rgb(237, 237, 239)",opacityDisabled:Fe.alphaDisabled,inputColorDisabled:"rgb(250, 250, 252)",buttonColor2:"rgba(46, 51, 56, .05)",buttonColor2Hover:"rgba(46, 51, 56, .09)",buttonColor2Pressed:"rgba(46, 51, 56, .13)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .08), 0 3px 6px 0 rgba(0, 0, 0, .06), 0 5px 12px 4px rgba(0, 0, 0, .04)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .12), 0 6px 16px 0 rgba(0, 0, 0, .08), 0 9px 28px 8px rgba(0, 0, 0, .05)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),pe=Zk;var JS={iconSizeSmall:"34px",iconSizeMedium:"40px",iconSizeLarge:"46px",iconSizeHuge:"52px"};var nu=e=>{let{textColorDisabled:o,iconColor:t,textColor2:r,fontSizeSmall:a,fontSizeMedium:l,fontSizeLarge:n,fontSizeHuge:i}=e;return Object.assign(Object.assign({},JS),{fontSizeSmall:a,fontSizeMedium:l,fontSizeLarge:n,fontSizeHuge:i,textColor:o,iconColor:t,extraTextColor:r})},Yk={name:"Empty",common:pe,self:nu},ft=Yk;var Xk={name:"Empty",common:P,self:nu},pt=Xk;var eg=G("empty",` display: flex; flex-direction: column; align-items: center; font-size: var(--n-font-size); -`,[J("icon",` +`,[X("icon",` width: var(--n-icon-size); height: var(--n-icon-size); font-size: var(--n-icon-size); @@ -184,132 +184,132 @@ ${o} color: var(--n-icon-color); transition: color .3s var(--n-bezier); - `,[X("+",[J("description",` + `,[Y("+",[X("description",` margin-top: 8px; - `)])]),J("description",` + `)])]),X("description",` transition: color .3s var(--n-bezier); color: var(--n-text-color); - `),J("extra",` + `),X("extra",` text-align: center; transition: color .3s var(--n-bezier); margin-top: 12px; color: var(--n-extra-text-color); - `)]);var Xk=Object.assign(Object.assign({},Oo.props),{description:String,showDescription:{type:Boolean,default:!0},showIcon:{type:Boolean,default:!0},size:{type:String,default:"medium"},renderIcon:Function}),iu=ie({name:"Empty",props:Xk,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Bo(e),r=Oo("Empty","-empty",JS,ft,e,o),{localeRef:a}=Xa("Empty"),l=Re(Yo,null),n=z(()=>{var u,f,m;return(u=e.description)!==null&&u!==void 0?u:(m=(f=l==null?void 0:l.mergedComponentPropsRef.value)===null||f===void 0?void 0:f.Empty)===null||m===void 0?void 0:m.description}),i=z(()=>{var u,f;return((f=(u=l==null?void 0:l.mergedComponentPropsRef.value)===null||u===void 0?void 0:u.Empty)===null||f===void 0?void 0:f.renderIcon)||(()=>R(Ys,null))}),d=z(()=>{let{size:u}=e,{common:{cubicBezierEaseInOut:f},self:{[Ae("iconSize",u)]:m,[Ae("fontSize",u)]:p,textColor:c,iconColor:T,extraTextColor:C}}=r.value;return{"--n-icon-size":m,"--n-font-size":p,"--n-bezier":f,"--n-text-color":c,"--n-icon-color":T,"--n-extra-text-color":C}}),s=t?Ko("empty",z(()=>{let u="",{size:f}=e;return u+=f[0],u}),d,e):void 0;return{mergedClsPrefix:o,mergedRenderIcon:i,localizedDescription:z(()=>n.value||a.value.description),cssVars:t?void 0:d,themeClass:s==null?void 0:s.themeClass,onRender:s==null?void 0:s.onRender}},render(){let{$slots:e,mergedClsPrefix:o,onRender:t}=this;return t==null||t(),R("div",{class:[`${o}-empty`,this.themeClass],style:this.cssVars},this.showIcon?R("div",{class:`${o}-empty__icon`},e.icon?e.icon():R(Ct,{clsPrefix:o},{default:this.mergedRenderIcon})):null,this.showDescription?R("div",{class:`${o}-empty__description`},e.default?e.default():this.localizedDescription):null,e.extra?R("div",{class:`${o}-empty__extra`},e.extra()):null)}});var du=e=>{let{scrollbarColor:o,scrollbarColorHover:t}=e;return{color:o,colorHover:t}},Jk={name:"Scrollbar",common:ce,self:du},yo=Jk;var eA={name:"Scrollbar",common:D,self:du},io=eA;var{cubicBezierEaseInOut:eg}=Uo;function og({name:e="fade-in",enterDuration:o="0.2s",leaveDuration:t="0.2s",enterCubicBezier:r=eg,leaveCubicBezier:a=eg}={}){return[X(`&.${e}-transition-enter-active`,{transition:`all ${o} ${r}!important`}),X(`&.${e}-transition-leave-active`,{transition:`all ${t} ${a}!important`}),X(`&.${e}-transition-enter-from, &.${e}-transition-leave-to`,{opacity:0}),X(`&.${e}-transition-leave-from, &.${e}-transition-enter-to`,{opacity:1})]}var tg=K("scrollbar",` + `)]);var Jk=Object.assign(Object.assign({},Fo.props),{description:String,showDescription:{type:Boolean,default:!0},showIcon:{type:Boolean,default:!0},size:{type:String,default:"medium"},renderIcon:Function}),iu=le({name:"Empty",props:Jk,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Bo(e),r=Fo("Empty","-empty",eg,ft,e,o),{localeRef:a}=el("Empty"),l=Te(Yo,null),n=V(()=>{var u,f,c;return(u=e.description)!==null&&u!==void 0?u:(c=(f=l==null?void 0:l.mergedComponentPropsRef.value)===null||f===void 0?void 0:f.Empty)===null||c===void 0?void 0:c.description}),i=V(()=>{var u,f;return((f=(u=l==null?void 0:l.mergedComponentPropsRef.value)===null||u===void 0?void 0:u.Empty)===null||f===void 0?void 0:f.renderIcon)||(()=>R(Ys,null))}),d=V(()=>{let{size:u}=e,{common:{cubicBezierEaseInOut:f},self:{[ve("iconSize",u)]:c,[ve("fontSize",u)]:p,textColor:x,iconColor:T,extraTextColor:C}}=r.value;return{"--n-icon-size":c,"--n-font-size":p,"--n-bezier":f,"--n-text-color":x,"--n-icon-color":T,"--n-extra-text-color":C}}),s=t?Ko("empty",V(()=>{let u="",{size:f}=e;return u+=f[0],u}),d,e):void 0;return{mergedClsPrefix:o,mergedRenderIcon:i,localizedDescription:V(()=>n.value||a.value.description),cssVars:t?void 0:d,themeClass:s==null?void 0:s.themeClass,onRender:s==null?void 0:s.onRender}},render(){let{$slots:e,mergedClsPrefix:o,onRender:t}=this;return t==null||t(),R("div",{class:[`${o}-empty`,this.themeClass],style:this.cssVars},this.showIcon?R("div",{class:`${o}-empty__icon`},e.icon?e.icon():R(bt,{clsPrefix:o},{default:this.mergedRenderIcon})):null,this.showDescription?R("div",{class:`${o}-empty__description`},e.default?e.default():this.localizedDescription):null,e.extra?R("div",{class:`${o}-empty__extra`},e.extra()):null)}});var du=e=>{let{scrollbarColor:o,scrollbarColorHover:t}=e;return{color:o,colorHover:t}},eA={name:"Scrollbar",common:pe,self:du},bo=eA;var oA={name:"Scrollbar",common:P,self:du},no=oA;var{cubicBezierEaseInOut:og}=Uo;function tg({name:e="fade-in",enterDuration:o="0.2s",leaveDuration:t="0.2s",enterCubicBezier:r=og,leaveCubicBezier:a=og}={}){return[Y(`&.${e}-transition-enter-active`,{transition:`all ${o} ${r}!important`}),Y(`&.${e}-transition-leave-active`,{transition:`all ${t} ${a}!important`}),Y(`&.${e}-transition-enter-from, &.${e}-transition-leave-to`,{opacity:0}),Y(`&.${e}-transition-leave-from, &.${e}-transition-enter-to`,{opacity:1})]}var rg=G("scrollbar",` overflow: hidden; position: relative; z-index: auto; height: 100%; width: 100%; -`,[X(">",[K("scrollbar-container",` +`,[Y(">",[G("scrollbar-container",` width: 100%; overflow: scroll; height: 100%; max-height: inherit; scrollbar-width: none; - `,[X("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",` + `,[Y("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",` width: 0; height: 0; display: none; - `),X(">",[K("scrollbar-content",` + `),Y(">",[G("scrollbar-content",` box-sizing: border-box; min-width: 100%; - `)])]),K("scrollbar-rail",` + `)])]),G("scrollbar-rail",` position: absolute; pointer-events: none; user-select: none; - `,[Se("horizontal",` + `,[xe("horizontal",` left: 2px; right: 2px; bottom: 4px; height: var(--n-scrollbar-height); - `,[X(">",[J("scrollbar",` + `,[Y(">",[X("scrollbar",` height: var(--n-scrollbar-height); border-radius: var(--n-scrollbar-border-radius); right: 0; - `)])]),Se("vertical",` + `)])]),xe("vertical",` right: 4px; top: 2px; bottom: 2px; width: var(--n-scrollbar-width); - `,[X(">",[J("scrollbar",` + `,[Y(">",[X("scrollbar",` width: var(--n-scrollbar-width); border-radius: var(--n-scrollbar-border-radius); bottom: 0; - `)])]),Se("disabled",[X(">",[J("scrollbar",{pointerEvents:"none"})])]),X(">",[J("scrollbar",` + `)])]),xe("disabled",[Y(">",[X("scrollbar",{pointerEvents:"none"})])]),Y(">",[X("scrollbar",` position: absolute; cursor: pointer; pointer-events: all; background-color: var(--n-scrollbar-color); transition: background-color .2s var(--n-scrollbar-bezier); - `,[og(),X("&:hover",{backgroundColor:"var(--n-scrollbar-color-hover)"})])])])])]);var oA=Object.assign(Object.assign({},Oo.props),{size:{type:Number,default:5},duration:{type:Number,default:0},scrollable:{type:Boolean,default:!0},xScrollable:Boolean,useUnifiedContainer:Boolean,triggerDisplayManually:Boolean,container:Function,content:Function,containerClass:String,containerStyle:[String,Object],contentClass:String,contentStyle:[String,Object],horizontalRailStyle:[String,Object],verticalRailStyle:[String,Object],onScroll:Function,onWheel:Function,onResize:Function,internalOnUpdateScrollLeft:Function}),rg=ie({name:"Scrollbar",props:oA,inheritAttrs:!1,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Bo(e),r=Z(null),a=Z(null),l=Z(null),n=Z(null),i=Z(null),d=Z(null),s=Z(null),u=Z(null),f=Z(null),m=Z(null),p=Z(null),c=Z(0),T=Z(0),C=Z(!1),g=Z(!1),k=!1,U=!1,F,w,y=0,S=0,O=0,L=0,b=Si(),W=z(()=>{let{value:Q}=u,{value:ae}=d,{value:we}=m;return Q===null||ae===null||we===null?0:Math.min(Q,we*Q/ae+e.size*1.5)}),B=z(()=>`${W.value}px`),ne=z(()=>{let{value:Q}=f,{value:ae}=s,{value:we}=p;return Q===null||ae===null||we===null?0:we*Q/ae+e.size*1.5}),ge=z(()=>`${ne.value}px`),Pe=z(()=>{let{value:Q}=u,{value:ae}=c,{value:we}=d,{value:We}=m;if(Q===null||we===null||We===null)return 0;{let eo=we-Q;return eo?ae/eo*(We-W.value):0}}),ue=z(()=>`${Pe.value}px`),se=z(()=>{let{value:Q}=f,{value:ae}=T,{value:we}=s,{value:We}=p;if(Q===null||we===null||We===null)return 0;{let eo=we-Q;return eo?ae/eo*(We-ne.value):0}}),Te=z(()=>`${se.value}px`),je=z(()=>{let{value:Q}=u,{value:ae}=d;return Q!==null&&ae!==null&&ae>Q}),Ge=z(()=>{let{value:Q}=f,{value:ae}=s;return Q!==null&&ae!==null&&ae>Q}),ze=z(()=>{let{container:Q}=e;return Q?Q():a.value}),Ze=z(()=>{let{content:Q}=e;return Q?Q():l.value}),Ye=Y,ho=Q=>{let{onResize:ae}=e;ae&&ae(Q),Y()},ko=(Q,ae)=>{if(!e.scrollable)return;if(typeof Q=="number"){Ie(Q,ae!=null?ae:0,0,!1,"auto");return}let{left:we,top:We,index:eo,elSize:$e,position:oo,behavior:Qe,el:Go,debounce:ct=!0}=Q;(we!==void 0||We!==void 0)&&Ie(we!=null?we:0,We!=null?We:0,0,!1,Qe),Go!==void 0?Ie(0,Go.offsetTop,Go.offsetHeight,ct,Qe):eo!==void 0&&$e!==void 0?Ie(0,eo*$e,$e,ct,Qe):oo==="bottom"?Ie(0,Number.MAX_SAFE_INTEGER,0,!1,Qe):oo==="top"&&Ie(0,0,0,!1,Qe)},He=(Q,ae)=>{if(!e.scrollable)return;let{value:we}=ze;!we||(typeof Q=="object"?we.scrollBy(Q):we.scrollBy(Q,ae||0))};function Ie(Q,ae,we,We,eo){let{value:$e}=ze;if(!!$e){if(We){let{scrollTop:oo,offsetHeight:Qe}=$e;if(ae>oo){ae+we<=oo+Qe||$e.scrollTo({left:Q,top:ae+we-Qe,behavior:eo});return}}$e.scrollTo({left:Q,top:ae,behavior:eo})}}function fo(){x(),h(),Y()}function Ce(){ro()}function ro(){E(),le()}function E(){w!==void 0&&window.clearTimeout(w),w=window.setTimeout(()=>{g.value=!1},e.duration)}function le(){F!==void 0&&window.clearTimeout(F),F=window.setTimeout(()=>{C.value=!1},e.duration)}function x(){F!==void 0&&window.clearTimeout(F),C.value=!0}function h(){w!==void 0&&window.clearTimeout(w),g.value=!0}function P(Q){let{onScroll:ae}=e;ae&&ae(Q),N()}function N(){let{value:Q}=ze;Q&&(c.value=Q.scrollTop,T.value=Q.scrollLeft)}function H(){let{value:Q}=Ze;Q&&(d.value=Q.offsetHeight,s.value=Q.offsetWidth);let{value:ae}=ze;ae&&(u.value=ae.offsetHeight,f.value=ae.offsetWidth);let{value:we}=i,{value:We}=n;we&&(p.value=we.offsetWidth),We&&(m.value=We.offsetHeight)}function $(){let{value:Q}=ze;Q&&(c.value=Q.scrollTop,T.value=Q.scrollLeft,u.value=Q.offsetHeight,f.value=Q.offsetWidth,d.value=Q.scrollHeight,s.value=Q.scrollWidth);let{value:ae}=i,{value:we}=n;ae&&(p.value=ae.offsetWidth),we&&(m.value=we.offsetHeight)}function Y(){!e.scrollable||(e.useUnifiedContainer?$():(H(),N()))}function I(Q){var ae;return!((ae=r.value)===null||ae===void 0?void 0:ae.contains(Q.target))}function V(Q){Q.preventDefault(),Q.stopPropagation(),U=!0,go("mousemove",window,q,!0),go("mouseup",window,A,!0),S=T.value,O=Q.clientX}function q(Q){if(!U)return;F!==void 0&&window.clearTimeout(F),w!==void 0&&window.clearTimeout(w);let{value:ae}=f,{value:we}=s,{value:We}=ne;if(ae===null||we===null)return;let $e=(Q.clientX-O)*(we-ae)/(ae-We),oo=we-ae,Qe=S+$e;Qe=Math.min(oo,Qe),Qe=Math.max(Qe,0);let{value:Go}=ze;if(Go){Go.scrollLeft=Qe;let{internalOnUpdateScrollLeft:ct}=e;ct&&ct(Qe)}}function A(Q){Q.preventDefault(),Q.stopPropagation(),So("mousemove",window,q,!0),So("mouseup",window,A,!0),U=!1,Y(),I(Q)&&ro()}function _(Q){Q.preventDefault(),Q.stopPropagation(),k=!0,go("mousemove",window,j,!0),go("mouseup",window,re,!0),y=c.value,L=Q.clientY}function j(Q){if(!k)return;F!==void 0&&window.clearTimeout(F),w!==void 0&&window.clearTimeout(w);let{value:ae}=u,{value:we}=d,{value:We}=W;if(ae===null||we===null)return;let $e=(Q.clientY-L)*(we-ae)/(ae-We),oo=we-ae,Qe=y+$e;Qe=Math.min(oo,Qe),Qe=Math.max(Qe,0);let{value:Go}=ze;Go&&(Go.scrollTop=Qe)}function re(Q){Q.preventDefault(),Q.stopPropagation(),So("mousemove",window,j,!0),So("mouseup",window,re,!0),k=!1,Y(),I(Q)&&ro()}Mo(()=>{let{value:Q}=Ge,{value:ae}=je,{value:we}=o,{value:We}=i,{value:eo}=n;We&&(Q?We.classList.remove(`${we}-scrollbar-rail--disabled`):We.classList.add(`${we}-scrollbar-rail--disabled`)),eo&&(ae?eo.classList.remove(`${we}-scrollbar-rail--disabled`):eo.classList.add(`${we}-scrollbar-rail--disabled`))}),mo(()=>{e.container||Y()}),_o(()=>{F!==void 0&&window.clearTimeout(F),w!==void 0&&window.clearTimeout(w),So("mousemove",window,j,!0),So("mouseup",window,re,!0)});let me=Oo("Scrollbar","-scrollbar",tg,yo,e,o),ye=z(()=>{let{common:{cubicBezierEaseInOut:Q,scrollbarBorderRadius:ae,scrollbarHeight:we,scrollbarWidth:We},self:{color:eo,colorHover:$e}}=me.value;return{"--n-scrollbar-bezier":Q,"--n-scrollbar-color":eo,"--n-scrollbar-color-hover":$e,"--n-scrollbar-border-radius":ae,"--n-scrollbar-width":We,"--n-scrollbar-height":we}}),ke=t?Ko("scrollbar",void 0,ye,e):void 0;return Object.assign(Object.assign({},{scrollTo:ko,scrollBy:He,sync:Y,syncUnifiedContainer:$,handleMouseEnterWrapper:fo,handleMouseLeaveWrapper:Ce}),{mergedClsPrefix:o,containerScrollTop:c,wrapperRef:r,containerRef:a,contentRef:l,yRailRef:n,xRailRef:i,needYBar:je,needXBar:Ge,yBarSizePx:B,xBarSizePx:ge,yBarTopPx:ue,xBarLeftPx:Te,isShowXBar:C,isShowYBar:g,isIos:b,handleScroll:P,handleContentResize:Ye,handleContainerResize:ho,handleYScrollMouseDown:_,handleXScrollMouseDown:V,cssVars:t?void 0:ye,themeClass:ke==null?void 0:ke.themeClass,onRender:ke==null?void 0:ke.onRender})},render(){var e;let{$slots:o,mergedClsPrefix:t,triggerDisplayManually:r}=this;if(!this.scrollable)return(e=o.default)===null||e===void 0?void 0:e.call(o);let a=()=>{var l,n;return(l=this.onRender)===null||l===void 0||l.call(this),R("div",yl(this.$attrs,{role:"none",ref:"wrapperRef",class:[`${t}-scrollbar`,this.themeClass],style:this.cssVars,onMouseenter:r?void 0:this.handleMouseEnterWrapper,onMouseleave:r?void 0:this.handleMouseLeaveWrapper}),[this.container?(n=o.default)===null||n===void 0?void 0:n.call(o):R("div",{role:"none",ref:"containerRef",class:[`${t}-scrollbar-container`,this.containerClass],style:this.containerStyle,onScroll:this.handleScroll,onWheel:this.onWheel},R(At,{onResize:this.handleContentResize},{default:()=>R("div",{ref:"contentRef",role:"none",style:[{width:this.xScrollable?"fit-content":null},this.contentStyle],class:[`${t}-scrollbar-content`,this.contentClass]},o)})),R("div",{ref:"yRailRef",class:`${t}-scrollbar-rail ${t}-scrollbar-rail--vertical`,style:this.horizontalRailStyle,"aria-hidden":!0},R(vt,{name:"fade-in-transition"},{default:()=>this.needYBar&&this.isShowYBar&&!this.isIos?R("div",{class:`${t}-scrollbar-rail__scrollbar`,style:{height:this.yBarSizePx,top:this.yBarTopPx},onMousedown:this.handleYScrollMouseDown}):null})),R("div",{ref:"xRailRef",class:`${t}-scrollbar-rail ${t}-scrollbar-rail--horizontal`,style:this.verticalRailStyle,"aria-hidden":!0},R(vt,{name:"fade-in-transition"},{default:()=>this.needXBar&&this.isShowXBar&&!this.isIos?R("div",{class:`${t}-scrollbar-rail__scrollbar`,style:{width:this.xBarSizePx,left:this.xBarLeftPx},onMousedown:this.handleXScrollMouseDown}):null}))])};return this.container?a():R(At,{onResize:this.handleContainerResize},{default:a})}}),rd=rg,en=rg;var ag={height:"calc(var(--n-option-height) * 7.6)",paddingSmall:"4px 0",paddingMedium:"4px 0",paddingLarge:"4px 0",paddingHuge:"4px 0",optionPaddingSmall:"0 12px",optionPaddingMedium:"0 12px",optionPaddingLarge:"0 12px",optionPaddingHuge:"0 12px",loadingSize:"18px"};var su=e=>{let{borderRadius:o,popoverColor:t,textColor3:r,dividerColor:a,textColor2:l,primaryColorPressed:n,textColorDisabled:i,primaryColor:d,opacityDisabled:s,hoverColor:u,fontSizeSmall:f,fontSizeMedium:m,fontSizeLarge:p,fontSizeHuge:c,heightSmall:T,heightMedium:C,heightLarge:g,heightHuge:k}=e;return Object.assign(Object.assign({},ag),{optionFontSizeSmall:f,optionFontSizeMedium:m,optionFontSizeLarge:p,optionFontSizeHuge:c,optionHeightSmall:T,optionHeightMedium:C,optionHeightLarge:g,optionHeightHuge:k,borderRadius:o,color:t,groupHeaderTextColor:r,actionDividerColor:a,optionTextColor:l,optionTextColorPressed:n,optionTextColorDisabled:i,optionTextColorActive:d,optionOpacityDisabled:s,optionCheckColor:d,optionColorPending:u,optionColorActive:u,actionTextColor:l,loadingColor:d})},tA=Le({name:"InternalSelectMenu",common:ce,peers:{Scrollbar:yo,Empty:ft},self:su}),ca=tA;var rA={name:"InternalSelectMenu",common:D,peers:{Scrollbar:io,Empty:pt},self:su},Dt=rA;var{cubicBezierEaseIn:lg,cubicBezierEaseOut:ng}=Uo;function uu({transformOrigin:e="inherit",duration:o=".2s",enterScale:t=".9",originalTransform:r="",originalTransition:a=""}={}){return[X("&.fade-in-scale-up-transition-leave-active",{transformOrigin:e,transition:`opacity ${o} ${lg}, transform ${o} ${lg} ${a&&","+a}`}),X("&.fade-in-scale-up-transition-enter-active",{transformOrigin:e,transition:`opacity ${o} ${ng}, transform ${o} ${ng} ${a&&","+a}`}),X("&.fade-in-scale-up-transition-enter-from, &.fade-in-scale-up-transition-leave-to",{opacity:0,transform:`${r} scale(${t})`}),X("&.fade-in-scale-up-transition-leave-from, &.fade-in-scale-up-transition-enter-to",{opacity:1,transform:`${r} scale(1)`})]}var ig=K("base-wave",` + `,[tg(),Y("&:hover",{backgroundColor:"var(--n-scrollbar-color-hover)"})])])])])]);var tA=Object.assign(Object.assign({},Fo.props),{size:{type:Number,default:5},duration:{type:Number,default:0},scrollable:{type:Boolean,default:!0},xScrollable:Boolean,useUnifiedContainer:Boolean,triggerDisplayManually:Boolean,container:Function,content:Function,containerClass:String,containerStyle:[String,Object],contentClass:String,contentStyle:[String,Object],horizontalRailStyle:[String,Object],verticalRailStyle:[String,Object],onScroll:Function,onWheel:Function,onResize:Function,internalOnUpdateScrollLeft:Function}),ag=le({name:"Scrollbar",props:tA,inheritAttrs:!1,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Bo(e),r=Z(null),a=Z(null),l=Z(null),n=Z(null),i=Z(null),d=Z(null),s=Z(null),u=Z(null),f=Z(null),c=Z(null),p=Z(null),x=Z(0),T=Z(0),C=Z(!1),S=Z(!1),D=!1,$=!1,O,g,v=0,w=0,F=0,B=0,y=hi(),W=V(()=>{let{value:Q}=u,{value:re}=d,{value:Se}=c;return Q===null||re===null||Se===null?0:Math.min(Q,Se*Q/re+e.size*1.5)}),_=V(()=>`${W.value}px`),ae=V(()=>{let{value:Q}=f,{value:re}=s,{value:Se}=p;return Q===null||re===null||Se===null?0:Se*Q/re+e.size*1.5}),he=V(()=>`${ae.value}px`),Me=V(()=>{let{value:Q}=u,{value:re}=x,{value:Se}=d,{value:_e}=c;if(Q===null||Se===null||_e===null)return 0;{let Je=Se-Q;return Je?re/Je*(_e-W.value):0}}),de=V(()=>`${Me.value}px`),ie=V(()=>{let{value:Q}=f,{value:re}=T,{value:Se}=s,{value:_e}=p;if(Q===null||Se===null||_e===null)return 0;{let Je=Se-Q;return Je?re/Je*(_e-ae.value):0}}),ge=V(()=>`${ie.value}px`),Ve=V(()=>{let{value:Q}=u,{value:re}=d;return Q!==null&&re!==null&&re>Q}),Ke=V(()=>{let{value:Q}=f,{value:re}=s;return Q!==null&&re!==null&&re>Q}),He=V(()=>{let{container:Q}=e;return Q?Q():a.value}),Xe=V(()=>{let{content:Q}=e;return Q?Q():l.value}),Qe=U,wo=Q=>{let{onResize:re}=e;re&&re(Q),U()},Do=(Q,re)=>{if(!e.scrollable)return;if(typeof Q=="number"){We(Q,re!=null?re:0,0,!1,"auto");return}let{left:Se,top:_e,index:Je,elSize:ze,position:eo,behavior:Ge,el:Go,debounce:ct=!0}=Q;(Se!==void 0||_e!==void 0)&&We(Se!=null?Se:0,_e!=null?_e:0,0,!1,Ge),Go!==void 0?We(0,Go.offsetTop,Go.offsetHeight,ct,Ge):Je!==void 0&&ze!==void 0?We(0,Je*ze,ze,ct,Ge):eo==="bottom"?We(0,Number.MAX_SAFE_INTEGER,0,!1,Ge):eo==="top"&&We(0,0,0,!1,Ge)},Be=(Q,re)=>{if(!e.scrollable)return;let{value:Se}=He;!Se||(typeof Q=="object"?Se.scrollBy(Q):Se.scrollBy(Q,re||0))};function We(Q,re,Se,_e,Je){let{value:ze}=He;if(!!ze){if(_e){let{scrollTop:eo,offsetHeight:Ge}=ze;if(re>eo){re+Se<=eo+Ge||ze.scrollTo({left:Q,top:re+Se-Ge,behavior:Je});return}}ze.scrollTo({left:Q,top:re,behavior:Je})}}function ho(){m(),h(),U()}function we(){qe()}function qe(){to(),vo()}function to(){g!==void 0&&window.clearTimeout(g),g=window.setTimeout(()=>{S.value=!1},e.duration)}function vo(){O!==void 0&&window.clearTimeout(O),O=window.setTimeout(()=>{C.value=!1},e.duration)}function m(){O!==void 0&&window.clearTimeout(O),C.value=!0}function h(){g!==void 0&&window.clearTimeout(g),S.value=!0}function k(Q){let{onScroll:re}=e;re&&re(Q),E()}function E(){let{value:Q}=He;Q&&(x.value=Q.scrollTop,T.value=Q.scrollLeft)}function I(){let{value:Q}=Xe;Q&&(d.value=Q.offsetHeight,s.value=Q.offsetWidth);let{value:re}=He;re&&(u.value=re.offsetHeight,f.value=re.offsetWidth);let{value:Se}=i,{value:_e}=n;Se&&(p.value=Se.offsetWidth),_e&&(c.value=_e.offsetHeight)}function j(){let{value:Q}=He;Q&&(x.value=Q.scrollTop,T.value=Q.scrollLeft,u.value=Q.offsetHeight,f.value=Q.offsetWidth,d.value=Q.scrollHeight,s.value=Q.scrollWidth);let{value:re}=i,{value:Se}=n;re&&(p.value=re.offsetWidth),Se&&(c.value=Se.offsetHeight)}function U(){!e.scrollable||(e.useUnifiedContainer?j():(I(),E()))}function L(Q){var re;return!((re=r.value)===null||re===void 0?void 0:re.contains(Q.target))}function K(Q){Q.preventDefault(),Q.stopPropagation(),$=!0,So("mousemove",window,H,!0),So("mouseup",window,b,!0),w=T.value,F=Q.clientX}function H(Q){if(!$)return;O!==void 0&&window.clearTimeout(O),g!==void 0&&window.clearTimeout(g);let{value:re}=f,{value:Se}=s,{value:_e}=ae;if(re===null||Se===null)return;let ze=(Q.clientX-F)*(Se-re)/(re-_e),eo=Se-re,Ge=w+ze;Ge=Math.min(eo,Ge),Ge=Math.max(Ge,0);let{value:Go}=He;if(Go){Go.scrollLeft=Ge;let{internalOnUpdateScrollLeft:ct}=e;ct&&ct(Ge)}}function b(Q){Q.preventDefault(),Q.stopPropagation(),xo("mousemove",window,H,!0),xo("mouseup",window,b,!0),$=!1,U(),L(Q)&&qe()}function N(Q){Q.preventDefault(),Q.stopPropagation(),D=!0,So("mousemove",window,z,!0),So("mouseup",window,te,!0),v=x.value,B=Q.clientY}function z(Q){if(!D)return;O!==void 0&&window.clearTimeout(O),g!==void 0&&window.clearTimeout(g);let{value:re}=u,{value:Se}=d,{value:_e}=W;if(re===null||Se===null)return;let ze=(Q.clientY-B)*(Se-re)/(re-_e),eo=Se-re,Ge=v+ze;Ge=Math.min(eo,Ge),Ge=Math.max(Ge,0);let{value:Go}=He;Go&&(Go.scrollTop=Ge)}function te(Q){Q.preventDefault(),Q.stopPropagation(),xo("mousemove",window,z,!0),xo("mouseup",window,te,!0),D=!1,U(),L(Q)&&qe()}Mo(()=>{let{value:Q}=Ke,{value:re}=Ve,{value:Se}=o,{value:_e}=i,{value:Je}=n;_e&&(Q?_e.classList.remove(`${Se}-scrollbar-rail--disabled`):_e.classList.add(`${Se}-scrollbar-rail--disabled`)),Je&&(re?Je.classList.remove(`${Se}-scrollbar-rail--disabled`):Je.classList.add(`${Se}-scrollbar-rail--disabled`))}),fo(()=>{e.container||U()}),_o(()=>{O!==void 0&&window.clearTimeout(O),g!==void 0&&window.clearTimeout(g),xo("mousemove",window,z,!0),xo("mouseup",window,te,!0)});let fe=Fo("Scrollbar","-scrollbar",rg,bo,e,o),Ce=V(()=>{let{common:{cubicBezierEaseInOut:Q,scrollbarBorderRadius:re,scrollbarHeight:Se,scrollbarWidth:_e},self:{color:Je,colorHover:ze}}=fe.value;return{"--n-scrollbar-bezier":Q,"--n-scrollbar-color":Je,"--n-scrollbar-color-hover":ze,"--n-scrollbar-border-radius":re,"--n-scrollbar-width":_e,"--n-scrollbar-height":Se}}),ye=t?Ko("scrollbar",void 0,Ce,e):void 0;return Object.assign(Object.assign({},{scrollTo:Do,scrollBy:Be,sync:U,syncUnifiedContainer:j,handleMouseEnterWrapper:ho,handleMouseLeaveWrapper:we}),{mergedClsPrefix:o,containerScrollTop:x,wrapperRef:r,containerRef:a,contentRef:l,yRailRef:n,xRailRef:i,needYBar:Ve,needXBar:Ke,yBarSizePx:_,xBarSizePx:he,yBarTopPx:de,xBarLeftPx:ge,isShowXBar:C,isShowYBar:S,isIos:y,handleScroll:k,handleContentResize:Qe,handleContainerResize:wo,handleYScrollMouseDown:N,handleXScrollMouseDown:K,cssVars:t?void 0:Ce,themeClass:ye==null?void 0:ye.themeClass,onRender:ye==null?void 0:ye.onRender})},render(){var e;let{$slots:o,mergedClsPrefix:t,triggerDisplayManually:r}=this;if(!this.scrollable)return(e=o.default)===null||e===void 0?void 0:e.call(o);let a=()=>{var l,n;return(l=this.onRender)===null||l===void 0||l.call(this),R("div",yl(this.$attrs,{role:"none",ref:"wrapperRef",class:[`${t}-scrollbar`,this.themeClass],style:this.cssVars,onMouseenter:r?void 0:this.handleMouseEnterWrapper,onMouseleave:r?void 0:this.handleMouseLeaveWrapper}),[this.container?(n=o.default)===null||n===void 0?void 0:n.call(o):R("div",{role:"none",ref:"containerRef",class:[`${t}-scrollbar-container`,this.containerClass],style:this.containerStyle,onScroll:this.handleScroll,onWheel:this.onWheel},R(Dt,{onResize:this.handleContentResize},{default:()=>R("div",{ref:"contentRef",role:"none",style:[{width:this.xScrollable?"fit-content":null},this.contentStyle],class:[`${t}-scrollbar-content`,this.contentClass]},o)})),R("div",{ref:"yRailRef",class:`${t}-scrollbar-rail ${t}-scrollbar-rail--vertical`,style:this.horizontalRailStyle,"aria-hidden":!0},R(kt,{name:"fade-in-transition"},{default:()=>this.needYBar&&this.isShowYBar&&!this.isIos?R("div",{class:`${t}-scrollbar-rail__scrollbar`,style:{height:this.yBarSizePx,top:this.yBarTopPx},onMousedown:this.handleYScrollMouseDown}):null})),R("div",{ref:"xRailRef",class:`${t}-scrollbar-rail ${t}-scrollbar-rail--horizontal`,style:this.verticalRailStyle,"aria-hidden":!0},R(kt,{name:"fade-in-transition"},{default:()=>this.needXBar&&this.isShowXBar&&!this.isIos?R("div",{class:`${t}-scrollbar-rail__scrollbar`,style:{width:this.xBarSizePx,left:this.xBarLeftPx},onMousedown:this.handleXScrollMouseDown}):null}))])};return this.container?a():R(Dt,{onResize:this.handleContainerResize},{default:a})}}),td=ag,en=ag;var lg={height:"calc(var(--n-option-height) * 7.6)",paddingSmall:"4px 0",paddingMedium:"4px 0",paddingLarge:"4px 0",paddingHuge:"4px 0",optionPaddingSmall:"0 12px",optionPaddingMedium:"0 12px",optionPaddingLarge:"0 12px",optionPaddingHuge:"0 12px",loadingSize:"18px"};var su=e=>{let{borderRadius:o,popoverColor:t,textColor3:r,dividerColor:a,textColor2:l,primaryColorPressed:n,textColorDisabled:i,primaryColor:d,opacityDisabled:s,hoverColor:u,fontSizeSmall:f,fontSizeMedium:c,fontSizeLarge:p,fontSizeHuge:x,heightSmall:T,heightMedium:C,heightLarge:S,heightHuge:D}=e;return Object.assign(Object.assign({},lg),{optionFontSizeSmall:f,optionFontSizeMedium:c,optionFontSizeLarge:p,optionFontSizeHuge:x,optionHeightSmall:T,optionHeightMedium:C,optionHeightLarge:S,optionHeightHuge:D,borderRadius:o,color:t,groupHeaderTextColor:r,actionDividerColor:a,optionTextColor:l,optionTextColorPressed:n,optionTextColorDisabled:i,optionTextColorActive:d,optionOpacityDisabled:s,optionCheckColor:d,optionColorPending:u,optionColorActive:u,actionTextColor:l,loadingColor:d})},rA=Pe({name:"InternalSelectMenu",common:pe,peers:{Scrollbar:bo,Empty:ft},self:su}),ha=rA;var aA={name:"InternalSelectMenu",common:P,peers:{Scrollbar:no,Empty:pt},self:su},Pt=aA;var{cubicBezierEaseIn:ng,cubicBezierEaseOut:ig}=Uo;function uu({transformOrigin:e="inherit",duration:o=".2s",enterScale:t=".9",originalTransform:r="",originalTransition:a=""}={}){return[Y("&.fade-in-scale-up-transition-leave-active",{transformOrigin:e,transition:`opacity ${o} ${ng}, transform ${o} ${ng} ${a&&","+a}`}),Y("&.fade-in-scale-up-transition-enter-active",{transformOrigin:e,transition:`opacity ${o} ${ig}, transform ${o} ${ig} ${a&&","+a}`}),Y("&.fade-in-scale-up-transition-enter-from, &.fade-in-scale-up-transition-leave-to",{opacity:0,transform:`${r} scale(${t})`}),Y("&.fade-in-scale-up-transition-leave-from, &.fade-in-scale-up-transition-enter-to",{opacity:1,transform:`${r} scale(1)`})]}var dg=G("base-wave",` position: absolute; left: 0; right: 0; top: 0; bottom: 0; border-radius: inherit; -`);var ad=ie({name:"BaseWave",props:{clsPrefix:{type:String,required:!0}},setup(e){Zt("-base-wave",ig,Be(e,"clsPrefix"));let o=Z(null),t=Z(!1),r=null;return _o(()=>{r!==null&&window.clearTimeout(r)}),{active:t,selfRef:o,play(){r!==null&&(window.clearTimeout(r),t.value=!1,r=null),No(()=>{var a;(a=o.value)===null||a===void 0||a.offsetHeight,t.value=!0,r=window.setTimeout(()=>{t.value=!1,r=null},1e3)})}}},render(){let{clsPrefix:e}=this;return R("div",{ref:"selfRef","aria-hidden":!0,class:[`${e}-base-wave`,this.active&&`${e}-base-wave--active`]})}});var dg={space:"6px",spaceArrow:"10px",arrowOffset:"10px",arrowOffsetVertical:"10px",arrowHeight:"6px",padding:"8px 14px"};var fu=e=>{let{boxShadow2:o,popoverColor:t,textColor2:r,borderRadius:a,fontSize:l,dividerColor:n}=e;return Object.assign(Object.assign({},dg),{fontSize:l,borderRadius:a,color:t,dividerColor:n,textColor:r,boxShadow:o})},aA={name:"Popover",common:ce,self:fu},Pt=aA;var lA={name:"Popover",common:D,self:fu},Xo=lA;var sg={closeSizeSmall:"14px",closeSizeMedium:"14px",closeSizeLarge:"14px",padding:"0 7px",closeMargin:"0 0 0 3px",closeMarginRtl:"0 3px 0 0"};var nA={name:"Tag",common:D,self(e){let{textColor2:o,primaryColorHover:t,primaryColorPressed:r,primaryColor:a,infoColor:l,successColor:n,warningColor:i,errorColor:d,baseColor:s,borderColor:u,opacityDisabled:f,closeColor:m,closeColorHover:p,closeColorPressed:c,borderRadiusSmall:T,fontSizeTiny:C,fontSizeSmall:g,fontSizeMedium:k,heightTiny:U,heightSmall:F,heightMedium:w}=e;return Object.assign(Object.assign({},sg),{heightSmall:U,heightMedium:F,heightLarge:w,borderRadius:T,opacityDisabled:f,fontSizeSmall:C,fontSizeMedium:g,fontSizeLarge:k,textColorCheckable:o,textColorHoverCheckable:t,textColorPressedCheckable:r,textColorChecked:s,colorCheckable:"#0000",colorHoverCheckable:"#0000",colorPressedCheckable:"#0000",colorChecked:a,colorCheckedHover:t,colorCheckedPressed:r,border:`1px solid ${u}`,textColor:o,color:"#0000",closeColor:m,closeColorHover:p,closeColorPressed:c,borderPrimary:`1px solid ${ee(a,{alpha:.3})}`,textColorPrimary:a,colorPrimary:"#0000",closeColorPrimary:ee(a,{alpha:.7}),closeColorHoverPrimary:ee(a,{alpha:.85}),closeColorPressedPrimary:ee(a,{alpha:.57}),borderInfo:`1px solid ${ee(l,{alpha:.3})}`,textColorInfo:l,colorInfo:"#0000",closeColorInfo:ee(l,{alpha:.7}),closeColorHoverInfo:ee(l,{alpha:.85}),closeColorPressedInfo:ee(l,{alpha:.57}),borderSuccess:`1px solid ${ee(n,{alpha:.3})}`,textColorSuccess:n,colorSuccess:"#0000",closeColorSuccess:ee(n,{alpha:.7}),closeColorHoverSuccess:ee(n,{alpha:.85}),closeColorPressedSuccess:ee(n,{alpha:.57}),borderWarning:`1px solid ${ee(i,{alpha:.3})}`,textColorWarning:i,colorWarning:"#0000",closeColorWarning:ee(i,{alpha:.7}),closeColorHoverWarning:ee(i,{alpha:.85}),closeColorPressedWarning:ee(i,{alpha:.57}),borderError:`1px solid ${ee(d,{alpha:.3})}`,textColorError:d,colorError:"#0000",closeColorError:ee(d,{alpha:.7}),closeColorHoverError:ee(d,{alpha:.85}),closeColorPressedError:ee(d,{alpha:.57})})}},on=nA;function xa(e,o,t){if(!o)return;let r=gt(),a=z(()=>{let{value:n}=o;if(!n)return;let i=n[e];if(!!i)return i}),l=()=>{Mo(()=>{let{value:n}=t,i=`${n}${e}Rtl`;if(Fs(i,r))return;let{value:d}=a;!d||d.style.mount({id:i,head:!0,anchorMetaName:Wr,props:{bPrefix:n?`.${n}-`:void 0},ssr:r})})};return r?l():ir(l),a}var ug=K("base-clear",` +`);var rd=le({name:"BaseWave",props:{clsPrefix:{type:String,required:!0}},setup(e){Zt("-base-wave",dg,De(e,"clsPrefix"));let o=Z(null),t=Z(!1),r=null;return _o(()=>{r!==null&&window.clearTimeout(r)}),{active:t,selfRef:o,play(){r!==null&&(window.clearTimeout(r),t.value=!1,r=null),No(()=>{var a;(a=o.value)===null||a===void 0||a.offsetHeight,t.value=!0,r=window.setTimeout(()=>{t.value=!1,r=null},1e3)})}}},render(){let{clsPrefix:e}=this;return R("div",{ref:"selfRef","aria-hidden":!0,class:[`${e}-base-wave`,this.active&&`${e}-base-wave--active`]})}});var sg={space:"6px",spaceArrow:"10px",arrowOffset:"10px",arrowOffsetVertical:"10px",arrowHeight:"6px",padding:"8px 14px"};var fu=e=>{let{boxShadow2:o,popoverColor:t,textColor2:r,borderRadius:a,fontSize:l,dividerColor:n}=e;return Object.assign(Object.assign({},sg),{fontSize:l,borderRadius:a,color:t,dividerColor:n,textColor:r,boxShadow:o})},lA={name:"Popover",common:pe,self:fu},Mt=lA;var nA={name:"Popover",common:P,self:fu},Xo=nA;var ug={closeSizeSmall:"14px",closeSizeMedium:"14px",closeSizeLarge:"14px",padding:"0 7px",closeMargin:"0 0 0 3px",closeMarginRtl:"0 3px 0 0"};var iA={name:"Tag",common:P,self(e){let{textColor2:o,primaryColorHover:t,primaryColorPressed:r,primaryColor:a,infoColor:l,successColor:n,warningColor:i,errorColor:d,baseColor:s,borderColor:u,opacityDisabled:f,closeColor:c,closeColorHover:p,closeColorPressed:x,borderRadiusSmall:T,fontSizeTiny:C,fontSizeSmall:S,fontSizeMedium:D,heightTiny:$,heightSmall:O,heightMedium:g}=e;return Object.assign(Object.assign({},ug),{heightSmall:$,heightMedium:O,heightLarge:g,borderRadius:T,opacityDisabled:f,fontSizeSmall:C,fontSizeMedium:S,fontSizeLarge:D,textColorCheckable:o,textColorHoverCheckable:t,textColorPressedCheckable:r,textColorChecked:s,colorCheckable:"#0000",colorHoverCheckable:"#0000",colorPressedCheckable:"#0000",colorChecked:a,colorCheckedHover:t,colorCheckedPressed:r,border:`1px solid ${u}`,textColor:o,color:"#0000",closeColor:c,closeColorHover:p,closeColorPressed:x,borderPrimary:`1px solid ${J(a,{alpha:.3})}`,textColorPrimary:a,colorPrimary:"#0000",closeColorPrimary:J(a,{alpha:.7}),closeColorHoverPrimary:J(a,{alpha:.85}),closeColorPressedPrimary:J(a,{alpha:.57}),borderInfo:`1px solid ${J(l,{alpha:.3})}`,textColorInfo:l,colorInfo:"#0000",closeColorInfo:J(l,{alpha:.7}),closeColorHoverInfo:J(l,{alpha:.85}),closeColorPressedInfo:J(l,{alpha:.57}),borderSuccess:`1px solid ${J(n,{alpha:.3})}`,textColorSuccess:n,colorSuccess:"#0000",closeColorSuccess:J(n,{alpha:.7}),closeColorHoverSuccess:J(n,{alpha:.85}),closeColorPressedSuccess:J(n,{alpha:.57}),borderWarning:`1px solid ${J(i,{alpha:.3})}`,textColorWarning:i,colorWarning:"#0000",closeColorWarning:J(i,{alpha:.7}),closeColorHoverWarning:J(i,{alpha:.85}),closeColorPressedWarning:J(i,{alpha:.57}),borderError:`1px solid ${J(d,{alpha:.3})}`,textColorError:d,colorError:"#0000",closeColorError:J(d,{alpha:.7}),closeColorHoverError:J(d,{alpha:.85}),closeColorPressedError:J(d,{alpha:.57})})}},on=iA;function Sa(e,o,t){if(!o)return;let r=wt(),a=V(()=>{let{value:n}=o;if(!n)return;let i=n[e];if(!!i)return i}),l=()=>{Mo(()=>{let{value:n}=t,i=`${n}${e}Rtl`;if(Fs(i,r))return;let{value:d}=a;!d||d.style.mount({id:i,head:!0,anchorMetaName:zr,props:{bPrefix:n?`.${n}-`:void 0},ssr:r})})};return r?l():dr(l),a}var fg=G("base-clear",` flex-shrink: 0; height: 1em; width: 1em; position: relative; -`,[X(">",[J("clear",` +`,[Y(">",[X("clear",` font-size: var(--n-clear-size); cursor: pointer; color: var(--n-clear-color); transition: color .3s var(--n-bezier); - `,[X("&:hover",` + `,[Y("&:hover",` color: var(--n-clear-color-hover)!important; - `),X("&:active",` + `),Y("&:active",` color: var(--n-clear-color-pressed)!important; - `)]),J("placeholder",` + `)]),X("placeholder",` display: flex; - `),J("clear, placeholder",` + `),X("clear, placeholder",` position: absolute; left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%); - `,[ut({originalTransform:"translateX(-50%) translateY(-50%)",left:"50%",top:"50%"})])])]);var ha=ie({name:"BaseClear",props:{clsPrefix:{type:String,required:!0},show:Boolean,onClear:Function},setup(e){return Zt("-base-clear",ug,Be(e,"clsPrefix")),{handleMouseDown(o){o.preventDefault()}}},render(){let{clsPrefix:e}=this;return R("div",{class:`${e}-base-clear`},R(Ot,null,{default:()=>{var o,t;return this.show?R(Ct,{clsPrefix:e,key:"dismiss",class:`${e}-base-clear__clear`,onClick:this.onClear,onMousedown:this.handleMouseDown,"data-clear":!0},{default:()=>R(eu,null)}):R("div",{key:"icon",class:`${e}-base-clear__placeholder`},(t=(o=this.$slots).default)===null||t===void 0?void 0:t.call(o))}}))}});var ld=ie({name:"InternalSelectionSuffix",props:{clsPrefix:{type:String,required:!0},showArrow:{type:Boolean,default:void 0},showClear:{type:Boolean,default:void 0},loading:{type:Boolean,default:!1},onClear:Function},setup(e,{slots:o}){return()=>{let{clsPrefix:t}=e;return R(Vr,{clsPrefix:t,class:`${t}-base-suffix`,strokeWidth:24,scale:.85,show:e.loading},{default:()=>e.showArrow?R(ha,{clsPrefix:t,show:e.showClear,onClear:e.onClear},{default:()=>R(Ct,{clsPrefix:t,class:`${t}-base-suffix__arrow`},{default:()=>Ut(o.default,()=>[R(Js,null)])})}):null})}}});var nd={paddingSingle:"0 26px 0 12px",paddingMultiple:"3px 26px 0 12px",clearSize:"16px",arrowSize:"16px"};var iA=e=>{let{borderRadius:o,textColor2:t,textColorDisabled:r,inputColor:a,inputColorDisabled:l,primaryColor:n,primaryColorHover:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,borderColor:m,iconColor:p,iconColorDisabled:c,clearColor:T,clearColorHover:C,clearColorPressed:g,placeholderColor:k,placeholderColorDisabled:U,fontSizeTiny:F,fontSizeSmall:w,fontSizeMedium:y,fontSizeLarge:S,heightTiny:O,heightSmall:L,heightMedium:b,heightLarge:W}=e;return Object.assign(Object.assign({},nd),{fontSizeTiny:F,fontSizeSmall:w,fontSizeMedium:y,fontSizeLarge:S,heightTiny:O,heightSmall:L,heightMedium:b,heightLarge:W,borderRadius:o,textColor:t,textColorDisabled:r,placeholderColor:k,placeholderColorDisabled:U,color:a,colorDisabled:l,colorActive:a,border:`1px solid ${m}`,borderHover:`1px solid ${i}`,borderActive:`1px solid ${n}`,borderFocus:`1px solid ${i}`,boxShadowHover:"none",boxShadowActive:`0 0 0 2px ${ee(n,{alpha:.2})}`,boxShadowFocus:`0 0 0 2px ${ee(n,{alpha:.2})}`,caretColor:n,arrowColor:p,arrowColorDisabled:c,loadingColor:n,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,borderActiveWarning:`1px solid ${d}`,borderFocusWarning:`1px solid ${s}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 0 2px ${ee(d,{alpha:.2})}`,boxShadowFocusWarning:`0 0 0 2px ${ee(d,{alpha:.2})}`,colorActiveWarning:a,caretColorWarning:d,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,borderActiveError:`1px solid ${u}`,borderFocusError:`1px solid ${f}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 0 2px ${ee(u,{alpha:.2})}`,boxShadowFocusError:`0 0 0 2px ${ee(u,{alpha:.2})}`,colorActiveError:a,caretColorError:u,clearColor:T,clearColorHover:C,clearColorPressed:g})},dA=Le({name:"InternalSelection",common:ce,peers:{Popover:Pt},self:iA}),tn=dA;var sA={name:"InternalSelection",common:D,peers:{Popover:Xo},self(e){let{borderRadius:o,textColor2:t,textColorDisabled:r,inputColor:a,inputColorDisabled:l,primaryColor:n,primaryColorHover:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,iconColor:m,iconColorDisabled:p,clearColor:c,clearColorHover:T,clearColorPressed:C,placeholderColor:g,placeholderColorDisabled:k,fontSizeTiny:U,fontSizeSmall:F,fontSizeMedium:w,fontSizeLarge:y,heightTiny:S,heightSmall:O,heightMedium:L,heightLarge:b}=e;return Object.assign(Object.assign({},nd),{fontSizeTiny:U,fontSizeSmall:F,fontSizeMedium:w,fontSizeLarge:y,heightTiny:S,heightSmall:O,heightMedium:L,heightLarge:b,borderRadius:o,textColor:t,textColorDisabled:r,placeholderColor:g,placeholderColorDisabled:k,color:a,colorDisabled:l,colorActive:ee(n,{alpha:.1}),border:"1px solid #0000",borderHover:`1px solid ${i}`,borderActive:`1px solid ${n}`,borderFocus:`1px solid ${i}`,boxShadowHover:"none",boxShadowActive:`0 0 8px 0 ${ee(n,{alpha:.4})}`,boxShadowFocus:`0 0 8px 0 ${ee(n,{alpha:.4})}`,caretColor:n,arrowColor:m,arrowColorDisabled:p,loadingColor:n,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,borderActiveWarning:`1px solid ${d}`,borderFocusWarning:`1px solid ${s}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 8px 0 ${ee(d,{alpha:.4})}`,boxShadowFocusWarning:`0 0 8px 0 ${ee(d,{alpha:.4})}`,colorActiveWarning:ee(d,{alpha:.1}),caretColorWarning:d,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,borderActiveError:`1px solid ${u}`,borderFocusError:`1px solid ${f}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 8px 0 ${ee(u,{alpha:.4})}`,boxShadowFocusError:`0 0 8px 0 ${ee(u,{alpha:.4})}`,colorActiveError:ee(u,{alpha:.1}),caretColorError:u,clearColor:c,clearColorHover:T,clearColorPressed:C})}},Sa=sA;var{cubicBezierEaseInOut:zr}=Uo;function fg({duration:e=".2s",delay:o=".1s"}={}){return[X("&.fade-in-width-expand-transition-leave-from, &.fade-in-width-expand-transition-enter-to",{opacity:1}),X("&.fade-in-width-expand-transition-leave-to, &.fade-in-width-expand-transition-enter-from",` + `,[ut({originalTransform:"translateX(-50%) translateY(-50%)",left:"50%",top:"50%"})])])]);var ga=le({name:"BaseClear",props:{clsPrefix:{type:String,required:!0},show:Boolean,onClear:Function},setup(e){return Zt("-base-clear",fg,De(e,"clsPrefix")),{handleMouseDown(o){o.preventDefault()}}},render(){let{clsPrefix:e}=this;return R("div",{class:`${e}-base-clear`},R(Ct,null,{default:()=>{var o,t;return this.show?R(bt,{clsPrefix:e,key:"dismiss",class:`${e}-base-clear__clear`,onClick:this.onClear,onMousedown:this.handleMouseDown,"data-clear":!0},{default:()=>R(eu,null)}):R("div",{key:"icon",class:`${e}-base-clear__placeholder`},(t=(o=this.$slots).default)===null||t===void 0?void 0:t.call(o))}}))}});var ad=le({name:"InternalSelectionSuffix",props:{clsPrefix:{type:String,required:!0},showArrow:{type:Boolean,default:void 0},showClear:{type:Boolean,default:void 0},loading:{type:Boolean,default:!1},onClear:Function},setup(e,{slots:o}){return()=>{let{clsPrefix:t}=e;return R(jr,{clsPrefix:t,class:`${t}-base-suffix`,strokeWidth:24,scale:.85,show:e.loading},{default:()=>e.showArrow?R(ga,{clsPrefix:t,show:e.showClear,onClear:e.onClear},{default:()=>R(bt,{clsPrefix:t,class:`${t}-base-suffix__arrow`},{default:()=>Ut(o.default,()=>[R(Js,null)])})}):null})}}});var ld={paddingSingle:"0 26px 0 12px",paddingMultiple:"3px 26px 0 12px",clearSize:"16px",arrowSize:"16px"};var dA=e=>{let{borderRadius:o,textColor2:t,textColorDisabled:r,inputColor:a,inputColorDisabled:l,primaryColor:n,primaryColorHover:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,borderColor:c,iconColor:p,iconColorDisabled:x,clearColor:T,clearColorHover:C,clearColorPressed:S,placeholderColor:D,placeholderColorDisabled:$,fontSizeTiny:O,fontSizeSmall:g,fontSizeMedium:v,fontSizeLarge:w,heightTiny:F,heightSmall:B,heightMedium:y,heightLarge:W}=e;return Object.assign(Object.assign({},ld),{fontSizeTiny:O,fontSizeSmall:g,fontSizeMedium:v,fontSizeLarge:w,heightTiny:F,heightSmall:B,heightMedium:y,heightLarge:W,borderRadius:o,textColor:t,textColorDisabled:r,placeholderColor:D,placeholderColorDisabled:$,color:a,colorDisabled:l,colorActive:a,border:`1px solid ${c}`,borderHover:`1px solid ${i}`,borderActive:`1px solid ${n}`,borderFocus:`1px solid ${i}`,boxShadowHover:"none",boxShadowActive:`0 0 0 2px ${J(n,{alpha:.2})}`,boxShadowFocus:`0 0 0 2px ${J(n,{alpha:.2})}`,caretColor:n,arrowColor:p,arrowColorDisabled:x,loadingColor:n,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,borderActiveWarning:`1px solid ${d}`,borderFocusWarning:`1px solid ${s}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 0 2px ${J(d,{alpha:.2})}`,boxShadowFocusWarning:`0 0 0 2px ${J(d,{alpha:.2})}`,colorActiveWarning:a,caretColorWarning:d,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,borderActiveError:`1px solid ${u}`,borderFocusError:`1px solid ${f}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 0 2px ${J(u,{alpha:.2})}`,boxShadowFocusError:`0 0 0 2px ${J(u,{alpha:.2})}`,colorActiveError:a,caretColorError:u,clearColor:T,clearColorHover:C,clearColorPressed:S})},sA=Pe({name:"InternalSelection",common:pe,peers:{Popover:Mt},self:dA}),tn=sA;var uA={name:"InternalSelection",common:P,peers:{Popover:Xo},self(e){let{borderRadius:o,textColor2:t,textColorDisabled:r,inputColor:a,inputColorDisabled:l,primaryColor:n,primaryColorHover:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,iconColor:c,iconColorDisabled:p,clearColor:x,clearColorHover:T,clearColorPressed:C,placeholderColor:S,placeholderColorDisabled:D,fontSizeTiny:$,fontSizeSmall:O,fontSizeMedium:g,fontSizeLarge:v,heightTiny:w,heightSmall:F,heightMedium:B,heightLarge:y}=e;return Object.assign(Object.assign({},ld),{fontSizeTiny:$,fontSizeSmall:O,fontSizeMedium:g,fontSizeLarge:v,heightTiny:w,heightSmall:F,heightMedium:B,heightLarge:y,borderRadius:o,textColor:t,textColorDisabled:r,placeholderColor:S,placeholderColorDisabled:D,color:a,colorDisabled:l,colorActive:J(n,{alpha:.1}),border:"1px solid #0000",borderHover:`1px solid ${i}`,borderActive:`1px solid ${n}`,borderFocus:`1px solid ${i}`,boxShadowHover:"none",boxShadowActive:`0 0 8px 0 ${J(n,{alpha:.4})}`,boxShadowFocus:`0 0 8px 0 ${J(n,{alpha:.4})}`,caretColor:n,arrowColor:c,arrowColorDisabled:p,loadingColor:n,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,borderActiveWarning:`1px solid ${d}`,borderFocusWarning:`1px solid ${s}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 8px 0 ${J(d,{alpha:.4})}`,boxShadowFocusWarning:`0 0 8px 0 ${J(d,{alpha:.4})}`,colorActiveWarning:J(d,{alpha:.1}),caretColorWarning:d,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,borderActiveError:`1px solid ${u}`,borderFocusError:`1px solid ${f}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 8px 0 ${J(u,{alpha:.4})}`,boxShadowFocusError:`0 0 8px 0 ${J(u,{alpha:.4})}`,colorActiveError:J(u,{alpha:.1}),caretColorError:u,clearColor:x,clearColorHover:T,clearColorPressed:C})}},wa=uA;var{cubicBezierEaseInOut:$r}=Uo;function pg({duration:e=".2s",delay:o=".1s"}={}){return[Y("&.fade-in-width-expand-transition-leave-from, &.fade-in-width-expand-transition-enter-to",{opacity:1}),Y("&.fade-in-width-expand-transition-leave-to, &.fade-in-width-expand-transition-enter-from",` opacity: 0!important; margin-left: 0!important; margin-right: 0!important; - `),X("&.fade-in-width-expand-transition-leave-active",` + `),Y("&.fade-in-width-expand-transition-leave-active",` overflow: hidden; transition: - opacity ${e} ${zr}, - max-width ${e} ${zr} ${o}, - margin-left ${e} ${zr} ${o}, - margin-right ${e} ${zr} ${o}; - `),X("&.fade-in-width-expand-transition-enter-active",` + opacity ${e} ${$r}, + max-width ${e} ${$r} ${o}, + margin-left ${e} ${$r} ${o}, + margin-right ${e} ${$r} ${o}; + `),Y("&.fade-in-width-expand-transition-enter-active",` overflow: hidden; transition: - opacity ${e} ${zr} ${o}, - max-width ${e} ${zr}, - margin-left ${e} ${zr}, - margin-right ${e} ${zr}; - `)]}var pg={iconMargin:"12px 8px 0 12px",iconMarginRtl:"12px 12px 0 8px",iconSize:"26px",closeSize:"16px",closeMargin:"14px 16px 0 0",closeMarginRtl:"14px 0 0 16px",padding:"15px"};var uA={name:"Alert",common:D,self(e){let{lineHeight:o,borderRadius:t,fontWeightStrong:r,dividerColor:a,inputColor:l,textColor1:n,textColor2:i,closeColor:d,closeColorHover:s,closeColorPressed:u,infoColorSuppl:f,successColorSuppl:m,warningColorSuppl:p,errorColorSuppl:c,fontSize:T}=e;return Object.assign(Object.assign({},pg),{fontSize:T,lineHeight:o,titleFontWeight:r,borderRadius:t,border:`1px solid ${a}`,color:l,titleTextColor:n,iconColor:i,contentTextColor:i,closeColor:d,closeColorHover:s,closeColorPressed:u,borderInfo:`1px solid ${ee(f,{alpha:.35})}`,colorInfo:ee(f,{alpha:.25}),titleTextColorInfo:n,iconColorInfo:f,contentTextColorInfo:i,closeColorInfo:d,closeColorHoverInfo:s,closeColorPressedInfo:u,borderSuccess:`1px solid ${ee(m,{alpha:.35})}`,colorSuccess:ee(m,{alpha:.25}),titleTextColorSuccess:n,iconColorSuccess:m,contentTextColorSuccess:i,closeColorSuccess:d,closeColorHoverSuccess:s,closeColorPressedSuccess:u,borderWarning:`1px solid ${ee(p,{alpha:.35})}`,colorWarning:ee(p,{alpha:.25}),titleTextColorWarning:n,iconColorWarning:p,contentTextColorWarning:i,closeColorWarning:d,closeColorHoverWarning:s,closeColorPressedWarning:u,borderError:`1px solid ${ee(c,{alpha:.35})}`,colorError:ee(c,{alpha:.25}),titleTextColorError:n,iconColorError:c,contentTextColorError:i,closeColorError:d,closeColorHoverError:s,closeColorPressedError:u})}},pu=uA;var{cubicBezierEaseInOut:Yt,cubicBezierEaseOut:fA,cubicBezierEaseIn:pA}=Uo;function mu({overflow:e="hidden",duration:o=".3s",originalTransition:t="",leavingDelay:r="0s",foldPadding:a=!1,enterToProps:l=void 0,leaveToProps:n=void 0,reverse:i=!1}={}){let d=i?"leave":"enter",s=i?"enter":"leave";return[X(`&.fade-in-height-expand-transition-${s}-from, - &.fade-in-height-expand-transition-${d}-to`,Object.assign(Object.assign({},l),{opacity:1})),X(`&.fade-in-height-expand-transition-${s}-to, - &.fade-in-height-expand-transition-${d}-from`,Object.assign(Object.assign({},n),{opacity:0,marginTop:"0 !important",marginBottom:"0 !important",paddingTop:a?"0 !important":void 0,paddingBottom:a?"0 !important":void 0})),X(`&.fade-in-height-expand-transition-${s}-active`,` + opacity ${e} ${$r} ${o}, + max-width ${e} ${$r}, + margin-left ${e} ${$r}, + margin-right ${e} ${$r}; + `)]}var mg={iconMargin:"12px 8px 0 12px",iconMarginRtl:"12px 12px 0 8px",iconSize:"26px",closeSize:"16px",closeMargin:"14px 16px 0 0",closeMarginRtl:"14px 0 0 16px",padding:"15px"};var fA={name:"Alert",common:P,self(e){let{lineHeight:o,borderRadius:t,fontWeightStrong:r,dividerColor:a,inputColor:l,textColor1:n,textColor2:i,closeColor:d,closeColorHover:s,closeColorPressed:u,infoColorSuppl:f,successColorSuppl:c,warningColorSuppl:p,errorColorSuppl:x,fontSize:T}=e;return Object.assign(Object.assign({},mg),{fontSize:T,lineHeight:o,titleFontWeight:r,borderRadius:t,border:`1px solid ${a}`,color:l,titleTextColor:n,iconColor:i,contentTextColor:i,closeColor:d,closeColorHover:s,closeColorPressed:u,borderInfo:`1px solid ${J(f,{alpha:.35})}`,colorInfo:J(f,{alpha:.25}),titleTextColorInfo:n,iconColorInfo:f,contentTextColorInfo:i,closeColorInfo:d,closeColorHoverInfo:s,closeColorPressedInfo:u,borderSuccess:`1px solid ${J(c,{alpha:.35})}`,colorSuccess:J(c,{alpha:.25}),titleTextColorSuccess:n,iconColorSuccess:c,contentTextColorSuccess:i,closeColorSuccess:d,closeColorHoverSuccess:s,closeColorPressedSuccess:u,borderWarning:`1px solid ${J(p,{alpha:.35})}`,colorWarning:J(p,{alpha:.25}),titleTextColorWarning:n,iconColorWarning:p,contentTextColorWarning:i,closeColorWarning:d,closeColorHoverWarning:s,closeColorPressedWarning:u,borderError:`1px solid ${J(x,{alpha:.35})}`,colorError:J(x,{alpha:.25}),titleTextColorError:n,iconColorError:x,contentTextColorError:i,closeColorError:d,closeColorHoverError:s,closeColorPressedError:u})}},pu=fA;var{cubicBezierEaseInOut:Yt,cubicBezierEaseOut:pA,cubicBezierEaseIn:mA}=Uo;function mu({overflow:e="hidden",duration:o=".3s",originalTransition:t="",leavingDelay:r="0s",foldPadding:a=!1,enterToProps:l=void 0,leaveToProps:n=void 0,reverse:i=!1}={}){let d=i?"leave":"enter",s=i?"enter":"leave";return[Y(`&.fade-in-height-expand-transition-${s}-from, + &.fade-in-height-expand-transition-${d}-to`,Object.assign(Object.assign({},l),{opacity:1})),Y(`&.fade-in-height-expand-transition-${s}-to, + &.fade-in-height-expand-transition-${d}-from`,Object.assign(Object.assign({},n),{opacity:0,marginTop:"0 !important",marginBottom:"0 !important",paddingTop:a?"0 !important":void 0,paddingBottom:a?"0 !important":void 0})),Y(`&.fade-in-height-expand-transition-${s}-active`,` overflow: ${e}; transition: max-height ${o} ${Yt} ${r}, - opacity ${o} ${fA} ${r}, + opacity ${o} ${pA} ${r}, margin-top ${o} ${Yt} ${r}, margin-bottom ${o} ${Yt} ${r}, padding-top ${o} ${Yt} ${r}, padding-bottom ${o} ${Yt} ${r} ${t?","+t:""} - `),X(`&.fade-in-height-expand-transition-${d}-active`,` + `),Y(`&.fade-in-height-expand-transition-${d}-active`,` overflow: ${e}; transition: max-height ${o} ${Yt}, - opacity ${o} ${pA}, + opacity ${o} ${mA}, margin-top ${o} ${Yt}, margin-bottom ${o} ${Yt}, padding-top ${o} ${Yt}, padding-bottom ${o} ${Yt} ${t?","+t:""} - `)]}var mg={linkFontSize:"13px",linkPadding:"0 0 0 16px",railWidth:"4px"};var cg=e=>{let{borderRadius:o,railColor:t,primaryColor:r,primaryColorHover:a,primaryColorPressed:l,textColor2:n}=e;return Object.assign(Object.assign({},mg),{borderRadius:o,railColor:t,railColorActive:r,linkColor:ee(r,{alpha:.15}),linkTextColor:n,linkTextColorHover:a,linkTextColorPressed:l,linkTextColorActive:r})};var mA={name:"Anchor",common:D,self:cg},cu=mA;var id={paddingTiny:"0 8px",paddingSmall:"0 10px",paddingMedium:"0 12px",paddingLarge:"0 14px",clearSize:"16px"};var cA={name:"Input",common:D,self(e){let{textColor2:o,textColor3:t,textColorDisabled:r,primaryColor:a,primaryColorHover:l,inputColor:n,inputColorDisabled:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,borderRadius:m,lineHeight:p,fontSizeTiny:c,fontSizeSmall:T,fontSizeMedium:C,fontSizeLarge:g,heightTiny:k,heightSmall:U,heightMedium:F,heightLarge:w,clearColor:y,clearColorHover:S,clearColorPressed:O,placeholderColor:L,placeholderColorDisabled:b,iconColor:W,iconColorDisabled:B,iconColorHover:ne,iconColorPressed:ge}=e;return Object.assign(Object.assign({},id),{countTextColor:t,heightTiny:k,heightSmall:U,heightMedium:F,heightLarge:w,fontSizeTiny:c,fontSizeSmall:T,fontSizeMedium:C,fontSizeLarge:g,lineHeight:p,lineHeightTextarea:p,borderRadius:m,iconSize:"16px",groupLabelColor:n,textColor:o,textColorDisabled:r,textDecorationColor:o,groupLabelTextColor:o,caretColor:a,placeholderColor:L,placeholderColorDisabled:b,color:n,colorDisabled:i,colorFocus:ee(a,{alpha:.1}),groupLabelBorder:"1px solid #0000",border:"1px solid #0000",borderHover:`1px solid ${l}`,borderDisabled:"1px solid #0000",borderFocus:`1px solid ${l}`,boxShadowFocus:`0 0 8px 0 ${ee(a,{alpha:.3})}`,loadingColor:a,loadingColorWarning:d,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,colorFocusWarning:ee(d,{alpha:.1}),borderFocusWarning:`1px solid ${s}`,boxShadowFocusWarning:`0 0 8px 0 ${ee(d,{alpha:.3})}`,caretColorWarning:d,loadingColorError:u,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,colorFocusError:ee(u,{alpha:.1}),borderFocusError:`1px solid ${f}`,boxShadowFocusError:`0 0 8px 0 ${ee(u,{alpha:.3})}`,caretColorError:u,clearColor:y,clearColorHover:S,clearColorPressed:O,iconColor:W,iconColorDisabled:B,iconColorHover:ne,iconColorPressed:ge,suffixTextColor:o})}},wo=cA;var xA=e=>{let{textColor2:o,textColor3:t,textColorDisabled:r,primaryColor:a,primaryColorHover:l,inputColor:n,inputColorDisabled:i,borderColor:d,warningColor:s,warningColorHover:u,errorColor:f,errorColorHover:m,borderRadius:p,lineHeight:c,fontSizeTiny:T,fontSizeSmall:C,fontSizeMedium:g,fontSizeLarge:k,heightTiny:U,heightSmall:F,heightMedium:w,heightLarge:y,actionColor:S,clearColor:O,clearColorHover:L,clearColorPressed:b,placeholderColor:W,placeholderColorDisabled:B,iconColor:ne,iconColorDisabled:ge,iconColorHover:Pe,iconColorPressed:ue}=e;return Object.assign(Object.assign({},id),{countTextColor:t,heightTiny:U,heightSmall:F,heightMedium:w,heightLarge:y,fontSizeTiny:T,fontSizeSmall:C,fontSizeMedium:g,fontSizeLarge:k,lineHeight:c,lineHeightTextarea:c,borderRadius:p,iconSize:"16px",groupLabelColor:S,groupLabelTextColor:o,textColor:o,textColorDisabled:r,textDecorationColor:o,caretColor:a,placeholderColor:W,placeholderColorDisabled:B,color:n,colorDisabled:i,colorFocus:n,groupLabelBorder:`1px solid ${d}`,border:`1px solid ${d}`,borderHover:`1px solid ${l}`,borderDisabled:`1px solid ${d}`,borderFocus:`1px solid ${l}`,boxShadowFocus:`0 0 0 2px ${ee(a,{alpha:.2})}`,loadingColor:a,loadingColorWarning:s,borderWarning:`1px solid ${s}`,borderHoverWarning:`1px solid ${u}`,colorFocusWarning:n,borderFocusWarning:`1px solid ${u}`,boxShadowFocusWarning:`0 0 0 2px ${ee(s,{alpha:.2})}`,caretColorWarning:s,loadingColorError:f,borderError:`1px solid ${f}`,borderHoverError:`1px solid ${m}`,colorFocusError:n,borderFocusError:`1px solid ${m}`,boxShadowFocusError:`0 0 0 2px ${ee(f,{alpha:.2})}`,caretColorError:f,clearColor:O,clearColorHover:L,clearColorPressed:b,iconColor:ne,iconColorDisabled:ge,iconColorHover:Pe,iconColorPressed:ue,suffixTextColor:o})},hA={name:"Input",common:ce,self:xA},mt=hA;var dd=no("n-input");function xg(e){let o=0;for(let t of e)o++;return o}function rn(e){return["",void 0,null].includes(e)}var xu=ie({name:"InputWordCount",setup(e,{slots:o}){let{mergedValueRef:t,maxlengthRef:r,mergedClsPrefixRef:a}=Re(dd),l=z(()=>{let{value:n}=t;return n===null||Array.isArray(n)?0:xg(n)});return()=>{let{value:n}=r,{value:i}=t;return R("span",{class:`${a.value}-input-word-count`},di(o.default,{value:i===null||Array.isArray(i)?"":i},()=>[n===void 0?l.value:`${l.value} / ${n}`]))}}});var hg=K("input",` + `)]}var cg={linkFontSize:"13px",linkPadding:"0 0 0 16px",railWidth:"4px"};var xg=e=>{let{borderRadius:o,railColor:t,primaryColor:r,primaryColorHover:a,primaryColorPressed:l,textColor2:n}=e;return Object.assign(Object.assign({},cg),{borderRadius:o,railColor:t,railColorActive:r,linkColor:J(r,{alpha:.15}),linkTextColor:n,linkTextColorHover:a,linkTextColorPressed:l,linkTextColorActive:r})};var cA={name:"Anchor",common:P,self:xg},cu=cA;var nd={paddingTiny:"0 8px",paddingSmall:"0 10px",paddingMedium:"0 12px",paddingLarge:"0 14px",clearSize:"16px"};var xA={name:"Input",common:P,self(e){let{textColor2:o,textColor3:t,textColorDisabled:r,primaryColor:a,primaryColorHover:l,inputColor:n,inputColorDisabled:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,borderRadius:c,lineHeight:p,fontSizeTiny:x,fontSizeSmall:T,fontSizeMedium:C,fontSizeLarge:S,heightTiny:D,heightSmall:$,heightMedium:O,heightLarge:g,clearColor:v,clearColorHover:w,clearColorPressed:F,placeholderColor:B,placeholderColorDisabled:y,iconColor:W,iconColorDisabled:_,iconColorHover:ae,iconColorPressed:he}=e;return Object.assign(Object.assign({},nd),{countTextColor:t,heightTiny:D,heightSmall:$,heightMedium:O,heightLarge:g,fontSizeTiny:x,fontSizeSmall:T,fontSizeMedium:C,fontSizeLarge:S,lineHeight:p,lineHeightTextarea:p,borderRadius:c,iconSize:"16px",groupLabelColor:n,textColor:o,textColorDisabled:r,textDecorationColor:o,groupLabelTextColor:o,caretColor:a,placeholderColor:B,placeholderColorDisabled:y,color:n,colorDisabled:i,colorFocus:J(a,{alpha:.1}),groupLabelBorder:"1px solid #0000",border:"1px solid #0000",borderHover:`1px solid ${l}`,borderDisabled:"1px solid #0000",borderFocus:`1px solid ${l}`,boxShadowFocus:`0 0 8px 0 ${J(a,{alpha:.3})}`,loadingColor:a,loadingColorWarning:d,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,colorFocusWarning:J(d,{alpha:.1}),borderFocusWarning:`1px solid ${s}`,boxShadowFocusWarning:`0 0 8px 0 ${J(d,{alpha:.3})}`,caretColorWarning:d,loadingColorError:u,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,colorFocusError:J(u,{alpha:.1}),borderFocusError:`1px solid ${f}`,boxShadowFocusError:`0 0 8px 0 ${J(u,{alpha:.3})}`,caretColorError:u,clearColor:v,clearColorHover:w,clearColorPressed:F,iconColor:W,iconColorDisabled:_,iconColorHover:ae,iconColorPressed:he,suffixTextColor:o})}},go=xA;var hA=e=>{let{textColor2:o,textColor3:t,textColorDisabled:r,primaryColor:a,primaryColorHover:l,inputColor:n,inputColorDisabled:i,borderColor:d,warningColor:s,warningColorHover:u,errorColor:f,errorColorHover:c,borderRadius:p,lineHeight:x,fontSizeTiny:T,fontSizeSmall:C,fontSizeMedium:S,fontSizeLarge:D,heightTiny:$,heightSmall:O,heightMedium:g,heightLarge:v,actionColor:w,clearColor:F,clearColorHover:B,clearColorPressed:y,placeholderColor:W,placeholderColorDisabled:_,iconColor:ae,iconColorDisabled:he,iconColorHover:Me,iconColorPressed:de}=e;return Object.assign(Object.assign({},nd),{countTextColor:t,heightTiny:$,heightSmall:O,heightMedium:g,heightLarge:v,fontSizeTiny:T,fontSizeSmall:C,fontSizeMedium:S,fontSizeLarge:D,lineHeight:x,lineHeightTextarea:x,borderRadius:p,iconSize:"16px",groupLabelColor:w,groupLabelTextColor:o,textColor:o,textColorDisabled:r,textDecorationColor:o,caretColor:a,placeholderColor:W,placeholderColorDisabled:_,color:n,colorDisabled:i,colorFocus:n,groupLabelBorder:`1px solid ${d}`,border:`1px solid ${d}`,borderHover:`1px solid ${l}`,borderDisabled:`1px solid ${d}`,borderFocus:`1px solid ${l}`,boxShadowFocus:`0 0 0 2px ${J(a,{alpha:.2})}`,loadingColor:a,loadingColorWarning:s,borderWarning:`1px solid ${s}`,borderHoverWarning:`1px solid ${u}`,colorFocusWarning:n,borderFocusWarning:`1px solid ${u}`,boxShadowFocusWarning:`0 0 0 2px ${J(s,{alpha:.2})}`,caretColorWarning:s,loadingColorError:f,borderError:`1px solid ${f}`,borderHoverError:`1px solid ${c}`,colorFocusError:n,borderFocusError:`1px solid ${c}`,boxShadowFocusError:`0 0 0 2px ${J(f,{alpha:.2})}`,caretColorError:f,clearColor:F,clearColorHover:B,clearColorPressed:y,iconColor:ae,iconColorDisabled:he,iconColorHover:Me,iconColorPressed:de,suffixTextColor:o})},SA={name:"Input",common:pe,self:hA},mt=SA;var id=lo("n-input");function hg(e){let o=0;for(let t of e)o++;return o}function rn(e){return["",void 0,null].includes(e)}var xu=le({name:"InputWordCount",setup(e,{slots:o}){let{mergedValueRef:t,maxlengthRef:r,mergedClsPrefixRef:a}=Te(id),l=V(()=>{let{value:n}=t;return n===null||Array.isArray(n)?0:hg(n)});return()=>{let{value:n}=r,{value:i}=t;return R("span",{class:`${a.value}-input-word-count`},ii(o.default,{value:i===null||Array.isArray(i)?"":i},()=>[n===void 0?l.value:`${l.value} / ${n}`]))}}});var Sg=G("input",` max-width: 100%; cursor: text; line-height: 1.5; @@ -323,11 +323,11 @@ ${o} transition: background-color .3s var(--n-bezier); font-size: var(--n-font-size); --n-padding-vertical: calc((var(--n-height) - 1.5 * var(--n-font-size)) / 2); -`,[J("input, textarea",` +`,[X("input, textarea",` overflow: hidden; flex-grow: 1; position: relative; - `),J("input-el, textarea-el, input-mirror, textarea-mirror, separator, placeholder",` + `),X("input-el, textarea-el, input-mirror, textarea-mirror, separator, placeholder",` box-sizing: border-box; font-size: inherit; line-height: 1.5; @@ -340,7 +340,7 @@ ${o} caret-color .3s var(--n-bezier), color .3s var(--n-bezier), text-decoration-color .3s var(--n-bezier); - `),J("input-el, textarea-el",` + `),X("input-el, textarea-el",` -webkit-appearance: none; scrollbar-width: none; width: 100%; @@ -349,11 +349,11 @@ ${o} color: var(--n-text-color); caret-color: var(--n-caret-color); background-color: transparent; - `,[X("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",` + `,[Y("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",` width: 0; height: 0; display: none; - `),X("&::placeholder","color: #0000;"),X("&:-webkit-autofill ~",[J("placeholder","display: none;")])]),Se("round",[rt("textarea","border-radius: calc(var(--n-height) / 2);")]),J("placeholder",` + `),Y("&::placeholder","color: #0000;"),Y("&:-webkit-autofill ~",[X("placeholder","display: none;")])]),xe("round",[rt("textarea","border-radius: calc(var(--n-height) / 2);")]),X("placeholder",` pointer-events: none; position: absolute; left: 0; @@ -362,22 +362,22 @@ ${o} bottom: 0; overflow: hidden; color: var(--n-placeholder-color); - `,[X("span",` + `,[Y("span",` width: 100%; display: inline-block; - `)]),Se("textarea",[J("placeholder","overflow: visible;")]),rt("autosize","width: 100%;"),Se("autosize",[J("textarea-el, input-el",` + `)]),xe("textarea",[X("placeholder","overflow: visible;")]),rt("autosize","width: 100%;"),xe("autosize",[X("textarea-el, input-el",` position: absolute; top: 0; left: 0; height: 100%; - `)]),K("input-wrapper",` + `)]),G("input-wrapper",` overflow: hidden; display: inline-flex; flex-grow: 1; position: relative; padding-left: var(--n-padding-left); padding-right: var(--n-padding-right); - `),J("input-mirror",` + `),X("input-mirror",` padding: 0; height: var(--n-height); overflow: hidden; @@ -385,25 +385,25 @@ ${o} position: static; white-space: nowrap; pointer-events: none; - `),J("input-el",` + `),X("input-el",` padding: 0; height: var(--n-height); line-height: var(--n-height); - `,[X("+",[J("placeholder",` + `,[Y("+",[X("placeholder",` display: flex; align-items: center; - `)])]),rt("textarea",[J("placeholder","white-space: nowrap;")]),J("eye",` + `)])]),rt("textarea",[X("placeholder","white-space: nowrap;")]),X("eye",` transition: color .3s var(--n-bezier); - `),Se("textarea","width: 100%;",[K("input-word-count",` + `),xe("textarea","width: 100%;",[G("input-word-count",` position: absolute; right: var(--n-padding-right); bottom: var(--n-padding-vertical); - `),Se("resizable",[K("input-wrapper",` + `),xe("resizable",[G("input-wrapper",` resize: vertical; min-height: var(--n-height); - `)]),J("textarea",` + `)]),X("textarea",` position: static; - `),J("textarea-el, textarea-mirror, placeholder",` + `),X("textarea-el, textarea-mirror, placeholder",` height: 100%; left: var(--n-padding-left); right: var(--n-padding-right); @@ -419,7 +419,7 @@ ${o} margin: 0; resize: none; white-space: pre-wrap; - `),J("textarea-mirror",` + `),X("textarea-mirror",` width: 100%; pointer-events: none; overflow: hidden; @@ -427,48 +427,48 @@ ${o} position: static; white-space: pre-wrap; overflow-wrap: break-word; - `)]),Se("pair",[J("input-el, placeholder","text-align: center;"),J("separator",` + `)]),xe("pair",[X("input-el, placeholder","text-align: center;"),X("separator",` display: flex; align-items: center; transition: color .3s var(--n-bezier); color: var(--n-text-color); - `,[K("icon",` + `,[G("icon",` color: var(--n-icon-color); - `),K("base-icon",` + `),G("base-icon",` color: var(--n-icon-color); - `)])]),Se("disabled",` + `)])]),xe("disabled",` cursor: not-allowed; background-color: var(--n-color-disabled); - `,[J("border","border: var(--n-border-disabled);"),J("input-el, textarea-el",` + `,[X("border","border: var(--n-border-disabled);"),X("input-el, textarea-el",` cursor: not-allowed; color: var(--n-text-color-disabled); text-decoration-color: var(--n-text-color-disabled); - `),J("placeholder","color: var(--n-placeholder-color-disabled);"),J("separator","color: var(--n-text-color-disabled);",[K("icon",` + `),X("placeholder","color: var(--n-placeholder-color-disabled);"),X("separator","color: var(--n-text-color-disabled);",[G("icon",` color: var(--n-icon-color-disabled); - `),K("base-icon",` + `),G("base-icon",` color: var(--n-icon-color-disabled); - `)]),J("suffix, prefix","color: var(--n-text-color-disabled);",[K("icon",` + `)]),X("suffix, prefix","color: var(--n-text-color-disabled);",[G("icon",` color: var(--n-icon-color-disabled); - `),K("internal-icon",` + `),G("internal-icon",` color: var(--n-icon-color-disabled); - `)])]),rt("disabled",[J("eye",` + `)])]),rt("disabled",[X("eye",` display: flex; align-items: center; justify-content: center; color: var(--n-icon-color); cursor: pointer; - `,[X("&:hover",` + `,[Y("&:hover",` color: var(--n-icon-color-hover); - `),X("&:active",` + `),Y("&:active",` color: var(--n-icon-color-pressed); - `),K("icon",[X("&:hover",` + `),G("icon",[Y("&:hover",` color: var(--n-icon-color-hover); - `),X("&:active",` + `),Y("&:active",` color: var(--n-icon-color-pressed); - `)])]),X("&:hover",[J("state-border","border: var(--n-border-hover);")]),Se("focus","background-color: var(--n-color-focus);",[J("state-border",` + `)])]),Y("&:hover",[X("state-border","border: var(--n-border-hover);")]),xe("focus","background-color: var(--n-color-focus);",[X("state-border",` border: var(--n-border-focus); box-shadow: var(--n-box-shadow-focus); - `)])]),J("border, state-border",` + `)])]),X("border, state-border",` box-sizing: border-box; position: absolute; left: 0; @@ -481,12 +481,12 @@ ${o} transition: box-shadow .3s var(--n-bezier), border-color .3s var(--n-bezier); - `),J("state-border",` + `),X("state-border",` border-color: #0000; z-index: 1; - `),J("prefix","margin-right: 4px;"),J("suffix",` + `),X("prefix","margin-right: 4px;"),X("suffix",` margin-left: 4px; - `),J("suffix, prefix",` + `),X("suffix, prefix",` transition: color .3s var(--n-bezier); flex-wrap: nowrap; flex-shrink: 0; @@ -496,23 +496,23 @@ ${o} align-items: center; justify-content: center; color: var(--n-suffix-text-color); - `,[K("base-loading",` + `,[G("base-loading",` font-size: var(--n-icon-size); margin: 0 2px; color: var(--n-loading-color); - `),K("base-clear",` + `),G("base-clear",` font-size: var(--n-icon-size); - `,[J("placeholder",[K("base-icon",` + `,[X("placeholder",[G("base-icon",` transition: color .3s var(--n-bezier); color: var(--n-icon-color); font-size: var(--n-icon-size); - `)])]),X(">",[K("icon",` + `)])]),Y(">",[G("icon",` transition: color .3s var(--n-bezier); color: var(--n-icon-color); font-size: var(--n-icon-size); - `)]),K("base-icon",` + `)]),G("base-icon",` font-size: var(--n-icon-size); - `)]),K("input-word-count",` + `)]),G("input-word-count",` pointer-events: none; line-height: 1.5; font-size: .85em; @@ -520,26 +520,26 @@ ${o} transition: color .3s var(--n-bezier); margin-left: 4px; font-variant: tabular-nums; - `),["warning","error"].map(e=>Se(`${e}-status`,[rt("disabled",[K("base-loading",` + `),["warning","error"].map(e=>xe(`${e}-status`,[rt("disabled",[G("base-loading",` color: var(--n-loading-color-${e}) - `),J("input-el, textarea-el",` + `),X("input-el, textarea-el",` caret-color: var(--n-caret-color-${e}); - `),J("state-border",` + `),X("state-border",` border: var(--n-border-${e}); - `),X("&:hover",[J("state-border",` + `),Y("&:hover",[X("state-border",` border: var(--n-border-hover-${e}); - `)]),X("&:focus",` + `)]),Y("&:focus",` background-color: var(--n-color-focus-${e}); - `,[J("state-border",` + `,[X("state-border",` box-shadow: var(--n-box-shadow-focus-${e}); border: var(--n-border-focus-${e}); - `)]),Se("focus",` + `)]),xe("focus",` background-color: var(--n-color-focus-${e}); - `,[J("state-border",` + `,[X("state-border",` box-shadow: var(--n-box-shadow-focus-${e}); border: var(--n-border-focus-${e}); - `)])])]))]);var SA=Object.assign(Object.assign({},Oo.props),{bordered:{type:Boolean,default:void 0},type:{type:String,default:"text"},placeholder:[Array,String],defaultValue:{type:[String,Array],default:null},value:[String,Array],disabled:{type:Boolean,default:void 0},size:String,rows:{type:[Number,String],default:3},round:Boolean,minlength:[String,Number],maxlength:[String,Number],clearable:Boolean,autosize:{type:[Boolean,Object],default:!1},pair:Boolean,separator:String,readonly:{type:[String,Boolean],default:!1},passivelyActivated:Boolean,showPasswordOn:String,stateful:{type:Boolean,default:!0},autofocus:Boolean,inputProps:Object,resizable:{type:Boolean,default:!0},showCount:Boolean,loading:{type:Boolean,default:void 0},onMousedown:Function,onKeydown:Function,onKeyup:Function,onInput:[Function,Array],onFocus:[Function,Array],onBlur:[Function,Array],onClick:[Function,Array],onChange:[Function,Array],onClear:[Function,Array],status:String,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],textDecoration:[String,Array],attrSize:{type:Number,default:20},onInputBlur:[Function,Array],onInputFocus:[Function,Array],onDeactivate:[Function,Array],onActivate:[Function,Array],onWrapperFocus:[Function,Array],onWrapperBlur:[Function,Array],internalDeactivateOnEnter:Boolean,internalForceFocus:Boolean,internalLoadingBeforeSuffix:Boolean,showPasswordToggle:Boolean}),hu=ie({name:"Input",props:SA,setup(e){let{mergedClsPrefixRef:o,mergedBorderedRef:t,inlineThemeDisabled:r,mergedRtlRef:a}=Bo(e),l=Oo("Input","-input",hg,mt,e,o),n=Z(null),i=Z(null),d=Z(null),s=Z(null),u=Z(null),f=Z(null),m=Z(null),{localeRef:p}=Xa("Input"),c=Z(e.defaultValue),T=Be(e,"value"),C=Zo(T,c),g=Tt(e),{mergedSizeRef:k,mergedDisabledRef:U,mergedStatusRef:F}=g,w=Z(!1),y=Z(!1),S=Z(!1),O=Z(!1),L=null,b=z(()=>{let{placeholder:v,pair:oe}=e;return oe?Array.isArray(v)?v:v===void 0?["",""]:[v,v]:v===void 0?[p.value.placeholder]:[v]}),W=z(()=>{let{value:v}=S,{value:oe}=C,{value:De}=b;return!v&&(rn(oe)||Array.isArray(oe)&&rn(oe[0]))&&De[0]}),B=z(()=>{let{value:v}=S,{value:oe}=C,{value:De}=b;return!v&&De[1]&&(rn(oe)||Array.isArray(oe)&&rn(oe[1]))}),ne=Je(()=>e.internalForceFocus||w.value),ge=Je(()=>{if(U.value||e.readonly||!e.clearable||!ne.value&&!y.value)return!1;let{value:v}=C,{value:oe}=ne;return e.pair?!!(Array.isArray(v)&&(v[0]||v[1]))&&(y.value||oe):!!v&&(y.value||oe)}),Pe=z(()=>{let{showPasswordOn:v}=e;if(v)return v;if(e.showPasswordToggle)return"click"}),ue=Z(!1),se=z(()=>{let{textDecoration:v}=e;return v?Array.isArray(v)?v.map(oe=>({textDecoration:oe})):[{textDecoration:v}]:["",""]}),Te=Z(void 0),je=()=>{var v,oe;if(e.type==="textarea"){let{autosize:De}=e;if(De&&(Te.value=(oe=(v=m.value)===null||v===void 0?void 0:v.$el)===null||oe===void 0?void 0:oe.offsetWidth),!i.value||typeof De=="boolean")return;let{paddingTop:po,paddingBottom:M,lineHeight:G}=window.getComputedStyle(i.value),de=Number(po.slice(0,-2)),fe=Number(M.slice(0,-2)),_e=Number(G.slice(0,-2)),{value:Eo}=d;if(!Eo)return;if(De.minRows){let To=Math.max(De.minRows,1),tr=`${de+fe+_e*To}px`;Eo.style.minHeight=tr}if(De.maxRows){let To=`${de+fe+_e*De.maxRows}px`;Eo.style.maxHeight=To}}},Ge=z(()=>{let{maxlength:v}=e;return v===void 0?void 0:Number(v)});mo(()=>{let{value:v}=C;Array.isArray(v)||Qe(v)});let ze=ht().proxy;function Ze(v){let{onUpdateValue:oe,"onUpdate:value":De,onInput:po}=e,{nTriggerFormInput:M}=g;oe&&Fe(oe,v),De&&Fe(De,v),po&&Fe(po,v),c.value=v,M()}function Ye(v){let{onChange:oe}=e,{nTriggerFormChange:De}=g;oe&&Fe(oe,v),c.value=v,De()}function ho(v){let{onBlur:oe}=e,{nTriggerFormBlur:De}=g;oe&&Fe(oe,v),De()}function ko(v){let{onFocus:oe}=e,{nTriggerFormFocus:De}=g;oe&&Fe(oe,v),De()}function He(v){let{onClear:oe}=e;oe&&Fe(oe,v)}function Ie(v){let{onInputBlur:oe}=e;oe&&Fe(oe,v)}function fo(v){let{onInputFocus:oe}=e;oe&&Fe(oe,v)}function Ce(){let{onDeactivate:v}=e;v&&Fe(v)}function ro(){let{onActivate:v}=e;v&&Fe(v)}function E(v){let{onClick:oe}=e;oe&&Fe(oe,v)}function le(v){let{onWrapperFocus:oe}=e;oe&&Fe(oe,v)}function x(v){let{onWrapperBlur:oe}=e;oe&&Fe(oe,v)}function h(){S.value=!0}function P(v){S.value=!1,v.target===f.value?N(v,1):N(v,0)}function N(v,oe=0,De="input"){let po=v.target.value;if(Qe(po),e.type==="textarea"){let{value:G}=m;G&&G.syncUnifiedContainer()}if(L=po,S.value)return;let M=po;if(!e.pair)De==="input"?Ze(M):Ye(M);else{let{value:G}=C;Array.isArray(G)?G=[...G]:G=["",""],G[oe]=M,De==="input"?Ze(G):Ye(G)}ze.$forceUpdate()}function H(v){Ie(v),v.relatedTarget===n.value&&Ce(),v.relatedTarget!==null&&(v.relatedTarget===u.value||v.relatedTarget===f.value||v.relatedTarget===i.value)||(O.value=!1),V(v,"blur")}function $(v){fo(v),w.value=!0,O.value=!0,ro(),V(v,"focus")}function Y(v){e.passivelyActivated&&(x(v),V(v,"blur"))}function I(v){e.passivelyActivated&&(w.value=!0,le(v),V(v,"focus"))}function V(v,oe){v.relatedTarget!==null&&(v.relatedTarget===u.value||v.relatedTarget===f.value||v.relatedTarget===i.value||v.relatedTarget===n.value)||(oe==="focus"?(ko(v),w.value=!0):oe==="blur"&&(ho(v),w.value=!1))}function q(v,oe){N(v,oe,"change")}function A(v){E(v)}function _(v){He(v),e.pair?(Ze(["",""]),Ye(["",""])):(Ze(""),Ye(""))}function j(v){let{onMousedown:oe}=e;oe&&oe(v);let{tagName:De}=v.target;if(De!=="INPUT"&&De!=="TEXTAREA"){if(e.resizable){let{value:po}=n;if(po){let{left:M,top:G,width:de,height:fe}=po.getBoundingClientRect(),_e=14;if(M+de-_e{po.preventDefault(),So("mouseup",document,oe)};if(go("mouseup",document,oe),Pe.value!=="mousedown")return;ue.value=!0;let De=()=>{ue.value=!1,So("mouseup",document,De)};go("mouseup",document,De)}function Ee(v){var oe;switch((oe=e.onKeydown)===null||oe===void 0||oe.call(e,v),v.code){case"Escape":ae();break;case"Enter":case"NumpadEnter":Q(v);break}}function Q(v){var oe,De;if(e.passivelyActivated){let{value:po}=O;if(po){e.internalDeactivateOnEnter&&ae();return}v.preventDefault(),e.type==="textarea"?(oe=i.value)===null||oe===void 0||oe.focus():(De=u.value)===null||De===void 0||De.focus()}}function ae(){e.passivelyActivated&&(O.value=!1,No(()=>{var v;(v=n.value)===null||v===void 0||v.focus()}))}function we(){var v,oe,De;U.value||(e.passivelyActivated?(v=n.value)===null||v===void 0||v.focus():((oe=i.value)===null||oe===void 0||oe.focus(),(De=u.value)===null||De===void 0||De.focus()))}function We(){var v;((v=n.value)===null||v===void 0?void 0:v.contains(document.activeElement))&&document.activeElement.blur()}function eo(){var v,oe;(v=i.value)===null||v===void 0||v.select(),(oe=u.value)===null||oe===void 0||oe.select()}function $e(){U.value||(i.value?i.value.focus():u.value&&u.value.focus())}function oo(){let{value:v}=n;(v==null?void 0:v.contains(document.activeElement))&&v!==document.activeElement&&ae()}function Qe(v){let{type:oe,pair:De,autosize:po}=e;if(!De&&po)if(oe==="textarea"){let{value:M}=d;M&&(M.textContent=(v!=null?v:"")+`\r -`)}else{let{value:M}=s;M&&(v?M.textContent=v:M.innerHTML=" ")}}function Go(){je()}let ct=Z({top:"0"});function al(v){var oe;let{scrollTop:De}=v.target;ct.value.top=`${-De}px`,(oe=m.value)===null||oe===void 0||oe.syncUnifiedContainer()}let mr=null;Mo(()=>{let{autosize:v,type:oe}=e;v&&oe==="textarea"?mr=Xe(C,De=>{!Array.isArray(De)&&De!==L&&Qe(De)}):mr==null||mr()});let cr=null;Mo(()=>{e.type==="textarea"?cr=Xe(C,v=>{var oe;!Array.isArray(v)&&v!==L&&((oe=m.value)===null||oe===void 0||oe.syncUnifiedContainer())}):cr==null||cr()}),qo(dd,{mergedValueRef:C,maxlengthRef:Ge,mergedClsPrefixRef:o});let wa={wrapperElRef:n,inputElRef:u,textareaElRef:i,isCompositing:S,focus:we,blur:We,select:eo,deactivate:oo,activate:$e},ll=xa("Input",a,o),Ta=z(()=>{let{value:v}=k,{common:{cubicBezierEaseInOut:oe},self:{color:De,borderRadius:po,textColor:M,caretColor:G,caretColorError:de,caretColorWarning:fe,textDecorationColor:_e,border:Eo,borderDisabled:To,borderHover:tr,borderFocus:rr,placeholderColor:Ao,placeholderColorDisabled:Po,lineHeightTextarea:lt,colorDisabled:bp,colorFocus:bd,textColorDisabled:to,boxShadowFocus:Vo,iconSize:nl,colorFocusWarning:Rn,boxShadowFocusWarning:Fn,borderWarning:On,borderFocusWarning:il,borderHoverWarning:nT,colorFocusError:iT,boxShadowFocusError:dT,borderError:sT,borderFocusError:uT,borderHoverError:fT,clearSize:pT,clearColor:mT,clearColorHover:cT,clearColorPressed:xT,iconColor:hT,iconColorDisabled:ST,suffixTextColor:gT,countTextColor:wT,iconColorHover:TT,iconColorPressed:RT,loadingColor:FT,loadingColorError:OT,loadingColorWarning:CT,[Ae("padding",v)]:bT,[Ae("fontSize",v)]:yT,[Ae("height",v)]:vT}}=l.value,{left:kT,right:AT}=Na(bT);return{"--n-bezier":oe,"--n-count-text-color":wT,"--n-color":De,"--n-font-size":yT,"--n-border-radius":po,"--n-height":vT,"--n-padding-left":kT,"--n-padding-right":AT,"--n-text-color":M,"--n-caret-color":G,"--n-text-decoration-color":_e,"--n-border":Eo,"--n-border-disabled":To,"--n-border-hover":tr,"--n-border-focus":rr,"--n-placeholder-color":Ao,"--n-placeholder-color-disabled":Po,"--n-icon-size":nl,"--n-line-height-textarea":lt,"--n-color-disabled":bp,"--n-color-focus":bd,"--n-text-color-disabled":to,"--n-box-shadow-focus":Vo,"--n-loading-color":FT,"--n-caret-color-warning":fe,"--n-color-focus-warning":Rn,"--n-box-shadow-focus-warning":Fn,"--n-border-warning":On,"--n-border-focus-warning":il,"--n-border-hover-warning":nT,"--n-loading-color-warning":CT,"--n-caret-color-error":de,"--n-color-focus-error":iT,"--n-box-shadow-focus-error":dT,"--n-border-error":sT,"--n-border-focus-error":uT,"--n-border-hover-error":fT,"--n-loading-color-error":OT,"--n-clear-color":mT,"--n-clear-size":pT,"--n-clear-color-hover":cT,"--n-clear-color-pressed":xT,"--n-icon-color":hT,"--n-icon-color-hover":TT,"--n-icon-color-pressed":RT,"--n-icon-color-disabled":ST,"--n-suffix-text-color":gT}}),xr=r?Ko("input",z(()=>{let{value:v}=k;return v[0]}),Ta,e):void 0;return Object.assign(Object.assign({},wa),{wrapperElRef:n,inputElRef:u,inputMirrorElRef:s,inputEl2Ref:f,textareaElRef:i,textareaMirrorElRef:d,textareaScrollbarInstRef:m,rtlEnabled:ll,uncontrolledValue:c,mergedValue:C,passwordVisible:ue,mergedPlaceholder:b,showPlaceholder1:W,showPlaceholder2:B,mergedFocus:ne,isComposing:S,activated:O,showClearButton:ge,mergedSize:k,mergedDisabled:U,textDecorationStyle:se,mergedClsPrefix:o,mergedBordered:t,mergedShowPasswordOn:Pe,placeholderStyle:ct,mergedStatus:F,textAreaScrollContainerWidth:Te,handleTextAreaScroll:al,handleCompositionStart:h,handleCompositionEnd:P,handleInput:N,handleInputBlur:H,handleInputFocus:$,handleWrapperBlur:Y,handleWrapperFocus:I,handleMouseEnter:re,handleMouseLeave:me,handleMouseDown:j,handleChange:q,handleClick:A,handleClear:_,handlePasswordToggleClick:ye,handlePasswordToggleMousedown:ke,handleWrapperKeyDown:Ee,handleTextAreaMirrorResize:Go,getTextareaScrollContainer:()=>i.value,mergedTheme:l,cssVars:r?void 0:Ta,themeClass:xr==null?void 0:xr.themeClass,onRender:xr==null?void 0:xr.onRender})},render(){let{mergedClsPrefix:e,mergedStatus:o,themeClass:t,onRender:r,$slots:a}=this;return r==null||r(),R("div",{ref:"wrapperElRef",class:[`${e}-input`,t,o&&`${e}-input--${o}-status`,{[`${e}-input--rtl`]:this.rtlEnabled,[`${e}-input--disabled`]:this.mergedDisabled,[`${e}-input--textarea`]:this.type==="textarea",[`${e}-input--resizable`]:this.resizable&&!this.autosize,[`${e}-input--autosize`]:this.autosize,[`${e}-input--round`]:this.round&&this.type!=="textarea",[`${e}-input--pair`]:this.pair,[`${e}-input--focus`]:this.mergedFocus,[`${e}-input--stateful`]:this.stateful}],style:this.cssVars,tabindex:!this.mergedDisabled&&this.passivelyActivated&&!this.activated?0:void 0,onFocus:this.handleWrapperFocus,onBlur:this.handleWrapperBlur,onClick:this.handleClick,onMousedown:this.handleMouseDown,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onCompositionstart:this.handleCompositionStart,onCompositionend:this.handleCompositionEnd,onKeyup:this.onKeyup,onKeydown:this.handleWrapperKeyDown},R("div",{class:`${e}-input-wrapper`},Kt(a.prefix,l=>l&&R("div",{class:`${e}-input__prefix`},l)),this.type==="textarea"?R(rd,{ref:"textareaScrollbarInstRef",class:`${e}-input__textarea`,container:this.getTextareaScrollContainer,triggerDisplayManually:!0,useUnifiedContainer:!0},{default:()=>{let{textAreaScrollContainerWidth:l}=this,n={width:this.autosize&&l&&`${l}px`};return R(bo,null,R("textarea",Object.assign({},this.inputProps,{ref:"textareaElRef",class:`${e}-input__textarea-el`,autofocus:this.autofocus,rows:Number(this.rows),placeholder:this.placeholder,value:this.mergedValue,disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,readonly:this.readonly,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,style:[this.textDecorationStyle[0],n],onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:this.handleInput,onChange:this.handleChange,onScroll:this.handleTextAreaScroll})),this.showPlaceholder1?R("div",{class:`${e}-input__placeholder`,style:[this.placeholderStyle,n],key:"placeholder"},this.mergedPlaceholder[0]):null,this.autosize?R(At,{onResize:this.handleTextAreaMirrorResize},{default:()=>R("div",{ref:"textareaMirrorElRef",class:`${e}-input__textarea-mirror`,key:"mirror"})}):null)}}):R("div",{class:`${e}-input__input`},R("input",Object.assign({type:this.type==="password"&&this.mergedShowPasswordOn&&this.passwordVisible?"text":this.type},this.inputProps,{ref:"inputElRef",class:`${e}-input__input-el`,style:this.textDecorationStyle[0],tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[0],disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[0]:this.mergedValue,readonly:this.readonly,autofocus:this.autofocus,size:this.attrSize,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:l=>this.handleInput(l,0),onChange:l=>this.handleChange(l,0)})),this.showPlaceholder1?R("div",{class:`${e}-input__placeholder`},R("span",null,this.mergedPlaceholder[0])):null,this.autosize?R("div",{class:`${e}-input__input-mirror`,key:"mirror",ref:"inputMirrorElRef"},"\xA0"):null),!this.pair&&Kt(a.suffix,l=>l||this.clearable||this.showCount||this.mergedShowPasswordOn||this.loading!==void 0?R("div",{class:`${e}-input__suffix`},[Kt(a.clear,n=>(this.clearable||n)&&R(ha,{clsPrefix:e,show:this.showClearButton,onClear:this.handleClear},{default:()=>n})),this.internalLoadingBeforeSuffix?null:l,this.loading!==void 0?R(ld,{clsPrefix:e,loading:this.loading,showArrow:!1,showClear:!1,style:this.cssVars}):null,this.internalLoadingBeforeSuffix?l:null,this.showCount&&this.type!=="textarea"?R(xu,null,{default:n=>{var i;return(i=a.count)===null||i===void 0?void 0:i.call(a,n)}}):null,this.mergedShowPasswordOn&&this.type==="password"?R(Ct,{clsPrefix:e,class:`${e}-input__eye`,onMousedown:this.handlePasswordToggleMousedown,onClick:this.handlePasswordToggleClick},{default:()=>this.passwordVisible?Ut(a["password-visible-icon"],()=>[R(Qs,null)]):Ut(a["password-invisible-icon"],()=>[R(Zs,null)])}):null]):null)),this.pair?R("span",{class:`${e}-input__separator`},Ut(a.separator,()=>[this.separator])):null,this.pair?R("div",{class:`${e}-input-wrapper`},R("div",{class:`${e}-input__input`},R("input",{ref:"inputEl2Ref",type:this.type,class:`${e}-input__input-el`,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[1],disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[1]:void 0,readonly:this.readonly,style:this.textDecorationStyle[1],onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:l=>this.handleInput(l,1),onChange:l=>this.handleChange(l,1)}),this.showPlaceholder2?R("div",{class:`${e}-input__placeholder`},R("span",null,this.mergedPlaceholder[1])):null),Kt(a.suffix,l=>(this.clearable||l)&&R("div",{class:`${e}-input__suffix`},[this.clearable&&R(ha,{clsPrefix:e,show:this.showClearButton,onClear:this.handleClear},{default:()=>{var n;return(n=a.clear)===null||n===void 0?void 0:n.call(a)}}),l]))):null,this.mergedBordered?R("div",{class:`${e}-input__border`}):null,this.mergedBordered?R("div",{class:`${e}-input__state-border`}):null,this.showCount&&this.type==="textarea"?R(xu,null,{default:l=>{var n;return(n=a.count)===null||n===void 0?void 0:n.call(a,l)}}):null)}});function Su(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}var y3=Le({name:"AutoComplete",common:ce,peers:{InternalSelectMenu:ca,Input:mt},self:Su});var gA={name:"AutoComplete",common:D,peers:{InternalSelectMenu:Dt,Input:wo},self:Su},gu=gA;var Sg=e=>{let{borderRadius:o,avatarColor:t,cardColor:r,fontSize:a,heightTiny:l,heightSmall:n,heightMedium:i,heightLarge:d,heightHuge:s,modalColor:u,popoverColor:f}=e;return{borderRadius:o,fontSize:a,border:`2px solid ${r}`,heightTiny:l,heightSmall:n,heightMedium:i,heightLarge:d,heightHuge:s,color:xe(r,t),colorModal:xe(u,t),colorPopover:xe(f,t)}};var wA={name:"Avatar",common:D,self:Sg},an=wA;var TA={name:"AvatarGroup",common:D,peers:{Avatar:an}},wu=TA;var gg={width:"44px",height:"44px",borderRadius:"22px",iconSize:"26px"};var RA={name:"BackTop",common:D,self(e){let{popoverColor:o,textColor2:t,primaryColorHover:r,primaryColorPressed:a}=e;return Object.assign(Object.assign({},gg),{color:o,textColor:t,iconColor:t,iconColorHover:r,iconColorPressed:a,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)"})}},Tu=RA;var FA={name:"Badge",common:D,self(e){let{errorColorSuppl:o,infoColorSuppl:t,successColorSuppl:r,warningColorSuppl:a,fontFamily:l}=e;return{color:o,colorInfo:t,colorSuccess:r,colorError:o,colorWarning:a,fontSize:"12px",fontFamily:l}}},Ru=FA;var wg={fontWeightActive:"400"};var Tg=e=>{let{fontSize:o,textColor3:t,primaryColorHover:r,primaryColorPressed:a,textColor2:l}=e;return Object.assign(Object.assign({},wg),{fontSize:o,itemTextColor:t,itemTextColorHover:r,itemTextColorPressed:a,itemTextColorActive:l,separatorColor:t})};var OA={name:"Breadcrumb",common:D,self:Tg},Fu=OA;function jr(e){return xe(e,[255,255,255,.16])}function ln(e){return xe(e,[0,0,0,.12])}var Rg={paddingTiny:"0 6px",paddingSmall:"0 10px",paddingMedium:"0 14px",paddingLarge:"0 18px",paddingRoundTiny:"0 10px",paddingRoundSmall:"0 14px",paddingRoundMedium:"0 18px",paddingRoundLarge:"0 22px",iconMarginTiny:"6px",iconMarginSmall:"6px",iconMarginMedium:"6px",iconMarginLarge:"6px",iconSizeTiny:"14px",iconSizeSmall:"18px",iconSizeMedium:"18px",iconSizeLarge:"20px",rippleDuration:".6s"};var Ou=e=>{let{heightTiny:o,heightSmall:t,heightMedium:r,heightLarge:a,borderRadius:l,fontSizeTiny:n,fontSizeSmall:i,fontSizeMedium:d,fontSizeLarge:s,opacityDisabled:u,textColor2:f,textColor3:m,primaryColorHover:p,primaryColorPressed:c,borderColor:T,primaryColor:C,baseColor:g,infoColor:k,infoColorHover:U,infoColorPressed:F,successColor:w,successColorHover:y,successColorPressed:S,warningColor:O,warningColorHover:L,warningColorPressed:b,errorColor:W,errorColorHover:B,errorColorPressed:ne,fontWeight:ge,buttonColor2:Pe,buttonColor2Hover:ue,buttonColor2Pressed:se,fontWeightStrong:Te}=e;return Object.assign(Object.assign({},Rg),{heightTiny:o,heightSmall:t,heightMedium:r,heightLarge:a,borderRadiusTiny:l,borderRadiusSmall:l,borderRadiusMedium:l,borderRadiusLarge:l,fontSizeTiny:n,fontSizeSmall:i,fontSizeMedium:d,fontSizeLarge:s,opacityDisabled:u,colorOpacitySecondary:"0.16",colorOpacitySecondaryHover:"0.22",colorOpacitySecondaryPressed:"0.28",colorSecondary:Pe,colorSecondaryHover:ue,colorSecondaryPressed:se,colorTertiary:Pe,colorTertiaryHover:ue,colorTertiaryPressed:se,colorQuaternary:"#0000",colorQuaternaryHover:ue,colorQuaternaryPressed:se,color:"#0000",colorHover:"#0000",colorPressed:"#0000",colorFocus:"#0000",colorDisabled:"#0000",textColor:f,textColorTertiary:m,textColorHover:p,textColorPressed:c,textColorFocus:p,textColorDisabled:f,textColorText:f,textColorTextHover:p,textColorTextPressed:c,textColorTextFocus:p,textColorTextDisabled:f,textColorGhost:f,textColorGhostHover:p,textColorGhostPressed:c,textColorGhostFocus:p,textColorGhostDisabled:f,border:`1px solid ${T}`,borderHover:`1px solid ${p}`,borderPressed:`1px solid ${c}`,borderFocus:`1px solid ${p}`,borderDisabled:`1px solid ${T}`,rippleColor:C,colorPrimary:C,colorHoverPrimary:p,colorPressedPrimary:c,colorFocusPrimary:p,colorDisabledPrimary:C,textColorPrimary:g,textColorHoverPrimary:g,textColorPressedPrimary:g,textColorFocusPrimary:g,textColorDisabledPrimary:g,textColorTextPrimary:C,textColorTextHoverPrimary:p,textColorTextPressedPrimary:c,textColorTextFocusPrimary:p,textColorTextDisabledPrimary:f,textColorGhostPrimary:C,textColorGhostHoverPrimary:p,textColorGhostPressedPrimary:c,textColorGhostFocusPrimary:p,textColorGhostDisabledPrimary:C,borderPrimary:`1px solid ${C}`,borderHoverPrimary:`1px solid ${p}`,borderPressedPrimary:`1px solid ${c}`,borderFocusPrimary:`1px solid ${p}`,borderDisabledPrimary:`1px solid ${C}`,rippleColorPrimary:C,colorInfo:k,colorHoverInfo:U,colorPressedInfo:F,colorFocusInfo:U,colorDisabledInfo:k,textColorInfo:g,textColorHoverInfo:g,textColorPressedInfo:g,textColorFocusInfo:g,textColorDisabledInfo:g,textColorTextInfo:k,textColorTextHoverInfo:U,textColorTextPressedInfo:F,textColorTextFocusInfo:U,textColorTextDisabledInfo:f,textColorGhostInfo:k,textColorGhostHoverInfo:U,textColorGhostPressedInfo:F,textColorGhostFocusInfo:U,textColorGhostDisabledInfo:k,borderInfo:`1px solid ${k}`,borderHoverInfo:`1px solid ${U}`,borderPressedInfo:`1px solid ${F}`,borderFocusInfo:`1px solid ${U}`,borderDisabledInfo:`1px solid ${k}`,rippleColorInfo:k,colorSuccess:w,colorHoverSuccess:y,colorPressedSuccess:S,colorFocusSuccess:y,colorDisabledSuccess:w,textColorSuccess:g,textColorHoverSuccess:g,textColorPressedSuccess:g,textColorFocusSuccess:g,textColorDisabledSuccess:g,textColorTextSuccess:w,textColorTextHoverSuccess:y,textColorTextPressedSuccess:S,textColorTextFocusSuccess:y,textColorTextDisabledSuccess:f,textColorGhostSuccess:w,textColorGhostHoverSuccess:y,textColorGhostPressedSuccess:S,textColorGhostFocusSuccess:y,textColorGhostDisabledSuccess:w,borderSuccess:`1px solid ${w}`,borderHoverSuccess:`1px solid ${y}`,borderPressedSuccess:`1px solid ${S}`,borderFocusSuccess:`1px solid ${y}`,borderDisabledSuccess:`1px solid ${w}`,rippleColorSuccess:w,colorWarning:O,colorHoverWarning:L,colorPressedWarning:b,colorFocusWarning:L,colorDisabledWarning:O,textColorWarning:g,textColorHoverWarning:g,textColorPressedWarning:g,textColorFocusWarning:g,textColorDisabledWarning:g,textColorTextWarning:O,textColorTextHoverWarning:L,textColorTextPressedWarning:b,textColorTextFocusWarning:L,textColorTextDisabledWarning:f,textColorGhostWarning:O,textColorGhostHoverWarning:L,textColorGhostPressedWarning:b,textColorGhostFocusWarning:L,textColorGhostDisabledWarning:O,borderWarning:`1px solid ${O}`,borderHoverWarning:`1px solid ${L}`,borderPressedWarning:`1px solid ${b}`,borderFocusWarning:`1px solid ${L}`,borderDisabledWarning:`1px solid ${O}`,rippleColorWarning:O,colorError:W,colorHoverError:B,colorPressedError:ne,colorFocusError:B,colorDisabledError:W,textColorError:g,textColorHoverError:g,textColorPressedError:g,textColorFocusError:g,textColorDisabledError:g,textColorTextError:W,textColorTextHoverError:B,textColorTextPressedError:ne,textColorTextFocusError:B,textColorTextDisabledError:f,textColorGhostError:W,textColorGhostHoverError:B,textColorGhostPressedError:ne,textColorGhostFocusError:B,textColorGhostDisabledError:W,borderError:`1px solid ${W}`,borderHoverError:`1px solid ${B}`,borderPressedError:`1px solid ${ne}`,borderFocusError:`1px solid ${B}`,borderDisabledError:`1px solid ${W}`,rippleColorError:W,waveOpacity:"0.6",fontWeight:ge,fontWeightStrong:Te})},CA={name:"Button",common:ce,self:Ou},Do=CA;var bA={name:"Button",common:D,self(e){let o=Ou(e);return o.waveOpacity="0.8",o.colorOpacitySecondary="0.16",o.colorOpacitySecondaryHover="0.2",o.colorOpacitySecondaryPressed="0.12",o}},so=bA;var Fg=no("n-button-group");var Og=X([K("button",` + `)])])]))]);var gA=Object.assign(Object.assign({},Fo.props),{bordered:{type:Boolean,default:void 0},type:{type:String,default:"text"},placeholder:[Array,String],defaultValue:{type:[String,Array],default:null},value:[String,Array],disabled:{type:Boolean,default:void 0},size:String,rows:{type:[Number,String],default:3},round:Boolean,minlength:[String,Number],maxlength:[String,Number],clearable:Boolean,autosize:{type:[Boolean,Object],default:!1},pair:Boolean,separator:String,readonly:{type:[String,Boolean],default:!1},passivelyActivated:Boolean,showPasswordOn:String,stateful:{type:Boolean,default:!0},autofocus:Boolean,inputProps:Object,resizable:{type:Boolean,default:!0},showCount:Boolean,loading:{type:Boolean,default:void 0},onMousedown:Function,onKeydown:Function,onKeyup:Function,onInput:[Function,Array],onFocus:[Function,Array],onBlur:[Function,Array],onClick:[Function,Array],onChange:[Function,Array],onClear:[Function,Array],status:String,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],textDecoration:[String,Array],attrSize:{type:Number,default:20},onInputBlur:[Function,Array],onInputFocus:[Function,Array],onDeactivate:[Function,Array],onActivate:[Function,Array],onWrapperFocus:[Function,Array],onWrapperBlur:[Function,Array],internalDeactivateOnEnter:Boolean,internalForceFocus:Boolean,internalLoadingBeforeSuffix:Boolean,showPasswordToggle:Boolean}),hu=le({name:"Input",props:gA,setup(e){let{mergedClsPrefixRef:o,mergedBorderedRef:t,inlineThemeDisabled:r,mergedRtlRef:a}=Bo(e),l=Fo("Input","-input",Sg,mt,e,o),n=Z(null),i=Z(null),d=Z(null),s=Z(null),u=Z(null),f=Z(null),c=Z(null),{localeRef:p}=el("Input"),x=Z(e.defaultValue),T=De(e,"value"),C=Zo(T,x),S=Rt(e),{mergedSizeRef:D,mergedDisabledRef:$,mergedStatusRef:O}=S,g=Z(!1),v=Z(!1),w=Z(!1),F=Z(!1),B=null,y=V(()=>{let{placeholder:A,pair:ee}=e;return ee?Array.isArray(A)?A:A===void 0?["",""]:[A,A]:A===void 0?[p.value.placeholder]:[A]}),W=V(()=>{let{value:A}=w,{value:ee}=C,{value:ke}=y;return!A&&(rn(ee)||Array.isArray(ee)&&rn(ee[0]))&&ke[0]}),_=V(()=>{let{value:A}=w,{value:ee}=C,{value:ke}=y;return!A&&ke[1]&&(rn(ee)||Array.isArray(ee)&&rn(ee[1]))}),ae=Ye(()=>e.internalForceFocus||g.value),he=Ye(()=>{if($.value||e.readonly||!e.clearable||!ae.value&&!v.value)return!1;let{value:A}=C,{value:ee}=ae;return e.pair?!!(Array.isArray(A)&&(A[0]||A[1]))&&(v.value||ee):!!A&&(v.value||ee)}),Me=V(()=>{let{showPasswordOn:A}=e;if(A)return A;if(e.showPasswordToggle)return"click"}),de=Z(!1),ie=V(()=>{let{textDecoration:A}=e;return A?Array.isArray(A)?A.map(ee=>({textDecoration:ee})):[{textDecoration:A}]:["",""]}),ge=Z(void 0),Ve=()=>{var A,ee;if(e.type==="textarea"){let{autosize:ke}=e;if(ke&&(ge.value=(ee=(A=c.value)===null||A===void 0?void 0:A.$el)===null||ee===void 0?void 0:ee.offsetWidth),!i.value||typeof ke=="boolean")return;let{paddingTop:uo,paddingBottom:M,lineHeight:q}=window.getComputedStyle(i.value),ne=Number(uo.slice(0,-2)),se=Number(M.slice(0,-2)),Ne=Number(q.slice(0,-2)),{value:Eo}=d;if(!Eo)return;if(ke.minRows){let To=Math.max(ke.minRows,1),tr=`${ne+se+Ne*To}px`;Eo.style.minHeight=tr}if(ke.maxRows){let To=`${ne+se+Ne*ke.maxRows}px`;Eo.style.maxHeight=To}}},Ke=V(()=>{let{maxlength:A}=e;return A===void 0?void 0:Number(A)});fo(()=>{let{value:A}=C;Array.isArray(A)||Ge(A)});let He=St().proxy;function Xe(A){let{onUpdateValue:ee,"onUpdate:value":ke,onInput:uo}=e,{nTriggerFormInput:M}=S;ee&&Re(ee,A),ke&&Re(ke,A),uo&&Re(uo,A),x.value=A,M()}function Qe(A){let{onChange:ee}=e,{nTriggerFormChange:ke}=S;ee&&Re(ee,A),x.value=A,ke()}function wo(A){let{onBlur:ee}=e,{nTriggerFormBlur:ke}=S;ee&&Re(ee,A),ke()}function Do(A){let{onFocus:ee}=e,{nTriggerFormFocus:ke}=S;ee&&Re(ee,A),ke()}function Be(A){let{onClear:ee}=e;ee&&Re(ee,A)}function We(A){let{onInputBlur:ee}=e;ee&&Re(ee,A)}function ho(A){let{onInputFocus:ee}=e;ee&&Re(ee,A)}function we(){let{onDeactivate:A}=e;A&&Re(A)}function qe(){let{onActivate:A}=e;A&&Re(A)}function to(A){let{onClick:ee}=e;ee&&Re(ee,A)}function vo(A){let{onWrapperFocus:ee}=e;ee&&Re(ee,A)}function m(A){let{onWrapperBlur:ee}=e;ee&&Re(ee,A)}function h(){w.value=!0}function k(A){w.value=!1,A.target===f.value?E(A,1):E(A,0)}function E(A,ee=0,ke="input"){let uo=A.target.value;if(Ge(uo),e.type==="textarea"){let{value:q}=c;q&&q.syncUnifiedContainer()}if(B=uo,w.value)return;let M=uo;if(!e.pair)ke==="input"?Xe(M):Qe(M);else{let{value:q}=C;Array.isArray(q)?q=[...q]:q=["",""],q[ee]=M,ke==="input"?Xe(q):Qe(q)}He.$forceUpdate()}function I(A){We(A),A.relatedTarget===n.value&&we(),A.relatedTarget!==null&&(A.relatedTarget===u.value||A.relatedTarget===f.value||A.relatedTarget===i.value)||(F.value=!1),K(A,"blur")}function j(A){ho(A),g.value=!0,F.value=!0,qe(),K(A,"focus")}function U(A){e.passivelyActivated&&(m(A),K(A,"blur"))}function L(A){e.passivelyActivated&&(g.value=!0,vo(A),K(A,"focus"))}function K(A,ee){A.relatedTarget!==null&&(A.relatedTarget===u.value||A.relatedTarget===f.value||A.relatedTarget===i.value||A.relatedTarget===n.value)||(ee==="focus"?(Do(A),g.value=!0):ee==="blur"&&(wo(A),g.value=!1))}function H(A,ee){E(A,ee,"change")}function b(A){to(A)}function N(A){Be(A),e.pair?(Xe(["",""]),Qe(["",""])):(Xe(""),Qe(""))}function z(A){let{onMousedown:ee}=e;ee&&ee(A);let{tagName:ke}=A.target;if(ke!=="INPUT"&&ke!=="TEXTAREA"){if(e.resizable){let{value:uo}=n;if(uo){let{left:M,top:q,width:ne,height:se}=uo.getBoundingClientRect(),Ne=14;if(M+ne-Ne{uo.preventDefault(),xo("mouseup",document,ee)};if(So("mouseup",document,ee),Me.value!=="mousedown")return;de.value=!0;let ke=()=>{de.value=!1,xo("mouseup",document,ke)};So("mouseup",document,ke)}function Le(A){var ee;switch((ee=e.onKeydown)===null||ee===void 0||ee.call(e,A),A.code){case"Escape":re();break;case"Enter":case"NumpadEnter":Q(A);break}}function Q(A){var ee,ke;if(e.passivelyActivated){let{value:uo}=F;if(uo){e.internalDeactivateOnEnter&&re();return}A.preventDefault(),e.type==="textarea"?(ee=i.value)===null||ee===void 0||ee.focus():(ke=u.value)===null||ke===void 0||ke.focus()}}function re(){e.passivelyActivated&&(F.value=!1,No(()=>{var A;(A=n.value)===null||A===void 0||A.focus()}))}function Se(){var A,ee,ke;$.value||(e.passivelyActivated?(A=n.value)===null||A===void 0||A.focus():((ee=i.value)===null||ee===void 0||ee.focus(),(ke=u.value)===null||ke===void 0||ke.focus()))}function _e(){var A;((A=n.value)===null||A===void 0?void 0:A.contains(document.activeElement))&&document.activeElement.blur()}function Je(){var A,ee;(A=i.value)===null||A===void 0||A.select(),(ee=u.value)===null||ee===void 0||ee.select()}function ze(){$.value||(i.value?i.value.focus():u.value&&u.value.focus())}function eo(){let{value:A}=n;(A==null?void 0:A.contains(document.activeElement))&&A!==document.activeElement&&re()}function Ge(A){let{type:ee,pair:ke,autosize:uo}=e;if(!ke&&uo)if(ee==="textarea"){let{value:M}=d;M&&(M.textContent=(A!=null?A:"")+`\r +`)}else{let{value:M}=s;M&&(A?M.textContent=A:M.innerHTML=" ")}}function Go(){Ve()}let ct=Z({top:"0"});function ll(A){var ee;let{scrollTop:ke}=A.target;ct.value.top=`${-ke}px`,(ee=c.value)===null||ee===void 0||ee.syncUnifiedContainer()}let cr=null;Mo(()=>{let{autosize:A,type:ee}=e;A&&ee==="textarea"?cr=Ze(C,ke=>{!Array.isArray(ke)&&ke!==B&&Ge(ke)}):cr==null||cr()});let xr=null;Mo(()=>{e.type==="textarea"?xr=Ze(C,A=>{var ee;!Array.isArray(A)&&A!==B&&((ee=c.value)===null||ee===void 0||ee.syncUnifiedContainer())}):xr==null||xr()}),qo(id,{mergedValueRef:C,maxlengthRef:Ke,mergedClsPrefixRef:o});let Ra={wrapperElRef:n,inputElRef:u,textareaElRef:i,isCompositing:w,focus:Se,blur:_e,select:Je,deactivate:eo,activate:ze},nl=Sa("Input",a,o),Fa=V(()=>{let{value:A}=D,{common:{cubicBezierEaseInOut:ee},self:{color:ke,borderRadius:uo,textColor:M,caretColor:q,caretColorError:ne,caretColorWarning:se,textDecorationColor:Ne,border:Eo,borderDisabled:To,borderHover:tr,borderFocus:rr,placeholderColor:ko,placeholderColorDisabled:Po,lineHeightTextarea:lt,colorDisabled:yp,colorFocus:bd,textColorDisabled:oo,boxShadowFocus:Vo,iconSize:il,colorFocusWarning:Rn,boxShadowFocusWarning:Fn,borderWarning:On,borderFocusWarning:dl,borderHoverWarning:iT,colorFocusError:dT,boxShadowFocusError:sT,borderError:uT,borderFocusError:fT,borderHoverError:pT,clearSize:mT,clearColor:cT,clearColorHover:xT,clearColorPressed:hT,iconColor:ST,iconColorDisabled:gT,suffixTextColor:wT,countTextColor:TT,iconColorHover:RT,iconColorPressed:FT,loadingColor:OT,loadingColorError:CT,loadingColorWarning:bT,[ve("padding",A)]:yT,[ve("fontSize",A)]:vT,[ve("height",A)]:kT}}=l.value,{left:AT,right:DT}=Ia(yT);return{"--n-bezier":ee,"--n-count-text-color":TT,"--n-color":ke,"--n-font-size":vT,"--n-border-radius":uo,"--n-height":kT,"--n-padding-left":AT,"--n-padding-right":DT,"--n-text-color":M,"--n-caret-color":q,"--n-text-decoration-color":Ne,"--n-border":Eo,"--n-border-disabled":To,"--n-border-hover":tr,"--n-border-focus":rr,"--n-placeholder-color":ko,"--n-placeholder-color-disabled":Po,"--n-icon-size":il,"--n-line-height-textarea":lt,"--n-color-disabled":yp,"--n-color-focus":bd,"--n-text-color-disabled":oo,"--n-box-shadow-focus":Vo,"--n-loading-color":OT,"--n-caret-color-warning":se,"--n-color-focus-warning":Rn,"--n-box-shadow-focus-warning":Fn,"--n-border-warning":On,"--n-border-focus-warning":dl,"--n-border-hover-warning":iT,"--n-loading-color-warning":bT,"--n-caret-color-error":ne,"--n-color-focus-error":dT,"--n-box-shadow-focus-error":sT,"--n-border-error":uT,"--n-border-focus-error":fT,"--n-border-hover-error":pT,"--n-loading-color-error":CT,"--n-clear-color":cT,"--n-clear-size":mT,"--n-clear-color-hover":xT,"--n-clear-color-pressed":hT,"--n-icon-color":ST,"--n-icon-color-hover":RT,"--n-icon-color-pressed":FT,"--n-icon-color-disabled":gT,"--n-suffix-text-color":wT}}),hr=r?Ko("input",V(()=>{let{value:A}=D;return A[0]}),Fa,e):void 0;return Object.assign(Object.assign({},Ra),{wrapperElRef:n,inputElRef:u,inputMirrorElRef:s,inputEl2Ref:f,textareaElRef:i,textareaMirrorElRef:d,textareaScrollbarInstRef:c,rtlEnabled:nl,uncontrolledValue:x,mergedValue:C,passwordVisible:de,mergedPlaceholder:y,showPlaceholder1:W,showPlaceholder2:_,mergedFocus:ae,isComposing:w,activated:F,showClearButton:he,mergedSize:D,mergedDisabled:$,textDecorationStyle:ie,mergedClsPrefix:o,mergedBordered:t,mergedShowPasswordOn:Me,placeholderStyle:ct,mergedStatus:O,textAreaScrollContainerWidth:ge,handleTextAreaScroll:ll,handleCompositionStart:h,handleCompositionEnd:k,handleInput:E,handleInputBlur:I,handleInputFocus:j,handleWrapperBlur:U,handleWrapperFocus:L,handleMouseEnter:te,handleMouseLeave:fe,handleMouseDown:z,handleChange:H,handleClick:b,handleClear:N,handlePasswordToggleClick:Ce,handlePasswordToggleMousedown:ye,handleWrapperKeyDown:Le,handleTextAreaMirrorResize:Go,getTextareaScrollContainer:()=>i.value,mergedTheme:l,cssVars:r?void 0:Fa,themeClass:hr==null?void 0:hr.themeClass,onRender:hr==null?void 0:hr.onRender})},render(){let{mergedClsPrefix:e,mergedStatus:o,themeClass:t,onRender:r,$slots:a}=this;return r==null||r(),R("div",{ref:"wrapperElRef",class:[`${e}-input`,t,o&&`${e}-input--${o}-status`,{[`${e}-input--rtl`]:this.rtlEnabled,[`${e}-input--disabled`]:this.mergedDisabled,[`${e}-input--textarea`]:this.type==="textarea",[`${e}-input--resizable`]:this.resizable&&!this.autosize,[`${e}-input--autosize`]:this.autosize,[`${e}-input--round`]:this.round&&this.type!=="textarea",[`${e}-input--pair`]:this.pair,[`${e}-input--focus`]:this.mergedFocus,[`${e}-input--stateful`]:this.stateful}],style:this.cssVars,tabindex:!this.mergedDisabled&&this.passivelyActivated&&!this.activated?0:void 0,onFocus:this.handleWrapperFocus,onBlur:this.handleWrapperBlur,onClick:this.handleClick,onMousedown:this.handleMouseDown,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onCompositionstart:this.handleCompositionStart,onCompositionend:this.handleCompositionEnd,onKeyup:this.onKeyup,onKeydown:this.handleWrapperKeyDown},R("div",{class:`${e}-input-wrapper`},Kt(a.prefix,l=>l&&R("div",{class:`${e}-input__prefix`},l)),this.type==="textarea"?R(td,{ref:"textareaScrollbarInstRef",class:`${e}-input__textarea`,container:this.getTextareaScrollContainer,triggerDisplayManually:!0,useUnifiedContainer:!0},{default:()=>{let{textAreaScrollContainerWidth:l}=this,n={width:this.autosize&&l&&`${l}px`};return R(Co,null,R("textarea",Object.assign({},this.inputProps,{ref:"textareaElRef",class:`${e}-input__textarea-el`,autofocus:this.autofocus,rows:Number(this.rows),placeholder:this.placeholder,value:this.mergedValue,disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,readonly:this.readonly,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,style:[this.textDecorationStyle[0],n],onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:this.handleInput,onChange:this.handleChange,onScroll:this.handleTextAreaScroll})),this.showPlaceholder1?R("div",{class:`${e}-input__placeholder`,style:[this.placeholderStyle,n],key:"placeholder"},this.mergedPlaceholder[0]):null,this.autosize?R(Dt,{onResize:this.handleTextAreaMirrorResize},{default:()=>R("div",{ref:"textareaMirrorElRef",class:`${e}-input__textarea-mirror`,key:"mirror"})}):null)}}):R("div",{class:`${e}-input__input`},R("input",Object.assign({type:this.type==="password"&&this.mergedShowPasswordOn&&this.passwordVisible?"text":this.type},this.inputProps,{ref:"inputElRef",class:`${e}-input__input-el`,style:this.textDecorationStyle[0],tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[0],disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[0]:this.mergedValue,readonly:this.readonly,autofocus:this.autofocus,size:this.attrSize,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:l=>this.handleInput(l,0),onChange:l=>this.handleChange(l,0)})),this.showPlaceholder1?R("div",{class:`${e}-input__placeholder`},R("span",null,this.mergedPlaceholder[0])):null,this.autosize?R("div",{class:`${e}-input__input-mirror`,key:"mirror",ref:"inputMirrorElRef"},"\xA0"):null),!this.pair&&Kt(a.suffix,l=>l||this.clearable||this.showCount||this.mergedShowPasswordOn||this.loading!==void 0?R("div",{class:`${e}-input__suffix`},[Kt(a.clear,n=>(this.clearable||n)&&R(ga,{clsPrefix:e,show:this.showClearButton,onClear:this.handleClear},{default:()=>n})),this.internalLoadingBeforeSuffix?null:l,this.loading!==void 0?R(ad,{clsPrefix:e,loading:this.loading,showArrow:!1,showClear:!1,style:this.cssVars}):null,this.internalLoadingBeforeSuffix?l:null,this.showCount&&this.type!=="textarea"?R(xu,null,{default:n=>{var i;return(i=a.count)===null||i===void 0?void 0:i.call(a,n)}}):null,this.mergedShowPasswordOn&&this.type==="password"?R(bt,{clsPrefix:e,class:`${e}-input__eye`,onMousedown:this.handlePasswordToggleMousedown,onClick:this.handlePasswordToggleClick},{default:()=>this.passwordVisible?Ut(a["password-visible-icon"],()=>[R(Qs,null)]):Ut(a["password-invisible-icon"],()=>[R(Zs,null)])}):null]):null)),this.pair?R("span",{class:`${e}-input__separator`},Ut(a.separator,()=>[this.separator])):null,this.pair?R("div",{class:`${e}-input-wrapper`},R("div",{class:`${e}-input__input`},R("input",{ref:"inputEl2Ref",type:this.type,class:`${e}-input__input-el`,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[1],disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[1]:void 0,readonly:this.readonly,style:this.textDecorationStyle[1],onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:l=>this.handleInput(l,1),onChange:l=>this.handleChange(l,1)}),this.showPlaceholder2?R("div",{class:`${e}-input__placeholder`},R("span",null,this.mergedPlaceholder[1])):null),Kt(a.suffix,l=>(this.clearable||l)&&R("div",{class:`${e}-input__suffix`},[this.clearable&&R(ga,{clsPrefix:e,show:this.showClearButton,onClear:this.handleClear},{default:()=>{var n;return(n=a.clear)===null||n===void 0?void 0:n.call(a)}}),l]))):null,this.mergedBordered?R("div",{class:`${e}-input__border`}):null,this.mergedBordered?R("div",{class:`${e}-input__state-border`}):null,this.showCount&&this.type==="textarea"?R(xu,null,{default:l=>{var n;return(n=a.count)===null||n===void 0?void 0:n.call(a,l)}}):null)}});function Su(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}var D3=Pe({name:"AutoComplete",common:pe,peers:{InternalSelectMenu:ha,Input:mt},self:Su});var wA={name:"AutoComplete",common:P,peers:{InternalSelectMenu:Pt,Input:go},self:Su},gu=wA;var gg=e=>{let{borderRadius:o,avatarColor:t,cardColor:r,fontSize:a,heightTiny:l,heightSmall:n,heightMedium:i,heightLarge:d,heightHuge:s,modalColor:u,popoverColor:f}=e;return{borderRadius:o,fontSize:a,border:`2px solid ${r}`,heightTiny:l,heightSmall:n,heightMedium:i,heightLarge:d,heightHuge:s,color:me(r,t),colorModal:me(u,t),colorPopover:me(f,t)}};var TA={name:"Avatar",common:P,self:gg},an=TA;var RA={name:"AvatarGroup",common:P,peers:{Avatar:an}},wu=RA;var wg={width:"44px",height:"44px",borderRadius:"22px",iconSize:"26px"};var FA={name:"BackTop",common:P,self(e){let{popoverColor:o,textColor2:t,primaryColorHover:r,primaryColorPressed:a}=e;return Object.assign(Object.assign({},wg),{color:o,textColor:t,iconColor:t,iconColorHover:r,iconColorPressed:a,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)"})}},Tu=FA;var OA={name:"Badge",common:P,self(e){let{errorColorSuppl:o,infoColorSuppl:t,successColorSuppl:r,warningColorSuppl:a,fontFamily:l}=e;return{color:o,colorInfo:t,colorSuccess:r,colorError:o,colorWarning:a,fontSize:"12px",fontFamily:l}}},Ru=OA;var Tg={fontWeightActive:"400"};var Rg=e=>{let{fontSize:o,textColor3:t,primaryColorHover:r,primaryColorPressed:a,textColor2:l}=e;return Object.assign(Object.assign({},Tg),{fontSize:o,itemTextColor:t,itemTextColorHover:r,itemTextColorPressed:a,itemTextColorActive:l,separatorColor:t})};var CA={name:"Breadcrumb",common:P,self:Rg},Fu=CA;function Ur(e){return me(e,[255,255,255,.16])}function ln(e){return me(e,[0,0,0,.12])}var Fg={paddingTiny:"0 6px",paddingSmall:"0 10px",paddingMedium:"0 14px",paddingLarge:"0 18px",paddingRoundTiny:"0 10px",paddingRoundSmall:"0 14px",paddingRoundMedium:"0 18px",paddingRoundLarge:"0 22px",iconMarginTiny:"6px",iconMarginSmall:"6px",iconMarginMedium:"6px",iconMarginLarge:"6px",iconSizeTiny:"14px",iconSizeSmall:"18px",iconSizeMedium:"18px",iconSizeLarge:"20px",rippleDuration:".6s"};var Ou=e=>{let{heightTiny:o,heightSmall:t,heightMedium:r,heightLarge:a,borderRadius:l,fontSizeTiny:n,fontSizeSmall:i,fontSizeMedium:d,fontSizeLarge:s,opacityDisabled:u,textColor2:f,textColor3:c,primaryColorHover:p,primaryColorPressed:x,borderColor:T,primaryColor:C,baseColor:S,infoColor:D,infoColorHover:$,infoColorPressed:O,successColor:g,successColorHover:v,successColorPressed:w,warningColor:F,warningColorHover:B,warningColorPressed:y,errorColor:W,errorColorHover:_,errorColorPressed:ae,fontWeight:he,buttonColor2:Me,buttonColor2Hover:de,buttonColor2Pressed:ie,fontWeightStrong:ge}=e;return Object.assign(Object.assign({},Fg),{heightTiny:o,heightSmall:t,heightMedium:r,heightLarge:a,borderRadiusTiny:l,borderRadiusSmall:l,borderRadiusMedium:l,borderRadiusLarge:l,fontSizeTiny:n,fontSizeSmall:i,fontSizeMedium:d,fontSizeLarge:s,opacityDisabled:u,colorOpacitySecondary:"0.16",colorOpacitySecondaryHover:"0.22",colorOpacitySecondaryPressed:"0.28",colorSecondary:Me,colorSecondaryHover:de,colorSecondaryPressed:ie,colorTertiary:Me,colorTertiaryHover:de,colorTertiaryPressed:ie,colorQuaternary:"#0000",colorQuaternaryHover:de,colorQuaternaryPressed:ie,color:"#0000",colorHover:"#0000",colorPressed:"#0000",colorFocus:"#0000",colorDisabled:"#0000",textColor:f,textColorTertiary:c,textColorHover:p,textColorPressed:x,textColorFocus:p,textColorDisabled:f,textColorText:f,textColorTextHover:p,textColorTextPressed:x,textColorTextFocus:p,textColorTextDisabled:f,textColorGhost:f,textColorGhostHover:p,textColorGhostPressed:x,textColorGhostFocus:p,textColorGhostDisabled:f,border:`1px solid ${T}`,borderHover:`1px solid ${p}`,borderPressed:`1px solid ${x}`,borderFocus:`1px solid ${p}`,borderDisabled:`1px solid ${T}`,rippleColor:C,colorPrimary:C,colorHoverPrimary:p,colorPressedPrimary:x,colorFocusPrimary:p,colorDisabledPrimary:C,textColorPrimary:S,textColorHoverPrimary:S,textColorPressedPrimary:S,textColorFocusPrimary:S,textColorDisabledPrimary:S,textColorTextPrimary:C,textColorTextHoverPrimary:p,textColorTextPressedPrimary:x,textColorTextFocusPrimary:p,textColorTextDisabledPrimary:f,textColorGhostPrimary:C,textColorGhostHoverPrimary:p,textColorGhostPressedPrimary:x,textColorGhostFocusPrimary:p,textColorGhostDisabledPrimary:C,borderPrimary:`1px solid ${C}`,borderHoverPrimary:`1px solid ${p}`,borderPressedPrimary:`1px solid ${x}`,borderFocusPrimary:`1px solid ${p}`,borderDisabledPrimary:`1px solid ${C}`,rippleColorPrimary:C,colorInfo:D,colorHoverInfo:$,colorPressedInfo:O,colorFocusInfo:$,colorDisabledInfo:D,textColorInfo:S,textColorHoverInfo:S,textColorPressedInfo:S,textColorFocusInfo:S,textColorDisabledInfo:S,textColorTextInfo:D,textColorTextHoverInfo:$,textColorTextPressedInfo:O,textColorTextFocusInfo:$,textColorTextDisabledInfo:f,textColorGhostInfo:D,textColorGhostHoverInfo:$,textColorGhostPressedInfo:O,textColorGhostFocusInfo:$,textColorGhostDisabledInfo:D,borderInfo:`1px solid ${D}`,borderHoverInfo:`1px solid ${$}`,borderPressedInfo:`1px solid ${O}`,borderFocusInfo:`1px solid ${$}`,borderDisabledInfo:`1px solid ${D}`,rippleColorInfo:D,colorSuccess:g,colorHoverSuccess:v,colorPressedSuccess:w,colorFocusSuccess:v,colorDisabledSuccess:g,textColorSuccess:S,textColorHoverSuccess:S,textColorPressedSuccess:S,textColorFocusSuccess:S,textColorDisabledSuccess:S,textColorTextSuccess:g,textColorTextHoverSuccess:v,textColorTextPressedSuccess:w,textColorTextFocusSuccess:v,textColorTextDisabledSuccess:f,textColorGhostSuccess:g,textColorGhostHoverSuccess:v,textColorGhostPressedSuccess:w,textColorGhostFocusSuccess:v,textColorGhostDisabledSuccess:g,borderSuccess:`1px solid ${g}`,borderHoverSuccess:`1px solid ${v}`,borderPressedSuccess:`1px solid ${w}`,borderFocusSuccess:`1px solid ${v}`,borderDisabledSuccess:`1px solid ${g}`,rippleColorSuccess:g,colorWarning:F,colorHoverWarning:B,colorPressedWarning:y,colorFocusWarning:B,colorDisabledWarning:F,textColorWarning:S,textColorHoverWarning:S,textColorPressedWarning:S,textColorFocusWarning:S,textColorDisabledWarning:S,textColorTextWarning:F,textColorTextHoverWarning:B,textColorTextPressedWarning:y,textColorTextFocusWarning:B,textColorTextDisabledWarning:f,textColorGhostWarning:F,textColorGhostHoverWarning:B,textColorGhostPressedWarning:y,textColorGhostFocusWarning:B,textColorGhostDisabledWarning:F,borderWarning:`1px solid ${F}`,borderHoverWarning:`1px solid ${B}`,borderPressedWarning:`1px solid ${y}`,borderFocusWarning:`1px solid ${B}`,borderDisabledWarning:`1px solid ${F}`,rippleColorWarning:F,colorError:W,colorHoverError:_,colorPressedError:ae,colorFocusError:_,colorDisabledError:W,textColorError:S,textColorHoverError:S,textColorPressedError:S,textColorFocusError:S,textColorDisabledError:S,textColorTextError:W,textColorTextHoverError:_,textColorTextPressedError:ae,textColorTextFocusError:_,textColorTextDisabledError:f,textColorGhostError:W,textColorGhostHoverError:_,textColorGhostPressedError:ae,textColorGhostFocusError:_,textColorGhostDisabledError:W,borderError:`1px solid ${W}`,borderHoverError:`1px solid ${_}`,borderPressedError:`1px solid ${ae}`,borderFocusError:`1px solid ${_}`,borderDisabledError:`1px solid ${W}`,rippleColorError:W,waveOpacity:"0.6",fontWeight:he,fontWeightStrong:ge})},bA={name:"Button",common:pe,self:Ou},Ao=bA;var yA={name:"Button",common:P,self(e){let o=Ou(e);return o.waveOpacity="0.8",o.colorOpacitySecondary="0.16",o.colorOpacitySecondaryHover="0.2",o.colorOpacitySecondaryPressed="0.12",o}},io=yA;var Og=lo("n-button-group");var Cg=Y([G("button",` margin: 0; font-weight: var(--n-font-weight); line-height: 1; @@ -570,7 +570,7 @@ ${o} background-color .3s var(--n-bezier), opacity .3s var(--n-bezier), border-color .3s var(--n-bezier); - `,[Se("color",[J("border",{borderColor:"var(--n-border-color)"}),Se("disabled",[J("border",{borderColor:"var(--n-border-color-disabled)"})]),rt("disabled",[X("&:focus",[J("state-border",{borderColor:"var(--n-border-color-focus)"})]),X("&:hover",[J("state-border",{borderColor:"var(--n-border-color-hover)"})]),X("&:active",[J("state-border",{borderColor:"var(--n-border-color-pressed)"})]),Se("pressed",[J("state-border",{borderColor:"var(--n-border-color-pressed)"})])])]),Se("disabled",{backgroundColor:"var(--n-color-disabled)",color:"var(--n-text-color-disabled)"},[J("border",{border:"var(--n-border-disabled)"})]),rt("disabled",[X("&:focus",{backgroundColor:"var(--n-color-focus)",color:"var(--n-text-color-focus)"},[J("state-border",{border:"var(--n-border-focus)"})]),X("&:hover",{backgroundColor:"var(--n-color-hover)",color:"var(--n-text-color-hover)"},[J("state-border",{border:"var(--n-border-hover)"})]),X("&:active",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[J("state-border",{border:"var(--n-border-pressed)"})]),Se("pressed",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[J("state-border",{border:"var(--n-border-pressed)"})])]),Se("loading",{"pointer-events":"none"}),K("base-wave",` + `,[xe("color",[X("border",{borderColor:"var(--n-border-color)"}),xe("disabled",[X("border",{borderColor:"var(--n-border-color-disabled)"})]),rt("disabled",[Y("&:focus",[X("state-border",{borderColor:"var(--n-border-color-focus)"})]),Y("&:hover",[X("state-border",{borderColor:"var(--n-border-color-hover)"})]),Y("&:active",[X("state-border",{borderColor:"var(--n-border-color-pressed)"})]),xe("pressed",[X("state-border",{borderColor:"var(--n-border-color-pressed)"})])])]),xe("disabled",{backgroundColor:"var(--n-color-disabled)",color:"var(--n-text-color-disabled)"},[X("border",{border:"var(--n-border-disabled)"})]),rt("disabled",[Y("&:focus",{backgroundColor:"var(--n-color-focus)",color:"var(--n-text-color-focus)"},[X("state-border",{border:"var(--n-border-focus)"})]),Y("&:hover",{backgroundColor:"var(--n-color-hover)",color:"var(--n-text-color-hover)"},[X("state-border",{border:"var(--n-border-hover)"})]),Y("&:active",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[X("state-border",{border:"var(--n-border-pressed)"})]),xe("pressed",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[X("state-border",{border:"var(--n-border-pressed)"})])]),xe("loading",{"pointer-events":"none"}),G("base-wave",` pointer-events: none; top: 0; right: 0; @@ -579,7 +579,7 @@ ${o} animation-iteration-count: 1; animation-duration: var(--n-ripple-duration); animation-timing-function: var(--n-bezier-ease-out), var(--n-bezier-ease-out); - `,[Se("active",{zIndex:1,animationName:"button-wave-spread, button-wave-opacity"})]),typeof window!="undefined"&&"MozBoxSizing"in document.createElement("div").style?X("&::moz-focus-inner",{border:0}):null,J("border, state-border",` + `,[xe("active",{zIndex:1,animationName:"button-wave-spread, button-wave-opacity"})]),typeof window!="undefined"&&"MozBoxSizing"in document.createElement("div").style?Y("&::moz-focus-inner",{border:0}):null,X("border, state-border",` position: absolute; left: 0; top: 0; @@ -588,7 +588,7 @@ ${o} border-radius: inherit; transition: border-color .3s var(--n-bezier); pointer-events: none; - `),J("border",{border:"var(--n-border)"}),J("state-border",{border:"var(--n-border)",borderColor:"#0000",zIndex:1}),J("icon",` + `),X("border",{border:"var(--n-border)"}),X("state-border",{border:"var(--n-border)",borderColor:"#0000",zIndex:1}),X("icon",` margin: var(--n-icon-margin); margin-left: 0; height: var(--n-icon-size); @@ -597,7 +597,7 @@ ${o} font-size: var(--n-icon-size); position: relative; flex-shrink: 0; - `,[K("icon-slot",` + `,[G("icon-slot",` height: var(--n-icon-size); width: var(--n-icon-size); position: absolute; @@ -605,14 +605,14 @@ ${o} top: 50%; transform: translateY(-50%); display: flex; - `,[ut({top:"50%",originalTransform:"translateY(-50%)"})]),fg()]),J("content",` + `,[ut({top:"50%",originalTransform:"translateY(-50%)"})]),pg()]),X("content",` display: flex; align-items: center; flex-wrap: nowrap; - `,[X("~",[J("icon",{margin:"var(--n-icon-margin)",marginRight:0})])]),Se("block",` + `,[Y("~",[X("icon",{margin:"var(--n-icon-margin)",marginRight:0})])]),xe("block",` display: flex; width: 100%; - `),Se("dashed",[J("border, state-border",{borderStyle:"dashed !important"})]),Se("disabled",{cursor:"not-allowed",opacity:"var(--n-opacity-disabled)"})]),X("@keyframes button-wave-spread",{from:{boxShadow:"0 0 0.5px 0 var(--n-ripple-color)"},to:{boxShadow:"0 0 0.5px 4.5px var(--n-ripple-color)"}}),X("@keyframes button-wave-opacity",{from:{opacity:"var(--n-wave-opacity)"},to:{opacity:0}})]);var yA=Object.assign(Object.assign({},Oo.props),{color:String,textColor:String,text:Boolean,block:Boolean,loading:Boolean,disabled:Boolean,circle:Boolean,size:String,ghost:Boolean,round:Boolean,secondary:Boolean,tertiary:Boolean,quaternary:Boolean,strong:Boolean,focusable:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},tag:{type:String,default:"button"},type:{type:String,default:"default"},dashed:Boolean,iconPlacement:{type:String,default:"left"},attrType:{type:String,default:"button"},bordered:{type:Boolean,default:!0},onClick:[Function,Array],internalAutoFocus:Boolean}),vA=ie({name:"Button",props:yA,setup(e){let o=Z(null),t=Z(null),r=Z(!1);mo(()=>{let{value:F}=o;F&&!e.disabled&&e.focusable&&e.internalAutoFocus&&F.focus({preventScroll:!0})});let a=Je(()=>!e.quaternary&&!e.tertiary&&!e.secondary&&!e.text&&(!e.color||e.ghost||e.dashed)&&e.bordered),l=Re(Fg,{}),{mergedSizeRef:n}=Tt({},{defaultSize:"medium",mergedSize:F=>{let{size:w}=e;if(w)return w;let{size:y}=l;if(y)return y;let{mergedSize:S}=F||{};return S?S.value:"medium"}}),i=z(()=>e.focusable&&!e.disabled),d=F=>{var w;F.preventDefault(),!e.disabled&&i.value&&((w=o.value)===null||w===void 0||w.focus({preventScroll:!0}))},s=F=>{var w;if(!e.disabled&&!e.loading){let{onClick:y}=e;y&&Fe(y,F),e.text||(w=t.value)===null||w===void 0||w.play()}},u=F=>{switch(F.code){case"Enter":case"NumpadEnter":if(!e.keyboard)return;r.value=!1}},f=F=>{switch(F.code){case"Enter":case"NumpadEnter":if(!e.keyboard||e.loading){F.preventDefault();return}r.value=!0}},m=()=>{r.value=!1},{inlineThemeDisabled:p,mergedClsPrefixRef:c,mergedRtlRef:T}=Bo(e),C=Oo("Button","-button",Og,Do,e,c),g=xa("Button",T,c),k=z(()=>{let F=C.value,{common:{cubicBezierEaseInOut:w,cubicBezierEaseOut:y},self:S}=F,{rippleDuration:O,opacityDisabled:L,fontWeight:b,fontWeightStrong:W}=S,B=n.value,{dashed:ne,type:ge,ghost:Pe,text:ue,color:se,round:Te,circle:je,textColor:Ge,secondary:ze,tertiary:Ze,quaternary:Ye,strong:ho}=e,ko={"font-weight":ho?W:b},He={"--n-color":"initial","--n-color-hover":"initial","--n-color-pressed":"initial","--n-color-focus":"initial","--n-color-disabled":"initial","--n-ripple-color":"initial","--n-text-color":"initial","--n-text-color-hover":"initial","--n-text-color-pressed":"initial","--n-text-color-focus":"initial","--n-text-color-disabled":"initial"},Ie=ge==="tertiary",fo=ge==="default",Ce=Ie?"default":ge;if(ue){let I=Ge||se,V=I||S[Ae("textColorText",Ce)];He={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":"#0000","--n-text-color":V,"--n-text-color-hover":I?jr(I):S[Ae("textColorTextHover",Ce)],"--n-text-color-pressed":I?ln(I):S[Ae("textColorTextPressed",Ce)],"--n-text-color-focus":I?jr(I):S[Ae("textColorTextHover",Ce)],"--n-text-color-disabled":I||S[Ae("textColorTextDisabled",Ce)]}}else if(Pe||ne){let I=Ge||se;He={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":se||S[Ae("rippleColor",Ce)],"--n-text-color":I||S[Ae("textColorGhost",Ce)],"--n-text-color-hover":I?jr(I):S[Ae("textColorGhostHover",Ce)],"--n-text-color-pressed":I?ln(I):S[Ae("textColorGhostPressed",Ce)],"--n-text-color-focus":I?jr(I):S[Ae("textColorGhostHover",Ce)],"--n-text-color-disabled":I||S[Ae("textColorGhostDisabled",Ce)]}}else if(ze){let I=fo?S.textColor:Ie?S.textColorTertiary:S[Ae("color",Ce)],V=se||I,q=ge!=="default"&&ge!=="tertiary";He={"--n-color":q?ee(V,{alpha:Number(S.colorOpacitySecondary)}):S.colorSecondary,"--n-color-hover":q?ee(V,{alpha:Number(S.colorOpacitySecondaryHover)}):S.colorSecondaryHover,"--n-color-pressed":q?ee(V,{alpha:Number(S.colorOpacitySecondaryPressed)}):S.colorSecondaryPressed,"--n-color-focus":q?ee(V,{alpha:Number(S.colorOpacitySecondaryHover)}):S.colorSecondaryHover,"--n-color-disabled":S.colorSecondary,"--n-ripple-color":"#0000","--n-text-color":V,"--n-text-color-hover":V,"--n-text-color-pressed":V,"--n-text-color-focus":V,"--n-text-color-disabled":V}}else if(Ze||Ye){let I=fo?S.textColor:Ie?S.textColorTertiary:S[Ae("color",Ce)],V=se||I;Ze?(He["--n-color"]=S.colorTertiary,He["--n-color-hover"]=S.colorTertiaryHover,He["--n-color-pressed"]=S.colorTertiaryPressed,He["--n-color-focus"]=S.colorSecondaryHover,He["--n-color-disabled"]=S.colorTertiary):(He["--n-color"]=S.colorQuaternary,He["--n-color-hover"]=S.colorQuaternaryHover,He["--n-color-pressed"]=S.colorQuaternaryPressed,He["--n-color-focus"]=S.colorQuaternaryHover,He["--n-color-disabled"]=S.colorQuaternary),He["--n-ripple-color"]="#0000",He["--n-text-color"]=V,He["--n-text-color-hover"]=V,He["--n-text-color-pressed"]=V,He["--n-text-color-focus"]=V,He["--n-text-color-disabled"]=V}else He={"--n-color":se||S[Ae("color",Ce)],"--n-color-hover":se?jr(se):S[Ae("colorHover",Ce)],"--n-color-pressed":se?ln(se):S[Ae("colorPressed",Ce)],"--n-color-focus":se?jr(se):S[Ae("colorFocus",Ce)],"--n-color-disabled":se||S[Ae("colorDisabled",Ce)],"--n-ripple-color":se||S[Ae("rippleColor",Ce)],"--n-text-color":Ge||(se?S.textColorPrimary:Ie?S.textColorTertiary:S[Ae("textColor",Ce)]),"--n-text-color-hover":Ge||(se?S.textColorHoverPrimary:S[Ae("textColorHover",Ce)]),"--n-text-color-pressed":Ge||(se?S.textColorPressedPrimary:S[Ae("textColorPressed",Ce)]),"--n-text-color-focus":Ge||(se?S.textColorFocusPrimary:S[Ae("textColorFocus",Ce)]),"--n-text-color-disabled":Ge||(se?S.textColorDisabledPrimary:S[Ae("textColorDisabled",Ce)])};let ro={"--n-border":"initial","--n-border-hover":"initial","--n-border-pressed":"initial","--n-border-focus":"initial","--n-border-disabled":"initial"};ue?ro={"--n-border":"none","--n-border-hover":"none","--n-border-pressed":"none","--n-border-focus":"none","--n-border-disabled":"none"}:ro={"--n-border":S[Ae("border",Ce)],"--n-border-hover":S[Ae("borderHover",Ce)],"--n-border-pressed":S[Ae("borderPressed",Ce)],"--n-border-focus":S[Ae("borderFocus",Ce)],"--n-border-disabled":S[Ae("borderDisabled",Ce)]};let{[Ae("height",B)]:E,[Ae("fontSize",B)]:le,[Ae("padding",B)]:x,[Ae("paddingRound",B)]:h,[Ae("iconSize",B)]:P,[Ae("borderRadius",B)]:N,[Ae("iconMargin",B)]:H,waveOpacity:$}=S,Y={"--n-width":je&&!ue?E:"initial","--n-height":ue?"initial":E,"--n-font-size":le,"--n-padding":je||ue?"initial":Te?h:x,"--n-icon-size":P,"--n-icon-margin":H,"--n-border-radius":ue?"initial":je||Te?E:N};return Object.assign(Object.assign(Object.assign(Object.assign({"--n-bezier":w,"--n-bezier-ease-out":y,"--n-ripple-duration":O,"--n-opacity-disabled":L,"--n-wave-opacity":$},ko),He),ro),Y)}),U=p?Ko("button",z(()=>{let F="",{dashed:w,type:y,ghost:S,text:O,color:L,round:b,circle:W,textColor:B,secondary:ne,tertiary:ge,quaternary:Pe,strong:ue}=e;w&&(F+="a"),S&&(F+="b"),O&&(F+="c"),b&&(F+="d"),W&&(F+="e"),ne&&(F+="f"),ge&&(F+="g"),Pe&&(F+="h"),ue&&(F+="i"),L&&(F+="j"+Pl(L)),B&&(F+="k"+Pl(B));let{value:se}=n;return F+="l"+se[0],F+="m"+y[0],F}),k,e):void 0;return{selfElRef:o,waveElRef:t,mergedClsPrefix:c,mergedFocusable:i,mergedSize:n,showBorder:a,enterPressed:r,rtlEnabled:g,handleMousedown:d,handleKeydown:f,handleBlur:m,handleKeyup:u,handleClick:s,customColorCssVars:z(()=>{let{color:F}=e;if(!F)return null;let w=jr(F);return{"--n-border-color":F,"--n-border-color-hover":w,"--n-border-color-pressed":ln(F),"--n-border-color-focus":w,"--n-border-color-disabled":F}}),cssVars:p?void 0:k,themeClass:U==null?void 0:U.themeClass,onRender:U==null?void 0:U.onRender}},render(){let{mergedClsPrefix:e,tag:o,onRender:t}=this;t==null||t();let r=Kt(this.$slots.default,a=>a&&R("span",{class:`${e}-button__content`},a));return R(o,{ref:"selfElRef",class:[this.themeClass,`${e}-button`,`${e}-button--${this.type}-type`,`${e}-button--${this.mergedSize}-type`,this.rtlEnabled&&`${e}-button--rtl`,this.disabled&&`${e}-button--disabled`,this.block&&`${e}-button--block`,this.enterPressed&&`${e}-button--pressed`,!this.text&&this.dashed&&`${e}-button--dashed`,this.color&&`${e}-button--color`,this.secondary&&`${e}-button--secondary`,this.loading&&`${e}-button--loading`,this.ghost&&`${e}-button--ghost`],tabindex:this.mergedFocusable?0:-1,type:this.attrType,style:this.cssVars,disabled:this.disabled,onClick:this.handleClick,onBlur:this.handleBlur,onMousedown:this.handleMousedown,onKeyup:this.handleKeyup,onKeydown:this.handleKeydown},this.iconPlacement==="right"&&r,R(Ja,{width:!0},{default:()=>Kt(this.$slots.icon,a=>(this.loading||a)&&R("span",{class:`${e}-button__icon`,style:{margin:si(this.$slots.default)?"0":""}},R(Ot,null,{default:()=>this.loading?R(Vr,{clsPrefix:e,key:"loading",class:`${e}-icon-slot`,strokeWidth:20}):R("div",{key:"icon",class:`${e}-icon-slot`,role:"none"},a)})))}),this.iconPlacement==="left"&&r,this.text?null:R(ad,{ref:"waveElRef",clsPrefix:e}),this.showBorder?R("div",{"aria-hidden":!0,class:`${e}-button__border`,style:this.customColorCssVars}):null,this.showBorder?R("div",{"aria-hidden":!0,class:`${e}-button__state-border`,style:this.customColorCssVars}):null)}}),Cu=vA;var Cg={titleFontSize:"22px"};var bu=e=>{let{borderRadius:o,fontSize:t,lineHeight:r,textColor2:a,textColor1:l,textColorDisabled:n,dividerColor:i,fontWeightStrong:d,primaryColor:s,baseColor:u,hoverColor:f,cardColor:m,modalColor:p,popoverColor:c}=e;return Object.assign(Object.assign({},Cg),{borderRadius:o,borderColor:xe(m,i),borderColorModal:xe(p,i),borderColorPopover:xe(c,i),textColor:a,titleFontWeight:d,titleTextColor:l,dayTextColor:n,fontSize:t,lineHeight:r,dateColorCurrent:s,dateTextColorCurrent:u,cellColorHover:xe(m,f),cellColorHoverModal:xe(p,f),cellColorHoverPopover:xe(c,f),cellColor:m,cellColorModal:p,cellColorPopover:c,barColor:s})},XU=Le({name:"Calendar",common:ce,peers:{Button:Do},self:bu});var kA={name:"Calendar",common:D,peers:{Button:so},self:bu},yu=kA;var vu=e=>{let{fontSize:o,boxShadow2:t,popoverColor:r,textColor2:a,borderRadius:l,borderColor:n,heightSmall:i,heightMedium:d,heightLarge:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:m,dividerColor:p}=e;return{panelFontSize:o,boxShadow:t,color:r,textColor:a,borderRadius:l,border:`1px solid ${n}`,heightSmall:i,heightMedium:d,heightLarge:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:m,dividerColor:p}},u4=Le({name:"ColorPicker",common:ce,peers:{Input:mt,Button:Do},self:vu});var AA={name:"ColorPicker",common:D,peers:{Input:wo,Button:so},self:vu},ku=AA;var bg={paddingSmall:"12px 16px 12px",paddingMedium:"19px 24px 20px",paddingLarge:"23px 32px 24px",paddingHuge:"27px 40px 28px",titleFontSizeSmall:"16px",titleFontSizeMedium:"18px",titleFontSizeLarge:"18px",titleFontSizeHuge:"18px",closeSize:"18px"};var Au=e=>{let{primaryColor:o,borderRadius:t,lineHeight:r,fontSize:a,cardColor:l,textColor2:n,textColor1:i,dividerColor:d,fontWeightStrong:s,closeColor:u,closeColorHover:f,closeColorPressed:m,modalColor:p,boxShadow1:c,popoverColor:T,actionColor:C}=e;return Object.assign(Object.assign({},bg),{lineHeight:r,color:l,colorModal:p,colorPopover:T,colorTarget:o,colorEmbedded:C,textColor:n,titleTextColor:i,borderColor:d,actionColor:C,titleFontWeight:s,closeColor:u,closeColorHover:f,closeColorPressed:m,fontSizeSmall:a,fontSizeMedium:a,fontSizeLarge:a,fontSizeHuge:a,boxShadow:c,borderRadius:t})},DA={name:"Card",common:ce,self:Au},Du=DA;var PA={name:"Card",common:D,self(e){let o=Au(e),{cardColor:t}=e;return o.colorEmbedded=t,o}},nn=PA;var yg=e=>({dotSize:"8px",dotColor:"rgba(255, 255, 255, .3)",dotColorActive:"rgba(255, 255, 255, 1)",dotColorFocus:"rgba(255, 255, 255, .5)",dotLineWidth:"16px",dotLineWidthActive:"24px",arrowColor:"#eee"});var MA={name:"Carousel",common:D,self:yg},Pu=MA;var vg={sizeSmall:"14px",sizeMedium:"16px",sizeLarge:"18px",labelPadding:"0 8px"};var Mu=e=>{let{baseColor:o,inputColorDisabled:t,cardColor:r,modalColor:a,popoverColor:l,textColorDisabled:n,borderColor:i,primaryColor:d,textColor2:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:m,borderRadiusSmall:p,lineHeight:c}=e;return Object.assign(Object.assign({},vg),{labelLineHeight:c,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:m,borderRadius:p,color:o,colorChecked:d,colorDisabled:t,colorDisabledChecked:t,colorTableHeader:r,colorTableHeaderModal:a,colorTableHeaderPopover:l,checkMarkColor:o,checkMarkColorDisabled:n,checkMarkColorDisabledChecked:n,border:`1px solid ${i}`,borderDisabled:`1px solid ${i}`,borderDisabledChecked:`1px solid ${i}`,borderChecked:`1px solid ${d}`,borderFocus:`1px solid ${d}`,boxShadowFocus:`0 0 0 2px ${ee(d,{alpha:.3})}`,textColor:s,textColorDisabled:n})},BA={name:"Checkbox",common:ce,self:Mu},pr=BA;var LA={name:"Checkbox",common:D,self(e){let{cardColor:o}=e,t=Mu(e);return t.color="#0000",t.checkMarkColor=o,t}},Mt=LA;var Bu=e=>{let{borderRadius:o,boxShadow2:t,popoverColor:r,textColor2:a,textColor3:l,primaryColor:n,textColorDisabled:i,dividerColor:d,hoverColor:s,fontSizeMedium:u,heightMedium:f}=e;return{menuBorderRadius:o,menuColor:r,menuBoxShadow:t,menuDividerColor:d,menuHeight:"calc(var(--n-option-height) * 6.6)",optionArrowColor:l,optionHeight:f,optionFontSize:u,optionColorHover:s,optionTextColor:a,optionTextColorActive:n,optionTextColorDisabled:i,optionCheckMarkColor:n,loadingColor:n,columnWidth:"180px"}},J4=Le({name:"Cascader",common:ce,peers:{InternalSelectMenu:ca,InternalSelection:tn,Scrollbar:yo,Checkbox:pr,Empty:ft},self:Bu});var EA={name:"Cascader",common:D,peers:{InternalSelectMenu:Dt,InternalSelection:Sa,Scrollbar:io,Checkbox:Mt,Empty:ft},self:Bu},Lu=EA;var kg=R("svg",{viewBox:"0 0 64 64",class:"check-icon"},R("path",{d:"M50.42,16.76L22.34,39.45l-8.1-11.46c-1.12-1.58-3.3-1.96-4.88-0.84c-1.58,1.12-1.95,3.3-0.84,4.88l10.26,14.51 c0.56,0.79,1.42,1.31,2.38,1.45c0.16,0.02,0.32,0.03,0.48,0.03c0.8,0,1.57-0.27,2.2-0.78l30.99-25.03c1.5-1.21,1.74-3.42,0.52-4.92 C54.13,15.78,51.93,15.55,50.42,16.76z"}));var Ag=R("svg",{viewBox:"0 0 100 100",class:"line-icon"},R("path",{d:"M80.2,55.5H21.4c-2.8,0-5.1-2.5-5.1-5.5l0,0c0-3,2.3-5.5,5.1-5.5h58.7c2.8,0,5.1,2.5,5.1,5.5l0,0C85.2,53.1,82.9,55.5,80.2,55.5z"}));var Eu=no("n-checkbox-group"),NA={min:Number,max:Number,size:String,value:Array,defaultValue:{type:Array,default:null},disabled:{type:Boolean,default:void 0},"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onChange:{type:[Function,Array],validator:()=>!0,default:void 0}},TK=ie({name:"CheckboxGroup",props:NA,setup(e){let{mergedClsPrefixRef:o}=Bo(e),t=Tt(e),{mergedSizeRef:r,mergedDisabledRef:a}=t,l=Z(e.defaultValue),n=z(()=>e.value),i=Zo(n,l),d=z(()=>{var f;return((f=i.value)===null||f===void 0?void 0:f.length)||0}),s=z(()=>Array.isArray(i.value)?new Set(i.value):new Set);function u(f,m){let{nTriggerFormInput:p,nTriggerFormChange:c}=t,{onChange:T,"onUpdate:value":C,onUpdateValue:g}=e;if(Array.isArray(i.value)){let k=Array.from(i.value),U=k.findIndex(F=>F===m);f?~U||(k.push(m),g&&Fe(g,k),C&&Fe(C,k),p(),c(),l.value=k,T&&Fe(T,k)):~U&&(k.splice(U,1),g&&Fe(g,k),C&&Fe(C,k),T&&Fe(T,k),l.value=k,p(),c())}else f?(g&&Fe(g,[m]),C&&Fe(C,[m]),T&&Fe(T,[m]),l.value=[m],p(),c()):(g&&Fe(g,[]),C&&Fe(C,[]),T&&Fe(T,[]),l.value=[],p(),c())}return qo(Eu,{checkedCountRef:d,maxRef:Be(e,"max"),minRef:Be(e,"min"),valueSetRef:s,disabledRef:a,mergedSizeRef:r,toggleCheckbox:u}),{mergedClsPrefix:o}},render(){return R("div",{class:`${this.mergedClsPrefix}-checkbox-group`,role:"group"},this.$slots)}});var Dg=X([K("checkbox",` + `),xe("dashed",[X("border, state-border",{borderStyle:"dashed !important"})]),xe("disabled",{cursor:"not-allowed",opacity:"var(--n-opacity-disabled)"})]),Y("@keyframes button-wave-spread",{from:{boxShadow:"0 0 0.5px 0 var(--n-ripple-color)"},to:{boxShadow:"0 0 0.5px 4.5px var(--n-ripple-color)"}}),Y("@keyframes button-wave-opacity",{from:{opacity:"var(--n-wave-opacity)"},to:{opacity:0}})]);var vA=Object.assign(Object.assign({},Fo.props),{color:String,textColor:String,text:Boolean,block:Boolean,loading:Boolean,disabled:Boolean,circle:Boolean,size:String,ghost:Boolean,round:Boolean,secondary:Boolean,tertiary:Boolean,quaternary:Boolean,strong:Boolean,focusable:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},tag:{type:String,default:"button"},type:{type:String,default:"default"},dashed:Boolean,iconPlacement:{type:String,default:"left"},attrType:{type:String,default:"button"},bordered:{type:Boolean,default:!0},onClick:[Function,Array],internalAutoFocus:Boolean}),kA=le({name:"Button",props:vA,setup(e){let o=Z(null),t=Z(null),r=Z(!1);fo(()=>{let{value:O}=o;O&&!e.disabled&&e.focusable&&e.internalAutoFocus&&O.focus({preventScroll:!0})});let a=Ye(()=>!e.quaternary&&!e.tertiary&&!e.secondary&&!e.text&&(!e.color||e.ghost||e.dashed)&&e.bordered),l=Te(Og,{}),{mergedSizeRef:n}=Rt({},{defaultSize:"medium",mergedSize:O=>{let{size:g}=e;if(g)return g;let{size:v}=l;if(v)return v;let{mergedSize:w}=O||{};return w?w.value:"medium"}}),i=V(()=>e.focusable&&!e.disabled),d=O=>{var g;O.preventDefault(),!e.disabled&&i.value&&((g=o.value)===null||g===void 0||g.focus({preventScroll:!0}))},s=O=>{var g;if(!e.disabled&&!e.loading){let{onClick:v}=e;v&&Re(v,O),e.text||(g=t.value)===null||g===void 0||g.play()}},u=O=>{switch(O.code){case"Enter":case"NumpadEnter":if(!e.keyboard)return;r.value=!1}},f=O=>{switch(O.code){case"Enter":case"NumpadEnter":if(!e.keyboard||e.loading){O.preventDefault();return}r.value=!0}},c=()=>{r.value=!1},{inlineThemeDisabled:p,mergedClsPrefixRef:x,mergedRtlRef:T}=Bo(e),C=Fo("Button","-button",Cg,Ao,e,x),S=Sa("Button",T,x),D=V(()=>{let O=C.value,{common:{cubicBezierEaseInOut:g,cubicBezierEaseOut:v},self:w}=O,{rippleDuration:F,opacityDisabled:B,fontWeight:y,fontWeightStrong:W}=w,_=n.value,{dashed:ae,type:he,ghost:Me,text:de,color:ie,round:ge,circle:Ve,textColor:Ke,secondary:He,tertiary:Xe,quaternary:Qe,strong:wo}=e,Do={"font-weight":wo?W:y},Be={"--n-color":"initial","--n-color-hover":"initial","--n-color-pressed":"initial","--n-color-focus":"initial","--n-color-disabled":"initial","--n-ripple-color":"initial","--n-text-color":"initial","--n-text-color-hover":"initial","--n-text-color-pressed":"initial","--n-text-color-focus":"initial","--n-text-color-disabled":"initial"},We=he==="tertiary",ho=he==="default",we=We?"default":he;if(de){let L=Ke||ie,K=L||w[ve("textColorText",we)];Be={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":"#0000","--n-text-color":K,"--n-text-color-hover":L?Ur(L):w[ve("textColorTextHover",we)],"--n-text-color-pressed":L?ln(L):w[ve("textColorTextPressed",we)],"--n-text-color-focus":L?Ur(L):w[ve("textColorTextHover",we)],"--n-text-color-disabled":L||w[ve("textColorTextDisabled",we)]}}else if(Me||ae){let L=Ke||ie;Be={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":ie||w[ve("rippleColor",we)],"--n-text-color":L||w[ve("textColorGhost",we)],"--n-text-color-hover":L?Ur(L):w[ve("textColorGhostHover",we)],"--n-text-color-pressed":L?ln(L):w[ve("textColorGhostPressed",we)],"--n-text-color-focus":L?Ur(L):w[ve("textColorGhostHover",we)],"--n-text-color-disabled":L||w[ve("textColorGhostDisabled",we)]}}else if(He){let L=ho?w.textColor:We?w.textColorTertiary:w[ve("color",we)],K=ie||L,H=he!=="default"&&he!=="tertiary";Be={"--n-color":H?J(K,{alpha:Number(w.colorOpacitySecondary)}):w.colorSecondary,"--n-color-hover":H?J(K,{alpha:Number(w.colorOpacitySecondaryHover)}):w.colorSecondaryHover,"--n-color-pressed":H?J(K,{alpha:Number(w.colorOpacitySecondaryPressed)}):w.colorSecondaryPressed,"--n-color-focus":H?J(K,{alpha:Number(w.colorOpacitySecondaryHover)}):w.colorSecondaryHover,"--n-color-disabled":w.colorSecondary,"--n-ripple-color":"#0000","--n-text-color":K,"--n-text-color-hover":K,"--n-text-color-pressed":K,"--n-text-color-focus":K,"--n-text-color-disabled":K}}else if(Xe||Qe){let L=ho?w.textColor:We?w.textColorTertiary:w[ve("color",we)],K=ie||L;Xe?(Be["--n-color"]=w.colorTertiary,Be["--n-color-hover"]=w.colorTertiaryHover,Be["--n-color-pressed"]=w.colorTertiaryPressed,Be["--n-color-focus"]=w.colorSecondaryHover,Be["--n-color-disabled"]=w.colorTertiary):(Be["--n-color"]=w.colorQuaternary,Be["--n-color-hover"]=w.colorQuaternaryHover,Be["--n-color-pressed"]=w.colorQuaternaryPressed,Be["--n-color-focus"]=w.colorQuaternaryHover,Be["--n-color-disabled"]=w.colorQuaternary),Be["--n-ripple-color"]="#0000",Be["--n-text-color"]=K,Be["--n-text-color-hover"]=K,Be["--n-text-color-pressed"]=K,Be["--n-text-color-focus"]=K,Be["--n-text-color-disabled"]=K}else Be={"--n-color":ie||w[ve("color",we)],"--n-color-hover":ie?Ur(ie):w[ve("colorHover",we)],"--n-color-pressed":ie?ln(ie):w[ve("colorPressed",we)],"--n-color-focus":ie?Ur(ie):w[ve("colorFocus",we)],"--n-color-disabled":ie||w[ve("colorDisabled",we)],"--n-ripple-color":ie||w[ve("rippleColor",we)],"--n-text-color":Ke||(ie?w.textColorPrimary:We?w.textColorTertiary:w[ve("textColor",we)]),"--n-text-color-hover":Ke||(ie?w.textColorHoverPrimary:w[ve("textColorHover",we)]),"--n-text-color-pressed":Ke||(ie?w.textColorPressedPrimary:w[ve("textColorPressed",we)]),"--n-text-color-focus":Ke||(ie?w.textColorFocusPrimary:w[ve("textColorFocus",we)]),"--n-text-color-disabled":Ke||(ie?w.textColorDisabledPrimary:w[ve("textColorDisabled",we)])};let qe={"--n-border":"initial","--n-border-hover":"initial","--n-border-pressed":"initial","--n-border-focus":"initial","--n-border-disabled":"initial"};de?qe={"--n-border":"none","--n-border-hover":"none","--n-border-pressed":"none","--n-border-focus":"none","--n-border-disabled":"none"}:qe={"--n-border":w[ve("border",we)],"--n-border-hover":w[ve("borderHover",we)],"--n-border-pressed":w[ve("borderPressed",we)],"--n-border-focus":w[ve("borderFocus",we)],"--n-border-disabled":w[ve("borderDisabled",we)]};let{[ve("height",_)]:to,[ve("fontSize",_)]:vo,[ve("padding",_)]:m,[ve("paddingRound",_)]:h,[ve("iconSize",_)]:k,[ve("borderRadius",_)]:E,[ve("iconMargin",_)]:I,waveOpacity:j}=w,U={"--n-width":Ve&&!de?to:"initial","--n-height":de?"initial":to,"--n-font-size":vo,"--n-padding":Ve||de?"initial":ge?h:m,"--n-icon-size":k,"--n-icon-margin":I,"--n-border-radius":de?"initial":Ve||ge?to:E};return Object.assign(Object.assign(Object.assign(Object.assign({"--n-bezier":g,"--n-bezier-ease-out":v,"--n-ripple-duration":F,"--n-opacity-disabled":B,"--n-wave-opacity":j},Do),Be),qe),U)}),$=p?Ko("button",V(()=>{let O="",{dashed:g,type:v,ghost:w,text:F,color:B,round:y,circle:W,textColor:_,secondary:ae,tertiary:he,quaternary:Me,strong:de}=e;g&&(O+="a"),w&&(O+="b"),F&&(O+="c"),y&&(O+="d"),W&&(O+="e"),ae&&(O+="f"),he&&(O+="g"),Me&&(O+="h"),de&&(O+="i"),B&&(O+="j"+Pl(B)),_&&(O+="k"+Pl(_));let{value:ie}=n;return O+="l"+ie[0],O+="m"+v[0],O}),D,e):void 0;return{selfElRef:o,waveElRef:t,mergedClsPrefix:x,mergedFocusable:i,mergedSize:n,showBorder:a,enterPressed:r,rtlEnabled:S,handleMousedown:d,handleKeydown:f,handleBlur:c,handleKeyup:u,handleClick:s,customColorCssVars:V(()=>{let{color:O}=e;if(!O)return null;let g=Ur(O);return{"--n-border-color":O,"--n-border-color-hover":g,"--n-border-color-pressed":ln(O),"--n-border-color-focus":g,"--n-border-color-disabled":O}}),cssVars:p?void 0:D,themeClass:$==null?void 0:$.themeClass,onRender:$==null?void 0:$.onRender}},render(){let{mergedClsPrefix:e,tag:o,onRender:t}=this;t==null||t();let r=Kt(this.$slots.default,a=>a&&R("span",{class:`${e}-button__content`},a));return R(o,{ref:"selfElRef",class:[this.themeClass,`${e}-button`,`${e}-button--${this.type}-type`,`${e}-button--${this.mergedSize}-type`,this.rtlEnabled&&`${e}-button--rtl`,this.disabled&&`${e}-button--disabled`,this.block&&`${e}-button--block`,this.enterPressed&&`${e}-button--pressed`,!this.text&&this.dashed&&`${e}-button--dashed`,this.color&&`${e}-button--color`,this.secondary&&`${e}-button--secondary`,this.loading&&`${e}-button--loading`,this.ghost&&`${e}-button--ghost`],tabindex:this.mergedFocusable?0:-1,type:this.attrType,style:this.cssVars,disabled:this.disabled,onClick:this.handleClick,onBlur:this.handleBlur,onMousedown:this.handleMousedown,onKeyup:this.handleKeyup,onKeydown:this.handleKeydown},this.iconPlacement==="right"&&r,R(ol,{width:!0},{default:()=>Kt(this.$slots.icon,a=>(this.loading||a)&&R("span",{class:`${e}-button__icon`,style:{margin:di(this.$slots.default)?"0":""}},R(Ct,null,{default:()=>this.loading?R(jr,{clsPrefix:e,key:"loading",class:`${e}-icon-slot`,strokeWidth:20}):R("div",{key:"icon",class:`${e}-icon-slot`,role:"none"},a)})))}),this.iconPlacement==="left"&&r,this.text?null:R(rd,{ref:"waveElRef",clsPrefix:e}),this.showBorder?R("div",{"aria-hidden":!0,class:`${e}-button__border`,style:this.customColorCssVars}):null,this.showBorder?R("div",{"aria-hidden":!0,class:`${e}-button__state-border`,style:this.customColorCssVars}):null)}}),Cu=kA;var bg={titleFontSize:"22px"};var bu=e=>{let{borderRadius:o,fontSize:t,lineHeight:r,textColor2:a,textColor1:l,textColorDisabled:n,dividerColor:i,fontWeightStrong:d,primaryColor:s,baseColor:u,hoverColor:f,cardColor:c,modalColor:p,popoverColor:x}=e;return Object.assign(Object.assign({},bg),{borderRadius:o,borderColor:me(c,i),borderColorModal:me(p,i),borderColorPopover:me(x,i),textColor:a,titleFontWeight:d,titleTextColor:l,dayTextColor:n,fontSize:t,lineHeight:r,dateColorCurrent:s,dateTextColorCurrent:u,cellColorHover:me(c,f),cellColorHoverModal:me(p,f),cellColorHoverPopover:me(x,f),cellColor:c,cellColorModal:p,cellColorPopover:x,barColor:s})},t4=Pe({name:"Calendar",common:pe,peers:{Button:Ao},self:bu});var AA={name:"Calendar",common:P,peers:{Button:io},self:bu},yu=AA;var vu=e=>{let{fontSize:o,boxShadow2:t,popoverColor:r,textColor2:a,borderRadius:l,borderColor:n,heightSmall:i,heightMedium:d,heightLarge:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:c,dividerColor:p}=e;return{panelFontSize:o,boxShadow:t,color:r,textColor:a,borderRadius:l,border:`1px solid ${n}`,heightSmall:i,heightMedium:d,heightLarge:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:c,dividerColor:p}},c4=Pe({name:"ColorPicker",common:pe,peers:{Input:mt,Button:Ao},self:vu});var DA={name:"ColorPicker",common:P,peers:{Input:go,Button:io},self:vu},ku=DA;var yg={paddingSmall:"12px 16px 12px",paddingMedium:"19px 24px 20px",paddingLarge:"23px 32px 24px",paddingHuge:"27px 40px 28px",titleFontSizeSmall:"16px",titleFontSizeMedium:"18px",titleFontSizeLarge:"18px",titleFontSizeHuge:"18px",closeSize:"18px"};var Au=e=>{let{primaryColor:o,borderRadius:t,lineHeight:r,fontSize:a,cardColor:l,textColor2:n,textColor1:i,dividerColor:d,fontWeightStrong:s,closeColor:u,closeColorHover:f,closeColorPressed:c,modalColor:p,boxShadow1:x,popoverColor:T,actionColor:C}=e;return Object.assign(Object.assign({},yg),{lineHeight:r,color:l,colorModal:p,colorPopover:T,colorTarget:o,colorEmbedded:C,textColor:n,titleTextColor:i,borderColor:d,actionColor:C,titleFontWeight:s,closeColor:u,closeColorHover:f,closeColorPressed:c,fontSizeSmall:a,fontSizeMedium:a,fontSizeLarge:a,fontSizeHuge:a,boxShadow:x,borderRadius:t})},PA={name:"Card",common:pe,self:Au},Du=PA;var MA={name:"Card",common:P,self(e){let o=Au(e),{cardColor:t}=e;return o.colorEmbedded=t,o}},nn=MA;var vg=e=>({dotSize:"8px",dotColor:"rgba(255, 255, 255, .3)",dotColorActive:"rgba(255, 255, 255, 1)",dotColorFocus:"rgba(255, 255, 255, .5)",dotLineWidth:"16px",dotLineWidthActive:"24px",arrowColor:"#eee"});var BA={name:"Carousel",common:P,self:vg},Pu=BA;var kg={sizeSmall:"14px",sizeMedium:"16px",sizeLarge:"18px",labelPadding:"0 8px"};var Mu=e=>{let{baseColor:o,inputColorDisabled:t,cardColor:r,modalColor:a,popoverColor:l,textColorDisabled:n,borderColor:i,primaryColor:d,textColor2:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:c,borderRadiusSmall:p,lineHeight:x}=e;return Object.assign(Object.assign({},kg),{labelLineHeight:x,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:c,borderRadius:p,color:o,colorChecked:d,colorDisabled:t,colorDisabledChecked:t,colorTableHeader:r,colorTableHeaderModal:a,colorTableHeaderPopover:l,checkMarkColor:o,checkMarkColorDisabled:n,checkMarkColorDisabledChecked:n,border:`1px solid ${i}`,borderDisabled:`1px solid ${i}`,borderDisabledChecked:`1px solid ${i}`,borderChecked:`1px solid ${d}`,borderFocus:`1px solid ${d}`,boxShadowFocus:`0 0 0 2px ${J(d,{alpha:.3})}`,textColor:s,textColorDisabled:n})},LA={name:"Checkbox",common:pe,self:Mu},mr=LA;var EA={name:"Checkbox",common:P,self(e){let{cardColor:o}=e,t=Mu(e);return t.color="#0000",t.checkMarkColor=o,t}},Bt=EA;var Bu=e=>{let{borderRadius:o,boxShadow2:t,popoverColor:r,textColor2:a,textColor3:l,primaryColor:n,textColorDisabled:i,dividerColor:d,hoverColor:s,fontSizeMedium:u,heightMedium:f}=e;return{menuBorderRadius:o,menuColor:r,menuBoxShadow:t,menuDividerColor:d,menuHeight:"calc(var(--n-option-height) * 6.6)",optionArrowColor:l,optionHeight:f,optionFontSize:u,optionColorHover:s,optionTextColor:a,optionTextColorActive:n,optionTextColorDisabled:i,optionCheckMarkColor:n,loadingColor:n,columnWidth:"180px"}},rK=Pe({name:"Cascader",common:pe,peers:{InternalSelectMenu:ha,InternalSelection:tn,Scrollbar:bo,Checkbox:mr,Empty:ft},self:Bu});var NA={name:"Cascader",common:P,peers:{InternalSelectMenu:Pt,InternalSelection:wa,Scrollbar:no,Checkbox:Bt,Empty:ft},self:Bu},Lu=NA;var Ag=R("svg",{viewBox:"0 0 64 64",class:"check-icon"},R("path",{d:"M50.42,16.76L22.34,39.45l-8.1-11.46c-1.12-1.58-3.3-1.96-4.88-0.84c-1.58,1.12-1.95,3.3-0.84,4.88l10.26,14.51 c0.56,0.79,1.42,1.31,2.38,1.45c0.16,0.02,0.32,0.03,0.48,0.03c0.8,0,1.57-0.27,2.2-0.78l30.99-25.03c1.5-1.21,1.74-3.42,0.52-4.92 C54.13,15.78,51.93,15.55,50.42,16.76z"}));var Dg=R("svg",{viewBox:"0 0 100 100",class:"line-icon"},R("path",{d:"M80.2,55.5H21.4c-2.8,0-5.1-2.5-5.1-5.5l0,0c0-3,2.3-5.5,5.1-5.5h58.7c2.8,0,5.1,2.5,5.1,5.5l0,0C85.2,53.1,82.9,55.5,80.2,55.5z"}));var Eu=lo("n-checkbox-group"),_A={min:Number,max:Number,size:String,value:Array,defaultValue:{type:Array,default:null},disabled:{type:Boolean,default:void 0},"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onChange:{type:[Function,Array],validator:()=>!0,default:void 0}},CK=le({name:"CheckboxGroup",props:_A,setup(e){let{mergedClsPrefixRef:o}=Bo(e),t=Rt(e),{mergedSizeRef:r,mergedDisabledRef:a}=t,l=Z(e.defaultValue),n=V(()=>e.value),i=Zo(n,l),d=V(()=>{var f;return((f=i.value)===null||f===void 0?void 0:f.length)||0}),s=V(()=>Array.isArray(i.value)?new Set(i.value):new Set);function u(f,c){let{nTriggerFormInput:p,nTriggerFormChange:x}=t,{onChange:T,"onUpdate:value":C,onUpdateValue:S}=e;if(Array.isArray(i.value)){let D=Array.from(i.value),$=D.findIndex(O=>O===c);f?~$||(D.push(c),S&&Re(S,D),C&&Re(C,D),p(),x(),l.value=D,T&&Re(T,D)):~$&&(D.splice($,1),S&&Re(S,D),C&&Re(C,D),T&&Re(T,D),l.value=D,p(),x())}else f?(S&&Re(S,[c]),C&&Re(C,[c]),T&&Re(T,[c]),l.value=[c],p(),x()):(S&&Re(S,[]),C&&Re(C,[]),T&&Re(T,[]),l.value=[],p(),x())}return qo(Eu,{checkedCountRef:d,maxRef:De(e,"max"),minRef:De(e,"min"),valueSetRef:s,disabledRef:a,mergedSizeRef:r,toggleCheckbox:u}),{mergedClsPrefix:o}},render(){return R("div",{class:`${this.mergedClsPrefix}-checkbox-group`,role:"group"},this.$slots)}});var Pg=Y([G("checkbox",` line-height: var(--n-label-line-height); font-size: var(--n-font-size); outline: none; @@ -622,39 +622,39 @@ ${o} align-items: flex-start; word-break: break-word; --n-merged-color-table: var(--n-color-table); - `,[X("&:hover",[K("checkbox-box",[J("border",{border:"var(--n-border-checked)"})])]),X("&:focus:not(:active)",[K("checkbox-box",[J("border",` + `,[Y("&:hover",[G("checkbox-box",[X("border",{border:"var(--n-border-checked)"})])]),Y("&:focus:not(:active)",[G("checkbox-box",[X("border",` border: var(--n-border-focus); box-shadow: var(--n-box-shadow-focus); - `)])]),Se("inside-table",[K("checkbox-box",` + `)])]),xe("inside-table",[G("checkbox-box",` background-color: var(--n-merged-color-table); - `)]),Se("checked",[K("checkbox-box",` + `)]),xe("checked",[G("checkbox-box",` background-color: var(--n-color-checked); - `,[K("checkbox-icon",[X(".check-icon",` + `,[G("checkbox-icon",[Y(".check-icon",` opacity: 1; transform: scale(1); - `)])])]),Se("indeterminate",[K("checkbox-box",[K("checkbox-icon",[X(".check-icon",` + `)])])]),xe("indeterminate",[G("checkbox-box",[G("checkbox-icon",[Y(".check-icon",` opacity: 0; transform: scale(.5); - `),X(".line-icon",` + `),Y(".line-icon",` opacity: 1; transform: scale(1); - `)])])]),Se("checked, indeterminate",[X("&:focus:not(:active)",[K("checkbox-box",[J("border",` + `)])])]),xe("checked, indeterminate",[Y("&:focus:not(:active)",[G("checkbox-box",[X("border",` border: var(--n-border-checked); box-shadow: var(--n-box-shadow-focus); - `)])]),K("checkbox-box",` + `)])]),G("checkbox-box",` background-color: var(--n-color-checked); border-left: 0; border-top: 0; - `,[J("border",{border:"var(--n-border-checked)"})])]),Se("disabled",{cursor:"not-allowed"},[Se("checked",[K("checkbox-box",` + `,[X("border",{border:"var(--n-border-checked)"})])]),xe("disabled",{cursor:"not-allowed"},[xe("checked",[G("checkbox-box",` background-color: var(--n-color-disabled-checked); - `,[J("border",{border:"var(--n-border-disabled-checked)"}),K("checkbox-icon",[X(".check-icon, .line-icon",{fill:"var(--n-check-mark-color-disabled-checked)"})])])]),K("checkbox-box",` + `,[X("border",{border:"var(--n-border-disabled-checked)"}),G("checkbox-icon",[Y(".check-icon, .line-icon",{fill:"var(--n-check-mark-color-disabled-checked)"})])])]),G("checkbox-box",` background-color: var(--n-color-disabled); - `,[J("border",{border:"var(--n-border-disabled)"}),K("checkbox-icon",[X(".check-icon, .line-icon",{fill:"var(--n-check-mark-color-disabled)"})])]),J("label",{color:"var(--n-text-color-disabled)"})]),K("checkbox-box-wrapper",` + `,[X("border",{border:"var(--n-border-disabled)"}),G("checkbox-icon",[Y(".check-icon, .line-icon",{fill:"var(--n-check-mark-color-disabled)"})])]),X("label",{color:"var(--n-text-color-disabled)"})]),G("checkbox-box-wrapper",` position: relative; width: var(--n-size); flex-shrink: 0; flex-grow: 0; - `),K("checkbox-box",` + `),G("checkbox-box",` position: absolute; left: 0; top: 50%; @@ -666,7 +666,7 @@ ${o} border-radius: var(--n-border-radius); background-color: var(--n-color); transition: background-color 0.3s var(--n-bezier); - `,[J("border",` + `,[X("border",` transition: border-color .3s var(--n-bezier), box-shadow .3s var(--n-bezier); @@ -677,7 +677,7 @@ ${o} top: 0; bottom: 0; border: var(--n-border); - `),K("checkbox-icon",` + `),G("checkbox-icon",` display: flex; align-items: center; justify-content: center; @@ -686,7 +686,7 @@ ${o} right: 1px; top: 1px; bottom: 1px; - `,[X(".check-icon, .line-icon",` + `,[Y(".check-icon, .line-icon",` width: 100%; fill: var(--n-check-mark-color); opacity: 0; @@ -697,16 +697,16 @@ ${o} transform 0.3s var(--n-bezier), opacity 0.3s var(--n-bezier), border-color 0.3s var(--n-bezier); - `),ut({left:"1px",top:"1px"})])]),J("label",` + `),ut({left:"1px",top:"1px"})])]),X("label",` color: var(--n-text-color); transition: color .3s var(--n-bezier); user-select: none; padding: var(--n-label-padding); - `,[X("&:empty",{display:"none"})])]),mi(K("checkbox",` + `,[Y("&:empty",{display:"none"})])]),pi(G("checkbox",` --n-merged-color-table: var(--n-color-table-modal); - `)),ci(K("checkbox",` + `)),mi(G("checkbox",` --n-merged-color-table: var(--n-color-table-popover); - `))]);var _A=Object.assign(Object.assign({},Oo.props),{size:String,checked:{type:[Boolean,String,Number],default:void 0},defaultChecked:{type:[Boolean,String,Number],default:!1},value:[String,Number],disabled:{type:Boolean,default:void 0},indeterminate:Boolean,label:String,focusable:{type:Boolean,default:!0},checkedValue:{type:[Boolean,String,Number],default:!0},uncheckedValue:{type:[Boolean,String,Number],default:!1},"onUpdate:checked":[Function,Array],onUpdateChecked:[Function,Array],privateInsideTable:Boolean,onChange:[Function,Array]}),Nu=ie({name:"Checkbox",props:_A,setup(e){let o=Z(null),{mergedClsPrefixRef:t,inlineThemeDisabled:r,mergedRtlRef:a}=Bo(e),l=Tt(e,{mergedSize(y){let{size:S}=e;if(S!==void 0)return S;if(d){let{value:O}=d.mergedSizeRef;if(O!==void 0)return O}if(y){let{mergedSize:O}=y;if(O!==void 0)return O.value}return"medium"},mergedDisabled(y){let{disabled:S}=e;if(S!==void 0)return S;if(d){if(d.disabledRef.value)return!0;let{maxRef:{value:O},checkedCountRef:L}=d;if(O!==void 0&&L.value>=O&&!m.value)return!0;let{minRef:{value:b}}=d;if(b!==void 0&&L.value<=b&&m.value)return!0}return y?y.disabled.value:!1}}),{mergedDisabledRef:n,mergedSizeRef:i}=l,d=Re(Eu,null),s=Z(e.defaultChecked),u=Be(e,"checked"),f=Zo(u,s),m=Je(()=>{if(d){let y=d.valueSetRef.value;return y&&e.value!==void 0?y.has(e.value):!1}else return f.value===e.checkedValue}),p=Oo("Checkbox","-checkbox",Dg,pr,e,t);function c(y){if(d&&e.value!==void 0)d.toggleCheckbox(!m.value,e.value);else{let{onChange:S,"onUpdate:checked":O,onUpdateChecked:L}=e,{nTriggerFormInput:b,nTriggerFormChange:W}=l,B=m.value?e.uncheckedValue:e.checkedValue;O&&Fe(O,B,y),L&&Fe(L,B,y),S&&Fe(S,B,y),b(),W(),s.value=B}}function T(y){n.value||c(y)}function C(y){if(!n.value)switch(y.code){case"Space":case"Enter":case"NumpadEnter":c(y)}}function g(y){switch(y.code){case"Space":y.preventDefault()}}let k={focus:()=>{var y;(y=o.value)===null||y===void 0||y.focus()},blur:()=>{var y;(y=o.value)===null||y===void 0||y.blur()}},U=xa("Checkbox",a,t),F=z(()=>{let{value:y}=i,{common:{cubicBezierEaseInOut:S},self:{borderRadius:O,color:L,colorChecked:b,colorDisabled:W,colorTableHeader:B,colorTableHeaderModal:ne,colorTableHeaderPopover:ge,checkMarkColor:Pe,checkMarkColorDisabled:ue,border:se,borderFocus:Te,borderDisabled:je,borderChecked:Ge,boxShadowFocus:ze,textColor:Ze,textColorDisabled:Ye,checkMarkColorDisabledChecked:ho,colorDisabledChecked:ko,borderDisabledChecked:He,labelPadding:Ie,labelLineHeight:fo,[Ae("fontSize",y)]:Ce,[Ae("size",y)]:ro}}=p.value;return{"--n-label-line-height":fo,"--n-size":ro,"--n-bezier":S,"--n-border-radius":O,"--n-border":se,"--n-border-checked":Ge,"--n-border-focus":Te,"--n-border-disabled":je,"--n-border-disabled-checked":He,"--n-box-shadow-focus":ze,"--n-color":L,"--n-color-checked":b,"--n-color-table":B,"--n-color-table-modal":ne,"--n-color-table-popover":ge,"--n-color-disabled":W,"--n-color-disabled-checked":ko,"--n-text-color":Ze,"--n-text-color-disabled":Ye,"--n-check-mark-color":Pe,"--n-check-mark-color-disabled":ue,"--n-check-mark-color-disabled-checked":ho,"--n-font-size":Ce,"--n-label-padding":Ie}}),w=r?Ko("checkbox",z(()=>i.value[0]),F,e):void 0;return Object.assign(l,k,{rtlEnabled:U,selfRef:o,mergedClsPrefix:t,mergedDisabled:n,renderedChecked:m,mergedTheme:p,labelId:gs(),handleClick:T,handleKeyUp:C,handleKeyDown:g,cssVars:r?void 0:F,themeClass:w==null?void 0:w.themeClass,onRender:w==null?void 0:w.onRender})},render(){var e;let{$slots:o,renderedChecked:t,mergedDisabled:r,indeterminate:a,privateInsideTable:l,cssVars:n,labelId:i,label:d,mergedClsPrefix:s,focusable:u,handleKeyUp:f,handleKeyDown:m,handleClick:p}=this;return(e=this.onRender)===null||e===void 0||e.call(this),R("div",{ref:"selfRef",class:[`${s}-checkbox`,this.themeClass,this.rtlEnabled&&`${s}-checkbox--rtl`,t&&`${s}-checkbox--checked`,r&&`${s}-checkbox--disabled`,a&&`${s}-checkbox--indeterminate`,l&&`${s}-checkbox--inside-table`],tabindex:r||!u?void 0:0,role:"checkbox","aria-checked":a?"mixed":t,"aria-labelledby":i,style:n,onKeyup:f,onKeydown:m,onClick:p,onMousedown:()=>{go("selectstart",window,c=>{c.preventDefault()},{once:!0})}},R("div",{class:`${s}-checkbox-box-wrapper`},"\xA0",R("div",{class:`${s}-checkbox-box`},R(Ot,null,{default:()=>this.indeterminate?R("div",{key:"indeterminate",class:`${s}-checkbox-icon`},Ag):R("div",{key:"check",class:`${s}-checkbox-icon`},kg)}),R("div",{class:`${s}-checkbox-box__border`}))),d!==null||o.default?R("span",{class:`${s}-checkbox__label`,id:i},o.default?o.default():d):null)}});var IA={name:"Code",common:D,self(e){let{textColor2:o,fontSize:t,fontWeightStrong:r}=e;return{textColor:o,fontSize:t,fontWeightStrong:r,"mono-3":"#5c6370","hue-1":"#56b6c2","hue-2":"#61aeee","hue-3":"#c678dd","hue-4":"#98c379","hue-5":"#e06c75","hue-5-2":"#be5046","hue-6":"#d19a66","hue-6-2":"#e6c07b"}}},dn=IA;var Pg=e=>{let{fontWeight:o,textColor1:t,textColor2:r,dividerColor:a,fontSize:l}=e;return{titleFontSize:l,titleFontWeight:o,dividerColor:a,titleTextColor:t,fontSize:l,textColor:r,arrowColor:r}};var HA={name:"Collapse",common:D,self:Pg},_u=HA;var Mg=e=>{let{cubicBezierEaseInOut:o}=e;return{bezier:o}};var WA={name:"CollapseTransition",common:D,self:Mg},Iu=WA;var Bg={abstract:Boolean,bordered:{type:Boolean,default:void 0},clsPrefix:String,locale:Object,dateLocale:Object,namespace:String,rtl:Array,tag:{type:String,default:"div"},hljs:Object,theme:Object,themeOverrides:Object,componentOptions:Object,icons:Object,breakpoints:Object,inlineThemeDisabled:{type:Boolean,default:void 0},as:{type:String,validator:()=>(ni("config-provider","`as` is deprecated, please use `tag` instead."),!0),default:void 0}},Hu=ie({name:"ConfigProvider",alias:["App"],props:Bg,setup(e){let o=Re(Yo,null),t=z(()=>{let{theme:p}=e;if(p===null)return;let c=o==null?void 0:o.mergedThemeRef.value;return p===void 0?c:c===void 0?p:Object.assign({},c,p)}),r=z(()=>{let{themeOverrides:p}=e;if(p!==null){if(p===void 0)return o==null?void 0:o.mergedThemeOverridesRef.value;{let c=o==null?void 0:o.mergedThemeOverridesRef.value;return c===void 0?p:Hr({},c,p)}}}),a=Je(()=>{let{namespace:p}=e;return p===void 0?o==null?void 0:o.mergedNamespaceRef.value:p}),l=Je(()=>{let{bordered:p}=e;return p===void 0?o==null?void 0:o.mergedBorderedRef.value:p}),n=z(()=>{let{icons:p}=e;return p===void 0?o==null?void 0:o.mergedIconsRef.value:p}),i=z(()=>{let{componentOptions:p}=e;return p!==void 0?p:o==null?void 0:o.mergedComponentPropsRef.value}),d=z(()=>{let{clsPrefix:p}=e;return p!==void 0?p:o==null?void 0:o.mergedClsPrefixRef.value}),s=z(()=>{var p;let{rtl:c}=e;if(c===void 0)return o==null?void 0:o.mergedRtlRef.value;let T={};for(let C of c)T[C.name]=Zr(C),(p=C.peers)===null||p===void 0||p.forEach(g=>{g.name in T||(T[g.name]=Zr(g))});return T}),u=z(()=>e.breakpoints||(o==null?void 0:o.mergedBreakpointsRef.value)),f=e.inlineThemeDisabled||(o==null?void 0:o.inlineThemeDisabled),m=z(()=>{let{value:p}=t,{value:c}=r,T=c&&Object.keys(c).length!==0,C=p==null?void 0:p.name;return C?T?`${C}-${st(JSON.stringify(r.value))}`:C:T?st(JSON.stringify(r.value)):""});return qo(Yo,{mergedThemeHashRef:m,mergedBreakpointsRef:u,mergedRtlRef:s,mergedIconsRef:n,mergedComponentPropsRef:i,mergedBorderedRef:l,mergedNamespaceRef:a,mergedClsPrefixRef:d,mergedLocaleRef:z(()=>{let{locale:p}=e;if(p!==null)return p===void 0?o==null?void 0:o.mergedLocaleRef.value:p}),mergedDateLocaleRef:z(()=>{let{dateLocale:p}=e;if(p!==null)return p===void 0?o==null?void 0:o.mergedDateLocaleRef.value:p}),mergedHljsRef:z(()=>{let{hljs:p}=e;return p===void 0?o==null?void 0:o.mergedHljsRef.value:p}),mergedThemeRef:t,mergedThemeOverridesRef:r,inlineThemeDisabled:f||!1}),{mergedClsPrefix:d,mergedBordered:l,mergedNamespace:a,mergedTheme:t,mergedThemeOverrides:r}},render(){var e,o,t,r;return this.abstract?(r=(t=this.$slots).default)===null||r===void 0?void 0:r.call(t):R(this.as||this.tag,{class:`${this.mergedClsPrefix||Gi}-config-provider`},(o=(e=this.$slots).default)===null||o===void 0?void 0:o.call(e))}});function Wu(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}var VA=Le({name:"Select",common:ce,peers:{InternalSelection:tn,InternalSelectMenu:ca},self:Wu}),Vu=VA;var zA={name:"Select",common:D,peers:{InternalSelection:Sa,InternalSelectMenu:Dt},self:Wu},sn=zA;var Lg={itemSize:"28px",itemPadding:"0 4px",itemMargin:"0 0 0 8px",itemMarginRtl:"0 8px 0 0",buttonIconSize:"16px",inputWidth:"60px",selectWidth:"unset",inputMargin:"0 0 0 8px",inputMarginRtl:"0 8px 0 0",selectMargin:"0 0 0 8px",prefixMargin:"0 8px 0 0",suffixMargin:"0 0 0 8px",jumperFontSize:"14px"};var zu=e=>{let{textColor2:o,primaryColor:t,primaryColorHover:r,primaryColorPressed:a,inputColorDisabled:l,textColorDisabled:n,borderColor:i,borderRadius:d,fontSize:s}=e;return Object.assign(Object.assign({},Lg),{buttonColor:"#0000",buttonColorHover:"#0000",buttonColorPressed:"#0000",buttonBorder:`1px solid ${i}`,buttonBorderHover:`1px solid ${i}`,buttonBorderPressed:`1px solid ${i}`,buttonIconColor:o,buttonIconColorHover:o,buttonIconColorPressed:o,itemTextColor:o,itemTextColorHover:r,itemTextColorPressed:a,itemTextColorActive:t,itemTextColorDisabled:n,itemColor:"#0000",itemColorHover:"#0000",itemColorPressed:"#0000",itemColorActive:"#0000",itemColorActiveHover:"#0000",itemColorDisabled:l,itemBorder:"1px solid #0000",itemBorderHover:"1px solid #0000",itemBorderPressed:"1px solid #0000",itemBorderActive:`1px solid ${t}`,itemBorderDisabled:`1px solid ${i}`,itemBorderRadius:d,itemFontSize:s,jumperTextColor:o,jumperTextColorDisabled:n})},jA=Le({name:"Pagination",common:ce,peers:{Select:Vu,Input:mt},self:zu}),ju=jA;var $A={name:"Pagination",common:D,peers:{Select:sn,Input:wo},self(e){let{primaryColor:o,opacity3:t}=e,r=ee(o,{alpha:Number(t)}),a=zu(e);return a.itemBorderActive=`1px solid ${r}`,a.itemBorderDisabled="1px solid #0000",a}},un=$A;var sd={padding:"8px 14px"};var UA={name:"Tooltip",common:D,peers:{Popover:Xo},self(e){let{borderRadius:o,boxShadow2:t,popoverColor:r,textColor2:a}=e;return Object.assign(Object.assign({},sd),{borderRadius:o,boxShadow:t,color:r,textColor:a})}},Xt=UA;var KA=e=>{let{borderRadius:o,boxShadow2:t,baseColor:r}=e;return Object.assign(Object.assign({},sd),{borderRadius:o,boxShadow:t,color:xe(r,"rgba(0, 0, 0, .85)"),textColor:r})},GA=Le({name:"Tooltip",common:ce,peers:{Popover:Pt},self:KA}),fn=GA;var qA={name:"Ellipsis",common:D,peers:{Tooltip:Xt}},pn=qA;var QA=Le({name:"Ellipsis",common:ce,peers:{Tooltip:fn}}),$u=QA;var ud={radioSizeSmall:"14px",radioSizeMedium:"16px",radioSizeLarge:"18px",labelPadding:"0 8px"};var ZA={name:"Radio",common:D,self(e){let{borderColor:o,primaryColor:t,baseColor:r,textColorDisabled:a,inputColorDisabled:l,textColor2:n,opacityDisabled:i,borderRadius:d,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,heightSmall:m,heightMedium:p,heightLarge:c,lineHeight:T}=e;return Object.assign(Object.assign({},ud),{labelLineHeight:T,buttonHeightSmall:m,buttonHeightMedium:p,buttonHeightLarge:c,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,boxShadow:`inset 0 0 0 1px ${o}`,boxShadowActive:`inset 0 0 0 1px ${t}`,boxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${ee(t,{alpha:.3})}`,boxShadowHover:`inset 0 0 0 1px ${t}`,boxShadowDisabled:`inset 0 0 0 1px ${o}`,color:"#0000",colorDisabled:l,textColor:n,textColorDisabled:a,dotColorActive:t,dotColorDisabled:o,buttonBorderColor:o,buttonBorderColorActive:t,buttonBorderColorHover:t,buttonColor:"#0000",buttonColorActive:t,buttonTextColor:n,buttonTextColorActive:r,buttonTextColorHover:t,opacityDisabled:i,buttonBoxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${ee(t,{alpha:.3})}`,buttonBoxShadowHover:`inset 0 0 0 1px ${t}`,buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:d})}},mn=ZA;var YA=e=>{let{borderColor:o,primaryColor:t,baseColor:r,textColorDisabled:a,inputColorDisabled:l,textColor2:n,opacityDisabled:i,borderRadius:d,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,heightSmall:m,heightMedium:p,heightLarge:c,lineHeight:T}=e;return Object.assign(Object.assign({},ud),{labelLineHeight:T,buttonHeightSmall:m,buttonHeightMedium:p,buttonHeightLarge:c,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,boxShadow:`inset 0 0 0 1px ${o}`,boxShadowActive:`inset 0 0 0 1px ${t}`,boxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${ee(t,{alpha:.2})}`,boxShadowHover:`inset 0 0 0 1px ${t}`,boxShadowDisabled:`inset 0 0 0 1px ${o}`,color:r,colorDisabled:l,textColor:n,textColorDisabled:a,dotColorActive:t,dotColorDisabled:o,buttonBorderColor:o,buttonBorderColorActive:t,buttonBorderColorHover:o,buttonColor:r,buttonColorActive:r,buttonTextColor:n,buttonTextColorActive:t,buttonTextColorHover:t,opacityDisabled:i,buttonBoxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${ee(t,{alpha:.3})}`,buttonBoxShadowHover:"inset 0 0 0 1px #0000",buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:d})},XA={name:"Radio",common:ce,self:YA},Uu=XA;var Eg={thPaddingSmall:"8px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"8px",tdPaddingMedium:"12px",tdPaddingLarge:"12px",sorterSize:"15px",filterSize:"15px",paginationMargin:"12px 0 0 0",emptyPadding:"48px 0",actionPadding:"8px 12px",actionButtonMargin:"0 8px 0 0"};var Ku=e=>{let{cardColor:o,modalColor:t,popoverColor:r,textColor2:a,textColor1:l,tableHeaderColor:n,tableColorHover:i,iconColor:d,primaryColor:s,fontWeightStrong:u,borderRadius:f,lineHeight:m,fontSizeSmall:p,fontSizeMedium:c,fontSizeLarge:T,dividerColor:C,heightSmall:g,opacityDisabled:k,tableColorStriped:U}=e;return Object.assign(Object.assign({},Eg),{actionDividerColor:C,lineHeight:m,borderRadius:f,fontSizeSmall:p,fontSizeMedium:c,fontSizeLarge:T,borderColor:xe(o,C),tdColorHover:xe(o,i),tdColorStriped:xe(o,U),thColor:xe(o,n),thColorHover:xe(xe(o,n),i),tdColor:o,tdTextColor:a,thTextColor:l,thFontWeight:u,thButtonColorHover:i,thIconColor:d,thIconColorActive:s,borderColorModal:xe(t,C),tdColorHoverModal:xe(t,i),tdColorStripedModal:xe(t,U),thColorModal:xe(t,n),thColorHoverModal:xe(xe(t,n),i),tdColorModal:t,borderColorPopover:xe(r,C),tdColorHoverPopover:xe(r,i),tdColorStripedPopover:xe(r,U),thColorPopover:xe(r,n),thColorHoverPopover:xe(xe(r,n),i),tdColorPopover:r,boxShadowBefore:"inset -12px 0 8px -12px rgba(0, 0, 0, .18)",boxShadowAfter:"inset 12px 0 8px -12px rgba(0, 0, 0, .18)",loadingColor:s,loadingSize:g,opacityLoading:k})},WG=Le({name:"DataTable",common:ce,peers:{Button:Do,Checkbox:pr,Radio:Uu,Pagination:ju,Scrollbar:yo,Empty:ft,Popover:Pt,Ellipsis:$u},self:Ku});var JA={name:"DataTable",common:D,peers:{Button:so,Checkbox:Mt,Radio:mn,Pagination:un,Scrollbar:io,Empty:pt,Popover:Xo,Ellipsis:pn},self(e){let o=Ku(e);return o.boxShadowAfter="inset 12px 0 8px -12px rgba(0, 0, 0, .36)",o.boxShadowBefore="inset -12px 0 8px -12px rgba(0, 0, 0, .36)",o}},Gu=JA;var Ng={padding:"4px 0",optionIconSizeSmall:"14px",optionIconSizeMedium:"16px",optionIconSizeLarge:"16px",optionIconSizeHuge:"18px",optionSuffixWidthSmall:"14px",optionSuffixWidthMedium:"14px",optionSuffixWidthLarge:"16px",optionSuffixWidthHuge:"16px",optionIconSuffixWidthSmall:"32px",optionIconSuffixWidthMedium:"32px",optionIconSuffixWidthLarge:"36px",optionIconSuffixWidthHuge:"36px",optionPrefixWidthSmall:"14px",optionPrefixWidthMedium:"14px",optionPrefixWidthLarge:"16px",optionPrefixWidthHuge:"16px",optionIconPrefixWidthSmall:"36px",optionIconPrefixWidthMedium:"36px",optionIconPrefixWidthLarge:"40px",optionIconPrefixWidthHuge:"40px"};var qu=e=>{let{primaryColor:o,textColor2:t,dividerColor:r,hoverColor:a,popoverColor:l,invertedColor:n,borderRadius:i,fontSizeSmall:d,fontSizeMedium:s,fontSizeLarge:u,fontSizeHuge:f,heightSmall:m,heightMedium:p,heightLarge:c,heightHuge:T,textColor3:C,opacityDisabled:g}=e;return Object.assign(Object.assign({},Ng),{optionHeightSmall:m,optionHeightMedium:p,optionHeightLarge:c,optionHeightHuge:T,borderRadius:i,fontSizeSmall:d,fontSizeMedium:s,fontSizeLarge:u,fontSizeHuge:f,optionTextColor:t,optionTextColorHover:t,optionTextColorActive:o,optionTextColorChildActive:o,color:l,dividerColor:r,suffixColor:t,prefixColor:t,optionColorHover:a,optionColorActive:ee(o,{alpha:.1}),groupHeaderTextColor:C,optionTextColorInverted:"#BBB",optionTextColorHoverInverted:"#FFF",optionTextColorActiveInverted:"#FFF",optionTextColorChildActiveInverted:"#FFF",colorInverted:n,dividerColorInverted:"#BBB",suffixColorInverted:"#BBB",prefixColorInverted:"#BBB",optionColorHoverInverted:o,optionColorActiveInverted:o,groupHeaderTextColorInverted:"#AAA",optionOpacityDisabled:g})},eD=Le({name:"Dropdown",common:ce,peers:{Popover:Pt},self:qu}),Qu=eD;var oD={name:"Dropdown",common:D,peers:{Popover:Xo},self(e){let{primaryColorSuppl:o,primaryColor:t,popoverColor:r}=e,a=qu(e);return a.colorInverted=r,a.optionColorActive=ee(t,{alpha:.15}),a.optionColorActiveInverted=o,a.optionColorHoverInverted=o,a}},cn=oD;var _g=e=>{let{textColorBase:o,opacity1:t,opacity2:r,opacity3:a,opacity4:l,opacity5:n}=e;return{color:o,opacity1Depth:t,opacity2Depth:r,opacity3Depth:a,opacity4Depth:l,opacity5Depth:n}};var tD={name:"Icon",common:D,self:_g},Zu=tD;var Ig={itemFontSize:"12px",itemHeight:"36px",itemWidth:"52px",panelActionPadding:"8px 0"};var Yu=e=>{let{popoverColor:o,textColor2:t,primaryColor:r,hoverColor:a,dividerColor:l,opacityDisabled:n,boxShadow2:i,borderRadius:d,iconColor:s,iconColorDisabled:u}=e;return Object.assign(Object.assign({},Ig),{panelColor:o,panelBoxShadow:i,panelDividerColor:l,itemTextColor:t,itemTextColorActive:r,itemColorHover:a,itemOpacityDisabled:n,itemBorderRadius:d,borderRadius:d,iconColor:s,iconColorDisabled:u})},rD=Le({name:"TimePicker",common:ce,peers:{Scrollbar:yo,Button:Do,Input:mt},self:Yu}),Xu=rD;var aD={name:"TimePicker",common:D,peers:{Scrollbar:io,Button:so,Input:wo},self:Yu},xn=aD;var Hg={itemSize:"24px",itemCellWidth:"38px",itemCellHeight:"32px",scrollItemWidth:"80px",scrollItemHeight:"40px",panelExtraFooterPadding:"8px 12px",panelActionPadding:"8px 12px",calendarTitlePadding:"0",calendarTitleHeight:"28px",arrowSize:"14px",panelHeaderPadding:"8px 12px",calendarDaysHeight:"32px",calendarTitleGridTempateColumns:"28px 28px 1fr 28px 28px",calendarLeftPaddingDate:"6px 12px 4px 12px",calendarLeftPaddingDatetime:"4px 12px",calendarLeftPaddingDaterange:"6px 12px 4px 12px",calendarLeftPaddingDatetimerange:"4px 12px",calendarLeftPaddingMonth:"0",calendarLeftPaddingYear:"0",calendarLeftPaddingQuarter:"0",calendarRightPaddingDate:"6px 12px 4px 12px",calendarRightPaddingDatetime:"4px 12px",calendarRightPaddingDaterange:"6px 12px 4px 12px",calendarRightPaddingDatetimerange:"4px 12px",calendarRightPaddingMonth:"0",calendarRightPaddingYear:"0",calendarRightPaddingQuarter:"0"};var Ju=e=>{let{hoverColor:o,fontSize:t,textColor2:r,textColorDisabled:a,popoverColor:l,primaryColor:n,borderRadiusSmall:i,iconColor:d,iconColorDisabled:s,textColor1:u,dividerColor:f,boxShadow2:m,borderRadius:p,fontWeightStrong:c}=e;return Object.assign(Object.assign({},Hg),{itemFontSize:t,calendarDaysFontSize:t,calendarTitleFontSize:t,itemTextColor:r,itemTextColorDisabled:a,itemTextColorActive:l,itemTextColorCurrent:n,itemColorIncluded:ee(n,{alpha:.1}),itemColorHover:o,itemColorDisabled:o,itemColorActive:n,itemBorderRadius:i,panelColor:l,panelTextColor:r,arrowColor:d,calendarTitleTextColor:u,calendarTitleColorHover:o,calendarDaysTextColor:r,panelHeaderDividerColor:f,calendarDaysDividerColor:f,calendarDividerColor:f,panelActionDividerColor:f,panelBoxShadow:m,panelBorderRadius:p,calendarTitleFontWeight:c,scrollItemBorderRadius:p,iconColor:d,iconColorDisabled:s})},q8=Le({name:"DatePicker",common:ce,peers:{Input:mt,Button:Do,TimePicker:Xu,Scrollbar:yo},self:Ju});var lD={name:"DatePicker",common:D,peers:{Input:wo,Button:so,TimePicker:xn,Scrollbar:io},self(e){let{popoverColor:o,hoverColor:t,primaryColor:r}=e,a=Ju(e);return a.itemColorDisabled=xe(o,t),a.itemColorIncluded=ee(r,{alpha:.15}),a.itemColorHover=xe(o,t),a}},ef=lD;var Wg={thPaddingBorderedSmall:"8px 12px",thPaddingBorderedMedium:"12px 16px",thPaddingBorderedLarge:"16px 24px",thPaddingSmall:"0",thPaddingMedium:"0",thPaddingLarge:"0",tdPaddingBorderedSmall:"8px 12px",tdPaddingBorderedMedium:"12px 16px",tdPaddingBorderedLarge:"16px 24px",tdPaddingSmall:"0 0 8px 0",tdPaddingMedium:"0 0 12px 0",tdPaddingLarge:"0 0 16px 0"};var Vg=e=>{let{tableHeaderColor:o,textColor2:t,textColor1:r,cardColor:a,modalColor:l,popoverColor:n,dividerColor:i,borderRadius:d,fontWeightStrong:s,lineHeight:u,fontSizeSmall:f,fontSizeMedium:m,fontSizeLarge:p}=e;return Object.assign(Object.assign({},Wg),{lineHeight:u,fontSizeSmall:f,fontSizeMedium:m,fontSizeLarge:p,titleTextColor:r,thColor:xe(a,o),thColorModal:xe(l,o),thColorPopover:xe(n,o),thTextColor:r,thFontWeight:s,tdTextColor:t,tdColor:a,tdColorModal:l,tdColorPopover:n,borderColor:xe(a,i),borderColorModal:xe(l,i),borderColorPopover:xe(n,i),borderRadius:d})};var nD={name:"Descriptions",common:D,self:Vg},of=nD;var zg={titleFontSize:"18px",padding:"16px 28px 20px 28px",iconSize:"28px",actionSpace:"12px",contentMargin:"8px 0 16px 0",iconMargin:"0 4px 0 0",iconMarginIconTop:"4px 0 8px 0",closeSize:"18px",closeMargin:"22px 28px 0 0",closeMarginIconTop:"12px 18px 0 0"};var tf=e=>{let{textColor1:o,textColor2:t,modalColor:r,closeColor:a,closeColorHover:l,closeColorPressed:n,infoColor:i,successColor:d,warningColor:s,errorColor:u,primaryColor:f,dividerColor:m,borderRadius:p,fontWeightStrong:c,lineHeight:T,fontSize:C}=e;return Object.assign(Object.assign({},zg),{fontSize:C,lineHeight:T,border:`1px solid ${m}`,titleTextColor:o,textColor:t,color:r,closeColor:a,closeColorHover:l,closeColorPressed:n,iconColor:f,iconColorInfo:i,iconColorSuccess:d,iconColorWarning:s,iconColorError:u,borderRadius:p,titleFontWeight:c})},iD=Le({name:"Dialog",common:ce,peers:{Button:Do},self:tf}),rf=iD;var dD={name:"Dialog",common:D,peers:{Button:so},self:tf},hn=dD;var af=e=>{let{modalColor:o,textColor2:t,boxShadow3:r}=e;return{color:o,textColor:t,boxShadow:r}},B9=Le({name:"Modal",common:ce,peers:{Scrollbar:yo,Dialog:rf,Card:Du},self:af});var sD={name:"Modal",common:D,peers:{Scrollbar:io,Dialog:hn,Card:nn},self:af},lf=sD;var jg=e=>{let{textColor1:o,dividerColor:t,fontWeightStrong:r}=e;return{textColor:o,color:t,fontWeight:r}};var uD={name:"Divider",common:D,self:jg},nf=uD;var df=e=>{let{modalColor:o,textColor1:t,textColor2:r,boxShadow3:a,lineHeight:l,fontWeightStrong:n,dividerColor:i,closeColor:d,closeColorHover:s,closeColorPressed:u}=e;return{bodyPadding:"16px 24px",headerPadding:"16px 24px",footerPadding:"16px 24px",color:o,textColor:r,titleTextColor:t,titleFontSize:"18px",titleFontWeight:n,boxShadow:a,lineHeight:l,headerBorderBottom:`1px solid ${i}`,footerBorderTop:`1px solid ${i}`,closeColor:d,closeColorHover:s,closeColorPressed:u,closeSize:"18px"}},X9=Le({name:"Drawer",common:ce,peers:{Scrollbar:yo},self:df});var fD={name:"Drawer",common:D,peers:{Scrollbar:io},self:df},sf=fD;var $g={actionMargin:"0 0 0 20px",actionMarginRtl:"0 20px 0 0"};var pD={name:"DynamicInput",common:D,peers:{Input:wo,Button:so},self(){return $g}},uf=pD;var Ug={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"};var mD={name:"Space",self(){return Ug}},Sn=mD;var cD={name:"DynamicTags",common:D,peers:{Input:wo,Button:so,Tag:on,Space:Sn},self(){return{inputWidth:"64px"}}},ff=cD;var xD={name:"Element",common:D},pf=xD;var Kg={feedbackPadding:"4px 0 0 2px",feedbackHeightSmall:"24px",feedbackHeightMedium:"24px",feedbackHeightLarge:"26px",feedbackFontSizeSmall:"13px",feedbackFontSizeMedium:"14px",feedbackFontSizeLarge:"14px",labelFontSizeLeftSmall:"14px",labelFontSizeLeftMedium:"14px",labelFontSizeLeftLarge:"15px",labelFontSizeTopSmall:"13px",labelFontSizeTopMedium:"14px",labelFontSizeTopLarge:"14px",labelHeightSmall:"24px",labelHeightMedium:"26px",labelHeightLarge:"28px",labelPaddingVertical:"0 0 8px 2px",labelPaddingHorizontal:"0 12px 0 0",labelTextAlignVertical:"left",labelTextAlignHorizontal:"right"};var Gg=e=>{let{heightSmall:o,heightMedium:t,heightLarge:r,textColor1:a,errorColor:l,warningColor:n,lineHeight:i,textColor3:d}=e;return Object.assign(Object.assign({},Kg),{blankHeightSmall:o,blankHeightMedium:t,blankHeightLarge:r,lineHeight:i,labelTextColor:a,asteriskColor:l,feedbackTextColorError:l,feedbackTextColorWarning:n,feedbackTextColor:d})};var hD={name:"Form",common:D,self:Gg},mf=hD;var SD={name:"GradientText",common:D,self(e){let{primaryColor:o,successColor:t,warningColor:r,errorColor:a,infoColor:l,primaryColorSuppl:n,successColorSuppl:i,warningColorSuppl:d,errorColorSuppl:s,infoColorSuppl:u,fontWeightStrong:f}=e;return{fontWeight:f,rotate:"252deg",colorStartPrimary:o,colorEndPrimary:n,colorStartInfo:l,colorEndInfo:u,colorStartWarning:r,colorEndWarning:d,colorStartError:a,colorEndError:s,colorStartSuccess:t,colorEndSuccess:i}}},cf=SD;var qg=e=>{let{primaryColor:o,baseColor:t}=e;return{color:o,iconColor:t}};var gD={name:"IconWrapper",common:D,self:qg},xf=gD;var wD={name:"ButtonGroup",common:D},hf=wD;var TD={name:"InputNumber",common:D,peers:{Button:so,Input:wo},self(e){let{textColorDisabled:o}=e;return{iconColorDisabled:o}}},Sf=TD;var RD={name:"Layout",common:D,peers:{Scrollbar:io},self(e){let{textColor2:o,bodyColor:t,popoverColor:r,cardColor:a,dividerColor:l,scrollbarColor:n,scrollbarColorHover:i}=e;return{textColor:o,textColorInverted:o,color:t,colorEmbedded:t,headerColor:a,headerColorInverted:a,footerColor:a,footerColorInverted:a,headerBorderColor:l,headerBorderColorInverted:l,footerBorderColor:l,footerBorderColorInverted:l,siderBorderColor:l,siderBorderColorInverted:l,siderColor:a,siderColorInverted:a,siderToggleButtonBorder:"1px solid transparent",siderToggleButtonColor:r,siderToggleButtonIconColor:o,siderToggleButtonIconColorInverted:o,siderToggleBarColor:xe(t,n),siderToggleBarColorHover:xe(t,i),__invertScrollbar:"false"}}},gf=RD;var Qg=e=>{let{textColor2:o,cardColor:t,modalColor:r,popoverColor:a,dividerColor:l,borderRadius:n,fontSize:i}=e;return{textColor:o,color:t,colorModal:r,colorPopover:a,borderColor:l,borderColorModal:xe(r,l),borderColorPopover:xe(a,l),borderRadius:n,fontSize:i}};var FD={name:"List",common:D,self:Qg},wf=FD;var OD={name:"LoadingBar",common:D,self(e){let{primaryColor:o}=e;return{colorError:"red",colorLoading:o,height:"2px"}}},Tf=OD;var CD={name:"Log",common:D,peers:{Scrollbar:io,Code:dn},self(e){let{textColor2:o,inputColor:t,fontSize:r,primaryColor:a}=e;return{loaderFontSize:r,loaderTextColor:o,loaderColor:t,loaderBorder:"1px solid #0000",loadingColor:a}}},Rf=CD;var bD={name:"Mention",common:D,peers:{InternalSelectMenu:Dt,Input:wo},self(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}},Ff=bD;function yD(e,o,t,r){return{itemColorHoverInverted:"#0000",itemColorActiveInverted:o,itemColorActiveHoverInverted:o,itemColorActiveCollapsedInverted:o,itemTextColorInverted:e,itemTextColorHoverInverted:t,itemTextColorChildActiveInverted:t,itemTextColorActiveInverted:t,itemTextColorActiveHoverInverted:t,itemTextColorHorizontalInverted:e,itemTextColorHoverHorizontalInverted:t,itemTextColorChildActiveHorizontalInverted:t,itemTextColorActiveHorizontalInverted:t,itemTextColorActiveHoverHorizontalInverted:t,itemIconColorInverted:e,itemIconColorHoverInverted:t,itemIconColorActiveInverted:t,itemIconColorActiveHoverInverted:t,itemIconColorChildActiveInverted:t,itemIconColorCollapsedInverted:e,itemIconColorHorizontalInverted:e,itemIconColorHoverHorizontalInverted:t,itemIconColorActiveHorizontalInverted:t,itemIconColorActiveHoverHorizontalInverted:t,itemIconColorChildActiveHorizontalInverted:t,arrowColorInverted:e,arrowColorHoverInverted:t,arrowColorActiveInverted:t,arrowColorActiveHoverInverted:t,arrowColorChildActiveInverted:t,groupTextColorInverted:r}}var Of=e=>{let{borderRadius:o,textColor3:t,primaryColor:r,textColor2:a,textColor1:l,fontSize:n,dividerColor:i,hoverColor:d,primaryColorHover:s}=e;return Object.assign({borderRadius:o,color:"#0000",groupTextColor:t,itemColorHover:d,itemColorActive:ee(r,{alpha:.1}),itemColorActiveHover:ee(r,{alpha:.1}),itemColorActiveCollapsed:ee(r,{alpha:.1}),itemTextColor:a,itemTextColorHover:a,itemTextColorActive:r,itemTextColorActiveHover:r,itemTextColorChildActive:r,itemTextColorHorizontal:a,itemTextColorHoverHorizontal:s,itemTextColorActiveHorizontal:r,itemTextColorActiveHoverHorizontal:r,itemTextColorChildActiveHorizontal:r,itemIconColor:l,itemIconColorHover:l,itemIconColorActive:r,itemIconColorActiveHover:r,itemIconColorChildActive:r,itemIconColorCollapsed:l,itemIconColorHorizontal:l,itemIconColorHoverHorizontal:s,itemIconColorActiveHorizontal:r,itemIconColorActiveHoverHorizontal:r,itemIconColorChildActiveHorizontal:r,itemHeight:"42px",arrowColor:a,arrowColorHover:a,arrowColorActive:r,arrowColorActiveHover:r,arrowColorChildActive:r,colorInverted:"#0000",borderColorHorizontal:"#0000",fontSize:n,dividerColor:i},yD("#BBB",r,"#FFF","#AAA"))},Hq=Le({name:"Menu",common:ce,peers:{Tooltip:fn,Dropdown:Qu},self:Of});var vD={name:"Menu",common:D,peers:{Tooltip:Xt,Dropdown:cn},self(e){let{primaryColor:o,primaryColorSuppl:t}=e,r=Of(e);return r.itemColorActive=ee(o,{alpha:.15}),r.itemColorActiveHover=ee(o,{alpha:.15}),r.itemColorActiveCollapsed=ee(o,{alpha:.15}),r.itemColorActiveInverted=t,r.itemColorActiveHoverInverted=t,r.itemColorActiveCollapsedInverted=t,r}},Cf=vD;var Zg={margin:"0 0 8px 0",padding:"10px 20px",maxWidth:"720px",minWidth:"420px",iconMargin:"0 10px 0 0",closeMargin:"0 0 0 12px",closeSize:"16px",iconSize:"20px",fontSize:"14px"};var Yg=e=>{let{textColor2:o,closeColor:t,closeColorHover:r,closeColorPressed:a,infoColor:l,successColor:n,errorColor:i,warningColor:d,popoverColor:s,boxShadow2:u,primaryColor:f,lineHeight:m,borderRadius:p}=e;return Object.assign(Object.assign({},Zg),{textColor:o,textColorInfo:o,textColorSuccess:o,textColorError:o,textColorWarning:o,textColorLoading:o,color:s,colorInfo:s,colorSuccess:s,colorError:s,colorWarning:s,colorLoading:s,boxShadow:u,boxShadowInfo:u,boxShadowSuccess:u,boxShadowError:u,boxShadowWarning:u,boxShadowLoading:u,iconColor:o,iconColorInfo:l,iconColorSuccess:n,iconColorWarning:d,iconColorError:i,iconColorLoading:f,closeColor:t,closeColorHover:r,closeColorPressed:a,closeColorInfo:t,closeColorHoverInfo:r,closeColorPressedInfo:a,closeColorSuccess:t,closeColorHoverSuccess:r,closeColorPressedSuccess:a,closeColorError:t,closeColorHoverError:r,closeColorPressedError:a,closeColorWarning:t,closeColorHoverWarning:r,closeColorPressedWarning:a,closeColorLoading:t,closeColorHoverLoading:r,closeColorPressedLoading:a,loadingColor:f,lineHeight:m,borderRadius:p})};var kD={name:"Message",common:D,self:Yg},bf=kD;var Xg={closeMargin:"18px 14px",closeSize:"16px",width:"365px",padding:"16px"};var yf=e=>{let{textColor2:o,successColor:t,infoColor:r,warningColor:a,errorColor:l,popoverColor:n,closeColor:i,closeColorHover:d,textColor1:s,textColor3:u,borderRadius:f,fontWeightStrong:m,boxShadow2:p,lineHeight:c,fontSize:T}=e;return Object.assign(Object.assign({},Xg),{borderRadius:f,lineHeight:c,fontSize:T,headerFontWeight:m,iconColor:o,iconColorSuccess:t,iconColorInfo:r,iconColorWarning:a,iconColorError:l,color:n,textColor:o,closeColor:i,closeColorHover:d,closeColorPressed:i,headerTextColor:s,descriptionTextColor:u,actionTextColor:o,boxShadow:p})},dQ=Le({name:"Notification",common:ce,peers:{Scrollbar:yo},self:yf});var AD={name:"Notification",common:D,peers:{Scrollbar:io},self:yf},vf=AD;var Jg={titleFontSize:"18px",backSize:"22px"};function kf(e){let{textColor1:o,textColor2:t,textColor3:r,fontSize:a,fontWeightStrong:l,primaryColorHover:n,primaryColorPressed:i}=e;return Object.assign(Object.assign({},Jg),{titleFontWeight:l,fontSize:a,titleTextColor:o,backColor:t,backColorHover:n,backColorPressed:i,subtitleTextColor:r})}var TQ=Le({name:"PageHeader",common:ce,self:kf});var Af={name:"PageHeader",common:D,self:kf};var ew={iconSize:"22px"};var Df=e=>{let{fontSize:o,warningColor:t}=e;return Object.assign(Object.assign({},ew),{fontSize:o,iconColor:t})},BQ=Le({name:"Popconfirm",common:ce,peers:{Button:Do,Popover:Pt},self:Df});var DD={name:"Popconfirm",common:D,peers:{Button:so,Popover:Xo},self:Df},Pf=DD;var PD={name:"Popselect",common:D,peers:{Popover:Xo,InternalSelectMenu:Dt}},Mf=PD;var Bf=e=>{let{infoColor:o,successColor:t,warningColor:r,errorColor:a,textColor2:l,progressRailColor:n,fontSize:i,fontWeight:d}=e;return{fontSize:i,fontSizeCircle:"28px",fontWeightCircle:d,railColor:n,railHeight:"8px",iconSizeCircle:"36px",iconSizeLine:"18px",iconColor:o,iconColorInfo:o,iconColorSuccess:t,iconColorWarning:r,iconColorError:a,textColorCircle:l,textColorLineInner:"rgb(255, 255, 255)",textColorLineOuter:l,fillColor:o,fillColorInfo:o,fillColorSuccess:t,fillColorWarning:r,fillColorError:a,lineBgProcessing:"linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)"}},MD={name:"Progress",common:ce,self:Bf},Lf=MD;var BD={name:"Progress",common:D,self(e){let o=Bf(e);return o.textColorLineInner="rgb(0, 0, 0)",o.lineBgProcessing="linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)",o}},gn=BD;var LD={name:"Rate",common:D,self(e){let{railColor:o}=e;return{itemColor:o,itemColorActive:"#CCAA33",itemSize:"20px",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}}},Ef=LD;var ow={titleFontSizeSmall:"26px",titleFontSizeMedium:"32px",titleFontSizeLarge:"40px",titleFontSizeHuge:"48px",fontSizeSmall:"14px",fontSizeMedium:"14px",fontSizeLarge:"15px",fontSizeHuge:"16px",iconSizeSmall:"64px",iconSizeMedium:"80px",iconSizeLarge:"100px",iconSizeHuge:"125px",iconColor418:void 0,iconColor404:void 0,iconColor403:void 0,iconColor500:void 0};var tw=e=>{let{textColor2:o,textColor1:t,errorColor:r,successColor:a,infoColor:l,warningColor:n,lineHeight:i,fontWeightStrong:d}=e;return Object.assign(Object.assign({},ow),{lineHeight:i,titleFontWeight:d,titleTextColor:t,textColor:o,iconColorError:r,iconColorSuccess:a,iconColorInfo:l,iconColorWarning:n})};var ED={name:"Result",common:D,self:tw},Nf=ED;var fd={railHeight:"4px",railWidthVertical:"4px",handleSize:"18px",dotHeight:"8px",dotWidth:"8px",dotBorderRadius:"4px"};var ND={name:"Slider",common:D,self(e){let o="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:t,modalColor:r,primaryColorSuppl:a,popoverColor:l,textColor2:n,cardColor:i,borderRadius:d,fontSize:s,opacityDisabled:u}=e;return Object.assign(Object.assign({},fd),{fontSize:s,railColor:t,railColorHover:t,fillColor:a,fillColorHover:a,opacityDisabled:u,handleColor:"#FFF",dotColor:i,dotColorModal:r,dotColorPopover:l,handleBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowHover:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowActive:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowFocus:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",indicatorColor:l,indicatorBoxShadow:o,indicatorTextColor:n,indicatorBorderRadius:d,dotBorder:`2px solid ${t}`,dotBorderActive:`2px solid ${a}`,dotBoxShadow:""})}},_f=ND;var _D=e=>{let o="rgba(0, 0, 0, .85)",t="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:r,primaryColor:a,baseColor:l,cardColor:n,modalColor:i,popoverColor:d,borderRadius:s,fontSize:u,opacityDisabled:f}=e;return Object.assign(Object.assign({},fd),{fontSize:u,railColor:r,railColorHover:r,fillColor:a,fillColorHover:a,opacityDisabled:f,handleColor:"#FFF",dotColor:n,dotColorModal:i,dotColorPopover:d,handleBoxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowHover:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowActive:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowFocus:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",indicatorColor:o,indicatorBoxShadow:t,indicatorTextColor:l,indicatorBorderRadius:s,dotBorder:`2px solid ${r}`,dotBorderActive:`2px solid ${a}`,dotBoxShadow:""})},ID={name:"Slider",common:ce,self:_D},If=ID;var rw=e=>{let{opacityDisabled:o,heightTiny:t,heightSmall:r,heightMedium:a,heightLarge:l,heightHuge:n,primaryColor:i,fontSize:d}=e;return{fontSize:d,textColor:i,sizeTiny:t,sizeSmall:r,sizeMedium:a,sizeLarge:l,sizeHuge:n,color:i,opacitySpinning:o}};var HD={name:"Spin",common:D,self:rw},Hf=HD;var aw=e=>{let{textColor2:o,textColor3:t,fontSize:r,fontWeight:a}=e;return{labelFontSize:r,labelFontWeight:a,valueFontWeight:a,labelTextColor:t,valuePrefixTextColor:o,valueSuffixTextColor:o,valueTextColor:o}};var WD={name:"Statistic",common:D,self:aw},Wf=WD;var lw={stepHeaderFontSizeSmall:"14px",stepHeaderFontSizeMedium:"16px",indicatorIndexFontSizeSmall:"14px",indicatorIndexFontSizeMedium:"16px",indicatorSizeSmall:"22px",indicatorSizeMedium:"28px",indicatorIconSizeSmall:"14px",indicatorIconSizeMedium:"18px"};var nw=e=>{let{fontWeightStrong:o,baseColor:t,textColorDisabled:r,primaryColor:a,errorColor:l,textColor1:n,textColor2:i}=e;return Object.assign(Object.assign({},lw),{stepHeaderFontWeight:o,indicatorTextColorProcess:t,indicatorTextColorWait:r,indicatorTextColorFinish:a,indicatorTextColorError:l,indicatorBorderColorProcess:a,indicatorBorderColorWait:r,indicatorBorderColorFinish:a,indicatorBorderColorError:l,indicatorColorProcess:a,indicatorColorWait:"#0000",indicatorColorFinish:"#0000",indicatorColorError:"#0000",splitorColorProcess:r,splitorColorWait:r,splitorColorFinish:a,splitorColorError:r,headerTextColorProcess:n,headerTextColorWait:r,headerTextColorFinish:r,headerTextColorError:l,descriptionTextColorProcess:i,descriptionTextColorWait:r,descriptionTextColorFinish:r,descriptionTextColorError:l})};var VD={name:"Steps",common:D,self:nw},Vf=VD;var iw={buttonHeightSmall:"14px",buttonHeightMedium:"18px",buttonHeightLarge:"22px",buttonWidthSmall:"14px",buttonWidthMedium:"18px",buttonWidthLarge:"22px",buttonWidthPressedSmall:"20px",buttonWidthPressedMedium:"24px",buttonWidthPressedLarge:"28px",railHeightSmall:"18px",railHeightMedium:"22px",railHeightLarge:"26px",railWidthSmall:"32px",railWidthMedium:"40px",railWidthLarge:"48px"};var zD={name:"Switch",common:D,self(e){let{primaryColorSuppl:o,opacityDisabled:t,borderRadius:r,primaryColor:a,textColor2:l,baseColor:n}=e,i="rgba(255, 255, 255, .20)";return Object.assign(Object.assign({},iw),{iconColor:n,textColor:l,loadingColor:o,opacityDisabled:t,railColor:i,railColorActive:o,buttonBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",buttonColor:"#FFF",railBorderRadiusSmall:r,railBorderRadiusMedium:r,railBorderRadiusLarge:r,buttonBorderRadiusSmall:r,buttonBorderRadiusMedium:r,buttonBorderRadiusLarge:r,boxShadowFocus:`0 0 8px 0 ${ee(a,{alpha:.3})}`})}},zf=zD;var dw={thPaddingSmall:"6px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"6px",tdPaddingMedium:"12px",tdPaddingLarge:"12px"};var sw=e=>{let{dividerColor:o,cardColor:t,modalColor:r,popoverColor:a,tableHeaderColor:l,tableColorStriped:n,textColor1:i,textColor2:d,borderRadius:s,fontWeightStrong:u,lineHeight:f,fontSizeSmall:m,fontSizeMedium:p,fontSizeLarge:c}=e;return Object.assign(Object.assign({},dw),{fontSizeSmall:m,fontSizeMedium:p,fontSizeLarge:c,lineHeight:f,borderRadius:s,borderColor:xe(t,o),borderColorModal:xe(r,o),borderColorPopover:xe(a,o),tdColor:t,tdColorModal:r,tdColorPopover:a,tdColorStriped:xe(t,n),tdColorStripedModal:xe(r,n),tdColorStripedPopover:xe(a,n),thColor:xe(t,l),thColorModal:xe(r,l),thColorPopover:xe(a,l),thTextColor:i,tdTextColor:d,thFontWeight:u})};var jD={name:"Table",common:D,self:sw},jf=jD;var uw={tabFontSizeSmall:"14px",tabFontSizeMedium:"14px",tabFontSizeLarge:"16px",tabGapSmallLine:"36px",tabGapMediumLine:"36px",tabGapLargeLine:"36px",tabPaddingSmallLine:"6px 0",tabPaddingMediumLine:"10px 0",tabPaddingLargeLine:"14px 0",tabGapSmallBar:"36px",tabGapMediumBar:"36px",tabGapLargeBar:"36px",tabPaddingSmallBar:"4px 0",tabPaddingMediumBar:"6px 0",tabPaddingLargeBar:"10px 0",tabGapSmallCard:"4px",tabGapMediumCard:"4px",tabGapLargeCard:"4px",tabPaddingSmallCard:"6px 10px",tabPaddingMediumCard:"8px 12px",tabPaddingLargeCard:"8px 16px",tabPaddingSmallSegment:"4px 0",tabPaddingMediumSegment:"6px 0",tabPaddingLargeSegment:"8px 0",tabGapSmallSegment:"0",tabGapMediumSegment:"0",tabGapLargeSegment:"0",panePaddingSmall:"8px 0 0 0",panePaddingMedium:"12px 0 0 0",panePaddingLarge:"16px 0 0 0"};var fw=e=>{let{textColor2:o,primaryColor:t,textColorDisabled:r,closeColor:a,closeColorHover:l,closeColorPressed:n,tabColor:i,baseColor:d,dividerColor:s,fontWeight:u,textColor1:f,borderRadius:m,fontSize:p,fontWeightStrong:c}=e;return Object.assign(Object.assign({},uw),{colorSegment:i,tabFontSizeCard:p,tabTextColorLine:f,tabTextColorActiveLine:t,tabTextColorHoverLine:t,tabTextColorDisabledLine:r,tabTextColorSegment:f,tabTextColorActiveSegment:o,tabTextColorHoverSegment:o,tabTextColorDisabledSegment:r,tabTextColorBar:f,tabTextColorActiveBar:t,tabTextColorHoverBar:t,tabTextColorDisabledBar:r,tabTextColorCard:f,tabTextColorHoverCard:f,tabTextColorActiveCard:t,tabTextColorDisabledCard:r,barColor:t,closeColor:a,closeColorHover:l,closeColorPressed:n,tabColor:i,tabColorSegment:d,tabBorderColor:s,tabFontWeightActive:u,tabFontWeight:u,tabBorderRadius:m,paneTextColor:o,fontWeightStrong:c})};var $D={name:"Tabs",common:D,self(e){let o=fw(e),{inputColor:t}=e;return o.colorSegment=t,o.tabColorSegment=t,o}},$f=$D;var pw=e=>{let{textColor1:o,textColor2:t,fontWeightStrong:r,fontSize:a}=e;return{fontSize:a,titleTextColor:o,textColor:t,titleFontWeight:r}};var UD={name:"Thing",common:D,self:pw},Uf=UD;var mw={titleMarginMedium:"0",titleMarginLarge:"-2px 0 0 0",titleFontSizeMedium:"14px",titleFontSizeLarge:"16px",iconSizeMedium:"14px",iconSizeLarge:"14px"};var KD={name:"Timeline",common:D,self(e){let{textColor3:o,infoColorSuppl:t,errorColorSuppl:r,successColorSuppl:a,warningColorSuppl:l,textColor1:n,textColor2:i,railColor:d,fontWeightStrong:s,fontSize:u}=e;return Object.assign(Object.assign({},mw),{contentFontSize:u,titleFontWeight:s,circleBorder:`2px solid ${o}`,circleBorderInfo:`2px solid ${t}`,circleBorderError:`2px solid ${r}`,circleBorderSuccess:`2px solid ${a}`,circleBorderWarning:`2px solid ${l}`,iconColor:o,iconColorInfo:t,iconColorError:r,iconColorSuccess:a,iconColorWarning:l,titleTextColor:n,contentTextColor:i,metaTextColor:o,lineColor:d})}},Kf=KD;var cw={extraFontSize:"12px",width:"440px"};var GD={name:"Transfer",common:D,peers:{Checkbox:Mt,Scrollbar:io,Input:wo,Empty:pt,Button:so},self(e){let{iconColorDisabled:o,iconColor:t,fontWeight:r,fontSizeLarge:a,fontSizeMedium:l,fontSizeSmall:n,heightLarge:i,heightMedium:d,heightSmall:s,borderRadius:u,inputColor:f,tableHeaderColor:m,textColor1:p,textColorDisabled:c,textColor2:T,hoverColor:C}=e;return Object.assign(Object.assign({},cw),{itemHeightSmall:s,itemHeightMedium:d,itemHeightLarge:i,fontSizeSmall:n,fontSizeMedium:l,fontSizeLarge:a,borderRadius:u,borderColor:"#0000",listColor:f,headerColor:m,titleTextColor:p,titleTextColorDisabled:c,extraTextColor:T,filterDividerColor:"#0000",itemTextColor:T,itemTextColorDisabled:c,itemColorPending:C,titleFontWeight:r,iconColor:t,iconColorDisabled:o})}},Gf=GD;var qf=e=>{let{borderRadiusSmall:o,hoverColor:t,pressedColor:r,primaryColor:a,textColor3:l,textColor2:n,textColorDisabled:i,fontSize:d}=e;return{fontSize:d,nodeBorderRadius:o,nodeColorHover:t,nodeColorPressed:r,nodeColorActive:ee(a,{alpha:.1}),arrowColor:l,nodeTextColor:n,nodeTextColorDisabled:i,loadingColor:a,dropMarkColor:a}},qD=Le({name:"Tree",common:ce,peers:{Checkbox:pr,Scrollbar:yo,Empty:ft},self:qf}),Qf=qD;var QD={name:"Tree",common:D,peers:{Checkbox:Mt,Scrollbar:io,Empty:pt},self(e){let{primaryColor:o}=e,t=qf(e);return t.nodeColorActive=ee(o,{alpha:.15}),t}},wn=QD;var ZD={name:"TreeSelect",common:D,peers:{Tree:wn,Empty:pt,InternalSelection:Sa}},Zf=ZD;var xw={headerFontSize1:"30px",headerFontSize2:"22px",headerFontSize3:"18px",headerFontSize4:"16px",headerFontSize5:"16px",headerFontSize6:"16px",headerMargin1:"28px 0 20px 0",headerMargin2:"28px 0 20px 0",headerMargin3:"28px 0 20px 0",headerMargin4:"28px 0 18px 0",headerMargin5:"28px 0 18px 0",headerMargin6:"28px 0 18px 0",headerPrefixWidth1:"16px",headerPrefixWidth2:"16px",headerPrefixWidth3:"12px",headerPrefixWidth4:"12px",headerPrefixWidth5:"12px",headerPrefixWidth6:"12px",headerBarWidth1:"4px",headerBarWidth2:"4px",headerBarWidth3:"3px",headerBarWidth4:"3px",headerBarWidth5:"3px",headerBarWidth6:"3px",pMargin:"16px 0 16px 0",liMargin:".25em 0 0 0",olPadding:"0 0 0 2em",ulPadding:"0 0 0 2em"};var hw=e=>{let{primaryColor:o,textColor2:t,borderColor:r,lineHeight:a,fontSize:l,borderRadiusSmall:n,dividerColor:i,fontWeightStrong:d,textColor1:s,textColor3:u,infoColor:f,warningColor:m,errorColor:p,successColor:c,codeColor:T}=e;return Object.assign(Object.assign({},xw),{aTextColor:o,blockquoteTextColor:t,blockquotePrefixColor:r,blockquoteLineHeight:a,blockquoteFontSize:l,codeBorderRadius:n,liTextColor:t,liLineHeight:a,liFontSize:l,hrColor:i,headerFontWeight:d,headerTextColor:s,pTextColor:t,pTextColor1Depth:s,pTextColor2Depth:t,pTextColor3Depth:u,pLineHeight:a,pFontSize:l,headerBarColor:o,headerBarColorPrimary:o,headerBarColorInfo:f,headerBarColorError:p,headerBarColorWarning:m,headerBarColorSuccess:c,textColor:t,textColor1Depth:s,textColor2Depth:t,textColor3Depth:u,textColorPrimary:o,textColorInfo:f,textColorSuccess:c,textColorWarning:m,textColorError:p,codeTextColor:t,codeColor:T,codeBorder:"1px solid #0000"})};var YD={name:"Typography",common:D,self:hw},Yf=YD;var Xf=e=>{let{iconColor:o,primaryColor:t,errorColor:r,textColor2:a,successColor:l,opacityDisabled:n,actionColor:i,borderColor:d,hoverColor:s,lineHeight:u,borderRadius:f,fontSize:m}=e;return{fontSize:m,lineHeight:u,borderRadius:f,draggerColor:i,draggerBorder:`1px dashed ${d}`,draggerBorderHover:`1px dashed ${t}`,itemColorHover:s,itemColorHoverError:ee(r,{alpha:.06}),itemTextColor:a,itemTextColorError:r,itemTextColorSuccess:l,itemIconColor:o,itemDisabledOpacity:n,itemBorderImageCardError:`1px solid ${r}`,itemBorderImageCard:`1px solid ${d}`}},TX=Le({name:"Upload",common:ce,peers:{Button:Do,Progress:Lf},self:Xf});var XD={name:"Upload",common:D,peers:{Button:so,Progress:gn},self(e){let{errorColor:o}=e,t=Xf(e);return t.itemColorHoverError=ee(o,{alpha:.09}),t}},Jf=XD;var JD={name:"Watermark",common:D,self(e){let{fontFamily:o}=e;return{fontFamily:o}}},ep=JD;var op={name:"Image",common:D,peers:{Tooltip:Xt},self:e=>{let{textColor2:o}=e;return{toolbarIconColor:o,toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}};var tp={name:"Skeleton",common:D,self(e){let{heightSmall:o,heightMedium:t,heightLarge:r,borderRadius:a}=e;return{color:"rgba(255, 255, 255, 0.12)",colorEnd:"rgba(255, 255, 255, 0.18)",borderRadius:a,heightSmall:o,heightMedium:t,heightLarge:r}}};function rp(e){return window.TouchEvent&&e instanceof window.TouchEvent}function ap(){let e=Z(new Map),o=t=>r=>{e.value.set(t,r)};return Zd(()=>e.value.clear()),[e,o]}var Sw=X([K("slider",` + `))]);var IA=Object.assign(Object.assign({},Fo.props),{size:String,checked:{type:[Boolean,String,Number],default:void 0},defaultChecked:{type:[Boolean,String,Number],default:!1},value:[String,Number],disabled:{type:Boolean,default:void 0},indeterminate:Boolean,label:String,focusable:{type:Boolean,default:!0},checkedValue:{type:[Boolean,String,Number],default:!0},uncheckedValue:{type:[Boolean,String,Number],default:!1},"onUpdate:checked":[Function,Array],onUpdateChecked:[Function,Array],privateInsideTable:Boolean,onChange:[Function,Array]}),Nu=le({name:"Checkbox",props:IA,setup(e){let o=Z(null),{mergedClsPrefixRef:t,inlineThemeDisabled:r,mergedRtlRef:a}=Bo(e),l=Rt(e,{mergedSize(v){let{size:w}=e;if(w!==void 0)return w;if(d){let{value:F}=d.mergedSizeRef;if(F!==void 0)return F}if(v){let{mergedSize:F}=v;if(F!==void 0)return F.value}return"medium"},mergedDisabled(v){let{disabled:w}=e;if(w!==void 0)return w;if(d){if(d.disabledRef.value)return!0;let{maxRef:{value:F},checkedCountRef:B}=d;if(F!==void 0&&B.value>=F&&!c.value)return!0;let{minRef:{value:y}}=d;if(y!==void 0&&B.value<=y&&c.value)return!0}return v?v.disabled.value:!1}}),{mergedDisabledRef:n,mergedSizeRef:i}=l,d=Te(Eu,null),s=Z(e.defaultChecked),u=De(e,"checked"),f=Zo(u,s),c=Ye(()=>{if(d){let v=d.valueSetRef.value;return v&&e.value!==void 0?v.has(e.value):!1}else return f.value===e.checkedValue}),p=Fo("Checkbox","-checkbox",Pg,mr,e,t);function x(v){if(d&&e.value!==void 0)d.toggleCheckbox(!c.value,e.value);else{let{onChange:w,"onUpdate:checked":F,onUpdateChecked:B}=e,{nTriggerFormInput:y,nTriggerFormChange:W}=l,_=c.value?e.uncheckedValue:e.checkedValue;F&&Re(F,_,v),B&&Re(B,_,v),w&&Re(w,_,v),y(),W(),s.value=_}}function T(v){n.value||x(v)}function C(v){if(!n.value)switch(v.code){case"Space":case"Enter":case"NumpadEnter":x(v)}}function S(v){switch(v.code){case"Space":v.preventDefault()}}let D={focus:()=>{var v;(v=o.value)===null||v===void 0||v.focus()},blur:()=>{var v;(v=o.value)===null||v===void 0||v.blur()}},$=Sa("Checkbox",a,t),O=V(()=>{let{value:v}=i,{common:{cubicBezierEaseInOut:w},self:{borderRadius:F,color:B,colorChecked:y,colorDisabled:W,colorTableHeader:_,colorTableHeaderModal:ae,colorTableHeaderPopover:he,checkMarkColor:Me,checkMarkColorDisabled:de,border:ie,borderFocus:ge,borderDisabled:Ve,borderChecked:Ke,boxShadowFocus:He,textColor:Xe,textColorDisabled:Qe,checkMarkColorDisabledChecked:wo,colorDisabledChecked:Do,borderDisabledChecked:Be,labelPadding:We,labelLineHeight:ho,[ve("fontSize",v)]:we,[ve("size",v)]:qe}}=p.value;return{"--n-label-line-height":ho,"--n-size":qe,"--n-bezier":w,"--n-border-radius":F,"--n-border":ie,"--n-border-checked":Ke,"--n-border-focus":ge,"--n-border-disabled":Ve,"--n-border-disabled-checked":Be,"--n-box-shadow-focus":He,"--n-color":B,"--n-color-checked":y,"--n-color-table":_,"--n-color-table-modal":ae,"--n-color-table-popover":he,"--n-color-disabled":W,"--n-color-disabled-checked":Do,"--n-text-color":Xe,"--n-text-color-disabled":Qe,"--n-check-mark-color":Me,"--n-check-mark-color-disabled":de,"--n-check-mark-color-disabled-checked":wo,"--n-font-size":we,"--n-label-padding":We}}),g=r?Ko("checkbox",V(()=>i.value[0]),O,e):void 0;return Object.assign(l,D,{rtlEnabled:$,selfRef:o,mergedClsPrefix:t,mergedDisabled:n,renderedChecked:c,mergedTheme:p,labelId:gs(),handleClick:T,handleKeyUp:C,handleKeyDown:S,cssVars:r?void 0:O,themeClass:g==null?void 0:g.themeClass,onRender:g==null?void 0:g.onRender})},render(){var e;let{$slots:o,renderedChecked:t,mergedDisabled:r,indeterminate:a,privateInsideTable:l,cssVars:n,labelId:i,label:d,mergedClsPrefix:s,focusable:u,handleKeyUp:f,handleKeyDown:c,handleClick:p}=this;return(e=this.onRender)===null||e===void 0||e.call(this),R("div",{ref:"selfRef",class:[`${s}-checkbox`,this.themeClass,this.rtlEnabled&&`${s}-checkbox--rtl`,t&&`${s}-checkbox--checked`,r&&`${s}-checkbox--disabled`,a&&`${s}-checkbox--indeterminate`,l&&`${s}-checkbox--inside-table`],tabindex:r||!u?void 0:0,role:"checkbox","aria-checked":a?"mixed":t,"aria-labelledby":i,style:n,onKeyup:f,onKeydown:c,onClick:p,onMousedown:()=>{So("selectstart",window,x=>{x.preventDefault()},{once:!0})}},R("div",{class:`${s}-checkbox-box-wrapper`},"\xA0",R("div",{class:`${s}-checkbox-box`},R(Ct,null,{default:()=>this.indeterminate?R("div",{key:"indeterminate",class:`${s}-checkbox-icon`},Dg):R("div",{key:"check",class:`${s}-checkbox-icon`},Ag)}),R("div",{class:`${s}-checkbox-box__border`}))),d!==null||o.default?R("span",{class:`${s}-checkbox__label`,id:i},o.default?o.default():d):null)}});var HA={name:"Code",common:P,self(e){let{textColor2:o,fontSize:t,fontWeightStrong:r}=e;return{textColor:o,fontSize:t,fontWeightStrong:r,"mono-3":"#5c6370","hue-1":"#56b6c2","hue-2":"#61aeee","hue-3":"#c678dd","hue-4":"#98c379","hue-5":"#e06c75","hue-5-2":"#be5046","hue-6":"#d19a66","hue-6-2":"#e6c07b"}}},dn=HA;var Mg=e=>{let{fontWeight:o,textColor1:t,textColor2:r,dividerColor:a,fontSize:l}=e;return{titleFontSize:l,titleFontWeight:o,dividerColor:a,titleTextColor:t,fontSize:l,textColor:r,arrowColor:r}};var WA={name:"Collapse",common:P,self:Mg},_u=WA;var Bg=e=>{let{cubicBezierEaseInOut:o}=e;return{bezier:o}};var VA={name:"CollapseTransition",common:P,self:Bg},Iu=VA;var Lg={abstract:Boolean,bordered:{type:Boolean,default:void 0},clsPrefix:String,locale:Object,dateLocale:Object,namespace:String,rtl:Array,tag:{type:String,default:"div"},hljs:Object,theme:Object,themeOverrides:Object,componentOptions:Object,icons:Object,breakpoints:Object,inlineThemeDisabled:{type:Boolean,default:void 0},as:{type:String,validator:()=>(li("config-provider","`as` is deprecated, please use `tag` instead."),!0),default:void 0}},Hu=le({name:"ConfigProvider",alias:["App"],props:Lg,setup(e){let o=Te(Yo,null),t=V(()=>{let{theme:p}=e;if(p===null)return;let x=o==null?void 0:o.mergedThemeRef.value;return p===void 0?x:x===void 0?p:Object.assign({},x,p)}),r=V(()=>{let{themeOverrides:p}=e;if(p!==null){if(p===void 0)return o==null?void 0:o.mergedThemeOverridesRef.value;{let x=o==null?void 0:o.mergedThemeOverridesRef.value;return x===void 0?p:Vr({},x,p)}}}),a=Ye(()=>{let{namespace:p}=e;return p===void 0?o==null?void 0:o.mergedNamespaceRef.value:p}),l=Ye(()=>{let{bordered:p}=e;return p===void 0?o==null?void 0:o.mergedBorderedRef.value:p}),n=V(()=>{let{icons:p}=e;return p===void 0?o==null?void 0:o.mergedIconsRef.value:p}),i=V(()=>{let{componentOptions:p}=e;return p!==void 0?p:o==null?void 0:o.mergedComponentPropsRef.value}),d=V(()=>{let{clsPrefix:p}=e;return p!==void 0?p:o==null?void 0:o.mergedClsPrefixRef.value}),s=V(()=>{var p;let{rtl:x}=e;if(x===void 0)return o==null?void 0:o.mergedRtlRef.value;let T={};for(let C of x)T[C.name]=Yr(C),(p=C.peers)===null||p===void 0||p.forEach(S=>{S.name in T||(T[S.name]=Yr(S))});return T}),u=V(()=>e.breakpoints||(o==null?void 0:o.mergedBreakpointsRef.value)),f=e.inlineThemeDisabled||(o==null?void 0:o.inlineThemeDisabled),c=V(()=>{let{value:p}=t,{value:x}=r,T=x&&Object.keys(x).length!==0,C=p==null?void 0:p.name;return C?T?`${C}-${st(JSON.stringify(r.value))}`:C:T?st(JSON.stringify(r.value)):""});return qo(Yo,{mergedThemeHashRef:c,mergedBreakpointsRef:u,mergedRtlRef:s,mergedIconsRef:n,mergedComponentPropsRef:i,mergedBorderedRef:l,mergedNamespaceRef:a,mergedClsPrefixRef:d,mergedLocaleRef:V(()=>{let{locale:p}=e;if(p!==null)return p===void 0?o==null?void 0:o.mergedLocaleRef.value:p}),mergedDateLocaleRef:V(()=>{let{dateLocale:p}=e;if(p!==null)return p===void 0?o==null?void 0:o.mergedDateLocaleRef.value:p}),mergedHljsRef:V(()=>{let{hljs:p}=e;return p===void 0?o==null?void 0:o.mergedHljsRef.value:p}),mergedThemeRef:t,mergedThemeOverridesRef:r,inlineThemeDisabled:f||!1}),{mergedClsPrefix:d,mergedBordered:l,mergedNamespace:a,mergedTheme:t,mergedThemeOverrides:r}},render(){var e,o,t,r;return this.abstract?(r=(t=this.$slots).default)===null||r===void 0?void 0:r.call(t):R(this.as||this.tag,{class:`${this.mergedClsPrefix||Ki}-config-provider`},(o=(e=this.$slots).default)===null||o===void 0?void 0:o.call(e))}});function Wu(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}var zA=Pe({name:"Select",common:pe,peers:{InternalSelection:tn,InternalSelectMenu:ha},self:Wu}),Vu=zA;var jA={name:"Select",common:P,peers:{InternalSelection:wa,InternalSelectMenu:Pt},self:Wu},sn=jA;var Eg={itemSize:"28px",itemPadding:"0 4px",itemMargin:"0 0 0 8px",itemMarginRtl:"0 8px 0 0",buttonIconSize:"16px",inputWidth:"60px",selectWidth:"unset",inputMargin:"0 0 0 8px",inputMarginRtl:"0 8px 0 0",selectMargin:"0 0 0 8px",prefixMargin:"0 8px 0 0",suffixMargin:"0 0 0 8px",jumperFontSize:"14px"};var zu=e=>{let{textColor2:o,primaryColor:t,primaryColorHover:r,primaryColorPressed:a,inputColorDisabled:l,textColorDisabled:n,borderColor:i,borderRadius:d,fontSize:s}=e;return Object.assign(Object.assign({},Eg),{buttonColor:"#0000",buttonColorHover:"#0000",buttonColorPressed:"#0000",buttonBorder:`1px solid ${i}`,buttonBorderHover:`1px solid ${i}`,buttonBorderPressed:`1px solid ${i}`,buttonIconColor:o,buttonIconColorHover:o,buttonIconColorPressed:o,itemTextColor:o,itemTextColorHover:r,itemTextColorPressed:a,itemTextColorActive:t,itemTextColorDisabled:n,itemColor:"#0000",itemColorHover:"#0000",itemColorPressed:"#0000",itemColorActive:"#0000",itemColorActiveHover:"#0000",itemColorDisabled:l,itemBorder:"1px solid #0000",itemBorderHover:"1px solid #0000",itemBorderPressed:"1px solid #0000",itemBorderActive:`1px solid ${t}`,itemBorderDisabled:`1px solid ${i}`,itemBorderRadius:d,itemFontSize:s,jumperTextColor:o,jumperTextColorDisabled:n})},$A=Pe({name:"Pagination",common:pe,peers:{Select:Vu,Input:mt},self:zu}),ju=$A;var UA={name:"Pagination",common:P,peers:{Select:sn,Input:go},self(e){let{primaryColor:o,opacity3:t}=e,r=J(o,{alpha:Number(t)}),a=zu(e);return a.itemBorderActive=`1px solid ${r}`,a.itemBorderDisabled="1px solid #0000",a}},un=UA;var dd={padding:"8px 14px"};var KA={name:"Tooltip",common:P,peers:{Popover:Xo},self(e){let{borderRadius:o,boxShadow2:t,popoverColor:r,textColor2:a}=e;return Object.assign(Object.assign({},dd),{borderRadius:o,boxShadow:t,color:r,textColor:a})}},Xt=KA;var GA=e=>{let{borderRadius:o,boxShadow2:t,baseColor:r}=e;return Object.assign(Object.assign({},dd),{borderRadius:o,boxShadow:t,color:me(r,"rgba(0, 0, 0, .85)"),textColor:r})},qA=Pe({name:"Tooltip",common:pe,peers:{Popover:Mt},self:GA}),fn=qA;var QA={name:"Ellipsis",common:P,peers:{Tooltip:Xt}},pn=QA;var ZA=Pe({name:"Ellipsis",common:pe,peers:{Tooltip:fn}}),$u=ZA;var sd={radioSizeSmall:"14px",radioSizeMedium:"16px",radioSizeLarge:"18px",labelPadding:"0 8px"};var YA={name:"Radio",common:P,self(e){let{borderColor:o,primaryColor:t,baseColor:r,textColorDisabled:a,inputColorDisabled:l,textColor2:n,opacityDisabled:i,borderRadius:d,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,heightSmall:c,heightMedium:p,heightLarge:x,lineHeight:T}=e;return Object.assign(Object.assign({},sd),{labelLineHeight:T,buttonHeightSmall:c,buttonHeightMedium:p,buttonHeightLarge:x,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,boxShadow:`inset 0 0 0 1px ${o}`,boxShadowActive:`inset 0 0 0 1px ${t}`,boxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${J(t,{alpha:.3})}`,boxShadowHover:`inset 0 0 0 1px ${t}`,boxShadowDisabled:`inset 0 0 0 1px ${o}`,color:"#0000",colorDisabled:l,textColor:n,textColorDisabled:a,dotColorActive:t,dotColorDisabled:o,buttonBorderColor:o,buttonBorderColorActive:t,buttonBorderColorHover:t,buttonColor:"#0000",buttonColorActive:t,buttonTextColor:n,buttonTextColorActive:r,buttonTextColorHover:t,opacityDisabled:i,buttonBoxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${J(t,{alpha:.3})}`,buttonBoxShadowHover:`inset 0 0 0 1px ${t}`,buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:d})}},mn=YA;var XA=e=>{let{borderColor:o,primaryColor:t,baseColor:r,textColorDisabled:a,inputColorDisabled:l,textColor2:n,opacityDisabled:i,borderRadius:d,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,heightSmall:c,heightMedium:p,heightLarge:x,lineHeight:T}=e;return Object.assign(Object.assign({},sd),{labelLineHeight:T,buttonHeightSmall:c,buttonHeightMedium:p,buttonHeightLarge:x,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,boxShadow:`inset 0 0 0 1px ${o}`,boxShadowActive:`inset 0 0 0 1px ${t}`,boxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${J(t,{alpha:.2})}`,boxShadowHover:`inset 0 0 0 1px ${t}`,boxShadowDisabled:`inset 0 0 0 1px ${o}`,color:r,colorDisabled:l,textColor:n,textColorDisabled:a,dotColorActive:t,dotColorDisabled:o,buttonBorderColor:o,buttonBorderColorActive:t,buttonBorderColorHover:o,buttonColor:r,buttonColorActive:r,buttonTextColor:n,buttonTextColorActive:t,buttonTextColorHover:t,opacityDisabled:i,buttonBoxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${J(t,{alpha:.3})}`,buttonBoxShadowHover:"inset 0 0 0 1px #0000",buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:d})},JA={name:"Radio",common:pe,self:XA},Uu=JA;var Ng={thPaddingSmall:"8px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"8px",tdPaddingMedium:"12px",tdPaddingLarge:"12px",sorterSize:"15px",filterSize:"15px",paginationMargin:"12px 0 0 0",emptyPadding:"48px 0",actionPadding:"8px 12px",actionButtonMargin:"0 8px 0 0"};var Ku=e=>{let{cardColor:o,modalColor:t,popoverColor:r,textColor2:a,textColor1:l,tableHeaderColor:n,tableColorHover:i,iconColor:d,primaryColor:s,fontWeightStrong:u,borderRadius:f,lineHeight:c,fontSizeSmall:p,fontSizeMedium:x,fontSizeLarge:T,dividerColor:C,heightSmall:S,opacityDisabled:D,tableColorStriped:$}=e;return Object.assign(Object.assign({},Ng),{actionDividerColor:C,lineHeight:c,borderRadius:f,fontSizeSmall:p,fontSizeMedium:x,fontSizeLarge:T,borderColor:me(o,C),tdColorHover:me(o,i),tdColorStriped:me(o,$),thColor:me(o,n),thColorHover:me(me(o,n),i),tdColor:o,tdTextColor:a,thTextColor:l,thFontWeight:u,thButtonColorHover:i,thIconColor:d,thIconColorActive:s,borderColorModal:me(t,C),tdColorHoverModal:me(t,i),tdColorStripedModal:me(t,$),thColorModal:me(t,n),thColorHoverModal:me(me(t,n),i),tdColorModal:t,borderColorPopover:me(r,C),tdColorHoverPopover:me(r,i),tdColorStripedPopover:me(r,$),thColorPopover:me(r,n),thColorHoverPopover:me(me(r,n),i),tdColorPopover:r,boxShadowBefore:"inset -12px 0 8px -12px rgba(0, 0, 0, .18)",boxShadowAfter:"inset 12px 0 8px -12px rgba(0, 0, 0, .18)",loadingColor:s,loadingSize:S,opacityLoading:D})},$G=Pe({name:"DataTable",common:pe,peers:{Button:Ao,Checkbox:mr,Radio:Uu,Pagination:ju,Scrollbar:bo,Empty:ft,Popover:Mt,Ellipsis:$u},self:Ku});var eD={name:"DataTable",common:P,peers:{Button:io,Checkbox:Bt,Radio:mn,Pagination:un,Scrollbar:no,Empty:pt,Popover:Xo,Ellipsis:pn},self(e){let o=Ku(e);return o.boxShadowAfter="inset 12px 0 8px -12px rgba(0, 0, 0, .36)",o.boxShadowBefore="inset -12px 0 8px -12px rgba(0, 0, 0, .36)",o}},Gu=eD;var _g={padding:"4px 0",optionIconSizeSmall:"14px",optionIconSizeMedium:"16px",optionIconSizeLarge:"16px",optionIconSizeHuge:"18px",optionSuffixWidthSmall:"14px",optionSuffixWidthMedium:"14px",optionSuffixWidthLarge:"16px",optionSuffixWidthHuge:"16px",optionIconSuffixWidthSmall:"32px",optionIconSuffixWidthMedium:"32px",optionIconSuffixWidthLarge:"36px",optionIconSuffixWidthHuge:"36px",optionPrefixWidthSmall:"14px",optionPrefixWidthMedium:"14px",optionPrefixWidthLarge:"16px",optionPrefixWidthHuge:"16px",optionIconPrefixWidthSmall:"36px",optionIconPrefixWidthMedium:"36px",optionIconPrefixWidthLarge:"40px",optionIconPrefixWidthHuge:"40px"};var qu=e=>{let{primaryColor:o,textColor2:t,dividerColor:r,hoverColor:a,popoverColor:l,invertedColor:n,borderRadius:i,fontSizeSmall:d,fontSizeMedium:s,fontSizeLarge:u,fontSizeHuge:f,heightSmall:c,heightMedium:p,heightLarge:x,heightHuge:T,textColor3:C,opacityDisabled:S}=e;return Object.assign(Object.assign({},_g),{optionHeightSmall:c,optionHeightMedium:p,optionHeightLarge:x,optionHeightHuge:T,borderRadius:i,fontSizeSmall:d,fontSizeMedium:s,fontSizeLarge:u,fontSizeHuge:f,optionTextColor:t,optionTextColorHover:t,optionTextColorActive:o,optionTextColorChildActive:o,color:l,dividerColor:r,suffixColor:t,prefixColor:t,optionColorHover:a,optionColorActive:J(o,{alpha:.1}),groupHeaderTextColor:C,optionTextColorInverted:"#BBB",optionTextColorHoverInverted:"#FFF",optionTextColorActiveInverted:"#FFF",optionTextColorChildActiveInverted:"#FFF",colorInverted:n,dividerColorInverted:"#BBB",suffixColorInverted:"#BBB",prefixColorInverted:"#BBB",optionColorHoverInverted:o,optionColorActiveInverted:o,groupHeaderTextColorInverted:"#AAA",optionOpacityDisabled:S})},oD=Pe({name:"Dropdown",common:pe,peers:{Popover:Mt},self:qu}),Qu=oD;var tD={name:"Dropdown",common:P,peers:{Popover:Xo},self(e){let{primaryColorSuppl:o,primaryColor:t,popoverColor:r}=e,a=qu(e);return a.colorInverted=r,a.optionColorActive=J(t,{alpha:.15}),a.optionColorActiveInverted=o,a.optionColorHoverInverted=o,a}},cn=tD;var Ig=e=>{let{textColorBase:o,opacity1:t,opacity2:r,opacity3:a,opacity4:l,opacity5:n}=e;return{color:o,opacity1Depth:t,opacity2Depth:r,opacity3Depth:a,opacity4Depth:l,opacity5Depth:n}};var rD={name:"Icon",common:P,self:Ig},Zu=rD;var Hg={itemFontSize:"12px",itemHeight:"36px",itemWidth:"52px",panelActionPadding:"8px 0"};var Yu=e=>{let{popoverColor:o,textColor2:t,primaryColor:r,hoverColor:a,dividerColor:l,opacityDisabled:n,boxShadow2:i,borderRadius:d,iconColor:s,iconColorDisabled:u}=e;return Object.assign(Object.assign({},Hg),{panelColor:o,panelBoxShadow:i,panelDividerColor:l,itemTextColor:t,itemTextColorActive:r,itemColorHover:a,itemOpacityDisabled:n,itemBorderRadius:d,borderRadius:d,iconColor:s,iconColorDisabled:u})},aD=Pe({name:"TimePicker",common:pe,peers:{Scrollbar:bo,Button:Ao,Input:mt},self:Yu}),Xu=aD;var lD={name:"TimePicker",common:P,peers:{Scrollbar:no,Button:io,Input:go},self:Yu},xn=lD;var Wg={itemSize:"24px",itemCellWidth:"38px",itemCellHeight:"32px",scrollItemWidth:"80px",scrollItemHeight:"40px",panelExtraFooterPadding:"8px 12px",panelActionPadding:"8px 12px",calendarTitlePadding:"0",calendarTitleHeight:"28px",arrowSize:"14px",panelHeaderPadding:"8px 12px",calendarDaysHeight:"32px",calendarTitleGridTempateColumns:"28px 28px 1fr 28px 28px",calendarLeftPaddingDate:"6px 12px 4px 12px",calendarLeftPaddingDatetime:"4px 12px",calendarLeftPaddingDaterange:"6px 12px 4px 12px",calendarLeftPaddingDatetimerange:"4px 12px",calendarLeftPaddingMonth:"0",calendarLeftPaddingYear:"0",calendarLeftPaddingQuarter:"0",calendarRightPaddingDate:"6px 12px 4px 12px",calendarRightPaddingDatetime:"4px 12px",calendarRightPaddingDaterange:"6px 12px 4px 12px",calendarRightPaddingDatetimerange:"4px 12px",calendarRightPaddingMonth:"0",calendarRightPaddingYear:"0",calendarRightPaddingQuarter:"0"};var Ju=e=>{let{hoverColor:o,fontSize:t,textColor2:r,textColorDisabled:a,popoverColor:l,primaryColor:n,borderRadiusSmall:i,iconColor:d,iconColorDisabled:s,textColor1:u,dividerColor:f,boxShadow2:c,borderRadius:p,fontWeightStrong:x}=e;return Object.assign(Object.assign({},Wg),{itemFontSize:t,calendarDaysFontSize:t,calendarTitleFontSize:t,itemTextColor:r,itemTextColorDisabled:a,itemTextColorActive:l,itemTextColorCurrent:n,itemColorIncluded:J(n,{alpha:.1}),itemColorHover:o,itemColorDisabled:o,itemColorActive:n,itemBorderRadius:i,panelColor:l,panelTextColor:r,arrowColor:d,calendarTitleTextColor:u,calendarTitleColorHover:o,calendarDaysTextColor:r,panelHeaderDividerColor:f,calendarDaysDividerColor:f,calendarDividerColor:f,panelActionDividerColor:f,panelBoxShadow:c,panelBorderRadius:p,calendarTitleFontWeight:x,scrollItemBorderRadius:p,iconColor:d,iconColorDisabled:s})},X8=Pe({name:"DatePicker",common:pe,peers:{Input:mt,Button:Ao,TimePicker:Xu,Scrollbar:bo},self:Ju});var nD={name:"DatePicker",common:P,peers:{Input:go,Button:io,TimePicker:xn,Scrollbar:no},self(e){let{popoverColor:o,hoverColor:t,primaryColor:r}=e,a=Ju(e);return a.itemColorDisabled=me(o,t),a.itemColorIncluded=J(r,{alpha:.15}),a.itemColorHover=me(o,t),a}},ef=nD;var Vg={thPaddingBorderedSmall:"8px 12px",thPaddingBorderedMedium:"12px 16px",thPaddingBorderedLarge:"16px 24px",thPaddingSmall:"0",thPaddingMedium:"0",thPaddingLarge:"0",tdPaddingBorderedSmall:"8px 12px",tdPaddingBorderedMedium:"12px 16px",tdPaddingBorderedLarge:"16px 24px",tdPaddingSmall:"0 0 8px 0",tdPaddingMedium:"0 0 12px 0",tdPaddingLarge:"0 0 16px 0"};var zg=e=>{let{tableHeaderColor:o,textColor2:t,textColor1:r,cardColor:a,modalColor:l,popoverColor:n,dividerColor:i,borderRadius:d,fontWeightStrong:s,lineHeight:u,fontSizeSmall:f,fontSizeMedium:c,fontSizeLarge:p}=e;return Object.assign(Object.assign({},Vg),{lineHeight:u,fontSizeSmall:f,fontSizeMedium:c,fontSizeLarge:p,titleTextColor:r,thColor:me(a,o),thColorModal:me(l,o),thColorPopover:me(n,o),thTextColor:r,thFontWeight:s,tdTextColor:t,tdColor:a,tdColorModal:l,tdColorPopover:n,borderColor:me(a,i),borderColorModal:me(l,i),borderColorPopover:me(n,i),borderRadius:d})};var iD={name:"Descriptions",common:P,self:zg},of=iD;var jg={titleFontSize:"18px",padding:"16px 28px 20px 28px",iconSize:"28px",actionSpace:"12px",contentMargin:"8px 0 16px 0",iconMargin:"0 4px 0 0",iconMarginIconTop:"4px 0 8px 0",closeSize:"18px",closeMargin:"22px 28px 0 0",closeMarginIconTop:"12px 18px 0 0"};var tf=e=>{let{textColor1:o,textColor2:t,modalColor:r,closeColor:a,closeColorHover:l,closeColorPressed:n,infoColor:i,successColor:d,warningColor:s,errorColor:u,primaryColor:f,dividerColor:c,borderRadius:p,fontWeightStrong:x,lineHeight:T,fontSize:C}=e;return Object.assign(Object.assign({},jg),{fontSize:C,lineHeight:T,border:`1px solid ${c}`,titleTextColor:o,textColor:t,color:r,closeColor:a,closeColorHover:l,closeColorPressed:n,iconColor:f,iconColorInfo:i,iconColorSuccess:d,iconColorWarning:s,iconColorError:u,borderRadius:p,titleFontWeight:x})},dD=Pe({name:"Dialog",common:pe,peers:{Button:Ao},self:tf}),rf=dD;var sD={name:"Dialog",common:P,peers:{Button:io},self:tf},hn=sD;var af=e=>{let{modalColor:o,textColor2:t,boxShadow3:r}=e;return{color:o,textColor:t,boxShadow:r}},_9=Pe({name:"Modal",common:pe,peers:{Scrollbar:bo,Dialog:rf,Card:Du},self:af});var uD={name:"Modal",common:P,peers:{Scrollbar:no,Dialog:hn,Card:nn},self:af},lf=uD;var $g=e=>{let{textColor1:o,dividerColor:t,fontWeightStrong:r}=e;return{textColor:o,color:t,fontWeight:r}};var fD={name:"Divider",common:P,self:$g},nf=fD;var df=e=>{let{modalColor:o,textColor1:t,textColor2:r,boxShadow3:a,lineHeight:l,fontWeightStrong:n,dividerColor:i,closeColor:d,closeColorHover:s,closeColorPressed:u}=e;return{bodyPadding:"16px 24px",headerPadding:"16px 24px",footerPadding:"16px 24px",color:o,textColor:r,titleTextColor:t,titleFontSize:"18px",titleFontWeight:n,boxShadow:a,lineHeight:l,headerBorderBottom:`1px solid ${i}`,footerBorderTop:`1px solid ${i}`,closeColor:d,closeColorHover:s,closeColorPressed:u,closeSize:"18px"}},t7=Pe({name:"Drawer",common:pe,peers:{Scrollbar:bo},self:df});var pD={name:"Drawer",common:P,peers:{Scrollbar:no},self:df},sf=pD;var Ug={actionMargin:"0 0 0 20px",actionMarginRtl:"0 20px 0 0"};var mD={name:"DynamicInput",common:P,peers:{Input:go,Button:io},self(){return Ug}},uf=mD;var Kg={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"};var cD={name:"Space",self(){return Kg}},Sn=cD;var xD={name:"DynamicTags",common:P,peers:{Input:go,Button:io,Tag:on,Space:Sn},self(){return{inputWidth:"64px"}}},ff=xD;var hD={name:"Element",common:P},pf=hD;var Gg={feedbackPadding:"4px 0 0 2px",feedbackHeightSmall:"24px",feedbackHeightMedium:"24px",feedbackHeightLarge:"26px",feedbackFontSizeSmall:"13px",feedbackFontSizeMedium:"14px",feedbackFontSizeLarge:"14px",labelFontSizeLeftSmall:"14px",labelFontSizeLeftMedium:"14px",labelFontSizeLeftLarge:"15px",labelFontSizeTopSmall:"13px",labelFontSizeTopMedium:"14px",labelFontSizeTopLarge:"14px",labelHeightSmall:"24px",labelHeightMedium:"26px",labelHeightLarge:"28px",labelPaddingVertical:"0 0 8px 2px",labelPaddingHorizontal:"0 12px 0 0",labelTextAlignVertical:"left",labelTextAlignHorizontal:"right"};var qg=e=>{let{heightSmall:o,heightMedium:t,heightLarge:r,textColor1:a,errorColor:l,warningColor:n,lineHeight:i,textColor3:d}=e;return Object.assign(Object.assign({},Gg),{blankHeightSmall:o,blankHeightMedium:t,blankHeightLarge:r,lineHeight:i,labelTextColor:a,asteriskColor:l,feedbackTextColorError:l,feedbackTextColorWarning:n,feedbackTextColor:d})};var SD={name:"Form",common:P,self:qg},mf=SD;var gD={name:"GradientText",common:P,self(e){let{primaryColor:o,successColor:t,warningColor:r,errorColor:a,infoColor:l,primaryColorSuppl:n,successColorSuppl:i,warningColorSuppl:d,errorColorSuppl:s,infoColorSuppl:u,fontWeightStrong:f}=e;return{fontWeight:f,rotate:"252deg",colorStartPrimary:o,colorEndPrimary:n,colorStartInfo:l,colorEndInfo:u,colorStartWarning:r,colorEndWarning:d,colorStartError:a,colorEndError:s,colorStartSuccess:t,colorEndSuccess:i}}},cf=gD;var Qg=e=>{let{primaryColor:o,baseColor:t}=e;return{color:o,iconColor:t}};var wD={name:"IconWrapper",common:P,self:Qg},xf=wD;var TD={name:"ButtonGroup",common:P},hf=TD;var RD={name:"InputNumber",common:P,peers:{Button:io,Input:go},self(e){let{textColorDisabled:o}=e;return{iconColorDisabled:o}}},Sf=RD;var FD={name:"Layout",common:P,peers:{Scrollbar:no},self(e){let{textColor2:o,bodyColor:t,popoverColor:r,cardColor:a,dividerColor:l,scrollbarColor:n,scrollbarColorHover:i}=e;return{textColor:o,textColorInverted:o,color:t,colorEmbedded:t,headerColor:a,headerColorInverted:a,footerColor:a,footerColorInverted:a,headerBorderColor:l,headerBorderColorInverted:l,footerBorderColor:l,footerBorderColorInverted:l,siderBorderColor:l,siderBorderColorInverted:l,siderColor:a,siderColorInverted:a,siderToggleButtonBorder:"1px solid transparent",siderToggleButtonColor:r,siderToggleButtonIconColor:o,siderToggleButtonIconColorInverted:o,siderToggleBarColor:me(t,n),siderToggleBarColorHover:me(t,i),__invertScrollbar:"false"}}},gf=FD;var Zg=e=>{let{textColor2:o,cardColor:t,modalColor:r,popoverColor:a,dividerColor:l,borderRadius:n,fontSize:i}=e;return{textColor:o,color:t,colorModal:r,colorPopover:a,borderColor:l,borderColorModal:me(r,l),borderColorPopover:me(a,l),borderRadius:n,fontSize:i}};var OD={name:"List",common:P,self:Zg},wf=OD;var CD={name:"LoadingBar",common:P,self(e){let{primaryColor:o}=e;return{colorError:"red",colorLoading:o,height:"2px"}}},Tf=CD;var bD={name:"Log",common:P,peers:{Scrollbar:no,Code:dn},self(e){let{textColor2:o,inputColor:t,fontSize:r,primaryColor:a}=e;return{loaderFontSize:r,loaderTextColor:o,loaderColor:t,loaderBorder:"1px solid #0000",loadingColor:a}}},Rf=bD;var yD={name:"Mention",common:P,peers:{InternalSelectMenu:Pt,Input:go},self(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}},Ff=yD;function vD(e,o,t,r){return{itemColorHoverInverted:"#0000",itemColorActiveInverted:o,itemColorActiveHoverInverted:o,itemColorActiveCollapsedInverted:o,itemTextColorInverted:e,itemTextColorHoverInverted:t,itemTextColorChildActiveInverted:t,itemTextColorActiveInverted:t,itemTextColorActiveHoverInverted:t,itemTextColorHorizontalInverted:e,itemTextColorHoverHorizontalInverted:t,itemTextColorChildActiveHorizontalInverted:t,itemTextColorActiveHorizontalInverted:t,itemTextColorActiveHoverHorizontalInverted:t,itemIconColorInverted:e,itemIconColorHoverInverted:t,itemIconColorActiveInverted:t,itemIconColorActiveHoverInverted:t,itemIconColorChildActiveInverted:t,itemIconColorCollapsedInverted:e,itemIconColorHorizontalInverted:e,itemIconColorHoverHorizontalInverted:t,itemIconColorActiveHorizontalInverted:t,itemIconColorActiveHoverHorizontalInverted:t,itemIconColorChildActiveHorizontalInverted:t,arrowColorInverted:e,arrowColorHoverInverted:t,arrowColorActiveInverted:t,arrowColorActiveHoverInverted:t,arrowColorChildActiveInverted:t,groupTextColorInverted:r}}var Of=e=>{let{borderRadius:o,textColor3:t,primaryColor:r,textColor2:a,textColor1:l,fontSize:n,dividerColor:i,hoverColor:d,primaryColorHover:s}=e;return Object.assign({borderRadius:o,color:"#0000",groupTextColor:t,itemColorHover:d,itemColorActive:J(r,{alpha:.1}),itemColorActiveHover:J(r,{alpha:.1}),itemColorActiveCollapsed:J(r,{alpha:.1}),itemTextColor:a,itemTextColorHover:a,itemTextColorActive:r,itemTextColorActiveHover:r,itemTextColorChildActive:r,itemTextColorHorizontal:a,itemTextColorHoverHorizontal:s,itemTextColorActiveHorizontal:r,itemTextColorActiveHoverHorizontal:r,itemTextColorChildActiveHorizontal:r,itemIconColor:l,itemIconColorHover:l,itemIconColorActive:r,itemIconColorActiveHover:r,itemIconColorChildActive:r,itemIconColorCollapsed:l,itemIconColorHorizontal:l,itemIconColorHoverHorizontal:s,itemIconColorActiveHorizontal:r,itemIconColorActiveHoverHorizontal:r,itemIconColorChildActiveHorizontal:r,itemHeight:"42px",arrowColor:a,arrowColorHover:a,arrowColorActive:r,arrowColorActiveHover:r,arrowColorChildActive:r,colorInverted:"#0000",borderColorHorizontal:"#0000",fontSize:n,dividerColor:i},vD("#BBB",r,"#FFF","#AAA"))},jq=Pe({name:"Menu",common:pe,peers:{Tooltip:fn,Dropdown:Qu},self:Of});var kD={name:"Menu",common:P,peers:{Tooltip:Xt,Dropdown:cn},self(e){let{primaryColor:o,primaryColorSuppl:t}=e,r=Of(e);return r.itemColorActive=J(o,{alpha:.15}),r.itemColorActiveHover=J(o,{alpha:.15}),r.itemColorActiveCollapsed=J(o,{alpha:.15}),r.itemColorActiveInverted=t,r.itemColorActiveHoverInverted=t,r.itemColorActiveCollapsedInverted=t,r}},Cf=kD;var Yg={margin:"0 0 8px 0",padding:"10px 20px",maxWidth:"720px",minWidth:"420px",iconMargin:"0 10px 0 0",closeMargin:"0 0 0 12px",closeSize:"16px",iconSize:"20px",fontSize:"14px"};var Xg=e=>{let{textColor2:o,closeColor:t,closeColorHover:r,closeColorPressed:a,infoColor:l,successColor:n,errorColor:i,warningColor:d,popoverColor:s,boxShadow2:u,primaryColor:f,lineHeight:c,borderRadius:p}=e;return Object.assign(Object.assign({},Yg),{textColor:o,textColorInfo:o,textColorSuccess:o,textColorError:o,textColorWarning:o,textColorLoading:o,color:s,colorInfo:s,colorSuccess:s,colorError:s,colorWarning:s,colorLoading:s,boxShadow:u,boxShadowInfo:u,boxShadowSuccess:u,boxShadowError:u,boxShadowWarning:u,boxShadowLoading:u,iconColor:o,iconColorInfo:l,iconColorSuccess:n,iconColorWarning:d,iconColorError:i,iconColorLoading:f,closeColor:t,closeColorHover:r,closeColorPressed:a,closeColorInfo:t,closeColorHoverInfo:r,closeColorPressedInfo:a,closeColorSuccess:t,closeColorHoverSuccess:r,closeColorPressedSuccess:a,closeColorError:t,closeColorHoverError:r,closeColorPressedError:a,closeColorWarning:t,closeColorHoverWarning:r,closeColorPressedWarning:a,closeColorLoading:t,closeColorHoverLoading:r,closeColorPressedLoading:a,loadingColor:f,lineHeight:c,borderRadius:p})};var AD={name:"Message",common:P,self:Xg},bf=AD;var Jg={closeMargin:"18px 14px",closeSize:"16px",width:"365px",padding:"16px"};var yf=e=>{let{textColor2:o,successColor:t,infoColor:r,warningColor:a,errorColor:l,popoverColor:n,closeColor:i,closeColorHover:d,textColor1:s,textColor3:u,borderRadius:f,fontWeightStrong:c,boxShadow2:p,lineHeight:x,fontSize:T}=e;return Object.assign(Object.assign({},Jg),{borderRadius:f,lineHeight:x,fontSize:T,headerFontWeight:c,iconColor:o,iconColorSuccess:t,iconColorInfo:r,iconColorWarning:a,iconColorError:l,color:n,textColor:o,closeColor:i,closeColorHover:d,closeColorPressed:i,headerTextColor:s,descriptionTextColor:u,actionTextColor:o,boxShadow:p})},pQ=Pe({name:"Notification",common:pe,peers:{Scrollbar:bo},self:yf});var DD={name:"Notification",common:P,peers:{Scrollbar:no},self:yf},vf=DD;var ew={titleFontSize:"18px",backSize:"22px"};function kf(e){let{textColor1:o,textColor2:t,textColor3:r,fontSize:a,fontWeightStrong:l,primaryColorHover:n,primaryColorPressed:i}=e;return Object.assign(Object.assign({},ew),{titleFontWeight:l,fontSize:a,titleTextColor:o,backColor:t,backColorHover:n,backColorPressed:i,subtitleTextColor:r})}var CQ=Pe({name:"PageHeader",common:pe,self:kf});var Af={name:"PageHeader",common:P,self:kf};var ow={iconSize:"22px"};var Df=e=>{let{fontSize:o,warningColor:t}=e;return Object.assign(Object.assign({},ow),{fontSize:o,iconColor:t})},_Q=Pe({name:"Popconfirm",common:pe,peers:{Button:Ao,Popover:Mt},self:Df});var PD={name:"Popconfirm",common:P,peers:{Button:io,Popover:Xo},self:Df},Pf=PD;var MD={name:"Popselect",common:P,peers:{Popover:Xo,InternalSelectMenu:Pt}},Mf=MD;var Bf=e=>{let{infoColor:o,successColor:t,warningColor:r,errorColor:a,textColor2:l,progressRailColor:n,fontSize:i,fontWeight:d}=e;return{fontSize:i,fontSizeCircle:"28px",fontWeightCircle:d,railColor:n,railHeight:"8px",iconSizeCircle:"36px",iconSizeLine:"18px",iconColor:o,iconColorInfo:o,iconColorSuccess:t,iconColorWarning:r,iconColorError:a,textColorCircle:l,textColorLineInner:"rgb(255, 255, 255)",textColorLineOuter:l,fillColor:o,fillColorInfo:o,fillColorSuccess:t,fillColorWarning:r,fillColorError:a,lineBgProcessing:"linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)"}},BD={name:"Progress",common:pe,self:Bf},Lf=BD;var LD={name:"Progress",common:P,self(e){let o=Bf(e);return o.textColorLineInner="rgb(0, 0, 0)",o.lineBgProcessing="linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)",o}},gn=LD;var ED={name:"Rate",common:P,self(e){let{railColor:o}=e;return{itemColor:o,itemColorActive:"#CCAA33",itemSize:"20px",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}}},Ef=ED;var tw={titleFontSizeSmall:"26px",titleFontSizeMedium:"32px",titleFontSizeLarge:"40px",titleFontSizeHuge:"48px",fontSizeSmall:"14px",fontSizeMedium:"14px",fontSizeLarge:"15px",fontSizeHuge:"16px",iconSizeSmall:"64px",iconSizeMedium:"80px",iconSizeLarge:"100px",iconSizeHuge:"125px",iconColor418:void 0,iconColor404:void 0,iconColor403:void 0,iconColor500:void 0};var rw=e=>{let{textColor2:o,textColor1:t,errorColor:r,successColor:a,infoColor:l,warningColor:n,lineHeight:i,fontWeightStrong:d}=e;return Object.assign(Object.assign({},tw),{lineHeight:i,titleFontWeight:d,titleTextColor:t,textColor:o,iconColorError:r,iconColorSuccess:a,iconColorInfo:l,iconColorWarning:n})};var ND={name:"Result",common:P,self:rw},Nf=ND;var ud={railHeight:"4px",railWidthVertical:"4px",handleSize:"18px",dotHeight:"8px",dotWidth:"8px",dotBorderRadius:"4px"};var _D={name:"Slider",common:P,self(e){let o="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:t,modalColor:r,primaryColorSuppl:a,popoverColor:l,textColor2:n,cardColor:i,borderRadius:d,fontSize:s,opacityDisabled:u}=e;return Object.assign(Object.assign({},ud),{fontSize:s,railColor:t,railColorHover:t,fillColor:a,fillColorHover:a,opacityDisabled:u,handleColor:"#FFF",dotColor:i,dotColorModal:r,dotColorPopover:l,handleBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowHover:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowActive:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowFocus:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",indicatorColor:l,indicatorBoxShadow:o,indicatorTextColor:n,indicatorBorderRadius:d,dotBorder:`2px solid ${t}`,dotBorderActive:`2px solid ${a}`,dotBoxShadow:""})}},_f=_D;var ID=e=>{let o="rgba(0, 0, 0, .85)",t="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:r,primaryColor:a,baseColor:l,cardColor:n,modalColor:i,popoverColor:d,borderRadius:s,fontSize:u,opacityDisabled:f}=e;return Object.assign(Object.assign({},ud),{fontSize:u,railColor:r,railColorHover:r,fillColor:a,fillColorHover:a,opacityDisabled:f,handleColor:"#FFF",dotColor:n,dotColorModal:i,dotColorPopover:d,handleBoxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowHover:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowActive:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowFocus:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",indicatorColor:o,indicatorBoxShadow:t,indicatorTextColor:l,indicatorBorderRadius:s,dotBorder:`2px solid ${r}`,dotBorderActive:`2px solid ${a}`,dotBoxShadow:""})},HD={name:"Slider",common:pe,self:ID},If=HD;var aw=e=>{let{opacityDisabled:o,heightTiny:t,heightSmall:r,heightMedium:a,heightLarge:l,heightHuge:n,primaryColor:i,fontSize:d}=e;return{fontSize:d,textColor:i,sizeTiny:t,sizeSmall:r,sizeMedium:a,sizeLarge:l,sizeHuge:n,color:i,opacitySpinning:o}};var WD={name:"Spin",common:P,self:aw},Hf=WD;var lw=e=>{let{textColor2:o,textColor3:t,fontSize:r,fontWeight:a}=e;return{labelFontSize:r,labelFontWeight:a,valueFontWeight:a,labelTextColor:t,valuePrefixTextColor:o,valueSuffixTextColor:o,valueTextColor:o}};var VD={name:"Statistic",common:P,self:lw},Wf=VD;var nw={stepHeaderFontSizeSmall:"14px",stepHeaderFontSizeMedium:"16px",indicatorIndexFontSizeSmall:"14px",indicatorIndexFontSizeMedium:"16px",indicatorSizeSmall:"22px",indicatorSizeMedium:"28px",indicatorIconSizeSmall:"14px",indicatorIconSizeMedium:"18px"};var iw=e=>{let{fontWeightStrong:o,baseColor:t,textColorDisabled:r,primaryColor:a,errorColor:l,textColor1:n,textColor2:i}=e;return Object.assign(Object.assign({},nw),{stepHeaderFontWeight:o,indicatorTextColorProcess:t,indicatorTextColorWait:r,indicatorTextColorFinish:a,indicatorTextColorError:l,indicatorBorderColorProcess:a,indicatorBorderColorWait:r,indicatorBorderColorFinish:a,indicatorBorderColorError:l,indicatorColorProcess:a,indicatorColorWait:"#0000",indicatorColorFinish:"#0000",indicatorColorError:"#0000",splitorColorProcess:r,splitorColorWait:r,splitorColorFinish:a,splitorColorError:r,headerTextColorProcess:n,headerTextColorWait:r,headerTextColorFinish:r,headerTextColorError:l,descriptionTextColorProcess:i,descriptionTextColorWait:r,descriptionTextColorFinish:r,descriptionTextColorError:l})};var zD={name:"Steps",common:P,self:iw},Vf=zD;var dw={buttonHeightSmall:"14px",buttonHeightMedium:"18px",buttonHeightLarge:"22px",buttonWidthSmall:"14px",buttonWidthMedium:"18px",buttonWidthLarge:"22px",buttonWidthPressedSmall:"20px",buttonWidthPressedMedium:"24px",buttonWidthPressedLarge:"28px",railHeightSmall:"18px",railHeightMedium:"22px",railHeightLarge:"26px",railWidthSmall:"32px",railWidthMedium:"40px",railWidthLarge:"48px"};var jD={name:"Switch",common:P,self(e){let{primaryColorSuppl:o,opacityDisabled:t,borderRadius:r,primaryColor:a,textColor2:l,baseColor:n}=e,i="rgba(255, 255, 255, .20)";return Object.assign(Object.assign({},dw),{iconColor:n,textColor:l,loadingColor:o,opacityDisabled:t,railColor:i,railColorActive:o,buttonBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",buttonColor:"#FFF",railBorderRadiusSmall:r,railBorderRadiusMedium:r,railBorderRadiusLarge:r,buttonBorderRadiusSmall:r,buttonBorderRadiusMedium:r,buttonBorderRadiusLarge:r,boxShadowFocus:`0 0 8px 0 ${J(a,{alpha:.3})}`})}},zf=jD;var sw={thPaddingSmall:"6px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"6px",tdPaddingMedium:"12px",tdPaddingLarge:"12px"};var uw=e=>{let{dividerColor:o,cardColor:t,modalColor:r,popoverColor:a,tableHeaderColor:l,tableColorStriped:n,textColor1:i,textColor2:d,borderRadius:s,fontWeightStrong:u,lineHeight:f,fontSizeSmall:c,fontSizeMedium:p,fontSizeLarge:x}=e;return Object.assign(Object.assign({},sw),{fontSizeSmall:c,fontSizeMedium:p,fontSizeLarge:x,lineHeight:f,borderRadius:s,borderColor:me(t,o),borderColorModal:me(r,o),borderColorPopover:me(a,o),tdColor:t,tdColorModal:r,tdColorPopover:a,tdColorStriped:me(t,n),tdColorStripedModal:me(r,n),tdColorStripedPopover:me(a,n),thColor:me(t,l),thColorModal:me(r,l),thColorPopover:me(a,l),thTextColor:i,tdTextColor:d,thFontWeight:u})};var $D={name:"Table",common:P,self:uw},jf=$D;var fw={tabFontSizeSmall:"14px",tabFontSizeMedium:"14px",tabFontSizeLarge:"16px",tabGapSmallLine:"36px",tabGapMediumLine:"36px",tabGapLargeLine:"36px",tabPaddingSmallLine:"6px 0",tabPaddingMediumLine:"10px 0",tabPaddingLargeLine:"14px 0",tabGapSmallBar:"36px",tabGapMediumBar:"36px",tabGapLargeBar:"36px",tabPaddingSmallBar:"4px 0",tabPaddingMediumBar:"6px 0",tabPaddingLargeBar:"10px 0",tabGapSmallCard:"4px",tabGapMediumCard:"4px",tabGapLargeCard:"4px",tabPaddingSmallCard:"6px 10px",tabPaddingMediumCard:"8px 12px",tabPaddingLargeCard:"8px 16px",tabPaddingSmallSegment:"4px 0",tabPaddingMediumSegment:"6px 0",tabPaddingLargeSegment:"8px 0",tabGapSmallSegment:"0",tabGapMediumSegment:"0",tabGapLargeSegment:"0",panePaddingSmall:"8px 0 0 0",panePaddingMedium:"12px 0 0 0",panePaddingLarge:"16px 0 0 0"};var pw=e=>{let{textColor2:o,primaryColor:t,textColorDisabled:r,closeColor:a,closeColorHover:l,closeColorPressed:n,tabColor:i,baseColor:d,dividerColor:s,fontWeight:u,textColor1:f,borderRadius:c,fontSize:p,fontWeightStrong:x}=e;return Object.assign(Object.assign({},fw),{colorSegment:i,tabFontSizeCard:p,tabTextColorLine:f,tabTextColorActiveLine:t,tabTextColorHoverLine:t,tabTextColorDisabledLine:r,tabTextColorSegment:f,tabTextColorActiveSegment:o,tabTextColorHoverSegment:o,tabTextColorDisabledSegment:r,tabTextColorBar:f,tabTextColorActiveBar:t,tabTextColorHoverBar:t,tabTextColorDisabledBar:r,tabTextColorCard:f,tabTextColorHoverCard:f,tabTextColorActiveCard:t,tabTextColorDisabledCard:r,barColor:t,closeColor:a,closeColorHover:l,closeColorPressed:n,tabColor:i,tabColorSegment:d,tabBorderColor:s,tabFontWeightActive:u,tabFontWeight:u,tabBorderRadius:c,paneTextColor:o,fontWeightStrong:x})};var UD={name:"Tabs",common:P,self(e){let o=pw(e),{inputColor:t}=e;return o.colorSegment=t,o.tabColorSegment=t,o}},$f=UD;var mw=e=>{let{textColor1:o,textColor2:t,fontWeightStrong:r,fontSize:a}=e;return{fontSize:a,titleTextColor:o,textColor:t,titleFontWeight:r}};var KD={name:"Thing",common:P,self:mw},Uf=KD;var cw={titleMarginMedium:"0",titleMarginLarge:"-2px 0 0 0",titleFontSizeMedium:"14px",titleFontSizeLarge:"16px",iconSizeMedium:"14px",iconSizeLarge:"14px"};var GD={name:"Timeline",common:P,self(e){let{textColor3:o,infoColorSuppl:t,errorColorSuppl:r,successColorSuppl:a,warningColorSuppl:l,textColor1:n,textColor2:i,railColor:d,fontWeightStrong:s,fontSize:u}=e;return Object.assign(Object.assign({},cw),{contentFontSize:u,titleFontWeight:s,circleBorder:`2px solid ${o}`,circleBorderInfo:`2px solid ${t}`,circleBorderError:`2px solid ${r}`,circleBorderSuccess:`2px solid ${a}`,circleBorderWarning:`2px solid ${l}`,iconColor:o,iconColorInfo:t,iconColorError:r,iconColorSuccess:a,iconColorWarning:l,titleTextColor:n,contentTextColor:i,metaTextColor:o,lineColor:d})}},Kf=GD;var xw={extraFontSize:"12px",width:"440px"};var qD={name:"Transfer",common:P,peers:{Checkbox:Bt,Scrollbar:no,Input:go,Empty:pt,Button:io},self(e){let{iconColorDisabled:o,iconColor:t,fontWeight:r,fontSizeLarge:a,fontSizeMedium:l,fontSizeSmall:n,heightLarge:i,heightMedium:d,heightSmall:s,borderRadius:u,inputColor:f,tableHeaderColor:c,textColor1:p,textColorDisabled:x,textColor2:T,hoverColor:C}=e;return Object.assign(Object.assign({},xw),{itemHeightSmall:s,itemHeightMedium:d,itemHeightLarge:i,fontSizeSmall:n,fontSizeMedium:l,fontSizeLarge:a,borderRadius:u,borderColor:"#0000",listColor:f,headerColor:c,titleTextColor:p,titleTextColorDisabled:x,extraTextColor:T,filterDividerColor:"#0000",itemTextColor:T,itemTextColorDisabled:x,itemColorPending:C,titleFontWeight:r,iconColor:t,iconColorDisabled:o})}},Gf=qD;var qf=e=>{let{borderRadiusSmall:o,hoverColor:t,pressedColor:r,primaryColor:a,textColor3:l,textColor2:n,textColorDisabled:i,fontSize:d}=e;return{fontSize:d,nodeBorderRadius:o,nodeColorHover:t,nodeColorPressed:r,nodeColorActive:J(a,{alpha:.1}),arrowColor:l,nodeTextColor:n,nodeTextColorDisabled:i,loadingColor:a,dropMarkColor:a}},QD=Pe({name:"Tree",common:pe,peers:{Checkbox:mr,Scrollbar:bo,Empty:ft},self:qf}),Qf=QD;var ZD={name:"Tree",common:P,peers:{Checkbox:Bt,Scrollbar:no,Empty:pt},self(e){let{primaryColor:o}=e,t=qf(e);return t.nodeColorActive=J(o,{alpha:.15}),t}},wn=ZD;var YD={name:"TreeSelect",common:P,peers:{Tree:wn,Empty:pt,InternalSelection:wa}},Zf=YD;var hw={headerFontSize1:"30px",headerFontSize2:"22px",headerFontSize3:"18px",headerFontSize4:"16px",headerFontSize5:"16px",headerFontSize6:"16px",headerMargin1:"28px 0 20px 0",headerMargin2:"28px 0 20px 0",headerMargin3:"28px 0 20px 0",headerMargin4:"28px 0 18px 0",headerMargin5:"28px 0 18px 0",headerMargin6:"28px 0 18px 0",headerPrefixWidth1:"16px",headerPrefixWidth2:"16px",headerPrefixWidth3:"12px",headerPrefixWidth4:"12px",headerPrefixWidth5:"12px",headerPrefixWidth6:"12px",headerBarWidth1:"4px",headerBarWidth2:"4px",headerBarWidth3:"3px",headerBarWidth4:"3px",headerBarWidth5:"3px",headerBarWidth6:"3px",pMargin:"16px 0 16px 0",liMargin:".25em 0 0 0",olPadding:"0 0 0 2em",ulPadding:"0 0 0 2em"};var Sw=e=>{let{primaryColor:o,textColor2:t,borderColor:r,lineHeight:a,fontSize:l,borderRadiusSmall:n,dividerColor:i,fontWeightStrong:d,textColor1:s,textColor3:u,infoColor:f,warningColor:c,errorColor:p,successColor:x,codeColor:T}=e;return Object.assign(Object.assign({},hw),{aTextColor:o,blockquoteTextColor:t,blockquotePrefixColor:r,blockquoteLineHeight:a,blockquoteFontSize:l,codeBorderRadius:n,liTextColor:t,liLineHeight:a,liFontSize:l,hrColor:i,headerFontWeight:d,headerTextColor:s,pTextColor:t,pTextColor1Depth:s,pTextColor2Depth:t,pTextColor3Depth:u,pLineHeight:a,pFontSize:l,headerBarColor:o,headerBarColorPrimary:o,headerBarColorInfo:f,headerBarColorError:p,headerBarColorWarning:c,headerBarColorSuccess:x,textColor:t,textColor1Depth:s,textColor2Depth:t,textColor3Depth:u,textColorPrimary:o,textColorInfo:f,textColorSuccess:x,textColorWarning:c,textColorError:p,codeTextColor:t,codeColor:T,codeBorder:"1px solid #0000"})};var XD={name:"Typography",common:P,self:Sw},Yf=XD;var Xf=e=>{let{iconColor:o,primaryColor:t,errorColor:r,textColor2:a,successColor:l,opacityDisabled:n,actionColor:i,borderColor:d,hoverColor:s,lineHeight:u,borderRadius:f,fontSize:c}=e;return{fontSize:c,lineHeight:u,borderRadius:f,draggerColor:i,draggerBorder:`1px dashed ${d}`,draggerBorderHover:`1px dashed ${t}`,itemColorHover:s,itemColorHoverError:J(r,{alpha:.06}),itemTextColor:a,itemTextColorError:r,itemTextColorSuccess:l,itemIconColor:o,itemDisabledOpacity:n,itemBorderImageCardError:`1px solid ${r}`,itemBorderImageCard:`1px solid ${d}`}},CX=Pe({name:"Upload",common:pe,peers:{Button:Ao,Progress:Lf},self:Xf});var JD={name:"Upload",common:P,peers:{Button:io,Progress:gn},self(e){let{errorColor:o}=e,t=Xf(e);return t.itemColorHoverError=J(o,{alpha:.09}),t}},Jf=JD;var eP={name:"Watermark",common:P,self(e){let{fontFamily:o}=e;return{fontFamily:o}}},ep=eP;var op={name:"Image",common:P,peers:{Tooltip:Xt},self:e=>{let{textColor2:o}=e;return{toolbarIconColor:o,toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}};var tp={name:"Skeleton",common:P,self(e){let{heightSmall:o,heightMedium:t,heightLarge:r,borderRadius:a}=e;return{color:"rgba(255, 255, 255, 0.12)",colorEnd:"rgba(255, 255, 255, 0.18)",borderRadius:a,heightSmall:o,heightMedium:t,heightLarge:r}}};function rp(e){return window.TouchEvent&&e instanceof window.TouchEvent}function ap(){let e=Z(new Map),o=t=>r=>{e.value.set(t,r)};return Zd(()=>e.value.clear()),[e,o]}var gw=Y([G("slider",` display: block; padding: calc((var(--n-handle-size) - var(--n-rail-height)) / 2) 0; position: relative; @@ -714,88 +714,88 @@ ${o} width: 100%; cursor: pointer; user-select: none; - `,[Se("reverse",[K("slider-handles",[K("slider-handle",` + `,[xe("reverse",[G("slider-handles",[G("slider-handle",` transform: translate(50%, -50%); - `)]),K("slider-dots",[K("slider-dot",` + `)]),G("slider-dots",[G("slider-dot",` transform: translateX(50%, -50%); - `)]),Se("vertical",[K("slider-handles",[K("slider-handle",` + `)]),xe("vertical",[G("slider-handles",[G("slider-handle",` transform: translate(-50%, -50%); - `)]),K("slider-marks",[K("slider-mark",` + `)]),G("slider-marks",[G("slider-mark",` transform: translateY(calc(-50% + var(--n-dot-height) / 2)); - `)]),K("slider-dots",[K("slider-dot",` + `)]),G("slider-dots",[G("slider-dot",` transform: translateX(-50%) translateY(0); - `)])])]),Se("vertical",` + `)])])]),xe("vertical",` padding: 0 calc((var(--n-handle-size) - var(--n-rail-height)) / 2); width: var(--n-rail-width-vertical); height: 100%; - `,[K("slider-handles",` + `,[G("slider-handles",` top: calc(var(--n-handle-size) / 2); right: 0; bottom: calc(var(--n-handle-size) / 2); left: 0; - `,[K("slider-handle",` + `,[G("slider-handle",` top: unset; left: 50%; transform: translate(-50%, 50%); - `)]),K("slider-rail",` + `)]),G("slider-rail",` height: 100%; - `,[J("fill",` + `,[X("fill",` top: unset; right: 0; bottom: unset; left: 0; - `)]),Se("with-mark",` + `)]),xe("with-mark",` width: var(--n-rail-width-vertical); margin: 0 32px 0 8px; - `),K("slider-marks",` + `),G("slider-marks",` top: calc(var(--n-handle-size) / 2); right: unset; bottom: calc(var(--n-handle-size) / 2); left: 22px; - `,[K("slider-mark",` + `,[G("slider-mark",` transform: translateY(50%); white-space: nowrap; - `)]),K("slider-dots",` + `)]),G("slider-dots",` top: calc(var(--n-handle-size) / 2); right: unset; bottom: calc(var(--n-handle-size) / 2); left: 50%; - `,[K("slider-dot",` + `,[G("slider-dot",` transform: translateX(-50%) translateY(50%); - `)])]),Se("disabled",` + `)])]),xe("disabled",` cursor: not-allowed; opacity: var(--n-opacity-disabled); - `,[K("slider-handle",` + `,[G("slider-handle",` cursor: not-allowed; - `)]),Se("with-mark",` + `)]),xe("with-mark",` width: 100%; margin: 8px 0 32px 0; - `),X("&:hover",[K("slider-rail",{backgroundColor:"var(--n-rail-color-hover)"},[J("fill",{backgroundColor:"var(--n-fill-color-hover)"})]),K("slider-handle",{boxShadow:"var(--n-handle-box-shadow-hover)"})]),Se("active",[K("slider-rail",{backgroundColor:"var(--n-rail-color-hover)"},[J("fill",{backgroundColor:"var(--n-fill-color-hover)"})]),K("slider-handle",{boxShadow:"var(--n-handle-box-shadow-hover)"})]),K("slider-marks",` + `),Y("&:hover",[G("slider-rail",{backgroundColor:"var(--n-rail-color-hover)"},[X("fill",{backgroundColor:"var(--n-fill-color-hover)"})]),G("slider-handle",{boxShadow:"var(--n-handle-box-shadow-hover)"})]),xe("active",[G("slider-rail",{backgroundColor:"var(--n-rail-color-hover)"},[X("fill",{backgroundColor:"var(--n-fill-color-hover)"})]),G("slider-handle",{boxShadow:"var(--n-handle-box-shadow-hover)"})]),G("slider-marks",` position: absolute; top: 18px; left: calc(var(--n-handle-size) / 2); right: calc(var(--n-handle-size) / 2); - `,[K("slider-mark",{position:"absolute",transform:"translateX(-50%)"})]),K("slider-rail",` + `,[G("slider-mark",{position:"absolute",transform:"translateX(-50%)"})]),G("slider-rail",` width: 100%; position: relative; height: var(--n-rail-height); background-color: var(--n-rail-color); transition: background-color .3s var(--n-bezier); border-radius: calc(var(--n-rail-height) / 2); - `,[J("fill",` + `,[X("fill",` position: absolute; top: 0; bottom: 0; border-radius: calc(var(--n-rail-height) / 2); transition: background-color .3s var(--n-bezier); background-color: var(--n-fill-color); - `)]),K("slider-handles",` + `)]),G("slider-handles",` position: absolute; top: 0; right: calc(var(--n-handle-size) / 2); bottom: 0; left: calc(var(--n-handle-size) / 2); - `,[K("slider-handle",` + `,[G("slider-handle",` outline: none; height: var(--n-handle-size); width: var(--n-handle-size); @@ -808,12 +808,12 @@ ${o} cursor: pointer; background-color: var(--n-handle-color); box-shadow: var(--n-handle-box-shadow); - `,[X("&:hover",{boxShadow:"var(--n-handle-box-shadow-hover)"}),X("&:hover:focus",{boxShadow:"var(--n-handle-box-shadow-active)"}),X("&:focus",{boxShadow:"var(--n-handle-box-shadow-focus)"})])]),K("slider-dots",` + `,[Y("&:hover",{boxShadow:"var(--n-handle-box-shadow-hover)"}),Y("&:hover:focus",{boxShadow:"var(--n-handle-box-shadow-active)"}),Y("&:focus",{boxShadow:"var(--n-handle-box-shadow-focus)"})])]),G("slider-dots",` position: absolute; top: 50%; left: calc(var(--n-handle-size) / 2); right: calc(var(--n-handle-size) / 2); - `,[Se("transition-disabled",[K("slider-dot",{transition:"none"})]),K("slider-dot",` + `,[xe("transition-disabled",[G("slider-dot",{transition:"none"})]),G("slider-dot",` transition: border-color .3s var(--n-bezier), box-shadow .3s var(--n-bezier), @@ -827,59 +827,59 @@ ${o} box-sizing: border-box; border: var(--n-dot-border); background-color: var(--n-dot-color); - `,[Se("active",{border:"var(--n-dot-border-active)"})])])]),K("slider-handle-indicator",` + `,[xe("active",{border:"var(--n-dot-border-active)"})])])]),G("slider-handle-indicator",` font-size: var(--n-font-size); padding: 6px 10px; border-radius: var(--n-indicator-border-radius); color: var(--n-indicator-text-color); background-color: var(--n-indicator-color); box-shadow: var(--n-indicator-box-shadow); - `,[uu()]),K("slider-handle-indicator",` + `,[uu()]),G("slider-handle-indicator",` font-size: var(--n-font-size); padding: 6px 10px; border-radius: var(--n-indicator-border-radius); color: var(--n-indicator-text-color); background-color: var(--n-indicator-color); box-shadow: var(--n-indicator-box-shadow); - `,[Se("top",` + `,[xe("top",` margin-bottom: 12px; - `),Se("right",` + `),xe("right",` margin-left: 12px; - `),Se("bottom",` + `),xe("bottom",` margin-top: 12px; - `),Se("left",` + `),xe("left",` margin-right: 12px; - `),uu()]),mi(K("slider",[K("slider-dot",{backgroundColor:"var(--n-dot-color-modal)"})])),ci(K("slider",[K("slider-dot",{backgroundColor:"var(--n-dot-color-popover)"})]))]);var eP=0,oP=Object.assign(Object.assign({},Oo.props),{to:ua.propTo,defaultValue:{type:[Number,Array],default:0},marks:Object,disabled:{type:Boolean,default:void 0},formatTooltip:Function,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:[Number,String],default:1},range:Boolean,value:[Number,Array],placement:String,showTooltip:{type:Boolean,default:void 0},tooltip:{type:Boolean,default:!0},vertical:Boolean,reverse:Boolean,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array]}),lp=ie({name:"Slider",props:oP,setup(e){let{mergedClsPrefixRef:o,namespaceRef:t,inlineThemeDisabled:r}=Bo(e),a=Oo("Slider","-slider",Sw,If,e,o),l=Z(null),[n,i]=ap(),[d,s]=ap(),u=Z(new Set),f=Tt(e),{mergedDisabledRef:m}=f,p=z(()=>{let{step:A}=e;if(A<=0||A==="mark")return 0;let _=A.toString(),j=0;return _.includes(".")&&(j=_.length-_.indexOf(".")-1),j}),c=Z(e.defaultValue),T=Be(e,"value"),C=Zo(T,c),g=z(()=>{let{value:A}=C;return(e.range?A:[A]).map(Ze)}),k=z(()=>g.value.length>2),U=z(()=>e.placement===void 0?e.vertical?"right":"top":e.placement),F=z(()=>{let{marks:A}=e;return A?Object.keys(A).map(parseFloat):null}),w=Z(-1),y=Z(-1),S=Z(-1),O=Z(!1),L=Z(!1),b=z(()=>{let{vertical:A,reverse:_}=e;return A?_?"top":"bottom":_?"right":"left"}),W=z(()=>{if(k.value)return;let A=g.value,_=Ye(e.range?Math.min(...A):e.min),j=Ye(e.range?Math.max(...A):A[0]),{value:re}=b;return e.vertical?{[re]:`${_}%`,height:`${j-_}%`}:{[re]:`${_}%`,width:`${j-_}%`}}),B=z(()=>{let A=[],{marks:_}=e;if(_){let j=g.value.slice();j.sort((Ee,Q)=>Ee-Q);let{value:re}=b,{value:me}=k,{range:ye}=e,ke=me?()=>!1:Ee=>ye?Ee>=j[0]&&Ee<=j[j.length-1]:Ee<=j[0];for(let Ee of Object.keys(_)){let Q=Number(Ee);A.push({active:ke(Q),label:_[Ee],style:{[re]:`${Ye(Q)}%`}})}}return A});function ne(A,_){let j=Ye(A),{value:re}=b;return{[re]:`${j}%`,zIndex:_===w.value?1:0}}function ge(A){return e.showTooltip||S.value===A||w.value===A&&O.value}function Pe(A){return!(w.value===A&&y.value===A)}function ue(A){var _;~A&&(w.value=A,(_=n.value.get(A))===null||_===void 0||_.focus())}function se(){d.value.forEach((A,_)=>{ge(_)&&A.syncPosition()})}function Te(A){let{"onUpdate:value":_,onUpdateValue:j}=e,{nTriggerFormInput:re,nTriggerFormChange:me}=f;j&&Fe(j,A),_&&Fe(_,A),c.value=A,re(),me()}function je(A){let{range:_}=e;if(_){if(Array.isArray(A)){let{value:j}=g;A.join()!==j.join()&&Te(A)}}else Array.isArray(A)||g.value[0]!==A&&Te(A)}function Ge(A,_){if(e.range){let j=g.value.slice();j.splice(_,1,A),je(j)}else je(A)}function ze(A,_,j){let re=j!==void 0;j||(j=A-_>0?1:-1);let me=F.value||[],{step:ye}=e;if(ye==="mark"){let Q=He(A,me.concat(_),re?j:void 0);return Q?Q.value:_}if(ye<=0)return _;let{value:ke}=p,Ee;if(re){let Q=Number((_/ye).toFixed(ke)),ae=Math.floor(Q),we=Q>ae?ae:ae-1,We=Q0)&&(re===null||ke0?1:-1),_)}function ro(A){var _,j;if(m.value||!rp(A)&&A.button!==eP)return;let re=Ie(A);if(re===void 0)return;let me=g.value.slice(),ye=e.range?(j=(_=He(re,me))===null||_===void 0?void 0:_.index)!==null&&j!==void 0?j:-1:0;ye!==-1&&(A.preventDefault(),ue(ye),E(),Ge(ze(re,g.value[ye]),ye))}function E(){O.value||(O.value=!0,go("touchend",document,h),go("mouseup",document,h),go("touchmove",document,x),go("mousemove",document,x))}function le(){O.value&&(O.value=!1,So("touchend",document,h),So("mouseup",document,h),So("touchmove",document,x),So("mousemove",document,x))}function x(A){let{value:_}=w;if(!O.value||_===-1){le();return}let j=Ie(A);Ge(ze(j,g.value[_]),_)}function h(){le()}function P(A){w.value=A,m.value||(S.value=A)}function N(A){w.value===A&&(w.value=-1,le()),S.value===A&&(S.value=-1)}function H(A){S.value=A}function $(A){S.value===A&&(S.value=-1)}Xe(w,(A,_)=>void No(()=>y.value=_)),Xe(C,()=>{if(e.marks){if(L.value)return;L.value=!0,No(()=>{L.value=!1})}No(se)});let Y=z(()=>{let{self:{railColor:A,railColorHover:_,fillColor:j,fillColorHover:re,handleColor:me,opacityDisabled:ye,dotColor:ke,dotColorModal:Ee,handleBoxShadow:Q,handleBoxShadowHover:ae,handleBoxShadowActive:we,handleBoxShadowFocus:We,dotBorder:eo,dotBoxShadow:$e,railHeight:oo,railWidthVertical:Qe,handleSize:Go,dotHeight:ct,dotWidth:al,dotBorderRadius:mr,fontSize:cr,dotBorderActive:wa,dotColorPopover:ll},common:{cubicBezierEaseInOut:Ta}}=a.value;return{"--n-bezier":Ta,"--n-dot-border":eo,"--n-dot-border-active":wa,"--n-dot-border-radius":mr,"--n-dot-box-shadow":$e,"--n-dot-color":ke,"--n-dot-color-modal":Ee,"--n-dot-color-popover":ll,"--n-dot-height":ct,"--n-dot-width":al,"--n-fill-color":j,"--n-fill-color-hover":re,"--n-font-size":cr,"--n-handle-box-shadow":Q,"--n-handle-box-shadow-active":we,"--n-handle-box-shadow-focus":We,"--n-handle-box-shadow-hover":ae,"--n-handle-color":me,"--n-handle-size":Go,"--n-opacity-disabled":ye,"--n-rail-color":A,"--n-rail-color-hover":_,"--n-rail-height":oo,"--n-rail-width-vertical":Qe}}),I=r?Ko("slider",void 0,Y,e):void 0,V=z(()=>{let{self:{fontSize:A,indicatorColor:_,indicatorBoxShadow:j,indicatorTextColor:re,indicatorBorderRadius:me}}=a.value;return{"--n-font-size":A,"--n-indicator-border-radius":me,"--n-indicator-box-shadow":j,"--n-indicator-color":_,"--n-indicator-text-color":re}}),q=r?Ko("slider-indicator",void 0,V,e):void 0;return{mergedClsPrefix:o,namespace:t,uncontrolledValue:c,mergedValue:C,mergedDisabled:m,mergedPlacement:U,isMounted:Br(),adjustedTo:ua(e),dotTransitionDisabled:L,markInfos:B,isShowTooltip:ge,isSkipCSSDetection:Pe,handleRailRef:l,setHandleRefs:i,setFollowerRefs:s,fillStyle:W,getHandleStyle:ne,activeIndex:w,arrifiedValues:g,followerEnabledIndexSet:u,handleRailMouseDown:ro,handleHandleFocus:P,handleHandleBlur:N,handleHandleMouseEnter:H,handleHandleMouseLeave:$,handleRailKeyDown:fo,indicatorCssVars:r?void 0:V,indicatorThemeClass:q==null?void 0:q.themeClass,indicatorOnRender:q==null?void 0:q.onRender,cssVars:r?void 0:Y,themeClass:I==null?void 0:I.themeClass,onRender:I==null?void 0:I.onRender}},render(){var e;let{mergedClsPrefix:o,themeClass:t,formatTooltip:r}=this;return(e=this.onRender)===null||e===void 0||e.call(this),R("div",{class:[`${o}-slider`,t,{[`${o}-slider--disabled`]:this.mergedDisabled,[`${o}-slider--active`]:this.activeIndex!==-1,[`${o}-slider--with-mark`]:this.marks,[`${o}-slider--vertical`]:this.vertical,[`${o}-slider--reverse`]:this.reverse}],style:this.cssVars,onKeydown:this.handleRailKeyDown,onMousedown:this.handleRailMouseDown,onTouchstart:this.handleRailMouseDown},R("div",{class:`${o}-slider-rail`},R("div",{class:`${o}-slider-rail__fill`,style:this.fillStyle}),this.marks?R("div",{class:[`${o}-slider-dots`,this.dotTransitionDisabled&&`${o}-slider-dots--transition-disabled`]},this.markInfos.map(a=>R("div",{key:a.label,class:[`${o}-slider-dot`,{[`${o}-slider-dot--active`]:a.active}],style:a.style}))):null,R("div",{ref:"handleRailRef",class:`${o}-slider-handles`},this.arrifiedValues.map((a,l)=>{let n=this.isShowTooltip(l);return R(wi,null,{default:()=>[R(Ti,null,{default:()=>R("div",{ref:this.setHandleRefs(l),class:`${o}-slider-handle`,tabindex:this.mergedDisabled?-1:0,style:this.getHandleStyle(a,l),onFocus:()=>this.handleHandleFocus(l),onBlur:()=>this.handleHandleBlur(l),onMouseenter:()=>this.handleHandleMouseEnter(l),onMouseleave:()=>this.handleHandleMouseLeave(l)})}),this.tooltip&&R(bi,{ref:this.setFollowerRefs(l),show:n,to:this.adjustedTo,enabled:this.showTooltip&&!this.range||this.followerEnabledIndexSet.has(l),teleportDisabled:this.adjustedTo===ua.tdkey,placement:this.mergedPlacement,containerClass:this.namespace},{default:()=>R(vt,{name:"fade-in-scale-up-transition",appear:this.isMounted,css:this.isSkipCSSDetection(l),onEnter:()=>this.followerEnabledIndexSet.add(l),onAfterLeave:()=>this.followerEnabledIndexSet.delete(l)},{default:()=>{var i;return n?((i=this.indicatorOnRender)===null||i===void 0||i.call(this),R("div",{class:[`${o}-slider-handle-indicator`,this.indicatorThemeClass,`${o}-slider-handle-indicator--${this.mergedPlacement}`],style:this.indicatorCssVars},typeof r=="function"?r(a):a)):null}})})]})})),this.marks?R("div",{class:`${o}-slider-marks`},this.markInfos.map(a=>R("div",{key:a.label,class:`${o}-slider-mark`,style:a.style},a.label))):null))}});var pd=no("n-tree-select");var Jt=no("n-tree");var gw=ie({name:"NTreeSwitcher",props:{clsPrefix:{type:String,required:!0},expanded:Boolean,hide:Boolean,loading:Boolean,onClick:Function},setup(e){let{renderSwitcherIconRef:o}=Re(Jt,null);return()=>{let{clsPrefix:t}=e;return R("span",{"data-switcher":!0,class:[`${t}-tree-node-switcher`,{[`${t}-tree-node-switcher--expanded`]:e.expanded,[`${t}-tree-node-switcher--hide`]:e.hide}],onClick:e.onClick},R("div",{class:`${t}-tree-node-switcher__icon`},R(Ot,null,{default:()=>{if(e.loading)return R(Vr,{clsPrefix:t,key:"loading",radius:85,strokeWidth:20});let{value:r}=o;return r?r():R(Ct,{clsPrefix:t,key:"switcher"},{default:()=>R(Xs,null)})}})))}}});var ww=ie({name:"NTreeNodeCheckbox",props:{clsPrefix:{type:String,required:!0},focusable:Boolean,disabled:Boolean,checked:Boolean,indeterminate:Boolean,onCheck:Function},setup(e){let o=Re(Jt);function t(a){let{onCheck:l}=e;if(l)return l(a)}function r(a){e.indeterminate?t(!1):t(a)}return{handleUpdateValue:r,mergedTheme:o.mergedThemeRef}},render(){let{clsPrefix:e,mergedTheme:o,checked:t,indeterminate:r,disabled:a,focusable:l,handleUpdateValue:n}=this;return R("span",{class:`${e}-tree-node-checkbox`,"data-checkbox":!0},R(Nu,{focusable:l,disabled:a,theme:o.peers.Checkbox,themeOverrides:o.peerOverrides.Checkbox,checked:t,indeterminate:r,onUpdateChecked:n}))}});var Tw=ie({name:"TreeNodeContent",props:{clsPrefix:{type:String,required:!0},disabled:Boolean,checked:Boolean,selected:Boolean,onClick:Function,onDragstart:Function,tmNode:{type:Object,required:!0},nodeProps:Object},setup(e){let{renderLabelRef:o,renderPrefixRef:t,renderSuffixRef:r,labelFieldRef:a}=Re(Jt),l=Z(null);function n(d){let{onClick:s}=e;s&&s(d)}function i(d){n(d)}return{selfRef:l,renderLabel:o,renderPrefix:t,renderSuffix:r,labelField:a,handleClick:i}},render(){let{clsPrefix:e,labelField:o,nodeProps:t,checked:r=!1,selected:a=!1,renderLabel:l,renderPrefix:n,renderSuffix:i,handleClick:d,onDragstart:s,tmNode:{rawNode:u,rawNode:{prefix:f,suffix:m,[o]:p}}}=this;return R("span",Object.assign({},t,{ref:"selfRef",class:[`${e}-tree-node-content`,t==null?void 0:t.class],onClick:d,draggable:s===void 0?void 0:!0,onDragstart:s}),n||f?R("div",{class:`${e}-tree-node-content__prefix`},n?n({option:u,selected:a,checked:r}):Ia(f)):null,R("div",{class:`${e}-tree-node-content__text`},l?l({option:u,selected:a,checked:r}):Ia(p)),i||m?R("div",{class:`${e}-tree-node-content__suffix`},i?i({option:u,selected:a,checked:r}):Ia(m)):null)}});function np({position:e,offsetLevel:o,indent:t,el:r}){let a={position:"absolute",boxSizing:"border-box",right:0};if(e==="inside")a.left=0,a.top=0,a.bottom=0,a.borderRadius="inherit",a.boxShadow="inset 0 0 0 2px var(--n-drop-mark-color)";else{let l=e==="before"?"top":"bottom";a[l]=0,a.left=`${r.offsetLeft+6-o*t}px`,a.height="2px",a.backgroundColor="var(--n-drop-mark-color)",a.transformOrigin=l,a.borderRadius="1px",a.transform=e==="before"?"translateY(-4px)":"translateY(4px)"}return R("div",{style:a})}function Rw({dropPosition:e,node:o}){return o.isLeaf===!1||o.children?!0:e!=="inside"}var tP=ie({name:"TreeNode",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(e){let o=Re(Jt),{droppingNodeParentRef:t,droppingMouseNodeRef:r,draggingNodeRef:a,droppingPositionRef:l,droppingOffsetLevelRef:n,nodePropsRef:i,indentRef:d,blockLineRef:s}=o,u=z(()=>o.disabledRef.value||e.tmNode.disabled),f=z(()=>{let{value:b}=i;if(!!b)return b({option:e.tmNode.rawNode})}),m=Z(null),p={value:null};mo(()=>{p.value=m.value.$el});function c(){let{tmNode:b}=e;if(!b.isLeaf&&!b.shallowLoaded){o.loadingKeysRef.value.has(b.key)||o.loadingKeysRef.value.add(b.key);let{onLoadRef:{value:W}}=o;W&&W(b.rawNode).then(()=>{o.handleSwitcherClick(b)}).finally(()=>{o.loadingKeysRef.value.delete(b.key)})}else o.handleSwitcherClick(b)}let T=Je(()=>!e.tmNode.disabled&&o.selectableRef.value&&(o.internalTreeSelect?o.mergedCheckStrategyRef.value!=="child"||o.multipleRef.value&&o.cascadeRef.value||e.tmNode.isLeaf:!0));function C(b){!T.value||ai(b,"checkbox")||ai(b,"switcher")||o.handleSelect(e.tmNode)}function g(b){var W,B;s.value||(u.value||C(b),(B=(W=f.value)===null||W===void 0?void 0:W.onClick)===null||B===void 0||B.call(W,b))}function k(b){var W,B;!s.value||(u.value||C(b),(B=(W=f.value)===null||W===void 0?void 0:W.onClick)===null||B===void 0||B.call(W,b))}function U(b){o.handleCheck(e.tmNode,b)}function F(b){o.handleDragStart({event:b,node:e.tmNode})}function w(b){b.currentTarget===b.target&&o.handleDragEnter({event:b,node:e.tmNode})}function y(b){b.preventDefault(),o.handleDragOver({event:b,node:e.tmNode})}function S(b){o.handleDragEnd({event:b,node:e.tmNode})}function O(b){b.currentTarget===b.target&&o.handleDragLeave({event:b,node:e.tmNode})}function L(b){b.preventDefault(),l.value!==null&&o.handleDrop({event:b,node:e.tmNode,dropPosition:l.value})}return{showDropMark:Je(()=>{let{value:b}=a;if(!b)return;let{value:W}=l;if(!W)return;let{value:B}=r;if(!B)return;let{tmNode:ne}=e;return ne.key===B.key}),showDropMarkAsParent:Je(()=>{let{value:b}=t;if(!b)return!1;let{tmNode:W}=e,{value:B}=l;return B==="before"||B==="after"?b.key===W.key:!1}),pending:Je(()=>o.pendingNodeKeyRef.value===e.tmNode.key),loading:Je(()=>o.loadingKeysRef.value.has(e.tmNode.key)),highlight:Je(()=>{var b;return(b=o.highlightKeySetRef.value)===null||b===void 0?void 0:b.has(e.tmNode.key)}),checked:Je(()=>o.displayedCheckedKeysRef.value.includes(e.tmNode.key)),indeterminate:Je(()=>o.displayedIndeterminateKeysRef.value.includes(e.tmNode.key)),selected:Je(()=>o.mergedSelectedKeysRef.value.includes(e.tmNode.key)),expanded:Je(()=>o.mergedExpandedKeysRef.value.includes(e.tmNode.key)),disabled:u,checkable:z(()=>o.checkableRef.value&&(o.cascadeRef.value||o.mergedCheckStrategyRef.value!=="child"||e.tmNode.isLeaf)),checkboxDisabled:z(()=>!!e.tmNode.rawNode.checkboxDisabled),selectable:T,internalScrollable:o.internalScrollableRef,draggable:o.draggableRef,blockLine:s,nodeProps:f,checkboxFocusable:o.internalCheckboxFocusableRef,droppingPosition:l,droppingOffsetLevel:n,indent:d,contentInstRef:m,contentElRef:p,handleCheck:U,handleDrop:L,handleDragStart:F,handleDragEnter:w,handleDragOver:y,handleDragEnd:S,handleDragLeave:O,handleLineClick:k,handleContentClick:g,handleSwitcherClick:c}},render(){let{tmNode:e,clsPrefix:o,checkable:t,selectable:r,selected:a,checked:l,highlight:n,draggable:i,blockLine:d,indent:s,disabled:u,pending:f,internalScrollable:m,nodeProps:p}=this,c=i&&!u?{onDragenter:this.handleDragEnter,onDragleave:this.handleDragLeave,onDragend:this.handleDragEnd,onDrop:this.handleDrop,onDragover:this.handleDragOver}:void 0,T=m?Ha(e.key):void 0;return R("div",Object.assign({class:`${o}-tree-node-wrapper`},c),R("div",Object.assign({},d?p:void 0,{class:[`${o}-tree-node`,{[`${o}-tree-node--selected`]:a,[`${o}-tree-node--checkable`]:t,[`${o}-tree-node--highlight`]:n,[`${o}-tree-node--pending`]:f,[`${o}-tree-node--disabled`]:u,[`${o}-tree-node--selectable`]:r},p==null?void 0:p.class],"data-key":T,draggable:i&&d,onClick:this.handleLineClick,onDragstart:i&&d&&!u?this.handleDragStart:void 0}),ws(e.level,R("div",{class:`${o}-tree-node-indent`,style:{flex:`0 0 ${s}px`}})),R(gw,{clsPrefix:o,expanded:this.expanded,loading:this.loading,hide:e.isLeaf,onClick:this.handleSwitcherClick}),t?R(ww,{focusable:this.checkboxFocusable,disabled:u||this.checkboxDisabled,clsPrefix:o,checked:this.checked,indeterminate:this.indeterminate,onCheck:this.handleCheck}):null,R(Tw,{ref:"contentInstRef",clsPrefix:o,checked:l,selected:a,onClick:this.handleContentClick,nodeProps:d?void 0:p,onDragstart:i&&!d&&!u?this.handleDragStart:void 0,tmNode:e}),i?this.showDropMark?np({el:this.contentElRef.value,position:this.droppingPosition,offsetLevel:this.droppingOffsetLevel,indent:s}):this.showDropMarkAsParent?np({el:this.contentElRef.value,position:"inside",offsetLevel:this.droppingOffsetLevel,indent:s}):null:null))}}),md=tP;function Fw(e,o,t,r){e==null||e.forEach(a=>{t(a),Fw(a[o],o,t,r),r(a)})}function Ow(e,o,t,r,a){let l=new Set,n=new Set,i=[];return Fw(e,r,d=>{if(i.push(d),a(o,d)){n.add(d[t]);for(let s=i.length-2;s>=0;--s)if(!l.has(i[s][t]))l.add(i[s][t]);else return}},()=>{i.pop()}),{expandedKeys:Array.from(l),highlightKeySet:n}}var ip=null;if(typeof window!="undefined"&&Image){let e=new Image;e.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}function Cw(e,o,t,r,a){let l=new Set,n=new Set,i=new Set,d=[],s=[],u=[];function f(p){p.forEach(c=>{if(u.push(c),o(t,c)){l.add(c[r]),i.add(c[r]);for(let C=u.length-2;C>=0;--C){let g=u[C][r];if(!n.has(g))n.add(g),l.has(g)&&l.delete(g);else break}}let T=c[a];T&&f(T),u.pop()})}f(e);function m(p,c){p.forEach(T=>{let C=T[r],g=l.has(C),k=n.has(C);if(!g&&!k)return;let U=T[a];if(U)if(g)c.push(T);else{d.push(C);let F=Object.assign(Object.assign({},T),{[a]:[]});c.push(F),m(U,F[a])}else c.push(T)})}return m(e,s),{filteredTree:s,highlightKeySet:i,expandedKeys:d}}function bw({fNodesRef:e,mergedExpandedKeysRef:o,mergedSelectedKeysRef:t,handleSelect:r,handleSwitcherClick:a}){let{value:l}=t,n=Re(pd,null),i=n?n.pendingNodeKeyRef:Z(l.length?l[l.length-1]:null);function d(u){let{value:f}=i;if(f===null){if(["ArrowDown","ArrowUp","ArrowLeft","ArrowRight"].includes(u.code)&&f===null){let{value:m}=e,p=0;for(;pc.key===f);if(!~p)return;if(u.code==="Enter"||u.code==="NumpadEnter")r(m[p]);else if(u.code==="ArrowDown")for(p+=1;p=0;){if(!m[p].disabled){i.value=m[p].key;break}p-=1}else if(u.code==="ArrowLeft"){let c=m[p];if(c.isLeaf||!o.value.includes(f)){let T=c.getParent();T&&(i.value=T.key)}else a(c)}else if(u.code==="ArrowRight"){let c=m[p];if(c.isLeaf)return;if(!o.value.includes(f))a(c);else for(p+=1;pR("div",{class:[`${e}-tree-motion-wrapper`,`${e}-tree-motion-wrapper--${this.mode}`],style:{height:Pr(this.height)}},this.nodes.map(o=>R(md,{clsPrefix:e,tmNode:o})))})}});var vw=K("tree",` + `),uu()]),pi(G("slider",[G("slider-dot",{backgroundColor:"var(--n-dot-color-modal)"})])),mi(G("slider",[G("slider-dot",{backgroundColor:"var(--n-dot-color-popover)"})]))]);var oP=0,tP=Object.assign(Object.assign({},Fo.props),{to:pa.propTo,defaultValue:{type:[Number,Array],default:0},marks:Object,disabled:{type:Boolean,default:void 0},formatTooltip:Function,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:[Number,String],default:1},range:Boolean,value:[Number,Array],placement:String,showTooltip:{type:Boolean,default:void 0},tooltip:{type:Boolean,default:!0},vertical:Boolean,reverse:Boolean,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array]}),lp=le({name:"Slider",props:tP,setup(e){let{mergedClsPrefixRef:o,namespaceRef:t,inlineThemeDisabled:r}=Bo(e),a=Fo("Slider","-slider",gw,If,e,o),l=Z(null),[n,i]=ap(),[d,s]=ap(),u=Z(new Set),f=Rt(e),{mergedDisabledRef:c}=f,p=V(()=>{let{step:b}=e;if(b<=0||b==="mark")return 0;let N=b.toString(),z=0;return N.includes(".")&&(z=N.length-N.indexOf(".")-1),z}),x=Z(e.defaultValue),T=De(e,"value"),C=Zo(T,x),S=V(()=>{let{value:b}=C;return(e.range?b:[b]).map(Xe)}),D=V(()=>S.value.length>2),$=V(()=>e.placement===void 0?e.vertical?"right":"top":e.placement),O=V(()=>{let{marks:b}=e;return b?Object.keys(b).map(parseFloat):null}),g=Z(-1),v=Z(-1),w=Z(-1),F=Z(!1),B=Z(!1),y=V(()=>{let{vertical:b,reverse:N}=e;return b?N?"top":"bottom":N?"right":"left"}),W=V(()=>{if(D.value)return;let b=S.value,N=Qe(e.range?Math.min(...b):e.min),z=Qe(e.range?Math.max(...b):b[0]),{value:te}=y;return e.vertical?{[te]:`${N}%`,height:`${z-N}%`}:{[te]:`${N}%`,width:`${z-N}%`}}),_=V(()=>{let b=[],{marks:N}=e;if(N){let z=S.value.slice();z.sort((Le,Q)=>Le-Q);let{value:te}=y,{value:fe}=D,{range:Ce}=e,ye=fe?()=>!1:Le=>Ce?Le>=z[0]&&Le<=z[z.length-1]:Le<=z[0];for(let Le of Object.keys(N)){let Q=Number(Le);b.push({active:ye(Q),label:N[Le],style:{[te]:`${Qe(Q)}%`}})}}return b});function ae(b,N){let z=Qe(b),{value:te}=y;return{[te]:`${z}%`,zIndex:N===g.value?1:0}}function he(b){return e.showTooltip||w.value===b||g.value===b&&F.value}function Me(b){return!(g.value===b&&v.value===b)}function de(b){var N;~b&&(g.value=b,(N=n.value.get(b))===null||N===void 0||N.focus())}function ie(){d.value.forEach((b,N)=>{he(N)&&b.syncPosition()})}function ge(b){let{"onUpdate:value":N,onUpdateValue:z}=e,{nTriggerFormInput:te,nTriggerFormChange:fe}=f;z&&Re(z,b),N&&Re(N,b),x.value=b,te(),fe()}function Ve(b){let{range:N}=e;if(N){if(Array.isArray(b)){let{value:z}=S;b.join()!==z.join()&&ge(b)}}else Array.isArray(b)||S.value[0]!==b&&ge(b)}function Ke(b,N){if(e.range){let z=S.value.slice();z.splice(N,1,b),Ve(z)}else Ve(b)}function He(b,N,z){let te=z!==void 0;z||(z=b-N>0?1:-1);let fe=O.value||[],{step:Ce}=e;if(Ce==="mark"){let Q=Be(b,fe.concat(N),te?z:void 0);return Q?Q.value:N}if(Ce<=0)return N;let{value:ye}=p,Le;if(te){let Q=Number((N/Ce).toFixed(ye)),re=Math.floor(Q),Se=Q>re?re:re-1,_e=Q0)&&(te===null||ye0?1:-1),N)}function qe(b){var N,z;if(c.value||!rp(b)&&b.button!==oP)return;let te=We(b);if(te===void 0)return;let fe=S.value.slice(),Ce=e.range?(z=(N=Be(te,fe))===null||N===void 0?void 0:N.index)!==null&&z!==void 0?z:-1:0;Ce!==-1&&(b.preventDefault(),de(Ce),to(),Ke(He(te,S.value[Ce]),Ce))}function to(){F.value||(F.value=!0,So("touchend",document,h),So("mouseup",document,h),So("touchmove",document,m),So("mousemove",document,m))}function vo(){F.value&&(F.value=!1,xo("touchend",document,h),xo("mouseup",document,h),xo("touchmove",document,m),xo("mousemove",document,m))}function m(b){let{value:N}=g;if(!F.value||N===-1){vo();return}let z=We(b);Ke(He(z,S.value[N]),N)}function h(){vo()}function k(b){g.value=b,c.value||(w.value=b)}function E(b){g.value===b&&(g.value=-1,vo()),w.value===b&&(w.value=-1)}function I(b){w.value=b}function j(b){w.value===b&&(w.value=-1)}Ze(g,(b,N)=>void No(()=>v.value=N)),Ze(C,()=>{if(e.marks){if(B.value)return;B.value=!0,No(()=>{B.value=!1})}No(ie)});let U=V(()=>{let{self:{railColor:b,railColorHover:N,fillColor:z,fillColorHover:te,handleColor:fe,opacityDisabled:Ce,dotColor:ye,dotColorModal:Le,handleBoxShadow:Q,handleBoxShadowHover:re,handleBoxShadowActive:Se,handleBoxShadowFocus:_e,dotBorder:Je,dotBoxShadow:ze,railHeight:eo,railWidthVertical:Ge,handleSize:Go,dotHeight:ct,dotWidth:ll,dotBorderRadius:cr,fontSize:xr,dotBorderActive:Ra,dotColorPopover:nl},common:{cubicBezierEaseInOut:Fa}}=a.value;return{"--n-bezier":Fa,"--n-dot-border":Je,"--n-dot-border-active":Ra,"--n-dot-border-radius":cr,"--n-dot-box-shadow":ze,"--n-dot-color":ye,"--n-dot-color-modal":Le,"--n-dot-color-popover":nl,"--n-dot-height":ct,"--n-dot-width":ll,"--n-fill-color":z,"--n-fill-color-hover":te,"--n-font-size":xr,"--n-handle-box-shadow":Q,"--n-handle-box-shadow-active":Se,"--n-handle-box-shadow-focus":_e,"--n-handle-box-shadow-hover":re,"--n-handle-color":fe,"--n-handle-size":Go,"--n-opacity-disabled":Ce,"--n-rail-color":b,"--n-rail-color-hover":N,"--n-rail-height":eo,"--n-rail-width-vertical":Ge}}),L=r?Ko("slider",void 0,U,e):void 0,K=V(()=>{let{self:{fontSize:b,indicatorColor:N,indicatorBoxShadow:z,indicatorTextColor:te,indicatorBorderRadius:fe}}=a.value;return{"--n-font-size":b,"--n-indicator-border-radius":fe,"--n-indicator-box-shadow":z,"--n-indicator-color":N,"--n-indicator-text-color":te}}),H=r?Ko("slider-indicator",void 0,K,e):void 0;return{mergedClsPrefix:o,namespace:t,uncontrolledValue:x,mergedValue:C,mergedDisabled:c,mergedPlacement:$,isMounted:Er(),adjustedTo:pa(e),dotTransitionDisabled:B,markInfos:_,isShowTooltip:he,isSkipCSSDetection:Me,handleRailRef:l,setHandleRefs:i,setFollowerRefs:s,fillStyle:W,getHandleStyle:ae,activeIndex:g,arrifiedValues:S,followerEnabledIndexSet:u,handleRailMouseDown:qe,handleHandleFocus:k,handleHandleBlur:E,handleHandleMouseEnter:I,handleHandleMouseLeave:j,handleRailKeyDown:ho,indicatorCssVars:r?void 0:K,indicatorThemeClass:H==null?void 0:H.themeClass,indicatorOnRender:H==null?void 0:H.onRender,cssVars:r?void 0:U,themeClass:L==null?void 0:L.themeClass,onRender:L==null?void 0:L.onRender}},render(){var e;let{mergedClsPrefix:o,themeClass:t,formatTooltip:r}=this;return(e=this.onRender)===null||e===void 0||e.call(this),R("div",{class:[`${o}-slider`,t,{[`${o}-slider--disabled`]:this.mergedDisabled,[`${o}-slider--active`]:this.activeIndex!==-1,[`${o}-slider--with-mark`]:this.marks,[`${o}-slider--vertical`]:this.vertical,[`${o}-slider--reverse`]:this.reverse}],style:this.cssVars,onKeydown:this.handleRailKeyDown,onMousedown:this.handleRailMouseDown,onTouchstart:this.handleRailMouseDown},R("div",{class:`${o}-slider-rail`},R("div",{class:`${o}-slider-rail__fill`,style:this.fillStyle}),this.marks?R("div",{class:[`${o}-slider-dots`,this.dotTransitionDisabled&&`${o}-slider-dots--transition-disabled`]},this.markInfos.map(a=>R("div",{key:a.label,class:[`${o}-slider-dot`,{[`${o}-slider-dot--active`]:a.active}],style:a.style}))):null,R("div",{ref:"handleRailRef",class:`${o}-slider-handles`},this.arrifiedValues.map((a,l)=>{let n=this.isShowTooltip(l);return R(gi,null,{default:()=>[R(wi,null,{default:()=>R("div",{ref:this.setHandleRefs(l),class:`${o}-slider-handle`,tabindex:this.mergedDisabled?-1:0,style:this.getHandleStyle(a,l),onFocus:()=>this.handleHandleFocus(l),onBlur:()=>this.handleHandleBlur(l),onMouseenter:()=>this.handleHandleMouseEnter(l),onMouseleave:()=>this.handleHandleMouseLeave(l)})}),this.tooltip&&R(Ci,{ref:this.setFollowerRefs(l),show:n,to:this.adjustedTo,enabled:this.showTooltip&&!this.range||this.followerEnabledIndexSet.has(l),teleportDisabled:this.adjustedTo===pa.tdkey,placement:this.mergedPlacement,containerClass:this.namespace},{default:()=>R(kt,{name:"fade-in-scale-up-transition",appear:this.isMounted,css:this.isSkipCSSDetection(l),onEnter:()=>this.followerEnabledIndexSet.add(l),onAfterLeave:()=>this.followerEnabledIndexSet.delete(l)},{default:()=>{var i;return n?((i=this.indicatorOnRender)===null||i===void 0||i.call(this),R("div",{class:[`${o}-slider-handle-indicator`,this.indicatorThemeClass,`${o}-slider-handle-indicator--${this.mergedPlacement}`],style:this.indicatorCssVars},typeof r=="function"?r(a):a)):null}})})]})})),this.marks?R("div",{class:`${o}-slider-marks`},this.markInfos.map(a=>R("div",{key:a.label,class:`${o}-slider-mark`,style:a.style},a.label))):null))}});var fd=lo("n-tree-select");var Jt=lo("n-tree");var ww=le({name:"NTreeSwitcher",props:{clsPrefix:{type:String,required:!0},expanded:Boolean,hide:Boolean,loading:Boolean,onClick:Function},setup(e){let{renderSwitcherIconRef:o}=Te(Jt,null);return()=>{let{clsPrefix:t}=e;return R("span",{"data-switcher":!0,class:[`${t}-tree-node-switcher`,{[`${t}-tree-node-switcher--expanded`]:e.expanded,[`${t}-tree-node-switcher--hide`]:e.hide}],onClick:e.onClick},R("div",{class:`${t}-tree-node-switcher__icon`},R(Ct,null,{default:()=>{if(e.loading)return R(jr,{clsPrefix:t,key:"loading",radius:85,strokeWidth:20});let{value:r}=o;return r?r():R(bt,{clsPrefix:t,key:"switcher"},{default:()=>R(Xs,null)})}})))}}});var Tw=le({name:"NTreeNodeCheckbox",props:{clsPrefix:{type:String,required:!0},focusable:Boolean,disabled:Boolean,checked:Boolean,indeterminate:Boolean,onCheck:Function},setup(e){let o=Te(Jt);function t(a){let{onCheck:l}=e;if(l)return l(a)}function r(a){e.indeterminate?t(!1):t(a)}return{handleUpdateValue:r,mergedTheme:o.mergedThemeRef}},render(){let{clsPrefix:e,mergedTheme:o,checked:t,indeterminate:r,disabled:a,focusable:l,handleUpdateValue:n}=this;return R("span",{class:`${e}-tree-node-checkbox`,"data-checkbox":!0},R(Nu,{focusable:l,disabled:a,theme:o.peers.Checkbox,themeOverrides:o.peerOverrides.Checkbox,checked:t,indeterminate:r,onUpdateChecked:n}))}});var Rw=le({name:"TreeNodeContent",props:{clsPrefix:{type:String,required:!0},disabled:Boolean,checked:Boolean,selected:Boolean,onClick:Function,onDragstart:Function,tmNode:{type:Object,required:!0},nodeProps:Object},setup(e){let{renderLabelRef:o,renderPrefixRef:t,renderSuffixRef:r,labelFieldRef:a}=Te(Jt),l=Z(null);function n(d){let{onClick:s}=e;s&&s(d)}function i(d){n(d)}return{selfRef:l,renderLabel:o,renderPrefix:t,renderSuffix:r,labelField:a,handleClick:i}},render(){let{clsPrefix:e,labelField:o,nodeProps:t,checked:r=!1,selected:a=!1,renderLabel:l,renderPrefix:n,renderSuffix:i,handleClick:d,onDragstart:s,tmNode:{rawNode:u,rawNode:{prefix:f,suffix:c,[o]:p}}}=this;return R("span",Object.assign({},t,{ref:"selfRef",class:[`${e}-tree-node-content`,t==null?void 0:t.class],onClick:d,draggable:s===void 0?void 0:!0,onDragstart:s}),n||f?R("div",{class:`${e}-tree-node-content__prefix`},n?n({option:u,selected:a,checked:r}):Wa(f)):null,R("div",{class:`${e}-tree-node-content__text`},l?l({option:u,selected:a,checked:r}):Wa(p)),i||c?R("div",{class:`${e}-tree-node-content__suffix`},i?i({option:u,selected:a,checked:r}):Wa(c)):null)}});function np({position:e,offsetLevel:o,indent:t,el:r}){let a={position:"absolute",boxSizing:"border-box",right:0};if(e==="inside")a.left=0,a.top=0,a.bottom=0,a.borderRadius="inherit",a.boxShadow="inset 0 0 0 2px var(--n-drop-mark-color)";else{let l=e==="before"?"top":"bottom";a[l]=0,a.left=`${r.offsetLeft+6-o*t}px`,a.height="2px",a.backgroundColor="var(--n-drop-mark-color)",a.transformOrigin=l,a.borderRadius="1px",a.transform=e==="before"?"translateY(-4px)":"translateY(4px)"}return R("div",{style:a})}function Fw({dropPosition:e,node:o}){return o.isLeaf===!1||o.children?!0:e!=="inside"}var rP=le({name:"TreeNode",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(e){let o=Te(Jt),{droppingNodeParentRef:t,droppingMouseNodeRef:r,draggingNodeRef:a,droppingPositionRef:l,droppingOffsetLevelRef:n,nodePropsRef:i,indentRef:d,blockLineRef:s}=o,u=V(()=>o.disabledRef.value||e.tmNode.disabled),f=V(()=>{let{value:y}=i;if(!!y)return y({option:e.tmNode.rawNode})}),c=Z(null),p={value:null};fo(()=>{p.value=c.value.$el});function x(){let{tmNode:y}=e;if(!y.isLeaf&&!y.shallowLoaded){o.loadingKeysRef.value.has(y.key)||o.loadingKeysRef.value.add(y.key);let{onLoadRef:{value:W}}=o;W&&W(y.rawNode).then(()=>{o.handleSwitcherClick(y)}).finally(()=>{o.loadingKeysRef.value.delete(y.key)})}else o.handleSwitcherClick(y)}let T=Ye(()=>!e.tmNode.disabled&&o.selectableRef.value&&(o.internalTreeSelect?o.mergedCheckStrategyRef.value!=="child"||o.multipleRef.value&&o.cascadeRef.value||e.tmNode.isLeaf:!0));function C(y){!T.value||ri(y,"checkbox")||ri(y,"switcher")||o.handleSelect(e.tmNode)}function S(y){var W,_;s.value||(u.value||C(y),(_=(W=f.value)===null||W===void 0?void 0:W.onClick)===null||_===void 0||_.call(W,y))}function D(y){var W,_;!s.value||(u.value||C(y),(_=(W=f.value)===null||W===void 0?void 0:W.onClick)===null||_===void 0||_.call(W,y))}function $(y){o.handleCheck(e.tmNode,y)}function O(y){o.handleDragStart({event:y,node:e.tmNode})}function g(y){y.currentTarget===y.target&&o.handleDragEnter({event:y,node:e.tmNode})}function v(y){y.preventDefault(),o.handleDragOver({event:y,node:e.tmNode})}function w(y){o.handleDragEnd({event:y,node:e.tmNode})}function F(y){y.currentTarget===y.target&&o.handleDragLeave({event:y,node:e.tmNode})}function B(y){y.preventDefault(),l.value!==null&&o.handleDrop({event:y,node:e.tmNode,dropPosition:l.value})}return{showDropMark:Ye(()=>{let{value:y}=a;if(!y)return;let{value:W}=l;if(!W)return;let{value:_}=r;if(!_)return;let{tmNode:ae}=e;return ae.key===_.key}),showDropMarkAsParent:Ye(()=>{let{value:y}=t;if(!y)return!1;let{tmNode:W}=e,{value:_}=l;return _==="before"||_==="after"?y.key===W.key:!1}),pending:Ye(()=>o.pendingNodeKeyRef.value===e.tmNode.key),loading:Ye(()=>o.loadingKeysRef.value.has(e.tmNode.key)),highlight:Ye(()=>{var y;return(y=o.highlightKeySetRef.value)===null||y===void 0?void 0:y.has(e.tmNode.key)}),checked:Ye(()=>o.displayedCheckedKeysRef.value.includes(e.tmNode.key)),indeterminate:Ye(()=>o.displayedIndeterminateKeysRef.value.includes(e.tmNode.key)),selected:Ye(()=>o.mergedSelectedKeysRef.value.includes(e.tmNode.key)),expanded:Ye(()=>o.mergedExpandedKeysRef.value.includes(e.tmNode.key)),disabled:u,checkable:V(()=>o.checkableRef.value&&(o.cascadeRef.value||o.mergedCheckStrategyRef.value!=="child"||e.tmNode.isLeaf)),checkboxDisabled:V(()=>!!e.tmNode.rawNode.checkboxDisabled),selectable:T,internalScrollable:o.internalScrollableRef,draggable:o.draggableRef,blockLine:s,nodeProps:f,checkboxFocusable:o.internalCheckboxFocusableRef,droppingPosition:l,droppingOffsetLevel:n,indent:d,contentInstRef:c,contentElRef:p,handleCheck:$,handleDrop:B,handleDragStart:O,handleDragEnter:g,handleDragOver:v,handleDragEnd:w,handleDragLeave:F,handleLineClick:D,handleContentClick:S,handleSwitcherClick:x}},render(){let{tmNode:e,clsPrefix:o,checkable:t,selectable:r,selected:a,checked:l,highlight:n,draggable:i,blockLine:d,indent:s,disabled:u,pending:f,internalScrollable:c,nodeProps:p}=this,x=i&&!u?{onDragenter:this.handleDragEnter,onDragleave:this.handleDragLeave,onDragend:this.handleDragEnd,onDrop:this.handleDrop,onDragover:this.handleDragOver}:void 0,T=c?Va(e.key):void 0;return R("div",Object.assign({class:`${o}-tree-node-wrapper`},x),R("div",Object.assign({},d?p:void 0,{class:[`${o}-tree-node`,{[`${o}-tree-node--selected`]:a,[`${o}-tree-node--checkable`]:t,[`${o}-tree-node--highlight`]:n,[`${o}-tree-node--pending`]:f,[`${o}-tree-node--disabled`]:u,[`${o}-tree-node--selectable`]:r},p==null?void 0:p.class],"data-key":T,draggable:i&&d,onClick:this.handleLineClick,onDragstart:i&&d&&!u?this.handleDragStart:void 0}),ws(e.level,R("div",{class:`${o}-tree-node-indent`,style:{flex:`0 0 ${s}px`}})),R(ww,{clsPrefix:o,expanded:this.expanded,loading:this.loading,hide:e.isLeaf,onClick:this.handleSwitcherClick}),t?R(Tw,{focusable:this.checkboxFocusable,disabled:u||this.checkboxDisabled,clsPrefix:o,checked:this.checked,indeterminate:this.indeterminate,onCheck:this.handleCheck}):null,R(Rw,{ref:"contentInstRef",clsPrefix:o,checked:l,selected:a,onClick:this.handleContentClick,nodeProps:d?void 0:p,onDragstart:i&&!d&&!u?this.handleDragStart:void 0,tmNode:e}),i?this.showDropMark?np({el:this.contentElRef.value,position:this.droppingPosition,offsetLevel:this.droppingOffsetLevel,indent:s}):this.showDropMarkAsParent?np({el:this.contentElRef.value,position:"inside",offsetLevel:this.droppingOffsetLevel,indent:s}):null:null))}}),pd=rP;function Ow(e,o,t,r){e==null||e.forEach(a=>{t(a),Ow(a[o],o,t,r),r(a)})}function Cw(e,o,t,r,a){let l=new Set,n=new Set,i=[];return Ow(e,r,d=>{if(i.push(d),a(o,d)){n.add(d[t]);for(let s=i.length-2;s>=0;--s)if(!l.has(i[s][t]))l.add(i[s][t]);else return}},()=>{i.pop()}),{expandedKeys:Array.from(l),highlightKeySet:n}}var ip=null;if(typeof window!="undefined"&&Image){let e=new Image;e.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}function bw(e,o,t,r,a){let l=new Set,n=new Set,i=new Set,d=[],s=[],u=[];function f(p){p.forEach(x=>{if(u.push(x),o(t,x)){l.add(x[r]),i.add(x[r]);for(let C=u.length-2;C>=0;--C){let S=u[C][r];if(!n.has(S))n.add(S),l.has(S)&&l.delete(S);else break}}let T=x[a];T&&f(T),u.pop()})}f(e);function c(p,x){p.forEach(T=>{let C=T[r],S=l.has(C),D=n.has(C);if(!S&&!D)return;let $=T[a];if($)if(S)x.push(T);else{d.push(C);let O=Object.assign(Object.assign({},T),{[a]:[]});x.push(O),c($,O[a])}else x.push(T)})}return c(e,s),{filteredTree:s,highlightKeySet:i,expandedKeys:d}}function yw({fNodesRef:e,mergedExpandedKeysRef:o,mergedSelectedKeysRef:t,handleSelect:r,handleSwitcherClick:a}){let{value:l}=t,n=Te(fd,null),i=n?n.pendingNodeKeyRef:Z(l.length?l[l.length-1]:null);function d(u){let{value:f}=i;if(f===null){if(["ArrowDown","ArrowUp","ArrowLeft","ArrowRight"].includes(u.code)&&f===null){let{value:c}=e,p=0;for(;px.key===f);if(!~p)return;if(u.code==="Enter"||u.code==="NumpadEnter")r(c[p]);else if(u.code==="ArrowDown")for(p+=1;p=0;){if(!c[p].disabled){i.value=c[p].key;break}p-=1}else if(u.code==="ArrowLeft"){let x=c[p];if(x.isLeaf||!o.value.includes(f)){let T=x.getParent();T&&(i.value=T.key)}else a(x)}else if(u.code==="ArrowRight"){let x=c[p];if(x.isLeaf)return;if(!o.value.includes(f))a(x);else for(p+=1;pR("div",{class:[`${e}-tree-motion-wrapper`,`${e}-tree-motion-wrapper--${this.mode}`],style:{height:Br(this.height)}},this.nodes.map(o=>R(pd,{clsPrefix:e,tmNode:o})))})}});var kw=G("tree",` font-size: var(--n-font-size); outline: none; -`,[X("ul, li",` +`,[Y("ul, li",` margin: 0; padding: 0; list-style: none; - `),X(">",[K("tree-node",[X("&:first-child",{marginTop:0})])]),K("tree-node-indent",` + `),Y(">",[G("tree-node",[Y("&:first-child",{marginTop:0})])]),G("tree-node-indent",` height: 0; - `),K("tree-motion-wrapper",[Se("expand",[mu({duration:"0.2s"})]),Se("collapse",[mu({duration:"0.2s",reverse:!0})])]),K("tree-node-wrapper",` + `),G("tree-motion-wrapper",[xe("expand",[mu({duration:"0.2s"})]),xe("collapse",[mu({duration:"0.2s",reverse:!0})])]),G("tree-node-wrapper",` box-sizing: border-box; padding: 3px 0; - `),K("tree-node",` + `),G("tree-node",` position: relative; display: flex; border-radius: var(--n-node-border-radius); transition: background-color .3s var(--n-bezier); - `,[Se("highlight",[K("tree-node-content",[J("text",{borderBottomColor:"var(--n-node-text-color-disabled)"})])]),Se("disabled",[K("tree-node-content",` + `,[xe("highlight",[G("tree-node-content",[X("text",{borderBottomColor:"var(--n-node-text-color-disabled)"})])]),xe("disabled",[G("tree-node-content",` color: var(--n-node-text-color-disabled); cursor: not-allowed; - `)]),rt("disabled",[Se("selectable",[K("tree-node-content",` + `)]),rt("disabled",[xe("selectable",[G("tree-node-content",` cursor: pointer; - `)])])]),Se("block-node",[K("tree-node-content",` + `)])])]),xe("block-node",[G("tree-node-content",` width: 100%; - `)]),rt("block-line",[K("tree-node",[rt("disabled",[K("tree-node-content",[X("&:hover",{backgroundColor:"var(--n-node-color-hover)"})]),Se("selectable",[K("tree-node-content",[X("&:active",{backgroundColor:"var(--n-node-color-pressed)"})])]),Se("pending",[K("tree-node-content",` + `)]),rt("block-line",[G("tree-node",[rt("disabled",[G("tree-node-content",[Y("&:hover",{backgroundColor:"var(--n-node-color-hover)"})]),xe("selectable",[G("tree-node-content",[Y("&:active",{backgroundColor:"var(--n-node-color-pressed)"})])]),xe("pending",[G("tree-node-content",` background-color: var(--n-node-color-hover); - `)]),Se("selected",[K("tree-node-content",{backgroundColor:"var(--n-node-color-active)"})])])])]),Se("block-line",[K("tree-node",[rt("disabled",[X("&:hover",{backgroundColor:"var(--n-node-color-hover)"}),Se("selectable",[X("&:active",{backgroundColor:"var(--n-node-color-pressed)"})]),Se("pending",` + `)]),xe("selected",[G("tree-node-content",{backgroundColor:"var(--n-node-color-active)"})])])])]),xe("block-line",[G("tree-node",[rt("disabled",[Y("&:hover",{backgroundColor:"var(--n-node-color-hover)"}),xe("selectable",[Y("&:active",{backgroundColor:"var(--n-node-color-pressed)"})]),xe("pending",` background-color: var(--n-node-color-hover); - `),Se("selected",{backgroundColor:"var(--n-node-color-active)"})]),Se("disabled",` + `),xe("selected",{backgroundColor:"var(--n-node-color-active)"})]),xe("disabled",` cursor: not-allowed; - `)])]),K("tree-node-switcher",` + `)])]),G("tree-node-switcher",` cursor: pointer; display: inline-flex; flex-shrink: 0; @@ -889,7 +889,7 @@ ${o} justify-content: center; transition: transform .15s var(--n-bezier); vertical-align: bottom; - `,[J("icon",` + `,[X("icon",` position: relative; height: 14px; width: 14px; @@ -897,14 +897,14 @@ ${o} color: var(--n-arrow-color); transition: color .3s var(--n-bezier); font-size: 14px; - `,[K("icon",[ut()]),K("base-loading",` + `,[G("icon",[ut()]),G("base-loading",` color: var(--n-loading-color); position: absolute; left: 0; top: 0; right: 0; bottom: 0; - `,[ut()]),K("base-icon",[ut()])]),Se("hide",{visibility:"hidden"}),Se("expanded",{transform:"rotate(90deg)"})]),K("tree-node-checkbox",` + `,[ut()]),G("base-icon",[ut()])]),xe("hide",{visibility:"hidden"}),xe("expanded",{transform:"rotate(90deg)"})]),G("tree-node-checkbox",` display: inline-flex; height: 24px; width: 16px; @@ -912,9 +912,9 @@ ${o} align-items: center; justify-content: center; margin-right: 4px; - `),Se("checkable",[K("tree-node-content",` + `),xe("checkable",[G("tree-node-content",` padding: 0 6px; - `)]),K("tree-node-content",` + `)]),G("tree-node-content",` position: relative; display: inline-flex; align-items: center; @@ -933,41 +933,41 @@ ${o} text-decoration-color .3s var(--n-bezier), background-color .3s var(--n-bezier), border-color .3s var(--n-bezier); - `,[X("&:last-child",{marginBottom:0}),J("prefix",` + `,[Y("&:last-child",{marginBottom:0}),X("prefix",` display: inline-flex; margin-right: 8px; - `),J("text",` + `),X("text",` border-bottom: 1px solid #0000; transition: border-color .3s var(--n-bezier); flex-grow:1; - `),J("suffix",` + `),X("suffix",` display: inline-flex; - `)]),J("empty","margin: auto;")]);var rP=function(e,o,t,r){function a(l){return l instanceof t?l:new t(function(n){n(l)})}return new(t||(t=Promise))(function(l,n){function i(u){try{s(r.next(u))}catch(f){n(f)}}function d(u){try{s(r.throw(u))}catch(f){n(f)}}function s(u){u.done?l(u.value):a(u.value).then(i,d)}s((r=r.apply(e,o||[])).next())})},cd=30;function aP(e,o){return{getKey(t){return t[e]},getChildren(t){return t[o]},getDisabled(t){return!!(t.disabled||t.checkboxDisabled)}}}var lP={allowCheckingNotLoaded:Boolean,filter:Function,defaultExpandAll:Boolean,expandedKeys:Array,keyField:{type:String,default:"key"},labelField:{type:String,default:"label"},childrenField:{type:String,default:"children"},defaultExpandedKeys:{type:Array,default:()=>[]},indeterminateKeys:Array,onUpdateIndeterminateKeys:[Function,Array],"onUpdate:indeterminateKeys":[Function,Array],onUpdateExpandedKeys:[Function,Array],"onUpdate:expandedKeys":[Function,Array]},nP=Object.assign(Object.assign(Object.assign(Object.assign({},Oo.props),{showIrrelevantNodes:{type:Boolean,default:!0},data:{type:Array,default:()=>[]},expandOnDragenter:{type:Boolean,default:!0},cancelable:{type:Boolean,default:!0},checkable:Boolean,draggable:Boolean,blockNode:Boolean,blockLine:Boolean,disabled:Boolean,checkedKeys:Array,defaultCheckedKeys:{type:Array,default:()=>[]},selectedKeys:Array,defaultSelectedKeys:{type:Array,default:()=>[]},multiple:Boolean,pattern:{type:String,default:""},onLoad:Function,cascade:Boolean,selectable:{type:Boolean,default:!0},indent:{type:Number,default:16},allowDrop:{type:Function,default:Rw},animated:{type:Boolean,default:!0},virtualScroll:Boolean,watchProps:Array,renderLabel:Function,renderPrefix:Function,renderSuffix:Function,renderSwitcherIcon:Function,nodeProps:Function,onDragenter:[Function,Array],onDragleave:[Function,Array],onDragend:[Function,Array],onDragstart:[Function,Array],onDragover:[Function,Array],onDrop:[Function,Array],onUpdateCheckedKeys:[Function,Array],"onUpdate:checkedKeys":[Function,Array],onUpdateSelectedKeys:[Function,Array],"onUpdate:selectedKeys":[Function,Array]}),lP),{internalTreeSelect:Boolean,internalScrollable:Boolean,internalScrollablePadding:String,internalRenderEmpty:Function,internalHighlightKeySet:Object,internalUnifySelectCheck:Boolean,internalCheckboxFocusable:{type:Boolean,default:!0},internalFocusable:{type:Boolean,default:!0},checkStrategy:{type:String,default:"all"},leafOnly:Boolean}),dp=ie({name:"Tree",props:nP,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Bo(e),r=Oo("Tree","-tree",vw,Qf,e,o),a=Z(null),l=Z(null),n=Z(null);function i(){var M;return(M=n.value)===null||M===void 0?void 0:M.listElRef}function d(){var M;return(M=n.value)===null||M===void 0?void 0:M.itemsElRef}let s=z(()=>{let{pattern:M}=e;return M?!M.length||!ro.value?{filteredTree:e.data,highlightKeySet:null,expandedKeys:void 0}:Cw(e.data,ro.value,M,e.keyField,e.childrenField):{filteredTree:e.data,highlightKeySet:null,expandedKeys:void 0}}),u=z(()=>lu(e.showIrrelevantNodes?e.data:s.value.filteredTree,aP(e.keyField,e.childrenField))),f=Re(pd,null),m=e.internalTreeSelect?f.dataTreeMate:u,{watchProps:p}=e,c=Z([]);(p==null?void 0:p.includes("defaultCheckedKeys"))?Mo(()=>{c.value=e.defaultCheckedKeys}):c.value=e.defaultCheckedKeys;let T=Be(e,"checkedKeys"),C=Zo(T,c),g=z(()=>m.value.getCheckedKeys(C.value,{cascade:e.cascade,allowNotLoaded:e.allowCheckingNotLoaded})),k=z(()=>e.leafOnly?"child":e.checkStrategy),U=z(()=>g.value.checkedKeys),F=z(()=>{let{indeterminateKeys:M}=e;return M!==void 0?M:g.value.indeterminateKeys}),w=Z([]);(p==null?void 0:p.includes("defaultSelectedKeys"))?Mo(()=>{w.value=e.defaultSelectedKeys}):w.value=e.defaultSelectedKeys;let y=Be(e,"selectedKeys"),S=Zo(y,w),O=Z([]),L=M=>{O.value=e.defaultExpandAll?m.value.getNonLeafKeys():M===void 0?e.defaultExpandedKeys:M};(p==null?void 0:p.includes("defaultExpandedKeys"))?Mo(()=>L(void 0)):Mo(()=>L(e.defaultExpandedKeys));let b=Be(e,"expandedKeys"),W=Zo(b,O),B=z(()=>u.value.getFlattenedNodes(W.value)),{pendingNodeKeyRef:ne,handleKeyup:ge,handleKeydown:Pe}=bw({mergedSelectedKeysRef:S,fNodesRef:B,mergedExpandedKeysRef:W,handleSelect:oo,handleSwitcherClick:$e}),ue=null,se=null,Te=Z(new Set),je=z(()=>e.internalHighlightKeySet||s.value.highlightKeySet),Ge=Zo(je,Te),ze=Z(new Set),Ze=z(()=>W.value.filter(M=>!ze.value.has(M))),Ye=0,ho=Z(null),ko=Z(null),He=Z(null),Ie=Z(null),fo=Z(0),Ce=z(()=>{let{value:M}=ko;return M?M.parent:null}),ro=z(()=>{let{filter:M}=e;if(M)return M;let{labelField:G}=e;return(de,fe)=>de.length?fe[G].toLowerCase().includes(de.toLowerCase()):!0});Xe(Be(e,"data"),()=>{ze.value.clear(),ne.value=null,Ee()},{deep:!1});let E;Xe(Be(e,"pattern"),(M,G)=>{if(e.showIrrelevantNodes)if(E=void 0,M){let{expandedKeys:de,highlightKeySet:fe}=Ow(e.data,e.pattern,e.keyField,e.childrenField,ro.value);Te.value=fe,I(de,Y(de))}else Te.value=new Set;else if(!M.length)E!==void 0&&I(E,Y(E));else{G.length||(E=W.value);let{expandedKeys:de}=s.value;de!==void 0&&I(de,Y(de))}});function le(M){return rP(this,void 0,void 0,function*(){let{onLoad:G}=e;if(!G)return yield Promise.resolve();let{value:de}=ze;return yield new Promise(fe=>{de.has(M.key)||(de.add(M.key),G(M.rawNode).then(()=>{de.delete(M.key),fe()}).catch(_e=>{console.error(_e),we()}))})})}Mo(()=>{var M;let{value:G}=u;if(!G)return;let{getNode:de}=G;(M=W.value)===null||M===void 0||M.forEach(fe=>{let _e=de(fe);_e&&!_e.shallowLoaded&&le(_e)})});let x=Z(!1),h=Z([]);Xe(Ze,(M,G)=>{if(!e.animated){No(H);return}let de=new Set(G),fe=null,_e=null;for(let Ao of M)if(!de.has(Ao)){if(fe!==null)return;fe=Ao}let Eo=new Set(M);for(let Ao of G)if(!Eo.has(Ao)){if(_e!==null)return;_e=Ao}if(fe!==null&&_e!==null||fe===null&&_e===null)return;let{virtualScroll:To}=e,tr=(To?n.value.listElRef:a.value).offsetHeight,rr=Math.ceil(tr/cd)+1;if(fe!==null){x.value=!0,h.value=u.value.getFlattenedNodes(G);let Ao=h.value.findIndex(Po=>Po.key===fe);if(~Ao){let Po=el(h.value[Ao].children,M);h.value.splice(Ao+1,0,{__motion:!0,mode:"expand",height:To?Po.length*cd:void 0,nodes:To?Po.slice(0,rr):Po})}}if(_e!==null){h.value=u.value.getFlattenedNodes(M);let Ao=h.value.findIndex(Po=>Po.key===_e);if(~Ao){let Po=h.value[Ao].children;if(!Po)return;x.value=!0;let lt=el(Po,M);h.value.splice(Ao+1,0,{__motion:!0,mode:"collapse",height:To?lt.length*cd:void 0,nodes:To?lt.slice(0,rr):lt})}}});let P=z(()=>ru(B.value)),N=z(()=>x.value?h.value:B.value);function H(){let{value:M}=l;M&&M.sync()}function $(){x.value=!1,e.virtualScroll&&No(H)}function Y(M){let{getNode:G}=m.value;return M.map(de=>{var fe;return((fe=G(de))===null||fe===void 0?void 0:fe.rawNode)||null})}function I(M,G){let{"onUpdate:expandedKeys":de,onUpdateExpandedKeys:fe}=e;O.value=M,de&&Fe(de,M,G),fe&&Fe(fe,M,G)}function V(M,G){let{"onUpdate:checkedKeys":de,onUpdateCheckedKeys:fe}=e;c.value=M,fe&&Fe(fe,M,G),de&&Fe(de,M,G)}function q(M,G){let{"onUpdate:indeterminateKeys":de,onUpdateIndeterminateKeys:fe}=e;de&&Fe(de,M,G),fe&&Fe(fe,M,G)}function A(M,G){let{"onUpdate:selectedKeys":de,onUpdateSelectedKeys:fe}=e;w.value=M,fe&&Fe(fe,M,G),de&&Fe(de,M,G)}function _(M){let{onDragenter:G}=e;G&&Fe(G,M)}function j(M){let{onDragleave:G}=e;G&&Fe(G,M)}function re(M){let{onDragend:G}=e;G&&Fe(G,M)}function me(M){let{onDragstart:G}=e;G&&Fe(G,M)}function ye(M){let{onDragover:G}=e;G&&Fe(G,M)}function ke(M){let{onDrop:G}=e;G&&Fe(G,M)}function Ee(){Q(),ae()}function Q(){ho.value=null}function ae(){fo.value=0,ko.value=null,He.value=null,Ie.value=null,we()}function we(){ue&&(window.clearTimeout(ue),ue=null),se=null}function We(M,G){if(e.disabled||M.disabled)return;if(e.internalUnifySelectCheck&&!e.multiple){oo(M);return}let{checkedKeys:de,indeterminateKeys:fe}=m.value[G?"check":"uncheck"](M.key,U.value,{cascade:e.cascade,checkStrategy:k.value,allowNotLoaded:e.allowCheckingNotLoaded});V(de,Y(de)),q(fe,Y(fe))}function eo(M){if(e.disabled)return;let{value:G}=W,de=G.findIndex(fe=>fe===M);if(~de){let fe=Array.from(G);fe.splice(de,1),I(fe,Y(fe))}else{let fe=u.value.getNode(M);if(!fe||fe.isLeaf)return;let _e=G.concat(M);I(_e,Y(_e))}}function $e(M){e.disabled||x.value||eo(M.key)}function oo(M){if(!(e.disabled||!e.selectable)){if(ne.value=M.key,e.internalUnifySelectCheck){let{value:{checkedKeys:G,indeterminateKeys:de}}=g;e.multiple?We(M,!(G.includes(M.key)||de.includes(M.key))):V([M.key],Y([M.key]))}if(e.multiple){let G=Array.from(S.value),de=G.findIndex(fe=>fe===M.key);~de?e.cancelable&&G.splice(de,1):~de||G.push(M.key),A(G,Y(G))}else S.value.includes(M.key)?e.cancelable&&A([],[]):A([M.key],Y([M.key]))}}function Qe(M){if(ue&&(window.clearTimeout(ue),ue=null),M.isLeaf)return;se=M.key;let G=()=>{if(se!==M.key)return;let{value:de}=He;if(de&&de.key===M.key&&!W.value.includes(M.key)){let fe=W.value.concat(M.key);I(fe,Y(fe))}ue=null,se=null};M.shallowLoaded?ue=window.setTimeout(()=>{G()},1e3):ue=window.setTimeout(()=>{le(M).then(()=>{G()})},1e3)}function Go({event:M,node:G}){!e.draggable||e.disabled||G.disabled||(wa({event:M,node:G},!1),_({event:M,node:G.rawNode}))}function ct({event:M,node:G}){!e.draggable||e.disabled||G.disabled||j({event:M,node:G.rawNode})}function al(M){M.target===M.currentTarget&&ae()}function mr({event:M,node:G}){Ee(),!(!e.draggable||e.disabled||G.disabled)&&re({event:M,node:G.rawNode})}function cr({event:M,node:G}){var de;!e.draggable||e.disabled||G.disabled||(ip&&((de=M.dataTransfer)===null||de===void 0||de.setDragImage(ip,0,0)),Ye=M.clientX,ho.value=G,me({event:M,node:G.rawNode}))}function wa({event:M,node:G},de=!0){var fe;if(!e.draggable||e.disabled||G.disabled)return;let{value:_e}=ho;if(!_e)return;let{allowDrop:Eo,indent:To}=e;de&&ye({event:M,node:G.rawNode});let tr=M.currentTarget,{height:rr,top:Ao}=tr.getBoundingClientRect(),Po=M.clientY-Ao,lt;Eo({node:G.rawNode,dropPosition:"inside",phase:"drag"})?Po<=8?lt="before":Po>=rr-8?lt="after":lt="inside":Po<=rr/2?lt="before":lt="after";let{value:bd}=P,to,Vo,nl=bd(G.key);if(nl===null){ae();return}let Rn=!1;lt==="inside"?(to=G,Vo="inside"):lt==="before"?G.isFirstChild?(to=G,Vo="before"):(to=B.value[nl-1],Vo="after"):(to=G,Vo="after"),!to.isLeaf&&W.value.includes(to.key)&&(Rn=!0,Vo==="after"&&(to=B.value[nl+1],to?Vo="before":(to=G,Vo="inside")));let Fn=to;if(He.value=Fn,!Rn&&_e.isLastChild&&_e.key===to.key&&(Vo="after"),Vo==="after"){let On=Ye-M.clientX,il=0;for(;On>=To/2&&to.parent!==null&&to.isLastChild&&il<1;)On-=To,il+=1,to=to.parent;fo.value=il}else fo.value=0;if((_e.contains(to)||Vo==="inside"&&((fe=_e.parent)===null||fe===void 0?void 0:fe.key)===to.key)&&!(_e.key===Fn.key&&_e.key===to.key)){ae();return}if(!Eo({node:to.rawNode,dropPosition:Vo,phase:"drag"})){ae();return}if(_e.key===to.key)we();else if(se!==to.key)if(Vo==="inside"){if(e.expandOnDragenter){if(Qe(to),!to.shallowLoaded&&se!==to.key){Ee();return}}else if(!to.shallowLoaded){Ee();return}}else we();else Vo!=="inside"&&we();Ie.value=Vo,ko.value=to}function ll({event:M,node:G,dropPosition:de}){if(!e.draggable||e.disabled||G.disabled)return;let{value:fe}=ho,{value:_e}=ko,{value:Eo}=Ie;if(!(!fe||!_e||!Eo)&&!!e.allowDrop({node:_e.rawNode,dropPosition:Eo,phase:"drag"})&&fe.key!==_e.key){if(Eo==="before"){let To=fe.getNext({includeDisabled:!0});if(To&&To.key===_e.key){ae();return}}if(Eo==="after"){let To=fe.getPrev({includeDisabled:!0});if(To&&To.key===_e.key){ae();return}}ke({event:M,node:_e.rawNode,dragNode:fe.rawNode,dropPosition:de}),Ee()}}function Ta(){H()}function xr(){H()}function v(M){var G;if(e.virtualScroll||e.internalScrollable){let{value:de}=l;if((G=de==null?void 0:de.containerRef)===null||G===void 0?void 0:G.contains(M.relatedTarget))return;ne.value=null}else{let{value:de}=a;if(de==null?void 0:de.contains(M.relatedTarget))return;ne.value=null}}Xe(ne,M=>{var G,de;if(M!==null){if(e.virtualScroll)(G=n.value)===null||G===void 0||G.scrollTo({key:M});else if(e.internalScrollable){let{value:fe}=l;if(fe===null)return;let _e=(de=fe.contentRef)===null||de===void 0?void 0:de.querySelector(`[data-key="${Ha(M)}"]`);if(!_e)return;fe.scrollTo({el:_e})}}}),qo(Jt,{loadingKeysRef:ze,highlightKeySetRef:Ge,displayedCheckedKeysRef:U,displayedIndeterminateKeysRef:F,mergedSelectedKeysRef:S,mergedExpandedKeysRef:W,mergedThemeRef:r,mergedCheckStrategyRef:k,nodePropsRef:Be(e,"nodeProps"),disabledRef:Be(e,"disabled"),checkableRef:Be(e,"checkable"),selectableRef:Be(e,"selectable"),onLoadRef:Be(e,"onLoad"),draggableRef:Be(e,"draggable"),blockLineRef:Be(e,"blockLine"),indentRef:Be(e,"indent"),cascadeRef:Be(e,"cascade"),droppingMouseNodeRef:He,droppingNodeParentRef:Ce,draggingNodeRef:ho,droppingPositionRef:Ie,droppingOffsetLevelRef:fo,fNodesRef:B,pendingNodeKeyRef:ne,internalScrollableRef:Be(e,"internalScrollable"),internalCheckboxFocusableRef:Be(e,"internalCheckboxFocusable"),internalTreeSelect:e.internalTreeSelect,renderLabelRef:Be(e,"renderLabel"),renderPrefixRef:Be(e,"renderPrefix"),renderSuffixRef:Be(e,"renderSuffix"),renderSwitcherIconRef:Be(e,"renderSwitcherIcon"),labelFieldRef:Be(e,"labelField"),multipleRef:Be(e,"multiple"),handleSwitcherClick:$e,handleDragEnd:mr,handleDragEnter:Go,handleDragLeave:ct,handleDragStart:cr,handleDrop:ll,handleDragOver:wa,handleSelect:oo,handleCheck:We});let oe={handleKeydown:Pe,handleKeyup:ge},De=z(()=>{let{common:{cubicBezierEaseInOut:M},self:{fontSize:G,nodeBorderRadius:de,nodeColorHover:fe,nodeColorPressed:_e,nodeColorActive:Eo,arrowColor:To,loadingColor:tr,nodeTextColor:rr,nodeTextColorDisabled:Ao,dropMarkColor:Po}}=r.value;return{"--n-arrow-color":To,"--n-loading-color":tr,"--n-bezier":M,"--n-font-size":G,"--n-node-border-radius":de,"--n-node-color-active":Eo,"--n-node-color-hover":fe,"--n-node-color-pressed":_e,"--n-node-text-color":rr,"--n-node-text-color-disabled":Ao,"--n-drop-mark-color":Po}}),po=t?Ko("tree",void 0,De,e):void 0;return{mergedClsPrefix:o,mergedTheme:r,fNodes:N,aip:x,selfElRef:a,virtualListInstRef:n,scrollbarInstRef:l,handleFocusout:v,handleDragLeaveTree:al,handleScroll:Ta,getScrollContainer:i,getScrollContent:d,handleAfterEnter:$,handleResize:xr,handleKeydown:oe.handleKeydown,handleKeyup:oe.handleKeyup,cssVars:t?void 0:De,themeClass:po==null?void 0:po.themeClass,onRender:po==null?void 0:po.onRender}},render(){var e;let{fNodes:o,internalRenderEmpty:t}=this;if(!o.length&&t)return t();let{mergedClsPrefix:r,blockNode:a,blockLine:l,draggable:n,disabled:i,internalFocusable:d,checkable:s,handleKeyup:u,handleKeydown:f,handleFocusout:m}=this,p=d&&!i,c=p?"0":void 0,T=[`${r}-tree`,s&&`${r}-tree--checkable`,(l||a)&&`${r}-tree--block-node`,l&&`${r}-tree--block-line`],C=k=>"__motion"in k?R(yw,{height:k.height,nodes:k.nodes,clsPrefix:r,mode:k.mode,onAfterEnter:this.handleAfterEnter}):R(md,{key:k.key,tmNode:k,clsPrefix:r});if(this.virtualScroll){let{mergedTheme:k,internalScrollablePadding:U}=this,F=Na(U||"0");return R(en,{ref:"scrollbarInstRef",onDragleave:n?this.handleDragLeaveTree:void 0,container:this.getScrollContainer,content:this.getScrollContent,class:T,theme:k.peers.Scrollbar,themeOverrides:k.peerOverrides.Scrollbar,tabindex:c,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?m:void 0},{default:()=>{var w;return(w=this.onRender)===null||w===void 0||w.call(this),R(Hl,{ref:"virtualListInstRef",items:this.fNodes,itemSize:cd,ignoreItemResize:this.aip,paddingTop:F.top,paddingBottom:F.bottom,class:this.themeClass,style:[this.cssVars,{paddingLeft:F.left,paddingRight:F.right}],onScroll:this.handleScroll,onResize:this.handleResize,showScrollbar:!1,itemResizable:!0},{default:({item:y})=>C(y)})}})}let{internalScrollable:g}=this;return T.push(this.themeClass),(e=this.onRender)===null||e===void 0||e.call(this),g?R(en,{class:T,tabindex:c,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?m:void 0,style:this.cssVars,contentStyle:{padding:this.internalScrollablePadding}},{default:()=>R("div",{onDragleave:n?this.handleDragLeaveTree:void 0,ref:"selfElRef"},this.fNodes.map(C))}):R("div",{class:T,tabindex:c,ref:"selfElRef",style:this.cssVars,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?m:void 0,onDragleave:n?this.handleDragLeaveTree:void 0},o.length?o.map(C):Ut(this.$slots.empty,()=>{var k,U,F,w;return[R(iu,{class:`${r}-tree__empty`,theme:(U=(k=this.theme)===null||k===void 0?void 0:k.peers)===null||U===void 0?void 0:U.Empty,themeOverrides:(w=(F=this.themeOverrides)===null||F===void 0?void 0:F.peers)===null||w===void 0?void 0:w.Empty})]}))}});var xd={name:"dark",common:D,Alert:pu,Anchor:cu,AutoComplete:gu,Avatar:an,AvatarGroup:wu,BackTop:Tu,Badge:Ru,Breadcrumb:Fu,Button:so,ButtonGroup:hf,Calendar:yu,Card:nn,Carousel:Pu,Cascader:Lu,Checkbox:Mt,Code:dn,Collapse:_u,CollapseTransition:Iu,ColorPicker:ku,DataTable:Gu,DatePicker:ef,Descriptions:of,Dialog:hn,Divider:nf,Drawer:sf,Dropdown:cn,DynamicInput:uf,DynamicTags:ff,Element:pf,Empty:pt,Ellipsis:pn,Form:mf,GradientText:cf,Icon:Zu,IconWrapper:xf,Image:op,Input:wo,InputNumber:Sf,Layout:gf,List:wf,LoadingBar:Tf,Log:Rf,Menu:Cf,Mention:Ff,Message:bf,Modal:lf,Notification:vf,PageHeader:Af,Pagination:un,Popconfirm:Pf,Popover:Xo,Popselect:Mf,Progress:gn,Radio:mn,Rate:Ef,Result:Nf,Scrollbar:io,Select:sn,Skeleton:tp,Slider:_f,Space:Sn,Spin:Hf,Statistic:Wf,Steps:Vf,Switch:zf,Table:jf,Tabs:$f,Tag:on,Thing:Uf,TimePicker:xn,Timeline:Kf,Tooltip:Xt,Transfer:Gf,Tree:wn,TreeSelect:Zf,Typography:Yf,Upload:Jf,Watermark:ep};function iP(e){let o=0;for(let t=0;t{let a=iP(r);if(a){if(a===1){e.forEach(n=>{t.push(r.replace("&",n))});return}}else{e.forEach(n=>{t.push((n&&n+" ")+r)});return}let l=[r];for(;a--;){let n=[];l.forEach(i=>{e.forEach(d=>{n.push(i.replace("&",d))})}),l=n}l.forEach(n=>t.push(n))}),t}function uP(e,o){let t=[];return o.split(kw).forEach(r=>{e.forEach(a=>{t.push((a&&a+" ")+r)})}),t}function Aw(e){let o=[""];return e.forEach(t=>{t=t&&t.trim(),!!t&&(t.includes("&")?o=sP(o,t):o=uP(o,t))}),o.join(", ").replace(dP," ")}var fP=/[A-Z]/g;function Dw(e){return e.replace(fP,o=>"-"+o.toLowerCase())}function pP(e,o=" "){return typeof e=="object"&&e!==null?` { -`+Object.entries(e).map(t=>o+` ${Dw(t[0])}: ${t[1]};`).join(` + `)]),X("empty","margin: auto;")]);var aP=function(e,o,t,r){function a(l){return l instanceof t?l:new t(function(n){n(l)})}return new(t||(t=Promise))(function(l,n){function i(u){try{s(r.next(u))}catch(f){n(f)}}function d(u){try{s(r.throw(u))}catch(f){n(f)}}function s(u){u.done?l(u.value):a(u.value).then(i,d)}s((r=r.apply(e,o||[])).next())})},md=30;function lP(e,o){return{getKey(t){return t[e]},getChildren(t){return t[o]},getDisabled(t){return!!(t.disabled||t.checkboxDisabled)}}}var nP={allowCheckingNotLoaded:Boolean,filter:Function,defaultExpandAll:Boolean,expandedKeys:Array,keyField:{type:String,default:"key"},labelField:{type:String,default:"label"},childrenField:{type:String,default:"children"},defaultExpandedKeys:{type:Array,default:()=>[]},indeterminateKeys:Array,onUpdateIndeterminateKeys:[Function,Array],"onUpdate:indeterminateKeys":[Function,Array],onUpdateExpandedKeys:[Function,Array],"onUpdate:expandedKeys":[Function,Array]},iP=Object.assign(Object.assign(Object.assign(Object.assign({},Fo.props),{showIrrelevantNodes:{type:Boolean,default:!0},data:{type:Array,default:()=>[]},expandOnDragenter:{type:Boolean,default:!0},cancelable:{type:Boolean,default:!0},checkable:Boolean,draggable:Boolean,blockNode:Boolean,blockLine:Boolean,disabled:Boolean,checkedKeys:Array,defaultCheckedKeys:{type:Array,default:()=>[]},selectedKeys:Array,defaultSelectedKeys:{type:Array,default:()=>[]},multiple:Boolean,pattern:{type:String,default:""},onLoad:Function,cascade:Boolean,selectable:{type:Boolean,default:!0},indent:{type:Number,default:16},allowDrop:{type:Function,default:Fw},animated:{type:Boolean,default:!0},virtualScroll:Boolean,watchProps:Array,renderLabel:Function,renderPrefix:Function,renderSuffix:Function,renderSwitcherIcon:Function,nodeProps:Function,onDragenter:[Function,Array],onDragleave:[Function,Array],onDragend:[Function,Array],onDragstart:[Function,Array],onDragover:[Function,Array],onDrop:[Function,Array],onUpdateCheckedKeys:[Function,Array],"onUpdate:checkedKeys":[Function,Array],onUpdateSelectedKeys:[Function,Array],"onUpdate:selectedKeys":[Function,Array]}),nP),{internalTreeSelect:Boolean,internalScrollable:Boolean,internalScrollablePadding:String,internalRenderEmpty:Function,internalHighlightKeySet:Object,internalUnifySelectCheck:Boolean,internalCheckboxFocusable:{type:Boolean,default:!0},internalFocusable:{type:Boolean,default:!0},checkStrategy:{type:String,default:"all"},leafOnly:Boolean}),dp=le({name:"Tree",props:iP,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Bo(e),r=Fo("Tree","-tree",kw,Qf,e,o),a=Z(null),l=Z(null),n=Z(null);function i(){var M;return(M=n.value)===null||M===void 0?void 0:M.listElRef}function d(){var M;return(M=n.value)===null||M===void 0?void 0:M.itemsElRef}let s=V(()=>{let{pattern:M}=e;return M?!M.length||!qe.value?{filteredTree:e.data,highlightKeySet:null,expandedKeys:void 0}:bw(e.data,qe.value,M,e.keyField,e.childrenField):{filteredTree:e.data,highlightKeySet:null,expandedKeys:void 0}}),u=V(()=>lu(e.showIrrelevantNodes?e.data:s.value.filteredTree,lP(e.keyField,e.childrenField))),f=Te(fd,null),c=e.internalTreeSelect?f.dataTreeMate:u,{watchProps:p}=e,x=Z([]);(p==null?void 0:p.includes("defaultCheckedKeys"))?Mo(()=>{x.value=e.defaultCheckedKeys}):x.value=e.defaultCheckedKeys;let T=De(e,"checkedKeys"),C=Zo(T,x),S=V(()=>c.value.getCheckedKeys(C.value,{cascade:e.cascade,allowNotLoaded:e.allowCheckingNotLoaded})),D=V(()=>e.leafOnly?"child":e.checkStrategy),$=V(()=>S.value.checkedKeys),O=V(()=>{let{indeterminateKeys:M}=e;return M!==void 0?M:S.value.indeterminateKeys}),g=Z([]);(p==null?void 0:p.includes("defaultSelectedKeys"))?Mo(()=>{g.value=e.defaultSelectedKeys}):g.value=e.defaultSelectedKeys;let v=De(e,"selectedKeys"),w=Zo(v,g),F=Z([]),B=M=>{F.value=e.defaultExpandAll?c.value.getNonLeafKeys():M===void 0?e.defaultExpandedKeys:M};(p==null?void 0:p.includes("defaultExpandedKeys"))?Mo(()=>B(void 0)):Mo(()=>B(e.defaultExpandedKeys));let y=De(e,"expandedKeys"),W=Zo(y,F),_=V(()=>u.value.getFlattenedNodes(W.value)),{pendingNodeKeyRef:ae,handleKeyup:he,handleKeydown:Me}=yw({mergedSelectedKeysRef:w,fNodesRef:_,mergedExpandedKeysRef:W,handleSelect:eo,handleSwitcherClick:ze}),de=null,ie=null,ge=Z(new Set),Ve=V(()=>e.internalHighlightKeySet||s.value.highlightKeySet),Ke=Zo(Ve,ge),He=Z(new Set),Xe=V(()=>W.value.filter(M=>!He.value.has(M))),Qe=0,wo=Z(null),Do=Z(null),Be=Z(null),We=Z(null),ho=Z(0),we=V(()=>{let{value:M}=Do;return M?M.parent:null}),qe=V(()=>{let{filter:M}=e;if(M)return M;let{labelField:q}=e;return(ne,se)=>ne.length?se[q].toLowerCase().includes(ne.toLowerCase()):!0});Ze(De(e,"data"),()=>{He.value.clear(),ae.value=null,Le()},{deep:!1});let to;Ze(De(e,"pattern"),(M,q)=>{if(e.showIrrelevantNodes)if(to=void 0,M){let{expandedKeys:ne,highlightKeySet:se}=Cw(e.data,e.pattern,e.keyField,e.childrenField,qe.value);ge.value=se,L(ne,U(ne))}else ge.value=new Set;else if(!M.length)to!==void 0&&L(to,U(to));else{q.length||(to=W.value);let{expandedKeys:ne}=s.value;ne!==void 0&&L(ne,U(ne))}});function vo(M){return aP(this,void 0,void 0,function*(){let{onLoad:q}=e;if(!q)return yield Promise.resolve();let{value:ne}=He;return yield new Promise(se=>{ne.has(M.key)||(ne.add(M.key),q(M.rawNode).then(()=>{ne.delete(M.key),se()}).catch(Ne=>{console.error(Ne),Se()}))})})}Mo(()=>{var M;let{value:q}=u;if(!q)return;let{getNode:ne}=q;(M=W.value)===null||M===void 0||M.forEach(se=>{let Ne=ne(se);Ne&&!Ne.shallowLoaded&&vo(Ne)})});let m=Z(!1),h=Z([]);Ze(Xe,(M,q)=>{if(!e.animated){No(I);return}let ne=new Set(q),se=null,Ne=null;for(let ko of M)if(!ne.has(ko)){if(se!==null)return;se=ko}let Eo=new Set(M);for(let ko of q)if(!Eo.has(ko)){if(Ne!==null)return;Ne=ko}if(se!==null&&Ne!==null||se===null&&Ne===null)return;let{virtualScroll:To}=e,tr=(To?n.value.listElRef:a.value).offsetHeight,rr=Math.ceil(tr/md)+1;if(se!==null){m.value=!0,h.value=u.value.getFlattenedNodes(q);let ko=h.value.findIndex(Po=>Po.key===se);if(~ko){let Po=tl(h.value[ko].children,M);h.value.splice(ko+1,0,{__motion:!0,mode:"expand",height:To?Po.length*md:void 0,nodes:To?Po.slice(0,rr):Po})}}if(Ne!==null){h.value=u.value.getFlattenedNodes(M);let ko=h.value.findIndex(Po=>Po.key===Ne);if(~ko){let Po=h.value[ko].children;if(!Po)return;m.value=!0;let lt=tl(Po,M);h.value.splice(ko+1,0,{__motion:!0,mode:"collapse",height:To?lt.length*md:void 0,nodes:To?lt.slice(0,rr):lt})}}});let k=V(()=>ru(_.value)),E=V(()=>m.value?h.value:_.value);function I(){let{value:M}=l;M&&M.sync()}function j(){m.value=!1,e.virtualScroll&&No(I)}function U(M){let{getNode:q}=c.value;return M.map(ne=>{var se;return((se=q(ne))===null||se===void 0?void 0:se.rawNode)||null})}function L(M,q){let{"onUpdate:expandedKeys":ne,onUpdateExpandedKeys:se}=e;F.value=M,ne&&Re(ne,M,q),se&&Re(se,M,q)}function K(M,q){let{"onUpdate:checkedKeys":ne,onUpdateCheckedKeys:se}=e;x.value=M,se&&Re(se,M,q),ne&&Re(ne,M,q)}function H(M,q){let{"onUpdate:indeterminateKeys":ne,onUpdateIndeterminateKeys:se}=e;ne&&Re(ne,M,q),se&&Re(se,M,q)}function b(M,q){let{"onUpdate:selectedKeys":ne,onUpdateSelectedKeys:se}=e;g.value=M,se&&Re(se,M,q),ne&&Re(ne,M,q)}function N(M){let{onDragenter:q}=e;q&&Re(q,M)}function z(M){let{onDragleave:q}=e;q&&Re(q,M)}function te(M){let{onDragend:q}=e;q&&Re(q,M)}function fe(M){let{onDragstart:q}=e;q&&Re(q,M)}function Ce(M){let{onDragover:q}=e;q&&Re(q,M)}function ye(M){let{onDrop:q}=e;q&&Re(q,M)}function Le(){Q(),re()}function Q(){wo.value=null}function re(){ho.value=0,Do.value=null,Be.value=null,We.value=null,Se()}function Se(){de&&(window.clearTimeout(de),de=null),ie=null}function _e(M,q){if(e.disabled||M.disabled)return;if(e.internalUnifySelectCheck&&!e.multiple){eo(M);return}let{checkedKeys:ne,indeterminateKeys:se}=c.value[q?"check":"uncheck"](M.key,$.value,{cascade:e.cascade,checkStrategy:D.value,allowNotLoaded:e.allowCheckingNotLoaded});K(ne,U(ne)),H(se,U(se))}function Je(M){if(e.disabled)return;let{value:q}=W,ne=q.findIndex(se=>se===M);if(~ne){let se=Array.from(q);se.splice(ne,1),L(se,U(se))}else{let se=u.value.getNode(M);if(!se||se.isLeaf)return;let Ne=q.concat(M);L(Ne,U(Ne))}}function ze(M){e.disabled||m.value||Je(M.key)}function eo(M){if(!(e.disabled||!e.selectable)){if(ae.value=M.key,e.internalUnifySelectCheck){let{value:{checkedKeys:q,indeterminateKeys:ne}}=S;e.multiple?_e(M,!(q.includes(M.key)||ne.includes(M.key))):K([M.key],U([M.key]))}if(e.multiple){let q=Array.from(w.value),ne=q.findIndex(se=>se===M.key);~ne?e.cancelable&&q.splice(ne,1):~ne||q.push(M.key),b(q,U(q))}else w.value.includes(M.key)?e.cancelable&&b([],[]):b([M.key],U([M.key]))}}function Ge(M){if(de&&(window.clearTimeout(de),de=null),M.isLeaf)return;ie=M.key;let q=()=>{if(ie!==M.key)return;let{value:ne}=Be;if(ne&&ne.key===M.key&&!W.value.includes(M.key)){let se=W.value.concat(M.key);L(se,U(se))}de=null,ie=null};M.shallowLoaded?de=window.setTimeout(()=>{q()},1e3):de=window.setTimeout(()=>{vo(M).then(()=>{q()})},1e3)}function Go({event:M,node:q}){!e.draggable||e.disabled||q.disabled||(Ra({event:M,node:q},!1),N({event:M,node:q.rawNode}))}function ct({event:M,node:q}){!e.draggable||e.disabled||q.disabled||z({event:M,node:q.rawNode})}function ll(M){M.target===M.currentTarget&&re()}function cr({event:M,node:q}){Le(),!(!e.draggable||e.disabled||q.disabled)&&te({event:M,node:q.rawNode})}function xr({event:M,node:q}){var ne;!e.draggable||e.disabled||q.disabled||(ip&&((ne=M.dataTransfer)===null||ne===void 0||ne.setDragImage(ip,0,0)),Qe=M.clientX,wo.value=q,fe({event:M,node:q.rawNode}))}function Ra({event:M,node:q},ne=!0){var se;if(!e.draggable||e.disabled||q.disabled)return;let{value:Ne}=wo;if(!Ne)return;let{allowDrop:Eo,indent:To}=e;ne&&Ce({event:M,node:q.rawNode});let tr=M.currentTarget,{height:rr,top:ko}=tr.getBoundingClientRect(),Po=M.clientY-ko,lt;Eo({node:q.rawNode,dropPosition:"inside",phase:"drag"})?Po<=8?lt="before":Po>=rr-8?lt="after":lt="inside":Po<=rr/2?lt="before":lt="after";let{value:bd}=k,oo,Vo,il=bd(q.key);if(il===null){re();return}let Rn=!1;lt==="inside"?(oo=q,Vo="inside"):lt==="before"?q.isFirstChild?(oo=q,Vo="before"):(oo=_.value[il-1],Vo="after"):(oo=q,Vo="after"),!oo.isLeaf&&W.value.includes(oo.key)&&(Rn=!0,Vo==="after"&&(oo=_.value[il+1],oo?Vo="before":(oo=q,Vo="inside")));let Fn=oo;if(Be.value=Fn,!Rn&&Ne.isLastChild&&Ne.key===oo.key&&(Vo="after"),Vo==="after"){let On=Qe-M.clientX,dl=0;for(;On>=To/2&&oo.parent!==null&&oo.isLastChild&&dl<1;)On-=To,dl+=1,oo=oo.parent;ho.value=dl}else ho.value=0;if((Ne.contains(oo)||Vo==="inside"&&((se=Ne.parent)===null||se===void 0?void 0:se.key)===oo.key)&&!(Ne.key===Fn.key&&Ne.key===oo.key)){re();return}if(!Eo({node:oo.rawNode,dropPosition:Vo,phase:"drag"})){re();return}if(Ne.key===oo.key)Se();else if(ie!==oo.key)if(Vo==="inside"){if(e.expandOnDragenter){if(Ge(oo),!oo.shallowLoaded&&ie!==oo.key){Le();return}}else if(!oo.shallowLoaded){Le();return}}else Se();else Vo!=="inside"&&Se();We.value=Vo,Do.value=oo}function nl({event:M,node:q,dropPosition:ne}){if(!e.draggable||e.disabled||q.disabled)return;let{value:se}=wo,{value:Ne}=Do,{value:Eo}=We;if(!(!se||!Ne||!Eo)&&!!e.allowDrop({node:Ne.rawNode,dropPosition:Eo,phase:"drag"})&&se.key!==Ne.key){if(Eo==="before"){let To=se.getNext({includeDisabled:!0});if(To&&To.key===Ne.key){re();return}}if(Eo==="after"){let To=se.getPrev({includeDisabled:!0});if(To&&To.key===Ne.key){re();return}}ye({event:M,node:Ne.rawNode,dragNode:se.rawNode,dropPosition:ne}),Le()}}function Fa(){I()}function hr(){I()}function A(M){var q;if(e.virtualScroll||e.internalScrollable){let{value:ne}=l;if((q=ne==null?void 0:ne.containerRef)===null||q===void 0?void 0:q.contains(M.relatedTarget))return;ae.value=null}else{let{value:ne}=a;if(ne==null?void 0:ne.contains(M.relatedTarget))return;ae.value=null}}Ze(ae,M=>{var q,ne;if(M!==null){if(e.virtualScroll)(q=n.value)===null||q===void 0||q.scrollTo({key:M});else if(e.internalScrollable){let{value:se}=l;if(se===null)return;let Ne=(ne=se.contentRef)===null||ne===void 0?void 0:ne.querySelector(`[data-key="${Va(M)}"]`);if(!Ne)return;se.scrollTo({el:Ne})}}}),qo(Jt,{loadingKeysRef:He,highlightKeySetRef:Ke,displayedCheckedKeysRef:$,displayedIndeterminateKeysRef:O,mergedSelectedKeysRef:w,mergedExpandedKeysRef:W,mergedThemeRef:r,mergedCheckStrategyRef:D,nodePropsRef:De(e,"nodeProps"),disabledRef:De(e,"disabled"),checkableRef:De(e,"checkable"),selectableRef:De(e,"selectable"),onLoadRef:De(e,"onLoad"),draggableRef:De(e,"draggable"),blockLineRef:De(e,"blockLine"),indentRef:De(e,"indent"),cascadeRef:De(e,"cascade"),droppingMouseNodeRef:Be,droppingNodeParentRef:we,draggingNodeRef:wo,droppingPositionRef:We,droppingOffsetLevelRef:ho,fNodesRef:_,pendingNodeKeyRef:ae,internalScrollableRef:De(e,"internalScrollable"),internalCheckboxFocusableRef:De(e,"internalCheckboxFocusable"),internalTreeSelect:e.internalTreeSelect,renderLabelRef:De(e,"renderLabel"),renderPrefixRef:De(e,"renderPrefix"),renderSuffixRef:De(e,"renderSuffix"),renderSwitcherIconRef:De(e,"renderSwitcherIcon"),labelFieldRef:De(e,"labelField"),multipleRef:De(e,"multiple"),handleSwitcherClick:ze,handleDragEnd:cr,handleDragEnter:Go,handleDragLeave:ct,handleDragStart:xr,handleDrop:nl,handleDragOver:Ra,handleSelect:eo,handleCheck:_e});let ee={handleKeydown:Me,handleKeyup:he},ke=V(()=>{let{common:{cubicBezierEaseInOut:M},self:{fontSize:q,nodeBorderRadius:ne,nodeColorHover:se,nodeColorPressed:Ne,nodeColorActive:Eo,arrowColor:To,loadingColor:tr,nodeTextColor:rr,nodeTextColorDisabled:ko,dropMarkColor:Po}}=r.value;return{"--n-arrow-color":To,"--n-loading-color":tr,"--n-bezier":M,"--n-font-size":q,"--n-node-border-radius":ne,"--n-node-color-active":Eo,"--n-node-color-hover":se,"--n-node-color-pressed":Ne,"--n-node-text-color":rr,"--n-node-text-color-disabled":ko,"--n-drop-mark-color":Po}}),uo=t?Ko("tree",void 0,ke,e):void 0;return{mergedClsPrefix:o,mergedTheme:r,fNodes:E,aip:m,selfElRef:a,virtualListInstRef:n,scrollbarInstRef:l,handleFocusout:A,handleDragLeaveTree:ll,handleScroll:Fa,getScrollContainer:i,getScrollContent:d,handleAfterEnter:j,handleResize:hr,handleKeydown:ee.handleKeydown,handleKeyup:ee.handleKeyup,cssVars:t?void 0:ke,themeClass:uo==null?void 0:uo.themeClass,onRender:uo==null?void 0:uo.onRender}},render(){var e;let{fNodes:o,internalRenderEmpty:t}=this;if(!o.length&&t)return t();let{mergedClsPrefix:r,blockNode:a,blockLine:l,draggable:n,disabled:i,internalFocusable:d,checkable:s,handleKeyup:u,handleKeydown:f,handleFocusout:c}=this,p=d&&!i,x=p?"0":void 0,T=[`${r}-tree`,s&&`${r}-tree--checkable`,(l||a)&&`${r}-tree--block-node`,l&&`${r}-tree--block-line`],C=D=>"__motion"in D?R(vw,{height:D.height,nodes:D.nodes,clsPrefix:r,mode:D.mode,onAfterEnter:this.handleAfterEnter}):R(pd,{key:D.key,tmNode:D,clsPrefix:r});if(this.virtualScroll){let{mergedTheme:D,internalScrollablePadding:$}=this,O=Ia($||"0");return R(en,{ref:"scrollbarInstRef",onDragleave:n?this.handleDragLeaveTree:void 0,container:this.getScrollContainer,content:this.getScrollContent,class:T,theme:D.peers.Scrollbar,themeOverrides:D.peerOverrides.Scrollbar,tabindex:x,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?c:void 0},{default:()=>{var g;return(g=this.onRender)===null||g===void 0||g.call(this),R(Hl,{ref:"virtualListInstRef",items:this.fNodes,itemSize:md,ignoreItemResize:this.aip,paddingTop:O.top,paddingBottom:O.bottom,class:this.themeClass,style:[this.cssVars,{paddingLeft:O.left,paddingRight:O.right}],onScroll:this.handleScroll,onResize:this.handleResize,showScrollbar:!1,itemResizable:!0},{default:({item:v})=>C(v)})}})}let{internalScrollable:S}=this;return T.push(this.themeClass),(e=this.onRender)===null||e===void 0||e.call(this),S?R(en,{class:T,tabindex:x,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?c:void 0,style:this.cssVars,contentStyle:{padding:this.internalScrollablePadding}},{default:()=>R("div",{onDragleave:n?this.handleDragLeaveTree:void 0,ref:"selfElRef"},this.fNodes.map(C))}):R("div",{class:T,tabindex:x,ref:"selfElRef",style:this.cssVars,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?c:void 0,onDragleave:n?this.handleDragLeaveTree:void 0},o.length?o.map(C):Ut(this.$slots.empty,()=>{var D,$,O,g;return[R(iu,{class:`${r}-tree__empty`,theme:($=(D=this.theme)===null||D===void 0?void 0:D.peers)===null||$===void 0?void 0:$.Empty,themeOverrides:(g=(O=this.themeOverrides)===null||O===void 0?void 0:O.peers)===null||g===void 0?void 0:g.Empty})]}))}});var cd={name:"dark",common:P,Alert:pu,Anchor:cu,AutoComplete:gu,Avatar:an,AvatarGroup:wu,BackTop:Tu,Badge:Ru,Breadcrumb:Fu,Button:io,ButtonGroup:hf,Calendar:yu,Card:nn,Carousel:Pu,Cascader:Lu,Checkbox:Bt,Code:dn,Collapse:_u,CollapseTransition:Iu,ColorPicker:ku,DataTable:Gu,DatePicker:ef,Descriptions:of,Dialog:hn,Divider:nf,Drawer:sf,Dropdown:cn,DynamicInput:uf,DynamicTags:ff,Element:pf,Empty:pt,Ellipsis:pn,Form:mf,GradientText:cf,Icon:Zu,IconWrapper:xf,Image:op,Input:go,InputNumber:Sf,Layout:gf,List:wf,LoadingBar:Tf,Log:Rf,Menu:Cf,Mention:Ff,Message:bf,Modal:lf,Notification:vf,PageHeader:Af,Pagination:un,Popconfirm:Pf,Popover:Xo,Popselect:Mf,Progress:gn,Radio:mn,Rate:Ef,Result:Nf,Scrollbar:no,Select:sn,Skeleton:tp,Slider:_f,Space:Sn,Spin:Hf,Statistic:Wf,Steps:Vf,Switch:zf,Table:jf,Tabs:$f,Tag:on,Thing:Uf,TimePicker:xn,Timeline:Kf,Tooltip:Xt,Transfer:Gf,Tree:wn,TreeSelect:Zf,Typography:Yf,Upload:Jf,Watermark:ep};function dP(e){let o=0;for(let t=0;t{let a=dP(r);if(a){if(a===1){e.forEach(n=>{t.push(r.replace("&",n))});return}}else{e.forEach(n=>{t.push((n&&n+" ")+r)});return}let l=[r];for(;a--;){let n=[];l.forEach(i=>{e.forEach(d=>{n.push(i.replace("&",d))})}),l=n}l.forEach(n=>t.push(n))}),t}function fP(e,o){let t=[];return o.split(Aw).forEach(r=>{e.forEach(a=>{t.push((a&&a+" ")+r)})}),t}function Dw(e){let o=[""];return e.forEach(t=>{t=t&&t.trim(),!!t&&(t.includes("&")?o=uP(o,t):o=fP(o,t))}),o.join(", ").replace(sP," ")}var pP=/[A-Z]/g;function Pw(e){return e.replace(pP,o=>"-"+o.toLowerCase())}function mP(e,o=" "){return typeof e=="object"&&e!==null?` { +`+Object.entries(e).map(t=>o+` ${Pw(t[0])}: ${t[1]};`).join(` `)+` -`+o+"}":`: ${e};`}function mP(e,o,t){return typeof e=="function"?e({context:o.context,props:t}):e}function Pw(e,o,t,r){if(!o)return"";let a=mP(o,t,r);if(!a)return"";if(typeof a=="string")return`${e} { +`+o+"}":`: ${e};`}function cP(e,o,t){return typeof e=="function"?e({context:o.context,props:t}):e}function Mw(e,o,t,r){if(!o)return"";let a=cP(o,t,r);if(!a)return"";if(typeof a=="string")return`${e} { ${a} }`;let l=Object.keys(a);if(l.length===0)return t.config.keepEmptyBlock?e+` { }`:"";let n=e?[e+" {"]:[];return l.forEach(i=>{let d=a[i];if(i==="raw"){n.push(` `+d+` -`);return}i=Dw(i),d!=null&&n.push(` ${i}${pP(d)}`)}),e&&n.push("}"),n.join(` -`)}function sp(e,o,t){!e||e.forEach(r=>{if(Array.isArray(r))sp(r,o,t);else if(typeof r=="function"){let a=r(o);Array.isArray(a)?sp(a,o,t):a&&t(a)}else r&&t(r)})}function Mw(e,o,t,r,a,l){let n=e.$;!n||typeof n=="string"?o.push(n):typeof n=="function"?o.push(n({context:r.context,props:a})):(n.before&&n.before(r.context),!n.$||typeof n.$=="string"?o.push(n.$):n.$&&o.push(n.$({context:r.context,props:a})));let i=Aw(o),d=Pw(i,e.props,r,a);l&&d&&l.insertRule(d),!l&&d.length&&t.push(d),e.children&&sp(e.children,{context:r.context,props:a},s=>{if(typeof s=="string"){let u=Pw(i,{raw:s},r,a);l?l.insertRule(u):t.push(u)}else Mw(s,o,t,r,a,l)}),o.pop(),n&&n.after&&n.after(r.context)}function hd(e,o,t,r=!1){let a=[];return Mw(e,[],a,o,t,r?e.instance.__styleSheet:void 0),r?"":a.join(` +`);return}i=Pw(i),d!=null&&n.push(` ${i}${mP(d)}`)}),e&&n.push("}"),n.join(` +`)}function sp(e,o,t){!e||e.forEach(r=>{if(Array.isArray(r))sp(r,o,t);else if(typeof r=="function"){let a=r(o);Array.isArray(a)?sp(a,o,t):a&&t(a)}else r&&t(r)})}function Bw(e,o,t,r,a,l){let n=e.$;!n||typeof n=="string"?o.push(n):typeof n=="function"?o.push(n({context:r.context,props:a})):(n.before&&n.before(r.context),!n.$||typeof n.$=="string"?o.push(n.$):n.$&&o.push(n.$({context:r.context,props:a})));let i=Dw(o),d=Mw(i,e.props,r,a);l&&d&&l.insertRule(d),!l&&d.length&&t.push(d),e.children&&sp(e.children,{context:r.context,props:a},s=>{if(typeof s=="string"){let u=Mw(i,{raw:s},r,a);l?l.insertRule(u):t.push(u)}else Bw(s,o,t,r,a,l)}),o.pop(),n&&n.after&&n.after(r.context)}function xd(e,o,t,r=!1){let a=[];return Bw(e,[],a,o,t,r?e.instance.__styleSheet:void 0),r?"":a.join(` -`)}function Sd(e){if(!e)return;let o=e.parentElement;o&&o.removeChild(e)}function Tn(e){return document.querySelector(`style[cssr-id="${e}"]`)}function Bw(e){let o=document.createElement("style");return o.setAttribute("cssr-id",e),o}window&&(window.__cssrContext={});function Lw(e){let o=e.getAttribute("mount-count");return o===null?null:Number(o)}function up(e,o){e.setAttribute("mount-count",String(o))}function fp(e,o,t,r){let{els:a}=o;if(t===void 0)a.forEach(Sd),o.els=[];else{let l=Tn(t);if(l&&a.includes(l)){let n=Lw(l);r?n===null?console.error(`[css-render/unmount]: The style with target='${t}' is mounted in count mode.`):n<=1?(Sd(l),o.els=a.filter(i=>i!==l)):up(l,n-1):n!==null?console.error(`[css-render/unmount]: The style with target='${t}' is mounted in no-count mode.`):(Sd(l),o.els=a.filter(i=>i!==l))}}}function cP(e,o){e.push(o)}function Ew(e,o,t,r,a,l,n,i,d){if(n&&!d){if(t===void 0){console.error("[css-render/mount]: `id` is required in `boost` mode.");return}let p=window.__cssrContext;p[t]||(p[t]=!0,hd(o,e,r,n));return}let s,{els:u}=o,f;if(t===void 0&&(f=o.render(r),t=st(f)),d){d(t,f!=null?f:o.render(r));return}let m=Tn(t);if(i||m===null){if(s=m===null?Bw(t):m,f===void 0&&(f=o.render(r)),s.textContent=f,m!==null)return;if(a){let p=document.head.getElementsByTagName("style")[0]||null;document.head.insertBefore(s,p)}else document.head.appendChild(s);l&&up(s,1),cP(u,s)}else{let p=Lw(m);l?p===null?console.error(`[css-render/mount]: The style with id='${t}' has been mounted in no-count mode.`):up(m,p+1):p!==null&&console.error(`[css-render/mount]: The style with id='${t}' has been mounted in count mode.`)}return m!=null?m:s}function xP(e){return hd(this,this.instance,e)}function hP(e={}){let{target:o,id:t,ssr:r,props:a,count:l=!1,head:n=!1,boost:i=!1,force:d=!1}=e;return Ew(this.instance,this,t!=null?t:o,a,n,l,i,d,r)}function SP(e={}){let{id:o,target:t,delay:r=0,count:a=!1}=e;r===0?fp(this.instance,this,o!=null?o:t,a):setTimeout(()=>fp(this.instance,this,o!=null?o:t,a),r)}var gd=function(e,o,t,r){return{instance:e,$:o,props:t,children:r,els:[],render:xP,mount:hP,unmount:SP}},Nw=function(e,o,t,r){return Array.isArray(o)?gd(e,{$:null},null,o):Array.isArray(t)?gd(e,o,null,t):Array.isArray(r)?gd(e,o,t,r):gd(e,o,t,null)};function pp(e={}){let o=null,t={c:(...r)=>Nw(t,...r),use:(r,...a)=>r.install(t,...a),find:Tn,context:{},config:e,get __styleSheet(){if(!o){let r=document.createElement("style");return document.head.appendChild(r),o=document.styleSheets[document.styleSheets.length-1],o}return o}};return t}var{c:mp}=pp(),gP=mp(".xicon",{width:"1em",height:"1em",display:"inline-flex"},[mp("svg",{width:"1em",height:"1em"}),mp("svg:not([fill])",{fill:"currentColor"})]),cp=()=>{gP.mount({id:"xicons-icon"})};var xp={size:[String,Number],color:String,tag:String},hp=Symbol("IconConfigInjection"),wP=ie({name:"IconConfigProvider",props:xp,setup(e,{slots:o}){return qo(hp,e),()=>Pa(o,"default")}});var _w="span";var Sp=ie({name:"Icon",props:xp,setup(e,{slots:o}){let t=Re(hp,null),r=z(()=>{var n;let i=(n=e.size)!==null&&n!==void 0?n:t==null?void 0:t.size;if(i!==void 0)return typeof i=="number"||/^\d+$/.test(i)?`${i}px`:i}),a=z(()=>{let{color:n}=e;return n===void 0?t?t.color:void 0:n}),l=z(()=>{var n;let{tag:i}=e;return i===void 0?(n=t==null?void 0:t.tag)!==null&&n!==void 0?n:_w:i});return ir(()=>{cp()}),()=>R(l.value,{class:"xicon",style:{color:a.value,fontSize:r.value}},[Pa(o,"default")])}});var TP={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},RP=ei("path",{d:"M11.77 3c-2.65.07-5 1.28-6.6 3.16L3.85 4.85a.5.5 0 0 0-.85.36V9.5c0 .28.22.5.5.5h4.29c.45 0 .67-.54.35-.85L6.59 7.59C7.88 6.02 9.82 5 12 5c4.32 0 7.74 3.94 6.86 8.41c-.54 2.77-2.81 4.98-5.58 5.47c-3.8.68-7.18-1.74-8.05-5.16c-.12-.42-.52-.72-.96-.72c-.65 0-1.14.61-.98 1.23C4.28 18.12 7.8 21 12 21c5.06 0 9.14-4.17 9-9.26c-.14-4.88-4.35-8.86-9.23-8.74zM14 12c0-1.1-.9-2-2-2s-2 .9-2 2s.9 2 2 2s2-.9 2-2z",fill:"currentColor"},null,-1),FP=[RP],gp=ie({name:"SettingsBackupRestoreRound",render:function(o,t){return Wt(),Ma("svg",TP,FP)}});function Iw(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}var ol=Iw();function OP(e){ol=e}var CP=/[&<>"']/,bP=/[&<>"']/g,yP=/[<>"']|&(?!#?\w+;)/,vP=/[<>"']|&(?!#?\w+;)/g,kP={"&":"&","<":"<",">":">",'"':""","'":"'"},Hw=e=>kP[e];function Lo(e,o){if(o){if(CP.test(e))return e.replace(bP,Hw)}else if(yP.test(e))return e.replace(vP,Hw);return e}var AP=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function Ww(e){return e.replace(AP,(o,t)=>(t=t.toLowerCase(),t==="colon"?":":t.charAt(0)==="#"?t.charAt(1)==="x"?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""))}var DP=/(^|[^\[])\^/g;function uo(e,o){e=e.source||e,o=o||"";let t={replace:(r,a)=>(a=a.source||a,a=a.replace(DP,"$1"),e=e.replace(r,a),t),getRegex:()=>new RegExp(e,o)};return t}var PP=/[^\w:]/g,MP=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function Vw(e,o,t){if(e){let r;try{r=decodeURIComponent(Ww(t)).replace(PP,"").toLowerCase()}catch(a){return null}if(r.indexOf("javascript:")===0||r.indexOf("vbscript:")===0||r.indexOf("data:")===0)return null}o&&!MP.test(t)&&(t=NP(o,t));try{t=encodeURI(t).replace(/%25/g,"%")}catch(r){return null}return t}var wd={},BP=/^[^:]+:\/*[^/]*$/,LP=/^([^:]+:)[\s\S]*$/,EP=/^([^:]+:\/*[^/]*)[\s\S]*$/;function NP(e,o){wd[" "+e]||(BP.test(e)?wd[" "+e]=e+"/":wd[" "+e]=Rd(e,"/",!0)),e=wd[" "+e];let t=e.indexOf(":")===-1;return o.substring(0,2)==="//"?t?o:e.replace(LP,"$1")+o:o.charAt(0)==="/"?t?o:e.replace(EP,"$1")+o:e+o}var Td={exec:function(){}};function Bt(e){let o=1,t,r;for(;o{let d=!1,s=n;for(;--s>=0&&i[s]==="\\";)d=!d;return d?"|":" |"}),r=t.split(/ \|/),a=0;if(r[0].trim()||r.shift(),r.length>0&&!r[r.length-1].trim()&&r.pop(),r.length>o)r.splice(o);else for(;r.length1;)o&1&&(t+=e),o>>=1,e+=e;return t+e}function Uw(e,o,t,r){let a=o.href,l=o.title?Lo(o.title):null,n=e[1].replace(/\\([\[\]])/g,"$1");if(e[0].charAt(0)!=="!"){r.state.inLink=!0;let i={type:"link",raw:t,href:a,title:l,text:n,tokens:r.inlineTokens(n,[])};return r.state.inLink=!1,i}else return{type:"image",raw:t,href:a,title:l,text:Lo(n)}}function IP(e,o){let t=e.match(/^(\s+)(?:```)/);if(t===null)return o;let r=t[1];return o.split(` +`)}function hd(e){if(!e)return;let o=e.parentElement;o&&o.removeChild(e)}function Tn(e){return document.querySelector(`style[cssr-id="${e}"]`)}function Lw(e){let o=document.createElement("style");return o.setAttribute("cssr-id",e),o}window&&(window.__cssrContext={});function Ew(e){let o=e.getAttribute("mount-count");return o===null?null:Number(o)}function up(e,o){e.setAttribute("mount-count",String(o))}function fp(e,o,t,r){let{els:a}=o;if(t===void 0)a.forEach(hd),o.els=[];else{let l=Tn(t);if(l&&a.includes(l)){let n=Ew(l);r?n===null?console.error(`[css-render/unmount]: The style with target='${t}' is mounted in count mode.`):n<=1?(hd(l),o.els=a.filter(i=>i!==l)):up(l,n-1):n!==null?console.error(`[css-render/unmount]: The style with target='${t}' is mounted in no-count mode.`):(hd(l),o.els=a.filter(i=>i!==l))}}}function xP(e,o){e.push(o)}function Nw(e,o,t,r,a,l,n,i,d){if(n&&!d){if(t===void 0){console.error("[css-render/mount]: `id` is required in `boost` mode.");return}let p=window.__cssrContext;p[t]||(p[t]=!0,xd(o,e,r,n));return}let s,{els:u}=o,f;if(t===void 0&&(f=o.render(r),t=st(f)),d){d(t,f!=null?f:o.render(r));return}let c=Tn(t);if(i||c===null){if(s=c===null?Lw(t):c,f===void 0&&(f=o.render(r)),s.textContent=f,c!==null)return;if(a){let p=document.head.getElementsByTagName("style")[0]||null;document.head.insertBefore(s,p)}else document.head.appendChild(s);l&&up(s,1),xP(u,s)}else{let p=Ew(c);l?p===null?console.error(`[css-render/mount]: The style with id='${t}' has been mounted in no-count mode.`):up(c,p+1):p!==null&&console.error(`[css-render/mount]: The style with id='${t}' has been mounted in count mode.`)}return c!=null?c:s}function hP(e){return xd(this,this.instance,e)}function SP(e={}){let{target:o,id:t,ssr:r,props:a,count:l=!1,head:n=!1,boost:i=!1,force:d=!1}=e;return Nw(this.instance,this,t!=null?t:o,a,n,l,i,d,r)}function gP(e={}){let{id:o,target:t,delay:r=0,count:a=!1}=e;r===0?fp(this.instance,this,o!=null?o:t,a):setTimeout(()=>fp(this.instance,this,o!=null?o:t,a),r)}var Sd=function(e,o,t,r){return{instance:e,$:o,props:t,children:r,els:[],render:hP,mount:SP,unmount:gP}},_w=function(e,o,t,r){return Array.isArray(o)?Sd(e,{$:null},null,o):Array.isArray(t)?Sd(e,o,null,t):Array.isArray(r)?Sd(e,o,t,r):Sd(e,o,t,null)};function pp(e={}){let o=null,t={c:(...r)=>_w(t,...r),use:(r,...a)=>r.install(t,...a),find:Tn,context:{},config:e,get __styleSheet(){if(!o){let r=document.createElement("style");return document.head.appendChild(r),o=document.styleSheets[document.styleSheets.length-1],o}return o}};return t}var{c:mp}=pp(),wP=mp(".xicon",{width:"1em",height:"1em",display:"inline-flex"},[mp("svg",{width:"1em",height:"1em"}),mp("svg:not([fill])",{fill:"currentColor"})]),cp=()=>{wP.mount({id:"xicons-icon"})};var xp={size:[String,Number],color:String,tag:String},hp=Symbol("IconConfigInjection"),TP=le({name:"IconConfigProvider",props:xp,setup(e,{slots:o}){return qo(hp,e),()=>Ba(o,"default")}});var Iw="span";var Sp=le({name:"Icon",props:xp,setup(e,{slots:o}){let t=Te(hp,null),r=V(()=>{var n;let i=(n=e.size)!==null&&n!==void 0?n:t==null?void 0:t.size;if(i!==void 0)return typeof i=="number"||/^\d+$/.test(i)?`${i}px`:i}),a=V(()=>{let{color:n}=e;return n===void 0?t?t.color:void 0:n}),l=V(()=>{var n;let{tag:i}=e;return i===void 0?(n=t==null?void 0:t.tag)!==null&&n!==void 0?n:Iw:i});return dr(()=>{cp()}),()=>R(l.value,{class:"xicon",style:{color:a.value,fontSize:r.value}},[Ba(o,"default")])}});var RP={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},FP=Ea("path",{d:"M12 4c4.41 0 8 3.59 8 8s-3.59 8-8 8s-8-3.59-8-8s3.59-8 8-8m0-2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2zm1 10V9c0-.55-.45-1-1-1s-1 .45-1 1v3H9.21c-.45 0-.67.54-.35.85l2.79 2.79c.2.2.51.2.71 0l2.79-2.79a.5.5 0 0 0-.35-.85H13z",fill:"currentColor"},null,-1),OP=[FP],gp=le({name:"ArrowCircleDownRound",render:function(o,t){return ht(),kr("svg",RP,OP)}});var CP={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},bP=Ea("path",{d:"M11.77 3c-2.65.07-5 1.28-6.6 3.16L3.85 4.85a.5.5 0 0 0-.85.36V9.5c0 .28.22.5.5.5h4.29c.45 0 .67-.54.35-.85L6.59 7.59C7.88 6.02 9.82 5 12 5c4.32 0 7.74 3.94 6.86 8.41c-.54 2.77-2.81 4.98-5.58 5.47c-3.8.68-7.18-1.74-8.05-5.16c-.12-.42-.52-.72-.96-.72c-.65 0-1.14.61-.98 1.23C4.28 18.12 7.8 21 12 21c5.06 0 9.14-4.17 9-9.26c-.14-4.88-4.35-8.86-9.23-8.74zM14 12c0-1.1-.9-2-2-2s-2 .9-2 2s.9 2 2 2s2-.9 2-2z",fill:"currentColor"},null,-1),yP=[bP],wp=le({name:"SettingsBackupRestoreRound",render:function(o,t){return ht(),kr("svg",CP,yP)}});function Hw(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}var rl=Hw();function vP(e){rl=e}var kP=/[&<>"']/,AP=/[&<>"']/g,DP=/[<>"']|&(?!#?\w+;)/,PP=/[<>"']|&(?!#?\w+;)/g,MP={"&":"&","<":"<",">":">",'"':""","'":"'"},Ww=e=>MP[e];function Lo(e,o){if(o){if(kP.test(e))return e.replace(AP,Ww)}else if(DP.test(e))return e.replace(PP,Ww);return e}var BP=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function Vw(e){return e.replace(BP,(o,t)=>(t=t.toLowerCase(),t==="colon"?":":t.charAt(0)==="#"?t.charAt(1)==="x"?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""))}var LP=/(^|[^\[])\^/g;function so(e,o){e=e.source||e,o=o||"";let t={replace:(r,a)=>(a=a.source||a,a=a.replace(LP,"$1"),e=e.replace(r,a),t),getRegex:()=>new RegExp(e,o)};return t}var EP=/[^\w:]/g,NP=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function zw(e,o,t){if(e){let r;try{r=decodeURIComponent(Vw(t)).replace(EP,"").toLowerCase()}catch(a){return null}if(r.indexOf("javascript:")===0||r.indexOf("vbscript:")===0||r.indexOf("data:")===0)return null}o&&!NP.test(t)&&(t=WP(o,t));try{t=encodeURI(t).replace(/%25/g,"%")}catch(r){return null}return t}var gd={},_P=/^[^:]+:\/*[^/]*$/,IP=/^([^:]+:)[\s\S]*$/,HP=/^([^:]+:\/*[^/]*)[\s\S]*$/;function WP(e,o){gd[" "+e]||(_P.test(e)?gd[" "+e]=e+"/":gd[" "+e]=Td(e,"/",!0)),e=gd[" "+e];let t=e.indexOf(":")===-1;return o.substring(0,2)==="//"?t?o:e.replace(IP,"$1")+o:o.charAt(0)==="/"?t?o:e.replace(HP,"$1")+o:e+o}var wd={exec:function(){}};function Lt(e){let o=1,t,r;for(;o{let d=!1,s=n;for(;--s>=0&&i[s]==="\\";)d=!d;return d?"|":" |"}),r=t.split(/ \|/),a=0;if(r[0].trim()||r.shift(),r.length>0&&!r[r.length-1].trim()&&r.pop(),r.length>o)r.splice(o);else for(;r.length1;)o&1&&(t+=e),o>>=1,e+=e;return t+e}function Kw(e,o,t,r){let a=o.href,l=o.title?Lo(o.title):null,n=e[1].replace(/\\([\[\]])/g,"$1");if(e[0].charAt(0)!=="!"){r.state.inLink=!0;let i={type:"link",raw:t,href:a,title:l,text:n,tokens:r.inlineTokens(n,[])};return r.state.inLink=!1,i}else return{type:"image",raw:t,href:a,title:l,text:Lo(n)}}function zP(e,o){let t=e.match(/^(\s+)(?:```)/);if(t===null)return o;let r=t[1];return o.split(` `).map(a=>{let l=a.match(/^\s+/);if(l===null)return a;let[n]=l;return n.length>=r.length?a.slice(r.length):a}).join(` -`)}var Fd=class{constructor(o){this.options=o||ol}space(o){let t=this.rules.block.newline.exec(o);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(o){let t=this.rules.block.code.exec(o);if(t){let r=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?r:Rd(r,` -`)}}}fences(o){let t=this.rules.block.fences.exec(o);if(t){let r=t[0],a=IP(r,t[3]||"");return{type:"code",raw:r,lang:t[2]?t[2].trim():t[2],text:a}}}heading(o){let t=this.rules.block.heading.exec(o);if(t){let r=t[2].trim();if(/#$/.test(r)){let l=Rd(r,"#");(this.options.pedantic||!l||/ $/.test(l))&&(r=l.trim())}let a={type:"heading",raw:t[0],depth:t[1].length,text:r,tokens:[]};return this.lexer.inline(a.text,a.tokens),a}}hr(o){let t=this.rules.block.hr.exec(o);if(t)return{type:"hr",raw:t[0]}}blockquote(o){let t=this.rules.block.blockquote.exec(o);if(t){let r=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(r,[]),text:r}}}list(o){let t=this.rules.block.list.exec(o);if(t){let r,a,l,n,i,d,s,u,f,m,p,c,T=t[1].trim(),C=T.length>1,g={type:"list",raw:"",ordered:C,start:C?+T.slice(0,-1):"",loose:!1,items:[]};T=C?`\\d{1,9}\\${T.slice(-1)}`:`\\${T}`,this.options.pedantic&&(T=C?T:"[*+-]");let k=new RegExp(`^( {0,3}${T})((?: [^\\n]*)?(?:\\n|$))`);for(;o&&(c=!1,!(!(t=k.exec(o))||this.rules.block.hr.test(o)));){if(r=t[0],o=o.substring(r.length),u=t[2].split(` +`)}var Rd=class{constructor(o){this.options=o||rl}space(o){let t=this.rules.block.newline.exec(o);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(o){let t=this.rules.block.code.exec(o);if(t){let r=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?r:Td(r,` +`)}}}fences(o){let t=this.rules.block.fences.exec(o);if(t){let r=t[0],a=zP(r,t[3]||"");return{type:"code",raw:r,lang:t[2]?t[2].trim():t[2],text:a}}}heading(o){let t=this.rules.block.heading.exec(o);if(t){let r=t[2].trim();if(/#$/.test(r)){let l=Td(r,"#");(this.options.pedantic||!l||/ $/.test(l))&&(r=l.trim())}let a={type:"heading",raw:t[0],depth:t[1].length,text:r,tokens:[]};return this.lexer.inline(a.text,a.tokens),a}}hr(o){let t=this.rules.block.hr.exec(o);if(t)return{type:"hr",raw:t[0]}}blockquote(o){let t=this.rules.block.blockquote.exec(o);if(t){let r=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(r,[]),text:r}}}list(o){let t=this.rules.block.list.exec(o);if(t){let r,a,l,n,i,d,s,u,f,c,p,x,T=t[1].trim(),C=T.length>1,S={type:"list",raw:"",ordered:C,start:C?+T.slice(0,-1):"",loose:!1,items:[]};T=C?`\\d{1,9}\\${T.slice(-1)}`:`\\${T}`,this.options.pedantic&&(T=C?T:"[*+-]");let D=new RegExp(`^( {0,3}${T})((?: [^\\n]*)?(?:\\n|$))`);for(;o&&(x=!1,!(!(t=D.exec(o))||this.rules.block.hr.test(o)));){if(r=t[0],o=o.substring(r.length),u=t[2].split(` `,1)[0],f=o.split(` `,1)[0],this.options.pedantic?(n=2,p=u.trimLeft()):(n=t[2].search(/[^ ]/),n=n>4?1:n,p=u.slice(n),n+=t[1].length),d=!1,!u&&/^ *$/.test(f)&&(r+=f+` -`,o=o.substring(f.length+1),c=!0),!c){let F=new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])`);for(;o&&(m=o.split(` -`,1)[0],u=m,this.options.pedantic&&(u=u.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!F.test(u));){if(u.search(/[^ ]/)>=n||!u.trim())p+=` +`,o=o.substring(f.length+1),x=!0),!x){let O=new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])`);for(;o&&(c=o.split(` +`,1)[0],u=c,this.options.pedantic&&(u=u.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!O.test(u));){if(u.search(/[^ ]/)>=n||!u.trim())p+=` `+u.slice(n);else if(!d)p+=` -`+u;else break;!d&&!u.trim()&&(d=!0),r+=m+` -`,o=o.substring(m.length+1)}}g.loose||(s?g.loose=!0:/\n *\n *$/.test(r)&&(s=!0)),this.options.gfm&&(a=/^\[[ xX]\] /.exec(p),a&&(l=a[0]!=="[ ] ",p=p.replace(/^\[[ xX]\] +/,""))),g.items.push({type:"list_item",raw:r,task:!!a,checked:l,loose:!1,text:p}),g.raw+=r}g.items[g.items.length-1].raw=r.trimRight(),g.items[g.items.length-1].text=p.trimRight(),g.raw=g.raw.trimRight();let U=g.items.length;for(i=0;iy.type==="space"),w=F.every(y=>{let S=y.raw.split(""),O=0;for(let L of S)if(L===` -`&&(O+=1),O>1)return!0;return!1});!g.loose&&F.length&&w&&(g.loose=!0,g.items[i].loose=!0)}return g}}html(o){let t=this.rules.block.html.exec(o);if(t){let r={type:"html",raw:t[0],pre:!this.options.sanitizer&&(t[1]==="pre"||t[1]==="script"||t[1]==="style"),text:t[0]};return this.options.sanitize&&(r.type="paragraph",r.text=this.options.sanitizer?this.options.sanitizer(t[0]):Lo(t[0]),r.tokens=[],this.lexer.inline(r.text,r.tokens)),r}}def(o){let t=this.rules.block.def.exec(o);if(t){t[3]&&(t[3]=t[3].substring(1,t[3].length-1));let r=t[1].toLowerCase().replace(/\s+/g," ");return{type:"def",tag:r,raw:t[0],href:t[2],title:t[3]}}}table(o){let t=this.rules.block.table.exec(o);if(t){let r={type:"table",header:zw(t[1]).map(a=>({text:a})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split(` -`):[]};if(r.header.length===r.align.length){r.raw=t[0];let a=r.align.length,l,n,i,d;for(l=0;l({text:s}));for(a=r.header.length,n=0;n/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):Lo(t[0]):t[0]}}link(o){let t=this.rules.inline.link.exec(o);if(t){let r=t[2].trim();if(!this.options.pedantic&&/^$/.test(r))return;let n=Rd(r.slice(0,-1),"\\");if((r.length-n.length)%2==0)return}else{let n=_P(t[2],"()");if(n>-1){let d=(t[0].indexOf("!")===0?5:4)+t[1].length+n;t[2]=t[2].substring(0,n),t[0]=t[0].substring(0,d).trim(),t[3]=""}}let a=t[2],l="";if(this.options.pedantic){let n=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);n&&(a=n[1],l=n[3])}else l=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^$/.test(r)?a=a.slice(1):a=a.slice(1,-1)),Uw(t,{href:a&&a.replace(this.rules.inline._escapes,"$1"),title:l&&l.replace(this.rules.inline._escapes,"$1")},t[0],this.lexer)}}reflink(o,t){let r;if((r=this.rules.inline.reflink.exec(o))||(r=this.rules.inline.nolink.exec(o))){let a=(r[2]||r[1]).replace(/\s+/g," ");if(a=t[a.toLowerCase()],!a||!a.href){let l=r[0].charAt(0);return{type:"text",raw:l,text:l}}return Uw(r,a,r[0],this.lexer)}}emStrong(o,t,r=""){let a=this.rules.inline.emStrong.lDelim.exec(o);if(!a||a[3]&&r.match(/[\p{L}\p{N}]/u))return;let l=a[1]||a[2]||"";if(!l||l&&(r===""||this.rules.inline.punctuation.exec(r))){let n=a[0].length-1,i,d,s=n,u=0,f=a[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(f.lastIndex=0,t=t.slice(-1*o.length+n);(a=f.exec(t))!=null;){if(i=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!i)continue;if(d=i.length,a[3]||a[4]){s+=d;continue}else if((a[5]||a[6])&&n%3&&!((n+d)%3)){u+=d;continue}if(s-=d,s>0)continue;if(d=Math.min(d,d+s+u),Math.min(n,d)%2){let p=o.slice(1,n+a.index+d);return{type:"em",raw:o.slice(0,n+a.index+d+1),text:p,tokens:this.lexer.inlineTokens(p,[])}}let m=o.slice(2,n+a.index+d-1);return{type:"strong",raw:o.slice(0,n+a.index+d+1),text:m,tokens:this.lexer.inlineTokens(m,[])}}}}codespan(o){let t=this.rules.inline.code.exec(o);if(t){let r=t[2].replace(/\n/g," "),a=/[^ ]/.test(r),l=/^ /.test(r)&&/ $/.test(r);return a&&l&&(r=r.substring(1,r.length-1)),r=Lo(r,!0),{type:"codespan",raw:t[0],text:r}}}br(o){let t=this.rules.inline.br.exec(o);if(t)return{type:"br",raw:t[0]}}del(o){let t=this.rules.inline.del.exec(o);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2],[])}}autolink(o,t){let r=this.rules.inline.autolink.exec(o);if(r){let a,l;return r[2]==="@"?(a=Lo(this.options.mangle?t(r[1]):r[1]),l="mailto:"+a):(a=Lo(r[1]),l=a),{type:"link",raw:r[0],text:a,href:l,tokens:[{type:"text",raw:a,text:a}]}}}url(o,t){let r;if(r=this.rules.inline.url.exec(o)){let a,l;if(r[2]==="@")a=Lo(this.options.mangle?t(r[0]):r[0]),l="mailto:"+a;else{let n;do n=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])[0];while(n!==r[0]);a=Lo(r[0]),r[1]==="www."?l="http://"+a:l=a}return{type:"link",raw:r[0],text:a,href:l,tokens:[{type:"text",raw:a,text:a}]}}}inlineText(o,t){let r=this.rules.inline.text.exec(o);if(r){let a;return this.lexer.state.inRawBlock?a=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):Lo(r[0]):r[0]:a=Lo(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:a}}}},be={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)( [^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:Td,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};be._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/;be._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;be.def=uo(be.def).replace("label",be._label).replace("title",be._title).getRegex();be.bullet=/(?:[*+-]|\d{1,9}[.)])/;be.listItemStart=uo(/^( *)(bull) */).replace("bull",be.bullet).getRegex();be.list=uo(be.list).replace(/bull/g,be.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+be.def.source+")").getRegex();be._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";be._comment=/|$)/;be.html=uo(be.html,"i").replace("comment",be._comment).replace("tag",be._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();be.paragraph=uo(be._paragraph).replace("hr",be.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",be._tag).getRegex();be.blockquote=uo(be.blockquote).replace("paragraph",be.paragraph).getRegex();be.normal=Bt({},be);be.gfm=Bt({},be.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"});be.gfm.table=uo(be.gfm.table).replace("hr",be.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",be._tag).getRegex();be.gfm.paragraph=uo(be._paragraph).replace("hr",be.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",be.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",be._tag).getRegex();be.pedantic=Bt({},be.normal,{html:uo(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",be._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Td,paragraph:uo(be.normal._paragraph).replace("hr",be.hr).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",be.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var he={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Td,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Td,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~";he.punctuation=uo(he.punctuation).replace(/punctuation/g,he._punctuation).getRegex();he.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;he.escapedEmSt=/\\\*|\\_/g;he._comment=uo(be._comment).replace("(?:-->|$)","-->").getRegex();he.emStrong.lDelim=uo(he.emStrong.lDelim).replace(/punct/g,he._punctuation).getRegex();he.emStrong.rDelimAst=uo(he.emStrong.rDelimAst,"g").replace(/punct/g,he._punctuation).getRegex();he.emStrong.rDelimUnd=uo(he.emStrong.rDelimUnd,"g").replace(/punct/g,he._punctuation).getRegex();he._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;he._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;he._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;he.autolink=uo(he.autolink).replace("scheme",he._scheme).replace("email",he._email).getRegex();he._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;he.tag=uo(he.tag).replace("comment",he._comment).replace("attribute",he._attribute).getRegex();he._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;he._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;he._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;he.link=uo(he.link).replace("label",he._label).replace("href",he._href).replace("title",he._title).getRegex();he.reflink=uo(he.reflink).replace("label",he._label).replace("ref",be._label).getRegex();he.nolink=uo(he.nolink).replace("ref",be._label).getRegex();he.reflinkSearch=uo(he.reflinkSearch,"g").replace("reflink",he.reflink).replace("nolink",he.nolink).getRegex();he.normal=Bt({},he);he.pedantic=Bt({},he.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:uo(/^!?\[(label)\]\((.*?)\)/).replace("label",he._label).getRegex(),reflink:uo(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",he._label).getRegex()});he.gfm=Bt({},he.normal,{escape:uo(he.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\.5&&(r="x"+r.toString(16)),o+="&#"+r+";";return o}var er=class{constructor(o){this.tokens=[],this.tokens.links=Object.create(null),this.options=o||ol,this.options.tokenizer=this.options.tokenizer||new Fd,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={block:be.normal,inline:he.normal};this.options.pedantic?(t.block=be.pedantic,t.inline=he.pedantic):this.options.gfm&&(t.block=be.gfm,this.options.breaks?t.inline=he.breaks:t.inline=he.gfm),this.tokenizer.rules=t}static get rules(){return{block:be,inline:he}}static lex(o,t){return new er(t).lex(o)}static lexInline(o,t){return new er(t).inlineTokens(o)}lex(o){o=o.replace(/\r\n|\r/g,` +`+u;else break;!d&&!u.trim()&&(d=!0),r+=c+` +`,o=o.substring(c.length+1)}}S.loose||(s?S.loose=!0:/\n *\n *$/.test(r)&&(s=!0)),this.options.gfm&&(a=/^\[[ xX]\] /.exec(p),a&&(l=a[0]!=="[ ] ",p=p.replace(/^\[[ xX]\] +/,""))),S.items.push({type:"list_item",raw:r,task:!!a,checked:l,loose:!1,text:p}),S.raw+=r}S.items[S.items.length-1].raw=r.trimRight(),S.items[S.items.length-1].text=p.trimRight(),S.raw=S.raw.trimRight();let $=S.items.length;for(i=0;i<$;i++){this.lexer.state.top=!1,S.items[i].tokens=this.lexer.blockTokens(S.items[i].text,[]);let O=S.items[i].tokens.filter(v=>v.type==="space"),g=O.every(v=>{let w=v.raw.split(""),F=0;for(let B of w)if(B===` +`&&(F+=1),F>1)return!0;return!1});!S.loose&&O.length&&g&&(S.loose=!0,S.items[i].loose=!0)}return S}}html(o){let t=this.rules.block.html.exec(o);if(t){let r={type:"html",raw:t[0],pre:!this.options.sanitizer&&(t[1]==="pre"||t[1]==="script"||t[1]==="style"),text:t[0]};return this.options.sanitize&&(r.type="paragraph",r.text=this.options.sanitizer?this.options.sanitizer(t[0]):Lo(t[0]),r.tokens=[],this.lexer.inline(r.text,r.tokens)),r}}def(o){let t=this.rules.block.def.exec(o);if(t){t[3]&&(t[3]=t[3].substring(1,t[3].length-1));let r=t[1].toLowerCase().replace(/\s+/g," ");return{type:"def",tag:r,raw:t[0],href:t[2],title:t[3]}}}table(o){let t=this.rules.block.table.exec(o);if(t){let r={type:"table",header:jw(t[1]).map(a=>({text:a})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split(` +`):[]};if(r.header.length===r.align.length){r.raw=t[0];let a=r.align.length,l,n,i,d;for(l=0;l({text:s}));for(a=r.header.length,n=0;n/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):Lo(t[0]):t[0]}}link(o){let t=this.rules.inline.link.exec(o);if(t){let r=t[2].trim();if(!this.options.pedantic&&/^$/.test(r))return;let n=Td(r.slice(0,-1),"\\");if((r.length-n.length)%2==0)return}else{let n=VP(t[2],"()");if(n>-1){let d=(t[0].indexOf("!")===0?5:4)+t[1].length+n;t[2]=t[2].substring(0,n),t[0]=t[0].substring(0,d).trim(),t[3]=""}}let a=t[2],l="";if(this.options.pedantic){let n=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);n&&(a=n[1],l=n[3])}else l=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^$/.test(r)?a=a.slice(1):a=a.slice(1,-1)),Kw(t,{href:a&&a.replace(this.rules.inline._escapes,"$1"),title:l&&l.replace(this.rules.inline._escapes,"$1")},t[0],this.lexer)}}reflink(o,t){let r;if((r=this.rules.inline.reflink.exec(o))||(r=this.rules.inline.nolink.exec(o))){let a=(r[2]||r[1]).replace(/\s+/g," ");if(a=t[a.toLowerCase()],!a||!a.href){let l=r[0].charAt(0);return{type:"text",raw:l,text:l}}return Kw(r,a,r[0],this.lexer)}}emStrong(o,t,r=""){let a=this.rules.inline.emStrong.lDelim.exec(o);if(!a||a[3]&&r.match(/[\p{L}\p{N}]/u))return;let l=a[1]||a[2]||"";if(!l||l&&(r===""||this.rules.inline.punctuation.exec(r))){let n=a[0].length-1,i,d,s=n,u=0,f=a[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(f.lastIndex=0,t=t.slice(-1*o.length+n);(a=f.exec(t))!=null;){if(i=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!i)continue;if(d=i.length,a[3]||a[4]){s+=d;continue}else if((a[5]||a[6])&&n%3&&!((n+d)%3)){u+=d;continue}if(s-=d,s>0)continue;if(d=Math.min(d,d+s+u),Math.min(n,d)%2){let p=o.slice(1,n+a.index+d);return{type:"em",raw:o.slice(0,n+a.index+d+1),text:p,tokens:this.lexer.inlineTokens(p,[])}}let c=o.slice(2,n+a.index+d-1);return{type:"strong",raw:o.slice(0,n+a.index+d+1),text:c,tokens:this.lexer.inlineTokens(c,[])}}}}codespan(o){let t=this.rules.inline.code.exec(o);if(t){let r=t[2].replace(/\n/g," "),a=/[^ ]/.test(r),l=/^ /.test(r)&&/ $/.test(r);return a&&l&&(r=r.substring(1,r.length-1)),r=Lo(r,!0),{type:"codespan",raw:t[0],text:r}}}br(o){let t=this.rules.inline.br.exec(o);if(t)return{type:"br",raw:t[0]}}del(o){let t=this.rules.inline.del.exec(o);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2],[])}}autolink(o,t){let r=this.rules.inline.autolink.exec(o);if(r){let a,l;return r[2]==="@"?(a=Lo(this.options.mangle?t(r[1]):r[1]),l="mailto:"+a):(a=Lo(r[1]),l=a),{type:"link",raw:r[0],text:a,href:l,tokens:[{type:"text",raw:a,text:a}]}}}url(o,t){let r;if(r=this.rules.inline.url.exec(o)){let a,l;if(r[2]==="@")a=Lo(this.options.mangle?t(r[0]):r[0]),l="mailto:"+a;else{let n;do n=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])[0];while(n!==r[0]);a=Lo(r[0]),r[1]==="www."?l="http://"+a:l=a}return{type:"link",raw:r[0],text:a,href:l,tokens:[{type:"text",raw:a,text:a}]}}}inlineText(o,t){let r=this.rules.inline.text.exec(o);if(r){let a;return this.lexer.state.inRawBlock?a=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):Lo(r[0]):r[0]:a=Lo(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:a}}}},Oe={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)( [^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:wd,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};Oe._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/;Oe._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;Oe.def=so(Oe.def).replace("label",Oe._label).replace("title",Oe._title).getRegex();Oe.bullet=/(?:[*+-]|\d{1,9}[.)])/;Oe.listItemStart=so(/^( *)(bull) */).replace("bull",Oe.bullet).getRegex();Oe.list=so(Oe.list).replace(/bull/g,Oe.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+Oe.def.source+")").getRegex();Oe._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";Oe._comment=/|$)/;Oe.html=so(Oe.html,"i").replace("comment",Oe._comment).replace("tag",Oe._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();Oe.paragraph=so(Oe._paragraph).replace("hr",Oe.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Oe._tag).getRegex();Oe.blockquote=so(Oe.blockquote).replace("paragraph",Oe.paragraph).getRegex();Oe.normal=Lt({},Oe);Oe.gfm=Lt({},Oe.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"});Oe.gfm.table=so(Oe.gfm.table).replace("hr",Oe.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Oe._tag).getRegex();Oe.gfm.paragraph=so(Oe._paragraph).replace("hr",Oe.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",Oe.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Oe._tag).getRegex();Oe.pedantic=Lt({},Oe.normal,{html:so(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Oe._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:wd,paragraph:so(Oe.normal._paragraph).replace("hr",Oe.hr).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",Oe.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var ce={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:wd,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:wd,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~";ce.punctuation=so(ce.punctuation).replace(/punctuation/g,ce._punctuation).getRegex();ce.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;ce.escapedEmSt=/\\\*|\\_/g;ce._comment=so(Oe._comment).replace("(?:-->|$)","-->").getRegex();ce.emStrong.lDelim=so(ce.emStrong.lDelim).replace(/punct/g,ce._punctuation).getRegex();ce.emStrong.rDelimAst=so(ce.emStrong.rDelimAst,"g").replace(/punct/g,ce._punctuation).getRegex();ce.emStrong.rDelimUnd=so(ce.emStrong.rDelimUnd,"g").replace(/punct/g,ce._punctuation).getRegex();ce._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;ce._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;ce._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;ce.autolink=so(ce.autolink).replace("scheme",ce._scheme).replace("email",ce._email).getRegex();ce._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;ce.tag=so(ce.tag).replace("comment",ce._comment).replace("attribute",ce._attribute).getRegex();ce._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;ce._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;ce._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;ce.link=so(ce.link).replace("label",ce._label).replace("href",ce._href).replace("title",ce._title).getRegex();ce.reflink=so(ce.reflink).replace("label",ce._label).replace("ref",Oe._label).getRegex();ce.nolink=so(ce.nolink).replace("ref",Oe._label).getRegex();ce.reflinkSearch=so(ce.reflinkSearch,"g").replace("reflink",ce.reflink).replace("nolink",ce.nolink).getRegex();ce.normal=Lt({},ce);ce.pedantic=Lt({},ce.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:so(/^!?\[(label)\]\((.*?)\)/).replace("label",ce._label).getRegex(),reflink:so(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",ce._label).getRegex()});ce.gfm=Lt({},ce.normal,{escape:so(ce.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\.5&&(r="x"+r.toString(16)),o+="&#"+r+";";return o}var er=class{constructor(o){this.tokens=[],this.tokens.links=Object.create(null),this.options=o||rl,this.options.tokenizer=this.options.tokenizer||new Rd,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={block:Oe.normal,inline:ce.normal};this.options.pedantic?(t.block=Oe.pedantic,t.inline=ce.pedantic):this.options.gfm&&(t.block=Oe.gfm,this.options.breaks?t.inline=ce.breaks:t.inline=ce.gfm),this.tokenizer.rules=t}static get rules(){return{block:Oe,inline:ce}}static lex(o,t){return new er(t).lex(o)}static lexInline(o,t){return new er(t).inlineTokens(o)}lex(o){o=o.replace(/\r\n|\r/g,` `).replace(/\t/g," "),this.blockTokens(o,this.tokens);let t;for(;t=this.inlineQueue.shift();)this.inlineTokens(t.src,t.tokens);return this.tokens}blockTokens(o,t=[]){this.options.pedantic&&(o=o.replace(/^ +$/gm,""));let r,a,l,n;for(;o;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(i=>(r=i.call({lexer:this},o,t))?(o=o.substring(r.raw.length),t.push(r),!0):!1))){if(r=this.tokenizer.space(o)){o=o.substring(r.raw.length),r.raw.length===1&&t.length>0?t[t.length-1].raw+=` `:t.push(r);continue}if(r=this.tokenizer.code(o)){o=o.substring(r.raw.length),a=t[t.length-1],a&&(a.type==="paragraph"||a.type==="text")?(a.raw+=` `+r.raw,a.text+=` @@ -977,7 +977,7 @@ ${a} `+r.raw,a.text+=` `+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):t.push(r),n=l.length!==o.length,o=o.substring(r.raw.length);continue}if(r=this.tokenizer.text(o)){o=o.substring(r.raw.length),a=t[t.length-1],a&&a.type==="text"?(a.raw+=` `+r.raw,a.text+=` -`+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):t.push(r);continue}if(o){let i="Infinite loop on byte: "+o.charCodeAt(0);if(this.options.silent){console.error(i);break}else throw new Error(i)}}return this.state.top=!0,t}inline(o,t){this.inlineQueue.push({src:o,tokens:t})}inlineTokens(o,t=[]){let r,a,l,n=o,i,d,s;if(this.tokens.links){let u=Object.keys(this.tokens.links);if(u.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)u.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+$w("a",i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+$w("a",i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(i=this.tokenizer.rules.inline.escapedEmSt.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;o;)if(d||(s=""),d=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(u=>(r=u.call({lexer:this},o,t))?(o=o.substring(r.raw.length),t.push(r),!0):!1))){if(r=this.tokenizer.escape(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(o)){o=o.substring(r.raw.length),a=t[t.length-1],a&&r.type==="text"&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(r=this.tokenizer.link(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(o,this.tokens.links)){o=o.substring(r.raw.length),a=t[t.length-1],a&&r.type==="text"&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(o,n,s)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(o,Kw)){o=o.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(o,Kw))){o=o.substring(r.raw.length),t.push(r);continue}if(l=o,this.options.extensions&&this.options.extensions.startInline){let u=1/0,f=o.slice(1),m;this.options.extensions.startInline.forEach(function(p){m=p.call({lexer:this},f),typeof m=="number"&&m>=0&&(u=Math.min(u,m))}),u<1/0&&u>=0&&(l=o.substring(0,u+1))}if(r=this.tokenizer.inlineText(l,HP)){o=o.substring(r.raw.length),r.raw.slice(-1)!=="_"&&(s=r.raw.slice(-1)),d=!0,a=t[t.length-1],a&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(o){let u="Infinite loop on byte: "+o.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}},Od=class{constructor(o){this.options=o||ol}code(o,t,r){let a=(t||"").match(/\S*/)[0];if(this.options.highlight){let l=this.options.highlight(o,a);l!=null&&l!==o&&(r=!0,o=l)}return o=o.replace(/\n$/,"")+` +`+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):t.push(r);continue}if(o){let i="Infinite loop on byte: "+o.charCodeAt(0);if(this.options.silent){console.error(i);break}else throw new Error(i)}}return this.state.top=!0,t}inline(o,t){this.inlineQueue.push({src:o,tokens:t})}inlineTokens(o,t=[]){let r,a,l,n=o,i,d,s;if(this.tokens.links){let u=Object.keys(this.tokens.links);if(u.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)u.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+Uw("a",i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+Uw("a",i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(i=this.tokenizer.rules.inline.escapedEmSt.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;o;)if(d||(s=""),d=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(u=>(r=u.call({lexer:this},o,t))?(o=o.substring(r.raw.length),t.push(r),!0):!1))){if(r=this.tokenizer.escape(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(o)){o=o.substring(r.raw.length),a=t[t.length-1],a&&r.type==="text"&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(r=this.tokenizer.link(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(o,this.tokens.links)){o=o.substring(r.raw.length),a=t[t.length-1],a&&r.type==="text"&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(o,n,s)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(o,Gw)){o=o.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(o,Gw))){o=o.substring(r.raw.length),t.push(r);continue}if(l=o,this.options.extensions&&this.options.extensions.startInline){let u=1/0,f=o.slice(1),c;this.options.extensions.startInline.forEach(function(p){c=p.call({lexer:this},f),typeof c=="number"&&c>=0&&(u=Math.min(u,c))}),u<1/0&&u>=0&&(l=o.substring(0,u+1))}if(r=this.tokenizer.inlineText(l,jP)){o=o.substring(r.raw.length),r.raw.slice(-1)!=="_"&&(s=r.raw.slice(-1)),d=!0,a=t[t.length-1],a&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(o){let u="Infinite loop on byte: "+o.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}},Fd=class{constructor(o){this.options=o||rl}code(o,t,r){let a=(t||"").match(/\S*/)[0];if(this.options.highlight){let l=this.options.highlight(o,a);l!=null&&l!==o&&(r=!0,o=l)}return o=o.replace(/\n$/,"")+` `,a?'
'+(r?o:Lo(o,!0))+`
`:"
"+(r?o:Lo(o,!0))+`
`}blockquote(o){return`
@@ -997,13 +997,14 @@ ${a} `}tablerow(o){return` `+o+` `}tablecell(o,t){let r=t.header?"th":"td";return(t.align?"<"+r+' align="'+t.align+'">':"<"+r+">")+o+" -`}strong(o){return""+o+""}em(o){return""+o+""}codespan(o){return""+o+""}br(){return this.options.xhtml?"
":"
"}del(o){return""+o+""}link(o,t,r){if(o=Vw(this.options.sanitize,this.options.baseUrl,o),o===null)return r;let a='",a}image(o,t,r){if(o=Vw(this.options.sanitize,this.options.baseUrl,o),o===null)return r;let a=''+r+'":">",a}text(o){return o}},wp=class{strong(o){return o}em(o){return o}codespan(o){return o}del(o){return o}html(o){return o}text(o){return o}link(o,t,r){return""+r}image(o,t,r){return""+r}br(){return""}},Tp=class{constructor(){this.seen={}}serialize(o){return o.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(o,t){let r=o,a=0;if(this.seen.hasOwnProperty(r)){a=this.seen[o];do a++,r=o+"-"+a;while(this.seen.hasOwnProperty(r))}return t||(this.seen[o]=a,this.seen[r]=0),r}slug(o,t={}){let r=this.serialize(o);return this.getNextSafeSlug(r,t.dryrun)}},or=class{constructor(o){this.options=o||ol,this.options.renderer=this.options.renderer||new Od,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new wp,this.slugger=new Tp}static parse(o,t){return new or(t).parse(o)}static parseInline(o,t){return new or(t).parseInline(o)}parse(o,t=!0){let r="",a,l,n,i,d,s,u,f,m,p,c,T,C,g,k,U,F,w,y,S=o.length;for(a=0;a0&&k.tokens[0].type==="paragraph"?(k.tokens[0].text=w+" "+k.tokens[0].text,k.tokens[0].tokens&&k.tokens[0].tokens.length>0&&k.tokens[0].tokens[0].type==="text"&&(k.tokens[0].tokens[0].text=w+" "+k.tokens[0].tokens[0].text)):k.tokens.unshift({type:"text",text:w}):g+=w),g+=this.parse(k.tokens,C),m+=this.renderer.listitem(g,F,U);r+=this.renderer.list(m,c,T);continue}case"html":{r+=this.renderer.html(p.text);continue}case"paragraph":{r+=this.renderer.paragraph(this.parseInline(p.tokens));continue}case"text":{for(m=p.tokens?this.parseInline(p.tokens):p.text;a+1{r(i.text,i.lang,function(d,s){if(d)return l(d);s!=null&&s!==i.text&&(i.text=s,i.escaped=!0),n--,n===0&&l()})},0))}),n===0&&l();return}try{let r=er.lex(e,o);return o.walkTokens&&ve.walkTokens(r,o.walkTokens),or.parse(r,o)}catch(r){if(r.message+=` -Please report this to https://github.com/markedjs/marked.`,o.silent)return"

An error occurred:

"+Lo(r.message+"",!0)+"
";throw r}}ve.options=ve.setOptions=function(e){return Bt(ve.defaults,e),OP(ve.defaults),ve};ve.getDefaults=Iw;ve.defaults=ol;ve.use=function(...e){let o=Bt({},...e),t=ve.defaults.extensions||{renderers:{},childTokens:{}},r;e.forEach(a=>{if(a.extensions&&(r=!0,a.extensions.forEach(l=>{if(!l.name)throw new Error("extension name required");if(l.renderer){let n=t.renderers?t.renderers[l.name]:null;n?t.renderers[l.name]=function(...i){let d=l.renderer.apply(this,i);return d===!1&&(d=n.apply(this,i)),d}:t.renderers[l.name]=l.renderer}if(l.tokenizer){if(!l.level||l.level!=="block"&&l.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");t[l.level]?t[l.level].unshift(l.tokenizer):t[l.level]=[l.tokenizer],l.start&&(l.level==="block"?t.startBlock?t.startBlock.push(l.start):t.startBlock=[l.start]:l.level==="inline"&&(t.startInline?t.startInline.push(l.start):t.startInline=[l.start]))}l.childTokens&&(t.childTokens[l.name]=l.childTokens)})),a.renderer){let l=ve.defaults.renderer||new Od;for(let n in a.renderer){let i=l[n];l[n]=(...d)=>{let s=a.renderer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.renderer=l}if(a.tokenizer){let l=ve.defaults.tokenizer||new Fd;for(let n in a.tokenizer){let i=l[n];l[n]=(...d)=>{let s=a.tokenizer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.tokenizer=l}if(a.walkTokens){let l=ve.defaults.walkTokens;o.walkTokens=function(n){a.walkTokens.call(this,n),l&&l.call(this,n)}}r&&(o.extensions=t),ve.setOptions(o)})};ve.walkTokens=function(e,o){for(let t of e)switch(o.call(ve,t),t.type){case"table":{for(let r of t.header)ve.walkTokens(r.tokens,o);for(let r of t.rows)for(let a of r)ve.walkTokens(a.tokens,o);break}case"list":{ve.walkTokens(t.items,o);break}default:ve.defaults.extensions&&ve.defaults.extensions.childTokens&&ve.defaults.extensions.childTokens[t.type]?ve.defaults.extensions.childTokens[t.type].forEach(function(r){ve.walkTokens(t[r],o)}):t.tokens&&ve.walkTokens(t.tokens,o)}};ve.parseInline=function(e,o){if(typeof e=="undefined"||e===null)throw new Error("marked.parseInline(): input parameter is undefined or null");if(typeof e!="string")throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");o=Bt({},ve.defaults,o||{}),jw(o);try{let t=er.lexInline(e,o);return o.walkTokens&&ve.walkTokens(t,o.walkTokens),or.parseInline(t,o)}catch(t){if(t.message+=` -Please report this to https://github.com/markedjs/marked.`,o.silent)return"

An error occurred:

"+Lo(t.message+"",!0)+"
";throw t}};ve.Parser=or;ve.parser=or.parse;ve.Renderer=Od;ve.TextRenderer=wp;ve.Lexer=er;ve.lexer=er.lex;ve.Tokenizer=Fd;ve.Slugger=Tp;ve.parse=ve;var Hte=ve.options,Wte=ve.setOptions,Vte=ve.use,zte=ve.walkTokens,jte=ve.parseInline;var $te=or.parse,Ute=er.lex;var tl=Ra(require("obsidian"));var te=It({activeView(){this.plugin.activateView(),this.refreshTree()},headers:[],dark:!0,cssChange:!1,markdown:!0,ellipsis:!1,labelDirection:"left",leafChange:!1,searchSupport:!0,levelSwitch:!0,hideUnsearched:!0,regexSearch:!1,autoExpand:!0,dragModify:!1,refreshTree(){this.leafChange=!this.leafChange},patchColor:!1,primaryColorLight:"",primaryColorDark:"",rainbowLine:!1,rainbowColor1:"",rainbowColor2:"",rainbowColor3:"",rainbowColor4:"",rainbowColor5:"",currentNote:null});var Gw={name:"formula",level:"inline",start(e){var o;return(o=e.match(/\$/))==null?void 0:o.index},tokenizer(e,o){let r=/^\$([^\$]+)\$/.exec(e);if(r)return{type:"formula",raw:r[0],formula:r[1].trim()}},renderer(e){try{let o=(0,tl.renderMath)(e.formula,!1).outerHTML;return(0,tl.finishRenderMath)(),o}catch(o){return(0,tl.loadMathJax)().then(()=>{te.refreshTree()}),!1}}},qw={name:"internal",level:"inline",start(e){var o;return(o=e.match(/\[\[/))==null?void 0:o.index},tokenizer(e,o){let r=/^\[\[([^\[\]]+?)\]\]/.exec(e);if(r){let a=/.*\|(.*)/.exec(r[1]);return{type:"internal",raw:r[0],internal:a?a[1]:r[1]}}},renderer(e){return`${e.internal}`}},Qw={name:"highlight",level:"inline",start(e){var o;return(o=e.match(/==/))==null?void 0:o.index},tokenizer(e,o){let r=/^==([^=]+)==/.exec(e);if(r)return{type:"highlight",raw:r[0],internal:r[1]}},renderer(e){return`${e.internal}`}},Zw={name:"tag",level:"inline",start(e){var o;return(o=e.match(/\s#/))==null?void 0:o.index},tokenizer(e,o){let r=/^\s#([^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\d\s][^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\s]*)/.exec(e);if(r)return{type:"tag",raw:r[0],internal:r[1]}},renderer(e){return`
#${e.internal}`}},Yw=e=>{e.type==="link"&&(e.href="javascript:void(0);")},Xw={list(e,o,t){return o?`

${t}. ${e}

`:`

${e}

`},listitem(e,o,t){return`${e}`}};var Cd=ie({__name:"Outline",setup(e,{expose:o}){o(),Xm(E=>({"762e1073-rainbowColor1":yr(i),"762e1073-rainbowColor2":yr(d),"762e1073-rainbowColor3":yr(s),"762e1073-rainbowColor4":yr(u),"762e1073-rainbowColor5":yr(f)}));let t=It({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""}}),r=It({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""}}),a=z(()=>te.dark?xd:null),l=z(()=>te.dark?{color:"#a3a3a3"}:{color:"#727272"});function n(){let E=document.body.createEl("button",{cls:"mod-cta",attr:{style:"width: 0px; height: 0px;"}}),le=getComputedStyle(E,null).getPropertyValue("background-color");return E.remove(),le}Mo(()=>{if(te.patchColor){t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=te.primaryColorLight,t.Slider.dotBorderActive=`2px solid ${te.primaryColorLight}`,r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=te.primaryColorDark,r.Slider.dotBorderActive=`2px solid ${te.primaryColorDark}`;return}if(te.cssChange===te.cssChange){let E=n();t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=E,t.Slider.dotBorderActive=r.Slider.dotBorderActive=`2px solid ${E}`}});let i=Z(""),d=Z(""),s=Z(""),u=Z(""),f=Z("");function m(E){return`${parseInt(E.slice(1,3),16)},${parseInt(E.slice(3,5),16)},${parseInt(E.slice(5,7),16)}`}Mo(()=>{if(te.rainbowLine){i.value=`rgba(${m(te.rainbowColor1)}, 0.6)`,d.value=`rgba(${m(te.rainbowColor2)}, 0.6)`,s.value=`rgba(${m(te.rainbowColor3)}, 0.6)`,u.value=`rgba(${m(te.rainbowColor4)}, 0.6)`,f.value=`rgba(${m(te.rainbowColor5)}, 0.6)`;return}te.cssChange===te.cssChange&&(i.value=d.value=s.value=u.value=f.value="var(--nav-indentation-guide-color)")}),mo(()=>{addEventListener("quiet-outline-reset",Ze)}),Jr(()=>{removeEventListener("quiet-outline-reset",Ze)});let p=ht(),c=p.appContext.config.globalProperties.plugin,T=p.appContext.config.globalProperties.container;mo(()=>{document.addEventListener("scroll",g,!0)}),Jr(()=>{document.removeEventListener("scroll",g,!0)});let C=(E,le)=>"item-"+E.level+"-"+le,g=(0,rl.debounce)(k,100);function k(E){let le=E.target;if(!le.classList.contains("markdown-preview-view")&&!le.classList.contains("cm-scroller"))return;let x=c.app.workspace.getActiveViewOfType(rl.MarkdownView);if(!x)return;let h=x.currentMode.getScroll()+8,P=null,N=te.headers.length;for(;--N>=0;)if(te.headers[N].position.start.line<=h){P=te.headers[N];break}if(!P)return;let H=N;if(c.settings.auto_expand){let I=H0&&(te.headers[N].level{let I=T.querySelector(`#no-${H}`);I&&(I.addClass("located"),I.scrollIntoView({block:"center",behavior:"smooth"}))},0)}let U=z(()=>E=>{let le=parseInt(E.option.key.split("-")[1]),x=parseInt(E.option.key.split("-")[2]);return{class:`level-${le}`,id:`no-${x}`,"aria-label":te.ellipsis?E.option.label:"","aria-label-position":te.labelDirection}}),F=Z(parseInt(c.settings.expand_level)),w=Z([]);S(F.value);function y(E,le){w.value=E}function S(E){w.value=te.headers.map((le,x)=>"item-"+le.level+"-"+x).filter((le,x,h)=>{let P=N=>parseInt(N.split("-")[1]);return x===h.length-1||P(h[x])>=P(h[x+1])?!1:P(le)<=E})}Xe(F,(E,le)=>{S(E)});let O=Z(0);Xe(()=>te.leafChange,()=>{let E=F.value,le=B.value;B.value="",F.value=parseInt(c.settings.expand_level),E===F.value&&S(F.value),No(()=>{B.value=le})});let L={0:"",1:"",2:"",3:"",4:"",5:""};function b(E){let le=te.headers.filter(x=>x.level===E).length;return E>0?`H${E}: ${le}`:"No expand"}let W=z(()=>te.markdown?ze:null),B=Z("");function ne(E,le){return RegExp(E,"i").test(le.label)}function ge(E,le){return le.label.toLowerCase().contains(E.toLowerCase())}let Pe=z(()=>te.regexSearch?ne:ge),ue=z(()=>te.headers.filter(E=>{let le={label:E.heading};return Pe.value(B.value,le)}).length);function se(E,le){return qe(this,null,function*(){if(le[0]===void 0)return;let x=le[0].key.split("-"),h=parseInt(x[2]),P=te.headers[h].position.start.line,N=c.current_note;N&&(N.setEphemeralState({line:P}),setTimeout(()=>{N.setEphemeralState({line:P})},100))})}let Te=z(()=>je(te.headers));function je(E){return Ge(E)}function Ge(E){let le={children:[]},x=[{node:le,level:-1}];return E.forEach((h,P)=>{let N={label:h.heading,key:"item-"+h.level+"-"+P,line:h.position.start.line};for(;h.level<=x.last().level;)x.pop();let H=x.last().node;H.children===void 0&&(H.children=[]),H.children.push(N),x.push({node:N,level:h.level})}),le.children}ve.use({extensions:[Gw,qw,Qw,Zw]}),ve.use({walkTokens:Yw}),ve.use({renderer:Xw});function ze({option:E}){let le=ve.parse(E.label).trim(),x=0,h=le.match(/.*?<\/mjx-container>/g);return le=(0,rl.sanitizeHTMLToDom)(`
${le}
`).children[0].innerHTML,le=le.replace(/.*?<\/math>/g,()=>h[x++]),R("div",{innerHTML:le})}function Ze(){B.value="",F.value=parseInt(c.settings.expand_level),S(F.value)}function Ye(h){return qe(this,arguments,function*({node:E,dragNode:le,dropPosition:x}){let P=c.app.workspace.getActiveFile(),N=(yield c.app.vault.read(P)).split(` -`),H=Ve(w.value),$=Ie(le),Y=$+Ce(le)-1,I=0,V=0;switch(x){case"inside":E=E.children.last();case"after":{$>Ie(E)+Ce(E)?(I=Ie(E)+Ce(E),V=$-1):(I=Y+1,V=Ie(E)+Ce(E)-1);break}case"before":{$>Ie(E)?(I=Ie(E),V=$-1):(I=$+Ce(le),V=Ie(E)-1);break}}let q=fo(E)-fo(le);He(H,$,Y,I,V,q),ko(N,ho($)[0],ho(Y)[1]||N.length-1,ho(I)[0],ho(V)[1]||N.length-1,q),c.app.vault.modify(P,N.join(` -`))})}function ho(E){var le;return[te.headers[E].position.start.line,((le=te.headers[E+1])==null?void 0:le.position.start.line)-1]}function ko(E,le,x,h,P,N){let H=0;if(le0?E[$]=Array(N).fill("#").join("")+E[$]:E[$]=E[$].slice(-N))}function He(E,le,x,h,P,N){let H=0,$=0;le{let V=Ie(Y);le<=V&&V<=x&&(E[I]=`item-${fo(Y)+N}-${H+(V-le)}`),h<=V&&V<=P&&(E[I]=`item-${fo(Y)}-${$+(V-h)}`)})}function Ie(E){return typeof E!="string"&&(E=E.key),parseInt(E.split("-")[2])}function fo(E){return typeof E!="string"&&(E=E.key),parseInt(E.split("-")[1])}function Ce(E){return E.children?E.children.reduce((le,x)=>le+Ce(x),1):1}let ro={lightThemeConfig:t,darkThemeConfig:r,get theme(){return a},set theme(E){a=E},get iconColor(){return l},set iconColor(E){l=E},getDefaultColor:n,get rainbowColor1(){return i},set rainbowColor1(E){i=E},get rainbowColor2(){return d},set rainbowColor2(E){d=E},get rainbowColor3(){return s},set rainbowColor3(E){s=E},get rainbowColor4(){return u},set rainbowColor4(E){u=E},get rainbowColor5(){return f},set rainbowColor5(E){f=E},hexToRGB:m,get compomentSelf(){return p},set compomentSelf(E){p=E},get plugin(){return c},set plugin(E){c=E},get container(){return T},set container(E){T=E},get toKey(){return C},set toKey(E){C=E},get handleScroll(){return g},set handleScroll(E){g=E},_handleScroll:k,setAttrs:U,get level(){return F},set level(E){F=E},get expanded(){return w},set expanded(E){w=E},expand:y,switchLevel:S,get update_tree(){return O},set update_tree(E){O=E},marks:L,formatTooltip:b,get renderMethod(){return W},set renderMethod(E){W=E},get pattern(){return B},set pattern(E){B=E},regexFilter:ne,simpleFilter:ge,get filter(){return Pe},set filter(E){Pe=E},get matchCount(){return ue},set matchCount(E){ue=E},jump:se,get data2(){return Te},set data2(E){Te=E},makeTree:je,arrToTree:Ge,renderLabel:ze,reset:Ze,onDrop:Ye,getLine:ho,moveSection:ko,changeExpandKey:He,getNo:Ie,getLevel:fo,countTree:Ce,get NTree(){return dp},get NButton(){return Cu},get NInput(){return hu},get NSlider(){return lp},get NConfigProvider(){return Hu},get Icon(){return Sp},get SettingsBackupRestoreRound(){return gp},get store(){return te}};return Object.defineProperty(ro,"__isScriptSetup",{enumerable:!1,value:!0}),ro}});var WP={id:"container"},VP={key:0,class:"function-bar"},zP={key:2};function Jw(e,o,t,r,a,l){return Wt(),Ma("div",WP,[Fo(r.NConfigProvider,{theme:r.theme,"theme-overrides":r.theme===null?r.lightThemeConfig:r.darkThemeConfig},{default:gl(()=>[r.store.searchSupport?(Wt(),Ma("div",VP,[Fo(r.NButton,{size:"small",circle:"",onClick:r.reset},{icon:gl(()=>[Fo(r.Icon,null,{default:gl(()=>[Fo(r.SettingsBackupRestoreRound,{style:Ur(r.iconColor)},null,8,["style"])]),_:1})]),_:1}),Fo(r.NInput,{value:r.pattern,"onUpdate:value":o[0]||(o[0]=n=>r.pattern=n),placeholder:"Input to search",size:"small",clearable:""},null,8,["value"])])):oi("v-if",!0),r.store.levelSwitch?(Wt(),bl(r.NSlider,{key:1,value:r.level,"onUpdate:value":o[1]||(o[1]=n=>r.level=n),marks:r.marks,step:"mark",min:0,max:5,style:{margin:"4px 0"},"format-tooltip":r.formatTooltip},null,8,["value"])):oi("v-if",!0),r.pattern?(Wt(),Ma("code",zP,vd(r.matchCount)+" result(s): ",1)):oi("v-if",!0),(Wt(),bl(r.NTree,{"block-line":"",pattern:r.pattern,data:r.data2,"on-update:selected-keys":r.jump,"render-label":r.renderMethod,"node-props":r.setAttrs,"expanded-keys":r.expanded,"on-update:expanded-keys":r.expand,key:r.update_tree,filter:r.filter,"show-irrelevant-nodes":!r.store.hideUnsearched,class:Kr({ellipsis:r.store.ellipsis}),draggable:r.store.dragModify,onDrop:r.onDrop},null,8,["pattern","data","render-label","node-props","expanded-keys","filter","show-irrelevant-nodes","class","draggable"]))]),_:1},8,["theme","theme-overrides"])])}Cd.render=Jw;Cd.__file="src\\Outline.vue";var eT=Cd;var ga="quiet-outline",Rp=class extends oT.ItemView{constructor(o,t){super(o);this.plugin=t}getViewType(){return ga}getDisplayText(){return"Quiet Outline"}getIcon(){return"lines-of-text"}onOpen(){return qe(this,null,function*(){let o=this.containerEl.children[1];o.empty();let t=o.createEl("div",{cls:"quiet-outline"});this.vueApp=pc(eT),this.vueApp.config.globalProperties.plugin=this.plugin,this.vueApp.config.globalProperties.container=t,this.vueApp.mount(t)})}onClose(){return qe(this,null,function*(){})}onunload(){this.vueApp.unmount()}};var Jo=Ra(require("obsidian"));var tT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8BBE\u7F6E\u9875\u9762","Set Primary Color":"\u8BBE\u7F6E\u4E3B\u989C\u8272 \u660E/\u6697","Patch default color":"\u7528\u8BBE\u7F6E\u8986\u76D6\u9ED8\u8BA4\u4E3B\u989C\u8272","Set Rainbow Line Color":"\u8BBE\u7F6E\u5F69\u8679\u5927\u7EB2\u7EBF\u989C\u8272","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6807\u9898\u6587\u672C","Search Support":"\u5F00\u542F\u641C\u7D22","Add a searching area on the top":"\u5728\u9876\u90E8\u6DFB\u52A0\u4E00\u4E2A\u641C\u7D22\u6846","Level Switch":"\u5C42\u7EA7\u5207\u6362\u5668","Expand headings to certain level.":"\u5C55\u5F00\u6807\u9898\u5230\u7279\u5B9A\u5C42\u7EA7","Default Level":"\u9ED8\u8BA4\u5C42\u7EA7","Default expand level when opening a new note.":"\u6253\u5F00\u65B0\u7B14\u8BB0\u65F6\uFF0C\u6807\u9898\u5C55\u5F00\u5230\u7684\u9ED8\u8BA4\u5C42\u7EA7","No expand":"\u4E0D\u5C55\u5F00","Hide Unsearched":"\u8FC7\u6EE4\u672A\u641C\u7D22\u7684\u6807\u9898","Hide irrelevant headings when searching":"\u641C\u7D22\u65F6\uFF0C\u9690\u85CF\u672A\u547D\u4E2D\u7684\u6807\u9898","Regex Search":"\u6B63\u5219\u641C\u7D22","Search headings using regular expression":"\u652F\u6301\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u6765\u641C\u7D22","Auto Expand":"\u81EA\u52A8\u5C55\u5F00","Auto expand and collapse headings when scrolling":"\u5F53\u6EDA\u52A8\u9875\u9762\u65F6\uFF0C\u81EA\u52A8\u8DDF\u8E2A\u5F53\u524D\u6240\u5728\u6807\u9898\u5E76\u5C55\u5F00",Ellipsis:"\u7701\u7565\u957F\u6807\u9898","Tooltip direction":"\u5B8C\u6574\u6807\u9898\u663E\u793A\u65B9\u5411","Keep one line per heading":"\u4FDD\u6301\u6807\u9898\u53EA\u6709\u4E00\u884C,\u7701\u7565\u591A\u4F59\u90E8\u5206","Drag headings to modify note":"\u542F\u7528\u62D6\u62FD\u6807\u9898\u6765\u8C03\u6574\u6587\u6863\u7ED3\u679C","\u2757 This will modify note content, be careful.":"\u2757 \u62D6\u62FD\u64CD\u4F5C\u4F1A\u6539\u53D8\u6587\u6863\u5185\u5BB9\uFF0C\u5C0F\u5FC3\u4F7F\u7528"};var Fp={"Settings for Quiet Outline.":"Settings for Quiet Outline.","Set Primary Color":"Set Primary Color Light/Dark","Patch default color":"Patch default color","Set Rainbow Line Color":"Set Rainbow Line Color","Render Markdown":"Render Markdown","Render heading string as markdown format.":"Render heading string as markdown format","Search Support":"Search Support","Add a searching area on the top":"Add a search area on the top","Level Switch":"Level Switch","Expand headings to certain level.":"Expand headings to certain level","Default Level":"Default Level","Default expand level when opening a new note.":"Default expand level","No expand":"No expand","Hide Unsearched":"Hide Unsearched","Hide irrelevant headings when searching":"Hide irrelevant headings when searching","Regex Search":"Regex Search","Search headings using regular expression":"Search headings using regular expression","Auto Expand":"Auto Expand","Auto expand and collapse headings when scrolling":"Auto expand and collapse headings when scrolling",Ellipsis:"Ellipsis","Tooltip direction":"Tooltip direction","Keep one line per heading":"Keep one line per heading","Drag headings to modify note":"Drag headings to modify note","\u2757 This will modify note content, be careful.":"\u2757 This will modify note content, be careful"};var rT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8A2D\u5B9A\u9801\u9762","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6A19\u984C\u6587\u5B57","Search Support":"\u958B\u555F\u641C\u7D22","Add a searching area on the top":"\u5728\u9802\u90E8\u65B0\u589E\u4E00\u500B\u641C\u7D22\u6846","Level Switch":"\u5C64\u7D1A\u5207\u63DB","Expand headings to certain level.":"\u5C55\u958B\u6A19\u984C\u5230\u7279\u5B9A\u5C64\u7D1A","Default Level":"\u9810\u8A2D\u5C64\u7D1A","Default expand level when opening a new note.":"\u6253\u958B\u65B0\u7B46\u8A18\u6642\uFF0C\u6A19\u984C\u5C55\u958B\u5230\u7684\u9810\u8A2D\u5C64\u7D1A","No expand":"\u4E0D\u5C55\u958B","Hide Unsearched":"\u904E\u6FFE\u672A\u641C\u7D22\u7684\u6A19\u984C","Hide irrelevant headings when searching":"\u641C\u7D22\u6642\uFF0C\u96B1\u85CF\u672A\u547D\u4E2D\u7684\u6A19\u984C","Regex Search":"\u6B63\u5247\u641C\u7D22","Search headings using regular expression":"\u652F\u63F4\u4F7F\u7528\u6B63\u5247\u904B\u7B97\u5F0F\u4F86\u641C\u7D22","Auto Expand":"\u81EA\u52D5\u5C55\u958B","Auto expand and collapse headings when scrolling":"\u7576\u6372\u52D5\u9801\u9762\u6642\uFF0C\u81EA\u52D5\u8DDF\u96A8\u76EE\u524D\u6240\u5728\u6A19\u984C\u4E26\u5C55\u958B",Ellipsis:"\u7701\u7565\u9577\u6A19\u984C","Keep one line per heading":"\u4FDD\u6301\u6A19\u984C\u53EA\u6709\u4E00\u884C\uFF0C\u7701\u7565\u591A\u9918\u90E8\u5206"};var jP={en:Fp,zh:tT,"zh-TW":rT},$P=window.localStorage.getItem("language"),aT=jP[$P||"en"];function co(e){return aT&&aT[e]||Fp[e]}var lT={patch_color:!0,primary_color_light:"#18a058",primary_color_dark:"#63e2b7",rainbow_line:!1,rainbow_color_1:"#FD8B1F",rainbow_color_2:"#FFDF00",rainbow_color_3:"#07EB23",rainbow_color_4:"#2D8FF0",rainbow_color_5:"#BC01E2",search_support:!0,level_switch:!0,markdown:!0,expand_level:"0",hide_unsearched:!0,auto_expand:!0,regex_search:!1,ellipsis:!1,label_direction:"left",drag_modify:!1},Op=class extends Jo.PluginSettingTab{constructor(o,t){super(o,t);this.plugin=t}display(){let{containerEl:o}=this;o.empty(),o.createEl("h2",{text:co("Settings for Quiet Outline.")}),new Jo.Setting(o).setName(co("Set Primary Color")).addToggle(t=>t.setTooltip(co("Patch default color")).setValue(this.plugin.settings.patch_color).onChange(r=>qe(this,null,function*(){this.plugin.settings.patch_color=r,te.patchColor=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_light).onChange(r=>qe(this,null,function*(){this.plugin.settings.primary_color_light=r,te.primaryColorLight=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_dark).onChange(r=>qe(this,null,function*(){this.plugin.settings.primary_color_dark=r,te.primaryColorDark=r,this.plugin.saveSettings()}))),new Jo.Setting(o).setName(co("Set Rainbow Line Color")).addToggle(t=>t.setTooltip(co("Patch default color")).setValue(this.plugin.settings.rainbow_line).onChange(r=>qe(this,null,function*(){this.plugin.settings.rainbow_line=r,te.rainbowLine=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_1).onChange(r=>qe(this,null,function*(){this.plugin.settings.rainbow_color_1=r,te.rainbowColor1=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_2).onChange(r=>qe(this,null,function*(){this.plugin.settings.rainbow_color_2=r,te.rainbowColor2=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_3).onChange(r=>qe(this,null,function*(){this.plugin.settings.rainbow_color_3=r,te.rainbowColor3=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_4).onChange(r=>qe(this,null,function*(){this.plugin.settings.rainbow_color_4=r,te.rainbowColor4=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_5).onChange(r=>qe(this,null,function*(){this.plugin.settings.rainbow_color_5=r,te.rainbowColor5=r,this.plugin.saveSettings()}))),new Jo.Setting(o).setName(co("Render Markdown")).setDesc(co("Render heading string as markdown format.")).addToggle(t=>t.setValue(this.plugin.settings.markdown).onChange(r=>qe(this,null,function*(){this.plugin.settings.markdown=r,te.markdown=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(co("Ellipsis")).setDesc(co("Keep one line per heading")).addToggle(t=>t.setValue(this.plugin.settings.ellipsis).onChange(r=>qe(this,null,function*(){this.plugin.settings.ellipsis=r,te.ellipsis=r,yield this.plugin.saveSettings(),te.refreshTree(),this.display()}))),this.plugin.settings.ellipsis&&new Jo.Setting(o).setName(co("Tooltip direction")).addDropdown(t=>t.addOption("left","Left").addOption("right","Right").addOption("top","Top").addOption("bottom","Bottom").setValue(this.plugin.settings.label_direction).onChange(r=>qe(this,null,function*(){this.plugin.settings.label_direction=r,te.labelDirection=r,yield this.plugin.saveSettings(),te.refreshTree()}))),new Jo.Setting(o).setName(co("Search Support")).setDesc(co("Add a searching area on the top")).addToggle(t=>t.setValue(this.plugin.settings.search_support).onChange(r=>qe(this,null,function*(){this.plugin.settings.search_support=r,te.searchSupport=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(co("Level Switch")).setDesc(co("Expand headings to certain level.")).addToggle(t=>t.setValue(this.plugin.settings.level_switch).onChange(r=>qe(this,null,function*(){this.plugin.settings.level_switch=r,te.levelSwitch=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(co("Default Level")).setDesc(co("Default expand level when opening a new note.")).addDropdown(t=>t.addOption("0",co("No expand")).addOption("1","H1").addOption("2","H2").addOption("3","H3").addOption("4","H4").addOption("5","H5").setValue(this.plugin.settings.expand_level).onChange(r=>qe(this,null,function*(){this.plugin.settings.expand_level=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(co("Hide Unsearched")).setDesc(co("Hide irrelevant headings when searching")).addToggle(t=>t.setValue(this.plugin.settings.hide_unsearched).onChange(r=>qe(this,null,function*(){this.plugin.settings.hide_unsearched=r,te.hideUnsearched=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(co("Regex Search")).setDesc(co("Search headings using regular expression")).addToggle(t=>t.setValue(this.plugin.settings.regex_search).onChange(r=>qe(this,null,function*(){this.plugin.settings.regex_search=r,te.regexSearch=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(co("Auto Expand")).setDesc(co("Auto expand and collapse headings when scrolling")).addToggle(t=>t.setValue(this.plugin.settings.auto_expand).onChange(r=>qe(this,null,function*(){this.plugin.settings.auto_expand=r,te.autoExpand=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(co("Drag headings to modify note")).setDesc(co("\u2757 This will modify note content, be careful.")).addToggle(t=>t.setValue(this.plugin.settings.drag_modify).onChange(r=>qe(this,null,function*(){this.plugin.settings.drag_modify=r,te.dragModify=r,yield this.plugin.saveSettings()})))}};var Cp=class extends $r.Plugin{onload(){return qe(this,null,function*(){yield this.loadSettings(),this.initStore(),this.registerView(ga,o=>new Rp(o,this)),this.registerListener(),this.registerCommand(),this.addSettingTab(new Op(this.app,this))})}initStore(){te.headers=[],te.dark=document.body.hasClass("theme-dark"),te.markdown=this.settings.markdown,te.ellipsis=this.settings.ellipsis,te.labelDirection=this.settings.label_direction,te.leafChange=!1,te.searchSupport=this.settings.search_support,te.levelSwitch=this.settings.level_switch,te.hideUnsearched=this.settings.hide_unsearched,te.regexSearch=this.settings.regex_search,te.autoExpand=this.settings.auto_expand,te.dragModify=this.settings.drag_modify,te.patchColor=this.settings.patch_color,te.primaryColorLight=this.settings.primary_color_light,te.primaryColorDark=this.settings.primary_color_dark,te.rainbowLine=this.settings.rainbow_line,te.rainbowColor1=this.settings.rainbow_color_1,te.rainbowColor2=this.settings.rainbow_color_2,te.rainbowColor3=this.settings.rainbow_color_3,te.rainbowColor4=this.settings.rainbow_color_4,te.rainbowColor5=this.settings.rainbow_color_5}registerListener(){this.registerEvent(this.app.workspace.on("css-change",()=>{te.dark=document.body.hasClass("theme-dark"),te.cssChange=!te.cssChange}));let o=()=>{let r=this.app.workspace.getActiveFile();if(r){let a=this.app.metadataCache.getFileCache(r).headings;if(a){te.headers=a;return}}te.headers=[]},t=(0,$r.debounce)(o,300,!0);this.registerEvent(this.app.metadataCache.on("changed",()=>{t()})),this.registerEvent(this.app.workspace.on("active-leaf-change",r=>qe(this,null,function*(){let a=this.app.workspace.getActiveViewOfType($r.MarkdownView);if(a){if(!this.current_note){this.current_note=a,this.current_file=a.file.path,o(),te.refreshTree();return}a.file.path===this.current_file||te.refreshTree(),o(),this.current_note=a,this.current_file=a.file.path}})))}registerCommand(){this.addCommand({id:"quiet-outline",name:"Quiet Outline",callback:()=>{this.activateView()}}),this.addCommand({id:"quiet-outline-reset",name:"Reset expanding level",callback:()=>{dispatchEvent(new CustomEvent("quiet-outline-reset"))}}),this.addCommand({id:"quiet-outline-focus-input",name:"Focus on input",callback:()=>{let o=document.querySelector("input.n-input__input-el");o&&o.focus()}}),this.addCommand({id:"quiet-outline-copy-as-text",name:"Copy as plain text",callback:()=>qe(this,null,function*(){let o=te.headers.map(t=>" ".repeat(t.level-1)+t.heading);yield navigator.clipboard.writeText(o.join(` -`)),new $r.Notice("Headings copied")})})}onunload(){this.app.workspace.detachLeavesOfType(ga)}loadSettings(){return qe(this,null,function*(){this.settings=Object.assign({},lT,yield this.loadData())})}saveSettings(){return qe(this,null,function*(){yield this.saveData(this.settings)})}activateView(){return qe(this,null,function*(){this.app.workspace.getLeavesOfType(ga).length===0&&(yield this.app.workspace.getRightLeaf(!1).setViewState({type:ga,active:!0})),this.app.workspace.revealLeaf(this.app.workspace.getLeavesOfType(ga)[0])})}};var UP=Cp; +`}strong(o){return""+o+""}em(o){return""+o+""}codespan(o){return""+o+""}br(){return this.options.xhtml?"
":"
"}del(o){return""+o+""}link(o,t,r){if(o=zw(this.options.sanitize,this.options.baseUrl,o),o===null)return r;let a='",a}image(o,t,r){if(o=zw(this.options.sanitize,this.options.baseUrl,o),o===null)return r;let a=''+r+'":">",a}text(o){return o}},Tp=class{strong(o){return o}em(o){return o}codespan(o){return o}del(o){return o}html(o){return o}text(o){return o}link(o,t,r){return""+r}image(o,t,r){return""+r}br(){return""}},Rp=class{constructor(){this.seen={}}serialize(o){return o.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(o,t){let r=o,a=0;if(this.seen.hasOwnProperty(r)){a=this.seen[o];do a++,r=o+"-"+a;while(this.seen.hasOwnProperty(r))}return t||(this.seen[o]=a,this.seen[r]=0),r}slug(o,t={}){let r=this.serialize(o);return this.getNextSafeSlug(r,t.dryrun)}},or=class{constructor(o){this.options=o||rl,this.options.renderer=this.options.renderer||new Fd,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Tp,this.slugger=new Rp}static parse(o,t){return new or(t).parse(o)}static parseInline(o,t){return new or(t).parseInline(o)}parse(o,t=!0){let r="",a,l,n,i,d,s,u,f,c,p,x,T,C,S,D,$,O,g,v,w=o.length;for(a=0;a0&&D.tokens[0].type==="paragraph"?(D.tokens[0].text=g+" "+D.tokens[0].text,D.tokens[0].tokens&&D.tokens[0].tokens.length>0&&D.tokens[0].tokens[0].type==="text"&&(D.tokens[0].tokens[0].text=g+" "+D.tokens[0].tokens[0].text)):D.tokens.unshift({type:"text",text:g}):S+=g),S+=this.parse(D.tokens,C),c+=this.renderer.listitem(S,O,$);r+=this.renderer.list(c,x,T);continue}case"html":{r+=this.renderer.html(p.text);continue}case"paragraph":{r+=this.renderer.paragraph(this.parseInline(p.tokens));continue}case"text":{for(c=p.tokens?this.parseInline(p.tokens):p.text;a+1{r(i.text,i.lang,function(d,s){if(d)return l(d);s!=null&&s!==i.text&&(i.text=s,i.escaped=!0),n--,n===0&&l()})},0))}),n===0&&l();return}try{let r=er.lex(e,o);return o.walkTokens&&be.walkTokens(r,o.walkTokens),or.parse(r,o)}catch(r){if(r.message+=` +Please report this to https://github.com/markedjs/marked.`,o.silent)return"

An error occurred:

"+Lo(r.message+"",!0)+"
";throw r}}be.options=be.setOptions=function(e){return Lt(be.defaults,e),vP(be.defaults),be};be.getDefaults=Hw;be.defaults=rl;be.use=function(...e){let o=Lt({},...e),t=be.defaults.extensions||{renderers:{},childTokens:{}},r;e.forEach(a=>{if(a.extensions&&(r=!0,a.extensions.forEach(l=>{if(!l.name)throw new Error("extension name required");if(l.renderer){let n=t.renderers?t.renderers[l.name]:null;n?t.renderers[l.name]=function(...i){let d=l.renderer.apply(this,i);return d===!1&&(d=n.apply(this,i)),d}:t.renderers[l.name]=l.renderer}if(l.tokenizer){if(!l.level||l.level!=="block"&&l.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");t[l.level]?t[l.level].unshift(l.tokenizer):t[l.level]=[l.tokenizer],l.start&&(l.level==="block"?t.startBlock?t.startBlock.push(l.start):t.startBlock=[l.start]:l.level==="inline"&&(t.startInline?t.startInline.push(l.start):t.startInline=[l.start]))}l.childTokens&&(t.childTokens[l.name]=l.childTokens)})),a.renderer){let l=be.defaults.renderer||new Fd;for(let n in a.renderer){let i=l[n];l[n]=(...d)=>{let s=a.renderer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.renderer=l}if(a.tokenizer){let l=be.defaults.tokenizer||new Rd;for(let n in a.tokenizer){let i=l[n];l[n]=(...d)=>{let s=a.tokenizer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.tokenizer=l}if(a.walkTokens){let l=be.defaults.walkTokens;o.walkTokens=function(n){a.walkTokens.call(this,n),l&&l.call(this,n)}}r&&(o.extensions=t),be.setOptions(o)})};be.walkTokens=function(e,o){for(let t of e)switch(o.call(be,t),t.type){case"table":{for(let r of t.header)be.walkTokens(r.tokens,o);for(let r of t.rows)for(let a of r)be.walkTokens(a.tokens,o);break}case"list":{be.walkTokens(t.items,o);break}default:be.defaults.extensions&&be.defaults.extensions.childTokens&&be.defaults.extensions.childTokens[t.type]?be.defaults.extensions.childTokens[t.type].forEach(function(r){be.walkTokens(t[r],o)}):t.tokens&&be.walkTokens(t.tokens,o)}};be.parseInline=function(e,o){if(typeof e=="undefined"||e===null)throw new Error("marked.parseInline(): input parameter is undefined or null");if(typeof e!="string")throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");o=Lt({},be.defaults,o||{}),$w(o);try{let t=er.lexInline(e,o);return o.walkTokens&&be.walkTokens(t,o.walkTokens),or.parseInline(t,o)}catch(t){if(t.message+=` +Please report this to https://github.com/markedjs/marked.`,o.silent)return"

An error occurred:

"+Lo(t.message+"",!0)+"
";throw t}};be.Parser=or;be.parser=or.parse;be.Renderer=Fd;be.TextRenderer=Tp;be.Lexer=er;be.lexer=er.lex;be.Tokenizer=Rd;be.Slugger=Rp;be.parse=be;var Kte=be.options,Gte=be.setOptions,qte=be.use,Qte=be.walkTokens,Zte=be.parseInline;var Yte=or.parse,Xte=er.lex;var al=Oa(require("obsidian"));var oe=Ht({activeView(){this.plugin.activateView(),this.refreshTree()},headers:[],dark:!0,cssChange:!1,markdown:!0,ellipsis:!1,labelDirection:"left",leafChange:!1,searchSupport:!0,levelSwitch:!0,hideUnsearched:!0,regexSearch:!1,autoExpand:!0,dragModify:!1,refreshTree(){this.leafChange=!this.leafChange},patchColor:!1,primaryColorLight:"",primaryColorDark:"",rainbowLine:!1,rainbowColor1:"",rainbowColor2:"",rainbowColor3:"",rainbowColor4:"",rainbowColor5:"",currentNote:null});var qw={name:"formula",level:"inline",start(e){var o;return(o=e.match(/\$/))==null?void 0:o.index},tokenizer(e,o){let r=/^\$([^\$]+)\$/.exec(e);if(r)return{type:"formula",raw:r[0],formula:r[1].trim()}},renderer(e){try{let o=(0,al.renderMath)(e.formula,!1).outerHTML;return(0,al.finishRenderMath)(),o}catch(o){return(0,al.loadMathJax)().then(()=>{oe.refreshTree()}),!1}}},Qw={name:"internal",level:"inline",start(e){var o;return(o=e.match(/\[\[/))==null?void 0:o.index},tokenizer(e,o){let r=/^\[\[([^\[\]]+?)\]\]/.exec(e);if(r){let a=/.*\|(.*)/.exec(r[1]);return{type:"internal",raw:r[0],internal:a?a[1]:r[1]}}},renderer(e){return`${e.internal}`}},Zw={name:"highlight",level:"inline",start(e){var o;return(o=e.match(/==/))==null?void 0:o.index},tokenizer(e,o){let r=/^==([^=]+)==/.exec(e);if(r)return{type:"highlight",raw:r[0],internal:r[1]}},renderer(e){return`${e.internal}`}},Yw={name:"tag",level:"inline",start(e){var o;return(o=e.match(/^#|(?<=\s)#/))==null?void 0:o.index},tokenizer(e,o){let r=/^#([^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\d\s][^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\s]*)/.exec(e);if(r)return{type:"tag",raw:r[0],internal:r[1]}},renderer(e){return`
#${e.internal}`}},Xw=e=>{e.type==="link"&&(e.href="javascript:void(0);")},Jw={list(e,o,t){return o?`

${t}. ${e}

`:`

${e}

`},listitem(e,o,t){return`${e}`}};var Cd=le({__name:"Outline",setup(e,{expose:o}){o(),Jm(m=>({"8de97876-rainbowColor1":ar(d),"8de97876-rainbowColor2":ar(s),"8de97876-rainbowColor3":ar(u),"8de97876-rainbowColor4":ar(f),"8de97876-rainbowColor5":ar(c),"8de97876-locatedColor":ar(i)}));let t=Ht({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""}}),r=Ht({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""}}),a=V(()=>oe.dark?cd:null),l=V(()=>oe.dark?{color:"#a3a3a3"}:{color:"#727272"});function n(){let m=document.body.createEl("button",{cls:"mod-cta",attr:{style:"width: 0px; height: 0px;"}}),h=getComputedStyle(m,null).getPropertyValue("background-color");return m.remove(),h}let i=Z(n());Mo(()=>{if(oe.patchColor){t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=oe.primaryColorLight,t.Slider.dotBorderActive=`2px solid ${oe.primaryColorLight}`,r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=oe.primaryColorDark,r.Slider.dotBorderActive=`2px solid ${oe.primaryColorDark}`;return}if(oe.cssChange===oe.cssChange){let m=n();t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=m,t.Slider.dotBorderActive=r.Slider.dotBorderActive=`2px solid ${m}`,i.value=m}});let d=Z(""),s=Z(""),u=Z(""),f=Z(""),c=Z("");function p(m){return`${parseInt(m.slice(1,3),16)},${parseInt(m.slice(3,5),16)},${parseInt(m.slice(5,7),16)}`}Mo(()=>{if(oe.rainbowLine){d.value=`rgba(${p(oe.rainbowColor1)}, 0.6)`,s.value=`rgba(${p(oe.rainbowColor2)}, 0.6)`,u.value=`rgba(${p(oe.rainbowColor3)}, 0.6)`,f.value=`rgba(${p(oe.rainbowColor4)}, 0.6)`,c.value=`rgba(${p(oe.rainbowColor5)}, 0.6)`;return}oe.cssChange===oe.cssChange&&(d.value=s.value=u.value=f.value=c.value="var(--nav-indentation-guide-color)")}),fo(()=>{addEventListener("quiet-outline-reset",wo)}),oa(()=>{removeEventListener("quiet-outline-reset",wo)});let x=St(),T=x.appContext.config.globalProperties.plugin,C=x.appContext.config.globalProperties.container;fo(()=>{document.addEventListener("scroll",D,!0)}),oa(()=>{document.removeEventListener("scroll",D,!0)});let S=(m,h)=>"item-"+m.level+"-"+h,D=(0,Od.debounce)($,100);function $(m){let h=m.target;if(!h.classList.contains("markdown-preview-view")&&!h.classList.contains("cm-scroller"))return;let k=T.current_note;if(!k)return;let E=k.currentMode.getScroll()+8,I=null,j=oe.headers.length;for(;--j>=0;)if(oe.headers[j].position.start.line<=E){I=oe.headers[j];break}if(!I)return;let U=j;if(T.settings.auto_expand){let H=U0&&(oe.headers[j].level{let H=C.querySelector(`#no-${U}`);H&&(H.addClass("located"),H.scrollIntoView({block:"center",behavior:"smooth"}))},0)}let O=V(()=>m=>{let h=parseInt(m.option.key.split("-")[1]),k=parseInt(m.option.key.split("-")[2]);return{class:`level-${h}`,id:`no-${k}`,"aria-label":oe.ellipsis?m.option.label:"","aria-label-position":oe.labelDirection}}),g=Z(parseInt(T.settings.expand_level)),v=Z([]);F(g.value);function w(m,h){v.value=m}function F(m){v.value=oe.headers.map((h,k)=>"item-"+h.level+"-"+k).filter((h,k,E)=>{let I=j=>parseInt(j.split("-")[1]);return k===E.length-1||I(E[k])>=I(E[k+1])?!1:I(h)<=m})}Ze(g,(m,h)=>{F(m)});let B=Z(0);Ze(()=>oe.leafChange,()=>{let m=g.value,h=ae.value;ae.value="",g.value=parseInt(T.settings.expand_level),m===g.value&&F(g.value),No(()=>{ae.value=h})});let y={0:"",1:"",2:"",3:"",4:"",5:""};function W(m){let h=oe.headers.filter(k=>k.level===m).length;return m>0?`H${m}: ${h}`:"No expand"}let _=V(()=>oe.markdown?Xe:null),ae=Z("");function he(m,h){let k=/.*/;try{k=RegExp(m,"i")}catch(E){}finally{return k.test(h.label)}}function Me(m,h){return h.label.toLowerCase().contains(m.toLowerCase())}let de=V(()=>oe.regexSearch?he:Me),ie=V(()=>oe.headers.filter(m=>{let h={label:m.heading};return de.value(ae.value,h)}).length);function ge(m,h){return $e(this,null,function*(){if(h[0]===void 0)return;let k=h[0].key.split("-"),E=parseInt(k[2]),I=oe.headers[E].position.start.line,j=T.current_note;j&&(j.setEphemeralState({line:I}),setTimeout(()=>{j.setEphemeralState({line:I})},100))})}let Ve=V(()=>Ke(oe.headers));function Ke(m){return He(m)}function He(m){let h={children:[]},k=[{node:h,level:-1}];return m.forEach((E,I)=>{let j={label:E.heading,key:"item-"+E.level+"-"+I,line:E.position.start.line};for(;E.level<=k.last().level;)k.pop();let U=k.last().node;U.children===void 0&&(U.children=[]),U.children.push(j),k.push({node:j,level:E.level})}),h.children}be.use({extensions:[qw,Qw,Zw,Yw]}),be.use({walkTokens:Xw}),be.use({renderer:Jw});function Xe({option:m}){let h=be.parse(m.label).trim(),k=0,E=h.match(/.*?<\/mjx-container>/g);return h=(0,Od.sanitizeHTMLToDom)(`
${h}
`).children[0].innerHTML,h=h.replace(/.*?<\/math>/g,()=>E[k++]),R("div",{innerHTML:h})}function Qe(){return $e(this,null,function*(){let m=T.app.workspace.getActiveFile(),h=(yield T.app.vault.read(m)).split(` +`),k=T.current_note,E=()=>{k.setEphemeralState({line:h.length-5})};E(),setTimeout(E,100)})}function wo(){ae.value="",g.value=parseInt(T.settings.expand_level),F(g.value)}function Do(E){return $e(this,arguments,function*({node:m,dragNode:h,dropPosition:k}){let I=T.app.workspace.getActiveFile(),j=(yield T.app.vault.read(I)).split(` +`),U=Ie(v.value),L=we(h),K=L+to(h)-1,H=0,b=0;switch(k){case"inside":m=m.children.last();case"after":{L>we(m)+to(m)?(H=we(m)+to(m),b=L-1):(H=K+1,b=we(m)+to(m)-1);break}case"before":{L>we(m)?(H=we(m),b=L-1):(H=L+to(h),b=we(m)-1);break}}let N=qe(m)-qe(h);ho(U,L,K,H,b,N),We(j,Be(L)[0],Be(K)[1]||j.length-1,Be(H)[0],Be(b)[1]||j.length-1,N),T.app.vault.modify(I,j.join(` +`))})}function Be(m){var h;return[oe.headers[m].position.start.line,((h=oe.headers[m+1])==null?void 0:h.position.start.line)-1]}function We(m,h,k,E,I,j){let U=0;if(h0?m[L]=Array(j).fill("#").join("")+m[L]:m[L]=m[L].slice(-j))}function ho(m,h,k,E,I,j){let U=0,L=0;h{let b=we(K);h<=b&&b<=k&&(m[H]=`item-${qe(K)+j}-${U+(b-h)}`),E<=b&&b<=I&&(m[H]=`item-${qe(K)}-${L+(b-E)}`)})}function we(m){return typeof m!="string"&&(m=m.key),parseInt(m.split("-")[2])}function qe(m){return typeof m!="string"&&(m=m.key),parseInt(m.split("-")[1])}function to(m){return m.children?m.children.reduce((h,k)=>h+to(k),1):1}let vo={lightThemeConfig:t,darkThemeConfig:r,get theme(){return a},set theme(m){a=m},get iconColor(){return l},set iconColor(m){l=m},getDefaultColor:n,get locatedColor(){return i},set locatedColor(m){i=m},get rainbowColor1(){return d},set rainbowColor1(m){d=m},get rainbowColor2(){return s},set rainbowColor2(m){s=m},get rainbowColor3(){return u},set rainbowColor3(m){u=m},get rainbowColor4(){return f},set rainbowColor4(m){f=m},get rainbowColor5(){return c},set rainbowColor5(m){c=m},hexToRGB:p,get compomentSelf(){return x},set compomentSelf(m){x=m},get plugin(){return T},set plugin(m){T=m},get container(){return C},set container(m){C=m},get toKey(){return S},set toKey(m){S=m},get handleScroll(){return D},set handleScroll(m){D=m},_handleScroll:$,setAttrs:O,get level(){return g},set level(m){g=m},get expanded(){return v},set expanded(m){v=m},expand:w,switchLevel:F,get update_tree(){return B},set update_tree(m){B=m},marks:y,formatTooltip:W,get renderMethod(){return _},set renderMethod(m){_=m},get pattern(){return ae},set pattern(m){ae=m},regexFilter:he,simpleFilter:Me,get filter(){return de},set filter(m){de=m},get matchCount(){return ie},set matchCount(m){ie=m},jump:ge,get data2(){return Ve},set data2(m){Ve=m},makeTree:Ke,arrToTree:He,renderLabel:Xe,toBottom:Qe,reset:wo,onDrop:Do,getLine:Be,moveSection:We,changeExpandKey:ho,getNo:we,getLevel:qe,countTree:to,get NTree(){return dp},get NButton(){return Cu},get NInput(){return hu},get NSlider(){return lp},get NConfigProvider(){return Hu},get Icon(){return Sp},get SettingsBackupRestoreRound(){return wp},get ArrowCircleDownRound(){return gp},get store(){return oe}};return Object.defineProperty(vo,"__isScriptSetup",{enumerable:!1,value:!0}),vo}});var $P={id:"container"},UP={key:0,class:"function-bar"},KP={key:2};function eT(e,o,t,r,a,l){return ht(),kr("div",$P,[mo(r.NConfigProvider,{theme:r.theme,"theme-overrides":r.theme===null?r.lightThemeConfig:r.darkThemeConfig},{default:Jr(()=>[r.store.searchSupport?(ht(),kr("div",UP,[mo(r.NButton,{size:"small",circle:"",onClick:r.toBottom,"aria-label":"To Bottom"},{icon:Jr(()=>[mo(r.Icon,null,{default:Jr(()=>[mo(r.ArrowCircleDownRound,{style:Sr(r.iconColor)},null,8,["style"])]),_:1})]),_:1}),mo(r.NButton,{size:"small",circle:"",onClick:r.reset,"aria-label":"Reset"},{icon:Jr(()=>[mo(r.Icon,null,{default:Jr(()=>[mo(r.SettingsBackupRestoreRound,{style:Sr(r.iconColor)},null,8,["style"])]),_:1})]),_:1}),mo(r.NInput,{value:r.pattern,"onUpdate:value":o[0]||(o[0]=n=>r.pattern=n),placeholder:"Input to search",size:"small",clearable:""},null,8,["value"])])):ei("v-if",!0),r.store.levelSwitch?(ht(),bl(r.NSlider,{key:1,value:r.level,"onUpdate:value":o[1]||(o[1]=n=>r.level=n),marks:r.marks,step:"mark",min:0,max:5,style:{margin:"4px 0"},"format-tooltip":r.formatTooltip},null,8,["value"])):ei("v-if",!0),r.pattern?(ht(),kr("code",KP,vd(r.matchCount)+" result(s): ",1)):ei("v-if",!0),(ht(),bl(r.NTree,{"block-line":"",pattern:r.pattern,data:r.data2,"on-update:selected-keys":r.jump,"render-label":r.renderMethod,"node-props":r.setAttrs,"expanded-keys":r.expanded,"on-update:expanded-keys":r.expand,key:r.update_tree,filter:r.filter,"show-irrelevant-nodes":!r.store.hideUnsearched,class:Gr({ellipsis:r.store.ellipsis}),draggable:r.store.dragModify,onDrop:r.onDrop},null,8,["pattern","data","render-label","node-props","expanded-keys","filter","show-irrelevant-nodes","class","draggable"]))]),_:1},8,["theme","theme-overrides"])])}Cd.render=eT;Cd.__file="src/Outline.vue";var oT=Cd;var Ta="quiet-outline",Fp=class extends tT.ItemView{constructor(o,t){super(o);this.plugin=t}getViewType(){return Ta}getDisplayText(){return"Quiet Outline"}getIcon(){return"lines-of-text"}onOpen(){return $e(this,null,function*(){let o=this.containerEl.children[1];o.empty();let t=o.createEl("div",{cls:"quiet-outline"});this.vueApp=mc(oT),this.vueApp.config.globalProperties.plugin=this.plugin,this.vueApp.config.globalProperties.container=t,this.vueApp.mount(t)})}onClose(){return $e(this,null,function*(){})}onunload(){this.vueApp.unmount()}};var Jo=Oa(require("obsidian"));var rT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8BBE\u7F6E\u9875\u9762","Set Primary Color":"\u8BBE\u7F6E\u4E3B\u989C\u8272 \u660E/\u6697","Patch default color":"\u7528\u8BBE\u7F6E\u8986\u76D6\u9ED8\u8BA4\u4E3B\u989C\u8272","Set Rainbow Line Color":"\u8BBE\u7F6E\u5F69\u8679\u5927\u7EB2\u7EBF\u989C\u8272","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6807\u9898\u6587\u672C","Search Support":"\u5F00\u542F\u641C\u7D22","Add a searching area on the top":"\u5728\u9876\u90E8\u6DFB\u52A0\u4E00\u4E2A\u641C\u7D22\u6846","Level Switch":"\u5C42\u7EA7\u5207\u6362\u5668","Expand headings to certain level.":"\u5C55\u5F00\u6807\u9898\u5230\u7279\u5B9A\u5C42\u7EA7","Default Level":"\u9ED8\u8BA4\u5C42\u7EA7","Default expand level when opening a new note.":"\u6253\u5F00\u65B0\u7B14\u8BB0\u65F6\uFF0C\u6807\u9898\u5C55\u5F00\u5230\u7684\u9ED8\u8BA4\u5C42\u7EA7","No expand":"\u4E0D\u5C55\u5F00","Hide Unsearched":"\u8FC7\u6EE4\u672A\u641C\u7D22\u7684\u6807\u9898","Hide irrelevant headings when searching":"\u641C\u7D22\u65F6\uFF0C\u9690\u85CF\u672A\u547D\u4E2D\u7684\u6807\u9898","Regex Search":"\u6B63\u5219\u641C\u7D22","Search headings using regular expression":"\u652F\u6301\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u6765\u641C\u7D22","Auto Expand":"\u81EA\u52A8\u5C55\u5F00","Auto expand and collapse headings when scrolling":"\u5F53\u6EDA\u52A8\u9875\u9762\u65F6\uFF0C\u81EA\u52A8\u8DDF\u8E2A\u5F53\u524D\u6240\u5728\u6807\u9898\u5E76\u5C55\u5F00",Ellipsis:"\u7701\u7565\u957F\u6807\u9898","Tooltip direction":"\u5B8C\u6574\u6807\u9898\u663E\u793A\u65B9\u5411","Keep one line per heading":"\u4FDD\u6301\u6807\u9898\u53EA\u6709\u4E00\u884C,\u7701\u7565\u591A\u4F59\u90E8\u5206","Drag headings to modify note":"\u542F\u7528\u62D6\u62FD\u6807\u9898\u6765\u8C03\u6574\u6587\u6863\u7ED3\u679C","\u2757 This will modify note content, be careful.":"\u2757 \u62D6\u62FD\u64CD\u4F5C\u4F1A\u6539\u53D8\u6587\u6863\u5185\u5BB9\uFF0C\u5C0F\u5FC3\u4F7F\u7528"};var Op={"Settings for Quiet Outline.":"Settings for Quiet Outline.","Set Primary Color":"Set Primary Color Light/Dark","Patch default color":"Patch default color","Set Rainbow Line Color":"Set Rainbow Line Color","Render Markdown":"Render Markdown","Render heading string as markdown format.":"Render heading string as markdown format","Search Support":"Search Support","Add a searching area on the top":"Add a search area on the top","Level Switch":"Level Switch","Expand headings to certain level.":"Expand headings to certain level","Default Level":"Default Level","Default expand level when opening a new note.":"Default expand level","No expand":"No expand","Hide Unsearched":"Hide Unsearched","Hide irrelevant headings when searching":"Hide irrelevant headings when searching","Regex Search":"Regex Search","Search headings using regular expression":"Search headings using regular expression","Auto Expand":"Auto Expand","Auto expand and collapse headings when scrolling":"Auto expand and collapse headings when scrolling",Ellipsis:"Ellipsis","Tooltip direction":"Tooltip direction","Keep one line per heading":"Keep one line per heading","Drag headings to modify note":"Drag headings to modify note","\u2757 This will modify note content, be careful.":"\u2757 This will modify note content, be careful"};var aT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8A2D\u5B9A\u9801\u9762","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6A19\u984C\u6587\u5B57","Search Support":"\u958B\u555F\u641C\u7D22","Add a searching area on the top":"\u5728\u9802\u90E8\u65B0\u589E\u4E00\u500B\u641C\u7D22\u6846","Level Switch":"\u5C64\u7D1A\u5207\u63DB","Expand headings to certain level.":"\u5C55\u958B\u6A19\u984C\u5230\u7279\u5B9A\u5C64\u7D1A","Default Level":"\u9810\u8A2D\u5C64\u7D1A","Default expand level when opening a new note.":"\u6253\u958B\u65B0\u7B46\u8A18\u6642\uFF0C\u6A19\u984C\u5C55\u958B\u5230\u7684\u9810\u8A2D\u5C64\u7D1A","No expand":"\u4E0D\u5C55\u958B","Hide Unsearched":"\u904E\u6FFE\u672A\u641C\u7D22\u7684\u6A19\u984C","Hide irrelevant headings when searching":"\u641C\u7D22\u6642\uFF0C\u96B1\u85CF\u672A\u547D\u4E2D\u7684\u6A19\u984C","Regex Search":"\u6B63\u5247\u641C\u7D22","Search headings using regular expression":"\u652F\u63F4\u4F7F\u7528\u6B63\u5247\u904B\u7B97\u5F0F\u4F86\u641C\u7D22","Auto Expand":"\u81EA\u52D5\u5C55\u958B","Auto expand and collapse headings when scrolling":"\u7576\u6372\u52D5\u9801\u9762\u6642\uFF0C\u81EA\u52D5\u8DDF\u96A8\u76EE\u524D\u6240\u5728\u6A19\u984C\u4E26\u5C55\u958B",Ellipsis:"\u7701\u7565\u9577\u6A19\u984C","Keep one line per heading":"\u4FDD\u6301\u6A19\u984C\u53EA\u6709\u4E00\u884C\uFF0C\u7701\u7565\u591A\u9918\u90E8\u5206"};var GP={en:Op,zh:rT,"zh-TW":aT},qP=window.localStorage.getItem("language"),lT=GP[qP||"en"];function po(e){return lT&&lT[e]||Op[e]}var nT={patch_color:!0,primary_color_light:"#18a058",primary_color_dark:"#63e2b7",rainbow_line:!1,rainbow_color_1:"#FD8B1F",rainbow_color_2:"#FFDF00",rainbow_color_3:"#07EB23",rainbow_color_4:"#2D8FF0",rainbow_color_5:"#BC01E2",search_support:!0,level_switch:!0,markdown:!0,expand_level:"0",hide_unsearched:!0,auto_expand:!0,regex_search:!1,ellipsis:!1,label_direction:"left",drag_modify:!1},Cp=class extends Jo.PluginSettingTab{constructor(o,t){super(o,t);this.plugin=t}display(){let{containerEl:o}=this;o.empty(),o.createEl("h2",{text:po("Settings for Quiet Outline.")}),new Jo.Setting(o).setName(po("Set Primary Color")).addToggle(t=>t.setTooltip(po("Patch default color")).setValue(this.plugin.settings.patch_color).onChange(r=>$e(this,null,function*(){this.plugin.settings.patch_color=r,oe.patchColor=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_light).onChange(r=>$e(this,null,function*(){this.plugin.settings.primary_color_light=r,oe.primaryColorLight=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_dark).onChange(r=>$e(this,null,function*(){this.plugin.settings.primary_color_dark=r,oe.primaryColorDark=r,this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Set Rainbow Line Color")).addToggle(t=>t.setTooltip(po("Patch default color")).setValue(this.plugin.settings.rainbow_line).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_line=r,oe.rainbowLine=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_1).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_1=r,oe.rainbowColor1=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_2).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_2=r,oe.rainbowColor2=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_3).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_3=r,oe.rainbowColor3=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_4).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_4=r,oe.rainbowColor4=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_5).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_5=r,oe.rainbowColor5=r,this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Render Markdown")).setDesc(po("Render heading string as markdown format.")).addToggle(t=>t.setValue(this.plugin.settings.markdown).onChange(r=>$e(this,null,function*(){this.plugin.settings.markdown=r,oe.markdown=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Ellipsis")).setDesc(po("Keep one line per heading")).addToggle(t=>t.setValue(this.plugin.settings.ellipsis).onChange(r=>$e(this,null,function*(){this.plugin.settings.ellipsis=r,oe.ellipsis=r,yield this.plugin.saveSettings(),oe.refreshTree(),this.display()}))),this.plugin.settings.ellipsis&&new Jo.Setting(o).setName(po("Tooltip direction")).addDropdown(t=>t.addOption("left","Left").addOption("right","Right").addOption("top","Top").addOption("bottom","Bottom").setValue(this.plugin.settings.label_direction).onChange(r=>$e(this,null,function*(){this.plugin.settings.label_direction=r,oe.labelDirection=r,yield this.plugin.saveSettings(),oe.refreshTree()}))),new Jo.Setting(o).setName(po("Search Support")).setDesc(po("Add a searching area on the top")).addToggle(t=>t.setValue(this.plugin.settings.search_support).onChange(r=>$e(this,null,function*(){this.plugin.settings.search_support=r,oe.searchSupport=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Level Switch")).setDesc(po("Expand headings to certain level.")).addToggle(t=>t.setValue(this.plugin.settings.level_switch).onChange(r=>$e(this,null,function*(){this.plugin.settings.level_switch=r,oe.levelSwitch=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Default Level")).setDesc(po("Default expand level when opening a new note.")).addDropdown(t=>t.addOption("0",po("No expand")).addOption("1","H1").addOption("2","H2").addOption("3","H3").addOption("4","H4").addOption("5","H5").setValue(this.plugin.settings.expand_level).onChange(r=>$e(this,null,function*(){this.plugin.settings.expand_level=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Hide Unsearched")).setDesc(po("Hide irrelevant headings when searching")).addToggle(t=>t.setValue(this.plugin.settings.hide_unsearched).onChange(r=>$e(this,null,function*(){this.plugin.settings.hide_unsearched=r,oe.hideUnsearched=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Regex Search")).setDesc(po("Search headings using regular expression")).addToggle(t=>t.setValue(this.plugin.settings.regex_search).onChange(r=>$e(this,null,function*(){this.plugin.settings.regex_search=r,oe.regexSearch=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Auto Expand")).setDesc(po("Auto expand and collapse headings when scrolling")).addToggle(t=>t.setValue(this.plugin.settings.auto_expand).onChange(r=>$e(this,null,function*(){this.plugin.settings.auto_expand=r,oe.autoExpand=r,yield this.plugin.saveSettings()}))),new Jo.Setting(o).setName(po("Drag headings to modify note")).setDesc(po("\u2757 This will modify note content, be careful.")).addToggle(t=>t.setValue(this.plugin.settings.drag_modify).onChange(r=>$e(this,null,function*(){this.plugin.settings.drag_modify=r,oe.dragModify=r,yield this.plugin.saveSettings()})))}};var bp=class extends Kr.Plugin{onload(){return $e(this,null,function*(){yield this.loadSettings(),this.initStore(),this.registerView(Ta,o=>new Fp(o,this)),this.registerListener(),this.registerCommand(),this.addSettingTab(new Cp(this.app,this))})}initStore(){oe.headers=[],oe.dark=document.body.hasClass("theme-dark"),oe.markdown=this.settings.markdown,oe.ellipsis=this.settings.ellipsis,oe.labelDirection=this.settings.label_direction,oe.leafChange=!1,oe.searchSupport=this.settings.search_support,oe.levelSwitch=this.settings.level_switch,oe.hideUnsearched=this.settings.hide_unsearched,oe.regexSearch=this.settings.regex_search,oe.autoExpand=this.settings.auto_expand,oe.dragModify=this.settings.drag_modify,oe.patchColor=this.settings.patch_color,oe.primaryColorLight=this.settings.primary_color_light,oe.primaryColorDark=this.settings.primary_color_dark,oe.rainbowLine=this.settings.rainbow_line,oe.rainbowColor1=this.settings.rainbow_color_1,oe.rainbowColor2=this.settings.rainbow_color_2,oe.rainbowColor3=this.settings.rainbow_color_3,oe.rainbowColor4=this.settings.rainbow_color_4,oe.rainbowColor5=this.settings.rainbow_color_5}registerListener(){this.registerEvent(this.app.workspace.on("css-change",()=>{oe.dark=document.body.hasClass("theme-dark"),oe.cssChange=!oe.cssChange}));let o=()=>{let r=this.app.workspace.getActiveFile();if(r){let a=this.app.metadataCache.getFileCache(r).headings;if(a){oe.headers=a;return}}oe.headers=[]},t=(0,Kr.debounce)(o,300,!0);this.registerEvent(this.app.metadataCache.on("changed",()=>{t()})),this.registerEvent(this.app.workspace.on("active-leaf-change",r=>$e(this,null,function*(){let a=this.app.workspace.getActiveViewOfType(Kr.MarkdownView);if(a){if(!this.current_note){this.current_note=a,this.current_file=a.file.path,o(),oe.refreshTree();return}a.file.path===this.current_file||oe.refreshTree(),o(),this.current_note=a,this.current_file=a.file.path}})))}registerCommand(){this.addCommand({id:"quiet-outline",name:"Quiet Outline",callback:()=>{this.activateView()}}),this.addCommand({id:"quiet-outline-reset",name:"Reset expanding level",callback:()=>{dispatchEvent(new CustomEvent("quiet-outline-reset"))}}),this.addCommand({id:"quiet-outline-focus-input",name:"Focus on input",callback:()=>{let o=document.querySelector("input.n-input__input-el");o&&o.focus()}}),this.addCommand({id:"quiet-outline-copy-as-text",name:"Copy as plain text",callback:()=>$e(this,null,function*(){let o=oe.headers.map(t=>" ".repeat(t.level-1)+t.heading);yield navigator.clipboard.writeText(o.join(` +`)),new Kr.Notice("Headings copied")})})}onunload(){this.app.workspace.detachLeavesOfType(Ta)}loadSettings(){return $e(this,null,function*(){this.settings=Object.assign({},nT,yield this.loadData())})}saveSettings(){return $e(this,null,function*(){yield this.saveData(this.settings)})}activateView(){return $e(this,null,function*(){this.app.workspace.getLeavesOfType(Ta).length===0&&(yield this.app.workspace.getRightLeaf(!1).setViewState({type:Ta,active:!0})),this.app.workspace.revealLeaf(this.app.workspace.getLeavesOfType(Ta)[0])})}};var QP=bp; /** * @license * Lodash (Custom Build) diff --git a/.obsidian/plugins/obsidian-quiet-outline/manifest.json b/.obsidian/plugins/obsidian-quiet-outline/manifest.json index d2ddfee..f2fded5 100644 --- a/.obsidian/plugins/obsidian-quiet-outline/manifest.json +++ b/.obsidian/plugins/obsidian-quiet-outline/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-quiet-outline", "name": "Quiet Outline", - "version": "0.3.14", + "version": "0.3.15", "minAppVersion": "0.15.6", "description": "Make outline quiet and more powerful, including no-auto-expand, rendering heading as markdown, and search support.", "author": "the_tree", diff --git a/.obsidian/plugins/obsidian-quiet-outline/styles.css b/.obsidian/plugins/obsidian-quiet-outline/styles.css index 1a0aff7..d434199 100644 --- a/.obsidian/plugins/obsidian-quiet-outline/styles.css +++ b/.obsidian/plugins/obsidian-quiet-outline/styles.css @@ -71,9 +71,16 @@ background-color: var(--code-background); border-radius: var(--radius-s); } -.quiet-outline .internal-link { +.quiet-outline a.tag { + white-space: nowrap; + padding: 0.2em 0.6em; +} +.quiet-outline a:not(.tag) { color: var(--link-external-color); } +.quiet-outline span.internal-link { + color: var(--link-color); +} .quiet-outline mark { background-color: var(--text-highlight-bg); color: var(--text-normal); @@ -126,25 +133,28 @@ .quiet-outline .level-4 .n-tree-node-indent:first-child, .quiet-outline .level-5 .n-tree-node-indent:first-child, .quiet-outline .level-6 .n-tree-node-indent:first-child { - border-right: var(--nav-indentation-guide-width) solid var(--762e1073-rainbowColor1); + border-right: var(--nav-indentation-guide-width) solid var(--8de97876-rainbowColor1); } .quiet-outline .level-3 .n-tree-node-indent, .quiet-outline .level-4 .n-tree-node-indent:nth-child(2), .quiet-outline .level-5 .n-tree-node-indent:nth-child(2), .quiet-outline .level-6 .n-tree-node-indent:nth-child(2) { - border-right: var(--nav-indentation-guide-width) solid var(--762e1073-rainbowColor2); + border-right: var(--nav-indentation-guide-width) solid var(--8de97876-rainbowColor2); } .quiet-outline .level-4 .n-tree-node-indent, .quiet-outline .level-5 .n-tree-node-indent:nth-child(3), .quiet-outline .level-6 .n-tree-node-indent:nth-child(3) { - border-right: var(--nav-indentation-guide-width) solid var(--762e1073-rainbowColor3); + border-right: var(--nav-indentation-guide-width) solid var(--8de97876-rainbowColor3); } .quiet-outline .level-5 .n-tree-node-indent, .quiet-outline .level-6 .n-tree-node-indent:nth-child(4) { - border-right: var(--nav-indentation-guide-width) solid var(--762e1073-rainbowColor4); + border-right: var(--nav-indentation-guide-width) solid var(--8de97876-rainbowColor4); } .quiet-outline .level-6 .n-tree-node-indent { - border-right: var(--nav-indentation-guide-width) solid var(--762e1073-rainbowColor5); + border-right: var(--nav-indentation-guide-width) solid var(--8de97876-rainbowColor5); +} +.n-tree-node.located p { + color: var(--8de97876-locatedColor); } /* src/main.css */ diff --git a/.obsidian/themes/Minimal/manifest.json b/.obsidian/themes/Minimal/manifest.json index 1e163a4..827acb3 100644 --- a/.obsidian/themes/Minimal/manifest.json +++ b/.obsidian/themes/Minimal/manifest.json @@ -1,6 +1,6 @@ { "name": "Minimal", - "version": "6.2.3", + "version": "6.3.3", "minAppVersion": "1.1.0", "author": "@kepano", "authorUrl": "https://twitter.com/kepano", diff --git a/.obsidian/themes/Minimal/theme.css b/.obsidian/themes/Minimal/theme.css index 7a0443a..b32fc09 100644 --- a/.obsidian/themes/Minimal/theme.css +++ b/.obsidian/themes/Minimal/theme.css @@ -38,7 +38,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -body{--font-text-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-monospace-theme:Menlo,SFMono-Regular,Consolas,"Roboto Mono",monospace;--font-interface-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor:var(--font-editor-override),var(--font-text-override),var(--font-editor-theme)}body{--blockquote-style:normal;--blockquote-color:var(--text-muted);--blockquote-border-thickness:1px;--blockquote-border-color:var(--quote-opening-modifier);--embed-block-shadow-hover:none;--font-ui-smaller:12px;--normal-weight:400;--bold-weight:600;--link-weight:inherit;--h1-size:1.125em;--h2-size:1.05em;--h3-size:1em;--h4-size:0.90em;--h5-size:0.85em;--h6-size:0.85em;--h1-weight:600;--h2-weight:600;--h3-weight:500;--h4-weight:500;--h5-weight:500;--h6-weight:400;--h1-variant:normal;--h2-variant:normal;--h3-variant:normal;--h4-variant:small-caps;--h5-variant:small-caps;--h6-variant:small-caps;--h1-style:normal;--h2-style:normal;--h3-style:normal;--h4-style:normal;--h5-style:normal;--h6-style:normal;--line-width:40rem;--line-height:1.5;--max-width:88%;--max-col-width:18em;--icon-muted:0.5;--border-width:1px;--nested-padding:1.1em;--folding-offset:10px;--list-edit-offset:0.5em;--list-indent:2em;--list-spacing:0.075em;--input-height:32px;--header-height:40px;--mobile-left-sidebar-width:280pt;--mobile-right-sidebar-width:240pt;--top-left-padding-y:0px;--image-muted:0.7;--spacing-p:0.75em}.mod-macos{--top-left-padding-y:24px}body{--base-h:0;--base-s:0%;--base-l:96%;--accent-h:201;--accent-s:17%;--accent-l:50%}.theme-dark,.theme-light{--color-red-rgb:208,66,85;--color-orange-rgb:213,118,63;--color-yellow-rgb:229,181,103;--color-green-rgb:168,195,115;--color-cyan-rgb:115,187,178;--color-blue-rgb:108,153,187;--color-purple-rgb:158,134,200;--color-pink-rgb:176,82,121;--color-red:#d04255;--color-orange:#d5763f;--color-yellow:#e5b567;--color-green:#a8c373;--color-cyan:#73bbb2;--color-blue:#6c99bb;--color-purple:#9e86c8;--color-pink:#b05279}.theme-light,.theme-light.minimal-default-light,body .excalidraw{--bg1:white;--bg2:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) - 50%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 20%) );--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 90%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) - 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 25%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 60%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 6%) );--hl1:hsla( var(--accent-h), 50%, calc(var(--base-l) - 20%), 30% );--hl2:rgba(255, 225, 0, 0.5);--sp1:white}.excalidraw.theme--dark,.theme-dark,.theme-dark.minimal-default-dark,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-l:60%;--base-l:15%;--bg1:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 2%) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) + 40%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 20%) );--tx1:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 67%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) + 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 20%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 50%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 5%) );--hl1:hsla( var(--accent-h), 50%, 40%, 30% );--hl2:rgba(255, 177, 80, 0.3);--sp1:white}.theme-light.minimal-light-white{--background-primary:white;--background-secondary:white;--background-secondary-alt:white;--ribbon-background:white;--bg1:white}.theme-dark.minimal-dark-black{--base-d:0%;--titlebar-background:black;--background-primary:black;--background-secondary:black;--background-secondary-alt:black;--ribbon-background:black;--background-modifier-hover:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 10%));--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 75%) );--tx2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 50%) );--tx3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 25%) );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 12%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 20%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 30%) )}.theme-light{--mono100:black;--mono0:white}.theme-dark{--mono100:white;--mono0:black}.theme-dark,.theme-light,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.is-mobile .workspace-drawer.mod-left,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--background-modifier-accent:var(--ax3);--background-modifier-border-focus:var(--ui3);--background-modifier-border-hover:var(--ui2);--background-modifier-border:var(--ui1);--background-modifier-form-field-highlighted:var(--bg1);--background-modifier-form-field:var(--bg1);--background-modifier-success:var(--color-green);--background-modifier-hover:var(--bg3);--background-modifier-active-hover:var(--bg3);--background-primary:var(--bg1);--background-primary-alt:var(--bg2);--background-secondary:var(--bg2);--background-secondary-alt:var(--bg1);--background-table-rows:var(--bg2);--checkbox-color:var(--ax3);--code-normal:var(--tx1);--divider-color:var(--ui1);--frame-divider-color:var(--ui1);--icon-color-active:var(--tx1);--icon-color-focused:var(--tx1);--icon-color-hover:var(--tx2);--icon-color:var(--tx2);--icon-hex:var(--mono0);--interactive-accent-hover:var(--ax1);--interactive-accent:var(--ax3);--interactive-hover:var(--ui1);--list-marker-color:var(--tx3);--modal-border-color:var(--ui2);--nav-item-background-active:var(--bg3);--nav-item-background-hover:var(--bg3);--nav-item-color:var(--tx2);--nav-item-color-active:var(--tx1);--nav-item-color-hover:var(--tx1);--nav-collapse-icon-color:var(--tx2);--nav-collapse-icon-color-collapsed:var(--tx2);--nav-indentation-guide-color:var(--ui1);--prompt-border-color:var(--ui3);--quote-opening-modifier:var(--ui2);--ribbon-background:var(--bg2);--scrollbar-active-thumb-bg:var(--ui3);--scrollbar-bg:transparent;--scrollbar-thumb-bg:var(--ui1);--search-result-background:var(--bg1);--tab-text-color-focused-active:var(--tx1);--tab-outline-color:var(--ui1);--text-accent-hover:var(--ax2);--text-accent:var(--ax1);--text-blockquote:var(--tx2);--text-bold:var(--tx1);--text-code:var(--tx4);--text-error:var(--color-red);--text-faint:var(--tx3);--text-highlight-bg:var(--hl2);--text-italic:var(--tx1);--text-muted:var(--tx2);--text-normal:var(--tx1);--text-on-accent:var(--sp1);--text-selection:var(--hl1);--title-color-inactive:var(--tx2);--title-color:var(--tx1);--titlebar-background:var(--bg2);--titlebar-background-focused:var(--bg2);--titlebar-text-color-focused:var(--tx1);--workspace-background-translucent:hsla(var(--base-h),var(--base-s), var(--base-l), 0.7)}.theme-light.minimal-light-contrast{--workspace-background-translucent:rgba(0,0,0,0.6)}.theme-light.minimal-light-contrast .theme-dark{--tab-container-background:var(--bg2);--ribbon-background-collapsed:var(--bg2)}.theme-light{--interactive-normal:var(--bg1);--interactive-accent-rgb:220,220,220;--active-line-bg:rgba(0,0,0,0.035);--background-modifier-cover:hsla(var(--base-h),calc(var(--base-s) - 70%),calc(var(--base-l) - 20%),0.5);--text-highlight-bg-active:rgba(0, 0, 0, 0.1);--background-modifier-error:rgba(255,0,0,0.14);--background-modifier-error-hover:rgba(255,0,0,0.08);--shadow-color:rgba(0, 0, 0, 0.1);--btn-shadow-color:rgba(0, 0, 0, 0.05)}.theme-dark{--interactive-normal:var(--bg3);--interactive-accent-rgb:66,66,66;--active-line-bg:rgba(255,255,255,0.04);--background-modifier-cover:hsla(var(--base-h),var(--base-s), calc(var(--base-l) - 12%), 0.5);--text-highlight-bg-active:rgba(255, 255, 255, 0.1);--background-modifier-error:rgba(255,20,20,0.12);--background-modifier-error-hover:rgba(255,20,20,0.18);--background-modifier-box-shadow:rgba(0, 0, 0, 0.3);--shadow-color:rgba(0, 0, 0, 0.3);--btn-shadow-color:rgba(0, 0, 0, 0.2)}.theme-light.minimal-light-white{--background-table-rows:var(--bg2)}.theme-light.minimal-light-tonal{--background-primary:var(--bg2);--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-tonal{--ribbon-background:var(--bg1);--background-secondary:var(--bg1);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-black{--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3);--modal-border:var(--ui2);--active-line-bg:rgba(255,255,255,0.085);--background-modifier-form-field:var(--bg3);--background-modifier-cover:hsla(var(--base-h),var(--base-s),calc(var(--base-d) + 8%),0.9);--background-modifier-box-shadow:rgba(0, 0, 0, 1)}body{--font-adaptive-normal:var(--font-text-size,var(--editor-font-size));--font-adaptive-small:var(--font-ui-medium);--font-adaptive-smaller:var(--font-ui-small);--font-adaptive-smallest:11px;--line-width-adaptive:var(--line-width);--line-width-wide:calc(var(--line-width) + 12.5%);--font-code:calc(var(--font-adaptive-normal) * 0.9);--table-text-size:calc(var(--font-adaptive-normal) * 0.875)}.minimal-dev-block-width .mod-root .workspace-leaf-content:after{display:flex;align-items:flex-end;content:"\00a0pane\00a0";font-size:12px;color:gray;font-family:var(--font-monospace);width:100%;max-width:100%;height:100vh;top:0;z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:max(calc(50% - var(--line-width-adaptive)/ 2 - 1px),calc(50% - var(--max-width)/ 2 - 1px));z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable-off .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:calc(50% - var(--max-width)/ 2 - 1px);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width .mod-root .view-content:before{display:flex;align-items:flex-end;content:"\00a0max\00a0";font-size:12px;color:red;width:var(--max-width);height:100vh;border-left:1px solid red;border-right:1px solid red;top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:before{display:flex;align-items:flex-end;content:"\00a0wide\00a0";font-size:12px;color:orange;font-family:var(--font-monospace);width:var(--line-width-wide);max-width:var(--max-width);height:100vh;border-left:1px solid orange;border-right:1px solid orange;background-color:rgba(255,165,0,.05);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-content:after{display:flex;align-items:flex-end;color:#00f;font-size:12px;font-family:var(--font-monospace);content:"\00a0normal";width:var(--line-width-adaptive);max-width:var(--max-width);height:100vh;border-left:1px solid #00f;border-right:1px solid #00f;background-color:rgba(0,0,255,.08);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.CodeMirror-wrap>div>textarea{opacity:0}.markdown-source-view.mod-cm6 hr{border-width:2px}.mod-cm6 .cm-editor .cm-line{padding:0}.cm-editor .cm-content{padding-top:.5em}.markdown-source-view{color:var(--text-normal)}.markdown-reading-view>.markdown-preview-view{padding-top:18px}.markdown-source-view.mod-cm6 .cm-scroller{padding-top:18px;padding-left:0;padding-right:0}body:not(.is-mobile) .markdown-source-view.mod-cm6 .cm-gutters{position:absolute!important;z-index:0;margin-left:0}.cm-editor .cm-lineNumbers .cm-gutterElement{min-width:25px}@media (max-width:400pt){.cm-editor .cm-lineNumbers .cm-gutterElement{padding-right:4px;padding-left:8px}}.cm-editor .cm-lineNumbers .cm-gutterElement{font-variant-numeric:tabular-nums}.cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button{cursor:var(--cursor);color:var(--text-faint);background-color:var(--background-primary);top:0;right:auto;left:0;opacity:0;transition:opacity .2s;padding:4px 4px 4px 9px}.markdown-source-view.mod-cm6 .edit-block-button svg{margin:0!important}.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.edit-block-button{width:30px!important;padding-left:7px!important;transform:none!important;margin-left:0!important}.is-live-preview:not(.is-readable-line-width) .cm-embed-block>.edit-block-button{padding-left:0!important;margin-left:0!important;transform:none!important;right:0;left:auto;padding:4px}.markdown-source-view.mod-cm6 .edit-block-button:hover{background-color:var(--background-primary);color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button svg{opacity:1}.markdown-source-view.mod-cm6 .edit-block-button:hover svg{opacity:1}.markdown-source-view.mod-cm6 .cm-embed-block{padding:0;border:0;border-radius:0}.markdown-source-view.mod-cm6 .cm-embed-block:hover{border:0}.theme-light .cm-link,.theme-light .cm-operator,.theme-light .cm-string,.theme-light .cm-string-2,.theme-light .language-css .token.string,.theme-light .style .token.string,.theme-light .token.entity,.theme-light .token.operator,.theme-light .token.url{background-color:transparent}.markdown-source-view,.markdown-source-view.mod-cm5,.markdown-source-view.mod-cm6{padding:0}.cm-s-obsidian .CodeMirror-code{padding-right:0}.CodeMirror-lines{padding-bottom:170px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding-left:0;padding-right:0}.cm-s-obsidian pre.HyperMD-list-line{padding-top:0}.workspace .markdown-preview-view .markdown-embed{margin:0}.workspace .markdown-preview-view .markdown-embed-content{max-height:none}.internal-embed .markdown-preview-section,.markdown-embed-title{max-width:100%}.CodeMirror-linenumber{font-size:var(--font-adaptive-small)!important;font-feature-settings:'tnum';color:var(--text-faint);padding-top:3px}.cm-s-obsidian .cm-active span.cm-link.cm-hmd-barelink.cm-formatting-link-start,.cm-s-obsidian .cm-formatting-link+span.cm-link.cm-formatting.cm-formatting-link-end,.cm-s-obsidian span.cm-footref.cm-formatting.cm-formatting-link.cm-formatting-link-end,.cm-s-obsidian span.cm-formatting-link,.cm-s-obsidian span.cm-link.cm-hmd-barelink.cm-formatting-link-start,span.cm-image-marker{color:var(--text-faint)}.cm-formatting-quote{color:var(--text-faint)!important}figure{margin-inline-start:0;margin-inline-end:0}.markdown-preview-view blockquote,.markdown-preview-view ol,.markdown-preview-view p,.markdown-preview-view ul{margin-block-start:var(--spacing-p);margin-block-end:var(--spacing-p)}.markdown-preview-view ol ol,.markdown-preview-view ol ul,.markdown-preview-view ul ol,.markdown-preview-view ul ul{margin-block-start:0em;margin-block-end:0em}.markdown-preview-view h1,.markdown-preview-view h2,.markdown-preview-view h3,.markdown-preview-view h4,.markdown-preview-view h5,.markdown-preview-view h6{margin-block-start:1em;margin-block-end:var(--spacing-p)}.markdown-preview-view .mod-highlighted{transition:background-color .3s ease;background-color:var(--text-selection);color:inherit}.workspace-leaf-content>.view-content{--file-margins:0}.inline-title{padding-top:16px}.minimal-status-off .status-bar{--status-bar-position:static;--status-bar-radius:0;--status-bar-border-width:1px 0 0 0;--status-bar-background:var(--background-secondary);--status-bar-border-color:var(--ui1)}body:not(.minimal-status-off) .status-bar{background-color:var(--background-primary);--status-bar-border-width:0}.status-bar{transition:color .2s linear;color:var(--text-faint);font-size:var(--font-adaptive-smallest)}.status-bar .sync-status-icon.mod-success,.status-bar .sync-status-icon.mod-working{color:var(--text-faint)}.status-bar:hover,.status-bar:hover .sync-status-icon.mod-success,.status-bar:hover .sync-status-icon.mod-working{color:var(--text-muted);transition:color .2s linear}.status-bar .plugin-sync:hover .sync-status-icon.mod-success,.status-bar .plugin-sync:hover .sync-status-icon.mod-working{color:var(--text-normal)}.status-bar .status-bar-item{cursor:var(--cursor)!important}.status-bar .status-bar-item.cMenu-statusbar-button:hover,.status-bar .status-bar-item.mod-clickable:hover,.status-bar .status-bar-item.plugin-editor-status:hover,.status-bar .status-bar-item.plugin-sync:hover{text-align:center;background-color:var(--background-modifier-hover)!important}.tab-stack-top-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:right}.tab-stack-center{--tab-stacked-text-align:center}.tab-stack-center-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:center}.tab-stack-bottom{--tab-stacked-text-transform:rotate(180deg)}.tab-stack-bottom-flipped{--tab-stacked-text-align:right}.view-header-title,.view-header-title-parent{text-overflow:ellipsis}.view-header-title-container:not(.mod-at-end):after{display:none}body:not(.is-mobile) .view-actions .view-action:last-child{margin-left:-1px}.minimal-focus-mode .workspace-ribbon:not(.is-collapsed)~.mod-root .view-header:hover .view-actions,.mod-right.is-collapsed~.mod-root .view-header:hover .view-actions,.view-action.is-active:hover,.workspace-ribbon.mod-left.is-collapsed~.mod-root .view-header:hover .view-actions,body:not(.minimal-focus-mode) .workspace-ribbon:not(.is-collapsed)~.mod-root .view-actions{opacity:1;transition:opacity .25s ease-in-out}.view-header-title-container{opacity:0;transition:opacity .1s ease-in-out}.view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.view-header:hover .view-header-title-container,.workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:1;transition:opacity .1s ease-in-out}.is-phone .view-header-title-container,.minimal-tab-title-visible .view-header-title-container{opacity:1}.minimal-tab-title-hidden .view-header-title-container{opacity:0}.minimal-tab-title-hidden .view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.minimal-tab-title-hidden .view-header:hover .view-header-title-container,.minimal-tab-title-hidden .workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:0}body.window-title-off .titlebar-text{display:none}.titlebar-button-container.mod-right{background-color:transparent!important}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame){--titlebar-background:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-tabs.mod-top,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .workspace-tabs.mod-top{--titlebar-background-focused:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed){--titlebar-background:var(--bg2)}.mod-macos.is-hidden-frameless:not(.is-popout-window) .sidebar-toggle-button.mod-right{right:0;padding-right:var(--size-4-2)}body.is-focused{--titlebar-background-focused:var(--background-secondary)}.is-hidden-frameless:not(.colorful-frame) .mod-left-split .mod-top .workspace-tab-header-container{--tab-container-background:var(--background-secondary)}.mod-root .workspace-tab-header-status-icon{color:var(--text-muted)}.modal button:not(.mod-warning),.modal.mod-settings button:not(.mod-cta):not(.mod-warning),.modal.mod-settings button:not(.mod-warning){white-space:nowrap;transition:background-color .2s ease-out,border-color .2s ease-out}button.mod-warning{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 1px 1px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}button.mod-warning:hover{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 2px 3px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}.document-replace,.document-search{max-width:100%}.document-search-container{margin:0 auto;max-width:var(--max-width);width:var(--line-width-adaptive)}.is-mobile .CodeMirror-foldgutter-open:after,.is-mobile span[title="Fold line"]:after{transform:translateX(-2px)!important}body.is-mobile .CodeMirror-foldgutter-folded:after,body.is-mobile span[title="Unfold line"]:after{content:"›";font-family:sans-serif;transform:translateY(-2px);transform:rotate(-90deg) translateY(2px) translateX(-.45em)}body.is-mobile .CodeMirror-foldgutter-open:after,body.is-mobile span[title="Fold line"]:after{content:"›";font-family:sans-serif;transform:rotate(360deg)}body{--ig-adjust-reading:-0.95em;--ig-adjust-edit:2px}.markdown-rendered.show-indentation-guide li.task-list-item>ol::before,.markdown-rendered.show-indentation-guide li.task-list-item>ul::before,.markdown-rendered.show-indentation-guide li>ol::before,.markdown-rendered.show-indentation-guide li>ul::before{left:var(--ig-adjust-reading)}.markdown-source-view.mod-cm6 .cm-indent::before{transform:translateX(var(--ig-adjust-edit))}.is-mobile .markdown-rendered.show-indentation-guide li>ol::before,.is-mobile .markdown-rendered.show-indentation-guide li>ul::before{left:calc(0em + var(--ig-adjust-reading))}.is-mobile .markdown-source-view.mod-cm6 .cm-indent::before{transform:translateX(calc(2px + var(--ig-adjust-edit)))}.modal-button-container .mod-checkbox{--checkbox-radius:4px}.modal-container.mod-confirmation .modal{width:480px;min-width:0}.modal-container.mod-confirmation .modal-content{margin-top:10px}.modal-container.mod-confirmation .modal-content .setting-item{margin-top:10px}.modal-container.mod-confirmation .modal-button-container{display:flex}.modal-container.mod-confirmation .modal-button-container>.mod-warning:nth-last-child(3){background:0 0;border:none;font-weight:500;color:var(--text-error);cursor:pointer;margin-right:auto;box-shadow:none;padding-left:0;padding-right:0}.modal-container.mod-confirmation .modal-button-container>.mod-warning:nth-last-child(3):hover{text-decoration:underline}.modal-container.mod-confirmation .modal-button-container>.mod-warning:nth-last-child(2){margin-left:auto}.theme-light{--progress-outline:rgba(0,0,0,0.05)}.theme-dark{--progress-outline:rgba(255,255,255,0.04)}.markdown-preview-view progress,.markdown-rendered progress,.markdown-source-view.is-live-preview progress{width:220px}.markdown-preview-view progress[value]::-webkit-progress-bar,.markdown-rendered progress[value]::-webkit-progress-bar,.markdown-source-view.is-live-preview progress[value]::-webkit-progress-bar{box-shadow:inset 0 0 0 var(--border-width) var(--progress-outline)}.markdown-preview-view progress[value^='1']::-webkit-progress-value,.markdown-preview-view progress[value^='2']::-webkit-progress-value,.markdown-preview-view progress[value^='3']::-webkit-progress-value,.markdown-rendered progress[value^='1']::-webkit-progress-value,.markdown-rendered progress[value^='2']::-webkit-progress-value,.markdown-rendered progress[value^='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='3']::-webkit-progress-value{background-color:var(--color-red)}.markdown-preview-view progress[value^='4']::-webkit-progress-value,.markdown-preview-view progress[value^='5']::-webkit-progress-value,.markdown-rendered progress[value^='4']::-webkit-progress-value,.markdown-rendered progress[value^='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='5']::-webkit-progress-value{background-color:var(--color-orange)}.markdown-preview-view progress[value^='6']::-webkit-progress-value,.markdown-preview-view progress[value^='7']::-webkit-progress-value,.markdown-rendered progress[value^='6']::-webkit-progress-value,.markdown-rendered progress[value^='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='7']::-webkit-progress-value{background-color:var(--color-yellow)}.markdown-preview-view progress[value^='8']::-webkit-progress-value,.markdown-preview-view progress[value^='9']::-webkit-progress-value,.markdown-rendered progress[value^='8']::-webkit-progress-value,.markdown-rendered progress[value^='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='9']::-webkit-progress-value{background-color:var(--color-green)}.markdown-preview-view progress[value='1']::-webkit-progress-value,.markdown-preview-view progress[value='100']::-webkit-progress-value,.markdown-rendered progress[value='1']::-webkit-progress-value,.markdown-rendered progress[value='100']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='100']::-webkit-progress-value{background-color:var(--text-accent)}.markdown-preview-view progress[value='0']::-webkit-progress-value,.markdown-preview-view progress[value='2']::-webkit-progress-value,.markdown-preview-view progress[value='3']::-webkit-progress-value,.markdown-preview-view progress[value='4']::-webkit-progress-value,.markdown-preview-view progress[value='5']::-webkit-progress-value,.markdown-preview-view progress[value='6']::-webkit-progress-value,.markdown-preview-view progress[value='7']::-webkit-progress-value,.markdown-preview-view progress[value='8']::-webkit-progress-value,.markdown-preview-view progress[value='9']::-webkit-progress-value,.markdown-rendered progress[value='0']::-webkit-progress-value,.markdown-rendered progress[value='2']::-webkit-progress-value,.markdown-rendered progress[value='3']::-webkit-progress-value,.markdown-rendered progress[value='4']::-webkit-progress-value,.markdown-rendered progress[value='5']::-webkit-progress-value,.markdown-rendered progress[value='6']::-webkit-progress-value,.markdown-rendered progress[value='7']::-webkit-progress-value,.markdown-rendered progress[value='8']::-webkit-progress-value,.markdown-rendered progress[value='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='0']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='9']::-webkit-progress-value{background-color:var(--color-red)}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar,body:not(.native-scrollbars) ::-webkit-scrollbar{width:11px;background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar:horizontal,body:not(.native-scrollbars) ::-webkit-scrollbar:horizontal{height:11px}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-corner,body:not(.native-scrollbars) ::-webkit-scrollbar-corner{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-track,body:not(.native-scrollbars) ::-webkit-scrollbar-track{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb{background-clip:padding-box;border-radius:20px;border:3px solid transparent;background-color:var(--background-modifier-border);border-width:3px 3px 3px 3px;min-height:45px}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:hover{background-color:var(--background-modifier-border-hover)}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:active{background-color:var(--background-modifier-border-focus)}.tooltip{transition:none;animation:none}.tooltip.mod-left,.tooltip.mod-right{transform:none;animation:none}.tooltip.mod-error{color:var(--text-error)}.markdown-preview-view blockquote{padding:0 0 0 var(--nested-padding);font-size:var(--blockquote-size)}.markdown-source-view.mod-cm6 .HyperMD-quote,.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote{font-size:var(--blockquote-size)}.is-live-preview .cm-hmd-indent-in-quote{color:var(--text-faint)}.is-live-preview.is-readable-line-width>.cm-callout .callout{max-width:var(--max-width);margin:0 auto}.callouts-outlined .callout .callout-title{background-color:var(--background-primary);margin-top:-24px;z-index:200;width:fit-content;padding:0 .5em;margin-left:-.75em;letter-spacing:.05em;font-variant-caps:all-small-caps}.callouts-outlined .callout{overflow:visible;--callout-border-width:1px;--callout-border-opacity:0.5;--callout-title-size:0.8em;--callout-blend-mode:normal;background-color:transparent}.callouts-outlined .cm-embed-block.cm-callout{padding-top:12px}.callouts-outlined .callout-content .callout{margin-top:18px}body{--checkbox-radius:50%;--checkbox-top:2px;--checkbox-left:0px;--checkbox-margin:0px 6px 0px -2em}.checkbox-square{--checkbox-size:calc(var(--font-text-size) * 0.85);--checkbox-radius:4px;--checkbox-top:1px;--checkbox-left:0px;--checkbox-margin:0px 8px 0px -2em}body.minimal-strike-lists{--checklist-done-decoration:line-through}body:not(.minimal-strike-lists){--checklist-done-decoration:none;--checklist-done-color:var(--text-normal)}input[type=checkbox]{padding:0;margin:0 6px 0 0}.markdown-preview-section>.contains-task-list{padding-bottom:.5em}.mod-cm6 .HyperMD-task-line[data-task] .cm-formatting-list-ol~.task-list-label .task-list-item-checkbox{margin:1px}.markdown-preview-view .task-list-item-checkbox{position:relative;top:var(--checkbox-top);left:var(--checkbox-left);line-height:0}.markdown-preview-view ul>li.task-list-item{text-indent:0;line-height:var(--line-height)}.is-mobile .mod-cm6 .HyperMD-task-line[data-task] .task-list-item-checkbox{margin-left:-.4em}.is-mobile .markdown-preview-view input[type=checkbox].task-list-item-checkbox{top:.2em}.minimal-code-scroll{--code-white-space:pre}.minimal-code-scroll .HyperMD-codeblock.HyperMD-codeblock-bg{overflow-y:scroll;white-space:pre}.minimal-code-scroll .cm-hmd-codeblock{white-space:pre!important}@media print{.print{--code-background:#eee!important}}body{--embed-max-height:none;--embed-decoration-style:solid;--embed-decoration-color:var(--background-modifier-border-hover)}.embed-strict{--embed-background:transparent;--embed-border-left:0;--embed-padding:0}.embed-strict .markdown-embed-content{--folding-offset:0px}.embed-strict .el-embed-heading.el-p>p{margin-block-start:0;margin-block-end:0}.embed-strict .internal-embed .markdown-embed,.embed-strict .markdown-preview-view .markdown-embed,.embed-strict.markdown-preview-view .markdown-embed{padding:0}.embed-strict .internal-embed .markdown-embed .markdown-embed-title,.embed-strict .markdown-embed-title{display:none}.embed-strict .internal-embed:not([src*="#^"]) .markdown-embed-link{width:24px;opacity:0}.embed-underline .internal-embed{text-decoration-line:underline;text-decoration-style:var(--embed-decoration-style);text-decoration-color:var(--embed-decoration-color)}.contextual-typography .embed-strict .internal-embed .markdown-preview-view .markdown-preview-sizer>div,.embed-strict.contextual-typography .internal-embed .markdown-preview-view .markdown-preview-sizer>div{margin:0;width:100%}.markdown-embed .markdown-preview-view .markdown-preview-sizer{padding-bottom:0!important}.markdown-preview-view.is-readable-line-width .markdown-embed .markdown-preview-sizer,.markdown-preview-view.markdown-embed .markdown-preview-sizer{max-width:100%;width:100%;min-height:0!important;padding-bottom:0!important}.markdown-embed .markdown-preview-section div:last-child p,.markdown-embed .markdown-preview-section div:last-child ul{margin-block-end:2px}.markdown-preview-view .markdown-embed{margin-top:var(--nested-padding);padding:0 calc(var(--nested-padding)/ 2) 0 var(--nested-padding)}.markdown-embed-title{line-height:0;height:0}.internal-embed:not([src*="#^"]) .markdown-embed-link{right:0;width:100%}.file-embed-link,.markdown-embed-link{top:0;right:0;text-align:right;justify-content:flex-end}.file-embed-link svg,.markdown-embed-link svg{width:16px;height:16px}.markdown-embed .file-embed-link,.markdown-embed .markdown-embed-link{opacity:.6;transition:opacity .1s linear}.markdown-embed .file-embed-link:hover,.markdown-embed .markdown-embed-link:hover{opacity:1}.markdown-embed .file-embed-link:hover:hover,.markdown-embed .markdown-embed-link:hover:hover{background-color:transparent;--icon-color:var(--text-accent)}.file-embed-link:hover,.markdown-embed-link:hover{color:var(--text-muted)}.markdown-embed .markdown-preview-view{padding:0}.internal-embed .markdown-embed{border:0;border-left:1px solid var(--quote-opening-modifier);border-radius:0}a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}.theme-dark a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}div>ol,div>ul{padding-inline-start:1.4em}ul>li{min-height:1.4em}ol>li{margin-left:0}ol{margin-left:0;list-style:default}.markdown-source-view.mod-cm6 .cm-content .HyperMD-list-line{margin-left:var(--list-edit-offset)!important}.markdown-preview-view ol>li,.markdown-preview-view ul>li,.markdown-source-view ol>li,.markdown-source-view ul>li,.mod-cm6 .HyperMD-list-line.cm-line{padding-top:var(--list-spacing);padding-bottom:var(--list-spacing)}.is-mobile ul>li:not(.task-list-item)::marker{font-size:.8em}.is-mobile .markdown-rendered ol,.is-mobile .markdown-rendered ul{padding-inline-start:var(--list-indent)}.is-mobile .markdown-rendered div>ol,.is-mobile .markdown-rendered div>ul{padding-inline-start:2em}.is-mobile .el-ol>ol,.is-mobile .el-ul>ul{margin-left:0}.is-mobile .workspace-leaf-content:not([data-type=search]) .workspace-leaf-content[data-type=markdown] .nav-buttons-container{border-bottom:none;padding-top:5px}.is-mobile .mod-root .workspace-leaf-content[data-type=markdown] .search-input-container{width:calc(100% - 160px)}.embedded-backlinks .nav-header~.search-input-container{width:calc(100% - 140px);margin-top:12px}.embedded-backlinks .nav-buttons-container{position:absolute;right:0;top:14px}.embedded-backlinks .backlink-pane>.tree-item-self,.embedded-backlinks .backlink-pane>.tree-item-self:hover{text-transform:none;color:var(--text-normal);font-size:var(--font-adaptive-normal);font-weight:500;letter-spacing:unset}.markdown-source-view.mod-cm6 table{border-collapse:collapse}.markdown-preview-view table{margin-block-start:1em}.markdown-preview-view table,.markdown-source-view.mod-cm6 table{border:1px solid var(--border-color);border-collapse:collapse}.markdown-preview-view td,.markdown-preview-view th,.markdown-source-view.mod-cm6 td,.markdown-source-view.mod-cm6 th{padding:4px 10px}.markdown-preview-view td:first-child,.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 td:first-child,.markdown-source-view.mod-cm6 th:first-child{padding-left:0}.markdown-preview-view th,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,.table-view-table>thead>tr>th{padding:4px 10px}.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:first-child,.table-view-table>thead>tr>th:first-child{padding-left:0}body{--table-header-border-width:0 1px;--table-column-first-border-width:0;--table-column-last-border-width:0;--table-row-last-border-width:0}.is-live-preview .el-table{width:100%;max-width:100%}.cm-hmd-table-sep-dummy,.cm-s-obsidian .HyperMD-table-row span.cm-hmd-table-sep{color:var(--text-faint);font-weight:400}body.minimal-unstyled-tags{--tag-background:transparent;--tag-background-hover:transparent;--tag-border-width:0px;--tag-padding-x:0;--tag-padding-y:0;--tag-size:inherit;--tag-color-hover:var(--text-accent-hover)}body.minimal-unstyled-tags.is-mobile.theme-dark{--tag-background:transparent}body:not(.minimal-unstyled-tags){--tag-size:0.8em;--tag-padding-y:0.2em;--tag-background:transparent;--tag-background-hover:transparent;--tag-color:var(--text-muted);--tag-border-width:1px;--tag-border-color:var(--background-modifier-border);--tag-border-color-hover:var(--background-modifier-border-hover);--tag-color-hover:var(--text-normal)}body.is-mobile.theme-dark{--tag-background:transparent}h1,h2,h3,h4{letter-spacing:-.02em}body,button,input{font-family:var(--font-interface)}.cm-s-obsidian span.cm-error{color:var(--color-red)}.markdown-preview-view,.popover,.workspace-leaf-content[data-type=markdown]{font-family:var(--font-text)}.cm-s-obsidian,.markdown-preview-view,.markdown-source-view.mod-cm6.is-live-preview .cm-scroller,body{font-size:var(--font-adaptive-normal);font-weight:var(--normal-weight);line-height:var(--line-height)}.cm-s-obsidian,.markdown-source-view,.markdown-source-view.mod-cm6 .cm-scroller{line-height:var(--line-height);font-family:var(--font-editor)}.cm-s-obsidian span.cm-formatting-task{line-height:var(--line-height)}.mod-cm6 .cm-editor .HyperMD-header-1,.mod-cm6 .cm-editor .HyperMD-header-2,.mod-cm6 .cm-editor .HyperMD-header-3,.mod-cm6 .cm-editor .HyperMD-header-4,.mod-cm6 .cm-editor .HyperMD-header-5,.mod-cm6 .cm-editor .HyperMD-header-6{padding-top:.5em}.active-line-on .cm-line.cm-active,.active-line-on .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote.cm-active{background-color:var(--active-line-bg);box-shadow:-25vw 0 var(--active-line-bg),25vw 0 var(--active-line-bg)}.borders-none{--divider-width:0px;--tab-outline-width:0px}:root{--cards-min-width:180px;--cards-max-width:1fr;--cards-mobile-width:120px;--cards-image-height:400px;--cards-padding:1.2em;--cards-image-fit:contain;--cards-background:transparent;--cards-border-width:1px;--cards-aspect-ratio:auto;--cards-columns:repeat(auto-fit, minmax(var(--cards-min-width), var(--cards-max-width)))}@media (max-width:400pt){:root{--cards-min-width:var(--cards-mobile-width)}}.cards.table-100 table.dataview tbody,.table-100 .cards table.dataview tbody{padding:.25rem .75rem}.cards table.dataview tbody{clear:both;padding:.5rem 0;display:grid;grid-template-columns:var(--cards-columns);grid-column-gap:0.75rem;grid-row-gap:0.75rem}.cards table.dataview>tbody>tr{background-color:var(--cards-background);border:var(--cards-border-width) solid var(--background-modifier-border);display:flex;flex-direction:column;margin:0;padding:0 0 calc(var(--cards-padding)/3) 0;border-radius:6px;overflow:hidden;transition:box-shadow .15s linear;max-width:var(--cards-max-width)}.cards table.dataview>tbody>tr:hover{border:var(--cards-border-width) solid var(--background-modifier-border-hover);box-shadow:0 4px 6px 0 rgba(0,0,0,.05),0 1px 3px 1px rgba(0,0,0,.025);transition:box-shadow .15s linear}.cards table.dataview tbody>tr>td:first-child{font-weight:var(--bold-weight)}.cards table.dataview tbody>tr>td:first-child a{padding:0 0 calc(var(--cards-padding)/3);display:block}.cards table.dataview tbody>tr>td:not(:first-child){font-size:90%;color:var(--text-muted)}.cards table.dataview tbody>tr>td .el-p{display:block;width:100%}.cards table.dataview tbody>tr>td>:not(.el-embed-image){padding:calc(var(--cards-padding)/3) 0}.cards table.dataview tbody>tr>td:not(:last-child):not(:first-child)>.el-p:not(.el-embed-image){border-bottom:1px solid var(--background-modifier-border);width:100%}.cards table.dataview tbody>tr>td a{text-decoration:none}.cards table.dataview tbody>tr>td>button{width:100%;margin:calc(var(--cards-padding)/2) 0}.cards table.dataview tbody>tr>td:last-child>button{margin-bottom:calc(var(--cards-padding)/6)}.cards table.dataview tbody>tr>td>ul{width:100%;padding:.25em 0!important;margin:0 auto!important}.cards table.dataview tbody>tr>td:not(:last-child)>ul{border-bottom:1px solid var(--background-modifier-border)}.cards table.dataview tbody>tr>td .el-embed-image{background-color:var(--background-secondary);display:block;margin:0 calc(var(--cards-padding)/-2) 0 calc(var(--cards-padding)/-2);width:calc(100% + var(--cards-padding))}.cards table.dataview tbody>tr>td img{aspect-ratio:var(--cards-aspect-ratio);width:100%;object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.markdown-source-view.mod-cm6.cards .dataview.table-view-table>tbody>tr>td,.trim-cols .cards table.dataview tbody>tr>td{white-space:normal}.cards .dataview.table-view-table>tbody>tr>td,.cards table.dataview tbody>tr>td,.markdown-source-view.mod-cm6.cards .dataview.table-view-table>tbody>tr>td,.markdown-source-view.mod-cm6.cards table.dataview tbody>tr>td{border-bottom:none;padding:0!important;line-height:1.2;width:calc(100% - var(--cards-padding));margin:0 auto;overflow:visible!important;max-width:100%;display:flex}.links-int-on .cards table.dataview tbody>tr>td a{text-decoration:none}.markdown-source-view.mod-cm6.cards .edit-block-button{top:0}.cards.table-100 table.dataview thead>tr,.table-100 .cards table.dataview thead>tr{right:.75rem}.cards.table-100 table.dataview thead:before,.table-100 .cards table.dataview thead:before{margin-right:.75rem}.theme-light .cards table.dataview thead:before{background-image:url('data:image/svg+xml;utf8,')}.cards .el-pre+.el-lang-dataview .table-view-thead{padding-top:8px}.cards table.dataview thead{user-select:none;width:180px;display:block;float:right;position:relative;text-align:right;height:24px;padding-bottom:4px}.cards table.dataview thead:hover:before{opacity:.5;background-color:var(--background-modifier-hover)}.cards table.dataview thead:before{content:'';position:absolute;right:0;top:0;width:10px;height:16px;background-repeat:no-repeat;cursor:var(--cursor);text-align:right;padding:var(--size-4-1) var(--size-4-2);margin-bottom:2px;border-radius:var(--radius-s);font-weight:500;font-size:var(--font-adaptive-small);opacity:.25;background-position:center center;background-size:16px;background-image:url('data:image/svg+xml;utf8,')}.cards table.dataview thead>tr{top:-1px;position:absolute;display:none;z-index:9;border:1px solid var(--background-modifier-border-hover);background-color:var(--background-secondary);box-shadow:var(--shadow-s);padding:6px;border-radius:var(--radius-m);flex-direction:column;margin:26px 0 0 0;width:100%}.cards table.dataview thead:hover>tr{display:flex}.cards table.dataview thead>tr>th{display:block;padding:3px 30px 3px 6px!important;border-radius:var(--radius-s);width:100%;font-weight:400;color:var(--text-normal);cursor:var(--cursor);border:none;font-size:var(--font-ui-small)}.cards table.dataview thead>tr>th[sortable-style=sortable-asc],.cards table.dataview thead>tr>th[sortable-style=sortable-desc]{color:var(--text-normal)}.cards table.dataview thead>tr>th:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}.cards.cards-16-9{--cards-aspect-ratio:16/9}.cards.cards-1-1{--cards-aspect-ratio:1/1}.cards.cards-2-1{--cards-aspect-ratio:2/1}.cards.cards-2-3{--cards-aspect-ratio:2/3}.cards.cards-cols-1{--cards-columns:repeat(1, minmax(0, 1fr))}.cards.cards-cols-2{--cards-columns:repeat(2, minmax(0, 1fr))}.cards.cards-cover table.dataview tbody>tr>td img{object-fit:cover}.cards.cards-align-bottom table.dataview tbody>tr>td:last-child{align-items:flex-end;flex-grow:1}@media (max-width:400pt){.cards table.dataview tbody>tr>td:not(:first-child){font-size:80%}}@media (min-width:400pt){.cards-cols-3{--cards-columns:repeat(3, minmax(0, 1fr))}.cards-cols-4{--cards-columns:repeat(4, minmax(0, 1fr))}.cards-cols-5{--cards-columns:repeat(5, minmax(0, 1fr))}.cards-cols-6{--cards-columns:repeat(6, minmax(0, 1fr))}.cards-cols-7{--cards-columns:repeat(7, minmax(0, 1fr))}.cards-cols-8{--cards-columns:repeat(8, minmax(0, 1fr))}}.cm-formatting.cm-formatting-task.cm-property{font-family:var(--font-monospace);font-size:90%}input[data-task="!"]:checked,input[data-task="*"]:checked,input[data-task="-"]:checked,input[data-task="<"]:checked,input[data-task=">"]:checked,input[data-task="I"]:checked,input[data-task="b"]:checked,input[data-task="c"]:checked,input[data-task="d"]:checked,input[data-task="f"]:checked,input[data-task="k"]:checked,input[data-task="l"]:checked,input[data-task="p"]:checked,input[data-task="u"]:checked,input[data-task="w"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{--checkbox-marker-color:transparent;border:none;border-radius:0;background-image:none;background-color:currentColor;-webkit-mask-size:var(--checkbox-icon);-webkit-mask-position:50% 50%}input[data-task=">"]:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked{color:var(--text-faint);transform:rotate(90deg);-webkit-mask-position:50% 100%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M10.894 2.553a1 1 0 00-1.788 0l-7 14a1 1 0 001.169 1.409l5-1.429A1 1 0 009 15.571V11a1 1 0 112 0v4.571a1 1 0 00.725.962l5 1.428a1 1 0 001.17-1.408l-7-14z' /%3E%3C/svg%3E")}input[data-task="<"]:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z' clip-rule='evenodd' /%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="?"]:checked,li[data-task="?"]>input:checked,li[data-task="?"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-yellow);border-color:var(--color-yellow);background-position:50% 50%;background-size:200% 90%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="white" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="?"]:checked,.theme-dark li[data-task="?"]>input:checked,.theme-dark li[data-task="?"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="black" fill-opacity="0.8" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="/"]:checked,li[data-task="/"]>input:checked,li[data-task="/"]>p>input:checked{background-image:none;background-color:transparent;position:relative;overflow:hidden}input[data-task="/"]:checked:after,li[data-task="/"]>input:checked:after,li[data-task="/"]>p>input:checked:after{top:0;left:0;content:" ";display:block;position:absolute;background-color:var(--background-modifier-accent);width:calc(50% - .5px);height:100%;-webkit-mask-image:none}input[data-task="!"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="\""]:checked,input[data-task="“"]:checked,li[data-task="\""]>input:checked,li[data-task="\""]>p>input:checked,li[data-task="“"]>input:checked,li[data-task="“"]>p>input:checked{--checkbox-marker-color:transparent;background-position:50% 50%;background-color:var(--color-cyan);border-color:var(--color-cyan);background-size:75%;background-repeat:no-repeat;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="white" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="\""]:checked,.theme-dark input[data-task="“"]:checked,.theme-dark li[data-task="\""]>input:checked,.theme-dark li[data-task="\""]>p>input:checked,.theme-dark li[data-task="“"]>input:checked,.theme-dark li[data-task="“"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="black" fill-opacity="0.7" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}input[data-task="-"]:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}body:not(.tasks) .markdown-preview-view ul li[data-task="-"].task-list-item.is-checked,body:not(.tasks) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task]:is([data-task="-"]),body:not(.tasks) li[data-task="-"].task-list-item.is-checked{color:var(--text-faint);text-decoration:line-through solid var(--text-faint) 1px}input[data-task="*"]:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z' /%3E%3C/svg%3E")}input[data-task="l"]:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="i"]:checked,li[data-task="i"]>input:checked,li[data-task="i"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-blue);border-color:var(--color-blue);background-position:50%;background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="white" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="i"]:checked,.theme-dark li[data-task="i"]>input:checked,.theme-dark li[data-task="i"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="black" fill-opacity="0.8" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="S"]:checked,li[data-task="S"]>input:checked,li[data-task="S"]>p>input:checked{--checkbox-marker-color:transparent;border-color:var(--color-green);background-color:var(--color-green);background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill="white" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="S"]:checked,.theme-dark li[data-task="S"]>input:checked,.theme-dark li[data-task="S"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill-opacity="0.8" fill="black" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}input[data-task="I"]:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M11 3a1 1 0 10-2 0v1a1 1 0 102 0V3zM15.657 5.757a1 1 0 00-1.414-1.414l-.707.707a1 1 0 001.414 1.414l.707-.707zM18 10a1 1 0 01-1 1h-1a1 1 0 110-2h1a1 1 0 011 1zM5.05 6.464A1 1 0 106.464 5.05l-.707-.707a1 1 0 00-1.414 1.414l.707.707zM5 10a1 1 0 01-1 1H3a1 1 0 110-2h1a1 1 0 011 1zM8 16v-1h4v1a2 2 0 11-4 0zM12 14c.015-.34.208-.646.477-.859a4 4 0 10-4.954 0c.27.213.462.519.476.859h4.002z' /%3E%3C/svg%3E")}input[data-task="f"]:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.395 2.553a1 1 0 00-1.45-.385c-.345.23-.614.558-.822.88-.214.33-.403.713-.57 1.116-.334.804-.614 1.768-.84 2.734a31.365 31.365 0 00-.613 3.58 2.64 2.64 0 01-.945-1.067c-.328-.68-.398-1.534-.398-2.654A1 1 0 005.05 6.05 6.981 6.981 0 003 11a7 7 0 1011.95-4.95c-.592-.591-.98-.985-1.348-1.467-.363-.476-.724-1.063-1.207-2.03zM12.12 15.12A3 3 0 017 13s.879.5 2.5.5c0-1 .5-4 1.25-4.5.5 1 .786 1.293 1.371 1.879A2.99 2.99 0 0113 13a2.99 2.99 0 01-.879 2.121z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="k"]:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M18 8a6 6 0 01-7.743 5.743L10 14l-1 1-1 1H6v2H2v-4l4.257-4.257A6 6 0 1118 8zm-6-4a1 1 0 100 2 2 2 0 012 2 1 1 0 102 0 4 4 0 00-4-4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="u"]:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 7a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0V8.414l-4.293 4.293a1 1 0 01-1.414 0L8 10.414l-4.293 4.293a1 1 0 01-1.414-1.414l5-5a1 1 0 011.414 0L11 10.586 14.586 7H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="d"]:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 13a1 1 0 100 2h5a1 1 0 001-1V9a1 1 0 10-2 0v2.586l-4.293-4.293a1 1 0 00-1.414 0L8 9.586 3.707 5.293a1 1 0 00-1.414 1.414l5 5a1 1 0 001.414 0L11 9.414 14.586 13H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="w"]:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{color:var(--color-purple);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 3a1 1 0 011-1h.01a1 1 0 010 2H7a1 1 0 01-1-1zm2 3a1 1 0 00-2 0v1a2 2 0 00-2 2v1a2 2 0 00-2 2v.683a3.7 3.7 0 011.055.485 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0A3.7 3.7 0 0118 12.683V12a2 2 0 00-2-2V9a2 2 0 00-2-2V6a1 1 0 10-2 0v1h-1V6a1 1 0 10-2 0v1H8V6zm10 8.868a3.704 3.704 0 01-4.055-.036 1.704 1.704 0 00-1.89 0 3.704 3.704 0 01-4.11 0 1.704 1.704 0 00-1.89 0A3.704 3.704 0 012 14.868V17a1 1 0 001 1h14a1 1 0 001-1v-2.132zM9 3a1 1 0 011-1h.01a1 1 0 110 2H10a1 1 0 01-1-1zm3 0a1 1 0 011-1h.01a1 1 0 110 2H13a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="p"]:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M2 10.5a1.5 1.5 0 113 0v6a1.5 1.5 0 01-3 0v-6zM6 10.333v5.43a2 2 0 001.106 1.79l.05.025A4 4 0 008.943 18h5.416a2 2 0 001.962-1.608l1.2-6A2 2 0 0015.56 8H12V4a2 2 0 00-2-2 1 1 0 00-1 1v.667a4 4 0 01-.8 2.4L6.8 7.933a4 4 0 00-.8 2.4z' /%3E%3C/svg%3E")}input[data-task="c"]:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M18 9.5a1.5 1.5 0 11-3 0v-6a1.5 1.5 0 013 0v6zM14 9.667v-5.43a2 2 0 00-1.105-1.79l-.05-.025A4 4 0 0011.055 2H5.64a2 2 0 00-1.962 1.608l-1.2 6A2 2 0 004.44 12H8v4a2 2 0 002 2 1 1 0 001-1v-.667a4 4 0 01.8-2.4l1.4-1.866a4 4 0 00.8-2.4z' /%3E%3C/svg%3E")}input[data-task="b"]:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M5 4a2 2 0 012-2h6a2 2 0 012 2v14l-5-2.5L5 18V4z' /%3E%3C/svg%3E")}.colorful-active .nav-files-container{--nav-item-background-active:var(--interactive-accent);--nav-item-color-active:var(--text-on-accent)}.colorful-active #calendar-container .active,.colorful-active #calendar-container .active.today,.colorful-active #calendar-container .active:hover,.colorful-active #calendar-container .day:active{background-color:var(--interactive-accent);color:var(--text-on-accent)}.colorful-active #calendar-container .active .dot,.colorful-active #calendar-container .day:active .dot,.colorful-active #calendar-container .today.active .dot{fill:var(--text-on-accent)}body:not(.colorful-active) .horizontal-tab-nav-item.is-active,body:not(.colorful-active) .vertical-tab-nav-item.is-active{background-color:var(--background-modifier-hover);color:var(--text-normal)}body{--frame-background:hsl( var(--frame-background-h), var(--frame-background-s), var(--frame-background-l));--frame-icon-color:var(--frame-muted-color)}.theme-light{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) + 30%);--frame-outline-color:hsla( var(--frame-background-h), var(--frame-background-s), calc(var(--frame-background-l) - 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) - 35%))}.theme-dark{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) - 25%);--frame-outline-color:hsla( var(--frame-background-h), calc(var(--frame-background-s) - 2%), calc(var(--frame-background-l) + 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) + 25%))}.colorful-frame.theme-dark{--tab-outline-width:0px}.colorful-frame,.colorful-frame.is-focused{--frame-divider-color:var(--frame-outline-color);--titlebar-background:var(--frame-background);--titlebar-background-focused:var(--frame-background);--titlebar-text-color:var(--frame-muted-color);--minimal-tab-text-color:var(--frame-muted-color)}.colorful-frame .workspace-tabs:not(.mod-stacked),.colorful-frame.is-focused .workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color)}.colorful-frame .mod-top .workspace-tab-header-container,.colorful-frame .titlebar,.colorful-frame .workspace-ribbon.mod-left:before,.colorful-frame.is-focused .mod-top .workspace-tab-header-container,.colorful-frame.is-focused .titlebar,.colorful-frame.is-focused .workspace-ribbon.mod-left:before{--tab-outline-color:var(--frame-outline-color);--tab-divider-color:var(--frame-outline-color)}.colorful-frame .mod-root .workspace-tab-header .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-root .workspace-tab-header .workspace-tab-header-inner-icon{--icon-color:var(--minimal-tab-text-color-active);--icon-color-hover:var(--minimal-tab-text-color-active);--icon-color-active:var(--minimal-tab-text-color-active);--icon-color-focused:var(--minimal-tab-text-color-active)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header,.colorful-frame .mod-right-split .mod-top .workspace-tab-header,.colorful-frame .sidebar-toggle-button,.colorful-frame .workspace-tab-header-new-tab,.colorful-frame .workspace-tab-header-tab-list,.colorful-frame .workspace-tab-header:not(.is-active),.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .sidebar-toggle-button,.colorful-frame.is-focused .workspace-tab-header-new-tab,.colorful-frame.is-focused .workspace-tab-header-tab-list,.colorful-frame.is-focused .workspace-tab-header:not(.is-active){--background-modifier-hover:var(--frame-outline-color);--icon-color:var(--frame-icon-color);--icon-color-hover:var(--frame-icon-color);--icon-color-active:var(--frame-icon-color);--icon-color-focused:var(--frame-icon-color);--icon-color-focus:var(--frame-icon-color)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon{color:var(--frame-icon-color)}.workspace-leaf-resize-handle{transition:none}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle{-webkit-app-region:no-drag;border:0;z-index:15}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{content:"";height:100%;width:1px;background:linear-gradient(180deg,var(--frame-outline-color) var(--header-height),var(--divider-color) var(--header-height));top:0;position:absolute}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:hover:after{background:var(--divider-color-hover)}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after{left:0}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{right:0}body.colorful-headings{--h1-color:var(--color-red);--h2-color:var(--color-orange);--h3-color:var(--color-yellow);--h4-color:var(--color-green);--h5-color:var(--color-blue);--h6-color:var(--color-purple)}body.colorful-headings .modal{--h1-color:var(--text-normal);--h2-color:var(--text-normal);--h3-color:var(--text-normal);--h4-color:var(--text-normal);--h5-color:var(--text-normal);--h6-color:var(--text-normal)}.is-mobile .tree-item-self .collapse-icon{width:20px}body:not(.minimal-icons-off) svg.calendar-day,body:not(.minimal-icons-off) svg.excalidraw-icon,body:not(.minimal-icons-off) svg.globe,body:not(.minimal-icons-off) svg.longform,body:not(.minimal-icons-off) svg.obsidian-leaflet-plugin-icon-map{background-color:currentColor}body:not(.minimal-icons-off) svg.excalidraw-icon path{display:none}body:not(.minimal-icons-off) svg.bar-graph{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.excalidraw-icon{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.longform{-webkit-mask-image:url('data:image/svg+xml;utf8,')}.fancy-cursor .CodeMirror-cursor{border:none;border-left:2px solid var(--text-accent)}.cm-fat-cursor .CodeMirror-cursor{background-color:var(--text-accent);opacity:.5;width:5px}.cm-animate-fat-cursor{background-color:var(--text-accent);opacity:.5;width:5px}body .markdown-source-view.mod-cm6 .cm-content{caret-color:unset}body.fancy-cursor .markdown-source-view.mod-cm6 .cm-content,body.fancy-cursor .mod-cm6 .cm-line{caret-color:var(--text-accent)}.fancy-cursor input.prompt-input{caret-color:var(--text-accent)}.workspace-ribbon.mod-left{border-left:0;transition:none}.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed,.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary)!important}.minimal-focus-mode .workspace-ribbon.mod-left{transition:background-color 0s linear 0s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed{border-color:transparent;background-color:var(--background-primary)}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary);border-color:transparent}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-settings{opacity:0;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-settings{opacity:1;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode.borders-title .workspace-ribbon.mod-left.is-collapsed{border-right:none}.minimal-focus-mode .mod-top-right-space .sidebar-toggle-button.mod-right{opacity:0}.minimal-focus-mode:not(.minimal-status-off) .status-bar{opacity:0;transition:opacity .2s ease-in-out}.minimal-focus-mode .status-bar:hover{opacity:1;transition:opacity .2s ease-in-out}.minimal-focus-mode .mod-root .workspace-tabs{position:relative}.minimal-focus-mode .mod-root .workspace-tabs:before:hover{background-color:#00f}.minimal-focus-mode .mod-root .workspace-tab-header-container{height:0;transition:all .1s linear .6s;--tab-outline-width:0px}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-tab-list{opacity:0;transition:opacity .1s linear .6s}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-spacer:before{width:100%;content:" ";background-color:transparent;height:15px;position:absolute;z-index:100;top:0;left:0}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{height:var(--header-height);--tab-outline-width:1px;transition:all .1s linear 50ms}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-tab-list{opacity:1;transition:opacity .1s linear 50ms}.minimal-focus-mode.mod-macos:not(.is-fullscreen) .workspace:not(.is-left-sidedock-open) .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner{padding-top:30px}body.show-view-header .app-container .workspace-split.mod-root>.workspace-leaf .view-header{transition:height .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header{height:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .view-header::after{width:100%;content:" ";background-color:transparent;height:40px;position:absolute;z-index:-9;top:0}body.minimal-focus-mode.show-view-header .view-actions,body.minimal-focus-mode.show-view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header-title-container{opacity:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:focus-within,body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:hover,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header{height:calc(var(--header-height) + 2px);transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-actions,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-actions,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:hover .view-actions,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-title-container{opacity:1;transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .view-content{height:100%}.full-width-media .image-embed img:not(.emoji):not([width]),.full-width-media .markdown-preview-view .image-embed img:not(.emoji):not([width]),.full-width-media .markdown-preview-view audio,.full-width-media .markdown-preview-view video{width:100%}.table-small table:not(.calendar){--table-text-size:85%}.table-tiny table:not(.calendar){--table-text-size:75%}.row-alt table:not(.calendar) tbody>tr>td:first-child,.row-alt table:not(.calendar) th:first-child,.row-alt.markdown-source-view.mod-cm6 td:first-child,.row-alt.markdown-source-view.mod-cm6 th:first-child,.row-hover th:first-child,.table-lines table:not(.calendar) tbody>tr>td:first-child,.table-lines table:not(.calendar) thead>tr>th:first-child,.table-lines.markdown-source-view.mod-cm6 td:first-child,.table-lines.markdown-source-view.mod-cm6 th:first-child{padding-left:10px}.row-alt{--table-row-alt-background:var(--background-table-rows)}.col-alt{--table-column-alt-background:var(--background-table-rows)}.table-tabular table:not(.calendar){font-variant-numeric:tabular-nums}.table-lines{--table-border-width:1px;--table-header-border-width:1px;--table-column-first-border-width:1px;--table-column-last-border-width:1px;--table-row-last-border-width:1px}.table-nowrap{--table-white-space:nowrap}.table-nowrap .table-wrap,.trim-cols{--table-white-space:normal}.table-numbers table:not(.calendar){counter-reset:section}.table-numbers table:not(.calendar)>thead>tr>th:first-child::before{content:" ";padding-right:.5em;display:inline-block;min-width:2em}.table-numbers table:not(.calendar)>tbody>tr>td:first-child::before{counter-increment:section;content:counter(section) " ";text-align:center;padding-right:.5em;display:inline-block;min-width:2em;color:var(--text-faint);font-variant-numeric:tabular-nums}.row-lines .table-view-table>tbody>tr>td,.row-lines table:not(.calendar) tbody>tr>td{border-bottom:1px solid var(--background-modifier-border)}.row-lines table:not(.calendar) tbody>tr:last-child>td{border-bottom:none}.col-lines .table-view-table thead>tr>th:not(:last-child),.col-lines .table-view-table>tbody>tr>td:not(:last-child),.col-lines table:not(.calendar) tbody>tr>td:not(:last-child){border-right:1px solid var(--background-modifier-border)}.row-hover{--table-row-background-hover:hsla( var(--accent-h), 50%, 80%, 20% )}.theme-dark .row-hover,.theme-dark.row-hover{--table-row-background-hover:hsla( var(--accent-h), 30%, 40%, 20% )}.theme-dark .markdown-preview-view img,.theme-dark .markdown-source-view img{opacity:var(--image-muted);transition:opacity .25s linear}@media print{body{--image-muted:1}}.theme-dark .markdown-preview-view img:hover,.theme-dark .markdown-source-view img:hover,.theme-dark .print-preview img{opacity:1;transition:opacity .25s linear}div[src$="#invert"],div[src$="#multiply"]{background-color:var(--background-primary)}.theme-dark div[src$="#invert"] img,.theme-dark img[src$="#invert"],.theme-dark span[src$="#invert"] img{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-dark div[src$="#multiply"] img,.theme-dark img[src$="#multiply"],.theme-dark span[src$="#multiply"] img{mix-blend-mode:screen}.theme-light div[src$="#multiply"] img,.theme-light img[src$="#multiply"],.theme-light span[src$="#multiply"] img{mix-blend-mode:multiply}.theme-light div[src$="#invertW"] img,.theme-light img[src$="#invertW"],.theme-light span[src$=invertW] img{filter:invert(1) hue-rotate(180deg)}img[src$="#circle"],span[src$="#circle"] img,span[src$="#round"] img{border-radius:50%;aspect-ratio:1/1}img[src$="#outline"],span[src$="#outline"] img{border:1px solid var(--ui1)}img[src$="#interface"],span[src$="#interface"] img{border:1px solid var(--ui1);box-shadow:0 .5px .9px rgba(0,0,0,.021),0 1.3px 2.5px rgba(0,0,0,.03),0 3px 6px rgba(0,0,0,.039),0 10px 20px rgba(0,0,0,.06);margin-top:10px;margin-bottom:15px;border-radius:var(--radius-m)}body{--image-grid-fit:cover;--image-grid-background:transparent}.image-embed.is-loaded{line-height:0}.image-embed.is-loaded img{background-color:var(--image-grid-background)}.image-embed.is-loaded img:active{background-color:transparent}div:not(.el-embed-image)+.el-embed-image{margin-top:1rem}.el-embed-image{margin-top:.5rem}.contextual-typography .markdown-preview-section>.el-embed-image>p{margin-block-start:0;margin-block-end:0}.img-grid .markdown-preview-section .el-embed-image img:not(.emoji):not([width]),.img-grid .markdown-preview-section video{width:100%}.img-grid .markdown-preview-section>.el-embed-image>p{display:grid;grid-column-gap:0.5rem;grid-row-gap:0;grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.img-grid .markdown-preview-section>.el-embed-image>p>br{display:none}.img-grid .markdown-preview-section>.el-embed-image>p>img{object-fit:var(--image-grid-fit);align-self:stretch}.img-grid .markdown-preview-section>.el-embed-image>p>.internal-embed img{object-fit:var(--image-grid-fit);height:100%}.img-grid .img-grid-ratio .markdown-preview-section>.el-embed-image>p>.internal-embed img,.img-grid.img-grid-ratio .markdown-preview-section>.el-embed-image>p>.internal-embed img{object-fit:contain;height:100%;align-self:center}@media (max-width:400pt){.el-embed-image{margin-top:.25rem}.img-grid .markdown-preview-section>.el-embed-image>p{grid-column-gap:0.25rem}}body:not(.zoom-off) .view-content div:not(.canvas-node-content) img{max-width:100%;cursor:zoom-in}body:not(.zoom-off) .view-content img:active{cursor:zoom-out}body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{background-color:var(--background-primary);padding:10px}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active,body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{aspect-ratio:unset;cursor:zoom-out;display:block;z-index:200;position:fixed;max-height:calc(100% + 1px);max-width:100%;height:calc(100% + 1px);width:100%;object-fit:contain;margin:-.5px auto 0!important;text-align:center;padding:0;left:0;right:0;bottom:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active:after{background-color:var(--background-primary);opacity:.9;content:" ";height:calc(100% + 1px);width:100%;position:fixed;left:0;right:1px;z-index:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active img{aspect-ratio:unset;top:50%;z-index:99;transform:translateY(-50%);padding:0;margin:0 auto;width:calc(100% - 20px);max-height:95vh;object-fit:contain;left:0;right:0;bottom:0;position:absolute;opacity:1}.labeled-nav.is-fullscreen:not(.colorful-frame){--labeled-nav-top-margin:0}.labeled-nav{--labeled-nav-top-margin:var(--header-height)}.labeled-nav.is-translucent .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{background-color:transparent}.labeled-nav.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav.mod-macos .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before{-webkit-app-region:drag;position:absolute;width:calc(100% - var(--divider-width));height:calc(var(--header-height) - var(--tab-outline-width));border-bottom:0 solid var(--tab-outline-color)}.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed){border:none;--tab-outline-width:0px}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos:not(.hider-ribbon) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{border-bottom:var(--tab-outline-width) solid var(--tab-outline-color)}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav.mod-macos:not(.hider-ribbon) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav:not(.is-hidden-frameless) .workspace-ribbon.mod-left:not(.is-collapsed){--tab-outline-width:1px}.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{position:absolute;top:0;content:" "}.labeled-nav.hider-ribbon.mod-macos.is-hidden-frameless:not(.is-fullscreen):not(.is-popout-window) .mod-left-split:not(.is-sidedock-collapsed) .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav:not(.is-grabbing):not(.is-fullscreen).is-hidden-frameless .mod-top .workspace-tab-header-container{-webkit-app-region:no-drag}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-spacer{display:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-inner-title{display:inline-block;font-weight:500;font-size:var(--font-adaptive-smaller)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{position:relative;flex-direction:column-reverse!important;height:auto;width:100%}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .sidebar-toggle-button.mod-left{position:absolute;justify-content:flex-end;padding-right:var(--size-4-2);top:0;right:0}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{padding-top:var(--size-4-2);margin-top:var(--labeled-nav-top-margin);flex-direction:column!important;background-color:var(--background-secondary)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-container-inner{flex-grow:1;gap:0;padding:var(--size-4-2) var(--size-4-3)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header{--icon-color:var(--text-muted);--tab-text-color:var(--text-muted);--tab-text-color-focused:var(--text-muted);padding:0;margin-bottom:2px;border:none;height:auto}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:not(:hover){background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover{opacity:1;--tab-text-color-active:var(--text-normal);--tab-text-color-focused:var(--text-normal);--tab-text-color-focused-active:var(--text-normal);--tab-text-color-focused-active-current:var(--text-normal);--icon-color:var(--text-normal)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header .workspace-tab-header-inner{gap:var(--size-2-3);padding:var(--size-4-1) var(--size-4-2);box-shadow:none;border:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.has-active-menu:hover,.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover{background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover .workspace-tab-header-inner,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:var(--nav-item-background-hover)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover .workspace-tab-header-inner-icon{color:var(--icon-color-active)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{border:none;padding:0}body{--table-max-width:var(--max-width);--left-margin-table:auto}.maximize-tables-auto{--table-max-width:auto;--left-margin-table:max( calc(50% + var(--folding-offset)/2 - var(--line-width-adaptive)/2), calc(50% + var(--folding-offset)/2 - var(--max-width)/2) )}.maximize-tables-auto.table-100,.maximize-tables-auto.table-max,.maximize-tables-auto.table-wide{--table-max-width:var(--max-width);--left-margin-table:auto}.maximize-tables-off{--table-max-width:auto;--left-margin-table:max( calc(50% + var(--folding-offset)/2 - var(--line-width-adaptive)/2), calc(50% + var(--folding-offset)/2 - var(--max-width)/2))}.maximize-tables-off.table-wide{--left-margin-table:max( calc(50% + var(--folding-offset)/2 - var(--line-width-wide)/2), calc(50% + var(--folding-offset)/2 - var(--max-width)/2))}.maximize-tables-off.table-max{--left-margin-table:calc(50% + var(--folding-offset)/2 - var(--max-width)/2)}.maximize-tables-off.table-100{--left-margin-table:0}.contextual-typography .markdown-preview-view.markdown-preview-view.is-readable-line-width .markdown-preview-sizer{display:flex;flex-direction:column;width:100%;max-width:100%;padding-left:0;padding-top:0}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer{align-items:center;padding-left:0}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div{margin-left:auto;margin-right:auto;max-width:var(--max-width);width:var(--line-width-adaptive)}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-embed .markdown-preview-sizer>div{max-width:100%}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataview,.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataviewjs,.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-table{width:100%;max-width:100%;overflow-x:auto}.el-lang-dataview .block-language-dataview .contains-task-list,.el-lang-dataviewjs .block-language-dataviewjs .contains-task-list{max-width:100%}.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.is-readable-line-width .el-table table{width:var(--table-max-width);max-width:var(--line-width-adaptive);margin:0 auto .5rem}.markdown-embed .el-lang-dataview .dataview.table-view-table,.markdown-embed .el-table table{width:100%}.markdown-preview-view.table-100.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.markdown-preview-view.table-100.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.markdown-preview-view.table-100.is-readable-line-width .el-table table,.table-100 .el-lang-dataview .dataview.table-view-table,.table-100 .el-lang-dataviewjs .dataview.table-view-table,.table-100 .el-table table{max-width:100%!important;width:100%!important}.markdown-preview-view.table-max .el-lang-dataview .dataview.table-view-table,.markdown-preview-view.table-max .el-lang-dataviewjs .dataview.table-view-table,.markdown-preview-view.table-max .el-table table,.table-max .el-lang-dataview .dataview.table-view-table,.table-max .el-lang-dataviewjs .dataview.table-view-table,.table-max .el-table table{max-width:100%!important}.markdown-preview-view.is-readable-line-width.table-wide .el-lang-dataview .dataview.table-view-table,.markdown-preview-view.is-readable-line-width.table-wide .el-lang-dataviewjs .dataview.table-view-table,.markdown-preview-view.is-readable-line-width.table-wide .el-table table,.table-wide .markdown-preview-view.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.table-wide .markdown-preview-view.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.table-wide .markdown-preview-view.is-readable-line-width .el-table table{max-width:var(--line-width-wide)!important}.table-100 .dataview.table-view-table td:first-child,.table-100 .dataview.table-view-table th:first-child,.table-100 .markdown-source-view.mod-cm6 td:first-child,.table-100 .markdown-source-view.mod-cm6 th:first-child,.table-100 table td:first-child,.table-100 table th:first-child{padding-left:20px!important}.table-100 .dataview.table-view-table td:last-child,.table-100 .dataview.table-view-table th:last-child,.table-100 table td:last-child,.table-100 table th:last-child{padding-right:20px}.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet{width:100%}.contextual-typography .markdown-preview-view.is-readable-line-width.chart-wide .markdown-preview-sizer>.el-lang-chart,.contextual-typography .markdown-preview-view.is-readable-line-width.iframe-wide .markdown-preview-sizer>.el-iframe,.contextual-typography .markdown-preview-view.is-readable-line-width.img-wide .markdown-preview-sizer>.el-embed-image,.contextual-typography .markdown-preview-view.is-readable-line-width.map-wide .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.chart-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.iframe-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.img-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.map-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet{width:var(--line-width-wide)}.contextual-typography .markdown-preview-view.iframe-100 .markdown-preview-sizer>.el-iframe,.contextual-typography .markdown-preview-view.img-100 .markdown-preview-sizer>.el-embed-image,.contextual-typography .markdown-preview-view.is-readable-line-width.chart-100 .markdown-preview-sizer>.el-lang-chart,.contextual-typography .markdown-preview-view.is-readable-line-width.map-100 .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.chart-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.iframe-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.img-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.map-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet{width:100%;max-width:100%}.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.is-readable-line-width .el-table table{max-width:calc(var(--line-width-adaptive) - var(--folding-offset));margin-left:var(--left-margin-table)!important}.chart-100 .el-lang-chart,.chart-max .el-lang-chart,.chart-wide .el-lang-chart,.embed-strict .el-embed-page p,.iframe-100 .el-iframe,.iframe-max .el-iframe,.iframe-wide .el-iframe,.img-100 .el-embed-image,.img-max .el-embed-image,.img-wide .el-embed-image,.map-100 .el-lang-leaflet,.map-max .el-lang-leaflet,.map-wide .el-lang-leaflet,.table-100 .el-lang-dataview,.table-100 .el-lang-dataviewjs,.table-100 .el-table,.table-max .el-lang-dataview,.table-max .el-lang-dataviewjs,.table-max .el-table,.table-wide .el-lang-dataview,.table-wide .el-lang-dataviewjs,.table-wide .el-table{--folding-offset:0px}.chart-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.chart-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.img-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.img-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.map-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.map-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table,.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table{width:var(--max-width)!important;max-width:var(--max-width)!important;transform:none!important;padding-left:0;margin:0 auto!important}.chart-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.chart-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.img-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.img-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.map-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.map-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table,.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table{width:var(--line-width-wide)!important;max-width:var(--max-width);transform:none!important;padding-left:0;margin:0 auto!important}.chart-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.chart-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.img-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.img-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.map-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.map-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width table,.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width table{width:100%!important;max-width:100%!important;transform:none!important;margin:0 auto!important;padding-left:0}@media (max-width:400pt){.markdown-preview-view .el-lang-dataview td:first-child .markdown-preview-view .el-lang-dataviewjs th:first-child,.markdown-preview-view .el-lang-dataview th:first-child,.markdown-preview-view .el-lang-dataviewjs td:first-child,.markdown-preview-view .el-table td:first-child,.markdown-preview-view .el-table th:first-child{padding-left:6vw}.markdown-preview-view .el-lang-dataview td:last-child,.markdown-preview-view .el-lang-dataview th:last-child,.markdown-preview-view .el-lang-dataviewjs td:last-child,.markdown-preview-view .el-lang-dataviewjs th:last-child,.markdown-preview-view .el-table td:last-child,.markdown-preview-view .el-table th:last-child{padding-right:6vw}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataview .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataviewjs,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-table{padding-left:0;padding-right:0}.markdown-preview-view .table-view-table table,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataview .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataviewjs,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-table{width:100%}}@media (max-width:400pt){.is-mobile{--folding-offset:0px}}.markdown-preview-view.wide,.markdown-source-view.wide{--line-width-adaptive:var(--line-width-wide)}.markdown-preview-view.max,.markdown-source-view.max{--line-width-adaptive:300em;--line-width-wide:300em}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer{max-width:var(--max-width);width:var(--line-width-adaptive);padding-left:0}.markdown-source-view.is-readable-line-width .CodeMirror{padding-left:0;padding-right:0;margin:0 auto 0 auto;width:var(--line-width-adaptive);max-width:var(--max-width)}.markdown-reading-view .markdown-preview-view:not(.is-readable-line-width)>.markdown-preview-sizer{max-width:var(--max-width);margin:0 auto;padding-left:var(--folding-offset)}.is-mobile .markdown-source-view.mod-cm6 .cm-gutters{padding-right:0}.minimal-readable-off .view-header-title-container{width:var(--max-width)}.markdown-source-view.mod-cm6:not(.is-readable-line-width) .cm-contentContainer,.markdown-source-view.mod-cm6:not(.is-readable-line-width) .inline-title{max-width:var(--max-width);margin:0 0 0 calc(50% - var(--max-width)/ 2)!important;padding-left:var(--folding-offset)}.markdown-source-view.mod-cm6 .cm-content>.cm-embed-block[contenteditable=false]{overflow-x:auto}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div[data-block-language=dataview],.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div[data-block-language=dataviewjs]{padding-left:var(--folding-offset)}.internal-embed>.markdown-embed,.popover:not(.hover-editor){--folding-offset:0}.markdown-source-view.mod-cm6.is-readable-line-width .inline-title{width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(var(--max-width) - var(--folding-offset));margin-right:auto;margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer{max-width:100%}.markdown-source-view.mod-cm6.is-readable-line-width .cm-line:not(.HyperMD-table-row){max-width:calc(var(--max-width) - var(--folding-offset))}.is-live-preview.is-readable-line-width .cm-embed-block table.dataview,.is-live-preview.is-readable-line-width.embed-strict .internal-embed .markdown-preview-sizer,.is-readable-line-width .block-language-dataview table.dataview,.is-readable-line-width .block-language-dataviewjs table.dataview,.markdown-preview-view.is-readable-line-width .dataview.result-group .contains-task-list,.markdown-source-view.is-live-preview.is-readable-line-width table.NLT__table{width:100%;max-width:100%;transform:none;margin-left:auto!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-line.HyperMD-list-line .internal-embed.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line>.internal-embed{margin-left:0!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-content>img:not([width]),.markdown-source-view.mod-cm6.is-readable-line-width .cm-embed-block.cm-callout>.callout,.markdown-source-view.mod-cm6.is-readable-line-width .cm-html-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line.HyperMD-codeblock,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line.HyperMD-quote,.markdown-source-view.mod-cm6.is-readable-line-width .embedded-backlinks,.markdown-source-view.mod-cm6.is-readable-line-width .internal-embed,.markdown-source-view.mod-cm6.is-readable-line-width table{width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(var(--max-width) - var(--folding-offset));margin-right:auto;margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-line>.cm-html-embed{--folding-offset:0}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content>img[width]{max-width:var(--max-width);margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-embed-block>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-embed-block>mjx-container,.markdown-source-view.mod-cm6.is-readable-line-width .mod-empty{width:calc(var(--line-width-adaptive) - var(--folding-offset))!important;max-width:calc(var(--max-width) - var(--folding-offset));margin-right:auto;margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .HyperMD-list-line{width:calc(var(--line-width-adaptive) - var(--folding-offset) - var(--list-edit-offset));max-width:calc(var(--max-width) - var(--folding-offset) - var(--list-edit-offset));margin-right:auto;margin-left:max(calc(50% + var(--list-edit-offset) + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--list-edit-offset) + var(--folding-offset) - var(--max-width)/ 2))!important}body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.dataview-container>.contains-task-list,body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.list-view-ul,body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.result-group>.contains-task-list,body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview>h4{max-width:100%;margin-right:auto;margin-left:auto;transform:none}body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataview h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataview>h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h1,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h2,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h3,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>p,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.dataview-container>.contains-task-list,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.dataview-error,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.list-view-ul,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.result-group{width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:var(--max-width);margin-right:auto;margin-left:auto}.is-live-preview.is-readable-line-width .block-language-dataviewjs h4,.is-live-preview.is-readable-line-width .dataview .contains-task-list,.is-live-preview.is-readable-line-width .dataview.dataview-container .contains-task-list,.is-live-preview.is-readable-line-width .dataview.list-view-ul,.is-live-preview.is-readable-line-width .dataview>h4{--folding-offset:10px;width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(100% - var(--folding-offset));transform:translateX(calc(var(--folding-offset)/2));margin-right:auto;margin-left:auto}.table-100 .is-live-preview.is-readable-line-width .dataview .contains-task-list,.table-100 .is-live-preview.is-readable-line-width .dataview.list-view-ul,.table-100 .is-live-preview.is-readable-line-width .dataview>h4,.table-100.is-live-preview.is-readable-line-width .dataview .contains-task-list,.table-100.is-live-preview.is-readable-line-width .dataview.list-view-ul,.table-100.is-live-preview.is-readable-line-width .dataview>h4{max-width:calc(var(--max-width) - var(--folding-offset))}.markdown-preview-view.is-readable-line-width .block-language-dataview h4,.markdown-preview-view.is-readable-line-width .block-language-dataview>h4,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs h4,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h1,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h2,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h3,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h4,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>p,.markdown-preview-view.is-readable-line-width .dataview .contains-task-list,.markdown-preview-view.is-readable-line-width .dataview.dataview-error,.markdown-preview-view.is-readable-line-width .dataview.list-view-ul,.markdown-preview-view.is-readable-line-width .dataview.result-group{--folding-offset:10px;width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(var(--max-width) - var(--folding-offset));margin-left:auto;margin-right:max(calc(50% - var(--line-width-adaptive)/ 2),calc(50% - var(--max-width)/ 2))}body:not(.links-int-on){--link-decoration:none}body:not(.links-ext-on){--link-external-decoration:none}body:not(.sidebar-color) .mod-right-split{--background-secondary:var(--background-primary)}body:not(.sidebar-color) .mod-right-split :not(.mod-top) .workspace-tab-header-container{--tab-container-background:var(--background-primary)}body{--minimal-tab-text-color:var(--text-muted);--minimal-tab-text-color-active:var(--text-normal)}.workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color);--tab-text-color-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active-current:var(--minimal-tab-text-color-active)}.tabs-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-underline .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0;--tab-outline-width:0px;--tab-background-active:transparent}.tabs-underline .mod-root .workspace-tab-header-container{border-bottom:1px solid var(--divider-color)}.tabs-underline .mod-root .workspace-tab-header{border-bottom:2px solid transparent}.tabs-underline .mod-root .workspace-tab-header:hover{border-bottom:2px solid var(--ui2)}.tabs-underline .mod-root .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.tabs-underline .mod-root .workspace-tab-header.is-active{border-bottom:2px solid var(--ax3)}.tabs-underline .mod-root .workspace-tab-header-inner:hover{background-color:transparent}body:not(.sidebar-tabs-underline):not(.sidebar-tabs-index):not(.sidebar-tabs-square) .workspace>.workspace-split:not(.mod-root) .workspace-tabs:not(.mod-top) .workspace-tab-header-container{--tab-outline-width:0}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked){--tab-background:var(--frame-outline-color);--tab-outline-width:1px}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-close-button,.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover .workspace-tab-header-inner-close-button{color:var(--minimal-tab-text-color-active)}.tabs-modern.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{--tab-outline-width:0px}.tabs-modern .mod-root{--tab-container-background:var(--background-primary)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked){--tab-background:var(--background-modifier-hover);--tab-height:calc(var(--header-height) - 14px);--tab-outline-width:0px}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::before{display:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner{align-items:center;margin:0;padding:2px var(--size-4-2) 0 var(--size-4-1)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-title{text-overflow:ellipsis;-webkit-mask-image:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header{background:0 0;border-radius:5px;border:none;box-shadow:none;height:var(--tab-height);margin-left:var(--size-4-1);padding:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-title{color:var(--tab-text-color-active)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active.mod-active,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover{opacity:1;background-color:var(--tab-background)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-new-tab{margin-right:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner{padding:0 var(--size-4-1) 0 var(--size-4-2);border:1px solid transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active:not(.mod-active) .workspace-tab-header-inner,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(:hover):not(.mod-active) .workspace-tab-header-inner{border:1px solid var(--tab-outline-color)}.tabs-modern.sidebar-tabs-default .mod-right-split,.tabs-modern.sidebar-tabs-wide .mod-right-split{--tab-outline-width:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:0;margin:0;flex-grow:1;gap:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header{flex-grow:1;border-radius:0;max-width:100px}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner{border-bottom:2px solid transparent;border-radius:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover{border-color:var(--ui2)}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner{border-color:var(--ax3);padding-top:1px}.sidebar-tabs-square .mod-left-split,.sidebar-tabs-square .mod-right-split{--tab-radius:0px}.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-index:not(.labeled-nav) .mod-left-split,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-square:not(.labeled-nav) .mod-left-split{--tab-background-active:var(--background-secondary)}.sidebar-tabs-index .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner,.sidebar-tabs-square .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:1px var(--size-4-2) 0;margin:6px 0 calc(var(--tab-outline-width) * -1);flex-grow:1}.sidebar-tabs-index .mod-right-split .workspace-tab-header,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header,.sidebar-tabs-square .mod-right-split .workspace-tab-header,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1;max-width:100px;border-radius:var(--tab-radius) var(--tab-radius) 0 0}.sidebar-tabs-index .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active,.sidebar-tabs-square .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{box-shadow:0 0 0 var(--tab-outline-width) var(--tab-outline-color);color:var(--tab-text-color-active);background-color:var(--tab-background-active)}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{flex-grow:1;border:1px solid var(--tab-outline-color);padding:3px;margin:6px 8px 6px;border-radius:4px}.sidebar-tabs-wide .mod-right-split .workspace-tab-header,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1}.sidebar-tabs-wide .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{border-color:transparent}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.full-file-names{--nav-item-white-space:normal}body:not(.full-file-names) .tree-item-inner{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.theme-dark,.theme-light{--h1l:var(--ui1);--h2l:var(--ui1);--h3l:var(--ui1);--h4l:var(--ui1);--h5l:var(--ui1);--h6l:var(--ui1)}.h1-l .markdown-reading-view h1:not(.embedded-note-title),.h1-l .mod-cm6 .cm-editor .HyperMD-header-1{border-bottom:1px solid var(--h1l);padding-bottom:.4em;margin-block-end:0.6em}.h2-l .markdown-reading-view h2,.h2-l .mod-cm6 .cm-editor .HyperMD-header-2{border-bottom:1px solid var(--h2l);padding-bottom:.4em;margin-block-end:0.6em}.h3-l .markdown-reading-view h3,.h3-l .mod-cm6 .cm-editor .HyperMD-header-3{border-bottom:1px solid var(--h3l);padding-bottom:.4em;margin-block-end:0.6em}.h4-l .markdown-reading-view h4,.h4-l .mod-cm6 .cm-editor .HyperMD-header-4{border-bottom:1px solid var(--h4l);padding-bottom:.4em;margin-block-end:0.6em}.h5-l .markdown-reading-view h5,.h5-l .mod-cm6 .cm-editor .HyperMD-header-5{border-bottom:1px solid var(--h5l);padding-bottom:.4em;margin-block-end:0.6em}.h6-l .markdown-reading-view h6,.h6-l .mod-cm6 .cm-editor .HyperMD-header-6{border-bottom:1px solid var(--h6l);padding-bottom:.4em;margin-block-end:0.6em}.is-tablet .workspace-drawer{padding-top:0}.is-tablet .workspace-drawer:not(.is-pinned){margin:30px 16px 0;height:calc(100vh - 48px);border-radius:15px;border:none}.is-tablet .workspace-drawer-ribbon{background-color:var(--background-primary);border-right:1px solid var(--background-modifier-border)}.is-tablet .workspace-drawer-header{padding-top:var(--size-4-4)}.is-mobile .markdown-source-view.mod-cm6 .cm-gutters{margin-left:0}.backlink-pane>.tree-item-self,.backlink-pane>.tree-item-self:hover,.outgoing-link-pane>.tree-item-self,.outgoing-link-pane>.tree-item-self:hover{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500}body{--canvas-dot-pattern:var(--background-modifier-border-hover)}.canvas-node-label{font-size:var(--font-adaptive-small)}.canvas-edges :not(.is-themed) path.canvas-display-path{stroke:var(--background-modifier-border-focus)}.canvas-edges :not(.is-themed) polyline.canvas-path-end{stroke:var(--background-modifier-border-focus);fill:var(--background-modifier-border-focus)}.canvas-node-container{border:1.5px solid var(--background-modifier-border-focus)}.node-insert-event.mod-inside-iframe{--max-width:100%;--folding-offset:0px}.node-insert-event.mod-inside-iframe .cm-editor .cm-content{padding-top:0}.is-mobile .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{display:none}body:not(.is-mobile) .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest)}.nav-buttons-container{justify-content:flex-start}.nav-file-tag{padding-top:.2em;background-color:transparent;color:var(--text-faint)}.nav-file .is-active .nav-file-tag,.nav-file:hover .nav-file-tag{color:var(--text-muted)}input.prompt-input,input.prompt-input:focus,input.prompt-input:focus-visible,input.prompt-input:hover{border-color:rgba(var(--mono-rgb-100),.05)}.is-mobile .mod-publish .modal-content{display:unset;padding:10px 10px 10px;margin-bottom:120px;overflow-x:hidden}.is-mobile .mod-publish .button-container,.is-mobile .modal.mod-publish .modal-button-container{padding:10px 15px 30px;margin-left:0;left:0}.is-mobile .modal.mod-publish .modal-title{padding:10px 20px;margin:0 -10px;border-bottom:1px solid var(--background-modifier-border)}.is-mobile .publish-site-settings-container{margin-right:0;padding:0}.is-mobile .modal.mod-publish .modal-content .publish-sections-container{margin-right:0;padding-right:0}@media (max-width:400pt){.is-mobile .publish-changes-info,.is-mobile .publish-section-header{flex-wrap:wrap;border:none}.is-mobile .publish-changes-info .publish-changes-add-linked-btn{flex-basis:100%;margin-top:10px}.is-mobile .publish-section-header-text{flex-basis:100%;margin-bottom:10px;margin-left:20px;margin-top:-8px}.is-mobile .publish-section{background:var(--background-secondary);border-radius:10px;padding:12px 12px 1px}.is-mobile .publish-changes-switch-site{flex-grow:0;margin-right:10px}}.release-notes-view .cm-scroller.is-readable-line-width{width:var(--line-width-adaptive);max-width:var(--max-width);margin:0 auto}@media (max-width:400pt){.is-mobile .modal.mod-sync-log{width:100vw;height:100vh;max-height:calc(100vh - 32px);box-shadow:0 -32px 0 32px var(--background-primary);bottom:0;padding-bottom:10px}}.obsidian-banner.solid{border-bottom:var(--divider-width) solid var(--divider-color)}.contextual-typography .markdown-preview-view div.has-banner-icon.obsidian-banner-wrapper{overflow:visible}.theme-dark .markdown-preview-view img.emoji{opacity:1}body.theme-dark .button-default,body.theme-light .button-default{border:none;box-shadow:none;height:var(--input-height);background:var(--background-modifier-hover);color:var(--text-normal);font-size:revert;font-weight:500;transform:none;transition:all .1s linear;padding:0 20px}body.theme-dark .button-default:hover,body.theme-light .button-default:hover{border:none;background:var(--background-modifier-border-hover);box-shadow:none;transform:none;transition:all .1s linear}body.theme-dark .button-default:active,body.theme-dark .button-default:focus,body.theme-light .button-default:active,body.theme-light .button-default:focus{box-shadow:none}body .button-default.blue{background-color:var(--color-blue)!important}.button-default.red{background-color:var(--color-red)!important}.button-default.green{background-color:var(--color-green)!important}.button-default.yellow{background-color:var(--color-yellow)!important}.button-default.purple{background-color:var(--color-purple)!important}.workspace-leaf-content[data-type=calendar] .view-content{padding:5px 0 0 0}.mod-root #calendar-container{width:var(--line-width-adaptive);max-width:var(--max-width);margin:0 auto;padding:0}#calendar-container{padding:0 var(--size-4-4) var(--size-4-1);--color-background-day-empty:var(--background-secondary-alt);--color-background-day-active:var(--background-modifier-hover);--color-background-day-hover:var(--background-modifier-hover);--color-dot:var(--text-faint);--color-text-title:var(--text-normal);--color-text-heading:var(--text-muted);--color-text-day:var(--text-normal);--color-text-today:var(--text-normal);--color-arrow:var(--text-faint);--color-background-day-empty:transparent}#calendar-container .table{border-collapse:separate;table-layout:fixed}#calendar-container h2{font-weight:400;font-size:var(--h2)}#calendar-container .arrow{cursor:var(--cursor);width:22px;border-radius:4px;padding:3px 7px}#calendar-container .arrow svg{width:12px;height:12px;color:var(--text-faint);opacity:.7}#calendar-container .arrow:hover{fill:var(--text-muted);color:var(--text-muted);background-color:var(--background-modifier-hover)}#calendar-container .arrow:hover svg{color:var(--text-muted);opacity:1}#calendar-container tr th{padding:2px 0 4px;font-weight:500;letter-spacing:.1em;font-size:var(--font-adaptive-smallest)}#calendar-container tr th:first-child{padding-left:0!important}#calendar-container tr td{padding:2px 0 0 0;border-radius:var(--radius-m);cursor:var(--cursor);border:1px solid transparent;transition:none}#calendar-container tr td:first-child{padding-left:0!important}#calendar-container .nav{padding:0;margin:var(--size-4-2) var(--size-4-1)}#calendar-container .dot{margin:0}#calendar-container .month,#calendar-container .title,#calendar-container .year{font-size:var(--font-adaptive-normal);font-weight:400;color:var(--text-normal)}#calendar-container .today,#calendar-container .today.active{color:var(--text-accent);font-weight:600}#calendar-container .today .dot,#calendar-container .today.active .dot{fill:var(--text-accent)}#calendar-container .active .task{stroke:var(--text-faint)}#calendar-container .active{color:var(--text-normal)}#calendar-container .reset-button{text-transform:none;letter-spacing:0;font-size:var(--font-adaptive-smaller);font-weight:500;color:var(--text-muted);border-radius:4px;margin:0;padding:2px 8px}#calendar-container .reset-button:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}#calendar-container .day,#calendar-container .reset-button{cursor:var(--cursor)}#calendar-container .day.adjacent-month{color:var(--text-faint);opacity:1}#calendar-container .day{padding:2px 4px 4px;font-size:calc(var(--font-adaptive-normal) - 2px)}#calendar-container .active,#calendar-container .active.today,#calendar-container .day:hover,#calendar-container .week-num:hover{background-color:var(--color-background-day-active)}#calendar-container .active .dot{fill:var(--text-faint)}#calendar-container .active .task{stroke:var(--text-faint)}.block-language-chart canvas,.block-language-dataviewjs canvas{margin:1em 0}.theme-dark,.theme-light{--chart-color-1:var(--color-blue);--chart-color-2:var(--color-red);--chart-color-3:var(--color-yellow);--chart-color-4:var(--color-green);--chart-color-5:var(--color-orange);--chart-color-6:var(--color-purple);--chart-color-7:var(--color-cyan);--chart-color-8:var(--color-pink)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact,.checklist-plugin-main .group .page,.checklist-plugin-main .group svg{cursor:var(--cursor)}.workspace .view-content .checklist-plugin-main{padding:10px 10px 15px 15px;--todoList-togglePadding--compact:2px;--todoList-listItemMargin--compact:2px}.checklist-plugin-main .title{font-weight:400;color:var(--text-muted);font-size:var(--font-adaptive-small)}.checklist-plugin-main .group svg{fill:var(--text-faint)}.checklist-plugin-main .group svg:hover{fill:var(--text-normal)}.checklist-plugin-main .group .title:hover{color:var(--text-normal)}.checklist-plugin-main .group:not(:last-child){border-bottom:1px solid var(--background-modifier-border)}.checklist-plugin-main .group{padding:0 0 2px 0}.checklist-plugin-main .group .classic:last-child,.checklist-plugin-main .group .compact:last-child{margin-bottom:10px}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{font-size:var(--font-adaptive-small)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{background:0 0;border-radius:0;margin:1px auto;padding:0}.checklist-plugin-main .group .classic .content{padding:0}.checklist-plugin-main .group .classic:hover,.checklist-plugin-main .group .compact:hover{background:0 0}.markdown-preview-view.checklist-plugin-main ul>li:not(.task-list-item)::before{display:none}.checklist-plugin-main .group .compact>.toggle .checked{background:var(--text-accent);top:-1px;left:-1px;height:18px;width:18px}.checklist-plugin-main .compact .toggle:hover{opacity:1!important}.checklist-plugin-main .group .count{font-size:var(--font-adaptive-smaller);padding:0;background:0 0;font-weight:400;color:var(--text-faint)}.checklist-plugin-main .group .group-header:hover .count{color:var(--text-muted)}.checklist-plugin-main .group .checkbox{border:1px solid var(--background-modifier-border-hover);min-height:18px;min-width:18px;height:18px;width:18px}.checklist-plugin-main .group .checkbox:hover{border:1px solid var(--background-modifier-border-focus)}.checklist-plugin-main button:active,.checklist-plugin-main button:focus,.checklist-plugin-main button:hover{box-shadow:none!important}.checklist-plugin-main button.collapse{padding:0}body:not(.is-mobile) .checklist-plugin-main button.collapse svg{width:18px;height:18px}.is-mobile .checklist-plugin-main .group-header .title{flex-grow:1;flex-shrink:0}.is-mobile .checklist-plugin-main button{width:auto}.is-mobile .checklist-plugin-main.markdown-preview-view ul{padding-inline-start:0}.is-mobile .workspace .view-content .checklist-plugin-main{padding-bottom:50px}body #cMenuModalBar{box-shadow:0 2px 20px var(--shadow-color)}body #cMenuModalBar .cMenuCommandItem{cursor:var(--cursor)}body #cMenuModalBar button.cMenuCommandItem:hover{background-color:var(--background-modifier-hover)}.MiniSettings-statusbar-button{padding-top:0;padding-bottom:0}.el-hr hr{margin:1rem 0}.el-p+.el-h1,.el-p+.el-h2{margin-top:.75rem}.el-h1+.el-h1,.el-h1+.el-h2,.el-h2+.el-h2,.el-hr+.el-h1,.el-hr+.el-h2{margin-top:0}.el-lang-dataview+.el-p,.el-lang-dataviewjs+.el-p,.el-ol+.el-lang-dataview,.el-ol+.el-lang-dataviewjs,.el-ol+.el-table,.el-p+.el-table,.el-p:not(.el-lang-dataview)+.el-lang-dataview,.el-p:not(.el-lang-dataviewjs)+.el-lang-dataviewjs,.el-ul+.el-lang-dataview,.el-ul+.el-lang-dataviewjs,.el-ul+.el-table{margin-top:var(--spacing-p)}.el-div+.el-h1,.el-embed-image+.el-p:not(.el-embed-image),.el-iframe+.el-p,.el-lang-leaflet,.el-lang-leaflet+*,.el-p+.el-iframe,.el-p:not(.el-embed-image)+.el-embed-image,.el-pre+.el-h1{margin-top:1rem}.markdown-preview-view .table-view-table>thead>tr>th,body .table-view-table>thead>tr>th{font-weight:400;font-size:var(--table-text-size);color:var(--text-muted);border-bottom:1px solid var(--background-modifier-border);cursor:var(--cursor)}table.dataview ul.dataview-ul{list-style:none;padding-inline-start:0;margin-block-start:0em!important;margin-block-end:0em!important}.markdown-preview-view .table-view-table>tbody>tr>td,.markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td{max-width:var(--max-col-width)}body .dataview.small-text{color:var(--text-faint)}body:not(.row-hover) .dataview.task-list-basic-item:hover,body:not(.row-hover) .dataview.task-list-item:hover,body:not(.row-hover) .table-view-table>tbody>tr:hover{background-color:transparent!important;box-shadow:none}body.row-hover .dataview.task-list-basic-item:hover,body.row-hover .dataview.task-list-item:hover,body.row-hover .table-view-table>tbody>tr:hover{background-color:var(--table-row-background-hover)!important}body .dataview-error{margin-top:16px;background-color:transparent}.dataview.dataview-error,.markdown-source-view.mod-cm6 .cm-content .dataview.dataview-error{color:var(--text-muted)}body div.dataview-error-box{min-height:0;border:none;background-color:transparent;font-size:var(--table-text-size);border-radius:var(--radius-m);padding:15px 0}body div.dataview-error-box p{margin-block-start:0;margin-block-end:0;color:var(--text-faint)}.markdown-source-view div.dataview-error-box{margin-top:15px}.trim-cols .markdown-preview-view .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>thead>tr>th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}ul .dataview .task-list-basic-item:hover,ul .dataview .task-list-item:hover{background-color:transparent;box-shadow:none}body .dataview.result-group{padding-left:0}body .dataview .inline-field-standalone-value,body .dataview.inline-field-key,body .dataview.inline-field-value{font-family:var(--font-text);font-size:calc(var(--font-adaptive-normal) - 2px);background:0 0;color:var(--text-muted)}body .dataview.inline-field-key{padding:0}body .dataview .inline-field-standalone-value{padding:0}body .dataview.inline-field-key::after{margin-left:3px;content:"|";color:var(--background-modifier-border)}body .dataview.inline-field-value{padding:0 1px 0 3px}.markdown-preview-view .block-language-dataview table.calendar th{border:none;cursor:default;background-image:none}.markdown-preview-view .block-language-dataview table.calendar .day{font-size:var(--font-adaptive-small)}.database-plugin__navbar,.database-plugin__scroll-container,.database-plugin__table{width:100%}.dbfolder-table-container{--font-adaptive-normal:var(--table-text-size);--font-size-text:12px}.database-plugin__cell_size_wide .database-plugin__td{padding:.15rem}.database-plugin__table{border-spacing:0!important}.MuiAppBar-root{background-color:transparent!important}.workspace-leaf-content .view-content.dictionary-view-content{padding:0}div[data-type=dictionary-view] .contents{padding-bottom:2rem}div[data-type=dictionary-view] .results>.container{background-color:transparent;margin-top:0;max-width:none;padding:0 10px}div[data-type=dictionary-view] .error,div[data-type=dictionary-view] .errorDescription{text-align:left;font-size:var(--font-adaptive-small);padding:10px 12px 0;margin:0}div[data-type=dictionary-view] .results>.container h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 0 2px;margin-bottom:6px}div[data-type=dictionary-view] .container .main{border-radius:0;background-color:transparent;font-size:var(--font-adaptive-smaller);line-height:1.3;color:var(--text-muted);padding:5px 0 0}div[data-type=dictionary-view] .main .definition{padding:10px;border:1px solid var(--background-modifier-border);border-radius:5px;margin:10px 0 5px;background-color:var(--background-primary)}div[data-type=dictionary-view] .main .definition:last-child{border:1px solid var(--background-modifier-border)}div[data-type=dictionary-view] .main .synonyms{padding:10px 0 0}div[data-type=dictionary-view] .main .synonyms p{margin:0}div[data-type=dictionary-view] .main .definition>blockquote{margin:0}div[data-type=dictionary-view] .main .label{color:var(--text-normal);margin-bottom:2px;font-size:var(--font-adaptive-smaller);font-weight:500}div[data-type=dictionary-view] .main .mark{color:var(--text-normal);background-color:var(--text-selection);box-shadow:none}div[data-type=dictionary-view] .main>.opener{font-size:var(--font-adaptive-small);color:var(--text-normal);padding-left:5px}body .excalidraw,body .excalidraw.theme--dark{--color-primary-light:var(--text-selection);--color-primary:var(--interactive-accent);--color-primary-darker:var(--interactive-accent-hover);--color-primary-darkest:var(--interactive-accent-hover);--ui-font:var(--font-interface);--island-bg-color:var(--background-secondary);--icon-fill-color:var(--text-normal);--button-hover:var(--background-modifier-hover);--button-gray-1:var(--background-modifier-hover);--button-gray-2:var(--background-modifier-hover);--focus-highlight-color:var(--background-modifier-border-focus);--default-bg-color:var(--background-primary);--default-border-color:var(--background-modifier-border);--input-border-color:var(--background-modifier-border);--link-color:var(--text-accent);--overlay-bg-color:rgba(255, 255, 255, 0.88);--text-primary-color:var(--text-normal)}.git-view-body .opener{text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 5px 10px;margin-bottom:6px}.git-view-body .file-view .opener{text-transform:none;letter-spacing:normal;font-size:var(--font-adaptive-smallest);font-weight:400;padding:initial;margin-bottom:0}.git-view-body .file-view .opener .collapse-icon{display:flex!important;margin-left:-7px}.git-view-body{margin-top:6px}.git-view-body .file-view{margin-left:4px}.git-view-body .file-view main:hover{color:var(--text-normal)}.git-view-body .file-view .tools .type{display:none!important}.git-view-body .file-view .tools{opacity:0;transition:opacity .1s}.git-view-body .file-view main:hover>.tools{opacity:1}.git-view-body .staged{margin-bottom:12px}.git-view-body .opener.open{color:var(--text-normal)}div[data-type=git-view] .search-input-container{margin-left:0;width:100%}.git-view-body .opener .collapse-icon{display:none!important}.git-view-body main{background-color:var(--background-primary)!important;width:initial!important}.git-view-body .file-view>main:not(.topLevel){margin-left:7px}div[data-type=git-view] .commit-msg{min-height:2.5em!important;height:2.5em!important;padding:6.5px 8px!important}div[data-type=git-view] .search-input-clear-button{bottom:5.5px}.mod-macos.hider-frameless .workspace-ribbon{border:none}.hider-ribbon:not(.is-mobile) .workspace-ribbon-collapse-btn{display:none}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-right{pointer-events:none}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left{position:absolute;border-right:0px;margin:0;height:var(--header-height);overflow:visible;flex-basis:0;bottom:0;top:auto;display:flex!important;flex-direction:row;z-index:17;opacity:0;transition:opacity .25s ease-in-out;filter:drop-shadow(2px 10px 30px rgba(0,0,0,.2));gap:0}.hider-ribbon:not(.is-mobile) .side-dock-actions,.hider-ribbon:not(.is-mobile) .side-dock-settings{flex-direction:row;display:flex;border-top:var(--border-width) solid var(--background-modifier-border);background:var(--background-secondary);margin:0;position:relative;gap:var(--size-2-2)}.hider-ribbon:not(.is-mobile) .side-dock-actions{padding-left:8px}.hider-ribbon:not(.is-mobile) .side-dock-settings{border-right:var(--border-width) solid var(--background-modifier-border);border-top-right-radius:var(--radius-m);padding:0 var(--size-2-2)}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left .side-dock-ribbon-action{display:flex;margin:7px 0 8px}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left:hover{opacity:1;transition:opacity .25s ease-in-out}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left .workspace-ribbon-collapse-btn{opacity:0}.hider-ribbon:not(.is-mobile) .workspace-split.mod-left-split{margin:0}.hider-ribbon:not(.is-mobile) .workspace-leaf-content .item-list{padding-bottom:40px}.hider-ribbon .workspace-ribbon{padding:0}.popover.hover-editor{--folding-offset:10px}.theme-dark,.theme-light{--he-title-bar-inactive-bg:var(--background-secondary);--he-title-bar-inactive-pinned-bg:var(--background-secondary);--he-title-bar-active-pinned-bg:var(--background-secondary);--he-title-bar-active-bg:var(--background-secondary);--he-title-bar-inactive-fg:var(--text-muted);--he-title-bar-active-fg:var(--text-normal);--he-title-bar-font-size:14px}.theme-light{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.032),0px 5.9px 8.7px rgba(0, 0, 0, 0.052),0px 10.4px 18.1px rgba(0, 0, 0, 0.071),0px 20px 40px rgba(0, 0, 0, 0.11)}.theme-dark{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.081),0px 5.9px 8.7px rgba(0, 0, 0, 0.131),0px 10.4px 18.1px rgba(0, 0, 0, 0.18),0px 20px 40px rgba(0, 0, 0, 0.28)}.popover.hover-editor:not(.snap-to-viewport){--max-width:92%}.popover.hover-editor:not(.snap-to-viewport) .markdown-preview-view,.popover.hover-editor:not(.snap-to-viewport) .markdown-source-view .cm-content{font-size:90%}body .popover.hover-editor:not(.is-loaded){box-shadow:var(--popover-shadow)}body .popover.hover-editor:not(.is-loaded) .markdown-preview-view{padding:15px 0 0 0}body .popover.hover-editor:not(.is-loaded) .view-content{height:100%;background-color:var(--background-primary)}body .popover.hover-editor:not(.is-loaded) .view-actions{height:auto}body .popover.hover-editor:not(.is-loaded) .popover-content{border:1px solid var(--background-modifier-border-hover)}body .popover.hover-editor:not(.is-loaded) .popover-titlebar{padding:0 4px}body .popover.hover-editor:not(.is-loaded) .popover-titlebar .popover-title{padding-left:4px;letter-spacing:-.02em;font-weight:var(--title-weight)}body .popover.hover-editor:not(.is-loaded) .markdown-embed{height:auto;font-size:unset;line-height:unset}body .popover.hover-editor:not(.is-loaded) .markdown-embed .markdown-preview-view{padding:0}body .popover.hover-editor:not(.is-loaded).show-navbar .popover-titlebar{border-bottom:var(--border-width) solid var(--background-modifier-border)}body .popover.hover-editor:not(.is-loaded) .popover-action,body .popover.hover-editor:not(.is-loaded) .popover-header-icon{cursor:var(--cursor);margin:4px 0;padding:4px 3px;border-radius:var(--radius-m);color:var(--icon-color)}body .popover.hover-editor:not(.is-loaded) .popover-action.mod-pin-popover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.mod-pin-popover{padding:4px 2px}body .popover.hover-editor:not(.is-loaded) .popover-action svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon svg{opacity:var(--icon-muted)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover{background-color:var(--background-modifier-hover);color:var(--icon-color-hover)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover svg{opacity:1;transition:opacity .1s ease-in-out}body .popover.hover-editor:not(.is-loaded) .popover-action.is-active,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.is-active{color:var(--icon-color)}body.minimal-dark-black.theme-dark,body.minimal-dark-tonal.theme-dark,body.minimal-light-tonal.theme-light,body.minimal-light-white.theme-light,body.theme-dark{--kanban-border:0px}body:not(.is-mobile) .kanban-plugin__grow-wrap>textarea:focus{box-shadow:none}body:not(.minimal-icons-off) .kanban-plugin svg.cross{height:14px;width:14px}body .kanban-plugin__icon>svg,body .kanban-plugin__lane-settings-button svg{width:18px;height:18px}body .kanban-plugin{--kanban-border:var(--border-width);--interactive-accent:var(--text-selection);--interactive-accent-hover:var(--background-modifier-hover);--text-on-accent:var(--text-normal);background-color:var(--background-primary)}body .kanban-plugin__markdown-preview-view{font-family:var(--font-text)}body .kanban-plugin__board>div{margin:0 auto}body .kanban-plugin__checkbox-label{color:var(--text-muted)}body .kanban-plugin__item-markdown ul{margin:0}body .kanban-plugin__item-content-wrapper{box-shadow:none}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea{padding:0;border:0;border-radius:0}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__item-title p,body .kanban-plugin__markdown-preview-view{font-size:var(--font-ui-medium);line-height:1.3}body .kanban-plugin__item{background-color:var(--background-primary)}body .kanban-plugin__item-title-wrapper{align-items:center}body .kanban-plugin__lane-form-wrapper{border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane-header-wrapper{border-bottom:0}body .kanban-plugin__lane-header-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-input-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-title p{background:0 0;color:var(--text-normal);font-size:var(--font-ui-medium);font-weight:500}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea{padding:0;border-radius:0;height:auto}body .kanban-plugin__item-form .kanban-plugin__grow-wrap{background-color:var(--background-primary)}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea::placeholder{color:var(--text-faint)}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button,body .kanban-plugin__item button.kanban-plugin__item-edit-button,body .kanban-plugin__item-settings-actions>button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane-action-wrapper>button{background:0 0;transition:color .1s ease-in-out}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button:hover,body .kanban-plugin__item button.kanban-plugin__item-edit-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-edit-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{color:var(--text-normal);transition:color .1s ease-in-out;background:0 0}body .kanban-plugin__new-lane-button-wrapper{position:fixed;bottom:30px}body .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border:1px dashed var(--background-modifier-border);height:2em}body .kanban-plugin__item-postfix-button-wrapper{align-self:flex-start}body .kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-muted)}body .kanban-plugin button{box-shadow:none;cursor:var(--cursor);height:auto}body .kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,body .kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button{color:var(--text-muted);font-weight:400;background:0 0;height:32px}body .kanban-plugin__item-button-wrapper>button:hover{color:var(--text-normal);background:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button:focus{box-shadow:none}body .kanban-plugin__item-button-wrapper{padding:1px 6px 5px;border-top:none}body .kanban-plugin__lane-setting-wrapper>div:last-child{border:none;margin:0}body .kanban-plugin.something-is-dragging{cursor:grabbing;cursor:-webkit-grabbing}body .kanban-plugin__item.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15),0 0 0 2px var(--text-selection)}body .kanban-plugin__lane{background:0 0;padding:0;border:var(--border-width) solid transparent}body .kanban-plugin__lane.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15);border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane-items{border:var(--kanban-border) solid var(--background-modifier-border);border-bottom:none;padding:0 4px;border-top-left-radius:8px;border-top-right-radius:8px;margin:0;background-color:var(--background-secondary)}body .kanban-plugin__item-input-wrapper{border:0;padding-top:1px;flex-grow:1}body .kanban-plugin__item-button-wrapper,body .kanban-plugin__item-form{background-color:var(--background-secondary);border:var(--kanban-border) solid var(--background-modifier-border);border-top:none;border-bottom-left-radius:8px;border-bottom-right-radius:8px}body .kanban-plugin__item-form{padding:0 4px 5px}body .kanban-plugin__markdown-preview-view ol,body .kanban-plugin__markdown-preview-view ol.contains-task-list .contains-task-list,body .kanban-plugin__markdown-preview-view ul,body .kanban-plugin__markdown-preview-view ul.contains-task-list .contains-task-list{padding-inline-start:1.8em!important}@media (max-width:400pt){.kanban-plugin__board{flex-direction:column!important}.kanban-plugin__lane{width:100%!important;margin-bottom:1rem!important}}body .cm-heading-marker{cursor:var(--cursor);padding-left:10px}.theme-light{--leaflet-buttons:var(--bg1);--leaflet-borders:rgba(0,0,0,0.1)}.theme-dark{--leaflet-buttons:var(--bg2);--leaflet-borders:rgba(255,255,255,0.1)}.leaflet-top{transition:top .1s linear}.mod-macos.minimal-focus-mode .mod-root .map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3) .leaflet-top{top:calc(18px + var(--ewt-traffic-light-y));transition:top .1s linear}body .leaflet-container{background-color:var(--background-secondary);font-family:var(--font-interface)}.map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3){margin-top:-16px}.leaflet-control-attribution{display:none}.leaflet-popup-content{margin:10px}.block-language-leaflet{border-radius:var(--radius-m);overflow:hidden;border:var(--border-width) solid var(--background-modifier-border)}.map-wide .block-language-leaflet{border-radius:var(--radius-l)}.map-max .block-language-leaflet{border-radius:var(--radius-xl)}.workspace-leaf-content[data-type=obsidian-leaflet-map-view] .block-language-leaflet{border-radius:0;border:none}.map-100 .block-language-leaflet{border-radius:0;border-left:none;border-right:none}.block-language-leaflet .leaflet-control-expandable-list .input-container .input-item>input{appearance:none}body .block-language-leaflet .leaflet-bar.disabled>a{background-color:transparent;opacity:.3}body .leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}body .leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}body .leaflet-control-layers-toggle{border-radius:4px}body .block-language-leaflet .leaflet-control-expandable,body .block-language-leaflet .leaflet-control-has-actions .control-actions.expanded,body .block-language-leaflet .leaflet-distance-control,body .leaflet-bar,body .leaflet-bar a,body .leaflet-control-layers-expanded,body .leaflet-control-layers-toggle{background-color:var(--leaflet-buttons);color:var(--text-muted);border:none;user-select:none}body .leaflet-bar a.leaflet-disabled,body .leaflet-bar a.leaflet-disabled:hover{background-color:var(--leaflet-buttons);color:var(--text-faint);opacity:.6;cursor:not-allowed}body .leaflet-control a{cursor:var(--cursor);color:var(--text-normal)}body .leaflet-bar a:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);border:none}body .leaflet-touch .leaflet-control-layers{background-color:var(--leaflet-buttons)}body .leaflet-touch .leaflet-bar,body .leaflet-touch .leaflet-control-layers{border-radius:5px;box-shadow:2px 0 8px 0 rgba(0,0,0,.1);border:1px solid var(--ui1)}body .block-language-leaflet .leaflet-control-has-actions .control-actions{box-shadow:0;border:1px solid var(--ui1)}body .leaflet-control-expandable-list .leaflet-bar{box-shadow:none;border-radius:0}body .block-language-leaflet .leaflet-distance-control{padding:4px 10px;height:auto;cursor:var(--cursor)!important}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper>*{font-size:var(--font-adaptive-small);font-family:var(--font-interface)}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper{padding:4px 10px!important}.leaflet-marker-icon svg path{stroke:var(--background-primary);stroke-width:18px}.map-view-marker-name{font-weight:400}.workspace-leaf-content[data-type=map] .graph-controls{background-color:var(--background-primary)}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-split.mod-root .workspace-leaf-content[data-type=map] .view-header{position:fixed;background:0 0!important;width:100%;z-index:99}body:not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-header-title{display:none}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-actions{background:0 0}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-content{height:100%}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .leaflet-top.leaflet-right{top:var(--header-height)}.obsidian-metatable{--metatable-font-size:calc(var(--font-adaptive-normal) - 2px);--metatable-font-family:var(--font-interface);--metatable-background:transparent;--metatable-foreground:var(--text-faint);--metatable-key-background:transparent;--metatable-key-border-width:0;--metatable-key-border-color:transparent;--metatable-value-background:transparent;padding-bottom:.5rem}.obsidian-metatable::part(key),.obsidian-metatable::part(value){border-bottom:0 solid var(--background-modifier-border);padding:.1rem 0;text-overflow:ellipsis;overflow:hidden}.obsidian-metatable::part(key){font-weight:400;color:var(--tx3);font-size:calc(var(--font-adaptive-normal) - 2px)}.obsidian-metatable::part(value){font-size:calc(var(--font-adaptive-normal) - 2px);color:var(--tx1)}body .NLT__header-menu-header-container{font-size:85%}body .NLT__button{background:0 0;box-shadow:none;color:var(--text-muted)}body .NLT__button:active,body .NLT__button:focus,body .NLT__button:hover{background:0 0;color:var(--text-normal);box-shadow:none}.NLT__app .NLT__button{background:0 0;border:1px solid var(--background-modifier-border);box-shadow:0 .5px 1px 0 var(--btn-shadow-color);color:var(--text-muted);padding:2px 8px}.NLT__app .NLT__button:active,.NLT__app .NLT__button:focus,.NLT__app .NLT__button:hover{background:0 0;border-color:var(--background-modifier-border-hover);color:var(--text-normal);box-shadow:0 .5px 1px 0 var(--btn-shadow-color)}.NLT__td:nth-last-child(2),.NLT__th:nth-last-child(2){border-right:0}.NLT__app .NLT__td:last-child,.NLT__app .NLT__th:last-child{padding-right:0}.NLT__app .NLT__th{background-image:none!important}.NLT__app th.NLT__selectable:hover{background-color:transparent;cursor:var(--cursor)}.NLT__menu .NLT__menu-container{background-color:var(--background-secondary)}.NLT__menu .NLT__header-menu-item{font-size:var(--font-adaptive-small)}.NLT__menu .NLT__header-menu{padding:6px 4px}.NLT__menu .NLT__drag-menu{font-size:var(--font-adaptive-small);padding:6px 4px}.NLT__menu svg{color:var(--text-faint);margin-right:6px}.NLT__menu .NLT__selectable:hover,.NLT__menu .NLT__selected{background:0 0}.NLT__menu .NLT__selected>.NLT__selectable{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__selectable{cursor:var(--cursor)}.NLT__menu div.NLT__selectable{min-width:110px;border-radius:var(--radius-m);padding:3px 8px 3px 4px;margin:1px 2px 1px;cursor:var(--cursor);height:auto;line-height:20px}.NLT__menu div.NLT__selectable:hover{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__textarea{font-size:var(--table-text-size)}.NLT__tfoot tr:hover td{background-color:transparent}.modal .quickAddPrompt>h1,.modal .quickAddYesNoPrompt h1{margin-top:0;text-align:left!important;font-size:var(--h1);font-weight:600}.modal .quickAddYesNoPrompt p{text-align:left!important}.modal .quickAddYesNoPrompt button{font-size:var(--font-ui-small)}.modal .yesNoPromptButtonContainer{font-size:var(--font-ui-small);justify-content:flex-end}.quickAddModal .modal-content{padding:20px 2px 5px}div#quick-explorer{display:flex}div#quick-explorer span.explorable{align-items:center;color:var(--text-muted);display:flex;font-size:var(--font-adaptive-smaller);line-height:16px}div#quick-explorer span.explorable:last-of-type{font-size:var(--font-adaptive-smaller)}div#quick-explorer span.explorable.selected,div#quick-explorer span.explorable:hover{background-color:unset!important}div#quick-explorer span.explorable.selected .explorable-name,div#quick-explorer span.explorable:hover .explorable-name{color:var(--text-normal)}div#quick-explorer span.explorable.selected .explorable-separator,div#quick-explorer span.explorable:hover .explorable-separator{color:var(--text-normal)}div#quick-explorer .explorable-name{padding:0 4px;border-radius:4px}div#quick-explorer .explorable-separator::before{content:"\00a0›"!important;font-size:1.3em;font-weight:400;margin:0}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover{background-color:var(--background-modifier-hover);color:var(--text-normal)}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected .menu-item-icon,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover .menu-item-icon{color:var(--text-normal)}.workspace-leaf-content[data-type=recent-files] .view-content{padding-top:10px}.mod-root .workspace-leaf-content[data-type=reminder-list] main{max-width:var(--max-width);margin:0 auto;padding:0}.modal .reminder-actions .later-select{font-size:var(--font-settings-small);vertical-align:bottom;margin-left:3px}.modal .reminder-actions .icon{line-height:1}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main{margin:0 auto;padding:15px}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .group-name{font-weight:500;color:var(--text-muted);font-size:var(--font-adaptive-small);padding-bottom:.5em;border-bottom:1px solid var(--background-modifier-border)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-list-item{line-height:1.3;font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .no-reminders{color:var(--text-faint)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-time{font-family:var(--font-text);font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-file{color:var(--text-faint)}body .modal .dtchooser{background-color:transparent}body .modal .dtchooser .reminder-calendar .year-month{font-weight:400;font-size:var(--font-adaptive-normal);padding-bottom:10px}body .modal .dtchooser .reminder-calendar .year-month .month,body .modal .dtchooser .reminder-calendar .year-month .year{color:var(--text-normal)}body .modal .dtchooser .reminder-calendar .year-month .month-nav:first-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav:last-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav{-webkit-mask-size:20px 20px;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;color:var(--text-faint);cursor:var(--cursor);border-radius:var(--radius-m);padding:0;width:30px;display:inline-block}body .modal .dtchooser .reminder-calendar .year-month .month-nav:hover{color:var(--text-muted)}body .modal .dtchooser .reminder-calendar th{padding:.5em 0;font-size:var(--font-adaptive-smallest);font-weight:500;text-transform:uppercase;letter-spacing:.1em}body .modal .dtchooser .reminder-calendar .calendar-date{transition:background-color .1s ease-in;padding:.3em 0;border-radius:var(--radius-m)}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected,body .modal .dtchooser .reminder-calendar .calendar-date:hover{transition:background-color .1s ease-in;background-color:var(--background-modifier-hover)!important}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected{font-weight:var(--bold-weight);color:var(--text-accent)!important}body .markdown-preview-view th,body .markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,body .table-view-table>thead>tr>th{cursor:var(--cursor);background-image:none}.markdown-source-view.mod-cm6 th{background-repeat:no-repeat;background-position:right}.style-settings-container[data-level="2"]{background:var(--background-secondary);border:1px solid var(--ui1);border-radius:5px;padding:10px 20px;margin:2px 0 2px -20px}.workspace-leaf-content[data-type=style-settings] .view-content{padding:var(--size-4-4) 0 var(--size-4-4) var(--folding-offset)}.workspace-leaf-content[data-type=style-settings] .view-content>div{width:var(--line-width-adaptive);max-width:var(--max-width);margin:0 auto}.workspace-leaf-content[data-type=style-settings] .style-settings-heading[data-level="0"] .setting-item-name{padding-left:17px}.workspace-leaf-content[data-type=style-settings] .setting-item{max-width:100%;margin:0 auto}.workspace-leaf-content[data-type=style-settings] .setting-item-name{position:relative}.workspace-leaf-content[data-type=style-settings] .style-settings-collapse-indicator{position:absolute;left:0}.setting-item-heading.style-settings-heading,.style-settings-container .style-settings-heading{cursor:var(--cursor)}.modal.mod-settings .setting-item .pickr button.pcr-button{box-shadow:none;border-radius:40px;height:24px;width:24px}.setting-item .pickr .pcr-button:after,.setting-item .pickr .pcr-button:before{border-radius:40px;box-shadow:none;border:none}.setting-item.setting-item-heading.style-settings-heading.is-collapsed{border-bottom:1px solid var(--background-modifier-border)}.setting-item.setting-item-heading.style-settings-heading{border:0;padding:10px 0 5px;margin-bottom:0}.mod-root .workspace-leaf-content[data-type=style-settings] .style-settings-container .setting-item:not(.setting-item-heading){flex-direction:row;align-items:center;padding:.5em 0}.workspace-split:not(.mod-root) .workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-smaller)}.setting-item .style-settings-export,.setting-item .style-settings-import{text-decoration:none;font-size:var(--font-ui-small);font-weight:500;color:var(--text-muted);margin:0;padding:2px 8px;border-radius:5px;cursor:var(--cursor)}.style-settings-export:hover,.style-settings-import:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);cursor:var(--cursor)}.themed-color-wrapper>div+div{margin-top:0;margin-left:6px}.theme-light .themed-color-wrapper>.theme-light{background-color:transparent}.theme-light .themed-color-wrapper>.theme-dark{background-color:rgba(0,0,0,.8)}.theme-dark .themed-color-wrapper>.theme-dark{background-color:transparent}body .todoist-query-title{display:inline;font-size:var(--h4);font-variant:var(--h4-variant);letter-spacing:.02em;color:var(--h4-color);font-weight:var(--h4-weight);font-style:var(--h4-style)}body .is-live-preview .block-language-todoist{padding-left:0}ul.todoist-task-list>li.task-list-item .task-list-item-checkbox{margin:0}body .todoist-refresh-button{display:inline;float:right;background:0 0;padding:5px 6px 0;margin-right:0}body .is-live-preview .todoist-refresh-button{margin-right:30px}body .todoist-refresh-button:hover{box-shadow:none;background-color:var(--background-modifier-hover)}.todoist-refresh-button svg{width:15px;height:15px;opacity:var(--icon-muted)}ul.todoist-task-list{margin-left:-.25em}.is-live-preview ul.todoist-task-list{padding-left:0;margin-left:.5em;margin-block-start:0;margin-block-end:0}.contains-task-list.todoist-task-list .task-metadata{font-size:var(--font-adaptive-small);display:flex;color:var(--text-muted);justify-content:space-between;margin-left:.1em;margin-bottom:.25rem}.is-live-preview .contains-task-list.todoist-task-list .task-metadata{padding-left:calc(var(--checkbox-size) + .6em)}.todoist-task-list .task-date.task-overdue{color:var(--color-orange)}body .todoist-p1>input[type=checkbox]{border:1px solid var(--color-red)}body .todoist-p1>input[type=checkbox]:hover{opacity:.8}body .todoist-p2>input[type=checkbox]{border:1px solid var(--color-yellow)}body .todoist-p2>input[type=checkbox]:hover{opacity:.8}body .todoist-p3>input[type=checkbox]{border:1px solid var(--color-blue)}body .todoist-p3>input[type=checkbox]:hover{opacity:.8}body.theme-light{--color-axis-label:var(--tx1);--color-tick-label:var(--tx2);--color-dot-fill:var(--ax1);--color-line:var(--ui1)}.tracker-axis-label{font-family:var(--font-interface)}.tracker-axis{color:var(--ui2)}.theme-dark.minimal-atom-dark{--color-red-rgb:225,109,118;--color-orange-rgb:209,154,102;--color-yellow-rgb:206,193,103;--color-green-rgb:152,195,121;--color-cyan-rgb:88,182,194;--color-blue-rgb:98,175,239;--color-purple-rgb:198,120,222;--color-pink-rgb:225,109,118;--color-red:#e16d76;--color-orange:#d19a66;--color-yellow:#cec167;--color-green:#98c379;--color-cyan:#58b6c2;--color-blue:#62afef;--color-purple:#c678de;--color-pink:#e16d76}.theme-light.minimal-atom-light{--color-red-rgb:228,87,73;--color-orange-rgb:183,107,2;--color-yellow-rgb:193,131,2;--color-green-rgb:80,161,80;--color-cyan-rgb:13,151,179;--color-blue-rgb:98,175,239;--color-purple-rgb:166,38,164;--color-pink-rgb:228,87,73;--color-red:#e45749;--color-orange:#b76b02;--color-yellow:#c18302;--color-green:#50a150;--color-cyan:#0d97b3;--color-blue:#62afef;--color-purple:#a626a4;--color-pink:#e45749}.theme-light.minimal-atom-light{--base-h:106;--base-s:0%;--base-l:98%;--accent-h:231;--accent-s:76%;--accent-l:62%;--bg1:#fafafa;--bg2:#eaeaeb;--bg3:rgba(0,0,0,.1);--ui1:#dbdbdc;--ui2:#d8d8d9;--tx1:#232324;--tx2:#8e8e90;--tx3:#a0a1a8;--hl1:rgba(180,180,183,0.3);--hl2:rgba(209,154,102,0.35)}.theme-light.minimal-atom-light.minimal-light-white{--bg3:#eaeaeb}.theme-dark.minimal-atom-dark,.theme-light.minimal-atom-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-atom-light.minimal-light-contrast .titlebar,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-atom-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:12%;--base-l:18%;--accent-h:220;--accent-s:86%;--accent-l:65%;--bg1:#282c34;--bg2:#21252c;--bg3:#3a3f4b;--divider-color:#181a1f;--tab-outline-color:#181a1f;--tx1:#d8dae1;--tx2:#898f9d;--tx3:#5d6370;--hl1:rgba(114,123,141,0.3);--hl2:rgba(209,154,102,0.3);--sp1:#fff}.theme-dark.minimal-atom-dark.minimal-dark-black{--base-d:5%;--bg3:#282c34;--divider-color:#282c34;--tab-outline-color:#282c34}.theme-light.minimal-ayu-light{--color-red-rgb:230,80,80;--color-orange-rgb:250,141,62;--color-yellow-rgb:242,174,73;--color-green-rgb:108,191,67;--color-cyan-rgb:76,191,153;--color-blue-rgb:57,158,230;--color-purple-rgb:163,122,204;--color-pink-rgb:255,115,131;--color-red:#e65050;--color-orange:#fa8d3e;--color-yellow:#f2ae49;--color-green:#6CBF43;--color-cyan:#4cbf99;--color-blue:#399ee6;--color-purple:#a37acc;--color-pink:#ff7383}.theme-dark.minimal-ayu-dark{--color-red-rgb:255,102,102;--color-orange-rgb:250,173,102;--color-yellow-rgb:255,209,55;--color-green-rgb:135,217,108;--color-cyan-rgb:149,230,203;--color-blue-rgb:115,208,255;--color-purple-rgb:223,191,255;--color-pink-rgb:242,121,131;--color-red:#ff6666;--color-orange:#ffad66;--color-yellow:#ffd137;--color-green:#87D96C;--color-cyan:#95e6cb;--color-blue:#73d0ff;--color-purple:#dfbfff;--color-pink:#f27983}.theme-light.minimal-ayu-light{--base-h:210;--base-s:17%;--base-l:98%;--accent-h:36;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f8f9fa;--bg3:rgba(209,218,224,0.5);--ui1:#E6EAED;--tx1:#5C6165;--tx2:#8A9199;--tx3:#AAAEB0;--hl1:rgba(3,91,214,0.15)}.theme-dark.minimal-ayu-dark,.theme-light.minimal-ayu-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-ayu-light.minimal-light-contrast .titlebar,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-ayu-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:222;--base-s:22%;--base-l:15%;--accent-h:35;--accent-s:100%;--accent-l:60%;--bg1:#232937;--bg2:#1E2431;--bg3:rgba(51,61,80,0.5);--ui1:#333C4A;--ui2:#333C4A;--ui3:#333C4A;--tx1:#cccac2;--tx2:#707A8C;--tx3:#495063;--hl1:rgba(64,159,255,0.25)}.theme-dark.minimal-ayu-dark.minimal-dark-black{--accent-h:40;--accent-s:75%;--accent-l:61%;--bg3:#0E1017;--tx1:#BFBDB6;--divider-color:#11151C;--tab-outline-color:#11151C}.theme-light.minimal-catppuccin-light{--color-red-rgb:230,69,83;--color-orange-rgb:254,100,12;--color-yellow-rgb:223,142,29;--color-green-rgb:64,160,43;--color-cyan-rgb:23,146,154;--color-blue-rgb:33,102,246;--color-purple-rgb:137,56,239;--color-pink-rgb:234,119,203;--color-red:#E64553;--color-orange:#FE640C;--color-yellow:#DF8E1D;--color-green:#40A02B;--color-cyan:#17929A;--color-blue:#2166F6;--color-purple:#8938EF;--color-pink:#EA77CB}.theme-dark.minimal-catppuccin-dark{--color-red-rgb:235,153,156;--color-orange-rgb:239,160,118;--color-yellow-rgb:229,200,144;--color-green-rgb:166,209,138;--color-cyan-rgb:129,200,190;--color-blue-rgb:140,170,238;--color-purple-rgb:202,158,230;--color-pink-rgb:244,185,229;--color-red:#EB999C;--color-orange:#EFA076;--color-yellow:#E5C890;--color-green:#A6D18A;--color-cyan:#81C8BE;--color-blue:#8CAAEE;--color-purple:#CA9EE6;--color-pink:#F4B9E5}.theme-light.minimal-catppuccin-light{--base-h:228;--base-s:20%;--base-l:95%;--accent-h:11;--accent-s:59%;--accent-l:67%;--bg1:#F0F1F5;--bg2:#DCE0E8;--bg3:hsla(228,11%,65%,.25);--ui1:#CCD0DA;--ui2:#BCC0CC;--ui3:#ACB0BE;--tx1:#4D4F69;--tx2:#5D5F77;--tx3:#8D8FA2;--hl1:rgba(172,176,190,.3);--hl2:rgba(223,142,29,.3)}.theme-light.minimal-catppuccin-light.minimal-light-tonal{--bg2:#DCE0E8}.theme-light.minimal-catppuccin-light.minimal-light-white{--bg3:#F0F1F5;--ui1:#DCE0E8}.theme-dark.minimal-catppuccin-dark,.theme-light.minimal-catppuccin-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-catppuccin-light.minimal-light-contrast .titlebar,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-catppuccin-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:229;--base-s:19%;--base-l:23%;--accent-h:10;--accent-s:57%;--accent-l:88%;--bg1:#303446;--bg2:#242634;--bg3:hsla(229,13%,52%,0.25);--ui1:#41455A;--ui2:#51576D;--ui3:#626880;--tx1:#C6D0F5;--tx2:#A6ADCE;--tx3:#848BA7;--sp1:#242634;--hl1:rgba(98,104,128,.5);--hl2:rgba(223,142,29,.4)}.theme-dark.minimal-catppuccin-dark.minimal-dark-black{--ui1:#303446;--hl2:rgba(223,142,29,.5)}.theme-dark.minimal-dracula-dark{--color-red-rgb:255,85,85;--color-orange-rgb:255,184,108;--color-yellow-rgb:241,250,140;--color-green-rgb:80,250,123;--color-cyan-rgb:139,233,253;--color-blue-rgb:98,114,164;--color-purple-rgb:189,147,249;--color-pink-rgb:255,121,198;--color-red:#ff5555;--color-orange:#ffb86c;--color-yellow:#f1fa8c;--color-green:#50fa7b;--color-cyan:#8be9fd;--color-blue:#6272a4;--color-purple:#bd93f9;--color-pink:#ff79c6}.theme-dark.minimal-dracula-dark,.theme-light.minimal-dracula-light.minimal-light-contrast .titlebar,.theme-light.minimal-dracula-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-dracula-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:232;--base-s:16%;--base-l:19%;--accent-h:265;--accent-s:89%;--accent-l:78%;--bg1:#282a37;--bg2:#21222c;--ui2:#44475a;--ui3:#6272a4;--tx1:#f8f8f2;--tx2:#949FBE;--tx3:#6272a4;--hl1:rgba(134, 140, 170, 0.3);--hl2:rgba(189, 147, 249, 0.35)}.theme-dark.minimal-dracula-dark.minimal-dark-black{--ui1:#282a36}.theme-light.minimal-everforest-light{--color-red-rgb:248,85,82;--color-orange-rgb:245,125,38;--color-yellow-rgb:223,160,0;--color-green-rgb:141,161,1;--color-cyan-rgb:53,167,124;--color-blue-rgb:56,148,196;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#f85552;--color-orange:#f57d26;--color-yellow:#dfa000;--color-green:#8da101;--color-cyan:#35a77c;--color-blue:#3795C5;--color-purple:#df69ba;--color-pink:#df69ba}.theme-dark.minimal-everforest-dark{--color-red-rgb:230,126,128;--color-orange-rgb:230,152,117;--color-yellow-rgb:219,188,127;--color-green-rgb:167,192,128;--color-cyan-rgb:131,192,146;--color-blue-rgb:127,187,179;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#e67e80;--color-orange:#e69875;--color-yellow:#dbbc7f;--color-green:#a7c080;--color-cyan:#83c092;--color-blue:#7fbbb3;--color-purple:#d699b6;--color-pink:#d699b6}.theme-light.minimal-everforest-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:83;--accent-s:36%;--accent-l:53%;--bg1:#fdf6e3;--bg2:#efebd4;--bg3:rgba(226,222,198,.5);--ui1:#e0dcc7;--ui2:#bec5b2;--ui3:#bec5b2;--tx1:#5C6A72;--tx2:#829181;--tx3:#a6b0a0;--hl1:rgba(198,214,152,.4);--hl2:rgba(222,179,51,.3)}.theme-light.minimal-everforest-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-light.minimal-everforest-light.minimal-light-white{--bg3:#f3efda;--ui1:#edead5}.theme-dark.minimal-everforest-dark,.theme-light.minimal-everforest-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-everforest-light.minimal-light-contrast .titlebar,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-everforest-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:15%;--base-l:23%;--accent-h:81;--accent-s:34%;--accent-l:63%;--bg1:#2d353b;--bg2:#232a2e;--bg3:rgba(71,82,88,0.5);--ui1:#475258;--ui2:#4f585e;--ui3:#525c62;--tx1:#d3c6aa;--tx2:#9da9a0;--tx3:#7a8478;--hl1:rgba(134,70,93,.5);--hl2:rgba(147,185,96,.3)}.theme-dark.minimal-everforest-dark.minimal-dark-black{--hl1:rgba(134,70,93,.4);--ui1:#2b3339}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light{--color-red-rgb:204,36,29;--color-orange-rgb:214,93,14;--color-yellow-rgb:215,153,33;--color-green-rgb:152,151,26;--color-cyan-rgb:104,157,106;--color-blue-rgb:69,133,136;--color-purple-rgb:177,98,134;--color-pink-rgb:177,98,134;--color-red:#cc241d;--color-orange:#d65d0e;--color-yellow:#d79921;--color-green:#98971a;--color-cyan:#689d6a;--color-blue:#458588;--color-purple:#b16286;--color-pink:#b16286}.theme-light.minimal-gruvbox-light{--base-h:49;--base-s:92%;--base-l:89%;--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#fcf2c7;--bg2:#f2e6bd;--bg3:#ebd9b3;--ui1:#ebdbb2;--ui2:#d5c4a1;--ui3:#bdae93;--tx1:#282828;--tx2:#7c7065;--tx3:#a89a85;--hl1:rgba(192,165,125,.3);--hl2:rgba(215,153,33,.4)}.theme-light.minimal-gruvbox-light.minimal-light-tonal{--bg2:#fcf2c7}.theme-light.minimal-gruvbox-light.minimal-light-white{--bg3:#faf5d7;--ui1:#f2e6bd}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-gruvbox-light.minimal-light-contrast .titlebar,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-gruvbox-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#282828;--bg2:#1e2021;--bg3:#3d3836;--bg3:rgba(62,57,55,0.5);--ui1:#3c3836;--ui2:#504945;--ui3:#665c54;--tx1:#fbf1c7;--tx2:#bdae93;--tx3:#7c6f64;--hl1:rgba(173,149,139,0.3);--hl2:rgba(215,153,33,.4)}.theme-dark.minimal-gruvbox-dark.minimal-dark-black{--hl1:rgba(173,149,139,0.4);--ui1:#282828}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light{--color-red-rgb:255,59,49;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,204,0;--color-green-rgb:42,205,65;--color-cyan-rgb:2,199,190;--color-blue-rgb:2,122,255;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#ff3b31;--color-orange:#ff9502;--color-yellow:#ffcc00;--color-green:#2acd41;--color-cyan:#02c7be;--color-blue:#027aff;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-macos-light{--base-h:106;--base-s:0%;--base-l:94%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f0f0f0;--bg3:rgba(0,0,0,.1);--ui1:#e7e7e7;--tx1:#454545;--tx2:#808080;--tx3:#b0b0b0;--hl1:#b3d7ff}.theme-light.minimal-macos-light.minimal-light-tonal{--bg1:#f0f0f0;--bg2:#f0f0f0}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-macos-light.minimal-light-contrast .titlebar,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-macos-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:106;--base-s:0%;--base-l:12%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#1e1e1e;--bg2:#282828;--bg3:rgba(255,255,255,0.11);--divider-color:#000;--tab-outline-color:#000;--ui1:#373737;--ui2:#515151;--ui3:#595959;--tx1:#dcdcdc;--tx2:#8c8c8c;--tx3:#686868;--hl1:rgba(98,169,252,0.5);--sp1:#fff}.theme-dark.minimal-macos-dark.minimal-dark-black{--divider-color:#1e1e1e;--tab-outline-color:#1e1e1e}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light{--color-red-rgb:191,97,106;--color-orange-rgb:208,138,112;--color-yellow-rgb:235,203,139;--color-green-rgb:163,190,140;--color-cyan-rgb:136,192,208;--color-blue-rgb:129,161,193;--color-purple-rgb:180,142,173;--color-pink-rgb:180,142,173;--color-red:#BF616A;--color-orange:#D08770;--color-yellow:#EBCB8B;--color-green:#A3BE8C;--color-cyan:#88C0D0;--color-blue:#81A1C1;--color-purple:#B48EAD;--color-pink:#B48EAD}.theme-light.minimal-nord-light{--base-h:221;--base-s:27%;--base-l:94%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#fff;--bg2:#eceff4;--bg3:rgba(157,174,206,0.25);--ui1:#d8dee9;--ui2:#BBCADC;--ui3:#81a1c1;--tx1:#2e3440;--tx2:#7D8697;--tx3:#ADB1B8;--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-nord-light.minimal-light-contrast .titlebar,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-nord-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:16%;--base-l:22%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#2e3440;--bg2:#3b4252;--bg3:rgba(135,152,190,0.15);--ui1:#434c5e;--ui2:#58647b;--ui3:#58647b;--tx1:#d8dee9;--tx2:#9eafcc;--tx3:#4c566a;--hl1:rgba(129,142,180,0.3);--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark.minimal-dark-black{--ui1:#2e3440}.theme-light.minimal-notion-light{--base-h:39;--base-s:18%;--base-d:96%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg2:#f7f6f4;--bg3:#e8e7e4;--ui1:#ededec;--ui2:#dbdbda;--ui3:#aaa9a5;--tx1:#37352f;--tx2:#72706c;--tx3:#aaa9a5;--hl1:rgba(131,201,229,0.3);--link-weight:500}.theme-dark.minimal-notion-dark,.theme-light.minimal-notion-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-notion-light.minimal-light-contrast .titlebar,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-notion-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:8%;--base-d:20%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg1:#2f3437;--bg2:#373c3f;--bg3:#4b5053;--ui1:#3e4245;--ui2:#585d5f;--ui3:#585d5f;--tx1:#ebebeb;--tx2:#909295;--tx3:#585d5f;--hl1:rgba(57,134,164,0.3);--link-weight:500}.theme-dark.minimal-notion-dark.minimal-dark-black{--base-d:5%;--bg3:#232729;--ui1:#2f3437}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light{--color-red-rgb:220,50,47;--color-orange-rgb:203,77,22;--color-yellow-rgb:181,137,0;--color-green-rgb:133,153,0;--color-cyan-rgb:42,161,152;--color-blue-rgb:38,139,210;--color-purple-rgb:108,113,196;--color-pink-rgb:211,54,130;--color-red:#dc322f;--color-orange:#cb4b16;--color-yellow:#b58900;--color-green:#859900;--color-cyan:#2aa198;--color-blue:#268bd2;--color-purple:#6c71c4;--color-pink:#d33682}.theme-light.minimal-solarized-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:205;--accent-s:70%;--accent-l:48%;--bg1:#fdf6e3;--bg2:#eee8d5;--bg3:rgba(0,0,0,0.062);--ui1:#e9e1c8;--ui2:#d0cab8;--ui3:#d0cab8;--tx1:#073642;--tx2:#586e75;--tx3:#ABB2AC;--tx4:#586e75;--hl1:rgba(202,197,182,0.3);--hl2:rgba(203,75,22,0.3)}.theme-light.minimal-solarized-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-solarized-light.minimal-light-contrast .titlebar,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-solarized-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:205;--accent-s:70%;--accent-l:48%;--base-h:193;--base-s:98%;--base-l:11%;--bg1:#002b36;--bg2:#073642;--bg3:rgba(255,255,255,0.062);--ui1:#19414B;--ui2:#274850;--ui3:#31535B;--tx1:#93a1a1;--tx2:#657b83;--tx3:#31535B;--tx4:#657b83;--hl1:rgba(15,81,98,0.3);--hl2:rgba(203, 75, 22, 0.35)}.theme-dark.minimal-solarized-dark.minimal-dark-black{--hl1:rgba(15,81,98,0.55);--ui1:#002b36}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light{--color-red-rgb:255,48,108;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,213,0;--color-green-rgb:75,191,94;--color-cyan-rgb:73,174,164;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#FF306C;--color-orange:#ff9502;--color-yellow:#FFD500;--color-green:#4BBF5E;--color-cyan:#49AEA4;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-things-light{--color-blue-rgb:27,97,194;--color-blue:#1b61c2}.theme-dark.minimal-things-dark{--color-blue-rgb:77,149,247;--color-blue:#4d95f7}.theme-light.minimal-things-light{--accent-h:215;--accent-s:76%;--accent-l:43%;--bg1:white;--bg2:#f5f6f8;--bg3:rgba(162,177,187,0.25);--ui1:#eef0f4;--ui2:#D8DADD;--ui3:#c1c3c6;--tx1:#26272b;--tx2:#7D7F84;--tx3:#a9abb0;--hl1:#cae2ff}.theme-light.minimal-things-light.minimal-light-tonal{--ui1:#e6e8ec}.theme-light.minimal-things-light.minimal-light-white{--bg3:#f5f6f8}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-things-light.minimal-light-contrast .titlebar,.theme-light.minimal-things-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-things-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-things-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:218;--base-s:9%;--base-l:15%;--accent-h:215;--accent-s:91%;--accent-l:64%;--bg1:#24262a;--bg2:#202225;--bg3:#3d3f41;--divider-color:#17191c;--tab-outline-color:#17191c;--ui1:#3A3B3F;--ui2:#45464a;--ui3:#6c6e70;--tx1:#fbfbfb;--tx2:#CBCCCD;--tx3:#6c6e70;--hl1:rgba(40,119,236,0.35);--sp1:#fff}.theme-dark.minimal-things-dark.minimal-dark-black{--base-d:5%;--bg3:#24262a;--divider-color:#24262a;--tab-outline-color:#24262a} +body{--font-text-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-monospace-theme:Menlo,SFMono-Regular,Consolas,"Roboto Mono",monospace;--font-interface-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor:var(--font-editor-override),var(--font-text-override),var(--font-editor-theme)}body{--blockquote-style:normal;--blockquote-color:var(--text-muted);--blockquote-border-thickness:1px;--blockquote-border-color:var(--quote-opening-modifier);--embed-block-shadow-hover:none;--font-ui-smaller:12px;--normal-weight:400;--bold-weight:600;--link-weight:inherit;--h1-size:1.125em;--h2-size:1.05em;--h3-size:1em;--h4-size:0.90em;--h5-size:0.85em;--h6-size:0.85em;--h1-weight:600;--h2-weight:600;--h3-weight:500;--h4-weight:500;--h5-weight:500;--h6-weight:400;--h1-variant:normal;--h2-variant:normal;--h3-variant:normal;--h4-variant:normal;--h5-variant:small-caps;--h6-variant:small-caps;--h1-style:normal;--h2-style:normal;--h3-style:normal;--h4-style:normal;--h5-style:normal;--h6-style:normal;--line-width:40rem;--line-height:1.5;--max-width:88%;--max-col-width:18em;--icon-muted:0.5;--border-width:1px;--nested-padding:1.1em;--folding-offset:10px;--list-edit-offset:0.5em;--list-indent:2em;--list-spacing:0.075em;--input-height:32px;--header-height:40px;--mobile-left-sidebar-width:280pt;--mobile-right-sidebar-width:240pt;--top-left-padding-y:0px;--image-muted:0.7;--spacing-p:0.75em}.mod-macos{--top-left-padding-y:24px}body{--base-h:0;--base-s:0%;--base-l:96%;--accent-h:201;--accent-s:17%;--accent-l:50%}.theme-dark,.theme-light{--color-red-rgb:208,66,85;--color-orange-rgb:213,118,63;--color-yellow-rgb:229,181,103;--color-green-rgb:168,195,115;--color-cyan-rgb:115,187,178;--color-blue-rgb:108,153,187;--color-purple-rgb:158,134,200;--color-pink-rgb:176,82,121;--color-red:#d04255;--color-orange:#d5763f;--color-yellow:#e5b567;--color-green:#a8c373;--color-cyan:#73bbb2;--color-blue:#6c99bb;--color-purple:#9e86c8;--color-pink:#b05279}.theme-light,.theme-light.minimal-default-light,body .excalidraw{--bg1:white;--bg2:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) - 50%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 20%) );--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 90%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) - 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 25%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 60%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 6%) );--hl1:hsla( var(--accent-h), 50%, calc(var(--base-l) - 20%), 30% );--hl2:rgba(255, 225, 0, 0.5);--sp1:white}.excalidraw.theme--dark,.theme-dark,.theme-dark.minimal-default-dark,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-l:60%;--base-l:15%;--bg1:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 2%) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) + 40%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 20%) );--tx1:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 67%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) + 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 20%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 50%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 5%) );--hl1:hsla( var(--accent-h), 50%, 40%, 30% );--hl2:rgba(255, 177, 80, 0.3);--sp1:white}.theme-light.minimal-light-white{--background-primary:white;--background-secondary:white;--background-secondary-alt:white;--ribbon-background:white;--bg1:white}.theme-dark.minimal-dark-black{--base-d:0%;--titlebar-background:black;--background-primary:black;--background-secondary:black;--background-secondary-alt:black;--ribbon-background:black;--background-modifier-hover:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 10%));--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 75%) );--tx2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 50%) );--tx3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 25%) );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 12%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 20%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 30%) )}.theme-light{--mono100:black;--mono0:white}.theme-dark{--mono100:white;--mono0:black}.theme-dark,.theme-light,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.is-mobile .workspace-drawer.mod-left,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--background-modifier-accent:var(--ax3);--background-modifier-border-focus:var(--ui3);--background-modifier-border-hover:var(--ui2);--background-modifier-border:var(--ui1);--background-modifier-form-field-highlighted:var(--bg1);--background-modifier-form-field:var(--bg1);--background-modifier-success:var(--color-green);--background-modifier-hover:var(--bg3);--background-modifier-active-hover:var(--bg3);--background-primary:var(--bg1);--background-primary-alt:var(--bg2);--background-secondary:var(--bg2);--background-secondary-alt:var(--bg1);--background-table-rows:var(--bg2);--checkbox-color:var(--ax3);--code-normal:var(--tx1);--divider-color:var(--ui1);--frame-divider-color:var(--ui1);--icon-color-active:var(--tx1);--icon-color-focused:var(--tx1);--icon-color-hover:var(--tx2);--icon-color:var(--tx2);--icon-hex:var(--mono0);--interactive-accent-hover:var(--ax1);--interactive-accent:var(--ax3);--interactive-hover:var(--ui1);--list-marker-color:var(--tx3);--modal-border-color:var(--ui2);--nav-item-background-active:var(--bg3);--nav-item-background-hover:var(--bg3);--nav-item-color:var(--tx2);--nav-item-color-active:var(--tx1);--nav-item-color-hover:var(--tx1);--nav-collapse-icon-color:var(--tx2);--nav-collapse-icon-color-collapsed:var(--tx2);--nav-indentation-guide-color:var(--ui1);--prompt-border-color:var(--ui3);--quote-opening-modifier:var(--ui2);--ribbon-background:var(--bg2);--scrollbar-active-thumb-bg:var(--ui3);--scrollbar-bg:transparent;--scrollbar-thumb-bg:var(--ui1);--search-result-background:var(--bg1);--tab-text-color-focused-active:var(--tx1);--tab-outline-color:var(--ui1);--text-accent-hover:var(--ax2);--text-accent:var(--ax1);--text-blockquote:var(--tx2);--text-bold:var(--tx1);--text-code:var(--tx4);--text-error:var(--color-red);--text-faint:var(--tx3);--text-highlight-bg:var(--hl2);--text-italic:var(--tx1);--text-muted:var(--tx2);--text-normal:var(--tx1);--text-on-accent:var(--sp1);--text-selection:var(--hl1);--title-color-inactive:var(--tx2);--title-color:var(--tx1);--titlebar-background:var(--bg2);--titlebar-background-focused:var(--bg2);--titlebar-text-color-focused:var(--tx1);--workspace-background-translucent:hsla(var(--base-h),var(--base-s), var(--base-l), 0.7)}.theme-light.minimal-light-contrast{--workspace-background-translucent:rgba(0,0,0,0.6)}.theme-light.minimal-light-contrast .theme-dark{--tab-container-background:var(--bg2);--ribbon-background-collapsed:var(--bg2)}.theme-light{--interactive-normal:var(--bg1);--interactive-accent-rgb:220,220,220;--active-line-bg:rgba(0,0,0,0.035);--background-modifier-cover:hsla(var(--base-h),calc(var(--base-s) - 70%),calc(var(--base-l) - 20%),0.5);--text-highlight-bg-active:rgba(0, 0, 0, 0.1);--background-modifier-error:rgba(255,0,0,0.14);--background-modifier-error-hover:rgba(255,0,0,0.08);--shadow-color:rgba(0, 0, 0, 0.1);--btn-shadow-color:rgba(0, 0, 0, 0.05)}.theme-dark{--interactive-normal:var(--bg3);--interactive-accent-rgb:66,66,66;--active-line-bg:rgba(255,255,255,0.04);--background-modifier-cover:hsla(var(--base-h),var(--base-s), calc(var(--base-l) - 12%), 0.5);--text-highlight-bg-active:rgba(255, 255, 255, 0.1);--background-modifier-error:rgba(255,20,20,0.12);--background-modifier-error-hover:rgba(255,20,20,0.18);--background-modifier-box-shadow:rgba(0, 0, 0, 0.3);--shadow-color:rgba(0, 0, 0, 0.3);--btn-shadow-color:rgba(0, 0, 0, 0.2)}.theme-light.minimal-light-white{--background-table-rows:var(--bg2)}.theme-light.minimal-light-tonal{--background-primary:var(--bg2);--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-tonal{--ribbon-background:var(--bg1);--background-secondary:var(--bg1);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-black{--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3);--modal-border:var(--ui2);--active-line-bg:rgba(255,255,255,0.085);--background-modifier-form-field:var(--bg3);--background-modifier-cover:hsla(var(--base-h),var(--base-s),calc(var(--base-d) + 8%),0.9);--background-modifier-box-shadow:rgba(0, 0, 0, 1)}body{--font-adaptive-normal:var(--font-text-size,var(--editor-font-size));--font-adaptive-small:var(--font-ui-medium);--font-adaptive-smaller:var(--font-ui-small);--font-adaptive-smallest:11px;--line-width-adaptive:var(--line-width);--line-width-wide:calc(var(--line-width) + 12.5%);--font-code:calc(var(--font-adaptive-normal) * 0.9);--table-text-size:calc(var(--font-adaptive-normal) * 0.875)}.minimal-dev-block-width .mod-root .workspace-leaf-content:after{display:flex;align-items:flex-end;content:"\00a0pane\00a0";font-size:12px;color:gray;font-family:var(--font-monospace);width:100%;max-width:100%;height:100vh;top:0;z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:max(calc(50% - var(--line-width-adaptive)/ 2 - 1px),calc(50% - var(--max-width)/ 2 - 1px));z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable-off .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:calc(50% - var(--max-width)/ 2 - 1px);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width .mod-root .view-content:before{display:flex;align-items:flex-end;content:"\00a0max\00a0";font-size:12px;color:red;width:var(--max-width);height:100vh;border-left:1px solid red;border-right:1px solid red;top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:before{display:flex;align-items:flex-end;content:"\00a0wide\00a0";font-size:12px;color:orange;font-family:var(--font-monospace);width:var(--line-width-wide);max-width:var(--max-width);height:100vh;border-left:1px solid orange;border-right:1px solid orange;background-color:rgba(255,165,0,.05);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-content:after{display:flex;align-items:flex-end;color:#00f;font-size:12px;font-family:var(--font-monospace);content:"\00a0normal";width:var(--line-width-adaptive);max-width:var(--max-width);height:100vh;border-left:1px solid #00f;border-right:1px solid #00f;background-color:rgba(0,0,255,.08);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.CodeMirror-wrap>div>textarea{opacity:0}.markdown-source-view.mod-cm6 hr{border-width:2px}.mod-cm6 .cm-editor .cm-line{padding:0}.cm-editor .cm-content{padding-top:.5em}.markdown-source-view{color:var(--text-normal)}.markdown-reading-view>.markdown-preview-view{padding-top:18px}.markdown-source-view.mod-cm6 .cm-scroller{padding-top:18px;padding-left:0;padding-right:0}body:not(.is-mobile) .markdown-source-view.mod-cm6 .cm-gutters{position:absolute!important;z-index:0;margin-left:0}.cm-editor .cm-lineNumbers .cm-gutterElement{min-width:25px}@media (max-width:400pt){.cm-editor .cm-lineNumbers .cm-gutterElement{padding-right:4px;padding-left:8px}}.cm-editor .cm-lineNumbers .cm-gutterElement{font-variant-numeric:tabular-nums}.cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button{cursor:var(--cursor);color:var(--text-faint);background-color:var(--background-primary);top:0;right:auto;left:0;opacity:0;transition:opacity .2s;padding:4px 4px 4px 9px}.markdown-source-view.mod-cm6 .edit-block-button svg{margin:0!important}.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.edit-block-button{width:30px!important;padding-left:7px!important;transform:none!important;margin-left:0!important}.is-live-preview:not(.is-readable-line-width) .cm-embed-block>.edit-block-button{padding-left:0!important;margin-left:0!important;transform:none!important;right:0;left:auto;padding:4px}.markdown-source-view.mod-cm6 .edit-block-button:hover{background-color:var(--background-primary);color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button svg{opacity:1}.markdown-source-view.mod-cm6 .edit-block-button:hover svg{opacity:1}.markdown-source-view.mod-cm6 .cm-embed-block{padding:0;border:0;border-radius:0}.markdown-source-view.mod-cm6 .cm-embed-block:hover{border:0}.theme-light .cm-link,.theme-light .cm-operator,.theme-light .cm-string,.theme-light .cm-string-2,.theme-light .language-css .token.string,.theme-light .style .token.string,.theme-light .token.entity,.theme-light .token.operator,.theme-light .token.url{background-color:transparent}.markdown-source-view,.markdown-source-view.mod-cm5,.markdown-source-view.mod-cm6{padding:0}.cm-s-obsidian .CodeMirror-code{padding-right:0}.CodeMirror-lines{padding-bottom:170px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding-left:0;padding-right:0}.cm-s-obsidian pre.HyperMD-list-line{padding-top:0}.workspace .markdown-preview-view .markdown-embed{margin:0}.workspace .markdown-preview-view .markdown-embed-content{max-height:none}.internal-embed .markdown-preview-section,.markdown-embed-title{max-width:100%}.CodeMirror-linenumber{font-size:var(--font-adaptive-small)!important;font-feature-settings:'tnum';color:var(--text-faint);padding-top:3px}.cm-s-obsidian .cm-active span.cm-link.cm-hmd-barelink.cm-formatting-link-start,.cm-s-obsidian .cm-formatting-link+span.cm-link.cm-formatting.cm-formatting-link-end,.cm-s-obsidian span.cm-footref.cm-formatting.cm-formatting-link.cm-formatting-link-end,.cm-s-obsidian span.cm-formatting-link,.cm-s-obsidian span.cm-link.cm-hmd-barelink.cm-formatting-link-start,span.cm-image-marker{color:var(--text-faint)}.cm-formatting-quote{color:var(--text-faint)!important}figure{margin-inline-start:0;margin-inline-end:0}.markdown-preview-view blockquote,.markdown-preview-view ol,.markdown-preview-view p,.markdown-preview-view ul{margin-block-start:var(--spacing-p);margin-block-end:var(--spacing-p)}.markdown-preview-view ol ol,.markdown-preview-view ol ul,.markdown-preview-view ul ol,.markdown-preview-view ul ul{margin-block-start:0em;margin-block-end:0em}.markdown-preview-view h1,.markdown-preview-view h2,.markdown-preview-view h3,.markdown-preview-view h4,.markdown-preview-view h5,.markdown-preview-view h6{margin-block-start:1em;margin-block-end:var(--spacing-p)}.markdown-preview-view .mod-highlighted{transition:background-color .3s ease;background-color:var(--text-selection);color:inherit}.workspace-leaf-content>.view-content{--file-margins:0}.inline-title{padding-top:16px}.minimal-status-off .status-bar{--status-bar-position:static;--status-bar-radius:0;--status-bar-border-width:1px 0 0 0;--status-bar-background:var(--background-secondary);--status-bar-border-color:var(--ui1)}body:not(.minimal-status-off) .status-bar{background-color:var(--background-primary);--status-bar-border-width:0}.status-bar{transition:color .2s linear;color:var(--text-faint);font-size:var(--font-adaptive-smallest)}.status-bar .sync-status-icon.mod-success,.status-bar .sync-status-icon.mod-working{color:var(--text-faint)}.status-bar:hover,.status-bar:hover .sync-status-icon.mod-success,.status-bar:hover .sync-status-icon.mod-working{color:var(--text-muted);transition:color .2s linear}.status-bar .plugin-sync:hover .sync-status-icon.mod-success,.status-bar .plugin-sync:hover .sync-status-icon.mod-working{color:var(--text-normal)}.status-bar .status-bar-item{cursor:var(--cursor)!important}.status-bar .status-bar-item.cMenu-statusbar-button:hover,.status-bar .status-bar-item.mod-clickable:hover,.status-bar .status-bar-item.plugin-editor-status:hover,.status-bar .status-bar-item.plugin-sync:hover{text-align:center;background-color:var(--background-modifier-hover)!important}.tab-stack-top-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:right}.tab-stack-center{--tab-stacked-text-align:center}.tab-stack-center-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:center}.tab-stack-bottom{--tab-stacked-text-transform:rotate(180deg)}.tab-stack-bottom-flipped{--tab-stacked-text-align:right}.view-header-title,.view-header-title-parent{text-overflow:ellipsis}.view-header-title-container:not(.mod-at-end):after{display:none}body:not(.is-mobile) .view-actions .view-action:last-child{margin-left:-1px}.minimal-focus-mode .workspace-ribbon:not(.is-collapsed)~.mod-root .view-header:hover .view-actions,.mod-right.is-collapsed~.mod-root .view-header:hover .view-actions,.view-action.is-active:hover,.workspace-ribbon.mod-left.is-collapsed~.mod-root .view-header:hover .view-actions,body:not(.minimal-focus-mode) .workspace-ribbon:not(.is-collapsed)~.mod-root .view-actions{opacity:1;transition:opacity .25s ease-in-out}.view-header-title-container{opacity:0;transition:opacity .1s ease-in-out}.view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.view-header:hover .view-header-title-container,.workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:1;transition:opacity .1s ease-in-out}.is-phone .view-header-title-container,.minimal-tab-title-visible .view-header-title-container{opacity:1}.minimal-tab-title-hidden .view-header-title-container{opacity:0}.minimal-tab-title-hidden .view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.minimal-tab-title-hidden .view-header:hover .view-header-title-container,.minimal-tab-title-hidden .workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:0}body.window-title-off .titlebar-text{display:none}.titlebar-button-container.mod-right{background-color:transparent!important}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame){--titlebar-background:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-tabs.mod-top,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .workspace-tabs.mod-top{--titlebar-background-focused:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed){--titlebar-background:var(--bg2)}.mod-macos.is-hidden-frameless:not(.is-popout-window) .sidebar-toggle-button.mod-right{right:0;padding-right:var(--size-4-2)}body.is-focused{--titlebar-background-focused:var(--background-secondary)}.is-hidden-frameless:not(.colorful-frame) .mod-left-split .mod-top .workspace-tab-header-container{--tab-container-background:var(--background-secondary)}.mod-root .workspace-tab-header-status-icon{color:var(--text-muted)}.modal button:not(.mod-warning),.modal.mod-settings button:not(.mod-cta):not(.mod-warning),.modal.mod-settings button:not(.mod-warning){white-space:nowrap;transition:background-color .2s ease-out,border-color .2s ease-out}button.mod-warning{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 1px 1px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}button.mod-warning:hover{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 2px 3px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}.document-replace,.document-search{max-width:100%}.document-search-container{margin:0 auto;max-width:var(--max-width);width:var(--line-width-adaptive)}.is-mobile .CodeMirror-foldgutter-open:after,.is-mobile span[title="Fold line"]:after{transform:translateX(-2px)!important}body.is-mobile .CodeMirror-foldgutter-folded:after,body.is-mobile span[title="Unfold line"]:after{content:"›";font-family:sans-serif;transform:translateY(-2px);transform:rotate(-90deg) translateY(2px) translateX(-.45em)}body.is-mobile .CodeMirror-foldgutter-open:after,body.is-mobile span[title="Fold line"]:after{content:"›";font-family:sans-serif;transform:rotate(360deg)}body{--ig-adjust-reading:-0.95em;--ig-adjust-edit:2px}.markdown-rendered.show-indentation-guide li.task-list-item>ol::before,.markdown-rendered.show-indentation-guide li.task-list-item>ul::before,.markdown-rendered.show-indentation-guide li>ol::before,.markdown-rendered.show-indentation-guide li>ul::before{left:var(--ig-adjust-reading)}.markdown-source-view.mod-cm6 .cm-indent::before{transform:translateX(var(--ig-adjust-edit))}.is-mobile .markdown-rendered.show-indentation-guide li>ol::before,.is-mobile .markdown-rendered.show-indentation-guide li>ul::before{left:calc(0em + var(--ig-adjust-reading))}.is-mobile .markdown-source-view.mod-cm6 .cm-indent::before{transform:translateX(calc(2px + var(--ig-adjust-edit)))}.modal-button-container .mod-checkbox{--checkbox-radius:4px}.modal-container.mod-confirmation .modal{width:480px;min-width:0}.theme-light{--progress-outline:rgba(0,0,0,0.05)}.theme-dark{--progress-outline:rgba(255,255,255,0.04)}.markdown-preview-view progress,.markdown-rendered progress,.markdown-source-view.is-live-preview progress{width:220px}.markdown-preview-view progress[value]::-webkit-progress-bar,.markdown-rendered progress[value]::-webkit-progress-bar,.markdown-source-view.is-live-preview progress[value]::-webkit-progress-bar{box-shadow:inset 0 0 0 var(--border-width) var(--progress-outline)}.markdown-preview-view progress[value^='1']::-webkit-progress-value,.markdown-preview-view progress[value^='2']::-webkit-progress-value,.markdown-preview-view progress[value^='3']::-webkit-progress-value,.markdown-rendered progress[value^='1']::-webkit-progress-value,.markdown-rendered progress[value^='2']::-webkit-progress-value,.markdown-rendered progress[value^='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='3']::-webkit-progress-value{background-color:var(--color-red)}.markdown-preview-view progress[value^='4']::-webkit-progress-value,.markdown-preview-view progress[value^='5']::-webkit-progress-value,.markdown-rendered progress[value^='4']::-webkit-progress-value,.markdown-rendered progress[value^='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='5']::-webkit-progress-value{background-color:var(--color-orange)}.markdown-preview-view progress[value^='6']::-webkit-progress-value,.markdown-preview-view progress[value^='7']::-webkit-progress-value,.markdown-rendered progress[value^='6']::-webkit-progress-value,.markdown-rendered progress[value^='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='7']::-webkit-progress-value{background-color:var(--color-yellow)}.markdown-preview-view progress[value^='8']::-webkit-progress-value,.markdown-preview-view progress[value^='9']::-webkit-progress-value,.markdown-rendered progress[value^='8']::-webkit-progress-value,.markdown-rendered progress[value^='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='9']::-webkit-progress-value{background-color:var(--color-green)}.markdown-preview-view progress[value='1']::-webkit-progress-value,.markdown-preview-view progress[value='100']::-webkit-progress-value,.markdown-rendered progress[value='1']::-webkit-progress-value,.markdown-rendered progress[value='100']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='100']::-webkit-progress-value{background-color:var(--text-accent)}.markdown-preview-view progress[value='0']::-webkit-progress-value,.markdown-preview-view progress[value='2']::-webkit-progress-value,.markdown-preview-view progress[value='3']::-webkit-progress-value,.markdown-preview-view progress[value='4']::-webkit-progress-value,.markdown-preview-view progress[value='5']::-webkit-progress-value,.markdown-preview-view progress[value='6']::-webkit-progress-value,.markdown-preview-view progress[value='7']::-webkit-progress-value,.markdown-preview-view progress[value='8']::-webkit-progress-value,.markdown-preview-view progress[value='9']::-webkit-progress-value,.markdown-rendered progress[value='0']::-webkit-progress-value,.markdown-rendered progress[value='2']::-webkit-progress-value,.markdown-rendered progress[value='3']::-webkit-progress-value,.markdown-rendered progress[value='4']::-webkit-progress-value,.markdown-rendered progress[value='5']::-webkit-progress-value,.markdown-rendered progress[value='6']::-webkit-progress-value,.markdown-rendered progress[value='7']::-webkit-progress-value,.markdown-rendered progress[value='8']::-webkit-progress-value,.markdown-rendered progress[value='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='0']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='9']::-webkit-progress-value{background-color:var(--color-red)}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar,body:not(.native-scrollbars) ::-webkit-scrollbar{width:11px;background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar:horizontal,body:not(.native-scrollbars) ::-webkit-scrollbar:horizontal{height:11px}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-corner,body:not(.native-scrollbars) ::-webkit-scrollbar-corner{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-track,body:not(.native-scrollbars) ::-webkit-scrollbar-track{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb{background-clip:padding-box;border-radius:20px;border:3px solid transparent;background-color:var(--background-modifier-border);border-width:3px 3px 3px 3px;min-height:45px}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:hover{background-color:var(--background-modifier-border-hover)}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:active{background-color:var(--background-modifier-border-focus)}.tooltip{transition:none;animation:none}.tooltip.mod-left,.tooltip.mod-right{transform:none;animation:none}.tooltip.mod-error{color:var(--text-error)}.markdown-preview-view blockquote{padding:0 0 0 var(--nested-padding);font-size:var(--blockquote-size)}.markdown-source-view.mod-cm6 .HyperMD-quote,.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote{font-size:var(--blockquote-size)}.is-live-preview .cm-hmd-indent-in-quote{color:var(--text-faint)}.is-live-preview.is-readable-line-width>.cm-callout .callout{max-width:var(--max-width);margin:0 auto}.callouts-outlined .callout .callout-title{background-color:var(--background-primary);margin-top:-24px;z-index:200;width:fit-content;padding:0 .5em;margin-left:-.75em;letter-spacing:.05em;font-variant-caps:all-small-caps}.callouts-outlined .callout{overflow:visible;--callout-border-width:1px;--callout-border-opacity:0.5;--callout-title-size:0.8em;--callout-blend-mode:normal;background-color:transparent}.callouts-outlined .cm-embed-block.cm-callout{padding-top:12px}.callouts-outlined .callout-content .callout{margin-top:18px}body{--checkbox-radius:50%;--checkbox-top:2px;--checkbox-left:0px;--checkbox-margin:0px 6px 0px -2em}.checkbox-square{--checkbox-size:calc(var(--font-text-size) * 0.85);--checkbox-radius:4px;--checkbox-top:1px;--checkbox-left:0px;--checkbox-margin:0px 8px 0px -2em}body.minimal-strike-lists{--checklist-done-decoration:line-through}body:not(.minimal-strike-lists){--checklist-done-decoration:none;--checklist-done-color:var(--text-normal)}input[type=checkbox]{padding:0;margin:0 6px 0 0}.markdown-preview-section>.contains-task-list{padding-bottom:.5em}.mod-cm6 .HyperMD-task-line[data-task] .cm-formatting-list-ol~.task-list-label .task-list-item-checkbox{margin:1px}.markdown-preview-view .task-list-item-checkbox{position:relative;top:var(--checkbox-top);left:var(--checkbox-left);line-height:0}.markdown-preview-view ul>li.task-list-item{text-indent:0;line-height:var(--line-height)}.is-mobile .mod-cm6 .HyperMD-task-line[data-task] .task-list-item-checkbox{margin-left:-.4em}.is-mobile .markdown-preview-view input[type=checkbox].task-list-item-checkbox{top:.2em}.minimal-code-scroll{--code-white-space:pre}.minimal-code-scroll .HyperMD-codeblock.HyperMD-codeblock-bg{overflow-y:scroll;white-space:pre}.minimal-code-scroll .cm-hmd-codeblock{white-space:pre!important}@media print{.print{--code-background:#eee!important}}body{--embed-max-height:none;--embed-decoration-style:solid;--embed-decoration-color:var(--background-modifier-border-hover)}.embed-strict{--embed-background:transparent;--embed-border-left:0;--embed-padding:0}.embed-strict .markdown-embed-content{--folding-offset:0px}.embed-strict .el-embed-heading.el-p>p{margin-block-start:0;margin-block-end:0}.embed-strict .internal-embed .markdown-embed,.embed-strict .markdown-preview-view .markdown-embed,.embed-strict.markdown-preview-view .markdown-embed{padding:0}.embed-strict .internal-embed .markdown-embed .markdown-embed-title,.embed-strict .markdown-embed-title{display:none}.embed-strict .internal-embed:not([src*="#^"]) .markdown-embed-link{width:24px;opacity:0}.embed-underline .internal-embed{text-decoration-line:underline;text-decoration-style:var(--embed-decoration-style);text-decoration-color:var(--embed-decoration-color)}.embed-hide-title .markdown-embed-title{display:none}.contextual-typography .embed-strict .internal-embed .markdown-preview-view .markdown-preview-sizer>div,.embed-strict.contextual-typography .internal-embed .markdown-preview-view .markdown-preview-sizer>div{margin:0;width:100%}.markdown-embed .markdown-preview-view .markdown-preview-sizer{padding-bottom:0!important}.markdown-preview-view.is-readable-line-width .markdown-embed .markdown-preview-sizer,.markdown-preview-view.markdown-embed .markdown-preview-sizer{max-width:100%;width:100%;min-height:0!important;padding-bottom:0!important}.markdown-embed .markdown-preview-section div:last-child p,.markdown-embed .markdown-preview-section div:last-child ul{margin-block-end:2px}.markdown-preview-view .markdown-embed{margin-top:var(--nested-padding);padding:0 calc(var(--nested-padding)/ 2) 0 var(--nested-padding)}.internal-embed:not([src*="#^"]) .markdown-embed-link{right:0;width:100%}.file-embed-link,.markdown-embed-link{top:0;right:0;text-align:right;justify-content:flex-end}.file-embed-link svg,.markdown-embed-link svg{width:16px;height:16px}.markdown-embed .file-embed-link,.markdown-embed .markdown-embed-link{opacity:.6;transition:opacity .1s linear}.markdown-embed .file-embed-link:hover,.markdown-embed .markdown-embed-link:hover{opacity:1}.markdown-embed .file-embed-link:hover:hover,.markdown-embed .markdown-embed-link:hover:hover{background-color:transparent;--icon-color:var(--text-accent)}.file-embed-link:hover,.markdown-embed-link:hover{color:var(--text-muted)}.markdown-embed .markdown-preview-view{padding:0}.internal-embed .markdown-embed{border:0;border-left:1px solid var(--quote-opening-modifier);border-radius:0}a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}.theme-dark a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}div>ol,div>ul{padding-inline-start:1.4em}ul>li{min-height:1.4em}ol>li{margin-left:0}ol{margin-left:0;list-style:default}.markdown-source-view.mod-cm6 .cm-content .HyperMD-list-line{margin-left:var(--list-edit-offset)!important}.markdown-preview-view ol>li,.markdown-preview-view ul>li,.markdown-source-view ol>li,.markdown-source-view ul>li,.mod-cm6 .HyperMD-list-line.cm-line{padding-top:var(--list-spacing);padding-bottom:var(--list-spacing)}.is-mobile ul>li:not(.task-list-item)::marker{font-size:.8em}.is-mobile .markdown-rendered ol,.is-mobile .markdown-rendered ul{padding-inline-start:var(--list-indent)}.is-mobile .markdown-rendered div>ol,.is-mobile .markdown-rendered div>ul{padding-inline-start:2em}.is-mobile .el-ol>ol,.is-mobile .el-ul>ul{margin-left:0}.is-mobile .workspace-leaf-content:not([data-type=search]) .workspace-leaf-content[data-type=markdown] .nav-buttons-container{border-bottom:none;padding-top:5px}.is-mobile .mod-root .workspace-leaf-content[data-type=markdown] .search-input-container{width:calc(100% - 160px)}.embedded-backlinks .nav-header~.search-input-container{width:calc(100% - 140px);margin-top:12px}.embedded-backlinks .nav-buttons-container{position:absolute;right:0;top:14px}.embedded-backlinks .backlink-pane>.tree-item-self,.embedded-backlinks .backlink-pane>.tree-item-self:hover{text-transform:none;color:var(--text-normal);font-size:var(--font-adaptive-normal);font-weight:500;letter-spacing:unset}body{--pdf-dark-opacity:1}.theme-dark:not(.pdf-shadows-on),.theme-light:not(.pdf-shadows-on){--pdf-shadow:none;--pdf-thumbnail-shadow:none}.theme-dark:not(.pdf-shadows-on) .pdf-viewer .page,.theme-light:not(.pdf-shadows-on) .pdf-viewer .page{border:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing{padding:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after{right:var(--size-4-2);bottom:var(--size-4-2)}.theme-dark{--pdf-thumbnail-shadow:0 0 1px 0 rgba(0,0,0,0.6);--pdf-shadow:0 0 1px 0 rgba(0,0,0,0.6)}.theme-dark .pdf-viewer .canvasWrapper{opacity:var(--pdf-dark-opacity)}.theme-dark.pdf-invert-dark .pdf-thumbnail-view .thumbnailImage,.theme-dark.pdf-invert-dark .pdf-viewer .canvasWrapper{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-light.pdf-blend-light .pdf-thumbnail-view .thumbnailImage,.theme-light.pdf-blend-light .pdf-viewer .canvasWrapper{mix-blend-mode:multiply}.markdown-source-view.mod-cm6 table{border-collapse:collapse}.markdown-preview-view table{margin-block-start:1em}.markdown-preview-view table,.markdown-source-view.mod-cm6 table{border:1px solid var(--border-color);border-collapse:collapse}.markdown-preview-view td,.markdown-preview-view th,.markdown-source-view.mod-cm6 td,.markdown-source-view.mod-cm6 th{padding:4px 10px}.markdown-preview-view td:first-child,.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 td:first-child,.markdown-source-view.mod-cm6 th:first-child{padding-left:0}.markdown-preview-view th,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,.table-view-table>thead>tr>th{padding:4px 10px}.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:first-child,.table-view-table>thead>tr>th:first-child{padding-left:0}body{--table-header-border-width:0 1px;--table-column-first-border-width:0;--table-column-last-border-width:0;--table-row-last-border-width:0}.is-live-preview .el-table{width:100%;max-width:100%}.cm-hmd-table-sep-dummy,.cm-s-obsidian .HyperMD-table-row span.cm-hmd-table-sep{color:var(--text-faint);font-weight:400}body.minimal-unstyled-tags{--tag-background:transparent;--tag-background-hover:transparent;--tag-border-width:0px;--tag-padding-x:0;--tag-padding-y:0;--tag-size:inherit;--tag-color-hover:var(--text-accent-hover)}body.minimal-unstyled-tags.is-mobile.theme-dark{--tag-background:transparent}body:not(.minimal-unstyled-tags){--tag-size:0.8em;--tag-padding-y:0.2em;--tag-background:transparent;--tag-background-hover:transparent;--tag-color:var(--text-muted);--tag-border-width:1px;--tag-border-color:var(--background-modifier-border);--tag-border-color-hover:var(--background-modifier-border-hover);--tag-color-hover:var(--text-normal)}body.is-mobile.theme-dark{--tag-background:transparent}h1,h2,h3,h4{letter-spacing:-.02em}body,button,input{font-family:var(--font-interface)}.cm-s-obsidian span.cm-error{color:var(--color-red)}.markdown-preview-view,.popover,.workspace-leaf-content[data-type=markdown]{font-family:var(--font-text)}.cm-s-obsidian,.markdown-preview-view,.markdown-source-view.mod-cm6.is-live-preview .cm-scroller,body{font-size:var(--font-adaptive-normal);font-weight:var(--normal-weight);line-height:var(--line-height)}.cm-s-obsidian,.markdown-source-view,.markdown-source-view.mod-cm6 .cm-scroller{line-height:var(--line-height);font-family:var(--font-editor)}.cm-s-obsidian span.cm-formatting-task{line-height:var(--line-height)}.mod-cm6 .cm-editor .HyperMD-header-1,.mod-cm6 .cm-editor .HyperMD-header-2,.mod-cm6 .cm-editor .HyperMD-header-3,.mod-cm6 .cm-editor .HyperMD-header-4,.mod-cm6 .cm-editor .HyperMD-header-5,.mod-cm6 .cm-editor .HyperMD-header-6{padding-top:.5em}.active-line-on .cm-line.cm-active,.active-line-on .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote.cm-active{background-color:var(--active-line-bg);box-shadow:-25vw 0 var(--active-line-bg),25vw 0 var(--active-line-bg)}.borders-none{--divider-width:0px;--tab-outline-width:0px}:root{--cards-min-width:180px;--cards-max-width:1fr;--cards-mobile-width:120px;--cards-image-height:400px;--cards-padding:1.2em;--cards-image-fit:contain;--cards-background:transparent;--cards-border-width:1px;--cards-aspect-ratio:auto;--cards-columns:repeat(auto-fit, minmax(var(--cards-min-width), var(--cards-max-width)))}@media (max-width:400pt){:root{--cards-min-width:var(--cards-mobile-width)}}.cards.table-100 table.dataview tbody,.table-100 .cards table.dataview tbody{padding:.25rem .75rem}.cards table.dataview tbody{clear:both;padding:.5rem 0;display:grid;grid-template-columns:var(--cards-columns);grid-column-gap:0.75rem;grid-row-gap:0.75rem}.cards table.dataview>tbody>tr{background-color:var(--cards-background);border:var(--cards-border-width) solid var(--background-modifier-border);display:flex;flex-direction:column;margin:0;padding:0 0 calc(var(--cards-padding)/3) 0;border-radius:6px;overflow:hidden;transition:box-shadow .15s linear;max-width:var(--cards-max-width)}.cards table.dataview>tbody>tr:hover{border:var(--cards-border-width) solid var(--background-modifier-border-hover);box-shadow:0 4px 6px 0 rgba(0,0,0,.05),0 1px 3px 1px rgba(0,0,0,.025);transition:box-shadow .15s linear}.cards table.dataview tbody>tr>td:first-child{font-weight:var(--bold-weight)}.cards table.dataview tbody>tr>td:first-child a{padding:0 0 calc(var(--cards-padding)/3);display:block}.cards table.dataview tbody>tr>td:not(:first-child){font-size:90%;color:var(--text-muted)}.cards table.dataview tbody>tr>td .el-p{display:block;width:100%}.cards table.dataview tbody>tr>td>:not(.el-embed-image){padding:calc(var(--cards-padding)/3) 0}.cards table.dataview tbody>tr>td:not(:last-child):not(:first-child)>.el-p:not(.el-embed-image){border-bottom:1px solid var(--background-modifier-border);width:100%}.cards table.dataview tbody>tr>td a{text-decoration:none}.cards table.dataview tbody>tr>td>button{width:100%;margin:calc(var(--cards-padding)/2) 0}.cards table.dataview tbody>tr>td:last-child>button{margin-bottom:calc(var(--cards-padding)/6)}.cards table.dataview tbody>tr>td>ul{width:100%;padding:.25em 0!important;margin:0 auto!important}.cards table.dataview tbody>tr>td:not(:last-child)>ul{border-bottom:1px solid var(--background-modifier-border)}.cards table.dataview tbody>tr>td .el-embed-image{background-color:var(--background-secondary);display:block;margin:0 calc(var(--cards-padding)/-2) 0 calc(var(--cards-padding)/-2);width:calc(100% + var(--cards-padding))}.cards table.dataview tbody>tr>td img{aspect-ratio:var(--cards-aspect-ratio);width:100%;object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.markdown-source-view.mod-cm6.cards .dataview.table-view-table>tbody>tr>td,.trim-cols .cards table.dataview tbody>tr>td{white-space:normal}.cards .dataview.table-view-table>tbody>tr>td,.cards table.dataview tbody>tr>td,.markdown-source-view.mod-cm6.cards .dataview.table-view-table>tbody>tr>td,.markdown-source-view.mod-cm6.cards table.dataview tbody>tr>td{border-bottom:none;padding:0!important;line-height:1.2;width:calc(100% - var(--cards-padding));margin:0 auto;overflow:visible!important;max-width:100%;display:flex}.links-int-on .cards table.dataview tbody>tr>td a{text-decoration:none}.markdown-source-view.mod-cm6.cards .edit-block-button{top:0}.cards.table-100 table.dataview thead>tr,.table-100 .cards table.dataview thead>tr{right:.75rem}.cards.table-100 table.dataview thead:before,.table-100 .cards table.dataview thead:before{margin-right:.75rem}.theme-light .cards table.dataview thead:before{background-image:url('data:image/svg+xml;utf8,')}.cards .el-pre+.el-lang-dataview .table-view-thead{padding-top:8px}.cards table.dataview thead{user-select:none;width:180px;display:block;float:right;position:relative;text-align:right;height:24px;padding-bottom:4px}.cards table.dataview thead:hover:before{opacity:.5;background-color:var(--background-modifier-hover)}.cards table.dataview thead:before{content:'';position:absolute;right:0;top:0;width:10px;height:16px;background-repeat:no-repeat;cursor:var(--cursor);text-align:right;padding:var(--size-4-1) var(--size-4-2);margin-bottom:2px;border-radius:var(--radius-s);font-weight:500;font-size:var(--font-adaptive-small);opacity:.25;background-position:center center;background-size:16px;background-image:url('data:image/svg+xml;utf8,')}.cards table.dataview thead>tr{top:-1px;position:absolute;display:none;z-index:9;border:1px solid var(--background-modifier-border-hover);background-color:var(--background-secondary);box-shadow:var(--shadow-s);padding:6px;border-radius:var(--radius-m);flex-direction:column;margin:26px 0 0 0;width:100%}.cards table.dataview thead:hover>tr{display:flex}.cards table.dataview thead>tr>th{display:block;padding:3px 30px 3px 6px!important;border-radius:var(--radius-s);width:100%;font-weight:400;color:var(--text-normal);cursor:var(--cursor);border:none;font-size:var(--font-ui-small)}.cards table.dataview thead>tr>th[sortable-style=sortable-asc],.cards table.dataview thead>tr>th[sortable-style=sortable-desc]{color:var(--text-normal)}.cards table.dataview thead>tr>th:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}.cards.cards-16-9{--cards-aspect-ratio:16/9}.cards.cards-1-1{--cards-aspect-ratio:1/1}.cards.cards-2-1{--cards-aspect-ratio:2/1}.cards.cards-2-3{--cards-aspect-ratio:2/3}.cards.cards-cols-1{--cards-columns:repeat(1, minmax(0, 1fr))}.cards.cards-cols-2{--cards-columns:repeat(2, minmax(0, 1fr))}.cards.cards-cover table.dataview tbody>tr>td img{object-fit:cover}.cards.cards-align-bottom table.dataview tbody>tr>td:last-child{align-items:flex-end;flex-grow:1}@media (max-width:400pt){.cards table.dataview tbody>tr>td:not(:first-child){font-size:80%}}@media (min-width:400pt){.cards-cols-3{--cards-columns:repeat(3, minmax(0, 1fr))}.cards-cols-4{--cards-columns:repeat(4, minmax(0, 1fr))}.cards-cols-5{--cards-columns:repeat(5, minmax(0, 1fr))}.cards-cols-6{--cards-columns:repeat(6, minmax(0, 1fr))}.cards-cols-7{--cards-columns:repeat(7, minmax(0, 1fr))}.cards-cols-8{--cards-columns:repeat(8, minmax(0, 1fr))}}.cm-formatting.cm-formatting-task.cm-property{font-family:var(--font-monospace);font-size:90%}input[data-task="!"]:checked,input[data-task="*"]:checked,input[data-task="-"]:checked,input[data-task="<"]:checked,input[data-task=">"]:checked,input[data-task="I"]:checked,input[data-task="b"]:checked,input[data-task="c"]:checked,input[data-task="d"]:checked,input[data-task="f"]:checked,input[data-task="k"]:checked,input[data-task="l"]:checked,input[data-task="p"]:checked,input[data-task="u"]:checked,input[data-task="w"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{--checkbox-marker-color:transparent;border:none;border-radius:0;background-image:none;background-color:currentColor;-webkit-mask-size:var(--checkbox-icon);-webkit-mask-position:50% 50%}input[data-task=">"]:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked{color:var(--text-faint);transform:rotate(90deg);-webkit-mask-position:50% 100%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M10.894 2.553a1 1 0 00-1.788 0l-7 14a1 1 0 001.169 1.409l5-1.429A1 1 0 009 15.571V11a1 1 0 112 0v4.571a1 1 0 00.725.962l5 1.428a1 1 0 001.17-1.408l-7-14z' /%3E%3C/svg%3E")}input[data-task="<"]:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z' clip-rule='evenodd' /%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="?"]:checked,li[data-task="?"]>input:checked,li[data-task="?"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-yellow);border-color:var(--color-yellow);background-position:50% 50%;background-size:200% 90%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="white" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="?"]:checked,.theme-dark li[data-task="?"]>input:checked,.theme-dark li[data-task="?"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="black" fill-opacity="0.8" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="/"]:checked,li[data-task="/"]>input:checked,li[data-task="/"]>p>input:checked{background-image:none;background-color:transparent;position:relative;overflow:hidden}input[data-task="/"]:checked:after,li[data-task="/"]>input:checked:after,li[data-task="/"]>p>input:checked:after{top:0;left:0;content:" ";display:block;position:absolute;background-color:var(--background-modifier-accent);width:calc(50% - .5px);height:100%;-webkit-mask-image:none}input[data-task="!"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="\""]:checked,input[data-task="“"]:checked,li[data-task="\""]>input:checked,li[data-task="\""]>p>input:checked,li[data-task="“"]>input:checked,li[data-task="“"]>p>input:checked{--checkbox-marker-color:transparent;background-position:50% 50%;background-color:var(--color-cyan);border-color:var(--color-cyan);background-size:75%;background-repeat:no-repeat;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="white" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="\""]:checked,.theme-dark input[data-task="“"]:checked,.theme-dark li[data-task="\""]>input:checked,.theme-dark li[data-task="\""]>p>input:checked,.theme-dark li[data-task="“"]>input:checked,.theme-dark li[data-task="“"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="black" fill-opacity="0.7" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}input[data-task="-"]:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}body:not(.tasks) .markdown-preview-view ul li[data-task="-"].task-list-item.is-checked,body:not(.tasks) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task]:is([data-task="-"]),body:not(.tasks) li[data-task="-"].task-list-item.is-checked{color:var(--text-faint);text-decoration:line-through solid var(--text-faint) 1px}input[data-task="*"]:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z' /%3E%3C/svg%3E")}input[data-task="l"]:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="i"]:checked,li[data-task="i"]>input:checked,li[data-task="i"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-blue);border-color:var(--color-blue);background-position:50%;background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="white" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="i"]:checked,.theme-dark li[data-task="i"]>input:checked,.theme-dark li[data-task="i"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="black" fill-opacity="0.8" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="S"]:checked,li[data-task="S"]>input:checked,li[data-task="S"]>p>input:checked{--checkbox-marker-color:transparent;border-color:var(--color-green);background-color:var(--color-green);background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill="white" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="S"]:checked,.theme-dark li[data-task="S"]>input:checked,.theme-dark li[data-task="S"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill-opacity="0.8" fill="black" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}input[data-task="I"]:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M11 3a1 1 0 10-2 0v1a1 1 0 102 0V3zM15.657 5.757a1 1 0 00-1.414-1.414l-.707.707a1 1 0 001.414 1.414l.707-.707zM18 10a1 1 0 01-1 1h-1a1 1 0 110-2h1a1 1 0 011 1zM5.05 6.464A1 1 0 106.464 5.05l-.707-.707a1 1 0 00-1.414 1.414l.707.707zM5 10a1 1 0 01-1 1H3a1 1 0 110-2h1a1 1 0 011 1zM8 16v-1h4v1a2 2 0 11-4 0zM12 14c.015-.34.208-.646.477-.859a4 4 0 10-4.954 0c.27.213.462.519.476.859h4.002z' /%3E%3C/svg%3E")}input[data-task="f"]:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.395 2.553a1 1 0 00-1.45-.385c-.345.23-.614.558-.822.88-.214.33-.403.713-.57 1.116-.334.804-.614 1.768-.84 2.734a31.365 31.365 0 00-.613 3.58 2.64 2.64 0 01-.945-1.067c-.328-.68-.398-1.534-.398-2.654A1 1 0 005.05 6.05 6.981 6.981 0 003 11a7 7 0 1011.95-4.95c-.592-.591-.98-.985-1.348-1.467-.363-.476-.724-1.063-1.207-2.03zM12.12 15.12A3 3 0 017 13s.879.5 2.5.5c0-1 .5-4 1.25-4.5.5 1 .786 1.293 1.371 1.879A2.99 2.99 0 0113 13a2.99 2.99 0 01-.879 2.121z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="k"]:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M18 8a6 6 0 01-7.743 5.743L10 14l-1 1-1 1H6v2H2v-4l4.257-4.257A6 6 0 1118 8zm-6-4a1 1 0 100 2 2 2 0 012 2 1 1 0 102 0 4 4 0 00-4-4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="u"]:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 7a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0V8.414l-4.293 4.293a1 1 0 01-1.414 0L8 10.414l-4.293 4.293a1 1 0 01-1.414-1.414l5-5a1 1 0 011.414 0L11 10.586 14.586 7H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="d"]:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 13a1 1 0 100 2h5a1 1 0 001-1V9a1 1 0 10-2 0v2.586l-4.293-4.293a1 1 0 00-1.414 0L8 9.586 3.707 5.293a1 1 0 00-1.414 1.414l5 5a1 1 0 001.414 0L11 9.414 14.586 13H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="w"]:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{color:var(--color-purple);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 3a1 1 0 011-1h.01a1 1 0 010 2H7a1 1 0 01-1-1zm2 3a1 1 0 00-2 0v1a2 2 0 00-2 2v1a2 2 0 00-2 2v.683a3.7 3.7 0 011.055.485 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0A3.7 3.7 0 0118 12.683V12a2 2 0 00-2-2V9a2 2 0 00-2-2V6a1 1 0 10-2 0v1h-1V6a1 1 0 10-2 0v1H8V6zm10 8.868a3.704 3.704 0 01-4.055-.036 1.704 1.704 0 00-1.89 0 3.704 3.704 0 01-4.11 0 1.704 1.704 0 00-1.89 0A3.704 3.704 0 012 14.868V17a1 1 0 001 1h14a1 1 0 001-1v-2.132zM9 3a1 1 0 011-1h.01a1 1 0 110 2H10a1 1 0 01-1-1zm3 0a1 1 0 011-1h.01a1 1 0 110 2H13a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="p"]:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M2 10.5a1.5 1.5 0 113 0v6a1.5 1.5 0 01-3 0v-6zM6 10.333v5.43a2 2 0 001.106 1.79l.05.025A4 4 0 008.943 18h5.416a2 2 0 001.962-1.608l1.2-6A2 2 0 0015.56 8H12V4a2 2 0 00-2-2 1 1 0 00-1 1v.667a4 4 0 01-.8 2.4L6.8 7.933a4 4 0 00-.8 2.4z' /%3E%3C/svg%3E")}input[data-task="c"]:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M18 9.5a1.5 1.5 0 11-3 0v-6a1.5 1.5 0 013 0v6zM14 9.667v-5.43a2 2 0 00-1.105-1.79l-.05-.025A4 4 0 0011.055 2H5.64a2 2 0 00-1.962 1.608l-1.2 6A2 2 0 004.44 12H8v4a2 2 0 002 2 1 1 0 001-1v-.667a4 4 0 01.8-2.4l1.4-1.866a4 4 0 00.8-2.4z' /%3E%3C/svg%3E")}input[data-task="b"]:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M5 4a2 2 0 012-2h6a2 2 0 012 2v14l-5-2.5L5 18V4z' /%3E%3C/svg%3E")}.colorful-active .nav-files-container{--nav-item-background-active:var(--interactive-accent);--nav-item-color-active:var(--text-on-accent)}.colorful-active #calendar-container .active,.colorful-active #calendar-container .active.today,.colorful-active #calendar-container .active:hover,.colorful-active #calendar-container .day:active{background-color:var(--interactive-accent);color:var(--text-on-accent)}.colorful-active #calendar-container .active .dot,.colorful-active #calendar-container .day:active .dot,.colorful-active #calendar-container .today.active .dot{fill:var(--text-on-accent)}body:not(.colorful-active) .horizontal-tab-nav-item.is-active,body:not(.colorful-active) .vertical-tab-nav-item.is-active{background-color:var(--background-modifier-hover);color:var(--text-normal)}body{--frame-background:hsl( var(--frame-background-h), var(--frame-background-s), var(--frame-background-l));--frame-icon-color:var(--frame-muted-color)}.theme-light{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) + 30%);--frame-outline-color:hsla( var(--frame-background-h), var(--frame-background-s), calc(var(--frame-background-l) - 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) - 35%))}.theme-dark{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) - 25%);--frame-outline-color:hsla( var(--frame-background-h), calc(var(--frame-background-s) - 2%), calc(var(--frame-background-l) + 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) + 25%))}.colorful-frame.theme-dark{--tab-outline-width:0px}.colorful-frame,.colorful-frame.is-focused{--frame-divider-color:var(--frame-outline-color);--titlebar-background:var(--frame-background);--titlebar-background-focused:var(--frame-background);--titlebar-text-color:var(--frame-muted-color);--minimal-tab-text-color:var(--frame-muted-color)}.colorful-frame .workspace-tabs:not(.mod-stacked),.colorful-frame.is-focused .workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color)}.colorful-frame .mod-top .workspace-tab-header-container,.colorful-frame .titlebar,.colorful-frame .workspace-ribbon.mod-left:before,.colorful-frame.is-focused .mod-top .workspace-tab-header-container,.colorful-frame.is-focused .titlebar,.colorful-frame.is-focused .workspace-ribbon.mod-left:before{--tab-outline-color:var(--frame-outline-color);--tab-divider-color:var(--frame-outline-color)}.colorful-frame .mod-root .workspace-tab-header .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-root .workspace-tab-header .workspace-tab-header-inner-icon{--icon-color:var(--minimal-tab-text-color-active);--icon-color-hover:var(--minimal-tab-text-color-active);--icon-color-active:var(--minimal-tab-text-color-active);--icon-color-focused:var(--minimal-tab-text-color-active)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header,.colorful-frame .mod-right-split .mod-top .workspace-tab-header,.colorful-frame .sidebar-toggle-button,.colorful-frame .workspace-tab-header-new-tab,.colorful-frame .workspace-tab-header-tab-list,.colorful-frame .workspace-tab-header:not(.is-active),.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .sidebar-toggle-button,.colorful-frame.is-focused .workspace-tab-header-new-tab,.colorful-frame.is-focused .workspace-tab-header-tab-list,.colorful-frame.is-focused .workspace-tab-header:not(.is-active){--background-modifier-hover:var(--frame-outline-color);--icon-color:var(--frame-icon-color);--icon-color-hover:var(--frame-icon-color);--icon-color-active:var(--frame-icon-color);--icon-color-focused:var(--frame-icon-color);--icon-color-focus:var(--frame-icon-color)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon{color:var(--frame-icon-color)}.workspace-leaf-resize-handle{transition:none}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle{-webkit-app-region:no-drag;border:0;z-index:15}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{content:"";height:100%;width:1px;background:linear-gradient(180deg,var(--frame-outline-color) var(--header-height),var(--divider-color) var(--header-height));top:0;position:absolute}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:hover:after{background:var(--divider-color-hover)}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after{left:0}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{right:0}body.colorful-headings{--h1-color:var(--color-red);--h2-color:var(--color-orange);--h3-color:var(--color-yellow);--h4-color:var(--color-green);--h5-color:var(--color-blue);--h6-color:var(--color-purple)}body.colorful-headings .modal{--h1-color:var(--text-normal);--h2-color:var(--text-normal);--h3-color:var(--text-normal);--h4-color:var(--text-normal);--h5-color:var(--text-normal);--h6-color:var(--text-normal)}.is-mobile .tree-item-self .collapse-icon{width:20px}body:not(.minimal-icons-off) svg.calendar-day,body:not(.minimal-icons-off) svg.excalidraw-icon,body:not(.minimal-icons-off) svg.globe,body:not(.minimal-icons-off) svg.longform,body:not(.minimal-icons-off) svg.obsidian-leaflet-plugin-icon-map{background-color:currentColor}body:not(.minimal-icons-off) svg.excalidraw-icon path{display:none}body:not(.minimal-icons-off) svg.bar-graph{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.excalidraw-icon{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.longform{-webkit-mask-image:url('data:image/svg+xml;utf8,')}.fancy-cursor .CodeMirror-cursor{border:none;border-left:2px solid var(--text-accent)}.cm-fat-cursor .CodeMirror-cursor{background-color:var(--text-accent);opacity:.5;width:5px}.cm-animate-fat-cursor{background-color:var(--text-accent);opacity:.5;width:5px}body .markdown-source-view.mod-cm6 .cm-content{caret-color:unset}body.fancy-cursor .markdown-source-view.mod-cm6 .cm-content,body.fancy-cursor .mod-cm6 .cm-line{caret-color:var(--text-accent)}.fancy-cursor input.prompt-input{caret-color:var(--text-accent)}.workspace-ribbon.mod-left{border-left:0;transition:none}.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed,.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary)!important}.minimal-focus-mode .workspace-ribbon.mod-left{transition:background-color 0s linear 0s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed{border-color:transparent;background-color:var(--background-primary)}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary);border-color:transparent}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-settings{opacity:0;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-settings{opacity:1;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode.borders-title .workspace-ribbon.mod-left.is-collapsed{border-right:none}.minimal-focus-mode .mod-top-right-space .sidebar-toggle-button.mod-right{opacity:0}.minimal-focus-mode:not(.minimal-status-off) .status-bar{opacity:0;transition:opacity .2s ease-in-out}.minimal-focus-mode .status-bar:hover{opacity:1;transition:opacity .2s ease-in-out}.minimal-focus-mode .mod-root .workspace-tabs{position:relative}.minimal-focus-mode .mod-root .workspace-tabs:before:hover{background-color:#00f}.minimal-focus-mode .mod-root .workspace-tab-header-container{height:0;transition:all .1s linear .6s;--tab-outline-width:0px}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-tab-list{opacity:0;transition:opacity .1s linear .6s}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-spacer:before{width:100%;content:" ";background-color:transparent;height:15px;position:absolute;z-index:100;top:0;left:0}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{height:var(--header-height);--tab-outline-width:1px;transition:all .1s linear 50ms}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-tab-list{opacity:1;transition:opacity .1s linear 50ms}.minimal-focus-mode.mod-macos:not(.is-fullscreen) .workspace:not(.is-left-sidedock-open) .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner{padding-top:30px}body.show-view-header .app-container .workspace-split.mod-root>.workspace-leaf .view-header{transition:height .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header{height:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .view-header::after{width:100%;content:" ";background-color:transparent;height:40px;position:absolute;z-index:-9;top:0}body.minimal-focus-mode.show-view-header .view-actions,body.minimal-focus-mode.show-view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header-title-container{opacity:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:focus-within,body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:hover,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header{height:calc(var(--header-height) + 2px);transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-actions,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-actions,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:hover .view-actions,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-title-container{opacity:1;transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .view-content{height:100%}.full-width-media .image-embed img:not(.emoji):not([width]),.full-width-media .markdown-preview-view .image-embed img:not(.emoji):not([width]),.full-width-media .markdown-preview-view audio,.full-width-media .markdown-preview-view video{width:100%}.table-small table:not(.calendar){--table-text-size:85%}.table-tiny table:not(.calendar){--table-text-size:75%}.row-alt table:not(.calendar) tbody>tr>td:first-child,.row-alt table:not(.calendar) th:first-child,.row-alt.markdown-source-view.mod-cm6 td:first-child,.row-alt.markdown-source-view.mod-cm6 th:first-child,.row-hover th:first-child,.table-lines table:not(.calendar) tbody>tr>td:first-child,.table-lines table:not(.calendar) thead>tr>th:first-child,.table-lines.markdown-source-view.mod-cm6 td:first-child,.table-lines.markdown-source-view.mod-cm6 th:first-child{padding-left:10px}.row-alt{--table-row-alt-background:var(--background-table-rows)}.col-alt{--table-column-alt-background:var(--background-table-rows)}.table-tabular table:not(.calendar){font-variant-numeric:tabular-nums}.table-lines{--table-border-width:1px;--table-header-border-width:1px;--table-column-first-border-width:1px;--table-column-last-border-width:1px;--table-row-last-border-width:1px}.table-nowrap{--table-white-space:nowrap}.table-nowrap .table-wrap,.trim-cols{--table-white-space:normal}.table-numbers table:not(.calendar){counter-reset:section}.table-numbers table:not(.calendar)>thead>tr>th:first-child::before{content:" ";padding-right:.5em;display:inline-block;min-width:2em}.table-numbers table:not(.calendar)>tbody>tr>td:first-child::before{counter-increment:section;content:counter(section) " ";text-align:center;padding-right:.5em;display:inline-block;min-width:2em;color:var(--text-faint);font-variant-numeric:tabular-nums}.row-lines .table-view-table>tbody>tr>td,.row-lines table:not(.calendar) tbody>tr>td{border-bottom:1px solid var(--background-modifier-border)}.row-lines table:not(.calendar) tbody>tr:last-child>td{border-bottom:none}.col-lines .table-view-table thead>tr>th:not(:last-child),.col-lines .table-view-table>tbody>tr>td:not(:last-child),.col-lines table:not(.calendar) tbody>tr>td:not(:last-child){border-right:1px solid var(--background-modifier-border)}.row-hover{--table-row-background-hover:hsla( var(--accent-h), 50%, 80%, 20% )}.theme-dark .row-hover,.theme-dark.row-hover{--table-row-background-hover:hsla( var(--accent-h), 30%, 40%, 20% )}.theme-dark .markdown-preview-view img,.theme-dark .markdown-source-view img{opacity:var(--image-muted);transition:opacity .25s linear}@media print{body{--image-muted:1}}.theme-dark .markdown-preview-view img:hover,.theme-dark .markdown-source-view img:hover,.theme-dark .print-preview img{opacity:1;transition:opacity .25s linear}div[src$="#invert"],div[src$="#multiply"]{background-color:var(--background-primary)}.theme-dark div[src$="#invert"] img,.theme-dark img[src$="#invert"],.theme-dark span[src$="#invert"] img{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-dark div[src$="#multiply"] img,.theme-dark img[src$="#multiply"],.theme-dark span[src$="#multiply"] img{mix-blend-mode:screen}.theme-light div[src$="#multiply"] img,.theme-light img[src$="#multiply"],.theme-light span[src$="#multiply"] img{mix-blend-mode:multiply}.theme-light div[src$="#invertW"] img,.theme-light img[src$="#invertW"],.theme-light span[src$=invertW] img{filter:invert(1) hue-rotate(180deg)}img[src$="#circle"],span[src$="#circle"] img,span[src$="#round"] img{border-radius:50%;aspect-ratio:1/1}img[src$="#outline"],span[src$="#outline"] img{border:1px solid var(--ui1)}img[src$="#interface"],span[src$="#interface"] img{border:1px solid var(--ui1);box-shadow:0 .5px .9px rgba(0,0,0,.021),0 1.3px 2.5px rgba(0,0,0,.03),0 3px 6px rgba(0,0,0,.039),0 10px 20px rgba(0,0,0,.06);margin-top:10px;margin-bottom:15px;border-radius:var(--radius-m)}body{--image-grid-fit:cover;--image-grid-background:transparent}.image-embed.is-loaded{line-height:0}.image-embed.is-loaded img{background-color:var(--image-grid-background)}.image-embed.is-loaded img:active{background-color:transparent}div:not(.el-embed-image)+.el-embed-image{margin-top:1rem}.el-embed-image{margin-top:.5rem}.contextual-typography .markdown-preview-section>.el-embed-image>p{margin-block-start:0;margin-block-end:0}.img-grid .markdown-preview-section .el-embed-image img:not(.emoji):not([width]),.img-grid .markdown-preview-section video{width:100%}.img-grid .markdown-preview-section>.el-embed-image>p{display:grid;grid-column-gap:0.5rem;grid-row-gap:0;grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.img-grid .markdown-preview-section>.el-embed-image>p>br{display:none}.img-grid .markdown-preview-section>.el-embed-image>p>img{object-fit:var(--image-grid-fit);align-self:stretch}.img-grid .markdown-preview-section>.el-embed-image>p>.internal-embed img{object-fit:var(--image-grid-fit);height:100%}.img-grid .img-grid-ratio .markdown-preview-section>.el-embed-image>p>.internal-embed img,.img-grid.img-grid-ratio .markdown-preview-section>.el-embed-image>p>.internal-embed img{object-fit:contain;height:100%;align-self:center}@media (max-width:400pt){.el-embed-image{margin-top:.25rem}.img-grid .markdown-preview-section>.el-embed-image>p{grid-column-gap:0.25rem}}body:not(.zoom-off) .view-content div:not(.canvas-node-content) img{max-width:100%;cursor:zoom-in}body:not(.zoom-off) .view-content img:active{cursor:zoom-out}body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{background-color:var(--background-primary);padding:10px}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active,body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{aspect-ratio:unset;cursor:zoom-out;display:block;z-index:200;position:fixed;max-height:calc(100% + 1px);max-width:100%;height:calc(100% + 1px);width:100%;object-fit:contain;margin:-.5px auto 0!important;text-align:center;padding:0;left:0;right:0;bottom:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active:after{background-color:var(--background-primary);opacity:.9;content:" ";height:calc(100% + 1px);width:100%;position:fixed;left:0;right:1px;z-index:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active img{aspect-ratio:unset;top:50%;z-index:99;transform:translateY(-50%);padding:0;margin:0 auto;width:calc(100% - 20px);max-height:95vh;object-fit:contain;left:0;right:0;bottom:0;position:absolute;opacity:1}.labeled-nav.is-fullscreen:not(.colorful-frame){--labeled-nav-top-margin:0}.labeled-nav{--labeled-nav-top-margin:var(--header-height)}.labeled-nav.is-translucent .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{background-color:transparent}.labeled-nav.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav.mod-macos .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before{-webkit-app-region:drag;position:absolute;width:calc(100% - var(--divider-width));height:calc(var(--header-height) - var(--tab-outline-width));border-bottom:0 solid var(--tab-outline-color)}.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed){border:none;--tab-outline-width:0px}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos:not(.hider-ribbon) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{border-bottom:var(--tab-outline-width) solid var(--tab-outline-color)}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav.mod-macos:not(.hider-ribbon) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav:not(.is-hidden-frameless) .workspace-ribbon.mod-left:not(.is-collapsed){--tab-outline-width:1px}.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{position:absolute;top:0;content:" "}.labeled-nav.hider-ribbon.mod-macos.is-hidden-frameless:not(.is-fullscreen):not(.is-popout-window) .mod-left-split:not(.is-sidedock-collapsed) .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav:not(.is-grabbing):not(.is-fullscreen).is-hidden-frameless .mod-top .workspace-tab-header-container{-webkit-app-region:no-drag}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-spacer{display:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-inner-title{display:inline-block;font-weight:500;font-size:var(--font-adaptive-smaller)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{position:relative;flex-direction:column-reverse!important;height:auto;width:100%}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .sidebar-toggle-button.mod-left{position:absolute;justify-content:flex-end;padding-right:var(--size-4-2);top:0;right:0}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{padding-top:var(--size-4-2);margin-top:var(--labeled-nav-top-margin);flex-direction:column!important;background-color:var(--background-secondary)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-container-inner{flex-grow:1;gap:0;padding:var(--size-4-2) var(--size-4-3)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header{--icon-color:var(--text-muted);--tab-text-color:var(--text-muted);--tab-text-color-focused:var(--text-muted);padding:0;margin-bottom:2px;border:none;height:auto}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:not(:hover){background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover{opacity:1;--tab-text-color-active:var(--text-normal);--tab-text-color-focused:var(--text-normal);--tab-text-color-focused-active:var(--text-normal);--tab-text-color-focused-active-current:var(--text-normal);--icon-color:var(--text-normal)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header .workspace-tab-header-inner{gap:var(--size-2-3);padding:var(--size-4-1) var(--size-4-2);box-shadow:none;border:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.has-active-menu:hover,.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover{background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover .workspace-tab-header-inner,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:var(--nav-item-background-hover)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover .workspace-tab-header-inner-icon{color:var(--icon-color-active)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{border:none;padding:0}body{--table-max-width:var(--max-width);--left-margin-table:auto}.maximize-tables-auto{--table-max-width:auto;--left-margin-table:max( calc(50% + var(--folding-offset)/2 - var(--line-width-adaptive)/2), calc(50% + var(--folding-offset)/2 - var(--max-width)/2) )}.maximize-tables-auto.table-100,.maximize-tables-auto.table-max,.maximize-tables-auto.table-wide{--table-max-width:var(--max-width);--left-margin-table:auto}.maximize-tables-off{--table-max-width:auto;--left-margin-table:max( calc(50% + var(--folding-offset)/2 - var(--line-width-adaptive)/2), calc(50% + var(--folding-offset)/2 - var(--max-width)/2))}.maximize-tables-off.table-wide{--left-margin-table:max( calc(50% + var(--folding-offset)/2 - var(--line-width-wide)/2), calc(50% + var(--folding-offset)/2 - var(--max-width)/2))}.maximize-tables-off.table-max{--left-margin-table:calc(50% + var(--folding-offset)/2 - var(--max-width)/2)}.maximize-tables-off.table-100{--left-margin-table:0}.contextual-typography .markdown-preview-view.markdown-preview-view.is-readable-line-width .markdown-preview-sizer{display:flex;flex-direction:column;width:100%;max-width:100%;padding-left:0;padding-top:0}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer{align-items:center;padding-left:0}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div{margin-left:auto;margin-right:auto;max-width:var(--max-width);width:var(--line-width-adaptive)}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-embed .markdown-preview-sizer>div{max-width:100%}.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataview,.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataviewjs,.contextual-typography .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-table{width:100%;max-width:100%;overflow-x:auto}.el-lang-dataview .block-language-dataview .contains-task-list,.el-lang-dataviewjs .block-language-dataviewjs .contains-task-list{max-width:100%}.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.is-readable-line-width .el-table table{width:var(--table-max-width);max-width:var(--line-width-adaptive);margin:0 auto .5rem}.markdown-embed .el-lang-dataview .dataview.table-view-table,.markdown-embed .el-table table{width:100%}.markdown-preview-view.table-100.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.markdown-preview-view.table-100.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.markdown-preview-view.table-100.is-readable-line-width .el-table table,.table-100 .el-lang-dataview .dataview.table-view-table,.table-100 .el-lang-dataviewjs .dataview.table-view-table,.table-100 .el-table table{max-width:100%!important;width:100%!important}.markdown-preview-view.table-max .el-lang-dataview .dataview.table-view-table,.markdown-preview-view.table-max .el-lang-dataviewjs .dataview.table-view-table,.markdown-preview-view.table-max .el-table table,.table-max .el-lang-dataview .dataview.table-view-table,.table-max .el-lang-dataviewjs .dataview.table-view-table,.table-max .el-table table{max-width:100%!important}.markdown-preview-view.is-readable-line-width.table-wide .el-lang-dataview .dataview.table-view-table,.markdown-preview-view.is-readable-line-width.table-wide .el-lang-dataviewjs .dataview.table-view-table,.markdown-preview-view.is-readable-line-width.table-wide .el-table table,.table-wide .markdown-preview-view.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.table-wide .markdown-preview-view.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.table-wide .markdown-preview-view.is-readable-line-width .el-table table{max-width:var(--line-width-wide)!important}.table-100 .dataview.table-view-table td:first-child,.table-100 .dataview.table-view-table th:first-child,.table-100 .markdown-source-view.mod-cm6 td:first-child,.table-100 .markdown-source-view.mod-cm6 th:first-child,.table-100 table td:first-child,.table-100 table th:first-child{padding-left:20px!important}.table-100 .dataview.table-view-table td:last-child,.table-100 .dataview.table-view-table th:last-child,.table-100 table td:last-child,.table-100 table th:last-child{padding-right:20px}.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .chart-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .iframe-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .img-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography .map-max.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.chart-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.iframe-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.img-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.map-max .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet{width:100%}.contextual-typography .markdown-preview-view.is-readable-line-width.chart-wide .markdown-preview-sizer>.el-lang-chart,.contextual-typography .markdown-preview-view.is-readable-line-width.iframe-wide .markdown-preview-sizer>.el-iframe,.contextual-typography .markdown-preview-view.is-readable-line-width.img-wide .markdown-preview-sizer>.el-embed-image,.contextual-typography .markdown-preview-view.is-readable-line-width.map-wide .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.chart-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.iframe-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.img-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.map-wide .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet{width:var(--line-width-wide)}.contextual-typography .markdown-preview-view.iframe-100 .markdown-preview-sizer>.el-iframe,.contextual-typography .markdown-preview-view.img-100 .markdown-preview-sizer>.el-embed-image,.contextual-typography .markdown-preview-view.is-readable-line-width.chart-100 .markdown-preview-sizer>.el-lang-chart,.contextual-typography .markdown-preview-view.is-readable-line-width.map-100 .markdown-preview-sizer>.el-lang-leaflet,.contextual-typography.chart-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-chart,.contextual-typography.iframe-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-iframe,.contextual-typography.img-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-embed-image,.contextual-typography.map-100 .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-leaflet{width:100%;max-width:100%}.is-readable-line-width .el-lang-dataview .dataview.table-view-table,.is-readable-line-width .el-lang-dataviewjs .dataview.table-view-table,.is-readable-line-width .el-table table{max-width:calc(var(--line-width-adaptive) - var(--folding-offset));margin-left:var(--left-margin-table)!important}.chart-100 .el-lang-chart,.chart-max .el-lang-chart,.chart-wide .el-lang-chart,.embed-strict .el-embed-page p,.iframe-100 .el-iframe,.iframe-max .el-iframe,.iframe-wide .el-iframe,.img-100 .el-embed-image,.img-max .el-embed-image,.img-wide .el-embed-image,.map-100 .el-lang-leaflet,.map-max .el-lang-leaflet,.map-wide .el-lang-leaflet,.table-100 .el-lang-dataview,.table-100 .el-lang-dataviewjs,.table-100 .el-table,.table-max .el-lang-dataview,.table-max .el-lang-dataviewjs,.table-max .el-table,.table-wide .el-lang-dataview,.table-wide .el-lang-dataviewjs,.table-wide .el-table{--folding-offset:0px}.chart-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.chart-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.img-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.img-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.map-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.map-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-max .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table,.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-max.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table{width:var(--max-width)!important;max-width:var(--max-width)!important;transform:none!important;padding-left:0;margin:0 auto!important}.chart-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.chart-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.img-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.img-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.map-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.map-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-wide .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table,.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-wide.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-table-widget>table{width:var(--line-width-wide)!important;max-width:var(--max-width);transform:none!important;padding-left:0;margin:0 auto!important}.chart-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.chart-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-chart,.img-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.img-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>.image-embed,.img-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-content>img,.map-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.map-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .block-language-leaflet,.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-100 .markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width table,.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block.cm-table-widget>div:not(.edit-block-button),.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataview,.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.block-language-dataviewjs,.table-100.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width table{width:100%!important;max-width:100%!important;transform:none!important;margin:0 auto!important;padding-left:0}@media (max-width:400pt){.markdown-preview-view .el-lang-dataview td:first-child .markdown-preview-view .el-lang-dataviewjs th:first-child,.markdown-preview-view .el-lang-dataview th:first-child,.markdown-preview-view .el-lang-dataviewjs td:first-child,.markdown-preview-view .el-table td:first-child,.markdown-preview-view .el-table th:first-child{padding-left:6vw}.markdown-preview-view .el-lang-dataview td:last-child,.markdown-preview-view .el-lang-dataview th:last-child,.markdown-preview-view .el-lang-dataviewjs td:last-child,.markdown-preview-view .el-lang-dataviewjs th:last-child,.markdown-preview-view .el-table td:last-child,.markdown-preview-view .el-table th:last-child{padding-right:6vw}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataview .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataviewjs,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-table{padding-left:0;padding-right:0}.markdown-preview-view .table-view-table table,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataview .markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-lang-dataviewjs,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.el-table{width:100%}}@media (max-width:400pt){.is-mobile{--folding-offset:0px}}.markdown-preview-view.wide,.markdown-source-view.wide{--line-width-adaptive:var(--line-width-wide)}.markdown-preview-view.max,.markdown-source-view.max{--line-width-adaptive:300em;--line-width-wide:300em}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer{max-width:var(--max-width);width:var(--line-width-adaptive);padding-left:0}.markdown-source-view.is-readable-line-width .CodeMirror{padding-left:0;padding-right:0;margin:0 auto 0 auto;width:var(--line-width-adaptive);max-width:var(--max-width)}.markdown-reading-view .markdown-preview-view:not(.is-readable-line-width)>.markdown-preview-sizer{max-width:var(--max-width);margin:0 auto;padding-left:var(--folding-offset)}.is-mobile .markdown-source-view.mod-cm6 .cm-gutters{padding-right:0}.minimal-readable-off .view-header-title-container{width:var(--max-width)}.markdown-source-view.mod-cm6:not(.is-readable-line-width) .cm-contentContainer,.markdown-source-view.mod-cm6:not(.is-readable-line-width) .inline-title{max-width:var(--max-width);margin:0 0 0 calc(50% - var(--max-width)/ 2)!important;padding-left:var(--folding-offset)}.markdown-source-view.mod-cm6 .cm-content>.cm-embed-block[contenteditable=false]{overflow-x:auto}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div[data-block-language=dataview],.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div[data-block-language=dataviewjs]{padding-left:var(--folding-offset)}.internal-embed>.markdown-embed,.popover:not(.hover-editor){--folding-offset:0}.markdown-source-view.mod-cm6.is-readable-line-width .inline-title{width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(var(--max-width) - var(--folding-offset));margin-right:auto;margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer{max-width:100%}.markdown-source-view.mod-cm6.is-readable-line-width .cm-line:not(.HyperMD-table-row){max-width:calc(var(--max-width) - var(--folding-offset))}.is-live-preview.is-readable-line-width .cm-embed-block table.dataview,.is-live-preview.is-readable-line-width.embed-strict .internal-embed .markdown-preview-sizer,.is-readable-line-width .block-language-dataview table.dataview,.is-readable-line-width .block-language-dataviewjs table.dataview,.markdown-preview-view.is-readable-line-width .dataview.result-group .contains-task-list,.markdown-source-view.is-live-preview.is-readable-line-width table.NLT__table{width:100%;max-width:100%;transform:none;margin-left:auto!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-line.HyperMD-list-line .internal-embed.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line>.internal-embed{margin-left:0!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-content>img:not([width]),.markdown-source-view.mod-cm6.is-readable-line-width .cm-embed-block.cm-callout>.callout,.markdown-source-view.mod-cm6.is-readable-line-width .cm-html-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line.HyperMD-codeblock,.markdown-source-view.mod-cm6.is-readable-line-width .cm-line.HyperMD-quote,.markdown-source-view.mod-cm6.is-readable-line-width .embedded-backlinks,.markdown-source-view.mod-cm6.is-readable-line-width .internal-embed,.markdown-source-view.mod-cm6.is-readable-line-width table{width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(var(--max-width) - var(--folding-offset));margin-right:auto;margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-line>.cm-html-embed{--folding-offset:0}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content>img[width]{max-width:var(--max-width);margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-embed-block>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-embed-block>mjx-container,.markdown-source-view.mod-cm6.is-readable-line-width .mod-empty{width:calc(var(--line-width-adaptive) - var(--folding-offset))!important;max-width:calc(var(--max-width) - var(--folding-offset));margin-right:auto;margin-left:max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--folding-offset) - var(--max-width)/ 2))!important}.markdown-source-view.mod-cm6.is-readable-line-width .HyperMD-list-line{width:calc(var(--line-width-adaptive) - var(--folding-offset) - var(--list-edit-offset));max-width:calc(var(--max-width) - var(--folding-offset) - var(--list-edit-offset));margin-right:auto;margin-left:max(calc(50% + var(--list-edit-offset) + var(--folding-offset) - var(--line-width-adaptive)/ 2),calc(50% + var(--list-edit-offset) + var(--folding-offset) - var(--max-width)/ 2))!important}body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.dataview-container>.contains-task-list,body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.list-view-ul,body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.result-group>.contains-task-list,body:not(.table-100):not(.table-max):not(.table-wide) .is-live-preview.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview>h4{max-width:100%;margin-right:auto;margin-left:auto;transform:none}body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataview h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataview>h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h1,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h2,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h3,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>h4,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .block-language-dataviewjs>p,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.dataview-container>.contains-task-list,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.dataview-error,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.list-view-ul,body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view.is-readable-line-width:not(.table-100):not(.table-max):not(.table-wide) .dataview.result-group{width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:var(--max-width);margin-right:auto;margin-left:auto}.is-live-preview.is-readable-line-width .block-language-dataviewjs h4,.is-live-preview.is-readable-line-width .dataview .contains-task-list,.is-live-preview.is-readable-line-width .dataview.dataview-container .contains-task-list,.is-live-preview.is-readable-line-width .dataview.list-view-ul,.is-live-preview.is-readable-line-width .dataview>h4{--folding-offset:10px;width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(100% - var(--folding-offset));transform:translateX(calc(var(--folding-offset)/2));margin-right:auto;margin-left:auto}.table-100 .is-live-preview.is-readable-line-width .dataview .contains-task-list,.table-100 .is-live-preview.is-readable-line-width .dataview.list-view-ul,.table-100 .is-live-preview.is-readable-line-width .dataview>h4,.table-100.is-live-preview.is-readable-line-width .dataview .contains-task-list,.table-100.is-live-preview.is-readable-line-width .dataview.list-view-ul,.table-100.is-live-preview.is-readable-line-width .dataview>h4{max-width:calc(var(--max-width) - var(--folding-offset))}.markdown-preview-view.is-readable-line-width .block-language-dataview h4,.markdown-preview-view.is-readable-line-width .block-language-dataview>h4,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs h4,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h1,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h2,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h3,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>h4,.markdown-preview-view.is-readable-line-width .block-language-dataviewjs>p,.markdown-preview-view.is-readable-line-width .dataview .contains-task-list,.markdown-preview-view.is-readable-line-width .dataview.dataview-error,.markdown-preview-view.is-readable-line-width .dataview.list-view-ul,.markdown-preview-view.is-readable-line-width .dataview.result-group{--folding-offset:10px;width:calc(var(--line-width-adaptive) - var(--folding-offset));max-width:calc(var(--max-width) - var(--folding-offset));margin-left:auto;margin-right:max(calc(50% - var(--line-width-adaptive)/ 2),calc(50% - var(--max-width)/ 2))}body:not(.links-int-on){--link-decoration:none}body:not(.links-ext-on){--link-external-decoration:none}body:not(.sidebar-color) .mod-right-split{--background-secondary:var(--background-primary)}body:not(.sidebar-color) .mod-right-split :not(.mod-top) .workspace-tab-header-container{--tab-container-background:var(--background-primary)}body{--minimal-tab-text-color:var(--text-muted);--minimal-tab-text-color-active:var(--text-normal)}.workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color);--tab-text-color-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active-current:var(--minimal-tab-text-color-active)}.tabs-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-underline .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0;--tab-outline-width:0px;--tab-background-active:transparent}.tabs-underline .mod-root .workspace-tab-header-container{border-bottom:1px solid var(--divider-color)}.tabs-underline .mod-root .workspace-tab-header{border-bottom:2px solid transparent}.tabs-underline .mod-root .workspace-tab-header:hover{border-bottom:2px solid var(--ui2)}.tabs-underline .mod-root .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.tabs-underline .mod-root .workspace-tab-header.is-active{border-bottom:2px solid var(--ax3)}.tabs-underline .mod-root .workspace-tab-header-inner:hover{background-color:transparent}body:not(.sidebar-tabs-underline):not(.sidebar-tabs-index):not(.sidebar-tabs-square) .workspace>.workspace-split:not(.mod-root) .workspace-tabs:not(.mod-top) .workspace-tab-header-container{--tab-outline-width:0}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked){--tab-background:var(--frame-outline-color);--tab-outline-width:1px}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-close-button,.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover .workspace-tab-header-inner-close-button{color:var(--minimal-tab-text-color-active)}.tabs-modern.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{--tab-outline-width:0px}.tabs-modern .mod-root{--tab-container-background:var(--background-primary)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked){--tab-background:var(--background-modifier-hover);--tab-height:calc(var(--header-height) - 14px);--tab-outline-width:0px}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::before{display:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner{align-items:center;margin:0;padding:2px var(--size-4-2) 0 var(--size-4-1)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-title{text-overflow:ellipsis;-webkit-mask-image:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header{background:0 0;border-radius:5px;border:none;box-shadow:none;height:var(--tab-height);margin-left:var(--size-4-1);padding:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-title{color:var(--tab-text-color-active)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active.mod-active,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover{opacity:1;background-color:var(--tab-background)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-new-tab{margin-right:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner{padding:0 var(--size-4-1) 0 var(--size-4-2);border:1px solid transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active:not(.mod-active) .workspace-tab-header-inner,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(:hover):not(.mod-active) .workspace-tab-header-inner{border:1px solid var(--tab-outline-color)}.tabs-modern.sidebar-tabs-default .mod-right-split,.tabs-modern.sidebar-tabs-wide .mod-right-split{--tab-outline-width:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:0;margin:0;flex-grow:1;gap:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header{flex-grow:1;border-radius:0;max-width:100px}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner{border-bottom:2px solid transparent;border-radius:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover{border-color:var(--ui2)}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner{border-color:var(--ax3);padding-top:1px}.sidebar-tabs-square .mod-left-split,.sidebar-tabs-square .mod-right-split{--tab-radius:0px}.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-index:not(.labeled-nav) .mod-left-split,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-square:not(.labeled-nav) .mod-left-split{--tab-background-active:var(--background-secondary)}.sidebar-tabs-index .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner,.sidebar-tabs-square .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:1px var(--size-4-2) 0;margin:6px 0 calc(var(--tab-outline-width) * -1);flex-grow:1}.sidebar-tabs-index .mod-right-split .workspace-tab-header,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header,.sidebar-tabs-square .mod-right-split .workspace-tab-header,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1;max-width:100px;border-radius:var(--tab-radius) var(--tab-radius) 0 0}.sidebar-tabs-index .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active,.sidebar-tabs-square .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{box-shadow:0 0 0 var(--tab-outline-width) var(--tab-outline-color);color:var(--tab-text-color-active);background-color:var(--tab-background-active)}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{flex-grow:1;border:1px solid var(--tab-outline-color);padding:3px;margin:6px 8px 6px;border-radius:4px}.sidebar-tabs-wide .mod-right-split .workspace-tab-header,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1}.sidebar-tabs-wide .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{border-color:transparent}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.full-file-names{--nav-item-white-space:normal}body:not(.full-file-names) .tree-item-inner{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;align-self:center}.theme-dark,.theme-light{--h1l:var(--ui1);--h2l:var(--ui1);--h3l:var(--ui1);--h4l:var(--ui1);--h5l:var(--ui1);--h6l:var(--ui1)}.h1-l .markdown-reading-view h1:not(.embedded-note-title),.h1-l .mod-cm6 .cm-editor .HyperMD-header-1{border-bottom:1px solid var(--h1l);padding-bottom:.4em;margin-block-end:0.6em}.h2-l .markdown-reading-view h2,.h2-l .mod-cm6 .cm-editor .HyperMD-header-2{border-bottom:1px solid var(--h2l);padding-bottom:.4em;margin-block-end:0.6em}.h3-l .markdown-reading-view h3,.h3-l .mod-cm6 .cm-editor .HyperMD-header-3{border-bottom:1px solid var(--h3l);padding-bottom:.4em;margin-block-end:0.6em}.h4-l .markdown-reading-view h4,.h4-l .mod-cm6 .cm-editor .HyperMD-header-4{border-bottom:1px solid var(--h4l);padding-bottom:.4em;margin-block-end:0.6em}.h5-l .markdown-reading-view h5,.h5-l .mod-cm6 .cm-editor .HyperMD-header-5{border-bottom:1px solid var(--h5l);padding-bottom:.4em;margin-block-end:0.6em}.h6-l .markdown-reading-view h6,.h6-l .mod-cm6 .cm-editor .HyperMD-header-6{border-bottom:1px solid var(--h6l);padding-bottom:.4em;margin-block-end:0.6em}.is-tablet .workspace-drawer{padding-top:0}.is-tablet .workspace-drawer:not(.is-pinned){margin:30px 16px 0;height:calc(100vh - 48px);border-radius:15px;border:none}.is-tablet .workspace-drawer-ribbon{background-color:var(--background-primary);border-right:1px solid var(--background-modifier-border)}.is-tablet .workspace-drawer-header{padding-top:var(--size-4-4)}.is-mobile{--interactive-normal:var(--background-secondary);--background-modifier-form-field:var(--background-secondary);--background-modifier-form-field-highlighted:var(--background-secondary)}.is-mobile .markdown-source-view.mod-cm6 .cm-gutters{margin-left:0}.is-mobile .workspace-drawer.mod-left.is-pinned{max-width:var(--mobile-left-sidebar-width);min-width:150pt}.is-mobile .workspace-drawer.mod-right.is-pinned{max-width:var(--mobile-right-sidebar-width);min-width:150pt}.backlink-pane>.tree-item-self,.backlink-pane>.tree-item-self:hover,.outgoing-link-pane>.tree-item-self,.outgoing-link-pane>.tree-item-self:hover{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500}body{--canvas-dot-pattern:var(--background-modifier-border-hover)}.canvas-node-label{font-size:var(--font-adaptive-small)}.canvas-edges :not(.is-themed) path.canvas-display-path{stroke:var(--background-modifier-border-focus)}.canvas-edges :not(.is-themed) polyline.canvas-path-end{stroke:var(--background-modifier-border-focus);fill:var(--background-modifier-border-focus)}.canvas-node-container{border:1.5px solid var(--background-modifier-border-focus)}.node-insert-event.mod-inside-iframe{--max-width:100%;--folding-offset:0px}.node-insert-event.mod-inside-iframe .cm-editor .cm-content{padding-top:0}.is-mobile .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{display:none}body:not(.is-mobile) .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest)}.nav-buttons-container{justify-content:flex-start}.nav-file-tag{padding-top:.2em;background-color:transparent;color:var(--text-faint)}.nav-file .is-active .nav-file-tag,.nav-file:hover .nav-file-tag{color:var(--text-muted)}input.prompt-input,input.prompt-input:focus,input.prompt-input:focus-visible,input.prompt-input:hover{border-color:rgba(var(--mono-rgb-100),.05)}.is-mobile .mod-publish .modal-content{display:unset;padding:10px 10px 10px;margin-bottom:120px;overflow-x:hidden}.is-mobile .mod-publish .button-container,.is-mobile .modal.mod-publish .modal-button-container{padding:10px 15px 30px;margin-left:0;left:0}.is-mobile .modal.mod-publish .modal-title{padding:10px 20px;margin:0 -10px;border-bottom:1px solid var(--background-modifier-border)}.is-mobile .publish-site-settings-container{margin-right:0;padding:0}.is-mobile .modal.mod-publish .modal-content .publish-sections-container{margin-right:0;padding-right:0}@media (max-width:400pt){.is-mobile .publish-changes-info,.is-mobile .publish-section-header{flex-wrap:wrap;border:none}.is-mobile .publish-changes-info .publish-changes-add-linked-btn{flex-basis:100%;margin-top:10px}.is-mobile .publish-section-header-text{flex-basis:100%;margin-bottom:10px;margin-left:20px;margin-top:-8px}.is-mobile .publish-section{background:var(--background-secondary);border-radius:10px;padding:12px 12px 1px}.is-mobile .publish-changes-switch-site{flex-grow:0;margin-right:10px}}.release-notes-view .cm-scroller.is-readable-line-width{width:var(--line-width-adaptive);max-width:var(--max-width);margin:0 auto}.search-results-info{border-bottom:none}@media (max-width:400pt){.is-mobile .modal.mod-sync-log{width:100vw;height:100vh;max-height:calc(100vh - 32px);box-shadow:0 -32px 0 32px var(--background-primary);bottom:0;padding-bottom:10px}}.obsidian-banner.solid{border-bottom:var(--divider-width) solid var(--divider-color)}.contextual-typography .markdown-preview-view div.has-banner-icon.obsidian-banner-wrapper{overflow:visible}.theme-dark .markdown-preview-view img.emoji{opacity:1}body.theme-dark .button-default,body.theme-light .button-default{border:none;box-shadow:none;height:var(--input-height);background:var(--background-modifier-hover);color:var(--text-normal);font-size:revert;font-weight:500;transform:none;transition:all .1s linear;padding:0 20px}body.theme-dark .button-default:hover,body.theme-light .button-default:hover{border:none;background:var(--background-modifier-border-hover);box-shadow:none;transform:none;transition:all .1s linear}body.theme-dark .button-default:active,body.theme-dark .button-default:focus,body.theme-light .button-default:active,body.theme-light .button-default:focus{box-shadow:none}body .button-default.blue{background-color:var(--color-blue)!important}.button-default.red{background-color:var(--color-red)!important}.button-default.green{background-color:var(--color-green)!important}.button-default.yellow{background-color:var(--color-yellow)!important}.button-default.purple{background-color:var(--color-purple)!important}.workspace-leaf-content[data-type=calendar] .view-content{padding:5px 0 0 0}.mod-root #calendar-container{width:var(--line-width-adaptive);max-width:var(--max-width);margin:0 auto;padding:0}#calendar-container{padding:0 var(--size-4-4) var(--size-4-1);--color-background-day-empty:var(--background-secondary-alt);--color-background-day-active:var(--background-modifier-hover);--color-background-day-hover:var(--background-modifier-hover);--color-dot:var(--text-faint);--color-text-title:var(--text-normal);--color-text-heading:var(--text-muted);--color-text-day:var(--text-normal);--color-text-today:var(--text-normal);--color-arrow:var(--text-faint);--color-background-day-empty:transparent}#calendar-container .table{border-collapse:separate;table-layout:fixed}#calendar-container h2{font-weight:400;font-size:var(--h2)}#calendar-container .arrow{cursor:var(--cursor);width:22px;border-radius:4px;padding:3px 7px}#calendar-container .arrow svg{width:12px;height:12px;color:var(--text-faint);opacity:.7}#calendar-container .arrow:hover{fill:var(--text-muted);color:var(--text-muted);background-color:var(--background-modifier-hover)}#calendar-container .arrow:hover svg{color:var(--text-muted);opacity:1}#calendar-container tr th{padding:2px 0 4px;font-weight:500;letter-spacing:.1em;font-size:var(--font-adaptive-smallest)}#calendar-container tr th:first-child{padding-left:0!important}#calendar-container tr td{padding:2px 0 0 0;border-radius:var(--radius-m);cursor:var(--cursor);border:1px solid transparent;transition:none}#calendar-container tr td:first-child{padding-left:0!important}#calendar-container .nav{padding:0;margin:var(--size-4-2) var(--size-4-1)}#calendar-container .dot{margin:0}#calendar-container .month,#calendar-container .title,#calendar-container .year{font-size:var(--font-adaptive-normal);font-weight:400;color:var(--text-normal)}#calendar-container .today,#calendar-container .today.active{color:var(--text-accent);font-weight:600}#calendar-container .today .dot,#calendar-container .today.active .dot{fill:var(--text-accent)}#calendar-container .active .task{stroke:var(--text-faint)}#calendar-container .active{color:var(--text-normal)}#calendar-container .reset-button{text-transform:none;letter-spacing:0;font-size:var(--font-adaptive-smaller);font-weight:500;color:var(--text-muted);border-radius:4px;margin:0;padding:2px 8px}#calendar-container .reset-button:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}#calendar-container .day,#calendar-container .reset-button{cursor:var(--cursor)}#calendar-container .day.adjacent-month{color:var(--text-faint);opacity:1}#calendar-container .day{padding:2px 4px 4px;font-size:calc(var(--font-adaptive-normal) - 2px)}#calendar-container .active,#calendar-container .active.today,#calendar-container .day:hover,#calendar-container .week-num:hover{background-color:var(--color-background-day-active)}#calendar-container .active .dot{fill:var(--text-faint)}#calendar-container .active .task{stroke:var(--text-faint)}.block-language-chart canvas,.block-language-dataviewjs canvas{margin:1em 0}.theme-dark,.theme-light{--chart-color-1:var(--color-blue);--chart-color-2:var(--color-red);--chart-color-3:var(--color-yellow);--chart-color-4:var(--color-green);--chart-color-5:var(--color-orange);--chart-color-6:var(--color-purple);--chart-color-7:var(--color-cyan);--chart-color-8:var(--color-pink)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact,.checklist-plugin-main .group .page,.checklist-plugin-main .group svg{cursor:var(--cursor)}.workspace .view-content .checklist-plugin-main{padding:10px 10px 15px 15px;--todoList-togglePadding--compact:2px;--todoList-listItemMargin--compact:2px}.checklist-plugin-main .title{font-weight:400;color:var(--text-muted);font-size:var(--font-adaptive-small)}.checklist-plugin-main .group svg{fill:var(--text-faint)}.checklist-plugin-main .group svg:hover{fill:var(--text-normal)}.checklist-plugin-main .group .title:hover{color:var(--text-normal)}.checklist-plugin-main .group:not(:last-child){border-bottom:1px solid var(--background-modifier-border)}.checklist-plugin-main .group{padding:0 0 2px 0}.checklist-plugin-main .group .classic:last-child,.checklist-plugin-main .group .compact:last-child{margin-bottom:10px}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{font-size:var(--font-adaptive-small)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{background:0 0;border-radius:0;margin:1px auto;padding:0}.checklist-plugin-main .group .classic .content{padding:0}.checklist-plugin-main .group .classic:hover,.checklist-plugin-main .group .compact:hover{background:0 0}.markdown-preview-view.checklist-plugin-main ul>li:not(.task-list-item)::before{display:none}.checklist-plugin-main .group .compact>.toggle .checked{background:var(--text-accent);top:-1px;left:-1px;height:18px;width:18px}.checklist-plugin-main .compact .toggle:hover{opacity:1!important}.checklist-plugin-main .group .count{font-size:var(--font-adaptive-smaller);padding:0;background:0 0;font-weight:400;color:var(--text-faint)}.checklist-plugin-main .group .group-header:hover .count{color:var(--text-muted)}.checklist-plugin-main .group .checkbox{border:1px solid var(--background-modifier-border-hover);min-height:18px;min-width:18px;height:18px;width:18px}.checklist-plugin-main .group .checkbox:hover{border:1px solid var(--background-modifier-border-focus)}.checklist-plugin-main button:active,.checklist-plugin-main button:focus,.checklist-plugin-main button:hover{box-shadow:none!important}.checklist-plugin-main button.collapse{padding:0}body:not(.is-mobile) .checklist-plugin-main button.collapse svg{width:18px;height:18px}.is-mobile .checklist-plugin-main .group-header .title{flex-grow:1;flex-shrink:0}.is-mobile .checklist-plugin-main button{width:auto}.is-mobile .checklist-plugin-main.markdown-preview-view ul{padding-inline-start:0}.is-mobile .workspace .view-content .checklist-plugin-main{padding-bottom:50px}body #cMenuModalBar{box-shadow:0 2px 20px var(--shadow-color)}body #cMenuModalBar .cMenuCommandItem{cursor:var(--cursor)}body #cMenuModalBar button.cMenuCommandItem:hover{background-color:var(--background-modifier-hover)}.MiniSettings-statusbar-button{padding-top:0;padding-bottom:0}.el-hr hr{margin:1rem 0}.el-p+.el-h1,.el-p+.el-h2{margin-top:.75rem}.el-h1+.el-h1,.el-h1+.el-h2,.el-h2+.el-h2,.el-hr+.el-h1,.el-hr+.el-h2{margin-top:0}.el-lang-dataview+.el-p,.el-lang-dataviewjs+.el-p,.el-ol+.el-lang-dataview,.el-ol+.el-lang-dataviewjs,.el-ol+.el-table,.el-p+.el-table,.el-p:not(.el-lang-dataview)+.el-lang-dataview,.el-p:not(.el-lang-dataviewjs)+.el-lang-dataviewjs,.el-ul+.el-lang-dataview,.el-ul+.el-lang-dataviewjs,.el-ul+.el-table{margin-top:var(--spacing-p)}.el-div+.el-h1,.el-embed-image+.el-p:not(.el-embed-image),.el-iframe+.el-p,.el-lang-leaflet,.el-lang-leaflet+*,.el-p+.el-iframe,.el-p:not(.el-embed-image)+.el-embed-image,.el-pre+.el-h1{margin-top:1rem}.markdown-preview-view .table-view-table>thead>tr>th,body .table-view-table>thead>tr>th{font-weight:400;font-size:var(--table-text-size);color:var(--text-muted);border-bottom:1px solid var(--background-modifier-border);cursor:var(--cursor)}table.dataview ul.dataview-ul{list-style:none;padding-inline-start:0;margin-block-start:0em!important;margin-block-end:0em!important}.markdown-preview-view .table-view-table>tbody>tr>td,.markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td{max-width:var(--max-col-width)}body .dataview.small-text{color:var(--text-faint)}body:not(.row-hover) .dataview.task-list-basic-item:hover,body:not(.row-hover) .dataview.task-list-item:hover,body:not(.row-hover) .table-view-table>tbody>tr:hover{background-color:transparent!important;box-shadow:none}body.row-hover .dataview.task-list-basic-item:hover,body.row-hover .dataview.task-list-item:hover,body.row-hover .table-view-table>tbody>tr:hover{background-color:var(--table-row-background-hover)!important}body .dataview-error{margin-top:16px;background-color:transparent}.dataview.dataview-error,.markdown-source-view.mod-cm6 .cm-content .dataview.dataview-error{color:var(--text-muted)}body div.dataview-error-box{min-height:0;border:none;background-color:transparent;font-size:var(--table-text-size);border-radius:var(--radius-m);padding:15px 0}body div.dataview-error-box p{margin-block-start:0;margin-block-end:0;color:var(--text-faint)}.markdown-source-view div.dataview-error-box{margin-top:15px}.trim-cols .markdown-preview-view .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>thead>tr>th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}ul .dataview .task-list-basic-item:hover,ul .dataview .task-list-item:hover{background-color:transparent;box-shadow:none}body .dataview.result-group{padding-left:0}body .dataview .inline-field-standalone-value,body .dataview.inline-field-key,body .dataview.inline-field-value{font-family:var(--font-text);font-size:calc(var(--font-adaptive-normal) - 2px);background:0 0;color:var(--text-muted)}body .dataview.inline-field-key{padding:0}body .dataview .inline-field-standalone-value{padding:0}body .dataview.inline-field-key::after{margin-left:3px;content:"|";color:var(--background-modifier-border)}body .dataview.inline-field-value{padding:0 1px 0 3px}.markdown-preview-view .block-language-dataview table.calendar th{border:none;cursor:default;background-image:none}.markdown-preview-view .block-language-dataview table.calendar .day{font-size:var(--font-adaptive-small)}.database-plugin__navbar,.database-plugin__scroll-container,.database-plugin__table{width:100%}.dbfolder-table-container{--font-adaptive-normal:var(--table-text-size);--font-size-text:12px}.database-plugin__cell_size_wide .database-plugin__td{padding:.15rem}.database-plugin__table{border-spacing:0!important}.MuiAppBar-root{background-color:transparent!important}.workspace-leaf-content .view-content.dictionary-view-content{padding:0}div[data-type=dictionary-view] .contents{padding-bottom:2rem}div[data-type=dictionary-view] .results>.container{background-color:transparent;margin-top:0;max-width:none;padding:0 10px}div[data-type=dictionary-view] .error,div[data-type=dictionary-view] .errorDescription{text-align:left;font-size:var(--font-adaptive-small);padding:10px 12px 0;margin:0}div[data-type=dictionary-view] .results>.container h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 0 2px;margin-bottom:6px}div[data-type=dictionary-view] .container .main{border-radius:0;background-color:transparent;font-size:var(--font-adaptive-smaller);line-height:1.3;color:var(--text-muted);padding:5px 0 0}div[data-type=dictionary-view] .main .definition{padding:10px;border:1px solid var(--background-modifier-border);border-radius:5px;margin:10px 0 5px;background-color:var(--background-primary)}div[data-type=dictionary-view] .main .definition:last-child{border:1px solid var(--background-modifier-border)}div[data-type=dictionary-view] .main .synonyms{padding:10px 0 0}div[data-type=dictionary-view] .main .synonyms p{margin:0}div[data-type=dictionary-view] .main .definition>blockquote{margin:0}div[data-type=dictionary-view] .main .label{color:var(--text-normal);margin-bottom:2px;font-size:var(--font-adaptive-smaller);font-weight:500}div[data-type=dictionary-view] .main .mark{color:var(--text-normal);background-color:var(--text-selection);box-shadow:none}div[data-type=dictionary-view] .main>.opener{font-size:var(--font-adaptive-small);color:var(--text-normal);padding-left:5px}body .excalidraw,body .excalidraw.theme--dark{--color-primary-light:var(--text-selection);--color-primary:var(--interactive-accent);--color-primary-darker:var(--interactive-accent-hover);--color-primary-darkest:var(--interactive-accent-hover);--ui-font:var(--font-interface);--island-bg-color:var(--background-secondary);--icon-fill-color:var(--text-normal);--button-hover:var(--background-modifier-hover);--button-gray-1:var(--background-modifier-hover);--button-gray-2:var(--background-modifier-hover);--focus-highlight-color:var(--background-modifier-border-focus);--default-bg-color:var(--background-primary);--default-border-color:var(--background-modifier-border);--input-border-color:var(--background-modifier-border);--link-color:var(--text-accent);--overlay-bg-color:rgba(255, 255, 255, 0.88);--text-primary-color:var(--text-normal)}.git-view-body .opener{text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 5px 10px;margin-bottom:6px}.git-view-body .file-view .opener{text-transform:none;letter-spacing:normal;font-size:var(--font-adaptive-smallest);font-weight:400;padding:initial;margin-bottom:0}.git-view-body .file-view .opener .collapse-icon{display:flex!important;margin-left:-7px}.git-view-body{margin-top:6px}.git-view-body .file-view{margin-left:4px}.git-view-body .file-view main:hover{color:var(--text-normal)}.git-view-body .file-view .tools .type{display:none!important}.git-view-body .file-view .tools{opacity:0;transition:opacity .1s}.git-view-body .file-view main:hover>.tools{opacity:1}.git-view-body .staged{margin-bottom:12px}.git-view-body .opener.open{color:var(--text-normal)}div[data-type=git-view] .search-input-container{margin-left:0;width:100%}.git-view-body .opener .collapse-icon{display:none!important}.git-view-body main{background-color:var(--background-primary)!important;width:initial!important}.git-view-body .file-view>main:not(.topLevel){margin-left:7px}div[data-type=git-view] .commit-msg{min-height:2.5em!important;height:2.5em!important;padding:6.5px 8px!important}div[data-type=git-view] .search-input-clear-button{bottom:5.5px}.mod-macos.hider-frameless .workspace-ribbon{border:none}.hider-ribbon:not(.is-mobile) .workspace-ribbon-collapse-btn{display:none}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-right{pointer-events:none}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left{position:absolute;border-right:0px;margin:0;height:var(--header-height);overflow:visible;flex-basis:0;bottom:0;top:auto;display:flex!important;flex-direction:row;z-index:17;opacity:0;transition:opacity .25s ease-in-out;filter:drop-shadow(2px 10px 30px rgba(0,0,0,.2));gap:0}.hider-ribbon:not(.is-mobile) .side-dock-actions,.hider-ribbon:not(.is-mobile) .side-dock-settings{flex-direction:row;display:flex;border-top:var(--border-width) solid var(--background-modifier-border);background:var(--background-secondary);margin:0;position:relative;gap:var(--size-2-2)}.hider-ribbon:not(.is-mobile) .side-dock-actions{padding-left:8px}.hider-ribbon:not(.is-mobile) .side-dock-settings{border-right:var(--border-width) solid var(--background-modifier-border);border-top-right-radius:var(--radius-m);padding:0 var(--size-2-2)}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left .side-dock-ribbon-action{display:flex;margin:7px 0 8px}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left:hover{opacity:1;transition:opacity .25s ease-in-out}.hider-ribbon:not(.is-mobile) .workspace-ribbon.mod-left .workspace-ribbon-collapse-btn{opacity:0}.hider-ribbon:not(.is-mobile) .workspace-split.mod-left-split{margin:0}.hider-ribbon:not(.is-mobile) .workspace-leaf-content .item-list{padding-bottom:40px}.hider-ribbon .workspace-ribbon{padding:0}.popover.hover-editor{--folding-offset:10px}.theme-dark,.theme-light{--he-title-bar-inactive-bg:var(--background-secondary);--he-title-bar-inactive-pinned-bg:var(--background-secondary);--he-title-bar-active-pinned-bg:var(--background-secondary);--he-title-bar-active-bg:var(--background-secondary);--he-title-bar-inactive-fg:var(--text-muted);--he-title-bar-active-fg:var(--text-normal);--he-title-bar-font-size:14px}.theme-light{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.032),0px 5.9px 8.7px rgba(0, 0, 0, 0.052),0px 10.4px 18.1px rgba(0, 0, 0, 0.071),0px 20px 40px rgba(0, 0, 0, 0.11)}.theme-dark{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.081),0px 5.9px 8.7px rgba(0, 0, 0, 0.131),0px 10.4px 18.1px rgba(0, 0, 0, 0.18),0px 20px 40px rgba(0, 0, 0, 0.28)}.popover.hover-editor:not(.snap-to-viewport){--max-width:92%}.popover.hover-editor:not(.snap-to-viewport) .markdown-preview-view,.popover.hover-editor:not(.snap-to-viewport) .markdown-source-view .cm-content{font-size:90%}body .popover.hover-editor:not(.is-loaded){box-shadow:var(--popover-shadow)}body .popover.hover-editor:not(.is-loaded) .markdown-preview-view{padding:15px 0 0 0}body .popover.hover-editor:not(.is-loaded) .view-content{height:100%;background-color:var(--background-primary)}body .popover.hover-editor:not(.is-loaded) .view-actions{height:auto}body .popover.hover-editor:not(.is-loaded) .popover-content{border:1px solid var(--background-modifier-border-hover)}body .popover.hover-editor:not(.is-loaded) .popover-titlebar{padding:0 4px}body .popover.hover-editor:not(.is-loaded) .popover-titlebar .popover-title{padding-left:4px;letter-spacing:-.02em;font-weight:var(--title-weight)}body .popover.hover-editor:not(.is-loaded) .markdown-embed{height:auto;font-size:unset;line-height:unset}body .popover.hover-editor:not(.is-loaded) .markdown-embed .markdown-preview-view{padding:0}body .popover.hover-editor:not(.is-loaded).show-navbar .popover-titlebar{border-bottom:var(--border-width) solid var(--background-modifier-border)}body .popover.hover-editor:not(.is-loaded) .popover-action,body .popover.hover-editor:not(.is-loaded) .popover-header-icon{cursor:var(--cursor);margin:4px 0;padding:4px 3px;border-radius:var(--radius-m);color:var(--icon-color)}body .popover.hover-editor:not(.is-loaded) .popover-action.mod-pin-popover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.mod-pin-popover{padding:4px 2px}body .popover.hover-editor:not(.is-loaded) .popover-action svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon svg{opacity:var(--icon-muted)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover{background-color:var(--background-modifier-hover);color:var(--icon-color-hover)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover svg{opacity:1;transition:opacity .1s ease-in-out}body .popover.hover-editor:not(.is-loaded) .popover-action.is-active,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.is-active{color:var(--icon-color)}body.minimal-dark-black.theme-dark,body.minimal-dark-tonal.theme-dark,body.minimal-light-tonal.theme-light,body.minimal-light-white.theme-light,body.theme-dark{--kanban-border:0px}body:not(.is-mobile) .kanban-plugin__grow-wrap>textarea:focus{box-shadow:none}body:not(.minimal-icons-off) .kanban-plugin svg.cross{height:14px;width:14px}body .kanban-plugin__icon>svg,body .kanban-plugin__lane-settings-button svg{width:18px;height:18px}body .kanban-plugin{--kanban-border:var(--border-width);--interactive-accent:var(--text-selection);--interactive-accent-hover:var(--background-modifier-hover);--text-on-accent:var(--text-normal);background-color:var(--background-primary)}body .kanban-plugin__markdown-preview-view{font-family:var(--font-text)}body .kanban-plugin__board>div{margin:0 auto}body .kanban-plugin__checkbox-label{color:var(--text-muted)}body .kanban-plugin__item-markdown ul{margin:0}body .kanban-plugin__item-content-wrapper{box-shadow:none}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea{padding:0;border:0;border-radius:0}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__item-title p,body .kanban-plugin__markdown-preview-view{font-size:var(--font-ui-medium);line-height:1.3}body .kanban-plugin__item{background-color:var(--background-primary)}body .kanban-plugin__item-title-wrapper{align-items:center}body .kanban-plugin__lane-form-wrapper{border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane-header-wrapper{border-bottom:0}body .kanban-plugin__lane-header-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-input-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-title p{background:0 0;color:var(--text-normal);font-size:var(--font-ui-medium);font-weight:500}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea{padding:0;border-radius:0;height:auto}body .kanban-plugin__item-form .kanban-plugin__grow-wrap{background-color:var(--background-primary)}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea::placeholder{color:var(--text-faint)}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button,body .kanban-plugin__item button.kanban-plugin__item-edit-button,body .kanban-plugin__item-settings-actions>button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane-action-wrapper>button{background:0 0;transition:color .1s ease-in-out}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button:hover,body .kanban-plugin__item button.kanban-plugin__item-edit-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-edit-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{color:var(--text-normal);transition:color .1s ease-in-out;background:0 0}body .kanban-plugin__new-lane-button-wrapper{position:fixed;bottom:30px}body .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border:1px dashed var(--background-modifier-border);height:2em}body .kanban-plugin__item-postfix-button-wrapper{align-self:flex-start}body .kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-muted)}body .kanban-plugin button{box-shadow:none;cursor:var(--cursor);height:auto}body .kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,body .kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button{color:var(--text-muted);font-weight:400;background:0 0;height:32px}body .kanban-plugin__item-button-wrapper>button:hover{color:var(--text-normal);background:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button:focus{box-shadow:none}body .kanban-plugin__item-button-wrapper{padding:1px 6px 5px;border-top:none}body .kanban-plugin__lane-setting-wrapper>div:last-child{border:none;margin:0}body .kanban-plugin.something-is-dragging{cursor:grabbing;cursor:-webkit-grabbing}body .kanban-plugin__item.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15),0 0 0 2px var(--text-selection)}body .kanban-plugin__lane{background:0 0;padding:0;border:var(--border-width) solid transparent}body .kanban-plugin__lane.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15);border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane-items{border:var(--kanban-border) solid var(--background-modifier-border);border-bottom:none;padding:0 4px;border-top-left-radius:8px;border-top-right-radius:8px;margin:0;background-color:var(--background-secondary)}body .kanban-plugin__item-input-wrapper{border:0;padding-top:1px;flex-grow:1}body .kanban-plugin__item-button-wrapper,body .kanban-plugin__item-form{background-color:var(--background-secondary);border:var(--kanban-border) solid var(--background-modifier-border);border-top:none;border-bottom-left-radius:8px;border-bottom-right-radius:8px}body .kanban-plugin__item-form{padding:0 4px 5px}body .kanban-plugin__markdown-preview-view ol,body .kanban-plugin__markdown-preview-view ol.contains-task-list .contains-task-list,body .kanban-plugin__markdown-preview-view ul,body .kanban-plugin__markdown-preview-view ul.contains-task-list .contains-task-list{padding-inline-start:1.8em!important}@media (max-width:400pt){.kanban-plugin__board{flex-direction:column!important}.kanban-plugin__lane{width:100%!important;margin-bottom:1rem!important}}body .cm-heading-marker{cursor:var(--cursor);padding-left:10px}.theme-light{--leaflet-buttons:var(--bg1);--leaflet-borders:rgba(0,0,0,0.1)}.theme-dark{--leaflet-buttons:var(--bg2);--leaflet-borders:rgba(255,255,255,0.1)}.leaflet-top{transition:top .1s linear}.mod-macos.minimal-focus-mode .mod-root .map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3) .leaflet-top{top:calc(18px + var(--ewt-traffic-light-y));transition:top .1s linear}body .leaflet-container{background-color:var(--background-secondary);font-family:var(--font-interface)}.map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3){margin-top:-16px}.leaflet-control-attribution{display:none}.leaflet-popup-content{margin:10px}.block-language-leaflet{border-radius:var(--radius-m);overflow:hidden;border:var(--border-width) solid var(--background-modifier-border)}.map-wide .block-language-leaflet{border-radius:var(--radius-l)}.map-max .block-language-leaflet{border-radius:var(--radius-xl)}.workspace-leaf-content[data-type=obsidian-leaflet-map-view] .block-language-leaflet{border-radius:0;border:none}.map-100 .block-language-leaflet{border-radius:0;border-left:none;border-right:none}.block-language-leaflet .leaflet-control-expandable-list .input-container .input-item>input{appearance:none}body .block-language-leaflet .leaflet-bar.disabled>a{background-color:transparent;opacity:.3}body .leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}body .leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}body .leaflet-control-layers-toggle{border-radius:4px}body .block-language-leaflet .leaflet-control-expandable,body .block-language-leaflet .leaflet-control-has-actions .control-actions.expanded,body .block-language-leaflet .leaflet-distance-control,body .leaflet-bar,body .leaflet-bar a,body .leaflet-control-layers-expanded,body .leaflet-control-layers-toggle{background-color:var(--leaflet-buttons);color:var(--text-muted);border:none;user-select:none}body .leaflet-bar a.leaflet-disabled,body .leaflet-bar a.leaflet-disabled:hover{background-color:var(--leaflet-buttons);color:var(--text-faint);opacity:.6;cursor:not-allowed}body .leaflet-control a{cursor:var(--cursor);color:var(--text-normal)}body .leaflet-bar a:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);border:none}body .leaflet-touch .leaflet-control-layers{background-color:var(--leaflet-buttons)}body .leaflet-touch .leaflet-bar,body .leaflet-touch .leaflet-control-layers{border-radius:5px;box-shadow:2px 0 8px 0 rgba(0,0,0,.1);border:1px solid var(--ui1)}body .block-language-leaflet .leaflet-control-has-actions .control-actions{box-shadow:0;border:1px solid var(--ui1)}body .leaflet-control-expandable-list .leaflet-bar{box-shadow:none;border-radius:0}body .block-language-leaflet .leaflet-distance-control{padding:4px 10px;height:auto;cursor:var(--cursor)!important}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper>*{font-size:var(--font-adaptive-small);font-family:var(--font-interface)}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper{padding:4px 10px!important}.leaflet-marker-icon svg path{stroke:var(--background-primary);stroke-width:18px}.map-view-marker-name{font-weight:400}.workspace-leaf-content[data-type=map] .graph-controls{background-color:var(--background-primary)}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-split.mod-root .workspace-leaf-content[data-type=map] .view-header{position:fixed;background:0 0!important;width:100%;z-index:99}body:not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-header-title{display:none}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-actions{background:0 0}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-content{height:100%}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .leaflet-top.leaflet-right{top:var(--header-height)}.obsidian-metatable{--metatable-font-size:calc(var(--font-adaptive-normal) - 2px);--metatable-font-family:var(--font-interface);--metatable-background:transparent;--metatable-foreground:var(--text-faint);--metatable-key-background:transparent;--metatable-key-border-width:0;--metatable-key-border-color:transparent;--metatable-value-background:transparent;padding-bottom:.5rem}.obsidian-metatable::part(key),.obsidian-metatable::part(value){border-bottom:0 solid var(--background-modifier-border);padding:.1rem 0;text-overflow:ellipsis;overflow:hidden}.obsidian-metatable::part(key){font-weight:400;color:var(--tx3);font-size:calc(var(--font-adaptive-normal) - 2px)}.obsidian-metatable::part(value){font-size:calc(var(--font-adaptive-normal) - 2px);color:var(--tx1)}body .NLT__header-menu-header-container{font-size:85%}body .NLT__button{background:0 0;box-shadow:none;color:var(--text-muted)}body .NLT__button:active,body .NLT__button:focus,body .NLT__button:hover{background:0 0;color:var(--text-normal);box-shadow:none}.NLT__app .NLT__button{background:0 0;border:1px solid var(--background-modifier-border);box-shadow:0 .5px 1px 0 var(--btn-shadow-color);color:var(--text-muted);padding:2px 8px}.NLT__app .NLT__button:active,.NLT__app .NLT__button:focus,.NLT__app .NLT__button:hover{background:0 0;border-color:var(--background-modifier-border-hover);color:var(--text-normal);box-shadow:0 .5px 1px 0 var(--btn-shadow-color)}.NLT__td:nth-last-child(2),.NLT__th:nth-last-child(2){border-right:0}.NLT__app .NLT__td:last-child,.NLT__app .NLT__th:last-child{padding-right:0}.NLT__app .NLT__th{background-image:none!important}.NLT__app th.NLT__selectable:hover{background-color:transparent;cursor:var(--cursor)}.NLT__menu .NLT__menu-container{background-color:var(--background-secondary)}.NLT__menu .NLT__header-menu-item{font-size:var(--font-adaptive-small)}.NLT__menu .NLT__header-menu{padding:6px 4px}.NLT__menu .NLT__drag-menu{font-size:var(--font-adaptive-small);padding:6px 4px}.NLT__menu svg{color:var(--text-faint);margin-right:6px}.NLT__menu .NLT__selectable:hover,.NLT__menu .NLT__selected{background:0 0}.NLT__menu .NLT__selected>.NLT__selectable{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__selectable{cursor:var(--cursor)}.NLT__menu div.NLT__selectable{min-width:110px;border-radius:var(--radius-m);padding:3px 8px 3px 4px;margin:1px 2px 1px;cursor:var(--cursor);height:auto;line-height:20px}.NLT__menu div.NLT__selectable:hover{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__textarea{font-size:var(--table-text-size)}.NLT__tfoot tr:hover td{background-color:transparent}.modal .quickAddPrompt>h1,.modal .quickAddYesNoPrompt h1{margin-top:0;text-align:left!important;font-size:var(--h1);font-weight:600}.modal .quickAddYesNoPrompt p{text-align:left!important}.modal .quickAddYesNoPrompt button{font-size:var(--font-ui-small)}.modal .yesNoPromptButtonContainer{font-size:var(--font-ui-small);justify-content:flex-end}.quickAddModal .modal-content{padding:20px 2px 5px}div#quick-explorer{display:flex}div#quick-explorer span.explorable{align-items:center;color:var(--text-muted);display:flex;font-size:var(--font-adaptive-smaller);line-height:16px}div#quick-explorer span.explorable:last-of-type{font-size:var(--font-adaptive-smaller)}div#quick-explorer span.explorable.selected,div#quick-explorer span.explorable:hover{background-color:unset!important}div#quick-explorer span.explorable.selected .explorable-name,div#quick-explorer span.explorable:hover .explorable-name{color:var(--text-normal)}div#quick-explorer span.explorable.selected .explorable-separator,div#quick-explorer span.explorable:hover .explorable-separator{color:var(--text-normal)}div#quick-explorer .explorable-name{padding:0 4px;border-radius:4px}div#quick-explorer .explorable-separator::before{content:"\00a0›"!important;font-size:1.3em;font-weight:400;margin:0}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover{background-color:var(--background-modifier-hover);color:var(--text-normal)}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected .menu-item-icon,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover .menu-item-icon{color:var(--text-normal)}.workspace-leaf-content[data-type=recent-files] .view-content{padding-top:10px}.mod-root .workspace-leaf-content[data-type=reminder-list] main{max-width:var(--max-width);margin:0 auto;padding:0}.modal .reminder-actions .later-select{font-size:var(--font-settings-small);vertical-align:bottom;margin-left:3px}.modal .reminder-actions .icon{line-height:1}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main{margin:0 auto;padding:15px}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .group-name{font-weight:500;color:var(--text-muted);font-size:var(--font-adaptive-small);padding-bottom:.5em;border-bottom:1px solid var(--background-modifier-border)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-list-item{line-height:1.3;font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .no-reminders{color:var(--text-faint)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-time{font-family:var(--font-text);font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-file{color:var(--text-faint)}body .modal .dtchooser{background-color:transparent}body .modal .dtchooser .reminder-calendar .year-month{font-weight:400;font-size:var(--font-adaptive-normal);padding-bottom:10px}body .modal .dtchooser .reminder-calendar .year-month .month,body .modal .dtchooser .reminder-calendar .year-month .year{color:var(--text-normal)}body .modal .dtchooser .reminder-calendar .year-month .month-nav:first-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav:last-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav{-webkit-mask-size:20px 20px;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;color:var(--text-faint);cursor:var(--cursor);border-radius:var(--radius-m);padding:0;width:30px;display:inline-block}body .modal .dtchooser .reminder-calendar .year-month .month-nav:hover{color:var(--text-muted)}body .modal .dtchooser .reminder-calendar th{padding:.5em 0;font-size:var(--font-adaptive-smallest);font-weight:500;text-transform:uppercase;letter-spacing:.1em}body .modal .dtchooser .reminder-calendar .calendar-date{transition:background-color .1s ease-in;padding:.3em 0;border-radius:var(--radius-m)}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected,body .modal .dtchooser .reminder-calendar .calendar-date:hover{transition:background-color .1s ease-in;background-color:var(--background-modifier-hover)!important}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected{font-weight:var(--bold-weight);color:var(--text-accent)!important}body .markdown-preview-view th,body .markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,body .table-view-table>thead>tr>th{cursor:var(--cursor);background-image:none}.markdown-source-view.mod-cm6 th{background-repeat:no-repeat;background-position:right}.style-settings-container[data-level="2"]{background:var(--background-secondary);border:1px solid var(--ui1);border-radius:5px;padding:10px 20px;margin:2px 0 2px -20px}.workspace-leaf-content[data-type=style-settings] .view-content{padding:var(--size-4-4) 0 var(--size-4-4) var(--folding-offset)}.workspace-leaf-content[data-type=style-settings] .view-content>div{width:var(--line-width-adaptive);max-width:var(--max-width);margin:0 auto}.workspace-leaf-content[data-type=style-settings] .style-settings-heading[data-level="0"] .setting-item-name{padding-left:17px}.workspace-leaf-content[data-type=style-settings] .setting-item{max-width:100%;margin:0 auto}.workspace-leaf-content[data-type=style-settings] .setting-item-name{position:relative}.workspace-leaf-content[data-type=style-settings] .style-settings-collapse-indicator{position:absolute;left:0}.setting-item-heading.style-settings-heading,.style-settings-container .style-settings-heading{cursor:var(--cursor)}.modal.mod-settings .setting-item .pickr button.pcr-button{box-shadow:none;border-radius:40px;height:24px;width:24px}.setting-item .pickr .pcr-button:after,.setting-item .pickr .pcr-button:before{border-radius:40px;box-shadow:none;border:none}.setting-item.setting-item-heading.style-settings-heading.is-collapsed{border-bottom:1px solid var(--background-modifier-border)}.setting-item.setting-item-heading.style-settings-heading{border:0;padding:10px 0 5px;margin-bottom:0}.mod-root .workspace-leaf-content[data-type=style-settings] .style-settings-container .setting-item:not(.setting-item-heading){flex-direction:row;align-items:center;padding:.5em 0}.workspace-split:not(.mod-root) .workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-smaller)}.setting-item .style-settings-export,.setting-item .style-settings-import{text-decoration:none;font-size:var(--font-ui-small);font-weight:500;color:var(--text-muted);margin:0;padding:2px 8px;border-radius:5px;cursor:var(--cursor)}.style-settings-export:hover,.style-settings-import:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);cursor:var(--cursor)}.themed-color-wrapper>div+div{margin-top:0;margin-left:6px}.theme-light .themed-color-wrapper>.theme-light{background-color:transparent}.theme-light .themed-color-wrapper>.theme-dark{background-color:rgba(0,0,0,.8)}.theme-dark .themed-color-wrapper>.theme-dark{background-color:transparent}body .todoist-query-title{display:inline;font-size:var(--h4);font-variant:var(--h4-variant);letter-spacing:.02em;color:var(--h4-color);font-weight:var(--h4-weight);font-style:var(--h4-style)}body .is-live-preview .block-language-todoist{padding-left:0}ul.todoist-task-list>li.task-list-item .task-list-item-checkbox{margin:0}body .todoist-refresh-button{display:inline;float:right;background:0 0;padding:5px 6px 0;margin-right:0}body .is-live-preview .todoist-refresh-button{margin-right:30px}body .todoist-refresh-button:hover{box-shadow:none;background-color:var(--background-modifier-hover)}.todoist-refresh-button svg{width:15px;height:15px;opacity:var(--icon-muted)}ul.todoist-task-list{margin-left:-.25em}.is-live-preview ul.todoist-task-list{padding-left:0;margin-left:.5em;margin-block-start:0;margin-block-end:0}.contains-task-list.todoist-task-list .task-metadata{font-size:var(--font-adaptive-small);display:flex;color:var(--text-muted);justify-content:space-between;margin-left:.1em;margin-bottom:.25rem}.is-live-preview .contains-task-list.todoist-task-list .task-metadata{padding-left:calc(var(--checkbox-size) + .6em)}.todoist-task-list .task-date.task-overdue{color:var(--color-orange)}body .todoist-p1>input[type=checkbox]{border:1px solid var(--color-red)}body .todoist-p1>input[type=checkbox]:hover{opacity:.8}body .todoist-p2>input[type=checkbox]{border:1px solid var(--color-yellow)}body .todoist-p2>input[type=checkbox]:hover{opacity:.8}body .todoist-p3>input[type=checkbox]{border:1px solid var(--color-blue)}body .todoist-p3>input[type=checkbox]:hover{opacity:.8}body.theme-light{--color-axis-label:var(--tx1);--color-tick-label:var(--tx2);--color-dot-fill:var(--ax1);--color-line:var(--ui1)}.tracker-axis-label{font-family:var(--font-interface)}.tracker-axis{color:var(--ui2)}.tabs-manager .chat-view{--assistant-message-color:var(--background-primary);--padding-md:var(--size-4-2) var(--size-4-3);--padding-lg:var(--size-4-3) var(--size-4-3);--chat-box-color:var(--background-primary)}.tabs-manager .chat-view .ow-dialogue-timeline{padding:var(--size-4-4) var(--size-4-3) var(--size-4-8)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble .ow-content-wrapper{box-shadow:none;border-color:var(--background-modifier-border);border-radius:var(--radius-m)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble.ow-user-bubble .ow-content-wrapper{border-width:0;background-color:var(--interactive-accent)}.tabs-manager .chat-view .input-area .input-form .chat-box{border-radius:0;box-shadow:none;grid-row:1;grid-column:1/3;height:100px;border:none;padding:var(--size-4-3) var(--size-4-4) var(--size-4-2)}.tabs-manager .chat-view .input-area .input-form .chat-box:hover{height:100px}.tabs-manager .chat-view .input-area{padding:0;gap:0}.tabs-manager .chat-view .header{border-bottom:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-form{border-top:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-area .input-form .chat-box .info-bar span{color:var(--text-faint)}.tabs-manager .chat-view .input-area .input-form .btn-new-chat{display:none}.theme-dark.minimal-atom-dark{--color-red-rgb:225,109,118;--color-orange-rgb:209,154,102;--color-yellow-rgb:206,193,103;--color-green-rgb:152,195,121;--color-cyan-rgb:88,182,194;--color-blue-rgb:98,175,239;--color-purple-rgb:198,120,222;--color-pink-rgb:225,109,118;--color-red:#e16d76;--color-orange:#d19a66;--color-yellow:#cec167;--color-green:#98c379;--color-cyan:#58b6c2;--color-blue:#62afef;--color-purple:#c678de;--color-pink:#e16d76}.theme-light.minimal-atom-light{--color-red-rgb:228,87,73;--color-orange-rgb:183,107,2;--color-yellow-rgb:193,131,2;--color-green-rgb:80,161,80;--color-cyan-rgb:13,151,179;--color-blue-rgb:98,175,239;--color-purple-rgb:166,38,164;--color-pink-rgb:228,87,73;--color-red:#e45749;--color-orange:#b76b02;--color-yellow:#c18302;--color-green:#50a150;--color-cyan:#0d97b3;--color-blue:#62afef;--color-purple:#a626a4;--color-pink:#e45749}.theme-light.minimal-atom-light{--base-h:106;--base-s:0%;--base-l:98%;--accent-h:231;--accent-s:76%;--accent-l:62%;--bg1:#fafafa;--bg2:#eaeaeb;--bg3:rgba(0,0,0,.1);--ui1:#dbdbdc;--ui2:#d8d8d9;--tx1:#232324;--tx2:#8e8e90;--tx3:#a0a1a8;--hl1:rgba(180,180,183,0.3);--hl2:rgba(209,154,102,0.35)}.theme-light.minimal-atom-light.minimal-light-white{--bg3:#eaeaeb}.theme-dark.minimal-atom-dark,.theme-light.minimal-atom-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-atom-light.minimal-light-contrast .titlebar,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-atom-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:12%;--base-l:18%;--accent-h:220;--accent-s:86%;--accent-l:65%;--bg1:#282c34;--bg2:#21252c;--bg3:#3a3f4b;--divider-color:#181a1f;--tab-outline-color:#181a1f;--tx1:#d8dae1;--tx2:#898f9d;--tx3:#5d6370;--hl1:rgba(114,123,141,0.3);--hl2:rgba(209,154,102,0.3);--sp1:#fff}.theme-dark.minimal-atom-dark.minimal-dark-black{--base-d:5%;--bg3:#282c34;--divider-color:#282c34;--tab-outline-color:#282c34}.theme-light.minimal-ayu-light{--color-red-rgb:230,80,80;--color-orange-rgb:250,141,62;--color-yellow-rgb:242,174,73;--color-green-rgb:108,191,67;--color-cyan-rgb:76,191,153;--color-blue-rgb:57,158,230;--color-purple-rgb:163,122,204;--color-pink-rgb:255,115,131;--color-red:#e65050;--color-orange:#fa8d3e;--color-yellow:#f2ae49;--color-green:#6CBF43;--color-cyan:#4cbf99;--color-blue:#399ee6;--color-purple:#a37acc;--color-pink:#ff7383}.theme-dark.minimal-ayu-dark{--color-red-rgb:255,102,102;--color-orange-rgb:250,173,102;--color-yellow-rgb:255,209,55;--color-green-rgb:135,217,108;--color-cyan-rgb:149,230,203;--color-blue-rgb:115,208,255;--color-purple-rgb:223,191,255;--color-pink-rgb:242,121,131;--color-red:#ff6666;--color-orange:#ffad66;--color-yellow:#ffd137;--color-green:#87D96C;--color-cyan:#95e6cb;--color-blue:#73d0ff;--color-purple:#dfbfff;--color-pink:#f27983}.theme-light.minimal-ayu-light{--base-h:210;--base-s:17%;--base-l:98%;--accent-h:36;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f8f9fa;--bg3:rgba(209,218,224,0.5);--ui1:#E6EAED;--tx1:#5C6165;--tx2:#8A9199;--tx3:#AAAEB0;--hl1:rgba(3,91,214,0.15)}.theme-dark.minimal-ayu-dark,.theme-light.minimal-ayu-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-ayu-light.minimal-light-contrast .titlebar,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-ayu-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:222;--base-s:22%;--base-l:15%;--accent-h:35;--accent-s:100%;--accent-l:60%;--bg1:#232937;--bg2:#1E2431;--bg3:rgba(51,61,80,0.5);--ui1:#333C4A;--ui2:#333C4A;--ui3:#333C4A;--tx1:#cccac2;--tx2:#707A8C;--tx3:#495063;--hl1:rgba(64,159,255,0.25)}.theme-dark.minimal-ayu-dark.minimal-dark-black{--accent-h:40;--accent-s:75%;--accent-l:61%;--bg3:#0E1017;--tx1:#BFBDB6;--divider-color:#11151C;--tab-outline-color:#11151C}.theme-light.minimal-catppuccin-light{--color-red-rgb:230,69,83;--color-orange-rgb:254,100,12;--color-yellow-rgb:223,142,29;--color-green-rgb:64,160,43;--color-cyan-rgb:23,146,154;--color-blue-rgb:33,102,246;--color-purple-rgb:137,56,239;--color-pink-rgb:234,119,203;--color-red:#E64553;--color-orange:#FE640C;--color-yellow:#DF8E1D;--color-green:#40A02B;--color-cyan:#17929A;--color-blue:#2166F6;--color-purple:#8938EF;--color-pink:#EA77CB}.theme-dark.minimal-catppuccin-dark{--color-red-rgb:235,153,156;--color-orange-rgb:239,160,118;--color-yellow-rgb:229,200,144;--color-green-rgb:166,209,138;--color-cyan-rgb:129,200,190;--color-blue-rgb:140,170,238;--color-purple-rgb:202,158,230;--color-pink-rgb:244,185,229;--color-red:#EB999C;--color-orange:#EFA076;--color-yellow:#E5C890;--color-green:#A6D18A;--color-cyan:#81C8BE;--color-blue:#8CAAEE;--color-purple:#CA9EE6;--color-pink:#F4B9E5}.theme-light.minimal-catppuccin-light{--base-h:228;--base-s:20%;--base-l:95%;--accent-h:11;--accent-s:59%;--accent-l:67%;--bg1:#F0F1F5;--bg2:#DCE0E8;--bg3:hsla(228,11%,65%,.25);--ui1:#CCD0DA;--ui2:#BCC0CC;--ui3:#ACB0BE;--tx1:#4D4F69;--tx2:#5D5F77;--tx3:#8D8FA2;--hl1:rgba(172,176,190,.3);--hl2:rgba(223,142,29,.3)}.theme-light.minimal-catppuccin-light.minimal-light-tonal{--bg2:#DCE0E8}.theme-light.minimal-catppuccin-light.minimal-light-white{--bg3:#F0F1F5;--ui1:#DCE0E8}.theme-dark.minimal-catppuccin-dark,.theme-light.minimal-catppuccin-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-catppuccin-light.minimal-light-contrast .titlebar,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-catppuccin-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:229;--base-s:19%;--base-l:23%;--accent-h:10;--accent-s:57%;--accent-l:88%;--bg1:#303446;--bg2:#242634;--bg3:hsla(229,13%,52%,0.25);--ui1:#41455A;--ui2:#51576D;--ui3:#626880;--tx1:#C6D0F5;--tx2:#A6ADCE;--tx3:#848BA7;--sp1:#242634;--hl1:rgba(98,104,128,.5);--hl2:rgba(223,142,29,.4)}.theme-dark.minimal-catppuccin-dark.minimal-dark-black{--ui1:#303446;--hl2:rgba(223,142,29,.5)}.theme-dark.minimal-dracula-dark{--color-red-rgb:255,85,85;--color-orange-rgb:255,184,108;--color-yellow-rgb:241,250,140;--color-green-rgb:80,250,123;--color-cyan-rgb:139,233,253;--color-blue-rgb:98,114,164;--color-purple-rgb:189,147,249;--color-pink-rgb:255,121,198;--color-red:#ff5555;--color-orange:#ffb86c;--color-yellow:#f1fa8c;--color-green:#50fa7b;--color-cyan:#8be9fd;--color-blue:#6272a4;--color-purple:#bd93f9;--color-pink:#ff79c6}.theme-dark.minimal-dracula-dark,.theme-light.minimal-dracula-light.minimal-light-contrast .titlebar,.theme-light.minimal-dracula-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-dracula-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:232;--base-s:16%;--base-l:19%;--accent-h:265;--accent-s:89%;--accent-l:78%;--bg1:#282a37;--bg2:#21222c;--ui2:#44475a;--ui3:#6272a4;--tx1:#f8f8f2;--tx2:#949FBE;--tx3:#6272a4;--hl1:rgba(134, 140, 170, 0.3);--hl2:rgba(189, 147, 249, 0.35)}.theme-dark.minimal-dracula-dark.minimal-dark-black{--ui1:#282a36}.theme-light.minimal-everforest-light{--color-red-rgb:248,85,82;--color-orange-rgb:245,125,38;--color-yellow-rgb:223,160,0;--color-green-rgb:141,161,1;--color-cyan-rgb:53,167,124;--color-blue-rgb:56,148,196;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#f85552;--color-orange:#f57d26;--color-yellow:#dfa000;--color-green:#8da101;--color-cyan:#35a77c;--color-blue:#3795C5;--color-purple:#df69ba;--color-pink:#df69ba}.theme-dark.minimal-everforest-dark{--color-red-rgb:230,126,128;--color-orange-rgb:230,152,117;--color-yellow-rgb:219,188,127;--color-green-rgb:167,192,128;--color-cyan-rgb:131,192,146;--color-blue-rgb:127,187,179;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#e67e80;--color-orange:#e69875;--color-yellow:#dbbc7f;--color-green:#a7c080;--color-cyan:#83c092;--color-blue:#7fbbb3;--color-purple:#d699b6;--color-pink:#d699b6}.theme-light.minimal-everforest-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:83;--accent-s:36%;--accent-l:53%;--bg1:#fdf6e3;--bg2:#efebd4;--bg3:rgba(226,222,198,.5);--ui1:#e0dcc7;--ui2:#bec5b2;--ui3:#bec5b2;--tx1:#5C6A72;--tx2:#829181;--tx3:#a6b0a0;--hl1:rgba(198,214,152,.4);--hl2:rgba(222,179,51,.3)}.theme-light.minimal-everforest-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-light.minimal-everforest-light.minimal-light-white{--bg3:#f3efda;--ui1:#edead5}.theme-dark.minimal-everforest-dark,.theme-light.minimal-everforest-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-everforest-light.minimal-light-contrast .titlebar,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-everforest-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:15%;--base-l:23%;--accent-h:81;--accent-s:34%;--accent-l:63%;--bg1:#2d353b;--bg2:#232a2e;--bg3:rgba(71,82,88,0.5);--ui1:#475258;--ui2:#4f585e;--ui3:#525c62;--tx1:#d3c6aa;--tx2:#9da9a0;--tx3:#7a8478;--hl1:rgba(134,70,93,.5);--hl2:rgba(147,185,96,.3)}.theme-dark.minimal-everforest-dark.minimal-dark-black{--hl1:rgba(134,70,93,.4);--ui1:#2b3339}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light{--color-red-rgb:204,36,29;--color-orange-rgb:214,93,14;--color-yellow-rgb:215,153,33;--color-green-rgb:152,151,26;--color-cyan-rgb:104,157,106;--color-blue-rgb:69,133,136;--color-purple-rgb:177,98,134;--color-pink-rgb:177,98,134;--color-red:#cc241d;--color-orange:#d65d0e;--color-yellow:#d79921;--color-green:#98971a;--color-cyan:#689d6a;--color-blue:#458588;--color-purple:#b16286;--color-pink:#b16286}.theme-light.minimal-gruvbox-light{--base-h:49;--base-s:92%;--base-l:89%;--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#fcf2c7;--bg2:#f2e6bd;--bg3:#ebd9b3;--ui1:#ebdbb2;--ui2:#d5c4a1;--ui3:#bdae93;--tx1:#282828;--tx2:#7c7065;--tx3:#a89a85;--hl1:rgba(192,165,125,.3);--hl2:rgba(215,153,33,.4)}.theme-light.minimal-gruvbox-light.minimal-light-tonal{--bg2:#fcf2c7}.theme-light.minimal-gruvbox-light.minimal-light-white{--bg3:#faf5d7;--ui1:#f2e6bd}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-gruvbox-light.minimal-light-contrast .titlebar,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-gruvbox-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#282828;--bg2:#1e2021;--bg3:#3d3836;--bg3:rgba(62,57,55,0.5);--ui1:#3c3836;--ui2:#504945;--ui3:#665c54;--tx1:#fbf1c7;--tx2:#bdae93;--tx3:#7c6f64;--hl1:rgba(173,149,139,0.3);--hl2:rgba(215,153,33,.4)}.theme-dark.minimal-gruvbox-dark.minimal-dark-black{--hl1:rgba(173,149,139,0.4);--ui1:#282828}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light{--color-red-rgb:255,59,49;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,204,0;--color-green-rgb:42,205,65;--color-cyan-rgb:2,199,190;--color-blue-rgb:2,122,255;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#ff3b31;--color-orange:#ff9502;--color-yellow:#ffcc00;--color-green:#2acd41;--color-cyan:#02c7be;--color-blue:#027aff;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-macos-light{--base-h:106;--base-s:0%;--base-l:94%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f0f0f0;--bg3:rgba(0,0,0,.1);--ui1:#e7e7e7;--tx1:#454545;--tx2:#808080;--tx3:#b0b0b0;--hl1:#b3d7ff}.theme-light.minimal-macos-light.minimal-light-tonal{--bg1:#f0f0f0;--bg2:#f0f0f0}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-macos-light.minimal-light-contrast .titlebar,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-macos-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:106;--base-s:0%;--base-l:12%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#1e1e1e;--bg2:#282828;--bg3:rgba(255,255,255,0.11);--divider-color:#000;--tab-outline-color:#000;--ui1:#373737;--ui2:#515151;--ui3:#595959;--tx1:#dcdcdc;--tx2:#8c8c8c;--tx3:#686868;--hl1:rgba(98,169,252,0.5);--sp1:#fff}.theme-dark.minimal-macos-dark.minimal-dark-black{--divider-color:#1e1e1e;--tab-outline-color:#1e1e1e}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light{--color-red-rgb:191,97,106;--color-orange-rgb:208,138,112;--color-yellow-rgb:235,203,139;--color-green-rgb:163,190,140;--color-cyan-rgb:136,192,208;--color-blue-rgb:129,161,193;--color-purple-rgb:180,142,173;--color-pink-rgb:180,142,173;--color-red:#BF616A;--color-orange:#D08770;--color-yellow:#EBCB8B;--color-green:#A3BE8C;--color-cyan:#88C0D0;--color-blue:#81A1C1;--color-purple:#B48EAD;--color-pink:#B48EAD}.theme-light.minimal-nord-light{--base-h:221;--base-s:27%;--base-l:94%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#fff;--bg2:#eceff4;--bg3:rgba(157,174,206,0.25);--ui1:#d8dee9;--ui2:#BBCADC;--ui3:#81a1c1;--tx1:#2e3440;--tx2:#7D8697;--tx3:#ADB1B8;--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-nord-light.minimal-light-contrast .titlebar,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-nord-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:16%;--base-l:22%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#2e3440;--bg2:#3b4252;--bg3:rgba(135,152,190,0.15);--ui1:#434c5e;--ui2:#58647b;--ui3:#58647b;--tx1:#d8dee9;--tx2:#9eafcc;--tx3:#4c566a;--hl1:rgba(129,142,180,0.3);--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark.minimal-dark-black{--ui1:#2e3440}.theme-light.minimal-notion-light{--base-h:39;--base-s:18%;--base-d:96%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg2:#f7f6f4;--bg3:#e8e7e4;--ui1:#ededec;--ui2:#dbdbda;--ui3:#aaa9a5;--tx1:#37352f;--tx2:#72706c;--tx3:#aaa9a5;--hl1:rgba(131,201,229,0.3);--link-weight:500}.theme-dark.minimal-notion-dark,.theme-light.minimal-notion-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-notion-light.minimal-light-contrast .titlebar,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-notion-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:8%;--base-d:20%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg1:#2f3437;--bg2:#373c3f;--bg3:#4b5053;--ui1:#3e4245;--ui2:#585d5f;--ui3:#585d5f;--tx1:#ebebeb;--tx2:#909295;--tx3:#585d5f;--hl1:rgba(57,134,164,0.3);--link-weight:500}.theme-dark.minimal-notion-dark.minimal-dark-black{--base-d:5%;--bg3:#232729;--ui1:#2f3437}.theme-light.minimal-rose-pine-light{--color-red-rgb:180,99,122;--color-orange-rgb:215,130,125;--color-yellow-rgb:234,157,53;--color-green-rgb:40,105,131;--color-cyan-rgb:87,147,159;--color-blue-rgb:87,147,159;--color-purple-rgb:144,122,169;--color-pink-rgb:144,122,169;--color-red:#b4637a;--color-orange:#d7827e;--color-yellow:#ea9d34;--color-green:#286983;--color-cyan:#56949f;--color-blue:#56949f;--color-purple:#907aa9;--color-pink:#907aa9}.theme-dark.minimal-rose-pine-dark{--color-red-rgb:234,111,146;--color-orange-rgb:233,155,151;--color-yellow-rgb:246,193,119;--color-green-rgb:47,116,143;--color-cyan-rgb:157,207,215;--color-blue-rgb:157,207,215;--color-purple-rgb:196,167,231;--color-pink-rgb:196,167,231;--color-red:#eb6f92;--color-orange:#ea9a97;--color-yellow:#f6c177;--color-green:#31748f;--color-cyan:#9ccfd8;--color-blue:#9ccfd8;--color-purple:#c4a7e7;--color-pink:#c4a7e7}.theme-light.minimal-rose-pine-light{--base-h:32;--base-s:57%;--base-l:95%;--accent-h:3;--accent-s:53%;--accent-l:67%;--bg1:#fffaf3;--bg2:#faf4ed;--bg3:rgba(233,223,218,0.5);--ui1:#EAE3E1;--ui2:#dfdad9;--ui3:#cecacd;--tx1:#575279;--tx2:#797593;--tx3:#9893a5;--hl1:#EAE3E1}.theme-dark.minimal-rose-pine-dark,.theme-light.minimal-rose-pine-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-rose-pine-light.minimal-light-contrast .titlebar,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-rose-pine-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:247;--base-s:23%;--base-l:15%;--accent-h:2;--accent-s:55%;--accent-l:83%;--bg1:#1f1d2e;--bg2:#191724;--bg3:rgba(68,66,86,0.5);--ui1:#312F41;--ui2:#403d52;--ui3:#524f67;--tx1:#e0def4;--tx2:#908caa;--tx3:#6e6a86;--hl1:#403d52}.theme-dark.minimal-rose-pine-dark.minimal-dark-black{--ui1:#21202e}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light{--color-red-rgb:220,50,47;--color-orange-rgb:203,77,22;--color-yellow-rgb:181,137,0;--color-green-rgb:133,153,0;--color-cyan-rgb:42,161,152;--color-blue-rgb:38,139,210;--color-purple-rgb:108,113,196;--color-pink-rgb:211,54,130;--color-red:#dc322f;--color-orange:#cb4b16;--color-yellow:#b58900;--color-green:#859900;--color-cyan:#2aa198;--color-blue:#268bd2;--color-purple:#6c71c4;--color-pink:#d33682}.theme-light.minimal-solarized-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:205;--accent-s:70%;--accent-l:48%;--bg1:#fdf6e3;--bg2:#eee8d5;--bg3:rgba(0,0,0,0.062);--ui1:#e9e1c8;--ui2:#d0cab8;--ui3:#d0cab8;--tx1:#073642;--tx2:#586e75;--tx3:#ABB2AC;--tx4:#586e75;--hl1:rgba(202,197,182,0.3);--hl2:rgba(203,75,22,0.3)}.theme-light.minimal-solarized-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-solarized-light.minimal-light-contrast .titlebar,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-solarized-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:205;--accent-s:70%;--accent-l:48%;--base-h:193;--base-s:98%;--base-l:11%;--bg1:#002b36;--bg2:#073642;--bg3:rgba(255,255,255,0.062);--ui1:#19414B;--ui2:#274850;--ui3:#31535B;--tx1:#93a1a1;--tx2:#657b83;--tx3:#31535B;--tx4:#657b83;--hl1:rgba(15,81,98,0.3);--hl2:rgba(203, 75, 22, 0.35)}.theme-dark.minimal-solarized-dark.minimal-dark-black{--hl1:rgba(15,81,98,0.55);--ui1:#002b36}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light{--color-red-rgb:255,48,108;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,213,0;--color-green-rgb:75,191,94;--color-cyan-rgb:73,174,164;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#FF306C;--color-orange:#ff9502;--color-yellow:#FFD500;--color-green:#4BBF5E;--color-cyan:#49AEA4;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-things-light{--color-blue-rgb:27,97,194;--color-blue:#1b61c2}.theme-dark.minimal-things-dark{--color-blue-rgb:77,149,247;--color-blue:#4d95f7}.theme-light.minimal-things-light{--accent-h:215;--accent-s:76%;--accent-l:43%;--bg1:white;--bg2:#f5f6f8;--bg3:rgba(162,177,187,0.25);--ui1:#eef0f4;--ui2:#D8DADD;--ui3:#c1c3c6;--tx1:#26272b;--tx2:#7D7F84;--tx3:#a9abb0;--hl1:#cae2ff}.theme-light.minimal-things-light.minimal-light-tonal{--ui1:#e6e8ec}.theme-light.minimal-things-light.minimal-light-white{--bg3:#f5f6f8}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-things-light.minimal-light-contrast .titlebar,.theme-light.minimal-things-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-things-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-things-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:218;--base-s:9%;--base-l:15%;--accent-h:215;--accent-s:91%;--accent-l:64%;--bg1:#24262a;--bg2:#202225;--bg3:#3d3f41;--divider-color:#17191c;--tab-outline-color:#17191c;--ui1:#3A3B3F;--ui2:#45464a;--ui3:#6c6e70;--tx1:#fbfbfb;--tx2:#CBCCCD;--tx3:#6c6e70;--hl1:rgba(40,119,236,0.35);--sp1:#fff}.theme-dark.minimal-things-dark.minimal-dark-black{--base-d:5%;--bg3:#24262a;--divider-color:#24262a;--tab-outline-color:#24262a} /* Plugin compatibility */ /* @plugins @@ -543,6 +543,12 @@ settings: description: Transclusions appear seamlessly in the flow of text. Can be enabled per file using the embed-strict helper class type: class-toggle default: false + - + id: embed-hide-title + title: Hide embed titles + description: Hide title of the transcluded file + type: class-toggle + default: false - id: embed-underline title: Underline embedded text @@ -1293,6 +1299,47 @@ settings: max: 3.5 step: 0.1 format: em + - + id: pdf + title: PDFs + type: heading + level: 2 + collapsed: true + - + id: pdf-page-style + title: PDF page style + description: Borders and shadows around pages + type: class-select + allowEmpty: false + default: pdf-seamless-on + options: + - + label: Seamless + value: pdf-seamless-on + - + label: Shadows + value: pdf-shadows-on + - + id: pdf-invert-dark + title: Invert PDFs in dark mode + description: Best for working with black text on white pages + type: class-toggle + default: true + - + id: pdf-blend-light + title: Blend PDFs in light mode + description: Allow PDFs to blend into the color scheme background color + type: class-toggle + default: true + - + id: pdf-dark-opacity + title: PDF opacity in dark mode + description: Fade PDF pages in dark mode + type: variable-number-slider + default: 1 + min: 0.25 + max: 1 + step: 0.05 - id: sidebars title: Sidebars